Beruflich Dokumente
Kultur Dokumente
Arquitetura de Computadores II
Arquiteturas Superescalares
Gabriel P. Silva
software, concorrentemente.
Arquiteturas Multicore
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.
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).
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.
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.
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''.
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
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.
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.
Para as instrues de Load, verificado se o endereo de memria gerado pela Unidade de Endereamento no est presente no Store Buffer.
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).