応用情報技術者 2013年 秋期 午前2 問15
問題文
1件のデータを処理する際に、読取りには 40ミリ秒、CPU処理には30ミリ秒、書込みには 50ミリ秒掛かるプログラムがある。このプログラムで,n件目の書込みと並行してn+1件目のCPU処理とn+2件目の読取りを実行すると、1分当たりの最大データ処理件数は幾つか。ここで、OSのオーバヘッドは考慮しないものとする。
選択肢
ア:500
イ:666
ウ:750
エ:1,200(正解)
1件のデータ処理の並列実行による最大処理件数【午前2 解説】
要点まとめ
- 結論:並列処理を考慮すると、1分間に最大1,200件の処理が可能です。
- 根拠:読取り40ms、CPU処理30ms、書込み50msの3工程をパイプライン化し、最長工程の50msがボトルネックとなるためです。
- 差がつくポイント:単純合計時間ではなく、並列処理のパイプライン化を理解し、最長処理時間でスループットを計算することが重要です。
正解の理由
この問題は3つの処理(読取り40ms、CPU処理30ms、書込み50ms)をパイプラインで並列実行する状況を問うています。
1件の処理全体時間は120msですが、パイプライン化により各処理が重複して進行します。
最も時間のかかる書込み50msがパイプラインのスループットを決定し、1件あたり50msで処理が完了します。
したがって、1分(60,000ms)÷ 50ms = 1,200件が最大処理件数となり、選択肢の中でエが正解です。
1件の処理全体時間は120msですが、パイプライン化により各処理が重複して進行します。
最も時間のかかる書込み50msがパイプラインのスループットを決定し、1件あたり50msで処理が完了します。
したがって、1分(60,000ms)÷ 50ms = 1,200件が最大処理件数となり、選択肢の中でエが正解です。
よくある誤解
- 各処理時間を単純に合計して1件あたりの時間と考える誤り。
- 並列処理のパイプライン化を理解せず、最長処理時間を見落とすこと。
解法ステップ
- 各処理時間(読取り40ms、CPU処理30ms、書込み50ms)を確認する。
- 並列処理の流れをイメージし、3つの処理が同時に進むことを理解する。
- パイプラインのスループットは最長処理時間(50ms)で決まると判断する。
- 1分(60,000ms)を最長処理時間で割り、最大処理件数を計算する。
- 計算結果1,200件と選択肢を照合し、正解を選ぶ。
選択肢別の誤答解説
- ア: 500件
→ 各処理時間を単純合計(40+30+50=120ms)で計算し、60,000÷120=500とした誤り。並列処理を考慮していません。 - イ: 666件
→ 60,000÷90ms(例えばCPU処理と読取りの合計)など中途半端な計算による誤り。 - ウ: 750件
→ 60,000÷80msなど、誤った最長処理時間を用いた誤り。 - エ: 1,200件
→ 正しく最長処理時間50msを用いて計算した正解。
補足コラム
パイプライン処理は複数の処理を重ねて実行し、スループットを向上させる技術です。
この問題のように、各処理が独立して並列に進む場合、全体の処理速度は最も時間のかかる処理に依存します。
OSのオーバヘッドや待ち時間がない理想的な条件下での計算例として理解しましょう。
この問題のように、各処理が独立して並列に進む場合、全体の処理速度は最も時間のかかる処理に依存します。
OSのオーバヘッドや待ち時間がない理想的な条件下での計算例として理解しましょう。
FAQ
Q: なぜ処理時間の合計ではなく最長処理時間で計算するのですか?
A: パイプライン処理では各工程が同時進行するため、全体のスループットは最も遅い工程の処理時間に制約されるからです。
A: パイプライン処理では各工程が同時進行するため、全体のスループットは最も遅い工程の処理時間に制約されるからです。
Q: OSのオーバヘッドを考慮しないとはどういう意味ですか?
A: 実際には処理間の切り替えや管理に時間がかかりますが、この問題ではそれらを無視し理想的な並列処理を想定しています。
A: 実際には処理間の切り替えや管理に時間がかかりますが、この問題ではそれらを無視し理想的な並列処理を想定しています。
関連キーワード: パイプライン処理、スループット、並列処理、処理時間、最大処理件数

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

