Dies ist vielleicht eine dumme Frage und kann das Ergebnis eines Missverständnisses sein. Ich lerne gerade die CPU's und insbesondere das Gedächtnis. Ich habe gerade gelesen, wie viel schneller SRAM ist als DRAM, aber teurer. SRAM ist sehr teuer: Ich habe ein bisschen eingekauft und eine batteriebetriebene SRAM-Karte mit 16 MB für etwa 400 US-Dollar gefunden.
Kürzlich erwähnte ein Freund, dass er Welpen-Linux im RAM laufen ließ und dass es schnell ist. Mir ist jedoch aufgefallen, dass winzige Core-Linux-Dateien sogar noch kleiner sein können ... bis zu 8 MB! Das brachte mich zum Nachdenken: Können wir Linux in SRAM ausführen? Ist diese Frage überhaupt wohlgeformt?
Diese Frage zu googeln erwies sich als unwirksam, warf jedoch noch weitere Fragen auf. Könnte man Linux im L3 Cache laufen lassen? Intel Core i7 kann einen L3-Cache haben, der groß genug für die 8 MB ist ... aber mache ich einen kategorischen Fehler? Was ist der Unterschied zwischen diesem und "eingebettetem" Linux?
Das ist die Frage: Können wir Linux in SRAM oder L3 Cache ausführen? Gibt es etwas schnelleres? Wie schnell können wir Linux!?
z.
quelle
Antworten:
Linux oder ein anderes Betriebssystem weiß nicht, wie der Arbeitsspeicher funktioniert. Solange der Speichercontroller ordnungsgemäß konfiguriert ist (z. B. für Nicht-SRAM eingestellte Bildwiederholraten), ist es dem Betriebssystem egal, ob er auf normalem dynamischen Speicher (normalem RAM), schnellem Seitenmodus-RAM (FP-RAM) vom C64-ish ausgeführt wird mal), Extended Data Out Mode RAM (EDO), Synchronous RAM (SDRAM), beliebige der doppelten Datenrate SDRAMS (DDR 1/2/3), was auch immer.
Alle diese unterstützen das Lesen und Schreiben von zufälligen Stellen. Alles wird funktionieren.
Jetzt ist der Cache etwas anders. Sie müssen nicht darauf schreiben, damit sich der Inhalt ändert. Das wird in die Quere kommen. Trotzdem ist es etwas brauchbar. Ich weiß, dass coreboot den Cache während des Startvorgangs als eine Art Speicher verwendet, bevor der Speichercontroller ordnungsgemäß konfiguriert ist. (Weitere Informationen finden Sie in den Videos zu den Coreboot-Gesprächen während der FOSDEM 2011).
Theoretisch könnte man es also verwenden.
ABER : Für praktische Aufgaben ist ein System mit 1 GB "normalem" "mittlerer Geschwindigkeit" wesentlich leistungsfähiger als mit nur wenigen MB superschnellem Speicher. Das heißt, Sie haben drei Möglichkeiten:
Außer in sehr seltenen Fällen ist der letzte nicht sinnvoll.
quelle
Ja, das können Sie, und das ist in der Tat so, wie es bereits automatisch gemacht wird. Die am häufigsten verwendeten Teile des Arbeitsspeichers werden in den Cache kopiert. Wenn Ihre gesamte RAM-Auslastung geringer ist als Ihre Cache-Größe (wie Sie annehmen), hat der vorhandene Caching-Mechanismus alles im RAM kopiert.
Der Cache wird dann nur dann wieder in den normalen Arbeitsspeicher kopiert, wenn der PC in den S3-Ruhemodus wechselt. Dies ist erforderlich, da die Caches im S3-Modus heruntergefahren werden.
quelle
Bei vielen CPUs kann der Cache als RAM verwendet werden. Zum Beispiel können die meisten neueren x86-CPUs bestimmte Regionen als Rückschreibe mit No-Fill-On-Reads über MTRRs konfigurieren. Dies kann verwendet werden, um einen Bereich des Adressraums als Cache-as-RAM zu kennzeichnen.
Ob dies von Vorteil wäre, ist eine andere Frage - es würde den Kernel im RAM sperren, gleichzeitig aber die effektive Größe des Caches verringern. Es kann auch Nebenwirkungen geben (z. B. das Deaktivieren des Cachings für den Rest des Systems), die dies erheblich verlangsamen.
quelle
"Können wir Linux in L3 Cache ausführen?"
Nein , dies ist nicht möglich, da der Cache-Speicher nicht direkt / linear adressiert wird.
Aufgrund der Art und Weise, wie der Cache-Speicher ausgelegt ist, kann die IP-Registrierung (CPU Program Counter) nicht auf einen Speicherort im Cache-Speicher verweisen.
Ein CPU-Cache hat eine eigene "Assoziativität" und diese Assoziativität definiert die Art und Weise, wie der "normale" Speicher dem Cache-Speicher "zugeordnet" wird. Diese Eigenschaft des Cache-Speichers ist einer der Gründe, warum die Cache-Speicher so schnell sind.
quelle
"Können wir Linux in L3 Cache ausführen?"
Nein, Cache ist für eine bestimmte Aufgabe vorgesehen, um Programmdaten und -anweisungen bereit zu halten, wenn der Prozessor sie benötigt. Sie finden das Betriebssystem ohnehin im Cache, da es ständig verwendet wird. Das Laden des gesamten Betriebssystems in den Cache ist nicht effizient, da nicht alle Codepfade im Kernel gleichzeitig verwendet werden.
"Können wir Linux in SRAM ausführen?"
Natürlich könnten Sie batteriegepuffertes SRAM als Boot-Partition verwenden und dann das eingebettete Flag "Ausführen an Ort und Stelle" verwenden. Dies kann zu schnelleren Startzeiten und etwas schnelleren Vorgängen führen. Ein Hauptfaktor ist jedoch die Bandbreite zwischen dem L3-Cache und dem Kernel (einem Boot-Laufwerk oder RAM).
"Gibt es etwas schnelleres? Wie schnell können wir Linux?"
Im Allgemeinen arbeiten Hardware-Hersteller und Betriebssystementwickler daran, die Verarbeitung so schnell wie möglich zu gestalten. Ihre Frage ist jedoch sehr allgemein: Möchten Sie die Startzeiten beschleunigen, den Dateisystemzugriff optimieren, Berechnungen beschleunigen oder etwas anderes? Sobald Sie eine spezifischere Frage haben, können Sie mit Sicherheit den Engpass finden und beseitigen. Ihr SRAM-Laufwerk würde den Startvorgang sicherlich beschleunigen. In 3 Sekunden zu einer GUI zu gelangen, wäre sehr cool zu sehen.
quelle
Früher gab es Maschinen, auf denen der gesamte Arbeitsspeicher aus SRAM bestand. Dies ist zurück, als 8 MB viel waren, scheint aber Ihren Einschränkungen zu entsprechen. Ich bin sicher, 8 MB SRAM sind jetzt viel billiger als damals.
Sie könnten also Linux in SRAM ausführen, wenn der Computer auf diese Weise hergestellt würde. Es ist keine Theorie; Es wurde getan.
Aber nicht im Cache. Der Cache ist anders verkabelt und wird, was noch wichtiger ist, anders angesprochen. Sie können es nicht gleich ansprechen. Chunks werden anders abgebildet, nicht als fortlaufender Chunk. Und der Inhalt ist nicht unbedingt das, was Sie auf der Festplatte sehen - neuere Intel-Chips führen eine Art Just-in-Time-Compilierung (eher eine CISC => RISC-Micro-Op-Neucodierung) durch, bei der die Micro-Ops die Dinge sind das landet im Cache. Kurz gesagt, was sich im Cache befindet, ist nicht Ihr Programm, sondern eine geänderte Ansicht, sodass Sie es nicht mehr als Speicherdarstellung Ihres Programms verwenden können.
Die Frage ist warum. Abgesehen von "weil ich kann" gibt es nicht viele Gründe dafür. Das Cache-System bringt Ihnen den größten Geschwindigkeitsvorteil bei deutlich geringeren Kosten. Und denken Sie daran, dass Kosten nicht nur Dollars sind ... SRAM benötigt mehr Transistoren, was mehr Strom bedeutet.
quelle