JP2008083911A - Dma転送制御装置および半導体集積回路装置 - Google Patents

Dma転送制御装置および半導体集積回路装置 Download PDF

Info

Publication number
JP2008083911A
JP2008083911A JP2006262130A JP2006262130A JP2008083911A JP 2008083911 A JP2008083911 A JP 2008083911A JP 2006262130 A JP2006262130 A JP 2006262130A JP 2006262130 A JP2006262130 A JP 2006262130A JP 2008083911 A JP2008083911 A JP 2008083911A
Authority
JP
Japan
Prior art keywords
data
read
write
command
amount
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.)
Withdrawn
Application number
JP2006262130A
Other languages
English (en)
Inventor
Ryuji Sawai
隆二 澤井
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006262130A priority Critical patent/JP2008083911A/ja
Priority to US11/902,558 priority patent/US20080077716A1/en
Priority to CNA2007101517477A priority patent/CN101154204A/zh
Publication of JP2008083911A publication Critical patent/JP2008083911A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】DMA転送において、コマンドの先行発行を行っても、オーバーフローやアンダーフローを起こさないで、データ転送に要する時間を短縮する。
【解決手段】リードデータカウンタ13は、未リードデータ量Qrについて、コマンド発行ごとにリードデータ量QRを加算しかつデータリードごとにカウントダウンする。リードコマンド発行制御部11は、リードコマンド許否判定量Jr(内部メモリ2の空き容量Q0−未リードデータ量Qr)がリードデータ量QR以上あるときリードコマンドの発行を実行する。ライトデータカウンタ23は、未ライトデータ量Qwについて、コマンド発行ごとにライトデータ量QWを加算しかつデータライトごとにカウントダウンする。ライトコマンド発行制御部21は、ライトコマンド許否判定量Jw(内部メモリ2に蓄積のデータ量Q−未ライトデータ量Qw)がライトデータ量QW以上あるときライトコマンドの発行を実行する。
【選択図】図1

Description

本発明は、デバイス間でデータを転送するDMA転送制御装置に関する。
従来において、CPUを経由させずにデータ転送をデバイス間で直接に行うDMA転送方法が広く知られており、メモリ同士のデータ転送を両メモリ間で直接に行う場合等において使われている。
DMA(Direct Memory Access)転送では、データ転送元アドレス、データ転送先アドレス、データ転送サイズ等の転送に必要な情報をDMA転送制御装置のレジスタ等に設定し、その後、CPU等が転送開始を制御することにより転送動作を実行する。転送時にはCPUによる転送制御の必要はないため、CPUを経由する場合に比べて高速にデータ転送を行うことができ、またCPUの負担を減らすことができる。レジスタ等に設定された転送サイズだけ転送が完了したら、DMA転送制御装置の設定によってDMA転送終了割り込みをアサートする。CPUは、DMA転送終了割り込みを検知すると、DMA転送制御装置のレジスタ等を読み込んで、DMA転送の結果やステータスを監視する。
DMA転送制御装置に接続されるバスは、1回のアドレス指定で複数個のバイトデータをまとめて連続的に転送するバースト転送が可能な場合が多い。また、接続バスが、リードコマンドやライトコマンドを先行発行できるプロトコルである場合、レイテンシ(伝送遅延)が比較的大きなデバイスへのアクセスにおいて、転送速度を上げることができる。
通常のDMA転送では、設定されたあるサイズごとに必要なデータの読み出しを行い、その後に書き込みを行う。このため、書き込みの開始タイミングが読み出しの完了後になるため、レイテンシが大きなデバイスへの転送では、転送効率が良くない。
このような課題に対し、ある従来におけるDMA転送制御装置は、FIFO(First-in-First-out)を備えており、FIFOに蓄積されているデータ量を監視し、このデータ量に基づいて書き込み・読み出しのタイミングを決定する(例えば図12参照。特許文献1参照)。具体的には、FIFOに空き領域があるか否かを判断し、空き領域があるときに読み出しを行う。また、FIFOに書き込み可能なデータ量があるか否かを判断し、書き込み可能なデータ量があるときに書き込みを行う。
特開2001−142841号公報(第4−6頁、第2−14図)
しかし、上記従来の転送制御装置において、コマンドの先行発行を行った場合を想定すると、先行発行したコマンドでのデータ量を認識せずにFIFOの現状態のみからコマンドの発行許可を決定するため、オーバーフローやアンダーフローが発生する可能性がある。接続バスのプロトコルによっては、オーバーフローやアンダーフローの発生時はFIFOの状態が通常に戻るまで待つことができるが、接続バスのバス権を獲得し続けてしまい、他マスタのアクセスと競合した場合にデッドロックを引き起こす可能性もある。また、コマンドの先行発行を行わないと、データのアクセスレイテンシのためにデータ転送速度の向上ができない。
本発明は、内部メモリのオーバーフローやアンダーフローが発生しないタイミングでのみコマンドの先行発行を行うことができ、データ転送時間を短縮化できるDMA転送制御装置を提供することを目的とする。
(1)本発明によるDMA転送制御装置は、リードデータを一時的に格納する内部メモリを備え、転送元から転送先へのダイレクトメモリアクセス転送を行うものであって、
リードコマンドが発行されるごとにそのコマンドで取得すべきリードデータ量QRを加算し、かつデータリードごとにカウントダウンすることにより、未転送分のデータ量である未リードデータ量Qrをカウントするリードデータカウンタと、
前記内部メモリの空き容量Q0から前記リードデータカウンタによる前記未リードデータ量Qrが減算されるリードコマンド許否判定量Jrが次の取得目標のリードデータ量QR以上あるか否かを判定し、その判定結果が肯定的であるときはリードコマンドの発行を実行するリードコマンド発行制御部とを備えたものである。
リードコマンドを発行するに当たり、これから取得せんとするリードデータ量QRに対して内部メモリの空き容量Q0がそれ以上あるかを判定する。この判定にリードコマンド許否判定量Jrを用いる。リードコマンド許否判定量Jrは、Jr=Q0−Qrである。次の取得目標のリードデータ量QRに対して、リードコマンド許否判定量Jr≧QRか否かを判定する。初期段階では、未リードデータ量Qr=0であるので、Jr=Q0であり、Jr=Q0≧QRが判定されると、通常、初期段階での判定は肯定的となり、リードコマンドの発行が許容され、リードコマンド発行制御部はリードコマンドの発行を実行する。このリードコマンドの発行によりリードデータカウンタにおいて、未リードデータ量Qrにリードデータ量QRが加算される(Qr←Qr+QR)。未リードデータ量Qrが増加した分だけ、リードコマンド許否判定量Jr(=Q0−Qr)は減少する。この減少後のリードコマンド許否判定量Jrについても、Jr=Q0−Qr≧QRが判定される(QRは次の取得目標のリードデータ量)。この判定が肯定的となるときは、次のリードコマンドの発行が許容され、リードコマンド発行制御部はリードコマンドの発行を実行する。これがリードコマンドの先行発行である。この先行発行によりリードデータカウンタにおいて、未リードデータ量Qrに次のリードデータ量QRが加算され、また、その結果として、リードコマンド許否判定量Jrはリードデータ量QRだけ減少する。一方、前記の判定が否定的となるときは、次のリードコマンドの発行は許容されない。
内部メモリの空き容量Q0は、リードコマンドの実行とライトコマンドの実行に伴って、ダイナミックに変遷してゆく。ライトコマンドの実行により内部メモリから読み出されたデータが転送先に送られると、内部メモリのデータ量Qが減少し、空き容量Q0が増加する。また、リードコマンドの実行により転送元から読み出したデータが内部メモリに格納されると、内部メモリのデータ量Qが増加し、空き容量Q0が減少する。そして、未リードデータ量Qrが減少する。未リードデータ量Qrが減少するということは、リードコマンド許否判定量Jr=Q0−Qrにおいて、その値が増加することに相当する。内部メモリからの転送先へのデータ発行がないタイミングでは、空き容量Q0の減少と未リードデータ量Qrの減少が拮抗し、リードコマンド許否判定量Jrの値は不変である。したがって、前記で行ったリードコマンド許否判定量Jrによる判定結果は変わらず、否定的を維持し、次のリードコマンドは許容されない。しかし、内部メモリからの転送先へのデータ発行が行われたタイミングでは、その分の空き容量Q0の増加が生じ、結果として、リードコマンド許否判定量Jrの値が増加する。このリードコマンド許否判定量Jrの増加により、Jr=Q0−Qr≧QR(QRは次の取得目標のリードデータ量)の判定が肯定的になると、再び次のリードコマンドの発行が許容され、リードコマンド発行制御部はリードコマンドの発行を実行する。これもリードコマンドの先行発行である。この場合も、リードデータカウンタにおいて、未リードデータ量Qrに次のリードデータ量QRが加算される。
上記において、リードコマンドを先行発行するに際して、あらかじめ、リードコマンド許否判定量Jrによって内部メモリのオーバーフローを未然に回避する条件で先行発行することから、オーバーフローを発生させることなく、データ転送時間を短縮することが可能となる。
(2)また、本発明によるDMA転送制御装置は、リードデータを一時的に格納する内部メモリを備え、転送元から転送先へのダイレクトメモリアクセス転送を行うものであって、
ライトコマンドが発行されるごとにそのコマンドで発行すべきライトデータ量QWを加算し、かつデータライトごとにカウントダウンすることにより、未転送分のデータ量である未ライトデータ量Qwをカウントするライトデータカウンタと、
前記内部メモリに蓄積されているデータ量Qから前記未ライトデータ量Qwが減算されるライトコマンド許否判定量Jwが次の発行目標のライトデータ量QW以上あるか否かを判定し、その判定結果が肯定的であるときはライトコマンドの発行を実行するライトコマンド発行制御部とを備えたものである。
ライトコマンドを発行するに当たり、これから発行せんとするライトデータ量QWに対して内部メモリのデータ量Qがそれ以上あるかを判定する。この判定にライトコマンド許否判定量Jwを用いる。ライトコマンド許否判定量Jwは、Jw=Q−Qwである。次の発行目標のライトデータ量QWに対して、リードコマンド許否判定量Jw≧QWか否かを判定する。初期段階では、未ライトデータ量Qw=0であるので、Jw=Qであり、Jw=Q≧QWの判定においては、通常、データ量Qが少ない初期段階での判定は否定的となる。データ量Qが増加して判定が肯定的となると、ライトコマンドの発行が許容され、ライトコマンド発行制御部はライトコマンドの発行を実行する。このライトコマンドの発行によりライトデータカウンタにおいて、未ライトデータ量Qwにライトデータ量QWが加算される(Qw←Qw+QW)。未ライトデータ量Qwが増加した分だけ、ライトコマンド許否判定量Jw(=Q−Qw)は減少する。この減少後のライトコマンド許否判定量Jwについても、Jw=Q−Qw≧QWが判定される(QWは次の発行目標のライトデータ量)。この判定が肯定的となるときは、次のライトコマンドの発行が許容され、ライトコマンド発行制御部はライトコマンドの発行を実行する。これがライトコマンドの先行発行である。この先行発行によりライトデータカウンタにおいて、未ライトデータ量Qwに次のライトデータ量QWが加算され、また、その結果として、ライトコマンド許否判定量Jwはライトデータ量QWだけ減少する。一方、前記の判定が否定的となるときは、次のライトコマンドの発行は許容されない。
内部メモリのデータ量Qは、リードコマンドの実行とライトコマンドの実行に伴って、ダイナミックに変遷してゆく。リードコマンドの実行により転送元から読み出したデータが内部メモリに格納されると、内部メモリのデータ量Qが増加する。また、ライトコマンドの実行により内部メモリから読み出されたデータが転送先に送られると、内部メモリのデータ量Qが減少する。そして、未ライトデータ量Qwが減少する。未ライトデータ量Qwが減少するということは、ライトコマンド許否判定量Jw=Q−Qwにおいて、その値が増加することに相当する。転送元から内部メモリへのデータリードがないタイミングでは、データ量Qの減少と未ライトデータ量Qwの減少が拮抗し、ライトコマンド許否判定量Jwの値は不変である。したがって、前記で行ったライトコマンド許否判定量Jwによる判定結果は変わらず、否定的を維持し、次のライトコマンドは許容されない。しかし、転送元から内部メモリへのデータリードが行われたタイミングでは、その分のデータ量Qの増加が生じ、結果として、ライトコマンド許否判定量Jwの値が増加する。このライトコマンド許否判定量Jwの増加により、Jw=Q−Qw≧QW(QWは次の発行目標のライトデータ量)の判定が肯定的になると、再び次のライトコマンドの発行が許容され、ライトコマンド発行制御部はライトコマンドの発行を実行する。これもライトコマンドの先行発行である。この場合も、ライトデータカウンタにおいて、未ライトデータ量Qwに次の発行目標のライトデータ量QWが加算される。
上記において、ライトコマンドを先行発行するに際して、あらかじめ、ライトコマンド許否判定量Jwによって内部メモリのアンダーフローを未然に回避する条件で先行発行することから、アンダーフローを発生させることなく、データ転送時間を短縮することが可能となる。
(3)また、本発明によるDMA転送制御装置は、リードデータを一時的に格納する内部メモリを備え、転送元から転送先へのダイレクトメモリアクセス転送を行うものであって、
リードコマンドが発行されるごとにそのコマンドで取得すべきリードデータ量QRを加算し、かつデータリードごとにカウントダウンすることにより、未転送分のデータ量である未リードデータ量Qrをカウントするリードデータカウンタと、
前記内部メモリの空き容量Q0から前記リードデータカウンタによる前記未リードデータ量Qrが減算されるリードコマンド許否判定量Jrが次の取得目標のリードデータ量QR以上あるか否かを判定し、その判定結果が肯定的であるときはリードコマンドの発行を実行するリードコマンド発行制御部と、
ライトコマンドが発行されるごとにそのコマンドで発行すべきライトデータ量QWを加算し、かつデータライトごとにカウントダウンすることにより、未転送分のデータ量である未ライトデータ量Qwをカウントするライトデータカウンタと、
前記内部メモリに蓄積されているデータ量Qから前記未ライトデータ量Qwが減算されるライトコマンド許否判定量Jwが次の発行目標のライトデータ量QW以上あるか否かを判定し、その判定結果が肯定的であるときはライトコマンドの発行を実行するライトコマンド発行制御部とを備えたものである。
これは、上記の(1)と(2)を合体したものに相当し、リードコマンドを先行発行するに際して、あらかじめ、リードコマンド許否判定量Jrによって内部メモリのオーバーフローを未然に回避する条件で先行発行することから、オーバーフローを発生させることなく、データ転送時間を短縮することが可能となる。さらに、ライトコマンドを先行発行するに際して、あらかじめ、ライトコマンド許否判定量Jwによって内部メモリのアンダーフローを未然に回避する条件で先行発行することから、アンダーフローを発生させることなく、データ転送時間を短縮することが可能となる。
上記構成のDMA転送制御装置において、さらに、前記リードコマンドの発行時に、各チャネルで共通のリードマスタIDを出力するリードマスタID発行部を備えているという態様がある。
このように構成すれば、異なるチャネルの転送でも同一マスタからの転送として扱うことができ、仮に後から発行したリードコマンドのデータが先に発行したリードコマンドのデータより先に到着しても、接続バス等によって発行したリードコマンドの順序でリードデータが到着するように調整することができるため、複数チャネルが混在するデータ転送においても、データの整合性を保つことが可能となる。
また上記構成のDMA転送制御装置において、さらに、それぞれ異なるチャネルのデータ転送の処理が可能な、リードコマンド発行制御部とリードマスタID発行部とを含むリードコマンド発行部と、ライトコマンド発行制御部とライトマスタID発行部とを含むライトコマンド発行部と、リードデータ取得部と、ライトデータ発行部と、ライトレスポンス取得部とを備えているという態様がある。
このように構成すれば、複数チャネルが混合したデータ転送においても、データ転送の各処理を逐次的に実行でき、データ転送時間の短縮が可能となる。
また上記構成のDMA転送制御装置において、さらに、前記リードデータ取得部が前記リードコマンド発行部からチャネル番号を引き継ぐことと、前記ライトコマンド発行部が前記リードデータ取得部からチャネル番号を引き継ぐことと、前記ライトデータ発行部が前記ライトコマンド発行部からチャネル番号を引き継ぐことと、前記ライトレスポンス取得部が前記ライトデータ発行部からチャネル番号を引き継ぐことのいずれかまたは複数を制御するチャネル制御部を備えているという態様がある。
具体的には、前記リードコマンド発行部と前記リードデータ取得部間、または前記リードデータ取得部と前記ライトコマンド発行部間、または前記ライトコマンド発行部と前記ライトデータ発行部間、または前記ライトデータ発行部と前記ライトレスポンス取得部間のいずれかまたは複数にチャネル用FIFOを備えているという態様がある。
あるいは、前記チャネル制御部は、それぞれ独立に動作する、前記リードコマンド発行部用のリードポインタと、前記リードデータ取得部用のリードポインタと、前記ライトコマンド発行部用のリードポインタと、前記ライトデータ発行部用のリードポインタと、前記ライトレスポンス取得部用の各リードポインタのいずれかまたは複数をもつチャネル用FIFOを備えているという態様がある。
以上のように構成すれば、データ転送の各処理において、現在のデータ処理完了後に次データを処理するチャネルを正しく認識できるので、複数チャネルが混在する場合でも、正しくデータ転送することが可能となる。
また上記構成のDMA転送制御装置において、前記リードデータカウンタでの未リードデータ量Qrと、前記ライトデータカウンタでの未ライトデータ量Qwと、前記発行予定のリードコマンドでの取得目標のリードデータ量QRと、前記発行予定のライトコマンドでの発行目標のライトデータ量QWは、前記DMA転送制御装置で設定された単位サイズで表されるという態様がある。
このように構成すれば、単位サイズでデータ量を計算するので細かいデータ量の計算が不要となり、データ量計算時間や回路面積を抑えることが可能となる。
また上記構成のDMA転送制御装置において、前記内部メモリは、前記単位サイズのデータ幅を有し、リードデータのチャネルが移り変わる際の最終リードデータが前記単位サイズに足りない場合でもライトポインタを進めて、ライトデータのチャネルが移り変わる際の最終ライトデータが前記単位サイズに足りない場合でもリードポインタを進めるFIFOで構成されているという態様がある。
上記のように構成すれば、チャネルの切り替わりにおいて、有効データが単位サイズの先頭から開始されるため、データ量の計算を容易とすることが可能となる。
あるいは、上記構成のDMA転送制御装置において、前記内部メモリは、前記単位サイズのデータ幅を有し、リードデータの連続領域の最終リードデータが前記単位サイズに足りない場合でもライトポインタを進めて、ライトデータの連続領域の最終ライトデータが前記単位サイズに足りない場合でもリードポインタを進めるFIFOで構成されているという態様がある。
上記のように構成すれば、データの非連続部分の先頭において、有効データが単位サイズの先頭から開始されるため、データ量の計算を容易とすることが可能となる。
また本発明による半導体集積回路装置は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置の転送元または転送先としての外部記憶装置とを備えたものである。
このように構成すれば、SDRAM等のアクセスレイテンシの大きな外部記憶装置へアクセスする場合でも、コマンドの先行発行を高速化することでアクセス性能の低下を防ぐことが可能である。
なお、本発明は、上記で説明した複数の態様の構成において、適切に組み合わせた構成のDMA転送制御装置も含むものである。
本発明によれば、コマンドの先行発行を行った場合でも、内部メモリに格納されるデータのオーバーフローやアンダーフローを発生させずに、データ転送時間を短縮することが可能である。また、コマンドの先行発行数に応じた制御が不要なため、先行発行数を制限する必要もない。また、コマンドの発行制御のための計算を、設定した単位サイズごとによる計算にすることで、計算を容易にすることができる。また、複数チャネルが混在するデータ転送を正しく実行することができる。
以下、本発明にかかわるDMA転送制御装置の実施の形態を図面を用いて詳細に説明する。
(実施の形態1)
図1は本発明の実施の形態1におけるDMA転送制御装置100の概略構成を示すブロック図である。
本実施の形態のDMA転送制御装置100は、バスAを介して転送元デバイスに接続されているとともに、バスBを介して転送先デバイスに接続されている。図1において、1は転送情報を格納する設定レジスタであり、この設定レジスタ1の転送情報には、転送サイズ、転送元開始アドレス、転送先開始アドレス、転送元連続領域サイズ、転送先連続領域サイズ、転送元データ幅、転送先データ幅等が含まれている。2はバスAからのリードデータDrを入力してバスBにライトデータDwを出力する内部メモリ、11はリードコマンド発行制御部、13はリードコマンド発行制御部11がリードコマンドを発行したがまだ取得していないデータ量である未リードデータ量Qrをカウントするリードデータカウンタ、21はライトコマンド発行制御部、23はライトコマンド発行制御部21がライトコマンドを発行したがまだ発行していないデータ量である未ライトデータ量Qwをカウントするライトデータカウンタである。本実施の形態のDMA転送制御装置100は、内部メモリ2の空き容量Q0とリードデータカウンタ13による未リードデータ量Qrをリードコマンド発行制御部11に伝え、内部メモリ2のデータ量Qとライトデータカウンタ23による未ライトデータ量Qwをライトコマンド発行制御部21に伝えるようになっている。
なお、転送に必要な情報を格納している設定レジスタ1については、これに限るものではなく、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えるように構成しても構わない。
次に、上記のように構成された本実施の形態のDMA転送制御装置の動作を説明する。
リードデータカウンタ13は、その未リードデータ量Qrについて、リードコマンドの発行時にそのリードコマンドで取得するリードデータ量QRだけ加算し、実際にデータをリードするごとにカウントダウンする。同様に、ライトデータカウンタ23は、その未ライトデータ量Qwについて、ライトコマンドの発行時にそのライトコマンドで発行するライトデータ量QWだけ加算し、実際にデータをライトするごとにカウントダウンする。
データ転送を開始する際は、まず、設定レジスタ1に基づいて発行するリードコマンドを決定し、このリードコマンドにより取得されるリードデータ量QRを算出する。リードコマンド発行制御部11は、そのリードコマンド許否判定量Jrについて、内部メモリ2の空き容量Q0からリードデータカウンタ13による未リードデータ量Qrを減算して求め(Jr=Q0−Qr)、このリードコマンド許否判定量Jrが前述のリードデータ量QR以上あるかを判定する(Jr≧QR)。その判定の結果が肯定的で、リードコマンド許否判定量Jrに対してリードデータ量QRの方が小さいか同じで、内部メモリ2においてリードデータが増えても内部メモリ2の容量を超えない場合には、リードコマンドの発行を許可する。
発行したリードコマンドはバスAを通って転送元デバイスに送られ、転送元デバイスからのリードデータDrが順次バスAを通ってDMA転送制御装置100に送られる。リードデータDrは、内部メモリ2にいったん書き込まれる。
ライト側では、設定レジスタ1中の転送を行うチャネルのレジスタに基づいて発行するライトコマンドを決定し、このライトコマンドにより発行されるライトデータ量QWを算出する。ライトコマンド発行制御部21は、そのライトコマンド許否判定量Jwについて、内部メモリ2のデータ量Qからライトデータカウンタ23による未ライトデータ量Qwを減算して求め(Jw=Q−Qw)、このライトコマンド許否判定量Jwが前述のライトデータ量QW以上あるかを判定する(Jw≧QW)。その判定の結果が肯定的で、ライトコマンド許否判定量Jwに対してライトデータ量QWの方が小さいか同じで、内部メモリ2からライトデータが発行されても内部メモリ2のデータ量がマイナスとならない場合には、ライトコマンドの発行を許可する。
発行したライトコマンドはバスBを通って転送先デバイスに送られる。このライトコマンドに合わせて、内部メモリ2からライトデータDwを発行し、バスBを通って転送先デバイスに送られる。
転送の一例を図2に示す。設定レジスタ1は、転送サイズが12バイト、リードデータ幅は1バイト、ライトデータ幅は1バイト、すべて連続領域を転送するように設定されているとする。また、内部メモリ2の容量は10バイトとし、接続されているバスAとバスBのプロトコルにより、1コマンドでのデータのバースト数は4までに規定されているとする。
図2の見方を概説する。内部メモリ2のデータ量Qと空き容量Q0とを加算すると、常に10となる(Q+Q0=10)。リードコマンド許否判定量Jrは、空き容量Q0から未リードデータ量Qrを減算したものである(Jr=Q0−Qr)。ライトコマンド許否判定量Jwは、データ量Qから未ライトデータ量Qwを減算したものである(Jw=Q−Qw)。白丸は、内部メモリ2にリードデータDrを1バイトリードしたことを表す。黒丸は、内部メモリ2からライトデータDwを1バイト発行したことを表す。リードコマンド許否判定量Jrがリードデータ量QRの4バイト以上あれば、リードコマンドが許可される(先行発行)。ライトコマンド許否判定量Jwがライトデータ量QWの4バイト以上あれば、ライトコマンドが許可される(先行発行)。
まず、図2の(a)において、リードコマンド発行制御部11では、発行するリードコマンドにより取得するリードデータ量QRを算出する。ここでは、このリードデータ量QRは、リードデータ幅(1バイト)と最大バースト数(4回)により、4バイトと決定される(QR=1×4=4)。また、内部メモリ2の空き容量Q0の10バイトから未リードデータ量Qrの0バイトを差し引いてリードコマンド許否判定量Jr(=Q0−Qr=10−0)を10バイトと算出する。このリードコマンド許否判定量Jrと前述のリードデータ量QR=4バイトを比較すると、Jr≧QR(10>4)が成立し、リードしても内部メモリ2があふれることはないので(オーバーフロー回避)、リードコマンドの発行を許可する。また、リードコマンドの発行により、リードデータカウンタ13による未リードデータ量Qrは4バイト増加される(Qr←Qr+QR=0+4=4)。
次に、図2の(b)において、リードコマンド発行制御部11では、発行するリードコマンドにより取得するリードデータ量QRは4バイトと決定される。また、内部メモリ2の空き容量Q0の10バイトから未リードデータ量Qrの4バイトを差し引いてリードコマンド許否判定量Jr(=Q0−Qr=10−4)を6バイトと算出する。このリードコマンド許否判定量Jrの6バイトと前述のリードデータ量QRの4バイトを比較すると、Jr≧QR(6>4)が成立し、リードしても内部メモリ2があふれることはないので(オーバーフロー回避)、続けてリードコマンドの発行を許可する。このタイミングでは、前回のリードコマンドは完了していないが、先行発行としてリードコマンドを発行することで、リードデータ取得にかかる時間を短縮することが可能となる。
ライトコマンド発行制御部21では、発行するライトコマンドにより発行されるライトデータ量QWを算出する。ここでは、ライトデータ量QWは、ライトデータ幅(1バイト)と最大バースト数(4回)により、4バイトと決定される(QW=1×4=4)。リードコマンドの発行によりリードデータDrが取得されていくと、内部メモリ2にデータが蓄積されていく。図2の(c)では、内部メモリ2のデータ量Qは4バイトとなっているが、このデータ量Qから未ライトデータ量Qwの0バイトを差し引いてライトコマンド許否判定量Jw(=Q−Qw=4−0)を4バイトと算出する。このライトコマンド許否判定量Jwの4バイトと前述のライトデータ量QWの4バイトを比較すると、Jw≧QWが成立し、ライトに必要なデータが確保されているので(アンダーフロー回避)、ライトコマンドの発行を許可する。
また、図2の(d)では、前回のライトコマンドが完了していないが、内部メモリ2のデータ量Qは5バイト、このデータ量Qから未ライトデータ量Qwの1バイトを差し引いてライトコマンド許否判定量Jw(=Q−Qw=5−1)を4バイトと算出する。このライトコマンド許否判定量Jwの4バイトと前述のライトデータ量QWの4バイトを比較すると、Jw≧QWが成立し、ライトに必要なデータ量が確認できたため、ライトコマンドを先行発行している。このようにして、先行発行を含むリードとライトを順次実行する。
なお、これらの説明はあくまで一例であって限定されるものではない。このような方法により、内部メモリの状態によって最適なタイミングでコマンドを先行発行することが可能となり、データ転送時間を短縮することができる。
(実施の形態2)
図3は本発明の実施の形態2におけるDMA転送制御装置100の概略構成を示すブロック図である。本実施の形態のDMA転送制御装置100は、転送元デバイスが接続されているバスAにリードコマンド発行部10とリードデータ取得部14が接続されており、転送先デバイスが接続されているバスBにライトコマンド発行部20とライトデータ発行部24とライトレスポンス取得部25が接続されている。設定レジスタ1は、各チャネルの転送情報を格納している。転送情報については、実施の形態1と同様である。リードコマンド発行部10は、リードコマンド発行制御部11と各チャネル共通のリードマスタIDを発行するリードマスタID発行部12を有し、ライトコマンド発行部20は、ライトコマンド発行制御部21と各チャネル共通のライトマスタIDを発行するライトマスタID発行部22を有している。内部メモリ2は、リードデータ取得部14からのリードデータDrを入力としてライトデータ発行部24にライトデータDwを出力するようになっている。3は各部で転送されるチャネルを制御するチャネル制御部である。31はリードコマンド発行部10で実行したチャネル情報を格納するFIFO、32はリードデータ取得部14で実行したチャネル情報を格納するFIFO、33はライトコマンド発行部20で実行したチャネル情報を格納するFIFO、34はライトデータ発行部24で実行したチャネル情報を格納するFIFOである。内部メモリ2の空き容量Q0とリードデータカウンタ13による未リードデータ量Qrをリードコマンド発行制御部11に伝え、内部メモリ2のデータ量Qとライトデータカウンタ23による未ライトデータ量Qwをライトコマンド発行制御部21に伝えることについては、実施の形態1と同様である。その他の構成については、実施の形態1と同様であるので、説明を省略する。
次に、上記のように構成された本実施の形態のDMA転送制御装置の動作を説明する。
リードデータカウンタ13は、その未リードデータ量Qrについて、リードコマンド発行部10からリードコマンドがバスAに発行されるときに、そのリードコマンドで取得するリードデータ量QRだけ加算するとともに、リードデータ取得部14がリードデータDrをバスAより取得し内部メモリ2に格納するごとにカウントダウンする。同様に、ライトデータカウンタ23は、その未ライトデータ量Qwについて、ライトコマンド発行部20からライトコマンドがバスBに発行されるときに、そのライトコマンドで発行するライトデータ量QWだけ加算するとともに、ライトデータ発行部24が内部メモリ2よりライトデータを読み出してバスBに発行するごとにカウントダウンする。
次に、本実施の形態のDMA転送制御装置における、データ転送の方法を説明する。
まず、チャネル制御部3よりデータ転送するチャネルがリードコマンド発行部10に指定される。リードコマンド発行部10では、設定レジスタ1中の前記指定チャネルのレジスタに基づいて発行するリードコマンドを決定し、このリードコマンドにより取得されるリードデータ量QRを算出する。リードコマンド発行制御部11は、そのリードコマンド許否判定量Jrについて、内部メモリ2の空き容量Q0からリードデータカウンタ13による未リードデータ量Qrを減算して求め(Jr=Q0−Qr)、このリードコマンド許否判定量Jrが前述のリードデータ量QR以上あるかを判定する(Jr≧QR)。その判定の結果が肯定的で、リードコマンド許否判定量Jrに対してリードデータ量QRの方が小さいか同じで、内部メモリ2においてリードデータが増えても内部メモリ2の容量を超えない場合には、リードコマンドの発行を許可する。
リードコマンドの発行と同時に、どのマスタからの転送かを識別するためのリードマスタIDを発行するが、リードマスタID発行部12では、異なるチャネルであっても同一のリードマスタIDを発行する。また、リードコマンドにより取得されるリードデータ量QRだけ、リードデータカウンタ13の未リードデータ量Qrを加算する(Qr←Qr+QR)。また、各チャネルの最初のリードコマンドの発行と同時に、そのチャネル識別番号をチャネル用のFIFO31に格納する。
発行したリードコマンドはバスAを通って転送元デバイスに送られ、転送元デバイスからのリードデータが順次バスAを通ってリードデータ取得部14に送られる。バスAではリードデータDrを保持することが可能で、通過するリードコマンドのリードマスタIDをチェックしており、同一のリードマスタIDをもつリードコマンドが複数発行された場合には、コマンドの発行順にリードデータDrをマスタへ送るように調整を行う。もし、後から発行したリードコマンドのデータが先に到着した場合は、データをマスタへ送らずに保持し、先に発行したリードコマンドのデータが来たら、このデータをマスタへ送り、その後、保持していたデータをマスタへ送る。このため、複数チャネルが混在するデータ転送においても、データの整合性を保つことが可能である。
リードデータ取得部14では、データ取得完了または初期状態であるときに、FIFO31の先頭チャネル識別番号に応じて実行するチャネルを決定し、リードデータ取得を開始する。取得するリードデータの量やアドレス位置は、設定レジスタ1中の該当するチャネルのレジスタから決定する。なお、リードコマンドの発行時のリードマスタIDをチャネル共通としているので、別チャネルのリードコマンドが後から発行されても、コマンドの発行順にリードデータがリードデータ取得部14に到達する。取得したリードデータは内部メモリ2にいったん書き込まれ、このときにリードデータカウンタ13の未リードデータ量Qrをカウントダウンする(Qr←Qr−1)。また、各チャネルの最初のリードデータ取得と同時に、そのチャネル識別番号をチャネル用のFIFO32に格納する。
ライトコマンド発行部20では、コマンドの発行完了または初期状態であるときに、FIFO32の先頭チャネル識別番号に応じて実行するチャネルを決定し、ライトコマンドの発行を開始する。まず、設定レジスタ1中の前記指定チャネルのレジスタに基づき、発行するライトコマンドを決定し、このライトコマンドにより発行されるライトデータ量QWを算出する。ライトコマンド発行制御部21は、そのライトコマンド許否判定量Jwについて、内部メモリ2のデータ量Qからライトデータカウンタ23による未ライトデータ量Qwを減算して求め(Jw=Q−Qw)、このライトコマンド許否判定量Jwが前述のライトデータ量QW以上あるかを判定する(Jw≧QW)。その判定の結果が肯定的で、ライトコマンド許否判定量Jwに対してライトデータ量QWの方が小さいか同じで、内部メモリ2からライトデータが発行されても内部メモリ2のデータ量がマイナスとならない場合には、ライトコマンドの発行を許可する。
ライトコマンドの発行と同時に、どのマスタからの転送かを識別するためのライトマスタIDを発行するが、ライトマスタID発行部22では、異なるチャネルであっても同一のライトマスタIDを発行する。また、ライトコマンドにより発行するライトデータの量だけ、ライトデータカウンタ23の未ライトデータ量Qwを加算する。また、各チャネルの最初のライトコマンドの発行と同時に、そのチャネル識別番号をチャネル用のFIFO33に格納する。
ライトデータ発行部24では、データ発行完了または初期状態であるときに、FIFO33の先頭チャネル識別番号に応じて実行するチャネルを決定し、ライトデータの発行を開始する。発行するライトデータの量やアドレス位置は、設定レジスタ1中の該当するチャネルのレジスタから決定する。内部メモリ2から受け取ったライトデータはバスBに発行されるが、このときにライトデータカウンタ23の未ライトデータ量Qwをカウントダウンする(Qw←Qw−1)。また、各チャネルの最初のライトデータの発行と同時に、そのチャネル識別番号をチャネル用のFIFO34に格納する。
発行されたライトコマンドとライトデータはバスBを通って転送先デバイスに送られ、転送先デバイスからのライトレスポンス信号が順次バスBを通ってライトレスポンス取得部25に送られる。バスBでは、ライトレスポンス信号を保持することが可能で、通過するライトコマンドのライトマスタIDをチェックしており、同一のライトマスタIDをもつライトコマンドが複数発行された場合には、コマンドの発行順にライトレスポンスをDMA転送制御装置100へ送るように調整を行う。もし、後から発行したライトコマンドのレスポンスが先に到着した場合は、レスポンスをDMA転送制御装置100へ送らずに保持し、先に発行したライトコマンドのレスポンスが来たら、このレスポンスをDMA転送制御装置100へ送り、その後、保持していたレスポンスをマスタへ送る。このため、複数チャネルが混在するデータ転送においても、データの整合性を保つことが可能である。
ライトレスポンス取得部25では、レスポンス取得完了または初期状態であるときに、FIFO34の先頭チャネル識別番号に応じて実行するチャネルを決定し、レスポンス取得を開始する。取得するレスポンスの数は、設定レジスタ1中の該当するチャネルのレジスタより決定される。必要な数だけレスポンスを取得したら、該当するチャネルのデータ転送が完了したと判断し、完了割り込みなどの処理を行う。なお、ライトコマンドの発行時のライトマスタIDをチャネル共通としているので、別チャネルのライトコマンドが後から発行されても、コマンドの発行順にレスポンスがライトレスポンス取得部25に到着する。
チャネルの制御についての例を図4に示す。これは、CH0,CH1,CH2,CH3,CH4の順序でのDMA転送における、ある時点での各制御部で転送しているチャネルとチャネル用FIFOの状態を示している。各チャネルの状態については、CH0はライトデータ発行まで完了してライトレスポンス取得中、CH1はリードデータ発行まで完了しておりライトコマンドとライトデータを発行中、CH2はリードコマンドの発行まで完了してリードデータ取得中でありライトは未実行、CH3はリードコマンドの発行まで完了しておりリードデータは未取得、CH4はリードコマンドの発行中でありリードデータは未取得である。各制御部では、現チャネルの転送が完了したら、次に実行するチャネルが接続されているFIFOから送られるため、正しいタイミングでチャネル制御を行うことができる。
複数チャネルでの転送の一例を図5に示す。設定レジスタ1において、チャネルCH0は転送サイズが16バイト、リードデータ幅は2バイト、ライトデータ幅は2バイト、チャネルCH1は転送サイズが8バイト、リードデータ幅は2バイト、ライトデータ幅は4バイトであり、いずれのチャネルもすべて連続領域を転送するように設定されているとする。また、内部メモリ2の容量は20バイトとし、接続されているバスAとバスBのプロトコルにより、1コマンドでのデータのバースト数は4までに規定されているとする。CH0,CH1の順に転送が行われる。
まず、図5の(a)において、リードコマンド発行制御部11では、発行するCH0リードコマンドにより取得するリードデータ量QRを算出する。ここでは、このリードデータ量QRは、リードデータ幅(2バイト)と最大バースト数(4回)により、8バイトと決定される(QR=2×4=8)。また、内部メモリ2の空き容量Q0の20バイトから未リードデータ量Qrの0バイトを差し引いてリードコマンド許否判定量Jr(=Q0−Qr=20−0)を20バイトと算出する。このリードコマンド許否判定量Jrと前述のリードデータ量QR=8バイトを比較すると、Jr≧QR(20>8)が成立し、リードしても内部メモリ2があふれることはないので(オーバーフロー回避)、リードコマンドの発行を許可する。また、リードコマンドの発行により、リードデータカウンタ13による未リードデータ量Qrは8バイト増加される(Qr←Qr+QR=0+8=8)。
次に、図5の(b)において、リードコマンド発行制御部11では、発行するリードコマンドにより取得するリードデータ量QRは8バイトと決定される。また、内部メモリ2の空き容量Q0の20バイトから未リードデータ量Qrの8バイトを差し引いてリードコマンド許否判定量Jr(=Q0−Qr=20−8)を12バイトと算出する。このリードコマンド許否判定量Jrの12バイトと前述のリードデータ量QRの8バイトを比較すると、Jr≧QR(12>8)が成立し、リードしても内部メモリ2があふれることはないので(オーバーフロー回避)、続けてリードコマンドの発行を許可する。このタイミングでは、前回のリードコマンドは完了していないが、先行発行としてリードコマンドを発行することで、リードデータ取得にかかる時間を短縮することが可能となる。
ライトコマンド発行制御部21では、発行するライトコマンドにより発行されるライトデータ量QWを算出する。ここでは、ライトデータ量QWは、ライトデータ幅(2バイト)と最大バースト数(4回)により、8バイトと決定される(QW=2×4=8)。リードコマンドの発行によりリードデータDrが取得されていくと、内部メモリ2にデータが蓄積されていく。図5の(c)では、内部メモリ2のデータ量Qは8バイトとなっているが、このデータ量Qから未ライトデータ量Qwの0バイトを差し引いてライトコマンド許否判定量Jw(=Q−Qw=8−0)を8バイトと算出する。このライトコマンド許否判定量Jwの8バイトと前述のライトデータ量QWの8バイトを比較すると、Jw≧QWが成立し、ライトに必要なデータが確保されているので(アンダーフロー回避)、ライトコマンドの発行を許可する。
また、図5の(d)では、CH0の転送中にCH1のリードコマンドを発行しているが、未リードデータ量Qrや内部メモリ2の空き容量Q0はチャネル共通で使用するので、リードコマンド発行制御部11による発行制御の方法はチャネルによって変わらない。また、図5の(e)では、CH0の転送中にCH1のライトコマンドを発行しているが、リード時と同様、ライトコマンド発行制御部21による発行制御の方法はチャネルによって変わらない。このように、先行発行を含むリードとライトを、チャネルの区別なく順次実行することができる。
なお、これらの説明はあくまで一例であり、ライトレスポンスが不要なバスプロトコルであればライトレスポンス取得部25を不要としてよく、またライトマスタIDはチャネル固有のIDを発行するなど、これに限るものではない。
本実施の形態によれば、リードやライトの各処理において、それぞれ別チャネルの転送を内部メモリの状態に応じて最適なタイミングで実行できるため、複数チャネルの転送が混在する場合でもデータ転送時間を短縮することが可能である。
(実施の形態3)
図6は本発明の実施の形態3におけるDMA転送制御装置100の概略構成を示すブロック図である。図6において、実施の形態2の図3におけるのと同じ符号は同一構成要素を指している。本実施の形態においては、各部で転送されるチャネルを制御するチャネル制御部3がチャネル用FIFO4を有している。その他の構成については、実施の形態2と同様であるので、説明を省略する。
次に、本実施の形態のDMA転送制御装置におけるデータ転送の方法を説明する。チャネル制御以外のデータ処理方法については、実施の形態2と全く同様である。
チャネル制御の方法を説明する。データ転送を行うチャネルは、まず、チャネル用FIFO4に書き込まれる。チャネル用FIFO4は、リードコマンド発行部10、リードデータ取得部14、ライトコマンド発行部20、ライトデータ発行部24、ライトレスポンス取得部25の各制御部用リードポインタを有している。各制御部が転送完了後または初期状態において、この制御部用のリードポインタを1つ進めて、リードポインタの指すチャネルの転送処理を開始する。チャネル用FIFO4に書かれたチャネル番号は、リードコマンド発行部10、リードデータ取得部14、ライトコマンド発行部20、ライトデータ発行部24、ライトレスポンス取得部25用のリードポインタの順によってリードされるため、各チャネルの転送は正しく完了できる。
チャネル制御の例を図7に示す。これは、CH0,CH1,CH2,CH3,CH4の順序でのDMA転送における、ある時点での各制御部で転送しているチャネルの状態を示している。各チャネルの状態は、CH0はライトデータ発行まで完了してライトレスポンス取得中、CH1はリードデータ発行まで完了しておりライトコマンドとライトデータを発行中、CH2はリードコマンドの発行まで完了してリードデータ取得中でありライトは未実行、CH3はリードコマンドの発行まで完了しておりリードデータは未取得、CH4はリードコマンドの発行中でありリードデータは未取得である。各制御部では、現チャネルの転送が完了したら、リードポインタを進めて次に実行するチャネルを指定するが、このチャネルは前制御部まで処理が完了しているので、正しいタイミングで転送することができる。
なお、これらの説明はあくまで一例であり、ライトレスポンスが不要なバスプロトコルであればライトレスポンス取得部25を不要としてよく、またライトマスタIDはチャネル固有のIDを発行するなど、これに限るものではない。
本実施の形態によれば、リードやライトの各処理において、それぞれ別チャネルの転送を内部メモリの状態に応じて最適なタイミングで実行でき、複数チャネルの転送が混在する場合でもデータ転送時間を短縮することが可能である。
(実施の形態4)
図8は本発明の実施の形態4におけるDMA転送制御装置100の概略構成を示すブロック図である。図8において、実施の形態3の図6におけるのと同じ符号は同一構成要素を指している。本実施の形態においては、ライトレスポンス取得部25がチャネルごとのレスポンスカウンタ26を有している。その他の構成については、実施の形態3と同様であるので、説明を省略する。
次に、本実施の形態のDMA転送制御装置におけるデータ転送の方法を説明する。ライトレスポンスに関する動作以外については、実施の形態3と同様である。実施の形態3と異なる箇所を以降に述べる。
まず、チャネル用FIFO4は、リードコマンド発行部10、リードデータ取得部14、ライトコマンド発行部20、ライトデータ発行部24の各制御部用リードポインタを有しているが、ライトレスポンス取得用のリードポインタは有していない。このため、ライトレスポンス取得部25を制御するチャネルを設けず、全チャネルのライトレスポンスが受け取れる状態にしている。
また、ライトコマンドの発行時においては、ライトマスタID発行部22で、チャネル共通ではなくチャネルごとに異なるIDを発行する。このため、ライトレスポンスの返ってくる順序が、ライトコマンドを発行した順序とは限らなくなる。
ライトレスポンス取得部25にある各チャネルのレスポンスカウンタ26は、このチャネルがライトコマンドを発行したらカウントアップし、このチャネルのライトレスポンスを取得したらカウントダウンする。このチャネルの必要な転送をすべて発行した状態で、このチャネルのレスポンスカウンタ26が0になった時点で、このチャネルの転送の完了を認識することができる。
なお、これらの説明はあくまで一例であり、これに限るものではない。
本実施の形態によれば、リードやライトの各処理において、それぞれ別チャネルの転送を内部メモリの状態に応じて最適なタイミングで実行できるため、複数チャネルの転送が混在する場合でもデータ転送時間を短縮することが可能であり、またライト完了の早いチャネルからDMA転送完了を通知することができる。
(実施の形態5)
図9は本発明の実施の形態5におけるDMA転送制御装置100の概略構成を示すブロック図である。図9において、実施の形態3の図6におけるのと同じ符号は同一構成要素を指している。本実施の形態においては、内部メモリ2に代えて、リードデータ取得部14からのリードデータDrを入力としてライトデータ発行部24にライトデータDwを出力するデータ用FIFO2aを有している。また、データ用FIFO2aの空き個数N0をリードコマンド発行制御部11に伝え、データ用FIFO2aのデータ個数Nをライトコマンド発行制御部21に伝えるように構成されている。その他の構成については、実施の形態3と同様であるので、説明を省略する。
次に、本実施の形態のDMA転送制御装置におけるデータ転送の方法を説明する。データ量の計算に関係する箇所以外については、実施の形態3と全く同様である。
データ用FIFO2aでは、ある単位サイズがFIFOのデータ幅となっている。リードデータ取得部14では、バスAより取得したリードデータが前記の単位サイズに達した場合に、データ用FIFO2aにリードデータDrを書き込む。ただし、チャネルの切り替わり時や、リードデータの連続領域から次の連続領域にジャンプする場合は、前記の単位サイズに満たしていなくても、データ用FIFO2aにリードデータDrを書き込む。
リードデータカウンタ13では、前記の単位サイズでの未リードデータ量Qrに対応する未リードデータ量個数Nrをカウントする。リードコマンドの発行時には、そのコマンドでのリードデータ量QRを単位サイズで割った数NRだけ加算する。リードデータ量個数NRで端数が生じた場合は、切り上げて加算する。また、リードデータ取得部14からデータ用FIFO2aにデータを書き込んだタイミングで、カウントダウンする。
ライトデータカウンタ23についても、同様の方法でカウンタ制御を行う。ライトデータカウンタ23では、前記の単位サイズでの未ライトデータ量Qwに対応する未ライトデータ量個数Nwをカウントする。ライトコマンドの発行時には、そのコマンドでのライトデータ量QWを単位サイズで割った数NWだけ加算する。ライトデータ量個数NWで端数が生じた場合は、切り上げて加算する。また、データ用FIFO2aからライトデータ発行部24にデータが読み出されたタイミングで、カウントダウンする。
リードコマンド発行部10では、設定レジスタ1中の該当するチャネルのレジスタに基づき、発行するリードコマンドを決定し、このリードコマンドにより取得されるリードデータ量個数NRを算出する。端数が生じた場合には切り上げる。リードコマンド発行制御部11では、データ用FIFO2aの空き個数N0からリードデータカウンタ13の未リードデータ量個数Nrを差し引いてリードコマンド許否判定量Jr(=N0−Nr)を求め、このリードコマンド許否判定量Jrが前述のリードデータ量個数NR以上あるかを判定する(Jr≧NR)。その判定の結果が肯定的で、リードコマンド許否判定量Jrに対してリードデータ量個数NRの方が小さいか同じで、データ用FIFO2aにおいてリードデータが増えてもデータ用FIFO2aをオーバーフローさせない場合には、リードコマンドの発行を許可する。
ライトコマンド発行部20では、設定レジスタ1中の該当するチャネルのレジスタに基づき、発行するライトコマンドを決定し、このライトコマンドにより発行されるライトデータ量個数NWを算出する。端数が生じた場合は切り上げる。ライトコマンド発行制御部21では、データ用FIFO2aのデータ個数Nからライトデータカウンタ23の未ライトデータ量個数Nwを差し引いてライトコマンド許否判定量Jw(=N−Nw)を求め、このライトコマンド許否判定量Jwが前述のライトデータ量個数NW以上あるかを判定する(Jw≧NW)。その判定の結果が肯定的で、ライトコマンド許否判定量Jwに対してライトデータ量個数NWの方が小さいか同じで、ライトデータを発行してもデータ用FIFO2aをアンダーフローさせない場合には、ライトコマンドの発行を許可する。
この実施の形態での転送の一例を図10に示す。設定レジスタ1において、チャネルCH0は転送サイズが18バイト、リードデータ幅は2バイト、ライトデータ幅は2バイト、チャネルCH1は転送サイズが8バイト、リードデータ幅は2バイト、ライトデータ幅は4バイトであり、いずれのチャネルもすべて連続領域を転送するように設定されているとする。また、単位サイズは4バイトで、データ用FIFO2aはデータ幅が4バイト、容量は5個である。また、接続されているバスAとバスBのプロトコルにより、1コマンドでのデータのバースト数は4までに規定されているとする。CH0,CH1の順に転送が行われる。
まず、図10の(a)において、リードコマンド発行制御部11では、発行するCH0リードコマンドにより取得するリードデータ量個数NRを算出する。リードデータ幅(2バイト)と最大バースト数(4回)により、リードデータ量QRは8バイトと決定される。これは、単位サイズ2個分となる(NR=8÷4=2)。また、データ用FIFO2aの空き個数N0の5個から未リードデータ量個数Nrの0個を差し引いてリードコマンド許否判定量Jr(=N0−Nr=5−0)を5個と算出する。このリードコマンド許否判定量Jrと前述のリードデータ量個数NR=2個を比較すると、Jr≧NR(5>2)が成立し、リードしてもデータ用FIFO2aがあふれることはないので(オーバーフロー回避)、リードコマンドの発行を許可する。また、コマンドの発行により、リードデータカウンタ13の未リードデータ量個数Nrは2個増加される(Nr←Nr+NR=0+2=2)。
次に、図10の(b)において、リードコマンド発行制御部11では、発行するリードコマンドにより取得するリードデータ量QRは8バイトと決定され、単位サイズでのリードデータ量個数NR=2個分となる。また、データ用FIFO2aの空き個数N0の5個から未リードデータ量個数Nrの2個を差し引いてリードコマンド許否判定量Jr(=N0−Nr=5−2)を3個と算出する。このリードコマンド許否判定量Jrと前述のリードデータ量個数NR=2個を比較すると、Jr≧NR(3>2)が成立し、リードしてもデータ用FIFO2aがあふれることはないので(オーバーフロー回避)、リードコマンドの発行を許可する。このタイミングでは、前回のリードコマンドは完了していないが、先行発行としてリードコマンドを発行することで、リードデータ取得にかかる時間を短縮することが可能となる。
次に、図10の(c)において、リードコマンド発行制御部11では、発行するリードコマンドにより取得するリードデータ量個数NRは2バイトと決定される(18−8−8=2)。これは単位サイズである4バイトに達していないが、CH0の最終リードデータであるので、切り上げて計算し、単位サイズ1個分とみなす(NR=1)。また、データ用FIFO2aの空き個数N0の5個から未リードデータ量個数Nrの4個を差し引いてリードコマンド許否判定量Jr(=N0−Nr=5−4)を1個と算出する。このリードコマンド許否判定量Jrと前述のリードデータ量個数NR=1個を比較すると、Jr≧NRが成立し、リードしてもデータ用FIFO2aがあふれることはないので(オーバーフロー回避)、リードコマンドの発行を許可して、続けて先行発行を行う。
ライトコマンド発行制御部21では、発行するライトコマンドにより発行されるライトデータ量個数NWを算出する。ライトデータ量QWは、ライトデータ幅(2バイト)と最大バースト数(4回)により8バイトと決定される。これは、単位サイズ2個分となる(NW=8÷4=2)。リードコマンドの発行によりリードデータDrが取得されていくと、データ用FIFO2aにデータが蓄積されていく。図10の(d)では、データ用FIFO2aのデータ個数Nは2個となっているが、このデータ個数から未ライトデータ量個数Nwの0個を差し引いてライトコマンド許否判定量Jw(=N−Nw=2−0)を2個と算出する。このライトコマンド許否判定量Jwと前述のライトデータ量個数NW=2個を比較すると、Jw≧NWが成立し、ライトに必要なデータが確保されているので(アンダーフロー回避)、ライトコマンドの発行を許可する。
図10の(e)において、取得したリードデータは2バイトで、単位サイズである4バイトに達していないが、CH0の最後の最終リードデータのため、データ用FIFO2aのポインタを進める。併せて、データ用FIFO2aの空き個数N0、データ用FIFO2aのデータ個数Nも変化する。
ライトコマンド発行制御部21では、図10の(f)でライトコマンドの発行した以降において、次に発行するライトコマンドによるライトデータ量個数NWの算出では、ライトデータ幅と最大バースト数により2バイトと決定される。単位サイズの4バイトに達していないが、CH0の最終ライトデータであるので、切り上げて計算し、単位サイズ1個分とみなす。図10の(g)では、図10の(e)のリードデータによってFIFOデータ個数Nが3個となっており、このデータ個数から未ライトデータ量個数Nwの2個を差し引いて1個を算出する。これと前述のライトデータ量個数NW=1個を比較すると、ライトに必要なデータが確保されているので(アンダーフロー回避)、ライトコマンドの発行を許可する。このとき、データ用FIFO2aからは4バイト読み出すが、2バイト分のみが有効であるため、この2バイトをライトデータとして用いる。このように、単位サイズの端数が生じても、正しくデータ量の認識をしてデータ転送を実行することができる。
なお、これらの説明はあくまで一例であり、ライトレスポンスが不要なバスプロトコルであればライトレスポンス取得部25を不要としてよく、またライトマスタIDはチャネル固有のIDを発行するなど、これに限るものではない。
本実施の形態によれば、リードやライトの各処理において、それぞれ別チャネルの転送を内部メモリの状態に応じて最適なタイミングで実行でき、また最適なタイミングを求めるための計算時間や回路面積を減らすことが可能となる。
(実施の形態6)
図11は本発明の実施の形態6における半導体集積回路装置200の概略構成を示すブロック図である。本実施の形態の半導体集積回路装置200は、集積回路40、SDRAM50、周辺デバイス60を有する。集積回路40は、CPU41、DMA転送制御装置100、メモリコントローラ42、周辺コントローラ43を有しており、それぞれがバス44により相互接続されている。メモリコントローラ42はSDRAM50と接続されており、周辺コントローラ43は周辺デバイス60と接続されている。また、DMA転送制御装置100は、実施の形態1〜5のいずれかで説明したような、本発明のコマンドの先行発行機能を含んでいる。
半導体集積回路装置200において、DMA転送制御装置100を用いて、SDRAM50から周辺デバイス60へデータ転送する場合を考える。DMA転送制御装置100でのコマンドの発行では、実施の形態1〜5のいずれかで説明した方法により最適なタイミングで先行的に発行される。リードコマンドは、メモリコントローラ42を介してSDRAM50に送られるが、SDRAM50では、しばらく待った後にリードデータDrをDMA転送制御装置100に返すため、転送速度が遅くなってしまう。しかし、コマンドの先行発行によって複数のリードコマンドを受け取ると、前のリードコマンドに対する処理の間に次のリードコマンドを受理して、次のリードコマンドに対する処理が並行して行われるため、複数のリードコマンドの発行後に複数のリードデータDrをすぐ返すような動作になり、転送速度の低下を防ぐことができる。
また、周辺デバイス60へのライトコマンドの発行においても同様に、最適なタイミングで先行的に発行することにより、スループットを向上させることができる。また、周辺デバイス60からSDRAM50にデータ転送する場合についても同様である。
このように、SDRAMのような外部記憶装置だけではなく、例えばレイテンシの大きな周辺デバイスであっても本発明は有効であり、外部記憶装置に限らないことは明らかである。また、集積回路40の外部でなく、レイテンシの大きな内部の機能ブロックにアクセスする場合にも有効である。
なお、実現の方法については、上記実施の形態で述べた複数の構成を組み合わせて実現することも当然可能である。また、プロトコルに応じて、異なる構成をとることも可能である。例えば、ライトレスポンスリクエストに応じてライトレスポンスを返すようなプロトコルであるならば、ライトマスタIDは各チャネル別のIDを使用し、ライト発行では各チャネル最後の転送にライトレスポンスリクエスト信号を付加し、ライトレスポンス取得部はカウンタを用いることなく、チャネルの転送完了を認識できるようになる。また、本発明の機能を有するDMA転送制御装置の代わりにバスアダプタを搭載した集積回路を用いた場合であっても、同様にアクセス性能の低下を防ぐことが可能であり、これらの記載した構成に限らない。
なお、上述した本発明の実施の形態において使用される手法・構成は一例であり、本発明はこれらに限定されるものでない。
本発明におけるDMA転送制御装置は、内部メモリの状態を見て最適なタイミングでコマンドの先行発行ができるので、データ転送時間を短縮することが可能である。また、複数チャネルが混合するような転送でも、チャネルの切り替えによる性能低下が発生しないので、柔軟に転送設定を行うことができる。DMA転送制御機能を含むバスアダプタにおいても、異なるプロトコルのバス間でのデータ転送時間短縮が可能である。
本発明の実施の形態1におけるDMA転送制御装置の概略構成を示すブロック図 本発明の実施の形態1における転送制御例を示す図 本発明の実施の形態2におけるDMA転送制御装置の概略構成を示すブロック図 本発明の実施の形態2におけるチャネル制御例を示す図 本発明の実施の形態2における転送制御例を示す図 本発明の実施の形態3におけるDMA転送制御装置の概略構成を示すブロック図 本発明の実施の形態3におけるチャネル制御例を示す図 本発明の実施の形態4におけるDMA転送制御装置の概略構成を示すブロック図 本発明の実施の形態5におけるDMA転送制御装置の概略構成を示すブロック図 本発明の実施の形態5における転送制御例を示すブロック図 本発明の実施の形態6における半導体集積回路装置の概略構成を示すブロック図 従来の技術におけるDMA転送制御装置の概略構成を示すブロック図
符号の説明
1 設定レジスタ
2 内部メモリ
2a データ用FIFO
3 チャネル制御部
4 チャネル用FIFO
10 リードコマンド発行部
11 リードコマンド発行制御部
12 リードマスタID発行部
13 リードデータカウンタ
14 リードデータ取得部
20 ライトコマンド発行部
21 ライトコマンド発行制御部
22 ライトマスタID発行部
23 ライトデータカウンタ
24 ライトデータ発行部
25 ライトレスポンス取得部
26 レスポンスカウンタ
31〜34 FIFO
40 集積回路
41 CPU
42 メモリコントローラ
43 周辺コントローラ
44 バス
50 SDRAM
60 周辺デバイス
100 DMA転送制御装置
200 半導体集積回路装置
A,B バス
Dr リードデータ
Dw ライトデータ
Jr リードコマンド許否判定量
Jw ライトコマンド許否判定量
N データ個数
N0 空き個数
Nr 未リードデータ量個数
Nw 未ライトデータ量個数
Q データ量
Q0 空き容量
Qr 未リードデータ量
Qw 未ライトデータ量
QR リードデータ量
QW ライトデータ量

Claims (12)

  1. リードデータを一時的に格納する内部メモリを備え、転送元から転送先へのダイレクトメモリアクセス転送を行うDMA転送制御装置であって、
    リードコマンドが発行されるごとにそのコマンドで取得すべきリードデータ量を加算し、かつデータリードごとにカウントダウンすることにより、未転送分のデータ量である未リードデータ量をカウントするリードデータカウンタと、
    前記内部メモリの空き容量から前記リードデータカウンタによる前記未リードデータ量が減算されるリードコマンド許否判定量が次の取得目標のリードデータ量以上あるか否かを判定し、その判定結果が肯定的であるときはリードコマンドの発行を実行するリードコマンド発行制御部とを備えたDMA転送制御装置。
  2. リードデータを一時的に格納する内部メモリを備え、転送元から転送先へのダイレクトメモリアクセス転送を行うDMA転送制御装置であって、
    ライトコマンドが発行されるごとにそのコマンドで発行すべきライトデータ量を加算し、かつデータライトごとにカウントダウンすることにより、未転送分のデータ量である未ライトデータ量をカウントするライトデータカウンタと、
    前記内部メモリに蓄積されているデータ量から前記未ライトデータ量が減算されるライトコマンド許否判定量が次の発行目標のライトデータ量以上あるか否かを判定し、その判定結果が肯定的であるときはライトコマンドの発行を実行するライトコマンド発行制御部とを備えたDMA転送制御装置。
  3. リードデータを一時的に格納する内部メモリを備え、転送元から転送先へのダイレクトメモリアクセス転送を行うDMA転送制御装置であって、
    リードコマンドが発行されるごとにそのコマンドで取得すべきリードデータ量を加算し、かつデータリードごとにカウントダウンすることにより、未転送分のデータ量である未リードデータ量をカウントするリードデータカウンタと、
    前記内部メモリの空き容量から前記リードデータカウンタによる前記未リードデータ量が減算されるリードコマンド許否判定量が次の取得目標のリードデータ量以上あるか否かを判定し、その判定結果が肯定的であるときはリードコマンドの発行を実行するリードコマンド発行制御部と、
    ライトコマンドが発行されるごとにそのコマンドで発行すべきライトデータ量を加算し、かつデータライトごとにカウントダウンすることにより、未転送分のデータ量である未ライトデータ量をカウントするライトデータカウンタと、
    前記内部メモリに蓄積されているデータ量から前記未ライトデータ量が減算されるライトコマンド許否判定量が次の発行目標のライトデータ量以上あるか否かを判定し、その判定結果が肯定的であるときはライトコマンドの発行を実行するライトコマンド発行制御部とを備えたDMA転送制御装置。
  4. さらに、前記リードコマンドの発行時に、各チャネルで共通のリードマスタIDを出力するリードマスタID発行部を備えている請求項1から請求項3までのいずれかに記載のDMA転送制御装置。
  5. さらに、それぞれ異なるチャネルのデータ転送の処理が可能な、リードコマンド発行制御部とリードマスタID発行部とを含むリードコマンド発行部と、ライトコマンド発行制御部とライトマスタID発行部とを含むライトコマンド発行部と、リードデータ取得部と、ライトデータ発行部と、ライトレスポンス取得部とを備えている請求項1から請求項3までのいずれかに記載のDMA転送制御装置。
  6. さらに、前記リードデータ取得部が前記リードコマンド発行部からチャネル番号を引き継ぐことと、前記ライトコマンド発行部が前記リードデータ取得部からチャネル番号を引き継ぐことと、前記ライトデータ発行部が前記ライトコマンド発行部からチャネル番号を引き継ぐことと、前記ライトレスポンス取得部が前記ライトデータ発行部からチャネル番号を引き継ぐことのいずれかまたは複数を制御するチャネル制御部を備えている請求項5に記載のDMA転送制御装置。
  7. 前記リードコマンド発行部と前記リードデータ取得部間、または前記リードデータ取得部と前記ライトコマンド発行部間、または前記ライトコマンド発行部と前記ライトデータ発行部間、または前記ライトデータ発行部と前記ライトレスポンス取得部間のいずれかまたは複数にチャネル用FIFOを備えている請求項6に記載のDMA転送制御装置。
  8. 前記チャネル制御部は、それぞれ独立に動作する、前記リードコマンド発行部用のリードポインタと、前記リードデータ取得部用のリードポインタと、前記ライトコマンド発行部用のリードポインタと、前記ライトデータ発行部用のリードポインタと、前記ライトレスポンス取得部用の各リードポインタのいずれかまたは複数をもつチャネル用FIFOを備えている請求項6に記載のDMA転送制御装置。
  9. 前記リードデータカウンタでの未リードデータ量と、前記ライトデータカウンタでの未ライトデータ量と、前記発行予定のリードコマンドでの取得目標のリードデータ量と、前記発行予定のライトコマンドでの発行目標のライトデータ量は、前記DMA転送制御装置で設定された単位サイズで表される請求項1から請求項8までのいずれかに記載のDMA転送制御装置。
  10. 前記内部メモリは、前記単位サイズのデータ幅を有し、リードデータのチャネルが移り変わる際の最終リードデータが前記単位サイズに足りない場合でもライトポインタを進めて、ライトデータのチャネルが移り変わる際の最終ライトデータが前記単位サイズに足りない場合でもリードポインタを進めるFIFOで構成されている請求項9に記載のDMA転送制御装置。
  11. 前記内部メモリは、前記単位サイズのデータ幅を有し、リードデータの連続領域の最終リードデータが前記単位サイズに足りない場合でもライトポインタを進めて、ライトデータの連続領域の最終ライトデータが前記単位サイズに足りない場合でもリードポインタを進めるFIFOで構成されている請求項9に記載のDMA転送制御装置。
  12. 請求項1から請求項11までのいずれかに記載のデータ転送制御装置と、前記データ転送制御装置の転送元または転送先としての外部記憶装置とを備えた半導体集積回路装置。
JP2006262130A 2006-09-27 2006-09-27 Dma転送制御装置および半導体集積回路装置 Withdrawn JP2008083911A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006262130A JP2008083911A (ja) 2006-09-27 2006-09-27 Dma転送制御装置および半導体集積回路装置
US11/902,558 US20080077716A1 (en) 2006-09-27 2007-09-24 DMA transfer control device and semiconductor integrated circuit device
CNA2007101517477A CN101154204A (zh) 2006-09-27 2007-09-27 Dma传输控制装置和半导体集成电路装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006262130A JP2008083911A (ja) 2006-09-27 2006-09-27 Dma転送制御装置および半導体集積回路装置

Publications (1)

Publication Number Publication Date
JP2008083911A true JP2008083911A (ja) 2008-04-10

Family

ID=39226369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006262130A Withdrawn JP2008083911A (ja) 2006-09-27 2006-09-27 Dma転送制御装置および半導体集積回路装置

Country Status (3)

Country Link
US (1) US20080077716A1 (ja)
JP (1) JP2008083911A (ja)
CN (1) CN101154204A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010287185A (ja) * 2009-06-15 2010-12-24 Fujitsu Semiconductor Ltd Dma転送制御装置およびdma転送制御方法
WO2013129031A1 (ja) * 2012-02-29 2013-09-06 三菱電機株式会社 データ転送装置、データ転送方法及びデータ転送プログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622321B (zh) * 2011-01-28 2015-06-17 炬芯(珠海)科技有限公司 一种数据处理设备及其数据传输方法
US10270610B2 (en) * 2016-06-12 2019-04-23 Apple Inc. Selection of a coordinator device for an automated environment
KR102367359B1 (ko) * 2017-04-17 2022-02-25 에스케이하이닉스 주식회사 직렬 시스템 버스 인터페이스 및 직접메모리액세스 컨트롤러를 갖는 전자 시스템 및 그 동작 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3712842B2 (ja) * 1997-08-05 2005-11-02 株式会社リコー データ転送制御方法、データ転送制御装置及び情報記録媒体
JP2002073527A (ja) * 2000-08-25 2002-03-12 Rohm Co Ltd Dmaコントローラ
US6941390B2 (en) * 2002-11-07 2005-09-06 National Instruments Corporation DMA device configured to configure DMA resources as multiple virtual DMA channels for use by I/O resources
US7275124B2 (en) * 2005-02-24 2007-09-25 International Business Machines Corporation Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010287185A (ja) * 2009-06-15 2010-12-24 Fujitsu Semiconductor Ltd Dma転送制御装置およびdma転送制御方法
WO2013129031A1 (ja) * 2012-02-29 2013-09-06 三菱電機株式会社 データ転送装置、データ転送方法及びデータ転送プログラム
US9727504B2 (en) 2012-02-29 2017-08-08 Mitsubishi Electric Corporation Data transfer apparatus, data transfer method, and data transfer program

Also Published As

Publication number Publication date
US20080077716A1 (en) 2008-03-27
CN101154204A (zh) 2008-04-02

Similar Documents

Publication Publication Date Title
US7716391B2 (en) Data transfer apparatus, data transfer method, and program
US20080065801A1 (en) Resource management device
JP2005242718A (ja) データ転送装置、および転送制御プログラム
JP2006195714A (ja) リソース管理装置
JP5707911B2 (ja) データ転送制御装置
US9330025B2 (en) Information processing apparatus, memory control apparatus, and control method thereof
US8838862B2 (en) Data transfer device, method of transferring data, and image forming apparatus
JP2008083911A (ja) Dma転送制御装置および半導体集積回路装置
US6782433B2 (en) Data transfer apparatus
US7606957B2 (en) Bus system including a bus arbiter for arbitrating access requests
WO2006024193A1 (fr) Procede et systeme pour transfert de donnees
JP2008040905A (ja) 半導体装置、及び記憶装置へのアクセス方法
JP2004005677A (ja) 集積回路装置のバスアービター
US7380027B2 (en) DMA controller and DMA transfer method
US7913013B2 (en) Semiconductor integrated circuit
JP2010044645A (ja) データ転送装置、およびデータ転送方法
US7185122B2 (en) Device and method for controlling data transfer
JP5293516B2 (ja) データ転送装置、データ転送制御方法、データ転送制御プログラム及び記録媒体
US20060155893A1 (en) Methods and apparatus for sharing memory bandwidth
JP2010152837A (ja) バッファ装置
US10540305B2 (en) Semiconductor device
JP2006215621A (ja) Dma制御装置
US20100106865A1 (en) Dma transfer device and method
JP4327081B2 (ja) メモリアクセス制御回路
JP2001101128A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090528

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100727