Uma CPU pode funcionar com nada mais que uma fonte de alimentação e uma ROM, usando apenas o cache interno como RAM?

61

Uma CPU (como a Intel i3 / i5 / i7 / Xeon) com RAM de cache no chip pode usá-la como sua única RAM funcional, sem bancos de memória externos conectados?

Ou deve haver RAM externa e o cache não pode ser acessado ou usado sozinho?

As CPUs de desktop / servidor modernas costumam ter mais RAM interna do cache do que muitos computadores dos anos 90 tinham na memória inteira do sistema; portanto, deve haver bastante o suficiente para executar código simples.

As CPUs anteriores à existência do cache, como o 6502, seriam incapazes de fazer qualquer coisa, pois a RAM interna da CPU chegava a apenas alguns bytes para o contador de endereços e acumuladores.

Não se trata de executar qualquer tipo de sistema operacional moderno, mas executar um código simples programado em uma ROM personalizada ou inserido manualmente com um teclado de entrada hexadecimal.

Dale Mahalko
fonte
1
Depende totalmente da CPU e o que exatamente você quer dizer com "cache", já que algumas CPUs têm sua ram incorporada e não precisam de chips externos.
precisa saber é o seguinte
42
basicamente, se você incluir memória endereçável no próprio processador, criará o que chamamos de microcontrolador. Estes existem.
Marcus Müller
1
Quem disse que você precisa de alguma RAM?
Chris Stratton
1
Depende de como você define "função". Aposto que um i7 é perfeitamente capaz de produzir calor com apenas uma bateria conectada a ele.
Dmitry Grigoryev
2
Há várias coisas que você pode fazer com apenas alguns registros e sem RAM adicional. Por exemplo, um gerador de funções.
David Schwartz

Respostas:

67

Veja esta conta extremamente detalhada da sequência de inicialização do PC: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

Como nenhuma DRAM está disponível neste momento, o código opera inicialmente em um ambiente sem pilha. A maioria dos processadores modernos possui um cache interno que pode ser configurado como RAM para fornecer uma pilha de software. Os desenvolvedores devem escrever um código extremamente rígido ao usar esse recurso de cache como RAM, porque uma remoção seria inaceitável para o sistema neste momento na sequência de inicialização; não há memória para manter a coerência. É por isso que os processadores operam no "No Evict Mode" (NEM) neste momento do processo de inicialização, quando estão operando em cache como RAM. No NEM, uma falta de linha de cache no processador não causará um despejo. Desenvolver código com uma pilha de software disponível é muito mais fácil, e o código de inicialização geralmente executa a configuração mínima para usar uma pilha mesmo antes da inicialização da DRAM.

Você pode observar isso executando um PC sem RAM: ele reproduzirá uma série de bipes. O programa que os reproduz é executado a partir da BIOS Flash ROM.

Eu também vi esse comportamento em alguns processadores ARM. Existem registros de configuração dentro do SoC que permitem que você use o cache como RAM no início da sequência de inicialização, para executar um programa que encontre, enumere e configure a DRAM.

pjc50
fonte
2
Mais detalhes sobre como o modo "cache-como-ram" (CAR) do x86 funciona , em uma resposta que o traz como um caso de uso para INVD(ao sair do modo CAR, invalidar o cache em vez de ter dados inúteis gravados na memória, potencialmente algo valioso).
Peter Cordes
O que há de errado em despejar quando a DRAM não está disponível? O problema não é ler em vez de gravar na RAM?
Mehrdad 27/07
14

Geralmente, a memória cache não é endereçável. Um programa não pode armazenar ou recuperar dados intencionalmente.

Lior Bilia
fonte
2
+1 Esta é uma resposta muito astuta. Os universitários são carregados e aposentados à vontade a partir de acessos endereçáveis ​​da memória principal, de uma maneira quase aleatória.
21417 Alemanchenski
17
Sim, é por isso que requer um modo especial (como na resposta do pjc) ou algum tipo de truque especial. Outra opção (além da resposta aceita) pode ser fazer o sistema pensar que possui alguma DRAM, mas as gravações na memória real apenas jogam fora os dados e as leituras produzem todos os zeros (ou dados reais de uma ROM para alguma região de endereços). Enquanto todas as cargas forem atingidas no cache, o sistema se comportará corretamente. IDK o suficiente sobre como o x86 inicializa para saber se é possível entrar no modo longo de 64 bits sem a necessidade de liberações reais de cache.
Peter Cordes
3
No entanto, as CPUs Skylake com cache eDRAM dentro do pacote o usam como um cache no lado da memória (entre o controlador de memória e tudo o resto, ao contrário de Broadwell), para que ele possa armazenar em cache os acessos DMA de dispositivos do sistema sem CPU ou cargas de CPU / armazena em regiões de memória "incontroláveis" (que ignoram L1 / L2 / L3).
Peter Cordes
3
@ PeterCordes No entanto, a resposta não é "não" apenas porque é necessário um modo especial - a questão é se o modo especial existe.
user253751
1
A questão é - o que acontece se você usar o cache e garantir que ele nunca perca ou seja liberado - ele se torna endereçável no momento em que algo é gravado em um endereço na RAM inexistente, não? A gravação real é descartada no chão, mas a leitura é veiculada do cache, afinal?
rackandboneman
9

Embora isso não atenda diretamente às famílias de processadores especificadas na pergunta, o esquema abaixo funcionaria nos processadores x86 anteriores; portanto, é possível operar sem RAM ou cache, embora essa abordagem exija algumas habilidades criativas de programação.

Nos anos 80, deparei-me com um design para um receptor de rádio que decodificava os sinais de tempo de MSF transmitidos no Reino Unido. Esse design usava um processador Z80 e só possuía uma ROM para o armazenamento do programa. Todo o processamento e armazenamento de dados foi realizado usando os registros internos no processador. Obviamente, isso significava que não havia chamadas de sub-rotina, pois havia memória disponível para armazenar a pilha.

Naquela época, o custo da RAM era alto e, como se tratava de um projeto de hobby, manter os custos baixos era importante, além de ser um exercício acadêmico interessante. Isso também ocorreu antes dos dias de microcontroladores amplamente disponíveis (um 8751 com eprom custa mais de £ 100 IIRC).

uɐɪ
fonte
Restringir-se aos dados que podem ser mantidos em registros limita realmente as funções úteis que você pode executar. Eu acho que a pergunta era mais sobre a memória cache nos processadores modernos.
Mark Ransom
É claro que não é preciso dizer que o não uso da RAM limita a funcionalidade possível. O aplicativo citado mostra o quanto é possível com recursos de armazenamento de dados muito limitados, um front-end de rádio e uma tela de LCD.
uɐɪ
-3

Normalmente, uma CPU requer um relógio externo. Mas com isso, sim, pode.

John Hamilton
fonte
1
Seria apropriado explicar o porquê e responder completamente à pergunta dos usuários. Esta resposta está do lado fraco.
Voltage Spike