Registradores de uma CPU Registradores de uma CPU - Acumulador • Um registrador é um local interno à CPU, onde os dados que foram buscados na memória são armazenados. • O registrador é um circuito lógico que tem a finalidade de reter a curto prazo um conjunto de bits. • Os registradores são chamados de acumuladores [A]. Prof. Eduardo Appel Eng.DSc. [email protected] 7 • Denominação dos registradores 6 5 4 3 2 1 0 No. do bit Acumulador • Função dos registradores • Características dos registradores CPU • Utilização dos registradores Acumulador Arquitetura e Organização de Computadores 1 Contador de Dados (CD) • A vantagem de um registrador frente a uma posição de memória: versatilidade de movimentação de bits. • Em um registrador de aspecto geral, tem-se a capacidade de: – deslocar tanto para a direita como para esquerda; – entrada e saída paralela; – “setar” e “resetar” bit 3 • Para podermos acessar uma palavra de dados da memória (tanto para ler seu conteúdo, como para armazenar dados dentro dela), precisamos identificar seu endereço. • Este endereço fica armazenado em um registrdor denominado Contador de Dados [CD]. • O tamanho do CD dependerá do tamanho máximo de memória endereçável pelo microprocessador. • CD 8bits — 28=256 palavras de memória (endereços) • CD 16bits — 216=65536 palavras de memória (endereços) Arquitetura e Organização de Computadores Registradores de uma CPU Registradores de uma CPU Registro de Instrução (I) Contador de Programa (PC) • Para manusear os códigos de instrução, a CPU necessitará de um registrador para armazenar os códigos de instrução. • O código de instrução é armazenado no registro denominado Registro de Instrução (I). • A CPU sempre irá interpretar o conteúdo do registro de instrução como sendo um código de instrução. • Após o armazenamento dos códigos de instrução no Registro de Instrução, inicia-se o processo de decodificação. Arquitetura e Organização de Computadores 2 Registradores de uma CPU Registradores de uma CPU - Acumulador Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores 5 4 • Para poder manusear os códigos de instrução, a CPU necessitará armazenar os endereços da palavra de memória da qual o código de instrução será lido. • O endereço da palavra de memória da qual o código de instrução será lido é fornecido por um registro denominado Contador de Programa (PC). • O PC é análogo ao CD, porém o PC é assumido para endereçar sempre palavras de memória de programa. • Funcionamento: PC=PC + 1 Arquitetura e Organização de Computadores 6 1 Registradores de uma CPU- Utilização Registradores de uma CPU- Utilização • Para entendermos a utilização dos registradores da CPU voltaremos ao programa da adição binária. • Cada passo do programa será tratado como uma instrução. • Inicialmente o PC contém 0400H, o endereço da primeira palavra de instrução do programa na memória. O conteúdo dos outros registradores são desconhecidos. • Os dados contidos nas palavras de memória de endereço 0A30H e 0A31H são inicialmente 7AH e 2FH. Endereço do byte de memória Memória de Programa Memória de Dados Arquitetura e Organização de Computadores 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F A Instrução 3 I CD PC 0400 Instrução 4 Instrução 5 Arquitetura e Organização de Computadores Endereço do byte de memória Memória de Programa Memória de Dados 8 Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 A Instrução 2 CD Instrução 3 I 9C 0401 PC Instrução 4 Instrução 5 0A32H 9 Registradores de uma CPU- Utilização Arquitetura e Organização de Computadores 10 Registradores de uma CPU- Utilização Endereço do byte de memória • O código 9C, aparecendo no registro de Instrução, faz a lógica da CPU implementar 2 passos. • Primeiro, o conteúdo do byte de memória endereçado pelo PC é lido da memória, mas é armazenado no byte mais alto do contador de dados (CD). • A CPU então incrementa o conteúdo do PC. • Em seguida, o conteúdo do byte de memória endereçado pelo novo PC é lido da memória e armazenado no byte mais baixo do CD. • A CPU incrementa novamente o conteúdo do PC. Arquitetura e Organização de Computadores Instrução 2 Registradores de uma CPU- Utilização • A CPU carrega o conteúdo da palavra de memória endereçada pelo PC no registro de Instrução (I), assegurando assim que o conteúdo desta palavra de memória seja interpretado como um código de instrução. • A CPU então incrementa o conteúdo do PC. Arquitetura e Organização de Computadores Instrução 1 0A32H 7 Registradores de uma CPU- Utilização Byte de Memória 0400H 11 Memória de Programa Memória de Dados Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 A Instrução 2 CD 0A00 Instrução 3 I 9C 0402 PC Instrução 4 Instrução 5 0A32H Arquitetura e Organização de Computadores 12 2 Registradores de uma CPU- Utilização Registradores de uma CPU- Utilização Endereço do byte de memória Memória de Programa Memória de Dados Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 A Instrução 2 CD 0A30 Instrução 3 I 9C 0403 PC Instrução 4 Instrução 5 0A32H Arquitetura e Organização de Computadores • A execução da Instrução 1 foi completada. O conteúdo dos bytes de memória 0401H e 0402H foram carregados no registrador CD. • O código de instrução necessita de dados que o seguisse imediatamente. Este tipo de dado, que aparece imediatamente após um código de instrução de um programa na memória, é chamado dado imediato, ou dado literal. • Na Instrução 1, os bytes de memória 0401H e 0402H contêm o dado imediato 0A30H. • O código de instrução 9CH, lido da posição 0400H, identifica a maneira pela qual o dado imediato 0A30H deve ser interpretado pela CPU. 13 Registradores de uma CPU- Utilização Arquitetura e Organização de Computadores Registradores de uma CPU- Utilização • Após a execução da Instrução 1, a CPU busca (ou lê) o conteúdo do byte de memória endereçado por PC (0403H), e então incrementa o PC. • O conteúdo do byte lido é armazenado no registrador de Instrução (I), para ser interpretado como um código de instrução. Endereço do byte de memória Memória de Programa Memória de Dados Arquitetura e Organização de Computadores Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 A Instrução 2 CD 0A30 Instrução 3 I 40 PC 0404 Instrução 4 Instrução 5 0A32H 15 Registradores de uma CPU- Utilização Arquitetura e Organização de Computadores 16 Registradores de uma CPU- Utilização • Este código de instrução (40H) faz a CPU pegar o dado contido no byte de memória endereçado pelo Contador de Dados (CD) e carregá-lo no Acumulador (A). Endereço do byte de memória Memória de Programa Memória de Dados Arquitetura e Organização de Computadores 14 17 Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 Instrução 2 A 7A CD 0A30 Instrução 3 Instrução 4 I 40 PC 0404 Instrução 5 0A32H Arquitetura e Organização de Computadores 18 3 Registradores de uma CPU- Utilização Registradores de uma CPU- Utilização • A instrução 2 completou sua execução e o PC já endereça a próxima palavra de memória de programa (0404H), que contém o código de instrução para a Instrução 3. • A Instrução 3 é uma repetição da Instrução 1, sendo que o dado imediato 0A30H é substituído por 0A31H. Como na Instrução 1 os registradores sofrerão mudanças em três etapas. • A primeira etapa lê o código de instrução para o registro I. • A segunda etapa lê 0AH do byte 0405H e armazena no byte alto do registro CD. • A terceira etapa carrega o byte baixo de CD. Arquitetura e Organização de Computadores Memória de Programa Memória de Dados 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Memória de Dados 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F A CD 0A30 Instrução 3 Instrução 4 Memória de Programa I 9C PC 0406 Instrução 5 Memória de Dados 0A32H Arquitetura e Organização de Computadores CD I 9C PC 0405 Instrução 4 Instrução 5 20 Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 Instrução 2 A 7A CD 0A31 Instrução 3 I 9C PC 0407 Instrução 4 Instrução 5 0A32H 21 Registradores de uma CPU- Utilização Arquitetura e Organização de Computadores 22 Registradores de uma CPU- Utilização Endereço do byte de memória • A Instrução 3 completou sua execução e a execução da Instrução 4 já pode ter início. • Como nas instruções anteriores, a CPU começa automaticamente carregando o conteúdo do byte de memória endereçado por PC no registro I. Memória de Programa Memória de Dados Arquitetura e Organização de Computadores A 7A 0A30 Instrução 3 Registradores de uma CPU- Utilização Instrução 1 7A Instrução 2 0A32H Endereço do byte de memória Instrução 2 Instrução 1 Arquitetura e Organização de Computadores Byte de Memória 0400H Memória de Programa Byte de Memória 0400H 19 Registradores de uma CPU- Utilização Endereço do byte de memória Endereço do byte de memória 23 Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 Instrução 2 A 7A CD 0A31 Instrução 3 Instrução 4 I 80 PC 0408 Instrução 5 0A32H Arquitetura e Organização de Computadores 24 4 Registradores de uma CPU- Utilização Registradores de uma CPU- Utilização • O código de instrução 80H faz com que a CPU busque o conteúdo da palavra de dados endereçada por CD e someo ao conteúdo do acumulador (A). Endereço do byte de memória Memória de Programa Memória de Dados Arquitetura e Organização de Computadores 27 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 Instrução 1 Instrução 2 A9 A CD 0A31 Instrução 3 PC 0408 Instrução 4 Instrução 5 I 80 7A 7A16 + 2F16 = A916 0A30H 7A 0A31H 2F 0A32H 26 Memória de Programa Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A 0A31H 2F Instrução 1 Instrução 2 A9 A CD 0A31 Instrução 3 Instrução 4 I 60 PC 0409 Instrução 5 0A32H Arquitetura e Organização de Computadores Registradores de uma CPU- Utilização 28 Registradores de uma CPU- Resumo Byte de Memória 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 0A30H 7A A9 0A31H 30 0403H Endereço do byte de memória Memória de Dados Memória de Dados 0402H Registradores de uma CPU- Utilização • A Instrução 4 completou agora sua execução. • O conteúdo do acumulador (resultado da soma) deve ser armazenado no byte de memória 0A31H que é o byte de memória endereçado correntemente pelo CD. • A Instrução 5 armazena o conteúdo de A no byte de memória de dados 0A31H por meio de dois passos. • O passo 1 busca o código de instrução de maneira usual. • O passo 2 armazena o acumulador no byte de memória endereçado por CD. Memória de Programa 0A Arquitetura e Organização de Computadores Registradores de uma CPU- Utilização Endereço do byte de memória 9C 0401H 25 Arquitetura e Organização de Computadores Byte de Memória 0400H Instrução 1 Instrução 2 A9 A CD 0A31 Instrução 3 I 60 0409 PC Instrução 4 Instrução 5 0A32H Arquitetura e Organização de Computadores 29 • Acumulador: armazena por curto prazo um conjunto de bits. • Contador de Dados:armazena endereços para operações de leitura/escrita na memória. • Registro de Instrução:armazena códigos de instrução. • Contador de Programa:armazena endereços da palavra de memória da qual o código de instrução será lido. Arquitetura e Organização de Computadores 30 5