Frage

Was 16-Bit-, 32-Bit- und 64-Bit-Architekturen bedeuten bei Mikroprozessoren und / oder Betriebssystemen?

Bei Mikroprozessoren, bedeutet es, maximale Größe von General Purpose Registers oder Größe von Integer oder der Anzahl der Address-lines oder der Anzahl der Data Bus lines oder was?

Was meinen wir mit den Worten "DOS is a 16-bit OS", "Windows in a 32-bit OS", etc ...?

War es hilfreich?

Lösung

Der Unterschied kommt die Bitbreite eines Befehlssatzes zu einem Mehrzweckregister weitergegeben für den Betrieb auf. 16 Bit können zu einem Zeitpunkt auf 2 Bytes, 64 auf 8 Bytes von Befehl betreiben. Sie können oft Durchsatz eines Prozessors erhöhen durch dichtere Instruktionen pro Taktzyklus ausführen.

Andere Tipps

Meine ursprüngliche Antwort ist unten, wenn Sie die Kommentare verstehen wollen.

Neue Antwort

Wie Sie sagen, es gibt eine Vielzahl von Maßnahmen. Zum Glück für viele CPUs viele der Maßnahmen sind die gleichen, so gibt es keine Verwirrung. Schauen wir uns einige Daten (Sorry für das Hochladen von Bildern, konnte ich nicht eine gute Art und Weise sehen eine Tabelle in Abschlags zu tun). Tabellendaten

Wie Sie sehen können, sind viele Spalten gute Kandidaten. Allerdings würde ich argumentieren, dass die Größe der Mehrzweckregister (grün) ist die am häufigsten verstanden Antwort.

Wenn ein Prozessor sehr in Größe für unterschiedliche Register verändert wird, wird es oft im Detail beschrieben werden, zum Beispiel des Motorola 68k als 16/32-Bit-Chip beschrieben wird.

Andere haben argumentiert, es ist die Anweisung Busbreite (gelb), die ebenfalls in der Tabelle übereinstimmt. Doch in der heutigen Welt des Pipelining Ich würde behaupten, dies ist ein viel weniger relevantes Maß für die meisten Anwendungen als die Größe der Mehrzweckregister.


Original Antwort

Verschiedene Menschen können verschiedene Dinge bedeuten, weil, wie Sie es sagen mehrere Maßnahmen. So zum Beispiel jemand über Speicher sprechen Adressierung könnte etwas anderes jemand bedeuten reden über Integer-Arithmetik. Ich werde jedoch versuchen, definieren, was ich denke, das gemeinsame Verständnis ist.

Mein nehmen ist, dass es für eine CPU, bedeutet „Die Größe des typischen Registers für Standardoperationen verwendet“ oder „die Größe des Datenbusses“ (die beiden sind normalerweise äquivalent).

ich rechtfertigen dies mit der folgenden Logik. Das Z80 hat einen 8-Bit-Akkumulator und ein 8-Bit-Datenbus, während 16-Bit-Speicherregister (IX Adressierung, IY, SP, PC) und ein Adreßbus 16-Bit-Speicher. Und die Z80 ist ein 8-Bit-Mikroprozessor genannt. Diese Mittel, um Menschen müssen in der Regel die Haupt Integer-Arithmetik Größe bedeuten, oder DataBus Größe, nicht die Speicheradressierung Größe.

Es ist nicht die Größe von Anweisungen, wie die Z80 (wieder) hatte 1,2 und 3-Byte-Befehle, obwohl natürlich die Multi-Byte gelesen wurden in mehreren liest. In der anderen Richtung, die rel="noreferrer"> ein 16-Bit-Mikroprozessor ist und 8 oder 16-Bit-Befehle lesen. Also habe ich mit den Antworten müssen nicht zustimmen würde, die sagen, dass es Befehlsgröße ist.

Für Systeme Betrieb, würde ich definieren es als „der Code kompiliert auf einer CPU von dieser Größe laufen“, so ein 32-Bit-OS hat zu laufen kompilierten Code auf einem 32-Bit-CPU (gemäß der Definition oben).

Wie viele Bits eine CPU „ist“, bedeutet, was es der Befehlswortlänge ist. Auf einem 32-Bit-CPU sind die Wortlänge von 32 Bit solchen Anweisung, was bedeutet, daß dies die Breite ist, was eine CPU als Befehle oder Daten verarbeiten kann, was häufig zu einer Busleitung mit dieser Breite. Aus einem ähnlichen Grund haben Register die Größe der Wortlänge der CPU, aber Sie haben oft größere Register für verschiedene Zwecke.

Nehmen Sie den PDP-8 Computer als Beispiel. Dies war ein 12-Bit-Computer. Jeder Befehl war 12 Bit lang. Um Daten von der gleichen Breite zu behandeln, war der Akkumulator auch 12 bit. Aber was der Computer 12-Bit macht eine 12-Bit-Maschine, war seine Befehlswortlänge. Es hatte zwölf Schalter auf der Frontplatte mit dem sie programmiert werden kann, Befehl für Befehl.

Dies ist ein gutes Beispiel für die 8/16/32 Bit Fokus auszubrechen.

Die Bitzahl ist auch in der Regel die Größe des Adressbusses. Es ist daher in der Regel erzählt die maximal adressierbaren Speicher.

Es gibt eine gute Erklärung dafür unter Wikipedia :

In Computer-Architektur, 32-Bit-Integer, Speicheradressen oder andere Dateneinheiten sind solche, die breit höchstens 32 Bits (4 Bytes) sind. Auch 32-Bit-CPU und ALU-Architekturen sind diejenigen, die auf Registern, Adressbusse oder Datenbusse dieser Größe basieren. 32-Bit ist auch ein Begriff, zu einer Generation von Computern, bei denen 32-Bit-Prozessoren waren die Norm.

Jetzt Vortrag über OS lassen.

Mit OS-es, das ist viel weniger gebunden an den eigentlichen „Bitty-ness“ des CPU, es spiegelt in der Regel, wie OP-Codes zusammengesetzt werden (für die Wortlänge der CPU) und wie Register angesprochen werden (Sie können‘ t laden einen 32-Bit-Wert in einem 16-Bit-Registern), und wie der Speicher adressiert wird. Betrachten Sie es als abgeschlossen, kompilierte Programm. Es wird als binäre Befehle gespeichert und hat daher in die CPUs Wortlänge passen. Aufgabe weist, muss es in der Lage sein, den gesamten Speicher zu adressieren, sonst ist es nicht die richtige Speicherverwaltung tun könnte.

Aber was kommen wird, um es nach unten, ist, ob ein Programm ist 32 oder 64 Bit (ein O ist im Wesentlichen ein Programm hier) es wie seine binären Befehle gespeichert werden und wie Register und Speicher adressieren. Alles in allem gilt dies für alle Arten von Programmen, nicht nur OS-es. Deshalb sollten Sie haben Programme für 32-Bit oder 64-Bit kompiliert.

Die Definitionen sind Marketing-Begriffe mehr als präzise Fachbegriffe.

In der Fuzzy-Fachausdruck sie mehr sind architektonisch sichtbaren Breiten Zusammenhang als jede reale Implementierung Register oder Busbreite. Zum Beispiel wurde die 68008 als ein 32-Bit-CPU eingestuft, aber hatte 16-Bit-Register in dem Silizium und nur ein 8-Bit-Datenbus und ein 20-odd Adreßbits.

http://en.wikipedia.org/wiki/64-bit#64-bit_data_models the data models mean bitness for the language.

The "OS is x-bit" phrase usually means that the OS was written for x-bit cpu mode, that is, 64-bit Windows uses long mode on x86-64, where registers are 64 bits and address space is 64-bits large and there are other distinct differences from 32-bits mode, where typically registers are 32-bits wide and address space is 32-bits large. On x86 a major difference between 32 and 64 bits modes is presence of segmentation in 32-bits for historical compatibility.

Usually the OS is written with CPU bitness in mind, x86-64 being a notable example of decades of backwards compatibility - you can have everything from 16-bit real-mode programs through 32-bits protected-mode programs to 64-bits long-mode programs.

Plus there are different ways to virtualise, so your program may run as if in 32-bits mode, but in reality it is executed by a non-x86 core at all.

When we talk about 2^n bit architectures in computer science then we are basically talking about memory registers, address buses size or data buses size. The basic concept behind term of 2^n bit architecture is to signify that this here 2^n bit of data can be made use to address/transport the data of size 2^n by processes.

As far as I know, technically, it's the width of the integer pathways. I've heard of 16bit chips that have 32bit addressing. However, in reality, it is the address width. sizeof(void*) is 16bit on a 16bit chip, 32bit on a 32bit, and 64bit on a 64bit.

This leads to problems because C and C++ allow conversions between void* and integral types, and it's safe if the integral type is large enough (the same size as the pointer). This lead to all sorts of unsafe stuff in terms of

void* p = something;
int i = (int)p;

Which will horrifically crash and burn on 64bit code (works on 32bit) because void* is now twice as big as int.

In most languages, you have to work hard to care about the width of the system you're working on.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top