¿Ejecutar una computadora sin RAM? [duplicar]

14

Estaba leyendo sobre el tiempo de recuperación de la CPU , donde descubrí que las CPU tardan mucho menos tiempo en acceder a los datos de la RAM en comparación con el acceso a un disco duro, y que la RAM está presente para almacenar la información y los datos de la ejecución del programa.

Entonces me pregunté qué pasaría cuando solo usemos un disco duro pero no RAM.

akash ujjwal
fuente
1
Similar: superuser.com/q/805340/334004
Cornelius
1
@ Cornelius gracias por tu respuesta, lo comprobaré :)
akash ujjwal
12
Lo que sucede son algunos pitidos y la pantalla se pone en blanco.
arch-abit
1
Mi pregunta es, ¿puedo al menos probar que una tarjeta gráfica funciona? ¿Habría video o el monitor funcionaría mínimamente?
Mariscal artesanal

Respuestas:

27

En algún momento esto entra en la cuestión de lo que incluso cuenta como "RAM". Hay muchas CPU y microcontroladores que tienen mucha memoria en el chip para ejecutar pequeños sistemas operativos sin chips RAM separados. De hecho, esto es relativamente común en el mundo de los sistemas integrados. Entonces, si solo te refieres a no tener ningún chip RAM separado conectado, entonces sí, puedes hacerlo con muchos chips actuales, especialmente aquellos diseñados para el mundo integrado. Lo hice yo mismo en el trabajo. Sin embargo, dado que la única diferencia real entre la memoria en chip direccionable y los chips de RAM separados es solo la ubicación (y, obviamente, la latencia), es perfectamente razonable considerar que la memoria en chip es RAM. Si está contando eso como RAM, entonces el número de corriente,

Si te estás refiriendo a una PC normal, no, no puedes ejecutarla sin conectar RAM por separado, pero eso es solo porque el BIOS está diseñado para no intentar arrancar sin RAM instalada (lo cual, a su vez, es porque todos Los sistemas operativos de PC modernos requieren RAM para ejecutarse, especialmente porque las máquinas x86 generalmente no le permiten direccionar directamente la memoria en el chip; se usa únicamente como caché).

Finalmente, como dijo Zeiss, no hay ninguna razón teórica de que no puedas diseñar una computadora para que funcione sin RAM, aparte de un par de registros. La RAM existe únicamente porque es más barata que la memoria en chip y mucho más rápida que los discos. Las computadoras modernas tienen una jerarquía de memorias que van desde grandes, pero lentas hasta muy rápidas, pero pequeñas. La jerarquía normal es algo como esto:

  • Registros: muy rápido (puede ser operado por instrucciones de la CPU directamente, generalmente sin latencia adicional), pero generalmente muy pequeño (los núcleos de procesador x86 de 64 bits tienen solo 16 registros de propósito general, por ejemplo, cada uno puede almacenar un número único de 64 bits.) Los tamaños de registro son generalmente pequeños porque los registros son muy caros por byte.
  • Cachés de CPU: todavía muy rápido (a menudo con una latencia de 1-2 ciclos) y significativamente más grande que los registros, pero aún más pequeño (y mucho más rápido) que la DRAM normal La memoria caché de la CPU también es mucho más costosa por byte que la DRAM, por lo que generalmente es mucho más pequeña. Además, muchas CPU tienen jerarquías incluso dentro de la memoria caché. Por lo general, tienen cachés más pequeños y rápidos (L1 y L2) además de cachés más grandes y lentos (L3).
  • DRAM (lo que la mayoría de la gente piensa como 'RAM'): mucho más lento que el caché (la latencia de acceso tiende a ser decenas a cientos de ciclos de reloj), pero mucho más barato por byte y, por lo tanto, generalmente mucho más grande que el caché. DRAM sigue siendo, sin embargo, muchas veces más rápido que el acceso al disco (generalmente cientos a miles de veces más rápido).
  • Discos: estos son, una vez más, mucho más lentos que la DRAM, pero también son generalmente mucho más baratos por byte y, por lo tanto, mucho más grandes. Además, los discos generalmente no son volátiles, lo que significa que permiten guardar datos incluso después de que finaliza un proceso (así como también después de reiniciar la computadora).

Tenga en cuenta que la razón completa de las jerarquías de memoria es simplemente la economía. No hay una razón teórica (al menos no dentro de la informática) por la que no podríamos tener un terabyte de registros no volátiles en un dado de CPU. El problema es que sería increíblemente difícil y costoso de construir. Tener jerarquías que van desde pequeñas cantidades de memoria muy cara hasta grandes cantidades de memoria barata nos permite mantener velocidades rápidas con costos razonables.

reirab
fuente
ahora por último obtengo lo que necesito. Respondiste exactamente a lo que estoy mirando. Muchas gracias :)
akash ujjwal
En realidad, la razón por la cual las PC no arrancan sin RAM es el BIOS, si el código del BIOS no puede encontrar una dirección de reubicación en la RAM, aborta. Todo lo que va a escuchar es el zumbido de la fuente de alimentación y el ruido de los ventiladores y tal vez los discos giratorios, pero la computadora está básicamente muerta de cerebro. La CPU nunca tiene la oportunidad de hacer que todo funcione. Entonces sí, la RAM es bastante importante.
arch-abit
@ arch-abit sí, es cierto, pero ¿la RAM es un componente necesario para ejecutar una computadora?
akash ujjwal
2
Además de lo que dijo @reirab, es posible ejecutar una 'PC' sin DRAM en el sentido de ejecutar instrucciones: este es el modo en el que el sistema funciona antes de que se inicialice el controlador DRAM (lo hace BIOS / EFI / Coreboot, etc.). Sin embargo, es poco probable que pueda hacer algo útil, ya que la mayoría de los componentes probablemente usen DMA de todos modos.
Maciej Piechotka
1
Los registros de cpu x86 de 32 bits son solo 32 bits, no 64, y los cpus x86 de 64 bits tienen 32 en lugar de 8 de ellos.
psusi
23

Sería teóricamente posible diseñar una computadora para que funcione con muy poca (el valor de algunos registros) o sin RAM (busque la definición de una máquina de Turing, que en realidad se puede construir en una implementación adecuada / rápida de Conway's Life simulación).

La razón por la cual todas las computadoras del mundo real usan RAM es, en primer lugar, histórica: la memoria central (el prototipo de RAM, solo semi-volátil) es muy anterior al almacenamiento masivo como un tambor magnético o un disco (aunque vino después de tarjetas perforadas y cinta de papel) el primero de los cuales se remonta, en su forma primitiva, a 1801 (sí, el comienzo del siglo XIX; los telares Jacquard usaban tarjetas perforadas para tejer automáticamente un patrón de color de complejidad arbitraria décadas antes incluso de los motores de diferencia Babbage o los tabuladores Hollerith); en segundo lugar , La RAM (como la memoria central), al ser electrónica, es mucho más rápida que cualquier dispositivo que dependa del movimiento físico de los medios de almacenamiento para presentar los datos a un mecanismo de lectura / escritura.

Un sistema o una complejidad similar a una computadora moderna con Windows o Linux que se ejecuta sin RAM (de manera similar a una verdadera máquina de Turing), tomaría días para comenzar y horas para actualizar la pantalla para una interfaz gráfica con resoluciones modernas. Incluso un sistema operativo de solo texto comparable a CP / M o versiones anteriores de DOS tardaría mucho tiempo en llegar al símbolo del sistema inicial.

Zeiss Ikon
fuente
44
Creo que quizás podría considerar que algunos DSP (procesadores de señal digital) y microprocesadores similares son computadoras que funcionan sin RAM, ya que esencialmente realizan cálculos en un flujo continuo de datos.
jamesqf
1
Creo que sus estimaciones para la lentitud de una máquina de "solo memoria virtual" son un poco exageradas, pero en principio correctas.
Leftaroundabout
1
Dado que el disco es> 1,000,000 más lento que la RAM, creo que la estimación es, en todo caso, baja.
Dancrumb
2
@Dancrumb No estoy seguro de dónde vinieron tus 1,000,000 (¿veces?). DDR3 SDRAM puede proporcionarle del orden de 10 GB / s , mientras que incluso un disco duro rotativo de 7200 rpm le proporcionará aproximadamente 100 MB / s (0.1 GB / s) secuencial. Eso es un factor de 100; ciertamente significativo, pero muy lejos de 1,000,000 de veces. Donde la RAM supera ampliamente a un HDD es en la latencia de búsqueda, pero puede aliviarlo en gran medida utilizando un SSD. DDR3 tiene una latencia en la región de 10 ns, y un SSD rápido podría tener una latencia en la región de 10,000 ns (100k IOPS), por un factor de 1,000; todavía muy lejos de 1,000,000.
un CVn
1
@PeterCordes Editado, así que no parece que afirme que Win / Linux podría ejecutarse sin RAM.
Zeiss Ikon
10

Puede, porque cuando se inicia una CPU x86, la caché L2 es inicialmente una SRAM antes de usarse como caché. Por lo tanto, puede escribir su propia BIOS para no inicializar la RAM y usar solo la pequeña cantidad de SRAM dentro de la CPU como RAM en lugar de caché L2 / L3.

Simplemente lea las pautas de BIOS de los fabricantes de CPU.

Avlin
fuente
44
+1 por decir eso. De hecho, cada sistema x86 (computadora) se inicia "sin usar ram". El código de la BIOS primero detecta si hay algún carnero y emite un pitido en caso de que no haya ninguno. Este código puede ejecutarse sin ram;) (ofc no se puede hacer mucho sin ram, seguro que los registros no serían suficientes para manejar el HDD y usarlo "como ram")
Sebi
10

TODAS las CPU modernas, estándar y de propósito general funcionan fundamentalmente así:

  • La CPU mantiene un registro que apunta en su espacio de direcciones a la siguiente instrucción
  • La CPU recupera lo que hay en ese espacio de direcciones y los incrementos que se registran
  • Si la instrucción necesita información adicional, como una dirección de destino u otro operando, también se obtiene
  • CPU ejecuta instrucción
  • Si la instrucción es un salto, llamada, retorno, retorno de interrupción o rama, puede modificar el registro que apunta a la siguiente instrucción.
  • Repetir

La CPU recupera lo que hay en ese espacio de direcciones y los incrementos que se registran

¿Qué puede "vivir" en un espacio de direcciones?

  • Nada (puede devolver ceros, datos aleatorios o hacer que la CPU se bloquee)
  • RAM (RAM de la placa base, RAM de un dispositivo PCI, como un adaptador de gráficos, etc.)
  • ROM
  • Registros de un dispositivo de E / S (esto incluye "dispositivos de E / S internos" como el APIC local de la CPU)
  • Las CPU modernas permiten "caché como RAM", por lo que una parte de la caché de las CPU puede aparecer en el espacio de direcciones

Observe que "disco duro" no está en esa lista. El disco duro no está conectado directamente a la CPU. Los datos llegan y salen del disco duro a través de un dispositivo de E / S (adaptador de host SATA) conectado a la CPU.

El dispositivo de E / S usa DMA para cargar / guardar datos en / desde el disco duro. Esto significa que el dispositivo de E / S lee / escribe la RAM directamente, sin intervención de la CPU, y también se basa en la existencia de RAM. Pero si el dispositivo de E / S no ha cargado los datos en la RAM, la CPU no tiene posibilidad de verlos.

Por lo tanto, no puede tener las instrucciones de búsqueda de CPU directamente desde el disco duro.


Lo que sucede durante una falla de página es:

  • La CPU intenta acceder a una página de memoria que está marcada como intercambiada en las tablas de páginas de la CPU local (que siempre están presentes en la RAM).
  • Este acceso provoca una excepción de falla de página en la CPU.
  • La CPU, ahora en modo kernel, mira la página a la que el otro proceso estaba intentando acceder.
  • El núcleo se da cuenta de que un proceso de usuario está intentando acceder a una página intercambiada e invoca el proceso normal de E / S para volver a intercambiar esa página desde el disco. Este es el mismo proceso que se usaría al cargar / guardar cualquier otro dato del disco. No es diferente solo porque la CPU está buscando en la memoria intercambiada.
  • La CPU luego devuelve el control al proceso interrumpido, que continúa como si nada hubiera pasado.

Por lo tanto, la CPU que necesita obtener datos del disco porque la memoria se intercambia no es diferente.

LawrenceC
fuente
2
+1por ser la única respuesta aquí que trata el problema real , no solo de lo que sucedería , sino también por qué .
@ultrasawblade, por qué no CPU tiene la oportunidad de ver los datos, incluso si la CPU exige una página (información) y si no está disponible en la memoria RAM (memoria primaria), entonces se produce un error de página, entonces la solicitud de CPU al disco duro para que datos deseados. Eso significa que la CPU finalmente tiene que ir al disco duro para obtener la información requerida.
akash ujjwal
2
Ver ediciones. La paginación del núcleo en la memoria intercambiada no es diferente a la carga de un programa o la lectura / escritura de un programa en el disco. Simplemente sucede dentro del kernel y detrás del escenario de un proceso de usuario, pero no detrás del escenario del kernel.
LawrenceC
Tenga en cuenta que al menos x86 puede usar la memoria caché como RAM con el modo sin relleno, pero entonces está en el mismo barco que los microcontroladores que vienen con algo de RAM incorporada. Ejecutar la CPU con solo ROM y sin espacio de direcciones grabables es plausible (si todo su estado cabe en los registros, y tenga en cuenta que las CPU x86 más recientes tienen treinta y dos registros vectoriales 512M ZMM ...) Pero acordó que no es plausible sin espacio de direcciones legible para el código (y GDT / LDT / IDT y otras tablas para x86).
Peter Cordes
7

Una computadora personal requiere RAM para funcionar. Todas las aplicaciones iniciadas desde el disco duro se copiarán a la RAM antes de ejecutarse.

Entonces, si no tiene RAM en su computadora, su computadora no se iniciará, probablemente le dará varios pitidos de advertencia para informarle que no hay RAM instalada.

LPChip
fuente
55
Luego te tocas la frente y dices: "¿No debería haber intentado instalar estos bastones de RAM en un ambiente alfombrado con menos del 10% de humedad, el 27 de diciembre en el hemisferio norte?" ¿Si?
arch-abit
@LPChip por qué se almacena en Ram cuál es el objetivo principal de la misma. Para acelerar el sistema o reducir el tiempo de acceso, hay una caché incorporada para hacerlo. ¿Estoy bien o mal?
akash ujjwal
1
La RAM es un almacenamiento de memoria rápido, el acceso al disco es lento, el almacenamiento de memoria no volátil y el caché de la CPU está allí por otras razones.
Fiasco Labs
1
@FiascoLabs En realidad, el caché de la CPU está ahí por la misma razón que la RAM: es un almacenamiento realmente rápido. Es mucho más rápido que la RAM, pero más caro por byte.
reirab
Y una computadora no se ejecutará de forma independiente, por lo tanto, "otras razones"
Fiasco Labs
5

La computadora no funcionará. RAM es una parte esencial de una publicación exitosa desde la placa base. Cuando la RAM no está presente o dañada, muchas placas base suelen proporcionar códigos de pitidos para indicar dónde buscar en la resolución de problemas.

Carl B
fuente
Sí, eran pequeños anillos de metal que serían magnetizados / desmagnetizados. en.wikipedia.org/wiki/Magnetic-core_memory (En respuesta a un comentario sobre computadoras antiguas con tubo de vacío que se ha eliminado)
Fiasco Labs
2

En realidad, en al menos dos casos podría ejecutar una computadora sin lo que técnicamente se conoce como RAM

  1. Las primeras "computadoras" mecánicas antiguas (la construcción de Konrad Zuse y la computadora de Charles Babbage eran dispositivos mecánicos sin RAM, todavía llamados computadoras)

  2. Una computadora moderna sin RAM y solo un procesador (chip) con registros . En la mayoría de los casos, tiene SRAM (memoria caché) en el procesador, pero la memoria más rápida de la computadora se llama registros ubicados en el chip, y técnicamente los registros en el chip no son RAM.

Niklas
fuente
1
Gracias por esta respuesta: la primera vez que recuerdo haber oído hablar de Zuse y sus primeras computadoras electromecánicas (aunque las primeras lecturas que recuerdo de las computadoras siempre hablaban de "relés" como unidades de conmutación, todas las otras computadoras tempranas parecen haber usado tubos de vacío )
Zeiss Ikon
1

Simplemente no se ejecutará. La placa base probablemente emitirá un pitido de una manera inusual y se apagará. Si no tiene suficiente RAM, incluso 128 MB para Windows XP, se negará a instalar (en realidad lo intentó con una computadora vieja; uno de los chips no se colocó correctamente). Entonces, con las configuraciones actuales es imposible. Incluso si pudiera deshabilitar las comprobaciones de la placa base, la CPU no puede leer los datos directamente del disco duro y necesita RAM para cada operación.

Supongo que, en teoría, sería posible construir una máquina que use poca o ninguna RAM, pero sería poco eficiente.

Luke
fuente