令和3年度 秋期 応用情報技術者試験 午前 問題 問15

1件のデータを処理する際に,読取りには 40 ミリ秒,CPU処理には 30 ミリ秒,書込みには 50 ミリ秒掛かるプログラムがある。このプログラムで,nn件目の書込みと並行して n+1n+1件目の CPU処理と n+2n+2件目の読取りを実行すると,1分当たりの最大データ処理件数は幾つか。ここで,OSのオーバヘッドは考慮しないものとする。

解答・解説

正解: エ. 1,200

この問題は、複数の処理を並行して実行するパイプライン処理におけるデータ処理能力を求める問題です。

プログラムは「読取り(40ミリ秒)」「CPU処理(30ミリ秒)」「書込み(50ミリ秒)」の3つのステップで構成されており、これらを並行して実行します。
並行処理(パイプライン処理)において、全体の処理速度(スループット)を決定するのは、最も処理時間の長いステップ(ボトルネック)です。

各ステップの処理時間を比較すると、以下のようになります。

  • 読取り: 4040 ミリ秒
  • CPU処理: 3030 ミリ秒
  • 書込み: 5050 ミリ秒

最も時間が掛かるのは書込みの 5050 ミリ秒です。したがって、定常状態において、このプログラムはデータ1件あたり 5050 ミリ秒の間隔で処理を完了していくことになります。

1分間(=60,000= 60,000 ミリ秒)当たりの最大データ処理件数は、以下の計算式で求められます。
60,000÷50=1,200 60,000 \div 50 = 1,200

よって、1分当たりの最大データ処理件数は 1,2001,200 件となります。

各選択肢の解説

  • ア 500
    読取り、CPU処理、書込みの各処理時間を合計した時間(40+30+50=12040 + 30 + 50 = 120 ミリ秒)を要するとして、直列処理をした場合の件数(60,000÷120=50060,000 \div 120 = 500)を計算した誤りです。
  • イ 666
    「読取り」と「書込み」の時間を足した 9090 ミリ秒(40+5040 + 50)を基準にして計算(60,000÷90≈66660,000 \div 90 \approx 666)するなど、並行処理の捉え方を誤ったものです。
  • ウ 750
    「CPU処理」と「書込み」の時間を足した 8080 ミリ秒(30+5030 + 50)を基準にして計算(60,000÷80=75060,000 \div 80 = 750)するなど、並行処理の捉え方を誤ったものです。
  • エ 1,200
    正解です。並行処理におけるボトルネックである「書込み」の 5050 ミリ秒を基準に、60,000÷5060,000 \div 50 を計算した正しい結果です。

Spineチーム