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