Введение
Контрольное хранилище — это часть блока управления ЦП, в которой хранится микропрограмма ЦП. Обычно к нему обращается микропоследователь. Реализация контрольного хранилища с неизменяемым содержимым называется постоянной памятью (ROM) или хранилищем только для чтения (ROS); реализация с изменяемым содержимым называется записываемым контрольным хранилищем (WCS).
Раннее использование
Ранние хранилища управления реализовывались в виде диодных матриц, доступ к которым осуществлялся через декодеры адресов – это разновидность памяти только для чтения. Эта традиция берет начало от матрицы синхронизации программ в компьютере MIT Whirlwind, впервые описанной в 1947 году. Современные процессоры на основе интегральных схем (VLSI) вместо этого используют матрицы полевых транзисторов для построения структур ROM и/или PLA, применяемых для управления процессором, а также его внутренним последовательным устройством в микрокодированной реализации. IBM System/360 использовала различные методы: CCROS (Card Capacitor Read Only Storage) в модели 30, TROS (Transformer Read Only Storage) в модели 40 и BCROS (Balanced Capacitor Read Only Storage) в моделях 50, 65 и 67.
Сберегательные устройства
Некоторые компьютеры построены с использованием "записываемого микрокода" — вместо хранения микрокода в ПЗУ или жесткой логической схеме, микрокод хранится в оперативной памяти, называемой хранилищем управления, доступным для записи, или WCS. Такой компьютер иногда называют компьютером с набором команд, доступным для записи, или WISC. Многие из этих машин были экспериментальными лабораторными прототипами, такими как WISC CPU/16 и RTX 32P. Первоначальные модели System/360 имели хранилище управления только для чтения, но более поздние модели System/360, System/370 и их последующие модели загружали часть или весь свой микрокод с дискет или других DASD в записываемое хранилище управления, состоящее из сверхбыстрой оперативной памяти с произвольным доступом для чтения и записи. Архитектура System/370 включает в себя функцию, называемую Initial Microprogram Load (IML или IMPL), которая может быть вызвана с консоли, как часть Power On Reset (POR) или с другого процессора в тесно связанном мультипроцессорном комплексе. Это позволило IBM легко исправлять дефекты микропрограммного обеспечения в полевых условиях. Даже когда большая часть хранилища управления хранится в ПЗУ, производители компьютеров часто предлагали записываемое хранилище управления в качестве опции, позволяя клиентам настраивать микропрограмму машины. Другие производители, например IBM, используют WCS для запуска микрокода для функций эмуляции и аппаратной диагностики. Другие коммерческие машины, использующие записываемый микрокод, включают в себя Burroughs Small Systems (1970-е и 1980-е годы), процессоры Xerox в их Lisp-машинах и рабочих станциях Xerox Star, семейство DEC VAX 8800 ("Nautilus") и машины Symbolics L и G (1980-е годы). Некоторые DEC PDP 10 машины хранят свой микрокод в микросхемах SRAM (шириной около 80 бит x 2 Kwords), которые обычно загружаются при включении питания через другой процессор. Многие другие машины предлагают пользователю программируемые записываемые хранилища управления в качестве опции (включая HP 2100, DEC PDP 11/60 и мини-компьютеры Varian Data Machines V 70 серии). Mentec M11 и Mentec M1 хранят свой микрокод в микросхемах SRAM, загружаемых при включении питания через другой процессор. Data General Eclipse MV/8000 ("Eagle") имеет записываемое в SRAM хранилище управления, загружаемое при включении питания через другой процессор. WCS предлагает несколько преимуществ, включая простоту исправления микропрограммы и, для определенных поколений аппаратного обеспечения, более быстрый доступ, чем обеспечивали ПЗУ. Программируемые пользователем WCS позволяют пользователю оптимизировать машину для конкретных целей. Однако это также имело недостаток, заключающийся в усложнении отладки программ и возможности для злоумышленников негативно повлиять на систему и данные. Некоторые конструкции процессоров компилируют набор инструкций в записываемую оперативную память или FLASH внутри процессора (например, процессор Rekursiv и Imsys Cjip) или FPGA (реконфигурируемые вычисления). Несколько процессоров Intel в семействе архитектуры x86 имеют записываемый микрокод, начиная с Pentium Pro в 1995 году. Это позволило исправить ошибки в микрокоде Intel Core 2 и микрокоде Intel Xeon с помощью программного обеспечения, а не требовать замены всего чипа. Такие исправления могут быть установлены Linux, FreeBSD, Microsoft Windows или BIOS материнской платы.
Время, зацепление и избежание условий гонки
Контрольный магазин обычно имеет регистр на своих выходах. Выходы, возвращаемые в секвенсор для определения следующего адреса, должны проходить через регистр, чтобы избежать возникновения гонки данных. В большинстве конструкций все остальные биты также проходят через регистр, поскольку это позволяет машине работать быстрее, если выполнение следующей микроинструкции задерживается на один цикл. Этот регистр известен как регистр конвейера. Зачастую выполнение следующей микроинструкции зависит от результата текущей микроинструкции, который становится стабильным только к концу текущего микроцикла. Таким образом, все выходы контрольного хранилища поступают в единый большой регистр. Ранее существовала возможность приобретать ПЗУ (EPROM) с интегрированными битами этого регистра на одном чипе. Тактовый сигнал, определяющий тактовую частоту системы (длительность цикла), в основном синхронизирует работу этого регистра.