Moderne x86-Prozessoren haben mindestens 512 KB L2-Cache. Es gibt Anwendungen, die vollständig in diese Speichermenge passen würden. Können Sie diese Chips ohne angeschlossenen RAM ausführen? Wenn ja, gibt es eine Möglichkeit, die Zeitstrafe beim Zurückschreiben zu beseitigen, wenn die CPU versucht, die RAM-Kohärenz aufrechtzuerhalten?
Ich habe keine bestimmte Anwendung im Sinn, es ist nur müßige Neugier. Ich bin mir sicher, dass es irgendwo eine Nischenanwendung gibt, in der dies jedoch nützlich wäre.
Ja, du kannst. Indem Sie Lesevorgänge von aufeinanderfolgenden (nicht vorhandenen) physischen Speicherorten vortäuschen, setzen Sie die Tags im Cache. Dann schalten Sie das weitere Füllen der Cachelines aus und geben Writeback ein, wodurch Lese- / Schreibvorgänge auf den Cache beschränkt werden und sich wie ein normaler RAM verhalten.
Einige der Bios-Replacement-Projekte tun dies, weil Sie dann viel mehr Code für das Setup des Chipsatzes und des Chipsatz-Speichercontrollers ausgeben können, sodass Sie ihn beispielsweise in C schreiben können.
Diese Praxis wird häufig für CPUs der eingebetteten Klasse sowie für die Handhabung von Bootloadern verwendet. Die Methoden, um den Cache in einen RAM-ähnlichen Modus zu versetzen, variieren ein wenig.
Für eine kurze Einführung auf niedriger Ebene können Sie sich diese Präsentation ansehen.
Beachten Sie, dass Sie, wie andere bereits betont haben, den Boot-Code offensichtlich von irgendwoher laden müssen.
Wenn die CPU aus dem Reset kommt, wird der Cache ausgeschaltet. Das BIOS konfiguriert und löscht den Cache anfänglich. Also nein, Sie können es nicht ohne RAM ausführen, da es keinen RAM gibt, um das Ding überhaupt hochzufahren.
Ich weiß nicht, wie genau das ist, aber das sind meine Gedanken:
Ich glaube nicht, dass es eine Möglichkeit gibt, programmgesteuert auf den Cache zuzugreifen. Sie können nicht von einer Anweisung zur nächsten garantieren, was sich im Cache befinden würde und wo es sich befinden würde, sodass Sie es nicht zuverlässig als RAM verwenden können, selbst wenn Sie direkt darauf zugreifen könnten.
Sie könnten einen x86 ohne RAM ausführen, aber Sie könnten ihn nicht dazu bringen, sehr viel Nützliches zu tun. Sie wären darauf beschränkt, nur die internen Register zur Datenspeicherung zu verwenden.
Yuhong Bao