Introduo
Implementao superescalar Aquela onde as instrues comuns (aritmtica de inteiros e de pontos flutuantes, leituras, escritas e desvios condicionais) podem ser iniciadas simultaneamente e executadas independentemente, de maneira concorrente, em mltiplos pipelines.
Pode ser usada em arquiteturas RISC e CISC
Introduo
Superscalar termo que se refere a mquinas projetadas para melhorar o desempenho da execuo de instrues escalares. Abordagem superescalar Aquele em que mltiplos e independentes pipelines de instrues so usados, de maneira paralela.
Busca mltiplas instrues ao mesmo tempo e depois tenta localizar instrues prximas umas das outras que sejam independentes (A entrada de uma no depende das sadas de outra) umas das outras e possam ser executadas em paralelo. Quando detectadas as dependncias, o processador pode executar e completar instrues em uma ordem diferente do cdigo de mquina original.
Superpipeline
Explora o fato de que muitos estgios de pipeline executam tarefas que requerem menos do que metade de um ciclo de clock. Essa velocidade interna dobrada permite executar duas tarefas em um nico ciclo de clock externo.
Buscar
Decodif.
Executar
Escrever
Superpipeline
Superscalar
Tempo
Limitaes do paralelismo
Paralelismo em nvel de instrues grau em que, em mdia, as instrues de um programa podem ser executadas em paralelo.
Pode ser otimizado por uma combinao de otimizao baseada em compilador e tcnicas de hardware.
No caso acima, alguns ciclos sero necessrios at que o registrador EAX esteja liberado (Quando a segunda instruo entra no estgio de execuo, a primeira ainda est no pipeline)
Um processador leva dois ou mais ciclos para executar uma leitura de memria quando a leitura um acesso cache. Se ocorrer uma falha de cache em todos os nveis de cache, podem levar dezenas ou centenas de ciclos para recuperar os dados de uma memria fora do chip.
Dependncias Procedurais
Complicao decorrente da existncia de desvios Uma dependncia procedural uma dependncia existente entre um desvio e as instrues que vem depois dele.
Essa dependncia j era prejudicial no pipeline escalar, e se torna ainda mais severa no pipeline superescalar (maior perda de oportunidade)
Conflito de recursos
Competio de duas instrues pelo mesmo recurso, ao mesmo tempo. Exemplos de recursos:
Memria Cache Barramentos Entradas para banco de registradores Unidades funcionais (EX: somador da ALU)
Pode ser evitado pela duplicao dos recursos, ou amenizado por algum pipeline interno da unidade funcional afetada.
Buscar
Decodif.
Executar
Escrever
i0
Sem dependncia
i1
i0 I1
I0 i1 I2 I3 I4 I5
I0 i1
Melhora o desempenho de instrues que requerem mltiplos ciclos No exemplo acima, i2 tem permisso de concluir antes de i1. Assim, i3 pode ser concluda antes e um ciclo pode ser economizado
Obs: i5 foi executada depois, por depender de i4 Obs2: A janela NO um estgio adicional de pipeline. Apenas significa que o processador tem informao suficiente sobre a instruo para definir quando ela pode ser emitida
Renomeao de registradores
Como visto, emisso e concluso de instrues fora de ordem aumentam a possibilidade de dependncias.
Isso dificulta ao compilador especificar o contedo do registrador em cada ponto da execuo. Os valores nos registradores no podem ser totalmente conhecidos em cada momento apenas considerando a sequncia de instrues definida pelo programa. Caso haja conflito, o processador deve resolv-los parando ocasionalmente um estgio do pipeline
Renomeao de registradores
O problema se torna mais difcil de resolver quando tcnicas de otimizao de registradores so usadas, pois h tendncia de aumento de uso de registradores e, por consequncia, de conflitos.
Renomeao de registradores
A tcnica de renomeao baseada simplesmente em duplicao de recursos. Registradores so alocados dinamicamente pelo hardware do processador e associados com valores usados pelas instrues em vrios pontos do tempo. Quando um novo valor de registrador criado no programa, um novo registrador real alocado para esse valor.
Renomeao de registradores
As instrues subsequentes que acessam esse valor como operando de origem nesse registrador tm que passar pelo processo de renomeao:
As referncias dos registradores nessas instrues precisam ser revisadas para que se refiram ao registrador que contm o valor necessrio. A mesma referncia do registrador original pode se referir a registradores reais diferentes, se valores diferentes so pretendidos
Renomeao de registradores
Ex:
I1: R3b <- R3a op R5a I2: R4b <- R3b + 1 I3: R3c <- R5a + 1 I4: R7b <- R3c op R4b
No exemplo acima, um mesmo registrador lgico pode possuir vrios registradores de hardware (diferenciados pelos valores subscritos, no exemplo)
A criao do registrador R3c evitou dependncia RAW da primeira instruo, e dependncia de sada da segunda. Assim, I3 pode ser emitida imediatamente, sem espera.
Previso de desvio
A estratgia de desvio atrasado foi muito usada nas mquinas RISC, mas no to eficiente em mquinas superescalares
Problemas relacionados complexidade de gerenciar o delay slot de mltiplas instrues, e suas dependncias.
Execuo Superescalar
1. O programa a ser executado (escrito pelo programador ou gerado pelo compilador) consiste em uma sequencia linear de instrues. 2. A obteno da instruo usada para formar um fluxo dinmico de instrues
Previses de desvio so realizadas nessa etapa, bem como o tratamento de dependncias.
Execuo Superescalar
3. Em seguida, as instrues so despachadas para uma janela de execuo
Nessa janela, o fluxo no mais sequencial, e sim baseado nas dependncias de dados e disponibilidade de recursos.
4. Finalmente, as instrues so conceitualmente colocadas em sua ordem original e seus resultados so reordenados.
Essa etapa conhecida como commit (confirmar, ou concluir), ou retirar a instruo.
Execuo Superescalar
O commit necessrio, pois as instrues so completadas em uma ordem diferente da definida no programa esttico.
A Previso de desvio e execuo especulativa faz com que instrues que completaram a execuo tenham que ser abandonadas, por no terem sido usadas aps um desvio. Assim, o armazenamento permanente e o registradores visveis ao programa no podem ser atualizados imediatamente quando as instrues completam a execuo. Os dados devem ficar em algum armazenamento temporrio que possa ser usado pelas instrues dependentes e depois so tomados quando for determinado que o modelo sequencial j tenha executado a instruo.
Execuo superescalar
Despachar instruo Programa Esttico _________ _________ _________ _________ _________ _________ _________ Leitura de instruo e previso de desvio _________ _________ _________ _________ _________ _________ _________ Emitir instruo Executar instruo Reordenao e concluso da instruo
Janela de Execuo
As estratgias de busca de instruo que obtm simultaneamente vrias instrues, frequentemente prevendo os resultados das instrues de desvios condicionais. Estas funes requerem o uso de multiplos estgios de busca e decodificao e lgica de previso de desvios Lgica para determinar dependncias verdadeiras envolvendo valores de registradores e mecanismos para transferir esses valores para onde eles forem necessrios durante a execuo
Mecanismo para iniciar, ou emitir, mltiplas instrues em paralelo. Recursos para execuo paralela de mltiplas instrues, incluindo mltiplas unidades funcionais de pipeline e hierarquias de memria capazes de atender simultaneamente vrias referncias de memria. Mecanismos para concluir o estado do processo na ordem correta.