Ist ein Computer ohne RAM, aber mit einer Festplatte, gleichbedeutend mit einem mit RAM?

18

Speicher wird für viele Dinge verwendet, wie ich verstehe. Es dient als Festplatten-Cache und enthält die Anweisungen der Programme sowie deren Stack & Heap. Hier ist ein Gedankenexperiment. Wenn man sich nicht um die Geschwindigkeit oder Zeit kümmert, die ein Computer für das Knirschen benötigt, wie viel Speicher kann man mindestens haben, vorausgesetzt man hat eine sehr große Festplatte? Ist es möglich, auf Speicher zu verzichten und nur eine Festplatte zu haben?

Disk-Caching ist offensichtlich nicht erforderlich. Wenn wir Swap Space auf der Festplatte einrichten, benötigen Program Stack und Heap auch keinen Speicher. Gibt es etwas, für das Speicher erforderlich ist?

Tosh
quelle
3
Welche Idee steckt hinter dieser Frage?
Yves Daoust
12
Definieren Sie "Festplatte". Wir nähern uns schnell einer Welt ohne Platten (ich bin froh, dass Terry Pratchett das nicht miterleben muss). Dies bedeutet, dass der gesamte Speicher eine Art Solid-State-Speicher ist, der Ihre Frage beantwortet, wenn auch wahrscheinlich in umgekehrter Reihenfolge.
Peter - Reinstate Monica
2
Erinnerung ist Erinnerung ist Erinnerung
Édouard
8
Zufallsadressierbarer Speicher ist meines Wissens keine Voraussetzung für Computer. Das Band von einer Turingmaschine ist nicht zufällig adressierbar. Nichts hindert Sie daran, nur ein Bit pro Block zu lesen / schreiben, wenn Sie möchten.
Édouard

Antworten:

24

Sicher. Grundsätzlich könnte man bei entsprechender Hardware nur eine Festplatte haben, auf der alles gespeichert ist. Jedes Mal, wenn die CPU eine Lade- oder Speicheranweisung ausführt, kann es Hardware geben, die dies in eine Lese- oder Schreibanweisung für die Festplatte umwandelt. Es wäre extrem langsam: Auf einer Magnetplatte dauert jeder Suchlauf ungefähr 10 ms, sodass Sie ungefähr 100 Lese- und Schreibvorgänge mit wahlfreiem Zugriff pro Sekunde ausführen können.

Bei einigen Systemen ist ein Flash-Speicher in den Adressraum integriert. Der Flash-Speicher bietet nichtflüchtigen (dauerhaften) Speicher. In gewisser Hinsicht ähnelt dies dem, was Sie erwähnen - obwohl diese Systeme normalerweise auch über RAM verfügen.

DW
quelle
6
@MSalters weist darauf hin, dass wir, wenn wir eine Festplatte (oder zusätzliche Hardware darüber) modifizieren, um sie RAM-ähnlich zu machen, sie genauso gut RAM nennen können. Das Problem ist, dass die Frage "Ist es möglich, Speicher zu beseitigen und nur eine Festplatte zu haben" zu vage ist. Was meinen wir mit Speicher und Festplatte? Meinen wir die, die in einem modernen Desktop-PC existieren? Dann lautet die Antwort nein. Meinen wir etwas hypothetisches Gedächtnis und Platte? Dann ist in diesem Fall die Unterscheidung zwischen den beiden ohnehin verschwommen, und die Frage ist gleichbedeutend mit "Ist es möglich, einen Computer mit mechanischem RAM zu haben?" .
JBentley
1
Die AS / 400-Art funktioniert so. Es gibt einen Single-Level-Storage und nur einen Adressraum. Festplatte und Speicher werden von der Plattform-Firmware zu einer einzigen Speicherabstraktion zusammengefasst. Das Betriebssystem selbst sieht nur einen einzigen flachen einheitlichen Speicherplatz. Es gibt keine Zeiger, nur Objektreferenzen. Objekte werden von der Plattform-Firmware transparent vom Speicher auf die Festplatte und zurück verschoben (BIOS in PC-Sprache, SLIC in AS / 400-Sprache). Es würde keinen Unterschied für das Betriebssystem und die Anwendungen machen, wenn Sie die Datenträger entfernen und nur über RAM verfügen oder den RAM entfernen und nur über Datenträger verfügen.
Jörg W Mittag
Ich denke auch, dass die Lebensdauer der Festplatten viel kürzer sein wird. Und noch schlimmer für eine SSD. Wahrscheinlich der Grund, warum Android-Handys keinen Tausch haben
Suici Doga
16

In Bezug auf die Rechenfähigkeit ist bekannt, dass jeder moderne Computer von einer Turing-Maschine simuliert werden kann, deren einziger Speicher eine einzelne, lineare Bandzelle ist, die beschrieben werden kann. Vorausgesetzt, Sie können weiterhin unbegrenzt Speicherplatz hinzufügen, ist ein Computer mit nur Festplatten genauso leistungsfähig. Sie könnten also sicherlich einen Computer ohne Speicher bauen.

Natürlich gibt es keine Festplatten mit "unbegrenztem Speicherplatz", aber es gibt auch keinen unbegrenzten RAM.

Es gibt eine Reihe praktischer Probleme. Sie benötigen beispielsweise Konventionen zum Zuordnen verschiedener Bereiche und Adressen auf der Festplatte, einem Betriebssystem, das für die Zwischenspeicherung und die Verwaltung von Festplattenadressen auf die Festplatte geschrieben wurde. In Wirklichkeit würden Sie den Arbeitsspeicher auf Ihrer Festplatte genau simulieren.

jmite
quelle
14

Die Frage ist nicht rein akademisch. Es ist eine historische Aufzeichnung, dass einer der frühesten kommerziell hergestellten Computer (ich kann mich leider nicht erinnern, welcher) keinen RAM hatte - alle Programme wurden ausgeführt, indem Anweisungen direkt von einer Magnettrommel (einem rotierenden Zylinder) abgerufen wurden mit magnetisierbarer Außenfläche (Scheiben kamen später)]. Es war vergleichsweise langsam, aber viel billiger als die meisten Konkurrenten. [Dies war vor langer Zeit in der "Tube" Tage]

Interessanterweise gab es ein inzwischen veraltetes Tool, das als "Optimizing Assembler" bezeichnet wird. Der Assembler hat also nicht nur Maschinenbefehle generiert, sondern diese auch nicht fortlaufend auf die Trommel geschrieben, um für jeden Befehl den Zeitaufwand zu minimieren Warten Sie, bis sich die Trommel zur nächsten dreht.

PMar
quelle
3
Möglicherweise denken Sie an Stantec Zebra - archive.computerhistory.org/resources/text/Standard/… . Sie hatten noch eine in der CS-Abteilung, als ich 1967 zur Universität ging.
David Marshall
3
Eigentlich denke ich, dass ich an den IBM 1408
gedacht habe
8
Siehe auch die Geschichte von Mel ( catb.org/jargon/html/story-of-mel.html ), in der es um einen Programmierer geht, der an dem Royal McBee LPG-30 mit Drum-Memory gearbeitet hat.
Db48x
@ db48x: Ich hatte vergessen, wie cool diese Geschichte war. Ich habe es wahrscheinlich seit 10 Jahren nicht mehr gelesen.
Peter Cordes
7

Nein. Festplattenlaufwerke können nicht wie der Arbeitsspeicher in zufälliger Reihenfolge adressiert werden. Stattdessen blockieren sie Speichergeräte. Sie können kein Byte von ihnen lesen oder schreiben. Und Ihre CPU kann nicht einen ganzen Sektor auf einmal lesen, sie benötigen diesen wahlfreien Zugriff. Betriebssysteme verbergen diese Detailebene vor Ihnen, dies geschieht jedoch, indem ein ganzer Sektor in den Arbeitsspeicher eingelesen, geändert und zurückgeschrieben wird.

Aus diesem Grund benötigen Sie einen Block mit Direktzugriffsspeicher. Das könnte jedoch der CPU-Cache sein, der aus SRAM (einem schnellen RAM-Typ) besteht.

Es sind nicht nur Scheiben. Flash-Speicher sind von Natur aus aus Blöcken aufgebaut, was für den niedrigen Preis entscheidend ist. Es hat sogar Blöcke, die viel größer sind als normale Festplattensektoren, aber es verwendet intern RAM, um dies vor dem Betriebssystem zu verbergen.

Sie können persistenten Speicher erstellen, der direkt von einer CPU verwendet werden kann. EEPROM-Speicher fallen in diese Kategorie (elektronisch löschbarer programmierbarer "Nur-Lese" -Speicher - obwohl "Lese-optimiert" eine sachlich bessere Beschreibung wäre).

MSalters
quelle
5
Ich denke, Ihr "Nein" sollte "Ja" sein, aber es würde benutzerdefinierte Datenträger erfordern.
Taemyr
3
Sie können auf jeden Fall ein Byte auf beiden lesen. Was Sie nicht tun können, ist, ein einzelnes Byte zu schreiben, da beim Schreiben ein ganzer Block auf einmal geschrieben werden muss. Grundsätzlich gibt es jedoch keinen Grund, warum Sie einen Block nicht ändern können, indem Sie die unveränderten Daten aus dem ursprünglichen Block in einen neuen Block kopieren, stattdessen gegebenenfalls neue Daten schreiben und dann in den ursprünglichen Block zurückkopieren. Sie werden Ihre Festplatte ziemlich schnell zermürben, aber die Frage des OP lässt dies ohnehin nicht zu.
Graham
3
Und "Blockieren" wird durchgeführt, um den physischen Speicherplatz effizient zu nutzen: Sie benötigen Platz um jedes "echte" Datenelement, um den Block zu identifizieren, "Schutz" zwischen Blöcken bereitzustellen usw. Es gibt keinen technischen Grund, warum Blöcke nicht einer sein können Byte lang (aber die Geschwindigkeit würde noch weiter sinken als die Kapazität).
TripeHound
6
Tatsächlich ist selbst der aktuelle RAM nicht wirklich byteadressierbar - DDR3 arbeitet in Bursts und die minimale Lese- / Schreibgröße beträgt 8 64-Bit-Wörter (dh 64 Bytes). Ich bin kein Experte, aber ich wette, dass auch ein ausgerichteter Zugriff erforderlich ist. All dies ist nicht so unähnlich zu älteren Festplatten, bei denen die Blockgröße in der Größenordnung von 512 Bytes lag. Daher würde ich sagen, dass diese Unterscheidungen größtenteils historisch sind und die Linie wirklich verwischt.
Matteo Italia
1
(Auch hält Sie nichts davon ab, einen ganzen Block zu verwenden - egal wie groß er ist - nur um ein Byte zu speichern - ein bisschen ineffizient, aber solange ich nicht derjenige bin, der die Festplatten zahlt, ist es in Ordnung)
Matteo Italia
1

Wenn Sie virtuellen Speicher verwenden und Seitenfehler behandeln müssen, müssen mindestens die Ausnahmebehandlungsroutine, die den Seitenfehler behandelt, der Festplattentreiber, der die Daten von der Festplatte liest und zuerst fehlerhafte Seiten auf die Festplatte schreibt, und die Seitentabellen vorhanden sein die ganze Zeit im RAM zu sein. Denn wenn sie nicht im RAM sind, können Sie sie nicht zurück in den RAM tauschen. Außerdem benötigen Sie Platz für mindestens eine Seite RAM.

Wenn Sie eine CPU wie einen massiven 12-Core-Xeon mit 30 MB Cache-Speicher hätten, könnte es möglich sein, ein System ohne RAM oder Festplatte zu haben, das nur den Cache-Speicher verwendet. (Nicht sicher, ob das tatsächlich funktioniert oder ob aus irgendeinem Grund RAM erforderlich ist).

gnasher729
quelle
IIRC, x86 verfügt über einen Modus, in dem der interne Cache als Hauptspeicher verwendet wird. electronics.stackexchange.com/questions/16485/… enthält einige Details. Ich denke, es wird manchmal als "kein Füllmodus" bezeichnet, dh die CPU versucht nicht, Cache-Zeilen aus dem externen Speicher zu füllen. Dies könnte die Verwendung von DMA für Festplatten-E / A ausschließen, da der "Systemagent" kein DMA in den L3-Cache ausführen kann. Es könnte auf einem Skylake mit L4-eDRAM funktionieren, da es (im Gegensatz zu Broadwell) als speicherseitiger Cache eingerichtet ist, der alles , einschließlich DMA, zwischenspeichern kann. Programmed-IO würde immer noch für die Festplatte funktionieren.
Peter Cordes
Zu diesem Zeitpunkt läuft natürlich ein System-on-Chip mit 128 MB RAM, was vor 15 Jahren noch eine anständige Menge war. Mit nur L3-SRAM-Caches sind das immer noch 4 bis 8 MB in einem Desktop-Chip, was vielleicht für ein sehr abgespecktes Linux, aber für DOS leicht genug ist. Wenn sich der größte Teil Ihres Codes im ROM und nicht im RAM befindet, ist das in Ordnung.
Peter Cordes
1

Es ist konzeptionell möglich. RAM ist nur eine Caching-Ebene. In einem modernen Computer gibt es viele Caching-Ebenen (siehe die Caches L1, L2, L3 .. der CPU, natürlich Ram, der Swap-Bereich, der ein logischer Abschnitt der als RAM verwendeten Festplatte ist ...) Oder fügen Sie eine hinzu, die Maschine wird funktionieren. Beispielsweise verwendet eine Ubuntu Live-CD möglicherweise nicht die Caching-Stufe der Festplatte. Ich glaube jedoch nicht, dass es ein Betriebssystem gibt, das das Fehlen eines RAM-Levels unterstützt.

Picci
quelle
1
Es ist nicht das Betriebssystem, sondern die Hardware, für die die Anweisungen in den RAM-Speicher geschrieben werden müssen (eigentlich im Adressraum abgebildet).
Angel
@Angel Ist es in einem modernen Betriebssystem wirklich erforderlich, dass Text (Anweisungen), BSS, Stack und Heap in den Speicher geladen werden, damit ein Programm ausgeführt werden kann? Können sie nicht auf der Festplatte sein? Sagen wir unter Linux.
Tosh
1
Sprechen wir über Informatik oder Computertechnik? Ich kenne weder die Implementierung eines Betriebssystems noch die Hardware-Ebene, sondern nur die These von Church-Turing. Möglicherweise ist dies mit der auf dem Markt verfügbaren Hardware oder mit vorhandenen Betriebssystemen nicht möglich, kann aber in einem theoretischen Szenario möglich sein.
Picci
1
@Tosh es liegt nicht am Betriebssystem sondern an der Hardware. Ihre CPU führt einen Befehl aus, der sich an der Speicheradresse befindet, auf die der Befehlszeiger zeigt. Nur eine Festplatte zu haben, funktioniert nicht (ohne die Hardware zu verändern). Wenn Sie Ihre Frage beantworten, müsste nicht der gesamte Abschnitt in den Speicher geladen werden. Das Betriebssystem lädt sie möglicherweise nur, wenn das Programm versucht, auf sie zuzugreifen. Als extremes Gegenbeispiel könnten Sie das Programm "von der Festplatte" ausführen, indem Sie einen Emulator verwenden, der jeweils ein Wort * von der Festplatte liest. Aber Ihr müssten in Erinnerung sein, so würden Sie müssen noch einige RAM.
Angel
1
Sorry, @Tosh: "Ihr Emulator müsste sich im Speicher befinden".
Angel
-1

Technisch gesehen ist RAM ein primärer flüchtiger Speicher, der zur Verbesserung der Verarbeitungsgeschwindigkeit verwendet wird. Sobald die Stromversorgung unterbrochen ist, gehen die Daten im Primärspeicher verloren. Wenn wir eine Festplatte verwenden, dh, wie Sie sagen, nur Festplatte und nicht RAM, könnten wir unseren Computer weiterhin ausführen, aber es würde mehr Lese- und Schreibaufwand entstehen, wodurch das System erheblich verlangsamt wird. Daher verwenden wir RAM.

Sanket Gupte
quelle
Willkommen bei CS.SE! Können Sie Ihre Behauptung rechtfertigen, dass mehr Lese- und Schreibaufwand die Wahrscheinlichkeit eines häufigen Systemabsturzes erhöht? Das klingt für mich nicht richtig.
DW
Es hängt davon ab, was du verwendest. Wie in Unix / Linux gibt es ein Konzept, das als Puffer-Cache bekannt ist. Es kann verwendet werden, um vorabgerufene Blöcke oder die für verzögertes Schreiben markierten Blöcke zu speichern. Aber in Windows oder Mac gibt es kein solches Konzept. Daher müssen Sie auf die erforderlichen Blöcke aus dem Sekundärspeicher zugreifen. Während parallele Prozesse ausgeführt werden, würde der Lese-Schreib-Overhead zunehmen und die Verarbeitungsgeschwindigkeit folglich abnehmen. Die Prozesse können nicht ausgeführt werden, wodurch der Computer so verlangsamt wird, dass er zu hängen beginnt und anschließend abstürzt
Sanket Gupte
2
Das klingt nach einem Missverständnis. Das Verlangsamen eines Computers bedeutet nicht, dass der Computer abstürzt.
DW