terça-feira, 7 de dezembro de 2010

[Arq e Org] Estrutura e funcionamento da CPU (Unidade Central de Processamento)


Diferentemente do que muitas pessoas imaginam, a unidade central de processamento (CPU) é o 'cérebro' do computador. a função da CPU é executar programas armazenados na memória buscando as instruções, examinando e executando-as uma após a outra. A CPU é composta por várias porções, são elas: Unidade de controle, Unidade lógica e aritmética e registradores. esses componentes da CPU são conectados entre si por barramentos. Barramentos podem ser entendidos como linhas de comunicação que permitem a interligação entre dispositivos internos ou externos.

A Unidade de controle é responsável por buscar as instruções na memória e determinar o seu tipo e pode ser pensada como uma máquina de estados finitos.

A unidade lógica e aritmética é responsável por executar operações como adição, e AND booleano, entre outras, para executar as instruções.

Os registradores presente na CPU são memórias pequenas e de alta velocidade para armazenar resultados temporários e controle de informações. Existem vários tipos de registradores de uso geral ou específico. O mais importante deles é o contador do programa (PC - Program Counter). Este contador indica a próxima instrução a ser buscada para execução. Outro de grande importância é o Registrador de instrução (Instruction Register), que contém a instrução executada no momento em questão.

A sequência de eventos ao longo de um ciclo de instrução é da sequinte forma: 1) Trazer a próxima instrução da memória para o registrador; 2) Alterar o contador de programa para indicar a próxima instrução; 3) Determinar o tipo de instrução trazida; 4) Se a instrução utilizar uma palavra na memória, determinar onde esta palavra está; 5) Trazer a palavra para dentro de um registrador na CPU, se precisar; 6) Executar a instrução; 7) Armazenar o resultado e voltar para a etapa 1 para iniciar a execução da instrução seguinte.

RISC Vs CISC

Reduced Instruction Set Computer ou Computador com Conjunto Reduzido de Instruções (RISC) é uma arquitetura de computadores que possui um pequeno número de instruções simples. Entre os processadores conhecidos que utilizam-se de arquitetura RISC incluem DEC Alpha, AMD 29k, ARC, ARM, Atmel AVR, MIPS, PA-RISC, Power (incluindo PowerPC), SuperH, e SPARC.

Complex Instruction Set Computer ou Computador com Conjunto de Instruções Complexo (CISC) é uma arquitetura de computadores que uma única instrução pode executar várias operações de baixo nível (como carregar da memória, operações aritméticas e guardar em memória). O termo foi criado em contraste ao RISC.

Muitos estudiosos afirmaram que mesmo que uma instrução RISC precisasse de 4 ou 5 instruções para fazer o que uma instrução CISC fazia com apenas uma, a arquitetura RISC ainda levaria vantagem por ser mais rápida. Porém diferente do que se imagina, os processadores modernos são mais CISC que RISC, pois contem um núcleo RISC que executa as instruções mais simples em um único ciclo de caminho de dados, enquanto interpreta as instruções mais complicadas no modo CISC tradicional.

Pipelining (Paralelismo)

A ideia principal do pipelining é trabalhar as diversas etapas do ciclo de instrução de forma paralela (contrariamente à forma serial executada antigamente) de forma a aumentar o desempenho da CPU.


A figura acima mostra um pipelining de 5 estágios. O estágio "S1" realiza a busca da instrução na memória e a coloca em um buffer até que ela seja necessária. O estágio "S2" decodifica a instrução, determina o seu tipo e de quais operandos ela necessita. O estágio "S3" localiza e busca os operandos, seja nos registradores, seja na memória. O estágio "S4" realiza o trabalho de executar a instrução. Finalmente o estágio "S5" escreve o resultado de volta no registrador adequado.

Na figura pode-se perceber que há realmente um paralelismo das etapas do ciclo de instrução. No tempo 1 apenas o estágio "S1" é feito na instrução 1, porém a partir do tempo 5 quando a instrução 1 está no estágio "S5" há simultaneamente a instrução 2, 3, 4 e 5 sendo trabalhadas em alguma etapa do ciclo de instrução.

No entanto podem existir conflitos de acesso à memória por parte dos estágios e nem todas as instruções possuem todos esses estágios, somado a isso a existência de instruções de desvio pode tornar a técnica de pipelining menos trivial. Para contornar esses problemas existem técnicas como:
  • Múltiplos Fluxos (duplicação de estágios iniciais);
  • Busca antecipada de instrução-alvo de desvio;
  • Memória de laço de repetição (loop buffer);
  • Previsão de desvio baseadas no opcode;
  • Previsão de desvio baseadas em histórico (BTB - Branch Target Buffer, ou BHT - Brach History Table).

Nenhum comentário:

Postar um comentário