Команда 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) строки.

Структура внутреннего кэша процессора 486.

Рис. 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