Микрокод

Материал из Википедии ? свободной энциклопедии
Перейти к навигации Перейти к поиску

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

На большинстве компьютеров , использующих микрокод, он присутствует не в основной памяти , а в специальной быстродействующей памяти ( англ.   control store ), как например, в наборе микросхем 588 серии с АЛУ КА588ВС2 и ПЗУ управляющей памяти КА588ВУ2. Эта память может допускать только чтение либо чтение-запись; в последнем случае микрокод может быть загружен из постоянной памяти в процессе запуска процессора. Возможность изменения микрокода позволяет исправлять найденные ошибки и добавлять реализацию новых инструкций. Микрокод также позволяет настроить микроархитектуру компьютера на эмуляцию другой (как правило, более сложной) архитектуры .

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

  • Подсоединить регистр 1 ко входу A АЛУ ;
  • Подсоединить регистр 7 ко входу B АЛУ;
  • Настроить АЛУ на выполнение операции сложения;
  • Установить разряд переноса АЛУ в ноль;
  • Сохранить результат операции в регистр 8;
  • Обновить коды состояния из флагов АЛУ (≪Отрицательное≫, ≪Ноль≫, ≪Переполнение≫, ≪Перенос≫);
  • Установить указатель микрокоманд на микроинструкцию номер nnn.

Для того, чтобы одна микроинструкция могла описывать весь этот набор, микроинструкции часто делаются довольно ≪широкими≫, например, длиной в 56 битов или даже больше. Микроинструкции, или микрокоманды, в свою очередь, инициируют так называемые микрооперации. Микрооперации ? это и есть элементарные преобразования над данными; в качестве примеров можно привести следующие:

  1. скопировать операнд в регистр;
  2. установить флаг в 1;
  3. выставить операнд на шину;
  4. увеличить содержимое верхушки стека на 1, и т. д.

Причины появления и использования

[ править | править код ]

Подход микропрограммирования процессоров (микрокода) был предложен в 1953 году Вилксом и Стрингером [1] .

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

Использование микропрограмм также смягчило проблему пропускной способности памяти. В 1970-х рост скорости процессора намного обгонял рост скорости памяти. Некоторые способы ускорения, такие как многоуровневые кэши , несколько смягчали проблему, но не решали её. Использование микрокода здесь очень помогло, поскольку меньшее количество более сложных инструкций требовало меньшего обмена с памятью. Например, если вся операция над строкой символов выполняется одной машинной инструкцией, то во время её выполнения не требуется выбирать из памяти другие инструкции.

Список архитектур, использующих принцип микрокода, включал в себя IBM System/360 и DEC VAX , набор команд которых был реализован с помощью сложных микропрограмм. Подход, при котором используются всё более сложные микрокодные инструкции, был позже назван CISC .

Движение по созданию RISC иногда рассматривают как противников микрокодируемых архитектур, но лишь ранние RISC-процессоры не использовали микрокод, а в более поздних он мог применяться [1] .

Примечания

[ править | править код ]