Was ist der Platz von 8- und 16-Bit-Mikrocontrollern? Warum hat 32-Bit nicht übernommen?

9

Was ist der eigentliche Grenzwert in Bezug auf den Kompromiss zwischen Kosten und Leistung bei der Auswahl von 32-Bit-Mikrocontrollern?

Mit anderen Worten, warum verwenden wir angesichts des Aufstiegs und der Dominanz von ARM-Architekturen immer noch 8-Bit- und 16-Bit-Mikrocontroller? Sind sie noch viel billiger?

Ich verstehe, dass sehr Low-End-Geräte nicht die Ressourcen benötigen, die größere und komplexere Architekturen bieten. Was ist jedoch die eigentliche Motivation, sie weiterhin zu nutzen, wenn sich die Kosten in den gleichen Bereich zu bewegen scheinen?

Bruno Morais
quelle
1
Energieverbrauch?
Leon Heller
7
Das billigste 32-Bit-µC auf Digikey, das ich sehe, liegt bei 0,64 US-Dollar, das billigste 8-Bit-Gerät bei 0,35 US-Dollar. Wenn Sie ein großes Unternehmen sind, das eine Million einfacher Widgets erstellen wird, ist das ein sehr großer Unterschied.
Samuel
@LeonHeller Auf den ersten Blick stimme ich eher zu, schaue aber auf den Punkt, den ich in den Kommentaren der vorgeschlagenen Antwort gemacht habe.
Bruno Morais
2
Selbst die Massenpreise für DigiKey zu betrachten, ist kein brillanter Leitfaden. Für richtig kleine Mikros in kleinen Embedded-Anwendungen mit geringem Stromverbrauch, die in Massenproduktion hergestellt werden, kauft niemand sie bei DigiKey, und es besteht die Möglichkeit, dass sie Matrizen kaufen, um nicht zu bleiben ein Chip-Paket zum Löten auf eine Platine. Ein 8-Bit-Mikro ist immer kleiner, einfacher, daher billiger und leistungsschwächer als ein 32-Bit-Mikro mit gleichwertiger Konstruktion. Ja, die Marge sinkt für viele Menschen bis zur Bedeutungslosigkeit, aber in Massenmengen lohnt sich sogar ein Zehntel eines gesparten Pennys.
John U
Hier ist ein relevanter Artikel, den ich auf der Website von Electronic Design gefunden habe: 8 Bit oder 32 Bit? Auswahl der MCU Ihres nächsten Designs
Garth Wilson

Antworten:

17

Vielleicht gab es vor einem Jahr einen signifikanten Unterschied zwischen den 8-Bit-Low-End-Mikrocontrollern und den billigsten 32-Bit-Mikrocontrollern. Nicht mehr der Fall.

Basierend auf den Bulk-Preisen von Digi-Key können Sie einen 8-Bit-PIC10F200 für 35ȼ in 2500 Mengen in einem SOT-23-6-Paket erhalten. Sie erhalten einen 32-Bit-CY8C4013SXI-400 (ARM Cortex-M0) für 36ȼ in 2500 Mengen in einem SOIC-8-Paket. (Digi-Key-Massenpreise sind nicht realistisch in Bezug auf das, was die Hersteller tatsächlich bezahlen, was wahrscheinlich viel weniger ist, aber ich denke, es ist gültig, sie für einen groben Preisvergleich zwischen verschiedenen Produkten für ähnliche Mengen zu verwenden.)

Das OP ist also richtig, sie konvergieren.

Warum werden die 32-Bit-Chips nicht mehr verwendet? Wie ich bereits in meinem ersten Absatz sagte, ist diese Preis- und Größenparität erst im letzten Jahr oder in den letzten 18 Monaten aufgetreten. Und sie haben noch einen langen Weg vor sich, bevor es genug Chips gibt, um wettbewerbsfähig zu sein.

Von den 6875 ARM-Chips, die bei Digi-Key erhältlich sind, sind nur vier mit Mengenpreisen unter einem Dollar auf Lager. Vier . Mittlerweile stehen den Ingenieuren Hunderte von 8-Bit-Chips unter einem Dollar zur Auswahl.

Nehmen wir an, es waren mindestens ein paar Dutzend Low-End-32-Bit-Mikros verfügbar. Würden sie automatisch über die 8-Bit-Dateien ausgewählt?

Zunächst müssen Sie die Ingenieure auf sie aufmerksam machen. Es gibt immer viel Widerstand gegen Veränderungen. Neue Dinge zu lernen - vom Standpunkt der Hardware aus lernen, wie der neue Chip in eine Schaltung integriert wird. Es gibt neue Tools wie In-Circuit-Programmierer, neue Compiler usw. Für die Firmware-Ingenieure lernen sie, wie man einen brandneuen Satz von Peripheriegeräten und Timern verwendet (meistens Registerlayouts und Bitbedeutungen).

32-Bit ist nett und das alles, aber wenn man nicht viel rechnen muss, worum geht es dann? Wenn Sie nur vier GPIO-Pins haben, bietet der interne Zugriff auf diese als 32-Bit-Register keinen Vorteil gegenüber der Verwendung eines 8-Bit-Registers.

Ich denke, der Stromverbrauch wird immer zugunsten der 8-Bit-Mikros sein.

Zum Beispiel verbraucht der PIC10F200 175 µA bei 4 MHz und 2 V und 100 nA im Schlafmodus. Der CY8C4013SXI-400 verbraucht im Ruhemodus ca. 800 µA bei 4 MHz und 2 V und 1 uA. (Das Datenblatt für den CY8C4013SXI hatte weder Zahlen für 4 MHz noch für 2 V, daher musste ich einige Schätzungen vornehmen. Das Datenblatt besagt, dass es 2 mA bei 6 MHz und 3,3 V zeichnet.)

Der ARM zieht also im Wachzustand 4,5-mal so viel Strom und im Schlaf 10-mal so viel Strom. Scheint nicht viel zu sein, aber es ist der Unterschied zwischen 3 Monaten oder einem Jahr auf einer Knopfzelle. (Ich gehe davon aus, dass beide Mikrocontroller meistens das Timing durchführen, Ports aktualisieren usw. und keine wirklich umfangreichen Berechnungen durchführen. Wenn letzteres der Fall ist und das 8-Bit-Mikro über einen längeren Zeitraum viel Multibyte-Arithmetik ausführen muss mit der Zeit verliert es einen Teil seines Vorteils.)

Es ist interessant, dass der ARM ungefähr viermal so viel Strom zieht wie der 8-Bitter und wiederum interne Register und Datenpfade hat, die viermal so breit sind. Ich denke nicht, dass dies ein Zufall ist. Für CMOS ist der Stromverbrauch ungefähr proportional zur Anzahl der geschalteten Transistoren, und der ARM leistet offensichtlich viel mehr pro ausgeführtem Befehl.

Da immer mehr ARM-Anbieter Low-End-Chips herausbringen, wäre ich nicht überrascht, wenn Anbieter wie Microchip ihre Preise noch weiter senken würden. Auf jeden Fall, bei mehr oder weniger gleichen Preisen, Paketen ähnlicher Größe, aber viel weniger 32-Bit-Chips zur Auswahl, denke ich, dass die 8-Bit-Mikrocontroller noch eine Weile verfügbar sein werden - vor allem, weil Sie es getan haben haben Zehntausende von Ingenieuren mit ihnen vertraut gemacht.

tcrosley
quelle
Für den Stromverbrauch mit implementierten Schlafmodi müssen Sie auch die Codeeffizienz berücksichtigen. Wenn die MCU durch einen Trigger aufwacht, dann einen Code ausführt und wieder in den Ruhezustand wechselt, ist die Anzahl der Ticks, die zum Beenden des Jobs erforderlich sind, sehr relevant. Ich würde denken, dass der größte Teil des Stromverbrauchs einer MCU vom Oszillator stammt, der mit voller Geschwindigkeit läuft. Um den gleichen Job wie ein 32-Bitter zu machen, benötigt ein 8-Bitter wahrscheinlich ungefähr die fünffache Anzahl von Zyklen, einfach weil sie im Allgemeinen weitaus weniger Code-effektiv sind, selbst wenn einfache Arithmetik ausgeführt wird.
Lundin
(Und das ist nicht so sehr, weil sie einen 8-Bit-Datenbus haben, sondern hauptsächlich, weil alle gängigen 8-Bit-Daten auf dem Markt alte CPU-Kerndesigns aus den 70er und 80er Jahren haben.)
Lundin
1
@Lundin Ich sage dies in meiner Antwort - wenn der 8-Bitter im ISR viel ausgefallene Mathematik machen muss, dann verliert er dennoch einen Teil seines Vorteils. Wenn jedoch nur einige Flags gesetzt oder ein Register aktualisiert werden, ist dies effizienter.
Tcrosley
5

Drei Hauptpunkte:

  • Preis
  • Größe
  • Energieverbrauch

50 ¢ bei der Bestellung von 10.000 Chips ist ziemlich viel Geld. Noch mehr, wenn Sie 100.000 Chips bestellen.

Sie können 8-Bit-Chips erhalten, die erheblich kleiner sind als 32-Bit-Chips, wie z. B. den PIC10, der in einem SOT23-6-Paket erhältlich ist.

32-Bit-Chips verbrauchen viel mehr Strom als ein kleiner 8-Bit-Chip, da sie im Allgemeinen schneller getaktet werden und mehr leisten. Batterien entladen sich schneller, Stromversorgungssysteme müssen mehr Strom liefern (und sind daher teurer) usw.

Warum sollten Sie sich einen Moloch kaufen, um nebenan eine Tasse Zucker zu trinken?

Majenko
quelle
2
Vergleichen Sie einfach zwei Chips desselben Herstellers - zum Beispiel den PIC18F25K20 und den PIC32MX250F512 von Microchip. Beide modernen MCUs. Beide Datenblätter haben Idd gegen Taktrate. Das 8-Bit-Diagramm liegt bei 5 mA, das 32-Bit-Diagramm bei 20 mA. Wenn Sie darüber nachdenken, würde eine 8-Bit-Operation etwas mit 8 Latches tun - eine 32-Bit-Operation würde das Gleiche (oder Äquivalent) mit 32 Latches tun. Das ist das 4-fache der zu manipulierenden Latches, also das 4-fache des typischen Stromverbrauchs.
Majenko
2
Der Leerlaufstrom für das 32-Bit liegt zwischen ~ 0,5 mA und 7 mA. Das 8-Bit-Diagramm für den Leerlaufstrom wird auf der µA-Skala gemessen und liegt bei 7µA - nur 4µA bei normaler Raumtemperatur ...!
Majenko
3
Graben Sie einige Datenblätter aus und überzeugen Sie sich selbst.
Majenko
2
Dies setzt voraus, dass der Chip nur verarbeitet. Dinge brauchen Zeit, die nicht von der Geschwindigkeit des Chips abhängen, wie das Lesen von Daten von externen Sensoren usw. Eine 80-MHz-32-Bit-CPU liest ein 100-kHz-I2C-Gerät nicht schneller als eine 16-MHz-8-Bit-CPU.
Majenko
3
Vergessen Sie nicht, ältere Software (insbesondere für zertifizierungspflichtige Systeme) und Entwicklerkenntnisse sowie die Auswahl von Peripherie- / RAM- / Flash-Komponenten (ein Mikrocontroller-Design mit einem leistungsstärkeren Prozessor benötigt mehr Chipfläche für den Speicher; ein Cortex-M mit 256 Byte RAM) scheint in absehbarer Zeit unwahrscheinlich) und Paket- / Spannungsauswahl. Eine gute Antwort sollte auch erklären, warum der 16-Bit-Markt nicht besser abschneidet (und modernere 8-Bit-ISAs wie AVR) und warum der 4-Bit-Markt scheinbar sehr eingeschränkt ist (Uhren und was noch?).
Paul A. Clayton
2

Die uC-Anwendungen, die ich für kommerzielle Produkte entwickelt habe, haben fast nie Datengrößen von mehr als 8 Bit verarbeitet. Selbst wenn 32-Bitter den gleichen Preis wie 8-Bitter hätten, gäbe es immer noch keinen Vorteil. Wie jemand anderes sagte, gehen wir auf das Vertraute ein, damit wir es schneller ausstanzen können. Der letzte, den ich entwickelt habe, hat den PIC16, den ich verwendet habe, in jeder Hinsicht an seine Grenzen gebracht - aber das lag nicht an der Datengröße. Wenn ich so etwas mehr mache, sollte ich wirklich ARM lernen.

Garth Wilson
quelle
Ich würde vermuten, dass für die meisten Small-Micro-Anwendungen die größte erforderliche Datengröße 16 Bit oder vielleicht 24 Bit beträgt. Die meisten Anwendungen müssen nicht viel mit Dingen tun, die größer als 8 Bit sind, aber sie müssen etwas tun. Andererseits hat fast jeder jemals hergestellte 8-Bit-Mikrocontroller (wenn nicht absolut jeder) ein Übertragsflag, das es ermöglicht, eine Folge von Operationen zu verwenden, um einen 16-Bit-Mikrocontroller (oder sogar einen größeren) auszuführen.
Supercat
2

Ich würde erwarten, dass ARM-Chips die meisten Funktionen übernehmen, bei denen sich etwas wie ein "Computer" verhält. Andererseits gewöhnen sich viele 8-Bit-Mikrocontroller daran, Dinge zu tun, die mit einem relativ einfachen programmierbaren Logikbaustein oder einer moderaten Anzahl von Gattern erledigt werden könnten, aber tatsächlich billiger und / oder mit weniger Stromaufnahme unter Verwendung von a einfaches 8-Bit-Mikro. Beim Entwerfen komplizierterer Anwendungen ist es oft einfacher, ein 32-Bit-Mikro als ein 8-Bit-Mikro zu verwenden. Wenn der gesamte Zweck eines Chips darin besteht, z. B. einen bestimmten Eingang zu beobachten und zu entprellen und, wenn er hoch ist, 200 auszugeben Impulse an einem bestimmten Ausgang in Intervallen von 1 ms, dann 100 in Intervallen von 2 ms, dann 100 in Intervallen von 3 ms, dann Pause für 100 ms und so lange tun, bis der Eingang niedrig wird. Das Entwerfen des Codes dafür ist möglicherweise tatsächlich einfacherauf einem 8-Bit-Mikro als auf einem 32-Bit-Mikro. Der Kostenunterschied zwischen 8-Bit- und 32-Bit-Mikros reicht in vielen Fällen möglicherweise nicht mehr aus, um zusätzlichen Engineering-Aufwand zu rechtfertigen, damit ein Projekt in ein 8-Bit-Mikro "passt", aber in Fällen, in denen ein 32-Bit-Teil dies nicht tun würde Es gibt keinen Grund, auch nur einen Cent mehr auszugeben.

Superkatze
quelle
Ich stimme zu, weise jedoch darauf hin, dass die Aufrechterhaltung und Beherrschung von zwei Toolchains einen eigenen technischen Aufwand erfordert.
Scott Seidman
2
@ ScottSeidman: Stimmt. Andererseits kann es auch erwähnenswert sein, dass einige 8-Bit-Mikros beim Einschalten fast sofort Code ausführen können, während die 32-Bit-Mikros, die ich gesehen habe, etwas länger dauern.
Supercat
Ich frage mich, ob wir jemals eine ARM-Lizenz für 8-Bit-Plattformen sehen werden. Es gibt einige wunderbare Funktionen von ARM-Implementierungen, wie die Möglichkeit, nicht ganze Peripheriegeräte und Busse zu takten, die dazu führen sollten, dass 8-Bit-ARMS in Bezug auf die Schluckleistung Ringe um andere Plattformen laufen lassen. Wenn die mfct CMSIS-kompatible Bibliotheken herstellen, würden sie wahrscheinlich die großen Player auslöschen.
Scott Seidman
@ScottSeidman: Eigentlich würde ich gerne Designs sehen, bei denen die zeitempfindlichen Teile von Peripheriegeräten (z. B. Timer, Baudratengeneratoren usw.) mit einer konstanten Zeitbasis ausgeführt werden können, die unabhängig von der CPU-Geschwindigkeit ist , aber ich habe nur minimale Unterstützung für ein solches Konzept gesehen. In Silizium wäre es nicht schwer, aber ich würde vermuten, dass Synthesewerkzeuge nicht über die Mittel verfügen, um solche Dinge effizient zu erledigen.
Supercat
@supercat Bei anderen Mikrocontrollern bin ich mir nicht sicher, aber der PIC32 hat das Konzept eines peripheren Bustakts, der auf eine andere Taktrate als der Haupttakt eingestellt werden kann. So können Sie die CPU-Geschwindigkeit ändern, um beispielsweise Strom zu sparen, und trotzdem den gleichen PB-Takt
beibehalten,
1

Ich stimme zwar zu, dass CPU-Kosten und Stromverbrauch die Hauptgründe sind, aber eine weitere Überlegung, die ich hier noch nicht gesehen habe, ist der Platz auf der Leiterplatte. Für viele Arten von eingebetteten Systemen, wie zum Beispiel eine elektronische Personenwaage, besteht kein großer Bedarf an vielen E / A, kein Vorteil für größere Busgrößen und kein Vorteil für eine schnellere Verarbeitung. Es gibt jedochEin Vorteil für ein kleineres Gehäuse mit weniger Stiften, da dadurch das Layout und die Verlegung einer Leiterplatte einfacher und häufig kleiner werden. Wenn eine Karte als 2-Schicht-Karte anstatt als 4-Schicht-Karte ausgeführt werden kann, ergeben sich erhebliche Kosteneinsparungen, und die kleineren Pin-Zählungen, die häufig bei 8-Bit-Prozessoren auftreten, erleichtern diese Einsparungen leichter als 32- Bitprozessoren, die im Allgemeinen mehr Pins und physikalisch größere Gehäuse haben.

Edward
quelle
Sie erkennen, dass dies eine 2 1/2 Jahre alte Frage ist, oder?
Olin Lathrop
@Olin Ein anderer Standpunkt tut nicht weh.
m.Alin
@OlinLathrop: Ja, meine 8-Bit-CPU-gesteuerte Uhr / Kalender funktioniert einwandfrei. :)
Edward
0

Selbst innerhalb der 8-Bit-Welt ist bekannt, dass neuere Typen sehr lange brauchen, um ältere Typen zu übernehmen - sehen Sie, dass MCS51 in seinen Nischen noch am Leben ist und MCS48 immer noch an unerwarteten Orten gefunden wird.

In vielen Fällen kommt es nicht zu Veränderungen, weil sie keinen zusätzlichen Wert bringen und mit den Kosten für das Erlernen einer neuen Technologie verbunden sind, die sich noch nicht als dauerhaft erwiesen hat und / oder voraussichtlich immer noch ein sich bewegendes Ziel ist (was dazu führt) Es ist interessant für Leute, die sich auf die MCU-Technologie konzentrieren möchten, aber ärgerlich für Leute, die sich auf ihre Anwendung konzentrieren und die Produktionssoftware nicht ständig reparieren und erneut testen möchten, um den diesjährigen ARM-Jahrgang anzupassen!). Für einige ist eine nicht mehr entwickelte Komponente veraltet, für andere ist sie endlich stabil geworden , und obwohl sie möglicherweise Problemumgehungen für eingewachsene Fehler benötigt, bietet sie zumindest eine stabile Plattform für diese. Der Lavastrom ist nicht immer das Antimuster, zu dem er aufgebrochen ist - er neigt dazu, Berge zum Schauplatz zu machen.

Rackandboneman
quelle