Структура фон неймановской вычислительной машины

Закат архитектуры фон Неймана, о котором вы еще не слышали и что будет дальше?

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

Структура фон неймановской вычислительной машины

На изображении отладочная плата с расположенными чипами 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-го частного алгоритма — вектор., и параметры полного алгоритма — вектор<Структура фон неймановской вычислительной машины1;Структура фон неймановской вычислительной машины2•••Структура фон неймановской вычислительной машиныm>

Производительность ВМ оценивается количеством эталонных алгоритме выполняемых в единицу времени:

Структура фон неймановской вычислительной машины

Производительность при выполнении полного алгоритма оценивается по формуле

Структура фон неймановской вычислительной машины.(3.7)

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

Критерии эффективности вычислительных машин

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

Критерий эффективности — это правило, служащее для сравнительной оцен­ки качества вариантов ВМ. Критерий эффективности можно назвать правилом предпочтения сравниваемых вариантов.

Строятся критерии эффективности на основе частных показателей эффектив­ности (показателей качества). Способ связи между частными показателями опре­деляет вид критерия эффективности.

Способы построения критериев эффективности

Возможны следующие способы построения критериев из частных показателей.

Структура фон неймановской вычислительной машины

где Адо„ — допустимое значение i-го показателя. Например, если в качестве A1 выбирается производительность, а на показатели надежности Р и стоимости

Критерии эффективности вычислительных машин 151

накладываются ограничения, то критерий эффективности ВМ принимает вид

Структура фон неймановской вычислительной машины

На втором шаге отыскивается min А2 при ограничении А1

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *