Вариант 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.