(57)【要約】【課題】プロセッサから演算処理装置に対してまとめて発行された複数の命令の各々の実行後の状態についてデバッグ作業を行う。【解決手段】コマンドレジスタ群は、複数のコマンドを含むコマンド列を単位としてプロセッサから発行された各コマンドを各々のレジスタに保持する。コマンド処理部は、コマンドレジスタ群から供給されたコマンドを処理する。ステートマシンは、コマンド処理部におけるコマンドの処理状態を管理する。制御部は、コマンド列において停止すべき条件を停止条件として予め設定して、その設定された停止条件とステートマシンにおいて管理される処理状態とに基づいてコマンド処理部における処理を停止させる。【選択図】図１
2018120449.tif 000002
【特許請求の範囲】
【請求項１】
複数のコマンドを含むコマンド列を単位としてプロセッサから発行された各コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記コマンドレジスタ群から供給された前記コマンドを処理するコマンド処理部と、
前記コマンド処理部における前記コマンドの処理状態を管理するステートマシンと、
前記コマンド列において停止すべき条件を停止条件として予め設定して当該設定された停止条件と前記ステートマシンにおいて管理される前記処理状態とに基づいて前記コマンド処理部における処理を停止させる制御部と
を具備する演算処理装置。
【請求項２】
前記制御部は、前記コマンド列における全てのコマンドの処理の終了を待つことなく前記停止条件を満たすコマンドの処理が終了した時点で前記コマンド処理部における処理を停止させる
請求項１記載の演算処理装置。
【請求項３】
前記制御部は、前記停止条件として前記コマンド処理部における複数の前記処理状態を設定する
請求項１記載の演算処理装置。
【請求項４】
前記制御部は、前記プロセッサから処理停止の解除命令を受けると前記コマンド処理部における処理を再開させる
請求項１記載の演算処理装置。
【請求項５】
前記ステートマシンは、前記コマンド列に対応して予め定められたコマンド数に従って前記処理状態を遷移させて前記処理状態を管理する
請求項１記載の演算処理装置。
【請求項６】
前記コマンドレジスタ群は、複数のサブレジスタ群を備え、
前記制御部は、前記プロセッサから複数の前記コマンド列を受けた際に前記複数のサブレジスタ群毎に異なる前記コマンド列が保持されるように制御する
請求項１記載の演算処理装置。
【請求項７】
前記ステートマシンは、前記異なるコマンド列に対応してそれぞれ固有の前記処理状態を管理する
請求項６記載の演算処理装置。
【請求項８】
前記制御部は、複数の前記コマンド列の一つにおいて前記停止条件を満たす場合には他の前記コマンド列においても前記コマンド処理部における処理を停止させる
請求項６記載の演算処理装置。
【請求項９】
前記制御部は、複数の前記コマンド列の一つにおいて前記停止条件を満たす場合には他の前記コマンド列において処理されているコマンドの処理が終了した時点で前記コマンド処理部における処理を停止させる
請求項６記載の演算処理装置。
【請求項１０】
複数のコマンドを含むコマンド列を単位として前記コマンドを発行するプロセッサと、
前記プロセッサから発行された前記コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記コマンドレジスタ群から供給された前記コマンドを処理するコマンド処理部と、
前記コマンド処理部における前記コマンドの処理状態を管理するステートマシンと、
前記コマンド列において停止すべき条件を停止条件として予め設定して当該設定された停止条件と前記ステートマシンにおいて管理される前記処理状態とに基づいて前記コマンド処理部における処理を停止させる制御部と
を具備する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、演算処理装置に関する。詳しくは、プロセッサの外部において演算機能を提供する演算処理装置、および、その演算処理装置を含む情報処理システムに関する。
【背景技術】
【０００２】
情報処理システムにおいてデバッグ作業を行う際、一般にはＩＣＥ（In-Circuit Emulator）を用いてブレークポイントを設定し、ハードウェア内部のステータスレジスタ等を確認しながらソースコードの検証が行われる。このようなデバッグの対象システムにおいて、プロセッサから発行された複数の命令を演算処理装置において並行に処理するような場合には、新たな命令の処理を停止するとともに、既に開始された処理を如何に扱うかが問題となる。例えば、パイプライン方式により命令を処理する命令処理部においてデバッグ動作を行うプロセッサが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２６９３９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、パイプライン方式により命令を処理する命令処理部において命令の処理を停止するために、命令の入力を停止してからその停止より前に既に開始された処理が完了するまでの間はデバッグ動作を制限している。しかしながら、開始された全ての処理の完了を待つこととすると、デバッグ動作時と実際の実行時との間で内部の状態が異なってしまい、デバッグ作業が適切に行われないおそれがある。すなわち、プロセッサから演算処理装置に対して発行された各々の命令の完了時点のハードウェア内部ステータスやローカルメモリの値を確認することができないという問題がある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、プロセッサから演算処理装置に対してまとめて発行された複数の命令の各々の実行後の状態についてデバッグ作業を行うことを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、複数のコマンドを含むコマンド列を単位としてプロセッサから発行された各コマンドを各々のレジスタに保持するコマンドレジスタ群と、上記コマンドレジスタ群から供給された上記コマンドを処理するコマンド処理部と、上記コマンド処理部における上記コマンドの処理状態を管理するステートマシンと、上記コマンド列において停止すべき条件を停止条件として予め設定して当該設定された停止条件と上記ステートマシンにおいて管理される上記処理状態とに基づいて上記コマンド処理部における処理を停止させる制御部とを具備する演算処理装置である。これにより、複数のコマンドを含むコマンド列において予め設定された停止条件とステートマシンにおいて管理される処理状態とに基づいて処理を停止させるという作用をもたらす。
【０００７】
また、この第１の側面において、上記制御部は、上記コマンド列における全てのコマンドの処理の終了を待つことなく上記停止条件を満たすコマンドの処理が終了した時点で上記コマンド処理部における処理を停止させるようにしてもよい。これにより、コマンド列における全てのコマンドの処理の終了を待つことなく処理を停止させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記制御部は、上記停止条件として上記コマンド処理部における複数の上記処理状態を設定するようにしてもよい。これにより、複数の処理状態において処理を停止させるという作用をもたらす。
【０００９】
また、この第１の側面において、上記制御部は、上記プロセッサから処理停止の解除命令を受けると上記コマンド処理部における処理を再開させるようにしてもよい。これにより、コマンド列の停止された位置から再開させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記ステートマシンは、上記コマンド列に対応して予め定められたコマンド数に従って上記処理状態を遷移させて上記処理状態を管理するようにしてもよい。これにより、コマンド数に基づく簡易な方法により状態を管理するという作用をもたらす。
【００１１】
また、この第１の側面において、上記コマンドレジスタ群は、複数のサブレジスタ群を備え、上記制御部は、上記プロセッサから複数の上記コマンド列を受けた際に上記複数のサブレジスタ群毎に異なる上記コマンド列が保持されるように制御するようにしてもよい。これにより、異なるコマンド列を並行に動作させるという作用をもたらす。
【００１２】
また、この第１の側面において、上記ステートマシンは、上記異なるコマンド列に対応してそれぞれ固有の上記処理状態を管理するようにしてもよい。これにより、コマンド列毎に固有の状態によって動作させるという作用をもたらす。
【００１３】
また、この第１の側面において、上記制御部は、複数の上記コマンド列の一つにおいて上記停止条件を満たす場合には他の上記コマンド列においても上記コマンド処理部における処理を停止させるようにしてもよい。これにより、複数のコマンド列における処理を連動して停止させるという作用をもたらす。
【００１４】
また、この第１の側面において、上記制御部は、複数の上記コマンド列の一つにおいて上記停止条件を満たす場合には他の上記コマンド列において処理されているコマンドの処理が終了した時点で上記コマンド処理部における処理を停止させるようにしてもよい。これにより、一つのコマンド列において処理されているコマンドの処理が終了した時点で他のコマンド列の処理を停止させるという作用をもたらす。
【００１５】
また、本技術の第２の側面は、複数のコマンドを含むコマンド列を単位として上記コマンドを発行するプロセッサと、上記プロセッサから発行された上記コマンドを各々のレジスタに保持するコマンドレジスタ群と、上記コマンドレジスタ群から供給された上記コマンドを処理するコマンド処理部と、上記コマンド処理部における上記コマンドの処理状態を管理するステートマシンと、上記コマンド列において停止すべき条件を停止条件として予め設定して当該設定された停止条件と上記ステートマシンにおいて管理される上記処理状態とに基づいて上記コマンド処理部における処理を停止させる制御部とを具備する情報処理システムである。これにより、プロセッサからまとめて発行された複数のコマンドを含むコマンド列において予め設定された停止条件とステートマシンにおいて管理される処理状態とに基づいて処理を停止させるという作用をもたらす。
【発明の効果】
【００１６】
本技術によれば、プロセッサから演算処理装置に対してまとめて発行された複数の命令の各々の実行後の状態についてデバッグ作業を行うことができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１７】
【図１】本技術の実施の形態における情報処理システムの構成の一例を示す図である。
【図２】本技術の第１の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。
【図３】本技術の第１の実施の形態におけるレジスタ群３１２とコマンドとの関係例を示す図である。
【図４】本技術の第１の実施の形態におけるステートマシン３２０が管理する処理状態の遷移例を示す図である。
【図５】本技術の実施の形態におけるコマンド列の一例を示す図である。
【図６】本技術の第１の実施の形態における制御部３３０の制御信号の一例を示す図である。
【図７】本技術の第１の実施の形態における情報処理システムの動作の一例を示すシーケンス図である。
【図８】本技術の第１の実施の形態における制御部３３０における処理手順例を示す流れ図である。
【図９】本技術の第２の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。
【図１０】本技術の第２の実施の形態におけるレジスタ群３１２とコマンドとの関係例を示す図である。
【図１１】本技術の第２の実施の形態における制御部３３０の制御信号の一例を示す図である。
【図１２】本技術の第２の実施の形態における複数のコマンド列間のブレーク連動の例を示す図である。
【図１３】本技術の第２の実施の形態における制御部３３０における処理手順例を示す流れ図である。
【発明を実施するための形態】
【００１８】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（発行されたコマンド列の一つのコマンドの処理が終了した時点で停止する例）
２．第２の実施の形態（複数のコマンド列の何れかで停止した際に他のコマンド列も連動して停止する例）
【００１９】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの構成の一例を示す図である。この情報処理システムは、プロセッサ１００と、共有メモリ２００と、コプロセッサ３００とを備える。これらは、コントロールバス１０１およびメモリバス１０２によって相互に接続される。
【００２０】
プロセッサ１００は、情報処理システムの全体の処理を行う装置である。コプロセッサ３００は、プロセッサ１００からの指示に従って所定の演算処理等を行う演算処理装置である。共有メモリ２００は、プロセッサ１００のアドレス空間を記憶するメモリである。共有メモリ２００には、プロセッサ１００およびコプロセッサ３００の両者からアクセスすることができる。なお、コプロセッサ３００は、特許請求の範囲に記載の演算処理装置の一例である。
【００２１】
コプロセッサ３００は、コマンドバッファ３０１と、バスインターフェース３６０と、データ転送部３７０と、演算部３８０と、専有メモリ３９０とを備える。コマンドバッファ３０１は、コマンド保持部３１０と、ステートマシン３２０と、制御部３３０とを備える。
【００２２】
コマンドバッファ３０１は、内部に専用の制御命令（コマンド）を保持するコマンド保持部３１０を備える。このコマンドは、プロセッサ１００からコントロールバス１０１を介してコマンド保持部３１０に書き込まれる。
【００２３】
ステートマシン３２０は、データ転送部３７０および演算部３８０における処理状態を管理するものである。
【００２４】
コマンド保持部３１０は、プロセッサ１００から受けたコマンド列の各コマンドを、保持するものである。このコマンド保持部３１０は、制御部３３０による制御に従って、各コマンドを保持する。
【００２５】
制御部３３０は、コマンド保持部３１０を制御するものである。この制御部３３０は、プロセッサ１００から受けたコマンド列の各コマンドを保持するようコマンド保持部３１０を制御する。また、この制御部３３０は、ステートマシン３２０が管理する処理状態に応じて、データ転送部３７０および演算部３８０の何れかに対してコマンド保持部３１０に保持されたコマンドを供給するようにコマンド保持部３１０を制御する。
【００２６】
バスインターフェース３６０は、コントロールバス１０１とコマンドバッファ３０１との間のインターフェースである。プロセッサ１００とコプロセッサ３００内のコマンドバッファ３０１との間は、コントロールバス１０１を経由して接続される。
【００２７】
専有メモリ３９０は、プロセッサ１００のアドレス空間とは異なる専有領域を記憶するメモリである。
【００２８】
演算部３８０は、専有メモリ３９０に記憶されたデータ間の演算処理を行うものである。
【００２９】
データ転送部３７０は、プロセッサ１００のアドレス空間と専有メモリ３９０との間でデータの転送処理を行うものである。このデータ転送部３７０は、データの転送処理を行う際、共有メモリ２００と専有メモリ３９０との間でＤＭＡ（Direct Memory Access）転送を行う。そのため、データ転送部３７０には、ＤＭＡ転送の際に開始アドレスや転送データ量などが設定される。このデータ転送部３７０と、プロセッサ１００と、共有メモリ２００との間は、メモリバス１０２を経由して接続される。
【００３０】
データ転送部３７０および演算部３８０は、専有メモリ３９０と接続されており、データ転送部３７０および演算部３８０は専有メモリ３９０に対してそれぞれ読出しおよび書込みのアクセスを実行することができる。なお、データ転送部３７０および演算部３８０は、特許請求の範囲に記載の処理部の一例である。
【００３１】
図２は、本技術の第１の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。このコマンドバッファ３０１は、レジスタ群３１２と、スイッチ３１１と、セレクタ３１３と、ステートマシン３２０とを備える。
【００３２】
レジスタ群３１２は、プロセッサ１００から受けたコマンド列の各コマンドを保持するレジスタである。この例では、レジスタ群３１２は、レジスタＡ１乃至Ａ３を備える。レジスタＡ１は、共有メモリ２００のデータを専有メモリ３９０に書き込む際の、データ転送部３７０に対するコマンドを保持するレジスタである。レジスタＡ２は、演算部３８０のコマンドを保持するレジスタである。レジスタＡ３は、専有メモリ３９０のデータを共有メモリ２００に書き込む際の、データ転送部３７０に対するコマンドを保持するレジスタである。これらレジスタＡ１乃至Ａ３は、複数のコマンドを格納することができ、格納した順番に読み出すことのできるＦＩＦＯ（First-In First-Out）機能を有する。なお、レジスタ群３１２は、特許請求の範囲に記載のコマンドレジスタ群の一例である。
【００３３】
スイッチ３１１は、プロセッサ１００からのコマンドをレジスタＡ１乃至Ａ３に振り分けるスイッチである。このスイッチ３１１は、レジスタＡ１乃至Ａ３の何れかのアドレス選択を、コントロールバス１０１からのアドレス情報に従って判断する。
【００３４】
セレクタ３１３は、レジスタＡ１乃至Ａ３の何れかの出力を選択して、データ転送部３７０または演算部３８０に供給するセレクタである。レジスタＡ１およびＡ３の出力は、データ転送部３７０に供給される。レジスタＡ２の出力は、演算部３８０に供給される。
【００３５】
ステートマシン３２０は、データ転送部３７０および演算部３８０における処理状態を管理するステートマシンである。このステートマシン３２０により管理される処理状態の遷移については後述する。
【００３６】
図３は、本技術の第１の実施の形態におけるレジスタ群３１２とコマンドとの関係例を示す図である。ここでは、プロセッサ１００からコプロセッサ３００にまとめて発行されるコマンド列には、７つのコマンドが含まれることを想定している。これら７つのコマンドは、以下のようにレジスタＡ１乃至Ａ３に保持される。
【００３７】
レジスタＡ１は、共有メモリ２００のデータを専有メモリ３９０に転送するＤｍａＭａｉｎＴｏＬｏｃａｌコマンドを保持する。この例では、レジスタＡ１は、３つのＤｍａＭａｉｎＴｏＬｏｃａｌコマンドを保持する領域を有する。
【００３８】
レジスタＡ２は、演算部３８０において実行されるＣａｌｃＯｐｅｒａｔｉｏｎコマンドを保持する。この例では、レジスタＡ２は、２つのＣａｌｃＯｐｅｒａｔｉｏｎコマンドを保持する領域を有する。
【００３９】
レジスタＡ３は、専有メモリ３９０のデータを共有メモリ２００に転送するＤｍａＬｏｃａｌＴｏＭａｉｎコマンドを保持する。この例では、レジスタＡ３は、２つのＤｍａＬｏｃａｌＴｏＭａｉｎコマンドを保持する領域を有する。
【００４０】
図４は、本技術の第１の実施の形態におけるステートマシン３２０が管理する処理状態の遷移例を示す図である。
【００４１】
状態＃０は、レジスタ群３１２がコマンドを保持しておらず、プロセッサ１００からコマンドが入力されるのを待機している状態である。この状態＃０においてプロセッサ１００からコマンド列が入力されると、次の状態＃１に遷移する。
【００４２】
状態＃１は、データ転送部３７０が共有メモリ２００から専有メモリ３９０にデータ転送するコマンドの１つ目（ＤｍａＭａｉｎＴｏＬｏｃａｌ＃０）を実行している状態である。この状態＃１において共有メモリ２００から専有メモリ３９０へのデータ転送が終了すると、次の状態＃２に遷移する。同様に、状態＃２は、ＤｍａＭａｉｎＴｏＬｏｃａｌ＃１を実行している状態であり、データ転送が終了すると、次の状態＃３に遷移する。また、状態＃３は、ＤｍａＭａｉｎＴｏＬｏｃａｌ＃２を実行している状態であり、データ転送が終了すると、次の状態＃４に遷移する。
【００４３】
状態＃４は、演算部３８０が演算を行うコマンドの１つ目（ＣａｌｃＯｐｅｒａｔｉｏｎ＃０）を実行している状態である。この状態＃１において演算部３８０の演算が終了すると、次の状態＃５に遷移する。同様に、状態＃５は、ＣａｌｃＯｐｅｒａｔｉｏｎ＃１を実行している状態であり、演算が終了すると、次の状態＃６に遷移する。
【００４４】
状態＃６は、データ転送部３７０が専有メモリ３９０から共有メモリ２００にデータ転送するコマンドの１つ目（ＤｍａＬｏｃａｌＴｏＭａｉｎ＃０）を実行している状態である。この状態＃６において専有メモリ３９０から共有メモリ２００へのデータ転送が終了すると、次の状態＃７に遷移する。同様に、状態＃７は、ＤｍａＬｏｃａｌＴｏＭａｉｎ＃１を実行している状態であり、データ転送が終了すると、最初の状態＃０に遷移する。
【００４５】
これら状態遷移においては、各機能ブロックからの処理終了の通知を待って遷移する手法と、一定時間待機した後に自動的に次の処理を行う手法の何れの手法も採用することができる。また、各コマンドの処理については、それぞれに要するコマンド数は予め定められているものとする。これにより、ステートマシン３２０は、各コマンドのデコード処理を行うことなく、状態を遷移させることができる。
【００４６】
図５は、本技術の実施の形態におけるコマンド列の一例を示す図である。このコマンド列は、プロセッサ１００上で動作するファームウェアとして実現され得る。
【００４７】
プロセッサ１００は、コマンド列を単位として、コプロセッサ３００に対してコマンドを発行する。これに先立って、デバッグ作業を行うために、コマンド間にブレークポイントを設定するＢｒｅａｋＳｅｔコマンドが第１行目に設けられる。このＢｒｅａｋＳｅｔコマンドは、コマンド列において指定したコマンドの処理が終了した際に、コマンド列の実行を停止（ブレーク動作）するように実行停止位置（ブレークポイント）を設定するものである。
【００４８】
このＢｒｅａｋＳｅｔコマンドによって設定される、コマンド列において停止すべき条件を停止条件と称する。この例では、コマンド列として上述のように７つのコマンドを備えることを想定しているため、停止条件は各コマンドに対応して１ビットずつ、計７ビットから構成される。これにより、７つのコマンドのうち１つ以上の任意のコマンドが終了した時点で処理を停止するよう設定することができる。この例では、データ転送部３７０が共有メモリ２００から専有メモリ３９０にデータ転送するコマンドの２つ目と、演算部３８０が演算を行うコマンドの１つ目とにおいてブレークポイントが設定されている。
【００４９】
第２行目のＤｍａＭａｉｎＴｏＬｏｃａｌＲ３２（ａｄｒＡ，Ｌ０，１２８）は、共有メモリ２００から専有メモリ３９０にデータ転送するコマンドの１つ目である。このコマンドは、共有メモリ２００のアドレスａｄｒＡから専有メモリ３９０のアドレスＬ０に、実数３２ビットのデータ１２８個をＤＭＡ転送（ダウンロード）するコマンドである。このコマンドにより転送されたデータは、ベクトルＡｉとして用いられる。
【００５０】
第３行目のＤｍａＭａｉｎＴｏＬｏｃａｌＲ３２（ａｄｒＦ，Ｌ１，１２８）は、共有メモリ２００から専有メモリ３９０にデータ転送するコマンドの２つ目である。このコマンドは、共有メモリ２００のアドレスａｄｒＦから専有メモリ３９０のアドレスＬ１に、実数３２ビットのデータ１２８個をＤＭＡ転送（ダウンロード）するコマンドである。このコマンドにより転送されたデータは、ベクトルＦｉとして用いられる。
【００５１】
第４行目のＤｍａＭａｉｎＴｏＬｏｃａｌＮｏｐ（）は、共有メモリ２００から専有メモリ３９０にデータ転送するコマンドの３つ目である。ただし、このコマンドは、このタイミングではＤＭＡ転送を行わないＮＯＰ（No OPeration）動作を規定する。したがって、このコマンドによってＤＭＡ転送は実行されない。
【００５２】
第５行目のＯｐｅｒａｔｉｏｎＭｕｌ３２（Ｌ０，Ｌ１，Ｌ２，１２８）は、演算部３８０が演算を行うコマンドの１つ目である。このコマンドは、専有メモリ３９０のアドレスＬ０およびＬ１に記憶される１２８個の３２ビットデータをそれぞれ乗算して専有メモリ３９０のアドレスＬ２に記憶するコマンドである。このコマンドにより演算されたデータは、ベクトルＸｉとして用いられる。
【００５３】
第６行目のＯｐｅｒａｔｉｏｎＮｏｐ（）は、演算部３８０が演算を行うコマンドの２つ目である。ただし、このコマンドは、このタイミングでは演算を行わないＮＯＰ動作を規定する。したがって、このコマンドによって演算は実行されない。
【００５４】
第７行目のＤｍａＬｏｃａｌＴｏＭａｉｎＲ３２（ａｄｒＸ，Ｌ２，１２８）は、専有メモリ３９０から共有メモリ２００にデータ転送するコマンドの１つ目である。このコマンドは、専有メモリ３９０のアドレスＬ２から共有メモリ２００のアドレスａｄｒＸに、実数３２ビットのデータ１２８個をＤＭＡ転送（アップロード）するコマンドである。このコマンドにより転送されるデータは、第５行目において演算されたベクトルＸｉである。
【００５５】
第８行目のＤｍａＬｏｃａｌＴｏＭａｉｎＮｏｐ（）は、専有メモリ３９０から共有メモリ２００にデータ転送するコマンドの２つ目である。ただし、このコマンドは、このタイミングではＤＭＡ転送を行わないＮＯＰ動作を規定する。したがって、このコマンドによってＤＭＡ転送は実行されない。
【００５６】
第２行目から第８行目のコマンドは、コマンド列１を構成する。すなわち、これら７つのコマンドは、プロセッサ１００からコプロセッサ２に、コマンド列１としてまとめて発行される。デバッグ動作時には、第３行目と第５行目にブレークポイントが設定されているため、第３行目のコマンド終了時点および第５行目のコマンド終了時点で、コマンド列１の動作が停止する。
【００５７】
図６は、本技術の第１の実施の形態における制御部３３０の制御信号の一例を示す図である。制御部３３０は、バスインターフェース３６０との間に、信号線３６１、３６２、３６３および３６９を備える。また、制御部３３０は、ステートマシン３２０との間に、信号線３２３および３２４を備える。
【００５８】
信号線３６１は、プロセッサ１００から制御部３３０に対して、ブレークポイント設定が有効か否かを指示するｂｒｅａｋ＿ｅｎ信号を送信するための信号線である。制御部３３０は、ｂｒｅａｋ＿ｅｎ信号が有効を示しているときに停止条件を満たすとブレーク動作を行う。
【００５９】
信号線３６２は、プロセッサ１００から制御部３３０に対して、ブレーク動作のための停止条件を設定するｂｒｅａｋ＿ｓｔａｔｅ信号を送信するための信号線である。上述のように、この例ではコマンド列が７つのコマンドを備えることを想定しているため、ｂｒｅａｋ＿ｓｔａｔｅ信号は７ビット幅となる。
【００６０】
信号線３６９は、ブレーク動作のための停止条件を満たして処理が停止した際に、制御部３３０からプロセッサ１００に対してその旨を報告するｂｒｅａｋ＿ｄｏｎｅ信号を送信するための信号線である。
【００６１】
信号線３６３は、プロセッサ１００から制御部３３０に対して、ブレーク動作を解除するｒｅｌｅａｓｅ信号を送信するための信号線である。
【００６２】
信号線３２３は、ステートマシン３２０から制御部３３０に対して、データ転送部３７０および演算部３８０における処理状態を示すｓｔａｔｅ信号を送信するための信号線である。上述のように、この例では８つの処理状態を想定しており、そのうちの１つの処理状態を示せばよいため、ｓｔａｔｅ信号は３ビット幅で足りる。
【００６３】
信号線３２４は、ブレーク動作のための停止条件を満たした際に、制御部３３０からステートマシン３２０に対して処理の停止を指示するｂｒｅａｋ信号を送信するための信号線である。
【００６４】
制御部３３０は、ｂｒｅａｋ＿ｅｎ信号が有効を示しているときに、ステートマシン３２０から供給されるｓｔａｔｅ信号によって示される処理状態が、ｂｒｅａｋ＿ｓｔａｔｅ信号によって設定された停止条件を満たす場合に、ブレーク動作を行う。すなわち、制御部３３０は、ステートマシン３２０に対して処理の停止を指示するｂｒｅａｋ信号を送信するとともに、プロセッサ１００に対してｂｒｅａｋ＿ｄｏｎｅ信号を送信する。
【００６５】
コマンド列の処理の停止中に、デバッグ作業としてハードウェア内部ステータスやローカルメモリの値などが採取される。その後、処理を再開するために、プロセッサ１００は制御部３３０にブレーク動作を解除するｒｅｌｅａｓｅ（リリース）信号を送信する。これにより、制御部３３０は、ステートマシン３２０に対するｂｒｅａｋ信号を解除する。なお、ｒｅｌｅａｓｅ信号は、ＩＣＥ（In-Circuit Emulator）を介してプロセッサ１００に入力されることが想定されるが、プロセッサ１００上で動作するファームウェアにより実行されてもよい。
【００６６】
［情報処理システムの動作］
図７は、本技術の第１の実施の形態における情報処理システムの動作の一例を示すシーケンス図である。
【００６７】
コマンド列１の実行に先立って、プロセッサ１００から停止条件の設定が指示されると（８１１）、バスインターフェース３６０を介して制御部３３０において停止条件が設定される。コマンド列１の処理が開始すると、ステートマシン３２０において管理される処理状態が制御部３３０に適宜通知される（８１２）。
【００６８】
制御部３３０は、ステートマシン３２０から通知される処理状態を監視し、設定された停止条件を満たすか否かを判断する。そして、停止条件を満たすことを検出すると（８１３）、ステートマシン３２０にブレーク開始を指示する（８１４）。これにより、ステートマシン３２０は状態遷移を停止し、コマンド保持部３１０からのコマンドの供給が停止し、コマンド列の処理が停止してブレーク状態となる（８１５）。
【００６９】
また、制御部３３０は、停止条件を満たすことを検出すると（８１３）、バスインターフェース３６０を介してプロセッサ１００にブレーク状態の発生を報告する（８１６）。デバッグ作業が行われた後、プロセッサ１００からバスインターフェース３６０を介して制御部３３０にリリース信号が入力される（８１７）。
【００７０】
制御部３３０は、リリース信号を受けると、ブレーク状態を解除する旨をステートマシン３２０に指示する（８１８）。これにより、ステートマシン３２０は状態遷移を再開し、コマンド保持部３１０からのコマンドの供給が再開し、コマンド列の処理が再開してブレーク状態が解除される（８１９）。
【００７１】
図８は、本技術の第１の実施の形態における制御部３３０における処理手順例を示す流れ図である。
【００７２】
制御部３３０は、プロセッサ１００から停止条件の設定が指示されると、停止条件を設定する（ステップＳ９１１）。コマンド列１の処理が開始すると、制御部３３０は、ステートマシン３２０から通知される処理状態を監視し、設定された停止条件を満たすか否かを判断する（ステップＳ９１３）。
【００７３】
そして、停止条件を満たすことを検出すると（ステップＳ９１３：Ｙｅｓ）、制御部３３０は、ステートマシン３２０にブレーク開始を指示する（ステップＳ９１５）。これにより、ブレーク状態となる。このとき、制御部３３０は、プロセッサ１００にブレーク状態の発生を報告する（ステップＳ９１６）。
【００７４】
その後、制御部３３０は、プロセッサ１００からリリース信号を受けると（ステップＳ９１７：Ｙｅｓ）、ブレーク状態を解除する旨をステートマシン３２０に指示する（ステップＳ９１８）。これにより、ブレーク状態が解除される。
【００７５】
停止条件が検出されない場合（ステップＳ９１３：Ｎｏ）、または、ブレーク状態が解除された場合（ステップＳ９１８）、コマンド列の実行が終了したか否かが判断される（ステップＳ９１９）。コマンド列の実行が終了すると（ステップＳ９１９：Ｙｅｓ）、この処理手順は終了する。コマンド列の実行が終了していない場合には（ステップＳ９１９：Ｎｏ）、ステップＳ９１３以降の処理を繰り返す。
【００７６】
このように、本技術の第１の実施の形態によれば、プロセッサ１００からコプロセッサ３００に対してまとめて発行されたコマンド列における各コマンドの処理状態を監視することにより、コマンド単位でデバッグ作業を行うことができる。
【００７７】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、コプロセッサ３００のコマンドバッファ３０１に１組のコマンド列を保持することを想定していたが、複数組のコマンド列を保持するようにしてもよい。この第２の実施の形態では、コマンドバッファ３０１に複数組のコマンド列を保持して、それらを並行に実行することを想定する。なお、情報処理システムの全体構成としては上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
［情報処理システムの構成］
図９は、本技術の第２の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。
【００７８】
この第２の実施の形態では、レジスタ群３１２は、２組のコマンド列を保持するよう構成される。すなわち、第１のコマンド列を保持するレジスタＡ１乃至Ａ３と、第２のコマンド列を保持するレジスタＢ１乃至Ｂ３とを備える。なお、レジスタＡ１乃至Ａ３とレジスタＢ１乃至Ｂ３は、特許請求の範囲に記載の複数のサブレジスタ群の一例である。
【００７９】
また、この第２の実施の形態では、２組のコマンド列のそれぞれに対応して、２つのステートマシン３２１および３２２を備える。すなわち、ステートマシン３２１は第１のコマンド列の処理状態を管理し、ステートマシン３２２は第２のコマンド列の処理状態を管理する。
【００８０】
また、この第２の実施の形態におけるコマンドバッファ３０１は、入力レジスタ選択フラグ３３２と、ステートマシン選択フラグ３３３と、スイッチ３３４と、反転部３３５とを備える。
【００８１】
入力レジスタ選択フラグ３３２は、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらにコマンドを入力するかをスイッチ３１１が決定するためのフラグである。スイッチ３１１は、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらかにコマンドを入力するかを、入力レジスタ選択フラグ３３２に従って判断する。
【００８２】
ステートマシン選択フラグ３３３は、ステートマシン３２１および３２２の何れかを選択するためのフラグである。このステートマシン選択フラグ３３３の値は、ステートマシン３２１、３２２およびセレクタ３１３に供給される。ステートマシン選択フラグ３３３が「０」を示すときには、ステートマシン３２１によって管理される処理状態に従って処理が行われる。一方、ステートマシン選択フラグ３３３が「１」を示すときには、ステートマシン３２２によって管理される処理状態に従って処理が行われる。
【００８３】
レジスタ群３１２は、新たなコマンド列の書込みに先立って初期化される。そのため、レジスタの初期化命令がスイッチ３３４を介してステートマシン３２１または３２２に供給される。スイッチ３３４は、初期化命令をステートマシン３２１および３２２の何れかに振り分けるスイッチである。このスイッチ３３４は、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらに初期化命令を入力するかを、入力レジスタ選択フラグ３３２に従って判断する。
【００８４】
反転部３３５は、ステートマシン選択フラグ３３３の値を反転する回路である。これにより、ステートマシン３２１および３２２には、互いに相対する値がステートマシン選択フラグ３３３から供給されることになる。
【００８５】
スイッチ３３４および３１１は、入力レジスタ選択フラグ３３２の値に従って制御される。すなわち、入力レジスタ選択フラグ３３２が「０」を示すときには、スイッチ３１１はコマンドをレジスタＡ１乃至Ａ３に書き込む。また、このとき、スイッチ３３４は、プロセッサ１００からの初期化信号をステートマシン３２１に供給する。一方、入力レジスタ選択フラグ３３２が「１」を示すときには、スイッチ３１１はコマンドをレジスタＢ１乃至Ｂ３に書き込む。また、このとき、スイッチ３３４は、プロセッサ１００からの初期化信号をステートマシン３２２に供給する。
【００８６】
図１０は、本技術の第２の実施の形態におけるレジスタ群３１２とコマンドとの関係例を示す図である。ここでは、プロセッサ１００からコプロセッサ３００にまとめて発行されるコマンド列の１つには、７つのコマンドが含まれることを想定している。第１のコマンド列の７つのコマンドはレジスタＡ１乃至Ａ３に保持され、第２のコマンド列の７つのコマンドはレジスタＢ１乃至Ｂ３に保持される。
【００８７】
これらレジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３に保持されるコマンドの内容は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００８８】
図１１は、本技術の第２の実施の形態における制御部３３０の制御信号の一例を示す図である。制御部３３０が、バスインターフェース３６０との間に、信号線３６１、３６２、３６３および３６９を備える点は、上述の第１の実施の形態と同様である。一方、制御部３３０は、ステートマシン３２１との間に信号線３２５および３２６を備え、ステートマシン３２２との間に信号線３２７および３２８を備える。
【００８９】
信号線３２５は、ステートマシン３２１から制御部３３０に対して、データ転送部３７０および演算部３８０における処理状態を示すｓｔａｔｅ１信号を送信するための信号線である。信号線３２６は、ブレーク動作のための停止条件を満たした際に、制御部３３０からステートマシン３２１に対して処理の停止を指示するｂｒｅａｋ１信号を送信するための信号線である。
【００９０】
信号線３２７は、ステートマシン３２２から制御部３３０に対して、データ転送部３７０および演算部３８０における処理状態を示すｓｔａｔｅ２信号を送信するための信号線である。信号線３２８は、ブレーク動作のための停止条件を満たした際に、制御部３３０からステートマシン３２２に対して処理の停止を指示するｂｒｅａｋ２信号を送信するための信号線である。
【００９１】
制御部３３０は、ステートマシン３２１から供給されるｓｔａｔｅ１信号によって示される処理状態またはステートマシン３２２から供給されるｓｔａｔｅ２信号によって示される処理状態を監視する。ｂｒｅａｋ＿ｅｎ信号が有効を示しているときに、ｓｔａｔｅ１信号またはｓｔａｔｅ２信号の何れかが、ｂｒｅａｋ＿ｓｔａｔｅ信号によって設定された停止条件を満たす場合に、ブレーク動作を行う。すなわち、制御部３３０は、ステートマシン３２１および３２２に対して処理の停止を指示するｂｒｅａｋ１信号およびｂｒｅａｋ２信号を送信するとともに、プロセッサ１００に対してｂｒｅａｋ＿ｄｏｎｅ信号を送信する。
【００９２】
コマンド列の処理の停止中に、デバッグ作業としてハードウェア内部ステータスやローカルメモリの値などが採取される。その後、処理を再開するために、プロセッサ１００は制御部３３０にブレーク動作を解除するｒｅｌｅａｓｅ信号を送信する。これにより、制御部３３０は、ステートマシン３２１および３２２に対するｂｒｅａｋ信号を解除する。
【００９３】
図１２は、本技術の第２の実施の形態における複数のコマンド列間のブレーク連動の例を示す図である。この例では、先行するコマンド列１におけるＣａｌｃＯｐｅｒａｔｉｏｎと、後続のコマンド列２におけるＤｍａＭａｉｎＴｏＬｏｃａｌとが、並行して処理されていることを想定している。
【００９４】
先行するコマンド列１におけるＣａｌｃＯｐｅｒａｔｉｏｎ＃１の終了時点でブレークポイントが設定されていた場合、そのＣａｌｃＯｐｅｒａｔｉｏｎ＃１が終了すると、停止条件が検出されて、コマンド列１の実行が停止する。このとき、後続のコマンド列２におけるＤｍａＭａｉｎＴｏＬｏｃａｌ＃１が処理されているとすると、このＤｍａＭａｉｎＴｏＬｏｃａｌ＃１が終了時点で、コマンド列２の実行も停止する。すなわち、あるコマンド列においてブレーク状態が発生すると、それ以外のコマンド列もブレーク状態になる。その際、ブレーク状態が発生したタイミングで処理中のコマンドはそのまま処理され、それぞれのコマンドが終了した時点でそのコマンドが属するコマンド列の実行が停止する。
【００９５】
制御部３３０がｒｅｌｅａｓｅ信号を受信すると、ブレーク状態の解除がステートマシン３２１および３２２に指示され、コマンド列の各々の実行が再開される。
【００９６】
［情報処理システムの動作］
図１３は、本技術の第２の実施の形態における制御部３３０における処理手順例を示す流れ図である。
【００９７】
制御部３３０は、プロセッサ１００から停止条件の設定が指示されると、停止条件を設定する（ステップＳ９１１）。コマンド列１の処理が開始すると、制御部３３０は、ステートマシン３２１および３２２から通知される処理状態を監視し、設定された停止条件を満たすか否かを判断する（ステップＳ９１３）。
【００９８】
そして、あるコマンド列において停止条件を満たすことを検出すると（ステップＳ９１３：Ｙｅｓ）、制御部３３０は、ステートマシン３２１および３２２のうち他のコマンド列に対応する方にブレーク状態の発生を通知する（ステップＳ９１４）。また、制御部３３０は、ステートマシン３２０にブレーク開始を指示する（ステップＳ９１５）。これにより、ブレーク状態となる。このとき、制御部３３０は、プロセッサ１００にブレーク状態の発生を報告する（ステップＳ９１６）。
【００９９】
その後、制御部３３０は、プロセッサ１００からリリース信号を受けると（ステップＳ９１７：Ｙｅｓ）、ブレーク状態を解除する旨をステートマシン３２１および３２２に指示する（ステップＳ９１８）。これにより、ブレーク状態が解除される。
【０１００】
停止条件が検出されない場合（ステップＳ９１３：Ｎｏ）、または、ブレーク状態が解除された場合（ステップＳ９１８）、コマンド列の実行が終了したか否かが判断される（ステップＳ９１９）。コマンド列の実行が終了すると（ステップＳ９１９：Ｙｅｓ）、この処理手順は終了する。コマンド列の実行が終了していない場合には（ステップＳ９１９：Ｎｏ）、ステップＳ９１３以降の処理を繰り返す。
【０１０１】
このように、本技術の第２の実施の形態によれば、複数組のコマンド列が並行に実行されている際に何れかのコマンド列においてブレーク状態が発生すると、他のコマンド列においても連動して実行を停止して、コマンド単位でデバッグ作業を行うことができる。
【０１０２】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１０３】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１０４】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１０５】
なお、本技術は以下のような構成もとることができる。
（１）複数のコマンドを含むコマンド列を単位としてプロセッサから発行された各コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記コマンドレジスタ群から供給された前記コマンドを処理するコマンド処理部と、
前記コマンド処理部における前記コマンドの処理状態を管理するステートマシンと、
前記コマンド列において停止すべき条件を停止条件として予め設定して当該設定された停止条件と前記ステートマシンにおいて管理される前記処理状態とに基づいて前記コマンド処理部における処理を停止させる制御部と
を具備する演算処理装置。
（２）前記制御部は、前記コマンド列における全てのコマンドの処理の終了を待つことなく前記停止条件を満たすコマンドの処理が終了した時点で前記コマンド処理部における処理を停止させる
前記（１）に記載の演算処理装置。
（３）前記制御部は、前記停止条件として前記コマンド処理部における複数の前記処理状態を設定する
前記（１）または（２）に記載の演算処理装置。
（４）前記制御部は、前記プロセッサから処理停止の解除命令を受けると前記コマンド処理部における処理を再開させる
前記（１）から（３）のいずれかに記載の演算処理装置。
（５）前記ステートマシンは、前記コマンド列に対応して予め定められたコマンド数に従って前記処理状態を遷移させて前記処理状態を管理する
前記（１）から（４）のいずれかに記載の演算処理装置。
（６）前記コマンドレジスタ群は、複数のサブレジスタ群を備え、
前記制御部は、前記プロセッサから複数の前記コマンド列を受けた際に前記複数のサブレジスタ群毎に異なる前記コマンド列が保持されるように制御する
前記（１）から（５）のいずれかに記載の演算処理装置。
（７）前記ステートマシンは、前記異なるコマンド列に対応してそれぞれ固有の前記処理状態を管理する
前記（６）に記載の演算処理装置。
（８）前記制御部は、複数の前記コマンド列の一つにおいて前記停止条件を満たす場合には他の前記コマンド列においても前記コマンド処理部における処理を停止させる
前記（６）または（７）に記載の演算処理装置。
（９）前記制御部は、複数の前記コマンド列の一つにおいて前記停止条件を満たす場合には他の前記コマンド列において処理されているコマンドの処理が終了した時点で前記コマンド処理部における処理を停止させる
前記（６）から（８）のいずれかに記載の演算処理装置。
（１０）複数のコマンドを含むコマンド列を単位として前記コマンドを発行するプロセッサと、
前記プロセッサから発行された前記コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記コマンドレジスタ群から供給された前記コマンドを処理するコマンド処理部と、
前記コマンド処理部における前記コマンドの処理状態を管理するステートマシンと、
前記コマンド列において停止すべき条件を停止条件として予め設定して当該設定された停止条件と前記ステートマシンにおいて管理される前記処理状態とに基づいて前記コマンド処理部における処理を停止させる制御部と
を具備する情報処理システム。
【符号の説明】
【０１０６】
１００  プロセッサ
１０１  コントロールバス
１０２  メモリバス
２００  共有メモリ
３００  コプロセッサ
３０１  コマンドバッファ
３１０  コマンド保持部
３１１  スイッチ
３１２  レジスタ群
３１３  セレクタ
３２０、３２１、３２２  ステートマシン
３３０  制御部
３３２  入力レジスタ選択フラグ
３３３  ステートマシン選択フラグ
３３４  スイッチ
３３５  反転部
３６０  バスインターフェース
３７０  データ転送部
３８０  演算部
３９０  専有メモリ
【図１】
2018120449.tif 000003
【図２】
2018120449.tif 000004
【図３】
2018120449.tif 000005
【図４】
2018120449.tif 000006
【図５】
2018120449.tif 000007
【図６】
2018120449.tif 000008
【図７】
2018120449.tif 000009
【図８】
2018120449.tif 000010
【図９】
2018120449.tif 000011
【図１０】
2018120449.tif 000012
【図１１】
2018120449.tif 000013
【図１２】
2018120449.tif 000014
【図１３】
2018120449.tif 000015