Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга Башков.doc
Скачиваний:
40
Добавлен:
20.11.2019
Размер:
26.92 Mб
Скачать

Глава 3 элементная база микроэвм. Микропроцессорные семейства бис

При создании законченного микропроцессорного вычислителя невозможно обойтись только одной микросхемой МП, необходим достаточно большой набор БИС, обеспечивающих хранение информации, связь с внешним миром, генерацию сигналов и т. п. Та­кой набор микросхем, совместимых с микропроцессором и между собой по своим системным и схемным характеристикам, получил название микропроцессорного семейства БИС или микропроцессор­ного комплекта БИС (несколько более узкое понятие). Микропро­цессорное семейство в широком его понимании, кроме собственно БИС МП, содержит:

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

микросхемы памяти, необходимые для хранения, воспроизведения и записи программ и обрабатываемых данных;

интерфейсные схемы, обеспечивающие сопряжение вычислителя с различными внешними устройствами (дисками, дисплеями, принтерами и т. п.);

схемы обрамления, поддерживающие нормальное функционирова­ние микропроцессора и вычислителя в целом.

Микропроцессорный комплект БИС включает более узкий набор микросхем (обычно без элементов памяти) и чаще относится к многокристальным или секционным МП. Микропроцессорное семейство выпускается, как правило, одной или по лицензионным соглашениям несколькими фирмами. Однако формальное отсутствие той или иной микросхемы в списке семейства не является препятствием к ее использованию наряду с настоящими членами. Здесь все опреде­ляется системной, схемной и экономической целесообразностью.

3.1. Сопроцессоры

Стремление повысить производительность микропроцессорных вычислительных систем привело в конце 70-х — начале 80-г гг. к появлению нового класса БИС — сопроцессоров (coprocessor). Сопроцессор аппаратно ориентирован на выполнение некоторых часто встречающихся операций и/или функций и, при включении в систему, исключает их из основного процессора. Это, во-первых, резко снижает временные затраты на их реализацию и, во-вторых, основной процессор освобождается для других вычислений. В на­стоящее время наибольшее распространение получили следующие типы сопроцессоров:

сопроцессоры ввода-вывода, предназначенные для организации быстрого обмена большими массивами информации с внешними устройствами, например, БИС 8089 фирмы Intel Corp. [3.2];

арифметические (математические) сопроцессоры, ориентированные на выполнение арифметических операций над числами в форма­те с плавающей запятой и вычисление элементарных функций;

кремниевые операционные системы, реализующие в виде БИС ядро некоторой операционной системы, например, схема 80150 фир­мы Intel Corp. [3.2], поддерживающая работу ОС СР/М 86 в портативных микроЭВМ на базе МП 8086/8088;

графические сопроцессоры, содержащие аппаратные средства построения графических примитивов (линий, окружностей, текстов и т. п.), управления окнами и многостраничной экранной памятью в высококачественных графических дисплеях, например, ИС 34010 фирмы Texas Instruments [2.8] для МП типа Motorola 68020;

коммуникационные сопроцессоры, аппаратно реализующие протоколы обмена информацией в локальных вычислительных сетях, например, схема 82586 фирмы Intel Corp. для работы в сети чипа Ethernet/IEEE 802.3 [3.8].

Рассмотрим подробнее арифметический сопроцессор 8087 фирмы Intel Corp. для МП типа 8086/8088 [2.8, 3.13]. БИС 8087 предназна­чена для выполнения арифметических операций и вычисления элементарных функций с числами в форматах целого, короткого и длин­ного вещественного. Сопроцессор изготавливается по усовершенствованной nMOS технологии на кристалле площадью 70 мм2, со­держит более 65 000 элементов, упакован в корпус типа DIP с 40 вы­водами. Сопроцессор состоит (рис. 3.1) из двух блоков — управления CU (control unit) и обработки NEU (numerical execution unit). Блок управления поддерживает синхронизацию работы микросхемы с основным процессором. В него входят 6-байтная очередь команд, идентичная по своей организации очереди в МП 8086, буфероперандов, в котором накапливаются многоразрядные коды, устрой­ство сопряжения с шиной и регистры состояния и управления. Блок управления информационно связан с блоком обработки 16-разрядной шиной, подключенной к регистровому стеку. Кроме стека в NEU входят временные регистры, 68-разрядное АЛУ мантисс, быстрый 63-разрядный сдвигатель и обработчик порядков.

Регистровый стек ST состоит из восьми 80-разрядных регистров, в которых в специальном формате временных вещественных хра­нятся все операнды. Этот формат с 15-разрядным смещением и 64-разрядной мантиссой позволяет представлять числа в диапазоне Ю±490о с точностью до 19 десятичных цифр. Все типы данных при загрузке в NEU автоматически преобразуются в формат временного вещественного, а при выводе — в требуемый тип. В регистре слова состояния выделено трехразрядное поле Тор, содержимое которого определяет регистр, являющийся в данный момент вершиной стека. По сути Top — это указатель стека. Операции загрузки (типа POP) уменьшают Тор на единицу и записывают 80-разрядный код в новый регистр вершины стека. Операции разгрузки (типа PUSH, вытолкнуть) считывают код числа из текущего регистра вершины и автоматически увеличивают Тор на единицу.

Как и в МП 8086, стек «растет вниз» по направлению уменьшения номеров регистров. Команды сопроцессора могут адресовать регистры стека неявно, обращаясь к вершине, или явно, задавая смещение номера регистра относительно Тор. Такая двойная адресация ST значительно упро­щает организацию передачи параметров при обращении к подпро­граммам.

Внешний интерфейс сопроцессора и его подключение к процессору 8086 иллюстрируется рис. 3.2. Назначение и спецификация линий адреса/данных A/D15—A/D0, адреса/состояния A19/S6 — A16/S3, разрешения старшего байта сопроцессора абсолютно аналогичны МП 8086. Одноименные линии сопроцессора и процес­сора соединяются, образуя локальную шину системы. Управляет этой шиной основной процессор 8086, он формирует адреса, считы­вает программные коды из памяти, выполняет запись или чтение данных. Все коды, которые МП выбирает из памяти, поступают по локальной шине и на вход сопроцессора. Последовательность команд одновременно с основным процессором записывается в оче­редь команд сопроцессора.

Для синхронизации этого процесса служат два входа QS0, QS1, соединенные с соответствующими выхо­дами 8086. Обычные команды МП 8086 сопроцессором игнорируются. И только, когда процессор и сопроцессор начинают обрабатывать команду расширения ESC, она воспринимается как инструкция для 8087. Возможные три типа команд сопроцессора: без обраще­ния к памяти, с обращением к памяти для чтения операнда, с обра­щением памяти для записи результата. В первом случае со­процессор, получив команду, приступает к ее выполнению, а про­цессор может продолжать выборку и обработку программы. Во втором случае МП формирует адрес операнда и организует фиктив­ный цикл чтения. Считанное из памяти слово поступает на локаль­ную шину и принимается сопроцессором. Если операнд большой разрядности (32, 64 или 80), сопроцессор в цикле фиктивного чтения перехватывает адрес операнда и получает право управления шиной. Теперь уже сопроцессор организует циклы чтения остальных эле­ментов операнда. Прочитав его полностью, он возвращает управ­ление шиной основному процессору и приступает к выполнению команды. В третьем случае (обращение к памяти для записи резуль­тата), получив команду 8086, также формирует адрес и организует цикл фиктивного чтения. Сопроцессор перехватывает и запоминает адрес результата, и начинает выполнять операцию. Завершив ее, 8087 запрашивает право управления шиной. Получив шину от МП 8086, сопроцессор записывает результат по сохраненному адресу.

Передача управления шиной осуществляется с помощью сигнала на линии процессора и сопроцессора, объединенных между собой. Когда 8087 необходимо управление шиной, он выдает единич­ный сигнал (низкий уровень) шириной в один тактовый импульс в МП 8086. Последний, приняв этот сигнал, завершает выполнение очередного цикла работы и в такте Т4 (или T1 следующего цикла) выдает по той же линии ответный сигнал, сообщая сопроцессору, что в наступающем такте линии адреса/данных будут переведены в третье состояние. Получив управление шиной, сопроцессор через такт переводит свои линии адреса/данных в активное состояние и выполняет необходимые действия по чтению или записи данных. После завершения обмена 8087 вторично генерирует сигнал на линии , информируя процессор, что локальная шина от­дается в его распоряжение. Таким образом, обмен шиной требует не менее трех тактов работы.

В процессе выполнения команды в блоке NEU сопроцессор активизирует выход BUSY (занято), который подключен к входу TEST МП 8086. Следовательно, с помощью команды WAIT можно легко засинхронизировать работу процессора и сопроцессора при выполнении некоторой программы. Это важно в двух случаях, во-первых, когда программа обращается к сопроцессору до завершения им об­работки предыдущей команды и, во-вторых, когда программе необходимо работать с результатом операции, выполняемой в 8087. В ассемблере MASM-86 предусмотрена автоматическая генерация команды WAIT перед каждой командой сопроцессора, требующей ресурсов блока обработки, что обеспечивает синхронизацию для первого случая. При возникновении особых ситуаций сопроцессор генерирует на выходе INT запрос на прерывание, который обычно подается на контроллер 8259А для обработки.

БИС 8087 работает с семью типами данных (см. табл. 2.7 и рис. 2.20): целые двоичные со знаком (слово, короткое, длинное), целые упакованные десятичные (18 десятичных разрядов и байт знака) и вещественные (короткие, длинные, временные). Сопро­цессор выполняет 69 команд, форматы которых приведены на рис. 3.3. Все команды в пяти старших разрядах первого байта содержат код 110112, позволяющий отличить их от команд МП 8086. Собственно операция для сопроцессора задается полями Ор1 и Ор2.

Так как адрес операнда в памяти формируется 8086 в цикле фиктивного чтения, то и поля mod и r/m имеют аналогичный смысл (см. рис. 2.12, кроме случая mod = 11). В части команд тип опе­ранда задается полем Fr (формат), однако операции над временными вещественными и длинными целыми инициализируются особыми инструкциями. Команды сопроцессора можно разбить на 6 групп:

передача данных - пересылка кодов между памятью и стеком ST (как с вершиной стека, так и любым из 8 его регистров), между регистрами стека;

арифметика — сложение, инкремент, вычитание, обратное вычитание, декремент, умножение, деление, обратное деление, квадрат­ный корень и другие;

логика — сравнение двух чисел (вершины стека с любым элементом или нулем) с установкой флагов состояния, проверка;

трансцендентные функции — вычисление тангенса, арктангенса, ;

формирование констант — загрузка в стек констант 0, 1, , log102, log210, log2е, loge2;

управление сопроцессором — загрузка и запись управляющего слова, загрузка и запись полного состояния сопроцессора, управ­ление режимами работы схемы (инициализация, прерывание, ошибки).

Программисту предоставляется возможность управления точностью округления результатов операций до одного из трех диапазонов представления мантиссы (24, 53, 64 разряда). При задании точности 24 или 53 разряда результат всех операций формируется в соответствии с требованиями стандарта IEEE. Само округление также может выполняться одним из четырех способов: «вверх», «вниз», по направлению к нулю, до ближайшего представимого чис­ла. Конкретный способ округления выбирается программно. Формат вещественного предусматривает представление + и . Эти зна­чения генерируются сопроцессором при наступлении особых слу­чаев, например, при делении на ноль или получении результата, превосходящего максимально представимое число. Пользователь может задать формирование только + в любой ситуации или  в зависимости от знака результата. В случае неопределенного операнда, например, при считывании из пустого регистра, сопро­цессор автоматически формирует специальный код результата Nan (см. с. 64), что позволяет легко зафиксировать использование неинициализированных переменных.

Сопроцессор обнаруживает шесть особых ситуаций, которые отображаются в слове состояния и являются причиной формирования запроса на прерывание. Устанавливая программно соответству­ющие разряды в управляющем слове, можно замаскирован преры­вание по каждой ситуации или их комбинации. При запрете воз­никшая особая ситуация обрабатывается аппаратно и генерируется предопределенный результат. БИС 8087 реагирует на следующие особые ситуации.

Недействительная операция — переполнение или антиперепол­нение стека, неопределенная ситуация (деление 0 на 0, вычитание бесконечностей) или использование Nan в качестве операнда. Если прерывание замаскировано, то в качестве результата генерируется Nan. Переполнение — результат операции слишком большой для заданного формата. Если этот случай замаскирован, 8087 генери­рует код , в соответствии с запрограммированной реакцией. Антипереполнение — слишком маленький ненулевой результат, не размещающийся в заданном формате. При маскировании 8087 вы­полняет денормализацию результата (сдвиг вправо мантиссы). Этот процесс называется «мягким» антипереполнением. Нулевой дели­тель — в операции деления делитель равен нулю, а делимое — нет. 8087 генерирует код , если этот случай замаскирован. Денормализованный операнд — один из операндов или результат денормализован. При маскировании продолжается нормальная ра­бота. Неточный результат — ситуация возникает, если результат неточно представим в выбранном формате (т. е. требует округления). Результат округляется по запрограммированному правилу и, если прерывание замаскировано, вычисления продолжаются.

Необходимо отметить, что будучи взведенным, флаг особой ситуации в слове состояния остается неизменным. Его можно сбро­сить лишь специальной командой перезаписи флаговых разрядов. Это дает возможность после выполнения длинной последовательно­сти команд, например, подпрограммы, проверить слово состояния и убедиться, что особые ситуации не возникали.

Работая на частоте 5 МГц, сопроцессор на два порядка сокращает время выполнения операций с плавающей запятой (табл. 3.1)

1.30, 3.13]. БИС 8087 обеспечивает точность вычислений и предоставляет пользователю ряд возможностей (управление округлением, управление знаком бесконечности, управление особыми ситуаци­ями), недостижимых в большинстве мини- и средних ЭВМ. Даль­нейшее развитие идеи математического сопроцессора получили в БИС 80287 (сопроцессор для МП 80286) и БИС 80387 (32-разряд­ный сопроцессор для МП 80386).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]