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

このQ&Aのポイント
  • 現在、大学院でコンピューターアーキテクチャーのクラスを取っています。中間試験でコンピューターCの性能を計算する問題に取り組んでいます。
  • 問題では、コンピューターCのClock cycles Per Instruction(CPI)とプログラムの実行時間を計算する必要があります。
  • 具体的な計算方法として、プログラムのClock cycles Per Instruction(CPI)を各命令の比率とクラスごとのCPIの積で求め、それをプログラムの実行回数とクロックレートで割って実行時間を求めます。
回答を見る
  • ベストアンサー

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

現在、大学院でコンピューターアーキテクチャーのクラスを取っています。中間試験で下記のような問題が出ました。 「コンピューターCは100MHZで動作します。各クラスのClock cycles Per Instruction(CPI)は次のようになります。 Instruction Class i CPIi Integer ALU 1 Branch 2 Load/Store 3 Floating-Point Operation 4 プログラムPは次のようなループをコンピューターCで起動されます。 Loop: L.D F0,0(R1) <- Load/Store ADD.D F0,F0,F0 <- Integer ALU S.D F0,0(R1) <- Load/Store DSUBI R1,R1,#8 <- Floating-Point Operation BNEZ R1,Loop <- Branch レジスタR1の初期値は2000です。 質問1)プログラム全体のTotal Execution Time(TET)を計算しなさい。 そして回答が実はあるのですが、 プログラム全体のClock cycles Per Instruction(CPI) = Total Sum of (Instruction比x各CPIi) = (1/5)x1 + (1/5)x2 + (2/5)x3 + (1/5)x4 = 2.6 Total Execution Time = (InstructionCount) x CPI / Clock Rate = 250x5x2.6/100x10^6 = 32.5us ここでInstructionCountが何故250x5と計算されるのかわかりません。 面倒な質問ですが、よろしくお願いします。

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

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

No.1です。 アセンブリー(アセンブラー)言語は、大げさに言うと 世の中に何千種類も有りますので 理解の限度を超えます。 ただ見た感じだけですが、 DSUBI R1,R1,#8 <- Floating-Point Operationは R1=R1-8に見えてしまいます。 でもこれがフローティングというのが納得いきません。クロック数も少ないですし せいぜい倍長演算かという気もします。 DSUB1のDもDOUBLEのDのような。 いずれにしても言語仕様と照らし合わせて理解を深めてください。

milpitas
質問者

お礼

ymmasayanさま お返事ありがとうございます。 >でもこれがフローティングというのが納得いきません。 大変申し訳ございません。私の記述ミスでした。 正確には ADD.D F0,F0,F0 <- Floating-Point Operation DSUBI R1,R1,#8 <- Integer ALU が正しいです。失礼しました。 親切な説明をしていただいて、本当にありがとうございました。また何かありましたら、ご指導のほどよろしくお願いいたします。

その他の回答 (1)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

2000から8づつ引いて250回まわるのかな。 それにしてもわざわざ命令比を求める必要も無いですね。 教育の一環といわれればそれまでですが。

milpitas
質問者

お礼

ymmasayanさま、 早速のお返事ありがとうございます。 アセンブリに詳しくないのですが、 DSUBI R1,R1,#8 とは R1=R1-8 ということなんでしょうか? それがゼロになった時点でLoopが終了する、という理解でよろしいでしょうか? なんだか頼りになる救世主が現れたようで、本当に嬉しいです。ありがとうございます。

関連するQ&A

  • Dimension 4600C ビデオカード

    上記PCで、ネットゲーム(モンスターハンターフロンティア)をプレイするにあたって、ビデオカードを増設したいのですが、どれがいいのか分かりません。 アドバイスをよろしくお願いします。 ・OS Windows XP Home Edition Service Pack 2 : Version 5.1 Build 2600 ・DirectX DirectX 9.0c installed ・CPU [0x0F20]Intel(R) Pentium(R) 4 CPU 2.40GHz x1x86 Family 15 Model 2 Stepping 7 (Dell Computer Corporation) ・計測周波数(目安) CPU CLOCK [2394MHz] ・メモリ Memory(Free/Total) Physical[124MB/510MB] : Virtual1885MB/2048MB] ・ビデオカード Intel(R) 82865G Graphics Controller [96.0 MB] HAL/SOFTWARE VSC(0)

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

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

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

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

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

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

  • [コンピュータアーキテクチャ]割り込みについて

    (1)割り込みの優先順位はどのような方法で決定されているか説明しなさい。 (2)入出力割込みの必要性について、プロセッサと入出力装置における時間経過にしたがって具体的に説明しなさい。 コンピュータアーキテクチャについて、以上の2つの設問が分かりませんでした。助言をお願いします。 (1)の設問では、インターネットで調べたのですが、割り込みなどのプロセスやタスクはディスパッチ処理などによって割り当てられている、ということが分かりました。 調べると、例えばディスパッチ処理では、「ディスパッチの優先順位はタスク毎に決められており,作られた時刻に関わらず優先順位の高いタスクから順にディスパッチされていく」ということまでは分かったのですが、その優先順位はどうやって決められているのか?ということが分からず困っています。 そして(2)の設問では、調べただけでは分かりませんでした。「入出力装置における時間経過」の意味が分からず、どう具体的に説明していいのかも分からない状況です。 以上の2点についてご回答お願いします。 質問に補足しなければいけない点などがあればコメントしてください。

  • コンピュータ断層撮影(CT)の解析的意味とは

    コンピュータ断層撮影というのがありますが、数学的にはどう解析をしているのでしょうか? 例えば、定義域を円板{(x,y)|x^2+y^2≦r^2}と考え、密度関数みたいなもの、つまり、2変数関数 z=f(x,y) を考えます。 定義域を原点を中心にθ回転(0≦θ<2π)したものについて、そのy座標を固定し、x座標を動かしたときの積分の値が観測されたとします。 そのときもとの、z=f(x,y)を求めるにはどうしたら良いのでしょうか? または、有界領域上の2変数関数z=f(x,y)において、それは未知だが、任意の直線における線積分の値が既知だったときに、その積分値からもとのz=f(x,y)を求めるにはどうしたらよいのでしょうか? あいまいで申し訳ないですが、設定は適宜変更されてかまいません。

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

    教えてください! 下図のようなシステムの全体としての稼働率が94.72%であり、ユニット1の故障間隔以外の各ユニットの平均修理時間間隔、平均故障時間が下表に従うとき、ユニット1の平均修理時間を求めよ。  ーーユニット1----ユニット3ー |                |     |    ーユニット3      |                   ーーーーー      ------|         ーユニット2 1、3直列、3、2は並列です。 平均修理時間間隔  平均故障時間 ユニット1      30 ユニット2 180    120 ユニット3 175    75 ちなみに答え150になりました

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

    教えてください! 下図のようなシステムの全体としての稼働率が90.65%であり、ユニット1の故障間隔以外の各ユニットの平均修理時間間隔、平均故障時間が下表に従うとき、ユニットの平均修理時間を求めよ。  ーーーーユニット1ーーーーーーー |                |     | ーユニット3         |          ー       ーユニット2ーーー|      ーユニット2 3,2は並列です。 平均修理時間間隔  平均故障時間 ユニット1      40 ユニット2 180    40 ユニット3 375    125

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

    偶数丸めの問題です 答えを見ると端数が半分以上なら切り上げるとか書いていますが全く意味がわかりません 偶数丸めの問題で簡単に解くコツなどがあれば教えて欲しいです

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

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