I-Cache Associativity(グラフ31~42)
LatencyのついでにAssociativityも確認してみた。勿論HaswellのAssociativityはこちらにも示されている通りL1/L2共に8-way set associativity構成であるが、これを超えてアクセスが続いた場合のLatencyがどうなるか、をみたものである。
テストはL1/L2のそれぞれについて、Near/Far JumpについてForward/Backward/Randomの3種類のアクセスパターンで計測したものだが、ここではI-CacheのLatencyそのものとは逆に、Haswellが全般的に非常に良い成績を残しているのが判る。このテストは、同じCacheのEntryになるような複数のアドレスを最大64個用意して、これをCacheからFetchする時間を測定するもので、L1/L2 Cacheそのもののアクセス速度というよりは、まずTag RAMを検索してHitするかどうかをサーチする速度とも言うべきものである。Segment Countとは何個目のアドレスかを示すものである。
さて結果を見ると、例えばL1に対するNear Jump, Forward(グラフ31)の様に一番高速に動きそうなものであっても、同じTag Entryに対する複数回のサーチはそれなりにLatencyが増えるのはセオリー通りである。ただその増え方がHaswellの方がずっと緩やかになっているのが判る。ラフに言えば64 Segment、つまりもうAssociativyが全然利かないようなケースでのLatencyはどのケースでも10cycle以上短縮されており、これはTag RAMの検索そのものが高速化されているものと思われる。これが一番顕著に判るのはグラフ42(L2, Far Jump, Random)のケースであるが、グラフの上がりかたが緩やかになっている。Random AccessだからSegment Countが増えるとほぼTag RAM総なめに近い形でのアクセスになるわけで、これが高速化されている結果としてLatencyが減少しているものと考えられる。
次ページ:RMMA 3.8 - I-TLB