こんにちは、初めての投稿です 皆さんこんにちは。
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 バイトの配列をロードするたびに時間は上昇するはずですよね?
正常に動作しない理由についてアドバイスをいただければ幸いです。