Ciclo de búsqueda, decodificación y ejecución – dentro de una CPU sencilla

InformáticaComputadoras y hardwareEdades 16–17

Una CPU diminuta con PC, MAR, MDR, CIR, ACC, ALU y unidad de control, conectada a 16 o 32 celdas de memoria mediante los buses de direcciones, de datos y de control. Carga un programa de ejemplo escrito en un lenguaje ensamblador sencillo (LDA, ADD, SUB, STA, BRZ, BRP, BRA, OUT, HLT) y avanza ciclo de reloj a ciclo de reloj para ver cómo viajan los datos por los buses en las etapas de búsqueda, decodificación y ejecución; cambia la velocidad del reloj y cuenta los ciclos.

Lección: Dentro del ordenador: la CPU, los registros, los buses y el ciclo de búsqueda, decodificación y ejecución

Qué muestra

Un ordenador de programa almacenado guarda instrucciones y datos como números en la memoria principal. La CPU repite siempre el mismo ciclo: busca la instrucción en la dirección indicada por el contador de programa, la decodifica en la unidad de control y la ejecuta, moviendo valores entre registros, la ALU y la memoria por los buses de direcciones, datos y control. El modelo funciona como el Little Man Computer: códigos decimales de tres cifras, la primera es el código de operación y las dos últimas la dirección, con una transferencia entre registros por ciclo de reloj.

Cómo usarla

Elige un Programa de ejemplo y ajusta el Valor A y el Valor B. Pulsa Paso (1 ciclo) para avanzar un ciclo de reloj y lee arriba la transferencia entre registros, por ejemplo MAR ← PC; pulsa Instrucción completa para terminar la instrucción actual, o Ejecutar para que la Velocidad de reloj mueva la CPU. Cambia la Vista de la memoria entre ensamblador y código máquina, y haz clic en una celda para ver cómo la leería la CPU.

Parámetros que puedes cambiar

  • Programa de ejemplo Sumar dos números (A + B), Cuenta atrás de A a 0 (bucle), El mayor de A y B
  • Valor A 0–50
  • Valor B 0–50
  • Velocidad de reloj 0,5–20 Hz
  • Celdas de memoria 16 celdas, 32 celdas
  • Vista de la memoria Ensamblador (LDA 13…), Código máquina (513…)

Preguntas para explorar

  1. ¿Por qué el contador de programa aumenta durante la búsqueda, antes de ejecutar la instrucción?
  2. ¿Cuántos ciclos de reloj necesitan ADD y BRA en este modelo, y por qué son distintos?
  3. En el programa de cuenta atrás, ¿cómo cambia el total de ciclos cuando A aumenta en 1?