• ベストアンサー

コンピュータアーキテクチャ

MIPSに即値による減算命令が存在しないのはなぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

即値による加算命令と減算命令の違いは、突き詰めていくとキャリーとボローの扱いが異なるだけです。 MIPSにはキャリーフラグがありませんから、加算命令で減算を代用することに何の問題もありません。

gorforit_1
質問者

お礼

ありがとうございます

その他の回答 (4)

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.4

推測ですが、MIPSのようなRISCだと命令数を減らすため、なんでこれがというような命令が省かれていることがあります。 即値による減算が無くても、直前にレジスタにストアすれば済むという考えとか、汎用レジスタたくさんあるし。 あるいは、減算は加算で代用できるからいいという発想かもしれないですね。 実際問題として、即値演算自体、レジスタ-アキュムレータの演算に比べて特に早くありません。 もう一つの考えとして、コンパイラを使うと、即値はリテラルとしてメモリ上に配置されてしまうということもあるかも。即値演算自体の必要性が高くないのかもしれません。

gorforit_1
質問者

お礼

ありがとうございます

回答No.3

質問者さんは「即値」と断っています。 つまり、ごく小さな値の減算命令をテスト対象としないのはなぜか、ということです。 A-B=A+(-B) と考えれば、Bの符号を変更する時間ぶん遅くなるので、即値の減算はメモリ値による減算でカバーしているコンピュータと思われます。 それとも、即値による減算がないコンピュータですかね? もしかして、これは試験問題の一部ですか。 そうであれば、計測対象命令群から故意に除いたとも考えられます。

gorforit_1
質問者

お礼

ありがとうございます

回答No.2

減算=負数の加算なので、減算される即値を負数にかえれば、加算命令に変換が可能だからだと思います。

gorforit_1
質問者

お礼

ありがとうございます

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

これは想像ですが、即値による加算で代用できるからではないでしょうか。

gorforit_1
質問者

お礼

ありがとうございます

関連するQ&A

  • コンピュータアーキテクチャ

    写真の左のCプログラムの断片をコンパイルした結果、右のMIPSアセンブリプログラムが得られるとします。 空欄に入る命令を教えて欲しいです お手数をおかけしますがよろしくお願いします

  • コンピュータアーキテクチャ

    写真の左のCプログラムの断片をコンパイルした結果、右のMIPSアセンブリプログラムが得られるとします。 空欄に入る命令を教えて欲しいです (sraのような) お手数をおかけしますがよろしくお願いします

  • コンピュータアーキテクチャ

    写真の左のCプログラムの断片をコンパイルした結果、右のMIPSアセンブリプログラムが得られるとします。 空欄に入る命令を答える問題です 空欄の自分の答えが合っているかどうかを知りたいです 答え andi $24,$28,6 間違っている場合は正しい答えを知りたいです

  • コンピュータアーキテクチャの問題です

    (1)レジスタ、メモリに初期状態が以下表である時 レジスタ GR0 7 GR1 2 番地 データ 100 10 110 8 120 3 5÷3の計算を行うための一連の命令をニーモニック表現で示せ 値はすべて10進数とする。 ただし以下の3条件に従うこと 1.最初の命令をLI1、100とする 2.計算結果は120番地に格納すること 3.最低1回は命令でXRを指定すること。 (2)ハードウェア障害によってGR2とメモリの120番地が使用不能となったものとして、5÷3の計算を行うための一連の命令をニーモニック表現で示せ。 初期状態は(1)の開始時と同様とし、(1)とはことなり最初の命令は制限がない。 計算結果は110番地に格納すること。 ニーモニック表現 命令  OP 16進  説明        表記 ロード LD  10  r←(efa)     LD GR,adr,XR ストア ST  20  r→(efa)      ST GR,adr,XR       加算  AD  70  r←r+(efa)     AD GR,adr,XR 減算  SB  75  r←r-(eaf)     SB GR,adr,XR 乗算  MP  85  r←r×(eaf)    MP GR,adr,XR 除算  DV  55  r←r÷(eaf)    DV GR,adr,XR 即値  LI  30  r←ID       LI GR, ID という問題ですがわかる人教えてください。よろしくお願いします

  • コンピュータアーキテクチャ

    教えてください! クロックサイクルが60nsのプロセッサAとクロックサイクルが30nsのBがあり、各プロセッサが命令を実行するのに、必要なクロックサイクルおよび、プログラム中での各命令の出現頻度(使用確率)が下表に従うとする。ここで、システムのプロセッサをAからBに置き換えた場合の平均的な性能向上率を求めよ。 プロセッサA      クロックサイクル数 命令の出現頻度 加減算命令    8        60% 乗除算命令    3        10% 無条件分岐    2        30% プロセッサB      クロックサイクル数 命令の出現頻度 加減算命令    2        50% 乗除算命令    6        20% 無条件分岐    4        30%

  • コンピュータアーキテクチャ

    教えてください! クロックサイクルが80nsのプロセッサAとクロックサイクルが20nsのBがあり、両プロセッサの各命令実行に、必要なクロックサイクル数は下表に従うものとする。今プロセッサに加算命令を10回、乗算命令を4回、無条件分岐を3回実行させる場合を考える。このときプロセッサをAからBに置き換えた場合の平均的な性能向上率を求めよ。 プロセッサA      クロックサイクル数  加減算命令    5         乗除算命令    8         無条件分岐    6         プロセッサB      クロックサイクル数  加減算命令    2         乗除算命令    5         無条件分岐    20        

  • コンピュータアーキテクチャの問題です

    (1)レジスタ、メモリに初期状態が以下表である時 レジスタ GR0 7 GR1 2 番地 データ 100 10 110 8 120 3 5÷3の計算を行うための一連の命令をニーモニック表現で示せ 値はすべて10進数とする。 ただし以下の3条件に従うこと 1.最初の命令をLI1、100とする 2.計算結果は120番地に格納すること 3.最低1回は命令でXRを指定すること。 (2)ハードウェア障害によってGR2とメモリの120番地が使用不能となったものとして、5÷3の計算を行うための一連の命令をニーモニック表現で示せ。 初期状態は(1)の開始時と同様とし、(1)とはことなり最初の命令は制限がない。 計算結果は110番地に格納すること。 という問題ですがわかる人教えてください。よろしくお願いします

  • コンピュータアーキテクチャについて

    コンピュータアーキテクチャを学んでいるのですが、イマイチ「命令実行サイクル」「全加算器」「キャッシュ」について理解できません。 どなたかわかりやすく説明して頂けないでしょうか?

  • 命令ミックスの計算

    基本情報技術者の問題にMIPSの計算問題が二問出てきました。1問は1クロック時間、平均命令実行時間、MIPSをすんなり求めました。二問目は3つの命令があり出現比率などが指定してあり平均MIPSを求めるものでした。1問目はMIPSを求める際に10^6で割り、二問目は10^6で割りませんでした。なぜ割らないのでしょうか。 二問目は画像を貼っておきます。

  • CASL2(減算命令と比較命令の違い)

    CASL2勉強用のテキストに【以下】のような説明文がありました。前半部分の意味は分かるのですが、後半部分(SFに設定される・・・)という所からの説明の意味がよく分かりません。 【比較演算命令の特徴】  比較減算命令(CPA、CPL)の大きな特徴は、命令の実行によって状態が変化するハードウェアはFRだけである点である。比較演算命令の実行によって、汎用レジスタや主記憶装置の状態はまったく変化しない。  SFに設定される値は、比較命令では比較される数値の大小によって決定されるが、減算命令では演算結果の最上位ビットの値が設定される。このことから減算命令ではSFの値だけから元の数値の大小を判定することができない。 (1)減算命令の結果の最上位ビットがマイナスになって大小関係が判定できない場合などあるのでしょうか?(例)12-15=-3 → 12<15 このように判定できているように思うのですが? (2)そもそも大小の判定は減算によって判定しているのではないのでしょうか?それでは、内部的にはどのようにして大小判定を行っているのでしょうか? そもそも文章を理解できていないのかも知れませんが・・・ よろしくお願いします。