Используются ли расширенные наборы инструкций (SSE, MMX) в ядре Linux? - PullRequest
6 голосов
/ 03 июня 2011

Ну, они приносят (по крайней мере, должны) значительно увеличить производительность, не так ли?

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

Ответы [ 4 ]

7 голосов
/ 03 июня 2011

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

Ядро иногда по выбору использует определенные инструкции x86, которые специфичны для определенных процессоров (например, присутствуют на некоторых моделях AMD или Intel, но не на всех, или наоборот), например syscall, но они отличаются от SIMD наборы инструкций, на которые вы ссылаетесь, и не являются частью более широкого набора расширений аналогичной тематики.

После ответа Марка я пошел искать. Единственное место, где я мог бы легко идентифицировать их использование - это библиотека RAID 6 (которая также поддерживает AltiVec, который является набором команд PowerPC SIMD).

(Будьте осторожны, просто разбирая дерево, есть много мест, где ядро ​​«знает» о SSE / MMX для поддержки приложений пользовательского пространства, но фактически не использует его. Также есть пара случаев неудачных имен переменных которые не имеют абсолютно никакого отношения к SSE, например, в реализации SCTP.)

4 голосов
/ 26 июля 2011

Существуют серьезные ограничения на использование векторных регистров и регистров с плавающей запятой в коде ядра.См., Например, главу 6.3 «Соглашения о вызовах для различных компиляторов C ++ и операционных систем».http://www.agner.org/optimize/#manuals

3 голосов
/ 03 июня 2011

Они используются в ядре для нескольких вещей, таких как

  • Программный RAID
  • Шифрование (возможно)

Однако я считаю, что он всегда проверяет их присутствие в первую очередь.

0 голосов
/ 04 января 2014

"Инструкции процессора SIMD используют FPU"

эмм, нет, не так, как я понимаю. Отчасти они являются современной и (намного) более эффективной заменой команд FPU, но большая часть набора команд SIMD имеет дело с целочисленными операциями. Я никогда не обращал на это особого внимания, но я полагаю (хорошо, надеюсь), что SIMD-код, сгенерированный недавней версией gcc, не будет загромождать какие-либо регистры или состояния.

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