Zuerst die "Brocken" Teil Ihrer Frage ...
Normalerweise geschieht die Speicherverwaltung mit Speicherfuttern. Es ist nicht sinnvoll, den Speicher Byte für Byte zu verwalten. Dies liegt daran, dass Sie zum Verwalten eines Speicherblocks eine Datenstruktur benötigen, die Informationen zu diesem Speicherblock enthält. Lassen Sie uns eine wilde Vermutung annehmen und sagen, dass diese Datenstruktur 24 Byte lang ist. Sie würden keine 24-Byte-Datenstruktur verwenden, um 1 Byte Speicher zu verwalten. Sie wollen "Wirtschaftlichkeit". Andernfalls bekommen Sie einen unglaublich hohen Aufwand. Stattdessen verwalten Sie 1 KByte / 32 KBytes / 1 MByte / was auch immer.
Wenn also Speicher verschoben wird (z. B. in die Auslagerungsdatei), erfolgt dies in Blöcken, und dieselbe Methode gilt für den Cache.
Um Wikipedia zu zitieren: "Daten werden zwischen Speicher und Cache in Blöcken fester Größe übertragen, die als Cache-Zeilen bezeichnet werden. Wenn eine Cache-Zeile aus dem Speicher in den Cache kopiert wird, wird ein Cache-Eintrag erstellt."
Der Cache-Eintrag ist ein Beispiel für die zuvor erwähnte Datenstruktur.
Denken Sie daran, dass Programmanweisungen, die in den Cache gelangen, auf dieselbe Art und Weise wie Daten eingelesen werden. Die oben genannten Wörter "Daten werden übertragen" bedeuten auch "Anweisungen werden übertragen".
Schauen Sie sich den Wikipedia-Eintrag unten an. Es hat mehr Infos.
http://en.wikipedia.org/wiki/CPU_cache
======
Und nun eine allgemeinere Antwort zum CPU-Cache.
Hauptsächlich geschieht die Beschleunigung, weil die CPU beim Zugriff auf den Cache die Anweisungen / Daten erhält. VIEL! schneller als beim Zugriff auf den Hauptspeicher.
Hier ist ein Beispiel. Sie haben eine Schleife in einem Programm codiert. Beim ersten Durchlauf wird dieser Speicherabschnitt in den Cache geladen. Sie beginnen am Anfang der Schleife und gelangen schließlich zum Ende der Schleife. Dann geht es wieder nach oben. Angenommen, die gesamte Schleife passt in den Cache (Normalzustand), wenn sich diese Anweisungen zum zweiten Mal um den Cache befinden, und es sind keine weiteren Befehlsabrufe für diese Schleife erforderlich. Das beschleunigt die Dinge wirklich. Wenn die Schleife beendet ist, wird sie im Cache möglicherweise von einem anderen Abschnitt des Programms, der ausgeführt werden muss, überschrieben.
Ähnliches gilt für Daten. Wenn eine Struktur / Gruppe von Variablen / etc. häufig referenziert oder aktualisiert wird, bleibt sie für einige Zeit im Cache. Schließlich wird der Speicherplatz im Datencache an eine andere Struktur / Gruppe von Variablen usw. übergeben, da auf dieses Programm häufig zugegriffen wird.