... | @@ -34,8 +34,9 @@ |
... | @@ -34,8 +34,9 @@ |
|
|
|
|
|
* 難易度:1~2
|
|
* 難易度:1~2
|
|
|
|
|
|
Verilog HDL の記述として`a + b`などを複数個所に書いてしまうと、書いた数だけの加算器が合成されてしまいます。
|
|
Verilog HDL の記述として`a + b`などを複数個所に書いてしまうと、書いた数だけの加算器が合成されてしまいます。しかし、それらは同時に使われないことが多いのでもったいないです。加算器への入力を切り替える回路を追加することで、加算器自体は一つだけしか生成されないようにしましょう。
|
|
しかし、それらは同時に使われないことが多いのでもったいないです。加算器への入力を切り替える回路を追加することで、加算器自体は一つだけしか生成されないようにしましょう。
|
|
|
|
|
|
なお、比較演算や減算も加算器に合成されてしまいます。これらも上記唯一の加算器を使って実行できるようにしても面白いカモれません。
|
|
|
|
|
|
どこまで資源消費量が少ないプロセッサが書けるでしょうか?
|
|
どこまで資源消費量が少ないプロセッサが書けるでしょうか?
|
|
|
|
|
... | @@ -112,4 +113,3 @@ CPU の実行すべき命令は、必ずしも直前の命令の結果を使う |
... | @@ -112,4 +113,3 @@ CPU の実行すべき命令は、必ずしも直前の命令の結果を使う |
|
インオーダーのスーパースカラでは、既に実行可能な命令が後ろの方にあっても、前から順番に実行していかないといけないという制約の都合上、その命令を実行することができません。そのような場合、Exec Unit(ALUや乗算器などの演算器およびメモリアクセスに必要な資源)が遊んでいることになり、もったいないです。アウトオブオーダー実行できれば、そのような命令を先に実行することができ、遊んでいる Exec Unit が有効活用されるため、性能が向上します。
|
|
インオーダーのスーパースカラでは、既に実行可能な命令が後ろの方にあっても、前から順番に実行していかないといけないという制約の都合上、その命令を実行することができません。そのような場合、Exec Unit(ALUや乗算器などの演算器およびメモリアクセスに必要な資源)が遊んでいることになり、もったいないです。アウトオブオーダー実行できれば、そのような命令を先に実行することができ、遊んでいる Exec Unit が有効活用されるため、性能が向上します。
|
|
|
|
|
|
Exec Unit 以外はほとんど書き直しになってしまうので、実装量は多くなります。外から見た結果が、命令の順番通り(インオーダーに)実行した時と必ず一致する必要があるため、考えることがたくさんあります。 |
|
Exec Unit 以外はほとんど書き直しになってしまうので、実装量は多くなります。外から見た結果が、命令の順番通り(インオーダーに)実行した時と必ず一致する必要があるため、考えることがたくさんあります。 |
|
|
|
|