Dies hat mit der physischen Größe auf dem Würfel zu tun. Jedes Bit in einem Cache wird von einem oder mehreren Transistoren gehalten. Wenn Sie also viel Cache benötigen, benötigen Sie viele Transistoren. Die Geschwindigkeit des Caches ist im Wesentlichen umgekehrt proportional zur Lokalität der Einheit, auf die zugegriffen werden soll. Bei winzigen Geräten wie diesen wird die Kommunikation langsamer, wenn der Signalpfad länger wird. Dies hat teilweise mit der Substratimpedanz zu tun, aber auf dieser Ebene sind einige komplexere physikalische Phänomene involviert.
Wenn Sie einen großen einzelnen Cache hinzufügen möchten, muss er sich in einem sehr kurzen Abstand von MMU, ALU usw. befinden. Dies macht das physische Design des Prozessors sehr schwierig, da ein großer Cache viel Platz beansprucht. Um den Cache für diese Untereinheiten "lokal" zu machen, müssen Sie die Lokalität der Untereinheiten untereinander opfern.
Durch die Verwendung eines kleinen, schnellen lokalen Cache (L1) können wir die Lokalität und Geschwindigkeit maximieren, verlieren jedoch an Größe. Wir verwenden dann einen sekundären Cache (L2), um größere Datenmengen zu speichern, mit einem geringfügigen Verlust an Lokalität (und damit Geschwindigkeit). Dies bietet uns das Beste aus beiden Welten - wir können viele Daten speichern, haben aber immer noch einen sehr schnellen lokalen Cache für Prozessor-Untereinheiten.
In Multicore-Prozessoren wird der L3-Cache normalerweise von Cores gemeinsam genutzt. Bei dieser Art von Design sind die L1- und L2-Caches in den Chip jedes Kerns eingebaut, und der L3-Cache befindet sich zwischen den Kernen. Dies gibt jedem Kern eine angemessene Lokalität, ermöglicht aber auch einen sehr großen Cache.
Die Funktionalität von Caches in modernen Prozessoren ist sehr kompliziert, daher versuche ich nicht einmal eine korrekte Beschreibung, aber ein sehr vereinfachter Prozess besteht darin, dass Zieladressen in der L1, dann in der L2 und dann in der L3 gesucht werden, bevor auf eine Systemspeicher holen. Sobald dieser Abruf abgeschlossen ist, wird er durch die Caches nach oben gezogen.