SMLAxy |
Multiplication d'accumulateur signé |
ARM |
Syntaxe
SMLAxy{cond} Rd, Rn, Rm, Ra
|
Paramètres
Nom |
Description |
x |
Ce paramètre permet d'indiquer un B ou un T lequel signifie si B est mentionné qu'il faut utiliser la moitié inférieure (bits[15:0]) de Rn ou T est mentionné qu'il faut utiliser la moitié supérieur (bits[31:16]) de Rn. |
y |
Ce paramètre permet d'indiquer un B ou un T lequel signifie si B est mentionné qu'il faut utiliser la moitié inférieure (bits[15:0]) de Rm ou T est mentionné qu'il faut utiliser la moitié supérieur (bits[31:16]) de Rm. |
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 à multiplier. |
Rm |
Ce paramètre permet d'indiquer le registre contenant le deuxième opérande à multiplier. |
Ra |
Ce paramètre permet d'indiquer le registre contenant la valeur à additionner. |
Description
Cette instruction permet d'effectuer une multiplication entière, avec une opérande 16 bits, un résultat 32 bits et un accumulateur à additionner.
Remarques
- Fonction principale : Multiplication et accumulation : L'instruction SMLAxy effectue une multiplication d'entiers signés suivie d'une addition au résultat
dans un accumulateur. Plus précisément, elle prend deux opérandes 16 bits (sélectionnés à partir des registres Rn et Rm), les multiplie, puis additionne le résultat à la
valeur dans le registre Ra, et entrepose le résultat final dans le registre Rd. Cela permet de réaliser efficacement des calculs de multiplication et d'accumulation en une
seule instruction.
- Paramètres x et y pour la sélection des moitiés de mots : Les paramètres x et y (respectivement B ou T) permettent de sélectionner les moitiés de mots des
registres Rn et Rm à utiliser pour la multiplication.
- B indique que la moitié inférieure (bits [15:0]) des registres Rn et Rm doit être utilisée.
- T indique que la moitié supérieure (bits [31:16]) des registres Rn et Rm doit être utilisée. Cela offre une grande flexibilité pour manipuler des portions spécifiques des registres lors de la multiplication, sans avoir à manipuler les données manuellement.
- Accumulateur à additionner : Ajout du résultat à Ra : Après avoir effectué la multiplication des valeurs spécifiées dans les registres Rn et Rm,
l'instruction ajoute le produit à la valeur contenue dans le registre Ra. Cette fonctionnalité permet de réaliser des opérations d'addition multiples de manière efficace,
un élément clef pour des applications comme les calculs de somme pondérée ou des algorithmes d'agrégation.
- Utilisation dans des algorithmes complexes : L'instruction SMLAxy est très utile dans des algorithmes qui nécessitent des calculs de multiplication et
d'addition sur des valeurs petites (16 bits) avec accumulation, comme dans les applications audio, vidéo, ou traitement de signal. Elle permet de faire ces opérations
efficacement sans avoir besoin d'instructions multiples, ce qui améliore la performance.
- Exploitation des moitiés de registres : La capacité de spécifier la moitié inférieure ou supérieure des registres (via les paramètres x et y) est
particulièrement utile pour les applications où les données sont souvent réparties dans des portions de mots de 16 bits. Par exemple, cela peut être utilisé dans des
applications de traitement parallèle, où deux opérandes sont souvent stockées dans des registres de 32 bits et doivent être manipulées indépendamment.
- Optimisation des performances : L'instruction SMLAxy permet d'optimiser les performances des calculs en réduisant le nombre d'instructions nécessaires
pour effectuer des multiplications et des additions successives. Dans des systèmes à faible consommation d'énergie ou avec des ressources limitées, cette instruction
permet de gagner des cycles d'horloge et d'exécuter plus rapidement des calculs complexes.
- Applications dans les moteurs de jeux et simulation : Dans les moteurs de jeux ou les applications de simulation, des opérations de multiplication et
d'addition rapides sont nécessaires pour calculer les mouvements, les animations, et les dynamiques physiques. L'instruction SMLAxy est particulièrement adaptée pour
les calculs de vecteurs ou les transformations géométriques dans ces contextes, où des valeurs 16 bits sont souvent utilisées pour optimiser les performances.
- Multiplication signée avec gestion des signes : L'instruction effectue une multiplication signée, ce qui signifie qu'elle prend en compte les signes
des valeurs dans les registres Rn et Rm. Cela permet de gérer correctement les valeurs positives et négatives pendant l'opération de multiplication, ce qui est essentiel
pour les calculs où les signes des opérandes peuvent affecter le résultat final (par exemple, dans les calculs financiers ou scientifiques).
Dernière mise à jour : Dimanche, le 12 novembre 2017