Prévia do material em texto
Tópico 9: Microarquitetura (Processador com Pipeline) Prof. Jhonattan Cordoba Ramirez Escola de Engenharia Universidade Federal de Minas Gerais (UFMG) ELT123 - Arquitetura e Organização de Computadores Introdução • Subdivisão do processador de single-cycle em cinco estágios de pipeline. • A latência de cada instrução fica inalterada, mas a eficiência é melhorada por um fator de cinco. • Paralelismo temporal. • Buscar: Procura as instruções que serão executadas. • Decodificar: Os operandos do banco de registro serão lidos e decodificados com a finalidade de disponibilizar ao sistema os sinais de controle. • Execução: Executa calculo feito na ALU. • Memoria: Lê e escreve na memoria de dados. • WriteBack: Resultado obtido é escrito no banco de registro Distribuição temporal Cada instrução é executada cada 950 ps Latência = 950 ps Total 1.05 Bi de instruções/seg Cada estágio possui a duração do mais comprido Comprimento total de cada estágio: 250 ps “MAIS LENTO” Latência da instrução é de 5 x 250 ps = 1250 ps Taxa de transferência é 1 instrução cada 250 ps ~ 4 Bi Instruções/seg Distribuição temporal Operação pipeline (IM) Memoria de instrução (RF) Banco de registro Operação executada na ALU (DM) Memoria de dados WriteBack no banco de registros Estágio RF é escrito na primeira parte do ciclo e lido na segunda O banco de registro é escrito por todas as instruções exceto sw Possíveis problemas? Operação pipeline Conflitos Hazard: Resultados de uma instrução são requeridos por uma instrução posterior. Exemplo: Trocar $s2 pelo $t2 na instrução add O registrador $s2 deve ser escrito previamente na instrução lw. Método de solução: • Forwarding: Encaminhamento de dados • Stalls ou Flushes : Delay de execução Caminho de dados pipeline O caminho de dados pipeline, é formado dividindo o caminho de dados single-cycle em cinco estágios separados É usado os sufixos F, D, E, M ou W para indicar cada fase. A leitura do banco de registros é feita na fase de decodificação, mas a escrita é feita na fase de WriteBack. O banco de registros no pipeline, escreve no flanco descendente do clock. Controle pipeline Hazards • Conflitos Hazard: Resultados de uma instrução são requeridos por uma instrução posterior. • Tipos de Hazard: • Hazard de dados: Leitura de um registro que ainda não foi escrito. • Hazard de controle: Decisão de qual é a próxima instrução, não foi tomada no momento em que a busca é realizada. • Método de solução: • Forwarding: Encaminhamento de dados • Stalls ou Flushes: Delay de execução Hazards Dado errado Dado errado Dado correto Hazard RAW (Ready After Writer) Hazards (Solução: Encaminhamento) if rsE ! = 0 and rsE == WriteRegM and RegWriteM then ForwardAE = 10 elseif rsE ! = 0 and rsE == WriteRegW and RegWriteW then ForwardAE = 01 else ForwardAE = 01 SrcA – Verifica rs SrcB – Verifica rt Hazards (Solução: Encaminhamento) Hazards (Solução: Delay de execução) Nesse caso, o ciclo específico fica suspenso pela quantidade de ciclos que seja necessário, adicionalmente, as instruções subsequentes são retidas devido que o elemento à seguir está ocupado. A instrução lw, não termina a leitura de dados até o final do estágio de memoria. Hazards (Solução: Delay de execução) • Suspenção de um estado • Desativação dos registros pipeline • Nesse caso, são zerados os sinais no estado de execução. Hazards (Solução: Delay de execução) lwstall = rsD == rtE or rtD == rtE and MemtoRegE stallF = stallD = FlushE = lwstall Hazards de controle Na implementação de uma instrução beq apresenta um hazard de controle: O processador com pipeline, não sabe que instrução obter a seguir, devido que a decisão do branch ainda não foi tomada no momento que o estado de buscar da próxima instrução é realizado. BranchM ZerosM PCSrcM • Stall pode ser uma alternativa de solução? SOLUÇÃO: Começar a execução do branch baseado em uma previsão. • Previsão errada: Processador descarta as instruções executadas. • Previsão correta: Sequencia de codigos, continua execução, seja positive ou negative a previsão • Previsão feita: Branch não será realizado. • Resultado após execução do beq: Branch deve ser realizado sim. • Sequência de execução continua. • Próximas três instruções após beq serão descartadas e o registro do pipeline limpo. Hazards de controle BRANCH MISPREDICTION PENALTY Hazards de controle Hazards de controle • Ciclos de instrução desperdiçados. • Como reduzir os Branch Misprediction Penalties? • Incluir um comparador de igualdade para RD1 e RD2 no estágio de DECODIFICAÇÃO. Hazards de controle Introduz um nodo hazard de dados (RAW) Hazards de controle O benchmark SPECint2000 considerado no Exemplo Multicycle é composto de aproximadamente 25% cargas, 10% armazenamentos, 11% branch, 2% jumps, e 52% instruções do tipo-R. Suponha que 40% das cargas são imediatamente seguidas por uma instrução que usa o resultado, exigindo um stall, e que um quarto dos branchs são erradamente previstos, exigindo um flush. Suponha que os jumps sempre descartam as instruções subsequentes. Ignorar outros harzards. Calcular o CPI médio do processador com pipeline. • Interação com a memoria: CPI = 0,6 × 1 + 0,4 × 2 = 1,4 • Implementação de branchs: CPI = 0,75 × 1 + 0,25 × 2 = 1,25 • Jump sempre tem uma CPI = 2. 𝐂𝐂𝐂𝐂𝐈𝐈𝐦𝐦𝐦𝐦𝐦𝐦𝐦𝐦𝐦𝐦 = 𝟎𝟎,𝟐𝟐𝟐𝟐 × 𝟏𝟏,𝟒𝟒𝟎𝟎 + 𝟎𝟎,𝟏𝟏𝟎𝟎 × 𝟏𝟏,𝟎𝟎𝟎𝟎 + 𝟎𝟎,𝟏𝟏𝟏𝟏 × 𝟏𝟏,𝟐𝟐𝟐𝟐 + 𝟎𝟎,𝟎𝟎𝟐𝟐 × 𝟐𝟐,𝟎𝟎𝟎𝟎 + 𝟎𝟎,𝟐𝟐𝟐𝟐 × 𝟏𝟏,𝟎𝟎𝟎𝟎 = 𝟏𝟏,𝟏𝟏𝟐𝟐 Exemplo Exemplo Exemplo 𝑡𝑡𝑐𝑐 = 𝑚𝑚𝑚𝑚𝑚𝑚 𝑡𝑡𝑝𝑝𝑐𝑐𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚 + 𝑡𝑡𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑝𝑝 2(𝑡𝑡𝑅𝑅𝑅𝑅𝑅𝑅𝑚𝑚𝑅𝑅𝑅𝑅 + 𝑡𝑡𝑚𝑚𝑠𝑠𝑚𝑚 + 𝑡𝑡𝑚𝑚𝑝𝑝 + 𝑡𝑡𝐴𝐴𝐴𝐴𝐴𝐴 + 𝑡𝑡𝑚𝑚𝑠𝑠𝑚𝑚 + 𝑡𝑡𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑝𝑝) 𝑡𝑡𝑝𝑝𝑐𝑐𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑠𝑠𝑚𝑚 + 𝑡𝑡𝑚𝑚𝑠𝑠𝑚𝑚 + 𝑡𝑡𝐴𝐴𝐿𝐿𝐿𝐿 + 𝑡𝑡𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑝𝑝 𝑡𝑡𝑝𝑝𝑐𝑐𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑅𝑅𝑚𝑚𝑠𝑠𝑚𝑚 + 𝑡𝑡𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑝𝑝 2(𝑡𝑡𝑝𝑝𝑐𝑐𝑝𝑝 + 𝑡𝑡𝑚𝑚𝑠𝑠𝑚𝑚 + 𝑡𝑡𝑅𝑅𝑅𝑅𝑚𝑚𝑅𝑅𝑚𝑚𝑠𝑠𝑚𝑚) Buscar Decodificação Execução Memória WriteBack 𝑡𝑡𝑐𝑐 = 𝑚𝑚𝑚𝑚𝑚𝑚 30 + 250 + 20 2(150 + 25 + 40 + 15 + 25 + 20) 30 + 25 + 25 + 200 + 20 30 + 220 + 20 2(30 + 25 + 100) = 550 𝑝𝑝𝑝𝑝 Texec = 100 × 109 𝑖𝑖𝑖𝑖𝑝𝑝𝑡𝑡𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑝𝑝 1,15 𝑐𝑐𝑖𝑖𝑐𝑐𝑐𝑐𝑐𝑐 𝑖𝑖𝑖𝑖𝑝𝑝𝑡𝑡𝑖𝑖𝑖𝑖𝑖𝑖𝑐𝑐 550 × 10−12𝑝𝑝𝑖𝑖𝑠𝑠 Tempo de execução = 63,3 seg Single-cycle = 92,5 seg Multicycle = 133,9 seg Exercício 1. MIPS single-cycle e controle: a. Desenhe por completo uma microarquitetura single-cycle (via de dados e bloco de controle) capaz de executar somente instruções add e bne da arquitetura MIPS. (Observações: 1. Sua resposta deve apresentar somente os componentes imprescindiveis à execução das instruções propostas. 2. Todos os componentes deverão estar completamente identificados, de forma que eu possa reconhecer se o componente é combinacional ou sequencial, assim com suas entradas, saídas e quantidade de bits dos sinais indicados). b. Monte uma tabela que mostre o comportamento da unidade de controle. Essa tabela deverá conter as instruções add e bne, bem como todos os sinais de controle necesários para executá-las. Preencha os campos da tabela com os valores 0, 1 ou X. Considere que o código da adição para ALU seja 00 e da subtração seja 11. Exercício 2. MIPS multicycle e controle: Dada a microarquitetura multicycle da Figura 1 e o diagrama de maquina de estados finitos da unidade de controle da mesma microarquitetura da Figura 2. Pede-se: a. Marcar com uma X o(s) componente(s) da Figura 1 que precisará(ão) ser modificado(s) para que esta microarquitetura execute a instrução slt (set less than). b. Redesenhe o(s) componente(s) desta microarquitetura de maneira que ele(s) possa(m) executar de forma correta o slt e todas as instruções que já executava antes. c. Realize as modificações e/ou inclusões necessárias sobre a Figura 2, demaneira que o slt possa ser executado de forma correta por essa microarquitetura. Exercício Exercício Exercício Exercício Tópico 9: Microarquitetura (Processador com Pipeline) Slide Number 2 Slide Number 3 Slide Number 4 Slide Number 5 Slide Number 6 Slide Number 7 Slide Number 8 Slide Number 9 Slide Number 10 Slide Number 11 Slide Number 12 Slide Number 13 Slide Number 14 Slide Number 15 Slide Number 16 Slide Number 17 Slide Number 18 Slide Number 19 Slide Number 20 Slide Number 21 Slide Number 22 Slide Number 23 Slide Number 24 Slide Number 25 Slide Number 26 Slide Number 27 Slide Number 28 Slide Number 29 Slide Number 30