
UNIDADE CENTRAL DE PROCESSAMENTO
A Unidade Central de Processamento - UCP (em inglês, Central Processing Unity - CPU) é a responsável pelo processamento e execução dos programas armazenados na MP. As funções da UCP são: executar as instruções e controlar as operações no computador. Um programa, para ser efetivamente executado pelo processador, deve ser constituído de uma série de instruções de máquina. Para que a execução tenha início, as instruções devem ser armazenadas em células sucessivas, na MP.
Elemento comum a todos os microcomputadores: pastilha (chip) do microprocessador. O microprocessador funciona como a unidade central de processamento do microcomputador. Em essência é o cérebro do microcomputador, responsável pela atividade-fim do sistema, isto é, computar, calcular, processar. Sua velocidade determina a velocidade máxima do microcomputador; seus pinos de endereços e de dados determinam a capacidade da memória e o tamanho da palavra do microcomputador; e, seus pinos de controle determinam o tipo de interfaceamento de E/S.
Para que ocorra a execução de um programa executável é necessário que:
as instruções a serem executadas estejam armazenadas em células sucessivas na MP;
o endereço da primeira instrução do programa esteja armazenado na CPU para que o processador possa buscar essa primeira instrução.
A função da UCP consiste, então, em:
a) Buscar uma instrução na memória (operação de leitura), uma de cada vez;
b) Interpretar que operação a instrução está explicitando (pode ser soma de dois números, uma multiplicação, uma operação de entrada ou de saída de dados, ou ainda uma operação de movimentação de um dado de uma célula para outra);
c) Buscar os dados onde estiverem armazenados, para trazê-los até a UCP;
d) Executar efetivamente a operação com os dados, guardar o resultado (se houver algum) no local definido na instrução; e, finalmente;
e) Reiniciar o processo apanhando nova instrução.
Estas etapas compõem o que se denomina um ciclo de instrução. Este
ciclo se repete indefinidamente até que o sistema seja desligado, ou ocorra algum tipo de erro, ou seja, encontrada uma instrução de parada.
Em suma, o microprocessador executa as seguintes funções básicas:
Provê os sinais de controle e de temporização para todos os elementos do microcomputador;
Busca instruções e dados de memória;
Transfere dados de e para dispositivos de E/S;
Decodifica instruções;
Executa operações aritméticas e lógicas determinadas por instruções;
Responde a sinais de controle gerados por E/S tais como RESET e INTERRUPÇÃO.
Organização de um computador simples com uma CPU e dois dispositivos de E/S:
A CPU (microprocessador) é composta por várias partes distintas: unidade de controle; registradores; unidade lógica e aritmética.
Unidade de controle: responsável por buscar, interpretação (decodificação das instruções da memória principal), e controle da execução das instruções (geração dos sinais de controle necessários para que a ULA e as seções de registradores executem estas instruções). Também controla a ação dos demais componentes de um sistema de computação (memória, entrada/saída).
É o dispositivo mais complexo da UCP. Possui a lógica necessária para realizar a movimentação de dados e instrução de e para a UCP, através de sinais de controle, que emite em instantes de tempo programados. Este dispositivo controla a ação da ULA. Os sinais de controle emitidos pela UC ocorrem em vários instantes durante o período de realização de um ciclo de instrução e, de modo geral, todos possuem uma duração fixa e igual, originada em um gerador de sinais usualmente conhecido como relógio (clock).
A área de controle de uma UCP é a parte funcional que realiza (uma etapa de cada vez, em sistemas de execução serial, ou várias etapas simultaneamente, em sistemas de execução “pipelining”) as atividades de:
a) Busca de instrução que será executada, armazenando-a em um registrador especialmente projetado para esta finalidade;
b) Interpretação das ações a serem desencadeadas com a execução da instrução (se é uma soma, uma subtração, uma complementação, etc.);
c) Geração de sinais de controle apropriado para ativação requerida para a execução propriamente dita da instrução identificada. Esses sinais de controle são enviados aos diversos componentes do sistema, sejam internos da UCP (como a ULA) ou externos (como a memória ou E/S). Em outras palavras, a área de controle é projetada para entender o que fazer, como fazer e comandar quem vai fazer no momento adequado. Podemos fazer uma analogia com os seres humanos, imaginando que a área de controle é o cérebro que comanda o ato de andar, e as áreas do processamento são os músculos e ossos das pessoas que realizam efetivamente .
Registradores: são componentes de uma pequena memória de alta velocidade usados para armazenar resultados temporários, endereços, códigos de instruções e informações sobre o estado das várias operações do microprocessador (controle de informação). O registrador mais importante é o Contador de Programa (PC – Program Counter) que indica a próxima instrução a ser buscada para execução. Também importante é o Registrador de Instruções (IR – Instruction Register) que contém a instrução que está sendo executada no momento em questão.
Registrador de instrução (RI): registrador que tem a função específica de armazenar a instrução a ser executada pela UCP. Ao se iniciar um ciclo de instrução, a UC emite o sinal de controle que acarretará a realização de um ciclo de leitura para buscar a instrução na memória (uma cópia dela), e que, via barramento de dados e RDM, será armazenado no RI.
Contador de Instrução (CI): registrador cuja função específica é armazenar o endereço da próxima instrução a ser executada. Tão logo a instrução que vai ser executada seja buscada (lida) da memória para a UCP (início do ciclo de instrução), o sistema providencia a modificação do conteúdo do CI de modo que ele passe a armazenar o endereço da próxima instrução na seqüência. Por isso, é comum definir a função CI como sendo a de “armazenar o endereço da próxima instrução”, que é o que realmente ele faz durante a maior parte da realização de um ciclo de instrução. O CI é um registrador crucial para o processo de controle e de seqüenciamento da execução dos programas.
Registrador de Endereço na Memória (REM) (Memory Address Register): registrador que armazena temporariamente o endereço de acesso a uma posição da memória ao se iniciar uma operação de leitura ou escrita. (usado para endereços de dados, enquanto que o PC é usado para endereços de instruções).
Registrador de Dados da Memória (RDM) (Memory Buffer Register): registrador que armazena temporariamente a informação que está sendo transferida da MP para a CPU, ou da CPU para a MP.
Registrador de Estado: consiste em bits individuais com significado diferente atribuídos pelo fabricante do microprocessador. Os principais bits de estado, comumente encontrados nos processadores são:
- Sinal – contém o sinal resultante da última operação aritmética realizada pelo processador;
- Overflow – quando setado (=1) indica que a última operação aritmética realizada resultou em estouro do valor, um erro;
- Zero – quando setado (=1) indica que a última operação realizada resultou em valor zero;
- Vai 1 (carry) – indica que ocorreu um “vai 1” para o bit mais a esquerda na última operação de soma realizada;
- Paridade – é setado (=1) ou (0), dependendo da quantidade de bits no byte recebido.
Decodificador de Instrução: dispositivo utilizado para identificar as operações a serem realizadas, que estão correlacionadas à instrução em execução. Em outras palavras, cada instrução é uma ordem para que a UCP realize uma determinada operação. Como são muitas instrução, é necessário que cada uma possua uma identificação própria e única. A unidade de controle está, por sua vez, preparada para sinalizar adequadamente aos diversos dispositivos da UCP, conforme ela tenha identificado a instrução a ser executada. O decodificador recebe na entrada um conjunto de bits previamente escolhidos e específicos para identificar uma instrução de máquina (cada instrução tem um valor próprio) e possui 2N saídas, sendo N a quantidade de algarismos binários do valor de entrada.
Unidade de aritmética e lógica (ULA ou UAL): área do computador cuja função reside na realização das operações aritméticas e lógicas requeridas para instruções de máquina. Qualquer ULA é um aglomerado de circuitos lógicos e componentes eletrônicos simples e de alta velocidade, que integrados realizam as operações matemáticas e lógicas.
Vimos que processamento de dados é a ação de manipular um ou mais valores (dados) em certa seqüência de ações, de modo a produzir um resultado útil. O resultado muda conforme o tipo de operação realizada. Por exemplo, se uma instrução define que deve ser realizada uma operação de adição sobre os valores A = 5 e B = 3, o sistema, ao interpretar a instrução, gera as ações subseqüentes que redundarão no resultado igual a 5+3 = 8. Por outro lado, se o sistema interpretar uma outra instrução que define a operação de subtração, ele deve gerar outras ações de modo que o resultado seja 5-3 = 2 (e não mais 8). Processar o dado é executar com ele uma ação que produza algum tipo de resultado. Este é, pois, a atividade-fim do sistema; ele existe para processar dados.
O dispositivo principal desta área de atividade de uma UCP é chamado ULA – Unidade Lógica e Aritmética. Os demais componentes relacionados com a função processamento são os registradores, que servem para armazenar dados (ou para guardar resultados) a ser usados pela ULA. A interligação entre estes componentes é efetuada pelo barramento interno da UCP.
Diagrama simplificado de uma ULA típica de um microprocessador:
Microcomputadores mais antigos: utilização de dois tipos de processadores, sendo um exclusivamente para realizar operações aritméticas com valores fracionários, representados em pontos flutuantes. Tais processadores eram denominados co-processadores matemáticos.
Microcomputadores atuais: todos os modelos de processadores fazem uso de um modelo de arquitetura onde estão integradas numa mesma pastilha, uma ULA responsável pela operação com valores inteiros e uma ULA para valores fracionários. No caso do Pentium há duas ULAs escalares para valores inteiros, denominada Aritmetic and Logic Unit e uma ULA que executa operações aritméticas de valores fracionários, denominada Point Floating Unit.
A maioria dos modernos microprocessadores tem unidades lógicas e aritméticas que são capazes de realizar uma grande variedade de operações lógicas e aritméticas. Estas operações podem envolver dois ou um único operando.
OPERAÇÕES COM UM OPERANDO:
1. CLEAR (LIMPE). Todos os bits do operando são zerados.
2. COMPLEMENTAÇÃO (ou INVERSÃO). Todos os bits são mudados para o seu nível lógico oposto.
3. INCREMENTA. O operando é aumentado de 1. Por exemplo, se o operando for 11010011, a ele será somado 00000001 pela ULA, para produzir um resultado igual a 11010100
4. DECREMENTA. O operando é diminuído de 1. Em outras palavras o número 00000001 é subtraído do operando.
5. DESLOCAMENTO (“SHIFT”). Os bits do operando são deslocados de uma posição para a direita ou esquerda e o bit vago é preenchido com 0. Este processo está ilustrado abaixo para uma operação de DESLOCAMENTO PARA A ESQUERDA (“SHIFT-LEFT”).
Na maioria dos microprocessadores o bit que cai fora não é perdido, em vez disso, ele é deslocado para o bit do flag de Vai 1 do registrador de estado. Como está ilustrado no exemplo de DESLOCAMENTO PARA A DIREITA.
DESLOCAMENTO PARA A DIREITA (“SHIFT-RIGHT”).
6. ROTAÇÃO (“ROTATE”). Esta é uma operação de DESLOCAMENTO modificada na qual o flag C torna-se parte de um registrador de deslocamento circular, juntamente com o operando, isto é, o valor colocado para fora do operando é colocado um C e o valor de C é colocado no bit vago do operando. Isto está ilustrado abaixo para uma operação de ROTAÇÃO À DIREITA.
OPERAÇÕES COM DOIS OPERANDOS:
1. SOMA (ADD). A ULA produz a soma binária dos dois operandos. Geralmente, apenas um dos operandos vem de um registrador, outro vem da memória e o resultado é enviado para ao registrador. Se a adição dos dois operandos produzir um vai-um, o flag de Vai-Um, C, no registrador de estado é feito 1. Caso contrário, C é levado para zero. Em outras palavras, C serve como um nono bit do resultado.
2. SUBTRAÇÃO. A ULA subtrai um operando (obtido da memória) do segundo operando (o registrador) e coloca o resultado no registrador.
3. COMPARAÇÃO. Esta operação é o mesmo que a subtração com a exceção de que o resultado não é colocado no registrador. Comparação é executada somente como um meio de determinar qual operando é maior, sem afetar o conteúdo do registrador.
4. E LÓGICO. Os bits correspondentes dos dois operandos sofrem a operação E e o resultado é colocado no registrador. Um dos operandos é sempre o registrador e o outro vem da memória.
5. OU LÓGICO. Os bits correspondentes dos dois operandos sofrem a operação OU e o resultado é colocado no registrador.
6. OU-EXCLUSIVO. Os bits correspondentes dos dois operandos sofrem a operação OU-EXCLUSIVO e o resultado é colocado no registrador.
Paralelismo (pipeline)
Os arquitetos de computadores estão sempre se esforçando para melhorar o desempenho das máquinas que projetam. Fazer com que os chips funcionem com maior rapidez aumentando suas velocidades de relógio é um modo. Por consequência grande parte dos arquitetos de computadores busca o paralelismo (fazer duas ou mais coisas ao mesmo tempo) como meio de conseguir desempenho ainda melhor para a velocidade de relógio.
O paralelismo tem duas formas gerais, a saber:
paralelismo no nível da instrução: corresponde ao paralelismo explorado dentro de instruções individuais para obter da máquina mais instruções por segundo.
paralelismo no nível de processador: consiste em várias CPU’s trabalhando juntas no mesmo problema.
Ao descrever o funcionamento da UCP na realização de seus ciclos de instrução foi observado que, embora o ciclo de instrução seja composto de várias etapas, ele é realizado basicamente de forma seqüencial, isto é, uma etapa se inicia após a conclusão da anterior. Este tipo de arquitetura de computadores é denominado SISD (Single Instruction Stream, Single Data Stream) e refere-se a processadores que executam uma instrução completa de cada vez, seqüencialmente.
Ciclo de instrução em execução seqüencial
O tempo total da execução é a soma dos tempos gastos em cada etapa.
O processo de execução seqüencial é semelhante ao processo de fabricação de automóvel caso ainda existisse uma fábrica que funcionasse em montagem seqüencial:
carroceria: tempo T1; motor: T2; rodas: T3; parte elétrica: T4; bancos: T5; acabamento final: T6.
Tempo para finalizar a fabricação: T = T1 + T2 + T3 + T4 + T5 + T6. Somente após a conclusão total de um carro é que que se iniciaria a montagem de outro carro. Portanto, a fábrica produziria, em X horas, um total de X/T carros, o que seria um valor pequeno.
Metodologia inventada no início do século XX por Henry Ford e atualmente seguida pela maioria das indústrias. Consiste em dividir o processo de fabricação em estágios independentes (que por isso podem se superpor, uns aos outros no tempo), ou seja, um item pode iniciar a sua fabricação antes que um item anterior termine sua montagem, denominando-se linha de montagem (em inglês “pipeline”). A metodologia de construção composta de estágios permitiu que também nos sistemas de computadores se adotasse esta técnica.
A característica fundamental do processo de pipelining reside em duas premissas básicas:
a) a divisão do processo (seja de fabricação de um automóvel, de uma TV ou o ciclo de instrução de uma CPU) em estágios de realização independentes um do outro; e,
b) um novo produto (automóvel, TV ou instrução) inicia o seu processo de fabricação ou execução antes do anterior concluir seu processo.
Pipeline de 5 estágios:
O estágio 1 busca a instrução na memória e a coloca em um buffer até que ela seja necessária.
O estágio 2 decodifica a instrução, determina seu tipo e de quais operandos ela necessita.
O estágio 3 localiza e busca os operandos, seja nos registradores, seja na memória.
O estágio 4 é que realiza o trabalho de executar a instrução.
Por fim o estágio 5 escreve o resultado de volta no registrador adequado.
Estado de cada estágio como uma função do tempo.
Durante o ciclo de relógio 1, o estágio S1 está trabalhando na instrução 1, buscando-a na memória. Durante o ciclo 2, o estágio S2 decodifica a instrução 1, enquanto o estágio S1 busca a instrução 2. Durante o ciclo 3, o estágio S3 busca os operandos para a instrução 1, o estágio S2 decodifica a instrução 2, e o estágio S1 busca a terceira instrução. Durante o ciclo 4, o estágio S4 executa a instrução 1, S3 busca os operandos para a instrução 2, S2 decodifica a instrução 3 e S1 busca a instrução 4. Por fim, durante o ciclo 5, S5, escreve (grava) o resultado da instrução 1 de volta no registrador, enquanto os outros estágios trabalham nas instruções seguintes.
Nenhum comentário:
Postar um comentário