Микрокод

редактировать

Микрокод - это компьютерный аппаратный метод, который устанавливает уровень между аппаратным CPU и программатором -Видимая архитектура набора команд компьютера. По существу, микрокод представляет собой уровень инструкций аппаратного уровня, которые реализуют инструкции более высокого уровня машинного кода или внутреннее упорядочение конечного автомата во многих элементов цифровой обработки. Микрокод используется в центральных процессорах общего назначения, хотя в современных настольных процессорах это лишь запасной путь для случаев, с более быстрым проводным блоком управления не может справиться.

Микрокод обычно находится в специальной высокоскоростной памяти и преобразует машинные инструкции, вводит конечного автомата или другой ввод в подробные операции на уровне схемы. Он отделяет машинные инструкции от лежащей в основе электроники, так что инструкции могут быть разработаны и более свободно. Это также облегчает построение сложных многоступенчатых инструкций, уменьшая сложность компьютерных схем. Запись микрокода часто называется микропрограммированием, а микрокод в реализации иногда процессора называют микропрограммой .

Более обширное микрокодирование позволяет эмулировать небольшие и простые микроархитектуры в более мощные архитектуры с более широкой длиной слова, большим количеством исполнительных блоков и т.д., простым способом достижения программной совместимости между различными продуктами семействе процессоров.

Некоторые поставщики оборудования, особенно IBM, используют термин микрокод как синоним прошивки. Таким образом, весь код устройства называется микрокодом, независимо от того, является ли он микрокодом или машинным кодом ; например, говорят, что для жестких дисков обновлен микрокод, хотя обычно они содержат и микрокод, и встроенное ПО.

Содержание
  • 1 Обзор
  • 2 Обоснование
    • 2.1 Преимущества
  • 3 История
  • 4 Примеры
  • 5 Реализация
    • 5.1 Горизонтальный микрокод
    • 5.2 Вертикальный микрокод
  • 6 Записываемое хранилище управления
  • 7 Сравнение с VLIW и RISC
  • 8 Micro Ops
  • 9 См. Также
  • 10 Примечания
  • 11 Ссылки
  • 12 Дополнительная литература
  • 13 Внешние ссылки
Обзор

Самый нижний уровень в стеке программного обеспечения обычно необработанным двоичным кодом машинный код инструкции для процессора. Микрокод находится на один уровень ниже этого. Чтобы избежать путаницы, каждый связанный с микропрограммой элемент различается префиксом микропрограммы: микрокоманда, микрокассемблер, микропрограмматор, микроархитектура и т. Д.

Инженеры обычно пишут микрокод на этапе проектирования процессора, сохраняя его структуру памяти (ROM) или программируемого логического массива (PLA) или постоянной в их комбинации. Однако также существуют машины, в которых хранится весь микрокод SRAM или флэш-память. Это традиционно обозначается как записываемое управляющее хранилище в контексте компьютеров, которое может быть либо постоянным только для чтения, либо памятью для чтения-записи. В последнем случае процесса инициализации ЦП загружает микод в хранилище управления с другого носителя данных, используя изменения микрокода для исправления ошибок в наборе команд или для реализации новых машинных команд.

Сложные цифровые процессоры также могут использовать более одного (возможно, основанного на микрокоде) блока управления для делегирования подзадач, которые должны быть по существу асинхронно параллельно. Программист высокого уровня или даже программист ассемблера обычно не видит и не меняет микрокод. В отличие от машинного кода, который часто поддерживает некоторую обратную совместимость между различными процессами в семействе, микрокод работает только на той электронной схеме, для которой он разработан, поскольку он составляет неотъемлемую часть конкретный дизайн самого процессора.

Микропрограммы состоят из серии микрокоманд, которые управляют процессором на очень фундаментальном уровне аппаратных. Например, одна типичная горизонтальная микрокоманда может определить следующие операции:

  • Подключить регистр 1 к стороне A ALU
  • Подключить регистр 7 к стороне B ALU
  • Установить АЛУ для выполнения двоения добавить
  • Установить вход переноса АЛУ на ноль
  • Сохранить значение результата в регистре 8
  • Обновить коды условий от флагов ALU (отрицательный, ноль, переполнение и перенос)
  • Microjump на micro PC nnn для следующей микрокоманды

Для одновременного управления всеми функциями процессора в одном цикле микрокоманда часто шире 50 бит; например, 128 бит на 360/85 с функцией эмулятора. Микропрограммы для быстрого выполнения микропрограммы выполнения к медленной машинной инструкции и производительности соответствующих прикладных программ, которые используют такие инструкции.

Обоснование

Микрокод изначально разработан как более простой метод разработки логики управления для компьютера. Первоначально наборы команд CPU были зашиты. Каждый шаг, необходимое для выборки, декодирование и выполнение машинных инструкций (включая любые операции операндов, считывание и запись) осуществлялся непосредственно комбинационной логикой и довольно минимальной схемой последовательного конечного автомата.. Хотя такие процессы с аппаратной связью были очень эффективными, необходимость в мощных наборах инструкций с многоэтапной адресацией и сложными операциями (см. Ниже) затрудняла их проектирование и отладку; Инструкции с высокой степенью кодирования и длины также используются электрические коды, особенно когда используются очень нерегулярные кодировки.

Микрокод упростил работу, позволяя определять большую часть поведения процессора и модели программирования с помощью подпрограмм микропрограмм, а не с помощью специальных схем. Даже на поздних этапах проектирования микрокода можно было легко изменить, тогда как конструкцию зашитого процессора было очень сложно изменить. Таким образом, это значительно облегчило конструкцию ЦП.

С 1940-х до конца 1970-х большая часть программирования выполнялась на языке ассемблера ; Команды более высокого уровня означают более высокую продуктивность программиста, поэтому важным преимуществом микрокода является относительная простота, с помощью которой можно определить мощные машинные команды. Конечным расширением является «непосредственно исполняемого языка высокого уровня», в котором каждый оператор языка высокого уровня, такого как PL / I, полностью и напрямую выполняется микрокодом, без компиляции. Примеры этого - Проект IBM Future Systems и Data General Fountainhead Processor. В течение 1970-х годов скорость ЦП росла, чем скорость памяти, и использовались методы быстрее, такие как передача блоков памяти, предварительная выборка памяти и многоуровневые кэши. чтобы облегчить это. Машинные инструкции высокого уровня, ставшие возможными благодаря микрокоду, помогли еще больше, поскольку меньшее количество более сложных машинных инструкций требует меньшего уровня пропускной способности памяти. Например, операция над символьной инструкцией как одна машинная инструкция, что позволяет избежать выборки нескольких инструкций.

Архитектуры с набором команд, реализованными сложными микропрограммами, включающими IBM System / 360 и Digital Equipment Corporation VAX. Подход со всеми более сложными наборами инструкций, реализуемых микрокодом, позже был назван CISC. Альтернативный подход, используемый во многих микропроцессорах, заключается в использовании PLA или ROM (вместо комбинационной логики) в основном для декодирования инструкций, и пусть простой конечный автомат (без большого количества микрокода или вообще без него) большую часть большого секвенирования. MOS Technology 6502 является примером микропроцессора, использующего PLA для декодирования и упорядочивания команд. PLA виден на микрофотографиях чипа, а его работу можно увидеть в моделировании на уровне транзистора.

Микропрограммирование все еще используется в современных конструкциях ЦП. В некоторых случаях после отладки микрокода в моделировании логические функции замены хранилищем управления. Логические функции часто быстрее и дешевле, чем эквивалентная память микропрограмм.

Преимущества

Микропрограммы процессора работают на более примитивной, совершенно другой и гораздо более ориентированной на оборудовании, чем инструкции сборки, видимые обычным программистам. В оснащении микрокод реализует электрическую среду, видимую программисту. Базовое оборудование не обязательно должно фиксированное отношение к окружающей средеуре. Это упрощает работу заданной архитектуры набора спектре базовых аппаратов микроархитектур.

IBM System / 360 имеет 32-битную архитектуру с 16 регистрами общего назначения, но в большинстве реализаций System / 360 фактически используется оборудование, реализующее более простую базовую микроархитектуру; например, System / 360 Model 30 имеет 8-битные пути данных к арифметико-логическому блоку (ALU) и основной памяти, а регистры общего назначения реализованы в высокоскоростном блоке основная память, а Система / 360 Модель 40 имеет 8-битные пути данных к ALU и 16-битные пути данных к основной памяти, а также реализованы регистры общего назначения в специальном блоке более высокоскоростной основной памяти. Модель 50 имеет полные 32-битные пути данных и реализует регистры общего назначения в специальном блоке высокоскоростной основной памяти. Модели от Model 65 до Model 195 имеют большие пути передачи данных и реализуют регистры общего назначения в более быстрых транзисторных схемах. Таким образом, микропрограммирование IBM System / 360 включает широкий диапазон стоимости и производительности, сделав это при этом все архитектурно совместимыми. Это снижает количество уникальных системных программ, которые необходимо написать для каждой модели.

Аналогичный подход был использован Digital Equipment Corporation (DEC) в их семействе компьютеров VAX. В результате разные процессоры VAX используют разные микроархитектуры, но видимая для программиста архитектура не меняется.

Микропрограммирование также снижает стоимость изменений полей для исправления дефектов (ошибок ) в процессоре; ошибку часто можно исправить путем замены части микропрограммы, а не путем внесения изменений в путем логику и проводку.

История

В 1947 году при разработке MIT Whirlwind была представлена ​​концепция управления как способ упростить компьютерный дизайн и выйти за рамки ad hoc. методы. Память управления представляет собой диодную матрицу : двумерную решетку, которая устанавливает одно измерение «импульсы времени управления» от внутренних часов ЦП, а другое подключается к сигналам управления на вентилях и других схемах. «Распределитель импульсов» берет импульсы, генерируемые тактовой переменной частоты, и разбивает их на восемь отдельных периодов, каждый из активируемых линий решетки. Когда строка активирована, она активирует управляющие сигналы, связанные с ней.

Если описать иначе, сигналы, передаваемые хранилищем управления, воспроизводятся так же, как и проигрыватель пианино ролл. То есть управляются последовательностью очень широких слов, составленных из битов, и они «они воспроизводятся» последовательностью. Однако в контрольном хранилище «песня» короткая и непрерывно повторяется.

В 1951 году Морис Уилкс расширил концепцию, добавив условное выполнение, концепцию, сродни условному в компьютерном программном секторе. Его первоначальная реализация состояла из пары матриц: первая генерирула сигналы в стиле управляющего хранилища Whirlwind, а вторая матрица выбирала, какую команду сигналов (так сказать, командное слово микропрограммы) вызывает в следующем цикле. Условные выражения были реализованы путем предоставления возможности выбора одной строки в хранилище элементов управления из альтернативного во второй матрице. Это сделало сигналы управления зависимыми от обнаруженного внутреннего сигнала. Уилкс ввел термин микропрограммирование, чтобы описать эту функцию и отличить ее от простого хранилища элементов управления.

Примеры
  • В EMIDEC 1100, по общему мнению, используется аппаратный накопитель управления, состоящий из проводов, пропущенных через ферритовые сердечники, известные как «шнурки».
  • Большинство моделей серии IBM System / 360 запрограммированы на микропрограммы:
    • Модель Модель 25 уникальна среди моделей System / 360 тем, что использует верхние 16 Кбайт памяти ядра для хранения управляющей память для микропрограммы. В 2025 году используется 16-битная микроархитектура с контрольными словами (или микрокомандами). После обслуживания системы или при изменении режима работы микрокод загружается с кардридера, ленты или другого устройства. Эмуляция IBM 1410 для этой модели загружается таким образом.
    • Модель 30 использует 8-битную микроархитектуру с аппаратными регистрами; все, что видел программист, эмулируется микропрограммой. Микрокод для этой модели также хранится на специальных перфокартах, которые хранятся внутри устройства в специальном считывающем устройстве для каждой карты, называемом блоками «CROS» (конденсаторное хранилище только для чтения). Дополнительный блок CROS добавлен для машин, заказанных с эмуляцией 1401/1440/1460, и для машин, заказанных с эмуляцией 1620.
    • Модель 40 использует 56-битные управляющие слова. В коробке 2040 реализованы как главный процессор System / 360, так и мультиплексный канал (процессор ввода-вывода). В этой модели используются специальные устройства TROS, аналогичные устройстваам «CROS», но с индуктивным датчиком (магазин только для чтения трансформатора).
    • Модель 50 имеет два внутренних канала данных, которые работают в параллельном: 32-битный путь данных, используемых для арифметических операций, и 8-битный путь данных, используемых в операционных операциях. Хранилище управления использует 90-битные микрокоманды.
    • Модель 85 имеет отдельные выборку команд (I-блок) и выполнение (E-блок) для обеспечения высокой производительности. I-блок управляется аппаратно. Электронный блок является микропрограммным; управляющие слова имеют ширину 108 бит на базовых моделях 360/85 и шире, если установлена ​​функция эмулятора.
  • NCR 315 микропрограммирован с помощью ферритовых сердечников, подключенных вручную (ROM ) импульсный секвенсор с условным исполнением. Провода, проложенные через ядро, позволяют использовать различные элементы данных и логические элементы в процессе.
  • Процессоры Digital Equipment Corporation PDP-11, за исключением PDP-11/20, являются
  • Большинство миникомпьютеров Data General Eclipse являются микропрограммированными. Написана написания микрокода для Eclipse MV / 8000 подробно описана в удостоенной Пулитцеровской программы книге под названием Душа новой машины.
  • Многие из Берроуза представляют собой микропрограммирование:
  • «Микропроцессор» »B700 выполняет операции прикладного уровня, используя 16-битные микрокоманд, хранящиеся в основной памяти; одна из 56-битных команд «нанокод», хранящаяся в постоянной памяти. Это позволяет сравнительно простому оборудованию действовать либо как периферийный контроллер мэйнфрейма, либо быть упакованным как отдельный компьютер.
  • B1700 реализован с другими устройствами, включая основную память с побитовой адресацией, но аналогичную многослойную организацию. Операционная система загружает интерпретатор для необходимого языка. Эти интерпретаторы представляют разные виртуальные машины для COBOL, Fortran и т. Д.
  • от Angel Studios. Векторные блоки VU0 и VU1 в Sony PlayStation 2 микропрограммируемый; фактически, VU1 доступен только через микрокод для нескольких первых поколений SDK.
  • The MicroCore Labs MCL86, MCL51 и MCL65 являются примерами высококодированных "вертикальных" реализаций микросеквенсоров Intel 8086/8088, 8051 и MOS 6502.
  • Компьютерная система Digital Scientific Corp. Meta 4 Series 16 была пользователем - микропрограммируемая система впервые появилась в 1970 году. Микрокод имел преимущественно вертикальный стиль с 32-битными микрокомандами. Инструкции хранились на сменных программных платах с сеткой битовых позиций. Один (1) бит был представлен маленькими металлическими квадратами, которые считывались усилителями, нулевые (0) биты - отсутствием квадратов. Система может быть сконфигурирована для хранения до 4К 16-битных слов. Одним из продуктов Digital Scientific был эмулятор для реализации IBM 1130.

. Каждая микрокоманда в микропрограмме предоставляет биты, которые управляют функциональными элементами, составляющими внутренний ЦП. Преимущество перед жестко зашитым ЦП состоит в том, что внутреннее управление ЦП становится специализированной формой компьютерной программы. Таким образом, микрокод превращает сложную задачу электронного проектирования (управление процессором) в менее сложную задачу программирования. Чтобы воспользоваться этим преимуществом, ЦП разделен на несколько частей:

  • A микросеквенсор выбирает следующее слово в управляющей памяти. Секвенсор в основном является счетчиком, но обычно также имеет способ перейти к другой части хранилища управления в зависимости от некоторых данных, обычно данных из регистра команд и всегда какой-то части хранилища управления. Самый простой секвенсор - это просто регистр, загруженный из нескольких битов управляющей памяти.
  • A регистр set - это быстрая память, содержащая данные центрального процессора. Он может включать в себя программный счетчик и указатель стека, а также может включать в себя другие регистры, которые не могут быть легко доступны для прикладного программиста. Часто набор регистров представляет собой файл регистров с тройным портом ; то есть два регистра могут быть прочитаны, а третий записан одновременно.
  • Арифметико-логический блок выполняет вычисления, обычно сложение,логическое отрицание, сдвиг вправо и логический А ТАКЖЕ. Он часто и другие функции.

Также может быть регистр адреса памяти и регистр данных памяти, используемый для доступа к основной памяти компьютерной памяти. Вместе эти элементы образуют «исполнительную единицу ». Большинство современных CPU имеют несколько исполнительных блоков. Даже простые компьютеры обычно имеют один блок для чтения и записи памяти, другой - для выполнения пользовательского кода. Эти элементы часто можно было объединить в одну микросхему. Этот чип имеет фиксированную ширину, которая образует «срез исполнительного блока». Они известны как микросхемы «битового среза ». Семейство AMD Am2900 - один из наиболее известных примеров элементов битового среза. Части исполнительных блоков и сами исполнительные блоки соединены связкой проводов, называемой шиной .

. Программисты разрабатывают микропрограммы, используя базовые программные инструменты. Микроассемблер позволяет программировать таблицу битов символически. Из-за его тесной связи в конструкции «микрокод имеет несколько свойств, затрудняют создание с помощью компилятора». Программа имитатора предназначена для выполнения битов таким же образом, как и электроника, и дает гораздо больше свободы для отладки микропрограммы. Она иногда используется в качестве входных данных для компьютерной программы. Эта программа аналогична тем, которые используются для оптимизации алгоритма логики . Даже без полностью оптимальной логики может значительно уменьшить количество транзисторов по сравнению с первым, необходимое для управляющего хранилища ПЗУ. Это снижает стоимость производства и потребление электроэнергии процессором.

Микрокод можно охарактеризовать как горизонтальный или вертикальный, имея в виду, в первую очередь, то, управляет ли каждая микрокоманда элементами ЦП с минимальным декодированием или без него (горизонтальный микрокод) или требует обширного декодирования с помощью комбинаторной логики перед этим (вертикальный микрокод). Следовательно, каждая горизонтальная микрокоманда шире (содержит больше битов) и занимает больше места для хранения, чем вертикальная микрокоманда.

Горизонтальный микрокод

«Горизонтальный микрокод имеет несколько дискретных микроопераций, которые объединены в одну микрокоманде для одновременной работы». Горизонтальный микрокод обычно содержится в довольно широком хранилище элементов управления; нередко каждое слово из 108 бит и более чем состоит. На каждом такте тактового генератора секвенсора слово микрокода считывается, кодируется и используется для управления функциональными элементами, составляющими ЦП.

В типичной реализации горизонтальное слово микропрограммы содержит довольно жесткие блоки группы битов. Например, одна простая схема может быть такой:

Источник регистра AИсточник регистра BРегистр назначенияАрифметико-логический блок операцияТип of jumpАдрес перехода

Для этого типа микромашины для реализации JUMP с адресом, следующим за кодом операции, микрокоду может потребоваться два такта часов. Инженер, вводящий его, напишет исходный код микроассемблера примерно так:

# Любая строка, начинающаяся со знака памяти числа, комментарий # Это просто метка, # как обычно метка символически добавить адрес. ИнструкцияJUMP: # Чтобы подготовиться к инструкции, микрокод декодирования инструкций уже # переместил счетчик программы в регистр адреса памяти. Эта инструкция извлекает # задача адрес инструкции перехода из слова перехода, следующего за # кодом операции перехода, путем копирования из регистра данных памяти в регистр адреса памяти. # Это дает систему памяти два такта для извлечения # инструкции в регистр данных памяти для использования при декодировании инструкций. # Команда секвенсора "next" означает просто прибавление 1 к адресу управляющего слова. MDR, NONE, MAR, COPY, NEXT, NONE # Это помещает адрес следующей инструкции в ПК. # Это дает память отсчет времени, чтобы завершить выборку, начатую # предыдущей микрокомандой. # Инструкция секвенсора предназначено для перехода к началу кодирования инструкций. MAR, 1, PC, ADD, JMP, InstructionDecode # Декодирование инструкций не показано, потому что это обычно беспорядок, # очень характерный для конкретного эмулируемого процессора. Даже этот пример упрощен. # Многие процессоры имеют несколько способов вычислить адрес, а не просто получить его # из слова, следующим за операционным кодом. Следовательно, вместо одной инструкции перехода # эти ЦП имеют семейство связанных инструкций.

Для каждого тика обычно обнаруживается, что используются только некоторые части ЦП, а остальные группы битов в микрокоманде не выполняются. При проектировании аппаратного обеспечения и микрокода это свойство можно использовать для распараллеливания операций, которые используют различные области ЦП; например, в приведенном выше случае ALU не требуется во время первого тика, поэтому его можно использовать для выполнения более ранней арифметической инструкции.

Вертикальный микрокод

В вертикальном микрокоде каждая микрокоманда закодирована, то есть битовые поля обычно проходят через промежуточную комбинаторную логику, которая, в свою очередь, генерирует фактические сигналы управления и элементы управления для внутренних элементов процессора ( АЛУ, регистры и т. Д.). Это контрастирует с горизонтальным микрокодом, в котором сами битовые поля либо используются сигналы управления и используются, либо кодируются только минимально. Следовательно, вертикальный микрокод требует уменьшения длины инструкций и меньшего объема памяти, но требует больше времени для декодирования, что приводит к более эффективной тактовой частоте ЦП.

Некоторые вертикальные микрокоды - это просто язык ассемблера простого обычного компьютера, который имитирует более сложный компьютер. Некоторые процессоры, такие как процессоры DEC Alpha и микропроцессоры CMOS на более поздних мэйнфреймах IBM System / 390 и мэйнфреймах z / Architecture, используют машинный код, работающий в специальном режим, который предоставляет ему доступ к специальным инструкциям, специальным регистрам и другим аппаратным ресурсам, недоступным для обычного машинного кода, для реализации некоторых инструкций и других функций, таких как обход таблиц страниц на процессорах Alpha. Это называется PALcode на процессорах Alpha и милликодом на процессорах мэйнфреймов IBM.

Другая форма вертикального микрокода имеет два поля:

Выбор поляЗначение поля

Выбор поля выбирает, какая часть ЦП будет управляться этим словом управляющего хранилища.. Значение поля фактически контролирует эту часть ЦП. Используя этот тип микрокода, явно выбирает более медленный процессор, чтобы сэкономить деньги за использование неиспользуемых битов в хранилище управления; однако уменьшенная сложность может увеличить тактовую частоту ЦП, что уменьшает эффект увеличения количества циклов на инструкции.

По мере удешевления транзисторов горизонтальный микрокод стал доминировать в конструкции процессоров, использующих микрокод, а вертикальный микрокод использовался реже.

Когда используются как вертикальный, так и горизонтальный микрокод, горизонтальный микрокод может называться нанокодом или пикокодом.

Записываемое хранилище управления

Несколько компьютеров были построены с использованием записываемого микрокода ». В этой конструкции, вместо того, чтобы хранить микрокод в ПЗУ или аппаратной логике, называемое записываемым хранилищем управления или WCS. Такой компьютер иногда называют записываемым компьютером с набором команд или WISC.

Многие экспериментальные прототипы компьютеров используют записываемые управляющие хранилища; есть также коммерческие машины, использующие записываемый микрокод, такие как Burroughs Small Systems, ранние рабочие станции Xerox, DEC VAX 8800 ("Nautilus "), L- и G-машины Symbolics, ряд реализаций IBM System / 360 и System / 370, некоторые DEC PDP-10 и Data General Eclipse MV / 8000.

Многие машины другие вызываются в качестве опции программируемые хранилища управления с помощью записи, включая HP 2100, DEC PDP-11/60 и Varian Data Machines Серия V-70 миникомпьютеры. IBM System / 370 включает в себя средство под названием Initial-Microprogram Load (IML или IMPL), которое можно вызвать с консоли, как часть сброса при включении (POR) или из другого процессора в плотно связанном многопроцессорный комплекс.

Некоторые коммерческие машины, например IBM 360/85, имеют как хранилище только для чтения, так и управляющее хранилище с записи для микрокода.

WCS предлагает несколько преимуществ, включая простоту исправления микропрограмм и для определенных поколений оборудования, более быстрый доступ, чем может обеспечить ROM. Программируемая система WCS позволяет оптимизировать машину для конкретных целей.

Начиная с Pentium Pro в 1995 году, несколько процессоров x86 получили возможность записи Intel Microcode. Это, например, может исправить ошибки в микрокодах Intel Core 2 и Intel Xeon путем исправления их микропрограмм, вместо того, чтобы требовать замены всего чипа. Вторым ярким примером является набор исправлений микрокода, который Intel предложила для некоторых из своих процессорных архитектурных возрастов до 10 лет, чтобы противостоять уязвимостям безопасности, обнаруженным в их проектах - Spectre и Meltdown - который стал публичным в начале 2018 года. Обновление микрокода может быть установлено в Linux, FreeBSD, Microsoft Windows или BIOS материнской платы.

Сравнение с VLIW и RISC

Тенденция разработки процессоров с сильным микрокодированием и сложными инструкциями началась в начале 1960-х годов и продолжалась примерно до середины 1980-х. С этого момента философия дизайна RISC стала более заметной.

ЦП, который использует микрокод, обычно требует несколько тактов для выполнения одной инструкции, по одному тактовому циклу для каждого шага микропрограммы для этой инструкции. Некоторые процессоры CISC содержат инструкции, выполнение которых может занять очень много времени. Такие вариации как влияние на задержку прерывания, так и, что более важно в современных системах, конвейерная обработка.

При новом процессоре проводное управление RISC имеет следующие преимущества передрокодированными CISC:

  • Программирование в степени отошло от уровня сборки.
  • Более простые наборы инструкций позволяют выполнять аппаратное обеспечение, избегая производительности в виде выполнения с микрокодированием.
  • Анализ показывает, что сложные инструкции используются редко, следовательно, машинные ресурсы, выделенные для них, в степени тратятся впустую.
  • Машинные ресурсы, выделенные для редко используемых сложных инструкций, лучше использовать для ускорения выполнения более простые, часто используемые инструкции.
  • Сложные микрокодированные инструкции могут потребовать много тактовых циклов, которые меняются, и их трудно конвейерно для повышения производительности.

Также есть противоположности:

  • В сложных инструкциях по реализации с сильным микрокодированием могут не потребовать много дополнительных машинных ресурсов, за исключением пространства микрокода. Например, один и тот же ALU часто используется для эффективных способов решения задач на основе фактических операндов (например, исходный Z80, 8086 и других).
  • Более простые инструкции, не относящиеся к RISC (т. Е. С использованием операндов памяти ), используются часто современными компиляторами. Обычно используются арифметические операции даже непосредственно в стек (т. Е. Результат в памяти). Хотя такие операции с памятью, часто с кодировкой различной длины, сложнее конвейеризовать, это все еще вполне выполнимо - наглядным примером является i486, AMD K5, Cyrix 6x86, Motorola 68040 и т. Д.
  • Инструкции без RISC по своей сути выполняют больше работы на инструкцию (в среднем), а также обычно имеют высокую степень кодирования, поэтому они позволяют меньше в целом размер одной и той же программы, и, следовательно, лучшее использование ограниченной кэш-памяти.

Многие процессоры RISC и VLIW предназначены для выполнения каждой инструкции (пока она находится в кэше) за один цикл. Это очень похоже на то, как процессоры с микрокодом выполняют одну микрокоманду за цикл. У процессоров VLIW есть инструкции, которые ведут себя аналогично очень широкому горизонтальному микрокоду, хотя, как правило, без такого детального контроля над оборудованием, который обеспечивается микрокодом. Инструкции RISC иногда похожи на узкий вертикальный микрокод.

Микрокодирование было популярно в процессорах для конкретных приложений, таких как сетевые процессоры, микроконтроллеры, процессоры цифровых сигналов, контроллеры каналов, контроллеры дисков, контроллеры сетевого интерфейса, блоки обработки графики и другое оборудование.

Micro Ops

Современные реализации CISC, такие как семейство x86, декодируют инструкции в динамически буферизованные микрооперации ("μops") с кодирование инструкций аналогично RISC или традиционному микрокоду. Устройство аппаратного декодирования инструкций Непосредственно выдает μops для общих инструкций x86, но возвращается к более традиционному ПЗУ для более сложных или редко используемых инструкций.

, x86 может искать μops из микрокода для обработки многоступенчатых операций, таких как цикл или строковые инструкции, блок с плавающей запятой трансцендентные функции или необычные значения, такие как денормальные числа, и инструкции специального назначения, такие как CPUID.

См. также
  • значок Портал электроники
Примечания
Ссылки
Дополнительная литература
Внешние ссылки
Найдите микрокод в Викисловарь, бесплатном подходе
Последняя правка сделана 2021-05-30 10:02:18
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте