Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Форматы данных






Процессоры непосредственно используют в качестве операндов знаковые и беззнаковые целые числа, строки байт, цифр и символов, битовые строки, указатели и числа с плавающей запятой. Адресом слова является адрес младшего байта (такой порядок называется Little-Endian Memory Format). Применим также и обратный порядок адресации – Big-Endian Memory Format.

Целочисленный блок ALU микропроцессоров выполняет операции над следующими типами данных (рис.2).

1). Целые двоичные числа без знака (рис.2а) могут быть 8/16/32/64-раз­рядными (Unsigned Byte/Word/Double Word/Quade Word). Например, байт D2 задает целое число без знака, равное 21010, слово D2: FC задает целое число без знака, равное FCD216=6472210 (двоеточие разде­ляет байты в последовательности кодов).

К целым числам без знака относится и специфический тип данных - указатель, который содержит: адрес начала сегмента (база или селектор) и смещение (32бит(16+16), 48бит(16+32)). Значение указателя рассчитывается по правилу вычисления физического адреса.

Например, Указатель D2: FC: 3A: 02 - база 023A16, смещение FCD216 и имеет значение 023A16*1016=23A016+FCD216=1207216=7384210.

2). Целые двоичные числа со знаком (рис.2б) обрабатываются как числа в дополнительном коде. Выполняются операции только над 8/16/32/64-разрядными числами (Integer Byte/Word/Double Word / Quade Word). Единичное значение старшего бита старшего байта является признаком отрицательного числа. Например,

- байт D2 задает целое число со знаком, равное -4610,

- слово D2: FC задает целое число со знаком, равное FCD216= -32E16= -81410.

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

Примеры целых чисел представлены в табл.1.

 

Таблица 1

Число Знак S Значащие разряды
Целое положительное   0 0 … 0 1 - 1 1 … 1 1
Нуль   0 0 … 0 0
Целое отрицательное   1 1 … 1 1 - 0 0.. 0 1
Неопределенность   0 0 0 … 0 0 0

 

3). Двоично-десятичные числа (рис.2в) могут задаваться как в неупако­ванном формате, в котором каждая десятичная цифра занимает один байт, так и в упакованном формате, в котором каждая цифра занимает одну тетраду, т.е. байт содержит две цифры. Знак для обоих форматов кодируется в старшем бите отдельного старшего знакового байта последовательности (значение остальных бит при сложении и вычитании несущественно, а при умножении и делении они должны быть нулевыми). Деся­тичные цифры представлены в коде 8-4-2-1 (BCD code, binary coded decimal). Примеры десятичных чисел:

- неупакованное: 08: 09: 04: 05: 00 = 549810

- упакованное: 98: 54: 02: 80 = -2549810.

4). Строки (рис.2г) байт, слов и двойных слов (Bit String, Byte String, Word String, Double Word String) длиной до 4Гбайт располагаются в последовательных ячейках памяти. Строки используются для указания последовательности символов. Например, последовательность 4D: 49: 43: 52: 4F в коде ASCII (American Standard Code for Information Interchange) задает слово MICRO.

Целочисленный блок ALU обрабатывает также битовые строки (Bit String – наборы смежных бит длиной до 4Гбит), битовые поля (Bit Field – группы до 32 смежных бит, расположенных не более чем в 4 байтах).

 

Блоками FPU обрабатываются упакованные 80-разрядные двоично-десятичные числа и числа в формате с плавающей запятой.

 

 

Рис.2 Форматы данных, обрабатываемых целочисленным арифметико-логическим устройством

Длинные целые двоично-десятичные числа представляются в упакованном формате, в котором под каждую цифру (D0 … D17) отводится тетрада. В памяти эти числа также располагаются с младших разрядов и занимают 10 байт, из которых старший - знаковый. Полный диапазон двоично-десятичных чисел представлен в табл.2 (нуль может быть как +0 и -0), а для представления неопределенности используется специальный код).

 

Таблица 2

Число Знак S Биты 78…72 Значащие цифры D17…D0
Положительное двоично-десятичное     0000…0000 - 1001…1001
Нуль     0000 0000 … 0000
Нуль     0000 0000 … 0000
Отрицательное двоично-десятичное     0000…0000 - 1001…1001
Неопределенность     1111 1111 *…****

Короткое вещественное число (одинарной точности – Single Precision) (рис.3) за­нимает четыре байта. Знак указывается в старшем разряде старшего байта (S = 0 - положительное число, S=1 - отрицательное), причем коды равных по абсолютной величине положительных и отрицательных чисел отличаются только этим битом.

Рис.3 Формат данных с плавающей запятой

Характеристика числа l x занимает 8 разрядов (младший разряд характери­стики хранится в разряде номер 7 третьего байта) и принимает рабочие значения от 0116 до FE16 (от 110 до 25410). Характеристика смещена относительно истинного порядка рx числа на 7F16(12710), т.е. рx = l x – 7F16 (или l x = рx + 7F16). Таким образом, порядок рx может изменяться в пределах от –7E16 до 7F16 (от –12610 до 12710).

Мантисса всегда нормализована и имеет 23 явных разряда и один неявный. Нормализация выполняется так, что старшая значащая единица кода мантиссы всегда располагается в разряде с весом 20 (перед запятой). Этот разряд в коде мантиссы не указывается, но всегда подразумевается. Мантисса имеет вид mx = 1.a1a2a3…a23 = 1.A, где ai - двоичная цифра в i-разряде мантиссы (с весом 2-i), А - численное значение дробной части нормализованной ман­тиссы.

Значение вещественного числа определяется выражением:

(-1)Smx2lx - 127 = (-1)S(1.A)2lx-127 , где s – значение в разряде знака.

Например, последовательность байт 00: 00: 5А: С1 в формате короткого вещественного числа может быть дешифрована следу­ющим образом:

1 100 0001 0 101 1010 0000 0000 0000 0000

С 1 5 A 0 0 0 0

знак характеристика- мантисса

 

Знак отрицательный, характеристика равна 8216, мантисса 1.101101. Тогда число равно (-1)1*1.101101*23 = -1101.1012 = -13.62510.

Примеры записи чисел:

Деся- тичное Двоичное (модуль) Нормали-зованное Знак Характе-ристика Мантисса Компьютерный код
+12   1, 1*23   1000 0010 1000 000…00 00: 00: 40: 41
-12   -1, 1*23   1000 0010 1000 000…00 00: 00: 40: С1
+100   1, 1001*26   1000 0101 1001 000…00 00: 00: С8: 42
-1, 75 1, 11 1, 11*20   0111 1111 1100 000…00 00: 00: E0: BF
0, 25 0, 01 1, 0*2-2   0111 1101 0000 000…00 00: 00: 80: 3E
        0000 0000 0000 000…00 00: 00: 00: 00

Существуют три исключения:

1) если lx = FF16, А = 0, то такое число считается бесконечно большим;

2) если lx = FF16, А ¹ 0, то число считается неинициализированным (его значение ранее не задавалось, а такое число называется not a number - Nan);

3) если lx = 0016, то значение числа находится как (-1)S * (0.А) * 2-126 .

Формат длинного вещественного числа (двойной точности - Double Precision) аналогичен, но для характеристики отведено 11 разрядов (смещение равно 3FF16 = 102310), мантисса имеет длину 52 бит. Форматы соответству­ют стандарту IEEE P754 на представление двоичных чисел с пла­вающей запятой.

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

Порядок вещественных чисел записывается в поле характеристики в смещенном виде с допустимыми значениями от 00...00 до 11...10. В форматах КВ и ДВ значение 11…11 используется для кодирования , когда в поле мантиссы все нули, и для обозначения «не чисел» (NAN), когда в поле мантиссы не нулевое значение (табл.3). Для указания неопределенного значения используется специальный код. Множество конечных чисел разбито на два класса – нормализованные и денормализованные числа. У денормализованных характеристика равна нулю, а мантисса отлична от нуля.

Таблица 3

Число Знак S Характе-ристика Мантисса Значение (КВ/ДВ)
Положительное «не число»   11…11 11…11 00…01 NAN
Бесконечность   11…11 00…00
Положительное нормализованное число   11…10 00…01 11…11 00…00 +3, 37*1038/+1, 67*10308
Положительное денормализованное число   00…00 11…11 00…01 +8, 43*10-37/+4, 19*10-307
Нуль     00…00 +0
Нуль     00…00 -0
Отрицательное денормализованное число   00…00 00…01 11…11 -8, 43*10-37/-4, 19*10-307
Отрицательное нормализованное число   00…01 11…10 00…00 11…11 -3, 37*1038/-1, 67*10308
Бесконечность   11…11 00…00
Отрицательное «не число»   11…11 00…01 …… NAN
Неопределенность   11…11 10…00 U
Отрицательное «не число»   11…11 …… 11…11 NAN

Диапазон временного вещественного (повышенная точность – Extended Precision) представлен в табл.4. Число кодируется в 80 разрядах – 64 бит мантисса, 15 бит характеристика (смещение равно 3FFF16), 1 бит знак. Все множество конечных чисел разбито на три класса: нормализованные, ненормализованные и денормализованные (у чисел двух последних классов старший разряд мантиссы всегда нулевой, а денормализованные также содержат все нули в поле характеристики). Формирование ненормализованных и денормализованных чисел приводит к исключительным ситуациям, о которых АСП сообщает.

Формат временного вещественного обеспечивает максимальный рабочий диапазон значений вещественных чисел и является основным. В формате вещественного временного выполняются все операции АСП (рис.4). При загрузке данных АСП автоматически преобразует исходные данные, представленные в памяти в любом формате, в формат ВВ. Такое преобразование не приводит к потере точности. Результаты вычислений могут быть переданы в память в любом формате. Преобразование в формат, отличный от ВВ, может привести к потере точности из-за необходимости округления.

Таблица 4

Число Знак S Характе-ристика Мантисса Значение ВВ
Положительное «не число»   11…11 111…11 100…01 NAN
Бесконечность   11…11 100…00
Положительное нормализованное число   11…10 00…01 111…11 100…00 +1, 2*104932 ..................
Положительное ненормализованное число   11…10 00…01 011…11 000…01 …………..
Положительный псевдонуль   11…10 00…01 000…00  
Положительное денормализованное число   00…00 011…11 000…01 …………. +3, 4*10-4932
Нуль     00…00 +0
Нуль     00…00 -0
Отрицательное денормализованное число   00…00 000…01 011…11 -3, 4*10-4932 …………..
Отрицательный псевдонуль   11…10 00…01 000…00  
Отрицательное ненормализованное число   00…01 11…10 000…00 011…11 ……………
Отрицательное нормализованное число   00…01 11…10 100…00 111…11 …………… -1, 2*104932
Бесконечность   11…11 100…00
Отрицательное «не число»   11…11 100…01 101....11 NAN
Неопределенность   11…11 110…00 U
Отрицательное «не число»   11…11 110.…01 111…11 NAN

Рис.4. Фрагмент структуры арифметического сопроцессора

Регистровый стек ST состоит из 80-разрядных регистров, в которых в формате временных вещественных хра­нятся операнды. Все типы данных при загрузке в блок обработки автоматически преобразуются в формат временного вещественного. Стек «растет вниз» по направлению уменьшения номеров регистров. Команды АСП могут адресовать регистры стека неявно, обращаясь к вершине, или явно, задавая смещение номера регистра относительно вершины стека SТ (такая двойная адресация значительно упро­щает организацию передачи параметров при обращении к подпро­граммам).

Регистр тэгов содержит 16-разрядное слово признаков (по 2 разряда на каждый регистр стека), характеризующее данные в стеке:

· 00 – в регистре действительное число,

· 01 – истинный нуль,

· 10 – денормализованное число, NAN или бесконечность,

· 11 – в регистре нет данных.

Регистр состояния содержит слово состояния АСП SW (рис.5).

Рис.5 Формат слова состояния

Назначение полей слова состояния:

· Разряды [0…5] – Признаки особых случаев:

[0] " I" недействительная операция – устанавливается в единицу при переполнении стека, извлечении из пустого стека, при ошибке в программе (деление нуля на нуль, вычитание или деление бесконечностей, использование NAN в качестве операнда, делитель денормализован и т.п.);
[1] " D" наличие денормализованного операнда;
[2] " Z" деление на нуль;
[3] " O" переполнение, т.е. результат слишком велик для заданного формата (> 1, 2*104932);
[4] " U" антипереполнение, т.е. значение истинного порядка результата слишком мало и результат операции не может быть представлен нормализованным конечным числом;
[5] " P" потеря точности (результат не может быть представлен без потери точности в формате, определенном командой).

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

· Разряд [7] – " F" – Устанавливается в единицу при возникновении любого незамаскированного особого случая.

· Разряды [8…10, 14] – " CIF" – Код условия в операциях сравнения, проверки и анализа (ST(0) - число в вершине стека, Х – число в памяти или ST(i), r0 r1 r2 - три младших бита частного):

 

Команды [14, 10, 9, 8] Результат
Сравнение чисел 0 0 * 1 0 0 * 1 1 0 * 0 1 1 * 1 ST(0) > X ST(0) < X ST(0) = X ST(0) несравнимо с X
Анализ числа, находящегося в вершине стека 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 + ненормализованное + NAN - ненормализованное - NAN + нормализованное + - нормализованное - + 0 пустая вершина - 0 пустая вершина + денормализованное пустая вершина - денормализованное пустая вершина
Получение частичного остатка r0 0 r1 r2 * 1 * * команда завершена команда не завершена

· Разряды [11…13] – " ST" – Указатель стека;

· Разряд [15] – " B" – Занятость АСП (BUSY) - устанавливается в ходе выполнения операций.

После инициализации все биты регистра состояния, за исключением " CIF", устанавливаются в нуль.

Регистр управления (в CU) содержит слово управления CW и определяет вариант обработки данных (рис.6). Для каждого варианта программист задает маскирование особых случаев, точность вычислений, способ округления и интерпретацию бесконечности. Слово управления загружается специальной командой.

Рис.6. Формат слова управления

Назначение полей слова управления:

· Разряды [0…5] – Маски особых случаев, обнаруживаемых АСП - при наличии " 1", т.е. маски, возникновение соответствующего особого случая не вызывает прерывания и выдается предопределенный результат:

[0] - " I" (недействительная операция) – в качестве результата операции

выдается NAN, если им является один из операндов, или неопределенность (например, при денормализованом делителе) – в остальных случаях;

[1] - " D" (денормализованный операнд) – преобразование в эквивалентное ненормализованное число (путем сдвига мантиссы

и изменения порядка) и продолжение операции;

[2] – " Z" (деление на нуль) – возврат как результат операции " бесконечность" со знаком, равным сумме по модулю два знаков

операндов;

[3] – " O" (переполнение) – возврат как результат операции " бесконечность" с учетом знака;

[4] – " U" (антипереполнение) – возврат как результат операции денормализованного числа;

[5] – " P" (потеря точности) – результат округляется без выдачи преры-

вания и продолжаются вычисления.

· Разряд [7] – " IE" – Маска флага запроса на прерывание - при наличии " 1" прерывание не будет передаваться в ALU МП (даже при возникновении индивидуального незамаскированного особого случая) и FPU обрабатывает все особые ситуации стандартными методами.

· Разряды [9, 8] – " PC" – Управление точностью – устанавливает точность вычислений:

- " PC" = 00 – 24 бита (для мантиссы) – формат КВ,

- " PC" = 10 – 53 бита – формат ДВ,

- " PC" = 11 – 64 бита – формат ВВ – по умолчанию.

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

· Разряды [11, 10] – " T" – Управление округлением - устанавливает вариант округления результатов операций АСП:

- 00 – к ближайшему (при равенстве – к четному),

- 01 – вниз (к - ),

- 10 – вверх (к + ),

- 11 – отбрасывание (усечение) – используется в целочисленной арифметике.

· Разряд [12] – " A" – Управление бесконечностью – устанавливает одну из двух моделей интерпретации бесконечности:

- проективную, А=0 – " + " и " - " принимаются за " ",

- аффинную, А=1 – знак бесконечности учитывается.

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

Незамаскированная реакция АСП на антипереполнение предполагает прекращение дальнейших вычислений и выдачу запроса на прерывание, если результат должен быть записан в память. Если приемником результата является регистр, то АСП прибавляет к порядку константу 2457610 (819210+1638410=213+214), записывает результат и выдает запрос на прерывание. Эта константа переводит значение порядка в представимый формат ВВ (наименьший представимый порядок в ВВ равен -1638310) и при дальнейшей обработке прерывания ее следует учесть.

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

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

Нули образуются как результат выполнения многих операций. Например, при сложении (вычитании) двух равных чисел +Х и –Y знак нулевого результата зависит от режима округления – положительный при T=00, 10, 11, отрицательный при T=01. Минус ноль может быть получен также в результате деления двух чисел с разными знаками. Как следствие, операции пересылок, арифметические операции с нулевыми знаковыми операндами также могут формировать нулевые результаты с различными знаками.

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

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

Действия АСП над числами NAN приводят к установке флага I=1 и запросу на прерывание. Если этот особый случай замаскирован, то любая операция с NAN дает в качестве результата тот же код NAN. Если в операции оба операнда NAN, то в качестве результата выбирается код операнда, большего по абсолютному значению (т.е. NAN в качестве операнда, над которым могут быть выполнены операции, не используется). Исключение составляют трансцендентные команды, которые не анализируют операнды и, следовательно, операнд NAN дает неопределенный результат.


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.018 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал