Desambiguação de memória
Desambiguação de memória é uma técnica usada para acelerar a execução de instruções relacionadas com a memória.
Todos os processadores da Intel desde o Pentium Pro têm uma unidade de execução fora de ordem, que permite ao processador executar instruções não dependentes em qualquer ordem. O que acontece é que instruções relacionadas à memória são tradicionalmente executadas na mesma ordem em que aparecem no programa, ou de outra forma inconsistência de dados poderia aparecer. Por exemplo, se o programa original tem uma instrução do tipo “armazene o valor 10 no endereço 5555” e então uma instrução “carregue os dados armazenados no endereço 5555”, elas não podem ser invertidas (ou seja, executadas fora de ordem) ou a segunda instrução pegaria dados errados, já que o dado do endereço 5555 foi alterado pela primeira instrução.
O que a unidade desambiguação de memória faz é localizar e executar instruções relacionadas à memória que podem ser executadas fora de ordem, acelerando a execução do programa (falaremos mais sobre isto adiante).
Na Figura 3 você tem um exemplo de um processador sem o recurso desambiguação de memória (ou seja, todos os processadores que não são baseados na arquitetura Core). Como você pode ver, o processador tem que executar as instruções à medida que elas aparecem no programa original. Por exemplo, “Load4” não está relacionada a nenhuma outra instrução relacionada à memória e poderia ser executada primeiro, no entanto, ela tem que esperar todas as outras instruções serem executadas primeiro.
Figura 3: Processador sem o recurso de desambiguação de memória.
Na Figura 4 você ver como o programa mostrado na Figura 3 é executado em um processador baseado na arquitetura Core. Ele “sabe” que “Load4” não está relacionada a outras instruções e pode ser executada primeiro.
Figura 4: Processador com recurso de desambiguação de memória.
Isto aumenta o desempenho do processador já que agora “Load4” é executada e o processador tem o dado requerido para executar outras instruções que precisam do valor de “X” para serem executadas.
Em outros processadores, se após “Load4” tivéssemos uma instrução “Add 50”, ela (e todas as outras instruções que dependem deste resultado) teria que esperar todas as outras instruções mostradas na Figura 3 serem executadas. Com o recurso de desambiguação de memória, essas instruções podem ser executadas depois, já que o processar terá agora o valor de “X” mais cedo.
Respostas recomendadas
Crie uma conta ou entre para comentar
Você precisa ser um usuário para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar agora