03 - Paralelismo em nível de instruções e processadores superescalares

46
Paralelismo em nível de instr processadores superescalar Dennis Sávio Martins da Silva [email protected]

Transcript of 03 - Paralelismo em nível de instruções e processadores superescalares

Paralelismo em nvel de instrues e processadores superescalaresDennis Svio Martins da Silva [email protected]

Introduo Implementao superescalar Aquela onde as instrues comuns (aritmtica de inteiros e de pontos flutuantes, leituras, escritas e desvios condicionais) podem ser iniciadas simultaneamente e executadas independentemente, de maneira concorrente, em mltiplos pipelines. Pode ser usada em arquiteturas RISC e CISC

Introduo Superscalar termo que se refere a mquinas projetadas para melhorar o desempenho da execuo de instrues escalares. Abordagem superescalar Aquele em que mltiplos e independentes pipelines de instrues so usados, de maneira paralela. Busca mltiplas instrues ao mesmo tempo e depois tenta localizar instrues prximas umas das outras que sejam independentes (A entrada de uma no depende das sadas de outra) umas das outras e possam ser executadas em paralelo. Quando detectadas as dependncias, o processador pode executar e completar instrues em uma ordem diferente do cdigo de mquina original.

Superpipeline Explora o fato de que muitos estgios de pipeline executam tarefas que requerem menos do que metade de um ciclo de clock. Essa velocidade interna dobrada permite executar duas tarefas em um nico ciclo de clock externo.

Buscar

Decodif.

Executar

Escrever

Pipeline simples de 4 instrues

Superpipeline

Superscalar

0

1

2

3

4

5

6

7

8

Tempo

Limitaes do paralelismo Paralelismo em nvel de instrues grau em que, em mdia, as instrues de um programa podem ser executadas em paralelo. Pode ser otimizado por uma combinao de otimizao baseada em compilador e tcnicas de hardware.

O paralelismo possui cinco limitaes fundamentais: Dependncia de dados verdadeira Dependncia procedural Conflitos de recursos Dependncia de sada Antidependncia

Dependncia de dados verdadeira Tambm conhecida como dependncia de fluxo ou dependncia de escrita aps leitura (a.k.a. Write After Read ou WAR). Duas instrues so obtidas em paralelo, mas uma delas atrasada devido dependncia de dados processados pela outra, por tantos ciclos de clock forem necessrios para remoo da dependncia (Todos os valores de entrada serem produzidos).

Dependncia de dados verdadeira Ex:ADD MOV EAX, EBX, ECX EAX ;Carrega o registrador EAX com o contedo de ECX mais o contedo de EAX ;carrega EBX com o contedo de EAX

No caso acima, alguns ciclos sero necessrios at que o registrador EAX esteja liberado (Quando a segunda instruo entra no estgio de execuo, a primeira ainda est no pipeline)

Dependncia de dados verdadeira Ex:ADD MOV EAX, EBX, eff EAX ;Carrega o registrador EAX com o contedo do endereo de memria efetivo eff ;carrega EBX com o contedo de EAX

Um processador leva dois ou mais ciclos para executar uma leitura de memria quando a leitura um acesso cache. Se ocorrer uma falha de cache em todos os nveis de cache, podem levar dezenas ou centenas de ciclos para recuperar os dados de uma memria fora do chip.

Dependncia de dados verdadeira Uma maneira de compensar esse atraso o compilador reordenar as instrues para que uma ou mais instrues subsequentes que no dependam de leitura da memria possam seguir pelo pipeline. Pode no ser muito eficiente, pois mesmo rearranjando as instrues independentes, sua execuo pode levar apenas poucos ciclos de instruo, deixando o processador ocioso at o termino da leitura.

Dependncias Procedurais Complicao decorrente da existncia de desvios Uma dependncia procedural uma dependncia existente entre um desvio e as instrues que vem depois dele. Essa dependncia j era prejudicial no pipeline escalar, e se torna ainda mais severa no pipeline superescalar (maior perda de oportunidade)

Conflito de recursos Competio de duas instrues pelo mesmo recurso, ao mesmo tempo. Exemplos de recursos: Memria Cache Barramentos Entradas para banco de registradores Unidades funcionais (EX: somador da ALU)

Pode ser evitado pela duplicao dos recursos, ou amenizado por algum pipeline interno da unidade funcional afetada.

Buscar

Decodif.

Executar

Escrever

i0

Sem dependncia

i1

i0 I1

Dependncia de Dados (i1 usa dados computados por i0)

I0 i1 I2 I3 I4 I5

Dependncia procedural Desvio em i1

I0 i1

Conflito de recurso (i0 e i1 usam a mesma unidade funcional)

Questes de projeto de paralelismo Paralelismo em nvel de instrues e paralelismo de mquina Poltica de emisso de instrues Renomeao de registradores Previso de desvio Execuo superescalar Implementao superescalar

Paralelismo em nvel de instrues e paralelismo de mquinaParalelismo em nvel de instrues Existe quando as instrues de uma sequncia so independentes e, assim, podem ser executadas em paralelo por sobreposio.Load R1