Executar um computador sem RAM? [duplicado]

14

Eu estava lendo sobre o tempo de busca da CPU , onde descobri que as CPUs levam muito menos tempo para acessar os dados da RAM do que para acessar um disco rígido, e que a RAM está presente para armazenar as informações e os dados do programa em execução.

Então me perguntei sobre o que acontecerá quando usarmos apenas um disco rígido, mas sem RAM?

akash ujjwal
fonte
1
Similar: superuser.com/q/805340/334004
Cornelius
1
@Cornelius obrigado pela sua resposta eu vou dar uma olhada :)
akash ujjwal
12
O que acontece são alguns bipes e a tela fica em branco.
arco-abit
1
Minha pergunta é: posso pelo menos testar se uma placa de vídeo está funcionando? Haveria vídeo ou o monitor funcionaria minimamente?
Marshal craft

Respostas:

27

Em algum momento, isso entra na questão do que conta como "RAM". Existem muitas CPUs e microcontroladores que possuem bastante memória no chip para executar pequenos sistemas operacionais sem chips de RAM separados. De fato, isso é relativamente comum no mundo dos sistemas embarcados. Portanto, se você está apenas se referindo a não ter nenhum chip de RAM separado conectado, sim, pode fazê-lo com muitos chips atuais, especialmente aqueles projetados para o mundo incorporado. Eu já fiz isso no trabalho. No entanto, como a única diferença real entre a memória endereçável no chip e os chips de RAM separados é apenas o local (e, obviamente, a latência), é perfeitamente razoável considerar a memória no chip como RAM. Se você está contando isso como RAM, o número atual,

Se você está se referindo a um PC normal, não, não é possível executá-lo sem os drives de RAM separados, mas isso ocorre apenas porque o BIOS foi projetado para não inicializar sem a RAM instalada (que, por sua vez, é tudo os sistemas operacionais de PC modernos exigem que a RAM seja executada, especialmente porque as máquinas x86 normalmente não permitem que você endereça diretamente a memória no chip; é usada apenas como cache.)

Por fim, como Zeiss disse, não há razão teórica para que você não possa projetar um computador para rodar sem nenhuma RAM, além de alguns registros. A RAM existe apenas porque é mais barata que a memória do chip e muito mais rápida que os discos. Os computadores modernos têm uma hierarquia de memórias que varia de grande, mas lenta a muito rápida, mas pequena. A hierarquia normal é algo como isto:

  • Registradores - Muito rápido (pode ser operado diretamente pelas instruções da CPU, geralmente sem latência adicional), mas geralmente muito pequeno (os núcleos do processador x86 de 64 bits têm apenas 16 registradores de uso geral, por exemplo, cada um com capacidade de armazenar um número único de 64 bits.) Geralmente, os tamanhos dos registros são pequenos porque os registros são muito caros por byte.
  • Cache de CPU - Ainda muito rápido (com latência de 1 a 2 ciclos) e significativamente maior que os registros, mas ainda muito menor (e muito mais rápido) que a DRAM normal. O cache da CPU também é muito mais caro por byte do que a DRAM, e é por isso que geralmente é muito menor. Além disso, muitas CPUs têm hierarquias mesmo dentro do cache. Eles geralmente têm caches menores e mais rápidos (L1 e L2), além de caches maiores e mais lentos (L3.)
  • DRAM (o que a maioria das pessoas pensa como 'RAM') - Muito mais lento que o cache (a latência de acesso tende a ser dezenas a centenas de ciclos de clock), mas muito mais barato por byte e, portanto, geralmente muito maior que o cache. A DRAM ainda é, no entanto, muitas vezes mais rápida que o acesso ao disco (geralmente centenas a milhares de vezes mais rápido).
  • Discos - estes são, mais uma vez, muito mais lentos que a DRAM, mas também geralmente muito mais baratos por byte e, portanto, muito maiores. Além disso, os discos geralmente não são voláteis, o que significa que eles permitem que os dados sejam salvos mesmo após o término de um processo (assim como após a reinicialização do computador).

Observe que todo o motivo das hierarquias de memória é simplesmente econômico. Não há razão teórica (pelo menos na ciência da computação) para não termos um terabyte de registros não voláteis em um dado de CPU. A questão é que seria incrivelmente difícil e caro construir. Ter hierarquias que variam de pequenas quantidades de memória muito cara a grandes quantidades de memória barata nos permite manter velocidades rápidas com custos razoáveis.

reirab
fonte
Agora, finalmente, recebo o que preciso. Você respondeu exatamente o que estou aparecendo. Muito obrigado :)
akash ujjwal
Na verdade, a razão pela qual os PCs não inicializam sem a RAM é o BIOS, se o código do BIOS não conseguir encontrar um endereço de realocação na RAM que ele aborta. Tudo o que você ouvirá é o zumbido da fonte de alimentação e o ruído dos ventiladores e talvez dos discos giratórios - mas o computador está basicamente com morte cerebral. A CPU nunca tem a chance de fazer tudo funcionar. Então, sim, a RAM é muito importante.
arco-abit
@ arch-abit sim, é verdade, mas a RAM é um componente necessário para executar um computador?
akash ujjwal
2
Além do que o @reirab disse, é possível executar um 'PC' sem DRAM no sentido de executar instruções - este é o modo no qual o sistema opera antes que o controlador DRAM seja inicializado (feito pelo BIOS / EFI / Coreboot etc.). No entanto, é improvável que você possa fazer algo útil, pois a maioria dos componentes provavelmente usa o DMA de qualquer maneira.
Maciej Piechotka
1
Os registradores de 32 bits x86 cpu são apenas 32 bits, e não 64, e os 64 bits cpus x86 possuem 32 em vez de 8 deles.
psusi
23

Seria teoricamente possível projetar um computador para operar com muito pouca (alguns registros) ou nenhuma RAM (consulte a definição de uma máquina de Turing - que pode realmente ser construída em uma implementação adequadamente grande / rápida de Conway's Life simulação).

A razão pela qual todos os computadores do mundo real usam RAM é, em primeiro lugar, histórica: a memória principal (o protótipo para RAM, apenas semi-volátil) é muito anterior ao armazenamento em massa como tambor ou disco magnético (embora tenha surgido depois de cartões perfurados e fita de papel - o primeiro remonta, em sua forma primitiva, a 1801 (sim, no início do século 19; teares Jacquard usavam cartões perfurados para tecer automaticamente um padrão de cores de complexidade arbitrária décadas antes dos tabuladores Babbage Difference Engines ou Hollerith); A RAM (como a memória principal), por ser eletrônica, é muito mais rápida do que qualquer dispositivo que depende do movimento físico da mídia de armazenamento para apresentar os dados a um mecanismo de leitura / gravação.

Um sistema ou complexidade semelhante a um computador Windows ou Linux moderno executando sem RAM (semelhante a uma verdadeira máquina de Turing) levaria dias apenas para iniciar e horas para atualizar a tela para uma interface gráfica em resoluções modernas. Mesmo um sistema operacional somente de texto comparável ao CP / M ou versões anteriores do DOS levaria muito tempo para chegar ao prompt de comando inicial.

Zeiss Ikon
fonte
4
Eu acho que você poderia considerar alguns DSPs (processadores de sinais digitais) e microprocessadores similares como computadores que funcionam sem RAM, pois eles estão basicamente fazendo cálculos em um fluxo contínuo de dados.
Jamesqf 27/12/2014
1
Acho que suas estimativas para a lentidão de uma máquina "apenas memória virtual" são um pouco exageradas, mas, em princípio, corretas.
leftaroundabout
1
Como o disco é> 1.000.000 mais lento que a RAM, acho que a estimativa está, no mínimo, no lado mais baixo.
28414 Dancrumb
2
@ Dancrumb Não sei de onde vieram seus 1.000.000 (vezes?). O SDRAM DDR3 pode oferecer na ordem de 10 GB / s , enquanto até um HD de rotação de 7200 rpm oferece cerca de 100 MB / s (0,1 GB / s) seqüenciais. Esse é um fator de 100; certamente significativo, mas muito longe de 1.000.000 de vezes. Onde a RAM supera muito o desempenho de um HDD, procure latência, mas você pode aliviá-lo bastante usando um SSD. O DDR3 tem uma latência na região 10 ns e um SSD rápido pode ter uma latência na região 10.000 ns (100k IOPS), por um fator 1.000; ainda está muito longe de 1.000.000.
um CVn
1
@PeterCordes Editado para não parecer que estou afirmando que o Win / Linux pode ser executado sem RAM.
Zeiss Ikon
10

Você pode, porque quando uma CPU x86 é iniciada, o cache L2 é inicialmente uma SRAM antes usada como cache. Portanto, você pode escrever sua própria bios para não inicializar a RAM e usar apenas a pequena quantidade de SRAM dentro da CPU como RAM, em vez de cache L2 / L3.

Basta ler as diretrizes da BIOS dos fabricantes de CPU.

Avlin
fonte
4
+1 por afirmar isso. De fato, todo sistema x86 (computador) inicia "sem usar ram". O código do BIOS primeiro detecta se há memória ram e emite um sinal sonoro caso não exista. Este código pode ser executado sem ram;) (OFC não muito pode ser feito sem ram, com certeza registos, não seria suficiente para lidar com HDD e usá-lo "como ram")
Sebi
10

TODAS as CPUs modernas, padrão e de uso geral funcionam fundamentalmente da seguinte maneira:

  • A CPU mantém um registro que aponta em seu espaço de endereço para a próxima instrução
  • A CPU busca o que está nesse espaço de endereço e os incrementos que são registrados
  • Se a instrução precisar de informações adicionais, como um endereço de destino ou outro operando, também será buscada
  • CPU executa instruções
  • Se a instrução for um salto, chamada, retorno, retorno de interrupção ou ramificação, ela poderá modificar o registro que aponta para a próxima instrução.
  • Repetir

A CPU busca o que está nesse espaço de endereço e os incrementos que são registrados

O que pode "viver" em um espaço de endereço?

  • Nada (pode retornar zeros, dados aleatórios ou causar o bloqueio da CPU)
  • RAM (RAM da placa mãe, RAM de um dispositivo PCI, como um adaptador gráfico, etc.)
  • ROM
  • Registros de um dispositivo de E / S (isso inclui "dispositivos de E / S internos", como o APIC local da CPU)
  • As CPUs modernas permitem "armazenar em cache como RAM" para que uma parte do cache das CPUs possa aparecer no espaço de endereço

Observe que "disco rígido" não está nessa lista. O disco rígido não está diretamente conectado à CPU. Os dados chegam e saem do disco rígido por meio de um dispositivo de E / S (adaptador host SATA) conectado à CPU.

O dispositivo de E / S usa o DMA para carregar / salvar dados no / do disco rígido. Isso significa que o dispositivo de E / S lê / grava diretamente a própria RAM - sem intervenção da CPU - e também conta com a presença da RAM. Mas se os dados não foram carregados na RAM pelo dispositivo de E / S, a CPU não tem chance de vê-los.

Portanto, você não pode ter a CPU buscar instruções diretamente do disco rígido.


O que acontece durante uma falha de página é:

  • A CPU tenta acessar uma página de memória marcada como trocada nas tabelas de páginas da CPU local (que estão sempre presentes na RAM).
  • Esse acesso causa uma exceção de falha de página na CPU.
  • A CPU, agora no modo kernel, olha para a página que o outro processo estava tentando acessar.
  • O kernel percebe que um processo do usuário está tentando acessar uma página trocada e invoca o processo de E / S normal para trocar a página novamente a partir do disco. Este é o mesmo processo que seria usado ao carregar / salvar outros dados do disco. Não é diferente apenas porque a CPU está paginando na memória trocada.
  • A CPU entrega o controle de volta ao processo interrompido, que continua como se nada tivesse acontecido.

Portanto, a CPU que precisa obter dados do disco porque a memória é trocada não é diferente.

LawrenceC
fonte
2
+1por ser a única resposta aqui, lidando com o problema real , não apenas do que aconteceria , mas também do porquê .
@ultrasawblade por que não a CPU tem a chance de ver os dados, mesmo que a CPU exija uma página (informações) e se ela não estiver disponível na memória RAM (memória primária), ocorrerá uma falha na página e a solicitação da CPU ao disco rígido para esses dados desejados. Isso significa que a CPU finalmente precisa ir ao disco rígido para obter as informações necessárias.
akash ujjwal
2
Veja edições. A paginação do kernel na memória trocada não é diferente de um carregamento de programa ou um programa de leitura / gravação em disco. Isso acontece apenas dentro do kernel e nos bastidores de um processo do usuário, mas não nos bastidores do kernel.
LawrenceC
Observe que pelo menos o x86 pode usar o cache como RAM com o modo sem preenchimento, mas você está no mesmo barco que os microcontroladores que vêm com alguma RAM embutida. Executar a CPU apenas com ROM e sem espaço de endereço gravável é plausível (se todo o seu estado se encaixar nos registradores, e observe que as CPUs x86 mais recentes possuem trinta e dois registradores vetoriais ZMM 512b ...) Mas concordamos que não é plausível sem espaço de endereço legível para código (e GDT / LDT / IDT e outras tabelas para x86).
Peter Cordes
7

Um computador pessoal requer que a RAM seja executada. Todo aplicativo iniciado a partir do disco rígido será copiado para a RAM primeiro antes de ser executado.

Portanto, se você não possui nenhuma RAM no seu computador, o computador não inicia, provavelmente emitirá vários bipes de aviso para informar que não há RAM instalada.

LPChip
fonte
5
Então você bate na sua testa e diz: "Eu não deveria tentar instalar esses sticks de RAM em um ambiente acarpetado com menos de 10% de umidade, em 27 de dezembro no Hemisfério Norte?" Sim?
arco-abit
@LPChip: por que ele é armazenado no Ram, qual é o principal objetivo dele? Para acelerar o sistema ou reduzir o tempo de acesso, há um cache embutido para isso. Estou certo ou errado?
akash ujjwal
1
A RAM é um armazenamento de memória rápido, o acesso ao disco é lento, o armazenamento de memória não volátil e o cache da CPU existe por outros motivos.
Fiasco Labs
1
@FiascoLabs Na verdade, o cache da CPU existe pelo mesmo motivo da RAM: é um armazenamento muito rápido. É muito mais rápido que a RAM, mas mais caro por byte.
reirab
E um computador não estará rodando sozinho, daí "outras razões"
Fiasco Labs
5

O computador não irá funcionar. A RAM é uma parte essencial da publicação bem-sucedida da placa-mãe. Quando a RAM não está presente ou está danificada, muitas placas-mãe normalmente emitem códigos de bipes para indicar onde procurar na solução de problemas.

Carl B
fonte
Sim, eram pequenos anéis de metal que seriam magnetizados / desmagnetizados. en.wikipedia.org/wiki/Magnetic-core_memory (Em resposta a um comentário sobre computadores de tubo de vácuo velhas que foi excluído)
Fiasco Labs
2

Na verdade, você pode, em pelo menos dois casos, executar um computador sem o que é tecnicamente chamado de RAM

  1. Os primeiros "computadores" mecânicos antigos (a construção de Konrad Zuse e o computador de Charles Babbage eram dispositivos mecânicos sem RAM ainda chamados computadores)

  2. Um computador moderno sem RAM e apenas um processador (chip) com registradores . Na maioria dos casos, você possui SRAM (memória cache) no processador, mas a memória mais rápida do computador é chamada de registros localizados no chip, e tecnicamente os registros no chip não são RAM.

Niklas
fonte
1
Obrigado por esta resposta - pela primeira vez, lembro-me de ouvir sobre Zuse e seus primeiros computadores eletromecânicos (embora as primeiras leituras que lembro sobre computadores sempre falassem em "relés" como unidades de comutação, todos os outros primeiros computadores parecem ter usado tubos de vácuo )
Zeiss Ikon
1

Apenas não vai funcionar. A placa-mãe provavelmente emitirá um bipe de maneira incomum e será desligada. Se você não tiver RAM suficiente, mesmo 128 MB para o Windows XP, ele se recusará a instalar (na verdade, tentei isso com um computador antigo; um dos chips não foi colocado corretamente). Portanto, com as configurações atuais é impossível. Mesmo que você possa desativar as verificações da placa-mãe, a CPU não pode ler dados diretamente do disco rígido e precisa de RAM para todas as operações.

Eu acho que, em teoria, seria possível construir uma máquina que usa pouca ou nenhuma RAM, mas seria ineficaz.

Lucas
fonte