Arquitectura de Computadores
Notas de estudo
Alberto José Proença
1999/00
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).
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.
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).
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