勉強の参考にしたいけど困っています

このQ&Aのポイント
  • 友人から得た過去の問題を解くためのお願い
  • 企業が開発したチップBetaの速度向上度を求める問題
  • プロセッサの性能改善やコンパイラの改良に関する問題
回答を見る
  • ベストアンサー

勉強の参考にしたいのですが、困っています

以下の問題を、わかる範囲で結構ですのでどなたか解いて頂けないでしょうか? これは友人から得た過去の問題なのですが答えは配布されておらず、この問題を出題した先生も今は変わってしまっていて聞くに聞けません。 もうすぐ試験で、テスト勉強の参考にしたいのですが、何卒どうかお力添えをお願い致します。 ある企業が現在のチップAlpha の浮動小数点命令のみ9倍高速に実行するチップBeta を開 発した.あるプログラムをBeta で実行したところ浮動小数点演算に要した時間は全体の1/4 であることが判明した. (a) この応用におけるBeta のAlpha に対する速度向上度を求めよ. (b) Alpha でこの応用を実行するとき,浮動小数点演算に要する時間の比率を求めよ. (2)君の会社が販売しているプロセッサは,250MHz で動作するが浮動小数点ハードウェアを 持たないためFP 命令はソフトウェアでエミュレートしている.このチップであるベンチマー クを実行したところ,実行時間は5.00 秒,平均CPI は1.30 で,各タイプの命令の実行数は次 表になっていた. 命令タイプ             命令数 分岐                 7,750,000 整数演算              3,800,000 ロード/ストア            9,750,000 浮動小数点演算(FP 命令数) 17,500,000 (a) 実行時間のうち,浮動小数点演算をエミュレートしている時間(有効数字3 桁)を求めよ. (b) 浮動小数点命令1 個のエミュレートに要している平均命令数を求めよ. [3]君は新プロセッサの主任設計者である.プロセッサとコンパイラの設計は一応完了し,そのまま 発売するか,更に改良するか判断しなければならない.担当者と議論した結果次の2 種の選択肢が有ることが判明した. A. 現状のままにする.このマシンをFuji と呼ぶ.クロックは1GHz で,シミュレータで次のような 結果が得られた. 命令タイプ  CPI   頻度 A        2     40% B        3     25% C        3     25% D        5     10% B. クロックを高速化する.このマシンをShirane と呼ぶ.クロックは1.2GHz で,シミュレータで次 のような結果が得られた. 命令タイプ    CPI    頻度 A          2     40% B          2     25% C          3     25% D          4     10% (1)それぞれのマシンのCPI を求めよ. (2)それぞれのマシンのネイティブMIPS 値を求めよ. (3)Shirane はFuji に比べてどれだけ高速か. (4)コンパイラチームからコンパイラの改良が可能で,次のように命令数を減らせると言ってきた. Fuji に改良コンパイラを用いたマシンをHodaka とよぶ. 命令タイプ   MA に対する実行命令数の比 A             90% B             90% C             85% D             95% Hodaka のCPI を求めよ. (5)Hodaka はFuji に比べてどれだけ高速か. (6)Shirane に新コンパイラを適用したマシンをYari とよぶ.Yari はFuji に比べてどれだけ高速か.

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

[3] (1) Fuji... (2×0.4)+(3×0.25)+(3×0.25)+(5×0.1) =平均 2.8 CPI Shirane... (2×0.4)+(2×0.25)+(3×0.25)+(4×0.1) =平均 2.45 CPI (2) Fuji... 1000Mクロック/秒 ÷ 2.8クロック/命令 ≒ 約 357 MIPS Shirane... 1200Mクロック/秒 ÷ 2.45クロック/命令 ≒ 約 490 MIPS (3) 490÷357=約1.37倍 (4) 命令数が減っても,1命令の実行に必要なクロック数は変わらない。(1)と同じ 平均 2.8 CPI (5) Hodaka... (2×0.9×0.4)+(3×0.9×0.25)+(3×0.85×0.25)+(5×0.95×0.1) ≒ 2.5 これは Fujiでは1秒間かかっていた実行時間が, Hodakaでは 2.5/2.8 ≒ 0.89秒で実行できるようになったということ。 すなわち 2.8/2.5 = 1.12倍高速だといえる。 (6) Yari... (2×0.9×0.4)+(2×0.9×0.25)+(3×0.85×0.25)+(4×0.95×0.1) = 2.1875 Fuji→Shiraneの向上は (3)より 1.37倍, Shirane→Yariの向上は 2.45/2.1875 = 1.12倍で (5)と同じ。 よって,1.37×1.12 ≒ 約1.53倍高速だといえる。

Marcocemarco
質問者

お礼

おぉ、丁寧で的確な回答をありがとうございます!! 本当に助かりました!!!

その他の回答 (2)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

(2) CPIとは,クロック/命令(Cycles Per Instruction)のこと。 分岐... 7750k命令÷5秒×1.3 = 2015kクロック/秒【値1】 整数演算... 3800k命令÷5秒×1.3 = 988kクロック/秒【値2】 ロード/ストア... 9750k命令÷5秒×1.3 = 2535kクロック/秒【値3】 250MHz = 250,000kクロック/秒【値4】なので, このベンチマークテストを実行中, このチップで遊休やハザードが発生しなかったとすると, 1秒間における,浮動小数点演算がエミュレートされた後のクロック数は, 値4-(値1+値2+値3) = 244,462kクロック/秒 (a) 244,462k/250,000k ×5秒 ≒ 4.89秒 (b) 1秒間中の浮動小数点演算命令数は,17500k÷5秒 = 3500k命令/秒 浮動小数点演算がエミュレートされた後の命令群が1秒間中にいくつある? 244,462kクロック/秒 ÷1.3クロック/命令 ≒ 188,048k命令/秒 よって,188,048k÷3500k ≒ 平均53.7命令

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

とりあえず最初の問題だけ。 (b) Alphaでこの応用プログラムを実行した際の 非浮動小数点演算:浮動小数点演算 の時間比は, (3/4 × 1):(1/4 × 9) = 3:9 = 1:3 (a) Betaを用いたときのこの応用プログラムの実行時間を1とすると, Alphaを用いたときの実行時間は, (3/4 × 1)+(1/4 × 9) = 12/4 = 3 よって速度向上度で言うと,BetaはAlphaの 3/1倍 = 3倍

関連するQ&A

  • 基本情報技術者試験の午前過去問が分からなくて困っています。

    基本情報技術者試験の午前過去問が分からなくて困っています。 以下にその問題を示します。宜しくお願いします。 表のCPIと構成比率で、3種類の演算命令が合計1000000命令実行されるプログラムを、クロック周波数が1GHzのプロセッサで実行するのに必要な時間は何ミリ秒か? 表。 演算命令     CPI  構成比率(%) 浮動小数点加算  3    20 浮動小数点乗算  5    20 整数演算       2    60 解説では、(3*0.2+5*0.2+2*06)÷10^9*1000000という式になり、 答えは2.8ミリ秒となるらしいです。 なぜ、(3*0.2+5*0.2+2*06)÷10^9*1000000という式がでてくるのか、よくわかりません。一応、CPIやクロック周波数などの用語は理解しているつもりなのですが。 宜しくお願いします。

  • 浮動小数点演算と固定小数点演算の使い分けについて

    解説書などには、「浮動小数点は3.14E0の形」や「固定小数点は3.14」などと説明されています。 では、例えば、ごく一般的な32ビットマシンで「3.14 * 45.6」という命令を書いたときに演算されるのは浮動小数点演算なのか、固定小数点演算なのかがわかりません。例えばIntelのx86CPUは、内部にFPUを持っているそうですが、この場合は「3.14 * 45.6」は、内部では必ず浮動小数点演算になっているということなのでしょうか? 「3.14 * 45.6」を「3.14E0 * 4.56E1」と書いた場合にしか浮動小数点演算されないということではないと思っているのですが、実際の浮動小数点演算と固定小数点演算の内部的な切り替えがわかりません。 理解が足りなくて、おかしな質問になっていましたら、その点もご指摘いただければうれしいです。

  • IEEE754と浮動小数点定数同士の演算について

    ■質問 浮動小数点の標準規格IEEE754に、浮動小数点定数同士の演算に関する規定はありますか? ■背景 とあるマイコンで組込みソフト開発をしています。 このマイコン用のコンパイラ(IEEEに準拠)で以下のCソースコードをコンパイルしたところ、コンパイラのバージョン1とバージョン2で演算結果が異なりました。 double d_val = 6.6f * 10.0f; ○コンパイルバージョン1でコンパイルしたソフトの演算結果 →d_valには66.0が代入されました。 ○コンパイルバージョン2でコンパイルしたソフトの演算結果 →d_valには65.999999…(詳細は失念)が代入されました。 コンパイラメーカーに問い合わせたところ、「バージョン1から2へのアップグレードにおいて、浮動小数点定数演算に関連する変更を行ったが、その影響は浮動小数点演算における誤差の範囲内である」との回答でした。 誤差の範囲内であるとはいえ、コンパイラのバージョン違いで演算結果が異なるのは困るので、これがIEEE754規格違反なのであれば、それを根拠にコンパイラメーカーへ対応を求められるのではないかと考えています。 しかし、浮動小数点定数同士の演算結果の正確性についての規定がないのであれば、開発側で対応するしかありません。 いろいろと調べてはいるのですが、これといった情報に行き当たっていないので、こちらで質問させていただきます。どうぞよろしくお願いいたします。

  • MIPS について

    1回の浮動小数点演算を実行するのに80命令が必要な0.5MIPSのコンピュータのMFLOPS値を求めたいのですが、どうやって解いたらいいのでしょうか? MFLOPSという意味がいまいちよく分からないので解き方が分かりません。。。 どなたか教えてもらえませんでしょうか

  • 安価に、高速な浮動小数点演算をするためのハードウェアについて

    安価に、高速な浮動小数点演算をするためには、どんなハードウェアがあるでしょうか、またはこれらの情報をまとめているサイトなどがありましたら、教えていただけないでしょうか。 具体的には、現在入手できる浮動小数点演算の得意なICの一覧などが得られるとうれしいです。 現在のところ、計算対象を限っていませんが、最終的な目標として行列計算などが高速に出来たらと考えています。

  • AthronX2 5200とCore2DuoE6600で浮動小数点の演算が速いのはどっち?

    AthronX2 5200とCore2DuoE6600で浮動小数点の演算が速いのはどちらなのでしょうか?ベンチマークでいろいろ異なる結果が出て困っています。HD BENCHではCore2DuoE6600がAthronx2 4200に負けてしまいました。CUBASE(DAW)を使用しているので浮動小数点演算が速くないと困るのです。本当にAthronX2 5200とCore2DuoE6600で浮動小数点の演算が速いのはどちらなのでしょうか?Core2DUOの浮動小数点演算の能力が低ければ買い替えを検討しています。多角的な側面からアドバイス願います。

  • Accessクエリの整数型と単精度型の演算について

    Accessのクエリで長整数型と単精度浮動小数点型を 加算すると答えが一致しません。理由を知っている人いますか? ちなみに長整数型と倍精度浮動小数点型を加算したときは答えが一致します。 浮動小数点は誤差がつきものなのは分かりますが、 確か単精度浮動小数点型は有効桁数7桁までのはず。 下記の例では問題ないように見えます。 (例)長整数型と単精度浮動小数型の演算:1000+0.20=1000.20000000298 長整数型と倍精度浮動小数型の演算:1000+0.20=1000.2 それではよろしくお願いします。

  • 浮動小数点演算とは

    浮動小数点演算とは何か調べたのですがイマイチよくわかりません。 簡単に言うとどういうことでしょうか?

  • CPUの処理性能(クロックサイクルと演算回数)について

    CPUの処理性能の計算について、わかる方のお知恵を貸してください。 http://journal.mycom.co.jp/articles/2010/01/03/supercomputer2010/index.html の記事の中ほどに、以下の記述があります。 ---------------------- POWER7はPOWER ISA2.0.6に準拠しており、コアあたり4個の積和演算器を搭載し、サイクルあたり8つの倍精度浮動小数点演算を行うことができる。現在のIntelのNehalemコアが4演算であるのと比較すると2倍の演算数で、次世代のSandy Bridgeの演算数を先取りしている。 ---------------------- この、「4個の積和演算器で、サイクルあたり8つの倍精度浮動小数点演算を行うことができる」とは、このCPU(POWER7)の積和演算器は1サイクルで2つの倍精度浮動小数点演算を行うことができる仕様という意味でしょうか? そもそも、1サイクル=2演算というのは、個々の演算器の仕様に問わず常識的な意味なのでしょうか?

  • 浮動小数演算は実行環境の変化に応じて異なる結果に?

    プログラム(C++)について質問があります. 浮動小数演算を用いると,実行環境の変化に応じて結果が変わってしまうのでしょうか? プログラム中ではdouble演算を頻繁に用いています. (ソースコードは膨大すぎるため,申し訳ありませんが載せることが出来ません.) 小数演算をするために何気なくdouble(もしくはfloat)を使っていました. しかし,コンパイル後の実行ファイルを実行する環境に応じて結果が変わってしまうのでは・・・と思い始めました. そこで,ご質問なのですが, ・浮動小数を扱うと,実行環境(プロセッサ?)に応じて,結果は変わってしまいますか? また,もし誤差が生じてしまうならば,何か対処する方法はありますでしょうか? (整数演算にしろ!・・・と言うのは無しにさせて頂きます.) 初歩的な質問だと思いますが,宜しくお願い致します.