Casa > P > Porque É Que O Código Da Máquina É Interpretado Por Microcódigo Em Vez De Ser Compilado Para Microcódigo?

Porque é que o código da máquina é interpretado por microcódigo em vez de ser compilado para microcódigo?

Em algum nível, você tem que finalmente se submeter a um conjunto de portas lógicas, registros, contadores e assim por diante. O microcódigo é capaz de controlá-los diretamente com base no código da máquina que está interpretando. O próprio código da máquina pode ser feito para operar estes portões e coisas diretamente, e de fato ele faz em muitos projetos. Mas os designers de hardware também são pessoas, portanto erros são possíveis - pode haver bugs no hardware.

Microcoding permite que eles corrijam bugs de hardware facilmente, ou implementem novas instruções, para uma mudança relativamente pequena no die do processador - é apenas mais um nível de indireção que fornece algum seguro e flexibilidade. Também lhes permite implementar um determinado conjunto de instruções em diferentes hardwares, uma vez que o microcódigo cuida de lidar com as diferenças.

Microcódigo realmente é de baixo nível - ele liga diretamente alguns portões e desliga outros para rotear sinais em torno do chip. Ele é altamente dependente de hardware. Se você compilou diretamente no microcódigo, você teria que ter um compilador que levasse em conta não apenas o número exato do modelo do chip, mas a revisão exata desse modelo, e assim por diante. A microcodificação permite que todas essas diferenças sejam resolvidas pelo próprio chip, para que ele possa rodar código comum. Você pode apostar que os engenheiros também otimizaram o código, e também não é bem como um código de propósito geral - por exemplo, se você tem uma instrução que leva 2 ciclos de relógio para ser executada, as chances são que isso significa que levou 2 instruções de microcódigo. É muito duvidoso que você realmente economizaria qualquer tempo compilando diretamente no microcódigo - você ainda acabaria com uma determinada operação levando exatamente os mesmos 2 ciclos, porque isso é uma limitação de hardware - é provavelmente o melhor que consegue.

Um ponto adicional: o microcódigo não é bem o que você pensa que é. Eu não posso falar por todos os designs, mas num que eu trabalhei, o 'microcódigo' era apenas uma grande tabela. Cada coluna da tabela era 1 bit que controlava um portão em algum lugar que permitia dados em um determinado local em um barramento interno. Cada linha da tabela era um passo em uma seqüência. A instrução da máquina era desmontada e usada para chamar a linha de partida na tabela para aquela instrução. Cada ciclo de relógio apenas passava pelas linhas da tabela até chegar a uma linha final que tinha um pouco que agia como um 'goto' que apenas colocava o processador de volta no início do próximo fetch. O código era apenas um grande bitmap sequencial. Nem mesmo no modo que o código da máquina é.

De Bushore

Como programar em código de máquina :: Quais são alguns produtos na Amazon que têm críticas hilariantes?