Pipeline da Arquitetura AMD64
Pipeline é uma lista de todos os estágios que uma dada instrução precisa percorrer para ser executada. A arquitetura AMD64 utiliza um pipeline de 12 estágios para executar instruções inteiras e 17 estágios para executar instruções de ponto flutuante. Por isso, para uma dada instrução ser executada nos processadores AMD64 ela precisa passar por 12 ou 17 estágios. A arquitetura anterior da AMD – K7, que era usada pelo processador Athlon original, Athlon XP e alguns modelos de Sempron – tinha um pipeline de 10 estágios. O pipeline do Pentium 4 tem 20 estágios e o pipeline do Pentium 4 “Prescott” tem 31 estágios. Os futuros processadores da Intel Core 2 Duo terão um pipeline com 14 estágios.
Vamos estudar o pipeline de execução de instruções de números inteiros da arquitetura AMD64, que é baseado no pipeline da arquitetura K7. A principal diferença entre eles é o estágio do decodificador que, na arquitetura AMD64, foi quebrado em diferentes estágios, provavelmente para permitir que processadores AMD64 atingissem clocks mais elevados.
Figura 11: Pipeline para execução de instruções de números inteiros da arquitetura AMD64.
Aqui está um resumo do que cada estágio faz, o que explica como uma dada instrução é processada pelo processador baseado na arquitetura AMD64. Se você achar isto complicado, não se preocupe. Falaremos mais detalhadamente sobre cada estágio nas próximas páginas.
Busca: Busca instruções do cache L1 de instruções em grupos de 16 bytes (128 bits). Esta etapa é dividida em dois estágios. O segundo estágio também é chamado de “Trânsito”, já que sua principal operação é mover dados dentro do processador (similar ao estágio “Drive” disponível no Pentium 4).
- Pega: Neste estágio os 128 bits enviados pela unidade de busca são armazenados em um buffer. Como as instruções x86 não têm tamanho fixo, neste estágio o processador procura e separa as instruções presentes no buffer. É nesse estágio também que é decidido para qual decodificador a instrução x86 será enviada: para um decodificador simples (e rápido), usado para instruções x86 comuns e que são convertidas em apenas um ou dois macro-ops, ou para um decodificador complexo (lento), usado por instruções x86 que são convertidas em vários macro-ops. Este estágio também é conhecido como “procura” (“scan”).
- Decodificador: Aqui as instruções x86 são convertidas em macro-ops que o núcleo do processador pode entender. Esta etapa demora dois estágios.
- Empacotamento: Aqui, pares de macro-ops decodificados são fundidos em um único macro-op.
- Empacotamento/Decodificação: Mais algumas decodificações são feitas aqui antes dos macro-ops serem enviados para a Unidade de Controle de Instruções (que é a mesma coisa do Buffer de Reordenamento presente nos processadores da Intel).
- Envio: Os macro-ops são enviados para o agendador apropriado neste estágio.
- Agendamento: Os macro-ops são agendados para serem executados em um dos agendadores do processador.
- UGE/ULA: As instruções são executadas.
- Cache de Dados: Os dados gerados pela unidade de execução são enviados para o cache L1 de dados, os registradores originais são restaurados e a instrução é marcada como “executada” no buffer de reordenamento. Esta etapa é equivalente à etapa de retirada dos processadores da Intel.
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