プロが教える店舗&オフィスのセキュリティ対策術

ALUにmov命令(転送命令)をしたら、転送したいデータはALUを通ってそのまま汎用レジスタに書き込んだり、メモリに書き込むデータを格納するレジスタに書き込んだりしてくれるんですか?

質問者からの補足コメント

  • 書き方がおかしくて申し訳ございません。少し理解できました。

    転送データがALUを通るように設計されているとします。

    mov命令は転送したいデータと0を加算することで、そのデータを転送すると聞いたことがあるのですが、mov命令は0を加算せずにそのままALUを素通りしてレジスタなどに書き込まれる、という考え方でいいのでしょうか。

    繰り返し申し訳ありませんがよろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/01/23 15:11

A 回答 (3件)

> mov命令は転送したいデータと0を加算することで、そのデータを転送すると聞いたことがあるのですが、mov命令は0を加算せずにそのままALUを素通りしてレジスタなどに書き込まれる、という考え方でいいのでしょうか。



これはデータパスをどのように設計するかによります。
一般的にはMOV命令の場合、ALUは何もしません。あなたがいうようにALUで転送データに0を加算して、その結果をALUからレジスタに転送をしてもMOV命令としての動作はするので、そういう設計をしていればそのようになります。ただ、そうするとALUが動作することになるので、電力を消費してしまいます。
電力を無駄に消費したくなければ、ALUで転送データに0を加算するのではなく、転送データはALU内に埋め込まれたバス(バスはALUの論理回路をバイパスしているが、物理的にはALU内に埋め込まれている)を通すようにしたほうが、余計な演算をALUで行うことがないので、消費電力を抑えられます。

実際にデータパスのカスタム設計をした経験がないと、ALU内に埋め込まれたバスっていわれてもピンとこないと思いますが、通常はALUに入ったバスは、ALUの論理回路に入力されるパスとそれをバイパスするパスに分岐します。MOV命令のような転送命令の場合、バイパスを使ったほうが電力消費の観点からは有利なので、そうするのが自然というだけのことです。0を加えてALU内の論理回路を通してもかまわないので、そこは設計によります。
    • good
    • 0
この回答へのお礼

ありがとうございます。理解できました。

お礼日時:2021/01/23 19:42

ALUは単なる演算器の塊で、命令のデコードなどの制御は行いません。

ALUは、MOV命令がデコードされた結果、制御される側です。
したがって、「ALUにmov命令(転送命令)をしたら」はおかしな表現だけど、あなたが聞きたいことを汲んで回答をすると、あなたの理解で正しいです。

転送データがALUを通るかどうかはデータパスがどう設計されているかによるので何とも言えないけど、ふつうはデータパスはバスのピッチをレジスタのポートに合わせて、なるべくまっすぐになるように設計するので、MOVによる転送データは物理的にはALU内のバスを通して転送されるのが自然です。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2021/01/23 19:42

ALUに対するmov命令はありません。

プログラム上ALUは見えないのです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2021/01/23 19:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!