私は現在、割り当てに取り組んでおり、最初のタスクはプログラムで TLB サイズを見つけることです。すぐに私の直感は、mmap を使用して大きなファイルをマップし、4096 バイトごとに読み取ることでした。このような読み取りを 100 回行った後、100 ページ (それぞれ 4k) にアクセスし、これらのページのうち 64 ページが TLB で参照され、他のページは TLB ミスを引き起こすはずです。
これらの 100 ページを読み終えたら、同じページをもう一度読みます。TLB で参照されている最後の 64 ページのアクセス時間は、最初の 36 ページよりも短いはずですが、結果は私の直感をサポートしていません。これらすべてのページのアクセス時間はほぼ同じです。1000 ページも試してみましたが、この 1000 ページでも、2 回目にアクセスしたときのアクセス時間は同様で、最初のアクセス時間よりもかなり短くなっています。
私は何が欠けていますか?私の直感は正しいですか?TLBサイズを見つけるというこの問題にどのように取り組むことができますか?
TLB を持つマシンで Ubuntu を使用しています: 4K ページ、4 ウェイ、64 エントリ。
感謝と乾杯、