Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

2.2. Пэвм. Система команд и способы представления информации. Архитектура математического сопроцессора.

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

1. Команды передачи данных (перепись), копирующие информацию из одного места в другое.

2. Арифметические операции, которым фактически обязана своим названием вычислительная техника. Конечно, доля вычислительных действий в современном компьютере заметно уменьшилась, но они по-прежнему играют в программах важную роль. Отметим, что к основным арифметическим действиям обычно относятся сложение и вычитание (последнее в конечном счете чаще всего тем или иным способом также сводится к сложению). Что касается умножения и деления, то они во многих ЭВМ выполняются по специальным программам.

3. Логические операции, позволяющие компьютеру анализировать обрабатываемую информацию. Простейшими примерами могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия). Кроме того к ним часто добавляются анализ отдельных битов кода, их сброс и установка.

4. Сдвиги двоичного кода влево и вправо. Для доказательства важности этой группы команд достаточно вспомнить правило умножения столбиком: каждое последующее произведение записывается в такой схеме со сдвигом на одну цифру влево. В некоторых частных случаях умножение и деление вообще может быть заменено сдвигом (вспомните, что дописав или убрав ноль справа, т.е. фактически осуществляя сдвиг десятичного числа, можно увеличить или уменьшить его в 10 раз).

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

6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят немногочисленные операции по управлению процессором -типа “останов” или НОП (“нет операции”). Иногда их выделяют в особую группу.

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

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

Рассматривая систему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором – RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически (в одной из популярных статей это в шутку сформулировано в виде следующей наглядной аналогии: “20% населения выпивают 80% пива”). Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, зато тщательно оптимизировать их, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации “отброшенных” команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования. Подробнее вопросы, связанные с системой команд современных микропроцессоров, будут рассмотрены ниже в этой главе.

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

Представление информации в ЭВМ.

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

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

Рассмотрим способы представления информации в ЭВМ.

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

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

Для положительных (без знаковых) чисел все биты ячейки памяти участвуют в указании количественного значения числа. Например, 1 байт=8 битам дает возможность задать числа в диапазоне от 00000000 до 11111111 в двоичной системе (0-255 в десятичной системе). Если же используется для кодирования машинное слово (2 байта), то возможен числовой диапазон от 0 до 2^16-1=65535 в десятичной системе.

В случае если нужно указать число со знаком, старший бит в двоичной системе выделяется для указания знака. При этом одним байтом можно задать числа от -128 до +127, а 16 разрядное целое со знаком позволяет указать числовой диапазон от -32768 до +32767 в десятичной системе. Для замены операции вычитания операцией сложения, отрицательные числа в памяти компьютера хранятся в дополнительном коде.

В компьютере операции над целым числами выполняются целочисленным процессорам по определенным правилам.

Представление вещественных чисел.

Для выполнения операций с большей точностью в компьютере используется формат представления чисел с плавающей запятой. При таком кодировании часть разрядов отводится для указания порядка, другая часть для указания мантиссы и один бит для указания знака. Например, при длине числа 32 бита (двойное машинное слово) 1 бит отводится для указания знака, 8 бит – указание порядка и 24 бита – для мантиссы. Это позволяет задать диапазон от 10^-38 до 10^38 .

Операции над такими числами выполняет математический сопроцессор.

Представление текстовой информации.

В случае текстовой информации, каждому символу сопоставляется двоичное число, образуя таблицу кодировок символов. Существует различные стандарты кодировок: ASCII, UCS-2, UCS-4. Например, в таблице ASCII одним байтом кодируются 256 символов (включая управляющие символы). Согласно этой кодировке букве b соответствует код 01100010, о – 01101111, k – 01101011. И слово book записывается четырьмя байтами 01100010 01101111 01101111 01101011.

Представление графической информации.

Для кодирования графической информации все изображение делиться на равные участки – пиксели. Чем больше пикселей, тем качественнее представление графического изображения. Каждый пиксель задается двоичным кодом цвета дискретизированной области. В основном применяют кодировки RGB (Red-Green-Blue) - для устройств, работающих по принципу излучения (мониторы), CMYK (Cyan-Yellow-Magenta-Black) - для устройств, работающих по принципу отражения от белого (печать на бумагу).

В системе RGB при глубине цвета 24 бита, состояние пикселя задается 24 битами, из которых 8 бит используется для задания интенсивности красного, 8 бит – интенсивности зеленого и последние 8 бит - интенсивности синего. Таким образом, три цвета, каждый из которых имеет 256 уровней интенсивности, смешиваются в разных соотношениях, и получается 224 различных цветов.

Не трудно подсчитать объем памяти необходимый для хранения изображения на экране монитора разрешением 800х600 точек при глубине цвета 24 бит.

800*600*3байта=1440000 байт=1.44 Мбайт.

В таком виде сохраняется информация в графических файлах с расширением BMP. Но для уменьшения занимаемого объема применяются различные методы сжатия типа JPG, GIF и т. д.

Представление звуковой информации.

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

Обычно глубина кодирования (дискретизация по уровню) составляет 16 бит (65536 уровней), а частота дискретизации 24000 раз в секунду. Можно подсчитать поток информации при таком качестве звука

16 бит*24000 с-1=2 байта*24000 с-1=48000 байт в секунду=48 Кбайт/с

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

Универсальный звуковой формат файла без сжатия это WAV. Наиболее распространенный формат со сжатием - MP3.

Представление видео - информации.

Видео представляет собой поток последовательно сменяющихся кадров изображений. Следовательно, представление видео в ЭВМ сводится к представлению потока графической информации. Телевизионный формат воспроизведения видео использует разрешение кадра 720*576 точек с 24 битовой глубиной цвета. Скорость воспроизведения составляет 25 кадров в секунду. Объем передаваемой при этом информации составляет:

24бита*720*576*25=248832000 бит/с или приблизительно 30 Мбайт/с.

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

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

Модуль операций с плавающей запятой (или с плавающей точкой; англ. floating point unit (FPU)) — часть процессора для выполнения широкого спектра математических операций над вещественными числами.

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

x87 — это специальный набор инструкций для работы с математическими вычислениями, являющийся подмножеством архитектуры процессоров x86. Такое название он получил, потому что первоначальные отдельные математические сопроцессорные чипы имели названия, заканчивающиеся на 87. Как и другие расширения базового набора инструкций процессора, эти инструкции не являются строго необходимыми для построения рабочей программы, но будучи аппаратно реализованными, общие математические задачи они позволяют выполнять гораздо быстрее. Например, в наборе инструкций x87 присутствуют команды для расчёта значений синуса или косинуса.

Сопроцессоры Intel семейства x86

Для процессоров семейства x86 с 8086/8088 по 386, модуль операций с плавающей запятой был выделен в отдельную микросхему, называемую математическим сопроцессором. Для установки сопроцессора на плате компьютера предусматривался отдельный разъём.

Сопроцессор не является полноценным процессором, так как не умеет делать многих необходимых для этого операций (например, не умеет работать с программой и вычислять адреса памяти), являясь всего лишь придатком центрального процессора.

Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86 сопроцессорах, реализуется следующим образом:

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

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

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

Также существует специальная команда ожидания (FWAIT), принудительно останавливающая процессор до завершения вычислений (если для продолжения программы необходимы их результаты). В настоящее время команда используется лишь для обработки исключений при работе с плавающей точкой, работа процессора и сопроцессора синхронизируется прозрачно для программиста [1].

Начиная с процессора Intel486DX модуль операций с плавающей запятой был интегрирован в центральный процессор и назван FPU. В линейке Intel486SX модуль FPU отключался (поначалу в эту линейку попадали процессоры с бракованным FPU). Для процессоров Intel486SX также выпускался «сопроцессор» Intel487SX, но, фактически, он являлся процессором Intel486DX и при его установке процессор Intel486SX отключался.

Несмотря на интеграцию, FPU в процессорах i486 представляет собой неизменный сопроцессор, выполненный на том же кристалле, более того, схема FPU i486 полностью идентична сопроцессору предыдущего поколения 387DX вплоть до тактовой частоты (в два раза меньшей, чем частота центрального процессора). Настоящая интеграция FPU c центральным процессором началась только в процессорах Pentium модели MMX.

Система команд сопроцессора

Система включает около 80 команд. Их классификация:

Команды передачи данных

Вещественные данные

Целочисленные данные

Десятичные данные

Загрузка констант (0, 1, число Пи, log2(10), log2(e), lg(2), ln(2))

Обмен

Условная пересылка (Pentium II/III)

Команды сравнения данных

Вещественные данные

Целочисленные данные

Анализ

С нулём

Условное сравнение (Pentium II/III)

Арифметические команды

Вещественные данные: сложение, вычитание, умножение, деление

Целочисленные данные: сложение, вычитание, умножение, деление

Вспомогательные арифметические команды (квадратный корень, модуль, изменение знака, выделение порядка и мантиссы)

Трансцендентные команды

Тригонометрия: синус, косинус, тангенс, арктангенс

Вычисление логарифмов и степеней

Команды управления

Инициализация сопроцессора

Работа со средой

Работа со стеком

Переключение режимов