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 и исполнительного адреса используются как рабочие при обращениях ПП.