10-02 パイプラインで全層繋ぐ(層レベルでも並列処理)

●非パイプラインだと一人で作業しているのと同じ

 図10-07は前節で行った「
パイプライン」で繋ぐイメージです。
 同図では1層目を「半田付け」、2層目を「箱詰め」、3層目を「ネジ締め」という作業に置き換えています。各層は前の層が終わったら開始するので並列に動作するわけではなく、これでは一人で作業するのと変わりません。

  図10-07 非パイプラインのイメージ


●パイプラインのイメージ

 本節ではディープラーニングの回路をパイプライン化して更に高速化します。
 
パイプラインのイメージを図10−08に示します。同図ではベルトコンベアにのって製品が流れてきます。作業者は3人おり、3並列で作業しています。


●製品1個作るだけなら同じだが・・・

 製品の
1個目が出てくる時刻は図10-07も図10-08も同じ270秒になります。それでは2個目はどうでしょう?前者は270 + 270 = 540秒ですが、後者は270 + 100 = 370秒です。10個目、100個目・・・と考えると表10-01のようになります。

  図10-08 パイプラインのイメージ

  表10−01 製品を作れば作るほど差がつく
製品の個数 非パイプライン パイプライン 高速化率
1個 270秒 270秒 1倍
10個 2,700秒 1,170秒 2.3倍
100個 27,000秒 10,170秒 2.65倍
1000個 270,000秒 100,170秒 2.695倍


●3人同時に作業すれば最大3倍速くなる

 上表では製品の数が増えるごとに差が大きくなります。一般的にN段パイプラインの場合、最大でN倍の高速化が出来ます。図10−08は3段なので最大3倍、上表の最下段を見ると約
2.7倍になっています。

●一番遅い人がペースメーカーになる

 図10−08をタイムチャート風に表現すると図10-09のようになります。横軸は時間で、同時刻に3人とも作業しています。そして1層目のA君が4台目を作業しているとき、2層目のB君は3台目、3層目のC君は2台目を作業しています。
 一番時間がかかるのが3層目なのでC君が
ペースメーカーになります。C君の作業が終わるまでA君は10秒、B君は20秒、何もせずにWaitingします。C君は作業を終えたらその旨をA君、B君に伝え、皆が次の製品に取り掛かります。スループット(製品が1個出てくる時間)は一番遅いC君のペースで決まり、100秒になります。

  図10-09 タイムチャート


次のページへ


目次へ戻る