¿Qué quieres decir con "elegir un camino"?
Todo un CPU moderno es, es un intérprete de hardware sofisticado. Comienza así:
Emite un comando en un lenguaje de alto nivel como:
i = 5 + 6;
Esto se traduce a instrucciones de máquina (y pseudo instrucciones), comúnmente conocidas como ensamblaje, por el compilador:
mov ebx, 5
mov eax, 6
add eax, ebx
Esto se traduce a bytes, el equivalente directo del ensamblaje que la CPU puede entender, por otra clase de traductores conocidos como ensambladores:
01010111 00110101 00000101
01010111 00110111 00000110
01111111 00110101 00110111
La unidad de control de la CPU, luego lee el primer byte de la instrucción, conocido como opcode
. Dependiendo del código de operación, la unidad de control impone señales de control a diferentes partes de la CPU, como permitir que un registro envíe su contenido a la ALU, o leer desde el almacén de instrucciones a un registro, etc., según la instrucción.
Por ejemplo, en el ejemplo anterior, 01010111
o lo que usted conoce como instrucción mov
, podría
paso de señal del valor inmediato 5 a través de la ALU al registro conocido como 00110101
o eax
.
Las partes internas del intérprete, o el almacén de control, o como se llame en diferentes implementaciones, difieren de una implementación a otra. Por ejemplo, en un microcódigo.
almacenando la implementación, podría haber una pequeña memoria que asigne códigos de operación a las señales correspondientes, de la misma manera:
01010111 -> enable_ALU_passthrough, reg, immediate_val
01111111 -> enable_ALU_add, reg, reg
Este es un ejemplo aproximado de cómo podría funcionar una CPU. Los valores son aproximados y casi seguramente no son correctos. Si desea profundizar, le recomiendo la excelente Organización estructurada de computadoras por Tanenbaum que lo guía en la creación de un simple CPU interpretar el código de bytes de Java en los primeros capítulos.