Пути развития базовой технологии ПЭВМ

Значительная часть мирового парка ЭВМ создана на базе микропроцессоров Intel 8088, 8086. Для советского читателя представляют, на наш взгляд, определенный интерес пути развития отечественного семейства микропроцессоров, программно совместимых с Intel 8088, 8086.

Общая характеристика микросхемы
СБИС КМ1810ВМ87 - однокристальный специализированный микропроцессор (сопроцессор), предназначенный для выполнения числовых операций с высокой производительностью и точностью в формате с фиксированной и плавающей запятой. Данный микропроцессор (МП) существенно расширяет функциональные возможности мультипроцессорных систем на основе центрального процессора (ЦП) КМ1810ВМ86 или КМ1810ВМ88, который при этом должен работать в максимальном режиме . Комбинация МП КМ1810ВМ87 с ЦП КМ1810ВМ86 (КМ1810ВМ88) воспринимается программистом как единый процессор с расширенными системой команд и типами данных. Программные средства и внутренняя архитектура МП КМ1810ВМ87 позволяют автоматически синхронизировать его с ЦП при их совместной работе.
В систему команд (их 69) МП КМ1810ВМ87 входят 16 команд управления, 9 - пересылки данных, 25 - арифметических, 7 - сравнения, 5 - трансцендентных функций, 7-загрузки констант. МП КМ1810ВМ87 производит операции с семью типами данных, включающих три формата двоичных целых чисел длиной 16, 32 и 64 двоичных разряда; один формат двоично-десятичных целых чисел длиной 80 двоичных разрядов; три формата действительных чисел с плавающей запятой длиной 32, 64 и 80 разрядов. МП позволяет также представлять специальные величины: плюс нуль, минус нуль, плюс бесконечность,
минус бесконечность, неопределенность (замаскированный ответ на особый случай - недействительная операция), нечисловую величину, денормализованные числа. При выполнении команд МП КМ1810ВМ87 контролирует особые случаи наличия денормализованного операнда недействительной операции, переполнения, антипереполнения, деления на нуль, неточности. При обнаружении немаскируемых особых случаев МП приостанавливает выполнение программы, о чем сообщает ЦП.
Благодаря аппаратному способу реализации вычислений, в том числе операций умножения, деления, извлечения квадратного корня, тригонометрических тангенса и арктангенса, МП КМ1810ВМ87 повышает производительность микропроцессорной системы при вычислении сложных процедур на два и более порядка. Внутренние операции в МП КМ1810ВМ87 производятся в диапазоне действительных чисел + 3,4-10"4932... + 1,2-Ю4932, а вычисления - с перепрограммируемой точностью 64, 53 или 24 двоичных разряда.
Обращение к сопроцессору осуществляется только по его командам (нет необходимости в специальных командах адресации сопроцессора). В памяти числовая информация может быть представлена 2-, 4- и 8-байтными целочисленными данными, 10-байтными упакованными двоично-десятичными данными, 4-, 8- и 10-байтными действительными данными. Конструктивно микросхема выполнена в метал- локерамическом 40-выводном корпусе типа 2123.40 - 9.01 с двухрядным расположением выводов .
 

Структурная организация микропроцессора
МЦ КМ1810ВМ87 состоит из двух функциональных частей - устройства управления и исполнительного устройства . Устройство управления синхронизирует работу ЦП и сопроцессора. Основные узлы его: регистры управляющего слова (РУС), слова состояния (РСС), указателя текущей команды (РУТК), предварительной очереди данных (РПОД) и модуль синхронизации (МС). Исполнительное устройство выполняет все операции по обработке данных. Основные узлы его: регистровый стек (восемь 80-разрядных регистров), микропрограммный модуль (МКПМ), арифметический модуль (AM), модуль обработки порядка (МОП), модуль программного сдвига (МПС), регистры временного хранения (РВХ) и регистр слова признаков (РСП).
 

Управляющее слово, слово состояния, слово признаков и указатель текущей команды - частичный набор программно-доступных средств (ПДС) сопроцессора, который вместе с регистровым стеком образует полный набор ПДС. Содержимое ПДС может быть сохранено (запомнено) в памяти или восстановлено (загружено) по содержимому памяти с помощью команд сопроцессора.
Устройство управления
Управляющее слово  обеспечивает широкий диапазон применения сопроцессора путем задания нескольких режимов его работы, которые устанавливаются по сигналу системного сброса или по одной из команд: "Загрузка управляющего слова" (FLDCW), "Загрузка частичного набора ПДС" (FLDENV), "Восстановление содержимого полного набора ПДС" (FRSTOR), "Начальная установка" (FINIT/FNINIT).
Поля масок особых случаев IM, DM, ZM, ОМ, UM, РМ (разряды D0...D5) определяют способ обработки соответствующего случая. Если маска установлена (состояние "1"), то используется встроенная процедура обработки особого случая, в противном случае - процедура обработки особого случая, определенная пользователем при условии, что прерывания не замаскированы.
Поле маски запроса на прерывание /ЕМ разрешает (маскирует состояние "О") или запрещает (маскирует состояние "1") формирование запроса на прерывание при возникновении особого случая (не маскированного). По прерыванию управление передается процедуре обработки особого случая, определенной пользователем. Запрещение запроса на прерывание эквивалентно маскированию всех особых случаев.
 

Поле управления точностью PC (разряды 8 и 9) изменяет точность представления данных во внутреннем (10-байтном действительном) формате. В зависимости от содержимого поля PC число значащих разрядов в мантиссе может быть уменьшено до 53 или 24
Уменьшение числа значащих разрядов в мантиссе внутреннего формата представления данных не приводит к увеличению скорости выполнения операций сопроцессором.
Результат округляется до указанного размера мантиссы в соответствии с полем управления округлением RC. Неиспользуемые разряды находятся в состоянии "О". Это поле устанавливает один из четырех режимов округления результата выполнения операций сопроцессора:
    Режим округления
Содержание поля RC    до ближайшего числа
0    Или четного
1    Меньшего
2    Большего
3    По абсолютной величине

Если результат выполнения операции В не может быть размещен в определенном командой формате и находится между двумя ближайшими представимыми числами А и С, т.е. А<В<С, то он округляется в соответствии с указанным режимом. Округление вносит ошибку, не превышающую единицы последнего разряда числа, до которого производится округление. При округлении:
до ближайшего или четного числа выбирается ближайшее из чисел А или С. Если число В находится посредине между числами А и С, то выбирается четное число, младший значащий разряд которого равен нулю. Данный режим обеспечивает наиболее точную и статистически уравновешенную оценку;
до ближайшего меньшего числа (т.е. в сторону отрицательной бесконечности) и до ближайшего большего числа (т.е. в сторону положительной бесконечности) в качестве результата В принимается число А. Эти режимы можно использовать для вычисления верхнего и нижнего пределов результата путем двухразового выполнения программы вычисления с применением различных режимов округления результата;
до ближайшего по абсолютной величине числа (т.е. в сторону нуля) в качестве результата В принимается меньшее по абсолютной величине число А или С. Данный режим округления обычно применяется при целочисленных вычислениях.
Поле управления бесконечностью 1С устанавливает один из двух режимов обработки бесконечности: с использованием (аффинная) и без использования (проективная) знака. В зависимости от содержимого поля 1С вид используемой бесконечности следующий:
Содержимое поля 1С    Вид бесконечности
0 1    Проективная (без знака) Аффинная (со знаком)

Слово состояния отражает общее состояние сопроцессора (рис. 5). Поля флагов (IE, DE, ZE, ОЕ, UE, РЕ) указывают на наличие или отсутствие особых случаев, возникающих при выполнении текущей команды сопроцессора. Если особый случай имел место, то поле соответствующего флага устанавливается в состояние "1", в противном случае - в состояние "О". Сущность особых случаев в следующем:
 недействительная операция (IE) возникает при невозможности выполнения операции сопроцессором;
денормализованный операнд (DE) - при попытке выполнения операции над денормализованным операндом;
деление на нуль (ZE) - при выполнении операции деления, когда делитель равен нулю;
переполнение (ОЕ) - если величина порядка результата выполнения операции выходит за пределы (становится больше) его представления;
антипереполнение (UE) - если величина порядка результата выполнения операции выходит за пределы (становится меньше) сто представления;
потеря точности (РЕ) - если результат выполнения операции не может быть точно представлен в формате устройства приемника.
Особые случаи - недействительная операция, деление на нуль и денормализованный операнд - обнаруживаются до выполнения операции и называются ранними; переполнение, антипереполнение и потеря точности - в процессе выполнения операции и называются поздними. Если был обнаружен ранний особый случай, то содержимое ус- тройства-приемника команды (т.е. содержимое регистрового стека и памяти) не изменяется (команда как бы не выполнялась). При обнаружении позднего особого случая содержимое этого устройства может быть изменено.
Незамаскированные поздние особые случаи переполнение и антипереполнение обрабатываются, как ранние особые случаи (память не обновляется, выборки из стека не происходит), при выполнении команд "Запоминание целочисленного данного" (FIST), "Запоминание целочисленного данного и выгрузка содержимого текущего регистра из стека" (FISTP), "Запоминание вещественного данного" (FST) и "Запоминание вещественного данного и выгрузка содержимого текущего регистра из стека" (FSTP). Кроме того, может возникнуть несколько особых случаев, однако устанавливается флаг только одного из них в соответствии с последовательностью приоритета:
Приоритет    Особый случай
1    Денормализованный операнд
    (если особый случай не замаскирован)
2    Недействительная операция
3    Деление на нуль
4    Денормализованный операнд
    (если особый случай замаскирован)
5    Переполнение и антипереполнение
6    Потеря точности

При возникновении особого случая его флаг в слове состояния устанавливается в состояние "1".
Если маска особого случая (поля IM, DM, ZM, ОМ, UM или РМ в управляющем слове) или маска запроса на прерывание (поле IEM управляющего слова) установлена в состояние "1", то используется встроенная процедура обработки особого случая, выполняемая сопроцессором; если маски особого случая и запроса на прерывание установлены в состояние "О", то используется внешняя (определенная пользователем) процедура обработки особого случая.
Вызов и выполнение встроенной процедуры называются маскированным ответом сопроцессора; вызов внешней (определенной пользователем) процедуры обработки особого случая - немаскированным ответом сопроцессора на особый случай. По маскированному ответу вырабатывается приближенный или наиболее вероятный результат той операции, при выполнении которой был обнаружен особый случай. Затем процесс вычисления продолжается.
По немаскированному ответу на особый случай формируется запрос на прерывание на выводе INT сопроцессора. При этом поле запроса на прерывание TR слова состояния устанавливается в состояние "1". Сопроцессор переходит в состояние ожидания (поле занятости сопроцессора в слове состояния находится в состоянии "1", т.е. сопроцессор занят выполнением операции) до момента установки в состояние "О" поля IR одной из команд "Установка в нуль полей в слова состояния" (FNCLEX), "Сохранение содержимого полного набора ПДС" (FNSAVE) или "Начальная установка" (FNINIT). После этого выполнение операции, вызывающей особый случай, продолжается.
В случае, если сигнал запроса на прерывание маскирован в контроллере прерываний (триггер IMR - в состоянии "1") или прерывания ЦП запрещены (триггер IF - в состоянии "О"), существует опасность возникновения состояния бесконечного ожидания, когда ЦП, выполняя команду "Ожидание" (WAIT), будет ждать сигнала освобождения сопроцессора на выводе TEST (BUSY), а сопроцессор - установки в состояние "О" поля IEM управляющего слова (рис. 6). Если особый слу- май маскирован, то при выполнении одной команды возникнет еще один или несколько особых случаев, так как процесс выполнения команды продолжается после маскируемого ответа на этот случай. Пользователю рекомендуется маскировать все особые случаи, за исключением случая недействительной операции, который обрабатывают, как фатальную ошибку в программе.

Определенная пользователем процедура обработки особого случая может состоять из сохранения состояния полного или частичного набора программно-доступных устройств сопроцессора, установки в состояние "О" содержимого флагов особых случаев в слове состояния (т.е. снятие запроса на прерывание), разрешения прерывания ЦП, идентификации и обработки особых случаев, возобновления нормального выполнения программы.
Процедура обработки особого случая должна устанавливать поле IR в состояние "О" перед возобновлением выполнения основной программы (перед возвратом в основную программу). В противном случае эта процедура может быть вызвана повторно по сигналу INT на выводе сопроцессора (т.е. может возникнуть состояние бесконечного ожидания). Если в процедуре обслуживания прерывания ЦП используются команды сопроцессора, то возврат в прерванную программу возможен только после завершения текущей команды сопроцессора. Для этой цели в программе перед возвратом из процедуры должна следовать команда "Ожидание ЦП, пока процессор занят" (FWAIT).
Поле IR (разряд 7) отражает наличие запроса на прерывание при возникновении особого случая. Поле ST (разряды 11...13) определяет адрес текущего регистра стека.
Поле битов условия СО, CI, С2, СЗ (разряды 8...10 и 14) характеризует результат выполнения таких команд, как "Сравнение вещественных данных" (FCOM), "Сравнение вещественных данных и выгрузка из стека" (FCOMP), "Сравнение вещественных данных и выгрузка из стека текущего и регистра 1" (FCOMPP), "Сравнение с целочисленными данными и выгрузка содержимого текущего регистра из стека"
 
(FICOMP), "Сравнение содержимого текущего регистра с положительным вещественным нулем" (FTST), "Вычисление частичного остатка" (FPREM), "Установка битов условий по содержанию текущего регистра стека" (FXAM).
Поле занятости сопроцессора В (разряд 15) указывает, что сопроцессор занят выполнением команды (поле - в состоянии "1") или находится в состоянии ожидания (поле - в состояние "О"). Состояние поля В отражается на выводе BUSY.
Указатель текущей команды позволяет определить физический адрес и код текущей команды сопроцессора, а также адрес ее операнда в памяти. Исключением являются команды управления. Содержимое указателя текущей команды можно использовать в процедуре обработки особых случаев для получения информации о команде, вызвавшей особый случай.
Модуль МС синхронизирует работу ЦП и сопроцессора в асинхронном и синхронном режимах. Так как время выполнения команд сопроцессора ESC ЦП значительно меньше времени выполнения этой команды сопроцессором, то ЦП вместо ожидания может реализовать собственные команды. Этот режим работы в вычислительной системе является асинхронным. Однако существуют два случая, когда требуется синхронизировать работу ЦП и сопроцессора:
1.    Исполнительное устройство не может приступить к выполнению следующей команды до завершения предыдущей. Синхронизация в данном случае осуществляется с помощью команды WAIT ЦП, применяемой перед командой ESC.
2.    Центральный сопроцессор должен использовать операнд команды сопроцессора из памяти вычислительной системы только после завершения выполнения команды с таким операндом. Данный вид синхронизации обеспечивается путем записи в рабочей программе команды сопроцессора FWAIT перед командой ЦП, которая обращается к операнду в памяти.
Модуль синхронизации также выполняет все команды управления, за исключением FSAVE/FNSAVE и FRSTOR. При этом МС может выполнять команду управления сопроцессора в то время, когда исполнительное устройство сопроцессора выполняет вычислительную команду.
Регистры предварительной очереди данных состоят из двух 16- разрядных двоичных регистров (или четырех 8-разрядных). Они обеспечивают согласование длины форматов данных в зависимости от типа ЦП и по четному или нечетному адресу расположены в памяти.
Исполнительное устройство
Регистровый стек состоит из восьми 80-разрядных регистров, используемых в качестве собственно стека и (или) набора рабочих регистров. Адреса регистров стека находятся в пределах 0...7. Адрес верхнего регистра стека, называемого текущим, хранится в регистре указателя стека ST. Указатель стека размещается в слове состояния. Адрес текущего регистра (т.е. содержимое ST) может быть увеличен или уменьшен командами сопроцессора. При увеличении содержимого ST переходит из состояния "7" в состояние "О"; при уменьшении - из состояния "О" в состояние "7".
 

Формат регистра стека состоит из четырех полей: разряды 0...62 - дробная часть мантиссы R; разряд 63 - целая часть мантиссы L; разряды 64...78 - порядок Е; разряд 79 - знак S. Распределение полей соответствует внутреннему 10-байтному формату представления действительных данных.
В командах языка ассемблера используются явные и неявные ссылки на регистр стека. При неявной ссылке в формате команды не указывается имя регистра стека; при явной - указывается имя ST; при ссылке на произвольный ST - имя регистра стека с индексом ST(i), где i - абсолютное числовое выражение языка ассемблера со значением в пределах 0...7, представляющее индекс регистра относительно текущего ST.
Сопроцессор выполняет две операции: проталкивание в стек и выталкивание из него. При операции проталкивания (рис. 9) содержимое ST уменьшается на единицу (при этом изменяется положение текущего ST), данные записываются (загружаются) в текущий ST, по содержимому которого устанавливаются разряды соответствующего тега (признака содержимого) согласно табл. 2. При операции выталкивания из стека (рис. 10) данные считываются (выгружаются) из текущего ST, разряды его тега устанавливаются в состояние "Пусто", содержимое ST увеличивается на единицу (при этом изменяется положение текущего ST).


Содержимое регистра признаков характеризуется его тегом, хранящимся в двух дополнительных разрядах (80 и 81) регистра стека . Разряды тегов объединены в программно-доступный регистр слова признаков.

Модули исполнительного устройства (микропрограммный, обработки порядка, арифметический, программного сдвига) и регистры временного хранения программно-недоступны для программиста и пользователя, поэтому подробное описание их работы в данной статье не приводится.
Микропрограммный модуль управляет и синхронизирует все модули и регистры при выполнении команд арифметических и трансцендентных, пересылки данных, сравнения и проверки, а также загрузки констант и других операций.
Модули обработки порядка и арифметический производят все операции над порядком и мантиссой. Арифметический модуль включает в себя 69-разрядный сумматор, регистры, схему округления и другие узлы.
Модуль программного сдвига выполняет левые и правые сдвиги в диапазоне 0...63 двоичных разрядов за один период синхронизации.
Временные регистры - это три 80-разрядных двоичных регистра, каждый из которых состоит из трех значащих полей: знака числа, порядка и мантиссы; длина поля знака - один двоичный разряд, поля порядка - 15 двоичных разрядов и поля мантиссы - 64 двоичных разряда. Эти регистры предназначены для временного хранения данных при различных вычислениях и преобразованиях форматов из внутреннего 10-байтного действительного формата во внешние 2-, 4- и 8- байтные целочисленные форматы, 10-байтного упакованного двоично- десятичного в 4-, 8- и 10-байтные действительные форматы, а также при преобразовании внешних форматов во внутренний формат.
 


Обсудить вопрос в студенческом форуме

 

Сайт содержит информацию о учебном заведении и студенческой общине и не является официальным