令和元年度 秋期 午前 問15
システム構成要素
パイプラインに関する問題
1 件のデータを処理する際に,読取りには 40 ミリ秒,CPU 処理には 30 ミリ秒,書込みには 50 ミリ秒掛かるプログラムがある。このプログラムで,n 件目の書込みと並行して n+1 件目の CPU 処理と n+2 件目の読取りを実行すると,1 分当たりの最大データ処理件数は幾つか。ここで,OS のオーバヘッドは考慮しないものとする。
- ア500
- イ666
- ウ750
- エ1,200
答えと解説を見る
✓ これが正解エ1,200
解説
重ねて流すとき、いちばん長い作業が全体の速さを決めます。
三つの作業を重ねて流すと、全体の速さは最も長い作業に合わせて決まります。読取りが40ミリ秒、処理が30ミリ秒、書込みが50ミリ秒ですから、いちばん長いのは書込みの50ミリ秒です。重ね始めてしばらく経つと、50ミリ秒ごとに1件ずつ仕上がる流れになります。1分は60,000ミリ秒なので、これを50で割ると1,200件が上限だと分かります。最初と最後には重なりきらない時間が少しありますが、1分という長さに比べれば無視できる大きさです。重ねる前と後で、1件あたりに見える時間がどう変わるかを比べると腑に落ちます。工程の数ではなく、いちばん長い工程の長さが効いてきます。この考え方はパイプライン処理の速さを見るときの基本で、詰まっている工程を短くしない限り全体は速くなりません。詰まりを見つけるのが先です。
ほかの選択肢はなぜ違うのか
- ア500:500は、三つの作業を重ねずに順番どおり行った場合の値です。40と30と50を足した120ミリ秒で1件になるので、60,000を120で割ると500が出ます。重ねるという前提を読み落とした形です。順に読むと出ます。
- イ666:666は、三つのうち二つだけを足した90ミリ秒で割った値です。重ねられる作業の数え方を誤ると、この付近の値に落ち着きます。足すのではなく、いちばん長いものを選びます。重なる数を数え直すと防げます。長い一つだけが効きます。
- ウ750:750は、80ミリ秒で1件と見たときの値です。処理と書込みだけが残ると考えると80になりますが、重なっている間は別の件が同時に進んでいます。足し算そのものが必要ありません。同時に進む分を見落としています。
出典:令和元年度 秋期 応用情報技術者試験 午前 問15
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)