Вариант 15. Выбор ноутбука для перспективной работы

Методические указания

1) Изучить предложенный материал;

2) Проработать несколько источников самостоятельно;

3) Написать реферат, используя предложенный материал, а также материал, проработанный вами на данную тему самостоятельно.

 

Ноутбук (англ. notebook – блокнот, блокнотный ПК) – портативный персональный компьютер, в корпусе которого объединены типичные компоненты ПК, включая дисплей, клавиатуру и устройство указания (обычно сенсорная панель или тачпад), а также аккумуляторные батареи. Ноутбуки отличаются небольшими размерами и весом, время автономной работы ноутбуков изменяется в пределах от 1 до 6-8 часов.

Лэптоп (лептоп) (англ. laptop — lap = колени сидящего человека) – более широкий термин, он применяется как к ноутбукам, так и к планшетным ПК. К ноутбукам обычно относят лэптопы, выполненные в раскладном форм-факторе. Ноутбук переносят в сложенном виде, это позволяет защитить экран, клавиатуру и тачпад при транспортировке.


Дополнительное задание

 

1 Описание архитектуры учебной ЭВМ

 

1.1 Структура ЭВМ

 

Моделируемая ЭВМ включает процессор, оперативную (ОЗУ) и сверхоперативную память, устройство ввода (УВв) и устройство вывода (УВыв). Процессор в свою очередь, состоит из центрального устройства управления (УУ), арифметического устройства (АУ) и системных регистров (СR, РС, SР и др.). Структурная схема ЭВМ показана на рисунке 1.1.

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

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

АУ осуществляет выполнение одной из арифметических операций, определяемой кодом операции (СОР), над содержимым аккумулятора (Асc) и регистра операнда (DR). Результат операции всегда помещается в Асc. При завершении выполнения операции АУ вырабатывает сигналы признаков результата: Z (равен 1, если результат равен нулю); S (равен 1, если результат отрицателен); OV (равен 1, если при выполнении операции произошло переполнение разрядной сетки). В случаях, когда эти условия не выполняются, соответствующие сигналы имеют нулевое значение.

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

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

 

 

 

Рисунок 1.1 – Общая структура учебной ЭВМ

 

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

В состав УУ ЭВМ входят:

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

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

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

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

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

Регистры Асc, DR, IR, OR, CR и все ячейки ОЗУ и РОН имеют длину 6 десятичных разрядов, регистры PC, SP, RA и RB – 3 разряда.

 

 

 

 

 

 

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

 

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

 

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

1.3 Система команд

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

1.3.1 Форматы команд

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

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

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

§ разряд 2 может определять тип адресации (в одном случае (формат 5а) он определяет номер регистра);

§ разряды [3:5] могут определять прямой или косвенный адрес памяти, номер регистра (в команде MOV номера двух регистров), адрес перехода или короткий непосредственный операнд. В двухсловных командах непосредственный операнд занимает поле [6:11].

Полный список форматов команд показан на рисунке 1.3, где приняты следующие обозначения:

§ СОР – код операции;

§ ADR – адрес операнда в памяти;

§ ADC – адрес перехода;

§ I – непосредственный операнд;

§ R, R1, R2 – номер регистра;

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

§ X– разряд не используется.

 

 

 

 

 

 

 

 

1.3.2 Способы адресации

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

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

1.3.3 Система операций

Система команд учебной ЭВМ включает команды следующих классов:

§ арифметико-логические и специальные: сложение, вычитание, умножение, деление;

§ пересылки и загрузки: чтение, запись, пересылка (из регистра в регистр), помещение в стек, извлечение из стека, загрузка указателя стека, загрузка базового регистра;

§ ввода/вывода: ввод, вывод;

§ передачи управления: безусловный и шесть условных переходов, вызов подпрограммы, возврат из подпрограммы, цикл, программное прерывание, возврат из прерывания;

§ системные: пустая операция, разрешить прерывание, запретить прерывание, стоп.

Список команд учебной ЭВМ приведен в таблицах 1.4 и 1.6.

 

 

 

1.4 Состояния и режимы работы ЭВМ

Ядром УУ ЭВМ является управляющий автомат (УА), вырабатывающий сигналы управления, которые инициируют работу АЛУ, РОН, ОЗУ и УВВ, передачу информации между регистрами устройств ЭВМ и действия над содержимым регистров УУ.

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

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

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

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

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

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

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

Основное окно модели Модель учебной ЭВМ содержит основное меню и

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

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

§ Файл:

· неактивные команды;

· Выход.

§ Вид:

· Показать все;

· Скрыть все;

· Процессор;

· Микрокомандный уровень;

· Память;

· Кэш-память;

· Программа;

· Текст программы.

§ Внешние устройства:

· Менеджер ВУ;

· окна подключенных ВУ;

§ Работа:

· Пуск;

· Стоп;

· Шаг;

· Режим микрокоманд;

· Кэш-память;

· Настройки.

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

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

Команда Режим микрокоманд включает/выключает микрокомандный режим работы процессора, а команда Кэш-память подключает/отключает в системе модель этого устройства.

Команда Настройки открывает диалоговое окно Параметры системы, позволяющее установить задержку реализации командного цикла (при выполнении программы в автоматическом режиме), а так же установить параметры файла logfile.txt, формируемого системой и записываемого на диск.

 

1.5.1. Окна основных обозревателей системы 

 

Окно Процессор

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

 

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

· Асс аккумулятор;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

· СОР – код операции;

· ТА – тип адресации;

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

· Z – флаг нулевого значения Асc;

· S – флаг отрицательного значения Асc;

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

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

Элементы управления окна Процессор включают меню и кнопки, вызывающие команды:

§ Сохранить;

§ Загрузить;

§ Reset;

§ Reset R0–R9 (только команда меню Работа).

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

Окно Память

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

Команды Сохранить, Загрузить во всех окнах, где они предусмотрены, работают одинаково – сохраняют в файле текущее состояние объекта (в данном случае памяти) и восстанавливают это состояние из выбранного файла, причем файл в каждом окне записывается по умолчанию с характерным для этого окна расширением.

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

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

 

Рисунок 1.5 – Окно Память

 

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

Окно Текст программы

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

Команды меню Файл:

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

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

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

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

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

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

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

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

 

Рисунок 1.6 – Окно Текст программы

 

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

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

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

Окно Программа

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

 

Рисунок 1.7 – Окно Программа

 

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

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

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

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

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

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

 

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

 

Окно Кэш-память

Окно Кэш-память используется в режиме с подключенной кэш-памятью. Подробнее смотрите об этом режиме в разделе 1.8.

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

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

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

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

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

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

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

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

§ дисплей;

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

§ тоногенератор,

которым по умолчанию присвоены параметры, перечисленные в таблице 1.2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

 

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

1.6.2 Дисплей

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

Дисплей включает:

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

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

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

 

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

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

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

· AR (адрес 3) — регистр адреса.

 

 

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

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

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

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

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

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

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

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

 

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

 

 

 

 

1.6.3 Блок таймеров

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

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

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

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

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

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

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

 

 

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

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

§ EI (разряд 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 в 99999.

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

 

 

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

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

§ ххх101 – сброс флага переполнения таймера FТ1;

§ ххх102 – сброс флага переполнения таймера FТ2;

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

 

1.6.4 Тоногенератор

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

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

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

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

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

В модели учебной ЭВМ предусмотрен механизм векторных внешних прерываний, внешние устройства формируют запросы на прерывания, которые поступают на входы контроллера прерываний. При подключении ВУ, способного формировать запрос на прерывание, ему ставится в соответствие номер входа контроллера прерываний – вектор прерывания, принимающий значение в диапазоне 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 так же сброшен и все прерывания запрещены. Для того чтобы разрешить прерывания, следует в программе выполнить команду EI (от англ. enable interrupt).

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

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

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

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

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

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

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

 

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

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

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

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

§ U — признак использования;

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

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

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

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

Напомним, что при сквозной записи при кэш-попадании в процессорных циклах записи осуществляется запись как в ячейку кэш-памяти, так и в ячейку ОЗУ, а при обратной записи – только в ячейку кэш-памяти, причем эта ячейка отмечается битом записи (Wi := 1). При очистке ячеек, отмеченных битом записи, необходимо переписать измененное значение ноля данных в соответствующую ячейку ОЗУ.

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

В модели реализованы три различных алгоритма замещения строк:

§ случайное замещение, при реализации которого номер ячейки кэш-памяти выбирается случайным образом;

§ очередь, при которой выбор замещаемой ячейки определяется временем пребывания ее в кэш-памяти;

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

Напомним, что бит использования устанавливается в 1 при любом обращении к ячейке, однако, как только все биты Ui установятся в 1, все они тут же сбрасываются в 0, так что в кэш всегда ячейки разбиты на два непересекающихся подмножества по значению бита U – те, обращение к которым состоялось относительно недавно (после последнего сброса вектора U) имеют значение U = 1, иные – со значением U = 0 являются "кандидатами на удаление" при использовании алгоритма замещения "бит использования".

Если в параметрах кэш-памяти установлен флаг "с учетом бита записи", то все три алгоритма замещения осуществляют поиск "кандидата на удаление" прежде всего среди тех ячеек, признак записи которых не установлен, а при отсутствии таких ячеек (что крайне маловероятно) – среди всех ячеек кэш-памяти. При снятом флаге "с учетом бита записи" поиск осуществляется по всем ячейкам кэш-памяти без учета значения W.

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

где:

§ К – коэффициент эффективности работы кэш-памяти;

§ S0 – общее число обращений к памяти;

§ Sk – число кэш-попаданий;

§ SkW – число сквозных записей при кэш-попадании (в режиме сквозной записи);

§ SiKW – число обратных записей (в режиме обратной записи).

1.9 Вспомогательные таблицы

В данном разделе представлены вспомогательные таблицы (табл. 1.4 – 1.8) для работы с моделью учебной ЭВМ.

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

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

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

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

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

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

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.8 – Перевод HEX-кодов в десятичные числа

 

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

0

16

32

48

64

80

96

112

128

144

160

176

192

208

224

240

1

1

17

33

49

65

81

97

113

129

145

161

177

193

209

225

241

2

2

18

34

50

66

82

98

114

130

146

162

178

194

210

226

242

3

3

19

35

51

67

83

99

115

131

147

163

179

195

211

227

243

4

4

20

36

52

68

84

100

116

132

148

164

180

196

212

228

244

5

5

21

37

53

69

85

101

117

133

149

165

181

197

213

229

245

6

6

22

38

54

70

86

102

118

134

150

166

182

198

214

230

246

7

7

23

39

55

71

87

103

119

135

151

167

183

199

215

231

247

8

8

24

40

56

72

88

104

120

136

152

168

184

200

216

232

248

9

9

25

41

57

73

89

105

121

137

153

169

185

201

217

233

249

A

10

26

42

58

74

90

106

122

138

154

170

186

202

218

234

250

B

11

27

43

59

75

91

107

123

139

155

171

187

203

219

235

251

C

12

28

44

60

76

92

108

124

140

156

172

188

204

220

236

252

D

13

29

45

61

77

93

109

125

141

157

173

189

205

221

237

253

E

14

30

46

62

78

94

110

126

142

158

174

190

206

222

238

254

F

15

31

47

63

79

95

111

127

143

159

175

191

207

223

239

255

 


2.1 Практическое занятие № 1. Архитектура ЭВМ и система команд

2.1.1 Общие положения

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

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

ввести программу в память ЭВМ;

определить, если это необходимо, содержимое ячеек ОЗУ и РОН. содержащих исходные данные, а также регистров IR. и BR;

установить в РС стартовый адрес программы;

перевести модель в режим Работа.

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

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

Команды в память учебной ЭВМ вводятся в виде шестиразрядных десятичных чисел (см. форматы команд на рис. 1.3, коды команд и способов адресации в табл.1.2—1.4).

Здесь будем программировать ЭВМ в кодах.

2.1.2 Пример 1

Дана последовательность мнемокодов, которую необходимо преобразовать в машинные коды, занести в ОЗУ ЭВМ, выполнить в режиме Шаг и зафиксировать изменение состояний программно-доступных объектов ЭВМ (таблица 2.1).

Таблица 2.1 – Команды

 

Последовательность

Значения

 

 

 

 

Команды

RD#20

WR30

ADD #5

WR@30

JNZ 002

Коды

21 1 020

22 0030

23 1005

22 2 030

12 0 002

 

Введем полученные коды последовательно в ячейки ОЗУ, начиная с адреса 000. Выполняя команды в режиме Шаг, будем фиксировать изменения программно-доступных объектов (в данном случае это Асc, РС и ячейки ОЗУ 020 и 030) в табл. 2.2.

Таблица 2.2 Содержимое регистров

 

РС

Асc

М(30)

М(20)

РС

Асc

М(30)

М(20)

000

000000

000000

000000

004

 

 

000025

001

000020

 

 

002

 

 

 

002

 

000020

 

003

000030

 

 

003

000025

 

 

004

 

 

000030

 

 

2.1.3  Задание 1

1. Ознакомиться с архитектурой ЭВМ (см. часть I).

2. Записать в ОЗУ "программу", состоящую из пяти команд – варианты задания выбрать из табл. 2.3. Команды разместить в последовательных ячейках памяти.

3. При необходимости установить начальное значение в устройство ввода IR.

4. Определить те программно-доступные объекты ЭВМ, которые будут изменяться при выполнении этих команд.

5. Выполнить в режиме Шаг введенную последовательность команд, фиксируя изменения значений объектов, определенных в п. 4, в таблице (см. форму табл. 2.2).

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

 

Таблица 2.3 Варианты задания 1

 

IR

Команда 1

Команда 2

Команда 3

Команда 4

Команда 5

1

000007

IN

MUL #2

WR 10

WR @10

JNS 001

2

X

RD #17

SUB #9

WR 16

WR @16

JNS 001

3

100029

IN

ADD #16

WR 8

WR @8

JS 001

4

X

RD #2

MUL #6

WR 11

WR @11

JNZ 00

5

000016

IN

WR8

DIV #4

WR @8

JMP 002

6

X

RD #4

WR 11

RD @11

ADD #330

JS 000

7

000000

IN

WR 9

RD 09

SUB #1

JS 001

8

X

RD #4

SUB #8

WR 8

WR @8

JNZ 001

9

100005

IN

ADD #12

WR 10

WR @10

JS 004

10

X

RD #4

ADD #15

WR 13

WR @13

JMP 001

11

000315

IN

SUB #308

WR 11

WR @11

JMP 001

12

X

RD #988

ADD #19

WR 9

WR @9

JNZ 001

13

000017

IN

WR 11

ADD 11

WR @11

JMP 002

14

X

RD #5

MUL #9

WR 10

WR @10

JNZ 001

 

2.1.4Содержание отчета

1. Формулировка варианта задания.

2. Машинные коды команд, соответствующих варианту задания, табл. 2.3.

3. Результаты выполнения последовательности команд в форме табл. 2.2.