2016-10-22 5 views
1

キャッシュが最初に設計されたとき、ランダムにいくつかのメモリアドレスでマップされるのか、最初から空であり、プロセッサからのロード命令またはストア命令の後でのみメモリ/キャッシュからメモリへのマッピング

私はL1キャッシュのRTLを設計しているので、この質問があります。だから私はそれを空白のままにして、任意のプロセッサが読み取り/書き込みを要求するか、またはいくつかのメモリマップされたデータを入力し、それに応じてヒット/ミスを理解するのを待ちますか?

答えて

1

最初に設計されましたか?最初に電源を入れたのですか?通常の方法は、すべてのタグを無効にして開始することです(データ配列やその他の場所に何があるかは関係ありません)。

キャッシュ内のすべてのデータがランダムに初期化されているとバグを想像するのは簡単なので、実際にはRAM/ROMにあるものとは違う内容の行が有効で汚れていない可能性があります。それ。例えばブートROMコードのこの同期外L1のヒットは悪いです!メモリのどの部分が電源投入知られている内容で初期化されている場合


(すべてゼロのように)、あなたはあなたのキャッシュタグとデータのinit理論的になるように、そのメモリをキャッシュだ可能性があります。

メモリにあるものと一致しない場所でキャッシュを有効にすると、CPUが実際に必要なものを優先して行が追い出されたときに書き戻しをトリガーするダーティーとして初期化する必要があります、それは意味をなさない。

+0

これは、プロセッサが読み取り/書き込みを要求した後にのみキャッシュが書き込み割り当てを行うことを意味します。これは、アドレス要求が何であれ強制ミスが常にあるはずであることを意味します。 –

+0

@ShankhadeepMukerji:はい。アクセスがまだ行われていないため、何をプリフェッチするかについての情報はありません。再起動時にCPUが使用するいくつかのデフォルトアドレスをハードコードしたい場合、リブートするたびに数サイクルを節約することができますが、トランジスタを使用する価値はないと確信しています。確かに、すべてのタグが無効になることを確認するだけでは簡単です。どのようなデータでも、プリフェッチしても、最初の命令を実行している間に強制ミスしたとしても、何らかの形でメモリからロードする必要があります。再起動のための最適化を数サイクル早くするのは難しいようです。 –

+0

ありがとう@Peter Cordes –

関連する問題