Podemos rodar o linux em algo mais rápido que a RAM?

20

Esta talvez seja uma pergunta boba e pode ser o resultado de um mal-entendido. Estou estudando a CPU agora e a memória em particular. Eu estava lendo sobre o quão rápido é o SRAM do que o DRAM, mas mais caro. A SRAM é muito cara: eu comprei um pouco e encontrei um cartão SRAM alimentado por bateria com 16 MB por cerca de US $ 400.

Recentemente um amigo mencionou que ele está rodando o filhote de cachorro linux na RAM, e que é rápido. Notei, porém, que o pequeno núcleo do Linux pode ser ainda menor ... tão pequeno quanto 8 MB! Isso me fez pensar: podemos rodar o linux na SRAM? Essa pergunta é mesmo bem formada?

Pesquisando esta pergunta, mostrou-se ineficaz, mas levantou ainda mais questões. Poderia um executar o Linux no cache L3? O Intel Core i7 pode ter um cache L3 grande o suficiente para caber nos 8MB ... mas estou cometendo um erro categórico? Qual é a diferença entre este e o linux 'embedded'?

Essa é a pergunta: podemos rodar o linux no cache SRAM ou L3? Existe alguma coisa mais rápida? Quão rápido podemos nós linux!?

z.

    
por Ziggy 25.03.2013 / 01:08

6 respostas

20

Linux, ou qualquer outro sistema operacional não sabe como funciona a RAM. Enquanto o controlador de memória estiver configurado corretamente (por exemplo, taxas de atualização definidas para não SRAM), o SO não se importa se for executado em memória dinâmica simples (RAM simples), RAM de modo de página rápida (FP RAM, do C64-ish vezes), RAM de modo estendido de saída de dados (EDO), RAM sincronizada (SDRAM), qualquer um dos SDRAMS de taxa de dados dupla (DDR 1/2/3).

Todos os que suportam ler e escrever de lugares aleatórios. Tudo vai funcionar.

Agora o cache é um pouco diferente. Você não precisa escrever para que o conteúdo seja alterado. Isso vai atrapalhar. Ainda assim, é um pouco utilizável. Eu sei que o coreboot usa o cache como uma espécie de memória durante a inicialização, antes que o controlador de memória seja configurado corretamente. (Para os detalhes, confira os vídeos das palestras do coreboot durante o FOSDEM 2011).

Então, em teoria, sim, você poderia usá-lo.

MAS : Para tarefas práticas, um sistema com 1 GB de memória 'regular' de média velocidade funcionará muito melhor do que com apenas alguns MB de memória super rápida. O que significa que você tem três opções:

  1. Construa coisas do jeito "barato" normal. Se você precisar de mais velocidade, adicione algumas dúzias de computadores extras (todos com memória 'lenta')
  2. Ou crie um único computador com uma dúzia de vezes o preço e significativamente menos que uma dúzia de vezes o desempenho.

Exceto em casos muito raros, o último não é sensato.

    
por 25.03.2013 / 01:24
8

Sim, você pode e, na verdade, isso já é feito automaticamente. As partes mais usadas da RAM são copiadas no cache. Se o uso total de RAM for menor que o tamanho do cache (como você supõe), o mecanismo de armazenamento em cache existente terá copiado tudo na RAM.

O único momento em que o cache será copiado de volta para a RAM normal é quando o PC vai para o modo de suspensão S3. Isso é necessário porque os caches são desligados no modo S3.

    
por 25.03.2013 / 12:40
3

Muitas CPUs permitem que o Cache seja usado como RAM. Por exemplo, a maioria dos processadores x86 mais recentes podem configurar determinadas regiões como writeback com sem preenchimento nas leituras via MTRRs. Isso pode ser usado para designar uma região do espaço de endereço como - efetivamente - cache-como-ram.

Se isso seria benéfico é outra questão - ele traria o kernel na RAM, mas ao mesmo tempo reduziria o tamanho efetivo do cache. Também pode haver efeitos colaterais (como desativar o cache para o resto do sistema) que tornariam isso muito mais lento.

    
por 15.10.2013 / 17:10
1

"podemos executar o linux no cache L3?"

Não, o Cache existe para um trabalho específico de manter dados e instruções do programa prontos para quando o processador precisar deles. Você encontrará o sistema operacional no cache de qualquer maneira porque está sendo constantemente usado. Carregar todo o SO no cache não é eficiente, já que você não está usando todos os caminhos de código no kernel de uma só vez.

"podemos executar o linux na SRAM?"

Certamente, você poderia usar a SRAM com backup de bateria como sua partição de inicialização e, em seguida, usar a sinalização incorporada de execução no local. Isso pode levar a tempos de inicialização mais rápidos e operações um pouco mais rápidas. No entanto, um fator importante é a largura de banda entre o cache L3 e onde o kernel está (uma unidade de inicialização ou RAM).

"Existe algo mais rápido? Com que rapidez podemos trabalhar o Linux!"

Geralmente, fabricantes de hardware e desenvolvedores de sistemas operacionais estão trabalhando para tornar o processamento o mais rápido possível. No entanto, sua pergunta é muito geral: você quer acelerar o tempo de inicialização, otimizar o acesso ao sistema de arquivos, acelerar cálculos ou qualquer outra coisa. Uma vez que você tenha uma pergunta mais específica, você pode certamente começar a encontrar o gargalo e removê-lo. Sua unidade SRAM certamente aceleraria o processo de inicialização. Chegar a uma GUI em 3 segundos seria muito legal ver.

    
por 25.03.2013 / 12:21
1

De volta aos dias de 486, costumava haver máquinas onde toda a RAM era SRAM. Isso é quando 8MB foi muito, mas parece corresponder às suas restrições. Tenho certeza que 8MB de SRAM é muito mais barato agora do que naquela época.

Então, você poderia rodar o Linux na SRAM se a máquina fosse feita dessa maneira. Não é teórico; foi feito.

Mas não no cache. O cache é conectado de maneira diferente e, mais importante, tratado de maneira diferente. Você não pode resolver o mesmo. Os blocos são mapeados de forma diferente, não como um bloco contínuo. E o conteúdo não é necessariamente o que você vê no disco - os chips Intel mais recentes fazem uma espécie de "compilação" just in time (mais de uma recodificação CISC = & Rt; RISC-micro-op) onde as micro-operações são as coisas que acabam em cache. Em suma, o que está no cache não é o seu programa, mas uma visão alterada dele, então você não poderia mais usá-lo como uma representação de memória do seu programa.

A questão é por quê. Diferente de "porque eu posso" não há muitas razões para isso. O sistema de cache obtém a maior parte do benefício de velocidade com muito menos custo. E lembre-se que o custo não é apenas em dólares ... A SRAM leva mais transistores, o que significa mais eletricidade.

    
por 25.03.2013 / 19:05
1

"podemos executar o linux no cache L3?"

Não , isso não é possível porque a memória cache não é endereçada direta / linearmente.
Devido à maneira como a memória cache é projetada, o registro do Contador de Programa de CPU (IP) não pode apontar para um local no cache memória.

Um cache de CPU tem sua própria "associatividade" e essa associatividade define o modo como a memória "normal" é "mapeado" para a memória cache. Esta característica da memória cache é uma das razões pelas quais as memórias cache são tão rápidas.

    
por 28.03.2013 / 21:33