JP2020173511A - データ転送装置、データ転送方法及びコンピュータプログラム - Google Patents
データ転送装置、データ転送方法及びコンピュータプログラム Download PDFInfo
- Publication number
- JP2020173511A JP2020173511A JP2019073681A JP2019073681A JP2020173511A JP 2020173511 A JP2020173511 A JP 2020173511A JP 2019073681 A JP2019073681 A JP 2019073681A JP 2019073681 A JP2019073681 A JP 2019073681A JP 2020173511 A JP2020173511 A JP 2020173511A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transfer
- size
- predicted
- data transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 255
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000004590 computer program Methods 0.000 title claims abstract description 7
- 230000015654 memory Effects 0.000 claims abstract description 99
- 230000006866 deterioration Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 38
- 238000012937 correction Methods 0.000 description 29
- 230000001186 cumulative effect Effects 0.000 description 23
- 238000013519 translation Methods 0.000 description 15
- 238000011084 recovery Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 4
- 239000000725 suspension Substances 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 244000144992 flock Species 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
Images
Landscapes
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
【課題】ブロックサイズが固定値でない複数のデータ転送要求が、同一のメモリに対して同時に発生した場合に生じうるデータ転送効率の低下を抑制することができるデータ転送装置、データ転送方法及びコンピュータプログラムを提供する。【解決手段】データ転送装置100は、同一のメモリ3に対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、転送データの転送先のメモリ領域である転送先領域をデータ転送要求について予測する予測部21と、データ転送要求について予測された転送先領域に転送データを書き込むコントローラ24と、を備える。【選択図】図1
Description
本発明は、データ転送装置、データ転送方法及びコンピュータプログラムに関する。
同一のメモリに対するデータの転送要求であって、転送対象のデータ(以下「転送データ」という。)をメモリに転送することを要求するデータ転送要求が、同時にかつ複数発生した場合、転送データのブロックサイズが固定値であれば、データ転送を開始する前の段階で、各転送データの転送先のメモリ領域(以下「転送先領域」という。)を複数のデータ転送要求で重複することのないように決定することができる。この場合、複数のデータ転送要求が発生した場合であっても、予め決定した個々の転送先領域に各転送データを転送することにより、複数のデータ転送要求を並列で処理することができる。
しかしながら、このようなデータ転送方法では、ブロックサイズが固定値でない場合には、転送データのサイズが確定するまでは複数のデータ転送要求を並列で処理することができない。そのため、ブロックサイズが固定値でない複数のデータ転送要求が、同一のメモリに対して同時に発生した場合に、データ転送効率が低下してしまう可能性があった。
そこでこの発明は、上述の課題を解決することができるデータ転送装置、データ転送方法及びコンピュータプログラムを提供することを目的としている。
本発明の一態様は、同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測部と、前記データ転送要求について予測された前記転送先領域に前記転送データを書き込むコントローラと、を備えるデータ転送装置である。
本発明の一態様は、同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、を有するデータ転送方法である。
本発明の一態様は、同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、をコンピュータに実行させるためのコンピュータプログラムである。
本発明によれば、ブロックサイズが固定値でない複数のデータ転送要求が、同一のメモリに対して同時に発生した場合に、データ転送効率が低下することを抑制することができるという効果が得られる。
以下、本発明の一実施形態によるデータ転送装置、データ転送方法及びコンピュータプログラムを図面を参照して説明する。
図1は、本実施形態におけるデータ転送装置の機能構成の具体例を示すブロック図である。データ転送装置100は、本実施形態におけるデータ転送装置の一例であり、例えば、1以上のマスタ1と、バスブリッジ2と、ターゲットメモリ3と、補正用メモリ4と、を備える。なお、バスブリッジ2は、データ転送装置100の内部において各種バスを接続するブリッジとしての機能を有する。例えば、バスブリッジ2は、バスB1、B2及びB3を介して1以上のマスタ1、ターゲットメモリ3、及び補正用メモリ4と互いにデータの入出力が可能に接続される。
図1は1以上のマスタ1としてマスタ1−1〜1−N(Nは1以上の整数)を示す。各マスタ1は、ターゲットメモリ3に対してそれぞれ独立してデータの転送要求を行うことができる機能部である。例えば、マスタ1は、オペレーティングシステムによって管理される個々のプロセスであってもよいし、個々の入出力デバイスであってもよい。各マスタ1は、ターゲットメモリ3に対して転送すべきデータが発生した場合、その旨を示す「データ転送要求」をバスブリッジ2に通知する。バスブリッジ2によってデータ転送要求が受け付けられると、各マスタ1は転送対象のデータ(以下「転送データ」という。)をバスブリッジ2に出力する。
バスブリッジ2は、各マスタ1から通知されるデータ転送要求に応じて各マスタ1の転送データをターゲットメモリ3の所定の領域に書き込む機能を有する。この転送データの書き込みにより転送データがターゲットメモリ3に転送される。また、バスブリッジ2は、ターゲットメモリ3に書き込んだ転送データを所定の期間補正用メモリ4に保存する機能を有する。バスブリッジ2は、転送データの書き込みが複数のマスタ1で競合した場合に、補正用メモリ4に保存されている転送データ(以下「退避データ」という。)を用いて、競合により不正となった転送データを復元する。
ターゲットメモリ3は、半導体記憶装置を用いて構成される主記憶装置であって、各マスタ1がデータ転送を要求する対象のメモリである。図1では簡単のためターゲットメモリ3として1つのメモリを示しているが、これは必ずしも予め定められた特定の1つのメモリのみがデータ転送の対象となることを示すものではない。ターゲットメモリ3は、複数のメモリであってもよいし、複数のメモリから適宜選択される1以上のメモリであってもよい。
なお、図1において、ターゲットメモリ3の内部に記載している四角のオブジェクトは各マスタ1の転送データが書き込まれたメモリブロックを模式的に示したものであり、各オブジェクトの内部に記載した数値は、各メモリブロックに記憶されているデータの転送を要求したマスタ1の識別情報を表しており、マスタ1−1〜1−Nの符号にそれぞれ対応している。
補正用メモリ4は、磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。補正用メモリ4は、バスブリッジ2が出力する転送データを退避データとして記憶する記憶部として用いられる。補正用メモリ4は、マスタ1−1〜1−Nのそれぞれに退避データの記憶領域(以下「退避領域」という。)を有する。図1は、補正用メモリ4が、それぞれに対応するマスタ1の識別情報(図中のマスタインデックス)で各退避領域を管理する例を示している。
続いて、バスブリッジ2の機能構成について説明する。バスブリッジ2は、書き込み領域予測部21、アドレス変換部22、アドレス変換テーブル23、及びコントローラ24を備える。書き込み領域予測部21は、データ転送要求を行った各マスタ1について転送先領域を予測する機能を有する。書き込み領域予測部21は、各マスタ1について予測した転送先領域についてターゲットメモリ3上のメモリアドレスを指定するパラメータ(以下「アドレス指定パラメータ」という。)を生成し、生成したアドレス指定パラメータの値をアドレス変換部22に通知する。
アドレス変換部22は、アドレス指定パラメータの値をターゲットメモリ3上のメモリアドレスに変換する機能を有する。具体的には、アドレス変換部22は、アドレス指定パラメータの値とメモリアドレスとの対応関係を示すアドレス変換テーブル23を参照し、書き込み領域予測部21から通知された値に対応するメモリアドレスを取得することにより、アドレス指定パラメータを転送先領域のメモリアドレス(以下「転送先アドレス」という。)に変換する。アドレス変換部22は、取得した転送先アドレスをコントローラ24に通知する。
アドレス変換テーブル23は、アドレス指定パラメータの値とメモリアドレスとの対応関係を示すデータである。例えば、アドレス変換テーブル23は、キャッシュメモリ等の高速にアクセス可能な記憶装置に保持され、その内容はターゲットメモリ3の管理機構(図示せず)によって管理される。例えば、アドレス変換テーブル23は、各マスタ1の仮想メモリアドレスと、ターゲットメモリ3の物理メモリアドレスとの対応関係を示すデータであってもよい。
コントローラ24は、各マスタ1のデータ転送要求に応じて、転送データをターゲットメモリ3に書き込む機能を有する。具体的には、コントローラ24は、各データ転送要求についてそれぞれの転送データの転送先アドレスを取得し、取得した転送先アドレスのメモリ領域に転送データを書き込む。また、コントローラ24は、転送データのサイズが予測領域のサイズと異なった場合にリカバリ処理を実行する機能を有する。
具体的には、このリカバリ処理には、一部の転送データについてターゲットメモリ3への書き込みをやり直す第1処理と、転送先領域の予測精度を向上させるための第2処理とが含まれる。
このような構成を有する本実施形態のデータ転送装置100では、フロックサイズが固定値でない転送データを同一のターゲットメモリ3の連続するメモリ領域に転送するデータ転送要求が複数のマスタ1によって同時に要求された場合、バスブリッジ2が各要求の転送データの転送先領域を予測し、予測した各転送先領域に対する転送データの書き込みを並列処理することにより、データ転送効率の低下を抑制することが可能となる。
なお、図1では簡単のため、データ転送装置100が、1以上のマスタ1と、バスブリッジ2と、ターゲットメモリ3と、補正用メモリ4と、を内部バスで接続する一の装置として構成される場合を例示しているが、これに限定されない。例えば、データ転送装置100は、1以上のマスタ1、バスブリッジ2、ターゲットメモリ3、及び補正用メモリ4を外部バスで接続するシステムとして構成されてもよい。
図2は、本実施形態におけるデータ転送装置100が複数のマスタ1のデータ転送要求を並列処理する流れの具体例を示すフローチャートである。このフローチャートに示す一連の処理は、同じターゲットメモリ3に対するデータ転送要求であって、転送データをターゲットメモリ3上の連続領域に転送するデータ転送要求が、複数のマスタ1から同時に要求された場合に開始される。
この場合、バスブリッジ2において、データ転送要求を受け付けたコントローラ24が、まず、書き込み領域予測部21に対して書き込み領域予測処理の実行を指示する。書き込み領域予測処理は、個々のデータ転送要求について、それぞれの転送データの転送先領域を予測する処理である。書き込み領域予測部21は、コントローラ24の指示に応じて書き込み領域予測処理を実行する(ステップS101)。書き込み領域予測部21は、書き込み領域予測処理において予測した各転送先領域のアドレス指定パラメータの値をアドレス変換部22に通知する。
続いて、アドレス変換部22が、各転送先領域についてターゲットメモリ3上のメモリアドレス(すなわち転送先アドレス)を取得する。具体的には、アドレス変換部22は、書き込み領域予測部21から通知されたアドレス指定パラメータの各値を、アドレス変換テーブル23に基づいて転送先アドレスに変換する。アドレス変換部22は、各転送先領域について取得した転送先アドレスをコントローラ24に通知する。コントローラ24は、アドレス変換部22から通知された各転送先アドレスのメモリ領域に対して対応する転送データの書き込みを実行する(ステップS102)。さらに、コントローラ24は、ターゲットメモリ3に書き込んだ転送データを補正用メモリ4に書き込む(ステップS103)。
具体的には、各マスタ1は、1つの転送データを所定のブロックサイズに分割し、ブロックサイズごとの一塊の連続データ(以下「ブロックデータ」という。)を順次出力する。この場合、コントローラ24は、各マスタ1が連続的に出力するブロックデータを順次入力し、ブロックデータごとに転送先領域を識別する。コントローラ24は、連続データとして出力されるブロックデータの入力を複数のマスタ1について並列的に実行し、入力した各ブロックデータを対応する転送先領域の先頭アドレスから順に書き込んでいく。このとき、コントローラ24は、各ブロックデータの書き込みを、その入力に応じて、複数のマスタ1について並列的に実行する。
このように転送データを複数のブロックデータに分割して入出力する場合、ブロックサイズが固定値であれば、転送データの書き込みを開始する前に転送先領域のサイズを見積もることが可能である。しかしながら、ブロックサイズが固定値でない場合、転送先領域として必要なメモリサイズは実際にブロックデータの書き込みを行ってみないと分からない。そのため、ステップS102の時点では、各マスタ1のデータ転送要求に関して各ブロックデータの転送先領域のサイズは不明である。
そこで、コントローラ24は、ブロックデータの入出力を行いつつ、ブロックデータのサイズが確定したか否かを判定する(ステップS104)。例えば、コントローラ24は、データ入力の有無や所定の入力パターンの変化を検出することによってブロックデータのサイズが確定したか否かを判定する。ブロックデータのサイズが確定していない場合(ステップS104−NO)、コントローラ24はステップS101に処理を戻し、次のブロックデータの入出力を実行する。
一方、ブロックデータのサイズが確定した場合(ステップS104−YES)、コントローラ24は当該ブロックデータについてサイズが確定した旨を対応するマスタ1に通知する(ステップS105)。コントローラ24は、サイズが確定したブロックデータについて予測した転送先領域のサイズ(以下「予測サイズ」という。)が、確定したブロックデータの実際のサイズ(以下「実サイズ」という。)と一致しているか否かを判定する(ステップS106)。
予測サイズと実サイズが一致している場合(ステップS106−YES)、コントローラ24は、全てのデータ転送が完了したか否かを判定する(ステップS107)。具体的には、コントローラ24は、全ての転送データについて全てのブロックデータの転送が完了したか否かを判定する。全てのデータ転送が完了した場合(ステップS107−YES)、コントローラ24はデータ転送の完了を書き込み領域予測部21に通知し(ステップS108)、処理を終了する。
一方、ステップS106において、予測サイズが実サイズと一致していない場合(ステップS106−NO)、コントローラ24は、当該ブロックデータについてリカバリ処理を実行する(ステップS107)。このリカバリ処理の実行により、コントローラ24は、当該ブロックデータの書き込み処理によって生じたデータ配置の不正を修正する。
また、このとき(ステップS106−NO)、コントローラ24は、予測サイズが実サイズと一致していない書き込みが発生した旨の通知(以下「アラーム」という。)を書き込み領域予測部21に対して行う。なお、ここで通知されたアラームは書き込み領域予測部21によって累積アラーム回数に計上されるまでは未カウントアラーム(後述)として保持される。
コントローラ24は、リカバリ処理の実行後、又はステップS107において、一部のデータ転送が完了していない場合(ステップS107−NO)、ステップS101に処理を戻し、次のブロックデータの入出力を実行する。
図3は、本実施形態における書き込み領域予測処理の流れの具体例を示すフローチャートである。まず、書き込み領域予測部21は、転送データのブロックサイズを予測する(ステップS201)。具体的には、書き込み領域予測部21は、ステップS201の初回実行時においてはブロックサイズを予め定められた既定値とし、次回以降の実行時においてはブロックサイズを前回の予測値(予測サイズ)と同じ値とすることにより、ブロックサイズを予測する。例えば、ブロックサイズの既定値は、所定の初期値であってもよいし、複数のマスタ1のうちのいずれかのマスタ1のその時点におけるブロックサイズであってもよいし、1つ目のマスタ1の最初のブロックサイズであってもよい。
続いて、書き込み領域予測部21は、予測したブロックサイズの転送データ(ブロックデータ)を記録するターゲットメモリ3上の記憶領域(転送先領域)についてアドレス指定パラメータを生成し、生成したアドレス指定パラメータの値をアドレス変換部22に通知する(ステップS202)。
続いて、書き込み領域予測部21は、未カウントアラームが発生しているか否かを判定する(ステップS203)。ここで、未カウントアラームは、その発生回数が累積アラーム回数に計上されていないアラームのことであり、累積アラーム回数はブロックサイズの予測方法を補正するか否かを決定する際の判定対象となるアラームの累積発生回数である。また、累積アラーム回数は、予測方法を補正することが決定されたことに応じて0回に初期化される。
未カウントアラームが発生している場合(ステップS203−YES)、書き込み領域予測部21は、未カウントアラームの発生回数を累積アラーム回数に加算し(ステップS204)、累積アラーム回数に計上したアラームを未カウントアラームから除外する。一方、未カウントアラームが発生していない場合(ステップS203−NO)、書き込み領域予測部21は後続のステップS204に処理を進める。
続いて、書き込み領域予測部21は、累積アラーム回数(第1の回数)が第1の閾値以上であるか否かを判定する(ステップS205)。例えば第1の閾値は10回である。累積アラーム回数が第1の閾値未満である場合(ステップS205−NO)、書き込み領域予測部21は書き込み領域予測処理を終了する。
一方、累積アラーム回数が第1の閾値以上である場合(ステップS205−YES)、書き込み領域予測部21は累積アラーム回数分のアラームのうち第1のアラームの発生回数(第2の回数)が第2の閾値以上であるか否かを判定する(ステップS206)。ここで第1のアラームは、ブロックデータの実サイズが予測サイズよりも小さいことを通知するアラームである。以下では、第1のアラームに対して、ブロックデータの予測サイズが実サイズよりも小さいことを通知するアラームを第2のアラームという。
また、第2の閾値は累積アラーム回数の半分より大きく、かつ累積アラーム回数以下の値であればよい。なお、典型的には、累積アラーム回数は第1の閾値以下の値となるため、第2の閾値は第1の閾値の半分より大きく、かつ第1の閾値以下の値であればよい。例えば、第1の閾値を10回とした場合、第2の閾値を7回とすることができる。なお、この場合、第2の閾値は6〜10回の範囲の値であればよく、第2の閾値をいずれの値とするかは予測方法の補正頻度や補正の大きさ等に応じて決定されてよい。
第1のアラームの発生回数が第2の閾値以上である場合(ステップS206−YES)、書き込み領域予測部21はブロックサイズの予測方法を第1の方法で補正する(ステップS207)。例えば、第1の方法では、今回の書き込み領域予測処理で予測された予測サイズを次の式(1)に基づいて補正する。
補正後の予測サイズ
=実サイズの平均値−(予測サイズの平均値−実サイズの平均値) ・・・(1)
=実サイズの平均値−(予測サイズの平均値−実サイズの平均値) ・・・(1)
例えば、式(1)における各平均値は、典型的には累積アラーム回数分のアラームが発生した期間における平均値とすればよいが、必要に応じてそれより長い又は短い期間の平均値とされてもよい。
第1の方法による予測サイズの補正は、実サイズ<予測サイズ、となる傾向が強い場合に行われることになるため、基本的には式(1)の右辺第2項が正の値となり、補正後の予測サイズは実サイズの平均値より小さい値に補正される。このようにして得られた補正後の予測サイズは、次回以降の書き込み領域予測処理における予測サイズとして用いられるため、次回以降の書き込み領域予測処理においてより小さいブロックサイズが予測されることになる。
一方、第1のアラームの発生回数が第2の閾値未満である場合(ステップS206−NO)、書き込み領域予測部21は累積アラーム回数分のアラームのうち第2のアラームの発生回数(第3の回数)が第3の閾値以上であるか否かを判定する(ステップS208)。
なお、第3の閾値は、第2の閾値と同様に、累積アラーム回数の半分より大きく、かつ累積アラーム回数以下の値であればよい。なお、典型的には、累積アラーム回数は第1の閾値以下の値となるため、第3の閾値は第1の閾値の半分より大きく、かつ第1の閾値以下の値であればよい。例えば、第1の閾値を10回とした場合、第3の閾値を7回とすることができる。なお、この場合、第3の閾値は6〜10回の範囲の値であればよく、第3の閾値をいずれの値とするかは予測方法の補正頻度や補正の大きさ等に応じて決定されてよい。第3の閾値は第2の閾値と同じ値であってもよい。
第2のアラームの発生回数が第3の閾値以上である場合(ステップS208−YES)、書き込み領域予測部21はブロックサイズの予測方法を第2の方法で補正する(ステップS209)。例えば、第2の方法では、今回の書き込み領域予測処理で予測された予測サイズを次の式(2)に基づいて補正する。
補正後の予測サイズ
=実サイズの平均値+(実サイズの平均値−予測サイズの平均値) ・・・(2)
=実サイズの平均値+(実サイズの平均値−予測サイズの平均値) ・・・(2)
例えば、式(2)における各平均値は、式(1)の場合と同様に、典型的には累積アラーム回数分のアラームが発生した期間における平均値とすればよいが、必要に応じてそれより長い又は短い期間の平均値とされてもよい。
第2の方法による予測サイズの補正は、第1の方法の場合とは逆に、予測サイズ<実サイズ、となる傾向が強い場合に行われることになるため、基本的には式(2)の右辺第2項が正の値となり、補正後の予測サイズは実サイズの平均値より大きい値に補正される。このようにして得られた補正後の予測サイズは、次回以降の書き込み領域予測処理における予測サイズとして用いられるため、次回以降の書き込み領域予測処理においてより大きいブロックサイズが予測されることになる。
一方、第2のアラームの発生回数が第3の閾値未満である場合(ステップS208−NO)、書き込み領域予測部21はブロックサイズの予測方法を第3の方法で補正する(ステップS210)。例えば、第3の方法では、今回の書き込み領域予測処理で予測された予測サイズを次の式(3)に基づいて補正する。
補正後の予測サイズ
=実サイズの平均値 ・・・(3)
=実サイズの平均値 ・・・(3)
例えば、式(3)における各平均値は、式(1)及び(2)の場合と同様に、典型的には累積アラーム回数分のアラームが発生した期間における平均値とすればよいが、必要に応じてそれより長い又は短い期間の平均値とされてもよい。
第3の方法による予測サイズの補正は、第1の方法及び第2の方法のいずれの場合にも該当しない場合、すなわち、予測サイズ<実サイズとなる傾向と、実サイズ<予測サイズとなる傾向とが同じくらいである場合に行われることになる。この場合、式(3)により補正後の予測サイズは実サイズの平均値に補正される。このようにして得られた補正後の予測サイズは、次回以降の書き込み領域予測処理における予測サイズとして用いられるため、次回以降の書き込み領域予測処理において、実サイズに近いより適切な大きさのブロックサイズが予測されることになる。
ステップS207、S209及びS210のいずれかにおいて予測方法の補正を行った場合、書き込み領域予測部21は累積アラーム回数を0回に初期化し(ステップS211)て書き込み領域予測処理を終了する。
図4は、本実施形態におけるリカバリ処理の流れの具体例を示すフローチャートである。まず、コントローラ24は、データ転送処理を一時停止する(ステップS301)。例えば、コントローラ24は新たなデータ転送要求の受け付けを一時停止することでデータ転送処理の一時停止を実現してもよい。この場合、例えば、コントローラ24は、一時停止中に新たなデータ転送を要求してきたマスタ1に対して受け付け不可のエラーを応答してもよい。また、例えば、コントローラ24は、データ転送要求の受け付けを一時停止することを一時停止期間の開始時に各マスタ1に通知するように構成されてもよい。
また、バスブリッジ2が、一時停止中に発生したデータ転送要求について転送データを一時保存しておくことができる記憶部を備えている場合、コントローラ24は、データ転送処理を一時停止している間に発生した転送データを記憶部に蓄積しておき、データ転送処理の再開時には、記憶部に蓄積されている転送データから順にデータ転送処理を行うように構成されてもよい。
続いて、コントローラ24は、実サイズが予測サイズと異なるデータブロックが書き込まれたことによって生じたターゲットメモリ3上のデータ配置の不正を補正用メモリ4に記憶されているデータを用いて修正する(ステップS302)。コントローラ24はデータ配置の修正が完了すると、データ転送処理の一時停止を解除する(ステップS303)。
図5は、本実施形態におけるリカバリ処理の動作例を示す図である。図5(A)は、リカバリ処理が実行される前のある時点におけるブロックデータの配置例を示している。図5において実線のブロックはターゲットメモリ3に実際に書き込まれたブロックデータを表している。また、破線のブロックはターゲットメモリ3に確保された各ブロックデータの転送先領域を表しており、その時点でブロックデータが書き込まれていない領域を表している。
例えば、図5(A)は、マスタ#1によってブロック1a、1b、1cにブロックデータが書き込まれた後、マスタ#2の転送先領域であるブロック2a、2b、2cがマスタ1のブロックサイズに応じて確保された状況を表している。以下、ターゲットメモリ3において転送先領域となるブロックをターゲットブロックという。
図5(B)は、図5(A)の状態のターゲットメモリ3において、ブロック2aに実サイズが予測サイズよりも小さいブロックデータ2a’が書き込まれた状況を表しており、ドットでハッチングされた領域S1は、データの書き込みが行われなかった空き領域を表している。このような空き領域S1は、記憶領域の使用効率を低下させる要因となる。そのため、ブロックデータの書き込み時にこのような領域が発生した場合、すなわち実サイズが予測サイズよりも小さい場合、コントローラ24は書き込み済みの後続のブロックデータを空き領域に再配置する。
ここで、ターゲットメモリ3に書き込まれたブロックデータは、各マスタ1ごとに補正用メモリ4に保存されている。例えば、図5(B)の右図は、マスタ#1のデータ転送要求によりターゲットメモリ3のブロック1a、1b、1cに既に書き込まれたブロックデータが、マスタ#1用の補正用メモリ4のブロック1a、1b、1cにそれぞれ保存されている状況を示している。以下、補正用メモリ4に確保されるブロックデータ保存用のデータブロックを保存ブロックという。
例えば、この場合、コントローラ24は、保存ブロック1bに保存されているブロックデータを空き領域S1に転送することにより、図5(C)のようにブロックデータを再配置する。この結果、空き領域に続くブロックデータが空き領域に移動され、ターゲットメモリ3に確保されているターゲットブロック2bが空き領域S1のサイズ分(すなわち予測サイズと実サイズとの差分)だけ大きくしたブロック2b’として再編成される。このようなデータの再配置を行うことにより、実施形態のバスブリッジ2は、ブロックデータの書き込み時に発生した空き領域を統合し、記憶領域の使用効率の低下を抑制することができる。
続いて、図5(D)は、図5(C)において確保されているターゲットブロック2b’に、実サイズが予測サイズよりも大きいブロックデータ2b”が書き込まれた状況を示している。図5(D)において斜線でハッチングされた領域S2は、既に書き込み済みであったデータブロック1cの一部が、ターゲットブロック2bの書き込みによって上書きされた(すなわち欠損した)重複領域を表している。ここで、ブロックデータ1cは、ブロックデータ2b”の書き込みによって不正なデータになってしまっているため、正しいデータに修復される必要がある。
例えば、この場合、コントローラ24は、図5(E)に示すように、保存ブロック1cに保存されているブロックデータをターゲットブロック2b”に続く連続領域に転送することにより、図5(F)のようにブロックデータを再配置する。この結果、ターゲットメモリ3に確保されているターゲットブロック2cが重複領域S2のサイズ分だけ小さくなったブロック2c’として再編成される。このようなデータの再配置を行うことにより、実施形態のバスブリッジ2は、実サイズが予測サイズより大きいブロックデータによって上書かれたブロックデータを他の領域に修復することができる。
このような空き領域の回収と、上書きされたデータの修復と、を行うことにより、実施形態のバスブリッジ2は、ブロックサイズが不明なデータ転送要求が発生した場合であっても、データサイズの確定を待たずにデータ転送処理を開始することができる。
図6は、本実施形態における書き込み領域予測処理の動作例を示す図である。具体的には、図6は転送先領域の予測方法を補正する動作の具体例を示す。図6(A)は、書き込み領域予測処理の実行中に、累積アラーム回数が10回に到達したあるタイミングにおけるターゲットメモリ3のデータの配置例を示している。このタイミングにおいて、例えば第1のアラームが8回発生し、第2のアラームが2回発生しているとき、かつ第1の閾位置が7回であれば、書き込み領域予測部21は第1の方法で転送先領域の予測方法を補正する。
このように、アラームの発生頻度に応じて転送先領域の予測方法が補正されることにより、実施形態のバスブリッジ2は、転送先領域の予測精度を向上させることが可能となる。また、転送先領域の予測精度が向上することにより、リカバリ処理の発生が抑制され、より安定したデータ転送処理を実現することが可能となる。
(変形例)
本実施形態におけるデータ転送装置の一部又は全部はソフトウェアで実現されてもよい。例えば、データ転送装置は、バスで接続されたCPU(Central Processing Unit)やメモリや補助記憶装置などを備え、プログラムを実行する。データ転送装置は、プログラムの実行によってバスブリッジを備える装置として機能する。なお、データ転送装置の各機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。プログラムは、電気通信回線を介して送信されてもよい。
本実施形態におけるデータ転送装置の一部又は全部はソフトウェアで実現されてもよい。例えば、データ転送装置は、バスで接続されたCPU(Central Processing Unit)やメモリや補助記憶装置などを備え、プログラムを実行する。データ転送装置は、プログラムの実行によってバスブリッジを備える装置として機能する。なお、データ転送装置の各機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。プログラムは、電気通信回線を介して送信されてもよい。
図7は、本実施形態におけるデータ転送装置の変形例の機能構成の具体例を示すブロック図である。変形例のデータ転送装置100aは、例えば、1以上のマスタ1、ターゲットメモリ3、及び補正用メモリ4と接続されたバスブリッジ2aとして構成されてもよい。また、この場合、バスブリッジ2aは、書き込み領域予測部21及びコントローラ24を備える装置として構成されてもよい。また、この場合、書き込み領域予測部21は、アドレス変換部22及びアドレス変換テーブル23を含むように構成されてもよいし、アドレス変換部22及びアドレス変換テーブル23は、バスブリッジ2aに対して情報を入出力する外部装置として構成されてもよい。
メモリへのデータ転送要求を処理する装置であって、転送データのブロックサイズが固定値でないデータ転送要求を処理するデータ転送装置に適用可能である。
100…データ転送装置、1,1−1〜1−N…マスタ、2…バスブリッジ、21…書き込み領域予測部、22…アドレス変換部、23…アドレス変換テーブル、24…コントローラ、3…ターゲットメモリ、4…補正用メモリ、B1〜B3…バス
Claims (10)
- 同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測部と、
前記データ転送要求について予測された前記転送先領域に前記転送データを書き込むコントローラと、
を備えるデータ転送装置。 - 前記予測部は、前記転送先領域に書き込まれた前記転送データを退避データとして退避領域に記録し、
前記コントローラは、前記転送データについて確定したブロックサイズである実サイズが前記予測部によって予測された転送先領域のブロックサイズである予測サイズと異なった場合、前記メモリ上のデータ配置を前記退避領域に記録された前記退避データを用いて修正する、
請求項1に記載のデータ転送装置。 - 前記コントローラは、第1の転送データの実サイズが予測サイズより大きい場合、前記第1の転送データよりも前に書き込まれ、その転送先領域が前記第1の転送データの転送先領域と重複して一部が欠損した第2の転送データを、前記第1の転送データと重複しない新たな転送先領域に修復する、
請求項2に記載のデータ転送装置。 - 前記コントローラは、第1の転送データの実サイズが予測サイズより小さい場合、前記第1の転送データよりも前に書き込まれた第2の転送データを、前記予測サイズと前記実サイズとの差によって生じた空き領域に移動させる、
請求項2又は3に記載のデータ転送装置。 - 前記コントローラは、実サイズと予測サイズとが異なった回数である第1の回数が第1の閾値以上である場合、前記第1の回数に応じて前記転送先領域の予測方法を補正する、
請求項2から4のいずれか一項に記載のデータ転送装置。 - 前記コントローラは、前記第1の回数のうち前記実サイズが前記予測サイズよりも大きくなった回数である第2の回数が第2の閾値以上である場合、予測サイズが実サイズの平均値より小さく予測されるように前記予測方法を補正する、
請求項5に記載のデータ転送装置。 - 前記コントローラは、前記第1の回数のうち前記実サイズが前記予測サイズよりも小さくなった回数である第3の回数が第3の閾値以上である場合、予測サイズが実サイズの平均値より大きく予測されるように前記予測方法を補正する、
請求項5又は6に記載のデータ転送装置。 - 前記コントローラは、前記第1の回数のうち前記実サイズが前記予測サイズよりも大きくなった回数である第2の回数が第2の閾値未満であり、かつ、前記第1の回数のうち前記実サイズが前記予測サイズよりも小さくなった回数である第3の回数が第3の閾値未満である場合、予測サイズが実サイズの平均値として予測されるように前記予測方法を補正する、
請求項5から7のいずれか一項に記載のデータ転送装置。 - 同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、
前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、
を有するデータ転送方法。 - 同一のメモリに対するデータの転送要求であって、ブロックサイズが固定値でない転送データの転送を要求するデータ転送要求が発生した場合、前記転送データの転送先のメモリ領域である転送先領域を前記データ転送要求について予測する予測ステップと、
前記データ転送要求について予測された前記転送先領域に前記転送データを書き込む書き込みステップと、
をコンピュータに実行させるためのコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019073681A JP6747680B1 (ja) | 2019-04-08 | 2019-04-08 | データ転送装置、データ転送方法及びコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019073681A JP6747680B1 (ja) | 2019-04-08 | 2019-04-08 | データ転送装置、データ転送方法及びコンピュータプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6747680B1 JP6747680B1 (ja) | 2020-08-26 |
JP2020173511A true JP2020173511A (ja) | 2020-10-22 |
Family
ID=72146240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019073681A Active JP6747680B1 (ja) | 2019-04-08 | 2019-04-08 | データ転送装置、データ転送方法及びコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6747680B1 (ja) |
-
2019
- 2019-04-08 JP JP2019073681A patent/JP6747680B1/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP6747680B1 (ja) | 2020-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5498505B2 (ja) | データバースト間の競合の解決 | |
US9043806B2 (en) | Information processing device and task switching method | |
JP2005056067A (ja) | Dma転送制御装置 | |
US10489271B2 (en) | Multi-processor and multi-processor system for code debugging | |
JP2018005902A (ja) | メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法 | |
JP6297232B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
US20180285314A1 (en) | Arithmetic processing device, information processing apparatus, and method for controlling arithmetic processing device | |
US8219780B2 (en) | Mitigating context switch cache miss penalty | |
JP4168281B2 (ja) | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム | |
JP6747680B1 (ja) | データ転送装置、データ転送方法及びコンピュータプログラム | |
JPWO2004046926A1 (ja) | イベント通知方法、デバイス及びプロセッサシステム | |
JP4536189B2 (ja) | Dma転送装置及びdma転送システム | |
JP7428392B2 (ja) | 演算回路、演算装置、方法、及びプログラム | |
EP3588319B1 (en) | Memory module | |
JP2005258509A (ja) | ストレージ装置 | |
JP2005182538A (ja) | データ転送装置 | |
JP5087884B2 (ja) | データ処理ユニット、およびこれを使用したデータ処理装置 | |
JP4431492B2 (ja) | 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット | |
JP4170330B2 (ja) | 情報処理装置 | |
JP3795055B1 (ja) | 値予測装置、マルチプロセッサシステムおよび値予測方法 | |
JP7384102B2 (ja) | ベクトルプロセッサ、演算方法及びプログラム | |
JP2025073533A (ja) | 半導体装置および書き込み方法 | |
JP2000040057A (ja) | 計算機システム、バッファ制御装置及び転送方法 | |
HK40048845A (en) | Data processing method, data processing device and computing device | |
JP2710219B2 (ja) | Dma制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190408 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200707 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200730 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6747680 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |