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