(57)【要約】【課題】転送制御回路の回路構成を更新する際にデータ転送処理を確実に継続する。【解決手段】制御回路１２は、データ転送要求を受けるたびに、データ転送を指示する指示情報を第１のフォーマットを用いて作成して記憶領域１３ａに格納した後、作成した指示情報に基づくデータ転送の実行を転送制御回路１１ａに指示する。また、制御回路１２は、転送制御回路１１ａの回路構成を更新する場合、記憶領域１３ａに格納された指示情報Ｉ１〜Ｉ４の中に、データ転送の実行を転送制御回路１１ａに指示していない指示情報Ｉ３，Ｉ４があるかを判定し、指示情報Ｉ３，Ｉ４がある場合、指示情報Ｉ３，Ｉ４を第２のフォーマットに変換して指示情報Ｉ３ａ，Ｉ４ａを作成し、記憶領域１３ａに格納した後、指示情報Ｉ３ａ，Ｉ４ａに基づくデータ転送の実行を転送制御回路１１ｂに指示するとともに、回路構成の更新処理を開始させる。【選択図】図１
2019159437.tif 000002
【特許請求の範囲】
【請求項１】
内部の回路構成を更新可能であり、第１のフォーマットで記述された指示情報に基づいて記憶装置からのデータ転送を実行する第１の転送制御回路と、第２のフォーマットで記述された指示情報に基づいて前記記憶装置からのデータ転送を実行する第２の転送制御回路と、制御回路とを有し、
前記制御回路は、
データ転送要求を受けるたびに、データ転送を指示する第１の指示情報を前記第１のフォーマットを用いて作成して所定の記憶領域に格納した後、作成した前記第１の指示情報に基づくデータ転送の実行を前記第１の転送制御回路に指示し、
前記第１の転送制御回路の前記回路構成を更新する場合、前記記憶領域に格納された前記第１の指示情報の中に、データ転送の実行を前記第１の転送制御回路に指示していない第２の指示情報があるかを判定し、
前記第２の指示情報がある場合、前記第２の指示情報を前記第２のフォーマットに変換して第３の指示情報を作成し、
前記第３の指示情報を前記記憶領域に格納した後、前記第３の指示情報に基づくデータ転送の実行を前記第２の転送制御回路に指示するとともに、前記回路構成の更新処理を開始させる、
情報処理装置。
【請求項２】
前記制御回路は、
前記第３の指示情報に基づくデータ転送の実行指示後、前記回路構成の更新処理を継続させながら、データ転送要求を受けるたびに、データ転送を指示する第４の指示情報を前記第２のフォーマットを用いて作成して前記記憶領域に格納した後、作成した前記第４の指示情報に基づくデータ転送の実行を前記第２の転送制御回路に指示し、
前記回路構成の更新処理が完了すると、前記記憶領域に格納された前記第４の指示情報の中に、データ転送の実行を前記第２の転送制御回路に指示していない第５の指示情報があるかを判定し、
前記第５の指示情報がある場合、前記第５の指示情報を前記第１のフォーマットに変換して第６の指示情報を作成し、
前記第６の指示情報を前記記憶領域に格納した後、前記第６の指示情報に基づくデータ転送の実行を前記第１の転送制御回路に指示する、
請求項１記載の情報処理装置。
【請求項３】
前記第１の転送制御回路は、前記第１の指示情報に基づいて第１のデータを転送する際、前記第１のデータに対して所定の処理を施し、
前記制御回路は、前記第３の指示情報に基づいて第２のデータの転送を前記第２の転送制御回路に指示する際、前記第２のデータに前記所定の処理を施し、
前記第２の転送制御回路は、前記第３の指示情報に基づいて、前記所定の処理が施された前記第２のデータを転送する、
請求項１または２記載の情報処理装置。
【請求項４】
前記所定の処理は、転送するデータに対してエラーチェック用コードを付加する処理である、
請求項３記載の情報処理装置。
【請求項５】
前記所定の処理は、転送するデータを圧縮する処理である、
請求項３記載の情報処理装置。
【請求項６】
内部の回路構成を更新可能であり、第１のフォーマットで記述された指示情報に基づいて記憶装置からのデータ転送を実行する第１の転送制御回路と、第２のフォーマットで記述された指示情報に基づいて前記記憶装置からのデータ転送を実行する第２の転送制御回路を有するコンピュータが、
データ転送要求を受けるたびに、データ転送を指示する第１の指示情報を前記第１のフォーマットを用いて作成して所定の記憶領域に格納した後、作成した前記第１の指示情報に基づくデータ転送の実行を前記第１の転送制御回路に指示し、
前記第１の転送制御回路の前記回路構成を更新する場合、前記記憶領域に格納された前記第１の指示情報の中に、データ転送の実行を前記第１の転送制御回路に指示していない第２の指示情報があるかを判定し、
前記第２の指示情報がある場合、前記第２の指示情報を前記第２のフォーマットに変換して第３の指示情報を作成し、
前記第３の指示情報を前記記憶領域に格納した後、前記第３の指示情報に基づくデータ転送の実行を前記第２の転送制御回路に指示するとともに、前記回路構成の更新処理を開始させる、
転送制御方法。
【請求項７】
内部の回路構成を更新可能であり、第１のフォーマットで記述された指示情報に基づいて記憶装置からのデータ転送を実行する第１の転送制御回路と、第２のフォーマットで記述された指示情報に基づいて前記記憶装置からのデータ転送を実行する第２の転送制御回路とを有するコンピュータに、
データ転送要求を受けるたびに、データ転送を指示する第１の指示情報を前記第１のフォーマットを用いて作成して所定の記憶領域に格納した後、作成した前記第１の指示情報に基づくデータ転送の実行を前記第１の転送制御回路に指示し、
前記第１の転送制御回路の前記回路構成を更新する場合、前記記憶領域に格納された前記第１の指示情報の中に、データ転送の実行を前記第１の転送制御回路に指示していない第２の指示情報があるかを判定し、
前記第２の指示情報がある場合、前記第２の指示情報を前記第２のフォーマットに変換して第３の指示情報を作成し、
前記第３の指示情報を前記記憶領域に格納した後、前記第３の指示情報に基づくデータ転送の実行を前記第２の転送制御回路に指示するとともに、前記回路構成の更新処理を開始させる、
処理を実行させる転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、転送制御方法および転送制御プログラムに関する。
【背景技術】
【０００２】
コンピュータシステム内でのデータ転送方式の１つとして、ＤＭＡ（Direct Memory Access）がある。ＤＭＡを用いたシステムでは、ＣＰＵ（Central Processing Unit）がＤＭＡコントローラにデータ転送を指示すると、ＤＭＡコントローラは、ＣＰＵとは独立に記憶装置間で直接データを転送する。これにより、ＣＰＵの処理負荷が低減され、システム全体での処理効率が向上する。
【０００３】
このようなＤＭＡを用いたシステムの例として、ＣＰＵに内蔵されたＤＭＡドライバと、ＣＰＵの外部のＤＭＡドライバとを備えたＤＭＡ転送システムが提案されている。
一方、ＦＰＧＡ（Field Programmable Gate Array）は、内部の論理回路の構成を更新可能な集積回路である。近年、ＦＰＧＡに複雑な機能を実装できるようになり、それに伴ってコンピュータ内部の様々な回路がＦＰＧＡによって実現されつつある。例えば、上記のＤＭＡコントローラのようなデータの転送制御回路を、ＦＰＧＡによって実現したものがある。
【０００４】
また、ＦＰＧＡを用いたシステムについては、システム全体の動作を停止しないとＦＰＧＡの回路構成を更新できないという課題がある。このような課題に対し、例えば、メインＣＰＵのＩ／Ｏ（Input／Output）バスへのアクセスを抑制し、アクセスが抑制されている間にＦＰＧＡの回路構成を更新するようにしたコンピュータシステムが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１８１８５５号公報
【特許文献２】特開２００１−２９０７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＤＭＡコントローラのような転送制御回路をＦＰＧＡによって実現した場合でも、転送制御回路が搭載されたシステムの動作を停止させずに回路構成を更新できるようにすることが１つの課題となる。例えば、その実現のためには、更新対象の転送制御回路が実行すべきデータ転送処理を他の回路に肩代わりさせる場合、どのようにしてデータ転送処理を確実に継続させるかという点に課題がある。
【０００７】
１つの側面では、本発明は、転送制御回路の回路構成を更新する際にデータ転送処理を確実に継続可能にする情報処理装置、転送制御方法および転送制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、次のような情報処理装置が提供される。この情報処理装置は、内部の回路構成を更新可能であり、第１のフォーマットで記述された指示情報に基づいて記憶装置からのデータ転送を実行する第１の転送制御回路と、第２のフォーマットで記述された指示情報に基づいて記憶装置からのデータ転送を実行する第２の転送制御回路と、制御回路とを有する。また、制御回路は、データ転送要求を受けるたびに、データ転送を指示する第１の指示情報を第１のフォーマットを用いて作成して所定の記憶領域に格納した後、作成した第１の指示情報に基づくデータ転送の実行を第１の転送制御回路に指示し、第１の転送制御回路の回路構成を更新する場合、記憶領域に格納された第１の指示情報の中に、データ転送の実行を第１の転送制御回路に指示していない第２の指示情報があるかを判定し、第２の指示情報がある場合、第２の指示情報を第２のフォーマットに変換して第３の指示情報を作成し、第３の指示情報を記憶領域に格納した後、第３の指示情報に基づくデータ転送の実行を第２の転送制御回路に指示するとともに、回路構成の更新処理を開始させる。
【０００９】
また、１つの案では、上記の情報処理装置の制御回路と同様の処理をコンピュータが実行する転送制御方法が提供される。
さらに、１つの案では、上記の情報処理装置の制御回路と同様の処理をコンピュータに実行させる転送制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、転送制御回路の回路構成を更新する際にデータ転送処理を確実に継続できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理装置の構成および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ＣＭが備える処理機能の構成例を示すブロック図である。
【図５】通常時におけるデータ転送処理の第１の例を示す図である。
【図６】通常時におけるデータ転送処理の第２の例を示す図である。
【図７】ＤＭＡコントローラの再構成時におけるデータ転送処理の第１の例を示す図である。
【図８】ＤＭＡコントローラの再構成時におけるデータ転送処理の第２の例を示す図である。
【図９】ディスクリプタのフォーマットの例を示す図である。
【図１０】ＤＭＡ制御部の動作モードを説明するための図である。
【図１１】ディスクリプタのフォーマット変換について説明するための図である。
【図１２】使用するＤＭＡコントローラの切り替え処理を示すシーケンス図の例（その１）である。
【図１３】使用するＤＭＡコントローラの切り替え処理を示すシーケンス図の例（その２）である。
【図１４】内蔵ＤＭＡコントローラを使用する場合のデータ転送制御処理を示すフローチャートの例である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の構成および処理例を示す図である。図１に示す情報処理装置１０は、転送制御回路１１ａ，１１ｂと制御回路１２を有する。
【００１３】
転送制御回路１１ａ，１１ｂはいずれも、制御回路１２からの指示に応じて、記憶装置１３からのデータ転送を実行する。なお、図１の例では記憶装置１３は情報処理装置１０の内部に搭載されているが、記憶装置１３は情報処理装置１０の外部に設置されていてもよい。また、ここでは例として、転送制御回路１１ａ，１１ｂは、記憶装置１３から記憶装置２０へのデータ転送を実行するものとする。ただし、転送制御回路１１ａ，１１ｂは、記憶装置１３に格納されたデータを記憶装置１３内の別の記憶領域に格納するようなデータ転送を実行してもよい。
【００１４】
転送制御回路１１ａは、その内部の回路構成を更新可能となっている。例えば、転送制御回路１１ａは、ＦＰＧＡとして実現される。転送制御回路１１ａは、第１のフォーマットで記述された指示情報に基づいて、記憶装置１３からのデータ転送を実行する。転送制御回路１１ｂは、第２のフォーマットで記述された指示情報に基づいて、記憶装置１３からのデータ転送を実行する。
【００１５】
指示情報とは、データ転送を指示するための情報であり、例えば、転送元アドレス、転送先アドレスなど、データ転送の処理内容に関する情報が記述される。また、指示情報は、制御回路１２によって記憶領域１３ａに格納される。転送制御回路１１ａ，１１ｂは、記憶領域１３ａに格納された指示情報を参照することによって、その指示情報に基づくデータ転送を実行する。なお、図１では例として、記憶領域１３ａは記憶装置１３の内部に確保されているが、記憶領域１３ａは記憶装置１３以外の他の記憶装置に確保されてもよい。
【００１６】
情報処理装置１０では、制御回路１２の制御により、通常時には、転送制御回路１１ａ，１１ｂのうち転送制御回路１１ａを使用して、記憶装置１３からのデータ転送が実行される。また、転送制御回路１１ａの回路構成を更新する際には、転送制御回路１１ｂを使用して記憶装置１３からのデータ転送が実行される。このように、転送制御回路１１ａの回路構成が更新される際には、転送制御回路１１ａに代わって転送制御回路１１ｂがデータ転送を実行することで、情報処理装置１０の動作を停止させずに転送制御回路１１ａの回路構成を更新できる。
【００１７】
制御回路１２は、通常時には、データ転送要求を受けるたびに、そのデータ転送を指示する指示情報を第１のフォーマットを用いて作成して記憶領域１３ａに格納した後、作成した指示情報に基づくデータ転送の実行を転送制御回路１１ａに指示する。
【００１８】
例えば、図１の右上に示すように、制御回路１２は、あるデータの転送要求を受けると、そのデータ転送を指示する指示情報Ｉ１を作成し、記憶領域１３ａに格納する。その後、制御回路１２は、指示情報Ｉ１に基づくデータ転送の実行を転送制御回路１１ａに指示する。指示を受けた転送制御回路１１ａは、指示情報Ｉ１に基づいてデータ転送を実行する。
【００１９】
また、制御回路１２は、別のデータの転送要求を受けると、そのデータ転送を指示する指示情報Ｉ２を作成し、記憶領域１３ａに格納する。その後、制御回路１２は、指示情報Ｉ２に基づくデータ転送の実行を転送制御回路１１ａに指示する。指示を受けた転送制御回路１１ａは、指示情報Ｉ２に基づいてデータ転送を実行する。
【００２０】
制御回路１２は、転送制御回路１１ａの回路構成を変更する際には、次のような処理を実行する。まず、制御回路１２は、記憶領域１３ａに格納された指示情報の中に、データ転送の実行を転送制御回路１１ａに指示していない指示情報があるかを判定する。ここで、上記のように、制御回路１２は、作成した指示情報を記憶領域１３ａに格納した後、その指示情報に基づくデータ転送の実行を転送制御回路１１ａに指示する。このため、指示情報が記憶領域１３ａに格納されてから、その指示情報に基づくデータ転送の実行が指示されるまでには、タイムラグがある。このようなタイムラグにより、転送制御回路１１ａの回路構成を変更するタイミングで、記憶領域１３ａに格納された指示情報の中に、データ転送の実行を転送制御回路１１ａに指示していない指示情報が存在する場合がある。
【００２１】
ここでは例として、図１の右上に示すように、転送制御回路１１ａの回路構成を変更するタイミングで、記憶領域１３ａに格納された指示情報Ｉ３，Ｉ４について、データ転送の実行が指示されていなかったものとする。この場合、制御回路１２は、指示情報Ｉ３，Ｉ４を第２のフォーマットに変換して、指示情報Ｉ３ａ，Ｉ４ａをそれぞれ作成する。図１の右下に示すように、制御回路１２は、作成した指示情報Ｉ３ａ，Ｉ４ａを記憶領域１３ａに格納した後、指示情報Ｉ３ａ，Ｉ４ａにそれぞれ基づくデータ転送の実行を、転送制御回路１１ｂに指示する。これとともに、制御回路１２は、転送制御回路１１ａの回路構成の更新処理を開始させる。
【００２２】
指示情報Ｉ３ａ，Ｉ４ａは第２のフォーマットに変換されているので、指示を受けた転送制御回路１１ｂは、指示情報Ｉ３ａ，Ｉ４ａを参照することで、それらに基づくデータ転送を実行できる。したがって、転送制御回路１１ｂにより、フォーマット変換前の指示情報Ｉ３，Ｉ４で指示されていた内容のデータ転送処理が実行される。
【００２３】
以上の処理により、指示情報Ｉ３，Ｉ４に基づくデータ転送の実行が指示される前に転送制御回路１１ａの回路構成を変更するタイミングになった場合でも、指示情報Ｉ３，Ｉ４で指示されていた内容のデータ転送処理が転送制御回路１１ｂに確実に引き継がれる。したがって、転送制御回路１１ａの回路構成を更新する際に、データ転送処理を確実に継続できるようになる。
【００２４】
換言すると、どのようなタイミングで転送制御回路１１ａの回路構成を更新しようとしても、制御回路１２に対して要求されたデータ転送を正しく継続することができる。したがって、情報処理装置１０の動作を停止させずに、任意のタイミングで転送制御回路１１ａの回路構成を更新することができる。
【００２５】
〔第２の実施の形態〕
次に、図１に示した情報処理装置１０の一例としてストレージ制御装置を示し、このストレージ制御装置を含むストレージシステムについて説明する。
【００２６】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ＣＭ（Controller Module）１００，２００およびドライブ部３００を備えたストレージ装置５０と、ホスト装置４１０，４２０とを含む。ホスト装置４１０，４２０は、例えばＳＡＮ（Storage Area Network）４３０を介して、ＣＭ１００，２００と接続されている。
【００２７】
ＣＭ１００，２００は、ホスト装置４１０またはホスト装置４２０からの要求に応じて、ドライブ部３００に搭載された記憶装置に対するアクセスを制御するストレージ制御装置である。ＣＭ１００は、ＣＭ１００の内部のキャッシュを用いて、ドライブ部３００内の記憶装置に対するアクセスを制御する。ＣＭ２００も同様に、ＣＭ２００の内部のキャッシュを用いて、ドライブ部３００内の記憶装置に対するアクセスを制御する。
【００２８】
また、ＣＭ１００とＣＭ２００は、互いに接続され、データを互いに送受信することができる。特に、後述するように、ＣＭ１００とＣＭ２００との間では、それぞれが備えるＤＭＡコントローラにより、一方が備えるＲＡＭ（Random Access Memory）から他方が備えるＲＡＭへのデータの転送が可能になっている。
【００２９】
このようなＣＭ１００とＣＭ２００との間のデータ転送は、例えば、キャッシュのミラーリングに利用される。例えば、ＣＭ１００，２００のうち、一方が運用状態に設定され、他方がスタンバイ状態に設定される。運用状態のＣＭは、その内部のキャッシュのデータを他方のＣＭ内のミラーリング領域に書き込むことで、キャッシュのデータを二重化する。これにより、運用状態のＣＭが異常停止した場合に、他方のＣＭが運用状態に遷移し、ドライブ部３００内の記憶装置へのアクセス制御を引き継ぐことができる。
【００３０】
ドライブ部３００には、ホスト装置４１０，４２０からのアクセス対象となる複数台の記憶装置が搭載されている。本実施の形態では例として、ドライブ部３００は、このような記憶装置としてＨＤＤ（Hard Disk Drive）３０１，３０２，３０３，・・・が搭載されたディスクアレイ装置であるものとする。なお、ホスト装置４１０，４２０からのアクセス対象となる記憶装置は、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置であってもよい。
【００３１】
図３は、ＣＭのハードウェア構成例を示す図である。
ＣＭ１００は、ＣＰＵ１１０、ＲＡＭ１２０、ＳＳＤ１３０、ＰＣＩｅ（PCI express，PCI：Peripheral Component Interconnect）スイッチ（ＳＷ）１４０、ＤＭＡコントローラ（ＤＭＡＣ）１５０、ＲＯＭ（Read Only Memory）１６０、ホストインタフェース（Ｉ／Ｆ）１７０およびドライブインタフェース（Ｉ／Ｆ）１８０を備える。
【００３２】
ＣＰＵ１１０は、ＣＭ１００全体を統括的に制御する。ＣＰＵ１１０は、例えば、１または複数のプロセッサコアを備える。また、ＣＰＵ１１０には、ＤＭＡコントローラ（ＤＭＡＣ）１１１が内蔵されている。ＤＭＡコントローラ１１１は、ＲＡＭ１２０と他方のＣＭ２００のＲＡＭ２２０との間のデータ転送、および、ＲＡＭ１２０内のある記憶領域から別の記憶領域へのデータ転送を制御する。
【００３３】
なお、図示しないが、ＣＰＵ１１０は、メモリコントローラを備えている。メモリコントローラにより、ＤＭＡコントローラ１５０，１１１からＲＡＭ１２０に対するデータの読み書きが、ＣＰＵ１１０のプロセッサコアを介さずに実行可能となる。
【００３４】
ＲＡＭ１２０は、ＣＭ１００の主記憶装置として使用される。ＲＡＭ１２０には、ＣＰＵ１１０に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１２０には、ＣＰＵ１１０による処理に必要な各種データが格納される。例えば、ＲＡＭ１２０には、ホスト装置４１０，４２０からの要求に応じたドライブ部３００内の記憶装置へのアクセス制御の際に用いられるキャッシュの領域が確保される。
【００３５】
ＳＳＤ１３０は、ＣＭ１００の補助記憶装置として使用される。ＳＳＤ１３０には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＨＤＤなどの他の種類の不揮発性記憶装置が用いられてもよい。また、ＳＳＤ１３０は、バスコントローラが搭載されたチップセットなどを介してＣＰＵ１１０と接続されていてもよい。
【００３６】
ＣＰＵ１１０とホストインタフェース１７０、ドライブインタフェース１８０、他方のＣＭ２００との間は、ＰＣＩｅスイッチ１４０を介してＰＣＩｅバスによって接続されている。ＰＣＩｅスイッチ１４０は、ＣＰＵ１１０とホストインタフェース１７０、ドライブインタフェース１８０、他方のＣＭ２００との間のデータ送受信を制御する。
【００３７】
ＤＭＡコントローラ１５０は、ＲＡＭ１２０と他方のＣＭ２００のＲＡＭ２２０との間のデータ転送、および、ＲＡＭ１２０内のある記憶領域から別の記憶領域へのデータ転送を制御する。ＤＭＡコントローラ１５０は、ＦＰＧＡによって実現される。ＲＯＭ１６０は、例えばフラッシュＲＯＭなどの書き替え可能な記憶装置であり、ＤＭＡコントローラ１５０に接続されている。ＲＯＭ１６０には、ＤＭＡコントローラの内部論理回路の構成を指示するためのプログラムが記憶されている。
【００３８】
ＲＯＭ１６０に記憶されたプログラムが更新され、更新後のプログラムがＤＭＡコントローラ１５０に適用されることで、ＤＭＡコントローラ１５０の内部論理回路の構成がそのプログラムに基づいて更新される。このような回路構成の更新により、例えば、ＤＭＡコントローラ１５０の既存処理機能の性能や確実性を向上させることができる。また、例えば、ＤＭＡコントローラ１５０に新たな処理機能を追加することもできる。
【００３９】
なお、以下の説明では、ＤＭＡコントローラ１５０の回路構成を更新することを「再構成する」と記載する。
ホストインタフェース１７０は、ＳＡＮ４３０を介してホスト装置４１０，４２０と通信するためのインタフェースである。ホストインタフェース１７０は、例えば、ＦＣ（Fibre Channel）インタフェースである。ドライブインタフェース１８０は、ドライブ部３００内の記憶装置と通信するためのインタフェースである。ドライブインタフェース１８０は、例えば、ＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）インタフェースである。
【００４０】
ＣＭ２００は、ＣＭ１００と同様のハードウェア構成を有する。すなわち、ＣＭ２００は、ＣＰＵ２１０、ＲＡＭ２２０、ＳＳＤ２３０、ＰＣＩｅスイッチ（ＳＷ）２４０、ＤＭＡコントローラ（ＤＭＡＣ）２５０、ＲＯＭ２６０、ホストインタフェース（Ｉ／Ｆ）２７０およびドライブインタフェース（Ｉ／Ｆ）２８０を備える。ＣＰＵ２１０、ＲＡＭ２２０、ＳＳＤ２３０、ＰＣＩｅスイッチ２４０、ＤＭＡコントローラ２５０、ＲＯＭ２６０、ホストインタフェース２７０およびドライブインタフェース２８０は、ＣＰＵ１１０、ＲＡＭ１２０、ＳＳＤ１３０、ＰＣＩｅスイッチ１４０、ＤＭＡコントローラ１５０、ＲＯＭ１６０、ホストインタフェース１７０およびドライブインタフェース１８０にそれぞれ対応する構成要素であるので、ここでは説明を省略する。
【００４１】
なお、ＰＣＩｅスイッチ２４０は、他方のＣＭ１００のＰＣＩｅスイッチ１４０とＰＣＩｅバスを介して接続されている。したがって、ＰＣＩｅスイッチ１４０とＰＣＩｅスイッチ２４０との通信により、ＣＭ１００とＣＭ２００との間のデータ転送が実現される。
【００４２】
また、ＤＭＡコントローラ２５０は、ＲＡＭ２２０と他方のＣＭ１００のＲＡＭ１２０との間のデータ転送、および、ＲＡＭ２２０内のある記憶領域から別の記憶領域へのデータ転送を制御する。さらに、ＣＰＵ２１０には、ＤＭＡコントローラ（ＤＭＡＣ）２１１が内蔵されている。ＤＭＡコントローラ２１１も、ＲＡＭ２２０と他方のＣＭ１００のＲＡＭ１２０との間のデータ転送、および、ＲＡＭ２２０内のある記憶領域から別の記憶領域へのデータ転送を制御することが可能である。
【００４３】
なお、以上の構成において、ＣＭ１００，２００は、図１の情報処理装置１０の一例である。ＣＭ１００を情報処理装置１０の一例とした場合、ＣＰＵ１１０は、図１の制御回路１２の一例である。また、ＲＡＭ１２０，２２０は、それぞれ図１の記憶装置１３，２０の一例である。さらに、ＤＭＡコントローラ１５０，１１１は、それぞれ図１の転送制御回路１１ａ，１１ｂの一例である。
【００４４】
ところで、ＣＭ１００では、ＤＭＡコントローラ１５０，１１１により、ＲＡＭ１２０と他方のＣＭ２００のＲＡＭ２２０との間のデータ転送、および、ＲＡＭ１２０内のある記憶領域から別の記憶領域へのデータ転送が、ＣＰＵ１１０のプロセッサコアを介さずに実行される。本実施の形態では、通常時には、ＤＭＡコントローラ１５０の動作によって上記データ転送が実行され、ＤＭＡコントローラ１１１は使用されない。そして、ＤＭＡコントローラ１５０を再構成する際には、ＤＭＡコントローラ１１１を使用して上記データ転送が実行される。すなわち、ＤＭＡコントローラ１５０の最構成の際には、ＤＭＡコントローラ１５０によるデータ転送処理がＤＭＡコントローラ１１１によって肩代わりされる。これにより、ＣＭ１００の処理（例えば、ホスト装置４１０，４２０からのＩ／Ｏ要求に応じたＩ／Ｏ制御処理）を停止させずにＤＭＡコントローラ１５０を再構成する「動的再構成」を実現できる。
【００４５】
また、ＤＭＡコントローラ１５０は、ＲＡＭ間のデータ転送機能だけでなく、データ転送に関係する付加的な処理の実行機能も備える。例えば、ＤＭＡコントローラ１５０は、転送データにＢＣＣ（Block Check Character）などのエラーチェック用のチェックコードを付加する処理や、転送データを圧縮する処理を実行できる。以下、このような付加的な処理を「オプション処理」と記載する。また、ＤＭＡコントローラ１５０はＦＰＧＡであるので、ＤＭＡコントローラ１５０に対してオプション処理機能を後から追加することもできる。
【００４６】
ＤＭＡコントローラ１５０がこのようなオプション処理を実行することで、データ転送の際にＣＰＵ１１０がこのようなオプション処理を実行しなくてよくなり、その分だけＣＰＵ１１０の処理負荷を軽減できる。その結果、ＣＰＵ１１０に他の処理を割り当てて実行させることができ、ＣＭ１００全体としての処理性能が向上する。したがって、通常時にはＤＭＡコントローラ１５０によってデータ転送が行われることで、ＣＭ１００全体の処理性能を向上させることができる。
【００４７】
一方、ＤＭＡコントローラ１１１の例のように、近年のＣＰＵの中にはＤＭＡコントローラが内蔵されているものがある。ただし、ＣＰＵに内蔵されたＤＭＡコントローラは、基本的なデータ転送機能だけを備えているものが多く、ＤＭＡコントローラ１５０のような各種のオプション処理の実行機能を備えていないものが多い。
【００４８】
本実施の形態のＤＭＡコントローラ１１１も、オプション処理の実行機能を備えていない。このため、通常時にはデータ転送をＤＭＡコントローラ１１１ではなくＤＭＡコントローラ１５０に実行させることで、上記のようにＣＭ１００全体の処理性能を向上させることができる。一方、ＤＭＡコントローラ１５０の再構成の実行時には、データ転送をＤＭＡコントローラ１１１が肩代わりする。これにより、データ転送の肩代わりのために新たなＤＭＡコントローラを搭載させずに、既存の資源を用いてＤＭＡコントローラ１１１の動的再構成を実現できる。すなわち、動的再構成の実現のための装置コストを抑制できる。ただし、後述するように、ＤＭＡコントローラ１１１がデータ転送を実行する際には、オプション処理がＣＰＵ１１０によって実行される。
【００４９】
なお、ＣＭ２００でも同様に、通常時には、ＤＭＡコントローラ２５０の動作によってデータ転送が実行され、ＤＭＡコントローラ２１１は使用されない。そして、ＤＭＡコントローラ２５０を再構成する際には、ＤＭＡコントローラ２１１を使用してデータ転送が実行される。すなわち、ＤＭＡコントローラ２５０の再構成の際には、ＤＭＡコントローラ２５０によるデータ転送がＤＭＡコントローラ２１１によって肩代わりされる。
【００５０】
これにより、ＣＭ２００の処理（例えば、ホスト装置４１０，４２０からのＩ／Ｏ要求に応じたＩ／Ｏ制御処理）を停止させずに、ＤＭＡコントローラ２５０を再構成することができる。また、通常時にはＣＭ２００全体の処理性能を向上させることができるとともに、ＤＭＡコントローラ２５０の動的再構成を低コストで実現できる。
【００５１】
以下、ＣＭ１００，２００における上記のようなＤＭＡコントローラ１５０，２５０の動的再構成の制御処理について、詳しく説明する。以下の説明では、例としてＣＭ１００について説明するが、ＣＭ２００もＣＭ１００と同様の処理を実行可能である。
【００５２】
図４は、ＣＭが備える処理機能の構成例を示すブロック図である。まず、ＣＭ１００のＣＰＵ１１０は、前述のＤＭＡコントローラ１１１の他、プロセッサコア１１２を備える。プロセッサコア１１２は、ＲＡＭ１２０から読み込んだプログラムにしたがって各種の演算処理を実行するための演算回路である。なお、ＣＰＵ１１０は、複数のプロセッサコア１１２を備えていてもよい。
【００５３】
また、ＣＭ１００は、Ｉ／Ｏ制御部１１３、ＤＭＡ制御部１１４、再構成制御部１１５およびディスクリプタ記憶部１２１，１２２を備える。Ｉ／Ｏ制御部１１３、ＤＭＡ制御部１１４および再構成制御部１１５の処理は、プロセッサコア１１２が所定のプログラムを実行することで実現される。ディスクリプタ記憶部１２１，１２２は、ＲＡＭ１２０の記憶領域の一部として実現される。
【００５４】
Ｉ／Ｏ制御部１１３は、ホスト装置４１０，４２０からのＩ／Ｏ要求に応じて、ドライブ部３００内のＨＤＤのＩ／Ｏ制御処理を実行する。このＩ／Ｏ制御処理において、Ｉ／Ｏ制御部１１３は、ＲＡＭ１２０に確保されたキャッシュ領域（図示せず）を使用する。
【００５５】
例えば、Ｉ／Ｏ制御部１１３は、ホスト装置４１０からデータの読み出しが要求されたとき、要求されたデータがキャッシュ領域に格納されている場合には、そのデータをキャッシュ領域から読み出してホスト装置４１０に送信する。一方、要求されたデータがキャッシュ領域に格納されていない場合、Ｉ／Ｏ制御部１１３は、要求されたデータをドライブ部３００内のＨＤＤから読み出してキャッシュ領域に格納し、そのデータをホスト装置４１０に送信する。
【００５６】
また、Ｉ／Ｏ制御部１１３は、ホスト装置４１０，４２０からドライブ部３００へのデータの書き込みをライトバック方式で制御する。例えば、ホスト装置４１０からデータの書き込みが要求された場合、Ｉ／Ｏ制御部１１３は、ホスト装置４１０から受信した書き込みデータをＲＡＭ１２０のキャッシュ領域に書き込む。また、Ｉ／Ｏ制御部１１３は、その書き込みデータをＣＭ２００のＲＡＭ２２０にも書き込む。書き込みデータのＲＡＭ２２０への書き込みは、通常状態では、ＤＭＡコントローラ１５０にＲＡＭ間のデータ転送を依頼することで実行される。Ｉ／Ｏ制御部１１３は、書き込みデータがＲＡＭ１２０，２２０の両方に書き込まれた後、ホスト装置４１０に書き込み完了応答を送信する。また、Ｉ／Ｏ制御部１１３は、その後の所定のタイミングで、ＲＡＭ１２０のキャッシュ領域に書き込まれた書き込みデータを、ドライブ部３００内の対応するＨＤＤに書き込む。
【００５７】
なお、Ｉ／Ｏ制御部１１３は、プロセッサコア１１２によって実現され、かつ、ＲＡＭ間のデータ転送をＤＭＡコントローラ１５０に依頼する処理機能の中のあくまで一例である。プロセッサコア１１２は、ホスト装置４１０またはホスト装置４２０からドライブ部３００へのＩ／Ｏ処理以外の処理過程において、ＲＡＭ間のデータ転送をＤＭＡコントローラ１５０に依頼してもよい。なお、ここで言うＲＡＭ間のデータ転送とは、ＲＡＭ２２０と他方のＣＭ１００のＲＡＭ１２０との間のデータ転送であっても、ＲＡＭ２２０内のある記憶領域から別の記憶領域へのデータ転送であってもよい。
【００５８】
ＤＭＡ制御部１１４は、Ｉ／Ｏ制御部１１３などの依頼元からの依頼に応じて、ＤＭＡコントローラ１５０またはＤＭＡコントローラ１１１に対して、ＲＡＭ間のデータ転送を指示する。データ転送の指示は、ディスクリプタを用いて行われる。ディスクリプタとは、ＤＭＡコントローラ１５０，１１１に実行させるＲＡＭ間のデータ転送処理の内容を示す命令セットが記述されるデータ構造体である。
【００５９】
あるＤＭＡコントローラにデータ転送を指示する場合、ＤＭＡ制御部１１４は、データ転送処理の内容を記述したディスクリプタをディスクリプタ記憶部１２１に格納する。そして、ＤＭＡ制御部１１４は、そのディスクリプタのＲＡＭ１２０上のアドレスをＤＭＡコントローラに通知して、データ転送の実行を指示する。ＤＭＡコントローラは、通知されたＲＡＭ１２０上のアドレスにアクセスしてディスクリプタを読み出し、そのディスクリプタの内容にしたがってデータ転送処理を実行する。
【００６０】
ＤＭＡ制御部１１４は、ＤＭＡコントローラ１５０にデータ転送を指示する場合、ディスクリプタをディスクリプタ記憶部１２１に格納する。一方、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１１１にデータ転送を指示する場合、ディスクリプタをディスクリプタ記憶部１２２に格納する。したがって、ディスクリプタ記憶部１２１は、ＤＭＡコントローラ１５０にデータ転送を指示するためのディスクリプタが格納される専用の記憶領域である。また、ディスクリプタ記憶部１２２は、ＤＭＡコントローラ１１１にデータ転送を指示するためのディスクリプタが格納される専用の記憶領域である。
【００６１】
ディスクリプタ記憶部１２１には、ＤＭＡコントローラ１５０にデータ転送を指示するためのディスクリプタが、ＦＩＦＯ（First In First Out）方式で格納される。ＤＭＡコントローラ１５０によるデータ転送が完了すると、それに対応するディスクリプタはディスクリプタ記憶部１２１から消去される。また、ディスクリプタ記憶部１２２には、ＤＭＡコントローラ１１１にデータ転送を指示するためのディスクリプタが、ＦＩＦＯ方式で格納される。ＤＭＡコントローラ１１１によるデータ転送が完了すると、それに対応するディスクリプタはディスクリプタ記憶部１２２から消去される。
【００６２】
再構成制御部１１５は、ＤＭＡコントローラ１５０の再構成処理を制御する。例えば、再構成制御部１１５は、ＤＭＡコントローラ１５０に再構成処理を実行させる前に、ＤＭＡ制御部１１４によるデータ転送の指示先をＤＭＡコントローラ１５０からＤＭＡコントローラ１１１に切り替えるための処理を実行する。切り替えが完了すると、再構成制御部１１５は、ＤＭＡコントローラ１５０に再構成処理を実行させる。そして、再構成制御部１１５は、ＤＭＡコントローラ１５０の再構成処理が完了すると、ＤＭＡ制御部１１４によるデータ転送の指示先をＤＭＡコントローラ１１１からＤＭＡコントローラ１５０に切り替えるための処理を実行する。
【００６３】
次に、ＤＭＡコントローラ１５０についてさらに説明する。ＤＭＡコントローラ１５０は、転送制御回路１５１とオプション処理回路１５２を備える。
転送制御回路１５１は、ＤＭＡ制御部１１４からの指示に応じてＲＡＭ間のデータ転送を実行する。オプション処理回路１５２は、データ転送に関係する付加的な処理であるオプション処理を実行する。例えば、オプション処理としては、転送データにＢＣＣなどのチェックコードを付加する処理や、転送データを圧縮する処理などがある。
【００６４】
次に、ＤＭＡコントローラを用いたＲＡＭ間のデータ転送処理について説明する。まず、図５、図６を用いて、通常時におけるＲＡＭ間のデータ転送処理について説明する。
図５は、通常時におけるデータ転送処理の第１の例を示す図である。この図５では、ＣＭ１００のＲＡＭ１２０からＣＭ２００のＲＡＭ２２０に対してデータＤＴ１を転送する場合について例示する。
【００６５】
ＤＭＡ制御部１１４は、データＤＴ１の転送依頼を受けると、データＤＴ１の転送処理内容を記述したディスクリプタＤＳＣ１を作成し、ＤＭＡコントローラ１５０用のディスクリプタ記憶部１２１に格納する（ステップＳ１１）。ディスクリプタＤＳＣ１には、転送元アドレス、転送先アドレス、オプション処理の指示情報などが含まれる。そして、ＤＭＡ制御部１１４は、ＲＡＭ１２０におけるディスクリプタＤＳＣ１のアドレスをＤＭＡコントローラ１５０に通知して、データ転送の実行を指示する（ステップＳ１２）。
【００６６】
ＤＭＡコントローラ１５０の転送制御回路１５１は、通知されたアドレスに基づいてＲＡＭ１２０にアクセスし、ディスクリプタＤＳＣ１を読み出す（ステップＳ１３）。転送制御回路１５１は、ディスクリプタＤＳＣ１の内容に基づいて、ＲＡＭ１２０からデータＤＴ１を読み出す（ステップＳ１４ａ）。ここで、ディスクリプタＤＳＣ１においてオプション処理の実行が指示されていた場合、ＤＭＡコントローラ１５０のオプション処理回路１５２は、読み込まれたデータＤＴ１に対するオプション処理を実行する（ステップＳ１４ｂ）。転送制御回路１５１は、オプション処理が施されたデータＤＴ１を、ＰＣＩｅスイッチ１４０，２４０を介してＣＭ２００のＲＡＭ２２０に書き込む（ステップＳ１４ｃ）。転送制御回路１５１が転送完了をＤＭＡ制御部１１４に通知することで、データ転送処理が完了する。
【００６７】
図６は、通常時におけるデータ転送処理の第２の例を示す図である。この図６では、ＣＭ１００のＲＡＭ１２０に格納されたデータＤＴ２を、ＲＡＭ１２０内の別の領域に書き込む場合について例示する。
【００６８】
ＤＭＡ制御部１１４は、データＤＴ２の転送依頼を受けると、データＤＴ２の転送処理内容を記述したディスクリプタＤＳＣ２を作成し、ＤＭＡコントローラ１５０用のディスクリプタ記憶部１２１に格納する（ステップＳ２１）。そして、ＤＭＡ制御部１１４は、ＲＡＭ１２０におけるディスクリプタＤＳＣ２のアドレスをＤＭＡコントローラ１５０に通知して、データ転送の実行を指示する（ステップＳ２２）。
【００６９】
ＤＭＡコントローラ１５０の転送制御回路１５１は、通知されたアドレスに基づいてＲＡＭ１２０にアクセスし、ディスクリプタＤＳＣ２を読み出す（ステップＳ２３）。転送制御回路１５１は、ディスクリプタＤＳＣ２の内容に基づいて、ＲＡＭ１２０からデータＤＴ２を読み出す（ステップＳ２４ａ）。ここで、ディスクリプタＤＳＣ２においてオプション処理の実行が指示されていた場合、ＤＭＡコントローラ１５０のオプション処理回路１５２は、読み込まれたデータＤＴ２に対するオプション処理を実行する（ステップＳ２４ｂ）。転送制御回路１５１は、オプション処理が施されたデータＤＴ２を、ディスクリプタＤＳＣ２に記述された転送先アドレスが示すＲＡＭ１２０の領域に書き込む（ステップＳ２４ｃ）。転送制御回路１５１が転送完了をＤＭＡ制御部１１４に通知することで、データ転送処理が完了する。
【００７０】
次に、図７、図８を用いて、ＤＭＡコントローラ１５０の再構成が行われる場合のＲＡＭ間のデータ転送処理について説明する。
図７は、ＤＭＡコントローラの再構成時におけるデータ転送処理の第１の例を示す図である。この図７では、ＤＭＡコントローラ１５０の再構成が行われている間に、ＣＭ１００のＲＡＭ１２０からＣＭ２００のＲＡＭ２２０に対してデータＤＴ３を転送する場合について例示する。
【００７１】
ＤＭＡ制御部１１４は、データＤＴ３の転送依頼を受ける。このとき、オプション処理の実行が指示されていた場合、ＤＭＡ制御部１１４は、データＤＴ３に対するオプション処理を実行する（ステップＳ３１）。ＤＭＡ制御部１１４は、データＤＴ３の転送処理内容を記述したディスクリプタＤＳＣ３を作成し、ＤＭＡコントローラ１１１用のディスクリプタ記憶部１２２に格納する（ステップＳ３２）。そして、ＤＭＡ制御部１１４は、ＲＡＭ１２０におけるディスクリプタＤＳＣ３のアドレスをＤＭＡコントローラ１１１に通知して、データ転送の実行を指示する（ステップＳ３３）。
【００７２】
ＤＭＡコントローラ１１１は、通知されたアドレスに基づいてＲＡＭ１２０にアクセスし、ディスクリプタＤＳＣ３を読み出す（ステップＳ３４）。ＤＭＡコントローラ１１１は、ディスクリプタＤＳＣ３の内容に基づいて、オプション処理が施されたデータＤＴ３をＲＡＭ１２０から読み出し、ＰＣＩｅスイッチ１４０，２４０を介してＣＭ２００のＲＡＭ２２０に書き込む（ステップＳ３５）。ＤＭＡコントローラ１１１が転送完了をＤＭＡ制御部１１４に通知することで、データ転送処理が完了する。
【００７３】
図８は、ＤＭＡコントローラの再構成時におけるデータ転送処理の第２の例を示す図である。この図８では、ＤＭＡコントローラ１５０の再構成が行われている間に、ＣＭ１００のＲＡＭ１２０に格納されたデータＤＴ４を、ＲＡＭ１２０内の別の領域に書き込む場合について例示する。
【００７４】
ＤＭＡ制御部１１４は、データＤＴ４の転送依頼を受ける。このとき、オプション処理の実行が指示されていた場合、ＤＭＡ制御部１１４は、データＤＴ４に対するオプション処理を実行する（ステップＳ４１）。ＤＭＡ制御部１１４は、データＤＴ４の転送処理内容を記述したディスクリプタＤＳＣ４を作成し、ＤＭＡコントローラ１１１用のディスクリプタ記憶部１２２に格納する（ステップＳ４２）。そして、ＤＭＡ制御部１１４は、ＲＡＭ１２０におけるディスクリプタＤＳＣ４のアドレスをＤＭＡコントローラ１１１に通知して、データ転送の実行を指示する（ステップＳ４３）。
【００７５】
ＤＭＡコントローラ１１１は、通知されたアドレスに基づいてＲＡＭ１２０にアクセスし、ディスクリプタＤＳＣ４を読み出す（ステップＳ４４）。ＤＭＡコントローラ１１１は、ディスクリプタＤＳＣ４の内容に基づいて、オプション処理が施されたデータＤＴ３をＲＡＭ１２０から読み出し、ディスクリプタＤＳＣ４に記述された転送先アドレスが示すＲＡＭ１２０の領域に書き込む（ステップＳ４５）。ＤＭＡコントローラ１１１が転送完了をＤＭＡ制御部１１４に通知することで、データ転送処理が完了する。
【００７６】
以上の図７、図８に示すように、ＤＭＡコントローラ１５０の再構成が行われている期間では、ＤＭＡコントローラ１１１によってＲＡＭ間のデータ転送が実行される。これにより、例えばホスト装置４１０，４２０からのＩ／Ｏ要求に応じたＩ／Ｏ制御処理など、ＣＭ１００の処理を停止させずに、ＤＭＡコントローラ１５０の回路構成を更新できる。
【００７７】
次に、ディスクリプタのフォーマットについて説明する。
図９は、ディスクリプタのフォーマットの例を示す図である。図９（Ａ）は、外付けＤＭＡコントローラ（ＤＭＡコントローラ１５０）用のフォーマットの例を示し、図９（Ｂ）は、ＣＰＵ１１０の内蔵ＤＭＡコントローラ（ＤＭＡコントローラ１１１）用のフォーマットの例を示す。
【００７８】
図９（Ａ）に示すように、ＤＭＡコントローラ１５０用のディスクリプタには、処理モード、サイズ、転送元アドレス、転送先アドレス、チェックコード、次ディスクリプタアドレスの順に情報が記述される。
【００７９】
処理モードは、どのオプション処理かを示す指示情報である。例えば、処理モードの欄には、エラーチェック用のチェックコードを付加するか、データを圧縮するか、これらのいずれも実行しないかを識別する値が登録される。サイズは、転送対象のデータのサイズを示し、転送元アドレスは、データの転送元のアドレスを示し、転送先アドレスは、データの転送先のアドレスを示す。チェックコードの欄には、処理モードがチェックコードの付加を指示している場合に、転送対象のデータに基づいて算出されたチェックコードが登録される。次ディスクリプタアドレスは、ディスクリプタ記憶部１２１において次に登録されたディスクリプタの位置（例えば先頭アドレス）を示す。
【００８０】
一方、図９（Ｂ）に示すように、ＤＭＡコントローラ１１１用のディスクリプタには、処理モード、リザーブ、サイズ、転送元アドレス、転送先アドレス、次ディスクリプタアドレス、チェックコードの順に情報が登録される。
【００８１】
これらのうち、処理モード、サイズ、転送元アドレス、転送先アドレス、チェックコードの各情報は、ＤＭＡコントローラ１５０用のディスクリプタ内の同名の情報と同じ内容を示す。リザーブは、所定の情報を登録可能な予約領域である。次ディスクリプタアドレスは、ディスクリプタ記憶部１２２において次に登録されたディスクリプタの位置（例えば先頭アドレス）を示す。
【００８２】
以上の図９の例のように、ＤＭＡコントローラ１５０用のディスクリプタのフォーマットと、ＤＭＡコントローラ１１１用のディスクリプタのフォーマットとは異なる。例えば、ＤＭＡコントローラ１５０を供給するベンダと、ＤＭＡコントローラ１１１が内蔵されたＣＰＵ１１０を供給するベンダとは異なる場合がある。このような場合において、使用されるディスクリプタのフォーマットが異なる場合がある。
【００８３】
次に、ＤＭＡ制御部１１４の動作モードについて説明する。
図１０は、ＤＭＡ制御部の動作モードを説明するための図である。図１０（Ａ）は、外付けＤＭＡコントローラ（ＤＭＡコントローラ１５０）が使用される場合を示し、図１０（Ｂ）は、ＣＰＵ１１０の内蔵ＤＭＡコントローラ（ＤＭＡコントローラ１１１）が使用される場合を示す。
【００８４】
ＤＭＡ制御部１１４には、「ディスクリプタモード」「ＤＭＡモード」という２つの動作モードが設定される。
ディスクリプタモードは、ＤＭＡコントローラ１５０用とＤＭＡコントローラ１１１用のどちらのディスクリプタを作成するかを示す動作モードである。ここでは、ディスクリプタモードが「１」の場合、ＤＭＡコントローラ１５０用のディスクリプタを作成し、ディスクリプタモードが「２」の場合、ＤＭＡコントローラ１１１用のディスクリプタを作成するものとする。
【００８５】
ＤＭＡモードは、ＤＭＡコントローラ１５０とＤＭＡコントローラ１１１のどちらに対してデータ転送の実行を指示するかを示す動作モードである。ここでは、ＤＭＡモードが「１」の場合、ＤＭＡコントローラ１５０にデータ転送の実行を指示し、ＤＭＡモードが「２」の場合、ＤＭＡコントローラ１１１にデータ転送の実行を指示するものとする。
【００８６】
なお、ディスクリプタモードの設定値と、ＤＭＡモードの設定値は、例えば、ＲＡＭ１２０に登録される。
図１０（Ａ）に示すように、ＤＭＡコントローラ１５０を使用してデータ転送が行われる場合、ディスクリプタモードは「１」に設定され、ＤＭＡモードも「１」に設定される。ＤＭＡ制御部１１４は、データ転送依頼を受けると、ディスクリプタモードが「１」であることから、ＤＭＡコントローラ１５０用のフォーマットでディスクリプタ（ここでは「ディスクリプタＤＳＣ５」とする）を作成する。そして、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１５０用のディスクリプタ記憶部１２１に、ディスクリプタＤＳＣ５を格納する。また、ＤＭＡ制御部１１４は、ＤＭＡモードが「１」であることから、ＲＡＭ１２０におけるディスクリプタＤＳＣ５のアドレスをＤＭＡコントローラ１５０に通知し、ＤＭＡコントローラ１５０に対してデータ転送の実行を指示する。
【００８７】
一方、図１０（Ｂ）に示すように、ＤＭＡコントローラ１１１を使用してデータ転送が行われる場合、ディスクリプタモードは「２」に設定され、ＤＭＡモードも「２」に設定される。ＤＭＡ制御部１１４は、データ転送依頼を受けると、ディスクリプタモードが「２」であることから、ＤＭＡコントローラ１１１用のフォーマットでディスクリプタ（ここでは「ディスクリプタＤＳＣ６」とする）を作成する。そして、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１１１用のディスクリプタ記憶部１２２に、ディスクリプタＤＳＣ６を格納する。また、ＤＭＡ制御部１１４は、ＤＭＡモードが「２」であることから、ＲＡＭ１２０におけるディスクリプタＤＳＣ６のアドレスをＤＭＡコントローラ１１１に通知し、ＤＭＡコントローラ１１１に対してデータ転送の実行を指示する。
【００８８】
以上の図１０に示したように、ディスクリプタモードとＤＭＡモードの設定により、ＤＭＡコントローラ１５０とＤＭＡコントローラ１１１のどちらを使用してデータ転送を行うかが決定される。したがって、使用するＤＭＡコントローラを切り替える場合には、ディスクリプタモードとＤＭＡモードが変更される。
【００８９】
ところで、ＤＭＡコントローラ１５０の再構成が必要となる契機は、不定期に発生する可能性がある。それは、再構成の目的が、不具合の修正のように緊急性の高いものである場合があるからである。そこで、本実施の形態では、ＤＭＡコントローラ１５０の再構成を、ＣＭ１００で実行されている処理に関係なく、任意のタイミングで実行できるようにする。しかし、再構成を任意のタイミングで実行できるようにするためには、ＣＭ１００で実行されている処理を正しく継続させながら、使用するＤＭＡコントローラを切り替えられるようにすることが求められる。
【００９０】
一方、ここまで説明したように、ＤＭＡコントローラ１５０にデータ転送の実行を指示する場合には、まずディスクリプタが作成されてディスクリプタ記憶部１２１に格納され、その後にＤＭＡコントローラ１５０に対してデータ転送の実行が指示される。このため、ディスクリプタがディスクリプタ記憶部１２１に格納されてから、そのディスクリプタに基づくデータ転送の実行がＤＭＡコントローラ１５０に指示されるまでには、タイムラグがある。
【００９１】
このようなタイムラグの存在により、ＤＭＡコントローラ１５０の再構成が指示されて、ＤＭＡコントローラ１１１を使用してデータ転送を行うように切り替えられたとき、ディスクリプタ記憶部１２１には、ＤＭＡコントローラ１５０に実行が指示されていないディスクリプタが存在する可能性がある。前述のように、ＤＭＡコントローラ１５０用のディスクリプタとＤＭＡコントローラ１１１用のディスクリプタとは、フォーマットが異なる。このため、実行が指示されていない上記のディスクリプタを、切り替え先のＤＭＡコントローラ１１１に参照させてデータ転送を実行させることはできない。したがって、このままではこのディスクリプタに基づくデータ転送の実行が不可能になり、ＣＭ１００の処理を正しく継続できなくなる。すなわち、ＤＭＡコントローラ１５０の再構成の実行が、ＣＭ１００の処理の正確性に悪影響を与えてしまう。
【００９２】
そこで、ＤＭＡ制御部１１４は、実行が指示されていないディスクリプタがディスクリプタ記憶部１２１に残っている場合、そのディスクリプタをＤＭＡコントローラ１１１用のフォーマットに変換する。そして、ＤＭＡ制御部１１４は、変換されたディスクリプタをディスクリプタ記憶部１２２に格納し直し、そのディスクリプタに基づくデータ転送の実行をＤＭＡコントローラ１１１に指示する。これにより、上記のディスクリプタに基づくデータ転送が切り替え先のＤＭＡコントローラ１１１によって確実に実行され、その結果、ＣＭ１００の処理を正確に継続できるようになる。
【００９３】
図１１は、ディスクリプタのフォーマット変換について説明するための図である。図１１の例では、ディスクリプタ記憶部１２１に対してディスクリプタＤＳＣ１１，ＤＳＣ１２，ＤＳＣ１３，ＤＳＣ１４がこの順序で格納されたとする。また、ＤＭＡ制御部１１４からＤＭＡコントローラ１５０に対して、ディスクリプタＤＳＣ１１，ＤＳＣ１２にそれぞれ基づくデータ転送の実行が指示され、このタイミングでＤＭＡコントローラ１５０の再構成が指示されたとする。すなわち、この状態では、ディスクリプタＤＳＣ１１，ＤＳＣ１２は、実行指示済みのディスクリプタであり、ディスクリプタＤＳＣ１３，ＤＳＣ１４は、実行指示が未実施のディスクリプタとなっている。
【００９４】
この場合、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１１１によるデータ転送を開始させる前に、ディスクリプタＤＳＣ１３，ＤＳＣ１４をＤＭＡコントローラ１１１用のフォーマットのディスクリプタＤＳＣ１３ａ，ＤＳＣ１４ａにそれぞれ変換する。ＤＭＡ制御部１１４は、変換により得られたディスクリプタＤＳＣ１３ａ，ＤＳＣ１４ａを、ＤＭＡコントローラ１１１用のディスクリプタ記憶部１２２に格納する。以上の処理が完了すると、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１１１によるデータ転送を開始させる。このとき、ＤＭＡ制御部１１４はまず、実行指示が未実施であるディスクリプタＤＳＣ１３ａ，ＤＳＣ１４ａにそれぞれ基づくデータ転送の実行を、ＤＭＡコントローラ１１１に指示する。
【００９５】
これにより、変換前のディスクリプタＤＳＣ１３，ＤＳＣ１４によって指示された内容のデータ転送を、切り替え先のＤＭＡコントローラ１１１によって確実に実行させることができる。その結果、ＣＭ１００の処理を正確に継続させながら、ＤＭＡコントローラ１５０の再構成を行うことが可能となる。
【００９６】
次に、ＣＭ１００の処理についてシーケンス図およびフローチャートを用いて説明する。
図１２、図１３は、使用するＤＭＡコントローラの切り替え処理を示すシーケンス図の例である。
【００９７】
通常状態では、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１５０にＲＡＭ間のデータ転送を実行させる（ステップＳ１０１）。すなわち、ＤＭＡ制御部１１４は、データ転送が依頼されると、そのデータ転送処理の内容を記述したディスクリプタをディスクリプタ記憶部１２１に格納する。そして、ＤＭＡ制御部１１４は、そのディスクリプタのＲＡＭ１２０上のアドレスをＤＭＡコントローラ１５０に通知して、データ転送の実行を指示する。
【００９８】
この状態から、再構成制御部１１５がＤＭＡコントローラ１５０を再構成するための処理を開始する。再構成制御部１１５は、まず、再構成のための準備処理を開始するようにＤＭＡ制御部１１４に指示し（ステップＳ１１１）、準備処理の完了応答に対する待ち状態となる（ステップＳ１１２）。
【００９９】
ＤＭＡ制御部１１４は、準備処理の開始指示を受けると、まず、ディスクリプタモードを「１」から「２」へ切り替える（ステップＳ１０２）。次に、ＤＭＡ制御部１１４は、仕掛かり中のデータ転送処理があるかを判定する（ステップＳ１０３）。仕掛かり中のデータ転送処理とは、ディスクリプタ記憶部１２１に格納したディスクリプタのうち、ＤＭＡコントローラ１５０へデータ転送を指示済みであるものの、そのデータ転送が完了していないディスクリプタに基づくデータ転送処理である。
【０１００】
仕掛かり中のデータ転送処理がある場合、ＤＭＡ制御部１１４は、その処理の実行が完了するまで待ち状態となる（ステップＳ１０４）。そして、仕掛かり中のデータ転送処理が完了したとき、あるいは仕掛かり中の処理がなかった場合、ＤＭＡ制御部１１４は、ディスクリプタ記憶部１２１に格納したディスクリプタのうち、実行を指示していないディスクリプタがあるかを判定する（ステップＳ１０５）。
【０１０１】
実行を指示していないディスクリプタがある場合、ＤＭＡ制御部１１４は、そのディスクリプタをディスクリプタ記憶部１２１から読み出して、ＤＭＡコントローラ１１１用のフォーマットに変換する。ＤＭＡ制御部１１４は、変換されたディスクリプタを、ＤＭＡコントローラ１１１用のディスクリプタ記憶部１２２に格納する（ステップＳ１０６）。そして、ＤＭＡ制御部１１４は、ＤＭＡモードを「１」から「２」へ切り替える（ステップＳ１０７）。また、ステップＳ１０５で実行を指示していないディスクリプタがなかった場合にも、ＤＭＡ制御部１１４は、ＤＭＡモードを「１」から「２」へ切り替える（ステップＳ１０７）。
【０１０２】
ＤＭＡ制御部１１４は、準備処理の完了応答を再構成制御部１１５に通知する（ステップＳ１０８）。そして、ＤＭＡコントローラ１１１によるデータ転送が開始される（ステップＳ１０９）。このとき、ＤＭＡモードが「２」に設定されている。このため、ステップＳ１０６でディスクリプタがディスクリプタ記憶部１２２に格納された場合、ＤＭＡ制御部１１４はまず、そのディスクリプタのアドレスをＤＭＡコントローラ１１１に通知して、このディスクリプタに基づくデータ転送の実行を指示する。また、ディスクリプタモードおよびＤＭＡモードがともに「２」に設定された状態であるので、ＲＡＭ間のデータ転送が新たに依頼されたとき、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１１１にデータ転送を実行させるようになる。すなわち、ＤＭＡ制御部１１４は、データ転送が依頼されると、そのデータ転送処理の内容を記述したディスクリプタをディスクリプタ記憶部１２２に格納する。そして、ＤＭＡ制御部１１４は、そのディスクリプタのＲＡＭ１２０上のアドレスをＤＭＡコントローラ１１１に通知して、データ転送の実行を指示する。
【０１０３】
なお、ステップＳ１０２では、ＤＭＡ制御部１１４が、ディスクリプタ記憶部１２１に格納済みのディスクリプタに基づくデータ転送の実行をＤＭＡコントローラ１５０に指示する処理は、停止される。ステップＳ１０３，Ｓ１０４の処理により、ＤＭＡコントローラ１５０の再構成が開始されるまでの間、ＤＭＡコントローラ１５０に対して実行指示済みのデータ転送だけが実行される。これにより、データ転送を確実に継続できる。
【０１０４】
一方、ステップＳ１０２でディスクリプタモードが「２」に変更された後、ＤＭＡ制御部１１４は、新たなデータ転送依頼の受け付けを継続してもよい。この場合、ＤＭＡ制御部１１４は、新たに依頼されたデータ転送の内容を示すディスクリプタをＤＭＡコントローラ１１１用のフォーマットで作成し、ディスクリプタ記憶部１２２に格納する。格納されたディスクリプタに基づくデータ転送の実行は、ステップＳ１０９において、ステップＳ１０６で格納されたディスクリプタに基づくデータ転送の次に、ＤＭＡコントローラ１１１に指示される。このような処理により、ＤＭＡコントローラ１５０の再構成が開始されるまでの間にも新たなデータ転送依頼の受け付けが継続されることで、依頼元（例えばＩ／Ｏ制御部１１３）の処理を継続させることができる。
【０１０５】
次に、再構成制御部１１５は、準備処理の完了応答を受け付けると（ステップＳ１１２）、ＤＭＡコントローラ１５０の再構成処理を開始する（ステップＳ１１３）。具体的には、再構成制御部１１５は、ＲＯＭ１６０内のプログラムを新たなプログラムによって更新し、更新後のプログラムをＤＭＡコントローラ１５０に適用する。これによって、ＤＭＡコントローラ１５０の回路構成が更新される。
【０１０６】
再構成制御部１１５は、ＤＭＡコントローラ１５０の再構成が完了するまで待ち状態となる（ステップＳ１２１）。その間、ＤＭＡ制御部１１４は、ＲＡＭ間のデータ転送が依頼されると、ＤＭＡコントローラ１１１にデータ転送を実行させる（ステップＳ１０９）。そして、ＤＭＡコントローラ１５０の再構成が完了すると、再構成制御部１１５は、終了処理を開始するようにＤＭＡ制御部１１４に指示し（ステップＳ１２２）、終了処理の完了応答に対する待ち状態となる（ステップＳ１２３）。
【０１０７】
ＤＭＡ制御部１１４は、準備処理の開始指示を受けると、まず、ディスクリプタモードを「２」から「１」へ切り替える（ステップＳ１３１）。次に、ＤＭＡ制御部１１４は、仕掛かり中のデータ転送処理があるかを判定する（ステップＳ１３２）。仕掛かり中のデータ転送処理とは、ディスクリプタ記憶部１２２に格納したディスクリプタのうち、ＤＭＡコントローラ１１１へデータ転送を指示済みであるものの、そのデータ転送が完了していないディスクリプタに基づくデータ転送処理である。
【０１０８】
仕掛かり中のデータ転送処理がある場合、ＤＭＡ制御部１１４は、その処理の実行が完了するまで待ち状態となる（ステップＳ１３３）。そして、仕掛かり中のデータ転送処理が完了したとき、あるいは仕掛かり中の処理がなかった場合、ＤＭＡ制御部１１４は、ディスクリプタ記憶部１２２に格納したディスクリプタのうち、実行を指示していないディスクリプタがあるかを判定する（ステップＳ１３４）。
【０１０９】
実行を指示していないディスクリプタがある場合、ＤＭＡ制御部１１４は、そのディスクリプタをディスクリプタ記憶部１２２から読み出して、ＤＭＡコントローラ１５０用のフォーマットに変換する。ＤＭＡ制御部１１４は、変換されたディスクリプタを、ＤＭＡコントローラ１５０用のディスクリプタ記憶部１２１に格納する（ステップＳ１３５）。そして、ＤＭＡ制御部１１４は、ＤＭＡモードを「２」から「３」へ切り替える（ステップＳ１３６）。また、ステップＳ１３４で実行を指示していないディスクリプタがなかった場合にも、ＤＭＡ制御部１１４は、ＤＭＡモードを「２」から「１」へ切り替える（ステップＳ１３６）。
【０１１０】
ＤＭＡ制御部１１４は、終了処理の完了応答を再構成制御部１１５に通知する（ステップＳ１３７）。そして、ＤＭＡコントローラ１５０によるデータ転送が開始される（ステップＳ１３８）。このとき、ＤＭＡモードが「１」に設定されている。このため、ステップＳ１３５でディスクリプタがディスクリプタ記憶部１２１に格納された場合、ＤＭＡ制御部１１４はまず、そのディスクリプタのアドレスをＤＭＡコントローラ１５０に通知して、このディスクリプタに基づくデータ転送の実行を指示する。また、ディスクリプタモードおよびＤＭＡモードがともに「１」に設定された状態であるので、ＲＡＭ間のデータ転送が新たに依頼されたとき、ＤＭＡ制御部１１４は、ＤＭＡコントローラ１５０にデータ転送を実行させるようになる。すなわち、ＤＭＡ制御部１１４は、データ転送が依頼されると、そのデータ転送処理の内容を記述したディスクリプタをディスクリプタ記憶部１２１に格納する。そして、ＤＭＡ制御部１１４は、そのディスクリプタのＲＡＭ１２０上のアドレスをＤＭＡコントローラ１５０に通知して、データ転送の実行を指示する。
【０１１１】
再構成制御部１１５は、終了処理の完了応答を受け付けると（ステップＳ１２３）、処理を終了する。
図１４は、内蔵ＤＭＡコントローラを使用する場合のデータ転送制御処理を示すフローチャートの例である。この図１４の処理は、図１２のステップＳ１０９においてＲＡＭ間のデータ転送が依頼されたときのＤＭＡ制御部１１４の処理に対応する。
【０１１２】
［ステップＳ１４１］ＤＭＡ制御部１１４は、オプション処理を実行するように指定されているかを判定する。ＤＭＡ制御部１１４は、オプション処理を実行するように指定されている場合、ステップＳ１４２の処理を実行し、指定されていない場合、ステップＳ１４５の処理を実行する。
【０１１３】
［ステップＳ１４２］ＤＭＡ制御部１１４は、実行が指定されているオプション処理の内容を判定する。ＤＭＡ制御部１１４は、チェックコードの付加が指定されている場合、ステップＳ１４３の処理を実行し、データの圧縮が指定されている場合、ステップＳ１４４の処理を実行する。
【０１１４】
［ステップＳ１４３］ＤＭＡ制御部１１４は、転送対象のデータをＲＡＭ１２０から読み出し、そのデータに基づいてエラーチェック用のチェックコードを算出する。ＤＭＡ制御部１１４は、チェックコードを付加したデータをＲＡＭ１２０に格納し直す。
【０１１５】
［ステップＳ１４４］ＤＭＡ制御部１１４は、転送対象のデータをＲＡＭ１２０から読み出し、そのデータを圧縮する。ＤＭＡ制御部１１４は、圧縮されたデータをＲＡＭ１２０に格納し直す。
【０１１６】
［ステップＳ１４５］ＤＭＡ制御部１１４は、データ転送を指示するためのディスクリプタを作成し、ＤＭＡコントローラ１１１用のディスクリプタ記憶部１２２に格納する。  ［ステップＳ１４６］ＤＭＡ制御部１１４は、ステップＳ１４５で作成したディスクリプタのＲＡＭ１２０におけるアドレスをＤＭＡコントローラ１１１に通知して、このディスクリプタに基づくデータ転送の実行を指示する。
【０１１７】
このように、ＤＭＡコントローラ１５０の再構成が行われている期間では、転送データに対するオプション処理はプログラムに基づくプロセッサコア１１２の処理によって実行される。
【０１１８】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１０、ＣＭ１００，２００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク（Blu-ray Disc：ＢＤ、登録商標）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１２１】
１０  情報処理装置
１１ａ，１１ｂ  転送制御回路
１２  制御回路
１３，２０  記憶装置
１３ａ  記憶領域
Ｉ１〜Ｉ４，Ｉ３ａ，Ｉ４ａ  指示情報
【図１】
2019159437.tif 000003
【図２】
2019159437.tif 000004
【図３】
2019159437.tif 000005
【図４】
2019159437.tif 000006
【図５】
2019159437.tif 000007
【図６】
2019159437.tif 000008
【図７】
2019159437.tif 000009
【図８】
2019159437.tif 000010
【図９】
2019159437.tif 000011
【図１０】
2019159437.tif 000012
【図１１】
2019159437.tif 000013
【図１２】
2019159437.tif 000014
【図１３】
2019159437.tif 000015
【図１４】
2019159437.tif 000016