Оглавление
AltiVec
-
История и развитие SIMD
- SIMD (Single Instruction Multiple Data) – технология, позволяющая выполнять несколько операций с данными одновременно.
- SIMD была впервые реализована в 1980-х годах в процессорах Intel 8086 и 8088.
- В 1990-х годах Intel представила SSE (Streaming SIMD Extensions), расширив SIMD до 128 бит и добавив поддержку 64-битных чисел с плавающей запятой.
- В 2000-х годах AMD представила 3DNow! и SSE3, а также улучшила поддержку SIMD в своих процессорах.
-
PowerPC SIMD
- PowerPC SIMD была представлена в 1993 году и получила название AltiVec.
- AltiVec поддерживает 128-битные векторные регистры и операции с векторами, а также имеет специальные инструкции для работы с RGB-пикселями.
- В отличие от SSE, AltiVec не поддерживает 64-битные числа с плавающей запятой и не имеет возможности прямого перемещения данных между скалярными и векторными регистрами.
-
Поддержка и развитие AltiVec
- AltiVec была разработана совместным проектом Apple, IBM и Motorola и использовалась для ускорения мультимедийных приложений и обработки изображений.
- Motorola была первой компанией, которая начала поставлять процессоры с поддержкой AltiVec, начиная с G4.
- AltiVec также использовалась в некоторых встроенных системах для обработки цифровых сигналов.
- IBM не включала AltiVec в свои предыдущие процессоры POWER, предназначенные для серверных приложений, где она была менее полезна.
-
Расширения и новые инструкции
- VMX128 – это расширение VMX для использования в Xbox 360, которое включает новые инструкции для ускорения 3D-графики и физики игр.
- VSX (Vector Scalar Extension) – это расширение SIMD для Power ISA v2.06, которое поддерживает до 64 регистров и различные типы данных.
-
Проблемы и реализации
- В C++ доступ к поддержке AltiVec может быть ограничен из-за зарезервированного слова “vector”.
- AltiVec до Power ISA 2.06 с VSX не поддерживает загрузку данных с естественным выравниванием адреса.
- AltiVec до Power ISA 2.06 с VMX не поддерживает 64-битные целые числа, что требует разработки процедур из 32-битных компонентов.
-
Программное обеспечение, использующее AltiVec
- Helios имеет порт для POWER9 / POWER10 с поддержкой VMX.