0
我正在使用的處理器體系結構有一個時間標記計數器,我想讀出來進行性能測量。時間標記計數器被存儲器映射到地址0x90000008的 。我使用下面的例程來讀取從 到tage計數器的值,但是打印輸出的差異總是爲零。任何人的想法 我失蹤了?從存儲器映射寄存器讀取
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);
非常感謝您的幫助, 菲爾
你確定你的時間戳是`char`? – ruslik 2010-12-07 13:41:00
不,它是32位存儲單元中的30位值(MSB爲0) – 2010-12-07 13:45:54