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