Gibt es einen Zusammenhang zwischen Cache-Größe und Zugriffslatenz?

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?

Wenn Sie daran interessiert sind, einige Kompromisse beim Cache-Design zu untersuchen, hat HP das Tool CACTI entwickelt , das Schätzungen für Latenz und Stromverbrauch basierend auf Designmerkmalen liefert. Ein Webinterface für die Version 5.3 ist ebenfalls verfügbar .

Antworten (3)

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

+1 Ich mag deine Antwort. Trifft alle relevanten Punkte und sichert es auch. Leicht zu lesen
ist das richtig? Antwort basiert auf der Verzögerung der Lichtgeschwindigkeit von einem Zoll gegenüber mehreren Zoll?
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 A4-Cache nicht praktikabel ist. Ich glaube, OP hat nach einer angemessenen Erhöhung der Cache-Größe gefragt und wie sich diese Erhöhung auf die Latenz des Cache-Zugriffs auswirkt.
@AndyzSmith - Es ist eine grobe Übertreibung und Vereinfachung, aber ich denke, es bringt den allgemeinen Punkt zum Ausdruck, dass dieser L1-Cache irgendwann nicht mehr unbegrenzt vergrößert werden kann. Irgendwann kommen die Gesetze der Physik und verlangsamen es.
Die Verzögerung eines On-Chip-Signals ist nicht die Lichtgeschwindigkeit, sondern ein komplizierterer Wert, der berechnet wird, indem die Netz-/Draht- plus angesteuerte Gate-Kapazität als RLC-Netzwerk betrachtet wird. Es ist nicht lang genug, um eine Übertragungsleitung zu sein. Je länger das Netz, desto größer muss das Fahrtor sein, oder man muss Buffer als Repeater einbauen. Das alles verbraucht auch mehr Strom.
Die Behauptung hier ist also, dass die Größe des Caches hauptsächlich durch die Latenz des Verbindungskabels bestimmt wird? Ich würde vermuten, dass es auch ein großes Problem mit der Verzögerung gibt, die durch die Adressierungsschaltung hinzugefügt wird, da diese Schaltung immer diskretere Orte adressieren muss. Nein? Ich bin mir nicht sicher. Ich meine, wenn Sie die Adresszeile und einen Adressdecoder haben, wird dieser Adressdecoder langsamer und hat mehr "Phasen" oder Blöcke oder was auch immer, je mehr Adressen Sie haben? Ich würde nicht vermuten, dass die Zeit zum Decodieren einer Adresse unabhängig von der Größe des Adressraums konstant ist.
@ pjc50 "Je länger das Netz, desto größer muss das treibende Gate sein" Meinst du "getriebenes (MOSFET) Gate" im Gegensatz zum Fahren?
Nein, treibendes (Logik-) Gate.

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

Danke für die Antwort! Ihre und die Antworten von @Rocketmagnet ergänzen sich ziemlich gut. Ich hoffe, ich konnte beides auswählen. Ich habe bereits meine Kopie der zitierten Referenz und interessiere mich in letzter Zeit sehr für das Thema, daher die Frage.
Warum hängt die Logik zum Ausführen einer Leseoperation von der Cache-Größe ab? Warum wird es "zu lang", bei welcher bestimmten Anzahl von Adressen gibt es einen diskreten Sprung? oder wenn kein diskreter Sprung, wie lautet die Formel für die Zugriffszeit im Vergleich zur Größe?
können Sie genau sagen, welche Komponente: "Die kritische Wiederholung ist dann ein Addierer, ein Decoder, die SRAM-Wortleitung, die SRAM-Bitleitung (en), die Leseverstärker (s), die Byte-Steering-Muxes und der Bypass Muxen." bewirkt, dass die Logik groß wird? en.wikipedia.org/wiki/Sum_addressed_decoder
@AndyzSmith, die Formel für Zugriffszeit und Größe kann nur von jemandem angegeben werden, der den Cache entwirft und simuliert. In der von mir geposteten Referenz können Sie sehen, dass es 4 Taktzyklen dauert, um Daten von L1 zu erhalten, aber niemand versucht, die mit diesen Lesevorgängen verbundenen Schlupfzeiten abzuschätzen. Die Frage nach einer Formel ist ohne viele zusätzliche implementierungsspezifische Informationen keine praktische Frage.
@AndyzSmith, unter der Annahme, dass der betreffende Cache in SRAM implementiert ist, sind die Module, die am stärksten von der Cache-Größe betroffen sind: Zeilendecoder und Muxes. Bei sehr großen Caches sind jedoch sogar Leseverstärker betroffen: kleinerer Spannungshub auf einer Bitleitung aufgrund höherer Kapazität -> "stärkerer" 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. Auch hier sind die Details implementierungsspezifisch.

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.

Sehr interessante Antwort. Aber wie ich in der Frage sagte, suche ich nicht nach der sparsamen, 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?