Faire fonctionner un ordinateur sans RAM? [dupliquer]

14

Je lisais sur le temps de récupération du processeur , où j'ai trouvé que les processeurs prennent beaucoup moins de temps pour accéder aux données de la RAM par rapport à l'accès à un disque dur, et que la RAM est présente pour stocker les informations et les données du programme en cours d'exécution.

Ensuite, je me suis demandé ce qui se passerait lorsque nous n'utiliserions qu'un disque dur mais pas de RAM?

akash ujjwal
la source
1
Similaire: superuser.com/q/805340/334004
Cornelius
1
@Cornelius merci pour votre réponse je vais le vérifier :)
akash ujjwal
12
Ce qui se passe est quelques bips, puis l'écran devient vide.
arch-abit
1
Ma question est, puis-je au moins tester qu'une carte graphique fonctionne? La vidéo ou le moniteur fonctionnerait-il de façon minimale?
vaisseau de maréchal

Réponses:

27

À un certain point, cela se pose sur la question de ce qui compte même comme «RAM». Il existe de nombreux processeurs et microcontrôleurs qui ont beaucoup de mémoire sur puce pour exécuter de petits systèmes d'exploitation sans puce RAM séparée. En fait, cela est en fait relativement courant dans le monde des systèmes embarqués. Donc, si vous faites simplement référence à l'absence de puces RAM séparées, alors, oui, vous pouvez le faire avec de nombreuses puces actuelles, en particulier celles conçues pour le monde embarqué. Je l'ai fait moi-même au travail. Cependant, comme la seule vraie différence entre la mémoire sur puce adressable et les puces RAM séparées est simplement l'emplacement (et, évidemment, la latence), il est parfaitement raisonnable de considérer que la mémoire sur puce est elle-même RAM. Si vous comptez cela comme RAM, alors le nombre de courant,

Si vous faites référence à un PC normal, non, vous ne pouvez pas l'exécuter sans barrettes de RAM séparées, mais c'est uniquement parce que le BIOS est conçu pour ne pas tenter de démarrer sans RAM installée (ce qui est, à son tour, parce que tous les systèmes d'exploitation PC modernes nécessitent de la RAM pour fonctionner, d'autant plus que les machines x86 ne vous permettent généralement pas d'adresser directement la mémoire sur puce; elle est utilisée uniquement comme cache.)

Enfin, comme l'a dit Zeiss, il n'y a aucune raison théorique pour laquelle vous ne pouvez pas concevoir un ordinateur pour fonctionner sans RAM du tout, à part quelques registres. La RAM existe uniquement parce qu'elle est moins chère que la mémoire sur puce et beaucoup plus rapide que les disques. Les ordinateurs modernes ont une hiérarchie de mémoires qui va de grande, mais lente à très rapide, mais petite. La hiérarchie normale ressemble à ceci:

  • Registres - Très rapide (peut être utilisé directement par les instructions du processeur, généralement sans latence supplémentaire), mais généralement très petit (les cœurs de processeur x86 64 bits ne disposent que de 16 registres à usage général, par exemple, chacun pouvant stocker un nombre unique de 64 bits.) Les tailles de registre sont généralement petites car les registres sont très chers par octet.
  • Caches CPU - Toujours très rapide (souvent 1-2 cycles de latence) et significativement plus grand que les registres, mais toujours beaucoup plus petit (et beaucoup plus rapide) que la DRAM normale. Le cache du processeur est également beaucoup plus cher par octet que la DRAM, c'est pourquoi il est généralement beaucoup plus petit. De plus, de nombreux processeurs ont en fait des hiérarchies même dans le cache. Ils ont généralement des caches plus petits et plus rapides (L1 et L2) en plus des caches plus grands et plus lents (L3.)
  • DRAM (ce que la plupart des gens considèrent comme `` RAM '') - Beaucoup plus lent que le cache (la latence d'accès a tendance à être des dizaines de centaines de cycles d'horloge), mais beaucoup moins cher par octet et, par conséquent, généralement beaucoup plus grande que le cache. La DRAM est toujours, cependant, beaucoup plus rapide que l'accès au disque (généralement des centaines à des milliers de fois plus rapide.)
  • Disques - Ceux-ci sont, encore une fois, beaucoup plus lents que la DRAM, mais aussi généralement beaucoup moins chers par octet et, par conséquent, beaucoup plus grands. De plus, les disques sont généralement non volatils, ce qui signifie qu'ils permettent d'enregistrer les données même après la fin d'un processus (ainsi que après le redémarrage de l'ordinateur).

Notez que la raison entière des hiérarchies de mémoire est simplement économique. Il n'y a aucune raison théorique (pas en informatique du moins) pour laquelle nous ne pourrions pas avoir un téraoctet de registres non volatils sur une puce CPU. Le problème est qu'il serait tout simplement incroyablement difficile et coûteux à construire. Le fait d'avoir des hiérarchies allant de petites quantités de mémoire très coûteuse à de grandes quantités de mémoire bon marché nous permet de maintenir des vitesses rapides à des coûts raisonnables.

reirab
la source
enfin, je reçois ce dont j'ai besoin. Vous avez répondu exactement à ce que je fais. Merci beaucoup :)
akash ujjwal
En fait, la raison pour laquelle les PC ne démarrent pas sans RAM est le BIOS, si le code BIOS n'est pas en mesure de trouver une adresse de relocalisation dans la RAM, il abandonne. Tout ce que vous allez entendre, c'est le bourdonnement de l'alimentation et le bruit des ventilateurs et peut-être des disques qui tournent - mais l'ordinateur est fondamentalement mort cérébral. Le CPU n'a jamais la chance de tout faire fonctionner. Alors oui, la RAM est assez importante.
arch-abit
@ arch-abit oui c'est vrai, mais la RAM est-elle un composant nécessaire pour faire fonctionner un ordinateur?
akash ujjwal
2
En plus de ce que @reirab a dit, il est possible d'exécuter un `` PC '' sans DRAM dans le sens d'exécuter des instructions - c'est le mode dans lequel le système fonctionne avant l'initialisation du contrôleur DRAM (cela se fait par BIOS / EFI / Coreboot, etc.). Cependant, il est peu probable que vous puissiez faire quelque chose d'utile car la plupart des composants utilisent probablement DMA de toute façon.
Maciej Piechotka
1
Les registres de processeur x86 32 bits ne sont que 32 bits, pas 64, et les processeurs x86 64 bits en ont 32 plutôt que 8 d'entre eux.
psusi
23

Il serait théoriquement possible de concevoir un ordinateur pour fonctionner avec très peu (valeur de quelques registres) ou sans RAM (recherchez la définition d'une machine de Turing - qui peut en fait être construite dans une implémentation suffisamment grande / rapide de Conway's Life simulation).

La raison pour laquelle tous les ordinateurs du monde réel utilisent la RAM est, tout d'abord, historique: la mémoire centrale (le prototype de la RAM, uniquement semi-volatile) est largement antérieure au stockage de masse comme le tambour ou le disque magnétique (bien qu'elle soit apparue après les cartes perforées et la bande de papier - dont la première remonte, sous sa forme primitive, à 1801 (oui, le début du 19e siècle; les métiers Jacquard utilisaient des cartes perforées pour tisser automatiquement un motif de couleur d'une complexité arbitraire des décennies avant même les moteurs de différence Babbage ou les tabulateurs Hollerith); deuxièmement , La RAM (comme la mémoire centrale), étant électronique, est beaucoup plus rapide que n'importe quel appareil qui dépend du mouvement physique du support de stockage pour présenter les données à un mécanisme de lecture / écriture.

Un système ou une complexité similaire à un ordinateur Windows ou Linux moderne fonctionnant sans RAM (de manière similaire à une véritable machine Turing), prendrait quelques jours pour démarrer et des heures pour mettre à jour l'écran d'une interface graphique à des résolutions modernes. Même un système d'exploitation en texte seul comparable à CP / M ou aux premières versions de DOS mettrait très longtemps à atteindre l'invite de commande initiale.

Zeiss Ikon
la source
4
Je pense que vous pourriez peut-être considérer certains DSP (processeurs de signaux numériques) et microprocesseurs similaires comme des ordinateurs qui fonctionnent sans RAM, car ils effectuent essentiellement des calculs sur un flux continu de données.
jamesqf
1
Je pense que vos estimations de la lenteur d'une machine "à mémoire virtuelle uniquement" sont un peu exagérées, mais en principe exactes.
leftaroundabout
1
Étant donné que le disque est> 1 000 000 plus lent que la RAM, je pense que l'estimation est, si quelque chose, sur le côté bas.
Dancrumb
2
@Dancrumb Je ne sais pas d'où viennent vos 1.000.000 (fois?). La SDRAM DDR3 peut vous donner de l'ordre de 10 Go / s , alors que même un disque dur rotatif à 7200 tr / min vous donnera environ 100 Mo / s (0,1 Go / s) séquentiel. C'est un facteur de 100; certes significatif, mais loin de 1 000 000 de fois. Lorsque la RAM surpasse considérablement un disque dur, la latence de recherche est élevée, mais vous pouvez grandement atténuer cela en utilisant un SSD. DDR3 a une latence dans la région 10 ns, et un SSD rapide peut avoir une latence dans la région 10 000 ns (100k IOPS), pour un facteur 1 000; encore loin de 1.000.000.
un CVn du
1
@PeterCordes Modifié de sorte qu'il ne semble pas que je prétende que Win / Linux pourrait fonctionner sans RAM.
Zeiss Ikon
10

Vous pouvez, car lorsqu'un CPU x86 démarre, le cache L2 est initialement une SRAM avant d'être utilisé comme cache. Vous pouvez donc écrire votre propre bios afin de ne pas initialiser la RAM et utiliser uniquement la petite quantité de SRAM à l'intérieur du CPU en tant que RAM plutôt qu'en cache L2 / L3.

Lisez simplement les directives du BIOS des fabricants de CPU.

Avlin
la source
4
+1 pour avoir déclaré cela. En fait, chaque système x86 (ordinateur) démarre "sans utiliser de ram". Le code bios détecte d'abord s'il y a un bélier et émet un bip au cas où il n'y en aurait pas. Ce code peut fonctionner sans ram;) (ofc pas beaucoup de choses peuvent être faites sans ram, pour sûr les registres ne seraient pas suffisants pour gérer le disque dur et l'utiliser "comme ram")
Sebi
10

TOUS les CPU modernes, standard et polyvalents fonctionnent fondamentalement comme ceci:

  • Le CPU maintient un registre qui pointe dans son espace d'adressage vers l'instruction suivante
  • Le CPU récupère tout ce qui se trouve dans cet espace d'adressage et les incréments qui s'enregistrent
  • Si l'instruction a besoin d'informations supplémentaires, comme une adresse de destination ou un autre opérande, elle est également récupérée
  • Le CPU exécute l'instruction
  • Si l'instruction est un saut, un appel, un retour, un retour depuis une interruption ou une branche, elle peut modifier le registre qui pointe vers l'instruction suivante.
  • Répéter

Le CPU récupère tout ce qui se trouve dans cet espace d'adressage et les incréments qui s'enregistrent

Que peut "vivre" dans un espace d'adressage?

  • Rien (peut renvoyer des zéros, des données aléatoires ou provoquer le blocage du processeur)
  • RAM (RAM de la carte mère, RAM d'un périphérique PCI tel qu'une carte graphique, etc.)
  • ROM
  • Registres d'un périphérique d'E / S (cela inclut les "périphériques d'E / S internes" comme l'APIC local du CPU)
  • Les processeurs modernes autorisent le "cache en RAM", de sorte qu'une partie du cache des processeurs peut apparaître dans l'espace d'adressage

Notez que "disque dur" ne figure pas dans cette liste. Le disque dur n'est pas directement connecté au CPU. Les données vont et viennent du disque dur via un périphérique d'E / S (adaptateur hôte SATA) connecté au CPU.

Le périphérique d'E / S utilise DMA pour charger / enregistrer des données vers / depuis le disque dur. Cela signifie que le périphérique d'E / S lit / écrit directement la RAM elle-même - sans intervention du processeur - et dépend également de la RAM présente. Mais si les données n'ont pas été chargées dans la RAM par le périphérique d'E / S, le processeur n'a aucune chance de les voir.

Vous ne pouvez donc pas avoir les instructions de récupération du CPU directement depuis le disque dur.


Ce qui se passe lors d'une erreur de page est:

  • Le processeur tente d'accéder à une page de mémoire marquée comme permutée dans les tables de pages de processeur locales (qui sont toujours présentes dans la RAM).
  • Cet accès provoque une exception de défaut de page dans le CPU.
  • Le CPU, maintenant en mode noyau, regarde la page à laquelle l'autre processus tentait d'accéder.
  • Le noyau remarque qu'un processus utilisateur essaie d'accéder à une page permutée et appelle le processus d'E / S normal pour permuter cette page à partir du disque. Il s'agit du même processus qui serait utilisé lors du chargement / enregistrement de toute autre donnée à partir du disque. Ce n'est pas différent simplement parce que le processeur pagine dans la mémoire échangée.
  • Le CPU remet ensuite le contrôle au processus interrompu, qui continue comme si de rien n'était.

Ainsi, le processeur qui a besoin d'obtenir des données du disque parce que la mémoire est échangée n'est pas différent.

LawrenceC
la source
2
+1pour être la seule réponse ici traitant du vrai problème, non seulement de ce qui se passerait , mais aussi pourquoi .
@ultrasawblade pourquoi pas cpu a une chance de voir les données, même si la demande de cpu pour une page (info) et si elle n'est pas disponible dans ram (mémoire primaire), alors il y a un défaut de page, puis la demande de cpu au hardisk pour que les données souhaitées. Cela signifie que le processeur doit enfin aller sur le disque dur pour obtenir les informations requises.
akash ujjwal
2
Voir les modifications. La pagination du noyau dans la mémoire échangée n'est pas différente d'un chargement de programme ou d'un programme de lecture / écriture sur le disque. Cela se produit uniquement dans le noyau et dans les coulisses d'un processus utilisateur, mais pas dans les coulisses du noyau.
LawrenceC
Notez que x86 au moins peut utiliser le cache comme RAM avec le mode sans remplissage, mais vous êtes dans le même bateau que les microcontrôleurs qui viennent avec de la RAM intégrée. L'exécution du processeur avec uniquement la ROM et sans espace d'adressage accessible en écriture est plausible (si tout votre état s'inscrit dans les registres, et notez que les processeurs x86 les plus récents ont trente-deux registres vectoriels ZMM 512b ...) Mais convenu qu'il n'est pas plausible sans espace d'adressage lisible pour le code (et GDT / LDT / IDT et autres tables pour x86).
Peter Cordes
7

Un ordinateur personnel nécessite de la RAM pour fonctionner. Chaque application lancée à partir du disque dur sera copiée en RAM avant d'être exécutée.

Donc, si vous n'avez pas de RAM dans votre ordinateur, votre ordinateur ne démarrera pas, vous donnera probablement plusieurs bips d'avertissement pour vous informer qu'il n'y a pas de RAM installée.

LPChip
la source
5
Ensuite, vous frappez sur votre front et dites: "Je n'aurais pas dû essayer d'installer ces barrettes RAM dans un environnement moquette avec moins de 10% d'humidité, le 27 décembre dans l'hémisphère Nord?" Oui?
arch-abit
@LPChip pourquoi il est stocké sur Ram, quel est son objectif principal. Pour rendre le système rapide ou réduire le temps d'accès, il y a un cache intégré pour le faire. Ai-je raison ou tort?
akash ujjwal
1
La RAM est un stockage de mémoire rapide, l'accès au disque est lent, un stockage de mémoire non volatile et le cache CPU est là pour d'autres raisons.
Fiasco Labs
1
@FiascoLabs En fait, le cache CPU est là pour la même raison que la RAM: c'est un stockage vraiment rapide. C'est beaucoup plus rapide que la RAM, mais plus cher par octet.
reirab
Et un ordinateur ne fonctionnera pas de manière autonome dessus, d'où "d'autres raisons"
Fiasco Labs
5

L'ordinateur ne fonctionnera pas. La RAM est un élément essentiel de la publication réussie de la carte mère. Lorsque la RAM n'est pas présente ou endommagée, de nombreuses cartes mères donnent généralement des codes sonores pour indiquer où chercher lors du dépannage.

Carl B
la source
Oui, c'étaient de petits anneaux métalliques qui seraient magnétisés / démagnétisés. en.wikipedia.org/wiki/Magnetic-core_memory (En réponse à un commentaire sur les anciens ordinateurs à tube à vide qui a été supprimé)
Fiasco Labs
2

En fait, vous pourriez dans au moins deux cas exécuter un ordinateur sans ce qui est techniquement appelé RAM

  1. Les premiers vieux "ordinateurs" mécaniques (la construction de Konrad Zuse et l'ordinateur de Charles Babbage étaient des appareils mécaniques sans RAM encore appelés ordinateurs)

  2. Un ordinateur moderne sans RAM et seulement un processeur (puce) avec registres . Dans la plupart des cas, vous avez SRAM (mémoire cache) sur le processeur, mais la mémoire d'ordinateur la plus rapide est appelée registres situés sur la puce, et techniquement, les registres sur la puce ne sont pas de la RAM.

Niklas
la source
1
Merci pour cette réponse - la première fois que je me souviens avoir entendu parler de Zuse et de ses premiers ordinateurs électromécaniques (même si les premières lectures dont je me souviens sur les ordinateurs parlaient toujours de "relais" comme unités de commutation, tous les autres premiers ordinateurs semblent avoir utilisé des tubes à vide ).
Zeiss Ikon
1

Cela ne fonctionnera tout simplement pas. La carte mère émet très probablement un bip inhabituel et s'éteint. Si vous n'avez pas assez de RAM, même 128 Mo pour Windows XP, il refusera de l'installer (en fait, vous avez essayé cela avec un vieil ordinateur; l'une des puces n'était pas correctement placée). Donc, avec les configurations actuelles, c'est impossible. Même si vous pouviez désactiver les vérifications de la carte mère, le processeur ne peut pas lire les données directement à partir du disque dur et a besoin de RAM pour chaque opération.

Je suppose qu'en théorie, il serait possible de construire une machine qui utilise peu ou pas de RAM, mais ce serait inefficace.

Luc
la source