(57)【要約】      （修正有）【課題】ブロックサイズが固定値でない複数のデータ転送要求が、同一のメモリに対して同時に発生した場合に生じうるデータ転送効率の低下を抑制することができるデータ転送装置、データ転送方法及びコンピュータプログラムを提供する。【解決手段】データ転送装置１００は、同一のメモリ３に対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、転送データの転送先のメモリ領域である転送先領域をデータ転送要求について予測する予測部２１と、データ転送要求について予測された転送先領域に転送データを書き込むコントローラ２４と、を備える。【選択図】図１
2020173511.tif 000002
【特許請求の範囲】
【請求項１】
同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測部と、
前記データ転送要求について予測された前記転送先領域に前記転送データを書き込むコントローラと、
を備えるデータ転送装置。
【請求項２】
前記予測部は、前記転送先領域に書き込まれた前記転送データを退避データとして退避領域に記録し、
前記コントローラは、前記転送データについて確定したブロックサイズである実サイズが前記予測部によって予測された転送先領域のブロックサイズである予測サイズと異なった場合、前記メモリ上のデータ配置を前記退避領域に記録された前記退避データを用いて修正する、
請求項１に記載のデータ転送装置。
【請求項３】
前記コントローラは、第１の転送データの実サイズが予測サイズより大きい場合、前記第１の転送データよりも前に書き込まれ、その転送先領域が前記第１の転送データの転送先領域と重複して一部が欠損した第２の転送データを、前記第１の転送データと重複しない新たな転送先領域に修復する、
請求項２に記載のデータ転送装置。
【請求項４】
前記コントローラは、第１の転送データの実サイズが予測サイズより小さい場合、前記第１の転送データよりも前に書き込まれた第２の転送データを、前記予測サイズと前記実サイズとの差によって生じた空き領域に移動させる、
請求項２又は３に記載のデータ転送装置。
【請求項５】
前記コントローラは、実サイズと予測サイズとが異なった回数である第１の回数が第１の閾値以上である場合、前記第１の回数に応じて前記転送先領域の予測方法を補正する、
請求項２から４のいずれか一項に記載のデータ転送装置。
【請求項６】
前記コントローラは、前記第１の回数のうち前記実サイズが前記予測サイズよりも大きくなった回数である第２の回数が第２の閾値以上である場合、予測サイズが実サイズの平均値より小さく予測されるように前記予測方法を補正する、
請求項５に記載のデータ転送装置。
【請求項７】
前記コントローラは、前記第１の回数のうち前記実サイズが前記予測サイズよりも小さくなった回数である第３の回数が第３の閾値以上である場合、予測サイズが実サイズの平均値より大きく予測されるように前記予測方法を補正する、
請求項５又は６に記載のデータ転送装置。
【請求項８】
前記コントローラは、前記第１の回数のうち前記実サイズが前記予測サイズよりも大きくなった回数である第２の回数が第２の閾値未満であり、かつ、前記第１の回数のうち前記実サイズが前記予測サイズよりも小さくなった回数である第３の回数が第３の閾値未満である場合、予測サイズが実サイズの平均値として予測されるように前記予測方法を補正する、
請求項５から７のいずれか一項に記載のデータ転送装置。
【請求項９】
同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、
前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、
を有するデータ転送方法。
【請求項１０】
同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、
前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、
をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置、データ転送方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
同一のメモリに対するデータの転送要求であって、転送対象のデータ（以下「転送データ」という。）をメモリに転送することを要求するデータ転送要求が、同時にかつ複数発生した場合、転送データのブロックサイズが固定値であれば、データ転送を開始する前の段階で、各転送データの転送先のメモリ領域（以下「転送先領域」という。）を複数のデータ転送要求で重複することのないように決定することができる。この場合、複数のデータ転送要求が発生した場合であっても、予め決定した個々の転送先領域に各転送データを転送することにより、複数のデータ転送要求を並列で処理することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−０９１４９７号公報
【特許文献２】特開２０１５−０６０５８９号公報
【特許文献３】特開２０１１−１９７７８８号公報
【特許文献４】特表２００８−５１６３２０号公報
【特許文献５】特開２００９−０８７１８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、このようなデータ転送方法では、ブロックサイズが固定値でない場合には、転送データのサイズが確定するまでは複数のデータ転送要求を並列で処理することができない。そのため、ブロックサイズが固定値でない複数のデータ転送要求が、同一のメモリに対して同時に発生した場合に、データ転送効率が低下してしまう可能性があった。
【課題を解決するための手段】
【０００５】
そこでこの発明は、上述の課題を解決することができるデータ転送装置、データ転送方法及びコンピュータプログラムを提供することを目的としている。
【０００６】
本発明の一態様は、同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測部と、前記データ転送要求について予測された前記転送先領域に前記転送データを書き込むコントローラと、を備えるデータ転送装置である。
【０００７】
本発明の一態様は、同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、を有するデータ転送方法である。
【０００８】
本発明の一態様は、同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、をコンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【０００９】
本発明によれば、ブロックサイズが固定値でない複数のデータ転送要求が、同一のメモリに対して同時に発生した場合に、データ転送効率が低下することを抑制することができるという効果が得られる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態におけるデータ転送装置の機能構成の具体例を示すブロック図である。
【図２】本実施形態におけるデータ転送装置が複数のマスタのデータ転送要求を並列処理する流れの具体例を示すフローチャートである。
【図３】本実施形態における書き込み領域予測処理の流れの具体例を示すフローチャートである。
【図４】本実施形態におけるリカバリ処理の流れの具体例を示すフローチャートである。
【図５】本実施形態におけるリカバリ処理の動作例を示す図である。
【図６】本実施形態における書き込み領域予測処理の動作例を示す図である。
【図７】本実施形態におけるデータ転送装置の変形例の機能構成の具体例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態によるデータ転送装置、データ転送方法及びコンピュータプログラムを図面を参照して説明する。
【００１２】
図１は、本実施形態におけるデータ転送装置の機能構成の具体例を示すブロック図である。データ転送装置１００は、本実施形態におけるデータ転送装置の一例であり、例えば、１以上のマスタ１と、バスブリッジ２と、ターゲットメモリ３と、補正用メモリ４と、を備える。なお、バスブリッジ２は、データ転送装置１００の内部において各種バスを接続するブリッジとしての機能を有する。例えば、バスブリッジ２は、バスＢ１、Ｂ２及びＢ３を介して１以上のマスタ１、ターゲットメモリ３、及び補正用メモリ４と互いにデータの入出力が可能に接続される。
【００１３】
図１は１以上のマスタ１としてマスタ１−１〜１−Ｎ（Ｎは１以上の整数）を示す。各マスタ１は、ターゲットメモリ３に対してそれぞれ独立してデータの転送要求を行うことができる機能部である。例えば、マスタ１は、オペレーティングシステムによって管理される個々のプロセスであってもよいし、個々の入出力デバイスであってもよい。各マスタ１は、ターゲットメモリ３に対して転送すべきデータが発生した場合、その旨を示す「データ転送要求」をバスブリッジ２に通知する。バスブリッジ２によってデータ転送要求が受け付けられると、各マスタ１は転送対象のデータ（以下「転送データ」という。）をバスブリッジ２に出力する。
【００１４】
バスブリッジ２は、各マスタ１から通知されるデータ転送要求に応じて各マスタ１の転送データをターゲットメモリ３の所定の領域に書き込む機能を有する。この転送データの書き込みにより転送データがターゲットメモリ３に転送される。また、バスブリッジ２は、ターゲットメモリ３に書き込んだ転送データを所定の期間補正用メモリ４に保存する機能を有する。バスブリッジ２は、転送データの書き込みが複数のマスタ１で競合した場合に、補正用メモリ４に保存されている転送データ（以下「退避データ」という。）を用いて、競合により不正となった転送データを復元する。
【００１５】
ターゲットメモリ３は、半導体記憶装置を用いて構成される主記憶装置であって、各マスタ１がデータ転送を要求する対象のメモリである。図１では簡単のためターゲットメモリ３として１つのメモリを示しているが、これは必ずしも予め定められた特定の１つのメモリのみがデータ転送の対象となることを示すものではない。ターゲットメモリ３は、複数のメモリであってもよいし、複数のメモリから適宜選択される１以上のメモリであってもよい。
【００１６】
なお、図１において、ターゲットメモリ３の内部に記載している四角のオブジェクトは各マスタ１の転送データが書き込まれたメモリブロックを模式的に示したものであり、各オブジェクトの内部に記載した数値は、各メモリブロックに記憶されているデータの転送を要求したマスタ１の識別情報を表しており、マスタ１−１〜１−Ｎの符号にそれぞれ対応している。
【００１７】
補正用メモリ４は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。補正用メモリ４は、バスブリッジ２が出力する転送データを退避データとして記憶する記憶部として用いられる。補正用メモリ４は、マスタ１−１〜１−Ｎのそれぞれに退避データの記憶領域（以下「退避領域」という。）を有する。図１は、補正用メモリ４が、それぞれに対応するマスタ１の識別情報（図中のマスタインデックス）で各退避領域を管理する例を示している。
【００１８】
続いて、バスブリッジ２の機能構成について説明する。バスブリッジ２は、書き込み領域予測部２１、アドレス変換部２２、アドレス変換テーブル２３、及びコントローラ２４を備える。書き込み領域予測部２１は、データ転送要求を行った各マスタ１について転送先領域を予測する機能を有する。書き込み領域予測部２１は、各マスタ１について予測した転送先領域についてターゲットメモリ３上のメモリアドレスを指定するパラメータ（以下「アドレス指定パラメータ」という。）を生成し、生成したアドレス指定パラメータの値をアドレス変換部２２に通知する。
【００１９】
アドレス変換部２２は、アドレス指定パラメータの値をターゲットメモリ３上のメモリアドレスに変換する機能を有する。具体的には、アドレス変換部２２は、アドレス指定パラメータの値とメモリアドレスとの対応関係を示すアドレス変換テーブル２３を参照し、書き込み領域予測部２１から通知された値に対応するメモリアドレスを取得することにより、アドレス指定パラメータを転送先領域のメモリアドレス（以下「転送先アドレス」という。）に変換する。アドレス変換部２２は、取得した転送先アドレスをコントローラ２４に通知する。
【００２０】
アドレス変換テーブル２３は、アドレス指定パラメータの値とメモリアドレスとの対応関係を示すデータである。例えば、アドレス変換テーブル２３は、キャッシュメモリ等の高速にアクセス可能な記憶装置に保持され、その内容はターゲットメモリ３の管理機構（図示せず）によって管理される。例えば、アドレス変換テーブル２３は、各マスタ１の仮想メモリアドレスと、ターゲットメモリ３の物理メモリアドレスとの対応関係を示すデータであってもよい。
【００２１】
コントローラ２４は、各マスタ１のデータ転送要求に応じて、転送データをターゲットメモリ３に書き込む機能を有する。具体的には、コントローラ２４は、各データ転送要求についてそれぞれの転送データの転送先アドレスを取得し、取得した転送先アドレスのメモリ領域に転送データを書き込む。また、コントローラ２４は、転送データのサイズが予測領域のサイズと異なった場合にリカバリ処理を実行する機能を有する。
【００２２】
具体的には、このリカバリ処理には、一部の転送データについてターゲットメモリ３への書き込みをやり直す第１処理と、転送先領域の予測精度を向上させるための第２処理とが含まれる。
【００２３】
このような構成を有する本実施形態のデータ転送装置１００では、フロックサイズが固定値でない転送データを同一のターゲットメモリ３の連続するメモリ領域に転送するデータ転送要求が複数のマスタ１によって同時に要求された場合、バスブリッジ２が各要求の転送データの転送先領域を予測し、予測した各転送先領域に対する転送データの書き込みを並列処理することにより、データ転送効率の低下を抑制することが可能となる。
【００２４】
なお、図１では簡単のため、データ転送装置１００が、１以上のマスタ１と、バスブリッジ２と、ターゲットメモリ３と、補正用メモリ４と、を内部バスで接続する一の装置として構成される場合を例示しているが、これに限定されない。例えば、データ転送装置１００は、１以上のマスタ１、バスブリッジ２、ターゲットメモリ３、及び補正用メモリ４を外部バスで接続するシステムとして構成されてもよい。
【００２５】
図２は、本実施形態におけるデータ転送装置１００が複数のマスタ１のデータ転送要求を並列処理する流れの具体例を示すフローチャートである。このフローチャートに示す一連の処理は、同じターゲットメモリ３に対するデータ転送要求であって、転送データをターゲットメモリ３上の連続領域に転送するデータ転送要求が、複数のマスタ１から同時に要求された場合に開始される。
【００２６】
この場合、バスブリッジ２において、データ転送要求を受け付けたコントローラ２４が、まず、書き込み領域予測部２１に対して書き込み領域予測処理の実行を指示する。書き込み領域予測処理は、個々のデータ転送要求について、それぞれの転送データの転送先領域を予測する処理である。書き込み領域予測部２１は、コントローラ２４の指示に応じて書き込み領域予測処理を実行する（ステップＳ１０１）。書き込み領域予測部２１は、書き込み領域予測処理において予測した各転送先領域のアドレス指定パラメータの値をアドレス変換部２２に通知する。
【００２７】
続いて、アドレス変換部２２が、各転送先領域についてターゲットメモリ３上のメモリアドレス（すなわち転送先アドレス）を取得する。具体的には、アドレス変換部２２は、書き込み領域予測部２１から通知されたアドレス指定パラメータの各値を、アドレス変換テーブル２３に基づいて転送先アドレスに変換する。アドレス変換部２２は、各転送先領域について取得した転送先アドレスをコントローラ２４に通知する。コントローラ２４は、アドレス変換部２２から通知された各転送先アドレスのメモリ領域に対して対応する転送データの書き込みを実行する（ステップＳ１０２）。さらに、コントローラ２４は、ターゲットメモリ３に書き込んだ転送データを補正用メモリ４に書き込む（ステップＳ１０３）。
【００２８】
具体的には、各マスタ１は、１つの転送データを所定のブロックサイズに分割し、ブロックサイズごとの一塊の連続データ（以下「ブロックデータ」という。）を順次出力する。この場合、コントローラ２４は、各マスタ１が連続的に出力するブロックデータを順次入力し、ブロックデータごとに転送先領域を識別する。コントローラ２４は、連続データとして出力されるブロックデータの入力を複数のマスタ１について並列的に実行し、入力した各ブロックデータを対応する転送先領域の先頭アドレスから順に書き込んでいく。このとき、コントローラ２４は、各ブロックデータの書き込みを、その入力に応じて、複数のマスタ１について並列的に実行する。
【００２９】
このように転送データを複数のブロックデータに分割して入出力する場合、ブロックサイズが固定値であれば、転送データの書き込みを開始する前に転送先領域のサイズを見積もることが可能である。しかしながら、ブロックサイズが固定値でない場合、転送先領域として必要なメモリサイズは実際にブロックデータの書き込みを行ってみないと分からない。そのため、ステップＳ１０２の時点では、各マスタ１のデータ転送要求に関して各ブロックデータの転送先領域のサイズは不明である。
【００３０】
そこで、コントローラ２４は、ブロックデータの入出力を行いつつ、ブロックデータのサイズが確定したか否かを判定する（ステップＳ１０４）。例えば、コントローラ２４は、データ入力の有無や所定の入力パターンの変化を検出することによってブロックデータのサイズが確定したか否かを判定する。ブロックデータのサイズが確定していない場合（ステップＳ１０４−ＮＯ）、コントローラ２４はステップＳ１０１に処理を戻し、次のブロックデータの入出力を実行する。
【００３１】
一方、ブロックデータのサイズが確定した場合（ステップＳ１０４−ＹＥＳ）、コントローラ２４は当該ブロックデータについてサイズが確定した旨を対応するマスタ１に通知する（ステップＳ１０５）。コントローラ２４は、サイズが確定したブロックデータについて予測した転送先領域のサイズ（以下「予測サイズ」という。）が、確定したブロックデータの実際のサイズ（以下「実サイズ」という。）と一致しているか否かを判定する（ステップＳ１０６）。
【００３２】
予測サイズと実サイズが一致している場合（ステップＳ１０６−ＹＥＳ）、コントローラ２４は、全てのデータ転送が完了したか否かを判定する（ステップＳ１０７）。具体的には、コントローラ２４は、全ての転送データについて全てのブロックデータの転送が完了したか否かを判定する。全てのデータ転送が完了した場合（ステップＳ１０７−ＹＥＳ）、コントローラ２４はデータ転送の完了を書き込み領域予測部２１に通知し（ステップＳ１０８）、処理を終了する。
【００３３】
一方、ステップＳ１０６において、予測サイズが実サイズと一致していない場合（ステップＳ１０６−ＮＯ）、コントローラ２４は、当該ブロックデータについてリカバリ処理を実行する（ステップＳ１０７）。このリカバリ処理の実行により、コントローラ２４は、当該ブロックデータの書き込み処理によって生じたデータ配置の不正を修正する。
【００３４】
また、このとき（ステップＳ１０６−ＮＯ）、コントローラ２４は、予測サイズが実サイズと一致していない書き込みが発生した旨の通知（以下「アラーム」という。）を書き込み領域予測部２１に対して行う。なお、ここで通知されたアラームは書き込み領域予測部２１によって累積アラーム回数に計上されるまでは未カウントアラーム（後述）として保持される。
【００３５】
コントローラ２４は、リカバリ処理の実行後、又はステップＳ１０７において、一部のデータ転送が完了していない場合（ステップＳ１０７−ＮＯ）、ステップＳ１０１に処理を戻し、次のブロックデータの入出力を実行する。
【００３６】
図３は、本実施形態における書き込み領域予測処理の流れの具体例を示すフローチャートである。まず、書き込み領域予測部２１は、転送データのブロックサイズを予測する（ステップＳ２０１）。具体的には、書き込み領域予測部２１は、ステップＳ２０１の初回実行時においてはブロックサイズを予め定められた既定値とし、次回以降の実行時においてはブロックサイズを前回の予測値（予測サイズ）と同じ値とすることにより、ブロックサイズを予測する。例えば、ブロックサイズの既定値は、所定の初期値であってもよいし、複数のマスタ１のうちのいずれかのマスタ１のその時点におけるブロックサイズであってもよいし、１つ目のマスタ１の最初のブロックサイズであってもよい。
【００３７】
続いて、書き込み領域予測部２１は、予測したブロックサイズの転送データ（ブロックデータ）を記録するターゲットメモリ３上の記憶領域（転送先領域）についてアドレス指定パラメータを生成し、生成したアドレス指定パラメータの値をアドレス変換部２２に通知する（ステップＳ２０２）。
【００３８】
続いて、書き込み領域予測部２１は、未カウントアラームが発生しているか否かを判定する（ステップＳ２０３）。ここで、未カウントアラームは、その発生回数が累積アラーム回数に計上されていないアラームのことであり、累積アラーム回数はブロックサイズの予測方法を補正するか否かを決定する際の判定対象となるアラームの累積発生回数である。また、累積アラーム回数は、予測方法を補正することが決定されたことに応じて０回に初期化される。
【００３９】
未カウントアラームが発生している場合（ステップＳ２０３−ＹＥＳ）、書き込み領域予測部２１は、未カウントアラームの発生回数を累積アラーム回数に加算し（ステップＳ２０４）、累積アラーム回数に計上したアラームを未カウントアラームから除外する。一方、未カウントアラームが発生していない場合（ステップＳ２０３−ＮＯ）、書き込み領域予測部２１は後続のステップＳ２０４に処理を進める。
【００４０】
続いて、書き込み領域予測部２１は、累積アラーム回数（第１の回数）が第１の閾値以上であるか否かを判定する（ステップＳ２０５）。例えば第１の閾値は１０回である。累積アラーム回数が第１の閾値未満である場合（ステップＳ２０５−ＮＯ）、書き込み領域予測部２１は書き込み領域予測処理を終了する。
【００４１】
一方、累積アラーム回数が第１の閾値以上である場合（ステップＳ２０５−ＹＥＳ）、書き込み領域予測部２１は累積アラーム回数分のアラームのうち第１のアラームの発生回数（第２の回数）が第２の閾値以上であるか否かを判定する（ステップＳ２０６）。ここで第１のアラームは、ブロックデータの実サイズが予測サイズよりも小さいことを通知するアラームである。以下では、第１のアラームに対して、ブロックデータの予測サイズが実サイズよりも小さいことを通知するアラームを第２のアラームという。
【００４２】
また、第２の閾値は累積アラーム回数の半分より大きく、かつ累積アラーム回数以下の値であればよい。なお、典型的には、累積アラーム回数は第１の閾値以下の値となるため、第２の閾値は第１の閾値の半分より大きく、かつ第１の閾値以下の値であればよい。例えば、第１の閾値を１０回とした場合、第２の閾値を７回とすることができる。なお、この場合、第２の閾値は６〜１０回の範囲の値であればよく、第２の閾値をいずれの値とするかは予測方法の補正頻度や補正の大きさ等に応じて決定されてよい。
【００４３】
第１のアラームの発生回数が第２の閾値以上である場合（ステップＳ２０６−ＹＥＳ）、書き込み領域予測部２１はブロックサイズの予測方法を第１の方法で補正する（ステップＳ２０７）。例えば、第１の方法では、今回の書き込み領域予測処理で予測された予測サイズを次の式（１）に基づいて補正する。
【００４４】
補正後の予測サイズ
＝実サイズの平均値−（予測サイズの平均値−実サイズの平均値）  ・・・（１）
【００４５】
例えば、式（１）における各平均値は、典型的には累積アラーム回数分のアラームが発生した期間における平均値とすればよいが、必要に応じてそれより長い又は短い期間の平均値とされてもよい。
【００４６】
第１の方法による予測サイズの補正は、実サイズ＜予測サイズ、となる傾向が強い場合に行われることになるため、基本的には式（１）の右辺第２項が正の値となり、補正後の予測サイズは実サイズの平均値より小さい値に補正される。このようにして得られた補正後の予測サイズは、次回以降の書き込み領域予測処理における予測サイズとして用いられるため、次回以降の書き込み領域予測処理においてより小さいブロックサイズが予測されることになる。
【００４７】
一方、第１のアラームの発生回数が第２の閾値未満である場合（ステップＳ２０６−ＮＯ）、書き込み領域予測部２１は累積アラーム回数分のアラームのうち第２のアラームの発生回数（第３の回数）が第３の閾値以上であるか否かを判定する（ステップＳ２０８）。
【００４８】
なお、第３の閾値は、第２の閾値と同様に、累積アラーム回数の半分より大きく、かつ累積アラーム回数以下の値であればよい。なお、典型的には、累積アラーム回数は第１の閾値以下の値となるため、第３の閾値は第１の閾値の半分より大きく、かつ第１の閾値以下の値であればよい。例えば、第１の閾値を１０回とした場合、第３の閾値を７回とすることができる。なお、この場合、第３の閾値は６〜１０回の範囲の値であればよく、第３の閾値をいずれの値とするかは予測方法の補正頻度や補正の大きさ等に応じて決定されてよい。第３の閾値は第２の閾値と同じ値であってもよい。
【００４９】
第２のアラームの発生回数が第３の閾値以上である場合（ステップＳ２０８−ＹＥＳ）、書き込み領域予測部２１はブロックサイズの予測方法を第２の方法で補正する（ステップＳ２０９）。例えば、第２の方法では、今回の書き込み領域予測処理で予測された予測サイズを次の式（２）に基づいて補正する。
【００５０】
補正後の予測サイズ
＝実サイズの平均値＋（実サイズの平均値−予測サイズの平均値）  ・・・（２）
【００５１】
例えば、式（２）における各平均値は、式（１）の場合と同様に、典型的には累積アラーム回数分のアラームが発生した期間における平均値とすればよいが、必要に応じてそれより長い又は短い期間の平均値とされてもよい。
【００５２】
第２の方法による予測サイズの補正は、第１の方法の場合とは逆に、予測サイズ＜実サイズ、となる傾向が強い場合に行われることになるため、基本的には式（２）の右辺第２項が正の値となり、補正後の予測サイズは実サイズの平均値より大きい値に補正される。このようにして得られた補正後の予測サイズは、次回以降の書き込み領域予測処理における予測サイズとして用いられるため、次回以降の書き込み領域予測処理においてより大きいブロックサイズが予測されることになる。
【００５３】
一方、第２のアラームの発生回数が第３の閾値未満である場合（ステップＳ２０８−ＮＯ）、書き込み領域予測部２１はブロックサイズの予測方法を第３の方法で補正する（ステップＳ２１０）。例えば、第３の方法では、今回の書き込み領域予測処理で予測された予測サイズを次の式（３）に基づいて補正する。
【００５４】
補正後の予測サイズ
＝実サイズの平均値  ・・・（３）
【００５５】
例えば、式（３）における各平均値は、式（１）及び（２）の場合と同様に、典型的には累積アラーム回数分のアラームが発生した期間における平均値とすればよいが、必要に応じてそれより長い又は短い期間の平均値とされてもよい。
【００５６】
第３の方法による予測サイズの補正は、第１の方法及び第２の方法のいずれの場合にも該当しない場合、すなわち、予測サイズ＜実サイズとなる傾向と、実サイズ＜予測サイズとなる傾向とが同じくらいである場合に行われることになる。この場合、式（３）により補正後の予測サイズは実サイズの平均値に補正される。このようにして得られた補正後の予測サイズは、次回以降の書き込み領域予測処理における予測サイズとして用いられるため、次回以降の書き込み領域予測処理において、実サイズに近いより適切な大きさのブロックサイズが予測されることになる。
【００５７】
ステップＳ２０７、Ｓ２０９及びＳ２１０のいずれかにおいて予測方法の補正を行った場合、書き込み領域予測部２１は累積アラーム回数を０回に初期化し（ステップＳ２１１）て書き込み領域予測処理を終了する。
【００５８】
図４は、本実施形態におけるリカバリ処理の流れの具体例を示すフローチャートである。まず、コントローラ２４は、データ転送処理を一時停止する（ステップＳ３０１）。例えば、コントローラ２４は新たなデータ転送要求の受け付けを一時停止することでデータ転送処理の一時停止を実現してもよい。この場合、例えば、コントローラ２４は、一時停止中に新たなデータ転送を要求してきたマスタ１に対して受け付け不可のエラーを応答してもよい。また、例えば、コントローラ２４は、データ転送要求の受け付けを一時停止することを一時停止期間の開始時に各マスタ１に通知するように構成されてもよい。
【００５９】
また、バスブリッジ２が、一時停止中に発生したデータ転送要求について転送データを一時保存しておくことができる記憶部を備えている場合、コントローラ２４は、データ転送処理を一時停止している間に発生した転送データを記憶部に蓄積しておき、データ転送処理の再開時には、記憶部に蓄積されている転送データから順にデータ転送処理を行うように構成されてもよい。
【００６０】
続いて、コントローラ２４は、実サイズが予測サイズと異なるデータブロックが書き込まれたことによって生じたターゲットメモリ３上のデータ配置の不正を補正用メモリ４に記憶されているデータを用いて修正する（ステップＳ３０２）。コントローラ２４はデータ配置の修正が完了すると、データ転送処理の一時停止を解除する（ステップＳ３０３）。
【００６１】
図５は、本実施形態におけるリカバリ処理の動作例を示す図である。図５（Ａ）は、リカバリ処理が実行される前のある時点におけるブロックデータの配置例を示している。図５において実線のブロックはターゲットメモリ３に実際に書き込まれたブロックデータを表している。また、破線のブロックはターゲットメモリ３に確保された各ブロックデータの転送先領域を表しており、その時点でブロックデータが書き込まれていない領域を表している。
【００６２】
例えば、図５（Ａ）は、マスタ＃１によってブロック１ａ、１ｂ、１ｃにブロックデータが書き込まれた後、マスタ＃２の転送先領域であるブロック２ａ、２ｂ、２ｃがマスタ１のブロックサイズに応じて確保された状況を表している。以下、ターゲットメモリ３において転送先領域となるブロックをターゲットブロックという。
【００６３】
図５（Ｂ）は、図５（Ａ）の状態のターゲットメモリ３において、ブロック２ａに実サイズが予測サイズよりも小さいブロックデータ２ａ’が書き込まれた状況を表しており、ドットでハッチングされた領域Ｓ１は、データの書き込みが行われなかった空き領域を表している。このような空き領域Ｓ１は、記憶領域の使用効率を低下させる要因となる。そのため、ブロックデータの書き込み時にこのような領域が発生した場合、すなわち実サイズが予測サイズよりも小さい場合、コントローラ２４は書き込み済みの後続のブロックデータを空き領域に再配置する。
【００６４】
ここで、ターゲットメモリ３に書き込まれたブロックデータは、各マスタ１ごとに補正用メモリ４に保存されている。例えば、図５（Ｂ）の右図は、マスタ＃１のデータ転送要求によりターゲットメモリ３のブロック１ａ、１ｂ、１ｃに既に書き込まれたブロックデータが、マスタ＃１用の補正用メモリ４のブロック１ａ、１ｂ、１ｃにそれぞれ保存されている状況を示している。以下、補正用メモリ４に確保されるブロックデータ保存用のデータブロックを保存ブロックという。
【００６５】
例えば、この場合、コントローラ２４は、保存ブロック１ｂに保存されているブロックデータを空き領域Ｓ１に転送することにより、図５（Ｃ）のようにブロックデータを再配置する。この結果、空き領域に続くブロックデータが空き領域に移動され、ターゲットメモリ３に確保されているターゲットブロック２ｂが空き領域Ｓ１のサイズ分（すなわち予測サイズと実サイズとの差分）だけ大きくしたブロック２ｂ’として再編成される。このようなデータの再配置を行うことにより、実施形態のバスブリッジ２は、ブロックデータの書き込み時に発生した空き領域を統合し、記憶領域の使用効率の低下を抑制することができる。
【００６６】
続いて、図５（Ｄ）は、図５（Ｃ）において確保されているターゲットブロック２ｂ’に、実サイズが予測サイズよりも大きいブロックデータ２ｂ”が書き込まれた状況を示している。図５（Ｄ）において斜線でハッチングされた領域Ｓ２は、既に書き込み済みであったデータブロック１ｃの一部が、ターゲットブロック２ｂの書き込みによって上書きされた（すなわち欠損した）重複領域を表している。ここで、ブロックデータ１ｃは、ブロックデータ２ｂ”の書き込みによって不正なデータになってしまっているため、正しいデータに修復される必要がある。
【００６７】
例えば、この場合、コントローラ２４は、図５（Ｅ）に示すように、保存ブロック１ｃに保存されているブロックデータをターゲットブロック２ｂ”に続く連続領域に転送することにより、図５（Ｆ）のようにブロックデータを再配置する。この結果、ターゲットメモリ３に確保されているターゲットブロック２ｃが重複領域Ｓ２のサイズ分だけ小さくなったブロック２ｃ’として再編成される。このようなデータの再配置を行うことにより、実施形態のバスブリッジ２は、実サイズが予測サイズより大きいブロックデータによって上書かれたブロックデータを他の領域に修復することができる。
【００６８】
このような空き領域の回収と、上書きされたデータの修復と、を行うことにより、実施形態のバスブリッジ２は、ブロックサイズが不明なデータ転送要求が発生した場合であっても、データサイズの確定を待たずにデータ転送処理を開始することができる。
【００６９】
図６は、本実施形態における書き込み領域予測処理の動作例を示す図である。具体的には、図６は転送先領域の予測方法を補正する動作の具体例を示す。図６（Ａ）は、書き込み領域予測処理の実行中に、累積アラーム回数が１０回に到達したあるタイミングにおけるターゲットメモリ３のデータの配置例を示している。このタイミングにおいて、例えば第１のアラームが８回発生し、第２のアラームが２回発生しているとき、かつ第１の閾位置が７回であれば、書き込み領域予測部２１は第１の方法で転送先領域の予測方法を補正する。
【００７０】
このように、アラームの発生頻度に応じて転送先領域の予測方法が補正されることにより、実施形態のバスブリッジ２は、転送先領域の予測精度を向上させることが可能となる。また、転送先領域の予測精度が向上することにより、リカバリ処理の発生が抑制され、より安定したデータ転送処理を実現することが可能となる。
【００７１】
（変形例）
本実施形態におけるデータ転送装置の一部又は全部はソフトウェアで実現されてもよい。例えば、データ転送装置は、バスで接続されたＣＰＵ（Central Processing Unit）やメモリや補助記憶装置などを備え、プログラムを実行する。データ転送装置は、プログラムの実行によってバスブリッジを備える装置として機能する。なお、データ転送装置の各機能の全て又は一部は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。プログラムは、電気通信回線を介して送信されてもよい。
【００７２】
図７は、本実施形態におけるデータ転送装置の変形例の機能構成の具体例を示すブロック図である。変形例のデータ転送装置１００ａは、例えば、１以上のマスタ１、ターゲットメモリ３、及び補正用メモリ４と接続されたバスブリッジ２ａとして構成されてもよい。また、この場合、バスブリッジ２ａは、書き込み領域予測部２１及びコントローラ２４を備える装置として構成されてもよい。また、この場合、書き込み領域予測部２１は、アドレス変換部２２及びアドレス変換テーブル２３を含むように構成されてもよいし、アドレス変換部２２及びアドレス変換テーブル２３は、バスブリッジ２ａに対して情報を入出力する外部装置として構成されてもよい。
【産業上の利用可能性】
【００７３】
メモリへのデータ転送要求を処理する装置であって、転送データのブロックサイズが固定値でないデータ転送要求を処理するデータ転送装置に適用可能である。
【符号の説明】
【００７４】
１００…データ転送装置、１，１−１〜１−Ｎ…マスタ、２…バスブリッジ、２１…書き込み領域予測部、２２…アドレス変換部、２３…アドレス変換テーブル、２４…コントローラ、３…ターゲットメモリ、４…補正用メモリ、Ｂ１〜Ｂ３…バス
【図１】
2020173511.tif 000003
【図２】
2020173511.tif 000004
【図３】
2020173511.tif 000005
【図４】
2020173511.tif 000006
【図５】
2020173511.tif 000007
【図６】
2020173511.tif 000008
【図７】
2020173511.tif 000009