Un almacén de control es la parte de la unidad de control de una CPU que almacena el microprograma de la CPU . Por lo general, se accede a él mediante un microsecuenciador . Una implementación de almacén de control cuyo contenido es inalterable se conoce como memoria de solo lectura (ROM) o almacenamiento de solo lectura (ROS); uno cuyo contenido es alterable se conoce como almacén de control escribible (WCS).
Los primeros sistemas de almacenamiento 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 de programas del MIT Whirlwind , descrita por primera vez en 1947. Los procesadores VLSI modernos , en cambio, 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 de capacitores de tarjeta) en el Modelo 30 , TROS (almacenamiento de solo lectura de transformadores) en el Modelo 40 y BCROS (almacenamiento de solo lectura de capacitores equilibrados) en los Modelos 50 , 65 y 67 .
Algunas computadoras se construyen utilizando "microcódigo escribible"; en lugar de almacenar el microcódigo en la ROM o en una lógica cableada, el microcódigo se almacena en una RAM llamada almacén de control escribible o WCS . A este tipo de computadoras a veces se las denomina computadoras con conjunto de instrucciones escribibles o WISC . [1] Muchas de estas máquinas eran prototipos experimentales de laboratorio, como la WISC CPU/16 [2] y la RTX 32P. [3]
Los modelos originales System/360 tienen un almacén de control de sólo lectura, pero los modelos posteriores System/360, System/370 y sucesores cargan parte o la totalidad de sus microprogramas desde disquetes u otros DASD en un almacén de control escribible que consiste en una memoria de lectura-escritura de acceso aleatorio de velocidad ultraalta . La arquitectura System/370 incluye una función llamada Carga inicial de microprograma ( IML o IMPL ) [4] que se puede invocar desde la consola, como parte de un Reinicio de encendido ( POR ) o desde otro procesador en un complejo multiprocesador estrechamente acoplado . Esto permitió a IBM reparar fácilmente los defectos de microprogramación en el campo. Incluso cuando la mayoría del almacén de control se almacena en ROM, los vendedores de computadoras a menudo vendían un almacén de control escribible como una opción, lo que permitía a los clientes personalizar el microprograma de la máquina. Otros vendedores, por ejemplo, IBM, utilizan el WCS para ejecutar microcódigo para las características del emulador [5] [6] y los diagnósticos de hardware. [7]
Otras máquinas comerciales que utilizan microcódigo escribible incluyen los 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 L y G de Symbolics (década de 1980). Algunas máquinas DEC PDP-10 almacenan su microcódigo en chips SRAM (alrededor de 80 bits de ancho x 2 Kwords), que normalmente se cargan al encenderse a través de alguna otra CPU frontal. [8] Muchas más máquinas ofrecen almacenes de control escribibles programables por el usuario como una opción (incluidas las minicomputadoras HP 2100 , DEC PDP-11/60 y Varian Data Machines serie V-70 ). El Mentec M11 y el Mentec M1 almacenan su microcódigo en chips SRAM, cargados al encenderse a través de otra CPU. El Eclipse MV/8000 ("Eagle") de Data General tiene un almacén de control escribible en SRAM, que se carga al encenderse a través de otra CPU. [9]
WCS ofrece varias ventajas, entre ellas la facilidad para aplicar parches al microprograma y, para ciertas generaciones de hardware, un acceso más rápido que el que podían proporcionar las ROM. El WCS programable por el usuario permite que éste optimice la máquina para fines específicos. Sin embargo, también tiene la desventaja de dificultar la depuración de programas y hacer posible que usuarios malintencionados afecten negativamente al sistema y a los datos. [10]
Algunos diseños de CPU compilan el conjunto de instrucciones en una RAM o FLASH grabable dentro de la CPU (como el procesador Rekursiv y el Imsys Cjip), [11] o un FPGA ( computación reconfigurable ).
Varias CPU Intel de la familia de arquitectura x86 tienen microcódigo escribible, [12] comenzando con el Pentium Pro en 1995. [13] [14] Esto ha permitido que errores en el microcódigo de Intel Core 2 y el microcódigo de Intel Xeon se corrijan en el software, en lugar de requerir que se reemplace todo el chip. Dichas correcciones se pueden instalar mediante Linux, [15] FreeBSD , [16] Microsoft Windows, [17] o el BIOS de la placa base. [18]
El almacén de control normalmente tiene un registro en sus salidas. Las salidas que vuelven 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 gran registro. Históricamente, solía ser 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, sincroniza principalmente este registro.
Memoria de control grabable en SRAM de 4096 x 75 bits: microinstrucción de 74 bits con 1 bit de paridad (18 campos)
No es inusual encontrar microprogramas de más de 50K bytes de tamaño. 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 microprogramas tanto maliciosos como defectuosos, particularmente los últimos.