En arquitectura e ingeniería de computadoras , un secuenciador o microsecuenciador genera las direcciones utilizadas para recorrer el microprograma de una tienda de control . Se utiliza como parte de la unidad de control de una CPU o como generador autónomo para rangos de direcciones.
Por lo general, las direcciones se generan mediante una combinación de un contador, un campo de una microinstrucción y algún subconjunto del registro de instrucciones . Se utiliza un contador para el caso típico, en el que la siguiente microinstrucción es la que se ejecuta. Un campo de la microinstrucción se usa para saltos u otra lógica.
Dado que las CPU implementan un conjunto de instrucciones, es muy útil poder decodificar los bits de la instrucción directamente en el secuenciador, para seleccionar un conjunto de microinstrucciones para ejecutar las instrucciones de una CPU.
La mayoría de los procesadores CISC modernos utilizan una combinación de lógica canalizada para procesar códigos de operación de menor complejidad que se pueden completar en un ciclo de reloj, y microcódigo para implementar aquellos que requieren múltiples ciclos de reloj para completarse.
Uno de los primeros procesadores microcodificados integrados fue el IBM PALM Processor , que emulaba todas las instrucciones del procesador en microcódigo y se utilizó en el IBM 5100 , una de las primeras computadoras personales.
Ejemplos recientes de procesadores basados en microsecuenciadores similares son los núcleos MicroCore Labs MCL86 , MCL51 y MCL65 que emulan los conjuntos de instrucciones Intel 8086/8088, 8051 y MOS 6502 completamente en microcódigo.
Ejemplo simple
El sistema informático Meta 4 Series 16 de Digital Scientific Corp. fue un sistema microprogramable por el usuario disponible por primera vez en 1970. Las ramificaciones en la secuencia del microcódigo se producen de una de estas tres formas. [1]
- Una microinstrucción de rama especifica la dirección de la siguiente instrucción, ya sea de forma condicional o incondicional. La opción de índice lógico (IX) hace que el registro de enlace de 16 bits tenga un OR lógico en la dirección de la rama, lo que proporciona una capacidad de rama indexada simple.
- Todas las instrucciones aritméticas / lógicas permiten el modificador de salto (J), que redirige la ejecución a la microinstrucción dirigida por el registro Link.
- Todas las instrucciones aritméticas / lógicas permiten tanto el contador de decremento (D) como los modificadores de salto (J). En este caso, el registro del contador de bucle de 8 bits se reduce. Si entonces no es cero, se toma una rama al contenido del registro de enlace. Si es cero, la ejecución continúa con la siguiente instrucción.
Una opción de secuenciación más permitida en una instrucción de bifurcación es la opción de ejecución (XQ). Cuando se especifica, se ejecuta la instrucción única en la dirección de la bifurcación, pero luego la ejecución continúa después de la instrucción de la bifurcación original. La opción IX se puede utilizar con la opción XQ.
Ejemplo complejo
El IBM System / 360 fue una serie de computadoras compatibles introducidas en 1964, muchas de las cuales estaban microprogramadas. [2] El System / 360 Model 40 es un buen ejemplo de una máquina microprogramada con microsecuenciación compleja. [3]
La micro tienda consta de 4.096 microinstrucciones de 56 bits que operan en un estilo de microprogramación horizontal. La tienda se direcciona mediante el registro de direcciones de solo lectura de 12 bits (ROAR). A diferencia de la mayoría de los registros de la arquitectura S / 360, los bits del ROAR están numerados desde el bit 0 a la derecha hasta el bit 11 a la izquierda.
+ ------------ + | ROAR | + ------------ + 11 0
El modelo 40 no realiza ninguna ejecución secuencial de microinstrucciones y, por lo tanto, el microsecuenciador no se ramifica en el sentido convencional. En cambio, cada microinstrucción especifica la dirección de la siguiente que se ejecutará. Cuatro campos de la microinstrucción contribuyen a la nueva dirección.
- CA, 4 bits: Parte de la siguiente dirección, dependiendo del resto de campos.
- CB, 4 bits: determina el bit 1 de la siguiente dirección.
- CC, 4 bits: determina el bit 0 de la siguiente dirección.
- CD, 2 bits: controla cómo se ensambla la siguiente dirección (excepto cuando el campo CB contiene 15).
Básicamente, existen tres combinaciones o formatos de estos campos.
Formato de rama funcional
Cuando el campo CB contiene 15, se produce una rama funcional . Los bits de la nueva dirección de la micro tienda en el ROAR se determinan de la siguiente manera.
- bits 11-10: campo CD
- bits 9–6: campo CA
- bit 5: siempre 0
- bits 4–1: 4 bits de orden superior del registro Q, que es la entrada derecha a la ALU de 8 bits
- bit 0: resultado de la prueba especificado por el campo CC
El campo CC puede especificar varias pruebas del estado de la máquina. También puede especificar una constante 0 o 1 para un bit incondicional.
Este formato altera el flujo de control a 1 de 16 pares de instrucciones dentro de las 32 palabras bajas de un bloque de 64 palabras de microstore (porque el bit 5 es siempre 0). El campo CC determina entonces qué instrucción del par recibe el control.
CD = formato 0, 1, 3
Cuando el campo CD es 0, 1 o 3, el flujo de control se dirige a una instrucción dentro del bloque actual de 64 palabras. Los bits de la nueva dirección de la micro tienda se determinan de la siguiente manera.
- bits 11–6: permanecen iguales
- bits 5–2: campo CA
- bit 1: si CD = 0, resultado de la prueba especificada por el campo CB; de lo contrario 0
- bit 0: resultado de la prueba especificado por el campo CC
El campo CA selecciona 1 de 16 grupos de 4 palabras dentro del bloque actual de 64 palabras. Los campos CB y CC determinan entonces qué instrucción de las 4 recibe el control.
Formato CD = 2
Cuando el campo CD es 2, el flujo de control se dirige de una manera no obvia. Los bits de la nueva dirección de la micro tienda se determinan de la siguiente manera:
- bits 11-10: permanecen iguales
- bits 9–6: campo CA
- bits 5-2: permanecen iguales
- bit 1: resultado de la prueba especificada por el campo CB
- bit 0: resultado de la prueba especificado por el campo CC
La siguiente instrucción está en la misma región de 1K palabras que la instrucción actual, porque los bits 11 a 10 siguen siendo los mismos. El campo CA determina el bloque de 64 palabras dentro de la región. La instrucción está en el mismo grupo de 4 palabras dentro del nuevo bloque que la instrucción actual está dentro del bloque actual, porque los bits 5–2 siguen siendo los mismos. Los campos CB y CC determinan entonces qué instrucción de las 4 recibe el control.
Simplificación
Esta descripción se ha simplificado. Ignora las siguientes características.
- El modelo 40 puede funcionar en modo CPU o en modo canal. La descripción se refiere únicamente al modo CPU.
- Si la microinstrucción no está en formato de rama funcional y el campo CD es 1 o 3, el bit 1 de la siguiente dirección siempre es 0. En este caso, los valores de los campos CD y CB determinan una de un conjunto de líneas de control para aumentar. .
Referencias
- ^ Manual de referencia del sistema informático Digital Scientific Meta 4 Series 16 (PDF) . Corporación Científica Digital. Mayo de 1971. 7032MO.
- ^ IBM System / 360 Principios de funcionamiento (PDF) . International Business Machines Corp. Septiembre de 1968. A22-6821-7.
- ^ Unidades Funcionales System / 360 Modelo 40 (PDF) . International Business Machines Corp. Marzo de 1970. SY22-2843-1.