execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.implementações da...

56
Execução concorrente de instruções Aspectos avançados João Canas Ferreira 2007-10-29 Tópicos de Arquitectura de Computadores Assuntos Tópicos 1 Sequenciamento dinâmico 2 Algoritmo de Tomasulo 3 Previsão dinâmica de saltos 4 Distribuição de instruções 5 Emissão múltipla de instruções 6 Especulação por hardware 7 Limitações de concorrência a nível de instruções João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 2 / 57 Contém figuras de: Computer Organization and Design (apend. A), D. Patterson & J. Hennessey, 3ª ed., Elsevier.

Upload: others

Post on 13-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Execução concorrente de instruçõesAspectos avançados

João Canas Ferreira

2007-10-29

Tópicos deArquitectura de Computadores

Assuntos

Tópicos

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 2 / 57

Contém figuras de:Computer Organization and Design (apend. A),

D. Patterson & J. Hennessey, 3ª ed., Elsevier.

Page 2: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Sequenciamento dinâmico

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 3 / 57

Notas:

3

Page 3: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Sequenciamento dinâmico

O conceito de sequenciamento dinâmico

à Sequenciamento dinâmico: rearranjo da execução de operações efectuado pelo processadorcom 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 tempode 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 odesempenho.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 4 / 57

Notas:

4.1. O sequenciamento estático é aquele que é efectuado pelo compilador.

4.2. O sequenciamento estático é muito importante para processadores que não emitem instruções fora de ordem(emissão estática): a ordem “óptima” das instruções deve ser determinada pelo compilador, tendo em contaa organização da pipeline.

4.3. Exemplo de utilidade de sequenciamento dinâmico:

DIV.D F0, F2, F4ADD.D F10, F0, F8SUB.D F12, F8, F14

A dependência da instrução ADD.D em relação a DIV.D leva o CPU a protelar. Contudo, SUB.D não depende denenhuma instrução anterior (em execução) e poderia executar imediatamente (sem esperar que as duasinstruções precedentes sejam completamente ou parcialmente executadas.)

4

Page 4: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Sequenciamento dinâmico

Redução do impacto de conflitos

Situação: É detectado um conflito entre a instrução descodificada (andar ID) e uma instruçãoem execução.

à Solução 1: Esperar que a instrução em execução ultrapasse a fase que está na origem doconflito (protelar). Entretanto, todas as instruções posteriores à instrução em conflito sãosuspensas e nenhuma instrução adicional é processada.

à Solução 2: A instrução em conflito é suspensa (até que o conflito desapareça porque ainstrução anterior passou um certo estágio) mas instruções posteriores continuam a respectivaexecuçã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 aexecução de instruções fora de ordem bem como a terminação fora de ordem. → conflitos WARe WAW; dificuldade na coordenação com excepções (imprecisão).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 5 / 57

Notas:

5.1. Neste contexto, “execução” refere-se ao processamento geralmente efectuado no(s) andar(es) EX.

5.2. O objectivo principal do sequenciamento dinâmico é evitar os conflitos causados por dependências(estruturais, de dados ou de controlo).

5.3. O sequenciamento dinâmico vem facilitado quando as instruções são simples, i.e. para conjuntos deinstruções RISC.

5.4. Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções emconjuntos de micro-operações. Estas últimas são sequenciadas dinamicamente e executadas.

5.5. O fragmento seguinte leva a conflitos do tipo WAR e WAW na pipeline de exemplo quando se utiliza execuçãofora de ordem:

DIV.D F0, F2, F4ADD.D F6, F0, F8SUB.D F8, F10, F14 ; WARMUL.D F6, F10, F8 ; WAW

5

Page 5: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

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 osoperandos.

IF coloca a instrução num registo ou numa fila de instruções pendentes; as instruções sãoemitidas 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 unidadespipelined, múltiplas unidades funcionais, ou ambas.à Assumir que as instruções são emitidas em ordem, mas podem entrar em execução fora deordem.à Abordagens: painel de resultados (scoreboard); algoritmo de Tomasulo.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 6 / 57

Notas:

6.1. Scoreboard foi usado pela primeira vez no CDC 6600.

6.2. As instruções passam do “estado” de emissão para o de RO em ordem. A passagem do estado RO para EX éque pode ser feita fora de ordem (de acordo com a disponibilidade dos operandos).

6.3. O tratamento de unidades pipelined é essencialmente idêntico ao de múltiplas unidades funcionais. Nosexemplos usados a seguir assumiremos que o processador tem múltiplas unidades funcionais.

6.4. A abordgem analisada caracteriza-se por ter emissão de instruções “por ordem”, mas execução “fora deordem”: instruções posteriores podem ultrapassar outras instruções na fase RO.

6

Page 6: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Algoritmo de Tomasulo

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 7 / 57

Notas:

7

Page 7: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

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) comregister renaming (minimizar conflitos WAW e WAR).

4 Register renaming (RR) modifica o nome dos registos-destino de forma a que as escritasfora de ordem não afectem instruções que dependem de um valor anterior do operando.

5 Esta abordagem usa estações de reserva (ER) para implementar register renaming. Umaestação de reserva obtém e “guarda” um operando mal este esteja disponível; referênciasa registos são substituídas por referências a estações (instruções pendentes designamqual 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 sereliminados pelo compilador.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 8 / 57

Notas:

8.1. O IBM 360/91 tinha apenas 4 registos de vírgula flutuante e não tinha memórias cache. As operações de VFeram longas e os acessos a memória também.

8.2. Ao contrário do MIPS, o IBM 360/91 permite acessos a memória nas instruções de vírgula flutuante.

8.3. O acesso a memória é mediado por uma unidade especializada (e não integrado directamente na pipeline deprocessamento).

8

Page 8: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Algoritmo de Tomasulo

Eliminação de dependências por registos adicionais

DIV.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 de nome:

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/DEEC) ILP 2007-10-29 9 / 57

Notas:

9.1. Um CPU que implemente RR consegue fazer as alterações equivalentes à do exemplo durante oprocessamento do fluxo de instruções.

9.2. Este caso particular também pode ser resolvido por sequenciamento estático (feito por compilador), seexistirem registos livres.

9.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 para buffers de ER que deles

necessitem (sem passar pelo banco de registos).

9

Page 9: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Algoritmo de Tomasulo

MIPS adaptado para o algoritmo de Tomasulo

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 10 / 57

Notas:

10.1. A figura mostra a estrutura da unidade de VF do MIPS adaptada para utilização do algoritmo de Tomasulo. (Otratamento de dados inteiros não está ilustrado.)

10.2. O sistema inclui uma unidade load/store para tratamento dos acessos a memória (para valores VF).

10.3. Cada estação de reserva inclui os operandos, a indicação da operação e alguns bits de controlo.

10.4. Funções do load buffer:

1. Armazenar componentes necessários ao cálculo do endereço efectivo até este ser realizado (guardaroffset 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.

10.5. Funções do store buffer:

1. Como para load buffer.2. Armazenar endereço efectivo enquanto espera pelo valor a guardar em memória.3. Armazenar endereço efectivo e dados enquanto a unidade de memória não estiver livre.

10

Page 10: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

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 (seexistirem).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 (registerrenaming).

2 Execução – Se algum dos operandos ainda não está disponível, monitorar o barramentocomum até que apareça. Quando todos os operandos estão disponíveis, a operação podeser efectuada. (Assim evitam-se os conflitos RAW).

Múltiplas instruções podem ter a possibilidade de entrar em execução simultaneamente.

3 Escrita — Quando o resultado está disponível, é enviado via CDB para o registo e paratodas as ER (incluindo o store buffer).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 11 / 57

Notas:

11.1. Um acesso a memória é feito em dois tempos:

1. Cálculo do endereço efectivo quando o valor do registo base estiver disponí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 estiver disponível, é armazenado nostore buffer e a instrução fica à espera de utilizar a unidade de memória.

11.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 seja detectado um conflito, a colocação de novos acesso naunidade load/store é suspensa até que o conflito desapareça.

11

Page 11: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

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 nobuffer 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 se

1 load precede store: trocá-los provoca WAR;

2 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 amemó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/DEEC) ILP 2007-10-29 12 / 57

Notas:

12.1. Acessos a memória podem ser feitos por uma ordem diferente da especificada no programa desde que acedama posições diferentes de memória.

12.2. Consequências:

• Para determinar se uma operação de load pode ser executada, o processador deve determinar se existealguma instrução de store ainda pendente para o mesmo endereço.

• Para uma operação de store é necessário verificar se não existe nenhum acesso anterior pendente parao mesmo endereço.

Este processo é designado por “desambiguação dinâmica de memória” (dynamic memory disambiguation).

12.3. Para garantir estas condições, basta calcular o endereço efectivo pela ordem especificada no programa efazer a respectiva verificação. Caso esta indique um conflito, o tratamento de instruçõe load/store protela.

12

Page 12: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Algoritmo de Tomasulo

Algoritmo de Tomasulo: Sumário

Sequenciamento dinâmico permite obter muito bons desempenhos (desde que os saltossejam 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 aindamais a implementação.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 13 / 57

Notas:

13.1. Referência original: R. M. Tomasulo, “An Efficient Algorithm for Exploiting Multiple Arithmetic Units”, IBMJournal of Research and Development, Volume 11, Number 1, pp. 25–33 (1967),http://www.research.ibm.com/journal/rd/111/tomasulo.pdf

13

Page 13: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 14 / 57

Notas:

14

Page 14: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Previsão dinâmica de saltos: o conceito

à A predição (ou previsão) de saltos condicionais é vital para processadores de elevadodesempenho, porque evita que as dependências de controlo se tornem num factor limitativo.

à Esquema mais simples: tabela de predição do resultado do teste “branch-predictionbuffer”/”branch history table”.

à A tabela é uma memória indexada pelo bits menos significativos do endereço da instruçãocondicional.à Cada posição tem 1 bit que indica se o salto foi recentemente tomado ou não.

Problema de desempenho: um ciclo efectuado 10 vezes tem uma taxa de acerto de 80% (duaspredições erradas), embora fosse de esperar pelo menos 90% (porquê?).

à Solução: usar mais bits (2!) — um contador com “saturação”.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 15 / 57

Notas:

15.1. Este esquema não tem etiquetas (como o esquema do acetato 29), e apenas reduz o tempo de salto, se otempo necessário para calcular a condição for maior que o tempo de cálculo do endereço de destino.

15.2. No caso da pipeline MIPS que estudámos, este tipo de predição não permitiria elimiar o protelamentoassociado aos saltos condicionais.

15.3. Notar que a predição pode ser efectuada com base na informação associada a um salto diferente daquelecujo desfecho se pretende calcular (mas que está colocado num endereço de memória que tem os os mesmosbits menos significativos). Tal pode reduzir a efectividade do mecanismo de predição, mas não afecta acorrecção do sistema (já que a predição deve ser sempre confirmada posteriormente).

15

Page 15: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Esquema local de predição de 2 bits

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 16 / 57

Notas:

16.1. Os dois bits associados a cada posição servem para codificar quatro estados possíveis. O esquema pode sergeneralizado para n bits, mas estudos empíricos indicam que a diminuta melhoria obtida não justifica a suautilização. Por isso, a grande maioria dos sistemas usa tabelas de 2 bits por posição.

16.2. A utilização de 2 bits tem uma complicação: a tabela é actualizada mais frequentemente que no caso de umatabela de 1 bit. Para tabelas de 1 bit por posição, a tabela é actualizada apenas quando ocorre uma falha depredição. No caso das tabelas de 2 bits, a tabela deve ser actualizada a todos os acessos, i.e., a tabela é lidae “escrita” em todos os ciclos.

16

Page 16: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Exactidão da predição: medidas empíricas

Benchmark SPEC86, IBM Power, 2 bits por posição, tabela de 4096 posições.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 17 / 57

Notas:

17.1. A taxa de falhas dos programas de vírgula flutuante é significativamente inferior à dos restantes programas.

17.2. Uma tabela de 4096 posições é considerada “grande”.

17.3. Para determinar o efeito do tratamento de saltos para o desempenho global não basta conhecer odesempenho do preditor; também é necessário saber a taxa de ocorrência das instruções de salto. No casodos resultados apresentados na tabela, são precisamente os programas em que a predição mais falha aquelesque têm um maior número de saltos.

17

Page 17: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Exactidão da predição: tabela infinita

Benchmark SPEC86, 2 bits por posição, tabela de 4096 posições vs. tabela infinita.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 18 / 57

Notas:

18.1. Os dados da tabela suportam a conclusão de que uma tabela com 4K posições tem um desempenho muitopróximo daquele que seria obtido por uma tabela com um número infinito de posições. Logo, não éinteressante aumentar o número de posições.

18.2. Como aumentar o número de bits por posição também não traz benefícios significativos, é necessáriorecorrer a preditores com uma estrutura mais sofisticada.

18

Page 18: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Predição com correlação

à Para melhorar a qualidade de predição é necessário considerar o comportamento recente deoutros saltos condicionais (predição com correlaçã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=0

L1: DSUBUI R3,R2,#2BNEZ R3,L2 ;salto b2 (bb!=2)DADD R2,R0,R0 ;bb=0

L2: 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, o que não podeser predito considerando apenas um único salto.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 19 / 57

Notas:

19.1. O exemplo mostra que, em geral, o desfecho de um salto condicional pode ser predito melhor, se o desfechodos saltos imediatamente precedentes for tido em conta.

19.2. Saltos “precedentes” são os executados imediatamente antes do salto que se pretende escrever, não aquelesques estão colocados imediatamente antes no texto do programa.

19.3. O código do exemplo é retirado do program eqntott, um dos componentes do benchmark SPEC89.

19

Page 19: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Predição com correlação: um exemplo

BNEZ R1,L1 ;salto b1 (d!=0)DADDIU R1,R0,# ; d==0, d=1

L1: DADDIU R3,R1,#-1BNEZ R3,L2 ;salto b2 (D!=1)

. . .L2:

if (d==0)d=1;

if (d==1)

d=? pred. b1 acção b1 nova pred. b1 pred. b2 acção b2 nova pred. b2

2 NT T T NT T T0 T NT NT T NT NT2 NT T T NT T T0 T NT NT T NT NT

d=? pred. b1 acção b1 nova pred. b1 pred. b2 acção b2 nova pred. b2

2 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/T

X/Y X: previsão para último salto NT; Y: último salto T. Preditor (1,1)

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 20 / 57

Notas:

20.1. Nestes exemplos, assume-se que todos os bits de predição estão inicializados a NT (not taken).

20.2. Na tabela inferior, a notação P1/P2 indica que P1 é a predição feita se o salto precedente não foi tomado,enquanto P2 é predição feita se o salto precedente foi tomado.

20.3. Em geral, um preditor (m, n) usa o comportamente dos m saltos precedentes para escolher um de 2m

preditores, cada um dos quais é um preditor de n bits.

20.4. Neste contexto, diz-se que os m saltos precedentes constituem a história global, enquanto cada um dospreditores individuais regista a história local, i.e., o comportamento anterior do salto a predizer.

20

Page 20: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Tabela com informação global e local

Implementação de um buffer de predição (2,2).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 21 / 57

Notas:

21.1. No caso do preditor (2,2) ilustrado na figura, história global é guardada num registo de deslocamento de 2bits, que permite seleccionar uma de quatro tabelas. O endereço da instrução de salto é usado para escolhera posição da tabela.

21.2. O número de bits de um preditor (m, n) é dado por

2m × n × nº de posições da tabela

Como a utilização de k bits do endereço permite seleccionar uma de 2k posições, o número de bits também édado por

2m × n × 2k.

21

Page 21: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Predição com correlação: comparação empírica

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 22 / 57

Notas:

22.1. Para comparar a efectividade de dois preditores diferentes, devem usar-se preditores com igual número debits. Neste caso, o preditor (0,2) de 4096 posições é comparado com um preditor (2,2) de 1024 posições portabela local.

22.2. A tabela mostra que um preditor com informação global permite reduzir significativamente a taxa de falhas,por comparação com um preditor local com o mesmo número de bits.

22

Page 22: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Predição de torneio

Os preditores de torneio:

constituem um exemplo de predição multi-nível de saltos;

usam múltiplas tabelas de predição e um seleccionador para escolher qual usar;

geralmente um nível baseia-se em informação global e outro em informação local;

implementações actuais: contador “saturado” de 2 bits para escolher entre dois níveis;

obtêm melhores resultados para tamanhos médios (8 KB–32 KB);

cada tabela de predição pode ter mais que um nível (p.ex. Alpha 21264).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 23 / 57

Notas:

23.1. Um preditor de torneio faz uma “competição” entre preditores, escolhendo em cada situação qual dosresultados deve usar (dos preditores em competição). Tipicamente, dois preditores estão em competição,sendo um deles global (p. ex., do tipo preditor por correlação) e o outro local (p. ex., correlador do tipo(0,2)).

23.2. Preditores de torneio são o tipo mais frequente de preditores multi-nível. Um preditor multi-nível usa váriosníveis de tabelas, em conjunto com um algoritmo para escolher entre os múltiplos preditores.

23

Page 23: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Predição de torneio: exemplo com 2 bits

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 24 / 57

Notas:

24.1. Na prática, um preditor de torneio usa um contador com saturação para escolher entre dois preditores. Combase no endereço da intrução a predizer, o preditor consulta uma tabela com 2 bits, que indicam o preditor ausar. Dependendo do resultado da predição dos dois subpreditores, o contador é actualizado, conformeilustrado na figura.

24.2. Para cada “jogada” do torneio existem 4 possibilidades: ambos os preditores acertam, ambos falham,preditor 1 acerta e o 2 falha, ou vice-versa. Quando ambos acertam ou falham simultaneamente, o preditorde torneio não muda de estado.

24.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 decada subpreditor.

24

Page 24: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Predição de torneio: selecção da tabela local

Cada tabela tem 1024 posições, 2 bits cada; global: 2 bits

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 25 / 57

Notas:

25.1. A figura mostra que a capacidade para trocar entre dois preditores é particularmente atraente no caso dosprogramas que não usam vírgula flutuante, já que neste caso, o recurso ao preditor global é bastantefrequente (superior a 50% no caso de eqntott).

25

Page 25: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Previsão dinâmica de saltos

Taxa de falhas para diferentes estratégias de predição

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 26 / 57

Notas:

26.1. A figura mostra o resultado de uma avaliação empírica de preditores com o mesmo número de bits, masdiferentes estruturas. Comoe seria de esperar, os preditores de torneio são os que apresentam melhordesempenho.

26.2. Como já se tinha observado em caso anteriores, a capacidade de predição não melhora a partir de um certotamanho.

26.3. Os dados foram obtidos para programas SPEC89.

26

Page 26: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 27 / 57

Notas:

27

Page 27: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

Aumentar o desempenho da distribuição de instruções

à Para desempenho de pipelines é vital ter a capacidade de distribuir as instruções pelasunidades funcionais em tempo útil.

tabelas de destinos de saltos (branch-target buffer);

à associar instruções a destinos de saltos de maneira a obter o destino do salto aindaem IF;

unidades integradas de obtenção de instruções(integrated instruction fetch unit);

unidades de predição de endereços de retornoà tratamento de saltos indirectos (85% dos saltos indirectos de SPEC86).

à Máximo actual: emissão de 4–8 instruções por ciclo.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 28 / 57

Notas:

28.1. Predizer os saltos não é suficiente para garantir elevado desempenho. O que é preciso é assegurar acapacidade de fornecer as instruções atempadamente ao núcleo de processamento. A predição de saltos é oprimeiro e imprescindível passo, mas outras medidas são necessárias. As mais elementares são as indicadasno acetato.

28

Page 28: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

Tabela de destinos de saltos

Apenas regista informação sobre ciclos “tomados”.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 29 / 57

Notas:

29.1. Para obter melhor desempenho, usa-se uma tabela, que, para cada salto (predito como tomado), regista oendereço de destino. Uma tabela desse tipo funciona como uma memória cache completamente associativa.

29.2. Notar que a existência de uma etiqueta é mesmo necessária. A “ambiguidade” existente nas tabelas de saltosnão pode existir aqui. Isso implicaria que, em caso de acerto (sem confirmação de etiqueta), poderia serescolhido um endereço de destino referente a outro salto.

29.3. A tabela de destino de saltos é acedida no ciclo IF, simultaneamente com o acesso a memória. Caso haja umacerto, o endereço da próxima instrução fica imediatamente disponível, e pode ser usado no ciclo de relógioseguinte. No caso da pipeline MIPS deixa de haver necessidade de protelar.

29.4. O texto da terceira coluna do figura é enganador: a tabela guarda informação sobre saltos tomados. Por isso,a terceira coluna é optativa.

29.5. A utilização de preditores de 2 bits implica guardar informação sobre saltos não tomados. Por essa razão,muitos sistemas utilizam simultaneamente uma tabela de predição de saltos e uma tabela de destino desaltos. A alternativa seria incluir na tabela de destino de saltos também informação para os saltos nãotomados. Nesse caso, a existência de uma terceira coluna seria obrigatória.

29

Page 29: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

Tratamento de saltos com predição de destino

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 30 / 57

Notas:

30.1. A figura mostra em que ciclos é que as diferentes tarefas associadas à utilização de uma tabela de destino desaltos são efectuadas.

30.2. A penalidade por uma predição mal feita é de 2 ciclos, o que é maior que o protelamento associado a umsalto na ausência de tabela de destino de saltos (TDS). Por outras palavras, a utilização de uma TDS diminuio número de vezes que é necessário protelar, mas aumenta a penalidade naquelas situações em que não seconsegue evitar o protelamento.

30

Page 30: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

Unidade integrada de obtenção de instruções

Unidade autónoma que “alimenta” o resto da pipeline. As suas funções são:

predição de saltos integrada—A predição de saltos é integrada na unidade de obtenção deinstruções para alimentar a pipeline de obtenção de instruções com os valores preditos;

pre-obtenção de instruções—A unidade obtém instruções antes de estas seremreferenciadas;

acesso a memória de instruções—A obtenção de múltiplas instruções por ciclo colocavários problemas (p.ex. múltiplas leituras de cache), cujo tratamento é encapsulado poresta unidade; também proporciona armazenamento temporário (buffering).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 31 / 57

Notas:

31.1. Para atingir os níveis de desempenho desejado, a maior parte dos processadores recentes opta por usar umaunidade integrada de obtenção de instruções (integrated instruction fetch unit). Esta unidade é autónoma ea sua tarefa é “alimentar” a pipeline de execução.

31.2. À media que aumenta o número de instruções que podem ser emitidas por ciclo (ver acetato 35), estaunidade pode transformar-se num “gargalo” de desempenho.

31.3. Esta unidade é a que faz a interface com a mm

31

Page 31: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

Predição de endereços de retorno

A predição de saltos indirectos (i.e., via registos) não é feita eficientemente pelasestraté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 quando faz um retorno.

Pilhas suficientemente grandes permitem predizer perfeitamente os endereços de retorno.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 32 / 57

Notas:

32.1. A prediçã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

Page 32: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Distribuição de instruções

Predição de endereços de retorno: profundidade da pilha

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 33 / 57

Notas:

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 funcionam bastante bem. Nos resultados apresentados no gráfico,uma pilha de 8 posições é suficiente para predizer correctamente os retornos de função de todos osprogramas, excepto um. O benchmark li é um interpretador de LISP a executar um programa recursivo.

33.2. Para estes seis programas, o retorno de subrotinas representa 81% de todos os saltos indirectos.

33

Page 33: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 34 / 57

Notas:

34

Page 34: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Emissão de mais que uma instrução por ciclo

Para 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ções por ciclo ou pacotede instruções com concorrência explicitamente indicada (EPIC—explicit parallel instructioncomputer); sequenciamento estático.

Para cada instrução de um pacote de instruções: examinar as instruções por ordem;instruções em conflito com instruções em execução ou com instruções anteriores dopacote não são emitidas.

Na prática, as instruções de um pacote são todas examinadas concorrentemente; acomplexidade da tarefa obriga a usar uma pipeline no andar de emissão (aumenta aimportância da predição).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 35 / 57

Notas:

35.1. Processadores VLIW estão muito dependentes da qualidade do compilador, que , por sua vez, deve ter umconhecimento detalhado da microarquitectura do processador.

35.2. Processadores superescalares mais antigos e processadores para sistemas embutidos usam sequenciamentoestático.Por exemplo, o processador Blackfin (Analog Devices) permite executar 2 instruções de 16 bits em paralelocom uma instrução de 32 bits.

35

Page 35: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Caracterização de processadores com multi-emissão

Nomecomum

Emissão Detecção deconflitos

Sequencia-mento

Característicamarcante

Exemplo

Super-escalar(estático)

dinâmica hardware estático execução em or-dem

Sun UltraSPARC II/III

Super-escalar(dinâmico)

dinâmica hardware dinâmico execução fora deordem

IBM Power2

Super-escalar(especulação)

dinâmica hardware dinâmico comespeculação

execução fora deordem com espe-culação

Pentium 4,MIPS R10K,IBM RS64III

VLIW/LIW estática software estático sem conflitos en-tre pacotes de ins-truções

Trimedia, i860

EPIC sobretudoestática

sobretudo soft-ware

geralmente es-tático

dependências ex-plícitas

Itanium

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 36 / 57

Notas:

36.1. O tratamento que se segue está focado nos três primeiros tipos de multi-emissão indicados na tabela.

36

Page 36: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Emissão estática para processadores superscalares

Emissã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 detectados durante o processode emissão.

Detecção de conflitos envolve as outras instruções em emissão, bem como as já emitidas.

Emissão estática: o processador não toma decisões sobre a emissão simultânea deinstruções; isso é tarefa do compilador.

Pacote de emissão: grupo de instruções produzido pela unidade de obtenção de instruções(fetch unit) que potencialmente podem ser emitidas num ciclo.

Emissão de instruções é uma tarefa complexa: é frequentemente dividida em 2 (às vezesmais) etapas em pipeline.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 37 / 57

Notas:

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 outros critérios de emissão(conflito estrutural), apenas as instruções que a precedem serão emitidas.

37.3. A unidade de obtenção de instruções pode ser incapaz de fornecer o número pedido de instruções.

37.4. A verificação dos requisitos para emissão das instruções é feito no primeiro andar da pipeline de emissão einclui a detecção de conflitos com instruções ainda na pipeline de emissão (e não apenas com as instruçõesjá emitidas).

37.5. Uma estratégia comum é a seguinte:

1. O primeiro andar determina quantas instruções podem ser emitidas, ignorando dependências deinstruções já emitidas.

2. o segundo andar examina as dependências entre as instruções seleccionadas e as instruções emexecução.

37.6. Pipelines de emissão de instruções aumentam ainda mais a penalidade por erros de previsão de saltos,implicando assim um aumento da importância da qualidade da previsão.

37.7. A emissão de instruções pode limitar o período de relógio, constituindo assim um obstáculo ao aumento dodesempenho por via do aumento da frequência.

37

Page 37: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Exemplo: “2-issue” MIPS com emissão estática

1 instrução VF + 1 instrução inteira (ALU, load/store);

esta organização minimiza os conflitos adicionais em relação à emissão simples;

pacote de emissão: possível conflito RAW entre instrução load/store de VF e operação VF.

soma VF: 3 ciclos.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 38 / 57

Notas:

38.1. As duas pipelines são quase independentes. Não esquecer que existem dois bancos de registos diferentes (umpara valores inteiros e outro para valores de ví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 escrita em memória de valores devírgula flutuante. Também podem surgir problemas com instruções de movimento de dados entre os doisbancos de registos.

38.4. Restrições ao tipo de instruções que podem ser emitidas em simultâneo são comuns em prcessadoresmulti-emissão.

38

Page 38: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Emissão dinâmica: exemplo 1

Caracterí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 que dependem;

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, LOOP

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 39 / 57

Notas:

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ção de dependências);2. emitir mesmo as duas instruções em paralelo (incluido o tratamento de todas as dependências entre

instruções em emissão).

Muitos processadores modernos usam as duas abordagens simultaneamente para emitir 4 ou mais instruçõespor segundo.

39

Page 39: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Exemplo 1: Sequência de execução

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 40 / 57

Notas:

40.1. Neste exemplo assume-se que instruções podem ser emitidas, mesmo quando existem dependências entreelas, ficando nesse caso a aguardar a resolução do conflito 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 de reserva ficarão todaspreenchidas e torna-se necessário protelar.

40.8. A vantagem sobre emissão simples é pequena, porque este ciclo apenas tem uma instrução de vírgulaflutuante. Neste caso, é a unidade inteira limita o desempenho.

40

Page 40: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Exemplo 1: Utilização de recursos

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 41 / 57

Notas:

41.1. Cada entrada da tabela indica quando é que a correspondente unidade está a ser usada: iteração/instrução.

41.2. Para este exemplo, apenas um CDB é necessário. Por isso, o segundo CDB não está representado.

41.3. Notar que a unidade inteira é bastante usada.

41

Page 41: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Emissão dinâmica: exemplo 2

Duas unidades inteiras distintas: uma para operações (ALU) e outra para cálculo do endereçoefectivo.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 42 / 57

Notas:

42.1. Neste exemplo existe uma unidade adicional para realizar o cálculo dos endereços de memória.

42.2. As três iterações executam agora em 11 ciclos (entrada em execução da última instrução), 5 ciclos menosque no exemplo anterior: IPC = 15/11 = 1,36; CPI = 0,73.

42

Page 42: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Emissão múltipla de instruções

Exemplo 2: utilização de recursos

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 43 / 57

Notas:

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 que impede de obter maior eficiência.

43

Page 43: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 44 / 57

Notas:

44

Page 44: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

Execução especulativa

Processadores de elevado desempenho precisam de executar mais que uma instrução desalto por ciclo.

Especular: Predizer 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 de controlo (com capacidade deanulação);

3 sequenciamento dinâmico.

Separação entre encaminhamento dos resultados para as operações e terminação dainstrução: a instrução só armazena resultados quando for confirmado que os resultadossão válidos.

Guardar os resultados num reorder buffer (ROB) até ao estágio de instruction commit(“compromisso”).

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 45 / 57

Notas:

45.1. A execução especulativa pressupõe a capacidade de anular os efeitos de instruções executadasespeculativamente.

45.2. Especulação permite aplicar o sequenciamento dinâmico simultaneamente a mais que um bloco básico.

45.3. Execução especulativa é usado em PowerPC 603/604/G3/G4, MIPS R10000/R12000, Pentium II/III/4, Alpha21264, AMD K5/K6/Athlon.

45.4. É necessário separar a realização dos cálculos da “finalização” da instrução: introduzir uma nova fase definalização (designada por commit or retirement).

45.5. A finalização é feita pela ordem das instruções no fio de execução: é essa a função do reorder buffer.(Existem ainda outras alternativas para obter o mesmo efeito.)

45

Page 45: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

Hardware para especulação

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 46 / 57

Notas:

46.1. Exemplo aplicado à unidade de vírgula flutuante usada para ilustrar o sequenciamento dinâmico. A extensãopara o CPU completo é conceptualmente simples.

46.2. Por comparação com a versão anterior, acrescentou-se o ROB e removeu-se o store buffer, cujo papel passa aser desempenhado pela ROB.

46.3. Neste esquema, apenas um instrução pode ser finalizada em cada ciclo de relógio. O mecanismo pode seraumentado usando mais que um CDB.

46

Page 46: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

Reorder buffer

O reorder buffer (ROB) fornece registos temporários adicionais para guardar resultadosentre o instante em que a instrução termina a execução e faz commit.

ROB também é fonte de operandos.

ROB é similar ao store buffer; na prática, o ROB combina a funcionalidade de ambos.

O ROB tem a seguinte informação para cada instrução emitida:

1 tipo de instrução (salto—sem resultado; store—resultado em memória;ALU/load—resultadoem 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/DEEC) ILP 2007-10-29 47 / 57

Notas:

47.1. O reorder buffer fornece registos extra, de forma similar aos que são fornecidos pelas estações de reserva.

47.2. Os operandos são etiquetados pela sua posição no ROB (e não nas estações de reserva).

47

Page 47: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

Etapas do processamento de instruções

Emissão—Obter instrução da fila de instruções. Emitir a instrução se existirem uma ER euma posição no ROB livres. Enviar operandos para ER se estiverem disponíveis nosregistos ou no ROB. [dispatch]

Execução—Se algum dos operandos não estiver disponível, monitorar o CDB. Store sónecessita do cálculo do endereço efectivo. Quando os operandos estão disponíveis,executar a instrução, possivelmente em múltiplos ciclos. [issue]

Escrita—Enviar resultado via CDB para ROB e ER. Para stores o valor (o endereç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ção a seguir ao

salto.• Operação normal: a instrução chega ao topo do ROB com o resultado presente; este é

enviado para o registo. [completion]

No fim, a posição do ROB é libertada. Quando o ROB fica cheio, a emissão de instruções ésuspensa.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 48 / 57

Notas:

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 a escrever estar disponível.

48.4. As instruções do ROB entram em commit por ordem. Deste ponto de vista, o ROB porta-se como uma fila.

48

Page 48: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

Exemplo: Emissão dupla sem especulação

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 49 / 57

Notas:

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 pelo resulado do salto.

49.3. O exemplo assume a existência de uma unidade de cálculo de endereços e emissão dupla (conforme oexemplo do acetato 42.

49

Page 49: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Especulação por hardware

Exemplo: Emissão dupla com especulação

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 50 / 57

Notas:

50

Page 50: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

1 Sequenciamento dinâmico

2 Algoritmo de Tomasulo

3 Previsão dinâmica de saltos

4 Distribuição de instruções

5 Emissão múltipla de instruções

6 Especulação por hardware

7 Limitações de concorrência a nível de instruções

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 51 / 57

Notas:

51

Page 51: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

Limitações de ILP

Os estudos estabelecem um modelo (conjunto de suposições) e determinam a quantidadede paralelismo existente em instruções emitidas por ciclo.

Modelo de processador ideal:1. Register renaming—Número infinito de registos.2. Predição de saltos—A predição é perfeita.3. Predição de saltos incondicionais—Todos os saltos incondicionais (incluindo retornos

de subrotinas) são preditos perfeitamente.4. Acesso a memória—Todos os endereços são conhecidos em qualquer altura; load pode

ser adiantado em relação a store (desde que não acedam à mesma posição dememória).

Os pontos 2 e 3 eliminam as dependências de controlo. Os pontos 1 e 4 eliminam todasas dependências excepto as verdadeiras.

O processador pode emitir um número infinito de instruções por ciclo; todas as unidadesfuncionais têm 1 ciclo de latência; caches perfeitas: 1 ciclo de acesso.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 52 / 57

Notas:

52.1. A principal linha de orientação para o aumento do desempenho de processadores foi, nos anos 80 e 90, oaproveitamento da concorrência a nível de instruções (instruction-level parallelism—ILP). Portanto, éimportante ter uma noção de quanta 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 osresultados obtidos por um processador ideal, para depois analisar a influência de cada uma das limitaçõesrealistas.

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 ResearchLaboratory, 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 que podem ser emitidassimultaneamente.

52

Page 52: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

ILP para um processador perfeito

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 53 / 57

Notas:

53.1. Neste estudo, a concorrência de operações é medida pelo número médio de instruções emitidas por ciclo(1/CPI). Todas as instruções têm latência de 1 ciclo.

53.2. Os programas fpppp, doduc e tomcatv são programas científicos, que fazem uso significativo de dados emvírgula flutuante. Os restantes utilizam apenas aritmética inteira.

53.3. Os programas científicos apresentam maior quantidade de paralelismo, como seria de esperar.

53.4. Nestas simulações, cada instrução é emitida o mais cedo que as dependências de dados permitam. Comotodos os saltos são preditos sem erros, tal pode implicar grande “movimentação” das instruções.

53

Page 53: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

Efeito da dimensão da janela

Janela: n.º de instruções examinadas simultaneamente. Nos estudos subsequentes assume-se: janela de 2K /64-issue.

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 54 / 57

Notas:

54.1. Em cada ciclo, um processador perfeito deve:

1. Procurar arbitrariamente longe no futuro todas as instruções que possam ser emitidas 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 as instruções a emitir neste ciclo e

renomear os respectivos operandos;4. Determinar se existem dependência de dados (verdadeiras) via memória e tratá-las apropriadamente.

Para além disso, deve ter suficientes unidades funcionais para permitir a emissão de todas as instruçõesprontas.

54.2. A tarefa de verificar se existem dependências de dados entre n instruções, cada uma com dois operandos,requer (n − n) comparações. Por exemplo, detectar as dependências entre 2000 instruções requer poucomenos de 4 milhões de comparações. Por outras palavras, uma janela de instruções de 2000 requereria umprocessador capaz de fazer 4 milhões de comparações por ciclo. Processadores do início do século XXI têmjanelas cujo tamanho varia entre 64 e 128 instruções.

54.3. O efeito de considerar uma janela de instruções finita é claramente mostrado na figura: o paralelismodisponível desce significativamente.

54

Page 54: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

Efeito da predição “realista”

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 55 / 57

Notas:

55.1. O efeito de usar mecanismos realistas de predição de saltos também é claro: descida significativa doparalelismo (menos de 20 instruções emitidas por ciclo, em média).

55.2. Predição estática: A predição é baseada no perfil de execução do programa. Depois de analisado um perfil daexecução do programa, o preditor (um programa) decide, para cada instrução de salto, se esta deve serpredita 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 indicar qual o sentido da predição.)Trata-se de uma predição estática, no sentido em que é feita off-line.

55

Page 55: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

Efeito de um número finito de registos em RR

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 56 / 57

Notas:

56.1. A figura mostra o efeito de se dispor de um número finito de registos adicionais, para além dos especificadospela arquitectura do conjunto de instruções.

56.2. Registos de VF e para dados inteiros são aumentados do mesmo número. Por exemplo, os valores para aabcissa 32 correspondem a utilização adicional de 32 registo de VF e de 32 registos para dados inteiros.

56.3. Em 2001, o processador Alpha 21264 era aquele que mais registos adicionais tinha: 41.

56.4. Os resultados mostram que as dependências de nome (que resultam em conflitos WAR e WAW) podem limitarsignificativamente o paralelismo disponível. De facto,observa-se empiricamente que o impacto relativodestas dependências aumenta com o paralelismo disponível.

56

Page 56: Execução concorrente de instruçõesjcf/ensino/disciplinas/mieic/... · 5.4.Implementações da arquitectura IA-32, uma arquitectura CISC, convertem internamente as instruções

Limitações de concorrência a nível de instruções

Características de alguns processadores comerciais

João Canas Ferreira (FEUP/DEEC) ILP 2007-10-29 57 / 57

Notas:

57.1. Dados representativos de processadores comerciais em 2002.

57.2. Notar os diferentes tipos de restrições à emissão conjunta de instruções (terceira coluna a contar da direita).

57