Какие расширения x86 ISA подразумевают поддержку предыдущих расширений SIMD? [Дубликат]

Используйте переменную сеанса MySQL (5.6.13) и оператор присваивания, такой как следующий

SELECT @logmsg := CONCAT_ws(',',@logmsg,items) FROM temp_SplitFields a;

, тогда вы можете получить

test1,test11
14
задан snoukkis 18 July 2015 в 11:50
поделиться

2 ответа

Недавно я обновил теги wikis для SSE , AVX и x86 SSE2 , AVX2 ). Они охватывают много всего этого. tl; dr summary: AVX сворачивает все предыдущие версии SSE и предоставляет 3-операндовые версии этих инструкций. Также версии 256b большинства FP (AVX) и int (AVX2) insns.

Для резюме различных версий SSE см. Более подробный ответ на wikipedia или более подробный ответ knm24.

Мы надеваем «Я действительно думаю о том, что делает SSE устаревшим. Более того, подумайте об AVX как о новой и лучшей версии тех же старых инструкций SSE. Они все еще находятся в справочнике по ремонту под их именами без AVX (например, PSHUFB, а не VPSHUFB). Вы можете смешивать код AVX и SSE, если вы используете VZEROUPPER, когда это необходимо, чтобы избежать производительности проблема смешивания VEX с не-VEX insns (на Intel). Таким образом, есть некоторая досада, когда приходится обращаться к библиотекам, которые могут запускать инструкции, отличные от VEX SSE, или где ваш код использует математику SSE FP, но также имеет некоторый код AVX для запуска, только если процессор поддерживает его.

Если совместимость с ЦП была не проблема, версии векторных инструкций с устаревшим SSE были бы действительно устаревшими, как сейчас MMX. AVX / AVX2 по крайней мере немного лучше во всех отношениях, если вы считаете версию 128b с кодировкой VEX insn как AVX, а не SSE. Иногда вы по-прежнему используете 128-битные регистры, потому что ваши данные поступают только в куски, большие, но чаще работающие с 256-битными регистрами, чтобы сделать тот же самый op на вдвое большем количестве данных одновременно.

SSE / AVX / x87 -FP / integer все используют одни и те же порты выполнения. Вы не можете сделать больше в параллельном порядке, смешав их. (за исключением Haswell, где один из 4 портов ALU может обрабатывать не-векторные insns, такие как GP reg ops и ветви).

9
ответ дан Community 27 August 2018 в 01:56
поделиться

Они дополняют друг друга.

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

Нет устарели, устаревшие инструкции почти невозможно сделать по соображениям совместимости. Однако некоторые дополнительные расширения могут отсутствовать или удаляться из более новых моделей (например, FMA4 AMD), если они не очень широко распространены. Некоторые из них носят рудиментарный характер, но все, что можно сделать с помощью FPU и MMX, например, можно сделать более эффективно с помощью SSE +.

Они не являются взаимоисключающими в том смысле, что вы можете использовать тот или иной, ведь они являются инструкциями, а не режимами работы (например, реальный vs защищенный режим). Единственный возможный «конфликт» - между MMX и FPU, поскольку они разделяют нижнюю часть одного и того же набора регистров, но имеют другую модель программирования. Новые векторные регистры выросли с 128 до 256 бит и до 512 бит, каждый раз, когда предыдущие регистры стали нижней частью новых.

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

Они похожи на кирпичи Lego, вас ограничивает только ваше воображение (или воображение дизайнеров).


Вот простой список этих расширений набора инструкций. Отображаются только некоторые функции, для полной ссылки см. Intel Manual Vol1 из раздела 9 - 14.

См. Также https://hjlebbink.github.io/x86doc / для оглавления руководства по тома 2 тома 2 (руководство по набору команд) со списком расширений, в котором добавлены инструкции к этой ручной записи.

  • MMX Ввести восемь 64-битных регистров (MM0-MM7) и инструкции для работы с восемью подписанными / неподписанными байтами, четырьмя подписанными / неподписанными словами, двумя подписанными / unsigned dwords.
  • 3DNow! Добавить поддержку одинарной точности с плавающей запятой в MMX. Несколько операций поддерживаются, например, сложение, вычитание, умножение.
  • SSE Представляем восемь / шестнадцать 128-битных регистров (XMM0-XMM7 / 15) и инструкцию для работы с четырьмя операндами с одинарной точностью с плавающей запятой. Также добавьте целочисленные операции в регистры MMX. (MMX-целочисленная часть SSE иногда называется MMXEXT и была реализована на нескольких процессорах, отличных от Intel, без xmm-регистров и части с плавающей запятой SSE.)
  • SSE2 Представляет инструкцию для работы с 2-мя двойными прецизионные операнды с плавающей запятой и с упакованными целыми числами byte / word / dword / qword в 128-битных xmm-регистрах.
  • SSE3 Добавьте несколько разнообразных инструкций (в основном с плавающей запятой), включая специальный тип неравномерной нагрузки ( lddqu), что было лучше на Pentium 4, команде синхронизации, горизонтальной добавке / югу.
  • SSSE3 Опять различный набор инструкций, в основном целых. Первая тасовка, которая берет свой управляющий операнд из регистра вместо жестко запрограммированного (pshufb).
  • SSE4 (SSE4.1, SSE4.2) Добавьте много инструкций: Заполнение вложениями, добавлением / распаковкой, mul + добавлением байтов и некоторыми специализированными функциями add / mul. много пробелов, предоставляя минимальные и максимальные и другие операции для всех целочисленных типов данных (особенно 32-битное целое число отсутствовало), где ранее целочисленный минимум был доступен только для неподписанных байтов и 16-битной подписки. Также масштабирование, округление FP, смешивание, операция линейной алгебры, обработка текста, сравнение. Также не временная нагрузка для чтения видеопамяти или копирование ее обратно в основную память. (Ранее были доступны только магазины NT.)
  • AESNI Добавить поддержку для ускорения симметричного шифрования / дешифрования AES.
  • AVX Добавить восемь / шестнадцать 256-битных регистров (YMM0-YMM7 / 15). Поддержка всех предыдущих типов данных с плавающей точкой. Три команды операнда.
  • FMA Добавить Fused Multiply Добавить и скоррелированные инструкции.
  • AVX2 Добавить поддержку целых типов данных.
  • AVX512F Добавить восемь / тридцать два 512-битных регистра (ZMM0-ZMM7 / 31) и восемь 64-битных регистра маски (k0-k7). Продвигайте большинство предыдущих инструкций до 512 бит в ширину. Необязательные части команды AVX512 add для экспонент и amp; (AVX512ER), разборку / сборку предварительной выборки (AVX512PF), обнаружение конфликтов рассеяния (AVX512CD), сжатие, расширение.
  • IMCI (Intel Xeon Phi) Ранняя разработка AVX512 для первого поколения Intel Xeon Phi ( Knight's Corner).
8
ответ дан Peter Cordes 27 August 2018 в 01:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: