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

Сопроцессор Motorola 68881

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

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

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

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

x87 — специальный набор инструкций для работы с математическими вычислениями, являющийся подмножеством архитектуры процессоров x86. Такое название он получил, потому что первоначальные отдельные математические сопроцессорные чипы имели названия, заканчивающиеся на 87. Как и другие расширения базового набора инструкций процессора, эти инструкции не являются строго необходимыми для построения рабочей программы, но будучи аппаратно реализованными, они удобны в использовании и общие математические задачи позволяют выполнять гораздо быстрее, если требуется получить результат расширенной точности. Например, в наборе инструкций x87 присутствуют команды для расчёта значений синуса или косинуса.

Сопроцессоры Intel семейства x86

Для процессоров семейства x86 с 8086/8088 по 386 модуль операций с плавающей запятой был выделен в отдельную микросхему, называемую математическим сопроцессором. Для установки сопроцессора на плате компьютера предусматривался отдельный разъём.

Сопроцессор не является полноценным процессором, так как не умеет делать многих необходимых для этого операций (например, не умеет работать с программой и вычислять адреса памяти), являясь всего лишь придатком центрального процессора.

Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86-сопроцессорах, реализуется следующим образом:

  • Сопроцессор подключен к шинам центрального процессора, а также имеет несколько специальных сигналов для синхронизации процессоров между собой.
  • Часть командных кодов центрального процессора зарезервирована для сопроцессора, он следит за потоком команд, игнорируя другие команды. Центральный процессор, наоборот, игнорирует команды сопроцессора, занимаясь только вычислением адреса в памяти, если команда предполагает к ней обращение. Центральный процессор делает цикл фиктивного считывания, позволяя сопроцессору считать адрес с адресной шины. Если сопроцессору необходимо дополнительное обращение к памяти (для чтения или записи результатов), он выполняет его через захват шины.
  • После получения команды и необходимых данных сопроцессор начинает её выполнение. Пока сопроцессор выполняет команду, центральный процессор выполняет программу дальше, параллельно с вычислениями сопроцессора. Если следующая команда также является командой сопроцессора, процессор останавливается и ожидает завершения выполнения сопроцессором предыдущей команды.
  • Также существует специальная команда ожидания (FWAIT), принудительно останавливающая процессор до завершения вычислений (если для продолжения программы необходимы их результаты). В настоящее время команда используется лишь для обработки исключений при работе с плавающей точкой, работа процессора и сопроцессора синхронизируется автоматически[1].

Начиная с процессора Intel486DX модуль операций с плавающей запятой был интегрирован в центральный процессор и назван FPU. В линейке Intel486SX модуль FPU отключался (поначалу в эту линейку попадали процессоры с бракованным FPU). Для процессоров Intel486SX также выпускался «сопроцессор» Intel487SX, но фактически он являлся процессором Intel486DX, и при его установке процессор Intel486SX отключался.

Несмотря на интеграцию, FPU в процессорах i486 представляет собой неизменный сопроцессор, выполненный на том же кристалле, более того, схема FPU i486 полностью идентична сопроцессору предыдущего поколения 387DX вплоть до тактовой частоты (в два раза меньшей, чем частота центрального процессора). Настоящая интеграция FPU c центральным процессором началась только в процессорах Pentium модели MMX.

Сопроцессоры 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.

Другие платформы

Аналогично, материнские платы ПК, построенных на процессорах Motorola, до разработки этой фирмой процессора MC68040 (в который сопроцессор был встроен) содержали математический сопроцессор. Как правило, в качестве FPU использовался сопроцессор 68881 16 МГц или 68882 25 МГц. Практически любой современный процессор имеет встроенный сопроцессор.

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

Устройство FPU

Регистры FPU организованы не в виде массива, как в некоторых других архитектурах, а как регистровый стек. Таким образом, FPU представляет собой стековый калькулятор, работающий по принципу обратной польской записи[2][3]. Это означает, что команды всегда используют верхнее значение в стеке для проведения операций, а доступ к другим хранящимся значениям обычно обеспечивается в результате манипуляций со стеком. Однако при работе с вершиной стека одновременно могут использоваться и другие элементы стека, для доступа к которым применяется адресация относительно вершины стека. Также в операциях могут использоваться значения, хранящиеся в оперативной памяти. Обычная последовательность действий выглядит следующим образом. Перед операцией аргументы помещаются в LIFO-стек; при выполнении операции необходимое количество аргументов снимается со стека. Результат операции помещается в стек, где может быть использован в дальнейших вычислениях или снят со стека для записи в память. Хотя стековая организация регистров FPU получается и удобной для программистов, она усложняет задачу построения эффективного кода компиляторами.

Особенности использования

Все процессоры Intel и AMD, начиная с 486DX, имеют встроенный математический сопроцессор, и в отдельном сопроцессоре не нуждаются (за исключением Intel486SX). Тем не менее, термин x87 всё ещё применяется для выделения той части инструкций процессора, которая служит для работы с вещественными числами в стеке FPU. Отличительный признак этих инструкций: их мнемоники начинаются с буквы f (от англ. float). Компиляторы могут использовать эти инструкции для производства кода, который в ряде случаев работает быстрее, нежели тот, что использует вызовы к библиотекам для выполнения операций с плавающей запятой.

Инструкции x87 совместимы со стандартом IEEE-754, т.е. предоставляют возможность выполнять вычисления в соответствии с данным стандартом. Однако обычно последовательность команд x87 выполняет операции не в строгом соответствии с форматами IEEE-754 из-за использования более широких регистров по сравнению с форматами чисел одинарной и двойной точности. Поэтому последовательность арифметических операций на наборе x87 может давать несколько иной результат, чем на процессоре, строго следующем стандарту IEEE-754.

После появления расширения 3DNow! от AMD и затем SSE, начиная с процессоров Pentium III компании Intel, вычисления с одинарной точностью стало возможным проводить без помощи инструкций FPU, причём с возросшей производительностью. Расширение SSE2 и более поздние расширения системы команд обеспечили также быстрое выполнение расчётов с двойной точностью (см. стандарт IEEE-754). В связи с этим в современных компьютерах потребность в командах классического математического сопроцессора значительно уменьшилась. Тем не менее, во всех выпускаемых x86-процессорах они по-прежнему поддерживаются для совместимости со старыми приложениями, а также для нужд тех приложений, где требуются двоично-десятичные преобразования или вычисления с расширенной точностью (когда двойной точности недостаточно). В настоящее время использование команд x87 остаётся наиболее эффективным способом ведения таких расчётов.

Форматы данных

Внутри FPU числа хранятся в 80-битном формате с плавающей запятой (расширенная точность), для записи же или чтения из памяти могут использоваться:

  • Вещественные числа в трёх форматах: коротком (32 бита), длинном (64 бита) и расширенном (80 бит).
  • Двоичные целые числа со знаком в трёх форматах: 16, 32 и 64 бита.
  • Упакованные целые десятичные числа (BCD-числа) — длина максимального числа составляет 18 упакованных десятичных цифр (72 бита).

FPU также поддерживает специальные численные значения:

  • Денормализованные вещественные числа — числа, которые по абсолютной величине меньше минимального нормализованного числа. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение 10. Признаком денормализованного числа в его двоичном представлении служит нулевое поле порядка.
  • Бесконечность (положительная и отрицательная), возникает при делении на нуль ненулевого значения, а также при переполнениях. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение 10.
  • не-число (англ. not-a-number (NaN)). Различают два вида не-чисел:
    • SNaN (Signaling Not-a-Number) — сигнальные не-числа. Сопроцессор реагирует на появление этого числа в регистре стека возбуждением исключения недействительной операции. Сопроцессор не формирует сигнальных не-чисел. Программисты формируют такие числа преднамеренно, чтобы возбудить в нужной ситуации исключение. Признаком сигнального не-числа в его двоичном представлении является сброшенный 2-й (по убыванию старшинства) бит поля мантиссы.
    • QNaN (Quiet Not-a-Number) — спокойные (тихие) не-числа. Сопроцессор может формировать спокойные не-числа в качестве реакции на определённые исключения, например, число вещественной неопределённости. Признаком тихого не-числа в его двоичном представлении является установленный 2-й (по убыванию старшинства) бит поля мантиссы.
  • Нуль (положительный и отрицательный). Характеризуется нулевыми значениями полей мантиссы и порядка. Хотя нуль может считаться самостоятельным специальным значением, он в то же время является частным случаем денормализованного числа.
  • Неопределённости и неподдерживаемые форматы. То же, что не-число. Существует много битовых наборов, которые можно представить в расширенном формате вещественного числа, не обозначающие никакого числа или бесконечности. Все они характеризуются полем порядка, заполненным единицами, и единичным старшим битом поля мантиссы. Для части этих значений формируется исключение недействительной операции.

Регистры

В FPU можно выделить три группы регистров:

  • Стек процессора: регистры R0..R7. Размерность каждого регистра: 80 бит.
  • Служебные регистры
    • Регистр состояния процессора SWR (Status Word Register) — информация о текущем состоянии сопроцессора. Размерность: 16 бит.
    • Управляющий регистр сопроцессора CWR (Control Word Register) — управление режимами работы сопроцессора. Размерность: 16 бит.
    • Регистр слова тегов TWR (Tags Word Register) — контроль над регистрами R0..R7 (например, для определения возможности записи). Размерность: 16 бит.
  • Регистры указателей
    • Указатель данных DPR (Data Point Register). Размерность: 48 бит.
    • Указатель команд IPR (Instruction Point Register). Размерность: 48 бит.

Система команд сопроцессора

Система включает около 80 команд. Их классификация:

  • Команды передачи данных
    • Вещественные данные
    • Целочисленные данные
    • Десятичные данные
    • Загрузка констант (0, 1, число Пи, log2(10), log2(e), lg(2), ln(2))
    • Обмен
    • Условная пересылка (Pentium II/III)
  • Команды сравнения данных
    • Вещественные данные
    • Целочисленные данные
    • Анализ
    • С нулём
    • Условное сравнение (Pentium II/III)
  • Арифметические команды
    • Вещественные данные: сложение, вычитание, умножение, деление
    • Целочисленные данные: сложение, вычитание, умножение, деление
    • Вспомогательные арифметические команды (квадратный корень, модуль, изменение знака, выделение порядка и мантиссы)
  • Трансцендентные команды
    • Тригонометрия: синус, косинус, тангенс, арктангенс
    • Вычисление логарифмов и степеней
  • Команды управления
    • Инициализация сопроцессора
    • Работа со средой
    • Работа со стеком
    • Переключение режимов

См. также

Примечания

  1. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 2A and 2B: Instruction Set Reference. Order numbers #253666, #253667
  2. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture. Order number #253665
  3. AMD64 Architecture Programmer’s Manual. Volume 1: Application Programming. Publication number #24592

Read other articles:

Artikel ini memiliki beberapa masalah. Tolong bantu memperbaikinya atau diskusikan masalah-masalah ini di halaman pembicaraannya. (Pelajari bagaimana dan kapan saat yang tepat untuk menghapus templat pesan ini) Artikel ini sebagian besar atau seluruhnya berasal dari satu sumber. Tolong bantu untuk memperbaiki artikel ini dengan menambahkan rujukan ke sumber lain yang tepercaya. Artikel ini sudah memiliki daftar referensi, bacaan terkait, atau pranala luar, tetapi sumbernya belum jelas karena bel…

Perayaan Ekaristi di Gereja Katolik Anamnesis adalah salah satu bagian pada liturgi Perjamuan Kudus atau Ekaristi yang berisi penghadiran kembali peristiwa masa silam ke dalam masa kini sedemikan rupa, sehingga umat yang merayakan Ekaristi dapat mengalami secara nyata peristiwa masa silam tersebut.[1] Kata anamnesis sendiri berasal dari Bahasa Yunani, ἀνάμνησιν yang berarti peringatan atau kenangan. Kata anamnesis juga biasa disebut memoria (Indonesia: ingatan, kenangancode: id…

Municipality in Ilocos Norte, Philippines Not to be confused with Sarratt or Sarat. Municipality in Ilocos Region, PhilippinesSarrat San MiguelMunicipalityMunicipality of SarratSarrat Church FlagSealMap of Ilocos Norte with Sarrat highlightedOpenStreetMapSarratLocation within the PhilippinesCoordinates: 18°09′28″N 120°38′41″E / 18.1578°N 120.6447°E / 18.1578; 120.6447CountryPhilippinesRegionIlocos RegionProvinceIlocos NorteDistrict 1st districtFounded1586Baran…

Untuk kegunaan lain, lihat Bumi (disambiguasi). BumiAlbum studio karya NugieDirilis1 September 1995DirekamMPR Studio, CipeteGenrePopAlternative RockDurasi34:48 (versi kaset)39:49 (versi CD)LabelAquarius MusikindoProduserKaton BagaskaraNugieKronologi Nugie Pancasila Senjataku! (1984)'Pancasila Senjataku!'1984 Bumi (1995) Air (1996)'Air'1996 Bumi adalah album perdana dari penyanyi Nugie sebagai penyanyi dewasa (sebelumnya merilis album sebagai penyanyi cilik) yang dirilis pada tahun 1995. Sala…

Dalam artikel ini, nama keluarganya adalah Wisandana, nama keluarga patronimik Sunda; Nariswari adalah nama tengahnya. Farhana NariswariFarhana pada Agustus 2023LahirFarhana Nariswari Wisandana28 Mei 1996 (umur 27)Bandung, Jawa Barat, IndonesiaKebangsaanIndonesiaNama lainFarhana WisandanaAlmamaterUniversitas PadjajaranPekerjaanDuta Kementerian Pemuda dan Olahraga Indonesia[1][2][3]modeldokteraktrisaktivis kesehatanpemegang gelar kontes kecantikanTahun aktif…

Eastern Romance language Not to be confused with the Romani, Romansh, or Aromanian languages. Limba română and Romanophone redirect here. For the magazine, see Limba Română (magazine). RomanianDaco-Romanianlimba română, românește, română [a]Pronunciation[roˈmɨnə]Native toRomania, MoldovaRegionCentral Europe, Southeastern Europe, and Eastern EuropeEthnicityRomanians(including Moldovans)Native speakers25 million (2020)[1]Language familyIndo-European I…

Japanese actress This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help improve this article by introducing more precise citations. (September 2015) (Learn how and when to remove this template message) This article may need to be rewritten to …

Notation de Lewis du superoxyde. Les 6 électrons de valence de chaque atome d'oxygène sont représentés en noir, l'électron supplémentaire en rouge. L'ion superoxyde, noté O2•− ou O2− (la deuxième écriture ne fait pas apparaître explicitement le caractère radicalaire) est issu de la réduction monoélectronique du dioxygène (O2)[1]. L'ion superoxyde est paramagnétique. Composés de l'ion superoxyde Des sels de l'ion superoxyde tels que le superoxyde de potassium (KO2) se formen…

X Factor IndonesiaMusim 2PresenterRobby PurbaJuri Ahmad Dhani Rossa Afgan Bebi Romeo Jum. peserta13PemenangJebe & PettyTempat keduaClarisa DewiLokasiEcopark Ancol, JakartaLagu kemenanganOver You Negara asalIndonesiaJumlah episode22RilisSaluran asliRCTITanggal tayang03 April (2015-04-03) –11 September 2015 (2015-09-11)Kronologi Musim← SebelumnyaMusim 1 Selanjutnya →Musim 3 X Factor Indonesia (musim 2) adalah sebuah acara bakat berupa kompetisi bernyanyi yang dia…

Toronto RaptorsToronto Raptors musim 2019–2020WilayahTimurDivisiAtlantikDibentuk1995[1]SejarahToronto Raptors1995–present[2][3]ArenaScotiabank ArenaLetakToronto, OntarioWarna timMerah, hitam, perak, emas, putih[4][5]         Sponsor utamaSun Life Financial[6]PresidenMasai UjiriManajer umumBobby WebsterPelatih kepalaNick NursePemilikMaple Leaf Sports & Entertainment[7]AfiliasiRaptors 905Juara1 (2019)Gelar Wil…

العلاقات الأوزبكستانية الإسواتينية أوزبكستان إسواتيني   أوزبكستان   إسواتيني تعديل مصدري - تعديل   العلاقات الأوزبكستانية الإسواتينية هي العلاقات الثنائية التي تجمع بين أوزبكستان وإسواتيني.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومر…

Cet article concerne le prototype de voiture sans conducteur de Google. Pour les véhicules utilisés par Google pour prendre des photographies sur la voie publique, voir Google Street View. Véhicule électrique autonome conçu par Google. Toyota Prius à conduite automatique de Google. Le capteur lidar rotatif est visible sur le toit. La voiture sans conducteur de Google, souvent appelée Google Car (en français : voiture Google), est un démonstrateur de voiture autonome en dévelop…

Gempa bumi San Francisco 1906San Francisco setelah gempaSan FranciscoLos AngelesLas VegasEurekaDunsmuirChicoTruckeeSanta RosaSalinasBakersfieldFresnoPaso RoblesSanta MonicaIndioWaktu UTC1906-04-18 13:12:27ISC16957905USGS-ANSSComCatTanggal setempat18 April 1906; 117 tahun lalu (1906-04-18)Waktu setempat05:12:27 PSTKekuatan7.9 MwKedalaman5 mi (8,0 km)[1]Episentrum37°45′N 122°33′W / 37.75°N 122.55°W / 37.75; -122.55Koordinat: 37…

American biotechnology corporation Genentech, Inc.Company typeSubsidiaryIndustryBiotechnologyFounded1976; 48 years ago (1976)HeadquartersSouth San Francisco, California, United StatesKey peopleAshley Magargee(interim CEO)[1]Ed HarringtonLevi GarrawayStephen WilliamsSean JohnstonSeverin Schwan(Chairman of Genentech Board of Directors, CEO of Roche Group)Anna BattAviv Regev[2][3]ProductsAvastin, Herceptin, Rituxan, Perjeta, Kadcyla, Gazyva, Tarceva, Ocrevu…

Bp. Soerjoadipoetro tengah mengajar di Taman Siswa Bandung. Foto koleksi KITLV. Ibu Soerjoadipoetro berbincang-bincang dengan beberapa siswi Taman Siswa Bandung. Foto koleksi KITLV. Para murid dari Taman Siswa, koleksi Tropenmuseum Taman Siswa (Taman berarti tempat bermain atau tempat belajar, dan Siswa berarti murid) adalah nama sekolah yang didirikan oleh Ki Hadjar Dewantara pada tanggal 3 Juli tahun 1922 di Yogyakarta. Pada waktu pertama kali didirikan, sekolah Taman Siswa ini diberi nama Nat…

Artikel ini bukan mengenai Jane Dodds. Anneliese DoddsMPDodds pada 2020 Menteri Keuangan BayanganPetahanaMulai menjabat 5 April 2020PemimpinKeir StarmerPendahuluJohn McDonnellPenggantiPetahanaSekretaris Keuangan untuk Perbendaharaan BayanganMasa jabatan3 Juli 2017 – 5 April 2020PemimpinJeremy CorbynPendahuluPeter DowdPenggantiDan CardenAnggota Parlemenuntuk Oxford TimurPetahanaMulai menjabat 8 Juni 2017PendahuluAndrew SmithPenggantiPetahanaMayoritas17.832 (36.1%)Anggota Parlem…

French politician and essayist (born 1985) You can help expand this article with text translated from the corresponding article in French. (April 2023) Click [show] for important translation instructions. View a machine-translated version of the French article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-t…

British actress (born 1986) Emilia ClarkeMBEClarke in 2015BornEmilia Isobel Euphemia Rose Clarke (1986-10-23) 23 October 1986 (age 37)London, EnglandAlma materDrama Centre LondonOccupationActressYears active2009–presentAwardsFull list Emilia Isobel Euphemia Rose Clarke MBE (born 23 October 1986) is an English actress. She is best known for her portrayal of Daenerys Targaryen in the HBO fantasy series Game of Thrones (2011–2019), for which she received nominations for four Prim…

2011 Total Nonstop Action Wrestling pay-per-view event Genesis (2011)Promotional poster featuring Kurt AnglePromotionTotal Nonstop Action WrestlingDateJanuary 9, 2011[1]CityOrlando, FloridaVenueImpact ZoneAttendance1,100[2]Tagline(s)Kurt Angle is back. And he's bringing hell with him![1]Pay-per-view chronology ← PreviousFinal Resolution Next →Against All Odds Genesis chronology ← Previous2010 Next →2012 The 2011 Genesis was a professional wrest…

Paris Agreement withdrawal by the United States from 2017–2021 Trump announcing the withdrawal during a press conference at the White House Rose Garden This article is part of a series aboutDonald Trump Business and personal Business career The Trump Organization wealth tax returns Media career The Apprentice bibliography filmography Eponyms Family Foundation American football Golf Honors Public image in popular culture SNL parodies handshakes Legal affairs Sexual misconduct allegations Nickna…

Kembali kehalaman sebelumnya