¿Es una computadora sin RAM, pero con un disco, equivalente a una con RAM?

18

La memoria se usa para muchas cosas, según tengo entendido. Sirve como caché de disco y contiene las instrucciones de los programas, y su pila y montón. Aquí hay un experimento mental. Si a uno no le importa la velocidad o el tiempo que le toma a una computadora hacer el procesamiento, ¿cuál es la cantidad mínima de memoria que uno puede tener, suponiendo que tenga un disco muy grande? ¿Es posible eliminar la memoria y solo tener un disco?

El almacenamiento en caché de disco obviamente no es necesario. Si configuramos espacio de intercambio en el disco, la pila de programas y el montón tampoco requieren memoria. ¿Hay algo que requiera memoria para estar presente?

Tosh
fuente
3
¿Cuál es la idea detrás de esta pregunta?
Yves Daoust
12
Definir "disco". Nos estamos moviendo rápidamente hacia un mundo sin disco (me alegro de que Terry Pratchett no tenga que presenciarlo). Esto significa que todo el almacenamiento será un tipo de estado sólido u otro, que es como responder a su pregunta, aunque probablemente sea a la inversa.
Peter - Restablece a Monica
2
Memoria es memoria es memoria
Édouard
8
La memoria direccionable al azar no es, a mi leal saber y entender, un requisito para las computadoras. La cinta de una máquina Turing no es direccionable al azar. Nada le impide leer / escribir solo un bit por bloque si lo desea.
Édouard

Respuestas:

24

Seguro. En principio, con el hardware apropiado, podría tener solo un disco, con todo almacenado en el disco. Cada vez que la CPU realiza una instrucción de carga o almacenamiento, puede haber algún hardware que lo convierta en un disco de lectura o escritura. Sería extremadamente lento: en un disco magnético, cada búsqueda dura unos 10 ms, por lo que podría realizar alrededor de 100 lecturas y escrituras de acceso aleatorio por segundo.

Algunos sistemas tienen memoria flash asignada en su espacio de direcciones. La memoria flash proporciona almacenamiento no volátil (persistente). Entonces, de alguna manera, esto se parece a lo que mencionas, aunque esos sistemas generalmente también tienen RAM.

DW
fuente
66
@MSalters señala que si modificamos un disco (o colocamos hardware adicional encima) para que sea similar a la RAM, también podríamos llamarlo RAM. El problema es que la pregunta "¿Es posible eliminar la memoria y solo tener un disco?" Es demasiado vaga. ¿Qué queremos decir con memoria y disco? ¿Nos referimos a los que existen en una PC de escritorio moderna? Entonces la respuesta es no. ¿Nos referimos a alguna memoria y disco hipotéticos? Entonces, en ese caso, la distinción entre los dos es borrosa de todos modos, y la pregunta es equivalente a "¿es posible tener una computadora con RAM mecánica?" .
JBentley
1
El AS / 400 funciona de esta manera. Hay un almacenamiento de nivel único y solo un espacio de direcciones. El firmware de la plataforma combina el disco y la memoria en una única abstracción de almacenamiento, el sistema operativo solo ve un único espacio de almacenamiento unificado plano. No hay punteros, solo referencias a objetos. El firmware de la plataforma mueve los objetos de la memoria al disco y viceversa (BIOS en PC-speak, SLIC en AS / 400-speak). No habría ninguna diferencia en el sistema operativo y las aplicaciones si eliminara los discos y tuviera solo RAM o quitara la RAM y solo tuviera discos.
Jörg W Mittag
También creo que la vida útil de los discos duros será mucho más corta. Y aún peor para un SSD. Lo más probable es que la razón por la que los teléfonos Android no tienen intercambio
Suici Doga
16

En términos de computabilidad, se sabe que cada computadora moderna puede ser simulada por una máquina de Turing cuyo único almacenamiento es una celda de cinta lineal única que se puede escribir. Suponiendo que pueda seguir agregando cantidades ilimitadas de almacenamiento en disco, una computadora que solo tenga discos duros es igual de poderosa. Así que ciertamente podrías hacer una computadora sin memoria.

Por supuesto, no hay discos duros de "espacio ilimitado", pero tampoco hay RAM ilimitada.

Existen varios problemas prácticos, por ejemplo, necesitaría convenciones para mapear diferentes áreas y direcciones en el disco, un sistema operativo que escribió en el disco para almacenamiento intermedio y direcciones de disco administradas. En realidad, terminaría simulando de cerca la RAM en su disco duro.

jmite
fuente
14

La pregunta no es puramente académica. Es una cuestión de registro histórico que una de las primeras computadoras producidas comercialmente [perdón, no recuerdo cuál de improviso] no tenía RAM: todos los programas se ejecutaron obteniendo instrucciones directamente de un tambor magnético [un cilindro giratorio con superficie externa magnetizable (los discos vinieron después)]. Fue relativamente lento, pero mucho más barato que muchos de la competencia. [Esto fue en los días del 'tubo']

Curiosamente, vino con una herramienta ahora obsoleta conocida como 'ensamblador optimizador', es decir, el ensamblador no solo generó instrucciones de la máquina, sino que las escribió en el tambor de manera no consecutiva para minimizar, para cada instrucción, la cantidad de tiempo esperando que el tambor gire al siguiente.

PMar
fuente
3
Puede estar pensando en Stantec Zebra - archive.computerhistory.org/resources/text/Standard/… . Todavía tenían uno en el departamento de informática cuando fui a la universidad en 1967.
David Marshall
3
En realidad, creo que podría haber estado pensando en el IBM 1408.
PMar
8
Vea también la Historia de Mel ( catb.org/jargon/html/story-of-mel.html ) que trata sobre un programador que trabajó en el Royal McBee LPG-30, que tenía memoria de batería.
db48x
@ db48x: había olvidado lo genial que era esa historia. Probablemente no lo he leído en 10 años.
Peter Cordes
7

No. Las unidades de disco no son direccionables al azar como la RAM. En cambio, son dispositivos de almacenamiento en bloque. No puedes leer ni escribir un byte de ellos. Y su CPU no puede leer todo un sector a la vez, necesitan ese acceso aleatorio. Los sistemas operativos le ocultan este nivel de detalle, pero lo hacen leyendo un sctor completo en la RAM, modificándolo y volviéndolo a escribir.

Como resultado, necesita un bloque de almacenamiento de acceso aleatorio. Esto podría ser el caché de la CPU, que está hecho de SRAM (un tipo rápido de RAM).

No son solo discos. La memoria flash está diseñada, por diseño, con bloques, lo cual es clave para su bajo precio. Incluso tiene bloques mucho más grandes que los sectores de disco normales, pero usa RAM internamente para ocultar eso del sistema operativo.

Puede hacer un almacenamiento persistente que pueda ser utilizado directamente por una CPU. El almacenamiento de EEPROM entraría en esta categoría (memoria programable de solo lectura "borrable electrónicamente", aunque "lectura optimizada" sería una descripción mejor).

MSalters
fuente
55
Creo que su "No" debería ser "Sí, pero requeriría discos personalizados".
Taemyr
3
Ciertamente puedes leer un byte, en ambos. Lo que no puede hacer es escribir un solo byte, porque las escrituras necesitan una escritura de bloque completa a la vez. Sin embargo, en principio, no hay ninguna razón por la que no pueda modificar un bloque copiando los datos no modificados del bloque original en un bloque nuevo, escribiendo nuevos datos en su lugar cuando sea necesario y luego volviéndolos a copiar en el bloque original. Usarás tu disco bastante rápido, pero eso es inevitable por la pregunta del OP de todos modos.
Graham
3
Y el "bloqueo" se realiza para un uso eficiente del espacio en el disco físico: se necesita espacio alrededor de cada pieza de datos "reales" para identificar el bloque, proporcionar espacio de "protección" entre bloques, etc. No hay ninguna razón técnica por la cual los bloques no puedan ser uno byte de largo (pero la velocidad caería aún más que la capacidad).
TripeHound
66
En realidad, incluso la RAM actual no es realmente direccionable en bytes: DDR3 funciona en ráfagas y el tamaño mínimo de lectura / escritura es de 8 palabras de 64 bits (es decir, 64 bytes); No soy un experto, pero apuesto a que también se requiere acceso alineado. Todo esto no es tan diferente de los discos más antiguos, donde el tamaño del bloque era del orden de 512 bytes, por lo que diría que estas distinciones son en su mayoría históricas, la línea es realmente borrosa.
Matteo Italia
1
(también, nada te detiene para usar un bloque completo, sea cual sea el tamaño, solo para mantener un byte, un poco ineficiente, pero siempre que no sea yo quien pague los discos, está bien)
Matteo Italia
1

Cuando usa memoria virtual y necesita manejar fallas de página, al menos el controlador de excepciones maneja la falla de página, el controlador de disco que lee los datos del disco duro y primero escribe páginas sucias en el disco, y las tablas de páginas necesitan estar en RAM todo el tiempo. Porque si no están en RAM, no puede volver a cambiarlos a RAM. Además, necesita espacio para al menos una página de RAM.

Si tuviera una CPU como un Xeon masivo de 12 núcleos con 30 MB de memoria caché, es posible que tenga un sistema sin RAM ni disco duro, pero use solo la memoria caché. (No estoy seguro si eso realmente funciona o si por alguna razón se requiere RAM).

gnasher729
fuente
IIRC, x86 tiene un modo en el que usa caché interna como memoria principal. electronics.stackexchange.com/questions/16485/… tiene algunos detalles. Creo que a veces se llama "modo sin relleno", es decir, la CPU no intenta realmente llenar las líneas de caché desde la memoria externa. Esto podría impedir el uso de DMA para E / S del disco duro, porque el "agente del sistema" no puede DMA en el caché L3. Podría funcionar en un Skylake con L4 eDRAM, porque está configurado como una memoria caché en el lado de la memoria (a diferencia de Broadwell) que puede almacenar en caché todo , incluido DMA. Programmed-IO todavía funcionaría para el disco.
Peter Cordes
Por supuesto, en ese momento está ejecutando un System-on-Chip con 128MiB de RAM, que era una cantidad decente hace 15 años. Con solo cachés L3 SRAM, eso sigue siendo de 4 a 8MiB en un chip de escritorio, lo que tal vez sea suficiente para un Linux muy reducido, pero lo suficientemente fácil para DOS. Si la mayor parte de su código está en ROM, no en RAM, entonces está bien.
Peter Cordes
1

Es conceptualmente posible. RAM es solo un nivel de almacenamiento en caché. Hay muchos niveles de almacenamiento en caché en una computadora moderna (consulte las memorias caché L1, L2, L3 de la CPU, por supuesto, Ram, el área de intercambio -que es una sección lógica del disco utilizado como RAM ...-), si coloca o agregue uno, la máquina funcionará. Por ejemplo, un cd en vivo de Ubuntu no puede usar el nivel de almacenamiento en caché del HDD. Sin embargo, no creo que haya ningún sistema operativo que pueda soportar la ausencia de un nivel de RAM.

Picci
fuente
1
No es el sistema operativo, sino el hardware lo que está diseñado y requiere que las instrucciones estén en ram (en realidad, mapeado en el espacio de direcciones).
Ángel
@Angel, ¿es realmente necesario en un sistema operativo moderno que el texto (instrucciones), bss, stack y heap se carguen en la memoria para que un programa se ejecute? ¿No pueden estar en el intercambio (disco)? En Linux, por ejemplo.
Tosh
1
¿Estamos hablando de informática o ingeniería informática? No conozco la implementación de un sistema operativo, ni el nivel de hardware, solo me baso en la tesis de Church-Turing. Tal vez esto sea imposible con el hardware actual disponible en el mercado o con los sistemas operativos existentes, pero puede ser posible en un escenario teórico.
Picci
1
@Tosh no es un problema del sistema operativo sino del hardware. Su CPU ejecuta una instrucción ubicada en la dirección de memoria apuntada por el puntero de instrucción. Tan solo tener un disco no funcionará (sin alterar su hardware). Respondiendo a su pregunta, no toda la sección debería cargarse en la memoria, de hecho, el sistema operativo solo puede cargarlos cuando el programa intenta acceder a ellos. Como ejemplo de contador extremo, puede ejecutar el programa "desde el disco" mediante el uso de un emulador que lee una palabra * a la vez desde el disco duro. Pero necesitaría estar en la memoria, por lo que aún necesitaría algo de RAM.
Ángel
1
Lo sentimos, @Tosh: "tu emulador necesitaría estar en la memoria".
Ángel
-1

Técnicamente, la RAM es una memoria volátil primaria que se utiliza para mejorar la velocidad de procesamiento. Una vez que se va la energía, los datos en la memoria primaria se pierden. Si utilizamos un disco, es decir, como dice, solo un disco y no RAM, aún podríamos ejecutar nuestra computadora, pero habría más sobrecarga de lectura y escritura, lo que ralentizaría considerablemente el sistema. Por lo tanto, usamos RAM.

Sanket Gupte
fuente
Bienvenido a CS.SE! ¿Puede justificar su afirmación de que una mayor sobrecarga de lectura y escritura aumenta la posibilidad de un bloqueo frecuente del sistema? Eso no me suena bien.
DW
Depende de lo que estés usando. Al igual que en Unix / Linux, existe un concepto conocido como caché de búfer. Se puede utilizar para almacenar bloques capturados previamente o los bloques marcados para escritura retrasada. Pero en Windows o Mac no existe tal concepto. Por lo tanto, debe acceder a los bloques necesarios desde el almacenamiento secundario. Ahora, mientras se ejecutan procesos paralelos, la sobrecarga de lectura y escritura aumentaría y la velocidad de procesamiento disminuiría en consecuencia. Los procesos no podrán ejecutarse, lo que ralentizará la computadora de modo que comience a colgarse y se bloquee posteriormente
Sanket Gupte
2
Eso suena como una idea falsa. Disminuir la velocidad de una computadora no significa que la computadora se bloqueará.
DW