Gibt es eine Entsprechung zwischen Cache-Größe und Zugriffslatenz? Wenn alle anderen Dinge gleich sind, arbeitet ein größerer Cache langsamer? Wenn ja warum? Wie viel langsamer?
Gibt es eine Entsprechung zwischen Cache-Größe und Zugriffslatenz? Wenn alle anderen Dinge gleich sind, arbeitet ein größerer Cache langsamer? Wenn ja warum? Wie viel langsamer?
Antworten:
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 aufeinanderfolgende Speichertyp, den ich aufgelistet habe, ist größer, aber langsamer als der vorherige.
Also, lasst uns das Beste aus beiden Welten haben, lasst uns eure Hände so groß machen wie ein Digikey-Lagerhaus! Nein, es funktioniert nicht, denn jetzt sind sie nicht mehr wirklich Hände. Sie sind eine Kanonenkugel, die dich beschwert.
Der Grund, warum größere Speicher langsamer zugänglich sind, ist die Entfernung . Größerer Speicher ist im Durchschnitt weiter von Ihnen entfernt. Dies gilt für physische Elemente und für RAM.
Der Computerspeicher nimmt physischen Platz ein. Aus diesem Grund sind größere Speicher physisch größer und einige Stellen in diesem Speicher werden physisch weiter entfernt sein. Der Zugriff auf weit entfernte Dinge dauert aufgrund der Geschwindigkeitsbegrenzungen länger. Bei Ihren 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 übliche Verwendung synchroner Takte. Selbst wenn Geld keine Rolle spielen würde und Sie von der schnellsten heute verfügbaren RAM-Technologie so viel kaufen könnten, wie Sie möchten, könnten Sie nicht von all dem profitieren. Legen Sie ein Blatt L1-Cache im A4-Format aus, wenn Sie möchten, und platzieren Sie Ihre CPU genau in der Mitte. Wenn die CPU direkt in der Ecke des Speichers auf einen Speicher 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 und Tore und Treiber ein. Das wird Ihre 3-GHz-CPU ernsthaft verlangsamen.
Da synchrone Logik viel einfacher zu entwerfen ist als asynchrone Logik, wird ein 'RAM-Block' 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 das Worst-Case-Timing des entferntesten Speicherorts zu bewältigen. Dies bedeutet, dass entfernte Speicherorte jetzt lokale Speicherplätze zurückhalten, die schneller getaktet werden könnten. Das Beste wäre also, den Speicher in Zonen zu unterteilen. Der nächstgelegene und kleinste Abschnitt des Caches würde die schnellste Uhr verwenden. Der nächstgelegene und kleinste Abschnitt würde eine etwas langsamere Uhr usw. verwenden.
Und jetzt haben Sie L1 & L2 Caches und RAM.
Das bringt uns zum nächsten Grund, dem Stromverbrauch.
Der Cache verbraucht tatsächlich viel 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 einer Erhöhung des Stromverbrauchs führen. Für bestimmte Anwendungen (mobil, eingebettet) besteht jetzt ein noch größerer Anreiz, den Cache klein zu halten.
Siehe Kompromisse beim Cache-Design zur Leistungs- und Leistungsoptimierung: Eine Fallstudie (Ching-Long Su und Alvin M. Despain, 1995).
Wenn Sie alle Faktoren für Wirtschaftlichkeit, Leistung und Stromverbrauch weglassen, lautet die Antwort auf Ihre Frage: Dies 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, die Größe des L1-Cache unterscheidet sich jedoch um den Faktor 3.
Der Grund für die konstante Latenz zu L1 über mehrere verschiedene Prozessoren im obigen Test liegt in der Mikroarchitektur des Caches: Der Cache-Zugriff selbst (Abrufen von Daten aus dem Speicher) dauert nur einen einzigen Taktzyklus. Zusätzliche drei Zyklen werden zum Dekodieren des Zugriffs, Überprüfen der Datenpräsenz und mehr verwendet ... Die Anzahl der zusätzlichen Stufen ist für alle 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 auch die Logik, die alle erforderlichen Operationen für einen Cache-Lesevorgang ausführt, groß werden. Irgendwann wäre die Ausbreitungsverzögerung durch all diese Logik zu lang und die Operationen, die zuvor nur einen einzigen Taktzyklus benötigt hatten, müssten in mehrere Taktzyklen aufgeteilt werden. Dies erhöht die Latenz.
Unter der Annahme, dass der betreffende Cache in SRAM implementiert ist, sind die Module, die am meisten von der Cache-Größe betroffen sind: Zeilendecoder und Muxes. Bei sehr großen Caches sind jedoch auch Erfassungsverstärker betroffen: Ein kleinerer Spannungshub auf einer Bitleitung aufgrund einer höheren Kapazität erfordert einen "stärkeren" Erfassungsverstärker. Der schwerwiegendste Effekt auf die Logikgeschwindigkeit wird durch die Kapazität der Drahtverbindungen hinzugefügt - diese Kapazität hat mehr als eine lineare Abhängigkeit von der SRAM-Größe. Die genauen Details sind implementierungsspezifisch.
Jetzt sind L1-Caches in ihren Latenzen ziemlich stabil, da 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 eine 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: dem Verlauf der Zugriffe auf den Speicher aller Kerne.
Zusammenfassung
Wie Sie sehen, 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 in keiner nennenswerten Weise beeinflusst.
Für interessierte Leser:
Diese Referenz ist eine sehr gründliche Analyse der Leistungsfaktoren moderner CPUs. Es gibt dort viel Cache-bezogenes Material. Erfordert ein tiefes Verständnis der Prinzipien der Computerarchitektur und der Mikroarchitektur (alternativ - eine gute Zusammenfassung der Themen, die man kennen muss, um auf diesem Gebiet professionell zu werden).
CPU-Cache-Testingenieur hier - Dave Tweed in den Kommentaren hat die richtigen Erklärungen. Der Cache ist so dimensioniert, dass die Leistung zum erwarteten Preis der CPU maximiert wird. Der Cache ist im Allgemeinen der größte Verbraucher des Speicherplatzes, und daher macht seine Größe einen großen wirtschaftlichen (und Leistungs-) Unterschied.
Schauen Sie sich die Seite der Intel Ivy Bridge-CPU-Familie an: http://ark.intel.com/products/codename/29902/Ivy-Bridge
Das Top-End-Xeon verfügt über 30 MB Cache, 12 Kerne und kostet etwa 2700 US-Dollar. Das untere Ende des i3 mit 3 MB Cache (i3-3217) kostet nur 500 US-Dollar für einen ganzen Laptop (ich kann es nicht einzeln finden).
Der Xeon bietet die ultimative Leistung, kostet aber auch mehr in Herstellung und Test. Der i3 ist viel billiger, aber der Kompromiss ist eine kleinere Chipgröße, von der der Cache den größten Teil ausmacht.