Table of Contents
6. Описание процессора-эмулятора на микроуровне
6.1. Блок микропрограммного управления
Центральный процессор представляет из себя устройство с микропрограммным управлением. В ЭВМ с микропрограммным принципом управления можно различить два уровня: уровень микромашины (регистры, память, арифметико-логическое устройство АЛУ или микропроцессор), доступный только из микропрограммы, и уровень пользователя.
Уровень пользователя определяется уровнем микромашины, в частности, содержимым памяти микрокоманд, что в некотором смысле может быть произвольным.
В состав устройства микропрограммного управления входят табличная память преобразователя начального адреса ПНА, память микрокоманд, схема управления адресом микропрограммы (СУАМ) и конвейерный регистр. Память микрокоманд предназначена для хранения микропрограмм, реализующих набор машинных команд уровня пользователя. Начальный адрес микропрограммы, соответствующей какой-либо команде уровня пользователя, находится в ПНА по адресу, определяемому кодом этой команды. Исключение составляет микропрограмма входа в обработку прерываний, адрес которой фиксирован.
Память микропрограмм обеспечивает организацию последовательности микрокоманд в микропрограмме и управляет соответствующим устройством, устанавливая нужные для этого аппаратные сигналы. Например, они определяют, какая информация должна быть подана на входы АЛУ, куда должна подаваться информация с его выходов и т.д.
БИС управления последовательностью выполнения микрокоманд (К1804ВУ4)
БИС К1804ВУ4 (СУАМ) - устройство управления последовательностью микрокоманд, позволяющее адресовать микропрограмму размером до 4к слов. Устройство управления имеет мультиплексор с четырьмя входами, используемый для выбора в качестве источника адреса следующей микрокоманды регистр/счетчик RC, вход прямого адреса D, счетчик микрокоманд РС или стек.
Структурная схема устройства:
| d | /rld ---->
--------| | | full
| v v |
| ------------- -------------------
| | регистр/ | | указатель стека |
---|-->| счетчик | -------------------
| | ------------- |
| | | -----------------
| | | ---------------| с т е к |
| | | | -----------------
| ---- | | -------------------|
| | | | | -----------------
| | | | | | счетчик |
| v v v v | микрокоманд |
| ------------------- -----------------
| | d r f рс | |
| | | ----------------
| | мультиплексор | | устройство |<--
| | следующего | | приращения | c|
| | адреса | ----------------
| ------------------- |
| | | |
| -------------- -------------------
-->| | |
/сс-->| управление | v у0-у11
ccen->| |<------
т-->|------------| i0-i3
| | |
| | |
v v v
/ре /ме /vе
СЧЕТЧИК МИКРОКОМАНД (РС) используется одним из двух способов. Когда сигнал CI имеет высокий уровень, в РС во время следующего такта загружается передаваемый на выход У адрес, увеличенный на 1 (У+1 ⇒ РС). Таким образом обеспечивается последовательное выполнение команд. Если CI имеет низкий уровень, то РС перезагружается тем же самым адресом (У ⇒ РС). Следовательно, одна и та же команда может выполняться любое количесво раз.
Запись в РЕГИСТР/СЧЕТЧИК RС осуществляется при выдаче сигнала разрешения загрузки (/RLD), а также при выполнении некоторых команд. Вход прямого адреса d является источником данных, загружаемых в регистр/счетчик, а выход регистра подключен к мультиплексору и может быть использован в качестве источника адреса следующей микрокоманды. Регистр/счетчик при выполнении некоторых операций работает как счетчик, выполняющий отрицательное приращение, причем полученное в результате такого приращения значение 0 используется как признак перехода.
ИСТОЧНИК ПРЯМОГО АДРЕА D используется для выполнения переходов в микропрограмме по адресу, выбираемому из внешнего источника.
СТЕК обьемом 5 слов предназначен для хранения адреса возврата при выполнении в микропрограмме подпрограмм и циклов. При выполнении одних операций происходит загрузка информации в стек с увеличением на 1 указаталя стека (push), при выполнении других - извлечение (рор) с уменьшением на 1 указателя стека. При выполнении операции начальной установки глубина стека (указатель) становится равной нулю.
Использование сигналов:
БИС СУАМ вырабатывает сигналы /VЕ, /МЕ, /РЕ, которые используются для выборки внешних источников, подключенных к шине D:
- преобразователь начального адреса команд RMOD,WMOD и обращений ПП (при наличии признака MOD, сигнал /МЕ);
- дополнительный преобразователь адреса, задающий адреса векторов прерывания. А также знаков сомножителей для коррекции поизведения (VE). (сигнал /РЕ не используется).
Каждой микрокомандой вырабатывается только один сигнал разрешения для внешнего источника.
Сигналы I0-I3 поступают из микропрограммы; /RLD - с дешифратора триггеров признаков; /СС - с мультиплексора условий; выходы У0-У11 передают полученный адрес микрокоманды; на вход CI в зависимости от 36 разряда МП подается либо “1”, либо прямой или инверсный выход с мультиплексора условий, либо “0” в момент входа в микропрограмму обработки прерываний; сигнал /CCEN всегда равен “0”.
Коды операций СУАМ
- 0 - переход по нулевому адресу или начальная установка (JZ).
У0-У11 и указатель стека устанавливаются в 0.
- 1 - условный переход к подпрограмме по адресу, выбираемому из конвейерного регистра (CJS).
Если условие выполняется, адрес возврата (РС+1) загружается в стек и происходит переход к подпрограмме по адресу, выбираемому из конвейерного регистра (адрес перехода в микрокоманде). Иначе выполняется следующая микрокоманда.
- 2 - переход по адресу, выбираемому из дешифрирующего ПЗУ (JMAP).
Производится выдача сигнала разрешения выборки /МЕ, и адрес следующей микрокоманды выбирается из дешифрирующего ПЗУ.
- 3 - условный переход по адресу, выбираемому из конвейерного регистра (CJP).
При выполнении условия производится передача управления по адресу, содержащемуся в конвейерном регистре. Иначе выполняется следующая микрокоманда.
- 4 - загрузка стека и условная загрузка счетчика (PUSH).
Производится загрузка в стек адреса следующей микрокоманды (РС+1), при выполнении условия - в регистр/счетчик загружается величина, находящаяся в поле адреса перехода конвейерного регистра. Если условие не выполнено, загрузка счетчика не производится. Затем выполняется следующая микрокоманда.
- 5 - условный переход к подпрограмме по адресу, выбираемому из регистра/счетчика или из конвейерного регистра (JSRP).
Производится загрузка стека величиной РС+1 и инициируется одна из двух подпрограмм: если условие выполняется, адрес следующей микрокоманды определяется содержимым конвейерного регистра, иначе - содержимым регистра/счетчика.
- 6 - условный переход по векторному адресу (CJV).
Если условие выполняется, производится выдача сигнала разрешения выборки /VE и производится переход по векторному адресу. Иначе выполняется следующая микрокоманда.
- 7 - условный переход по адресу, выбираемому из регистра/счетчика или конвейерного регистра (JRP).
Если условие выполняется, адрес следующей микрокоманды определяется содержимым конвейерного регистра, иначе - содержимым регистра/счетчика.
- 8 - повторение цикла, если счетчик не равен 0 (RFCT).
Если содержимое регистра/счетчика отлично от 0, его значение уменьшается на 1, и адрес следующей микрокоманды извлекается из стека. Если счетчик равен 0, выполняется следующая микрокоманда, а указатель стека уменьшается на 1. Перед выполнением этой микрокоманды в регистр/счетчик должно быть занесено число повторений микрокоманд в цикле, а в стек - адрес начала цикла.
- 9 - повторение по адресу, выбираемому из конвейерного регистра, если счетчик не равен 0 (RPCT).
Если содержимое регистра/счетчика не равно 0, его значение уменьшается на 1, и производится передача управления по адресу, содержащемуся в конвейерном регистре. Иначе выполняется следующая микрокоманда. Перед выполнением этой микрокоманды (RPCT) в регистр/счетчик должно быть занесено число повторений цикла.
- 10 - условный возврат из подпрограммы (CRTN).
Если условие выполняется, производится возврат из подпрограммы по адресу,выбираемому из стека. Иначе выполняется следующая микрокоманда.
- 11 - условный переход по адресу, выбираемому из конвейерного регистра, и извлечение из стека (CJPP).
Если условие выполняется, то производится переход по адресу микрокоманды и операция извлечения из стека. Иначе выполняется следующая микрокоманда.
- 12 - загрузка счетчика и последовательна выборка (LDCT).
Производится загрузка регистра/счетчика содержимым поля адреса микрокоманды и выполняется следующая микрокоманда.
- 13 - проверка условия окончания цикла (LOOP).
Если условие не выполнено, производится переход по находящемуся в стеке адресу, иначе выполняется следующая по порядку микрокоманда и производится операция извлечения из стека.
- 14 - последовательная выборка (CONT).
Выполняется следующая по порядку микрокоманда.
- 15 - переход по одному из трех адресов (TWB).
Если условие не задано, производится отрицательное приращение счетчика и переход по адресу стека, пока счетчик не равен 0, затем адрес следующей микрокоманды выбирается из конвейерного регистра. Если условие задано, выполняется следующая по порядку микрокоманда. При выходе из цикла в обоих случаях указатель стека уменьшается на 1. Перед выполнением микрокоманды TWB в регистр/счетчик должно быть занесено число повторений цикла, а в стек - адрес начала цикла.
- Условие НЕ задано:
сч. НЕ РАВЕН 0: сч.= сч.- 1, переход по адресу стека; сч. РАВЕН 0: переход по адресу из КР.
- Условие задано:
выполняется следующия команда.
6.2. Формат микрокоманды
--------------------------------------------------------------
поле | коп |адрес: след. |выбор|вых|функ-|32/| адрес
микро- | суам |микрокоманды | пна | у | ция |64р| рзу мпс
команды |-------| ----------|-----|мпс| мпс |мпс| в | а
|i3 - i0| |пзу конст|в а| |i8-i0| | |
--------|-------|---|---------|-----|---|-----|---|-----|-----
разряд |112 109|108|107 97|96 95| 94|93 85| 84|83 80|79 76
--------|-------|-------------|-----|---|-----|---|-----|-----
n табл.| 1 | | 2 | |3,4,5| | 6 | 6
--------|-------|-------------|-----|---|-----|---|-----|-----
мнемокод| sqi | а | мар |alu| func| н | rв | rа
--------------------------------------------------------------
--------------------------------------------------------------
функ- |пр.|ист.N | номер |источ-|прием-| коп | коп |зап| про-
ция |r/w|модиф.|модифик| ник | ник |сдви-|арбит| в |пуск
сусс |i/о|или пар.сдвига|шины d|шины у| га | ра |рег| пиа
-------|---|--------------|------|------|-----|-----|---|-----
i12-i10| |в а|d а|d а|d а|i1 i0|d а| |
-------|---|------|-------|------|------|-----|-----|---|-----
75 64| 63|62 61|60 56|55 52|51 48|47 46|45 42| 41| 40
-------|---|------|-------|------|------|-----|-----|---|-----
7 | | 8,9/10 | 11 | 12 | 13 | 14 | |
-------|---|-----pshf-----|------|------|-----|-----|---|-----
stf |mod| mnsa | modnm | dsrc | ydst | shf | arbi|rld|lетс
--------------------------------------------------------------
--------------------------------------------------------------
упр.|упр|инв|инв| | запись в|упр. Озу|кан|зап|адрес|кан|зап
длит.| ci| ci|усл|пми| рг.сусс:|модифик:| в | по|кан.В| а | по
такта| sq| sq| | | м | n | cs| wr |бои| в | бои |бои| а
-----|---|---|---|---|----|----|---|----|---|---|-----|---|---
с а| | | | | | | | | | |в а| |
-----|---|---|---|---|----|----|---|----|---|---|-----|---|---
39 37| 36| 35| 34| 33| 32 | 31 | 30| 29 | 28| 27|26 25| 24| 23
-----|---|---|---|---|----|----|---|----|---|---|-----|---|---
15 | | | | | | | | | | | 16 | |
-----|---|---|---|---|----|----|---|----|---|---|-----|---|---
cystr|sci|ici|iсс|ise| сем| cen|csm| wем|есв|wrb| bra |еса|wra
--------------------------------------------------------------
--------------------------------------------------------------
адрес|источн|зап. В|источн|зап. В|озу пп|устан/сброс |усло|мод
кан.А|приемн|ист/пр|приемн|ист/пр| или |тг.призн.или| вие|или
бои |шины у|шины у|шины d|шины d|призн.|адрес озу пп| |сдв
-----|------|------|------|------|------|------------|----|---
в а|с а| |с а| | |е а|е а|
-----|------|------|------|------|------|------------|----|---
22 21|20 18| 17 |16 14| 13 | 12 |11 7|6 2| 1
-----|------|------|------|------|------|------------|----|---
17 | 18 | | 19 | | | 20/21 | 22 |
-----|------|------|------|------|------|------------|----|---
ara | ydev | wry | ddev | wrd | iомр |ffcnt/mpadr |cond|mps
--------------------------------------------------------------
6.3. Таблицы полей микропрограммного слова и их назначения
Таблица 1
К О П СУАМ
SEQUENCER INSTRUCTION (SQI)
i3 i2 i1 i0
0 0 0 0 - 0 - переход по 0-ому адресу (JZ).
0 0 0 1 - 1 - условный переход к подпрограмме по
адресу, выбираемому из конвейерного
регистра (CJS) *).
0 0 1 0 - 2 - переход по адресу, выбираемому из
дешифрирующего ППЗУ (JMAP).
0 0 1 1 - 3 - условный переход по адресу, выбираемому
из конвейерного регистра (CJP).
0 1 0 0 - 4 - загрузка стека и условная загрузка
счетчика (PUSH).
0 1 0 1 - 5 - условный переход к подпрограмме по
адресу, выбираемому из регистра/счетчика
или из конвейерного регистра (JSRP).
0 1 1 0 - 6 - условный переход по векторному
адресу (CJV).
0 1 1 1 - 7 - условный переход по адресу,
выбираемому из регистра/счетчика или из
конвейерного регистра (JRP).
1 0 0 0 - 8 - повторение цикла, если счетчик
не равен 0 (RFCT).
1 0 0 1 - 9 - повторение по адресу, выбираемому
из конвейерного регистра, если счетчик
не равен 0 (RPCT).
1 0 1 0 - 10 - условный возврат из подпрограммы (CRTN).
1 0 1 1 - 11 - условный переход по адресу, выбираемому
из конвейерного регистра, и извлечение
из стека (CJPP).
1 1 0 0 - 12 - загрузка счетчика и последовательная
выборка (LDCT).
1 1 0 1 - 13 - проверка условия окончания цикла (LOOP).
1 1 1 0 - 14 - последовательная выборка (CONT).
1 1 1 1 - 15 - переход по одному из трех адресов (TWB).
*). Вместо конвейерного регистра может использоваться другой источник адреса на вход D СУАМ (см. Табл.2).
Таблица 2
ВЫБОР ИСТОЧНИКА АДРЕСА НА ВХОД D С У А М
(МАР)
В а
0 0 - конвейерный регистр (сигнал РЕ)
0 1 - ПНА КОП основного или дополнительного формата
в зависимости от КОП основного формата (3f)
1 0 - ПНА групп из РР, "след0", "след1"
1 1 - не используется
/МЕ СУАМ - ПНА чтения/записи регистров и памяти по обращению ПП и командами RMOD, WMOD.
/VЕ СУАМ - ПНА прерываний.
d00 - начальный адрес ПНА чт/зп регистров и памяти
е00 - начальный адрес ПНА групп
f00 - начальный адрес ПНА прерываний
ТАБЛИЦА 3
ПРИЕМНИКИ РЕЗУЛЬТАТА А Л У М П С
ALU DESTINATION (ALUD)
i8 i7 i6 сдвиг загрузка сдвиг загрузка у
0 0 0 - 0 - - - f -> q f
0 0 1 - 1 - - - - f
0 1 0 - 2 - f -> в - - а
0 1 1 - 3 - f -> в - - f
1 0 0 - 4 вправо f/2 -> в вправо q/2 -> q f
1 0 1 - 5 - " - f/2 -> в - - f
1 1 0 - 6 влево 2f -> в влево 2q -> q f
1 1 1 - 7 - " - 2f -> в - - f
ТАБЛИЦА 4
КОДЫ ОПЕРАЦИЙ А Л У М П С
FUNCTION (FUNC)
I5 I4 I3 Операции
0 0 0 - 0 R + S + С0
0 0 1 - 1 S - R - 1 + С0
0 1 0 - 2 R - S - 1 + С0
0 1 1 - 3 R .or. S
1 0 0 - 4 R .and. S
1 0 1 - 5 (.nоt. R) .and. S
1 1 0 - 6 R .eor. S
1 1 1 - 7 .nоt. (R .eor. S)
ТАБЛИЦА 5
ИСТОЧНИКИ ОПЕРАНДОВ А Л У М П С
ALU SOURCE (ALUS)
i2 i1 i0 R S
0 0 0 - 0 а q
0 0 1 - 1 а в
0 1 0 - 2 0 q
0 1 1 - 3 0 в
1 0 0 - 4 0 а
1 0 1 - 5 d а
1 1 0 - 6 d q
1 1 1 - 7 d 0
ТАБЛИЦА 6
АДРЕСА РЕГИСТРОВ КАНАЛОВ А И В МПС
RА И RВ
d с в а
х х х х - номер регистра МПС, используемого
в микропрограмме
ТАБЛИЦА 7
КОДЫ ОПЕРАЦИЙ СУСС
STATUS FUNCTION (STF)
операции с битами регистра состояния N (/CEN=0)
i5 i4 i3 i2 i1 i0
0 0 1 0 0 0 0->nz уст. В "0" признака z
0 0 1 0 0 1 1->nz уст. В "1" признака z
0 0 1 0 1 0 0->nс уст. В "0" признака с
0 0 1 0 1 1 1->nс уст. В "1" признака с
0 0 1 1 0 0 0->nn уст. В "0" признака n
0 0 1 1 0 1 1->nn уст. В "1" признака n
0 0 1 1 1 0 0->nv уст. В "0" признака ovr
0 0 1 1 1 1 1->nv уст. В "1" признака ovr
операции со словами регистра состояния N (/CEN=0)
i5 i4 i3 i2 i1 i0
0 0 0 0 0 0 м->n запись содержимого рг. М в рг. N
0 0 0 0 0 1 1->n уст. В "1" всех разрядов рг. N
0 0 0 0 1 0 м<->n регистровый обмен
0 0 0 0 1 1 0->n уст. В "0" всех разрядов рг. N
операции загрузки регистра состояния N (/CEN=0)
i5 i4 i3 i2 i1 i0
0 0 0 1 1 0 iz->nz загрузка с запоминанием
0 0 0 1 1 1 iс->nс признака переполнения
in->nn
iv.or.nv->nv
0 1 1 0 0 х iz->nz загрузка с инверсией
1 0 1 0 0 х /iс->nс признака переноса
1 1 1 0 0 х in->nn
iv->nv
0 0 0 1 0 х iz->nz загрузка непосредственно
0 1 0 х х х iс->nс со входов признаков
0 1 1 0 1 х in->nn состояния
0 1 1 1 х х iv->nv
1 0 0 х х х
1 0 1 0 1 х
1 0 1 1 х х
1 1 0 х х х
1 1 1 0 1 х
1 1 1 1 х х
регистровые операции рг. М
/сем = /ez = /ес = /en = /ev = 0
i5 i4 i3 i2 i1 i0
0 0 0 0 0 0 у->м запись с шины у в рг. М
0 0 0 0 0 1 1->м уст. В "1" всех разрядов рг. М
0 0 0 0 1 0 n<->м регистровый обмен
0 0 0 0 1 1 0->м уст. В "0" всех разрядов рг. М
0 0 0 1 0 1 /м->м инвертирование содержимого рг. М
0 0 0 1 0 0 iz->mz используется при организации
mv->мс сдвигов с использованием
in->mn признака переполнения,
мс->mv а не переноса
0 0 1 0 0 х iz->mz загрузка
0 1 1 0 0 х /iс->мс с инверсией
1 0 1 0 0 х in->mn признака переноса
1 1 1 0 0 х iv->mv
0 0 0 1 1 х iz->mz загрузка непосредственно
0 0 1 0 1 х iс->мс со входов признаков
0 0 1 1 х х in->mn состояния
0 1 0 х х х iv->mv
0 1 1 0 1 х
0 1 1 1 х х
1 0 0 х х х
1 0 1 0 1 х
1 0 1 1 х х
1 1 0 х х х
1 1 1 0 1 х
1 1 1 1 х х
управление выводом информации через шину У
/оеу i5 i4 у
1 х х z состояние высокого сопротивления
0 0 х n->у при "0" на входах I5-I0 шина У всегда
является входной, независимо от /ОЕУ
0 1 0 м->у
0 1 1 i->у
управление выходом кода СТ (/ОЕСТ=0)
i3 i1 i5=i4=0 i5=0,i4=1 i5=1,i4=0 i5=i4=1
i2 i0
0 0 0 0 (nn.eor.nv).or.nz (mn.eor.mv).or.mz
(nn.eor.nv).or.nz (in.eor.iv).or.iz
0 0 0 1 /(nn.eor.nv).and./nz /(mn.eor.mv).and./mz
/(nn.eor.nv).and./nz /(in.eor.iv).and./iz
0 0 1 0 nn.eor.nv nn.eor.nv mn.eor.mv in.eor.iv
0 0 1 1 /(nn.eor.nv) /(nn.eor.nv) /(mn.eor.mv) /(in.eor.iv)
0 1 0 0 nz nz mz iz
0 1 0 1 /nz /nz /mz /iz
0 1 1 0 nv nv mv iv
0 1 1 1 /nv /nv /mv /iv
1 0 0 0 nс.or.nz nс.or.nz мс.or.mz /iс.or.iz
1 0 0 1 /nс.and./nz /nс.and./nz /мс.and./mz iс.and./iz
1 0 1 0 nс nс мс iс
1 0 1 1 /nс /nс /мс /iс
1 1 0 0 /nс.or.nz /nс.or.nz /мс.or.mz /iс.or.iz
1 1 0 1 nс.and./nz nс.and./nz мс.and./mz iс.and./iz
1 1 1 0 in.eor.mn nn mn in
1 1 1 1 /(in.eor.mn) /nn /mn /in
проверка отношения чисел А и В
после выполнения операции (А-В)
числа без знака
отношение I3-I0 I3-I0
состояние СТ=1 СТ=0
а.eq.b z=1 0 1 0 0 0 1 0 1
а.nе.b z=0 0 1 0 1 0 1 0 0
а.gе.b с=1 1 0 1 0 1 0 1 1
а.lт.b с=0 1 0 1 1 1 0 1 0
а.gт.b с.and./z=1 1 1 0 1 1 1 0 0
а.lе.b /с.or.z=1 1 1 0 0 1 1 0 1
числа в дополнительном коде
отношение I3-I0 I3-I0
состояние СТ=1 СТ=0
а.eq.b z=1 0 1 0 0 0 1 0 1
а.nе.b z=0 0 1 0 1 0 1 0 0
а.gе.b /(n.eor.v)=1 0 0 1 1 0 0 1 0
а.lт.b n.eor.v=1 0 0 1 0 0 0 1 1
а.gт.b /(n.eor.v).and./z=1 0 0 0 1 0 0 0 0
а.lе.b (n.eor.v).or.z=1 0 0 0 0 0 0 0 1
управление формированием сигнала входного переноса
i12 i11 i5 i3 i2 i1 С0
0 0 х х х х 0
0 1 х х х х 1
1 0 х х х х сх
1 1 0 0 х х nс
1 1 0 х 1 х nс
1 1 0 х х 1 nс
1 1 0 1 0 0 /nс
1 1 1 0 х х мс
1 1 1 х 1 х мс
1 1 1 х х 1 мс
1 1 1 1 0 0 /мс
вс7
управление сдвигами (/SЕ=0)
i10 i9 i8 i7 i6 тип сдвига pf0 pf3 pq0 pq3 мс
"0" "0"
0 0 0 0 0 -->рон--> -->рг.Q--> z 0 z 0 -
"1" "1"
0 0 0 0 1 -->рон--> -->рг.Q--> z 1 z 1 -
мс<-------| mn
0 0 0 1 0 "0"->рон-| -->рг.Q--> z 0 z mn pf0
"1"
0 0 0 1 1 -->рон-------->рг.Q--> z 1 z pf0 -
0 0 1 0 0 мс-->рон------>рг.Q--> z мс z pf0 -
0 0 1 0 1 mn-->рон------>рг.Q--> z mn z pf0 -
"0"
0 0 1 1 0 -->рон-------->рг.Q--> z 0 z pf0 -
мс<-----------------|
0 0 1 1 1 "0"-->рон----->рг.Q--| z 0 z pf0 pq0
|-------| |--------|
0 1 0 0 0 мс<-|->рон--| |->рг.Q--| z pf0 z pq0 pf0
v---------| |--------|
0 1 0 0 1 мс-->рон--| |->рг.Q--| z мс z pq0 pf0
|--------| |--------|
0 1 0 1 0 |-->рон--| |->рг.Q--| z pf0 z pq0 -
0 1 0 1 1 |с-->рон------>рг.Q--> z iс z pf0 -
v--------------------|
0 1 1 0 0 мс->рон------>рг.Q---| z мс z pf0 pq0
|----------------|
0 1 1 0 1 мс<--|-->рон--->рг.Q--| z pq0 z pf0 pq0
|n.eor.iv
0 1 1 1 0 ------->рон---->рг.Q--> z in.eor.iv z pf0 -
|---------------------|
0 1 1 1 1 |--->рон------>рг.Q---| z pq0 z pf0 -
"0" "0"
1 0 0 0 0 мс<--рон<-- <--рг.Q<-- 0 z 0 z pf3
"1" "1"
1 0 0 0 1 мс<--рон<-- <--рг.Q<-- 1 z 1 z pf3
"0" "0"
1 0 0 1 0 <--рон<-- <--рг.Q<-- 0 z 0 z -
"1" "1"
1 0 0 1 1 <--рон<-- <--рг.Q<-- 1 z 1 z -
"0"
1 0 1 0 0 мс<--рон<-------рг.Q<--- pq3 z 0 z pf3
"1"
1 0 1 0 1 мс<--рон<-------рг.Q<--- pq3 z 1 z pf3
"0"
1 0 1 1 0 <---рон<-------рг.Q<--- pq3 z 0 z -
"1"
1 0 1 1 1 <---рон<-------рг.Q<--- pq3 z 1 z -
|-------| |--------|
1 1 0 0 0 мс<-|-рон<--| |--рг.Q<-| pf3 z pq3 z pf3
|---------| |--------|
1 1 0 0 1 мс<--рон<-| |--рг.Q<-| мс z pq3 z pf3
|-------| |--------|
1 1 0 1 0 |--рон<-| |--рг.Q<-| pf3 z pq3 z -
мс----| "0"
1 1 0 1 1 <--рон<-| <--рг.Q<--- мс z 0 z -
|--------------------|
1 1 1 0 0 мс<--рон<-----рг.Q<--| pq3 z мс z pf3
|----------------|
1 1 1 0 1 мс<--|--рон<----рг.Q<-| pq3 z pf3 z pf3
мс----------------|
1 1 1 1 0 <--рон<------рг.Q<--| pq3 z мс z -
|-------------------|
1 1 1 1 1 |---рон<-----рг.Q<--| pq3 z pf3 z -
ТАБЛИЦА 8
ИСТОЧНИК НОМЕРА МОДИФИКАТОРА
MODIFICATOR NUMBER SOURCE ADRESS (MNSA)
в а
0 0 - исполнительный адрес
0 1 - поле модификатора команды
1 0 -
1 1 - микропрограмма
ТАБЛИЦА 9
НОМЕР МОДИФИКАТОРА В ГРУППЕ
MODIFICATOR NUMBER (MODNM)
е d с в а
х х х х х - номер модификатора, используемого
в микропрограмме (в обратном коде)
ТАБЛИЦА 10
ПАРАМЕТР СДВИГА
(PSHF)
j f е d с в а параметр сдвига сдвигателя
0 х х х х х х - сдвиг влево, количество сдвигов
задается в дополнительном коде;
1 х х х х х х - сдвиг вправо, количество сдвигов
задается в прямом коде.
ТАБЛИЦА 11
ИСТОЧНИКИ ИНФОРМАЦИИ НА ШИНУ D ЦП
D - SOURCE (DSRC)
d с в а
0 0 0 0 - не используется
0 0 0 1 - регистр номера группы ОЗУ модификаторов
0 0 1 0 - регистр номера процесса
0 0 1 1 - триггеры признаков
0 1 0 0 - регистр физической страницы
0 1 0 1 - регистр КОП арбитра
0 1 1 0 - произведение (младшие разряды)
0 1 1 1 - произведение (старшие разряды)
1 0 0 0 - адрес команды
1 0 0 1 - результат сдвига
1 0 1 0 - КОП команды
1 0 1 1 - результат поиска левой единицы
1 1 0 0 - ПЗУ констант
1 1 0 1 -
1 1 1 0 - чтение часов и таймера СВ (нет dsrc15 и wrd)
1 1 1 1 - переключение направления ШФ от шины У ЦП
к часам и таймеру СВ (запись: dsrc15 + wrd)
ТАБЛИЦА 12
ПРИЕМНИКИ ИНФОРМАЦИИ С ШИНЫ У ЦП; СТРОБ Т1
У - DESTINATION (YDST)
С в а
0 0 0 0 - не используется
0 0 0 1 - регистр номера группы ОЗУ модификоторов
0 0 1 0 - регистр номера процесса
0 0 1 1 - регистр режимов и триггеры признаков (кроме ткк)
0 1 0 0 - регистр физической страницы
0 1 0 1 - регистр КОП арбитра
(для пультового останова)
0 1 1 0 - множимое
0 1 1 1 - множитель, одновременно - запуск умножителя
1 0 0 0 - регистр исполнительного адреса
1 0 0 1 - регистр параметра сдвига
1 0 1 0 - запуск сброса кэша.
на время сброса кэша обращение к нему блокируется,
чтение происходит только из памяти.
1 0 1 1 - установка арбитра в начальное состояние или
сброс BTR (одновременно с НОП арбитра).
если КОП арбитра не 0, происходит запуск арбитра!
1 1 0 0 -
1 1 0 1 -
1 1 1 0 -
1 1 1 1 -
ТАБЛИЦА 13
КОД ОПЕРАЦИИ СДВИГАТЕЛЯ
SHIFT FUNCTION (SHF)
В а
0 0 - циклический сдвиг вправо
0 1 - логический сдвиг
1 0 - арифметический сдвиг
1 1 - "расхлопывание" (переход к формату БЭСМ-6)
ТАБЛИЦА 14
К О П АРБИТРА
ARBITER INSTRUCTION (ARBI)
d с в а
0 0 0 0 - НОП
0 0 0 1 - чтение кэш команд
0 0 1 0 - запись в кэш команд
0 0 1 1 - чтение кэш операндов
0 1 0 0 - запись в кэш операндов
0 1 0 1 -
0 1 1 0 -
0 1 1 1 -
1 0 0 0 - чтение команды
1 0 0 1 - чтение операнда
1 0 1 0 - запись результата
1 0 1 1 - чтение - модификация - запись
(семафорное чтение)
1 1 0 0 - запись в режиме блочной передачи (BTR)
1 1 0 1 - чтение в режиме блочной передачи (BTR)
1 1 1 0 - сброс прерываний на шине
1 1 1 1 - чтение прерываний с шины
ТАБЛИЦА 15
УПРАВЛЕНИЕ ДЛИТЕЛЬНОСТЬЮ ТАКТОВОГО ИМПУЛЬСА
CYCLE STRATCH (CYSTR)
с в а
0 0 1 - 3 нанотакта
(минимальная длительность тактового импульса)
0 0 0 - 4
1 0 0 - 5
1 1 0 - 6
0 1 0 - 7
0 1 1 - 8
1 1 1 - 9
1 0 1 - 10 нанотактов (максимальная)
000 001
-------- 1 ---- --------- 1 ----
т1 ---| 2 |---| ---| 3 |---|
----- 2 ---- ------- 2 ----
т2 ---| 1 |------| ---| 2 |-----|
----- 2 ---- ------- 2 ----
т3 ---| 1 |------| ---| 2 |-----|
---- 1 -------- ---- 1 ---------
т4 |---| 2 |--- |---| 3 |---
101 111
---------- 1 ---- ----------- 1 ----
т1 ---| 4 |---| ---| 5 |---|
-------- 2 ---- --------- 2 ----
т2 ---| 3 |-----| ---| 4 |-----|
------- 3 ---- -------- 3 ----
т3 ---| 2 |------| ---| 3 |------|
---- 1 ---------- ---- 1 -----------
т4 |---| 4 |--- |---| 5 |---
011 010
------------ 1 ---- ------------- 1 ----
т1 ---| 6 |---| ---| 7 |---|
---------- 2 ---- ----------- 2 ----
т2 ---| 5 |-----| ---| 5 |-----|
------- 4 ---- --------- 4 ----
т3 ---| 3 |--------| ---| 4 |-------|
---- 1 ------------ ---- 1 -------------
т4 |---| 6 |--- |---| 7 |---
110 100
-------------- 1 ---- --------------- 1 ----
т1 ---| 8 |---| ---| 9 |---|
------------ 2 ---- ------------- 2 ----
т2 ---| 6 |-----| ---| 8 |-----|
--------- 5 ---- ---------- 5 ----
т3 ---| 4 |--------| ---| 5 |--------|
---- 1 -------------- ---- 1 ---------------
т4 |---| 8 |--- |---| 9 |---
ТАБЛИЦА 16
АДРЕСА РЕГИСТРОВ КАНАЛА В Б О И ДАННЫХ И ТЕГА
В - REGISTER ADRESS (BRA)
В а
0 0 - rg0 - физический адрес;
в бои тега: не используется.
0 1 - rg1 - регистр левой, правой команды;
в бои тега: тег команды.
1 0 - rg2 - регистр операнда;
в бои тега: тег операнда.
1 1 - rg3 - регистр результата;
в бои тега: тег результата (сумматора)
ТАБЛИЦА 17
АДРЕСА РЕГИСТРОВ КАНАЛА А БОИ ДАННЫХ
А - REGISTER ADRESS (ARA)
В а
0 0 - rg0 - физический адрес;
0 1 - rg1 - регистр левой, правой команды;
1 0 - rg2 - регистр операнда;
1 1 - rg3 - регистр результата.
ТАБЛИЦА 18
ИСТОЧНИКИ/ПРИЕМНИКИ ИНФОРМАЦИИ С ШИНЫ У
У - DEVICE (YDEV)
С в а
0 0 0 - не используется
0 0 1 - канал В БОИ тега (ЕСВ)
0 1 0 - физический адрес (только на чтение)
одновременно - сигнал записи в РФС и
изменение признаков БОБР,БИЗМ,БМСП и запуск арбитра
0 1 1 - регистр исполнительного адреса (только на чтение)
(запись - см. Таблицу 12)
1 0 0 - ОЗУ приписок (CS)
1 0 1 - ОЗУ обмена с ПП
1 1 0 - ОЗУ останова 0 (только на запись)
1 1 1 - ОЗУ останова 1 (только на запись)
ТАБЛИЦА 19
ИСТОЧНИКИ/ПРИЕМНИКИ ИНФОРМАЦИИ С ШИНЫ D
D - DEVICE (DDEV)
С в а
0 0 0 - не используется
0 0 1 - БОБР, БИЗМ
0 1 0 - БМСП
0 1 1 - сброс ПИА
1 0 0 - регистр и таймер счетного времени (сигнал CS) (*)
1 0 1 - СУСС (**)
1 1 0 - ОЗУ приоритетов страниц 0 (**)
1 1 1 - ОЗУ приоритетов страниц 1 (**)
блоки, помеченные (*): источники, приемники с шины У;
блоки, помеченные (**): источники - на шину D, приемники - с шины У;
непомеченные: источники, приемники с шины D.
ТАБЛИЦА 20
УСТАНОВКА/СБРОС ТРИГГЕРОВ ПРИЗНАКОВ
FLIP-FLOP CONTROL (FFCNT)
е d с в а
0 0 0 0 0 - не используется
0 0 0 0 1 - логическая группа
0 0 0 1 0 - группа умножения
0 0 0 1 1 - группа сложения
0 0 1 0 0 -
0 0 1 0 1 - установка ПИА
0 0 1 1 0 - сброс ППК
0 0 1 1 1 - установка - " -
0 1 0 0 0 - сброс ППУ
0 1 0 0 1 - установка - " -
0 1 0 1 0 - сброс маски прерываний
0 1 0 1 1 - установка - " -
0 1 1 0 0 - сброс МП признака "след 0"
0 1 1 0 1 - установка - " -
0 1 1 1 0 - сброс МП признака "след 1"
0 1 1 1 1 - установка - " -
1 0 0 0 0 - сброс прерывания от часов счетного времени
1 0 0 0 1 - сброс прерывания от таймера счетного времени
1 0 0 1 0 - сброс ТКК (ППК стандартизатора)
1 0 0 1 1 - установка - " -
1 0 1 0 0 - установка нового режима
1 0 1 0 1 - запуск загрузки ОЗУ БМСП единицами
1 0 1 1 0 - установка режима эмуляции
1 0 1 1 1 - переброс тг. ТКК
1 1 0 0 0 - установка тг. "останов" (HALT)
1 1 0 0 1 - сброс прерываний (кроме прерываний от таймеров)
1 1 0 1 0 - сброс тг. "ПУСК"
1 1 0 1 1 - установка признака "озу пп->цп" прочитано
1 1 1 0 0 - установка признака в "озу пп->цп" есть информация
1 1 1 0 1 - установка признака в "озу цп->пп" есть информация,
одновременно - установка тг., что "озу цп->пп занято" (условие 10111)
1 1 1 1 0 - установка программного прерывания (прерывание с номером 31,
проходящее при отсутствии БВП и стробируемое ПМИ)
1 1 1 1 1 - установка внешнего прерывания на магистраль по шине D0
(ЦП посылает прерывание, сам не прерываясь)
в а - сигналы а1,а0 при обращении к часам и таймерам (IОМР=1).
ТАБЛИЦА 21
АДРЕС ОЗУ ОБМЕНА С ПП
(MPADR)
d с в а
х х х х - адрес слова ОЗУ обмена
ТАБЛИЦА 22
АДРЕС ВЫБОРКИ УСЛОВИЯ
CONDITION (COND)
е d с в а
0 0 0 0 0 - "да"
0 0 0 0 1 - БНОР
0 0 0 1 0 - БОКР
0 0 0 1 1 - БПП
0 0 1 0 0 - ББЧ
0 0 1 0 1 - БППУ
0 0 1 1 0 - РД
0 0 1 1 1 - РЭ
0 1 0 0 0 - ППК
0 1 0 0 1 - ПИА
0 1 0 1 0 - 20-й разряд РР (РЭС)
0 1 0 1 1 - СТ СУСС
0 1 1 0 0 - след1
0 1 1 0 1 - ПОП
0 1 1 1 0 - ИР15
0 1 1 1 1 - ТКК
1 0 0 0 0 - "пуск"
1 0 0 0 1 - отсутствие готовности умножителя
1 0 0 1 0 - 5 разряд статусного регистра ЦП
1 0 0 1 1 - признак наличия прерываний
1 0 1 0 0 - ОЗУ БМСП единицами заполнено
1 0 1 0 1 - готовность арбитра
1 0 1 1 0 -
1 0 1 1 1 - ОЗУ обмена "цп->пп" прочитано ("1"); ffcnt29 устанавливает
его в "0"; ПП командой OUT 7F устанавливает в "1".
1 1 0 0 0 -
1 1 0 0 1 -
1 1 0 1 0 -
1 1 0 1 1 -
1 1 1 0 0 -
ЗНАЧЕНИЯ ОДНОБИТОВЫХ ПОЛЕЙ МИКРОИНСТРУКЦИИ
ALU - разрешение выхода У МПС (ОЕ МПС)
Н - в операции АЛУ участвуют 32 (0) или 64 (1) разряда МПС
MOD - режим команд RMOD, WMOD
RLD - загрузка в рг/сч СУАМ (сигнал RLD) и управление ШФ шин У ЦП и D СУАМ;
LETC - пропуск ПИА на вход ПНА КОП
SCI - условие, выбираемое полем COND, подается на вход CI СУАМ ("жду");
если SCI не задано, CI СУАМ равен 1.
ICI - инверсия условия, подаваемого на вход CI СУАМ.
ICC - инверсия условий, выбираемых полем COND
ISE - признак последней микроинструкции, разрешающий прохождение некоторых
прерываний и копирование ТКК в ППК (interrupt strobe enable)
СЕМ - разрешение записи в регистр М СУСС (/СЕМ)
CEN - разрешение записи в регистр N СУСС (/CEN)
CSM - обращение к ОЗУ модификаторов
WEM - запись в ОЗУ модификаторов (write enable modificator)
ЕСВ - выбор канала В БОИ данных
WRB - запись по каналу В в БОИ данных и БОИ тега
ЕСА - выбор канала А БОИ данных
WRA - запись по каналу А в БОИ данных
WRY - запись в источники/приемники шины У
WRD - запись в источники/приемники поля DDEV
IOMP - выбор ОЗУ обмена, сигналов А1А0 для таймеров или дешифратора триггеров признаков:
"1" - 7:10 разряды поля МП - адрес ОЗУ обмена;
"1" - 7:8 разряды - сигналы А1А0 часов и таймеров;
"0" - 7:11 - управление триггерами признаков.
MPS - задание параметра сдвига:
1 - из микропрограммы (56:62 разряды);
0 - в регистре параметра сдвига.
6.4. Некоторые БИС, входящие в состав ЦП, и их использование
6.4.1. Блок обмена информацией (БОИ)
Обмен информацией между центральными процессорами, ОЗУ и внешними устройствами осуществляется 16 4-разрядными БИС типа К1802ВВ1, используемыми для чтения, записи команд и данных, и схемой из 2 аналогичных БИС для чтения, записи тега.
Структурная схема бои
^ ^
| |
4 v A 4 v X
----------------------------- <--- а0-а1
| | <--- ес
| rg0, rg1, rg2, rg3 | <--- r
| | <--- w
-----------------------------
4 ^ B 4 ^ C
| |
v v
БОИ содержит 4 регистра: RG0,RG1,RG2,RG3. Ввод и вывод данных в регистры производится по 4-м каналам: А,В,С,Х. Канал Х может использоваться для выдачи информации на длинные линии связи; он подключен к общей шине данных.
Разрешением обмена информацией с каналами управляют сигналы /ЕСА, /ЕСВ, /ЕСС, /ЕСХ (Enable Channel) (здесь и далее символ “/” означает инвертированный сигнал). При “0” на этих входах разрешен обмен информацией выбранного регистра с соответствующим каналом. Выборка регистра осуществляется подачей 2-разрядного двоичного кода на адресные входы АА0-АА1, АВ0-АВ1, АС0-АС1, АХ0-АХ1.
Сигналы /RА, /RВ, /RС, /RХ (Read) разрешают считывание выбранных регистров по каналам А,В,С,Х. Сигналы /WА, /WВ, /WС, /WХ (Write) - разрешают запись, причем запись в RG0 производится “фронтом”, а в остальные регистры - “потенциалом”.
Использование регистров:
- RG0 - физический адрес слова в ОЗУ (команды или операнда), используются только младшие 20 разрядов;
в БОИ тега - не используется.
- RG1 - регистр командного слова; в старших 32 разрядах - код левой команды, в младших - правой;
в БОИ тега - тег команды.
- RG2 - регистр операнда, 64 разряда;
в БОИ тега - тег операнда, 8 разрядов.
- RG3 - регистр результата, 64 разряда;
в БОИ тега - тег результата, 8 разрядов.
Использование каналов:
- Х - считывание физического адреса из RG0 на общую шину;
- запись командного слова и тега команды с общей шины в RG1;
- запись операнда и тега операнда с общей шины в RG2;
- чтение результата и тега результата из RG3 на общую шину.
- А - чтение, запись с шины D ЦП данных в регистры БОИ (в частности, в RG2 и RG3).
- В - чтение, запись данных с шины У ЦП;
- чтение, запись тега с шины У.
- С - чтение левой, правой команды из RG1.
Использование сигналов:
При наличии сигналов /W и /ЕС при обращениях к БОИ происходит запись в соответствующий регистр. При наличии сигнала /ЕС и отсутствии /W происходит чтение внутреннего регистра. Сигналами каналов, обращенными к внешней шине данных (/WХ, /ЕСХ, АХ0-АХ1), управляет арбитр шины. Код адреса регистра канала С АС0-АС1 всегда равен 10. Сигналами /WА, /WВ, /ЕСА, /ЕСВ управляет микропрограмма. Значения АА0-АА1, АВ0-АВ1 задаются также в микропрограмме.
6.4.2. Микропроцессорная секция (К1804ВС1)
Четырехразрядная микропроцессорная секция (МПС) состоит из четырех основных блоков: внутренней памяти, АЛУ, регистра Q и управления.
Структурная схема МПС:
Блок внутренней
памяти -------------------
| 4|
v |
pr3 ----------------- pr0 |
<-->| с д а |<--> |
----------------- |
| 4 | блок регистра q
v |
а0-а3 4 ----------------- | ------------
-------->| | | | |
в0-в3 4 | р з у | | v |
-------->| | | pq3 ----------- pq0 |
----------------- | <-->| с д р |<--> |
| | | ----------- |
v v |------ | |
-------- -------- | | | 4 |
т----> | рг.А | | рг.В | | v v |
-------- -------- | ----------- |
| | | | рг. q | |
|4 |4 | -----|----- |
----------| | | v |
| | | ----------+----------------------
d0-d3| | "0" | | |
-----+------ | | | | |
| 4| | |4 | |4 |
| v v v v v |
| --------------------------- |
| | d а 0 в q | |
| | с и д | |
| --------------------------- | управляющие
| | 4 | 4 | сигналы
| v v | ^....^
| -------- -------- | |....|
с4<-+-\ r \ / s / | --------------
/g<-+--\ --------- / | | блок |
/р<-+---\ а л у / с0 | | управления |
ovr<-+----\ /<---- | --------------
z<-+-----\ f / | ^ ^ ^
f3<-+------\---------------/ | | | |
| | | | | i2-i0
-----------| |----------------- | i5-i3
v v i8-i6
---------------
| с в д | блок управления
---------------
арифметическо- | 4
логический |<------/ое
блок v у
БЛОК ВНУТРЕННЕЙ ПАМЯТИ содержит регистровое запоминающее устройство (РЗУ) с двумя независимыми каналами выбора информации. Выбор из блока внутренней памяти любого регистра в качестве источника информации осуществляется сигналами на адресных входах А0-А3 или В0-В3. Из РЗУ могут быть одновременно считаны 2 слова, при этом, если на адресных входах установлены одинаковые адреса, на обоих выходах РЗУ появятся идентичные данные.
Запись данных производится в регистр, адресуемый сигналами В0-В3. Моментом начала записи является момент перехода тактового сигнала Т из “1” в “0”. С этого момента информация на выходах из регистров А и В фиксируется, что устраняет неопределенность в кольце передачи информации с выхода блока внутренней памяти на его вход.
Информация перед записью в РЗУ может быть сдвинута влево или вправо на 1 разряд. Эту операцию выполняет сдвигатель данных СДА. PR0, PR3 - сигналы на двунаправленных выводах МПС, возникающие при выполнении операции сдвига перед записью в РЗУ.
АРИФМЕТИЧЕСКО-ЛОГИЧЕСКИЙ БЛОК включает двухвходовое арифметическо-логическое устройство (АЛУ), выполняющее 8 логических и арифметических операций и формирующее 4 признака результата: перенос из старшего разряда С4, переполнение OVR, знак или содержимое старшего разряда на выходе F3 АЛУ и признак нулевого значения Z всех выходов АЛУ. На входах АЛУ включен селектор источника данных (СИД), позволяющий выбирать в качестве пары операндов АЛУ информацию из 5 источников: с внешней шины данных D0-D3, с каналов А и В РЗУ, из дополнительного регистра Q или нулевую константу. С выхода АЛУ информация подается на селектор выходных данных (СВД). На второй вход селектора информация может быть передана прямо с выхода А РЗУ, минуя АЛУ. С выхода СВД информация передается на выходную шину У. Разрешением выдачи информации через У-выходы управляет сигнал /ОЕ.
Выбор источников данных на входы R и S АЛУ задается сигналами микрокоманды I0-I2, приемника результата - сигналами I6-I8, функции - сигналами I3-I5.
Арифметические операции в АЛУ выполняются с учетом значения сигнала входного переноса С0 по правилам дополнительного кода при представлении отрицательных чисел. (в частности, при выполнении операции вычитания С0 устанавливается в 1 для представления результата в дополнительном коде).
БЛОК РЕГИСТРА Q состоит из дополнительного регистра Q и сдвигателя регистра (СДР), который позволяет записывать информацию в регистр Q с выхода АЛУ и сдвигать содержимое регистра Q вправо или влево на 1 разряд. PQ0, PQ3 - сигналы на двунаправленных выводах МПС, возникающие при выполнении операции сдвига информации перед записью в регистр Q.
БЛОК УПРАВЛЕНИЯ формирует управляющие сигналы для остальных блоков МПС в зависимости от сигналов кода микрокоманды I0-I8.
Арифметические и логические операции в ЦП с 64-разрядными данными производятся схемой из 16 4-разрядных микропроцессорных секций. Адресные вычисления и арифметические операции над модификаторами (32 разряда) выполняются схемой из 8 МПС, соответствующей младшей половине 64-разрядной схемы, причем сигналы выходного переноса, знакового разряда, переполнения и нулевого результата формируются в зависимости от типа данных (64 или 32).
Использование сигналов:
Сигналами I0-I8, А0-А3, В0-В3, /ОЕ, С0 управляет микропрограмма; сигналы D0-D3 поступают с входной шины D ЦП; У0-У3 выходят на шину У ЦП; сигналы С4, F4, OVR, Z, PR0, PR3, PQ0, PQ3 передаются на схему управления состоянием и сдвигами К1804ВР2, и далее - на мультиплексор условий; /Р и G используются для формирования ускоренного переноса.
6.4.3. Схема управления состоянием и сдвигами (К1804ВР2)
блок обработки
iz,in,iv,iс признаков
|
| 4
--------------+-------------
| ----+--------- |
| ------+---+---- | | -------
4 | | | | | | 4 | 4 | 4 |
v v | | | v v v |
------------ | | | ------------ |
| muxn | | | | | muxm | |
------------ | | | ------------ |
| 4 | | | | 4 |
v | | | v |
/cen ------------ | | | ------------ |/сем
---->| рг.N | | | | | рг.М |<--+----
------------ ^ | ^ ------------ | /ev
| | 4 | 4 | 4 | | /ez
----------| | ---------- | /en
i* v v v | /ес
^ ^ ^ ^ --------------- |
| | | | | mux вых | ^
-------------- --------------- |
| блок | | |
| управления | |------------>-----------------<--->
-------------- v 4 yz,yn,yv,ус
^ ------------------
| 6 | схема проверки |
i0-i5 | условия |
------------------
| /оест
|<---------------
ст v блок проверки
условия
сх "0" "1" мс nс "0" "1" мс mn iс in$iv
| | | | | | | | | | |
v v v v v v v v v v v
2 ------------------- pf3---------------------pf0
------>| блок управления |<-- <->| блок управления |<->
i11,i12| переносом | i* pq3| сдвигами |pq0
------------------- <->---------------------<->
| ^ ^ |
| с0 | |5 v
v /sе i6-i10 загрузка
разряда мс
Схема управления состоянием и сдвигами (СУСС) предназначена для выполнения различных функций обслуживания АЛУ: формирования сигнала входного переноса в МПС и схему ускоренного переноса; организации сдвигов; выполнения операции с регистрами состояния; проверки одного из 16 условий, поступающих с выходов регистров состояния или МПС. В схеме СУСС можно выделить 5 основных блоков: обработки признаков, проверки условия, управления переносом, управления сдвигами, управления.
БЛОК ОБРАБОТКИ ПРИЗНАКОВ состоит из двух 4-разрядных регистров состояния (рг. N и рг. М), двух входных мультиплексоров (MUXN и MUXM) и выходного мультиплексора (MUX Вых) и предназначен для хранения и модификации признаков состояния МПС: переноса (С), знака (N), переполнения (OVR) и нуля (Z).
В рг. N информация поступает с выхода двухвходового MUXN. В зависимости от сигналов микрокоманды I0-I5 в рг. N может быть записана информация со входов признаков состояния (IС, IN, IV, IZ) или с выходов рг. М (МС, MN, MV, MZ), а также “0” или “1”. Для записи необходимо, чтоб сигнал разрешения записи /CEN был установлен в “0”. С рг. N можно выполнять операции загрузки регистра со входов признаков состояния; регистровые операции и операции с отдельными разрядами регистра. Операции с битами представляют собой установку в “0” или “1” одного из разрядов рг. N в зависимости от сигналов микрокоманды I0-I5. Регистровые операции представляют собой операции со всем словом, записанным в рг. N. В зависимости от сигналов I0-I5 выполняется одна из четырех регистровых операций: запись содержимого рг. М в рг. N, регистровый обмен или установка всех разрядов рг. N в “0” или “1”. Операции загрузки регистра представляют собой запись информаци в рг. N со входов признаков состояния (IС, IN, IV, IZ).
В рг. М информация поступает с выхода трехвходового MUXM. В зависимости от значения сигналов I0-I5 в рг. М может быть записана информация со входов признаков состояниия, с выходов рг. N или с двунаправленной шины У (УС, YN, YV, YZ). Кроме того, в каждый разряд рг. М может быть записан “0” или “1”. Для выполнения записи необходимо, чтобы на входе разрешения записи в рг. М (/СЕМ) был установлен “0”.
Рг. М выполняет операции с битами, со словами и операции загрузки рг. М со входов IС, IN, IV, IZ. Операции с битами рг. М выполняет с помощью сигналов разрешения записи признаков (/ЕС, /EN, /EV, /EZ). При “1” на входе разрешения записи признака запрещается запись в соответствующий разряд рг. М. При “1” на входе /СЕМ запрещается запись во все разряды рг. М.
Информация с выходов рг. N, рг. М или со входов признаков состояния через выходной мультиплексор передается на двунаправленную трехстабильную шину У. Если на входах I0-I5 нули, то шина У является входной независимо от сигнала разрешения вывода информации (/ОЕУ). В остальных случаях шина У является выходной.
БЛОК ПРОВЕРКИ УСЛОВИЯ состоит из схемы проверки условия, мультиплексора со схемой управления полярностью и предназначен для формирования выходного сигнала кода условия. Под действием сигналов I3-I0 блок выполняет 16 операций, результат которых передается на выход кода условия (СТ). Выбор операндов для выполнения операций в блоке осуществляется под действием сигналов микрокоманды I4, I5.
4 выполняемые блоком проверки условия операции представляют собой передачу одного из признаков состояния на выход СТ. Другие 4 операции используются после окончания операций вычитания (А-В) в АЛУ для выполнения условий А=В, А/=В, А>=В и т. Д. При этом числа А и В могут быть представлены в дополнительном коде или как числа без знака. Затем результат одной из этих 8 операций выбирается мультиплексором для передачи на вход схемы управления полярностью, которая при необходимости инвертирует этот результат. Поэтому остальные 8 операций, выполняемых блоком, представляют собой инверсию первых 8 операций. Результат проверки условия с выхода схемы управления полярностью поступает на шину СТ, управляемую сигналом разрешения кода условия (/ОЕСТ).
БЛОК УПРАВЛЕНИЯ ПЕРЕНОСОМ формирует сигнал входного переноса С0 под действием сигналов микрокоманды I12, I11, I5, I3-I1. При этом в качестве входного переноса выбирается один из 7 источников (“0”, “1”, СХ, NС, МС, /NС, /МС), что позволяет легко реализовать операции сложения и вычитания чисел обычной и двойной длины.
БЛОК УПРАВЛЕНИЯ СДВИГАМИ предназначен для организации арифметических, логических и циклических сдвигов в зависимости от сигналов микрокоманды I6-I10. Сигнал I10 определяет направление сдвига.
БЛОК УПРАВЛЕНИЯ под действием сигналов микрокоманды I0-I12 формирует внутренние сигналы, управляющие блоками СУСС.
Использование сигналов
Выходы признаков состояния старшей МПС С4, OVR, F3, Z соединены с соответствующими входами признаков состояния СУСС. При этом старшей может считаться МПС, содержащая 32-28 или 64-60 разряды в зависимости от типа операций, производимых в АЛУ. Двунаправленная шина У (УС, YN, YV, YZ) соединена через ШФ со входной шиной D ЦП для выдачи информации из СУСС, и с выходной шиной У для чтения информации. Выход кода условия СТ подается на мультиплексор условий. Входы /СЕМ, /EZ, /ЕС, /EN, /EV, СХ, /ОЕСТ заземлены. Управление входом /SE осуществляется инверсным сигналом I8 МПС, I10 соединяется со входом I7 МПС. Сигналами /СЕМ и /CEN управляет микропрограмма.
6.5. Обработка прерываний на микроуровне
При запросе прерывания происходит замена адреса следующей микрокоманды на фиксированный адрес микропрограммы входа в прерывание. Микропрограмма входа в прерывание устанавливает маску на запрос прерываний, записывает адрес прерванной микропрограммы в стек. После чего производится передача управления микропрограмме самого приоритетного прерывания и сброс всех прерываний и маски.
Прерывания делятся на 2 группы: “псевдо” и все остальные (внешние и внутренние).
В случае внешних и внутренних прерываний выполнение программы будет продолжаться, начиная с выборки командного слова. Поэтому микропрограмма входа в прерывание должна делать сброс стека (командой CJPP производится выборка адреса из стека как минимум 2 раза!). Затем производится смена рабочей группы регистров с передачей управления программе обработки соответствующего прерывания согласно вектору прерываний.
В случае псевдопрерываний обработка их происходит на микропрограммном уровне и заканчивается передачей управления по адресу, выбираемому из стека, а выполнение микропрограммы продолжается с прерванного места.
- Псевдопрерывания от ПП при чтении и записи регистров ЦП. Считывание или запись пультовым процессором содержимого регистров ЦП происходит через ОЗУ обмена с ПП. В этих прерываниях микропрограмма имитирует команды RMOD и WMOD, а именно:
- через преобразователь начального адреса считывает содержимое адресного регистра, установленного ПП, и определяет запрашиваемую группу регистров ЦП;
- считывает (записывает) указанный регистр в ОЗУ ПП.
- производит возврат из псевдопрерывания.
- Псевдопрерывание HALT (останов). Происходит по запросу от ПП (6 разряд стаусного регистра ЦП), при задании режима останова по адресу (4 разряд статусного регистра) в случае совпадения заданного адреса с текущим и по команде “останов”. В момент входа в псевдопрерывание микропрограмма сбрасывает триггер “пуск” (для надежности) и ждет его установки пультовым процессором. После установки триггера микропрограмма снова сбрасывает его и передает управление по адресу, выбираемому из стека.
6.6. Статусный регистр ЦП
В ЦП установлен статусный регистр, управляемый ПП. Значение отдельных разрядов статусного регистра:
- 1 - полный останов ЦП (для доступа к ОЗУ, ПЗУ МП) (“0”).
- 2 - 12-ый разряд адреса микропрограммной памяти при обращении к ней I8080.
- 3 - 12-ый разряд адреса микропрограммной памяти при безусловном переходе, инициированном I8080.
- 4 - блокировка останова по адресу (“1”)
- 5 - идет на мультиплексор условий ЦП
- 6 - halt (“1”), устанавливаемый из ЦП
- 7 - при записи - сброс HALT ЦП; при чтении - “1”.
- 8 - HALT, устанавливаемый из ПП.
Пультовой процессор имеет возможность управлять состоянием ЦП через статусный регистр, реализуя функции “пультовой отладки”:
- Останов - сброс 6 разряда статусного регистра ЦП (режим HALT), вызывающего псевдопрерывание HALT.
- Пуск - установка 6 разряда статусного регистра и установка тг. ПУСК, сбрасываемого микропрограммой.
- Шаг - в режиме “останов” - установка тг. ПУСК, сбрасываемого микропрограммой.
Разряды 2 регистра БОПП, устанавливаемые микропрограммой, и их значение:
- 1р.= 1 - останов, установленный ПП;
- 2р.= 1 - команда “останов”;
- 3р.= 1 - прерывание в прерываниии (ПОП=1 и любое внутреннее или внешнее прерывание);
- 4Р.= 1 - “TIME-OUT” ОЗУ (INT3);
- 5Р.= 1 - “TIME-OUT” шины (INT4);
- 6р.= 1 - многократная ошибка (INT2);
- 7р.= 1 - останов по адресу или отсутствующее прерывание (INT6,25);
- 8р.= 1 - сообщение от ЦП пультовому поцессору (команда WMOD).
6.7. Адресация регистров и памяти ЦП
Для доступа из ПП и командами RMOD и WMOD
Весь список регистров и памяти ЦП доступен только ПП. Командам WMOD и RMOD доступны только некоторые из них (пока).
Обозначения:
- R - регистр (память) можно прочитать командой RMOD;
- W - можно записать в регистр (память) командой WMOD;
- I - можно записать в регистр (память) из ПП;
- О - можно прочитать регистр (память) в ПП.
РЕГИСТРЫ И ПАМЯТЬ ЦП имеют следующие восьмеричные адреса (в скобках приведены шестнадцатеричные эквиваленты):
000 0000 : 000 1777 (00000 : 003ff) - ОЗУ модификаторов; rwio;
зап-У, чт-D, 32 разряда
000 2000 : 000 3777 (00400 : 007ff) - регистры
приписки/защиты; rwio;
зап/чт - У, 20 разрядов
000 4000 : 000 5777 (00800 : 00BFF) - БОБР, БИЗМ; rwio;
зап/чт - D, 2,3 разряды
000 6000 : 000 7777 (00с00 : 00fff) - признаки БМСП; rwio;
зап/чт - D, 1 разряд
001 0000 : 001 1777 (01000 : 013ff) - озу0 приорит. Стр.; rwio
001 2000 : 001 3777 (01400 : 017ff) - озу1 приорит. Стр.; rwio
зп-У, чт-D,11-20 разряды
001 4000 : 001 5777 (01800 : 01bff) - регистры
001 6000 : 001 7777 (01с00 : 01fff) - регистры
002 0000 : 000 1777 (02000 : 023ff) -
002 2000 : 002 3777 (02400 : 027ff) -
002 4000 : 002 5777 (02800 : 02bff) -
002 6000 : 002 7777 (02с00 : 02fff) -
003 0000 : 003 1777 (03000 : 033ff) -
003 2000 : 003 3777 (03400 : 037ff) -
003 4000 : 003 5777 (03800 : 03bff) - кэш команд; iо
003 6000 : 003 7777 (03с00 : 03fff) - кэш операндов; iо
При обращениях к кэшу адрес задается следующим образом:
- 1 -10 разряды - номер слова в странице;
- 11-20 разряды - кэш команд или операндов;
- 21-30 разряды - номер страницы.
Таким образом, 30-21,10-1 разряды есть полный 20-разрядный адрес, необходимый для обращения к кэшу и эквивалентный адресу по памяти. Знаковый разряд адреса размножается в микропрограмме автоматически.
Адреса кэш команд и операндов “приписаны”, т.е. Если БП=1, задается физ.адрес; если БП=0 - мат.адрес с учетом приписки!
Регистры:
- 001 4000 (01800) - сумматор (64 разряда); iо
- 001 4001 (01801) - регистр младших разрядов (64 разряда); iо
- 001 4002 (01802) - ГРП (64 разряда); rwio
- 001 4003 (01803) - СЧАС (32 разряда); одновременно происходит выборка командного слова в регистр команд (RG1); ППК, ТКК и РОП не меняются. Iо
- 001 4004 (01804) - РОП (32 разряда); rwio
- 001 4005 (01805) - ИАОП (32 разряда); iо
- 001 4006 (01806) - half; iо
- 001 4007 (01807) - вуте; iо константы
- 001 4010 (01808) - expn; iо микропрограмм
- 001 4011 (01809) - mant; iо
- 001 4012 (0180а) - wr6; iо
- 001 4013 (0180в) - wr5; iо рабочие
- 001 4014 (0180с) - wr4; iо регистры
- 001 4015 (0180d) - wr3; iо микропрограмм
- 001 4016 (0180е) - wr2; iо
- 001 4017 (018of) - q; iо
- 001 4020 (01810) - регистр физического адреса ОЗУ (RG0 БОИ данных), 64 разряда (используется 20 разрядов); iо
- 001 4021 (01811) - регистр команды (RG1 БОИ, 64 разряда); iо
- 001 4022 (01812) - регистр операнда (RG2 БОИ, 64 разряда); iо
- 001 4023 (01813) - регистр рез-та (RG3 БОИ, 64 разряда); iо
- 001 4024 (01814) - регистр тега команды (RG1 БОИ тега) 8 разрядов; iо
- 001 4025 (01815) - регистр тега операнда (RG2, 8 разрядов); iо
- 001 4026 (01816) - регистр тега результата (сумматора, 8 разрядов); одновременно пишется в RG3 и РРР; rwio
- 001 4027 (01817) - регистр исполнительного адреса; запись: 32 разряда шины У, чтение: 20 разрядов шины D; iо
- 001 4030 (01818) - регистр номера группы; запись: 6-10 разряды шины У, чтение: 6-11 разряды шины D; rwio
- 001 4031 (01819) - регистр номера процесса; запись: 8 разрядов шины У, чтение: 8 разрядов шины D; rwio
- 001 4032 (0181а) - регистр физической страницы или адрес ОЗУ признаков ВВВ и ОЗУ приоритетов страниц (РФС); запись: 11-20 разряды шины У, чтение: 11-20 разряды шины D; iо
- 001 4033 (0181в) - регистр режимов (исполнительная часть); запись: 32 разряда шины У (постоянная часть РР и тг.признаков!); чтение: 3-5,28-30 разряды шины D (только тг.признаков!); iо
- 001 4034 (0181с) - регистр параметра сдвига, 6 младших разрядов - параметр сдвига, 11-ый разряд задает направление; запись - с шины У; i
- 001 4035 (0181d) - регистр КОП арбитра (для останова ПП); запись: 4 разряда шины У, чтение: 4 разряда шины D; iо
- 001 4036 (0181е) - регистр N СУСС, (Z,N,С OVR); - микромашинный статусный регистр; запись: 7-10 разряды шины У, чтение: 7-10 разряды шины D: 10р.- z, 9р.- n, 8р.- с, 7р.- ovr; iо.
- 001 4037 (0181f) - регистр М СУСС - регистр признаков результата, исполнительная часть; у неактивного процесса копируется в 7-10 разряды РР. Значение разрядов - аналогично рг. N; iо
- 001 6000 (01с00) - регистр передачи сообщения от ЦП к ПП по последовательной линии связи; записывается 8 разрядов рг. А в 0-й рг. БОПП и устанавливается признак, что там есть информация. (запись в БОПП по 8 разрядов с шины У); w
- 001 6000 (01с00) - пропуск команды, с выборкой командного слова, если надо; i
- 001 6001 (01с01) - множимое, 64 разряда У (только запись); пока отсутствует!
- 001 6002 (01с02) - множитель, 64 разряда (только запись); пока отсутствует!
- 001 6003 (01с03) - произведение, младшие 64 разряда (только чтение); пока отсутствует!
- 001 6004 (01с04) - произведение, старшие 64 разряда (только чтение); пока остутствует!
- 001 6005 (01с05) - блок поиска левой единицы; чтение: 7 разрядов шины D, из которых 6 младших - инфромационные, 7р.- флаг; о
- 64р.= 1 : результат - 0, флаг - 0
- 63р.= 1 : результат - 1, флаг - 0
- . . . . . . . .
- 1р.= 1 : результат - 63, флаг - 0
- нет 1 : результат - 63, флаг - 1.
- 001 6006 (01с06) -
- 001 6007 (01с07) - результат сдвига сумматора; чтение: 64 разряда D; о
- 001 6010 (01с08) - КОП команды (по указатулю ТКК), 8р.D (только чтение); о
- 001 6011 (01с09) - адресная часть команды (по указателю ТКК), 32 разряда D (только чтение); о
- 001 6012 (01с0а) - запрос на корректировку списков приоритетов страниц: ОЗУ БМСП, начиная с адреса, заданного в сумматоре в 11-20 разрядах, заполняется единицами (при обращениях ПП адрес начала загрузки задается в байтах данных); в ОЗУПС0 по адресу 1 заносится “0”; wi
- 001 6013 (01с0в) - установка останова - запись “0” (1 разряд шины У) в ОЗУ останова 0 (для пультового останова). Адрес останова задается в байтах данных ОЗУ обмена с ПП, 20 разрядов. Значение регистра КОП арбитра к этому моменту должно быть определено; i
- 001 6014 (01с0с) - снятие останова - запись “1” в ОЗУ останова 0; i
- 001 6015 (01c0d) - установка останова - запись “0” в ОЗУ останова 1; i
- 001 6016 (01с0е) - снятие останова - запись “1” в ОЗУ останова 1; i
- 001 6017 (01c0f) - запись в регистр команд (RG1) левой команды; записываем 1-32 разряда данных из ПП; i
- 001 6020 (01с10) - запись в регистр команд правой команды; 1-32 разряды данных из ПП; i
- 001 6021 (01с11) - “пуск” ЦП, начиная с левой команды, записанной в регистр команд; i
- 001 6022 (01с12) - “пуск” ЦП, начиная с левой команды по заданному адресу; i
- 001 6023 (01с13) - установка программного прерывания: устанавливается программное прерывание с номером 31, проходящее при наличии ПМИ и отсутствии БВП. 41 разряд ГРП устанавливается в “1”. Из ПП записывается только разряд ГРП, т.к. Сброс INT31 происходит одновременно со сбросом INT28! wi
- 001 6024 (01с14) - регистр счетного времени активного процесса, 64 разряда; младшие 16 разрядов - в аппаратной части часов, 17-64 разряды - в ОЗУ модификаторов активной группы. Запись/чтение аппаратной части - по 1 байту с 1-8 разрядов шины D; rwio
- 001 6025 (01с15) - таймер счетного времени активного процесса, 32 разряда; младшие 16 разрядов - в аппаратной части таймера, 17-32 разряды - в ОЗУ модификаторов активной группы. Запись/чтение - по 1 байту с 1-8 разрядов шины D; rwio
- 001 6026 (01с16) - проверка состояния ОЗУ обмена ЦП→ПП: С = 1, если занято; r
- 001 6027 (01с17) -
- 001 6030 (01с18) - установка внешнего прерывания на шину (ЦП посылает внешнее прерывание, сам при этом не прерываясь); wi
- 001 6031 (01с19) - сброс кэш'а; wi
- 001 6032 (01с1а) - чтение номера процессора; rо
- 001 6033 (01с1в) -
- 001 6034 (01с1с) -
- 001 6035 (01c1d) -
- 001 6036 (01с1е) -
- 001 6037 (01c1f) -
Регистры WR1,WR5,WR6,N и исполнительного адреса используются как рабочие при обращениях ПП.