Intel CPU のL1/L3 キャッシュを取得する方法

Intel の CPU のキャッシュサイズ
EAX = 0x80000006 で cpuid をコールすると、L2 キャッシュについては取得できるのですが、

L1 / L3 については記載がありません


Intel® 64 and IA-32 Architectures Software Developer Manuals

インテルのマニュアルを読むと
EAX = 2 にして、 cpuid をコールすることで、 CPU のキャッシュ情報を取得できるとあります。
返り値 が 1バイト単位で 返るそうな。

4バイトレジスターの最上位ビットが 1 、もしくは 0の時は、値を見てはいけない。
それ以外の時は、次のサイトのテーブルに従って、決定することができる。

sandpile.org -- x86 architecture -- CPUID

このパソコンの場合

0x55 Instruction TLB: 2-MByte or 4-MByte pages
0x03 DATA TLB
0x5a Data TLB0: 2-MByte or 4 MByte pages
0xf0:64bit prifetch
0xb2 Instruction TLB: 4KByte pages
0xdd L3 3MByte
0x09 1st-level instruction cache: 32KBytes
0xca 2nd-Level TLB: 4 KByte pages
0x21 2nd-level cache: 256 KBytes
0x2c 1st-level data cache: 32 KBytes

こんなデータが返ってきたよ

CPUZ

何やってるかというと、Windows 2000に GetLogicalProcessorInformation を実装しようとしてるわけなんだな|・ω・)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です