Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Организация и функционирование вычислительных машин1.doc
Скачиваний:
37
Добавлен:
01.05.2014
Размер:
1.13 Mб
Скачать

3DNow! от amd

Появился дополнительный тип данных: упакованные 32 битные вещественные числа.

Появился дополнительный набор команд:

  • Преобразование целых чисел в вещественные и обратно;

  • Вычисления среднего арифметического для элементов/частей регистров;

  • Специальные вычисления по итерационным формулам.

Все команды начинаются с FPxxx, так какF(float) вещественный тип данных, аP– этоMMX.

  1. Обработка чисел с плавающей запятой.

Применяется с использованием математического сопроцессора, который до i486 выполнялся в виде отдельной микросхемы (8087 – 80387).

Независимо от наличия сопроцессора, обработка может быть осуществлена тремя способами:

  1. Использование библиотеки эмулятора - автоматически определяет сопроцессор, если он есть, то все подстраивается под него, если нет, то будет эмулировать.

  2. При отсутствии библиотеки математического сопроцессора возникает прерывание и выполнение программы будет прервано.

  3. Использование библиотеки альтернативной математики - считается, что сопроцессор отсутствует.

Первый способ несовместим с резидентными программами (так как одни и те же прерывания используются для эмулятора и резидентных программ). Поэтому для таких программ надо использовать третий способ. Второй способ самый быстрый.

Назначение математического сопроцессора:

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

Np

Значения десятичных чисел

Диапазон

32 Короткое вещественное

6 / 7

10-38- 1037

64 Длинное вещественное

15 / 16

10-308- 10307

80 Расширенное вещественное

18 / 19

10-4932- 104931

Word Integer - 16 бит

Short Integer - 32 бит

Long Integer - 64 бит

PackedDecimal- 18 десятичных цифр10 байт (80 бит)

pm

Положительная / отрицательная бесконечность 01 | 1 … 1 00 … 0

Неопределенность 1 | 1 … 1 10 … 0

Не число 0 | 1 … 1  0

Сопроцессор представляется расширением центрального процессора с дополнительными восьмью восьмидесяти битными регистрами в виде аппаратного стека с номерами: st(0) –st(7) Для задания вершины стека используется регистрST, который указывает на один из восьми регистров.

  1. Управляющие регистры:

SR (слова состоянием ) флаг условий, занятость сопроцессора, флаги ST.

CR– регистр управления, задает режим обработки (способы округления, точность и маскирование ошибок).

TW– теговый регистр содержит двух битовое поле для каждого из восьми регистров сопроцессора

TW i - st(i)

  1. вещественное число не равное нулю

  2. вещественное число равное нулю

10 не число

  1. не инициализировано

Сопроцессор называется так потому – что может работать параллельно с процессором после инициализации. Языки высокого уровня используют его непосредственно, а ассемблер порождает ESCкоманды.

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

  1. Пересылки

FLD– загружает регистр сопроцессора из памяти (или из другого регистра).

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

FSTP– аналогичноFSTтолько в конце выталкивает.

Загрузка констант: FLD1, FLDPi, . . .

  1. Арифметические команды выполняют четыре арифметических действия над всеми типами данных. Даже обработка целых чисел в сопроцессоре идет по принципу вещественных чисел.

  1. Элементарные функции: FSQRT,FABS,FSIN,FCOS,FPTAN,FPATAN, . . .

F2XM1 = 2­X – 1 FYL2X = Y * Log 2 X

  1. Команды управления.

При программировании обработки выражений в сопроцессоре, они представляются в виде польской инверсной записи (ПОЛИЗ или RPN–ReversedPolishNotation). Любое выражение преобразуется к постфиксному виду (бесскобочная запись).

Примеры:

  1. f:= (a + b) * pi – c

ab + pi * c – f :=

  1. f:= atan ( sqrt (x2 / (x2 - 1) )

xx * xx * 1 - / sqrt atan f :=

Для первого примера.

DataSegment

aDQ2.5

b DQ 6.0

c DQ 3.5

f DQ ?

Data End

Code Segment

Assume cs : Code, ds : Data

Public f

Expression Proc Far

Fld a st(0)

Fld b st(1)

Fadd st(0) + st(1)  st(0)

Fld pi pi  st(1)

Fmnl st(0) * st(1)  st(0)

Fld c st(1)

Fsub st(0) – st(1)  st(0)

Fstp f f:= st(0); st(1)  st(0)

Ret

ExpressionEndP

CodeEndS

Здесь и далее иллюстрации использования команд и описания процессов обработки приводятся на языке Ассемблера, краткие сведения по которому приведены вприложении 1.