Warum sind relativ einfachere Geräte wie Mikrocontroller so viel langsamer als CPUs?

25

Bei der gleichen Anzahl von Pipelinestufen und dem gleichen Herstellungsknoten (z. B. 65 nm) und der gleichen Spannung sollten einfache Geräte schneller laufen als kompliziertere. Auch das Zusammenführen mehrerer Pipeline-Stufen zu einer sollte nicht um einen Faktor langsamer sein als die Anzahl der Stufen.

Nehmen Sie jetzt eine fünf Jahre alte CPU, die 14 Pipeline-Stufen mit 2,8 GHz ausführt. Angenommen, man führt die Stufen zusammen. das würde sich auf unter 200 MHz verlangsamen. Erhöhen Sie nun die Spannung und verringern Sie die Anzahl der Bits pro Wort. das würde die Dinge tatsächlich beschleunigen.

Aus diesem Grund verstehe ich nicht, warum viele derzeit hergestellte Mikrocontroller wie AVL mit einer unglaublichen Geschwindigkeit (wie 20 MHz bei 5 V) laufen, obwohl weitaus kompliziertere CPUs, die vor Jahren hergestellt wurden, in der Lage waren, 150-mal schneller oder 10-mal schneller zu laufen Wenn Sie alle Pipeline-Stufen zu einer Phase zusammenfassen, beträgt die Spannung 1,2 V. Nach den gröbsten Back-of-the-Envelope-Berechnungen sollten Mikrocontroller - selbst wenn sie mit veralteter Borderline-Technologie hergestellt werden - bei einem Viertel der Spannung, mit der sie versorgt werden, mindestens 10-mal schneller laufen.

Daher die Frage: Was sind die Gründe für langsame Mikrocontroller-Taktraten?

Michael
quelle
8
Ein guter Teil der Mikrocontroller wird mit veralteter Technologie hergestellt, weil die Fabrik bezahlt wird.
Matt Young
18
Leistung. Berücksichtigen Sie den Stromverbrauch beider CPUs, und sie erreichen nahezu die gleiche Leistung / Watt, oder das Mikro gewinnt.
Brian Drummond
34
Die Idee, dass einfacher == schneller ist, ist einfach falsch. Ein Großteil der Komplexität einer modernen CIS-CPU steckt in Funktionen, die sie beschleunigen, wie z. B. Caches auf mehreren Ebenen, Pipelines und Verzweigungsvorhersage
PlasmaHH
1
Diese alte CPU läuft seit Monaten / Jahren nicht mehr mit einer kleinen Batterie. gebrauchte Spitzentechnologie für seinen Tag. Ich musste nicht bei jedem Befehl auf einen langsamen / billigen Blitz warten. Es ist selten notwendig, dass eine mcu schnell läuft. Sie kann aus Gründen der Entwickler einen neuen Verilog erstellen und auf einer beliebigen Gießerei implementieren. Ich mag das Fahrrad gegen Formel-1-Auto am besten kommentieren, ich denke, das bringt es auf den Punkt.
old_timer
14
20 MHz ist überhaupt nicht langsam. Wir sind nur verwöhnt von GHz-Geschwindigkeiten für PCs, bei denen die meisten Ressourcen für das Rendern ausgefallener Grafiken verwendet werden. Sie können mit einem Kilohertz-Prozessor zum Mond fliegen ...
vsz

Antworten:

66

Es gibt andere Faktoren, die zur Geschwindigkeit beitragen.

  • Speicher: Die tatsächliche Leistung wird häufig durch die Speicherlatenz begrenzt. Intel-CPUs haben große Caches, um dies auszugleichen. Mikrocontroller normalerweise nicht. Flash-Speicher ist viel langsamer als DRAM.

  • Stromverbrauch: Dies ist in eingebetteten Anwendungen häufig eine große Sache. Tatsächlich verbrauchten 200-MHz-Intel-CPUs mehr als 10 Watt (oft viel mehr) und benötigten einen großen Kühlkörper und einen Lüfter. Das kostet Platz und Geld, und es zählt nicht einmal die externe Logik und Erinnerung, die damit einhergingen. Ein 20-MHz-AVR benötigt ungefähr 0,2 Watt, was alles beinhaltet, was Sie benötigen. Dies hängt auch mit dem Prozess zusammen - schnellere Transistoren neigen dazu, leckender zu werden.

  • Betriebsbedingungen: Wie Dmitry in den Kommentaren ausführt, können viele Mikrocontroller über einen weiten Spannungs- und Temperaturbereich betrieben werden. Das oben erwähnte ATMega funktioniert bei -40 ° C bis 85 ° C und kann bei -65 ° C bis 150 ° C gelagert werden. (Andere MCUs arbeiten bis zu 125 ° C oder sogar bis zu 155 ° C.) Die VCC-Spannung kann zwischen 2,7 V und 5,5 V liegen (5 V +/- 10% für Spitzenleistung). Dieses Core i7- Datenblatt ist schwer zu lesen, da es die zulässige VCC während der Herstellung verringert, aber die Spannungs- und Temperaturtoleranzen sind sicherlich enger - ~ 3% Spannungstoleranz und maximale Sperrschichttemperatur von 105 ° C. (Minimum 5C, aber wenn Sie> 100 Ampere ziehen, sind Mindesttemperaturen kein wirkliches Problem.)

  • Gate Count: Einfacher geht es nicht immer. Wäre dies der Fall, würde Intel keine CPU-Architekten benötigen! Es geht nicht nur um Pipelining. Sie benötigen auch Dinge wie eine Hochleistungs-FPU. Das erhöht den Preis. Aus diesem Grund haben viele Low-End-MCUs CPUs, die nur Ganzzahlen enthalten.

  • Chipflächenbudget: Mikrocontroller müssen viele Funktionen in einen Chip integrieren, der häufig den gesamten für die Anwendung verwendeten Speicher umfasst. (SRAM und zuverlässiger NOR-Flash sind ziemlich groß.) PC-CPUs kommunizieren mit chipexternem Speicher und Peripheriegeräten.

  • Prozess: Diese 5-V-AVRs werden nach einem alten kostengünstigen Verfahren hergestellt. Denken Sie daran, sie wurden von Grund auf so konzipiert, dass sie billig sind. Intel verkauft Konsumgüter zu hohen Margen mit der besten Technologie, die man für Geld kaufen kann. Intel verkauft auch reines CMOS. MCU-Prozesse müssen On-Chip-Flash-Speicher erzeugen, was schwieriger ist.

Viele der oben genannten Faktoren hängen zusammen.

Sie können heute 200-MHz-Mikrocontroller kaufen ( hier ein Beispiel ). Natürlich kosten sie zehnmal so viel wie diese 20-MHz-ATMegas ...

Die kurze Version ist, dass Geschwindigkeit komplizierter als Einfachheit ist und billige Produkte auf Billigkeit und nicht auf Geschwindigkeit optimiert sind.

Adam Haun
quelle
11
Vergessen Sie nicht die Robustheit: Eine typische CPU fällt aus, wenn sich die Versorgungsspannung um mehr als 5% ändert, während ein ATMega mit 4 MHz von 1,8 bis 5,5 V betrieben wird.
Dmitry Grigoryev
1
@DmitryGrigoryev Guter Punkt! Ich habe meine Antwort aktualisiert.
Adam Haun
25

Ein wichtiger technischer Grund für die langsamen Geschwindigkeiten ist, dass billige / kleine MCUs nur On-Chip-Flash-Speicher für die Programmspeicherung verwenden (dh sie werden nicht aus dem RAM ausgeführt).

Kleine MCUs zwischenspeichern im Allgemeinen keinen Programmspeicher. Sie müssen daher immer einen Befehl aus dem Flash lesen, bevor sie ihn ausführen, und zwar in jedem Zyklus. Dies bietet deterministische Leistung und # Zyklen / Betrieb, ist nur billiger / einfacher und vermeidet PC-ähnliche Probleme, bei denen Code und Daten gemischt werden, wodurch neue Bedrohungen durch Pufferüberläufe usw. entstehen.

Die Latenz beim Lesen aus dem Flash - Speicher (in der Größenordnung von 50-100 ns) ist viel langsamer als beim Lesen aus dem SRAM oder DRAM (in der Größenordnung von 10 ns oder weniger), und diese Latenz muss in jedem Zyklus auftreten, wodurch die Taktgeschwindigkeit des Flash - Speichers begrenzt wird Teil.

compumike
quelle
4
Auch die Leistung (und damit die Wärme) nimmt mit der Frequenz mehr als linear zu.
Kimberly W
1
Ich glaube nicht, dass das Lesen von Flash bei 100 ns liegt, oder? IIRC ist zwei Größenordnungen größer. Allerdings , wenn Sie Ihr Flash - Controller enthält einen kleinen DRAM - Cache, und der Code ist nicht zu branchy, die Cache - Trefferrate sehr hoch sein (90% +) , um Ihre durchschnittliche Latenz viel niedriger sein kann.
MSalters
2
In diesem Datenblatt zum AT91SAM7S, das ich geöffnet habe, steht für den internen Blitz "Schnelle Zugriffszeit, 30-MHz-Einzelzykluszugriff im ungünstigsten Fall" für den internen Blitz. Das sind 33ns. Und es hat ein Wort Prefetch-Puffer. Off-Die-Flash kann in der Tat eine höhere Latenz haben.
PJC50
1
@Jamil Ich erinnere mich nicht an die genaue Formel, aber ich glaube, es war ein Quadrat der Frequenz.
Jan Dorniak
22

Warum fahren Menschen Fahrrad oder kleines Motorrad, wenn Sie ein Formel-1-Auto haben? Sicher muss es besser sein, 300 km / h zu fahren und sofort überall hin zu kommen?

Einfach gesagt, es muss nicht schneller sein als sie. Ich meine, sicher gibt es ein bisschen und schnellere Mikrocontroller ermöglichen einige Dinge, aber was werden Sie in einem Verkaufsautomaten tun, der vielleicht 1 Stunde am Tag im Dauereinsatz ist? Was machen Sie mit einer Fernbedienung für ein Fernsehgerät?

Auf der anderen Seite haben sie andere wichtige Funktionen, wie einen geringen Stromverbrauch, der sich VIEL einfacher programmieren lässt und so weiter. Im Grunde sind sie keine Prozessoren und machen verschiedene Dinge.

AndrejaKo
quelle
12
@Michael Woher kommt die Idee einfach = schnell?
Matt Young
3
@Michael Ein Fahrrad ist viel einfacher als ein Auto, aber es ist immer noch langsamer. In jedem Fall hat Matt recht. Etwas Einfaches ist nicht automatisch schnell. Das heißt, etwas Schnelles wird kompliziert, nur aufgrund von Überlegungen, die für höhere Frequenzen erforderlich sind.
AndrejaKo
2
Hochleistungs-CISC-Prozessoren geben in der Regel wesentlich mehr Anweisungen aus als einfache eingebettete Prozessoren. Sie leisten viel mehr parallele Arbeit, sind also sowohl komplexer als auch schneller.
Kimberly W
2
@Michael $ 1 könnte für einige Anwendungen luxuriös teuer sein, ich habe gelesen, dass die
Mikrocontroller
2
@Michael "das ist die ganze Idee hinter RISC-Architekturen: Einfache Aufgaben können schneller erledigt werden als komplizierte" Nein! Moderne RISC-Architekturen sind äußerst komplex, da sie mehr Anweisungen (wie SIMD) einführen und mehr Funktionen wie Superskalar, Hyperthreading und Out-of-Order-Ausführung unterstützen müssen. Ihre Komplexität kann CISC-Architekturen leicht übertreffen. MIPS haben heutzutage Hunderte oder Tausende von Anweisungen. "CISC gegen RISC ist größtenteils eine historische Debatte"
phuclv
13

Es gibt viele ARM-Controller, die mit Hunderten von MHz oder mehr betrieben werden. Wer braucht einen 500-MHz-PIC und ist bereit, genug pro Teil zu zahlen, um Millionen-Dollar-Masken für einen hochmodernen Prozess zu rechtfertigen?

Der beliebte ATmega328 soll mit 350-nm-Technologie hergestellt worden sein, die weit hinter den neuesten Intel-Produktions-CPUs (14 nm für Skylake ) zurückliegt .

Sogar die billigen 8-Bit-Controller haben langsam an Geschwindigkeit gewonnen, und Sie können PIC-Controller mit 32 und 64 MHz (z. B. PIC18F14K22) erwerben, die immer noch mit 5 V betrieben werden (letzteres ist ein Aspekt der gesamten Systemkosten).

Eine Überlegung ist, dass diese Controller eine Architektur haben, die für kleine Speicherbereiche und langsame Taktraten optimiert ist. Sobald Sie hohe Taktraten erreicht haben, müssen Sie die Dinge mit Prescalern usw. neu ausrichten.

Es wurde bereits vor langer Zeit (Ende der 1990er Jahre) versucht, sehr schnelle PIC-ähnliche Controller zu produzieren. Dabei ging man davon aus, dass die Firmware Peripheriegeräte ersetzen könnte, wenn der Mikrocontroller schnell genug wäre. Zum Beispiel könnten Sie einen UART mit einem Bit-Bang versehen. Ich glaube nicht, dass sie kommerziell so erfolgreich waren - Scenix-> Ubicom-> Qualcomm (Game Over).

Spehro Pefhany
quelle
350 nm & le; Das würde es erklären. Wusste nicht, dass irgendjemand irgendetwas mit 20 Jahre alter Technologie herstellen würde.
Michael
3
Einige von uns entwickeln (nicht nur) CMOS der 4000er-Serie, was ungefähr 3000nm entspricht.
Spehro Pefhany
6
Ältere Prozesse sind möglicherweise auch nützlich für Personen, die sich mit Strahlungsumgebungen befassen, oder für hochzuverlässige Systeme, die eine Rückverfolgbarkeit erfordern.
Krunal Desai
5
Das Spiel ist noch nicht vorbei - der Parallax Propeller ist eine Fortsetzung dieses Konzepts.
Dave Tweed
3
@Michael: Es ist nicht nur das Zeitalter der Technologie. Auch die Größe spielt eine Rolle. Größere Prozessgrößen haben geringere Fehlerraten, was einen geringeren Ausschuss und damit eine höhere Ausbeute bedeutet - das führt zu geringeren Kosten pro Chip. Wenn Sie bereit sind, 100 US-Dollar für eine CPU (wie Desktops) zu zahlen, sind die höheren Kosten aufgrund des geringeren Ertrags gerechtfertigt. Wenn Sie nur 50 Cent bezahlen möchten, ist dies nicht gerechtfertigt.
Slebetman
3

Stellen Sie sich vor, man möchte Automobile produzieren. Ein Ansatz wäre, eine Reihe von Ausrüstungsgegenständen in der Fabrik nacheinander zu verwenden und jeweils ein Auto zu bauen. Dieser Ansatz kann mit einer bescheidenen Menge an mäßig komplizierter Ausrüstung durchgeführt werden, so viele Ausrüstungsteile können verwendet werden, um mehr als einen Schritt durchzuführen. Andererseits würde ein Großteil der Geräte in der Fabrik die meiste Zeit noch im Leerlauf sitzen.

Ein anderer Ansatz besteht darin, eine Montagelinie einzurichten, so dass, sobald die Ausrüstung, die den ersten Produktionsschritt ausgeführt hat, diesen Vorgang am ersten Fahrzeug beendet hat, der entsprechende Vorgang am nächsten Fahrzeug gestartet werden kann. Der Versuch, ein Gerät in mehreren Phasen des Herstellungsprozesses wiederzuverwenden, wäre kompliziert. In den meisten Fällen ist es daher besser, mehr Geräte zu verwenden, die jeweils für eine bestimmte Aufgabe optimiert sind (z. B. wenn 50 Bohrungen erforderlich sind) Löcher von 10 verschiedenen Größen, dann würde eine Minimalausstattung einen Bohrer mit 10 Bohrern und einem Schnellwechselmechanismus beinhalten, aber eine Montagelinie könnte 50 Bohrer mit jeweils einem fest installierten Bohrer haben und es ist kein Schnellwechsel erforderlich.) .

Für Dinge wie DSPs oder GPUs ist es möglich, relativ billig sehr hohe Geschwindigkeiten zu erreichen, da die Art der auszuführenden Arbeit sehr konsistent ist. Leider müssen viele CPUs in der Lage sein, mit willkürlichen Fehlern von Befehlen unterschiedlicher Komplexität umzugehen. Effizientes Arbeiten ist möglich, erfordert jedoch eine sehr komplexe Planungslogik. In vielen modernen CPUs ist die Logik, die zum "Arbeiten" erforderlich ist, nicht übermäßig kompliziert oder teuer, aber die Logik, die zum Koordinieren von allem anderen erforderlich ist, ist.

Superkatze
quelle
2
Entschuldigung, wenn ich es verpasst habe, aber welche Relevanz hat dies für CPUs im Vergleich zu "langsameren" Mikrocontrollern? Es scheint sich nur auf CPUs im Vergleich zu (normalerweise noch schnelleren) spezialisierten Prozessoren zu konzentrieren.
Underscore_d
1
@underscore_d: Der erste Absatz behandelt die einfacheren Mikrocontroller - sie sind wie der kleine Laden, der jeweils ein Auto baut. Im zweiten Absatz wird darauf hingewiesen, dass es einige billige Steuerungen gibt, die viele Operationen sehr schnell ausführen können, die jedoch in der Art der Operationen begrenzt sind, die sie ausführen können. Was schwierig ist, ist die Möglichkeit, eine beliebige Mischung von Operationen durchzuführen, während sie sich in einem signifikanten (aber sehr variablen) Ausmaß überlappen. Wenn man ein Subsystem hat, das in jedem Zyklus zwei Zahlen akzeptieren kann und das Produkt von zwei Zahlen ausgibt, die vor vier Zyklen übermittelt wurden, und ...
supercat
1
... eine andere, die in jedem Zyklus zwei Zahlen akzeptiert und die Summe der vor zwei Zyklen übermittelten ausgibt. Dabei wird versucht, herauszufinden, wann Werte übermittelt werden müssen, wann Ergebnisse verfügbar sind, wann Dinge geladen und gespeichert werden sollten Register usw. können sehr kompliziert werden, insbesondere wenn man vermeiden möchte, alle Pipelines so auszufüllen, dass sie mit den längsten übereinstimmen.
Supercat
Vielen Dank; das klärt es auf. Ja, es ist sinnvoll, dass schnelle Allzweck-CPUs den größten Teil ihrer finanziellen und energetischen Kosten für "Gerüste" aufbringen - Pipelining, Cache, Zeitplanung, RAM-Steuerung usw. Dinge, die nicht nur unerschwinglich, sondern auch häufig nicht erforderlich sind für micros. Ebenso überrascht es mich immer wieder, was mit einer relativ kleinen Taktfrequenz in einem speziell auf eine Anwendung zugeschnittenen Prozessor alles möglich ist. Faszinierende Sachen auf beiden Seiten!
Underscore_d
@underscore_d: Die MIPS-Architektur wurde unter der Voraussetzung entwickelt, dass Compiler für einige der Planungsprobleme verantwortlich sind, sodass die Hardware vereinfacht werden kann. Ich denke, das Konzept hat sich nie wirklich durchgesetzt, da neuere Prozessoren häufig mehr Pipelinestufen erfordern als ältere, aber Code, der für einen Prozessor mit kürzeren Pipelines geschrieben wurde, funktioniert auf einem Prozessor mit längeren Prozessoren ohne Hardware-Interlocks nicht.
Supercat