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
こんなデータが返ってきたよ
何やってるかというと、Windows 2000に GetLogicalProcessorInformation を実装しようとしてるわけなんだな|・ω・)
Comments