1件のデータを処理する際に,読取りには40ミリ秒,CPU処理には30ミリ秒,書込みには50ミリ秒掛かるプログラムがある。
このプログラムで,n件目の書込みと並行してn+1件目のCPU処理とn+2件目の読取りを実行すると,1分当たりの最大データ処理件数は幾つか。
ここで,OSのオーバヘッドは考慮しないものとする。
正答4
解説
正解は4です。
この問題は、読取り・CPU処理・書込みを並行して行うパイプライン処理の処理能力を求めるものです。
3つの処理を同時に進めると、1件当たりの間隔は最も時間の掛かる処理で決まります。
【計算】
各処理の時間:読取り40ミリ秒、CPU処理30ミリ秒、書込み50ミリ秒
並行処理での1件当たりの間隔:最大の書込み時間50ミリ秒
1分の時間:60秒=60,000ミリ秒
1分当たりの最大処理件数:60,000ミリ秒÷50ミリ秒=1,200件
【選択肢別解説】
1:× 500件は、1件ずつ順番に処理した場合の件数です。
40+30+50=120ミリ秒で1件として60,000÷120=500件ですが、並行処理を考慮していません。
2:× 666件は、1件当たり約90ミリ秒とした場合の値です。
読取りと書込みなど2つの処理の和で考えており、並行処理での間隔の考え方として誤りです。
3:× 750件は、1件当たり80ミリ秒とした場合の値です。
並行処理での間隔は処理時間の和ではなく、最も長い書込みの50ミリ秒です。
4:○ 書込みの50ミリ秒ごとに1件が完了するので、60,000÷50=1,200件です。
定常状態では3つの処理が重なって進むため、ボトルネックの書込み時間が処理間隔になります。
【ポイント】
パイプラインの処理能力は、最も遅い段階(ボトルネック)で決まります。
処理能力を上げたいときは、ボトルネックの段階を短縮することが最も効果的です。