aula 4 pipeline.key

29
Arquiterura de Computadores Ciência da Computação Prof. Sylvio Vieira sylvio@uni! a.br

Upload: evandro-lazzeri-kottwitz

Post on 29-Dec-2015

29 views

Category:

Documents


0 download

TRANSCRIPT

Arquiterura de ComputadoresCiência da Computação

Prof. Sylvio Vieirasylvio@uni!a.br

Taxa de execução de instruções

Os computadores modernos utilizam muitas técnicas para, tentar maximizar sua performance, na expectativa de pelo menos executar o seu máximo possível de instruções em um segundo.

✓Então, se for possível executar 500 milhões de instruções por segundo, teremos um processador de 500 MIPS, independente do tempo que cada uma das instruções seja, efetivamente, executada.

✓Esta idéia sugere que o paralelismo possa ter um papel extremamente importante na performance. pois um grande numero de instruções lentas executadas em um curto intervalo de tempo, somente será possível se várias delas sejam executadas ao mesmo tempo.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Taxa de execução de instruções

Apesar das instruções serem sempre apresentadas na ordem lógica, elas nem sempre são executadas nesta ordem.

✓Deve-se considerar que alguns dos recursos necessários para a sua execução possam estar ocupados.

✓Como consequência, elas podem terminar sua execução fora da ordem lógica.

✓Por exemplo:

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Taxa de execução de instruções

Por exemplo:

✓Se uma instrução 1 coloca um valor em um determinado registrador e a instrução 2 precisa utilizar este valor. Deve ser garantido que a instrução 2 não fará a leitura deste registrador antes dele conter o valor correto à operação.

✓ Cuidar para que isto não aconteça exige uma certa “Burocracia”, mas o ganho de performance possível deve ser obtida no fato de várias instruções terem suas execuções simultâneas, o que justifica o esforço.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Taxa de execução de instruções

Instruções Load e Store, somente estas devem fazer referência à memória:

✓Uma das formas mais simples de se dividir operações em uma sequencia de passos é definir que os operandos venham e retornem, sempre que possível, dos registradores.

✓A operação de transferência dos operandos da memória para os registradores deve ser realizada por instruções especiais.

✓Considere-se:

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Taxa de execução de instruções

Instruções Load e Store, somente estas devem fazer referência à memória:

✓Considere-se:

✓Que o acesso a memória possa demorar bastante, a execução destas operações especiais que acessam a memória poderia ser intercalada com a execução de outras instruções, desde que as primeiras instruções não façam nada além de transferir operandos entre os registradores e a memória.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Uma máquina com muitos registradores

✓Considerando que o acesso a memória é relativamente lento, faz-se necessário que se tenha vários registradores, no mínimo 32, para que, sempre que uma palavra venha da memória, seu conteúdo possa ser mantido em um registrador até que, este valor não seja mais necessário.

✓Deve-se evitar armazenar conteúdos de operadores em registradores após seu necessário uso, em função da falta de registradores suficientes para mantê-los disponíveis.

✓A melhor maneira de alcançar este objetivo é incorporando uma quantidade suficiente de registradores ao hardware.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Paralelismo no Nível de Instruções

✓O grande desafio dos arquitetos de computadores é melhorar, cada vez mais, a performance das máquinas que projetam.

✓Uma das formas é fazer com que chips rodem cada vez mais rápidos, aumentando a velocidade do clock. Mas infelizmente existe um limite para isto.

✓O limite tecnológico, pois é na tecnologia da época que se baseia o projeto.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Paralelismo no Nível de Instruções

✓Como consequência, o foco das arquiteturas vai para o paralelismo,

✓Executando duas ou mais operações ao mesmo tempo.

✓Tentando assim obter uma performance ainda maior, para uma dada velocidade de clock.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Paralelismo no Nível de Instruções

✓O paralelismo se manifesta de duas maneiras:

✓A nível de instruções e a nível de processador.

✓Nível de Instrruções:

✓O paralelismo é explorado dentro das instruções individuais, de forma a conseguir que a máquina execute mais instruções por segundo.

✓Nível de Processador:

✓Vários processadores trabalham juntos na solução do mesmo problema.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Paralelismo no Nível de Instruções

✓Cada uma das soluções trabalha a sua maneira e tem seus próprios méritos.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Pipeline

Há muito tempo se sabe, que o maior gargalo na velocidade de execução de instruções é o acesso à memória.

✓De modo a minimizar esta situação, as máquinas passaram a ser projetadas com a capacidade de buscar antecipadamente as instruções da memória.

✓Desta forma, as instruções já estariam no processador, na hora de sua execução.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Pipeline

Estas instruções eram armazenadas em um conjunto de registradores chamados:

✓Buffer de pré-busca

✓Deste modo, quando a instrução fosse necessária, ela poderia ser diretamente obtida do buffer de pré-busca, ao invés da memória, economizando tempo.

✓Desta forma, a pé-busca divide a execução das instruções em duas partes,

✓A busca e a execução.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Pipeline

✓A técnica de Pipeline leva esta estratégia bem mais além de dividir a execução de instruções em duas partes.

✓O processamento em pipeline divide a execução de instruções em várias partes, cada uma das quais tratada por um hardware exclusivo e dedicado a ela.

✓A execução destas partes ocorre em paralelo.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Pipeline

Pipeline é uma técnica de hardware que permite que a CPU realize a busca de uma ou mais instruções além da próxima a ser executada.

Estas instruções são colocadas em uma fila de memória(dentro da CPU) onde aguardam o momento de serem executadas.

✓A técnica de pipeline é utilizada para acelerar a velocidade de operação da CPU, uma vez que a próxima instrução a ser executada está normalmente armazenada dentro da CPU e não precisa ser buscada da memória, normalmente muito mais lenta que a CPU

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Pipeline

A técnica de pipelining permite que o processador tire proveito máximo de suas estruturas internas, dividindo o ciclo de processamento em tarefas menores. A execução destas tarefas em sequência é que permitem o melhor aproveitamento do hardware.

" Para que ocorra pipelining é necessário:

✓ Instruções com tempo de execução próximos e previsíveis (execução em um único ciclo)

✓ Baixo número de instruções.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Pipeline

Exemplo de Lavanderia

Tem-se os volumes A, B, C e D de roupas para lavar, secar e passar

A lavadora leva 30 minutos

A secadora leva 40 minutos

A “Passadeira” leva 20 minutos

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

A B C D

Pipeline

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Lavanderia Sequencial

30 40 20 30 40 20 30 40 20 30 40 20

6 7 8 9 10 11 Meia noite Tempo

Tarefas

A

B

C

D Uma lavabderia sequencial leva 6 horas para os 4 volumes

Se usasse pipeline, quanto tempo levaria para os 4 volumes?

Pipeline

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Lavanderia em pipeline

Tarefas

A

B

C

D

Lavanderia em pipelines, leva 3,5 horas

6 7 8 9 10 11 Meia noite Tempo

30 40 40 40 40 20

Pipeline

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

6 7 8 9

30 40 40 40 40 20

A

B

C

D

Tarefas

Aprendizado do pipeline:

O Pipeline ajuda melhorar o throughput de um trabalho por completo

A taxa do Pipeline é limitada pelo estágio mais lento

Speedup ideal = Número de estágios

Comprimentos desbalanceados dos estágios do pipeline reduzem o speedup

O tempo para “preencher” o pipeline e o tempo para “limpar” o pipeline reduzem o speedup

Pipeline

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Eis um exemplo genérico de um pipeline com 5 unidades, que recebem o nome de estágios. o estágio 1 busca a instrução na memória e armazena em um buffer, até chegar o momento de se executada.No estágio 2, há a decodificação da instrução, ou seja a determinação de seu tipo e quais operandos serão necessários a sua execução. No estágio 3, ocorre a localização e a busca pelos operandos que podem estar em regisrtadores ou na memoria.

Unidade de busca de instrução

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

E 1 E 2 E 3 E 4 E 5

Pipeline

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

No estágios 4 é que efetivamente ocorre a execução da instrução, quando efetivamente passam pelo caminho de dados, explicado na última aula.Finalmente, no estágio 5 o resultado do processamento dos operandos no caminho de dados é escrito em um registrador.

Unidade de busca de instrução

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

E 1 E 2 E 3 E 4 E 5

Pipeline

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Aqui verificamos a execução do pipeline em função do tempo. Durante o primeiro ciclo de clock, o estágio S1 está trabalhando com a instrução 1, buscando-a da memória. Durante o segundo ciclo de Clock, o estágio S2 decodifica a instrução 1 enquanto o estágio S1 busca a instrução 2. Durante o 3º ciclo de Clock, o estágio S3 busca os operandos da instrução 1, o S2 decodicica a instrução 2 e S1 busca uma instrução 3.

Unidade de busca de instrução

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

E 1 E 2 E 3 E 4 E 5

Pipeline

O que facilita:

Todas as instruções com mesmo comprimentoSomente poucos formatos de instruçõesOs operandos de memória aparecem somente em loads e stores

O que dificulta:

conflitos estruturais: supor que temos somente uma memóriaconflitos de controle: preocupar com instruções ramificadasconflitos de dados: uma instrução depende de uma instrução préviaManipulação de exceçõesMelhorar o desempenho com execução fora-de-ordem, etc.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Arquiteturas superescalares

Se considerarmos um pipeline bom, com dois, ficaria melhor...

É possível projetar um computador com 2 pipelines:

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Arquiteturas superescalaresNeste caso temos uma única unidade de busca de instrução, que busca pares

de instruções juntas e coloca cada uma delas em seu próprio pipeline, [ermitindo portanto, a execução de instruções em paralelo.

Para que as duas instruções sejam executadas em paralelo, não pode existir conflito pela utilização de recursos durante a execução (registradores por exemplo)

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Unidade de busca de instrução

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

E 1 E 2 E 3 E 4 E 5

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

Arquiteturas superescalaresAlém disto, não pode acontecer que o resultado de uma instrução dependa da

execução de outra.Assim como no caso de um único pipeline, o compilador precisa garantir que

estas situações não venham a ocorrer.

O Hardware não faz qualquer verificação de conflitos, se ocorrerem execuções de instruções em paralelo incompatíveis, os resultados serão provavelmente errados.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Unidade de busca de instrução

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

E 1 E 2 E 3 E 4 E 5

Unidade de decodificação de instrução

Unidade de busca de operando

Unidade de execução de

instrução

Unidade de escrita

Pode haver um hardware específico para eliminar estes conflitos.

Arquiteturas superescalaresA existência de 4 pipelines, apesar de conceitualmente possível, duplica o hardware

necessário a sua implementação.

Em função disto, máquinas de alta performance utilizam outra metodologia.

A idéia é ter um único pipeline, com diversas unidades funcionais.

UNIFRA - Ciência da Computação - Arquitetura de Computadores - Prof. Sylvio Vieira - [email protected]

Arquiterura de ComputadoresCiência da Computação

Prof. Sylvio Vieirasylvio@uni!a.br