1

現在のバージョンの Rocket チップでは、両方のキャッシュのキャッシュ ラインにフラグを含めたいと考えています。これらのフラグは、メモリ アドレスのデータと共にロード/ストアされます。lowRISC ( http://www.lowrisc.org/ ) の開発者も同様のことを行っています。ただし、それらはロード/ストア フラグとデータに別々の命令としてアクセスし (つまり、ストア/ロード フラグとデータをストア/ロードするための既存の命令)、それらのアーキテクチャ設計は古いバージョンのロケット チップから派生したものであり、ロケットそれ以来、チップのソースコードは大幅に変更されています。

私の場合、どういうわけかフラグが正しく伝播されていません。キャッシュ ライン サイズの増加、フラグ ビットのキャッシュへの伝達、フラグ ビットとデータのストア/ロード、キャッシュ間の正しい通信の確保などには、どのような手順が必要ですか?

これらを組み込むために変更するファイルを教えてください。

4

1 に答える 1

1

キャッシュ ライン (+ フラグ) がメモリに格納されるときに、フラグ ビットがどのように格納されるかを把握する必要があります。このようなことの一般的なアプローチは、フラグを物理メモリの別の領域に格納することです。フラグをインラインで格納すると、キャッシュ ラインのアライメントが妨げられるからです。

変更する必要があるファイルに関しては、残念ながら非常に複雑になります。物を物理メモリに保存する方法を選択すると、ロケットチップ リポジトリ自体のファイルを変更する必要があります。uncore リポジトリのファイルを変更して、これらの大きなキャッシュ ラインを通過させ、L2 に格納する必要があります (L2 を使用している場合)。また、ロケット リポジトリ内のファイルを変更して、プロセッサが新しいフラグに対して認識するインターフェイスを設定し、それらの L1 キャッシュにサポートを追加する必要があります。

lowRISC は古いバージョンに基づいている可能性がありますが、変更内容 (コミット履歴) を参照して、変更の範囲と場所、または変更点を確認することをお勧めします。

于 2015-09-21T22:20:20.093 に答える