Gibt es einen Zusammenhang zwischen Cache-Größen und Zugriffslatenz? Wenn alle anderen Dinge gleich bleiben, arbeitet ein größerer Cache langsamer? Wenn ja warum? Wie viel langsamer?
Gegenstände in Ihren Händen sind schneller zugänglich als Gegenstände in Ihren Taschen, die schneller zugänglich sind als Gegenstände in Ihrem Schrank, die schneller zugänglich sind als Gegenstände bei Digikey. Jeder nachfolgende Speichertyp, den ich aufgelistet habe, ist größer, aber langsamer als der vorherige.
Also, lassen Sie uns das Beste aus beiden Welten haben, lassen Sie uns Ihre Hände so groß wie ein Digikey-Lagerhaus machen! Nein, das geht nicht, denn jetzt sind es nicht mehr wirklich Hände. Sie sind eine Kanonenkugel, die dich niederdrückt.
Der Grund, warum auf größere Speicher langsamer zugegriffen werden kann, ist die Entfernung . Größere Speicher sind im Durchschnitt weiter von Ihnen entfernt. Dies gilt für physische Elemente und für RAM.
Computerspeicher nimmt physischen Platz ein. Aus diesem Grund sind größere Erinnerungen physisch größer, und einige Orte in diesem Speicher werden physisch weiter entfernt sein. Dinge, die weit entfernt sind, brauchen aufgrund der Geschwindigkeitsbegrenzungen länger, um darauf zuzugreifen. Im Falle Ihrer Taschen und Digikey sind die Geschwindigkeitsbegrenzungen die Geschwindigkeit Ihrer Arme und die Geschwindigkeitsbegrenzungen auf der Autobahn.
Im Fall von RAM sind die Geschwindigkeitsbegrenzungen die Ausbreitungsgeschwindigkeit elektrischer Signale, die Ausbreitungsverzögerung von Gattern und Treibern und die gemeinsame Verwendung von synchronen Takten. Selbst wenn Geld keine Rolle spielen würde und Sie so viel von der schnellsten heute verfügbaren RAM-Technologie kaufen könnten, wie Sie wollen, könnten Sie nicht von allem profitieren. Legen Sie ein A4-Blatt mit L1-Cache aus, wenn Sie möchten, und platzieren Sie Ihre CPU direkt in der Mitte. Wenn die CPU auf einen Speicher direkt in der Ecke des Speichers zugreifen möchte, dauert es buchstäblich eine Nanosekunde, bis die Anforderung dort ankommt, und eine Nanosekunde, bis sie zurückkommt. Und das schließt nicht alle Ausbreitungsverzögerungen durch Tore und Treiber ein. Das wird Ihre 3-GHz-CPU ernsthaft verlangsamen.
Da die synchrone Logik viel einfacher zu entwerfen ist als die asynchrone Logik, wird ein „Block“ des RAM mit demselben Takt getaktet. Wenn Sie den gesamten Speicher zu einem L1-Cache machen möchten, müssen Sie das gesamte Los mit einem langsamen Takt takten, um mit dem Worst-Case-Timing des am weitesten entfernten Speicherorts fertig zu werden. Das bedeutet, dass entfernte Speicherplätze nun lokale zurückhalten, die schneller hätten getaktet werden können. Das Beste wäre also, den Speicher in Zonen einzuteilen. Der nächste und kleinste Abschnitt des Cache würde den schnellsten Takt verwenden. Der nächste nächste und kleinste Abschnitt würde eine etwas langsamere Uhr usw. verwenden.
Und jetzt haben Sie L1- und L2-Caches und RAM.
Was uns zum nächsten Grund bringt, dem Stromverbrauch.
Der Cache verbraucht tatsächlich eine erhebliche Menge an Strom. Nicht nur der Speicher selbst, sondern die gesamte ihn umgebende Logik, die die Zuordnung zwischen den Cache-Zeilen und dem Hauptspeicher übernimmt. Das Erhöhen der Leistung dieser zusätzlichen Logik kann zu einem Anstieg des Stromverbrauchs führen. Jetzt haben Sie für bestimmte Anwendungen (mobil, eingebettet) noch mehr Anreiz, den Cache klein zu halten.
Siehe Cache Design Trade-offs for Power and Performance Optimization: A Case Study (Ching-Long Su und Alvin M. Despain, 1995).
Wenn Sie alle Faktoren für Wirtschaftlichkeit / Leistung / Stromverbrauch außer Acht lassen, lautet die Antwort auf Ihre Frage: Es hängt von vielen mikroarchitektonischen Faktoren ab.
Als Beispiel siehe diese Referenz – die gemessene L1-Zugriffslatenz für alle getesteten Prozessoren beträgt 4 Taktzyklen. Die Frequenzen der Prozessoren sind nahezu gleich, aber die Größe des L1-Cache unterscheidet sich um bis zu Faktor 3.
Der Grund für die konstante Latenz zu L1 über mehrere verschiedene Prozessoren im obigen Test liegt in der Mikroarchitektur des Cache: Der Cache-Zugriff selbst (das Abrufen von Daten aus dem Speicher) dauert nur einen einzigen Taktzyklus. Weitere drei Zyklen werden für die Dekodierung des Zugriffs, die Prüfung auf Datenpräsenz und mehr aufgewendet... Die Anzahl der zusätzlichen Stufen ist bei allen getesteten Prozessoren gleich, daher sind die Zugriffslatenzen gleich.
Trotz des obigen Beispiels sollte man nicht zu dem Schluss kommen, dass die Cache-Latenz unabhängig von der Cache-Größe ist. Wenn jemand versuchen würde, einen lächerlich großen L1-Cache zu implementieren, würde die Logik, die alle erforderlichen Operationen für einen Cache-Lesevorgang durchführt, ebenfalls groß werden. Irgendwann wäre die Ausbreitungsverzögerung durch all diese Logik zu lang und die Operationen, die zuvor nur einen einzigen Taktzyklus gedauert hätten, müssten in mehrere Taktzyklen aufgeteilt werden. Dadurch erhöht sich die Latenz.
Unter der Annahme, dass der fragliche Cache in SRAM implementiert ist, sind die Module, die am meisten von der Cache-Größe betroffen sind: Zeilendekoder und Multiplexer. Bei sehr großen Caches sind jedoch sogar Leseverstärker betroffen: Ein kleinerer Spannungshub auf einer Bitleitung aufgrund einer höheren Kapazität erfordert einen "stärkeren" Leseverstärker. Die stärkste Auswirkung auf die Logikgeschwindigkeit wird jedoch durch die Kapazität der Drahtverbindungen hinzugefügt - diese Kapazität hängt mehr als linear von der SRAM-Größe ab. Die genauen Details sind implementierungsspezifisch.
Jetzt sind L1-Caches in ihren Latenzen ziemlich stabil, weil ihre Leistung am wichtigsten ist. Wenn Sie versuchen, L2- und L3-Caches zu analysieren, wird das Bild sehr kompliziert.
Das Bild wird viel komplizierter, wenn Sie Multi-Core-Prozessoren betrachten – sie verfügen über zusätzliche Logik zur Gewährleistung der Cache-Kohärenz . Dies führt zu einem zusätzlichen Faktor, der die Latenz des Cache-Zugriffs beeinflusst: die Historie der Zugriffe auf den Speicher aller Kerne.
Zusammenfassung
Wie Sie sehen können, ist Ihre Frage alles andere als trivial und kann nicht vollständig beantwortet werden. Wenn Sie jedoch wirtschaftlich und leistungsmäßig bevorzugte Caches in Betracht ziehen, würde ich sagen, dass ihre Größe die Latenz nicht nennenswert beeinflusst.
Für interessierte Leser:
Diese Referenz ist eine sehr gründliche Analyse der Leistungsfaktoren moderner CPUs. Da ist viel Cache-bezogenes Material drin. Erfordert ein tiefes Verständnis der Computerarchitektur und der Prinzipien der Mikroarchitektur (alternativ - eine gute Zusammenfassung von Themen, die man kennen muss, um ein Fachmann auf diesem Gebiet zu werden).
CPU-Cache-Testingenieur hier - Dave Tweed in den Kommentaren hat die richtigen Erklärungen. Der Cache ist so bemessen, dass die Leistung zum erwarteten Preis der CPU maximiert wird. Der Cache ist im Allgemeinen der größte Verbraucher von Die-Speicherplatz und daher macht seine Größe einen großen wirtschaftlichen (und Leistungs-)Unterschied.
Werfen Sie einen Blick auf die Seite der Ivy-Bridge-CPU-Familie von Intel: http://ark.intel.com/products/codename/29902/Ivy-Bridge
Das Top-End-Xeon verfügt über 30 MB Cache, hat 12 Kerne und kostet etwa 2700 US-Dollar. Das untere Ende i3 mit 3 MB Cache (i3-3217) kostet nur 500 Dollar für einen ganzen Laptop (ich kann es nicht einzeln finden).
Der Xeon bietet die ultimative Leistung, kostet aber auch mehr in der Herstellung und beim Testen. Der i3 ist viel billiger, aber der Kompromiss ist eine kleinere Die-Größe, von der der Cache den größten Teil ausmacht.
Paul A. Clayton