Часть III. Описание архитектуры учебной эвм
Скачать 2.15 Mb.
|
Лабораторный практикум построен в расчете на изучение взаимодействия устройств в структуре ЭВМ с помощью программной модели некоторой абстрактной учебной ЭВМ, которая программируется на языке ассемблера. Часто путь современного программиста начинается со знакомства с языком (языками) высокого уровня и все его общение с компьютером проходит с использованием таких языков. Во многих случаях знание операторов языка высокого уровня, структуры данных и способов их обработки является достаточным для создания различных полезных приложений. Однако по-настоящему решать проблемы, связанные с управлением различной, особенно нестандартной, аппаратурой (программирование "по железу") невозможно без знания ассемблера [14]. Не случайно практически все компиляторы языков высокого уровня содержат средства связи своих модулей с модулями на ассемблере либо поддерживают выход на ассемблерный уровень программирования. Однако проводить начальное обучение программированию на низком уровне с рассмотрением механизмов взаимодействия устройств на реальном языке, например x86 на персональной ЭВМ, не всегда удобно. В этом случае между пользователем и аппаратурой ЭВМ присутствует операционная система (ОС), которая существенно ограничивает желания пользователя экспериментировать с аппаратными средствами. Для преодоления этих ограничений необходимо обладать глубокими знаниями как ОС, так и аппаратных средств ЭВМ. Предлагаемая для использования программная модель учебной ЭВМ отражает все основные особенности систем команд и структур современных простых ЭВМ, включает в себя, помимо процессора и памяти, модели нескольких типичных внешних устройств. Модель позволяет изучить основы программирования на низком уровне, вопросы взаимодействия различных уровней памяти в составе ЭВМ и способы взаимодействия процессора с внешними устройствами. http://educomp.runnet.ru/model/ ГЛАВА 8 Описание архитектуры учебной ЭВМ Современные процессоры и операционные системы — не слишком благоприятная среда для начального этапа изучения архитектуры ЭВМ. Одним из решений этой проблемы может быть создание программных моделей учебных ЭВМ, которые, с одной стороны, достаточно просты, чтобы обучаемый мог освоить базовые понятия архитектуры (система команд, командный цикл, способы адресации, уровни памяти, способы взаимодействия процессора с памятью и внешними устройствами), с другой стороны — архитектурные особенности модели должны соответствовать тенденциям развития современных ЭВМ. Программная модель позволяет реализовать доступ к различным элементам ЭВМ, обеспечивая .удобство и наглядность. С другой стороны, модель позволяет игнорировать те особенности работы реальной ЭВМ, которые на данном уровне рассмотрения не являются существенными. Далее приводится описание программной модели учебной ЭВМ1, предназначенной для начальных этапов изучения архитектуры (в т. ч. на младших курсах вуза и даже в школе). Именно этим объясняется использование в модели десятичной системы счисления для кодирования команд и представления данных. 8.1. Структура ЭВМ Моделируемая ЭВМ включает процессор, оперативную (ОЗУ) и сверхоперативную память, устройство ввода (УВв) и устройство вывода (УВыв). Процессор, в свою очередь, состоит из центрального устройства управления (УУ), арифметического устройства (АУ) и системных регистров (СК, РС, 5Р и др.). Структурная схема ЭВМ показана на рис. 8.1. В ячейках ОЗУ хранятся команды и данные. Емкость ОЗУ составляет 1000 ячеек. По сигналу MWr выполняется запись содержимого регистра данных (MDR) в ячейку памяти с адресом, указанным в регистре адреса (MAR). По сигналу MRd происходит считывание — содержимое ячейки памяти с адресом, содержащимся в MAR, передается в MDR. Сверхоперативная память с прямой адресацией содержит десять регистров общего назначения R0—R9. Доступ к ним осуществляется (аналогично доступу к ОЗУ) через регистры RAR и RDR. АУ осуществляет выполнение одной из арифметических операций, определяемой кодом операции (СОР), над содержимым аккумулятора (Асc) и регистра операнда (DR). Результат операции всегда помещается в Асc. При завершении выполнения операции АУ вырабатывает сигналы признаков результата: Z (равен 1, если результат равен нулю); S (равен 1, если результат отрицателен); OV (равен 1, если при выполнении операции произошло переполнение разрядной сетки). В случаях, когда эти условия не выполняются, соответствующие сигналы имеют нулевое значение. В модели ЭВМ предусмотрены внешние устройства двух типов. Во-первых, это регистры IR и OR, которые могут обмениваться с аккумулятором с помощью безадресных команд IN (Асc := IR) и OUT (OR := Асc). Во-вторых, это набор моделей внешних устройств, которые могут подключаться к системе и взаимодействовать с ней в соответствии с заложенными в моделях алгоритмами. Каждое внешнее устройство имеет ряд программно-доступных регистров, может иметь собственный обозреватель (окно 1 Программная модель учебной ЭВМ находится на компакт-диске, прилагаемом к книге. видимыхэлементов). Подробнее эти внешние устройства описаны в разд. 8.6. УУ осуществляет выборку команд из ОЗУ в последовательности, определяемой естественным порядком выполнения команд (т. е. в порядке возрастания адресов команд в ОЗУ) или командами передачи управления; выборку из ОЗУ операндов, задаваемых адресами команды; инициирование выполнения операции, предписанной командой; останов или переход к выполнению следующей команды. В качестве сверхоперативной памяти в модель включены регистры общего назначения (РОН), и может подключаться модель кэш-памяти. В состав УУ ЭВМ входят: РС — счетчик адреса команды, содержащий адрес текущей команды; СК — регистр команды, содержащий код команды; RВ — регистр базового адреса, содержащий базовый адрес; SP — указатель стека, содержащий адрес верхушки стека; RA — регистр адреса, содержащий исполнительный адрес при косвенной адресации. Рис. 8.1. Общая структура учебной ЭВМ Регистры Асc, DR, IR, OR, CR и все ячейки ОЗУ и РОН имеют длину 6 десятичных разрядов, регистры РС, SP, RA и RB — 3 разряда. 8.2. Представление данных в модели Данные в ЭВМ представляются в формате, показанном на рис. 8.2. Это целые десятичные числа, изменяющиеся в диапазоне "–99 999... +99 999", содержащие знак и 5 десятичных цифр. Рис. 8.2. Формат десятичных данных учебной ЭВМ Старший разряд слова данных используется для кодирования знака: плюс (+) изображается как 0, минус (–) — как 1. Если результат арифметической операции выходит за пределы указанного диапазона, то говорят, что произошло переполнение разрядной сетки. АЛУ в этом случае вырабатывает сигнал переполнения OV = 1. Результатом операции деления является целая часть частного. Деление на ноль вызывает переполнение. 8.3. Система команд При рассмотрении системы команд ЭВМ обычно анализируют три аспекта: форматы, способы адресации и систему операций. 8.3.1. Форматы команд Большинство команд учебной ЭВМ являются одноадресными или безадресными, длиной в одно машинное слово (6 разрядов). Исключение составляют двухсловные команды с непосредственной адресацией и команда MOV, являющаяся двухадресной. В форматах команд выделяется три поля: два старших разряда [0:1] определяют код операции СОР; разряд 2 может определять тип адресации (в одном случае (формат 5а) он определяет номер регистра); разряды [3:5] могут определять прямой или косвенный адрес памяти, номер регистра (в команде MOV номера двух регистров), адрес перехода или короткий непосредственный операнд. В двухсловных командах непосредственный операнд занимает поле [6:11]. Полный список форматов команд показан на рис. 8.3, где приняты следующие обозначения: СОР — код операции; ADR — адрес операнда в памяти; ADC — адрес перехода; I — непосредственный операнд; R, R1, R2 — номер регистра; ТА — тип адресации; X — разряд не используется. Рис. 8.3. Форматы команд учебной ЭВМ 8.3.2. Способы адресации В ЭВМ принято различать пять основных способов адресации: прямая, косвенная, непосредственная, относительная, безадресная. Каждый способ имеет разновидности. В модели учебной ЭВМ реализованы семь способов адресации, приведенные в табл. 8.1. Таблица 8.1. Адресация в командах учебной ЭВМ 8.3.3. Система операций Система команд учебной ЭВМ включает команды следующих классов: □ арифметико-логические и специальные: сложение, вычитание, умножение, деление; пересылки и загрузки: чтение, запись, пересылка (из регистра в регистр), помещение в стек, извлечение из стека, загрузка указателя стека, загрузка базового регистра; □ ввода/вывода: ввод, вывод; передачи управления: безусловный и шесть условных переходов, вызов подпрограммы, возврат из подпрограммы, цикл, программное прерывание, возврат из прерывания; □ системные: пустая операция, разрешить прерывание, запретить прерывание, стон. Список команд учебной ЭВМ приведен в табл. 8.4 и 8.6. 8.4. Состояния и режимы работы ЭВМ Ядром УУ ЭВМ является управляющий автомат (УА), вырабатывающий сигналы управления, которые инициируют работу АЛУ, РОН, ОЗУ и УВВ, передачу информации между регистрами устройств ЭВМ и действия над содержимым регистров УУ. ЭВМ может находиться в одном из двух состояний: Останов и Работа. В состояние Работа ЭВМ переходит по действию команд Пуск или Шаг. Команда Пуск запускает выполнение программы, представляющую собой последовательность команд, записанных в ОЗУ, в автоматическом режиме до команды HLT или точки останова. Программа выполняется по командам, начиная с ячейки ОЗУ, на которую указывает РС, причем изменение состояний объектов модели отображается в окнах обозревателей. В состояние Останов ЭВМ переходит по действию команды Стоп или автоматически в зависимости от установленного режима работы. Команда Шаг, в зависимости от установленного режима работы, запускает выполнение одной команды или одной микрокоманды (если установлен Режим микрокоманд), после чего переходит в состояние Останов. В состоянии Останов допускается просмотр и модификация объектов модели: регистров процессора и РОН, ячеек ОЗУ, устройств ввода/вывода. В процессе модификации ячеек ОЗУ и РОН можно вводить данные для программы, в ячейки ОЗУ — программу в кодах. Кроме того, в режиме Останов можно менять параметры модели и режимы ее работы, вводить и/или редактировать программу в мнемокодах, ассемблировать мнемокоды, выполнять стандартные операции с файлами. 8.5. Интерфейс пользователя В программной модели учебной ЭВМ использован стандартный интерфейс Windows, реализованный в нескольких окнах. Основное окно модели Модель учебной ЭВМ содержит основное меню и кнопки на панели управления. В рабочее поле окна выводятся сообщения о функционировании системы в целом. Эти сообщения группируются в файле lоgfi1е.txt (по умолчанию), сохраняются на диске и могут быть проанализированы после завершения сеанса работы с моделью. Меню содержит следующие пункты и команды: □ Файл: неактивные команды; Выход. □ Вид: Показать все; Скрыть все; Процессор; Микрокомандный уровень; Память; Кэш-память; Программа; Текст программы. □ Внешние устройства: Менеджер ВУ; окна подключенных ВУ; □ Работа: Пуск; Стон; Шаг; Режим микрокоманд; Кэш-память; Настройки. Команды меню Вид открывают окна соответствующих обозревателей, описанные далее. Менеджер внешних устройств позволяет подключать/отключать внешние устройства, предусмотренные в системе. Команда вызова менеджера внешних устройств выполняется при нажатии кнопки на панели инструментов. Подробнее о внешних устройствах и их обозревателях смотрите в разд. 8.6. Команды меню Работа позволяют запустить программу в автоматическом (команда Пуск) или шаговом (команда Шаг) режиме, остановить выполнение программы в модели процессора (команда Стоп). Эти команды могут выполняться при нажатии соответствующих одноименных кнопок на панели инструментов основного окна. Команда Режим микрокоманд включает/выключает микрокомандный режим работы процессора, а команда Кэш-память подключает/отключает в системе модель этого устройства. Команда Настройки открывает диалоговое окно Параметры системы, позволяющее установить задержку реализации командного цикла (при выполнении программы в автоматическом режиме), а так же установить параметры файла logfile.txt, формируемого системой и записываемого на диск. 8.5.1. Окна основных обозревателей системы Окно Процессор Окно Процессор (рис. 8.4) обеспечивает доступ ко всем регистрам и флагам процессора. Рис. 8.4. Окно Процессор □ Программно-доступные регистры и флаги: Асc — аккумулятор; РС — счетчик адреса команды, содержащий адрес текущей команды; SР — указатель стека, содержащий адрес верхушки стека; RВ — регистр базового адреса, содержащий базовый адрес; RА — регистр адреса, содержащий исполнительный адрес при косвенной адресации; IR — входной регистр; OR — выходной регистр; I — флаг разрешения прерываний. □ Системные регистры и флаги: DR — регистр данных АЛУ, содержащий второй операнд; MDR — регистр данных ОЗУ; MAR— регистр адреса ОЗУ; RDR— регистр данных блока РОН; RAR — регистр адреса блока РОН; CR — регистр команд, содержащий поля: СОР — код операции; ТА — тип адресации; ADR — адрес или непосредственный операнд; Z — флаг нулевого значения Асc; S — флаг отрицательного значения Асc; OV— флаг переполнения. Регистры Асc, DR, IR, OR, CR и все ячейки ОЗУ и РОН имеют длину 6 десятичных разрядов, регистры РС, SР, RА и RВ — 3 разряда. В окне Процессор отражаются текущие значения регистров и флагов, причем в состоянии Останов все регистры, включая регистры блока РОН, и флаги (кроме флага I) доступны для непосредственного редактирования. Элементы управления окна Процессор включают меню и кнопки, вызывающие команды: Сохранить; Загрузить; Reset; Reset R0-R9 (только команда меню Работа). Команды Сохранить, Загрузить позволяют сохранить текущее значение регистров и флагов процессора в файле и восстановить состояние процессора из файла. Команда Reset и кнопка R устанавливают все регистры (в т. ч. блок РОН) в начальное (нулевое) значение. Содержимое ячеек памяти при этом не меняется. Выполняемая лишь из меню Работа команда Reset R0-R9 очищает только регистры блока РОН. Окно Память Окно Память (рис. 8.5) отражает текущее состояние ячеек ОЗУ. В этом окне допускается редактирование содержимого ячеек, кроме того, предусмотрена возможность выполнения (через меню или с помощью кнопок панели инструментов) пяти команд: Сохранить, Загрузить, Перейти к, Вставить, Убрать. Команды Сохранить, Загрузить во всех окнах, где они предусмотрены, работают одинаково — сохраняют в файле текущее состояние объекта (в данном случае памяти) и восстанавливают это состояние из выбранного файла, причем файл в каждом окне записывается по умолчанию с характерным для этого окна расширением. Команда Перейти к открывает диалоговое окно, позволяющее перейти на заданную ячейку ОЗУ. Команда Убрать открывает диалог, в котором указывается диапазон ячеек с т по п. Содержимое ячеек в этом диапазоне теряется, а содержимое ячеек [(n +1): 999] перемещается в соседние ячейки с меньшими адресами. Освободившиеся ячейки с адресами 999, 998, ... заполняются нулями. Рис. 8.5. Окно Память Команда Вставить, позволяющая задать номера ячеек, перемещает содержимое всех ячеек, начиная от m-й на п-т позиций в направлении больших адресов, ячейки заданного диапазона [т:п]заполняются нулями, а содержимое последних ячеек памяти теряется. Окно Текст программы Окно Текст программы (рис. 8.6) содержит стандартное поле текстового редактора, в котором можно редактировать тексты, загружать в него текстовые файлы и сохранять подготовленный текст в виде файла. Команды меню Файл: Новая — открывает новый сеанс редактирования; Загрузить — открывает стандартный диалог загрузки файла в окно редактора; Сохранить — сохраняет файл под текущим именем; Сохранить как — открывает стандартный диалог сохранения файла; Вставить — позволяет вставить выбранный файл в позицию курсора. Все перечисленные команды, кроме последней, дублированы кнопками на панели инструментов окна. На той же панели присутствует еще одна кнопка— Компилировать, которая запускает процедуру ассемблирования текста в поле редактора. Ту же процедуру можно запустить из меню Работа. Команда Адрес вставки позволяет задать адрес ячейки ОЗУ, начиная с которой программа будет размещаться в памяти. По умолчанию этот адрес принят равным 0. Ниже области редактирования в строку состояния выводится позиция текущей строки редактора — номер строки, в которой находится курсор. Рис. 8.6. Окно Текст программы В случае обнаружения синтаксических ошибок в тексте программы диагностические сообщения процесса компиляции выводятся в окно сообщений и запись в память кодов (даже безошибочного начального фрагмента программы) не производится. После исправления ошибок и повторной компиляции выдается сообщение об отсутствии ошибок, о расположении и размере области памяти, занятой под ассемблированную программу. Набор текста программы производится по стандартным правилам языка ассемблера. В каждой строке может содержаться метка, одна команда и комментарий. Метка отделяется от команды двоеточием, символы после знака "точка с запятой" до конца строки игнорируются компилятором и могут рассматриваться как комментарии. Строка может начинаться с ; и, следовательно, содержать только комментарии. Окно Программа Окно Программа (рис. 8.7) отображает таблицу, имеющую 300 строк и 4 столбца. Каждая строка таблицы соответствует дизассемблированной ячейке ОЗУ. Второй столбец содержит адрес ячейки ОЗУ, третий — дизассемблированный мнемокод, четвертый— машинный код команды. В первом столбце может помещаться указатель --> на текущую команду (текущее значение РС) и точка останова — красная заливка ячейки. Рис. 8.7. Окно Программа Окно Программа позволяет наблюдать процесс прохождения программы. В этом окне ничего нельзя редактировать. Органы управления окна позволяют сохранить содержимое окна в виде текстового файла, выбрать начальный адрес области ОЗУ, которая будет дизассемблироваться (размер области постоянный — 300 ячеек), а также установить/снять точку останова. Последнее можно проделать тремя способами: командой Точка останова из меню Работа, кнопкой на панели инструментов или двойным щелчком мыши в первой ячейке соответствующей строки. Характерно, что прочитать в это окно ничего нельзя. Сохраненный текстовый asm-файл можно загрузить в окно Текст программы, ассемблировать его и тогда дизассемблированное значение заданной области памяти автоматически появится в окне Программа. Такую процедуру удобно использовать, если программа изначально пишется или редактируется непосредственно в памяти в машинных кодах. Начальный адрес области дизассемблирования задается в диалоге командой Начальный адрес меню Работа. Окно Микрокомандный уровень Окно Микрокомандный уровень (рис. 8.8) используется только в режиме микрокоманд, который устанавливается командой Режим микрокоманд меню Работа. В это окно выводится мнемокод выполняемой команды, список микрокоманд, ее реализующих, и указатель на текущую выполняемую микрокоманду. Шаговый режим выполнения программы или запуск программы в автоматическом режиме с задержкой командного цикла позволяет наблюдать процесс выполнения программы на уровне микрокоманд. Если открыть окно Микрокомандный уровень, не установив режим микрокоманд в меню Работа, то после начала выполнения программы в режиме Шаг (или в автоматическом режиме) в строке сообщений окна будет выдано сообщение "Режим микрокоманд неактивен". Рис. 8.8. Окно Микрокомандный уровень Окно Кэш-память Окно Кэш-память используется в режиме с подключенной кэш-памятью. Подробнее смотрите об этом режиме в разд. 8.8. 8.6. Внешние устройства Модели внешних устройств (ВУ), используемые в описываемой системе, реализованы по единому принципу. С точки зрения процессора они представляют собой ряд программно-доступных регистров, лежащих в адресном пространстве ввода/вывода. Размер регистров ВУ совпадает с размером ячеек памяти и регистров данных процессора— шесть десятичных разрядов. Доступ к регистрам ВУ осуществляется по командам IN аа, OUT аа, где аа— двухразрядный десятичный адрес регистра ВУ. Таким образом, общий объем адресного пространства ввода/вывода составляет 100 адресов. Следует помнить, что адресные пространства памяти и ввода/вывода в этой модели разделены. Разные ВУ содержат различное число программно-доступных регистров, каждому из которых соответствует свой адрес, причем нумерация адресов всех ВУ начинается с 0. При создании ВУ ему ставится в соответствие базовый адрес в пространстве ввода/вывода, и все адреса его регистров становятся смещениями относительно этого базового адреса. Если в системе создаются несколько ВУ, то их базовые адреса следует выбирать с учетом величины адресного пространства, занимаемого этими устройствами, исключая наложение адресов. Если ВУ способно формировать запрос на прерывание, то при создании ему ставится в соответствие вектор прерывания — десятичное число. Разным ВУ должны назначаться различные векторы прерываний. Программная модель учебной ЭВМ комплектуется набором внешних устройств, включающим: контроллер клавиатуры; дисплей; блок таймеров; тоногенератор, которым по умолчанию присвоены параметры, перечисленные в табл. 8.2. Таблица 8.2. Параметры внешних устройств При создании устройств пользователь может изменить назначенные по умолчанию базовый адрес и вектор прерывания. В описываемой версии системы не предусмотрена возможность подключения в систему нескольких одинаковых устройств. Большинство внешних устройств содержит регистры управления СК и состояния SR, причем обычно регистры CR доступны только по записи, а SR — по чтению. Регистр CR содержит флаги и поля, определяющие режимы работы ВУ, а SR — флаги, отражающие текущее состояние ВУ. Флаги SR устанавливаются аппаратно, но сбрасываются программно (или по внешнему сигналу). Поля и флаги CR устанавливаются и сбрасываются программно при записи кода данных в регистр CR или специальными командами. Контроллер ВУ интерпретирует код, записываемый по адресу CR как команду, если третий разряд этого кода равен 1, или как записываемые в CR данные, если третий разряд равен 0. В случае получения командного слова запись в регистр CR не производится, а пятый разряд слова рассматривается как код операции. |