ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 15

Часть III. Числовые операции
Глава 14. Введение в вычисления
----------------------------------------------------------------
В процессор i486(TM) встроен модуль для высокоскоростной
обработки числовых операций, который обладает широкими
вычислительными возможностями и непосредственно поддерживает
операции с плавающей точкой, расширенными целыми числами и
данными типа BCD (двоично-десятичный код). Модуль обработки
операций с плавающей точкой (FPU) процессора i486 предоставляет
возможность проводить сложные вычисления с большой точностью,
благодаря реализованному в нем в двоичной системе счисления
стандарту IEEE 854 для арифметических операций с плавающей
точкой. При обработке операций с плавающей точкой процессор i486
обладает удовлетворительной производительностью по сравнению с
теми большими микрокомпьютерами, которые совместимы по объектным
кодам с арифметическими сопроцессорами 8087, 80287, 387 (TM) DX
и 387 SX.
14.1 История
----------------------------------------------------------------
Модуль обработки операций с плавающей точкой процессора i486
полностью совместим со своими предшественниками, ранними
сопроцессорами Intel (R) 8087, 80287 и 387 DX. Программы,
созданные для использования на арифметических сопроцессорах
8087, 80287 и 387, должны идти и на процессоре i486 без
каких-либо изменений.
Сопроцессор 8087 был разработан для использования в системах с
процессорами семейства 8086. Процессор 8086 был первым
микропроцессором семейства, где было применено разделение
процессорного устройства на две части для того, чтобы выполнять
высокоскоростную обработку числовых операций. Сопроцессор 8087
для этого семейства процессоров реализовывал полную поддержку
числовых операций в соответствии с ранними предложениями
стандарта IEEE 754 для двоичных арифметических операций с
плавающей точкой.
С появлением сопроцессора 80287 стали возможны ускоренные
арифметические вычисления для быстродействующих многозадачных и
многопользовательских систем на основе процессора 80286.
Использование арифметического сопроцессора для многозадачной
работы позволило задействовать полную защиту управления памятью
процессора 80286 и другие защитные возможности.
Арифметические сопроцессоры 387 DX и SX стали третьим поколением
числовых процессоров фирмы Intel. Они реализуют последний
стандарт IEEE 754, куда добавлены новые тригонометрические
функции, с использованием нового дизайна и процесса CHMOS-III
для того, чтобы позволить работать на более высокой тактовой
частоте при требовании меньшего количества тактов на выполнение
одной команды. Вместе, арифметический сопроцессор 387 с
дополнительными инструкциями и усовершенствованным стандартом
дали довольно много удобств и достаточную надежность для
прикладных программ, которым необходима высокая скорость и
большой объем памяти при 32-х разрядных операциях
микропроцессора 386 (TM).
Арифметический модуль процессора i486 является по существу
встроенным в микросхему эквивалентом сопроцессора 387 DX,
соответствующим как стандарту IEEE 754, так и более новому,
обобщенному стандарту IEEE 854. Реализация арифметического
устройства в одной микросхеме с процессором имеет результатом
значительное повышение эффективности интенсивных математических
вычислений. Рисунок 14-1 иллюстрирует относительную
производительность систем с ЦПУ 8086, работающем на частоте 5МГц
с арифметическим сопроцессором 8087, с ЦПУ 80286, работающем на
частоте 8МГц с арифметическим сопроцессором 80287, с ЦПУ 386 DX,
работающем на частоте 20МГц с арифметическим сопроцессором 387
DX, и систем с процессором i486, работающем на частоте 33МГц,
при выполнении вычислительных программ.
14.2 Производительность
----------------------------------------------------------------
В Таблице 14-1 приведены сравнительные характеристики по времени
выполнения процессором i486 различных математических команд в
противовес операциям, выполняемым на математическом сопроцессоре
387 DX, работающем на частоте 16МГц. Как показано в таблице,
производительность процессора i486, работающего на частоте
33МГц, примерно в 5 раз выше производительности математического
сопроцессора 387 DX, работающего на частоте 16МГц. Процессор
i486 на 33 МГц умножает 32-х разрядные и 64-х разрядные числа с
плавающей точкой примерно за 0.33 и 0.42 микросекунды
соответственно. Но, безусловно, действительная эффективность
процессора в данной системе зависит от характеристик конкретного
программного обеспечения.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                                                               і
і   ОТНОСИТЕЛЬНАЯ                                               і
і   ПРОИЗВОДИТЕЛЬНОСТЬ                                          і
і                                     i486(TM) ЦПУ(33МГц) *     і
і        80Дґ                                                   і
і           і                                                   і
і        70Дґ                                                   і
і           і                                                   і
і        60Дґ                                                   і
і           і                                                   і
і        50Дґ                                                   і
і           і                                                   і
і        40Дґ                                                   і
і           і                                                   і
і        30Дґ                                                   і
і           і             386(TM)DX ЦПУ/387(TM)DX FPU(20МГц)    і
і        20Дґ                                 *                 і
і           і                 80286/80287(8МГц)                 і
і        10Дґ8086/8087(5МГц)                                    і
і           і     .           *                                 і
і           АДДДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДВД    і
і                                                               і
і               1980        1983            1987        1990    і
і                                                               і
і                                                     240486/88 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
   Рисунок 14-1. Эволюция и Производительность Арифметических
                 Процессоров
   Таблица 14-1. Сравнение Скорости Математических Вычислений
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДї
і                                             і                 і
і                                             і Приблизительное і
і                                             і    Сравнение    і
і       Операции с  плавающей  точкой         і Производительн.:і
і                                             і 33МГц i486(TM) кі
і                                             і 16МГц 386(TM)DX і
і                                             і    /387(TM)DX   і
і                                             і                 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДґ
і                                             і                 і
і FADD   ST,ST(i)             Сложение        і       4.2       і
і FDIV   дв.слово             Деление         і       2.0       і
і FYL2X  стек(0),(1) предпол. Логарифм        і       2.5       і
і FPATAN стек(0) предпол.     Арктангенс      і       2.2       і
і F2XMI  стек(0) предпол.     Степень         і       2.2       і
і FLD    ST(0),ST(i)          Передача данных і       5.5       і
і                                             і                 і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДЩ
Модуль обработки целочисленных операций (IU) и Модуль
обработки операций с плавающей точкой (FPU) координируют свою
активность в соответствии с программным обеспечением. Более
того, встроенный координатор позволяет устройству обработки
целочисленных операций работать с другими командами в то время,
когда модуль обработки операций с плавающей точкой выполняет
математические операции. Программы могут использовать эти
параллельные вычисления для дальнейшего повышения
производительности систем и во всех других отношениях.
14.3 Простота использования
----------------------------------------------------------------
Модуль обработки операций с плавающей точкой процессора i486
предоставляет не только быструю обработку данных для
вычислительных задач, но дает также в руки обычного пользователя
возможности выполнять функциональные и сложные, точные численные
расчеты. Эти возможности доступны через большинство языков
высокого уровня, которые имеют свои компиляторы для процессора
i486.
Подобно сопроцессорам 8087, 80287 и 387 DX, сопроцессор i486 как
раз разработан для того, чтобы получать стабильные и точные
результаты при программировании с использованием алгоритмов типа
"карандаш и бумага". Стандарт IEEE 754 посвятил специальное
издание тому, чтобы показать фундаментальную важность
представления вычислений как простыми, так и надежными.
Например, большинство компьютеров могут выдать переполнение,
когда два вещественных числа с одинарной точностью
перемножаются, а затем делятся на третее, даже если конечный
результат является нормальным 32-разрядным числом. Сопроцессор
i486 в этом случае выдает корректно округленный результат.
Другие типичные примеры нежелательного поведения машины в точных
расчетах случаются при вычислении выражения (1+i)**(n) или при
нахождении корня квадратного уравнения:
         -b ё кв.корень(b**2-4ac)
         ДДДДДДДДДДДДДДДДДДДДДДДД
                   2a
Если a не равно 0, то формула численно нестабильна, когда корни
очень близки или когда их величины намного отличаются. Формула
также уязвима на переполнение, когда коэффициенты a, b и c или
одновременно очень большие, либо очень маленькие. Когда
вещественные коэффициенты одинарной точности (по 4 байта)
задаются как данные и формула оценена нормальным для
сопроцессора i486 путем, сохраняя все промежуточные результаты в
собственном стеке, то сопроцессор вычисляет корни одинарной
точности без погрешности. Это происходит из-за того, что
сопроцессор оценивает все эти выражения по умолчанию и без
каких-либо усилий со стороны программиста с такой высокой
точностью и в таком большом диапазоне, что устраняет все угрозы
нарушения целостности вычислений.
Если были бы данные и результаты с двойной точностью, то была бы
использована лучшая формула, и оценка этой формулы процессором
i486 давала бы большую целостность вычислений.
Для большинства машин эти алгоритмы не дают действительно
корректных результатов (и не указывают на некорректную выдачу).
Получение корректных результатов на обыкновенных машинах при
любых условиях обычно требует особых численных приемов, как
правило, неизвестных большинству программистов. Программисты,
занимающиеся разработкой общих прикладных программ и
использующие свои алгоритмы, смогут делать гораздо более
надежные программы, используя процессор i486. Этот простой факт
служит сокращению программных затрат, требуемых на развитие и
повышение надежности и точности численных расчетов.
Кроме традиционной поддержки числовых расчетов для научных
разработок процессор i486 имеет встроенные возможности для
коммерческих вычислений. Он может обрабатывать десятичные числа
из 18 и более цифр без ошибки округления, производя точную
арифметику над целыми такой величины как 2**(64) или 10**(18).
Точная арифметика особенно важна при банковских операциях, где
ошибка округления может привести к финансовым потерям и тяжбам,
которые не легко уладить.
Процессор i486 содержит некоторый набор общих вычислительных
приемов, которые могут быть полезны потенциальным пользователям.
Эти возможности включают в себя прямое округление,
последовательное отрицательное переполнение и программируемую
обработку исключений.
Возможность автоматической обработки исключений допускает
довольно высокую степень гибкости в вычислительных прикладных
программах, не обременяя при этом программиста. При обработке
числовых операций процессор i486 автоматически обнаруживает
условия, которые могут привести к исключениям, которые в свою
очередь могут повредить данные при вычислении (например, X / 0
или кв.корень(X), при X < 0). По умолчанию, логика обработки
исключений, встроенная в микросхему, управляет этими
исключениями так, что производит разумный результат, а
исключительная ситуация обрабатывается без программного
прерывания. Кроме того, процессор может вызывать программный
обработчик исключений, чтобы получить какие-либо специальные
результаты при обнаружении различных типов исключений.
14.4 Применение
----------------------------------------------------------------
Многосторонность и эффективность процессора i486 делают его
незаменимым для целого ряда численных расчетов. Изходя из этого,
вычисления, которые демонстрируют любую из следующих
характеристик, могут быть выгодно реализованы на процессоре
i486:
- Числовые данные, изменяющиеся в широком диапазоне значений или
  включающие неинтегрируемые значения.
- Алгоритмы, производящие очень большие или очень маленькие
  промежуточные результаты.
- Вычисления должны быть очень точные; то есть должно
  поддерживаться большое число значащих цифр.
- Требования по производительности превосходят возможности
  традиционных микропроцессоров.
- Должны быть получены точные и надежные результаты, используя
  программистский персонал, не владеющий приемами обработки
  числовых операций.
Обратите также внимание на то, что процессор i486 может
сократить финансовые затраты на разработку программного
обеспечения и повысить эффективность системы, которая использует
не только действительные числа, но и оперирует также над
двоичными и десятичными целыми значениями высокой точности.
Ниже приведены несколько примеров того, как процессор i486 может
быть использован в специфических вычислительных операциях. Во
многих случаях, эти типы систем были уже реализованы на
миникомпьютерах или малых больших машинах.
- Обработка данных для бизнеса - Способность устройства
  обработки операций с плавающей точкой процессора i486
  принимать десятичные операнды и выдавать точный десятичный
  результат из 18 и более цифр намного упрощает программирование
  в области банковских операций. Финансовые расчеты, оперирующие
  мощными функциями, могут использовать преимущества процессора
  i486 в вычислении степеней и логарифмов. Многие прикладные
  пакеты для бизнеса могут выиграть из-за скорости и точности
  устройства обработки операций с плавающей точкой процессора
  i486.
- Моделирование - Большой объем памяти (32 бита) и хорошая
  скорость процессора i486 делают его незаменимым для разработки
  больших задач с математическим моделированием, которые до сих
  пор можно было выполнить только на дорогостоящих мини- и
  больших компьютерах. Например, моделирование комплексной
  электронной схемы, используя систему SPICE, можно выполнить и
  на процессоре i486. Моделирование механических систем,
  используя финитный элементный анализ, может покрыть больше
  элементов, в результате чего будет проводиться более детальный
  анализ или моделирование более больших систем.
- Графические преобразования - Процессор i486 может быть
  использован в компьютерной графике, так как модуль
  обработки операций с плавающей точкой вычисляет большинство
  функций одновременно с работой устройства обработки
  целочисленных операций: эти функции включают в себя повороты,
  масштабирование и интерполяцию. Если еще использовать
  графический контроллер 82786 (82786 Graphics Display
  Controller) для высокоскоростной графики и управления окнами,
  можно разбить экран терминала на несколько частей.
- Управление процессом - Модуль обработки операций с
  плавающей точкой процессора i486 автоматически решает задачи
  динамического программирования, а его расширенная точность
  позволяет управлять функциями и настраивать их на лучшую
  точность и производительность. Использование процессора i486
  для реализации алгоритмов управления позволяет повысить
  надежность и безопасность, при этом скорости процессора вполне
  достаточно для работы в реальном времени.
- Компьютерное числовое управление - Процессор i486 может с
  большой точностью и в реальном времени менять позиции головок
  инструмента какого-либо станка. При этом осевое
  позиционирование может быть выполнено более точно из-за
  тригонометрических функций, предоставляемых аппаратно
  модулем обработки операций с плавающей точкой.
- Робототехника - Процессор i486 идеально подходит для
  шести-осного позиционирования печатных плат, спарок малых
  размеров при средних технических требованиях, оставляя за
  собой при этом мощные вычислительные функции.
- Навигация - С помощью процессора i486 могут быть реализованы
  небольшие, легкие и точные инерциальные системы наведения.
  Встроенные тригонометрические функции могут ускорить и
  упростить вычисление положения, основываясь на данных пеленга.
- Обработка данных - С помощью процессора i486 можно
  сканировать, масштабировать и сокращать большие объемы
  собранной информации, посредством снижения требуемой памяти и
  времени, необходимых на проведение анализа данных.
Приведенные примеры ориентированы на традиционные вычисления.
Кроме этого, существует множество других типов систем, которые
не являются для конечного пользователя вычислительными, но также
могут использовать все преимущества процессора i486 для
численных расчетов. Талантливый разработчик систем имеет
возможность познакомится с этими преимуществами, изучив работу
микропроцессора. Большинство прикладных программ можно
рассматривать как основанные на вычислениях, если вычислительной
базы достаточно для поддержки этой системы (например, генератор
шрифтов для лазерного принтера). В аналогичном смысле можно
привести сотни успешных программных продуктов, которые были
созданы для "забытых" микропроцессоров, даже если эти продукты и
не нашли никакого применения на компьютерах.
14.5 Программный интерфейс
----------------------------------------------------------------
Процессор i486 имеет некоторый класс команд, известных как
ESCAPE-команды (эскейп-команды) и имеющих общий формат. Эти ESC-
команды являются числовыми операциями для устройства обработки
операций с плавающей точкой и, кроме того, частью единого
интегрированного множества команд.
Численные расчеты в процессоре i486 проводятся на регистровом
стеке для чисел с плавающей точкой. Программист может
использовать эти восемь 80-разрядных регистров или как набор
фиксированных регистров с операциями над явно-определенными
регистрами, или как классический стек с операциями над одним или
двумя верхними элементами стека.
Во внутреннем представлении модуль обработки операций с
плавающей точкой процессора i486 хранит все числа в едином
80-битовом расширенном формате. Операнды, которые могут быть
представлены в памяти как 16-, 32- и 64-разрядные целые, 32-, 64-
или 80-разрядные числа с плавающей точкой, или упакованные числа
из 18-ти цифр типа BCD, автоматически переводятся в расширенный
формат, как только они загружаются в регистры устройства
обработки операций с плавающей точкой. Результаты вычислений в
свою очередь переводятся обратно в один из этих форматов данных,
которые были введены в регистры, и сохраняются в памяти.
В Таблице 14-2 представлен каждый из семи числовых типов данных,
поддерживаемых процессором i486, и дан формат данных для каждого
типа. В таблице также приведены примерные диапазоны
нормализованных значений, которые могут быть представлены каждым
типом. По требованиям стандарта IEEE 854 каждый вещественный тип
данных поддерживает кроме того и денормализованные значения.
Денормализованные значения обсуждаются в Главе 16.
Все операнды хранятся в памяти с наименее значащими цифрами,
начинающимися от начального (низшего) адреса памяти. Числовые
операции обращаются и хранят операнды, используя только этот
начальный адрес. Для максимального повышения производительности
системы, каждый операнд в памяти должен начинаться с адреса,
кратного наименьшей степени двух, которая больше чем длина
операнда (в байтах).
В Таблице 14-3 приведены числовые операции по классам. Для того,
чтобы использовать вычислительные возможности процессора i486,
не нужны никакие специальные программные средства, так как все
числовые операции и типы данных непосредственно поддерживаются
Ассемблером ASM386/486, языками высокого уровня фирмы Intel, а
также ассемблерами и компиляторами, выпускаемыми многими
независимыми производителями программного обеспечения. Процедуры
для расчетов на процессоре i486 могут быть написаны на
Ассемблере ASM386/486 или на любых других языках высокого уровня
фмрмы Intel:
PL/M - 386/486 (ПиЭль/Эм)
C - 386/486 (Си)
FORTRAN - 386/486 (Фортран)
ADA - 386/486 (Ада)
               Таблица 14-2. Числовые Типы Данных
ЪДДДДДДДДДДДДДДДДДВДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                 і      і        і                             і
і   Тип  Данных   і Биты іЗначащиеі       Приближенный          і
і                 і      і Цифры  і      Нормализованный        і
і                 і      і(десят.)і    Диапазон (Десятичные)    і
і                 і      і        і                             і
ГДДДДДДДДДДДДДДДДДЕДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                 і      і        і                             і
і Целое           і      і        і                             і
і слово           і  16  і   4    і  -32.768 <= x <= +32.767    і
і Короткое        і      і        і         9             18    і
і целое           і  32  і   9    і    -2x10 <= x <= +2x10      і
і Длинное         і      і        і        18             18    і
і целое           і  64  і   18   і   -9x10  <= x <= +9x10      і
і Упакованное     і      і        і                             і
і десятичное      і  80  і   18   і -99..99<=x<=+99..99(18 цифр)і
і Простое         і      і        і       -38               38  і
і вещественное    і  32  і   7    і 1.18x10  < іxі < 3.40x10    і
і Двойное         і      і        і       -308               308і
і вещественное    і  64  і 15-16  і 2.23x10   < іxі < 1.79x10   і
і Расширенное     і      і        і       -4932             4932і
і вещественное(*) і  80  і   19   і 3.37x10   < іxі< 1.18x10    і
і                 і      і        і                             і
АДДДДДДДДДДДДДДДДДБДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
(*) эквивалентно двойному расширенному формату стандарта IEEE 854
            Таблица 14-3. Основные Числовые Операции
ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і                 і                                             і
і      Класс      і             Типы   Операций                 і
і                 і                                             і
ГДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і                 і                                             і
і Передача Данных і Загрузка (все типы данных), Хранение (все   і
і                 і типы данных), Обмен                         і
і                 і                                             і
і Арифметика      і Сложение, Вычитание, Умножение, Деление,    і
і                 і Инверсное Вычитание, Инверсное Деление,     і
і                 і Извлечение Квадратного Корня, Масштабирова- і
і                 і ние, Выделение, Остаток от Деления, Целая   і
і                 і Часть, Смена Знака, Модуль                  і
і                 і                                             і
і Сравнение       і Сравнение, Тестирование, Проверка           і
і                 і                                             і
і Трансцендентные і Тангенс, Арктангенс, Синус, Косинус, Синус иі
і                 і Косинус, 2**(X)-1, Y*Log(X), Y*Log(X+1)     і
і                 і                         2         2         і
і                 і                                             і
і Константы       і 0, 1, Пи, Log  2, Log 2, Log 10, Log e      і
і                 і              10      e      2       2       і
і                 і                                             і
і Управление      і Загрузка Управляющего Слова, Сохранение     і
і процессором     і Управляющего Слова, Сохранение Слова        і
і                 і Состояния, Загрузка Состояния, Сохранение   і
і                 і Состояния, Запоминание, Восстановление,     і
і                 і Сброс Исключений, Инициализация             і
і                 і                                             і
АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Кроме того, все средства разработки программных продуктов для
процессоров 8086/8087, 80286/80287 и 386 DX ЦПУ/387 DX FPU могут
быть использованы также и для разработки вычислительного
программного обеспечения для процессора i486.
Любой из упомянутых выше языков высокого уровня позволяет
программисту пользоваться вычислительными возможностями и
скоростью вычислений процессора i486 без каких-либо требований
по пониманию его архитектуры. Такие архитектурные соглашения как
параллельность и синхронизация отрабатываются автоматически
этими языками высокого уровня. Для программиста, который
работает на ассемблере ASM386/486, в последующих разделах этого
руководства обсуждаются специальные правила программирования.


Яндекс цитирования