Sie sind auf Seite 1von 40

Univ ersidade Federal do Rio de Janei ro Info rmtic a DCC/IM

Arquitetura de Computadores II

Arquiteturas Superescalares
Gabriel P. Silva

Arquiteturas Pipelined com Desempenho Superior ao de uma Instruo por Ciclo


Arquiteturas Superescalares
Execuo de mltiplas instrues, escalonadas por hardware e/ou software, concorrentemente.

Arquiteturas VLIW (Very Long Instruction Word)


Execuo de mltiplas operaes, escalonadas por

software, concorrentemente.

Arquiteturas Multithreading e SMT


Executam instrues de mais de um fluxo (threads) simultaneamente.
Combinao de vrios processadores de um mesmo

Arquiteturas Multicore

tipo (acima descrito) em uma nica pastilha.

Arquiteturas Superescalares
Organizadas internamente como mltiplos pipelines e com banco de registradores com mltiplas portas de leitura e de escrita, com mltiplas instrues iniciadas e terminadas a cada ciclo. O grau de concorrncia das instrues situa-se na prtica entre 2 e 4. As instrues so despachadas para execuo somente quando no violam regras de dependncia de dados, de controle e quando no existem conflitos estruturais. O escalonamento das instrues pode ser feito por software e/ou por hardware. O cdigo objeto para estas arquiteturas compatvel com o de arquiteturas escalares convencionais.

Arquiteturas Superescalares
Capacidade para realizar busca e decodificao de mltiplas instrues por ciclo;

Existncia de uma Janela de Instrues que isola os estgios de busca e decodificao dos estgios de execuo propriamente dita da instruo modelo de despacho fora-de-ordem: Janela Centralizada Estaes de Reserva (Algoritmo de Tomasulo) Esquemas eficientes de predio dinmica de desvios;

Arquiteturas Superescalares
Recuperao do estado da mquina em caso de excees ou de previses erradas de desvios Reorder Buffer;

Remoo de dependncias de dados Scoreboarding, Tomasulo e/ou Renomeao Dinmica; Lgica de despacho concorrente para as instrues armazenadas na Janela de Instrues;

Arquiteturas Superescalares
Mltiplos barramentos para comunicao de operandos e resultados e Banco de Registradores com mltiplas portas de leitura e de escrita, incluindo a existncia de lgica de arbitrao se o nmero de recursos menor que o mximo possivelmente necessrio; Mltiplas unidades funcionais: ALU, Ponto Flutuante, Desvio, Load/Store; Suporte para tratamento de dependncia de dados entre instrues de load e store; A figura a seguir mostra um diagrama de blocos de um estrutura tpica de uma arquitetura superescalar.

MIPS R10000

Busca e Decodificao
A arquitetura superescalar s efetiva se a taxa mdia com que as instrues so buscadas e decodificadas for superior taxa mdia com que instrues so executadas. Esquema eficiente fundamental. de predio de desvios

Necessidade de se dispor de um barramento de acesso ao cache de instrues com largura adequada e de um decodificador de instrues capaz de decodificar mltiplas instrues simultaneamente. Um decodificador de mltiplas instrues demanda a realizao da busca de vrios operandos em paralelo o banco de registradores com mltiplas portas de leitura.

Degradao do Desempenho da Operao de Busca de Instrues

Falha no acesso cache de instrues:

Bem mais do que um ciclo gasto para a busca do prximo conjunto de instrues.

Predio errada de desvios: As instrues buscadas antecipadamente mostram-se inteis e novas instrues tero que ser buscadas. Alternativa possvel: busca simultnea de instrues de dois ou mais caminhos possveis do cdigo a cada desvio condicional aumento no custo de hardware (cache de instrues com mltiplas portas de acesso).

Degradao do Desempenho da Operao de Busca de Instrues


Desalinhamento do endereo das instrues alvo

de um desvio em relao ao incio de um bloco de cache:


Menos instrues teis so efetivamente buscadas slots de decodificao podem ficar subtilizados se a unidade de busca no for capaz de realinhar as instrues antes de pass-las unidade de decodificao.

Trace Cache
Esquema proposto por Rotenberg, Bennet e Smith (University of Wisconsin) para aumentar a eficincia das operaes de busca de instrues. Utiliza uma memria cache adicional para armazenar os traces das instrues mais recentemente executadas, que consultada pela unidade de busca de instrues. Em situaes de loop, o Trace Cache tende a ter uma alta taxa de acerto.

Trace Cache
Trabalhos bastante recentes tem proposto o uso de Trace Caches para implementar mquinas VLIW com cdigo compatvel com mquinas no VLIW: Estas arquiteturas, denominadas arquiteturas VLIW com trace scheduling dinmico, implementam 2 mquinas: uma mquina RISC convencional baseada em um pipeline simples e uma mquina VLIW. A mquina VLIW s entra em operao quando o cdigo de um trace, armazenado no Trace Cache, executado pela segunda vez. A compactao de cdigo gerada por hardware a partir do cdigo armazenado no Trace Cache.

Trace Cache
Utiliza uma memria cache adicional para armazenar os traces das instrues mais recentemente executadas, que consultada pela unidade de busca de instrues. Quando muitos laos so executados, o trace cache tende a ter uma alta taxa de acerto.

I-cache

Trace cache

Trace Cache

Trace Cache
Trace cache um novo paradigma para as caches de instruo. A Trace cache uma cache de instrues especial que captura seqncia dinmicas de instrues, em contraste com a cache de instrues que contm uma seqncia esttica de instrues. Como a cache de instrues, a trace cache acessada usando o endereo inicial do prximo bloco de instrues. Diferentemente da cache de instrues, ela armazena instrues que so logicamente contguas em posies que so fsicamente contguas. Uma linha da trace cache armazena um segmento do trace de instrues dinmico atravs de mltiplos desvios executados.

Trace Cache
Quando um grupo de instrues processado, ele capturado pela unidade de preenchimento ou fill unit. A fill unit maximiza o tamanho do segmento e finaliza-o quando o segmento no pode ser mais expandido.

O nmero de instrues em um trace limitado pelo tamanho da linha da trace cache. Os segmentos finalizados so escritos na trace cache.

As instrues podem ser enviadas diretamente para as unidades funcionais sem necessidade de serem novamente decodificadas,. Isto particularmente til no caso do Pentium IV, que faz a converso de instrues CISC para instrues RISC, durante o processo de execuo das instrues.

Trace Cache Desempenho


Trs aplicaes do SPECint95 foram simuladas em uma mquina com largura de busca de 16 instrues por ciclo e com predio perfeita de desvio.

Janela de Instrues
A Janela de Instrues armazena o resultado da decodificao das instrues e isola o estgio de busca e decodificao de instrues dos estgios de execuo propriamente dita das instrues. Pode ser implementada de forma Centralizada (Janela Centralizada ou Central Window) ou distribuda pelas unidades funcionais (Estaes de Reserva ou Reservation Stations). A janela centralizada armazena todas as instrues j decodificadas e ainda no despachadas para execuo, enquanto que cada Estao de Reserva s armazena as instrues destinadas Unidade Funcional associada a ela. A Janela Centralizada pode ser, em geral, dimensionada com uma capacidade menor do que a capacidade total das diversas Estaes de Reserva.

Janela de Instrues
Na implementao com Janela Centralizada mais de uma instruo pode ser despachada por ciclo para as diferentes Unidades Funcionais enquanto que cada Estao de Reserva pode despachar no mximo uma instruo por ciclo para sua Unidade Funcional. A Janela Centralizada deve ser capaz de suportar instrues de diferentes formatos (diferentes tamanhos) enquanto que as Estaes de Reserva podem ser dedicadas apenas ao formato das instrues executadas pela sua Unidade Funcional. A lgica de controle das implementaes baseadas em Janela Centralizada usualmente mais complexa que a das Estaes de Reserva, j que necessrio administrar diferentes tipos de instrues e Unidades Funcionais, disparar simultaneamente mais de uma instruo para as diferentes Unidades Funcionais, etc.

Bit de Scoreboard
Este mtodo se baseia na associao de um nico bit

(bit de scoreboard) com cada registrador para indicar se existe alguma instruo ainda no completada que modifica aquele registrador. O bit de scoreboard associado a cada registrador ativado quando uma instruo que escreve nesse registrador decodificada. O bit desativado novamente quando a operao de escrita no registrador se consuma. Como s h um bit de scoreboard por registrador, apenas uma instruo que modifique aquele registrador pode estar pendente. O decodificador suspende sua operao quando uma instruo que altera um registrador com o bit de scoreboard j ativado detectada elimina as dependncias de sada.

Tabela de Renomeao
Para realizar a renomeao normalmente utilizada uma tabela de renomeao, que endereada com os nmeros dos registradores arquiteturais (vistos pelo programador) que esto sendo lidos pelas instrues. A tabela de renomeao faz a converso fornecendo na sada os registradores fsicos para onde foram mapeados os registradores arquiteturais. Uma condio necessria para isso que o nmero de registradores fsicos seja maior que o nmero de registradores arquiteturais. Cada vez que uma instruo que escreve em um registrador despachada, esse registrador mapeado para um novo registrador fsico a partir de uma lista de livres.

Tabela de Renomeao
A tabela de renomeao deve ser capaz de renomear em um ciclo tantos registradores quantos forem os operandos lidos pelas instrues que a arquitetura consegue despachar em um ciclo. Tambm tem que atualizar o mesmo nmero de registradores que so escritos. Deste modo, uma estrutura que possui mltiplas portas de leitura e de escrita. Por exemplo: se a arquitetura pode despachar at 4 instrues por ciclo, ento a tabela de renomeao deve ter 8 portas de leituras e 4 de escrita. A tabela de renomeao guarda o mapeamento mais recente para cada registrador arquitetural.

Tabela de Renomeao
Deste modo, existiro algumas outras instrues, j despachadas, que esto mapeando o mesmo registrador arquitetural para outros registradores fsicos. Um registrador fsico j alocado pode ser colocado na lista de livres quando no houver nenhuma instruo j despachada precisando do seu resultado E o registrador arquitetural j tenha sido mapeado para outro registrador fsico por uma nova instruo. Mais adiante, veremos quando essa condio satisfeita. Se no houver registradores fsicos disponveis (lista de livres vazia) o despacho das instrues suspenso.

Algoritmo de Tomasulo
O algoritmo de Tomasulo, desenvolvido para o sistema IBM 360/91 em 1967, ainda o mais eficiente para o despacho seqencial de instrues fora-deordem. Tambm conhecido como algoritmo associativo, o algoritmo de Tomasulo realiza a difuso dos resultados produzidos pelas unidades funcionais atravs de um barramento global (CDB) que interconecta os componentes do sistema: unidades funcionais, estaes de reserva e banco de registradores. Diversos processadores (PowerPC, Pentium, SPARC64) da atualidade utilizam variaes deste algoritmo para o despacho de mltiplas instrues por ciclo.

Algoritmo de Tomasulo

O Banco de Registradores
Cada entrada no banco de registradores do IBM 360/91 formada por trs campos. O primeiro campo, denominado busy bit, indica se o valor armazenado est atualizado. Caso o valor do registrador esteja desatualizado, o segundo campo, denominado tag, aponta para a estao de reserva contendo a instruo mais recente que vai produzir este valor. Finalmente, o terceiro campo o registrador propriamente dito.

Algoritmo de Tomasulo
A unidade de ponto flutuante do processador constituda por um somador e por uma unidade para multiplicao /diviso. O somador e o multiplicador possuem trs e duas estaes de reserva, respectivamente.

A Difuso de Resultados no CDB


Toda vez que uma unidade funcional conclui uma operao, o resultado difundido, juntamente com o seu tag, atravs de um barramento global, para o banco de registradores e estaes de reserva. O barramento global denominado CDB (Common Data Bus). A difuso associativa: o resultado da operao transmitido associativamente para os demais componentes, junto com o tag que identifica a estao de reserva que armazena a instruo que produziu o dado.

A Difuso de Resultados no CDB


Os componentes do sistema monitoram continuamente o barramento de resultados, verificando se o tag ora transmitido coincide com o campo de tag aguardado.

Ocorrendo a coincidncia, o resultado copiado no campo correspondente da estao de reserva ou do banco de registradores. Caso contrrio ignorado. Essa transferncia associativa deu origem ao termo algoritmo de despacho associativo''.

Resoluo das Dependncias de Dados


Se os recursos (unidade funcional e operandos fonte) estiverem disponveis, a instruo iniciada imediatamente, antes mesmo do trmino de suas sucessoras. Caso contrrio, feira a cpia dos operandos disponveis para as estaes de reserva, o que resolve o problema das antidependncias. As instrues subseqentes podem ser enviadas para execuo nas unidades funcionais, mesmo que uma instruo anterior no possa ser executada imediatamente.

Resoluo das Dependncias de Dados


No caso de dependncias verdadeiras, a instruo sucessora despachada para uma estao de reserva, junto com o tag indicando qual das instrues precedentes que j foram despachadas, ir gerar o resultado que ser o operando fonte.

Ao simular automaticamente um nmero infinito de registradores virtuais para a renomeao, o algoritmo de Tomasulo torna desnecessrias as atualizaes dos registradores destino de instrues apresentando dependncias falsas.

Buffer de Reordenao
O Buffer de Reordenao implementado como

uma memria fifo associativa, tipicamente com 32 entradas.

Quando uma instruo decodificada, alocada a ela uma entrada no final da fila do Buffer de Reordenao. Quando uma instruo completada, o valor do resultado gerado por ela escrito na posio a ela alocada no Buffer de Reordenao (busca associativa) e no no Banco de Registradores.

Buffer de Reordenao
Quando uma instruo atinge a primeira posio da fila armazenada no Buffer de Reordenao, todas as instrues anteriores a ela na seqncia em ordem necessariamente j completaram. Se essa instruo no gerou excees, o valor do seu resultado escrito no Banco de Registradores e a instruo eliminada da fila. O registrador fsico alocado para o mesmo registrador arquitetural por uma instruo prvia pode ser ento liberado para a lista de livres. O decodificador de instrues permanece funcionando enquanto houver entradas livres no Buffer de Reordenao.

Buffer de Reordenao
O Buffer de Reordenao deve ter uma entrada alocada a toda instruo decodificada. Para as instrues de desvio, o valor do contador de programas da instruo alvo do desvio deve ser armazenado nessa entrada. Para as instrues que modificam registradores, o resultado da operao e a identificao do registrador devem ser armazenados. Cada entrada do Buffer de Reordenao deve conter bits de status informando se a instruo foi completada, se ocorreu alguma exceo ou se a instruo correspondente de desvio e que tipo de predio de desvio foi utilizado (desvio tomado ou no tomado).

Buffer de Reordenao
Para recuperar o estado do processador quando ocorre uma predio errada de desvio ou exceo, basta aguardar que a instruo de desvio correspondente atinja a primeira posio da fila. Nesse ponto, o Buffer de Reordenao totalmente descartado e o valor do contador de programas restaurado com o valor do contador de programas referente instruo alvo do desvio armazenado nessa entrada se uma predio de desvio no tomado havia sido feita. Em caso contrrio, o contador de programas restaurado pelo simples incremento do valor do contador de programas associado instruo pelo Buffer de Reordenao.

Buffer de Reordenao e Tabela de Renomeao


Existe uma cpia da sada do buffer da tabela de renomeao, que guarda o mapeamento seguro dos registradores arquiteturais para os registradores fsicos. Essa tabela atualizado com o mapeamento do registrador que escrito por cada instruo que chega ao final da fila, se houver. Ou seja, ela guarda o mapeamento especulativo dos registradores . no

Em caso de exceo ou predio incorreta do desvio, esta cpia da tabela restaurada para a verdadeira tabela de renomeao, restabelecendo o estado correto do processador.

Unidade Funcional de Load/Store


Instrues de Store s podem ser executadas depois que todas as instrues anteriores a ela, na ordem definida pelo programa, j completaram preserva o estado do sistema nos diferentes nveis de hierarquia do sistema de memria. As instrues de Load podem ser despachadas para execuo fora de ordem em relao s instrues de Store, desde que elas no possuam dependncia de dados em relao s instrues de Store pendentes.

Unidade Funcional de Load/Store


A Unidade Funcional de Load/Store freqentemente implementada com trs componentes bsicos: Estao de Reserva, Unidade de Endereamento e Store Buffer. As instrues na Estao de Reserva so enviadas em ordem para a Unidade de Endereamento, que calcula o endereo efetivo de memria a ser utilizado pelas instrues de Load/Store.

Unidade Funcional de Load/Store


O Store Buffer retm as instrues de Store despachadas com o endereo de memria j calculado e o valor do dado a ser escrito, at que todas as instrues anteriores a ela j tenham sido completadas, ou seja, at que a instruo de Store atinja a primeira posio da fila no Buffer de Reordenao.

Para as instrues de Load, verificado se o endereo de memria gerado pela Unidade de Endereamento no est presente no Store Buffer.

Unidade Funcional de Load/Store


Caso no esteja, as instrues de Load realizam acesso memria fora de ordem em relao s instrues de Store armazenadas no Store Buffer (Load Bypassing).

Se o endereo de memria de uma instruo de Load est presente no Store Buffer, o valor a ser armazenado em memria pela instruo de Store presente no Store Buffer o valor usado pela instruo de Load, que, nesse caso, nem precisa realizar o acesso memria (Load Bypassing + Forwarding).

Das könnte Ihnen auch gefallen