SMMLA |
Multiplication avec accumulateur signé |
| ARM |
Syntaxe
|
SMMLA{R}{cond} Rd, Rn, Rm, Ra
|
Paramètres
| Nom |
Description |
| R |
Ce paramètre optionnel permet d'indiquer que le résultat est arrondit. S'il n'est pas présent, le résultat sera tronqué. |
| 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 la valeur à ajouter ou soustraire. |
Description
Cette instruction permet d'effectuer une multiplication du mot le plus significatif signé avec une accumulation.
Remarques
- Multiplication à haute précision suivie d'une accumulation : L'instruction SMMLA effectue la multiplication de deux entiers 32 bits signés, mais ne
conserve que la partie haute (les 32 bits les plus significatifs) du résultat 64 bits, à laquelle elle ajoute une valeur d'accumulation. Ce comportement est
particulièrement utile dans les contextes de calculs en virgule fixe.
- Utilisation de l'accumulateur Ra pour affiner le résultat : La présence du registre Ra permet de chaîner plusieurs multiplications, en ajoutant les
résultats partiels successifs. Cela en fait une instruction très bien adaptée aux produits scalaires, transformées discrètes, ou filtres numériques, où les accumulations
sont centrales.
- Comportement de troncature ou d'arrondi selon le suffixe R : Le suffixe R (pour Rounded) modifie le mode de calcul : avec lui, le résultat intermédiaire
est arrondi (plutôt que tronqué), ce qui améliore la précision dans les calculs de longue chaîne. Sans ce suffixe, seule la partie haute est extraite, ce qui peut
introduire un biais systématique.
- Optimisée pour les algorithmes en virgule fixe : Dans les systèmes embarqués qui ne disposent pas toujours d'un co-processeur flottant, SMMLA fournit une
alternative rapide et précise pour des calculs pseudo-flottants en virgule fixe Q-format, très utilisée dans les DSP. Elle facilite la gestion des dépassements en
conservant les bits de poids fort.
- Instruction conditionnelle pour plus de flexibilité : L'instruction peut être rendue conditionnelle grâce au suffixe {cond}, ce qui permet de l'exécuter
uniquement si certains drapeaux sont positionnés. C'est une caractéristique typique des instructions ARM, et cela permet d'éviter des branchements explicites tout en
gardant un flux d'exécution fluide.
- Chaînage efficace d'opérations dans les boucles de calcul : Grâce à l'utilisation combinée de la multiplication, de la sélection de bits significatifs
et de l'accumulation, SMMLA permet d'économiser plusieurs instructions dans les boucles de traitement. Cela est essentiel dans des fonctions récurrentes comme le
produit matriciel ou vectoriel.
- Nécessité de bien comprendre la sélection du MSW : Le fait que l'instruction récupère uniquement le most significant word (MSW) du résultat nécessite une
bonne compréhension du format binaire et de son impact sur le résultat final. Mal utilisé, ce comportement peut fausser fortement la précision des calculs.
- Très utile pour le contrôle de la dynamique des résultats : En ne conservant que les bits de poids fort, SMMLA permet de contrôler la dynamique des
valeurs produites, en évitant les saturations ou débordements que pourrait provoquer l'accumulation des bits de poids faible. Cela permet une meilleure maîtrise des
intervalles de sortie, surtout dans les traitements numériques à fort débit.
Dernière mise à jour : Dimanche, le 12 novembre 2017