CX486のキャッシュが有効に働いているか確認してみました
このCPUはi80386互換ですがi80486相当の制御レジスタを持っているのでキャッシュの制御も486と同じと考えられます。
386ではReservedになっている制御レジスタCR0のCD,NWビットをアクセスします
このCPUはi80386互換ですがi80486相当の制御レジスタを持っているのでキャッシュの制御も486と同じと考えられます。
386ではReservedになっている制御レジスタCR0のCD,NWビットをアクセスします

i80486ではCD,NWビットをクリアすればキャッシュ有効になるので
同様にビットをセットリセットする関数を作成しました
同様にビットをセットリセットする関数を作成しました
/* キャッシュ ON */ void cache_on(void) { asm("movl %cr0,%eax"); asm("andl $0x9fffffff,%eax"); asm("movl %eax,%cr0"); /* CD,NW =0 */ } /* キャッシュ OFF */ void cache_off(void) { asm("movl %cr0,%eax"); asm("orl $0x40000000,%eax"); asm("movl %eax,%cr0"); /* CD=1 */ asm("invd"); /* Cache flush */ }
これを使って簡単な整数演算のループをまわして見ると

???
残念。ぜんぜん速度が変わっていません。どうなってるんかな