(57)【要約】  フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供する。  プロセッサシステム２００は、一のタスク実行部２２０と、他のタスク実行部２５０と、制御部２３２及びフラグ領域２３４とを備えるフラグ記憶部２３０を備える。  一のタスク実行部２２０は、フラグ領域２３４に記憶されたフラグ情報が所定の条件を充足しない場合、制御部２３２にフラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留する。  制御部２３２は、他のタスク実行部２５０によるフラグ情報へのアクセスの有無を監視し、フラグ情報へのアクセスがされた場合、一のタスク実行部２２０に対し、フラグ情報へのアクセスの保留を解除させるための指示を出力する。
2018150524.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部とを備え、
前記複数のタスク実行部のうちの一のタスク実行部は、
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記複数のタスク実行部のうちの他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成されていることを特徴とするプロセッサシステム。
【請求項２】
請求項１記載のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることを特徴とするプロセッサシステム。
【請求項３】
請求項１又は２記載のプロセッサシステムにおいて、
前記一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタを備え、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とするプロセッサシステム。
【請求項４】
請求項１〜３のうちいずれか１項記載のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデータの転送を実行するデータ転送ユニットであり、
前記他のタスク実行部は、前記データ領域に記憶されたデータを読み込んで、当該読み込まれたデータに基づいてプログラムに従って演算処理を実行し、前記演算処理結果を前記データ領域に記憶させ、前記フラグ情報の値を更新する演算ユニットであることを特徴とするプロセッサシステム。
【請求項５】
請求項１〜４のうちいずれか１項記載のプロセッサシステムを複数備え、
前記複数のプロセッサシステムのそれぞれからアクセス可能な共有メモリを備えることを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサシステム及びマルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、プログラムに含まれるタスクに従って動作することにより、他のタスク実行部とは独立して動作するタスク実行部を備えたプロセッサシステムが知られている。【０００３】
例えば、特許文献１には、並列化コンパイラによって作成されたデータ転送ユニット用プログラムに含まれるタスクに従って動作するタスク実行部としてのデータ転送ユニットを備えたプロセッサシステムが記載されている。【０００４】
特許文献１に記載されたこのデータ転送ユニットの動作の一態様を簡単に説明する。まず、このデータ転送ユニットは、起動されるとデータ転送ユニット用プログラムを読み込む。このデータ転送ユニットは、データ転送ユニット用プログラムに含まれるタスクに従って、前記プロセッサシステムの記憶部に記憶された第１のフラグ変数領域を繰り返し確認する。データ転送ユニットは、第１のフラグ変数領域にフラグが書き込まれたことを確認すると、前記プロセッサシステムの記憶部に記憶された所定のデータの転送を開始する。【０００５】
この特許文献１のデータ転送ユニットは、データ転送ユニット用プログラムに含まれるタスクに従って動作するので、プロセッサシステムに備えられた他のタスク実行部であるプロセッサ又はアクセラレータとは独立して動作することができる。この結果、他のタスク実行部のデータの処理と、データの転送を並列に実行することができるので、処理の高速化を図ることができる。【０００６】
各タスク実行部が独立して動作していても、前述したフラグ情報の確認により、書き込まれたフラグにより示される他のタスク実行部のデータ書き込み等の完了よりも後に、データ転送ユニットのデータ転送等の開始をさせることができるので、プログラム設計者の意図に反したデータの処理または転送が防止される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開公報第２０１３／０６５８７号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、フラグチェックにあたって、各タスク実行部が頻繁にフラグチェックを行うと、フラグチェックに係るオーバーヘッドが大きくなり、プロセッサシステム全体の処理速度が低下したり、消費電力が増大したりする可能性もある。【０００９】
一方、フラグチェックのオーバーヘッドの増大を避けるため、各タスク実行部によるフラグチェックの間隔を長くすると、フラグが更新されたタイミングとフラグチェックのタイミングとにずれが生じることにより、フラグチェックに後続するタスクの実行までに不要な待機時間が生じる可能性もある。【００１０】
このような問題に鑑み、本発明は、フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のプロセッサシステムは、
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部とを備え、
前記複数のタスク実行部のうちの一のタスク実行部は、
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記複数のタスク実行部のうちの他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成されていることを特徴とする。【００１２】
当該構成のプロセッサシステムによれば、一のタスク実行部により、プログラムに含まれるフラグチェックタスクに従って、フラグ記憶部のフラグ領域に記憶されたフラグ情報が所定の条件を充足する否かが判定される。【００１３】
フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、当該一のタスク実行部により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。【００１４】
これにより、前記フラグチェックタスクに後続するタスクの実行開始タイミングを調節することができる。【００１５】
また、当該一のタスク実行部は、前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、フラグ情報へのアクセスを保留する。【００１６】
そして、フラグ記憶部の制御部は、前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、他のタスク実行部による前記フラグ情報へのアクセスの有無を監視する。【００１７】
そして、フラグ記憶部の制御部は、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力する。【００１８】
フラグ情報にアクセスされていなければ、フラグ情報が更新されることはない。このため、フラグ情報へのアクセスがあったことを条件としてフラグ情報へのアクセスの保留を解除させることによりフラグ情報が更新されていない間のフラグ情報へのアクセスを回避できる。このため、フラグ領域を頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報へのアクセスがされた場合、換言すれば、フラグ情報が変更されたりすることにより、フラグ情報が所定の条件を充足する可能性がある場合に一のタスク実行部のフラグ情報へのアクセスの保留が解除されるので、フラグチェックに後続するタスクの実行までの待機時間を短縮することができる。【００１９】
本発明のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることが好ましい。【００２０】
当該構成のプロセッサシステムによれば、前記フラグ情報へのアクセスを保留する際に前記電力供給部から当該一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。【００２１】
本発明のプロセッサシステムにおいて、
前記一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタを備え、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることが好ましい。【００２２】
当該構成のプロセッサシステムによれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合、プログラムカウンタを更新せずに前記割込み処理が実行される。そして、その後、前記プログラムカウンタを参照して次に実行すべきタスクが認識される。【００２３】
ここで、フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後にプログラムカウンタが更新されるから、フラグ情報へのアクセスの保留中には、プログラムカウンタが更新されていないこととなる。すなわち、プログラムカウンタに示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっているから、割込み処理の実行完了後、割込み処理においてプログラムカウンタが更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。【００２４】
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。【００２５】
本発明のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデータの転送を実行するデータ転送ユニットであり、
前記他のタスク実行部は、前記データ領域に記憶されたデータを読み込んで、当該読み込まれたデータに基づいてプログラムに従って演算処理を実行し、前記演算処理結果を前記データ領域に記憶させ、前記フラグ情報の値を更新する演算ユニットであることが好ましい。【００２６】
本発明のマルチプロセッサシステムは、
本発明のプロセッサシステムを複数備え、
前記複数のプロセッサシステムのそれぞれからアクセス可能な共有メモリを備えることが好ましい。
【図面の簡単な説明】
【００２７】
【図１】マルチプロセッサシステムの構成図。
【図２】データ転送処理のフローチャート。
【図３】転送完了待ちタスクのフローチャート。
【図４】フラグチェックタスクのフローチャート。
【図５】アドレスチェックのフローチャート。
【発明を実施するための形態】
【００２８】
図１〜図５を参照して、本発明の一実施形態を説明する。
【００２９】
（マルチプロセッサシステムの構成）
マルチプロセッサシステム１は、図１に示されるように、共有メモリ１００と、複数のアクセラレータ２００と、ホストプロセッサ３００と、電力供給部４００と、これらの各構成要素を互いに結合する相互接続網５００とを備える。
【００３０】
共有メモリ１００は、ＲＡＭ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びＩ／Ｏ回路により構成されている。共有メモリ１００は、各アクセラレータ２００及びホストプロセッサ３００からアクセス可能に構成されている。共有メモリ１００は、例えば、各アクセラレータ２００又はホストプロセッサ３００の内部に設けられていてもよい。
【００３１】
共有メモリ１００には、各構成要素がプログラムを実行する際に参照されるデータが格納される。これらのデータは、各構成要素によって書き込またデータであってもよいし、不図示のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記憶装置から読み込またデータであってもよいし、ネットワークを介して外部からダウンロードされたデータであってもよい。
【００３２】
各アクセラレータ２００は、データ転送プログラム格納メモリ２１０と、データ転送ユニット２２０と、ローカルメモリ２３０と、制御レジスタ２４０と、ベクトル演算ユニット２５０とを備える。本実施形態では、各アクセラレータ２００が、本発明の「プロセッサシステム」の一例に相当する。一又は複数のアクセラレータがチップ上に構成され、マルチプロセッサシステム１の他の構成要素から分離できるように構成されていてもよい。
【００３３】
データ転送プログラム格納メモリ２１０は、ＲＡＭ及びＩ／Ｏ回路により構成され、プログラム領域２１２と、プログラムカウンタ格納領域２１４とを備える。
【００３４】
プログラム領域２１２は、データ転送ユニット用プログラムに含まれる各タスクを格納している。本実施形態では、各タスクは一の機械命令である。これに代えてまたは加えて、タスクが複数の機械命令により構成されてもよい。
【００３５】
プログラムカウンタ格納領域２１４は、データ転送ユニット２２０が割り込み処理を実行する場合に、データ転送ユニット２２０のプログラムカウンタ２２２に格納された値を退避するための領域である。
【００３６】
データ転送ユニット２２０は、プログラムカウンタ２２２を備える。データ転送ユニット２２０は、プログラムカウンタ２２２を参照し、次に実行すべきタスクのアドレスを認識し、当該アドレスを用いてプログラム領域２１２に格納されたタスクを参照し、当該タスクを実行するように構成されている。本実施形態では、このデータ転送ユニット２２０を本発明の「一のタスク実行部」の一例として説明する。
【００３７】
プログラムカウンタ２２２は、ＲＡＭ及びＩ／Ｏ回路により構成されている。プログラムカウンタ２２２は、データ転送ユニット２２０が次に実行すべきタスクのプログラム領域２１２上のアドレスを記憶する。プログラムカウンタ２２２はデータ転送ユニット２２０の実行中のタスクの終了を検知すると、現在記憶しているタスクの長さから次に実行すべきタスクのアドレスを算出し、当該アドレスを記憶する。
【００３８】
また、データ転送ユニット２２０は、第１クロック周波数、第１クロック周波数よりも小さい第２クロック周波数、ゼロ（停止）のいずれかのクロック周波数を制御レジスタ２４０に記憶させることができるように構成されている。データ転送ユニット２２０は、起動直後において、第１クロック周波数で動作している。
【００３９】
なお、本実施形態において、一の構成要素が情報を「認識する」とは、一の構成要素がメモリに記憶された情報を読み取ること、一の構成要素が他の構成要素から当該情報を受信すること、一の構成要素が他の構成要素から受信した信号を対象として所定の演算処理（計算処理または探索処理など）を実行することにより当該情報を導出すること、一の構成要素が他の構成要素による演算処理結果としての当該情報を当該他の構成要素から受信すること、一の構成要素が当該受信信号にしたがってメモリまたは外部から当該情報を読み取ること等、当該情報を取得するためのあらゆる演算処理を実行することを意味する。
【００４０】
ローカルメモリ２３０は、ＲＡＭ及びＩ／Ｏ回路により構成されている。ローカルメモリ２３０は、当該ローカルメモリ２３０を備えるアクセラレータ２００の各構成要素及びホストプロセッサ３００からアクセス可能に構成されている。ローカルメモリ２３０は、外部からのアクセス時に指定の制御を行うメモリ制御回路２３２、フラグ情報を記憶するフラグ領域２３４、及びデータを記憶するデータ領域２３６を備える。ローカルメモリ２３０が、本発明の「フラグ記憶部」の一例に相当し、メモリ制御回路２３２が、本発明の「制御部」の一例に相当する。なお、説明の便宜上、フラグ領域２３４とデータ領域２３６とを分けて記載しているが、同一のハードウェアによりフラグ領域２３４とデータ領域２３６とが構成されてもよい。
【００４１】
制御レジスタ２４０は、ＲＡＭ及びＩ／Ｏ回路により構成されている。制御レジスタ２４０は、当該ローカルメモリ２３０を備えるアクセラレータ２００の各構成要素及びホストプロセッサ３００からアクセス可能に構成されている。制御レジスタ２４０は、制御レジスタ２４０を備えるアクセラレータ２００のデータ転送ユニット２２０及びベクトル演算ユニット２５０の動作状態を示す情報を記憶している。また、制御レジスタ２４０は、制御レジスタ２４０を備えるアクセラレータ２００のデータ転送ユニット２２０及びベクトル演算ユニット２５０のクロック周波数を記憶するように構成されている。データ転送ユニット２２０及びベクトル演算ユニット２５０は、制御レジスタ２４０を参照することにより、自己のクロック周波数を変更することができる。
【００４２】
ベクトル演算ユニット２５０は、ローカルメモリ２３０から読み取ったベクトル演算ユニット用プログラムに従って、ベクトル演算、スカラ演算並びにローカルメモリ２３０のデータの読み取り及び書込みを実行するように構成されている。本実施形態では、このベクトル演算ユニット２５０を本発明の「他のタスク実行部」の一例として説明する。この場合、各アクセラレータのデータ転送ユニット２２０及び各ベクトル演算ユニット２５０により「複数のタスク実行部」が構成される。
【００４３】
ホストプロセッサ３００は、中央演算ユニット（ＣＰＵ）等のプロセッサを含んで構成され、内部のレジスタに記憶されたホストプロセッサ用プログラムを読み出し、当該ホストプロセッサ用プログラムに従って、当該ホストプロセッサ用プログラムに規定されるホストプロセッサ用タスクを実行するように構成されている。ホストプロセッサ用タスクには、各構成要素の動作を制御するタスクも含まれる。
【００４４】
ホストプロセッサ３００は、不図示の入力部を介して入力されたユーザの指示等のイベントに応じて、一又は複数のアクセラレータ２００に対し、割込み処理を実行させるように構成されている。
【００４５】
電力供給部４００は、共有メモリ１００、各アクセラレータ２００、ホストプロセッサ３００及び相互接続網５００に電力を供給するように構成されている。電力供給部４００は、各アクセラレータ２００の制御レジスタ２４０に記憶された各構成要素のクロック周波数を参照することにより、所定の式または対応表を用いて、各アクセラレータ２００の各構成要素に供給する電力量を調節する。電力供給部４００は、各アクセラレータ２００、ホストプロセッサ３００にそれぞれ設けられてもよい。
【００４６】
相互接続網５００は、例えば、バス又はクロスバスである。
【００４７】
なお、それぞれ１の逐次実行プログラムからデータ転送ユニット用プログラム、ベクトル演算ユニット用プログラム及びホストプロセッサ用プログラムが生成される。より具体的には、並列化コンパイラが、逐次実行プログラムを解析する処理、制御依存性及びデータ依存性から各タスクの並列性を抽出する処理、並びに、各タスクの処理時間及び消費電力等のタスクの実行コスト又はタスクの優先度に基づいて、各データ転送ユニット２２０、ベクトル演算ユニット２５０及びホストプロセッサ３００にタスクを割り当る処理をコンピュータに実行させる。このタスクの割り当てに基づいて、前記並列化コンパイラは、並列実行データ転送ユニット用プログラム、ベクトル演算ユニット用プログラム及びホストプロセッサ用プログラムをコンピュータに生成させる。このような並列化コンパイラとしては、例えば、特開２００７−３２８４１６号公報又は特開２００７−３２８４１５号公報に示される並列化コンパイラが使用できる。
【００４８】
（データ転送処理）
次に、図２を参照しながら、データ転送ユニット２２０によるデータ転送処理を説明する。
【００４９】
このデータ転送処理は、概説すると、データ転送ユニット２２０が、ベクトル演算ユニット２５０で使用されるデータを共有メモリ１００からローカルメモリ２３０に転送し、ベクトル演算ユニット２５０の処理の終了を待って、ベクトル演算ユニット２５０がローカルメモリ２３０に格納したデータを共有メモリ１００に転送する処理である。
【００５０】
まず、データ転送ユニット２２０は、プログラム領域２１２から読み取ったタスクに従って、対象のデータが記憶されている共有メモリ１００上の開始アドレス、アドレスの増分、当該読み取ったデータの格納先のローカルメモリ２３０のデータ領域２３６上の開始アドレスを認識する（図２／ＳＴＥＰ１００）。対象のデータは、例えば、１次元配列である。この場合、増分とは１次元配列に格納された各データの大きさ及びアクセスすべき要素に応じて定まる値である。対象のデータは、スカラ変数であってもよいし、２次元以上の配列であってもよいし、そのほかのデータであってもよい。なお、ローカルメモリ２３０のデータ領域２３６において、データを連続的に格納しておくことにより、ベクトル演算ユニット２５０が、高速にデータにアクセスし、ベクトル演算ユニット用プログラムに含まれる次の処理を開始することが可能となる。
【００５１】
データ転送ユニット２２０は、対象のデータが記憶されている共有メモリ１００上の開始アドレス、アドレスの増分、当該読み取ったデータの格納先のローカルメモリ２３０のデータ領域２３６上の開始アドレスに従ってデータ転送を開始する（図２／ＳＴＥＰ２００）。データ転送中は、制御レジスタ２４０に記憶されたデータ転送ユニット２２０の状態を示す転送状態情報に、転送状態を示す値（例えば１）が設定され、データ転送が行われていない間には、転送状態情報に、転送していない状態（たとえば０）を示す値が設定される。
【００５２】
次に、データ転送ユニット２２０は、転送完了待ちタスクを実行する（図２／ＳＴＥＰ３００）。転送完了待ちタスクの詳細については後述する。転送完了待ちタスクの実行により、データ転送ユニット２２０は、図２／ＳＴＥＰ２００のデータ転送が完了するまで、次に実行すべきタスクの実行の開始を保留することができる。
【００５３】
図２／ＳＴＥＰ３００の処理の後、データ転送ユニット２２０は、ローカルメモリ２３０のデータ領域２３６の読み取り対象のデータの開始アドレス、共有メモリ１００のデータの記憶先の開始アドレス及び増分を認識する（図２／ＳＴＥＰ４００）。
【００５４】
データ転送ユニット２２０は、フラグチェックタスクを実行する（図２／ＳＴＥＰ５００）。フラグチェックタスクの詳細は後述する。フラグチェックタスクの実行により、データ転送ユニット２２０は、ベクトル演算ユニット２５０の処理の終了を待って図２／ＳＴＥＰ６００のデータ転送を開始することができるようになる。
【００５５】
データ転送ユニット２２０は、ローカルメモリ２３０のデータ領域２３６の読み取り対象のデータの開始アドレス、共有メモリ１００のデータの記憶先の開始アドレス及び増分に従ってデータ転送を開始する（図２／ＳＴＥＰ６００）。なお、「図２／ＳＴＥＰ６００」が、本発明の「フラグチェックタスクに後続するタスク」に相当する。
【００５６】
（転送完了待ちタスク）
次に、図３を参照して、図２／ＳＴＥＰ３００の転送完了待ちタスクの詳細を説明する。なお、この処理の実行の開始時において、プログラムカウンタ２２２は、「転送完了待ちタスク」のアドレスを記憶している。
【００５７】
データ転送ユニット２２０は、制御レジスタ２４０にアクセスし、自身のクロック周波数を第２クロック周波数となるように変更する（図３／ＳＴＥＰ３０２）。これにより、電力供給部４００は、この更新されたクロック周波数を参照して、データ転送ユニット２２０に供給する電力量を小さくさせるように動作する。
【００５８】
データ転送ユニット２２０は、割込み処理があるかどうかを判定する（図３／ＳＴＥＰ３０４）。
【００５９】
当該判定処理が否定的である場合（図３／ＳＴＥＰ３０４‥ＮＯ）、データ転送ユニット２２０は、制御レジスタ２４０を参照することにより、転送状態情報を読み込む（図３／ＳＴＥＰ３０６）。
【００６０】
データ転送ユニット２２０は、転送状態情報が転送中を示す値であるか否かを判定する（図３／ＳＴＥＰ３０８）。
【００６１】
当該判定結果が肯定的である場合（図３／ＳＴＥＰ３０８‥ＹＥＳ）、データ転送ユニット２２０は、図３／ＳＴＥＰ３０４以下の処理を実行する。
【００６２】
当該判定結果が否定的である場合（図３／ＳＴＥＰ３０８‥ＮＯ）、データ転送ユニット２２０は、制御レジスタ２４０にアクセスし、データ転送ユニット２２０のクロック周波数を第１クロック周波数に変更する（図３／ＳＴＥＰ３１０）。これにより、電力供給部４００は、この更新されたクロック周波数を参照して、データ転送ユニット２２０に供給する電力量を増加させるように動作する。
【００６３】
図３／ＳＴＥＰ３１０の後、データ転送ユニット２２０は、プログラムカウンタ２２２が次に実行すべきタスク（図２／ＳＴＥＰ４００のタスク）を示すようになるように更新し（図３／ＳＴＥＰ３１２）、転送完了待ちタスクを終了する。
【００６４】
また、図３／ＳＴＥＰ３０４の判定結果が肯定的である場合（図３／ＳＴＥＰ３０４‥ＹＥＳ）、データ転送ユニット２２０は、制御レジスタ２４０にアクセスし、データ転送ユニット２２０のクロック周波数を第１クロック周波数に変更する（図３／ＳＴＥＰ３１４）。これにより、電力供給部４００は、この更新されたクロック周波数を参照して、データ転送ユニット２２０に供給する電力量を増加させるように動作する。
【００６５】
データ転送ユニット２２０は、割込み処理を実行する（図３／ＳＴＥＰ３１６）。データ転送ユニット２２０は、割込み処理の実行の前に、プログラムカウンタ２２２の値を、プログラムカウンタ格納領域２１４に退避する。
【００６６】
データ転送ユニット２２０は、割込み処理の終了後、プログラムカウンタ格納領域２１４を参照し、次に実行すべきタスクのプログラム領域２１２上のアドレスを認識する（図３／ＳＴＥＰ３１８）。認識されたアドレスは、プログラムカウンタ２２２に記憶される。ここで、転送完了待ちタスクの実行開始以降にプログラムカウンタ２２２が割り込み処理で更新されていない限り、プログラムカウンタ格納領域２１４は、「転送完了待ちタスク」のアドレスを記憶している。
【００６７】
データ転送ユニット２２０は、読み込んだタスクのアドレスに示される「転送完了待ちタスク」をプログラム領域２１２から読み込んで実行する（図３／ＳＴＥＰ３２０）。転送完了待ちタスクでは、データ転送ユニット２２０のクロック周波数以外情報の更新を伴わず、データ転送ユニット２２０のクロック周波数もデータ転送ユニット２２０の動作状態を規定する値である。このため、転送完了待ちタスクを再実行してもデータの不整合は生じない。
【００６８】
（フラグチェックタスク）
図４を参照して、図２のＳＴＥＰ５００のフラグチェックタスクの詳細について説明する。なお、この処理の実行の開始時において、プログラムカウンタ２２２は、「転送完了待ちタスク」のアドレスを記憶している。
【００６９】
データ転送ユニット２２０は、ローカルメモリ２３０のフラグ領域２３４から、処理終了フラグを読み込む（図４／ＳＴＥＰ５０２）。この処理終了フラグは、データ転送ユニット用プログラムにおいてあらかじめフラグ領域２３４上のアドレスが指定された上で、ローカルメモリ２３０のフラグ領域２３４に記憶されている。処理終了フラグの初期値は、処理が未終了であることを示す値（例えばゼロ）である。ベクトル演算ユニット２５０は、指定の処理が終了した時に、処理終了フラグを処理が終了したことを示す値（例えば１）に更新する。処理終了フラグが、本発明の「フラグ情報」の一例に相当する。
【００７０】
データ転送ユニット２２０は、処理終了フラグが処理が終了したことを示す値か否かを判定する（図４／ＳＴＥＰ５０４）。
【００７１】
当該判定が否定的である場合（図４／ＳＴＥＰ５０４‥ＮＯ）、データ転送ユニット２２０は、処理終了フラグが記憶されているフラグ領域２３４上のアドレスをメモリ制御回路２３２に出力する（図４／ＳＴＥＰ５０６）。メモリ制御回路２３２は、当該アドレスに書込アクセスがあった場合、データ転送ユニット２２０に処理再開指示を出力するように構成されている。メモリ制御回路２３２の処理の詳細は後述する。なお、「処理終了フラグが記憶されているフラグ領域２３４上のアドレス」が本発明の「フラグ情報の監視をしていることを示す信号」の一例に相当する。
【００７２】
データ転送ユニット２２０は、制御レジスタ２４０にアクセスし、自身のクロック周波数を第２クロック周波数となるように変更する（図４／ＳＴＥＰ５０８）。
【００７３】
データ転送ユニット２２０は、割込み処理があるかどうかを判定する（図４／ＳＴＥＰ５１０）。
【００７４】
当該判定結果が否定的である場合（図４／ＳＴＥＰ５１０‥ＮＯ）、データ転送ユニット２２０は、メモリ制御回路から再開指示の入力があった否かを判定する（図４／ＳＴＥＰ５１２）。
【００７５】
当該判定結果が肯定的である場合（図４／ＳＴＥＰ５１２‥ＹＥＳ）、データ転送ユニット２２０は、図４／ＳＴＥＰ５０２以下の処理を実行する。
【００７６】
また、当該判定結果が否定的である場合（図４／ＳＴＥＰ５１２‥ＮＯ）、データ転送ユニット２２０は、図４／ＳＴＥＰ５１０以下の処理を実行する。
【００７７】
また、図４／ＳＴＥＰ５０４の判定結果が肯定的である場合（図４／ＳＴＥＰ５１０‥ＹＥＳ）、データ転送ユニット２２０は、制御レジスタ２４０にアクセスし、データ転送ユニット２２０のクロック周波数を第１クロック周波数に変更する（図４／ＳＴＥＰ５１４）。これにより、電力供給部４００は、この更新されたクロック周波数を参照して、データ転送ユニット２２０に供給する電力量を増加させるように動作する。
【００７８】
図４／ＳＴＥＰ５１４の後、データ転送ユニット２２０は、プログラムカウンタ２２２が次に実行すべきタスク（図２／ＳＴＥＰ６００のタスク）を示すようになるように更新し（図４／ＳＴＥＰ５１６）、フラグチェックタスクを終了する。
【００７９】
また、図４／ＳＴＥＰ５１０の判定結果が肯定的である場合（図４／ＳＴＥＰ５１０‥ＹＥＳ）、データ転送ユニット２２０は、制御レジスタ２４０にアクセスし、データ転送ユニット２２０のクロック周波数を第１クロック周波数に変更する（図４／ＳＴＥＰ５１８）。これにより、電力供給部４００は、この更新されたクロック周波数を参照して、データ転送ユニット２２０に供給する電力量を増加させるように動作する。
【００８０】
データ転送ユニット２２０は、割込み処理を実行する（図４／ＳＴＥＰ５２０）。データ転送ユニット２２０は、割込み処理の実行の前に、プログラムカウンタ２２２の値を、プログラムカウンタ格納領域２１４に退避する。
【００８１】
データ転送ユニット２２０は、割込み処理の終了後、プログラムカウンタ格納領域２１４を参照し、次に実行すべきタスクのプログラム領域２１２上のアドレスを認識する（図４／ＳＴＥＰ５２２）。読み込んだアドレスは、プログラムカウンタ２２２に記憶される。ここで、フラグチェックタスクの実行開始以降にプログラムカウンタ２２２が割り込み処理で更新されていない限り、プログラムカウンタ格納領域２１４は、「フラグチェックタスク」のアドレスを記憶している。
【００８２】
データ転送ユニット２２０は、読み込んだタスクのアドレスに示される「フラグチェックタスク」をプログラム領域２１２から読み込んで実行する（図４／ＳＴＥＰ５２４）。フラグチェックタスクでは、転送完了待ちタスクと同様に、データ転送ユニット２２０のクロック周波数及び処理終了フラグのアドレス以外情報の更新を伴っていない。そして、データ転送ユニット２２０のクロック周波数はデータ転送ユニット２２０の動作状態を規定する値である。また、処理終了フラグのアドレスがメモリ制御回路２３２に登録されるが、メモリ制御回路２３２は処理終了フラグのアドレスに書込アクセスがある場合にデータ転送ユニット２２０に再開指示を出力するものであるので、他のデータの内容に影響を及ぼすものではない。このため、フラグチェックタスクを再実行してもデータの不整合は生じない。
【００８３】
（アクセスチェック）
次に、図５を参照して、処理終了フラグが記憶されているフラグ領域２３４上のアドレスがメモリ制御回路２３２に登録された（図４／ＳＴＥＰ５０６）後に、メモリ制御回路２３２により実行されるアクセスチェックの詳細を説明する。
【００８４】
メモリ制御回路２３２は、ローカルメモリ２３０にアクセスがあったか否かを判定する（図５／ＳＴＥＰ７０２）。
【００８５】
当該判定結果が否定的である場合（図５／ＳＴＥＰ７０２‥ＮＯ）、メモリ制御回路２３２は、再度図５／ＳＴＥＰ７０２以下の処理を実行する。
【００８６】
当該判定結果が肯定的である場合（図５／ＳＴＥＰ７０２‥ＹＥＳ）、メモリ制御回路２３２は、アクセス先アドレスが登録されたフラグ領域２３４上のアドレス（処理終了フラグのアドレス）であるか否かを判定する（図５／ＳＴＥＰ７０４）。
【００８７】
当該判定結果が否定的である場合（図５／ＳＴＥＰ７０４‥ＮＯ）、メモリ制御回路２３２は、再度図５／ＳＴＥＰ７０２以下の処理を実行する。
【００８８】
当該判定結果が肯定的である場合（図５／ＳＴＥＰ７０４‥ＹＥＳ）、メモリ制御回路２３２は、当該アクセスが書込みアクセスであるか否かを判定する（図５／ＳＴＥＰ７０６）。
【００８９】
当該判定結果が否定的である場合（図５／ＳＴＥＰ７０６‥ＮＯ）、メモリ制御回路２３２は、再度図５／ＳＴＥＰ７０２以下の処理を実行する。
【００９０】
当該判定結果が肯定的である場合（図５／ＳＴＥＰ７０６‥ＹＥＳ）、メモリ制御回路２３２は、データ転送ユニット２２０に再開指示を出力する（図５／ＳＴＥＰ７０８）。
【００９１】
図５／ＳＴＥＰ７０８の処理の後、メモリ制御回路２３２は、アクセスチェックを終了する。
【００９２】
（本実施形態の作用効果）
当該構成のマルチプロセッサシステム１によれば、データ転送ユニット２２０により、データ転送ユニット用プログラムに含まれるタスクがフラグチェックタスクである場合（図２／ＳＴＥＰ５００）、ローカルメモリ２３０のフラグ領域２３４に記憶された処理終了フラグが処理終了を示す値であるか否かが判定される（図４／ＳＴＥＰ５０４）。「処理終了フラグが処理終了を示す値である」ことが、本発明の「所定の条件」に相当する。「フラグが処理中を示す値ではない」ことを本発明の「所定の条件」としてもよい。また、「フラグに格納された数値が、所定の数値以下である」ことが本発明の「所定の条件」であってもよい。
【００９３】
フラグ領域２３４に記憶された処理終了フラグが処理終了を示す値である場合（図４／ＳＴＥＰ５０４‥ＹＥＳ）、データ転送ユニット２２０により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
【００９４】
これにより、フラグチェックタスク（図２／ＳＴＥＰ５００）に後続するタスク（図２／ＳＴＥＰ６００）の実行開始タイミングを適切に調節することができる。
【００９５】
また、データ転送ユニット２２０は、フラグ領域２３４に記憶された処理終了フラグが処理終了を示す値である場合、ローカルメモリ２３０のメモリ制御回路２３２に処理終了フラグのフラグ領域２３４上のアドレスを出力し（図４／ＳＴＥＰ５０６）、かつ、フラグ情報へのアクセスを保留する。
【００９６】
そして、メモリ制御回路２３２は、データ転送ユニット２２０よりフラグ情報の監視をしていることを示す信号が入力された場合、ベクトル演算ユニット２５０等によるフラグ情報の書込アクセスの有無を監視する（図５／ＳＴＥＰ７０２〜７０６）。
【００９７】
そして、メモリ制御回路２３２は、前記フラグ情報の書込アクセスがされた場合（図５／ＳＴＥＰ７０２〜７０６のすべてでＹＥＳ）、データ転送ユニット２２０に対し、フラグ情報へのアクセスを再開させるための指示を出力する（図５／ＳＴＥＰ７０８）。
【００９８】
これにより、フラグ情報が更新されていない間のフラグチェックを回避できるので、フラグ領域に頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報の更新がされた場合、換言すれば、処理終了フラグが処理終了を示す値である蓋然性が高い場合にデータ転送ユニット２２０のフラグ情報へのアクセスが再開されるので、フラグチェックに後続するタスク（図２／ＳＴＥＰ６００）の実行までの待機時間を短縮することができる。
【００９９】
また、当該構成のマルチプロセッサシステム１によれば、フラグ情報へのアクセスを保留する際に電力供給部４００から当該一のタスク実行部に供給される電力量を小さくさせる信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
【０１００】
また、並列化プログラムにより、各プログラムに適切に処理が割り振られ、処理待ちの際に別の処理を実行する必要性は低い場合には、特に、上記のようにクロック周波数を低下させて、消費電力を削減することは好ましい。
【０１０１】
当該構成のマルチプロセッサシステム１によれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合（図４／ＳＴＥＰ５１０・・ＹＥＳ）、プログラムカウンタ２２２を更新せずに前記割込み処理が実行される（図４／ＳＴＥＰ５１８〜ＳＴＥＰ５２０）。そして、その後、前記プログラムカウンタ２２２を参照して次に実行すべきタスクが認識される（図４／ＳＴＥＰ５２２）。
【０１０２】
ここで、フラグチェックタスク（図４）において、前記フラグ情報が前記所定の条件を充足したと判定した後（図４／ＳＴＥＰ５０４‥ＹＥＳ以降）にプログラムカウンタ２２２が更新される（図４／ＳＴＥＰ５１６）。このため、フラグ情報へのアクセスの保留中には（図４／ＳＴＥＰ５０４‥ＮＯの場合）、プログラムカウンタ２２２が更新されていないこととなる。
【０１０３】
すなわち、プログラムカウンタ２２２に示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっている。このため、割込み処理の実行完了後、割込み処理においてプログラムカウンタ２２２が更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
【０１０４】
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
【０１０５】
（変形態様）
本実施形態では、フラグ情報へのアクセス保留の間、データ転送ユニット２２０のクロック周波数が第２周波数に設定されたが（図４／ＳＴＥＰ５０８）、これに代えて、データ転送ユニット２２０を停止させ、電力供給部４００からの電力を遮断させてもよい。この場合、メモリ制御回路２３２は、再開指示として、データ転送ユニット２２０に起動信号を出力するように構成されることが好ましい。
【０１０６】
本実施形態では、データ転送ユニット２２０を本発明の「一のタスク実行部」として説明したが、これに加えてまたは代えて、ＣＰＵ、ベクトル演算ユニット等の、プログラムに含まれるタスクに従って動作するプロセッサを本発明の「一のタスク実行部」として構成してもよい。なお、当該一のタスク実行部用のプログラムは、あるタスクに先行するタスクとしてフラグチェックタスクを含んでいる。
【０１０７】
本実施形態では、ベクトル演算ユニット２５０を本発明の「他のタスク実行部」として説明したが、これに代えてまたは加えて、データ転送ユニット、ＣＰＵ等の、プログラムに含まれるタスクに従って動作するプロセッサを本発明の「他のタスク実行部」として構成してもよい。なお、当該他のタスク実行部用のプログラムは、あるタスクに後続するタスクとして、フラグ領域２３４に記憶されたフラグ情報を更新するタスク、例えば、当該タスクが完了した旨を示す値をフラグ領域２３４に書き込むタスクを含んでいる。
【０１０８】
本実施形態では、アクセラレータ２００を本発明の「プロセッサシステム」として説明し、かつ、ローカルメモリ２３０を本発明の「フラグ情報記憶部」として説明したが、マルチプロセッサシステム１を本発明の「プロセッサシステム」として構成し、共有メモリ１００等の、フラグ情報を記憶可能かつ制御部を備える記憶装置を「フラグ情報記憶部」として構成してもよい。この場合、例えば、ホストプロセッサ又は一のアクセラレータに含まれるタスク実行部（例えば、データ転送ユニット）が本発明の「一のタスク実行部」として構成され、ホストプロセッサ又は他のアクセラレータに含まれるタスク実行部（例えば、データ転送ユニット）が本発明の「他のタスク実行部」として構成されてもよい。
【０１０９】
本実施形態では、メモリ制御回路２３２が「処理終了フラグが記憶されているフラグ領域２３４上のアドレス」を基に当該アドレスへの書込アクセスの有無を監視したが、これに代えて、メモリ制御回路２３２が「処理終了フラグが記憶されているフラグ領域２３４上のアドレス」及び「処理終了を示す値」を基に、処理終了フラグが処理終了を示す値となったか否かを判定してもよい。この場合、処理終了フラグが処理終了を示す値となったことが確認できた場合、データ転送ユニット２２０は、フラグチェックタスクを再実行せずに、フラグチェックタスクに後続するタスクを実行するように構成されていてもよい。
【０１１０】
本実施形態では、メモリ制御回路２３２が「処理終了フラグが記憶されているフラグ領域２３４上のアドレス」を基に当該アドレスへの書込アクセスの有無を監視したが、これに代えて、メモリ制御回路２３２が「処理終了フラグが記憶されているフラグ領域２３４上のアドレス」を基に当該アドレスへのアクセスの有無を監視してもよい。
【符号の説明】
【０１１１】
１‥マルチプロセッサシステム、２２２・・プログラムカウンタ、２２０・・データ転送ユニット（一のタスク実行部）、２３０・・ローカルメモリ（フラグ記憶部）、２３２‥メモリ制御回路（制御部）、２３４・・フラグ領域、２５０・・ベクトル演算ユニット（他のタスク実行部）、４００‥電力供給部、ＳＴＥＰ５００‥フラグチェックタスク、ＳＴＥＰ６００‥フラグチェックタスクに後続するタスク。
【図１】
2018150524.tif 000003
【図２】
2018150524.tif 000004
【図３】
2018150524.tif 000005
【図４】
2018150524.tif 000006
【図５】
2018150524.tif 000007
【手続補正書】
【提出日】令和1年5月13日(2019.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部と、
前記複数のタスク実行部のうちの一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタとを備え、
前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に該一のタスク実行部が次に実行すべきタスクを示すように更新され、
前記フラグ記憶部は、前記フラグ情報として、前記複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報を記憶し、
前記一のタスク実行部は、
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成され、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とするプロセッサシステム。
【請求項２】
請求項１記載のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることを特徴とするプロセッサシステム。
【請求項３】
（削除）
【請求項４】
請求項１又は２記載のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデータの転送を実行するデータ転送ユニットであり、
前記他のタスク実行部は、前記データ領域に記憶されたデータを読み込んで、当該読み込まれたデータに基づいてプログラムに従って演算処理を実行し、前記演算処理結果を前記データ領域に記憶させ、前記フラグ情報の値を更新する演算ユニットであることを特徴とするプロセッサシステム。
【請求項５】
請求項１、２又は４のうちいずれか１項記載のプロセッサシステムを複数備え、
前記複数のプロセッサシステムのそれぞれからアクセス可能な共有メモリを備えることを特徴とするマルチプロセッサシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
み等の完了よりも後に、データ転送ユニットのデータ転送等の開始をさせることができるので、プログラム設計者の意図に反したデータの処理または転送が防止される。
先行技術文献
特許文献
［０００７］
特許文献１：国際公開公報第２０１３／０６５８７号
発明の概要
発明が解決しようとする課題
［０００８］
しかし、フラグチェックにあたって、各タスク実行部が頻繁にフラグチェックを行うと、フラグチェックに係るオーバーヘッドが大きくなり、プロセッサシステム全体の処理速度が低下したり、消費電力が増大したりする可能性もある。
［０００９］
一方、フラグチェックのオーバーヘッドの増大を避けるため、各タスク実行部によるフラグチェックの間隔を長くすると、フラグが更新されたタイミングとフラグチェックのタイミングとにずれが生じることにより、フラグチェックに後続するタスクの実行までに不要な待機時間が生じる可能性もある。
［００１０］
このような問題に鑑み、本発明は、フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供することを目的とする。
課題を解決するための手段
［００１１］
本発明のプロセッサシステムは、
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部と、
前記複数のタスク実行部のうちの一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタとを備え、
前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に該一のタスク実行部が次に実行すべきタスクを示すように更新され、
前記フラグ記憶部は、前記フラグ情報として、前記複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報を記憶し、
前記一のタスク実行部は、
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成され、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とする。
［００１２］
当該構成のプロセッサシステムによれば、一のタスク実行部により、プログラムに含まれるフラグチェックタスクに従って、フラグ記憶部のフラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かが判定される。
なお、フラグ記憶部には、フラグ情報として、複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報が記憶されている。
［００１３］
フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、当該一のタスク実行部により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
［００１４］
これにより、前記フラグチェックタスクに後続するタスクの実行開始タイミングを調節することができる。
［００１５］
また、当該一のタスク実行部は、前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留する。
［００１６］
そして、フラグ記憶部の制御部は、前記一のタスク実行部よりフラグ情報
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
の監視をしていることを示す信号が入力された場合、他のタスク実行部による前記フラグ情報へのアクセスの有無を監視する。
［００１７］
そして、フラグ記憶部の制御部は、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力する。
［００１８］
フラグ情報にアクセスされていなければ、フラグ情報が更新されることはない。このため、フラグ情報へのアクセスがあったことを条件としてフラグ情報へのアクセスの保留を解除させることによりフラグ情報が更新されていない間のフラグ情報へのアクセスを回避できる。このため、フラグ領域を頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報へのアクセスがされた場合、換言すれば、フラグ情報が変更されたりすることにより、フラグ情報が所定の条件を充足する可能性がある場合に一のタスク実行部のフラグ情報へのアクセスの保留が解除されるので、フラグチェックに後続するタスクの実行までの待機時間を短縮することができる。
また、当該構成のプロセッサシステムによれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合、プログラムカウンタを更新せずに前記割込み処理が実行される。そして、その後、前記プログラムカウンタを参照して次に実行すべきタスクが認識される。
ここで、フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後にプログラムカウンタが更新される。また、前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に当該一のタスク実行部が次に実行すべきタスクを示すように更新される。そして、上述の通り前記一のタスク実行部は、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留するから、フラグ情報へのアクセスの保留中には、プログラムカウンタが更新されていないこととなる。すなわち、プログラムカウンタに示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっているから、割込み処理の実行完了後、割込み処理においてプログラムカウンタが更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
［００１９］
本発明のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることが好ましい。
［００２０］
当該構成のプロセッサシステムによれば、前記フラグ情報へのアクセスを保留する際に前記電力供給部から当該一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
［００２１］
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
［００２２］
［００２３］
［００２４］
［００２５］
本発明のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデ
【手続補正書】
【提出日】令和1年5月13日(2019.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部と、
前記複数のタスク実行部のうちの一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタとを備え、
前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に該一のタスク実行部が次に実行すべきタスクを示すように更新され、
前記フラグ記憶部は、前記フラグ情報として、前記複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報を記憶し、
前記一のタスク実行部は、
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成され、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とするプロセッサシステム。
【請求項２】
請求項１記載のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることを特徴とするプロセッサシステム。
【請求項３】
（削除）
【請求項４】
請求項１又は２記載のプロセッサシステムにおいて、
前記プロセッサシステムは、チップ上に設けられたアクセラレータであり、
前記フラグ記憶部は、前記フラグ領域と前記制御部とフラグ情報とは異なるデータを記憶するデータ領域とを備えるローカルメモリであり、
前記一のタスク実行部は、前記データ領域から前記アクセラレータの外部へのデータの転送又は前記アクセラレータの外部から前記データ領域へのデータの転送を実行するデータ転送ユニットであり、
前記他のタスク実行部は、前記データ領域に記憶されたデータを読み込んで、当該読み込まれたデータに基づいてプログラムに従って演算処理を実行し、前記演算処理結果を前記データ領域に記憶させ、前記フラグ情報の値を更新する演算ユニットであることを特徴とするプロセッサシステム。
【請求項５】
請求項１、２又は４のうちいずれか１項記載のプロセッサシステムを複数備え、
前記複数のプロセッサシステムのそれぞれからアクセス可能な共有メモリを備えることを特徴とするマルチプロセッサシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
み等の完了よりも後に、データ転送ユニットのデータ転送等の開始をさせることができるので、プログラム設計者の意図に反したデータの処理または転送が防止される。
先行技術文献
特許文献
［０００７］
特許文献１：国際公開公報第２０１３／０６５８７号
発明の概要
発明が解決しようとする課題
［０００８］
しかし、フラグチェックにあたって、各タスク実行部が頻繁にフラグチェックを行うと、フラグチェックに係るオーバーヘッドが大きくなり、プロセッサシステム全体の処理速度が低下したり、消費電力が増大したりする可能性もある。
［０００９］
一方、フラグチェックのオーバーヘッドの増大を避けるため、各タスク実行部によるフラグチェックの間隔を長くすると、フラグが更新されたタイミングとフラグチェックのタイミングとにずれが生じることにより、フラグチェックに後続するタスクの実行までに不要な待機時間が生じる可能性もある。
［００１０］
このような問題に鑑み、本発明は、フラグチェックのオーバーヘッドを抑制しながら、フラグチェックに後続するタスクの実行までの待機時間を短縮することができるタスク実行部を備えたプロセッサシステムを提供することを目的とする。
課題を解決するための手段
［００１１］
本発明のプロセッサシステムは、
プログラムに含まれるタスクに従って動作する複数のタスク実行部と、
フラグ情報を記憶するフラグ領域と前記フラグ領域へのアクセスを制御する制御部とを備えたフラグ記憶部と、
前記複数のタスク実行部のうちの一のタスク実行部が次に実行すべきタスクを示すプログラムカウンタとを備え、
前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に該一のタスク実行部が次に実行すべきタスクを示すように更新され、
前記フラグ記憶部は、前記フラグ情報として、前記複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報を記憶し、
前記一のタスク実行部は、
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
前記プログラムに含まれるタスクがフラグチェックタスクに従って前記フラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かを判定し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクの実行を開始し、
前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留し、
前記フラグ記憶部の制御部は、
前記一のタスク実行部よりフラグ情報の監視をしていることを示す信号が入力された場合、前記他のタスク実行部による前記フラグ情報へのアクセスの有無を監視し、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力するように構成され、
前記一のタスク実行部は、前記フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後に前記プログラムカウンタを更新するように構成され、かつ、フラグ情報へのアクセスの保留中に割込み処理が入った場合、前記プログラムカウンタを更新せずに前記割込み処理を実行し、割込み処理の実行完了後、前記プログラムカウンタを参照して次に実行すべきタスクを認識するように構成されていることを特徴とする。
［００１２］
当該構成のプロセッサシステムによれば、一のタスク実行部により、プログラムに含まれるフラグチェックタスクに従って、フラグ記憶部のフラグ領域に記憶されたフラグ情報が所定の条件を充足するか否かが判定される。
なお、フラグ記憶部には、フラグ情報として、複数のタスク実行部のうちの他のタスク実行部による処理の状態を示す情報が記憶されている。
［００１３］
フラグ領域に記憶されたフラグ情報が所定の条件を充足する場合、当該一のタスク実行部により、前記プログラムに含まれる前記フラグチェックタスクに後続するタスクが実行される。
［００１４］
これにより、前記フラグチェックタスクに後続するタスクの実行開始タイミングを調節することができる。
［００１５］
また、当該一のタスク実行部は、前記フラグ領域に記憶されたフラグ情報が所定の条件を充足しない場合、前記フラグ記憶部の制御部に前記フラグ情報の監視をしていることを示す信号を出力し、かつ、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留する。
［００１６］
そして、フラグ記憶部の制御部は、前記一のタスク実行部よりフラグ情報
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
の監視をしていることを示す信号が入力された場合、他のタスク実行部による前記フラグ情報へのアクセスの有無を監視する。
［００１７］
そして、フラグ記憶部の制御部は、前記フラグ情報へのアクセスがされた場合、前記一のタスク実行部に対し、前記フラグ情報へのアクセスの保留を解除させるための指示を出力する。
［００１８］
フラグ情報にアクセスされていなければ、フラグ情報が更新されることはない。このため、フラグ情報へのアクセスがあったことを条件としてフラグ情報へのアクセスの保留を解除させることによりフラグ情報が更新されていない間のフラグ情報へのアクセスを回避できる。このため、フラグ領域を頻繁にアクセスする場合よりもフラグチェックのオーバーヘッドを抑制できる。加えて、フラグ情報へのアクセスがされた場合、換言すれば、フラグ情報が変更されたりすることにより、フラグ情報が所定の条件を充足する可能性がある場合に一のタスク実行部のフラグ情報へのアクセスの保留が解除されるので、フラグチェックに後続するタスクの実行までの待機時間を短縮することができる。
また、当該構成のプロセッサシステムによれば、フラグ情報へのアクセスの保留中に割込み処理が入った場合、プログラムカウンタを更新せずに前記割込み処理が実行される。そして、その後、前記プログラムカウンタを参照して次に実行すべきタスクが認識される。
ここで、フラグチェックタスクにおいて、前記フラグ情報が前記所定の条件を充足したと判定した後にプログラムカウンタが更新される。また、前記プログラムカウンタは、前記一のタスク実行部がタスクを実行中の間は該実行中のタスクを示しており、該実行中のタスクの終了の際に当該一のタスク実行部が次に実行すべきタスクを示すように更新される。そして、上述の通り前記一のタスク実行部は、前記フラグチェックタスクを終了せずにフラグ情報へのアクセスを保留するから、フラグ情報へのアクセスの保留中には、プログラムカウンタが更新されていないこととなる。すなわち、プログラムカウンタに示されるタスクは、フラグ情報へのアクセスの保留中にはフラグチェックタスクのままとなっているから、割込み処理の実行完了後、割込み処理においてプログラムカウンタが更新されていない限り、フラグチェックタスクが次に実行すべきタスクとして認識されることとなる。
フラグチェックタスクは処理対象のデータの更新を伴わないタスクであるので、再度実行してもデータの不整合は生じない。これにより、割込み処理を適切に実行しながら、割込み時及び割込み再開時の処理を簡易にすることができる。
［００１９］
本発明のプロセッサシステムにおいて、
前記一のタスク実行部に対して電力を供給する電力供給部を備え、
一のタスク実行部は、前記フラグ情報へのアクセスを保留する際に、前記電力供給部から前記一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するように構成されていることが好ましい。
［００２０］
当該構成のプロセッサシステムによれば、前記フラグ情報へのアクセスを保留する際に前記電力供給部から当該一のタスク実行部に供給される電力量を小さくさせ又は遮断する信号を出力するので、フラグ情報へのアクセスを保留している間の消費電力が削減される。
［００２１］
【国際調査報告】
2018150524.tif 000008
2018150524.tif 000009
2018150524.tif 000010
2018150524.tif 000011