(57)【要約】【課題】パイプライン処理をより一層高速化することができる情報処理装置、情報処理方法および情報処理プログラムの提供を図る。【解決手段】第１データＡを入力としてパイプライン処理を行う演算部10f〜10hと、前記演算部10fの演算結果Ｓに基づいて、前記第１データＡとは異なる第２データＢを前記演算部10hに入力して処理を実行するか否かを判定する判定部１４と、を有する情報処理装置１であって、前記演算部10hは、前記判定部１４が前記第２データＢを前記演算部10hに入力して処理を実行すると判定した場合、前記第２データＢを使用して処理を実行する前記演算部10hの演算Ｈを中断すると共に、前記第２データＢが入力されるまで、前記第１データＡを入力として処理を実行する前記演算部10f，10gの演算Ｆ，Ｇを継続し、前記第２データＢが入力されたときは、中断された前記第２データＢを使用して処理を実行する前記演算部10hの演算Ｈを行う。【選択図】図９
2019028865.tif 000002
【特許請求の範囲】
【請求項１】
第１データを入力としてパイプライン処理を行う演算部と、
前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有する情報処理装置であって、
前記演算部は、前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断すると共に、前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う、
ことを特徴とする情報処理装置。
【請求項２】
前記第１データおよび前記第２データは、ホストからの入力データであり、
前記判定部は、前記演算部の演算結果に基づく再実行制御信号と共に、前記入力データが再実行の用途か否かを示す再実行入力フラグを受け取り、前記第２データを前記演算部に入力して処理を再実行するか否かを判定し、前記情報処理装置により処理が行われた出力データと共に、前記出力データは再実行が必要か否かを示す再実行出力フラグを出力する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記演算部は、
前記第１データを受け取って第１演算を行う第１演算部と、
前記第１演算部の出力を受け取って第２演算を行う第２演算部と、
前記第１演算部の出力と共に、前記第２データを受け取って第３演算を行う第３演算部と、を含み、
前記情報処理装置は、さらに、
前記第１演算部の出力を中間データとして保存する記憶部を有し、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記中間データを、前記記憶部に保存し、
前記第２データが入力されたときは、前記記憶部に保存された前記中間データを、前記第２データと共に、前記第３演算部に入力して前記第３演算を行う、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶部は、複数の前記中間データを保持して順番に出力するＦＩＦＯバッファである、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記記憶部の空き容量が無くなった場合、或いは、所定の閾値よりも低下して無くなりそうになった場合には、新たな前記中間データを前記記憶部に保存せずに廃棄する、
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記記憶部の空き容量が無くなった場合、或いは、所定の閾値よりも低下して無くなりそうになった場合には、新たな前記中間データを前記記憶部に保存せずに前記ホストに出力して退避させる、
ことを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記記憶部は、前記中間データと共に、前記中間データを使用して行う再実行に関連する付加情報を保存する、
ことを特徴とする請求項３乃至請求項６のいずれか１項に記載の情報処理装置。
【請求項８】
前記記憶部は、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定する前に、前記第２データを、前記ホストから受け取って保存する、
ことを特徴とする請求項３乃至請求項７のいずれか１項に記載の情報処理装置。
【請求項９】
第１データを入力としてパイプライン処理を行う演算部と、前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有し、前記演算部により処理を実行する情報処理方法であって、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断し、
前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、
前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う、
ことを特徴とする情報処理方法。
【請求項１０】
第１データを入力としてパイプライン処理を行う演算部と、前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有する情報処理装置の情報処理プログラムであって、
前記情報処理装置を制御するホストのＣＰＵに、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断し、
前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、
前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う、処理を実行させる、
ことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
近年、高性能コンピューティング(ＨＰＣ: High-Performance Computing）等の大容量データを用いるアプリケーションは、例えば、有限要素法、電磁場解析および流体解析といった高速および大規模の科学技術計算分野において利用されている。このような配列データを用いるアプリケーションは、例えば、ＦＰＧＡ(Field-Programmable Gate Array)やＧＰＵ(Graphics Processing Unit)を使用したアクセラレータとしてハードウェア化することで、より一層の高速化が可能なものと考えられている。また、最近では、さらなる高速化が可能なアクセラレータとして、ＧＰＧＰＵ(General-Purpose computing on Graphics Processing Units)も使用されるようになってきている。
【０００３】
すなわち、現状では、例えば、ＣＰＵ(Central Processing Unit)単体の大きな性能向上が望めないため、ＦＰＧＡやＧＰＵ(ＧＰＧＰＵ)といった専用ハードウェアを用いたアクセラレータが注目され、利用されるようになっている。ここで、一般的なアクセラレータは、例えば、データバスを介してホストの大容量メモリやストレージに格納されているデータを読み書きする。しかしながら、データバスのデータ転送帯域(転送速度)は、例えば、ハードウェアの制約等により、ＣＰＵに比べて広くすることが困難である。その一方で、アクセラレータにおける演算回路の演算性能は、ＣＰＵよりも大きく優っている。そのため、アクセラレータの演算性能を最大限に引き出すためには、例えば、アクセラレータの演算回路が使うデータを、正に必要とされるタイミングでデータバスから供給することが求められる。
【０００４】
すなわち、ＦＰＧＡ等を用いたアクセラレータは、その演算性能はＣＰＵよりもはるかに優れているにも関わらず、例えば、データバスのデータ転送特性により制限されている。そこで、ＦＰＧＡ等を用いたアクセラレータにおける性能を向上させる技術として、パイプライン処理が知られている。このパイプライン処理は、例えば、互いの出力が入力になるように処理を複数段の演算回路(演算部)に分割し、それぞれの演算部を同時に動作させることにより、処理の並列性を高める回路構成方法である。
【０００５】
従来、パイプライン処理をより一層高速化するための情報処理技術としては、様々な提案がなされている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−０５３１８９号公報
【特許文献２】特開平０５−１５８６８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述したように、ＦＰＧＡ等を用いたアクセラレータでは、パイプライン処理が利用されているが、例えば、多種類のデータセットを取り扱うアプリケーションで、かつ、その実行中に動的に使うデータセットが変動する場合には、性能の低下を招く虞がある。
【０００８】
すなわち、ＦＰＧＡ等を用いたアクセラレータは、例えば、演算性能は高いが、データ転送帯域が狭いため、パイプライン段数は増加する傾向にある。このようなパイプライン段数の多いアクセラレータ(情報処理装置)において、使用するデータセットが動的に変動する場合、新たな入力データをホストに要求し、或いは、パイプライン処理をリセットする等により、性能が劣化することになる。
【０００９】
そのため、例えば、可能性がある全てのデータセットをホストからアクセラレータに送信することが考えられる。しかしながら、この場合、使用されずに無駄になるデータもアクセラレータに送信することになるため、データ転送速度が遅くなり、パイプライン処理の性能劣化を招く虞がある。
【００１０】
また、パイプラインの実行パスに分岐が無くなるように、実行パスを分割することも考えられる。しかしながら、この場合も、例えば、分割点での中間データをアクセラレータの出力と入力に接続することになるため、やはり、パイプライン処理の性能劣化を招く虞がある。
【課題を解決するための手段】
【００１１】
一実施形態によれば、第１データを入力としてパイプライン処理を行う演算部と、前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有する情報処理装置が提供される。
【００１２】
前記演算部は、前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断すると共に、前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う。
【発明の効果】
【００１３】
開示の情報処理装置、情報処理方法および情報処理プログラムは、パイプライン処理をより一層高速化することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理サーバの一例を模式的に示すブロック図である。
【図２】図２は、情報処理装置におけるパイプライン処理の一例を説明するための図である。
【図３】図３は、情報処理装置上のパイプライン回路に有限要素法アプリケーションを実装した場合の動作の一例を説明するための図である。
【図４】図４は、情報処理装置におけるパイプライン処理の他の例を説明するための図である。
【図５】図５は、情報処理装置により処理されるアプリケーションの一例としての弾塑性有限要素法での接触解析を説明するための図である。
【図６】図６は、情報処理装置における解決手法の一例を説明するための図である。
【図７】図７は、情報処理装置における解決手法の他の例を説明するための図である。
【図８】図８は、本実施形態に係る情報処理装置を模式的に示すブロック図である。
【図９】図９は、情報処理装置の第１実施例を模式的に示すブロック図である。
【図１０】図１０は、図９に示す情報処理装置の動作の例を説明するための図(その１)である。
【図１１】図１１は、図９に示す情報処理装置の動作の例を説明するための図(その２)である。
【図１２】図１２は、図９に示す情報処理装置の動作の例を説明するための図(その３)である。
【図１３】図１３は、図９に示す情報処理装置におけるパイプライン処理の一例を説明するための図である。
【図１４】図１４は、情報処理装置の第２実施例を説明するための図である。
【図１５】図１５は、情報処理装置の第３実施例を説明するための図である。
【図１６】図１６は、情報処理装置の第４実施例を説明するための図である。
【図１７】図１７は、情報処理装置の第５実施例を説明するための図である。
【図１８】図１８は、情報処理装置の第６実施例を説明するための図である。
【発明を実施するための形態】
【００１５】
まず、情報処理装置、情報処理方法および情報処理プログラムの実施例を詳述する前に、情報処理装置の例およびその課題を、図１〜図７を参照して説明する。図１は、情報処理サーバの一例を模式的に示すブロック図である。
【００１６】
図１に示されるように、情報処理サーバ１００は、ホスト２，バス(データバス)３およびアクセラレータ１を含み、ホスト２は、ＣＰＵ２１およびメモリ２２を含む。ここで、アクセラレータ(情報処理装置)１としては、例えば、演算回路１０を含むＦＰＧＡが使用されている。なお、情報処理装置１としては、例えば、ＦＰＧＡに限定されるものではなく、例えば、ＧＰＵやＧＰＧＰＵといった専用ハードウェアを用いたアクセラレータであってもよい。
【００１７】
情報処理サーバ１００において、ＦＰＧＡ等を用いたアクセラレータ１における演算回路１０は、例えば、データバス３を介して、ホスト２の大容量のメモリ２２に格納されているデータを読み出し、また、メモリ２２にデータを書き込むようになっている。
【００１８】
ところで、データバス３のデータ転送帯域は、例えば、ハードウェアの制約等により、ＣＰＵ２１に比べて広くすることが難しい。そ一方で、アクセラレータ１における演算回路１０の演算性能は、ＣＰＵ２１よりも大きく優っている。そのため、アクセラレータ１の演算性能を最大限に引き出すためには、例えば、アクセラレータ１の演算回路１０が使うデータを、正に必要とされるタイミングでデータバス３から供給することが求められている。
【００１９】
ところで、ハードウェアの性能を向上させる技術として、パイプライン処理が利用されている。図２は、情報処理装置におけるパイプライン処理の一例を説明するための図であり、図２(a)は、アクセラレータ１の構成を模式的に示すブロック図である。また、図２(b)は、図２(a)に示すアクセラレータ１により処理される個々のデータに対するパイプライン実行の一例を示す図である。
【００２０】
図２(a)に示されるように、パイプライン処理とは、演算回路１０を、互いの出力が入力となるように複数段の演算部１０ｆ，１０ｇに分割し、それぞれの演算部１０ｆ，１０ｇを同時に動作させることにより処理の並列性を高める回路構成手法である。
【００２１】
具体的に、図２(a)に示すアクセラレータ１では、演算回路１０として、第１演算部１０ｆおよび第２演算部１０ｇの２つの演算部が設けられている。すなわち、第１演算部１０ｆは、入力としてＡをホスト(２)から読み込んで演算Ｆを行ってデータ(中間データ)Ｚを出力し、第２演算部１０ｇは、入力としてＺを第１演算部１０ｆから読み込んで演算Ｇを行ってデータ(出力データ)Ｘをホスト２に出力する。
【００２２】
図２(b)に示されるように、パイプライン処理は、個々のデータＡに着目すると、毎時刻で処理される演算が、入力データＡ(Ａ１，Ａ２，…)、演算Ｆ(Ｆ１，Ｆ２，…)、演算Ｇ(Ｇ１，Ｇ２，…)、および、出力データＸ(Ｘ１，Ｘ２，…)へと移り変わる。これにより、アクセラレータ１全体としては、データＡに対応するデータＸを出力する前に、連続してＡを読み込むことができ、時間当たりの処理性能(スループット：throughput)を向上させることが可能になる。
【００２３】
ところで、パイプライン処理での高い処理性能を実現するには、入力データＡが滞りなく供給されることが求められる。しかしながら、例えば、アクセラレータ１では、その演算性能に対してデータ転送帯域が狭いという事情があるため、パイプライン回路の段数は多く(深く)なる、すなわち、パイプライン段数は増加する傾向にある。このパイプライン段数の増加は、例えば、データ転送帯域は狭いが、演算性能は高いＦＰＧＡ等のアクセラレータ１において顕著なものとなっている。
【００２４】
図３は、情報処理装置上のパイプライン回路に有限要素法アプリケーションを実装した場合の動作の一例を説明するための図である。図３に示す例は、例えば、最初に、２４クロックサイクルかけてデータが入力されてから、２７１段のパイプラインステージによる演算処理の後に、データが出力される様子を示している。従って、図３に示す例では、データ入力時間(２４クロックサイクル)の１０倍の時間(２７１クロックサイクル)を演算処理にかけることによって、効率的なパイプライン処理が実現されている。
【００２５】
図４は、情報処理装置におけるパイプライン処理の他の例を説明するための図であり、図４(a)は、アクセラレータ１の構成を模式的に示すブロック図である。また、図４(b)は、図４(a)に示すアクセラレータ１により処理される個々のデータに対するパイプライン実行の一例を示す図であり、動的に２個目の入力データを待つアクセラレータのパイプライン処理の一例を示すものである。
【００２６】
図４(a)に示すアクセラレータ１において、演算回路１０には、第１演算部１０ｆ，第２演算部１０ｇおよび第３演算部１０ｈの３つの演算部が設けられている。すなわち、第１演算部１０ｆは、入力としてＡをホスト２から読み込んで演算Ｆを行って中間データＺを出力し、第２演算部１０ｇは、入力としてＺを第１演算部１０ｆから読み込んで演算Ｇを行って出力データＸをデータ出力部１２に出力する。
【００２７】
さらに、第３演算部１０ｈは、入力としてホスト２からのＢ、および、第１演算部１０ｆからのＺを読み込んで演算Ｈを行い、出力データＹをデータ出力部１２に出力する。なお、データ出力部１２は、マルチプレクサを含み、第２演算部１０ｇからのデータＸまたは第３演算部１０ｈからのデータＹを選択して、ホスト２に出力する。
【００２８】
図４に示す例は、演算処理を行うデータ入力(入力データＡ，Ｂ)の種類が固定ではなく、処理の実行中に変動する場合を示す。すなわち、図４(a)および図４(b)の例において、通常は、図２に示す例と同様に、Ａのみを入力としてＸを出力するが、例えば、中間データＺの値が或る条件を満たす場合には、別途Ｂも入力として読み込んで演算Ｈを行い、出力データＹをホスト２に出力する。
【００２９】
具体的に、図４(b)では、２番目の入力データＡ(Ａ２)に対して、演算Ｆを行った(Ｆ２)後、入力データＢ(Ｂ２)が必要なことが判明した場合であり、このとき、アクセラレータ１は、ホスト２に対して入力データＢ２を要求する。ホスト２は、アクセラレータ１の要求に基づいて、Ｂ２を、データバス３を介してアクセラレータ１に供給する。そして、アクセラレータ１では、第３演算部１０ｈがＢ(Ｂ２)を読み込んで演算Ｈを行い、出力データＹ(Ｙ２)をホスト２に出力する。
【００３０】
このように、例えば、アクセラレータ１の演算処理に使用する入力データの種類が実行中に変動するような場合には、パイプラインのストール(停止)期間が発生し、アクセラレータ１の性能劣化を招く虞がある。特に、ＦＰＧＡ等を使用したアクセラレータ１では、パイプライン段数が多いため、例えば、新たな入力データＢを要求して処理を行う場合、他のパイプライン処理がリセットされると、性能劣化の影響は大きなものとなってしまう。
【００３１】
図５は、情報処理装置により処理されるアプリケーションの一例としての弾塑性有限要素法での接触解析を説明するための図であり、図５(a)は、弾塑性体Ｊが対象Ｋに接触している場合を示し、図５(b)は、ＪがＫから離れている場合を示す。
【００３２】
例えば、情報処理装置(アクセラレータ)１により処理されるアプリケーションが、複数のデータセットを取り扱う弾塑性有限要素法の接触解析の場合、図５(a)のようなＪとＫが接触している場合と、図５(b)のようなＪとＫが離れている場合が考えられる。すなわち、図５(a)に示されるように、ＪとＫが接触している場合、ＪはＫから外力を受け続けるので、Ｊに対して塑性解析を行う。例えば、応力σは、剛塑性マトリクスＤ'と歪み速度εドット(上部にドットが付されたε)を用いて、次のように計算される。
σ＝Ｄ'εドット
【００３３】
また、図５(b)に示されるように、ＪとＫが離れている場合、ＪはＫから外力を受けなくなるため、Ｊに対して弾性解析を行う。例えば、応力σは、弾性マトリクスＤと歪み度εを用いて、次のように計算される。
σ＝Ｄε
【００３４】
ここで、図５(a)の場合と図５(b)の場合のどちらに該当するかは、ＪがＫから受ける力が、Ａが押される方向であることを動的に判定することが求められる。そして、その判定結果によって、｛Ｄ'，εドット｝と｛Ｄ，ε｝のいずれのデータセットを、応力σの計算に使用するかが変化する。すなわち、図５(a)および図５(b)に示す弾塑性有限要素法での接触解析では、例えば、図４(a)および図４(b)を参照して説明したようなパイプライン処理が行われる。なお、このようなパイプライン処理は、弾塑性有限要素法での接触解析に限定されるものではなく、様々な場合に実行されるのはいうまでもない。
【００３５】
図６は、情報処理装置における解決手法の一例を説明するための図であり、図６(a)は、前述した図４(a)と同様のものである。また、図６(b)は、前述した図４(b)に相当するものであり、図４(a)および図４(b)を参照して説明した課題を解決する手法の一例を説明するためのものである。
【００３６】
図４(a)および図４(b)を参照して説明したように、例えば、アクセラレータ１の演算処理に使用する入力データの種類が実行中に変動すると、パイプラインのストール期間が発生してアクセラレータ１の性能劣化を招く虞がある。そこで、図６(b)に示されるように、多種類のデータセットを取り扱うアプリケーションのパイプライン化として、可能性がある全てのデータセット(入力データＢ：Ｂ１，Ｂ２，Ｂ３，…)をアクセラレータ１に送信する構成が考えられる。なお、アクセラレータ１において、実際に使用される入力データＢは、図４(b)を参照して説明したようにＢ２のみであり、Ｂ１，Ｂ３，Ｂ４，…は、使用されずに無駄になる。
【００３７】
このように、可能性がある全てのデータセットをアクセラレータに送信する場合、使用されずに無駄になるデータもアクセラレータへ常に送信することになるため、データ転送速度が遅くなり、その結果、パイプライン処理の性能が劣化してしまう。さらに、データセットの個数が増えると、さらに、処理性能の低下を招く虞もある。
【００３８】
図７は、情報処理装置における解決手法の他の例を説明するための図である。ここで、図７(a)は、アクセラレータ１の構成を模式的に示すブロック図であり、パイプラインの実行パスに分岐が無くなるように、実行パスを分割したものである。すなわち、実行パスを分割する際、分割点での中間データ(Ｚ)をアクセラレータ１の出力と入力に接続することになる。また、図７(b)は、前述した図４(b)および図６(b)に相当するもので、図７(a)に示すアクセラレータ１によるパイプライン処理の一例を示すものである。
【００３９】
図７(a)と、前述した図４(a)(図６(a))の比較から明らかなように、図７(a)に示すアクセラレータ１では、第１演算部１０ｆの入力データＡ、第２演算部１０ｇの入力データＺ、並びに、第３演算部１０ｈの入力データＺ，Ｂは、データ入力部１１から入力される。また、第１演算部１０ｆの出力データＺ、第２演算部１０ｇの出力データＸ、並びに、第３演算部１０ｈの出力データＹは、データ出力部１２に出力される。
【００４０】
すなわち、各演算部１０ｆ，１０ｇ，１０ｈの入力データＡ，Ｚ，Ｂは、全てホスト２からデータ入力部１１を介して入力され、各演算部１０ｆ，１０ｇ，１０ｈの出力データＺ，Ｘ，Ｙは、全てデータ出力部１２を介してホスト２に出力される。これにより、例えば、ホスト２から送信されるデータセットによって、パイプラインの実行パス(各演算部１０ｆ，１０ｇ，１０ｈ)が特定されるため、パイプライ処理のストールを防止することができる。
【００４１】
しかしながら、図７(b)に示されるように、実行パスを分割すると、例えば、データ出力部１２およびデータ入力部１１において中間データ(Ｚ：Ｚ１，Ｚ２，…)の送受信が追加されることになる。そのため、図６(a)および図６(b)を参照して説明したのと同様に、例えば、中間データＺを、データ出力部１２またはデータ入力部１１を介してホスト２と遣り取りすることになり、データ転送速度の遅延およびパイプライン処理の性能劣化を招く虞がある。
【００４２】
以下、情報処理装置、情報処理方法および情報処理プログラムの実施例を、添付図面を参照して詳述する。図８は、本実施形態に係る情報処理装置を模式的に示すブロック図である。図８に示されるように、本実施形態の情報処理装置(アクセラレータ)１は、演算回路１０、再実行制御部１３、再実行判定部１４および再実行情報メモリ(記憶部)１５を含む。なお、アクセラレータ１としては、例えば、ＦＰＧＡやＧＰＵ(ＧＰＧＰＵ)等が使用され、パイプライン処理が行われるのは、前述したのと同様である。
【００４３】
アクセラレータ１は、ホスト２からの入力データを読み取るための入力データ用ポートＰ１、および、出力データをホスト２に書き込むための出力データ用ポートＰ２を含む。また、アクセラレータ１は、入力データが再実行の用途か否かを示す「再実行入力フラグ」を受け取る再実行入力フラグ用ポートＰ３、および、出力データは再実行が必要か否かを示す「再実行出力フラグ」を出力する再実行出力フラグ用ポートＰ４を含む。
【００４４】
再実行制御部１３は、ポートＰ３を介して入力された再実行入力フラグに基づいて、演算回路１０に対して再実行を指示し、再実行判定部１４は、演算回路１０の演算結果に基づいて、再実行が必要か否かを判定する。なお、再実行判定部１４からの再実行出力フラグは、ポートＰ４を介して出力される。再実行情報メモリ１５は、再実行に備えて、演算の途中結果等の情報を格納するためのものである。
【００４５】
図９は、情報処理装置の第１実施例を模式的に示すブロック図であり、前述した図４(a)および図６(a)に示す情報処理装置に対応するものである。図９に示されるように、第１実施例の情報処理装置(アクセラレータ)１は、演算回路１０、データ入力部１１(再実行制御部１３)、データ出力部１２、判定部(Ｄ：再実行判定部)１４、および、再実行情報メモリ(記憶部)１５を含む。演算回路１０は、データＡに対して演算Ｆを行う第１演算部１０ｆ、データ(中間データ)Ｚに対して演算Ｇを行う第２演算部１０ｇ、並びに、データＢおよびＺに対して演算Ｈを行う第３演算部１０ｈを含む。ここで、図９(並びに、図１０〜図１２および図１４(a)，図１５(a)，…等)では、再実行制御部１３を明示していないが、データ入力部１１が再実行制御部１３としての機能を有している。
【００４６】
図９と、前述した図４(a)および図６(a)の比較から明らかなように、第１実施例のアクセラレータ１では、第１演算部１０ｆからの中間データＺが第３演算部１０ｈではなく、再実行情報メモリ１５に入力されている。そして、第３演算部１０ｈは、データ入力部１１からの入力データ(データ入力)Ｂと、再実行情報メモリ１５からのデータ(中間データ)Ｚを受け取って演算Ｇを行い、出力データ(データ出力)Ｙをデータ出力部１２に出力する。なお、データ出力部１２は、マルチプレクサを含み、第２演算部１０ｇからのデータＸまたは第３演算部１０ｈからのデータＹを選択して、ホスト２に出力する。
【００４７】
すなわち、第１実施例のアクセラレータ１において、第１演算部１０ｆからの中間データＺは、再実行情報メモリ１５を介して第３演算部１０ｈに入力されるようになっている。また、例えば、ホスト２(ＣＰＵ２１)からの再実行入力フラグＩｆは、ポートＰ３を介してデータ入力部１１(再実行制御部１３)および判定部(再実行判定部)１４に入力される。さらに、判定部１４からの再実行出力フラグＯｆは、ポートＰ４を介してホスト２(ＣＰＵ２１)に入力される。ここで、判定部１４は、再実行入力フラグＩｆおよび第１演算部１０ｆからの信号Ｓを受け取って判定を行い、再実行出力フラグＯｆを出力する。
【００４８】
図１０〜図１２は、図９に示す情報処理装置の動作の例を説明するための図であり、図１０は、図９に示す情報処理装置において、再実行が不要な場合の動作の一例を説明するためのものである。また、図１１は、図９に示す情報処理装置において、再実行が必要になった場合の動作の一例を説明するためのものであり、図１２は、再実行を行った後、再実行が不要になった場合の動作の一例を説明するためのものである。
【００４９】
ここで、再実行入力フラグＩｆが真(True)のときは、入力データが再実行用のデータであることを表し、再実行入力フラグＩｆが偽(False)のときは、入力データが再実行用のデータではないことを表すものとする。さらに、再実行出力フラグＯｆがTrueのときは、出力データが、再実行が必要なデータであることを表し、再実行出力フラグＯｆがFalseのときは、出力データが、再実行が不要のデータであることを表すものとする。
【００５０】
図１０および図１１を参照して、ＩｆがFalseの場合、すなわち、入力データの種類がＡのみである場合を説明する。まず、図１０に示されるように、データ入力部１１(再実行制御部１３)は、FalseのＩｆおよび入力データＡを受け取り、データＡを第１演算部１０ｆに出力する。第１演算部１０ｆは、データＡを受け取って演算Ｆを行い、出力データ(中間データ)Ｚを第２演算部１０ｇに出力し、第２演算部１０ｇは、データＺを受け取って演算Ｇを行い、出力データＸをデータ出力部１２に出力する。
【００５１】
このとき、判定部１４は、FalseのＩｆおよび第１演算部１０ｆからの信号Ｓを受け取り、例えば、信号Ｓに基づいて、再実行が不要であると判定すると、False(偽)の再実行主力フラグＯｆを生成する。ここで、第２演算部１０ｇの出力データＸが、データ出力部１２からポートＰ２を介してホスト２に出力され、同時に、判定部１４で生成されたFalseのＯｆが、ポートＰ４を介してホスト２に出力される。これにより、ホスト２(ＣＰＵ２１)は、出力データＸと共に、FalseのＯｆを受け取り、アクセラレータ１で実行された処理は、再実行が不要であることを認識して、アクセラレータ１に対して、次の処理のためのデータを出力する。
【００５２】
次に、図１１を参照して、ＩｆがFalseであるが、再実行が必要な場合を説明する。まず、アクセラレータ１に対する入力時では、図１０を参照して説明したのと同様に、データ入力部１１は、FalseのＩｆおよび入力データＡを受け取り、データＡを第１演算部１０ｆに出力する。第１演算部１０ｆは、データＡを受け取って演算Ｆを行い、中間データＺを再実行情報メモリ１５に出力し、再実行情報メモリ１５は、受け取った中間データＺを保存する。ここで、第２演算部１０ｇは、第１演算部１０ｆによる演算Ｆにより再実行が必要なことを認識して処理を停止(中断)する。
【００５３】
このとき、判定部１４は、FalseのＩｆおよび第１演算部１０ｆからの信号Ｓを受け取るが、例えば、信号Ｓに基づいて、再実行が必要であると判定すると、True(真)の再実行主力フラグＯｆを生成する。すなわち、第１演算部１０ｆによる演算Ｆを行って再実行が必要な場合、判定部１４は、FalseのＯｆではなくTrueのＯｆを生成し、そのTrueのＯｆを、ポートＰ４を介してホスト２に出力する。ホスト２は、TrueのＯｆを受け取ることで、アクセラレータ１で実行された処理は、再実行が必要であることを認識し、アクセラレータ１に対して、再実行を行うための追加のデータ(Ｂ)を出力する。すなわち、再実行が必要であることを認識したホスト２は、アクセラレータ１に対して、図１２に示すようなTrueのＩｆと共に、データ(Ｂ)を出力する。
【００５４】
図１２に示されるように、再実行が必要な場合、データ入力部１１は、TrueのＩｆおよび入力データＢを受け取り、データＢを第３演算部１０ｈに出力する。すなわち、アクセラレータ１は、例えば、ホスト２側で入力データＢが準備できた時点で、TrueのＩｆと共に、入力データＢを受け取って、再実行の処理を行う。ここで、第３演算部１０ｈは、入力データＢと共に、再実行情報メモリ１５に保存されたデータ(中間データ)Ｚを受け取って演算Ｈを行い、出力データＹをデータ出力部１２に出力する。このとき、判定部１４は、TrueのＩｆを受け取り、例えば、再実行を行ってさらなる再実行が不要であると判定すると、FalseのＯｆを生成する。
【００５５】
そして、第３演算部１０ｈの出力データＹが、データ出力部１２からポートＰ２を介してホスト２に出力され、同時に、判定部１４で生成されたFalseのＯｆが、ポートＰ４を介してホスト２に出力される。これにより、ホスト２は、出力データＹと共に、FalseのＯｆを受け取り、アクセラレータ１で実行された処理は、再実行が不要であることを認識して、アクセラレータ１に対して、次の処理のためのデータを出力する。なお、図１０〜図１２では、説明を簡略化するために、３つの演算部１０ｆ，１０ｇ，１０ｈおよび１つの中間データＺを扱う場合を説明したが、演算部および中間データの数は、さらに多数であってもよい。すなわち、第１演算部１０ｆ，第２演算部１０ｇおよび第３演算部１０ｈに相当する演算部は、複数設けられてもよく、それに伴って、中間データの数も複数であってもよい。
【００５６】
図１３は、図９に示す情報処理装置におけるパイプライン処理の一例を説明するための図である。まず、再実行(入力データＢ)が必要になる頻度が低い場合、データ転送の帯域低下は皆無に近く、最大限のパイプライン処理性能を確保することができる。図１３において、再実行による処理は、再実行入力フラグＩｆをTrue(真：Ｔ)にして、入力データＢ２を入力する。そして、第３演算部１０ｈにより、入力データＢ２、および、再実行情報メモリ１５から読み出したデータ(中間データ)Ｚ２を入力として演算Ｈを行い、データＹ２を出力する。なお、前述したように、出力データＹ２をホスト２に出力するとき、再実行出力フラグＯｆはFalse(偽：Ｆ)とされる。
【００５７】
図１３に示されるように、例えば、再実行が必要な場合(図１３における太線のパス)でも、中間データＺ(Ｚ２)を再実行情報メモリ１５に保存して処理を中断することにより、パイプライン処理のストールを回避することができる。また、例えば、ホスト２が再実行に必要な追加の入力データＢ(Ｂ２)を準備するまでの期間でも、別の入力データＡ３，Ａ４，Ａ５に対して処理を続行することができる。
【００５８】
さらに、ホストが入力データＢ(Ｂ２)を準備できた時は、例えば、再実行入力フラグIfをTrue(真：Ｔ)にすることにより、再実行をアクセラレータ１に指示することができる。そして、再実行時のパスにおいても、ストールが無いパイプライン処理を行うことが可能になる。
【００５９】
このように、第１実施例の情報処理装置(アクセラレータ)によれば、多種類のデータセットを取り扱うアプリケーションで、かつ、その実行中に動的に使うデータセットが変動する場合でも、効率的なパイプライン処理を情報処理装置上に実現することができる。すなわち、パイプライン処理をより一層高速化することが可能になる。なお、この第１実施例による効果は、以下に詳述する他の実施例でも、同様に奏されるのはいうまでもない。
【００６０】
図１４は、情報処理装置の第２実施例を説明するための図であり、パイプライン処理がストールする確率を下げるために、再実行情報メモリ１５が、複数個の再実行情報(Ｚ２，Ｚ４)を保存可能としたものである。ここで、図１４(a)は、アクセラレータの構成を模式的に示すブロック図であり、図１４(b)は、図１４(a)に示すアクセラレータによるパイプライン処理の一例を示す図である。
【００６１】
図１４(a)に示されるように、第２実施例の情報処理装置１において、再実行情報メモリ１５は、例えば、ＦＩＦＯ(First In First Out)バッファであり、複数の中間データ(再実行を行うための情報)Ｚ２，Ｚ４，…が保存できるようになっている。すなわち、図１４(b)に示されるように(前述した図１３と同様に)、再実行情報メモリ１５は、第１演算部１０ｆからの中間データＺ２を保存し、再実行時に、入力データＢ２と共に、第３演算部１０ｈに出力する。第３演算部１０ｈは、演算Ｈ(Ｈ２)を行って、出力データＹ２を、False(偽：Ｆ)の再実行出力フラグＯｆと共に、ホスト２に出力する。
【００６２】
図１４(b)では、さらに、入力データＡ４に対する処理でも再実行が必要になった場合を示し、このときの中間データＺ４を、ＦＩＦＯバッファの再実行情報メモリ１５に保存する。すなわち、再実行情報メモリ１５はＦＩＦＯバッファであるため、再実行が必要になった場合の中間データＺ２，Ｚ４，…を順にＦＩＦＯバッファの最後尾に追加し、再実行時には、中間データＺ２，Ｚ４，…をＦＩＦＯバッファの先頭から順に取り出す。このように、ＦＩＦＯバッファ(再実行情報メモリ)１５に複数の中間データＺ２，Ｚ４，…を保存することで、前回発生した再実行が完了する前に、次の再実行が必要になった場合でも、ストールさせずにパイプライン処理を継続させることが可能になる。
【００６３】
図１５は、情報処理装置の第３実施例を説明するための図であり、再実行情報メモリの空き容量が無くなった、或いは、無くなりそうなことを検知して、再実行情報を廃棄する機能を持たせたものである。ここで、図１５(a)は、アクセラレータの構成を模式的に示すブロック図であり、図１５(b)は、図１５(a)に示すアクセラレータによるパイプライン処理の一例を示す図である。
【００６４】
図１５(a)と、上述した図１４(a)の比較から明らかなように、第３実施例の情報処理装置１は、例えば、第１演算部１０ｆの出力と再実行情報メモリ１５の入力の間に、廃棄制御信号Ｓｄにより制御されるバッファ１６を挿入するようになっている。ここで、廃棄制御信号Ｓｄは、再実行情報メモリ１５の空き容量が無くなった場合、或いは、再実行情報メモリ１５の空き容量が所定の閾値よりも低下して再実行情報メモリ１５の空き容量が無くなりそうになった場合に出力され、バッファ１６を不活性にする。
【００６５】
ここで、廃棄制御信号Ｓｄが出力されると、バッファ１６は、第１演算部１０ｆからの中間データＺ(Ｚ４)を再実行情報メモリ１５に出力せずに、廃棄することになる。なお、廃棄制御信号Ｓｄは、例えば、ＦＩＦＯバッファ(再実行情報メモリ)１５の満杯を表す満杯信号ｆｕｌｌであってもよい。また、廃棄制御信号Ｓｄは、判定部１４にも入力され、中間データＺ４が廃棄されて再実行情報メモリ１５に保存されておらず、そのまま再実行を行うことができないことを示す再実行出力フラグＯｆ(例えば、Ｃ：CancelのＯｆ)を生成してホスト２に出力する。これにより、ホスト２は、中間データＺ４が廃棄されたことを認識することになる。
【００６６】
すなわち、図１５(b)に示されるように、例えば、再実行メモリ１５に空きが無い時、満杯信号ｆｕｌｌ(Ｓｄ)が高レベル『１』になると、バッファ１６が不活性化され、第１演算部１０ｆからの新たな中間データＺ４は、再実行情報メモリ１５に送られずに廃棄される。同時に、判定部１４は、満杯信号ｆｕｌｌに基づいて、中間データＺ４が廃棄されたことを表すcancel(Ｃ)の再実行出力フラグＯｆをホスト２に出力する。ホスト２は、Ｃの再実行出力フラグＯｆを受け取って、例えば、入力データＡ４に対する中間データＺ４が廃棄されたことを認識し、再実行の際は、入力データＡ４からの処理をやり直すことになる。なお、廃棄制御信号Ｓｄとしては、満杯信号ｆｕｌｌに限定されるものではなく、再実行情報メモリ１５の空き容量が無くなりそうになった場合に出力される信号(例えば、あと数個で満杯になる事を示すalmost-full信号)を適用することもできるのは、前述の通りである。
【００６７】
図１６は、情報処理装置の第４実施例を説明するための図であり、新たな再実行情報を廃棄する代わりに、その新たな再実行情報をホストに出力して退避させる機能を持たせたものである。ここで、図１６(a)は、アクセラレータの構成を模式的に示すブロック図であり、図１６(b)は、図１６(a)に示すアクセラレータによるパイプライン処理の一例を示す図である。
【００６８】
図１６(a)に示されるように、第４実施例の情報処理装置１は、上述した第３実施例におけるバッファ１６の代わりに、マルチプレクサ１７および１８を設けるようになっている。すなわち、第１演算部１０ｆからの中間データＺは、マルチプレクサ１７により、再実行情報メモリ１５に入力するか、ホスト２に出力して退避させるかを切り替える。例えば、満杯信号ｆｕｌｌが低レベル『０』のときは、中間データＺを再実行情報メモリ１５に渡し、満杯信号ｆｕｌｌが高レベル『１』のときは、廃棄せずに、データ出力部１２およびポートＰ２を介してホスト２に出力する。
【００６９】
同時に、判定部１４は、満杯信号ｆｕｌｌに基づいて、Ｃ(cancel)の再実行出力フラグＯｆを生成して、出力中間データＺ４が再実行情報メモリ１５に格納されずに、出力データ(Ｙ４)に現れていることをホスト２に知らせる。その後、ホスト２は、Ｃの再実行入力フラグＩｆと共に、中間データＺ４および入力データＢ４を入力する。ここで、マルチプレクサ１８は、データ入力部１１の出力および再実行情報メモリ１５の出力を入力とし、出力を第３演算部１０ｈに与えるようになっている。
【００７０】
すなわち、マルチプレクサ１８は、再実行時には、例えば、図１２および図１３を参照して説明したように、再実行情報メモリ１５の出力を選択して第３演算部１０ｈに供給する。また、マルチプレクサ１８は、ＣのＩｆと共に、Ｚ４およびＢ４が入力された場合には、データ入力部１１からのＺ４を選択して第３演算部１０ｈに供給する。なお、図１６(a)および図１６(b)に示されるように、第３演算部１０ｈは、Ｚ４と共に、データ入力部１１からのＢ４も受け取って演算Ｈを行い、出力データＹ４を出力する。
【００７１】
図１７は、情報処理装置の第５実施例を説明するための図であり、再実行フラグＩｆ，Ｏｆに対して、再実行に関連する付加情報(例えば、再実行の種類、必要なデータの種別等)を加えて、複数種類の再実行を可能とするものである。ここで、図１７(a)は、アクセラレータの構成を模式的に示すブロック図であり、図１７(b)は、図１７(a)に示すアクセラレータによるパイプライン処理の一例を示す図である。
【００７２】
図１７(a)に示されるように、第５実施例の情報処理装置１は、演算Ｊを行う第４演算部１０ｊを有し、さらに、再実行情報メモリ１５の出力(中間データＺ)を、例えば、第３演算部１０ｈまたは第４演算部１０ｊに選択して与えるマルチプレクサ１９を含む。ここで、第３演算部１０ｈおよび第４演算部１０ｊは、両方とも再実行処理を行うものとする。
【００７３】
第５実施例の情報処理装置１において、再実行情報メモリ１５に保存される第１演算部１０ｆの出力(中間データ)Ｚには、例えば、使用される演算部の情報が付加されている。すなわち、再実行情報メモリ１５において、中間データＺ２は、第３演算部１０ｈによる演算Ｈを行うためのものであることが付加情報として示され、中間データＺ４は、第４演算部１０ｊによる演算Ｊを行うためのものであることが付加情報として示されている。
【００７４】
そして、再実行情報メモリ１５から中間データＺを読み出す場合、中間データＺ２は、付加情報に基づいて第３演算部１０ｈに入力され、中間データＺ４は、付加情報に基づいて第４演算部１０ｊに入力される。すなわち、図１７(b)に示されるように、例えば、再実行情報メモリ１５から、中間データＺ２が読み出されると、付加情報に基づいて、マルチプレクサ１９を介して第３演算部１０ｈに入力され、入力データＢ２と共に演算Ｈが行われて出力データＹ２が出力される。また、例えば、再実行情報メモリ１５から、中間データＺ４が読み出されると、付加情報に基づいて、マルチプレクサ１９を介して第４演算部１０ｊに入力され、入力データＢ４と共に演算Ｊが行われて出力データＷ４が出力される。なお、上述した付加情報は、単なる例であり、様々な情報を中間データＺに付加して再実行情報メモリ１５に保存することにより、パイプライン処理のより一層の高速化に寄与することになる。
【００７５】
図１８は、情報処理装置の第６実施例を説明するための図であり、再実行時に必要なデータを事前に纏めて入力しておくことにより、ホストとの再実行フラグの交換時間を低減するようにしたものである。ここで、図１８(a)は、アクセラレータの構成を模式的に示すブロック図であり、図１８(b)は、図１８(a)に示すアクセラレータによるパイプライン処理の一例を示す図である。
【００７６】
図１８(a)に示されるように、第６実施例の情報処理装置１は、例えば、再実行の際に必要な追加の入力データＢ(Ｂ２，Ｂ４)を予め読み込んで、再実行情報メモリ１５に格納しておく。この時、例えば、再実行入力フラグＩｆの代わりに設けたデータ種別フラグＩｆｋにより、再実行用の追加データＢ２，Ｂ４の入力である旨をアクセラレータ１に伝えるようになっている。
【００７７】
ここで、判定部１４による再実行が必要か否かの判定は、前述したのと同様であるが、前述した再実行出力フラグＯｆは、ポートＰ４を介してホスト２に出力するのではなく、第３演算部１０ｈに出力する。これは、第３演算部１０ｈが、情報処理装置１から追加データＢ２，Ｂ４を読み出すかどうかの判断に使うためである。この第６実施例は、例えば、再実行を生じるデータが事前に分かる場合に適用するのが好ましい。
【００７８】
図１８(b)に示されるように、例えば、再実行を生じるデータが、事前に入力データＡ２およびＡ４であることが分かっている場合、再実行が生じることを検知したときに、追加データＢ２およびＢ４を予め纏めて読み込むことができる、これにより、再実行が生じる場合でも、再実行情報メモリ１５から追加データＢ２，Ｂ４を読み出すことで、以後はストールせずにパイプライン動作を行うことが可能になる。これにより、例えば、ホスト２との再実行フラグ(Ｉｆ，Ｏｆ)の交換時間を低減することが可能になる。
【００７９】
上述した様々な実施例は、例えば、問題のない範囲において、適宜組み合わせて適用することが可能である。また、上述した実施例では、説明のために、アクセラレータ(情報処理装置)の構成を簡略化したが、例えば、演算部、中間データおよび追加データの数等は、さらに多数であってもよいのはもちろんである。さらに、上述した各実施例は、演算処理装置(例えば、ホスト２におけるＣＰＵ２１)により実行されるプログラムとして実施することができるのはいうまでもない。
【００８０】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【００８１】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
第１データを入力としてパイプライン処理を行う演算部と、
前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有する情報処理装置であって、
前記演算部は、前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断すると共に、前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う、
ことを特徴とする情報処理装置。
【００８２】
（付記２）
前記第１データおよび前記第２データは、ホストからの入力データであり、
前記判定部は、前記演算部の演算結果に基づく再実行制御信号と共に、前記入力データが再実行の用途か否かを示す再実行入力フラグを受け取り、前記第２データを前記演算部に入力して処理を再実行するか否かを判定し、前記情報処理装置により処理が行われた出力データと共に、前記出力データは再実行が必要か否かを示す再実行出力フラグを出力する、
ことを特徴とする付記１に記載の情報処理装置。
【００８３】
（付記３）
前記演算部は、
前記第１データを受け取って第１演算を行う第１演算部と、
前記第１演算部の出力を受け取って第２演算を行う第２演算部と、
前記第１演算部の出力と共に、前記第２データを受け取って第３演算を行う第３演算部と、を含み、
前記情報処理装置は、さらに、
前記第１演算部の出力を中間データとして保存する記憶部を有し、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記中間データを、前記記憶部に保存し、
前記第２データが入力されたときは、前記記憶部に保存された前記中間データを、前記第２データと共に、前記第３演算部に入力して前記第３演算を行う、
ことを特徴とする付記２に記載の情報処理装置。
【００８４】
（付記４）
前記記憶部は、複数の前記中間データを保持して順番に出力するＦＩＦＯバッファである、
ことを特徴とする付記３に記載の情報処理装置。
【００８５】
（付記５）
前記記憶部の空き容量が無くなった場合、或いは、所定の閾値よりも低下して無くなりそうになった場合には、新たな前記中間データを前記記憶部に保存せずに廃棄する、
ことを特徴とする付記４に記載の情報処理装置。
【００８６】
（付記６）
前記記憶部の空き容量が無くなった場合、或いは、所定の閾値よりも低下して無くなりそうになった場合には、新たな前記中間データを前記記憶部に保存せずに前記ホストに出力して退避させる、
ことを特徴とする付記４に記載の情報処理装置。
【００８７】
（付記７）
前記記憶部は、前記中間データと共に、前記中間データを使用して行う再実行に関連する付加情報を保存する、
ことを特徴とする付記３乃至付記６のいずれか１項に記載の情報処理装置。
【００８８】
（付記８）
前記記憶部は、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定する前に、前記第２データを、前記ホストから受け取って保存する、
ことを特徴とする付記３乃至付記７のいずれか１項に記載の情報処理装置。
【００８９】
（付記９）
前記演算部は、
前記第１演算部，前記第２演算部および前記第３演算部に相当する演算部は、複数設けられている、
ことを特徴とする付記１乃至付記８のいずれか１項に記載の情報処理装置。
【００９０】
（付記１０）
前記情報処理装置は、ＦＰＧＡ，ＧＰＵまたはＧＰＧＰＵを使用したアクセラレータである、
ことを特徴とする付記１乃至付記９のいずれか１項に記載の情報処理装置。
【００９１】
（付記１１）
第１データを入力としてパイプライン処理を行う演算部と、前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有し、前記演算部により処理を実行する情報処理方法であって、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断し、
前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、
前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う、
ことを特徴とする情報処理方法。
【００９２】
（付記１２）
第１データを入力としてパイプライン処理を行う演算部と、前記演算部の演算結果に基づいて、前記第１データとは異なる第２データを前記演算部に入力して処理を実行するか否かを判定する判定部と、を有する情報処理装置の情報処理プログラムであって、
前記情報処理装置を制御するホストのＣＰＵに、
前記判定部が前記第２データを前記演算部に入力して処理を実行すると判定した場合、前記第２データを使用して処理を実行する前記演算部の演算を中断し、
前記第２データが入力されるまで、前記第１データを入力として処理を実行する前記演算部の演算を継続し、
前記第２データが入力されたときは、中断された前記第２データを使用して処理を実行する前記演算部の演算を行う、処理を実行させる、
ことを特徴とする情報処理プログラム。
【符号の説明】
【００９３】
１    情報処理装置(アクセラレータ)
２    ホスト
３    データバス
１０    演算回路
１０ｆ    第１演算部
１０ｇ    第２演算部
１０ｈ    第３演算部
１０ｊ    第４演算部
１１    データ入力部
１２    データ出力部
１３    再実行制御部
１４    再実行判定部(判定部)
１５    再実行情報メモリ(記憶部)
１６    バッファ
１７〜１９    マルチプレクサ
２１    ＣＰＵ
２２    メモリ
【図１】
2019028865.tif 000003
【図２】
2019028865.tif 000004
【図３】
2019028865.tif 000005
【図４】
2019028865.tif 000006
【図５】
2019028865.tif 000007
【図６】
2019028865.tif 000008
【図７】
2019028865.tif 000009
【図８】
2019028865.tif 000010
【図９】
2019028865.tif 000011
【図１０】
2019028865.tif 000012
【図１１】
2019028865.tif 000013
【図１２】
2019028865.tif 000014
【図１３】
2019028865.tif 000015
【図１４】
2019028865.tif 000016
【図１５】
2019028865.tif 000017
【図１６】
2019028865.tif 000018
【図１７】
2019028865.tif 000019
【図１８】
2019028865.tif 000020