Lección
La teoría — Una CPU diminuta: Little Man Computer
El ciclo de búsqueda, decodificación y ejecución es el proceso que sigue un procesador con cada instrucción. En la búsqueda, copia PC en MAR, lee el buzón indicado y lleva su contenido a MDR, lo copia en CIR y suma 1 a PC. En la decodificación, separa la instrucción en una operación (la cifra de las centenas) y una dirección (las dos últimas cifras). Las excepciones son 901, 902 y 000: códigos completos de INP, OUT y HLT que no indican ningún buzón. En la ejecución, realiza la operación, que puede requerir una lectura o una escritura en otro buzón mediante MAR y MDR.
Qué significa cada símbolo
PC- contador de programa: dirección de la siguiente instrucción que se va a buscar
MAR- registro de direcciones de memoria: dirección del buzón que se va a leer o escribir
MDR- registro de datos de memoria: valor que se acaba de leer o que se va a escribir
CIR- registro de instrucción actual: instrucción que se está ejecutando
ACC- acumulador: registro donde ADD, SUB y LDA dejan su resultado
- Supone
- El Little Man Computer de Stuart Madnick (MIT, 1965) no define qué ocurre cuando SUB produce un resultado negativo o ADD supera 999. En este simulador, el acumulador admite valores de −999 a 999, por lo que BRP comprueba el signo. Un resultado fuera de ese intervalo detiene la ejecución por desbordamiento, en lugar de dar la vuelta al intervalo. Los simuladores educativos difieren en este punto; un programa cuyo acumulador se mantenga entre 0 y 999 se ejecuta igual en todos ellos.
Problema resuelto al detalle
-
Por qué 2 × 99 requiere 801 instrucciones y 99 × 2 requiere 25 4 pasos
Pulsa 2 × 99, método lento y cambia después las entradas a 99, 2. En ambos casos se imprime 198. Cuenta cuántas instrucciones se ejecutan en cada caso, encuentra la fórmula y calcula cuántas instrucciones exige el orden más desfavorable para un producto que quepa en un buzón.
Abre este problema en la herramienta
-
Antes del bucle se ejecutan 2 INP y 2 STA: 4 instrucciones. El cuerpo del bucle contiene LDA b, BRZ, SUB one, STA b, LDA total, ADD a, STA total, BRA loop: 8 instrucciones que se ejecutan una vez por cada unidad de b.
-
Cuando b llega a 0, el bucle solo ejecuta LDA b y BRZ. Después, LDA total, OUT y HLT completan la ejecución: 5 instrucciones más. En total, se ejecutan 4 + 8b + 5 = 8b + 9 instrucciones. El valor de a no interviene en la fórmula.
-
Con b = 99, el total es 8 × 99 + 9 = 801; con b = 2, es 25. La tabla de resultados muestra 801 para el primer orden y 25 para el segundo.
-
El mayor producto que cabe en un buzón es 999. Si introduces 1, 999, el bucle se ejecuta 999 veces: 8.001 instrucciones. Si introduces 999, 1, se ejecuta una sola vez: 17.
Respuesta
8b + 9 instrucciones, donde b es la segunda entrada. Obtener el mismo 999 requiere 8.001 instrucciones en un orden y 17 en el otro, unas 470 veces más. Si el programa comparase primero las entradas y usase la menor para controlar el bucle, nunca necesitaría más de 8 × 31 + 9 instrucciones, además de las de la comparación: el menor factor de un producto que no supera 999 es, como máximo, 31.
-
Ruta de aprendizaje
Cómo ejecuta un programa un ordenador
Referencias (4)
- Where the third insight's phrase comes from: the connecting tube between CPU and store, named the von Neumann bottleneck, and the remark that much of its traffic is not data but the names of data: John Backus, "Can programming be liberated from the von Neumann style? A functional style and its algebra of programs." Communications of the ACM 21(8), 613–641, August 1978. The 1977 ACM Turing Award Lecture.
- The date the first insight gives for the stored-program idea first running: The University of Manchester, "How a 70-year-old 'Baby' changed the face of modern computing." News, 21 June 2018.
- The machine itself: Madnick's 1965 design, the instruction codes, and the fact the page's assumes rests on, that a negative or over-999 result is left undefined: "Little man computer." Wikipedia, read 14 October 2026.
- A school simulator's instruction table, with BRP described as branching when the accumulator is zero or positive, the sign convention this page follows: 101computing.net, "LMC Simulator."