Код
Микропроцессор К1801 ВМ1.
Микропроцессор К1801 ВМ1 представляет собой одно
кристальный 16-разрядный модуль. Этот конструктивно и функ
ционально законченный модуль реализует систму команд микро
ЭВМ "Электроника 60", обспечивает управление системным ин
терфейсом , аналогичным по составу управляющих сигналов и
алгоритмам обмена системному интерфесу микроЭВМ.
16-разрядный операционный блок включает в себя арифме
тическо-логическое устройство , секцию из 8 регистров обще
го назначения, регистр состояния процессора. Операционный
блок осуществляет формирование адресов команд и операндов,
прием данных с внутренней магистрали , выполнение арифмети
ческих и логических оперций, хранение операндов и результа
та , выдачу в канал , формирование состояний процессора и
адресов векторов прерывания.
Секция регистров общего назначения содержит восемь
16-разрядных регистров , которые могут выполнять функции
регистров хранения данных и адресов, индексных регистров,
регистров автодекрементной и автоинрементной адресации,
указателей стека . Регистры R6 и R7 являются специализиро
ванными . Регистр R6 используется как указатель стека SP,
а R7-только как счетчик команд РС.
Кроме восьми программо-доступных регистров общего
назначения операционный блок включает в себя , буферные ре
гистры адресов данных , через которые осуществляется связь
с внутренней магистралью процессора. Арифметическо-логичес
кое устройство операционного блока формирует ряд признаков
записываемых в регистр состояния процессора. Признак I/O
определяет приоритет выполняемой программы по прерыванию
внешних устройсв . Прерывание программы со стороны внешних
устройств запрешено, если значение разряда 7 регистра состо
яния процессора равно 1. С целью упрощения отладки програм
мы в любой ее точке командой записи слова состояния процес
сора в Т-разряд может быть записана 1. Это превидет к пре
рыванию программы с адресом вектора прерывания 14(переход
на программу связи с оператором). Остальные разряды регист
ра состояния процессора хранят признаки результата операци
и в арифметическо-логическом устройстве , используемые в
командах ветвления программы. Установка признаков произво
дится в следующих случаях :N=1, если результат отрицателен;
Z=1, если результата равен 0;V=1 , если при выполнении ари
фметической операции произошло переполнение;C=1 ,если про
изошел перенос из старшего разряда арифметическо-логическо
го устройства , сдвиг единицы из старшего разряда влево
или из младшего разряда вправо. Слово состояния процессора
может быть считано и вновь записано в регист состояния про
цессора с помощью спциальных команд. При выполнении команд
передачи управления содержимое регистра состояния сохрани
ется в стеке.
Структурная схема .
|-------------| |---------------|
Шина | Блок | | Операционный |
-----| системный |--|-| блок |
AD0- | магистрали | | |--------|------|
AD15 |-------------| | | |----------|
|-------| |----------| Интер- |
| | | фейсный |
---------|--------| |----|------| | блок |
| Блок | | Блок | |----------|
INIT | | | прерываний|
-------| микропрограм | |-|-|-|-|-|-|
| ного управления | | | | | | |
|-------|---------| | | | | | |
| | | | | | |
|--------|-------| | | | | | |
SLC |--Схема | | | | | | |
-------| тактирования | | | | | | |
|----------------| | | | | | |
| | | | | |
ACLO | | | | | |
------------| | | | | |
DCLO --------------| | | | |
VIRQ ----------------| | | |
IRQ1 ------------------| | |
IRQ2 -----------------| |
IRQ3 ----------------|
Обозначения на структурной схеме:
AD0-AD15 -шина "Адрес/Данные"
INIT- Инициализация вычислительного устройства, сброс
тригеров(устроййства с двумя устойчивыми состояниями)
запросов прерываний.
CLC-Сигналы тактовой частоты.
ACLO-Авария сетевого питания
DCLO-Авария источника питания
IRQ1 -Сигнал перехода в пультовый режим
IRQ2 -Сигнал прерывания с вектором (100) -восьмеричное.
IRQ3- Сигнал прерывания с вектором (270)-восьмеричное.
VIRQ- Запрос прерывания от вычисоительного устройства.
В большой интегральной схеме К1801 ВМ1 можно выделеить
следующие фукционаоьные блоки, которые изображены на струк
турной схеме выше:
-16-разрядный операционный блок обеспечивает формирование
адресов команд и операндов , выполнение арифметических и
логических операций, временное хранение операндов и резуль
татов вычеслений.
-Блок микропрограмого управления предназначен для выработ
ки последовательности микрокоманд, соответствующий выполня
емой команде.
Расмотрим устройство микропрограмного управления с ис
пользованием комутирующих схем в виде программых матриц. В
данном случае последовательность выполнения этапов каждой
команды задается при помощи программной матрицы. Кроме сиг
нала операции , матрица формирует импульсы, управляющие при
еммом , суммированием, сдвигом, выдачей и другими этапами,
из которых складывается выполнение арифмитических и логиче
ских операций. Таким образом , матрица совмещает функции
комутатора операций и схем управления отдельными устройства
ми электроной вичислительной машины.
Устройство макропрограмного управления более уни
версально, чем микропрограмное , и позволяет вычислять ад
реса слов в процессе решения задачи и модифицировать струк
туру команды вычислительной машины. Генератор импульсов
пульта управления задает темп работы устройств машины. Ко
мутатор сигналов программного управления , управляемый де
шифратором операций и генератором импульсов , обеспечиваеи
временную диаграмму работы машины. Регистр команд принима
ет , хранит и выдает код команды: признак, операция,адрес.
Модификатор структуры команды управляет соответствующими
командами и обеспечивает требуемое расперделение команды
между схемами устройства управления. Для паралельного вы
полнения команд используется несколько регистров команд.
Регистр команд связан с магистралью слов, пультом управле
ния, дешифратором операций, регистром индекса, счетчиком
адресов команд и сумматором исполняемого адреса. Счетчик
адресов команд увеличивает текущий адрес , выбираемой из
памяти машины, на 1 или фиксирует новый исходный адрес при
условных переходах , счечик связан по входу с комутатором
переходов , который управляет дешифратором опрераций и ре
гистром признаков переходов:знак, нуль, переполнение, абсо
лютная величина. По выходу счетчик связан с суматором испо
лняемого адреса , который осуществляет сложение исходного
адреса с модифицируеющим кодом, получаемым отрегистра индек
са . Последний связан по входу с суматором и магитсралью
слов; регист управляется модификатором структуры и дешиф
ратором операций.
Устройство макропрограмого управления работает по
циклам , определяемым выполняемями командами. Цикл начинает
ся подготовительными сигалами , приводячими схемы вычисли
тельной машины в исходное состояние. После этого из памяти
выбирается команда по адресу, сформированному счетчиком ад
ресов команд и модифицированному сумматором исполняемого
адреса. Команда, выбранная из памяти , фиксируется на реги
стре команд. Дешифратор операций вырабатывает серию сигна
лов , обеспечивающих выполнение операции, которая задана
кодом операции команды. Дешифратор адреса устройства памяти
преобразовывает исполняемый адрес в сигналы, осуществляющие
обращение к заданной ячейке памяти.
- Блок прерываний обеспечивает работу приоритетной системы
прерыванний, производя прием и предварительную обработку
внутренних и внешних запроосов прерываний.
Цикл выполнения команды.
|----------------|
| Считывание |
|-------|--------|
------------------| | |----------------|
| выполнение | | | увеличение |
------------------| | |----------------|
|-------|--------|
| Дешифратор |
|----------------|
Система прерываний опрашивает состояние клавиатуры, эк
рана, дисковода. Выполняется приоритет выполнения операций
- Интерфейсный блок обеспечивает обмен информацией между мик
ропроцессором и устройствами , подлюченными к системному
интерфейсу.
-Блок системной магистрали связывает внутреннюю магистраль
микропроцессора с шиной "Адрес/Данные" системного интерфей
са.
- Схема тактирования обеспечивает сиснхронизацию всех функ
ционнальных блоков микропроцессора.
Интерфейсный блок организует обмен управляющей инфор
мацией между микропроцессором и и устройствами , подклю
ченныим к системной магистрали , осуществляет арбитраж при
операциях прямого доступа к памяти , формирует сигналы
управления конвеером выборки кодов команд , адресов, дан
ных. Связь между устройствами подлюченными к системной ма
гистрали , осуществляется по принципу активный- пасивный.
В любой момент времени только одно устройство может быть
активным. Оно осуществляет захват магистрали, укравляет
циклами обращения к каналу , контролирует предоставление
прямого доступа к памяти , разрешает прерывания от внешних
устройств . Пассивное устройство формирует ответные сигна
лы , принимаемые и передавемые информацию под управлением
активного устройства.
|-----------|
| |----- IAKO
| |----- SP
| |----- SP
| Интер |----- RPLY
| фейсный |----- SYNC
| блок |----- DOUT
| |----- DIN
| |----- WTBT
| |----- DMR
| |----- SACH
| |----- DMGO
| |----- SP
| |----- SEL1
| |------ SEL2
| |------ BSY
| |
|-----------|
Обозначения в схеме интерфейсного блока следующие:
IAKO-Предоставление прерываний
SP-Резерв
RPLY-ОTвет ведомого устройства
SYNC-Синхронизация обмена (подтверждение выдачи адреса)
DOUT-Вывод( запись)
DIN-Ввод (Чтение)
DMR-Запрос прямого доступа к памяти.
SACK -Подтверждение предоставления прямого доступа к памяти
DMGO-Предоставление прямого доступа к памяти
SEL1, SEL2-Выворка регистров ввода-вывлда.
BSY-Сигнал занятости системного интерфейса.
Работа процессора.
Работу процессора можно уяснить , рассматривая авто
матизацию решения матиматических задач. Общими случаями
автоматического решения математических задач являются алго
ритмы умножения и деления. Первый основан на сложении и сд
вига , а второй -на итерационном вычитании. Ограничемся
подробным расмотрением процесса автоматического умножения.
Схемный алгоритм , описывающий работу вычислительного усро
йства , дает исчерпывающий ответ на вопросы синтезе электр
онных цифровых машин, так как точно отбражает процесс авто
матизации вычислений.
Процесс вычисления распадается :при умножении на цик
лы умножения на одну цифру множителя , а при делении -на
циклы для определения одной цифры частного. Каждый цикл, в
свою очередь , распадается на повторяющиеся этапы , состоя
щие их отдельных сложений(или вычитаний);при этом в случа
е деления число этапов заранее неизвестно.
Формальныйй характер вычислительного процесса показан
на схеме автоматичнского умножения.
|---------------------|
| Команда умножения |
|----------|----------|
|
|-------------------|---------------------|
| Прием операндов множимого и множителя |
|-------------------|---------------------|
|
|
-----------------------|------------------------|
| Если данная цифра множителя не нуль , то |
| начать умножение, или , если нуль , то |
| сдвинуть множимое |
|----------------------|------------------------|--|
| |
|-------------------|----------------| |
| Сложение множимого | |
|-----| (с нулем или множимым ) | |
| |-------------------|----------------| |
| | |
| | |
т | --------------------|----------------| |
| | Вычитание единицы (из цифры | |
| | множителя или остатка его) | |
| |-------------------|----------------| |
| | |
| |-----------------|----------------| |
| | Сравнение остатка с нулем | |
| |-----------------|----------------| |
| | |
| | |
| |----------------------------------| |
| | Если с>0, то ИЛИ если с=0 | |
| |------|----------------------|----| |
| | | |
| | | |
| | | |
---|--------------|-----| | |
| Повторение | | |
| процесса умножения | | |
| на данную цифру | | |
|-----------------------| | |
| |
| |
|------------|-------| |
| Сдвиг множимого | |
|-----------------|--| |
| |
| |
|------------|----------|-|
| Переход к умножению |
| на следующую цифру |
| множителя |
|-------------------------|
Таким образом , автоматическая вычислительная машина, ре
ализующая алгоритм умножения , должна содержать : два при
емных регистра , сумматор со сдвигом , регистр результата
, счетчик и комутатор упрваления (схема сравнения , перек
лючатель).
Для реализации алгоритма деления необходимы те же
цифровые схемы , что и для умножения , а именно :два прием
ных ренистра, сумматор со сдвигом , регистр результата ,
счетчики и схема сравнения( управления).
Из алгоритма видно , что процессор для выполнения
уможения должен реагировать на цифры множителя в зависимост
и от величины остатка и перехходить к тому или иному продол
жению хода операции . Если остаток положительный , вычисле
ние продолжается , если остаток отрицательный , то произво
дится сложение и сдвиг , после чего осуществляется переход
к следующему циклу вычитаний.
В прктических задачах алгоритм оычно распадается на
циклы повторяющих серий элементарных операций , которые мо
гут быть разбиты на более мелкие циклы.
Таким образом , программа автоматического решения за
дачи методом интерации должна предусматривать : проведение
последовввтельности вычисления этапов А ли В и в завимости
от знака величины а ( критерий точности) вохможны два даль
нейших хода процесса. В одном случае вычисления прекращают
ся, а в другом -производится переход к этапу С (замена ис
ходных данных ), после чего происходит возврат к повторению
процесса с новыми исходными данными .
Для того чтобы иметь возможность осуществить та
кую программу вычислений, процессор должен реагировать на
знак числа а, определяя то или иное продолжение прооцесса
( появление того или иного знака должно вызывать ту или иную
комутацию). Далее должно быть предусмотрено возвращение от
определенного этапа программы к более раннему.
Это дает возможность реализовать решение задач ,распада
ющихся на циклы.
Эфективность работы процессора зависит от ряда факто
ров , и на оценку ее влияют:
1. Технические параметры :быстодействие логических схем,
время обращение к памяти, емкость памяти , совмещенность
времни работы отдельных логических устройств во време.
2. Тип обработки информции: последовательное выполнении
программы .
3. Использование стандартных языков програмирования.
4. Класс решаемых задач.
5. Участие оператора в работе процессора.
Схема проведения интерации.
Начало решения задачи
|
|
|
|-----------------------------|
| Этап А:вычисление f(x) |--------|
|--------------|--------------| |
| |
|--------------|--------------| |
| Этап В: расчет а | |
|--------------|--------------| |
| |
|--------------|--------------| |
| Сравнение: | |
| а< 0 или а>0 | |
|-|---------------|-----------| |
| | |
| |-------|-------| |
|----------|-| | Переход | |
| Конец | |-------|-------| |
|------------| | |
| |
|---------------------| |
| Этап С: | |
| замена х на f(x) | |
|----------|----------| |
| |
|-----------------|
Приближенную оценку роизводительности процессора мо
жно получить по времени выполнения отдельных операций:
сложение, сравнение и т. д.
Несколько лучьшую оценку дает использование сме-
шанного критерия, учитывающего относительное число операций
различчного типа для задая того или иного класса. Качество
процессора при этом оценивается параметром:
P=n*t
где t-время выполнения команды типа данной машины.
n-относительное число команд типа в программе данной
задачи.
Время выполнения команды является характеристикой машины,
а относительное число их- характеристикой класса задач.
Таким образом , параметр Р характеризиет время вы
полнения средней операции для данного типа задач. При этом
емкость памяти, длина слова , структура команд, кналы вво
да-вывода и внешние утройства не принимаются во внимание.
По этой причине данная оценка характеризует только быстро
действие вычислительного устройства с програмным управле
нием , и отчасти - время обращения к памяти и систему ко
манд. В этой связи можно сказать, что частота процессора
БК модели 11м, составляет 6.3 Мгц . Получена на программе
частотная характеристика радиоэлементов в 1993 г. Вообще
говоря частота процессора зависит от объема , загруженой
программы. С увеличнием , уменьшется частота достигая мини
мальной величины 4 Мгц, а при уменьшении увеличивается
чистота до 8 Мгц. ( Смотри справочник по интегральным микро
схемам ).
Иногда оценка производительности вычислитель
ной машины производится по времени решения некоторых типо
вых задач :формирование и сортировка массивов, обращение
матриц, вычисление функций. Здесь трудности возникают из-
за приближенного учета программых средсв.
Класификация и элементная база
микропроцессоров.
Микропроцессором называется програмно-управляемое
устройство для обработки информации и данных, реализованное
в виде одной или нескольких больших интегральных схем. Про
грамирование микропроцессора осуществляется подачей внешних
электроических сигналов , комбинация которых образует опре
деленную микрокоманду , обеспечивающую выполнение той или
иной операции или микрооперации. Микропроцессоры делятся
на несколько классов в зависоммости от особенностей их стру
ктуры и значений основных параметров.
Способы програмирования и организация управления
В завимости от способа програмирования различают микропро-
цессоры , выполняющие определенный набор команд и микропро-
цессоры выполняющие набор микрокоманд.
Микоропроцессоры первого типа выполняют набор из не
скольких десятков (обычно 40-80) относительно простых кома
нд. Для сравнения отметим , что современные мини-ЭВМ выпол
няют около 355 команд, а БК-11 только 64 команды. Реализа
ция поступившей в микропрцессор команды обеспечивается с
помощью блока управления, который вырабатывает необходимую
последовательность управляющих сигналов-микроприказов, оп
ределяющих работу каждого функционального блока микропроце
ссора. В каждом такте машинного времени блок управления
формирует определенную совокупность микроприказов-микроко
манду, всоответствии с которой различные узлы и блоки мик
ропроцессора выполнябт необходимые операции по поступающей
информации. За несколько тактов выполняется ряд команд ,
необходимых для реализации поступившей команды . Отоситель
но простые команды реализуются за 2-5 тактов, более слож
ные требуют 10 и болле тактов.
В микропроцессоре этого типа обячно использует
ся так называемое апаратное управление, при котором необхо
димая последовательность команд формируется с помощью спе
циальных последователлльных схем -управляеых генераторов
чисел. При этом структура блока управления имеет вид, изо
браженной на схеме ниже.
Двоничный код команды , поступающий на вхо
ды микропроцессора , записывается в регистр команд и хра
нится там в течении времени ее выполнения . В соответст
вии с кодом с дешифратором команд, вырабатывается ряд упра
вляющих сигналов . Часть сигналов дешифратора поступает в
схему управления генератором чисел . Эта комбинационная сх
ема задает последовательность чисел , вырабатываемых гене
ратором , каждое из которых является кодом одной команды.
В зависимости от кода поступившей команды схема управления
определяет длину и состав последовательности чисел форми
руемой генератором , т. е. число и виды команд , требуемых
для выполнения данной команды . Вырабатываемые команды по
ступают на соответствуюшие узлы имкропроцессора , произво
дящие необходимые операции над поступающими данными.
Сигнал поступающий от дешифратора в счетчике тактов,
определяет число тактов для реализации команды. После про
хождения требуемого числп тактов счетчик вырабатывает
сигнал окончания выполнения команды S , разрешающих переход
к следующей команде программы, код которой хранится в
одной из ячеек запоминающего устройства. Адрес этой ячейки
определяется числом, содержащимсяя в счечике команд. При
естественном ходе выполнения программы следующая команда
содержит ся в ячейке памяти , адрес которой на единицу бол
ьше адреса хранения предыдущей команды . В этом случае
адрес следуещей команды образуют , прибалением 1 к содержимо
му счетчика команд.
Схема аппаратного блока управления.
КОМАНДА АДРЕС
|---------|---------| |-------------|
| Регист команд | | Регистр |
|---------|---------| | адреса |
| |----------|--|
| |-------------| |--|-------|
|--------|---------| | Управление | | Счетчик |
| Дешифратор -----| счетчиком |---| команд |
|--|-------------|-| | команд | |----------|
| | |---------|---|
| | |
| | |
| |---|-----------| |
| | Управление | |
| | генератором | |
| | чисел | |
| |-------|-------| |
|---|----------| | |
| Счетчик | |------------|
| |
| тактов |
|--------------|
При выполнении комаонд условных и безусловных
переходов естественный ход программы нарушается. В этих ус
ловиях схема управления счетчиком команд устанавливает его
содержимое (адрес следующей команды ) в зависимости о кода
предыдущей команды (сигналов дешифратора) и результата его
выполнения ( сигналов от арифимитическо-логического устрой
ства и других функциональных узлов ). Сигналы , поступающие
от микропроцессора во внешние устройства, могут потребовать
пркрывания , выполнения одной программы и перехода к выпол
нению другой . Таким образом , сигналы также влияют на фор
мирование команд и выбора следующей команды.
В микропроцессоре первого типа блок програмно
го управления и операционные блоки, выполняющие операции
над поступающими данными , содержатся на одном кристале.
Такой микропроцессор представляет собой фукционально и кон
струкктивно законченный блок обработки информации .
Микропроцессоры второго типа выполняют набор из
нескольких десятков или сотен команд (обычно 64-256). Так
ие микропроцессоры можно использовать только в том случае
если программа работы задана в микропромном виде , т. е.
в виде последовательности команд. Так как для реализации
ооной команды в среднем требуется выполенение 5-10 микро
команд, то объем программ приблизительно на порядок
превышает объем соответсвующих программ. Поэтому составле
ние и отладка програм требует больших затрат времени. Обыч
но при использовани микропроцессора второго типа программа
преобразунтся к микропропрограмному виду автоматически с
помощью специального микропрограмного управления, которое
реализуется в виде отдельной специализированной большой ин
тегральной схемы или стоится их нескольких комбинационных
и последовательных микросхем.
Структура микропрограмого блока
управления.
Команда
|---------|----------|
| Регистр команд |
|----------|---------|
|
|
|--------|----------|
X, Y----------| Схема формиро |
| вания адреса |------------|
|---------|---------| |
| |
| |
| |
|---------|---------| |
| Регист адреса | |
| команд | |
|-------|-----------| |
| |
|--------------|---------| |
| | |
|--------|------| |---------|---------| |
| ПЗУ команд | | ПЗУ управления | |
|--------|------| | адресом | |
| |---------|---------| |
|--------|-----| | |
| Регист | |--------------|
| команд |
|--------|-----|
|
Команда
Общая структура програмных управляющих устройств
показана на схеме выше. Коды всех команд хранятся в ПЗУ
микрокоманд. Выбор требемой команды определяется ее адресом
который образуется с помощью схемы формирования адреса ко
манд функции которой в миропроцессоре обычно выполняются
микросхемами. В соотвествии с кодом поступившей команды ,
хранащемся в регистре команд, схема формирует адрес первой
из последовательности команд, обеспечивающий реализацию по
ступившей команды. Выбранная их ПЗУ команда заносится в
регистр команд и затем поступает в соотвествующие операци
онные блоки . Одновременно из ПЗУ управления адресом выби
рается комбинация двойничных управляющих сигналов (код уп
равления), который поступает в схему формирования адреса,
вызывает обращение на ее выходе адреса следующей команды.
Этот адрес и соответствует последовательности команд могут
изменятся под воздейтсвием внешних сигналов устройсв и
результатов предыдущей команды . Для выбора следующей ко
манды также формируются необходимые команды, в соотвествии
с которыим оперционные блоки образуют новый адрес.
Интерфейсны блок
Блок
прерываний |--|--RPLY
|---|------------------------------------| |--SYNC
ACLD ---|-- | |------------------------------| | |--DOUT
DCLD ---| | | РОН РСП | | |--DIN
IRQ1 ---| | | |R0 | |-----------------| | | |--WTBT
IRQ2 ---| | | |R1 | | |I/O| |T |N|Z|VC| |-| |--DMR
IRQ3 ---| | | |R2 | |-----------------| | | |--SACK
VIRQ ---| | | |R3 | | | |--DMGO
|-|-| | |R4 | |---------------| | | |--SEL1
| | |R5 | | АЛУ | | | |--SEL2
| | |R6 | |---------------| | |-||--BSY
| | |R7 | Операционный | |
| | |---| блок | |
| |---|--------|---|-------------| |
U | | | | |
----| |----|----| | | |
GND -|- | |-------| | |
----| | | | |
-| | | |---| |---------------|----|
|---------------|-----|-| | | Блок системной |
| Блок микропрограм- | | | магистрали |
| много управления | | |--------------------|
|-----|--------|--------| |
| | |
INIT | | |
-----| | |--------|-----|
|-----| Регист |
| команд |
|--------------|
Выполнение любой команды микропроцессора свя
зано с обним или несколькими обращениями к магистрали , вы
полняемими по одному из трех циклов :ввод (чтение), вывод
(запись), ввод-пауза-вывод (чтение-модификация-запись).
Любой цикл начинается выставлением сигнала BSY - занятия
на системной магистрали. Этот сигнал используется также
для управленим схемами магистрали. Одновременно с сигнала
ми WSY на магистрали выставляется адрес , а при обработке
цикла "Зпись"- также и сигнал WTBT. С задержной на такт вы
ставляется сигнал SYNC ( синхронизайия обмена ), свидеьель
ствующая о том, что на выводах ADO-AD15 установлен код
адреса. Для любой магистрали первое обращение к магистрали
связано с выставлением на магистрали адреса из счтчика ко
манд РС.
Во время действия сигнала SYNC микропроцессор выраба
тывет сигнал DIN , свидельствующих о готовности микропро
цессора принять данные от пассивных устройств. Сигнал DIN
вырабатывается также совмемтно с сигналом IAKO , сопровож
дая ввод адреса вектором прерывания. если микропроцессор
выводит данные , то вместо DIN вырабатывается сигнал DOUT
, свидетельствующий о том , что выводимые данные установле
ны на выводах блока системной магистрали. При выводах
слова , сиганл WIBT снимается вместе с адресом , а при вы
даче байта сохраняется до окончания сиганала BSY.
Сигнал RPLY вырабатывается внешним устройством в от
вет ан сигнал DIN или DOUT и обозначает в первом случае,
что данные установлены на магистрали , а втором случае -
что данные приняты с магистали.
Если сигнал RPLY от внешего устройства не
поступил в течении 64 тактов, то микропроцессор переходит
к обслуживанию внутреннего прерывания по ошибке обращения
к системной магистрали. После поступления сиганла RPLY от
внешего устройства микропроцессор считывает данные с магис
трали и сбрасывает сигнал DIN. Если выполняется цикл "За
пись" , то сигнал DOUT снтмается через 300 нс и через 100
нс считываются данные с магистрали.
Внешнее устройство после сброса сигнала DIN или DOUT
снимает сиганал RPLY , после чего микропроцессор снимает
сиганлы BSY и SYNC и может выполнять следующий цикл обраще
ния к каналу.
Для увеличения общей производительности микропроцессора
сора может отрабатываться совмещенный цикл "Чтение-моди
фикация -запись", в котором после снятия внешним устройст
вом сигнала RPLY сигналы SYNC и BSY не снимаются, а отраба
тывется временная диаграмма, соотвествующая циклу "Запись"
. В микропроцессоре имется спецефический режим
обращения с внешними устройствами расширения ввода-вывода
, задаваемый сигналами SEL1, SEL2. Сигналу SEL1 соответсву
ющий адрес 177716 , а сигналу SEL2- адрес 177714. Обмен с
этими регистрами осуществляется обычным образом по сигналам
DIN и DOUT , однако выдачи от регистров ответного сигнала
RPLY не требуется. По длительности сигналы SEL1 и SEL2 сов
падают с сигналами BSY.
Для организации многопроцессорных систем и
прямого доступа к памяти (ПДП) в интерфейстном блоке выра
батывабтся специальные сигналы DMR, DMGO, SACK. В основе
этих функий лежит алгоритм захвата шины аддрес/данные глав
ным и подчиненным устройством. Неглавное устройство формиру
ет сигнал DMR ("Запрос прямого доступа"), в на который гл
авное устройство вырабатывает сиганал разрешения DMGO. Все
подчиненные усиройства в многопроцессорой системе соединены
последовательно по шине захвата , так что выход DMGO
предыдушего , соединяется со входом DMG1 последуещего .
При этом сигнал DMGO транслируется со входа DMG1 на выход
DMGO0 на всех микросхемах, кроме выставившей запрос DMK,
которая блокирует дальнейшее прохождение сигнала DMGO и
выставляет сигнал SACK (Подтверждение запроса магистрали").
Далее этого микропроцессор, захвативший
магистраль , снимает сигнал DMR, выставляет адрес и сигнал
BSY , после чего отрабатывает один из сигналов обмена.
Сигнал SACK снимает обновременно с сигналом DIN или DOUT,
если в данном микропроцессоре снова не выставлен запрос
DMR . В этом случае запрос обращения к магистрали может бы
ть повторен.
Главный микропроцессор может захватить магисталь то
лько в том случае , если отсутствуют запросы от других ус-
тройств и не идет цикл обмена по магистрали. Цикл обмена
начатый гравным микропроцессором , при появлении других за
просов будет завершон, но переход к новому циклу приостана
вливается , а магистраль предоставляется подчиненому микро
процессору, выствившему запрос. Таким наивысшим приобрите
том в системе будет обладать устройство, соединенное своим
входом DMG1 с выходом DMG0 главногного микропроцессора.
Назначение микропроцессора в системе главным или подчинены
м осуществляется заданием кода на входе PA1, PA0. Код 11
соотвествует главному микропроцессору. другие коды -подчи
неному.
Важной функцей при организации управленя в реаль
ном режиме времени и построении микропроцессорных систем
является прерывание. В качестве источников прерывания могу
т выступать следующие процессы и сигналы : ошибка обращени
я к магистрали; незадействованный код в регистре команд;
Т-бит в реггистре слова состояния процессора; сиганл ава-
рии сетевого питания ACLO;сигналы радиальных прерываний
IRQ1, IRQ2, IRQ3; сигнал векторного прерывания VIRQ.
Kaк указывалось выше , прерывание от внешнго
устойства IQR1, IRQ2, IRQ3, VIRQ могут быть заблокированы
установкой в 1 седьмого разряда слова состояния процессора
. Как правило прерывание текущего процесса производится по
сле выполнения очередной косанды. Исключение сотавлет ошиб
ка обращения к магистрали , вызывающий прерывание програмы
на любой фазе выполнения команды.
Процедура внешего прерывания начинает с подачи
внешним устройством запроса VIRQ на соотвествующий вход ми
кропроцессора. Если прерывание не замискировано (разряд 7
РСП равен 0), то микропроцессор по указателю стека R6, с
предварительным декриментом адреса записывает содержимое
РСП , а затем счтчика команд РС. Кроме того , микропроцес
сор последовательно устанавливает сигналы DIN ( управление
вводов данных) и IAKO (разрешение прерывания). Сочетание
этих сигналов при пассивном уровне сигнала SYNC обеспечива
ет отработку цикла ввода адреса вектора прерывания. Устрой
ство выставившее запрос , принимает сигнал , IAKO и запре
щает его распросиранение к другим устройствам , выставляет
адрес вектора прерывания на системную магисталь , вырабаты
вает сигнал RRPLY и снимает сигнал VIRQ, микропроцессор
приняв адрес вектора прерывания , снимает сигналы DIN и
IAKO , и устройство заканчивает цикл снятием сиганала RPLY.
Далее микропроцессор считывает новое содержание
РС и РСП из двух ячее памяти (адпес первой есть адрес век
тора прерывания ) и перходот к выполнению команды с адресо
м из РС , входящим в программу обработки прерывания. При
выпоооолнени команды также может быть реализовано прерыва
ние, и снова состояние выполняемой программы будет зафикси
рованно в очередной ячей стека.
Всякая программа обработки прерывания должна зака
нчиватся командой возврата из прерывания RTI, по которой
из стека выбирался вектор прерванного процесса , записывае
мый в РС и РСП. Сигнал IRQ1 блока прерывания переводит мик
ропроцессор в состояние аналогичное состоянию команды HALT
и используется для контроля за положением переключателя "
Программа/пульт". Сигналы IRQ1, IRQ2 , IRQ3 используются
также для организации систем радиальных прерываний , имеют
прериотет выше , чем VIRQ, и вызывают прерывание по фиксиро
ванным адресам 000100 и 000270 соотвественно.
В блоке прерывания имеются два входа: ACLO -сиг
нал аврии источника питания переменного напряжения, DCLO
-сигнал аварии источника питания постоянного напряжения .
Этот сигнал вместе с сигналом INIT блока микропрограммого
управления используется для осуществления процедуры инициа
лизация микропроцессора. В первый момент после включения
питания микропроцессора поступают сигналы DCLO и ALSO. Сиг
нал DCLO должен выдерживаться не менее 5 мс, в течении кото
рых микропроцессор вырабатывает сигнал INIT , используемый
для устаноыки в исходное состояние внешних устройств (сиг-
нал INIT может также поступать в микропроцессор извне, осу
ществляется сброс тригеров запроса радиальных прерываний и
блокировку сигналв DMR). Через 5 мс. после подачи питания
на микропроцессор должен быть сныт сигнал DCLO ( микропро-
цессор при этом снимает сигнал INIT ); через 70 мс должен
быть снят сигнал ACLO. С этого момента начинается собствен
но инициализация ( обнуление ) работы микропроцессора :по
адресу 1777716 (для главного микропроцессора ) считывается
стартовый адрес SEL1 и заносится в старший байт счтчика ко
манд РС; в РСП загружается константа 340; микропроцессор
переходит к выполнению команды по адресу из счетчика кома
нд.
Одной из функйий описанных выше сигналов интер
фейсного блока является управление блоком систкмной магис
трали , связывающий внутренную магистраль микропроцессора
с внешней. В этом блоке осуществляется управление усилите
лями приема и выдачи информации по совмещенным выводам ад
ресов и данных AD0-AD15.
Используемые в БК типы данных.
Бейсик позволяет работать с данными арифмитичекого
и текстового (строкового) типов, причем аррфмитические дан
ные могут быть целого и вещественого (одинарной и двойной
точности). Конечно процессор БК не имеет таких возможносте
й . Например обработка вещественных чисел может быть органи
зована только програмно, причем различные системы програми
рования , могут использовать даже различные способы предст
авления этих чисел.
Основными данными, с которыми может работать
процессор БК , является байт и слово. Соответственно , в
слове может быть размещено целое число, а в байте -один
символ текста.
В одном слове 16 бит-двойничных разрядов,поэто
му из них можно составить 2^16=65536 различных комбинаций.
Если учесть , что машинные слова команды работы с целыми
числами считают старший разряд (15-й бит) слова знаковым
(0-число положительное, 1-число отричательное), то диапазон
чисел в БК будет -32767. Если в результате вычислений в
Бейсике получится больший результат, он выдаст ошибку 6.
Если то же самое произойдет в вашей программе в кодах, ни
кто этого не заметит , если не принять специальные меры.
Тогда, прибавив единицу к цислу 32767, вы полцчите -32768.
Для того чтобы предсиавит символы в памяти машины,
их кодируют. В одном байте -8 бит, что позволяет закодиро
вать 2^8=256 различных символов. Это вполне достаточно,
чтобы разместить строчные и заглавные буквы двух алфавитов
цифры и другие спецзнаки. Именно для удобства кодировки
символов и был выбран такой размер памяти машины.
Следует отметить , что для кодирования символов
в БК используется советский стандарт KOI-8 =8 бит , базрую
щий ся на международном стандарте ASCII (American Standard
Code Information Intershange).
Процессор -это сложная электронная схема . Однако
знать все его особенности при програмировании в машинных
кодах незачем. То что нужно знать програмисту о каком -ли
бо устройстве машины, назывется его програмной моделью.
Сюда относиться програмно-доступные ячейки памяти устройст
ва (их называют регистрами). а также алгоритм функциониро
вания устройства.
Регистры общего назначения предназначены для проме
жуточных результатов вычислений . Операции пересылки данных
в ОЗУ . Оптимальное импользование регистров общего назначе
ния в чисто выполняемых чиклах программы позволяет иногда
ускорить ее на порядок. Регистр R5 использется для связи с
подпрограммами , а регист R6 обозначается SP и использует
ся как при вызове подрпрограм , так и при обработке преры
ваний. Регистр R7 обозначается РС -счетчик команд , всегда
содержит адрес следующей команды , которую должен выполни
ть процессор . Расмотрим подробнее алгоритм работы процес
сора , то есть опишем как он выполняет программу.
Программа должна начинать работу с определенного
адреса памяти (с опреденной команды) . Для этого двойнич
ный код адреса, с которого начинается программа , должен
быть предварительно записан в регистр РС процессором(
счетчик команд) так как регистр РС всегда хранит адрес
очередной команды , подлежащей выполнению.
Допустим в регистре РС записали восъмеричное число
7000 (все коды и адреса будем писать в восьмеричном виде.
). Это значит , что следующей командой выполняемой процес
сором , будет команда , исполняемой процессором , будет ко
манда хранящаяся по адресу 7000. Произойдет это так: из па
мяти с адреса 7000 в процессоре перепишется слово-двойн
ичный код команды для выполнения. Например пусть по адресу
7000 была записана команда 600001.
По этой команде процессор должен сложить содержи
мое R0 с содержимым R1. Причем результат сложения (сумма)
запишется в R1. После выполнения процессором этой команды
содержимое регистра РС автоматически увеличивается на 2
( стане равным 7002), теперь уже в процессор будет переда
на команда из ОЗУ с адреса 7002, и так далее.
Действие команд перехода заключается в записи в реги
ст РС нового значения , итогда процессор продолжит выпол
нять программу с указанного адреса.
А что будет , если процессор в результате ошибки
програмиста прочитает непонятную ему команду ? Ничего стра
шног не произойдет , просто в этом случае выполнение прог
раммы будет прервано и процессор начнет выполнять программу из
из системного ПЗУ (как говорят программа вылетит в монитор)
, либо управление возмет на себя используемый отладчик.
Аналогичная ситуация возникает , если в РС записать
нечетное число ( вы помните ючто длина команды кратна маши
нному слову, т. е. двум байтам, и ее адрес должен быть чет
ным ), либо такого адреса в мшине не существует.
Остается только добавить, что после выполнения
каждой команды программы меняется содержимое регистра состо
яния процессора. Этот регистр предназначен для хранения
PSW-слово состояния процессора. В слове состояния процессор
а имеют значения следующие биты (разряды)-
бит 0(С) устанавливается в 1, если при выполнении команды
произошел перенос единицы из старшего разряда результата;
бит 1(V)устанавливаетсч в 1если при выполнении арифмитичес
кой команды ( например сложения) произошло арифмитичсекое
переполнение;
бит 2(Z) устанавливается в 1 , если результат равен нулю;
бит 3(N) устанвливается в 1, если результат отрицателен.
Эти биты слова состояния процессора используют команды ус
ловного перехода . Остальные биты слова состояния процессо
ра устанвливаются програмистом для задания режимов работы
процессора;
бит 4(T) , устанавливается в 1, вызывает после выполнения
очередной команды прерывания по вектору 14. Это использует
ся программами -отладчиками для трссировки программы;
бит 7(Р) установленный в 1 , запрещает прерывание от внеш
них устройств. Таким образом , командой установки слова
состояния процессора MTPS #200 можно запретить прерывание
от клавиатуры до тех пор , пока не выполнится команда
MTPS#0.
Управление памятью.
Обычная интерпетационная машина слова , как адреса по
зволяет нам адресовать к байтам в диапазоне от 0 до 17777
т. е. всего к 2^16=65536 байтам. При описании различных
объемов памяти принято пользоваться обозначением К, которое
соответствует числу 2^10=1024 (=O 2000). Поэтому можно ска
зать, что одно слово машины позволяет вам адресовать к по
лю памяти 64 Кбайт или 32К слов.
В стандартном оборудовании каждого процессора
предесмотрен определенный объем памяти , который в случае
необходимости можно расширить с помощью имеющихся в апара
туре возможностей. Было истетвенно считатать , что масима
льный объем памяти для машины равен 32 К слов, просто пото
му , что для большего не хватает адресного пространства.
Так как 4 К слов общей шины зарезервированы под регистры
ввода-вывода и различные управляющие символы , то, казало
сь бы , система предоставляет в распоряжение не более чем
28 К слов оперативной памяти. Для самых малых машин дан
ного семейства это именно так.
Однако в боее крупных системах внутренние ре
гистры процесссора имеют 8 разрядов. , так же как и адреса
общей шины. Поэтому процессор может адресовать , а общая
шина обепечивать доступ к пространству в 2^18=256 K байт
или 128 К слов. Учитывая 4 К слов , отводимых под регистры
ввода-вывода и аналогичные срества , потенчиально получаем
124 К слов оперативной памяти. Казалось это огромный объем
но некорые пользователи ( с непомерными запросами), работаю
щие в системах с разделенным временем, умудряются его пол
ностью исчерпать.
Указанная память , однако составлена из уже имеющи
хся нам шестнадцатиразрядных слов машины, и казалось бы
проблема остается неразрешимой , поэтому одно слово из
шестнадцати битов не может вместить восемьнадцатиразрядный
адрес. Если пользователи не принтмают мер, то так оно и бу
дет :только 32 К адресов общей шины будут доступны его про
грамме. Из них 28 К-ячейки опративной памяти. Так как 56 К
=О 160000 ( в байтах), то обычным способом можно програмо
послать на ячейки от 0 до 157776. Ссылка интерпритируется
процессором обчным образом :как обозначение ячейки общей
шины с указанием номера. К примеру, команда CLR@#100000
очищает ячейку общей шины с номером 100000 . Эта ячейка
является одним из слов опративной памяти. В данном случае
мы будем использовать абсолютную адресацию, поскольку
значение адреса представляется при таком способе в явном
виде.
Регистры устройства ввода-вывода , однако, всегда
находятся в верхних адресах обще йшины и занимают 4 К слов
т. е. в случае восемнадцатиразрядных адреслв это ячейки с
760000 по 777776 . Например , буфер печатаюшего устройст
ва занимает ячейку с адресом 777566. Такое число не помеща
ется в одно слово машины, изъза чего команду типа MOV@#
102, 777566 закодировать без изменения знака нельзя. Тем
не менее мы уже видели, что запись MOVB#102, @177566 позво
ляет адресовааться к требуемому буферу . Происходит так по
тому , что процессор автоматически смещет значения всех
адресов в диапазон от 160000 до 177776 , интерпритируя их
как шестнадцать младших битов истиного адреса, в котором
17-й и 18-й биты равны нулю.
Очень важно не путать подобное смещение адресов с
тем, которое производит компоновщик. Задача последнего сос
тоит в том , чтобы вне зависомости от места размещения про
грпммы в памяти исполнительный адрес , вычисляемый процесо
ром , соответствовал требуемой ячей памяти. К примеру, ес
ли мы пишем MOVB#102, 177566, то от компоновщика требуется
определенная работа, в результате которой он убедится, что
здесь имеется ссылка на ту ячейку памяти , что и при запи
си MOVB#102, @#177566. В обоих вариантах ссылаются на ячей
ку 177566. В функции смещения , о которой идет речь в дан
ном разделе входит привязка адреса (виртуального адреса)
к соответсвующей ячейке общей шине ( физическому адресу).
Обратите внимание также на то, чио преобразование виртуаль
ного адреса в физичсесский выполняется аппаратно.
Ясно , что в диапазоне от 0 до 157776 никако
го смещения не требуется :виртуальный адрес совпадает с фи
зичеким . Однако для вирутуальных адресов с 160000 по 177
177776 физически адрес получается расширением виртуального
адреса двумя единичными битами :разрядами 17 и 18.
Машины с памятью более чем 28 К слов имеют
специальный блок проверки величины смещения . При соотвест
вующем подборе виртуального адреса и значения смещения лю
бой физический адре с становится доступным. Апаратура , пр
и помощи которой осуществляется контроль смещения , называ
ется блоком управления памятью.
Страничная организация памяти.
На машине пространство виртуальных адресов
разбито на восемь страниц, каждая из которых расматривает
ся блоком управления памятью, как единре целое . Имеется
32 К слов виртуальных или програмных адресов , а длина ка
ждой страницы равна 4 К сллов. Привязка виртуальных адресов
к страницам определена заранее и не может быть изменена.
Конкретно она выглядит так:
Номер Диапазон
страницы виртуальных
адресов
0 000000-017776
1 020000-037776
2 040000-057776
3 060000-077776
4 100000-117776
5 120000-137776
6 140000-157776
7 160000-177776
С каждой страницей связаны две специальные
ячейки общей шины: регистр адрес страницы и регистр описа
ния страницы.
Включение управления памятью.
При введении в действие процессора или при перзапуске
его после команды HALT блок управления памятью не работае
т. Он активизируется установкой бита включения управления
памятью , а именно нулевого бита регистра состояния управ
ления памятью номер 0; заметьте, что пока управление памя
тью выключено, автоматическое подлючение седьмой страницы
позволяет нам обращаться к регистру R0 , как к виртуально
му адресу 177572. Поэтому включение блока управления памя
тью достигается так:
R0=177572
. . . .
BIS #1, @#RO
Рассмотрим теперь такую последовательность команд:
R0=177572
R7=172356
. . . . .
CLS R7
BIS #1, @#R0
BIC #1, @#RO
Если машина только , что включена , то нет не
обходимости сбрасывать регистр R7 , так как он заведомо со
держит 0. Но если процессор остановлен после фукционирован
ия операционной системы , то несмотря на отключение блока
управления памятью , регистры продолжают сожранять установ
ленные в них системой значения. При нормальной работе блок
управления памятью запомнит содержимое регистра R7, так
что седьмая страница будет, как обычно , отведена под
регистры устроцств ввода-вывода. Для этого требуется спе
циальным образом настроить упомянутый регистр , содержимое
которого было вытеснено нашей командой.
Нужно помнить обнако, что сбрасывание битов регистр
а производилось при отключенном блоке управления памятью.
Поэтому ссылка в следующей проверке на регистр R0 , как на
виртуальный адрес 177572 аппратно приводит к физической
ячейке с адресом 77572 . Следовательно , эфект от выполнени
я команды BIS сохраняется.
Следуещей командой BIC мы попытались отключить блок
управления . Именно к такому результату привело бы сбрасы
вание первого бита ячейки 77572 общей шины. Но в нашей ко
манде мы адресуем к 177572. Предфдущая команда привела к от
ключению автоматичсекой привязки вирутуального адреса
177572 к физической ячейке 77572. Поэтому , аппаратура
заметив , что 177572 есть виртуальный адрес в седьмой ст
ранице, обратится к регистру R7 , чтобы определить , как
его надо преобразовать. Мы намеренно воздержались от запис
и в регистр R7 необходимо смещения . В итоге команда BIC
обратится не к регистру состояния , а кнекоторой другой
физической ячейке памяти и не выполнит возложенную на нее
фукцию.
Не сцществует иного способа програмно иправить
сложтвшуюся ситуацию . Поскольку невозможно обратиться к
регистру R7 , нельзя задать и правильное смещение. По ана
логичной причине все регистры устройстыва ввода-вывода
оказывют программо не достижимы . Единственый способ отклю
чить блок управления памятью состоит в останове процессора.
Формирование физического адреса.
При включенном блоке управления паматью каждая
ячейка, к которой адресуется из программы , расматривается
аппаратурой как состоящая из двух полей . Биты с 13-го по
15-й определяют номер страницы виртуального адреса. Это так
называемого поле текущей страницы. Пусть виртуальный адрес
равен 177566 . Биты с 13-го по 15-й в нем равны 1, что соо
твествует двойничной записи числа 7, т. е. данный адрес за
дает седьмую страницу . Поэтому аппаратура обращается к
регистру R7 за базовым адресом страницы 7. Он кодируется
битами ц 0-го по 11-й регистра адреса страницы (остальные
биты не используются ) . Для получения действительного зна
чения смещения это двенвцатиразрядное поле сдвигается на 6
битов влево.
Оставшиеся 13 битов виртуального адреса (ц 0-го по
12-й) предсиавляют собой поле смещения внутри данной страни
цы. Значение этого поля складывается с базовым адресом , и
в результате формируется физический адрес, соотвествующий
данному виртуальному.
Обратите внимание на то, что все действия выполняютс
я аппаратно . Програмисту только необходимо только настро
ить регистры. Обычно операуионная система заносит регистр
R7 число 7600 . Пусть опять вртуальный (програмный) адрес
равен 177566. Он рападется на два поля:
1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
|-----|---------|---------------|
|
Страница|-------- Смещение------
которые определяют седьмую страницу и мещение 17566 . От
метим что смещение всегда задается (в байтах ) между 0 и
17777, так как длина страницы составляет 8 К (=О 2000) бай
тов или 4 К СЛОВ . Смещая содержимое регистра R7 (т. е.
7600) на 6 битов влевл, получим базовый адрес данной страни
цы , равный 76000 . Следовательно , физическим адресом ,
соотвествеующим данному виртуальному , будет:
+ Базовый адрес 76000
Смещение 1756
-------------------------------------
Физический адрес 87756
Размер страницы и доступ к ней.
Страница виртуальной памяти всегда содержит 200 ква
нтов. Порция в 100 байтов есть наименьшая величина смещени
я , и поэтому в блоке управления памятью она служит кван
том. Блок управления памтью распределит первый квант стра
ницы , вычислив базовый адрес по описанной выше схеме. Но
он не будет выпонять ту же опирацию с остальными квантами
до особой команды. В результате адресация к ячейкам 000100
по 017776 не достигнет цели , поэтому что им не будут
поставлены в соответсвии реальные ячейки памяти. Ссылка
же на адреса с 0200000 по 020076 будут реализованы.
Чтобы задать количество кватов данной страницы вир
туальных адресов , которое должно приведено к физическим
ячейкам памяти , необходимо обратится к регистру описания
страницы. В его старший байт програмист заносит требуемое
число квантов( помимо первого ) . По команде:
BIS #77400, @#R7
блок управления памятью узнает о том , что все 200 кванто
в седьмой страницы должны образовываться в физический адрес
.Команда задает размер страницы в 200 квантов.
Первый и второй байты регистра данных каждой страницы
должны усианавливаться програмистом , чтобы определить пра
ва доступа процессора кней. Если они оба равны 1., то раз
решаются любые обращения из прогарммы к соответствующей
виртуальной памяти; это резидетная , открытая на чтение-
запись страница. Если в первом бите 1, а во втором 0, то
ссылки разрешены только в командах , которые не изменяют
содержимаое ячеек памяти;это резидентная , открытая только
на чтение страница. Если наконей оба бита нулевые, програ
мная адресация к данной странице запрещена;это не резиден
тная странийа.
Таким образрм , последовательность команд:
MOV #7600, @#R7
BIC #6, R7
BIS "1, @R0
позволяет эффективно прервать связь процессора с устройства
ми ввода-вывода ( если только к ним уже не адресовались
из другой страницы ). Дествительно, хотя в регистр R7 ус
тановлено правильное смещение для седьмой страницы, сбрасы
вание битов командой BIC делает страницу не резидентной .
Поскольку все регистры управления памятью расположены в од
ной и той же области общей шины , теперь невозможно выдели
ть под нее другую страницу. Снова единсивенный выход -оста
новить и перезапустить процессор.
Заметьте, что замена #6 на #77400 в команде
BIC дает тот же эфект. Только один квант седьмой страницы
будет привязан к физицеской памяти , а все адреса выше
76076 окажутся недоступными.
Понятно, что ппод регистры ввода-вывода можно
приспособитть произвольно выбранную страницу. Для этого до
статочно настроить все регистры. Так как они находятся в
одном и том же месте памяти , то предварительно придется
либо отключить управление памятью , либо получить к ним до
ступ через другую страницу.
Напишем программу вывода на терминал буквы В , на
этот раз адресуясь к буферу печати , как ячейке памяти с
виртуальным адресом 34566. Виртуальный адрес рападается на
поле с номером 1 и на поле смещения 1456. Следлвательно,
чтобы виртуальный адрес 34566 соответствовал физическому
адресу 77566 , необходимо в R1 задать базовый адрес , кото
рый определяется так:
Физический адрес 77566
- Смещение - 1456
--------------------------------------
Базовый адрес 76110
И следовательно , в R7 нужно занести значение 76110. Вся
программа , момоент входа в которую предполагается , что
блок управления памятью отключен, такова:
R1=17232
R0=17572
START: MOV #76110, @#R1
MOV #1456, @#R1
BIS #1, @#R0
MOVB #102, @#34566
HALT
. END
Защита памяти.
Ограничесния на размеры страницы и права доступа
к ней , которые можно установить в регистре описания,
используются в системах с разделением времени для того, что
бы предохранить выделенные различным пользователям простран
ва памяти от пересечения и чтобы защитить опервционную си
стему от всех непривилигированных програмистов.
Если вкоманде нарушается какое -либо их этих огра
ничений , она выполняться не будет :блок управления память
ю игнорирует ее. Он вызовет програмное прерывание ( не взи
рая на приоритет процессора) с вектором прерывания в ячей
ке 250. В связи сэтим надо учесть, что для всех векторов
внешних и програмных прерываний используются виртуальные
адреса. Поэтому команда
MOV #SERV, @#250
всегда установит адрес ячейки SERV равным адресу обработки
прерываний от блока управления памятью. Когда произойдет
прерывание , в счетчике команд неокажется содержимого ячей
ки 250 общей шины. Дейсивительно, привключенном блоке упра
вления памятьб виртуальный адрес 250, будет смещен , и в
счетчик команд поступит содкржимое ячейки, соотвествующей
преобразованному адресу.
Адрес который передается програмой в качестве
входной точки процедуры обработки прерываний, является ви
ртуальным , так, что он имеет отношение к блоку управления
памятью. Предполодим , что программа объявляет третьб стра
ницу нерезидентной, включается блок управлением памятью и
затем выполняется команды:
MOV #60000, @#250
TST @#60000
Пепвая из них корректна. Хотя в ней фигурирует значение
600000 , никаких ссылок на содержание ячейки с иаким вирту
альным адресом не делается и защита памяти не нужна. Поэто
му еоманда благополучно установит 60000 в качестве входно
го адреса программы обработки прерываний.
Вторая же команда пытается обратиться к нерезид
ентной третьей странице. В результате блок управлением па
мятью игнорирует ее и передает управление по виртуальному
адресу 250. Процессор загрузит содержимое виртуального ад
реса 600000 в счетчик команд для того, чтобы передать уп
равление программе обработки прерываний. Это однако, вно
вь приведет к срабатыванию механизма зашиты памяти; снова
проийдет прерывание и т. д. В итого программа зациклится.
Режим работы процессора.
Привилигированных и непривелигированных пользовате
лей в системе с разделенным временем различают по режимам,
в которых они могут работать с процессором . В системе име
ется два режима :опреативнй и обычный(польховательский).
Сразу после включения процессор перейдет в оперативный ре
жим и останется в нем до тех пор , пока будет выполняться
системная программа или программа привелигированного поль
зователя . Для непричелигированного пользователя операцион
ная система изменит режим работы процессора , предваритель
но предприняв шаги к тому., чтобы пользователь не смог са
мовольно еог изменить.
Наиболее характерное отличие заключается в ом,
что команда HALT является некорректной в режиме пользовате
ля. Вместо останова процессора она приведет к прерыванию в
ячейке 4 или 10. (В какой именно , зависит от процессора).
Режим задается 14-м и 15-м битами слова
состояния процессора PS. Слово состояния имет на общей ши
не адрес 77776. Если оба бита равны 0, то процессор работа
ет в опреративном режиме. Если же это единицы, то режим об
ычный. На процессоре не допускается , чтобы значение би
тов было различным.
Когда блок управления памятью получает вир
туальный адрес , то он прежде всего анализурует слово сос-
тояния , чтобы определить в каком режиме находится процес
сор. В зависимости от режима в описанном ранее алгортме вы
числения смещения используется тот или иной набор регистр-
ов . Содержимое этих наборов в целом не зависит одно от др
угого. Твким образом , допустимо (это практикуется) , что
в пользовательском режиме програмам будет закрыт доступ к
регистрам ввода-вывода .
Тем не менее выполняющейся в обячном режиме пр
ограмме должны бытьпредоытавлены возможности для осуществ
ления ввода-вывода. Мы уже знаем, что это достигается при
помощи системных подпрограм, и сейчас можно более детально
ознакомится с тем, что происходит. Давайте в последний раз
напишем программу печати на терминале буквы В. Мы достигнем
цели командой TRAP в обчном режиме. Считая, что перед вхо
дом в программу процессор находится в опретивном режиме,
установим програмное прерывание:
MOV #TRP, @#34
MOV #340, @#36
Метку TRP мы выбрали в качестве входной метки проце
дуры обработки программных прерываний и установили приори
тет последней равным 7, так что можно небеспокоится по по
воду прерываний от внешних устройств. Заметьте, что значе
ния адресов программных и внешний препываний определены в
виртуальном адресном пространстве оперативного режима.
Они будут доступны в другом режиме, если только какая то
страница виртуального адресного пространства обячного режи
ма соотвествует тем же самым физическим ячейкам . Обычно
же блок управления памяитю накладывает запрет на доступ к
этим векторам в пользовательском режиме.
В ячейке с меткой TRP имеем:
TRP: MOVB#102, @#TRB
RTI
Естественно , что индефикатор TRB должен быть где-то описан.
Предполагая, что регистр R7 настраивается , как обычно ,
полагая TRB=177566.
Метка TRP загрузчик поставит в соответствие некий
виртуальный адрес. При помоши блока управления памятью мо
жно убедится в том, что соотвествующая ему ячейка общей ши
ны недоступна прогарммам в обычном режиме В крайнем случае
ее можно установить только на чтение. Тогда программа обыч
ного режима могла бы выполнить команду JMP TRP, не вызвав
обращения к блоку защиты памяти. Все же , поскольку регист
ры устройства ввода-вывода недоступны программам обячных
пользовательских , команда с меткой TRP, по видимому, не
выполняется.
Связь между адресными пространствами.
Системная программа EMT , может выбрать
парметр из младшего байта команды EMT . Предположим теперь
, что обрещение к комаанде EMT происходит , когда процессор
находится в обячном режиме. Программа ЕМТ сохраняет значе
ние регистров R0 до R5 в стеке , и поэтому адресом возврата
оказывается 14(SP). Он загружается в R0:
MOV 14(SP), R0
Tеперь сама команда ЕМТ расположена по виртуальному адресу
-2(R0) , но в виртуальном просстранстве обчного режима.
Прогрпмма ЕМТ , однако будет функционировать в оперативном
режиме. Допустим, что она была загружена с виртуального ад
реса 2000 обчного пространства. Если она заканчивается
командой
MOV -(R0), -(SP)
то в стек запишется содержимое виртуального адреса 2000 пр
остранства опретивного режима. Это будет та же самая физич
еская ячейка памяти , если, только нулевая стрвница в обо
их режимах одинрково распределена.
Вместо предыдущего способа в системном вызове нуж
но использовать команду пересылки из пространства предыду
щей команды MFPI (Move From Istruction space). Это одноад
ресная команда . Ее операнд интерпритируется , как резуль
тат вычисления исполнительного адреса, соотвествующий вир
туальному адресу предшествующего пространства ( в нашем сл
учае пользовательского ) . Команда заносит содержимое это
го адреса в системный стек. Поэтому программа ЕМТ должна
заканчиваться так:
MFRI -(R0)
Обратная связь -от стека к адресу предшествующего пространс
тва -достигается аналогггичным способом при помощи команды
записи в пространство предшествующей команды MTPI (Move
To previous Istrustion spase ).
Предшествующий режим определяется каак режим , в кото
ром процессор находится перед последним программным или вн
ешним прерыванием . Причем , когда одно из них происходит
, в словл состояния процессора зановятся значения битов
второго слова вектора прерывания , за исключением битов
12 и13: их состояние определяется предшествкющими значееия
ми битов 14 и 15 в PS. В командах MFPI и МТРI осуществляет
ся проверка 12-го и 13-го битоа PS , позволяющих определи
ть , о каком виртуальном промтранстве идет речь.
Системные стеки.
В каждой из режимов процессор заводит особый
указатель стека. Указатели представляют собой совершенно
различные регистры процессора , которые устанавливаются
независимо один от другого . В то же время сама посебе не
можеет прочесть один стек другому: выбор предопределен режи
мом, в котором находится процессор .
Поэтому , если впрограмме определено выражение SP=
6%, то любая ссылка на индефикатор SP будет интерпретирова
ться как обращение кстеку опреративного режима , если проце
ссор находится в оперативном режиме, и как обращение к
стеку обчного режима , если процессор находится в этом ре
жиме.
Система команд процессора БК.
Команды процессора К 1801 ВМ1 условно можно разде
лить на 4 группы :однооперадные команды, двухоперандные ко
манды, команды передачи управления и беоперандные команды.
Двойничный код безоперанной команды содержит толь-
ко код операции- информацию для процессора о том, что нужно
делать по этой команде.
Двойнничный код однооперандной команды содержит
код операции и информацию для процессора о местонахождении
обрабатываемого числа (операнда) , надкоторым нужно произве
сти опрацию.
Двухоперандные команды , помимо кода операции, со
держат иформацию для процессора о метонахождении 2-х чисел
(операндов). Напимер, для сложения двух чисел команда долж
на содержать код операции сложения и информацию о том ,
откуда взять слагаемые .
Далее коды команд процессора , а также коды опе-
рандов будем писать в восьмеричной системе счисления (как
и коды адресов ). Однако полезно помнить, что команды и
операнды хранятся в памяти в двойничном коде , восьмерич
ный код мы будем использовать только для удобства.
0 101 000 110 001 111 -двойничный код
L- L- L- L- L- L- -восьмеричный код
На рисунке показано, как переводить двойничный код
числа в восьмеричный. Число 050617 в восьмеричной системе
счисления получено из 16-разрядного двойничного кода
0101000110001111 таким образом. Начиная с младшего разряда
(справа) двойничное число делится на триады (группы по 3
цифры). Правда старший разряд 16-разрядного числа при это
м осается без "соседей". Затем для каждой триады записывае
тся ее представление в восьмеричной системе счисления. В
результате вместо 16-разрядного кода числа получаем 6-раз
рядный восьмеричный код . Разумется при написании программ
удобнее работать с 6-разрядными кодами команд и чисел, чем
с 16-разрядными -благо , все имеющиеся программы, обепечи
вающие програмирование в кодах , включая пультовый отлад
чик, понимают восьмеричную систему счисления.
Способы адресации операндов.
В однооперндных командах процессора первые 4 вось
меричные чифры определяют код операции. Оставшиеся 2 цифры
в коде команды процессор использует для определения место
нахождения операнда, над которым нужно произвести операцию
. Напимер , команда 005004 обнуляет регистр R4. Здесь пер
вые 4 цифры кода команды "0050" являются кодом операции и
указывают на то, что процессор должен произвести обнуление
. Оставшиеся 2 цифры "04"указывают , что происходит обнуле
ние регистра R4. Нетрудно догадаться, что последняя цифра
является номером того регистра , содержимое которого испо
льзуется процессором при определении местонахождения опера
нда. Предпоследняя цифра (код способа адресации) указывает,
каким образом содержимое ренистра используется при опреде
лении местонахождении операнда , то есть определяет способ
адресации.
Регистровый режим адресаци.
В режиме ячейкой явлется сам указанный регистр. Под прямой
адресацией мы подразумеваем , поле операнда показывает дей
ствительный адрес и никаких вычислений не проиводит.
INC R3
Косвенный режим адресации.
В косвееном режиме ячейкой является восьмибиитовый байт
или слово , адрес которого находится в указанном регистре.
CLR @R5
Режим автоувеличения.
Сразу после доступа к регистру для получения адреса, авто
матически увеличивается на 1 , если операция байтовая, и
на 2 если операция - словесная .
CMP (R3)+, R3
Косвенный режим автоувеличения .
Число в указанном регистре используется , как адрес некото
рой ячейки памяти; содержимое этой ячеки берется затем как
адрес ячейки. Хотя содержимое указанного регистра увеличи
вается сразу же после его использования для получения адре
са , это увеличение происходит на 2 и никогда на 1. , даже
если инструкция байтового типа.
@(R1)+
Режим автоуменьшения.
Уменьшение содержимого регистра происходит прежде его испо
льзования в качестве адреса. Для батовых операций происхо
дит уменьшение на 1, для словесный инструкций -на 2.
-(R0)
Индексный режим.
Получив содержмиое регистра , процессор прибавляет к нему
число , называемое индексом. Но содержимое регимтра при
таком сложении не изменяется . Полученное в результате
сложения число используется как адрес ячейки памяти.
X (R1)
Косвенный индексный режим.
@-указывает , что используется косвенный режми. Адрес ячей
ки выяисляется так:берется содержимое регистра , к нему пр
ибавляется индекс , и результат использунтся как адрес яч
ейки памяти, содержимое которой явлется адресом , над
которым выполняется операция. Где Х -некоторое число.
@X(R0)
Однооперандные команды.
Каждая команда , помимо своего числового кода , имеет свою
мнемонику -обозначение в виде последовательности латинских
букв, что используется для програмирования на языке ассем
лера. В случае обработки байтовой операцией обозначется-
"В".
CLR -очиска регистра
SOM-по этой команде образуется инверсный код.
INC-инкремент, увеличение содержимого на 1.
DEC-декркмент, уменьшение содержимого на 1.
ADC-увеличивает значение операнда на содержимое разряда
SBC-уменьшает значение операнда на содежмое разряда
TST-тестирование значения операнда.
ROR-циклический сдвиг значений разрядов вправо.
ASL-тоже самое, но влево
SWAP-меняет месиами старший и младгий байты.
MFPS-пересылает слово состояния процессора в место , опреде
ляемое полем адресации операнда.
Двухоперандые команды.
Код двухоперндной команды , кроме кода операции , должен
содержать 2 поля адресации команды. Певое поле адресации
операнда, обозначаемое в коде команды двумя буквами "SS",
определяет метонахождение 1-го операнда команды и называ
ется полем адресации операнда источника. Второе поле адре
сации опренда, обозначается в коде команды буквами "DD",
определяет метонахождение 2-го операнда команды и называет
ся полем адресации операнда приемника. Первый операнд кома
нды называется оперндом источника, второй операнд-операндом
приемника.
MOV-пересылка по адресу , определяемый полем адресации
SMP-данная команда вычитает из операнда источника операнд
приемника. Но при этом значения опрерандов не измениется.
BIT-значение каждого разряда результата логичеким умножени
ем значений соотвествующего разряда операнда источника и
операнда приемника.
BIC-по этой команде сбрасываются в "0" разряды операнда.
ADD-команда суммирует операнд источника с операндом прием
ника.
Переходы.
BR-переход .
BNE-переход , если разряд Z, слова состояния процессора
сброшен в"0".
BNQ-переход в этой команде произойдет, если разряд Z слова
состояния процессора установлен в"1".
BPL-переход произойдет, если разояд N слова состояния про-
цессора сброшен в"0".
BMI-переход произойдет, если к моменту исполнения команды
разряд N слова состояния процессора установлен в"1".
BVC-переход произойдет , если разряд V слова состояния про
цессора установлен в "1".
BGE-по команде произойдет переход , если содержимое
регистра R1 оказалось больше или равно содержимому R2.
MOV R1, R2
CMP R1, R2
BGE M1
MOV R2, R3
M1: . . . . .
BLT-если вместо команды BGE поставить команду BLT , то пе
реход по команде BLT произойдет , если содержимое R1 ока
жется меньше содержимого R2, в результате программа полу
чит в R3 минимальное значение.
MOV R2, R2
SMP R1, R2
BLT M1
MOV R2, R3
M1: . . . . .
BLE-если команда BLE следует за командой сравнения двух
операндов , то переход произойдет , если операнд источни
ка меньше или равен операнду приемника.
SOB-вычесть единицу и сделать переход , если не 0 .
Значение смещения занимает 6 младших разрядов кода команды
и расматривается как число без знака -так как переход по
этой команде происходит только в обратном направлении ( в
сторону уменьшения адресов ). Для получения кода команды
со смещением , отличным от "0" , к коду команды прибавляет
ся значение смещения , равное значению выражения:
адрес команды + 2 - адрес перехода/2
Текст программы на ассемблере:
MOV #1777, RO ; длительность звука
MOV #400, R1 ; длительность полупериода
M3: MOV #100, @#177716 ; первый полупериод
MOV R1, R2
M1: NOP
MOV #0, @#177716 ; второй полупериод
MOV R1, R2
M2: NOP
SOB R2, M2
SOB R0, M3
JMP-команду можно использовать для перехода на любой ад
рес программы. Поле адресации в коде команды задает не
адрес операнда, а адрес с которого будет продолжено выполне
ние программы после исполнения команды JMP. Поэтому в ко
манде JMP недопустимо использование прямого регистрового
способа адресации, так как передача управления на регистр
процессора не имеет смысла.
JSR-по команде адрес возврата запоминается в регистре ,
номер которого указывается в коде команды вместо буквы R
, а содержимое самого регистра процессора до этого запомин
ается в стеке. Если в коде команды указан номер регистра
R7 , то адрес возврата запоминается в стеке.
RTS-команда возвразает управление на адрес возврата , котор
ый по команде JSR был записан в регистр процессора. Номер
этого регистра должен быть указан в коде данной команды
вместо буквы "R".
Пример на языке ассемблера:
JSR PC , @#7500
. . . . .
MOV #14, R0
EMT 16 ; вывод на эран
RTS PC
ЦИФРОВЫЕ БАЗОВЫЕ МАТРИЧНЫЕ
кристалы типа К 1801 ВП1.
Повышение степени интеграции прежде всего связано с
применением метал-окисел-полупроводник транзисторов. Одним
из первых больших микросхем нп основе n-каналальных струк
тур был создан тип К 1801 ВП1, с проектными нормами длинны
канала 3 мкм. Его кристал, размером 4,2 * 4,2 мм условно
разделен на внутреннюю и переферийную части с 43 контакны
ми пролащадками.
Внутренняя часть большой интегральной микросхе
мы представляет собой матрицу 13*40* из 520 кристалов ти
па А. Эта матрица имеет дополнительно два ряда по 40 матри
чных базовых ячеек типа В для реализации усилительных функ
ций внутри матрицы. Наборы элементов , входящих в матричную
базовую ячейку типа А, и усилительных типа В.
Каджая матричная базовая ячейка содержат 10 тра
нзисторов и обеспечивают разветвление по выходу ячейки ,ра
вное 3. Усилительная матричная базовая ячейка содержит че
тыре транзистора , позволяющие расширить нагрузочную спосо
бность матричных базовых ячеек , и обспечивают кожфийиент
разветвления по выходу , равный 10. Периферийная часть
большой интегральной микросхемы представляет собой ячейку
, каждая из которых содержит 20 транзисторов , и котактную
площадку , что позволяет осуществить 40 входов-выходов .
Между контактными площадками питания и площадкой смещения
размещен генератор смещения подложки. Шина земли выведена
на контактную площадку . Библиотека фукциональных ячеек
содержит 69 вариантов матричных фукциональных ячеек и 11
вариантов площадок функциональных ячеек .
ЭЛЕКТРИЧЕСКИЕ ПАРАМЕТРЫ К 1801 ВП1.
Не более Не менее
Напряжение питания Ucc, B. 4, 75 5, 25
Выходное напряжение низкого
уровня Uol B, при Iol=4 ма. - 0,4
Выходное напряжение высокого
уровня Uoh, B, Ioh=1 ма. 2,7 -
Входное напряжение низкого
уровня Ull, B. - 0,6
Входное напряжение высокого
уровня Uih, B 2,4 -
Ток потребления Icc, ма. - 180
Ток утечки яо входу I, мкА. - 1
Среднее время задержки на
линейном элементе, нс, при
нагрузке на два входа U=5 B. - 5
Максимальная входная частота
fclc, Mгц. - 8
Емкость входа-выхода Si/o, пФ. - 15
Корпус микросхемы- поликристалический П
Шины питания и земли включены в переменные слои мета
лизации и подлежат разводке. Разводка линий связи на криста
ле двухслойная , причем слой поликремния изменяемый ,
алюминия -пременный. Межслойные соединения осуществляются
с помощью переменного слоя коньактов. Основным критерием
отимальности разводки линий связи можно считать их наимень
шую длину ипроведение их преимуществеено в слое алюминия.
Поликремневые слои в рабочей зоне для удобства развобки
линий связи через каждые две ячейки имеют разрыв. Если
необходимо провести более длинную поликрремневую линию
связи , то вместах разрыва ставят алюминиевые соединения.
Динамические параметры и ток потребления каж
дой конкретной большой интегральной схемы определяется в
процессе разработки . Время задержки основных функциональ-
ных ячеек без учета топологических связей (для собсвенной
емкости ) указано в таблице выше.
Для обспечения заданного быстродействия боль-
шой интегральной схемы реобходимо расчитать динамические
параметры основных цепей схемы с учетом реадьных физичес-
ких процессов в кристале и реальной трассировки . Оринте-
ровочно расчет проводится с учетом максимальных значений
RC-линий связи между логическими элементами. Сопротивление
и емкость линии связи расчитывают по формулам:
C=Cэ*(N+Csi+Sal)
R=сумма (Ro+Rт)
Csi-емкость поликремневой линии связи .
Cal-емкость алюминевой линии связи
Cэ-емкость затвора линейного элемента
Rт- 10 кОм -сопротивление ключевого транзистора
Ro-50 кОм сопротивление нагрузки транзистора.
При расчете необходимо учитывать топологические
обсбенности компоновки , так как задержка , вносимая поли
кркмнеевым слоем , млжет быть сравнима с задержкой линейно
го злемента.
В зависимости от вида апаратуры и ее конкретно
го примения на основе большой интегральной микросхемы ти
па К 1801 ВП1 позволяет заменить до 60 микросхем малой и
средней степени интеграции. . Это обеспечивает уменьшение
линейных размеров апаратуры в 4-16 раз.