AltiVec

AltiVec

AltiVec — набор SIMD (векторных) инструкций для работы с плавающей запятой и целочисленной арифметикой, разработанный и принадлежащий Apple Computer, IBM и Motorola (известных, как AIM alliance). AltiVec реализован в различных версиях процессоров PowerPC, как производства Motorola (G4), так и производства IBM (G5).

Само название AltiVec является зарегистрированной торговой маркой фирмы Motorola, поэтому Apple использует название Velocity Engine, а IBM — VMX.

Когда AltiVec появился в конце 1990-х годов, это был самый мощный набор векторных инструкций в процессорах для настольных систем. AltiVec предлагает больше регистров и возможностей с ними работать в силу гораздо более гибкого набора команд, чем у его аналогов (MMX, разработанного Intel для работы с целочисленной арифметикой, набора инструкций с плавающей точкой SSE и ряда разработок других производителей RISC-процессоров).

Надо отметить, что 3-е и 4-е поколение SIMD наборов инструкций фирмы Intel (SSE2 и SSE3, изначально доступные в Pentium 4, а позже реализованные AMD в архитектуре AMD64), имеют гораздо больший набор команд, чем AltiVec.

Как AltiVec, так и SSE оперируют 128-битными векторными регистрами, которыми можно пользоваться, как шестнадцатью 8-битными байтами, восемью 16-битными словами, четырьмя 32-битными целыми или четырьмя числами с плавающей запятой. Оба предоставляют механизм работы с кэш-памятью, таким образом программист может сам снизить количество промахов при работе с потоком данных.

Между AltiVec и SSE есть серьёзные отличия. Только AltiVec поддерживает тип данных «RGB пиксел», но не может работать с 64-битными дробными целыми двойной точности и отсутствует механизм прямой передачи данных между скалярными и векторными регистрами. В соответствии с моделью «загрузить/сохранить» RISC архитектуры процессора PowerPC, векторные регистры, равно как и скалярные, можно загружать и сохранять только в память. Впрочем, AltiVec предлагает существенно более расширенный набор «горизонтальных» инструкций, которые работают со всеми элементами вектора; допустимых комбинаций типов данных и операций гораздо больше. В отличие от восьми 128-битных векторных регистров в SSE и SSE2, AltiVec предлагает 32 таких регистра и большинство его инструкций работает сразу с тремя регистрами («положить в C результат сложения A и B»), в отличие от двухоперандных (регистр/регистр, регистр/память: «прибавить к A содержимое B») команд в IA-32. Это может сильно сократить объём работы с памятью.

Современные версии GCC, IBM Visual Age Compiler предоставляют набор функций для непосредственной работы с инструкциями AltiVec прямо из языка C и C++.

Существует специальный модификатор vector для спецификации типа переменной (например, vector unsigned char foo; — вектор из шестнадцати байтов). Перегруженные функции, такие как vec_add, оперируют с векторными регистрами исходя из их содержимого, при этом проводя очень чёткий контроль типов. Векторные инструкции Intel никакого контроля за типами не производят и оперируют лишь размером вектора, не различая байты и слова. Такая халатность может привести к тому, что вектор слов будет сложен с вектором байт, полностью разрушив данные. Чтобы такого не происходило, для архитектуры Intel существует целая серия дублирующих друг друга инструкций вида: _mm_add_epi16 (x, y) для сложения двух векторов слов, _mm_add_epi32 (x, y) для сложения двух векторов целых и т. п.

AltiVec разрабатывался в 1996—1998 годах Кейтом Дифендорфом, известным учёным и начальником отдела архитектуры микропроцессоров в Apple Computer.

Apple была главным заказчиком AltiVec и использовала его для ускорения мультимедийных приложений, таких как QuickTime или iTunes. AltiVec также играет огромную роль в работе таких системных механизмов Apple Mac OS X, как подсистема рендеринга изображений Quartz. Сторонние производители, например Adobe, также используют AltiVec для ускорения работы своих программ, например Adobe Photoshop. Motorola первая начала продавать AltiVec, встроенным в процессоры серии G4 (сейчас AltiVec’ом занимается отдельная компания Freescale, выделенная из подразделения Motorola). AltiVec также используется в некоторых встраиваемых системах, чтобы обеспечить быструю работу аналого-цифровых преобразователей.

IBM исключила VMX (другое название AltiVec) из своей серии POWER, так как эти процессоры использовались в мейнфреймах и серверах, где векторные вычисления не очень нужны. Впрочем, в PowerPC G5, предназначенных для настольных компьютеров, IBM встраивает высокопроизводительный модуль AltiVec. На ядре находится модуль сложения/умножения и полная реализация VMX.

IBM также заявляет, что часть инструкций VMX включена в процессор, используемый в игровой приставке Microsoft Xbox 360, который основан на PowerPC. Процессор Cell также включает в себя VMX модуль.

Согласно документации Apple[1], AltiVec в реализации на процессорах G4 и G5 может выполнять восемь 32-битных FLOPS за цикл, а SSE в реализации как Intel, так и AMD могут только четыре 32-битных FLOPS за цикл (надо отметить, что SSE-2 позволяет выполнить две 64-битных операции за цикл, чего не может AltiVec). Логично было бы предположить, что увеличив частоту в два раза, SSE смог бы догнать AltiVec. Однако частота работы процессоров Pentium превышает частоту PowerPC совсем не в два раза, так что AltiVec может выполнить существенно больше операций в секунду. Реальная скорость программы будет зависеть от гораздо большего количества факторов, таких как скорость и объём памяти, архитектура подсистемы ввода-вывода, компиляторов, ОС и просто архитектуры самой программы.

Несмотря на то что Apple заявляет, что PowerPC быстрее, чем Pentium при работе с мультимедийными приложениями, от таких оценок лучше воздержаться, так как однозначных данных о превосходстве SSE или AltiVec нет, несмотря на теоретически большую скорость AltiVec.

Примечания

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "AltiVec" в других словарях:

  • AltiVec — est un ensemble d instructions SIMD d opérations en virgule flottante conçu par, et propriété de, Apple, IBM et Motorola (l alliance AIM), et mis en application sur des versions du PowerPC telle le G4 de Motorola et le G5 d IBM. AltiVec est un… …   Wikipédia en Français

  • AltiVec — is a floating point and integer SIMD instruction set designed and owned by Apple, IBM and Freescale Semiconductor, formerly the Semiconductor Products Sector of Motorola, (the AIM alliance), and implemented on versions of the PowerPC including… …   Wikipedia

  • AltiVec — AltiVec™, VMX und auch Velocity Engine, ist die Bezeichnung für die von Motorola bzw. für die von IBM für die PowerPC Familie entwickelte SIMD Einheit. Mit Hilfe von AltiVec lässt sich dieselbe Operation auf mehrere Datenwörter gleichzeitig… …   Deutsch Wikipedia

  • AltiVec — es un conjunto de instrucciones SIMD en coma flotante y enteros diseñado y en propiedad de Apple Computer, IBM y Motorola (la alianza AIM), y puesto en ejecución en las versiones de PowerPC incluyendo el G4 de Motorola y los procesadores G5 de… …   Wikipedia Español

  • Altivec — AltiVec™, VMX und auch Velocity Engine, ist die Bezeichnung für die von Motorola bzw. für die von IBM für die PowerPC Familie entwickelte SIMD Einheit. Mit Hilfe von AltiVec lässt sich dieselbe Operation auf mehrere Datenworte gleichzeitig… …   Deutsch Wikipedia

  • AltiVec — es un conjunto de instrucciones SIMD en coma flotante y enteros diseñado y en propiedad de Apple Computer, IBM y Motorola (la alianza AIM), y puesto en ejecución en las versiones de PowerPC incluyendo el G4 de Motorola y los procesadores G5 de… …   Enciclopedia Universal

  • AltiVec — ● np. f. ►PUCE Ensemble de 162 nouvelles instructions, travaillant sur 32 registres de 128 bits, ajoutées par Motorola (avec le soutien d Apple et d IBM) aux PowerPC. à partir du G4. Du fait de la présence de nouveaux registres, les OS devront… …   Dictionnaire d'informatique francophone

  • VMX — AltiVec AltiVec est un ensemble d instructions SIMD d opérations en virgule flottante conçu par, et propriété de, Apple, IBM et Motorola (l alliance AIM), et mis en application sur des versions du PowerPC telle le G4 de Motorola et le G5 d IBM.… …   Wikipédia en Français

  • VMX — AltiVec™, VMX und auch Velocity Engine, ist die Bezeichnung für die von Motorola bzw. für die von IBM für die PowerPC Familie entwickelte SIMD Einheit. Mit Hilfe von AltiVec lässt sich dieselbe Operation auf mehrere Datenworte gleichzeitig… …   Deutsch Wikipedia

  • Velocity Engine — AltiVec™, VMX und auch Velocity Engine, ist die Bezeichnung für die von Motorola bzw. für die von IBM für die PowerPC Familie entwickelte SIMD Einheit. Mit Hilfe von AltiVec lässt sich dieselbe Operation auf mehrere Datenworte gleichzeitig… …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»