AltiVec: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
перевел до конца |
Frantony (обсуждение | вклад) Нет описания правки |
||
Строка 1:
'''AltiVec''' это набор [[SIMD]] (векторных) инструкций для работы с [[число_с_плавающей_запятой|плавающей запятой
Само название AltiVec является [[tradename|зарегистрированной торговой маркой]] фирмы Motorola, поэтому Apple использует название '''Velocity Engine''', а [[IBM]]
Когда AltiVec появился в конце 90-ых, это был самый мощный набор векторных инструкций в [[Центральный_процессор|процессорах]] для настольных систем. AltiVec предлагает больше [[Регистр|регистров]] и возможностей с ними работать в силу гораздо более гибкого набора команд, чем у его аналогов ([[MMX]], разработанный [[Интел]] для работы с целочисленной арифметикой, набор инструкций с плавающей точкой [[SSE]] и ряд разработок других производителей [[RISC]] процессоров).
Строка 6:
Надо отметить, что 3-е и 4-ое поколение SIMD наборов инструкций фирмы Intel ([[SSE2]] и [[SSE3]], изначально доступные в [[Pentium_4]], а позже реализованные [[AMD]] в архитектуре [[AMD64]]), имеют гораздо больший набор команд, чем AltiVec.
Как AltiVec, так и SSE
Между
Современные версии [[GCC]], [[VisualAge|IBM Visual Age Compiler]] предоставляют набор функций для непосредственной работы с инструкциями AltiVec прямо из [[Си|языка C]] и [[Си_плюс_плюс|C++]].
Существует специальный модификатор '''vector''' для спецификации типа переменной (например "vector unsigned char foo;" - вектор из шестнадцати 8-битных байтов). [[Полиморфизм_в_языках_программирования|Перегруженные]] функции, такие как "vec_add" оперируют с векторными регистрами исходя из их
AltiVec разрабатывался в
Apple была главным заказчкиком AltiVec-а и использовала его для ускорения [[мультимедиа|мультимедийных]] приложений, таких как [[QuickTime]] или [[iTunes]]. AltiVec так же играет огромную роль в работе таких системных механизмов [[Mac_OS_X|Apple Mac OS X]], как [[Quartz|подсистема рендеринга изображений Quartz]]. Сторонние производители, например Adobe, так же используют AltiVec для ускорения работы своих программ,
[[IBM]] исключила VMX (другое название AltiVec-а) из своей серии [[POWER]], т.к. эти процессоры использовались в мейнфреймах и серверах, где векторные вычисления не очень нужны. Впрочем, в [[PowerPC_G5|PowerPC G5]], предназначенных для настольных компьютеров, IBM встраивает высокопроизводительный модуль AltiVec. На ядре находится модуль сложения/умножения и полная реализация VMX.
Строка 21:
IBM так же заявляет, что часть инструкций VMX включена в процессор, используемый в игровой приставке Microsoft Xbox 360, который основан на PowerPC. Процессор [[Cell]] так же будет включать в себя VMX модуль.
Согласно документации Apple на http://developer.apple.com/hardware/ve/summary.html, AltiVec в реализации на процессорах [[PowerPC_G4|G4]] и [[PowerPC_G5|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.
== Внешние ссылки ==
* [http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0162468rH3bTdGmKqW5Nf2 страница Freescale, посвященная AltiVec]
* [http://developer.apple.com/hardware/ve/ страница Apple про Velocity Engine]
* [http://www.simdtech.org/altivec список рассылки Simdtech.org]
[[Категория:Паралельная обработка данных]]
[[de:AltiVec]]
[[en:AltiVec]]▼
[[es:AltiVec]]
[[fr:AltiVec]]
[[it:AltiVec]]
[[ja:AltiVec]]
▲[[en:AltiVec]]
|