Você está na página 1de 7

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 MIP so executadas em ate ! passos" #. $usca da instruo na mem%ria& '. (eitura dos re)istradores enquanto uma instruo decodificada, *o formato das instrues do MIP permite que a leitura e a codificao ocorram simultaneamente+& ,. -xecuo de uma operao ou c.lculo de um endereo& /. 0cesso a um operando de mem%ria& !. -scrita do resultado em um re)istrador& Portanto, o pipeline do MIP tem cinco est.)ios.

Performance do processador monociclo versus performance do processador pipeline


-m condies ideais, o )anho devido ao pipeline i)ual ao numero de est.)ios do pipe. -ntretanto, por ra1es de balanceamento imperfeito *est.)ios )astam mesmo tempo+ e overhead do pipeline *representado pelo tempo que se )aste para 2encher3 todo o pipe+, o )anho ser. menor que o numero de est.)ios do pipeline. -m suma, o pipeline melhora a performance por meio do aumento do trou)hput das instrues, ou se4a, aumentando o n5mero de instrues por unidade de tempo, e no por meio da diminuio de execuo de uma instruo individual.

Pro4eto do con4unto de instrues para execuo em pipeline


Todas as instrues do MIP t6m o mesmo tamanho que torna simples a busca das instrues e sua decodificao. 7 MIP tem poucos formatos de instrues, sempre com o re)istrador8fonte locali1ado na mesma posio. -ssa simetria permite que se4a reali1ada a leitura do banco de re)istradores ao mesmo tempo em que o hard9are est. determinando o tipo de instruo. :a arquitetura do MIP s% as instrues de load ;ord ou store ;ord que manipulam operandos na mem%ria, permitindo usar o est.)io de execuo para efetuar o c.lculo do endereo de mem%ria, sendo o acesso < mem%ria reali1ado no pr%ximo esta)io. 7s operandos do MIP precisam estar alinhados na mem%ria.

=onflitos do Pipeline

-xistem situaes em que a instruo se)uinte no pode ser executada no pr%ximo ciclo de cloc>.

=onflitos estruturais
i)nifica que o hard9are no pode suportar a comunicao de instrues que o pipeline dese4a executar no mesmo ciclo de cloc>. :o caso do MIP , suponha que s% tivssemos uma 5nica mem%ria, em ve1 de duas *instrues e dados+. :o pipeline a primeira instruo estaria acessando um dado da mem%ria e a quarta estaria sendo buscada na mesma mem%ria, no mesmo ciclo de cloc>.

=onflitos de =ontrole
e ori)ina 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 :7P+. Solues Parada" 7corre uma perda de performance muito alta. Torna8se necess.rio inserir no pipeline um esta)io de parada, ou bolha ap%s o desvio condicional. Predio" @m esquema simples sempre predi1er que os desvios condicionais vo falhar. Auando voc6 estiver certo, o pipeline prosse)ue na velocidade m.xima. omente quando os desvios se reali1arem que h. necessidade de se atrasar o avano normal das instrues por meio do pipeline.

=onflitos por dados


0 execuo de uma instruo depende do resultado da outra, que ainda est. no pipeline. -x" @ma instruo de soma imediatamente se)uida por uma de subtrao que utili1e o resultado da soma. 0dd BsC, BtC, Bt# ub Bt', B sC, Bt, Soluo Insero de tr6s bolhas no pipeline *muito ruim+ ou to lo)o a @(0 cheque o resultado da soma podemos disponibili1ar este valor para que ele se4a usado como um dos dados da subtrao*adiantamento ou 7DPass+. -ssa tcnica funciona bem no caso acima, mas se a instruo de add fosse substituEda por uma de (;, o dado dese4ado s% estaria disponEvel ap%s o quarto esta)io, sendo necess.rio atrasar a execuo em um est.)io.

=aminho de dados em pipeline


7 caminho de dados separado em cinco partes" #. $I" busca da instruo& '. FI" decodificao da instruo e leitura do banco de re)istradores& ,. -G" execuo ou c.lculo o endereo& /. M-M" acesso < mem%ria de dados& !. -H" escrita no banco de re)istradores. 0s instrues e dados se movimentam )eralmente da esquerda para a direita atravs de cada um dos cinco est.)ios. -xistem, no entanto, duas excees para este fluxo de instrues da esquerda para a direita" 7 -st.)io de escrita no banco de re)istradores, que coloca o resultado em um dos re)istradores do banco, que est. fisicamente situado no meio do caminho de dados. 0 seleo do pr%ximo valor do P=, escolhido entre o P= incrementado e o endereo de desvio condicional que vem do est.)io M-M.

Para reter o valor de determinada instruo durante seus outros quatro est.)ios, necess.rio salvar em um re)istrador o valor lido da mem%ria de instrues& portanto, necess.rio que se coloque um re)istrador em cada uma das fronteiras entre os est.)ios de pipeline.

load ;ord *l9+


#. $usca de instruo" 0 instruo lida da mem%ria, usando, para isso, o endereo arma1enado no P=. 7 resultado da leitura arma1enado no re)istrador $IIFI. 7 endereo do P= incrementado e arma1enado de volta no P=. -sse valor do P= incrementado tambm )uardado em $IIFI& '. Fecodificao da instruo e leitura do banco de re)istradores" 7s #J bits menos si)nificativos da instruo so colocados na entrada do m%dulo de extenso de sinal, alm dos n5meros dos re)istradores a serem lido sendo colocados nas entradas correspondentes do banco de re)istradores. Todos os tr6s valores resultantes dessas operaes so arma1enados no re)istrador FII-G, 4unto com o valor incrementado do P=, que veio do est.)io anterior.

,. -xecuo ou c.lculo do endereo" 7 conte5do do re)istrador # lido do re)istrador FII-G e o resultado da extenso de sinal tambm, adicionando8os, usando a @(0. 7 resultado dessa soma colocado no re)istrador -GIM-M. /. 0cesso < mem%ria" 0 mem%ria de dados lida a partir do endereo arma1enado em -GIM-M e o dado resultante carre)ado no re)istrador M-MI-H. !. -scrita no banco de re)istradores" 7 dado lido do re)istrador M-MI-G escrito no banco de re)istradores.

=ontrole do Processador Pipeline


7 P= escrito em cada um dos ciclos de cloc>, de modo que no h. necessidade de se ter um sinal de controle para a escrita nele. Fa mesma forma, tambm no h. necessidade de sinais de escrita para os re)istradores do pipeline. #. $usca de instrues" os sinais de controle para ler a mem%ria de instrues e para escrever no P= esto sempre ativos. '. Fecodificao da instruo I (eitura do banco de re)istradores" no h. uma linha de controle adicional a ser ativada. ,. -xecuo I =.lculo do endereo" os sinais a serem considerados so He)Fst, @(07p, @(0Konte. Tais sinais selecionam o re)istrador no qual o dado ser. escrito, a operao da @(0 e a se)unda entrada da @(0, entre o dado presente na saEda ' do banco de re)istradores e o resultado da extenso do sinal do campo imediato da instruo. /. 0cesso < mem%ria" as linhas de controle a serem consideradas neste est.)io so Fv=, (erMem e -scMem. Tais sinais so necess.rios <s instrues de desvio se i)ual, load word e store Word, respectivamente. 7 sinal KonteP= seleciona o pr%ximo endereo na seqLencia de execuo, a no ser que o controle tenha ativado o sinal Fv= e que o resultado da @(0 se4a 1ero. !. -scrita no banco de re)istradores" as duas linhas de controle a serem consideradas neste est.)io so MemparaHe), que decide entre enviar para o banco de re)istradores o resultado da @(0 ou o valor lido da mem%ria de dados, e o -scHe), que comanda a escrita do valor escolhido.

Pipeline uperescalar e Pipeline FinMmico


uperpipeline
Pipelines mais lon)os. =onsiderando que o )anho conse)uido com o pipeline tem a ver como n5mero de est.)ios considerados, al)uns processadores pro4etados recentemente foram

desenvolvidos com pipelines com oito ou mais est.)ios. @sando esta tcnica, est.)ios lon)os so 2quebrados3 em est.)ios menores, resultando, no final das contas, em mais est.)ios do pipeline.

uperescalar
Heplicao dos componentes internos do processador de modo que ele possa colocar varias instrues em cada est.)io do pipeline. 7 lanamento de v.rias instrues por est.)io permite que a taxa de instrues prontas na unidade de tempo exceda a taxa do cloc>, permitindo que tenhamos uma =PI menor que #. @m problema que no possEvel a execuo simultMnea de instrues dependentes.

-scalonamento dinMmico do pipeline *pipeline dinMmico+


Tcnica executada pelo hard9are para evitar conflitos no pipeline. 0t a)ora o nosso pipeline p.ra enquanto espera a soluo de conflitos, mesmo se as instrues posteriores estiverem prontas para se)uir adiante. 7 pipeline dinMmico normalmente associado a recursos extras de hard9are de modo que as instrues posteriores possam prosse)uir em paralelo

MIP

uperescalar
$usca e decodificao de J/bits de instrues Para distribuir em paralelo uma operao envolvendo a @(0 e a outra operao envolvendo transfer6ncia de dados, h. necessidade de um hard9are adicional. Portas extras no banco de re)istradores *tanto para leitura quanto para escrita dos mesmos+. =olocar um somador no caminho de dados para calcular o endereo efetivo das instrues de transfer6ncia de dados.

Tcnica de (oop @nrollin) *desdobramento do loopin)+" utili1ada para obter uma melhor performance de loops que acessam arraDs. =onsiste na reali1ao de varias c%pias do corpo do loop, permitindo que instrues de iteraes diferentes se4am escalonadas 4untas. -scalonamento FinMmico do Pipeline" 7 processador pro4etado dividido em tr6s unidades principais" uma unidade de busca e distribuio das instrues, varias unidades de execuo e uma unidade de entre)a. 0 primeira unidade busca as instrues, decodifica8as, e envia cada uma delas para a unidade funcional correspondente para sua execuo. =ada unidade funcional tem seus buffers, chamados de unidades de reserva, que arma1enam os operandos e as operaes. Auando o buffer adquire todos os operando necess.rios e a unidade funcional estiver pronta para a execuo, o resultado calculado. 0 unidade de entre)a decide quando o resultado poder. ser colocado com se)urana no banco de re)istradores ou na mem%ria.

Auestes Pipeline
Auais as caracterEsticas do processador MIP *arquitetura+ que permitem se ter uma implementao em pipeline eficienteN
0s instrues do MIP possuem o mesmo tamanho, o que torna simples a busca e a decodificao de instrues. Possui pouco formato de instrues, sempre com o re)istrador fonte na mesma posio. -ssa simetria torna possEvel a leitura do banco de re)istradores ao mesmo tempo da determinao do tipo de instruo. 0penas as instrues de load 9ord e store 9ord manipulam operandos na mem%ria. -sta restrio permite que o c.lculo de endereo possa ser feito no est.)io de execuo, sendo o acesso < mem%ria reali1ado no est.)io se)uinte. e as outras instrues pudessem operar dados diretamente da mem%ria, seria necess.rio ter um est.)io apenas para c.lculo do endereo.

=ompare a tcnica de implementao em pipeline com a tcnica de implementao multiciclo. Auais as vanta)ens e desvanta)ens de cada tcnicaN
Oanta)ens 7 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. :o multiciclo as instrues no so executadas na mesma quantidade de tempo, portanto, as instrues so executadas no seu tempo caracterEstico * e no no tempo da instruo mais lon)a+. Tambm no h. ocorr6ncia de conflitos. Fesvanta)ens :o multiciclo no possEvel que v.rias instrues se4am processadas ao mesmo tempo. P preciso que uma instruo se4a totalmente processada para que a pr%xima instruo comece sua execuo. Isto torna mais lenta a execuo de um )rupo de instruo, pios h. recursos no utili1ados todo o tempo. :o pipeline, para haver um desempenho mais not.vel necess.rio uma )rande quantidade de instrues. -nquanto o pipeline no est. totalmente cheio, a performance no ideal. 0lm disso, h. o fato do balanceamento imperfeito, o ciclo de cloc> deve ser de acordo com a instruo mais lon)a. Problemas de conflitos de dados, estruturais e de controle que necessitam de instrues que exi)em acrscimo de hard9are para sua soluo que nem sempre so solucionadas completamente, havendo perda de efetividade do mesmo 4eito.

0diantamento de resultados -m instrues do tipo H, o resultado a ser arma1enado no re)istrador destino 4. calculado no esta)io -G, pela @(0. Portanto, o dado que causa depend6ncia 4. est. disponEvel onde deve ser escrito no $H, no esta)io -H. Para reali1ar o adiantamento do desse resultado *evitando conflitos de dados+ precisamos obter entradas da @(0 a partir de qualquer dos re)istradores do pipeline em ve1 de um s% do re)istrador FII-G. =olocando multiplexadores na entrada da @(0, com controles apropriados um controle de adiantamento deve ser implementado no esta)io -G, pois os multiplexadores da @(0 respons.veis pele seleo dos valores adiantados esto nesse esta)io. 7s n5meros dos re)istradores com os operandos do esta)io FI so passados via re)istrador FII-G para saber de vai ou no ser necess.rio o adiantamento dedados. =onflitos por dados e paradas -m casos de instruo de (; se)uida de uma instruo dependente de al)o precisa parar o pipeline. 0lm da unidade de adiantamento precisamos tambm de unidade de deteco de conflitos. -sta unidade verifica se o sinal (erMem est. ativo, ou se4a, se a instruo de load;ord e verifica se o campo referente ao re)istrador Q destino d (; no esta)io -G i)ual a qualquer dos re)istradores Q fonte da instruo que estiver no esta)io FI. e a condio for verdadeira, a instruo p.ra por um ciclo de cloc>. Fessa forma a l%)ica de adiantamento pode tratar a depend6ncia e a execuo prosse)ue. Para impedir que a instruo dos est.)ios $I e FI avancem no pipeline, preciso que tanto o P= quanto o re)istrador $IIF- no sofram qualquer modificao. 0lm disso, devemos inserir uma bolha no pipeline. =onflitos por desvios condicionais =om a pressuposio de desvios condicional precisamos descartar , instrues no caso de haver desvio . Para redu1ir esse retardo, devemos deslocar a execuo do desvio condicional para o esta)io FI, deslocando o somador do esta)io M-M para o esta)io FI. Para tratar da deciso de desviar ou no, devemos comparar os valores dos dois re)istradores lidos durante o esta)io FI. Mudando isso tudo s% haver. uma 5nica instruo a ser eliminada do pipeline. Podemos acrescentar uma nova linha de controle.

=onflitos por Fados e 0diantamento de Hesultados


7corre quando h. instrues dependentes sendo executadas seqLencialmente. oluo" 7 compilador poderia inserir duas instrues independentes entre as duas instrues dependentes e consecutivas. 7 problema dessa soluo ocorre quando no forem encontradas instrues independentes, o que leva a insero de instrues :7P, ocupando ciclos de cloc> sem reali1ar qualquer trabalho produtivo. oluo Melhor" 7 adiantamento de resultados. -ssa soluo funciona perfeitamente quando o valor a ser adiantado vem de uma instruo tipo H. :o caso do loadword (lw) necess.rio haver uma parada por um ciclo de cloc>, antes da tcnica de adiantamento ser utili1ada.