AltiVec
Le AltiVec est une virgule flottante et l'ensemble d'instruction de du SIMD de nombre entier conçu et possédé par le Apple , le IBM et le semi-conducteur de Freescale de , autrefois le secteur de produits semiconducteurs du Motorola , (l'alliance de BUT de ), et mis en application sur des versions du PowerPC comprenant le G4 de Motorola, le PWRficient PA6T de s d'IBM 'processeurs de du G5 et du POWER6 de s, et P. AltiVec est un nom commercial possédé seulement par Freescale, ainsi le système désigné également sous le nom du moteur de vitesse de par Apple et du VMX par IBM et P. semi, bien qu'IBM emploie AltiVec de nos jours aussi.
Il convient noter que tandis qu'AltiVec se rapporte à un ensemble d'instruction, les réalisations dans des unités centrales de traitement produites par IBM et Motorola sont séparé en termes de conception de logique. Jusqu'ici, aucun IBM ne creusent a inclus une conception de logique d'AltiVec autorisée de Motorola et vice-versa.
AltiVec est une partie standard des nouvelles spécifications de la puissance AIS v. Ce n'était jamais formellement une partie de l'architecture de PowerPC jusqu'à ces spécifications bien qu'il ait employé des formats et la syntaxe d'instruction de PowerPC et ait occupé l'espace d'opcode expressément assigné pour tels buts.
Dispositifs et similitudes
AltiVec et registres de vecteur de bit du dispositif 128 du SSE qui peuvent représenter seize chars signés ou non signés à 8 bits, huit shorts signés ou non signés de 16 bits, quatre ints à 32 bits ou quatre variables à 32 bits de virgule flottante du . Tous les deux fournissent la cachette - instructions de de commande prévues pour réduire au minimum la pollution de cachette de en travaillant aux jets des données.
Ils montrent également des différences importantes. À la différence de SSE2, AltiVec soutient un " spécial du RVB ; " du Pixel ; le type de données, mais lui n'opère pas les flotteurs à double précision 64-bit, et il n'y a aucune manière de déplacer des données directement entre la grandeur scalaire et le vecteur s'enregistre. En accord avec le " ; charge/store" ; le modèle de la conception du RISC du PowerPC, les registres de vecteur, comme les registres scalaires, peut seulement être chargé de et stocké à la mémoire. Cependant, AltiVec fournit un ensemble de " beaucoup plus complet ; horizontal" ; opérations qui fonctionnent à travers tous les éléments d'un vecteur ; les combinaisons permises du type et des opérations de données sont beaucoup plus complètes. 32 128 registres de vecteur de bit sont donnés, comparé à 8 pour SSE et SSE2, et la plupart des instructions d'AltiVec prennent trois opérandes de registre comparés à seulement deux registres/à registre ou à opérandes de registre/mémoire sur le IA-32 .
AltiVec est également unique dans son soutien d'un vecteur flexible permutent l'instruction, dans laquelle chaque byte d'une valeur en résultant de vecteur peut être pris de n'importe quel byte de l'un ou l'autre de deux autres vecteurs, parametrized par encore un autre vecteur. Ceci tient compte des manipulations sophistiquées dans une instruction simple.
Les versions récentes de la collection de compilateur de GNU de , du compilateur visuel d'âge d'IBM de et d'autres compilateurs fournissent les qualités intrinsèques pour accéder à des instructions d'AltiVec directement des programmes du C et du C++ . En date de la version 4, le GCC inclut également les possibilités « automatiques-vectorisation » qui essayent de créer intelligemment Altivec les binaires accélérées sans besoin du programmeur d'employer des qualités intrinsèques directement. Le " ; vector" ; la classe de stockage est présentée pour permettre la déclaration des types indigènes de vecteur, par exemple, " ; foo non signé de char de vector ; " ; déclare un " appelé variable de vecteur de 128 bits ; foo" ; contenir seize chars non signés à 8 bits. Fonctions intrinsèques surchargées telles que le " ; vec_add" ; émettre la code opération appropriée basée sur le type des éléments dans le vecteur, et le type vérification très fort est imposé. En revanche, les types de données Intel-définis pour des registres d'IA-32 SIMD déclarent seulement la taille du registre de vecteur (128 ou 64 bits) et dans le cas d'un registre de 128 bits, s'il contient des nombres entiers ou des valeurs de virgule flottante. Le programmeur doit choisir la qualité intrinsèque appropriée pour les types de données en service, par exemple, " ; _mm_add_epi16 (x, y)" ; pour ajouter deux vecteurs contenant huit nombres entiers de 16 bits.
Histoire de développement
AltiVec a été développé entre 1996 et 1998 par un projet de collaboration entre Apple, IBM, et Motorola. Apple était le client primaire pour AltiVec bien qu'Apple ait commuté à Intel-faire, unités centrales de traitement de x86-based en 2006. Elles l'ont employé pour accélérer des applications des multimédia telles que le QuickTime , le ITunes et les parties fondamentales de Mac du d'Apple OS x incluant dans le compositeur de graphiques de quartz de . D'autres compagnies telles qu'Adobe l'emploient pour l'optimisation de leurs programmes à traitement d'images tels que le Adobe Photoshop . Motorola était le premier pour fournir les processeurs permis par AltiVec commençant leur ligne G4. AltiVec a été également employé dans quelques systèmes inclus qui sont employés pour le traitement numérique du signal à rendement élevé.IBM a uniformément laissé VMX sur leurs systèmes de la PUISSANCE , qui ont été prévus pour des applications d'unité centrale et de serveur où il n'était pas très utile. Cependant, la dernière unité centrale de traitement d'ordinateur de bureau d'IBM, PowerPC 970 (doublés le G5 par Apple) a inclus l'unité d'AltiVec semblable au original PowerPC 7400 . Le noyau a inclus un multiplicateur/unité d'additionneur et une pleine unité VMX.
AltiVec est la pièce standard du Category.VEC de la puissance AIS v.03 et un total de 128 registres de . VMX128 n'est pas entièrement compatible avec VMX/Altivec, comme un certain nombre d'opérations de nombre entier ont été enlevées pour faire l'espace pour le dossier de registre plus grand et les opérations spécifiques à l'application additionnelles.
| Random links: | Village de montagne, Alaska | Le Liban du sud, Ohio | Rencontre de mariage | Capitaine Ultra | Langue de Marshallese | AltiVec |