Меню Рубрики

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

Сопроцессор — что такое? Описание и отзывы о работе

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

Что такое сопроцессор: общее понимание

Прежде всего давайте посмотрим, что это вообще такое и для чего нужно. Исходя из названия этого устройства, нетрудно сделать вывод о том, что это какой-то дополнительный процессор, который установлен в компьютерной системе вместе с главным (центральным). Как и ЦП, сопроцессор монтируется на материнской плате. Однако следует различать основные варианты его установки. Что касается устройства сопроцессора, он может быть представлен и в виде отдельной микросхемы (чипа), для которого на «материнке» отведено специальное место для монтажа (шина), и в виде компонента, встроенного прямо в центральный процессор.

Основное предназначение сопроцессора

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

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

Типы сопроцессоров

В большинстве своем сопроцессоры можно условно разделить на три больших класса:

  • математические;
  • сопроцессоры ввода/вывода;
  • сопроцессоры для выполнения узконаправленных задач.

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

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

Узконаправленных задач в компьютерных технологиях можно насчитать достаточно много (на этом остановимся отдельно), однако в качестве наиболее яркого примера можно привести всевозможные логические микросхемы, входящие в соответствующие цепочки обработки данных (например, в свое время очень широкое распространение получили сопроцессоры серии 8087 для ЦП линеек 8086 и 8088 от Intel, хотя именно сопроцессоры для связки с ЦП могут выпускаться и сторонними производителями).

Основные команды сопроцессора

Что такое сопроцессор, немного разобрались. Теперь отдельно стоит сказать несколько слов об основных командах.

Полный набор содержит порядка 80 базовых команд, однако наиболее существенными и часто применяемыми являются следующие:

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

Генераторы звука

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

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

  • интегрированные;
  • устанавливаемые на материнской плате в слотах PCI;
  • внешние (подключаемые через другие интерфейсы, например, USB).

Графические процессоры

Видеокарты тоже относятся к разряду сопроцессоров, однако для них наиболее употребительным является обозначение вроде графического процессора, чипа или адаптера. Этот тип устройств по большей части относится к оборудованию, которое разгружает ЦП и ОЗУ в плане вычислительных операций с плавающей запятой, которые наиболее часто применяются в современных компьютерных играх или при обработке графики или видео.

Такие адаптеры разделяют всего на два типа: интегрированные и дискретные.

Само собой разумеется, что для корректной работы вышеописанных устройств в качестве соответствующих сопроцессоров драйвер в Windows-системах просто необходим. Без такого управляющего программного обеспечения все это «железо» станет грудой металлолома и работать попросту не будет. И именно поэтому, когда выдается какое-то сообщение, касающееся отсутствия или невозможности инициализации драйвера, это не всегда может относиться исключительно к описываемому компоненту ЦП.

Вероятностные процессоры

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

Драйвер сопроцессора: что делать при появлении ошибок, связанных с его отсутствием?

Наконец, перейдем к устранению возможных неполадок. Чаще всего, как уже было сказано выше, операционная система выдает сообщение об отсутствии драйвера сопроцессора (7-я модификация у вас установлена или другая версия Windows, в данном случае неважно). Если речь идет о графических и звуковых картах, тут все просто. Достаточно обновить или переустановить соответствующее ПО, используя для этого либо загрузку драйверов с официальных ресурсов производителей, либо за счет применения автоматизированных утилит.

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

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

Источник

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

Важной частью архитектуры микропроцессоров Intel является наличие устройства для обработки числовых данных в формате с плавающей точкой, называемого математическим сопроцессором . Архитектура компьютеров на базе микропроцессоров вначале опиралась исключительно на целочисленную арифметику. С ростом мощи стали появляться устройства для обработки чисел с плавающей точкой. В архитектуре семейства микропроцессоров Intel 8086 устройство для обработки чисел с плавающей точкой появилось в составе компьютера на базе микропроцессора i8086/88 и получило название математический сопроцессор или просто сопроцессор. Выбор такого названия был обусловлен тем, что,

  • во-первых, это устройство было предназначено для расширения вычислительных возможностей основного процессора;
  • во-вторых, оно было реализовано в виде отдельной микросхемы, то есть его присутствие было необязательным. Микросхема сопроцессора для микропроцессора i8086/88 имела название i8087.

С появлением новых моделей микропроцессоров Intel совершенствовались и сопроцессоры, хотя их программная модель осталась практически неизменной. Как отдельные (а, соответственно, необязательные в конкретной комплектации компьютера) устройства, сопроцессоры сохранялись вплоть до модели микропроцессора i386 и имели название i287 и i387 соответственно. Начиная с модели i486, сопроцессор исполняется в одном корпусе с основным микропроцессором и, таким образом, является неотъемлемой частью компьютера.

Основные возможности математического сопроцессора:

  • полная поддержка стандартов IEEE-754 и 854 на арифметику с плавающей точкой. Эти стандарты описывают как форматы данных, с которыми должен работать сопроцессор, так и набор реализуемых им функций;
  • поддержка численных алгоритмов для вычисления значений тригонометрических функций, логарифмов и т. п.;
  • обработка десятичных чисел с точностью до 18 разрядов, что позволяет сопроцессору выполнять арифметические операции без округления над целыми десятичными числами со значениями до 10 18 ;
  • обработка вещественных чисел из диапазона ±3.37х10 -4932 …1.18х10 +4932 .

Форма представления чисел с плавающей точкой описана здесь .

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

Тип чисел Знак Степень Целое Мантисса
+∞ 0 11…11 1 00…00
положительные
нормированные
0 00…01 — 11…10 1 00…00 — 11…11
положительные ненормированные 0 00…00 0 00…00 — 11…11
0 0, 1 00…00 0 00…00
отрицательные ненормированные 1 00…00 0 00…00 — 11…11
отрицательные нормированные 1 00…01 — 11…10 1 00…00 — 11…11
-∞ 1 11…11 1 00…00
нечисла
(NaN — Not a number)
* 11…11 1 **…** ≠0

Числа простой и двойной точности ( float ( DD ) и double ( DQ ) соответственно) могут быть представлены только в нормированной форме. При этом бит целой части числа является скрытым и подразумевает логическую 1. Остальные 23 (52) разряда хранят двоичную мантиссу числа.

Числа двойной расширенной точности ( long double ( DT )) могут быть представлены как в нормированной, так и в ненормированной форме, поскольку бит целой части числа не является скрытым и может принимать значения как 0, так и 1.

Основным типом данных, которыми оперирует математический сопроцессор, являются 10-байтные данные ( DT ).

Программная модель сопроцессора

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

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

  • Восемь регистров r0…r7 , составляющих основу программной модели сопроцессора — стек сопроцессора. Размерность каждого регистра 80 битов. Такая организация характерна для устройств, специализирующихся на обработке вычислительных алгоритмов.
  • Три служебных регистра:
    — регистр состояния сопроцессора swr (Status Word Register — регистр слова состояния) — отражает информацию о текущем состоянии сопроцессора;
    — управляющий регистр сопроцессора cwr (Control Word Register — регистр слова управления) — управляет режимами работы сопроцессора;
    — регистр тегов twr (Tags Word Register — слово тегов) — используется для контроля за состоянием каждого из регистров стека.
  • Два регистра указателей — данных dpr (Data Point Register) и команд ipr (Instruction Point Register). Они предназначены для запоминания информации об адресе команды, вызвавшей исключительную ситуацию и адресе ее операнда. Эти указатели используются при обработке исключительных ситуаций (но не для всех команд).

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

Регистр состояния swr – отражает текущее состояние сопроцессора после выполнения последней команды. В регистре swr содержатся поля, позволяющие определить: какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды (некий аналог регистра флагов основного процессора).

Структурно регистр swr состоит из:

    6 флагов исключительных ситуаций PE, OE, UE, ZE, DE, IE.
    Исключения — это разновидность прерываний, с помощью которых процессор информирует программу о некоторых особенностях ее реального исполнения. Сопроцессор также обладает способностью возбуждения подобных прерываний при возникновении определенных ситуаций (не обязательно ошибочных). Все возможные исключения сведены к 6и типам, каждому из которых соответствует 1 бит в регистре swr . Программисту не обязательно писать обработчик для реакции на ситуацию, приведшую к некоторому исключению. Сопроцессор умеет самостоятельно реагировать на многие из них. Это так называемая обработка исключений по умолчанию. Для того чтобы вызвать обработку определенного типа исключения по умолчанию, необходимо это исключение оставить не маскированным. Такое действие выполняется с помощью установки в 1 соответствующего бита в управляющем регистре сопроцессора cwr . Типы исключений, фиксируемые с помощью регистра swr:

  • IE (Invalide operation Error) — недействительный код операция;
  • DE (Denormalized operand Error) — ненормированный операнд;
  • ZE (divide by Zero Error) — ошибка деления на нуль;
  • ОЕ (Overflow Error) — ошибка переполнения. Возникает в случае выхода порядка числа за максимально допустимый диапазон;
  • UE (Underflow Error) — ошибка антипереполнения. Возникает, когда результат слишком мал (близок к нулю);
  • РЕ (Precision Error) — ошибка точности. Устанавливается, когда сопроцессору приходится округлять результат из-за того, что его точное представление невозможно. Так, сопроцессору никогда не удастся точно разделить 10 на 3.

При возникновении любого из этих шести типов исключений устанавливается в единицу соответствующий бит в регистре swr , вне зависимости от того, было ли замаскировано это исключение в регистре cwr или нет.

  • бита ошибки работы стека сопроцессора SF (Stack Fault). Бит устанавливается в 1, если возникает одна из трех исключительных ситуаций — РЕ, UE или IE. В частности, его установка информирует о попытке записи в заполненный стек, или, напротив, попытке чтения из пустого стека. После того как значение этого бита проанализировано, его нужно снова сбросить в 0, вместе с битами РЕ, UE и IE (если они были установлены);
  • бита суммарной ошибки работы сопроцессора ES (Error Summary). Бит устанавливается в 1, если возникает любая из шести перечисленных выш исключительных ситуаций;
  • четырех битов с0…с3 (Condition Code) — кода условия. Назначение этих битов аналогично флагам в регистре EFLAGS основного процессора — отразить результат выполнения последней команды сопроцессора.
  • трехбитного поля TOP . Поле содержит указатель регистра текущей вершины стека.
  • бита B занятости сопроцессора.
  • Регистр управления работой сопроцессора cwr – определяет особенности обработки числовых данных. С помощью полей в регистре cwr можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения.

    Он состоит из:

    • шести масок исключений PM, UM, OM, ZM, DM, IM ;
    • поля управления точностью PC (Precision Control);
    • поля управления округлением RC (Rounding Control).

    Маски исключений предназначены для маскирования исключительных ситуаций, возникновение которых фиксируется с помощью шести бит регистра swr . Если какие-то маскирующие биты исключений в регистре cwr установлены в 1, то соответствующие исключения будут обрабатываться самим сопроцессором. Если для какого-либо исключения в соответствующем бите маски исключений регистра cwr содержится 0, то при возникновении исключения этого типа будет возбуждено прерывание int 16 (10h). Операционная система должна содержать (или программист должен написать) обработчик этого прерывания. Он должен выяснить причину прерывания, после чего, если это необходимо, исправить ее, а также выполнить другие действия.

    2-битовое поле управления точностью PC предназначено для выбора длины мантиссы. Возможные значения в этом поле означают:

    • PC =00 — длина мантиссы 24 бита;
    • PC =10 — длина мантиссы 53 бита;
    • PC =11 — длина мантиссы 64 бита.

    По умолчанию устанавливается значение поля PC =11.

    Поле управления округлением RC позволяет управлять процессом округления чисел в процессе работы сопроцессора. Необходимость операции округления может появиться в ситуации, когда после выполнения очередной команды сопроцессора получается не представимый результат, например, периодическая дробь. Установив одно из значений в поле RC , можно выполнить округление в необходимую сторону.
    Значения поля RC с соответствующим алгоритмом округления:

    • 00 — значение округляется к ближайшему числу, которое можно представить в разрядной сетке регистра сопроцессора;
    • 01 — значение округляется в меньшую сторону;
    • 10 — значение округляется в большую сторону;
    • 11 — производится отбрасывание дробной части числа. Используется для приведения значения к форме, которая может использоваться в операциях целочисленной арифметики.

    Бит 12 в регистре cwr физически отсутствует и считывается равным 0.

    Регистр тегов twr – представляет собой совокупность двухбитовых полей. Каждое поле соответствует определенному физическому регистру стека и характеризует его текущее состояние. Команды сопроцессора используют этот регистр, например, для того, чтобы определить возможность записи значений в эти регистры. Изменение состояния любого регистра стека отражается на содержимом соответствующего этому регистру 2-битового поля регистра тега. Возможны следующие значения в полях регистра тега:

    • 00 — регистр стека сопроцессора занят допустимым ненулевым значением;
    • 01 — регистр стека сопроцессора содержит нулевое значение;
    • 10 — регистр стека сопроцессора содержит одно из специальных численных значений, за исключением нуля;
    • 11 — регистр пуст и в него можно производить запись. Это значение в двухбитовом поле регистра тегов не означает, что все биты соответствующего регистра стека должны быть обязательно нулевыми.
    Принцип работы сопроцессора

    Регистровый стек сопроцессора организован по принципу кольца. Cреди восьми регистров, составляющих стек, нет такого, который является вершиной стека. Все регистры стека с функциональной точки зрения абсолютно одинаковы и равноправны. Вершина в кольцевом стеке сопроцессора является плавающей. Контроль текущей вершины осуществляется аппаратно с помощью 3-битового поля top регистра swr .

    В поле top фиксируется номер регистра стека r0…r7 , являющегося в данный момент текущей вершиной стека.
    Команды сопроцессора оперируют не физическими номерами регистров стека r0…r7 , а их логическими номерами st(0)…st(7) . C помощью логических номеров реализуется относительная адресация регистров стека сопроцессора. Например, если текущей вершиной до записи в стек является физический регистр стека r3 , то после записи в стек текущей вершиной становится физический регистр стека r2 . То есть, по мере записи в стек, указатель его вершины движется по направлению к младшим номерам физических регистров (уменьшается на единицу). Если текущей вершиной является r0 , то после записи очередного значения в стек сопроцессора его текущей вершиной станет физический регистр r7 . Что касается логических номеров регистров стека st(0)…st(7) , то они перемещаются вместе с изменением текущей вершины стека. Логическая вершина стека всегда имеет имя st(0) .
    Поскольку при написании программы разработчик манипулирует не абсолютными, а относительными номерами регистров стека, у него могут возникнуть трудности при попытке интерпретации содержимого регистра тегов twr , с соответствующими физическими регистрами стека. В качестве связующего звена необходимо привлекать информацию из поля top регистра swr . Таким образом реализуется принцип кольца.
    Такая организация стека обладает большой гибкостью, в частности при передаче параметров в процедуру. Для повышения гибкости разработки и использования процедур не желательно привязывать их по передаваемым параметрам к аппаратным ресурсам (физическим номерам регистров сопроцессора). Гораздо удобнее задавать порядок следования передаваемых параметров в виде логических номеров регистров. Такой способ передачи был бы однозначным и не требовал от разработчика знания лишних подробностей об аппаратных реализациях сопроцессора. Логическая нумерация регистров сопроцессора, поддерживаемая на уровне системы команд, идеально реализует эту идею. При этом не имеет значения, в какой физический регистр стека сопроцессора были помещены данные перед вызовом подпрограммы, определяющим является только порядок следования параметров в стеке. По этой причине подпрограмме важно знать только порядок размещения передаваемых параметров в стеке.

    Принцип работы сопроцессора совместно с центральным процессором
    Процессор и сопроцессор имеют свои раздельные системы команд и форматы обрабатываемых данных. Несмотря на то, что сопроцессор архитектурно представляет собой отдельное вычислительное устройство, он не может существовать отдельно от основного процессора. Процессор и сопроцессор, являясь двумя самостоятельными вычислительными устройствами, могут работать параллельно. Но это распараллеливание распространяется только на выполнение команд. Оба процессора подключены к общей системной шине и имеют доступ к одной и той же информации. Инициирует процесс выборки очередной команды всегда основной процессор. После выборки команда попадает одновременно в оба процессора. Любая команда сопроцессора имеет код операции, первые пять бит, которого имеют значение 11011. Когда код операции начинается этими битами, то основной процессор по дальнейшему содержимому кода операции выясняет, требует ли данная команда обращения к памяти. Если это так, то основной процессор формирует физический адрес операнда и обращается к памяти, после чего содержимое ячейки памяти выставляется на шину данных. Если обращение к памяти не требуется, то основной процессор заканчивает работу над данной командой (не делая попытки ее исполнения) и приступает к декодированию следующей команды из текущего входного командного потока. Выбранная команда попадает в сопроцессор одновременно с основным процессором. Сопроцессор, определив по первым пяти битам, что очередная команда принадлежит его системе команд, начинает ее исполнение. Если команда требует операнды из памяти, то сопроцессор обращается к шине данных за чтением содержимого ячейки памяти, которое к этому моменту предоставлено основным процессором.

    В определенных случаях необходимо согласовывать работу обоих устройств. К примеру, если во входном потоке сразу за командой сопроцессора следует команда основного процессора, использующая результаты работы предыдущей команды, то сопроцессор не успеет выполнить свою команду за то время, пока основной процессор, пропустив сопроцессорную команду, выполнит свою. При этом что логика работы программы будет нарушена. Возможна и другая ситуация. Если входной поток команд содержит последовательность из нескольких команд сопроцессора, то процессор пропустит их очень быстро, но он должен обеспечить внешний интерфейс для сопроцессора. Эти и другие, более сложные ситуации, приводят к необходимости синхронизации между собой работы двух процессоров. В первых моделях микропроцессоров это делалось путем вставки перед или после каждой команды сопроцессора специальной команды wait или fwait . Работа данной команды заключалась в приостановке работы основного процессора до тех пор, пока сопроцессор не закончит работу над последней командой. В моделях микропроцессора (начиная с i486) подобная синхронизация выполняется автоматически. Но для некоторых команд из группы команд управления сопроцессором оставлена возможность выбора между командами с синхронизацией (ожиданием) и без нее.

    Источник

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Windows восстановление файловых ассоциаций windows 7
  • Windows восстановлена после непредвиденного завершения работы как исправить
  • Windows восстановлена после непредвиденного завершения работы bluescreen
  • Windows восстановлена после непредвиденного завершения работы bccode 124
  • Windows была восстановлена после непредвиденного завершения работы