Decode significa analisar a instrução para determinar seu significado.
Uma instrução típica consiste em um opcode e (geralmente) um ou mais argumentos. Esses argumentos podem se referir a registros específicos ou endereços de memória ou podem ser valores imediatos a serem usados diretamente durante a execução. Além disso, algumas instruções podem ter prefixos (como LOCK
em x86) ou códigos de função (como o campo funct
para algumas instruções do MIPS) que alteram sua funcionalidade.
Durante a decodificação, o processador precisa:
- determine qual instrução é representada pelo opcode para que a instrução possa ser enviada para a unidade de execução correta e que o a operação correta é executada
- interpreta corretamente os argumentos, prefixos e outros valores anexados à instrução e transmite as informações relevantes para o circuito relevante
- (na maioria dos designs de processadores modernos), quebre as instruções em suas correspondentes micro-operações
Com processadores modernos, isso pode ser uma operação complexa que requer vários estágios no pipeline. Para acelerar este processo, um cache dedicado pode ser usado para armazenar micro-operações para instruções executadas com frequência.
Para saber mais sobre as técnicas usadas para fornecer alto desempenho em processadores modernos, convém ler esta resposta .