... | ... | @@ -88,10 +88,10 @@ Vivadoは、このレプリケーションを自動で適用することで、re |
|
|
もしかしたら、データメモリを構成するために、アドレスの下位2ビットが`2'b00`であるデータを保存するメモリ、`2'b01`用のメモリ、`2'b10`用のメモリ、`2'b11`用のメモリ、のようにメモリアドレス全体を4分割するような方法を使った人がいるかもしれません。
|
|
|
このようなものもバンク化の一種です。
|
|
|
|
|
|
バンク化で問題を解決できるのは、「`2'b00`用のメモリ、`2'b01`用のメモリ、`2'b10`用のメモリ、`2'b11`用のメモリのそれぞれに高々一エントリ書き込む」といった場合です。
|
|
|
バンク化で問題を解決できるのは、「`2'b00`用のメモリ、`2'b01`用のメモリ、`2'b10`用のメモリ、`2'b11`用のメモリのそれぞれ(各バンク)の高々一エントリに書き込む」といった場合です。
|
|
|
レジスタファイルの問題は、このようなバンク化により解決することはできません。
|
|
|
二命令のデスティネーションレジスタ番号が4と8であれば、どちらも`2'b00`用のメモリに書き込まなければいけません(バンク衝突と言います。そのような場合にストールするという戦略もあります)。
|
|
|
二命令のデスティネーションレジスタの組み合わせは任意の組み合わせが来うるため、どのようにメモリを分割しても実現が不可能な点に注意してください。
|
|
|
二命令のデスティネーションレジスタの組み合わせは任意の組み合わせが来うるため、どのようにメモリを分割してもバンク衝突が常に発生しないことを保証することが不可能な点に注意してください。
|
|
|
なお、31分割すればできますが、それはフリップフロップと選択回路で実現しているのと同じことになります。
|
|
|
一般に、バンク化を適用する場合、多バンクになればなるほど、(1)一バンク当たりの要素数が少なくなりRAMの効率性が失われ、また(2)選択回路のオーバーヘッドも増大します。
|
|
|
|
... | ... | |