Sehen Sie sich folgendes an: Prozessor-Cache L1, L2 und L3 bestehen alle aus SRAM?
Im Allgemeinen werden sie alle mit SRAM implementiert.
(Die POWER- und zArchitecture-Chips von IBM verwenden DRAM-Speicher für L3. Dies wird als eingebetteter DRAM bezeichnet, da er in derselben Art von Prozesstechnologie wie Logik implementiert ist. Dadurch kann schnelle Logik in denselben Chip wie der DRAM integriert werden. Für POWER4 Chip L3 verwendet eDRAM; POWER7 hat den L3 auf demselben Chip wie die Prozessorkerne.)
Obwohl sie SRAM verwenden, verwenden sie nicht alle das gleiche SRAM-Design. SRAM für L2 und L3 sind hinsichtlich der Größe optimiert (um die Kapazität bei einer begrenzten herstellbaren Chipgröße zu erhöhen oder die Kosten einer bestimmten Kapazität zu senken), während SRAM für L1 eher für die Geschwindigkeit optimiert wird.
Noch wichtiger ist, dass sich die Zugriffszeit auf die physische Größe des Speichers bezieht. Bei einem zweidimensionalen Layout kann man davon ausgehen, dass die Latenz für physische Zugriffe in etwa proportional zur Quadratwurzel der Kapazität ist. (Die nicht einheitliche Cache-Architektur nutzt dies, um einen Teil des Caches mit niedriger Latenz bereitzustellen. Die L3-Slices neuerer Intel-Prozessoren haben einen ähnlichen Effekt; ein Treffer im lokalen Slice hat eine wesentlich geringere Latenz.) Dieser Effekt kann einen DRAM-Cache schneller machen als ein SRAM-Cache bei hohen Kapazitäten, da der DRAM physisch kleiner ist.
Ein weiterer Faktor ist, dass die meisten L2- und L3-Caches den seriellen Zugriff auf Tags und Daten verwenden, wobei die meisten L1-Caches parallel auf Tags und Daten zugreifen. Dies ist eine Energieoptimierung (L2-Missraten sind höher als L1-Missraten, sodass der Datenzugriff mit höherer Wahrscheinlichkeit verschwendet wird; L2-Datenzugriff erfordert im Allgemeinen mehr Energie - bezogen auf die Kapazität -), und L2-Caches weisen normalerweise eine höhere Assoziativität auf was bedeutet, dass mehr Dateneinträge spekulativ gelesen werden müssten). Wenn Sie auf den Tag-Abgleich warten müssen, bevor Sie auf die Daten zugreifen, erhöht sich natürlich die zum Abrufen der Daten erforderliche Zeit. (Der L2-Zugriff beginnt normalerweise auch erst, nachdem ein L1-Fehltreffer bestätigt wurde, sodass die Latenzzeit der L1-Fehlschlagserkennung zur Gesamtzugriffslatenz von L2 addiert wird.)
Außerdem ist der L2-Cache physisch weiter von der Ausführungsmaschine entfernt. Ein Platzieren des L1-Datencaches in der Nähe der Ausführungsengine (damit der häufige Fall des Treffers L1 schnell ist) bedeutet im Allgemeinen, dass L2 weiter entfernt angeordnet werden muss.
Schauen Sie sich einmal an: Warum ist die Kapazität des Cache-Speichers so begrenzt?
Die gesamte Siliziumfläche (maximale Chipgröße) ist begrenzt. Das Platzieren von mehr Kernen oder mehr Cache oder eine höhere Hierarchie der Caches ist ein Kompromiss zwischen dem Design.
Schauen Sie sich folgendes an: L2- und L3-Cache-Unterschied?
Auf modernen CPU-Kernen gibt es normalerweise drei Cache-Ebenen:
- Der L1-Cache ist sehr klein und sehr eng an die tatsächlichen Verarbeitungseinheiten der CPU gebunden. Er kann Datenanforderungen normalerweise innerhalb von 3 CPU-Takt-Ticks erfüllen. Der L1-Cache liegt je nach CPU-Architektur bei etwa 4-32 KB und ist zwischen Instruktions- und Datencaches aufgeteilt.
- Der L2-Cache ist im Allgemeinen größer, aber etwas langsamer und im Allgemeinen an einen CPU-Kern gebunden. Neuere Prozessoren haben in der Regel einen Cache von 512 KB pro Kern, und dieser Cache unterscheidet nicht zwischen Instruktions- und Datencache, sondern ist ein einheitlicher Cache. Ich glaube, die Antwortzeit für In-Cache-Daten liegt normalerweise unter 20 CPU-Ticks.
- Der L3-Cache wird tendenziell von allen auf der CPU vorhandenen Kernen gemeinsam genutzt und ist wieder viel größer und langsamer, aber er ist immer noch viel schneller als der Hauptspeicher. Der L3-Cache liegt heutzutage in der Größenordnung von 4-8 MB.
- Hauptspeicher (~ 16 G, Shared).
Schauen Sie unter: https://stackoverflow.com/questions/4666728/size-of-l1-cache-and-l2-cache
L1 ist näher am Prozessor und wird bei jedem Speicherzugriff aufgerufen, so dass seine Zugriffe sehr häufig sind. Daher müssen die Daten sehr schnell zurückgegeben werden (normalerweise innerhalb eines Taktzyklus). Es erfordert außerdem viele Lese- / Schreibanschlüsse und eine hohe Zugriffsbandbreite. Das Erstellen eines großen Cache mit diesen Eigenschaften ist nicht möglich. Daher halten Designer es bei den meisten Prozessoren heute klein, z. B. 32 KB.
Auf L2 wird nur bei Fehlschlägen von L1 zugegriffen, sodass die Zugriffe seltener sind (normalerweise 1/20 der L1). Daher kann L1 für den Zugriff mehrere Zyklen benötigen (normalerweise unter 10 gehalten) und weniger Ports haben. Dies ermöglicht es Designern, es größer zu machen.
Beide zahlen sehr unterschiedliche Rollen. Wenn L1 größer gemacht wird, erhöht dies die L1-Zugriffslatenz, wodurch die Leistung drastisch reduziert wird, da alle Ladungen und Speicher langsamer werden. Daher ist die Größe von L1 kaum zu diskutieren.
Wenn wir L2 entfernen, müssen L1-Fehlfunktionen auf die nächste Ebene gehen, etwa den Speicher. Dies bedeutet, dass viel Zugriff auf den Speicher gehen wird, was bedeutet, dass wir mehr Speicherbandbreite benötigen, was bereits ein Engpass ist. Daher ist das Halten der L2 günstig.
Experten bezeichnen L1 häufig als Latenzfilter (da dies die Häufigkeit von L1-Treffern beschleunigt) und L2 als Bandbreitenfilter, da die Speicherbandbreitenauslastung reduziert wird.
Hinweis: Ich habe in meinem Argument eine 2-Level-Cache-Hierarchie angenommen, um es einfacher zu machen. In fast allen heutigen Multicore-Chips gibt es auch einen L3. Bei diesen Chips spielt L3 die Rolle des Speicherbandbreitenfilters. L2 spielt jetzt die Rolle des On-Chip-Bandbreitenfilters, dh, er reduziert den Zugriff auf die On-Chip-Interconnect und das L3 (so können Entwickler Interconnects mit niedriger Bandbreite wie einen Ring und einen langsamen Single-Port-L3 einrichten, der es ihnen ermöglicht L3 größer machen).
Vielleicht ist es erwähnenswert, dass die Anzahl der Ports ein sehr wichtiger Entwurfspunkt ist, da er bestimmt, wie viel Chipfläche der Cache belegen wird. Ports fügen dem Cache Drähte hinzu, was viel Chipfläche und Energie verbraucht.
Werfen Sie einen Blick auf: http://en.wikipedia.org/wiki/Static_random-access_memory
Statischer Direktzugriffsspeicher (SRAM oder statisches RAM) ist eine Art Halbleiterspeicher, der eine bistabile Zwischenspeicherschaltung zum Speichern jedes Bits verwendet. Der Begriff statisch unterscheidet ihn vom dynamischen RAM (DRAM), der periodisch aktualisiert werden muss. SRAM weist eine Remanenz von Daten auf, 1, aber es ist im herkömmlichen Sinn immer noch flüchtig, dass Daten schließlich verloren gehen, wenn der Speicher nicht mit Strom versorgt wird.