Дипломная (вкр): Функции и принципы работы математического сопроцессора

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Функции и принципы работы математического сопроцессора

Введение

Математический сопроцессор - сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.

Целью дипломной работы являются изучение темы:

- изучение функций и принципа работы математического сопроцессора.

Для достижения этой цели необходимо решить ряд задач, а именно:

изучить основные понятия математического сопроцессора;

изучить принцип работы математического сопроцессора;

изучить функции математического сопроцессора;

- рассчитать себестоимость рабочего места и экономическую эффективность;

- углубить знания, полученные в ходе теоретических и практических занятий.

Математический сопроцессор выполняют операции с плавающей запятой, которые потребовали бы больших затрат машинного времени от основного процессора. Выигрыш можно получить только при выполнении программ, написанных с расчетом на использование сопроцессора. Сопроцессоры выполняют такие сложные операции как точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма в 10-100 раз быстрее основного процессора. Точность результатов при этом значительно выше той, которая обеспечивается вычислителями, входящими в состав самих процессоров. Операции сложения, вычитания и умножения выполняются основным процессором и не передаются сопроцессору.

математический сопроцессор деление тригонометрический

1. Общая часть

.1 История математических сопроцессоров

С учетом того, что большинство современных приложений и игр требуют огромного количества вычислений именно над вещественными числами (числа с плавающей точкой), то общая производительность процессора зависит от того, насколько быстро он их обрабатывает. Для этих целей в процессоре существует специальный модуль, получивший название Floating-Point Unit (FPU) - модуль вычислений с плавающей точкой. В то же время производительность этого модуля зависит не только от рабочей частоты процессора, но и от его конструктивных особенностей.

В начале эволюции IBM-совместимых компьютеров вычисления над вещественными числами брал на себя математический сопроцессор, конструктивно выполненный отдельно от центрального процессора. Однако уже в 486-м процессоре Intel применила встроенный модуль вычислений с плавающей точкой, значительно увеличив при этом скорость работы процессора с вещественными числами. Впоследствии на встроенный FPU перешли и другие производители процессоров для персональных компьютеров.

При работе с вещественными числами существует тот же нюанс, что и в целочисленных операциях - команда не может быть выполнена за один такт ядра процессора. И если в 486-х процессорах для обработки целочисленных команд уже начал использоваться пятиступенчатый конвейер, то FPU был по-прежнему не конвейерного типа, т.е. следующая команда с плавающей точкой всегда должна была дожидаться выполнения предыдущей. Это существенно тормозило работу процессора с мультимедийными приложениями. А последние в то время уже начали стремительно набирать обороты в своих "запросах". Поэтому вполне естественно, что Intel, начиная с процессоров Pentium, стала применять конвейер не только в целочисленных, но и в вещественных операциях. Корпорация AMD, в свою очередь, пошла по несколько иному пути - вместо конвейеризации FPU она начала внедрять в свою продукцию технологию 3DNow, которая также была направлена на повышение производительности в операциях с вещественными числами. Эта технология столкнулась с множеством проблем в своей реализации. Думаю, многие помнят, как AMD K6-2, призванный конкурировать с Pentium II в целочисленных операциях, на процентов тридцать отставал от него в обработке вещественных чисел.

В Athlon'ах и последующих процессорах корпорация AMD перешла на конвейерный тип FPU. Более того, в новых процессорах AMD применила в модуле вычислений с плавающей точкой не только супер конвейеризацию, но и суперскалярность - в одном процессоре стало располагаться, грубо говоря, три модуля FPU, каждый из которых принимает участие в вычислениях с плавающей точкой. Другими словами, с выходом процессоров Athlon/Duron продукция AMD перестала уступать в скорости вычислений над вещественными числами своему конкуренту - корпорации Intel. А это сыграло очень существенную роль в расстановке сил этих извечных соперников на современном процессорном рынке.(Floating Point Unit) используется для ускорения и упрощения вычислений с плавающей точкой.

Сопроцессор (другое название FPU) ориентирован на математические вычисления - в нем отсутствуют операции с битами, зато расширен набор математических функций: тригонометрические, логарифм и т.д.

До некоторых моделей 80486 FPU исполнялся в виде отдельной микросхемы, устанавливаемой опционально. В некоторых 486 и во всех Pentium (и выше), FPU интегрирован в процессор, поэтому можно считать, что он присутствует в каждом более-менее современном компьютере. Начиная с Pentium Pro FPU имеет дополнительные команды, упрощающие сравнение чисел. В любом случае, если FPU недоступен, или не поддерживает какие-либо ф-ции, то возможна их программная эмуляция.

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

Первым математическим сопроцессором для персонального компьютера IBM стал i8087 производства Intell, который появился в 1980 году. Со временем, помимо чисто Intell-x сопроцессоров, появились сопроцессор и ряда других фирм. CYRIX предлагал один из самых быстрых сопроцессоров, основанных на классической архитектуре. Причем гарантировалась полная совместимость с сопроцессорами Intell. Производительность этой микросхемы несколько выше потому, что все критичные по времени выполнения операции реализованы в данной микросхеме с использованием жесткой логики (аппаратный умножитель, отдельное арифметико-логическое устройство для вычисления мантиссы и т.д.). Повышение производительности особенно заметно при вычислении квадратного корня или тригонометрических функций. Он еще и точнее Intell-го.была основана в 1981 году несколькими инженерами, покинувшими Intell. Выполнение простых операций с одинарной точностью на сопроцессоре Weitek происходит менее чем за 200 нс., тогда как сопроцессор, использующий классическую архитектуру, выполняет подобные операции за 1.5 с. Обращение к сопроцессору происходит как бы через ОЗУ. Таким образом, загрузив операнды в область памяти, соответствующей сопроцессору, следующей командой можно уже считывать результат. Применение сопроцессора Weitek имеет смысл только тогда, когда он поддерживается программным обеспечением. В связи с этим сопроцессор Weitek находит достаточно ограниченное применение.

Линейка математических сопроцессоров, выпускаемых компанией Intel для повышения скорости и точности выполнения операций с плавающей запятой. Сопроцессоры имели схожую архитектуру с сопроцессорами Intel 8087, но не были совместимы по разъемам и работали асинхронно с центральным процессором.

Использование математического сопроцессора значительно повышало скорость выполнения программ, особенно, содержащих большое количество операций с плавающей точкой.

Они предназначались для линейки процессоров 80286, также некоторые сопроцессоры использовались с процессорами Intel 80386. Более того, до 1987 года, пока не были выпущены математические сопроцессоры Intel 80387, это были единственные сопроцессоры, способные работать с процессорами Intel 80386. Они могли использоваться даже с процессорами Cyrix Cx486SLC, но после выхода сопроцессоров Intel 80387 его использование стало предпочтительнее, так как он выигрывал у Intel 80287 по всем показателям.

В зависимости от модификации, сопроцессоры работали на тактовой частоте - от 5 до 20 МГц. На рис.1 показан математический сопроцессор Intel 80387.

Рис.1 Математический сопроцессор Intel 80387

Линейка математических сопроцессоров, производимых компанией Intel с 1987 года. Сопроцессоры значительно расширяли возможности процессоров 80386 по обработке чисел с плавающей запятой, предоставляя более 50 новых инструкций, и соответствовали требованиям стандарта IEEE 754-1985.

Для процессоров 80386SX разрабатывалась своя серия модификаций сопроцессоров 80387 с индексом SX, так как процессоры 80386SX имели 16-разрядную внешнюю шину данных.

Сопроцессоры 80387 работали на той же частоте, что и процессоры 80386, и поддерживали тактовые частоты - 16, 20, 25 и 33 МГц. Эта линейка сопроцессоров была быстрее сопроцессоров 80287, и программы, разработанные для сопроцессоров 80287, были совместимы с новыми версиями сопроцессоров, так что они быстро вытеснили своих предшественников.

Компания Intel несколько запоздала с выпуском математического сопроцессора, поэтому часто с процессорами 80386 использовались математические сопроцессоры 80287.

Производительность такой связки была значительно меньше возможностей, достигнутых впоследствии связкой 386-ой процессор-387-ой сопроцессор, но на тот момент особого выбора не было. На рис.2 показан математический сопроцессор Intel80387.

Рис.2 Математический сопроцессор Intel80387

Линейка математических сопроцессоров, выпускаемых компанией Intel с сентября 1991 года. На рис.3 показан математический сопроцессор Intel 80487.

Рис.3 математический сопроцессор Intel80487

Использовались совместно с процессорами Intel 486 SX для ускорения обработки операций с вещественными числами.

На самом деле, сопроцессор 80487 был больше, чем сопроцессор. Он представлял собой полноценный процессор Intel 486 DX с несколько измененной распиновкой.

.2 Математический сопроцессор

Математический сопроцессор - сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля. На рис. 4 показан математической сопроцессор на материнской плате.

Рис.1.Математический сопроцессор

Несмотря на то, что практически все процессоры, начиная с 486-го, оснащены встроенным сопроцессором, их быстродействие может изменяться. Исторически сложилось так, что сопроцессоры производства Intel работают быстрее, чем сопроцессоры AMD и Cyrix, однако в последнее время ситуация начинает изменяться.

Модуль операций с плавающей запятой (или с плавающей точкой) - часть процессора для выполнения широкого спектра математических операций над вещественными числами.

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

Математические сопроцессоры называют ещё процессорами с плавающей запятой, потому что они особенно ярко проявляют свои возможности в этой области математики. Числа с плавающей запятой часто используются в научных расчетах и представляются, как правило, мантиссой и ординатой. Преимущество, получаемое от установки математического сопроцессора, зависит от того какие задачи решаются на компьютере. Согласно утверждению Intel сопроцессор может уменьшить время выполнения математических операций, таких как умножение, деление, возведение в степень на 80% и более. Скорость выполнения простых операций, таких как сложение и вычитание практически не уменьшается.

Конструктивно заложенные в микропроцессор сигналы, позволяют передавать работу сопроцессору и затем получать результаты обработки.

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

Микропроцессоры 8088, 80286, 80386 сконструированы так, что они позволяют использовать арифметические сопроцессоры 8087, 80287, 80387 фирмы "Intel"-соответственно. Более поздние модели микропроцессоров имеют встроенные сопроцессоры.

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

Выполняемая программа должна сама определять наличие сопроцессора и после этого использовать написанные для него инструкции; в противном случае сопроцессор только потребляет ток и ничего не делает. Большинство современных программ, рассчитанных на применение сопроцессоров, обнаруживают его присутствие и используют предоставляемые возможности. Наиболее эффективно сопроцессоры используются в программах со сложными математическими расчетами: в электронных таблицах, базах данных, статистических программах и системах автоматизированного проектирования. В то же время при работе с текстовыми редакторами сопроцессор совершенно не используется.

Простым "целочисленным" процессорам для работы с вещественными числами и математическими операциями требуются соответствующие процедуры поддержки и время для их выполнения. Модуль операций с плавающей запятой поддерживает работу с ними на уровне примитивов - загрузка, выгрузка вещественного числа (из специализированных регистров) или математическая операция над ними выполняется одной командой, за счёт этого достигается значительное ускорение таких операций. Внутри FPU числа хранятся в 80-битном формате с плавающей запятой, для записи же или чтения из памяти могут использоваться:

вещественные числа в трёх форматах: коротком (32 бита), длинном (64 бита) и расширенном (80 бит).

двоичные целые числа в трёх форматах: 16, 32 и 64 бита.

упакованные целые десятичные числа (BCD) числа - длина максимального числа составляет 18 упакованных десятичных цифр (72 бита).также поддерживает специальные численные значения:

деморализованные вещественные числа - числа, которые меньше минимального нормализованного числа. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10);

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

-нечисло <#"725387.files/image005.gif">

Рис. 5

Как правило, в качестве FPU использовался сопроцессор 68881 16 МГц или 68882 25 МГц. Практически любой современный процессор имеет встроенный сопроцессор.

Компания Weitek также выпускала математические сопроцессоры для платформ 68000 и MIPS.

1.7 Устройство FPU

Все процессоры Intel <#"725387.files/image006.gif">

Рис. 7 Отверстия выводов

Рис. 8. Панель для сопроцессора 80387SX

Вставить арифметический сопроцессор в панель. Обратить внимание, что первый вывод микросхемы сопроцессора должен вставляться в первый вывод панельки. Первый вывод на микросхеме сопроцессора и на панели может выделяться маленькой точкой, стрелкой, треугольником. Иногда первый вывод обозначается закругленным (спиленным) углом на корпусе сопроцессора и панели.

У микросхемы 80387DX только два ряда выводов. Вставить ее в центр панельки, так чтобы внешний ряд отверстий на панельке остался свободным. На рис.8 показан внешний вид сопроцессора, установленного в панель.


Неиспользованные выводы предназначены для установки других моделей сопроцессоров, которые имеют большее количество выводов, чем 80387DX. В качестве такого сопроцессора может быть использован, например, Weitek 3167.

Перед тем как вставлять сопроцессор в панель, нужно проверить все его выводы. Если они искривились, аккуратно выпрямите их.

Для большинства компьютеров, после установки сопроцессора необходимо соответствующим образом установить переключатели на системной плате и поменять конфигурацию, записанную в CMOS-памяти. Более подробную информацию можно узнать из документации на системную плату.

Источник: https://www.bibliofond.ru/detail.aspx?id=725387