応用情報技術者 2021年 秋期 午前2 問15
問題文
1件のデータを処理する際に、読取りには40ミリ秒,CPU処理には30ミリ秒、書込みには50ミリ秒掛かるプログラムがある。このプログラムで、件目の書込みと並行して件目のCPU処理と件目の読取りを実行すると,1分当たりの最大データ処理件数は幾つか。ここで,OSのオーバヘッドは考慮しないものとする。
選択肢
ア:500
イ:666
ウ:750
エ:1,200(正解)
1件のデータ処理の並列化による最大処理件数【午前2 解説】
要点まとめ
- 結論:並列処理により1分間に最大1,200件の処理が可能です。
- 根拠:読取り40ms、CPU処理30ms、書込み50msを並列化し、最長処理時間50msがボトルネックとなるため。
- 差がつくポイント:処理の重複を見抜き、並列化で全体のスループットを最大化する理解力が重要です。
正解の理由
この問題では、1件の処理を「読取り→CPU処理→書込み」の3段階で行います。各処理時間はそれぞれ40ms、30ms、50msです。問題文の並列化条件により、件目の書込みと同時に、件目のCPU処理、さらに件目の読取りが並行して行われます。つまり、3つの処理が同時に進行し、全体の処理時間は最も時間のかかる書込みの50msに制約されます。1分(60,000ms)を50msで割ると、最大1,200件の処理が可能となるため、正解はエです。
よくある誤解
- 各処理時間を単純に足して合計120msと考え、1分間の処理件数を計算してしまう。
- 並列化の効果を無視し、最長処理時間だけでなく全処理時間の合計を基準にする誤り。
解法ステップ
- 各処理時間を確認する(読取り40ms、CPU処理30ms、書込み50ms)。
- 並列化の条件を理解し、3つの処理が同時に進むことを把握する。
- 並列処理の中で最も時間のかかる処理(書込み50ms)が全体のボトルネックとなることを認識。
- 1分(60,000ms)をボトルネックの処理時間50msで割り、最大処理件数を計算。
- 計算結果1,200件を選択肢から選ぶ。
選択肢別の誤答解説
- ア: 500件
→ 1件あたり120ms(40+30+50)で計算した場合の近似値。並列化を考慮していない。 - イ: 666件
→ 1件あたり90ms(40+50)など一部処理時間の合計で誤計算した可能性。 - ウ: 750件
→ 1件あたり80ms(CPU処理30msと書込み50msの合計)で計算した誤り。 - エ: 1,200件
→ 並列化により最長処理時間50msがボトルネックと正しく判断し、正解。
補足コラム
この問題はパイプライン処理の基本を問うものです。パイプライン処理では複数の処理段階を並列化し、スループットを向上させます。ボトルネックとなる最長処理時間が全体の処理速度を決定するため、最適化のポイントはこの部分の短縮です。OSのオーバヘッドを無視しているため、理想的な理論値として計算しています。
FAQ
Q: なぜ処理時間を単純に足さないのですか?
A: 並列化により複数の処理が同時進行するため、合計時間ではなく最長処理時間が全体の制約となります。
A: 並列化により複数の処理が同時進行するため、合計時間ではなく最長処理時間が全体の制約となります。
Q: OSのオーバヘッドを考慮しないとはどういう意味ですか?
A: 実際の処理ではコンテキストスイッチや割り込みなどの追加時間が発生しますが、本問題ではそれらを無視して理論値を求めています。
A: 実際の処理ではコンテキストスイッチや割り込みなどの追加時間が発生しますが、本問題ではそれらを無視して理論値を求めています。
関連キーワード: パイプライン処理、並列処理、スループット、ボトルネック、処理時間計算

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

