Команда FCHS изменяет знак числа, находящегося в вершине, на противоположный.
Команда FRNDINT производит округление числа, находящегося в вершине стека, до целого. Если исходное число представлено в формате целого, то оно не изменяется командой. Число, представленное в формате вещественного, округляется до целого в соответствии с заданным режимом округления (поле RC в регистре CR, см. табл. 2.5).
Команда FXTRACT выделяет мантиссу и порядок числа. Например, перед выполнением команды FXTRACT ST(0) = 2,71 х 2-15, тогда после ее выполнения в вершине формируется значение мантиссы ST(0) = 2,71 х 20, а в следующем регистре значение порядка ST (1) = -15 х 20, представленные в формате ВВФ.
Команда FSQRT извлекает квадратный корень из числа, находящегося в вершине стека.
Команда FSCALE производит масштабирование числа, находящегося в вершине стека. Масштабный коэффициент перед выполнением команды должен быть размещен в ST(1). Действия команды состоят в сложении порядка числа с масштабным коэффициентом и размещением результата в поле порядка. Масштабирование эквивалентно умножению и делению (если коэффициент отрицательный) исходного числа на 2n, где n - масштабный коэффициент. Поскольку значение коэффициента остается без изменений, циклическое использование команды с предварительной загрузкой ST(0) и последующим запоминанием результата позволяет масштабировать массивы чисел.
Команда FPREM позволяет получить частичный остаток от деления чисел. Циклическое использование этой команды с запоминанием промежуточных значений частного позволяет получить точное значение частного с любой, наперед заданной, степенью точности. Признаком завершения команды (получения нулевого частичного остатка) является значение флага С2 (С2=0 - команда завершена, С2=1 - команда не завершена), который позволяет управлять переходом на повторение цикла или завершение операции.
Команда FPTAN вычисляет частичный тангенс числа. Исходное значение z размещается в ST(0). Результат выполнения команды FPTAN - значения х и у, где ST(0) = х, ST(1) = у, могут быть использованы для вычисления tg z/2=у/х, а также других тригонометрических функций, например sin z=2(y/х)/[1+(у/х)2].
Команда FPATAN реализует обратную функцию - вычисление частичного арктангенса. Исходные частичные значения х и y размещаются в ST(0) и ST(1) соответственно. Результат z = arctg у/х размещается в вершине стека ST(0). Использование известных формул позволяет по z получить значение других обратных тригонометрических функций.
Команда FYLT2X позволяет вычислить значение логарифмической функции z = ylog2x, где х, у предварительно располагаются в ST(0), ST(1) соответственно, а результат z размещается в ST(0).
Команда FYL2XP1 служит для вычисления значений логарифмической функции z = y(log2x+1) с аналогичным размещением исходных значений и результата.
Команда F2XM1 позволяет вычислить значение показательной функции z=2x - 1. Показатель x предварительно размещается в ST(0), где получается и результат.
Набор команд FYL2X, FYL2XP1 и F2XM1 в совокупности с рассмотренными ранее командами загрузки констант позволяет достаточно просто вычислять другие логарифмические и показательные функции по известным формулам.
Контрольные вопросы
В чем состоит основное назначение арифметического процессора? В каком формате осуществляются все операции в АП? Каким образом осуществляются условные переходы по результатам сравнения чисел в АП? Объясните назначение регистра этикеток. Как в потоке команд отличить мнемокод команды для АП? Как ЦП узнает об исключительной ситуации в АП? Используя специальные вычислительные команды, напишите процедуру для вычисления x y. Как и какие способы округления поддерживает АП? Сколько мнемокодов включает система команд АП? В каком состоянии находится ЦП когда АП выполняет команду? Перечислите все регистры окружения и объясните их назначение. В каком из форматов можно представит самое большое вещественное число и каков его порядок? Зачем используются коды NAN? Перечислите все флаги исключительных ситуаций и объясните их назначение. Что такое двоично-десятичный формат представления целых чисел? Представьте число 9374 в формате ДДФ. Представьте число -0,75 в формате КВФ. Для чего в диапазон представления вещественных чисел включены коды для представления +0,0 и -0,0? Когда и почему при сохранении результатов вычислений в памяти может происходить потеря точности? Для чего в регистре состояния служит поле ST? Какие способы округления можно задать с помощью поля RC регистра управления? Перечислите все группы команд АП. В чем основное различие команд загрузки и команд запоминания? Выполнение каких команд может приводить к потере точности? В чем заключается особенность выполнения команд условных переходов? Для каких арифметических команд целесообразно ввести возможность перемены мест операндов перед выполнением операции? Какой тип арифметики позволяет задать флаг IP? В чем различие типов? Напишите фрагмент программы, осуществляющий пересылку результатов сравнения из регистра SR в регистр F. Как обрабатываются исключительные ситуации по умолчанию, если они замаскированы? Составьте программу, реализующую вычисление функции yx. Составьте программу, реализующую функцию n! (факториал).3.1. Архитектура ЦП Pentium
Эволюция центральных процессоров Intel – от первого 16-разрядного Intel 8086 до Pentium IV – составила значительное число шагов. Основные вехи этой эволюции отражены в табл. 3.1. Первой существенной вехой явилось расширение разрядности внутренних регистров ЦП с 16 до 32 и увеличение адресного пространства до 4 Гбайт при переходе к ЦП Intel 80386. Немаловажным явилось событие в размещении на одном кристалле ЦП и АП, а также появление внутренней кэш-памяти у ЦП Intel 80486.
Кэш первого уровня процессора Intel 80486 имеет четырехканальную структуру (рис. 3.1). Каждый канал состоит из 128 строк по 16 байт в каждой. Одноименные строки всех четырех каналов образуют 128 наборов из четырех строк, каждый из которых обслуживает свои адреса памяти. Каждой строке соответствует 21-разрядная информация об адресе скопированного в нее блока системной памяти. Эта информация называется тегом (tag) строки.

Рис. 3.1. Структура внутреннего кэша ЦП Intel 80486
Кроме того, в состав кэша входит так называемый диспетчер, то есть область памяти с организацией 128 х 7, в которой хранятся 4-битные теги действительности (достоверности) для каждого из 128 наборов и 3-битные коды LRU (Least Recently Used) для каждого из 128 наборов. Тег действительности набора включает в себя 4 бита достоверности каждой из 4 строк, входящих в данный набор. Бит достоверности, установленный в единицу, говорит о том, что соответствующая строка заполнена; если он сброшен в нуль, то строка пуста. Биты LRU говорят о том, как давно было обращение к данному набору. Это нужно для того, чтобы обновлять наименее используемые наборы.
Адресация кэш-памяти осуществляется с помощью 28 разрядов адреса. Из них 7 младших разрядов выбирают один из 128 наборов, а 21 старший разряд сравнивается с тегами всех 4 строк выбранного набора. Если теги совпадают с разрядами адреса, то получается ситуация кэш-попадания, а если нет, то ситуация кэш-промаха.
В случае цикла чтения при кэш-попадании байт или слово читаются из кэш-памяти. При кэш-промахе происходит обновление (перезагрузка) одной из строк кэш-памяти. В случае цикла записи при кэш-попадании производится запись как в кэш-память, так и в основную системную память. При кэш-промахе запись производится только в системную память, а обновление строки кэш-памяти не производится. Эта строка становится недостоверной (ее бит достоверности сбрасывается в нуль).
Такая политика записи называется сквозной или прямой записью (Write Through). В более поздних моделях процессоров применяется и обратная запись (Write Back), которая является более быстрой, так как требует гораздо меньшего числа обращений по внешней шине. При использовании обратной записи в основную память записываемая информация отправляется только в том случае, когда нужной строки в кэше нет. В случае же попадания модифицируется только кэш. В основную память измененная информация попадет только при перезаписи новой строки в кэш. Прежняя строка при этом целиком переписывается в основную память, и тем самым восстанавливается идентичность содержимого кэша и основной памяти.
В случае, когда требуемая строка в кэше не представлена (ситуация кэш-промаха), запрос на запись направляется на внешнюю шину, а запрос на чтение обрабатывается несколько сложнее. Если этот запрос относится к кэшируемой области памяти, то выполняется цикл заполнения целой строки кэша (16 байт из памяти переписывается в одну из строк набора, обслуживающего данный адрес). Если затребованные данные не укладываются в одной строке, то заполняется и соседняя строка.
Внутренний запрос процессора на данные удовлетворяется сразу, как только данные считываются из памяти, а дальнейшее заполнение строки может идти параллельно с обработкой данных. Если в наборе, который обслуживает данный адрес памяти, имеется свободная строка, заполнена будет именно она. Если же свободных строк нет, заполняется строка, к которой дольше всех не обращались. Для этого используются биты LRU, которые модифицируются при каждом обращении к строке данного набора. Кроме того, существует возможность аннулирования строк (объявления их недостоверными) и очистки всей кэш-памяти. При сквозной записи очистка кэша проводится специальным внешним сигналом процессора, программным образом с помощью специальных команд, а также при начальном сбросе – по сигналу RESET. При обратной записи очистка кэша подразумевает также выгрузку всех модифицированных строк в основную память.
Появление процессора Pentium MMX (Multi Media Extension), существенно расширило систему команд ЦП, введением специальных команд для нужд мультимедийных приложений. Этот процессор положил начало новой технологии обработки данных – SIMD (Single Instruction Multiply Data), при которой одна команда обрабатывает параллельно несколько данных.
Выпуск процессора Pentium III, также добавил большое число новых команд для потоковой обработки чисел с плавающей запятой. Эта новация носит название SSE (Streaming SIMD Extention) – потоковое SIMD расширение.
Наконец, большие успехи в технологии изготовления кристаллов микросхем позволили практически на порядок повысить их сложность, благодаря чему появился процессор Pentium IV, обладающей внутренней двухуровневой КЭШ памятью и достигшему в настоящее время огромного быстродействия, превышающего 3 ГГц.
Таблица 3.1
Модель | Год | Млн. тр-ров | Ч-та (Мгц) | Регистры (бит) | ШД (бит) | Адреса (Гбайт) | КЭШ (Кбайт) |
Intel 8086 | 1978 | 0.029 | 8 | 16 | 16 | 0.001 | Нет |
Intel 386 | 1985 | 0.275 | 40 | 32 | 32 | 4 | Нет |
Intel 486 | 1989 | 1.2 | 100 | 32 | 32 | 4 | 8 + 8 |
Pentium | 1993 | 3.1 | 200 | 32 | 64 | 4 | 8 + 8 |
Pentium Pro | 1995 | 5.5 | 200 | 32 | 64 | 64 | 8 + 8 |
Pentium MMX | 1997, янв | 6.5 | 233 | 32 / 64 | 64 | 64 | 8 + 8 |
Pentium II (Xeon) | 1997, май | 7.5 | 450 | 32 / 64 | 64 | 64 | 16 + 16 |
Celeron | 1998 | 7.5 | 750 | 32 / 64 | 64 | 64 | 128 |
Pentium III | 1999 | 8.5 | 1000 | 32 / 64 / 128 | 64 | 64 | 16 + 16 |
Pentium IV | 2000 | 42.0 | 2000 | 32 / 64 / 128 | 64 | 64 | 256 / 12 / 8 |
Совокупность технических решений, применённых в процессоре Pentium IV, получила собственное название: «архитектура NetBurst (пакетно-сетевая)». Архитектура процессора Pentuim IV представлена на рис. 3.2.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |


