Cache-oder Register - die ist schneller?
Tut mir Leid wenn dies der falsche Ort das zu Fragen, aber ich habe gesucht und immer gefunden, andere Antwort. Meine Frage ist:
Welche ist schneller? Cache-oder CPU-Register?
Nach mir, die registriert werden, was direkt das laden der Daten ausgeführt, während der cache ist nur ein Speicher-Platz in der Nähe oder intern in der CPU.
Hier sind die Quellen, die ich gefunden, die mich verwirrt:
2 für cache | 1 für Register
http://in.answers.yahoo.com/question/index?qid=20110503030537AAzmDGp
Cache ist schneller.
http://wiki.answers.com/Q/Is_cache_memory_faster_than_CPU_registers
Also, was ist wirklich?
InformationsquelleAutor der Frage user1255454 | 2013-01-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versucht, diese so intuitiv wie möglich, ohne verloren zu gehen in der Physik zugrunde, die Frage: gibt es einen einfachen Zusammenhang zwischen Geschwindigkeit und Entfernung in der Elektronik. Des weiteren machen Sie ein signal, die Reisen, die härter es bekommt zu bekommen, die das signal an das andere Ende des Drahtes, ohne das signal immer beschädigt. Es ist das "there ist no free lunch" - Prinzip von electronic design.
Die logische Folge ist, dass größere ist langsamer. Denn wenn Sie etwas größer sind dann zwangsläufig die Entfernungen sind zu bekommen größer. Etwas, das die automatische für eine Weile, schrumpfen die feature-Größe auf dem chip automatisch erzeugte einen schnelleren Prozessor.
Dem register Datei die in einem Prozessor ist klein und liegt dicht an der execution engine. Die am weitesten entfernt von dem Prozessor ist der RAM. Sie können pop der Fall ist, und tatsächlich sehen die Drähte zwischen den beiden. Dazwischen sitzen die caches, überbrücken die dramatische Kluft zwischen der Geschwindigkeit, die zwei Gegensätze. Jeder Prozessor verfügt über einen L1-cache, relativ klein ist (32 KB typ) und befindet sich am nächsten an den Kern. Weiter unten ist der L2-cache, relativ groß (4 MB-typ) und befindet sich weiter vom Kern. Mehr teure Prozessoren haben auch einen L3-cache, größer und weiter Weg.
Also, was folgt ist, dass ein CPU-register ist immer schneller als der L1-cache. Es ist am nächsten. Der Unterschied ist etwa einen Faktor 3.
InformationsquelleAutor der Antwort Hans Passant
Speziell auf x86-Architektur:
Lesen von register kann ein 1-Zyklus-Latenz, die auf Intel-Core-2-CPUs (und früheren Modellen), durch die Konstruktion bedingt: Wenn genug gleichzeitig-ausführen von Anweisungen Lesen von mehreren Registern, die CPU-register-bank werden nicht in der Lage, alle service requests in einem einzigen Zyklus. Diese Einschränkung ist nicht vorhanden in alle x86-chip, die auf den consumer-Markt seit 2010 (aber es ist in einigen 2010/11 veröffentlicht Xeon-chips).
L1-cache-Latenzen sind fest pro-Modell, aber neigen dazu, langsamer zu werden, wie Sie gehen zurück in die Zeit der älteren Modelle. Beachten Sie jedoch, drei Dinge:
x86-chips in diesen Tagen eine write-back-cache, der hat einen 0-Zyklus-Latenz. Wenn Sie einen Wert hinterlegen, um den Speicher es fällt in diesen cache, und die Instruktion ist in der Lage, um den Ruhestand in einem einzigen Zyklus. Speicher-Latenz nur dann sichtbar wird, wenn Sie genug hintereinander schreibt, füllen Sie die write-back-cache. Writeback-caches wurden prominent in der desktop-chip-design, seit etwa 2001, war aber weit fehlt der ARM-basierte mobile-chip-Märkten, bis viel mehr vor kurzem.
x86-chips in diesen Tagen haben speichern weiterleiten aus der write-back-cache. Wenn Sie das speichern einer Adresse, um die WB-cache und Lesen Sie dann wieder die gleiche Adresse mehrere Anweisungen weiter unten, die CPU holt sich den Wert aus der WB-cache statt den Zugriff auf den L1-Speicher. Dies reduziert die sichtbare Latenz auf, was erscheint ein L1 Anfrage für 1 Zyklus. Aber in der Tat, die L1 ist nicht darauf verwiesen werden, überhaupt in diesem Fall. Speichern weiterleiten hat auch noch einige andere Regeln, um richtig zu funktionieren, das variiert auch stark zwischen den verschiedenen CPUs auf dem Markt verfügbar heute (in der Regel 128-bit-Adresse, die Ausrichtung und abgestimmt operand Größe).
Store-forwarding-Funktion erzeugen kann false positiveswo-in der CPU denkt, dass die Adresse in der Rückschreiben-Puffer, basierend auf einem schnell partial-bits prüfen (in der Regel 10-14 bit, je nach chip). Es verwendet einen zusätzlichen Zyklus, um zu überprüfen, mit einem vollen überprüfen. Wenn das fehlschlägt, dann muss die CPU die Strecke wieder wie ein normaler Speicher anfordern. Diese verpassen, kann eine zusätzliche 1-2 Zyklen Latenz zum qualifying L1-cache-Zugriffe. In meinen Messungen, store-forwarding findet passieren sehr oft auf AMDs Bulldozer, zum Beispiel, genug, so dass seine L1-cache-Latenz über die Zeit ist etwa 10-15% höher als der dokumentierte 3-Zyklen. Es ist fast ein non-factor, die auf Intel ' s Core-Serie.
Primäre Referenz: http://www.agner.org/optimize/ und speziell http://www.agner.org/optimize/microarchitecture.pdf
Und dann manuell, Grafik-info aus, die mit den Tabellen auf Architekturen, Modelle und release-Termine von den verschiedenen Liste der CPUs Seiten auf wikipedia.
InformationsquelleAutor der Antwort jstine