Министерство образования и науки Российской Федерации
Министерство образования Саратовской области
Национальный исследовательский Саратовский государственный университет имени Н.Г. Чернышевского
Саратовский областной институт развития образования
Комитет по информатизации Саратовской области
Комитет по образованию администрации муниципального образования «Город Саратов»
Автономная некоммерческая организация «Информационные технологии в образовании»
Автономная некоммерческая организация «Научно-исследовательский центр «Образование. Качество. Отрасль»»
IX Всероссийская (с международным участием) научно-практическая конференция
«Информационные технологии в образовании»
«ИТО-Саратов-2017»
2-3 ноября 2017 года, г. Саратов

Разработка приложения для визуализации арифметических операций математического сопроцессора в архитектуре IA-32

Авторы: Стоколесов Максим Сергеевич, Вахлаева Клавдия Павловна, Кандидат физико-математических наук
Саратовский Государственный Университет им. Н.Г. Чернышевского
Современный уровень развития вычислительной техники позволяет решать множество задач, в числе которых находятся задачи по улучшению образовательного процесса, вследствие чего обучаемые получают более точные знания по преподаваемой дисциплине. Результатом данной работы является приложение, которое визуализирует арифметические операции математического сопроцессора в архитектуре IA-32, таким образом

Введение

Любой современный компьютер включает в себя центральный процессор, исполняющий машинные инструкции, и дополнительный математический сопроцессор, расширяющий командное множество центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, который представляет собой часть процессора для выполнения широкого спектра математических операций над вещественными числами [1-2].

Простым «целочисленным» процессорам для работы с вещественными числами и математическими операциями требуются соответствующие процедуры поддержки и время для их выполнения. Модуль операций с плавающей запятой поддерживает работу с ними на уровне примитивов – загрузка, выгрузка вещественного числа (в/из специализированных регистров) или математическая операция над ними выполняется одной командой, за счёт этого достигается значительное ускорение таких операций.

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

Представление чисел с плавающей запятой в архитектуре IA-32

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

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

Существует три наиболее распространенных формата представления двоичных чисел с плавающей запятой:

  • с одинарной точностью, в котором число имеет длину 32 бита. Один бит используется для представления знака, 8 битов – для представления показателя степени, и 23 бита – для представления дробной части мантиссы. Также его называют коротким вещественным числом;
  • с двойной точностью, в котором число имеет длину 64 бита. Один бит используется для представления знака, 11 битов – для представления показателя степени, и 52 бита – для представления дробной части мантиссы. Также его называют длинным вещественным числом;
  • расширенное с двойной точностью, в котором число имеет длину 80 битов. Один бит используется для представления знака, 16 битов – для представления показателя степени, и 63 бита – для представления дробной части мантиссы. Также его называют расширенным вещественным числом.

Диапазон абсолютных значений нормализованных чисел с плавающей запятой формата IEEE 754 задается следующим неравенством:

где N – само число, M – количество разрядов мантиссы, k – количество разрядов порядка.

В состав процессоров семейства Intel 80x86 входит математический сопроцессор (Floating Point Unit – FPU), предназначенный для обработки вещественных данных (чисел с плавающей точкой) и вычисления трансцендентных функций.

Математический сопроцессор имеет восемь 80-битных регистров данных R0-R7, регистры состояния FPSR и управления FPCR, регистр тегов TW, регистры указателя команды FIP и данных FDP.

Регистры данных R0-R7 разбиты в соответствии с форматом представления чисел с плавающей точкой на 3 поля: знак, порядок и мантиссу, и организованы в виде кольцевого стека, вершина которого ST(0) определяется содержимым поля TOP в регистре состояния FPSR. Любая команда загрузки данных сопроцессора автоматически перемещает вершину стека.

Все команды математического сопроцессора делятся на 5 групп:

  • Команды передачи данных (FLD, FST, FSTP…)
  • Команды сравнения данных (FCOM, FCOMP…)
  • Арифметические команды (FADD, FSUB, FMUL, FDIV…)
  • Трансцендентные команды (FSIN, FCOS, FPTAN, FPATAN…)
  • Команды управления (FFREE, FSAVE…)

Приложение, визуализирующее работу математического сопроцессора в архитектуре IA-32

Для повышения эффективности преподавания таких дисциплин как «Машинно-зависимые языки программирования» и «Системное программное обеспечение» в среде Microsoft Visual Studio 2010 было реализовано приложение на языке C++/CLI [3-5], визуализирующее процесс вычислений, выполняемых математическим сопроцессором. Извлечение данных из оперативной памяти и арифметические операции над числами с плавающей точкой в данном приложении производятся с использованием ассемблерной вставки.

Рисунок 1 – Результат работы приложения, визуализирующего арифметические операции математического сопроцессора

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

Так, чтобы увидеть принцип сложения двух вещественных чисел, например, -10,75 и 3, необходимо сначала их последовательно ввести вместе с интересующей алгебраической операцией, например, сложением, с помощью интерфейса приложения. Затем нажать кнопку «=». В этих действиях, как и во всех других, нет ничего необычного, они вполне привычны для всех, кто когда-либо пользовался обычным калькулятором, к тому же, приложение устроено так, что пользователь даже специально не сможет ввести некорректное выражение.

После нажатия на кнопку «=» появится дополнительная кнопка «Далее», с помощью которой можно перейти на следующий этап визуализации выполняемой арифметической операции.

Как видно на рисунке 1, сначала первое введенное число представляется в двоичной системе счисления в нормализованном виде, далее формируется его двоичный код в формате IEEE, в котором первый бит отвечает за знак, следующие 8 за порядок со смещением, и последние 23 за дробную часть мантиссы. Затем показывается, как этот код будет представлен в оперативной памяти, после его занесения туда, после – его помещение в кольцевой стек. Такие же действия производятся и со вторым введенным числом. После чего они складываются, а результат из стека заносится опять в оперативную память, после чего выполняется обратное преобразование в удобный для человека формат записи вещественного числа.

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

Заключение

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

Список использованных источников
  1. Савин А.Н. Программирование аппаратных средств компьютеров IBM PC AT: Учебное пособие. – Саратов: ООО Издательский центр «Наука», 2012.
  2. Ирвин К. Язык ассемблера для процессоров Intel, 4-е издание. : Пер. с англ. – М.: Вильямс, 2005.
  3. Hogenson G. Foundations of C++/CLI: The Visual C++ Language for .NET 3.5, 2nd Edition. – APRESS ACADEMIC, 2008.
  4. Хортон А. Visual C++ 2010: полный курс. : Пер. с англ. – М.: Вильямс, 2011.
  5. Heege M. Expert C++/CLI: .NET for Visual C++ Programmers. – APRESS ACADEMIC, 2007.
Ключевые слова  арифметические операции в компьютере, математический сопроцессор, программная модель, архитектура процессора, числа с плавающей точкой, приложение, визуализация вычислений

В статусе «Черновик» Вы можете производить с тезисами любые действия.

В статусе «Отправлено в Оргкомитет» тезисы проходят проверку в Оргкомитете. Статус «Черновик» может быть возвращен тезисам либо если есть замечания рецензента, либо тезисы превышают требуемый объем, либо по запросу участника.

В статусе «Рекомендован к публикации» тезис публикуется на сайте. Статус «Черновик» может быть возвращен либо по запросу участника, либо при неоплате публикации, если она предусмотрена, либо если тезисы превышают требуемый объем.

Статус «Опубликован» означает, что издана бумажная версия тезиса и тезис изменить нельзя. В некоторых крайне редких ситуацих участник может договориться с Оргкомитетом о переводе тезисов в статус «Черновик».

Статус «Отклонен» означает, что по ряду причин, которые указаны в комментариях к тезису, Оргкомитет не может принять тезисы к публикации. Из отклоненных тезис в «Черновики» может вернуть только Председатель программного или председатель оргкомитета.