Микрокод
Выполнение программы |
---|
Общие понятия |
Типы кода |
Стратегии составления |
Известное время выполнения |
|
Известные компиляторы и наборы инструментов |
|
В конструкции процессора микрокод служит промежуточным слоем, расположенным между аппаратным обеспечением центрального процессора (ЦП) и видимой программисту архитектурой набора команд компьютера, также известной как его машинный код . [1] [ нужна страница ] Он состоит из набора инструкций аппаратного уровня, которые реализуют инструкции машинного кода более высокого уровня или управляют внутренней последовательностью конечных автоматов во многих компонентах цифровой обработки . Хотя микрокод используется в процессорах общего назначения в современных настольных компьютерах, он также действует как запасной путь для сценариев, с которыми более быстрый проводной блок управления не может справиться. [2]
Размещенный в специальной высокоскоростной памяти, микрокод преобразует машинные инструкции, данные конечного автомата или другие входные данные в последовательности детальных операций на уровне схемы. Он отделяет машинные инструкции от базовой электроники , тем самым обеспечивая большую гибкость при разработке и изменении инструкций. Более того, он облегчает построение сложных многошаговых инструкций, одновременно снижая сложность компьютерных схем. Процесс написания микрокода часто называют микропрограммированием , а микрокод в конкретной реализации процессора иногда называют микропрограммой .
Благодаря обширному микропрограммированию микроархитектуры меньшего масштаба и простоты могут эмулировать более надежные архитектуры с большей длиной слова , дополнительными исполнительными блоками и т. д. Этот подход обеспечивает относительно простой метод обеспечения совместимости программного обеспечения между различными продуктами внутри семейства процессоров.
Некоторые производители оборудования, особенно IBM / Lenovo , используют термин «микрокод» как синоним «прошивки» . В этом контексте весь код внутри устройства называется микрокодом, будь то микрокод или машинный код. Например, обновления микрокода жесткого диска часто включают обновления как его микрокода, так и встроенного ПО. [3]
Обзор [ править ]
Наборы инструкций [ править ]
На аппаратном уровне процессоры содержат ряд отдельных областей схемы или «блоков», выполняющих различные задачи. Обычно встречающиеся блоки включают арифметико-логическое устройство (АЛУ), которое выполняет такие инструкции, как сложение или сравнение двух чисел, схемы для чтения и записи данных во внешнюю память, а также небольшие области встроенной памяти для хранения этих значений во время их обработки. В большинстве проектов дополнительная высокопроизводительная память, файл регистров , используется для хранения временных значений, а не только тех, которые необходимы текущей инструкции. [4]
Чтобы правильно выполнить команду, различные схемы должны быть активированы по порядку. Например, невозможно сложить два числа, если они еще не загружены из памяти. В проектах RISC правильный порядок этих инструкций во многом зависит от программиста или, по крайней мере, от компилятора языка программирования, который они используют. Например, чтобы сложить два числа, компилятор может вывести инструкции по загрузке одного значения в один регистр, второго в другой, вызвать функцию сложения в АЛУ, а затем записать результат обратно в память. [4]
Поскольку последовательность инструкций, необходимая для реализации концепции более высокого уровня «добавить эти два числа в память», может потребовать нескольких инструкций, это может представлять собой узкое место в производительности, если эти инструкции хранятся в основной памяти . Чтение этих инструкций одна за другой отнимает время, которое можно было бы использовать для чтения и записи реальных данных. По этой причине в проектах, не относящихся к RISC, обычно имеется множество различных инструкций, которые сильно различаются в зависимости от того, где они хранят данные. Например, MOS 6502 имеет восемь вариантов инструкции сложения: ADC
, которые отличаются только тем, где они ищут два операнда. [5]
Использование варианта инструкции или « кода операции », который наиболее точно соответствует конечной операции, может уменьшить количество инструкций до одной, экономя память, используемую программным кодом, и повышая производительность, оставляя шину данных открытой для других операций. Однако внутри эти инструкции представляют собой не отдельные операции, а последовательность операций, которые фактически выполняют блоки. Преобразование одной инструкции, считанной из памяти, в последовательность внутренних действий — обязанность блока управления , другого блока внутри процессора. [6]
Микрокод [ править ]
Основная идея микрокода заключается в замене специальной логики, реализующей последовательность инструкций, серией простых инструкций, выполняемых в «механизме микрокода» процессора. В то время как пользовательская логическая система может иметь ряд диодов и вентилей, которые выводят ряд напряжений на различные линии управления, вместо этого к этим линиям подключается механизм микрокода, и они включаются и выключаются по мере того, как механизм последовательно считывает инструкции микрокода. . Инструкции микрокода часто закодированы в этих строках, например, если бит 8 истинен, это может означать, что АЛУ следует приостановить ожидание данных. В этом отношении микрокод чем-то похож на рулоны бумаги в пианино , где отверстия показывают, какую клавишу следует нажимать.
Различие между пользовательской логикой и микрокодом может показаться небольшим: один использует схему диодов и вентилей для декодирования инструкций и создания последовательности сигналов, тогда как другой кодирует сигналы как микроинструкции, которые считываются последовательно для получения тех же результатов. Критическое отличие состоит в том, что при разработке собственной логики изменения в отдельных шагах требуют перепроектирования логики. При использовании микрокода все, что меняется, — это код, хранящийся в соответствующем постоянном запоминающем устройстве (ПЗУ). Это значительно упрощает устранение проблем в системе микрокода. Это также означает, что не существует эффективного ограничения сложности инструкций, она ограничена только объемом ПЗУ, который вы готовы использовать.
Самый нижний уровень в стеке программного обеспечения компьютера традиционно представляет собой инструкции необработанного машинного кода для процессора. В процессорах с микрокодированием выборка и декодирование этих инструкций, а также их выполнение могут выполняться с помощью микрокода. Во избежание путаницы каждый элемент, относящийся к микропрограмме, дифференцируется приставкой «микро» : микроинструкция, микроассемблер, микропрограммист и т. д. [ нужна ссылка ]
Сложные цифровые процессоры также могут использовать более одного блока управления (возможно, на основе микрокода) для делегирования подзадач, которые должны выполняться по существу асинхронно и параллельно. Например, VAX 9000 имеет проводной блок IBox для выборки и декодирования инструкций, которые он передает микрокодированному блоку EBox для выполнения. [7] а VAX 8800 имеет как IBox с микрокодированием, так и EBox с микрокодированием. [8]
Программист высокого уровня или даже программист на ассемблере обычно не видит и не изменяет микрокод. В отличие от машинного кода, который часто сохраняет некоторую обратную совместимость между различными процессорами в семействе, микрокод работает только на той электронной схеме, для которой он разработан, поскольку он представляет собой неотъемлемую часть конструкции конкретного процессора.
Дизайн [ править ]
Инженеры обычно пишут микрокод на этапе проектирования процессора, сохраняя его в постоянном запоминающем устройстве (ПЗУ) или программируемой логической матрице (PLA). [9] структуру или их комбинацию. [10] Однако также существуют машины, в которых часть или весь микрокод хранится в статической оперативной памяти (SRAM) или флэш-памяти . это традиционно обозначается как записываемое хранилище управления В контексте компьютеров , которое может быть либо памятью только для чтения, либо памятью для чтения и записи . В последнем случае процесс инициализации ЦП загружает микрокод в хранилище управления с другого носителя данных с возможностью изменения микрокода для исправления ошибок в наборе команд или для реализации новых машинных инструкций.
Микропрограммы [ править ]
Микропрограммы состоят из серии микроинструкций, которые управляют ЦП на самом фундаментальном уровне аппаратных схем. Например, одна типичная горизонтальная микроинструкция может определять следующие операции:
- Подключите регистр 1 к стороне A АЛУ .
- Подключите регистр 7 к стороне B АЛУ.
- Установите ALU для выполнения до двух сложения
- Установите вход переноса АЛУ на ноль.
- Сохраните значение результата в регистре 8.
- Обновите коды условий из флагов состояния ALU ( отрицательный , ноль , переполнение и перенос ).
- Микропереход к заданному адресу микрокомпьютера для выполнения следующей микроинструкции.
Для одновременного управления всеми функциями процессора за один цикл микроинструкция часто имеет длину более 50 бит; например, 128 бит на 360/85 с функцией эмулятора. Микропрограммы тщательно разрабатываются и оптимизируются для максимально быстрого выполнения, поскольку медленная микропрограмма приведет к медленному выполнению машинных инструкций и снижению производительности соответствующих прикладных программ, использующих такие инструкции.
Обоснование [ править ]
Микрокод изначально был разработан как более простой метод разработки логики управления компьютером. Первоначально наборы инструкций ЦП были жестко закреплены . Каждый шаг, необходимый для извлечения, декодирования и выполнения машинных инструкций (включая любые вычисления адресов операндов, чтение и запись), контролировался непосредственно комбинационной логикой и довольно минимальной схемой последовательного конечного автомата. Хотя такие аппаратные процессоры были очень эффективными, необходимость в мощных наборах команд с многошаговой адресацией и сложными операциями ( см. ниже ) затрудняла их проектирование и отладку; Этому также могут способствовать сильно закодированные инструкции различной длины, особенно когда используются очень нерегулярные кодировки.
Микрокод упростил работу, позволяя определять большую часть поведения процессора и модели программирования с помощью подпрограмм микропрограммы, а не с помощью специальных схем. Даже на поздних стадиях процесса проектирования микрокод можно было легко изменить, тогда как вносить изменения в аппаратные конструкции ЦП было очень сложно. Таким образом, это значительно облегчило проектирование ЦП.
С 1940-х до конца 1970-х большая часть программирования выполнялась на языке ассемблера ; Инструкции более высокого уровня означают большую производительность программиста, поэтому важным преимуществом микрокода была относительная простота определения мощных машинных инструкций. Окончательным расширением этого являются конструкции «непосредственно исполняемого языка высокого уровня», в которых каждый оператор языка высокого уровня, такого как PL/I , полностью и напрямую выполняется микрокодом без компиляции. Проект IBM Future Systems и процессор Data General Fountainhead являются примерами этого. В 1970-х годах скорость процессора росла быстрее, чем скорость памяти, и многочисленные методы, такие как передача блоков памяти , предварительная выборка памяти и многоуровневое кэширование для смягчения этого использовались . Машинные инструкции высокого уровня, ставшие возможными благодаря микрокоду, помогли еще больше, поскольку меньшее количество более сложных машинных инструкций требует меньшей пропускной способности памяти. Например, операцию над строкой символов можно выполнить как одну машинную инструкцию, что позволяет избежать многократной выборки инструкций.
Архитектуры с наборами инструкций, реализованными с помощью сложных микропрограмм, включали IBM System/360 и Digital Equipment Corporation VAX . Подход к все более сложным наборам команд, реализованным с помощью микрокода, позже был назван компьютером со сложным набором команд (CISC). Альтернативный подход, используемый во многих микропроцессорах , заключается в использовании одной или нескольких программируемых логических матриц (PLA) или постоянного запоминающего устройства (ROM) (вместо комбинационной логики), главным образом, для декодирования инструкций, и позволить простому конечному автомату (без особого или любой другой микрокод) выполняют большую часть секвенирования. Технология MOS 6502 — это пример микропроцессора, использующего PLA для декодирования и упорядочения команд. PLA виден на микрофотографиях чипа. [11] и его работу можно увидеть при моделировании на уровне транзистора .
Микропрограммирование до сих пор используется в современных процессорах. В некоторых случаях после отладки микрокода в моделировании хранилище управления заменяется логическими функциями. [ нужна ссылка ] Логические функции часто выполняются быстрее и дешевле, чем эквивалентная память микропрограмм.
Преимущества [ править ]
Микропрограммы процессора работают на более примитивной, совершенно другой и гораздо более аппаратно-ориентированной архитектуре, чем инструкции ассемблера, видимые обычным программистам. В координации с аппаратным обеспечением микрокод реализует видимую программисту архитектуру. Базовое оборудование не обязательно должно иметь фиксированную связь с видимой архитектурой. Это упрощает реализацию заданной архитектуры набора команд на широком спектре базовых аппаратных микроархитектур.
IBM System/360 имеет 32-битную архитектуру с 16 регистрами общего назначения, но в большинстве реализаций System/360 используется аппаратное обеспечение, реализующее гораздо более простую базовую микроархитектуру; например, модель System/360 Model 30 имеет 8-битные пути данных к арифметико-логическому устройству (АЛУ) и основной памяти и реализовала регистры общего назначения в специальном блоке высокоскоростной основной памяти , а модель System/360 40 имеет 8-битные пути данных к АЛУ и 16-битные пути данных к основной памяти, а также реализовал регистры общего назначения в специальном блоке высокоскоростной основной памяти. Модель 50 имеет полные 32-битные каналы данных и реализует регистры общего назначения в специальном блоке высокоскоростной основной памяти. [12] Модели от 65 до 195 имеют более крупные пути передачи данных и реализуют регистры общего назначения в более быстрых транзисторных схемах. [ нужна ссылка ] Таким образом, микропрограммирование позволило IBM спроектировать множество моделей System/360 с существенно различным аппаратным обеспечением и охватывать широкий диапазон стоимости и производительности, при этом сделав их все архитектурно совместимыми. Это значительно сокращает количество уникальных системных программ, которые необходимо написать для каждой модели.
Похожий подход использовала Digital Equipment Corporation (DEC) в своем семействе компьютеров VAX. В результате разные процессоры VAX используют разные микроархитектуры, но видимая программисту архитектура не меняется.
Микропрограммирование также снижает стоимость внесения изменений в поля для исправления дефектов ( ошибок ) процессора; ошибку часто можно исправить путем замены части микропрограммы, а не путем внесения изменений в аппаратную логику и проводку.
История [ править ]
Ранние примеры [ править ]
В 1947 году при разработке MIT Whirlwind была представлена концепция хранилища управления как способ упростить проектирование компьютера и выйти за рамки специальных методов. Хранилище управления представляет собой диодную матрицу : двумерную решетку, одно измерение которой принимает «импульсы времени управления» от внутренних часов ЦП, а другое подключается к управляющим сигналам на вентилях и других схемах. «Распределитель импульсов» принимает импульсы, генерируемые тактовой частотой процессора , и разбивает их на восемь отдельных временных импульсов, каждый из которых активирует отдельный ряд решетки. Когда ряд активирован, он активирует подключенные к нему управляющие сигналы. [13]
В 1951 году Морис Уилкс . [14] усовершенствовал эту концепцию, добавив условное выполнение — концепцию, похожую на условное выражение в компьютерном программном обеспечении. Его первоначальная реализация состояла из пары матриц: первая генерировала сигналы наподобие хранилища управления Whirlwind, а вторая матрица выбирала, какую строку сигналов (так сказать, командное слово микропрограммы) вызывать в следующем цикле. Условные выражения были реализованы путем предоставления возможности, позволяющей одной строке в хранилище элементов управления выбирать одну из альтернатив во второй матрице. Это сделало сигналы управления обусловленными обнаруженным внутренним сигналом. Уилкс ввел термин «микропрограммирование», чтобы описать эту функцию и отличить ее от простого хранилища элементов управления.
360 [ править ]
Микрокод оставался относительно редким в компьютерном проектировании, поскольку стоимость ПЗУ, необходимого для хранения кода, существенно не отличалась от стоимости использования специального хранилища элементов управления. Ситуация изменилась в начале 1960-х годов с появлением массового производства основной памяти и ядра , которые были гораздо дешевле, чем специализированная логика, основанная на диодных матрицах или аналогичных решениях. Первой, кто воспользовался этим по-настоящему, была компания IBM, выпустившая в 1964 году серию System/360 . Это позволило машинам иметь очень сложный набор инструкций, включая операции, соответствующие конструкциям языка высокого уровня, такие как форматирование двоичных значений в десятичные строки, хранение сложной серии инструкций, необходимых для этой задачи, в недорогой памяти. [15]
Но реальная ценность линейки 360 заключалась в том, что можно было создать серию машин, совершенно разных внутри, но работающих на одной и той же ISA. Для машины начального уровня можно использовать 8-битное АЛУ, которому требуется несколько циклов для выполнения одного 32-битного сложения, в то время как машина более высокого уровня может иметь полное 32-битное АЛУ, которое выполняет то же сложение за один цикл. . Эти различия можно было бы реализовать в логике управления, но стоимость реализации совершенно другого декодера для каждой машины была бы непомерно высокой. Использование микрокода означало, что менялся только код в ПЗУ. Например, одна машина может включать в себя модуль с плавающей запятой , и, таким образом, ее микрокод для умножения двух чисел может состоять всего из нескольких строк, тогда как на той же машине без FPU это будет программа, которая делает то же самое, используя несколько сложений, и все изменилось ПЗУ. [15]
Результатом этого проекта стало то, что клиенты могли использовать младшую модель семейства для разработки своего программного обеспечения, зная, что, если когда-либо потребуется более высокая производительность, они смогут перейти на более быструю версию, и ничего больше не изменится. Это снизило входной барьер, и модель 360 имела ошеломительный успех. К концу десятилетия использование микрокода стало обязательным во всей индустрии мейнфреймов.
Перемещение вверх по строке [ править ]
Ранние миникомпьютеры были слишком простыми, чтобы требовать микрокода, и были больше похожи на более ранние мэйнфреймы с точки зрения набора команд и способа их декодирования. Но вскоре их разработчики начали использовать более мощные интегральные схемы , позволяющие создавать более сложные ISA. К середине 1970-х годов большинство новых миникомпьютеров и суперминикомпьютеров также использовали микрокод, например, большинство моделей PDP -11 и, в первую очередь, большинство моделей VAX , которые включали инструкции высокого уровня, мало чем отличающиеся от тех, что были в 360°. . [16]
Та же основная эволюция произошла с микропроцессорами и . Ранние конструкции были чрезвычайно простыми, и даже более мощные 8-битные конструкции середины 1970-х годов, такие как Zilog Z80, имели наборы команд, которые были достаточно простыми, чтобы их можно было реализовать в специальной логике. К этому времени логику управления можно было разместить на том же кристалле, что и ЦП, что сделало разницу в стоимости ПЗУ и логики менее серьезной проблемой. Однако вскоре эти компании также столкнулись с проблемой внедрения более производительных разработок, но при этом хотели обеспечить обратную совместимость . Среди первых примеров микрокода в микросхемах был Intel 8086 . [6]
Среди последних реализаций микрокода в микропроцессорах можно назвать Motorola 68000 . Это предлагало высокоортогональный набор команд с широким спектром режимов адресации , все они реализованы в микрокоде. Это не обошлось без затрат: согласно ранним статьям, около 20% площади поверхности чипа (и, следовательно, стоимости) занимает система микрокода. [17] и более поздние оценки показывают, что примерно 23 000 из 68 000 вентилей были частью системы микрокода.
RISC входит [ править ]
В то время как компании продолжали конкурировать по сложности своих наборов инструкций, а использование микрокода для их реализации не подвергалось сомнению, в середине 1970-х годов внутренний проект в IBM поднял серьезные вопросы относительно всей концепции. В рамках проекта по разработке высокопроизводительного полностью цифрового телефонного коммутатора группа под руководством Джона Кока ) своих клиентов начала изучать огромные объемы данных о производительности программ 360 (и System/370 . Это заставило их заметить любопытную закономерность: когда ISA представляла несколько версий инструкции, компилятор почти всегда использовал самую простую из них, а не ту, которая наиболее точно представляет код. Они узнали, что это происходит потому, что эти инструкции всегда реализуются аппаратно и поэтому выполняются быстрее всего. Использование другой инструкции могло обеспечить более высокую производительность на некоторых машинах, но не было возможности узнать, на какой машине они работают. Это сводило на нет цель использования микрокода, которая заключалась в сокрытии этих различий. [18]
Команда пришла к радикальному выводу: «Навязывание микрокода между компьютером и его пользователями приводит к дорогостоящим накладным расходам при выполнении наиболее часто выполняемых инструкций». [18]
Результатом этого открытия стало то, что сегодня известно как концепция RISC . Сложный механизм микрокода и связанное с ним ПЗУ уменьшены или полностью исключены, а вместо этого эти схемы предназначены для таких вещей, как дополнительные регистры или более широкое АЛУ, что повышает производительность каждой программы. Когда необходимы сложные последовательности инструкций, это остается на усмотрение компилятора, что, в первую очередь, и является целью использования компилятора. Основная концепция вскоре была подхвачена исследователями из университета Калифорнии, где моделирование показало, что такие конструкции тривиально превосходят даже самые быстрые традиционные конструкции. Именно в одном из таких проектов Калифорнийского университета в Беркли был введен термин RISC.
Индустрия отреагировала на концепцию RISC как с замешательством, так и с враждебностью, включая знаменитую пренебрежительную статью команды VAX в Digital. [19] Основным предметом разногласий было то, что реализация инструкций вне процессора означала, что на чтение этих инструкций из памяти потребуется гораздо больше времени, тем самым замедляя общую производительность, независимо от того, насколько быстро работал сам процессор. [19] Сторонники отметили, что моделирование ясно показало, что количество инструкций ненамного больше, особенно если рассматривать скомпилированный код. [18]
Споры бушевали до тех пор, пока во второй половине 1980-х годов не появились первые коммерческие разработки RISC, которые легко превзошли самые сложные разработки других компаний. К концу 1980-х все закончилось; даже DEC отказалась от микрокода в своих разработках DEC Alpha , а процессоры CISC перешли на использование проводных схем, а не микрокода, для выполнения многих функций. Например, Intel 80486 использует проводную схему для выборки и декодирования инструкций, используя микрокод только для выполнения инструкций; Для перемещения регистра-регистра и арифметических инструкций требовалась только одна микроинструкция, что позволяло выполнять их за один такт. [20] Аппаратное обеспечение выборки и декодирования Pentium Pro извлекает инструкции и декодирует их в серию микроопераций, которые передаются исполнительному блоку, который планирует и выполняет микрооперации, возможно, делая это вне очереди . Сложные инструкции реализуются с помощью микрокода, состоящего из заранее определенных последовательностей микроопераций. [21]
В некоторых конструкциях процессоров используется машинный код, который работает в специальном режиме, со специальными инструкциями, доступными только в этом режиме и имеющими доступ к аппаратному обеспечению, зависящему от процессора, для реализации некоторых низкоуровневых функций набора команд. DEC Alpha, чисто RISC-проект, использовал PALcode для реализации таких функций, как обработка промахов буфера резервной трансляции (TLB) и обработка прерываний. [22] а также предоставление для систем на базе Alpha, работающих под управлением OpenVMS , инструкций, требующих взаимосвязанного доступа к памяти, которые аналогичны инструкциям, предоставляемым архитектурой VAX . [22] ЦП CMOS IBM System/390 , начиная с процессора G4, и ЦП z/Architecture используют милликод для реализации некоторых инструкций. [23]
Примеры [ править ]
- Аналитическая машина, предложенная Чарльзом Бэббиджем, использует колышки, вставленные во вращающиеся барабаны, для хранения своих внутренних процедур.
- ЭМИДЕК 1100 [24] по общему мнению, использует проводной блок управления, состоящий из проводов, продетых через ферритовые сердечники, известные как «шнурки».
- Большинство моделей серии IBM System/360 микропрограммированы:
- Модель 25 уникальна среди моделей System/360 тем, что использует верхние 16 Кбайт основной памяти для хранения управляющей памяти для микропрограммы. В 2025 используется 16-битная микроархитектура с семью управляющими словами (или микроинструкциями). После обслуживания системы или при смене режима работы микрокод загружается с картридера, ленты или другого устройства. [25] Эмуляция IBM 1410 для этой модели загружается таким образом.
- Модель 30 использует 8-битную микроархитектуру всего с несколькими аппаратными регистрами; все, что увидел программист, эмулируется микропрограммой. Микрокод этой модели также хранится на специальных перфокартах, которые хранятся внутри машины в специальном считывателе для каждой карты, называемом блоком «CROS» (хранилище только для чтения конденсаторов). [26] : 2–5 Еще один блок CROS добавлен для машин, заказанных с эмуляцией 1401/1440/1460. [26] : 4–29 и для машин, заказанных с эмуляцией 1620. [26] : 4–75
- Модель 40 использует 56-битные управляющие слова. В блоке 2040 реализован как главный процессор System/360, так и мультиплексный канал (процессор ввода-вывода). В этой модели используются специальные считыватели TROS, аналогичные устройствам CROS , но с индуктивным датчиком (трансформаторный магазин только для чтения).
- Модель 50 имеет два внутренних канала данных, которые работают параллельно: 32-битный канал данных, используемый для арифметических операций, и 8-битный канал данных, используемый в некоторых логических операциях. В хранилище управления используются 90-битные микроинструкции.
- Модель 85 имеет раздельную выборку команд (I-блок) и выполнение (E-блок), что обеспечивает высокую производительность. I-блок управляется аппаратно. E-блок микропрограммирован; управляющие слова имеют ширину 108 бит на базовой версии 360/85 и шире, если установлена функция эмулятора.
- NCR 315 микропрограммируется с помощью ферритовых сердечников, подключенных вручную ( ПЗУ ), импульсы которых подаются секвенсором с условным выполнением. Провода, проходящие через ядра, используются для различных данных и логических элементов процессора.
- компании Digital Equipment Corporation Процессор PDP-9 , процессоры KL10 и KS10 PDP-10 и процессоры PDP-11 , за исключением PDP-11/20, являются микропрограммными. [27]
- Большинство миникомпьютеров Data General Eclipse имеют микропрограммирование. Задача написания микрокода для Eclipse MV/8000 подробно описана в книге « Душа новой машины», получившей Пулитцеровскую премию .
- Многие системы Burroughs микропрограммированы:
- «Микропроцессор» B700 выполняет коды операций прикладного уровня, используя последовательности 16-битных микроинструкций, хранящихся в основной памяти; каждая из них представляет собой либо операцию загрузки регистра, либо отображается в одну 56-битную инструкцию «нанокода», хранящуюся в постоянной памяти. Это позволяет сравнительно простому аппаратному обеспечению действовать либо как периферийный контроллер мэйнфрейма, либо быть упакованным как автономный компьютер.
- B1700 оснащен совершенно другим аппаратным обеспечением , включая поразрядную основную память, но имеет аналогичную многоуровневую организацию. Операционная система предварительно загружает интерпретатор для любого требуемого языка. Эти интерпретаторы представляют разные виртуальные машины для COBOL , Fortran и т. д.
- Микроданные производят компьютеры, в которых микрокод доступен пользователю; это позволяет создавать собственные инструкции уровня ассемблера. от Microdata В конструкции операционной системы Reality широко используется эта возможность.
- В рабочей станции Xerox Alto использовалась микрокодовая конструкция, но, в отличие от многих компьютеров, механизм микрокодирования не скрыт от программиста в многоуровневой конструкции. Приложения используют это для повышения производительности.
- IBM System/38 описывается как имеющая как горизонтальный, так и вертикальный микрокод . [28] На практике процессор реализует архитектуру набора команд, называемую внутренним микропрограммным интерфейсом (IMPI), с использованием горизонтального формата микрокода. Так называемый уровень вертикального микрокода реализует аппаратно-независимый набор команд машинного интерфейса (MI) System/38 путем перевода кода MI в код IMPI и его выполнения. До появления линейки процессоров IBM RS64 ранние системы IBM AS/400 использовали ту же архитектуру. [29]
- 64 ( Nintendo Сопроцессор реальности консоли RCP), который служит графическим процессором и аудиопроцессором, использует микрокод; можно реализовать новые эффекты или настроить процессор для достижения желаемого результата. Некоторые примечательные примеры пользовательского микрокода RCP включают графику высокого разрешения, движки частиц и неограниченные расстояния прорисовки, которые можно найти в Фактора 5 фильмах « Индиана Джонс и адская машина» , «Звездные войны: Разбойная эскадрилья» и «Звездные войны: Битва за Набу» ; [30] [31] и полномасштабное воспроизведение видео, которое можно найти в Angel Studios от Resident Evil 2 . [32]
- Векторные блоки VU0 и VU1 в Sony PlayStation 2 являются микропрограммируемыми; Фактически, VU1 доступен через микрокод только для первых нескольких поколений SDK.
- MicroCore Labs MCL86, заархивированный 3 ноября 2016 г. на Wayback Machine , MCL51, заархивированный 2 февраля 2017 г. на Wayback Machine , и MCL65, заархивированный 21 декабря 2018 г. на Wayback Machine, являются примерами сильно закодированных «вертикальных» реализаций микросеквенсора. Intel 8086/8088, 8051 и MOS 6502.
- Компьютерная система Digital Scientific Corp. Meta 4 Series 16 представляла собой микропрограммируемую пользователем систему, впервые доступную в 1970 году. Микрокод имел преимущественно вертикальный стиль с 32-битными микроинструкциями. [33] Инструкции хранились на сменных программных платах с сеткой битовых позиций. Один (1) бит представлял собой маленькие металлические квадраты, которые воспринимались усилителями, нулевые (0) биты — отсутствие квадратов. [34] Система может быть настроена на использование 16-битных слов микрохранилища размером до 4 КБ. Одним из продуктов Digital Scientific был эмулятор IBM 1130 . [35] [36]
- MCP -1600 — микропроцессор, производившийся Western Digital с 1975 по начало 1980-х годов. Он использовался для реализации трех различных компьютерных архитектур в микрокоде: Pascal MicroEngine , WD16 и DEC LSI-11 , недорогого PDP-11. [37]
- Более ранние процессоры x86 полностью микрокодированы; начиная с Intel 80486 , менее сложные инструкции реализуются непосредственно аппаратно. В процессорах x86 реализован исправляемый микрокод (исправление BIOS или операционной системы ), начиная с микроархитектуры Intel P6 и микроархитектуры AMD K7 .
- В некоторых видеокартах , контроллерах беспроводных сетевых интерфейсов реализован патчируемый микрокод (исправляется операционной системой).
Реализация [ править ]
Каждая микроинструкция в микропрограмме предоставляет биты, которые управляют функциональными элементами, входящими в состав ЦП. Преимущество перед проводным ЦП заключается в том, что внутреннее управление ЦП становится специализированной формой компьютерной программы. Таким образом, микрокод преобразует сложную задачу проектирования электроники (управление процессором) в менее сложную задачу программирования. Чтобы воспользоваться этим, процессор разделен на несколько частей:
- может I-блок аппаратно декодировать инструкции и определять адрес микрокода для обработки инструкции параллельно с E-модулем .
- Микросеквенсор выбирает следующее слово из хранилища управления. Секвенсор в основном представляет собой счетчик, но обычно у него также есть способ перейти к другой части хранилища управления в зависимости от некоторых данных, обычно данных из регистра команд и всегда некоторой части хранилища управления. Простейший секвенсор — это всего лишь регистр, загружаемый из нескольких бит хранилища управления.
- Набор регистров — это быстрая память , содержащая данные центрального процессора. Он может включать в себя регистры, видимые прикладным программам, такие как регистры общего назначения и программный счетчик , а также может включать в себя другие регистры, которые нелегко доступны прикладному программисту. Часто набор регистров представляет собой трехпортовый файл регистров ; то есть два регистра могут быть прочитаны, а третий записан одновременно.
- Арифметико -логический блок выполняет вычисления, обычно сложение, логическое отрицание, сдвиг вправо и логическое И. Часто он выполняет и другие функции.
Также могут быть регистр адреса памяти и регистр данных памяти , используемые для доступа к основной памяти компьютера . Вместе эти элементы образуют « исполнительную единицу ». Большинство современных процессоров имеют несколько исполнительных блоков. Даже простые компьютеры обычно имеют один блок для чтения и записи памяти, а другой — для выполнения пользовательского кода. Эти элементы часто можно было объединить в один чип. Этот чип имеет фиксированную ширину, которая образует «срез» исполнительного блока. Они известны как чипы « битового среза ». Семейство AMD Am2900 является одним из наиболее известных примеров элементов битового среза. [38] Части исполнительных блоков и целые исполнительные блоки соединены между собой пучком проводов, называемым шиной .
Программисты разрабатывают микропрограммы, используя базовые программные инструменты. Микроассемблер позволяет программисту символически определять таблицу битов. Из-за своей тесной связи с базовой архитектурой «микрокод имеет несколько свойств, которые затрудняют его создание с помощью компилятора». [1] Программа -симулятор предназначена для выполнения битов так же, как электроника, и дает гораздо больше свободы при отладке микропрограммы. После того как микропрограмма доработана и тщательно протестирована, ее иногда используют в качестве входных данных для компьютерной программы, которая создает логику для получения тех же данных. [ нужна ссылка ] Эта программа аналогична тем, которые используются для оптимизации программируемой логической матрицы . Даже без полностью оптимальной логики эвристически оптимизированная логика может значительно сократить количество транзисторов по сравнению с количеством, необходимым для постоянного запоминающего устройства (ПЗУ). Это снижает стоимость производства и потребление электроэнергии процессором.
Микрокод можно охарактеризовать как горизонтальный или вертикальный , имея в виду, прежде всего, то, управляет ли каждая микроинструкция элементами ЦП с небольшим декодированием или без него (горизонтальный микрокод). [а] требуется обширное декодирование с помощью комбинаторной логики или перед этим (вертикальный микрокод). Следовательно, каждая горизонтальная микрокоманда шире (содержит больше битов) и занимает больше места для хранения, чем вертикальная микрокоманда.
Горизонтальный микрокод [ править ]
«Горизонтальный микрокод имеет несколько дискретных микроопераций, которые объединены в одну микроинструкцию для одновременной работы». [1] Горизонтальный микрокод обычно содержится в довольно широком хранилище элементов управления; каждое слово нередко имеет длину 108 бит и более. На каждом такте часов секвенсора слово микрокода считывается, декодируется и используется для управления функциональными элементами, составляющими ЦП.
В типичной реализации горизонтальное слово микропрограммы состоит из довольно четко определенных групп битов. Например, одна простая схема может быть такой:
Зарегистрировать источник А | Зарегистрировать источник Б | Регистр назначения | арифметико-логического блока Работа | Тип прыжка | Адрес перехода |
Чтобы этот тип микромашины реализовал инструкцию JUMP с адресом, следующим за кодом операции, микрокоду может потребоваться два такта часов. Инженер, разрабатывающий его, писал исходный код микроассемблера примерно так:
# Any line starting with a number-sign is a comment
# This is just a label, the ordinary way assemblers symbolically represent a
# memory address.
InstructionJUMP:
# To prepare for the next instruction, the instruction-decode microcode has already
# moved the program counter to the memory address register. This instruction fetches
# the target address of the jump instruction from the memory word following the
# jump opcode, by copying from the memory data register to the memory address register.
# This gives the memory system two clock ticks to fetch the next
# instruction to the memory data register for use by the instruction decode.
# The sequencer instruction "next" means just add 1 to the control word address.
MDR, NONE, MAR, COPY, NEXT, NONE
# This places the address of the next instruction into the PC.
# This gives the memory system a clock tick to finish the fetch started on the
# previous microinstruction.
# The sequencer instruction is to jump to the start of the instruction decode.
MAR, 1, PC, ADD, JMP, InstructionDecode
# The instruction decode is not shown, because it is usually a mess, very particular
# to the exact processor being emulated. Even this example is simplified.
# Many CPUs have several ways to calculate the address, rather than just fetching
# it from the word following the op-code. Therefore, rather than just one
# jump instruction, those CPUs have a family of related jump instructions.
Для каждого тика обычно обнаруживается, что используются только некоторые части ЦП, а остальные группы битов в микроинструкции не выполняются. При тщательном проектировании аппаратного обеспечения и микрокода это свойство можно использовать для распараллеливания операций, использующих различные области ЦП; например, в приведенном выше случае АЛУ не требуется во время первого тика, поэтому потенциально его можно использовать для выполнения более ранней арифметической инструкции.
Вертикальный микрокод [ править ]
В вертикальном микрокоде каждая микроинструкция существенно кодируется, то есть битовые поля обычно проходят через промежуточную комбинаторную логику, которая, в свою очередь, генерирует сигналы управления и упорядочивания для внутренних элементов ЦП (АЛУ, регистров и т. д.). Это контрастирует с горизонтальным микрокодом, в котором битовые поля либо непосредственно создают сигналы управления и последовательности, либо кодируются лишь минимально. Следовательно, вертикальный микрокод требует меньшей длины инструкций и меньшего объема памяти, но требует больше времени для декодирования, что приводит к замедлению тактовой частоты процессора. [39]
Некоторый вертикальный микрокод — это просто язык ассемблера простого обычного компьютера, который эмулирует более сложный компьютер. Некоторые процессоры, такие как процессоры DEC Alpha и микропроцессоры CMOS на более поздних мейнфреймах IBM System/390 и z/Architecture , используют машинный код, работающий в специальном режиме, который дает ему доступ к специальным инструкциям, специальным регистрам и другим аппаратным ресурсам, недоступным для обычный машинный код для реализации некоторых инструкций и других функций, [40] [41] например, обход таблицы страниц на процессорах Alpha. [42] Это называется PALcode на процессорах Alpha и милликод на процессорах мэйнфреймов IBM.
Другая форма вертикального микрокода имеет два поля:
Выбор поля | Значение поля |
Поле выбора выбирает, какая часть ЦП будет управляться этим словом хранилища управления. Значение поля управляет этой частью ЦП. При использовании этого типа микрокода разработчик явно выбирает более медленный ЦП, чтобы сэкономить деньги за счет уменьшения количества неиспользуемых битов в хранилище управления; однако снижение сложности может увеличить тактовую частоту ЦП, что уменьшит эффект увеличения количества циклов на инструкцию.
По мере того, как транзисторы становились дешевле, горизонтальный микрокод стал доминировать в конструкции процессоров с использованием микрокода, а вертикальный микрокод использовался реже.
Когда используются как вертикальный, так и горизонтальный микрокод, горизонтальный микрокод может называться нанокодом или пикокодом . [43]
Доступное для записи хранилище элементов управления [ править ]
Несколько компьютеров были построены с использованием записываемого микрокода . В этой конструкции вместо хранения микрокода в ПЗУ или жесткой логике микрокод хранится в ОЗУ, называемом записываемым хранилищем управления или WCS . Такой компьютер иногда называют компьютером с записываемым набором команд (WISC). [44]
Многие экспериментальные прототипы компьютеров используют записываемые хранилища управления ; существуют также коммерческие машины, использующие записываемый микрокод, такие как Burroughs Small Systems , ранние рабочие станции Xerox , семейство DEC VAX 8800 ( Nautilus ), машины Symbolics L- и G-машины, ряд IBM System/360 и System/370. DEC PDP-10 , реализации, некоторые машины [45] и Data General Eclipse MV/8000 . [46]
IBM System/370 включает в себя функцию, называемую начальной загрузкой микропрограммы ( IML или IMPL ). [47] который можно вызвать с консоли, как часть сброса при включении питания ( POR ) или с другого процессора в тесно связанном многопроцессорном комплексе.
Некоторые коммерческие машины, например IBM 360/85, [48] [49] иметь как хранилище только для чтения, так и записываемое хранилище управления для микрокода.
WCS предлагает несколько преимуществ, включая простоту внесения исправлений в микропрограмму и, для некоторых поколений оборудования, более быстрый доступ, чем ПЗУ. Программируемая пользователем WCS позволяет пользователю оптимизировать машину для конкретных целей.
Начиная с Pentium Pro в 1995 году, некоторые процессоры x86 имеют записываемый микрокод Intel . [50] [51] Это, например, позволило исправлять ошибки в микрокодах Intel Core 2 и Intel Xeon путем исправления их микропрограмм, вместо того, чтобы требовать замены целых чипов. Вторым ярким примером является набор исправлений микрокода, которые Intel предложила для некоторых своих процессорных архитектур возрастом до 10 лет в попытке противостоять уязвимостям безопасности, обнаруженным в их разработках ( Spectre и Meltdown ), которые были обнародованы в начале. 2018 года. [52] [53] Обновление микрокода может быть установлено Linux, [54] FreeBSD , [55] Microsoft Windows, [56] или BIOS материнской платы. [57]
Некоторые машины в качестве опции предлагают программируемые пользователем записываемые элементы управления, включая HP 2100 , DEC PDP-11/60 , TI-990 /12, [58] [59] и Varian Data Machines серии V-70 миникомпьютеры .
с VLIW и Сравнение RISC
Этот раздел необходимо обновить . Причина такова: многие CISC-процессоры теперь выполняют выборку и декодирование инструкций аппаратно и выполняют большую часть, если не все, инструкций аппаратно, и процессоры RISC и CISC выполняют несколько операций за такт. ( декабрь 2023 г. ) |
Тенденция проектирования процессоров с большим количеством микрокодов и сложными инструкциями началась в начале 1960-х годов и продолжалась примерно до середины 1980-х годов. В этот момент философия дизайна RISC стала становиться все более заметной.
Процессору, использующему микрокод, обычно требуется несколько тактовых циклов для выполнения одной инструкции, по одному тактовому циклу на каждый шаг микропрограммы для этой инструкции. Некоторые процессоры CISC содержат инструкции, выполнение которых может занять очень много времени. Такие вариации влияют как на задержку прерываний , так и, что гораздо важнее в современных системах, на конвейерную обработку .
При разработке нового процессора RISC с аппаратным управлением имеет следующие преимущества перед CISC с микрокодированием:
- Программирование в значительной степени отошло от уровня ассемблера, поэтому из соображений производительности больше не стоит предоставлять сложные инструкции.
- Более простые наборы команд позволяют выполнять прямое аппаратное обеспечение, избегая снижения производительности при выполнении микрокода.
- Анализ показывает, что сложные инструкции используются редко, поэтому машинные ресурсы, выделяемые на их выполнение, в значительной степени тратятся впустую.
- Машинные ресурсы, выделенные для редко используемых сложных инструкций, лучше использовать для ускорения выполнения более простых и часто используемых инструкций.
- Сложные микрокодированные инструкции могут потребовать множества тактовых циклов, которые различаются, и их сложно конвейеризировать для повышения производительности.
Есть и контрапункты:
- Сложные инструкции в реализациях с большим количеством микрокода могут не требовать много дополнительных машинных ресурсов, за исключением пространства микрокода. Например, одно и то же АЛУ часто используется для вычисления эффективного адреса и вычисления результата из операндов, например, исходный Z80 , 8086 и другие.
- Более простые инструкции, не относящиеся к RISC (т. е. с использованием операндов прямой памяти ), часто используются современными компиляторами. Обычно используются даже непосредственные арифметические операции со стеком (т. е. результат в памяти). Хотя такие операции с памятью, часто с кодировками различной длины, сложнее конвейеризировать, это все же вполне осуществимо — ярким примером являются i486 , AMD K5 , Cyrix 6x86 , Motorola 68040 и т. д.
- Инструкции, не относящиеся к RISC, по своей сути выполняют больше работы на инструкцию (в среднем), а также обычно тщательно закодированы, поэтому они позволяют уменьшить общий размер одной и той же программы и, следовательно, лучше использовать ограниченную кэш-память.
Многие процессоры RISC и VLIW предназначены для выполнения каждой инструкции (пока она находится в кеше) за один цикл. Это очень похоже на то, как процессоры с микрокодом выполняют одну микроинструкцию за цикл. Процессоры VLIW имеют инструкции, которые ведут себя аналогично очень широкому горизонтальному микрокоду, хотя обычно без такого детального контроля над оборудованием, который обеспечивается микрокодом. Инструкции RISC иногда похожи на узкий вертикальный микрокод.
Микрокод был популярен в процессорах специального назначения, таких как сетевые процессоры , процессоры цифровых сигналов , контроллеры каналов , контроллеры дисков , контроллеры сетевых интерфейсов , контроллеры флэш-памяти , графические процессоры и другое оборудование.
Микрооперации [ править ]
Современные реализации CISC, такие как семейство x86 , декодируют инструкции в микрооперации с динамической буферизацией с кодировкой инструкций, аналогичной RISC или традиционному микрокоду. Устройство декодирования проводных инструкций напрямую генерирует микрооперации для обычных инструкций x86, но возвращается к более традиционному ПЗУ микрокода, содержащему микрооперации для более сложных или редко используемых инструкций. [2]
Например, x86 может искать микрооперации из микрокода для обработки сложных многошаговых операций, таких как инструкции цикла или строки, с плавающей запятой трансцендентные функции или необычные значения, такие как денормальные числа , а также инструкции специального назначения, такие как CPUID .
См. также [ править ]
Примечания [ править ]
- ^ Процессоры IBM с горизонтальным микрокодированием имели несколько микропорядков и поля выбора регистров, которые требовали декодирования.
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б с Кент, Аллен; Уильямс, Джеймс Г. (5 апреля 1993 г.). Энциклопедия компьютерных наук и технологий: Том 28 – Приложение 13 . Марселя Деккера, Inc. Нью-Йорк: ISBN 0-8247-2281-7 . Архивировано из оригинала 20 ноября 2016 года . Проверено 17 января 2016 г.
- ↑ Перейти обратно: Перейти обратно: а б Туман, Агнер (2 мая 2017 г.). Микроархитектура процессоров Intel, AMD и VIA (PDF) (Отчет). Технический университет Дании. Архивировано (PDF) из оригинала 28 марта 2017 г. Проверено 8 апреля 2018 г.
- ^ «Серверы IBM pSeries — обновление микрокода для Ultrastar 73LZX (US73) 18/36 ГБ» . ИБМ . Архивировано из оригинала 19 апреля 2019 года . Проверено 22 января 2015 г.
- ↑ Перейти обратно: Перейти обратно: а б Оба, Дэвид (23 июля 2020 г.). «Центральный процессор (ЦП): его составные части и функциональные возможности» . Красная шляпа .
- ^ Пикенс, Джон. «Операционные коды NMOS 6502» . 6502.org .
- ↑ Перейти обратно: Перейти обратно: а б Ширрифф, Кен. «Как работает механизм микрокода процессора 8086» . Блог Кена Ширриффа .
- ^ Техническое описание системы VAX 9000 (PDF) . Корпорация цифрового оборудования . Май 1990 г., стр. 3-5–3-32. ЕК-КА90С-ТД-001.
- ^ Техническое описание системы VAX 8800, том 2 (PDF) . Корпорация цифрового оборудования . Июль 1986 г. EK-KA882-TD-PRE.
- ^ Мэннинг, Б.М.; Митби, Дж.С.; Николсон, Дж. О. (ноябрь 1979 г.). «Микропрограммный процессор, имеющий хранилище управления PLA» . Бюллетень технической информации IBM . 22 (6). Архивировано из оригинала 1 октября 2012 г. Проверено 10 июля 2011 г.
- ^ Часто обозначается хранилище управления ROM/PLA в контексте использования в ЦП; Супник, Боб (24 февраля 2008 г.). «J-11: четвертый и последний микропроцессор DEC PDP-11… имеет… хранилище управления ROM/PLA» . Архивировано из оригинала 9 июля 2011 г. Проверено 10 июля 2011 г.
- ^ «6502 изображения» . Архивировано из оригинала 4 марта 2016 года . Проверено 22 января 2015 г.
- ^ Функциональные характеристики IBM System/360 Model 50 (PDF) . ИБМ . 1967. с. 7. А22-6898-1 . Проверено 29 октября 2021 г.
- ^ Эверетт, РР; Суэйн, Ф.Е. (1947). Блок-схемы компьютера Whirlwind I (PDF) (Технический отчет). Лаборатория сервомеханизмов Массачусетского технологического института. Р-127. Архивировано из оригинала (PDF) 17 июня 2012 года . Проверено 21 июня 2006 г.
- ^
- Уилкс, Морис (1951). Лучший способ спроектировать автоматическую счетную машину (Технический отчет). Университет Манчестера .
- Уилкс, Морис (1989). «Лучший способ спроектировать автоматическую вычислительную машину» (PDF) . В Кэмпбелл-Келли, М. (ред.). Первые британские компьютерные конференции . МТИ Пресс. стр. 182–4. ISBN 978-0-262-23136-7 .
- ↑ Перейти обратно: Перейти обратно: а б Ширрифф, Кен. «Моделирование мэйнфрейма IBM 360/50 на основе его микрокода» . Блог Кена Ширриффа .
- ^ Супник, Боб (май 1988 г.). Микроархитектура СБИС VAX (PDF) . Цифровое оборудование.
- ^ Старнс, Томас (апрель 1983 г.). «Философия дизайна Motorola MC68000» . Байт .
- ↑ Перейти обратно: Перейти обратно: а б с Кок, Джон; Маркштейн, Виктория (январь 1990 г.). «Эволюция технологии RISC в IBM» (PDF) . Журнал исследований и разработок IBM . 34 (1): 4–11. дои : 10.1147/rd.341.0004 .
- ↑ Перейти обратно: Перейти обратно: а б Кларк, Дуглас; Стрекер, Уильям (сентябрь 1980 г.). «Комментарии к статье «Обоснование необходимости использования компьютера с сокращенными командами» » . АКМ . 8 (6): 34–38. дои : 10.1145/641914.641918 . S2CID 14939489 .
- ^ «Конвейер выполнения процессора Intel i486» . Дайджест статей Compcon Spring '90. Тридцать пятая международная конференция IEEE Computer Society по интеллектуальному использованию . Сан-Франциско, Калифорния: IEEE . дои : 10.1109/CMPCON.1990.63682 . ISBN 0-8186-2028-5 .
- ^ «Процессор Pentium Pro с частотой 150, 166, 180 и 200 МГц» (PDF) (техническое описание). Интел . Ноябрь 1995 года.
- ↑ Перейти обратно: Перейти обратно: а б «Часть I / Общая архитектура, Глава 6. Общая архитектура PALcode». Справочное руководство по архитектуре Alpha AXP (PDF) (второе изд.). Цифровая пресса . 1995. ISBN 1-55558-145-5 .
- ^ Роджерс, Боб (сентябрь – октябрь 2012 г.). «Что и почему zEnterprise Millicode» . Журнал IBM Systems . Архивировано из оригинала 9 октября 2012 года.
- ^ «Компьютер ЭМИДЕК 1100» . Emidec.org.uk. Архивировано из оригинала 12 июня 2010 года . Проверено 26 апреля 2010 г.
- ^ Функциональные характеристики IBM System/360 Model 25 (PDF) . ИБМ. Январь 1968 г. с. 22. А24-3510-0 . Проверено 29 октября 2021 г.
- ↑ Перейти обратно: Перейти обратно: а б с Теория работы полевой инженерии, процессор 2030, System / 360 Model 30 (PDF) (первое издание). ИБМ. Июнь 1967 года. Y24-3360-1. Архивировано (PDF) из оригинала 1 апреля 2020 г. Проверено 9 ноября 2019 г.
- ^ Эдвард А. Сноу; Дэниел П. Севиорек (1982). «Внедрение и оценка производительности семейства PDP-11» . У Дэниела П. Севёрека ; К. Гордон Белл ; Аллен Ньюэлл (ред.). Компьютерные структуры: принципы и примеры . Нью-Йорк, штат Нью-Йорк : Книжная компания McGraw-Hill . п. 671 . ISBN 0-07-057302-6 .
- ^ Солтис, Фрэнк (сентябрь 1981 г.). «Проектирование системы обработки данных малого бизнеса» . IEEE-компьютер . 14 : 77–93. дои : 10.1109/CM.1981.220610 . S2CID 398484 .
- ^ Фрэнк Г. Солтис (1997). Внутри AS/400, второе издание . Дьюк Пресс. ISBN 978-1882419661 .
- ^ «Интервью: Битва с N64 (Набу)» . ИГН64. 10 ноября 2000 года. Архивировано из оригинала 13 сентября 2007 года . Проверено 27 марта 2008 г.
- ^ «Индиана Джонс и адская машина» . ИГН . 12 декабря 2000 года. Архивировано из оригинала 27 сентября 2013 года . Проверено 24 сентября 2013 г.
- ^ Мейнинк, Тодд (28 июля 2000 г.). «Вскрытие: Resident Evil 2 от Angel Studios (версия для N64)» . Гамасутра . ООО «Юнайтед Бизнес Медиа» . Архивировано из оригинала 21 октября 2012 года . Проверено 18 октября 2010 г.
- ^ Справочное руководство по компьютерной системе Digital Scientific Meta 4 Series 16 (PDF) . Цифровая научная корпорация. Май 1971 года. 7032МО. Архивировано (PDF) из оригинала 14 января 2020 г. Проверено 14 января 2020 г.
- ^ Справочное руководство по постоянному запоминающему устройству (ПЗУ) компьютерной системы Digital Scientific Meta 4 (PDF) . Цифровая научная корпорация. Март 1970 года. 7024МО. Архивировано (PDF) из оригинала 23 сентября 2019 г. Проверено 14 января 2020 г.
- ^ Предварительное руководство по компьютерной системе Digital Scientific Meta 4 Series 16 (PDF) . Цифровая научная корпорация. Июнь 1970 г. 7006МО. Архивировано (PDF) из оригинала 23 сентября 2019 г. Проверено 14 января 2020 г.
- ^ Типичный список шаблонов ПЗУ компьютерной системы Digital Scientific Meta 4 и программа для моделирования набора инструкций IBM 1130 (PDF) . Цифровая научная корпорация. Январь 1970 г. М4/005П-170. Архивировано (PDF) из оригинала 24 марта 2020 г. Проверено 14 января 2020 г.
- ^ «Вестерн Диджитал 1600» . Антикварные технологии. Архивировано из оригинала 3 января 2017 года . Проверено 5 января 2017 г.
- ^ Хейс, Джон П. (1978). Компьютерная архитектура и организация . МакГроу-Хилл. п. 300. ИСБН 0-07-027363-4 .
- ^ Нил Харман; Энди Гимблетт (12 октября 2009 г.). «CS-323: Высокопроизводительные микропроцессоры – Глава 1. Микропрограммирование» . mat.uson.mx. Архивировано из оригинала 19 апреля 2015 г. Проверено 8 августа 2015 г.
- ^ Ваупель, Роберт (2013). Высокая доступность и масштабируемость сред мэйнфреймов на примере System z и z/OS . КИТ Научный. п. 26. ISBN 978-3-7315-0022-3 .
- ^ Роджерс, Боб (сентябрь – октябрь 2012 г.). «Что и почему zEnterprise Millicode» . Журнал IBM Systems . Архивировано из оригинала 16 октября 2013 г. Проверено 7 ноября 2013 г.
- ^ «Руководство по проектированию системы PALcode для микропроцессоров Alpha» (PDF) . Корпорация цифрового оборудования . Май 1996 г. Архивировано (PDF) из оригинала 15 августа 2011 г. Проверено 7 ноября 2013 г.
- ^ Спрут, Вильгельм (декабрь 2012 г.). Конструкция микропроцессора . Springer Science & Business Media. п. 31. ISBN 978-3-642-74916-2 . Архивировано из оригинала 20 ноября 2016 года . Проверено 18 января 2015 г.
- ^ Купман, Филип младший (1987). «Набор записываемых команд, стек-ориентированные компьютеры: концепция WISC» (PDF) . Журнал четвертого применения и исследований : 49–71. Архивировано (PDF) из оригинала 11 мая 2008 г.
- ^ Смит, Эрик (3 сентября 2002 г.). «Re: Каков был размер микрокода на разных машинах» . Группа новостей : alt.folklore.computers . Usenet: [электронная почта защищена] . Архивировано из оригинала 26 января 2009 года . Проверено 18 декабря 2008 г.
- ^ Смотерман, Марк. «CPSC 3300 / Душа новой машины» . Проверено 27 октября 2023 г.
4096 x 75-битная записываемая управляющая память SRAM: 74-битная микроинструкция с 1 битом четности (18 полей)
- ^ Принципы работы IBM System/370 (PDF) . Четвертое издание. ИБМ. Сентябрь 1974 г., стр. 98, 245. GA22-7000-4. Архивировано (PDF) из оригинала 29 февраля 2012 г. Проверено 27 августа 2012 г.
- ^ Функциональные характеристики IBM System/360 Model 85 (PDF) . ВТОРОЕ ИЗДАНИЕ. ИБМ. Июнь 1968 года. А22-6916-1 . Проверено 29 октября 2021 г.
- ^ Описание специальной функции IBM System/360 709/7090/7094 Функция совместимости для IBM System/360 Model 85 . Первое издание. ИБМ. Март 1969 г. GA27-2733-0.
- ^ Стиллер, Андреас; Пол, Матиас Р. (12 мая 1996 г.). «Процессор шепчет» . c't – журнал по компьютерным технологиям . Тенденции и новости (на немецком языке). Издательство Хейзе . Архивировано из оригинала 28 августа 2017 г. Проверено 28 августа 2017 г.
- ^ «9.11: Средства обновления микрокода». Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1 (PDF) . Интел . Сентябрь 2016.
- ^ Intel исправляет все последние процессоры и обещает аппаратные исправления для будущих чипов 8-го поколения, Пол Алкорн, 15 марта 2018 г.
- ^ «Загрузить файл данных микрокода процессора Linux*» . Архивировано из оригинала 19 марта 2018 г. Проверено 21 марта 2018 г.
- ^ «Утилита обновления микрокода Intel для Linux» . Архивировано из оригинала 26 февраля 2012 г.
- ^ «[порты] Индекс /head/sysutils/cpupdate» . Freebsd.org. Архивировано из оригинала 01 апреля 2020 г. Проверено 16 января 2020 г.
- ^ «Доступно обновление надежности микрокода, которое повышает надежность систем, использующих процессоры Intel» . Архивировано из оригинала 23 февраля 2008 г. Проверено 25 февраля 2008 г.
- ^ «Серверные продукты — требуется обновление BIOS, если во время POST появляется сообщение об отсутствующем микрокоде» . Интел . 24 января 2013 г. Архивировано из оригинала 1 сентября 2014 г.
- ^ «Руководство по техническому обслуживанию и ремонту компьютерной сети LR модели 990/12 LR» (PDF) . Bitsavers.org . Техасские инструменты . Проверено 15 февраля 2024 г.
- ^ Компьютер Texas Instruments Model 990 MDS-990. Руководство программиста системы разработки микрокода (изд. от 15 августа 1979 г.). Архив Texas Instruments, номер RG-20 94-08, Box 10, 45C. Библиотека ДеГольера, Южный методистский университет, Даллас, Техас, США.
{{cite book}}
: CS1 maint: местоположение ( ссылка )
Дальнейшее чтение [ править ]
- Смит, Ричард Э. (1988). «Исторический обзор компьютерной архитектуры» . Анналы истории вычислительной техники . 10 (4): 277–303. дои : 10.1109/MAHC.1988.10039 . S2CID 16405547 . Проверено 21 июня 2006 г.
- Смотерман, Марк (октябрь 2022 г.). «Краткая история микропрограммирования» . Проверено 27 октября 2023 г.
- Уилкс, М.В. (1986). «Генезис микропрограммирования» . Анналы истории вычислительной техники . 8 (2): 116–126. дои : 10.1109/MAHC.1986.10035 . S2CID 1978847 . Проверено 7 августа 2006 г.
- Уилкс, М.В. ; Стрингер, Дж. Б. (апрель 1953 г.). «Микропрограммирование и проектирование схем управления в электронной цифровой вычислительной машине» . Труды Кембриджского философского общества . 49 (ч. 2): 230–238. Бибкод : 1953PCPS...49..230W . дои : 10.1017/S0305004100028322 . S2CID 62230627 . Проверено 23 августа 2006 г.
- Хассон, СС (1970). Принципы и практика микропрограммирования . Прентис-Холл. ISBN 0-13-581454-5 .
- Такер, С.Г. (1967). «Микропрограммное управление для СИСТЕМЫ/360» . IBM Systems Journal . 6 (4): 222–241. дои : 10.1147/sj.64.0222 .
- Ширрифф, Кен (декабрь 2022 г.). «Как работает механизм микрокода процессора 8086» .
Внешние ссылки [ править ]
в этой статье Использование внешних ссылок может не соответствовать политике и рекомендациям Википедии . ( февраль 2017 г. ) |
- Компьютер с набором записываемых команд
- Конденсатор, доступный только для чтения
- Трансформатор, хранилище только для чтения
- Краткая история микропрограммирования
- Обновление безопасности микрокода процессора Intel (устраняет проблемы при запуске 32-битных виртуальных машин в режиме PAE)
- Заметки об обновлениях микрокода Intel , март 2013 г., Бен Хоукс, заархивировано из оригинала 7 сентября 2015 г.
- Дыра в статье Intel об устранении ошибок , EE Times , 2002, Александр Вульф, заархивировано из оригинала 9 марта 2003 г.
- Разоблачение Opteron: обратный инжиниринг обновлений микрокода AMD K8 , 26 июля 2004 г.
- WepSIM: онлайн-интерактивный образовательный симулятор, объединяющий микродизайн, микропрограммирование и программирование на языке ассемблера , 26 июля 2022 г.