Проектирование процессора с плавающей точкой — это выполнение проекта процессорного модуля, предназначенного для осуществления большого количества математических операций над числами в вещественном формате.
С момента выхода на рынок процессоров, осуществляющих действия с плавающей точкой, появилась возможность операции с вещественными числами выполнять не программными, а аппаратными методами. Существенно выросло быстродействие компьютерного оборудования, появилась возможность его применения в производственных процессах, научной сфере и множестве других сфер человеческой жизнедеятельности. Эти процессы привели к глобальному проникновению компьютерных технологий в обычную человеческую жизнь. Существенной трансформации подверглось большинство программных продуктов. Знание архитектурной организации и принципов действия сопроцессоров FPU (Floating Point Unit), то есть элементов, выполняющих действия с плавающей точкой (иногда говорят запятой), превратилось в насущную необходимость для специалистов в области программирования.
Процессор с плавающей точкой
Процессор с плавающей точкой может работать с информацией в трёх целочисленных бинарных форматах, в трёх форматах вещественных чисел, а также в двоичном формате, прошедшем упаковку. Программное моделирование состоит из стека в восемь регистров, набора регистров слова тегов, а также слов, описывающих состояние и управление. Формат данных в стеке является форматом расширенной точности.
В состав процессора с плавающей точкой входят следующие модули:
- Модуль памяти.
- Модуль, выполняющий преобразование данных в разные форматы.
- Модуль регистрового набора.
- Модуль информационной обработки.
- Модуль, выполняющий микропрограммное управление.
Применение процессоров с плавающей точкой даёт возможность значительно увеличить производительность компьютерного оборудования.
Используемый командный набор
Команда FSub ST(ì), ST является командой вычитания, которая выполняет вычитание операнда источника из операнда получателя и осуществляет возврат итогового результата к получателю.
ST(ì) ← ST(ì) – ST
Первый операнд располагается на вершине стека, а второй находится в регистре ST(ì). У обоих операндов форматом является 80real.
При осуществлении этой операции вероятны некоторые особые случаи:
- Р — означает неточность результата.
- U – означает признак антипереполнения.
- O – означает признак переполнения.
- D – означает признак денормализованного (субнормального) операнда.
- I – означает признак недействительной операции.
Формат команды вычитания представлен на рисунке ниже:
Рисунок 1. Формат команды вычитания. Автор24 — интернет-биржа студенческих работ
Значение бита R указывает на возврат результата в верхушку стека, если R=0, или в ST(ì), в случае, если R=1. В приведённом примере итог пересылается в ST(ì) и значит R=1. Значение бита P=1 (Pop) означает, что по завершении процедуры выполняется выборка из стека. В поле Коп записывается код операции.
Команда FILD m32ìnt является командой загрузки операнда из памяти в стек. Она выполняет вычитание единицы из указателя стека ТОР и передаёт операнд на новый верхний уровень стека ST, но предварительно преобразует формат в расширенной точности.
TOP ← TOP – 1; S T ← m32ìnt
При выполнении данной операции также вероятны особые случаи:
- I – означает признак недействительной операции.
- D – означает признак денормализованного операнда.
Формат данной команды представлен ниже:
Рисунок 2. Формат команды. Автор24 — интернет-биржа студенческих работ
Адресация операнда m32ìnt задаётся в полях mod, r/m, sìb и dìsp, в которых:
- mod – определяет способ задания адреса.
- r/m - если mod ≠ 11 – является указателем регистров, которые участвуют в процессе адресации; если mod=11 – является адресом регистра.
Вычисление адреса производится процессором, работающим с целыми числами. Перед началом операции адрес уже определён. Нулевой бит первого байта задаёт тип операции. В приведённом примере бит[0]=1, что означает пересылку данных из памяти в стек.
В поле MF задаётся тип операнда. В данном примере, при m32ìnt MF=01. В поле Коп задаётся код операции.
Форматы данных
Процессор может работать с информационными данными в следующих целочисленных форматах:
- Целочисленный формат слова или 16int.
- Целочисленное слово короткого формата или 32int.
- Целочисленное слово длинного формата или 64int.
А также возможна работа процессора в следующих вещественных форматах:
- Вещественный формат обычной точности или 32real.
- Вещественный формат двойной точности или 64real.
- Вещественный формат повышенной (расширенной) точности или 80real.
Знаковый бит S задаёт наличие числового знака. Бинарные целочисленные величины отображаются при помощи дополнительного кода. Цифры вещественных чисел, отличные от нуля, располагаются в мантиссе М=(F0).(F1)(F2)…(Fn), представленной прямым кодом. Поле Е указывает реальное расположение бинарной точки среди разрядов мантиссы. Задание порядка выполняется в смещённом формате, и он равняется фактическому порядку П, который увеличен на величину смещения D:
Е = П + D.
Параметрические данные форматов показаны в таблице ниже:
Рисунок 3. Параметрические данные форматов. Автор24 — интернет-биржа студенческих работ
При выполнении внутренней операции процессор, работающий с плавающими точками, применяет отображение вещественных чисел исключительно в формате с расширенной точностью.
Программная модель процессора
Программная модель процессора изображена на рисунке ниже:
Рисунок 4. Программная модель процессора. Автор24 — интернет-биржа студенческих работ
Она состоит из следующих компонентов:
- Закольцованный стек, состоящий из восьми регистров R0-R7.
- Тэговое слово TW.
- Слово, определяющее состояние, SW.
- Слово, определяющее управление, CW.
Стек сохраняет числовые данные в расширенном формате. А в соответствующих регистровых полях (S, Е и М) указываются знак, порядок и мантисса.