Un ordinateur sans RAM, mais avec un disque, est-il équivalent à un ordinateur avec RAM?

18

La mémoire est utilisée pour beaucoup de choses, si je comprends bien. Il sert de cache disque et contient les instructions des programmes, ainsi que leur pile et tas. Voici une expérience de pensée. Si l'on ne se soucie pas de la vitesse ou du temps nécessaire à un ordinateur pour effectuer le crunching, quelle est la quantité minimale de mémoire que l'on peut avoir, en supposant que l'on dispose d'un très grand disque? Est-il possible de supprimer la mémoire et de n'avoir qu'un disque?

La mise en cache sur disque n'est évidemment pas requise. Si nous configurons l'espace d'échange sur le disque, la pile de programmes et le tas ne nécessitent pas non plus de mémoire. Y a-t-il quelque chose qui nécessite la présence de mémoire?

Tosh
la source
3
Quelle est l'idée derrière cette question?
Yves Daoust
12
Définissez "disque". Nous nous dirigeons rapidement vers un monde sans disque (je suis content que Terry Pratchett n'ait pas à en être témoin). Cela signifie que tout le stockage sera une sorte d'état solide ou un autre, ce qui répond en quelque sorte à votre question, mais probablement à l'inverse.
Peter - Rétablir Monica
2
La mémoire est la mémoire est la mémoire
Édouard
8
La mémoire adressable au hasard n'est pas, à ma connaissance, une exigence pour les ordinateurs. La bande d'une machine Turing n'est pas adressable au hasard. Rien ne vous empêche de lire / écrire un seul bit par bloc si vous le souhaitez.
Édouard

Réponses:

24

Sûr. En principe, étant donné le matériel approprié, vous pourriez avoir juste un disque, avec tout stocké sur le disque. À chaque fois que le CPU exécute une instruction de chargement ou de stockage, il peut y avoir du matériel qui le transforme en lecture ou écriture sur disque. Ce serait extrêmement lent: sur un disque magnétique, chaque recherche prend environ 10 ms, vous pouvez donc effectuer environ 100 lectures et écritures à accès aléatoire par seconde.

Certains systèmes ont une mémoire flash mappée dans leur espace d'adressage. La mémoire flash fournit un stockage non volatile (persistant). Donc, à certains égards, cela ressemble à ce que vous mentionnez - bien que ces systèmes disposent généralement également de RAM.

DW
la source
6
@MSalters fait valoir que si nous modifions un disque (ou une couche de matériel supplémentaire par-dessus) pour le rendre semblable à la RAM, alors nous pourrions aussi bien l'appeler RAM. Le problème est que la question «Est-il possible de supprimer la mémoire et de simplement avoir un disque» est trop vague. Qu'entendons-nous par mémoire et disque? Entendons-nous ceux qui existent dans un PC de bureau moderne? Alors la réponse est non. Parlons-nous d'une mémoire et d'un disque hypothétiques? Dans ce cas, la distinction entre les deux est de toute façon floue, et la question est équivalente à "est-il possible d'avoir un ordinateur avec une RAM mécanique?" .
JBentley
1
Le genre d'AS / 400 fonctionne comme ça. Il existe un stockage à niveau unique et un seul espace d'adressage. Le disque et la mémoire sont combinés en une seule abstraction de stockage par le micrologiciel de la plate-forme, le système d'exploitation lui-même ne voit qu'un seul espace de stockage unifié plat. Il n'y a pas de pointeurs, seulement des références d'objets. Les objets sont déplacés de la mémoire vers le disque et inversement de manière transparente par le micrologiciel de la plateforme (BIOS en langage PC, SLIC en langage AS / 400). Cela ne ferait aucune différence pour le système d'exploitation et les applications si vous supprimiez les disques et n'aviez que de la RAM ou supprimiez la RAM et n'aviez que des disques.
Jörg W Mittag
Je pense également que la durée de vie des disques durs sera beaucoup plus courte. Et pire encore pour un SSD, probablement la raison pour laquelle les téléphones Android n'ont pas d'échange
Suici Doga
16

En termes de calculabilité, il est connu que chaque ordinateur moderne peut être simulé par une machine de Turing dont le seul stockage est une seule cellule de bande linéaire qui peut être écrite. En supposant que vous puissiez continuer à ajouter des quantités illimitées de stockage sur disque, un ordinateur ne disposant que de disques durs est tout aussi puissant. Vous pouvez donc certainement créer un ordinateur sans mémoire.

Bien sûr, il n'y a pas de disques durs à "espace illimité", mais il n'y a pas non plus de RAM illimitée.

Il existe un certain nombre de problèmes pratiques, par exemple, vous auriez besoin de conventions pour mapper différentes zones et adresses sur le disque, un système d'exploitation qui a écrit sur le disque pour le stockage intermédiaire et les adresses de disque gérées. En réalité, vous finiriez par simuler de près la RAM sur votre disque dur.

jmite
la source
14

La question n'est pas purement académique. C'est une question de record historique que l'un des premiers ordinateurs produits commercialement [désolé, je ne me souviens pas lequel] n'avait pas de RAM - tous les programmes ont été exécutés en récupérant les instructions directement sur un tambour magnétique [un cylindre rotatif avec surface extérieure magnétisable (les disques sont venus plus tard)]. C'était relativement lent, mais beaucoup moins cher que beaucoup de concurrents. [C'était bien en arrière dans les jours «tube»]

Fait intéressant, il est venu avec un outil désormais obsolète connu sous le nom d '«assembleur d'optimisation» - c'est-à-dire que l'assembleur a non seulement généré des instructions machine, il les a écrites sur le tambour de manière non consécutive afin de minimiser, pour chaque instruction, le temps en attendant que le tambour tourne au suivant.

PMar
la source
3
Vous pensez peut-être au Stantec Zebra - archive.computerhistory.org/resources/text/Standard/… . Ils en avaient encore un dans le département CS lorsque je suis allé à l'université en 1967.
David Marshall
3
En fait, je pense que je pensais peut-être à l'IBM 1408.
PMar
8
Voir aussi l'histoire de Mel ( catb.org/jargon/html/story-of-mel.html ) qui parle d'un programmeur qui a travaillé sur le Royal McBee LPG-30, qui avait une mémoire de batterie.
db48x
@ db48x: j'avais oublié à quel point cette histoire était cool. Je ne l'ai probablement pas lu depuis 10 ans.
Peter Cordes
7

Non. Les lecteurs de disque ne sont pas adressables au hasard comme la RAM. Ce sont plutôt des périphériques de stockage en bloc. Vous ne pouvez pas lire ou écrire un octet à partir d'eux. Et votre CPU ne peut pas lire un secteur entier à la fois, il a besoin de cet accès aléatoire. Les systèmes d'exploitation vous cachent ce niveau de détail, mais ils le font en lisant tout un segment dans la RAM, en le modifiant et en le réécrivant.

Par conséquent, vous avez besoin d'un bloc de stockage à accès aléatoire. Cela pourrait être le cache CPU, cependant, qui est fait de SRAM (un type rapide de RAM).

Ce ne sont pas seulement des disques. La mémoire flash est par sa conception construite sur des blocs, ce qui est la clé de son faible prix. Il a même des blocs beaucoup plus grands que les secteurs de disque normaux, mais il utilise la RAM en interne pour le cacher au système d'exploitation.

Vous pouvez rendre le stockage persistant directement utilisable par un processeur. Le stockage EEPROM tomberait dans cette catégorie (mémoire programmable en lecture seule effaçable électroniquement - bien que «optimisée en lecture» soit une meilleure description factuelle).

MSalters
la source
5
Je pense que votre "Non" devrait être "Oui, mais cela nécessiterait des disques personnalisés".
Taemyr
3
Vous pouvez certainement lire un octet, sur les deux. Ce que vous ne pouvez pas faire, c'est écrire un seul octet, car les écritures nécessitent l' écriture d'un bloc entier à la fois. Cependant, en principe, il n'y a aucune raison pour laquelle vous ne pouvez pas modifier un bloc en copiant les données non modifiées du bloc d'origine dans un nouveau bloc, en écrivant de nouvelles données à la place si nécessaire, puis en les recopiant dans le bloc d'origine. Vous userez votre disque assez rapidement, mais c'est inévitable de la question du PO de toute façon.
Graham
3
Et le «blocage» est fait pour une utilisation efficace de l'espace disque physique: vous avez besoin d'espace autour de chaque morceau de données «réelles» pour identifier le bloc, fournir un espace de «garde» entre les blocs, etc. Il n'y a aucune raison technique pour laquelle les blocs ne peuvent pas être un octet de long (mais la vitesse chuterait encore plus, tout comme la capacité).
TripeHound
6
En fait, même la RAM actuelle n'est pas vraiment adressable en octets - DDR3 fonctionne en rafales et la taille minimale de lecture / écriture est de 8 mots de 64 bits (soit 64 octets); Je ne suis pas un expert, mais je parierais qu'un accès aligné est également requis. Tout cela n'est pas si différent des disques plus anciens, où la taille des blocs était de l'ordre de 512 octets, donc je dirais que ces distinctions sont principalement historiques, la ligne est vraiment floue.
Matteo Italia
1
(aussi, rien ne vous empêche d'utiliser un bloc entier - quelle que soit sa taille - juste pour contenir un octet - un peu inefficace mais tant que ce n'est pas moi qui paie les disques c'est ok)
Matteo Italia
1

Lorsque vous utilisez de la mémoire virtuelle et que vous devez gérer des défauts de page, le gestionnaire d'exceptions qui gère le défaut de page au moins, le pilote de disque qui lit les données du disque dur et écrit d'abord les pages sales sur le disque et les tables de pages doivent être en RAM tout le temps. Parce que s'ils ne sont pas en RAM, vous ne pouvez pas les replacer dans la RAM. De plus, vous avez besoin d'espace pour au moins une page de RAM.

Si vous aviez un processeur comme un Xeon 12 cœurs massif avec 30 Mo de mémoire cache, il pourrait être possible d'avoir un système sans RAM ni disque dur, mais utilisez uniquement la mémoire cache. (Je ne sais pas si cela fonctionne réellement ou si pour une raison quelconque la RAM est requise).

gnasher729
la source
IIRC, x86 a un mode où il utilise le cache interne comme mémoire principale. electronics.stackexchange.com/questions/16485/… a quelques détails. Je pense que cela s'appelle parfois "pas de mode de remplissage", c'est-à-dire que le processeur n'essaie pas de remplir les lignes de cache à partir de la mémoire externe. Cela peut empêcher l'utilisation de DMA pour les E / S du disque dur, car «l'agent système» ne peut pas DMA dans le cache L3. Cela pourrait fonctionner sur un Skylake avec e4 RAM L4, car il est configuré comme un cache côté mémoire (contrairement à Broadwell) qui peut tout mettre en cache , y compris DMA. Programmed-IO fonctionnerait toujours pour le disque.
Peter Cordes
Bien sûr, à ce stade, vous exécutez un système sur puce avec 128 Mo de RAM, ce qui était une quantité décente il y a 15 ans. Avec seulement des caches L3 SRAM, cela fait toujours 4 à 8 Mo dans une puce de bureau, ce qui est peut-être suffisant pour un Linux très dépouillé, mais assez facilement pour DOS. Si la plupart de votre code est en ROM, pas en RAM, alors ça va.
Peter Cordes
1

C'est conceptuellement possible. La RAM n'est qu'un niveau de mise en cache. Il existe de nombreux niveaux de mise en cache dans un ordinateur moderne (voir les caches L1, L2, L3 .. du CPU, bien sûr Ram, la zone de swap -qui est une section logique du disque utilisé comme RAM ...-), si vous mettez ou ajoutez-en un, la machine fonctionnera. Par exemple, un live cd Ubuntu peut ne pas utiliser le niveau de mise en cache du disque dur. Cependant, je ne pense pas qu'il existe de système d'exploitation pouvant prendre en charge l'absence de niveau de RAM.

Picci
la source
1
Ce n'est pas le système d'exploitation, mais le matériel conçu pour exiger que les instructions soient dans la mémoire RAM (en fait, mappées sur l'espace d'adressage).
Ángel
@Angel est-il vraiment nécessaire dans un système d'exploitation moderne que le texte (instructions), bss, stack et heap soient chargés en mémoire pour qu'un programme s'exécute? Ne peuvent-ils pas être sur le swap (disque)? Sous Linux, disons.
Tosh
1
On parle d'informatique ou d'ingénierie informatique? Je ne connais pas l'implémentation d'un OS, ni le niveau matériel, je me base uniquement sur la thèse Church-Turing. Peut-être que cela est impossible en utilisant le matériel actuel disponible sur le marché ou en utilisant les systèmes d'exploitation existants, mais cela peut être possible dans un scénario théorique.
Picci
1
@Tosh ce n'est pas un problème de système d'exploitation mais de matériel. Votre CPU exécute une instruction située à l'adresse mémoire indiquée par le pointeur d'instruction. Donc, avoir un disque ne fonctionnera pas (sans altérer votre matériel). Pour répondre à votre question, toute la section ne devrait pas être chargée dans la mémoire, en fait, le système d'exploitation ne peut les charger que lorsque le programme tente d'y accéder. Comme exemple de compteur extrême, vous pouvez exécuter le programme "à partir du disque" en utilisant un émulateur qui lit un mot * à la fois depuis hdd. Mais votre devrait être en mémoire, de sorte que vous aurez encore besoin un peu de RAM.
Ángel
1
Désolé, @Tosh: "votre émulateur devrait être en mémoire".
Ángel
-1

Techniquement, la RAM est une mémoire volatile principale utilisée pour améliorer la vitesse de traitement. Une fois l'alimentation coupée, les données de la mémoire principale sont perdues. Si nous utilisons un disque, c'est-à-dire comme vous le dites, uniquement du disque et non de la RAM, nous pourrions toujours faire fonctionner notre ordinateur, mais il y aurait plus de surcharge d'écriture et de lecture, ce qui ralentirait considérablement le système. Par conséquent, nous utilisons de la RAM.

Sanket Gupte
la source
Bienvenue sur CS.SE! Pouvez-vous justifier votre affirmation selon laquelle une surcharge de lecture-écriture augmente les risques de panne fréquente du système? Cela ne me semble pas juste.
DW
Cela dépend de ce que vous utilisez. Comme sous unix / Linux, il existe un concept appelé cache de mémoire tampon. Il peut être utilisé pour stocker des blocs prélus ou les blocs marqués pour une écriture différée. Mais sous Windows ou Mac, ce concept n'existe pas. Par conséquent, vous devez accéder aux blocs requis à partir du stockage secondaire. Maintenant, lors de l'exécution de processus parallèles, la surcharge d'écriture et de lecture augmenterait et la vitesse de traitement diminuerait en conséquence. Les processus ne seront pas en mesure de s'exécuter, ce qui ralentit l'ordinateur de sorte qu'il commence à se bloquer et se bloque par la suite
Sanket Gupte
2
Cela ressemble à une idée fausse. Le ralentissement d'un ordinateur ne signifie pas que l'ordinateur va se bloquer.
DW