Мои Конспекты
Главная | Обратная связь

...

Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

СОПРОЦЕССОР И ЕГО ПРОГРАММИРОВАНИЕ





Помощь в ✍️ написании работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Сопроцессор (FPU, Floating Point Unit) как модуль для выполнения операций над числами с плавающей запятой представляет из себя специальное устройство, имеющее общий с основным процессором (CPU) доступ к потоку команд и памяти данных. Начиная с модели 80486DX сопроцессор исполняется на одной микросхеме с процессором, но остаётся логически отдельным устройством. С точки зрения программиста сопроцессор представляет из себя множество регистров и набор команд, предназначенных для обработки собственных типов данных: три целых двоичных, один целый десятичный и три – с плавающей запятой.

Независимо от типа обрабатываемых данных, при загрузке в регистры сопроцессора все они преобразуются к внутреннему формату данных сопроцессора – 10-байтному вещественному формату. При сохранении результатов в память выполняется обратное преобразование в соответствии с сохраняемым типом. В следующей таблице даны сведения о типах данных сопроцессора.

 

Тип данных Число бит К-во знач. цифр Диапазон
Целое слово –32768…32767
Короткое целое –2х109…2х109
Длинное целое –9х1018…9х1018
Упаков. десятичное –99..99…+99..99 (18 цифр)
Короткое веществ. 1.18х10-38…3.40х1038
Длинное веществ. 15-16 2.23х10-308…1.79х10308
Расшир. веществ. 3.37х10-4932…1.18х104932

 

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

· Положительный и отрицательный ноль;

· Положительная и отрицательная бесконечность;

· Денормализованные числа;

· Неопределённость;

· Сигнальные не-числа (SNAN);

· Спокойные (тихие) не-числа (QNAN);

· Неподдерживаемые числа.

 

Регистры FPU. FPU предоставляет восемь регистров для хранения данных и 5 вспомогательных регистров.

Регистры данных (R0-R7) не адресуются по физическим именам, а рассматриваются в качестве стека, вершина которого называется ST (или ST(0)), и которая может находиться в любом физическом регистре. Её положение указывается полем TOP регистра SWR. Остальные регистры доступны программисту под именами ST(1) – ST(7).Операции могут выполняться либо между двумя операндами в вершине стека (в этом случае используется команда без операндов), либо между вершиной стека и операндом в памяти. Загрузка и выгрузка операндов всегда идет через вершину стека, при этом устанавливается новое соответствие физических и логических регистров (но программисту не надо об этом задумываться).

Регистр SWR – 16-битный регистр состояния.

 

№ бита
Название B C3 TOP C2 C1 C0 ES SF PE UE OE ZE DE IE

 

Здесь B –бит занятости сопроцессора, C3–C0 – условные флаги, ESиSF –флаги ошибок, PE– IE – флаги состояния (неточный результат, антипереполнение, переполнение, деление на ноль, денормализация результата, недопустимая операция).

Регистр CWR –16-битный регистр управления.

 

№ бита
Название   RC PC     PM UM OM ZM DM IM

 

Здесь 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, при этом установится следующее соответствие битов и условий:

 

УСЛОВИЕ C3 C2 C0
ZF PF CF
 
ST(0) > источник
ST(0) < источник
ST(0) = источник
Несравнимы

 

Пример программы. Ниже даётся фрагмент программы для вычисления функции 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; вычисление синуса от операнда в вершине стека.

fstp y; запись результата в память.

……………………………………………………………………………

 

Доверь свою работу ✍️ кандидату наук!
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой



Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.