Como a RAM pode conter um “mapa de memória” se a RAM não estiver ciente do sistema geral?

3

Esta questão diz respeito ao hardware mais do que ao software. Basicamente, citando este artigo em mapas de memória, diz que:

In computer science, a memory map is a structure of data (which usually resides in memory itself) that indicates how memory is laid out.

Fonte: link

Existe extrema ambiguidade em relação a essa frase de abertura. Primeiramente, como a RAM pode saber como liberar memória para o espaço de endereço da CPU se o propósito da RAM depende do sistema?

Segundo, a RAM pode ser alterada. Se os dados residem na RAM, todos os chips de RAM são programados para ter uma estrutura descrevendo a memória? Isso não faz sentido, porque a partir do escopo da CPU é vago, e faz ainda menos sentido quando você olha para ele a partir do escopo da RAM (um sistema pode ter memória diferente a qualquer momento, hardware diferente, endereços diferentes, arquitetura diferente, etc.).

Em terceiro lugar, o artigo afirma que o mapa de memória é passado para o firmware de um sistema operacional. Isso só faria sentido se a RAM fosse hardwired ou o mapa estivesse sincronizado com o espaço de endereço da CPU.

Basicamente, eu estou 100% sem noção e perdido com isso. Eu não entendo de forma alguma como isso faz sentido. A RAM não pode mapear endereços para um sistema se não tiver conhecimento da estrutura do sistema.

    
por Der Hochstapler 16.11.2013 / 23:26

5 respostas

4

In computer science, a memory map is a structure of data (which usually resides in memory itself) that indicates how memory is laid out.

     

Fonte: link

     

Existe extrema ambiguidade em relação a essa frase de abertura.   Primeiramente, como a RAM pode saber como liberar memória para os processadores?   espaço de endereçamento se o propósito da RAM depende do sistema?

Normalmente, o próprio mapa de memória é salvo em algum tipo de memória não volátil no dispositivo, que carrega o mapa de memória no processador / MMU quando o sistema é inicializado. Como alguém que usa o dispositivo, você pode alterar o mapa de memória você mesmo , embora o layout seja menos relevante em sistemas que executam sistemas operacionais, pois ele se torna o trabalho do SO para controlar o acesso à memória. A abordagem DIY geralmente é necessária apenas em sistemas embarcados, nos quais você está conectando fisicamente RAM / ROM IC a um circuito existente.

Passando para sistemas de computadores modernos ...

Second, RAM can be changed. If the data resides in the RAM, all RAM chips are hardwired to have a structure describing memory? That doesn't make sense, because from the scope of the CPU it's vague, and makes even less sense when you look at it from the scope of the RAM(a system can have different memory at any time, different hardware, different addresses, different architecture, etc.).

Third, the article claims that the memory map is passed to the firmware for an OS. That would only make sense if the RAM is hardwired, or the map is synchronous with the CPU's address space.

Exatamente - é por isso que a própria RAM fornece detecção de presença serial (SPD) para que a BIOS / UEFI possa determinar qual RAM está no seu sistema (e se mudou desde a última vez que o computador foi iniciado!).

Além disso, as unidades de gerenciamento de memória x86 vêm com suporte de memória virtual feito para uso com sistemas operacionais. A MMU em si conecta o layout de RAM fisicamente conectado (que é apenas um grande número de linhas de dados / endereços conectadas a todos os DIMMs na placa-mãe), então isso é abstraído da própria CPU (mesmo se a MMU e a CPU estiverem no mesmo morrer, eles são logicamente duas "unidades" diferentes.

RAM can not map addresses out for a system if it has no knowledge of the system's structure.

Você está correto, a RAM em si não (e é por isso que eles têm perfis SPD / XMP) - a CPU / MMU identificará quais recursos estão disponíveis no sistema toda vez que você iniciar o computador. Além disso, este processo é abstraído de qualquer coisa sob o sistema operacional, já que a maioria dos sistemas operacionais usa memória virtual agora, que > completamente separa o conceito de memória do sistema da RAM física (a maioria das pessoas está familiarizada com este conceito através da paginação , onde o sistema operacional pode colocar parte da memória de um processo em disco para liberar memória RAM para outros aplicativos).

    
por 17.11.2013 / 12:06
2

O artigo diz

In the boot process, a memory map is passed on from the firmware in order to instruct an operating system kernel about memory layout. It contains the information regarding the size of total memory, any reserved regions and may also provide other details specific to the architecture.

E então diz

The PC BIOS provides a set of routines that can be used by operating system to get memory layout. Some of the available routines are: BIOS Function: INT 0x15, AX=0xE801 This BIOS interrupt call is used by the running OS to get the memory size for 64MB+ configurations

Para responder sua primeira pergunta, então. O artigo não menciona nada do espaço de endereço da CPU, e não é fácil nem mesmo encontrar esse termo usado na internet! 'cos CPUs têm alguns registradores (localizações de memória cpu), mas não como um grande espaço que precisa de um mapa ou algum tipo de índice para encontrar coisas! E o termo CPU nem sequer ocorre em qualquer lugar daquele artigo ao qual você está vinculado. O artigo diz que a RAM obtém as informações de outros lugares no sistema, não da RAM. Ele obtém a partir do BIOS (o BIOS usa a memória CMOS .. que é a memória que tem uma bateria para alimentá-lo ... e é definida na configuração do BIOS manualmente .. mas pode encontrar algumas coisas automaticamente). E possivelmente o mapa de memória tem um aspecto flexível e novas coisas são carregadas. Mas a RAM é iniciada sem nenhum mapa de memória colocado.

Isso responde à sua segunda pergunta.

E na sua terceira pergunta você entendeu errado, o artigo não diz que o mapa de memória é passado para o firmware - NÃO !! Ele diz o oposto In the boot process, a memory map is passed on from the firmware (o firmware não é RAM, não há firmware de RAM).

O programa básico do BIOS seria firmware. Mas pode armazenar dados que podem ser alterados.

E como nota adicional, Existe algo chamado SPD ... que DDR RAM usa para enviar dados para o BIOS a pedido (como mencionado por este artigo bastante avançado) link SPD é mencionado no BIOS .. Eu configurei um BIOS em um sistema onde ele disse obter detalhes de RAM do SPD, de inseri-los manualmente. (Assim, pode-se fazer um overclock na RAM). Nenhum mapa de memória é claro .. apenas algo básico como a velocidade que se pretende executar e outras coisas que o SPD obtém que são mencionadas nesse artigo. Outras coisas na BIOS são dados inseridos manualmente.

E para visualizar o mapa de memória ou

    
por 17.11.2013 / 11:26
0

Computadores Apple II realmente antigos tinham um mínimo de 4k de RAM e interruptores DIP para definir se mais fosse adicionado. Durante o arranque, a posição dos interruptores é lida e o mapa da memória é configurado de acordo. Os primeiros sistemas IBM PC também tinham comutadores DIP e RAM mínima de 64k. O mapa de memória listado, onde várias coisas, como o conteúdo da tela, buffers de disco, etc, estavam localizados na memória e quais intervalos de endereços têm RAM.

Assim, pelo menos, alguns dos mapas de memória são conhecidos - uma quantidade mínima de RAM em um local conhecido. Parte dessa memória é usada para armazenar o mapa de memória e outras informações usadas pelo código que detecta o resto e cria o mapa de memória completo.

Sistemas modernos fazem muito mais autoconfiguração (sem mais chaves DIP) usando coisas como chips SPD em módulos de RAM para descobrir seu tamanho e layout, mas o básico é o mesmo. Alguma quantidade mínima de memória deve estar em um local conhecido.

    
por 17.11.2013 / 03:58
0

Definitivamente, há alguma confusão acontecendo aqui, principalmente devido ao fato de que o artigo está tentando reunir várias coisas diferentes, mas relacionadas, em um só lugar.

Existem dois tipos principais de "mapa de memória", que são coisas completamente diferentes, usando o mesmo nome.

  • Layout de memória

    O que você está vendo no que diz respeito ao BIOS e ao hardware, deve ser chamado mais de layout de memória. Este é um projeto de como a memória é projetada e usada. Neste contexto, certas partes da memória são designadas para serem usadas para coisas diferentes.

    Normalmente, esse mapa não existe de forma tangível no hardware; é mais um diagrama de guardanapo ou quadro branco que os projetistas criam e implementam em hardware / software usando arrays e índices.

  • Atribuição de memória

    Outro uso do termo memory-map é em relação à alocação de memória . Nesse caso, um mapa de alocação de memória é uma lista que o gerenciador de memória do SO usa para acompanhar quais partes da memória foram atribuídas aos programas e quais partes da memória são livres. Como programas diferentes alocam e liberam pedaços de memória de tamanhos variados em padrões indeterminados, a memória fica fragmentada como uma unidade de disco faz quando arquivos de vários tamanhos são criados e excluídos.

    Como a memória fica fragmentada, o SO não pode simplesmente distribuir um pedaço de memória de qualquer tamanho solicitado para cada programa que aparece. Haverá blocos livres de tamanhos diferentes cercados por blocos usados. Para saber o quão grande é cada bloco livre, o gerenciador de memória manterá um “mapa” de memória que marca usado ou livre sempre que alocar ou liberar memória para / de programas. Este mapa é como um mapa de disco (figura 1), e você pode até mesmo vê-lo com ferramentas como VMMap (figura 2). (O layout específico usado na visualização pode variar, por exemplo, a maioria dos mapas de disco mostrará a unidade como bidimensional, enquanto a maioria das ferramentas de memória mostrará memória como unidimensional, mas isso é apenas uma escolha de design.)

    Este mapa de alocação é um mapa literal que é, na verdade, uma matriz armazenada na memória.

  • ( mapeamento de memória )

    (Quando se trata do BIOS e do hardware, há também o termo memory- mapeamento que se refere ao mapeamento de partes de dispositivos de hardware para a memória, para que você possa ler e gravar no dispositivo simplesmente lendo e gravando em endereços de memória da mesma maneira que acessaria a memória normal. No entanto, este é um uso ainda mais diferente do termo e, portanto, aumenta a confusão.Neste contexto, "mapa" não significa um layout , mas sim mais como um mapeamento matemático onde um coisa é atribuído um análogo / alias para outra coisa.)

Figura 1 : mapa de disco de Vopt

Figura2:VMMap

    
por 18.12.2013 / 05:02
0

Resposta rápida: A RAM não "conhece" nada. Quaisquer que sejam as estruturas armazenadas na RAM que ajudem a determinar a semântica de outros conteúdos da RAM, são construídas pelo sistema operacional.

    
por 13.02.2016 / 07:56