Машинный формат с плавающей точкой ( Float Point Representation ). Параметры форматов сопроцессора INTEL ( FPU 80 x 87).



 

Типы с плавающей точкой

 

Типы значений с плавающей точкой Real, Single, Double, Extended и Comp (вещественный, с одинарной точностью, с двойной точностью, с повышенной точностью и сложный) хранятся в виде двоичного представления знака (+ или -), показателя степени и значащей части числа. Представляемое число имеет значение:

 +/- значащая часть Х 2^показатель степени, где значащая часть числа представляет собой отдельный бит слева от двоичной десятичной точки (то есть 0 <= значащая часть <= 2).

В следующей далее схеме слева расположены старшие значащие биты, а справа - младшие значащие биты. Самое левое значение хранится в самых старших адресах.  Например, для значения вещественного типа e сохраняется в первом байте, f - в следующих пяти байтах, а s - в старшем значащем бите последнего байта.

 

Вещественный тип

 

Шестибайтовое (48-битовое) вещественное число (Real) подраз-

деляется на три поля:

               1   39      8

             +---+------..-------+--------+

             | s | f   | e |

             +---+------..-------+--------+

                 msb       lsb msb lsb

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

Здесь и далее msb означает более значащий бит (старшие разряды), lsb - менее значащий (младшие разряды).

 

            Тип числа с одинарной точностью

 

Четырехбайтовое (32-битовое) число типа Single подразделяется на три поля:

              1 8      23

            +---+------+-------..---------+

            | s | e |   f    |

            +---+------+-------..---------+

                msb lsb msb       lsb

 

Тип числа с двойной точностью

 

Восьмибайтовое (64-битовое) число типа Double подразделяется на три поля:

            1 11     52

          +---+------+-------..--------+

          | s | e |   f   |

          +---+------+-------..--------+

             msb lsb msb        lsb

 

 

Тип числа с повышенной точностью

 

Десятибайтовое (80-битовое) число типа Extended подразделя-

ется на четыре поля:

            1 15 1     63

          +---+--------+---+--------..-------+

          | s | e | i |   f   |

          +---+--------+---+--------..-------+

              msb lsb msb         lsb

 

Сложный тип

 

Восьмибайтовое (64-битовое) число сложного типа (Comp) подразделяется на два поля:

            1        63

          +---+-----------..--------------+

          | s |      d          |

          +---+-----------..--------------+

              msb                   lsb

 

в противном случае переменная представляет собой 64-битовое значение, являющееся дополнением до двух.

 

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

Он может работать с двоичными и десятичными целыми, а также вещественными числами, длина которых составляет 2 – 10 байт.

 

К восьми регистрам данных сопроцессора можно обращаться или как к стеку, из которого можно извлечь или включить операнд, или пользуясь индексированием относительно указателя стека, или произвольным образом. При относительной стековой адресации, когда требуемый регистр выбирается индексированием относительно указателя стека, регистры располагаются как бы по окружности, причем регистр 7 следует за регистром 0. Так как все числа внутри процессора 8087 хранятся во временном вещественном формате, каждый регистр имеет длину 80 бит. С каждым регистром данных ассоциирован 16-битный регистр признака (тэга), который показывает, является содержимое регистра данных действительным, нулевым, специальным значением или пустым.

 

Процессор 8087 распознает шесть типов ошибок, причём каждый тип можно индивидуально замаскировать от генерирования прерывания установкой соответствующих битов в 16-битном регистре управления. Если ошибка замаскирована, она не вызывает прерывания, а процессор 8087 реализует стандартную реакцию и переходит к следующей команде. Стандартными реакциями являются:

 

-для недействительной операции – возвращение «не-числа», если один из операндов – «не-число», и неопределённости в других случаях;

-для ненормализованности операнда – продолжение операции над этим числом;

-для деления на нуль и переполнения порядка – возвращение бесконечности с правильным знаком;

-для антипереполнения – денормализация результата;

-для ошибки точности – округление результата.

 

Как правило, ошибку точности следует замаскировать в арифметике с плавающей точкой, так как в большинстве применений ошибки точности возникают очень часто.

 

Процессор 8087 содержит около 75000 транзисторов на кристалле размером 5,5x5,5 мм; его напряжение питания составляет +5 В, а потребляемая мощность – около 2 Вт. Так же, как и процессоры 8086/8088, сопроцессор 8087 выпускается в 40-контактном корпусе с двухрядным расположением контактов.

 

Процессор 8087 имеет 68 команд, которые по выполняемым им функциям можно разделить на шесть групп: 15 команд управления процессором, 9 – передачи данных, 7 – сравнения, 7 – операций с константами, 25 – арифметических и 5 – трансцендентных.

 

Все команды арифметического сопроцессора начинаются с буквы F. Далее, для удобства программиста все команды работы с целыми двоичными числами начинаются с комбинации FI, а с упакованными двоично-десятичными – с комбинации FB. От генерации ассемблером команды ожидания можно отказаться, явно указав в команде сопроцессора префикс FN вместо F.

 

  1. Функционально-логическая организация микропроцессоров серии INTEL 80x86. Основные блоки и устройства: - назначение, функции, принципы действия. Режимы работы МП и способы адресации операндов.

 

      Функционально-логическая схема МП Intel 80486

 

        ┌───────────────────┐

     ┌──┤BIU-шинный итерфейс│ <══════> шина CP

   A │ └───────────────────┘

     │ ┌───────┐         ┌─────────────┬─────────────┐

     └>│cache 1│<────┐   │Project Unit │очередь кодов│

   ╔═══╡ 8 kb │ │   │ устройство └──────┐ 32 │

   ║ └───────┘ │   │ опережающей выборки│ байт │

B ║ ┌──────────┐ │ A320 └─────────┬──────────┴──────┘

U ║ │Page Unit │ │             │

S ╠═>├──────────┤ │      ┌──────V──────┐

   ║ │Acc Buffer│ │ ┌──┬──┬───┤ Дешифратор │

64 ║ └──────────┘ │ │ │ │ ├──────┬──────┤

бит ║ ┌──────────────V─V┐ │ │ │1 ступ│2 ступ│

   ║ │ Segment Unit │ │ │ └───┬──┴──┬───┘

   ╠═>├───┬─────────────┤ │ │  │ │

   ║ │key│Схема конроля│ │ │ ┌───V─────V───┐

   ║ └───┴─────────────┘ │ │ │ УУ │

   ║                 │ │ ├─────────────┤

   ║ ┌───────────┬─────┐ │ │ │ПЗУ микрокода│

   ║ │││ сдвиг-ль│ АЛУ │ │ │ └─────────────┘

   ╠═>├───────────┴─────┤<┘ │

   ║ │Файл рег-ов. РОНы│ │

   ║ └─────────────────┘ │ MK

   ║ ┌───┬──────────┐  │

   ║ │FPU│ стековый │  │

   ║ ├───┘ файл │<──────┘

   ╚═>│ рег-ов R0-R7 │

      └──────────────┘

 

16-битный микропроцессор Intel 8086, выпущенный 8 июня 1978 г., содержал на кристалле размером 5,5x5,5 мм около 29000 транзисторов и производился по высококачественной nМОП-технологии. Производительность процессора 8086 значительно превышает производительность его 8-битного предшественника – микропроцессора 8080 – и составляет от 330 до 750 тыс. операций в секунду.

 

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

 

Наличие сегментных регистров обеспечивает следующие преимущества:

- ёмкость памяти может доходить до 1 Мбайт, хотя команды оперируют 16- битными адресами;

 

-секции кода, данных и стека могут иметь длину более 64 Кбайт благодаря использованию нескольких сегментов кода, данных или стека;

 

-упрощается использование отдельных областей памяти для программы, её данных и стека;

 

-при каждом выполнении программы она сама и (или) её данные могут размещаться в разных областях памяти. (Это связано также с мультипрограммированием, поскольку позволяет динамически перемещать программы между различными областями памяти.)

 

Система команд микропроцессора 8086 состоит из 98 команд: 19 команд передачи данных, 38 команд их обработки, 24 команд перехода и 17 команд управления процессором. Каждая команда состоит из кода операции (КОП, или опкод), идентифицирующего её, и операндов, несущих требуемую для операции информацию. Команды могут содержать несколько операндов, но чем больше операндов и чем они длиннее, тем больше места занимает команда в памяти и тем больше времени требуется для передачи её в ЦП. КОП и операнды могут иметь произвольную длину и не обязаны быть непрерывными; в то же время общая длина команды должна выражаться целым числом байт. Часто КОП занимает первый байт команды и три средних бита второго байта (это 3-битовое поле часто называют mod). КОП других команд занимает часть первого байта команды, а остальные биты этого байта занимает(ют) операнд(ы). Команды, добавленные к системе команд процессора 8086 в более совершенных процессорах (главным образом, в процессорах 80186 и 80386), содержат КОП в первых двух байтах и операнд(ы) – в остальных. Всего же в системе команд процессора 8086 насчитывается более 3800 команд вместе со всеми их вариантами.

 

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

 

Центральный процессор 8086 имеет четыре 16-битных регистра общего назначения AX, BX, CX, DX, четыре регистра-указателя SI, DI, BP и SP, четыре регистра сегментов CS, DS, ES, SS, один 16-битовый регистр флагов FLAGS и указатель программ IP

Регистр-аккумулятор AX используется для хранения промежуточных данных и результатов.

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

Регистр-счетчик CX предназначен для управления числом итераций в цикле или числом повторений в командах REP в строковых операциях.Регистр данных DX используется как вторичный аккумулятор для хранения промежуточных данных и результатов.Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова в таких строковых командах, как LODS ("загрузить строку"), CMPS ("сравнить строку"), MOVS ("переслать строку"). При базово-индексной адресации содержимое регистра SI может суммироваться с содержимым регистра BX.

Индексный регистр-приемник DI используется как указатель назначения для адреса байта или слова в строковых командах, таких как SCAS (сканировать строку), CMPS, MOVS, STOS (записать строку). При базово-индексной адресации для получения адреса операнда содержимое регистра DI может суммироваться с содержимым регистра BX.

Регистр-указатель стека SP применяется для работы с данными в стековых структурах. Его содержимое указывает адрес элемента на вершине стека, что удобно при организации обработки прерываний, процедур вызова подпрограммы и выхода из нее путем сохранения адреса возврата на вершине стека.

Регистр-указатель базы BP используется как дополнительный указатель для работы с данными в стековых структурах. В режиме базово-индексной адресации содержимое регистра BP может суммироваться с содержимым регистров SI или DI. Регистры сегментов используются для идентификации текущего сегмента адресного пространства.

Регистр сегмента команд CS указывает сегмент, содержащий адрес текущей выполняемой программы.

Регистр сегмента данных DS содержит начало зоны адресов, которая в общем случае включает программно изменяемые таблицы и константы. Регистр дополнительного сегмента ES указывает начало области памяти, которая обычно используется для запоминания промежуточных данных.

Регистр сегмента стека SS содержит начальный адрес стековой структуры в памяти ЭВМ.

Указатель команд IP содержит адрес следующей команды в сегменте памяти, определяемом содержимым регистра сегмента команд CS.

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

 


Дата добавления: 2020-01-07; просмотров: 349; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!