Arquitectura de Computadores

Notas de estudo

Alberto José Proença

1999/00

Índice geral

 

  1. Organização e arquitectura dum computador
  2. Análise do funcionamento do CPU dum computador
  3. Mecanismos para execução de programas
  4. Modelo de programação dum processador
  5. Metodologia de construção de programas em assembly
  6. Alternativas às arquitecturas RISC genéricas
  7. Computação aritmética
  8. Arquitectura interna dum processador simples - o datapath
    1. Comentários introdutórios
    2. Construção dos blocos no datapath do MIPS
    3. O datapath completo do MIPS

 

Completou-se em capítulos anteriores a análise do modo de funcionamento das operações lógicas e aritméticas (incluindo a multiplicação e divisão), quer em inteiros, quer em valores em vírgula flutuante. Esta análise foi ainda acompanhada da descrição das unidades funcionais em termos de diagramas de blocos (ALU e unidade de vírgula flutuante), ao nível dos sistemas digitais que constituem esses blocos. Este capítulo está reservada ao complemento dessa análise: o estudo do resto da estrutura interna dum CPU, em termos dos circuitos por onde circula a informação - o data path .

Embora o estudo da unidade de controlo seja matéria para a disciplina seguinte de Arquitectura de Computadores (AC II), a apresentação final da estrutura interna dum CPU (versão resumida do MIPS) inclui também os sinais de controlo indispensáveis à selecção adequada quer de operações da ALU, quer dos vários selectores/ multiplexadores presentes no diagrama.

Este assunto é tratado com maior profundidade que o indispensável a ACI no texto de apoio (ver 5.1 a 5.3). As figuras referenciadas ao longo deste capítulo são as usadas na íntegra no livro recomendado, e estão disponíveis aqui em formato WMF compactado (145K para todas as figuras do cap. 5).

 

  1. Comentários introdutórios

A arquitectura interna de qualquer processador é constituída por pelo menos 3 blocos básicos: um banco de registos (contendo o do MIPS 32 registos genéricos) uma ou mais unidades funcionais (incluindo a ALU para operações com inteiros) e uma unidade de controlo. Ao conjunto de blocos dum processador que são usados directamente para a circulação e processamento da informação designa-se normalmente de data path. É este data path. que se irá analisar nesta semana, sendo a unidade de controlo (também designada de control path.) tratada posteriormente em AC II.

Na análise deste data path. apenas se irá incluir o suporte a um sub-conjunto de instruções do MIPS:

Começa-se por relembrar a sequência de passos para implementar cada instrução:

Um modelo de uma implementação do MIPS que permite a execução dessa sequência de passos está representada na fig. 5.1.

Ainda antes de entrar na análise do data path do MIPS, é pertinente apresentar uma breve introdução aos 2 tipos de circuitos que se encontram sempre em qualquer sistema digital síncrono: circuitos de lógica combinatória e de lógica sequencial.

Os primeiros implementam sempre uma função de valores de entrada - lógica combinatória, pois cada variável de saída é meramente uma combinação dos valores de entrada - e não dispõem de qualquer capacidade de memorização da informação. Se não fossem os atrasos na propagação dos sinais eléctricos pelos diversos circuitos físicos, poder-se-ia dizer que para qualquer variação num sinal de entrada, se teria simultanemante uma variação nos sinais de saída, de acordo com a função definida. São exemplo de circuitos de lógica combinatória todos os circuitos analisados durante o estudo da computaçao aritmética: as gates AND, OR, INV e MUX, e o próprio circuito da ALU.

Por outro lado, sempre que uma função de saída depende não apenas dos valores das variáveis de entrada, mais ainda do estado em que o circuito se encontrava e do comportamento dum sinal que marca o ritmo de variação do tempo (clock), então estamos perante um circuito sequencial síncrono: o sinal de clock marca o instante em que se processa uma variação do estado do circuito, e o estado global do circuito é armazenado em registos que se mantêm inalterados até ao próximo sinal de clock.

A arquitectura interna dum processador é um exemplo típico dum circuito sequencail síncrono, constituído por registos - os registos para conterem a informação a ser processada pela execução das instruções de linguagem máquina, e os registos de estado na unidade de controlo - e por vários blocos de lógica combinatória - para realizarem as operações (descodificação de operações, ALU, ...) e para implementarem a parte da unidade de controlo que gera o próximo estado. Este assunto será objecto das disciplinas de Sistemas Digitais, e posteriormente complementado em AC II.

  1. Construção dos blocos no datapath do MIPS

O primeiro bloco a analisar é o que tem a responsabilidade da busca de instruções, e inclui a actualização do valor do IP/PC. A fig.5.6 mostra esse bloco.

Uma vez colocada a instrução dentro do processador - num registo de instrução - procede-se à sua descodificação pela unidade de controlo. Esta operação no MIPS é feita em simultâneo com a descodificação dos campos da instrução que seleccionam registos, pois a maioria das instruções no MIPS acedem a registos. O primeiro tipo de instruções a analisar na construção do data path tem como objectivo a execução de instruções aritméticas e lógicas com formato R. A fig.5.8 mostra a representação esquemática deste bloco no data path.

O segundo tipo de instruções a analisar na construção do data path tem como objectivo a execução de instruções de acesso à memória load/store com formato I. A fig.5.10 mostra a representação esquemática deste bloco no data path.

O terceiro tipo de instruções a analisar na construção do data path tem como objectivo a execução de instruções de salto condicional com formato I. A fig.5.11 mostra a representação esquemática deste bloco no data path.

Na execução de instruções de salto incondicional com formato J acrescenta-se um novo multiplexador antes do registo IP/PC para que a unidade de controlo possa seleccionar entre o valor calculado anteriormente (IP/PC + 4) e o endereço de salto absoluto especificado pela instrução. Este endereço é calculado concatenando os 4 bits mais significativos de IP/PC com os 26 bits menos significativos da instrução, e fazendo depois uma operação de deslocamento de 2 bits para a esquerda (uma vez que o endereço de salto especificado é o endereço de uma palavra de 32 bits, que ocupa 4 células de memória, e a operação de deslocamento de 2 bits para a esquerda é equivalente à multiplicação por 4).

  1. O datapath completo do MIPS

Uma vez analisados todos os blocos separadamente, torna-se necessário agora juntá-los todos e acrescentar os circuitos necessários para que seja possível seleccionar mais que uma alternativa, consoante se trata de instruções aritmética/lógicas, ou de load/store ou ainda de salto. Estes novos circuitos não são mais que multiplexadores, para permitirem, por exemplo, seleccionar qual vai ser a proveniência da segunda entrada para a ALU, ou ainda se o campo especificado para o registo rt é para seleccionar um registo para leitura ou para escrita.

As fig.5.12, 5.13 e 5.14 vão construindo sucessivamente o data path integral do MIPS. A fig. 5.20 acrescenta-lhe os sinais de controlo mais relevantes, enquanto a fig.5.33 é a primeira que inclui a parte do salto incondicional, para além de incluir os 2 blocos de controlo que descodificam a instrução e os sinais que respectivamente geram.

Durante a aula procedeu-se ainda à análise detalhada do funcionamento de 3 instruções, incluindo a representação binária de todos os sinais pertinentes no diagrama do data path do MIPS:

add Rd, Rs, Rt lw/sw Rt, Imm16(Rs) beq Rs, Rt, Offset16