Программные модели процессоров и ЭВМ

УДК 681.3

ПРОГРАММНЫЕ МОДЕЛИ ПРОЦЕССОРОВ И ЭВМ © 2016 А. П. Жмакин

доцент кафедры программного обеспечения и администрирования информационных систем, канд. техн. наук, доцент e-mail: anatoly.zhmakin@gmail.com

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

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

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

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

В работе «Архитектура ЭВМ» [Жмакин 2010б] подробно описана программная модель десятичной учебной ЭВМ и предложены способы её использования. Наряду с очевидными достоинствами, эта модель имеет ряд ограничений, связанных с применением в форматах команд и данных десятичной системы счисления. С одной стороны, выбор десятичной системы облегчает использование такой модели в аудитории непрограммистов и даже школьников. С другой стороны, проблематичным становится реализация в процессоре логических команд, команд сдвигов, битовых операций, анализ флагов переносов.

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

Приоритетным при создании таких моделей является не высокая производительность и большие объёмы памяти, а простота реализации и использования.

Учитывая, что основной целью использования моделей учебных ЭВМ является демонстрация принципов работы процессора и основных подсистем ЭВМ, целесообразно ограничиться 8-разрядным машинным словом, объёмом оперативной памяти 0,5-4 Кбайт, адресным пространством ввода-вывода 128-256 байт. При этом следует реализовать достаточно развитую систему команд, включающую арифметические операции над числами с фиксированной запятой, логические операции, действия над отдельными битами слов, разнообразные команды передачи управления (в том числе вызовы подпрограмм) и некоторые специальные операции. Система команд должна использовать различные способы адресации (прямую, непосредственную, косвенную, относительную, различные

варианты автоиндексной). При этом желательно минимизировать разнообразие форматов команд или хотя бы ограничиться единственным вариантом длины команды.

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

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

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

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

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

ЭВМ с архитектурой фон Неймана (Ш-8, рис. 1,а) включает 8-разрядный процессор, ОЗУ объёмом 1024 байта, 16 регистров блока РОН, отдельное адресное пространство для размещения до 128 8-разрядных регистров ВУ1.

Память Ш-8 представлена ОЗУ и РОН. 10-разрядный адрес ОЗУ, который генерирует 8-разрядный процессор, предполагает наличие механизма сегментации памяти. В адресном пространстве ОЗУ 0 - 0х3ЕБ определены четыре непересекающихся фрагмента объёмом по 256 байт: сегмент 0: с адресами 0 - ОхОББ; сегмент 1: 0x100 - 0х1ЕБ; сегмент 2: 0x200 - 0х2ЕБ; сегмент 3: 0x300 - 0х3ЕБ.

В процессоре предусмотрен программно-доступный сегментный регистр БЯ, содержащий три двухбитовых поля СБ, ББ и ББ, определяющих номера активных сегментов для кода, данных и стека соответственно. Эти поля можно рассматривать как старшие разряды 10-битового адреса при выборе команды (СБ.РСЬ), при обращении к данным (Б8.<АдрОЗУ>) или стеку (ББ.БРЬ). По умолчанию СБ = 00, ББ = 10 и ББ = 11, то есть под программу отводятся сегменты с номерами 0 и 1, под данные - сегмент 2, а под стек - сегмент 3. Однако при необходимости (короткая программа и большой массив обрабатываемых ею данных) можно загрузить ББ = 01, и тогда под данные выделяются два сегмента - 1 и 2.

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

а)

та

БВ

Рис. 1. Структурные схемы моделируемых двоичных учебных ЭВМ: а) архитектура фон Неймана, б) Гарвардская архитектура

Массив РОН адресуется 4-разрядным полем в командах, причём содержимое регистра может выступать в качестве операнда (прямая регистровая адресация) или смещения в сегменте данных (разновидности косвенной адресации) - в этом случае адресуется ячейка памяти. В fN-8 реализована как обычная косвенно-регистровая адресация, так и варианты автоиндексной адресации, когда содержимое адресуемого регистра автоматически модифицируется.

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

В командах с ячейками ОЗУ используется или прямой адрес (8-разрядное смещение в текущем сегмент данных) или 8-разрядный непосредственный операнд.

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

Команды безусловной передачи управления, условные переходы по флагам (Z -ноль, S - знак, C - перенос, O - переполнение), а также команда цикла содержат 10-разрядный адрес перехода, что позволяет осуществить так называемый «длинный переход», при котором можно изменить не только содержимое счётчика команд PCL, но и поле CS сегментного регистра.

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

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

Наконец, пара команд ввода/вывода позволяет загрузить содержимое любого регистра ввода внешнего устройства (адреса 0 - 0x7F) в аккумулятор (IN aa) или содержимое аккумулятора переслать в любой регистр вывода ВУ (OUT aa). В пространстве ввода/вывода можно размещать программные модели различных ВУ и управлять ими с помощью команд процессора.

В fN-8 реализована подсистема внешних векторных прерываний для восьми различных векторов. При подключении к ЭВМ внешнего устройства, которое может генерировать события, ему назначается конкретный вектор прерывания из диапазона 1-7. Вектор 0 зарезервирован за системным сбросом RESET. Таблица векторов прерываний располагается по адресам ОЗУ 0 - 0x0E, то есть в начале нулевого сегмента (кода).

ЭВМ с Гарвардской архитектурой (G-8, рис. 1,б) отличается от fN-8 главным образом разделением оперативной памяти на независимые блоки «Память программ» (1К 16-разрядных слов) и «Память данных» (256 байт). К памяти программ обращаются по адресу, содержащемуся в 10-разрядном счётчике команд (PC), а считанное 16-разрядное слово помещается в регистр команд (CR) и интерпретируется как команда. Все команды G-8 имеют длину 2 байта.

Система команд G-8 очень близка к системе команд fN-8 (рис. 2). Основное отличие состоит в наличии в G-8 специальных команд, позволяющих читать информацию из памяти программ как данные, а не команды.

Жмакин А. П. Программные модели процессоров и ЭВМ

[0] Безадресные команды

12 И

0 0 0 0 Код операции

! к ЮР, НЕТ, ШЕТ, Е1, Ш,1Ж, И., 1ЖС, ИХ, НЬТ ШСЛ, БЕСА, БХУАРА, БАЛ, БЙЛ, ЕУГ, ОЦТ Ев, МОУАБК, МОУБЯА

[1] Цикл

15

12 И

10 9

0 0 0 1 Номер регистра* Адрес перехода

! к Бжыг я*, ь Я* ш {М, 111,112,113 }

[2 ог 3] Условные переходы

[4] Безусловная передача управления

[5] Регистровые команды

15

13 12

10

0 0 1 Код операции Адрес перехода

/ к жг, же, жэ, жо К, ГС, 18, ГО

15

12 И

10 9

0 10 0 Код операции Адрес перехода

/ к ]МР,— СА1Х, ЖТ

15

12 11

4 3

[6 ог 7] Команды с ячкйками ОЗУ

0 10 1 Код операции Способ адресации / номер регистра-приёмника Номер регистра-источника

» 15 12 АББ, БЦВ, МЦЬ, Б1У, ЛЖ>, СЖ, ХОЯ, СМР, 1ш,т,ри8н,р0р, ПЧС, БЕС, ЫОТ, МОУ 1 8 7 к Прямая, —, —, 0

0 11 0/1 Код операции Адрес ОЗУ / Данные

0 - прямая адресация

1 - непосредственная

АБО, АБС, вив, виВБ МиЬ,ШУ,АЖ>,ОК, ХОЛ, СМР, МЭ, ТО*, ДЧС, БЕС, N01, ХСН.

[8] Битовые команды 1

[9] Битовые команды 2

[10 ог 11] Битовые команды 3

[12] Команды ввода/вывода

15

12 11

10

10 0 0 0/1 Номер бита Адрес ОЗУ

о-св 1 - ев 15 12 И 10 8 7 0

10 0 1 0/1 Номер бита Адрес ОЗУ

О-БВС

1 - ввв

15

13 12

11 10

8 7 6

1 0 1 Код операции Номер бита КОП Адрес регистра ВУ

у СВ1, ЭШ, N131, вВЮ, БВШ, БВКС к

15 12 11 8 7 б 0

1 1 0 0 Код операции Адрес регистра ВУ

У Ж а, ОиТ а к

Рис. 2. Форматы команд учебной 8-разрядной ЭВМ с архитектурой фон Неймана

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

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

Одна из реализаций программной модели G-8 показана на рисунке 3. В окне Редактор производится набор и редактирование текста программы на языке Ассемблера, компиляция программы, выводятся сообщения об обнаруженных синтаксических ошибках. При безошибочной компиляции программа помещается в окно ЗУ программ, где можно проводить запуск программы в пошаговом или автоматическом режиме, устанавливать и снимать точки останова. В окне ОЗУ можно редактировать содержимое произвольных ячеек памяти данных или РОН . В окне Процессор отображается текущее содержимое системных регистров.

Программный модуль Внешние устройства содержит ряд программных моделей ВУ, объединённых общим интерфейсом. Интерфейс включает в себя 8-разрядную шину данных, 7-разрядную шину адреса, управляющие сигналы чтения регистра ВУ (RDIO), записи в регистр ВУ (WRIO), запроса (INT) и подтверждения (INTA) прерывания.

Программный модуль ВУ может включать модели внешних устройств ЭВМ:

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

• символьный дисплей;

• таймерные системы;

• блок ШИМ;

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

• контроллер семисегментной индикации;

• и др.

Произвольное подмножество существующих моделей ВУ можно подключать в состав модели ЭВМ. Такое подключение связано с назначением всем программно-доступным регистрам ВУ уникальных адресов в адресном пространстве ввода/вывода в диапазоне 0 - 0x7F. Кроме того, для ВУ, генерирующих запросы на прерывание, должен быть назначен уникальный вектор в диапазоне 1-7.

Распределение адресного пространства и векторов прерываний осуществляется пользователем «вручную» и может быть произвольным. Однако для упрощения «типового» подключения ВУ предполагается, что каждое ВУ содержит не более шестнадцати программно-доступных регистров, пронумерованных от 0 до 0x0F, а каждому из включённых в программный модуль устройств по умолчанию назначается базовый адрес, кратный 16. Тогда физический адрес регистра ВУ образуется как сумма базового адреса устройства и номера регистра в устройстве. Кроме того, каждому ВУ, генерирующему запросы на прерывание, назначается по умолчанию уникальный вектор.

2 В данной реализации G-8 РОН не совмещается с ячейками ОЗУ, а реализован отдельным блоком.

[Г] Редактор Ц gj g) Q?

OUT HLT

M: RD @R1

CALL MP

WRR3

L2: RD @+Rl

CALL MP

та R4

SUBR3

JNC LI

MOV R3.4

LI: DJRNZ R2X2

RDR3

RET

MP: JNZ Ml RD@+R1 DJRNZ R2.MP RD #0 Ml: RET

Строка: 1

• ••

Процессор

X # Процессор ^

Редактор кода

ОЗУ

Й

ЗУ

программ

IR

60 С A S Z

FLAGS

DR

CR

0000 0000 0000 0101

PC SP RA

MDR MAR

OR

0005 CDR

005 CAR

^ ОЗУ H Ü [+]

POH 0 1 2 3 4 5 6 7 8 9 A в с D E F

R0 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R1 60 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R2 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R3 2E 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R4 09 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R5 2E 05 2E 17 19 6C B2 07 5A AA 10 34 18 AI A2 44 35 09

R6 00  06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R7 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RS 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

R9 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RA 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RB 00 OB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RC 00 ОС 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RD 00 OD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RE 00 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

RF 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 IB 10 05 00

программ

Адрес Команда *

000 RD #050

001 WRR1

002 RD #010

003 WRR2

004 CALL 016

г 005 WRR5

006 |RD #061

007 WRR1

008 RD #005

009 WRR2

00A CALL 016

00B WR R6

ooc RD #067

00D WRR1

00E RD #004

00F WRR2

010 CALL 016

011 ADD R5

012 ADD R6

013 DIVS003

014 OUT

015 HLT -

Рис. 3. Основные окна программной модели 8-разрядной учебной ЭВМ с Гарвардской архитектурой

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

Если количество адресуемых элементов в составе ВУ превышает 16, или даже 128 (например, видеопамять в символьном дисплее), следует использовать механизм т.н. «окна интерфейса». В этом случае в адресном пространстве ввода/вывода такого ВУ размещаются дополнительно два регистра - адреса (АВ) блока памяти и данных (БВ) и для доступа к ячейке блока памяти, адрес которой предварительно загружен в АВ, достаточно обратиться к БВ. Очевидно, что обращение к ячейке памяти блока требует двух обращений в пространство ввода/вывода. Если выполняется ряд обращений к ячейкам с последовательными адресами, то целесообразно использовать механизм автоинкремента адреса. Учитывая, что разрядность регистров ВУ составляет 8 бит, максимальный объём блока, доступного через окно интерфейса, составляет 256 байт.

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

Библиографический список

Жмакин А.П. К вопросу проектирования программных моделей ЭВМ // Информационные системы: Теория и практика: сб. науч. работ / фак. информатики и вычислит. техники Курск. гос. ун-та. Курск, 2010а. С. 55-62

Жмакин А.П. Архитектура ЭВМ: учеб. пособие. 2-е изд., перераб. и доп. СПб.: БХВ-Петербург, 2010б. 352 с.