Блок операций с плавающей точкой

Блок операций с плавающей точкой
Математический сопроцессор 80x287 в колодке на базовой плате персонального компьютера.
Сопроцессор Motorola 68881

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

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

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

Содержание

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

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

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

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

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

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

Начиная с процессора 486SX модуль FPU отключался (в эту линейку попадали процессоры с бракованным FPU). Для процессоров 486SX также выпускался «сопроцессор» 487SX, но, фактически, он являлся процессором 486DX и при его установке процессор 486SX отключался.

Несмотря на интеграцию, 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 были широко поддержаны как разработчиками ПО, так и производителями материнских плат, предусматривавших на них гнёзда для установки такой микросхемы.

Ряд других компаний также выпускал различные несовместимые математические сопроцессоры, реализуя интерфейс к ним через порты ввода-вывода или прерывания

Компании-производители клонов выпускали совместимые с 80287 80387 сопроцессоры, работавшие быстрее аналогичных интеловских. Среди этих компаний можно упомянуть AMD, Chips & Technologies (C&T). Иногда система команд этих сопроцессоров расширялась несколькими несовместимыми, например, аналог 80287 от C&T содержал команды для работы с вектором из четырёх значений с плавающей точкой. Серьёзной поддержки от производителей ПО эти расширенные команды не получили.

Просессоры EMC87 от фирмы

В СССР выпускалась микросхема (КМ)1810ВМ87, которая являлась аналогом 8087

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

Аналогично, материнские платы ПК, построенных на процессорах

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

Устройство FPU

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

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

  • один из трёх форматов с плавающей точкой (32, 64 и 80 бит),
  • целочисленные форматы (16, 32 и 64 бита),
  • 80-битный BCD-формат.

Поддерживаемые математические операции: арифметические операции, сравнение, деление по модулю, округление, смена знака, модуль, квадратный корень, синус, косинус, частичный тангенс, частичный арктангенс, загрузка константы (0, 1, число пи, log2(10), log2(e), lg(2), ln(2)) и некоторые другие специфические операции.

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

  • денормализованное число (число, близкое к переполнению; при дальнейшем возрастании модуля денормализованное число становится бесконечностью),
  • бесконечность (положительная и отрицательная), возникает при делении на нуль ненулевого значения а также при переполнениях,
  • англ. not-a-number (NaN)). Нечисла могут определять такие случаи, как:
    • неопределённость (IND), возникает при комплексном результате (например, при вычислении квадратного корня из отрицательного числа) и в некоторых других случаях,
    • недействительное значение (qNaN, sNaN) - может использоваться компилятором (для предотвращения использования неинициализированных переменных) или отладчиком,
  • нуль - в формате с плавающей запятой, нуль также считается специальным значением.

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

См. также

Устройство цифровых процессоров Архитектура Гарвардская • Фон Неймана • Битовые операции • Система команд • Кольца защиты • RISC • MISC • EPIC • Процессор Intel Pentium Параллелизм Упреждающее выполнение • Конвейер • Суперскалярность • Подмена регистров • Мультипроцессор • Многопоточность Компоненты АЛУ • Математический сопроцессор • Корпус • Векторный процессор • Регистры • Кэш Питание Динамическое изменение частоты • Динамическое изменение напряжения Реализации Микропроцессор • Графический процессор • Физический процессор • DSP • Система на кристалле • Микроконтроллер • ПЛИС

Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Блок операций с плавающей точкой" в других словарях:

  • UltraSPARC T1 — UltraSPARC T1  многоядерный микропроцессор с аппаратной поддержкой многопоточности, разработанный Sun Microsystems, до анонса 14 ноября 2005 г. известен как Niagara. Процессор базируется на RISC архитектуре UltraSPARC Architecture 2005… …   Википедия

  • MIPS (архитектура) — У этого термина существуют и другие значения, см. MIPS. MIPS (англ. Microprocessor without Interlocked Pipeline Stages)  микропроцессор, разработанный компанией MIPS Computer Systems (в настоящее время MIPS Technologies) в соответствии… …   Википедия

  • POWER — (сокр. от англ. Performance Optimization With Enhanced RISC)  микропроцессорная архитектура с ограниченным набором команд (RISC), разработанная и развиваемая компанией IBM. Название позже было расшифровано как Performance Optimization… …   Википедия

  • Цифровой сигнальный процессор — (англ. Digital signal processor, DSP; сигнальный микропроцессор, СМП; процессор цифровых сигналов, ПЦС)  специализированный микропроцессор, предназначенный для цифровой обработки сигналов (обычно в реальном масштабе времени) …   Википедия

  • ПЦС — Цифровой сигнальный процессор (англ. Digital signal processor, DSP; сигнальный микропроцессор, СМП; процессор цифровых сигналов, ПЦС) специализированный микропроцессор, предназначенный для цифровой обработки сигналов (обычно в реальном масштабе… …   Википедия

  • Сравнение C Sharp и Java — Правильный заголовок этой статьи  Сравнение C# и Java. Он показан некорректно из за технических ограничений. Сравнения языков программирования Общее сравнение Основной синтаксис Основные инструкции Массивы Ассоциативные массивы Операции со… …   Википедия

  • Микроархитектура — Схема, иллюстрирующая место микроархитектурного уровня в многоуровневой структуре компьютера. В компьютерной инженерии …   Википедия

  • Cyrix 6x86 — Cyrix 6x86MX PR200 Cyrix 6x86 (кодовое название M1)  шестое поколение 32 битных процессоров, разработанных фирмой Cyrix и выпущенных IBM и SGS Thomson в 1996 году. Содержание …   Википедия

  • ЕС ЭВМ — У этого термина существуют и другие значения, см. ЕС (значения). ЕС ЭВМ (Единая система электронных вычислительных машин, произносится «еэс эвээм»)  советская серия компьютеров. Аналогия серий System/360 и System/370 фирмы IBM, выпускавшихся …   Википедия

  • История вычислительной техники — История науки …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»