Você está na página 1de 8

Melhora da performance usando Pipeline

Pipeline uma tcnica de implementao de processadores que permite a


sobreposio temporal das diversas fases da execuo de instrues.
Tradicionalmente, as instrues do MIPS so executadas em ate 5 passos:
1. Busca da instruo na memria;
2. Leitura dos registradores enquanto uma instruo decodificada, (o
formato das instrues do MIPS permite que a leitura e a codificao
ocorram simultaneamente);
3. Execuo de uma operao ou clculo de um endereo;
4. Acesso a um operando de memria;
5. Escrita do resultado em um registrador;
Portanto, o pipeline do MIPS tem cinco estgios.

Performance do processador monociclo versus performance do


processador pipeline
Em condies ideais, o ganho devido ao pipeline igual ao numero de
estgios do pipe. Entretanto, por razes de balanceamento imperfeito
(estgios gastam mesmo tempo) e overhead do pipeline (representado pelo
tempo que se gaste para encher todo o pipe), o ganho ser menor que o
numero de estgios do pipeline.
Em suma, o pipeline melhora a performance por meio do aumento do
troughput das instrues, ou seja, aumentando o nmero de instrues por
unidade de tempo, e no por meio da diminuio de execuo de uma
instruo individual.

Projeto do conjunto de instrues para execuo em pipeline


Todas as instrues do MIPS tm o mesmo tamanho que torna simples a
busca das instrues e sua decodificao.
O MIPS tem poucos formatos de instrues, sempre com o registrador-fonte
localizado na mesma posio. Essa simetria permite que seja realizada a
leitura do banco de registradores ao mesmo tempo em que o hardware est
determinando o tipo de instruo.
Na arquitetura do MIPS s as instrues de load Word ou store Word que
manipulam operandos na memria, permitindo usar o estgio de execuo
para efetuar o clculo do endereo de memria, sendo o acesso memria
realizado no prximo estagio.
Os operandos do MIPS precisam estar alinhados na memria.

Conflitos do Pipeline
Existem situaes em que a instruo seguinte no pode ser executada no
prximo ciclo de clock.

Conflitos estruturais
Significa que o hardware no pode suportar a comunicao de instrues
que o pipeline deseja executar no mesmo ciclo de clock. No caso do MIPS,
suponha que s tivssemos uma nica memria, em vez de duas
(instrues e dados). No pipeline a primeira instruo estaria acessando um
dado da memria e a quarta estaria sendo buscada na mesma memria, no
mesmo ciclo de clock.

Conflitos de Controle
Se origina da necessidade de se tomar uma deciso com base nos
resultados de uma instruo, enquanto outras esto sendo executadas.
Parada do Pipeline = bolha (insero de uma instruo NOP).
Solues
Parada: Ocorre uma perda de performance muito alta. Torna-se necessrio
inserir no pipeline um estagio de parada, ou bolha aps o desvio
condicional.
Predio: Um esquema simples sempre predizer que os desvios
condicionais vo falhar. Quando voc estiver certo, o pipeline prossegue na
velocidade mxima. Somente quando os desvios se realizarem que h
necessidade de se atrasar o avano normal das instrues por meio do
pipeline.

Conflitos por dados


A execuo de uma instruo depende do resultado da outra, que ainda
est no pipeline.
Ex: Uma instruo de soma imediatamente seguida por uma de subtrao
que utilize o resultado da soma.
Add $s0, $t0, $t1
Sub $t2, $ s0, $t3
Soluo
Insero de trs bolhas no pipeline (muito ruim) ou to logo a ULA cheque o
resultado da soma podemos disponibilizar este valor para que ele seja
usado como um dos dados da subtrao(adiantamento ou OyPass). Essa
tcnica funciona bem no caso acima, mas se a instruo de add fosse
substituda por uma de LW, o dado desejado s estaria disponvel aps o
quarto estagio, sendo necessrio atrasar a execuo em um estgio.

Caminho de dados em pipeline


O caminho de dados separado em cinco partes:
1. BI: busca da instruo;
2. DI: decodificao da instruo e leitura do banco de registradores;
3. EX: execuo ou clculo o endereo;
4. MEM: acesso memria de dados;
5. ER: escrita no banco de registradores.
As instrues e dados se movimentam geralmente da esquerda para a
direita atravs de cada um dos cinco estgios. Existem, no entanto, duas
excees para este fluxo de instrues da esquerda para a direita:

O Estgio de escrita no banco de registradores, que coloca o


resultado em um dos registradores do banco, que est fisicamente
situado no meio do caminho de dados.

A seleo do prximo valor do PC, escolhido entre o PC incrementado


e o endereo de desvio condicional que vem do estgio MEM.

Para reter o valor de determinada instruo durante seus outros quatro


estgios, necessrio salvar em um registrador o valor lido da memria de
instrues; portanto, necessrio que se coloque um registrador em cada
uma das fronteiras entre os estgios de pipeline.

load Word (lw)


1. Busca de instruo: A instruo lida da memria, usando, para isso,
o endereo armazenado no PC. O resultado da leitura armazenado
no registrador BI/DI. O endereo do PC incrementado e armazenado
de volta no PC. Esse valor do PC incrementado tambm guardado
em BI/DI;
2. Decodificao da instruo e leitura do banco de registradores: Os 16
bits menos significativos da instruo so colocados na entrada do
mdulo de extenso de sinal, alm dos nmeros dos registradores a
serem lido sendo colocados nas entradas correspondentes do banco
de registradores. Todos os trs valores resultantes dessas operaes

so armazenados no registrador DI/EX, junto com o valor


incrementado do PC, que veio do estgio anterior.
3. Execuo ou clculo do endereo: O contedo do registrador 1 lido
do registrador DI/EX e o resultado da extenso de sinal tambm,
adicionando-os, usando a ULA. O resultado dessa soma colocado no
registrador EX/MEM.
4. Acesso memria: A memria de dados lida a partir do endereo
armazenado em EX/MEM e o dado resultante carregado no
registrador MEM/ER.
5. Escrita no banco de registradores: O dado lido do registrador MEM/EX
escrito no banco de registradores.

Controle do Processador Pipeline


O PC escrito em cada um dos ciclos de clock, de modo que no h
necessidade de se ter um sinal de controle para a escrita nele. Da mesma
forma, tambm no h necessidade de sinais de escrita para os
registradores do pipeline.
1. Busca de instrues: os sinais de controle para ler a memria de
instrues e para escrever no PC esto sempre ativos.
2. Decodificao da instruo / Leitura do banco de registradores: no
h uma linha de controle adicional a ser ativada.
3. Execuo / Clculo do endereo: os sinais a serem considerados so
RegDst, ULAOp, ULAFonte. Tais sinais selecionam o registrador no
qual o dado ser escrito, a operao da ULA e a segunda entrada da
ULA, entre o dado presente na sada 2 do banco de registradores e o
resultado da extenso do sinal do campo imediato da instruo.
4. Acesso memria: as linhas de controle a serem consideradas neste
estgio so DvC, LerMem e EscMem. Tais sinais so necessrios s
instrues de desvio se igual, load word e store Word,
respectivamente. O sinal FontePC seleciona o prximo endereo na
seqencia de execuo, a no ser que o controle tenha ativado o sinal
DvC e que o resultado da ULA seja zero.
5. Escrita no banco de registradores: as duas linhas de controle a serem
consideradas neste estgio so MemparaReg, que decide entre enviar
para o banco de registradores o resultado da ULA ou o valor lido da
memria de dados, e o EscReg, que comanda a escrita do valor
escolhido.

Pipeline Superescalar e Pipeline Dinmico


Superpipeline
Pipelines mais longos.
Considerando que o ganho conseguido com o pipeline tem a ver como
nmero de estgios considerados, alguns processadores projetados
recentemente foram desenvolvidos com pipelines com oito ou mais
estgios. Usando esta tcnica, estgios longos so quebrados em estgios
menores, resultando, no final das contas, em mais estgios do pipeline.

Superescalar
Replicao dos componentes internos do processador de modo que ele
possa colocar varias instrues em cada estgio do pipeline.
O lanamento de vrias instrues por estgio permite que a taxa de
instrues prontas na unidade de tempo exceda a taxa do clock, permitindo
que tenhamos uma CPI menor que 1. Um problema que no possvel a
execuo simultnea de instrues dependentes.

Escalonamento dinmico do pipeline (pipeline dinmico)


Tcnica executada pelo hardware para evitar conflitos no pipeline. At agora
o nosso pipeline pra enquanto espera a soluo de conflitos, mesmo se as
instrues posteriores estiverem prontas para seguir adiante. O pipeline
dinmico normalmente associado a recursos extras de hardware de modo
que as instrues posteriores possam prosseguir em paralelo

MIPS Superescalar

Busca e decodificao de 64bits de instrues


Para distribuir em paralelo uma operao envolvendo a ULA e a outra
operao envolvendo transferncia de dados, h necessidade de um
hardware adicional.
Portas extras no banco de registradores (tanto para leitura quanto
para escrita dos mesmos).
Colocar um somador no caminho de dados para calcular o endereo
efetivo das instrues de transferncia de dados.

Tcnica de Loop Unrolling (desdobramento do looping): utilizada para obter


uma melhor performance de loops que acessam arrays. Consiste na
realizao de varias cpias do corpo do loop, permitindo que instrues de
iteraes diferentes sejam escalonadas juntas.
Escalonamento Dinmico do Pipeline: O processador projetado dividido em
trs unidades principais: uma unidade de busca e distribuio das

instrues, varias unidades de execuo e uma unidade de entrega. A


primeira unidade busca as instrues, decodifica-as, e envia cada uma delas
para a unidade funcional correspondente para sua execuo. Cada unidade
funcional tem seus buffers, chamados de unidades de reserva, que
armazenam os operandos e as operaes. Quando o buffer adquire todos os
operando necessrios e a unidade funcional estiver pronta para a execuo,
o resultado calculado. A unidade de entrega decide quando o resultado
poder ser colocado com segurana no banco de registradores ou na
memria.

Questes Pipeline
Quais as caractersticas do processador MIPS (arquitetura) que
permitem se ter uma implementao em pipeline eficiente?

As instrues do MIPS possuem o mesmo tamanho, o que torna


simples a busca e a decodificao de instrues.

Possui pouco formato de instrues, sempre com o registrador fonte


na mesma posio. Essa simetria torna possvel a leitura do banco de
registradores ao mesmo tempo da determinao do tipo de instruo.

Apenas as instrues de load word e store word manipulam


operandos na memria. Esta restrio permite que o clculo de
endereo possa ser feito no estgio de execuo, sendo o acesso
memria realizado no estgio seguinte. Se as outras instrues
pudessem operar dados diretamente da memria, seria necessrio
ter um estgio apenas para clculo do endereo.

Compare a tcnica de implementao em pipeline com a tcnica de


implementao multiciclo. Quais as vantagens e desvantagens de
cada tcnica?
Vantagens
O uso de pipeline permite que todos os recursos envolvidos operem em
paralelo, de maneira que mais instrues possam ser processadas na
unidade de tempo considerada.
No multiciclo as instrues no so executadas na mesma quantidade de
tempo, portanto, as instrues so executadas no seu tempo caracterstico (
e no no tempo da instruo mais longa). Tambm no h ocorrncia de
conflitos.
Desvantagens
No multiciclo no possvel que vrias instrues sejam processadas ao
mesmo tempo. preciso que uma instruo seja totalmente processada
para que a prxima instruo comece sua execuo. Isto torna mais lenta a

execuo de um grupo de instruo, pios h recursos no utilizados todo o


tempo.
No pipeline, para haver um desempenho mais notvel necessrio uma
grande quantidade de instrues. Enquanto o pipeline no est totalmente
cheio, a performance no ideal. Alm disso, h o fato do balanceamento
imperfeito, o ciclo de clock deve ser de acordo com a instruo mais longa.
Problemas de conflitos de dados, estruturais e de controle que necessitam
de instrues que exigem acrscimo de hardware para sua soluo que nem
sempre so solucionadas completamente, havendo perda de efetividade do
mesmo jeito.

Adiantamento de resultados
Em instrues do tipo R, o resultado a ser armazenado no registrador
destino j calculado no estagio EX, pela ULA. Portanto, o dado que causa
dependncia j est disponvel onde deve ser escrito no BR, no estagio ER.
Para realizar o adiantamento do desse resultado (evitando conflitos de
dados) precisamos obter entradas da ULA a partir de qualquer dos
registradores do pipeline em vez de um s do registrador DI/EX. Colocando
multiplexadores na entrada da ULA, com controles apropriados um controle
de adiantamento deve ser implementado no estagio EX, pois os
multiplexadores da ULA responsveis pele seleo dos valores adiantados
esto nesse estagio. Os nmeros dos registradores com os operandos do
estagio DI so passados via registrador DI/EX para saber de vai ou no ser
necessrio o adiantamento dedados.
Conflitos por dados e paradas
Em casos de instruo de LW seguida de uma instruo dependente de algo
precisa parar o pipeline. Alm da unidade de adiantamento precisamos
tambm de unidade de deteco de conflitos. Esta unidade verifica se o
sinal LerMem est ativo, ou seja, se a instruo de loadWord e verifica se
o campo referente ao registrador destino d LW no estagio EX igual a
qualquer dos registradores fonte da instruo que estiver no estagio DI.
Se a condio for verdadeira, a instruo pra por um ciclo de clock. Dessa
forma a lgica de adiantamento pode tratar a dependncia e a execuo
prossegue. Para impedir que a instruo dos estgios BI e DI avancem no
pipeline, preciso que tanto o PC quanto o registrador BI/DE no sofram
qualquer modificao. Alm disso, devemos inserir uma bolha no pipeline.
Conflitos por desvios condicionais
Com a pressuposio de desvios condicional precisamos descartar 3
instrues no caso de haver desvio . Para reduzir esse retardo, devemos
deslocar a execuo do desvio condicional para o estagio DI, deslocando o
somador do estagio MEM para o estagio DI. Para tratar da deciso de
desviar ou no, devemos comparar os valores dos dois registradores lidos

durante o estagio DI. Mudando isso tudo s haver uma nica instruo a
ser eliminada do pipeline. Podemos acrescentar uma nova linha de controle.

Conflitos por Dados e Adiantamento de Resultados


Ocorre quando h instrues dependentes sendo executadas
seqencialmente.
Soluo:
O compilador poderia inserir duas instrues independentes entre as duas
instrues dependentes e consecutivas. O problema dessa soluo ocorre
quando no forem encontradas instrues independentes, o que leva a
insero de instrues NOP, ocupando ciclos de clock sem realizar qualquer
trabalho produtivo.
Soluo Melhor:
O adiantamento de resultados. Essa soluo funciona perfeitamente
quando o valor a ser adiantado vem de uma instruo tipo R. No caso do
loadword (lw) necessrio haver uma parada por um ciclo de clock, antes
da tcnica de adiantamento ser utilizada.

Você também pode gostar