Kaz Kojima
kkoji****@rr*****
2004年 11月 9日 (火) 11:25:28 JST
小島です。 ngc****@ff***** wrote: > LANDISKとかで使っている末尾に"R"が付く型番のもの(SH7750R,SH7751R)だと, > キャッシュアルゴリズムでLRUに対応していますが,それ以前のは, > 単純にアドレス値のどこぞのビット範囲の値からマッピングした > キャッシュエントリの内容を常時最新のものに入れ替えて持っているだけです. direct mapping という奴ですね。 > キャッシュの方式を,その旧来の超単純アルゴリズムからLRUの方に > 切り替えて動かすだけでも体感できるぐらいスピードが上がりました. > 仕事でRTOS + ライトスルーの条件での話ですが. > (設定はCCRの値を変えるだけ) > > 今のカーネルって,そのキャッシュ方式,どちらを使ってるんでしょうか? arch/sh/mm/cache-sh4.c を見ると最初のところに * Extensions for 2-way associative cache (e.g. SH7751R) by Antony Bowers, April 2002. とあって中を見ると kernel の 2-way set associative cache 対応が されているようです。 LANDISK では $ cat /proc/cpuinfo cpu family : SH-4 cache size : 16K-byte/32K-byte ... となるんですが arch/sh/kernel/setup.c を見ると static int show_cpuinfo(struct seq_file *m, void *v) { #if defined(__sh3__) seq_printf(m, "cpu family\t: SH-3\n" "cache size\t: 8K-byte\n"); #elif defined(__SH4__) seq_printf(m, "cpu family\t: SH-4\n" "cache size\t: %s\n", (cache_system_info.num_ways == 2)? "16K-byte/32K-byte":"8K-byte/16K-byte"); #endif となって cache_system_info.num_ways == 2 に設定されていて 2-way で動いていると思われます。