(57)【要約】【課題】コマンドチェインにおけるデータ転送エラー処理にかかわるオーバーヘッドを低減する。【解決手段】所定の演算処理を実行可能なＣＰＵ（２０）と、上記ＣＰＵによってアクセス可能なメモリ（３０）と、上記メモリとの間のデータ転送を、上記ＣＰＵに代わって制御可能なデータ転送機構（４０）とを含んでプロセッサを構成する。上記データ転送機構は、予め設定されたコマンドチェインの実行により連続してデータ転送を行うコマンドチェイン部と、上記コマンドチェイン部によるデータ転送において転送エラーを生じた場合にリトライ処理を実行するリトライ制御部とを設ける。そして、上記コマンドチェインの実行終了後に、上記転送エラーに係るコマンドを上記ＣＰＵに報告するようにすることで、エラー処理のための割り込み回数を低減して、システム性能の向上を達成する。【選択図】図１
2009054083.tif 000002
【特許請求の範囲】
【請求項１】
所定の演算処理を実行可能なＣＰＵと、
上記ＣＰＵによってアクセス可能なメモリと、
上記メモリとの間のデータ転送を、上記ＣＰＵに代わって制御可能なデータ転送機構と、を備えたプロセッサであって、
上記データ転送機構は、予め設定されたコマンドチェインの実行により連続してデータ転送を行うコマンドチェイン部と、
上記コマンドチェイン部によるデータ転送において転送エラーを生じた場合にリトライ処理を実行するリトライ制御部と、を含み、
上記コマンドチェインの実行終了後に、上記転送エラーに係るコマンドを上記ＣＰＵに報告することを特徴とするプロセッサ。
【請求項２】
上記リトライ制御部でのリトライ回数は、上記コマンドチェインにおける各コマンド毎に設定される請求項１記載のプロセッサ。
【請求項３】
上記リトライ制御部は、上記リトライによって転送エラーを回避できない場合には、上記コマンドチェイン部に対して当該転送エラーにかかるコマンドをスキップして後続のコマンドを実行させる請求項１記載のプロセッサ。
【請求項４】
上記リトライ制御部は、上記転送エラーにかかるコマンドを順次記憶可能な記憶領域を含み、この記憶領域に記憶されたコマンドが、上記コマンドチェインの実行終了後に、まとめて上記ＣＰＵに報告される請求項１記載のプロセッサ。
【請求項５】
所定の演算処理を実行可能なＣＰＵからの指令に従い、上記ＣＰＵに代わってデータ転送を制御可能なデータ転送ユニットであって、
予め設定されたコマンドチェインの実行により連続してデータ転送を行うコマンドチェイン部と、
上記コマンドチェイン部によるデータ転送において転送エラーを生じた場合にリトライ処理を実行するリトライ制御部と、を含み、
上記コマンドチェインの実行終了後に、上記転送エラーに係るコマンドを上記ＣＰＵに報告することを特徴とするデータ転送ユニット。
【請求項６】
上記リトライ制御部でのリトライ回数は、上記コマンドチェインにおける各コマンド毎に設定される請求項５記載のデータ転送ユニット。
【請求項７】
上記リトライ制御部は、上記リトライによって転送エラーを回避できない場合には、上記コマンドチェイン部に対して当該転送エラーにかかるコマンドをスキップして後続のコマンドを実行させる請求項５記載のデータ転送ユニット。
【請求項８】
上記リトライ制御部は、上記転送エラーにかかるコマンドを順次記憶可能な記憶領域を含み、この記憶領域に記憶されたコマンドが、上記コマンドチェインの実行終了後に、まとめて上記ＣＰＵに報告される請求項５記載のデータ転送ユニット。
【請求項９】
それぞれ所定の演算処理を可能とする複数のプロセッサコアと、
上記複数のプロセッサコアによって共有される共有メモリと、を含むマルチコアプロセッサシステムであって、
上記プロセッサコアは、所定の演算処理を実行可能なＣＰＵと、
上記ＣＰＵによってアクセス可能な内蔵メモリと、
上記内蔵メモリと上記共有メモリとの間のデータ転送を、上記ＣＰＵに代わって制御可能なデータ転送機構と、を含み、
上記データ転送機構は、予め設定されたコマンドチェインの実行により連続してデータ転送を行うコマンドチェイン部と、
上記コマンドチェイン部によるデータ転送において転送エラーを生じた場合にリトライ処理を実行するリトライ制御部と、を含み、
上記コマンドチェインの実行終了後に、上記転送エラーに係るコマンドを上記ＣＰＵに報告することを特徴とするマルチコアプロセッサシステム。
【請求項１０】
上記リトライ制御部でのリトライ回数は、上記コマンドチェインにおける各コマンド毎に設定される請求項９記載のマルチコアプロセッサシステム。
【請求項１１】
上記リトライ制御部は、上記リトライによって転送エラーを回避できない場合には、上記コマンドチェイン部に対して当該転送エラーにかかるコマンドをスキップして後続のコマンドを実行させる請求項９記載のマルチコアプロセッサシステム。
【請求項１２】
上記リトライ制御部は、上記転送エラーにかかるコマンドを順次記憶可能な記憶領域を含み、この記憶領域に記憶されたコマンドが、上記コマンドチェインの実行終了後に、まとめて上記ＣＰＵに報告される請求項９記載のマルチコアプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（中央処理装置）に代わってデータ転送を行うためのデータ転送技術に関する。
【背景技術】
【０００２】
プロセッサなどの情報処理装置においてはデータ転送を効率良く行うことが、装置全体の性能向上につながる。情報処理装置が大量のデータ転送を行う場合、これをＣＰＵ（汎用プロセッサ）で実施すると、本来ＣＰＵで実施すべき処理が滞り、装置全体の性能が低下する。
【０００３】
そこで現在の情報処理装置では、一般にダイレクトメモリアクセスコントローラ(ＤＭＡＣ)と呼ばれるデータ転送処理装置を用いて、ＣＰＵに代わってデータ転送を実施している。したがって、ＣＰＵ自身はデータ転送起動コマンドをＤＭＡＣに設定するだけで、ＤＭＡＣがデータ転送を行っている間に別の処理を行うことが可能となる。
【０００４】
上記の方法では、ＣＰＵはデータ転送が必要な際にＤＭＡＣに対して逐一データ転送起動コマンドを設定する必要がある。また、ＤＭＡＣが動作中かどうかを監視する必要も生じる。
【０００５】
このようにデータ転送起動コマンドの設定をＣＰＵがデータ転送の都度に行うことは、転送データ長が長い場合は、大きなオーバーヘッドとして見えてこないが、転送データ長が短い場合は、大きなオーバーヘッドとして見えてしまい、性能向上の妨げとなってしまう。
【０００６】
ＣＰＵによるデータ転送起動コマンドの設定回数を削減する方法として、コマンドチェインまたはＣＣＷチェインと呼ばれる方法が提案されている。コマンドチェインではデータ転送を行うたびに、ＣＰＵを介してデータ転送起動指示をＤＭＡＣに与えるのではなく、全データ転送指示をリストとして、予め記憶装置上に設定し、ＣＰＵが当該リストの先頭のデータ転送指示からデータ転送を実施するよう指示することで、ＤＭＡＣが記憶装置上の転送指示を順に読み出して、データ転送を実施する。
【０００７】
本方法では、ＣＰＵは最初のデータ転送の起動のみ実施し、その後のデータ転送に関してはＤＭＡＣ自身がコマンドの起動を行うため、ＣＰＵによるデータ転送起動コマンドの設定回数は１回だけとなる。そのため、これまでＣＰＵがデータ転送コマンドの設定に要した時間を、他の処理に割り当てることができる。
【０００８】
尚、データチェインを意図したＣＣＷ（チャネル制御語）チェインを用いたデータ転送において、ハードディスクへの書き込みを途切れさせず、連続して処理させる技術（例えば特許文献１参照）や、ＣＣＷ単位の転送のリターンコードをチェックし、そのリターンコードに応じて、次に実行すべきＣＣＷ決定することでホストの処理負担を軽減する技術（例えば特許文献２参照）が知られている。
【０００９】
【特許文献１】特開平１１−２１２８９８号公報
【特許文献２】特開２００６−２７７５８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
前記背景技術を用いることで、ＣＰＵ処理とデータ転送のオーバラップを効率的に行うことができ、システム性能の向上を図ることができる。但し、コマンドチェイン中のデータ転送でエラーが発生した際には、ＤＭＡＣがコマンドチェインによるデータ転送を中断し、ＣＰＵに対してエラー報告を挙げ、ＣＰＵにリカバリ処理などを依頼する必要が生じる。コマンドチェイン内の複数のデータ転送指示でエラーが発生した場合は、その都度ＣＰＵに対してエラー報告を挙げ、リカバリ処理などを依頼する必要が生じ、本来ＣＰＵで行うべき処理を滞らせてしまう。
【００１１】
本発明の目的は、コマンドチェインにおけるデータ転送エラー処理にかかわるオーバーヘッドを低減するための技術を提供することにある。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１４】
すなわち、所定の演算処理を実行可能なＣＰＵと、上記ＣＰＵによってアクセス可能なメモリと、上記メモリとの間のデータ転送を、上記ＣＰＵに代わって制御可能なデータ転送機構とを含むプロセッサにおいて、上記データ転送機構は、予め設定されたコマンドチェインの実行により連続してデータ転送を行うコマンドチェイン部と、上記コマンドチェイン部によるデータ転送において転送エラーを生じた場合にリトライ処理を実行するリトライ制御部とを設ける。そして、上記コマンドチェインの実行終了後に、上記転送エラーに係るコマンドを上記ＣＰＵに報告するようにすることで、エラー処理のための割り込み回数を低減して、システム性能の向上を達成する。
【発明の効果】
【００１５】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１６】
すなわち、コマンドチェインにおけるデータ転送エラー処理にかかわるオーバーヘッドを低減することができる。
【発明を実施するための最良の形態】
【００１７】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕本発明の代表的な実施の形態に係るマルチコアプロセッサシステム（１）は、それぞれ所定の演算処理を可能とする複数のプロセッサコア（１０−０，１０−１，…，１０−ｎ）と、上記複数のプロセッサコアによって共有される共有メモリ（６０）とを含む。このとき、上記プロセッサコアは、所定の演算処理を実行可能なＣＰＵ（２０）と、上記ＣＰＵによってアクセス可能な内蔵メモリ（３０）と、上記内蔵メモリと上記共有メモリとの間のデータ転送を、上記ＣＰＵに代わって制御可能なデータ転送機構（４０）とを含む。そして、上記データ転送機構は、予め設定されたコマンドチェインの実行により連続してデータ転送を行うコマンドチェイン部（４２０）と、上記コマンドチェイン部によるデータ転送において転送エラーを生じた場合にリトライ処理を実行するリトライ制御部（４３０）と、を含み、上記コマンドチェインの実行終了後に、上記転送エラーに係るコマンドを上記ＣＰＵに報告する。
【００１９】
〔２〕上記リトライ制御部（４３０）でのリトライ回数は、上記コマンドチェインにおける各コマンド毎に設定される。
【００２０】
〔３〕上記リトライ制御部（４３０）は、上記リトライによって転送エラーを回避できない場合には、上記コマンドチェイン部に対して当該転送エラーにかかるコマンドをスキップして後続のコマンドを実行させることができる。
【００２１】
〔４〕上記リトライ制御部（４３０）は、上記転送エラーにかかるコマンドを順次記憶可能な記憶領域を含み、この記憶領域に記憶されたコマンドが、上記コマンドチェインの実行終了後に、まとめて上記ＣＰＵに報告される。
【００２２】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
【００２３】
図１には、本発明にかかるマルチコアプロセッサシステム（情報処理装置）の構成例が示される。
【００２４】
図１において、マルチコアプロセッサシステム１は、特に制限されないが、複数のプロセッサコア１０−０〜１０−ｎと、これらプロセッサコア１０−０〜１０−ｎで共有される共有メモリ６０及び各プロセッサコア１０−０〜１０−ｎと共有メモリ６０を接続するプロセッサコア間ネットワーク５０を主体にして構成され、公知の半導体集積回路製造技術により、シリコン基板などの一つの半導体基板に形成される。尚、プロセッサコア間ネットワーク５０は、共有バスやクロスバなどで構成してもよい。
【００２５】
本実施形態では、各プロセッサコアが命令セット及び構成が同一のホモジニアス・マルチコアプロセッサシステムで構成した例を示す。このため、プロセッサコア１０−０についてのみ構成の説明を行い、他のプロセッサコアについての詳細な説明を省略する。
【００２６】
プロセッサコア１０−０は、演算処理を行うＣＰＵ２０と、データや命令を格納する内蔵メモリ（ローカルメモリ）３０と、内蔵メモリ３０と共有メモリ６０あるいは内蔵メモリ３０と他のプロセッサコア１０−１〜１０−ｎの内蔵メモリ３０との間でデータの転送を行うデータ転送機構（ＤＴＵ:Data Transfer Unit）４０を備えている。尚、マルチコアプロセッサシステム１の外部に記憶装置が接続されている場合には、データ転送機構４０は、内蔵メモリ３０と外部の記憶装置との間でデータの転送を行うことができる。
【００２７】
データ転送機構４０は、特に制限されないが、ＤＭＡＣ（Direct Memory Access Controller）を含んで構成され、ＣＰＵ２０のバックグラウンドで、内蔵メモリ３０や共有メモリ６０または他のプロセッサコア１０−１〜１０−ｎとの間でデータの転送を実行する。
【００２８】
また、データ転送機構４０は、ＣＰＵ２０からデータの転送指令を受け付けると、ＤＭＡ及びコマンドチェインにより、連続してデータの転送を実行することができる。ＣＰＵ２０は、データ転送機構４０へデータの転送を指令した後には、データの転送処理をデータ転送機構４０に任せることで自らの演算処理を実行することができる。
【００２９】
図２には、上記データ転送機構４０の構成例が示される。
【００３０】
データ転送機構４０は、内蔵メモリ３０（または共有メモリ６０）に予め書き込まれた転送指令を含むコマンド列を順次実行するコマンドチェイン部４２０と、コマンドチェイン部４２０が読み込んだ転送指令に基づいて、内蔵メモリ３０と共有メモリ６０等との間でデータの転送をＤＭＡによって実行するデータ転送部４１０と、コマンドチェイン部４２０が読み込んだ転送指令に基づいて、データ転送のエラーを判定し、必要であればデータ転送のリトライを行うリトライ制御部４３０とを含む。
【００３１】
コマンドチェイン部４２０は、内蔵メモリ３０（または共有メモリ６０）に設定されたコマンド列（コマンドチェイン）のうち、最初のコマンドをＣＰＵ２０の指令に応じて読み込んで実行する。そして、コマンドチェイン部４２０は、一つのコマンドが終了すると次のコマンドを読み込んで順次実行する。このとき、コマンドチェイン内の各コマンドには、次に実行すべきコマンドを指定できるようになっている。
【００３２】
データ転送機構４０のデータ転送部４１０で処理するコマンドとしては、内蔵メモリ３０からプロセッサコアの外部の記憶装置へデータを転送するputコマンド、プロセッサコアの外部の記憶装置から内蔵メモリ３０へデータを転送するgetコマンドがある。これらの転送は、コマンドチェインからだけでなく、ＣＰＵから直接データ転送部４１０を操作することでも実行可能である。
【００３３】
データ転送部４１０は、ＤＭＡＣを含んで構成され、それぞれ転送コマンドとされるputコマンドやgetコマンドを実行して、内蔵メモリ３０と共有メモリ６０または他のプロセッサコア１０−１〜１０−ｎとの間のデータ転送を実行する。データ転送部４１０は、連続領域のデータ転送に加えてストライド転送やギャザー（gather）転送やスキャッタ（scatter）転送といったアドレスが不連続なデータ転送も実行する。
【００３４】
図３には、上記コマンドチェイン部４２０が扱うコマンド列の構成例が示される。
【００３５】
オペコード４２１０には、putコマンドやgetコマンド、ストライド、ギャザー、スキャッタなどの転送コマンドとリトライ条件が設定される。リトライ条件には、転送エラー時のリトライ回数が含まれる。転送元アドレス４２２０、転送先アドレス４２３０はそれぞれ転送対象となる内蔵メモリ３０や共有メモリ６０のアドレスを指定する。次のコマンドへのポインタ４２４０は次に実行すべきコマンドを指し示す。全転送バイト数４２５０は本コマンドで転送するすべての転送バイト数を指定する。ストライド時の転送バイト数４２６０とストライド幅４２７０は、オペコード４２１０でストライド、ギャザー、スキャッタ転送が指定されたときに有効であり、それぞれ転送対象となるブロックサイズとブロック間の幅を指定する。ストライド時の転送バイト数４２６０とストライド幅４２７０については、ストライド、ギャザー、スキャッタ転送を行わない場合は無効となり、その際は設定の必要はない。
【００３６】
リトライ制御部４３０はデータ転送がエラーとなりデータ転送のリトライを実行する際に必要な転送制御情報を保持する。この転送制御情報は、データ転送開始時にデータ転送部４１０から送られたものを記憶しておき、リトライ時にはデータ転送部４１０に再設定される。また、データ転送部４１０に再設定する条件を判定するための機能を有する。
【００３７】
図４には、上記リトライ制御部４３０の構成例が示される。
【００３８】
上記リトライ制御部４３０は、特に制限されないが、転送制御情報記憶領域４３１、リトライ判定部４３２、エラーコマンド記憶領域４３３を含む。データ転送部４１０がデータ転送を開始する前に、リトライ制御部４３０はデータ転送部４１０から、オペコード、転送先アドレス、転送元アドレス、転送バイト数等の転送制御情報を受け取り、転送制御情報記憶領域４３１に保持する。データ転送がエラーとなった場合、リトライ判定部４３２がオペコードに設定されているリトライ条件を判定する。リトライが必要な場合は、転送制御情報記憶領域４３１に保持されている転送制御情報をデータ転送部４１０に再設定し、同じ転送を再度実行することになる。リトライ判定部４３２でリトライが必要でないと判断するのは、データ転送コマンドが正常終了した場合か、リトライによっても正常終了しないと判断した場合である。リトライによって正常終了しないと判断された場合には、エラーコマンド記憶領域４３３にエラーの発生したコマンドのポインタなどを記憶して、コマンドチェイン部４２０とデータ転送部４１０とで次のコマンドを実行する。リトライによっても正常終了しないと判断する基準としては、リトライ回数やシステムエラーなどが挙げられる。また、エラーコマンド記憶領域４３３はリトライ制御部４３０にある必然はなく、内蔵メモリ３０や共有メモリ６０に用意しても良い。
【００３９】
次に、具体的な動作例について説明する。
【００４０】
図５には、図１に示されるマルチコアプロセッサシステムの動作例が示され、図６には、その比較対象とされるシステムの動作例が示される。尚、図５、図６では、どちらも、まずＣＰＵ２０でデータ転送機構(ＤＴＵ４０)に与えるコマンドチェインを生成し、ＤＴＵ４０に対してデータ転送起動指示を与えるものとする。また、データ転送に使用するコマンドチェインはコマンド１、コマンド２、コマンド３の３つのコマンドで構成され、本例では、コマンド２、コマンド３の実行中に、それぞれ1回異常終了するものとする。
【００４１】
図６では、コマンド２の異常終了によって、ＤＴＵがＣＰＵに対してエラー報告を行う。これを受けてＣＰＵはそれまでのＣＰＵ処理を中断し、リカバリ処理に処理を切り替え、再度ＤＴＵを起動した後、中断したＣＰＵ処理に戻ることになる。これに対し、本実施形態によれば、図５に示されるように、コマンド２の異常終了によって、リトライ制御部４３０が機能し、ＣＰＵ２０にエラー報告を行うことなく、コマンド２のデータ転送をリトライし、ＣＰＵ２０はエラーを知ることなく本来行うべきＣＰＵ処理（演算処理）を継続して行うことができる。したがって本実施形態によれば、ＣＰＵ２０の処理スループットとＤＴＵ４０の処理スループットを向上させることができ、システム全体の性能向上を図ることが可能となる。
【００４２】
本実施形態では1回のリトライで正常終了するケースで説明したが、リトライ回数が増えるほど、本発明による効果は顕著とされる。また、何回リトライしても正常終了しない場合では、リトライ制御部４３０がエラーコマンド記憶領域４３３に正常終了しないコマンドを記憶し、後続のコマンドを実行する。このため、一連のコマンドチェイン実行中にＣＰＵ２０の処理を中断することはなく、コマンドチェイン実行終了後に一度だけＣＰＵ２０の処理を中断し、エラーコマンド記憶領域４３３に異常終了したコマンドが格納されていれば、再実行やエラー処理などのプログラムされた処理を行うことになる。
【００４３】
上記の例によれば、以下の作用効果を得ることができる。
【００４４】
（１）転送エラーが発生しても、データ転送機構自身がリトライを行うことで、ＣＰＵ２０の処理を止めることなく、ＣＰＵ２０での処理を継続することができる。
【００４５】
（２）リトライしても転送エラーが回避できないコマンドが複数存在した場合、そのエラーコマンドをスキップし、コマンドチェイン終了後にまとめてＣＰＵ２０に対してエラー報告することで、エラー処理のための割り込み回数を低減することができ、それによってシステム性能の向上を達成することができる。
【００４６】
（３）上記（１），（２）の作用効果により、コマンドチェインにおけるデータ転送エラー処理にかかわるオーバーヘッドを低減することができる。
【００４７】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００４８】
例えば上記の例では、１チップで構成されるシステムについて説明したが、本発明はそれに限定されるものではなく、複数のチップによってシステムが構成される場合にも適用することができる。
【００４９】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野である、１チップで構成されるマルチコアプロセッサシステムついて説明したが、本発明はそれに限定されるものではなく、複数チップで構成されるシステムにも適用することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明にかかるマルチコアプロセッサシステムの構成例ブロック図である。
【図２】上記マルチコアプロセッサシステムに含まれるデータ転送機構の構成例ブロック図である。
【図３】上記データ転送機構に含まれるコマンドチェイン部によって扱われるコマンド列の構成例説明図である。
【図４】上記データ転送機構に含まれるリトライ制御部の構成例ブロック図である。
【図５】上記マルチコアプロセッサシステムの動作説明図である。
【図６】上記マルチコアプロセッサシステムの比較対象とされるシステムの動作説明図である。
【符号の説明】
【００５１】
１０−０〜１０−ｎ  プロセッサコア
２０  ＣＰＵ
３０  内蔵メモリ
４０  データ転送機構
５０  プロセッサコア間ネットワーク
６０  共有メモリ
４１０  データ転送部
４２０  コマンドチェイン部
４３０  リトライ制御部
４２１０  オペコード
４２２０  転送元アドレス
４２３０  転送先アドレス
４２４０  次のコマンドへのポインタ
４２５０  全転送バイト数
４２６０  ストライド時の転送バイト数
４２７０  ストライド幅
４３１  転送制御情報記憶領域
４３２  リトライ判定部
４３３  エラーコマンド記憶領域
【図１】
2009054083.tif 000003
【図２】
2009054083.tif 000004
【図３】
2009054083.tif 000005
【図４】
2009054083.tif 000006
【図５】
2009054083.tif 000007
【図６】
2009054083.tif 000008