Назад в библиотеку

ПРОГРАММНЫЕ МОДЕЛИ УСТРОЙСТВ ЭВМ

Автор:Жмакин Анатолий Петрович

При изучении принципов функционирования ЭВМ и их отдельных устройств могут решаться задачи двух типов: (1) изучение конкретных устройств конкретных ЭВМ и (2) изучение общих принципов функционирования и проектирования устройств.

Изучение конкретных устройств и конкретных ЭВМ (особенно современных) на практике может встречать определённые трудности. Действительно, доступу к внутренней структуре препятствуют, с одной стороны, интегральное исполнение системы на базе СБИС (возможности наблюдения внутренних состояний на кристалле СБИС весьма ограничены даже при наличии специальных интерфейсов), с другой стороны – операционные системы, под управлением которых работают современные ЭВМ. Кроме того, современные архитектурные решения (конвейеры, динамический параллелизм, многоуровневая виртуальная память) затрудняют наблюдения и понимание общих принципов функционирования и взаимодействия устройств, особенно на начальном этапе изучения.

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

Изучение общих принципов функционирования ЭВМ и их отдельных устройств на разных уровнях позволит специалисту при необходимости достаточно легко разобраться с конкретными техническими решениями.

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

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

В настоящей статье обсуждается создание и использование одного из классов программных моделей устройств ЭВМ. Использование программных моделей ЭВМ (на уровне системы команд) описано, например, в пособии [2].

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

Для выполнения в ЭВМ операций над информацией используются операционные устройства– арифметико-логические, управления, памяти контроллеры внешних устройств. Несмотря на различие реализуемых ими функций, существуют общие принципы описания и синтеза устройств ЭВМ [1, 2].

Функцией операционного устройства является выполнение заданного множества операций F={f1, f2, … fK} над входными словами из множества DI с целью вычисления выходных слов из множества DO, представляющих результаты операций DO=fk(DI), k=1,...,K.

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

Рисунок. 1

Любая микрооперация (сдвиг, суммирование, пересылка, счёт и т.п.) может быть выполнена за один такт дискретного времени. Более того, часто за один такт могут быть выполнены несколько микроопераций. Совокупность микроопераций, выполняемых за один такт, принято называть микрокомандой. Таким образом, любая операция fk Î F может быть представлена последовательностью микрокоманд.

В функциональном и структурном отношении операционное устройство, входящее в состав ЭВМ, удобно представить разделенным на две части, взаимодействующие между собой и с другими устройствами: операционный и управляющий автоматы (рис. 1).

Операционный автомат (ОА) служит для хранения слов информации, выполнения набора микроопераций и вычисления значений логических условий, то есть операционный автомат является структурой, организованной для выполнения действий над информацией. На вход ОА подаются входные данные DI, которые в соответствии с алгоритмом операции преобразуются в выходные данные DO. Кроме того, ОА вырабатывает множество {х} осведомительных сигналов (логических условий) для управляющего автомата.

Управляющий автомат (УА) генерирует последовательность управляющих сигналов {у}, обеспечивающую выполнение в операционном автомате заданной последовательности микроопераций, которая реализует алгоритм выполняемой операции fk Î F. Управляющая последовательность генерируется в соответствии с заданным алгоритмом и с учетом значений логических условий {х}, формируемых ОА.

Для изучения общих принципов организации, функционирования и синтеза устройств удобнее всего оказалось использовать арифметико-логическое устройство (АЛУ). Действительно, функции, реализуемые запоминающими устройствами, слишком примитивны (чтение, запись, хранение), функции устройств управления слишком разнообразны и специфичны и требуют отдельного анализа. Зато функции АЛУ интуитивно понятны (все знают арифметику, хотя бы и не машинную) и могут быть достаточно сложными, чтобы позволить в полной мере проиллюстрировать особенности поведения и построения устройств.

Программная модель АЛУ, разработанная автором совместно с В.С.Кузьминовым, включает в себя модели двух автоматов – операционного (ОА) и управляющего (УА), которые могут работать автономно или во взаимодействии друг с другом.

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

Операционный автомат (рис. 2) включает в себя два входных и четыре внутренних 8-разрядных регистра, 8-разрядный арифметико-логический блок, выполняющий бинарные операции сложения, вычитания, конъюнкции, дизъюнкции и неравнозначности, реверсивный сдвигатель и ряд вспомогательных схем. Управление элементарными преобразованиями информации осуществляется в автономном режиме с помощью микроопераций, которые вводятся путём установки флажков в соответствующую позицию в окне Операционный автомат. Выполнение набранной микрокоманды осуществляется при нажатии кнопки Шаг.

Рисунок 2

Список микроопераций и формируемых логических условий может быть выведен на экран в отдельном окне.

8-разрядное арифметико-логическое устройство снабжено триггерами входного и выходного переносов (заёмов). Входной перенос может быть установлен в произвольное значение, а значение выходного переноса проанализировано как одно из логических условий.

В схему сдвигателя включены два дополнительных триггера, для данных, поступающих «слева» и «справа» (DL и DR соответственно). Состояние триггеров может быть установлено произвольно и проанализировано в качестве значений логических условий. Сдвигатель обеспечивает возможность передачи входного байта Q на выход F без сдвига, осуществляет обычные правый и левый сдвиги на один разряд и два специальных сдвига:

F[7:0].DR := DR.Q[7:0],

F[7:0] := Q[6:0].(p8ºDL),

используемых в операциях умножения и деления соответственно.

Предложенная структура операционного автомата позволяет реализовать как простые операции, представленные линейными и разветвляющимися алгоритмами (алгебраическое сложение/вычитание в различных кодах, логические операции), так и более сложные циклические алгоритмы (умножение, деление, определение веса двоичного вектора, вычисление расстояния Хэмминга между векторами и др.).

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

Управляющий автомат можно использовать в двух режимах. В режиме автономной работы с его помощью можно реализовать любую управляющую микропрограмму, параметры которой вписываются в приведённые выше ограничения. Распределение микроопераций по подмножествам и кодировка микроопераций выполняются пользователем с учётом выбранного отношения совместимости на структуре абстрактного ОА. Никаких ограничений, кроме приведённых выше, на распределение и кодировку микроопераций структура УА не накладывает. Результат работы УА в автономном режиме – последовательность микрокоманд, выданных УА при заданных значениях логических условий – выводятся в специальном окне. Условия могут задаваться как перед началом выполнения микропрограммы, так и в процессе её выполнения (изменять значения условий можно после любого очередного шага).

В частном случае в режиме автономной работы можно выполнить и микропрограмму, реализуемую в ОА АЛУ. Для этого случая можно воспользоваться стандартным разбиением множества микроопераций ОА и стандартной их кодировкой, которая загружается в УА по умолчанию. Однако, пользователь вправе произвольно изменить предложенные разбиение и кодировку, разумеется, с учётом упомянутых выше ограничений. Таким образом можно записать в память УА микропрограмму выполнения арифметической операции, предварительно отлаженную на структуре ОА. Далее можно отладить работу УА, проверить правильность кодировок и переходов в автономном режиме, задавая различные значения логических условий и фиксируя последовательности микрокоманд в окне текстового файла Микропрограмма. Наконец, включив режим совместной работы ОА и УА, можно протестировать выполнение арифметической команды на всевозможных наборах операндов.

Таким образом, используя программную модель АЛУ в учебных курсах, связанных с изучением машинной арифметики, теории автоматов, организации устройств ЭВМ, можно:

  1. изучать на практике различные алгоритмы арифметических (и логических) преобразований с использованием прямых, обратных или дополнительных кодов;
  2. изучать на практике методы построения управляющих автоматов с программируемой логикой;
  3. изучать на практике организацию устройств ЭВМ (на примере АЛУ).

В частности, цикл лабораторных работ, выполняемых на модели АЛУ студентами специальности МОАИС предполагает выполнение следующих типов заданий:

  1. Разработать алгоритм и отладить микропрограмму на модели ОА АЛУ для выполнения операции алгебраического сложения (вычитания) двоичных чисел представленных в прямом (обратном, дополнительном) коде. Сформировать код результата и признак переполнения. Предложить структуру ОА, оптимальную для выполнения разработанного алгоритма.
  2. «Погрузить» отлаженную микропрограмму в модель УА. Убедиться в правильности работы АЛУ при выполнении заданной операции на различных наборах слагаемых (одинаковые и разные знаки, наличие и отсутствие переполнения).
  3. Разработать алгоритм и отладить микропрограмму на модели ОА АЛУ для выполнения одной из циклических операций – умножения, деления (различными способами), вычисления расстояния Хэмминга между заданными векторами и др.

Список литературы

  1. Майоров С.А., Новиков Г.И. Структуры ЭВМ. Л.: Машиностроение, 1979. -384 с.
  2. Жмакин А. П. Архитектура ЭВМ. — СПб.: БХВ-Петербург, 2006. -320 с.