SMMUL |
Multiplication de mot signé |
| ARM |
Syntaxe
|
SMMUL{R}{cond} {Rd}, Rn, Rm
|
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. |
Description
Cette instruction permet d'effectuer une multiplication du mot entier le plus significatif.
Remarques
- Extraction directe du mot le plus significatif : L'instruction SMMUL multiplie deux entiers signés de 32 bits, mais elle ne conserve que la moitié
supérieure (les 32 bits de poids fort) du résultat 64 bits. Cette approche est utile pour des calculs en virgule fixe, où l'échelle du résultat doit être préservée
sans saturer les registres.
- Option d'arrondi avec le suffixe R : Le suffixe optionnel R permet d'arrondir le résultat au lieu de simplement le tronquer. Cela apporte une meilleure
précision cumulative dans les boucles de calcul, notamment en traitement du signal ou en algorithmes numériques répétitifs, où l'erreur d'arrondi peut s'amplifier.
- Utile dans le format Q15/Q31 (fixed-point) : SMMUL est couramment utilisée dans les applications traitant des données en Q-format (comme Q15 ou Q31), où
les valeurs sont représentées comme des entiers mise à l'échelle. L'extraction du MSW assure que le résultat reste dans la plage de représentation correcte, sans débordement.
- Optimisation pour processeurs sans unité flottante : Cette instruction est conçue pour fonctionner efficacement sur des processeurs sans FPU
(Floating Point Unit). Elle offre une solution rapide et efficace pour des calculs pseudo-flottants en temps réel, ce qui est courant dans les systèmes embarqués.
- Pas d'accumulateur contrairement à SMMLA : Contrairement à des instructions voisines comme SMMLA ou SMMLS, SMMUL ne réalise pas d'addition ou de
soustraction avec un accumulateur. Elle est donc mieux adaptée aux calculs indépendants ou aux étapes intermédiaires d'un pipeline de calcul.
- Instruction à haute efficacité pour boucle critique : L'instruction SMMUL est très performante dans les boucles critiques, notamment les filtres numériques
(FIR, IIR) ou les moteurs de transformation (FFT, DCT). Le fait qu'elle ne mobilise pas de double registre de destination comme SMULL améliore la fluidité des
registres.
- Conditionnelle pour une exécution sélective : Grâce au suffixe {cond}, elle peut être exécutée de manière conditionnelle, en fonction des drapeaux d'état
du processeur. Cela permet une meilleure optimisation du flot de contrôle, en réduisant l'usage de branchements conditionnels.
- Complément utile aux autres instructions SMMULx : SMMUL peut être vue comme la brique de base des autres instructions comme SMMLA (accumulateur) ou
SMMLS (soustraction). Elle est idéale lorsque seule la multiplication du MSW est nécessaire, sans traitement supplémentaire, ce qui allège le code et la charge
processeur.
Dernière mise à jour : Dimanche, le 12 novembre 2017