8.1 Представление чисел с плавающей запятой
Для представления чисел с плавающей запятой в микропроцессорах используется стандарт 754 1985 года, разработанный Институтом инженеров по электротехнике и электронике (IEEE). В процессорах Intel используется три формата представления двоичных чисел с плавающей запятой (табл. 8.1).
Таблица 8.1. Стандарты представления двоичных чисел с плавающей запятой
Тип числа | Описание |
С одинарной точностью (Real4) | Имеет длину 32 бита. Один бит используется для представления знака, 8 битов – для представления показателя степени и 23 бита – для представления дробной части мантиссы. С его помощью можно представить нормированные числа, находящиеся в диапазоне приблизительно от 2-126 до 2+127. Его называют также коротким вещественным числом (short real). |
С двойной точностью (Real8) | Имеет длину 64 бита. Один бит используется для представления знака, 11 битов – для представления показателя степени и 52 бита – для представления дробной части мантиссы. С его помощью можно представить нормированные числа, находящиеся в диапазоне приблизительно от 2-1022 до 2+1023. Его называют также длинным вещественным числом (long real). |
Расширенное с двойной точностью (Real10) | Имеет длину 80 битов. Один бит используется для представления знака, 16 битов – для представления показателя степени и 63 бита – для представления дробной части мантиссы. С его помощью можно представить нормированные числа, находящиеся в диапазоне приблизительно от 2-16382 до 2+16383. Его называют также расширенным вещественным числом (extended real). |
На рисунке 8.1 представлен формат чисел с одинарной точностью. Рассмотрим подробнее этот формат.
Поле “знак”. Если значение знакового бита равно 1, число считается отрицательным, а если 0, то положительным. Число ноль считается положительным.
Поле “показатель”. Показатель степени чисел с одинарной точностью хранится в виде восьмиразрядного беззнакового числа, значение которого смещено на 127. Другими словами, при представлении числа в компьютере к реальному показателю степени добавляется число 127. Например, при представлении двоичного вещественного числа 1,10125 в памяти компьютера в поле “показатель” будет записано не число 5, а число 132. Двоичное значение показателя степени является числом без знака, поэтому оно никогда не может быть отрицательным. Максимально возможное значение показателя степени чисел одинарной точности равно 128. Если к нему прибавить число 127, то в сумме получится 255, то есть максимально возможное восьмиразрядное целое число без знака.
Поле “показатель” чисел двойной точности и расширенной двойной точности содержит беззнаковое число размером 11 и 16 битов соответственно.
Поле “мантисса”. Для того чтобы с максимальной точностью сохранить в памяти двоичное число с плавающей запятой, его мантисса должна быть нормализована. Нормализация двоичного числа заключается в переносе запятой так, чтобы перед ней находился только один двоичный разряд, значение которого равно единице. Например, двоичное число с плавающей точкой 1101,101 после нормализации будет выглядеть так: 1,10110123.
У нормализованной мантиссы слева от запятой всегда стоит цифра 1. Поэтому в формате IEEE она не указывается, но всегда подразумевается.
Денормализация двоичного числа с плавающей запятой – операция противоположная нормализации. Она заключается в переносе десятичной запятой, пока значение показателя степени не станет равным нулю.
Кодирование чисел и специальных значений
В стандарте IEEE предусмотрено несколько способов кодирования вещественных чисел и специальных значений:
положительное и отрицательное значение нуля;
денормализованные конечные числа;
нормализованные конечные числа;
положительное и отрицательное значение бесконечности;
нечисловое значение (NaN, или Not a Number);
бесконечные числа.
Потеря точности при денормализации. Если показатель вещественного числа не помещается в поле “показатель” выбранного типа точности, то число денормализуется до тех пор, пока значение показателя степени не поместится в поле “показатель”. Например, необходимо представить число 1,010111100000000000011112-129 в формате с одинарной точностью. Значение показателя -129 не помещается в соответствующее поле. Для уменьшения показателя числа необходимо сдвигать мантиссу вправо. При сдвиге мантиссы вправо теряются младшие значащие биты и в процессоре генерируется ситуация потери значимости (underflow). Само же число становится денормализованным:
1,010111100000000000011112-129
0,101011110000000000001112-128
0,010101111000000000000112-127
0,001010111100000000000012-126
Такой процесс денормализации приводит к потере точности.
Значение бесконечности. Под положительным значением бесконечности (+) понимается максимально возможное положительное значение вещественного числа. Соответственно, под отрицательным значением бесконечности (–) понимается минимально возможное отрицательное значение вещественного числа. Значения бесконечностей можно сравнивать между собой и с другими вещественными числами. При выполнении операций с двумя бесконечностями может возникнуть ситуация переполнения (overflow). Дело в том, что результат вычислений нельзя нормализовать, поскольку значение показателя степени не помещается в выделенные ему разряды поля “показатель” даже если сдвигать мантиссу на количество разрядов, равное размеру поля “мантисса”.
Нечисловые значения (NaN). Значение NaN представляет собой определённую комбинацию битов, которой не соответствует никакое корректное вещественное число. В процессорах корпорации Intel предусмотрены два типа значений NaN тихое и громкое. Тихое (quiet) значение NaN может использоваться в большинстве арифметических операций, не вызывая при этом исключительной ситуации. Громкое (signaling) значение NaN используется для генерирования исключительной ситуации, связанной с выполнением некорректной операции с плавающей запятой. Во время компиляции всем неинициализированным элементам массива и переменным с плавающей запятой нужно присвоить значение громкого NaN. Тогда при попытке их чтения в программе возникнет исключительная ситуация. Тихое значение NaN можно использовать для хранения диагностической информации, полученной во время сеанса отладки.
В таблице 8.2 перечислены несколько специальных значений чисел, которые часто используются при выполнении операций с плавающей запятой. Позиции битов, отмеченные символом x, могут иметь значения либо 1, либо 0.
Таблица 8.2. Кодирование специальных значений в двоичных числах с плавающей запятой одинарной точности
Значение | Знак, показатель, мантисса |
Положительный ноль | 0 00000000 00000000000000000000000 |
Отрицательный ноль | 1 00000000 00000000000000000000000 |
Положительная бесконечность | 0 11111111 00000000000000000000000 |
Отрицательная бесконечность | 1 11111111 00000000000000000000000 |
Тихое NaN | x 00000000 1xxxxxxxxxxxxxxxxxxxxxx |
Громкое NaN | x 11111111 0xxxxxxxxxxxxxxxxxxxxxx* |
* Если поле мантиссы громкого NaN начинается с нулевого бита, один из последующих битов обязательно должен содержать единицу, чтобы не получилось значение положительной или отрицательной бесконечности.
- Предисловие
- Глава 1. Общие сведения о микропроцессорах
- 1.1 Классификация микропроцессоров
- 1.2 Характеристики микропроцессоров
- 1.2.1 Тактовая частота
- 1.2.2 Архитектура процессора
- 1.2.3 Технологический процесс производства
- 1.2.4 Частота системной шины
- 1.2.5 Размер кэша
- 1.3 Типы архитектур микропроцессоров
- 1.4 Структурная схема микропроцессоров
- 1.4.1 Микропроцессор Фон-Неймана
- 1.4.2 Конвейер
- 1.4.3 Зависимость между частотой и количеством ступеней конвейера
- 1.5 Представление информации в эвм
- 1.5.1 Двоичное представление целых чисел
- 1.5.2 Представление символьной информации
- Глава 2. Архитектура микропроцессоров ia-32
- 2.1 Состав и функции регистров
- 2.1.1 Основные регистры
- 2.1.2 Регистры дополнительных функциональных модулей
- 2.2 Типы адресации
- 2.3 Система команд
- 2.3.1 Классификация команд
- 2.3.2 Формат команды
- 2.3.3 Однобайтовые команды
- 2.3.4 Непосредственно заданные операнды
- 2.3.5 Команды с регистровыми операндами
- 2.3.7 Команды с операндами, расположенными в памяти
- Глава 3. Организация многоуровневой памяти
- 3.1 Принцип построения многоуровневой памяти
- 3.2 Организация кэш-памяти
- 3.3 Протоколы когерентности памяти микропроцессоров
- 3.4 Страничная организация памяти
- Глава 4. Режимы работы процессоров ia-32
- 4.1 Обзор режимов работы
- 4.2 Реальный режим адресации
- 4.3 Защищённый режим
- 4.3.1 Дескрипторные таблицы
- 4.3.2 Дескрипторные регистры
- 4.3.3 Дескриптор
- 4.3.4 Односегментная модель памяти
- 4.3.5 Многосегментная модель памяти
- Глава 5. Страничная организация памяти в процессорах ia‑32
- 5.1 Каталог страниц
- 5.2 Таблица страниц
- 5.3 Страничная переадресация
- 5.4 Диспетчер виртуальных машин системы Microsoft Windows
- Глава 6. Архитектура процессоров с параллелизмом уровня команд
- 6.1 Подходы к использованию ресурса транзисторов в микропроцессорах
- 6.2 Суперскалярные процессоры и процессоры с длинным командным словом
- 6.3 Зависимости между командами, препятствующие их параллельному исполнению
- 6.4 Предварительная выборка команд и предсказание переходов
- 6.5 Условное выполнение команд в vliw-процессорах
- 6.6 Декодирование команд, переименование ресурсов и диспетчеризация
- 6.7 Исполнение команд
- 6.8 Завершение выполнения команды
- 6.9 Направления развития архитектуры процессоров с параллелизмом уровня команд
- Глава 7. Мультитредовые микропроцессоры
- 7.1 Основы мультитредовой архитектуры
- 7.2 Выявление тредов
- 7.3 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы
- 7.3.1 Мультитредовая модель выполнения программы
- 7.3.2 Мультитредовые программы
- 7.3.3 Аппаратные средства мультитредовой архитектуры
- 7.3.4 Преимущества мультитредовой архитектуры
- 7.4 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы
- 7.5 Специфика мультитредовых моделей распараллеливания
- Глава 8. Модуль обработки вещественных чисел
- 8.1 Представление чисел с плавающей запятой
- 8.2 Состав модуля fpu
- Глава 9. Основы 64-разрядной архитектуры
- 9.1 Состав и назначение регистров микропроцессора ia-64
- 9.2 Особенности архитектуры epic
- 9.3 Архитектура x86-64
- 9.4 Структура одноядерного процессора
- 9.5 Многоядерные процессоры
- 9.6 Зачем нужны “лишние” разряды?
- Глава 10. Современные 64-разрядные микропроцессоры корпораций Intel и amd
- 10.1 Архитектура Intel Core 2
- 10.1.1 Intel Wide Dynamic Execution
- 10.1.2 Intel Intelligent Power Capability
- 10.1.3 Intel Advanced Smart Cache
- 10.1.4 Intel Smart Memory Access
- 10.1.5 Intel Advanced Digital Media Boost
- 10.1.6 Логическая схема процессора
- 10.2 Архитектура Intel Core i7
- 10.2.1 Технология Hyper-Threading в архитектуре Nehalem
- 10.2.2 Иерархия кэш-памяти в архитектуре Nehalem
- 10.3 Хронология развития семейств микропроцессоров с архитектурой Nehalem
- 10.4 Архитектура amd Athlon 64
- 10.4.1 Ядро процессора
- 10.4.3 Контроллер памяти
- 10.4.4 Контроллер HyperTransport
- 10.5 Архитектура amd k10
- 10.4.1 Технология amd Memory Optimizer Technology
- 10.5.2 Ядро процессора
- 10.5.3 Предвыборка данных и инструкций
- 10.5.4 Выборка из кэша
- 10.5.5 Предсказание переходов и ветвлений
- 10.5.6 Процесс декодирования
- 10.5.7 Диспетчеризация и переупорядочение микроопераций
- 10.5.8 Выполнение микроопераций
- 10.5.9 Технологии энергосбережения
- 10.5.10 Шина HyperTransport 3.0
- 10.5.11 Семейство процессоров Barcelona
- 10.5.12 Семейство процессоров Phenom
- Глава 11. Технологии, поддерживаемые современными микропроцессорами
- 11.1 Технологии тепловой защиты
- 11.1.1 Технология Thermal Monitor
- 11.1.2 Технология Thermal Monitor 2
- 11.1.3 Режим аварийного отключения
- 11.2 Технологии энергосбережения
- 11.2.1 Технология Enhanced Intel SpeedStep
- 11.2.2 Технология Cool'n'Quiet
- 11.3 Технология расширенной памяти
- 11.4 Технология антивирусной защиты
- 11.5 Технология виртуализации
- 11.6 Реализация технологий в современных микроархитектурах
- 11.6.2 Em64t – NetBurst
- 11.6.3 Intel Core
- 11.6.4 Intel Atom
- 11.6.5 Nehalem
- 11.6.6 Xeon
- Глава 12. Графические микропроцессоры
- 12.1 Основные термины и определения
- 12.2 Технологии построения трёхмерного изображения
- 12.2.1 Технологии повышения реалистичности трехмерного изображения
- 12.3 Шейдерный процессор
- 12.4 Особенности современных графических процессоров
- Глава 13. Однокристальные микроконтроллеры
- 13.1 Общая характеристика микроконтроллеров
- 13.2 Микроконтроллеры семейства avr
- Почему именно avr?
- 13.3 Общие сведения об омк avr
- 13.4 Характеристики avr-микроконтроллеров
- Глава 14. Технология производства микропроцессоров
- 14.1 Особенности производства процессоров
- 14.2 Новые технологические решения
- 14.3 Технология производства сверхбольших интегральных схем
- I. Выращивание кристалла кремния
- II. Создание проводящих областей
- III. Тестирование
- IV. Изготовление корпуса
- V. Доставка
- 14.4 Перспективы производства сбис
- Англо-русский словарь терминов и аббревиатур
- Библиографический список
- Интернет-ссылки
- 350072. Краснодар, ул. Московская, 2, кор. А.