JP5656589B2 - データ転送装置、データ転送方法及びデータ転送プログラム - Google Patents
データ転送装置、データ転送方法及びデータ転送プログラム Download PDFInfo
- Publication number
- JP5656589B2 JP5656589B2 JP2010268116A JP2010268116A JP5656589B2 JP 5656589 B2 JP5656589 B2 JP 5656589B2 JP 2010268116 A JP2010268116 A JP 2010268116A JP 2010268116 A JP2010268116 A JP 2010268116A JP 5656589 B2 JP5656589 B2 JP 5656589B2
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- data
- area
- read
- control unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Description
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バスは、リード専用バスとライト専用バスとを備えており、リード専用バスを使ったデータ転送元領域からのデータ取得と、ライト専用バスを使ったデータ転送先領域へのデータ転送とをパラレルに実行できる。
また、AXIバスは、バースト転送機能を備えている。バースト転送機能は、1回のリード要求で複数の単位量のリードデータを取得でき、1回のライト要求で複数の単位量のライトが実行できる機能である。
AXIバスを使用したDMA転送制御装置では、上記のリード/ライト専用バスやバースト転送機能を用いることにより、高速転送が可能である。
この発明は、データの転送元領域と転送先領域とが重なった場合におけるデータ破壊の発生を防止することを目的とする。特に、バースト転送機能を用いて転送を行った場合であっても、データ破壊の発生を防止することを目的とする。
転送元領域に記憶されたデータを転送先領域へ転送するデータ転送装置であり、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御部と、
前記転送元リード制御部が出力したリードコマンドによって読み出されたデータを取得してバッファ領域へ書き込むバッファライト制御部と、
前記バッファライト制御部が書き込んだデータを前記バッファ領域から読み出して、前記転送先領域へ送信するバッファリード制御部と、
前記バッファリード制御部が前記転送先領域へ送信したデータを、前記転送先領域へ書き込むライトコマンドを出力する転送先ライト制御部と、
前記バッファライト制御部がデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記バッファリード制御部がデータを読み出そうとしている前記バッファ領域におけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備え、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、データを前記バッファ領域から読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御部が前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とする。
図1、図2は、データ破壊が発生する場合の説明図である。特に、図1は、データの転送元領域と転送先領域とが順方向にずれている場合の説明図である。図2は、データの転送元領域と転送先領域とが逆方向にずれている場合の説明図である。
図1では、転送元領域と転送先領域とが同じデバイスにおける領域であり、領域Bが重なっている。また、図1では、転送元領域の先頭アドレスである領域Aの先頭アドレスのアドレス値は、転送先領域の先頭アドレスである領域Bの先頭アドレスのアドレス値よりも小さく、転送元領域と転送先領域とが順方向にずれている。
この場合、アドレス値の昇順方向(インクリメント方向)へ順次データ転送を行うと、まず、領域Aのデータが領域Bへ書き込まれ、その後、領域Bのデータが領域Cへ書き込まれることになる。この場合、領域Bのデータが領域Cへ書き込まれる前に、領域Bへ領域Aのデータが書き込まれてしまい、元々領域Bに記憶されていたデータが破壊されてしまう。
そこで、この場合、アドレス値の降順方向(デクリメント方向)へ順次データ転送を行うようにする。すると、まず、領域Bのデータが領域Cへ書き込まれ、その後、領域Aのデータが領域Bへ書き込まれる。そのため、データが破壊されることなく、転送が行える。
図2でも、図1と同様に、転送元領域と転送先領域とが同じデバイスにおける領域であり、領域Bが重なっている。しかし、図2では、転送元領域の先頭アドレスである領域Bの先頭アドレスのアドレス値は、転送先領域の先頭アドレスである領域Aの先頭アドレスのアドレス値よりも大きく、転送元領域と転送先領域とが逆方向にずれている。
この場合、アドレス値の降順方向(デクリメント方向)へ順次データ転送を行うと、まず、領域Cのデータが領域Bへ書き込まれ、その後、領域Bのデータが領域Aへ書き込まれることになる。この場合、領域Bのデータが領域Aへ書き込まれる前に、領域Bへ領域Cのデータが書き込まれてしまい、元々領域Bに記憶されていたデータが破壊されてしまう。
そこで、この場合、アドレス値の昇順方向(インクリメント方向)へ順次データ転送を行うようにする。すると、まず、領域Bのデータが領域Aへ書き込まれ、その後、領域Cのデータが領域Bへ書き込まれる。そのため、データが破壊されることなく、転送が行える。
通常のデータ転送では、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の順に読み出すことはできない。
したがって、転送元領域と転送先領域とが順方向にずれている場合において、バースト転送機能を用いてデータ転送を行うと、デクリメント転送を用いてもデータ破壊を防止することはできない。
なお、バーストライトコマンドの場合も、バーストリードコマンドの場合と同様に、バーストライトコマンドの発行順序は、インクリメント方向にもデクリメント方向にもできる。しかし、バーストライトコマンド内におけるデータの書き込み順序は、インクリメント方向にしかできない。
DMA転送システム10は、DMA転送制御装置100(データ転送装置)、CPU200、メモリ300を備える。
DMA転送制御装置100は、CPU200等の使用者によってレジスタに設定されたDMA情報に従い、メモリ300にアクセスしてデータ転送を行う装置である。
CPU200は、転送元領域を指定する転送元アドレス、転送先領域を指定する転送先アドレス、転送データのサイズを指定する転送サイズ、転送タイプ(インクリメント転送又はデクリメント転送)のDMA情報をDMA転送制御装置100のレジスタに設定し、DMA転送制御装置100にデータ転送を実行させる。ここでは、CPU200がDMA情報を設定するとしたが、CPU200ではなく、他の装置やシステムがDMA情報を設定してもよい。
メモリ300は、データ転送の転送元領域及び転送先領域となる対象リソースである。
なお、図5において、実線はデータが流れるデータ線を表し、破線は制御信号が流れる制御線を表す。
DMA転送制御装置100は、転送元リード制御部110、バッファライト制御部120、内部バッファ130(バッファ領域)、バッファリード制御部140、転送先ライト制御部150、データ非破壊制御部160を備える。
転送元リードコマンドは、リードアドレス、リードアドレス有効信号(もしくは、リード要求信号)、その他(バーストサイズ、バースト長)の信号をまとめた情報である。
また、バッファライト制御部120は、取得した転送元リードデータをバッファライトデータとして内部バッファ130へ出力し、内部バッファ130におけるバッファライトポインタによって指定した位置にバッファライトデータを書き込む。バッファライトポインタは、現在のバッファライト先を示した情報である。
バッファライト制御部120は、バッファライトデータの書き込みが完了した位置をバッファライト完了ポインタとして、データ非破壊制御部160へ通知する。バッファライト完了ポインタは、言い替えれば、内部バッファ130における読み出し準備が完了領域を示した情報である。
また、バッファリード制御部140は、読み出したバッファリードデータを転送先ライトデータとしてライト専用バスを介してメモリ300へ出力する。
バッファリード制御部140は、バッファリードポインタをデータ非破壊制御部160へ通知する。
転送先ライトコマンドは、ライトアドレス、ライトアドレス有効信号(もしくは、ライト要求信号)、ライトデータ有効信号、その他(バーストサイズ、バースト長、ストローブ信号)の信号をまとめた情報である。
また、データ非破壊制御部160は、デクリメント転送の場合、バッファライト完了ポインタに基づき、バッファリードポインタが示す位置のデータ読み出し準備ができているか否かを判定する。そして、データ非破壊制御部160は、データ読み出し準備ができていると判定した場合に、転送先ライト可能指示をバッファリード制御部140、転送先ライト制御部150へ出力する。なお、データ非破壊制御部160は、インクリメント転送の場合、バッファライト完了ポインタやバッファリードポインタに関わらず、常に転送先ライト可能指示を出力する。
バッファリード制御部140は、データ非破壊制御部160から転送先ライト可能指示を受信すると、内部バッファ130からデータを読み出す。また、転送先ライト制御部150は、データ非破壊制御部160から転送先ライト可能指示を受信すると、転送先ライトコマンドを出力する。
データ非破壊制御部160は、転送タイプ設定レジスタ161、バッファライト完了ポインタ設定レジスタ162、バッファリードポインタ設定レジスタ163、バッファ準備完了判断部164を備える。
転送タイプ設定レジスタ161には、CPU200から転送タイプが設定される。転送タイプ設定レジスタ161に設定された転送タイプがデータ非破壊制御部160から各制御部へ通知される。
バッファライト完了ポインタ設定レジスタ162には、バッファライト制御部120からバッファライト完了ポインタが設定される。
バッファリードポインタ設定レジスタ163には、バッファリード制御部140からバッファリードポインタが設定される。
バッファ準備完了判断部164は、転送タイプ、バッファライト完了ポインタ、バッファリードポインタに基づき、内部バッファ130からのデータ読み出し準備が完了しているか否かを判断する。データ読み出し準備が完了していると判定した場合、データ破壊が発生しないと判定し、バッファリード制御部140と転送先ライト制御部150とへ転送先ライト可能指示を出力する。
図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転送停止要因があったときに転送動作を停止する。
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へ戻す。
一方、S23では、転送元リード制御部110は、デクリメント方向にバーストリードコマンドを生成する。つまり、バーストリードコマンドのリード開始アドレスのアドレス値が降順になるように、バーストリードコマンドを生成する。
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に設定した上で、処理を終了する。
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へ戻す。
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へ送信して、データを書き込む。
一方、S53では、転送先ライト制御部150は、デクリメント方向にバーストライトコマンドを生成するということである。つまり、バーストライトコマンドのライト開始アドレスのアドレス値が降順になるように、バーストライトコマンドを生成する。
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へ戻し、再びバッファの準備が完了したか否かを判定する。
まず、図13から図15を用いて、インクリメント転送の場合の例を説明する。
図13は、転送元領域と転送先領域とを示す図である。なお、図13の1マスは、2byteを表す。図14は、DMA転送の一連の流れ(リードアクセス、ライトアクセス)を示すタイミングチャートである。図15は、DMA転送時におけるデータの変化を示す図である。
インクリメント転送を行うため、インクリメント方向にバーストリードコマンドやバーストライトコマンドが発行される。ここでは、転送元領域からデータを読み出す転送元リードコマンドとして、4バーストリードコマンド(1)と3バーストリードコマンド(2)とが順に発行される。また、転送先領域へデータを書き込む転送先ライトコマンドとして3バーストライトコマンド(1)と4バーストライトコマンド(2)とが順に発行される。そのため、転送元領域からのデータの読み出し、転送先領域へのデータの書き込みの順序は、D1,D2,D3,D4,D5,D6,D7の順である。
また、バッファライト制御部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で上書きされ、データが破壊されてしまう。
内部バッファ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は、転送元領域と転送先領域とを示す図である。なお、図16の1マスは、2byteを表す。図17は、DMA転送の一連の流れ(リードアクセス、ライトアクセス)を示すタイミングチャートである。図18及び図19は、DMA転送時におけるデータの変化を示す図である。
デクリメント転送を行うため、デクリメント方向にバーストリードコマンドやバーストライトコマンドが発行される。ここでは、転送元領域からデータを読み出す転送元リードコマンドとして、3バーストリードコマンド(1)と4バーストリードコマンド(2)とが順に発行される。また、転送先領域へデータを書き込む転送先ライトコマンドとして4バーストライトコマンド(1)と3バーストライトコマンド(2)とが順に発行される。そのため、転送元領域からのデータの読み出しの順序は、D5,D6,D7,D1,D2,D3,D4の順であり、転送先領域へのデータの書き込みの順序は、D4,D5,D6,D7,D1,D2,D3の順である。
また、バッファライト制御部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はコマンドを発行しない。
なお、図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では、CPU200がインクリメント転送を行うか、デクリメント転送を行うかを指定した。つまり、CPU200側でインクリメント転送を行うべきか、デクリメント転送を行うべきかの判断をする必要があった。
実施の形態2では、DMA転送制御装置100が転送元領域と転送先領域との重なりの状態に応じて、インクリメント転送を行うべきか、デクリメント転送を行うべきかを適切に判断する方法について説明する。
データ非破壊機能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と設定されている場合、常にインクリメント転送と各制御部へ通知する。
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転送停止要因があったときに転送動作を停止する。
Claims (7)
- 転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送装置において、
バッファ領域を有するバッファと、
前記転送元領域に記憶されたデータを取得して前記バッファ領域へ書き込むバッファライト制御部と、
前記バッファライト制御部が前記バッファ領域に書き込んだデータを前記転送先領域に書き込む転送先ライト制御部であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータをインクリメント方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっているときは前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送制御を実行し、前記転送元領域と前記転送先領域とがアドレスの降順方向に重なっているときは前記分割領域の先頭アドレスが小さい順に前記分割領域毎の書き込みを行うインクリメント転送制御を実行する転送先ライト制御部と、
実行される転送制御が前記デクリメント転送制御である場合に、前記バッファライト制御部がデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記転送先ライト制御部が書き込むデータの読み出し先の前記バッファ領域におけるアドレス値との大小関係に基づき、前記転送先ライト制御部の前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御部と
を備えたことを特徴とするデータ転送装置。 - 前記データ転送装置は、さらに、
前記転送元領域に記憶されたデータを読み出すリードコマンドを出力する転送元リード制御部と、
データを前記バッファ領域から読み出して、前記転送先領域へ送信するバッファリード制御部と
を備え、
前記バッファライト制御部は、前記転送元リード制御部が出力したリードコマンドによって読み出されたデータを取得してバッファ領域へ書き込み、
前記転送先ライト制御部は、前記バッファリード制御部が前記転送先領域へ送信したデータを、前記転送先領域へ書き込むバーストライトコマンドを生成し、
前記データ非破壊制御部は、前記バッファライト制御部がデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記バッファリード制御部がデータを読み出そうとしている前記バッファ領域におけるアドレス値との大小関係から、前記転送先領域へのデータ書き込みを許可するか否かを判定し、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、データを前記バッファ領域から読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記ライトコマンドを出力して、前記バッファリード制御部が前記転送先領域へ送信したデータを前記転送先領域へ書き込む
ことを特徴とする請求項1に記載のデータ転送装置。 - 前記転送元リード制御部は、単位量のデータづつ所定個の単位量のデータをリード開始アドレスからアドレス値の昇順に読み出すリードコマンドを、前記リード開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
前記バッファライト制御部は、前記転送元リード制御部が出力した各リードコマンドについて、前記転送元リード制御部がリードコマンドを出力した順に、そのリードコマンドによって読み出されたデータを単位量づつ取得して、そのリードコマンドにおけるリード開始アドレスに対応するバッファ領域におけるアドレスからアドレス値の昇順に書き込むとともに、そのリードコマンドによって読み出されたデータの前記バッファ領域への書き込みが終了した場合に、前記リード開始アドレスに対応するバッファ領域におけるアドレスにライト完了ポインタを設定し、
前記転送先ライト制御部は、単位量のデータづつ所定個の単位量のデータをライト開始アドレスからアドレス値の昇順に書き込むライトコマンドを、前記ライト開始アドレスのアドレス値が降順になるように複数個生成して順に出力し、
前記バッファリード制御部は、前記転送先ライト制御部が次に出力するライトコマンドにおけるライト開始アドレスに対応する、前記バッファ領域におけるアドレスにリードポインタを設定し、
前記データ非破壊制御部は、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合に、書き込みを許可すると判定し、
前記バッファリード制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、前記リードポインタが設定されたアドレスからアドレス値の昇順に単位量づつデータを読み出し、
前記転送先ライト制御部は、書き込みを許可すると前記データ非破壊制御部が判定した場合に、次のライトコマンドを出力する
ことを特徴とする請求項2に記載のデータ転送装置。 - 前記データ非破壊制御部は、前記転送元領域と前記転送先領域とが重複する場合であっ
て、前記転送元領域の先頭位置を表す先頭アドレスのアドレス値が前記転送先領域の先頭位置を表す先頭アドレスのアドレス値以下である場合には、デクリメント転送を行い、他の場合には、インクリメント転送を行うと判定し、
前記転送元リード制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が降順になるように前記リードコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記リード開始アドレスのアドレス値が昇順になるように前記リードコマンドを複数個生成して順に出力し、
前記転送先ライト制御部は、デクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が降順になるように前記ライトコマンドを複数個生成して順に出力し、インクリメント転送を行うと前記データ非破壊制御部が判定した場合、前記ライト開始アドレスのアドレス値が昇順になるように前記ライトコマンドを複数個生成して順に出力し、
前記データ非破壊制御部は、デクリメント転送を行うと判定した場合、前記リードポインタが設定されたアドレスのアドレス値が、前記ライト完了ポインタに設定されたアドレスのアドレス値以上である場合に、書き込みを許可すると判定し、インクリメント転送を行うと判定した場合、前記リードポインタと前記ライト完了ポインタとに設定されたアドレスに関わらず、書き込みを許可すると判定する
ことを特徴とする請求項3に記載のデータ転送装置。 - 前記バッファライト制御部は、リードコマンドによって読み出されたデータをリード用バスを介して取得し、
前記バッファリード制御部は、前記バッファ領域から読み出したデータを前記リード用バスとは異なるライト用バスを介して転送先領域へ送信する
ことを特徴とする請求項2から4までのいずれかに記載のデータ転送装置。 - 転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送方法において、
前記転送元領域に記憶されたデータを取得してバッファ領域へ書き込むバッファライト制御ステップと、
前記バッファライト制御ステップで前記バッファ領域に書き込まれたデータを前記転送先領域に書き込む転送先ライト制御ステップであって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータをインクリメント方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっているときは前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送制御を実行し、前記転送元領域と前記転送先領域とがアドレスの降順方向に重なっているときは前記分割領域の先頭アドレスが小さい順に前記分割領域毎の書き込みを行うインクリメント転送制御を実行する転送先ライト制御ステップと、
実行される転送制御が前記デクリメント転送制御である場合に、前記バッファライト制御ステップでデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記転送先ライト制御ステップで書き込むデータの読み出し先の前記バッファ領域におけるアドレス値との大小関係に基づき、前記転送先ライト制御ステップでの前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御ステップと
を備えたことを特徴とするデータ転送方法。 - 転送元領域に記憶されたデータを転送先領域へバースト転送するデータ転送プログラムにおいて、
前記転送元領域に記憶されたデータを取得してバッファ領域へ書き込むバッファライト制御処理と、
前記バッファライト制御処理で前記バッファ領域に書き込まれたデータを前記転送先領域に書き込む転送先ライト制御処理であって、前記転送元領域と前記転送先領域とが重なっている場合に、前記転送先領域を分割した各分割領域に対してデータをインクリメント方向に書き込むバーストライトコマンドを生成するとともに、前記転送元領域と前記転送先領域とがアドレスの昇順方向に重なっているときは前記分割領域の先頭アドレスが大きい順に前記分割領域毎の書き込みを行うデクリメント転送制御を実行し、前記転送元領域と前記転送先領域とがアドレスの降順方向に重なっているときは前記分割領域の先頭アドレスが小さい順に前記分割領域毎の書き込みを行うインクリメント転送制御を実行する転送先ライト制御処理と、
実行される転送制御が前記デクリメント転送制御である場合に、前記バッファライト制御処理でデータの書き込みを完了した前記バッファ領域におけるアドレス値と、前記転送先ライト制御処理で書き込むデータの読み出し先の前記バッファ領域におけるアドレス値との大小関係に基づき、前記転送先ライト制御処理での前記転送先領域へのデータ書き込みを許可するか否かを判定するデータ非破壊制御処理と
をコンピュータに実行させたことを特徴とするデータ転送プログラム。
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 JP2012118774A (ja) | 2012-06-21 |
JP2012118774A5 JP2012118774A5 (ja) | 2013-01-24 |
JP5656589B2 true 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) |
Family Cites Families (3)
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 | データ転送装置 |
-
2010
- 2010-12-01 JP JP2010268116A patent/JP5656589B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012118774A (ja) | 2012-06-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) | データ転送装置、データ転送方法及びデータ転送プログラム | |
CN100592271C (zh) | 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法 | |
KR0160193B1 (ko) | 직접메모리접근 제어장치 | |
US20070220361A1 (en) | Method and apparatus for guaranteeing memory bandwidth for trace data | |
JP2004005613A (ja) | 専用フラッシュコントローラを使用してフラッシュベースストレージシステムの性能を改善するための方法 | |
US20050198458A1 (en) | Memory controller having a read-modify-write function | |
TW201319814A (zh) | 用於周邊組件之高優先權命令佇列 | |
US20140379979A1 (en) | Memory access alignment in a double data rate ('ddr') system | |
US10585822B2 (en) | Operation method of host system including storage device and operation method of storage device controller | |
JP6602579B2 (ja) | 半導体装置およびシステム | |
JP2010500682A (ja) | フラッシュメモリアクセス回路 | |
KR100868395B1 (ko) | Dma 전송을 수행하기 위한 장치 및 방법과 머신 판독 가능 매체 | |
CN113868039A (zh) | 一种测试方法、装置及相关设备 | |
JP2013092852A (ja) | バス接続回路、半導体装置及びバス接続回路の動作方法 | |
US20210191884A1 (en) | Storage controller managing completion timing, and operating method thereof | |
JP3803196B2 (ja) | 情報処理装置、情報処理方法および記録媒体 | |
US11093276B2 (en) | System and method for batch accessing | |
JP3824122B2 (ja) | Dma装置 | |
JP5656589B2 (ja) | データ転送装置、データ転送方法及びデータ転送プログラム | |
JP2007172129A (ja) | 不揮発性メモリアクセス制御装置および不揮発性メモリ制御システム | |
WO2000025205A1 (en) | Controlling access to a primary memory | |
US8402233B2 (en) | Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems | |
JP2007018440A (ja) | アーキテクチャ検証装置 |
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 |