web-dev-qa-db-fra.com

Exécuter un ordinateur sans RAM?

Je lisais à propos de temps de récupération du processeur , où je trouvais que les processeurs mettaient beaucoup moins de temps à accéder aux données de RAM par rapport à l'accès un disque dur et que RAM est présent pour stocker les informations et les données du programme en cours d'exécution.

Je me suis ensuite demandé ce qui allait se passer si nous utilisions uniquement un disque dur, mais pas de RAM.

12
akash ujjwal

À un moment donné, cela nous amène à la question de savoir ce qui compte même comme "RAM". De nombreux processeurs et microcontrôleurs disposent de suffisamment de mémoire sur puce pour exécuter de petits systèmes d'exploitation sans puces RAM distinctes. En fait, cela est relativement courant dans le monde des systèmes embarqués. Donc, si vous parlez simplement de ne pas avoir 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 intégré. Je l'ai fait moi-même au travail. Cependant, étant donné que la seule différence réelle entre la mémoire sur puce adressable et les puces RAM distinctes réside uniquement dans l'emplacement (et, bien entendu, le temps de latence), il est parfaitement raisonnable de considérer la mémoire sur puce comme étant de la RAM. Si vous comptez cela en tant que RAM, le nombre de processeurs actuels qui fonctionneraient réellement sans RAM est considérablement réduit.

Si vous faites référence à un PC normal, non, vous ne pouvez pas l'exécuter sans connecter séparément des clés RAM, mais uniquement parce que le BIOS est conçu pour ne pas essayer de démarrer sans RAM installé ( Cela s'explique à son tour par le fait que tous les systèmes d'exploitation PC modernes requièrent RAM pour s'exécuter, d'autant plus que les ordinateurs x86 ne vous permettent généralement pas d'adresser directement la mémoire sur puce, elle est utilisée uniquement en cache.)

Enfin, comme l'a dit Zeiss, il n'y a aucune raison théorique de ne pas concevoir un ordinateur sans aucune RAM, à part quelques registres. RAM existe uniquement parce que c'est moins cher que la mémoire intégrée et beaucoup plus rapide que les disques. Les ordinateurs modernes ont une hiérarchie de mémoires allant de la plus grande, mais lente à la très rapide, mais petite. La hiérarchie normale ressemble à ceci:

  • Registres - Très rapide (peut être utilisé directement par les instructions de la CPU, généralement sans latence supplémentaire), mais très petit (les cœurs de processeur 64 bits x86 ne comportent que 16 registres à usage général, par exemple, chacun pouvant stocker un nombre unique de 64 bits.) La taille des registres est généralement petite car les registres sont très coûteux par octet.
  • CPU Caches - Toujours très rapide (souvent une latence de 1 à 2 cycles) et nettement plus volumineux 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, raison pour laquelle il est généralement beaucoup plus petit. En outre, de nombreux processeurs ont en réalité 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 de la "RAM") - beaucoup plus lente que le cache (la latence d'accès a tendance à être des dizaines à des centaines de cycles d'horloge), mais beaucoup moins chère par octet et, par conséquent, généralement beaucoup plus grande que le cache. Cependant, la DRAM est toujours beaucoup plus rapide que l’accès au disque (généralement des centaines, voire des milliers de fois plus rapide)
  • Disques - Ils sont, encore une fois, beaucoup plus lents que les DRAM, mais ils sont aussi généralement beaucoup moins chers par octet et, par conséquent, beaucoup plus gros. De plus, les disques sont généralement non volatils, ce qui signifie qu'ils permettent de sauvegarder les données même après la fin du processus (ainsi qu'après le redémarrage de l'ordinateur).

Notez que la raison principale des hiérarchies de mémoire est simplement économique. Il n'y a pas de raison théorique (en informatique du moins) de ne pas avoir un téraoctet de registres non volatiles sur une puce de processeur. Le problème est que ce serait simplement incroyablement difficile et coûteux à construire. Disposer de 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 avec des coûts raisonnables.

25
reirab

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

La raison pour laquelle tous les ordinateurs du monde réel utilisent RAM est, d’abord, historique: la mémoire principale (le prototype de la RAM, semi-volatile uniquement) est bien antérieure à la mémoire de grande capacité, telle la batterie magnétique ou le disque (même si elle est venue après punch cartes et bandes de papier - la première date (sous sa forme primitive) de 1801 (oui, au début du 19e siècle; Jacquard se dessine utilisé des cartes perforées pour tisser automatiquement un motif de couleur de complexité arbitraire plusieurs décennies avant même les moteurs de différence Babbage ou les tabulateurs Hollerith); deuxièmement, RAM (comme la mémoire principale), étant électronique, est bien plus rapide que tout périphérique 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 (similaire à une vraie machine Turing), prendrait des jours à démarrer et des heures à mettre à jour l'écran pour une interface graphique moderne résolutions. Même un système d’exploitation textuel comparable à CP/M ou aux premières versions de DOS metrait très longtemps pour atteindre la commande initiale, Invite.

23
Zeiss Ikon

TOUS LES CPU modernes, standard et polyvalents fonctionnent comme suit:

  • La CPU maintient un registre qui pointe dans son espace adresse vers l'instruction suivante
  • La CPU récupère tout ce qui se trouve dans cet espace d'adressage et incrémente ce registre
  • Si l'instruction nécessite des informations supplémentaires, telles qu'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 d'interruption ou une branche, elle peut modifier le registre qui pointe vers l'instruction suivante.
  • Répéter

La CPU récupère tout ce qui se trouve dans cet espace d'adressage et incrémente ce registre

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

  • Rien (peut renvoyer des zéros, des données aléatoires ou provoquer le blocage de la CPU)
  • 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 (ceci inclut les "périphériques d'E/S internes" tels que l'APIC local de la CPU)
  • Les processeurs modernes autorisent le "cache en tant que RAM" afin qu'une partie du cache du processeur puisse apparaître dans l'espace d'adressage

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

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

Vous ne pouvez donc pas avoir les instructions d'extraction du processeur directement à partir du disque dur.


Qu'est-ce qui se passe lors d'une erreur de page est:

  • La CPU tente d'accéder à une page de mémoire marquée comme remplacée dans les tables de pages de la CPU locale (toujours présentes dans la RAM).
  • Cet accès provoque une exception d'erreur de page dans la CPU.
  • Le processeur, maintenant en mode noyau, examine la page à laquelle l'autre processus essayait d'accéder.
  • Le noyau remarque qu'un processus utilisateur tente 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 que celui utilisé pour charger/enregistrer toute autre donnée à partir du disque. Ce n'est pas différent simplement parce que la CPU est en train de paginer en mémoire swappée.
  • Le processeur passe alors le contrôle au processus interrompu, qui continue comme si de rien n'était.

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

11
LawrenceC

Vous pouvez le faire, car au démarrage d’un processeur x86, le cache L2 est initialement une SRAM avant d’être utilisé en tant que cache. Vous pouvez donc écrire votre propre bios afin de ne pas initialiser le RAM et n’utiliser que la petite quantité de SRAM présente dans la CPU sous forme de RAM plutôt que du cache L2/L3.

Il suffit de lire les directives du BIOS des fabricants de CPU.

10
Avlin

Un ordinateur personnel nécessite RAM de fonctionner. Chaque application lancée à partir du disque dur sera copiée dans RAM avant son exécution.

Donc, si vous n'avez pas de RAM sur votre ordinateur, celui-ci ne démarrera pas. Il vous émettra probablement plusieurs bips d'avertissement pour vous avertir qu'il n'y a pas de RAM installé.

7
LPChip

L'ordinateur ne fonctionnera pas. RAM est un élément essentiel du succès de la publication sur la carte mère. Lorsque RAM n’est pas présent ou est endommagé, de nombreuses cartes mères émettent généralement des codes sonores pour indiquer où chercher lors du dépannage.

5
Carl B

En fait, dans au moins deux cas, vous pouvez faire fonctionner un ordinateur sans ce que l’on appelle techniquement RAM.

  1. Les premiers anciens "ordinateurs" mécaniques (la construction de Konrad Zuse et celle de Charles Babbage étaient des dispositifs mécaniques sans RAM encore appelés ordinateurs)

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

2
Niklas Rosencrantz

Il ne va tout simplement pas courir. La carte mère émettra très probablement un bip inhabituel et s’arrêtera. Si vous ne disposez pas de suffisamment de RAM, même 128 Mo pour Windows XP, l'installation sera refusée (c'est ce que vous avez essayé avec un vieil ordinateur; l'une des puces n'était pas correctement placée). Donc, avec les configurations actuelles 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.

1
Luke