АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ
Принципы реализации микропроцессоров
Принципы микропрограммного управления
В условиях, когда микропрограммирование не используется, выполнение команды обеспечивается электрической схемой. Но в большинстве современных вычислительных машин непосредственная связь между аппаратурой и программными средствами осуществляется через микропрограммный уровень. Любая машинная команда исполняется аппаратурой не непосредственно, а путем ее интерпретации в соответственную последовательность более простых действий. А значит, всегда существует задача программирования машинных команд из более простых действий — микропрограммирование. Впервые этот термин был введен в 1953 г. специалистом по ВТ Уилксом. Но это было применимо только к аппаратным средствам. Примерно в середине 1960-х гг. усилиями разработчиков «1ВМ» идеи Уилкса превратились в принцип организации вычислительных машин.
Микропрограммирование обеспечило переход к модульному построению ЭВМ. Развивая идеи микропрограммирования, Глушков показал, что в любом устройстве обработки информации функционально можно выделить операционный автомат и управляющий автомат (рис. 4.1).

Рис. 4.1. Схема устройства обработки информации
Управляющий блок предназначен для обеспечения работы всех узлов и устройств ЭВМ в соответствии с выполняемой программой. Основные функции управляющего блока:
- • организация пуска и остановки ЭВМ;
- • определение очередности выбора команд из оперативной памяти;
- • формирование физических адресов операндов;
- • формирование последовательности управляющих сигналов для выполнения арифметических, логических и иных операций при выполнении программы;
- • обеспечение работы ЭВМ в различных режимах;
- • автоматическое выполнение программы;
- • пошаговое выполнение программы;
- • режим прерывания;
- • режим прямого доступа к памяти и т.д.
На рис. 4.2 приведена обобщенная структура устройства управления (УУ).

Рис. 4.2. Обобщенная структура УУ
ЦУУ — центральное УУ, которое выполняет основные функции по реализации программы.
МУУ — местное УУ (находится при каждом из устройств, входящих в состав ЭВМ). Оно реализует специфические алгоритмы, соответствующие принципам действия различных внешних устройств.
ВЗУ — внешнее запоминающее устройство.
Иерархическая структура понятий при постановке задач на ЭВМ представлена на рис. 4.3.
Алгоритм — это система последовательных операций (в соответствии с определенными правилами) для решения поставленной задачи.
Программа — кодированная запись алгоритма.
Команда — кодированная запись вычислительной, логической или иной операции. В устройствах ЭВМ команда физически выполняется с помощью микроопераций.

Рис. 4.3. Иерархическая структура понятий при постановке задач на ЭВМ
Микрооперация — некоторое простейшее преобразование данных, например прием байта данных в регистр, инверсия переменной и т.д.
Порядок функционирования устройства базируется на следующих положениях.
- 1. Любая машинная команда рассматривается как некоторое сложное действие, которое состоит из последовательности элементарных действий над словами информации — микроопераций.
- 2. Порядок следования микроопераций зависит не только от значений преобразуемых слов, но также от их информационных сигналов, вырабатываемых операционным автоматом. Примерами таких сигналов могут быть признаки результата операции, значения отдельных битов данных и т.п.
- 3. Процесс выполнения машиной команды описывается в виде некоторого алгоритма в терминах микроопераций и логических условий. Описание информационных сигналов — микропрограмма.
- 4. Микропрограмма служит не только для обработки данных, но и обеспечивает управление работой всего устройства в целом — принцип микропрограммного управления.
Таким образом, основная задача уровня микроархитектуры — интерпретация команд второго уровня архитектуры команд (см. рис. 1.2). На этом уровне регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. На некоторых машинах работа тракта данных контролируется особой программой, которая называется микропрограммой. На других машинах тракт данных контролируется аппаратными средствами. Строение уровня микроархитектуры зависит от уровня архитектуры команд, а также от стоимости и назначения компьютера.
Однако до недавнего времени этот принцип микропрограммного управления в вычислительных машинах широкого применения не находил. Объясняется это несколькими причинами. С одной стороны, не существовали достаточно надежные и дешевые быстродействующие запоминающие устройства для хранения микропрограмм; с другой стороны, неправильно понимались задачи микропрограммирования и те выгоды, которые оно может принести. Предполагалось, что главная ценность микропрограммирования состоит в том, что каждый потребитель может сконструировать себе из микропрограмм тот набор команд, который наиболее выгоден для его конкретной задачи. Переход от одного набора команд к другому достигался бы путем простой замены информации в запоминающем устройстве без физического переконструирования устройства.
Чтобы освободить программиста от необходимости детально изучать устройство машины, необходимо использовать методы автоматического программирования и в максимальной степени приблизить язык программирования к языку человека. И уже с 1970 г., когда микропрограммирование стало обычным, у производителей появилась возможность вводить новые машинные команды путем расширения микропрограммы, т.е. с помощью программирования. Это открытие привело к виртуальному взрыву в производстве программ машинных команд, поскольку производители начали конкурировать друг с другом, стараясь выпустить лучшие программы. Эти команды не представляли особой ценности, поскольку те же задачи можно было легко решить, используя уже существующие программы, но обычно они работали немного быстрее.
Связь с микрокодом и архитектурой
набора команд
Как было сказано выше (см. п. 1.2), в компьютерной инженерии микроархитектура, также называемая организацией компьютера, — это способ, которым данная архитектура набора команд (АНК) реализована в процессоре. Каждая АН К может быть реализована с помощью различных микроархитектур. Реализация может варьироваться в зависимости от целей конкретной разработки или в результате технологических сдвигов. Архитектура компьютера является комбинацией микроархитектуры, микрокода и архитектуры набора команд.
Архитектура набора команд (англ, instruction set architecture, ISA) определяет программируемую часть ядра микропроцессора.
Микроархитектура описывает модель, топологию и реализацию архитектуры набора команд на микросхеме микропроцессора. На этом уровне определяется:
- • конструкция и взаимосвязь основных блоков центрального процессора;
- • структура ядер, исполнительных устройств, АЛУ, а также их взаимодействия;
- • блоки предсказания переходов;
- • организация конвейеров;
- • организация кэш-памяти;
- • взаимодействие с внешними устройствами.
В рамках одного семейства микропроцессоров микроархитектура со временем расширяется путем добавления новых усовершенствований и оптимизации существующих команд с целью повышения производительности, энергосбережения и функциональных возможностей микропроцессора. При этом сохраняется совместимость с предыдущей версией 15А. Во многих случаях работа элементов микроархитектуры контролируется микрокодом, встроенным в процессор. В случае наличия слоя микрокода в архитектуре процессора он выступает своеобразным интерпретатором, преобразуя команды уровня АНК в команды уровня микроархитектуры. При этом различные системы команд могут быть реализованы на базе одной микроархитектуры.
Микроархитектура машины обычно представляется в виде диаграмм определенной степени детализации, описывающих взаимосвязи различных микроархитектурных элементов, которые могут быть чем угодно: от отдельных вентилей и регистров до целых арифметико-логических устройств и даже более крупных элементов. На этих диаграммах обычно выделяют тракт данных (где размещены данные) и тракт управления (который управляет движением данных).
Машины с различной микроархитектурой могут иметь одинаковую АНК и, таким образом, быть пригодными для выполнения тех же программ. Новые микроархитектуры и/или схемотехнические решения вместе с прогрессом в полупроводниковой промышленности являются тем, что позволяет новым поколениям процессоров достигать более высокой производительности, используя ту же АНК.
В настоящее время на уровне микроархитектуры команд обычно находятся простые команды, которые выполняются за один цикл (таковы, в частности, Я^С-машины). В других системах (например, в Репйит 4) на этом уровне имеются более сложные команды; выполнение одной такой команды занимает несколько циклов. Чтобы выполнить команду, нужно найти операнды в памяти, считать их и записать полученные результаты обратно в память. Управление уровнем команд со сложными командами отличается от управления уровнем команд с простыми командами, так как в первом случае выполнение одной команды требует определенной последовательности операций.
Команды микропроцессора, в отличие от микрокоманд, разрабатываются независимо от аппаратуры микросхемы, поэтому их разрядность обычно совпадает с разрядностью микропроцессора. Команда микропроцессора состоит из инструкции и обозначается — код операции, КОП (или INS в англоязычной литературе). Команда микропроцессора может состоять только из кода операции, когда не требуется указывать адрес операнда (операнды — это данные, над которыми команда производит какое-либо действие), или может состоять из кода операции и адресов операндов или данных. Форматы команд очень сильно зависит от структуры процессора.
Рассмотрим построение команд для восьмиразрядного процессора, построенного по структуре фон-Неймана. Примеры построения команд для такого процессора приведены на рис. 4.4.

Однобайтовая команда Двухбайтовая команда
Трехбайтовая команда
Четырехбайтовая команда
Рис. 4.4. Форматы различных команд микропроцессора
Если для кода операции используется восьмибитное слово (байт), то при помощи этого слова можно закодировать 256 операций. В процессе разработки системы команд для операции может быть назначен любой код. Именно системой команд и определяется конкретное семейство процессоров. Однобайтовые команды позволяют работать с внутренними программно-доступными регистрами процессора.
Для выполнения одной и той же операции над разными регистрами процессора назначаются разные коды. Запоминать эти коды очень утомительно для человека. При программировании в машинных кодах легко совершить ошибку и очень трудно найти ее, особенно если коды различаются только на один бит. Для сокращения объема записи вместо двоичного можно воспользоваться шестнадцатеричным кодом, однако это не увеличивает наглядности программы. Фрагмент исполняемого кода микропроцессора приведен в листинге 4.1.
Листинг 4.1
Фрагмент исполняемого кода микропроцессора
7 5CBFF75CAFB75CDFF75CCFB75985275 С 8 3 4D2 8875D2 4А7 5 D3 2075D50175330E 75345975A60175A11375D13230DFFD20 892 9E5DB9 533C2D712 О 0F8E5DA9 534С2 D712 О 0F8E5DD12 О 0F8E5DC12 00F89001 181200D8B2B41200CF80CEC289E5DB94
Чтобы уменьшить объем запоминаемой информации и увеличить наглядность исходного текста программы, каждой операции процессора придумывают мнемоническое обозначение. В качестве мнемонического обозначения операции обычно используют сокращения английских слов, обозначающих эту операцию. Например, для операции копирования используется мнемоническое обозначение MOV; для операции суммирования используется мнемоническое обозначение ADD; для операции вычитания используется мнемоническое обозначение SUB для операции умножения используется мнемоническое обозначение MUL и т.д.
Для полного обозначения команды используется мнемоническое обозначение операции и используемые ею операнды, которые перечисляются через запятую. При этом в большинстве процессоров операнд — приемник информации записывается первым, а операнд — источник информации — вторым. Например:
- • MOV R0, А Скопировать содержимое регистра А в регистр R0;
- • ADDA, R5 Просуммировать содержимое регистров R5 и А, результат поместить в регистр А.
Приведенные выше команды — это однобайтовые команды, так как в них используются только внутренние регистры процессора. Если в команде используется константа в качестве операнда или указывается адрес операнда в системной памяти, то команда будет занимать в системной памяти два или три байта. Например:
- • MOV А, 1025; Скопировать содержимое 1025 ячейки памяти в регистр Л;
- • ADD А, #110; Просуммировать содержимое регистра А с числом ПО.
Несмотря на то что общий объем исходного текста программы увеличивается, скорость написания и, особенно, отладки программ в таком виде возрастает. Теперь вместо одного текста программы в памяти компьютера или на бумаге придется хранить два текста: один для человека, который в дальнейшем будем называть исходным текстом программы; другой для микропроцессора, который в дальнейшем будем называть загрузочным модулем.
Преобразование программы, записанной в мнемоническом виде, в машинные коды является рутинной работой, которую можно поручить компьютерной программе. Язык программирования, в котором для обозначения машинных команд используются мнемонические обозначения, называется ассемблером. Точно так же называют и программу или пакет программ, которые осуществляют трансляцию (преобразование) исходного текста программы (исходный модуль) в машинные коды (загрузочный модуль).
Основные направления развития микропроцессоров
В общем случае все центральные процессоры, одночиповые микропроцессоры и многочиповые реализации выполняют программы, производя следующие шаги:
- 1) чтение инструкции и ее декодирование;
- 2) поиск всех связанных данных, необходимых для обработки инструкции;
- 3) обработка инструкции;
- 4) запись результатов.
Эта последовательность выглядит просто, но осложняется тем фактом, что иерархия памяти (где располагаются инструкции и данные), которая включает в себя кэш, основную память и энергонезависимые устройства хранения, такие как жесткие диски, всегда была медленнее самого процессора. Шаг 2 часто привносит длительные (по меркам центрального процессора) задержки, пока данные поступают по компьютерной шине.
В настоящее время существуют два направления развития микропроцессоров:
- • RISC-процессоры (процессоры с сокращенным набором команд);
- • С/5С-процессоры (процессоры с полным набором команд).
Микропроцессоры с архитектурой RISC (Reduced Instruction Set
Computers) используют сравнительно небольшой (сокращенный) набор наиболее употребляемых команд, определенный в результате статистического анализа большого числа программ для основных областей применения С/5С-процессоров исходной архитектуры. Все команды работают с операндами и имеют одинаковый формат. Обращение к памяти выполняется с помощью специальных команд загрузки регистра и записи. Простота структуры и небольшой набор команд позволяют реализовать полностью их аппаратное выполнение и эффективный конвейер при небольшом объеме оборудования. Арифметику /?/5С-процессоров отличает высокая степень дробления конвейера. Этот прием позволяет увеличить тактовую частоту (а значит, и производительность) компьютера. Чем более элементарные действия выполняются в каждой фазе работы конвейера, тем выше частота его работы. /?/5С-процессоры с самого начала ориентированы на реализацию всех возможностей ускорения арифметических операций, поэтому их конвейеры обладают значительно более высоким быстродействием, чем в С/5С-процессорах. Поэтому RISC-процессоры в 2—4 раза быстрее имеющих ту же тактовую частоту С/АС-процессоров с обычной системой команд и более высокопроизводительны, несмотря на больший размер программ. RISC-архитектура построена на четырех основных принципах.
- 1. Любая операция должна выполняться за один такт вне зависимости от ее типа.
- 2. Система команд должна содержать минимальное количество наиболее часто используемых простейших инструкций одинаковой длины.
- 3. Операции обработки данных реализуются только в формате «регистр—регистр» (операнды выбираются из оперативных регистров процессора, и результат операции записывается также в регистр, а обмен между оперативными регистрами и памятью выполняется только с помощью команд загрузки/записи).
- 4. Состав системы команд должен быть удобен для компиляции операторов языков высокого уровня.
Усложнение /?/5С-процессоров фактически приближает их архитектуру к С/АС-архитектуре.
В настоящее время число процессоров с /?/5С-архитектурой существенно возросло и все ведущие фирмы США их производят, в том числе фирмы «Intel», «Motorola» — производители основных семейств процессоров с С/5С-архитектурой.
Микропроцессоры с архитектурой CISC (Complex Instruction Set Computers — архитектура вычислений с полной системой команд) реализуют на уровне машинного языка комплексные наборы команд различной сложности — от простых, характерных для микропроцес-
сора первого поколения, до очень сложных. Большинство современных процессоров для персональных компьютеров построено по архитектуре С/5С.
В последнее время появились гибридные процессоры, которые имеют систему команд С/5С, однако внутри преобразовывают их в цепочки Л/^С-команд, которые и исполняются ядром процессора.
Постепенное усложнение С/ЗС-процессоров происходит в направлении более совершенного управления машинными ресурсами, а также в направлении сближения машинных языков с языками высокого уровня.
В то же время сложная система команд и переменный формат команды процессоров с С/^С-архитектурой привели к быстрому росту сложности схем. Для того чтобы такие процессоры вообще могли работать с приемлемым энергопотреблением и размещаться на ограниченной площади, производители работают над миниатюризацией транзисторов.
В качестве примера внутреннего устройства микропроцессора рассмотрим устройство процессора с полным набором команд. Здесь будет рассматриваться упрощенная модель процессора для облегчения понимания работы. СУ^С-микропроцессор состоит из двух частей:
- • обрабатывающего блока;
- • блока микропрограммного управления.
Блок обработки микропроцессора (операционный блок)
Блок обработки сигналов предназначен для считывания команд из системной памяти и выполнения считанных команд. Эти действия он осуществляет под управлением блока микропрограммного управления, который формирует последовательность микрокоманд, необходимую для выполнения команды. Схема одного из вариантов построения блока обработки сигналов приведена на рис. 4.5.
В этой схеме явно просматривается, что отдельные биты микрокоманды (показанной внизу схемы) управляют различными блоками обработки сигналов (БОС), поэтому их можно рассматривать независимо друг от друга. Такие группы бит называются полями микрокоманды и составляют формат этой микрокоманды. Кроме бит, управляющих блоком обработки сигналов, есть биты, управляющие блоком микропрограммного управления. Формат микрокоманды рассматриваемого процессора приведен на рис. 4.6. Результат выполнения микрокоманды записывается по сигналу общей синхронизации сб к.

CONST AS BS K,PI,M RS Z,C,OV,N
Рис. 4.5. Операционный блок микропроцессора
Основным принципом работы любого цифрового устройства с памятью, в том числе и микропроцессора, является наличие цепи синхронизации. Этот сигнал, как и цепь питания, подводится к любому регистру цифрового устройства.
Для хранения и декодирования выполняемой команды выделим 8-разрядный регистр, который назовем RI.
Для реализации более простой системы команд выберем аккумуляторный процессор. Соответственно необходимо один из регистров выделить в качестве аккумулятора ЛСС.
Так как мы выбрали для примера 8-разрядный микропроцессор, то и все регистры в этом процессоре 8-разрядные. Максимальное число, которое можно записать в такой регистр, — 255, но для большинства программ такого объема памяти недостаточно. В приведенной на рис. 4.5 схеме, для того чтобы получить 16-разрядный адрес, используется два 8-разрядных регистра адреса. Теперь максимальное число, которое можно записать в этих двух регистрах, будет 65535, что вполне достаточно для записи программ и обрабатываемых ими данных. Для того чтобы различать регистр старшего и младшего байта адреса, обозначим их как РСН — старший байт и PCL — младший байт. Это позволяет при помощи 8-разрядного АЛУ формировать 16-разрядный адрес.
Программный счетчик хранит текущее значение ячейки памяти, из которой считывается команда, но процессор может обращаться и к данным, поэтому для формирования адреса выделим еще пару регистров: RAH — старший байт и RAL — младший байт. Выходы этих регистров выведем за пределы микросхемы и будем использовать в качестве 16-разрядной шины адреса.
Еще один регистр используется для формирования сигналов управления системной шины микропроцессора. В простейшем случае это сигналы записи (WR) и чтения (RD). Для формирования необходимых сигналов достаточно записывать в определенный бит регистра логический ноль или единицу. Определим формат регистра управления. Пусть нулевой бит этого регистра будет сигналом записи, а первый бит этого регистра будет сигналом чтения. Остальные биты этого регистра пока не важны. Полученный формат приведен на рис. 4.6.
7 6 5 4 3 2 1 0
Рис. 4.6. Формат регистра управления (СЯ)
Блок микропрограммного управления микропроцессора
Блок микропрограммного управления предназначен для формирования последовательности микрокоманд блока обработки сигналов. В простейшем случае его можно построить на счетчике с возможностью предзаписи и ПЗУ. Схема такого блока приведена на рис. 4.7.
5

Рис. 4.7. Блок микропрограммного управления микропроцессора
В этой схеме адрес очередной микрокоманды формирует двоичный счетчик. Если требуется осуществить безусловный или условный переход, то новый адрес записывается из ПЗУ в этот счетчик, как в обычный параллельный регистр по сигналу параллельной записи VI. Переход к следующему адресу микрокоманды производится по сигналу общей синхронизации СЬК(рис. 4.8).
6 бит |
4 бита |
4 бита |
4 бита |
8 бит |
5 бит |
|
коп (К, PI, М) |
Ист 1 (AS) |
Ист 2 (BS) |
Прм (RS) |
CONST |
Условие перехода |
Адрес перехода |
Управление БОС (26 бит)
Управление БМУ
Рис. 4.8. Формат микрокоманды процессора
Микропрограммирование процессора
Как мы уже выясняли, все действия микропроцессора и сигналы на его выводах определяются последовательностью микрокоманд (микропрограммой), подаваемых на управляющие входы блока обработки.
При изучении принципов работы ОЗУ и ПЗУ приводились временные диаграммы, которые необходимо сформировать, для того чтобы записать или прочитать необходимую информацию. Выберем одну из этих диаграмм (рис. 4.9).

Рис. 4.9. Временные диаграммы считывания команды микропроцессором
Любую временную диаграмму формирует микропроцессор. Устройство микросхемы, на примере которой мы будем формировать
необходимые для работы сигналы, рассматривалось при обсуждении блока обработки микропроцессора. По принципиальной схеме блока обработки сигнала можно определить формат микрокоманды, управляющей этим блоком.
Работа любого цифрового устройства начинается с заранее заданных начальных условий. Эти начальные условия формируются специальным сигналом RESET (сброс), который формируется после подачи питания на схему. Договоримся, что сигнал сброса микропроцессора будет записывать в регистр программного счетчика PC нулевое значение. (Это условие справедливо не для всех процессоров. Например, IBM-совместимые процессоры при сбросе микросхемы записывают в программный счетчик значение Я)000/г)
Выполнение любой команды начинается с ее считывания из системной памяти (ОЗУ или ПЗУ). Необходимые для этого микрокоманды подаются на входы управления БОС из блока микропрограммного управления (БМУ), как только снимается сигнал сброса со счетчика микрокоманд БМУ. При считывании однобайтной команды достаточно считать из системной памяти только код операции и выполнить эту операцию. Временная диаграмма этого процесса приведена на рис. 4.10. Последовательность операций, которые необходимо выполнить микропрограмме, показана стрелочками. Для считывания следующей команды микропрограмма запускается заново.

Рис. 4.10. Временные диаграммы сигналов считывания команд из ОЗУ
Для того чтобы считать код операции из системной памяти, необходимо выставить на шине адреса адрес этой команды. Этот адрес хранится в счетчике команд РС. Скопируем его в регистр адреса ЯЛ, выходы которого подключены к шине адреса.
Поля микрокоманды БОС |
||||||
N |
Описание |
Константа |
Источник /1 |
Источник В |
Команда |
Приемник |
1 |
РСН -> RAH |
1111 1111 |
1111 |
1010 |
ООП 00 |
1100 |
2 |
PCL -> RAL |
1111 1111 |
1111 |
1011 |
ООП 00 |
1101 |
Затем сформируем сигнал считывания. Для этого в регистр управления запишем константу 1111 1101.
Поля микрокоманды БОС |
||||||
N |
Описание |
Константа |
Источник А |
Источник В |
Команда |
Приемник |
3 |
const —»CR |
1111 1101 |
1111 |
1111 |
ООП 00 |
1110 |
Теперь можно считать число с шины данных, а так как системная память в этот момент выдает на нее код операции, то мы считаем именно этот код. Запишем его в регистр команд и снимем сигнал чтения с системной шины. Для этого в регистр управления запишем константу 1111 1111.
Поля микрокоманды БОС |
||||||
N |
Описание |
Константа |
Источник /1 |
Источник В |
Команда |
Приемник |
4 |
data —> RI |
1111 1111 |
1100 |
1111 |
1100 0 0 |
1001 |
5 |
const —»CR |
1111 1111 |
1111 |
1111 |
ООП 0 0 |
1110 |
Прежде чем перейти к дальнейшему выполнению микропрограммы, увеличим содержимое счетчика команд на единицу.
Поля микрокоманды БОС |
||||||
N |
Описание |
Константа |
Источник /1 |
Источник В |
Команда |
Приемник |
6 |
РСЬ+ 1 ->РС1 |
1111 1111 |
1011 |
1111 |
1100 1 0 |
1011 |
7 |
РСН+С^РСН |
1111 1111 |
1010 |
1111 |
1100 1 0 |
1010 |
После считывания команды ее необходимо декодировать. Это можно выполнить микропрограммным способом, проверяя каждый бит регистра команд и осуществляя ветвление по результату проверки, или включить в состав блока микропрограммного управления аппаратный дешифратор команд, который сможет осуществить ветвление микропрограммы на 256 ветвей за один такт синхронизации микропроцессора. Выберем именно этот путь. Восьмым тактом микропрограмма направляется на одну из 256 ветвей, отвечающую за выполнение считанной инструкции. Например, если была считана команда МОУА, /?0, то следующая микрокоманда будет выглядеть следующим образом.
Поля микрокоманды БОС |
||||||
N |
Описание |
Константа |
Источник А |
Источник В |
Команда |
Приемник |
8 |
Ж) -> АСС |
1111 1111 |
0000 |
1111 |
1100 0 0 |
1000 |
И так как в этом случае команда полностью выполнена, то счетчик микрокоманд сбрасывается для выполнения следующей команды.
Рассмотрим еще один пример. Пусть из системной памяти считывается команда безусловного перехода ЛМР 1234. Первые восемь микрокоманд совпадают для всех команд микропроцессора. Различие наступает, начиная с девятой команды, которая зависит от конкретной инструкции. При выполнении команды безусловного перехода необходимо считать адрес новой команды, который записан в байтах, следующих за кодом операции. Этот процесс аналогичен считыванию кода операции.
N |
Описание |
Поля микрокоманды БОС |
||||
Кон станта |
Источник 4 |
Источник В |
Команда |
Прием ник |
||
9 |
РСН -»RAH |
1111 1111 |
1111 |
1010 |
ООП 0 0 |
1100 |
10 |
PCL -» RAL |
nil nil |
1111 |
1011 |
ООП 00 |
1101 |
11 |
const —> CR |
nil 1110 |
1111 |
nil |
ООП 00 |
1110 |
12 |
data —> R1 |
nil nil |
1100 |
nil |
1100 0 0 |
1001 |
13 |
const —> CR |
nil nil |
1111 |
nil |
ООП 00 |
1110 |
14 |
PCL + 1 -> PCL |
nil nil |
1011 |
nil |
1100 1 0 |
1011 |
15 |
PCH + C^ PCH |
nil nil |
1010 |
nil |
1100 1 0 |
1010 |
Теперь считаем второй байт адреса перехода.
Поля микрокоманды БОС |
||||||
N |
Описание |
Кон станта |
Источник А |
Источник В |
Команда |
Прием ник |
16 |
РСН —> RAH |
пи пи |
1111 |
1010 |
ООП 0 0 |
1100 |
17 |
PCL -э RAL |
пи пи |
1111 |
1011 |
ООП 0 0 |
1101 |
Поля микрокоманды БОС |
||||||
N |
Описание |
Кон станта |
Источник 4 |
Источник В |
Команда |
Прием ник |
18 |
const —»CR |
nil 1110 |
1111 |
1111 |
ООП 0 0 |
1110 |
19 |
data —> РСН |
1111 1111 |
1100 |
1111 |
1100 0 0 |
1110 |
20 |
const —> CR |
nil nil |
1111 |
1111 |
ООП 00 |
1110 |
21 |
RI —> PCL |
nil nil |
1001 |
1111 |
1100 1 0 |
1001 |
В результате выполнения этой микропрограммы в программный счетчик будет загружен адрес, записанный во втором и третьем байтах команды безусловного перехода ЛМР 1234. Временная диаграмма, формируемая рассмотренной микропрограммой, приведена на рис. 4.11.
