![Aus welchem Speicher lesen CPUs eigentlich Daten?](https://rvso.com/image/1540085/Aus%20welchem%20%E2%80%8B%E2%80%8BSpeicher%20lesen%20CPUs%20eigentlich%20Daten%3F.png)
Nach meinem Verständnis sollten Daten, die von der CPU verarbeitet werden sollen, inRAM, inzwischen sind die CPUs selbstCache-Speicher, das auch zum Zugriff auf Daten verwendet wird. Es ist eine ziemlich bekannte Tatsache, dass der CPU-Cache „näher“ an der CPU ist und schneller als jede andere Art von Speicher. Mir ist jedoch nicht ganz klar, ob es zwingend erforderlich ist, dass sich Daten im CPU-Cache befinden, damit sie verarbeitet werden können. Wenn ja, wie kann der Cache große Datenmengen speichern? (Die Cachegröße ist im Vergleich zum RAM tendenziell winzig, bis zu einigen MB, häufiger weniger als 1) Wenn nicht, wie entscheidet eine CPU, welcher Teil der Daten in ihrem Cache gespeichert werden soll?
Ich bin auch ein wenig verwirrt vom Swap. Können CPUs ihn als Teil des RAM betrachten und die dort gespeicherten Daten direkt von der Festplatte aus ansprechen?
Antwort1
Der Cache auf der CPU speichert die Daten nicht, er beschleunigt lediglich den Zugriff.
Die einfachste 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. Wenn die CPU dieses Byte das nächste Mal lesen muss, sieht der Speichercontroller, dass es im Cache ist, und anstatt den langsamen Aufruf an den RAM zu tätigen, übergibt er der CPU einfach die Daten aus dem Cache.
Es gibt jedoch zwei konkrete Probleme mit dieser Erklärung:
Der Cache hat eine begrenzte Größe. Aus diesem Grund müssen Sie beim Hinzufügen von Daten irgendwann alte Daten entfernen (oder „löschen“), um Platz dafür zu schaffen. Es gibt eine Reihe von Möglichkeiten, dies zu tun, und die genaue Methode ist für diese Diskussion nicht wirklich wichtig. Was jedoch wichtig ist, ist, dass die Daten nach einer Weile möglicherweise nicht mehr im Cache vorhanden sind und Sie dann sowieso auf den Hauptspeicher zugreifen müssen.
Wenn Daten geschrieben werden, müssen Sie auch die Daten aus dem Cache aktualisieren oder entfernen, die zuvor an dieser Adresse gespeichert waren. Hierfür gibt es drei Hauptmethoden:
- Writeback: Bei der Writeback-Methode werden die Daten zunächst in den Cache geschrieben und anschließend in den Hauptspeicher ausgelesen. Dies hat zwar einige Vorteile für die Leistung, kann aber unter Umständen zu Problemen führen.
- Writethrough: Beim Writethrough-Verfahren werden die Daten gleichzeitig in den Cache und in den Hauptspeicher geschrieben. Dies ist zwar leistungsschwächer als Writeback, dafür aber sicherer.
- Write-Around: Bei der Write-Around-Methode werden Daten direkt in den Hauptspeicher geschrieben und anschließend die Daten, die sich an derselben Stelle befanden, aus dem Cache entfernt. Außer in sehr speziellen Anwendungsfällen wird diese Methode nur selten verwendet.
Um also Ihre Frage zu RAM und CPU-Cache zu beantworten: Technisch gesehen beides, aber die Daten kommen letztlich in fast allen Fällen aus dem RAM. Wenn Sie speziell mehr darüber erfahren möchten, empfehle ich Ihnen, die folgenden beiden Wikipedia-Artikel zu lesen:
https://en.wikipedia.org/wiki/Cache_(Computer-Cache)
https://en.wikipedia.org/wiki/CPU-Cache
Was nun den Swap-Speicher betrifft, so handelt es sich hierbei um ein völlig anderes Konzept, das mit virtuellem Speicher und Paging verknüpft ist. Wenn ich versuchen würde, das hier zu erklären, würde ich fast ein paar Wikipedia-Artikel schreiben müssen, deshalb verweise ich Sie stattdessen direkt auf die betreffenden Artikel: