Segmentações de Endereços
Um recurso bem interessante, usado no 8088, é a segmentação de endereços, que permitiu aumentar a quantidade de memória RAM suportada pelo processador.
Para que o processador possa acessar a memória RAM, é preciso que a memória seja dividida em endereços. Cada byte depositado na memória recebe um endereço único, assim como cada rua do Brasil tem um CEP diferente. Como o 8088 pode lidar apenas com palavras binárias de 16 bits, a princípio não seria possível para ele acessar mais do que 64 Kbytes de memória RAM, já que 16 bits permitem apenas 65,536 combinações diferentes (2 elevado à 16º potência).
Se o 8088 pudesse acessar apenas 64 KB de memória RAM, os micros baseados nele seriam muito limitados e poderiam apenas rodar programas muito simples. Para você ter uma idéia, 64 KB não dariam nem mesmo para carregar o DOS 3.0.
Para solucionar este problema, foi adotada uma solução bastante engenhosa: apesar do processador continuar podendo acessar apenas 64 KB de memória de cada vez, foram criados mais 4 bits de endereçamento, que permitem o acesso a 16 blocos de memória. Como cada bloco possui 64 KB, chegamos a 1 MB inteiro de capacidade total. Basicamente criamos 16 áreas diferentes de memória, cada uma com 64 KB, que é o máximo que o 8088 pode endereçar.
O processador pode acessar uma única área de cada vez. Se por exemplo, está sendo usado o bloco 1, e de repente é preciso ler um dado gravado no bloco 2, é preciso limpar todos os endereços relativos ao bloco 1 e carregar os endereços do bloco 2. Neste momento, o processador perde o acesso ao bloco 1 e passa a enxergar apenas o segundo bloco. Quando novamente for preciso ler ou gravar dados no bloco 1 (ou qualquer outro bloco), novamente são carregados os endereços relativos a ele, e o acesso ao bloco 2 será perdido. É mais ou menos como se você precisasse fazer anotações em várias páginas de um caderno. Como só é possível ler ou escrever em uma página de cada vez, você precisaria ficar continuamente virando as páginas.
|