インテルのみ表示可能 — GUID: ewa1457384630094
Ixiasoft
7.5. メモリー・レプリケーションファクタの制御によるローカルメモリーへのアクセスの最適化
インテル® M20Kメモリーブロックには2つのphysicalポートがあります。各M20Kブロックで使用できる論理ポートの数は、ポンピングの程度によって異なります。ポンピングは、他のデザインと比較してM20Kブロックのクロック周波数の尺度です。
カーネルがローカル・メモリー・システムlmemのための3つの読み出しポートと1つの書き込みポートを指定するデザイン例を検討してください。以下のコード例に示すように、ローカル変数宣言のsinglepumpカーネル属性を含めて、M20Kブロックは残りのデザインと同じ頻度で実行されます。
int __attribute__((memory,
numbanks(1),
bankwidth(64),
singlepump,
numreadports(3),
numwriteports(1)))
lmem[16];
各シングルポンプM20Kブロックには2つのlogicaポートがあります。ローカル・メモリー・システムの各書き込みポートは、デザインがメモリーシステムを実装するために使用するすべてのM20Kブロックに接続する必要があります。ローカル・メモリー・システムの各読み出しポートは、1つのM20Kブロックに接続する必要があります。これらの接続の制約のため、 lmemに指定されたポート数を実装するには、3つのM20Kブロックが必要です 。
ローカル変数宣言にdoublepumpカーネル属性を含める場合、残りのデザインと同じ頻度でM20Kメモリーブロックを実行するように指定します。
int __attribute__((memory,
numbanks(1),
bankwidth(64),
doublepump,
numreadports(3),
numwriteports(1)))
lmem[16];
各ダブルポンプM20Kブロックには4つの論理ポートがあります。そのため、3つの読み出しポートと1つの書き込みポートをすべてlmemに実装するには、1つのM20Kブロックが必要です 。
- メモリーをダブルポンピングすると、リソースのオーバーヘッドが増加します。実際にM20Kを節約したり、パフォーマンスを向上させたり、その両方を達成した場合にのみ、 doublepumpカーネル属性を使用してください。
- ストアはすべてのレプリケートに接続されている必要があり、競合に遭ってはいけません。したがって、ストアが3つ以上ある場合、メモリーは複製されません。ローカルメモリー・レプリケーションは、単一のストアでうまく動作します。
- メモリーシステム全体が複製されるため、潜在的に大きなM20Kメモリーブロックが観察されることがあります。