【文献】
Andrew Hilton et al.,iCFP : Tolerating All-Level Cache Misses in In-Order Processors,Proceedings of 15th International Symposium on High Performance Architecture (HPCA2009),IEEE,2009年 2月14日,Pages:431-442
【文献】
佐藤寿倫,有田五次郎,可変レイテンシパイプライン技術と演算結果再利用技術の併用による演算レイテンシ削減,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,2002年12月 1日,Vol:J85-D-I,No:12,Pages:1103-1113
【文献】
Toshinori Sato,A Simple Mechanism for Collapsing Instructions under Timing Speculation,IEICE Transactions on Electronics,IEICE,2008年 9月,Pages:1394-1401
(58)【調査した分野】(Int.Cl.,DB名)
前記少なくとも1つ以上の演算ユニットは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記結果バッファに記録することを特徴とする請求項1に記載の静的スケジュールプロセッサのノンブロッキング実行装置。
入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を行う演算処理部であって、前記入力データを、レギュラーレイテンシの演算で処理するか、またはイレギュラーレイテンシの演算で処理するかを判断し、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファの結果バッファに格納されているか否かを確認し、前記以前の演算結果値が前記結果バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力し、前記以前の演算結果値が前記結果バッファに格納されていない場合に演算を実行する、演算処理部と、
前記入力データの演算中に前記複数の演算ユニットのうち少なくとも1つに追加レイテンシが発生するかを判断する判断部と、
前記追加レイテンシが発生する場合にダミー値を出力して前記結果バッファに格納し、前記追加レイテンシが発生しない場合に前記演算の実行による結果値を出力して前記結果バッファに格納し、前記入力データに対する最終演算結果を出力するための全ての中間演算で前記ダミー値を含まない場合に、前記入力バッファの状態レジスタに完了フラグを設定する格納処理部と、
を備え、
前記演算処理部は、前記完了フラグが設定されていない前記入力データに関する演算を後に再実行することを特徴とする静的スケジュールプロセッサ。
前記少なくとも1つ以上の演算を処理するステップは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記結果バッファに記録するステップを含むことを特徴とする請求項4に記載の静的スケジュールプロセッサのノンブロッキング実行方法。
【発明を実施するための形態】
【0014】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置は、伝達される入力データを用いて少なくとも1つ以上の演算を処理するプロセッサと、前記入力データを前記プロセッサに伝達し、前記少なくとも1つ以上の演算に対する処理結果を格納する入力バッファとを含み、前記プロセッサは、前記少なくとも1つ以上の演算をそれぞれ行う少なくとも1つ以上の演算ユニットを含み、前記少なくとも1つ以上の演算ユニットは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも1つの演算を用いて処理する。
【0015】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記入力データを前記レギュラーレイテンシの演算で処理するか、または前記イレギュラーレイテンシの演算で処理するかを判断してもよい。
【0016】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファに格納されているか否かを確認してもよい。
【0017】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記以前の演算結果値が前記入力バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力してもよい。
【0018】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記以前の演算結果値が前記入力バッファに格納されていない場合に演算を実行し、前記演算の実行中に追加レイテンシが発生するか否かを判断してもよい。
【0019】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記演算の実行中に追加レイテンシが発生する場合にダミー値を出力し、前記出力されたダミー値に相応する状態ビットを前記入力バッファに記録してもよい。
【0020】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記入力バッファに記録してもよい。
【0021】
一実施形態に係る前記少なくとも1つ以上の演算ユニットは、前記演算の実行中に追加レイテンシが発生しない場合に前記演算の実行による結果値を出力し、前記出力された結果値を前記入力バッファに記録してもよい。
【0022】
一実施形態に係る前記入力バッファは、状態レジスタ及び結果バッファを含み、前記状態レジスタは、前記入力データに対する状態を格納し、前記結果バッファは、以前の演算結果値を格納してもよい。
【0023】
一実施形態に係る前記状態レジスタは、前記入力データに対して演算を再度行うか否かに対する状態を格納してもよい。
【0024】
一実施形態に係る静的スケジュールプロセッサは、入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を行う演算処理部と、前記入力データの演算中に前記複数の演算ユニットのうち少なくとも1つに追加レイテンシが発生するかを判断する判断部と、前記追加レイテンシが発生する場合にダミー値を出力して前記入力バッファに格納する格納処理部とを備える。
【0025】
一実施形態に係る前記演算処理部は、前記入力バッファから前記伝達された入力データに対する以前の演算結果値が格納されているかを確認し、前記以前の演算結果値が格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力してもよい。
【0026】
一実施形態に係る前記演算処理部は、前記入力バッファから前記伝達された入力データに対する以前の演算結果値が格納されているかを確認し、前記以前の演算結果値が前記入力バッファに格納されていない場合、前記入力データの演算を実行してもよい。
【0027】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、プロセッサで、伝達される入力データを用いて少なくとも1つ以上の演算を処理するステップと、入力バッファで、前記入力データを前記プロセッサに伝達し、前記少なくとも1つ以上の演算に対する処理結果を格納するステップとを含み、前記少なくとも1つ以上の演算を処理するステップは、前記伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも1つの演算を用いて処理するステップを含む。
【0028】
一実施形態に係る前記少なくとも1つ以上の演算を処理するステップは、前記入力データを前記レギュラーレイテンシの演算で処理するか、または前記イレギュラーレイテンシの演算で処理するかを判断するステップを含んでもよい。
【0029】
一実施形態に係る前記少なくとも1つ以上の演算を処理するステップは、前記入力データを前記イレギュラーレイテンシの演算で処理する場合、前記入力データに対する以前の演算結果値が前記入力バッファに格納されているか否かを確認するステップを含んでもよい。
【0030】
一実施形態に係る前記少なくとも1つ以上の演算を処理するステップは、前記以前の演算結果値が前記入力バッファに格納されている場合、スケジュールとして定義されている基本レイテンシ後に前記以前の演算結果値を出力するステップを含んでもよい。
【0031】
一実施形態に係る前記少なくとも1つ以上の演算を処理するステップは、以前の演算結果値が前記入力バッファに格納されていない場合に演算を実行し、前記演算の実行中に追加レイテンシが発生するか否かを判断するステップを含んでもよい。
【0032】
一実施形態に係る前記少なくとも1つ以上の演算を処理するステップは、前記演算の実行中に追加レイテンシが発生する場合にダミー値を出力し、前記出力されたダミー値に相応する状態ビットを前記入力バッファに記録するステップを含んでもよい。
【0033】
一実施形態に係る前記少なくとも1つ以上の演算を処理するステップは、前記追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を前記入力バッファに記録するステップを含んでもよい。
【0034】
一実施形態に係る静的スケジュールプロセッサの動作方法は、複数の演算のうち第1演算の実行中に選択的にダミー値を出力するステップと、前記複数の演算のうち第2演算を実行するステップと、前記第1演算を再実行して前記第1演算が正常終了することによって結果を取得するステップとを含む。
【0035】
一実施形態に係る第1演算の実行時間が選定された値を超過する場合、前記ダミー値が出力されてもよい。
【0036】
一実施形態に係る前記選定された値は、前記第1演算のプロセッサ実行サイクルカウントを含んでもよい。
【0037】
以下、実施形態を添付する図面を参照しながら詳細に説明する。
【0038】
実施形態を説明するにおいて、関連する公知機能または構成に対する具体的な説明が実施形態の要旨を不要に曖昧にすると判断される場合にはその詳細な説明は省略される。そして、本明細書で用いられる用語は実施形態を適切に表現するために用いられる用語として、これはユーザ、運用者の意図、または該当技術が属する分野の慣例などによって変わり得る。したがって、用語に対する定義は本明細書の全般にわたる内容に基づいて定められる。各図面に提示された同一の参照符号は同一の部材を示す。
【0039】
図1は、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置100を説明するブロック図である。
【0040】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置100は、入力バッファ110及びプロセッサ120を備える。
【0041】
以下の「プロセッサ」は、静的スケジュール基盤のプロセッサを含んでもよい。
【0042】
一実施形態に係るプロセッサ120は、伝達される入力データを用いて少なくとも1つ以上の演算を処理する。
【0043】
一実施形態に係る入力バッファ110は、入力データをプロセッサに伝達し、少なくとも1つ以上の演算に対する処理結果を格納してもよい。
【0044】
ここでのプロセッサ120は、少なくとも1つ以上の演算をそれぞれ行う少なくとも1つ以上の演算ユニット121(Functional Unit:FU)を備えてもよい。
【0045】
少なくとも1つ以上の演算ユニット121は、伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも1つの演算方式で処理してもよい。
【0046】
少なくとも1つ以上の演算ユニット121は、入力データを確認し、確認された結果に応じて当該入力データをレギュラーレイテンシの演算で処理するか、イレギュラーレイテンシの演算で処理するかを決定してもよい。
【0047】
少なくとも1つ以上の演算ユニット121は、演算の所用時間が常に一定であるため、コンパイル時に正確なタイミング算出が可能であり、最適のスケジュールを作り出すことのできる入力データに対してレギュラーレイテンシの演算で処理してもよい。
【0048】
反対に、少なくとも1つ以上の演算ユニット121は、演算の所用時間が不規則な入力データに備えてコンパイル時に1つのレイテンシ値を仮定して先にスケジュールを生成してもよい。ここで、少なくとも1つ以上の演算ユニット121は、ランタイムに仮定と他のレイテンシが発生する場合にも長いサイクルの間にストール状態に切り替えることなく、演算能力を保持することができる。
【0049】
言い換えれば、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置100は、静的スケジュール基盤のプロセッサ動作を実行しながらもノンブロッキング特性を保持することができる。
【0050】
少なくとも1つ以上の演算ユニット121は、追加レイテンシが発生した演算の実行が終了した後、演算の最終的な結果値を入力バッファ110に記録してもよい。
【0051】
一実施形態に係るプロセッサ120は、与えられた入力データに対して適用しなければならない演算をどのような演算ユニットでどのような順序をもって実行するかをコンパイル時に決定してもよい。
【0052】
一実施形態に係るプロセッサ120は、静的スケジュール基盤として、動的スケジュール基盤のプロセッサに比べてハードウェアの大きさが小さくて簡単である。また、一実施形態に係るプロセッサ120は、追加レイテンシが発生した分だけのプロセッサ120動作をストールしないため、一般的な静的スケジュール基盤のプロセッサがランタイムに発生するレイテンシに対応することのできない問題を解決することができる。
【0053】
一実施形態に係るプロセッサ120が実行する演算中に外部要因に影響を受けることなく実行できる演算は常に一定のレイテンシを発生させる。例えば、キャッシュメモリを参照して演算処理する間にキャッシュヒットされる場合などには選定されたレイテンシ以外に追加レイテンシが発生しない。一実施形態に係るプロセッサ120は、このような演算に対してレギュラーレイテンシの演算方式で処理してもよい。
【0054】
外部メモリアクセスなどの外部要因の影響を受ける動作が含まれた演算や条件に応じて、選択的な動作を行う演算に対して一般的なプロセッサであれば、演算する度にレイテンシが変わり得る。一実施形態に係るプロセッサ120は、このような演算についてイレギュラーレイテンシの演算方式に処理してもよい。
【0055】
例えば、一般的なプロセッサがデータキャッシュによってプロセッサ外部のメモリにアクセス動作する場合、キャッシュヒットまたはミス(cache hit/miss)の有無に応じて動作が変わりつつ、実行に必要なレイテンシが変わることがある。また、同じキャッシュミスの状況でも外部メモリにアクセスするための所要時間が毎度変わるので、実行に必要なレイテンシも変わり得る。
【0056】
これとは対照的に、一実施形態に係るプロセッサ120は、実行する全ての演算のレイテンシを定められた値に指定してもよい。前記決定した値は、全ての演算で同一であるか、実行する全ての演算で同一でなくてもよい。
【0057】
ここで、一実施形態に係るプロセッサ120は、指定されたレイテンシにより最適の実行性能が発揮できるスケジュールを生成することができ、ランタイムには定められたスケジュールに応じてのみ動作する。
【0058】
もし、ランタイムに特定演算が行われるためにさらに多くの時間が必要な場合は、一実施形態に係るプロセッサ120は、システムの効率のために追加レイテンシによりストール状態を維持しないため、特定演算の処理が完了するまで待機しない。また、一実施形態に係るプロセッサ120は、追加レイテンシが発生した特定演算を無視して誤ったデータを出力することもない。
【0059】
言い換えれば、指定されたレイテンシ以外に追加レイテンシが発生した場合、一実施形態に係るプロセッサ120は、その演算の結果を用いる次の演算をスケジュールに定められた時点に合わせて実行することができない。言い換えれば、レイテンシが予め指定した値よりも大きければ、その演算の結果を用いる次の演算をスケジュールに定められた時点に合わせて実行できなくなる。
【0060】
このような状況が発生すると、一般的には追加発生したレイテンシだけプロセッサをストールし、特定演算が完了すれば再び本来のスケジュールの通りに演算実行を再開する。
【0061】
一実施形態に係るプロセッサ120は、指定されたレイテンシ以外に追加レイテンシが発生した場合、特定演算を処理した演算ユニット121によって意味のない値であるダミー値を出力してもよい。また、出力されたダミー値に相応する状態ビットは、結果格納信号140によって入力バッファ110に結果値として格納されてもよい。
【0062】
入力バッファ110は、入力データに対して複数のイレギュラーレイテンシ演算による結果値を格納してもよい。
【0063】
一実施形態に係るプロセッサ120は、各エントリに対してイレギュラーレイテンシ演算の結果値を格納しておいてもよく、結果検索信号130によって、特定演算の処理以前にも格納された結果値を検索してもよい。
【0064】
言い換えれば、一実施形態に係るプロセッサ120は、特定演算の処理前に入力される入力データの以前結果値にダミー値に相応する状態ビットが格納され、演算ユニット121の再実行が必要であるかを先に確認することができる。すなわち、一実施形態に係るプロセッサ120は、イレギュラーレイテンシ演算の場合、演算を開始する時点に先に当該データに対する当該演算の結果値が予め入力バッファに格納されているかの以前結果値を検索してもよい。
【0065】
結果値が存在すれば、一実施形態に係るプロセッサ120は、演算を再実行する代わりにスケジュールに定義された基本レイテンシ後に照会された結果値を出力してもよい。もし、ダミー値に相応する状態ビットが入力されたり、結果値が入力バッファに存在しなければ、一実施形態に係るプロセッサ120は当該演算を実際に再実行してもよい。
【0066】
その後、演算ユニット121の実行結果、基本レイテンシ中に演算が完了すれば、一実施形態に係るプロセッサ120は有効な演算結果値を出力してもよい。
【0067】
演算ユニット121の実行結果、基本レイテンシ中に演算が完了されなければ、一実施形態に係るプロセッサ120はダミー値を出力する。プロセッサ120が実際に演算した場合レイテンシと関係なしにその結果値は入力バッファに格納されてもよい。
【0068】
一実施形態に係るプロセッサ120はダミー値を出力し、追加発生したレイテンシだけプロセッサをストールしないだけではなく、ダミー値による誤った結果値を出力しない。
【0069】
一実施形態に係るプロセッサ120は、各入力データに対する最終の実行結果を出力するための全ての中間演算でダミー値の出力があるか否かを確認する。
【0070】
そのために、一実施形態に係るプロセッサ120が指定されたレイテンシ内に演算を終了して正常な出力値を出力し、これを入力バッファ110に格納する場合、プロセッサ120は完了フラグ信号150によって完了フラグを入力バッファ110に送信してもよい。ここで、入力バッファ110は、格納される出力値に相応する完了フラグを確認して入力データの演算が正常に終了されたことを表現する。
【0071】
正常に終了した入力データは出力データとして外部に出力され、次の処理に用いられる。正常出力されたエントリは入力バッファ110で削除されてもよい。
【0072】
もし、完了フラグが確認されない入力データの場合はダミー値を含む結果として判断し、入力バッファ110で適切な時点に当該入力データを再びプロセッサ120に送信し、演算過程を最初から再開してもよい。
【0073】
言い換えれば、プロセッサ120は、各入力データの演算中にイレギュラーレイテンシ演算の結果が基本レイテンシよりも大きい場合を検出し、当該データに対して再び演算するように動作してもよい。ここで、以前ステップにおける処理結果値は、入力バッファ110に入力データに対応する位置に格納されてもよい。
【0074】
これにより、例外的なレイテンシに対しても選定されたスケジュールを保ちながら演算結果が同一に実行することができ、追加レイテンシだけプロセッサ全体をストールしないため、プロセッサの処理性能を向上させることができる。
【0075】
すなわち、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置100を用いると、各入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生した場合について、プロセッサ全体が長いサイクルの間にストール状態になって演算能力が低下することを防止することができる。
【0076】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置100を用いると、基本レイテンシよりも大きいレイテンシが発生してもプロセッサはストールすることなく当該の演算値のみをダミー値として処理するだけで、続けて次のデータの演算は正常に行うことができる。例えば、演算の最初実行と外部メモリアクセスのような待機中である追加レイテンシ演算が完了するとき、後ほどダミー値として処理されたデータは演算を最初から再演算すればよい。言い換えれば、追加発生したレイテンシだけのストールサイクルを減少させ得る一方、当該データに対して再演算するだけの実行時間のみが追加される。
【0077】
一般的に、入力データ1件当りプロセッサ演算時間は、10〜50サイクル程度が必要とされる。一方、キャッシュメモリアクセス演算の追加レイテンシは100〜300サイクル程度が必要とされる。
【0078】
ここで、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行装置100を用いると、追加レイテンシの発生ごとに100〜300サイクルストールによるサイクルの無駄遣いを防止することができ、再演算に必要な10〜50サイクルのみで性能向上を図ることができる。
【0079】
図2は、一実施形態に係るノンブロッキング実行装置の入力バッファ200を説明する図である。
【0080】
一実施形態に係る入力バッファ200は、少なくとも1つ以上の入力データに対して入力される順序に応じてエントリごとに区分して格納してもよい。
【0081】
プロセッサに提供する入力データが外部から供給されれば、入力データは一実施形態に係る入力バッファ200に格納される。
【0082】
入力バッファ200は、格納されたエントリのうち1つのエントリ210を選択して実際プロセッサの入力に伝達する。
【0083】
エントリ210は、状態ビット(state)211、入力データ(Input data)212、結果バッファ(result0〜3)213を備えてもよい。
【0084】
入力バッファ200がエントリ210に対して格納する内容は、まず入力データ212そのものとエントリの状態情報、そして複数のイレギュラーレイテンシ演算による結果値である。プロセッサは、エントリ210に対してイレギュラーレイテンシ演算の結果値を格納してもよく、格納された結果値を照会してもよい。
【0085】
具体的に、プロセッサは、各入力データが演算ユニットで処理された後の結果に応じて完了フラグを状態ビット211に格納してもよい。プロセッサは、入力バッファの状態ビット211を確認して当該入力データ212が再実行されなければならないか否かを決定してもよい。
【0086】
入力データ212は演算ユニットで処理される単位として、格納される順に入力バッファ200に積載されてもよい。
【0087】
結果バッファ213は、演算ユニットで入力データ212が処理された後の結果値を格納してもよい。もし、演算ユニットで追加レイテンシが発生する場合、結果バッファ213にはダミー値に相応する状態ビットが記録されてもよい。また、結果バッファ213にダミー値に相応する状態ビットが記録される場合、状態ビット211には完了フラグが記録されない。
【0088】
プロセッサの入力で伝達されたエントリ210は、まず入力バッファ200から削除されず残っている。エントリ210が削除される時点は、プロセッサで全ての処理が完了して出力データが発生する時点である。
【0089】
図3は、一実施形態に係る静的スケジュールプロセッサ300を説明するブロック図である。
【0090】
一実施形態に係る静的スケジュールプロセッサ300は、演算処理部310、判断部320、格納処理部330を備える。
【0091】
外部メモリを参照しなければならない場合、同じキャッシュミスの状況でも外部メモリにアクセスするための所要時間が毎回異なることもあるため、実行に必要なレイテンシも異なり得る。
【0092】
一実施形態に係る静的スケジュールプロセッサ300は、実行する全ての演算のレイテンシを定められた値に指定してもよい。ここで、一実施形態に係る静的スケジュールプロセッサ300は、指定されたレイテンシにより最適の実行性能が発揮されるスケジュールを生成し、ランタイムには定められたスケジュールによってのみ動作する。
【0093】
一実施形態に係る演算処理部310は、入力バッファから入力データが伝達され、複数の演算ユニットを用いて演算を実行する。
【0094】
一実施形態に係る判断部320は、入力データの演算中に前記複数の演算ユニットのうち少なくとも1つに追加レイテンシが発生するかを判断する。
【0095】
一実施形態に係る格納処理部330は、追加レイテンシが発生する場合にダミー値を出力して入力バッファに格納する。
【0096】
ここで、一実施形態に係る静的スケジュールプロセッサ300は、入力データに対する演算をストールせず次の演算を行ってもよい。
【0097】
一実施形態に係る静的スケジュールプロセッサ300は、予め設定されたレイテンシにしたがって入力データの演算を処理してもよい。もし、一実施形態に係る演算処理部310がデータキャッシュによってプロセッサ外部のメモリにアクセスする場合が発生すると、キャッシュヒットまたはミス(cache hit/miss)の有無に応じて動作が変わりつつ、実行に必要な追加レイテンシが生成されてもよい。
【0098】
例えば、ランタイムに特定演算が行われるために多くの時間が必要な場合、一実施形態に係る静的スケジュールプロセッサ300は、システム効率のために追加レイテンシによりストール状態を維持しないことから、特定演算の処理が完了するまで待機しない。また、一実施形態に係る静的スケジュールプロセッサ300は、追加レイテンシが発生した特定演算を無視して誤ったデータを出力することもない。
【0099】
言い換えれば、指定されたレイテンシ以外に追加レイテンシが発生した場合、一実施形態に係る静的スケジュールプロセッサ300は、その演算結果を使用する次の演算をスケジュールに定められた時点に合わせて実行できなくなる。言い換えれば、レイテンシが予め指定された値よりも大きければ、その演算の結果を用いる次の演算をスケジュールに定められた時点に合わせて実行できなくなる。
【0100】
このような状況が発生すると、一実施形態に係る格納処理部330は、追加レイテンシが発生する場合にダミー値を出力して入力バッファに格納してもよい。
【0101】
一実施形態に係る演算処理部310は、入力バッファから伝達された入力データに対する以前の演算結果値が格納されているかを先に確認する。ここで、演算処理部310は、以前の演算結果値が格納されている場合、スケジュールに定義されている基本レイテンシ後に以前の演算結果値を出力してもよい。
【0102】
一実施形態に係る演算処理部310は、入力バッファに以前の演算結果値が格納されていない場合、入力データの演算を再実行してもよい。
【0103】
すなわち、一実施形態に係る静的スケジュールプロセッサ300を用いると、各入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生した場合、プロセッサ全体が長いサイクルの間にストール状態になって演算能力の低下を防止することができる。
【0104】
一実施形態に係る静的スケジュールプロセッサ300を用いると、基本レイテンシよりも大きいレイテンシが発生しても、プロセッサはストールすることなく当該の演算値のみをダミー値として処理するだけで続けて次のデータの演算は正常に実行できる。そして、後ほどダミー値として処理されたデータは演算を最初から再演算すればよい。言い換えれば、追加発生したレイテンシだけのストールサイクルを減少させ得る一方、当該データに対して再演算するだけの実行時間のみが追加される。
【0105】
一般的に、入力データ1件当りプロセッサの演算時間は10〜50サイクル程度が必要とされる。一方、キャッシュメモリアクセス演算の追加レイテンシは100〜300サイクル程度が必要とされる。
【0106】
ここで、一実施形態に係る静的スケジュールプロセッサ300を用いると、追加レイテンシの発生時ごとに100〜300サイクルストールによるサイクルの無駄遣いを防止することができ、再演算に必要な10〜50サイクルのみで性能向上を図ることができる。
【0107】
図4は、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を説明するフローチャートである。
【0108】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、入力バッファを介して入力データをプロセッサに伝達する(S401)。
【0109】
次に、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、プロセッサによって伝達される入力データを用いて少なくとも1つ以上の演算を処理する(S402)。
【0110】
次に、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、入力バッファを介して入力データをプロセッサに伝達し、少なくとも1つ以上の演算に対する処理結果を格納する(S403)。
【0111】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、少なくとも1つ以上の演算を処理するため、伝達される入力データをレギュラーレイテンシの演算及びイレギュラーレイテンシの演算のうち少なくとも1つの演算を用いて処理してもよい。
【0112】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、予め設定されたレイテンシにより入力データに対する演算を処理してもよい。この場合、レギュラーレイテンシの演算を適用して入力データの演算を実行してもよい。
【0113】
もし、データキャッシュによってプロセッサ外部のメモリにアクセスする場合が発生すると、キャッシュヒットまたはミスの有無に応じて動作が変わり、実行に必要な追加レイテンシが生成することがある。この場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、イレギュラーレイテンシの演算を適用して入力データの演算を実行する。
【0114】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、少なくとも1つ以上の演算を処理するために、入力データをレギュラーレイテンシの演算で処理するか、またはイレギュラーレイテンシの演算で処理するかを判断する。
【0115】
入力データをイレギュラーレイテンシの演算で処理する場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、入力データに対する以前の演算結果値が入力バッファに格納されているか否かを確認する。
【0116】
以前の演算結果値が前記入力バッファに格納されている場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、スケジュールとして定義されている基本レイテンシ後に以前の演算結果値を出力してもよい。
【0117】
以前の演算結果値が前記入力バッファに格納されていない場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は演算を実行し、演算の実行中に追加レイテンシが発生するか否かを判断する。
【0118】
キャッシュミスなどの理由により演算の実行中に追加レイテンシが発生する場合、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法はダミー値を出力し、出力されたダミー値に相応する状態ビットを入力バッファに記録して正しい結果値ではないことを表示する。
【0119】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、演算の実行中に追加レイテンシが発生しない場合、演算の実行による結果値を出力してもよい。また、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法は、出力された結果値を入力バッファに記録してもよい。
【0120】
結局、一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を用いると、各入力データに対する演算中に基本レイテンシよりも著しく大きいレイテンシが発生した場合、プロセッサ全体が長いサイクルの間にストール状態になって演算能力の低下を防止することができる。
【0121】
一実施形態に係る静的スケジュールプロセッサのノンブロッキング実行方法を用いると、基本レイテンシよりも大きいレイテンシが発生しても、プロセッサはストールすることなく当該の演算値のみをダミー値として処理するだけで続けて次のデータの演算は正常に実行できる。そして、後ほどダミー値として処理されたデータは演算を最初から再演算すればよい。言い換えれば、追加発生したレイテンシだけのストールサイクルを減少させう得る一方、当該データに対して再演算するだけの実行時間のみが追加される。
【0122】
図5は、一実施形態に係るプロセッサの動作方法を説明するフローチャートである。
【0123】
一実施形態に係るプロセッサの動作方法は、入力バッファから入力データが伝達されて演算を行い、入力データの演算中に複数の演算ユニットのうち少なくとも1つに追加レイテンシが発生するかを判断し、追加レイテンシが発生する場合にダミー値を出力して入力バッファに格納してもよい。
【0124】
具体的に、一実施形態に係るプロセッサの動作方法は、入力バッファから入力データが伝達されて演算を行う前にレギュラー演算で処理するか、イレギュラー演算で処理するかを判断する(S501)。例えば、入力バッファの状態ビットに当該入力データの完了フラグがセッティングされている場合、入力データをレギュラー演算で処理してもよい。
【0125】
レギュラー演算で処理する場合、一実施形態に係るプロセッサの動作方法は、入力データに対して選定された演算を実行し(S502)、実行結果による有効値を出力する(S503)。
【0126】
イレギュラー演算で処理する場合、一実施形態に係るプロセッサの動作方法は、演算を行うために入力バッファから伝達された入力データに対する以前の演算結果値が格納されているかを確認する(S504)。
【0127】
もし、以前の演算結果値が格納されている場合、一実施形態に係るプロセッサの動作方法は、以前の演算結果値を有効値として出力する(S503)。言い換えれば、一実施形態に係るプロセッサの動作方法は、スケジュールとして定義されている基本レイテンシ後に以前の演算結果値を出力してもよい。
【0128】
以前の演算結果値が格納されていない場合、一実施形態に係るプロセッサの動作方法は入力データに対する演算を実行する(S505)。
【0129】
一実施形態に係るプロセッサの動作方法は、入力データに対する演算途中に追加レイテンシの存在可否を判断する(S506)。例えば、4回の実行サイクルの後にも演算が終了しなければ、演算のための追加レイテンシが決定されてもよい。しかし、追加レイテンシはこのような状況だけで決定されるものと限定されることはない。
【0130】
もし、追加レイテンシが発生しなければ、一実施形態に係るプロセッサの動作方法は、実行による結果値を入力バッファに記録する(S507)。また、追加レイテンシが存在すれば、一実施形態に係るプロセッサの動作方法はプロセッサのストールを防止するためにダミー値を出力する(S508)。
【0131】
一実施形態に係るプロセッサの動作方法は、出力されたダミー値を入力バッファに格納する(S509)。
【0132】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータ読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち1つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、光ディスクのような光磁気媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。プログラム命令の例には、コンパイラによって作られるような機械語コードだけでなく、インタープリタなどを用いてコンピュータによって実行できる高級言語コードが含まれる。前記したハードウェア装置は、本発明の動作を行うために1つ以上のソフトウェアモジュールとして作動するように構成されてもよく、その逆も同様である。
【0133】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【0134】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。