JP2012118774A - データ転送装置、データ転送方法及びデータ転送プログラム - Google Patents

データ転送装置、データ転送方法及びデータ転送プログラム Download PDF

Info

Publication number
JP2012118774A
JP2012118774A JP2010268116A JP2010268116A JP2012118774A JP 2012118774 A JP2012118774 A JP 2012118774A JP 2010268116 A JP2010268116 A JP 2010268116A JP 2010268116 A JP2010268116 A JP 2010268116A JP 2012118774 A JP2012118774 A JP 2012118774A
Authority
JP
Japan
Prior art keywords
data
transfer
read
buffer
write
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
Application number
JP2010268116A
Other languages
English (en)
Other versions
JP2012118774A5 (ja
JP5656589B2 (ja
Inventor
Kanako Yamamoto
佳奈子 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2010268116A priority Critical patent/JP5656589B2/ja
Publication of JP2012118774A publication Critical patent/JP2012118774A/ja
Publication of JP2012118774A5 publication Critical patent/JP2012118774A5/ja
Application granted granted Critical
Publication of JP5656589B2 publication Critical patent/JP5656589B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】データの転送元領域と転送先領域とが重なった場合において、バースト転送機能を用いて転送を行った場合であっても、データ破壊の発生を防止することを目的とする。
【解決手段】転送元領域から読み出したデータをバッファ領域へ一旦書き込み、バッファ領域に書き込まれたデータを転送先領域へ書き込む。この際、データの書き込みを完了したバッファ領域におけるアドレス値と、データを読み出そうとしているバッファ領域におけるアドレス値との大小関係に基づき、バッファ領域からのデータ読み出しを制御する。
【選択図】図5

Description

この発明は、転送元領域に記憶されたデータを転送先領域へ転送するデータ転送技術に関する。
データ転送技術には、DMA(Direct Memory Access)転送と呼ばれる技術がある。
DMA転送では、まず、CPU(Central Processing Unit)が、データ転送元アドレス、データ転送先アドレス、データ転送サイズ等の転送に必要なDMA情報をDMA転送制御装置のレジスタに設定する。そして、CPUがDMA転送制御装置へ転送開始を指示すると、DMA転送制御装置はレジスタに設定されたDMA情報に従い転送処理を実行する。DMA転送制御装置は、レジスタに設定された転送サイズ分のデータ転送を完了したら、DMA転送終了割込みをCPUへアサートする。CPUは、DMA転送終了割込みを検知すると、DMA転送制御装置のレジスタの情報を読み込んで、DMA転送の結果やステータスを確認する。
DMA転送制御装置が転送処理を実行している間、CPUによる転送制御の必要はない。そのため、DMA転送では、CPUを経由してデータ転送を行う場合に比べて高速にデータ転送を行うことができる。また、DMA転送では、CPUの負担を減らすことができる。
一般的なDMA転送では、設定されたサイズ(単位量)ごとに必要なデータの読み出しを行ない、その後の書き込みを行う。書き込みの開始タイミングが読み出しの完了後になるため、レイテンシが大きなデバイスへの転送では、転送効率が良くない。
AXI(Advanced eXtensible Interface)バスを使用したDMA転送制御装置がある。
AXIバスは、リード専用バスとライト専用バスとを備えており、リード専用バスを使ったデータ転送元領域からのデータ取得と、ライト専用バスを使ったデータ転送先領域へのデータ転送とをパラレルに実行できる。
また、AXIバスは、バースト転送機能を備えている。バースト転送機能は、1回のリード要求で複数の単位量のリードデータを取得でき、1回のライト要求で複数の単位量のライトが実行できる機能である。
AXIバスを使用したDMA転送制御装置では、上記のリード/ライト専用バスやバースト転送機能を用いることにより、高速転送が可能である。
特開平10−116245号公報 特開2008−83911号公報
DMA転送では、データの転送元領域と転送先領域とが重なった場合、データ破壊が発生する場合がある。特に、バースト転送機能を用いて転送を行った場合、データ破壊を防止することが困難である。
この発明は、データの転送元領域と転送先領域とが重なった場合におけるデータ破壊の発生を防止することを目的とする。特に、バースト転送機能を用いて転送を行った場合であっても、データ破壊の発生を防止することを目的とする。
この発明に係るデータ転送装置は、
転送元領域に記憶されたデータを転送先領域へ転送するデータ転送装置であり、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御部と、
前記転送元リード制御部が出力したリードコマンドによって読み出されたデータを取得してバッファ領域へ書き込むバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記バッファ領域から読み出して、前記転送先領域へ送信するバッファリード制御部と、
前記バッファリード制御部が前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御部と、
前記バッファライト制御部がデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記バッファリード制御部がデータを読み出そうとしている前記バッファ領域におけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、データを前記バッファ領域から読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御部が前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とする。
この発明に係るデータ転送装置よれば、バッファ領域からのデータ読み出しのタイミングを調整することにより、データ破壊の発生を防ぐことができる。
データ破壊が発生する場合の説明図。 データ破壊が発生する場合の説明図。 バースト転送機能を用いた場合におけるデータ転送の順序の説明図。 実施の形態1に係るDMA転送システム10の構成図。 実施の形態1に係るDMA転送制御装置100の構成図。 実施の形態1に係るデータ非破壊制御部160の構成図。 実施の形態1に係るDMA転送制御装置100全体の動作を示すフローチャート。 実施の形態1に係る転送元リード制御部110の動作を示すフローチャート。 実施の形態1に係るバッファライト制御部120の動作を示すフローチャート。 バッファリード制御部140の動作を示すフローチャート。 実施の形態1に係る転送先ライト制御部150の動作を示すフローチャート。 実施の形態1に係るデータ非破壊制御部160の動作を示すフローチャート。 転送元領域と転送先領域とを示す図。 DMA転送の一連の流れ(リードアクセス、ライトアクセス)を示すタイミングチャート。 DMA転送時におけるデータの変化を示す図。 転送元領域と転送先領域とを示す図。 DMA転送の一連の流れ(リードアクセス、ライトアクセス)を示すタイミングチャート。 DMA転送時におけるデータの変化を示す図。 DMA転送時におけるデータの変化を示す図。 実施の形態2に係るデータ非破壊制御部160の構成図。 実施の形態2に係るDMA転送制御装置100全体の動作を示すフローチャート。
実施の形態1.
図1、図2は、データ破壊が発生する場合の説明図である。特に、図1は、データの転送元領域と転送先領域とが順方向にずれている場合の説明図である。図2は、データの転送元領域と転送先領域とが逆方向にずれている場合の説明図である。
図1に基づき、データの転送元領域と転送先領域との一部が重なりつつ、データの転送元領域と転送先領域とが順方向にずれている場合について説明する。転送元領域と転送先領域とが順方向にずれているとは、転送元領域の先頭アドレスのアドレス値が、転送先領域の先頭アドレスのアドレス値よりも小さい場合である。
図1では、転送元領域と転送先領域とが同じデバイスにおける領域であり、領域Bが重なっている。また、図1では、転送元領域の先頭アドレスである領域Aの先頭アドレスのアドレス値は、転送先領域の先頭アドレスである領域Bの先頭アドレスのアドレス値よりも小さく、転送元領域と転送先領域とが順方向にずれている。
この場合、アドレス値の昇順方向(インクリメント方向)へ順次データ転送を行うと、まず、領域Aのデータが領域Bへ書き込まれ、その後、領域Bのデータが領域Cへ書き込まれることになる。この場合、領域Bのデータが領域Cへ書き込まれる前に、領域Bへ領域Aのデータが書き込まれてしまい、元々領域Bに記憶されていたデータが破壊されてしまう。
そこで、この場合、アドレス値の降順方向(デクリメント方向)へ順次データ転送を行うようにする。すると、まず、領域Bのデータが領域Cへ書き込まれ、その後、領域Aのデータが領域Bへ書き込まれる。そのため、データが破壊されることなく、転送が行える。
図2に基づき、データの転送元領域と転送先領域との一部が重なりつつ、データの転送元領域と転送先領域とが逆方向にずれている場合について説明する。転送元領域と転送先領域とが逆方向にずれているとは、転送元領域の先頭アドレスのアドレス値が、転送先領域の先頭アドレスのアドレス値よりも大きい場合である。
図2でも、図1と同様に、転送元領域と転送先領域とが同じデバイスにおける領域であり、領域Bが重なっている。しかし、図2では、転送元領域の先頭アドレスである領域Bの先頭アドレスのアドレス値は、転送先領域の先頭アドレスである領域Aの先頭アドレスのアドレス値よりも大きく、転送元領域と転送先領域とが逆方向にずれている。
この場合、アドレス値の降順方向(デクリメント方向)へ順次データ転送を行うと、まず、領域Cのデータが領域Bへ書き込まれ、その後、領域Bのデータが領域Aへ書き込まれることになる。この場合、領域Bのデータが領域Aへ書き込まれる前に、領域Bへ領域Cのデータが書き込まれてしまい、元々領域Bに記憶されていたデータが破壊されてしまう。
そこで、この場合、アドレス値の昇順方向(インクリメント方向)へ順次データ転送を行うようにする。すると、まず、領域Bのデータが領域Aへ書き込まれ、その後、領域Cのデータが領域Bへ書き込まれる。そのため、データが破壊されることなく、転送が行える。
つまり、転送元領域と転送先領域とが順方向にずれている場合には、アドレス値の降順方向へ順次データ転送を行うデクリメント転送を行えばデータ破壊は発生しない。一方、転送元領域と転送先領域とが逆方向にずれている場合には、アドレス値の昇順方向へ順次データ転送を行うインクリメント転送を行えばデータ破壊は発生しない。
図3は、バースト転送機能を用いた場合におけるデータ転送の順序の説明図である。図3では、バースト転送機能を用いてデクリメント方向のデータ転送を行う場合を示している。
通常のデータ転送では、1回のリード/ライト要求で1個の単位量のデータの転送のみ可能である。これに対して、バースト転送機能を用いた場合、1回のリード/ライト要求で複数個の単位量のデータの転送が可能である。
図3では、データ1〜8の8個の単位量のデータの転送を行うことを想定している。そのため、通常のデータ転送では、8回のリード/ライト要求が必要となる。これに対して、バースト転送機能を用いた場合、2回のリード/ライト要求で転送が可能である。なお、ここでは、1回のリード/ライト要求で4個の単位量のデータの転送が可能な4バースト転送を想定している。
ここで、バーストリードコマンド(トランザクション)の発行順序は、インクリメント方向にもデクリメント方向にもできる。しかし、バーストリードコマンド内におけるデータの読み出し順序は、インクリメント方向にしかできない。そのため、図3に示すように、データ5〜8を読み出す4バーストリードコマンドを1個目、データ1〜4を読み出す4バーストリードコマンドを2個目というデクリメント方向の順にバーストリードコマンドを発行しても、データの読み出し順序は、データ5,6,7,8,1,2,3,4の順になってしまう。つまり、データ8,7,6,5,4,3,2,1の順に読み出すことはできない。
したがって、転送元領域と転送先領域とが順方向にずれている場合において、バースト転送機能を用いてデータ転送を行うと、デクリメント転送を用いてもデータ破壊を防止することはできない。
なお、バーストライトコマンドの場合も、バーストリードコマンドの場合と同様に、バーストライトコマンドの発行順序は、インクリメント方向にもデクリメント方向にもできる。しかし、バーストライトコマンド内におけるデータの書き込み順序は、インクリメント方向にしかできない。
図4は、実施の形態1に係るDMA転送システム10の構成図である。
DMA転送システム10は、DMA転送制御装置100(データ転送装置)、CPU200、メモリ300を備える。
DMA転送制御装置100は、CPU200等の使用者によってレジスタに設定されたDMA情報に従い、メモリ300にアクセスしてデータ転送を行う装置である。
CPU200は、転送元領域を指定する転送元アドレス、転送先領域を指定する転送先アドレス、転送データのサイズを指定する転送サイズ、転送タイプ(インクリメント転送又はデクリメント転送)のDMA情報をDMA転送制御装置100のレジスタに設定し、DMA転送制御装置100にデータ転送を実行させる。ここでは、CPU200がDMA情報を設定するとしたが、CPU200ではなく、他の装置やシステムがDMA情報を設定してもよい。
メモリ300は、データ転送の転送元領域及び転送先領域となる対象リソースである。
図5は、実施の形態1に係るDMA転送制御装置100の構成図である。
なお、図5において、実線はデータが流れるデータ線を表し、破線は制御信号が流れる制御線を表す。
DMA転送制御装置100は、転送元リード制御部110、バッファライト制御部120、内部バッファ130(バッファ領域)、バッファリード制御部140、転送先ライト制御部150、データ非破壊制御部160を備える。
転送元リード制御部110は、メモリ300の転送元領域に記憶されたデータを読み出す転送元リードコマンドをメモリ300へ出力する。
転送元リードコマンドは、リードアドレス、リードアドレス有効信号(もしくは、リード要求信号)、その他(バーストサイズ、バースト長)の信号をまとめた情報である。
バッファライト制御部120は、転送元リード制御部110が出力した転送元リードコマンドによって読み出された転送元リードデータをリード専用バスを介して取得する。
また、バッファライト制御部120は、取得した転送元リードデータをバッファライトデータとして内部バッファ130へ出力し、内部バッファ130におけるバッファライトポインタによって指定した位置にバッファライトデータを書き込む。バッファライトポインタは、現在のバッファライト先を示した情報である。
バッファライト制御部120は、バッファライトデータの書き込みが完了した位置をバッファライト完了ポインタとして、データ非破壊制御部160へ通知する。バッファライト完了ポインタは、言い替えれば、内部バッファ130における読み出し準備が完了領域を示した情報である。
内部バッファ130は、DMA転送制御装置100に内蔵された転送データ格納用のリソースである。
バッファリード制御部140は、内部バッファ130におけるバッファリードポインタによって指定した位置からデータをバッファリードデータとして読み出す。バッファリードポインタは、現在のバッファリード先を示した情報である。
また、バッファリード制御部140は、読み出したバッファリードデータを転送先ライトデータとしてライト専用バスを介してメモリ300へ出力する。
バッファリード制御部140は、バッファリードポインタをデータ非破壊制御部160へ通知する。
転送先ライト制御部150は、メモリ300へ転送先ライトコマンドを出力して、バッファリード制御部140が出力した転送先ライトデータを転送先領域に書き込む。
転送先ライトコマンドは、ライトアドレス、ライトアドレス有効信号(もしくは、ライト要求信号)、ライトデータ有効信号、その他(バーストサイズ、バースト長、ストローブ信号)の信号をまとめた情報である。
データ非破壊制御部160は、CPU200によって設定された転送タイプ(インクリメント転送又はデクリメント転送)を各制御部へ通知する。なお、各制御部とは、転送元リード制御部110、バッファライト制御部120、バッファリード制御部140、転送先ライト制御部150のことである。
また、データ非破壊制御部160は、デクリメント転送の場合、バッファライト完了ポインタに基づき、バッファリードポインタが示す位置のデータ読み出し準備ができているか否かを判定する。そして、データ非破壊制御部160は、データ読み出し準備ができていると判定した場合に、転送先ライト可能指示をバッファリード制御部140、転送先ライト制御部150へ出力する。なお、データ非破壊制御部160は、インクリメント転送の場合、バッファライト完了ポインタやバッファリードポインタに関わらず、常に転送先ライト可能指示を出力する。
バッファリード制御部140は、データ非破壊制御部160から転送先ライト可能指示を受信すると、内部バッファ130からデータを読み出す。また、転送先ライト制御部150は、データ非破壊制御部160から転送先ライト可能指示を受信すると、転送先ライトコマンドを出力する。
なお、リード専用バスは、転送元リードコマンド、転送元リードデータを流すバスであり、ライト専用バスは、転送先ライトコマンド、転送先ライトデータを流すバスである。リード専用バスとライト専用バスとには依存関係がなく、パラレルに動作可能である。
図6は、実施の形態1に係るデータ非破壊制御部160の構成図である。
データ非破壊制御部160は、転送タイプ設定レジスタ161、バッファライト完了ポインタ設定レジスタ162、バッファリードポインタ設定レジスタ163、バッファ準備完了判断部164を備える。
転送タイプ設定レジスタ161には、CPU200から転送タイプが設定される。転送タイプ設定レジスタ161に設定された転送タイプがデータ非破壊制御部160から各制御部へ通知される。
バッファライト完了ポインタ設定レジスタ162には、バッファライト制御部120からバッファライト完了ポインタが設定される。
バッファリードポインタ設定レジスタ163には、バッファリード制御部140からバッファリードポインタが設定される。
バッファ準備完了判断部164は、転送タイプ、バッファライト完了ポインタ、バッファリードポインタに基づき、内部バッファ130からのデータ読み出し準備が完了しているか否かを判断する。データ読み出し準備が完了していると判定した場合、データ破壊が発生しないと判定し、バッファリード制御部140と転送先ライト制御部150とへ転送先ライト可能指示を出力する。
次に、DMA転送制御装置100の動作について説明する。
図7は、実施の形態1に係るDMA転送制御装置100全体の動作を示すフローチャートである。
S11では、CPU200がDMA転送制御装置100のレジスタにDMA情報を設定し、DMA転送制御装置100を起動する。すると、S12では、DMA転送制御装置100のデータ非破壊制御部160がレジスタ(転送タイプ設定レジスタ161)に設定された転送タイプ(インクリメント転送、又は、デクリメント転送)を各制御部へ通知する。レジスタにインクリメント転送が設定された場合、処理をS13へ進め、デクリメント転送が設定された場合、処理をS14へ進める。
S13では、DMA転送制御装置100がメモリ300に対してインクリメント転送を行う。一方、S14では、DMA転送制御装置100がメモリ300に対してデクリメント転送を行う。
そして、S15では、DMA転送制御装置100が指定されたデータ長のデータを転送し終えた場合等、DMA転送停止要因があったときに転送動作を停止する。
図8は、実施の形態1に係る転送元リード制御部110の動作を示すフローチャートである。なお、図8は、図7におけるS13又はS14における転送元リード制御部110の動作を示す。
S21では、転送元リード制御部110がデータ非破壊制御部160から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をS22へ進め、デクリメント転送と判定した場合、処理をS23へ進める。
S22及びS23では、転送元リード制御部110が1つのバーストリードコマンドを転送元リードコマンドとして生成する。バーストリードコマンドは、図3に基づき説明したように、単位量のデータづつ所定個の単位量のデータをリード開始アドレスからアドレス値の昇順に読み出すコマンドである。
S22,S23に続いて、S24では、転送元リード制御部110が、転送元リードコマンドによって読み出されるデータを格納する空き領域が内部バッファ130にあるか否かによって、リードアクセス可能か否か判定する。リードアクセス可能と判定した場合(S24でYES)、処理をS25へ進める。一方、リードアクセス不可能と判定した場合(S24でNO)、S24へ処理を戻し、所定の時間経過後再びリードアクセス可能か否か判定する。
S25では、転送元リード制御部110が生成した転送元リードコマンドをメモリ300に対して発行して、転送元領域からデータを読み出す。
そして、S26では、転送元リード制御部110が、転送サイズ分のデータを読み出す転送元リードコマンドをメモリ300へ送信したか否かにより、メモリ300へのリードアクセスを終了するか否か判定する。リードアクセスを終了すると判定した場合(S26でYES)、処理を終了する。一方、リードアクセスを終了しないと判定した場合(S26でNO)、処理をS21へ戻す。
なお、S22では、転送元リード制御部110は、インクリメント方向にバーストリードコマンドを生成する。つまり、バーストリードコマンドのリード開始アドレスのアドレス値が昇順になるように、バーストリードコマンドを生成する。
一方、S23では、転送元リード制御部110は、デクリメント方向にバーストリードコマンドを生成する。つまり、バーストリードコマンドのリード開始アドレスのアドレス値が降順になるように、バーストリードコマンドを生成する。
図9は、実施の形態1に係るバッファライト制御部120の動作を示すフローチャートである。なお、図9は、図7におけるS13又はS14におけるバッファライト制御部120の動作を示す。
S31では、バッファライト制御部120がデータ非破壊制御部160から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をS32へ進め、デクリメント転送と判定した場合、処理をS33へ進める。
S32及びS33では、バッファライト制御部120が1つの転送元リードコマンドに対応する1つのバーストライトコマンドをバッファライトコマンドとして生成する。このバッファライトコマンドは、対応する転送元リードコマンドのリード開始アドレスに対応する、内部バッファ130におけるアドレスをライト開始アドレスとして、ライト開始アドレスからアドレス値の昇順にデータを書き込むコマンドである。
なお、この際、バッファライト制御部120は、リード開始アドレスや、何個の単位量のデータを読み出す転送元リードコマンドを発行するかなどの情報を転送元リード制御部110から取得して、転送元リードコマンドに対応するバッファライトコマンドを生成する。あるいは、バッファライト制御部120は、転送元リード制御部110と同様のロジックにより、リード開始アドレスや、転送元リード制御部110が何個の単位量のデータを読み出す転送元リードコマンドを発行するかなどを判定して、転送元リードコマンドに対応するバッファライトコマンドを生成してもよい。
また、S33では、バッファライト制御部120は、バッファライト完了ポインタをデータ非破壊制御部160のバッファライト完了ポインタ設定レジスタ162に設定する。この際、バッファライト完了ポインタは、バッファライトポインタが示すアドレス値に、そのライトコマンドで書き込むデータサイズ分のアドレス値を加えたアドレス値を示すものとする。
S32,S33に続いて、S34では、バッファライト制御部120が内部バッファ130に対してバッファライトコマンドを発行する。これにより、1つの転送元リードコマンドによって転送元領域から読み出されたデータを、内部バッファ130に書き込む。
そして、S35では、バッファライト制御部120が、転送サイズ分のデータを書き込むバッファライトコマンドを内部バッファ130へ送信したか否かにより、内部バッファ130へのライトアクセスを終了するか否かを判定する。ライトアクセスを終了すると判定した場合(S35でYES)、処理を終了し、ライトアクセスを終了しないと判定した場合(S35でNO)、処理をS31へ戻す。
なお、S35では、ライトアクセスを終了すると判定した場合(S35でYES)、バッファライト制御部120は、最後に発行したバーストライトコマンドにおけるライト開始アドレスをバッファライト完了ポインタとして、バッファライト完了ポインタ設定レジスタ162に設定した上で、処理を終了する。
図10は、バッファリード制御部140の動作を示すフローチャートである。なお、図10は、図7におけるS13又はS14におけるバッファリード制御部140の動作を示す。
S41では、バッファリード制御部140がデータ非破壊制御部160から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をS42へ進め、デクリメント転送と判定した場合、処理をS43へ進める。
S42及びS43では、バッファリード制御部140が、1つの転送先ライトコマンドに対応する1つのバーストリードコマンドをバッファリードコマンドとして生成する。このバッファリードコマンドは、対応する転送先ライトコマンドのライト開始アドレスに対応する、内部バッファ130におけるアドレスをリード開始アドレスとして、リード開始アドレスからアドレス値の昇順にデータを読み出すコマンドである。
なお、この際、バッファリード制御部140は、ライト開始アドレスや、何個の単位量のデータを書き込む転送先ライトコマンドを発行するかなどの情報を転送先ライト制御部150から取得して、転送先ライトコマンドに対応するバッファリードコマンドを生成する。あるいは、バッファリード制御部140は、転送先ライト制御部150と同様のロジックにより、ライト開始アドレスや、転送先ライト制御部150が何個の単位量のデータを書き込む転送先ライトコマンドを発行するかなどを判定して、転送先ライトコマンドに対応するバッファリードコマンドを生成してもよい。
また、S42及びS43では、バッファリード制御部140は、バッファリードコマンドの生成の際、そのバッファリードコマンドのリード開始アドレスを示すバッファリードポインタをデータ非破壊制御部160のバッファリードポインタ設定レジスタ163に設定する。
S42,S43に続いて、S44では、バッファリード制御部140が、リードアクセス可能か否か判定する。バッファリード制御部140は、(1)転送先ライトコマンドによって書き込まれるだけのデータが内部バッファ130に格納されており、かつ、(2)データ非破壊制御部160から転送先ライト可能指示を受信した場合に、リードアクセス可能と判定する。リードアクセス可能と判定した場合(S44でYES)、処理をS45へ進める。一方、リードアクセス不可能と判定した場合(S44でNO)、S44へ処理を戻し、所定の時間経過後再びリードアクセス可能か否か判定する。
S45では、バッファリード制御部140が内部バッファ130に対してバッファリードコマンドを発行する。これにより、1つの転送先ライトコマンドによって転送先領域へ書き込まれるデータを、内部バッファ130から読み出し、メモリ300へ送信する。
そして、S46では、バッファリード制御部140が、転送サイズ分のデータを読み出すバッファリードコマンドを内部バッファ130へ送信したか否かにより、内部バッファ130へのリードアクセスを終了するか否かを判定する。リードアクセスを終了すると判定した場合(S46でYES)、処理を終了し、リードアクセスを終了しないと判定した場合(S46でNO)、処理をS41へ戻す。
図11は、実施の形態1に係る転送先ライト制御部150の動作を示すフローチャートである。なお、図11は、図7におけるS13又はS14における転送先ライト制御部150の動作を示す。
S51では、転送先ライト制御部150がデータ非破壊制御部160から送信された転送タイプに基づき、インクリメント転送かデクリメント転送かを判定する。インクリメント転送と判定した場合、処理をS52へ進め、デクリメント転送と判定した場合、処理をS53へ進める。
S52及びS53では、転送先ライト制御部150が1つのバーストライトコマンドを転送先ライトコマンドとして生成する。バーストライトコマンドは、図3に基づき説明したように、単位量のデータづつ所定個の単位量のデータをライト開始アドレスからアドレス値の昇順に書き込むコマンドである。
S52,S53に続いて、S54では、転送先ライト制御部150が、バッファリード制御部140がリードアクセス可能か否か判定する条件と同じ条件により、ライトアクセス可能か否か判定する。つまり、転送先ライト制御部150は、(1)転送先ライトコマンドによって書き込まれるだけのデータが内部バッファ130に格納されており、かつ、(2)データ非破壊制御部160から転送先ライト可能指示を受信した場合に、ライトアクセス可能と判定する。ライトアクセス可能と判定した場合(S54でYES)、処理をS55へ進める。一方、ライトアクセス不可能と判定した場合(S54でNO)、S54へ処理を戻し、所定の時間経過後再びライトアクセス可能か否か判定する。
S55では、転送先ライト制御部150が生成した転送先ライトコマンドをメモリ300に対して発行して、転送先領域へデータを書き込む。
そして、S56では、転送先ライト制御部150が、転送サイズ分のデータを書き込む転送先ライトコマンドをメモリ300へ送信したか否かにより、メモリ300へのライトアクセスを終了するか否か判定する。ライトアクセスを終了すると判定した場合(S56でYES)、処理を終了する。一方、ライトアクセスを終了しないと判定した場合(S56でNO)、処理をS51へ戻し、次の転送先ライトコマンドを生成し、メモリ300へ送信して、データを書き込む。
なお、S52では、転送先ライト制御部150は、インクリメント方向にバーストライトコマンドを生成する。つまり、バーストライトコマンドのライト開始アドレスのアドレス値が昇順になるように、バーストライトコマンドを生成する。
一方、S53では、転送先ライト制御部150は、デクリメント方向にバーストライトコマンドを生成するということである。つまり、バーストライトコマンドのライト開始アドレスのアドレス値が降順になるように、バーストライトコマンドを生成する。
図12は、実施の形態1に係るデータ非破壊制御部160の動作を示すフローチャートである。なお、図12は、図7におけるS13又はS14におけるデータ非破壊制御部160の動作を示す。
S61では、データ非破壊制御部160が、転送タイプ設定レジスタ161に設定された転送タイプに従い、インクリメント転送かデクリメント転送かを判定する。デクリメント転送と判定した場合、処理をS62へ進め、インクリメント転送と判定した場合、処理をS64へ進める。
S62では、データ非破壊制御部160が、バッファライト完了ポインタ設定レジスタ162に設定されたバッファライト完了ポインタが示すアドレス値が、バッファリードポインタ設定レジスタ163に設定されたバッファリードポインタが示すアドレス値以下か否かを判定する。バッファライト完了ポインタが示すアドレス値がバッファリードポインタが示すアドレス値以下でない場合(S62でNO)、処理をS63へ進める。一方、バッファライト完了ポインタが示すアドレス値がバッファリードポインタが示すアドレス値以下である場合(S62でYES)、処理をS64へ進める。
S63では、データ非破壊制御部160は、バッファ読み出しの準備が未完了であると判定し、転送先ライト可能指示を送信しない。一方、S64では、データ非破壊制御部160は、バッファ読み出しの準備が完了したと判定し、バッファリード制御部140と転送先ライト制御部150とへ転送先ライト可能指示を送信する。
S65では、データ非破壊制御部160は、転送サイズ分のデータの転送が完了したか否かにより、処理を終了するか否か判定する。処理を終了すると判定した場合(S65でYES)、処理を終了する。一方、処理を終了しないと判定した場合(S65でNO)、処理をS61へ戻し、再びバッファの準備が完了したか否かを判定する。
つまり、インクリメント転送の場合、常にバッファ準備完了と判定される。一方、デクリメント転送の場合、「バッファライト完了ポインタが示すアドレス値≦バッファリードポインタが示すアドレス値」が成立したとき、バッファ準備完了と判定される。
次に、DMA転送制御装置100の具体的な動作例を説明する。
まず、図13から図15を用いて、インクリメント転送の場合の例を説明する。
図13は、転送元領域と転送先領域とを示す図である。なお、図13の1マスは、2byteを表す。図14は、DMA転送の一連の流れ(リードアクセス、ライトアクセス)を示すタイミングチャートである。図15は、DMA転送時におけるデータの変化を示す図である。
図13に示すように、転送元領域はメモリ300におけるアドレス00h−30hであり、転送先領域はメモリ300におけるアドレス18h−48hである。転送元領域と転送先領域とは、アドレス18hから30hまでが重複している。そして、転送元領域の先頭アドレス00hは、転送先領域の先頭アドレス18hよりも小さいので、転送元領域と転送先領域とは順方向にずれている。転送元領域と転送先領域とは順方向にずれており、インクリメント転送を行うため、ここではデータ破壊が発生する。
インクリメント転送を行うため、インクリメント方向にバーストリードコマンドやバーストライトコマンドが発行される。ここでは、転送元領域からデータを読み出す転送元リードコマンドとして、4バーストリードコマンド(1)と3バーストリードコマンド(2)とが順に発行される。また、転送先領域へデータを書き込む転送先ライトコマンドとして3バーストライトコマンド(1)と4バーストライトコマンド(2)とが順に発行される。そのため、転送元領域からのデータの読み出し、転送先領域へのデータの書き込みの順序は、D1,D2,D3,D4,D5,D6,D7の順である。
なお、この例では、転送元リードコマンドのリード開始アドレスのアドレス値と、アドレス値が同じ内部バッファ130におけるアドレスを、転送元リードコマンドのリード開始アドレスに対応する、内部バッファ130におけるアドレスとする。また、転送先ライトコマンドのライト開始アドレスのアドレス値より、アドレス値が24byte分(3行)小さい内部バッファ130におけるアドレスを、転送先ライトコマンドのライト開始アドレスに対応する、内部バッファ130におけるアドレスとする。
まず、S11で、DMA転送制御装置100のレジスタには、転送元アドレス:00h、転送先アドレス:18h、転送サイズ:56byte、転送タイプ:インクリメント転送のDMA情報が設定される。次に、S12で、データ非破壊制御部160により各制御部へインクリメント転送であることが通知される。そして、S13へ進み、インクリメント転送によるDMA転送が実行される。
すると、転送元リード制御部110は、まず、転送元リードコマンドとして、4バーストリードコマンド(1)を図14のT0に発行し、続いて、3バーストリードコマンド(2)を図14のT2に発行する。
また、バッファライト制御部120は、まず、4バーストリードコマンド(1)に対応するバッファライトコマンド(1)を発行する。これにより、4バーストリードコマンド(1)によって転送元領域から読み出されたデータD1,D2,D3,D4が図14のT3からT6までの間に順に内部バッファ130に書き込まれる(図15(b))。
内部バッファ130にデータD3が書き込まれた時点で、内部バッファ130には3つの単位量データが格納された状態となる。つまり、3バーストライトコマンド(1)によって書き込まれるだけのデータが内部バッファ130に格納された状態となる。また、今回は、インクリメント転送であるため、常にデータ非破壊制御部160から転送先ライト可能指示が送信されている。そのため、転送先ライト制御部150は、転送先ライトコマンドとして、3バーストライトコマンド(1)を図14のT6に発行する。また、バッファリード制御部140は、3バーストライトコマンド(1)に対応するバッファリードコマンド(1)を発行する。そして、データD1,D2,D3が図14のT6からT8までの間にメモリ300の転送先領域に順に書き込まれる(図15(c))。
この際、読み出し前のアドレス20h,28hのデータD5,D6がデータD2,D3で上書きされ、データが破壊されてしまう。
さらに、バッファライト制御部120は、3バーストリードコマンド(2)に対応するバッファライトコマンド(2)を発行する。これにより、3バーストリードコマンド(2)によって読み出されたデータD2,D3,D7が図14のT8からT10までの間に順に内部バッファ130に書き込まれる(図15(d))。
内部バッファ130にデータD7が書き込まれた時点で、内部バッファ130には4つの単位量データが格納された状態となる。つまり、4バーストライトコマンド(2)によって書き込まれるだけのデータが内部バッファ130に格納された状態となる。また、今回は、インクリメント転送であるため、常に転送先ライト制御部150から転送先ライト可能指示が送信されている。そのため、転送先ライト制御部150は、転送先ライトコマンドとして、4バーストライトコマンド(2)を図14のT11に発行する。また、バッファリード制御部140は、4バーストライトコマンド(2)に対応するバッファリードコマンド(2)を発行する。そして、データD4,D2,D3,D7が図14のT11からT14までの間にメモリ300の転送先領域に順に書き込まれる(図15(e))。
この結果、メモリ300のアドレス38h,40hに格納されたデータは、本来格納されるべきデータD5,D6ではなく、データD2,D3となっている。
次に、図16から図19を用いて、デクリメント転送の場合の例を説明する。
図16は、転送元領域と転送先領域とを示す図である。なお、図16の1マスは、2byteを表す。図17は、DMA転送の一連の流れ(リードアクセス、ライトアクセス)を示すタイミングチャートである。図18及び図19は、DMA転送時におけるデータの変化を示す図である。
図16に示すように、転送元領域と転送先領域とは、図13と同じである。
デクリメント転送を行うため、デクリメント方向にバーストリードコマンドやバーストライトコマンドが発行される。ここでは、転送元領域からデータを読み出す転送元リードコマンドとして、3バーストリードコマンド(1)と4バーストリードコマンド(2)とが順に発行される。また、転送先領域へデータを書き込む転送先ライトコマンドとして4バーストライトコマンド(1)と3バーストライトコマンド(2)とが順に発行される。そのため、転送元領域からのデータの読み出しの順序は、D5,D6,D7,D1,D2,D3,D4の順であり、転送先領域へのデータの書き込みの順序は、D4,D5,D6,D7,D1,D2,D3の順である。
なお、この例では、転送元リードコマンドのリード開始アドレスのアドレス値より、アドレス値が24byte分(3行)大きい内部バッファ130におけるアドレスを、転送元リードコマンドのリード開始アドレスに対応する、内部バッファ130におけるアドレスとする。また、転送先ライトコマンドのライト開始アドレスのアドレス値と、アドレス値が同じ内部バッファ130におけるアドレスを、転送先ライトコマンドのライト開始アドレスに対応する、内部バッファ130におけるアドレスとする。
まず、S11で、DMA転送制御装置100のレジスタには、転送元アドレス:00h、転送先アドレス:18h、転送サイズ:56byte、転送タイプ:デクリメント転送のDMA情報が設定される。次に、S12で、データ非破壊制御部160により各制御部へデクリメント転送であることが通知される。そして、S14へ進み、デクリメント転送によるDMA転送が実行される。
すると、転送元リード制御部110は、まず、転送元リードコマンドとして、3バーストリードコマンド(1)を図17のT0に発行し、続いて、4バーストリードコマンド(2)を図17のT2に発行する。
また、バッファライト制御部120は、まず、3バーストリードコマンド(1)に対応するバッファライトコマンド(1)を発行する。これにより、3バーストリードコマンド(1)によって転送元領域から読み出されたデータD5,D6,D7が図17のT3からT5までの間に順に内部バッファ130に書き込まれる(図18(b))。
なお、バッファライトコマンド(1)を発行する場合、3バーストリードコマンド(1)におけるリード開始アドレス(アドレス20h)より、アドレス値が24byte分(3行)大きい、内部バッファ130におけるアドレス38hにバッファライトポインタが設定される。また、3バーストリードコマンド(1)では、24byte(3行)読み出されるため、アドレス38hよりアドレス値が24byte分(3行)大きい、内部バッファ130におけるアドレス50hにバッファライト完了ポインタが設定される。また、バッファリード制御部140により、4バーストライトコマンド(1)におけるライト開始アドレス(アドレス30h)と、アドレス値が同じ、内部バッファ130におけるアドレス30hにバッファリードポインタが設定される。
データD7が書き込まれた時点では、内部バッファ130には3つの単位量データが格納された状態であり、4バーストライトコマンド(1)によって書き込まれるだけのデータが内部バッファ130に格納された状態とはならない。また、バッファライト完了ポインタは、バッファリードポインタよりもアドレス値が大きいアドレスを示しており、データ非破壊制御部160から転送先ライト可能指示が送信されない。したがって、この時点では、バッファリード制御部140や転送先ライト制御部150はコマンドを発行しない。
続いて、バッファライト制御部120は、4バーストリードコマンド(2)に対応するバッファライトコマンド(2)を発行し、4バーストリードコマンド(2)によって転送元領域から読み出されたデータD1,D2,D3,D4を図17のT7からT10までの間に順に内部バッファ130に書き込む。
なお、図18(c)に示すように、バッファライトコマンド(2)を発行する場合、内部バッファ130におけるアドレス18hにバッファライトポインタが設定される。また、4バーストリードコマンド(2)では、32byte(4行)読み出されるため、アドレス18hよりも32byte分(4行)大きい、内部バッファ130におけるアドレス38hにバッファライト完了ポインタが設定される。バッファリードポインタは、変らず内部バッファ130におけるアドレス30hに設定されている。
内部バッファ130にデータD1が書き込まれた時点(図18(c))で、内部バッファ130には4つの単位量データが格納された状態となる。つまり、4バーストライトコマンド(1)によって書き込まれるだけのデータが内部バッファ130に格納された状態となる。しかし、この時点では、バッファライト完了ポインタは、バッファリードポインタよりもアドレス値が大きいアドレスを示しており、データ非破壊制御部160から転送先ライト可能指示が送信されない。したがって、この時点では、バッファリード制御部140や転送先ライト制御部150はコマンドを発行しない。
その後、内部バッファ130にデータD4まで書き込みが完了すると(図19(d))、バッファライト制御部120の終了処理(S35)にて、4バーストリードコマンド(2)に対応するバッファライトコマンドにおけるライト開始アドレス18hに、バッファライト完了ポインタが設定される。すると、バッファライト完了ポインタが示すアドレスのアドレス値が、バッファリードポインタが示すアドレスのアドレス値以下になり、データ非破壊制御部160から転送先ライト可能指示が送信される。そのため、転送先ライト制御部150は、転送先ライトコマンドとして、4バーストライトコマンド(1)を図17のT11に発行する。また、バッファリード制御部140は、4バーストライトコマンド(1)に対応するバッファリードコマンドを発行する。そして、データD4,D5,D6,D7が図17のT11からT14までの間にメモリ300の転送先領域に順に書き込まれる(図19(e))。
さらに、転送先領域にデータD7まで書き込みが完了すると、3バーストライトコマンド(2)におけるライト開始アドレス(アドレス18h)と、アドレス値が同じ、内部バッファ130におけるアドレス18hにバッファリードポインタが設定される。この時点では、内部バッファ130には3つの単位量データが格納された状態である。つまり、3バーストライトコマンド(2)によって書き込まれるだけのデータが内部バッファ130に格納された状態である。また、バッファライト完了ポインタが示すアドレスのアドレス値が、バッファリードポインタが示すアドレスのアドレス値以下であり、データ非破壊制御部160から転送先ライト可能指示が送信される。そのため、転送先ライト制御部150は、転送先ライトコマンドとして、3バーストライトコマンド(2)を図17のT15に発行する。また、バッファリード制御部140は、3バーストライトコマンド(2)に対応するバッファリードコマンドを発行する。そして、データD1,D2,D3が図17のT15からT17までの間にメモリ300の転送先領域に順に書き込まれる(図19(f))。
この結果、メモリ300の転送先領域に、本来格納されるべきデータが格納される。
以上のように、実施の形態1に係るDMA転送制御装置100によれば、転送元領域と転送先領域が重なった場合、バースト転送機能を用いて転送を行ってもデータ破壊を防ぎ、正しい転送結果を得ることができる。
実施の形態2.
実施の形態1では、CPU200がインクリメント転送を行うか、デクリメント転送を行うかを指定した。つまり、CPU200側でインクリメント転送を行うべきか、デクリメント転送を行うべきかの判断をする必要があった。
実施の形態2では、DMA転送制御装置100が転送元領域と転送先領域との重なりの状態に応じて、インクリメント転送を行うべきか、デクリメント転送を行うべきかを適切に判断する方法について説明する。
実施の形態2に係るDMA転送制御装置100は、実施の形態1に係るDMA転送制御装置100と、データ非破壊制御部160の構成のみ異なる。
図20は、実施の形態2に係るデータ非破壊制御部160の構成図である。実施の形態2に係るデータ非破壊制御部160は、実施の形態1に係るデータ非破壊制御部160が備える転送タイプ設定レジスタ161を備えていない。その代わりに、実施の形態2に係るデータ非破壊制御部160は、データ非破壊機能ON/OFF設定レジスタ165、転送元アドレス設定レジスタ166、転送先アドレス設定レジスタ167、転送サイズ設定レジスタ168、転送タイプ判断部169を備える。
データ非破壊機能ON/OFF設定レジスタ165には、データ非破壊機能をON(有効)にするか、OFF(無効)にするかが設定される。
転送元アドレス設定レジスタ166には、転送元領域の先頭アドレスが設定される。転送先アドレス設定レジスタ167には、転送先領域の先頭アドレスが設定される。転送サイズ設定レジスタ168には、転送データのサイズが設定される。
転送タイプ判断部169は、データ非破壊機能ON/OFF設定レジスタ165にONと設定されている場合、以下のように転送タイプを判断し、各制御部へ通知する。
(A)転送元領域と転送先領域とが重ならない場合、インクリメント転送と判断する。
(B)転送元領域と転送先領域とが重なる場合、以下の(a)から(c)のように判断する。
(a)転送元領域と転送先領域とが全く同じ領域ならインクリメント転送と判断する。
(b)転送元アドレス設定レジスタ166に設定されたアドレス(転送元領域の先頭アドレス)のアドレス値が、転送先アドレス設定レジスタ167に設定されたアドレス(転送先領域の先頭アドレス)のアドレス値より小さいならデクリメント転送と判断する。
(c)転送元アドレス設定レジスタ166に設定されたアドレス(転送元領域の先頭アドレス)のアドレス値が、転送先アドレス設定レジスタ167に設定されたアドレス(転送先領域の先頭アドレス)のアドレス値より大きいならインクリメント転送と判断する。
一方、転送タイプ判断部169は、データ非破壊機能ON/OFF設定レジスタ165にOFFと設定されている場合、常にインクリメント転送と各制御部へ通知する。
図21は、実施の形態2に係るDMA転送制御装置100全体の動作を示すフローチャートである。
S71は、図7のS11と同様である。この際、データ非破壊機能をONとするかOFFとするかもレジスタに設定される。
S72では、データ非破壊制御部160がレジスタ(データ非破壊機能ON/OFF設定レジスタ165)の設定がONか否かを判定する。ONである場合、処理をS73へ進め、OFFである場合、インクリメント転送であることを各制御部へ通知して、処理をS75へ進める。
S73では、データ非破壊制御部160がインクリメント転送であるか、デクリメント転送であるかを判定する。デクリメント転送である場合、デクリメント転送であることを各制御部へ通知して、処理をS74へ進める。一方、インクリメント転送である場合、インクリメント転送であることを各制御部へ通知して、処理をS75へ進める。
S74では、DMA転送制御装置100がメモリ300に対してデクリメント転送を行う。一方、S75では、DMA転送制御装置100がメモリ300に対してインリメント転送を行う。
そして、S76では、DMA転送制御装置100が指定されたデータ長のデータを転送し終えた場合等、DMA転送停止要因があったときに転送動作を停止する。
以上のように、実施の形態2に係るDMA転送制御装置100によれば、CPU200が転送タイプを指示することなく、DMA転送制御装置100側で適切な転送タイプを判断した上で、データ転送を行うことができる。
なお、以上の説明において、各制御部は、例えば、回路等によって構成されており、「〜部」を「〜回路」と読み代えても構わない。
10 DMA転送システム、100 DMA転送制御装置、110 転送元リード制御部、120 バッファライト制御部、130 内部バッファ、140 バッファリード制御部、150 転送先ライト制御部、160 データ非破壊制御部、161 転送タイプ設定レジスタ、162 バッファライト完了ポインタ設定レジスタ、163 バッファリードポインタ設定レジスタ、164 バッファ準備完了判断部、165 データ非破壊機能ON/OFF設定レジスタ、166 転送元アドレス設定レジスタ、167 転送先アドレス設定レジスタ、168 転送サイズ設定レジスタ、169 転送タイプ判断部、200 CPU、300 メモリ。

Claims (6)

  1. 転送元領域に記憶されたデータを転送先領域へ転送するデータ転送装置であり、
    前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御部と、
    前記転送元リード制御部が出力したリードコマンドによって読み出されたデータを取得してバッファ領域へ書き込むバッファライト制御部と、
    前記バッファライト制御部が書き込んだデータを前記バッファ領域から読み出して、前記転送先領域へ送信するバッファリード制御部と、
    前記バッファリード制御部が前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御部と、
    前記バッファライト制御部がデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記バッファリード制御部がデータを読み出そうとしている前記バッファ領域におけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
    を備え、
    前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、データを前記バッファ領域から読み出し、
    前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御部が前記転送先領域へ送信したデータを前記転送先領域へ書き込む
    ことを特徴とするデータ転送装置。
  2. 前記転送元リード制御部は、単位量のデータづつ所定個の単位量のデータをリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
    前記バッファライト制御部は、前記転送元リード制御部が出力した各リードコマンドについて、前記転送元リード制御部がリードコマンドを出力した順に、そのリードコマンドによって読み出されたデータを単位量づつ取得して、そのリードコマンドにおけるリード開始アドレスに対応するバッファ領域におけるアドレスからアドレス値の昇順に書き込むとともに、そのリードコマンドによって読み出されたデータの前記バッファ領域への書き込みが終了した場合に、前記リード開始アドレスに対応するバッファ領域におけるアドレスにライト完了ポインタを設定し、
    前記転送先ライト制御部は、単位量のデータづつ所定個の単位量のデータをライト開始アドレスからアドレス値の昇順に書き込むライトコマンドを、前記ライト開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
    前記バッファリード制御部は、前記転送先ライト制御部が次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記バッファ領域におけるアドレスにリードポインタを設定し、
    前記データ非破壊制御部は、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合に、書き込みを許可すると判定し、
    前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記リードポインタが設定されたアドレスからアドレス値の昇順に単位量づつデータを読み出し、
    前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、次のライトコマンドを出力する
    ことを特徴とする請求項1に記載のデータ転送装置。
  3. 前記データ非破壊制御部は、前記転送元領域と前記転送先領域とが重複する場合であって、前記転送元領域の先頭位置を表す先頭アドレスのアドレス値が前記転送先領域の先頭位置を表す先頭アドレスのアドレス値以下である場合には、デクリメント転送を行い、他の場合には、インクリメント転送を行うと判定し、
    前記転送元リード制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が降順になるように前記リードコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が昇順になるように前記リードコマンドを複数個生成して順に出力し、
    前記転送先ライト制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が降順になるように前記ライトコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が昇順になるように前記ライトコマンドを複数個生成して順に出力し、
    前記データ非破壊制御部は、デクリメント転送を行うと判定した場合、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合に、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定する
    ことを特徴とする請求項2に記載のデータ転送装置。
  4. 前記バッファライト制御部は、リードコマンドによって読み出されたデータをリード用バスを介して取得し、
    前記バッファリード制御部は、前記バッファ領域から読み出したデータを前記リード用バスとは異なるライト用バスを介して転送先領域へ送信する
    ことを特徴とする請求項1から3までのいずれかに記載のデータ転送装置。
  5. 転送元領域に記憶されたデータを転送先領域へ転送するデータ転送方法であり、
    前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御ステップと、
    前記転送元リード制御ステップで出力したリードコマンドによって読み出されたデータを取得してバッファ領域へ書き込むバッファライト制御ステップと、
    前記バッファライト制御ステップで書き込んだデータを前記バッファ領域から読み出して、前記転送先領域へ送信するバッファリード制御ステップと、
    前記バッファリード制御ステップで前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御ステップと、
    前記バッファライト制御ステップでデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記バッファリード制御ステップでデータを読み出そうとしている前記バッファ領域におけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御ステップと
    を備え、
    前記バッファリード制御ステップでは、書き込みを許可すると前記データ非破壊制御ステップで判定した場合に、データを前記バッファ領域から読み出し、
    前記転送先ライト制御ステップでは、書き込みを許可すると前記データ非破壊制御ステップで判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御ステップで前記転送先領域へ送信したデータを前記転送先領域へ書き込む
    ことを特徴とするデータ転送方法。
  6. 転送元領域に記憶されたデータを転送先領域へ転送するデータ転送プログラムであり、
    前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御処理と、
    前記転送元リード制御処理で出力したリードコマンドによって読み出されたデータを取得してバッファ領域へ書き込むバッファライト制御処理と、
    前記バッファライト制御処理で書き込んだデータを前記バッファ領域から読み出して、前記転送先領域へ送信するバッファリード制御処理と、
    前記バッファリード制御処理で前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御処理と、
    前記バッファライト制御処理でデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記バッファリード制御処理でデータを読み出そうとしている前記バッファ領域におけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御処理と
    をコンピュータに実行させ、
    前記バッファリード制御処理では、書き込みを許可すると前記データ非破壊制御処理で判定した場合に、データを前記バッファ領域から読み出し、
    前記転送先ライト制御処理では、書き込みを許可すると前記データ非破壊制御処理で判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御処理で前記転送先領域へ送信したデータを前記転送先領域へ書き込む
    ことを特徴とするデータ転送プログラム。
JP2010268116A 2010-12-01 2010-12-01 データ転送装置、データ転送方法及びデータ転送プログラム Expired - Fee Related JP5656589B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010268116A JP5656589B2 (ja) 2010-12-01 2010-12-01 データ転送装置、データ転送方法及びデータ転送プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010268116A JP5656589B2 (ja) 2010-12-01 2010-12-01 データ転送装置、データ転送方法及びデータ転送プログラム

Publications (3)

Publication Number Publication Date
JP2012118774A true JP2012118774A (ja) 2012-06-21
JP2012118774A5 JP2012118774A5 (ja) 2013-01-24
JP5656589B2 JP5656589B2 (ja) 2015-01-21

Family

ID=46501518

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010268116A Expired - Fee Related JP5656589B2 (ja) 2010-12-01 2010-12-01 データ転送装置、データ転送方法及びデータ転送プログラム

Country Status (1)

Country Link
JP (1) JP5656589B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214047A (ja) * 1985-03-20 1986-09-22 Fujitsu Ltd メモリデ−タ転送回路
JPS63159961A (ja) * 1986-12-24 1988-07-02 Toshiba Corp ダイレクトメモリアクセス転送制御装置
JPH04205241A (ja) * 1990-11-30 1992-07-27 Toshiba Corp データ転送装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214047A (ja) * 1985-03-20 1986-09-22 Fujitsu Ltd メモリデ−タ転送回路
JPS63159961A (ja) * 1986-12-24 1988-07-02 Toshiba Corp ダイレクトメモリアクセス転送制御装置
JPH04205241A (ja) * 1990-11-30 1992-07-27 Toshiba Corp データ転送装置

Also Published As

Publication number Publication date
JP5656589B2 (ja) 2015-01-21

Similar Documents

Publication Publication Date Title
US11151027B2 (en) Methods and apparatuses for requesting ready status information from a memory
US11023167B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
JP5769868B2 (ja) データ転送装置、データ転送方法及びデータ転送プログラム
US6721820B2 (en) Method for improving performance of a flash-based storage system using specialized flash controllers
US7299323B2 (en) Memory controller having a read-modify-write function
US20070220361A1 (en) Method and apparatus for guaranteeing memory bandwidth for trace data
KR20150083741A (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
JP2014059876A5 (ja) ホスト、不揮発性メモリ装置、及び不揮発性メモリカードシステム
JP2007087388A (ja) メモリコントローラ及びそれを含んだデータ処理システム
JP2004110785A (ja) メモリコントローラ
TW201447897A (zh) 自記憶體讀取資料同時將寫入資料傳送至該記憶體之系統及方法
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
US20140379979A1 (en) Memory access alignment in a double data rate ('ddr') system
JP6602579B2 (ja) 半導体装置およびシステム
JP2010500682A (ja) フラッシュメモリアクセス回路
JP2011018222A (ja) インタリーブ制御装置、インタリーブ制御方法及びメモリシステム
KR100868395B1 (ko) Dma 전송을 수행하기 위한 장치 및 방법과 머신 판독 가능 매체
CN113868039A (zh) 一种测试方法、装置及相关设备
JPS6131485B2 (ja)
JP2008015876A (ja) データアクセスシステム、データアクセス装置、データアクセス集積回路及びデータアクセス方法
JP3803196B2 (ja) 情報処理装置、情報処理方法および記録媒体
JP3824122B2 (ja) Dma装置
JP5656589B2 (ja) データ転送装置、データ転送方法及びデータ転送プログラム
JP2007172129A (ja) 不揮発性メモリアクセス制御装置および不揮発性メモリ制御システム
US8402233B2 (en) Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140715

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: 20141028

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141125

R150 Certificate of patent or registration of utility model

Ref document number: 5656589

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees