39
Execução concorrente de instruções: Pipelines João Canas Ferreira Novembro de 2006 Contém figuras de “Computer Architecture: A Quantitative Approach”, J. Hennessey & D. Patterson, 3ª. ed., MKP 2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 1/40 Assuntos 1 Execução concorrente de instruções Conceito e finalidade Dependências entre instruções 2 Fundamentos da operação de pipelines O que são pipelines Pipeline de 5 andares 3 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 4 Tratamento de instruções complexas 2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 2/40

Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

  • Upload
    hadien

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções: Pipelines

João Canas Ferreira

Novembro de 2006

Contém figuras de “Computer Architecture: A Quantitative Approach”, J. Hennessey & D. Patterson, 3ª. ed., MKP

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 1/40

Assuntos

1 Execução concorrente de instruçõesConceito e finalidadeDependências entre instruções

2 Fundamentos da operação de pipelinesO que são pipelinesPipeline de 5 andares

3 Resolução de conflitosConflitos estruturaisConflitos de dadosConflitos de controlo

4 Tratamento de instruções complexas

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 2/40

Page 2: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Conceito e finalidade

O modelo sequencial de computação

No modelo sequencial de computação, a execução de um programaprocessa-se do seguinte modo:

1. O CPU obtém uma instrução de memória.

2. A operação é efectuada.

3. É determinado o endereço da próxima instrução. Repetir a partir de 1.

Os efeitos observáveis da execução incluem a alteração de registos ouposições de memória, a alteração de flags, geração de excepções, etc.

Numa implementação que corresponda directamente ao modelo apenas sepode aumentar o desempenho tornando a execução da operação mais rápida.

Para ultrapassar esse limite é preciso executar instruções parcial outotalmente em simultâneo.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 3/40

Notas:

3.1. O modelo sequencial permite atribuir de uma forma simples um “significadooperacional” a um programa. Tem a grande vantagem e ser relativamente próximode uma possível implementação em hardware (com a unidade de controloimplementada por uma máquina de estados) e do modelo formal de máquina deTuring. Tem a desvantagem de impor uma ordem na execução de instruções cujanecessidade não decorre logicamente do algoritmo a implementar.

3.2. No passo 3, a determinação da próxima instrução a executar é feita geralmente deforma implícita: trata-se da instrução que reside na posição a seguir à dainstrução executada antes. Apenas as instruções de controlo de fluxo indicamexplicitamente a origem da próxima instrução (o “alvo” do salto).

3.3. São concebíveis conjuntos de instruções em que cada instrução especifique oendereço da seguinte (i.e., cada instrução é uma instrução de controlo de fluxo).Muitos esquemas de microcódigo usam uma arquitectura desse tipo.

3

Page 3: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Conceito e finalidade

Execução concorrenteConcorrência parcial: A execução de uma instrução é dividida em fases. Nummesmo instante, diferentes instruções podem estar em diferentes fases dasua execução.Problema: Dado um programa, identificar que instruções podem serexecutadas concorrentemente, sem alterar os efeitos do programa.Efeitos do programa: Sequência de alterações visíveis do estado da memóriae do processador.Existem muitas técnicas para detectar e aproveitar o paralelismo entreinstruções (i.e. a capacidade de executar instruções concorrentemente). Essatécnicas caem em duas categorias gerais:

1. técnicas dinâmicas — o processador detecta o paralelismo durante aexecução do programa (Pentium III e 4, PowerPC G4);

2. técnicas estáticas — o paralelismo é detectado antes da execução pelocompilador (IA-64, sistemas embutidos).

Não se trata de uma divisão estanque; algumas técnicas podem seradoptadas nos dois domínios.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 4/40

Notas:

4.1. As técnicas estáticas obrigam à recompilação dos programas para cada modelodiferente do compilador, mesmo que o conjunto de instrução não mude. Quando acompatibilidade binária é importante, apenas as técnicas dinâmicas pode serusadas. Excepção: Pode ser possível produzir um “tradutor binário” que converteum programa em binário de um modelo para o outro, refazendo as optimizaçõesnecessárias. Consultar, por exemplo,http://www.research.compaq.com/wrl/projects/om/om.html ou http://www.experimentalstuff.com/Technologies/Walkabout/index.html.

4.2. A utilização de técnicas dinâmicas não exclui o emprego das outras. Considere-seo caso dos processadores da Intel que implementam a arquitectura IA-32. Acompatibilidade binária entre modelos é garantida, mas a recompilação de umprograma pode permitir a geração de código mais eficiente para um modeloparticular (mas igualmente correcto para qualquer modelo).

4

Page 4: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Conceito e finalidade

Aspectos básicos

Û O quantidade de paralelismo existente num bloco básico é reduzida:Blocos básicos têm tipicamente entre 5 e 7 instruções em média (MIPS).

Û Paralelismo simples de identificar: loop-level parallelism

Paralelismo entre iterações de um ciclo.

for (i=1; i <= 1000; i=i+1)x[i] = x[i] + y[i];

Todas as iterações do ciclo podem ser executadas concorrentemente.Cada iteração apresenta reduzido paralelismo.

Duas questões importantes:Û Que propriedades dos programas e dos processadores limitam a quantidadede paralelismo que pode ser aproveitado?

Û O mapeamento da estrutura do programa na estrutura do processador écrítico.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 5/40

Notas:

5.1. Definição de bloco básico: bloco sequencial de instruções sem saltos no seuinterior e com apenas um ponto de entrada e um ponto de saída.

5.2. Para ser efectivo, o aproveitamento da concorrência entre instruções deveultrapassar o âmbito do bloco básico. Por outras palavras, a identificação deinstruções que podem ser total ou parcialmente executadas simultaneamente nãodeve ser limitada pelos saltos condicionais (nem incondicionais).

5.3. Para identificar instruções potencialmente concorrentes é preciso determinar asrelações lógicas entre todas as instruções. A relação lógica de precedência entreinstruções deve ser sempre preservada para garantir a execução correcta dosprogramas.

5.4. A forma como a execução de instruções é organizada internamente tem um grandeimpacto sobre a eficiência global. Inversamente, a forma como o programa éadaptado à organização pode aumentar ou diminuir drasticamente a capacidadedo hardware para detectar instruções potencialmente concorrentes, e,consequentemente, pode ter uma grande influência sobre o desempenho.

5

Page 5: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

O conceito de dependência entre instruções

Duas instruções independentes podem ser executadas em simultâneosem conflitos, desde que existam recursos suficientes.Quando existe uma relação de dependência entre duas instruções, estesdevem ser executadas em série (talvez com sobreposição parcial).

dependências de dados:dependências verdadeiras e dependências de nomes.

dependências de controlo

Um conflito ocorre sempre que existe uma dependência entre instruçõessuficientemente próximas para que a sobreposição ou re-ordenaçãomodifique a ordem de acesso ao operando envolvido na dependência.

A satisfação das dependências garante a manutenção da ordem do programa ,i.e., garante que as alterações de estado (observáveis) são as especificadaspelo modelo sequencial de execução.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 6/40

Notas:

6.1. O conceito de dependência pretende expressar formalmente a relação deprecedência entre duas instruções.

6.2. Instruções dependentes não podem executar de forma totalmente concorrentecom as instruções de que dependem. Isto não implica que uma execuçãoparcialmente concorrente seja impossível, como no caso de pipelines.

6.3. Um conflito ocorre sempre que a execução (parcialmente) concorrente deinstruções leva à violação de uma dependência. Se um conflito ocorre ou não(para uma dada dependência) depende da organização interna do CPU. De ummodo geral, pretende-se minimizar a ocorrência de conflitos.

6.4. Um conflito pode ser sempre evitado se a execução de instruções retomar o modode funcionamento completamente sequencial. Ou seja, quando ocorre um conflitoé sempre possível resolvê-lo atrasando a execução das instruções dependentes.Assim garante-se para cada instrução que aquelas de que depende já foramcertamente executadas.

6

Page 6: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Dependências de dadosA instrução j depende da instrução i (j is data-dependent on i) se ocorreruma das duas situações seguintes:

1. a instrução i produz um resultado que pode ser usado pela instrução j;

2. a instrução j depende da instrução k, que, por sua vez, depende dainstrução i.

A cadeia de dependências pode englobar o programa completo.

Exemplo com 3 dependências:

Loop:L.D F0 , 0(R1) ; F0 <== elemento do vectorDADD F4 , F0 , F2 ; somar escalar em F2S.D F4 , 0(R1) ; guardar o resultadoDADDUI R1 , R1 , #-8 ; decr. apontador 8 bytesBNE R1 , R2, Loop ; saltar se R1 != R2

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 7/40

Notas:

7.1. Num processador com capacidade para executar concorrentemente váriasinstruções é geralmente necessário detectar um conflito para o evitar. A detecçãoé feita por um circuito designado por pipeline interlock.

7.2. Alguns processadores não têm circuitos detectores de conflitos. Nesse caso, é ocompilador que fica encarregado de gerar código sem conflitos, se necessáriointroduzindo instruções nop (no operation) no programa. A programação manualem assembly é naturalmente mais complicada nestes casos.

7

Page 7: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Características das dependências de dados

A presença de uma dependência de dados numa sequência de instruçõesreflecte uma dependência no programa original: dependências sãopropriedades dos programas.

O facto de uma dependência resultar na detecção de um conflito e/oude causar um protelamento são propriedades da organização da pipeline.

Uma dependência:1. indica a possibilidade de existência de um conflito;2. determina a ordem de cálculo;3. estabelece um limite superior para a quantidade de paralelismo que

pode ser aproveitado.

Fluxo de dados: (i) por registos [e flags]; (ii) por memória.

Soluções:1. manter a dependência, mas evitar o conflito;2. eliminar a dependência por transformação do código.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 8/40

Notas:

8.1. Dependências causadas por transferências de informação via memória podem serdifíceis de detectar. Por exemplo, as instruções LD R1, 100(R4) eLD R1, 64(R6) podem designar a mesma posição de memória (por exemplo, seR4=0 e R6=36). Neste caso, diz-se que os endereços efectivos são iguais.

8.2. O endereço efectivo de memória usapo por uma instrução load/store também podevariar durante a execução do programa: basta que o conteúdo do registoassociado mude. Portanto, para efeitos de detecção de conflitos, não bastaanalisar os códigos das instruções, é necessário ter em conta também o estadodos registos.

8.3. Quando não é possível garantir a ausência de conflitos, é necessário assumir queeles podem existir, caso contrário, não seria possível garantir a execução correctado programa.

8

Page 8: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Dependências de nome

Uma dependência de nome ocorre quando duas instruções usam o mesmoregisto ou posição de memória (um «nome»), mas sem que haja um fluxo dedados associado com esse nome. Existem dois tipos de dependências denome envolvendo uma instrução i que precede a instrução j num programa:

Uma antidependência entre i e j ocorre quando a instrução j escreve numregisto ou posição de memória lido pela instrução i.

Uma dependência de saída ocorre quando ambas as instruções escrevemno mesmo registo ou posição de memória. A ordem das instruções deveser preservada para garantir que o valor final corresponde a j.

Como não se trata de verdadeiras dependências, as instruções i e j podem serexecutadas simultaneamente (ou por ordem diferente) desde que o «nome»usado seja mudado. Esta operação é mais fácil de executar (pelo compiladorou processador) para registos: register renaming.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 9/40

Notas:

9.1. Dependências de nome ocorrem, por exemplo, quando um registo (associado auma variável) é reutilizado para guardar o valor de outra variável.

9.2. Em geral, dependências de nome envolvendo registos podem ser evitadas seexistirem registos temporários que permitam guardar todos os valores. Todas asinstruções que referem o «nome» original devem ser modificadas dinamicamentepara usarem os dados dos registos temporários apropriados.

9

Page 9: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Conflitos de dados

Conflitos de dados possíveis entre duas instruções i e j (que ocorrem noprograma por esta ordem):

RAW (read after write) — j tenta ler uma fonte antes que i aí coloqueum valor. Corresponde a uma verdadeira dependência de dados.

WAW (write after write) — j tenta escrever num local antes de i.Corresponde a uma dependência de saída. Ocorre em pipelines queefectuam escritas em mais que um andar ou que permitem queinstruções continuem mesmo quando uma instrução anterior é protelada.

WAR (write after read) — j tenta escrever num local antes de este serlido por i. Corresponde a uma antidependência. (Não ocorre na maioriadas pipelines com emissão por ordem de instruções.)

RAR (read after read) não constitui um conflito.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 10/40

Notas:

10.1. O nome dos conflitos é dado de acordo com a ordem do programa que deve serpreservada.

10.2. Conflitos do tipo WAR tendem a surgir apenas em processadores que emiteminstruções fora de ordem (emitir uma instrução = iniciar a sua execução) ou quesuportam conjuntos heterogéneos de instruções em que algumas instruçõesalteram dados no início da execução e outras lêem dados nas fases finais daexecução. Muitos processadores nunca podem ter conflitos deste tipo.

10.3. Conflitos do tipo WAW também não correm nas organizações concorrentes maissimples. Por exemplo, a pipeline básica analisada mais à frente não tem destesconflitos.

10

Page 10: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Dependências de controlo

Uma dependência de controlo determina a ordem de uma instrução i face auma instrução de salto condicional. Todas as instruções de um programa,excepto as do primeiro bloco básico, dependem de algum conjunto de saltoscondicionais.Dependências de controlo impõem duas restrições:

Uma instrução dependente de um salto não pode ser colocada antes do salto, porque jánão seria controlada pelo instrução de salto condicional.

Uma instrução que não está dependente de um salto não pode ser movida para depoisde um salto, porque passaria a ser controlada por esse salto.

No caso mais simples, dependências de controlo são preservadas porque1. as instruções são executadas pela ordem em que surgem no programa;2. o controlo de conflitos garante que uma instrução não é executada antes de se conhecer o

destino do salto.

Respeitar as dependências de controlo não é um fim em si; o que se quergarantir é o fluxo de dados e o comportamento face a excepções.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 11/40

Notas:

11.1. Exemplo de uma dependência de controlo simples:

if cond1 {instr1;}if cond2 {instr2;}

A instrução instr1 apresenta uma dependência de controlo em relação a cond1 einstr2 tem uma dependência de controlo de cond2, mas não de cond1.

11

Page 11: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Comportamento correcto na presença de excepçõesÛ Comportamento correcto na presença de excepções significa que qualqueralteração da ordem de execução das instruções não modifica a sequência emque as excepção são levantadas no programa.Û Frequentemente usa-se uma condição mais relaxada: a nova ordem nãodeve causar a ocorrência de novas excepções no programa.

DADDU R2 , R3, R4BEQZ R2 , L1 ; saltar para L1 se R2=0LW R1, 0( R2 )...

L1: ...

Existe uma dependência de dados envolvendo R2.É possível trocar as duas últimas instruções? Não existe nenhuma dedependência de dados entre elas. Mas a instrução LW pode causar umaexcepção no acesso a memória.Uma técnica designada por especulação permite ultrapassar este problema.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 12/40

Notas:

12.1. A dependência de dados envolvendo R2 impõe que a primeira instrução sejaexecutada em primeiro lugar, mas não impõe uma ordem relativa entre as outrasduas; essa ordem é imposta pela dependência de controlo de LW em relação aBEQZ. Não existe uma dependência de dados entre estas duas instruções.

12.2. Como é que a instrução LW pode causar uma excepção? Por exemplo, acedendo auma zona de memória que não pertença ao seu processo. Assim, poderia ocorreruma excepção que não surgiria se a ordem das instruções não fosse alterada.

12.3. As técnicas de especulação devem ser capazes de anular o lançamento daexcepção caso o salto condicional seja efectivamente tomado.

12.4. Para que a troca de posição das instruções seja válida é preciso que R1 não sejausado no código a seguir a R1 (ou, mais precisamente, que exista uma escrita emR1 antes de qualquer leitura desse registo).

12

Page 12: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Execução concorrente de instruções Dependências entre instruções

Preservação do fluxo de dados

Fluxo de dados: fluxo de valores entre as instruções que os produzem e asque os consomem. As instruções de salto condicional fazem com que o fluxoseja dinâmico, i.e., o valor de um dado registo/posição de memória podeprovir de diferentes origens.

DADDU R1, R2, R3BEQZ R4, LDSUBU R1, R5, R6

L: ...OR R7, R1, R8

DSUBU não pode ser colocada antes do salto por alterar o fluxo de dados deOR. O valor de R1 depende do salto BEQZ.Por vezes, é possível determinar que o desrespeito de uma dependência decontrolo não afecta o fluxo ou a geração de excepções. Esta tarefa égeralmente efectuada pelos compiladores.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 13/40

Notas:

13.1. Exemplo de uma situação em que uma dependência de controlo pode serdesrespeitada:

DADDU R1, R2, R3BEQZ R12, skipnextDSUBU R4, R5, R6 ; pode ser "adiantada"DADDU R5, R4, R9

skipnext: OR R7, R8, R9 ; R4 não é usado mais

Suponhamos que o registo R4 não era usado no bloco de código colocado após aetiqueta skipnext. Então passar a instrução DSUBU para antes do salto nãoalteraria os efeitos do programa (o item de dados em R4 está “morto”).

13.2. Determinar se os dados guardados num registo estão “vivos” (vão ser aindausados) ou “mortos” (não são mais usados) é uma das tarefas que geralmenteincumbe ao compilador (para saber quando pode reutilizar registos).

13

Page 13: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines O que são pipelines

Pipelines

Pipelining é uma técnica de implementação em que a execução demúltiplas instruções é feita concorrentemente.Analogia: Linha de montagem.

A B C D

andar 1 andar 2 andar 3 andar 4

Cada andar trabalha concorrentementecom os outros, embora sobre uma “parte”diferente da instrução.

ciclo 1 2 3 4 5 6 · · ·

inst 1 A B C Dinst 2 A B C Dinst 3 A B C Dinst 4 A B C · · ·inst 5 A B · · ·inst 6 A · · ·

débito: nº de instruções que são completadas (i.e. abando-nam a pipeline) por unidade de tempo.ciclo do processador: tempo necessário para “mover” a ins-trução através de 1 andar.O ciclo do processador é determinado pelo andar mais lento.Ideal: Equilibrar o tempo de todos os andares.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 14/40

Notas:

14.1. Em cada instante podem estar até 4 instruções em execução (neste exemplo); emcada ciclo (a partir do 4) é terminada uma instrução.

14.2. Como os andares estão interligados, é necessário que todos estejam prontos aomesmo tempo: esse tempo constitui o período do ciclo de relógio do processador.

14.3. Porque os andares devem prosseguir todos ao mesmo tempo, a duração do ciclo édeterminado pelo tempo necessário para que o andar mais lento execute a suatarefa.

14.4. Se o tempo de processamento de todos os andares for idêntico, então o tempomédio por operação é (em condições ideais)

tempo por instrução do CPU sem pipelinenúmero de andares

14.5. Pipelining é tipicamente invisível para o programador (em CPUS com interlocks).

14

Page 14: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines Pipeline de 5 andares

Um conjunto de instruções RISC básicoPara efeitos de análise das questões que surgem em pipelines, usaremos umsubconjunto do MIPS64 (ver tb. a página WWW da disciplina).Û Todas as operações sobre dados aplicam-se a registos de 64 bits e

modificam todo o registo;Û Apenas instruções load/store afectam a memória; podem operar sobre

parte de um registo (por exemplo, afectando 32 bits de 64);Û As instruções têm todas o mesmo comprimento e os formatos diferentes

são poucos.Û Instruções da ALU: Tomam dois registos, ou um registo e um valor

imediato de 16 bits, como operandos e guardam o resultado num terceiroregisto.

Û Instruções load/store: Tomam um registo (a base) e um deslocamento(de 16 bits) como operandos. Um segundo registo é o destino/origem datransferência.

Û Saltos condicionais e incondicionais: Os saltos condicionais baseiam-seno resultado da comparação entre dois registos.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 15/40

Notas:

15.1. As instruções indicadas constituem um subconjunto de MIPS64. Esta arquitecturade conjunto de instruções será analisada com mais pormenor num trabalhoprático.

15.2. Os saltos condicionais são relativos e têm um deslocamento de 16 bits (sãointerpretados como números com sinal).

15.3. Todas as instruções têm todas o mesmo tamanho: 32 bits.

15

Page 15: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines Pipeline de 5 andares

Implementação multi-ciclo sem pipelining

1. IF (instruction fetch): Usa o endereço contido no contador de programa(PC) para ir buscar a instrução actual a memória. Actualiza PC: PC←PC+4.

2. ID (instruction decode/register fetch): Descodifica a instrução e lê osregistos fonte. Compara registos. Efectua extensão do deslocamento.Calcula endereço de destino e actualiza PC (se saltar).

3. EX (execution/effective address): Uma de 3 operações: (i) calculaendereço efectivo para acesso a memória; (ii) a ALU executa a operaçãosobre os registos; (iii) a ALU executa operação sobre registo e valorimediato.

4. MEM (memory access): Para instruções load/store: transferir dados.5. WB (write-back): Instrução de ALU ou load: guardar dados em registo.Saltos: 2 ciclos, store: 4 ciclos, outras: 5 ciclos. Globalmente, CPI=4.54 se assumirmos

frequências de 12%, 10%, e 78%, respectivamente.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 16/40

Notas:

16.1. Este esquema apresenta uma divisão possível das etapas pelas quais passa aexecução de cada instrução. Trata-se de um passo preliminar, com vista asimplificar a descrição do funcionamento da pipeline básica.

16.2. Nem todas as instruções necessitam de todas as etapas. As instruções de saltoterminam na 2ª etapa. As instruções de escrita em memória terminam na 4ªetapa.

16.3. As instruções de ALU não fazem nada na etapa 4, terminando na etapa 5. Seriapossível antecipar a última tarefa da etapa 5 para a etapa 5. Contudo, isso já nãoserá possível na implementação em pipeline, pelo que também não é feito aqui.

16

Page 16: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines Pipeline de 5 andares

Pipeline de cinco andares

O processamento pode ser implementado com pipeline de 5 andares (aliás adivisão de tarefas da transparência anterior já foi feita a pensar nisso).

Ciclo de processador

Instrução 1 2 3 4 5 6 7 8 9

i IF ID EX MEM WBi + 1 IF ID EX MEM WBi + 2 IF ID EX MEM WBi + 3 IF ID EX MEM WBi + 4 IF ID EX MEM WB

Restrição: Não é possível usar os mesmos recursos em duas tarefas diferentesno mesmo ciclo! Memórias cache separadas para dados e instruções evitamconflitos entre IF e MEM.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 17/40

Notas:

17.1. A fase IF tem um acesso implícito a memória, pelo que poderia interferir cominstruções na fase MEM. Para evitar um conflito, vamos assumir que memória deinstruções e memória de dados são diferentes. Embora tal não correspondaestritamente à realidade, a utilização de caches separadas para dados e instruçõesfaz com que seja uma aproximação razoável.

17.2. Para já assumimos que o acesso a memória pode ser feito apenas num ciclo derelógio do processador. Trata-se de uma suposição menos realista que a anterior.Veremos mais tarde como remover esta restrição e de que maneira é afectado odesempenho global.

17.3. As instruções de salto só usam dois andares: IF e ID.

17.4. As instruções de escrita em memória (store) não têm WB.

17.5. Estamos a assumir que as operações executadas em EX apenas necessitam de umciclo de relógio. Isso não se aplica a operações como a divisão nem a operaçõescom vírgula flutuante.

17

Page 17: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines Pipeline de 5 andares

Múltiplos percursos de dados desfasados no tempo

O banco de registos tem de suportar 2 leituras e 1 escrita por ciclo.

Problema: Salto condicional só modifica PC no andar ID.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 18/40

Notas:

18.1. Implicitamente estamos a assumir que existem recursos para executarconcorrentemente as várias operações. Por exemplo, o cálculo do novo valor dePC no caso de um salto não pode ser feito pela ALU (que estará ocupada com oprocessamento de outra instrução).

18.2. O banco de registos pode tornar-se facilmente num factor de contenção. Vamosassumir que todas as leituras são feitas no fim do ciclo de relógio (por instruçõesna fase ID) e que a escrita é feita no início do ciclo de relógio (pela instrução quepassar para WB).

período de relógio

leituraescrita

18.3. Como estamos assumir uma implementação relativamente agressiva dos saltoscondicionais, supomos que o PC é modificado no segundo ciclo da instrução (ID).Mesmo assim, os saltos (condicionais ou incondicionais) vão introduzir umconflito de controlo.

18

Page 18: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines Pipeline de 5 andares

Inserção de registos entre andares

Evitam a interferência entre andares e preservam valores intermédios.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 19/40

Notas:

19.1. Sem cuidados especiais, a actividade “lógica” não pode ser limitada a um certoandar (i.e., os efeitos de qualquer mudança propagar-se-iam mais ou menosrapidamente por todo o circuito). Para evitar essa interferência, todos os ossinais que saem de um andar são “registados”, ou seja, os seus valores sãoguardados num elemento de memória (registo) cujo conteúdo apenas é alteradono flanco ascendente do relógio.

19.2. Muitos dos registo já seriam necessários numa implementação multi-ciclo parapreservar valores entre os diferentes ciclos.

19.3. Os registos também serão aproveitados para evitar alguns conflitos provocadospor dependências de dados (cf. forwarding).

19

Page 19: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Fundamentos da operação de pipelines Pipeline de 5 andares

Desempenho de pipelines (1ª abordagem)Pipeline idealmente equilibrada: tinst_p = tinst

Nandares

Na prática, o tempo de execução de cada instrução aumentaligeiramente devido a overhead de controlo.

O programa é mais rápido embora nenhuma instrução seja mais rápida!

Speedup: Sp = tinst/tinst_p

Na prática, certa instruções podem necessitar de ciclos de protelamentoem algumas circunstâncias. Seja nprot o número médio de ciclos deprotelamento por instrução. Então:

CPIp = CPIideal + nprot = 1 + nprot

Assumindo que a frequência de relógio é a mesma nos dois casos:

Sp =CPI

1 + nprot

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 20/40

Notas:

20.1. A melhoria de desempenho proporcionada por pipelining é directamentedependente do número médio de ciclos de protelamento. Torna-se, portanto,imperioso reduzir nprot ao mínimo. Como os saltos são, em muitas organizações deCPU, a principal fonte de ciclos de protelamento, torna-se vital reduzir a suafrequência ou o seu impacto.

20.2. A expressão final para Sp assume que a frequência de relógio de umaimplementação pipelined é igual à de uma implementação multi-ciclo. Na prática,será ligeiramente maior (≈ 10%). O número de instruções executadas énaturalmente o mesmo.

20

Page 20: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos

Alguns problemas na utilização de pipelines

Existem situações (hazards) em que uma instrução não pode ser executadadurante o ciclo apropriado. Existem três tipos de conflitos:

estruturais É um conflito de recursos: o hardware não suporta a execuçãoconcorrente de todas as combinações possíveis de tarefas;

de dados Este conflito surge quando uma instrução depende dosresultados de uma instrução anterior de uma forma que afectao resultado obtido pela linha de processamento.

de controlo este conflito resulta de saltos condicionais ou de outrasinstruções que alteram o PC.

Conflitos reduzem o desempenho ideal da pipeline.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 21/40

Notas:

21.1. Conflitos de dados e de controlo são devidos, respectivamente, a dependências dedados e de controlo. Conflitos estruturais resultam da inexistência de recursossuficientes para executar algumas operações concorrentemente.

21

Page 21: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos

Protelamento de operaçõesConflitos podem obrigar a protelar (stall) o processamento de instruções.Habitualmente quando uma instrução é protelada:

1. todas as instruções emitidas posteriormente também são proteladas;

2. todas as instruções emitidas anteriormente devem prosseguir (para“limpar” a situação de conflito).

..Resolução.de.conflitos Consequência: durante o protelamento não sãoprocessadas novas instruções.

Pode não ser economicamente proveitoso eliminar conflitos que ocorramraramente, porque os protelamentos associados são raros (número médio deciclos de protelamento causados por esses conflitos é baixo).

Nota: Existem esquemas em que as instruções emitidas posteriormentepodem “passar à frente” da instrução protelada (se não violarem nenhumadependência).

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 22/40

Notas:

22.1. O protelamento de operação é a solução “universal”. Contudo, é sempre precisoimplementar circuitos de detecção de conflitos (pipeline interlocks).

22

Page 22: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos estruturais

Conflitos estruturais

A execução concorrente de instruções em pipeline pode requerer que asunidades funcionais sejam também pipelined e que outros recursos sejamduplicados para acomodar todas as combinações possíveis de instruções. Oprocessamento pode exibir conflitos estruturais quando tal não acontece.

Exemplo: processador com uma memória cache partilhada paradados/instruções (memória comum de dados e instruções).

Ciclo de processador

Instrução 1 2 3 4 5 6 7 8 9 10

load IF ID EX MEM WBi + 1 IF ID EX MEM WBi + 2 IF ID EX MEM WBi + 3 stall IF ID EX MEM WBi + 4 IF ID EX MEM WBi + 5 IF ID EX MEMi + 6 IF ID EX

Supõe-se que as instruções i + 1, i + 2, etc. não acedem a memória.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 23/40

Notas:

23.1. Esta situação não ocorre na organização de base que estamos a analisar, porqueassumimos a existência de caches separadas de dados e instruções.

23

Page 23: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos estruturais

Ilustração de um conflito estrutural

Figura ilustra o confito estrutural que ocorre se o processador não protelar ainstrução 3.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 24/40

Notas:

24.1. Notar que não existe nenhum conflito estrutural associado ao banco de registos.Por exemplo, no ciclo 5, ocorrem uma escrita no banco de registos (associado àinstrução load) e duas leituras (associadas à instrução 3). Estas operaçõesocorrem em partes diferentes do ciclo, conforme indicado graficamente pelotracejado: a escrita acontece no início do ciclo, as leituras no fim.

24

Page 24: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de dados

Conflitos de dados

Um grande efeito de pipelining é modificar a temporização relativa dasoperações, o que pode introduzir conflitos.

Conflitos de dados ocorrem quando a ordem de leitura/escrita de operandos émodificada (por referência à versão sem pipelining).

Exemplo:

DADD R1, R2, R3DSUB R4, R1, R5 ; ADD altera R1 em WB, mas DSUB requer valor em ID

AND R6, R1, R7 ; R1 correcto fim do ciclo 5; AND lê registos no 4

OR R8, R1, R9 ; OR não tem conflitos; leituras na 2ª parte do ciclo

XOR R10, R1, R11 ; não tem conflitos

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 25/40

Notas:

25.1. O registos R1 é alterado pela primeira instrução. Como o resultado da instruçãosó atinge os registos no quinto ciclo, a instrução DSUB produz um conflito aoquerer usar o novo valor de R1 no quarto ciclo (a sua etapa EX), já que issoimplica a leitura dos registos no fim do ciclo anterior (o ciclo 3).

25.2. A instrução AND também produz um conflito: precisa do novo valor logo no iníciodo quinto ciclo (a sua etapa EX), e portanto, a leitura dos registos foi feita nociclo anterior, quando o banco de registos ainda tinha o valor antigo de R1.

25.3. A instrução OR já não provoca conflito.

25.4. Este tipo de conflito entre instruções da ALU é muito frequente e introduz 2ciclos de protelamento, o que é muito. Consequentemente, este tipo de conflitodeve necessariamente ser resolvido.

25.5. Notar que o conflito surge porque a alteração do banco de registos é efectuada 2ciclos depois do cálculo do resultado. O resultado propriamente dito já foicalculado (no fim do ciclo 3).

25

Page 25: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de dados

Forwarding pode resolver conflitos de dados

O resultado da ALU é realimentado para a sua entrada. O banco de registos(leitura e escrita em partes diferentes do ciclo) também serve para fazerforwarding. A sequência analisada executa sem protelamento.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 26/40

Notas:

26.1. O novo valor de R1 é calculado antes de ser necessário para as operaçõesseguintes. Apenas o banco de registos não é actualizado suficientementedepressa.

26.2. Para resolver o conflito, basta “agulhar” o futuro valor de R1 do registotemporário onde se encontra para a entrada do andar que necessita do seu valor.Locais de origem e destino dos dados estão indicados a tracejado nafigura.Sempre que o destino estiver à frente da origem, deve proceder-se aoagulhamento necessário.

26.3. Para além dos circuitos de agulhamento (basicamente multiplexadores), o CPUdeve dispor também de circuitos de detecção dos conflitos.

26.4. A utilização de forwarding é indispensável para um bom desempenho.

26

Page 26: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de dados

Protelamento pode ser inevitável

LD R1, 0(R2) ; dados prontos apenas no fim do ciclo 4DSUB R4, R1, R5 ; necessita de dados no início de 4AND R6, R1, R7OR R8, R1, R9

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 27/40

Notas:

27.1. O esquema de forwarding não resolve todos os problemas. Por exemplo, o conflitoque ocorre quando uma instrução usa um valor lido de memória pela instruçãoimediatamente precedente não pode ser resolvido desta maneira.

27.2. De facto, o valor ainda não está no CPU no instante em que se pretenderiautilizá-lo. Isso é indicado pelo segmento a tracejado em que o destino (o “lugar”onde o valor é necessário para o restante processamento) está “atrás” da origem.

27

Page 27: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de dados

Protelar resolve o problema. . .

Ciclo de processador

Instrução 1 2 3 4 5 6 7 8 9

LD R1,0(R2) IF ID EX MEM WB

DSUB R4, R1, R5 IF ID EX MEM WBAND R6, R1, R7 IF ID EX MEM WBOR R8, R1, R9 IF ID EX MEM WB

LD R1,0(R2) IF ID EX MEM WBDSUB R4, R1, R5 IF ID stall EX MEM WBAND R6, R1, R7 IF stall ID EX MEM WBOR R8, R1, R9 stall IF ID EX MEM WB

A sequência de etapas de processamento da tabela inferior mostra como oprotelamento resolve o problema de ter os dados correctos em R1.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 28/40

Notas:

28.1. Notar que o processamento de todas as instruções subsequentes à que provoca oconflito também são proteladas.

28.2. A obtenção de instruções (etapa IF) também é protelada.

28

Page 28: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de controlo

Conflitos de controlo

Saltos condicionais causam conflitos de controlo porque podem alterar ounão o PC (quando o fazem é no fim de ID).

O que fazer enquanto não é possível determinar se o salto é realmente feito(ou tomado) ? Nada. . . e repetir quando já existir a informação.

Ciclo de processador

Instrução 1 2 3 4 5 6 7 8 9

salto relativo IF ID EX MEM WBsucessor IF IF ID EX MEM WBsucessor + 1 IF ID EX MEM WBsucessor + 2 IF ID EX MEM WB

Dada a frequência de saltos relativos, estes conflitos podem levar a perdas dedesempenho na ordem dos 10%–30% !

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 29/40

Notas:

29.1. Nesta arquitectura um salto condicional demora tanto como um saltoincondicional. Em ambos os caso, o PC tem o novo valor do endereço no fim daetapa ID.

29.2. Em muitas organizações de pipeline, o salto condicional necessita de mais ciclosque o incondicional.

29.3. A instrução “sucessor” não pode entrar imediatamente na fase de descodificação.O primeiro IF (da 2ª linha) obtém a instrução do valor “regular” do PC (a instruçãoresidente em memória a seguir ao salto relativo). Este valor pode não ser ocorrecto. O segundo IF já usa o valor de PC definido no ciclo 2 (o valor correcto).

29.4. Quando o salto não é tomado, o segundo IF é desnecessário. Esse facto pode seraproveitado para reduzir o impacto do conflito de controlo.

29

Page 29: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de controlo

Alternativa: Optar por uma das alternativas

O CPU assume que o salto não é tomado e corrige a sua decisão quandodeterminar o valor da condição (se necessário).

Ciclo de processador

Instrução 1 2 3 4 5 6 7 8 9

salto não tomado IF ID EX MEM WBi + 1 IF ID EX MEM WBi + 2 IF ID EX MEM WBi + 3 IF ID EX MEM WBi + 4 IF ID EX MEM WB

salto tomado IF ID EX MEM WBi + 1 IF inact. inact. inact. inact.alvo IF ID EX MEM WBalvo + 1 IF ID EX MEM WBalvo + 2 IF ID EX MEM WB

Também se pode partir do princípio que o salto é tomado. No caso presente,isso não tem interesse. (Porquê?)

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 30/40

Notas:

30.1. Assumir que o salto é tomado obriga ainda assim a calcular a posição dainstrução seguinte (“alvo” do salto).

30.2. Quando o salto é tomado, a instrução subsequente em processamento é errada:internamente é transformado numa instrução NOP (no operation). No nosso caso,isso é simples, porque a instrução ainda não alterou o estado interno do CPU.

30

Page 30: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de controlo

Execução incondicional da instrução seguinte

Outra opção: Executar sempre a instrução colocada a seguir ao salto!

Ciclo de processador

Instrução 1 2 3 4 5 6 7 8 9

salto não tomado IF ID EX MEM WB(delay slot) i + 1 IF ID EX MEM WBi + 2 IF ID EX MEM WBi + 3 IF ID EX MEM WBi + 4 IF ID EX MEM WB

salto tomado IF ID EX MEM WB(delay slot) i + 1 IF ID EX MEM WBalvo IF ID EX MEM WBalvo + 1 IF ID EX MEM WBalvo + 2 IF ID EX MEM WB

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 31/40

Notas:

31.1. A este tipo de salto chama-se delayed btanch e a posição da instrução executadaincondicionalmente designa-se por delay slot. Algumas arquitecturas têm doisdelay slots.

31.2. Neste caso, o trabalho de encontrar uma instrução para o delay slot é deixado aocompilador ou programador em assembly.

31.3. Caso não seja possível encontrar uma instrução apropriada, coloca-se umainstrução NOP no delay slot.

31

Page 31: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de controlo

Branch delay slot: estratégias de sequenciamento

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 32/40

Notas:

32.1. A situação (a) é a melhor. As estratégias (b) e (c) são usadas quando a estratégia(a) não é possível.

32.2. A estratégia (b) requer geralmente a duplicação da instrução colocada no delayslot. Esta estratégia é boa para casos em que o salto é tomado com elevadaprobabilidade (como no caso dos ciclos).

32.3. Para que (b) e (c) sejam legais, é necessário que a execução da instrução nãoaltere o resultado do programa. Quando muito, o trabalho executado por essainstrução é desperdiçado.

32.4. No caso do exemplo (c), o registo R7 poderia conter um valor temporário quesimplesmente não é usado quando o salto é tomado. Note-se que o caso (b) ovalor final de R4 não é o mesmo; se isso for importante, a duplicação da instruçãonão pode ser feita.

32

Page 32: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Resolução de conflitos Conflitos de controlo

Impacto da arquitectura do conjunto de instruções

A arquitectura do conjunto de instruções pode introduzir factores deineficiência e dificuldades de implementação.

Instruções que que alteram o estado a “meio” da execução dificultam otratamento de excepções. Exemplos: auto-incremento em IA-32. Oprocessador necessita de ter a capacidade para reverter o estado.Instruções de cópia de strings também pertencem a esta categoria(solução: usar registos como memória de trabalho).

Alguns elementos de estado (p. ex. códigos de condição) podemdificultar o funcionamento da pipeline (p. ex. instruções que alterem osc.c. não podem ser colocadas no delay slot). Pode ser difícil determinarquando é que o código de condição é válido.

Instruções multi-ciclo introduzem grandes desequilíbrios (instruçõespodem demorar de 1 a >100 ciclos). Solução: pipeline de microcódigo(VAX8800, IA-32 depois de 1995).

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 33/40

Notas:

33.1. Na arquitectura IA-32, a utilização modos de endereçamento comauto-incremento implica a actualização de registos a meio da execução doprograma.

33.2. Durante muito tempo, partiu-se do princípio que a interacção entre a arquitecturado conjunto de instruções e a implementação era reduzida, pelo que s questõesde implementação não tinham peso na concepção dos conjuntos de instruções. Apartir dos anos 80 tornou-se claro que a dificuldade de implementar pipelines e asua ineficiência podem ser aumentadas por más escolhas a nível da ACI.

33

Page 33: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Unidades funcionais adicionais

IF ID

EXint

EXVF/int mul

EXVF soma

EXVF/nt div

MEM WB

As unidade de execução não são “pipelined”.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 34/40

Notas:

34.1. Este acetato mostra a forma mais simples de tratar operações cuja execução sejademorada. Para evitar que o ciclo de relógio tenha que ser alongado para executaressas operações, permite-se que uma instrução gaste mais que um ciclo no estadode execução. Além disso, também é conveniente dispor de unidades de execuçãoseparadas para os diferentes tipos de operações.

34.2. A abordagem geral consiste em repetir fase de execução tantas vezes quantas asnecessárias. Neste contexto, a detecção de conflitos torna-se mais complicada:uma instrução não pode passar de ID para EX (i.e., não pode ser emitida) senecessitar de uma unidade em uso (o que é fácil de detectar) ou se provocar umconflito de dados. Antes de analisar a forma como essa detecção pode ser feita, éútil generalizar a pipeline indicada acima de forma a permitir que as unidades deexecução também sejam, elas próprias, pipelined.

34

Page 34: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Latência e intervalos de repetiçãoÛ Em geral, (algumas das) unidades de execução multi-ciclo também devemser transformadas em “pipeline”.Û Também deve ser possível ter múltiplas instruções em execução paraaproveitar todos os recursos disponíveis.

latência número de ciclos entre a instrução que produz um resultado e ainstrução que a usa;

intervalo de repetição número mínimo de ciclos entre a emissão de duasinstruções de um dado tipo.

Unidade funcional Latência Intervalo

ALU (inteiros) 0 1Memória de dados 1 1Somador VF 3 1Multiplicador (VF e int.) 6 1Divisor (VF e int.) 24 25

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 35/40

Notas:

35.1. Consequência da definição de latência: A maioria das instruções “consome” osseus operandos no início do ciclo EX. Para estas instruções, a latência é igual aonúmero de andares (contados após o primeiro andar de EX) necessários paraproduzir o resultado pretendido (ver tabela do acetato).

35.2. A principal excepção à observação anterior é constituída pelas operações destore, que consome um dos seus operandos um ciclo mais tarde (a latência vemreduzida de um ciclo para o operando que representa o valor a guardar, mas nãopara o operando que especifica o endereço de memória).

35.3. Para obter uma frequência de operação maior (i.e., reduzir o ciclo de relógio) épreciso diminuir a quantidade de processamento feito em cada ciclo, o queimplica que a execução requer mais ciclos, o que por sua vez aumenta a latência.Conclusão: frequência de relógio maior implica maior latência (para uma mesmatecnologia de implementação).

35.4. Os acessos a memória usam a unidade inteira para cálculo do endereço. Acessos amemória demoram sempre o mesmo tempo, seja para dados inteiros ou de vírgulaflutuante.

35

Page 35: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Unidades com “pipeline”

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 36/40

Notas:

36.1. Esta organização (que corresponde à tabela do acetato anterior) suportamúltiplas instruções em execução simultaneamente. A unidade de divisão não épipelined (a unidade inteira também não, mas esta apenas necessita de um ciclo).

36.2. Na ausência de saltos, esta organização permite manter o débito de umainstrução por ciclo, desde que não existam conflitos de dados ou estruturais, nemsejam usadas instruções de divisão. Qualquer uma destas situação faz com que oCPI desça abaixo de 1 (o valor máximo).

36.3. A principal implicação da introdução de unidades de execução de latênciadiferente é que agora podem surgir conflitos RAW que não podem ser resolvidospor forwarding (como anteriormente). Também podem surgir conflitos WAW (quenão surgiam antes).

36.4. Podem surgir igualmente outros tipos de conflitos estruturais. Em particular,instruções de divisão podem encontrar a unidade de divisão já em uso.

36

Page 36: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Conflitos RAW

Instruções independentes:

Nota: A instrução S.D protela um ciclo extra para que a sua fase MEM não entre em conflito

com a instrução ADD.D. Este conflito é estrutural. Poderia ser resolvido com uma unidade

adicional para cálculo de endereços (um somador).

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 37/40

Notas:

37.1. A tabela superior mostra a operação da nova organização para instruçõesindependentes (logo, não surgem conflitos do tipo RAW). As etiquetas em itálicoindicam andares em que são “consumidos” operandos, enquanto as etiquetas anegrito indicam os andares que produzem dados.

37.2. Pode ocorrer um conflito estrutural no acesso ao banco de registos para escrita(fases MEM e WB), já que mais que uma instrução pode terminar a fase de execuçãono mesmo ciclo (i.e., ficar pronta a passar para o estado MEM). Por exemplo, natabela inferior a última instrução protela um ciclo adicional (ciclo 16) para nãoescrever o seu resultado ao mesmo tempo que a instrução ADD.D.

37.3. A tabela inferior mostra a ocorrência de protelamentos devido à diferença delatência entre as unidades de execução. Por exemplo, a intrução de soma tem deesperar 6 ciclos pelo resultado da multiplicação. Este atraso não pode serresolvido por forwarding, já que o resultado pretendido apenas está calculado nociclo 12.

37

Page 37: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Conflitos WAW

Û No ciclo 11, três instruções tentam escrever nos registos. (Este não é opior caso.)Û Não existe nenhum conflito estrutural irresolúvel no ciclo 10, porqueapenas a instrução L.D usa de facto a memória.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 38/40

Notas:

38.1. A tabela não mostra directamente um conflito WAW.

38.2. A tabela ilustra uma situação hipotética (i.e., que não ocorrerá com detecção deconflitos) em que três instruções passariam simultaneamente aos estados MEM eWB.Na implementação estudada, trata-se de um conflito estrutural. Contudo, esteconflito não é intrinsecamente irresolúvel, já que apenas uma instrução acede defacto a memória. Contudo, a sua resolução dependeria da possibilidade deescrever mais que um valor no banco de registos simultaneamente. Tal seria defacto possível com uma implementação mais sofisticada do banco de registos, oque presumivelmente não se justifica neste caso, já que o número de conflitosWAW é previsivelmente baixo.

38.3. Caso a instrução L.D fosse iniciada um ciclo mais cedo, existiria de facto umconflito WAW na escrita de F2.

38

Page 38: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Detecção de conflitos

Assumindo que a detecção de conflitos é feita no andar ID, três tipos deverificações são necessários.

Conflito estrutural Esperar até a unidade funcional pretendida estar livre(para divisões) e garantir o acesso ao porto de escrita dobanco de registos.

Conflito RAW Esperar até que os registos-fonte não estejam etiquetadoscomo destinos de um cálculo pendente que não estejaterminado quando o seu resultado for necessário. Estasverificações dependem do tipo de operandos envolvido.

Conflito WAW Determinar se alguma instrução em A1, . . . , A4, D, M1, . . . ,M7 tem o mesmo destino que a instrução em ID. Se esse for ocaso, protelar.

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 39/40

Notas:

39.1. Nos exemplos usados, assumir sempre que a deteção de conflitos é efectuadao noandar ID. Ou seja: o sistema de deteção de conflitos deve detectar conflitos entrea instrução em ID e qualquer instrução já em execução, i.e., a ser processada numandar posterior (mais à direita nos diagramas).

39.2. Os conflitos WAW serão raros na prática.

39

Page 39: Execução concorrente de instruções: Pipelines · Conceito e nalidade ... deve ser limitada pelos saltos condicionais ... é feita por um circuito designado por pipeline interlock

Tratamento de instruções complexas

Desempenho de vírgula flutuante

2006 — AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 40/40

Notas:

40.1. A figura mostra o número médio de ciclos de protelamento atribuídos a operaçõesde vírgula flutuante (i.e., ciclos de protelamento introduzidos quando umainstrução de VF estava no andar de ID). A figura inclui dados para uma unidadeadicional (comparação), de complexidade similar à unidade de soma.

40.2. Por exemplo, o número médio de ciclos de protelamento para somas é de 1.7ciclos (cerca de 56% da sua latência de 3 ciclos).

40.3. Como é de esperar, o número de ciclos de protelamento provocados por umainstrução é directamente proporcional à sua latência. (Já que esta determinaquantas instruções já emitidas podem estar em conflito com uma dada instrução.)

40.4. Apenas os resultados sobre os conflitos estruturais (divisão) dependem da taxa deocorrência das instruções. Os outros dependem apenas da latência das operaçõese das dependências de dados.

40.5. Os conflitos estruturais de divisão são raros, já que a taxa de ocorrência destetipo de instruções é baixa.

40