MIAxy |
Déplace un accumulateur interne X,Y |
|---|---|
| ARM | |
Syntaxe
| MIAxy{cond} Acc, Rn, Rm |
Paramètres
| Nom | Description |
|---|---|
| x | Ce paramètre optionnel permet d'indiquer l'un des choix suivant : BB, BT, TB, TT. |
| y | Ce paramètre optionnel permet d'indiquer l'un des choix suivant : BB, BT, TB, TT. |
| cond | Ce paramètre optionnel permet d'indiquer le code de condition |
| Acc | Ce paramètre permet d'indiquer le registre accumulateur interne. Le nom standard est «accx», où x indique un entier dans l'intervalle entre 0 et n. La valeur n dépend du microprocesseur. La valeur 0 indique le microprocesseur courant. |
| Rn | Ce paramètre permet d'indiquer le registre ARM contenant la première valeur à multiplier. |
| Rm | Ce paramètre permet d'indiquer le registre ARM contenant la deuxième valeur à multiplier. |
Description
Cette instruction permet d'effectuer une multiplication avec l'accumulateur internes de 40 bits en demi-mots.
Remarques
- Cette instruction est uniquement disponible sur les microprocesseur XScale du fabricant Intel.
- Instruction conçue pour le traitement parallèle sur les moitiés de registres : MIAxy permet de faire des multiplications signées 16 bits, en choisissant quelle moitié de chaque registre (haut ou bas) utiliser. Cela permet d'effectuer plusieurs opérations à partir d'un seul mot de 32 bits, ce qui est très efficace pour le SIMD (traitement parallèle de données).
- Les paramètres x et y contrôlent les parties des registres à utiliser : Les valeurs possibles (BB, BT, TB, TT) indiquent quelle moitié (Bottom ou Top) de Rn et Rm doit être utilisée pour la multiplication. Par exemple, BT signifie moitié basse de Rn et moitié haute de Rm, ce qui permet une grande flexibilité dans la manipulation des données en paquets.
- Utilise un accumulateur interne (comme acc0, acc1,...) : Contrairement aux instructions de multiplication classiques (MUL, MLA), MIAxy entrepose le résultat dans un registre d'accumulation spécial, séparé des registres généraux ARM. Cela libère les registres standards et permet un traitement plus fluide dans les algorithmes répétitifs.
- Particulièrement utile dans les algorithmes de traitement du signal : Cette instruction est taillée pour les filtres numériques (FIR, IIR), la compression audio/vidéo et les applications d'intelligence artificielle embarquées. Les opérations en demi-mots sont typiques de la manipulation de signaux 16 bits, comme les échantillons audio.
- Permet une optimisation importante des performances : En traitant deux valeurs 16 bits à la fois au lieu d'une seule valeur 32 bits, MIAxy permet de doubler le débit de certaines opérations. Cela réduit aussi la bande passante mémoire nécessaire, puisque deux données peuvent être codées dans un seul mot.
- Doit être utilisée avec précaution pour éviter des erreurs de signe : Comme la multiplication utilise des valeurs signées 16 bits, une mauvaise gestion des moitiés (par exemple utiliser BT au lieu de BB) peut conduire à des résultats erronés ou incohérents, notamment dans le cas d'opérations sur des valeurs non signées ou mal alignées.
- Cette instruction fait partie des extensions DSP de certains coeurs ARM : Elle n'est pas supportée par toutes les architectures ARM, mais plutôt par celles disposant d'un jeu d'instructions SIMD ou DSP, comme ARM9E, ARM11 ou certains Cortex-A avec MPE (Media Processing Engine). Il est donc important de vérifier la compatibilité processeur.
- L'utilisation d'accumulateurs internes impose une gestion manuelle du pipeline : Puisque l'accumulateur n'est pas accessible directement, il faut utiliser des instructions spécifiques pour lire ou vider son contenu. Cela impose à l'assembleur ou au compilateur de bien ordonnancer les instructions, sous peine de perdre des résultats intermédiaires ou d'introduire des conflits.
Dernière mise à jour : Dimanche, le 12 novembre 2017