Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. - PDF Download grátis
Download "Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores."
Sebastião Fontes Chaplin
1 Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características: Tempo de acesso - por serem construídos com a mesma tecnologia da CPU, estes dispositivos possuem baixo tempo de acesso do sistema. Capacidade - os registradores são fabricados com a capacidade de armazenar um único dado, uma única instrução ou até mesmo um único endereço, fazendo, assim, com que sua capacidade seja de alguns poucos bits. Volatilidade - registradores são memórias de semicondutores e, portanto, necessitam de energia elétrica para funcionarem. Assim, registradores são memórias voláteis. Temporariedade - os registradores são memórias auxiliares internas à CPU e, portanto, tendem a guardar informação o mais temporariamente possível. Acumuladores ou registradores de dados armazenam os dados apenas o tempo necessário para sua utilização na ALU. Custo - devido à tecnologia mais avançada de sua fabricação, os registradores consistem no tipo de memória de maior custo. Além dos registradores de dados, a CPU possui sempre outros registradores (que não participam diretamente da função processamento), com funções específicas ou que funcionam para a área de controle. Entre estes registradores podemos citar desde já o registrador de instrução (IR Instruction Register), além do registrador de endereços de memória (MAR Memory Address Register) e o registrador de dados de memória (MBR Memory Buffer Register). Registrador de Dados de Memória (MBR) registrador que armazena temporariamente a informação que está sendo transferida da memória cache para a CPU (leitura) ou da CPU para a memória cache (escrita). Em seguida, a referida informação é reencaminhada para outro elemento da CPU para processamento ou para a memória cache, conforme o tipo da operação de transferência
2 Registrador de Endereços da Memória (MAR) registrador que armazena temporariamente o endereço de acesso a uma posição de memória, ao se iniciar uma operação de leitura ou de escrita. Em seguida, o referido endereço é encaminhado à área de controle da MP para decodificação e localização da célula desejada Função Controle: A seção de controle é formada basicamente pela Unidade de Controle (UC) e pelo registrador de instrução (IR). Todas as operações básicas que ocorrem dentro da seção de processamento são comandadas pela seção de controle. Ao efetuar a busca da instrução, a unidade de controle interpreta a instrução de modo a identificar quais as operações básicas que devem ser realizadas e ativa sinais de controle que fazem uma operação básica de fato acontecer. Em outras palavras, a seção de controle é projetada para entender o quê fazer, como fazer e comandar quem vai fazer no momento adequado Unidade de Controle (UC): É o dispositivo mais complexo da CPU. Além de possuir a lógica necessária para realizar a movimentação de dados e instruções de e para a CPU, esse 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). Clock É o dispositivo gerador de pulsos cuja duração é chamada de ciclo. A quantidade de vezes em que este pulso básico se repete em um segundo define a unidade de medida do relógio, denominada freqüência, a qual também usamos para definir velocidade na CPU. Um ciclo de relógio (clock cycle) ou de máquina é o intervalo de tempo entre o início de um pulso e o início do seguinte. Este ciclo está relacionado à execução de uma instrução básica
3 A unidade de medida usual para a freqüência dos relógios de CPU é o Hertz (Hz), que significa um ciclo por segundo. Como se trata de freqüências elevadas, abreviam-se os valores usando-se milhões (10 6 ) de Hertz ou de ciclos por segundo (MegaHertz ou MHz). Nos processadores mais modernos o clock é medido em GigaHertz (10 9 ). Assim, por exemplo, se um determinado processador funciona com seu relógio oscilando 3,2 bilhões de vezes por segundo, sua freqüência de operação é de 3,2 GHz Registrador de Instruções - IR É o registrador que tem a função específica de armazenar a instrução a ser executada pela CPU. Ao se iniciar um ciclo de instrução, a UC emite um 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 registrador de endereço de memória (MAR), será armazenada no IR Linguagem de Montagem Em geral, os programas são desenvolvidos em uma linguagem de alto nível, como Pascal, C, ou Java. O compilador traduz o programa de alto nível em uma seqüência de instruções de processador. Desta tradução resulta o programa em linguagem de montagem (assembly language). A linguagem de montagem é uma forma de representar textualmente as instruções oferecidas pela arquitetura, cada uma com uma linguagem de montagem em particular. No programa em linguagem de montagem, as instruções são representadas através de abreviações, chamadas de mnemônicos, que associam o nome da instrução à sua função, como por exemplo: ADD Adição SUB Subtração MPY Multiplicação DIV Divisão LOAD Carregar dados na memória STOR Armazenar dados na memória
4 O programa em linguagem de montagem é convertido para um programa em código objeto pelo montador (assembler). O montador traduz diretamente uma instrução da forma textual para a forma de código binário. É sob a forma binária que a instrução é carregada na memória e interpretada pelo processador Técnica Especial de Execução de Instruções: Pipelining: No processo básico de execução de instruções, estas são executadas sequencialmente, ou seja, a execução de uma nova instrução inicia-se somente quando a execução da instrução anterior é completada. Na técnica de pipelining, permite-se que várias instruções sejam executadas simultaneamente, pois os passo da execução são realizados por unidades independentes, denominadas estágios do pipeline. O exemplo a seguir representa um pipeline de quatro estágios: No ciclo c1, a instrução i1 é buscada no estágio B;
5 No ciclo c2, a instrução i1 é decodificada no estágio D, enquanto o estágio B busca uma nova instrução, i2; No ciclo c3, o estágio E executa a instrução i1, ao mesmo tempo que que o estágio D decodifica a instrução i2 e o estágio B busca a instrução i3; No ciclo c4, o resultado da instrução i1 é armazenado pelo estágio R, as instruções i2 e i3 avançam para o próximo estágio e o estágio B busca a instrução i4; Novas instruções entram no pipeline antes que a execução das instruções anteriores seja completada; Quando o pipeline encontra-se cheio, várias instruções estão sendo executadas em paralelo, uma em cada estágio do pipeline; Na realidade, o aspecto mais importante na técnica de pipeline é que uma instrução seja completada em um ciclo de clock. Em uma arquitetura seqüencial, a execução de uma instrução consome vários ciclos de clock, fazendo que o número médio de ciclos esteja bem acima da média de 1 ciclo/operação obtida com o uso da técnica de pipelining. A redução no número médio de ciclos por instrução contribui diretamente para aumentar o desempenho. Logo, as arquiteturas modernas voltadas para aplicações de alto desempenho utilizam a técnica de pipelining. Apesar de conceitualmente simples, o uso de pipelining encontra alguns problemas na prática. A técnica funciona se houver uma continuidade no fluxo de instruções, o que muitas vezes não acontece, por exemplo, quando existe uma dependência de dados entre duas instruções. Uma dependência entre duas instruções i e j existe quando um dos operandos da instrução j é o resultado da instrução i anterior. Se estas duas instruções forem executadas simultaneamente no pipeline, pode acontecer que a instrução i ainda não tenha produzido seu resultado no momento que a instrução j lê seus operandos, resultando em uma execução incorreta, se não existir uma forma de controle. A solução mais simples seria paralisar a execução de j quando seus operandos são buscados, até que a operação i seja completada. No entanto, esta paralisação parcial do pipeline resulta em uma descontinuidade no fluxo de informações, elevando o número médio de ciclos por instrução