Capítulo 3 Organização Interna de um Computador 3.1 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. 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 (ver Figura 3.1) até que o sistema seja desligado, ou ocorra algum tipo de erro, ou seja, encontrada uma instrução de parada. Figura 3.1 Ciclo de Instrução. As atividades realizadas pela UCP podem ser divididas em duas grandes categorias funcionais: função processamento e função controle. 3.1.1 Função Processamento Vimos que processamento de dados é a ação de manipular um ou mais valores (dados) em certa sequê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. 3.1.1.1. Unidade Lógica e Aritmética ULA:
É o dispositivo que realmente executa as operações matemáticas com os dados. Tais operações podem ser: Soma Subtração Multiplicação Divisão Op. Lógica AND Op. Lógica OR Op. Lógica XOR Op. Complemento Deslocamento à direita Deslocamento à esquerda Incremento Decremento Tais operações podem utilizar dois valores (operações aritméticas e lógicas), por isso a ULA possui duas entradas, ver Figura 3.2, ou apenas um valor (operações com complemento). A ULA é um aglomerado de circuitos lógicos e componentes eletrônicos simples que, integrados, realizam as operações já mencionadas. Figura 3.2 Esquema da UCP, destacando-se os em amarelo os elementos que contribuem para a realização da função processamento. 3.1.1.2. Registradores: Para que o dado seja transferido para a ULA, é necessário que ele permaneça, mesmo que por um breve instante, armazenado em um registrador (a memória da UCP). Além disso, o resultado de uma operação aritmética ou lógica realizada na ULA deve ser armazenado temporariamente, de modo que possa ser reutilizado mais adiante (por outra instrução) ou apenas para ser, em seguida, transferido para a memória. Para atender a este propósito, a UCP é fabricada com certa quantidade de registradores, destinados ao armazenamento de dados. Serve de memória auxiliar da ULA. Há sistemas nos quais um desses registradores, denominado Acumulador ACC, além de armazenar dados, serve de elemento de ligação da UAL com os restantes dispositivos da UCP. Em geral, os registradores de dados da UCP têm uma largura (quantidade de bits que podem armazenar) igual à da palavra. O tamanho dos processadores IBM/370 era de 32 bits, a mesma largura dos 16 registradores de emprego geral neles existentes. O microprocessador Intel 8088, que moveu os primeiros sistemas IBM PC, possui registradores de 16 bits cada um, tamanho idêntico ao definido para a palavra. A quantidade e o uso dos registradores variam bastantes de modelo para modelo de UCP. As Figuras 3.3 e 3.4 apresentam exemplos de organização de registradores de dados em algumas UCP. Além dos registradores de dados, a UCP 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 RI e o contador de instrução CI, além do Registrador de Endereço de Memória REM e o Registrador de Dados de Memória RDM. Barramento Interno ACC Reg. Temp. Flags ULA Reg. B Reg. C Reg. D Reg. E Reg. H Reg. L B = C = D = E = H = L = ULA = Figura 3.3 Diagrama (simplificado) em bloco da UCP Intel 8085, apenas com os dispositivos básicos da área de processamento. Reg. Temp. ULA Flags Reg. Temp. Barramento Interno Reg. de Emprego geral AH AL BH BL CH CL OH DL AH + AL += 16 bits ULA = 16 bits Figura 3.4 Diagrama (simplificado) em bloco da UCP Intel 8086, mostrando apenas os dispositivos básicos da área de processamento. 3.1.1.2. A Influência do Tamanho da Palavra: A capacidade de processamento de uma UCP (a velocidade com que realiza o ciclo de uma instrução) é em grande parte determinada pelas facilidades embutidas no hardware da ULA (ela é, só hardware) para realizar as operações matemáticas projetadas. Um dos elementos fundamentais para isso é a definição do tamanho da palavra da UCP. O valor escolhido no projeto de fabricação da UCP determinará o tamanho dos elementos ligados à área de processamento, entre estes a ULA. Um tamanho maior ou menor de palavra (e, por conseguinte, da ULA, dos registradores de dados, do barramento interno) acarreta, sem dúvida, diferenças fundamentais de desempenho da UCP. Vejamos um exemplo simples sobre a influência do tamanho da palavra na capacidade de processamento. Vamos realizar a soma de dois valores, A = 3A25 e B = 172C, ambos números inteiros, sem sinal, com 16 bits de tamanho cada um. A referida soma será simulada em 2 sistemas de computação, sistema 1 e sistema 2. O sistema 1 possui palavras de 8 bit, e a memória principal tem 64K células de cada uma, conforme mostrado na Figura 3.5. O sistema 2 possui palavras de 16 bits, e a memória principal possui um espaço de endereçamento de 1M células, todas também com cada uma, conforme mostrado na Figura 3.6. Operação de soma no sistema 1:
a) A operação é realizada em duas etapas lógicas, porque cada valor tem 16 bits e a UCP (ULA, registrador ACC e barramento de dados) só permite armazenar, processar e transferir dados com 8 bits de tamanho. b) Na primeira etapa são transferidos para a ULA, via ACC e barramento de dados, a 1 a metade de cada número (25 para o número A e 2C para o número B) e eles são somados. c) Na segunda etapa a operação é realizada de forma idêntica, exceto para a 2 a parte dos valores (3A para o número A e 17 para o número B). d) A operação completa gasta um período de tempo igual a T 1. A Figura 3.5 mostra este exemplo em um digrama em bloco de uma UCP semelhante à do sistema 1, com a transferência dos valores sendo efetuada de 8 em de cada vez. Operação de soma no sistema 2: a) A operação é realizada em uma etapa lógica, porque a UCP é fabricada para operar valores de 16 bits de tamanho, mesmo tamanho dos números. b) A operação completa gasta um período de tempo igual a T 2. A Figura 3.6 mostra este exemplo em um digrama em bloco de uma UCP semelhante à do sistema 2, com a transferência dos valores sendo efetuada de 16 em 16 bits de cada vez. Considere que a operação de soma no sistema 1 é realizada em duas etapas e a mesma operação no sistema 2 é realizada em uma etapa, o tempo T 2 deve ser aproximadamente a metade do tempo T 1. Isto torna a capacidade da UCP do sistema 2 bem maior que a capacidade do sistema 1. NOTA: Nos exemplos anteriores foram consideradas várias simplificações, não somente na arquitetura dos dois sistemas, como também no processo de soma, visando não complicar a explicação do essencial a influência do tamanho da palavra na variação da capacidade de processamento dos sistemas. Nenhuma das simplificações feitas comprometeu a conclusão final. MP a 25+2 C (1 ) 3 A+17 (2 a ) ULA UCP ACC = 0 3 A 25 17 2 C A B Barr amento de dados UCP Palavra de Memória de 64K bytes Operação: somar 2 números com 16 bits de tamanho A = 3A25 e B = 172C (realizada em duas etapas) Figura 3.5 Exemplo de uma operação de soma de 2 números, A e B, em um computador com palavra de.
16 bits 3 A25+172C (1 a ) UCP 0 MP 3 A 25 A B ULA ACC = 16 bits 16 bits Barramento de dados UCP Palavra de 16 bits Memória de 1M bytes Operação: somar 2 números com 16 bits de tamanho A = 3A25 e B = 172C (realizada em uma única etapa) Figura 3.6 Exemplo de uma operação de soma de 2 números, A e B, em um computador com palavra de 16 bits. No projeto de uma UCP, a definição do tamanho da palavra tem enorme influência no desempenho global de toda a UCP e, por conseguinte, do sistema como um todo. Vejamos: a) Influencia no desempenho devido ao maior ou menor tempo na execução de instruções com operações matemáticas na ULA, conforme demonstrado no exemplo anterior; b) Influencia no desempenho devido ao tamanho escolhido para o barramento interno e externo da UCP. Em geral, obtém-se o máximo de desempenho quando a largura (tamanho) do barramento de dados é, no mínimo, igual ao tamanho da palavra (como nos exemplos mostrados). Se a largura do barramento for, p. ex., igual a 16 bits em um sistema com palavra de 32 bits (ULA e registradores de 32 bits), então o movimento de 4 bytes de um dado tipo caractere requererá dois ciclos de tempo do barramento, ao passo que em barramento de 32 bits requereria apenas um ciclo de tempo; c) Influencia também na implementação física do acesso à memória. Embora atualmente a capacidade das memórias seja medida em bytes (porque as células são sempre de largura igual a ), o movimento de dados entre UCP e memória é normalmente medido em palavras, porque o barramento de dados que une o RDM (ou MBR) à memória deve acompanhar em largura o valor da palavra. Para uma UCP de 32 bits de palavra, p. ex., é desejável que a memória seja organizada de modo que sejam acessadas 4 células contíguas (4 bytes = 32 bits) em um único ciclo de memória. Se isto não ocorrer, a UCP deverá ficar em estado de espera ( wait state ). 3.1.2 Função Controle 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.); e 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 o ato. Os nervos são análogos ao barramento de interligação entre os diversos elementos. Na Figura 3.2 apresentada anteriormente, os elementos em Azul são os que contribuem para a realização da função de controle. Os dispositivos básicos que devem fazer parte daquela área funcional são: Unidade de controle (UC); Decodificador; Registrador de instrução (RI); Contador de Instrução (CI) ou PC Program Counter; Relógio ou Clock; Registradores de endereço de memória (REM) e de dados da memória (RDM). A quantidade, a complexidade e a disposição dos componentes que realizam as funções de controle variam consideravelmente de UCP para UCP, porém, essencialmente, os dispositivos indicados (em azul na Figura 3.2) são os mesmos. 3.1.2.1. A Unidade de Controle: É 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). 3.1.2.2. O Relógio: É 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 frequência, a qual também usamos para definir velocidade na UCP. A Figura 3.7 mostra um exemplo de um relógio (em geral, é um gerador de cristal de quartzo) e os pulsos por ele gerados. Um ciclo de relógio 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 à realização de uma operação elementar, durante o ciclo de uma instrução (operação elementar pode ser, p. ex., uma microinstrução, que é parte do ciclo de uma instrução de máquina, que veremos posteriormente). No entanto, mesmo esta operação elementar não se realiza em um só passo e, por essa razão, costuma-se dividir o ciclo de máquina em ciclos menos (subciclos), defasados no tempo, de modo que cada um aciona um passo diferente da operação elementar. A Figura 3.7 mostra o ciclo básico e os 5 subciclos gerados por um retardador (exemplo dos ciclos do processador Intel 8085). 3.1.2.3. Registrador de Instrução - RI: É o 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. 3.1.2.4. Contador de Instrução - CI: É o 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 sequê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 sequenciamento da execução dos programas. Relógio T 1 Gerador T 2 Unidade T De 3 T 4 De T Tempo 0 T 5 Controle (a) Diagrama em Bloco do conjunto de tempo da área de controle. 1 Subciclo = T 0 /5 T 0 T 1 T 2 T 3 T 4 T 5 1 Ciclo = T 0 (b) Diagrama de tempo do ciclo do processador (T 0 ) e seus 5 subciclos. Figura 3.7 Diagrama em bloco da UC, mostrando o relógio e um conjunto de ciclos de tempo. 3.1.2.5. Decodificador de Instrução: É um 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ções, é 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 2 N saídas, sendo N a quantidade de algarismos binários do valor de entrada. A Figura 3.7 mostra um exemplo de configuração de decodificador com entrada de 4 bits e 16 saídas. Cada linha de saída aciona de modo diferente a UC e esta, por sua vez, emite diferentes sinais de controle, conforme a linha de saída decodificada.
0 15 Registrador de Instrução E 0 a E 2 Decodificador UC Sinais de Controle E Entrada S Saída S a S (a) Diagrama em bloco da decodificação em uma UCP. E0 E1 E 3 E2S1 S 0 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 0 0 0 011 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 1 100 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 000 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 000 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 100 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 10 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 000 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 100 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 100 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 000 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 000 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 100 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 1 Figura 3.8 Exemplo de um decodificador com 4 entradas e 16 saídas. 3.1.2.6. Registrador de Dados de Memória RDM e Registrador de Endereços de Memória - REM: São os registradores utilizados pela UCP e memória para comunicação e transferência de informação conforme já explicado. Em geral, o RDM (ou MBR Memory Buffer Register) possui um tamanho (capacidade de armazenamento de bits) igual ao da palavra e do barramento de dados, enquanto o REM (ou MAR Memory Address Register) possui um tamanho igual ao dos endereços da memória (e, consequentemente, do barramento de endereço do sistema). Pela definição de bits do REM podemos calcular qual o espaço máximo de endereçamento da memória principal de um computador.