Arbeitet der komplette PC-RAM seriell oder parallel?

Stannis

Lieutenant
Registriert
Juli 2011
Beiträge
549
Hi.
Ich arbeite mich z.Z. in die Arbeitsweise vom RAM an (Rows, Banks, DIMMs, Spalten-Zeilen-Addressen etc. etc.)

Was Ich mir selbst bisher noch nicht ganz beantworten konnte:
Holen moderne PCs immer nur Byte für Byte aus dem Speicher in die CPU-Register, oder ist man heute in der Lage mehrere Bytes gleichzeitig zu laden?

Für mich sieht der Addressaufbau im Moment so aus, als würde zumindest bei 32-Bit-Systemen immer nur ein Byte zur gleichen Zeit aus dem Speicher geholt werden können.

Ich lass mich da gern aufklären. Bisher wundert mich, warum man sich dann überhaupt die große Mühe macht die einzelnen Speicherchips noch in Bänke zu unterteilen.
 
Eine CPU kann nur eine komplette Cacheline lesen, und das ist schon >20 Jahre lang so. Einzelne Bytes können nicht gelesen werden. Nur noch embedded CPUs können einzelne Bytes lesen.
Eine Mainstream CPU (x86) hat heute auch einen 128bit breiten Datenbus und braucht dafür 2 DIMMs, d.h. ein DIMM ist 64bit breit.

PS: seriell vs. parallel ist sowieso Blödsinn heutzutage. Dein PCI Express wird als serielleer Bus bezeichnet und ist es wohl auch, aber du kannst 16-32 Lanes zusammenfassen. Ist das jetzt immer noch ein serieller Bus? Oder parallel? Oder beides?
 
Zuletzt bearbeitet:
...

Das ist verwirrend. Gibt's da anständige Literatur dazu?
 
Stannis schrieb:
Holen moderne PCs immer nur Byte für Byte aus dem Speicher in die CPU-Register, oder ist man heute in der Lage mehrere Bytes gleichzeitig zu laden?
Vom Speicher zum Register ist es ein langer Weg mit unterschiedlich breiten Bussen und Zugriffsverfahren auf den Teilabschnitten dieses Weges. Es kommt also drauf an, wohin genau du schaust.

Die CPU kann sehr wohl ein einzelnes Byte aus dem RAM in ein Register befördern. Es kommt also nur 1 Byte im Register an. Bei diesem Vorgang werden aber, wenn die Daten nicht bereits in einem der Caches waren, 64 Bytes (eine cache line) aus dem RAM in den Cache transportiert. Ein Speichermodul ist nur mit 64 Datenbeinchen(Bit) Breite an das Mainboard angeschlossen. Es braucht also 8 solcher 64 Bit breiten Zugriffe auf das RAM-Modul, um die cache line zu füllen. Dies dauert allerdings keinesfalls 8 mal so lange wie ein einzelner Zugriff dauern würde, weil von aufeinanderfolgenden Adressen gelesen wird und deshalb dem Speichermodul nicht immer wieder die gewünschte Adresse übergeben werden muss. Dem Speichermodul wird also gesagt: "Schieb mal ab Adresse x 8 * 64 Bit rüber!" Hat man mehrere solcher 64 bit breiten Speichermodule im Rechner, werden die i.d.R parallel betrieben ("RAM Interleaving"). Bei 2 Modulen würde jedes Modul bei der gleichen Aktion nur 4 * 64 bit Daten liefern, was die Sache ein klein wenig beschleunigt.

Die bei der Aktion "zu viel gelesenen 63 Bytes" aus dem RAM kosten also recht wenig Zusatzzeitaufwand und die Chance, dass die CPU kurz danach neben dem einen angeforderten Byte noch was anderes aus der gleichen cache line benötigt, ist sehr groß.
 
Zuletzt bearbeitet:
Zurück
Oben