Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Produit scalaire de vecteurs
Bonsoir,
SVP j'ai deux vecteurs A et B de dimensions N de naturels codés sur 32 bits et SUM est une variable entier naturel codée également sur 32 bits.
Je veux coder en assembleur le produit scalaire de A et B où le résultat placé dans SUM. C'est ce que j'ai fait:
Déjà je ne sais pas si le code est juste.
Sinon ma question est : quelle sera la différence au niveau du code si c'est pour un processeur monocycle, multicycle ou pipeline? Egalement pour un pipeline sans/avec prédiction de branchement?
!
SVP j'ai deux vecteurs A et B de dimensions N de naturels codés sur 32 bits et SUM est une variable entier naturel codée également sur 32 bits.
Je veux coder en assembleur le produit scalaire de A et B où le résultat placé dans SUM. C'est ce que j'ai fait:
Code : Tout sélectionner
addi $s0,$s0,0 //i=0
addi $s1,$zero,N //i<N
addi $s11,$s11,0 //SUM=0
Loop: lw $s8, 0($s5) //le registre $s5 contient adresse de A
lw $s9, 0($s6) //le registre $s6 contient adresse de B
mul $s10,$s8,$s9 //A[i]*B[i]
add $s11,$s11,$s10 //SUM+=A[i]*B[i]
addi $s8,$s8,4 //registre incrémenté de la taille d'un mot et contient adresse du suivant
addi $s9,$s9,4
addi $s0,$s0,1 //i++
bne $s0,$s1, Loop
Déjà je ne sais pas si le code est juste.
Sinon ma question est : quelle sera la différence au niveau du code si c'est pour un processeur monocycle, multicycle ou pipeline? Egalement pour un pipeline sans/avec prédiction de branchement?
!
Produit scalaire de vecteurs
- Claudius
Passionné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Bonsoir,
Déjà, si le PIC que tu comptes utiliser propose des instructions DSP (ce qui est fortement probable), ce que tu veux faire en 2 instructions et qui sont les plus couteuses en nombre de cycles et qui sont:
se fait en une et une seule instruction DSP du type Multiply–accumulate operation.
S'agissant de ta question "... quelle sera la différence au niveau du code ...", j'avoue ne pas comprendre ?!.
Déjà, si le PIC que tu comptes utiliser propose des instructions DSP (ce qui est fortement probable), ce que tu veux faire en 2 instructions et qui sont les plus couteuses en nombre de cycles et qui sont:
Code : Tout sélectionner
mul $s10,$s8,$s9 //A[i]*B[i]
add $s11,$s11,$s10 //SUM+=A[i]*B[i]
se fait en une et une seule instruction DSP du type Multiply–accumulate operation.
S'agissant de ta question "... quelle sera la différence au niveau du code ...", j'avoue ne pas comprendre ?!.
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 47 invités