Einen Computer ohne RAM betreiben? [Duplikat]

14

Ich habe über die CPU-Abrufzeit gelesen. Dabei habe ich festgestellt, dass CPUs viel weniger Zeit für den Zugriff auf Daten aus dem RAM benötigen als für den Zugriff auf eine Festplatte, und dass RAM zum Speichern der Informationen und Daten zum Ausführen des Programms vorhanden ist.

Dann habe ich mich gefragt, was passiert, wenn wir nur eine Festplatte verwenden, aber keinen RAM?

akash ujjwal
quelle
1
Ähnlich: superuser.com/q/805340/334004
Cornelius
1
@ Cornelius danke für Ihre Antwort Ich werde es überprüfen :)
akash ujjwal
12
Was passiert, sind einige Pieptöne, dann wird der Bildschirm dunkel.
Arch-Abit
1
Meine Frage ist, kann ich zumindest testen, ob eine Grafikkarte funktioniert? Würde es Video geben oder würde der Monitor minimal funktionieren?
Marschall Handwerk

Antworten:

26

Irgendwann stellt sich die Frage, was überhaupt als "RAM" gilt. Es gibt viele CPUs und Mikrocontroller mit viel On-Chip-Speicher für kleine Betriebssysteme ohne separate RAM-Chips. Tatsächlich ist dies in der Welt der eingebetteten Systeme relativ häufig. Wenn Sie sich also nur darauf beziehen, dass keine separaten RAM-Chips angeschlossen sind, können Sie dies mit vielen aktuellen Chips tun, insbesondere solchen, die für die Embedded-Welt entwickelt wurden. Ich habe es selbst bei der Arbeit gemacht. Da der einzige wirkliche Unterschied zwischen adressierbarem On-Chip-Speicher und separaten RAM-Chips jedoch nur die Position (und natürlich die Latenz) ist, ist es durchaus sinnvoll, den On-Chip-Speicher als RAM zu betrachten. Wenn Sie das als RAM zählen, dann ist die Anzahl der aktuellen,

Wenn Sie sich auf einen normalen PC beziehen, können Sie ihn nicht ohne angeschlossene separate RAM-Sticks ausführen. Dies liegt jedoch nur daran, dass das BIOS nicht versucht, ohne installierten RAM zu booten (was wiederum darauf zurückzuführen ist, dass alle RAMs installiert sind) Moderne PC-Betriebssysteme benötigen RAM, um ausgeführt zu werden, insbesondere, da auf x86-Computern normalerweise keine direkte Adressierung des On-Chip-Speichers möglich ist, sondern nur als Cache verwendet wird.)

Schließlich gibt es, wie Zeiss sagte, keinen theoretischen Grund, warum Sie einen Computer ohne RAM überhaupt nicht entwerfen können, abgesehen von ein paar Registern. RAM existiert nur, weil es billiger als On-Chip-Speicher und viel schneller als Festplatten ist. Moderne Computer haben eine Hierarchie von Speichern, die von groß, aber langsam bis sehr schnell, aber klein reicht. Die normale Hierarchie sieht ungefähr so ​​aus:

  • Register - Sehr schnell (kann von CPU-Befehlen direkt bearbeitet werden, im Allgemeinen ohne zusätzliche Latenz), aber in der Regel sehr klein (64-Bit-x86-Prozessorkerne haben beispielsweise nur 16 Universalregister, in denen jeweils a gespeichert werden kann einzelne 64-Bit-Zahl.) Registergrößen sind im Allgemeinen klein, da Register pro Byte sehr teuer sind.
  • CPU-Caches - Immer noch sehr schnell (oft 1-2 Zyklen Latenz) und deutlich größer als Register, aber immer noch viel kleiner (und viel schneller) als normaler DRAM. Der CPU-Cache ist außerdem pro Byte viel teurer als der DRAM, weshalb er normalerweise viel kleiner ist. Viele CPUs haben sogar Hierarchien innerhalb des Caches. Sie haben normalerweise kleinere, schnellere Caches (L1 und L2) zusätzlich zu größeren und langsameren Caches (L3.)
  • DRAM (was die meisten Leute als "RAM" bezeichnen) - Viel langsamer als der Cache (die Zugriffslatenz beträgt Dutzende bis Hunderte von Taktzyklen), aber viel billiger pro Byte und daher in der Regel viel größer als der Cache. DRAM ist jedoch immer noch um ein Vielfaches schneller als der Festplattenzugriff (normalerweise um das Hundert- bis Tausendfache schneller).
  • Festplatten - Diese sind wiederum viel langsamer als DRAM, aber im Allgemeinen viel billiger pro Byte und daher viel größer. Darüber hinaus sind Datenträger in der Regel nicht flüchtig. Dies bedeutet, dass sie das Speichern von Daten auch nach Beendigung eines Prozesses (sowie nach einem Neustart des Computers) ermöglichen.

Beachten Sie, dass der gesamte Grund für Speicherhierarchien einfach die Wirtschaftlichkeit ist. Es gibt keinen theoretischen Grund (zumindest nicht innerhalb der Informatik), warum wir nicht ein Terabyte nichtflüchtiger Register auf einem CPU-Die haben könnten. Das Problem ist, dass der Bau nur wahnsinnig schwierig und teuer wäre. Hierarchien, die von kleinen Mengen sehr teuren Speichers bis zu großen Mengen billigen Speichers reichen, ermöglichen es uns, schnelle Geschwindigkeiten zu vernünftigen Kosten aufrechtzuerhalten.

reirab
quelle
Jetzt bekomme ich endlich, was ich brauche. Du antwortest genau, was ich erwarte. Vielen Dank :)
Akash Ujjwal
Der Grund, warum PCs ohne RAM nicht booten, ist das BIOS. Wenn der BIOS-Code keine Relocation-Adresse im RAM findet, bricht er ab. Alles, was Sie hören werden, ist das Summen des Netzteils und das Geräusch von Lüftern und möglicherweise sich drehenden Festplatten - aber der Computer ist im Grunde genommen hirntot. Die CPU bekommt nie die Chance, alles zum Laufen zu bringen. Also ja, RAM ist ziemlich wichtig.
Arch-Abit
@ arch-abit Ja, es ist wahr, aber ist RAM eine notwendige Komponente, um einen Computer zu betreiben?
Akash Ujjwal
2
Zusätzlich zu dem, was @reirab sagte, ist es möglich, einen 'PC' ohne DRAM im Sinne der Ausführung von Anweisungen zu betreiben - dies ist der Modus, in dem das System arbeitet, bevor der DRAM-Controller initialisiert wird (dies erfolgt durch BIOS / EFI / Coreboot usw.). Es ist jedoch unwahrscheinlich, dass Sie irgendetwas Nützliches tun können, da die meisten Komponenten wahrscheinlich sowieso DMA verwenden .
Maciej Piechotka
1
32-Bit-x86-CPU-Register sind nur 32-Bit-Register, nicht 64-Bit- und 64-Bit-x86-CPU-Register haben 32 statt 8.
Psusi
23

Theoretisch wäre es möglich, einen Computer so zu konzipieren, dass er mit sehr wenig (Wert von wenigen Registern) oder ohne RAM arbeitet (siehe Definition einer Turing-Maschine - die tatsächlich in einer entsprechend großen / schnellen Implementierung von Conway's Life erstellt werden kann) Simulation).

Der Grund, warum alle Computer in der realen Welt RAM verwenden, ist in der Vergangenheit zu suchen: Der Kernspeicher (der Prototyp für RAM, nur halbflüchtig) liegt weit vor Massenspeichern wie Magnettrommeln oder -platten (obwohl dies nach Lochkarten und Papierbändern geschah). Ersteres geht in seiner ursprünglichen Form auf das Jahr 1801 zurück (ja, den Beginn des 19. Jahrhunderts; Jacquard-Webstühle verwendeten Lochkarten, um ein Farbmuster beliebiger Komplexität Jahrzehnte vor Babbage Difference Engines oder Hollerith-Tabulatoren automatisch zu weben) Ein RAM (wie ein Kernspeicher) ist elektronisch und sehr viel schneller als jedes Gerät, das von der physischen Bewegung des Speichermediums abhängt, um die Daten einem Lese- / Schreibmechanismus zu präsentieren.

Ein System oder eine ähnliche Komplexität wie ein moderner Windows- oder Linux-Computer, der ohne RAM läuft (ähnlich wie ein echter Turing-Computer), würde Tage brauchen, um hochzufahren, und Stunden, um den Bildschirm für eine grafische Benutzeroberfläche bei modernen Auflösungen zu aktualisieren. Selbst ein Nur-Text-Betriebssystem, das mit CP / M oder früheren DOS-Versionen vergleichbar ist, würde sehr lange brauchen , um die anfängliche Eingabeaufforderung zu erreichen.

Zeiss Ikon
quelle
4
Ich denke, Sie könnten einige DSPs (digitale Signalprozessoren) und ähnliche Mikroprozessoren als Computer betrachten, die ohne RAM laufen, da sie im Wesentlichen Berechnungen mit einem kontinuierlichen Datenstrom durchführen.
Jamesqf
1
Ich denke, Ihre Einschätzungen für die Langsamkeit einer "Virtual Memory Only" -Maschine sind etwas übertrieben, aber im Prinzip richtig.
linksum den
1
Da die Festplatte> 1.000.000 langsamer ist als der Arbeitsspeicher, ist die Schätzung eher niedrig.
Dancrumb
2
@Dancrumb Ich bin mir nicht sicher, woher deine 1.000.000 (mal?) Kamen. Mit DDR3-SDRAM können Sie Daten in der Größenordnung von 10 GB / s speichern, wohingegen selbst bei einer Festplatte mit 7200 U / min eine sequentielle Geschwindigkeit von etwa 100 MB / s (0,1 GB / s) erzielt wird. Das ist ein Faktor von 100; sicherlich bedeutend, aber weit entfernt von 1.000.000 Mal. Wo RAM eine HDD deutlich übertrifft, besteht eine Suchlatenz, die Sie jedoch durch die Verwendung einer SSD erheblich verringern können. DDR3 hat eine Latenzzeit im Bereich von 10 ns, und eine schnelle SSD hat möglicherweise eine Latenzzeit im Bereich von 10.000 ns (100 k IOPS), und zwar um den Faktor 1.000. noch weit entfernt von 1.000.000.
ein CVn
1
@PeterCordes Bearbeitet, so dass es nicht so aussieht, als würde ich behaupten, dass Win / Linux ohne RAM laufen könnte.
Zeiss Ikon
10

Dies ist möglich, da der L2-Cache beim Start einer x86-CPU zunächst ein SRAM ist, bevor er als Cache verwendet wird. Sie können also Ihr eigenes BIOS schreiben, um den RAM nicht zu initialisieren und nur die geringe Menge an SRAM in der CPU als RAM zu verwenden, anstatt L2 / L3-Cache.

Lesen Sie einfach die BIOS-Richtlinien der CPU-Hersteller.

Avlin
quelle
4
+1 für die Feststellung, dass. Tatsächlich startet jedes x86-System (Computer) "ohne Verwendung von RAM". Der BIOS-Code erkennt zuerst, ob ein RAM vorhanden ist, und gibt einen Signalton aus, falls keiner vorhanden ist. Dieser Code kann ohne RAM ausgeführt werden;) (ofc kann nicht viel ohne RAM durchgeführt werden, sicher würden Register nicht ausreichen, um die Festplatte zu handhaben und es "als RAM" zu verwenden)
Sebi
10

ALLE modernen Standard-Allzweck-CPUs funktionieren grundsätzlich so:

  • Die CPU unterhält ein Register, das in ihrem Adressraum auf den nächsten Befehl zeigt
  • Die CPU ruft alles ab, was sich in diesem Adressraum befindet, und erhöht dieses Register
  • Wenn der Befehl zusätzliche Informationen wie eine Zieladresse oder einen anderen Operanden benötigt, wird er ebenfalls abgerufen
  • CPU führt Anweisung aus
  • Wenn der Befehl ein Sprung, ein Aufruf, eine Rückgabe, eine Rückkehr von einem Interrupt oder eine Verzweigung ist, kann er das Register ändern, das auf den nächsten Befehl zeigt.
  • Wiederholen

Die CPU ruft alles ab, was sich in diesem Adressraum befindet, und erhöht dieses Register

Was kann in einem Adressraum "leben"?

  • Nichts (kann Nullen, zufällige Daten zurückgeben oder die CPU zum Absturz bringen)
  • RAM (Motherboard-RAM, RAM von einem PCI-Gerät wie einem Grafikadapter usw.)
  • Rom
  • Register eines E / A-Geräts (dies schließt "interne E / A-Geräte" wie den lokalen APIC der CPU ein)
  • Moderne CPUs erlauben "Cache als RAM", so dass ein Teil des CPU-Cache im Adressraum erscheinen kann

Beachten Sie, dass "Festplatte" nicht in dieser Liste enthalten ist. Die Festplatte ist nicht direkt mit der CPU verbunden. Die Daten werden über ein mit der CPU verbundenes E / A-Gerät (SATA-Hostadapter) auf der Festplatte übertragen.

Das E / A-Gerät verwendet DMA zum Laden / Speichern von Daten auf / von der Festplatte. Dies bedeutet, dass das E / A-Gerät den RAM selbst direkt liest / schreibt - ohne dass die CPU eingreift - und auch darauf angewiesen ist, dass RAM vorhanden ist. Wenn die Daten jedoch nicht vom E / A-Gerät in den RAM geladen wurden, hat die CPU keine Chance, sie zu sehen.

Die CPU kann also keine Anweisungen direkt von der Festplatte abrufen.


Was während eines Seitenfehlers passiert, ist:

  • Die CPU versucht, auf eine Speicherseite zuzugreifen, die in den lokalen CPU-Seitentabellen (die immer im RAM vorhanden sind) als ausgelagert markiert ist.
  • Dieser Zugriff verursacht eine Seitenfehlerausnahme in der CPU.
  • Die CPU, die sich jetzt im Kernel-Modus befindet, sieht sich die Seite an, auf die der andere Prozess zugreifen wollte.
  • Der Kernel bemerkt, dass ein Benutzerprozess versucht, auf eine ausgelagerte Seite zuzugreifen, und ruft den normalen E / A-Prozess auf, um diese Seite von der Festplatte wieder einzulagern. Dies ist derselbe Vorgang, der beim Laden / Speichern anderer Daten von der Festplatte ausgeführt wird. Es ist nicht anders, nur weil die CPU im ausgelagerten Speicher pagt.
  • Die CPU gibt dann die Steuerung an den unterbrochenen Prozess zurück, der fortgesetzt wird, als ob nichts geschehen wäre.

Die CPU, die Daten von der Festplatte abrufen muss, weil der Speicher ausgelagert wird, ist also nicht anders.

LawrenceC
quelle
2
+1Dies ist die einzige Antwort, die sich mit dem eigentlichen Problem befasst, nicht nur was passieren würde , sondern auch warum .
@ultrasawblade, warum nicht CPU hat eine Chance, die Daten zu sehen, auch wenn CPU-Anforderung für eine Seite (Info) und wenn es nicht im RAM (Primärspeicher) verfügbar ist, dann ist ein Seitenfehler aufgetreten, dann CPU-Anforderung an die Festplatte für die gewünschten Daten. Das bedeutet, dass die CPU zuletzt auf die Festplatte gehen muss, um die erforderlichen Informationen zu erhalten.
Akash Ujjwal
2
Siehe Bearbeitungen. Das Kernel-Paging im ausgelagerten Speicher unterscheidet sich nicht vom Laden eines Programms oder dem Lesen / Schreiben eines Programms auf die Festplatte. Dies geschieht nur innerhalb des Kernels und hinter den Kulissen eines Benutzerprozesses, nicht jedoch hinter den Kulissen des Kernels.
LawrenceC
Beachten Sie, dass x86 mindestens den Cache als RAM ohne Füllmodus verwenden kann, Sie sich jedoch im selben Boot wie Mikrocontroller befinden, die über einen integrierten RAM verfügen. Es ist plausibel, die CPU nur mit ROM und keinem beschreibbaren Adressraum zu betreiben (wenn alle Ihre Zustände in Register passen und die neuesten x86-CPUs 32 512-b-ZMM-Vektorregister haben ...) Lesbarer Adressraum für Code (und GDT / LDT / IDT und andere Tabellen für x86).
Peter Cordes
7

Ein PC benötigt zum Betrieb RAM. Jede von der Festplatte gestartete Anwendung wird zuerst in den Arbeitsspeicher kopiert, bevor sie ausgeführt wird.

Wenn Sie also keinen Arbeitsspeicher in Ihrem Computer haben, startet Ihr Computer nicht. Möglicherweise ertönen mehrere Warntöne, um Sie darauf hinzuweisen, dass kein Arbeitsspeicher installiert ist.

LPChip
quelle
5
Dann klopfen Sie sich auf die Stirn und sagen: "Ich hätte nicht versuchen sollen, diese RAM-Sticks am 27. Dezember auf der nördlichen Hemisphäre in einer Teppichumgebung mit weniger als 10% Luftfeuchtigkeit zu installieren?" Ja?
Arch-Abit
@LPChip, warum es zu Ram gespeichert wird, was der Hauptzweck davon ist. Um das System schneller zu machen oder die Zugriffszeit zu verkürzen, gibt es einen eingebauten Cache. Habe ich recht oder unrecht?
Akash Ujjwal
1
RAM ist schneller Speicher, Festplattenzugriff ist langsam, nichtflüchtiger Speicher und der CPU-Cache ist aus anderen Gründen vorhanden.
Fiasko Labs
1
@FiascoLabs Tatsächlich gibt es den CPU-Cache aus dem gleichen Grund wie den Arbeitsspeicher: Es ist ein sehr schneller Speicher. Es ist viel schneller als RAM, aber teurer pro Byte.
Reirab
Und ein Computer wird nicht eigenständig darauf ausgeführt, daher "andere Gründe"
Fiasco Labs
5

Der Computer wird nicht ausgeführt. RAM ist ein wesentlicher Bestandteil des erfolgreichen Beitrags vom Motherboard. Wenn kein RAM vorhanden oder beschädigt ist, geben viele Motherboards in der Regel Signaltöne aus, um anzugeben, wo Sie bei der Fehlerbehebung nachsehen müssen.

Carl B
quelle
Ja, es waren kleine Metallringe, die magnetisiert / entmagnetisiert wurden. en.wikipedia.org/wiki/Magnetic-core_memory (Als Antwort auf einen Kommentar zu alten Vakuumröhrencomputern, der gelöscht wurde)
Fiasco Labs
2

Eigentlich könnte man in mindestens zwei Fällen einen Computer ohne das betreiben, was technisch als RAM bezeichnet wird

  1. Die ersten alten mechanischen "Computer" (Konrad Zuses Konstruktion und Charles Babbages Computer waren mechanische Geräte ohne RAM, die noch Computer genannt wurden)

  2. Ein moderner Computer ohne RAM und nur einen Prozessor (Chip) mit Registern . In den meisten Fällen ist ein SRAM (Cache-Speicher) auf dem Prozessor vorhanden, der schnellste Computerspeicher wird jedoch als Register auf dem Chip bezeichnet, und die Register auf dem Chip sind technisch gesehen kein RAM.

Niklas
quelle
1
Vielen Dank für diese Antwort - ich erinnere mich zum ersten Mal an Zuse und seine frühen elektromechanischen Computer (obwohl die frühesten Lesungen, die ich über Computer erinnere, immer von "Relais" als Schalteinheiten sprachen, scheinen alle anderen frühen Computer Vakuumröhren verwendet zu haben ).
Zeiss Ikon
1

Es läuft einfach nicht. Das Motherboard piept höchstwahrscheinlich auf ungewöhnliche Weise und fährt herunter. Wenn Sie nicht über genügend RAM verfügen, auch nicht über 128 MB für Windows XP, wird die Installation verweigert (dies wurde tatsächlich mit einem alten Computer versucht; einer der Chips war nicht richtig platziert). Also, mit den aktuellen Einstellungen ist das unmöglich. Selbst wenn Sie die Motherboard-Überprüfungen deaktivieren könnten, kann die CPU keine Daten direkt von der Festplatte lesen und benötigt für jeden Vorgang RAM.

Ich denke, theoretisch wäre es möglich, eine Maschine zu konstruieren, die wenig oder gar keinen Arbeitsspeicher benötigt, aber ineffizient wäre.

Luke
quelle