Como exatamente está sendo usada a minha memória 'ausente'?

1

Eu reparei no Windows de 64 bits e no Ubuntu, há uma pequena quantidade de memória que nem sequer é reportada ao SO. Por exemplo: Eu tenho 16GiB (16384MiB) de memória na minha caixa de acordo com o BIOS, mas o Ubuntu relata que eu tenho "16043MB" de memória total. Eu vejo isso em vários sistemas com chipsets AMD ou Intel rodando Windows ou Linux, a quantidade de memória 'ausente' variando.

Nenhum número é adicionado à quantidade real de memória física instalada, então, para que ele está sendo usado? Alguma memória é reservada para comunicação com uma placa gráfica ou outros dispositivos? Se sim, como? O que mais poderia estar usando a memória e de que maneira? Por que a quantidade real de memória não é visível dentro do sistema operacional? Onde posso ler mais sobre isso como designer de hardware?

Quando tento pesquisar isso, só encontro pessoas confusas com o sistema operacional de 32 bits que não reconhece todas as atualizações de memória de 4GiB.

    
por jerkstore 19.12.2013 / 21:41

1 resposta

3

Se você tem algum tipo de chipset de gráficos integrados (iGPU), é muito provável que reserve alguma memória do sistema como uma alternativa ao uso de memória de vídeo dedicada (VRAM).

Portanto, a história é assim: as Unidades de Processamento Acelerado (APUs) da AMD e a Intel HD Graphics contêm essencialmente versões reduzidas de uma placa gráfica, montada no mesmo pacote da CPU. Nos últimos anos, tanto a AMD quanto a Intel começaram a empurrar essas iGPUs para quase todos os processadores de desktop vendidos. Historicamente, esses chips estavam na placa-mãe, mas eles começaram a movê-los para a CPU. Você ainda pode comprar processadores sem eles, mas a grande maioria agora os tem, mesmo em sistemas com placas gráficas dedicadas que são muito mais poderosas.

Se você tiver drivers instalados para o seu iGPU, é provável que o sistema operacional seja tecnicamente capaz de usá-lo. Para usá-lo, porém, é necessário reservar parte da memória do sistema para usar para armazenar dados gráficos (texturas, framebuffer, etc). Isso ocorre porque os iGPUs não vêm com sua própria VRAM dedicada, porque não há espaço suficiente no processador para ajustá-lo. Bem, geralmente ; o chip gráfico Intel "Iris Pro" contém 128 MB de eMMC; mas eu discordo ...

Por outro lado, se o chipset gráfico apenas do seu sistema é o iGPU, então é claro que você não tem alternativa além de aceitar que parte da memória do seu sistema vai ser usado por este iGPU, ou então você não terá nenhum display gráfico.

Para algumas iGPUs, você pode configurar na BIOS quanta RAM é reservada para o iGPU, geralmente de um mínimo de 64 MB até um valor máximo de cerca de 1 GB, embora os números exatos variem.

Em teoria, o iGPU não é o único componente de sistema possível que poderia reservar alguma RAM do sistema para uma finalidade especial, mas é certamente o mais comum. Eu também ouvi falar de algumas placas gráficas dedicadas usando um sistema híbrido de RAM e VRAM, o que significa que há uma quantidade menor de VRAM embutida na própria placa gráfica, mas o driver também pede uma quantidade de memória RAM do sistema para separar. para suplementar a VRAM como espaço adicional para dados gráficos.

Se você quiser os detalhes sangrentos, procure algo como "Arquitetura de Memória Unificada" (não confunda com um termo similar como NUMA, usado para distinguir sistemas normais de sistemas distribuídos), ou procure as especificações de hardware abertas para Chipsets Intel GMA ou HD Graphics. Como os drivers gráficos do Linux para esses chipsets são de código aberto, você pode mergulhar o quanto quiser pegando os documentos de especificação ou lendo o código-fonte do Mesa ou Linux DRM (Direct Rendering Manager). Aqui

    
por 19.12.2013 / 22:42