Sequenciamento dinâmico João Canas Ferreira Outubro de 2004 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3 a. ed., MKP c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 1/20
Assuntos 1 Sequenciamento dinâmico 2 Utilização de scoreboard 3 Algoritmo de Tomasulo c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 2/20
Sequenciamento dinâmico O conceito de sequenciamento dinâmico Sequenciamento dinâmico: rearranjo da execução de operações efectuado pelo processador com o objectivo de reduzir os protelamentos, preservando o fluxo de dados. Vantagens: 1. Possibilita o tratamento de casos em que as dependências não são conhecidas em tempo de compilação; Importante para obter bons desempenhos sem comprometer a compatibilidade binária. 2. Simplifica o compilador; 3. Permite que código compilado para uma arquitectura de pipeline execute bem noutra; 4. Serve de base a especulação de hardware, uma técnica com vantagens apreciáveis para o desempenho. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 3/20
Sequenciamento dinâmico Redução do impacto de conflitos Situação: É detectado um conflito entre a instrução descodificada (andar ID) e uma instrução em execução. Solução 1: Esperar que a instrução em execução ultrapasse a fase que está na origem do conflito (protelar). Entretanto, todas as instruções posteriores à instrução em conflito são suspensas e nenhuma instrução adicional é processada. Solução2: A instrução em conflito é suspensa (até que o conflito desapareça porque a instrução anterior passou um certo estágio) mas instruções posteriores continuam a respectiva execução (caso elas próprias não tenham conflitos) e novas instruções podem ser processadas. A solução 2 (sequenciamento dinâmico) é potencialmente mais vantajosa, mas implica a execução de instruções fora de ordem bem como a terminação fora de ordem. conflitos WAR e WAW; dificuldade na coordenação com excepções (imprecisão). c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 4/20
Sequenciamento dinâmico Extensão de pipeline para sequenciamento dinâmico Dividir o andar ID em dois: 1. Emissão Descodificação da instrução e verificação de conflitos estruturais. 2. Leitura de operandos (RO) Esperar até que não haja conflitos de dados e, então, ler os operandos. IF coloca a instrução num registo ou numa fila de instruções pendentes; as instruções são emitidas a partir daí. Quando uma instrução passa de RO para EX começa a execução propriamente dita. Sequenciamento dinâmico permite ter múltiplas instruções em execução e requer unidades pipelined, múltiplas unidades funcionais, ou ambas. As instruções são emitidas em ordem, mas podem entrar em execução fora de ordem. Abordagens: tabela de resultados (scoreboard); algoritmo de Tomasulo. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 5/20
Utilização de scoreboard Unidade scoreboard A utilização de scoreboard foi introduzida com o CDC 6600 em 1964 (16 unidades funcionais). Princípio de funcionamento: Quando a instrução a executar é suspensa ( protelada ), as instruções seguintes são emitidas e executadas se não dependerem da instrução suspensa nem de qualquer instrução activa. Todas as instruções passam pelo scoreboard, onde é mantido um registo das dependências. Este passo corresponde à emissão (e substitui uma parte do andar ID). Quando uma instrução é suspensa, o scoreboard monitora todas as modificações e decide quando é que a instrução pode começar a executar. O scoreboard também controla quando são efectuadas as escritas nos registos. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 6/20
Utilização de scoreboard Exemplo: MIPS com scoreboard c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 7/20
Utilização de scoreboard Etapas do processamento de instruções com scoreboard Substituem ID, EX e WB; não estamos a considerar acessos a memória. 1. Emissão Se a unidade funcional estiver livre e mais nenhuma instrução tiver o mesmo registo de destino, a instrução é emitida. I.e., a instrução é protelada se existir um conflito estrutural ou um conflito WAW; não são emitidas mais instruções até o conflito desaparecer. 2. Leitura de operandos O scoreboard monitora a disponibilidade de registos-fonte: um registo está disponível se nenhuma instrução emitida anteriormente o vai alterar. Quando os operandos estão disponíveis, a unidade funcional é autorizada a ler os operandos. Esta etapa elimina os conflitos RAW, mas as instruções podem passar à próxima fora de ordem. 3. Execução A unidade funcional inicia o processamento dos operandos e notifica o scoreboard quando termina. 4. Escrita do resultado O scoreboard autoriza a escrita de resultados se não existir um conflito WAR; caso contrário, a escrita é suspensa até o conflito desaparecer. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 8/20
Utilização de scoreboard Exemplo: Operação de scoreboard Status da instrução Instrução Emissão leitura Execução terminada Escrita L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2 Status das unidades funcionais Nome Busy Op Fi Fj Fk Qj Qk Rj Rk Int Sim Load F2 R3 Não Mult1 Sim Mult F0 F2 F4 Int Não Sim Mult2 Não Add Sim Sub F8 F6 F2 Int Sim Não Div Sim Div F10 F0 F6 Mult1 Não Sim Status dos registos destino F0 F2 F4 F6 F8 F10 F12... F30 FU Mult1 Int Add Div c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 9/20
Utilização de scoreboard Exemplo: Antes de DIV.D escrever o resultado Status da instrução Instrução Emissão leitura Execução terminada Escrita L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2 Status das unidades funcionais Nome Busy Op Fi Fj Fk Qj Qk Rj Rk Int Não Mult1 Não Mult2 Não Add Não Div Sim Div F10 F0 F6 Não Não FU Status dos registos destino F0 F2 F4 F6 F8 F10 F12... F30 Div c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 10/20
Algoritmo de Tomasulo Aspectos básicos do algoritmo de Tomasulo 1. Primeira utilização: unidade VF do IBM 360/91. 2. Existem muitas variações em uso actualmente. 3. Combina a monitorização da disponibilidade de operandos (evitar conflitos raw) com register renaming (minimizar conflitos waw e war). 4. Register renaming modifica o nome dos registos-destino de forma a que as escritas fora de ordem não afectem instruções que dependem de um valor anterior do operando. 5. Esta abordagem usa estações de reserva para implementar register renaming. Uma estação de reserva obtêm e guarda um operando mal este esteja disponível; referências a registos são substituídas por referências a estações (instruções pendentes designam qual a estação que fornece os dados de entrada); quando ocorrem escritas sobrepostas, apenas a última é efectuada. 6. Se existirem mais estações que registos é possível eliminar conflitos que não podem ser eliminados pelo compilador. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 11/20
Algoritmo de Tomasulo Exemplo: eliminar dependências com estações de reserva DIV.D F0,F2,F4 DIV.D F0,F2,F4 ADD.D F6, F0,F8 ADD.D S,F0,F8 S.D F6,0(R1) A.D S,0(R1) SUB.D F8,F10,F14 SUB.D T,F10,F14 MUL.D F6,F10, F8 MUL.D F6,F10,T (Supondo a existência de dois registos auxiliares S e T.) Antidependência entre ADD.D e SUB.D via F8 conflito war. Dependência de saída entre ADD.D e MUL.D via F6 conflito waw. A utilização de registos auxiliares elimina as dependências de nomes. No caso actual, os registos são os buffers das estações de reserva. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 12/20
Algoritmo de Tomasulo MIPS adaptado para o algoritmo de Tomasulo c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 13/20
Algoritmo de Tomasulo Informação distribuída pelo processador Estação de reserva: Op operação a efectuar; Qj, Qk ER que produzirão os operandos (0 operando disponível ou desnecessário); Vj, Vk Valores dos operandos; para leituras de memória Vk contém o deslocamento; A regista informação para acessos a memória: valor imediato/endereço efectivo; Busy indica se ER (ou unidade funcional) está ocupada. Cada registo contém indicação da ER que contém a operação cujo resultado deverá ser aí guardado (Qi). c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 14/20
Algoritmo de Tomasulo Etapas do algoritmo de Tomasulo 1. Emissão Obter a próxima instrução de fila de instruções.se existir uma ER apropriada vazia, emitir instrução para a ER com os operandos (se existirem). Se não existirem ER vazias, a instrução é suspensa. Se os operandos não estão nos registos, referenciar as unidades que os produzem (register renaming). 2. Execução Se algum dos operandos ainda não está disponível, monitorar o barramento comum até que apareça. Quando todos os operandos estão disponíveis, a operação pode ser efectuada. (Assim evitam-se os conflitos RAW). Múltiplas instruções podem ter a possibilidade de entrar em execução simultâneamente, o que complica as operações de acesso a memória que deve ser feito em dois tempos. 3. Escrita Quando o resultado está disponível, é enviado via CDB para o registo e para todas as ER (incluindo o store buffer). c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 15/20
Algoritmo de Tomasulo Tratamento de acessos a memória Os acessos a memória processam-se em dois passos: 1. Calcular o endereço efectivo quando o registo de base está disponível e colocá-lo no buffer correspondente (load/store). 2. Executar load quando a unidade de memória estiver disponível; Store espera pelo valor a guardar (já no store buffer) antes de aceder a memória. Quando load e store acedem à mesma posição, então load precede store: trocá-los provoca WAR; store precede load: trocá-los provoca RAW. Trocar duas operações de store provoca WAW. Para detectar estas situações, é necessário conhecer os endereços de qualquer acesso a memória precedente. Condição suficiente: calcular os endereços efectivos por ordem e comparar (em paralelo) com os endereços nos buffers. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 16/20
Algoritmo de Tomasulo ATom: Detalhes de funcionamento c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 17/20
Algoritmo de Tomasulo ATom: Processamento de ciclos Exemplo: Multiplicar elementos de um vector por um escalar (F2). Loop: L.D F0,0(R1) MUL.D F4,F0, S.D F4,0(R1) DADDUI R1,R1,-8 BNE R1,R2,Loop Se assumirmos que os saltos são previstos como tomados, a utilização de ER permite a execução concorrente de mais que uma iteração (duas, neste caso, conforme indicado na próxima folha). Assumindo que as multiplicações podem ser executadas em 4 ciclos (e os acessos a memória demoram 2), o sistema atinge um CPI próximo de 1. (Nota: A unidade inteira não é mostrada na tabela.) c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 18/20
Algoritmo de Tomasulo ATom: Processamento de ciclos (cont.) Status da instrução Instrução Iteração Emissão Execução Escrita L.D F0,0(R1) 1 MUL.D F4,F0,F2 1 S.D F0,0(R1) 1 L.D F0,0(R1) 2 MUL.D F4,F0,F2 2 S.D F0,0(R1) 2 Estações de reservas Nome Busy Op Vj Vk Qj Qk A Load1 S Load Regs[R1]+0 Load2 S Load Regs[R1]-8 Add1 N Add2 N Add3 N Mult1 S Mul Regs[F2] Load1 Mult2 S Mul Regs[F2] Load2 Store1 S Store Regs[R1] Mult1 Store2 S Store Regs[R1]-8 Mult2 Status dos registos F0 F2 F4 F6 F8 F10 F12... F30 Qi Load2 Mult2 Div c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 19/20
Algoritmo de Tomasulo Algoritmo de Tomasulo: Sumário Sequenciamento dinâmico permite obter muito bons desempenhos (desde que os saltos sejam bem previstos). Algoritmo de Tomasulo é particularmente favorável para arquitecturas: para as quais é difícil sequenciar instruções estaticamente; têm poucos registos; em que se pretende obter elevado desempenho sem compilação específica. Desvantagens do algoritmo de Tomasulo: complexidade: cada ER tem uma memória associativa e controlo sofisticado ; CDB limita o desempenho: múltiplos CDBs podem ser usados, mas complicam ainda mais a implementação. c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento dinâmico 20/20