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