Your SlideShare is downloading. ×
  • Like
Ilp.handouts
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
75
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Execução concorrente de instruçõesAspectos avançadosJoão Canas FerreiraOutubro de 2010João Canas Ferreira (FEUP) ILP Outubro de 2010 1 / 58Assuntos1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 2 / 58
  • 2. Previsão dinâmica de saltos1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 3 / 58Notas:3
  • 3. Previsão dinâmica de saltosPrevisão dinâmica de saltos: o conceito« A previsão (ou predição) de saltos condicionais é vital para processadoresde elevado desempenho, porque evita que as dependências de controlo setornem num factor limitativo.« Esquema mais simples: tabela de previsão do resultado do teste“branch-prediction buffer”/”branch history table”.« A tabela é uma memória indexada pelo bits menos significativos doendereço da instrução condicional.« Cada posição tem 1 bit que indica se o salto foi recentemente tomado ounão.Problema de desempenho: um ciclo efectuado 10 vezes tem uma taxa deacerto de 80% (duas previsões erradas), embora fosse de esperar pelo menos90%. (Porquê?)« Solução: usar mais bits (2!) — um contador com “saturação”.João Canas Ferreira (FEUP) ILP Outubro de 2010 4 / 58Notas:4.1. Este esquema não tem etiquetas (como o esquema do acetato 10), e apenas reduzo tempo de salto, se o tempo necessário para calcular a condição for maior que otempo de cálculo do endereço de destino.4.2. Notar que a previsão pode ser efectuada com base na informação associada a umsalto diferente daquele cujo desfecho se pretende calcular (mas que está colocadonum endereço de memória que tem os os mesmos bits menos significativos). Talpode reduzir a efectividade do mecanismo de previsão, mas não afecta a correcçãodo sistema (já que a predição deve ser sempre confirmada posteriormente).4
  • 4. Previsão dinâmica de saltosEsquema local de previsão de 2 bitsFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 5 / 58Notas:5.1. Os dois bits associados a cada posição servem para codificar quatro estadospossíveis. O esquema pode ser generalizado para n bits, mas estudos empíricosindicam que a diminuta melhoria obtida não justifica a sua utilização. Por isso, agrande maioria dos sistemas usa tabelas de 2 bits por posição.5.2. A utilização de 2 bits tem uma complicação: a tabela é actualizada maisfrequentemente que no caso de uma tabela de 1 bit. Para tabelas de 1 bit porposição, a tabela é actualizada apenas quando ocorre uma falha de previsão. Nocaso das tabelas de 2 bits, a tabela deve ser actualizada a todos os acessos, i.e.,a tabela é lida e “escrita” em todos os ciclos.5
  • 5. Previsão dinâmica de saltosQualidade de previsão: medidas empíricasFonte: [CAQA3]Benchmark SPEC89, IBM Power, 2 bits por posição, tabela de 4096 posições.João Canas Ferreira (FEUP) ILP Outubro de 2010 6 / 58Notas:6.1. A taxa de falhas dos programas de vírgula flutuante é significativamente inferior àdos restantes programas.6.2. Uma tabela de 4096 posições é considerada “pequena”.6.3. Para determinar o efeito do tratamento de saltos para o desempenho global nãobasta conhecer o desempenho do previsor; também é necessário saber a taxa deocorrência das instruções de salto. No caso dos resultados apresentados natabela, são precisamente os programas em que a previsão mais falha aqueles quetêm um maior número de saltos.6
  • 6. Previsão dinâmica de saltosQualidade de previsão: tabela infinitaFonte: [CAQA3]Benchmark SPEC89, 2 bits por posição, tabela de 4096 posições vs. tabela infinita.João Canas Ferreira (FEUP) ILP Outubro de 2010 7 / 58Notas:7.1. Os dados da tabela suportam a conclusão de que uma tabela com 4K posições temum desempenho muito próximo daquele que seria obtido por uma tabela com umnúmero infinito de posições. Logo, não é interessante aumentar o número deposições.7.2. Como aumentar o número de bits por posição também não traz benefíciossignificativos, é necessário recorrer a previsores com uma estrutura maissofisticada.7
  • 7. Previsão dinâmica de saltosPrevisão com correlação« Para melhorar a qualidade de previsão é necessário considerar ocomportamento recente de outros saltos condicionais (previsão comcorrelação ou de dois níveis).if (aa==2)aa=0;if (bb==2)bb=0;if (aa!=bb) {DSUBUI R3,R1,#2BNEZ R3,L1 ;salto b1 (aa!=2)DADD R1,R0,R0 ;aa=0L1: DSUBUI R3,R2,#2BNEZ R3,L2 ;salto b2 (bb!=2)DADD R2,R0,R0 ;bb=0L2: DSUBU R3,R1,R2 ;R3=aa-bbBEQZ R3,L3 ;salto b3 (aa==bb)« Se os saltos b1 e b2 não forem tomados, então b3 é certamente tomado, oque não pode ser previsto considerando apenas um único salto.João Canas Ferreira (FEUP) ILP Outubro de 2010 8 / 58Notas:8.1. O exemplo mostra que, em geral, o desfecho de um salto condicional pode serprevisto melhor, se o desfecho dos saltos imediatamente precedentes for tido emconta.8.2. Saltos “precedentes” são os executados imediatamente antes do salto que sepretende escrever, não aqueles ques estão colocados imediatamente antes notexto do programa.8.3. O código do exemplo é retirado do program eqntott, um dos componentes dobenchmark SPEC89.8
  • 8. Previsão dinâmica de saltosPrevisão com correlação: um exemploBNEZ R1,L1 ;salto b1 (d!=0)DADDIU R1,R0,#1 ; d==0, d=1L1: DADDIU R3,R1,#-1BNEZ R3,L2 ;salto b2 (D!=1). . .L2:if (d==0)d=1;if (d==1)d=? prev. b1 acção b1 nova prev. b1 prev. b2 acção b2 nova prev. b22 NT T T NT T T0 T NT NT T NT NT2 NT T T NT T T0 T NT NT T NT NTPrevisor (0,1)d=? prev. b1 acção b1 nova prev. b1 pred. b2 acção b2 nova prev. b22 NT/NT T T/NT NT/NT T NT/T0 T/NT NT T/NT NT/T NT NT/T2 T/NT T T/NT NT/T T NT/T0 T/NT NT T/NT NT/T NT NT/TX/Y X: previsão se último salto NT; Y: previsão se último salto T. Previsor (1,1)João Canas Ferreira (FEUP) ILP Outubro de 2010 9 / 58Notas:9.1. Nestes exemplos, assume-se que todos os bits de previsto estão inicializados a NT(not taken).9.2. Na tabela inferior, a notação P1/P2 indica que P1 é a previsão feita se o saltoprecedente não foi tomado, enquanto P2 é previsão feita se o salto precedente foitomado.9.3. Em geral, um previsor (m, n) usa o comportamente dos m saltos precedentes paraescolher um de 2mprevisores, cada um dos quais é um previsor de n bits.9.4. Neste contexto, diz-se que os m saltos precedentes constituem a história global,enquanto cada um dos previsores individuais regista a história local, i.e., ocomportamento anterior do salto a previsão.9
  • 9. Previsão dinâmica de saltosTabela com informação global e localImplementação de um buffer de previsão (2,2).Fonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 10 / 58Notas:10.1. No caso do previsor (2,2) ilustrado na figura, história global é guardada numregisto de deslocamento de 2 bits, que permite seleccionar uma de quatro tabelas.O endereço da instrução de salto é usado para escolher a posição da tabela.10.2. O número de bits de um previsor (m, n) é dado por2m× n × nº de posições da tabelaComo a utilização de k bits do endereço permite seleccionar uma de 2kposições,o número de bits também é dado por2m× n × 2k.10
  • 10. Previsão dinâmica de saltosPrevisão com correlação: comparação empíricaFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 11 / 58Notas:11.1. Para comparar a efectividade de dois previsores diferentes, devem usar-seprevisores com igual número de bits. Neste caso, o previsor (0,2) de 4096posições é comparado com um previsor (2,2) de 1024 posições por tabela local.11.2. A tabela mostra que um previsor com informação global permite reduzirsignificativamente a taxa de falhas, por comparação com um previsor local com omesmo número de bits.11
  • 11. Previsão dinâmica de saltosPrevisão de torneioOs previsores de torneio:constituem um exemplo de previsão multi-nível de saltos;usam múltiplas tabelas de previsão e um seleccionador para escolherqual usar;geralmente um nível baseia-se em informação global e outro eminformação local;implementações actuais: contador “saturado” de 2 bits para escolherentre dois níveis;obtêm melhores resultados para tamanhos médios (8 Kb–32 Kb);cada tabela de previsão pode ter mais que um nível (p.ex. Alpha21264).João Canas Ferreira (FEUP) ILP Outubro de 2010 12 / 58Notas:12.1. Um previsor de torneio faz uma “competição” entre previsores, escolhendo emcada situação qual dos resultados deve usar (dos previsores em competição).Tipicamente, dois previsores estão em competição, sendo um deles global (p. ex.,do tipo previsor por correlação) e o outro local (p. ex., previsor local do tipo(0,2)).12.2. Previsores de torneio são o tipo mais frequente de previsores multi-nível. Umprevisor multi-nível usa vários níveis de tabelas, em conjunto com um algoritmopara escolher entre os múltiplos previsores.12
  • 12. Previsão dinâmica de saltosPrevisão de torneio: exemplo com 2 bitsFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 13 / 58Notas:13.1. Na prática, um previsor de torneio usa um contador com saturação para escolherentre dois previsores. Com base no endereço da intrução a prever, o previsorconsulta uma tabela com 2 bits, que indicam o previsor a usar. Dependendo doresultado da previsão dos dois subprevisores, o contador é actualizado, conformeilustrado na figura.13.2. Para cada “jogada” do torneio existem 4 possibilidades: ambos os previsoresacertam, ambos falham, previsor 1 acerta e o 2 falha, ou vice-versa. Quandoambos acertam ou falham simultaneamente, o previsor de torneio não muda deestado.13.3. Na figura do acetato, a notação X/Y, em que X e Y podem ser 0 (falha) ou 1(acerto), indica o desfecho de cada subprevisor.13
  • 13. Previsão dinâmica de saltosPrevisão de torneio: selecção da tabela localFonte: [CAQA3]Cada tabela tem 1024 posições, 2 bits cada; global: 2 bitsJoão Canas Ferreira (FEUP) ILP Outubro de 2010 14 / 58Notas:14.1. A figura mostra que a capacidade para trocar entre dois previsores éparticularmente atraente no caso dos programas que não usam vírgula flutuante,já que neste caso, o recurso ao previsor global é bastante frequente (superior a50% no caso de eqntott).14
  • 14. Previsão dinâmica de saltosTaxa de falhas para diferentes estratégias de previsãoFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 15 / 58Notas:15.1. A figura mostra o resultado de uma avaliação empírica de previsores com omesmo número de bits, mas diferentes estruturas. Como seria de esperar, osprevisores de torneio são os que apresentam melhor desempenho.15.2. Como já se tinha observado em caso anteriores, a capacidade de previsão nãomelhora a partir de um certo tamanho.15.3. Os dados foram obtidos para programas SPEC89.15
  • 15. Sequenciamento dinâmico1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 16 / 58Notas:16
  • 16. Sequenciamento dinâmicoO conceito de sequenciamento dinâmico« Sequenciamento dinâmico: rearranjo da execução de operações efectuadopelo processador com o objectivo de reduzir os protelamentos, preservando ofluxo de dados.Vantagens:1 Possibilita o tratamento de casos em que as dependências não sãoconhecidas em tempo de compilação;« Importante para obter bons desempenhos sem comprometer acompatibilidade binária.2 Simplifica o compilador;3 Permite que código compilado para uma arquitectura de pipeline executebem noutra;4 Serve de base a especulação de hardware, uma técnica com vantagensapreciáveis para o desempenho.João Canas Ferreira (FEUP) ILP Outubro de 2010 17 / 58Notas:17.1. O sequenciamento estático é aquele que é efectuado pelo compilador.17.2. O sequenciamento estático é muito importante para processadores que nãoemitem instruções fora de ordem (emissão estática): a ordem “óptima” dasinstruções deve ser determinada pelo compilador, tendo em conta a organizaçãodo encadeamento de instruções.17.3. Exemplo de utilidade de sequenciamento dinâmico:DIV.D F0, F2, F4ADD.D F10, F0, F8SUB.D F12, F8, F14A dependência da instrução ADD.D em relação a DIV.D leva o CPU a protelar.Contudo, SUB.D não depende de nenhuma instrução anterior (em execução) epoderia executar imediatamente (sem esperar que as duas instruções precedentessejam completamente ou parcialmente executadas.)17
  • 17. Sequenciamento dinâmicoRedução do impacto de conflitosSituaçã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 queestá na origem do conflito (protelar). Entretanto, todas as instruçõesposteriores à instrução em conflito são suspensas e nenhuma instruçãoadicional é processada.« Solução 2: A instrução em conflito é suspensa (até que o conflitodesapareça porque a instrução anterior passou um certo estágio) masinstruções posteriores continuam a respectiva execução (caso elas própriasnã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çãofora de ordem. → conflitos WAR e WAW; dificuldade na coordenação comexcepções (imprecisão).João Canas Ferreira (FEUP) ILP Outubro de 2010 18 / 58Notas:18.1. Neste contexto, “execução” refere-se ao processamento geralmente efectuadono(s) andar(es) EX.18.2. O objectivo principal do sequenciamento dinâmico é evitar os conflitos causadospor dependências (estruturais, de dados ou de controlo).18.3. O sequenciamento dinâmico vem facilitado quando as instruções são simples, i.e.para conjuntos de instruções RISC.18.4. Implementações da arquitectura IA-32, uma arquitectura CISC, converteminternamente as instruções em conjuntos de micro-operações. Estas últimas sãosequenciadas dinamicamente e executadas.18
  • 18. Sequenciamento dinâmicoExtensão de pipeline para sequenciamento dinâmicoDividir o andar ID em dois:1 Emissão — Descodificação da instrução e verificação de conflitosestruturais.2 Leitura de operandos (RO) — Esperar até que não haja conflitos dedados e, então, ler os operandos.IF coloca a instrução num registo ou numa fila de instruções pendentes; asinstruções são emitidas a partir daí.Quando uma instrução passa de RO para EX começa a execução propriamentedita.« Sequenciamento dinâmico permite ter múltiplas instruções em execução erequer unidades pipelined, múltiplas unidades funcionais, ou ambas.« Assumir que as instruções são emitidas em ordem, mas podem entrar emexecução fora de ordem.« Abordagens: painel de resultados (scoreboard); algoritmo de Tomasulo.João Canas Ferreira (FEUP) ILP Outubro de 2010 19 / 58Notas:19.1. Scoreboard foi usado pela primeira vez no CDC 6600.19.2. As instruções passam do “estado” de emissão para o de RO em ordem. Apassagem do estado RO para EX é que pode ser feita fora de ordem (de acordocom a disponibilidade dos operandos).19.3. O tratamento de unidades pipelined é essencialmente idêntico ao de múltiplasunidades funcionais. Nos exemplos usados a seguir assumiremos que oprocessador tem múltiplas unidades funcionais.19.4. A abordgem analisada caracteriza-se por ter emissão de instruções “por ordem”,mas execução “fora de ordem”: instruções posteriores podem ultrapassar outrasinstruções na fase RO.19
  • 19. Sequenciamento dinâmico Algoritmo de Tomasulo1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 20 / 58Notas:20
  • 20. Sequenciamento dinâmico Algoritmo de TomasuloAspectos básicos do algoritmo de Tomasulo1 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 (evitarconflitos RAW) com register renaming (minimizar conflitos WAW e WAR).4 Register renaming (RR) modifica o nome dos registos-destino de forma aque as escritas fora de ordem não afectem instruções que dependem deum valor anterior do operando.5 Esta abordagem usa estações de reserva (ER) para implementar registerrenaming. Uma estação de reserva obtém e “guarda” um operando maleste esteja disponível; referências a registos são substituídas porreferências a estações (instruções pendentes designam qual a estaçãoque 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 quenão podem ser eliminados pelo compilador.João Canas Ferreira (FEUP) ILP Outubro de 2010 21 / 58Notas:21.1. O IBM 360/91 tinha apenas 4 registos de vírgula flutuante e não tinha memóriascache. As operações de VF eram longas e os acessos a memória também.21.2. Ao contrário do MIPS, o IBM 360/91 permite acessos a memória nas instruçõesde vírgula flutuante.21.3. O acesso a memória é mediado por uma unidade especializada (e não integradodirectamente na pipeline de processamento).21
  • 21. Sequenciamento dinâmico Algoritmo de TomasuloEliminação de dependências por registos adicionaisDIV.D F0 ,F2,F4 DIV.D F0,F2,F4ADD.D F6 , F0 ,F8 ADD.D S,F0,F8S.D F6 ,0(R1) S.D S,0(R1)SUB.D F8 ,F10,F14 SUB.D T,F10,F14MUL.D F6,F10, F8 MUL.D F6,F10,T(Supondo a existência de dois registos auxiliares S e T.)No código original existem 3 dependências verdadeiras e 2 dependências denome: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.João Canas Ferreira (FEUP) ILP Outubro de 2010 22 / 58Notas:22.1. Um CPU que implemente RR consegue fazer as alterações equivalentes à doexemplo durante o processamento do fluxo de instruções.22.2. Este caso particular também pode ser resolvido por sequenciamento estático(feito por compilador), se existirem registos livres.22.3. O uso de estações de reserva tem dois outros aspectos importantes:1. O controlo da execução e a detecção de conflitos são distribuídos.2. Resultados de uma unidade funcional são passados directamente parabuffers de ER que deles necessitem (sem passar pelo banco de registos).22
  • 22. Sequenciamento dinâmico Algoritmo de TomasuloMIPS adaptado para o algoritmo de TomasuloFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 23 / 58Notas:23.1. A figura mostra a estrutura da unidade de VF do MIPS adaptada para utilização doalgoritmo de Tomasulo. (O tratamento de dados inteiros não está ilustrado.)23.2. O sistema inclui uma unidade load/store para tratamento dos acessos a memória(para valores VF).23.3. Cada estação de reserva inclui os operandos, a indicação da operação e algunsbits de controlo.23.4. Funções do load buffer:1. Armazenar componentes necessários ao cálculo do endereço efectivo atéeste ser realizado (guardar offset até valor do registo ser conhecido).2. Registar as operações de load à espera de valores da memória.3. Guardar valores lidos até puderem ser passados ao CDB.23.5. Funções do store buffer:1. Como para load buffer.2. Armazenar endereço efectivo enquanto espera pelo valor a guardar emmemória.3. Armazenar endereço efectivo e dados enquanto a unidade de memória nãoestiver livre.23
  • 23. Sequenciamento dinâmico Algoritmo de TomasuloEtapas do algoritmo de Tomasulo1 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 osoperandos (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 osproduzem (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 osoperandos estão disponíveis, a operação pode ser efectuada. (Assimevitam-se os conflitos RAW).Múltiplas instruções podem ter a possibilidade de entrar em execuçãosimultaneamente.3 Escrita — Quando o resultado está disponível, é enviado via CDB para oregisto e para todas as ER (incluindo o store buffer).João Canas Ferreira (FEUP) ILP Outubro de 2010 24 / 58Notas:24.1. Um acesso a memória é feito em dois tempos:1. Cálculo do endereço efectivo quando o valor do registo base estiverdisponível. O resultado é guardado no buffer.2. O segundo tempo depende do tipo de acesso:a) Loads executam mal a unidade de memória esteja livre.b) Stores podem ter de esperar pelo valor a guardar. Quando este estiverdisponível, é armazenado no store buffer e a instrução fica à espera deutilizar a unidade de memória.24.2. Para evitar conflitos nos acessos a memória, o cálculo do endereço efectivo ésempre feito “por ordem” e é seguido de uma verificação de conflitos. Caso sejadetectado um conflito, a colocação de novos acesso na unidade load/store ésuspensa até que o conflito desapareça.24
  • 24. Sequenciamento dinâmico Algoritmo de TomasuloTratamento de acessos a memóriaOs acessos a memória processam-se em dois passos:1 Calcular o endereço efectivo quando o registo de base está disponível ecolocá-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 amemória.Quando load e store acedem à mesma posição, então se1 load precede store: trocá-los provoca WAR;2 store precede load: trocá-los provoca RAW;3 store precede store: trocá-los provoca WAW.« Para detectar estas situações, é necessário conhecer os endereços dequalquer 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.João Canas Ferreira (FEUP) ILP Outubro de 2010 25 / 58Notas:25.1. Acessos a memória podem ser feitos por uma ordem diferente da especificada noprograma desde que acedam a posições diferentes de memória.25.2. Consequências:• Para determinar se uma operação de load pode ser executada, o processadordeve determinar se existe alguma instrução de store ainda pendente para omesmo endereço.• Para uma operação de store é necessário verificar se não existe nenhumacesso anterior pendente para o mesmo endereço.Este processo é designado por “desambiguação dinâmica de memória” (dynamicmemory disambiguation).25.3. Para garantir estas condições, basta calcular o endereço efectivo pela ordemespecificada no programa e fazer a respectiva verificação. Caso esta indique umconflito, o tratamento de instruçõe load/store protela.25
  • 25. Sequenciamento dinâmico Algoritmo de TomasuloAlgoritmo de Tomasulo: SumárioSequenciamento 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, mascomplicam ainda mais a implementação.João Canas Ferreira (FEUP) ILP Outubro de 2010 26 / 58Notas:26.1. Referência original: R. M. Tomasulo, “An Efficient Algorithm for ExploitingMultiple Arithmetic Units”, IBM Journal of Research and Development, Volume11, Number 1, pp. 25–33 (1967),http://www.research.ibm.com/journal/rd/111/tomasulo.pdf26
  • 26. Distribuição de instruções1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 27 / 58Notas:27
  • 27. Distribuição de instruçõesAumentar o desempenho da distribuição de instruções« Para desempenho de pipelines é vital ter a capacidade de distribuir asinstruções pelas unidades funcionais em tempo útil.tabelas de destinos de saltos (branch-target buffer);« associar instruções a destinos de saltos de maneira a obter o destinodo salto ainda em IF;unidades integradas de obtenção de instruções(integrated instruction fetch unit);unidades de previsão de endereços de retorno« tratamento de saltos indirectos (85% dos saltos indirectos deSPEC86).« Máximo actual: emissão de 4–8 instruções por ciclo.João Canas Ferreira (FEUP) ILP Outubro de 2010 28 / 58Notas:28.1. Prever os saltos não é suficiente para garantir elevado desempenho. O que épreciso é assegurar a capacidade de fornecer as instruções atempadamente aonúcleo de processamento. A previsão de saltos é o primeiro e imprescindívelpasso, mas outras medidas são necessárias. As mais elementares são as indicadasno acetato.28
  • 28. Distribuição de instruçõesTabela de destinos de saltosFonte: [CAQA3]Apenas regista informação sobre ciclos “tomados”.João Canas Ferreira (FEUP) ILP Outubro de 2010 29 / 58Notas:29.1. Os mecanismos de previsão de salto analisados até aqui não trazem benefícioalgum para a pipeline MIPS, já que o desfecho do salto é determinado emsimultâneo com o endereço de destino: ambos estão disponíveis no ciclo ID.29.2. Para obter melhor desempenho, usa-se uma tabela, que, para cada salto (previstocomo tomado), regista o endereço de destino.29.3. Notar que a existência de uma etiqueta é mesmo necessária. A “ambiguidade”existente nas tabelas de saltos não pode existir aqui. Isso implicaria que, em casode acerto (sem confirmação de etiqueta), poderia ser escolhido um endereço dedestino referente a outro salto.29.4. A tabela de destino de saltos é acedida no ciclo IF. Caso haja um acerto, oendereço da próxima instrução fica imediatamente disponível, e pode ser usadono ciclo de relógio seguinte. (Pipeline MIPS deixa de protelar.)29.5. O texto da terceira coluna do figura é enganador: a tabela guarda informaçãosobre saltos tomados. Por isso, a terceira coluna é optativa.29.6. A utilização de previsores de 2 bits implica guardar informação sobre saltos nãotomados. Muitos sistemas utilizam simultaneamente uma tabela de previsão desaltos e uma tabela de destino de saltos. A alternativa é incluir na tabela dedestino de saltos informação para os saltos não tomados (a existência de uma 3ªcoluna seria obrigatória).29
  • 29. Distribuição de instruçõesTratamento de saltos com previsão de destinoFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 30 / 58Notas:30.1. A figura mostra em que ciclos é que as diferentes tarefas associadas à utilizaçãode uma tabela de destino de saltos são efectuadas.30.2. A penalidade por uma previsão mal feita é de 2 ciclos, o que é maior que oprotelamento associado a um salto na ausência de tabela de destino de saltos(TDS). Por outras palavras, a utilização de uma TDS diminui o número de vezesque é necessário protelar, mas aumenta a penalidade naquelas situações em quenão se consegue evitar o protelamento.30
  • 30. Distribuição de instruçõesUnidade integrada de obtenção de instruçõesUnidade autónoma que “alimenta” o resto da pipeline. As suas funções são:previsão de saltos integrada—A previsão de saltos é integrada naunidade de obtenção de instruções para alimentar a pipeline deobtenção de instruções com os valores previstos;pre-obtenção de instruções—A unidade obtém instruções antes de estasserem referenciadas;acesso a memória de instruções—A obtenção de múltiplas instruções porciclo coloca vários problemas (p.ex. múltiplas leituras de cache), cujotratamento é encapsulado por esta unidade; também proporcionaarmazenamento temporário (buffering).João Canas Ferreira (FEUP) ILP Outubro de 2010 31 / 58Notas:31.1. Para atingir os níveis de desempenho desejado, a maior parte dos processadoresrecentes opta por usar uma unidade integrada de obtenção de instruções(integrated instruction fetch unit). Esta unidade é autónoma e a sua tarefa é“alimentar” a pipeline de execução.31.2. À medida que aumenta o número de instruções que podem ser emitidas por ciclo(ver acetato 16), esta unidade pode transformar-se num “gargalo” dedesempenho.31.3. Esta unidade é a que faz a interface com a memória.31
  • 31. Distribuição de instruçõesPrevisão de endereços de retornoA previsão de saltos indirectos (i.e., via registos) não é feitaeficientemente pelas estratégias já referidas.Branch-target prediction funciona, mas não é eficaz. (Porquê?)O retorno de subrotinas constitui cerca de 85% dos saltos indirectos.O processador mantém uma pilha de endereços de retorno:coloca aí um endereço quando executa uma chamada e retira um quandofaz um retorno.Pilhas suficientemente grandes permitem prever perfeitamente osendereços de retorno.João Canas Ferreira (FEUP) ILP Outubro de 2010 32 / 58Notas:32.1. A previsão de destino de saltos não é eficaz, porque o destino do salto(associado ao retorno de uma função) não é sempre o mesmo.32
  • 32. Distribuição de instruçõesPrevisão de endereços de retorno: profundidade da pilhaFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 33 / 58Notas:33.1. Como o número de invocações pendentes de subrotinas é geralmente reduzido(com algumas excepções), pequenas pilhas de endereços de retorno funcionambastante bem. Nos resultados apresentados no gráfico, uma pilha de 8 posições ésuficiente para prever correctamente os retornos de função de todos osprogramas, excepto um. O benchmark li é um interpretador de LISP a executar umprograma recursivo.33.2. Para estes seis programas, o retorno de subrotinas representa 81% de todos ossaltos indirectos.33
  • 33. Emissão múltipla de instruções1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 34 / 58Notas:34
  • 34. Emissão múltipla de instruçõesEmissão de mais que uma instrução por cicloPara obter CPI<1 é necessário emitir mais que uma instrução por ciclo.Processadores com emissão múltipla dividem-se em:1 Processador super-escalar: número variável de instruções por ciclo,sequenciamento dinâmico (ou estático), execução fora de ordem.2 Processador VLIW (very long instruction word): número fixo de instruçõespor ciclo ou pacote de instruções com concorrência explicitamenteindicada (EPIC—explicit parallel instruction computer); sequenciamentoestático.Para cada instrução de um pacote de instruções: examinar as instruçõespor ordem; instruções em conflito com instruções em execução ou cominstruções anteriores do pacote não são emitidas.Na prática, as instruções de um pacote são todas examinadasconcorrentemente; a complexidade da tarefa obriga a usar uma pipelineno andar de emissão (aumenta a importância da previsão).João Canas Ferreira (FEUP) ILP Outubro de 2010 35 / 58Notas:35.1. Processadores VLIW estão muito dependentes da qualidade do compilador, que ,por sua vez, deve ter um conhecimento detalhado da microarquitectura doprocessador.35.2. Processadores superescalares mais antigos e processadores para sistemasembutidos usam sequenciamento estático.Por exemplo, o processador Blackfin (Analog Devices) permite executar 2instruções de 16 bits em paralelo com uma instrução de 32 bits.35
  • 35. Emissão múltipla de instruçõesCaracterização de processadores com multi-emissãoNomecomumEmissão Detecção deconflitosSequencia-mentoCaracterísticamarcanteExemploSuper-escalar(estático)dinâmica hardware estático execução em or-demSun UltraSPARC II/IIISuper-escalar(dinâmico)dinâmica hardware dinâmico execução fora deordemIBM Power2Super-escalar(especulação)dinâmica hardware dinâmico comespeculaçãoexecução fora deordem com espe-culaçãoPentium 4,MIPS R10K,IBM RS64IIIVLIW/LIW estática software estático sem conflitosentre pacotes deinstruçõesTrimedia,i860EPIC sobretudoestáticasobretudosoftwaregeralmenteestáticodependênciasexplícitasItaniumFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 36 / 58Notas:36.1. O tratamento que se segue está focado nos três primeiros tipos de multi-emissãoindicados na tabela.36
  • 36. Emissão múltipla de instruçõesEmissão estática para processadores superscalaresEmissão de um número variável de instruções (típico 0–8).Instruções são emitidas por ordem e todos os conflitos são detectadosdurante o processo de emissão.Detecção de conflitos envolve as outras instruções em emissão, bemcomo as já emitidas.Emissão estática: o processador não toma decisões sobre a emissãosimultânea de instruções; isso é tarefa do compilador.Pacote de emissão: grupo de instruções produzido pela unidade deobtenção de instruções (fetch unit) que potencialmente podem seremitidas num ciclo.Emissão de instruções é uma tarefa complexa: é frequentementedividida em 2 (às vezes mais) etapas em pipeline.João Canas Ferreira (FEUP) ILP Outubro de 2010 37 / 58Notas:37.1. São emitidas 0 instruções quando o processador está em protelamento.37.2. Quando uma instrução exibe uma dependência de dados ou não verifica os outroscritérios de emissão (conflito estrutural), apenas as instruções que a precedemserão emitidas.37.3. A verificação dos requisitos para emissão das instruções é feito no primeiro andarda pipeline de emissão e inclui a detecção de conflitos com instruções ainda napipeline de emissão (e não apenas com as instruções já emitidas).37.4. Uma estratégia comum é a seguinte:1. O primeiro andar determina quantas instruções podem ser emitidas,ignorando dependências de instruções já emitidas.2. o segundo andar examina as dependências entre as instruções seleccionadase as instruções em execução.37.5. Pipelines de emissão de instruções aumentam ainda mais a penalidade por errosde previsão de saltos, implicando assim um aumento da importância da qualidadeda previsão.37.6. A emissão de instruções pode limitar o período de relógio, constituindo assim umobstáculo ao aumento do desempenho por via do aumento da frequência.37
  • 37. Emissão múltipla de instruçõesExemplo: “2-issue” MIPS com emissão estática1 instrução VF + 1 instrução inteira (ALU, load/store);esta organização minimiza os conflitos adicionais em relação à emissãosimples;pacote de emissão: possível conflito RAW entre instrução load/store deVF e operação VF.soma VF: 3 ciclos.Fonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 38 / 58Notas:38.1. As duas pipelines são quase independentes. Não esquecer que existem doisbancos de registos diferentes (um para valores inteiros e outro para valores devírgula flutuante).38.2. Neste cenário, acessos a memória são consideradas instruções “inteiras”.38.3. As maiores dificuldades na detecção de conflitos envolvem a leitura e a escritaem memória de valores de vírgula flutuante. Também podem surgir problemas cominstruções de movimento de dados entre os dois bancos de registos.38.4. Restrições ao tipo de instruções que podem ser emitidas em simultâneo sãocomuns em prcessadores multi-emissão.38
  • 38. Emissão múltipla de instruçõesEmissão dinâmica: exemplo 1Características:MIPS, dual-issue, extensão do algoritmo de Tomasulo à unidade inteira,2 CDBs;Emissão de duas instruções por ciclo (para unidades diferentes);Instruções só executam após o tratamento do salto condicional de quedependem;Andares de escrita dos resultados (1 ciclo);Latências: inteiros, 1 ciclo; loads, 2 ciclos; soma VF: 3 ciclos;Unidade de tratamento de saltos.LOOP: L.D F0, 0(R1)ADD.D F4, F0, F2S.D F4, 0(R1)DADDIU R1, R1, #-8BNE R1, R2, LOOPJoão Canas Ferreira (FEUP) ILP Outubro de 2010 39 / 58Notas:39.1. As duas principais estratégias para emitir duas instruções por ciclo são:1. executar a emissão de cada instrução em meio-ciclo (ncluido a verificaçãode dependências);2. emitir mesmo as duas instruções em paralelo (incluido o tratamento detodas as dependências entre instruções em emissão).Muitos processadores modernos usam as duas abordagens simultaneamente paraemitir 4 ou mais instruções por ciclo.39
  • 39. Emissão múltipla de instruçõesExemplo 1: Sequência de execuçãoFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 40 / 58Notas:40.1. Neste exemplo assume-se que instruções podem ser emitidas, mesmo quandoexistem dependências entre elas, ficando nesse caso a aguardar a resolução doconflito nas respectivas estações de reserva.40.2. A unidade de vírgula flutuante é pipelined.40.3. Assumir a existência de dois CDBs e previsão de saltos perfeita.40.4. A condição de salto é avaliada na etapa de execução.40.5. Taxa de emissão (no exemplo): 5/3 = 1.67.40.6. Taxa de execução (IPC) : 15/16 = 0.94.40.7. Se não existirem protelamentos por falha da previsão de saltos, as estações dereserva ficarão todas preenchidas e torna-se necessário protelar.40.8. A vantagem sobre emissão simples é pequena, porque este ciclo apenas tem umainstrução de vírgula flutuante. Neste caso, é a unidade inteira limita odesempenho.40
  • 40. Emissão múltipla de instruçõesExemplo 1: Utilização de recursosFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 41 / 58Notas:41.1. Cada entrada da tabela indica quando é que a correspondente unidade está a serusada: iteração/instrução.41.2. Para este exemplo, apenas um CDB é necessário. Por isso, o segundo CDB nãoestá representado.41.3. Notar que a unidade inteira é bastante usada.41
  • 41. Emissão múltipla de instruçõesEmissão dinâmica: exemplo 2Duas unidades inteiras distintas: uma para operações (ALU) e outra paracálculo do endereço efectivo.Fonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 42 / 58Notas:42.1. Neste exemplo existe uma unidade adicional para realizar o cálculo dos endereçosde memória.42.2. As três iterações executam agora em 11 ciclos (entrada em execução da últimainstrução), 5 ciclos menos que no exemplo anterior: IPC = 15/11 = 1.36; CPI =0.73.42
  • 42. Emissão múltipla de instruçõesExemplo 2: utilização de recursosFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 43 / 58Notas:43.1. Neste caso, já são necessários dois CDBs.43.2. A taxa de utilização das unidades funcionais é, globalmente, baixa.43.3. Observação geral sobre os dois exemplos: é a dependência de controlo queimpede de obter maior eficiência.43
  • 43. Especulação por hardware1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 44 / 58Notas:44
  • 44. Especulação por hardwareExecução especulativaProcessadores de elevado desempenho precisam de executar mais queuma instrução de salto por ciclo.Especular: Prever os saltos e executá-los (não apenas emiti-los)!Especulação combina três conceitos:1 previsão dinâmica de saltos;2 execução especulativa de instruções antes de resolver conflitos decontrolo (com capacidade de anulação);3 sequenciamento dinâmico.Separação entre encaminhamento dos resultados para as operações eterminação da instrução: a instrução só armazena resultados quando forconfirmado que os resultados são válidos.Guardar os resultados num reorder buffer (ROB) até ao estágio deinstruction commit (“compromisso”).« Especulação permite aplicar o sequenciamento dinâmico simultaneamentea mais que um bloco básico.João Canas Ferreira (FEUP) ILP Outubro de 2010 45 / 58Notas:45.1. A execução especulativa pressupõe a capacidade de anular os efeitos deinstruções executadas especulativamente.45.2. Execução especulativa é usado em PowerPC 603/604/G3/G4, MIPSR10000/R12000, Pentium II/III/4, Alpha 21264, AMD K5/K6/Athlon.45.3. É necessário separar a realização dos cálculos da “finalização” da instrução:introduzir uma nova fase de finalização (designada por commit or retirement).45.4. A finalização é feita pela ordem das instruções no fio de execução: é essa afunção do reorder buffer. (Existem ainda outras alternativas para obter o mesmoefeito.)45
  • 45. Especulação por hardwareHardware para especulaçãoFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 46 / 58Notas:46.1. Exemplo aplicado à unidade de vírgula flutuante usada para ilustrar osequenciamento dinâmico. A extensão para o CPU completo é conceptualmentesimples.46.2. Por comparação com a versão anterior, acrescentou-se o ROB e removeu-se ostore buffer, cujo papel passa a ser desempenhado pela ROB.46.3. Neste esquema, apenas um instrução pode ser finalizada em cada ciclo derelógio. O mecanismo pode ser aumentado usando mais que um CDB.46
  • 46. Especulação por hardwareReorder bufferO reorder buffer (ROB) fornece registos temporários adicionais paraguardar resultados entre o instante em que a instrução termina aexecução e faz commit.ROB também é fonte de operandos.ROB é similar ao store buffer; na prática, o ROB combina afuncionalidade de ambos.O ROB tem a seguinte informação para cada instrução emitida:1 tipo de instrução (salto—sem resultado; store—resultado emmemória;ALU/load—resultado em registo).2 destino (onde guardar o resultado);3 valor;4 ready—indica se o valor é válido.Cada instrução é referenciada pela sua posição no ROB.João Canas Ferreira (FEUP) ILP Outubro de 2010 47 / 58Notas:47.1. O reorder buffer fornece registos extra, de forma similar aos que são fornecidospelas estações de reserva.47.2. Os operandos são etiquetados pela sua posição no ROB (e não nas estações dereserva).47
  • 47. Especulação por hardwareEtapas do processamento de instruçõesEmissão—Obter instrução da fila de instruções. Emitir a instrução seexistirem uma ER e uma posição no ROB livres. Enviar operandos paraER se estiverem disponíveis nos registos ou no ROB. [dispatch]Execução—Se algum dos operandos não estiver disponível, monitorar oCDB. Store só necessita do cálculo do endereço efectivo. Quando osoperandos estão disponíveis, executar a instrução, possivelmente emmúltiplos ciclos. [issue]Escrita—Enviar resultado via CDB para ROB e ER. Para stores o valor (oendereço) é guardado no ROB.Commit—A acção depende do tipo de instrução:Salto mal previsto: limpar ROB e recomeçar processamento com instruçãoa seguir ao salto.Operação normal: a instrução chega ao topo do ROB com o resultadopresente; este é enviado para o registo. [completion]No fim, a posição do ROB é libertada. Quando o ROB fica cheio, a emissão deinstruções é suspensa.João Canas Ferreira (FEUP) ILP Outubro de 2010 48 / 58Notas:48.1. A fase de emissão também é designada por “despacho” (dispatch).48.2. A detecção de conflitos RAW é feita na fase de execução.48.3. Instruções de escrita em memória (load) ficam neste estado até o valor aescrever estar disponível.48.4. As instruções do ROB entram em commit por ordem. Deste ponto de vista, o ROBporta-se como uma fila.48
  • 48. Especulação por hardwareExemplo: Emissão dupla sem especulaçãoFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 49 / 58Notas:49.1. O fragmento de código incrementa os elementos de um vector.49.2. A instrução L.D a seguir ao salto condicional BNE necessita de esperar peloresulado do salto.49.3. O exemplo assume a existência de uma unidade de cálculo de endereços eemissão dupla (conforme o exemplo do acetato 23.49
  • 49. Especulação por hardwareExemplo: Emissão dupla com especulaçãoFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 50 / 58Notas:50.1. Esta versão executa mais depressa (a última instrução do exemplo tem início nociclo 13) devido à execução especulativa da instrução L.D.50.2. O aumento do desempenho é extremamente dependente da previsão correcta dossaltos.50
  • 50. Limitações de concorrência a nível de instruções1 Previsão dinâmica de saltos2 Sequenciamento dinâmicoAlgoritmo de Tomasulo3 Distribuição de instruções4 Emissão múltipla de instruções5 Especulação por hardware6 Limitações de concorrência a nível de instruçõesJoão Canas Ferreira (FEUP) ILP Outubro de 2010 51 / 58Notas:51
  • 51. Limitações de concorrência a nível de instruçõesLimitações de ILPOs estudos estabelecem um modelo (conjunto de suposições) edeterminam a quantidade de paralelismo existente em instruçõesemitidas por ciclo.Modelo de processador ideal:1 Register renaming—Número infinito de registos.2 Previsão de saltos—A previsão é perfeita.3 Previsão de saltos incondicionais—Todos os saltos incondicionais(incluindo retornos de subrotinas) são previsto perfeitamente.4 Acesso a memória—Todos os endereços são conhecidos em qualqueraltura; load pode ser adiantado em relação a store (desde que não acedamà mesma posição de memória).Os pontos 2 e 3 eliminam as dependências de controlo. Os pontos 1 e 4eliminam todas as dependências excepto as verdadeiras.O processador pode emitir um número infinito de instruções por ciclo;todas as unidades funcionais têm 1 ciclo de latência; caches perfeitas: 1ciclo de acesso.João Canas Ferreira (FEUP) ILP Outubro de 2010 52 / 58Notas:52.1. A principal linha de orientação para o aumento do desempenho de processadoresfoi, nos anos 80 e 90, o aproveitamento da concorrência a nível de instruções(instruction-level parallelism—ILP). Portanto, é importante ter uma noção dequanta concorrência existe realmente nos programas escritos de maneiraconvencional (i.e., para uma arquitectura puramente sequencial).52.2. Estudos empíricos deste tipo só podem ser feitos por simulação. Geralmente,começa-se por examinar os resultados obtidos por um processador ideal, paradepois analisar a influência de cada uma das limitações realistas.52.3. Os resultdos apresentados a seguir provêm do seguinte trabalho:Wall, D. W., Limits of Instruction-Level Parallelism, Research Report Rep.WRL-93-6, Western Research Laboratory, Digital Equipment Corp.(http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-93-6.html).52.4. Em todos os caso analisados, não existem restrições aos tipos de instruções quepodem ser emitidas simultaneamente.52
  • 52. Limitações de concorrência a nível de instruçõesILP para um processador perfeitoFonte: [CAQA3]« A concorrência de operações é medida pelo número médio de instruçõesemitidas por ciclo (1/CPI). Todas as instruções têm latência de 1 ciclo.João Canas Ferreira (FEUP) ILP Outubro de 2010 53 / 58Notas:53.1. Os programas fpppp, doduc e tomcatv são programas científicos, que fazem usosignificativo de dados em vírgula flutuante. Os restantes utilizam apenasaritmética inteira.53.2. Os programas científicos apresentam maior quantidade de paralelismo, como seriade esperar.53.3. Nestas simulações, cada instrução é emitida o mais cedo que as dependências dedados permitam. Como todos os saltos são previstos sem erros, tal pode implicargrande “movimentação” das instruções.53
  • 53. Limitações de concorrência a nível de instruçõesEfeito da dimensão da janelaFonte: [CAQA3]Janela: n.º de instruções examinadas simultaneamente. Nos estudossubsequentes assume-se: janela de 2K / 64-issue.João Canas Ferreira (FEUP) ILP Outubro de 2010 54 / 58Notas:54.1. Em cada ciclo, um processador perfeito deve:1. Procurar arbitrariamente longe no futuro todas as instruções que possam seremitidas neste ciclo (prevendo correctamente todos os saltos);2. Renomear registos para evitar conflitos WAR e WAW;3. Determinar se existem dependências de dados (verdadeiras) entre asinstruções a emitir neste ciclo e renomear os respectivos operandos;4. Determinar se existem dependência de dados (verdadeiras) via memória etratá-las apropriadamente.Para além disso, deve ter suficientes unidades funcionais para permitir a emissãode todas as instruções prontas.54.2. A tarefa de verificar se existem dependências de dados entre n instruções, cadauma com dois operandos, requer (n2− n) comparações. Por exemplo, detectar asdependências entre 2000 instruções requer pouco menos de 4 milhões decomparações. Por outras palavras, uma janela de instruções de 2000 requereriaum processador capaz de fazer 4 milhões de comparações por ciclo. Processadoresdo início do século XXI têm janelas cujo tamanho varia entre 64 e 128 instruções.54.3. O efeito de considerar uma janela de instruções finita é claramente mostrado nafigura: o paralelismo disponível desce significativamente.54
  • 54. Limitações de concorrência a nível de instruçõesEfeito da previsão “realista”Fonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 55 / 58Notas:55.1. O efeito de usar mecanismos realistas de previsão de saltos também é claro:descida significativa do paralelismo (menos de 20 instruções emitidas por ciclo,em média).55.2. Previsão estática: A previsão é baseada no perfil de execução do programa.Depois de analisado um perfil da execução do programa, o previsor (um programa)decide, para cada instrução de salto, se esta deve ser prevista como “tomada” ou“não-tomada”, e altera o binário por forma a indicar isso ao processador. (Algunsprocessadores permitem “anotar” cada instrução de salto com um bit a indicarqual o sentido da prevista.) Trata-se de uma prevista estática, no sentido em queé feita off-line.55
  • 55. Limitações de concorrência a nível de instruçõesEfeito de um número finito de registos em RRFonte: [CAQA3]A figura mostra o efeito de se dispor de um número finito de registos adicionais, para alémdos especificados pela arquitectura do conjunto de instruções.João Canas Ferreira (FEUP) ILP Outubro de 2010 56 / 58Notas:56.1. Registos de VF e para dados inteiros são aumentados do mesmo número. Porexemplo, os valores para a abcissa 32 correspondem a utilização adicional de 32registo de VF e de 32 registos para dados inteiros.56.2. Em 2001, o processador Alpha 21264 era aquele que mais registos adicionaistinha: 41.56.3. Os resultados mostram que as dependências de nome (que resultam em conflitosWAR e WAW) podem limitar significativamente o paralelismo disponível. Defacto,observa-se empiricamente que o impacto relativo destas dependênciasaumenta com o paralelismo disponível.56
  • 56. Limitações de concorrência a nível de instruçõesCaracterísticas de alguns processadores comerciaisFonte: [CAQA3]João Canas Ferreira (FEUP) ILP Outubro de 2010 57 / 58Notas:57.1. Dados representativos de processadores comerciais em 2002.57.2. Notar os diferentes tipos de restrições à emissão conjunta de instruções (terceiracoluna a contar da direita).57
  • 57. ReferênciasReferênciasCAQA4 J. L. Hennessey & D. A. Patterson, Computer Arquitecture: AQuantitative Approach, 4ª ed.CAQA3 J. L. Hennessey & D. A. Patterson, Computer Arquitecture: AQuantitative Approach, 3ª ed.COD4 D. A. Patterson & J. L. Hennessey, Computer Organization andDesign, 4a ed.Os tópicos tratados nesta apresentação são abordados nas seguintes secçõesde [CAQA4]:2.1, 2.3–2.93.1–3.3João Canas Ferreira (FEUP) ILP Outubro de 2010 58 / 58