Computador SISC Von Neumann: Unidad de Control y Tiempos

Apuntes completos del computador SISC Von Neumann para IC (FIB): camino de datos, ROM de control, instrucción JALR, cronometría de reloj y cálculo del Tmpi.

Introducción a los Computadores · Universidad Politécnica de Cataluña · Grado en Ingeniería Informática · Facultad de Informática de Barcelona (Fib) · 1.º curso

35 páginas · 9 temas · 18 flashcards · 36 preguntas tipo test

Índice

  1. Arquitectura Von Neumann frente a Harvard en el procesador SISC · p. 4-6
  2. Fases de ejecución y grafo de estados de la Unidad de Control · p. 6-9
  3. Camino de datos del SISC Von Neumann · p. 9-11
  4. Palabra de control compacta y operaciones por estado · p. 11-15
  5. Estructura lógica interna de la Unidad de Control · p. 15-18
  6. Ampliación de la arquitectura SISA — Instrucción JALR · p. 18-22
  7. Análisis temporal y cálculo del tiempo de ciclo mínimo · p. 22-24
  8. Restricciones temporales de control y señales de memoria e I/O · p. 25-28
  9. Evaluación del rendimiento y comparativa global · p. 28-34

Arquitectura Von Neumann frente a Harvard en el procesador SISC

Flashcards

¿Por qué el computador SISC Harvard Uniciclo desperdicia tiempo al procesar instrucciones aritméticas frente a instrucciones de memoria?
Porque su tiempo de ciclo está fijado en 3000 u.t. por la instrucción más lenta (LDB), dejando a las instrucciones de cómputo inactivas durante los periodos de acceso no utilizados.
¿Qué modificación esencial exige la arquitectura Von Neumann sobre la Unidad de Control?
Exige sustituir el bloque combinacional por un circuito secuencial capaz de emitir palabras de control distintas en cada ciclo elemental de una misma instrucción.

Preguntas tipo test

  1. ¿Cuál es la principal ventaja de unificar la memoria en la arquitectura Von Neumann?
    • a) Aumentar la frecuencia de reloj a valores infinitos
    • b) Permitir propósito general y carga dinámica de programas
    • c) Reducir el número de ciclos por instrucción
    • d) Eliminar por completo la Unidad de Control

    Respuesta: b) Permitir propósito general y carga dinámica de programas. Tener datos e instrucciones en RAM permite cargar y ejecutar programas nuevos dinámicamente sin reprogramar ROMs fijas.

  2. ¿Por qué un computador Von Neumann sin memoria multipuerto no puede ser uniciclo?
    • a) La ALU no soporta operaciones aritméticas rápidas
    • b) El contador de programa no admite incrementos pares
    • c) No puede leer código y operar datos simultáneamente
    • d) Requiere obligatoriamente un bus de datos serial

    Respuesta: c) No puede leer código y operar datos simultáneamente. La memoria única cuenta con un solo canal de direcciones y datos, impidiendo acceder a la instrucción y a los operandos en un mismo ciclo.

  3. ¿Qué tiempo de ciclo elemental caracterizaba al procesador SISC Harvard Uniciclo frente al Multiciclo?
    • a) 750 u.t. frente a 3000 u.t.
    • b) 3000 u.t. frente a 1500 u.t.
    • c) 1500 u.t. frente a 500 u.t.
    • d) 3000 u.t. frente a 750 u.t.

    Respuesta: d) 3000 u.t. frente a 750 u.t.. El Harvard Uniciclo requería 3000 u.t. por la suma total de retardos, mientras el Multiciclo fragmentó las etapas a 750 u.t.

Fases de ejecución y grafo de estados de la Unidad de Control

Flashcards

¿Por qué las operaciones de salto condicional (BZ, BNZ) se pueden resolver en 3 ciclos a pesar de requerir dos cálculos en la ALU?
Porque el cálculo de la dirección destino (PC + N) se adelanta durante la fase Decode y se guarda en R@, permitiendo que en el tercer ciclo la ALU se limite a comprobar la condición de salto.
¿Cuál es la secuencia de estados que sigue una instrucción de carga en memoria LD?
Pasa por cuatro estados secuenciales: E0 (Fetch), E1 (Decode), E5 (Addr) y E6 (Ld), retornando después a E0.

Preguntas tipo test

  1. ¿Cuántos ciclos insume la ejecución completa de una instrucción LD en el procesador SISC Von Neumann?
    • a) 4 ciclos
    • b) 5 ciclos
    • c) 3 ciclos
    • d) 2 ciclos

    Respuesta: a) 4 ciclos. LD es una instrucción lenta de acceso a memoria que requiere Fetch, Decode, Addr y el estado Ld.

  2. ¿Qué operación realiza la ALU durante el ciclo de búsqueda o Fetch?
    • a) Cálculo de la dirección de memoria
    • b) Cálculo del desplazamiento relativo N
    • c) Comprobación de la condición de salto
    • d) Incremento del PC en dos unidades

    Respuesta: d) Incremento del PC en dos unidades. Al no usarse para la instrucción, la ALU aprovecha el ciclo Fetch para computar PC+2.

  3. ¿Qué valor almacena el registro temporal R@ al concluir el ciclo Decode?
    • a) El valor del operando fuente Ra
    • b) La dirección del salto tomado PC+N
    • c) El código de operación decodificado
    • d) El resultado aritmético de la instrucción

    Respuesta: b) La dirección del salto tomado PC+N. En D, la ALU calcula de forma anticipada la dirección hipotética del salto (PC+N) y la guarda en R@.

Camino de datos del SISC Von Neumann

Flashcards

¿Cuál es la diferencia fundamental en la señal de control de carga entre el registro IR y los registros RX/RY?
El registro IR posee una señal de permiso de escritura explícita (LdIr) para retener la instrucción durante toda su ejecución, mientras que RX y RY carecen de permiso de carga y se actualizan en cada flanco activo de reloj.
¿Qué función cumple el registro R@ en las instrucciones que leen o escriben en memoria (LD, ST, LDB, STB)?
Guarda temporalmente la dirección de memoria calculada por la ALU (RX + N) durante la fase previa de cálculo para aplicarla al bus de direcciones en el ciclo posterior de acceso.

Preguntas tipo test

  1. ¿Cuál de los siguientes elementos forma parte del estado visible del procesador SISC Von Neumann?
    • a) El banco de registros R0-R7
    • b) El registro temporal RX
    • c) El registro de instrucción IR
    • d) El registro de dirección R@

    Respuesta: a) El banco de registros R0-R7. R0-R7 forman parte del estado visible para el software, mientras que IR, RX y R@ son registros temporales internos.

  2. ¿Cómo se controlan las escrituras en los registros temporales RX y RY?
    • a) Se habilitan mediante la señal WrD
    • b) Mediante una señal LdRxRy dedicada
    • c) Se cargan en cada ciclo sin habilitación
    • d) Solo se cargan en la fase de Fetch

    Respuesta: c) Se cargan en cada ciclo sin habilitación. RX y RY no disponen de señal de permiso de carga; se escriben en cada flanco activo de reloj.

  3. ¿Qué selecciona el multiplexor R@/Pc en la entrada del bus de direcciones de memoria?
    • a) Registro RX o contador de programa PC
    • b) Dirección de instrucción (PC) o dato (R@)
    • c) Salida de ALU o puerto de entrada
    • d) Dato inmediato N o registro RY

    Respuesta: b) Dirección de instrucción (PC) o dato (R@). El multiplexor conmuta entre el PC para leer instrucciones y R@ para acceder a direcciones de datos.

Palabra de control compacta y operaciones por estado

Flashcards

¿Por qué las señales críticas como WrD, Wr-Mem o LdPc no pueden tomar el valor x en la palabra de control?
Porque una condición de indiferencia x podría sintetizarse a nivel lógico en un valor activo '1', desencadenando escrituras accidentales y corrompiendo el estado del sistema.
¿Qué valor adopta la señal Byte durante los estados F y Ldb respectivamente, y por qué?
En F adopta Byte = 0 porque las instrucciones se leen en bloques de palabra (16 bits), mientras que en Ldb toma Byte = 1 para acceder únicamente a un dato de 8 bits.

Preguntas tipo test

  1. ¿Qué combinación de P/I/L/A selecciona el dato leído desde memoria?
    • a) 10
    • b) 01
    • c) 11
    • d) 00

    Respuesta: b) 01. La codificación estándar del multiplexor P/I/L/A asigna 01 al dato Ld proveniente de la memoria de datos.

  2. ¿Cuál es la función del registro R@ durante la fase de Decode?
    • a) Almacenar el resultado de la ALU
    • b) Habilitar la escritura en registros
    • c) Calcular especulativamente el salto condicional
    • d) Guardar el código de operación

    Respuesta: c) Calcular especulativamente el salto condicional. En D, la ALU calcula especulativamente la dirección de bifurcación relativa y la preserva en R@ por si la instrucción es Bz o Bnz.

  3. ¿Qué valor toma la señal LdPc en el estado Bz?
    • a) La negación !z
    • b) Siempre 1
    • c) Siempre 0
    • d) El flag z

    Respuesta: d) El flag z. En Bz el salto solo se toma si la condición se cumple, por lo que LdPc toma directamente el valor del flag de cero z.

Estructura lógica interna de la Unidad de Control

Flashcards

¿Cuáles son exactamente las 10 señales de entrada que utiliza la ROM_Q+ para decidir el estado siguiente?
Las señales son los 5 bits del estado actual Q (q4..q0), los 4 bits del código de operación de la instrucción (I15..12) y 1 bit de extensión (I8).
¿Por qué motivo las señales de control WrMem, RdIn y WrOut se combinan con !Clk a la salida de la ROM_OUT?
Para cualificar temporalmente los pulsos de control durante la fase baja del reloj, asegurando los requerimientos de sincronización y anchos de pulso en memoria y periféricos.

Preguntas tipo test

  1. ¿Cuántas palabras y bits de salida contiene la ROM de estado siguiente ( R O M Q ROM_Q R O M Q ​ +)?
    • a) 4096 palabras de 10 bits
    • b) 2048 palabras de 5 bits
    • c) 32 palabras de 24 bits
    • d) 1024 palabras de 5 bits

    Respuesta: d) 1024 palabras de 5 bits. Dispone de 10 bits de dirección (2¹⁰ = 1024 palabras) y codifica un estado futuro de 5 bits.

  2. ¿Qué entradas indexan directamente la memoria de salidas ROM_OUT?
    • a) Los bits de Q y la bandera z
    • b) El código de operación e I8
    • c) La instrucción entera de 16 bits
    • d) Únicamente los 5 bits de Q

    Respuesta: d) Únicamente los 5 bits de Q. Al seguir el modelo de Moore, las salidas de control dependen exclusivamente del estado actual Q.

  3. ¿Cómo se genera la señal LdPc para saltos y avance secuencial?
    • a) Directamente desde la salida de R O M Q ROM_Q R O M Q ​ +
    • b) Con una compuerta: Bz·z + Bnz·!z
    • c) Indexando la ROM_OUT con el flag z
    • d) Mediante el multiplexor MxN

    Respuesta: b) Con una compuerta: Bz·z + Bnz·!z. Se sintetiza externamente mediante lógica combinacional con las señales Bz y Bnz provenientes de ROM_OUT.

Ampliación de la arquitectura SISA — Instrucción JALR

Flashcards

¿Qué valor deben adoptar las señales de control P/I/L/A, OP y F durante el estado de ejecución E10?
P/I/L/A debe valer 11 para encaminar el PC al bus D de REGFILE, mientras que OP=10 y F=011 seleccionan la operación de alineamiento X & (~1) en la ALU.
¿Por qué las direcciones 0101001110 y 0101001111 de ROM_Q+ devuelven ambas el estado E0 (00000)?
Porque en el estado E10 el bit I8 no actúa como discriminador de operación, de modo que independientemente de que valga 0 o 1, la instrucción JALR termina y transita de forma incondicional al estado de Fetch E0.

Preguntas tipo test

  1. ¿Cuál es el código de operación en binario de la instrucción JALR en el formato 2R?
    • a) 0110
    • b) 0111
    • c) 0011
    • d) 1010

    Respuesta: b) 0111. El repertorio SISA asigna el código de operación 0111 a la instrucción JALR en sus bits 15 a 12.

  2. ¿Qué configuración de la ALU ejecuta la operación de alineamiento W = X & (~1)?
    • a) OP=00 y F=011
    • b) OP=10 y F=010
    • c) OP=10 y F=011
    • d) OP=01 y F=100

    Respuesta: c) OP=10 y F=011. La operación se añade al bloque MISC de la ALU, seleccionado mediante OP=10 y F=011.

  3. ¿Qué valor selecciona la entrada directa de PC en el multiplexor del bus D (P/I/L/A)?
    • a) 10 (2)
    • b) 11 (3)
    • c) 01 (1)
    • d) 00 (0)

    Respuesta: b) 11 (3). El valor 11 (3) conecta el bus de salida del PC a la entrada D del banco de registros.

Análisis temporal y cálculo del tiempo de ciclo mínimo

Flashcards

¿Qué operaciones compiten en paralelo durante el estado Fetch y cuál determina su retardo?
Compiten la lectura de la instrucción en la RAM (1090 u.t.) y el incremento del PC mediante la ALU (1230 u.t.). El camino crítico lo determina el incremento del PC con 1230 u.t.
¿Por qué el estado Cmp es el más crítico del camino de datos en lugar de los accesos a la memoria RAM?
Porque la instrucción CMPLE encadena una resta de 16 bits, el cálculo de las banderas de estado y multiplexores lógicos de condición (1020 u.t. de ALU), sumando 1350 u.t. hasta el banco de registros frente a las 1210 u.t. de Ldb.

Preguntas tipo test

  1. ¿Cuál es el camino crítico en la fase de Fetch del SISC Von Neumann?
    • a) Lectura de la memoria RAM
    • b) Carga del registro IR
    • c) Incremento de PC en ALU
    • d) Acceso a la ROM_OUT

    Respuesta: c) Incremento de PC en ALU. El incremento PC+2 a través de la ALU requiere 1230 u.t., superando los 1090 u.t. de la lectura de instrucción en la memoria.

  2. ¿Qué operación impone el cuello de botella temporal absoluto en el procesador?
    • a) Lectura en memoria Ldb
    • b) Comparación CMPLE en Cmp
    • c) Escritura en memoria Stb
    • d) Precálculo de salto en D

    Respuesta: b) Comparación CMPLE en Cmp. El estado Cmp ejecutando CMPLE acumula 1350 u.t. desde el inicio del ciclo hasta la entrada de Rd.

  3. ¿Cuánto tiempo tarda en estabilizarse el cálculo de salto tomado en R@ durante Decode?
    • a) 1150 u.t.
    • b) 230 u.t.
    • c) 1230 u.t.
    • d) 220 u.t.

    Respuesta: a) 1150 u.t.. La suma en la ALU del PC y el desplazamiento requiere 1150 u.t. para alcanzar los biestables de R@.

Restricciones temporales de control y señales de memoria e I/O

Flashcards

¿Cuál es la causa principal de que el dato a escribir en el módulo 1 tarde 220 u.t. en estabilizarse frente a las 100 u.t. del módulo 0?
La entrada de datos al módulo 1 requiere atravesar un multiplexor 2 a 1 gobernado por la señal !Byte , la cual requiere 170 u.t. para generarse antes de propagarse por el multiplexor.
¿Qué sucedería con la memoria si se utilizara una señal de reloj con un semiperiodo a nivel bajo T0 = 500 u.t.?
Se violaría la especificación de anchura mínima del pulso de escritura (Tpw = 600 u.t.), lo que impediría la grabación fiable del dato en las celdas de la memoria RAM.

Preguntas tipo test

  1. ¿Por qué se califica Wr-Mem con el reloj negado (!Clk)?
    • a) Para limitar la escritura al semiperiodo bajo
    • b) Para sincronizar el bus con la ALU
    • c) Para reducir el retardo del multiplexor
    • d) Para acelerar el acceso en lecturas consecutivas

    Respuesta: a) Para limitar la escritura al semiperiodo bajo. La compuerta AND con !Clk impide activar la escritura mientras las direcciones y datos conmutan durante T1.

  2. ¿Cuál es el valor mínimo de T1 admisible para cumplir el tiempo de setup?
    • a) 60 u.t.
    • b) 600 u.t.
    • c) 280 u.t.
    • d) 210 u.t.

    Respuesta: d) 210 u.t.. Teniendo en cuenta la estabilización del dato más lento a las 220 u.t., Tsu de 60 u.t. y retardos de compuertas, T1 requiere un mínimo de 210 u.t.

  3. ¿Qué parámetro dinámico impone la cota mínima del semiperiodo a nivel bajo T0?
    • a) El tiempo de retención Th
    • b) El tiempo de acceso Tacc
    • c) El ancho de pulso Tpw
    • d) El retardo del inversor

    Respuesta: c) El ancho de pulso Tpw. T0 determina la duración de la activación del pulso de escritura, que debe satisfacer como mínimo Tpw (600 u.t.).

Evaluación del rendimiento y comparativa global

Flashcards

Calcula el Tmpi del procesador SISC Von Neumann para una aplicación con un 20 % de instrucciones de carga y almacenamiento.
Para r = 0,2, aplicamos Tmpi(0,2) = 1400 × (3 + 0,2) = 1400 × 3,2 = 4480 u.t.
¿Por qué el sobrecoste porcentual del SISC Von Neumann respecto al Harvard Multiciclo no depende del valor de r?
Porque ambas arquitecturas tienen un CPI idéntico de 3 + r ciclos; al dividir sus tiempos de ejecución, ese factor se cancela, quedando únicamente la relación fija entre sus tiempos de ciclo: (1400 - 750)/(750) × 100 = 86,6 \%.

Preguntas tipo test

  1. ¿Cuál es la expresión del Tmpi para el procesador SISC Von Neumann?
    • a) 1400 · (4 - r) u.t.
    • b) 750 · (3 + r) u.t.
    • c) 3000 u.t.
    • d) 1400 · (3 + r) u.t.

    Respuesta: d) 1400 · (3 + r) u.t.. Pondera 3 ciclos para instrucciones rápidas y 4 para lentas, multiplicados por el ciclo de 1400 u.t.

  2. ¿Cuánto tiempo más tarda cualquier programa en el SISC Von Neumann respecto al Harvard Multiciclo?
    • a) Un 40 % más
    • b) Depende del valor de r
    • c) Entre un 40 % y un 86,6 %
    • d) Exactamente un 86,6 % más

    Respuesta: d) Exactamente un 86,6 % más. El factor (3 + r) se cancela en la comparación y resulta un valor fijo del 86,6 %.

  3. ¿En qué rango se sitúa el sobrecoste temporal de Von Neumann frente al Harvard Uniciclo?
    • a) Exactamente 54 % para todo r
    • b) Fijo en 86,6 %
    • c) Entre 40 % y 86,6 % según r
    • d) Entre 0 % y 50 % según r

    Respuesta: c) Entre 40 % y 86,6 % según r. Para r = 0 el sobrecoste es del 40 % y aumenta linealmente hasta el 86,6 % con r = 1.

Y 0 flashcards y 9 preguntas más en el documento.

Texto del documento

APUNTES INTRODUCCIÓN A LOS COMPUTADORES Grado en Ingeniería Informática Universidad Politécnica de Cataluña AprenAI 2026-2027 Apuntes completos del computador SISC Von Neumann para IC (FIB): camino de datos, ROM de control, instrucción JALR, cronometría de reloj y cálculo del Tmpi.

APREN.AI Índice 1 Arquitectura Von Neumann frente a Harvard en el procesador SISC Arquitectura Harvard frente a Von Neumann Limitaciones de las arquitecturas Harvard previas El compromiso espacio-tiempo-versatilidad y el modelo Von Neumann 2 Fases de ejecución y grafo de estados de la Unidad de Control Descomposición funcional en fases Acciones simultáneas en la fase de Fetch (F) Acciones en la fase de Decode (D) y cálculo en R@ Grafo de estados de la Unidad de Control Flujo de retorno y reinicio del ciclo 3 Camino de datos del SISC Von Neumann Transformación de la UPG Harvard al camino de datos Von Neumann Estado visible frente a registros temporales internos Funcionamiento y control de los registros temporales Encaminamiento de buses mediante multiplexores 4 Palabra de control compacta y operaciones por estado Estructura y campos de la palabra de control de 51 bits Convención de la palabra de control compactada y protección de escritura Control de accesos a memoria: palabra frente a byte Acciones RTL y desglose de la palabra compactada por estado 5 Estructura lógica interna de la Unidad de Control Estructura global y justificación del direccionamiento reducido Memoria de estado siguiente (ROM_Q+) Memoria de salidas (ROM_OUT) y generación de microcódigo Lógica externa para señales condicionales y control de PC 6 Ampliación de la arquitectura SISA — Instrucción JALR Definición y codificación de la instrucción JALR Modificación de la ALU: Operación de alineamiento en el bloque MISC Optimización del camino de datos: Ruta directa de PC a bus D Actualización de la Unidad de Control y Grafo de Estados 7 Análisis temporal y cálculo del tiempo de ciclo mínimo Parámetros temporales de los componentes básicos Análisis temporal de la fase de Fetch (F) Caminos temporales en la fase de Decode (D) Caminos críticos en fases de ejecución: Ldb y Cmp Determinación del tiempo de ciclo mínimo global 8 Restricciones temporales de control y señales de memoria e I/O Parámetros dinámicos de los módulos de memoria Generación de Wr-Mem y sincronización con !Clk Cálculo del semiperiodo a nivel alto mínimo (T1) Ancho de pulso (T0) y elección del reloj simétrico Viabilidad para señales de entrada y salida (Rd-In y Wr-Out) 9 Evaluación del rendimiento y comparativa global Definición y formulación del Tiempo Medio por Instrucción (Tmpi) Comparación analítica entre procesadores SISC Balance arquitectónico: versatilidad y coste frente a velocidad 10 Formulario 1.

Evaluación del rendimiento y tiempo medio por instrucción (Tmpi) 2. Dimensionamiento y ecuaciones de la Unidad de Control 3. Cronometría, retardos críticos y parámetros de reloj 4. Fases y ciclos de ejecución de instrucciones SISA 5. Constantes y errores típicos de examen Soluciones de las preguntas de repaso Computador SISC Von Neumann: Unidad de Control y Tiempos 1 Estos apuntes pueden contener errores u omisiones. Son un material de apoyo y no sustituyen al temario oficial ni al profesorado: contrasta la información importante.

Computador SISC Von Neumann: Unidad de Control y Tiempos 2 1 Arquitectura Von Neumann frente a Harvard en el procesador SISC AL ACABAR SABRÁS Distinguir las características estructurales entre las arquitecturas Harvard y Von Neumann. Identificar los compromisos de espacio, tiempo y versatilidad entre procesadores uniciclo y multiciclo. Explicar la imposibilidad técnica de construir un computador Von Neumann elemental en un único ciclo de reloj. PIÉNSALO ANTES DE LEER 1 ¿Por qué un procesador con memoria única para datos y programas no puede ejecutar una instrucción de carga en un único ciclo de reloj?

El diseño de procesadores digitales plantea un equilibrio fundamental entre la complejidad de los componentes físicos, la velocidad de ejecución y la flexibilidad del sistema para resolver tareas diversas. En los modelos iniciales de la arquitectura docente SISA (Simple Instruction Set Architecture), que alcanza un repertorio cerrado de 25 instrucciones tras incorporar la instrucción de salto y enlace JALR, se exploraron estructuras de tipo Harvard. No obstante, el salto hacia un computador de propósito general requiere adoptar el modelo Von Neumann unificado con memoria RAM compartida de 64 KB (32 Kwords de 16 bits).

ESQUEMA Evolución y estructura del computador SISC Arquitectura Harvard frente a Von Neumann La diferencia medular entre ambos esquemas radica en cómo se estructuran y comunican las memorias del sistema: Arquitectura Harvard: mantiene físicamente separadas la memoria encargada del código del programa y la memoria destinada a los datos. Esta separación permite lecturas simultáneas de instrucción y operando en un mismo instante temporal a costa de duplicar buses e interfaces. Resulta común en dispositivos empotrados específicos donde el código rara vez cambia.

Arquitectura Von Neumann: integra tanto los datos del usuario como las instrucciones ejecutables dentro de una única memoria física compartida. Al disponer de un único bus de direcciones y datos, el acceso a la memoria se convierte en un recurso compartido que debe secuenciarse en el tiempo. DEFINICIÓN Un computador Von Neumann es aquel donde las instrucciones y los operandos residen en el mismo espacio de almacenamiento unificado, compartiendo los canales de direccionamiento y transferencia de datos. COMPRUEBA 2 ¿Por qué la arquitectura Harvard resulta adecuada en sistemas empotrados pero insuficiente para computadores personales o servidores?

Limitaciones de las arquitecturas Harvard previas El procesador inicial SISC Harvard Uniciclo ejecutaba cada instrucción completa en un solo ciclo de reloj constante. Para garantizar que cualquier instrucción finalizara con éxito, el periodo de reloj debía fijarse según la trayectoria más lenta (instrucción LDB), resultando en un tiempo de ciclo elevado de 3000 u.t. Este diseño presentaba graves compromisos: Baja eficiencia temporal: las instrucciones breves (como sumas o comparaciones lógicas) desperdiciaban casi 800 u.t. de inactividad mientras el reloj esperaba el tiempo asignado a las lecturas lentas.

Baja eficiencia espacial: cada módulo hardware solo podía realizar una función fija por ciclo. No era posible reutilizar la ALU para actualizar el contador de programa (PC) y operar datos en el mismo ciclo, forzando la inclusión de sumadores e incrementadores dedicados redundantes. Baja versatilidad: la memoria de instrucciones funcionaba como una ROM estática sin instrucciones máquina capaces de sobreescribirla, imposibilitando la carga dinámica de programas compilados en C. Computadores SISC Evolución arquitectónica del procesador Modelos Harvard Memorias de código y datos separadas Harvard Uniciclo Ciclo largo de 3000 u.t. y baja eficiencia Harvard Multiciclo Ciclo de 750 u.t.

y control dividido SISC Von Neumann Memoria unificada de 64 KB y propósito general Camino de datos Reutilización de ALU y registros temporales Unidad de Control Control secuencial y grafo de Moore Computador SISC Von Neumann: Unidad de Control y Tiempos 3 Para mitigar la lentitud temporal se propuso el SISC Harvard Multiciclo. Este esquema redujo el tiempo de ciclo elemental a 750 u.t., dividiendo la ejecución en 3 ciclos para instrucciones rápidas y 4 ciclos para instrucciones lentas de acceso a memoria (LD, LDB, ST, STB).

Aunque la velocidad mejoró entre un 0 % y un 33,3 % según la tasa de instrucciones de memoria, el computador continuaba sufriendo de duplicidad funcional de hardware y de una memoria de código aislada. ERROR FRECUENTE Creer que un computador Von Neumann estándar puede implementarse en un único ciclo de reloj. Esto es físicamente inviable sin complejas memorias multipuerto: en una instrucción de carga (LD) o almacenamiento (ST), la memoria común debe direccionarse primero para extraer la instrucción y luego para leer o escribir el operando. Un único puerto simple no puede procesar dos direcciones distintas simultáneamente dentro del mismo ciclo.

COMPRUEBA 3 ¿En qué rango de mejora temporal se sitúa el SISC Harvard Multiciclo frente al Harvard Uniciclo y de qué depende? El compromiso espacio-tiempo-versatilidad y el modelo Von Neumann El diseño de computadores se rige por la interacción entre la superficie física de silicio (espacio), el tiempo de procesamiento por instrucción (tiempo) y la capacidad funcional del sistema (versatilidad). El SISC Von Neumann resuelve las carencias previas mediante un cambio conceptual profundo: la reutilización intensiva del hardware a lo largo de ciclos sucesivos. Característica SISC Harvard Uniciclo SISC Harvard Multiciclo SISC Von Neumann Tiempo de ciclo elemental 3000 u.t. 750 u.t. 1400 u.t.

Estructura de memoria Separada (ROM programa + RAM datos) Separada (ROM programa + RAM datos) Unificada en RAM (64 KB / 32 Kwords) Flexibilidad del programa Fija en ROM (baja versatilidad) Fija en ROM (baja versatilidad) Propósito general (carga en RAM con LD/ST) Reutilización de la ALU Nula (requiere sumadores auxiliares) Nula (mantiene módulos de apoyo) Alta (computa saltos, datos y secuencias) Control requerido Combinacional simple Combinacional + secuenciador de estado Secuencial completo de Moore Al permitir que cada instrucción se subdivida en varios estados de reloj, una misma unidad multifunción puede asumir cometidos enteramente diferentes en instantes consecutivos.

La ALU se emplea en un ciclo para calcular el siguiente PC o verificar condiciones lógicas, y en otro posterior para efectuar cálculos aritméticos con registros fuente. De modo análogo, la memoria compartida suministra el código al inicio y transfiere datos más adelante (véase «Camino de datos del SISC Von Neumann»). Esta capacidad de emitir palabras de control distintas en cada ciclo elimina la necesidad de hardware duplicado (como incrementadores dedicados de PC), compacta el espacio físico y abre el camino para procesar algoritmos de propósito general en memoria volátil de lectura y escritura.

PARA RECORDARLO Von Neumann intercambia más ciclos de reloj por un hardware más compacto y universal: la memoria única y la ALU hacen más tareas en momentos distintos, requiriendo una Unidad de Control secuencial. COMPRUEBA 4 ¿Cómo logra el procesador Von Neumann prescindir del sumador dedicado para el contador de programa? IDEAS CLAVE La arquitectura Harvard mantiene memorias físicas independientes para instrucciones y datos, permitiendo accesos paralelos simultáneos. La arquitectura Von Neumann unifica datos y código en una memoria compartida de 64 KB (32 Kwords de 16 bits), siendo indispensable en sistemas de propósito general.

Un computador Von Neumann convencional no puede operar en un único ciclo debido al cuello de botella estructural del bus de memoria. El SISC Von Neumann reutiliza la ALU y la memoria a través de una Unidad de Control secuencial que emite señales diferentes en cada ciclo. El compromiso espacio-tiempo-versatilidad se equilibra minimizando la circuitería dedicada a cambio de requerir múltiples ciclos de reloj por instrucción. COMPRUEBA LO QUE HAS APRENDIDO 5. ¿Por qué el computador SISC Harvard Uniciclo desperdicia tiempo al procesar instrucciones aritméticas frente a instrucciones de memoria? 6. ¿Qué modificación esencial exige la arquitectura Von Neumann sobre la Unidad de Control?

Computador SISC Von Neumann: Unidad de Control y Tiempos 4 Test Rodea la respuesta correcta. Las soluciones están al final. 7. ¿Cuál es la principal ventaja de unificar la memoria en la arquitectura Von Neumann? 8. ¿Por qué un computador Von Neumann sin memoria multipuerto no puede ser uniciclo? 9. ¿Qué tiempo de ciclo elemental caracterizaba al procesador SISC Harvard Uniciclo frente al Multiciclo? 10. ¿Cómo optimiza el SISC Von Neumann la eficiencia de área o espacial? 2 Fases de ejecución y grafo de estados de la Unidad de Control AL ACABAR SABRÁS Describir las tareas realizadas en cada fase de ejecución del procesador SISC Von Neumann.

Justificar el cálculo anticipado de PC+2 y PC+N aprovechando los ciclos libres de la ALU. Distinguir en el grafo de Moore la trayectoria de las instrucciones de 3 ciclos frente a las de 4 ciclos. PIÉNSALO ANTES DE LEER 11 ¿Por qué un procesador calcula la dirección de un salto condicional antes de saber si la condición se cumple? En el procesador SISC bajo una arquitectura unificada (véase «Arquitectura Von Neumann frente a Harvard en el procesador SISC»), la ejecución de instrucciones se descompone en varias etapas secuenciales.

Una unidad de control multiciclo modelada mediante un autómata secuencial genera en cada ciclo una configuración de señales distinta para coordinar el camino de datos. Descomposición funcional en fases La ejecución de cualquier instrucción se divide en tres fases conceptuales: búsqueda, decodificación y ejecución con actualización de estado. Cada una de estas etapas se completa en un número determinado de ciclos de reloj. DEFINICIÓN Un autómata de estados de tipo máquina de Moore genera salidas que dependen exclusivamente del estado actual en el que se encuentra el circuito secuencial, y no de las entradas en ese instante.

Búsqueda (Fetch, F): Se lee la instrucción de la memoria compartida y se almacena en el registro de instrucción (IR). Esta etapa es universal e idéntica para todas las instrucciones del repertorio. Decodificación (Decode, D): El sistema determina el estado subsiguiente a partir del código de operación presente en el IR. En un autómata de Moore, las señales de salida en este estado son comunes para todas las instrucciones porque el tipo exacto de operación aún se está resolviendo. Ejecución y modificación del estado: Se computan las operaciones en la ALU o se accede a memoria o puertos, modificando los registros destino.

Esta fase abarca uno o varios ciclos según la complejidad de la instrucción. COMPRUEBA 12 ¿Por qué la fase de decodificación D no genera señales de control específicas para cada instrucción si el código de operación ya está en el registro IR? Aumentar la frecuencia de reloj a valores infinitos a) Permitir propósito general y carga dinámica de programas b) Reducir el número de ciclos por instrucción c) Eliminar por completo la Unidad de Control d) La ALU no soporta operaciones aritméticas rápidas a) El contador de programa no admite incrementos pares b) No puede leer código y operar datos simultáneamente c) Requiere obligatoriamente un bus de datos serial d) 750 u.t. frente a 3000 u.t.

a) 3000 u.t. frente a 1500 u.t. b) 1500 u.t. frente a 500 u.t. c) 3000 u.t. frente a 750 u.t. d) Duplicando el banco de registros generales a) Reutilizando la ALU para actualizar el PC b) Implementando buses de 64 bits en paralelo c) Añadiendo sumadores dedicados para cada salto d) Computador SISC Von Neumann: Unidad de Control y Tiempos 5 Acciones simultáneas en la fase de Fetch (F) Durante el ciclo de Fetch no solo se lee la memoria. La ALU se encuentra inactiva respecto al flujo principal del programa, lo que permite reutilizarla para actualizar el contador de programa sin añadir circuitos incrementadores dedicados.

En este único ciclo se solapan dos operaciones fundamentales: Al terminar este ciclo, si la instrucción en curso no produce bifurcaciones, el PC ya contiene el valor definitivo para la siguiente instrucción. COMPRUEBA 13 ¿Qué ventaja de diseño aporta calcular PC+2 mediante la ALU en lugar de usar un sumador propio? Acciones en la fase de Decode (D) y cálculo en R@ En el estado D se lee el registro de instrucción para seleccionar la transición al siguiente estado. Además, se aprovecha nuevamente la disponibilidad de la ALU para realizar un trabajo por adelantado. La ALU computa la dirección del salto relativo sumando el PC actualizado en la etapa F y el desplazamiento con signo: .

Este resultado provisional se guarda al terminar el ciclo D en un registro específico denominado registro R@. PARA RECORDARLO El cálculo de la dirección efectiva en R@ se ejecuta siempre en D, incluso si la instrucción decodificada no es un salto condicional. Es una operación anticipada para evitar un ciclo extra. ERROR FRECUENTE Un error común es asumir que durante la fase D se modifica el contador de programa (PC) con el salto. En el ciclo D solo se escribe en el registro temporal R@; el PC únicamente se actualizará en la fase de ejecución si la condición de salto se cumple.

Si este cálculo de dirección no se adelantara a la fase D, las instrucciones de salto condicional requerirían dos ciclos en su fase de ejecución: uno para evaluar si el registro fuente es cero a través de la ALU y otro ciclo adicional para sumar el desplazamiento. COMPRUEBA 14 ¿Por qué el valor calculado PC+N no se escribe directamente en el PC durante el ciclo D? Grafo de estados de la Unidad de Control El autómata global de control organiza las transiciones determinando la duración exacta de cada instrucción. La bifurcación principal se produce tras el ciclo de decodificación (D).

Grafo de estados de la unidad de control del computador SISA En función de las operaciones requeridas, las instrucciones se estructuran en dos categorías según su coste temporal: Instrucciones rápidas: Se completan en un total de 3 ciclos (F, D y un estado de ejecución). Lectura de instrucción: Se accede a la memoria principal en la dirección marcada por el PC y el dato leído se escribe en el registro IR al finalizar el ciclo. 1 Cálculo secuencial: La ALU realiza la operación , dejando el contador de programa apuntando a la siguiente posición de memoria.

2 PC + 2 PC + N Computador SISC Von Neumann: Unidad de Control y Tiempos 6 Instrucciones lentas: Se completan en 4 ciclos (F, D y dos estados sucesivos de ejecución).

Categoría Instrucciones Estados recorridos Ciclos totales Aritmético-lógicas (Al) AND, OR, XOR, NOT, ADD, SUB, SHA, SHL E0 (F) E1 (D) E2 (Al) 3 Comparación (Cmp) CMPLT, CMPLE, CMPEQ, CMPLTU, CMPLEU E0 (F) E1 (D) E3 (Cmp) 3 Inmediatas / Movimiento ADDI, MOVI, MOVHI E0 (F) E1 (D) E4 (Addi) / E13 (Movi) / E14 (Movhi) 3 Saltos condicionales BZ, BNZ E0 (F) E1 (D) E11 (Bz) / E12 (Bnz) 3 Entrada / Salida IN, OUT E0 (F) E1 (D) E15 (In) / E16 (Out) 3 Acceso a memoria (Lentas) LD, ST, LDB, STB E0 (F) E1 (D) E5 (Addr) E6 (Ld) / E7 (St) / E8 (Ldb) / E9 (Stb) 4 Todas las instrucciones de acceso a memoria comparten el primer ciclo de ejecución en el estado Addr (E5).

En este estado común, la ALU calcula la dirección efectiva de memoria sumando el registro base y el desplazamiento extendido: . Posteriormente, el autómata transita hacia el estado específico de transferencia según se trate de carga o almacenamiento en formato byte o palabra. PROCESO Fases de ejecución de instrucciones rápidas y lentas Flujo de retorno y reinicio del ciclo Al completarse el último nodo de ejecución asignado a la instrucción (sea el tercer ciclo para instrucciones rápidas o el cuarto para las de memoria), el circuito secuencial retorna de manera incondicional al estado F para capturar la siguiente instrucción del programa.

COMPRUEBA 15 ¿Qué función realiza el estado común Addr (E5) en las cuatro instrucciones de acceso a memoria? IDEAS CLAVE La ejecución en el SISC Von Neumann se descompone en fases secuenciales que emplean una máquina de Moore. En Fetch (F) se lee la instrucción en memoria hacia IR y se incrementa el contador con usando la ALU. En Decode (D) se prepara la dirección de bifurcación y se guarda de forma anticipada en el registro R@. Las instrucciones rápidas (ALU, comparaciones, saltos, E/S) insumen exactamente 3 ciclos. Las instrucciones de memoria (LD, ST, LDB, STB) requieren 4 ciclos y comparten el cálculo de dirección en el estado Addr. COMPRUEBA LO QUE HAS APRENDIDO 16.

¿Por qué las operaciones de salto condicional (BZ, BNZ) se pueden resolver en 3 ciclos a pesar de requerir dos cálculos en la ALU? 17. ¿Cuál es la secuencia de estados que sigue una instrucción de carga en memoria LD? Test Rodea la respuesta correcta. Las soluciones están al final. 18. ¿Cuántos ciclos insume la ejecución completa de una instrucción LD en el procesador SISC Von Neumann?

Ra + SE(N6) Fetch (E0) Lectura a IR e incremento PC+2 en ALU 1 Decode (E1) Decodificación y cálculo de PC+N en R@ 2 Ejecución rápida Fin en 3 ciclos para Al, Cmp, Branch o E/S 3 Addr (E5) Cálculo de dirección Ra+SE(N6) para memoria 4 Acceso a memoria Lectura/escritura (LD, ST, LDB, STB) en cuarto ciclo 5 PC + 2 PC + N 4 ciclos a) 5 ciclos b) 3 ciclos c) 2 ciclos d) Computador SISC Von Neumann: Unidad de Control y Tiempos 7 19. ¿Qué operación realiza la ALU durante el ciclo de búsqueda o Fetch? 20. ¿Qué valor almacena el registro temporal R@ al concluir el ciclo Decode? 21. ¿Qué estado de ejecución es común a todas las instrucciones lentas de memoria?

3 Camino de datos del SISC Von Neumann AL ACABAR SABRÁS Diferenciar los elementos del estado visible del procesador frente a los registros temporales internos. Describir el papel funcional y los mecanismos de control de los registros IR, RX, RY y R@. Identificar la configuración de los multiplexores de encaminamiento en las fases de acceso a memoria y ejecución. PIÉNSALO ANTES DE LEER 22 ¿Por qué un procesador Von Neumann necesita registros temporales que no existían en una arquitectura monomemoria simplificada?

Transformación de la UPG Harvard al camino de datos Von Neumann En el diseño Harvard, la Unidad de Proceso General (UPG) disponía de memorias separadas y bloques sumadores dedicados para calcular el incremento del contador de programa (+2) y las direcciones de salto. El paso al modelo Von Neumann integra estos elementos en una única unidad de proceso y utiliza una memoria unificada (véase «Arquitectura Von Neumann frente a Harvard en el procesador SISC»). Esta memoria RAM unificada de 64 KB (32 Kwords de 16 bits) contiene tanto el código del programa como los datos manipulados por las instrucciones.

Permite accesos de lectura y escritura tanto a nivel de byte como de palabra alineada en formato little endian. Como consecuencia de unificar la memoria, el antiguo sumador de avance y el sumador de saltos desaparecen del hardware dedicado: sus cálculos aritméticos se delegan por completo a la ALU principal. La Unidad de Control pasa a recibir la instrucción leída de esta memoria compartida y la señal de cero desde la ALU, generando en cada ciclo de reloj una palabra de control de 51 bits para gobernar los recursos. Esquema del camino de datos del procesador SISC Von Neumann.

Estado visible frente a registros temporales internos Al analizar los elementos de almacenamiento en el procesador, es crucial distinguir entre el estado arquitectural y los registros de soporte de la microarquitectura: Cálculo de la dirección de memoria a) Cálculo del desplazamiento relativo N b) Comprobación de la condición de salto c) Incremento del PC en dos unidades d) El valor del operando fuente Ra a) La dirección del salto tomado PC+N b) El código de operación decodificado c) El resultado aritmético de la instrucción d) Estado Addr a) Estado Addi b) Estado Al c) Estado Movi d) z Computador SISC Von Neumann: Unidad de Control y Tiempos 8 Categoría Elementos Visibilidad por software Comportamiento en la ejecución Estado visible Banco de registros (R0 a R7), memoria RAM (64 KB) y puertos de E/S.

Directamente accesible mediante código máquina y ensamblador. Preserva los datos entre instrucciones sucesivas; define el contexto del programa. Registros temporales IR, RX, RY, R@. Invisibles al programador y al compilador. Almacenan resultados parciales u operandos entre ciclos de una misma instrucción. Los registros temporales se añadieron para secuenciar la ejecución multiciplo y reutilizar buses compartidos. Su contenido al inicio de una instrucción no tiene relevancia para el software, pues se sobrescribe a lo largo de las distintas fases de ejecución (véase «Fases de ejecución y grafo de estados de la Unidad de Control»).

ERROR FRECUENTE Considerar que los registros intermedios RX, RY y R@ forman parte del estado del procesador. Estos registros carecen de dirección asignada y su contenido se descarta al completar cada instrucción. En un cambio de contexto o interrupción, solo se debe guardar el estado visible (R0-R7, PC, memoria y periféricos). COMPRUEBA 23 ¿Por qué el contenido de RX y RY no necesita preservarse cuando el procesador pasa a ejecutar una nueva instrucción?

Funcionamiento y control de los registros temporales Para coordinar los buses internos en ciclos sucesivos, el camino de datos incorpora cuatro registros intermedios: IR (Instruction Register): Almacena la instrucción leída de la memoria al finalizar el ciclo de búsqueda o fetch. Dispone de una señal explícita de habilitación, LdIr. Debe activarse únicamente al término de la fase de fetch para capturar el código de operación y los campos de direccionamiento, manteniéndose estable durante el resto de los ciclos de ejecución. RX y RY: Guardan las salidas de los puertos A y B del banco de registros (REGFILE) leídas durante la fase de decodificación.

Estos registros no disponen de señal de permiso de escritura: se cargan en cada flanco de reloj con los valores presentes en las salidas de REGFILE. Las direcciones @A y @B se extraen de forma fija de los campos de la instrucción en IR ( para Ra y para Rb). R@: Retiene el resultado producido por la ALU durante el ciclo Addr en instrucciones de acceso a memoria (LD, ST, LDB, STB) o saltos (véase «Fases de ejecución y grafo de estados de la Unidad de Control»). Almacena la suma , que servirá como dirección en el siguiente ciclo.

PROCESO Secuencia de captura y propagación de operandos Encaminamiento de buses mediante multiplexores El camino de datos unificado utiliza selectores para dirigir adecuadamente los datos y direcciones en cada fase: Multiplexor de dirección de memoria (R@/Pc): Determina qué bus gobierna las líneas ADDR-MEM de la memoria de 64 KB. Selecciona el valor de PC durante la búsqueda de instrucción o el valor del registro temporal R@ durante los accesos de datos (ciclos de lectura o escritura de LD, ST, LDB o STB).

Multiplexores de entrada a la ALU (Pc/Rx y Ry/N): En la entrada X, el multiplexor Pc/Rx selecciona entre el contador de programa (usado para calcular la dirección del salto relativo o el avance en fetch) y el registro temporal RX. En la entrada Y, el multiplexor Ry/N conmuta entre el valor del registro RY y el campo inmediato extendido en signo proveniente de la instrucción. Multiplexor de actualización del PC (Alu/R@): Permite actualizar el contador de programa desde la salida directa de la ALU (para el avance secuencial o saltos inmediatos) o desde el registro temporal R@. La escritura efectiva sobre el PC está condicionada por la señal de control LdPc.

Multiplexor de entrada al banco de registros (P/I/L/A): Selecciona la fuente de datos que se conectará al puerto de escritura D de REGFILE, permitiendo escoger entre la memoria de datos (RD-MEM), los puertos de entrada (RD-IN), el resultado directo de la ALU o enlaces de salto. COMPRUEBA 24 ¿Qué valor debe adoptar el selector R@/Pc durante la fase de fetch y cuál durante la fase de acceso efectivo de un almacenamiento ST?

I 11..9 I 8..6 RX + N Fetch en IR Lectura desde memoria habilitada con LdIr 1 Lectura en REGFILE Direccionamiento con campos fijos @A y @B 2 Carga de RX y RY Captura en flanco de reloj sin señal de permiso 3 Cálculo en ALU Selección mediante multiplexores Pc/Rx y Ry/N 4 Almacenamiento en R@ Retención del resultado para direccionamiento 5 N Computador SISC Von Neumann: Unidad de Control y Tiempos 9 IDEAS CLAVE La memoria unificada de 64 KB (32 Kwords de 16 bits) centraliza instrucciones y datos, eliminando la memoria separada de instrucciones y los sumadores dedicados. El estado visible del computador está integrado únicamente por R0-R7, la memoria y los puertos de entrada/salida.

Los registros temporales IR, RX, RY y R@ almacenan datos de soporte intermedio durante las distintas fases de una instrucción. A diferencia de IR y PC, los registros RX y RY carecen de señal de habilitación y se actualizan en cada flanco de subida del reloj. Los multiplexores Pc/Rx, Ry/N y R@/Pc canalizan los buses para que la ALU y la memoria compartan funciones de cómputo y direccionamiento. COMPRUEBA LO QUE HAS APRENDIDO 25. ¿Cuál es la diferencia fundamental en la señal de control de carga entre el registro IR y los registros RX/RY? 26. ¿Qué función cumple el registro R@ en las instrucciones que leen o escriben en memoria (LD, ST, LDB, STB)? Test Rodea la respuesta correcta.

Las soluciones están al final. 27. ¿Cuál de los siguientes elementos forma parte del estado visible del procesador SISC Von Neumann? 28. ¿Cómo se controlan las escrituras en los registros temporales RX y RY? 29. ¿Qué selecciona el multiplexor R@/Pc en la entrada del bus de direcciones de memoria? 30. ¿Cuál es el tamaño de la memoria RAM unificada en el camino de datos del SISC? 4 Palabra de control compacta y operaciones por estado AL ACABAR SABRÁS Identificar los campos de la palabra de control de 51 bits y su función en el camino de datos. Formular la palabra de control compactada para cualquier estado del autómata usando notación RTL.

Justificar por qué las señales de modificación de estado se fijan estrictamente a cero y no a condiciones de indiferencia. PIÉNSALO ANTES DE LEER 31 ¿Por qué dejar una señal de escritura sin definir en un estado intermedio puede destruir los datos del programa? Estructura y campos de la palabra de control de 51 bits En el procesador SISC con arquitectura unificada, la unidad de control emite en cada ciclo una palabra de control de 51 bits. Este vector binario gobierna todos los elementos síncronos y combinacionales del camino de datos unificado (véase «Camino de datos del SISC Von Neumann»).

El banco de registros R0-R7 a) El registro temporal RX b) El registro de instrucción IR c) El registro de dirección R@ d) Se habilitan mediante la señal WrD a) Mediante una señal LdRxRy dedicada b) Se cargan en cada ciclo sin habilitación c) Solo se cargan en la fase de Fetch d) Registro RX o contador de programa PC a) Dirección de instrucción (PC) o dato (R@) b) Salida de ALU o puerto de entrada c) Dato inmediato N o registro RY d) 16 Kwords direccionables solo a byte a) 64 KB con 32 Kwords de 16 bits b) 128 KB dividida en dos bloques c) 32 KB con palabras de 8 bits d) Computador SISC Von Neumann: Unidad de Control y Tiempos 10 Esquema de campos y buses de la palabra de control de 51 bits.

Respecto a arquitecturas segmentadas o Harvard, esta palabra integra tanto el control de la memoria y la ALU como el direccionamiento de la secuenciación. En el esquema destacan campos clave: Direccionamiento de registros: @A (bits de lectura del registro fuente Ra), @B (fuente Rb) y @D (registro destino Rd en el banco). Multiplexores de entrada a la ALU: Pc/Rx escoge entre el contador de programa y el operando RX. El bit Ry/N selecciona entre el operando RY y el inmediato con extensión de signo N. Control aritmético: OP y F dictan la operación interna desarrollada por la ALU. Multiplexor P/I/L/A: Determina qué dato entra al banco de registros.

Sus valores canónicos de dos bits son: 00 para el resultado de la ALU (Alu), 01 para el dato leído de memoria (Ld), 10 para el periférico de entrada (In) y 11 para el contador de programa (Pc). Señales de memoria e I/O: Wr-Mem (permiso de escritura en memoria), Rd-In (orden de lectura de entrada), Wr-Out (escritura en puerto de salida) y ADDR-IO (dirección periférica). Control de acceso y secuenciación: Byte marca operaciones a nivel de 8 bits frente a palabra de 16 bits. El multiplexor R@/Pc conmuta la dirección enviada a memoria entre la calculada en el registro temporal y el PC. Alu/R@ escoge el origen del nuevo PC entre la salida directa de la ALU o el salto previamente almacenado en .

Por último, LdPc y LdIr son las señales de habilitación de carga para el registro PC y el registro de instrucción IR. COMPRUEBA 32 ¿Qué valor debe tener el campo P/I/L/A si se desea almacenar en un registro el dato procedente del bus de entrada (puerto In)? Convención de la palabra de control compactada y protección de escritura Especificar los 51 bits de control para cada estado resulta ineficiente y propenso a descuidos. Por ello, se formula la palabra de control compactada: una notación técnica donde solo se explicitan los valores activos y determinantes en ese ciclo, asumiendo condiciones de indiferencia (don't care, representadas por x) para el resto.

DEFINICIÓN La palabra de control compactada consiste en el listado explícito exclusivo de las señales de control y buses indispensables para cumplir la transferencia de registros de un ciclo determinado, reduciendo el coste de especificación lógica. Existe, no obstante, una restricción absoluta: las señales de permiso de escritura críticas ( LdPc , Wr-Mem , Rd-In , Wr-Out y WrD ) jamás pueden quedar indefinidas como x. Si un estado no requiere alterar el estado visible, estas líneas deben forzarse rígidamente a 0. Dejar un permiso de escritura en indeterminación provocaría escrituras espurias y la corrupción irrecuperable de memoria, periféricos o registros.

ERROR FRECUENTE Asignar condición de indiferencia (x) a los permisos de escritura durante estados intermedios como Decode o Addr. Si WrD o Wr-Mem valieran 1 accidentalmente debido a una síntesis con x, se reescribiría un registro o una celda de memoria antes de completar el cálculo real. Por otro lado, los registros temporales del camino de datos ( , y ) se capturan automáticamente en cada flanco activo de reloj al carecer de entrada de habilitación o carga selectiva. Por esta razón, su actualización no requiere líneas de control específicas en la palabra compactada. COMPRUEBA 33 ¿Por qué la señal LdIr toma el valor 1 únicamente en el ciclo Fetch (F) y debe ser 0 en Decode (D)?

Control de accesos a memoria: palabra frente a byte La línea de control Byte discrimina los accesos a memoria de 16 bits ( Byte = 0 ) de aquellos restringidos a 8 bits ( Byte = 1 ). En el SISC Von Neumann, los accesos a palabra asumen alineamiento par; por convención del hardware de memoria, se ignora el bit de menor peso de la dirección. Por tanto, no se requiere forzar a cero el bit cero por circuito combinacional intermedio. Instrucción Tipo de acceso Señal Byte Acción sobre el dato Dirección empleada LD Lectura de palabra 0 Lee 16 bits completos desde memoria hacia el registro Rd. (bit menor forzado implícitamente a 0) LDB Lectura de byte 1 Lee el byte direccionado y lo deposita en Rd.

(dirección exacta de byte) ST Escritura de palabra 0 Escribe los 16 bits del registro RY en memoria. (alineamiento par) STB Escritura de byte 1 Escribe únicamente los 8 bits inferiores de RY: . (dirección exacta) R@ R@ RX RY R@ R@ R@ R@ RY <7..0> R@ Computador SISC Von Neumann: Unidad de Control y Tiempos 11 Esta distinción resulta crucial en las instrucciones de almacenamiento: STB aplica Byte = 1 para que la memoria proteja el byte contiguo en la misma palabra y solo sobreescriba la posición de 8 bits especificada por . COMPRUEBA 34 ¿Qué registro suministra el dato en la escritura de STB y qué parte se escribe efectivamente?

Acciones RTL y desglose de la palabra compactada por estado El comportamiento de cada nodo del grafo de ejecución se formaliza mediante el lenguaje de transferencia de registros (RTL). La siguiente tabla reúne de forma sistemática el identificador numérico, mnemotécnico, las transferencias concurrentes y las asignaciones compactas correspondientes: Tabla con acciones RTL y palabras compactadas por cada estado.

Estado Mnemotécnico Acción RTL Palabra de control compactada 0 F (Fetch) // R@/Pc=0, Byte=0, LdIr=1, Pc/Rx=1, N=0x0002, Ry/N=0, OP=00, F=100, Alu/R@=1, LdPc=1 1 D (Decode) // // N=SE(IR<7..0>)*2, Pc/Rx=1, Ry/N=0, OP=00, F=100 2 Al Pc/Rx=0, Ry/N=1, OP=00, F=IR<2..0>, P/I/L/A=00, WrD=1, @D=IR<5..3> 3 Cmp Pc/Rx=0, Ry/N=1, OP=01, F=IR<2..0>, P/I/L/A=00, WrD=1, @D=IR<5..3> 4 Addi N=SE(IR<5..0>), Pc/Rx=0, Ry/N=0, OP=00, F=100, P/I/L/A=00, WrD=1, @D=IR<8..6> 5 Addr N=SE(IR<5..0>), Pc/Rx=0, Ry/N=0, OP=00, F=100 6 Ld R@/Pc=1, Byte=0, P/I/L/A=01, WrD=1, @D=IR<8..6> 7 St R@/Pc=1, Byte=0, Wr-Mem=1 8 Ldb R@/Pc=1, Byte=1, P/I/L/A=01, WrD=1, @D=IR<8..6> 9 Stb R@/Pc=1, Byte=1, Wr-Mem=1 10 Jalr // Pc/Rx=0, OP=10, F=011, Alu/R@=1, LdPc=1, P/I/L/A=11, WrD=1, @D=IR<8..6> 11 Bz if ( ) Pc/Rx=0, OP=10, F=000, Alu/R@=0, LdPc=z 12 Bnz if ( ) Pc/Rx=0, OP=10, F=000, Alu/R@=0, LdPc=!z 13 Movi N=SE(IR<7..0>), Ry/N=0, OP=10, F=001, P/I/L/A=00, WrD=1, @D=IR<11..9> 14 Movhi N=SE(IR<7..0>), Pc/Rx=0, Ry/N=0, OP=10, F=010, P/I/L/A=00, WrD=1, @D=IR<11..9> 15 In ADDR-IO=IR<7..0>, Rd-In=1, P/I/L/A=10, WrD=1, @D=IR<11..9> R@ IR Mem [P C] w P C P C + 2 R@ P C + SE(N8) × 2 RX Ra RY Rb Rd RX Al RY Rd RX Cmp RY Rd RX + SE(N6) R@ RX + SE(N6) Rd Mem [R@] w Mem [R@] w RY Rd Mem [R@] b Mem [R@] b RY <7..0> P C RX & (¬1) Rd P C RX == 0 P C R@ RX = 0 P C R@ Rd SE(N8) Rd (N × 2 ) " RX<7..0> 8 Rd Input[N8] Computador SISC Von Neumann: Unidad de Control y Tiempos 12 Estado Mnemotécnico Acción RTL Palabra de control compactada 16 Out ADDR-IO=IR<7..0>, Wr-Out=1 17 ..

31 Nop Ninguna alteración LdPc=0, Wr-Mem=0, Rd-In=0, Wr-Out=0, WrD=0 (resto en x) En el estado Decode (D), la ALU adelanta especulativamente el cómputo de la dirección de salto relativo y la aloja en . Si la instrucción posterior es Bz o Bnz, dicho valor ya estará disponible sin consumir ciclos extra. Como no altera la visibilidad del sistema, si la instrucción no es de bifurcación el cálculo simplemente se descarta.

PROCESO Secuencia de cálculo y actualización en bifurcaciones condicionales 1 Fase Fetch Lectura de la instrucción e incremento del PC en 2 2 Fase Decode Cálculo especulativo en ALU y guar dado en R@ 3 Evaluación Bz/Bnz Se evalúa el flag z o !z hacia la señal LdPc 4 Carga de PC Si LdPc activa, PC toma el valor de R@ con Alu/R@=0 En las bifurcaciones condicionales (Bz y Bnz), la activación de LdPc está condicionada dinámicamente: en Bz toma el valor del flag de cero y en Bnz el de su negación . Como la dirección destino calculada previamente en Decode reside en , se establece Alu/R@ = 0 para seleccionar ese valor y actualizar el PC.

COMPRUEBA 35 ¿Por qué en los saltos Bz y Bnz el multiplexor Alu/R@ se fija a 0? IDEAS CLAVE La palabra de control del SISC Von Neumann posee 51 bits encargados de gobernar todos los recursos del procesador. La palabra compactada omite los bits irrelevantes marcándolos como don't care (x), pero exige fijar a cero los permisos de escritura para evitar corrupciones. Los registros temporales RX, RY y R@ no tienen señal de carga y capturan valores al final de cada ciclo de manera incondicional. El multiplexor P/I/L/A canaliza cuatro posibles fuentes hacia el banco de registros: ALU (00), memoria Ld (01), entrada In (10) y PC (11).

La señal Byte discrimina entre transferencias de 16 bits y accesos específicos a 8 bits en instrucciones como LDB y STB. COMPRUEBA LO QUE HAS APRENDIDO 36. ¿Por qué las señales críticas como WrD, Wr-Mem o LdPc no pueden tomar el valor x en la palabra de control? 37. ¿Qué valor adopta la señal Byte durante los estados F y Ldb respectivamente, y por qué? Test Rodea la respuesta correcta. Las soluciones están al final. 38. ¿Qué combinación de P/I/L/A selecciona el dato leído desde memoria? 39. ¿Cuál es la función del registro R@ durante la fase de Decode? 40. ¿Qué valor toma la señal LdPc en el estado Bz? 41. ¿Por qué no se especifica señal de carga para los registros RX y RY?

5 Output[N8] RX P C + SE(N8) × 2 R@ R@ z !z R@ 10 a) 01 b) 11 c) 00 d) Almacenar el resultado de la ALU a) Habilitar la escritura en registros b) Calcular especulativamente el salto condicional c) Guardar el código de operación d) La negación !z a) Siempre 1 b) Siempre 0 c) El flag z d) Carecen de permiso de escritura a) Usan la señal WrD b) Se cargan solo en Fetch c) Son registros puramente combinacionales d) Computador SISC Von Neumann: Unidad de Control y Tiempos 13 Estructura lógica interna de la Unidad de Control AL ACABAR SABRÁS Justificar la reducción del direccionamiento de la ROM de estado siguiente a 10 bits. Describir la función y estructura de las memorias + y ROM_OUT.

Explicar la generación dinámica de la señal LdPc y el conexionado de multiplexores auxiliares. PIÉNSALO ANTES DE LEER 42 ¿Por qué sería un error de diseño incluir la bandera de salto z como entrada de la memoria ROM que calcula el estado siguiente? La unidad de control del procesador SISC Von Neumann materializa de forma secuencial la máquina de estados finitos que orquesta la ejecución de cada instrucción (cuyo flujo general se estudia en «Fases de ejecución y grafo de estados de la Unidad de Control»).

A diferencia de una implementación uniproceso combinacional directa, este diseño se estructura a partir de memorias de solo lectura (ROMs), registros y bloques multiplexores para optimizar el área de silicio y simplificar el cableado interno. Diagrama de bloques general del módulo SISC CONTROL UNIT. Estructura global y justificación del direccionamiento reducido Una aproximación elemental para calcular el estado siguiente consistiría en introducir en la lógica secuencial la totalidad de la palabra de instrucción (16 bits), el estado actual (5 bits) y el indicador de condición proveniente de la ALU ( , 1 bit).

Dicha alternativa exigiría un bus de direccionamiento de 22 bits, lo que implicaría implementar una memoria inasumible de palabras de control. Para evitar esta proliferación de hardware, la máquina descarta las entradas redundantes: el estado futuro no depende de los registros fuente ni de los inmediatos. Por tanto, el cálculo del estado siguiente solo precisa 10 bits de dirección: Estado actual ( ): 5 bits ( ). Código de operación: 4 bits más significativos de la instrucción ( ). Bit de extensión: 1 bit auxiliar ( ) que discrimina operaciones que comparten código principal.

Gracias a esta reducción, la memoria de estado siguiente ( ) requiere únicamente palabras de 5 bits, minimizando drásticamente el espacio lógico necesario. Esquema lógico interno detallado con memorias ROM y multiplexores. ROM Q z 222 Q q , q , q , q , q 4 3 2 1 0 I 15..12 I 8 ROM_Q+ 2 = 10 1024 Computador SISC Von Neumann: Unidad de Control y Tiempos 14 PROCESO Flujo de secuenciamiento en la Unidad de Control COMPRUEBA 43 ¿Por qué la memoria ROM_Q+ no necesita recibir los bits I<7..0> de la instrucción? Memoria de estado siguiente (ROM_Q+) La memoria ROM_Q+ es el núcleo combinacional encargado de determinar la transición de estados.

Sus 10 terminales de entrada se reparten en las líneas , y . Las 5 salidas ( ) entregan el código binario del estado futuro, el cual se transfiere al registro de estado (REG) sincronizado por flanco de reloj (Clk).

Estado actual (Q) Entrada I (código y extensión) Q+ simbólico Dirección Hexa Q+ Hexa Veces F (00000) xxxxx D 000..01F 01 32 D (00001) 0000x (AL) Al 020..021 02 2 D (00001) 0001x (CMP) Cmp 022..023 03 2 D (00001) 0010x (ADDI) Addi 024..025 04 2 D (00001) 0011x / 0100x / 0101x / 0110x Addr 026..02D 05 8 D (00001) 0111x (JALR) Jalr 02E..02F 0A 2 D (00001) 10000 (BZ) Bz 030 0B 1 D (00001) 10001 (BNZ) Bnz 031 0C 1 D (00001) 10010 (MOVI) Movi 032 0D 1 D (00001) 10011 (MOVHI) Movhi 033 0E 1 D (00001) 10100 (IN) In 034 0F 1 D (00001) 10101 (OUT) Out 035 10 1 D (00001) Resto / Ilegal Nop 036..03F 11 10 Addr (00101) 0011x (LD) / 0100x (ST) Ld / St 0A6..0A9 06 / 07 4 Addr (00101) 0101x (LDB) / 0110x (STB) Ldb / Stb 0AA..0AD 08 / 09 4 Addr (00101) !(LD+ST+LDB+STB) F — 00 24 Al, Cmp, Addi...

xxxxx F 040..07F... 00 32 c/u Nop (10001..11111) xxxxx F 220..3FF 00 480 Cuando el procesador decodifica un código no reconocido del repertorio SISA, la tabla transita de forma controlada hacia un estado denominado NOP, evitando comportamientos anómalos en el hardware. COMPRUEBA 44 ¿Por qué ciertas entradas como BZ ocupan 1 sola posición en la ROM_Q+ mientras que AL ocupa 2?

Dirección ROM_Q+ Combina estado Q, I e I 1 Estado Siguiente ROM_Q+ genera 5 bits hacia el registro 2 Registro de Estado Almacena Q con el flanco de reloj 3 Decodificación ROM_OUT Genera 24 bits de microcódigo desde Q 4 Lógica externa Resuelve LdPc con z y multiplexa operandos 5 In 0..3 I 15..12 In 4 I 8 In 5..9 Q Out 0..4 Computador SISC Von Neumann: Unidad de Control y Tiempos 15 Memoria de salidas (ROM_OUT) y generación de microcódigo La memoria ROM_OUT dispone de 5 líneas de entrada gobernadas exclusivamente por el estado actual y entrega 24 bits de salida.

Al tratarse de una máquina de Moore, las señales de control dependen únicamente del nodo en el que se encuentra la unidad y no de las entradas combinacionales externas directas. Tabla con el contenido binario codificado en la ROM_OUT. No todas las líneas de control del computador emanan directamente de la . Para ahorrar anchura de palabra, la memoria suministra señales directas y líneas de selección hacia multiplexores auxiliares: Señales directas de control: gobiernan habilitaciones y conmutadores del camino de datos, tales como LdIr, WrD, Byte, Alu/R@, R@/Pc, Pc/Rx, Ry/N, así como los campos y .

Selección de registro destino (Mx@D): dos bits ( ) gobiernan un conmutador multiplexor para fijar la dirección de escritura a partir de distintos campos de la instrucción ( o constantes). Operación de ALU (MxF): la línea selecciona si el código de función proviene de los bits (en instrucciones aritméticas) o si se fija mediante microcódigo con los bits ( ). Campo de inmediato (MxN): las líneas ( ) deciden la procedencia del bus (extensión de 6 bits con signo, 8 bits con signo, desplazamiento de 8 bits a la izquierda o la constante para el avance del contador de programa).

PARA RECORDARLO La ROM_OUT nunca extrae campos de la instrucción por sí misma: actúa como un director de orquesta que genera señales directas o configura los multiplexores (Mx@D, MxF, MxN) que seleccionan dichos campos. Lógica externa para señales condicionales y control de PC Las transferencias condicionadas no alteran el grafo de estados de la máquina de Moore; su resolución se delega enteramente a una compuerta combinacional externa situada a la salida de la . Para actualizar el contador de programa, la memoria suministra dos señales de validación: Bz ( ) y Bnz ( ).

Estas líneas se combinan con la bandera de cero generada por la ALU y su versión invertida para generar la señal LdPc según la ecuación lógica: De esta forma, en el estado (Fetch) se asegura la carga incondicional forzando y , con lo que . En los estados de salto condicional se habilita una única rama: en el nodo Bz se fija (cargando solo si ), y en el nodo Bnz se programa (cargando solo si ). ERROR FRECUENTE Introducir la bandera como entrada a la . El flag no decide transiciones de estado (tanto si se salta como si no, el estado siguiente al salto es siempre ). Introducirlo en la duplicaría innecesariamente el tamaño de dicha memoria a 2048 palabras.

La condición debe resolverse de forma externa mediante las señales Bz y Bnz sobre la habilitación LdPc. Por su parte, las señales de escritura hacia dispositivos y almacenamiento (WrMem, RdIn, WrOut) se cualifican mediante compuertas AND con el reloj negado ( ) para acotar su activación a la segunda mitad del ciclo, garantizando los márgenes de sincronización exigidos por el sistema (aspecto analizado detalladamente en «Restricciones temporales de control y señales de memoria e I/O»).

Q ROM_OUT OP 1..0 P/I/L/A 1..0 Out 0..1 @D I 11..9 Out 5 F I 5..3 Out 2..4 F 2..0 Out 6..7 MxN 1..0 N 0x0002 ROM_OUT Out 21 Out 22 z !z LdPc = (Bz×z) + (Bnz×!z) F Bz = 1 Bnz = 1 LdPc = z+!z = 1 Bz = 1, Bnz = 0 z = 1 Bz = 0, Bnz = 1 z = 0 z ROM_Q+ z F ROM_Q+ !Clk Computador SISC Von Neumann: Unidad de Control y Tiempos 16 COMPRUEBA 45 ¿Cómo logra la UC que el PC se incremente siempre en Fetch sin importar el resultado de la ALU anterior? IDEAS CLAVE La unidad de control compacta sus direcciones de estado siguiente a solo 10 bits ( , e ), evitando una memoria inviable de 22 bits.

La memoria cuenta con palabras de 5 bits y gobierna el paso al siguiente estado a través de un registro sincronizado. La memoria implementa un modelo de Moore estricto con 5 bits de entrada ( ) y 24 bits de salida. Varios campos de control complejos (inmediatos , registros y operaciones ) se obtienen mediante multiplexores externos comandados por la ROM_OUT. La condición de salto mediante la bandera se resuelve externamente sobre LdPc con las señales Bz y Bnz, sin intervenir en . COMPRUEBA LO QUE HAS APRENDIDO 46. ¿Cuáles son exactamente las 10 señales de entrada que utiliza la + para decidir el estado siguiente? 47.

¿Por qué motivo las señales de control WrMem, RdIn y WrOut se combinan con !Clk a la salida de la ROM_OUT? Test Rodea la respuesta correcta. Las soluciones están al final. 48. ¿Cuántas palabras y bits de salida contiene la ROM de estado siguiente ( +)? 49. ¿Qué entradas indexan directamente la memoria de salidas ROM_OUT? 50. ¿Cómo se genera la señal LdPc para saltos y avance secuencial? 51. ¿Qué valores toman Bz y Bnz en el estado de Fetch (F)? 6 Ampliación de la arquitectura SISA — Instrucción JALR AL ACABAR SABRÁS Describir el formato, codificación y semántica RTL de la instrucción JALR. Explicar la implementación de la función de alineamiento a par en el bloque MISC de la ALU.

Justificar la ruta directa PC a bus D para colapsar la ejecución de JALR a un solo ciclo. Identificar la configuración de señales de control del estado E10 en el grafo de la Unidad de Control. PIÉNSALO ANTES DE LEER 52 ¿Por qué para saltar a una subrutina y poder regresar después no basta con modificar el Program Counter? Definición y codificación de la instrucción JALR La incorporación de la instrucción JALR (Jump and Link Register) permite dotar al procesador de soporte completo para subrutinas, procedimientos y saltos incondicionales a cualquier posición de memoria.

Con este añadido, el repertorio SISA alcanza de manera definitiva las 25 instrucciones, lo que proporciona la base mínima suficiente para compilar programas de alto nivel escritos en C sin restricciones. A diferencia de los saltos relativos, JALR trabaja con direcciones absolutas calculadas en registros. Su sintaxis ensamblador corresponde a JALR Rd, Ra , clasificada bajo el formato de instrucción 2R. Los 16 bits de la instrucción se distribuyen asignando el código de operación principal 0111 en los bits , el campo de registro fuente Ra en , el registro destino Rd en y bits sin uso (valor indiferente xxxxxx ) en .

Q 4..0 I 15..12 I 8 ROM_Q+ 210 ROM_OUT Q N @D F z ROM_Q+ ROM Q ROM Q 4096 palabras de 10 bits a) 2048 palabras de 5 bits b) 32 palabras de 24 bits c) 1024 palabras de 5 bits d) Los bits de Q y la bandera z a) El código de operación e I8 b) La instrucción entera de 16 bits c) Únicamente los 5 bits de Q d) Directamente desde la salida de + a) ROM Q Con una compuerta: Bz·z + Bnz·!z b) Indexando la ROM_OUT con el flag z c) Mediante el multiplexor MxN d) Bz = 0 y Bnz = 1 a) Bz = 1 y Bnz = 0 b) Bz = 0 y Bnz = 0 c) Bz = 1 y Bnz = 1 d) I 15..12 I 11..9 I 8..6 I 5..0 Computador SISC Von Neumann: Unidad de Control y Tiempos 17 Tabla con el formato y codificación definitiva de las 25 instrucciones SISA.

En lenguajes de alto nivel o descripciones secuenciales de transferencia de registros, la semántica formal de JALR desglosa las siguientes asignaciones sucesivas: aligned PC & PC + 2 tmp & Ra & (~ 1) Rd & PC PC & tmp 1 donde & representa la operación AND bit a bit. 2 3 4 56789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 PC = PC + 2; tmp = Ra & (~ 1); Rd = PC; PC = tmp El incremento del PC se produce al inicio durante la etapa ordinaria de captación (véase «Fases de ejecución y grafo de estados de la Unidad de Control»).

El valor de retorno guardado en Rd corresponde precisamente a la dirección de la instrucción contigua a JALR. Por su parte, la dirección de salto contenida en Ra se alinea a un límite par forzando su bit de menor peso a cero mediante el operador antes de escribir el contador de programa. COMPRUEBA 53 ¿Por qué la semántica de JALR exige aplicar la máscara & (~1) sobre el contenido del registro Ra antes de saltar? Modificación de la ALU: Operación de alineamiento en el bloque MISC Para cargar el nuevo destino en el PC, el camino de datos debe calcular .

Aunque el subsistema de memoria ignore el bit de menor peso al leer palabras pares, el procesador formaliza este enmascaramiento dentro de la propia unidad aritmético-lógica. La ALU original carece de una función directa de alineamiento. Sin embargo, el bloque de operaciones misceláneas (MISC) cuenta con combinaciones de control no utilizadas. Se asigna la operación bajo los códigos y F = 011_2. Esquema del bloque combinacional para la operación de alineamiento W=X&(~1). Esta función no requiere puertas lógicas adicionales ni retardo de conmutación adicional.

Consiste en una interconexión física directa donde los 15 bits más significativos de la entrada se conducen a la salida sin alteraciones: Ra&( 1) RX&( 1) W = X&( 1) OP = 10 2 X W = 15..1 X , W = 15..1 0 0 Computador SISC Von Neumann: Unidad de Control y Tiempos 18 OP (2 bits) F (3 bits) Operación del bloque MISC Comportamiento lógico 10 000 X Pasa entrada X intacta 10 001 Y Pasa entrada Y intacta 10 010 MOVHI(X, Y) Carga de byte alto 10 011 X & (~1) Pasa X forzando el bit 0 a nivel bajo El multiplexor interno de 8 entradas del bloque MISC selecciona esta vía cuando , enviando el resultado enmascarado al bus de salida de la ALU.

COMPRUEBA 54 ¿Qué hardware específico se requiere para implementar la función X & (~1) dentro del bloque MISC de la ALU? Optimización del camino de datos: Ruta directa de PC a bus D Una implementación ingenua de JALR emplearía dos estados secuenciales de ejecución tras Fetch y Decode (véase «Camino de datos del SISC Von Neumann»): Esta división en dos ciclos es ineficiente. El procesador puede ejecutar JALR en un único ciclo de reloj tras el Decode. Para ello, se añade un canal directo desde la salida del registro PC hasta la entrada 3 del multiplexor de entrada del banco de registros (multiplexor P/I/L/A), situado en el bus D.

Esquema del computador SISC completo con la ruta directa de PC a REGFILE. Gracias a este camino dedicado, el banco de registros almacena el valor de retorno directamente desde el PC mientras la ALU calcula de forma concurrente la dirección de salto para cargarla en el PC: ERROR FRECUENTE Suponer que salvar el PC de retorno en Rd exige pasar obligatoriamente su valor a través de la ALU. Si el PC compartiera la ALU con la operación de alineamiento, la instrucción requeriría dos ciclos de ejecución en lugar de uno. La ruta directa de PC a la entrada 3 del multiplexor P/I/L/A permite escribir Rd y actualizar el PC en el mismo flanco de reloj.

La selección del multiplexor del bus D queda configurada según la siguiente tabla: P/I/L/A (2 bits) Código decimal Fuente seleccionada Uso funcional 11 3 PC Enlace de retorno en JALR 10 2 In (RD-IN) Instrucción de entrada IN 01 1 Ld (RD-MEM) Cargas de memoria LD / LDB 00 0 Alu (ALU) Operaciones aritmético-lógicas F = 011 2 Estado Jalr1: la ALU calcula la dirección destino alineada . 1 R@ RX&( 1) Estado Jalr2: se actualiza el contador de programa y simultáneamente se transfiere el antiguo valor hacia el banco de registros .

2 PC R@ Rd PC PC RX&( 1) Rd PC Computador SISC Von Neumann: Unidad de Control y Tiempos 19 PROCESO Ejecución concurrente de JALR en el estado E10 1 Lectura de PC y RX PC contiene dirección de retorno y RX la dirección de salto 2 Cálculo y Enrutado Concurrente ALU calcula RX & (~1) mientras PC se envía a entrada 3 de P/I/L/A 3 Escritura de Estado en Flanco Escritura simultánea en REGFILE (Rd=PC) y PC (PC=ALU) 4 Retorno a Fetch Transición incondicional a E0 para captar nueva instrucción COMPRUEBA 55 ¿Qué recurso físico permite colapsar la fase de ejecución de JALR de dos ciclos a uno solo?

Actualización de la Unidad de Control y Grafo de Estados La integración de JALR modifica la lógica secuencial interna de la Unidad de Control (véase «Estructura lógica interna de la Unidad de Control»). La instrucción pasa a ejecutarse en el estado E10, nodo que previamente implementaba una operación NOP sin efectos de modificación.

En la memoria ROM_OUT, la dirección (estado E10) se configura para emitir la palabra de control requerida en este ciclo único: Señal Valor Descripción operativa @D IR<8..6> Registro destino Rd indicado por el formato 2R WrD 1 Habilita la escritura en el banco de registros P/I/L/A 11 Selecciona el PC directo hacia el bus D Pc/Rx 0 Selecciona RX en la entrada X de la ALU OP 10 Activa el bloque MISC de la ALU F 011 Selecciona la operación de alineamiento X & (~1) Alu/R@ 1 Conduce la salida de la ALU a la entrada de carga del PC LdPc 1 Permite la escritura del nuevo PC en el flanco de reloj Para la memoria de siguiente estado ROM_Q+, las entradas correspondientes a la instrucción JALR con código de operación 0111 dirigen el flujo desde Decode (E1) hacia el estado E10.

Dado que el bit no se emplea como extensión de código en JALR, tanto para como para las direcciones binarias de ROM_Q+ apuntan a E10: Al concluir el ciclo de ejecución en E10, el siguiente estado incondicional es E0 (Fetch), reanudando el ciclo básico de instrucción para el nuevo PC cargado.

PROCESO Ciclo de estados de la Unidad de Control para JALR 1 E0: Fetch Captación de la instrucción y cálculo preliminar de PC+2 2 E1: Decode Lectura de registros fuente en REG FILE e identificación de op=0111 3 E10: Jalr Ejecución en ciclo único de enlace y salto 4 E0: Siguiente Fetch Reinicio del ciclo de instrucción en el destino del salto COMPRUEBA 56 ¿A qué estado del grafo de la Unidad de Control transita el procesador inmediatamente después de ejecutar E10 (Jalr)? IDEAS CLAVE La instrucción JALR completa el repertorio SISA hasta alcanzar 25 instrucciones, permitiendo llamadas y retornos de subrutinas.

El formato de JALR es 2R con código de operación 0111, donde Ra almacena el destino y Rd recibe la dirección de retorno. La operación de forzado a cero del bit de menor peso se integra en el bloque MISC de la ALU mediante los códigos y sin puertas lógicas. La adición de una ruta directa entre el registro PC y la entrada 3 del multiplexor P/I/L/A evita el uso de la ALU para el enlace y reduce la ejecución de JALR a un solo ciclo. El estado E10 (Jalr) realiza simultáneamente y antes de retornar al estado E0 (Fetch).

01010 2 I 8 I = 8 0 I = 8 1 ROM_Q+[0101001110 ] = 2 00000 , ROM_Q+[0101001111 ] = 2 2 00000 2 X&( 1) OP = 10 F = 011 PC RX&( 1) Rd PC Computador SISC Von Neumann: Unidad de Control y Tiempos 20 COMPRUEBA LO QUE HAS APRENDIDO 57. ¿Qué valor deben adoptar las señales de control P/I/L/A, OP y F durante el estado de ejecución E10? 58. ¿Por qué las direcciones 0101001110 y 0101001111 de + devuelven ambas el estado E0 (00000)? Test Rodea la respuesta correcta. Las soluciones están al final. 59. ¿Cuál es el código de operación en binario de la instrucción JALR en el formato 2R? 60. ¿Qué configuración de la ALU ejecuta la operación de alineamiento W = X & (~1)? 61.

¿Qué valor selecciona la entrada directa de PC en el multiplexor del bus D (P/I/L/A)? 62. ¿Cuántos ciclos de ejecución emplea JALR tras las fases comunes de Fetch y Decode? 7 Análisis temporal y cálculo del tiempo de ciclo mínimo AL ACABAR SABRÁS Analizar los retardos de propagación acumulados en los estados F, D, Ldb y Cmp Identificar el camino crítico que determina el cuello de botella en cada ciclo Calcular y justificar el tiempo de ciclo mínimo global fijado en 1400 u.t. PIÉNSALO ANTES DE LEER 63 ¿Por qué en la fase de Fetch la lectura de la memoria RAM no es necesariamente lo que más tiempo consume? Parámetros…

Más apuntes de Introducción a los Computadores

Exámenes, temas y apuntes de Introducción a los Computadores