SH-3 のメモリ
職業訓練で SH-3 のキャッシュについてやった。その中で2ヶ月ほど前にやったメモリ構成が全然わかっていなかったことが分かったので、忘れないうちにまとめておく。
メモリの構成
ルネサステクノロジ SH-3 は 32ビットの論理アドレス空間(4GB)をもっており、29ビットの物理アドレス空間(512MB)をもつ。上位3ビット(31-29)は論理空間であるP領域を決定し、つづく3ビット(28-26)はエリアを決定する。各エリアは 64MB である。(下図参照)
論理アドレスと物理アドレスのサイズの差異から 論理アドレスの H'8000-0000 (P1領域のエリア0) と H'C000-0000 (P3領域のエリア0) は共に、物理アドレス H'0000-0000 を指すため、同時には使用できない。
キャッシュ
キャッシュは 8bits で表現できる 256 のエントリと、4つのウェイを持つ、セットアソシアティブである。キャッシュは、データを 16bytes ずつ扱うのでキャッシュにエントリされるアドレスは 16 の倍数でアライメントされる(下位4ビットは無視できる)。
どのエントリに登録するのかは cache index (11- 4) によって決まり、MMU によって論理アドレスから物理アドレスに変換された後、 tag field (31-10)とキャッシュの保持する物理アドレスが比較される。
疑問点(あとで調べる)
1. tag field の内、上位3ビット(31-29: 物理アドレス的には必ず 0 0 0 となる) と cache index で重複している部分(11-10) は、保持しているキャッシュと必ず同じになるはずであり、そこを比較するのは冗長的では?
2. MMU によって論理アドレスから物理アドレスに変換って、上位3ビットを 0 にするだけでは?
| 0 0 0| P0 | 0 0 1| P0 | 0 1 0| P0 | 0 1 1| P0 | 1 0 0| P1 | 1 0 1| P2 | 1 1 0| P3 | cache index (8bits) | | 1 1 1| P4 | | +--------+--+-----------+-----------+-----------+-----------+-----------+-----------+------------+ |31 30 29 28|27 26 25 24|23 22 21 20|19 18 17 16|15 14 13 12|11 10 9 8| 7 6 5 4| 3 2 1 0| +--------+--+-----+-----+-----------+-----------+-----------+-----+-----+-----------+------------+ | | 0 0 0| area 0 | | | 0 0 1| area 1 | | | 0 1 0| area 2 | | | 0 1 1| area 3 | | | 1 0 0| area 4 | | | 1 0 1| area 5 | | | 1 1 0| area 6 | | | 1 1 1| area 7 | | | | tag field (22bits) |