Ciclo de instrução na CPU: como buscar, decodificar e executar funcionam

Ciclo de instrução na CPU
Que CPU faz é executar as instruções de um programa localizado na memória. Mas, você sabia que todos eles seguem as mesmas regras gerais? Todos eles seguem o mesmo ciclo de instrução, que é dividido em três estágios distintos chamados Fetch, Decode e Execute, que são traduzidos como buscar, decodificar e executar. Explicamos como essas etapas funcionam e como são organizadas.

Para simplificar e tornar os conceitos explicados neste artigo mais compreensíveis, decidimos descrever um processador extremamente simples para os tempos atuais, portanto, neste artigo, você verá uma explicação de quais são os ciclos de instrução de uma forma generalizada que pode ser aplicada desde os primeiros processadores de 8 bits até os mais complexos disponíveis hoje

Visualizando o ciclo de instrução

Ciclo Instrução Unidad Control

Os processadores não são diferentes, de certo ponto de vista, de um motor de combustão, que sempre realiza um processo contínuo de explosão de combustível em diferentes estágios, sejam 2 tempos ou 4 tempos. A razão para isso é que os processadores trabalham em três etapas distintas em sua versão mais simples, que são as seguintes:

  • Buscar ou capturar: Em que a instrução é capturada da RAM e copiada para dentro do processador.
  • Decodificar ou decodificar: Em que a instrução capturada anteriormente é decodificada e enviada para as unidades de execução
  • Executar: Onde a instrução é resolvida e o resultado escrito nos registros internos do processador ou em um endereço de memória de RAM

Essas três etapas são cumpridas em cada processador. Existe um quarto estágio, que é Write-Back, que é quando as unidades de execução escrevem o resultado, mas isso geralmente é contado dentro do estágio de execução do ciclo de instrução.

Primeira fase do ciclo de instrução: Fetch

Processo de busca

A primeira fase do ciclo de instrução é responsável por capturar as instruções no RAM memória atribuída ao processador por meio de uma série de unidades e registros que são os seguintes:

  1. Contador de programa ou contador de programa: O que aponta para a próxima linha de memória onde a próxima instrução do processador está localizada. Seu valor é incrementado em 1 cada vez que um ciclo de instrução completo é concluído ou quando uma instrução de salto altera o valor do contador do programa.
  2. Registro de endereço de memória: O MAR copia o conteúdo do PC e o envia para a RAM através dos pinos de endereçamento da CPU, que são conectados aos pinos de endereçamento da própria RAM.
  3. Registro de dados de memória ou registro de dados de memória : Caso a CPU tenha que realizar uma leitura de memória, o que o MDR faz é copiar o conteúdo desse endereço de memória para um registro interno da CPU, que é um registro de passagem temporário antes que seu conteúdo seja copiado para o Registro de Instrução. O MDR, ao contrário do MAR, é conectado aos pinos de dados da RAM e não aos pinos de endereçamento e, no caso de uma instrução de escrita, o conteúdo do que você deseja escrever na RAM também é escrito no MDR
  4. Registro de instrução: A parte final do estágio de busca é a escrita da instrução no registrador de instrução, a partir do qual a unidade de controle do processador copiará seu conteúdo para o segundo estágio do ciclo de instrução.

Esses 4 subestágios ocorrem em todos os processadores independentemente de sua utilidade, arquitetura e compatibilidade binária ou o que chamamos de ISA.

unidade de controle

Unidade de controle

A unidade de controle é a parte mais complexa que existe em um processador e suas tarefas são as seguintes:

  • Eles estão encarregados de coordenar o movimento e a ordem em que os dados que se movem dentro e fora do processador, bem como as diferentes subunidades que o comandam.
  • Em geral, considera-se que as unidades do estágio de captura ou Fetch fazem parte do hardware que chamamos de unidade de controle e esse hardware também é denominado Front-End de um processador.
  • Ele interpreta as instruções e as envia às diferentes unidades de execução às quais está conectado.
  • É comunicado às diferentes ALUs e unidades de execução do processador que atuam
  • É responsável por capturar e decodificar as instruções, mas também por escrever os resultados nos registradores, caches ou no endereço correspondente da RAM.

Opcode-Modo-Endereço

O que a unidade de controle faz é decodificar as instruções e ela faz isso porque cada instrução é na verdade um tipo de frase onde o verbo vai primeiro e depois o objeto direto ou objeto no qual a ação é feita. O sujeito acaba sendo eliminado nessa linguagem interna dos computadores pelo fato de se entender que é o próprio computador que o executa, então cada número de bits é uma frase onde o primeiro 1 e 0 correspondem à ação e os uns. o que vem a seguir são os dados ou a localização dos dados a serem manipulados.

A segunda etapa: decodificar

Instruções de Decodificação

Existem diferentes tipos de instruções e nem todas fazem o mesmo, portanto, dependendo do tipo de instrução, precisamos saber para quais unidades de execução serão enviadas e a forma mais clássica de fazer isso é através do que chamamos de decodificador , que pega cada instrução, divide-a internamente de acordo com o opcode ou instrução e os dados ou endereço de memória onde está localizado.

Por exemplo, no diagrama acima temos o diagrama de um processador com apenas 8 instruções, que podem ser codificadas em apenas 3 bits. Cada uma das instruções, uma vez decodificada, é enviada às diferentes unidades de execução que as resolverão.

Este ciclo de instrução é o mais complexo de todos e aquele que define o tipo de arquitetura. Dependendo se temos um conjunto reduzido ou complexo de instruções, isso afetará a natureza da unidade de controle, dependendo do formato da instrução ou de quantas são processadas ao mesmo tempo na fase de decodificação e, portanto, a unidade de controle terá um natureza diferente. outro.

A maneira mais fácil de visualizar o que ocorre é pensar nas instruções como trens circulando por uma complexa malha ferroviária e a unidade de controle direcionando-os para uma estação terminal, que é a unidade de execução que se encarregará de resolver a instrução.

Terceira etapa: Executar

ALU de 1 bit

A última etapa é a execução das instruções, nesta etapa as instruções são resolvidas, mas nem todos os tipos de instruções são resolvidos da mesma forma, pois a forma de usar o hardware dependerá da função de cada uma delas. eles, em geral, temos quatro tipos de instruções:

  • Instruções de movimento de bits: Na qual a ordem dos bits que contêm os dados é manipulada.
  • Instruções aritméticas: Onde operações matemáticas e lógicas são realizadas, estas são resolvidas nas chamadas ALUs ou unidades aritmético-lógicas
  • Instruções de salto: No qual o próximo valor do contador do programa é alterado, o que permite que o código seja usado recursivamente.
  • Instruções para a memória: São com os quais o processador lê e grava informações da memória do sistema.

O outro ponto são os formatos de instrução, uma vez que uma instrução pode ser aplicada a um dado, escalar ou vários dados ao mesmo tempo, que conhecemos como SIMD. Para finalizar e dependendo do formato dos dados, existem diferentes tipos de ALUs para a execução de instruções aritméticas, por exemplo, temos unidades inteiras e de ponto flutuante como unidades diferenciadas hoje.

Depois de concluída a instrução, o resultado é escrito em um endereço de memória específico e o próximo é executado. Algumas instruções não manipulam valores de memória, mas sim certos registros. Assim, o registro do contador do programa é modificado pelas instruções de salto, se quisermos ler ou escrever dados então os registros MAR e MDR são manipulados.