Como um processador 'sabe' o que significam os diferentes comandos?
Estou pensando em comandos de nível de montagem como MOV, PUSH, CALL, etc ...
cpu
computer-architecture
cpu-architecture
Simon Verbeke
fonte
fonte
Respostas:
Quando um computador interpreta as instruções em nível de montagem , essas instruções são transformadas em seus equivalentes binários para a CPU ler. Quando a CPU executa as instruções, interpreta a parte do código de operação da instrução em "microprogramas" individuais, contendo seus equivalentes de microcódigo . Para que você saiba, uma instrução de montagem completa consiste em um código operacional e todos os dados aplicáveis que o acompanham, se necessário (por exemplo, nomes de registradores, endereços de memória).
As instruções do microcódigo são de nível extremamente baixo (mais do que montagem) e controlam os sinais digitais reais que controlam o fluxo da lógica no microprocessador. Por exemplo, uma instrução de microcódigo pode atualizar um sinalizador de registro de código de condição com um novo valor ou conectar um registro de CPU a uma das unidades da ALU . Tarefas mais complexas são possíveis, mas isso mostra a ideia geral de para que microcódigo é usado.
O fluxo geral da compilação para a execução é o seguinte. As instruções de montagem são montadas (transformadas em seus equivalentes binários 0s e 1s, ou a partir de agora, sinais lógicos). Esses sinais lógicos são, por sua vez, interpretados pela CPU e transformados em mais sinais lógicos de baixo nível que direcionam o fluxo da CPU para executar a instrução específica. Isso pode levar um ou mais ciclos de clock, dependendo da arquitetura e design do processador (a maioria dos manuais de referência do processador informa quantos ciclos de clock são necessários para executar uma instrução específica, como esta, por exemplo ).
Tudo isso é feito com microcódigo programado (fisicamente incorporado ao processador em algum tipo de ROM , definido durante a fabricação), que direciona o fluxo através de portas lógicas reais de baixo nível . Isso fornece uma interface entre as instruções abstratas de montagem e a lógica elétrica física no processador.
Portanto, em resumo, as instruções do processador são montadas e carregadas pelo processador. O processador utilizará essas instruções para procurar o microprograma (na forma de microcódigo) correspondente a essa instrução específica, que é o que "realmente" executa a instrução. Após a execução dos microcódigos para a instrução específica (que pode levar um ou mais ciclos de clock), o processador executa o microcódigo para buscar a próxima instrução e o ciclo se repete.
fonte
O processador realmente não 'sabe' quais são os comandos. Os comandos são apenas padrões binários que fazem com que o processador faça o que interpretamos como comandos.
Por exemplo, uma operação ADD-R1-em-R2 fará com que os valores dos registros 1 e 2 atinjam a ALU (unidade aritmética e lógica), faça com que a ALU use a saída do somador em vez de várias outras coisas e faça com que o saída da ULA para substituir o valor no registro 2. Existem circuitos lógicos simples para realizar todas essas coisas ( multiplexador , somador , contador , ...), embora processadores reais usem otimizações muito complicadas.
É como se você estivesse perguntando como um carro sabe desacelerar quando você pressiona os freios. O carro não sabe, o pedal do freio apenas controla indiretamente como as pastilhas duras são pressionadas contra as rodas.
fonte
http://en.wikipedia.org/wiki/Assembler_language
Em outras palavras, quando você 'monta' seu programa de montagem, suas instruções como
MOV AL, 61h
são convertidos em números, aos quais a CPU associa um significado especial e, em seguida, age de acordo.
fonte
Leitura sugerida:
Verifique também as notas do curso do CS152: Arquitetura e engenharia de computadores na UC Berkeley, um curso no qual os alunos implementam uma CPU.
Se você pesquisar no Google por "cpu caseiro", encontrará muitos brindes.
fonte
No nível mais extremo extremo, tudo o que a CPU pode fazer é adicionar. Além disso, pode subtrair, multiplicar e dividir (visto que são apenas adição de uma maneira diferente). A CPU usa isso para mover dados na memória, aplicando as adições aos endereços de memória.
Lembre-se, porém, de que este é o nível mais baixo possível. De fato, a CPU "entende" certos comandos, na forma de microcódigo. Veja a resposta da Breakthrough, está muito bem escrita.
fonte
Eu dei uma resposta relacionada em programmers.stackexchange.com, consulte Como os computadores funcionam? onde analisei brevemente tudo, desde o início, sobre como os computadores interpretam instruções para mover elétrons.
fonte