• ベストアンサー

パイプライン処理の処理能力について

現在、ソフトウェア開発技術者試験の勉強をしているものです。 お忙しいところ、誠に申し訳ございませんが、 以下の問題の考え方について、アドバイス頂けないでしょうか? 頭を悩ましているのは、以下の問題です。 一つの命令を構成する各処理を 表に示す時間で行うプロセッサがある。 各処理を、それぞれパイプラインの1ステージに 割り当てる5段パイプライン構成のプロセッサの 命令処理速度は、パイプライン化していない プロセッサに比べて何倍になるか? <処理名>:<最大処理時間(単位:ナノ秒)> 命令フェッチ:100 命令デコード:50 オペランド読出し:100 演算処理:80 演算結果書込み:100 答えは、4.3倍だったのですが、どうも解答に納得できません。 例えば、2命令を実行した場合を考えた時、 <通常> □□□□□□□□□□□□□□□ 430(100+50+100+80+100)×2=860ナノ秒 <パイプライン> □□□□□  □□□□□ 1処理あたり最大100ナノ秒なので、 2命令実行するのに600ナノ秒かかる。 つまり、860÷600≒1.4倍だと思いました。 解答の考え方は、 パイプラインでの処理能力を500ナノ秒の間に、 5命令実行可能だと解釈しています。 □□□□□ ■□□□□ ■■□□□ ■■■□□ ■■■■□ ※■:前の命令のステージを表す。 たぶん、納得できないのはここの解釈だと思うのですが…。

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

  • ベストアンサー
  • kusa_mochi
  • ベストアンサー率76% (1599/2089)
回答No.2

NO.1さんの回答で納得できない場合の為に補足しておくと、 □□□□□ ■□□□□ ■■□□□ ■■■□□ ■■■■□ が ■□□□□ ■■□□□ ■■■□□ ■■■■□ ■■■■■ になる為には「何ナノ秒」必要か考えてみましょう。 あと、上記のようにパイプラインのステージが一歩進むたびに命令の実行が1個ずつ完了する事が理解(というか納得)出来るでしょうか? (5個あるうちのどれか1つが必ず命令実行完了となる) パイプラインを生産ラインと考えれば、xxナノ秒毎に生産(実行)完了した命令が一個ずつアウトプットされているという風に理解しやすくなるかな。

その他の回答 (1)

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

パイプライン処理の場合は、命令処理の各工程を流れ作業のように行うことで、複数の命令処理を効率よく実行できます。 非パイプライン処理では命令処理ごとに各工程を順番に実行します。前の命令処理が全ての工程を完了しないと、次の命令処理を開始することができません。 パイプライン処理では、まず、命令処理1の「読込」を行います。命令処理1の「読込」が終わり「解読」が始まると、命令処理2の「読込」を行います。命令処理1の「解読」、命令処理2の「読込」が終わると、それぞれ次の工程にすすみます。命令処理1は「実行」を行い、命令処理2は「解読」を行います。一方、新しい命令処理3の「読込」をはじめます。同様に、命令処理の各工程を次から次へと絶え間なく行います。 つまり、非パイプライン処理では100+50+100+80+100=430かかるところを、パイプライン処理では各処理のなかで一番長い処理時間の100で済むことになりますので、430÷100=4.3 となるのです。

関連するQ&A

  • 命令パイプラインをつかった問題です。

    命令パイプラインをつかった問題です。 あるプロセッサの命令パイプラインは、命令読み出し、命令解読(デコード)、 オペランド読み出し、演算、オペランド書き込みの5つのステージからなり、 各ステージの処理は1クロックで完了する。 このプロセッサにおける平均CPI(Clock Per Instruction)が5であるとすると、 クロック周波数が 1GHzのとき、このプロセッサの 1秒間辺りの平均命令実行数を MIPSあるいはGIPSを単位として答えなさい。 検索してもcpiについてのことが書いてないので(私が理解できずに見過ごしてるかも・・)、cpiについても軽く説明があると嬉しいです!

  • パイプライン方式での処理時間の求め方

    応用情報の問題で、わからない所があります。 パイプラインの深さをD 、パイプラインのピッチをP 秒とすると、I 個の命令をパイプラインで実行するのに要する時間を表す式はどれか。 ここで、パイプラインの各ステージは1ピッチで処理されるものとし、パイプラインハザードについては、考慮しなくてよい。  ア  (I +D )×P  イ  (I +D -1)×P  ウ  (I ×D )+P  エ  (I ×D -1)+P 正解は「イ」なのですが、お恥ずかしながら全く腑に落ちません。 私の理解とそれによって導き出される式は以下のようになっています。 どこでまちがっているのか、教えていただけませんでしょうか。 ◆私の理解  パイプラインの深さをD:命令の中のステージ数はD個  パイプラインのピッチをP 秒:1ピッチP秒かかる  パイプラインの各ステージは1ピッチで処理:各ステージの処理はP秒かかる  I 個の命令:命令がI個ある ◆式  所用時間= I × (D × P) D×Pで命令内全ステージにかかる時間を求めたつもりです。 それに命令数をかけています。 すみません、よろしくお願いいたします。

  • CPUの高速化技法

    CPUの高速化技法のパイプライン制御の動作中に分岐命令があった場合の計算問題です パイプライン制御を行うと高速に命令を実行できる反面、分岐命令を行うと、前もって取り出しておいた命令を破棄して再度命令の取り出しからやり直さなければならない。 もし、分岐命令がないとき1つのステージを処理するのに5ナノ秒かかるとすると、6個の命令を実行するのに( )ナノ秒かかる。 この問題が分かりません。 答えは55ナノ秒となってます。

  • 計算機工学のプロセッサについて教えて下い

    あるプロセッサにおいて各命令タイプの命令実行の各ステップにおける所要時間は画像の通りとする。 1 以下の2種類のプロセッサ構成方式を採った場合のクロックサイクル時間(最小値単位はns)、各命令タイプの実行所要時間(単位はns)および実行所要クロックサイクル数を求めよ   ・シングルサイクル・データパス   ・マルチサイクル・データパス   ・命令パイプライン処理 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー といった問題です 自分で解いてみたのですが解答がないため、答えが合っているのかが知りたいです ・シングルサイクル 実行時間: ロード命令   1.1+0.4+0.7+1.1+0.4=3.7ns ストア命令   1.1+0.4+0.7+1.1=3.3ns 演算命   1.1+0.4+0.7+0.4=2.6ns 分岐命令   1.1+0.4+0.8=2.3ns よってクロックサイクル時間=3.7ns ・クロックサイクル数: 実行時間=クロックサイクル数*クロックサイクル時間より ロード命令:3.7/3.7 ストア命令:3.3/3.7 演算命令:2.6/3.7 分岐命令:2.3/3.7 ・マルチサイクル 実行時間: ロード命令   (1.1*4)+(0.4*4)+(0.7*3+0.8)+(1.1*2)+0.4=11.5ns ストア命令   (1.1*4)+(0.4*4)+(0.7*3+0.8)+(1.1*2)=11.1ns 演算命令   (1.1*4)+(0.4*4)+(0.7*3+0.8)+(1.1*2)+0.4=11.5ns 分岐命令   (1.1*4)+(0.4*4)+(0.7*3+0.8)=8.9ns クロックサイクル時間は命令フェッチに合わせた4.4ns クロックサイクル数 ロード命令:5 ストア命令:4 演算命令:4 分岐命令:3 ・パイプライン 実行時間 ロード命令   1.1+0.4+0.4+0.7+1.1+0.4=4.1ns ストア命令   1.1+4.1=5.2ns 演算命令   1.1+5.2=6.3ns 分岐命令   1.1+6.3=7.4ns というのが私の考えです 全体的に自信がありません どなたかお分かりになるのでしたら教えていただけませんか 一応画像のものを手書きしておきます         命令フェッチ  レジスタ読み出し ALU演算 データアクセス レジスタ書き込み ロード命令   1100ps      400ps       700ps    1100ps        400ps ストア命令   1100ps      400ps       700ps    1100ps 演算命令    1100ps      400ps       700ps                 400ps 分岐命令    1100ps      400ps       800ps

  • パイプラインの5つのフェーズ

    パイプラインのフェーズの割り方で I・D・R・EX・Wに分かれている図があったのですが、 I:Instruction fetch 命令フェッチ D:decode デコード R:? EX:execution 演算実行 W:write back 結果の格納 Rだけが何を指すのかわかりません。 何を指すのでしょうか?

  • パイプラインハザード2

    パイプラインハザードに関する以下の問いに答えよ。C言語で図1のコードをコンパイルしたところ図2のような機械語に翻訳された。変数のメモリマップは図3を参照せよ。 図1:C言語による演算コード A=B+C D=B+E 図2:図1のコードを翻訳した機会コード LOAD R1 SO(4) LOAD R2 SO(8) ADD R3 R1 R2 STORE SO(0) R3 LOAD R2 SO (16) ADD R3 R1 R2 STORE SO(12) R3 図3:変数のメモリマップ   SO→|AAAA|   |BBBB|   |CCCC|   |DDDD|   |EEEE| (a)CPUがこの機械語をパイプライン処理している場合に、どのようなパイプラインハザードがありうるか説明せよ。 データハザードがというデータ依存によって起こるパイプラインハザードが起こる。データ依存とは、命令1の結果を後の命令2が使用する場合に生じるものである。命令2が処理されるためには命令1の完了を待たなければならず、待ちが生じる。 図2の機械語コードから 命令に上から順に00,01,02,03,04,05,06という番号をつけると01,02ではR2を共有しているため02は01の完了を待たなければならず待ちが生じる。他も02,03はR3を、04,05はR2を、05,06はR3を共有しているため待ちが生じる。それによってパイプラインに乱れが生じ、命令作業がスムーズに行われなくなる。 という答えになりました、ご確認お願い致します。 (b)上記のパイプラインハザードを回避するために、図2の機械語を一部修正した機械語を記せ。その際、なぜハザードが回避できるのか説明せよ。 命令追越し機能を利用するものかなと思ったのですが...はっきりとした答えがみつかりません。 ご教示お願い致します。

  • 下記の問いの解き方を教えて下さい。

     基本動作時間(クロック時間)が 3 ナノ秒の処理装置で,命令の実行に必要 なクロック数とその命令の出現比率が表に示す値である場合、この処理装置の性 能は平均約何 MIPS か。 ┌───―───────┬――――――――─────┬──────┐ │  命令の種別    │命令実行に必要なクロック数│ 出現比率 │ ├────―──────┼―――――――――────┼──────┤ │レジスタ間演算    │       4      │  40%  │ ├─────―─────┼──―――――――――――┼──────┤ │メモリ・レジスタ間演算│       8      │  50%  │ ├─────────―─┼──――――――――――─┼──────┤ |無条件分岐      |      10      |  10%  | └─────────―─┴─―――――――――───┴──────┘

  • 応用情報の問題です。

    応用情報の問題です。 パイプラインの深さをD 、パイプラインのピッチをP 秒とすると、I 個の命令をパイプサインで実行するのに要する時間を表す式はどれか。 ここで、パイプラインの各ステージは1ピッチで処理されるものとし、パイプラインハザードについては、考慮しなくてよい。  ア  (I +D )×P  イ  (I +D -1)×P  ウ  (I ×D )+P  エ  (I ×D -1)+P 正解は「イ」なのですが、「パイプラインの深さD」と「命令数I」の違いを教えて いただきたいです。 よろしくお願いします。

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

    基本情報技術者試験の午前過去問が分からなくて困っています。 以下にその問題を示します。宜しくお願いします。 表の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やクロック周波数などの用語は理解しているつもりなのですが。 宜しくお願いします。

  • 情報処理の問題ですが

    情報処理の問題ですがどなたか解き方を教えて頂けますでしょうか? 宜しくお願い致します。 問題 8000万個の命令を実行するプログラムを60MIPSで実行した場合に 予想される処理時間は何秒か(小数点第3位を四捨五入する) ここで プロセッサの使用率は75%としてオペレーティングシステムのオーバーヘッドは考えないものとする。なお、次の計算式を参考にするとよい (1)1秒間に実行できる命令数=MIPS値×使用率 (2)プログラム処理時間=プログラム命令数/1秒間に実行できる命令数 (3)MIPS値=1秒間に実行できる命令数を百万の単位で示したもの