Arquiteturas de Computadores Implementação de MIPS multiciclo (cont.) Fontes dos slides: Patterson & Hennessy book website (copyright Morgan Kaufmann) e Dr. Sumanta Guha
CPI em uma CPU multiciclo Assuma O projeto de controle mostrado Uma mistura de instruções com 22% loads, 11% stores, 49% tipo R, 16% desvios, e 2% saltos Qual a CPI assumindo que cada passo necessita de um ciclo de relógio? Solução: Número de ciclos de relógio para cada instrução: loads 5, stores 4, instruções do tipo R 4, desvios 3, saltos 3 CPI = número de ciclos de relógio / número de instruções = (número de instruções class i CPI class i ) / número de instruções = (número de instruções class i / número de instruções) CPI class I = 0.22 5 + 0.11 4 + 0.49 4 + 0.16 3 + 0.02 3 = 4.04
Implementação do controle FSM Control logic PCWrite PCWriteCond IorD MemRead MemWrite IRWrite MemtoReg PCSource Outputs ALUOp ALUSrcB ALUSrcA RegWrite RegDst Inputs NS3 NS2 NS1 NS0 Op5 Op4 Op3 Op2 Op1 Op0 S3 S2 S1 S0 Instruction register opcode field State register 4 bits para 10 estados Entradas para o bloco de lógica combinacional são o número do estado corrente e os bits do opcode; saídas são o número do próximo estado e sinais de controle para garantir a ida para o próximo estado
Op5 Op4 Op3 Op2 Op1 Op0 S3 S2 S1 S0 PCWrite PCWriteCond IorD MemRead MemWrite IRWrite MemtoReg PCSource1 PCSource0 ALUOp1 ALUOp0 ALUSrcB1 ALUSrcB0 ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0 Parte de cima é o plano do AND que calcula todos os produtos. Os produtos são carregados Para a parte de baixo do plano OR pelas linhas verticais. A soma dos termos para cada saída é dada pela linha horizontal correspondente E.g., IorD = S0.S1.S2.S3 + S0.S1.S2.S3
Implementação por ROM ROM (Read Only Memory) Os valores das posições de memória são fixados antes do tempo Uma ROM pode ser usada para implementar uma tabela verdade Se temos m-bits para endereços, podemos endereçar 2 m entradas na ROM As saídas são os bits do conteúdo o endereços aponta address output m n ROM m = 3 n = 4 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1
Controle FSM: ROM vs. PLA Melhore a utilização da ROM: quebre a tabela em 2 partes 4 bits de estado dão 16 sinais de saída 2 4 x 16 bits de ROM Os 10 bits de entrada geram 4 bits do próximo estado 2 10 x 4 bits de ROM Total 4.3K bits de ROM PLA é muito menor Pode compartilhar termos do produto Somente necessita de entradas que forneçam uma saída ativa Podem usar don t cares Tamanho PLA = (#inputs #product-terms) + (#outputs #productterms) PLA = (10x17)+(20x17) = 460 células PLA Células PLA usualmente do tamanho da célula ROM
Microprogramação Microprogramação é um método para especificar controle FSM que lembra uma linguagem de programação textual ao invés de gráfica É apropriada quando a FSM se torna muito grande, e.g., se o conjunto de instruções é grande ou/e o número de ciclos por instrução é grande Nestes casos a representação gráfica se torna difícil porque podem ter milhares de estados e ainda mais arcos os unindo um microprograma é uma especificação: implementação é em ROM ou PLA Um microprograma é uma sequência de microinstruções cada microinstrução possui oito campos (label + 7 funcionais) Label: usado para controlar o sequenciamento do microcódigo Controle da ALU: especifica operação a ser realizada pela ALU SRC1: especifica fonte do primeiro operando da ALU SRC2: especifica fonte do segundo operando da ALU Controle de registrador: especifica leitura/escrita de registrador Memória: especifica leitura/escrita para memória Controle PCWrite : especifica escrita de PC Sequenciamento: especifica escolha da próxima microinstrução
Microprogramação O valor do campo Sequencing determina a ordem de execução do microprograma: valor Seq : passa o controle para a próxima instrução sequencial valor Fetch : desvia para a primeira microinstrução para iniciar a próxima instrução MIPS, i.e., a primeira microinstrução do microprograma valor Dispatch i : desvia para uma microinstrução baseado na entrada de controle e tabela de despacho : A tabela de despacho é indexada pela entrada de controle e suas entradas são labels de microinstrução. Podem existir várias tabelas, sendo que o índice i indica a tabela a ser usada
Controle de microprograma O microprograma abaixo corresponde à FSM ostrada anteriormente graficamente: Label ALU control SRC1 SRC2 Register control Memory PCWrite control Sequencing Fetch Add PC 4 Read PC ALU Seq Add PC Extshft Read Dispatch 1 Mem1 Add A Extend Dispatch 2 LW2 Read ALU Seq Write MDR Fetch SW2 Write ALU Fetch Rformat1 Func code A B Seq Write ALU Fetch BEQ1 Subt A B ALUOut-cond Fetch JUMP1 Jump address Fetch Microprograma contendo 10 microinstruções Dispatch ROM 1 Op Opcode name Value 000000 R-format Rformat1 000010 jmp JUMP1 000100 beq BEQ1 100011 lw Mem1 101011 sw Mem1 Tablea de Despacho 1 Dispatch ROM 2 Op Opcode name Value 100011 lw LW2 101011 sw SW2 Tabela de Despacho 2
Microcódigo:Prós e contras Vantagens de especificação Fácil de projetar e escrever Tipicamente o fabricante projeta arquitetura e microcódigo em paralelo Vantagens de implementação Fácil de modificar porque os valores estão na memória (e.g., off-chip ROM) Podem emular outras arquiteturas Podem usar registradores internos Desvantagens de implementação Atualmente controle é implementado dentro do chip então não existe a vantagem de estar for a do chip ROM não é mais rápida que caches Existe pouca necessidade de troca de microcódigo porque computadores hoje em dia são mais de uso geral do que projetados para aplicações específicas
Resumo Caminhos de dados multiciclos oferecem duas vantagens sabre monociclo Unidades funcionais podem ser reutilizadas em uma única instrução se forem acessadas em ciclos diferentes reduz a necessidade de replicar lógica cara Instruções com caminhos de execução menores podem completar mais rapidamente consumindo menos ciclos de relógio Computadores modernos utilizam o conceito de multiciclo para atingir maiores vazões de instruções: pipelining