Moin Leutz!
Es sollte ja einigen bekannt sein, dass zum Beispiel bei der x86 Architektur
ints immer an Adressen liegen (sollten),
die durch 4-Bytes ohne Rest teilbar sind, weil so die Prozessoren den
int in einem einzigen Speicherzugriff lesen können.
Aber warum ist das so?
Was hindert die CPU daran, den
int zum Beispiel an der Adresse 0x00000006 in nur einem Zugriff zu lesen? :roll:
Das hängt ganz stark von der Implementierung der Speicherarchitektur und des Prozessors ab.
Je nach Architektur werden z.B. nur 32 bit große "Pakete" über den Bus übertragen, welche vom Memory Controller auch so gelesen werden. d.h. er kann 0x00000000 lesen und 0x00000004, aber dazwischen muss der Prozessor improvisieren und die Inhalte beider Adressen anfordern um den Wert zusammenzustellen.
Ist etwas "lasch" Ausgedrückt, aber bitte korregiert mich, falls ich hier falsch liege.. ich bin nicht so der Experte was x86 angeht, ich übertrage hier mein Wissen vom Cell Prozessor.
Bei dem sieht das ganze noch komplexer aus, da der Rambus
R Controller nur komplette cachelines überträgt, und erst die volle Geschwindigkeit erreicht wenn über mehrere Cachelines hinweg Daten verarbeitet werden damit alle Speicherkanäle ausgenutzt werden.
Edit: Um deine Frage "Warum ist das so?" zu beantworten:
Das liegt an der Implementierung, das kann von Architektur zu Architektur unterschiedlich sein und hat meist technische Gründe. Wenn du das genauer wissen willst solltest du nach Literatur zum Thema Mikroprozessoren, Prozessorarchitektur, etc suchen, vielleicht steht auch etwas dazu im Intel Reference Manual.