Académique Documents
Professionnel Documents
Culture Documents
Microarquiteturas Avanadas
Arquiteturas Superescalares
Gabriel P. Silva
ARQUITETURAS MISTAS
Combinaes dos modelos acima
Arquiteturas Superescalares
Organizadas internamente como mltiplos pipelines e com banco de registradores com mltiplas portas de leitura e de escrita, com mltiplas instrues iniciadas a cada ciclo. O grau de concorrncia de instrues situa-se na prtica entre 2 e4 As instrues so despachadas para execuo somente quando no violam regras de dependncia de dados ou de controle e quando no existem conflitos estruturais. O escalonamento das instrues pode ser feito por software ou por hardware. O cdigo objeto para estas arquiteturas compatvel com o de arquiteturas escalares convencionais. Processamento das instrues pode seguir trs possveis modelos: despacho em-ordem + trmino em-ordem despacho em-ordem + trmino fora-de-ordem despacho fora-de-ordem + trmino fora-de-ordem
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 forade-ordem: Janela Centralizada Estaes de Reserva (Algoritmo de Tomasulo) Esquemas eficientes de predio dinmica de desvios; Recuperao do estado da mquina em caso de excees ou de previses erradas de desvios Reoder Buffer; Remoo de dependncias de dados Scoreboarding ou Renomeao Dinmica (Reorder Buffer); Lgica para despacho concorrente de 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 de predio de desvios fundamental. Necessidade de se dispor de um barramento largo de acesso ao cache de instrues e de um decodificador de instrues capaz de decodificar mltiplas instrues simultaneamente: Decodificador para 4 instrues produz um desempenho 20-25% superior que um decodificador para apenas 2 instrues. Um decodificador de mltiplas instrues demanda a realizao da busca de vrios operandos em paralelo o Banco de Registradores e/ou o conjunto de registradores rascunho, utilizado para recuperao do estado em ordem da arquitetura (Buffer de Reordenao, Buffer de Histria, etc.), com mltiplas portas de leitura.
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. 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.
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, implementar o mecanismo de tag de seqencializao , etc.
Janela Centralizada
A Janela Centralizada uma memria com 16 a 32 entradas, inferior ao nmero total de entradas numa implementao alternativa com Estaes de Reserva. O decodificador de mltiplas instrues armazena na Janela Centralizada todas as instrues e operandos. O tamanho da Janela Centralizada, em nmero de entradas, dimensionado para evitar que o decodificador tenha que suspender sua operao por no haver mais espao para armazenar instrues e operandos. As seguintes funes devem ser desempenhadas pela lgica de controle da Janela Centralizada; Identificar as instrues que esto prontas para serem despachadas para execuo (instrues livres de dependncia); Selecionar dentre as instrues prontas as mais antigas para serem despachadas para cada Unidade Funcional; Despachar as instrues selecionadas se a Unidade Funcional correspondente estiver livre; Liberar prontamente as entradas correspondentes s instrues despachadas para uso do decodificador;
Estaes de Reserva
As Estaes de Reserva so implementadas como memrias com poucas entradas (2 a 8) associada a cada Unidade Funcional da arquitetura. O decodificador de mltiplas instrues armazena em cada Estao de Reserva as instrues e operandos relativos quela Unidade Funcional. O tamanho de cada Estao de Reserva em nmero de entradas dimensionado para evitar que o decodificador tenha que suspender sua operao por no haver mais espao para armazenar instrues relativas a uma dada Unidade Funcional. A lgica de controle das Estaes de Reserva pode ser bastante simplificado se, localmente, for adotada a poltica de despacho em ordem, considerando apenas a instruo mais antiga como candidata a ser despachada a Estao de Reserva funciona como sendo uma FIFO A queda de desempenho provocada por esta simplificao , em geral, pequena, na faixa de 1% a 2%.
Estaes de Reserva
As seguintes funes devem ser desempenhadas pela lgica de controle das Estaes de Reserva: Identificar as instrues que esto prontas para serem despachadas para execuo (instrues livres de dependncia); Selecionar dentre as instrues prontas a mais antiga para ser despachada; Despachar a instruo Funcional estiver livre; selecionada se a Unidade
Monitorar os tags que transitam nos barramentos de resultados para, quando houver correspondncia, armazenar estes resultados no espao reservado a eles nas estaes de reserva mecanismo de bypass grande nmero de comparadores.
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-de-ordem. 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.
Estaes de Reserva
So buffers colocados entre o estgio de despacho e o de execuo que permitem o despacho de instrues mesmo que os operandos no estejam disponveis. Ao invs de transferir o valor do operando, o algoritmo associativo transfere para a estao de reserva o tag correspondente estao que armazena a instruo que produzir o resultado esperado. Uma vez despachada, a instruo permanece na estao de reserva at que seja concluda. Nesse momento, ela descartada, liberando a estao. A instruo ser iniciada quando seus operandos e a unidade funcional apropriada estiverem disponveis. Graas ao esquema de despacho para a estaes de reserva, instrues no IBM 360/91 podem ser iniciadas, executadas e terminadas fora da ordem original em que aparecem no cdigo objeto.
O Banco de Registradores
Antes de transferir a instruo corrente para a estao de reserva, o algoritmo de Tomasulo examina os busy bits dos registradores fonte. Se estiveram atualizados, o contedo dos registradores transferido para a estao de reserva. Caso contrrio, o campo tag do registrador fonte copiado no campo tag da estao de reserva onde a instruo atual est sendo alocada. Em seguida, o busy bit do registrador destino da instruo corrente modificado, indicando para as instrues subseqentes que o contedo daquele registrador no est atualizado. Finalmente, o algoritmo associativo transfere para o campo tag do registrador a identificao da estao de reserva que recebeu a instruo corrente.
Seqncia em ordem Estado de Instrues em ordem (1) (2) (3) (4) (5) (6) (7) (8) R3 R7 R8 R7 R4 R3 R8 R3 <= <= <= <= <= <= <= <= ... ... ... ... ... ... ... ...
Estado futuro
Estado arquitetural
(1) R3 <= ... (3) R8 <= ... (4) R7 <= ... (5) (6) (7) (8) (4) R7 <= ... (5) R4 <= ... ... (7) R8 <= ... (8) R3 <= ... ... ... ...
R4 R3 R8 R3
Buffer de Reordenao
O problema de recuperao do estado em ordem de um processador surge tanto quando ocorrem excees como tambm quando se detecta uma predio errada de desvio condicional. O Buffer de Reordenao implementado como uma memria fifo associativa, tipicamente com cerca de 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. 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.
Buffer de Reordenao
Se esta instruo j tiver sido completada sem gerao de excees, o valor do resultado por ela gerado escrito no Banco de Registradores e a instruo eliminada da fila. Caso contrrio, a instruo permanece na fila at ser completada e o decodificador de instrues permanece funcionando enquanto houver entradas livres no Buffer de Reordenao.
Buffer de Reordenao
O estado em ordem dos registradores do processador dado pelo Banco de Registradores, j que este s alterado como resultado de instrues que completaram em ordem. O estado futuro dado pelo Buffer de Reordenao, que fica armazenando temporariamente todas as alteraes em registradores pendentes ou j realizadas pelas instrues que completaram aps a primeira instruo ainda no completada segundo a seqncia em ordem. O estado arquitetural resulta da combinao do estado em ordem e da atualizao mais recente (mais prxima do final da fila) de cada registrador no Buffer de Reordenao. O Buffer de Reordenao pode ser utilizado para recuperar o estado em ordem tanto quando ocorrem excees como quando ocorrem predies erradas de desvios.
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 valor escrito 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). H sempre um valor do contador de programas associado pelo Buffer de Reordenao instruo situada no incio da fila. Esse valor incrementado sempre que uma instruo descartada no incio da fila e alterado sempre que encontrada uma instruo de desvio efetivamente tomado no incio da fila.
Buffer de Reordenao
Para recuperar o estado em ordem quando ocorre uma predio errada de desvio, basta aguardar que a instruo de desvio correspondente atinja 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. Para recuperar o estado em ordem quando ocorre uma exceo basta aguardar que a instruo causadora da exceo atinja primeira posio da fila. Nesse ponto, o contedo do Buffer de Reordenao descartado e o valor do contador de programas aquele associado pelo Buffer de Reordenao instruo situada no incio da fila, causadora da exceo.
Buffer de Reordenao
O esquema descrito suficiente para que o estado em ordem seja recuperado desde que uma instruo de store s seja executada quando todas as instrues anteriores a ela na seqncia em ordem j tenham completado Uma vez que o Buffer de Reordenao incapaz de recuperar o estado em ordem na memria, aps uma operao de escrita realizada por uma instruo de store, eventualmente executada fora da ordem do programa. Tipicamente o Buffer de Reordenao deve ter capacidade para armazenar tantas instrues quanto for o nmero mximo de instrues que possam estar em execuo (especulativa ou no) no processador. Este nmero funo do nmero de posies na janela de instrues, nmero e latncia das unidades funcionais, quantidade de desvios que podem ser executados especulativamente, entre outros fatores.
Buffer de Histrico
Tambm uma estrutura fifo que armazena para cada entrada o valor do contador de programas correspondente instruo decodificada, o registrador destino alterado por ela, o valor do registrador antes da alterao e bits de status indicando a ocorrncia de exceo ou se a instruo uma instruo de desvio com predio errada. uma alternativa ao uso do Buffer de Reodenao para recuperao do estado em-ordem quando da ocorrncia de excees. Com esse esquema, os operandos fonte das instrues so sempre lidos do Banco de Registradores principal. O novo valor do registrador destino produzido pela instruo escrito no banco de registradores principal, mas o valor anterior do registrador continua armazenado no Buffer de Histria. Sempre que a instruo na primeira posio na fila do Buffer de Histria completa ela descartada da fila.
Buffer de Histrico
Quando a instruo que ocupa a primeira posio da fila est marcada como gerando uma ocorrncia de uma exceo, o estado em ordem recuperado, percorrendo-se o Buffer de Histria do final para o incio, copiando-se os valores dos registradores armazenados de volta no banco de registradores principal. Procedimento semelhante pode ser usado para recuperar o estado em ordem em caso de execuo especulativa com erro na predio de um desvio.