質問: 0x4600Aは `BI` `S` )。 * キャッシュにオブジェクト( `O` )を適切に(ミスアライメントなしに)配置するには、 `LS` の配置が必要です。 **Questions**: 1. Will the `O` be serially aligned in the cache or it can take (for instance) free slots 0 & 4 & 5, instead of 0 & 1 & 2? 2. What is the cost (penalty) of retrieving partitioned `O` from cache? Assume that the `O` isn't partitioned across several `B`. 3. The same question as above, but in case when `O` is placed in two `B`, thus two sets are used. 4. What will happen if the `O` size is larger than the `SS` (512B)? Will it move the data to L2 and step-by-step move data to L1? Will it use other sets? 5. What if L2 (and L3 for that matter) is too small for all the data?
回答: > Bで示されるサイズ4kB(SS * A)の仮想メモリブロックがマップされます > モジュロのようなやり方でセットに言い換えれば、アドレス0x0:0xFFFF > (ブロックインデックス(BI)0)は、セット0にマッピングされ、0x1000:0x1FFF(BI1)は > 1にマップされます。 > > **Transfer between L1 cache and the memory hierarchy:** the transfer unit between the L1 cache and the following level of the memory hierarchy is a block of line size (LS) bytes. That is, to your L1 cache, memory is structured in 64 bytes blocks (LS bytes). **Correspondence between memory blocks and cache entries:** consecutive memory blocks are mapped to cache lines of consecutive sets. Hence, block 0 (addresses `0x0000 : 0x003F`) is mapped to a cache line at set 0, block 1 (addresses `0x0040 : 0x007F`) is mapped to a cache line at set 1, and so forth. > 読み書きの要求(非一時的な書き込み/読み込みは使用されません) > 与えられたアドレスAはBIを見つけてそれを > 割り当てられたセット。たとえば、A = 0x4600AはBI = 70となります。このBIは > セット6(BI%S)にマッピングされます。 > > ブロック識別子(またはインデックス)とセットインデックス(SI)を見つける正しい手順は次のとおりです。 ``` BI = A >> LS = 0x4600A >> 6 = 0x1180 SI = BI & (S-1) = 0x1180 & 0x3F = 0x0000 (when S is a power of two, BI & (S-1) = BI mod S) ``` > 適切に(ミスアライメントなしに)r/wでオブジェクト(O)を > キャッシュの場合、LSの配置が必要です。 > > それは必要ではありません。 Oはブロック・アライメントする必要はありません。 > > Q1. Will the O be serially aligned in the cache or it can take (for > instance) free slots 0 & 4 & 5, instead of 0 & 1 & 2? > > > `O` blocks will be stored in consecutive sets with cache line granularity (set k, k+1, ..., S-1, 0, 1, ...) . > Q2。キャッシュからパーティションOを取得するコスト(ペナルティ)はいくらですか? > OがいくつかのBに分割されていないと仮定してください。 > Q3。上記と同じ質問ですが、Oが2つのBに置かれている場合、 > したがって、2つのセットが使用されます。 > > 私はあなたがキャッシュから `O` ワードを読むCPUのコストに興味があると思います。 `O` がシーケンシャルに参照されると、キャッシュアクセスの数は参照されるワードの数に等しくなります。私は、コストは、同じセット内または異なるセット内(少なくともマルチポートキャッシュ内)にあるブロックに依存しないと思います。 > Q4。 OサイズがSS(512B)よりも大きい場合はどうなりますか?意志 > データをL2に移動し、段階的にデータをL1に移動しますか?使用するか > 他のセット? > > > > Q5。 L2(とL3)がすべてのデータに対して小さすぎる場合はどうでしょうか? > > 空きキャッシュラインのないセットにブロックを割り当てる必要がある場合は、ブロックを選択して追い出す必要があります(ビクティムブロック)。置換ポリシーは、 **アルゴリズム** (LRU、 pLRU、ランダム)。