嗨,这是我在这里的第一篇文章,所以大家好。
我在 GNU AS 中预测缓存行大小有问题。我用 C 语言编写了一个程序,该程序调用了一个用汇编语言编写的函数。
这是这个功能
.section .text
.section .data
.global time
time:
pushl %ebp
xor %edx, %edx
xor %eax, %eax
CPUID
RDTSC
popl %ebp
ret
它测量 CPU 周期
C代码是:
#include <stdio.h>
const int size = 256;
void main(){
unsigned long long cykl, cykl1, cykl2;
unsigned char matrix[size];
char bla;
int i,j,k;
for(i=0 ; i<size; i++)
{
cykl1 = time();
bla = matrix[i];
cykl2 = time();
cykl = cykl2 - cykl1;
printf("i=%d: %lld \n",i, cykl);
}
}
我运行了这个程序,但我看不到任何时差。据我所知,我的缓存行长度为 64 字节。
每次我加载下一个 64 字节的数组时,时间都应该增加,对吗?
我将不胜感激任何建议为什么它不能正常工作。