Ist es die Adressbusgröße oder die Datenbusgröße, die „8-Bit-, 16-Bit-, 32-Bit-, 64-Bit-“ Systeme bestimmt?

15

Mein einfaches Verständnis ist wie folgt.

Der Speicher (RAM) besteht aus Bits, 8er-Gruppen, die Bytes bilden, von denen jedes adressierbar ist, und damit byteadressierbaren Speicher.

Der Adressbus speichert den Speicherort eines Bytes.

Wenn ein Adressbus eine Größe von 32 Bit hat, kann er bis zu 2 halten 32 Zahlen und es kann daher bis zu 2 beziehen 32 Speicherbytes = 4 GB Speicher und jeder Speicher größer als dieser ist unbrauchbar.

Der Datenbus wird verwendet, um den zu schreibenden Wert aus dem Speicher zu senden bzw. aus ihm zu lesen. Wenn ich einen Datenbus der Größe 32 Bit habe, bedeutet das, dass maximal 4 Bytes möglich sind in den Speicher geschrieben / gelesen werden. Ich finde keinen Zusammenhang zwischen dieser Größe und der maximalen Speichergröße.

Aber ich lese Hier Das:

Obwohl die meisten Systeme byteadressierbar sind, ist es sinnvoll, dass sich der Prozessor wie bewegt       möglichst viele Daten um. Dies geschieht über den Datenbus, und die Größe des Datenbusses bezieht sich auf die Namen 8-Bit-System, 16-Bit-System, 32-Bit-System, 64-Bit-System usw. Wenn der Datenbus 8 Bit breit ist, kann er 8 Bit in einer einzigen Speicheroperation übertragen. Wenn der Datenbus 32 Bit breit ist (wie zum Zeitpunkt des Schreibens am häufigsten üblich), können maximal 32 Bit in einer einzigen Speicheroperation verschoben werden.

Dies besagt, dass die Größe des Datenbusses einem Betriebssystem den Namen, 8 Bit, 16 Bit usw. gibt. Was stimmt nicht mit meinem Verständnis?

learner
quelle
" Was stimmt nicht mit meinem Verständnis? "- Sie versuchen zu machen ein Definition passen verschiedene Dinge. Der Bitgrößen-Deskriptor wurde zu unterschiedlichen Zeitpunkten für verschiedene Dinge verwendet.
sawdust
1
Es bedeutet, was immer der Hersteller sagt. Im Allgemeinen ist dies etwas, das der Registergröße ähnelt, aber es gibt viele Möglichkeiten, das zu fälschen / zu schwenken.
Daniel R Hicks

Antworten:

12

Im Allgemeinen wird die Größe des Datenbusses durch die Größe der Prozessorregister bestimmt. Häufig ist es die Größe der Prozessorregister, die den Betriebssystemtyp bestimmt (64 vs. 32). Die physischen Busgrößen können sich technisch davon unterscheiden (8088 als Beispiel), aber es ist so selten, dass der Autor Ihres Zitats die beiden wahrscheinlich miteinander verbindet.

Im Allgemeinen folgt die Zeigergröße auch der Registergröße, aber die Busbreite der physikalischen Adresse kann größer sein (wie bei 8086 16-Bit bei 20) oder kleiner (wie bei AMD 64 bei 48).

Dougvj
quelle
2
" Die physikalische Adressbusbreite kann größer sein "- Besonders bei 4-Bit- und 8-Bit-Prozessoren!
sawdust
Okay. Aber ich versuche, es trivial zu verstehen. Ich konnte keinen Zusammenhang zwischen der Größe des Datenbusses und dem maximal möglichen Speicher finden, wie ich es mit der Adressbusgröße erklären könnte. Die Antwort scheint also "NICHT ADRESSBUSSGRÖSSE, sondern DATENBUSGRÖSSE" zu sein (weil sie normalerweise so groß ist wie die Prozessorregister). Fehlt mir etwas?
learner
@learner Das stimmt, die Verwirrung liegt auch darin, dass die maximale Zeigergröße eines Systems die Größe der Prozessorregister ist. In einem flachen Adressraum wie bei den meisten modernen Systemen bedeutet dies, dass er durch die Größe der Prozessorregister begrenzt ist. Einige Prozessoren, vor allem ältere, nutzten Tricks wie spezielle segmentierte Adressierung, um dies zu umgehen.
Dougvj
@Dougvj, Okay, es wird klarer. Aber warum haben sie Adressbusgrößen von Prozessorregistergrößen unterschieden? Wäre es nicht sinnvoller, sie gleich zu halten? Und ich bin verwirrt darüber, wo die Adressen aufbewahrt werden? (der Adressbus oder das Prozessorregister?) Vielen Dank
learner
1
@learner Das ist richtig. Zusammenfassend: Die OS-Bezeichnung entspricht genau der Größe der Prozessorregister. Der Adressbus kann die gleiche Größe wie die Prozessorregister haben oder nicht, daher ist der maximal mögliche adressierbare RAM davon unabhängig. Der Prozessor hat jedoch intern fast immer ein Adressierungsschema, das Zeiger mit der gleichen Größe wie die Prozessorregister enthält.
Dougvj
1

Dies ist die Größe des Registers und des Speichers im Prozessor.

Bei Verwendung von Tricks hatte ein 16-Bit-Prozessor einen 20-Bit-Adressbus, so dass er nicht außerhalb des Prozessors gespeichert ist.

Fiasco Labs
quelle
1

Es gibt kein "reines" 32- oder 64-Bit-System, und daher sind die Ausdrücke ohnehin nur Annäherungen.

Z.B. nimm deine Aussage Der Speicher (RAM) besteht aus Bits, Gruppen von 8 Bytes, von denen jedes angesprochen werden kann . Das ist nicht sehr üblich. PCs haben ihren Arbeitsspeicher auf DIMM-Modulen und diese sind 64 Bit breit. In den 90er Jahren gab es SIMMs, und diese waren 32 Bit breit.

In einigen Systemen müssen oder können DIMMs gepaart werden ("ganged" / "dual channel"), bei denen es sich um einen 128-Bit-Datenbus handeln würde. Dieses Konzept liegt vor den sogenannten "64-Bit" -Prozessoren von AMD und Intel.

Diese 64-Bit-Gruppe eines einzelnen DIMMs kann tatsächlich in 8 Bytes unterteilt werden. Das ist ziemlich transparent von Ihrer CPU. Es kann auch die 64 Bits in 4 * 16 Bits, 2 * 32 Bits unterbrechen oder einfach alle 64 Bits als eine einzige Variable verwenden.

Die wichtigste Frage ist jedoch die Breite einer Adresse. Jedes Byte im Speicher hat eine eigene Adresse, aber nicht jedes Bit. Das bedeutet, dass die 64 Bits, die Sie von einem einzelnen DIMM erhalten, 8 Adressen haben. Die niedrigste davon ist immer ein Vielfaches von 8: Wie viele verschiedene Adressen unterstützt die CPU jetzt? Es gibt zwei gemeinsame Antworten, zumindest theoretisch. Einige CPUs unterstützen 2 32 verschiedene Adressen, einige Unterstützung 2 64 . Diese Unterscheidung ist die häufigste Unterscheidung zwischen 32- und 64-Bit-Systemen.

In der Praxis unterstützen 64-Bit-Systeme heute weniger als 2 64 Bytes von RAM. Das wäre unerschwinglich und würde sowieso nicht in einen normalen PC passen. So viel Speicher würde mehrere Millionen Tonnen wiegen!

MSalters
quelle
Handelt es sich beim Prozessorregister um eine Adresse oder um den Adressbus? Sie sagen "einige CPUs unterstützen 2 ^ 32 verschiedene Adressen ...". Was sind sie genau begrenzt?
learner
Typischerweise sind sowohl die Registergrößen als auch die MMU (Memory Management Unit, der Teil der CPU, der direkt für den Speicher verantwortlich ist).
MSalters
0

Beides eigentlich.

Die Bits in einer CPU sind normalerweise ein Hinweis auf die Größe ihrer internen Register. Eine 32-Bit-CPU hat 32-Bit-Register, die in Chunks unterteilt sein können oder nicht.

Es ist sinnvoll, eine 32-Bit-CPU mit einem 32-Bit-Datenbus zu verwenden, da Sie alle Daten direkt aus dem Speicher in die Register übertragen können. Sie können jedoch auch eine beliebige Datenbusgröße verwenden. Daher verfügt die 32-Bit-CPU normalerweise über einen 32-Bit-Datenbus, um den Datentransfer zu erleichtern.

Aus zwei Gründen ist es auch sinnvoll, einen 32-Bit-Adressbus zu verwenden. Ein größerer Adressbus würde die indirekte Adressierung erschweren, da Sie nicht über ein größeres Register verfügen, um eine Speicheradresse zu speichern, oder die CPU ein spezielles Register für die Adressierung des Speichers benötigen würde 16 Bit Adressbus. Im Gegensatz dazu ist ein Adressbus, der kleiner als das Register ist, nur eine Verschwendung von Ressourcen. Es gibt Mikrocontroller, die einen kleineren Adressbus verwenden.

h0m3
quelle