Simple-As-Possible Computer (SAP-1)

En esta página podéis encontrar un simulador del Computador Más Sencillo Posible (SAP-1, Simple-As-Possible Computer), propuesto por Albert Paul Malvino y Jerald A. Brown en el libro “Digital Computer Electronics” (Editorial McGraw-Hill Education).

La animación ha sido creada con fines docentes y educativos con Processing y publicada en la web mediante la librería Processing.js para la asignatura de “Fundamentos de Computadores” del Grado en Ingeniería Informática de la Universidad Rey Juan Carlos.

Introducción:

El SAP-1 es un computador con una arquitectura basada en un bus. Contiene los siguientes elementos:

  • Bus multiplexado de datos/direcciones de ancho 8 bits.
  • Registros activos por flanco, de 4 u 8 bits. Los registros que pueden escribir en el bus contienen un buffer triestado interno. Los que no escriben en él no tienen dicho buffer. Los registros son:
    • Contador de programa (PC, program counter).
    • Registro de entrada y dirección de memoria (input and MAR, input and memory address register).
    • Registro de instrucción (IR, instruction register).
    • Acumulador (AC, accumulator).
    • Registro B (B register).
    • Registro de salida (OUT, output register).
  • Memoria de acceso aleatorio (RAM) de lectura-escritura de tamaño 16×8 (16 posiciones de 8 bits cada una). Está unificada para albergar a la vez datos y programas.
  • ALU con dos operaciones disponibles (sumar y restar) para datos en complemento a 2 de 8 bits (desde -128 hasta +127, ambos inclusive).
  • Display de ledes para visualizar datos almacenados en el registro OUT. En este simulador, mostramos directamente el valor numérico que corresponde a los ledes en base decimal.
  • Unidad de control (controlador-secuenciador).

Características principales del SAP-1:

  • Máquina basada en acumulador, con dos registros de propósito específico (registros B y de salida).
  • Repertorio de instrucciones reducido (LDA, ADD, SUB, OUT, HLT).
  • Las instrucciones de ALU (ADD/SUB) realizan operaciones para 2 operandos, donde un operando (el acumulador) es a la vez fuente y destino. El ancho de la ALU (tamaño de palabra) es 8 bits.
  • Modos de direccionamiento: absoluto a memoria e implícito.
  • Los datos se interpretan en complemento a 2 para permitir la resta.
  • Bus de tipo multiplexado, es decir, transmite alternativamente datos o direcciones. Su ancho es 8 bits, si bien las direcciones solo son de ancho 4.
  • Memoria unificada para datos y programas (arquitectura de von Neumann), de 16 bytes. Por defecto el programa comienza en la dirección 0000.
  • Formato de instrucción de 8 bits (4 para el código de operación + 4 para la dirección del operando, si lo hay).
  • Las instrucciones se ejecutan en varios ciclos (camino de datos multiciclo). La unidad de control puede construirse de manera cableada o microprogramada. En este segundo caso, necesitamos dos memorias ROM auxiliares.

Funcionamiento del simulador:

  • Nada más cargarse esta página aparece una ventana de bienvenida. Pulsar el botón “Aceptar” para que desaparezca.
  • Se muestra entonces la estructura interna del SAP-1. Los elementos amarillos y subrayados son interactivos y cambian de color al colocar el ratón encima de ellos.
  • Antes de nada, hay que cargar un programa en la memoria. Para ello, hacemos clic en la memoria RAM. Aparecerá una nueva pantalla con el contenido de la memoria en ese momento. Pulsando sobre cualquier dirección de memoria, se “desensambla” el contenido, es decir, se reinterpreta el valor almacenado como si fuera una instrucción de ensamblador o como si fuera un dato. Se nos da también la opción de modificar esa posición de memoria para escribir una instrucción o un dato. Por otro lado, también podemos cargar un programa por defecto (el que viene mencionado en el libro de Malvino y Brown). Si queremos restablecer la memoria y vaciar su contenido, pulsar el botón “Borrar programa”. Para regresar a la pantalla principal del simulador, pulsar el botón “Aceptar”.
  • Para arrancar el simulador, pulsar el botón de “Pausar”, ya que inicialmente el simulador está parado. En ese momento se pone en marcha el reloj (CLK) y comienza la ejecución del programa cargado en memoria.
  • Se puede modificar la velocidad de ejecución del programa mediante la barra de desplazamiento de la parte inferior derecha de la pantalla. Asimismo podemos volver a pulsar el botón de “Pausar” cuando deseemos.
  • Si queremos volver a empezar la simulación, pulsar el botón “Reiniciar”. Nótese que podemos pulsarlo tanto si el simulador está activo como en modo pausa.
  • Durante la ejecución de un programa, veremos en la parte superior derecha de la pantalla la palabra de control generada por la unidad de control. Estas señales se activan y desactivan en los momentos precisos para realizar la correcta ejecución de los programas.
  • En el centro de la pantalla se muestra el bus de 8 bits. El color negro se reserva para el nivel bajo de tensión (0 voltios) o valor 0 lógico; el color rojo se reserva para el nivel alto de tensión (5 voltios) o valor 1 lógico; por último, el color gris se reserva para el estado de “alta impedancia” (desconexión o corriente eléctrica nula), que se produce cuando no hay ningún componente del computador escribiendo en el bus.
  • La ejecución del programa continúa automáticamente hasta que se alcance la instrucción HLT (parada), o bien, si se detecta un código de operación no válido.

Simulador:

A continuación tenéis el simulador del SAP-1. Espero que os guste.


Volver al índice de animaciones

Comentarios cerrados.