x87
x87 -это плавающей точкой подмножество с по архитектуре x86 набора инструкций . Он возник как расширение 8086, установленного в форме дополнительных соприкадотелей с плавающей точкой , которые работают в тандеме с соответствующими процессорами x86. Эти микрочипы имеют имена, заканчивающиеся «87». Это также известно как NPX ( числовое расширение процессора ). Как и другие расширения для базового набора инструкций, инструкции x87 не требуются строго для построения рабочих программ, но предоставляют аппаратные и микрокоды реализации общих численных задач, что позволяет выполнять эти задачи гораздо быстрее, чем машинного кода могут быть соответствующие процедуры . Набор инструкций x87 включает в себя инструкции для основных операций с плавающей точкой, таких как добавление, вычитание и сравнение, а также для более сложных численных операций, таких как, например, вычисление тангентной функции и ее обратная.
Большинство процессоров X86 с момента Intel 80486 имели эти инструкции x87, выполненные в основном ЦП, но этот термин иногда все еще используется для обозначения этой части набора инструкций. Прежде чем x87 инструкции были стандартными в ПК, компиляторам или программистам должны были использовать довольно медленные вызовы библиотеки для выполнения операций с плавающей точкой, метод, который все еще распространен в (недорогих) встроенных системах .
Описание
[ редактировать ]Регистры x87 образуют восьмиуровневую глубокую нетронутную структуру стека в диапазоне от ST (0) до ST (7) с регистрами, которые могут быть непосредственно доступны любым операндом, используя смещение по сравнению с верхом, а также выдвинуто и выпало Полем (Эта схема может сравниваться с тем, как кадр стека может быть одновременно протолкнут/выскочен и индексирован.)
Существуют инструкции, чтобы разжигать, расчет и значения POP поверх этого стека; Унарные операции (FSQRT, FPTAN и т. Д.) Затем косвенно обращаются к самой верхней ST (0), в то время как бинарные операции (FADD, FMUL, FCOM и т. Д.) Неявно обращаются к ST (0) и ST (1). Модель без строгих стека также позволяет бинарным операциям использовать ST (0) вместе с операндом прямого памяти или с явно указанным регистром стека, ST ( x ), в роли, аналогичной традиционной аккумуляторе (комбинированный пункт назначения и левый операнд ) Это также может быть изменено на основе обучения на основе обучения с ST (0) в качестве немодифицированного операнда и ST ( x ) в качестве пункта назначения . Кроме того, содержимое в ST (0) может быть обменено с помощью другого регистра стека, используя инструкцию под названием FXCH St ( x ).
Эти свойства делают x87 Stack пригодным для использования как семь свободно адресуемых регистров плюс выделенный аккумулятор (или как семь независимых аккумуляторов). Это особенно применимо к процессорам SuperScalar X86 (например, Pentium 1993 года и позже), где эти инструкции по обмену (коды D9C8..D9CF H ) оптимизируются до нулевого штрафа с использованием одного из целочисленных путей для FXCH ST (ST ( x ) Параллельно с инструкцией FPU. Несмотря на то, что некоторые писатели компилятора были естественными и удобными для программистов из ассамблеи человека , некоторые авторы компиляции обнаружили, что было бы сложно построить автоматические генераторы кодов , которые эффективно планируют код x87. Такой интерфейс на основе стека потенциально может минимизировать необходимость сохранения переменных царапин в вызовах функций по сравнению с интерфейсом на основе регистрации [ 1 ] (Хотя, исторически, проблемы дизайна в реализации 8087 ограничивали этот потенциал. [ 2 ] [ 3 ] )
X87 обеспечивает однооценную, двойную рецепту и 80-разрядную двойную арифметику с двойной точкой точкой точкой точки в соответствии с стандартом IEEE 754-1985 . По умолчанию процессоры x87 все используют 80-разрядную двойную точность внутри (для обеспечения устойчивой точности по многим расчетам, см. IEEE 754 Design Levalale ). Таким образом, данная последовательность арифметических операций может вести себя немного по-разному по сравнению со строгим однолетним или двойным определением IEEE 754 FPU. [ 4 ] Поскольку иногда это может быть проблематичным для некоторых полувековых вычислений, записанных, чтобы предположить двойную точность для правильной работы, чтобы избежать таких проблем, x87 может быть настроен с использованием специальной регистра конфигурации/состояния для автоматического округа до единой или двойной точности после каждой операции. введения SSE2 как когда-то, но остаются важными в качестве высокого качества скалярного блока для численных расчетов ошибке окружающей чувствительных инструкции x87 не так важны , С момента , к 80-битный формат.
Производительность
[ редактировать ]Количество цикла такта для примеров типичных инструкций X87 FPU (только версии регистрации, показанные здесь). [ 5 ]
Нотация A ... B (минимум до максимума) охватывает вариации синхронизации в зависимости от переходного статуса трубопровода и выбранной арифметической точности (32, 64 или 80 бит); Он также включает в себя вариации, связанные с численными случаями (например, количество набор битов, ноль и т. Д.). Обозначение L → H отображает значения, соответствующие самым низким (L) и самым высоким (H) максимальным тактовым частотам, которые были доступны.
x87 Реализация | Фадд | FM | FDIV | FXCH | FCOM | Fsqrt | Fptan | FPATAN | Максимальные часы (МГц) |
Пик fmul (миллионы/ с ) |
FM § религиозный 5 МГц 8087 |
---|---|---|---|---|---|---|---|---|---|---|---|
8087 | 70…100 | 90…145 | 193…203 | 10…15 | 40…50 | 180…186 | 30…540 | 250…800 | 5 → 10 | 0.034…0.055 → 0.100…0.111 | 1 → 2 × как быстро |
80287 (оригинал) | 6 → 12 | 0.041…0.066 → 0.083…0.133 | 1.2 → 2.4× | ||||||||
80387 (а затем и 287 моделей) | 23…34 | 29…57 | 88…91 | 18 | 24 | 122…129 | 191…497 | 314…487 | 16 → 33 | 0.280…0.552 → 0.580…1.1 | ~10 → 20× |
80486 (или 80487) | 8…20 | 16 | 73 | 4 | 4 | 83…87 | 200…273 | 218…303 | 16 → 50 | 1.0 → 3.1 | ~18 → 56× |
Cyrix 6x86 , Cyrix MII | 4…7 | 4…6 | 24…34 | 2 | 4 | 59…60 | 117…129 | 97…161 | 66 → 300 | 11…16 → 50…75 | ~320 → 1400× |
AMD K6 (включая K6 II/III) | 2 | 2 | 21…41 | 2 | 3 | 21…41 | ? | ? | 166 → 550 | 83 → 275 | ~1500 → 5000× |
Pentium / Pentium 2010 | 1…3 | 1…3 | 39 | 1 (0*) | 1…4 | 70 | 17…173 | 19…134 | 60 → 300 | 20…60 → 100…300 | ~1100 → 5400× |
Intel | 1…3 | 2…5 | 16…56 | 1 | 28…68 | ? | ? | 150 → 200 | 30…75 → 40…100 | ~1400 → 1800× | |
Pentium 2/3 | 1…3 | 2…5 | 17…38 | 1 | 27…50 | ? | ? | 233 → 1400 | 47…116 → 280…700 | ~2100 → 13000× | |
Атлон (K7) | 1…4 | 1…4 | 13…24 | 1…2 | 16…35 | ? | ? | 500 → 2330 | 125…500 → 580…2330 | ~9000 → 42000× | |
Атлон 64 (K8) | 1000 → 3200 | 250…1000 → 800…3200 | ~18000 → 58000× | ||||||||
Pentium 4 | 1…5 | 2…7 | 20…43 | несколько цикл |
1 | 20…43 | ? | ? | 1300 → 3800 | 186…650 → 543…1900 | ~11000 → 34000× |
- * Эффективная задержка с нулевым тактовым частотом часто возможна с помощью SuperScalar выполнения.
- § 5 МГц 8087 был оригинальным процессором x87. По сравнению с типичными программными программными подпрограммами на 8086 (без 8087) факторы будут еще больше, возможно, другим фактором 10 (то есть правильное добавление с плавающей точкой на языке сборки вполне может потреблять более 1000 циклов )
Производители
[ редактировать ]Компании, которые разработали или произвели [ А ] Единицы с плавающей запятой, совместимые с моделями Intel 8087 или более позднего цвета, включают AMD ( 287 , 387 , 486DX , 5x86 , K5 , K6 , K7 , K8 ), чипы и технологии ( Super Math Coprocessors), Cirix ( Fasmath , CX87SLC , CX87DL и т. д., 6x86 , Cyrix MII ), Fujitsu (Раннее Pentium Mobile и т. Д.), Harris Semiconductor (изготовленные 80387 и 486DX процессоры ), IBM (различные 387 и 486 конструкций), IDT ( Wrychip , C3 , C7 , Nano и т. Д.), IIT ( 2C87 , 3C87 и т. Д.) , Технология LC ( зеленая математическая копроцессоры), национальный полупроводник ( Geode GX1 , Geode GXM и т. д.), Nexgen ( NX587 ), технология RIST ( MP6 ), ST Microelectronics (изготовленная 486DX , 5x86 и т. Д.), Техасские инструменты (изготовленные 486DX -процессоры и т. Д.), Transmeta ( TM5600 и TM5800 ), ULSI ( Математическая копроцессоры ), через ( C3 , C7 , Nano и т. Д.), Weitek ( 1067 , 1167 , 3167 и 4167 ) и Xtend ( 83S87SX-25 и другие сотрудники).
Архитектурные поколения
[ редактировать ]8087
[ редактировать ]8087 для 16-битных процессоров , был первым математическим сотрудником разработанных Intel . Он был построен в паре с микропроцессорами Intel 8088 или 8086 . (Ранние процессоры Intel 8231 и 8232 с плавающей запятой, продаваемые для использования с процессором I8080, были фактически лицензированными версиями AMD AM9511 и AM9512 FPU с 1977 и 1979 годов. [ 6 ] )
80C187
[ редактировать ]
Хотя в оригинальной таблице 1982 года ( на основе NMOS ) 80188 и 80186, похоже, упоминается конкретные математические сотрудники, [ 7 ] Оба чипа были на самом деле в сочетании с 8087.
Тем не менее, в 1987 году, чтобы работать с обновленным CMOS ЦП на базе 80C186 , Intel представила 80C187 [ 8 ] Математическая копроцессор. Интерфейс 80C187 с основным процессором такой же, как и у 8087, но его ядро по существу -80387SX и, таким образом, полностью IEEE 754 и способный выполнить все дополнительные инструкции 80387. [ 9 ]
80287
[ редактировать ]80287 сотрудником ( I287 является математическим . для Intel 80286 серии микропроцессоров ) Модели Intel включали варианты с указанными пределами верхней частоты в диапазоне от 6 до 12 МГц. Версия NMOS была доступна 6, 8 и 10 МГц. [ 10 ] Доступная 10 МГц Intel 80287-10 Копроцессорная версия составила 250 долларов США в 100. [ 11 ] Эти коробочные версии 80287, 80287-8 и 80287-10 были доступны за 212, 326 и 374 долл. США соответственно. Там была вставленная версия 80C287A, доступную за 457 долларов США. [ 12 ] Другими 287 моделями с 387-подобными производительностью являются Intel 80C287, построенные с использованием CHMOS AMD III, и AMD 80EC287, изготовленный в процессе CMOS , используя только полностью статические ворота.
Позже последовало за I80287XL с микроархитектурой 387SX с 287 рутинкой, [ 13 ] I80287XLT, специальная версия, предназначенная для ноутбуков, а также другие варианты. Он содержит внутренний мультипликатор 3/2, так что материнские платы, которые управляли коконсором на скорости 2/3 ЦП, могли вместо этого запустить FPU на той же скорости процессора. Как 80287, так и 80287XLT предлагали на 50% лучшую производительность, на 83% меньше энергопотребления и дополнительные инструкции. [ 14 ]
80287 работает с микропроцессором 80386 и первоначально был единственным сопроцессором, доступным для 80386 до введения 80387 в 1987 году. Однако 80387 настоятельно предпочтительнее для его более высокой производительности и большей возможности его набора инструкций.
-
6 МГц версия Intel 80287
-
Intel 80287 Die Shot
-
Intel 80287xl
-
Intel 80287xlt
80387
[ редактировать ]
80387 стандарту ( 387 или I387 ) является первым интюрным сотрудником, который полностью соответствует IEEE 754-1985 . Выпущен в 1987 году, [ 15 ] Через два года после 386 чипов I387 включает в себя значительную улучшенную скорость по сравнению с предыдущими копроцессорами Intel 8087/80287 и улучшенные характеристики его тригонометрических функций. Он был доступен за 500 долларов в размере 100 долларов США. [ 16 ] Вскоре после этого он был доступен в результате операции по улучшению персонального компьютера Intel по розничной рыночной цене 795 долларов США. [ 17 ] Версия 25 МГц была доступна в розничном канале за 1395 долларов США. [ 18 ] MATH Coprocessor Intel M387 встретился под MIL-STD-883 Rev. C Стандарт . Это устройство было протестировано, которое включает в себя цикл температуры от -55 до 125 ° C, герметичность, герметичную и расширенную сжигание. Эта военная версия работает на уровне 16 МГц. Эта военная версия была доступна в 68-х лиде PGA и Quad Flatpack. Эта военная версия была доступна за 1155 долларов США в размере 100 единиц для версии PGA. [ 19 ] Версия 387DX 33 МГц была доступна, и она имеет производительность 3,4 мегаветтона в секунду . [ 20 ] Следующая коробочная версия 16-, 20-, 25- и 33-МГц 387DX Math Coprocessor была доступна за 570 долларов США, 647 долл. США, 814 долл. США и 994 долл. США. [ 21 ] Инструкции FPTAN и FPATAN 8087 и 80287 ограничены аргументом в диапазоне ± π/4 (± 45 °), а 8087 и 80287 не имеют прямых инструкций для функций SIN и COS. [ 22 ] [ Полная цитата необходима ]
Без совместной работы 386 обычно выполняет арифметику с плавающей точкой через (относительно медленные) программные процедуры, реализованные во время выполнения через обработчик исключений программного обеспечения . Когда математический коконсор в паре с 386, копрецессор выполняет арифметику с плавающей точкой в оборудовании, возвращая результаты гораздо быстрее, чем (эмуляционный) библиотека программного обеспечения.
I387 совместим только со стандартным чипом i386, который имеет 32-разрядную шину процессора. Более поздний снижение затрат I386SX, которая имеет более узкую 16-битную шину данных , не может взаимодействовать с 32-битной шиной I387. I386SX требует своего собственного коконсора, 80387SX , который совместим с более узкой 16-битной шиной данных SX. Intel выпустила низкую версию Power Coprocessor 387SX. [ 23 ]
-
I387
-
i387sx
-
i387dx
-
I387 Микроархитектура с 16-битным переключателем ствола и кормовой единицы
-
i386dx с i387dx
-
Розетка для 80387
80487
[ редактировать ]
I487SX копроцессора (P23N) продавался в качестве плавающей точкой с Intel I486SX для машин . На самом деле он содержал полномасштабную реализацию i486DX . При установке в систему I486SX I487 отключил основной процессор и принял все операции процессора. I487 принял меры для обнаружения наличия I486SX и не функционировал без исходного процессора. [ 24 ] [ 25 ] [ неудачная проверка ]
80587
[ редактировать ]NX587 был последним FPU для X86 , который был изготовлен отдельно от процессора, в данном случае NX586 Nexgen .
Смотрите также
[ редактировать ]Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Уильям Кахан (2 ноября 1990 г.). «О преимуществах стека 8087» (PDF) . Неопубликованные примечания к курсу, Отдел информатики, Калифорнийский университет в Беркли . Архивировано из оригинала (PDF) 18 января 2017 года.
- ^ Уильям Кахан (8 июля 1989 г.). «Как должен был обрабатывать переполнение стека Intel 8087 (PDF) . Архивировано из оригинала (PDF) 12 июня 2013 года.
- ^ Джек Вор (1 ноября 1997 г.). «Разговор с Уильямом Каханом» .
- ^ Дэвид Моннио (май 2008 г.). «Подводные камни проверки вычислений с плавающей точкой» . Транзакции ACM на языках и системах программирования . 30 (3): 1–41. ARXIV : CS/0701192 . doi : 10.1145/13534455.1353446 . S2CID 218578808 .
- ^ Числа взяты из соответствующих листов данных процессоров, руководств по программированию и руководств по оптимизации.
- ^ «Арифметические процессоры: тогда и сейчас» . www.cpushack.com . 23 сентября 2010 года . Получено 3 мая 2023 года .
- ^ Intel (1983). Руководство по микропроцессору и периферийным устройствам . С. 3-25 (IAPX 186/20) и 3-106 (IAPX 188/20).
- ^ «Коллекция процессора - модель 80187» . CPU-info.com . Архивировано из оригинала 23 июля 2011 года . Получено 14 апреля 2018 года .
- ^ «80C187 80-битный математический копроцессор» (PDF) . Ноябрь 1992 . Получено 3 мая 2023 года .
- ^ Йошида, Стейси, «Математические сотрудники: поддержание компьютера для подсчета», Intel Corporation, Microcomputer Solutions, сентябрь/октябрь 1990, стр. 16
- ^ Intel Corporation, «Новый компонент фокусировки продукта: 32-битный микропроцессор с небольшой помощью некоторых друзей», Специальные 32-разрядные решения для выпуска, ноябрь/декабрь 1985 г., стр. 13.
- ^ Intel Corporation, «Усовершенствование персонального компьютера», операция по улучшению персонального компьютера, заказ № 245.2, 10-89/75K/AL/GO, октябрь 1989 г., стр. 4
- ^ Intel Corporation, «Новый продукт Фокус: Системы: Snapin 386 Обновления модулей PS/2 ПК», Microcomputer Solutions, сентябрь/октябрь 1991 г., стр. 12
- ^ Йошида, Стейси, «Математические сотрудники: поддержание компьютера для подсчета», Intel Corporation, Microcomputer Solutions, сентябрь/октябрь 1990, стр. 16
- ^ Моран, Том (1987-02-16). «Чипы для повышения производительности 386 машин, говорит Intel» . InfoWorld . Тол. 9, нет. 7. с. 5. ISSN 0199-6649 .
- ^ «Новые компоненты фокуса продукта: 32-битный вычислительный двигатель на полную скорость». Решения . Intel Corporation: 10. May - June 1987.
- ^ «Newsbit: Intel 80387 доступен через розничные каналы». Решения . Intel Corporation: 1. Июль -август 1987.
- ^ Intel Corporation, "Газеты: 25 МГц 80387 доступны через розничные каналы", Microcomputer Solutions, сентябрь/октябрь 1988 г., страница 1
- ^ Intel Corporation, «Фокус: Компоненты: милитаризованные периферийные устройства поддерживают микропроцессор M386», Microcomputer Solutions, март/апрель 1989 г., стр. 12
- ^ Lewnes, Ann, «Архитектура Intel386 здесь, чтобы остаться», Intel Corporation, Microcomputer Solutions, июль/август 1989 г., стр. 2
- ^ Intel Corporation, «Усовершенствование персонального компьютера», операция по улучшению персонального компьютера, заказ № 245.2, 10-89/75K/AL/GO, октябрь 1989 г.
- ^ Борланд Турбо -Ассамблер документация.
- ^ Lewnes, Ann, «Архитектура Intel386 здесь, чтобы остаться», Intel Corporation, Microcomputer Solutions, июль/август 1989 г., стр. 2
- ^ Intel 487sx в свободном онлайн-словаре вычислений
- ^ "Intel 80487" . www.cpu-world.com . Получено 9 июня 2021 года .
- Intel 64 и IA-32 Architectures Software's Developer Руководство по томе 1: Основная архитектура (PDF) . Intel.
Внешние ссылки
[ редактировать ]