Un almacén de control es la parte de la unidad de control de una CPU que almacena el microprograma de la CPU . Generalmente se accede a él mediante un microsecuenciador . Una implementación de almacén de control cuyo contenido es inalterable se conoce como Memoria de sólo lectura (ROM) o Almacenamiento de sólo lectura (ROS); uno cuyo contenido se puede modificar se conoce como almacén de control de escritura (WCS).
Los primeros almacenes de control se implementaron como una matriz de diodos a la que se accedía mediante decodificadores de direcciones, una forma de memoria de solo lectura. Esta tradición se remonta a la matriz de temporización del programa en el MIT Whirlwind , descrita por primera vez en 1947. En cambio, los procesadores VLSI modernos utilizan matrices de transistores de efecto de campo para construir las estructuras ROM y/o PLA utilizadas para controlar el procesador, así como su secuenciador interno. en una implementación microcodificada . IBM System/360 utilizó una variedad de técnicas: CCROS (Almacenamiento de solo lectura con capacitor de tarjeta) en el Modelo 30 , TROS (Almacenamiento de solo lectura con transformador) en el Modelo 40 y BCROS (Almacenamiento de solo lectura con capacitor balanceado) en los Modelos 50 , 65 y 67 .
Algunas computadoras se construyen utilizando "microcódigo grabable": en lugar de almacenar el microcódigo en una ROM o en una lógica cableada, el microcódigo se almacena en una RAM llamada almacén de control grabable o WCS . A este tipo de computadora a veces se le llama computadora con conjunto de instrucciones escribibles o WISC . [1] Muchas de estas máquinas eran prototipos de laboratorio experimentales, como el WISC CPU/16 [2] y el RTX 32P. [3]
Los modelos System/360 originales tienen un almacén de control de sólo lectura, pero los modelos posteriores System/360, System/370 y sus sucesores cargan parte o la totalidad de sus microprogramas desde disquetes u otros DASD en un almacén de control grabable que consiste en archivos aleatorios de velocidad ultraalta. -Acceder a la memoria de lectura y escritura . La arquitectura System/370 incluye una función llamada Carga inicial de microprograma ( IML o IMPL ) [4] que puede invocarse desde la consola, como parte de Power On Reset ( POR ) o desde otro procesador en un complejo multiprocesador estrechamente acoplado . Esto permitió a IBM reparar fácilmente defectos de microprogramación en el campo. Incluso cuando la mayor parte del almacén de control está almacenado en ROM, los proveedores de computadoras a menudo venden un almacén de control grabable como una opción, lo que permite a los clientes personalizar el microprograma de la máquina. Otros proveedores, por ejemplo IBM, utilizan WCS para ejecutar microcódigo para funciones del emulador [5] [6] y diagnósticos de hardware. [7]
Otras máquinas comerciales que utilizan microcódigo grabable incluyen Burroughs Small Systems (décadas de 1970 y 1980), los procesadores Xerox en sus máquinas Lisp y estaciones de trabajo Xerox Star , la familia DEC VAX 8800 ("Nautilus") y las máquinas Symbolics L y G. (década de 1980). Algunas máquinas DEC PDP-10 almacenan su microcódigo en chips SRAM (aproximadamente 80 bits de ancho x 2 Kpalabras), que generalmente se cargan al encenderse a través de alguna otra CPU frontal. [8] Muchas más máquinas ofrecen almacenes de control grabables programables por el usuario como opción (incluidas las minicomputadoras de las series HP 2100 , DEC PDP-11/60 y Varian Data Machines V-70 ). Mentec M11 y Mentec M1 almacenan su microcódigo en chips SRAM, cargados al encender a través de otra CPU. El Data General Eclipse MV/8000 ("Eagle") tiene un almacén de control grabable SRAM, cargado al encenderlo a través de otra CPU. [9]
WCS ofrece varias ventajas, incluida la facilidad de parchear el microprograma y, para ciertas generaciones de hardware, un acceso más rápido que el que podrían proporcionar las ROM. Los WCS programables por el usuario le permiten optimizar la máquina para propósitos específicos. Sin embargo, también tenía la desventaja de dificultar la depuración de programas y hacer posible que usuarios malintencionados afectaran negativamente el sistema y los datos. [10]
Algunos diseños de CPU compilan el conjunto de instrucciones en una RAM grabable o FLASH dentro de la CPU (como el procesador Rekursiv y el Imsys Cjip), [11] o una FPGA ( computación reconfigurable ).
Varias CPU Intel de la familia de arquitectura x86 tienen microcódigo grabable, [12] comenzando con el Pentium Pro en 1995. [13] [14] Esto ha permitido que los errores en el microcódigo Intel Core 2 y el microcódigo Intel Xeon se corrijan en el software, en lugar de que requerir que se reemplace todo el chip. Estas correcciones pueden instalarse mediante Linux, [15] FreeBSD , [16] Microsoft Windows, [17] o el BIOS de la placa base. [18]
El almacén de control suele tener un registro en sus salidas. Las salidas que regresan al secuenciador para determinar la siguiente dirección tienen que pasar por algún tipo de registro para evitar la creación de una condición de carrera . [19] En la mayoría de los diseños, todos los demás bits también pasan por un registro. Esto se debe a que la máquina funcionará más rápido si la ejecución de la siguiente microinstrucción se retrasa un ciclo. Este registro se conoce como registro de canalización. Muy a menudo, la ejecución de la siguiente microinstrucción depende del resultado de la microinstrucción actual, que no será estable hasta el final del microciclo actual. Se puede ver que de cualquier manera, todas las salidas del almacén de control van a un registro grande. Históricamente era posible comprar EPROM con estos bits de registro en el mismo chip.
La señal de reloj que determina la frecuencia de reloj , que es el tiempo de ciclo del sistema, registra principalmente este registro.
Almacenamiento de control grabable SRAM de 4096 x 75 bits: microinstrucción de 74 bits con 1 bit de paridad (18 campos)
No es raro encontrar microprogramas con un tamaño superior a 50 KB. Este aumento de tamaño y la expansión de la microprogramación más allá de los límites tradicionales de la emulación de instrucciones de máquina han aumentado la posibilidad de que existan microprogramas tanto maliciosos como defectuosos, particularmente los últimos.