Сопроцессор и его программирование
Сопроцессор (FPU, Floating Point Unit) как модуль для выполнения операций над числами с плавающей запятой представляет из себя специальное устройство, имеющее общий с основным процессором (CPU) доступ к потоку команд и памяти данных. Начиная с модели 80486DX сопроцессор исполняется на одной микросхеме с процессором, но остаётся логически отдельным устройством. С точки зрения программиста сопроцессор представляет из себя множество регистров и набор команд, предназначенных для обработки собственных типов данных: три целых двоичных, один целый десятичный и три – с плавающей запятой. Независимо от типа обрабатываемых данных, при загрузке в регистры сопроцессора все они преобразуются к внутреннему формату данных сопроцессора – 10-байтному вещественному формату. При сохранении результатов в память выполняется обратное преобразование в соответствии с сохраняемым типом. В следующей таблице даны сведения о типах данных сопроцессора.
Кроме обычных чисел, формат IEEE сопроцессора предусматривает несколько специальных случаев, которые могут получаться в результате математических операций, и над которыми модно выполнять отдельные операции: · Положительный и отрицательный ноль; · Положительная и отрицательная бесконечность; · Денормализованные числа; · Неопределённость; · Сигнальные не-числа (SNAN); · Спокойные (тихие) не-числа (QNAN); · Неподдерживаемые числа.
Регистры FPU. FPU предоставляет восемь регистров для хранения данных и 5 вспомогательных регистров. Регистры данных (R0-R7) не адресуются по физическим именам, а рассматриваются в качестве стека, вершина которого называется ST (или ST(0)), и которая может находиться в любом физическом регистре. Её положение указывается полем TOP регистра SWR. Остальные регистры доступны программисту под именами ST(1) – ST(7).Операции могут выполняться либо между двумя операндами в вершине стека (в этом случае используется команда без операндов), либо между вершиной стека и операндом в памяти. Загрузка и выгрузка операндов всегда идет через вершину стека, при этом устанавливается новое соответствие физических и логических регистров (но программисту не надо об этом задумываться). Регистр SWR – 16-битный регистр состояния.
Здесь B –бит занятости сопроцессора, C3–C0 – условные флаги, ESиSF –флаги ошибок, PE– IE – флаги состояния (неточный результат, антипереполнение, переполнение, деление на ноль, денормализация результата, недопустимая операция). Регистр CWR –16-битный регистр управления.
Здесь RC –управление округлением, PC –управление точностью, PM – IM– маски состояний, соответствующих битам регистра SWR.
Регистр TWR – регистр тегов, каждая пара бит описывает соответствующий физический регистр данных (11 – пуст, 00 – содержит число, 01 – 0, 10 – всё остальное). Регистр FIP – 48-битный физический адрес последней выполненной команды; Регистр FDP – 48-битный физический адрес операнда этой команды. Команды FPU. FPU может выполнять команды загрузки-сохранения данных, команды базовой арифметики, команды сравнения и команды вычисления трансцендентных функций (расширенная арифметика). Независимо от типов исходных данных вычисления в регистрах сопроцессора всегда выполняются над величинами в расширенном вещественном формате. На выполнение команд влияют биты управляющего регистра CWR, а индикация состояний ведётся в регистре SWR. CPU и FPU одновременно «видят» очередную команду выполняемого потока. Сопроцессор распознаёт «свои» команды по битам 11011 в начале кода, а прочие – пропускает. Если команда содержит операнд, то сопроцессор может обратиться к процессору за требуемыми данными. После этого CPU и FPU могут работать параллельно. Для синхронизации работы CPU и FPU может потребоваться команда FWAIT, которая сейчас встроена в большинство команд сопроцессора. Сравнения и условные переходы. Нужно помнить, что условия команд сравнения для сопроцессора записываются не в регистр флагов, а помещаются в биты C3,C2,C0регистра SWR. С помощью команды FSTSW AX можно сохранить регистр SWRв регистре AX.Далее можно проанализировать командами логической обработки соответствующие биты в регистре AXнепосредственно, организовав по ним условный переход, или же переписать регистр AHв младший байт регистра FLAGS, при этом установится следующее соответствие битов и условий:
Пример программы. Ниже даётся фрагмент программы для вычисления функции y=sin(πx2). Команда комментарий …….………………………………………..…………………………………………… finit; инициализация сопроцессора. fld x; x→st(0). fmul x ; st(0):=st(0)*x, st(0)=x2. fldpi;загрузка в st(0) константы π, ;x2 проталкивается в st(1). fmul; перемножение данных в st(0)и st(1); ; после этого в вершине стека – πx2. fsin; вычисление синуса от операнда, ;находящегося в вершине стека (st(0)). fstp y; запись результата в память. ………………………………………………………………………………………….. Вероятно, к этому моменту Вы достаточно уже успели привыкнуть к правилам написания программ, чтобы по данному фрагменту написать целую программу. Если же нет – то рекомендуется заново выполнить лабораторные работы 1–3. Для выполнения работы нужно воспользоваться вариантами заданий из приведённых ниже двух таблиц. В таблицах приведены уравнения в виде . Необходимо преобразовать их к виду , где , и составить программу вычисления значения f(x). Затем необходимо модифицировать программу таким образом, чтобы она вычисляла таблицу значений для данной функции на отрезке с постоянным шагом. Найти два таких значения аргумента, между которыми функция меняет знак. В данной работе требуется предоставить для проверки письменный отчёт, в котором привести составленную программу и результаты её работы.
Задания. 1.2.2 Вычислить значения выражений из табл. 3.3. Номер задания соответствует номеру студента по списку подгруппы. Таблица 3.3
1.4.2. Вычислить суммы и произведения из табл. 3.4. Для функций, указанных в столбце (в) вычислить значения для и . Дополнительное задание: считать суммы и произведения бесконечными и вычислить их с заданной точностью . Таблица 3.4
Лабораторная работа 5
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (531)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |