Ah, te falta el concepto de MÁQUINA DE ESTADO. Ahí es donde podemos "escribir código" hecho de chips de hardware TTL: selectores de datos, contadores de 4 bits, bandas de flipflops paralelos. (Pero todas esas son las partes complicadas, mientras que la idea detrás de las "máquinas de estado" es bastante simple).
"Máquina de estado" también se llama comúnmente "microcódigo". También se le llama "bit-slice" o "microsequencer". También se le llama "decodificador de instrucciones" dentro del chip del procesador. (Por lo tanto, es la "persona diminuta" dentro del chip de la CPU que lee los opcodes y realmente realiza las acciones enumeradas).
En todas las explicaciones introductorias/populares de los ordenadores, nos enseñan todo sobre las puertas lógicas y sobre los procesadores integrados completos, pero nunca sobre la capa de abstracción que se encuentra invisiblemente entre ambos. No intentan explicar el hombrecillo que hay ahí dentro.
La máquina de estado más sencilla es un chip ROM con sus líneas de dirección conectadas a un contador digital de muchos bits. Entonces, los bytes de salida de la ROM se tratan como cables individuales o líneas de control. (Es como un temporizador de lavadora motorizado, que pasa entre N ajustes diferentes en sucesión). Como la dirección binaria cuenta hacia arriba, los ocho hilos de la palabra de salida (o dieciséis, 24, 32, etc.,) pueden producir cualquier patrón temporizado que queramos. Sólo hay que preescribir el patrón deseado en la ROM.
Esto es muy parecido a una caja de música mecánica. O un controlador de los patrones de las bombillas de los carteles publicitarios de los años 50: un montón de discos-cámara giratorios con interruptores de hoja en los bordes. Tallando algunas colinas y valles en el borde de los discos de baquelita, se pueden producir los patrones de luz temporizados que se deseen.
Pero la verdadera potencia de la idea sólo surgirá si conectamos nuestro contador binario a tres o cuatro de las líneas de entrada de direcciones de la ROM. Entonces usamos el resto de las líneas de dirección de la ROM como entradas. Así, por ejemplo, si la ROM tiene 8 líneas de dirección, podemos conectar nuestro contador de 3 bits a tres de las líneas. De esta manera el contador creará una secuencia escalonada de ocho patrones de bits en la salida de la ROM. Y, la ROM entonces almacena treinta y dos versiones diferentes de estos, seleccionados por las cinco líneas de addr restantes.
UN MICROPROCESADOR 6502, QUE SE ENCUENTRA EN EL APPLE-II Y OTROS
A continuación, utiliza las cinco entradas de dirección de la ROM ...¡PARA SELECCIONAR UN CÓDIGO OPERATIVO EN EL LENGUAJE DE LA MÁQUINA! Los diferentes bits colocados en esas cinco líneas de dirección extra activarán las diferentes secuencias de 8 pulsos almacenadas en la ROM. Cada una de las 32 instrucciones opcode posibles estará compuesta por 8 pasos (o menos). Por último, utilice todos los bits de salida de la ROM como líneas de control.
Esta línea de salida aquí, cuando es alta, dirige dos registros juntos en el sumador, para sumar dos números. Este otro es un pulso que incrementa el registro de dirección principal de la CPU, para recorrer el código de máquina almacenado en la RAM. Este otro cable enclava la salida del sumador, para que pueda ser volcado en uno de los registros de la CPU durante la instrucción ADD. Otro volcará algún registro en el registro de dirección principal, para realizar la instrucción JMP.
En otras palabras, la propia CPU está hecha de software. Pero es un patrón de bits almacenado permanentemente en unas pocas palabras de la memoria ROM. Si se cambian los patrones de bits, se altera lo que hacen los opcodes. La máquina de estado es donde el nivel más profundo del software está físicamente hecho de hardware. Piensa en la máquina de estado como el "pequeño hombre" dentro del ordenador que lee cada instrucción de código máquina y envía pulsos a las líneas de control que manipulan los registros y realizan la pequeña secuencia de pasos de cada opcode. (Y, la ROM del microsecuenciador es el simple cerebro del hombrecito).
Una animación muy chula es la del chip Visual 6502, en javascript para navegadores (el 6502 es la cpu utilizada en los antiguos ordenadores APPLE-II.) Imagen de muestra arriba.
http://www.visual6502.org/JSSim/
En realidad, puede ejecutar un programa de código de máquina, mientras usted observa cómo cambian de color todos los conductores internos y las puertas lógicas dentro del CI. El chip muestra todos los registros, contadores de memoria, sumador, desplazador, etc. Pero también tiene un enorme parche de tablero de ajedrez de aspecto aleatorio a lo largo del borde superior. Ese es el corte de bits, la ROM, el patrón permanente para sus opcodes, todo creado por la máquina de estado en funcionamiento.
Steampunk: si vas a construir un motor pensante de Babbage, querrás que tu cilindro giratorio de la caja de música gire a unas 20.000RPM, y los pequeños tacos del cilindro deberían estar hechos de una aleación de tungsteno-iridio, ya que ese cilindro contiene los opcodes, en patrones de pequeñas protuberancias, y su inmensa tasa de rotación determina la velocidad de la CPU. (Tal vez se utilicen pequeños puntos de plata en un cilindro de vidrio, y algunas de esas nuevas fotocélulas de selenio, en lugar de pequeños interruptores de hoja para leer el patrón del cilindro. Computadora óptica Steam-punk!!!!!) Durante la Segunda Guerra Mundial, los alemanes tenían televisores mecánicos de 15KHz con un espejo octogonal de cuarzo giratorio que giraba a unas 100.000RPM. Usa uno de esos, y valora la potencia de tu ordenador en términos de caballos de fuerza de la fuente de alimentación del compresor de aire.
O esto: los ordenadores son el software de la aplicación, que está hecho de lenguaje de alto nivel, que está hecho de código de intérprete, que está hecho de ensamblador, que está hecho de opcodes de código de máquina... que están hechos de secuencias de hardware de estado de máquina, que están hechos de registros y selectores de datos y contadores y flipflops, que están todos hechos de puertas lógicas, que están hechos de transistores individuales, que están hechos de silicio impuro, que está hecho de átomos de Si con muy pocos de fósforo, boro. QUE están hechos de núcleos y electrones, que están hechos de protones y neutrones, que están hechos de quarks que cabalgan sobre el mar de nivel de Fermi en ebullición.
O esto: en el centro de su ordenador hay una perilla mecánica de lavandería. Pero gira a más de un ritmo de GHz.