Warum benötigen wir mehrere Ebenen des Cache-Speichers?

10479
Kami

Im Allgemeinen ist ein Cache-Speicher nützlich, da die Geschwindigkeit des Prozessors höher ist als die Geschwindigkeit des RAM (beide nehmen zwar schneller zu, der Unterschied bleibt jedoch bestehen). Es ist daher wünschenswert, die Anzahl der Speicherzugriffe zu reduzieren, um die Leistung zu erhöhen.

Meine Frage ist, warum wir mehrere Cache-Level (L1, L2, L3) brauchen und nicht nur einen?

Ich weiß, dass L1 am schnellsten und am kleinsten ist, L2 ist etwas langsamer und etwas größer und so weiter ... aber warum wird die Hardware auf diese Weise erstellt?

5
Etwas verwandte Frage: [Was ist eigentlich ein mehrstufiger Cache in Prozessoren?] (Http://superuser.com/questions/269080/what-isactually-multilevel-cache-in-processors) (Die Antworten dort gehen nicht sehr viel auf Der Grund, warum größer ist, ist langsamer, daher ist die Frage nicht annähernd ein Duplikat, aber die Fragen scheinen verwandt zu sein.) Paul A. Clayton vor 10 Jahren 1

1 Antwort auf die Frage

11
Polynomial

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.

Nett! Hast du irgendwelche Quellen, auf die du verlinken kannst? Thor vor 10 Jahren 0
Ein interessanter Aspekt der Auswirkung der physischen Größe für große Speicher ist, dass ein Konstrukteur die Verwendung langsamerer Speichervorrichtungen für jedes Bit in Betracht ziehen und dennoch die Zugriffsgeschwindigkeit erhöhen kann, wenn die langsameren Vorrichtungen ausreichend kleiner sind. Dies bedeutet, dass DRAM für sehr große Caches sinnvoll sein kann. (Es gibt auch nicht-einheitliche Cache-Architektur-Techniken, bei denen die engeren Teile von L2 eine geringere Latenz haben. Bei partitionierten L3-Caches kann die physische Nähe [oder das On-Chip-Netzwerk] durch Platzierungsoptionen ausgenutzt werden, um die Leistung zu verbessern.) Paul A. Clayton vor 10 Jahren 0
@Thor Dies ist eines der seltsamen Erkenntnisse, die ich über Jahre hinweg beim wahllosen Lesen und Spielen mit Mikroprozessoren erworben habe, aber der [Wiki-Artikel] (http://en.wikipedia.org/wiki/CPU_cache) ist hübsch umfassend, vor allem der Teil über mehrstufige Cache-Architekturen. Polynomial vor 10 Jahren 0