注册 | 登录 [划词翻译关闭]
翻译软件 logo
 《每日法语听力》全新发布 - 法语学习必备的听力软件
  赞助商链接

人大国际高端品牌管理硕士-热申
中法顶级学府共同培养,使馆支持,亲临欧洲,全英文授课,深入国际顶级企业与品牌大师零距离接触,成就奢侈品行业稀缺人才!
www.luxeruc.org

人大法国语言文学与社会科学硕博连读
索邦四大、蒙彼利埃三大和中国人民大学为精通法语的人文社科类学生开设的国际型硕、博高等学位教育培养计划。
www.masterdocfr.com

25 所法国高校与您相约
北京,武汉,成都,西安,上海3月9日至17日。希望赴法攻读硕士或博士学位?希望与法国知名高校进行一对一面谈? 赶快报名!
www.chine.campusfrance.org/zh-hans

战斗在法国
欧洲最具活力的中文社区.最大的关于法国的中文网络平台
www.revefrance.com

法国学校联盟 -- 最专业的留法机构
行业首创,全程公开进度查询;官方学校招生代表;专属面签辅导;巴黎专属办事处;全海归团队;高签证率缔造者
www.edufrance.org.cn

咪咪学法语
法语爱好者的家园 留学与考试的助手 提供各种法语相关的信息与服务
www.mimifr.com

法语沙龙
四川师范大学法语系专业所创办公益性的法语学习网站,为法语爱好者提供法语学习交流的网上空间
www.monfr.com

关闭侧边栏
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'AIM alliance), et mis en application sur des versions du PowerPC telle le G4 de Motorola et le G5 d'IBM. AltiVec est un Nom commercial détenu uniquement par Motorola ; ainsi l'ensemble est également appelé Velocity Engine par Apple et VMX par IBM.

Origines

Au milieu des Années 1990, différents fabricants de micro-processeurs s'intéressèrent au développement d'unités de calculs parallèles qui permettraient d'alléger la charge du processeur en traitant de front de grandes quantités de données. En effet, l'essor des activités multimédia avait mis en évidence les besoins en puissance de ces applications par rapport à des applications classiques comme la bureautique. Les premiers essais de HP et de Sun Microsystems permirent de définir les bases des unités de traitement SIMD dans le cadre de telles applications et ouvrirent la voie à Intel et à Motorola. Ainsi, en 1996, Intel finalisa son extension MMX qui permettait de travailler sur des données 64 bits via une unité de calcul vectoriel. Cette extension se développa pour donner naissance aux unités SSE, SSE2, SSE3 et SSE4 qui, en reprenant la base de MMX, autorisent le travail sur des flottants simple ou double précision dans le cadre d'applications multimédia comme la compression vidéo ou la synthèse d'images 3D.

Pourtant, malgré l'avancée que représentait MMX et de ses successeurs en termes de performances, cette technologie semblait être sous-exploitée dans les communautés de développeurs. En effet, des problèmes comme la non-orthogonalité de leurs jeux d'instructions, les problèmes d'alignement mémoires et les problèmes d'adéquations entre les structures de données et les limitations de ces unités ralentissaient grandement le développement d'application de grande envergure. Parallèlement aux travaux d'Intel et en constatant les problèmes auxquels les fabricants de microprocesseurs se heurtaient, Motorola s'allia en 1996 à Apple pour concevoir la future architecture du PowerPC G4. Keith Diefendorff, alors chef du projet AltiVec, définit les grandes lignes de cette unité de calcul en n'en faisant pas qu'une simple extension multimédia, mais plutôt une unité de calcul polyvalente. Tirant partie des expériences de ses concurrents, Motorola décida donc de reprendre à zéro la conception matérielle de ce type d'unité de calcul. Finalement, en 1999, le PowerPC G4 d'Apple se vit doté de l'unité de calcul AltiVec de Motorola. En 2002, IBM intègre AltiVec dans les processeurs qui équipent les PowerPC G5.

Lorsqu'il a été présenté la première fois, à la fin des Années 1990, AltiVec était le système SIMD le plus puissant, pour un Processeur d'une Unité centrale de bureau. Comparé à ses contemporains (MMX d'Intel, en nombre entier uniquement ; SSE en virgule flottante, et divers autres systèmes de fournisseurs de processeurs RISC), AltiVec offrait plus de registres, qui pouvaient être utilisés de façons plus variées et être opérés par un ensemble d'instructions beaucoup plus flexible. Cependant, SSE2, le système SIMD d'Intel de quatrième génération, présenté avec le Pentium 4, propose un grand nombre de fonctionnalités qui viennent combler les différences entre ces technologies.

Principes de fonctionnement

Altivec est basé sur une implémentation intra-processeur du modèle SIMD aussi nommé SWAR pour SIMD Within A Register (terme inventé en 1996 par l'Université de Purdue, pour différencier le SIMD interne au processeur du SIMD externe au processeur, c'est à dire les machines parallèles). Dans ce modèle, la manipulation de structures de données spéciales permet de reproduire le comportement d'une unité SIMD au sein d'un seul processeur. Ces types de données nommés vecteurs sont des blocs de 128 bits pouvant contenir des données de plusieurs types et sont traitées par des opérateurs spécifiques qui effectuent leurs calculs simultanément sur tous les éléments du vecteur. Un jeu de 32 registres vectoriels 128 bits permettent alors de stocker 16 entiers 8 bits signés ou non signés, 8 entiers 16 bits signés ou non signés, 4 entiers 32 bits signés ou non signés ou bien 4 nombre réels 32-bit en virgule flottantes. Contrairement à SSE2, Altivec ne propose pas de support pour les nombres réels double précision.

Au sein de l'architecture du PowerPC, Altivec est complètement indépendante des unités de calcul classiques. Elle possède quatre unités de traitement équipées de pipelines qui lui permettent de traiter plusieurs opérations sur des flottants simple précision, des opérations de permutations, des opérations simples sur des entiers (comme l'addition) ou des opérations composites sur des entiers (comme les multiplications partielles) de manière efficace. Elle est en outre capable de démarrer simultanément l'exécution de plusieurs opérations dans plusieurs unités de calcul, on parle alors d'unité de calcul super-scalaire. L'utilisateur a en outre la possibilité d'utiliser l'ensemble des registres normaux fournis par le PowerPC et les 32 registres vectoriels fournis par AltiVec de manière simultanée.

Jeu d'instructions

Les versions récentes des outils de développement, tels GNU Compiler Collection, VisualAge d'IBM et d'autres compilateurs, fournissent le support direct aux instructions d'AltiVec depuis des programmes en C et C++. En pratique, 162 primitives C sont disponibles et se repartissent en quatre grands groupes :
  1. Les instructions de chargement qui permettent de charger une ou plusieurs valeurs de la mémoire vers un registre vectoriel ou d'un registre vers la mémoire.
  2. Les instructions de pré-chargment ou de prefetch qui autorisent la manipulation directe des informations présentes dans le cache de manière à optimiser leur ordre de traitement et de ce fait augmenter les performances globales de l'application.
  3. Les instructions de manipulation des vecteurs. Certainement les fonctions les plus puissantes d'AltiVec, on trouve dans cette catégorie toutes les instructions de décalages de bits, de permutations d'éléments, de fusion, de duplication de données vectorielles.
  4. Les instructions arithmétiques qui permettent d'effectuer classiquement des opérations telles que l'addition, la soustraction ou des opérations sur les nombres en virgule flottante (arrondis ou troncature) sur des vecteurs. Altivec fournit aussi un certain nombre d'instructions émulant des fonctions de type DSP, des opérations booléennes ou de comparaisons.

La principale différence entre le jeu d'instructions fourni par Altivec et celui de SSE2 est que Altivec fournit un grand nombre d'opérations dites horizontales, permettant de réaliser des réductions c'est-à-dire des opérations qui s'appliquent non pas aux éléments de deux vecteurs mais au contenu d'un seul vecteur. Par exemple, la fonction vec_sums effectue la somme des éléments d'un vecteur.

Exemple d'utilisation

L'utilisation d'Altivec au sein d'un code C est relativement simple. Considérons par exemple une fonction C calculant la différence de deux images de NxN pixels. Il s'agit ici d'effectuer la soustraction des intensités des pixels et d'y appliquer un seuillage pour obtenir une image en noir et blanc.


unsigned char I1, I2, R;
for( size_t i = 0; i < N*N; i++ ) { signed short s = I2[i] - I1[i]; R[i] = (s<10 @ s>240) ? 0 : 255;
}

Le code C Altivec équivalent est le suivant :


unsigned char I1[N*N], I2[N*N], R[N*N];
vector unsigned char vS,vR,v240,v10,V0,V255;
vector bool char vC;
v0 = vec_splat_u8(0);
v10 = vec_splat_u8(10);
v240 = (vector unsigned char)vec_splat_s8(-15);
v255 = (vector unsigned char)vec_splat_s8(-1);
for( size_t i = 0; i < (N*N)/16; i++ ) { vS = vec_sub( vec_ld(I2,16*i), vec_ld(I1,16*i) ); vC = vec_or( vec_cmplt( vS, v10 ), vec_cmpgt( vS, v240) ); vR = vec_sel( v255, v0, vC); vec_st( vR, R, i*16 ); } Plusieurs points sont à noter : * Les variables vectorielles sont déclaré en utilisant la classe de stockage de type vector. Ainsi, pour un vecteur contenant des éléments d'un type T, le type correspondant est vector T;
  • Les primitives vec_ld et vec_st remplacent les accès aux éléments du tableau en effectuant respectivement le chargement ou l'écriture de blocs;
  • Chaque primitive Altivec traite les données par blocs de 16 éléments, ce qui implique que la boucle principale ne doit plus effectuer NxN itérations, mais seulement NxN/16;
  • Les constantes vectorielles sont générées hors de la boucle principale pour des raisons de performances;
  • Les tests nécessaires au seuillage sont aussi vectorisés grâce à la primitive vec\\_sel qui permet d'effectuer l'équivalent de 16 sélections en trois cycles seulement.

L'avantage principal de ces fonctions est leur facilité d'utilisations due à une surcharge transparente pour l'enemble des types vectoriels, contrairement au instructions disponibles sur les architectures Intel ou le nom de la fonction est modifiée en fonction du type du vecteur. Une liste exhaustive des fonctions disponibles est accessible sur la page Altivec Instructions Cross References de Apple.

Applications

Apple est le premier client d'AltiVec, et l'utilise pour accélérer les applications de multimédia telles QuickTime et ITunes, et les programmes de traitement d'images tels Photoshop d'Adobe. Motorola a fourni des processeurs AltiVec pour toutes les unités centrales de bureau depuis l'introduction du G4. AltiVec est également employé dans quelques systèmes embarqués, pour fournir de grandes performances lors du traitement numérique du signal.

Altivec et l'industrie

Depuis le retrait d'Apple du monde PowerPC et Altivec, les principaux constructeurs de machines à base de powerPC Altivec sont Thales Computer et Mercury Computer.

Le futur d'Altivec

bien qu'ayant disparu des dernières machines d'Apple, Altivec continu d'exister dans des domaines moins grand public comme les stations de travail et serveurs de calcul d'IBM à travers le PowerPC 970 MP (la dernière version a avoir équipé les PowerMac G5) et à travers le nouveau Power6 d'IBM. Altivec continu aussi d'exister dans l'un des domaines grand public à très forte croissance: les consoles de jeux. Ainsi la XBOX 360 de Microsoft est un processeur triple coeur Altivec dérivant du 970 MP, et la PS3 et son fameux processeur Cell, un octo-processeur piloté par un processeur maitre (le PPE) très proche du 970. L'octo-processeur contient lui aussi un jeu d'instruction SWAR nommé SPE (Synergistic Processing Elements) dont le jeu d'instruction est très proche d'Altivec.

Voir aussi

Notes et références

..

Liens externes


(搜索用时0.001秒)

法语助手 2010  -  手机版网页 -  广告联系 -  意见反馈 -  关于法语在线词典 -  合作伙伴 -  Dictionnaire Chinois