Executa um computador sem RAM? [duplicado]

12

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

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

    
por akash ujjwal 27.12.2014 / 19:58

8 respostas

24

Em algum momento, isso entra na questão do que até conta como "RAM". Existem muitas CPUs e microcontroladores que têm bastante memória no chip para rodar pequenos sistemas operacionais sem chips de RAM separados. Na verdade, isso é relativamente comum no mundo dos sistemas embarcados. Então, se você está apenas se referindo a não ter chips de RAM separados anexados, então, sim, você pode fazer isso com muitos chips atuais, especialmente aqueles projetados para o mundo embarcado. Eu fiz isso sozinho no trabalho. No entanto, como a única diferença real entre a memória endereçável no chip e os chips RAM separados é apenas a localização (e, obviamente, a latência), é perfeitamente razoável considerar a própria memória no chip como RAM. Se você está contando isso como RAM, então o número de processadores atuais e reais que seriam realmente executados sem a RAM é bastante reduzido.

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

Finalmente, como Zeiss disse, não há razão teórica para que você não possa projetar um computador para rodar sem qualquer RAM, além de alguns registros. A RAM existe apenas porque é mais barata que a memória no chip e muito mais rápida que os discos. Computadores modernos têm uma hierarquia de memórias que variam de grandes, mas lentas a muito rápidas, mas pequenas. A hierarquia normal é algo assim:

  • Registros - Muito rápido (pode ser operado diretamente pelas instruções da CPU, geralmente sem latência adicional), mas geralmente muito pequeno (núcleos de processador x86 de 64 bits têm apenas 16 registros de finalidades gerais, por exemplo, cada um podendo para armazenar um único número de 64 bits.) Os tamanhos de registro são geralmente pequenos porque os registros são muito caros por byte.
  • Caches da CPU - Ainda são muito rápidos (geralmente de 1 a 2 ciclos de latência) e significativamente maiores que os registradores, mas ainda muito menores (e muito mais rápidos) do que a DRAM normal. O cache da CPU também é muito mais caro por byte do que a DRAM, e é por isso que ela é tipicamente muito menor. Além disso, muitas CPUs possuem 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 lenta que o cache (latência de acesso tende a dezenas a centenas de ciclos de clock), mas muito mais barata por byte e, portanto, tipicamente maior que cache. A DRAM ainda é, no entanto, muitas vezes mais rápida que o acesso ao disco (normalmente centenas a milhares de vezes mais rápido).
  • Discos - Estes são, novamente, muito mais lentos que 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 depois que um processo é encerrado (assim como depois que o computador é reiniciado).

Note que todo o motivo das hierarquias de memória é simplesmente economia. Não há nenhuma razão teórica (pelo menos dentro da ciência da computação) porque não poderíamos ter um terabyte de registros não voláteis em um dado de CPU. A questão é que seria insanamente 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.

    
por 27.12.2014 / 21:06
24

Seria teoricamente possível projetar um computador para operar com muito pouco (poucos registros) ou sem memória RAM (procure a definição de uma máquina de Turing - que pode realmente ser construída em uma implementação adequadamente grande / rápida da simulação de vida de Conway).

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 disco magnético ou disco. fita - a primeira das quais remonta, em sua forma primitiva, a 1801 (sim, no início do século 19; Jacquard usava cartões perfurados para tecer automaticamente um padrão de cores de complexidade arbitrária décadas antes até mesmo Engenheiros de Diferença de Babbage ou Tabuladores de Hollerith), em segundo lugar, RAM (como memória de núcleo), sendo eletrônico, é muito mais rápido 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. / p>

Um sistema ou complexidade similar a um computador Windows ou Linux moderno rodando sem RAM (similar a uma verdadeira máquina de Turing) levaria apenas alguns dias 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 alcançar o prompt de comando inicial.

    
por 27.12.2014 / 20:21
12

TODOS os CPUs modernos, padrão e de uso geral funcionam basicamente assim:

  • 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 quer que esteja nesse espaço de endereço e incrementa esse registro
  • Se a instrução precisar de informações adicionais, como um endereço de destino ou outro operando, ela também será buscada
  • CPU executa instrução
  • Se a instrução for um salto, uma chamada, um retorno, um retorno de uma interrupção ou uma ramificação, ela poderá modificar o registro que aponta para a próxima instrução.
  • Repetir

CPU fetches whatever is in that address space and increments that register

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

  • Nada (pode retornar zeros, dados aleatórios ou causar 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)
  • CPUs modernas permitem "cache como RAM", então uma parte do cache de CPUs pode aparecer no espaço de endereço

Aviso "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 de 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ê diretamente / grava a própria RAM - sem a intervenção da CPU - e também depende da RAM estar lá. Mas se os dados não tiverem sido carregados na RAM pelo dispositivo de E / S, a CPU não terá chance de vê-los.

Portanto, você não pode ter a CPU buscando 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 da página 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, examina 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 de volta do disco. Este é o mesmo processo que seria usado ao carregar / salvar quaisquer outros dados do disco. Não é diferente apenas porque a CPU está paginando na memória trocada.
  • A CPU controla o processo interrompido, que continua como se nada tivesse acontecido.

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

    
por 27.12.2014 / 20:54
10

Você pode, porque quando uma CPU x86 é iniciada, o cache L2 é inicialmente uma SRAM antes de ser usado como cache. Então você pode escrever suas próprias biografias a fim de não inicializar a RAM e usar apenas a pequena quantidade de SRAM dentro da CPU como RAM ao invés de cache L2 / L3.

Basta ler as diretrizes do BIOS dos fabricantes de CPU.

    
por 27.12.2014 / 22:32
8

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

Portanto, se você não tiver RAM no computador, o computador não inicializará, provavelmente, vários bipes de aviso para avisar que não há RAM instalada.

    
por 27.12.2014 / 20:05
5

O computador não será executado. RAM é uma parte essencial do post de sucesso da placa-mãe. Quando a RAM não está presente ou danificada, muitas placas-mãe normalmente emitem códigos de bipe para indicar onde procurar na solução de problemas.

    
por 27.12.2014 / 20:05
2

Na verdade, você poderia em pelo menos dois casos rodar 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, chamados computadores)

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

por 27.12.2014 / 23:12
1

Isso simplesmente não será executado. A placa-mãe provavelmente apitará de maneira incomum e desligará. Se você não tiver RAM suficiente, mesmo 128 MB para o Windows XP, ele se recusará a instalar (na verdade, tentou isso com um computador antigo; um dos chips não foi colocado corretamente). Então, com as configurações atuais é impossível. Mesmo se você pudesse desativar as verificações da placa-mãe, a CPU não pode ler os dados diretamente do disco rígido e precisa de RAM para cada operação.

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

    
por 27.12.2014 / 22:06