Instruções de controle, que ditam as operações que uma CPU executa, vem de alguns lugares diferentes, dependendo da arquitetura e do momento específico do tempo:
1. Memória principal (RAM): *
Código do programa: A principal fonte de instruções de controle é o código do programa armazenado na memória principal (memória de acesso aleatório ou RAM). Quando você executa um programa, suas instruções são carregadas de armazenamento (como um disco rígido ou SSD) na RAM. A CPU busca essas instruções uma a uma (ou em lotes), as decodifica e as executa. Esta é a fonte mais comum e fundamental.
2. Cache de instrução (L1, L2, L3 Caches): *
Instruções usadas com frequência: Para acelerar a execução, as CPUs usam caches, que são lembranças menores e mais rápidas. O cache de instruções mantém cópias de instruções usadas frequentemente obtidas na RAM. Quando a CPU precisa de uma instrução, ele primeiro verifica o cache. Se a instrução estiver lá (um "acerto de cache"), ele é recuperado muito mais rápido do que ir à memória principal.
3. Microcódigo (em Arquiteturas de Conjunto de Instruções Complexos - CISC): *
Operações complexas: Em arquiteturas mais antigas ou mais complexas (como a Intel X86), algumas instruções são realmente implementadas como sequências de microinstrução mais simples. Este * microcódigo * é armazenado em uma ROM especial (memória somente leitura) ou armazenamento semelhante na própria CPU. Quando a CPU encontra uma instrução complexa, ele executa a sequência de microcode correspondente, que divide a instrução complexa em etapas mais simples e gerenciáveis. Isso é menos comum nas arquiteturas modernas do RISC (conjunto de instruções reduzidas), que geralmente preferem instruções mais simples que podem ser executadas diretamente.
4. Interrupções: *
Eventos externos: Interrupções são sinais que podem interromper o fluxo normal da execução do programa. Eles podem vir de hardware (por exemplo, uma prensa de teclado, uma unidade de disco que termina uma operação) ou software. Quando ocorre uma interrupção, a CPU salva o estado do programa atual e salta para uma rotina especial chamada de manipuladora de interrupção *ou *Rotina de serviço de interrupção (ISR) *. O ISR contém instruções para lidar com a interrupção (por exemplo, leia dados do teclado). Depois que o ISR terminar, a CPU restaura o estado do programa salvo e retoma a execução de onde parou.
* Portanto, uma interrupção pode fazer com que um conjunto * diferente * de instruções de controle seja executado do que o que o programa original pretendia.
5. Redefinir vetor: *
startup: Quando o computador é ligado ou redefinido, a CPU começa a executar instruções de um endereço de memória predefinido chamado *Redefinir Vector *. Esse vetor contém o endereço da primeira instrução a ser executada, normalmente o início do carregador de inicialização do sistema operacional.
em resumo: O fluxo normalmente se parece com o seguinte:
1.
PODER ON/RESET: A CPU começa no vetor de redefinição.
2.
Processo de inicialização: O carregador de inicialização no RAM carrega o sistema operacional.
3. Execução do programa
: O código do programa e os dados são carregados na RAM.
4.
buscar ciclo de eliminação de decódios: A CPU busca instruções da RAM (ou cache de instruções), as decodifica em sinais de controle e executa esses sinais.
5.
interrupções: Eventos externos podem desencadear interrupções, desviando a execução para interromper os manipuladores.
A CPU em si é o agente que busca e executa essas instruções, seguindo o ciclo de excesso de decodificação repetidamente. A * fonte * das instruções, no entanto, varia como descrito acima.