Структура фон неймановской вычислительной машины
Закат архитектуры фон Неймана, о котором вы еще не слышали и что будет дальше?
За последние тридцать лет компьютеры настолько стали популярны, что успели изменить многие процессы в жизни человека и соответственно общества. С каждым годом, согласно закону Мура, они приобретают все больше вычислительных способностей, что позволяет им решать все более сложные задачи. Уже сегодня компьютеры столкнулись с рядом ограничений, которые не позволяют нам решать задачи из фильмов про будущее. Так ли будет и дальше, есть ли предел у современной архитектуры и что нам делать, если такой стремительный рост в дальнейшем невозможен?
На изображении отладочная плата с расположенными чипами Loihi.
Классическая архитектура фон Неймана
“Бутылочное горлышко” архитектуры фон Неймана.
Все классические компьютеры обладают так называемой архитектурой фон Неймана.
Рис. 1. The decline of von Neumanns architecture
Недостатком такой архитектуры является тот факт, что данные из области памяти цикл за циклом должны передаваться в область вычислительного юнита и обратно. Интерфейс, связывающий вычислительный юнит и память компьютера, ограничен в своей пропускной способности. Даже тот факт, что современные процессоры имеют несколько уровней кэша непосредственно в вычислительном юните, не решает проблему. Данный подход усугубляется необходимостью аккумулировать и структурировать данные для полного заполнения буфера вычисляемых операций. Можно привести метафору с поездом: пока все пассажиры не займут именно свои места в поезде, поезд никуда не поедет.
Физические ограничения материалов
Согласно закону Мура, количество транзисторов удваивается примерно каждые два года при уменьшении стоимости их производства. Реализуется этот факт посредством уменьшения размера транзистора. Уменьшение размеров транзистора приводит нас к еще одному ограничению: их размеры обусловлены физическими свойствами материалов из которых они производятся.
Реалии представляются таким образом, что этот закон начинает испытывать давление со стороны “законов физики микромира”.
Рис. 2. Уменьшение размеров транзистора приводит к ошибкам в его производстве
Тут мы сталкиваемся сразу с несколькими сложностями:
Отказоустойчивость и брак в производстве
Задумывались ли вы, как производят младшие модели процессоров и чипов для видеокарт? Вы наверное подумаете, что есть специально выделенные команды, которые разрабатывают каждый год новый упрощенный чип. На самом деле процесс выглядит по-другому. Компания разрабатывает один максимально мощный чип. Его устройство выглядит, как некая повторяющаяся архитектура. Обратите внимание на то, что практически все элементы дублируются, как и в авиации.
Рис. 3. Блок схема процессора Xeon
Это сделано для того, чтоб в том случае, если в каком-то блоке выйдет из строя большое количество транзисторов из-за брака во время производства, этот блок можно было отключить, а процессор целиком остался в рабочем состоянии. Как вы понимаете, производство процессоров очень дорогое, и одна из причин этого большой процент брака. Процент брака кристаллов для 28-ядерных процессоров Intel Xeon составляет до 65 %. Если у конечного процессора не работает один из блоков памяти или одно из ядер не проходит TDP тест, его отключают, а процессор упаковывают в коробку “младшей модели”.
Подход хороший, но он требует отключения очень больших блоков: в случае отказа нескольких транзисторов, которых в одном ядре может быть семьсот миллионов. То есть отказ 0.000000001% транзисторов приводит к потере 10% и более производительности устройства.
Если предположить, что мы можем создавать блоки, основанные на ста транзисторах при количестве этих самых блоков более миллиона мы бы получили значительный прирост отказоустойчивости в чипе. Это значит, что при выходе из строя небольшого количества транзисторов мы бы теряли очень маленький процент блоков от их общего числа. Этот подход сильно бы удешевил стоимость производства, и топовый чип стоил бы уже не, как малолитражный автомобиль, а как хорошая рубашка.
Потребление электроэнергии и размер суперкомпьютеров
В современном мире, когда мобильный телефон обладает вычислительными способностями компьютера пятилетней давности и при этом работает от аккумулятора, нам кажется, что мы почти достигли предела в уменьшении потребления энергии компьютерами. Но, если мы сравним вычислительные способности суперкомпьютера IBM Summit, его размеры и потребляемые им объемы энергии с мозгом мыши, окажется, что он неимоверно большой и очень неэффективный.
Рис 4. IBM Power System AC922, IBM POWER9 22C 3.07GHz, NVIDIA Volta GV100, Dual-rail Mellanox
EDR InfiniBand, 2.41 million cores, 148.6 petaflops
Пиковая потребляемая мощность: 13 000 000 W
Размеры: 4,608 nodes * 0.2 m^3 = 920 m^3
Мозг мыши способен обрабатывать куда более сложные задачи при потреблении всего 1-5 ватт.
Online learning and continuous-flow
Тут хочется сказать больше об алгоритмах, нежели об архитектуре, хотя в данном контексте алгоритмы продиктованы архитектурой. Современный компьютер хорошо справляется с дискретными данными, когда есть, пускай и большое количество, но все же порционных, конечных, желательно целочисленных данных, тут он может себя проявить очень хорошо. Но вот, когда речь заходит о последовательностях, непрерывности, бесконечно малых или бесконечно больших значениях, тут мы пытаемся найти некое приближение. В результате мы интерпретируем наши данные в последовательность дискретных кадров, дробим, разделяем и обрабатываем каждый фрейм как нечто статическое и конечное.
Да, сейчас существуют различные подходы bi-directional soft attention (см. BERT) для того, чтобы связывать эти самые кадры в работе с языковыми моделями. Также современные подходы машинного обучения лишены возможности обучаться непосредственно в процессе решения поставленной задачи. Это все еще две различные задачи.
Параллелизм и масштабируемость
Возвращаясь к архитектуре фон Неймана, мы видим, что весь поток данных проходит через некий вычислительный центр, то есть по сути еще одно узкое горлышко. Количество ядер в современных чипах растет, но вслед за этим возникает и новая проблема: сперва данные нужно распараллелить, а после синхронизировать результаты. То есть, если у вас множество независимых входных сигналов и они не связаны между собой ни во времени, ни в контексте, множество ядер процессоров и ядер видеокарт хорошо справляются с этой задачей. Но в том случае, если у вас большой входной сигнал, то задача параллелизма вычислений, синхронизации результатов может занять большую часть этих самых вычислений.
Оригинал статьи
В следующей статье я рассказываю как решают все перечисленные сложности по средствам Neuromorphic архитектуры.
Принципы фон Неймана (Архитектура фон Неймана)
В 1946 году Д. фон Нейман, Г. Голдстайн и А. Беркс в своей совместной статье изложили новые принципы построения и функционирования ЭВМ. В последствие на основе этих принципов производились первые два поколения компьютеров. В более поздних поколениях происходили некоторые изменения, хотя принципы Неймана актуальны и сегодня.
По сути, Нейману удалось обобщить научные разработки и открытия многих других ученых и сформулировать на их основе принципиально новое.
Принципы фон Неймана
Самым главным следствием этих принципов можно назвать то, что теперь программа уже не была постоянной частью машины (как например, у калькулятора). Программу стало возможно легко изменить. А вот аппаратура, конечно же, остается неизменной, и очень простой.
Для сравнения, программа компьютера ENIAC (где не было хранимой в памяти программы) определялась специальными перемычками на панели. Чтобы перепрограммировать машину (установить перемычки по-другому) мог потребоваться далеко не один день. И хотя программы для современных компьютеров могут писаться годы, однако они работают на миллионах компьютеров после несколько минутной установки на жесткий диск.
Как работает машина фон Неймана
Программы и данные вводятся в память из устройства ввода через арифметико-логическое устройство. Все команды программы записываются в соседние ячейки памяти, а данные для обработки могут содержаться в произвольных ячейках. У любой программы последняя команда должна быть командой завершения работы.
Команда состоит из указания, какую операцию следует выполнить (из возможных операций на данном «железе») и адресов ячеек памяти, где хранятся данные, над которыми следует выполнить указанную операцию, а также адреса ячейки, куда следует записать результат (если его требуется сохранить в ЗУ).
Арифметико-логическое устройство выполняет указанные командами операции над указанными данными.
Из арифметико-логического устройства результаты выводятся в память или устройство вывода. Принципиальное различие между ЗУ и устройством вывода заключается в том, что в ЗУ данные хранятся в виде, удобном для обработки компьютером, а на устройства вывода (принтер, монитор и др.) поступают так, как удобно человеку.
УУ управляет всеми частями компьютера. От управляющего устройства на другие устройства поступают сигналы «что делать», а от других устройств УУ получает информацию об их состоянии.
Управляющее устройство содержит специальный регистр (ячейку), который называется «счетчик команд». После загрузки программы и данных в память в счетчик команд записывается адрес первой команды программы. УУ считывает из памяти содержимое ячейки памяти, адрес которой находится в счетчике команд, и помещает его в специальное устройство — «Регистр команд». УУ определяет операцию команды, «отмечает» в памяти данные, адреса которых указаны в команде, и контролирует выполнение команды. Операцию выполняет АЛУ или аппаратные средства компьютера.
В результате выполнения любой команды счетчик команд изменяется на единицу и, следовательно, указывает на следующую команду программы. Когда требуется выполнить команду, не следующую по порядку за текущей, а отстоящую от данной на какое-то количество адресов, то специальная команда перехода содержит адрес ячейки, куда требуется передать управление.
Функциональная организация фон-неймановской ВМ
Функциональная организация фон—неймановской ВМ
Данная глава посвящена рассмотрению базовых принципов построения и функционирования фон-неймановских вычислительных машин.
Функциональная схема фон—неймановской вычислительной машины
Чтобы получить более детальное представление о структуре и функциях устройств ВМ, обратимся к схеме гипотетической машины с аккумуляторной архитектурой (рис. 3.1). Для упрощения изложения приняты следующие характеристики машины:
— Одноадресные команды. Адресная часть команды содержит только один адрес. При выполнении операций с двумя операндами предполагается, что другой операнд находится в специальном регистре АЛ У — аккумуляторе, а результат также остается в аккумуляторе.
— Единство форматов. Длина команд и данных совпадает с разрядностью ячеек памяти, то есть любая команда или операнд занимают только одну ячейку памяти. Таким образом, адрес очередной команды в памяти может быть получен путем прибавления единицы к адресу текущей команды, а для извлечения из памяти любой команды или любого операнда достаточно одного обращения к памяти.
На функциональной схеме (см. рис. 3.1) показаны типовые узлы каждого из основных устройств ВМ, а также сигналы, инициирующие выполнение отдельных операций по пересылке информации и ее обработке, необходимых для функционирования машины.
Назначение устройства управления (УУ) было определено ранее при рассмотрении структурной схемы ВМ, где отмечалось, что эта часть ВМ организует автоматическое выполнение программ и функционирование ВМ как единой системы. Теперь остановимся на описании узлов, реализующих целевую функцию УУ.
Рис. 3.1. Функциональная схема гипотетической фон-неймановской ЭВМ
Счетчик команд (СК) — неотъемлемый элемент устройства управления любой ВМ, построенной в соответствии с фон-неймановским принципом программного управления. Согласно этому принципу соседние команды программы располагаются в ячейках памяти со следующими по порядку адресами и выполняются преимущественно в той же очередности, в какой они размещены в памяти ВМ. Таким образом, адрес очередной команды может быть получен путем увеличения адреса ячейки, из которой была считана текущая команда, на длину выполняемой команды, представленную числом занимаемых ею ячеек. Реализацию такого режима и призван обеспечивать счетчик команд — двоичный счетчик, в котором хранится и модифицируется адрес очередной команды программы. Перед началом вычислений в СК заносится адрес ячейки основной памяти, где хранится команда, которая должна быть выполнена первой. В процессе выполнения каждой команды путем увеличения содержимого СК на длину выполняемой команды в счетчике формируется адрес следующей подлежащей выполнению команды. В рассматриваемой ВМ любая команда занимает одну ячейку, поэтому содержимое СК увеличивается к единицу, что обеспечивается подачей сигнала управления +1СК. По завершении текущей команды адрес следующей команды программы всегда берется из счетчика команд. Для изменения естественного порядка вычислений (перехода в иную точку программы) достаточно занести в СК адрес точки перехода.
Хотя термин «счетчик команд» считается общепринятым, его нельзя признать вполне удачным из-за того, что он создает неверное впечатление о задачах данного узла. По этой причине разработчики ВМ используют иные названия, в частности программный счетчик (PC, Program Counter) или указатель команды (IP, Instruction Pointer). Последнее определение представляется наиболее удачным, поскольку точнее отражает назначение рассматриваемого узла УУ.
В заключение добавим, что в ряде ВМ счетчик команд реализуется в виде обычного регистра, а увеличение его содержимого производится внешней схемой (схемой инкремента/декремента).
Счетчик команд определяет лишь местоположение команды в памяти, но не содержит информации о том, что это за команда. Чтобы приступить к выполнению команды, ее необходимо извлечь из памяти и разместить в регистре команды (РК). Этот этап носит название выборки команды. Только с момента загрузки команды в РК она становится «видимой» для процессора. В РК команда хранится в течение всего времени ее выполнения. Как уже отмечалось ранее, любая команда содержит два поля: поле кода операции и поле адресной части. Учитывая это обстоятельство, регистр команды иногда рассматривают как совокупность двух регистров —регистра кода операции (РКОп) и регистра адреса (РА), в которых хранятся соответствующие составляющие команды.
Если команда занимает несколько последовательных ячеек, то код операции всегда находится в том слове команды, которое извлекается из памяти первым. Это позволяет по коду операции определить, требуются ли считывание из памяти и загрузка в РК остальных слов команды. Собственно выполнение команды начинается только после занесения в РК ее полного кода.
Регистр адреса памяти (РАП) предназначен для хранения адреса ячейки основной памяти вплоть до завершения операции (считывание или запись) с этой ячейкой. Наличие РАП позволяет компенсировать различия в быстродействии ОП и прочих устройств машины.
Регистр данных памяти (РДП) призван компенсировать разницу в быстродействии запоминающих устройств и устройств, выступающих в роли источников и потребителей хранимой информации. В РДП при чтении заносится содержимое ячейки ОП, а при записи — помещается информация, подлежащая сохранению в ячейке ОП. Собственно момент считывания и записи в ячейку определяется сигналами ЧтЗУ и ЗпЗУ соответственно.
Микропрограммный автомат (МПА) правомочно считать центральным узлом устройства управления. Именно МПА формирует последовательность сигналов управления, в соответствии с которыми производятся все действия, необходимые для выборки из памяти и выполнения команд. Исходной информацией для МПА служат: декодированный код операции, состояние признаков (флагов), характеризующих результат предшествующих вычислений, а также внешние запросы на прерывание текущей программы и переход на программу обслуживания прерывания.
Это устройство, как следует из его названия, предназначено для арифметической и логической обработки данных. В машине, изображенной на рис. 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. Пример граф-схемы микропрограммы
Для детализированного задания микропрограмм используют языки микропро граммирования. Языки микропрограммирования (ЯМП) обеспечивают описали функционирования ВМ в терминах микроопераций.
Если средства языка ориентированы на запись микропрограммы без привязки к конкретным структурам для реализации этой микропрограммы, то такой ЯМП называют языком функционального микропрограммирования, а соответствующие микропрограммы — функциональными микропрограммами [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 байта):
Описания модулей ПЗУ, содержащих по 8разрядных слова:
Здесь адреса слов указаны в шестнадцатеричном коде, в каждом слове старший разряд имеет номер 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).
Если регистры связаны между собой не непосредственно, а через шину, которая используется многими источниками и приемниками данных, то передача слова между ними возможна при одновременном выполнении двух микрооперации, и описание принимает вид:
ВРгВ: ША := РгВ, ПРгА: РгА := ША
ПРгА, ВРгВ: РгА := ША := РгВ.
Здесь метки одновременно формируемых сигналов управления перечисляются через запятую и образуют микрокоманду.
° Микрооперации составления слова — обеспечивают получение целого слова большой разрядности из нескольких малоразрядных слов.
Пусть в 16-разрядный регистр А нужно передать слово, старшие разряды которого содержатся в 8-разрядном регистре В, а младшие — в 8-разрядном регистре С. Соответствующую микрооперацию можно описать так:
ПРгА: РгА(15-0) := РгВ(7-0) • РгС(7-0),
где точка (•) — знак присоединения.
Операция присоединения предназначена для присоединения значения слова, указанного справа от знака операции, к значению слова, расположенного слева от
Микрооперации сдвига служат для изменения положения разрядов слова. Положение разрядов изменяется путем перемещения каждого разряда на несколько позиций влево или вправо.
Микрооперации сдвига слова в аккумуляторе, например, могут быть описаны в следующих формах:
* R2AK: АК(15-0) := РС(1-0) • АК(15-2) — сдвиг на два разряда вправо с введением в два старших освобождающихся разряда содержимого двух младших разрядов регистра PC;
*LlAK: AK(15-0) := АК(14-0) • 0 — сдвиг на один разряд влево с занесением в освобождающийся разряд нуля;
*Rn(A) — удаление п младших правых разрядов из слова А, то есть сдвиг значения на п разрядов вправо;
* Ln(A) — удаление п старших левых разрядов из слова А, то есть сдвиг значения
на п разрядов влево.
Использование этих процедур приводит к представлению ранее рассмотренных микрооператоров в форме:
Микрооперация счета — обеспечивает изменение значения слова на единицу:
Микрооперация сложения — служит для присваивания слову суммы слагаемых:
Логические микрооперации — присваивают слову значение, полученное поразрядным применением функций И (), ИЛИ (v), исключающее ИЛИ () к парам соответствующих разрядов операндов:
И: АК := РгХ л PrY; M2: АК := РгХ PrY.
Микрооперация двоичного декодирования — состоит в преобразовании п-разрядного двоичного позиционного кода А в 2п-разрядный унитарный код В. В унитарном коде только один разряд принимает единичное значение, а все остальные равны нулю. Номер разряда К, который принимает значение 1, определяется значением кода А =
Принято следующее условное обозначение: В := decod (A).
Комментарии к микрооперациям
Микрооперации могут снабжаться произвольными комментариями. Комментарии записываются справа от микрооперации и заключаются в угловые скобки. Например,
+1СК := СК := СК + 1 (Увеличение содержимого СК на единицу).
Совместимостью называется свойство совокупности микроопераций, гарантирующее возможность их параллельного выполнения [21]. Различают функциональную и структурную совместимости. Пусть S1,S2, S3, S4 — подмножества слов из множества S. Тогда микрооперации называются функционально совместимыми, если то есть если микрооперации присваивают значения разным словам. В функциональных микропрограммах, описывающих алгоритмы выполнения операций без учета структуры вычислительной машины, одновременно могут выполняться только функционально совместимые микрооперации.
Структура ВМ может внести дополнительные ограничения на возможность параллельного выполнения микроопераций. Микрооперации называются структурно несовместимыми, если из-за ограничений, обусловленных структурой ВМ, они не могут выполняться параллельно. Обычно структурная несовместимость связана с использованием микрооперациями одного и того же оборудования.
Программа в фон-неймановской ЭВМ реализуется центральным процессором (ЦП) посредством последовательного исполнения образующих эту программу команд. Действия, требуемые для выборки (извлечения из основной памяти) и выполнения команды, называют циклом команды. В общем случае цикл команды включает в себя несколько составляющих (этапов):
*формирование адреса следующей команды;
*вычисление адресов операндов;
Перечисленные этапы выполнения команды в дальнейшем будем называть стандартным циклом команды. Отметим, что не все из этапов присутствуют присутствуют при выполнении любой команды (зависит от типа команды), тем не менее этапы выборки декодирования, формирования адреса следующей команды и исполнения имеют место всегда.
В определенных ситуациях возможны еще два этапа:
и реакция на прерывание.
Кратко охарактеризуем каждый из вышеперечисленных этапов стандартного цикла команды. При изучении данного материала следует учитывать, что приводимое описание имеет целью лишь дать представление о сущности каждого из этапов. В то же время распределение функций по разным этапам цикла команды и последовательность выполнения некоторых из них в реальных ВМ могут отличаться от излагаемых.
Цикл любой команды начинается с того, что центральный процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд (СК). Двоичный код команды помещается в регистр команды (РК) и с этого момента становится «видимым» для процессора. Без учета промежуточных пересылок и сигналов управления это можно описать следующим образом: РК := ОП[(СК)].
Приведенная запись охватывает весь этап выборки, если длина команды совпадает с разрядностью ячейки памяти. В то же время система команд многих ВМ предполагает несколько форматов команд, причем в разных форматах команда может занимать 1, 2 или более ячеек, а этап выборки команды можно считать завершенным лишь после того, как в РК будет помещен полный код команды. Информация о фактической длине команды содержится в полях кода операции и способа адресации. Обычно эти поля располагают в первом слове кода команды, и для выяснения необходимости продолжения процесса выборки необходимо предварительное декодирование их содержимого. Такое декодирование может быть произведено после того, как первое слово кода команды окажется в РК. В случае многословного формата команды процесс выборки продолжается вплоть до занесения в РК всех слов команды. Например, для 16-разрядной команды, занимающей две 8-разрядные ячейки памяти, выборку можно описать так:
Этап формирования адреса следующей команды
Для фон-неймановских машин характерно размещение соседних команд программы в смежных ячейках памяти. Если извлеченная команда не нарушает естественного порядка выполнения программы, для вычисления адреса следующей выполняемой команды достаточно увеличить содержимое счетчика команд на длину текущей команды, представленную количеством занимаемых кодом команды ячеек памяти. Для однословной команды это описывается микрооперацией: +1СК: СК •=СК+1
Длина команды, а также то, способна ли она изменить естественный порядок выполнения команд программы, выясняются в ходе ранее упоминавшегося предварительного декодирования. Если извлеченная команда способна изменить по следовательность выполнения программы (команда условного или безусловного перехода, вызова процедуры и т. п.), процесс формирования адреса следующей команды переносится на этап исполнения операции. В силу сказанного, в ряде BМ рассматриваемый этап цикла команды следует не за выборкой команды, а находится в конце цикла.
Этап декодирования команды
После выборки команды она должна быть декодирована, для чего ЦП расшифровывает находящийся в РК код команды. В результате декодирования выясняются следующие моменты:
*находится ли в РК полный код команды или требуется дозагрузка остальных слов команды;
* какие последующие действия нужны для выполнения данной команды;
* если команда использует операнды, то откуда они должны быть взяты (номер регистра или адрес ячейки основной памяти);
* если команда формирует результат, то куда этот результат должен быть направлен.
Ответы на два первых вопроса дает расшифровка кода операции, результатом которой может быть унитарный код, где каждый разряд соответствует одной из команд, что можно описать в виде УнитК := decod(Kon). На практике вместо унитарного кода могут встретиться самые разнообразные формы представления результатов декодирования, например адрес ячейки специальной управляющей памяти, где хранится первая микрокоманда микропрограммы для реализации указанной в команде операции.
Полное выяснение всех аспектов команды, помимо расшифровки кода операции, требует также анализа адресной части команды, включая поле способа адресации.
По результатам декодирования производится подготовка электронных схем ВМ к выполнению предписанных командой действий.
Этап вычисления адресов операндов
Этап имеет место, если в процессе декодирования команды выясняется, что команда использует операнды. Если операнды размещаются в основной памяти, осуществляется вычисление их исполнительных адресов, с учетом указанного в команде способа адресации. Так, в случае индексной адресации для получения исполни тельного адреса производится суммирование содержимого адресной части команды и содержимого индексного регистра.
Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в определенные регистры процессора. Например, в случае арифметической команды операнд после извлечения из памяти может быть загружен во входной регистр АЛУ. Однако чаще операнды предварительно заносятся в специальные вспомогательные регистры процессора, а их пересылка на вход АЛУ происходит на этапе исполнения операции.
На этом этапе реализуется указанная в команде операция. В силу различия сущности каждой из команд ВМ, содержание этого этапа также сугубо индивидуально. Этапы исполнения некоторых команд будут рассмотрены ниже на примере выполнения учебной программы для приведенной на рис. 3.1 гипотетической вычислительной машины.
Этап записи результата присутствует в цикле тех команд, которые предполагают занесение результата в регистр или ячейку основной памяти. Фактически его можно считать частью этапа исполнения, особенно для тех команд, которые помещают результат сразу в несколько мест.
Описание стандартных циклов команды для гипотетической машины
Для анализа содержания стандартных циклов команды обратимся к гипотетической ВМ (см. рис. 3.1), для которой составим программу сложения двух чисел и вывода суммы на устройство вывода, если эта сумма не равна 0.
Список необходимых команд приведен в табл. 3.1, а сама программа — в табл. 3.2. Предполагается, что команды программы будут размещаться в основной памяти, начиная с адреса 100, а операнды — с адреса 200. Для вывода результата назначим порт с номером 5.
Таблица 3.1. Команды гипотетической вычислительной машины
Загрузка в аккумулятор содержимого ячейки ОП с адресом Adr
Сложение содержимого аккумулятора с содержимым ячейки ОП, имеющей адрес Adr. Результат остается в аккумуляторе
Переход к команде, хранящейся по адресу Adr, если результат предыдущей арифметической операции равен 0, иначе естественный порядок вычислений не нарушается
Вывод содержимого аккумулятора на периферийное устройство, подключенное к порту с номером PortN
Таблица 3.2. Программа к рассматриваемому примеру
Адрес ячейки или номер
Перед запуском программы необходимо занести в СК адрес ячейки основной памяти, содержащей первую выполняемую команду программы, то есть 100.
Поскольку выборка и декодирование, а также формирование адреса следующей команды для всех команд выполняются по идентичной схеме, опишем их однократно, детализируя в дальнейшем лишь остальные этапы основного цикла команды. Кроме того, напомним, что все сигналы управления и управляющие коды формируются микропрограммным автоматом, поэтому в дальнейшем ссылки на МПА будут опущены.
Выборка команды. Сначала остановимся на содержании этапа выборки, идентичного для всех команд программы. На этом этапе происходит извлечение двоичного кода команды из ячейки основной памяти и его занесение в регистр команды:
СКРАП: РАП := СК, ЧтЗУ: РДП := ОГЩСК)];
В первом такте вырабатывается сигнал управления СКРАП, инициирующий пересылку содержимого счетчика команд в регистр адреса памяти. По сигналу ЧтЗУ содержимое ячейки, выбранной дешифратором адреса памяти (код команды), переписывается в регистр данных памяти. В следующем такте формируются сигналы РДПКОп и РДПРА, по которым содержимое РДП передается в РК, при этом поле РКОп заполняется кодом операции, а поле РА — адресной частью команды.
Декодирование команды. Сразу же после размещения кода операции в РК производится его декодирование, что можно описать микрооператором УнитК := decod(Kon). Прежде всего выясняется, может ли данная команда изменить последовательность вычислений, что влияет на дальнейшее выполнение цикла команды. Для всех команд, кроме команд управления (в нашем случае это BRZ), начинается этап формирования адреса следующей команды.
Формирование адреса следующей команды. В фон-неймановских ВМ команды программы располагаются в естественном порядке следования, в соседних ячеи ках памяти, и выполняются в том же порядке. Для формирования адреса следующей команды достаточно увеличить содержимое СК на единицу: +1СК: СК := СК +1
В рассматриваемой ВМ предусмотрена только прямая адресация, поэтому эта вычисления адресов операндов опускается.
В анализируемой программе этап выборки операндов предполагается только в командах загрузки аккумулятора и сложения. Для простоты изложения будем расценивать выборку операндов как часть этапа исполнения соответствующих операций. В свою очередь, этапы исполнения специфичны для каждой команды и рассматриваются применительно к каждой команде нашей программы.
Исполнение операции загрузки аккумулятора. Команда LDA 200 обеспечивает несение в аккумулятор содержимого ячейки ОП с адресом 200, то есть первого операнда, и реализуется следующим образом:
*МПА вырабатывает сигнал РАРАП, передающий содержимое РА (адресную часть команды) в РАП;
*по сигналу ЧтЗУ содержимое ячейки 200 заносится в РДП;
*по сигналу РДПАкк первый операнд из РДП помещается в аккумулятор.
На языке микроопераций это выглядит так:
РАРАП: РАП := РК(РА); ЧтЗУ: РДП := ОП[200];
Исполнение операции сложения. Команда ADD 201 обеспечивает суммирование текущего содержимого аккумулятора с содержимым ячейки 201 (вторым операндом). Результат сложения остается в аккумуляторе. Одновременно с этим в АЛУ формируются признаки результата:
* МПА вырабатывает сигнал РАРАП, и содержимое РА поступает в РАП;
* по сигналу ЧтЗУ содержимое ячейки 201 заносится в РДП;
* сигнал управления РДП РХ вызывает пересылку операнда 2 из РДП в регистр РХ АЛУ; одновременно с этим МПА вырабатывает сигнал АккРУ, по которому в PY переписывается содержимое аккумулятора, то есть хранящийся там первый операнд; операционный блок выполняет над данными, расположенными в РХ и PY, операцию, заданную в коде операции команды (в нашем случае — сложение);
* по сигналу ОПБАкк информация с выхода ОПБ загружается в аккумулятор.
Сказанное может быть описано в виде: РАРАП: РАП := РК(РА), ЧтЗУ: РДП := ОП[201];
РДПРХ: РХ := РДП, АккРУ: PY := Акк, ОПБ := РХ + PY;
Исполнение операции условного перехода. Для изменения порядка выполнения программы используются команды безусловного (БП) и условного (УП) переходов, в нашем случае — команда BRZ 104. Адрес перехода хранится в адресном поле команды. Команда анализирует хранящийся в РПрз признак (флаг) нулевого результата, выработанный в АЛУ на предыдущем этапе вычислений, и формирует адрес следующей команды в зависимости от состояния этого признака. При нулевом значении флага (условие перехода не выполнено) естественный порядок выполнения программы не нарушается, и адрес следующей команды формируется обычным образом, путем увеличения содержимого СК на единицу (+1СК: СК := СК=1) При единичном значении флага (условие перехода выполнено) в СК заносится содержимое РА. Напомним, что в РА находится адресная часть извлеченной из ОП команды перехода, то есть адрес точки перехода. Сказанное можно записать в виде БПУП: СК := РК(РА). Поскольку для команд перехода формирование адреса следующей команды по сути является и исполнением их операций, описании микрооперации для них обычно относят к этапу исполнения.
Исполнение операции вывода. Команда OUT 5 обеспечивает вывод содержимого аккумулятора на периферийное устройство (ПУ), подключенное к порту вывода с номером 5. МПА вырабатывает управляющий сигнал РАДВВ, по которому адресная часть команды — номер порта вывода — из РА поступает на вход дешифратора номера порта ввода/вывода. В следующем такте по сигналу Выв содержимое аккумулятора через выбранный дешифратором порт вывода передается на подключенное к этому порту ПУ:
РАДВВ: ДВВ := РК(РА); Выв: Порт вывода 5 := Акк.
Исполнение операции останова. Команда HLT приводит к завершению вычислений. При этом вырабатывается сигнал Ост, нужный для того, чтобы известить операционную систему о завершении текущей программы.
Многие команды предполагают чтение операндов из памяти или запись в память. В простейшем случае в адресном поле таких команд явно указывается исполнительный адрес соответствующей ячейки ОП. Однако часто используется и другой способ указания адреса, когда адрес операнда хранится в какой-то ячейке памяти, а в команде указывается адрес ячейки, содержащей адрес операнда. Как уже отмечалось ранее, подобный прием называется косвенной адресацией. Чтобы прочитать или записать операнд, сначала нужно извлечь из памяти его адрес и только после этого произвести нужное действие (чтение или запись операнда), иными словами, требуется выполнить два обращения к памяти. Это, естественно, отражается и на цикле команды, в котором появляется косвенная адресация. Этап косвенной адресации можно отнести к этапу вычисления адресов операндов, поскольку его сущность сводится к определению исполнительного адреса операнда.
Применительно к вычислительной машине, приведенной на рис. 3.1, при косвенной адресации имеют место следующие микрооперации:
РАРАП: РАП := РК(РА), ЧтЗУ: РДП := ОП[(РА)];
Иными словами, содержимое адресного поля команды в регистре команд используется для обращения к ячейке ОП, в которой хранится адрес операнда, после чего извлеченный из памяти исполнительный адрес операнда помещается в адрес ное поле регистра команды на место косвенного адреса. Дальнейшее выполнейИ команды протекает стандартным образом.
Практически во всех ВМ предусмотрены средства, благодаря которым модули ввода/вывода (и не только они) могут прервать выполнение текущей программы для внеочередного выполнения другой программы, с последующим возвратом к прерванной.
Первоначально прерывания были введены для повышения эффективности вычислений при работе с медленными ПУ. Положим, что процессор пересылает данные на принтер, используя стандартный цикл команды. После каждой операции записи ЦП будет вынужден сделать паузу, в ожидании подтверждения от принтера об обработке символа. Длительность этой паузы может составлять сотни и тысячи циклов команды. Ясно, что такое использование ЦП очень неэффективно. В случае прерываний, пока протекает операция ввода/вывода, ЦП способен выполнять другие команды.
В упрощенном виде процедуру прерывания можно описать следующим образом Объект, требующий внеочередного обслуживания, выставляет на соответствующем входе ЦП сигнал запроса прерывания. Перед переходом к очередному циклу команды процессор проверяет этот вход на наличие запроса. Обнаружив запрос, ЦП запоминает информацию, необходимую для продолжения нормальной работы после возврата из прерывания, и переходит к выполнению программы обработки прерывания (обработчика прерывания). По завершении обработки прерывания ЦП восстанавливает состояние прерванного процесса, используя запомненную информацию, и продолжает вычисления. Описанный процесс иллюстрирует рис. 3.5.
В терминах цикла команды сказанное выглядит так. Для учета прерываний к циклу команды добавляется этап прерывания, в ходе которого процессор проверяет, не поступил ли запрос прерывания. Если запроса нет, ЦП переходит к этапу выборки следующей команды программы. При наличии запроса процессор:
1. Приостанавливает выполнение текущей программы и запоминает содержимое всех регистров, которые будут использоваться программой обработки прерывания. Это называется сохранением контекста программы. В первую очередь необходимо сохранить содержимое счетчика команд, аккумулятора и регистра признаков. Контекст программы обычно сохраняется в стеке.
2. Заносит в счетчик команд начальный адрес программы обработки прерывания.
Рис. 3.5. Передача управления при прерываниях
146 Глава 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:
Обозначив частоту появления операции i-го типа в (3.3) через , запишем окончательную формулу для расчета среднего быстродействия:
(3.4)
В выражении (3.4) вектор характеризует систему команд ВМ, а вектор называемый частотным вектором операций, характеризует алгоритм.
Очевидно, что для эффективной реализации алгоритма необходимо стремиться к увеличению Vср. Если Vном главным образом отталкивается от быстродействия элементной базы, то Vср очень сильно зависит от оптимальности выбора команд ВМ.
Формула (3.4) позволяет определить среднее быстродействие машины при реализации одного алгоритма. Рассмотрим более общий случай, когда полный алгоритм состоит из нескольких частных, периодически повторяемых алгоритмов. Среднее быстродействие при решении полной задачи рассчитывается по формуле:
(3.5)
где m — количество частных алгоритмов; — частота появления операций j-го частного алгоритма в полном алгоритме; qtj — частота операций i-го типа b j’-m частном алгоритме.
— цикличность включении j-го частного алгоритма в полном алгоритме.
Тогда за время T|пах в ВМ будет выполнено Nmax = a.jNj операций, а частоту появления операций j’-ro частного алгоритма в полном алгоритме можно определить из выражения
(3.6)
Для расчета по формулам (3.5, 3.6) необходимо знать параметры ВМ, представленные вектором < 1 2,3. l,>, параметры каждого j-го частного алгоритма — вектор
Производительность ВМ оценивается количеством эталонных алгоритме выполняемых в единицу времени:
Производительность при выполнении полного алгоритма оценивается по формуле
.(3.7)
Производительность является более универсальным показателем, чем среднее быстродействие, поскольку в явном виде зависит от порядка прохождения задач через ВМ.
Критерии эффективности вычислительных машин
Эффективность определяет степень соответствия ВМ своему назначению. Она измеряется либо количеством затрат, необходимых для получения определенного результата, либо результатом, полученным при определенных затратах. Произвести сравнительный анализ эффективности нескольких ВМ, принять решение на использование конкретной машины позволяет критерий эффективности.
Критерий эффективности — это правило, служащее для сравнительной оценки качества вариантов ВМ. Критерий эффективности можно назвать правилом предпочтения сравниваемых вариантов.
Строятся критерии эффективности на основе частных показателей эффективности (показателей качества). Способ связи между частными показателями определяет вид критерия эффективности.
Способы построения критериев эффективности
Возможны следующие способы построения критериев из частных показателей.
где Адо„ — допустимое значение i-го показателя. Например, если в качестве A1 выбирается производительность, а на показатели надежности Р и стоимости
Критерии эффективности вычислительных машин 151
накладываются ограничения, то критерий эффективности ВМ принимает вид
На втором шаге отыскивается min А2 при ограничении А1