Решение ошибки cpu does not have ssse3

Решение ошибки cpu does not have ssse3

Byte-wise Dot-Product

This SSSE3-dot-product multiplies a vector of 64 unsigned chars with a vector of 64 signed char, and adds all 64 intermediate signed 16-bit products with saturation. It uses the and SSSE3 instructions, in total 11 SSE instructions.

int dotProduct(unsigned char features[], char weights[] /* XMM_ALIGN */) {
   __m128i r0, r1, r2, r3;
   __m128i* a = (__m128i*) features;
   __m128i* b = (__m128i*) weights;
   r0 = _mm_maddubs_epi16 (a, b);
   r1 = _mm_maddubs_epi16 (a, b);
   r2 = _mm_maddubs_epi16 (a, b);
   r3 = _mm_maddubs_epi16 (a, b);
   r0 = _mm_adds_epi16    (r0, r1);
   r2 = _mm_adds_epi16    (r2, r3);
   r0 = _mm_adds_epi16    (r0, r2); // 8 shorts
   r0 = _mm_hadds_epi16   (r0, r0); // 4 shorts
   r0 = _mm_hadds_epi16   (r0, r0); // 2 shorts
   r0 = _mm_hadds_epi16   (r0, r0); // 1 final short
   short s = (short)_mm_extract_epi16(r0, 0);
   return (int) s; // sign extended
}

Процессоры с поддержкой технологии SSE4.2

Технология SSE4.2 (Streaming SIMD Extensions 4.2) — это набор инструкций, которые были впервые представлены в процессорах Intel Core серии Penryn в 2007 году и используются для ускорения выполнения ряда операций векторных вычислений и обработки данных в мультимедийных приложениях. SSE4.2 имеет ряд особенностей и характеристик, которые делают эту технологию полезной и эффективной для различных задач.

Основные особенности и характеристики технологии SSE4.2:

  • Новые инструкции для работы с для работы с целочисленными и строковыми данными.
  • Улучшенная поддержка операций с плавающей точкой и обработки данных в формате 128-битных регистров XMM.
  • Поддержка команд для обработки множественного выбора (переключателей).
  • Возможность использования инструкций SSE4.2 для оптимизации работы с алгоритмами сжатия и шифрования.

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

Важно отметить, что для использования технологии SSE4.2 необходим процессор с соответствующей поддержкой. В настоящее время многие процессоры от Intel и AMD обладают поддержкой данной технологии, включая такие модели как Intel Core i3, i5, i7, AMD Ryzen и другие

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

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

SSSE3 Hyperbola Quintessence

Following routine calculates bishop attacks performing the Hyperbola Quintessence. Both anti-diagonal and diagonal attacks are processed in parallel, using both halves of a 128-bit xmm register and pre-calculated arrays of bitboard pairs for line-masks, single- and eventually reversed bits. is used to swap bytes inside a bitboard .

Intrinsic Version

__m128i diaAntiMaskXMM; // 1 KByte  antidiag : diagonal, excluding square
__m128i singleBitsXMM ; // 1 KByte    1<<sq  : 1<<sq
__m128i swapMaskXMM; // needs to be initialized to swap the bytes in both quad-words

// SSSE3 Hyperbola Quintessence
U64 bishopAttacks(U64 occ, enumSquare sq) {
   __m128i o, r, m, b, s;
   m = diaAntiMaskXMM;         // antidiag : diagonal, excluding square
   b = singleBitsXMM ;         // bishop bits, equal qwords
   s = swapMaskXMM;
   o = _mm_cvtsi64x_si128  (occ) ; // general purpose 64 bit to xmm low qword
   o = _mm_unpacklo_epi64  (o, o); // occ : occ
   o = _mm_and_si128       (o, m); // o (antidiag : diagonal)
   r = _mm_shuffle_epi8    (o, s); // o'(antidiag : diagonal)
   o = _mm_sub_epi64       (o, b); // o - bishop
   b = _mm_shuffle_epi8    (b, s); // bishop', one may also use singleBitsXMM 
   r = _mm_sub_epi64       (r, b); // o'- bishop'
   r = _mm_shuffle_epi8    (r, s); // re-reverse
   o = _mm_xor_si128       (o, r); // attacks
   o = _mm_and_si128       (o, m); // antidiag : diagonal
   r = _mm_unpackhi_epi64  (o, o); // antidiag : antidiag
   o = _mm_add_epi64       (o, r); // diagonal + antidiag
   return _mm_cvtsi128_si64(o);    // convert xmm to general purpose 64 bit
}

Peshkov’s Optimization

class Occupied : public BitSet<Occupied, char_x16_t> {
    typedef BitSet<Occupied, char_x16_t> Base;

    struct Mask {
        value_type singleton;
        value_type file;
        value_type diagonal;
        value_type antidiag;

        Mask operator () (Square);
    };
    typedef Square::const_array<Mask, Mask> CACHE_ALIGN AttackMask;
    static const AttackMask mask;

    struct Shuffle {
        value_type hyperbola;
        value_type flipShift;
        Shuffle ();
    };
    static const Shuffle shuffle;

    static BitBoard bitboard(value_type value) {
        return BitBoard(static_cast<BitBoard::value_type>(_mm_cvtsi128_si64(value)));
    }

    static BitBoard hyperbola(value_type value) {
        value_type reverse = _mm_shuffle_epi8(value, shuffle.hyperbola);
        return bitboard(value ^ reverse); //xor is principal here
    }

    INLINE BitBoard bishopAttack(Square from) const {
        value_type d = value;
        value_type a = value;
        d &= mask.diagonal;
        a &= mask.antidiag;
        d = _mm_sub_epi64(d, mask.singleton);
        a = _mm_sub_epi64(a, mask.singleton);
        d &= mask.diagonal;
        a &= mask.antidiag;
        return hyperbola(d ^ a);
    }

    ...
public:
    Occupied (const BitBoard& myB, const BitBoard& opB) {
        value_type my = _mm_cvtsi64_si128(reinterpret_cast<const U64&>(myB));
        value_type op = _mm_cvtsi64_si128(reinterpret_cast<const U64&>(opB));
        op = _mm_shuffle_epi8(op, shuffle.flipShift);
        assert (Occupied(my & op) == empty()); //no intersection
        this->value = my ^ op;
    }

    ...
};

Что делает набор инструкций SSE3?

Итак, что конкретно делает SSE3? SSE3 расшифровывается как Streaming SIMD Extensions 3, где «3» означает, что это третье поколение или итерация набора инструкций Steaming SIMD Extensions (SSE).

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

Третье поколение — SSE3 — вносит одно важное изменение: способность работать горизонтально в регистре процессора. В прошлом мы были способны только на вертикальные операции

С введением этой возможности мы можем обрабатывать операции цифровой обработки сигналов (DSP) и 3D намного быстрее.

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

Does AMD have SIMD?

Intel’s MMX and AMD’s 3DNow! SIMD operations. which supports Intel’s MMX instruction set (SIMD instructions for integer data), available on Intel’s Pentium MMX processors and Pentium II processors, AMD’s K6 and K6-2 processors, Cyrix’s M2 processor, and probably others.

When was SSE4 introduced?

Intel introduced SSE4. 1 with Penryn Core 2 branding to the Core microarchitecture in 2007 with 47 new instructions.

How do I know if my processor supports SSE4 1?

To check if an older machine supports SSE4.1, here are some suggestions:

  1. Google your processor and the «SSE» cpu world is pretty reliable, but I’ve seen one or two cases where the info was wrong, and SSE4.
  2. Windows: Download and run coreinfo -f.
  3. OSX: Run sysctl -a | grep machdep.cpu.features.
  4. Linux: Check /proc/cpuinfo.

How do I know if my CPU supports AVX2?

To confirm whether your system supports the AVX2 instruction set, check the processor specifications from the manufacturer or run cat /proc/cpuinfo | grep avx2 to see if «avx2» (in lowercase) is listed.

Does AMD support AVX2?

AVX2 is a set of instructions and AMD supports them. There are more and less efficient ways to support an instruction set. AMD decided that consistent clock speeds were more important than wider devices.

Что означает ошибка «CPU does not have POPCNT» в игре Apex Legends

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

Ошибка игры Apex Legends: процессор не поддерживается

Для начала разберём, о чём именно сообщает ошибка. В первом случае, когда вместо запуска игры появляется окно с сообщением «CPU does not have SSSE 3», речь о том, что ваш процессор не поддерживает SSSE 3. Ошибка с текстом «CPU does not have POPCNT», появившаяся спустя неделю после релиза, сообщает об отсутствии поддержки процессором POPCNT, без которой игра попросту не запустится. Так, в уведомлении о каждой из ошибок сказано, что ЦП не обладает нужными параметрами для работы с Apex Legends.

Теперь нужно прояснить, что такое SSSE 3 и POPCNT в процессоре. Каждый, кто хорошо знаком с «внутренностями» системного блока знает, что характеристики CPU не ограничиваются количеством вычислительных ядер и тактовой частотой, среди параметров главного компонента аппаратного обеспечения компьютера есть и набор поддерживаемых инструкций. Эволюция в мире компьютерных технологий подразумевает и появление новых версий наборов инструкций, включаемых в современные процессоры. Новые команды называются SSSE 3 (Supplemental Streaming SIMD Extension 3). Компания Intel, внедрившая их в свои продукты, четвёртому расширению к названию добавила S вместо увеличения номера. В SSSE 3 имеется 16 уникальных команд, работающих с упакованными целыми, каждая из которых поддерживает 64-битные (ММХ) и 128-битные (ХММ) регистры. Что касается POPCNT, параметр входит в состав SSE 4.2, он же есть и в SSE4A от AMD. Есть три вариации инструкции – для 16-, 32 и 64-битных регистров.

Эти же инструкции, применяемые производителями процессоров, используют и разработчики софта, в том числе компьютерных игр, в случае с Apex Legends это SSSE 3 и POPCNT, которые в обязательном порядке должны поддерживаться вашим CPU. Если процессор не исполняет эти инструкции, равно не подходит по минимальным требованиям, значит и на запуск Apex Legends рассчитывать не стоит. Так, внесённые разработчиками Apex Legends коррективы, совершенствующие игру, отсеяли немалое количество устройств, способных её потянуть, чем и была обусловлена ошибка. При этом проблема вовсе не на стороне разработчика, всё дело в новых требованиях, которые отправили в лигу аутсайдеров все процессоры ранних поколений.

Чтобы проверить, соответствует ли ваш процессор требованиям, можно воспользоваться специализированной утилитой CPU-Z. Во вкладке «ЦП» в разделе «Набор инструкций» вы увидите все наборы, используемые ЦП. Для игры Apex Legends нужна обновлённая инструкция SSSE 3, а не устаревшая SSE 3, а также SSE 4.2, тогда как поддержка SSE 4.1 уже не подойдёт.

Какой выбрать процессор, чтобы поиграть в Apex Legends

Исходя из вышесказанного, понятно, что решить проблему программным способом не получится, и, чтобы исправить ситуацию, действовать нужно на аппаратном уровне, а именно придётся апгрейдить свой компьютер, установив более современный процессор. Тогда и ошибка «CPU does not have SSSE 3» перестанет беспокоить, и вы получите доступ к Apex Legends.

Процессор Intel Core i9 10900X

Инструкции SSSE 3 поддерживаются следующими линейками процессоров и более новыми:

  • Intel Core 2 Duo.
  • Intel Core i7.
  • Intel Core i5.
  • Intel Core i3.
  • Intel Atom.
  • AMD Bulldozer.
  • AMD Bobcat.
  • AMD Ryzen.

Набор инструкций SSE4.2 поддерживается, начиная с таких моделей процессоров:

  • Intel Core i7, начиная с
  • Intel Atom, начиная с
  • AMD Bulldozer, Jaguar.

Минимальным требованиям игры соответствуют Intel Core i3 6300 или AMD FX 4350, ну а пользователи, имеющие компьютеры с недостаточно мощными процессорами, к сожалению, не смогут насладиться баталиями шутера. Какой бы ни был по мощности ваш компьютер, если CPU не поддерживает необходимые инструкции для обработки большого количества данных, можно не пытаться запускать игру.

Основные инструкции SSE4.2 и их функции

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

Инструкция Описание
CRC32 Вычисляет циклическое избыточное кодирование (CRC) данных, что позволяет проверять целостность данных и обнаруживать ошибки передачи.
PCMPESTRI/PCMPESTRM Выполняют поиск шаблона в строке данных и возвращают позицию совпадения.
PCMPISTRI/PCMPISTRM Выполняют поиск заданного набора символов в строке данных и возвращают позицию найденного подстроки.
PHMINPOSUW Находит наименьшее 16-битное значение в каждой половине 32-битного вектора и возвращает вектор с минимальными значениями.
PMINSB/PMINSD/PMINUD Находят наименьшие значения в двух векторах и возвращают вектор с наименьшими значениями.
PMAXSB/PMAXSD/PMAXUD Находят наибольшие значения в двух векторах и возвращают вектор с наибольшими значениями.

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

Рекомендации по выбору процессора и оптимизации работы системы

1. Поддержка SSSE3

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

2. Скорость работы процессора

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

3. Размер кэш-памяти

Размер кэш-памяти также влияет на производительность системы. Чем больше кэш, тем быстрее процессор сможет выполнять операции. Рекомендуется выбирать процессоры с большим объемом кэш-памяти.

4. Оптимизация программного обеспечения

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

5. Установка оптимальных настроек системы

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

6. Регулярное обслуживание и охлаждение системы

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

7. Проверка на вирусы и вредоносное ПО

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

8. Дополнительные опции и функции

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

9. Учет потребностей конкретной задачи

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

Как проверить свой процессор на наличие инструкций

В этом деле нет ничего сложного. Если вы сами собирали/покупали свой компьютер, то вы наверняка понимаете — узнать какой именно процессор у вас стоит можно через «Диспетчер задач». Узнать полный набор инструкций и прочие характеристики можно через поисковик.

Можно и обойти все эти движения и просто скачать полезную программку Speccy от Piriform или CPU-Z. С их помощью откройте вкладку «Центральный процессор», где будет указана вся информация, включая полный список инструкций. Сразу оговорюсь, не спутайте наличие «SSE 3» с «SSSE 3» — букв в требуемом параметре все-таки поболее.

Программа Speccy для Windows 10

Что делать, если процессор не поддерживает SSSE3?

SSSE3 (Supplemental Streaming SIMD Extensions 3) — это набор инструкций SIMD (Single Instruction, Multiple Data), который обычно используется для ускорения выполнения операций над векторами данных. Однако, не все процессоры поддерживают данный набор инструкций. Если у вас есть процессор, который не поддерживает SSSE3, есть несколько вариантов действий, которые могут помочь вам справиться с этой ситуацией.

1. Обновите процессор или компьютер

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

2. Используйте программное обеспечение совместимое с вашим процессором

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

3. Используйте альтернативное программное обеспечение

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

4. Обратитесь к разработчику программного обеспечения

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

Вывод

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

Важно помнить, что эти варианты действий могут быть ограничены, и некоторые задачи могут быть невозможными без поддержки SSSE3

Пример

Следующий простой пример показывает преимущества использования ESS.

Инструкции SSE1 работают с числами с плавающей запятой одинарной точности, то есть числами, хранящимися в 4 байтах. Следовательно, четырехмерная векторная переменная, подходящая для регистров, состоит из 16 байтов. Если данные выровнены по 128 битам, их можно прочитать с помощью инструкции movaps , в противном случае, если это не может быть гарантировано, следует использовать movups . В противном случае мы получим ошибку во время выполнения.

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

vec_res.x = v1.x + v2.x;
vec_res.y = v1.y + v2.y;
vec_res.z = v1.z + v2.z;
vec_res.w = v1.w + v2.w;

Это соответствует четырем инструкциям x87 в объектном коде. В то время как следующий псевдокод показывает, что одна 128-битная инструкция «упакованного сложения» может заменить все четыре инструкции скалярного сложения. Здесь предполагается, что данные выровнены в памяти по 128 битам.

movaps xmm0,adresse-de-v1          ;xmm0 =      v1.w |      v1.z |      v1.y |      v1.x 
addps xmm0,adresse-de-v2           ;xmm0 = v1.w+v2.w | v1.z+v2.z | v1.y+v2.y | v1.x+v2.x               
movaps adresse-du-vec_res,xmm0

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

How do I know if SSE4 2 supports?

If you are unsure about your particular computer, you can determine SSE2 support by: Windows: A free download, CPU-Z, is available from CPUID that will indicate whether or not SSE2 is present on your system. Linux: From a terminal, run «cat /proc/cpuinfo». «sse2» will be listed as one of the «flags» if SSE2 is available.

What is SSE3 CPU?

SSE3, Streaming SIMD Extensions 3, also known by the Intel codename Prescott New Instructions (PNI), is the third iteration of the SSE instruction set for the IA-32 (x86) architecture. (developed by AMD but not supported by Intel processors), SSE and SSE2. SSE3 contains 13 new instructions over SSE2.

What are SSSE3 instructions?

The SSSE3 instruction set is part of the SIMD technology, which is integrated into Intel’s CPU and helps to improve the capability of multimedia processing, encoding/decoding and calculations.

Does the i5 support AVX?

CPUs with AVX Usually CPUs with the commercial designation Core i3/i5/i7/i9 support them, while Pentium and Celeron CPUs do not. Issues regarding compatibility between future Intel and AMD processors are discussed under XOP instruction sets.

Are there any Intel processors that support SSSE3?

Section 1.2.14 of the Intel manual states: The first Intel Atom processor family and subsequent generations including the Intel Atom processor D2000, N2000, E2000, Z2000, C1000 series provide the following features: Support for instruction set extensions up to and including Supplementary Streaming SIMD Extensions 3 (SSSE3).

Процессоры без поддержки SSSE3: принцип работы и характерные особенности

Процессоры без поддержки SSSE3 – это старые процессоры, которые не имеют встроенной поддержки расширенных инструкций SIMD (Single Instruction, Multiple Data) из набора SSSE3 (Supplemental SSE3). SSSE3 – это набор инструкций, разработанный для улучшения производительности при выполнении операций над множеством данных одновременно.

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

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

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

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

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

И дальше что?

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

Что касается последних двух типов данных, то CPU теперь напрямую конкурируют с GPU: ведь мир 3D-графики – это как раз всё, что связано с SIMD, векторами, плавающими точками и т.д. И производители GPU не спали – разработка графических ускорителей велась стремительными темпами. В начале 2010-х годов купить видеокарту, процессор которой способен выполнять почти 800 миллиардов инструкций SIMD в секунду, вы уже могли менее чем за 500 долларов.

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

Вас интересует производительность SIMD в чистом виде? Ваш выбор – видеокарта, а не материнка!

Стремительное развитие графических процессоров недвусмысленно намекает, что для CPU нет нужды иметь чересчур большие векторные блоки, и почти наверняка именно поэтому AMD даже не пыталась разрабатывать своего собственного преемника для AVX2 (расширение, которое они используют в своих чипах с 2015 года). Давайте также не будем забывать, что процессоры следующего поколения могут больше походить на мобильные однокристальные (SoC, System-on-a-Chip), где под каждый тип задач выделена площадь на кристалле. Intel, в свою очередь, похоже, стремится внедрить AVX-512 в как можно большее количество продуктов.

Ждёт ли нас ещё и AVX-1024? Вряд ли, либо очень нескоро. Скорее всего, Intel займётся расширением AVX-512 с помощью дополнительных компонентов с инструкциями, чтобы повысить гибкость, а чистую SIMD-производительность переложит на плечи своей недавно разработанной линейки графических процессоров Xe.

Библиотеки SSE и AVX теперь являются неотъемлемой частью программного обеспечения: Adobe Photoshop требует, чтобы процессоры поддерживали как минимум SSE4.2; API машинного обучения TensorFlow требует поддержки AVX; Microsoft Teams может выполнять фоновые видеоэффекты, только если доступен AVX2.

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

Понравилась статья? Поделиться с друзьями:
Jsk-oren
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: