Оптимизация для pentium процессора список целочисленных инструкций


Содержание

Оптимизация для pentium процессора список целочисленных инструкций

27.1 Инструкция LEA (все процессоры)

Инструкция LEA полезна для самых разных целей, потому что она умеет делать сдвиг, два сложения и перемещение за один такт.

Гораздо быстрее, чем

Инструкцию LEA можно использовать, чтобы делать сложение или сдвиг без изменения флагов. Источник и назначение не обязательно должны быть размером в слово, поэтому ‘LEA EAX,[BX]’ может стать возможной заменой для ‘MOVZX EAX,BX’, хотя на многих процессорах это не совсем оптимально.

Как бы то ни было, вам следует знать, что инструкция LEA вызывает задержку AGI на PPlain и PMMX, если она использует базовый или индексный регистр, в которой была произведена запись в предыдущем такте.

Так как инструкция LEA спариваема в V-конвеер на PPlain и PMMX, а инструкции сдвига — нет, вы можете использовать LEA в качестве замены SHL на 1, 2 или 3, если вы хотите, чтобы инструкция выполнялась в V-конвеере.

У 32-х битных конвееров нет документированного режима адресации с только индексным регистром, поэтому инструкция LEA EAX,[EAX*2] на самом деле записывается как ‘LEA EAX,[EAX*2+00000000] с 4-х байтовым смещением. Вы можете снизить размер инструкции, написав ‘LEA EAX,[EAX+EAX]’ или, что еще лучше, ‘ADD EAX,EAX’. Последний вариант не приведет к задержке AGI на PPlain и PMMX. Если случилось так, что у вас есть регистр, равный нулю (например, счетчик цикла после последнего прохода), вы можете использовать его как базовый регистр, чтобы снизить размер кода:

27.2 Деление (все процессоры)

Деление отнимает очень много времени. На PPro, PII и PIII целочисленное деление занимает 19, 23 или 39 для байта, слова и двойного слова соответственно. На PPlain и PMMX беззнаковое челочисленное деление занимает приблизительно то же время, хотя деление со знаком занимает немного больше. Поэтому более предпочтительно использовать операнды маленького размера, которые не вызовут переполнения, даже если это будет стоить префикса размера операнда, и использовать по возможности беззнаковое деление.

Целочисленное деление на константу (все процессоры)

Целочисленное деление на степень от двух можно сделать, сдвигая значение вправо. Деление беззнакового целого числа на 2N:

Деление целого числа со знаком на 2N:

Альтернативный SHR короче, чем ‘AND if N > 7, но может попасть только в порт 0 (или U-конвеер), в то время как AND может попасть как в порт 0, так и в порт 1 (U- или V-конвеер).

Деление на константу можно сделать на обратное число. Чтобы произвести беззнаковое целочисленное деление q = x / d, вам вначале нужно посчитать число, обратное делителю, f = 2r / d, где r определяет позицию двоично-десятичной точки (точка основания системы счисления). Затем нужно умножить x на f и сдвинуть полученный результат на r позиций вправо. Максимальное значение r равно 32+b, где b равно числу двоичных цифр в d минус 1. (b — это самое большое целое число, для которого 2b

Предположите, что вы хотите разделить на 5.

Дробная часть больше, чем половина: используем случай C. Округляем f вверх до 0CCCCCCCDh.

Следующий код делит EAX на 5 и возвращает результат в EDX:

После умножения EDX содержит значение, сдвинутое вправо на 32. Так как r = 34, вам нужно сдвинуть еще на 2, чтобы получить окончательный результат. Чтобы поделить на 10, вам нужно всего лишь заменить последнюю строку на ‘SHR EDX,3’.

В случае B у вас будет следующее:

Этот код работает для всех значений x, кроме 0FFFFFFFFH, которое дает ноль из-за переполнения в инструкции INC. Если возможно, что x = 0FFFFFFFFH, тогда замените этот код на:

Если значение x ограничено, тогда вам следует использовать меньшее значение r, то есть меньшее количество цифр. Может быть несколько причин для того, чтобы сделать это:

вы можете установить r = 32 и избежать ‘SHR EDX,b’ в конце.

вы можете установить r = 16+b и использовать инструкции умножения, которые дают 32-х битный результат, вместо 64-х битного. Тогда можно освободить регистр EDX: IMUL EAX,0CCCDh / SHR EAX,18

вы можете выбрать значение r, которое будет чаще приводить к случаю C, а не B, чтобы избежать инструкции ‘INC EAX’.

Максимальное значение x в этих случаях равно по крайней мере 2r-b, иногда выше. Вы должны делать систематические тесты, если хотите узнать точное максимально значение x, при котором ваш код будет работать корректно.

Вы можете заменить медленную инструкцию умножения более быстрыми инструкциями, как это объяснено в главе 26.5.

Следующий пример делит EAX на 10 и возвращает результат в EAX. Я выбрал r=17, а не 19, потому что это дает код, который легче оптимизировать, и он покрывает такое же количество значений x. f = 217 / 10 = 3333h, случай B: q = (x+1)*3333h:

Проведенные тесты показываеют, что этот код работает правильно для всех значений x Повторяемое деление целого цисла на одно и то же значение (все процессоры)

Если делитель не известен во время ассемблирования программы, но вы делите на одно и то же число несколько раз, вы тоже можете использовать данный метод. Код должен определить, с каким случаем (A, B и C) он имеет дело, и высчитать f до совершения делений.

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

Этот код даст тот же результат, что и инструкция DIV для 0 Деление чисел с плавающей запятой (все процессоры)

Деление чисел с плавающей запятой занимает 38 или 39 тактов при самой высокой точности. Вы можете сэкономить время, указав более низкую точность в контрольном слове (на PPlain и PMMX только FDIV и FIDIV более быстры при низкой точности; на PPro, PII и PIII это также относится к FSQRT. Выполнение других инструкций убыстрить этим способом нельзя).

Параллельное деление (PPlain и PMMX)

На PPlain и PMMX можно производить деление числа плавающей запятой и целочисленное деление параллельно. На PPro, PII и PIII это не возможно, потому что целочисленное деление и деление чисел с плавающей запятой используют один и тот же механизм.

Пример: A = A1 / A2; B = B1 / B2

Убедитесь, что вы установили в контрольном слове FPU желаемый метод округления.

Использование обратных инструкций для быстрого деления (PIII)

На PIII вы можете использовать быстрые обратные инструкции RCPSS или PCPPS с делителем, а затем умножить на делимое. Правда, точность будет всего 12 бит. Вы можете повысить ее до 23-х, использовав метод Ньютона-Рафсона, объясненного в интеловской сопроводительной заметке AP-803:

где x0 — это первое приближение к обратному от делителя d, а x1 — лучшее приближение. Вы должны использовать эту формулу перед умножение на делимое:

Это позволяет сделать 4 деления за 18 тактов с точностью 23 бита. Повышение точность, повторяя формулу Ньютона-Рафсона возможно, но не очень выгодно.

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

Этот код проверяет, не слишком ли мал результат и делает соответствующую коррекцию. Не нужно проверять, если результат слишком велик.

Избегание делений (все процессоры)

Очевидно, что вам минимизировать количество делений. Деления плавающей запятой на константу или повторяющиеся деления на одно и то же значения следуюет делать через умножения на обратное число. Но есть много других ситуаций, когда вы можете снизить количество делений. Например: if (A/B >c) можно переписать как if (A > B*C), если B положительны, и как обратное сравнение, если B отрицательны.

A/B + C/D можно переписать как (A*D + C*B) / (B*D)

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

27.3 Освобождение регистров FPU (все процессоры)

Вы должны освободить все использованные регистры FPU до выходы из подпрограммы, не считая регистра, использованного для возвращения результата.

Самый быстрые способ освободить один регистр — это FSTP ST. Самый быстрый способ освбодить два регистра на PPlain и PMMX — это FCOMPP, на PPro, PII и PIII вы можете использовать как FCOMPP, так и FSTP ST дважды.

Не рекомендуется использовать FFREE.

27.4 Переход от инструкций FPU к MMX и обратно (PMMX, PII и PIII)

Вы должны выполнить инструкцию EMMS после инструкции MMX, за которой может последовать код с инструкциями FPU.

На PMMX переключение между инструкциями FPU и MMX вызывает высокие потери. Выполнение первой инструкции FPU после EMMS занимает примерно на 58 тактов больше, а первой инструкции MMX после инструкции FPU — на 38 тактов больше.

На PII и PIII подобных потерь нет. Задержку после EMMS можно скрыть, поместив целочисленные инструкции между EMMS и первой инструкции FPU.

27.5 Конвертации чисел с плавающей запятой в целые (все процессоры)

Все подобные конверсии и обратно должны осуществляться через память:

На PPro, PII и PIII этот код может вызвать потерит из-за попытки считать из [TEMP] до того, как закончена запись туда же, потому что инструкция FIST медленная (глава 17). WAIT не поможет (глава 26.6). Рекомендуется поместить другие инструкции между записью в [TEMP] и чтением оттуда, что бы избежать этих потерь. Это относится ко всем примерам, которые последуют в дальнейшем.

Спецификация языка C и C++ требует, чтобы конверсия из чисел с плавающей запятой в целые числа осуществлялась с помощью усечения, а не округления. Метод, используемый большинством библиотек C, это изменение контрольного слова FPU, чтобы указать инструкции FISTP на усечение, и изменение контрольного слова в прежнее состояние после ее выполнения. Это метод очень медленнен на всех процессорах. На PPro, PII и PIII контрольное слово FPU не может быть переименовано, поэтому все последующие инструкции плавающей запятой будут ждать, пока инструкция FLDCW не будет выведена из обращения.

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

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

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

Округление к ближайшему

Усечение к нулю

Усечение к минус бесконечности

Эти процедуры работают для -231 Альтернатива инструкции FISTP (PPlain и PMMX)

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

Альтернативный метод заключает в:

Добавление ‘волшебного числа’ 251+252 есть такой эффект, что любое целое число между -231 и +231 будет выравнено в нижних 32-х битах, когда сохраняется как число с плавающей запятой двойной точности. Результат будет такой же, какой бы вы получили с помощью инструкции FISTP со всеми методами окруления, кроме усечения к нулю. Результат будет отличаться от FISTP, если в контрольном слове задано усечение или в случае переполнения. Вам может потребоваться инструкция WAIT для совместимости со старым 80287 процессором (глава 26.6)

Этот метод не быстрее использования FISTP, но он дает большую гибкость на PPlain и PMMX, потому между FADD и FSTP 3 такта, которые можно заполнить другими инструкциями. Вы можете умножить или разделить число на степень от друх в той же операции, сделав обратно по отношению к магическому числу. Вы также можете добавить константу, добавив ее к магическому числу, которое тогда будет иметь двойную точность.

27.6 Использование целочисленных инструкция для осуществления операций плавающей запятой (все процессоры)

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

Тестируем, не равно ли значение с плавающей запятой нулю:

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

Используйте целочисленные инструкции вместо этого и сдвиньте бит знака:

Если число с плавающей запятой имеет двойную точность (QWORD), тогда вам нужно протестировать только биты 32-62. Если они равны нулю, тогда нижняя половина будет также равна нулю, если это верное число с плавающей запятой.

Тест на то, отрицательно ли значение:

Число с плавающей запятой отрицательно, если бит знака и установлен по крайней мере один бит.

Манипулирование битом знака:

Вы можете изменить знак числа с плавающей запятой просто инвертирововав бит знака:

Похожим образом вы можете получить асбсолютное значение числа с плавающей запятой, просто сANDив бит знака:

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

Этот метод работает только, если у двух чисел одна и та же точность, и вы уверены, что ни у одного из числа не установлен бит знака.

Если возможны отрицательные числа, вы можете их сконвертировать определенным образом и сделать знаковое сравнение:

Этот метод работает для всех правильных чисел с плавающей запятой, включая -0.

27.7 Использование инструкции с плавающей запятой, чтобы осуществлять целочисленные операции (PPlain и PMMX)

Целочисленное умножение (PPlain и PMMX)

Умножение плавающей запятой быстрее, чем целочисленное умножение на PPlain и PMMX, но цена конверсии целых чисел в числа с плавающей запятой и конвертирование результата обратно в целое число очень высоко, поэтому умножение плавающей запятой имеет смысл только тогда, если количество требуемых преобразование мало сравнимо с количеством умножений. (Довольно соблазнительно использование ненормальных чисел с плавающей запятой, чтобы пропустить часть конвертаций, но обработка таких чисел очень медленна, поэтому это плохая идея!)

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

Целочисленное умножение быстрее, чем умножение с плавающей запятой на PPro, PII и PIII.

Целочисленное деление (PPlain и PMMX)

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

Конвертирование двоичных чисел в десятичные (все процессоры)

Использование инструкции FBSTP — простой и удобный путь для того, чтобы конвертировать двоичные числа в десятичные, хотя не обязательно самый быстрый метод.

27.8 Перемещение блоков данных (все процессоры)

Есть несколько способов перемещения блоков данных. Наиболее общий метод — это REP MOVSD, но при определенных условиях другие методы быстрее.

На PPlain и PMMX быстрее переместить 8 байтов за раз, если место назначения не находится в кэше:

Источник и место назначения должны быть выравнены на 8. Дополнительное время, используемое медленными инструкциями FILD и FISTP компенсируется тем, что вам требуется сделать в два раза меньше операций записывания. Обратите внимание, что этот метод имеет преимущество только на PPlain и PMMX и только тогда, когда место назначения не находится в кэше первого уровня. Вы не можете использовать FLD и FSTP (без I) с противоположными последовательностями битов, потому что ненормальные числа обрабатываются медленно и не гарантируется, что они останутся неизмененными.

На PMMX, если назначение не находится в кэше, быстрее использовать инструкции MMX для перемещения восьми байтов за раз, если место назначения не находится в кэше.

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

На процессорах PPro, PII и PIII инструкция REP MOVSD особенно быстра, если соблюдены следующие условия:

источник и назначение должны быть выравнены на 8

направление должно быть вперед (очищен флаг направления)

счетчик (ECX) должен быть больше или равен 64

разность между EDI и ESI должна быть больше или равна 32

На PII быстрее использовать регистры MMX, если вышеприведенные условия не соблюдены и место назначения находится в кэше первого уровня. Цикл можно развернуть в два раза, а источник и назначение должны быть выравнены на 8.

Илон Маск рекомендует:  str_repeat - Возвращает повторяющуюся строку

На PIII самый быстрый путь перемещения данных — это использовать инструкцию MOVAPS, если вышеприведенные условия не соблюдены или если место назначения не находится в кэше первого или второго уровня:

В отличии от FLD, MOVAPS может обрабатывать любую пследовательность битов без всяких проблем. Помните, что источник и назначение должны быть выравнены на 16.

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

На PIII у вас также есть опция прямой записи в RAM-память без вовлечения кэша, используя инструкцию MOVNTQ или MOVNTPS. Это может быть полезным, если вы не хотите, чтобы место назначение попало в кэш. MOVNTPS чуть-чуть быстрее, чем MOVNTQ.

27.9 Самомодифицирующийся код (все процессоры)

Потери при выполнении кода сразу после того, как тот был изменен, занимают примерно 19 тактов на PPlain, 31 на PMMX и 150-300 на PPro, PII и PIII. Процессоры 80486 и более ранние требуют переход между модифицирующим и модифицируемым кодом, чтобы очистить кэш кода.

Чтобы получить разрешение на модифицирование кода в защищенное операционной системе, вам потребуется вызвать специальные системные функции: в 16-битной Windows это ChangeSelector, в 32-х битной Windows — VirtualProtect и FlushInstructionCache (или поместить код в сегмент данных).

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

27.10 Определение типа процессора (все процессоры)

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

Обратите внимание, что некоторые операционные системы не позволяют использовать инструкции XMM. Информация о том, как узнать, поддерживает ли операционная система инструкции XMM, можно найти в интеловской инструкции AP-900: «Identifying support for Streaming SIMD Extensions in the Processor and Operating System». Больше информации о идентификации процессора можно найти в инструкции AP-485: «Intel Processor Identification and the CPUID Instruction».

«Оптимизация для PENTIUM процессора» — читать интересную книгу автора

ОПТИМИЗАЦИЯ ДЛЯ PENTIUM ПРОЦЕССОРА
**********************************
Права на распространение Ангера Фога, (c) 1996
Перевод Дмитрия Померанцева, (c) 1997 FTS Labs.

0. примечание переводчика
1. введение
2. литература
3. отладка и проверка
4. модель памяти
5. выравнивание
6. кеш
7. блокировка генерации адреса (AGI)
8. спаривание инструкций
9. исполнение кода в цикле
10. неполное спаривание
11. замена сложных инструкций на более простые
12. переходы и ветви
13. префиксы
14. уменьшение длины кода
15. планирование операций с плавающей точкой
16. оптимизация цикла
17. обзор специальных инструкций

18. целые числа вместо чисел с плавающей точкой
19. числа с плавающей точкой вместо целых чисел
20. список целочисленных инструкций
21. список инструкций с плавающей точкой
22. скоростные испытания
23. соображения о других микропроцессорах

0. ПРИМЕЧАНИЕ ПЕРЕВОДЧИКА
=========================
Прежде всего я хочу сказать, что я не являюсь профессиональным переводчиком
и ранее не занимался переводами технической документации. Возможно, где то
в тексте будут встречаться литературные огрехи, но в любом случае —
документация на английском языке из любопытной вещи превратилась во вполне
понятное руководство, пригодное к повседневной работе.

И так, прежде всего несколько неточностей — что бы не загромождать текст
фразами типа: «инструкции, оперирующие с числами с плавающей точкой», я
просто называю их «инструкции с плавающей точкой», справедливо пологая, что
от технического руководства не будут требовать литературных изысков. Подобная
ситуация наблюдается и с целыми числами. Надеюсь, что теперь вы правильно меня
поймете и подобные выражения в тексте не будут вызывать праведный гнев.

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

SPEC CPU2000. Часть 24. Эффективность профилирующей оптимизации кода в Intel C++/Fortran Compiler 9.0, процессоры Intel Pentium 4 660 и Athlon 64 4000+

Вот уже довольно продолжительное время (начиная, пожалуй, с 7-й версии компиляторов Intel C++/Fortran) мы изучаем производительность задач тестового набора SPEC CPU2000 на различных платформах, применяя так называемую «профилирующую оптимизацию» кода при компилировании тестовых задач (ее полное название — «оптимизация по профилю приложения», Profile-Guided Optimization, PGO). Применяли мы ее практически «на автомате», то есть как бы подразумевая, что такая оптимизация непременно приведет к созданию более производительного машинного кода. Тем не менее, не помешает, по крайней мере один раз, удостовериться, а так ли оно на самом деле? Учитывая, к тому же, что компиляторы Intel изначально рассчитаны для достижения максимальной производительности кода только на процессорах одноименного производителя (было бы странно, если бы было наоборот), тогда как используем-то мы эти задачи и для тестирования процессоров конкурентов :). В связи с этим, в нашем сегодняшним тестировании примут участие два «более-менее топовых» одноядерных процессора ведущих производителей-конкурентов — Intel Pentium 4 660 и AMD Athlon 64 4000+. А пока вкратце рассмотрим суть метода оптимизации, именуемого «оптимизацией кода по профилю приложения» — для краткости, здесь и далее будем называть такую оптимизацию «профилирующей оптимизацией».

Профилирующая оптимизация кода в Intel C++/Fortran Compiler 9.0

Профилирующая оптимизация кода (PGO) заключается в предоставлении «подсказок» компилятору о том, какие области кода приложения исполняются наиболее часто. Учитывая эту информацию, компилятор способен осуществлять более селективную и специфическую оптимизацию этих участков кода. Включение PGO в рассматриваемых компиляторах Intel C++/Fortran 9.0 позволяет получить следующие основные преимущества:

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

Создание «профилированных» приложений происходит в 3 этапа. На первом этапе — «инструментирующей компиляции» создается так называемая «инструментирующая программа», которая включает в себя пользовательский исходный код и специальный код профилирования приложения, созданный компилятором. Второй этап — «инструментирующего выполнения» — заключается в запуске созданного «инструментирующего» приложения. При каждом запуске (с заданным набором входных данных) приложение создает профиль своего исполнения, который используется на третьем этапе — «компиляции с обратной связью». На этом этапе компилятор, используя объединенную информацию из файлов-профилей исполнения приложения, производит оптимизацию наиболее часто исполняемых участков кода приложения.

Итак, ключевой фактор профилирующей оптимизации — это выяснение наиболее часто исполняемых частей кода (как условно, так и безусловно). Таким образом, успех оптимизации по профилю во многом зависит от сходности задач (наборов входных данных), исполняемых приложением, подлежащем оптимизации. Действительно, похожие задачи, скорее всего, будут часто использовать одни и те же пути исполнения кода, в то время как сильно различающиеся задания могут в принципе вызывать совершенно разные процедуры приложения (в зависимости от степени сложности создаваемого приложения и области его применимости). Что касается задач SPEC, здесь реализуется практически идеальный сценарий: входные данные, используемые для профилирования приложений, представляют собой «уменьшенные наборы» входных данных, используемых для последующего измерения производительности тестовых задач. Тем не менее, не следует забывать, что в общем случае это может быть далеко не так.

Результаты тестирования

В тестах использовались следующие версии компиляторов:

  • Intel(R) C++ Compiler for 32-bit applications, Version 9.0 Build 20050912Z Package ID: W_CC_C_9.0.024
  • Intel(R) Fortran Compiler for 32-bit applications, Version 9.0 Build 20050912Z Package ID: W_FC_C_9.0.024

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

PASS1_CFLAGS= -Qipo -O3 -Qprof_gen
PASS2_CFLAGS= -Qipo -O3 -Qprof_use

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

COPTIMIZE= -Qipo -O3

Pentium 4 660

Начнем с рассмотрения результатов на «родном» для компиляторов Intel процессоре Pentium 4 660. Резонно предположить, что максимальную выгоду от профилирующей оптимизации следует ожидать именно в этом случае.

Практически во всех случаях, целочисленные задачи SPEC CPU2000 получают преимущество от профилирующей оптимизации кода (максимум — до 30%). Исключение составляют лишь 164.gzip и 256.bzip2 (почти всегда демонстрирующие незначительную потерю производительности), 175.vpr (показывающая столь же небольшой прирост производительности), а также 181.mcf, результат профилирующей оптимизации которой зависит от варианта оптимизации кода. При использовании вариантов кода «без оптимизации», с оптимизацией под SSE (-QxK) и SSE2 (-QxW) (заметим, что об SSE/SSE2 в чистом виде здесь говорить не приходится — используются только целочисленные инструкции) выигрыш от профилирующей оптимизации составляет не более 0.7%, тогда как включение оптимизаций, специфических для процессора Pentium 4 (-QxN и -QxP), увеличивает этот показатель до 25%. Можно предположить, что подобный результат связан с крайне удачным использованием специфических префиксов-подсказок исполнения условных переходов (branch hit prefixes, 2Eh и 3Eh) в случае этой задачи (впрочем, это лишь наше предположение — в документации на компиляторы Intel C++/Fortran Compiler 9.0 не упоминается никаких подробностей относительно конкретно используемых оптимизациях кода в том или ином случае). Отметим, что некоторый дополнительный выигрыш (до 10%) при использовании вариантов -QxN и -QxP показывает также задача 252.eon.

Усредненный результат тестов — оценка SPECint_base2000, выраженная по отношению к производительности кода без профилирующей оптимизации, наглядно демонстрирует выигрышность последней для целочисленных задач SPEC CPU2000 на процессоре Pentium 4 — прирост производительности составляет от 7 до 10%, в зависимости от используемого варианта оптимизации кода (естественно, в пользу специфических для Pentium 4 оптимизаций -QxN и -QxP).

Из наших предыдущих исследований различных платформ в SPEC CPU2000 уже хорошо известно, что, в отличие от целочисленных задач, задачи SPEC с вещественными числами обычно дают намного менее однозначную картину. Так обстоит дело и при сопоставлении вариантов кода с профилирующей оптимизацией и без нее, даже на «родном» процессоре Pentium 4.

Тем не менее, более-менее однозначную общую картину можно получить и в этом случае. Итак, наибольший выигрыш от профилирующей оптимизации получают задачи 177.mesa (до 22%), 168.wupwise (до 16%, если не считать отрицательный результат варианта -QxK) и 187.facerec (до 11%), некоторое преимущество наблюдается и в задачах 191.fma3d и 301.apsi (до 3.5%). В остальных случаях наблюдается либо практически нулевой, либо… парадоксальный результат — как, например, в 179.art, внезапно показавшей 20% снижение производительности в одном из наиболее близких для Pentium 4 вариантов -QxN, и 8% прирост — в другом из них (-QxP).

Общий результат SPECfp_base2000, благодаря практически полному отсутствию «провалов» по отдельным подтестам, также оказывается несколько выигрышным — от 1.3% (наименее удачный вариант, -QxK) до 3.9% (вариант -QxP, прямо соответствующий процессорному ядру Prescott).

Как и ожидалось, профилирующая оптимизация кода в компиляторах Intel C++/Fortran Compiler 9.0 действительно продемонстрировала преимущества в скорости при исполнении кода задач на процессоре одноименного производителя — Intel Pentium 4 660. Посмотрим теперь, как обстоит дело на процессоре конкурента — AMD Athlon 64 4000+. В приведенных ниже диаграммах не фигурирует вариант кода -QxP, поскольку инструкции SSE3 данным процессором не поддерживаются. Тем не менее, аналогичного ему варианта -QxN (который, согласно документации компиляторов, поддерживается только процессорами Pentium 4) будет вполне достаточно для понимания общей картины.

Сколь бы удивительным это ни казалось, в целочисленных тестах SPEC CPU2000 на качественном уровне наблюдается примерно та же картина, что и на процессоре Pentium 4, а на количественном уровне выигрыш от профилирующей оптимизации даже превосходит результат, полученный на Pentium 4. Так, максимальный прирост составляет целых 49%. Распределение результатов по задачам сохраняется: наименьшую выгоду получают 164.gzip, 175.vpr и 256.bzip2. Задача 181.mcf вновь показывает преимущество только в специфическом варианте -QxN, вероятно, использующем наряду с прочими оптимизациями префиксы-подсказки для исполнения условных переходов. В этом же варианте достигается наилучший результат в большинстве других задач, а также интегральной оценке SPECint_base2000 — 15% прироста, по сравнению примерно с 9-10%-ным приростом в остальных случаях.

Результаты тестов с вещественными числами на Athlon 64 обладают наименьшей однозначностью. Можно отметить, в частности, значительное количество «выпадений» результатов одного из вариантов (в особенности, варианта «без оптимизации») из общего ряда, сколь бы то ни было разумного объяснения которым придумать достаточно трудно. Если говорить о наилучшем и наихудшем результатах, в целом они совпадают с таковыми, полученными на процессоре Pentium 4. А именно, наибольший прирост скорости «в среднем» получает задача 177.mesa, а наибольшее падение производительности показывает 179.art.

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

Заключение

Результаты нашего исследования показывают, что использование двухпроходного компилирования кода задач тестового пакета SPEC CPU2000 в Intel C++/Fortran Compiler 9.0 по профилю приложения в целом является более выигрышным вариантом в плане производительности по сравнению с обычным, однопроходным компилированием. Выгода от профилирующей оптимизации наблюдается при исполнении кода как на «родном» для компиляторов Intel процессоре Intel Pentium 4, так и на процессоре основного конкурента — AMD Athlon 64. Наибольший выигрыш в скорости показывают целочисленные задачи SPEC CPU2000, тогда как задачи с вещественными числами демонстрируют менее однозначный результат.

Таким образом, использование «профилированного» варианта кода тестов SPEC CPU2000 для оценки производительности различных платформ с процессорами различных производителей можно считать оправданным, а многочисленные результаты такого тестирования — достоверными.

Оптимизация процессора Intel

13.08.2015, 13:40

Температура процессора Intel i3 4170
Здравствуйте, не подскажите температура 45C для процессора нормальная. Просто при запуске данная.

Разгон процессора intel celeon
Здравствуйте! Я хотел бы разогнать свой проц! Есть ли возможность это сделать не открывая корпус.

Заявленная температура процессора от Intel
Вопрос такой у меня возник спонтанно, в связи с жалобами многих владельцев процессоров Intel 7й.

Топовые Intel процессора подешевели?
Ух. Смотрите парни, что сейчас творится на computeruniverse :) i7-8700k — 25.5 рубля. i9-9900k.

Температуры Процессора Intel P4 3.00 ггц
У меня Intel P4 3.00 ггц,presscot,s 478.Без нагрузки температура 47-50 градусов,а под нагрузкой(в.

3 лучшие программы для разгона процессора Intel

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

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

А тактовая частота — это количество тактов за 1 секунду.

Повышение тактовой частоты прямо пропорционально скорости выполнения программ, то есть разогнанный процессор работает быстрее, чем не разогнанный.

Содержание:

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

Он позволяет увеличить быстродействие компьютера без трат на покупку нового оборудования.

Что нужно сделать перед разгоном?

Каждый процессор имеет свой разгонный потенциал — предел тактовой частоты, превышение которого приводит к неработоспособности устройства.

Большинство процессоров, таких как intel core i3, i5, i7, можно безопасно разогнать лишь на 5–15% от исходного уровня, а некоторые еще меньше.

Лучше всего из семейства Intel гонится специально ориентированная на это К-серия с разблокированным множителем.

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

Из этого следует, что для стабильной работы разогнанной системы необходимо хорошее охлаждение.

Кроме того, учитывая возросшее энергопотребление, может понадобиться замена блока питания на более мощный.

Непосредственно перед разгоном необходимо сделать три вещи:

  • Обновить BIOS компьютера до последней версии.
  • Убедиться в исправности и надежности установки процессорного кулера.
  • Узнать исходную тактовую частоту своего процессора (посмотреть в BIOS или через специальные утилиты, например, CPU-Z).

Также перед разгоном полезно протестировать работу процессора на стабильность при максимальной нагрузке. Например, с помощью утилиты S&M.

После этого пора приступать к «таинству».

Читайте также:

Обзор программ для разгона процессоров Intel

SetFSB

SetFSB — простая в использовании утилита, позволяющая разгонять процессор «на лету» простым перемещением ползунка.

После внесения изменений не требует перезагрузки компьютера.

Программа подходит для разгона как старых моделей процессоров вроде Intel Core 2 duo, так и современных.

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

То есть воздействует она на тактовый генератор (чип PLL или как его называют, клокер), находящийся на материнской плате.

Узнать, входит ли ваша плата в список поддерживаемых, можно на сайте программы.

Итак, чтобы разогнать процессор с помощью SetFSB, нужно:

  • Выбрать из списка «Clock Generator» модель клокера, установленного на вашей материнской плате.
  • Кликнуть кнопку «Get FSB». После этого в окне SetFSB отобразится текущая частота системной шины (FSB) и процессора.
  • Осторожно, небольшими шагами передвигать ползунок в центре окна. После каждого перемещения ползунка необходимо контролировать температуру процессора. Например, с помощью программы Core Temp.
  • Выбрав оптимальное положение ползунка, нужно нажать кнопку Set FSB.

Плюс (а для кого-то минус) утилиты SetFSB в том, что выполненные в ней настройки будут действовать только до перезагрузки компьютера. После повторного старта их придется устанавливать заново.

Если нет желания делать это каждый раз, утилиту можно поместить в автозагрузку.

Полезная информация:

Для разгона также можно использовать программу MSI Afterburner. Это фирменная утилита, для разгона видеокарт от AMD и Nvidia, созданная на ядре Rive Tuner.

CPUFSB

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

Илон Маск рекомендует:  Путеводитель по играм HTML5 без слёз

Если вы знакомы с утилитой CPUCool — комплексным инструментами мониторинга и разгона процессора, то знайте, что CPUFSB — это выделенный из нее модуль разгона.

Поддерживает множество материнских плат на чипсетах Intel, VIA, AMD, ALI и SIS.

В отличие от SetFSB, CPUFSB имеет русский перевод, поэтому понять, как с ней обращаться, гораздо легче.

Принцип работы у этих двух программ одинаков: повышение опорной частоты системной шины.

Порядок работы:

  • Выберите из списка изготовителя и тип вашей материнской платы.
  • Выберите марку и модель чипа PLL (тактового генератора).
  • Нажмите «Взять частоту» для отображения в программе текущей частоты системной шины и процессора.
  • Повышать частоту также необходимо маленькими шагами, контролируя при этом температуру процессора. После выбора оптимальной настройки нажмите «Установить частоту».


CPUFSB позволяет задавать частоту шины FSB при последующем запуске программы и при выходе. Текущие настройки также сохраняются до перезагрузки компьютера.

Вам это может быть интересно:

SoftFSB

Завершает наш обзор утилита SoftFSB — еще один инструмент для разгона процессора «на лету». Она не более сложна в обращении, чем предыдущие программы.

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

В отличие от платных SetFSB и CPUFSB, пользоваться SoftFSB можно безвозмездно.

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

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

Порядок действий:

  • В разделе «FSB select» укажите модель платы и тактового генератора.
  • Нажмите кнопку «GET FSB» для захвата частоты процессора и шины.
  • Контролируя температуру процессора, найдите оптимальную частоту, передвигая ползунок в середине окна.
  • Выбрав подходящее значение, нажмите кнопку «SET FSB».

Как видите, здесь всё то же самое. По схожему алгоритму работает и масса других программ для разгона процессоров под Windows.

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

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

Microsoft улучшит производительность Windows 10 за счет оптимизации работы «быстрых ядер» процессора

При производстве многоядерных процессоров, не все ядра имеют одинаковые характеристики. Некоторые ядра могут отличаться по напряжению и энергопотреблению, что позволяет им при необходимости повышать производительность. Для таких более быстрых ядер обычно используется термин «favored cores», указывающий на то, что данные ядра могут предложить более высокую производительность, чем другие ядра на кристалле.

Благодаря технологии Intel Turbo Boost Max Technology 3.0, операционная система будет использовать информацию, сохраненную в процессоре, для идентификации самых быстрых ядер и станет их загружать более ресурсоемкими, с точки зрения процессорной нагрузки, задачами. Согласно заявлениям Intel, данная технология «позволит повысить производительность на 15% по сравнению с однопоточными вычислениями».

Технология Intel® Turbo Boost Max 3.0 оптимизирует производительность вычислений с небольшим количеством потоков, определяя наиболее быстрые ядра процессора и используя их для наиболее ресурсоемких рабочих нагрузок.

Хотя Windows 10 и ранее поддерживала технологии Turbo Boost Max Technology 3.0 и Turbo Boost Technology 2.0, в Windows 10, версия 1909 (19H2) будут добавлены оптимизации процедур доставки инструкций к быстрым ядрам.

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

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

Важно подчеркнуть, что не все процессоры поддерживают технологию Intel Turbo Boost.

Intel Turbo Boost Technology 2.0 поддерживают следующие процессоры:

  • Процессоры для мобильных и стационарных систем Intel® Core™ i7
  • Процессоры для мобильных и стационарных систем Intel® Core™ i5
  • Процессоры Intel® Core™ X-series

Intel Turbo Boost Max Technology 3.0 поддерживают следующие процессоры:

  • Семейство процессоров Intel® Core™ i7-69xx/68xx
  • Intel® Core™ i9-7900X/i9-7920X/i9-7940X/i9-7960X/i9-7980XE/i7-7820X/i7-9800X
  • Intel® Core™ i9-9820X/i9-99x0XE/i9-99x0X
  • Семейство процессоров Intel® Xeon® Processor E5-1600 v4 (на одном сокете)
  • Процессоры Intel 10-го поколения

Технологии и инструкции,
используемые в процессорах

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

Отдельные из этих технологий нужны только для решения специфических заданий и в «домашнем» компьютере вряд ли когда-нибудь понадобятся. Наличие же других является непременным условием работы программ, необходимых для повседневного использования.

Так, полюбившийся многим браузер Google Chrome не работает без поддержки процессором SSE2. Инструкции AVX могут в разы ускорить обработку фото- и видеоконтента. А недавно один мой знакомый на достаточно быстром Phenom II (6 ядер) не смог запустить игру Mafia 3, поскольку его процессор не поддерживает инструкции SSE4.2.

Если аббревиатуры SSE, MMX, AVX, SIMD вам ни о чем не говорят и вы хотели бы разобраться в этом вопросе, изложенная здесь информация станет неплохим подспорьем.

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

Аббревиатура образована от MultiMedia eXtensions (мультимедийные расширения). Это набор инструкций процессора, предназначенных для ускорения обработки фото-, аудио- и видеоданных. Разработан компанией Intel, используется в процессорах с 1997 года и на момент внедрения обеспечивал до 70% прироста производительности. Сегодня вам вряд ли удастся встретить процессор без поддержки этой технологии. Подробнее.

3DNow!

Технология впервые была использована в 1998 году в процессорах AMD и стала развитием технологии MMX, значительно расширив возможности процессора в области обработи мультимедийных данных. Ее презентацию совместили с выходом игры Quake 2, в которой 3DNow! обеспечивала до 30% прироста быстродействия. Но широкого распространения 3DNow! не получила. Сейчас она заменена другими технологиями и в новых процессорах не используется. Подробнее.

Аббревиатура от от Streaming SIMD Extensions. SIMD расшифровывается как Single Instruction Multiple Data, что значит «одна инструкция — множество данных».

SSE впервые использована в 1999 году в процессорах Pentium ІІІ и стала своеобразным ответом компании Intel на разработанную компанией AMD технологию 3DNow!, устранив некоторые ее недостатки. SSE применяется процессором, когда нужно совершить одни и те же действия над разными данными и обеспечивает осуществление до 4 таких вычислений за 1 такт, чем обеспечивает существенный прирост быстродействия.

SSE используется огромным числом приложений. Процессоров без ее поддержки сегодня уже не встретишь. Подробнее.

Этот набор инструкций был разработан компанией Intel и впервые интегрирован в процессоры Pentium 4 (2000 — 2001 гг.).

Поддержка инструкций SSE2 является обязательным условием использования современного программного обеспечения. В частности, без этого набора команд не будут работать популярные браузеры Google Chrome и Яндекс-браузер. На компьютере без SSE2 также невозможно использовать Windows 8, Windows 10, Microsoft Office 2013 и др. Подробнее.

Набор из 13 инструкций, разработанный компанией Intel и впервые использованный ею в 2004 г. в процессорах с ядром Prescott. Позволяет процессору более эффективно использовать 128-битные регистры SSE.

Инструкции SSE3 заметно упростили ряд DSP- и 3D-операций. Практическая польза от них больше всего ощущается в приложениях, связанных с обработкой потоков графической информации, аудио- и видеосигналов. Подробнее.

SSSE 3

Сокращение от «Supplemental SSE3», что значит «Дополнительный SSE3». Это набор дополнительных инструкций процессора, внедренных компанией Intel в 2006 году в продолжение развития предыдущих наборов команд SSE. По сути, это был четвертый по счету набор инструкций SSE. Но в Intel решили иначе, возможно, посчитав его лишь незначительным дополнением к предыдущему пакету.

Инструкции SSSE3 необходимы для нормальной работы многих современных приложений, в частности программ распознавания речи, используемых алгоритм DNN (Deep Neural Network). Подробнее.

SSE 4.1

Набор инструкций, разработанный компанией Intel. Используется в процессорах с 2006 года.

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

SSE 4.2

Набор инструкций процессора, включающий 7 команд обработки строк, подсчета CRC32 и популяции единичных бит, а также работы с векторными примитивами. Впервые использован компанией Intel в 2008 году.

На практике инструкции SSE 4.2 повышают производительность при сканировании вирусов, поиска текста, строковой обработки библиотек (ZLIB, базы данных и др.), обработки 3D информации. Подробнее.

SSE4A (SSE128)

Набор инструкций, используемый в процессорах AMD с 2007 года. Включает всего 4 команды (инструкции, ускоряющие подсчет числа нулевых/единичных битов, комбинированные инструкции маскирования и сдвига, а также скалярные инструкции потоковой записи).

Аналогичные инструкций есть также в наборе SSE 4 (4.1, 4.2.) от Intel, который является значительно более эффективным (в общей сложности 54 инструкции), см. выше. Подробнее.

Расширение системы команд процессора, разработанное в 2008 году компанией Intel с целью ускорения работы и повышения уровня защищенности программ, использующих алгоритм шифрования AES (Advanced Encryption Standard).

В США и некоторых других странах AES является официальным стандартом шифрования. Используется операционной системой Windows и многими популярными программами для защиты конфиденциальной информации (The Bat!, TrueCrypt и др.). Если процессор поддерживает инструкции AES, прирост производительности приложений, использующих этот алгоритм, может достигать 1200 %. Подробнее.

Аббревиатура образована от Advanced Vector Extensions. Это расширение системы команд процессора, разработанное компанией Intel в 2008 году. Оказывает большое влияние на мультимедийные и вычислительные возможности процессора.

Кроме набора новых инструкций, эта технология предусматривает двукратное увеличение размеров SIMD-регистров процессора, благодаря чему в интенсивных вычислениях за каждый такт он может обрабатывать до 2 раз больше информации.

Значительный прирост производительности наблюдается при работе с фото-, видеоконтентом, решении научных задач и др.). Но для этого требуется также использование соответствующей операционной системы и адаптированного программного обеспечения. В Windows поддержка AVX появилась, только начиная с Windows 7 SP1. Подробнее.

AVX 2

Набор инструкций, ставший развитием технологии AVX. Впервые использован в 2013 г. в процессорах Intel на ядре Haswell.

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

Набор инструкций процессора, ускоряющий операции умножения-сложения чисел с плавающей запятой. Аббревиатура FMA образована от англ. Fused Multiply-Add, что переводится как умножение-сложение с однократным округлением.

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

NX (XD), EVP

Технологии NX (XD) и EVP, не смотря на разные названия, являются одним и тем же — важным компонентом любого современного процессора, обеспечивающим повышенную защиту компьютера от вирусов и хакерских атак, основанных на механизме переполнения буфера.

Названия NX (No Xecute) и XD (eXecute Disable) характерны для процессоров Intel. EVP (Enhanced Virus Protection) — для процессоров AMD. Подробнее.

AMD64, Intel64

AMD64, Intel64, EM64T, x86-64, x64, Hammer Architecture — все эти термины обозначают одно и то же — 64-битную архитектуру центрального процессора, разработанную и внедренную в 2003 году компанией AMD. До этого процессоры были 32-битными.

Для обычного пользователя главным преимуществом 64-битного процессора является возможность использования в компьютере 64-битного программного обеспечения и большого объема оперативной памяти (теоретически, до 16777216 терабайт). Максимальное количество оперативной памяти, которое может адресовать 32-битный процессор — 4 ГБ. Подробнее.

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

Инструкции XOP впервые использованы в 2011 году в процессорах AMD архитектуры Bulldozer. В этот набор входит несколько различных типов векторных инструкций, большинство из которых являются целочисленными. Однако, есть среди них также инструкции для перестановки чисел с плавающей запятой и инструкции экстракции дробной части. Подробнее.

HT, SMT

В процессорах Intel технология многопоточности называется Hyper-Threading (HT), в процессорах AMD — Simultaneous MultiThreading (SMT).

Кроме названий, эти технологии отличаются еще и многими аспектами реализации. Однако, суть их одинакова. HT и SMT повышают эффективность использования вычислительных возможностей процессора (в среднем, на 20 — 30 %) за счет параллельного выполнения каждым его ядром двух потоков вычислений. Подробнее.

Аппаратная виртуализация (VT-x, VT-d, AMD-V)

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

Кроме того, появляется возможность «проброса» в гостевую систему устройств ввода-вывода, подключаемых к компьютеру через шину PCI и некоторые другие шины (видеокарты, звуковые карты, сетевые адаптеры и др.). Подробнее.

Turbo Boost, Turbo Core

Turbo Boost и Turbo Core — похожие по своей сути технологии, автоматически повышающие тактовую частоту процессора выше номинальной, когда в этом есть необходимость. Turbo Boost используется в процессорах Intel, Turbo Core — в процессорах AMD. В целом, они обеспечивают значительный прирост быстродействия в большинстве приложений.

Несмотря на одинаковое предназначение, Turbo Boost и Turbo Core существенно отличаются. Подробнее.

TXT (англ. Trusted eXecution Technology — технология доверенного выполнения) — разработанная компанией Intel и используемая в ее процессорах технология, обеспечивающая аппаратную защиту компьютера от вредоносных программ.

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

TSX (Transactional Synchronization eXtensions) — набор инструкций многоядерного процессора, разработанный компанией Intel, который повышает эффективность взаимодействия ядер между собой при осуществлении общего доступа к одним и тем же данным и, в конечном счете, увеличивает общую производительность компьютера. Подробнее.

SpeedStep, PowerNow!, Cool’n’Quiet

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

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

Memory Protection Extensions — технология, обеспечивающая повышенную защиту компьютера от вирусных и других угроз, использующих механизм переполнения буфера.

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

Software Guard Extensions (SGX) — набор инструкций, разработанный компанией Intel и используемый в ее процессорах, начиная с архитектуры Skylake.

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

Intel SHA

Intel Secure Hash Algorithm extensions (SHA) — набор инструкций процессора, разработанных компанией Intel для ускорения работы приложений, используемых алгоритмы шифрования SHA. Включает 7 инструкций, 4 из которых ускоряют работу SHA-1, остальные 3 — SHA-256. Ускорение может составлять 150-200 % и более (в зависимости конкретного приложения).

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

Advanced Configuration and Power Interface (ACPI) — стандарт, разработанный компаниями HP, Intel, Microsoft, Phoenix и Toshiba. Используется в компьютерной технике с 1996 года, постепенно дополняясь и совершенствуясь. Определяет общий подход к управлению питанием и обеспечивает взаимодействие между устройствами компьютера, его операционной системой и BIOS/UEFI в целях снижения уровня энергопотребления.

Стандарт ACPI предусматривает несколько режимов работы процессора. В зависимости от модели, они могут поддерживаться процессором в полном объеме или только какая-то их часть. Подробнее.

System Management Mode (SMM) — режим, при котором процессор приостанавливает исполнение любого кода (в том числе и операционной системы) и запускает специальную программу, хранящуюся в зарезервированной области оперативной памяти.

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

Dynamic Front Side Bus Frequency Switching (DFFS) — одна из технологий снижения энергопотребления компьютерных систем. Она позволяет операционной системе компьютера, в зависимости от нагрузки, которую он испытывает, понижать частоту системной шины FSB, что влечет за собой также и снижение частоты процессора. Подробнее.

SenseMI

SenseMI — технология, разработанная компанией AMD и впервые использованная в процессорах серии Ryzen. Она представляет собой комплекс из нескольких взаимосвязанных компонентов, обеспечивающих оптимальную производительность и энергоэффективность путем прогнозирования программного кода, а также динамического изменения частоты процессора в соответствии с решаемыми задачами в каждый конкретный момент времени (Smart Prefetch, Neural Net Prediction, Pure Power, Precision Boost, Extended Frequency Range).

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

AMD CoolCore

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

AMD CoolSpeed

AMD CoolSpeed — технология, разработанная компанией AMD для защиты процессора от перегрева путем понижения частоты и напряжение питания. Подробнее.

AMD Enduro

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

Ценной Enduro является для мобильных компьютеров, поскольку позволяет существенно экономить заряд аккумулятора. Подробнее.

Илон Маск рекомендует:  column-fill в CSS

BMI, TBM, ABM

Bit Manipulation Instructions (BMI) — наборы инструкций, используемые в процессорах Intel и AMD для ускорения операций, связанных с манипулированием битами.

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

DPM, DDPM

Dynamic Power Management и Dual Dynamic Power Management- технологии автоматического динамического изменения питания процессора. В совокупности с другими энергосберегающими технологиями, они значительно повышают его энергоэффективность, снижая уровень питания в периоды простоя или незначительных загрузок и повышая его, когда это необходимо. Подробнее.

SMEP, SMAP

Supervisor Mode Execution Prevention и Supervisor Mode Access Prevention — технологии, разработанные компанией Intel для защиты компьютера от хакерских атак и других угроз, использующих так называемый «режим супервизора». Подробнее.

F16C — набор инструкций, используемый в процессорах архитектуры x86 для ускорения преобразований между двоичными числами половинной точности (16 bit) и стандартными двоичными числами с плавающей запятой одинарной точности (32 bit).

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

Как увеличить производительность процессора за счет настроек электропитания (парковка ядер, как включить все ядра ЦП ✔)

Долго думал, стоит ли публиковать сегодняшнюю статью, т.к. вопрос довольно спорный (и результат после настройки у всех может быть разным, в зависимости от оборудования и ПО). И всё же, попрошу к статье отнестись критически и как к «экспериментальной».

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

К тому же функция парковки ядер позволяет процессору (при определенной нагрузке) переносить все задачи на одно ядро, а остальные переводить в режим ожидания (т.е. работать будет фактически только одно ядро). Естественно, это снижает общую производительность (правда, делает систему более отзывчивой, но незначительно). Отмечу, что Windows к тому же не совсем корректно работает с парковой ядер на процессорах Intel (по крайней мере Windows 7).

Так вот, задав определенные настройки электропитания, можно ограничить работу функции парковки ядер и повысить общую производительность (в некоторых случаях до 20%!). На мой взгляд есть смысл попробовать потратить 3-5 мин. на «эксперимент»!

Примечание : в первую очередь эта тема касается многоядерных процессоров от Intel (на AMD, честно говоря, адекватной статистики не имею. Но попробовать можно. ).

Как настроить тонко электропитание процессора

Чтобы не быть голословным о повышении производительности, приведу один небольшой тест быстродействия в WinRAR (офиц. сайт архиватора). На скриншоте ниже: в левой части приведена общая скорость до оптимизации настроек; справа — после. Даже невооруженным глазом видно, что в тестах ЦП начинает работать быстрее (что положительно сказывается и в реальных задачах, тех же играх, например) .

Разница в производительности

Примечание : рекомендую вам запустить тест в WinRAR сначала до оптимизации настроек (и запомнить общую скорость), и затем провести тест после оптимизации. Далее просто сравнить эти числа, в ряде случаев удается выжать из ЦП еще 10-20%!

Важный момент!

Как уже сказал выше, в первую очередь этот вопрос касается многоядерных процессоров (4 ядра и выше). Чтобы узнать количество ядер своего ЦП — просто запустите утилиту CPU-Z, и посмотрите в нижнюю часть окна: в графе Cores увидите кол-во ядер (пример ниже).

CPU-Z — 4 Cores (4 ядра, 8 потоков)

1) И так, начать нужно с настройки реестра.

Тут дело в том, что Windows по умолчанию скрывает часть настроек электропитания. Чтобы их открыть для редактирования, необходимо внести определенные изменения в реестр. Проще всего это сделать с помощью уже готового файла настроек, который нужно просто запустить и согласиться с добавлением параметров в системный реестр. Вот подготовленный файл: core_parking (нужно извлечь его из архива и запустить. Архив запакован с помощью WinRAR, актуален для Windows 7-10) .

Редактор реестра — настройки успешно внесены в реестр

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

2) Настройка схемы электропитания

Теперь необходимо открыть панель управления Windows раздел «Оборудование и звук/Электропитание» . После перейти в настройки текущей схемы электропитания (т.е. ту, которая сейчас у вас используется). В моем случае это сбалансированная (см. скриншот ниже).

Настройка текущей схемы электропитания

Далее нужно открыть дополнительные настройки питания.

Изменить дополнительные параметры питания

Теперь самое главное (см. скриншот ниже):

  1. минимальное число ядер в состоянии простоя: рекомендуется выставить значение в 99% (почему-то если выставить 100% — Windows часто отправляет одно ядро «отдыхать»);
  2. разрешить состояние снижения питания: переведите в режим выкл. (не дает процессору экономить энергию);
  3. отключение простоя процессора: переведите режим в откл.;
  4. минимальное состояние процессора: 100% (незначительно ускоряет работу ЦП (кстати, в некоторых случаях позволяет уменьшить писк от дросселей )) .
  5. политика охлаждения системы: активная (более эффективно охлаждает ЦП);
  6. максимальное состояние процессора: 100% (очень сильно влияет на производительность! Обязательно выставите на 100%);
  7. максимальное число ядер в состоянии простоя: 100% (противоречивая опция. Если выставить что-то отличное от 100% — то грузятся почему-то не все ядра, несмотря на то что активны все. ).

Дополнительные параметры электропитания

Сохраните настройки и перезагрузите компьютер!

3) Еще раз о режиме питания (касается в первую очередь ноутбуков)

После перезагрузки компьютера (ноутбука) — обратите внимание на режим питания (кликните по батарейке в трее). Выставите производительность на 100%!

Кроме этого, обратите внимание на центры управления ноутбуком, которые могут идти в комплекте к вашим драйверам (например, такие есть у устройств от Lenovo, Sony и пр.). В них также устройство нужно перевести в режим высокой производительности.

Питание ноутбука // менеджер ноутбука

4) Тестирование быстродействия

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

Тестирование — WinRAR / Кликабельно

Дополнение!

Чтобы посмотреть, как идет нагрузка на ядра ЦП — откройте «Диспетчер задач» (Ctrl+Shift+Esc) и перейдите во вкладку «Производительность» . Далее щелкните правой кнопкой мышки по графику загрузки ЦП и в меню выберите «Изменить график/Логические процессы» . См. скрин ниже.

Диспетчер задач — производительность

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

Все ядра загружены

Обратите внимание, при нагрузке (например, тестировании) — в идеале все ядра должны быть загружены (как на скриншоте ниже).

Для более показательного теста работы ЦП рекомендую воспользоваться утилитой AIDA64 (ссылку на инструкцию привожу ниже).

Как выполнить стресс-тест процессора и системы в целом, держит ли он частоты, нет ли перегрева (AIDA 64) — https://ocomp.info/kak-vyipolnit-stress-test-videokartyi-noutbuka-v-aida-64.html

PS

В рамках этой статьи не могу не порекомендовать еще одну статью на похожую тему. Она касается в первую очередь ноутбуков (т.к. в ряде случаев у них в настройках по умолчанию отключен Turbo Boost, в следствии чего устройство работает медленнее, чем потенциально могло бы. ).

Оптимизация для pentium процессора список целочисленных инструкций

Операнды: r = регистр, m = память, i = число, sr = сегментный регистр, m32 = 32-х битный операнд в памяти и так далее.

Микрооперации: количество микроопераций, которые генерит инструкция для каждого порта выполнения.

  • p0: порт 0: ALU и т.д.
  • p1: порт 1: ALU, переходы
  • p01: инструкции, которые могут попасть как в порт 0, так и в порт 1 (какой будет свободен первым)
  • p2: порт 2: загрузка данных и т.д.
  • p3: порт 3: генерация адреса для сохранения
  • p4: порт 4: сохранение данных

Это задержка, которую генерирует инструкция в цепочке зависимости. (Это не то же самое, что время, потраченное в модуле выполнения. Значения могут быть неточны в тех ситуациях, когда они не могут быть измерены точно, особенно, что касается операндов в памяти). Значения являются минимальными. Промахи кэша, невыравненность и исключения могут повысить количество тактов весьма значительно. Предполагается, что операнды с плавающей запятой являются нормальными. Ненормальные числа, NAN’ы и бесконечность увеличивают задержку на 50-150 тактов, кроме перемещений XMM, перемешиваний и булевых инструкций. Переполнения FPU, потеря значимости, ненормальные или NAN-результаты дают аналогичную задержку.

Производительность: максимальная производительность для нескольких инструкций одного вида. Например, производительность в 1/2 для FMUL означает, что новая инструкция FMUL может начинать выполнение каждые 2 такта.

29.1 Целочисленные инструкции (PPro, PII и PIII)

29.2 Инструкции FPU (PPro, PII и PIII)

Особенности архитектуры процессоров Pentium III и Pentium IV

Разработка процессоров Pentium III и Pentium IV определяла не только создание процессоров с новым уровнем производительности, но имела своей основной целью обеспечить эффективную поддержку мультимедийных и 3D технологий.

Архитектурные особенности процессоров Pentium III:

1. Потоковые SIMD-расширения. Потоковые SIMD-расширения обрабатывают 70 новых команд, в том числе инструкции потоковой обработки данных с плавающей точкой, дополнительные целочисленные SIMD-операции и команды управления кэш-памятью. От внедрения новой технологии существенно выигрывают такие направления, как обработка изображений, звуковых и видеопотоков, а также распознавание речи. При этом можно реализовать более высокое качество изображений на экране, качественные звук и изображение в MPEG2, возможность одновременного кодирования и декодирования MPEG2.

2. Технология обработки мультимедиа-данных Intel MMX™. Технология Intel MMX предусматривает поддержку набора из 57 целочисленных команд и четырех типов данных общего назначения, легко применимых для оптимизации широкого круга мультимедийных и коммуникационных приложений. В рамках этой технологии используется расширение «Одна инструкция над множественными данными» (Single Instruction, Multiple Data, SIMD); в процессор введены восемь 64-разрядных регистров технологии MMX.

3. Технология динамического исполнения:

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

· Анализ потока данных: переупорядочивает очередь выполнения команд, анализируя зависимости их операндов.

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

4. Самотестирование и мониторинг производительности:

· Функция самотестирования (Built In Self Test, BIST) обеспечивает обнаружение одиночных неисправностей — типа остановки микрокоманды и ошибки в логических матрицах, а также тестирует кэш-память, буферы TLB и целостность микрокода.

· Порт тестового доступа и архитектура сканирования окружения, соответствующие стандарту IEEE 1149.1, позволяют проверять процессоры Pentium III с помощью стандартного интерфейса.

· Встроенный датчик производительности обеспечивает возможность мониторинга быстродействия и подсчета событий.

· Встроенный в матрицу термодиод, измеряющий ее температуру. Системные платы позволяют использовать его для мониторинга температуры процессора.

5. Внедрена высокопроизводительная архитектура двойной независимой шины (Dual independent Bus, DIB), разделяющая системную шину и шину кэш-памяти, повышающая скорость обмена данными, производительность и масштабируемость по мере развития новых технологий.

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

7. Неблокируемая объединенная кэш-память второго уровня (L2) объемом 512 Кб повышает производительность, сокращая среднее время доступа к памяти путем хранения часто используемых команд и данных. Пропускная способность кэш-памяти увеличена благодаря использованию отдельной 64-разрядной шины. Скорость работы кэш-памяти второго уровня растет с увеличением частоты процессора. Кроме того, в процессор встроена раздельная кэш-память первого уровня для команд и данных, объемом по 16 Кб. Процессоры поддерживают кэширование до 4 Гб памяти.

8. Процессоры поддерживают функцию распознавания и коррекции ошибок (Error Correction Code, ECC) на шине кэш-памяти второго уровня для приложений с повышенными требованиями к целостности данных.

9. Конвейеризованное устройство операций с плавающей точкой (Floating-Point Unit, FPU) поддерживает как 32-разрядный и 64-разрядный форматы IEEE 754, так и 80-разрядное представление чисел.

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

Pentium IV радикально отличается от своих предшественников. Архитектуре этих процессоров дано имя NetBurst. Рассмотрим важнейшие особенности процессора:

1. Гиперконвейерная архитектура: Pentium IV отличается от предшественников конвейером, длина которого составляет не менее 20 стадий (конвейер Pentium III насчитывает 10 стадий). Именно поэтому новый процессор способен работать на сверхвысоких частотах. В самом деле: если последовательность исполнения команды разбита на более мелкие этапы, то каждый из них процессор сможет выполнять быстрее, следовательно, тактовую частоту ЦП можно повысить. К сожалению, длинный конвейер не лишен недостатков. Основной его враг — инструкции условных переходов. Процессор, выполняя такую команду, в зависимости от определенного условия должен либо совершить переход на новый адрес, либо продолжить обработку следующей инструкции. Все современные процессоры стараются предсказать результат каждого ветвления до того, как условие перехода будет вычислено. Если прогноз окажется верным, ЦП будет работать без простоев. Если предсказание ошибочно, процессору приходится очищать весь конвейер и запускать его заново. Pentium IV ошибается в предсказании ветвлений на треть реже, чем Pentium III.

2. Кэш трассировки исполнения (Execution trace cache): Pentium IV отличается от х86-совместимых процессоров уникальной организацией кэш-памяти. Pentium III и Athlon используют одну половину кэш первого уровня (L1) для хранения инструкций, а другую – для данных. Все современные ЦП исполняют громоздкие инструкции х86, предварительно разбив их на простые и удобные для обработки микрооперации. Декодеры Pentium III и Athlon считывают команды из кэш-памяти первого уровня и делят их на микрокоманды, которые передаются исполнительному устройству. Такая схема имеет два серьезных недостатка:

· Во-первых, если декодеру попадается сложная инструкция, то исполнительному устройству приходится простаивать до тех пор, пока она не будет преобразована в микрооперации;

· Во-вторых, каждый раз при повторном исполнении команд (при обработке циклов) процессору приходится декодировать их заново.

Pentium IV не хранит инструкции в кэш первого уровня. Вместо этого процессор помещает уже декодированный код в так называемом кэш трассировки исполнения (Execution Trace Cache).

Иными словами, в новом кэш хранятся не классические инструкции х86, а готовые к исполнению микрооперации. Такой подход позволяет избежать описанных выше проблем. Во-первых, исполнительные устройства Pentium IV не ждут декодера, а считывают микрокоманды непосредственно из кэш трассировки исполнения. Во-вторых, если цикл полностью помещается в новый кэш, процессору не приходится декодировать его многократно. В Execution Trace Cache можно хранить до 12000 микрокоманд.

Объем кэш первого уровня Pentium IV (данных) составляет всего восемь килобайт. Для сравнения: L1-кэш Pentium III и Athlon могут хранить до 16 и 64 килобайт данных соответственно; объем принесен в жертву скорости — на ожидание данных из кэш первого уровня Pentium IV тратит всего два такта, а его конкуренты — минимум три.

Кэш второго уровня соединен с ядром широкой 256-битной шиной данных (Intel называет эту конфигурацию Advanced Transfer Cache).

3. Механизм ускоренного выполнения (rapid execution engine): Все современные процессоры оснащены не одним, а несколькими АЛУ (арифметико-логическими устройствами, то есть блоками, выполняющими арифметические и логические операции над целочисленными данными). Инструкции х86 плохо поддаются распараллеливанию; очень часто процессор не может обработать команду до тех пор, пока не вычислит результат предшествующей ей инструкции. Такие пары команд называются зависимыми. Поскольку обрабатывать их параллельно нельзя, процессору приходится вычислять их по очереди.

Чтобы максимально сократить время исполнения зависимых инструкций, Pentium IV оснащен двумя АЛУ, работающими на удвоенной частоте процессора. Каждое из них может исполнить за такт две простых операции (сложение, вычитание и логические). На удвоенной частоте обрабатываются не все арифметические команды, а лишь простейшие из них. Сложные операции (например, умножение) Pentium IV выполняет на своей номинальной частоте.

4. SSE2: Набор SIMD-инструкций SSE, появившийся в процессорах Pentium III, не только включен в Pentium IV, но и существенно расширен. К имевшимся 70 командам добавлено еще 144. SIMD-инструкции (Single Instruction Multiple Data — одна инструкция над многими данными) производят арифметические операции над несколькими (более чем двумя) операндами. Прежние команды SSE позволяли обработать одновременно четыре пары вещественных чисел одинарной точности (восемь 32-битных чисел с плавающей запятой). Другие типы данных SSE не обрабатывает. Команды, появившиеся в SSE2, могут работать с двумя парами вещественных чисел двойной точности (четырьмя 64-битными числами с плавающей запятой) и целочисленными операндами длиной от одного до 16 байт. Добавлены также новые команды, управляющие кэшированием данных.

Самым важным нововведением в SSE2 следует признать поддержку SIMD-операций над вещественными числами двойной точности. Напомним, что SSE и 3Dnow! работают лишь с операндами одинарной точности, недостаточной для многих инженерных приложений. AMD едва ли сможет добавить в свой набор команд операции над вещественными числами двойной точности. Дело в том, что инструкции 3DNow! хранят операнды в 80-разрядных регистрах математического сопроцессора, и втиснуть в такой регистр два 64-битных числа в принципе невозможно.

5. Системная шина: Вместе с оригинальным ядром Pentium IV получил обновленную системную шину (FSB). От FSB процессоров Pentium III она отличается возможностью передавать данные четыре раза за такт (Intel называет этот режим «Quad Pumped»). Таким образом, даже работая на скромной частоте 100 мегагерц, эта 64-разрядная шина может передавать информацию со скоростью до 3.2 Гбайт/с. Впрочем, даже самая быстрая шина будет простаивать, если память не сможет поставлять данные с адекватной скоростью.

Pentium IV подобный дисбаланс не грозит. Материнские платы для этого процессора оснащаются двухканальным контроллером памяти. Пропускная способность каждого канала может достигать 1.6 Гбайт/с; таким образом, суммарная полоса пропускания RAM достигает внушительной цифры 3.2 Гбайт/с.

Не нашли то, что искали? Воспользуйтесь поиском:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL