USADA8 |
Sommation absolue et accumulateur 8 bits non-signé |
| ARM |
Syntaxe
|
USADA8{cond} Rd, Rn, Rm, Ra
|
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rd |
Ce paramètre permet d'indiquer le registre de destination |
| Rn |
Ce paramètre permet d'indiquer le registre contenant le premier opérande. |
| Rm |
Ce paramètre permet d'indiquer le registre contenant le deuxième opérande. |
| Ra |
Ce paramètre permet d'indiquer le registre contenant l'opérande accumulateur. |
Description
Cette instruction permet d'effectuer une sommation de valeur naturel de différences absolues et d'accumulation.
Remarques
- Sur la différence principale avec USAD8 : Contrairement à USAD8, calculant seulement la somme des différences absolues, USADA8 ajoute en plus la valeur
du registre accumulateur Ra au résultat final. Cela permet de chaîner des calculs ou d'accumuler progressivement des comparaisons sur plusieurs paires de vecteurs.
- Sur l'usage typique dans les algorithmes de traitement d'image : USADA8 est très utile dans des opérations comme la recherche de blocs en compression vidéo
ou en reconnaissance d'images, où il faut accumuler plusieurs mesures de dissimilarité pour déterminer la meilleure correspondance.
- Sur la gestion du registre accumulateur (Ra) : Le registre Ra est indispensable dans cette instruction. Il doit être soigneusement préparé avant
l'exécution de USADA8 pour éviter des résultats inattendus. Typiquement, on l'initialise souvent à 0 pour un nouveau calcul, sauf si une accumulation volontaire est
recherchée.
- Sur la signification de "valeurs naturelles" : La documentation parle de "valeurs naturelles", mais il serait plus rigoureux de dire valeurs non-signées
("unsigned") car l'instruction traite exclusivement des octets 8 bits non-signés, ce qui garantit que les différences absolues restent toujours positives.
- Sur la performance liée au parallélisme : L'instruction travaille en parallèle sur 4 octets extraits de Rn et Rm, réalisant les différences absolues et
la somme en une seule passe. Cela maximise la performance SIMD (Single Instruction, Multiple Data) pour des charges de calcul de comparaison.
- Sur la précision du champ {cond} : Le champ {cond} permet d'exécuter l'instruction seulement si une condition est remplie, selon les drapeaux de
programme (N, Z, C, V). Cela offre une grande souplesse pour optimiser les boucles de calcul, surtout en traitement de signal ou d'image.
- Sur la gestion des débordements : Même si l'addition de la somme absolue et de l'accumulateur peut théoriquement dépasser 32 bits, en pratique, ARM ne
fournit pas de mécanisme automatique de saturation pour USADA8. C'est au programmeur de s'assurer que l'accumulation reste dans les limites valides du registre.
- Sur les avantages en comparaison directe avec des alternatives manuelles : Sans USADA8, il faudrait écrire plusieurs instructions distinctes pour effectuer
les différences absolues, les additions, puis l'accumulation. USADA8 permet de tout faire en une seule instruction, réduisant la latence et la consommation d'énergie sur
les architectures embarquées.
Dernière mise à jour : Dimanche, le 12 novembre 2017