Essa talvez seja uma pergunta tola e pode ser o resultado de um mal-entendido. Estou estudando CPU agora e memória em particular. Eu estava lendo sobre o quanto a SRAM é mais rápida que a DRAM, mas mais cara. A SRAM é muito cara: comprei um pouco e encontrei uma placa SRAM alimentada por bateria com 16 MB por cerca de US $ 400.
Recentemente, um amigo mencionou que ele está executando o linux de filhote de cachorro na RAM e que é rápido. Notei, no entanto, que o linux minúsculo do núcleo pode ser ainda menor ... tão pequeno quanto 8 MB! Isso me fez pensar: podemos rodar linux na SRAM? Essa pergunta é bem formada?
Pesquisar esta questão no Google se mostrou ineficaz, mas levantou ainda mais questões. Pode-se executar o Linux no cache L3? O Intel Core i7 pode ter um cache L3 grande o suficiente para acomodar os 8 MB ... mas estou cometendo um erro de categoria? Qual é a diferença entre este e o Linux 'incorporado'?
Essa é a pergunta: podemos executar o Linux no SRAM ou no L3 Cache? Existe algo mais rápido? Quão rápido podemos linux !?
z.
fonte
Respostas:
Linux ou qualquer outro sistema operacional não sabe como a RAM funciona. Enquanto o controlador de memória estiver configurado corretamente (por exemplo, taxas de atualização definidas para não SRAM), o sistema operacional não se importará se for executado na memória dinâmica simples (RAM simples), na RAM rápida no modo de página rápida (FP RAM, do C64-ish vezes), RAM de modo estendido de saída de dados (EDO), RAM síncrona (SDRAM), qualquer SDRAMS de taxa de dados dupla (DDR 1/2/3), qualquer que seja.
Todos eles apóiam a leitura e a escrita 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 um tipo de memória durante a inicialização, antes que o controlador de memória esteja configurado corretamente. (Para detalhes, confira os vídeos das palestras sobre coreboot durante o FOSDEM 2011).
Então, em teoria, sim, você poderia usá-lo.
MAS : Para tarefas práticas, um sistema com memória 'regular' de 'velocidade média' de 1 GB terá um desempenho muito melhor do que com apenas alguns MB de memória super rápida. O que significa que você tem três opções:
Exceto em casos muito raros, o último não é sensato.
fonte
Sim, você pode, e é assim que já é feito, automaticamente. As partes mais usadas da RAM são copiadas no cache. Se o uso total da RAM for menor que o tamanho do cache (como você supõe), o mecanismo de cache existente terá copiado tudo na RAM.
O único momento em que o cache seria copiado novamente para a RAM normal é quando o PC entra no modo de suspensão S3. Isso é necessário porque os caches são desligados no modo S3.
fonte
Muitas CPUs permitem que o cache seja usado como RAM. Por exemplo, a maioria das CPUs x86 mais recentes pode configurar determinadas regiões como writeback 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 trava o kernel na RAM, mas ao mesmo tempo reduz o tamanho efetivo do cache. Também pode haver efeitos colaterais (como ter que desativar o cache para o resto do sistema) que tornariam isso muito mais lento.
fonte
"podemos rodar 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 CPU Program Counter (IP) não pode apontar para um local na memória cache.
Um cache da CPU possui sua própria "associatividade" e essa associatividade define a maneira como a memória "normal" é "mapeada" para a memória do cache. Esse recurso da memória cache é um dos motivos pelos quais as memórias são tão rápidas.
fonte
"podemos rodar linux no cache L3?"
Não, o cache existe para um trabalho específico de manter os dados e instruções do programa prontos para quando o processador precisar deles. Você encontrará o sistema operacional no cache de qualquer maneira, porque ele está sendo constantemente usado. Carregar todo o sistema operacional no cache não é eficiente, pois você não está usando todos os caminhos de código no kernel de uma só vez.
"podemos rodar linux na SRAM?"
Certamente você pode usar SRAM com bateria como sua partição de inicialização, e pode usar o sinalizador incorporado 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 a localização do kernel (uma unidade de inicialização ou RAM).
"Existe algo mais rápido? Quão rápido podemos linux !?"
Geralmente, os fabricantes de hardware e os desenvolvedores de sistemas operacionais estão trabalhando para tornar o processamento o mais rápido possível. No entanto, sua pergunta é muito geral: você deseja acelerar o tempo de inicialização, otimizar o acesso ao sistema de arquivos, acelerar os cálculos ou algo mais. Depois de ter uma pergunta mais específica, você certamente pode começar a encontrar o gargalo e removê-lo. Sua unidade SRAM certamente aceleraria seu processo de inicialização. Chegar a uma GUI em 3 segundos seria muito legal de se ver.
fonte
Nos dias de 486, costumava haver máquinas em que toda a RAM era SRAM. Isso voltou quando 8MB era muito, mas parece corresponder às suas restrições. Tenho certeza de que 8 MB de SRAM são muito mais baratos agora do que naquela época.
Portanto, você pode executar o Linux na SRAM se a máquina for feita dessa maneira. Não é teórico; já 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 pedaços são mapeados de maneira diferente, não como um pedaço contínuo. E o conteúdo não é necessariamente o que você vê no disco - os chips Intel mais novos fazem uma espécie de "compilação" Just in time (mais de uma recodificação CISC => RISC-micro-op) onde as micro-ops são as coisas que acabam em cache. Resumindo, o que está no cache não é o seu programa, mas uma visão alterada dele; portanto, você não pode mais usá-lo como uma representação de memória do seu programa.
A questão é o porquê. Além de "porque eu posso", não há muitas razões para isso. O sistema de cache oferece a você o maior benefício de velocidade com muito menos custo. E lembre-se de que o custo não é apenas um dólar ... A SRAM leva mais transistores, o que significa mais eletricidade.
fonte