Gibt es eine Entsprechung zwischen Cache-Größe und Zugriffslatenz?

9

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?

ivanmp
quelle
1
Wenn Sie einige Kompromisse beim Cache-Design untersuchen möchten , hat HP das Tool CACTI entwickelt , das Schätzungen für Latenz und Stromverbrauch basierend auf den Designmerkmalen bereitstellt. Ein Webinterface für Version 5.3 ist ebenfalls verfügbar .
Paul A. Clayton

Antworten:

5

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).

Raketenmagnet
quelle
1
+1 Ich mag deine Antwort. Trifft alle relevanten Punkte und sichert sie ebenfalls. Leicht zu lesen
Gustavo Litovsky
ist das richtig? Die Antwort basiert auf der Verzögerung der Lichtgeschwindigkeit von einem Zoll gegenüber mehreren Zoll?
Andyz Smith
1
Diese Antwort ist als allgemeiner Überblick gut, aber ich vermute, dass sie die ursprüngliche Frage nicht beantwortet. Man sollte kein uArch-Experte sein, um zu erkennen, dass ein Cache im A4-Format nicht praktikabel ist. Ich glaube, OP hat nach einer vernünftigen Erhöhung der Cache-Größe gefragt und wie sich diese Erhöhung auf die Latenz des Cache-Zugriffs auswirkt.
Vasiliy
1
@AndyzSmith - Es ist eine grobe Übertreibung und Übervereinfachung, aber ich denke, es bringt den allgemeinen Punkt zum Ausdruck, dass der L1-Cache irgendwann nicht mehr unbegrenzt vergrößert werden kann. Irgendwann kommen die Gesetze der Physik ins Spiel und verlangsamen sie.
Raketenmagnet
Die Verzögerung eines On-Chip-Signals ist nicht die Lichtgeschwindigkeit, sondern ein komplizierterer Wert, der berechnet wird, indem die Kapazität von Netz / Draht plus angesteuertem Gate als RLC-Netzwerk betrachtet wird. Es ist nicht lang genug, um eine Übertragungsleitung zu sein. Je länger das Netz ist, desto größer muss das Treibergatter sein, oder Sie müssen Puffer als Repeater einfügen. All dies verbraucht auch mehr Strom.
pjc50
4

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).

Vasiliy
quelle
Danke für die Antwort! Ihre und @ Rocketmagnet Antworten sind ziemlich komplementär. Hoffe ich konnte beides wählen. Ich habe bereits meine Kopie der zitierten Referenz erhalten und war in letzter Zeit sehr interessiert an dem Thema, daher die Frage.
ivanmp
Warum hängt die Logik zum Ausführen einer Leseoperation von der Cache-Größe ab? Warum wird sie bei einer bestimmten Anzahl von Adressen zu lang? Gibt es einen diskreten Sprung? oder wenn kein diskreter Sprung, wie lautet die Formel für die Zugriffszeit im Verhältnis zur Größe?
Andyz Smith
Können Sie genau angeben, welche Komponente: "Die kritische Wiederholung ist also ein Addierer, ein Decodierer, die SRAM-Wortleitung, die SRAM-Bitleitung (en), die Erfassungsverstärker, die Byte-Lenkungsmuxe und der Bypass Muxes. " bewirkt, dass die Logik groß wird? en.wikipedia.org/wiki/Sum_addressed_decoder
Andyz Smith
@AndyzSmith, die Formel für Zugriffszeit und Größe kann nur von jemandem angegeben werden, der den Cache entwirft und simuliert. In der Referenz, die ich gepostet habe, können Sie sehen, dass es 4 Taktzyklen dauert, um Daten von L1 zu erhalten, aber niemand versucht, die mit diesen Lesevorgängen verbundenen Lücken zu schätzen. Das Nachfragen nach einer Formel ist ohne viele zusätzliche implementierungsspezifische Informationen keine praktische Frage.
Vasiliy
1
@AndyzSmith, 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: kleinerer Spannungshub auf einer Bitleitung aufgrund höherer Kapazität -> "stärkerer" 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. Auch hier sind die Details implementierungsspezifisch.
Vasiliy
3

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.

xyzio
quelle
2
Sehr interessante Antwort. Aber wie ich in der Frage festgestellt habe, suche ich nicht nach einer wirtschaftlichen, offensichtlichen Antwort. Was ich zu verstehen versuche, bezieht sich auf die Leistung beim Zugriff auf einen sehr (> 512 MB) großen Cache. Würde die Größe die Leistung des Caches beeinträchtigen?
ivanmp