Unidade de Controlo 1 CPU – esquema geral (revisão) Processador Palavra de controlo Unidade de Controlo Datapath Estado (flags) End. Dados Leitura/Escrita Memória R/W 2 Unidade de controlo Gera as palavras de controlo que definem o que é feito no datapath As palavras de controlo são geradas de acordo com as instruções dadas num programa Tipicamente podem ser seguidas duas arquitecturas Unidade de controlo uni-ciclo Fetch e execução feitos no mesmo ciclo Unidade de controlo multi-ciclo Tipicamente um ciclo para o fetch seguido de um número variável de ciclos para a execução 3 Unidade de controlo uni-ciclo Durante um único ciclo do processador efectuam-se os seguintes passos : Leitura da instrução que está na posição de memória indicada pelo registo Program Counter (PC) – fetch Descodificação da instrução (para determinar quais os sinais de controlo a aplicar ao datapath) Execução da instrução No final do ciclo… …Incrementa-se o valor de PC ou, … …no caso de haver um salto, carrega-se em PC o endereço de destino do salto 4 Unidade de controlo uni-ciclo Unidade de controlo Load / INC Controlo de saltos PC Memória de programa Memória de dados Descodificador de Endereços Leitura/Escrita Tipo de salto Descodificador de Instruções Palavra de Controlo Datapath Bits de estado (flags) 5 Unidade de controlo uni-ciclo Considerações Unidade de controlo simples Basicamente, a cada instrução do programa vai corresponder a uma palavra de controlo a aplicar ao datapath Restrições: Exige separação entre memória de dados e memória de instruções (para fazer o fetch e a execução no mesmo ciclo) O formato das instruções tem que ser muito regular para facilitar a descodificação O tempo de duração de cada ciclo fica muito dependente dos tempos de acesso às memórias 6 Unidade de controlo multi-ciclo Cada instrução do programa requer tipicamente mais do que um ciclo para a sua execução A cada instrução do programa vai corresponder uma sequência de várias micro-instruções Estas sequências são obtidas através… …de um circuito sequencial que vai gerando as palavras de controlo Arquitectura Hardwired …de um “micro-programa” que define a sequência de micro-instruções correspondente à instrução a executar. Arquitectura Microprogramada 7 Unidade de controlo multi-ciclo Por cada instrução: Ciclo de fetch: A instrução que está na posição de memória indicada pelo PC é lida para um registo especial, designado por Instruction Register (IR) O opcode da instrução irá fazer com que a unidade de controlo siga uma sequência de estados pré-definida Dada por um circuito sequencial (hardwired) , ou por uma sequência de palavras de controlo em memória (microprogramada) Em cada um desses estados aplica-se uma palavra de controlo ao datapath Cada estado corresponde a um ciclo do sinal de relógio – podem assim haver vários ciclos para a execução 8 Unidade de controlo multi-ciclo Arquitectura Hardwired Unidade de controlo Load / INC PC Memória de dados e programa IR Descodificador de Endereços Leitura/Escrita Circuito Sequencial Palavra de Controlo Bits de estado (flags) Datapath 9 Unidade de controlo multi-ciclo Arquitectura Multiprogramada Unidade de controlo Load / INC Memória de dados e programa PC Descodificador de Endereços IR Opcode? Micro-endereço MUX Controlo de Load / INC micro-saltos S Micro-PC Leitura/Escrita Memória de controlo (ROM) Palavra de Controlo Bits de estado (flags) Datapath 10 Unidade de controlo multi-ciclo Considerações UC mais complexa, mas mais flexível: Não exige separação entre memórias para programa e dados No caso da unidade microprogramada, é fácil substituir ou acrescentar novas instruções ao conjunto de instruções Permite uma execução mais eficiente de instruções mais complicadas Que corresponderiam a várias instruções uni-ciclo, cada uma exigindo um acesso à memória para efectuar o fetch Modelo mais próximo dos processadores actuais 11 Unidade de controlo do MAC-1 Arquitectura (simplificada) Mux INC MPC ROM 256 x 32 N Z Lógica de micro saltos C S N A D F H L L R W L R D A D R E C R R R B R A A D D R 12 Unidade de controlo do MAC-1 Estrutura das palavras de controlo 31 S A 0 C N D F H L L R W L D A D R E R R C B A ADDR CND – controlo de saltos: 00 – sem salto 01 – salta se N = 1 (resultado negativo) 10 – salta se Z = 1 (resultado nulo) 11 – salto incondicional ADDR – endereço de salto no micro-programa (8 bits) Restantes sinais – aplicam-se ao datapath 13 Datapath do processador MAC-1 RC RB RA 4 4 4 LE (0) PC 31 (1) AC S A (2) SP (3) IR (4) TMP (5) -1 (6) +1 (7) Amask (8) SMask 0 C N D F H L L R W L D A D R E R R C B A ADDR Estrutura da palavra de controlo LAR BUS B MAR BUS A (...) MDR Endereços Dados 0 Mux 1 SA LDR N Z F H 2 WR RD ALU 2 Nota: Deslocamento Amask tem o valor ‘0FFF’ BUS C SMask tem o valor ’00FF’ 14 Unidade de controlo do MAC-1 Exemplo: Vamos supor que se pretende executar a instrução LODD x O efeito da instrução é AC ← M[x] e o formato é: 0 0 0 Opcode (4 bits) 0 x x x x x x x x x x x x Posição de memória a ler (12 bits) Após o fetch, a instrução encontra-se carregada no registo de instruções (IR). A execução começa a partir desse ponto 15 Unidade de controlo do MAC-1 Exemplo (cont.) Em primeiro lugar, há que carregar o endereço x no registo MAR, mas tal não se consegue fazer num único ciclo TMP ← IR & Amask # Amask tem o valor ‘0FFF’ MAR ← TMP Depois do endereço a aceder estar no registo MAR, lê-se a memória e o resultado virá em MDR. Para finalizar transfere-se de MDR para AC MDR ← M[MAR] AC ← MDR 16 Unidade de controlo do MAC-1 Exemplo (fim) Em suma, a seguinte sequência de micro-instruções: TMP ← IR & Amask # obter o endereço x MAR ← TMP # colocar no registo de endereços MDR ← M[MAR] # ler o conteúdo do endereço AC ← MDR # transferir para o acumulador 4 palavras de controlo, o que implica 4 ciclos para executar a instrução 17