Основные понятия математического сопроцессора. Изучение принципа работы и функций устройства: точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма. Расчет себестоимости и экономической эффективности.
Аннотация к работе
Математический сопроцессор - сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля. Выполнение простых операций с одинарной точностью на сопроцессоре Weitek происходит менее чем за 200 нс., тогда как сопроцессор, использующий классическую архитектуру, выполняет подобные операции за 1.5 с. Сопроцессоры имели схожую архитектуру с сопроцессорами Intel 8087, но не были совместимы по разъемам и работали асинхронно с центральным процессором. Математический сопроцессор - сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля. Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86 сопроцессорах, реализуется следующим образом: - сопроцессор подключен к шинам центрального процессора, а также имеет несколько специальных сигналов для синхронизации процессоров между собой;В данной дипломной работе, была изучена тема "Функции и принцип работы математических сопроцессоров", посредствам решения конкретных задач, а именно были закреплены знания: - общие понятия о математических сопроцессоров; Математический сопроцессор выполняет, такие сложные операции как точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма в 10-100 раз быстрее основного процессора.
Введение
Математический сопроцессор - сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.
Целью дипломной работы являются изучение темы: - изучение функций и принципа работы математического сопроцессора.
Для достижения этой цели необходимо решить ряд задач, а именно: - изучить основные понятия математического сопроцессора;
- изучить принцип работы математического сопроцессора;
- изучить функции математического сопроцессора;
- рассчитать себестоимость рабочего места и экономическую эффективность;
- углубить знания, полученные в ходе теоретических и практических занятий.
Математический сопроцессор выполняют операции с плавающей запятой, которые потребовали бы больших затрат машинного времени от основного процессора. Выигрыш можно получить только при выполнении программ, написанных с расчетом на использование сопроцессора. Сопроцессоры выполняют такие сложные операции как точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма в 10-100 раз быстрее основного процессора. Точность результатов при этом значительно выше той, которая обеспечивается вычислителями, входящими в состав самих процессоров. Операции сложения, вычитания и умножения выполняются основным процессором и не передаются сопроцессору. математический сопроцессор деление тригонометрический
1. Общая часть
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. А это сыграло очень существенную роль в расстановке сил этих извечных соперников на современном процессорном рынке.
FPU (Floating Point Unit) используется для ускорения и упрощения вычислений с плавающей точкой.
Сопроцессор (другое название FPU) ориентирован на математические вычисления - в нем отсутствуют операции с битами, зато расширен набор математических функций: тригонометрические, логарифм и т.д.
До некоторых моделей 80486 FPU исполнялся в виде отдельной микросхемы, устанавливаемой опционально. В некоторых 486 и во всех Pentium (и выше), FPU интегрирован в процессор, поэтому можно считать, что он присутствует в каждом более-менее современном компьютере. Начиная с Pentium Pro FPU имеет дополнительные команды, упрощающие сравнение чисел. В любом случае, если FPU недоступен, или не поддерживает какие-либо ф-ции, то возможна их программная эмуляция.
Несмотря на объемность данной главы, использовать FPU очень просто, что видно из примера. Но нужно понимать особенности работы сопроцессора, чтобы избежать теоретических ошибок.
Первым математическим сопроцессором для персонального компьютера IBM стал i8087 производства Intell, который появился в 1980 году. Со временем, помимо чисто Intell-x сопроцессоров, появились сопроцессор и ряда других фирм. CYRIX предлагал один из самых быстрых сопроцессоров, основанных на классической архитектуре. Причем гарантировалась полная совместимость с сопроцессорами Intell. Производительность этой микросхемы несколько выше потому, что все критичные по времени выполнения операции реализованы в данной микросхеме с использованием жесткой логики (аппаратный умножитель, отдельное арифметико-логическое устройство для вычисления мантиссы и т.д.). Повышение производительности особенно заметно при вычислении квадратного корня или тригонометрических функций. Он еще и точнее Intell-го.
Weitek была основана в 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 с несколько измененной распиновкой.
1.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 бита).
FPU также поддерживает специальные численные значения: - деморализованные вещественные числа - числа, которые меньше минимального нормализованного числа. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10);
- бесконечность (положительная и отрицательная), возникает при делении на нуль ненулевого значения, а также при переполнениях. При формированиитакого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10).
-нечисло , различают два вида нечисел: -сигнальные нечисла. Сопроцессор реагирует на появление этого числа. В регистре стека возбуждением исключения недействительной операции. Сопроцессор не формирует сигнальных чисел. Программисты формируют такие числа преднамеренно, чтобы возбудить в нужной ситуации исключение.
- спокойные (тихие) нечисла. Сопроцессор может формировать спокойные нечисла в качестве реакции на определенные исключения, например число вещественной неопределенности.
- нуль - в формате с плавающей запятой, нуль также считается специальным значением. неопределенности и неподдерживаемые форматы. Существует много битовых наборов, которые можно представить в расширенном формате вещественного числа. Для большинства их значений формируется исключение недействительной операции.
Специальный процессор, который настроен на выполнение математических операций и реализует их во много раз быстрее, чем центральный процессор. Таким образом, была получена возможность наращивать производительность центрального процессора за счет специального модуля - математического сопроцессора. Не в пример центральному процессору, математический сопроцессор не держит под управлением основную массу цепей компьютера. Наоборот, вся деятельность математического сопроцессора определяется центральным процессором, который может посылать математическому сопроцессору команды на выполнение программ и формирование результатов. В обычном режиме центральный процессор выполняет все функции компьютера. И лишь, когда встречается задача, с которой лучше справится математический сопроцессор, ему выдаются данные и команды, а центральный процессор ожидает результаты. К таким задачам относятся, например, математические операции между вещественными числами (операции между числами с плавающей запятой), где числа представлены мантиссой и ординатой (десятичная степень числа, определяющая положение десятичной запятой). Если раньше, в компьютерах первых поколений (i80386, i80486) модуль математического сопроцессора устанавливался на материнскую плату в виде отдельного чипа, то в современных компьютерах использование математического сопроцессора, как отдельного чипа, не требуется, поскольку он уже встроен в центральный процессор. Преимущества, которые вы получаете от использования математического сопроцессора, зависят от того, какие задачи решаются на персональном компьютере.
Преимущества, которые получаются от установки математического сопроцессора, зависят от того, какие задачи решаются на вашем компьютере. Согласно Intel сопроцессор может уменьшить время выполнения математических операций, таких, как умножение, деление и возведение в степень на 80% и более. Скорость выполнения простых операций, таких, как сложение и вычитание, может быть совсем не уменьшена.
1.3 Математический сопроцессор х87
Математический сопроцессор x87 - это специальный набор инструкций для работы с математическими вычислениями, являющийся подмножеством архитектуры процессоров x86. Такое название он получил, потому что первоначальные отдельные математические сопроцессорные чипы имели названия, заканчивающиеся на 87. Как и другие расширения базового набора инструкций процессора, эти инструкции не являются строго необходимыми для построения рабочей программы, но будучи аппаратно реализованными, общие математические задачи они позволяют выполнять гораздо быстрее. Например, в наборе инструкции x87 присутствуют команды для расчета значений синуса или косинуса.
1.4 Математические сопроцессоры Intel семейства x86
Для математических сопроцессоров семейства x86 с 8086,8088 по 386, модуль операций с плавающей запятой был выделен в отдельную микросхему, называемую математическим сопроцессором.
Математический сопроцессор не является полноценным процессором, так как не умеет делать многих необходимых для этого операций (например, не умеет работать с программой и вычислять адреса памяти), являясь всего лишь придатком центрального процессора. Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86 сопроцессорах, реализуется следующим образом: - сопроцессор подключен к шинам центрального процессора, а также имеет несколько специальных сигналов для синхронизации процессоров между собой;
- часть командных кодов центрального процессора зарезервирована для сопроцессора, он следит за потоком команд, игнорируя другие команды. Центральный процессор, наоборот, игнорирует команды сопроцессора, занимаясь только вычислением адреса в памяти, если команда предполагает к ней обращение. Центральный процессор делает цикл фиктивного считывания, позволяя сопроцессору считать адрес с адресной шины. Если сопроцессору необходимо дополнительное обращение к памяти (для чтения или записи результатов), он выполняет его через захват шины;
- после получения команды и необходимых данных сопроцессор начинает ее выполнение. Пока сопроцессор выполняет команду, центральный процессор выполняет программу дальше, параллельно с вычислениями сопроцессора. Если следующая команда также является командой сопроцессора, процессор останавливается и ожидает завершения выполнения сопроцессором предыдущей команды.
Также существует специальная команда ожидания (FWAIT), принудительно останавливающая процессор до завершения вычислений (если для продолжения программы необходимы их результаты). В настоящее время команда используется лишь для обработки исключений при работе с плавающей точкой, работа процессора и сопроцессора синхронизируется прозрачно для программиста.
Начиная, с процессора Intel486DX модуль операций с плавающей запятой интегрирован в центральный процессор и назван FPU(блок, производящий операции с плавающей точкой (часто говорят запятой) или математический сопроцессор.) В линейке Intel486SXМОДУЛЬ FPUОТКЛЮЧАЛСЯ (поначалу в эту линейку попадали процессоры с бракованный FPU)
Для процессоров Intel486SX также выпускался сопроцессор Intel487SXНО, фактически, он являлся процессором Intel486DX и при его установке процессор Intel486SX отключался.
Несмотря на интеграцию, FPU в процессорах i486 представляет собой неизменный сопроцессор, выполненный на том же кристалле, более того, схема FPU i486 полностью идентична сопроцессору предыдущего поколения 387DX вплоть до тактовой частоты (в два раза меньшей, чем частота центрального процессора).
Настоящая интеграция FPU c центральным процессором началась только в процессорах Pentium модели MMX.
1.5 Математические сопроцессоры x86 от сторонних производителей
Широкое распространение в соответствующий период получили сопроцессоры для платформы x86, выпускавшиеся компанией Weitek - ею были выпущены 1167, 2167 в виде набора микросхем и микросхемы 3167, 4167, для процессоров 8086 , 80286 , 80386 , 80486 , соответственно. По сравнению с сопроцессорами от Intel они обеспечивали в 2-3 раза большую производительность, но обладали несовместимым программным интерфейсом, реализованным через технологию memory-mapping. Она сводилась к тому, что основной процессор должен был записывать информацию в те или иные области памяти, контролируемые Weitek-овским сопроцессором (собственно, оперативной памяти там, конечно не было). Конкретный адрес, куда производилась запись, интерпретировался в качестве той или иной команды. Несмотря на несовместимость, сопроцессоры от Weitek были широко поддержаны как разработчиками программного обеспечения, так и производителями материнских плат, предусматривавших на них гнезда для установки такой микросхемы.
Ряд других компаний также выпускал различные несовместимые математические сопроцессоры, реализуя интерфейс к ним через порты ввода-вывода или прерывания BIOS(базовая система ввода и вывода), но они не получили такого широкого распространения.
Компании-производители клонов выпускали совместимые с 80287 80387 сопроцессоры, работавшие быстрее аналогичных интеловских. Среди этих компаний можно упомянуть Cyrix , AMD , Chips&Technologies (C&T). Иногда система команд этих сопроцессоров расширялась несколькими несовместимыми, например, аналог 80287 от C&T содержал команды для работы с вектором из четырех значений с плавающей точкой. Серьезной поддержки от производителей программного обеспечения эти расширенные команды не получили.
Процессоры EMC87 от фирмы Cyrix могли работать как в режиме программной совместимости с Intel 80387, так и в собственном несовместимом режиме программирования. Для них обеспечивалась аппаратная совместимость с разъемом 80387-го сопроцессора.
В СССР выпускалась микросхема (КМ)1810ВМ87, которая являлась аналогом 8087
1.6 Другие платформы
Аналогично,материнские платы ПК, построенных на процессорах Motorola , до разработки этой фирмой процессора MC68040 (в который сопроцессор был встроен) содержали математический сопроцессор, который предоставлен на рис. 5.
Рис. 5
Как правило, в качестве FPU использовался сопроцессор 68881 16 МГЦ или 68882 25 МГЦ. Практически любой современный процессор имеет встроенный сопроцессор.
Компания Weitek также выпускала математические сопроцессоры для платформ 68000 и MIPS.
1.7 Устройство FPU
Все процессоры Intel и AMD , начиная с486DX , имеют встроенный математический сопроцессор , и в отдельном сопроцессоре не нуждаются (за исключением Intel486SX ). Тем не менее, термин x87 все еще используется для выделения той части инструкций процессора, которая занимается вычислениями с использованием плавающей запятой; компиляторы могут использовать эти инструкции для производства кода, который работает быстрее, нежели тот, что использует вызовы к библиотекам для выполнения операций с плавающей запятой.
Инструкции сопроцессора x87 совместимы со стандартом IEEE-754 .
Однако сопроцессоры x87 выполняют операции не в строгом соответствии с форматами IEEE-754 , изза использования более широких регистров. Поэтому последовательность арифметических операций может выполняться несколько по-разному на наборех87 и на процессоре, строго следующем формату IEEE-754 .
Сопроцессор x87 организует свои регистры не как массив, как большинство других архитектур, а как регистровый стек, работающий по принципу обратной польской записи . Это означает, что в один момент времени, только два верхних регистра доступны для проведения операций, а доступ к другим регистрам требует манипуляций со стеком. Хотя такая организация получается и удобной для программистов, она делает трудоемким построение эффективного кода x87 для компиляторов.
Модуль операций с плавающей запятой представляет собой стековый калькулятор, работающий по принципу обратной польской записи . Перед операцией аргументы помещаются в LIFO -стек , при выполнении операции необходимое количество аргументов снимается со стека. Результат операции помещается в стек.
1.8 Классификация команд математического сопроцессора
Классификация команд математического сопроцессора: - команды передачи данных;
Математический сопроцессор 80287 или 80387 добавляют ктипам данных и командам процессора 80386 свои команды, приведенные табл.1. В большинстве прикладных задач входные величины иполучаемые результаты хранятся в виде типов целых, действительных или упакованных десятичных, а для промежуточных величин имеется тип данных промежуточное действительное, расширенный диапазон и точность которого в сложных вычисленияхсводят к минимуму ошибки округления, переполнения и исчезновения порядка. В соответствии с такой моделью математическийсопроцессор производит большую часть вычислений над промежуточными величинами, хранящимися в его регистрах. При загрузке любого типа данных в регистровый стек, этот тип автоматическименяется на промежуточный действительный. Промежуточная действительная величина в регистре, в свою очередь, может быть переведена в любой другой тип с помощью команды запоминание
Таблица 1
Главные типы данных и команды математического сопроцессора
Сложение, вычитание, умножение, деление, извлечение квадратного корня и других операций Промежуточное действительное 80 бит
1.10 Система команд сопроцессора
Команды передачи данных
Fld источник - загрузка вещественного числа из памяти в вершину стека сопроцессора;
Fst приемник-сохранение вещественного числа из вершины стека сопроцессора в память. Сохранение числа в памяти не сопровождается выталкиванием его из стека, то есть текущая вершина стека сопроцессора не изменяется (поле top не изменяется);
Fstp приемник - сохранение вещественного числа из вершины стека сопроцессора в память. В отличие от предыдущей команды, происходит выталкивание вещественного числа из стека после его сохранения в памяти. Команда изменяет поле top, увеличивая его на единицу. Вследствие этого, вершиной стека становится следующий, больший по своему физическому номеру, регистр стека сопроцессора.
Fild источник - загрузка целого числа из памяти в вершину стека сопроцессора;
Fist приемник - сохранение целого числа из вершины стека сопроцессора в память. Сохранение целого числа в памяти не сопровождается выталкиванием его из стека, то есть текущая вершина стека сопроцессора не изменяется;
Fistp приемник - сохранение целого числа из вершины стека в память. Аналогично сказанному выше о команде fstp, последним действием команды является выталкивание числа из стека с одновременным преобразованием его в целое значение.
Fbld источник - загрузка десятичного числа из памяти в вершину стека сопроцессора;
Fbstp приемник - сохранение десятичного числа из вершины стека сопроцессора в области памяти. Значение выталкивается из стека после преобразования его в формат десятичного числа.
Fxch st(i) - обмен значений между текущей вершиной стека и регистром стека сопроцессора st(i).
Команды загрузки констант
Fldz - загрузка нуля в вершину стека сопроцессора;
Fldl - загрузка единицы в вершину стека сопроцессора;
Fldpi - загрузка числа p в вершину стека сопроцессора;
Fldl2t - загрузка двоичного логарифма десяти в вершину стека сопроцессора;
Fldl2e - загрузка двоичного логарифма е в вершину стека сопроцессора;
Fldlg2 - загрузка десятичного логарифма двух в вершину стека сопроцессора;
Fldln2 - загрузка натурального логарифма двух в вершину стека сопроцессора.
Команды сравнения данных
Fcom [операнд_в_памяти] - команда без операндов сравнивает два значения: одно находится в регистре st(0), другое в регистре st(1). Если указан [операнд_в_памяти], то сравнивается значение в регистре st(0) стека сопроцессора со значением в памяти;
Fcomp операнд - команда сравнивает значение в вершине стека сопроцессора st(0) со значением операнда, который находится в регистре или в памяти. Последним действием команды является выталкивание значения из st(0);
Fcompp операнд - команда аналогична по действию fcom без операндов, но последним ее действием является выталкивание из стека значений обоих регистров st(0) и st(1);
Ficom операнд_в_памяти - команда сравнивает значение в вершине стека сопроцессора st(0) с целым операндом в памяти. Длина целого операнда 16 или 32 бита, то есть целое слово и короткое целое;
Ficomp операнд - команда сравнивает значение в вершине стека сопроцессора st(0) с целым операнлом в памяти. После сравнения и установки бит с3-с0 команда выталкивает значение из st(0). Длина целого операнда 16 или 32 бита, то есть целое слово и короткое целое.
Ftst - команда не имеет операндов и сравнивает значения в st(0) со значением 00.
Fucom st(i) - команда сравнивает значения (без учета их порядков) в регистрах стека сопроцессора st(0) и st(i);
Fucomp st(i) - команда сравнивает значения (без учета их порядков) в регистрах стека сопроцессора - в st(0) и st(i). Последним действием команды является выталкивание значения из вершины стека;
Fcompp st(i) - команда сравнивает значения (без учета их порядков) в регистрах стека сопроцессора - в st(0) и st(i). Последние два действия команды одинаковы - выталкивание значения из вершины стека.
Арифметические команды
Целочисленные арифметические команды
Fiadd источник - команда складывает значения st(0) и целочисленного источника, в качестве которого выступает 16- или 32-разрядный операнд в памяти. Результат сложения запоминается в регистре стека сопроцессора st(0);
Fisub источник - команда вычитает значение целочисленного иточника из st(0). Результат вычитания запоминается в регистре стека сопроцессора st(0). В качестве источника выступает 16- и ли 32-разрядный целочисленный операнд в памяти;
Fimul источник - команда умножает значение целочисленного источника на содержимое st(0). Результат умножения запоминается в регистре стека сопроцессора st(0). В качестве источника выступает 16-ти или 32-разрядный целочисленный операнд в памяти;
Fidiv источник - команда делит содержимое st(0) на значение целочисленного источника. Результат деления запоминается в регистре стека сопроцессора st(0). В качестве источника выступает 16- или 32-разрядный целочисленный операнд в памяти.
Fisubr источник - команда вычитает значение st(0) из целочисленного источника. Результат вычитания запоминается в регистре стека сопроцессора st(0). В качестве источника выступает 140 или 32- разрядный целочисленный операнд в памяти;
Fidivr источник - команда делит значение целочисленного источника на содержимое st(0). Результат деления запоминается в регистре стека сопроцессора st(0). В качестве источника выступает 16- или 32-разрядный целочисленный операнд в памяти.
Вещественные арифметические команды
Fadd - команда складывает значение в st(0) и st(1). Результат сложения запоминается в регистре стека сопроцессора st(0);
Fadd источник - команда складывает значения st(0) и источника, представляющего адрес ячейки памяти. Результат сложения запоминается в регистре стека сопроцессора st(0);
Fadd st(i),st - команда складывает значение в регистре стека сопроцессора st(0) со значением в вершине стека st(0). Результат сложения запоминается в регистре t(0).
Fadd st(i),st - команда поизводит сложение вещественных операндов аналогично команде fadd st(i), st. Последним действием команды является выталкивание значения из вершины стека сопроцессора st(0). Результат сложения остается в регистре st(i-1).
Fsub - команда вычитает значение в st(1) из значения в st(0). Результат вычитания запоминается в регистре стека сопроцессора st(0). Результат вычитания запоминается в регистре стека сопроцессора st(0);
Fsub источник - команда вычитает значение источника из значения в st(0). Источник представляет адрес ячейки памяти, содержащей допустимое вещественное число. Результат сложения запоминается в регистре стека сопроцессора st(0);
Fsub st(i),st - команда вычитает значение в вершине стека st(0) из значения в регистр стека сопроцессора st(i). Результат вычитания запоминается в регистре стека сопроцессора st(i);
Fsubp st(i), st - команда вычитает вещественные операнды аналогично команде fsubp st(i),st. Последним действием команды является выталкивание значения из вершины стека сопроцессора st(0). Результат вычитания остается в регистре st(i-1).
Fsubr st(i), st - команда вычитает значения в вершине стека st(0) из значения в регистре стека сопроцессора st(i). Результат вычитания запоминается в вершине стека сопроцессора - регистре st(0);
Fsubrp st(i), st - команда производит вычитание подобно команде fsubr st(i),st. Последним действием команды является выталкивание значения из вершины стека сопроцессора st(0). Результат вычитания остается в регистре st(i-1).
Fmul - команда не имеет операндов. Умножает значения в st(0) на содержимое в st(1). Результат умножения запоминается в регистре стека сопроцессора st(0);
Fmul st(i) - команда умножает значение в st(0) на содержимое регистра стека st(i). Результат умножения запоминается в регистре стека сопроцессора st(0);
Fmul st(i), st - команда умножает значения в st(0) на содержимое произвольного регистра стека st(i). Результат умножения запоминается в регистре стека сопроцессора st(i);
Fmulp st(i), st - команда производит умножение подобно команде fmul st(i), st. Последним действием команды является выталкивание значения из вершины стека сопроцессора st(0). Результат умножения остается в регистре st(i-1).
Fdiv - команда (без операндов ) делит содержимое регистра st(0) на значение регистра сопроцессора st(1). Результат деления запоминается в регистре стека сопроцессора st(0);
Fdiv st(i) - команда делит содержимое регистра st(0) на содержимое регистра сопроцессора st(i). Результат деления запоминается в регистре стека сопроцессора st(0);
Fdiv st(i), st - команда производит деление аналогично команде fdiv st(i), но результат деления запоминается в регистре стека сопроцессора st(i);
Fdivp st(i), st - команда производит деление аналогично команде Fdiv st(i), st. Последним действием команды является выталкивание значения из вершины стека сопроцессора st(0). Результат деления остается в регистре st(i-1).
Fdivr st(i), st - команда делит содержимое регистра st(i) на содержимое вершины регистра сопроцессора st(0). Ре
Вывод
В данной дипломной работе, была изучена тема "Функции и принцип работы математических сопроцессоров", посредствам решения конкретных задач, а именно были закреплены знания: - общие понятия о математических сопроцессоров;
- принцип работы математического сопроцессора;
- функции математического сопроцессора;
- история развития математических сопроцессоров.
Математический сопроцессор выполняет, такие сложные операции как точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма в 10-100 раз быстрее основного процессора. Точность результатов при этом значительно выше той, которая обеспечивается вычислителями, входящими в состав самих процессоров. Операции сложения, вычитания и умножения выполняются основным процессором и не передаются сопроцессору.
Список литературы
1. Автономов B.C. Процессоры / М.: Вита-Пресс, 2010. - 256 с.
2. Зыков Н.В. Единые требования к оформлению курсового и дипломного проекта (работы): методические указания для студентов технических специальностей: изд. 2, испр. и доп. / Н.В. Зыков. - Чита: ЗАБГК, 2007. - 45 с.
3. Леонтьев В.П. Новейшая энциклопедия персонального компьютера / В.П. Леонтьев. - М.: ОЛМА Медиа групп, 2011. - 928 с.
4. Мамедов О.Ю. Современные компьютеры / О.Ю. Мамедов. - М: Феникс, 2011.- 608 с.
5. Мураховский В.И. Основы процессоров / В.И. Мураховский. - М: Аст- пресс книга, 2009. - 392 с.
6. Мюллер С. Все о компьютерах / С.Мюллер.- М.;Диалектис-Вильямс, 2010. - 992 с.
7. Райзберг Б.А. Персональный компьютер / Б.А. Райзберг. - М.: ИНФА, 200-9. - 96 с.
8. Романов В.П. Техническое обслуживание средств вычислительной техники: учебное пособие: изд.3 / В.П.Романов. - СПБ.: 2010. - 180 с.
9. Сергеев И.В. Основы ПК: учебное пособие: изд. 2 / И.В. Сергеев. - М.: Финансы и статистика, 2013. - 304 с.
10. Томпсон Р. Персональный компьютер / Р.Томпсон. - СПБ.: БХВ-Петрбург, 2013. - 608 с.
11. Хведюк М.А. РС для начинающих. Аппаратные средства / М.А. Хведюк. - СПБ.: БХВ-Петербург, 2007. - 192 с.
12. Чечевицына Л.И. ПК для новичков / Л.И. Чечевицына. - М.: Феникс, 2011. - 384 с.
13. Белый В.А. Основы работы с персональный комьютером / Белый В.А. - М.: Феникс, 2011. - 334 с.