15.10.2013 Views

trabalho sobre proce.. - Filosofar Sempre!!!!

trabalho sobre proce.. - Filosofar Sempre!!!!

trabalho sobre proce.. - Filosofar Sempre!!!!

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

eferenciar a memória.<br />

3.4 Pipelining<br />

É claro que proibir que as instruções comuns acessem a memória não resolve o<br />

problema de como fazer com que LOADs e STOREs operem em um ciclo. A solução<br />

está em um pouco de truque. Vamos agora relaxar nosso objetivos ligeiramente. Em<br />

vez de requerer que toda instrução deva ser executada em um ciclo, vamos meramente<br />

insistir que seremos capazes de começar uma instrução a cada ciclo, sem levar em<br />

consideração quando é que ela termina. Se, em n ciclos, conseguirmos iniciar n<br />

instruções, na média teremos atingido uma instrução por ciclo, o que é<br />

suficientemente bom.<br />

Para atingir este objetivo modificado, todas as máquinas RISC têm pipeline. A<br />

CPU contém diversas unidades independentes que trabalham em paralelo. Uma delas<br />

busca as instruções, e outras as decodificam e executam. A qualquer instante, diversas<br />

instruções estão em vários estágios de <strong>proce</strong>ssamento.<br />

Uma instrução comum utiliza duas unidades pipeline, uma para busca e outra<br />

para execução. Num instante de tempo uma instrução é iniciada. No outro instante, a<br />

instrução iniciada muda de unidade e é executada. Na unidade que ficou livre é iniciado<br />

uma nova instrução. Assim mantemos a média, que é iniciar uma instrução a cada ciclo.<br />

Porém instruções LOADs e STOREs requer uma terceira unidade, para referenciar a<br />

memória. Então, em vez de finalizar a execução em duas unidades, finalizam em três<br />

unidades. Na Tab. 3.3, exemplo de uma pipeline em execução.<br />

Ciclo<br />

1 2 3 4 5 6 7 8 9 10<br />

Busca de instrução 1 2 L 4 5 6 S 8 9 10<br />

Execução de instrução 1 2 L 4 5 6 S 8 9<br />

Referência à memória L S<br />

Tab. 3.3: Uma máquina RISC com pipeline contendo LOAD (L) e STORE (L) atrasados<br />

3.5 Uso de Registrador<br />

O objetivo de toda máquina RISC é executar uma instrução por ciclo, na média.<br />

Uma vez que LOAD e STORE tipicamente requerem dois ciclos, está média só pode<br />

ser atingida se o compilador tiver sucesso no preenchimento de 100 % dos buracos de<br />

atraso depois de cada um deles. Isto leva a raciocinar que, quanto menos LOADs e<br />

STOREs existirem, menos serão desperdiçados devido à inabilidade do compilador em<br />

preenchê-los com alguma coisa útil.<br />

Por está razão, compiladores para máquinas RISC fazem uso intenso de<br />

registradores, para reduzir o tráfego de memória (isto é, o número de LOADs e<br />

STOREs). As máquinas RISC possuem substancialmente mais registradores do que<br />

máquinas CISC.<br />

3.6 Por que <strong>proce</strong>ssadores RISC não decolaram?<br />

"Nos anos, alguns engenheiros de RISC ridicularizaram o CISC e predisseram o<br />

fim da família x86. Infelizmente para eles, a penalidade por menosprezar os<br />

fabricantes (principalmente a Intel) é até maior que a penalidade para não prever<br />

29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!