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?
Antworten:
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.
quelle
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.
quelle
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.
quelle
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).
quelle
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.
quelle