(57)【要約】【課題】静的スケジュールプロセッサのノンブロッキング実行装置及び方法を提供する。【解決手段】伝達される入力データを用いて少なくとも１つ以上の演算を処理するプロセッサと、前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納する入力バッファを含み、前記プロセッサは、前記少なくとも１つ以上の演算をそれぞれ行う少なくとも１つ以上の演算ユニットを含み、前記少なくとも１つ以上の演算ユニットは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理する。【選択図】      図１
2014174994.tif 000002
【特許請求の範囲】
【請求項１】
伝達される入力データを用いて少なくとも１つ以上の演算を処理するプロセッサと、
前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納する入力バッファと、
を含み、
前記プロセッサは、前記少なくとも１つ以上の演算をそれぞれ行う少なくとも１つ以上の演算ユニットを含み、
前記少なくとも１つ以上の演算ユニットは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理することを特徴とする静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項２】
前記少なくとも１つ以上の演算ユニットは、前記入力データを前記レギュラーレイテンシの演算で処理するか、または前記イレギュラーレイテンシの演算で処理するかを判断することを特徴とする請求項１に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項３】
前記少なくとも１つ以上の演算ユニットは、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファに格納されているか否かを確認することを特徴とする請求項２に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項４】
前記少なくとも１つ以上の演算ユニットは、
前記以前の演算結果値が前記入力バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力し、
前記以前の演算結果値が前記入力バッファに格納されていない場合に演算を実行し、前記演算の実行中に追加レイテンシが発生するか否かを判断することを特徴とする請求項３に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項５】
前記少なくとも１つ以上の演算ユニットは、
前記演算の実行中に追加レイテンシが発生する場合にダミー値を出力し、前記出力されたダミー値に相応する状態ビットを前記入力バッファに記録し、
前記演算の実行中に追加レイテンシが発生しない場合に前記演算の実行による結果値を出力し、前記出力された結果値を前記入力バッファに記録する、
ことを特徴とする請求項４に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項６】
前記少なくとも１つ以上の演算ユニットは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記入力バッファに記録することを特徴とする請求項５に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項７】
前記入力バッファは、状態レジスタ及び結果バッファを含み、
前記状態レジスタは、前記入力データに対する状態を格納し、
前記結果バッファは、以前の演算結果値を格納することを特徴とする請求項４に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項８】
前記状態レジスタは、前記入力データに対して演算を再度行うか否かに対する状態を格納することを特徴とする請求項７に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
【請求項９】
入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を行う演算処理部と、
前記入力データの演算中に前記複数の演算ユニットのうち少なくとも１つに追加レイテンシが発生するかを判断する判断部と、
前記追加レイテンシが発生する場合にダミー値を出力して前記入力バッファに格納する格納処理部と、
を備えることを特徴とする静的スケジュールプロセッサ。
【請求項１０】
前記演算処理部は、
前記入力バッファから前記伝達された入力データに対する以前の演算結果値が格納されているかを確認し、
前記以前の演算結果値が格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力し、
前記以前の演算結果値が前記入力バッファに格納されていない場合、前記入力データの演算を実行することを特徴とする請求項９に記載の静的スケジュールプロセッサ。
【請求項１１】
プロセッサで、伝達される入力データを用いて少なくとも１つ以上の演算を処理するステップと、
入力バッファで、前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納するステップと、
を含み、
前記少なくとも１つ以上の演算を処理するステップは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理するステップを含むことを特徴とする静的スケジュールプロセッサのノンブロッキング実行方法。
【請求項１２】
前記少なくとも１つ以上の演算を処理するステップは、前記入力データを前記レギュラーレイテンシの演算で処理するか、または前記イレギュラーレイテンシの演算で処理するかを判断するステップを含むことを特徴とする請求項１１に記載の静的スケジュールプロセッサのノンブロッキング実行方法。
【請求項１３】
前記少なくとも１つ以上の演算を処理するステップは、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファに格納されているか否かを確認するステップを含むことを特徴とする請求項１２に記載の静的スケジュールプロセッサのノンブロッキング実行方法。
【請求項１４】
前記少なくとも１つ以上の演算を処理するステップは、
前記以前の演算結果値が前記入力バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力するステップを含み、
以前の演算結果値が前記入力バッファに格納されていない場合に演算を実行し、前記演算の実行中に追加レイテンシが発生するか否かを判断するステップを含むことを特徴とする請求項１３に記載の静的スケジュールプロセッサのノンブロッキング実行方法。
【請求項１５】
前記少なくとも１つ以上の演算を処理するステップは、前記演算の実行中に追加レイテンシが発生する場合にダミー値を出力し、前記出力されたダミー値に相応する状態ビットを前記入力バッファに記録するステップを含むことを特徴とする請求項１４に記載の静的スケジュールプロセッサのノンブロッキング実行方法。
【請求項１６】
前記少なくとも１つ以上の演算を処理するステップは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記入力バッファに記録するステップを含むことを特徴とする請求項１５に記載の静的スケジュールプロセッサのノンブロッキング実行方法。
【請求項１７】
複数の演算のうち第１演算の実行中に選択的にダミー値を出力するステップと、
前記複数の演算のうち第２演算を実行するステップと、
前記第１演算を再実行して前記第１演算が正常終了することによって結果を取得するステップと、
を含むことを特徴とする静的スケジュールプロセッサの動作方法。
【請求項１８】
第１演算の実行時間が選定された値を超過する場合、前記ダミー値が出力されることを特徴とする請求項１７に記載の静的スケジュールプロセッサの動作方法。
【請求項１９】
前記選定された値は、前記第１演算のプロセッサ実行サイクルカウントを含むことを特徴とする請求項１８に記載の静的スケジュールプロセッサの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
下記の実施形態は入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生する場合、プロセッサ全体が長いサイクルの間にストール（ｓｔａｌｌ）状態に切り替えることなく演算能力を保持する静的スケジュールプロセッサのノンブロッキング実行装置及び方法に対する技術的な思想を開示する。
【背景技術】
【０００２】
静的スケジュールプロセッサ（ｓｔａｔｉｃ  ｓｃｈｅｄｕｌｅ  ｐｒｏｃｅｓｓｏｒ）は、与えられた入力データに対して適用しなければならない演算をどのような演算ユニットでどのような順序をもって実行するかをコンパイル時に決定する方式のプロセッサである。ソフトウェアパイプラインアルゴリズムのうち、スケジュールを決定するＳＲＰ（Ｓａｍｓｕｎｇ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）も静的スケジュールプロセッサに該当する。
【０００３】
プロセッサの演算スケジュールは、各演算が実行可能な演算ユニット、各演算の入力データが備えられる時点、各演算の所用時間などを考慮して最適の実行性能を発揮するように作られる。
【０００４】
ここで、演算の所用時間が常に一定のレギュラーレイテンシ（ｒｅｇｕｌａｒ  ｌａｔｅｎｃｙ）演算では、コンパイル時に正確なタイミング算出が可能なので、最適のスケジュールを発揮することができる。しかし、演算の所用時間が不規則なイレギュラーレイテンシ（ｉｒｒｅｇｕｌａｒ  ｌａｔｅｎｃｙ）演算の場合は、コンパイル時に１つレイテンシ値を仮定して先にスケジュールを生成するので、ランタイムに仮定と異なるレイテンシが発生する場合、これを対処するための別途の方法が求められる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、静的スケジュールプロセッサのノンブロッキング実行装置及び方法を提供することにある。
【課題を解決するための手段】
【０００６】
＜発明の概要＞
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置は、伝達される入力データを用いて少なくとも１つ以上の演算を処理するプロセッサと、前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納する入力バッファとを含み、前記プロセッサは、前記少なくとも１つ以上の演算をそれぞれ行う少なくとも１つ以上の演算ユニットを含み、前記少なくとも１つ以上の演算ユニットは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理する。
【０００７】
一実施形態に係る静的スケジュールプロセッサは、入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を行う演算処理部と、前記入力データの演算中に前記複数の演算ユニットのうち少なくとも１つに追加レイテンシが発生するかを判断する判断部と、前記追加レイテンシが発生する場合にダミー値を出力して前記入力バッファに格納する格納処理部とを備える。
【０００８】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、プロセッサで、伝達される入力データを用いて少なくとも１つ以上の演算を処理するステップと、入力バッファで、前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納するステップとを含み、前記少なくとも１つ以上の演算を処理するステップは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理するステップを含む。
【０００９】
一実施形態に係る静的スケジュールプロセッサの動作方法は、複数の演算のうち第１演算の実行中に選択的にダミー値を出力するステップと、前記複数の演算のうち第２演算を実行するステップと、前記第１演算を再実行して前記第１演算が正常終了することによって結果を取得するステップとを含む。
【発明の効果】
【００１０】
一実施形態に係るプロセッサの動作方法を用いると、各入力データに対する演算中に、基本レイテンシよりも著しく大きいレイテンシが発生した場合、プロセッサ全体が長いサイクルの間にストール状態になることで演算能力の低下を防止することができる。
【００１１】
一実施形態に係るプロセッサの動作方法を用いると、基本レイテンシよりも大きいレイテンシが発生しても、プロセッサはストールすることなく当該の演算値のみをダミー値に処理するだけで、続けて次のデータに対する演算は正常に実行できる。そして、後でダミー値として処理されたデータに対しては演算を再度行うことができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置を説明するブロック図である。
【図２】一実施形態に係るノンブロッキング実行装置の入力バッファを説明する図である。
【図３】他の一実施形態に係る静的スケジュールプロセッサを説明するブロック図である。
【図４】一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を説明するフローチャートである。
【図５】一実施形態に係るプロセッサの動作方法を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
＜発明の詳細＞
【００１４】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置は、伝達される入力データを用いて少なくとも１つ以上の演算を処理するプロセッサと、前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納する入力バッファとを含み、前記プロセッサは、前記少なくとも１つ以上の演算をそれぞれ行う少なくとも１つ以上の演算ユニットを含み、前記少なくとも１つ以上の演算ユニットは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理する。
【００１５】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記入力データを前記レギュラーレイテンシの演算で処理するか、または前記イレギュラーレイテンシの演算で処理するかを判断してもよい。
【００１６】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファに格納されているか否かを確認してもよい。
【００１７】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記以前の演算結果値が前記入力バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力してもよい。
【００１８】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記以前の演算結果値が前記入力バッファに格納されていない場合に演算を実行し、前記演算の実行中に追加レイテンシが発生するか否かを判断してもよい。
【００１９】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記演算の実行中に追加レイテンシが発生する場合にダミー値を出力し、前記出力されたダミー値に相応する状態ビットを前記入力バッファに記録してもよい。
【００２０】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記入力バッファに記録してもよい。
【００２１】
一実施形態に係る前記少なくとも１つ以上の演算ユニットは、前記演算の実行中に追加レイテンシが発生しない場合に前記演算の実行による結果値を出力し、前記出力された結果値を前記入力バッファに記録してもよい。
【００２２】
一実施形態に係る前記入力バッファは、状態レジスタ及び結果バッファを含み、前記状態レジスタは、前記入力データに対する状態を格納し、前記結果バッファは、以前の演算結果値を格納してもよい。
【００２３】
一実施形態に係る前記状態レジスタは、前記入力データに対して演算を再度行うか否かに対する状態を格納してもよい。
【００２４】
一実施形態に係る静的スケジュールプロセッサは、入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を行う演算処理部と、前記入力データの演算中に前記複数の演算ユニットのうち少なくとも１つに追加レイテンシが発生するかを判断する判断部と、前記追加レイテンシが発生する場合にダミー値を出力して前記入力バッファに格納する格納処理部とを備える。
【００２５】
一実施形態に係る前記演算処理部は、前記入力バッファから前記伝達された入力データに対する以前の演算結果値が格納されているかを確認し、前記以前の演算結果値が格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力してもよい。
【００２６】
一実施形態に係る前記演算処理部は、前記入力バッファから前記伝達された入力データに対する以前の演算結果値が格納されているかを確認し、前記以前の演算結果値が前記入力バッファに格納されていない場合、前記入力データの演算を実行してもよい。
【００２７】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、プロセッサで、伝達される入力データを用いて少なくとも１つ以上の演算を処理するステップと、入力バッファで、前記入力データを前記プロセッサに伝達し、前記少なくとも１つ以上の演算に対する処理結果を格納するステップとを含み、前記少なくとも１つ以上の演算を処理するステップは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理するステップを含む。
【００２８】
一実施形態に係る前記少なくとも１つ以上の演算を処理するステップは、前記入力データを前記レギュラーレイテンシの演算で処理するか、または前記イレギュラーレイテンシの演算で処理するかを判断するステップを含んでもよい。
【００２９】
一実施形態に係る前記少なくとも１つ以上の演算を処理するステップは、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファに格納されているか否かを確認するステップを含んでもよい。
【００３０】
一実施形態に係る前記少なくとも１つ以上の演算を処理するステップは、前記以前の演算結果値が前記入力バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力するステップを含んでもよい。
【００３１】
一実施形態に係る前記少なくとも１つ以上の演算を処理するステップは、以前の演算結果値が前記入力バッファに格納されていない場合に演算を実行し、前記演算の実行中に追加レイテンシが発生するか否かを判断するステップを含んでもよい。
【００３２】
一実施形態に係る前記少なくとも１つ以上の演算を処理するステップは、前記演算の実行中に追加レイテンシが発生する場合にダミー値を出力し、前記出力されたダミー値に相応する状態ビットを前記入力バッファに記録するステップを含んでもよい。
【００３３】
一実施形態に係る前記少なくとも１つ以上の演算を処理するステップは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記入力バッファに記録するステップを含んでもよい。
【００３４】
一実施形態に係る静的スケジュールプロセッサの動作方法は、複数の演算のうち第１演算の実行中に選択的にダミー値を出力するステップと、前記複数の演算のうち第２演算を実行するステップと、前記第１演算を再実行して前記第１演算が正常終了することによって結果を取得するステップとを含む。
【００３５】
一実施形態に係る第１演算の実行時間が選定された値を超過する場合、前記ダミー値が出力されてもよい。
【００３６】
一実施形態に係る前記選定された値は、前記第１演算のプロセッサ実行サイクルカウントを含んでもよい。
【００３７】
以下、実施形態を添付する図面を参照しながら詳細に説明する。
【００３８】
実施形態を説明するにおいて、関連する公知機能または構成に対する具体的な説明が実施形態の要旨を不要に曖昧にすると判断される場合にはその詳細な説明は省略される。そして、本明細書で用いられる用語は実施形態を適切に表現するために用いられる用語として、これはユーザ、運用者の意図、または該当技術が属する分野の慣例などによって変わり得る。したがって、用語に対する定義は本明細書の全般にわたる内容に基づいて定められる。各図面に提示された同一の参照符号は同一の部材を示す。
【００３９】
図１は、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置１００を説明するブロック図である。
【００４０】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置１００は、入力バッファ１１０及びプロセッサ１２０を備える。
【００４１】
以下の「プロセッサ」は、静的スケジュール基盤のプロセッサを含んでもよい。
【００４２】
一実施形態に係るプロセッサ１２０は、伝達される入力データを用いて少なくとも１つ以上の演算を処理する。
【００４３】
一実施形態に係る入力バッファ１１０は、入力データをプロセッサに伝達し、少なくとも１つ以上の演算に対する処理結果を格納してもよい。
【００４４】
ここでのプロセッサ１２０は、少なくとも１つ以上の演算をそれぞれ行う少なくとも１つ以上の演算ユニット１２１（Ｆｕｎｃｔｉｏｎａｌ  Ｕｎｉｔ：ＦＵ）を備えてもよい。
【００４５】
少なくとも１つ以上の演算ユニット１２１は、伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算方式で処理してもよい。
【００４６】
少なくとも１つ以上の演算ユニット１２１は、入力データを確認し、確認された結果に応じて当該入力データをレギュラーレイテンシの演算で処理するか、イレギュラーレイテンシの演算で処理するかを決定してもよい。
【００４７】
少なくとも１つ以上の演算ユニット１２１は、演算の所用時間が常に一定であるため、コンパイル時に正確なタイミング算出が可能であり、最適のスケジュールを作り出すことのできる入力データに対してレギュラーレイテンシの演算で処理してもよい。
【００４８】
反対に、少なくとも１つ以上の演算ユニット１２１は、演算の所用時間が不規則な入力データに備えてコンパイル時に１つのレイテンシ値を仮定して先にスケジュールを生成してもよい。ここで、少なくとも１つ以上の演算ユニット１２１は、ランタイムに仮定と他のレイテンシが発生する場合にも長いサイクルの間にストール状態に切り替えることなく、演算能力を保持することができる。
【００４９】
言い換えれば、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置１００は、静的スケジュール基盤のプロセッサ動作を実行しながらもノンブロッキング特性を保持することができる。
【００５０】
少なくとも１つ以上の演算ユニット１２１は、追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を入力バッファ１１０に記録してもよい。
【００５１】
一実施形態に係るプロセッサ１２０は、与えられた入力データに対して適用しなければならない演算をどのような演算ユニットでどのような順序をもって実行するかをコンパイル時に決定してもよい。
【００５２】
一実施形態に係るプロセッサ１２０は、静的スケジュール基盤として、動的スケジュール基盤のプロセッサに比べてハードウェアの大きさが小さくて簡単である。また、一実施形態に係るプロセッサ１２０は、追加レイテンシが発生した分だけのプロセッサ１２０動作をストールしないため、一般的な静的スケジュール基盤のプロセッサがランタイムに発生するレイテンシに対応することのできない問題を解決することができる。
【００５３】
一実施形態に係るプロセッサ１２０が実行する演算中に外部要因に影響を受けることなく実行できる演算は常に一定のレイテンシを発生させる。例えば、キャッシュメモリを参照して演算処理する間にキャッシュヒットされる場合などには選定されたレイテンシ以外に追加レイテンシが発生しない。一実施形態に係るプロセッサ１２０は、このような演算に対してレギュラーレイテンシの演算方式で処理してもよい。
【００５４】
外部メモリアクセスなどの外部要因の影響を受ける動作が含まれた演算や条件に応じて、選択的な動作を行う演算に対して一般的なプロセッサであれば、演算する度にレイテンシが変わり得る。一実施形態に係るプロセッサ１２０は、このような演算についてイレギュラーレイテンシの演算方式に処理してもよい。
【００５５】
例えば、一般的なプロセッサがデータキャッシュによってプロセッサ外部のメモリにアクセス動作する場合、キャッシュヒットまたはミス（ｃａｃｈｅ  ｈｉｔ／ｍｉｓｓ）の有無に応じて動作が変わりつつ、実行に必要なレイテンシが変わることがある。また、同じキャッシュミスの状況でも外部メモリにアクセスするための所要時間が毎度変わるので、実行に必要なレイテンシも変わり得る。
【００５６】
これとは対照的に、一実施形態に係るプロセッサ１２０は、実行する全ての演算のレイテンシを定められた値に指定してもよい。前記決定した値は、全ての演算で同一であるか、実行する全ての演算で同一でなくてもよい。
【００５７】
ここで、一実施形態に係るプロセッサ１２０は、指定されたレイテンシにより最適の実行性能が発揮できるスケジュールを生成することができ、ランタイムには定められたスケジュールに応じてのみ動作する。
【００５８】
もし、ランタイムに特定演算が行われるためにさらに多くの時間が必要な場合は、一実施形態に係るプロセッサ１２０は、システムの効率のために追加レイテンシによりストール状態を維持しないため、特定演算の処理が完了するまで待機しない。また、一実施形態に係るプロセッサ１２０は、追加レイテンシが発生した特定演算を無視して誤ったデータを出力することもない。
【００５９】
言い換えれば、指定されたレイテンシ以外に追加レイテンシが発生した場合、一実施形態に係るプロセッサ１２０は、その演算の結果を用いる次の演算をスケジュールに定められた時点に合わせて実行することができない。言い換えれば、レイテンシが予め指定した値よりも大きければ、その演算の結果を用いる次の演算をスケジュールに定められた時点に合わせて実行できなくなる。
【００６０】
このような状況が発生すると、一般的には追加発生したレイテンシだけプロセッサをストールし、特定演算が完了すれば再び本来のスケジュールの通りに演算実行を再開する。
【００６１】
一実施形態に係るプロセッサ１２０は、指定されたレイテンシ以外に追加レイテンシが発生した場合、特定演算を処理した演算ユニット１２１によって意味のない値であるダミー値を出力してもよい。また、出力されたダミー値に相応する状態ビットは、結果格納信号１４０によって入力バッファ１１０に結果値として格納されてもよい。
【００６２】
入力バッファ１１０は、入力データに対して複数のイレギュラーレイテンシ演算による結果値を格納してもよい。
【００６３】
一実施形態に係るプロセッサ１２０は、各エントリに対してイレギュラーレイテンシ演算の結果値を格納しておいてもよく、結果検索信号１３０によって、特定演算の処理以前にも格納された結果値を検索してもよい。
【００６４】
言い換えれば、一実施形態に係るプロセッサ１２０は、特定演算の処理前に入力される入力データの以前結果値にダミー値に相応する状態ビットが格納され、演算ユニット１２１の再実行が必要であるかを先に確認することができる。すなわち、一実施形態に係るプロセッサ１２０は、イレギュラーレイテンシ演算の場合、演算を開始する時点に先に当該データに対する当該演算の結果値が予め入力バッファに格納されているかの以前結果値を検索してもよい。
【００６５】
結果値が存在すれば、一実施形態に係るプロセッサ１２０は、演算を再実行する代わりにスケジュールに定義された基本レイテンシ後に照会された結果値を出力してもよい。もし、ダミー値に相応する状態ビットが入力されたり、結果値が入力バッファに存在しなければ、一実施形態に係るプロセッサ１２０は当該演算を実際に再実行してもよい。
【００６６】
その後、演算ユニット１２１の実行結果、基本レイテンシ中に演算が完了すれば、一実施形態に係るプロセッサ１２０は有効な演算結果値を出力してもよい。
【００６７】
演算ユニット１２１の実行結果、基本レイテンシ中に演算が完了されなければ、一実施形態に係るプロセッサ１２０はダミー値を出力する。プロセッサ１２０が実際に演算した場合レイテンシと関係なしにその結果値は入力バッファに格納されてもよい。
【００６８】
一実施形態に係るプロセッサ１２０はダミー値を出力し、追加発生したレイテンシだけプロセッサをストールしないだけではなく、ダミー値による誤った結果値を出力しない。
【００６９】
一実施形態に係るプロセッサ１２０は、各入力データに対する最終の実行結果を出力するための全ての中間演算でダミー値の出力があるか否かを確認する。
【００７０】
そのために、一実施形態に係るプロセッサ１２０が指定されたレイテンシ内に演算を終了して正常な出力値を出力し、これを入力バッファ１１０に格納する場合、プロセッサ１２０は完了フラグ信号１５０によって完了フラグを入力バッファ１１０に送信してもよい。ここで、入力バッファ１１０は、格納される出力値に相応する完了フラグを確認して入力データの演算が正常に終了されたことを表現する。
【００７１】
正常に終了した入力データは出力データとして外部に出力され、次の処理に用いられる。正常出力されたエントリは入力バッファ１１０で削除されてもよい。
【００７２】
もし、完了フラグが確認されない入力データの場合はダミー値を含む結果として判断し、入力バッファ１１０で適切な時点に当該入力データを再びプロセッサ１２０に送信し、演算過程を最初から再開してもよい。
【００７３】
言い換えれば、プロセッサ１２０は、各入力データの演算中にイレギュラーレイテンシ演算の結果が基本レイテンシよりも大きい場合を検出し、当該データに対して再び演算するように動作してもよい。ここで、以前ステップにおける処理結果値は、入力バッファ１１０に入力データに対応する位置に格納されてもよい。
【００７４】
これにより、例外的なレイテンシに対しても選定されたスケジュールを保ちながら演算結果が同一に実行することができ、追加レイテンシだけプロセッサ全体をストールしないため、プロセッサの処理性能を向上させることができる。
【００７５】
すなわち、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置１００を用いると、各入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生した場合について、プロセッサ全体が長いサイクルの間にストール状態になって演算能力が低下することを防止することができる。
【００７６】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置１００を用いると、基本レイテンシよりも大きいレイテンシが発生してもプロセッサはストールすることなく当該の演算値のみをダミー値として処理するだけで、続けて次のデータの演算は正常に行うことができる。例えば、演算の最初実行と外部メモリアクセスのような待機中である追加レイテンシ演算が完了するとき、後ほどダミー値として処理されたデータは演算を最初から再演算すればよい。言い換えれば、追加発生したレイテンシだけのストールサイクルを減少させ得る一方、当該データに対して再演算するだけの実行時間のみが追加される。
【００７７】
一般的に、入力データ１件当りプロセッサ演算時間は、１０〜５０サイクル程度が必要とされる。一方、キャッシュメモリアクセス演算の追加レイテンシは１００〜３００サイクル程度が必要とされる。
【００７８】
ここで、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置１００を用いると、追加レイテンシの発生ごとに１００〜３００サイクルストールによるサイクルの無駄遣いを防止することができ、再演算に必要な１０〜５０サイクルのみで性能向上を図ることができる。
【００７９】
図２は、一実施形態に係るノンブロッキング実行装置の入力バッファ２００を説明する図である。
【００８０】
一実施形態に係る入力バッファ２００は、少なくとも１つ以上の入力データに対して入力される順序に応じてエントリごとに区分して格納してもよい。
【００８１】
プロセッサに提供する入力データが外部から供給されれば、入力データは一実施形態に係る入力バッファ２００に格納される。
【００８２】
入力バッファ２００は、格納されたエントリのうち１つのエントリ２１０を選択して実際プロセッサの入力に伝達する。
【００８３】
エントリ２１０は、状態ビット（ｓｔａｔｅ）２１１、入力データ（Ｉｎｐｕｔ  ｄａｔａ）２１２、結果バッファ（ｒｅｓｕｌｔ０〜３）２１３を備えてもよい。
【００８４】
入力バッファ２００がエントリ２１０に対して格納する内容は、まず入力データ２１２そのものとエントリの状態情報、そして複数のイレギュラーレイテンシ演算による結果値である。プロセッサは、エントリ２１０に対してイレギュラーレイテンシ演算の結果値を格納してもよく、格納された結果値を照会してもよい。
【００８５】
具体的に、プロセッサは、各入力データが演算ユニットで処理された後の結果に応じて完了フラグを状態ビット２１１に格納してもよい。プロセッサは、入力バッファの状態ビット２１１を確認して当該入力データ２１２が再実行されなければならないか否かを決定してもよい。
【００８６】
入力データ２１２は演算ユニットで処理される単位として、格納される順に入力バッファ２００に積載されてもよい。
【００８７】
結果バッファ２１３は、演算ユニットで入力データ２１２が処理された後の結果値を格納してもよい。もし、演算ユニットで追加レイテンシが発生する場合、結果バッファ２１３にはダミー値に相応する状態ビットが記録されてもよい。また、結果バッファ２１３にダミー値に相応する状態ビットが記録される場合、状態ビット２１１には完了フラグが記録されない。
【００８８】
プロセッサの入力で伝達されたエントリ２１０は、まず入力バッファ２００から削除されず残っている。エントリ２１０が削除される時点は、プロセッサで全ての処理が完了して出力データが発生する時点である。
【００８９】
図３は、一実施形態に係る静的スケジュールプロセッサ３００を説明するブロック図である。
【００９０】
一実施形態に係る静的スケジュールプロセッサ３００は、演算処理部３１０、判断部３２０、格納処理部３３０を備える。
【００９１】
外部メモリを参照しなければならない場合、同じキャッシュミスの状況でも外部メモリにアクセスするための所要時間が毎回異なることもあるため、実行に必要なレイテンシも異なり得る。
【００９２】
一実施形態に係る静的スケジュールプロセッサ３００は、実行する全ての演算のレイテンシを定められた値に指定してもよい。ここで、一実施形態に係る静的スケジュールプロセッサ３００は、指定されたレイテンシにより最適の実行性能が発揮されるスケジュールを生成し、ランタイムには定められたスケジュールによってのみ動作する。
【００９３】
一実施形態に係る演算処理部３１０は、入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を実行する。
【００９４】
一実施形態に係る判断部３２０は、入力データの演算中に前記複数の演算ユニットのうち少なくとも１つに追加レイテンシが発生するかを判断する。
【００９５】
一実施形態に係る格納処理部３３０は、追加レイテンシが発生する場合にダミー値を出力して入力バッファに格納する。
【００９６】
ここで、一実施形態に係る静的スケジュールプロセッサ３００は、入力データに対する演算をストールせず次の演算を行ってもよい。
【００９７】
一実施形態に係る静的スケジュールプロセッサ３００は、予め設定されたレイテンシにしたがって入力データの演算を処理してもよい。もし、一実施形態に係る演算処理部３１０がデータキャッシュによってプロセッサ外部のメモリにアクセスする場合が発生すると、キャッシュヒットまたはミス（ｃａｃｈｅ  ｈｉｔ／ｍｉｓｓ）の有無に応じて動作が変わりつつ、実行に必要な追加レイテンシが生成されてもよい。
【００９８】
例えば、ランタイムに特定演算が行われるために多くの時間が必要な場合、一実施形態に係る静的スケジュールプロセッサ３００は、システム効率のために追加レイテンシによりストール状態を維持しないことから、特定演算の処理が完了するまで待機しない。また、一実施形態に係る静的スケジュールプロセッサ３００は、追加レイテンシが発生した特定演算を無視して誤ったデータを出力することもない。
【００９９】
言い換えれば、指定されたレイテンシ以外に追加レイテンシが発生した場合、一実施形態に係る静的スケジュールプロセッサ３００は、その演算結果を使用する次の演算をスケジュールに定められた時点に合わせて実行できなくなる。言い換えれば、レイテンシが予め指定された値よりも大きければ、その演算の結果を用いる次の演算をスケジュールに定められた時点に合わせて実行できなくなる。
【０１００】
このような状況が発生すると、一実施形態に係る格納処理部３３０は、追加レイテンシが発生する場合にダミー値を出力して入力バッファに格納してもよい。
【０１０１】
一実施形態に係る演算処理部３１０は、入力バッファから伝達された入力データに対する以前の演算結果値が格納されているかを先に確認する。ここで、演算処理部３１０は、以前の演算結果値が格納されている場合、スケジュールに定義されている基本レイテンシ後に以前の演算結果値を出力してもよい。
【０１０２】
一実施形態に係る演算処理部３１０は、入力バッファに以前の演算結果値が格納されていない場合、入力データの演算を再実行してもよい。
【０１０３】
すなわち、一実施形態に係る静的スケジュールプロセッサ３００を用いると、各入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生した場合、プロセッサ全体が長いサイクルの間にストール状態になって演算能力の低下を防止することができる。
【０１０４】
一実施形態に係る静的スケジュールプロセッサ３００を用いると、基本レイテンシよりも大きいレイテンシが発生しても、プロセッサはストールすることなく当該の演算値のみをダミー値として処理するだけで続けて次のデータの演算は正常に実行できる。そして、後ほどダミー値として処理されたデータは演算を最初から再演算すればよい。言い換えれば、追加発生したレイテンシだけのストールサイクルを減少させ得る一方、当該データに対して再演算するだけの実行時間のみが追加される。
【０１０５】
一般的に、入力データ１件当りプロセッサの演算時間は１０〜５０サイクル程度が必要とされる。一方、キャッシュメモリアクセス演算の追加レイテンシは１００〜３００サイクル程度が必要とされる。
【０１０６】
ここで、一実施形態に係る静的スケジュールプロセッサ３００を用いると、追加レイテンシの発生時ごとに１００〜３００サイクルストールによるサイクルの無駄遣いを防止することができ、再演算に必要な１０〜５０サイクルのみで性能向上を図ることができる。
【０１０７】
図４は、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を説明するフローチャートである。
【０１０８】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、入力バッファを介して入力データをプロセッサに伝達する（Ｓ４０１）。
【０１０９】
次に、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、プロセッサによって伝達される入力データを用いて少なくとも１つ以上の演算を処理する（Ｓ４０２）。
【０１１０】
次に、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、入力バッファを介して入力データをプロセッサに伝達し、少なくとも１つ以上の演算に対する処理結果を格納する（Ｓ４０３）。
【０１１１】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、少なくとも１つ以上の演算を処理するため、伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも１つの演算を用いて処理してもよい。
【０１１２】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、予め設定されたレイテンシにより入力データに対する演算を処理してもよい。この場合、レギュラーレイテンシの演算を適用して入力データの演算を実行してもよい。
【０１１３】
もし、データキャッシュによってプロセッサ外部のメモリにアクセスする場合が発生すると、キャッシュヒットまたはミスの有無に応じて動作が変わり、実行に必要な追加レイテンシが生成することがある。この場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、イレギュラーレイテンシの演算を適用して入力データの演算を実行する。
【０１１４】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、少なくとも１つ以上の演算を処理するために、入力データをレギュラーレイテンシの演算で処理するか、またはイレギュラーレイテンシの演算で処理するかを判断する。
【０１１５】
入力データをイレギュラーレイテンシの演算で処理する場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、入力データに対する以前の演算結果値が入力バッファに格納されているか否かを確認する。
【０１１６】
以前の演算結果値が前記入力バッファに格納されている場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、スケジュールとして定義されている基本レイテンシ後に以前の演算結果値を出力してもよい。
【０１１７】
以前の演算結果値が前記入力バッファに格納されていない場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は演算を実行し、演算の実行中に追加レイテンシが発生するか否かを判断する。
【０１１８】
キャッシュミスなどの理由により演算の実行中に追加レイテンシが発生する場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法はダミー値を出力し、出力されたダミー値に相応する状態ビットを入力バッファに記録して正しい結果値ではないことを表示する。
【０１１９】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、演算の実行中に追加レイテンシが発生しない場合、演算の実行による結果値を出力してもよい。また、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、出力された結果値を入力バッファに記録してもよい。
【０１２０】
結局、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を用いると、各入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生した場合、プロセッサ全体が長いサイクルの間にストール状態になって演算能力の低下を防止することができる。
【０１２１】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を用いると、基本レイテンシよりも大きいレイテンシが発生しても、プロセッサはストールすることなく当該の演算値のみをダミー値として処理するだけで続けて次のデータの演算は正常に実行できる。そして、後ほどダミー値として処理されたデータは演算を最初から再演算すればよい。言い換えれば、追加発生したレイテンシだけのストールサイクルを減少させう得る一方、当該データに対して再演算するだけの実行時間のみが追加される。
【０１２２】
図５は、一実施形態に係るプロセッサの動作方法を説明するフローチャートである。
【０１２３】
一実施形態に係るプロセッサの動作方法は、入力バッファから入力データが伝達されて演算を行い、入力データの演算中に複数の演算ユニットのうち少なくとも１つに追加レイテンシが発生するかを判断し、追加レイテンシが発生する場合にダミー値を出力して入力バッファに格納してもよい。
【０１２４】
具体的に、一実施形態に係るプロセッサの動作方法は、入力バッファから入力データが伝達されて演算を行う前にレギュラー演算で処理するか、イレギュラー演算で処理するかを判断する（Ｓ５０１）。例えば、入力バッファの状態ビットに当該入力データの完了フラグがセッティングされている場合、入力データをレギュラー演算で処理してもよい。
【０１２５】
レギュラー演算で処理する場合、一実施形態に係るプロセッサの動作方法は、入力データに対して選定された演算を実行し（Ｓ５０２）、実行結果による有効値を出力する（Ｓ５０３）。
【０１２６】
イレギュラー演算で処理する場合、一実施形態に係るプロセッサの動作方法は、演算を行うために入力バッファから伝達された入力データに対する以前の演算結果値が格納されているかを確認する（Ｓ５０４）。
【０１２７】
もし、以前の演算結果値が格納されている場合、一実施形態に係るプロセッサの動作方法は、以前の演算結果値を有効値として出力する（Ｓ５０３）。言い換えれば、一実施形態に係るプロセッサの動作方法は、スケジュールとして定義されている基本レイテンシ後に以前の演算結果値を出力してもよい。
【０１２８】
以前の演算結果値が格納されていない場合、一実施形態に係るプロセッサの動作方法は入力データに対する演算を実行する（Ｓ５０５）。
【０１２９】
一実施形態に係るプロセッサの動作方法は、入力データに対する演算途中に追加レイテンシの存在可否を判断する（Ｓ５０６）。例えば、４回の実行サイクルの後にも演算が終了しなければ、演算のための追加レイテンシが決定されてもよい。しかし、追加レイテンシはこのような状況だけで決定されるものと限定されることはない。
【０１３０】
もし、追加レイテンシが発生しなければ、一実施形態に係るプロセッサの動作方法は、実行による結果値を入力バッファに記録する（Ｓ５０７）。また、追加レイテンシが存在すれば、一実施形態に係るプロセッサの動作方法はプロセッサのストールを防止するためにダミー値を出力する（Ｓ５０８）。
【０１３１】
一実施形態に係るプロセッサの動作方法は、出力されたダミー値を入力バッファに格納する（Ｓ５０９）。
【０１３２】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータ読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち１つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、光ディスクのような光磁気媒体、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。プログラム命令の例には、コンパイラによって作られるような機械語コードだけでなく、インタープリタなどを用いてコンピュータによって実行できる高級言語コードが含まれる。前記したハードウェア装置は、本発明の動作を行うために１つ以上のソフトウェアモジュールとして作動するように構成されてもよく、その逆も同様である。
【０１３３】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【０１３４】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【０１３５】
１００：静的スケジュールプロセッサのノンブロッキング実行装置
１１０：入力バッファ
１２０：プロセッサ
１２１：演算ユニット
１３０：結果検索信号
１４０：結果格納信号
１５０：完了フラグ信号
【図４】
2014174994.tif 000003
【図１】
2014174994.tif 000004
【図２】
2014174994.tif 000005
【図３】
2014174994.tif 000006
【図５】
2014174994.tif 000007