JP4956848B2 - Dma転送制御装置 - Google Patents

Dma転送制御装置 Download PDF

Info

Publication number
JP4956848B2
JP4956848B2 JP2009009424A JP2009009424A JP4956848B2 JP 4956848 B2 JP4956848 B2 JP 4956848B2 JP 2009009424 A JP2009009424 A JP 2009009424A JP 2009009424 A JP2009009424 A JP 2009009424A JP 4956848 B2 JP4956848 B2 JP 4956848B2
Authority
JP
Japan
Prior art keywords
data
transfer
address
buffer
byte
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
Application number
JP2009009424A
Other languages
English (en)
Other versions
JP2010170164A (ja
Inventor
博明 別府
茂則 宇野
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.)
NEC Engineering Ltd
Original Assignee
NEC Engineering Ltd
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 NEC Engineering Ltd filed Critical NEC Engineering Ltd
Priority to JP2009009424A priority Critical patent/JP4956848B2/ja
Publication of JP2010170164A publication Critical patent/JP2010170164A/ja
Application granted granted Critical
Publication of JP4956848B2 publication Critical patent/JP4956848B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、DMA転送制御装置、特に、DMA転送データに対してバイトアラインを行う機能を備えたDMA制御装置に関する。
DMA転送方式は、プロセッサを介さずに転送相手へ直接データ転送を行なうための技法の一つとして周知である。このようなDMA転送方式を用いることにより、プロセッサを使用しデータを転送する場合に比べて高速にデータ転送を行うことができる。
DMA転送では、転送元アドレスを保持する転送元アドレスレジスタ、転送先アドレスを保持する転送先アドレスレジスタおよび転送サイズを保持する転送サイズレジスタを備え、プロセッサからこれらのレジスタへ設定が行われる。その後、転送開始リクエストが発生することにより、転送元アドレスレジスタで設定された転送元デバイスから転送先アドレスレジスタで設定された転送先デバイスへ転送サイズ分のデータが転送される。
データ転送単位はプロセッサ処理単位であり、例えば、32ビットプロセッサであればデータ転送のバス幅は32ビットとなる。しかし、現在のプロセッサの殆どは8ビットを最小の処理単位として扱うため、この場合は、1つのデータの単位が8ビット(1バイト)となり、32ビットプロセッサの場合の32ビット分のバス幅で8ビットの転送を行うこととなる。
このように、データの境界が例えば8ビット単位であるときは、データ転送元アドレスのバス幅に対する位置と、データ転送先アドレスのバス幅に対する位置が異なっている、というケースがあり得る。これらの位置を合わせる(バイトアラインという)ことにより、アドレスがどの位置であっても、所期のDMA転送を行なうことができるようにした従来技術を開示するものとして下記の特許文献が知られている。
特許文献1に記載の技術では、バイトアラインされた転送元データを内部バッファのアドレス“0”番地から書き込むため、レジスタで一度データを保持しシフトレジスタを使用し、転送先へのデータ転送は転送先アドレスに従いシフトレジスタを使用してバイトアラインを行っている。このため、バイトアラインされたデータを成形するため、転送元デバイスから転送元データを受け取る際にデータを成形するシフトレジスタがバス幅の1段分、転送先デバイスに転送先データを転送する際にデータを成形するシフトレジスタがバス幅の1段分、データを一時保持するレジスタがバス幅の1段分必要となり回路規模が増大してしまう。
また、1回目の転送元データと2回目の転送元データを受け取り、シフトレジスタでデータを成形し内部バッファへ書き込む構成となっているため、最低でも2クロック分の書き込み時間が必要となるので、3バースト以上のバースト転送の場合には必ずWAIT期間が必要となり、転送処理の高速化の妨げとなる。
更に、転送元から受け取るDMA転送の最終データがアドレスのワード境界であった場合には、そのアドレス以降のデータを空データと認識して内部バッファに保持しないため、続けて前DMA転送終了アドレスからDMAを開始するDMA連続転送の場合には、前DMA転送時に受け取った転送元の最終データを再度受け取らなければならない。
この点は特許文献2に記載の技術でも同様である。そこで、転送元から受け取るDMA転送の最終データがアドレスのワード境界であった場合に、そのアドレス以降のデータを内部バッファに保持しようとすると、続けて、前DMA転送終了アドレスからDMAを開始するDMA連続転送の場合には、前DMA転送時に受け取った転送元の最終データを保持した内部バッファのアドレスが先頭となってしまう。この場合、内部バッファはリングバッファ形式で構成しなければ実現できず、内部バッファのアドレス管理が非常に複雑になってしまうため回路規模が増大し、且つ全体の転送時間に影響を与えることとなる。
特開2006−4340号公報 特開2002−215563号公報
解決しようとする問題点は、バイトアラインを要するDMA転送においてはデータ転送時間が長くなり、また、回路規模が大きくなるという点である。
本発明は、データ転送時間を短縮し、回路規模を小さくするため、転送元データを並び替えし転送先アドレスを生成するためのロジックをデータ並び替え回路に組み込んだことを最も主要な特徴とする。
本発明のDMA転送制御装置は、従来技術では、転送元デバイスから受け取る転送元データの成形を行うバス幅分のシフトレジスタが1段と、転送先デバイスへ転送する転送先データの成形を行うバス幅分のシフトレジスタ1段と、データの一時保持を行うバス幅分のレジスタ1段が必要であったが、本発明においては、転送元データを並び替えし、転送先のスタートアドレスを生成するためのロジックをデータ並び替え回路に組み込んだため、データの並び替えを行うレジスタ1段で足りる。
また、転送元データを並び替えし、転送先のスタートアドレスを生成するためのロジックをデータ並び替え回路に組み込んだため、転送元データ並び替えに際にて、レジスタの間をデータが移動することがなくなり、DMA転送時にWAIT期間なしに連続してデータ店を行なうことができる。
また、データ並び替え回路において、DMA連続転送の場合に内部バッファの容量制約上書き込めなかった前DMA転送終了アドレスの転送データを保持しておき、次のDMA転送における転送データの転送元メモリからの読出しと同時に、内部バッファへ書き込める構成としたので、上記の前DMA転送終了アドレスの転送データ、つまり、次のDMA転送における先頭データを再度読み出す必要がなくなる。
このように、本発明によれば、どのアドレスからもバイトアライン境界に影響されることなく、小さい回路規模で効率的なDMA転送が可能となる。
本発明のDMA転送制御装置の内部構成ブロック図である。 本発明におけるデータ並び替え回路と内部バッファの詳細ブロック図である。 データ並び替え回路におけるデータ変換パターン一覧図である。 転送元メモリおよび転送先メモリにおけるデータ格納例を示す説明図である。 本発明の動作例を示した第1の説明図である。 本発明の動作例を示した第2の説明図である。 本発明の動作例を示した第3の説明図である。
DMA転送においてデータ転送回数を少なくし、また、回路規模の縮小化を図るという目的を、転送元アドレスと転送先アドレスとに基づいて、転送データをシフト処理するロジックと、シフト処理した転送データを内部バッファへ書き込むべきスタートアドレスを生成するためのロジックをデータ並び替え制御部に組み込むことにより実現した。
図1は、本発明の実施例1としてのDMA転送制御装置200の概略構成をCPU100、転送元メモリ300および転送先メモリ301と共に示すブロック図である。このDMA転送制御装置200は、転送元メモリ300から転送先メモリ301へのバイトアラインを要するDMA転送を実行することができる。バイトアラインの必要なDMA転送について具体的なイメージを得るには、図4を一見するとよい。図4は、転送元メモリ300に格納されている転送元アドレス0x0001〜0x002032バイトのデータ00〜1Fを転送先メモリ301へ転送先アドレス0x0002〜0x0021としてDMA転送しようとする様子を示す。この例においては、転送元アドレスと転送先アドレスに1アドレスのズレがある。
DMA転送制御装置200は、転送サイズを保持する為の転送サイズレジスタ201、転送元アドレスを保持する為の転送元アドレスレジスタ202、転送先アドレスを保持する為の転送先アドレスレジスタ203、DMA転送を管理する為のDMA制御回路204、転送先メモリからのデータを並び替える為のデータ並び替え回路205、並び替えたデータをまとめて保持する為の内部バッファ206を備えている。
転送サイズレジスタ201は、CPU100によりアクセス可能で、DMA転送動作前に、転送サイズをCPU100から書き込まれ保持する。保持された転送サイズは、DMA転送制御回路204にパラメータとして入力され処理される。転送元アドレスレジスタ202は、CPU100によりアクセス可能で、DMA転送動作前に、転送元アドレスをCPU100から書き込まれ保持する。保持された転送元アドレスは、DMA転送制御回路204およびデータ並び替え回路205にパラメータとして入力され処理される。転送先アドレスレジスタ203は、CPU100によりアクセス可能で、DMA転送動作前に、転送先アドレスをCPU100から書き込まれ保持する。保持された転送先アドレスは、DMA転送制御回路204およびデータ並び替え回路205にパラメータとして入力され処理される。
DMA制御回路204は、転送サイズレジスタ201,転送元アドレスレジスタ202,転送先アドレスレジスタ203からそれぞれ入力された転送サイズ,転送元アドレス,転送先アドレスにより、読み書きサイクル数および読み書きサイクル当たりのバースト数を管理する。バースト数とは、バイトレーン、即ちデータ転送単位の数である。また、バースト毎に転送元メモリ300からのデータの読出し動作と転送先メモリ301へのデータの書込み動作を実施する。
データ並び替え回路205は、転送元アドレスレジスタ202から入力された転送元アドレスと、転送先アドレスレジスタ203から入力された転送先アドレスとにより、転送元メモリ300から読み出したデータの並び替え、即ちバイトアラインを行い、バイトアラインされたデータを内部バッファ206へ出力する。データ並び替え回路205は、このときのスタートアドレスを転送元アドレスと転送先アドレスとにより生成して内部バッファ206に出力する。
内部バッファ206は、データ並び替え回路205から入力してくるバイトアラインされたデータを、データ並び替え回路205から入力してくるスタートアドレスから書き込み保持する。保持されたデータは転送先メモリ301へ書き込まれる。
この実施例においては、CPU100における処理単位は、最低1バイトであり、そのために1バイトごとにアドレスが割り振られている。CPU100とDMA転送制御装置200の間、並びにDMA転送制御装置200と転送元メモリ300および転送先メモリ301の間は32ビット幅のバスで接続されている。
図2は、データ並び替え回路205と内部バッファ206の詳細図である。データ並び替え回路205は、データ並び替え制御部207,変換レジスタ208およびバッファアドレス生成部209で構成されている。データ並び替え制御部207は、転送元メモリ300から読み出されたデータについて、転送元アドレスレジスタ202から入力される転送元アドレスと、転送先アドレスレジスタ203から入力される転送先アドレスにより、4つのバイトレーンごとに並び替えを実施して変換レジスタ208へ出力する。
変換レジスタ208は、バイトレーンごとに並び替えられた1バイトデータを保持する4つのレジスタ0〜3から成る。この変換レジスタ208は、転送元メモリ300から読み出された最終データを常に保持しておき、バス幅に対するアライメントが合っていない転送時に発生する転送元メモリ300の同じアドレスに対しての2度読みを防止し、転送効率を良くする目的を持っている。バッファアドレス生成部209は、並び替えられたデータが入力されるべき内部バッファ206のバッファアドレスを生成する。
内部バッファ206は、バイトレーンごとにアドレス0〜3を有するバッファ210〜213から成る。バッファ210〜213は、バッファアドレス生成部209からのバッファアドレスに従ってレジスタ0〜3からのデータをアドレス0〜3のいずれかに保持する。バッファ210〜213それぞれは、1バイト幅×4ワードのサイズのフリップフロップまたはRAMで構成される。
図3は、データ並び替え回路205において実施されるデータ並び替えのためのデータ変換パターンの一覧と、バッファアドレス生成部209が生成する内部バッファ206のスタートアドレスの一覧と、内部バッファ206の転送可能な有効バッファの段数を示す。データ変換パターンは、転送元アドレスの下位2ビットと転送先アドレスの下位2ビットとで定められ、このようなロジックがデータ並び替え回路205に組み込まれている。例えば、転送元アドレスの下位2ビットが「00」、転送先アドレスの下位2ビットが「00」のときは、レジスタ0,1,2,3にはデータDO,D1,D2,D3が入力するが、転送元アドレスの下位2ビットが「01」、転送先アドレスの下位2ビットが「10」のときは、レジスタ0,1,2,3にはデータD2,D1,D0,D3が入力する。
スタートアドレスは、転送元アドレスの下位2ビットと転送先アドレスの下位2ビットとで定められ、このようなロジックがバッファアドレス生成部209に組み込まれている。スタートアドレスは、最初(1回目)のバースト転送の時と、2回目以降の時で異なる場合が存在する。その場合は転送可能な有効バッファの段数も1段分少なくなる。
以上のような構成において、転送元メモリ300からDMA制御回路204によって発生したバースト数分だけ連続で読み出されたデータは、データ並び替え回路205で変換され、内部バッファ206に保持されていく。その後、データが内部バッファ206のバッファサイズに達した時点、または転送サイズ分のデータの読出しが終了した時点で転送先メモリ301へデータの書込みが開始される。従って、バス幅に対するアライメントが合っていない転送元アドレスおよび転送先アドレスが設定されていても、連続で効率の良い転送が可能なDMA転送制御装置を実現することができる。尚、ここでは、データのバス幅は32ビット、最大バースト数を4として内部バッファ206のサイズを4ワードとしているが、本発明はこれに限定されるものではない。
次に、本DMA転送制御装置200のデータ転送動作について、図4〜図7を参照しながら説明する。図4は、転送元メモリ300に格納されている転送データおよびDMAデータ転送動作終了後に転送先メモリ301に格納された格納データの状態を示す。先に言及したように、転送元アドレスと転送先アドレスには1アドレスのズレがあり、バイトアライン(図3の7行目を適用)が必要とされる。ここでは、このようなDMA転送について説明する。図4において、転送元メモリ300および転送先メモリ301におけるワードは、4バイト構成であって、各バイトはLSB側から、DATA[7:0],DATA[15:8],DATA[23:16],DATA[31:24]とする。
(基本動作フロー)
転送元メモリ300からのデータの読出し及び転送先メモリ301へのデータの書込みは、必ずバス幅に対するアライメントが合っているアドレスから行なう。このDMAデータ転送動作の例では、転送サイズが32バイトで、最大バースト数が4バーストなので、第1回目が4バースト(15バイト)の読出し/書込みサイクル、第2回目が4バースト(16バイト)の読出し/書込みサイクル、第3回目が1バースト(1バイト)の読出し/書込みサイクルがDMA制御回路204により発生する。各処理は1クロックごとに実施される。
(1)1回目の読み書きサイクル
図5は、1回目の読み書きサイクルを説明した図であり、このサイクルは以下の手順で4回のバーストが実施される。この手順(処理1−1〜処理1−5)により、転送元メモリ300のアドレス0x0000〜0x000Cのデータが処理される。
(処理1−1)
処理1−1では、転送元メモリ300の0x0000番地から転送するデータが読み出される(1バースト目)。読み出されたデータは、図3の7行目のデータ変換パターンに従って、データ並び替え回路205で、DATA[7:0]が変換レジスタ208のレジスタ1、DATA[15:8]が変換レジスタ208のレジスタ2、DATA[23:16]が変換レジスタ208のレジスタ3、DATA[31:24]が変換レジスタ208のレジスタ0に移送される。DATA[7:0](Yと記す)は前回のDMA転送における最終データであり、DATA[15:8]は転送データ“00”、DATA[23:16]は転送データ“01”、DATA[31:24]は転送データ“02”である。
同時に、変換レジスタ208に存在していたデータは、内部バッファ206を構成するバッファ210〜213のそれぞれのバッファアドレス0x0番地に書き込まれる。このときのバッファ210〜213への書込みは、残留データについてのものであるから、図3におけるスタートアドレスの適用はなく、バッファアドレス0x0番地とされるのである。即ち、変換レジスタ208には、前回のDMA転送におけるデータ(Xと記す)が残っており、そのまま内部バッファ206に書き込まれる。
(処理1−2)
処理1−2では、転送元メモリ300の0x0004番地から転送するデータが読み出される(2バースト目)。読み出されたデータは、処理1−1と同じように、並び替えられ変換レジスタ208に移送される。変換レジスタ208に残っていたデータ(X)は、処理1−1の結果によりDATA[7:0]〜DATA[31:24]で上書きされている。
同時に、変換レジスタ208に存在しているデータは、図3のスタートアドレスが示すように、内部バッファ206を構成するバッファ210のバッファアドレス0x1番地、バッファ211のバッファアドレス0x0番地、バッファ212のバッファアドレス0x0番地、バッファ213のバッファアドレス0x0番地に書き込まれる。バッファ210のバッファアドレス0x0番地にはデータX、バッファ211のバッファアドレス0x0番地にはデータYが残っている。書込み終了後、それぞれのバッファアドレスは、+1番地インクリメントされる。このように、転送元データは、アドレスがバイト単位に1つシフトされた形でローテンションされて変換レジスタ208に保持され内部バッファ206に書き込まれる。
(処理1−3)
処理1−3では、転送元メモリ300の0x0008番地から転送するデータが読み出される(3バースト目)。読み出されたデータは、処理1−1と同じように、並び替えられ変換レジスタ208に移送される。同時に、変換レジスタ208に存在していたデータは、内部バッファ206を構成するバッファ210のバッファアドレス0x2番地、バッファ211のバッファアドレス0x1番地、バッファ212のバッファアドレス0x1番地、バッファ213のバッファアドレス0x1番地に書き込まれる。書込み終了後、それぞれのバッファアドレスは、+1番地インクリメントされる。
(処理1−4)
処理1−4では、転送元メモリ300の0x000C番地から転送するデータが読み出される(4バースト目)。読み出されたデータは、処理1−1と同じように、並び替えられ変換レジスタ208に移送される。同時に、変換レジスタ208に存在しているデータは、内部バッファ206を構成するバッファ210のバッファアドレス0x3番地、バッファ211のバッファアドレス0x2番地、バッファ212のバッファアドレス0x2番地、バッファ213のバッファアドレス0x2番地に書き込まれる。書込み終了後、それぞれのバッファアドレスは、+1番地インクリメントされる。
(処理1−5)
処理1−5では、変換レジスタ208に存在しているデータが、内部バッファ206を構成するバッファ211のバッファアドレス0x3番地、バッファ212のバッファアドレス0x3番地、バッファ213のバッファアドレス0x3番地に書き込まれる。処理1−4の時点で4バースト分のデータ読出しが完了しており、転送元メモリ300からのデータの読出しは実施しない。また、バッファ210に対しては、処理1−4の時点で空きスペースがないので書込みは実施されない。
処理1−5が終了した時点で、内部バッファ206はデータを保持する為の空きスペースがない状態になっており、次のクロックにより、内部バッファ206に保持された転送データの転送先メモリ301への書込みサイクルが4バースト分実施される。この時、転送元メモリ300から読み出されたデータ“0E”は、まだ転送先メモリ301へ書き込まれていない。DMA制御回路204は、転送したデータ量を管理しており、2回目の読出し/書込みサイクルの準備をする。
(2)2回目の読み書きサイクル
図6は、2回目の読み書きサイクルを説明した図であり、このサイクルは以下の手順で4回のバーストが実施される。この手順(処理2−1〜処理2−5)により、転送元メモリ300のアドレス0x0010〜0x001Cのデータが処理される。
(処理2−1)
処理2−1では、転送元メモリ300の0x0010番地から転送するデータが読み出される(1バースト目)。読み出されたデータは、図3の7行目のデータ変換パターンに従って、データ並び替え回路205で、DATA[7:0]が変換レジスタ208のレジスタ1、DATA[15:8]が変換レジスタ208のレジスタ2、DATA[23:16]が変換レジスタ208のレジスタ3、DATA[31:24]が変換レジスタ208のレジスタ0に移送される。DATA[7:0]は転送データ“0F”、DATA[15:8]は転送データ“10”、DATA[23:16]は転送データ“11”、DATA[31:24]は転送データ“12”である。
同時に、変換レジスタ208に存在しているデータは、内部バッファ206を構成するバッファ210〜213のそれぞれのバッファアドレス0x0番地に書き込まれる。このときのバッファ210〜213への書込みは、残留データについてのものであるから、図3におけるスタートアドレスの適用はなく、バッファアドレス0x0番地とされるのである。即ち、変換レジスタ208は、処理1−5におけるデータを保持しており、そのまま内部バッファ206に書き込まれる。この結果、処理1−5において内部バッファ206への書込みが留保された転送データ“0E”の書込みが実行される。従って、再度、転送元メモリ300の0x000C番地からデータを読み直す必要はないのである。なお、他の転送データ“0B”,“0C”,“0D”も内部バッファ206に書き込まれる。
(処理2−2)
処理2−2では、転送元メモリ300の0x0014番地から転送するデータが読み出される(2バースト目)。読み出されたデータは、処理2−1と同じように、並び替えられ変換レジスタ208に移送される。変換レジスタ208に残っていたデータは、処理2−1の結果により、転送データ“0F”〜“12”で上書きさている。
同時に、変換レジスタ208に存在しているデータは、図3のスタートアドレスが示すように、内部バッファ206を構成するバッファ210のバッファアドレス0x1番地、バッファ211のバッファアドレス0x0番地、バッファ212のバッファアドレス0x0番地、バッファ213のバッファアドレス0x0番地に書き込まれる。この結果、処理2−1で内部バッファ206に書き込まれた転送データ“0B”,“0C”,“0D”は、これらのデータにより上書きされる。書込み終了後、それぞれのバッファアドレスは、+1番地インクリメントされる。
(処理2−3)
処理2−3では、転送元メモリ300の0x0018番地から転送するデータが読み出される(3バースト目)。読み出されたデータは、処理2−1と同じように、並び替えられ変換レジスタ208に移送される。また、同時に変換レジスタ208に存在しているデータは、内部バッファ206を構成するバッファ210のバッファアドレス0x2番地、バッファ211のバッファアドレス0x1番地、バッファ212のバッファアドレス0x1番地、バッファ213のバッファアドレス0x1番地に書き込まれる。書込み終了後、それぞれのバッファアドレスは、+1番地インクリメントされる。
(処理2−4)
処理2−4では、転送元メモリ300の0x001C番地から転送するデータが読み出される(4バースト目)。読み出されたデータは、処理2−1と同じように、並び替えられ変換レジスタ208に移送される。同時に、変換レジスタ208に存在しているデータは、内部バッファ206を構成するバッファ210のバッファアドレス0x3番地、バッファ211のバッファアドレス0x2番地、バッファ212のバッファアドレス0x2番地、バッファ213のバッファアドレス0x2番地に書き込まれる。書込み終了後、それぞれバッファアドレスは、+1番地インクリメントされる。
(処理2−5)
処理2−5では、変換レジスタ208に存在しているデータが、内部バッファ206を構成するバッファ211のバッファアドレス0x3番地、バッファ212のバッファアドレス0x3番地、バッファ213のバッファアドレス0x3番地に書き込まれる。処理2−4の時点で4バースト分のデータ読出しが完了しており、転送元メモリ300からのデータの読出しは実施しない。また、バッファ210に対しては、処理2−4の時点で空きスペースがないので書込みは実施されない。
処理2−5が終了した時点で、内部バッファ206はデータを保持する為の空きスペースがない状態になっており、次のクロックより内部バッファ206に保持された転送データの転送先メモリ301への書込みサイクルが4バースト分実施される。この時、転送元メモリ301から読み出されたデータ“1E”は、まだ転送先メモリ301へ書き込まれていない。DMA制御回路204は、転送したデータ量を管理しており、3回目の読出し/書込みサイクルの準備をする。
(3)3回目の読み書きサイクル
図7は、3回目の読み書きサイクルを説明した図であり、このサイクルは以下の手順で1回のバーストが実施される。この手順(処理3−1〜処理3−2)により、転送元メモリ300のアドレスアドレス0x0020のデータが処理される。
(処理3−1)
処理3−1では、転送元メモリ300の0x0020番地から転送するデータが読み出される(1バースト目)。読み出されたデータは、図3の7行目のデータ変換パターンに従って、データ並び替え回路205で、DATA[7:0]が変換レジスタ208のレジスタ1、DATA[15:8]が変換レジスタ208のレジスタ2、DATA[23:16]が変換レジスタ208のレジスタ3、DATA[31:24]が変換レジスタ208のレジスタ0に移送される。転送元メモリ300の0x0020番地から読み出されたデータは、“1F”を除いては、当該DMA転送対象外のデータである。
同時に、変換レジスタ208に存在しているデータは、内部バッファ206を構成するバッファ210〜213のそれぞれのバッファアドレス0x0番地に書き込まれる。このときのバッファ210〜213への書込みは、残留データについてのものであるから、図3におけるスタートアドレスの適用はなく、バッファアドレス0x0番地とされるのである。即ち、変換レジスタ208は、処理2−5におけるデータを保持しており、そのまま内部バッファ206に書き込まれる。この結果、処理2−5において内部バッファ206への書込みが留保された転送データ“1E”の書込みが実行される。従って、再度、転送元メモリ300の0x000C番地からデータを読み直す必要はないのである。なお、他の転送データ“1B”,“1C”,“1D”も内部バッファ206に書き込まれる。
(処理3−2)
処理3−2では、変換レジスタ208に存在しているデータを、内部バッファ206を構成するバッファ210のバッファアドレス0x1番地、バッファ211のバッファアドレス0x0番地、バッファ212のバッファアドレス0x0番地、バッファ213のバッファアドレス0x0番地に書き込まれる。既に処理3−1で1バースト分のデータ読出しが完了しており、転送元メモリ300からのデータの読出しは実施しない。このとき、変換レジスタ208に存在しているデータは、“1F”を除いては、当該DMA転送対象外のデータである。処理3−1で内部バッファ206に書き込まれた転送データ“1B”,“1C”,“1D”は、これらのデータにより上書きされる。
処理3−2が終了した時点で、内部バッファ206に転送サイズ分のデータの読込みが完了しており、次のクロックより内部バッファ206に保持された転送データの転送先メモリ301への書込みサイクルが4バースト分実施される。
以上の処理により、DMAデータ転送動作が終了し、図4に示したように、転送元メモリ300のデータが転送先メモリ301へ転送される。
100 CPU
200 DMA転送制御装置
201 転送サイズレジスタ
202 転送元アドレスレジスタ
203 転送先アドレスレジスタ
204 DMA転送制御回路
205 データ並び替え回路
206 内部バッファ
207 データ並び替え制御部
208 変換レジスタ
209 バッファアドレス生成部
210 バッファ
211 バッファ
212 バッファ
213 バッファ

Claims (3)

  1. 複数Nバイト幅のバスを介してNバイト(バイトレーン)単位のDMA転送を連続して行なうDMA制御装置において、
    該DMA転送は、少なくとも1バイトレーンのバースト読み書きを少なくとも1つ有する少なくとも1つの読み書きサイクルによって実行され、
    転送元メモリが格納している転送データを前記バイトレーンごとにバイトアラインするデータ並び替え回路と、バイトアラインされた転送データを格納し転送先メモリへバースト転送するための内部バッファとから成り、
    前記内部バッファは、それぞれが所定のバースト長に相当する段数のN個のバッファから成り、
    前記データ並び替え回路は、データ並び替え制御部,変換レジスタおよびバッファアドレス生成部で構成され、
    前記変換レジスタは、前記バイトレーンごとに1バイトデータを保持するN個のレジスタから成り、
    前記データ並び替え制御部は、前記転送元メモリから読み出されたデータについて、バイトレーンごとに転送元アドレスと転送先アドレスの差分だけバイト位置をシフトして前記変換レジスタへ移送し、
    前記バッファアドレス生成部は、前記Nの平方根だけの転送元アドレスの下位ビットと転送元アドレスの下位ビットを比較して、前記変換レジスタが保持している当該読み書きサイクルにおける転送データを書き込むべき前記内部バッファの番地を指定するスタートアドレスを生成することを特徴とするDMA制御装置。
  2. 前記バッファアドレス生成部は、前記比較の結果により、前者が後者を超えないときは、前記バッファの内の両者の差分数に相当する数だけの下位バッファの第2段、
    前者が後者を超えたときは、前記バッファの内の前記Nから両者の差分数に相当する数を減じた数だけの上位バッファの最終段を前記内部バッファの1回目の前記スタートアドレスとし、また前記バッファの内、両者の差分数に相当する数だけの下位バッファの第2段を2回目以降の前記スタートアドレスすることを特徴とする請求項1に記載のDMA制御装置。
  3. 前記読み書きサイクルの当初における前記変換レジスタから前記内部バッファへの書込みは、前記バッファの全てについて第1段とすることを特徴とする請求項1または請求項2に記載のDMA制御装置。
JP2009009424A 2009-01-20 2009-01-20 Dma転送制御装置 Expired - Fee Related JP4956848B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009009424A JP4956848B2 (ja) 2009-01-20 2009-01-20 Dma転送制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009009424A JP4956848B2 (ja) 2009-01-20 2009-01-20 Dma転送制御装置

Publications (2)

Publication Number Publication Date
JP2010170164A JP2010170164A (ja) 2010-08-05
JP4956848B2 true JP4956848B2 (ja) 2012-06-20

Family

ID=42702289

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009009424A Expired - Fee Related JP4956848B2 (ja) 2009-01-20 2009-01-20 Dma転送制御装置

Country Status (1)

Country Link
JP (1) JP4956848B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159075A (zh) * 2019-12-31 2020-05-15 成都海光微电子技术有限公司 数据传输方法和数据传输装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5840451B2 (ja) 2011-10-18 2016-01-06 ルネサスエレクトロニクス株式会社 メモリ制御装置
US9898438B2 (en) 2014-10-13 2018-02-20 Samsung Electronics Co., Ltd. Symbol lock method and a memory system using the same
CN111915477B (zh) * 2020-08-08 2022-09-06 湖南非雀医疗科技有限公司 一种彩色超声多普勒转置存储的地址轮换方法
CN115374032B (zh) * 2022-10-24 2023-02-17 北京智芯微电子科技有限公司 存储器中非对齐数据传输方法、写入方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63198143A (ja) * 1987-02-12 1988-08-16 Nec Corp デ−タ転送制御装置
JP3206568B2 (ja) * 1998-10-28 2001-09-10 日本電気株式会社 Dma制御方法及び装置
JP2002215563A (ja) * 2001-01-19 2002-08-02 Fuji Xerox Co Ltd Dma制御装置
JP2003256355A (ja) * 2002-02-27 2003-09-12 Canon Inc Dma制御装置、印刷装置、及びdma制御方法
JP2006004340A (ja) * 2004-06-21 2006-01-05 Victor Co Of Japan Ltd Dma転送制御装置
JP2006139416A (ja) * 2004-11-10 2006-06-01 Canon Inc データ転送装置およびデータ転送方法
JP2007034488A (ja) * 2005-07-25 2007-02-08 Canon Inc Dma制御装置及びその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159075A (zh) * 2019-12-31 2020-05-15 成都海光微电子技术有限公司 数据传输方法和数据传输装置

Also Published As

Publication number Publication date
JP2010170164A (ja) 2010-08-05

Similar Documents

Publication Publication Date Title
US6341318B1 (en) DMA data streaming
JP4956848B2 (ja) Dma転送制御装置
TWI484407B (zh) 週邊模組暫存器存取方法及裝置
US9552619B2 (en) Image processing apparatus and image processing interface circuit
US6728797B2 (en) DMA controller
JP5359569B2 (ja) メモリのアクセス方法
US10489322B2 (en) Apparatus and method to improve performance in DMA transfer of data
US20080028108A1 (en) DMA transfer control apparatus
JP2008046771A (ja) ダイレクトメモリアクセスコントローラ
JP6294732B2 (ja) データ転送制御装置及びメモリ内蔵装置
CN110968538B (zh) 一种数据缓冲方法和装置
JP2003281074A (ja) ダイレクトメモリアクセス装置
JP5675278B2 (ja) データ処理装置および画像処理装置
JP2006518069A (ja) プロセッサアレイ
US10853123B2 (en) Memory module
US20090235010A1 (en) Data processing circuit, cache system, and data transfer apparatus
US20120011295A1 (en) Method and apparatus for wireless broadband systems direct data transfer
JPH0479422A (ja) 送信制御回路
KR101116613B1 (ko) 메모리 액세스 제어 장치 및 방법
US6493775B2 (en) Control for timed access of devices to a system bus
JP2010086321A (ja) メモリ制御システム
JP5126010B2 (ja) メモリアクセス制御回路及び画像処理装置
JP2004362176A (ja) 集積回路
JP2023044909A (ja) プロセッサおよびエンディアン変換方法
KR20030072525A (ko) 직접 메모리 접근 제어 장치 및 그 제어 방법

Legal Events

Date Code Title Description
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: 20120222

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120302

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150330

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees