Mikrocontroller / Mikroprozessoren und verschiedene Bitversionen, was ist der Unterschied?

20

Als Hobbyingenieur lerne ich jeden Tag mehr über die Welt der Mikrocontroller. Eine Sache, die ich allerdings nicht ganz verstehe, ist die Bedeutung der Bit-Version eines Mikrocontrollers.

Ich benutze den ATmega8 seit mehreren Monaten und es scheint für meine Zwecke großartig zu funktionieren. Ich weiß, wie Dinge wie Taktrate, Speicher, Anzahl der E / A-Pins, Arten von Kommunikationsbussen usw. einen Mikrocontroller von einem anderen unterscheiden. Aber ich verstehe die Bedeutung von 8-Bit vs. 16-Bit vs. 32-Bit nicht ganz. Ich verstehe, dass eine höhere Bit-Version es dem Gerät ermöglicht, größere Nummern zu speichern, aber wie wirkt sich dies auf meine Entscheidung aus? Wenn ich ein Produkt entwerfe, unter welchem ​​hypothetischen Szenario würde ich entscheiden, dass ein 8-Bit-Prozessor einfach nicht funktioniert und ich etwas Höheres benötige.

Gibt es einen Grund zu der Annahme, dass eine theoretische 32-Bit-Variante des ATmega8 (ansonsten gleich) einer 8-Bit-Version überlegen wäre (wenn ein solches Gerät möglich wäre)?

Ich spreche vielleicht Unsinn, aber ich denke, das ist das Ergebnis meiner Verwirrung.

capcom
quelle

Antworten:

24

Es ist nicht die Breite der Zahl, die gespeichert werden kann, sondern die Breite, mit der in einer einzigen Operation gearbeitet werden kann. Üblicherweise (aber nicht notwendigerweise) korreliert dies auch mit der Breite der nativen Speicheradressierung und damit der Speichermenge, die leicht zugeordnet werden kann, ohne hässliche Umgehungen wie Segmentierung oder Bankwechsel.

Die heutigen 32-Bit-Cores sind in den meisten Punkten 8-Designs überlegen (Flexibilität, flaches Speichermodell und natürlich Leistung), mit den wichtigsten Ausnahmen sind Legacy-Systeme, Anwendungen mit extremem Volumen- und Preisdruck (ansonsten korrelieren die Preise tendenziell besser mit On-Chip-Speichergröße als bei Kernbreite) und Nebenwirkungen des Prozesses / der Dichte. Letzteres kann Dinge wie 5-V-Betrieb oder möglicherweise eine größere Strahlungshärte oder einen Vorteil in Bezug auf die Einfachheit bieten, wenn versucht wird, das CPU-Design selbst als frei von Logikfehlern zu beweisen. Ein letzter Prozess- / Altersnebeneffekt, der für viele Bastler von Nutzen ist, ist, dass 8-Bit-Kerne in DIP-Paketen üblich sind, während 32-Bit-Geräte in solchen Paketen seltener sind (obwohl sie existieren).

Chris Stratton
quelle
3
Die Breite, die in einer einzelnen Operation verarbeitet werden kann, kann beim Synchronisieren von asynchronen Programmteilen wichtig sein. Wenn Sie einen 16-Bit-Wert auf einem 8-Bit-Mikro atomar lesen müssen, müssen Sie wahrscheinlich zuerst die Interrupts deaktivieren, die Sie möglicherweise vermeiden möchten, um die ISR-Antwortzeit niedrig zu halten.
21.
Ein weiteres Merkmal, bei dem einige 8-Bit-Mikros dem ARM (der beliebtesten 32-Bit-Architektur) überlegen sein können, ist das E / A-Bit-Twiddling. Ein PIC 18Fxx (8-Bit) kann mit einem einzigen Befehl ein beliebiges Bit im E / A-Bereich setzen oder löschen, unabhängig davon, was Register enthalten, während ein ARM im Allgemeinen einen mehrstufigen Prozess erfordert. ARM-Chips können mehr Anweisungen pro Sekunde ausführen als derzeit verfügbare PIC-Chips (einige kleine 100-MHz-PIC-kompatible Chips waren früher von Scenix erhältlich, aber ich denke, sie werden nicht mehr angeboten), aber selbst verfügbare PICs können noch einige Arten von Bit-Banging ausführen schneller.
Supercat
1
Einige ARM-Geräte sind zwar weniger universell, verfügen jedoch über GPIOx_BSRR- / GPIOx_BRR-Register, in die geschrieben werden kann, um einzelne GPIO-Bits zu setzen oder zu löschen.
Chris Stratton
8

Der Bitwert ist die Datenbus- oder Datenleitungsgröße, dh eine 8-Bit-MCU kann (zum größten Teil) nur mit Werten von 0 bis 255 pro Taktzyklus arbeiten. Stellen Sie es sich vor, der Prozessor verfügt über 8 parallele digitale Leitungen. Und ein 16-Bit hat 16 Leitungen und ein 32-Bit hat 32 Leitungen. Für jeden Taktzyklus werden diese Datenzeilen gelesen, und je mehr Zeilen vorhanden sind, desto höher ist der Wert, mit dem Sie pro Taktzyklus arbeiten können.

28256

21665,536

2324,294,967,296

Über größere Datenbusse kann der Prozessor auch auf größere Speicheradressen zugreifen.

Dies macht einen großen Unterschied bei mathematischen Operationen. Mit einer 16-Bit-Zahl erhalten Sie eine wesentlich höhere Genauigkeit als mit 8-Bit-Zahlen. 16-Bit-Mikrocontroller sind auch effizienter bei der Verarbeitung von mathematischen Operationen mit Zahlen, die länger als 8 Bit sind. Ein 16-Bit-Mikrocontroller kann automatisch mit zwei 16-Bit-Zahlen arbeiten, wie dies bei der allgemeinen Definition einer Ganzzahl der Fall ist. Wenn Sie jedoch einen 8-Bit-Mikrocontroller verwenden, ist der Vorgang nicht so einfach. Die Funktionen, die implementiert werden, um mit solchen Nummern zu arbeiten, benötigen zusätzliche Zyklen. Abhängig von der Verarbeitungsintensität Ihrer Anwendung und der Anzahl der durchgeführten Berechnungen kann dies die Leistung der Schaltung beeinträchtigen.

Unterschied zwischen 8 Bit und 16 Bit Mikrocontroller

Garrett Fogerlie
quelle