応用情報技術者 2015年 春期 午前2 問13
問題文
1件のデータを処理する際に、読取りには40ミリ秒、CPU処理には30ミリ秒、書込みには50ミリ秒掛かるプログラムがある。このプログラムで、n件目の書込みと並行してn+1件目のCPU処理とn+2件目の読取りを実行すると、1分当たりの最大データ処理件数は幾つか。ここで、OSのオーバヘッドは考慮しないものとする。
選択肢
ア:500
イ:666
ウ:750
エ:1,200(正解)
1件のデータ処理の並列化による最大処理件数【午前2 解説】
要点まとめ
- 結論:並列処理により1件あたりの処理時間は最大の処理時間で決まり、1分間に1200件処理可能です。
- 根拠:読取り40ms、CPU処理30ms、書込み50msのうち、並行処理で最も時間がかかる書込み50msがボトルネックとなります。
- 差がつくポイント:処理の並列化を理解し、各処理の重複時間ではなく最大処理時間を基準に計算することが重要です。
正解の理由
この問題は3つの処理(読取り、CPU処理、書込み)をパイプラインのように並列化しています。
- 1件目の処理は順番に40ms+30ms+50ms=120msかかりますが、2件目以降は各処理が重複して並行実行されます。
- したがって、1件あたりの処理時間は最も時間のかかる書込み50msに制約されます。
- 1分(60,000ms)を50msで割ると、最大処理件数は1,200件となり、選択肢の中でエが正解です。
よくある誤解
- 各処理時間を単純に合計して1件あたりの時間と考える誤り。
- 並列化の効果を無視し、全処理時間の合計で計算すること。
解法ステップ
- 各処理時間(読取り40ms、CPU処理30ms、書込み50ms)を確認する。
- 並列化の条件から、n件目の書込みとn+1件目のCPU処理、n+2件目の読取りが同時に行われることを理解する。
- 1件あたりの処理時間は最も時間のかかる処理(書込み50ms)に制約されると判断する。
- 1分(60,000ms)を50msで割り、最大処理件数を計算する。
- 選択肢の中から計算結果に合致するものを選ぶ。
選択肢別の誤答解説
- ア: 500件 → 1件あたり120ms(40+30+50)で計算した誤り。並列化を考慮していない。
- イ: 666件 → 1件あたり90ms(40+50)など部分的な合計で計算した可能性。
- ウ: 750件 → 1件あたり80ms(CPU処理と書込みの合計など)で計算した誤り。
- エ: 1,200件 → 正解。並列化により最大処理時間50msがボトルネックとなる。
補足コラム
この問題はパイプライン処理の基本を問うものです。パイプライン処理では、複数の処理段階を並列に進めることでスループットを向上させます。
1件目は全工程を順に処理しますが、2件目以降は各工程が重複して動くため、全体の処理時間は最も遅い工程の時間に依存します。
1件目は全工程を順に処理しますが、2件目以降は各工程が重複して動くため、全体の処理時間は最も遅い工程の時間に依存します。
FAQ
Q: なぜ1件目の処理時間は合計の120msなのに、1分あたりの処理件数は50ms基準なのですか?
A: 1件目は順次処理しますが、2件目以降は処理が重複して並列化されるため、スループットは最も遅い処理時間に制約されます。
A: 1件目は順次処理しますが、2件目以降は処理が重複して並列化されるため、スループットは最も遅い処理時間に制約されます。
Q: OSのオーバヘッドを考慮しないとはどういう意味ですか?
A: 処理間の切り替えや管理にかかる時間を無視し、純粋に処理時間だけで計算することを意味します。
A: 処理間の切り替えや管理にかかる時間を無視し、純粋に処理時間だけで計算することを意味します。
関連キーワード: パイプライン処理、並列処理、スループット、処理時間、ボトルネック

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

