L'architecture de processeur avec laquelle je travaille comporte un compteur d'horodatage que je veux lire pour effectuer des mesures de performance. Le compteur d'horodatage est mappé en mémoire à l'adresse 0x90000008. J'ai utilisé la routine suivante pour lire la valeur du compteur de temps , mais la différence dans l'impression est toujours zéro. Quelqu'un d'une idée ce que je suis manquant?Lecture à partir du registre mappé en mémoire
char* const ADDR = (char *) 0x90000008;
unsigned long cycle_count_val() {
unsigned long res;
asm volatile (
"set ADDR, %%l0 \n\t"
"ld [%%l0], %0 \n\t"
: "=r" (res)
:
: "%l0"
);
return res;
}
....
unsigned long start = cycle_count_val();
execute_benchmark();
unsigned long end = cycle_count_val();
printf("Benchmark performance(in clock cycles) = %ld \r\n", end-start);
Un grand merci pour votre aide, Phil
Etes-vous sûr votre horodatage est un 'char'? – ruslik
non, c'est une valeur de 30 bits dans un emplacement de mémoire de 32 bits (MSB sont 0) –