Aus welchem ​​Speicher lesen CPUs eigentlich Daten?

663
Aleksandr Medvedev

Nach meinem eigenen Verständnis sollten die Daten, die von der CPU verarbeitet werden sollen, im RAM abgelegt werden, in der Zwischenzeit haben die CPUs selbst einen Cache-Speicher, der auch für den Zugriff auf Daten verwendet wird. Es ist eine ziemlich bekannte Tatsache, dass der CPU-Cache der CPU näher ist und schneller ist als jede andere Art von Speicher. Es ist jedoch etwas unklar für mich, ob die Verarbeitung von Daten im CPU-Cache zwingend ist. Wenn ja, wie kann der Cache eine große Datenmenge halten? (Die Cache-Größe ist im Vergleich zu RAM bis zu einigen MB (meistens weniger als 1) eher klein.) Wenn nicht, wie entscheidet eine CPU, welcher Teil der Daten in ihrem Cache gespeichert werden soll?

Ich bin auch etwas verwirrt von Swap. Können CPUs es als Teil des Arbeitsspeichers behandeln und die dort gespeicherten Daten direkt von der Festplatte aus adressieren?

-1
Sie sollten wirklich zu Wikipedia gehen, um zu erfahren, was Cache ist und welches Problem dadurch gelöst wird. user3528438 vor 7 Jahren 0

1 Antwort auf die Frage

3
Austin Hemmelgarn

Der Cache in der CPU speichert die Daten nicht, sondern beschleunigt nur den Zugriff.

Die grundlegendste Erklärung für den Cache ist, dass, wenn die CPU ein bestimmtes Byte aus dem RAM liest, diese Daten auch in den Cache kopiert werden. Das nächste Mal, wenn die CPU dieses Byte lesen muss, sieht der Speichercontroller, dass er sich im Cache befindet. Statt den langsamen RAM-Aufruf auszuführen, übergibt er der CPU lediglich die Daten aus dem Cache.

Es gibt jedoch zwei spezifische Probleme mit dieser Erklärung:

  1. Der Cache hat eine begrenzte Größe. Aus diesem Grund müssen Sie beim Hinzufügen von Daten eventuell alte Daten entfernen (oder "löschen"), um Platz für sie zu schaffen. Es gibt eine Reihe von Möglichkeiten, dies zu tun, und die genaue Methodik spielt für diese Diskussion keine Rolle, aber was wichtig ist, ist, dass die Daten nach einiger Zeit nicht mehr im Cache sind und Sie sich dann aus dem Staub machen müssen zum Hauptspeicher trotzdem.

  2. Wenn Daten geschrieben werden, müssen Sie auch die Daten aktualisieren oder aus dem Cache entfernen, die zuvor an dieser Adresse gespeichert waren. Es gibt drei Hauptmethoden, um damit umzugehen:

    • Writeback: Bei Verwendung der Writeback-Methode werden die Daten zuerst in den Cache geschrieben und schließlich in den Hauptspeicher geschrieben. Dies hat eine Reihe von Vorteilen für die Leistung, kann jedoch unter Umständen zu Problemen führen.
    • Writethrough: Mit der Writethrough-Methode werden die Daten gleichzeitig in den Cache-Speicher und in den Hauptspeicher geschrieben. Dies ist eine geringere Leistung als beim Zurückschreiben, ist aber sicherer.
    • Write-around: Bei Verwendung der Write-Around-Methode werden Daten direkt in den Hauptspeicher geschrieben, und die Daten, die sich am selben Speicherort befanden, werden aus dem Cache-Speicher entfernt. Dies wird selten verwendet, außer für sehr spezifische Anwendungsfälle.

Um Ihre Frage zu RAM und CPU-Cache zu beantworten, technisch gesehen beides, aber die Daten stammen in fast allen Fällen aus dem RAM. Wenn Sie mehr darüber erfahren möchten, empfiehlt es sich, die folgenden zwei Wikipedia-Artikel zu lesen:

https://en.wikipedia.org/wiki/Cache_(computing)

https://en.wikipedia.org/wiki/CPU_cache

Nun, was den Swap-Bereich betrifft, ist dies ein völlig anderes Konzept, das an virtuellen Speicher und Paging gebunden ist. Der Versuch, das hier zu erklären, würde dazu führen, dass ich die meisten Wkipedia-Artikel schreibe. Ich werde Sie stattdessen direkt auf die betreffenden Artikel einpflegen:

https://en.wikipedia.org/wiki/Virtual_memory

https://en.wikipedia.org/wiki/Paging