IntelR ItaniumR 2 Processor Reference Manual for Software Development and Optimization
を見ています。
かなり実装に近いことが赤裸々に書いてあって非常に興味深いです。
編集: 2/28 友人からボロクソに言われたので文章を直す
最近目からウロコが落ちたのは、Itaniumの1次キャッシュ
いままで、キャッシュというと多いほどよくて、かつVIPT(Virtually Indexed and Physically Tagged)サイコー。
というのがなんとなく思い込んでいて、いままでずっとなんでハイエンド向けなItanium2がPIPT(Physically Indexed and Physically Tagged)なのかと疑問だったのですよ
PIPTってハードの設計は楽になるかもしれんけど、TLBによる仮想ー物理アドレス変換が終わらない限りキャッシュ検索をはじめられないから速度的に不利じゃーん。と
注: VIPTについてはこちらがよくまとまっている
コンピュータアーキテクチャの話: 第12回キャッシュの構造や働き(上級編) - メモリエーリアス
んで、見つけたのが以下
6.4 First-Level Instruction Cache
The first-level instruction cache (L1I) is a 16KB, four-way set associative, physically addressed cache with a 64-byte line size. Lower virtual address bits 11:0, which represent the minimum virtual page, are never translated and are used for cache indexing. The L1I can fill a 64-byte line once every two cycles. It blocks on-demand fetch misses but is non-blocking for prefetch misses allowing up to seven to be outstanding to the L2 cache.
Cache accesses must wait for TLB resolution to complete:
L1D accesses both L1 DTLB and L2 DTLB in parallel.
L1I accesses only require an L1 ITLB lookup (an L2 ITLB lookup is required upon an L1
ITLB miss).
L2/L3 data access only require an L2 DTLB lookup.
L2/L3 instruction accesses only require an L2 ITLB lookup.
つまり
16KBで4wayだから、1wayあたり4KB.
IA-64はページサイズ可変だが最小ページサイズは4Kだから、下12bitは必ずvirtual/physical addressで一致する。
だから、TLB lookupとキャッシュアクセスは同時に走る事が出来る。
と。
これによってVIPTを実装するときの無駄トランジスタをはぶいているわけやね。
なるほどぉ
勝手に勘違いしていただけなんですけど、すっかり騙されてしまいましたよ。
キャッシュ! 騙される! ランキング!
- 関連記事
-
- 悲しい (2006/04/07)
- Itanium2 の1次キャッシュが16KBなわけ (2006/02/27)
- Dell Inspiron 1300が届く (2006/02/17)