Comptage de cycles sur le raspberry pico
Posté : sam. 6 mars 2021 21:43
Hello.
J'écris un programme en assembleur pour estimer le nombre de cycles d'une fonction car le pico n'a pas de compteur de ce type.
Le Pico a une fréquence d'horloge de 125 Mhertz ce qui donne une durée de 8 nano secondes par cycle.
J'utilise le timer pour compter la durée de la fonction en microsecondes (d’après la documentation rp2040).
Le chargement des compteurs du timer, le stockage en mémoire, le retour au programme puis la lecture de fin des compteurs
prends 23 cycles (estimation d'après les chiffres par instruction de la documentation).
Je lance le programme avec un seul nop pour commencer : résultat 35 microsecondes : première incompréhension.
Je relance avec une boucle de 1000 nop soit 3000 cycles (1000 nop, 1000 subs, 1000 bgt) résultat 411 microsecondes
soit (411-35)/ 3000 = 125 nano secondes par cycle, très très loin des 8 nano secondes attendues.
Je relance avec une boucle de 2 nop soit 4000 cycles résultat 630 soit (630 - 35) / 4000 = 148 nano secondes ce qui semble
confirmer que le pico tourne vers les 130 nano secondes par cycle.
Où est mon erreur d'interprétation de ces résultats ?
Ps : je renouvelle ma demande d'avoir une rubrique spécifique au Pico dans ce forum si c'est possible !
J'écris un programme en assembleur pour estimer le nombre de cycles d'une fonction car le pico n'a pas de compteur de ce type.
Le Pico a une fréquence d'horloge de 125 Mhertz ce qui donne une durée de 8 nano secondes par cycle.
J'utilise le timer pour compter la durée de la fonction en microsecondes (d’après la documentation rp2040).
Le chargement des compteurs du timer, le stockage en mémoire, le retour au programme puis la lecture de fin des compteurs
prends 23 cycles (estimation d'après les chiffres par instruction de la documentation).
Je lance le programme avec un seul nop pour commencer : résultat 35 microsecondes : première incompréhension.
Je relance avec une boucle de 1000 nop soit 3000 cycles (1000 nop, 1000 subs, 1000 bgt) résultat 411 microsecondes
soit (411-35)/ 3000 = 125 nano secondes par cycle, très très loin des 8 nano secondes attendues.
Je relance avec une boucle de 2 nop soit 4000 cycles résultat 630 soit (630 - 35) / 4000 = 148 nano secondes ce qui semble
confirmer que le pico tourne vers les 130 nano secondes par cycle.
Où est mon erreur d'interprétation de ces résultats ?
Ps : je renouvelle ma demande d'avoir une rubrique spécifique au Pico dans ce forum si c'est possible !