You are on page 1of 12

PROCESSADOR SUPER ESCALAR

Notas de aula (Stalling) - Carlos Sica - 1999

1.

Histrico

1.1 Computao Paralela A rea de sistemas de computao, estuda paralelismo desde o surgimento dos computadores. J na dcada de 40, Von Neumann debatia algoritmos para solues de equaes diferenciais com tcnica de paralelismo. As idias de executar tarefas simultaneamente e de antecipar atividades so amplamente utilizadas atualmente nas arquiteturas. Neste contexto so discutidos os seguintes conceitos: busca antecipada de instrues (lookahead); superposio de fases de execuo de instruo (overlap), mltiplas unidades funcionais, estgios de execuo (pipeline), processamento vetorial e multiprocessamento. Assim, dentre os principais motivos para o surgimento da computao paralela citam-se: desempenho, modularidade, tolerncia a falhas e o aparecimento de microprocessadores de 32 bits e, os nveis de paralelismo mais evidentes so: Hardware (mltiplas unidades funcionais e pipeline) Micromquina (microcdigo) Convencional (conjunto de recursos visveis ao programador) Sistema operacional (concorrncia de processos) Linguagem de programao (fragmentao de programa)

1.2 RISC x CISC Segundo (Stallings, 1996), numa implementao da arquitetura super escalar de um processador, instrues comuns como: aritmtica inteira e de ponto flutuante, leitura e escrita na memria e desvios condicionais, podem ser inicializadas simultaneamente e executadas independentemente e tal implementao aumenta o grau de complexidade relacionada s instrues pipelined. As implementaes da arquitetura superescalar so feitas baseadas, principalmente, na arquitetura RISC, porm, elas podem ser feitas tanto na RISC como na CISC. A primeira afirmao devida ao fato de que o pequeno conjunto de instrues da arquitetura RISC, j o revela em parte como sendo a tcnica superescalar. Apesar do perodo de gestao da arquitetura RISC para a decolagem comercial desde o verdadeiro incio da pesquisa com o IBM801 e o RISC de Berkeley ter sido de sete a oito anos, a disponibilizao da primeira mquina superescalar comercialmente ocorreu em um ou dois anos.

2.

Introduo
de uma nica instruo manipulando operandos discretos; 1

O termo escalar utilizado para distinguir os modelos de execuo:

das instrues vetoriais, que desencadeiam a ativao em paralelo de mltiplos elementos de processamento, todos executando uma nica operao.

Alm destes dois modelos, existe o que executa vrias instrues concorrentemente, sem que elas precisem ter o mesmo cdigo de operao (no vetoriais). Este modelo utilizado pelos computadores superescalares, assim chamados, por processarem instrues escalares em grande grau de paralelismo. Computadores superescalares so mquinas projetadas para melhorar a performance de execuo de instrues escalares, em outras palavras, eles exploram o paralelismo em baixo nvel e, assim, podem executar diversas instrues de mquina simultaneamente, contanto que, todas sejam provenientes do mesmo programa objeto. O nome contrasta com o propsito dos processadores vetoriais e matriciais, pois, utilizam a tcnica de processar vrias instrues de um mesmo tipo em paralelo, enquanto que um superescalar pode processar simultaneamente instrues diferentes. Este debate feito porque cada mquina especializada em executar determinados tipos de programas especficos e, como na maioria das aplicaes, a massa de operaes so quantidades escalares, a "filosofia" superescalar representa o prximo passo na conduo dos processadores de propsito geral para a alta performance, que podem ento, executar eficientemente uma larga gama de programas de aplicao no se limitando aplicaes vetoriais ou matriciais. 2.1 Superescalar x superpipelined Uma tcnica alternativa para atingir alta performance no processamento intitulada como superpipelined, termo utilizado pela primeira vez em 1988 [JOUP88]. Essa tcnica explora o fato de que o estgio de pipeline executa tarefas que requerem menos de meio ciclo de clock. Assim, um processador com velocidade de clock interno dobrada, permite um aumento de performance de duas tarefas executadas em um nico ciclo de clock externo. (MIPS R4000) Comparao: Uma mquina usando pipeline bsico executa uma instruo por ciclo de clock e tem e um estgio de pipeline por clock tambm. O pipeline tem quatro estgios: busca, decodificao, execuo e armazenamento do resultado. Note que, ainda que vrias instrues estejam sendo executadas concorrentemente, somente uma instruo est no estgio de execuo de cada vez. A implementao superpipelined capaz de executar dois estgios de pipeline de cada vez. Um forma alternativa de enxergar isso, entender que a funo executada em cada estgio, pode ser dividida em duas partes no sobrepostas e cada pode executar em meio ciclo de clock. Uma implementao superpipelined que se comporta deste modo chamada de grau 2. A implementao superescalar pode executar duas instncias de cada estgio em paralelo. Tanto o superpipelined como o superescalar comparados, tem o mesmo nmero de instrues executando ao mesmo tempo no mesmo estado. O processador super pipelined parece com o superescalar ao incio de cada programa de cada desvio de fluxo.

2.2 Limitaes A tcnica superescalar depende da capacidade de executar mltiplas instrues em paralelo. O termo intruction-level parallelism refere-se ao grau no qual, em mdia, instrues de um programa podem ser executadas em paralelo. A combinao das tcnicas de otimizao baseada em compilador e baseada em hardware, pode ser utilizada para maximizar o nvel de paralelismo das instrues. Antes de analisar a tcnica utilizada pelas mquinas superescalares para incrementar o nvel de paralelismo, necessrio entender as limitaes de paralelismo que o sistema deve tolerar. [JONH91] lista cinco limitaes: True data dependency, Procedural dependency, Resource conflicts, Output dependency e Antidependency. Estas limitaes so chamadas por alguns autores de dependncias verdadeiras no caso das trs primeiras e, de falsas dependncias, no caso das duas ltimas, que sero discutidas nos itens 4.1.2 e 4.1.3, repectivamente. 2.2.1 Dependncia de dados (true data dependency) Considere a seguinte seqncia: Add r1,r2 ; r1=r1+r2 ; r3=r1

Move r3,r1

A segunda instruo pode ser buscada e decodificada a qualquer momento, mas no pode ser executada at que a primeira seja executada. A razo que ela depende do dado produzido pela primeira. Essa situao nominada como true data dependency, chamada ainda de flow dependency ou write-read dependency. Sem a dependncia duas intrues podem ser buscadas, interpretadas e executadas em paralelo. Se existe uma dependncia de dados entre a primeiro e a segunda instruo, ento a segunda atrasada tantos ciclos de clock quantos requerido para remover a dependncia. Em geral, toda instruo deve ser atrasada at que todos os seus valores de entrada tenham sido produzidos. Esta caracterstica, a princpio, limita a performance de qualquer pipeline, porm, em um pipeline escalar simples, a seqncia de instrues acima no causa atraso. 2.2.2 Dependncia procedural (procedural dependency) A presena de instrues de desvio complica a operao de pipeline. A instruo seguinte ao desvio tem uma dependncia procedural e no pode ser executada at que o desvio seja efetuado. Este tipo de dependncia tambm afeta um pipeline escalar e, novamente, a conseqncia disso para um pipeline superescalar mais grave, visto que uma grande magnitude de oportunidade perdida com cada atraso. Essa anlise feita sobre desvios incondicionais, no caso de desvios condicionais a complexidade aumenta, pois, o processador no saber se o prximo cdigo a ser executado o que est logo aps a instruo de desvio, ou no alvo do desvio. Se uma instruo "variable-length" utilizada, ento outra variao de dependncia procedural aparece. Devido ao tamanho de uma instruo em particular ser desconhecido, ela deve ser decodificada, pelo menos parcialmente, antes da instruo seguinte ser

buscada. Isto impede a busca simultnea requerida pelo pipeline superescalar. Este um dos motivos que a tcnica superescalar seja aplicada em um arquitetura RISC ou aproximao desta, onde as instrues tem tamanho fixo. 2.2.3 Conflito de recursos (resource conflicts) Um conflito de recursos uma competio de duas ou mais instrues para o mesmo recursos ao mesmo tempo. Esses recursos podem ser: memria, cache, barramentos, portas e unidades funcionais como o caso do somador da ULA. Nos termos do pipeline, um conflito de recursos exibe comportamento similar uma dependncia de dados, contudo, existem diferenas: conflitos de recursos podem ser resolvidos por duplicao de recursos, enquanto que uma dependncia de dados no pode ser eliminada. Alm disso, quando uma operao toma um tempo elevado para ser executada, conflitos de recursos podem ser minimizados por um pipeline apropriado para unidades funcionais.

3.

Estudo do paralelismo de instrues e de mquina

3.1 Nvel de paralelismo entre instrues Acontece quando instrues agrupadas em seqncia so independentes e assim podem ser executadas em paralelo, utilizando recursos de hardware distintos. Como exemplo do conceito de nvel de paralelismo entre instrues, considere os fragmentos abaixo [JOUP89b]. load add add r1r2 r3r3,"1" r4r4,r2 add add store r3r3,"1" r4r3,r2 [r4] r0 paralelismo=1

paralelismo=3

As trs instrues da primeira coluna so independentes e, teoricamente, as trs podem ser executadas paralelamente. Contrastando com isso, as trs instrues da segunda coluna no podem ser executadas em paralelo porque a segunda instruo depende do resultado da primeira e, a terceira, depende da segunda. O nvel de paralelismo entre instrues determinado por dois fatores: a freqncia da dependncia de dados e da dependncia procedural contida no cdigo. Esses fatores, por sua vez, so dependentes da arquitetura do conjunto de instrues da mquina e da aplicao. Esse nvel de paralelismo tambm determinado [JOUP89a] pelo grau de latncia da operao: o tempo enquanto o resultado de uma operao fica disponvel, para uso como operando pela instruo subsequente. A latncia determina qual o atraso que uma dependncia de dado ou de procedimento causa.

3.2 Paralelismo de mquina a medida da capacidade do processador de obter vantagens sobre o paralelismo de instruo. O paralelismo de mquina determinado pelo nmero de instrues que ele pode buscar e executar ao mesmo tempo (o nmero de pipelines paralelos) e pela velocidade e sofisticao do mecanismo que o processador utiliza para encontrar instrues independentes. Tanto o paralelismo de instrues quanto o de mquina so fatores importantes na melhora da performance. Um programa pode no ter paralelismo de instruo suficiente para denotar vantagens sobre o paralelismo de mquina, j o uso de um conjunto de instrues de tamanho fixo, como no RISC, melhora o paralelismo em nvel de instrues. Em outras palavras, um paralelismo de mquina limitado, no limitar a performance mais que a natureza do programa em si.

4.

Poltica de despacho de instrues

Como mencionado, mquinas paralelas no so to simples quanto ter mltiplas instncias de cada estgio pipeline. O processador deve tambm ter capacidade de identificar nveis de paralelismo de instruo e gerenciar a busca, decodificao e execuo de instrues paralelas. Despacho das instrues: processo de inicializao da execuo da instruo na unidade funcional do processador. Poltica de despacho das instrues: protocolo usado para o despacho das instrues. Em essncia, o processador fica vigiando o ponto corrente da execuo para localizar instrues que podem completar o (entrar no) pipeline e, ento, executar. Trs pontos da ordenao so importantes neste estudo: A ordem na qual a instruo buscada; A ordem na qual a instruo executada A ordem na qual a instruo altera registradores e posies de memria (write back) Quanto mais sofisticado o processador, menor o limite de estreitamento do relacionamento entres estes pontos. Para alcanar a utilizao mxima dos vrios elementos do pipeline, o processador dever alterar a ordem de um ou mais dos itens acima em relao a ordem de uma execuo estritamente seqencial. Uma responsabilidade do processador construir resultados corretos. Assim, o processador deve acomodar vrias dependncias e conflitos discutidos anteriormente. Em termos gerais, podemos agrupar o Despacho de instrues superescalares dentro das seguintes categorias: Despacho em ordem com concluso em ordem Despacho fora de ordem com concluso em ordem Despacho fora de ordem com concluso fora de ordem

4.1.1 Despacho em ordem com finalizao em ordem A poltica mais simples, despachar as instrues na ordem exata que ela foi concluda na execuo seqencial (despacho em ordem) e escrever os resultados na mesma ordem (ordem de concluso). Exemplo: um computador pipeline superescalar capaz de buscar e decodificar duas instrues ao mesmo tempo, executar em trs unidades funcionais separadas e trabalhar com duas instncias de pipeline de alterao em registrador ou memria (writeback) I1: necessita de dois ciclos para executar I3 e I4: sofrem conflito na mesma unidade funcional I5: depende do valor produzido em I4 I5 e I6: sofrem conflito na mesma unidade funcional
Ciclo 1 2 3 4 5 6 7 8 Decodifica I1 I2 I3 I4 I3 I4 I4 I5 I6 I6 Executa I1 I1 I2 I3 I4 I5 I6 I1 I3 I5 I2 I4 I6 Writeback

As instrues so buscadas duas de cada vez e passadas para a unidade de decodificao. Visto que as instrues so trazidas ao pares, a prxima dupla deve esperar at que o par do pipeline do estgio de decodificao esteja vazio. Para garantir a finalizao em ordem, as instrues esperam quando existem conflito de unidade funcional ou quando uma unidade funcional precisa mais que um ciclo para produzir resultado. 4.1.2 Despacho em ordem com finalizao fora de ordem A finalizao fora de ordem utilizada em processadores RISC superescalares para melhorar a performance de instrues que requerem vrios ciclos, por exemplo, as operaes de ponto flutuante no Motorola 88000. Exemplo: uso em processador superescalar. I2: pode executar e finalizar com prioridade I1, o que permite I3 finalizar antecipadamente
Ciclo 1 2 3 4 5 6 7 Decodifica I1 I2 I3 I4 I4 I5 I6 I6 Executa I1 I1 I2 I3 I4 I5 I6 I2 I1 I4 I5 I6 I3 Writeback

Com a finalizao fora de ordem, qualquer nmero de instrues podem estar no estgio de execuo ao mesmo tempo, respeitado o grau de paralelismo de mquina das unidades funcionais e dependncia procedural. Aqui surge o conceito de uma das dependncia falsas, a qual chamada de dependncia da sada (tambm chamada de dependncia de leitura e escrita). Exemplo: (I1) (I2) (I3) (I4) R3 = R3 op R5 R4 = R3 + 1 R3 = R5 +1 R7 = R3 op R4

A instruo I2, no pode ser executada antes da I1 porque ele precisa do resultado no R3 produzido em I1. Este um exemplo da dependncia de dados j discutida anteriormente. Similarmente, I4 deve esperar I3 porque ele usa o resultado produzido em I3. No relacionamento entre I1 e I3, no existe dependncia de dados, contudo, se I3 termina antes de I1, quando I4 for executar, provavelmente I1 j ter terminado e o valor contido em R3 ser errado, pois, foi produzido por I1. Por concluso, I3 deve completar depois de I1 para produzir um valor de sada correto. Para garantir isso, o despacho da terceira instruo deve ser congelado, se o resultado pode mais tarde ser sobrescrito por uma instruo anterior que demora para ser executada. A tcnica do despacho com finalizao fora de ordem, requer, com certeza, uma lgica de despacho de instrues mais complexa que o despacho em ordem, discutido no item anterior. Principalmente, se levarmos em considerao que mais difcil trabalhar em conjunto com interrupes e excees. Quando uma interrupo ocorre, a execuo suspensa no ponto corrente, para ser reassumida mais tarde. O processador deve garantir que a retomada seja feita no ponto exato e, no instante da interrupo, instrues anteriores a instruo que causou a interrupo j estejam completas. 4.1.3 Despacho fora de ordem com finalizao fora de ordem No mtodo com despacho em ordem, o processador somente decodificar instrues at o ponto da dependncia do conflito. Nenhuma instruo a mais decodificada at que o conflito seja resolvido. Como resultado, o processador no pode pesquisar pontos de conflito para instrues subsequentes, que podem ser independentes das que j esto carregadas no pipeline e, assim, seria til introduzi-las no pipeline. Para permitir o despacho fora de ordem, necessrio desacoplar o cdigo e executar estgios de pipeline. Isto feito com um buffer chamado de janela de instrues. Com essa organizao, aps o processador ter terminado a decodificao, a instruo colocada dentro da janela. Enquanto este buffer tiver espao vazio o processador pode continuar buscando e decodificando novas instrues. Quando um unidade funcional disponibilizada no estgio de execuo, uma instruo da janela pode ser inserida no estgio de execuo. Qualquer instruo da janela pode ser ativada contanto que: a) a unidade funcional que ela precisa esteja disponvel e b) nenhum conflito ou dependncia esteja bloqueando-a.

Nesta organizao, as instrues so executadas a partir da janela de instrues que mantm pouca relao com a ordem original do programa e, o resultado dessa organizao, que o processador ganha uma capacidade de previso, permitindo identificar instrues independentes que podem ser levadas para dentro do estgio de execuo. Exemplo:
Ciclo 1 2 3 4 5 6 Decodifica I1 I2 I3 I4 I5 I6 Janela I1, I2 I3, I4 I4, I5, I6 I5 I1 I1 Executa I2 I6 I5 I3 I4 I2 I1 I4 I5 I3 I6 Writeback

Em cada ciclo, duas instrues so buscadas para o estgio de decodificao, e a partir disso, sujeito as condies do tamanho do buffer, duas instrues so movidas do estgio de decodificao para a janela de instrues. Neste exemplo, foi possvel executar a instruo I6 antes da I5 (relembrando que I5 depende de I4, mas I6 no). Assim, um ciclo economizado nos estgios de execuo e alterao de dados e, consequentemente, a finalizao do conjunto feita um ciclo antes. A janela de instrues no um estgio adicional de pipeline, uma instruo entrar na janela, implica simplesmente que o processador tem informaes suficientes para avaliar qual instruo pode ser executada. O policiamento para o despacho fora de ordem e finalizao fora de ordem est sujeito a mesma exigncia descrita anteriormente, ou seja, uma instruo no pode ser executada se ela viola as dependncias ou conflitos. A diferena que mais instrues esto disponveis para execuo, reduzindo a probabilidade que um estgio de pipeline tenha que ser congelado. Aqui aparece uma nova dependncia, chamada de antidependncia (tambm chamada de dependncia de escrita-escrita) ilustrada abaixo. Exemplo: (I1) (I2) (I3) (I4) R3 = R3 op R5 R4 = R3 + 1 R3 = R5 +1 R7 = R3 op R4

I3 no pode ser completada antes que I2 inicie sua execuo com os operandos j buscados. Isto devido I3 atualizar o registrador R3 que um operando fonte para I2. Aqui surge a segunda dependncia falsa e, o termo antidependncia, utilizado porque a exigncia similar de uma dependncia de dados, porm, ao inverso, ou seja, ao invs de uma instruo produzir um valor que a segunda ir utilizar, a segunda instruo destri um valor que a primeira utiliza.

5.

Renomeao de registradores

Quando o despacho de instrues fora de ordem e/ou finalizao fora de ordem so aceitos, existe um crescimento da possibilidade do surgimento da dependncia da sada e da 8

antidenpendncia. Estas dependncias diferem dependncia de dados e conflito de recursos, que refletem o fluxo de dados atravs do programa e da seqncia de execuo. A dependncia da sada e a antidependncia, por outro lado, crescem em probabilidade, porque o valor no registrador pode no refletir a seqncia de valores ditados pelo fluxo do programa. Quando as instrues so despachadas e completadas em seqncia, possvel especificar o contedo de cada registrador em cada ponto de execuo. Quando a tcnica "fora de ordem" utilizada, os valores nos registradores no podem ser conhecidos com segurana em cada ponto no instante avaliado, considerada a seqncia de instrues ditadas pelo programa. Desta forma, os valores esto em conflito pelo uso de registradores e o processador deve resolver estes conflitos congelando ocasionalmente um estgio de pipeline. A antidependncia e a dependncia de sada so exemplos de conflitos de armazenamento. Mltiplas instrues concorrendo ao uso do mesmo registrador, geram exigncias que retardam a performance do pipeline. O problema mais detalhado quando utiliza-se a tcnica de otimizao de registradores (Cap 12), porque essas tcnicas de compiladores, tentam ao mximo utilizar registradores, maximizando o nmero de conflitos de armazenamento. Um mtodo para resolver esse tipo de conflitos de armazenamento baseado na tradicional soluo de conflitos de recursos: duplicao de recursos. Neste contexto a tcnica chamada de renomeao de registradores. Em essncia, os registradores so alocados dinamicamente pelo hardware do processador e a eles so associados os valores necessrios para as instrues, a qualquer momento. Quando um valor novo escrito no registrador, isto , quando uma instruo executada tem um registrador como operando destino, um novo registrador deve ser alocado para guardar esse valor. Subseqentemente, quando uma instruo acessa esse valor como operando fonte acontece o processo de renomeao: o registrador referenciado nessa instruo dever ser renomeado para referir ao registrador contendo o valor correto. Assim, a mesma referncia ao registrador original por diferentes instrues pose se referir a registradores diferentes se valores diferentes so almejados. Exemplo 1: R3b = R3a op R5a R4b = R3b + 1 R3c = R5a +1 R7v = R3c op R4b (I1) (I2) (I3) (I4)

A referncia para um registrador que utiliza ndice (registrador lgico), aponta para um registrador do segundo lote de hardware, alocado para guardar o novo valor. Quando uma nova alocao feita para um registrador lgico em particular, a referncia para ele como operando fonte das instrues subsequentes, so feitas para se referir ao registrador de hardware mais recentemente utilizado, em termos da seqncia das instrues do programa. Neste exemplo, a criao do registrador R3c na instruo I3 evita a antidependncia na segunda instruo e a dependncia da sada na primeira e no interfere com o valor correto a ser acessado pela instruo I4. O resultado que I3 pode ser utilizado imediatamente.

Sem a renomeao dos registradores, I3 no poderia ser executada at que a primeira instruo estivesse completa e a segundo estivesse executando. Em geral, os sistemas utilizam um conjunto de registradores acessveis pelo programador e outros invisveis, utilizados para a renomeao. Se considerarmos um banco de 16 registradores numerador de R0 a R15, a primeira metade, R0 a R7, seria visvel e, a segunda, R8 a R15, seria utilizada pela renomeao. Exemplo 2: I1 I2 I3 I4 I5 anlise: 1 e 2 so antidependentes 2 e 3 so dependentes de dados 2 e 4 tem dependncia de sada 3 e 4 so antidependentes 1 e 4 so dependentes 4 e 5 so dependentes Para executar I1 e I2 de forma independente, os registradores adicionais (R8 a R15) inacessveis ao programador so invocados: ao decodificar a instruo I2, o sistema nota percebe a antidependncia e, aps verificar a um registrador livre no banco, R 0 substitudo ou renomeado pelo primeiro livre criando um ponteiro para, suponhamos neste exemplo, R8. Como a I3 depende diretamente de I2, atravs do ponteiro criado, o registrador acessado ser R8. O algoritmo despacha a instruo I3, passando como parmetros para a unidade lgica os registradores R3, R8 e R2. Esta tcnica, referenciando R8, continua sendo utilizada at que R0 seja utilizada novamente como operando destino, como o caso da I4. I3 e I4 so antidependentes, e I2 e I4 tem dependncia de sada, assim, se no momento do atendimento de I4, as duas verses de R 0 (R0 e R8) estiverem sendo utilizadas, uma terceira verso ser criada, suponhamos R9 e, aps esta renomeao, I4 despachada para ser executada na unidade funcional adequada aps R1 estar pronto. Independente disso, o algoritmo de despacho continua sendo executado e, ao examinar I5, R0 substitudo, atravs de um ponteiro, por R9. Resultado: I1 I2 I3 I4 I5 R1 = R0 * 127; R8 = 255; R3 = R8 | R2; R9 = R1 & R5; R4 = R9 + R1; R1 = R0 * 127; R0 = 255; R3 = R0 | R2; R0 = R1 & R5; R4 = R0 + R1;

10

6.

Paralelismo de mquina

Foram discutidos trs tcnicas de hardware que podem ser utilizadas em processadores superescalares para melhorar sua performance: duplicao de recursos, execuo fora de ordem e renomeao. Exemplo de simulao de vrios seqncias de programa: O eixo vertical corresponde inferioridade de velocidade de uma mquina superescalar sobre uma mquina escalar. O eixo horizontal mostra o resultado de quatro organizaes alternativas de processadores. A mquina base no duplica qualquer unidade funcional, mas pode executar instrues fora de ordem. A segunda configurao duplica a unidade funcional carga/armazenamento que acessa a cache de dados. A terceira configurao duplica a ULA. A quarta duplica tanto a unidade de carga/armazenamento quanto a ULA.

Cada grfico mostra o resultado referente a janela de instruo com tamanho de 8, 16 e 32 instrues, o qual influi na quantidade de progresso que processador pode ter. A diferena entre os dois grficos que, no segundo, utilizada a renomeao de registradores. Isto eqivale a dizer que o primeiro grfico reflete uma mquina que limitada todas as dependncias e o segundo apenas s "true dependencies". Os dois grficos combinados levam para importantes concluso: A primeira que, provavelmente, no til adicionar unidades funcionais sem renomeao de registradores. Ocorre uma melhora insignificante na performance, baseada no custo de aumentar a complexidade do hardware. Com a renomeao de registradores, a qual elimina a antidependncia e a dependncia de sada, ganhos significativos so concludos adicionando mais unidades funcionais. Note, contudo, que existem diferenas significativas no ganho, entre a utilizao de janela de 8 instrues e janelas maiores, isso indica que se uma janela muito pequena, a dependncia de dados prevalecer sobre a utilizao efetiva de unidades funcionais extras; o processador deve ter a capacidade de se manter pesquisando instrues independentes em ordem para utilizar o hardware com maior eficincia.

7.

Previso de desvios

Qualquer mquina com pipeline de alta performance deve procurar trabalhar se preocupando dos desvios de fluxo. Por exemplo, o 486 trabalha o problema buscando tanto a prxima instruo da seqncia aps um desvio, quanto a instruo alvo do desvio. Contudo, devido existir dois estgios de pipeline entre a pr-busca e a execuo, esta estratgia incorre num atraso de dois ciclos quando o desvio feito. Com o advento das mquinas RISC, a estratgia do atraso de desvio foi explorada, permitindo ao processador calcular o resultado do desvio condicional antes de qualquer instruo no utilizvel ter sido pr-buscada. Com este mtodo, o processador sempre

11

executa uma instruo simples que segue imediatamente o desvio. Mantendo assim, o pipeline cheio enquanto o processador busca a nova seqncia de instruo. Com o desenvolvimento das mquinas superescalares, a tcnica do desvio atrasado tem sido menos utilizada. A razo que vrias instrues precisam ser executadas no atraso, aparecendo vrios problemas relacionados com dependncia de instruo. Desta forma, mquinas superescalares retornam tcnica pr-RISC de previso de desvio. Alguns, como o PowerPC 601, utilizam a tcnica de previso esttica de desvios. Outros, mais sofisiticados como PowerPC 620 e o Pentium, usam a dinmica, baseado na anlise da histria dos desvios.

12

You might also like