Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа № 5. Командный цикл процессора




 

Учебное пособие

 

 

Научный редактор

доктор технических наук,

профессор С.И. Качин

 

Редактор О.Н. Свинцова

Компьютерная верстка К.С. Чечельницкая

Дизайн обложки А.И. Сидоренко

 

Подписано к печати _______ Формат 60×84/16. Бумага «Снегурочка». Печать XEROX. Усл. печ. л. 8,03. Уч.-изд. л. 7,26. Заказ_______. Тираж 60 экз.
Национальный исследовательский Томский политехнический университет Система менеджмента качества Издательство Томского политехнического университета сертифицирована NATIONAL QUALITY ASSURANCE по стандарту ISO 9001:2000
. 634050, г. Томск, пр. Ленина, 30. Тел./факс: 8(3822)56-35-35, www.tpu.ru

 

Кузбасский государственный технический университет

им. Т.Ф. Горбачева»

 

 

Д.Е. Турчин

 

АРХИТЕКТУРА ЭВМ И СИСТЕМ

 

Лабораторный практикум

 

 

Кемерово 2012

СОДЕРЖАНИЕ

 

 

1. ОПИСАНИЕ ЦИКЛА ЛАБОРАТОРНЫХ РАБОТ.. 4

2. ОПИСАНИЕ АРХИТЕКТУРЫ УЧЕБНОЙ ЭВМ... 5

2.1. Программные модели для изучения архитектуры ЭВМ... 5

2.2 Структура учебной ЭВМ... 5

2.3. Представление данных в модели. 6

2.4. Система команд учебной ЭВМ... 6

2.5. Состояния и режимы работы учебной ЭВМ... 9

2.6. Интерфейс пользователя. 10

2.7. Микрокомандный уровень учебной ЭВМ... 16

2.8. Внешние устройства. 17

2.8.1 Общая характеристика моделей внешних устройств. 17

2.8.2 Контроллер клавиатуры.. 19

2.8.3. Дисплей. 23

2.8.4. Блок таймеров. 25

2.8.5. Тоногенератор. 27

2.9. Программная модель кэш-памяти. 28

2.10. Программная модель ALU-1. 31

2.10.1. Общие сведения о программной модели ALU-1. 31

2.10.2. Операционный автомат. 31

2.10.3. Регистры операционного автомата. 33

2.10.4. Арифметико-логический блок. 33

2.10.5. Блок сдвигателя. 34

2.10.6. Счетчик. 34

2.10.7. Микрооперации и логические условия. 34

2.10.8. Управляющий автомат с программируемой логикой (УАПЛ) 37

3. ЛАБОРАТОРНЫЕ РАБОТЫ... 41

3.1. Лабораторная работа № 1. Основы работы с программной моделью учебной ЭВМ... 41

3.1.1. Цель работы.. 41

3.1.2. Общие положения. 41

3.1.3. Последовательность выполнения работы.. 42

3.1.4. Варианты заданий. 43

3.1.5. Пример выполнения работы.. 43

3.1.6. Содержание отчета. 44

3.1.7. Контрольные вопросы.. 44

3.2. Лабораторная работа № 2. Программирование разветвляющегося процесса. 45

3.2.1. Цель работы.. 45

3.2.2. Общие положения. 45

3.2.3. Последовательность выполнения работы.. 46

3.2.4. Варианты заданий. 47

3.2.5. Пример выполнения работы.. 48

3.2.6. Содержание отчета. 50

3.2.7. Контрольные вопросы.. 50

3.3. Лабораторная работа № 3. Программирование цикла с переадресацией 52

3.3.1. Цель работы.. 52

3.3.2. Основные теоретические сведения. 52

3.3.3. Последовательность выполнения работы.. 53

3.3.4. Варианты заданий. 53

3.3.5. Пример выполнения работы.. 54

3.3.6. Содержание отчета. 56

3.3.7. Задания повышенной сложности. 56

3.3.8. Контрольные вопросы.. 57

3.4. Лабораторная работа №4. Подпрограммы и стек. 58

3.4.1. Цель работы.. 58

3.4.2. Общие положения. 58

3.4.3. Последовательность выполнения работы.. 60

3.4.4. Варианты заданий. 60

3.4.5. Пример выполнения работы.. 61

3.4.6. Содержание отчета. 63

3.4.7. Задания повышенной сложности. 63

3.4.8. Контрольные вопросы.. 64

3.5. Лабораторная работа № 5. Командный цикл процессора. 65

3.5.1. Цель работы.. 65

3.5.2. Общие положения. 65

3.5.3. Последовательность выполнения работы.. 65

3.5.6. Контрольные вопросы.. 67

3.5. Лабораторная работа № 5. Разработка микропрограммы арифметической операции. 68

3.5.1. Цель работы.. 68

3.5.2. Общие положения. 68

3.5.3. Последовательность выполнения работы.. 68

3.5.4 Варианты заданий. 69

3.5.5 Пример выполнения работы.. 70

3.5.6. Содержание отчета. 70

3.5.7. Задания повышенной сложности. 71

3.5.8. Контрольные вопросы.. 71

3.6. Лабораторная работа №6. Программирование внешних устройств 72

3.6.1. Цель работы.. 72

3.6.2. Общие положения. 72

3.6.3. Последовательность выполнения работы.. 73

3.6.4. Содержание отчета. 73

3.6.5. Варианты заданий. 73

3.6.6. Пример выполнения работы.. 76

3.6.7. Задания повышенной сложности. 77

3.6.8. Контрольные вопросы.. 78

3.7. Лабораторная работа №7. Принципы работы кэш-памяти. 79

3.7.1. Цель работы.. 79

3.7.2. Общие положения. 79

3.7.3. Последовательность выполнения работы.. 79

3.7.4. Содержание отчета. 80

3.7.5. Варианты заданий. 81

3.7.6. Контрольные вопросы.. 83

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА.. 84

 


1. ОПИСАНИЕ ЦИКЛА ЛАБОРАТОРНЫХ РАБОТ

 

 

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

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

Цикл лабораторных работ включает в себя работы, ориентированные на первичное знакомство с архитектурой процессора, системой команд, способами адресации, организацией кэш-памяти и системы ввода-вывода и основными приемами программирования на машинно-ориентированном языке.

 


2. ОПИСАНИЕ АРХИТЕКТУРЫ УЧЕБНОЙ ЭВМ

 

 

2.1. Программные модели для изучения архитектуры ЭВМ

 

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

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

 

 

2.2 Структура учебной ЭВМ

 

Моделируемая ЭВМ включает процессор, оперативную (ОЗУ) и сверхоперативную память, устройства ввода (УВв) и устройство вывода (УВыв). Процессор в свою очередь состоит из центрального устройства управления (УУ), арифметико-логического устройства (АЛУ) и системных регистров (CR, PC, SP, и др.). Структурная схема ЭВМ показана на рис. 2.1.

 



В ячейках ОЗУ хранятся команды и данные. Емкость ОЗУ составляет 1000 ячеек. По сигналу MWr выполняется запись содержимого регистра данных (MDR) в ячейку памяти с адресом, указанным в регистре адреса (MAR). По сигналу MRd происходит считывание – содержимое ячейки памяти с адресом, содержащимся в MAR, передается в MDR.

Сверхоперативная память с прямой адресацией содержит десять регистров общего назначения (РОН) R0R9. Доступ к ним осуществляется (аналогично доступу к ОЗУ) через регистры RAR и RDR.

АЛУ осуществляет выполнение одной операции, определяемой кодом операции (COP), над содержимым аккумулятора (Acc) и регистра операнда (DR). Результат операции всегда помещается в Асс.

В модели ЭВМ предусмотрены внешние устройства двух типов. Во-первых, это регистры IR и OR, которые могут обмениваться с аккумулятором с помощью безадресных команд IN (Acc := IR) и OUT (OR :=Acc). Во-вторых, это набор моделей внешних устройств, которые могут подключаться к системе и взаимодействовать с ней в соответствии с заложенными в моделях алгоритмами.

УУ осуществляет выборку команд из ОЗУ в последовательности, определяемой порядком выполнения команд или командами передачи управления; выборку из ОЗУ операндов, задаваемых адресами команды; инициирование выполнения операции, предписанной командой; останов или переход к выполнению следующей команды.

В состав УУ входят следующие элементы:

РС – счетчик адреса команды, содержащий адрес текущей команды;

СR – регистр команды, содержащий код команды;

RB – регистр базового адреса, содержащий базовый адрес;

SP – указатель стека, содержащий адрес верхушки стека;

RA – регистр адреса, содержащий дополнительный адрес при косвенной адресации.

 

2.3. Представление данных в модели

 

Данные в ЭВМ представляются в формате, показанном на рис. 2.2. Это целые десятичные числа, изменяющиеся в диапазоне от – 99999 до + 99999, содержащие знак и 5 десятичных цифр.

 

 

Рис. 2.2. Формат десятичных данных учебной ЭВМ

 

Старший разряд слова данных используется для кодирования знака: плюс (+) изображается как 0, минус (–) – как 1. Если результат арифметической операции выходит за пределы указанного диапазона, то говорят, что произошло переполнение разрядной сетки. АЛУ в этом случае вырабатывает сигнал переполнения OV = 1. Результатом операции деления является целая часть частного. Деление на ноль вызывает переполнение.

 

 

2.4. Система команд учебной ЭВМ

 

При рассмотрении системы команд ЭВМ обычно анализируют три аспекта: форматы, способы адресации и систему операций.

Большинство команд учебной ЭВМ является одноадресными или безадресными, длиной в одно машинное слово (6 разрядов). Исключение составляют двухсловные команды с непосредственной адресацией (RDI, ADI, SBI, MULI, DIVI) и команда MOV, являющаяся двухадресной.

В форматах команд выделяют 3 поля:

1) два старших разряда [0:1] определяют код операции СОР;

2) разряд 2 определяет тип адресации ADR;

3) разряды [3:5] определяют номер ячейки памяти (регистра) или непосредственный операнд.

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

 

Таблица 2.1

Таблица команд учебной ЭВМ

 

NOP JMP   MOV  
IN JZ RD RD RDI
OUT JNZ WR WR  
IRET JS ADD ADD ADI
WRRB JNS SUB SUB SBI
WRSP JO MUL MUL MULI
PUSH JNO DIV DIV DIVI
POP JRNZ   IN  
RET INT EI OUT  
HLT CALL DI    

 

Таблица 2.2

Типы адресации, их коды и обозначение

 

Тип адресации Обозн. Код Пример команды
Прямая (прямая регистровая)   ADD 23 (ADD R4)
Непосредственная # ADD #23
Косвенная @ ADD @23
Относительная [ ] ADD [23]
Косвенная регистровая @R ADD @R4
Индексная с постинкрементом @R+ ADD @R4+
Индексная с преддекрементом –@R ADD –@R4

 

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

В табл. 2.3 приняты следующие обозначения:

• DD – данные, формируемые командой в качестве второго операнда (прямо или косвенно адресуемая ячейка памяти или трехразрядный непосредственный операнд);

• R(*) – содержимое регистра (косвенно адресуемая через регистр ячейка памяти);

• М(*) – ячейка памяти, прямо (косвенно) адресуемая в команде;

• I – пятиразрядный непосредственный операнд со знаком;

• V – адрес памяти, соответствующий вектору прерывания;

• CR[ADR] – адрес или непосредственный операнд в регистре команд (CR).

 

Таблица 2.3

Система команд учебной ЭВМ

 

СОР Мнемокод Название Действие
NOP Пустая операция Нет
IN Ввод Acc ← IR
OUT Вывод OR ← Acc
IRET Возврат из прерывания FLAGS.PC ← M(SP); INC(SP)
WRRB Загрузка RB RB ← CR[ADR]
WRSP Загрузка SP SP ← CR[ADR]
PUSH Поместить в стек DEC(SP); M(SP) ← R
POP Извлечь из стека INC(SP); M(SP) ← R
RET Возврат INC(SP); M(SP) ← PC
HLT Стоп Конец командных циклов
JMP Безусловный переход PC ← CR[ADR]
JZ Переход, если 0 if Acc = 0 then PC ← CR[ADR]
JNZ Переход, если не 0 if Acc ≠ 0 then PC ← CR[ADR]
JS Переход, если отрицательно if Acc < 0 then PC ← CR[ADR]
JNS Переход, если положительно if Acc ≥ 0 then PC ← CR[ADR]
JO Переход, если переполнение if |Acc| > 99999 then PC ← CR[ADR]
JNO Переход, если нет переполнения if |Acc| ≤ 99999 then PC ← CR[ADR]
JRNZ Цикл DEC(R); if R > 0 then PC ← CR[ADR]
INT Программное прерывание DEC(SP); M(SP) ← FLAGS.PC; PC ← M(V)
CALL Вызов подпрограммы DEC(SP); M(SP) ← PC; PC ← CR(ADR)
Нет    
RD Чтение Acc ← DD
WR Запись M(*)← Acc
ADD Сложение Acc ← Acc + DD
SUB Вычитание Acc ← Acc – DD
MUL Умножение Acc ← Acc × DD
DIV Деление Acc ← Acc/DD
Нет    
EI Разрешить прерывание IF ← 1
DI Запретить прерывание IF ← 0
MOV Пересылка R1 ← R2
RD Чтение Acc ← R*
WR Запись R* ← Acc
ADD Сложение Acc ← Acc + R*
SUB Вычитание Acc ← Acc – R*
MUL Умножение Acc ← Acc × R*
DIV Деление Acc ← Acc/R*
IN Ввод Acc ← ВУ(CR[ADR*])
OUT Вывод  
Нет    
Нет    
RDI Чтение Acc ← I
Нет    
ADI Сложение Acc ← Acc + I
SBI Вычитание Acc ← Acc – I
MULI Умножение Acc ← Acc × I
DIVI Деление Acc ← Acc/I

 

 

2.5. Состояния и режимы работы учебной ЭВМ

 

Учебная ЭВМ может находится в одном из двух состояний: Останов и Работа.

В состояние Работа ЭВМ переходит под действием команд Пуск или Шаг. Команда Пуск запускает выполнение программы, записанной в ОЗУ, в автоматическом режиме до команды HLT или точки останова. Программа выполняется по командам, начиная с ячейки ОЗУ, на которую указывает PC, причем изменение состояний объектов модели отображается в окнах обозревателей.

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

Команда Шаг, в зависимости от установленного режима работы, запускает выполнение одной команды или одной микрокоманды (если установлен Режим микрокоманд), после чего переходит в состояние Останов.

В состоянии Останов допускается просмотр и модификация объектов модели: регистров процессора, ячеек ОЗУ, устройств ввода/вывода.

 

 

2.6. Интерфейс пользователя

 

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

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

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

Команды меню Работа позволяют запустить программу в автоматическом (команда Пуск) или шаговом (команда Шаг) режиме, остановить выполнение программы (команда Стоп). Эти команды могут выполняться при нажатии соответствующих одноименных кнопок на панели инструментов основного окна.

Окно Процессор (рис. 2.4) обеспечивает доступ ко всем регистрам и флагам процессора.

 

 

Рис. 2.4. Окно Процессор

 

Программно-доступные регистры и флаги:

Acc – аккумулятор, содержащий первый операнд;

PC – счетчик адреса команды, содержащий адрес текущей команды;

SP – указатель стека, содержащий адрес верхушки стека;

RA – регистр адреса, содержащий исполнительный адрес при косвенной адресации;

RB – регистр базового адреса, содержащий базовый адрес;

IR – входной регистр;

OR – выходной регистр;

I – флаг разрешения прерываний.

Системные регистры и флаги:

DR – регистр данных АЛУ, содержащий второй операнд;

MDR – регистр данных ОЗУ;

MAR – регистр адреса ОЗУ;

RDR – регистр данных блока РОН;

RAR – регистр адреса блока РОН;

CR – регистр команд, содержащий поля:

COP – код операции;

TA – тип адресации;

ADR – адрес или непосредственный операнд;

Z – флаг нулевого значения Acc;

S – флаг отрицательного значения Acc;

OV – флаг переполнения.

Регистры Acc, DR, OR, IR, CR и все ячейки ОЗУ и РОН имеют длину 6 десятичных разрядов, регистры PC, SP, RA и RB – 3 разряда. В окне Процессор отражаются текущие значения регистров и флагов, причем в состоянии Останов все регистры, включая регистры блока РОН, и флаги (кроме флага I) доступны для непосредственного редактирования.

Элементы управления окна Процессор включают меню и кнопки, вызывающие команды: Сохранить, Загрузить, Reset, Reset R0-R9. Команды Сохранить, Загрузить позволяют сохранить текущее значение регистров и флагов процессора в файле и восстановить состояние процессора из файла. Команда Reset и кнопка R устанавливают все регистры процессора в начальное (нулевое) значение. Команда Reset R0-R9 очищает только регистры блока РОН.

Окно Память (рис. 2.5) отражает текущее состояние ячеек ОЗУ. В этом окне допускается редактирование содержимого ячеек, кроме того предусмотрена возможность выполнения пяти команд: Сохранить, Загрузить, Перейти к, Вставить, Убрать.

 

 

Рис. 2.5. Окно Память

 

Команды Сохранить, Загрузить сохраняют в файле текущее состояние ОЗУ и восстанавливают это состояние из выбранного файла.

Команда Перейти к открывает диалоговое окно, позволяющее перейти на заданную ячейку ОЗУ.

Команда Убрать открывает диалог, в котором указывается диапазон ячеек с m по n. Содержимое ячеек в этом диапазоне теряется, а содержимое ячеек [(n + 1) : 999] перемещается в соседние ячейки с меньшими адресами. Освободившиеся ячейки с адресами 999, 998, … заполняются нулями.

Команда Вставить, позволяющая задать номера ячеек, перемещает содержимое всех ячеек, начиная от m-й на nm позиций в направлении больших адресов, ячейки заданного диапазона [n : m] заполняются нулями, а содержимое последних ячеек памяти теряется.

Окно Текст программы (рис. 2.6) содержит стандартное поле текстового редактора, в котором можно редактировать тексты, загружать в него текстовые файлы и сохранять подготовленный текст в виде файла.

 

 

Рис. 2.6. Окно Текст программы

 

Меню Файл содержит следующие команды:

Новая – открывает новый сеанс редактирования;

Загрузить – открывает стандартный диалог загрузки файла в окно редактора;

Сохранить – сохраняет файл под текущим именем;

Сохранить как – открывает стандартный диалог сохранения файла;

Вставить – позволяет вставить выбранный файл в позицию курсора.

Все перечисленные программы, кроме последней, дублированы кнопками на панели инструментов окна. На той же панели присутствует еще одна кнопка – Компилировать, которая запускает процедуру ассемблирования текста в поле редактора. Ту же процедуру можно запустить из меню Работа.

Команда Адрес вставки позволяет задать адрес ячейки ОЗУ, начиная с которой программа будет размещаться в памяти. По умолчанию этот адрес принят равным 0.

Ниже области редактирования в строку состояния выводится позиция текущей строки редактора – номер строки, в которой находится курсор.

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

Набор текста программы производится по стандартным правилам языка ассемблера. В каждой строке может содержаться метка, одна команда и комментарий. Метка отделяется от команды двоеточием, символы после знака «;» до конца строки игнорируются компилятором и могут рассматриваться как комментарии. Строка может начинаться с «;» и, следовательно, содержать только комментарии.

Окно Программа (рис 2.7) отображает таблицу, имеющую 300 строк и 4 столбца. Каждая строка таблицы соответствует дизассемблированной ячейке ОЗУ. В первом столбце может помещаться указатель à на текущую команду (текущее значение PC) и точка останова – красная заливка ячейки. Второй столбец содержит адрес ячейки ОЗУ, третий – дизассемблированный мнемокод, четвертый – машинный код команды.

Окно Программа позволяет наблюдать процесс прохождения программы. В этом окне ничего нельзя редактировать. Органы управления окна позволяют сохранить содержимое окна в виде текстового файла, выбрать начальный адрес области ОЗУ, которая будет дизассемблироваться (размер области постоянный – 300 ячеек), а также установить/снять точку останова. Последнее может быть сделано тремя способами: командой Точка останова из меню Работа, кнопкой на панели инструментов или двойным щелчком мыши в первой ячейке соответствующей строки.

 

 

Рис. 2.7. Окно Программа

 

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

Начальный адрес области дизассемблирования задается в диалоге командой Начальный адрес меню Работа.

 

 

2.7. Микрокомандный уровень учебной ЭВМ

 

ЭВМ можно представить в виде совокупности узлов, связанных между собой коммуникационной сетью (рис. 2.8). В этом случае процесс функционирования ЭВМ состоит из последовательности пересылок информации между узлами и элементарных действий, выполняемых в узлах. Любое элементарное действие производится при поступлении соответствующего сигнала управления из микропрограммного автомата (МПА) устройства управления. Возможная частота формирования сигналов на выходе автомата определяется синхронизирующими импульсами, поступающими от генератора тактовых импульсов (ГТИ).

 

 

Рис. 2.8. Представление ЭВМ с позиций микроопераций и сигналов управления

 

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

Окно Микрокомандный уровень (рис. 2.9) используется только в режиме микрокоманд, который устанавливается командой Режим микрокоманд меню Работа. В это окно выводится мнемокод выполняемой команды, список микрокоманд, ее реализующих, и указатель на текущую выполняемую микрокоманду.

 

 

Рис. 2.9. Окно Микрокомандный уровень

 

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

Если открыть окно Микрокомандный уровень, не установив режим микрокоманд в меню Работа, то после начала выполнения программы в строке сообщений окна будет выдано сообщение «Режим микрокоманд неактивен».

 

 

2.8. Внешние устройства

 

2.8.1 Общая характеристика моделей внешних устройств

 

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

Доступ к регистрам ВУ осуществляется по командам IN xx, OUT xx, где xx – двухразрядный десятичный адрес регистра ВУ. Таким образом, общий объем адресного пространства ввода/вывода составляет 100 адресов. Следует помнить, что адресные пространства памяти и ввода/вывода в программной модели учебной ЭВМ разделены.

Разные ВУ содержат различное число программно-доступных регистров, каждому из которых соответствует свой адрес, причем нумерация адресов всех ВУ начинается с 0. При создании ВУ ему ставится в соответствие базовый адрес в пространстве ввода/вывода и все адреса его регистров становятся смещениями относительно этого базового адреса.

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

Если ВУ способно формировать запрос на прерывание, то при создании ему ставится в соответствие вектор прерывания – двухзначное число. Разным ВУ должны назначаться разные векторы прерываний.

Программная модель учебной ЭВМ комплектуется набором внешних устройств, включающим:

• контроллер клавиатуры;

• дисплей;

• блок таймеров;

• тоногенератор.

Приведенным устройствам по умолчанию присвоены параметры, перечисленные в табл. 2.4

Таблица 2.4

Параметры внешних устройств

 

Внешнее устройство Базовый адрес Адреса регистров Вектор прерывания
Контроллер клавиатуры 0, 1, 2
Дисплей 0, 1, 2, 3 Нет
Блок таймеров 0, 1, 2, 3, 4, 5, 6
Тоногенератор 0, 1 Нет

 

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

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

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

Регистр CR содержит флаги и поля, определяющие режимы работы ВУ, а SR – флаги, отражающие текущее состояние ВУ. Флаги SR устанавливаются аппаратно, но сбрасываются программно (или по внешнему сигналу). Поля и флаги CR устанавливаются и сбрасываются программно при записи кода в регистр CR или специальными командами.

Контроллер ВУ интерпретирует код, записываемый по адресу CR как команду, если третий разряд этого кода 1, или как записываемые в CR данные, если третий разряд равен 0. В случае получения командного слова запись в регистр CR не производится, а пятый разряд слова рассматривается как код операции.

 

2.8.2 Контроллер клавиатуры

 

Контроллер клавиатуры (рис. 2.10) представляет собой модель внешнего устройства, принимающего ASCII-коды (табл. 2.5) от клавиатуры ПЭВМ.

 

Таблица 2.5

Таблица кодов ASCII (фрагмент)

 

  A B C D E F
      @ P p         А Р а р
    ! A Q a q         Б С б с
    B R b r         В Т в т
    # C S c s         Г У г у
    $ D T d t         Д Ф д ф
    % E U e u         Е Х е х
    & F V f v         Ж Ц ж ц
    G W g w         З Ч з ч
    ( H| X h x         И Ш и ш
    ) I Y i y         Й Щ й щ
A     * : J Z j z         К Ъ к ъ
B     + ; K [ k {         Л Ы л ы
C     , < L   l |         М Ь м ь
D     - = M ] m }         Н Э н э
E     . > N   n           О Ю о ю
F     / ? O _ o           П Я п я

 

Таблица 2.6

Перевод HEX-кодов в десятичные числа

 

  A B C D E F
A
B
C
D
E
F

 

Символы помещаются последовательно в буфер символов, размер которого установлен равным 50 символам, и отображаются в окне обозревателя (рис. 2.11).

В состав контроллера клавиатуры входят три программно-доступных регистра:

1) DR (адрес 0) – регистр данных;

2) CR (адрес 1) – регистр управления, который определяет режимы работы контроллера и содержит следующие флаги:

• E – флаг разрешения приема кодов в буфер;

• I – флаг разрешения прерывания;

• S – флаг режима посимвольного ввода.

3) SR (адрес 2) – регистр состояния, который содержит два флага:

• Err – флаг ошибки;

• Rd – флаг готовности.

 

 

Рис. 2.10. Контроллер клавиатуры

 

 

Рис. 2.11. Окно обозревателя контроллера клавиатуры

 

Регистр данных DR доступен только для чтения, через него считываются ASCII-коды из буфера. Порядок чтения кодов из буфера соответствует порядку их записи в буфер – каждое чтение по адресу 0 автоматически перемещает указатель чтения буфера. В каждый момент времени DR содержит код символа по адресу указателя чтения буфера.

Флаги регистра управления CR устанавливаются и сбрасываются программно.

Флаг Е, будучи установленным, разрешает прием кодов в буфер. При Е=0 контроллер игнорирует нажатие на клавиатуре, прием кодов в буфер не производится. На считывание кодов из буфера флаг Е влияния не оказывает.

Флаг I, будучи установленным, разрешает при определенных условиях формирование контроллером запроса на прерывание. При I = 0 запрос на прерывание не формируется.

Флаг S=1 задает режим посимвольного ввода, иначе контроллер работает в обычном режиме. Флаг S устанавливается и сбрасывается программно, кроме того, S сбрасывается при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры.

Условия формирования запроса на прерывание определяются, с одной стороны, значением флага разрешения прерывания I, с другой – режимом работы контроллера. В режиме посимвольного ввода запрос на прерывание формируется после ввода каждого символа (разумеется, при I=1), в обычном режиме запрос будет сформирован по окончании набора строки.

Завершить набор строки можно, щелкнув по кнопке Завершить вводв окне Контроллер клавиатуры(см. рис. 2.3). При этом устанавливается флаг готовности Rd (от англ. ready) в регистре состояния SR. Флаг ошибки Err (от англ. error) в том же регистре устанавливается при попытке ввода в буфер 51-го символа. Ввод 51-го и всех последующих символов блокируется.

Сброс флага Rd осуществляется автоматически при чтении из регистра DR, флаг Err сбрасывается программно. Кроме того, оба эти флага сбрасываются при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры. Одновременно со сбросом флагов производится очистка буфера – весь буфер заполняется кодами 00h, и указатели записи и чтения устанавливаются на начало буфера.

Для программного управления контроллером предусмотрен ряд командных слов. Все команды выполняются при записи по адресу регистра управления СК кодов с I в третьем разряде.

Контроллер клавиатуры интерпретирует следующие командные слова:

• ххх101 – очистить буфер (действие команды эквивалентно нажатию кнопки Очиститьбуфер);

• ххх102 – сбросить флаг Err в регистре SR;

• ххх103 – установить флаг S в регистре CR;

• ххх104 – сбросить флаг S в регистре CR.

Если по адресу 1 произвести запись числа ххх0nn, то произойдет изменение 4-го и 5-го разрядов регистра CR по следующему правилу:

(2.1)

 

2.8.3. Дисплей

 

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

1) видеопамять объемом 128 слов (ОЗУ дисплея);

2) символьный экран размером 8 строк по 16 символов в строке;

3) четыре программно-доступных регистра:

• DR (адрес 0) – регистр данных;

• CR (адрес 1) – регистр управления;

• SR (адрес 2) – регистр состояния;

• AR (адрес 3) – регистр адреса.

Через регистры адреса AR и данных DR по записи и чтению осуществляется доступ к ячейкам видеопамяти. При обращении к регистру DR по записи содержимое аккумулятора записывается в DR и в ячейку видеопамяти, адрес которой установлен в регистре AR.

Регистр управления CR доступен только по записи и содержит в 4-м и 5-м разрядах соответственно два флага:

• Е – флаг разрешения работы дисплея; при Е=0 запись в регистры AR и DR блокируется;

• А – флаг автоинкремента адреса; при А=1 содержимое AR автоматически увеличивается на 1 после любого обращения к регистру CR – по записи или чтению.

 

 

Рис. 2.12. Контроллер дисплея

 

Изменить значения этих флагов можно, если записать по адресу CR (по умолчанию – 11) код ххх0nn, при этом изменение 4-го и 5-го разрядов регистра CR произойдет согласно выражению (2.1).

Для программного управления дисплеем предусмотрены две команды, коды которых должны записываться по адресу регистра CR, причем в третьем разряде командных слов обязательно должна быть 1:

• ххх101 – очистить дисплей (действие команды эквивалентно нажатию кнопки Очистить в окне Дисплей), при этом очищается видеопамять (в каждую ячейку записывается код пробела – 032), устанавливается в 000 регистр адреса AR и сбрасываются флаги ошибки Err и автоинкремента А;

• ххх102 – сбросить флаг ошибки Err.

Регистр состояния SR доступен только по чтению и содержит единственный флаг (в пятом разряде) ошибки Err. Этот флаг устанавливается аппаратно при попытке записать в регистр адреса число, большее 127, причем как в режиме прямой записи в AR, так и в режиме автоинкремента после обращения по адресу 127. Сбрасывается флаг Err программно или при нажатии кнопки Очистить в окне Дисплей(рис. 2.13).

 

 

Рис. 2.13. Окно обозревателя контроллера дисплея

 

2.8.4. Блок таймеров

 

Блок таймеров (рис. 2.14) включает в себя три однотипных канала, каждый из которых содержит:

1) пятиразрядный десятичный реверсивный счетчик Т, на вход которого поступают метки времени (таймер);

2) программируемый предделитель D;

3) регистр управления таймером CTR;

4) флаг переполнения таймера FT.

Регистры таймеров Т доступны по записи и чтению (адреса 1, 3, 5 соответственно для Т1, Т2, ТЗ). Программа в любой момент может считать текущее содержимое таймера или записать в него новое значение.

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

 

 

Рис. 2.14. Блок таймеров

 

Регистры управления CTR доступны по записи и чтению (адреса 2, 4, 6) и содержат следующие поля:

• Т (разряд 5) – флаг включения таймера;

• ЕI (разряд 4) – флаг разрешения формирования запроса на прерывание при переполнении таймера;

• I/D (разряд 3) – направление счета (инкремент/декремент), при I/D = 0 таймер работает на сложение, при I/D =1 – на вычитание;

• K (разряды [1:2]) – коэффициент деления предделителя (от 1 до 99).

Флаги переполнения таймеров собраны в один регистр – доступный только по чтению регистр состояния SR, имеющий адрес 0. Разряды регистра (5, 4 и 3 для Т1, Т2, ТЗ соответственно) устанавливаются в 1 при переполнении соответствующего таймера. Для таймера, работающего на сложение, переполнение наступает при переходе его состояния из 99 999 в 0, для вычитающего таймера – переход из 0 в 99 999.

В окне обозревателя (рис. 2.15) предусмотрена кнопка Сброс, нажатие которой сбрасывает в 0 все регистры блока таймеров, кроме CTR, которые устанавливаются в состояние 001000. Таким образом, все три таймера обнуляются, переключаются в режим инкремента, прекращается счет, запрещаются прерывания, сбрасываются флаги переполнения и устанавливаются коэффициенты деления предделителей равными 01.

 

 

Рис. 2.15. Окно обозревателя блока таймеров

 

Программное управление режимами блока таймеров осуществляется путем записи в регистры CTR соответствующих кодов. Запись по адресу SR числа с 1 в третьем разряде интерпретируется блоком таймеров как команда, причем младшие разряды этого числа определяют код команды:

• ххх100 – общий сброс (эквивалентна нажатию кнопки Сброс в окне обозревателя);

• ххх101 – сброс флага переполнения таймера FT1;

• ххх102 – сброс флага переполнения таймера FT2;

• ххх103 – сброс флага переполнения таймера РТЗ.

 

2.8.5. Тоногенератор

 

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

• FR (адрес 0) – регистр частоты звучания (Гц):

• LR (адрес 1) – регистр длительности звучания (мс).

По умолчанию базовый адрес тоногенератора – 30. Сначала следует записать в FR требуемую частоту тона в герцах, затем в LR – длительность звучания в миллисекундах. Запись числа по адресу регистра LR одновременно является командой на начало звучания.

 

2.8.6. Блок индикаторов

 

 

2.9. Подсистема прерываний

 

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

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

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

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

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

Таблица прерываний в рассматриваемой модели жестко фиксирована – она занимает ячейки памяти с адресами 100 – 109. Таким образом, адрес обработчика с вектором 0 должен располагаться в ячейке 100, с вектором 2 – в ячейке 102. При работе с прерываниями не рекомендуется использовать ячейки 100 – 109 для других целей.

Процессор начинает обработку прерывания (если они разрешены), завершив текущую команду. При этом он выполняет следующие действия:

1. Получает от контроллера вектор прерывания.

2. Формирует и помещает в верхушку стека слово, три младших разряда ([3:5]) которого – текущее значение РС (адрес возврата из прерывания), а разряды [1:2] сохраняют десятичный эквивалент шестнадцатеричной цифры, определяющей значение вектора флагов (I, OV, S, Z). Например, если I = 1, OV = 0, S = 1, Z = 1, то в разряды [1:2] запишется число 1110 = 10112.

3. Сбрасывает в 0 флаг разрешения прерывания I.

4. Извлекает из таблицы векторов прерываний адрес обработчика, соответствующий обслуживаемому вектору, и помещает его в РС, осуществляя тем самым переход на подпрограмму обработчика прерывания.

Таким образом, вызов обработчика прерывания, в отличие от вызова подпрограммы, связан с помещением в стек не только адреса возврата, но и текущего значения вектора флагов. Поэтому последней командой подпрограммы обработчика должна быть команда IRET, которая не только возвращает в РС три младшие разряда ячейки – верхушки стека (как RET), но и восстанавливает те значения флагов, которые были в момент перехода на обработчике прерывания.

Не всякое событие, которое может вызвать прерывание, приводит к прерыванию текущей программы. В состав процессора входит программно-доступный флаг I разрешения прерывания. При I = 0 процессор не реагирует на запросы прерываний. После сброса процессора флаг I так же сброшен и все прерывания запрещены. Для того чтобы разрешить прерывания, следует в программе выполнить команду ЕI (от англ. enable interrupt).

Выше отмечалось, что при переходе на обработчик прерывания флаг I автоматически сбрасывается, в этом случае прервать обслуживание одного прерывания другим прерыванием нельзя. По команде IRET значение флагов восстанавливается, в том числе вновь устанавливается I = 1, следовательно, в основной программе прерывания опять разрешены.

Если требуется разрешить другие прерывания в обработчике прерывания, достаточно в нем выполнить команду ЕI. Контроллер прерываний и процессор на аппаратном уровне блокируют попытки запустить прерывание, если его обработчик начал, но не завершил работу.

Таким образом, флаг I разрешает или запрещает все прерывания системы. Если требуется выборочно разрешить некоторое подмножество прерываний, используются программно-доступные флаги разрешения прерываний непосредственно на внешних устройствах.

Как правило, каждое внешнее устройство, которое может вызвать прерывание, содержит в составе своих регистров разряд флага разрешения прерывания (см. формат регистров CR и CTR на рис. 2.2, 2.6), по умолчанию установленный в 0. Если оставить этот флаг в нуле, то внешнему устройству запрещается формировать запрос контроллеру прерываний.

Иногда бывает удобно (например, в режиме отладки) иметь возможность вызвать обработчик прерывания непосредственно из программы. Если использовать для этих целей команду CALL, которая помещает в стек только адрес возврата, то команда IRET, размещенная последней в обработчике, может исказить значения флагов (все они будут сброшены в 0, т. к. команда CALL формирует только три младшие разряда ячейки верхушки стека, оставляя остальные разряды в 000).

Поэтому в системах команд многих ЭВМ, в том числе и данной модели, имеются команды вызова прерываний – INT n (в данной модели n {0, 1,..., 9}), где n – вектор прерывания. Процессор, выполняя команду INT n, производит те же действия, что и при обработке прерывания с вектором n.

С помощью команды INT n можно вызвать обработчик прерывания даже в том случае, когда флаг разрешения прерывания I сброшен.

 

2.9. Программная модель кэш-памяти

 

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

 

 

Рис. 2.16. Структура модели кэш-памяти

 

Кэш-память содержит N ячеек (в модели N может выбираться из множества {4, 8, 16, 32}), каждая из которых включает трехразрядное поле тега (адреса ОЗУ), шестиразрядное поле данных и три однобитовых признака (флага):

• Z – признак занятости ячейки;

• U – признак использования;

• W – признак записи в ячейку.

Таким образом, каждая ячейка кэш-памяти может дублировать одну любую ячейку ОЗУ, причем отмечается ее занятость (в начале работы модели все ячейки кэш-памяти свободны и все Zi = 0), факт записи информации в ячейку во время пребывания ее в кэш-памяти, а также использование ячейки (т. е. любое обращение к ней).

Текущее состояние кэш-памяти отображается на экране в отдельном окне в форме таблицы, причем количество строк соответствует выбранному числу ячеек кэш. Столбцы таблицы определяют содержимое полей ячеек, например, так, как показано в табл. 2.7.

Таблица 2.7

Пример текущего состояния кэш-памяти

 







Дата добавления: 2014-11-10; просмотров: 3260. Нарушение авторских прав


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2019 год . (0.099 сек.) русская версия | украинская версия