AltiVec: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м уточнение ссылки
Добавлена категория
Строка 1:
'''AltiVec''' это набор [[SIMD]] (векторных) инструкций для работы с [[число с плавающей запятой|плавающей запятой]] и целочисленной арифметикой, разработанный и принадлежащий [[Apple Computer]], [[IBM]] и [[Motorola]] (известных, как [[AIM alliance]]). AltiVec реализован на различных версиях процессоров [[PowerPC]], как производства Motorola ([[PowerPC G4|G4]]), так и производства [[IBM]] ([[PowerPC G5|G5]]).
Само название AltiVec является зарегистрированной [[tradename|зарегистрированнойторговая марка|торговой маркой]] фирмы Motorola, поэтому Apple использует название '''Velocity Engine''', а IBM — '''VMX'''.
 
Когда AltiVec появился в конце 90-х, это был самый мощный набор векторных инструкций в [[Центральный процессор|процессорах]] для настольных систем. AltiVec предлагает больше [[регистр]]ов и возможностей с ними работать в силу гораздо более гибкого набора команд, чем у его аналогов ([[MMX]], разработанный [[Intel]] для работы с целочисленной арифметикой, набор инструкций с плавающей точкой [[SSE]] и ряд разработок других производителей [[RISC]] процессоров).
 
Надо отметить, что 3-е и 4-е поколение SIMD наборов инструкций фирмы [[Intel]] ([[SSE2]] и [[SSE3]], изначально доступные в [[Pentium 4]], а позже реализованные [[AMD]] в архитектуре [[AMD64]]), имеют гораздо больший набор команд, чем AltiVec.
 
Как AltiVec, так и SSE оперируют 128-битными векторными регистрами, которыми можно пользоваться, как шестнадцатью 8-битными байтами, восемью 16-битными словами, четырьмя 32-битными целыми или четырьмя числами с плавающей запятой. Оба предоставляют механизм работы с [[кеш-память]]ю, таким образом программист может сам снизить количество промахов при работе с потоком данных.
Строка 13:
Существует специальный модификатор '''vector''' для спецификации типа переменной (например "vector unsigned char foo;" - вектор из шестнадцати 8-битных байтов). [[Полиморфизм в языках программирования|Перегруженные]] функции, такие как "vec_add" оперируют с векторными регистрами исходя из их содержимого, при этом проводя очень чёткий контроль типов. Векторные инструкции Intel-а никакого контроля за типами не производят и оперируют лишь размером вектора, не различая байты и слова. Такая халатность может привести к тому, что вектор слов будет сложен с вектором байт, полностью разрушив данные. Что бы такого не происходило, для архитектуры Intel, существует целая серия дублирующих друг друга инструкций вида: _mm_add_epi16 (x,y) - для сложения двух векторов слов, _mm_add_epi32 (x,y) для сложения двух векторов целых и т. п.
 
AltiVec разрабатывался в 1996—1998 годах [[Кейт Дифендорф|Кейтом Дифендорфом]], известным учёным и начальником отдела архитектуры микропроцессоров в [[Apple Computer]].
 
Apple была главным заказчиком AltiVec и использовала его для ускорения [[мультимедиа|мультимедийных]] приложений, таких как [[QuickTime]] или [[iTunes]]. AltiVec так же играет огромную роль в работе таких системных механизмов [[Mac OS X|Apple Mac OS X]], как [[Quartz|подсистема рендеринга изображений Quartz]]. Сторонние производители, например Adobe, так же используют AltiVec для ускорения работы своих программ, например [[Adobe Photoshop]]. Motorola первая начала продавать AltiVec, встроенным в процессоры серии G4 (сейчас AltiVec-м занимается отдельная компания [[Freescale]], выделенная из подразделения Motorola). AltiVec так же используется в некоторых встраиваемых системах, что бы обеспечить быструю работу [[АЦП|аналого-цифровых преобразователей]].
Строка 19:
IBM исключила VMX (другое название AltiVec-а) из своей серии [[POWER]], так как эти процессоры использовались в мейнфреймах и серверах, где векторные вычисления не очень нужны. Впрочем, в PowerPC G5, предназначенных для настольных компьютеров, IBM встраивает высокопроизводительный модуль AltiVec. На ядре находится модуль сложения/умножения и полная реализация VMX.
 
IBM так же заявляет, что часть инструкций VMX включена в процессор, используемый в игровой приставке Microsoft Xbox 360, который основан на PowerPC. Процессор [[Cell]] так же будет включатьвключет в себя VMX модуль.
 
Согласно [http://developer.apple.com/hardware/ve/summary.html документации_Appleдокументации Apple], AltiVec в реализации на процессорах G4 и G5 может выполнять 8 32-битных [[FLOPS]] за цикл, а SSE в реализации как Intel, так и AMD могут только 4 32-битных FLOPS за цикл (надо отметить, что SSE-2 позволяет выполнить 2 64-битных операции за цикл, чего не может AltiVec). Логично было бы предположить, что увеличив частоту в два раза, SSE смог бы догнать AltiVec. Однако частота работы процессоров Pentium превышает частоту PowerPC совсем не в два раза, так что AltiVec может выполнить существенно больше операций в секунду. Реальная скорость программы будет зависеть от гораздо большего количества факторов, таких как скорость и объём памяти, архитектура подсистемы ввода-вывода, компиляторов, [[Операционная система|ОС]] и просто архитектуры самой программы.
 
Несмотря на то, что Apple заявляет, что [[PowerPC быстрее]] быстрее, чем [[Pentium]] дляпри работыработе с мультимедийными приложениями, от таких оценок лучше воздержаться, так как однозначных данных о превосходстве SSE или AltiVec, нет, несмотря на теоретически большую скорость AltiVec.
 
== Внешние ссылки ==
Строка 31:
 
[[Категория:Параллельная обработка данных]]
[[Категория:Параллельные вычисления]]
 
[[de:AltiVec]]