En arquitectura e ingeniería informática , un secuenciador o microsecuenciador genera las direcciones que se utilizan para recorrer el microprograma de un almacén de control . Se utiliza como parte de la unidad de control de una CPU o como generador independiente de rangos de direcciones.
Generalmente, las direcciones se generan mediante una combinación de un contador, un campo de una microinstrucción y un subconjunto del registro de instrucciones . Se utiliza un contador para el caso típico de que la siguiente microinstrucción sea la que se ejecute. Se utiliza un campo de la microinstrucción 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 pueden completarse 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 procesador IBM PALM , 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 similares basados en microsecuenciadores de código abierto 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.
El sistema informático Meta 4 Series 16 de Digital Scientific Corp. fue un sistema microprogramable por el usuario que estuvo disponible por primera vez en 1970. Las ramificaciones en la secuencia de microcódigo ocurren de una de tres maneras. [1]
Otra opción de secuenciación 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 bifurcación, pero luego la ejecución continúa después de la instrucción de bifurcación original. La opción IX se puede utilizar con la opción XQ.
El IBM System/360 fue una serie de computadoras compatibles introducidas en 1964, muchas de las cuales estaban microprogramadas. [2] El System/360 Modelo 40 es un buen ejemplo de una máquina microprogramada con microsecuenciación compleja. [3]
El microalmacén consta de 4096 microinstrucciones de 56 bits que funcionan en un estilo de microprogramación horizontal. El almacén se direcciona mediante el registro de dirección de solo lectura (ROAR) de 12 bits. 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.
+------------+ |RUGIDO| +------------+ 11 0
El modelo 40 no ejecuta microinstrucciones de forma secuencial 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.
Básicamente, existen tres combinaciones o formatos de estos campos.
Cuando el campo CB contiene 15, se produce una bifurcación funcional . Los bits de la nueva dirección de microstore en el ROAR se determinan de la siguiente manera.
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 modifica el flujo de control de 1 de los 16 pares de instrucciones dentro de las 32 palabras inferiores de un bloque de 64 palabras de microstore (porque el bit 5 siempre es 0). El campo CC determina entonces qué instrucción del par recibe el control.
Cuando el campo CD es 0, 1 o 3, el flujo de control se dirige a una instrucción dentro del bloque de 64 palabras actual. Los bits de la nueva dirección de microstore se determinan de la siguiente manera.
El campo CA selecciona 1 de los 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.
Cuando el campo CD es 2, el flujo de control se dirige de una manera no obvia. Los bits de la nueva dirección del microstore se determinan de la siguiente manera:
La siguiente instrucción se encuentra 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 se encuentra en el mismo grupo de 4 palabras dentro del nuevo bloque que la instrucción actual dentro del bloque actual, porque los bits 5 a 2 siguen siendo los mismos. Los campos CB y CC determinan entonces qué instrucción de las 4 recibe el control.
Esta descripción se ha simplificado. Ignora las siguientes características.