Sei sulla pagina 1di 8

Organizao de Computadores 6.

Pipeline

Antnio Borges / Gabriel P. Silva

A quinta parte de um enxame pousou na flor de Kadamba, a tera parte numa flor de Silinda, o triplo da diferena entre estes dois nmeros voa sobre uma flor de Krutaja, e uma abelha adeja sozinha, no ar, atrada pelo perfume de um jasmim e de um pandnus. Dizme, bela menina, qual o nmero de abelhas Malba Tahan O Homem que Calculava

6.1. Introduo O pipeline uma tcnica de implementao de processadores que permite a sobreposio temporal das diversas fases de execuo das instrues. A execuo de uma instruo dividida em vrias etapas ou estgios. Assim, o processador inicia a execuo da prxima instruo logo que a execuo do primeiro estgio da instruo atual terminar, ao invs de esperar o trmino da execuo de toda a instruo. Embora o tempo gasto para completar cada instruo individualmente no seja reduzido, o uso da tcnica de pipeline aumenta o nmero de instrues executadas simultaneamente e a taxa de instrues iniciadas e terminadas por unidade de tempo. Por exemplo, a fabricao de um carro completo leva, por hiptese, seis horas para ser terminada. Ao final de um dia, em trs turnos de 8 horas, uma fbrica com apenas uma linha de produo ter produzido 4 carros. Contudo, podemos dividir o processo de fabricao em vrias etapas, como a seguir: Montagem do Chassi Colocao do Motor Montagem da Carroceria Colocao de Bancos e Acessrios

Supondo-se que cada uma dessas etapas leve 90 minutos para ser realizada, um carro continuar levando 6 horas para ser fabricado. Entretanto, podemos iniciar a fabricao de um carro novo a cada 90 minutos, at que tenhamos 4 carros sendo fabricados simultaneamente, um em cada etapa do pipeline. Depois das primeiras 6 horas, teremos um carro sendo produzido a cada 90 minutos. Ao final de um dia, em trs turnos de 8 horas, uma fbrica com apenas uma linha de produo ter fabricado 16 carros. 6.2. O Pipeline do DLX Em nosso estudo estaremos considerando um modelo de processador baseado no DLX. uma arquitetura simples, onde todas as instrues possuem tamanho fixo (32 bits); apenas as instrues de LOAD e STORE fazem acesso memria; existem 32 registradores inteiros (32 bits) de uso geral e um registrador especial, o apontador de instrues (PC), tambm de 32 bits, que contm o endereo da prxima instruo a ser buscada na memria. Vamos propor a diviso da execuo de cada uma das instrues no nosso processador em 5 estgios:

Busca (B) Decodificao (D)

Organizao de Computadores Execuo (E) Memria (M) Escrita (W)

Antnio Borges / Gabriel P. Silva

Busca da Instruo

Decodificao

Execuo

Memria

Escrita do Resultado

Figura 9 Exemplo de pipeline com 5 estgios

O estgio de Busca (B) utiliza o endereo armazenado no Apontador de Instrues (PC) para a busca da instruo na memria. Assim que a instruo for carregada nos registradores internos do processador, o valor do PC atualizado para apontar para a prxima instruo a ser buscada na memria. O estgio de Decodificao (D) realiza a decodificao da instruo, verifica se tem operandos, quantos so e faz a leitura dos valores do banco de registradores. O estgio de Execuo (E) responsvel pela execuo das operaes aritmticas e lgicas definidas pela instruo. Neste estgio tambm calculado o endereo de memria dos operandos das instrues de LOAD e STORE e o endereo-alvo para as instrues de desvio. No estgio de Memria (M) feito o acesso propriamente dito (leitura ou escrita) aos operandos que esto em memria. O endereo utilizado aquele calculado no estgio de execuo. Apenas as instrues de LOAD e STORE realizam alguma tarefa til neste estgio. O resultado da execuo das instrues, se houver, escrito no banco de registradores no estgio de Escrita (W). Para que esito possa ser feito sem conflito, o banco de registradores permite a leitura e a escrita simultnea de operandos. Se houver a leitura e a escrita simulatneas de um mesmo registrador, o banco de registradores retorna o novo valor que est sendo escrito.

6.3. Relgio O relgio um sinal eltrico peridico que cadencia todas as operaes no processador. A passagem de uma instruo e seus resultados de um estgio para outro no pipeline do processador tambm controlada pelo relgio e se d normalmente ao final do seu ciclo.

Relgio Ciclo

Organizao de Computadores Figura 10 Relgio

Antnio Borges / Gabriel P. Silva

O relgio, por ser peridico, possui uma freqncia e tempo de ciclo bem definidos. Quanto maior a freqncia (f), menor o tempo de ciclo (T) do relgio (T = 1/f). Nos processadores modernos a freqncia expressa em GHz e o tempo de ciclo de relgio em ns (10-9 s) ou ps (10-12 s). O tempo do ciclo do relgio do processador deve ser igual ao tempo de execuo do estgio mais lento do pipeline. Ou seja, no projeto de um pipeline, a freqncia do relgio determinada pelo inverso do tempo de execuo do estgio mais lento. O projetista do processador deve dividir a execuo da instruo em estgios com o mesmo tempo de execuo, para obter o mximo desempenho. Uma outra condio para que este desempenho mximo seja alcanado, que o pipeline deve ser mantido sempre cheio, ou seja, no pode haver estgios sem instrues teis em execuo. 6.4. Caminho de Dados Uma instruo para ser executada no pipeline percorre um caminho de dados que corresponde diviso em estgios da arquitetura do DLX, conforme a figura abaixo. A execuo das instrues obedece a um fluxo da esquerda para a direita. As nicas excees ocorrem quando feita a escrita do resultado no banco de registradores, no estgio de escrita, que utiliza o mesmo recurso do estgio de decodificao que o banco de registradores; e na seleo do prximo valor do PC, que escolhido entre o PC incrementado de 4 e o endereo do desvio condicional calculado pelo somador no estgio de execuo.

Figura 11 Diagrama do Pipeline do DLX

Para que possa haver a leitura simultnea de at dois operandos, da instruo que est no estgio de decodificao (D), e a escrita de um resultado, da instruo que est no estgio de escrita (W), possam ser feitas simultaneamente, o banco de registradores deve possuir duas portas de leitura e uma de escrita. Cada porta constituda por uma sada/entrada de 32 bits de dados e um endereo de 5 bits, que corresponde ao nmero do registrador que est sendo lido/escrito.

Organizao de Computadores

Antnio Borges / Gabriel P. Silva

Para que o controle do pipeline possa ocorrer corretamente, necessrio que cada estgio esteja isolado do outro por meio de registradores que vo armazenar o resultado das operaes de cada estgio. A prpria instruo deve ser enviada de estgio para estgio, para que em cada um deles as funes apropriadas possam ser executadas. Ao final do pipeline, a instruo descartada.

6.5. Conflitos no Pipeline Existem situaes em que a prxima instruo no pode ser executada no ciclo de relgio seguinte: 6.5.1. Conflitos Estruturais

Quando dois ou mais estgios necessitam do mesmo recursos simultaneamente. Por exemplo, pode haver acessos simultneos memria sendo feitos tanto pelo estgio de busca de instruo (B) como pelo estgio de acesso memria (M).

Busca de Instruo

Decodificao

Execuo

Memria

Escrita Resultado

Memria

Memria
Figura 12 Conflitos Estruturais

Solues possveis: A soluo normalmente empregada a duplicao de recursos. No caso do acesso simultneo memria pelos estgios de Busca e Memria, a soluo usual o uso de caminhos separados para acesso aos dados e instrues, normalmente armazenados em memrias caches separadas para dados e instrues. Memrias caches so elementos da hierarquia de memria que possuem cpias dos dados e instrues mais freqentemente utilizados pelo processador. 6.5.2. Conflitos de Controle Ocorrem devido s instrues de desvio e de chamada de procedimento. Nesse caso, a prxima instruo a ser executada no estar no endereo de memria subseqente ao da instruo atual.

Organizao de Computadores

Antnio Borges / Gabriel P. Silva deciso sobre desvio

Tempo

desvio condicional

Instrues abandonadas

prxima instruo

Figura 13 Desvio Condicional Por exemplo, o efeito dos desvios condicionais: se o desvio ocorre, o pipeline precisa ser esvaziado, contudo, no se sabe se desvio ocorrer ou no at o momento em que a instruo de desvio chegue no estgio de Execuo. Solues possveis so: Desvio Atrasado: uma acomodao ao problema, a instruo aps o desvio sempre executada. Nesse caso cabe ao compilador encontrar instrues que possam ser movidas para depois do desvio. Caso isso no seja possvel a posio preenchida com uma instruo de nop; Predio esttica de desvios: o compilador presume que o desvio vai ser tomado ou no, levando em conta o endereo alvo do desvio, a instruo de alto nvel que gerou o desvio, etc. A taxa de acerto para a predio esttica costuma ser na ordem de 80%; Predio dinmica de desvios: nesse caso o processador possui circuitos que fazem a predio do resultado do desvio condicional no comportamento daquele desvio no passado. As taxas de acerto obtidas com esse mtodo so bastante altas, chegando at a 97% nos esquemas mais sofisticados

Organizao de Computadores 6.5.3. Conflito por Dependncia de Dados

Antnio Borges / Gabriel P. Silva

As instrues dependem de resultados de instrues anteriores, que esto no pipeline e ainda no foram completadas. Por exemplo, no trecho de cdigo a seguir a instruo sub precisa do valor de r1 j no estgio de Decodificao, mas a instruo "add" ainda est no estgio de Execuo, e o resultado s ser escrito no estgio de Escrita:

add R1, R2, R3 sub R5, R4, R1


Solues: No caso das dependncias verdadeiras, o pipeline precisa ser parado durante certo nmero de ciclos. A instruo que precisa do dado fica parada no estgio de decodificao at que o resultado seja atualizado no banco de registradores. O uso de adiantamento dos dados, que um caminho de dados direto entre a sada da ALU e sua entrada, uma soluo usualmente empregada, e resolve o problema quando as instrues dependentes so consecutivas uma outra no pipeline. Veja a ilustrao a seguir:

Figura 23 - Adiantamento de Dados Adiantamento

E D

M E

W M W

Em realidade, h diversos tipos de dependncias de dados: Dependncias verdadeiras ou diretas: que so as vistas anteriormente e se constituem em um problema para os pipelines convencionais. Dependncias falsas: so um problema apenas em pipelines de arquiteturas avanadas, que executam as instrues fora da ordem especificada no cdigo objeto. Podem ser classificadas em: antidependncia: a instruo seguinte escreve em um registrador que lido pela instruo anterior. dependncia de sada: a instruo seguinte escreve no mesmo registrador que escrito pela instruo anterior.

Organizao de Computadores

Antnio Borges / Gabriel P. Silva

6.6. Tratamento de Excees nos Pipelines Uma instruo pode ter problemas durante a sua execuo. Por exemplo, uma instruo de multiplicao pode dar overflow, ou seja, o resultado pode no caber em 32 bits. Toda vez que uma instruo no consegue terminar normalmente sua execuo, diz-se que ocorreu uma exceo. O uso do pipeline dificulta o tratamento das excees, pois precisamos evitar que as instrues que j esto no pipeline, mas que foram buscadas depois da instruo que causou a exceo, alterem o estado da mquina, ou seja, que escrevam seus resultados no banco de registradores ou na memria. Essas instrues precisam ser anuladas ou descartadas do pipeline, e o apontador de instrues (PC) deve apontar para a instruo correta, aquela que causou a exceo, no incio da rotina do que ir fazer o tratamento das excees. Existe tambm um problema quando vrias excees ocorrem ao mesmo tempo no pipeline (p.ex. overflow e acesso a um endereo de memria invlido). A soluo nesse caso priorizar as excees, fazendo o atendimento daquela mais prioritria. Em mquinas com despacho de vrias instrues por ciclo, garantir sempre um estado da mquina consistente pode ser muito complexo em termos de hardware. Nesses casos, pode-se utilizar um modelo de excees imprecisas, em que a exceo sempre detectada, mas no se pode garantir que o estado da mquina no foi alterado.

6.7. Mquinas que Despacham Mltiplas Instrues por Ciclo


6.7.1. Superescalares

As mquinas superescalares so conhecidas por possurem mais de um pipeline em paralelo em sua arquitetura. Desse modo, duas ou mais instrues so buscadas, decodificadas, executadas e escrevem seus resultados a cada ciclo de mquina. Claro, isto gera problemas de acesso aos recursos comuns, que precisam ser duplicados em sua maioria. Mas em alguns casos isso problemtico, como por exemplo, a duplicao do barramento de acesso memria. No caso do banco de registradores, comum haver vrias portas de leitura e de escrita, para permitir a leitura de vrios operandos e a escrita de vrios resultados a cada ciclo. Um outro fator muito importante nas arquiteturas superescalares o escalonamento das instrues que vo ser executadas. Devido aos problemas de dependncias de dados e controle, algumas instrues no esto prontas para serem executadas. Esquemas mais simples de despacho, simplesmente congelam o pipeline nesse caso. Esquemas mais sofisticados continuam a busca e tentam executar as instrues fora-de-ordem, com mecanismos no ciclo de escrita que permitam a retirada dessas instrues, e atualizao do estado da mquina, na mesma ordem estabelecida pelo programa objeto. Exemplos de processadores com arquitetura superescalar so o Pentium IV da Intel, Athlon da AMD e UltraSPARC da Sun.

Organizao de Computadores 6.7.2. VLIW

Antnio Borges / Gabriel P. Silva

VLIW acrnimo para Very Long Instruction Word. So mquinas que exploram o paralelismo no nvel das instrues. Vrias operaes so executadas em paralelo em diferentes unidades funcionais, tais como em mquinas superescalares, a diferena est no controle do despacho e na terminao das operaes: nas mquinas superescalares: as dependncias so resolvidas em tempo de execuo por um hardware dedicado, nas mquinas VLIW as dependncias so resolvidas em tempo de compilao pelo compilador. Em uma mquina VLIW, vrias operaes (instrues em uma mquina normal) so codificadas em uma mesma instruo. A palavra de instruo bastante longa, podendo conter vrias operaes (que operam sobre vrios operandos) independentes. A posio de cada operao dentro da palavra VLIW determina a unidade funcional que ser usada. Deste modo, o hardware de despacho simples. O escalonamento das operaes consiste em determinar as operaes que sero executadas em paralelo. Em uma mquina VLIW o compilador responsvel por esta tarefa. Operaes que so executadas em paralelo so atribudas mesma palavra de instruo. Dentro de um mesmo bloco bsico (seqencial) estas instrues podem ser escalonadas com base no fluxo de dados. J o escalonamento que ultrapasse as fronteiras entre os blocos bsicos exige tcnicas mais elaboradas. Exemplos de arquitetura do tipo VLIW so o Itanium da Intel e o Crusoe, da Transmeta.

Potrebbero piacerti anche