Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Глава 3
Функциональная организация фон-неймановской ВМ
Данная глава посвящена рассмотрению базовых принципов построения и функционирования фон-неймановских вычислительных машин.
Функциональная схема фон-неймановской вычислительной машины
Чтобы получить более детальное представление о структуре и функциях устройств ВМ, обратимся к схеме гипотетической машины с аккумуляторной архитектурой (рис. 3.1). Для упрощения изложения приняты следующие характеристики машины:
- Одноадресные команды. Адресная часть команды содержит только один адрес. При выполнении операций с двумя операндами предполагается, что другой операнд находится в специальном регистре АЛ У — аккумуляторе, а результат также остается в аккумуляторе.
- Единство форматов. Длина команд и данных совпадает с разрядностью ячеек памяти, то есть любая команда или операнд занимают только одну ячейку памяти. Таким образом, адрес очередной команды в памяти может быть получен путем прибавления единицы к адресу текущей команды, а для извлечения из памяти любой команды или любого операнда достаточно одного обращения к памяти.
На функциональной схеме (см. рис. 3.1) показаны типовые узлы каждого из основных устройств ВМ, а также сигналы, инициирующие выполнение отдельных операций по пересылке информации и ее обработке, необходимых для функционирования машины.
Устройство управления
Назначение устройства управления (УУ) было определено ранее при рассмотрении структурной схемы ВМ, где отмечалось, что эта часть ВМ организует автоматическое выполнение программ и функционирование ВМ как единой системы. Теперь остановимся на описании узлов, реализующих целевую функцию УУ.

Рис. 3.1. Функциональная схема гипотетической фон-неймановской ЭВМ
Счетчик команд
Счетчик команд (СК) — неотъемлемый элемент устройства управления любой ВМ, построенной в соответствии с фон-неймановским принципом программного управления. Согласно этому принципу соседние команды программы располагаются в ячейках памяти со следующими по порядку адресами и выполняются преимущественно в той же очередности, в какой они размещены в памяти ВМ. Таким образом, адрес очередной команды может быть получен путем увеличения адреса ячейки, из которой была считана текущая команда, на длину выполняемой команды, представленную числом занимаемых ею ячеек. Реализацию такого режима и призван обеспечивать счетчик команд — двоичный счетчик, в котором хранится и модифицируется адрес очередной команды программы. Перед началом вычислений в СК заносится адрес ячейки основной памяти, где хранится команда, которая должна быть выполнена первой. В процессе выполнения каждой команды путем увеличения содержимого СК на длину выполняемой команды в счетчике формируется адрес следующей подлежащей выполнению команды. В рассматриваемой ВМ любая команда занимает одну ячейку, поэтому содержимое СК увеличивается к единицу, что обеспечивается подачей сигнала управления +1СК. По завершении текущей команды адрес следующей команды программы всегда берется из счетчика команд. Для изменения естественного порядка вычислений (перехода в иную точку программы) достаточно занести в СК адрес точки перехода.
Хотя термин «счетчик команд» считается общепринятым, его нельзя признать вполне удачным из-за того, что он создает неверное впечатление о задачах данного узла. По этой причине разработчики ВМ используют иные названия, в частности программный счетчик (PC, Program Counter) или указатель команды (IP, Instruction Pointer). Последнее определение представляется наиболее удачным, поскольку точнее отражает назначение рассматриваемого узла УУ.
В заключение добавим, что в ряде ВМ счетчик команд реализуется в виде обычного регистра, а увеличение его содержимого производится внешней схемой (схемой инкремента/декремента).
Регистр команды
Счетчик команд определяет лишь местоположение команды в памяти, но не содержит информации о том, что это за команда. Чтобы приступить к выполнению команды, ее необходимо извлечь из памяти и разместить в регистре команды (РК). Этот этап носит название выборки команды. Только с момента загрузки команды в РК она становится «видимой» для процессора. В РК команда хранится в течение всего времени ее выполнения. Как уже отмечалось ранее, любая команда содержит два поля: поле кода операции и поле адресной части. Учитывая это обстоятельство, регистр команды иногда рассматривают как совокупность двух регистров —регистра кода операции (РКОп) и регистра адреса (РА), в которых хранятся соответствующие составляющие команды.
Если команда занимает несколько последовательных ячеек, то код операции всегда находится в том слове команды, которое извлекается из памяти первым. Это позволяет по коду операции определить, требуются ли считывание из памяти и загрузка в РК остальных слов команды. Собственно выполнение команды начинается только после занесения в РК ее полного кода.
Указатель стека
Указатель стека (УС) — это регистр, где хранится адрес вершины стека. В реальных вычислительных машинах стек реализуется в виде участка основной памяти, обычно расположенного в области наибольших адресов. Заполнение стека происходит в сторону уменьшения адресов, при этом вершина стека — это ячейка, куда была произведена последняя по времени запись. Для хранения адреса такой ячейки и предназначен УС. При выполнении операции push (занесение в стек) содержимое УС с помощью сигнала -1УС сначала уменьшается на единицу, после чего используется в качестве адреса, по которому производится запись. Соответствующая ячейка становится новой вершиной стека. Считывание из стека (операция pop) происходит из ячейки, на которую указывает текущий адрес в УС, после чего содержимое указателя стека сигналом +1УС увеличивается на единицу. Таким образом, вершина стека опускается, а считанное слово считается удаленным из стека. Хотя физически считанное слово и осталось в ячейке памяти, при следующей записи в стек оно будет заменено новой информацией.
Регистр адреса памяти
Регистр адреса памяти (РАП) предназначен для хранения адреса ячейки основной памяти вплоть до завершения операции (считывание или запись) с этой ячейкой. Наличие РАП позволяет компенсировать различия в быстродействии ОП и прочих устройств машины.
Регистр данных памяти
Регистр данных памяти (РДП) призван компенсировать разницу в быстродействии запоминающих устройств и устройств, выступающих в роли источников и потребителей хранимой информации. В РДП при чтении заносится содержимое ячейки ОП, а при записи — помещается информация, подлежащая сохранению в ячейке ОП. Собственно момент считывания и записи в ячейку определяется сигналами ЧтЗУ и ЗпЗУ соответственно.
Дешифратор кода операции
Дешифратор кода операции (ДКОп) преобразует код операции в форму, требуемую для работы микропрограммного автомата (МПА). Информация после декодирования определяет последующие действия МПА, а ее вид зависит от организации МПА. В рассматриваемой ВМ - это унитарный код УнитК. Часто код операции преобразуется в адрес первой команды микропрограммы, реализующей указанную в команде операцию. С этих позиций ДКОп правильнее было бы назвать не дешифратором, а преобразователем кодов.
Микропрограммный автомат
Микропрограммный автомат (МПА) правомочно считать центральным узлом устройства управления. Именно МПА формирует последовательность сигналов управления, в соответствии с которыми производятся все действия, необходимые для выборки из памяти и выполнения команд. Исходной информацией для МПА служат: декодированный код операции, состояние признаков (флагов), характеризующих результат предшествующих вычислений, а также внешние запросы на прерывание текущей программы и переход на программу обслуживания прерывания.
Арифметико-логическое устройство
Это устройство, как следует из его названия, предназначено для арифметической и логической обработки данных. В машине, изображенной на рис. 3.1, оно содержит следующие узлы.
Операционный блок
Операционный блок (ОПБ) представляет собой ту часть АЛУ, которая, собственно, и выполняет арифметические и логические операции над поданными на вход операндами. Выбор конкретной операции из возможного списка операций для данного ОПБ определяется кодом операции команды. В нашей ВМ код операции поступает непосредственно из регистра команды. В реальных машинах КОп зачастую преобразуется в МПА в иную форму и уже из микропрограммного автомата поступает в АЛУ. Операционные блоки современных АЛУ строятся как комбинационные схемы, то есть они не обладают внутренней памятью и до момента сохранения результата операнды должны присутствовать на входе блока.
Регистры операндов
Регистры РХ и PY обеспечивают сохранение операндов на входе операционного блока вплоть до получения результата операции и его записи (в нашем случае в аккумулятор).
Регистр признаков
Регистр признаков (РПрз) предназначен для фиксации и хранения признаков (флагов), характеризующих результат последней выполненной арифметической или логической операции. Такие признаки могут информировать о равенстве результата нулю, о знаке результата, о возникновении переноса из старшего разряда, переполнении разрядной сетки и т. д. Содержимое РПрз обычно используется устройством управления для реализации условных переходов по результатам операций АЛУ. Под каждый из возможных признаков отводится один разряд РПрз.
Формирование признаков осуществляется блоком формирования состояний регистра признаков, который может входить в состав ОПБ либо реализуется в виде внешней схемы, располагаемой между операционным блоком и РПрз.
Аккумулятор
Аккумулятор (Акк) — это регистр, на который возлагаются самые разнообразные функции. Так, в него предварительно загружается один из операндов, участвующих в арифметической или логической операции. В Акк может храниться результат предыдущей команды и в него же заносится результат очередной операции. Через Акк зачастую производятся операции ввода и вывода.
Строго говоря, аккумулятор в равной мере можно отнести как к АЛУ, так и к УУ, а в ВМ с регистровой архитектурой его можно рассматривать как один из регистров общего назначения.
Основная память
Вне зависимости от типа используемых микросхем основная память (ОП) представляет собой массив запоминающих элементов (ЗЭ), организованных в виде ячеек, способных хранить некую единицу информации, обычно один байт. Каждая ячейка имеет уникальный адрес. Ячейки ОП организованы в виде матрицы, а выбор ячейки осуществляется путем подачи разрешающих сигналов на соответствующие строку и столбец этой матрицы. Это обеспечивается дешифратором адреса памяти, преобразующим поступивший из РАП адрес ячейки в разрешающие сигналы, подаваемые в горизонтальную и вертикальную линии, на пересечении которых расположена адресуемая ячейка. При современной емкости ОП для реализации данных сигналов приходится использовать несколько микросхем запоминающих устройств (ЗУ). В этих условиях процесс обращения к ячейке состоит из выбора нужной микросхемы (на основании старших разрядов адреса) и выбора ячейки внутри микросхемы (определяется младшими разрядами адреса). Первая часть процедуры производится внешними схемами, а вторая — внутри микросхем ЗУ.
Модуль ввода/вывода
Структура приведенного на рис. 3.1 модуля ввода/вывода (МВБ) обеспечивает только пояснение логики работы ВМ. В реальных ВМ реализация этого устройства машины может существенно отличаться от рассматриваемой. Задачей МВБ является обеспечение подключения к ВМ различных периферийных устройств (ПУ) и обмена информацией с ними. В рассматриваемом варианте МВБ состоит из дешифратора номера порта ввода/вывода, множества портов ввода и множества портов вывода.
Порты ввода и порты вывода
Портом называют схему, ответственную за передачу информации из периферийного устройства ввода в аккумулятор АЛУ (порт ввода) или из аккумулятора на периферийное устройство вывода (порт вывода). Схема обеспечивает электрическое и логическое сопряжение ВМ с подключенным к нему периферийным устройством.
Дешифратор номера порта ввода/вывода
В модуле ввода/вывода рассматриваемой ВМ предполагается, что каждое ПУ подключается к своему порту. Каждый порт имеет уникальный номер, который указывается в адресной части команд ввода/вывода. Дешифратор номера порта ввода/ вывода (ДВВ) обеспечивает преобразование номера порта в сигнал, разрешающий операцию ввода или вывода на соответствующем порте. Непосредственно ввод (вывод) происходит при поступлении из МПА сигнала Вв (Выв).
Микрооперации и микропрограммы
Для пояснения логики функционирования ВМ ее целесообразно представить в виде совокупности узлов, связанных между собой коммуникационной сетью (рис. 3.2).
Процесс функционирования вычислительной машины состоит из последовательности пересылок информации между ее узлами и элементарных действий, выполняемых в узлах. Понятие узла здесь трактуется весьма широко: от регистра до АЛУ или основной памяти. Также широко следует понимать и термин «элементарное действие». Это может быть установка регистра в некоторое состояние или выполнение операции в АЛУ. Любое элементарное действие производится при поступлении соответствующего сигнала управления (СУ) из микропрограммного автомата устройства управления. Возможная частота формирования сигналов 
Рис. 3.2. Вычислительная машина с позиций микроопераций и сигналов управления
на выходе автомата определяется синхронизирующими импульсами, поступающими от генератора тактовых импульсов (ГТИ). Элементарные пересылки или преобразования информации, выполняемые в течение одного такта сигналов синхронизации, называются микрооперациями. В течение одного такта могут одновременно выполняться несколько микроопераций. Совокупность сигналов управления, вызывающих микрооперации, выполняемые в одном такте, называют микрокомандой. Относительно сложные действия, осуществляемые вычислительной машиной в процессе ее работы, реализуются как последовательность микроопераций и могут быть заданы последовательностью микрокоманд, называемой микропрограммой. Реализует микропрограмму, то есть вырабатывает управляющие сигналы, задаваемые ее микрокомандами, микропрограммный автомат (МПА).
Способы записи микропрограмм
Для записи микропрограмм в компактной форме используются граф-схемы алгоритмов и языки микропрограммирования.
Граф-схемы алгоритмов
Граф-схема алгоритма (ГСА) имеет вид ориентированного графа. При построении графа оперируют пятью типами вершин (рис. 3.3).
Начальная вершина (см. рис. 3.3, а) определяет начало микропрограммы и не имеет входов. Конечная вершина (см. рис. 3.3, б) указывает конец микропрограммы, по-

Рис. 3.3. Разновидности вершин граф-схемы алгоритма: а — начальная; 6-в — операторная; г — условная; д — ждущая
этому имеет только вход. В операторную вершину (см. рис. 3.3, в) вписывают микрооперации, выполняемые в течение одного машинного такта. С вершиной связаны один вход и один выход. Условная вершина (см. рис. 3.3, г) используется для вычислительного процесса. Она имеет один вход и два выхода, соответ-позитивному («Да») и негативному («Нет») исходам проверки условия записанного в вершине. С помощью ждущей вершины (см. рис. 3.3, Э) можно описывать ожидание в работе устройств. В этом случае выход «Да» соответствует снятию причины, вызвавшей ожидание.
Граф-схемы алгоритмов составляются в соответствии со следующими правилами;
1.ГСА должна содержать одну начальную, одну конечную и конечное множество операторных и условных вершин.
2 Каждый выход вершины ГСА соединяется только с одним входом.
3Входы и выходы различных вершин соединяются дугами, направленными от выхода к входу.
4.Для любой вершины ГСА существует, по крайней мере, один путь из этой вершины к конечной вершине, проходящий через операторные и условные вершины в направлении соединяющих их дуг.
5.В каждой операторной вершине записываются микрооперации у, соответствующие одной микрокоманде Y.
6. В каждой условной вершине записывается один из элементов множества логических условий х.
7. Начальной вершине ставится в соответствие фиктивный оператор у0, а конечной — фиктивный оператор yk. На рис. 3.4 показан пример микропрограммы, записанной на языке ГСА.

Рис. 3.4. Пример граф-схемы микропрограммы
В примере микрокоманда F, инициирует микрооперации y1 и y6, микрокоманд Y2 — микрооперацию у2, a Y3 - микрооперации y3, y4, У5 и у7.
Языки микропрограммирования
Для детализированного задания микропрограмм используют языки микропро граммирования. Языки микропрограммирования (ЯМП) обеспечивают описали функционирования ВМ в терминах микроопераций.
Если средства языка ориентированы на запись микропрограммы без привязки к конкретным структурам для реализации этой микропрограммы, то такой ЯМП называют языком функционального микропрограммирования, а соответствующие микропрограммы — функциональными микропрограммами [21]. Функциональная микропрограмма используется как исходная форма для описания функциониро-вания ВМ.
В случае когда средства языка нацелены на описание микропрограмм, привязанных к конкретной реализующей их структуре, ЯМП называют языком структурно - функционального микропрограммирования.
В последующих разделах для описания функционирования ВМ будет использоваться именно язык микропрограммирования, а конкретно вариант ЯМП, предложенный в [25]. Ниже рассматриваются основные средства языка.
Описание слов, шин, регистров
Основным элементом данных, с которым оперирует микропрограмма, является слово.
Описание слова состоит из названия (идентификатора) и разрядного указателя. Идентификатором может быть произвольная последовательность букв и цифр, начинающаяся с буквы. Разрядный указатель состоит из номеров старшего и младшего разрядов слова, разделенных горизонтальной чертой (дефис). Номер старшего разряда записывается слева от черты, а номер младшего — справа. Указатель заключается в круглые скобки. Так, описание слова, представляющего 32-разрядный адрес Аисп = а31, а30..., а0, записывается в виде Аисп(31-0). Разрядный указатель может опускаться, если это не вызывает недоразумений (например, если слово уже было описано раньше).
В структуре вычислительной машины важную роль играют шины. Шиной называется совокупность цепей, используемых для передачи слов. Одна цепь обеспечивает передачу бита информации. Описание шины, как и слова, состоит из идентификатора и разрядного указателя. Например, описание 32-разрядной шины адреса имеет вид ША(31-0).
Описание регистра также включает в себя названия регистра и разрядного указателя. Приведем примеры. Так, пусть команда имеет длину 32 бита и состоит и 8-разрядного кода операции, 4-разрядного поля способа адресации и 20-разрядного поля адреса. Тогда описание регистра команды выглядит следующим образом-РК(31-0), а описания его отдельных элементов и соответственно полей команды имеют вид: РК(31-24), РК(23-20), РК(19-0). Вместо номеров разрядов в разрядном указателе можно записывать наименование поля слова. Тогда два первых поля регистра команды могут быть представлены так: РК(КОП), РК(СА).
Описание 32-разрядного регистра РПЗ для хранения чисел с плавающей запятой, где число состоит из трех полей: s (поле знака мантиссы, бит 31), р (поле порядка биты 30-23) и m (поле мантиссы, биты 22-0), задается в виде РПЗ(31 • 30-23•22-0) или PF13(s • р • т). Здесь точка обозначает операцию составления целого слова из его частей.
Описание памяти, слова памяти
В самом общем виде описание памяти емкостью 1разрядных слов имеет ПАМ[000:999](15-0). Здесь ПАМ — стандартное название памяти. Мы в дальнейшем будем использовать следующие идентификаторы памяти: ОП (основная память), ОЗУ (модуль оперативного запоминающего устройства), ПЗУ (модуль постоянного запоминающего устройства). В квадратных скобках записывается адресный указатель (слева от двоеточия адрес первого, а справа — адрес последнего слова памяти). Наконец, в круглые скобки заключается разрядный указатель слова (все слова памяти имеют одинаковую разрядность).
Примеры.
Описания модулей ОЗУ, содержащих по 1 Кбайт (1024 байта):
ОЗУ1[0000:1023](7-0);ОЗУ2[1024:2047](7-0).
Описания модулей ПЗУ, содержащих по 8разрядных слова:
ПЗУ1[000016:ОРРР1б](0-31); ПЗУ2[10001б:1РРР1б](0-31).
Здесь адреса слов указаны в шестнадцатеричном коде, в каждом слове старший разряд имеет номер 0, а младший — 31.
Описание слова памяти поделено на две части: идентификатор области памяти и адресный указатель слова (в квадратных скобках). Допускается символическая запись адреса, а также косвенное указание адреса слова.
Примеры описаний слов памяти: ОЗУ1[211], или ОЗУ1[Аисп], или ОЗУ1[(РАП)], где Аисп — символический адрес, (РАП) — косвенный адрес, значение которого содержится в регистре РАП.
Описание микроопераций
Здесь под микрооперацией понимается элементарная функциональная операция, выполняемая над словами под воздействием одного сигнала управления, который вырабатывается устройством управления ВМ. В зависимости от количества преобразуемых слов (операндов) различают одноместные, двухместные и трехместные микрооперации.
Описание микрооперации складывается из двух частей, разделяемых двоеточием
МЕТКА: МИКРООПЕРАТОР.
Метка — это обозначение сигнала управления, вызывающего выполнение микрооперации. Метка принимает два значения: 1 — микрооперация выполняется, 0 —не выполняется.
Микрооператор определяет содержимое производимого элементарного действия (микрооперации).
Например, микрооператор записи в регистр С результата сложения слов из регистров А и В имеет вид:
РгС(15-0) := РгА(15-0) + РгВ(15-0),
а полное описание микрооперации принимает форму
у15: РгС(15-0) := РгА(15-0) + РгВ(15-0).
Здесь указано, что микрооперация инициируется сигналом управления у15
Для повышения наглядности записей желательно, чтобы метка сигнала управления несла смысловую нагрузку. Например, для микроопераций выдачи информации идентификатор метки сигнала можно начинать с буквы «В», а для приема -с буквы «П»; метку для микрооперации пересылки из регистра РА в регистр РВ можно записать в виде РАРВ.
Микрооператор по форме записи представляет собой оператор присваивания Выражение справа от знака присваивания (:=) называется формулой микрооператора. Формула определяет вид преобразования, производимого микрооперацией, и местоположение преобразуемых операндов. Слева от знака присваивания в микрооператоре указывается приемник результата реализации формулы.
В соответствии с формулой микрооператора будем различать следующие классы микроопераций.
Микрооперация установки — присваивание слову значения константы.
Например, ПРгХ: PrX(s • m) := 0; ПРгС:С(7-0) := 3110.
Микрооперации передачи — присваивание слову значения другого слова, в том числе с инверсией передаваемого слова.
Примером простого присваивания может служить микрооперация БпУп: СК := РА. Здесь микрооператор описывает занесение в счетчик команд содержимого регистра адреса (адресного поля регистра команды), то есть реализацию перехода в командах безусловного и условного перехода, что и отражает идентификатор сигнала управления.
Другие примеры микроопераций пересылки:
PХPY: PrY(15-0) := РгХ(15-0); РевХУ: PrY(15-0) := РгХ(0-15).
Первый микрооператор описывает пересылку 16-разрядного слова из регистра РгХ в регистр PrY с сохранением расположения разрядов, а второй — с «разворотом» исходного слова.
Микрооперации передачи числа с плавающей запятой, имеющего поля знака s, порядка р и мантиссы т, а также передачи знака с инвертированием, имеют вид:
Пз1Пз2: РПз2(5 • р • т) := РПз1 (s • р • т); ПИЗ: PrX(s) := PrY(s).
Если регистры связаны между собой не непосредственно, а через шину, которая используется многими источниками и приемниками данных, то передача слова между ними возможна при одновременном выполнении двух микрооперации, и описание принимает вид:
ВРгВ: ША := РгВ, ПРгА: РгА := ША
или
ПРгА, ВРгВ: РгА := ША := РгВ.
137
Здесь метки одновременно формируемых сигналов управления перечисляются через запятую и образуют микрокоманду.
° Микрооперации составления слова — обеспечивают получение целого слова большой разрядности из нескольких малоразрядных слов.
Пусть в 16-разрядный регистр А нужно передать слово, старшие разряды которого содержатся в 8-разрядном регистре В, а младшие — в 8-разрядном регистре С. Соответствующую микрооперацию можно описать так:
ПРгА: РгА(15-0) := РгВ(7-0) • РгС(7-0),
где точка (•) — знак присоединения.
Операция присоединения предназначена для присоединения значения слова, указанного справа от знака операции, к значению слова, расположенного слева от
знака операции.
Микрооперации сдвига служат для изменения положения разрядов слова. Положение разрядов изменяется путем перемещения каждого разряда на несколько позиций влево или вправо.
Микрооперации сдвига слова в аккумуляторе, например, могут быть описаны в следующих формах:
* R2AK: АК(15-0) := РС(1-0) • АК(15-2) — сдвиг на два разряда вправо с введением в два старших освобождающихся разряда содержимого двух младших разрядов регистра PC;
*LlAK: AK(15-0) := АК(14-0) • 0 — сдвиг на один разряд влево с занесением в освобождающийся разряд нуля;
*R2AK(15-0): PC(15-0) := АК(15) • АК(15) • АК(15-2) - арифметический сдвиг слова вправо на два разряда с загрузкой в старшие освобождающиеся разряды знака. Для сокращения записи микрооперации сдвига используются две процедуры:
*Rn(A) — удаление п младших правых разрядов из слова А, то есть сдвиг значения на п разрядов вправо;
* Ln(A) — удаление п старших левых разрядов из слова А, то есть сдвиг значения
на п разрядов влево.
Использование этих процедур приводит к представлению ранее рассмотренных микрооператоров в форме:
* АК(15-0) := R2(PC(1-0) • АК);
* AK(15-0):=L1(AK-0);
* РС(15-0):=R2(AK(s)-AK(s)-AK).
Микрооперация счета — обеспечивает изменение значения слова на единицу:
+1СК:СК:=СК+1.
Микрооперация сложения — служит для присваивания слову суммы слагаемых:
СлАд: РАП :=ИР + РА.
Логические микрооперации — присваивают слову значение, полученное поразрядным применением функций И (
), ИЛИ (v), исключающее ИЛИ (
) к парам соответствующих разрядов операндов:
И: АК := РгХ л PrY; M2: АК := РгХ
PrY.
Микрооперация двоичного декодирования — состоит в преобразовании п-разрядного двоичного позиционного кода А в 2п-разрядный унитарный код В. В унитарном коде только один разряд принимает единичное значение, а все остальные равны нулю. Номер разряда К, который принимает значение 1, определяется значением кода А = ![]()

Принято следующее условное обозначение: В := decod (A).
Комментарии к микрооперациям
Микрооперации могут снабжаться произвольными комментариями. Комментарии записываются справа от микрооперации и заключаются в угловые скобки. Например,
+1СК := СК := СК + 1 (Увеличение содержимого СК на единицу).
Совместимость микроопераций
Совместимостью называется свойство совокупности микроопераций, гарантирующее возможность их параллельного выполнения [21]. Различают функциональную и структурную совместимости. Пусть S1,S2, S3, S4 — подмножества слов из множества S. Тогда микрооперации
называются функционально совместимыми, если
то есть если микрооперации присваивают значения разным словам. В функциональных микропрограммах, описывающих алгоритмы выполнения операций без учета структуры вычислительной машины, одновременно могут выполняться только функционально совместимые микрооперации.
Структура ВМ может внести дополнительные ограничения на возможность параллельного выполнения микроопераций. Микрооперации называются структурно несовместимыми, если из-за ограничений, обусловленных структурой ВМ, они не могут выполняться параллельно. Обычно структурная несовместимость связана с использованием микрооперациями одного и того же оборудования.
Цикл команды
Программа в фон-неймановской ЭВМ реализуется центральным процессором (ЦП) посредством последовательного исполнения образующих эту программу команд. Действия, требуемые для выборки (извлечения из основной памяти) и выполнения команды, называют циклом команды. В общем случае цикл команды включает в себя несколько составляющих (этапов):
*выборку команды;
*формирование адреса следующей команды;
*декодирование команды;
*вычисление адресов операндов;
*выборку операндов;
139
*исполнение операции;
* запись результата.
Перечисленные этапы выполнения команды в дальнейшем будем называть стандартным циклом команды. Отметим, что не все из этапов присутствуют присутствуют при выполнении любой команды (зависит от типа команды), тем не менее этапы выборки декодирования, формирования адреса следующей команды и исполнения имеют место всегда.
В определенных ситуациях возможны еще два этапа:
«косвенная адресация;
и реакция на прерывание.
Стандартный цикл команды
Кратко охарактеризуем каждый из вышеперечисленных этапов стандартного цикла команды. При изучении данного материала следует учитывать, что приводимое описание имеет целью лишь дать представление о сущности каждого из этапов. В то же время распределение функций по разным этапам цикла команды и последовательность выполнения некоторых из них в реальных ВМ могут отличаться от излагаемых.
Этап выборки команды
Цикл любой команды начинается с того, что центральный процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд (СК). Двоичный код команды помещается в регистр команды (РК) и с этого момента становится «видимым» для процессора. Без учета промежуточных пересылок и сигналов управления это можно описать следующим образом: РК := ОП[(СК)].
Приведенная запись охватывает весь этап выборки, если длина команды совпадает с разрядностью ячейки памяти. В то же время система команд многих ВМ предполагает несколько форматов команд, причем в разных форматах команда может занимать 1, 2 или более ячеек, а этап выборки команды можно считать завершенным лишь после того, как в РК будет помещен полный код команды. Информация о фактической длине команды содержится в полях кода операции и способа адресации. Обычно эти поля располагают в первом слове кода команды, и для выяснения необходимости продолжения процесса выборки необходимо предварительное декодирование их содержимого. Такое декодирование может быть произведено после того, как первое слово кода команды окажется в РК. В случае многословного формата команды процесс выборки продолжается вплоть до занесения в РК всех слов команды. Например, для 16-разрядной команды, занимающей две 8-разрядные ячейки памяти, выборку можно описать так:
ПСтРК:РК(15-8):=ОП[(СК)];
+1CK:CK:=CK+l;
ПМлРК:РК(7-0):=ОП[(СК)].
Этап формирования адреса следующей команды
Для фон-неймановских машин характерно размещение соседних команд программы в смежных ячейках памяти. Если извлеченная команда не нарушает естественного порядка выполнения программы, для вычисления адреса следующей выполняемой команды достаточно увеличить содержимое счетчика команд на длину текущей команды, представленную количеством занимаемых кодом команды ячеек памяти. Для однословной команды это описывается микрооперацией: +1СК: СК •=СК+1
Длина команды, а также то, способна ли она изменить естественный порядок выполнения команд программы, выясняются в ходе ранее упоминавшегося предварительного декодирования. Если извлеченная команда способна изменить по следовательность выполнения программы (команда условного или безусловного перехода, вызова процедуры и т. п.), процесс формирования адреса следующей команды переносится на этап исполнения операции. В силу сказанного, в ряде BМ рассматриваемый этап цикла команды следует не за выборкой команды, а находится в конце цикла.
Этап декодирования команды
После выборки команды она должна быть декодирована, для чего ЦП расшифровывает находящийся в РК код команды. В результате декодирования выясняются следующие моменты:
*находится ли в РК полный код команды или требуется дозагрузка остальных слов команды;
* какие последующие действия нужны для выполнения данной команды;
* если команда использует операнды, то откуда они должны быть взяты (номер регистра или адрес ячейки основной памяти);
* если команда формирует результат, то куда этот результат должен быть направлен.
Ответы на два первых вопроса дает расшифровка кода операции, результатом которой может быть унитарный код, где каждый разряд соответствует одной из команд, что можно описать в виде УнитК := decod(Kon). На практике вместо унитарного кода могут встретиться самые разнообразные формы представления результатов декодирования, например адрес ячейки специальной управляющей памяти, где хранится первая микрокоманда микропрограммы для реализации указанной в команде операции.
Полное выяснение всех аспектов команды, помимо расшифровки кода операции, требует также анализа адресной части команды, включая поле способа адресации.
По результатам декодирования производится подготовка электронных схем ВМ к выполнению предписанных командой действий.
Этап вычисления адресов операндов
Этап имеет место, если в процессе декодирования команды выясняется, что команда использует операнды. Если операнды размещаются в основной памяти, осуществляется вычисление их исполнительных адресов, с учетом указанного в команде способа адресации. Так, в случае индексной адресации для получения исполни тельного адреса производится суммирование содержимого адресной части команды и содержимого индексного регистра.
Этап выборки операндов
Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в определенные регистры процессора. Например, в случае арифметической команды операнд после извлечения из памяти может быть загружен во входной регистр АЛУ. Однако чаще операнды предварительно заносятся в специальные вспомогательные регистры процессора, а их пересылка на вход АЛУ происходит на этапе исполнения операции.
Этап исполнения операции
На этом этапе реализуется указанная в команде операция. В силу различия сущности каждой из команд ВМ, содержание этого этапа также сугубо индивидуально. Этапы исполнения некоторых команд будут рассмотрены ниже на примере выполнения учебной программы для приведенной на рис. 3.1 гипотетической вычислительной машины.
Этап записи результата
Этап записи результата присутствует в цикле тех команд, которые предполагают занесение результата в регистр или ячейку основной памяти. Фактически его можно считать частью этапа исполнения, особенно для тех команд, которые помещают результат сразу в несколько мест.
Описание стандартных циклов команды для гипотетической машины
Для анализа содержания стандартных циклов команды обратимся к гипотетической ВМ (см. рис. 3.1), для которой составим программу сложения двух чисел и вывода суммы на устройство вывода, если эта сумма не равна 0.
Список необходимых команд приведен в табл. 3.1, а сама программа — в табл. 3.2. Предполагается, что команды программы будут размещаться в основной памяти, начиная с адреса 100, а операнды — с адреса 200. Для вывода результата назначим порт с номером 5.
Таблица 3.1. Команды гипотетической вычислительной машины
КОп | АЧ | Описание |
LDA | Adr | Загрузка в аккумулятор содержимого ячейки ОП с адресом Adr |
ADD | Adr | Сложение содержимого аккумулятора с содержимым ячейки ОП, имеющей адрес Adr. Результат остается в аккумуляторе |
BRZ | Adr | Переход к команде, хранящейся по адресу Adr, если результат предыдущей арифметической операции равен 0, иначе естественный порядок вычислений не нарушается |
out | PortN | Вывод содержимого аккумулятора на периферийное устройство, подключенное к порту с номером PortN |
hlt | Останов вычислений |
Таблица 3.2. Программа к рассматриваемому примеру
Адрес порта | Код операции | Адрес ячейки или номер |
100 | LDA | 200 |
101 | ADD | 201 |
102 | BRZ | 104 |
103 | OUT | 5 |
104 | HLT | |
200 | Операнд 1 | |
201 | Операнд 2 |
Перед запуском программы необходимо занести в СК адрес ячейки основной памяти, содержащей первую выполняемую команду программы, то есть 100.
Поскольку выборка и декодирование, а также формирование адреса следующей команды для всех команд выполняются по идентичной схеме, опишем их однократно, детализируя в дальнейшем лишь остальные этапы основного цикла команды. Кроме того, напомним, что все сигналы управления и управляющие коды формируются микропрограммным автоматом, поэтому в дальнейшем ссылки на МПА будут опущены.
Выборка команды. Сначала остановимся на содержании этапа выборки, идентичного для всех команд программы. На этом этапе происходит извлечение двоичного кода команды из ячейки основной памяти и его занесение в регистр команды:
СКРАП: РАП := СК, ЧтЗУ: РДП := ОГЩСК)];
РДПКОп, РДПРА: РК := РДП <РКОп := РДП(КОп), РА := РДП(АЧ)>.
В первом такте вырабатывается сигнал управления СКРАП, инициирующий пересылку содержимого счетчика команд в регистр адреса памяти. По сигналу ЧтЗУ содержимое ячейки, выбранной дешифратором адреса памяти (код команды), переписывается в регистр данных памяти. В следующем такте формируются сигналы РДПКОп и РДПРА, по которым содержимое РДП передается в РК, при этом поле РКОп заполняется кодом операции, а поле РА — адресной частью команды.
Декодирование команды. Сразу же после размещения кода операции в РК производится его декодирование, что можно описать микрооператором УнитК := decod(Kon). Прежде всего выясняется, может ли данная команда изменить последовательность вычислений, что влияет на дальнейшее выполнение цикла команды. Для всех команд, кроме команд управления (в нашем случае это BRZ), начинается этап формирования адреса следующей команды.
Формирование адреса следующей команды. В фон-неймановских ВМ команды программы располагаются в естественном порядке следования, в соседних ячеи ках памяти, и выполняются в том же порядке. Для формирования адреса следующей команды достаточно увеличить содержимое СК на единицу: +1СК: СК := СК +1
В рассматриваемой ВМ предусмотрена только прямая адресация, поэтому эта вычисления адресов операндов опускается.
В анализируемой программе этап выборки операндов предполагается только в командах загрузки аккумулятора и сложения. Для простоты изложения будем расценивать выборку операндов как часть этапа исполнения соответствующих операций. В свою очередь, этапы исполнения специфичны для каждой команды и рассматриваются применительно к каждой команде нашей программы.
Исполнение операции загрузки аккумулятора. Команда LDA 200 обеспечивает несение в аккумулятор содержимого ячейки ОП с адресом 200, то есть первого операнда, и реализуется следующим образом:
*МПА вырабатывает сигнал РАРАП, передающий содержимое РА (адресную часть команды) в РАП;
*по сигналу ЧтЗУ содержимое ячейки 200 заносится в РДП;
*по сигналу РДПАкк первый операнд из РДП помещается в аккумулятор.
На языке микроопераций это выглядит так:
РАРАП: РАП := РК(РА); ЧтЗУ: РДП := ОП[200];
РДПАкк: Акк := РДП.
Исполнение операции сложения. Команда ADD 201 обеспечивает суммирование текущего содержимого аккумулятора с содержимым ячейки 201 (вторым операндом). Результат сложения остается в аккумуляторе. Одновременно с этим в АЛУ формируются признаки результата:
* МПА вырабатывает сигнал РАРАП, и содержимое РА поступает в РАП;
* по сигналу ЧтЗУ содержимое ячейки 201 заносится в РДП;
* сигнал управления РДП РХ вызывает пересылку операнда 2 из РДП в регистр РХ АЛУ; одновременно с этим МПА вырабатывает сигнал АккРУ, по которому в PY переписывается содержимое аккумулятора, то есть хранящийся там первый операнд; операционный блок выполняет над данными, расположенными в РХ и PY, операцию, заданную в коде операции команды (в нашем случае — сложение);
* по сигналу ОПБАкк информация с выхода ОПБ загружается в аккумулятор.
Сказанное может быть описано в виде: РАРАП: РАП := РК(РА), ЧтЗУ: РДП := ОП[201];
РДПРХ: РХ := РДП, АккРУ: PY := Акк, ОПБ := РХ + PY;
ОПБАкк1: Акк:=ОПБ.
Исполнение операции условного перехода. Для изменения порядка выполнения программы используются команды безусловного (БП) и условного (УП) переходов, в нашем случае — команда BRZ 104. Адрес перехода хранится в адресном поле команды. Команда анализирует хранящийся в РПрз признак (флаг) нулевого результата, выработанный в АЛУ на предыдущем этапе вычислений, и формирует адрес следующей команды в зависимости от состояния этого признака. При нулевом значении флага (условие перехода не выполнено) естественный порядок выполнения программы не нарушается, и адрес следующей команды формируется обычным образом, путем увеличения содержимого СК на единицу (+1СК: СК := СК=1) При единичном значении флага (условие перехода выполнено) в СК заносится содержимое РА. Напомним, что в РА находится адресная часть извлеченной из ОП команды перехода, то есть адрес точки перехода. Сказанное можно записать в виде БПУП: СК := РК(РА). Поскольку для команд перехода формирование адреса следующей команды по сути является и исполнением их операций, описании микрооперации для них обычно относят к этапу исполнения.
Исполнение операции вывода. Команда OUT 5 обеспечивает вывод содержимого аккумулятора на периферийное устройство (ПУ), подключенное к порту вывода с номером 5. МПА вырабатывает управляющий сигнал РАДВВ, по которому адресная часть команды — номер порта вывода — из РА поступает на вход дешифратора номера порта ввода/вывода. В следующем такте по сигналу Выв содержимое аккумулятора через выбранный дешифратором порт вывода передается на подключенное к этому порту ПУ:
РАДВВ: ДВВ := РК(РА); Выв: Порт вывода 5 := Акк.
Исполнение операции останова. Команда HLT приводит к завершению вычислений. При этом вырабатывается сигнал Ост, нужный для того, чтобы известить операционную систему о завершении текущей программы.
Машинный цикл с косвенной адресацией
Многие команды предполагают чтение операндов из памяти или запись в память. В простейшем случае в адресном поле таких команд явно указывается исполнительный адрес соответствующей ячейки ОП. Однако часто используется и другой способ указания адреса, когда адрес операнда хранится в какой-то ячейке памяти, а в команде указывается адрес ячейки, содержащей адрес операнда. Как уже отмечалось ранее, подобный прием называется косвенной адресацией. Чтобы прочитать или записать операнд, сначала нужно извлечь из памяти его адрес и только после этого произвести нужное действие (чтение или запись операнда), иными словами, требуется выполнить два обращения к памяти. Это, естественно, отражается и на цикле команды, в котором появляется косвенная адресация. Этап косвенной адресации можно отнести к этапу вычисления адресов операндов, поскольку его сущность сводится к определению исполнительного адреса операнда.
Применительно к вычислительной машине, приведенной на рис. 3.1, при косвенной адресации имеют место следующие микрооперации:
РАРАП: РАП := РК(РА), ЧтЗУ: РДП := ОП[(РА)];
РДПРА:РК(РА):=РДП.
Иными словами, содержимое адресного поля команды в регистре команд используется для обращения к ячейке ОП, в которой хранится адрес операнда, после чего извлеченный из памяти исполнительный адрес операнда помещается в адрес ное поле регистра команды на место косвенного адреса. Дальнейшее выполнейИ команды протекает стандартным образом.
Машинный цикл с прерыванием
Практически во всех ВМ предусмотрены средства, благодаря которым модули ввода/вывода (и не только они) могут прервать выполнение текущей программы для внеочередного выполнения другой программы, с последующим возвратом к прерванной.
Первоначально прерывания были введены для повышения эффективности вычислений при работе с медленными ПУ. Положим, что процессор пересылает данные на принтер, используя стандартный цикл команды. После каждой операции записи ЦП будет вынужден сделать паузу, в ожидании подтверждения от принтера об обработке символа. Длительность этой паузы может составлять сотни и тысячи циклов команды. Ясно, что такое использование ЦП очень неэффективно. В случае прерываний, пока протекает операция ввода/вывода, ЦП способен выполнять другие команды.
В упрощенном виде процедуру прерывания можно описать следующим образом Объект, требующий внеочередного обслуживания, выставляет на соответствующем входе ЦП сигнал запроса прерывания. Перед переходом к очередному циклу команды процессор проверяет этот вход на наличие запроса. Обнаружив запрос, ЦП запоминает информацию, необходимую для продолжения нормальной работы после возврата из прерывания, и переходит к выполнению программы обработки прерывания (обработчика прерывания). По завершении обработки прерывания ЦП восстанавливает состояние прерванного процесса, используя запомненную информацию, и продолжает вычисления. Описанный процесс иллюстрирует рис. 3.5.
В терминах цикла команды сказанное выглядит так. Для учета прерываний к циклу команды добавляется этап прерывания, в ходе которого процессор проверяет, не поступил ли запрос прерывания. Если запроса нет, ЦП переходит к этапу выборки следующей команды программы. При наличии запроса процессор:
1. Приостанавливает выполнение текущей программы и запоминает содержимое всех регистров, которые будут использоваться программой обработки прерывания. Это называется сохранением контекста программы. В первую очередь необходимо сохранить содержимое счетчика команд, аккумулятора и регистра признаков. Контекст программы обычно сохраняется в стеке.
2. Заносит в счетчик команд начальный адрес программы обработки прерывания.

Рис. 3.5. Передача управления при прерываниях
146 Глава 3. Функциональная организация фон-неймановской ВМ
На языке микроопераций это можно записать следующим образом:
СКРДП: РДП := СК; -1УС: УС := УС - 1 <3апись в стек содержимого СК>;
УСРАП: РАП := УС; ЗпЗУ, СКРДП: ОП[(УС)] := РДП := СК;
АккРДП: РДП := Акк; -1УС: УС := УС - 1 <3апись в стек содержимого Акк>;
УСРАП: РАП := УС; ЗпЗУ, АккРДП: ОП[(УС)] := РДП := Акк;
РПрзРДП: РДП := РПрз; -1УС: УС := УС - 1 <3апись в стек содержимого РПрз>;
УСРАП: РАП := УС; ЗпЗУ, РПрзРДП: ОП[(УС)] := РДП := РПрз;
СК := Аобр <3анесение в СК начального адреса обработчика прерываниям
Теперь процессор продолжает с этапа выборки первой команды обработчика прерывания. Обработчик (обычно он входит в состав операционной системы) определяет природу прерывания и выполняет необходимые действия. Когда программа обработки прерывания завершается, процессор может возобновить выполнение программы пользователя с точки, где она была прервана. Для этого он восстанавливает контекст программы (содержимое СК и других регистров) и начинает с цикла выборки очередной команды прерванной программы. Соответствующая микропрограмма представлена ниже (с целью упрощения схемы некоторые тракты и сигналы управления не показаны, и соответствующие микрооперации отображают лишь логику выхода из прерывания).
УСРАП: РАП :=УС, ЧтЗУ: РДП:=ОП[(УС)] восстановление содержимого РПрз>;
+1УС: УС := УС + 1; РДПРПрз: РПрз := РДП;
УСРАП: РАП := УС, ЧтЗУ: РДП := ОП[(УС)] восстановление содержимого Акк>;
+1УС: УС := УС + 1; РДПАкк: Акк := РДП;
УСРАП: РАП := УС, ЧтЗУ: РДП := ОП[(УС)] восстановление содержимого СК>;
+1УС: УС := УС + 1; РДПСК: СК := РДП.
Диаграмма состояний цикла команды
Вышеизложенное можно подытожить в виде рис. 3.6, где показаны потоки информации в ходе этапов выборки команды, косвенной адресации и прерывания [36]:
а б в
Рис. 3.6. Потоки информации при реализации цикла команды: а — этап выборки; б — этап косвенной адресации; в — этап прерывания
В работе [36] использован также иной подход к описанию содержания цикла команды — с помощью диаграммы состояний (рис. 3.7).
На такой диаграмме цикл команды представляется в виде последовательности состояний. Для каждой конкретной команды некоторые состояния могут быть

Рис. 3.7. Диаграмма состояний цикла команды
нулевыми, а некоторые другие могут неоднократно повторяться. Полный цикл команды может включать в себя следующие состояния:
- Вычисление адреса команды. Определение исполнительного адреса команды, которая должна выполняться следующей.
- Выборка команды. Чтение команды из ячейки памяти и занесение ее в РК.
- Декодирование команды. Анализ команды с целью выяснения типа подлежащей выполнению операции и операндов.
- Вычисление адреса операнда. Определение исполнительного адреса операнда, если операция предполагает обращение к операнду, хранящемуся в памяти или же доступному посредством ввода. - Выборка операнда. Выборка операнда из памяти или его ввод с устройства
ввода.
- Операция с данными. Выполнение операции, указанной в команде.
- Запись операнда. Запись результата в память или вывод на устройство вывода.
Состояния в верхней части диаграммы описывают обмен между ЦП и памятью либо между ЦП и модулем ввода/вывода. Состояния в нижней части обозначают только внутренние операции ЦП. Вычисление адреса операнда встречается дважды, поскольку команда может включать в себя чтение, запись или и то и другое, однако действия, выполняемые в этом состоянии, в обоих случаях одни и те же, поэтому используется один и тот же идентификатор состояния.
Следует отметить, что диаграмма допускает множественные операнды и результаты, как того требуют некоторые команды. Кроме того, в ряде ВМ единственная команда может определять операцию над вектором (одномерным массивом чисел) или строкой (одномерным массивом символов), что требует повторяющихся операций выборки и/или записи. Диаграмма отражает также возможность этапов прерывания и косвенной адресации.
Основные показатели вычислительных машин
Использование конкретной вычислительной машины имеет смысл, если ее показатели соответствуют показателям, определяемым требованиями к реализации заданных алгоритмов. В качестве основных показателей ВМ обычно рассматривают: емкость памяти, быстродействие и производительность, стоимость и надежность [25]. В данном учебнике остановимся только на показателях быстродействия и производительности, обычно представляющих основной интерес для пользователей.
Быстродействие
Целесообразно рассматривать два вида быстродействия: номинальное и среднее. Номинальное быстродействие характеризует возможности ВМ при выполнении стандартной операции. В качестве стандартной обычно выбирают короткую операцию сложения. Если обозначить через тсл время сложения, то номинальное быстродействие определится из выражения

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

где Тэ — время выполнения эталонного алгоритма; N — количество операций, содержащихся в эталонном алгоритме.
Обозначим через ni число операций i-го типа; l — количество типов операции в алгоритме (i = 1, 2,..., /); т, — время выполнения операции г'-ro типа.
Время выполнения эталонного алгоритма рассчитывается по формуле:
(3.1)
Подставив (3.1) в выражение для Vср, получим
(3.2)
Разделим числитель и знаменатель в (3.2) на N:
(3.3)
Обозначив частоту появления операции i-го типа в (3.3) через
, запишем окончательную формулу для расчета среднего быстродействия:
(3.4)
В выражении (3.4) вектор
характеризует систему команд ВМ, а вектор
называемый частотным вектором операций, характеризует алгоритм.
Очевидно, что для эффективной реализации алгоритма необходимо стремиться к увеличению Vср. Если Vном главным образом отталкивается от быстродействия элементной базы, то Vср очень сильно зависит от оптимальности выбора команд ВМ.
Формула (3.4) позволяет определить среднее быстродействие машины при реализации одного алгоритма. Рассмотрим более общий случай, когда полный алгоритм состоит из нескольких частных, периодически повторяемых алгоритмов. Среднее быстродействие при решении полной задачи рассчитывается по формуле:
(3.5)
где m — количество частных алгоритмов;
— частота появления операций j-го частного алгоритма в полном алгоритме; qtj — частота операций i-го типа b j'-m частном алгоритме.
Обозначим через nj и Tj — количество операций и период повторения;j-го частного алгоритма; Tтах = mах(T1, ..., Т-, ..., Тт) — период повторения полного алгоритма;
— цикличность включении j-го частного алгоритма в полном алгоритме.
Тогда за время T|пах в ВМ будет выполнено Nmax =
a.jNj операций, а частоту появления операций j'-ro частного алгоритма в полном алгоритме можно определить из выражения
(3.6)
Для расчета по формулам (3.5, 3.6) необходимо знать параметры ВМ, представленные вектором {
1
2,
3,...,
l,}, параметры каждого j-го частного алгоритма — вектор{q1, q2,..., q,„}., и параметры полного алгоритма — вектор{
1;
2•••
m}
Производительность ВМ оценивается количеством эталонных алгоритме выполняемых в единицу времени:
![]()
Производительность при выполнении полного алгоритма оценивается по формуле
.(3.7)
Производительность является более универсальным показателем, чем среднее быстродействие, поскольку в явном виде зависит от порядка прохождения задач через ВМ.
Критерии эффективности вычислительных машин
Вычислительную машину можно определить множеством показателей, характеризующих отдельные ее свойства. Возникает задача введения меры для оценки степени приспособленности ВМ к выполнению возложенных на нее функций - меры эффективности.
Эффективность определяет степень соответствия ВМ своему назначению. Она измеряется либо количеством затрат, необходимых для получения определенного результата, либо результатом, полученным при определенных затратах. Произвести сравнительный анализ эффективности нескольких ВМ, принять решение на использование конкретной машины позволяет критерий эффективности.
Критерий эффективности — это правило, служащее для сравнительной оценки качества вариантов ВМ. Критерий эффективности можно назвать правилом предпочтения сравниваемых вариантов.
Строятся критерии эффективности на основе частных показателей эффективности (показателей качества). Способ связи между частными показателями определяет вид критерия эффективности.
Способы построения критериев эффективности
Возможны следующие способы построения критериев из частных показателей.
Выделение главного показателя. Из совокупности частных показателей А Р, А2 ..., Аn выделяется один, например A1, который принимается за главный. На остальные показатели накладываются ограничения:

где Адо„ — допустимое значение i-го показателя. Например, если в качестве A1 выбирается производительность, а на показатели надежности Р и стоимости
Критерии эффективности вычислительных машин 151
накладываются ограничения, то критерий эффективности ВМ принимает вид
![]()
Способ последовательных уступок. Все частные показатели нумеруются в по важности наиболее существенным считается показатель А1, а наименее важным – А п Находится минимальное значение показателя А, - minA, (если нужно найти максимум достаточно изменить знак показателя).3атем делается «уступка первому показателю
А и получается ограничение min А1 +
A1.
На втором шаге отыскивается min А2 при ограничении А1 < min А1 +
A1. После выбирается «уступка» для A2 min А2 +
A2. На третьем шаге отыскивается min А3 при ограничениях А1 < min А1 +
A1. А2 < min А2 +
A2. и т. д. На последнем шаге ишут min Ап при ограничениях.,
А1 < min А1 +
A1.
А2 < min А2 +
A 2;
….
А п-1 < min А п-1 +
А п-1 .
Полученный на этом шаге вариант вычислительной машины и значения ее показателей А1 А2,..., Ап считаются окончательными. Недостатком данного способа (критерия) является неоднозначность выбора
A.
Отношение частных показателей. В этом случае критерий эффективности получают в виде:
(3.8)
или в виде:
(3.9)
где А i (i - 1 2 п) - частные показатели, для которых желательно увеличение численных значений, а В, (1=1, 2,..., т) - частные показатели, численные значения которых нужно уменьшить. В частном случае критерий может быть представлен в виде:

(3.10)
Наиболее популярной формой выражения (3.10) является критерии цены эффективного быстродействия
(3.11)
где S - стоимость, Уср - среднее быстродействие ВМ. Формула критерия К4 характеризует аппаратные затраты, приходящиеся на единицу быстродействия.
Аддитивная форма. Критерий эффективности имеет вид:
(3.12)
где
1,
2,….,
п,— положительные и отрицательные весовые коэффициенты частных показателей. Положительные коэффициенты ставятся при тех показателях, которые желательно максимизировать, а отрицательные — при тех, которые желательно минимизировать.
Весовые коэффициенты могут быть определены методом экспертных оценок. Обычно они удовлетворяют условиям
(3.13)
Основной недостаток критерия заключается в возможности взаимной компенсации частных показателей.
Мультипликативная форма. Критерий эффективности имеет вид
(3.14)
где, в частном случае, коэффициенты
i, полагают равными единице.
От мультипликативной формы можно перейти к аддитивной, используя выражение:
(3.15)
Критерий К6 имеет тот же недостаток, что и критерий К5.
Максиминная форма. Критерий эффективности описывается выражением:
(3.16)
Здесь реализована идея равномерного повышения уровня всех показателей за счет максимального «подтягивания» наихудшего из показателей (имеющего минимальное значение).
У максиминного критерия нет того недостатка, который присущ мультипликативному и аддитивному критериям.
Нормализация частных показателей
Частные показатели качества обычно имеют различную физическую природу и различные масштабы измерений, из-за чего их простое сравнение становится практически невозможным. Поэтому появляется задача приведения частных показателей к единому масштабу измерений, то есть их нормализация.
Рассмотрим отдельные способы нормализации.
Использование отклонения частного показателя от максимального.
Аi=Anaxi-Ai, (3.17)
В данном случае переходят к отклонениям показателей, однако способ не устраняет различия масштабов отклонений.
Использование безразмерной величины А
(3.18)
(3.19)
Формула (3.18) применяется тогда, когда уменьшение А, приводит к увеличению (улучшению) значения аддитивной формулы критерия. Выражение (3.19) используется, когда к увеличению значения аддитивной формулы критерия приводит увеличение Ai
Учет приоритета частных показателей
Необходимость в учете приоритетов возникает в случае, когда частные показатели имеют различную степень важности.
Приоритет частных показателей задается с помощью ряда приоритета, вектора приоритета (b1..., Ьq,..., Ьn) и вектора весовых коэффициентов (
1,
2,….,
п,).
Ряд приоритета представляет собой упорядоченное множество индексов частных показателей /=(1,2,..., п). Он отражает чисто качественные отношения доминирования показателей, а именно отношения следующего типа: показатель A1 важнее показателя A2, а показатель A2 важнее показателя А3 и т. д.
Элемент bq вектора приоритета показывает, во сколько раз показатель Aq важнее показателя Aq+1 (здесь Aq — показатель, которому отведен номер q в ряду приоритета). Если Aq и Aq+1 имеют одинаковый ранг, то bq = 1. Для удобства принимают bn=1
Компоненты векторов приоритета и весовых коэффициентов связаны между собой следующим отношением

Зависимость, позволяющая по известным значениям b, определить величину
, имеет вид:
(3.20)
Знание весовых коэффициентов позволяет учесть приоритет частных показателей.
Контрольные вопросы
1.Какую функцию выполняет счетчик команд и какой должна быть его разрядность?
2.Какое из полей регистра команд должно быть заполнено в первую очередь?
3.Какой адрес должен быть занесен в указатель стека при его инициализации?
4. Какими средствами компенсируется различие в быстродействии процессора и основной памяти?
154
5. На основании какой информации микропрограммный автомат формирует сигналы управления?
6.Можно ли считать наличие регистров операндов обязательным условием раб ты любого операционного блока?
7.Каким образом используется информация, хранящаяся в регистре признаке
8.С каким понятием можно ассоциировать сигнал управления?
9.В чем состоит различие между микрокомандой и микрооперацией?
10.Какие существуют способы записи микропрограмм?
11.Перечислите основные правила составления граф-схемы алгоритма.
12.Как в предложенном языке микропрограммирования описывается разрядность шины?
13.Какие варианты описания слова памяти допускает язык микропрограммирования?
14.Описание каких видов микроопераций допускает рассмотренный в книге язык микропрограммирования?
15.Что подразумевает понятие «совместимость микроопераций»?
16.Какие из этапов цикла команды являются обязательными для всех команд?
17.Какие узлы ВМ участвуют в реализации этапа выборки команды?
18.Местоположение какого из этапов цикла команды в общей их последовательности в принципе может быть изменено?
19.На какой стадии выполнения команды анализируются запросы прерывания?
20.Опишите последовательность действий, выполняемых при поступлении запроса прерывания.
21.Как обеспечивается возобновление вычислений после обработки прерывания?
22.Что понимается под номинальным и средним быстродействием ВМ?
23.Каким образом можно охарактеризовать производительность вычислительной машины?
24.Перечислите и охарактеризуйте основные способы построения критериев эффективности ВМ.
25.Какими способами можно произвести нормализацию частных показателей эффективности?


