sexta-feira, 11 de fevereiro de 2011

Microprocessador

O CPU recebe continuamente instruções para serem executadas. Cada instrução é uma ordem de processamento de dados e o trabalho do CPU consiste principalmente em cálculos e transporte de dados.

O CPU recebe pelo menos dois tipos de dados:
  • Instruções acerca do que fazer com outros dados.
  • Dados que serão processados de acordo com as instruções.
Chamamos instruções ao código de programação, que inclui mensagens enviadas ao computador, ordens de impressão, entre outras.
Os dados são normalmente dados do utilizador, sejam eles informações numa base de dados, uma folha de cálculo, um desenho, etc.

A maior carga de trabalho do CPU consiste na descodificação de instruções e localização de dados, e os cálculos em si não são o tipo de trabalho muito pesado para um microprocessador.

A descodificação é, no fundo, a percepção de instruções que o utilizador envia para o CPU. Todos os CPU dos PC são compatíveis com o 8086. Isto quer dizer que os programas comunicam com o CPU através de uma família específica de instruções.

Dado que existe a necessidade dos CPU das gerações subsequentes poderem utilizar as mesmas instruções do 8088, foi necessário criar um conjunto de instruções compatíveis. Os CPU mais recentes têm de perceber as mesmas instruções. Esta compatibilidade é um standard da indústria desde então. Todos os processadores novos, independentemente dasua geração, têm de ser capazes de perceber e manipular o formato de instruções 8088.

Para nos ajudar a entender o funcionamento do microprocessador, vamos ver passo a passo o modo como ele executa uma operação simples, do tipo 2 + 2:
  1. Quando se prime a tecla 2, é enviado um sinal ao processador e pede-se à unidade de prefetch para pesquisar na memória principal do computador uma instrução específica sobre os dados novos, dado que não há nada acerca disso na cache de instruções.
  2. As instruções chegam ao microprocessador através da unidade de barramentos, vindas da memória principal, e são armazenadas na cache de instruções como “2=X”.
  3. A unidade de prefetch solicita então à cache de instruções uma cópia do código “2=X”e envia-o à unidade de descodificação para processamento.
  4. Seguidamente, na unidade de descodificação “2=X”, o código é descodificado numa string de código binário, que é enviada para a unidade de controlo e para a cache de dados.
  5. Agora a unidade de controlo executa a instrução para “2=X”. Isso faz com que o número 2 seja enviado para um endereço X na cache de dados, onde aguarda por outras instruções.
  6. Quando se prime a tecla 2, novamente a unidade de prefetch pergunta à memória principal do computador e à cache de instruções quais são as instruções específicas para esses dados novos. Como não encontra nenhuma informaçãona cache de instruções, as ordens vêm da memória principal.
  7. Similarmente ao que aconteceu com o “2=X”, os novos dados vêm da memória principal e são armazenados na cache de instruções como “2=Y”.
  8. A unidade de prefetch vai à cache de instruções buscar uma cópia do código “2=Y” e envia-a para a unidade de descodificação onde será processada.
  9. Na unidade de descodificação, a instrução “2=Y” é descodificada e transformada numa string de código binário, que será enviada para a unidade de controlo e para a cache de dados e que lhes dirá o que fazer com a instrução.
  10. Dado que a unidade de controlo sabe que o número 2 será armazenado para uso futuro na cache de dados, executa a instrução para “2=Y”. Isto faz com que o número 2 seja enviado para um endereço na cache de dados chamado Y, onde, tal como o outro 2, aguardará futuras ordens.
  11. Quando premimos a tecla “+”, a unidade de prefetch pergunta à memória principal do computador e À cache de instruções o que há-de fazer com os novos dados recebidos, que devem ser “pescados” da memória principal.
  12. Dado que é uma instrução nova, “+” vem para o microprocessador, da memória principal, e é armazenado num endereço da cache de instruções como “X+Y=Z”, indicando que os dois valores vão ser adicionados um ao outro.
  13. Então, a unidade de prefetch pede á cache de instruções uma cópia do código “X+Y=Z” e envia-a para a unidade de controlo para posterior processamento.
  14. Na unidade de descodificação, “X+Y=Z” é traduzido e descodificado, sendo em seguida enviado para a cache de dados, dando indicação do que hão-de fazer com a instrução. Além disso, também a unidade aritmética e lógica é informada que uma operação ADD vai ser executada.
  15. A unidade de controlo envia um comando ADD para a unidade aritmética e lógica, onde X e Y são adicionados, após serem chamados da cache de dados. Após realizar a operação, a unidade aritmética e lógica envia o resultado para ser armazenado num dos endereços dos registos.
  16. Quando se prime a tecla “=”, novamente a unidade de prefetch verifica a cache de instruções para solicitar informações sobre os novos dados, mas não vai encontrar lá nada.
  17. A instrução sobre “=” vem da memória principal para o microprocesador através da unidade de barramentos e fica armazenada num endereço da cache de instruções como código “PRINT Z”.
  18. A unidade de prefetch pede à cache de instruções uma cópia do código “PRINT Z” e envia-a para a unidade de descodificação para posterior processamento.
  19. Na unidade de descodificação, “PRINT Z” é traduzido e descodificado numa string de código binário, que é enviada para a unidade de controlo para lhe dizer o que fazer com a instrução.
  20. Agora que o valor de “Z” foi calculado e está armazenado nos registos, o comando print só tem de ir buscar o conteúdo do registo e apresentá-lo no ecrã no computador. E assim o microprocessador acaba o seu serviço, pelo menos de momento.

Sem comentários:

Enviar um comentário