応用情報技術者 2019年 秋期 午前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のうち最も時間がかかる書込み50msがボトルネックとなります。
- 差がつくポイント:処理の並列化で3工程を同時進行させ、最長処理時間を基準に最大処理件数を計算する点が重要です。
正解の理由
この問題は3つの処理(読取り40ms、CPU処理30ms、書込み50ms)をパイプライン処理で並列化しています。
n件目の書込みとn+1件目のCPU処理、n+2件目の読取りを同時に行うため、1サイクルあたりの処理時間は最も長い書込みの50msに制約されます。
1分(60,000ms)を50msで割ると、最大処理件数は1,200件となり、選択肢の中でエが正解です。
n件目の書込みとn+1件目のCPU処理、n+2件目の読取りを同時に行うため、1サイクルあたりの処理時間は最も長い書込みの50msに制約されます。
1分(60,000ms)を50msで割ると、最大処理件数は1,200件となり、選択肢の中でエが正解です。
よくある誤解
- 各処理時間を単純に足して計算し、1000ms ÷ (40+30+50)ms = 10件と誤解する。
- CPU処理時間30msを基準にして最大件数を計算するが、最長処理時間がボトルネックになる点を見落とす。
解法ステップ
- 各処理時間を確認:読取り40ms、CPU処理30ms、書込み50ms。
- 並列処理の仕組みを理解:n件目の書込みとn+1件目のCPU処理、n+2件目の読取りが同時進行。
- 1サイクルの処理時間は最長の書込み50msがボトルネック。
- 1分(60,000ms)を50msで割り、最大処理件数を計算。
- 結果は1,200件で、選択肢のエが正解。
選択肢別の誤答解説
- ア: 500件は50msを基準にしていないか、計算ミスの可能性。
- イ: 666件は60,000 ÷ 90ms(40+30+20など誤った合計)で計算した誤り。
- ウ: 750件は60,000 ÷ 80ms(誤った最長時間)で計算した可能性。
- エ: 1,200件は正しく50msを基準に計算した結果。
補足コラム
パイプライン処理は複数の処理を重ねて実行し、全体のスループットを向上させる技術です。
この問題のように、最も時間のかかる処理が全体の処理速度を決定するため、ボトルネックの特定が重要です。
OSのオーバヘッドを考慮しない理想的な条件下での計算である点も押さえておきましょう。
この問題のように、最も時間のかかる処理が全体の処理速度を決定するため、ボトルネックの特定が重要です。
OSのオーバヘッドを考慮しない理想的な条件下での計算である点も押さえておきましょう。
FAQ
Q: なぜ処理時間の合計ではなく最長時間を基準にするのですか?
A: 並列処理では各処理が同時に進むため、全体の処理速度は最も遅い処理に制約されるからです。
A: 並列処理では各処理が同時に進むため、全体の処理速度は最も遅い処理に制約されるからです。
Q: OSのオーバヘッドを考慮するとどうなりますか?
A: 実際はオーバヘッドが加わり、最大処理件数は理論値より減少します。
A: 実際はオーバヘッドが加わり、最大処理件数は理論値より減少します。
関連キーワード: パイプライン処理、ボトルネック、並列処理、スループット、処理時間計算

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

