sbrk(
プログラムは、 ) 関数を使用して大きな配列を宣言します。Sbrk は、指定された増分でデータ セグメント サイズを変更します。私が使用している標準ライブラリ関数、例えば:
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
私の main() 関数は、変数を宣言することから始めます。 register *a; 私の目標は、メモリアクセス中に使用するすべての変数をレジスタに入れようとすることです。なぜなら、必要なメモリアクセスは配列に対するものだけだからです。ローカル変数がメモリに存在する場合、それらにアクセスすると測定に影響を与える可能性があります。次に、約 400 万個の整数からなる配列 (32 ビット マシンでは 16 MB) を割り当てます。
a=sbrk(4*1024*4096+8192);
a=(int *)((((int)a>>13)<<13)+8192);
プログラムが開始されると、一部のメモリが割り当てられます。この関数sbrk()
は、このメモリを指定された量だけ増やします。関数呼び出しの後、「a」はこの巨大な配列の先頭を指します。
今、キャッシュブロックのサイズを取得するために何をすべきかわかりませんが、何か提案はありますか?