[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м +spellcheck +ё
Строка 10:
Между AltiVec и SSE есть серьёзные отличия. Только AltiVec поддерживает тип данных «[[RGB]] [[пиксел]]», но не может работать с 64-битными дробными целыми двойной точности и отсутствует механизм прямой передачи данных между скалярными и [[вектор|векторными]] регистрами. В соответствие с моделью "загрузить/сохранить" RISC архитектуры процессора [[PowerPC]], векторные регистры, равно как и скалярные, можно загружать и сохранять только в память. Впрочем, AltiVec предлагает существенно более расширенный набор «горизонтальных» инструкций, которые работают со всеми элементами вектора; допустимых комбинаций типов данных и операций гораздо больше. В отличие от восьми 128-битных векторных регистров в SSE и SSE2, AltiVec предлагает 32 таких регистра и большинство его инструкций работает сразу с тремя регистрами ("положить в C результат сложения A и B"), в отличие от двухоперандных (регистр/регистр, регистр/память: "прибавить к A содержимое B") команд в IA-32. Это может сильно сократить объем работы с памятью.
 
Современные версии [[GCC]], [[VisualAge|IBM Visual Age Compiler]] предоставляют набор функций для непосредственной работы с инструкциями AltiVec прямо из [[Си|языка C]] и [[Си_плюс_плюс|C++]].
Существует специальный модификатор '''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 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 так же используется в некоторых встраваемыхвстраиваемых системах, что бы обеспечить быструю работу [[АЦП|аналого-цифровых преобразователей]].
 
[[IBM]] исключила VMX (другое название AltiVec-а) из своей серии [[POWER]], так как эти процессоры использовались в мейнфреймах и серверах, где векторные вычисления не очень нужны. Впрочем, в [[PowerPC_G5|PowerPC G5]], предназначенных для настольных компьютеров, [[IBM]] встраивает высокопроизводительный модуль AltiVec. На ядре находится модуль сложения/умножения и полная реализация VMX.
Строка 30:
* [http://www.simdtech.org/altivec список рассылки Simdtech.org]
 
[[Категория:ПаралельнаяПараллельная обработка данных]]
 
[[de:AltiVec]]