Speicherhierarchie

Diagramm der Computerspeicherhierarchie

Im Rechnerarchitektur, das Speicherhierarchie trennt Computerspeicher in eine Hierarchie basierend auf der Antwortzeit. Da die Reaktionszeit, Komplexität und Kapazität miteinander verbunden sind, können die Ebenen auch durch ihre Leistung und Kontrolle der Technologien unterschieden werden.[1] Gedächtnishierarchie beeinflusst die Leistung im Bereich der Computerarchitektur, Algorithmusvorhersagen und niedrigere Ebene Programmierung Konstrukte mit Referenzort.

Das Entwerfen einer hohen Leistung erfordert die Berücksichtigung der Einschränkungen der Speicherhierarchie, d. H. Die Größe und Fähigkeiten jeder Komponente. Jede der verschiedenen Komponenten kann als Teil einer Hierarchie von Erinnerungen angesehen werden (m1, m2, ..., mn), in dem jedes Mitglied mi ist normalerweise kleiner und schneller als das nächsthöchste Mitglied mi+1 der Hierarchie. Um das Warten durch höhere Pegel zu begrenzen, reagiert ein niedrigerer Pegel, indem ein Puffer gefüllt und dann die Aktivierung der Übertragung signalisiert.

Es gibt vier Hauptspeicherwerte.[1]

  • InternProzessorregister und Zwischenspeicher.
  • Haupt - das System RAM und Controller -Karten.
  • Online-Massenspeicher-Sekundärspeicher.
  • Offline-Massenspeicher-Tertiär- und Offline-Speicher.

Dies ist eine allgemeine Speicherhierarchiestrukturierung. Viele andere Strukturen sind nützlich. Zum Beispiel kann ein Paging -Algorithmus als Stufe für betrachtet werden virtueller Speicher beim Entwerfen a Rechnerarchitekturund man kann eine Ebene von umfassen Nahe Lagerung Zwischen Online- und Offline -Speicher.

Eigenschaften der Technologien in der Speicherhierarchie

  • Das Hinzufügen von Komplexität verlangsamt die Speicherhierarchie.[2]
  • Die CMOX -Speichertechnologie erstreckt sich den Flash -Speicherplatz in der Speicherhierarchie[3]
  • Eine der Hauptmethoden, um die Systemleistung zu erhöhen, besteht darin, zu minimieren, wie weit man in der Speicherhierarchie hinuntersteht, um Daten zu manipulieren.[4]
  • Latenz und Bandbreite sind zwei Metriken, die mit Caches verbunden sind. Keiner von beiden ist einheitlich, aber spezifisch für eine bestimmte Komponente der Speicherhierarchie.[5]
  • Die Vorhersage, wo in der Speicherhierarchie die Daten vorhanden sind, ist schwierig.[5]
  • ... Die Position in der Speicherhierarchie bestimmt die Zeit, die für den Vorab -Vorgang erforderlich ist.[5]

Beispiele

Speicherhierarchie eines AMD -Bulldozer -Servers.

Die Anzahl der Ebenen in der Speicherhierarchie und die Leistung auf jeder Ebene hat im Laufe der Zeit zugenommen. Die Art des Speichers oder der Speicherkomponenten ändert sich auch historisch.[6] Zum Beispiel die Speicherhierarchie eines Intel Haswell Mobile[7] Prozessor circa 2013 ist:

  • Prozessorregister - Der schnellstmögliche Zugang (normalerweise 1 CPU -Zyklus). Ein paar tausend Bytes Größe
  • Zwischenspeicher
    • Stufe 0 (L0) Mikrooperationen Cache - 6.144 Bytes (6 Kib[Originalforschung])[8] in Größe
    • Stufe 1 (L1) Anweisung Cache - 128 Kib[Originalforschung] in Größe
    • Datencache Level 1 (L1) - 128 KIB[Originalforschung] in Größe. Die beste Zugangsgeschwindigkeit liegt bei 700 Gb/s[9]
    • Stufe 2 (L2) Anweisung und Daten (gemeinsam genutzt) - 1 MiB[Originalforschung] in Größe. Die beste Zugangsgeschwindigkeit beträgt ungefähr 200 GB/s[9]
    • Stufe 3 (L3) Shared Cache - 6 MIB[Originalforschung] in Größe. Die beste Zugangsgeschwindigkeit liegt bei etwa 100 GB/s[9]
    • Stufe 4 (L4) Shared Cache - 128 MIB[Originalforschung] in Größe. Die beste Zugangsgeschwindigkeit liegt bei 40 GB/s[9]
  • Haupterinnerung (Hauptspeicher) - Gib[Originalforschung] in Größe. Die beste Zugangsgeschwindigkeit beträgt ca. 10 GB/s.[9] Im Fall von a Numa Maschine, Zugangszeiten sind möglicherweise nicht einheitlich
  • Festplattenspeicher (Zweitlager) - Terabyte in Größe. Ab 2017 ist die beste Zugangsgeschwindigkeit von einem Verbraucher Solid State Drive ist ungefähr 2000 MB/s[10]
  • Nahe Lagerung (Tertiärlagerung) - Bis zu Exabyte in Größe. Ab 2013 beträgt die beste Zugangsgeschwindigkeit etwa 160 MB/s[11]
  • Offline -Speicher

Die niedrigeren Ebenen der Hierarchie - von Scheiben nach unten - sind auch als bekannt als als abgestufter Speicher. Die formelle Unterscheidung zwischen Online-, Nah- und Offline -Speicher ist:[12]

  • Online -Speicher ist sofort für E/A verfügbar.
  • Nahe Speicher ist nicht sofort verfügbar, kann aber ohne menschliche Intervention online gestellt werden.
  • Offline -Speicher ist nicht sofort verfügbar und erfordert einige menschliche Interventionen, um online zu bringen.

Zum Beispiel sind immer drehende Scheiben online, während Sie sich down-down-down-down-down drehen, wie z. B. eine massive Reihe von Leerlaufscheiben (DIENSTMÄDCHEN), sind nahezu Zeile. Abnehmbare Medien wie Bandpatronen, die automatisch geladen werden können, wie in a Bandbibliothek, sind nahe, während Patronen, die manuell geladen werden müssen, offline sind.

Am modernsten CPUs sind so schnell, dass für die meisten Programm -Workloads der Engpass das ist Referenzort des Speicherzugriffs und der Effizienz der zwischengespeichert und Speicherübertragung zwischen verschiedenen Ebenen der Hierarchie. Infolgedessen verbringt die CPU einen Großteil ihrer Zeit im Leerlauf und wartet darauf, dass die Speicher -I/O -Vervollständigung abgeschlossen ist. Dies wird manchmal das genannt PlatzkostenDa ein größeres Speicherobjekt eher ein kleines/schnelles Niveau überfließt und eine größere/langsamere Ebene benötigt. Die resultierende Last für den Speichergebrauch ist als bekannt als Druck (beziehungsweise Druck unterscheiden, Cache -Druckund (Haupt) Speicherdruck). Begriffe für Daten, die auf einer höheren Ebene fehlen und von einer niedrigeren Ebene abgerufen werden müssen, sind jeweils: Verschütten registrieren (wegen Druck unterscheiden: Registrieren Sie sich bei Cache), Cache Miss (Cache zum Hauptspeicher) und (hart) Seitenfehler (Hauptspeicher an die Festplatte).

Modern Programmiersprachen Nehmen Sie hauptsächlich zwei Speicherebenen, Hauptspeicher und Speicher Speicher an, obwohl in Montagesprache und Inline -Assembler in Sprachen wie z. CRegister können direkt zugegriffen werden. Die optimale Vorteile der Speicherhierarchie erfordert die Zusammenarbeit von Programmierern, Hardware und Compilern (sowie zugrunde liegende Unterstützung durch das Betriebssystem):

  • Programmierer sind für das Verschieben von Daten zwischen Festplatte und Speicher durch Datei -E/A verantwortlich.
  • Hardware ist für das Verschieben von Daten zwischen Speicher und Caches verantwortlich.
  • Compiler optimieren sind für das Generieren von Code verantwortlich, die bei der Ausführung dazu führen, dass die Hardware Caches und Register effizient verwendet.

Viele Programmierer nehmen eine Speicherebene an.Dies funktioniert einwandfrei, bis die Anwendung eine Leistungswand erreicht.Dann wird die Speicherhierarchie während bewertet Code Refactoring.

Siehe auch

Verweise

  1. ^ a b Spielzeug, Flügel;Zee, Benjamin (1986). Computerhardware/Softwarearchitektur. Prentice Hall. p.30. ISBN 0-13-163502-6.
  2. ^ Schreibkombination
  3. ^ "Gedächtnishierarchie".Unitity Semiconductor Corporation.Archiviert von das Original am 5. August 2009. Abgerufen 16. September 2009.
  4. ^ Pádraig Brady. "Multi-Core". Abgerufen 16. September 2009.
  5. ^ a b c Van der Pas, Ruud (2002). "Speicherhierarchie in Cache-basierten Systemen" (PDF). Santa Clara, Kalifornien: Sun Microsystems: 26. 817-0742-10. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  6. ^ "Speicher & Speicher - Zeitleiste der Computergeschichte - Computergeschichte Museum". www.computerHistory.org.
  7. ^ Crothers, Brooke. "Densezierin von Intels Top -Grafiken in Apples 15 -Zoll -MacBook Pro - CNET" an Apple "analysieren". News.cnet.com. Abgerufen 2014-07-31.
  8. ^ "Intel's Haswell Architecture analysiert: Aufbau eines neuen PCs und eines neuen Intel". Anandtech. Abgerufen 2014-07-31.
  9. ^ a b c d e "Sisoftware Zone".Sisoftware.co.uk.Archiviert von das Original 2014-09-13. Abgerufen 2014-07-31.
  10. ^ "Samsung 960 Pro M.2 NVMe SSD Review".storagerview.com. Abgerufen 2017-04-13.
  11. ^ "Ultrium - LTO -Technologie - Ultrium -Generationen" ".Lto.org.Archiviert von das Original Am 2011-07-27. Abgerufen 2014-07-31.
  12. ^ Pearson, Tony (2010). "Richtige Verwendung des Begriffs nahezu Zeile". IBM Developerworks, Innere Systemspeicher. Archiviert von das Original Am 2018-11-27. Abgerufen 2015-08-16.