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