Decodificador
Os processadores da AMD utilizam uma arquitetura híbrida CIS/RISC desde seus processadores de 5ª geração. A Intel começou usar esta idéia apenas a partir de seus processadores de 6ª geração. O processador deve aceitar instruções CISC, também conhecidas como instruções x86, já que todos os programas disponíveis hoje são escritos usando este tipo de instruções. Um processador genuinamente RISC não pode ser usado em PCs porque ele não seria capaz de rodar os programas que temos disponíveis hoje, como o Windows e Office.
Assim, a solução usada por todos os processadores disponíveis no mercado hoje tanto da Intel quanto os da AMD é usar um decodificador CISC/RISC. Internamente o processador executa instruções RISC, mas aceita apenas instruções CISC x86.
As instruções CISC x86 são conhecidas como “instruções” enquanto que as instruções RISC são conhecidas como “microinstruções”, “µops” ou “ROP”. A arquitetura AMD64 tem um terceiro tipo de instrução, chamada macro-op ou “MOP”, que é a instrução resultante do decodificador de instrução. A arquitetura AMD64 trata internamente com macro-ops. Quando a macro-ops chega no agendador apropriado, ela é então decodificada em microinstruções e então essas microinstruções são executadas. Se você prestar atenção, isto é parecido com o que a Intel está fazendo em sua nova arquitetura Core, com seu recurso de macro fusão. No entanto, enquanto que a macro fusão nos processadores baseados na arquitetura Core trabalham apenas com instruções condicionais, na arquitetura AMD64 o uso de macro-ops é feito para todas as instruções.
As microinstruções RISC, no entanto, não podem ser acessadas diretamente e não podemos criar programas baseados neste tipo de instruções e enviá-las para o decodificador. Além disso, cada processador utiliza suas próprias instruções RISC, que não são publicadas pelo fabricante do processador e são incompatíveis com microinstruções de outros processadores. Por exemplo, as microinstruções da arquitetura AMD64 são diferentes das microinstruções do Pentium 4, que são diferentes das microinstruções da arquitetura AMD K7.
Dependendo da complexidade da instrução x86, ela pode ser convertida em várias microinstruções RISC.
As instruções x86 da arquitetura AMD64 podem ser convertidas em macro-ops através de três caminhos diferentes: usando um decodificador simples, chamado “DirectPath Single”, que traduz uma instrução x86 comum em uma macro-op simples; usando também um decodificador simples, chamado “DirectPath Double”, que traduz uma instrução x86 em duas macro-ops; ou usando um decodificador complexo, chamado “DirectPath Vector”, que traduz uma instrução x86 complexa em várias macro-ops. O “DirectPath Vector” tem que chamar uma memória ROM (chamada microcódigo) para converter instruções x86.
Eis como o decodificador AMD64 funciona. No estágio Pega, também conhecido como “Procura”, o processador procura e separa as instruções presentes em seu buffer, decidindo qual caminho usar: DirectPath ou VectorPath.
Então vem o estágio Decodificador, que é quebrado em duas etapas, onde as instruções x86 são convertidas em macro-ops. Esta etapa é equivalente ao estágio “Alinhamento” (“Align”) encontrado nos processadores K7. A taxa de saída máxima do decodificador é de seis macro-ops por pulso de clock, três para o DirectPath e três para o VectorPath.
As macro-ops vão para o estágio Empacotamento (que é o equivalente à etapa “Decodificação 1” na arquitetura K7), onde as macro-ops são agrupadas, e então três macro-ops são enviadas para o próximo estágio, Empacotamento/Decodificação, que faz mais alguns procedimentos de decodificação e envia as macro-ops para a Unidade de Controle de Instruções, que é o nome dado pela AMD para o que a Intel chama de Buffer de Reordenamento (ROB).
Figura 13: Decodificador da arquitetura AMD64.
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