(57)【要約】  データの転送元領域と転送先領域とが重なった場合において、バースト転送機能を用いて転送を行った場合であっても、データ破壊の発生を防止することを目的とする。転送元領域から読み出したデータをリングバッファへ一旦書き込み、リングバッファに書き込まれたデータを転送先領域へ書き込む。この際、リングバッファにおけるデータの書き込みによるラップアラウンドの回数と、データを読み出しによるラップアラウンドの回数との大小関係に基づき、リングバッファからのデータ読み出しを制御する。
2013129031.tif 000002
【特許請求の範囲】
【請求項１】
転送元領域に記憶されたデータを転送先領域へ転送するデータ転送装置であり、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御部と、
前記転送元リード制御部が出力したリードコマンドによって読み出されたデータを取得してリングバッファへ書き込むバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記リングバッファから読み出して、前記転送先領域へ送信するバッファリード制御部と、
前記バッファリード制御部が前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御部と、
前記バッファライト制御部によるラップアラウンドの回数をカウントするライト周期カウント部と、
前記バッファリード制御部によるラップアラウンドの回数をカウントするリード周期カウント部と、
前記ライト周期カウント部がカウントした回数と、前記リード周期カウント部がカウントした回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、データを前記リングバッファから読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御部が前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とするデータ転送装置。
【請求項２】
前記データ非破壊制御部は、さらに、前記バッファライト制御部がデータの書き込みを完了した前記リングバッファにおけるアドレス値と、前記バッファリード制御部がデータを読み出そうとしている前記リングバッファにおけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定する
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記転送元リード制御部は、単位量のデータづつ所定個の単位量のデータをリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
前記バッファライト制御部は、前記転送元リード制御部が出力した各リードコマンドについて、前記転送元リード制御部がリードコマンドを出力した順に、そのリードコマンドによって読み出されたデータを単位量づつ取得して、そのリードコマンドにおけるリード開始アドレスに対応するリングバッファにおけるアドレスからアドレス値の昇順に書き込むとともに、そのリードコマンドによって読み出されたデータの前記リングバッファへの書き込みが終了した場合に、前記リード開始アドレスに対応するリングバッファにおけるアドレスにライト完了ポインタを設定し、
前記転送先ライト制御部は、単位量のデータづつ所定個の単位量のデータをライト開始アドレスからアドレス値の昇順に書き込むライトコマンドを、前記ライト開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
前記バッファリード制御部は、前記転送先ライト制御部が次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記リングバッファにおけるアドレスにリードポインタを設定し、
前記データ非破壊制御部は、前記ライト周期カウント部がカウントした回数が前記リード周期カウント部がカウントした回数よりも多い場合と、前記ライト周期カウント部がカ
ウントした回数と前記リード周期カウント部がカウントした回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記リードポインタが設定されたアドレスからアドレス値の昇順に単位量づつデータを読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、次のライトコマンドを出力する
ことを特徴とする請求項２に記載のデータ転送装置。
【請求項４】
前記データ非破壊制御部は、前記転送元領域と前記転送先領域とが重複する場合であって、前記転送元領域の先頭位置を表す先頭アドレスのアドレス値が前記転送先領域の先頭位置を表す先頭アドレスのアドレス値以下である場合には、デクリメント転送を行い、他の場合には、インクリメント転送を行うと判定し、
前記転送元リード制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が降順になるように前記リードコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が昇順になるように前記リードコマンドを複数個生成して順に出力し、
前記転送先ライト制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が降順になるように前記ライトコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が昇順になるように前記ライトコマンドを複数個生成して順に出力し、
前記データ非破壊制御部は、デクリメント転送を行うと判定した場合、前記ライト周期カウント部がカウントした回数が前記リード周期カウント部がカウントした回数よりも多い場合と、前記ライト周期カウント部がカウントした回数と前記リード周期カウント部がカウントした回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定する
ことを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記バッファライト制御部は、リードコマンドによって読み出されたデータをリード用バスを介して取得し、
前記バッファリード制御部は、前記リングバッファから読み出したデータを前記リード用バスとは異なるライト用バスを介して転送先領域へ送信する
ことを特徴とする請求項１から４までのいずれかに記載のデータ転送装置。
【請求項６】
転送元領域に記憶されたデータを転送先領域へ転送するデータ転送方法であり、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御ステップと、
前記転送元リード制御ステップで出力したリードコマンドによって読み出されたデータを取得してリングバッファへ書き込むバッファライト制御ステップと、
前記バッファライト制御ステップで書き込んだデータを前記リングバッファから読み出して、前記転送先領域へ送信するバッファリード制御ステップと、
前記バッファリード制御ステップで前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御ステップと、
前記バッファライト制御ステップによるラップアラウンドの回数をカウントするライト
周期カウントステップと、
前記バッファリード制御ステップによるラップアラウンドの回数をカウントするリード周期カウントステップと、
前記ライト周期カウントステップでカウントした回数と、前記リード周期カウントステップでカウントした回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御ステップと
を備え、
前記バッファリード制御ステップでは、書き込みを許可すると前記データ非破壊制御ステップで判定した場合に、データを前記リングバッファから読み出し、
前記転送先ライト制御ステップでは、書き込みを許可すると前記データ非破壊制御ステップで判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御ステップで前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とするデータ転送方法。
【請求項７】
転送元領域に記憶されたデータを転送先領域へ転送するデータ転送プログラムであり、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御処理と、
前記転送元リード制御処理で出力したリードコマンドによって読み出されたデータを取得してリングバッファへ書き込むバッファライト制御処理と、
前記バッファライト制御処理で書き込んだデータを前記リングバッファから読み出して、前記転送先領域へ送信するバッファリード制御処理と、
前記バッファリード制御処理で前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御処理と、
前記バッファライト制御処理によるラップアラウンドの回数をカウントするライト周期カウント処理と、
前記バッファリード制御処理によるラップアラウンドの回数をカウントするリード周期カウント処理と、
前記ライト周期カウント処理でカウントした回数と、前記リード周期カウント処理でカウントした回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御処理と
をコンピュータに実行させ、
前記バッファリード制御処理では、書き込みを許可すると前記データ非破壊制御処理で判定した場合に、データを前記リングバッファから読み出し、
前記転送先ライト制御処理では、書き込みを許可すると前記データ非破壊制御処理で判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御処理で前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とするデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、転送元領域に記憶されたデータを転送先領域へ転送するデータ転送技術に関する。
【背景技術】
【０００２】
データ転送技術には、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送と呼ばれる技術がある。
ＤＭＡ転送では、まず、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が、データ転送元アドレス、データ転送先アドレス、データ転送サイズ等の転送に必要なＤＭＡ情報をＤＭＡ転送制御装置のレジスタに設定する。そして、ＣＰＵがＤＭＡ転送制御装置へ転送開始を指示すると、ＤＭＡ転送制御装置はレジスタに設定されたＤＭＡ情報に従い転送処理を実行する。ＤＭＡ転送制御装置は、レジスタに設定された転送サイズ分のデータ転送を完了したら、ＤＭＡ転送終了割込みをＣＰＵへアサートする。ＣＰＵは、ＤＭＡ転送終了割込みを検知すると、ＤＭＡ転送制御装置のレジスタの情報を読み込んで、ＤＭＡ転送の結果やステータスを確認する。
ＤＭＡ転送制御装置が転送処理を実行している間、ＣＰＵによる転送制御の必要はない。そのため、ＤＭＡ転送では、ＣＰＵを経由してデータ転送を行う場合に比べて高速にデータ転送を行うことができる。また、ＤＭＡ転送では、ＣＰＵの負担を減らすことができる。
一般的なＤＭＡ転送では、設定されたサイズ（単位量）ごとに必要なデータの読み出しを行ない、その後の書き込みを行う。書き込みの開始タイミングが読み出しの完了後になるため、レイテンシが大きなデバイスへの転送では、転送効率が良くない。【０００３】
ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）バスを使用したＤＭＡ転送制御装置がある。
ＡＸＩバスは、リード専用バスとライト専用バスとを備えており、リード専用バスを使ったデータ転送元領域からのデータ取得と、ライト専用バスを使ったデータ転送先領域へのデータ転送とをパラレルに実行できる。
また、ＡＸＩバスは、バースト転送機能を備えている。バースト転送機能は、１回のリード要求で複数の単位量のリードデータを取得でき、１回のライト要求で複数の単位量のライトが実行できる機能である。
ＡＸＩバスを使用したＤＭＡ転送制御装置では、上記のリード／ライト専用バスやバースト転送機能を用いることにより、高速転送が可能である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１１６２４５号公報
【特許文献２】特開２００８−８３９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＤＭＡ転送では、データの転送元領域と転送先領域とが重なった場合、データ破壊が発生する場合がある。特に、バースト転送機能を用いて転送を行った場合、データ破壊を防止することが困難である。
この発明は、データの転送元領域と転送先領域とが重なった場合におけるデータ破壊の発生を防止することを目的とする。特に、バースト転送機能を用いて転送を行った場合であっても、データ破壊の発生を防止することを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るデータ転送装置は、
転送元領域に記憶されたデータを転送先領域へ転送するデータ転送装置であり、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御部と、
前記転送元リード制御部が出力したリードコマンドによって読み出されたデータを取得してリングバッファへ書き込むバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記リングバッファから読み出して、前記転送先領域へ送信するバッファリード制御部と、
前記バッファリード制御部が前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御部と、
前記バッファライト制御部によるラップアラウンドの回数をカウントするライト周期カウント部と、
前記バッファリード制御部によるラップアラウンドの回数をカウントするリード周期カウント部と、
前記ライト周期カウント部がカウントした回数と、前記リード周期カウント部がカウントした回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、データを前記リングバッファから読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御部が前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とする。
【発明の効果】
【０００７】
この発明に係るデータ転送装置によれば、バッファ領域からのデータ読み出しのタイミングを調整することにより、データ破壊の発生を防ぐことができる。
【図面の簡単な説明】
【０００８】
【図１】データ破壊が発生する場合の説明図。
【図２】データ破壊が発生する場合の説明図。
【図３】バースト転送機能を用いた場合におけるデータ転送の順序の説明図。
【図４】実施の形態１に係るＤＭＡ転送システム１０の構成図。
【図５】実施の形態１に係るＤＭＡ転送制御装置１００の構成図。
【図６】実施の形態１に係るデータ非破壊制御部１６０の構成図。
【図７】実施の形態１に係るバッファライト周期カウント部１７０の構成図。
【図８】実施の形態１に係るバッファリード周期カウント部１８０の構成図。
【図９】実施の形態１に係るＤＭＡ転送制御装置１００全体の動作を示すフローチャート。
【図１０】実施の形態１に係る転送元リード制御部１１０の動作を示すフローチャート。
【図１１】実施の形態１に係るバッファライト制御部１２０の動作を示すフローチャート。
【図１２】バッファリード制御部１４０の動作を示すフローチャート。
【図１３】実施の形態１に係る転送先ライト制御部１５０の動作を示すフローチャート。
【図１４】実施の形態１に係るデータ非破壊制御部１６０の動作を示すフローチャート。
【図１５】実施の形態１に係るバッファライト周期カウント部１７０の動作を示すフローチャート。
【図１６】実施の形態１に係るバッファリード周期カウント部１８０の動作を示すフローチャート。
【図１７】ＤＭＡ転送時におけるデータの変化を示す図（１−１）。
【図１８】ＤＭＡ転送時におけるデータの変化を示す図（１−２）。
【図１９】ＤＭＡ転送時におけるデータの変化を示す図（１−３）。
【図２０】ＤＭＡ転送時におけるデータの変化を示す図（１−４）。
【図２１】ＤＭＡ転送時におけるデータの変化を示す図（１−５）。
【図２２】ＤＭＡ転送時におけるデータの変化を示す図（２−１）。
【図２３】ＤＭＡ転送時におけるデータの変化を示す図（２−２）。
【図２４】ＤＭＡ転送時におけるデータの変化を示す図（２−３）。
【図２５】ＤＭＡ転送時におけるデータの変化を示す図（２−４）。
【図２６】ＤＭＡ転送時におけるデータの変化を示す図（２−５）。
【図２７】ＤＭＡ転送時におけるデータの変化を示す図（３−１）。
【図２８】ＤＭＡ転送時におけるデータの変化を示す図（３−２）。
【図２９】ＤＭＡ転送時におけるデータの変化を示す図（３−３）。
【図３０】ＤＭＡ転送時におけるデータの変化を示す図（３−４）。
【図３１】ＤＭＡ転送時におけるデータの変化を示す図（３−５）。
【図３２】実施の形態２に係るデータ非破壊制御部１６０の構成図。
【図３３】実施の形態２に係るＤＭＡ転送制御装置１００全体の動作を示すフローチャート。
【発明を実施するための形態】
【０００９】
実施の形態１．
図１、図２は、データ破壊が発生する場合の説明図である。特に、図１は、データの転送元領域と転送先領域とが順方向にずれている場合の説明図である。図２は、データの転送元領域と転送先領域とが逆方向にずれている場合の説明図である。
【００１０】
図１に基づき、データの転送元領域と転送先領域との一部が重なりつつ、データの転送元領域と転送先領域とが順方向にずれている場合について説明する。転送元領域と転送先領域とが順方向にずれているとは、転送元領域の先頭アドレスのアドレス値が、転送先領域の先頭アドレスのアドレス値よりも小さい場合である。
図１では、転送元領域と転送先領域とが同じデバイスにおける領域であり、領域Ｂが重なっている。また、図１では、転送元領域の先頭アドレスである領域Ａの先頭アドレスのアドレス値は、転送先領域の先頭アドレスである領域Ｂの先頭アドレスのアドレス値よりも小さく、転送元領域と転送先領域とが順方向にずれている。
この場合、アドレス値の昇順方向（インクリメント方向）へ順次データ転送を行うと、まず、領域Ａのデータが領域Ｂへ書き込まれ、その後、領域Ｂのデータが領域Ｃへ書き込まれることになる。この場合、領域Ｂのデータが領域Ｃへ書き込まれる前に、領域Ｂへ領域Ａのデータが書き込まれてしまい、元々領域Ｂに記憶されていたデータが破壊されてしまう。
そこで、この場合、アドレス値の降順方向（デクリメント方向）へ順次データ転送を行うようにする。すると、まず、領域Ｂのデータが領域Ｃへ書き込まれ、その後、領域Ａのデータが領域Ｂへ書き込まれる。そのため、データが破壊されることなく、転送が行える。
【００１１】
図２に基づき、データの転送元領域と転送先領域との一部が重なりつつ、データの転送元領域と転送先領域とが逆方向にずれている場合について説明する。転送元領域と転送先領域とが逆方向にずれているとは、転送元領域の先頭アドレスのアドレス値が、転送先領域の先頭アドレスのアドレス値よりも大きい場合である。
図２でも、図１と同様に、転送元領域と転送先領域とが同じデバイスにおける領域であり、領域Ｂが重なっている。しかし、図２では、転送元領域の先頭アドレスである領域Ｂの先頭アドレスのアドレス値は、転送先領域の先頭アドレスである領域Ａの先頭アドレスのアドレス値よりも大きく、転送元領域と転送先領域とが逆方向にずれている。
この場合、アドレス値の降順方向（デクリメント方向）へ順次データ転送を行うと、まず、領域Ｃのデータが領域Ｂへ書き込まれ、その後、領域Ｂのデータが領域Ａへ書き込まれることになる。この場合、領域Ｂのデータが領域Ａへ書き込まれる前に、領域Ｂへ領域Ｃのデータが書き込まれてしまい、元々領域Ｂに記憶されていたデータが破壊されてしまう。
そこで、この場合、アドレス値の昇順方向（インクリメント方向）へ順次データ転送を行うようにする。すると、まず、領域Ｂのデータが領域Ａへ書き込まれ、その後、領域Ｃのデータが領域Ｂへ書き込まれる。そのため、データが破壊されることなく、転送が行える。
【００１２】
つまり、転送元領域と転送先領域とが順方向にずれている場合には、アドレス値の降順方向へ順次データ転送を行うデクリメント転送を行えばデータ破壊は発生しない。一方、転送元領域と転送先領域とが逆方向にずれている場合には、アドレス値の昇順方向へ順次データ転送を行うインクリメント転送を行えばデータ破壊は発生しない。
【００１３】
図３は、バースト転送機能を用いた場合におけるデータ転送の順序の説明図である。図３では、バースト転送機能を用いてデクリメント方向のデータ転送を行う場合を示している。
通常のデータ転送では、１回のリード／ライト要求で１個の単位量のデータの転送のみ可能である。これに対して、バースト転送機能を用いた場合、１回のリード／ライト要求で複数個の単位量のデータの転送が可能である。
図３では、データ１〜８の８個の単位量のデータの転送を行うことを想定している。そのため、通常のデータ転送では、８回のリード／ライト要求が必要となる。これに対して、バースト転送機能を用いた場合、２回のリード／ライト要求で転送が可能である。なお、ここでは、１回のリード／ライト要求で４個の単位量のデータの転送が可能な４バースト転送を想定している。
ここで、バーストリードコマンド（トランザクション）の発行順序は、インクリメント方向にもデクリメント方向にもできる。しかし、バーストリードコマンド内におけるデータの読み出し順序は、インクリメント方向にしかできない。そのため、図３に示すように、データ５〜８を読み出す４バーストリードコマンドを１個目、データ１〜４を読み出す４バーストリードコマンドを２個目というデクリメント方向の順にバーストリードコマンドを発行しても、データの読み出し順序は、データ５，６，７，８，１，２，３，４の順になってしまう。つまり、データ８，７，６，５，４，３，２，１の順に読み出すことはできない。
したがって、転送元領域と転送先領域とが順方向にずれている場合において、バースト転送機能を用いてデータ転送を行うと、デクリメント転送を用いてもデータ破壊を防止することはできない。
なお、バーストライトコマンドの場合も、バーストリードコマンドの場合と同様に、バーストライトコマンドの発行順序は、インクリメント方向にもデクリメント方向にもできる。しかし、バーストライトコマンド内におけるデータの書き込み順序は、インクリメント方向にしかできない。
【００１４】
図４は、実施の形態１に係るＤＭＡ転送システム１０の構成図である。
ＤＭＡ転送システム１０は、ＤＭＡ転送制御装置１００（データ転送装置）、ＣＰＵ２００、メモリ３００を備える。
ＤＭＡ転送制御装置１００は、ＣＰＵ２００等の使用者によってレジスタに設定されたＤＭＡ情報に従い、メモリ３００にアクセスしてデータ転送を行う装置である。
ＣＰＵ２００は、転送元領域を指定する転送元アドレス、転送先領域を指定する転送先アドレス、転送データのサイズを指定する転送サイズ、転送タイプ（インクリメント転送又はデクリメント転送）のＤＭＡ情報をＤＭＡ転送制御装置１００のレジスタに設定し、ＤＭＡ転送制御装置１００にデータ転送を実行させる。ここでは、ＣＰＵ２００がＤＭＡ情報を設定するとしたが、ＣＰＵ２００ではなく、他の装置やシステムがＤＭＡ情報を設定してもよい。
メモリ３００は、データ転送の転送元領域及び転送先領域となる対象リソースである。
【００１５】
図５は、実施の形態１に係るＤＭＡ転送制御装置１００の構成図である。
なお、図５において、実線はデータが流れるデータ線を表し、破線は制御信号が流れる制御線を表す。
ＤＭＡ転送制御装置１００は、転送元リード制御部１１０、バッファライト制御部１２０、内部バッファ１３０（リングバッファ）、バッファリード制御部１４０、転送先ライト制御部１５０、データ非破壊制御部１６０、バッファライト周期カウント部１７０、バッファリード周期カウント部１８０を備える。
【００１６】
転送元リード制御部１１０は、メモリ３００の転送元領域に記憶されたデータを読み出す転送元リードコマンドをメモリ３００へ出力する。
転送元リードコマンドは、リードアドレス、リードアドレス有効信号（もしくは、リード要求信号）、その他（バーストサイズ、バースト長）の信号をまとめた情報である。
【００１７】
バッファライト制御部１２０は、転送元リード制御部１１０が出力した転送元リードコマンドによって読み出された転送元リードデータをリード専用バスを介して取得する。
また、バッファライト制御部１２０は、取得した転送元リードデータをバッファライトデータとして内部バッファ１３０へ出力し、内部バッファ１３０におけるバッファライトポインタによって指定した位置にバッファライトデータを書き込む。バッファライトポインタは、現在のバッファライト先を示した情報である。
バッファライト制御部１２０は、バッファライトデータの書き込みが完了した位置をバッファライト完了ポインタとして、データ非破壊制御部１６０へ通知する。バッファライト完了ポインタは、言い替えれば、内部バッファ１３０における読み出し準備が完了した完了領域を示した情報である。
【００１８】
内部バッファ１３０は、ＤＭＡ転送制御装置１００に内蔵された転送データ格納用のリソースである。
【００１９】
バッファリード制御部１４０は、内部バッファ１３０におけるバッファリードポインタによって指定した位置からデータをバッファリードデータとして読み出す。バッファリードポインタは、現在のバッファリード先を示した情報である。
また、バッファリード制御部１４０は、読み出したバッファリードデータを転送先ライトデータとしてライト専用バスを介してメモリ３００へ出力する。
バッファリード制御部１４０は、バッファリードポインタをデータ非破壊制御部１６０へ通知する。
【００２０】
転送先ライト制御部１５０は、メモリ３００へ転送先ライトコマンドを出力して、バッファリード制御部１４０が出力した転送先ライトデータを転送先領域に書き込む。
転送先ライトコマンドは、ライトアドレス、ライトアドレス有効信号（もしくは、ライト要求信号）、ライトデータ有効信号、その他（バーストサイズ、バースト長、ストローブ信号）の信号をまとめた情報である。
【００２１】
データ非破壊制御部１６０は、ＣＰＵ２００によって設定された転送タイプ（インクリメント転送又はデクリメント転送）を各制御部、各カウント部へ通知する。なお、各制御部とは、転送元リード制御部１１０、バッファライト制御部１２０、バッファリード制御部１４０、転送先ライト制御部１５０のことである。また、各カウント部とは、バッファライト周期カウント部１７０、バッファリード周期カウント部１８０のことである。
また、データ非破壊制御部１６０は、デクリメント転送の場合、「バッファライト周期カウント部１７０がカウントしたラップアラウンドの回数（バッファライト周期カウンタ値）と、バッファリード周期カウント部１８０がカウントしたラップアラウンドの回数（バッファリード周期カウンタ値）との大小関係」と、「バッファライト完了ポインタの値と、バッファリードポインタの値の大小関係」とに基づき、バッファリードポインタが示す位置のデータ読み出し準備ができているか否かを判定する。そして、データ非破壊制御部１６０は、データ読み出し準備ができていると判定した場合に、転送先ライト可能指示をバッファリード制御部１４０、転送先ライト制御部１５０へ出力する。なお、データ非破壊制御部１６０は、インクリメント転送の場合、バッファライト完了ポインタやバッファリードポインタに関わらず、常に転送先ライト可能指示を出力する。
バッファリード制御部１４０は、データ非破壊制御部１６０から転送先ライト可能指示を受信すると、内部バッファ１３０からデータを読み出す。また、転送先ライト制御部１５０は、データ非破壊制御部１６０から転送先ライト可能指示を受信すると、転送先ライトコマンドを出力する。
【００２２】
バッファライト周期カウント部１７０は、デクリメント転送の場合、バッファライト完了ポインタがラップアラウンドした回数をカウントするカウンタである。
【００２３】
バッファリード周期カウント部１８０は、デクリメント転送の場合、バッファリードポインタがラップアラウンドした回数をカウントするカウンタである。
【００２４】
なお、リード専用バスは、転送元リードコマンド、転送元リードデータを流すバスであり、ライト専用バスは、転送先ライトコマンド、転送先ライトデータを流すバスである。リード専用バスとライト専用バスとには依存関係がなく、パラレルに動作可能である。
【００２５】
図６は、実施の形態１に係るデータ非破壊制御部１６０の構成図である。
データ非破壊制御部１６０は、転送タイプ設定レジスタ１６１、バッファライト完了ポインタ設定レジスタ１６２、バッファリードポインタ設定レジスタ１６３、第１バッファ準備完了判断部１６４、第２バッファ準備完了判断部１６５、ラップアラウンド回数一致判断部１６６、セレクタ１６７を備える。
転送タイプ設定レジスタ１６１には、ＣＰＵ２００から転送タイプが設定される。転送タイプ設定レジスタ１６１に設定された転送タイプがデータ非破壊制御部１６０から各制御部へ通知される。
バッファライト完了ポインタ設定レジスタ１６２には、バッファライト制御部１２０からバッファライト完了ポインタが設定される。
バッファリードポインタ設定レジスタ１６３には、バッファリード制御部１４０からバッファリードポインタが設定される。
第１バッファ準備完了判断部１６４は、転送タイプ、バッファライト完了ポインタ、バッファリードポインタに基づき、内部バッファ１３０からのデータ読み出し準備が完了しているか否かを判断する。データ読み出し準備が完了していると判定した場合、データ破壊が発生しないと判定し、セレクタ１６７へ転送先ライト可能指示（ポインタ）を出力する。
第２バッファ準備完了判断部１６５は、バッファライト周期カウント部１７０から得たバッファライト周期カウンタ値と、バッファリード周期カウント部１８０から得たバッファリード周期カウンタ値とに基づき、内部バッファ１３０からのデータ読み出し準備が完了しているか否かを判断する。データ読み出し準備完了していると判定した場合、データ破壊が発生しないと判定し、セレクタ１６７へ転送先ライト可能指示（カウンタ）を出力する。
ラップアラウンド回数一致判断部１６６は、バッファライト周期カウント部１７０から得たバッファライト周期カウンタ値と、バッファリード周期カウント部１８０から得たバッファリード周期カウンタ値とが一致しているか否かを判断する。
セレクタ１６７は、ラップアラウンド回数一致判断部１６６の判断結果に基づいて、第１バッファ準備完了判断部１６４から出力された転送先ライト可能指示（ポインタ）と、第２バッファ準備完了判断部１６５から出力された転送先ライト可能指示（カウンタ）とのどちらを転送先ライト可能指示として出力するかを選択する。セレクタ１６７は、選択した転送先ライト可能指示を、バッファリード制御部１４０と転送先ライト制御部１５０とへ出力する。
【００２６】
図７は、実施の形態１に係るバッファライト周期カウント部１７０の構成図である。
バッファライト周期カウント部１７０は、ラップアラウンド検出部１７１、ラップアラウンド回数カウント部１７２を備える。
ラップアラウンド検出部１７１は、デクリメント転送の場合、バッファライト完了ポインタがラップアラウンドしたか否かを検出する。
ラップアラウンド回数カウント部１７２は、ラップアラウンド検出部１７１がラップアラウンドを検出した場合にバッファライト周期カウンタ値を＋１カウントアップする。そして、ラップアラウンド回数カウント部１７２は、カウントアップしたバッファライト周期カウンタ値をデータ非破壊制御部１６０へ出力する。
【００２７】
図８は、実施の形態１に係るバッファリード周期カウント部１８０の構成図である。
バッファリード周期カウント部１８０は、ラップアラウンド検出部１８１、ラップアラウンド回数カウント部１８２を備える。
ラップアラウンド検出部１８１は、デクリメント転送の場合、バッファリードポインタがラップアラウンドしたか否かを検出する。
ラップアラウンド回数カウント部１８２は、ラップアラウンド検出部１８１がラップアラウンドを検出した場合にバッファリード周期カウンタ値を＋１カウントアップする。そして、ラップアラウンド回数カウント部１８２は、カウントアップしたバッファリード周期カウンタ値をデータ非破壊制御部１６０へ出力する。
【００２８】
次に、ＤＭＡ転送制御装置１００の動作について説明する。
図９は、実施の形態１に係るＤＭＡ転送制御装置１００全体の動作を示すフローチャートである。
Ｓ１１では、ＣＰＵ２００がＤＭＡ転送制御装置１００のレジスタにＤＭＡ情報を設定し、ＤＭＡ転送制御装置１００を起動する。すると、Ｓ１２では、ＤＭＡ転送制御装置１００のデータ非破壊制御部１６０がレジスタ（転送タイプ設定レジスタ１６１）に設定された転送タイプ（インクリメント転送、又は、デクリメント転送）を各制御部へ通知する。レジスタにインクリメント転送が設定された場合、処理をＳ１３へ進め、デクリメント転送が設定された場合、処理をＳ１４へ進める。
Ｓ１３では、ＤＭＡ転送制御装置１００がメモリ３００に対してインクリメント転送を行う。一方、Ｓ１４では、ＤＭＡ転送制御装置１００がメモリ３００に対してデクリメント転送を行う。
そして、Ｓ１５では、ＤＭＡ転送制御装置１００が指定されたデータ長のデータを転送し終えた場合等、ＤＭＡ転送停止要因があったときに転送動作を停止する。
【００２９】
図１０は、実施の形態１に係る転送元リード制御部１１０の動作を示すフローチャートである。なお、図１０は、図９におけるＳ１３又はＳ１４における転送元リード制御部１１０の動作を示す。
Ｓ２１では、転送元リード制御部１１０がデータ非破壊制御部１６０から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をＳ２２へ進め、デクリメント転送と判定した場合、処理をＳ２３へ進める。
Ｓ２２及びＳ２３では、転送元リード制御部１１０が１つのバーストリードコマンドを転送元リードコマンドとして生成する。バーストリードコマンドは、図３に基づき説明したように、単位量のデータづつ所定個の単位量のデータをリード開始アドレスからアドレス値の昇順に読み出すコマンドである。
Ｓ２２，Ｓ２３に続いて、Ｓ２４では、転送元リード制御部１１０が、転送元リードコマンドによって読み出されるデータを格納する空き領域が内部バッファ１３０にあるか否かによって、リードアクセス可能か否か判定する。リードアクセス可能と判定した場合（Ｓ２４でＹＥＳ）、処理をＳ２５へ進める。一方、リードアクセス不可能と判定した場合（Ｓ２４でＮＯ）、Ｓ２４へ処理を戻し、所定の時間経過後再びリードアクセス可能か否か判定する。
Ｓ２５では、転送元リード制御部１１０が生成した転送元リードコマンドをメモリ３００に対して発行して、転送元領域からデータを読み出す。
そして、Ｓ２６では、転送元リード制御部１１０が、転送サイズ分のデータを読み出す転送元リードコマンドをメモリ３００へ送信したか否かにより、メモリ３００へのリードアクセスを終了するか否か判定する。リードアクセスを終了すると判定した場合（Ｓ２６でＹＥＳ）、処理を終了する。一方、リードアクセスを終了しないと判定した場合（Ｓ２６でＮＯ）、処理をＳ２１へ戻す。
【００３０】
なお、Ｓ２２では、転送元リード制御部１１０は、インクリメント方向にバーストリードコマンドを生成する。つまり、バーストリードコマンドのリード開始アドレスのアドレス値が昇順になるように、バーストリードコマンドを生成する。
一方、Ｓ２３では、転送元リード制御部１１０は、デクリメント方向にバーストリードコマンドを生成する。つまり、バーストリードコマンドのリード開始アドレスのアドレス値が降順になるように、バーストリードコマンドを生成する。
【００３１】
図１１は、実施の形態１に係るバッファライト制御部１２０の動作を示すフローチャートである。なお、図１１は、図９におけるＳ１３又はＳ１４におけるバッファライト制御部１２０の動作を示す。
Ｓ３１では、バッファライト制御部１２０がデータ非破壊制御部１６０から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をＳ３２へ進め、デクリメント転送と判定した場合、処理をＳ３３へ進める。
Ｓ３２及びＳ３３では、バッファライト制御部１２０が１つの転送元リードコマンドに対応する１つのバーストライトコマンドをバッファライトコマンドとして生成する。このバッファライトコマンドは、対応する転送元リードコマンドのリード開始アドレスに対応する、内部バッファ１３０におけるアドレスをライト開始アドレスとして、ライト開始アドレスからアドレス値の昇順にデータを書き込むコマンドである。
なお、この際、バッファライト制御部１２０は、リード開始アドレスや、何個の単位量のデータを読み出す転送元リードコマンドを発行するかなどの情報を転送元リード制御部１１０から取得して、転送元リードコマンドに対応するバッファライトコマンドを生成する。あるいは、バッファライト制御部１２０は、転送元リード制御部１１０と同様のロジックにより、リード開始アドレスや、転送元リード制御部１１０が何個の単位量のデータを読み出す転送元リードコマンドを発行するかなどを判定して、転送元リードコマンドに対応するバッファライトコマンドを生成してもよい。
また、Ｓ３３では、バッファライト制御部１２０は、バッファライト完了ポインタをデータ非破壊制御部１６０のバッファライト完了ポインタ設定レジスタ１６２に設定する。この際、バッファライト完了ポインタは、バッファライトポインタが示すアドレス値に、そのライトコマンドで書き込むデータサイズ分のアドレス値を加えたアドレス値を示すものとする。
Ｓ３２，Ｓ３３に続いて、Ｓ３４では、バッファライト制御部１２０が内部バッファ１３０に対してバッファライトコマンドを発行する。これにより、１つの転送元リードコマンドによって転送元領域から読み出されたデータを、内部バッファ１３０に書き込む。
そして、Ｓ３５では、バッファライト制御部１２０が、転送サイズ分のデータを書き込むバッファライトコマンドを内部バッファ１３０へ送信したか否かにより、内部バッファ１３０へのライトアクセスを終了するか否かを判定する。ライトアクセスを終了すると判定した場合（Ｓ３５でＹＥＳ）、処理を終了し、ライトアクセスを終了しないと判定した場合（Ｓ３５でＮＯ）、処理をＳ３１へ戻す。
なお、Ｓ３５では、ライトアクセスを終了すると判定した場合（Ｓ３５でＹＥＳ）、バッファライト制御部１２０は、最後に発行したバーストライトコマンドにおけるライト開始アドレスをバッファライト完了ポインタとして、バッファライト完了ポインタ設定レジスタ１６２に設定した上で、処理を終了する。
【００３２】
図１２は、バッファリード制御部１４０の動作を示すフローチャートである。なお、図１２は、図９におけるＳ１３又はＳ１４におけるバッファリード制御部１４０の動作を示す。
Ｓ４１では、バッファリード制御部１４０がデータ非破壊制御部１６０から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をＳ４２へ進め、デクリメント転送と判定した場合、処理をＳ４３へ進める。
Ｓ４２及びＳ４３では、バッファリード制御部１４０が、１つの転送先ライトコマンドに対応する１つのバーストリードコマンドをバッファリードコマンドとして生成する。このバッファリードコマンドは、対応する転送先ライトコマンドのライト開始アドレスに対応する、内部バッファ１３０におけるアドレスをリード開始アドレスとして、リード開始アドレスからアドレス値の昇順にデータを読み出すコマンドである。
なお、この際、バッファリード制御部１４０は、ライト開始アドレスや、何個の単位量のデータを書き込む転送先ライトコマンドを発行するかなどの情報を転送先ライト制御部１５０から取得して、転送先ライトコマンドに対応するバッファリードコマンドを生成する。あるいは、バッファリード制御部１４０は、転送先ライト制御部１５０と同様のロジックにより、ライト開始アドレスや、転送先ライト制御部１５０が何個の単位量のデータを書き込む転送先ライトコマンドを発行するかなどを判定して、転送先ライトコマンドに対応するバッファリードコマンドを生成してもよい。
また、Ｓ４２及びＳ４３では、バッファリード制御部１４０は、バッファリードコマンドの生成の際、そのバッファリードコマンドのリード開始アドレスを示すバッファリードポインタをデータ非破壊制御部１６０のバッファリードポインタ設定レジスタ１６３に設定する。
Ｓ４２，Ｓ４３に続いて、Ｓ４４では、バッファリード制御部１４０が、リードアクセス可能か否か判定する。バッファリード制御部１４０は、（１）転送先ライトコマンドによって書き込まれるだけのデータが内部バッファ１３０に格納されており、かつ、（２）データ非破壊制御部１６０から転送先ライト可能指示を受信した場合に、リードアクセス可能と判定する。リードアクセス可能と判定した場合（Ｓ４４でＹＥＳ）、処理をＳ４５へ進める。一方、リードアクセス不可能と判定した場合（Ｓ４４でＮＯ）、Ｓ４４へ処理を戻し、所定の時間経過後再びリードアクセス可能か否か判定する。
Ｓ４５では、バッファリード制御部１４０が内部バッファ１３０に対してバッファリードコマンドを発行する。これにより、１つの転送先ライトコマンドによって転送先領域へ書き込まれるデータを、内部バッファ１３０から読み出し、メモリ３００へ送信する。
そして、Ｓ４６では、バッファリード制御部１４０が、転送サイズ分のデータを読み出すバッファリードコマンドを内部バッファ１３０へ送信したか否かにより、内部バッファ１３０へのリードアクセスを終了するか否かを判定する。リードアクセスを終了すると判定した場合（Ｓ４６でＹＥＳ）、処理を終了し、リードアクセスを終了しないと判定した場合（Ｓ４６でＮＯ）、処理をＳ４１へ戻す。
【００３３】
図１３は、実施の形態１に係る転送先ライト制御部１５０の動作を示すフローチャートである。なお、図１３は、図９におけるＳ１３又はＳ１４における転送先ライト制御部１５０の動作を示す。
Ｓ５１では、転送先ライト制御部１５０がデータ非破壊制御部１６０から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をＳ５２へ進め、デクリメント転送と判定した場合、処理をＳ５３へ進める。
Ｓ５２及びＳ５３では、転送先ライト制御部１５０が１つのバーストライトコマンドを転送先ライトコマンドとして生成する。バーストライトコマンドは、図３に基づき説明したように、単位量のデータづつ所定個の単位量のデータをライト開始アドレスからアドレス値の昇順に書き込むコマンドである。
Ｓ５２，Ｓ５３に続いて、Ｓ５４では、転送先ライト制御部１５０が、バッファリード制御部１４０がリードアクセス可能か否か判定する条件と同じ条件により、ライトアクセス可能か否か判定する。つまり、転送先ライト制御部１５０は、（１）転送先ライトコマンドによって書き込まれるだけのデータが内部バッファ１３０に格納されており、かつ、（２）データ非破壊制御部１６０から転送先ライト可能指示を受信した場合に、ライトアクセス可能と判定する。ライトアクセス可能と判定した場合（Ｓ５４でＹＥＳ）、処理をＳ５５へ進める。一方、ライトアクセス不可能と判定した場合（Ｓ５４でＮＯ）、Ｓ５４へ処理を戻し、所定の時間経過後再びライトアクセス可能か否か判定する。
Ｓ５５では、転送先ライト制御部１５０が生成した転送先ライトコマンドをメモリ３００に対して発行して、転送先領域へデータを書き込む。
そして、Ｓ５６では、転送先ライト制御部１５０が、転送サイズ分のデータを書き込む転送先ライトコマンドをメモリ３００へ送信したか否かにより、メモリ３００へのライトアクセスを終了するか否か判定する。ライトアクセスを終了すると判定した場合（Ｓ５６でＹＥＳ）、処理を終了する。一方、ライトアクセスを終了しないと判定した場合（Ｓ５６でＮＯ）、処理をＳ５１へ戻し、次の転送先ライトコマンドを生成し、メモリ３００へ送信して、データを書き込む。
【００３４】
なお、Ｓ５２では、転送先ライト制御部１５０は、インクリメント方向にバーストライトコマンドを生成する。つまり、バーストライトコマンドのライト開始アドレスのアドレス値が昇順になるように、バーストライトコマンドを生成する。
一方、Ｓ５３では、転送先ライト制御部１５０は、デクリメント方向にバーストライトコマンドを生成するということである。つまり、バーストライトコマンドのライト開始アドレスのアドレス値が降順になるように、バーストライトコマンドを生成する。
【００３５】
図１４は、実施の形態１に係るデータ非破壊制御部１６０の動作を示すフローチャートである。なお、図１４は、図９におけるＳ１３又はＳ１４におけるデータ非破壊制御部１６０の動作を示す。
Ｓ６１では、データ非破壊制御部１６０が、転送タイプ設定レジスタ１６１に設定された転送タイプに従い、インクリメント転送かデクリメント転送かを判定する。デクリメント転送と判定した場合、処理をＳ６２へ進め、インクリメント転送と判定した場合、処理をＳ６６へ進める。
Ｓ６２では、データ非破壊制御部１６０が、バッファライト周期カウント部１７０がカウントしたバッファライト周期カウンタ値が、バッファリード周期カウント部１８０がカウントしたバッファリード周期カウンタ値より大きいか否かを判定する。バッファライト周期カウンタ値がバッファリード周期カウンタ値より大きくない場合（Ｓ６２でＮＯ）、処理をＳ６３へ進め、バッファライト周期カウンタ値がバッファリード周期カウンタ値より大きい場合（Ｓ６２でＹＥＳ）、処理をＳ６６へ進める。
Ｓ６３では、データ非破壊制御部１６０が、バッファライト周期カウント部１７０がカウントしたバッファライト周期カウンタ値が、バッファリード周期カウント部１８０がカウントしたバッファリード周期カウンタ値より小さいか否かを判定する。バッファライト周期カウンタ値がバッファリード周期カウンタ値より小さくない場合（Ｓ６３でＮＯ）、処理をＳ６４へ進める。バッファライト周期カウンタ値がバッファリード周期カウンタ値より小さい場合（Ｓ６３でＹＥＳ）、処理をＳ６５へ進める。
Ｓ６４では、データ非破壊制御部１６０が、バッファライト完了ポインタ設定レジスタ１６２に設定されたバッファライト完了ポインタが示すアドレス値が、バッファリードポインタ設定レジスタ１６３に設定されたバッファリードポインタが示すアドレス値以下か否かを判定する。バッファライト完了ポインタが示すアドレス値がバッファリードポインタが示すアドレス値以下でない場合（Ｓ６４でＮＯ）、処理をＳ６５へ進める。一方、バッファライト完了ポインタが示すアドレス値がバッファリードポインタが示すアドレス値以下である場合（Ｓ６４でＹＥＳ）、処理をＳ６６へ進める。
Ｓ６５では、データ非破壊制御部１６０は、バッファ読み出しの準備が未完了であると判定し、転送先ライト可能指示を送信しない。一方、Ｓ６６では、データ非破壊制御部１６０は、バッファ読み出しの準備が完了したと判定し、バッファリード制御部１４０と転送先ライト制御部１５０とへ転送先ライト可能指示を送信する。
Ｓ６７では、データ非破壊制御部１６０は、転送サイズ分のデータの転送が完了したか否かにより、処理を終了するか否か判定する。処理を終了すると判定した場合（Ｓ６７でＹＥＳ）、処理を終了する。一方、処理を終了しないと判定した場合（Ｓ６７でＮＯ）、処理をＳ６１へ戻し、再びバッファの準備が完了したか否かを判定する。
【００３６】
つまり、インクリメント転送の場合、常にバッファ準備完了と判定される。
一方、デクリメント転送の場合、
（１）「バッファライト周期カウンタ値＞バッファリード周期カウンタ値」が成立したとき、及び、（２）「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」が成立し、かつ、「バッファライト完了ポインタが示すアドレス値≦バッファリードポインタが示すアドレス値」が成立したとき、バッファ準備完了と判定される。
【００３７】
図１５は、実施の形態１に係るバッファライト周期カウント部１７０の動作を示すフローチャートである。なお、図１５は、図９におけるＳ１３又はＳ１４におけるバッファライト周期カウント部１７０の動作を示す。
Ｓ７１では、バッファライト周期カウント部１７０が、データ非破壊制御部１６０から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。デクリメント転送と判定した場合、処理をＳ７２へ進め、インクリメント転送と判定した場合、処理をＳ７４へ進める。
Ｓ７２では、バッファライト周期カウント部１７０が、バッファライト制御部１２０が生成したバッファライト完了ポインタがラップアラウンドしたか否かを判定する。ラップアラウンドしたと判定した場合（Ｓ７２でＹＥＳ）、処理をＳ７３に進める。ラップアラウンドしなかったと判定した場合（Ｓ７２でＮＯ）、処理をＳ７４へ進める。
Ｓ７３では、バッファライト周期カウント部１７０が、カウンタを＋１カウントアップする。
Ｓ７４では、バッファライト周期カウント部１７０が、転送サイズ分のデータの転送が完了したか否かにより、処理を終了するか否か判定する。処理を終了すると判定した場合（Ｓ７４でＹＥＳ）、処理を終了する。一方、処理を終了しないと判定した場合（Ｓ７４でＮＯ）、処理をＳ７１へ戻し、再びカウンタをカウントアップするか否かを判定する。
【００３８】
図１６は、実施の形態１に係るバッファリード周期カウント部１８０の動作を示すフローチャートである。なお、図１６は、図９におけるＳ１３又はＳ１４におけるバッファリード周期カウント部１８０の動作を示す。
Ｓ８１では、バッファリード周期カウント部１８０が、データ非破壊制御部１６０から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。デクリメント転送と判定した場合、処理をＳ８２へ進め、インクリメント転送と判定した場合、処理をＳ８４へ進める。
Ｓ８２では、バッファリード周期カウント部１８０が、バッファリード制御部１４０が生成したバッファリードポインタがラップアラウンドしたか否かを判定する。ラップアラウンドしたと判定した場合（Ｓ８２ではＹＥＳ）、処理をＳ８３に進める。ラップアラウンドしなかったと判定した場合（Ｓ８２ではＮＯ）、処理をＳ８４へ進める。
Ｓ８３では、バッファリード周期カウント部１８０が、カウンタを＋１カウントアップする。
Ｓ８４では、バッファリード周期カウント部１８０が、転送サイズ分のデータの転送が完了したか否かにより、処理を終了するか否か判定する。処理を終了すると判定した場合（Ｓ８４でＹＥＳ）、処理を終了する。一方、処理を終了しないと判定した場合（Ｓ８４でＮＯ）、処理をＳ８１へ戻し、再びカウンタをカウントアップするか否かを判定する。
【００３９】
次に、ＤＭＡ転送制御装置１００の具体的な動作例を説明する。
図１７から図２１は、内部バッファ１３０のサイズより大きいサイズのデータをＤＭＡ転送し、バッファライト完了ポインタが先にラップアラウンドしたときのＤＭＡ転送時におけるデータの変化を示す図である。つまり、図１７から図２１は、「バッファライト周期カウンタ値＞バッファリード周期カウンタ値」となる場合におけるデータの変化を示す図である。
図１７から図２１の例では、内部バッファ１３０のサイズを６４バイトとし、１マス２バイトを示す。また、図１７から図２１の転送元と転送先は同じデバイスとし、１マスは２バイトを示す。
図１７から図２１の例では、転送元のアドレス００ｈ〜５８ｈの領域のデータを転送先のアドレス２０ｈから７８ｈの領域にデクリメント転送する。ＤＭＡ転送制御装置１００が転送元へ、リード１（４バーストリード）、リード２（４バーストリード）、リード３（４バーストリード）の順番で発行する。また、ＤＭＡ転送制御装置１００が転送先へ、ライト１（４バーストライト）、ライト２（４バーストライト）、ライト３（４バーストライト）の順番で発行する。
図１７から図２１の転送元の右横に示すリード順番は、ＤＭＡ転送制御装置１００がリードデータを取得する順番を示し、Ｒ１〜Ｒ１２の順番にリードデータを受信し、同様の順番に内部バッファ１３０に書き込む。転送先の右横に示すライト順番は、ＤＭＡ転送制御装置１００が転送先にデータを出力する順番を示し、Ｗ１〜Ｗ１２の順番に内部バッファ１３０からライトデータを受信し、同様の順番に転送先に書き込む。
図１７から図２１のバッファライト完了ポインタは内部バッファ１３０でデータが準備できた領域を、バッファリードポインタは内部バッファ１３０でリードする領域を示す。バッファライト周期カウンタはバッファライト完了ポインタのラップアラウンド回数を、バッファリード周期カウンタはバッファリードポインタのラップアラウンド回数を示す。両ポインタとも、ラップアラウンドするたびに＋１づつカウントアップする。
【００４０】
まず、Ｓ１１で、ＤＭＡ転送制御装置１００には、以下の設定情報が設定される。
転送元アドレス：００ｈ
転送先アドレス：２０ｈ
転送サイズ：９６バイト
転送タイプ：デクリメント転送
【００４１】
次に、Ｓ１２で、データ非破壊制御部１６０により各制御部及び各カウント部へデクリメント転送であることが通知される。そして、Ｓ１４へ進み、デクリメント転送によるＤＭＡ転送が実行される。
【００４２】
図１７に示す手順１では、転送元リード制御部１１０が、転送元のアドレス４０ｈ〜５８ｈの領域に対してリード１（４バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は内部バッファ１３０へ、リード１に対応するバッファライト１を発行し、アドレス２０ｈ〜３８ｈの領域にリードデータを書き込む。バッファライト制御部１２０は、バッファライト１が完了したら、バッファライト完了ポインタを２０ｈに更新する。
バッファリード制御部１４０は、バッファリードポインタを、２０ｈ（転送先へ発行するライト１（４バーストライト）で出力するデータの読み出し領域）に設定する。
【００４３】
図１８に示す手順２では、転送元リード制御部１１０は、転送元のアドレス２０ｈ〜３８ｈの領域に対してリード２（４バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は内部バッファ１３０へ、リード２に対応するバッファライト２を発行し、アドレス００ｈ〜１８ｈの領域にリードデータを書き込む。バッファライト制御部１２０は、バッファライト２が完了したら、バッファライト完了ポインタを００ｈに更新する。
上記の転送元リードと並列に、データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス２０ｈ〜３８ｈの領域に対してバッファリード１を発行して転送先ライトデータを読み出す。転送先ライト制御部１５０は、転送先のアドレス６０ｈ〜７８ｈの領域に対してライト１（４バーストライト）を発行する。
【００４４】
図１９に示す手順３では、転送元リード制御部１１０は、転送元のアドレス００ｈ〜１８ｈの領域に対して、リード３（４バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は内部バッファ１３０へ、リード３に対応するバッファライト３を発行し、アドレス２０ｈ〜３８ｈの領域にリードデータを書き込む。バッファライト３が完了したら、バッファライト完了ポインタが２０ｈに更新し、ラップアラウンドが発生する。バッファライト周期カウント部１７０は、バッファライト完了ポインタのラップアラウンドを検出し、バッファライト周期カウンタ値を＋１カウントアップする。
バッファリード制御部１４０は、バッファリード１を完了したら、バッファリードポインタを００ｈに更新する。データ非破壊制御部１６０は、「バッファライト周期カウンタ値＞バッファリード周期カウンタ値」を検出し、データ準備完了と判定し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス００ｈ〜１８ｈの領域に対してバッファリード２を発行する。転送先ライト制御部１５０は、転送先のアドレス４０ｈ〜５８ｈへの領域に対してライト２（４バーストライト）を発行する。
【００４５】
図２０に示す手順４では、バッファリード制御部１４０は、バッファリード２を完了したら、バッファリードポインタを２０ｈに更新し、ラップアラウンドが発生する。バッファリード周期カウント部１８０はラップアラウンドを検出し、バッファリード周期カウンタ値を＋１カウントアップする。データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、データ準備完了と判定し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス２０ｈ〜３８ｈの領域に対してバッファリード３を発行する。転送先ライト制御部１５０は、転送先のアドレス２０ｈ〜３８ｈへの領域に対してライト３（４バーストライト）を発行する。
【００４６】
図２１に示す手順５では、ＤＭＡ転送結果を示す。転送先に示すように、データ破壊が発生することなく、データの転送が完了している。
【００４７】
図２２から図２６は、内部バッファ１３０のサイズより大きいサイズのデータをＤＭＡ転送し、バッファリードポインタが先にラップアラウンドしたときのＤＭＡ転送時におけるデータの変化を示す図である。つまり、図２２から図２６は、「バッファライト周期カウンタ値＜バッファリード周期カウンタ値」となる場合におけるデータの変化を示す図である。
図２２から図２６の例では、内部バッファ１３０のサイズを６４バイトとし、１マス２バイトを示す。また、図２２から図２６の転送元と転送先は同じデバイスとし、１マスは２バイトを示す。
図２２から図２６の例では、転送元のアドレス０８ｈ〜５８ｈの領域のデータを転送先のアドレス２０ｈから７０ｈの領域にデクリメント転送する。ＤＭＡ転送制御装置１００が転送元へ、リード１（４バーストリード）、リード２（４バーストリード）、リード３（３バーストリード）の順番で発行する。また、ＤＭＡ転送制御装置１００が転送先へ、ライト１（３バーストライト）、ライト２（４バーストライト）、ライト３（４バーストライト）の順番で発行する。なお、リード先、ライト先のアドレスが３２バイト境界を跨いだ場合、端数処理として３バースト以下のバースト転送コマンドを発行する。
図２２から図２６の転送元の右横に示すリード順番は、ＤＭＡ転送制御装置１００がリードデータを取得する順番を示し、Ｒ１〜Ｒ１１の順番にリードデータを受信し、同様の順番に内部バッファ１３０に書き込む。転送先の右横に示すライト順番は、ＤＭＡ転送制御装置１００が転送先にデータを出力する順番を示し、Ｗ１〜Ｗ１１の順番に内部バッファ１３０ライトデータを受信し、同様の順番に転送先に書き込む。
図２２から図２６のバッファライト完了ポインタは内部バッファ１３０でデータが準備できた領域を、バッファリードポインタは内部バッファ１３０でリードする領域を示す。バッファライト周期カウンタはバッファライト完了ポインタのラップアラウンド回数を、バッファリード周期カウンタはバッファリードポインタのラップアラウンド回数を示す。両ポインタとも、ラップアラウンドするたびに＋１づつカウントアップする。
【００４８】
まず、Ｓ１１で、ＤＭＡ転送制御装置１００には、以下の設定情報が設定される。
転送元アドレス：０８ｈ
転送先アドレス：２０ｈ
転送サイズ：８８バイト
転送タイプ：デクリメント転送
次に、Ｓ１２で、データ非破壊制御部１６０により各制御部及び各カウント部へデクリメント転送であることが通知される。そして、Ｓ１４へ進み、デクリメント転送によるＤＭＡ転送が実行される。
【００４９】
図２２に示す手順１では、転送元リード制御部１１０が、転送元のアドレス４０ｈ〜５８ｈの領域に対してリード１（４バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は、内部バッファ１３０へリード１に対応するバッファライト１を発行し、アドレス２０ｈ〜３８ｈの領域にリードデータを書き込む。バッファライト１が完了したら、バッファライト制御部１２０は、バッファライト完了ポインタを２０ｈに更新する。
バッファリード制御部１４０は、バッファリードポインタを、転送先へ発行するライト１（３バーストライト）で出力するデータの読み出し領域（２８ｈ）に設定する。データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス２８ｈ〜３８ｈの領域に対してバッファリード１を発行して転送先ライトデータを読み出す。転送先ライト制御部１５０は、転送先のアドレス６０ｈ〜７０ｈの領域に対してライト１（３バーストライト）を発行する。
【００５０】
図２３に示す手順２では、転送元リード制御部１１０は、転送元のアドレス２０ｈ〜３８ｈの領域に対してリード２（４バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は、内部バッファ１３０へリード２に対応するバッファライト２を発行し、アドレス００ｈ〜１８ｈの領域にリードデータを書き込む。バッファライト２が完了したら、バッファライト制御部１２０は、バッファライト完了ポインタを００ｈに更新する。
バッファリード制御部１４０は、バッファリード１が完了したら、バッファリードポインタを０８ｈに更新する。データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス０８ｈ〜２０ｈの領域に対してバッファリード２を発行して転送先ライトデータを読み出す。転送先ライト制御部１５０は、転送先のアドレス４０ｈ〜５８ｈの領域に対してライト２（４バーストライト）を発行する。
【００５１】
図２４に示す手順３では、転送元リード制御部１１０は、転送元のアドレス０８ｈ〜１８ｈの領域に対して、リード３（３バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は、内部バッファ１３０へリード３に対応するバッファライト３を発行し、アドレス２８ｈ〜３８ｈの領域にリードデータを書き込む。ここでは、バッファライト３が未完了であり、バッファライト完了ポインタは更新されていないとする。
バッファリード制御部１４０は、バッファリード２を完了したので、バッファリードポインタを２８ｈに更新し、ラップアラウンドが発生する。バッファリード周期カウント部１８０はラップアラウンドを検出し、バッファリード周期カウンタ値を＋１カウントアップする。データ非破壊制御部１６０は、「バッファライト周期カウンタ値＜バッファリード周期カウンタ値」を検出し、データ準備未完了と判定し、転送先ライト可能指示を出力しない（転送先ライト不許可）。バッファリード制御部１４０は、転送先ライト可能指示を検出しないので、内部バッファ１３０に対する次のバッファリードを発行しない。転送先ライト制御部１５０も同様に、転送先に対して次のライト３（４バーストライト）を発行しない。
【００５２】
図２５に示す手順４では、バッファライト３が完了する。そして、バッファライト制御部１２０は、バッファライト完了ポインタを２８ｈに更新し、ラップアラウンドが発生する。バッファライト周期カウント部１７０は、バッファライト完了ポインタのラップアラウンドを検出し、バッファライト周期カウンタ値を＋１カウントアップする。
データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、データ準備完了と判定し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス２８ｈ〜００ｈの領域に対してバッファリード３を発行して転送先ライトデータを読み出す。転送先ライト制御部１５０は、転送先のアドレス２０ｈ〜３８ｈの領域に対してライト３（４バーストライト）を発行する。
【００５３】
図２６に示す手順５では、ＤＭＡ転送結果を示す。転送先に示すように、データ破壊が発生することなく、データの転送が完了している。
【００５４】
図２７から図３１は、内部バッファ１３０のサイズより小さいサイズのデータをＤＭＡ転送し、両ポインタがラップアラウンドしなかったときのＤＭＡ転送時におけるデータの変化を示す図である。つまり、図２７から図３１は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」となる場合におけるデータの変化を示す図である。なお、ここでは、簡略化のため、両ポインタがラップアラウンドしなかったときを具体例として挙げているが、両ポインタが同じ回数のラップアラウンドした場合でも同様の効果が得られる。
図２７から図３１の例では、内部バッファ１３０のサイズを６４バイトとし、１マス２バイトを示す。また、図２７から図３１の転送元と転送先は同じデバイスとし、１マスは２バイトを示す。
図２７から図３１の例では、転送元のアドレス００ｈ〜３０ｈの領域のデータを転送先のアドレス１８ｈ〜４８ｈの領域にデクリメント転送する。ＤＭＡ転送制御装置１００が転送元へ、リード１（３バーストリード）、リード２（４バーストリード）の順番で発行する。ＤＭＡ転送制御装置１００が転送先へ、ライト１（４バーストライト）、ライト２（３バーストライト）の順番で発行する。なお、リード先、ライト先のアドレスが３２バイト境界を跨いだ場合、端数処理として３バースト以下のバースト転送コマンドを発行する。
図２７から図３１の転送元の右横に示すリード順番は、ＤＭＡ転送制御装置１００がリードデータを取得する順番を示し、Ｒ１〜Ｒ７の順番にリードデータを受信し、同様の順番に内部バッファ１３０に書き込む。転送先の右横に示すライト順番は、ＤＭＡ転送制御装置１００が転送先にデータを出力する順番を示し、Ｗ１〜Ｗ７の順番に内部バッファ１３０からライトデータを受信し、同様の順番に転送先に書き込む。
図２７から図３１のバッファライト完了ポインタは内部バッファ１３０でデータが準備できた領域を、バッファリードポインタは内部バッファ１３０でリードする領域を示す。バッファライト周期カウンタはバッファライト完了ポインタのラップアラウンド回数を、バッファリード周期カウンタはバッファリードポインタのラップアラウンド回数を示す。両ポインタとも、ラップアラウンドするたびに＋１づつカウントアップする。
【００５５】
まず、Ｓ１１で、ＤＭＡ転送制御装置１００には、以下の設定情報が設定される。
転送元アドレス：００ｈ
転送先アドレス：３０ｈ
転送サイズ：５６バイト
転送タイプ：デクリメント転送
次に、Ｓ１２で、データ非破壊制御部１６０により各制御部及び各カウント部へデクリメント転送であることが通知される。そして、Ｓ１４へ進み、デクリメント転送によるＤＭＡ転送が実行される。
【００５６】
図２７に示す手順１では、転送元リード制御部１１０が、転送元のアドレス２０ｈ〜３０ｈの領域に対してリード１（３バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は内部バッファ１３０へ、リード１に対応するバッファライト１を発行し、アドレス２８ｈ〜３８ｈの領域にリードデータを書き込む。バッファライト１が完了したら、バッファライト制御部１２０は、バッファライト完了ポインタを２８ｈに更新する。
バッファリード制御部１４０は、バッファリードポインタを、転送先へ発行するライト１（４バーストライト）で出力するデータの読み出し領域（２０ｈ）に設定する。
【００５７】
図２８に示す手順２では、転送元リード制御部１１０は、転送元のアドレス００ｈ〜１８ｈの領域に対してリード２（４バーストリード）を発行する。転送元からリードデータを受信したら、バッファライト制御部１２０は、内部バッファ１３０へリード２に対応するバッファライト２を発行し、アドレス０８ｈ〜２０ｈの領域にリードデータを書き込む。ここでは、バッファライト２が未完了であり、バッファライト制御部１２０は、バッファライト完了ポインタは更新されていないとする。
データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値＞バッファリードポインタ値」を検出し、データ準備未完了と判定し、転送先ライト可能指示を出力しない。バッファリード制御部１４０は、転送先ライト可能指示を未検出なので、バッファリード１を発行しない。転送先ライト制御部１５０も同様に、ライト１を発行しない。なお、手順２の状態では、次のライト１に必要なデータ量（４バースト分）はあるが、必要なデータ種類（１３〜２８のデータ）は揃っていないので、データ準備未完了と判断する。
【００５８】
図２９に示す手順３では、バッファライト２が完了し、バッファライト制御部１２０は、バッファライト完了ポインタを０８ｈに更新する。
データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、データ準備完了と判定し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス２０ｈ〜３８ｈの領域に対してバッファリード１を発行して転送先ライトデータを読み出す。転送先ライト制御部１５０は、転送先のアドレス３０ｈ〜４８ｈの領域に対してライト１（４バーストライト）を発行する。
【００５９】
図３０に示す手順４では、バッファリード制御部１４０は、バッファリード１が完了すると、バッファリードポインタを０８ｈに更新する。データ非破壊制御部１６０は、「バッファライト周期カウンタ値＝バッファリード周期カウンタ値」かつ「バッファライト完了ポインタ値≦バッファリードポインタ値」を検出し、データ準備完了と判定し、転送先ライト可能指示を出力する。バッファリード制御部１４０は、転送先ライト可能指示を検出したら、内部バッファ１３０のアドレス０８ｈ〜１８ｈの領域に対してバッファリード２を発行して転送先ライトデータを読み出す。転送先ライト制御部１５０は、転送先のアドレス１８ｈ〜２８ｈの領域に対してライト２（３バーストライト）を発行する。
【００６０】
図３１に示す手順５では、ＤＭＡ転送結果を示す。転送先に示すように、データ破壊が発生することなく、データの転送が完了している。
【００６１】
実施の形態２．
実施の形態１では、ＣＰＵ２００がインクリメント転送を行うか、デクリメント転送を行うかを指定した。つまり、ＣＰＵ２００側でインクリメント転送を行うべきか、デクリメント転送を行うべきかの判断をする必要があった。
実施の形態２では、ＤＭＡ転送制御装置１００が転送元領域と転送先領域との重なりの状態に応じて、インクリメント転送を行うべきか、デクリメント転送を行うべきかを適切に判断する方法について説明する。
【００６２】
実施の形態２に係るＤＭＡ転送制御装置１００は、実施の形態１に係るＤＭＡ転送制御装置１００と、データ非破壊制御部１６０の構成のみ異なる。
【００６３】
図３２は、実施の形態２に係るデータ非破壊制御部１６０の構成図である。実施の形態２に係るデータ非破壊制御部１６０は、実施の形態１に係るデータ非破壊制御部１６０が備える転送タイプ設定レジスタ１６１を備えていない。その代わりに、実施の形態２に係るデータ非破壊制御部１６０は、データ非破壊機能ＯＮ／ＯＦＦ設定レジスタ１９１、転送元アドレス設定レジスタ１９２、転送先アドレス設定レジスタ１９３、転送サイズ設定レジスタ１９４、転送タイプ判断部１９５を備える。
データ非破壊機能ＯＮ／ＯＦＦ設定レジスタ１９１には、データ非破壊機能をＯＮ（有効）にするか、ＯＦＦ（無効）にするかが設定される。
転送元アドレス設定レジスタ１９２には、転送元領域の先頭アドレスが設定される。転送先アドレス設定レジスタ１９３には、転送先領域の先頭アドレスが設定される。転送サイズ設定レジスタ１９４には、転送データのサイズが設定される。
転送タイプ判断部１９５は、データ非破壊機能ＯＮ／ＯＦＦ設定レジスタ１９１にＯＮと設定されている場合、以下のように転送タイプを判断し、各制御部へ通知する。
（Ａ）転送元領域と転送先領域とが重ならない場合、インクリメント転送と判断する。
（Ｂ）転送元領域と転送先領域とが重なる場合、以下の（ａ）から（ｃ）のように判断する。
（ａ）転送元領域と転送先領域とが全く同じ領域ならインクリメント転送と判断する。
（ｂ）転送元アドレス設定レジスタ１９２に設定されたアドレス（転送元領域の先頭アドレス）のアドレス値が、転送先アドレス設定レジスタ１９３に設定されたアドレス（転送先領域の先頭アドレス）のアドレス値より小さいならデクリメント転送と判断する。
（ｃ）転送元アドレス設定レジスタ１９２に設定されたアドレス（転送元領域の先頭アドレス）のアドレス値が、転送先アドレス設定レジスタ１９３に設定されたアドレス（転送先領域の先頭アドレス）のアドレス値より大きいならインクリメント転送と判断する。
一方、転送タイプ判断部１９５は、データ非破壊機能ＯＮ／ＯＦＦ設定レジスタ１９１にＯＦＦと設定されている場合、常にインクリメント転送と各制御部へ通知する。
【００６４】
図３３は、実施の形態２に係るＤＭＡ転送制御装置１００全体の動作を示すフローチャートである。
Ｓ７１は、図９のＳ１１と同様である。この際、データ非破壊機能をＯＮとするかＯＦＦとするかもレジスタに設定される。
Ｓ７２では、データ非破壊制御部１６０がレジスタ（データ非破壊機能ＯＮ／ＯＦＦ設定レジスタ１９１）の設定がＯＮか否かを判定する。ＯＮである場合、処理をＳ７３へ進め、ＯＦＦである場合、インクリメント転送であることを各制御部へ通知して、処理をＳ７５へ進める。
Ｓ７３では、データ非破壊制御部１６０がインクリメント転送であるか、デクリメント転送であるかを判定する。デクリメント転送である場合、デクリメント転送であることを各制御部へ通知して、処理をＳ７４へ進める。一方、インクリメント転送である場合、インクリメント転送であることを各制御部へ通知して、処理をＳ７５へ進める。
Ｓ７４では、ＤＭＡ転送制御装置１００がメモリ３００に対してデクリメント転送を行う。一方、Ｓ７５では、ＤＭＡ転送制御装置１００がメモリ３００に対してインリメント転送を行う。
そして、Ｓ７６では、ＤＭＡ転送制御装置１００が指定されたデータ長のデータを転送し終えた場合等、ＤＭＡ転送停止要因があったときに転送動作を停止する。
【００６５】
以上のように、実施の形態２に係るＤＭＡ転送制御装置１００によれば、ＣＰＵ２００が転送タイプを指示することなく、ＤＭＡ転送制御装置１００側で適切な転送タイプを判断した上で、データ転送を行うことができる。
【００６６】
なお、以上の説明において、各制御部は、例えば、回路等によって構成されており、「〜部」を「〜回路」と読み代えても構わない。
【符号の説明】
【００６７】
１０  ＤＭＡ転送システム、１００  ＤＭＡ転送制御装置、１１０  転送元リード制御部、１２０  バッファライト制御部、１３０  内部バッファ、１４０  バッファリード制御部、１５０  転送先ライト制御部、１６０  データ非破壊制御部、１６１  転送タイプ設定レジスタ、１６２  バッファライト完了ポインタ設定レジスタ、１６３  バッファリードポインタ設定レジスタ、１６４  第１バッファ準備完了判断部、１６５  第２バッファ準備完了判断部、１６６  ラップアラウンド回数一致判断部、１６７  セレクタ、１７０  バッファライト周期カウント部、１７１  ラップアラウンド検出部、１７２  ラップアラウンド回数カウント部、１８０  バッファリード周期カウント部、１８１  ラップアラウンド検出部、１８２  ラップアラウンド回数カウント部、１９１  データ非破壊機能ＯＮ／ＯＦＦ設定レジスタ、１９２  転送元アドレス設定レジスタ、１９３  転送先アドレス設定レジスタ、１９４  転送サイズ設定レジスタ、１９５  転送タイプ判断部、２００  ＣＰＵ、３００  メモリ。
【図１】
2013129031.tif 000003
【図２】
2013129031.tif 000004
【図３】
2013129031.tif 000005
【図４】
2013129031.tif 000006
【図５】
2013129031.tif 000007
【図６】
2013129031.tif 000008
【図７】
2013129031.tif 000009
【図８】
2013129031.tif 000010
【図９】
2013129031.tif 000011
【図１０】
2013129031.tif 000012
【図１１】
2013129031.tif 000013
【図１２】
2013129031.tif 000014
【図１３】
2013129031.tif 000015
【図１４】
2013129031.tif 000016
【図１５】
2013129031.tif 000017
【図１６】
2013129031.tif 000018
【図１７】
2013129031.tif 000019
【図１８】
2013129031.tif 000020
【図１９】
2013129031.tif 000021
【図２０】
2013129031.tif 000022
【図２１】
2013129031.tif 000023
【図２２】
2013129031.tif 000024
【図２３】
2013129031.tif 000025
【図２４】
2013129031.tif 000026
【図２５】
2013129031.tif 000027
【図２６】
2013129031.tif 000028
【図２７】
2013129031.tif 000029
【図２８】
2013129031.tif 000030
【図２９】
2013129031.tif 000031
【図３０】
2013129031.tif 000032
【図３１】
2013129031.tif 000033
【図３２】
2013129031.tif 000034
【図３３】
2013129031.tif 000035
【手続補正書】
【提出日】平成26年3月27日(2014.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送装置であり、
前記転送元領域に記憶されたデータを取得してリングバッファへ書き込むバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記リングバッファから読み出すバッファリード制御部と、
前記バッファリード制御部が読み出したデータを前記転送先領域に書き込む転送先ライト制御部であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御部と、
前記転送先ライト制御部が前記デクリメント転送を実行する場合に、前記バッファライト制御部によるラップアラウンドの回数と、前記バッファリード制御部によるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とするデータ転送装置。
【請求項２】
前記データ非破壊制御部は、さらに、前記バッファライト制御部がデータの書き込みを完了した前記リングバッファにおけるアドレス値と、前記バッファリード制御部がデータを読み出そうとしている前記リングバッファにおけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定する
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記データ転送装置は、さらに、
単位量のデータづつ所定個の単位量のデータをリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力する転送元リード制御部
を備え、
前記バッファライト制御部は、前記転送元リード制御部が出力した各リードコマンドについて、前記転送元リード制御部がリードコマンドを出力した順に、そのリードコマンドによって読み出されたデータを単位量づつ取得して、そのリードコマンドにおけるリード開始アドレスに対応するリングバッファにおけるアドレスからアドレス値の昇順に書き込むとともに、そのリードコマンドによって読み出されたデータの前記リングバッファへの書き込みが終了した場合に、前記リード開始アドレスに対応するリングバッファにおけるアドレスにライト完了ポインタを設定し、
前記転送先ライト制御部は、単位量のデータづつ所定個の単位量のデータをライト開始アドレスからアドレス値の昇順に書き込むライトコマンドを、前記ライト開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
前記バッファリード制御部は、前記転送先ライト制御部が次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記リングバッファにおけるアドレスにリードポインタを設定し、
前記データ非破壊制御部は、前記バッファライト制御部によるラップアラウンドの回数が前記バッファリード制御部によるラップアラウンドの回数よりも多い場合と、前記バッファライト制御部によるラップアラウンドの回数と前記バッファリード制御部によるラップアラウンドの回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記リードポインタが設定されたアドレスからアドレス値の昇順に単位量づつデータを読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、次のライトコマンドを出力する
ことを特徴とする請求項２に記載のデータ転送装置。
【請求項４】
前記データ非破壊制御部は、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には、デクリメント転送を行い、他の場合には、インクリメント転送を行うと判定し、
前記転送元リード制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が降順になるように前記リードコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が昇順になるように前記リードコマンドを複数個生成して順に出力し、
前記転送先ライト制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が降順になるように前記ライトコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が昇順になるように前記ライトコマンドを複数個生成して順に出力し、
前記データ非破壊制御部は、デクリメント転送を行うと判定した場合、前記バッファライト制御部によるラップアラウンドの回数が前記バッファリード制御部によるラップアラウンドの回数よりも多い場合と、前記バッファライト制御部によるラップアラウンドの回数と前記バッファリード制御部によるラップアラウンドの回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定する
ことを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記バッファライト制御部は、リードコマンドによって読み出されたデータをリード用バスを介して取得し、
前記バッファリード制御部は、前記リングバッファから読み出したデータを前記リード用バスとは異なるライト用バスを介して転送先領域へ送信する
ことを特徴とする請求項１から４までのいずれかに記載のデータ転送装置。
【請求項６】
転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送方法であり、
前記転送元領域に記憶されたデータを取得してリングバッファへ書き込むバッファライト制御ステップと、
前記バッファライト制御ステップで書き込んだデータを前記リングバッファから読み出すバッファリード制御ステップと、
前記バッファリード制御ステップで読み出したデータを前記転送先領域に書き込む転送先ライト制御ステップであって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御ステップと、
前記転送先ライト制御ステップで前記デクリメント転送を実行する場合に、前記バッファライト制御ステップにおけるラップアラウンドの回数と、前記バッファリード制御ステップにおけるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御ステップと
を備え、
前記転送先ライト制御ステップでは、書き込みを許可すると前記データ非破壊制御ステップで判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とするデータ転送方法。
【請求項７】
転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送プログラムであり、
前記転送元領域に記憶されたデータを取得してリングバッファへ書き込むバッファライト制御処理と、
前記バッファライト制御処理で書き込んだデータを前記リングバッファから読み出すバッファリード制御処理と、
前記バッファリード制御処理で読み出したデータを前記転送先領域に書き込む転送先ライト制御処理であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御処理と、
前記転送先ライト制御処理で前記デクリメント転送を実行する場合に、前記バッファライト制御処理におけるラップアラウンドの回数と、前記バッファリード制御処理におけるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御処理と
をコンピュータに実行させ、
前記転送先ライト制御処理では、書き込みを許可すると前記データ非破壊制御処理で判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とするデータ転送プログラム。
【手続補正書】
【提出日】平成27年3月25日(2015.3.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
逆方向のバースト転送が定義されていないバス仕様における、転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送装置であり、
所定個の単位量のデータを単位量のデータ毎にリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力する転送元リード制御部と、
前記転送元リード制御部がリードコマンドを出力した順に、前記リードコマンドによって読み出されたデータを単位量毎に取得して、リングバッファへ書き込むとともに、前記リードコマンドによって読み出されたデータの前記リングバッファへの書き込みが終了した場合に、前記リード開始アドレスに対応するリングバッファにおけるアドレスにライト完了ポインタを設定するバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記リングバッファから読み出すバッファリード制御部と、
前記バッファリード制御部が読み出したデータを前記転送先領域に書き込む転送先ライト制御部であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御部と、
前記転送先ライト制御部が前記デクリメント転送を実行する場合に、前記バッファライト制御部によるラップアラウンドの回数と、前記バッファリード制御部によるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記バッファリード制御部は、前記転送先ライト制御部が次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記リングバッファにおけるアドレスにリードポインタを設定し、
前記データ非破壊制御部は、デクリメント転送を行うと判定した場合、前記バッファライト制御部によるラップアラウンドの回数が前記バッファリード制御部によるラップアラウンドの回数よりも多い場合と、前記バッファライト制御部によるラップアラウンドの回数と前記バッファリード制御部によるラップアラウンドの回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とするデータ転送装置。
【請求項２】
前記バッファライト制御部は、リードコマンドによって読み出されたデータをリード用バスを介して取得し、
前記バッファリード制御部は、前記リングバッファから読み出したデータを前記リード用バスとは異なるライト用バスを介して転送先領域へ送信する
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
逆方向のバースト転送が定義されていないバス仕様における、転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送方法であり、
所定個の単位量のデータを単位量のデータ毎にリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力する転送元リード制御ステップと、
前記転送元リード制御ステップで出力した各リードコマンドについて、前記転送元リード制御ステップでリードコマンドを出力した順に、前記リードコマンドによって読み出されたデータを単位量毎に取得して、リングバッファへ書き込むとともに、前記リードコマンドによって読み出されたデータの前記リングバッファへの書き込みが終了した場合に、前記リード開始アドレスに対応するリングバッファにおけるアドレスにライト完了ポインタを設定するバッファライト制御ステップと、
前記バッファライト制御ステップで書き込んだデータを前記リングバッファから読み出すバッファリード制御ステップと、
前記バッファリード制御ステップで読み出したデータを前記転送先領域に書き込む転送先ライト制御ステップであって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御ステップと、
前記転送先ライト制御ステップで前記デクリメント転送を実行する場合に、前記バッファライト制御ステップにおけるラップアラウンドの回数と、前記バッファリード制御ステップにおけるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御ステップと
を備え、
前記バッファリード制御ステップでは、前記転送先ライト制御ステップで次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記リングバッファにおけるアドレスにリードポインタを設定し、
前記データ非破壊制御ステップでは、デクリメント転送を行うと判定した場合、前記バッファライト制御ステップにおけるラップアラウンドの回数が前記バッファリード制御ステップにおけるラップアラウンドの回数よりも多い場合と、前記バッファライト制御ステップにおけるラップアラウンドの回数と前記バッファリード制御ステップにおけるラップアラウンドの回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定し、
前記転送先ライト制御ステップでは、書き込みを許可すると前記データ非破壊制御ステップで判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とするデータ転送方法。
【請求項４】
逆方向のバースト転送が定義されていないバス仕様における、転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送プログラムであり、
所定個の単位量のデータを単位量のデータ毎にリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力する転送元リード制御処理と、
前記転送元リード制御処理で出力した各リードコマンドについて、前記転送元リード制御処理でリードコマンドを出力した順に、前記リードコマンドによって読み出されたデータを単位量毎に取得して、リングバッファへ書き込むとともに、前記リードコマンドによって読み出されたデータの前記リングバッファへの書き込みが終了した場合に、前記リード開始アドレスに対応するリングバッファにおけるアドレスにライト完了ポインタを設定するバッファライト制御処理と、
前記バッファライト制御処理で書き込んだデータを前記リングバッファから読み出すバッファリード制御処理と、
前記バッファリード制御処理で読み出したデータを前記転送先領域に書き込む転送先ライト制御処理であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御処理と、
前記転送先ライト制御処理で前記デクリメント転送を実行する場合に、前記バッファライト制御処理におけるラップアラウンドの回数と、前記バッファリード制御処理におけるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御処理と
をコンピュータに実行させ、
前記バッファリード制御処理では、前記転送先ライト制御処理で次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記リングバッファにおけるアドレスにリードポインタを設定し、
前記データ非破壊制御処理では、デクリメント転送を行うと判定した場合、前記バッファライト制御処理におけるラップアラウンドの回数が前記バッファリード制御処理におけるラップアラウンドの回数よりも多い場合と、前記バッファライト制御処理におけるラップアラウンドの回数と前記バッファリード制御処理におけるラップアラウンドの回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定し、
前記転送先ライト制御処理では、書き込みを許可すると前記データ非破壊制御処理で判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とするデータ転送プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
この発明に係るデータ転送装置は、
逆方向のバースト転送が定義されていないバス仕様における、転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送装置であり、
所定個の単位量のデータを単位量のデータ毎にリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力する転送元リード制御部と、
前記転送元リード制御部がリードコマンドを出力した順に、前記リードコマンドによって読み出されたデータを単位量毎に取得して、リングバッファへ書き込むとともに、前記リードコマンドによって読み出されたデータの前記リングバッファへの書き込みが終了した場合に、前記リード開始アドレスに対応するリングバッファにおけるアドレスにライト完了ポインタを設定するバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記リングバッファから読み出すバッファリード制御部と、
前記バッファリード制御部が読み出したデータを前記転送先領域へ書き込む転送先ライト制御部であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータを昇順方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっている場合には前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送を実行する転送先ライト制御部と、
前記転送先ライト制御部が前記デクリメント転送を実行する場合に、前記バッファライト制御部によるラップアラウンドの回数と、前記バッファリード制御部によるラップアラウンドの回数との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記バッファリード制御部は、前記転送先ライト制御部が次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記リングバッファにおけるアドレスにリードポインタを設定し、
前記データ非破壊制御部は、デクリメント転送を行うと判定した場合、前記バッファライト制御部によるラップアラウンドの回数が前記バッファリード制御部によるラップアラウンドの回数よりも多い場合と、前記バッファライト制御部によるラップアラウンドの回数と前記バッファリード制御部によるラップアラウンドの回数とが同じであり、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合とに、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記デクリメント転送による前記バーストライトコマンドを出力する
ことを特徴とする。
【国際調査報告】
2013129031.tif 000036
2013129031.tif 000037
2013129031.tif 000038
2013129031.tif 000039