JP2002342262A - ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法 - Google Patents

ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法

Info

Publication number
JP2002342262A
JP2002342262A JP2001142459A JP2001142459A JP2002342262A JP 2002342262 A JP2002342262 A JP 2002342262A JP 2001142459 A JP2001142459 A JP 2001142459A JP 2001142459 A JP2001142459 A JP 2001142459A JP 2002342262 A JP2002342262 A JP 2002342262A
Authority
JP
Japan
Prior art keywords
register
data
transfer
address
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.)
Pending
Application number
JP2001142459A
Other languages
English (en)
Inventor
Yoshihiro Hiji
義弘 氷治
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001142459A priority Critical patent/JP2002342262A/ja
Priority to US10/017,321 priority patent/US6684267B2/en
Publication of JP2002342262A publication Critical patent/JP2002342262A/ja
Pending legal-status Critical Current

Links

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)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 DMA(ダイレクトメモリアクセス)の転送
能力の低下を招くことなく、リングバッファをアクセス
対象としてデータをダイレクトメモリアクセス転送する
こと。 【解決手段】 データの読み出し位置または書き込み位
置をリングバッファのベースアドレスとそこからのオフ
セット(PIX)で与え、オフセットをDMA転送され
たデータの量(SIZ)だけ更新する。オフセットがデ
ータの総転送量(BCL)以上になったらオフセットを
ゼロにし、リングバッファを循環してアクセスするアド
レスを発生させる。また、DMA転送動作の停止位置を
示すストップアドレス(SIX)を設定し、そのストッ
プアドレスを、DMA転送動作によらずにリングバッフ
ァに対して読み出しまたは書き込みされたデータの量だ
け更新する。オフセットがストップアドレスに一致した
らDMA転送動作を停止する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムにおいて、CPUを介在させずに、メモリ上に設け
られたバッファ領域と、メモリ上の他の領域または入出
力装置との間でデータ転送をおこなうダイレクトメモリ
アクセス制御装置およびダイレクトメモリアクセス制御
方法に関する。
【0002】一般に、ダイレクトメモリアクセスによる
データの転送動作は、CPUがプログラムの制御にした
がってデータ転送をおこなうよりも高速である。そのた
め、ダイレクトメモリアクセス動作は、高速な入出力装
置とメモリとの間のデータ転送、すなわち入出力動作に
関わるデータ転送に多く利用される。
【0003】ところで、コンピュータシステムにおい
て、CPUで実行されるプログラムの制御によってメモ
リ上にリングバッファが設けられ、そのリングバッファ
と入出力装置との間でデータ転送がおこなわれることが
ある。このようなシステムでは、たとえば、入力装置か
ら読み出されたデータは一旦リングバッファに格納さ
れ、そこでCPUによる処理が始まるのを待機する。ま
た、CPUによる処理が完了したデータは、出力装置か
ら出力されるのを待つ間、一旦リングバッファに格納さ
れ、そこから順次取り出されて出力装置へ送られる。
【0004】
【従来の技術】近時、ダイレクトメモリアクセス制御装
置の中には、メモリ上の、リングバッファとなるある一
定の領域を循環してアクセスするようにアドレスを発生
する機能と、そのリングバッファが一杯になったことを
検出して転送動作を停止する機能とを追加することによ
って、リングバッファをデータの転送先または転送元と
したダイレクトメモリアクセス転送をおこなうことを可
能としたものがある。上述したアドレス発生機能によ
り、アドレスをインクリメントしながらリングバッファ
にデータを転送している途中でデータの書き込み位置が
リングバッファの末尾に達しても、データの書き込み位
置がリングバッファの先頭に戻るので、データの転送を
続けることが可能となる。
【0005】上述したアドレス発生機能は、アドレスの
計算をおこなう際に下位側の特定ビットから上位への桁
上げを抑止することにより実現される。たとえば、32
ビットバイトアドレッシングのシステムにおいて64K
バイトのリングバッファを設ける場合、アドレス計算の
際に下位16ビットから17ビット目への桁上げを抑止
する。そうすれば、17ビット目より上位の桁が更新さ
れないため、上位16ビットで指定される64Kバイト
のメモリ領域を循環してアクセスすることが可能とな
る。あるいは、上述したアドレス発生機能を実現するた
め、リングバッファに割り当てたメモリ領域のサイズと
同じ量のデータを転送し終えたときに、アドレスレジス
タに初期値を再設定するようにしてもよい。
【0006】また、上述した転送動作の停止機能は、リ
ングバッファをアクセスの対象としない従来のダイレク
トメモリアクセス制御装置に、上述したような循環的な
アドレスを発生する機能だけを追加してリングバッファ
をアクセス対象とするように拡張した装置では、従来同
様、転送データ量で停止の条件を指定することにより実
現される。この場合には、リングバッファ内の空領域の
サイズが転送データ量として指定され、リングバッファ
が満杯、すなわちリングバッファ内の空領域のサイズが
ゼロになった時点でデータの転送動作が停止する。
【0007】あるいは、上述した転送動作の停止機能を
実現するため、リングバッファ内のデータにフラグを持
たせ、そのフラグによりリングバッファ内の空領域を検
出するようにしてもよい。たとえば、リングバッファと
の転送の最小単位がワードである場合、ワードごとに、
そのワードが空であるか否かを示すフラグを設ける。そ
して、データが書き込まれたメモリ領域については、そ
れに対応するフラグに、空でないことを示す値を設定す
る。一方、データが読み出されたメモリ領域について
は、それに対応するフラグに、空であることを示す値を
設定する。すべてのフラグに、空でないことを示す値が
設定された時点でデータの転送動作が停止する。
【0008】
【発明が解決しようとする課題】しかしながら、下位側
の特定ビットから上位への桁上げを抑止することによっ
て上述したアドレス発生機能を実現する場合には、リン
グバッファに使用するメモリ領域のサイズが2nバイト
(n:整数)に制限されるという欠点がある。また、バ
ッファ領域の先頭アドレスが2nバイト境界に整列して
いなければならないという欠点もある。一方、アドレス
レジスタに初期値を再設定することによって上述したア
ドレス発生機能を実現する場合には、再設定される値を
保持するためにアドレスのビット数と同じビット数のレ
ジスタが必要となるので、回路規模の増大を招くという
欠点がある。
【0009】また、リングバッファ内の空領域のサイズ
を転送データ量として指定することによって上述した転
送動作の停止機能を実現する場合には、CPUで実行さ
れるソフトウェアとの並行処理をおこないにくいため、
ダイレクトメモリアクセス制御装置の転送能力が抑えら
れてしまうという問題点がある。たとえば、ダイレクト
メモリアクセス制御装置が入力装置から読み出したデー
タをリングバッファにダイレクトメモリアクセス転送で
格納し、それをCPUにより実行されるソフトウェアが
取り出して処理する場合を考える。この場合、ダイレク
トメモリアクセス制御装置は、リングバッファにデータ
を転送するたびに転送したデータの量に応じて転送デー
タ量を減少させる。一方、CPUは、リングバッファか
らデータを取り出すと、その取り出されたデータの量に
応じてリングバッファ内の領域を開放し、その開放され
た領域のサイズに応じて転送データ量を増加させる。
【0010】ロード/ストアアーキテクチャを採用する
CPUは、メモリに記憶された値を排他的に更新する機
能を持たないため、転送データ量を更新する際には、転
送データ量をレジスタにロードし、そのロードした値を
増加させた後、それを書き戻すという3段階の操作を必
要とする。この3段階の途中で、ダイレクトメモリアク
セス制御装置が転送データ量を更新してしまうと、転送
データ量の更新が正しくおこなわれなくなってしまう。
そこで、CPUとダイレクトメモリアクセス制御装置と
が同時に転送データ量の更新をおこなわないようにする
ため、CPUが転送データ量を更新している間、ダイレ
クトメモリアクセス制御装置は一時動作を停止する。こ
のような理由によって、ダイレクトメモリアクセス制御
装置の転送能力が抑えられてしまう。
【0011】また、リングバッファ内のデータにフラグ
を持たせることによって上述した転送動作の停止機能を
実現する場合には、フラグによって余分なメモリが消費
されるという問題点と、メモリのある領域をリングバッ
ファとして利用し始めるときに、フラグに割り付けたメ
モリ領域を初期化しなければならないという問題点があ
る。
【0012】本発明は、上記問題点に鑑みてなされたも
のであって、回路規模の増大を招くことなく、またダイ
レクトメモリアクセスの転送能力の低下を招くことな
く、リングバッファをアクセス対象としてデータをダイ
レクトメモリアクセス転送することができ、さらにはリ
ングバッファに割り付けるメモリ領域のサイズやアドレ
スの自由度が高く、かつリングバッファにアクセスする
ために必要となるメモリ量を減らすことができるダイレ
クトメモリアクセス制御装置を提供することを目的とす
る。また、本発明の他の目的は、ダイレクトメモリアク
セスの転送能力を低下させることなく、リングバッファ
をアクセス対象としてデータをダイレクトメモリアクセ
ス転送させることが可能なダイレクトメモリアクセス制
御方法を提供することにある。
【0013】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、転送元領域のベースアドレスを格納する
第1のレジスタ(SBAレジスタ)と、転送先領域のベ
ースアドレスを格納する第2のレジスタ(DBAレジス
タ)と、転送元領域におけるデータの読み出し位置を、
第1のレジスタに格納されたベースアドレスからのオフ
セットとして格納する第3のレジスタ(PIXレジス
タ)と、転送先領域におけるデータの書き込み位置を、
第2のレジスタに格納されたベースアドレスからのオフ
セットとして格納する第4のレジスタ(SIXレジス
タ)と、データの総転送量を格納する第5のレジスタ
(BCLレジスタ)と、を備える。
【0014】リングバッファを転送元としてダイレクト
メモリアクセス転送をおこなう場合には、第2のレジス
タに転送先の固定アドレスを格納し、第4のレジスタ
に、ダイレクトメモリアクセス転送動作の停止位置を示
すストップアドレスを格納する。そして、リングバッフ
ァから読み出したデータを転送先に書き込んだら、転送
したデータの量だけ、リングバッファの、つぎにデータ
を読み出す位置を示すオフセットを更新する。その更新
したオフセットがデータの総転送量以上になるときに、
そのオフセットをゼロにリセットする。以上の動作を、
リングバッファの、つぎにデータを読み出すためのオフ
セットがストップアドレスに一致するまで、繰り返しお
こなう。
【0015】リングバッファを転送先としてダイレクト
メモリアクセス転送をおこなう場合には、第1のレジス
タに転送元の固定アドレスを格納し、第4のレジスタ
に、ダイレクトメモリアクセス転送動作の停止位置を示
すストップアドレスを格納する。そして、転送元から読
み出したデータをリングバッファに書き込んだら、転送
したデータの量だけ、リングバッファの、つぎにデータ
を書き込む位置を示すオフセットを更新する。その更新
したオフセットがデータの総転送量以上になるときに、
そのオフセットをゼロにリセットする。以上の動作を、
リングバッファの、つぎにデータを書き込むためのオフ
セットがストップアドレスに一致するまで、繰り返しお
こなう。
【0016】この発明によれば、リングバッファを転送
元としてダイレクトメモリアクセス転送をおこなう場合
には、データの読み出し位置がリングバッファのベース
アドレスとそこからのオフセットで与えられる。リング
バッファを転送先としてダイレクトメモリアクセス転送
をおこなう場合には、データの書き込み位置がリングバ
ッファのベースアドレスとそこからのオフセットで与え
られる。このリングバッファの読み出し位置または書き
込み位置を示すオフセットは、ダイレクトメモリアクセ
ス転送動作により転送されたデータの量だけ更新され、
データの総転送量以上になるとゼロにリセットされるの
で、リングバッファのベースアドレスと、そのベースア
ドレスとデータの総転送量とによって決定されるアドレ
スとの間を循環してアクセスするようにアドレスが発生
する。
【0017】また、この発明によれば、リングバッファ
の読み出し位置または書き込み位置を示すオフセット
は、ダイレクトメモリアクセス転送動作により転送され
たデータの量だけ更新され、一方、ストップアドレス
は、CPUなどによってダイレクトメモリアクセス転送
動作によらずに読み出しまたは書き込みされたデータの
量だけ更新されるので、それらの更新のタイミングに依
存関係が生じない。
【0018】
【発明の実施の形態】以下に、本発明の実施の形態にか
かるダイレクトメモリアクセス制御装置およびダイレク
トメモリアクセス制御方法について図面を参照しつつ詳
細に説明する。
【0019】(実施の形態1)図1は、本発明にかかる
ダイレクトメモリアクセス制御装置の構成の一例を示す
ブロック図である。このダイレクトメモリアクセス制御
装置は、10個のレジスタ10,11,12,13,1
4,15,16,17,18,19、制御部(Ctr
l)2およびバスインターフェース部(BusIF)3
を備えている。
【0020】BCLレジスタ10は、総転送量を格納す
るレジスタである。図示しないリングバッファが転送先
または転送元となる場合には、BCLレジスタ10に
は、メモリ領域の、リングバッファに割り付けられてい
る領域の大きさが格納される。SBAレジスタ11は、
転送元のベースアドレスを格納するレジスタである。リ
ングバッファが転送元である場合には、SBAレジスタ
11には、リングバッファに割り付けられているメモリ
領域のベースアドレスが格納される。DBAレジスタ1
2は、転送先のベースアドレスを格納するレジスタであ
る。リングバッファが転送先である場合には、DBAレ
ジスタ12には、リングバッファに割り付けられている
メモリ領域のベースアドレスが格納される。SIZレジ
スタ13は、1回のバス動作で読み出しまたは書き込み
されるデータの量を格納するレジスタである。
【0021】PIXレジスタ14は、つぎにデータを読
み出す位置を、SBAレジスタ11に格納されている転
送元のベースアドレスからのオフセット(変位量)とし
て格納するレジスタである。リングバッファが転送元と
なる場合には、PIXレジスタ14には、リングバッフ
ァ内の、つぎに読み出されるデータの位置が、SBAレ
ジスタ11に格納されているリングバッファのベースア
ドレスからのオフセットとして格納される。ただし、リ
ングバッファが転送先となる場合には、PIXレジスタ
14には、リングバッファ内の、つぎにデータが書き込
まれる位置が、DBAレジスタ12に格納されているリ
ングバッファのベースアドレスからのオフセットとして
格納される。
【0022】SIXレジスタ15は、つぎにデータを書
き込む位置を、DBAレジスタ12に格納されている転
送先のベースアドレスからのオフセットとして格納する
レジスタである。ただし、転送元または転送先のいずれ
か一方がリングバッファである場合には、リングバッフ
ァとデータ転送をおこなう相手方のアドレスは固定であ
るとする。そのため、SIXレジスタ15が空くので、
この場合には、SIXレジスタ15にダイレクトメモリ
アクセス転送動作のストップアドレスが、SBAレジス
タ11またはDBAレジスタ12に格納されているリン
グバッファのベースアドレスからのオフセットとして格
納される。
【0023】BUFレジスタ16は、転送元から読み出
したデータを転送先に書き込むまでの間、一時的に格納
するためのデータバッファとなるレジスタである。CC
FRレジスタ17は、ダイレクトメモリアクセス制御装
置の動作のモードなどを設定するためのレジスタであ
る。リングバッファを転送元または転送先とする場合の
設定は、このCCFRレジスタ17でおこなわれる。C
CTRレジスタ18は、ダイレクトメモリアクセス制御
装置の動作の開始や停止などの制御をおこなうためのレ
ジスタである。CSTRレジスタ19は、ダイレクトメ
モリアクセス制御装置の動作の状態を表示するためのレ
ジスタである。
【0024】また、制御部2は、メインシーケンサ(M
CTL)21、比較器(Comp)22、演算回路(A
LU)23および4個のセレクタ24,25,26,2
7を備えている。メインシーケンサ21は、ダイレクト
メモリアクセス制御装置の各部を制御するための信号を
生成する。比較器22は、つぎの3つの比較動作をおこ
なう。第1に、比較器22は、転送元および転送先の両
方がともにリングバッファでない場合に、BCLレジス
タ10に格納されている値とSIXレジスタ15に格納
されている値とを比較し、指定された量のデータの転送
が完了したことを検出する。
【0025】第2に、比較器22は、転送元または転送
先がリングバッファである場合に、BCLレジスタ10
に格納されている値とPIXレジスタ14に格納されて
いる値とを比較し、リングバッファに割り付けられてい
るメモリ領域の末尾に達したことを検出する。第3に、
比較器22は、転送元または転送先がリングバッファで
ある場合に、PIXレジスタ14に格納されている値と
SIXレジスタ15に格納されている値とを比較し、ス
トップアドレスに到達したことを検出する。
【0026】演算回路23は、転送に用いられるアドレ
スの計算をおこなう回路であり、メインシーケンサ21
からの指示に基づいてつぎの演算をおこなう。転送元か
ら読み出すデータの読み出し位置のアドレスを求めるに
は、SBAレジスタ11に格納されている値に、PIX
レジスタ14に格納されている値を足す演算をおこな
う。転送先がリングバッファの場合のデータの書き込み
位置のアドレスを求めるには、DBAレジスタ12に格
納されている値に、PIXレジスタ14に格納されてい
る値を足す演算をおこなう。転送先がリングバッファ以
外の場合のデータの書き込み位置のアドレスを求めるに
は、DBAレジスタ12に格納されている値に、SIX
レジスタ15に格納されている値を足す演算をおこな
う。
【0027】以上の3つの演算は、転送の対象となるデ
ータの格納領域がベースアドレスに対してアドレスの増
加する方向に設けられている場合のものである。その反
対に、転送の対象となるデータの格納領域がベースアド
レスに対してアドレスの減少する方向に設けられている
場合には、上記3つの演算に代えてつぎの3つの演算と
なる。すなわち、転送元から読み出すデータの読み出し
位置のアドレスを求めるには、SBAレジスタ11に格
納されている値から、PIXレジスタ14に格納されて
いる値を引く演算となる。転送先がリングバッファの場
合のデータの書き込み位置のアドレスを求めるには、D
BAレジスタ12に格納されている値から、PIXレジ
スタ14に格納されている値を引く演算となる。転送先
がリングバッファ以外の場合のデータの書き込み位置の
アドレスを求めるには、DBAレジスタ12に格納され
ている値から、SIXレジスタ15に格納されている値
を引く演算となる。
【0028】転送元がアドレス固定の場合、転送元から
読み出すデータの読み出し位置のアドレスを求めるに
は、SBAレジスタ11に格納されている値にゼロを足
す演算をおこなう。転送先がアドレス固定の場合、デー
タの書き込み位置のアドレスを求めるには、DBAレジ
スタ12に格納されている値にゼロを足す演算をおこな
う。転送元における新オフセット、または転送先がリン
グバッファの場合の転送先における新オフセットを求め
るには、PIXレジスタ14に格納されている値に、S
IZレジスタ13に格納されている値を足す演算をおこ
なう。転送先がリングバッファ以外の場合の新オフセッ
トを求めるには、SIXレジスタ15に格納されている
値に、SIZレジスタ13に格納されている値を足す演
算をおこなう。
【0029】第1のセレクタ24は、BCLレジスタ1
0に格納されている値、およびSIXレジスタ15に格
納されている値のいずれか一方を選択して比較器22に
供給する。第2のセレクタ25は、PIXレジスタ14
に格納されている値、およびSIXレジスタ15に格納
されている値のいずれか一つを選択して比較器22に供
給する。比較器22の比較結果はメインシーケンサ21
に供給される。第3のセレクタ26は、SBAレジスタ
11に格納されている値、DBAレジスタ12に格納さ
れている値、およびSIZレジスタ13に格納されてい
る値のいずれか一つを選択して演算回路23に供給す
る。
【0030】第4のセレクタ27は、PIXレジスタ1
4に格納されている値、およびSIXレジスタ15に格
納されている値のいずれか一方を選択して演算回路23
に供給する。演算回路23の検算結果は、PIXレジス
タ14、SIXレジスタ15、またはダイレクトメモリ
アクセス転送動作の際に出力されるアドレスを一時的に
格納するためにバスインターフェース部3に設けられた
Aoutレジスタ33に供給される。
【0031】バスインターフェース部3は、Aoutレ
ジスタ33の他に、Dinレジスタ31、Doutレジ
スタ32、Ainレジスタ34、バスインターフェース
部3の制御をおこなうシーケンサ(BCTL)35、お
よびセレクタ36を備えている。バスインターフェース
部3は、制御部2の制御にしたがって、転送のためのバ
スサイクルを実行する機能を有する。ここでは、1回の
バスサイクルで読み出しまたは書き込みが可能なデータ
の大きさは、1バイト、2バイト、4バイト、8バイト
または32バイトのいずれかであるとする。また、バス
では、バイトアドレッシングが用いられるものとし、バ
スサイクルで用いられるアドレスは転送されるデータの
大きさにより定まる自然な境界(natural bo
undary)に整列していなければならないものとす
る。この場合、たとえば4バイトのデータを転送するに
は、バスサイクルで用いられるアドレスは4の倍数に制
約される。
【0032】Dinレジスタ31は、レジスタ設定のた
めの書き込みデータ、またはダイレクトメモリアクセス
転送動作により転送元から読み出されたデータを一時的
に格納するレジスタである。Dinレジスタ31に格納
されたデータは、BCLレジスタ10、SBAレジスタ
11、DBAレジスタ12、SIZレジスタ13、PI
Xレジスタ14、SIXレジスタ15、BUFレジスタ
16、CCFRレジスタ17、CCTRレジスタ18お
よびCSTRレジスタ19のうちの対応するレジスタに
供給される。Doutレジスタ32は、BCLレジスタ
10、SBAレジスタ11、DBAレジスタ12、SI
Zレジスタ13、PIXレジスタ14、SIXレジスタ
15、CCFRレジスタ17、CCTRレジスタ18ま
たはCSTRレジスタ19から読み出されたデータ、ま
たはBUFレジスタ16から読み出された、ダイレクト
メモリアクセス転送動作により転送先に書き込むデータ
を一時的に格納するレジスタである。
【0033】Ainレジスタ34は、レジスタの設定等
をおこなう際のアクセスで使用するアドレスの値を一時
的に格納するレジスタである。Ainレジスタ34から
入力されたアドレスの値はシーケンサ(BCTL)35
に供給される。セレクタ36は、BCLレジスタ10、
SBAレジスタ11、DBAレジスタ12、SIZレジ
スタ13、PIXレジスタ14、SIXレジスタ15、
BUFレジスタ16、CCFRレジスタ17、CCTR
レジスタ18およびCSTRレジスタ19の各レジスタ
に格納されている値のいずれか一つを選択してDout
レジスタ32に供給する。
【0034】つぎに、図1に示す構成のダイレクトメモ
リアクセス制御装置の動作について説明する。図2は、
通常の動作においてメモリのある領域から他の領域へデ
ータを転送する際の制御手順を示すフローチャートであ
る。ダイレクトメモリアクセス制御装置は、起動後、ダ
イレクトメモリアクセス転送の要求が発生されるのを待
機する状態となる(ステップS21)。ダイレクトメモ
リアクセス転送の要求が発生すると、制御部2の演算回
路23は、SBAレジスタ11に格納されている値に、
PIXレジスタ14に格納されている値を足して、転送
元から読み出すデータの読み出し位置のアドレスを求め
る。求められたアドレスはバスインターフェース部3の
Aoutレジスタ33に転送され、そこに格納される
(ステップS22)。
【0035】バスインターフェース部3は、Aoutレ
ジスタ33に格納された値をアドレスとしてバスサイク
ルを実行し、SIZレジスタ13に格納されている値に
より指定される量のデータを転送元から読み出し、それ
をDinレジスタ31を介してBUFレジスタ16に転
送する。そして、BUFレジスタ16は、転送されてき
たデータを格納する(ステップS23)。演算回路23
は、PIXレジスタ14に格納されている値に、SIZ
レジスタ13に格納されている値を足して、読み出し位
置の新たなオフセット値を求める。この新オフセット値
はPIXレジスタ14に転送され、そこに格納される
(ステップS24)。
【0036】つづいて、演算回路23は、DBAレジス
タ12に格納されている値に、SIXレジスタ15に格
納されている値を足して、転送先に書き込むデータの書
き込み位置のアドレスを求める。求められたアドレスは
バスインターフェース部3のAoutレジスタ33に転
送され、そこに格納される。これと同時に、BUFレジ
スタ16に格納されているデータが、バスインターフェ
ース部3のDoutレジスタ32に転送され、そこに格
納される(ステップS25)。バスインターフェース部
3は、Aoutレジスタ33に格納された値をアドレス
としてバスサイクルを実行し、Doutレジスタ32に
格納されたデータを転送先へ出力する。これによって、
出力データが転送先に書き込まれる(ステップS2
6)。そして、演算回路23は、SIXレジスタ15に
格納されている値に、SIZレジスタ13に格納されて
いる値を足して、書き込み位置の新たなオフセット値を
求める。この新オフセット値はSIXレジスタ15に転
送され、そこに格納される(ステップS27)。
【0037】SIXレジスタ15に格納された新オフセ
ット値は、制御部2の比較器22においてBCLレジス
タ10に格納されている値と比較される(ステップS2
8)。その比較の結果、SIXレジスタ15に格納され
た新オフセット値が、BCLレジスタ10に格納されて
いる値と等しければ、指定された量のデータの転送が完
了したとして、ダイレクトメモリアクセス制御装置はデ
ータの転送動作を停止する。一方、等しくない場合に
は、指定された量のデータの転送が完了していないとし
て、ダイレクトメモリアクセス制御装置はステップS2
1のダイレクトメモリアクセス転送の要求発生待ち状態
に戻る。
【0038】ここで、図2およびそれに関連する上記説
明では、バスサイクルをおこなうためにアドレスを計算
する際に、ステップS22およびステップS25におい
て2つのレジスタの値を足しているが、これは転送の対
象となるデータの格納領域がベースアドレスに対してア
ドレスの増加する方向に設けられているからである。転
送の対象となるデータの格納領域をベースアドレスに対
してアドレスの減少する方向に設けることも可能であ
り、その場合には、ステップS22においてSBAレジ
スタ11に格納されている値から、PIXレジスタ14
に格納されている値を引く演算をおこなうことになる。
【0039】同様に、ステップS25では、DBAレジ
スタ12に格納されている値から、SIXレジスタ15
に格納されている値を引く演算をおこなう。また、この
場合には転送元を読み出す際のサイズと転送先に書き込
む際のサイズがともにSIZレジスタ13の格納値で与
えられるため、転送元に関する演算と転送先に関する演
算とで「+(足す)」と「−(引く)」の指定を変える
ことにより、データの順番が逆になるように転送するこ
とが可能である。これによって、従来のダイレクトメモ
リアクセス制御装置と同様に、データの並べ替えをおこ
なうことができる。
【0040】つぎに、リングバッファが転送元である場
合のダイレクトメモリアクセス制御装置の動作について
説明する。図3は、転送元であるリングバッファからメ
モリ上の他の領域または出力装置へデータを転送する際
の制御手順を示すフローチャートである。図4は、リン
グバッファが転送元である場合のダイレクトメモリアク
セス転送動作時のリングバッファとして割り付けられた
メモリ領域の構造を示すメモリマップ図である。
【0041】ダイレクトメモリアクセス制御装置は、起
動後、ダイレクトメモリアクセス転送の要求が発生され
るのを待機する状態となる(ステップS31)。ダイレ
クトメモリアクセス転送の要求が発生すると、演算回路
23は、SBAレジスタ11に格納されている値に、P
IXレジスタ14に格納されている値を足して、リング
バッファから読み出すデータの読み出し位置のアドレス
を求める。ここで、SBAレジスタ11に格納されてい
る値は、リングバッファに割り付けられた領域のベース
アドレスである。
【0042】PIXレジスタ14に格納されている値
は、データの読み出し位置の、リングバッファに割り付
けられた領域のベースアドレスからのオフセット値であ
る。求められたアドレスはAoutレジスタ33に転送
され、そこに格納される(ステップS32)。バスイン
ターフェース部3は、Aoutレジスタ33に格納され
た値をアドレスとしてバスサイクルを実行し、SIZレ
ジスタ13に格納されている値により指定される量のデ
ータをリングバッファから読み出し、それをDinレジ
スタ31を介してBUFレジスタ16に転送する。そし
て、BUFレジスタ16は、転送されてきたデータを格
納する(ステップS33)。
【0043】つづいて、演算回路23は、DBAレジス
タ12に格納されている値にゼロを足して、転送先に書
き込むデータの書き込み位置のアドレスを求める。求め
られたアドレスはAoutレジスタ33に転送され、そ
こに格納される。これと同時に、BUFレジスタ16に
格納されているデータはDoutレジスタ32に転送さ
れ、そこに格納される(ステップS34)。バスインタ
ーフェース部3は、Aoutレジスタ33に格納された
値をアドレスとしてバスサイクルを実行し、Doutレ
ジスタ32に格納されたデータを転送先へ出力する。こ
れによって、出力データが転送先に書き込まれる(ステ
ップS35)。そして、演算回路23は、PIXレジス
タ14に格納されている値に、SIZレジスタ13に格
納されている値を足して、読み出し位置の新たなオフセ
ット値を求める。この新オフセット値はPIXレジスタ
14に転送され、そこに格納される(ステップS3
6)。
【0044】PIXレジスタ14に格納された新オフセ
ット値は、比較器22においてBCLレジスタ10に格
納されている値と比較される(ステップS37)。BC
Lレジスタ10に格納されている値は、リングバッファ
に割り付けられた領域のサイズに相当する。したがっ
て、比較の結果、PIXレジスタ14に格納された値
が、BCLレジスタ10に格納されている値以上となる
場合には、リングバッファの末尾に達したと判断してP
IXレジスタ14のオフセット値がゼロに戻される(ス
テップS38)。これによって、SBAレジスタ11に
格納されている、リングバッファに割り付けられた領域
のベースアドレスから、SBAレジスタ11に格納され
ている値にBCLレジスタ10に格納されている値を足
したアドレスまでの間の領域、すなわちリングバッファ
に割り付けられた領域を循環的にアクセスしデータ転送
をおこなうことができる。
【0045】一方、PIXレジスタ14に格納された値
が、BCLレジスタ10に格納されている値に達するま
では、PIXレジスタ14に格納された値は、比較器2
2においてSIXレジスタ15に格納されている値と比
較される(ステップS39)。ここで、SIXレジスタ
15に格納されている値は、リングバッファにデータを
書き込むプロセスがつぎにデータを書き込む位置を示す
値、すなわちダイレクトメモリアクセス制御装置がリン
グバッファを転送元とする転送動作を停止するべき位置
を示す値である。
【0046】したがって、比較の結果、PIXレジスタ
14に格納された新オフセット値が、SIXレジスタ1
5に格納されている値と等しければ、ストップアドレス
に到達したとして、ダイレクトメモリアクセス制御装置
はデータの転送動作を停止する。新オフセット値がスト
ップアドレスに一致するということは、リングバッファ
が空であることを意味する。一方、等しくない場合に
は、ストップアドレスに到達していないとして、ダイレ
クトメモリアクセス制御装置はステップS31のダイレ
クトメモリアクセス転送の要求発生待ち状態に戻る。
【0047】ここで、図3および図4、並びにそれらに
関連する上記説明は、転送の対象となるデータの格納領
域がベースアドレスに対してアドレスの増加する方向に
設けられている場合についてのものであるが、転送の対
象となるデータの格納領域をベースアドレスに対してア
ドレスの減少する方向に設けることも可能である。その
場合には、図3のステップS32においてSBAレジス
タ11に格納されている値から、PIXレジスタ14に
格納されている値を引く演算をおこなうことになる。
【0048】このときの、リングバッファとして割り付
けられたメモリ領域の構造を示すメモリマップ図は図5
に示すようになり、リングバッファに割り付けられた領
域は、SBAレジスタ11に格納されているベースアド
レスから、SBAレジスタ11に格納されている値から
BCLレジスタ10に格納されている値を引いたアドレ
スまでの間の領域となる。そして、その間の領域を循環
的にアクセスしデータ転送をおこなうことができる。ま
た、転送元に関する演算と転送先に関する演算とで「+
(足す)」と「−(引く)」の指定を変えることによ
り、データの順番が逆になるように転送することが可能
である。
【0049】リングバッファを転送元としてダイレクト
メモリアクセス制御装置が動作しているとき、それと並
行してCPUはつぎの手順で処理済のデータをリングバ
ッファに書き込む。図6は、リングバッファを転送元と
してダイレクトメモリアクセス制御装置が動作している
ときのCPUによるリングバッファへのデータ書き込み
手順を示すフローチャートである。CPUは、リングバ
ッファへのデータ書き込みを開始すると、まず、SBA
レジスタ11に格納されている値(すなわち、リングバ
ッファのベースアドレス)に、SIXレジスタ15に格
納されている値(ストップアドレス)を足してリングバ
ッファに書き込むデータの書き込み位置のアドレスを求
める。CPUは、そのアドレスで指定される位置に、S
IZレジスタ13に格納されている値により指定される
量のデータを転送する(ステップS61)。
【0050】そして、CPUは、SIXレジスタ15に
格納されている値に、SIZレジスタ13に格納されて
いる値を足し、それとBCLレジスタ10に格納されて
いる値との剰余を演算して求める。剰余の演算により求
められた値は、CPUの、データを一時的に格納するt
mpレジスタに格納される(ステップS62)。つづい
て、CPUは、PIXレジスタ14に格納されている値
と、tmpレジスタに格納されている値を比較する(ス
テップS63)。それらが一致する場合は、リングバッ
ファは満杯である。したがって、ダイレクトメモリアク
セス制御装置の転送動作により、PIXレジスタ14に
格納されている値が進むまで待つ。PIXレジスタ14
に格納されている値が進んだら、CPUは、tmpレジ
スタに格納されている値をSIXレジスタ15に格納し
(ステップS64)、ステップS61に戻る。
【0051】つぎに、リングバッファが転送先である場
合のダイレクトメモリアクセス制御装置の動作について
説明する。図7は、転送先であるリングバッファへメモ
リ上の他の領域または入力装置からデータを転送する際
の制御手順を示すフローチャートである。図8は、リン
グバッファが転送先である場合のダイレクトメモリアク
セス転送動作時のリングバッファとして割り付けられた
メモリ領域の構造を示すメモリマップ図である。
【0052】ダイレクトメモリアクセス制御装置は、起
動後、ダイレクトメモリアクセス転送の要求が発生され
るのを待機する状態となる(ステップS71)。ダイレ
クトメモリアクセス転送の要求が発生すると、演算回路
23は、SBAレジスタ11に格納されている値にゼロ
を足し、その値を転送元から読み出すデータのアドレス
としてAoutレジスタ33に転送する。転送された値
はAoutレジスタ33に格納される(ステップS7
2)。バスインターフェース部3は、Aoutレジスタ
33に格納された値をアドレスとしてバスサイクルを実
行し、SIZレジスタ13に格納されている値により指
定される量のデータを転送元から読み出し、それをDi
nレジスタ31を介してBUFレジスタ16に転送す
る。そして、BUFレジスタ16は、転送されてきたデ
ータを格納する(ステップS73)。
【0053】つづいて、演算回路23は、DBAレジス
タ12に格納されている値に、PIXレジスタ14に格
納されている値を足して、リングバッファに書き込むデ
ータの書き込み位置のアドレスを求める。ここで、DB
Aレジスタ12に格納されている値は、リングバッファ
に割り付けられた領域のベースアドレスである。PIX
レジスタ14に格納されている値は、データの書き込み
位置の、リングバッファに割り付けられた領域のベース
アドレスからのオフセット値である。求められたアドレ
スはAoutレジスタ33に転送され、そこに格納され
る。これと同時に、BUFレジスタ16に格納されてい
るデータはDoutレジスタ32に転送され、そこに格
納される(ステップS74)。
【0054】バスインターフェース部3は、Aoutレ
ジスタ33に格納された値をアドレスとしてバスサイク
ルを実行し、Doutレジスタ32に格納されたデータ
をリングバッファへ出力する。これによって、出力デー
タがリングバッファに書き込まれる(ステップS7
5)。そして、演算回路23は、PIXレジスタ14に
格納されている値に、SIZレジスタ13に格納されて
いる値を足して、書き込み位置の新たなオフセット値を
求める。この新オフセット値はPIXレジスタ14に転
送され、そこに格納される(ステップS76)。
【0055】PIXレジスタ14に格納された新オフセ
ット値は、比較器22においてBCLレジスタ10に格
納されている値と比較される(ステップS77)。その
比較の結果、PIXレジスタ14に格納された値が、B
CLレジスタ10に格納されている値以上となる場合に
は、リングバッファの末尾に達したと判断してPIXレ
ジスタ14のオフセット値がゼロに戻される(ステップ
S78)。これによって、DBAレジスタ12に格納さ
れている、リングバッファに割り付けられた領域のベー
スアドレスから、DBAレジスタ12に格納されている
値にBCLレジスタ10に格納されている値を足したア
ドレスまでの間の領域、すなわちリングバッファに割り
付けられた領域を循環的にアクセスしデータ転送をおこ
なうことができる。
【0056】一方、PIXレジスタ14に格納された値
が、BCLレジスタ10に格納されている値に達するま
では、PIXレジスタ14に格納された値は、比較器2
2においてSIXレジスタ15に格納されている値と比
較される(ステップS79)。ここで、SIXレジスタ
15に格納されている値は、リングバッファからデータ
を読み出して処理をおこなうプロセスがつぎにデータを
読み出す位置を示す値、すなわちダイレクトメモリアク
セス制御装置がリングバッファを転送先とする転送動作
を停止するべき位置を示す値である。
【0057】したがって、比較の結果、PIXレジスタ
14に格納された新オフセット値が、SIXレジスタ1
5に格納されている値と等しければ、ストップアドレス
に到達したとして、ダイレクトメモリアクセス制御装置
はデータの転送動作を停止する。新オフセット値がスト
ップアドレスに一致するということは、リングバッファ
が満杯であることを意味する。一方、等しくない場合に
は、ストップアドレスに到達していないとして、ダイレ
クトメモリアクセス制御装置はステップS71のダイレ
クトメモリアクセス転送の要求発生待ち状態に戻る。
【0058】ここで、図7および図8、並びにそれらに
関連する上記説明は、転送の対象となるデータの格納領
域がベースアドレスに対してアドレスの増加する方向に
設けられている場合についてのものであるが、転送の対
象となるデータの格納領域をベースアドレスに対してア
ドレスの減少する方向に設けることも可能である。その
場合には、図7のステップS74においてDBAレジス
タ12に格納されている値から、PIXレジスタ14に
格納されている値を引く演算をおこなうことになる。
【0059】このときの、リングバッファとして割り付
けられたメモリ領域の構造を示すメモリマップ図は図9
に示すようになり、リングバッファに割り付けられた領
域は、DBAレジスタ12に格納されているベースアド
レスから、DBAレジスタ12に格納されている値から
BCLレジスタ10に格納されている値を引いたアドレ
スまでの間の領域となる。そして、その間の領域を循環
的にアクセスしデータ転送をおこなうことができる。ま
た、転送元に関する演算と転送先に関する演算とで「+
(足す)」と「−(引く)」の指定を変えることによ
り、データの順番が逆になるように転送することが可能
であることは勿論である。
【0060】リングバッファを転送先としてダイレクト
メモリアクセス制御装置が動作しているとき、それと並
行してCPUはつぎの手順でリングバッファからデータ
を読み出す。図10は、リングバッファを転送先として
ダイレクトメモリアクセス制御装置が動作しているとき
のCPUによるリングバッファからのデータ読み出し手
順を示すフローチャートである。CPUは、リングバッ
ファからのデータ読み出しを開始すると、まず、DBA
レジスタ12に格納されている値(すなわち、リングバ
ッファのベースアドレス)に、SIXレジスタ15に格
納されている値(ストップアドレス)を足してリングバ
ッファから読み出すデータの読み出し位置のアドレスを
求める。CPUは、そのアドレスで指定される位置か
ら、SIZレジスタ13に格納されている値により指定
される量のデータを読み出し、転送する(ステップS1
01)。
【0061】そして、CPUは、SIXレジスタ15に
格納されている値に、SIZレジスタ13に格納されて
いる値を足し、それとBCLレジスタ10に格納されて
いる値との剰余を演算して求める。剰余の演算により求
められた値は、CPUの、データを一時的に格納するt
mpレジスタに格納される(ステップS102)。つづ
いて、CPUは、PIXレジスタ14に格納されている
値と、tmpレジスタに格納されている値を比較する
(ステップS103)。それらが一致する場合は、リン
グバッファは空である。したがって、ダイレクトメモリ
アクセス制御装置の転送動作により、PIXレジスタ1
4に格納されている値が進むまで待つ。PIXレジスタ
14に格納されている値が進んだら、CPUは、tmp
レジスタに格納されている値をSIXレジスタ15に格
納し(ステップS104)、ステップS101に戻る。
【0062】上述した実施の形態1によれば、リングバ
ッファを転送元または転送先としてダイレクトメモリア
クセス転送をおこなう場合には、データの読み出し位置
または書き込み位置がリングバッファのベースアドレス
とそこからのオフセットで与えられ、このオフセット
は、ダイレクトメモリアクセス転送動作により転送され
たデータの量だけ更新され、データの総転送量以上にな
るとゼロにリセットされるので、リングバッファのベー
スアドレスと、そのベースアドレスとデータの総転送量
とによって決定されるアドレスとの間を循環してアクセ
スするようにアドレスが発生する。したがって、アドレ
ス計算に際して、下位側のあるビットから上位への桁上
げを抑制することによりリングバッファ用の循環アドレ
スを発生させる従来の技術に比べて、自由にリングバッ
ファに割り付ける領域のアドレスおよびサイズを選定す
ることができる。
【0063】また、上述した実施の形態1によれば、リ
ングバッファの末尾に達した際にアドレスレジスタに初
期値を再設定することによりリングバッファ用の循環ア
ドレスを発生させる従来の技術に比べて、初期値を保持
するためのレジスタが不要であるため、回路規模を小さ
くすることができる。さらには、たとえば、アドレスが
32ビットのシステムであるが、総転送データ量の上限
が16ビットであるシステムのように、アドレス空間の
サイズよりも総転送データ量の上限の方が小さい場合
に、BCLレジスタ10やPIXレジスタ14やSIX
レジスタ15のビット数を削減することができ、それに
よって回路規模を縮小することができる。
【0064】また、本発明によれば、リングバッファの
読み出し位置または書き込み位置を示すオフセットは、
ダイレクトメモリアクセス転送動作により転送されたデ
ータの量だけ更新され、一方、ストップアドレスは、C
PUなどによってダイレクトメモリアクセス転送動作に
よらずに読み出しまたは書き込みされたデータの量だけ
更新されるので、それらの更新のタイミングに依存関係
が生じない。したがって、ダイレクトメモリアクセス制
御装置の転送動作を停止させずに、リングバッファ内部
の処理済のデータが占めている領域を開放させることが
できるので、ダイレクトメモリアクセスの転送能力の低
下を防ぐことができる。また、リングバッファとして使
用するメモリ領域内にフラグ等の余分なデータ構造を設
ける必要がないため、リングバッファにアクセスするた
めに必要となるメモリ量を減らすことができる。
【0065】(実施の形態2)図11は、本発明にかか
るダイレクトメモリアクセス制御装置の構成の他の例を
示すブロック図である。実施の形態2のダイレクトメモ
リアクセス制御装置は、図1に示す構成のダイレクトメ
モリアクセス制御装置において、SIZレジスタ13を
なくし、その代わりとしてSSIZレジスタ131およ
びDSIZレジスタ132を設けたものである。つま
り、実施の形態2は、SIZレジスタ13を転送元用の
SSIZレジスタ131と転送先用のDSIZレジスタ
132とに分けた構成となっている。
【0066】SSIZレジスタ131は、1回のバス動
作で読み出されるデータの量を格納するレジスタであ
る。DSIZレジスタ132は、1回のバス動作で書き
込まれるデータの量を格納するレジスタである。実施の
形態2では、SSIZレジスタ131により決定される
転送元から読み出すデータの単位量と、DSIZレジス
タ132により決定される転送先に書き込むデータの単
位量とが異なる設定とすることができる。なお、実施の
形態2のその他の構成は実施の形態1と同じであるた
め、実施の形態1と同じ構成については実施の形態1と
同一の符号を付して説明を省略する。
【0067】DSIZレジスタ132で指定される量
が、SSIZレジスタ131で指定される量よりも大き
い場合、ダイレクトメモリアクセス制御装置は、転送元
から転送先への転送動作にあたってパッキング動作をお
こなう。パッキング動作では、ダイレクトメモリアクセ
ス制御装置は、(DSIZレジスタ132で指定される
量)/(SSIZレジスタ131で指定される量)で求
められる回数のデータの読み出しをおこない、得られた
各データをBUFレジスタ16を利用して、DSIZレ
ジスタ132で指定される量のデータにまとめた後に、
1回の転送で転送先に書き込む。
【0068】また、SSIZレジスタ131で指定され
る量が、DSIZレジスタ132で指定される量よりも
大きい場合、ダイレクトメモリアクセス制御装置は、転
送元から転送先への転送動作にあたってアンパッキング
動作をおこなう。アンパッキング動作では、ダイレクト
メモリアクセス制御装置は、SSIZレジスタ131で
指定される量のデータを転送元から読み出し、それをB
UFレジスタ16に格納し、そのデータを、(SSIZ
レジスタ131で指定される量)/(DSIZレジスタ
132で指定される量)で求められる回数に分けて転送
先に書き込む。したがって、実施の形態2では、BUF
レジスタ16は、パッキング動作やアンパッキング動作
をおこなう際のワーク領域としても使用される。
【0069】たとえば、SSIZレジスタ131で指定
される転送元の単位転送量を2sとし、DSIZレジス
タ132で指定される転送元の単位転送量を2dとす
る。ここで、dとsは整数である。d>sの場合には、
転送元からのデータ読み出しを2(d-s)回繰り返してお
こない、それによって得られたデータを連結して一つの
データとして、一度に転送元に書き込む(パッキング動
作)。s>dの場合には、転送元から1回で読み出した
データを2(s-d)個の小さいデータに分割し、それらを
繰り返し転送元に書き込む(アンパッキング動作)。
【0070】ここで、ダイレクトメモリアクセス制御装
置がリングバッファを転送元または転送先とする転送動
作を停止するべき位置は、SIXレジスタ15に格納さ
れている値で示される。したがって、ダイレクトメモリ
アクセス制御装置の転送動作によって更新された、PI
Xレジスタ14に格納された新オフセット値が、SIX
レジスタ15に格納されている値(ストップアドレス)
に一致したときに、ダイレクトメモリアクセス制御装置
は転送動作を停止する(図3または図7参照)。
【0071】ダイレクトメモリアクセス制御装置の転送
動作を停止するか否かを判断するため、PIXレジスタ
14の格納値とSIXレジスタ15の格納値とを比較す
る際に、ダイレクトメモリアクセス制御装置がリングバ
ッファを転送元とする場合には下位sビットをマスクし
て比較し、ダイレクトメモリアクセス制御装置がリング
バッファを転送先とする場合には下位dビットをマスク
して比較する。
【0072】上述した実施の形態2によれば、1回のバ
ス動作で読み出されるデータの単位量と、1回のバス動
作で書き込まれるデータの単位量とが異なる場合でも、
実施の形態1と同様の効果が得られる。また、実施の形
態2によれば、転送元または転送先として、SDRAM
のようにある程度まとまった量を単位とした読み書きを
指向するメモリを用いれば、より大きな転送能力を得る
ことができる。
【0073】以上において本発明は、上述した各実施の
形態に限らず、種々変更可能である。また、上述した各
本実施の形態におけるダイレクトメモリアクセス制御方
法は、あらかじめ用意されたコンピュータ読み取り可能
なプログラムであってもよく、またそのプログラムをパ
ーソナルコンピュータやワークステーションなどのコン
ピュータで実行することによって実現される。このプロ
グラムは、HD(ハードディスク)、FD(フロッピー
(登録商標)ディスク)、CD−ROM、MO、DVD
などのコンピュータで読み取り可能な記録媒体に記録さ
れ、コンピュータによって記録媒体から読み出されるこ
とによって実行される。また、このプログラムは、イン
ターネットなどのネットワークを介して配布することが
可能な伝送媒体であってもよい。
【0074】
【発明の効果】本発明によれば、リングバッファを転送
元または転送先としてダイレクトメモリアクセス転送を
おこなう場合には、データの読み出し位置または書き込
み位置がリングバッファのベースアドレスとそこからの
オフセットで与えられ、このオフセットは、ダイレクト
メモリアクセス転送動作により転送されたデータの量だ
け更新され、データの総転送量以上になるとゼロにリセ
ットされるので、リングバッファのベースアドレスと、
そのベースアドレスとデータの総転送量とによって決定
されるアドレスとの間を循環してアクセスするようにア
ドレスが発生する。したがって、従来よりも自由にリン
グバッファに割り付ける領域のアドレスおよびサイズを
選定することができるとともに、従来よりも、回路規模
を小さくすることができる。
【0075】また、本発明によれば、リングバッファの
読み出し位置または書き込み位置を示すオフセットは、
ダイレクトメモリアクセス転送動作により転送されたデ
ータの量だけ更新され、一方、ストップアドレスは、C
PUなどによってダイレクトメモリアクセス転送動作に
よらずに読み出しまたは書き込みされたデータの量だけ
更新されるので、それらの更新のタイミングに依存関係
が生じない。したがって、ダイレクトメモリアクセスの
転送能力の低下を防ぐことができ、また、リングバッフ
ァの空きを示すフラグ等が不要であるため、リングバッ
ファにアクセスするために必要となるメモリ量を減らす
ことができる。
【図面の簡単な説明】
【図1】本発明にかかるダイレクトメモリアクセス制御
装置の構成の一例を示すブロック図である。
【図2】本発明にかかるダイレクトメモリアクセス制御
装置の通常の動作においてメモリのある領域から他の領
域へデータを転送する際の制御手順を示すフローチャー
トである。
【図3】本発明にかかるダイレクトメモリアクセス制御
装置のリングバッファを転送元とする場合のデータ転送
の制御手順を示すフローチャートである。
【図4】リングバッファを転送元とする場合のダイレク
トメモリアクセス転送動作時のリングバッファとして割
り付けられたメモリ領域の構造を示すメモリマップ図で
ある。
【図5】リングバッファを転送元とする場合のダイレク
トメモリアクセス転送動作時のリングバッファとして割
り付けられたメモリ領域の他の構造を示すメモリマップ
図である。
【図6】リングバッファを転送元としてダイレクトメモ
リアクセス制御装置が動作しているときのCPUによる
リングバッファへのデータ書き込み手順を示すフローチ
ャートである。
【図7】本発明にかかるダイレクトメモリアクセス制御
装置のリングバッファを転送先とする場合のデータ転送
の制御手順を示すフローチャートである。
【図8】リングバッファを転送先とする場合のダイレク
トメモリアクセス転送動作時のリングバッファとして割
り付けられたメモリ領域の構造を示すメモリマップ図で
ある。
【図9】リングバッファを転送先とする場合のダイレク
トメモリアクセス転送動作時のリングバッファとして割
り付けられたメモリ領域の他の構造を示すメモリマップ
図である。
【図10】リングバッファを転送先としてダイレクトメ
モリアクセス制御装置が動作しているときのCPUによ
るリングバッファからのデータ読み出し手順を示すフロ
ーチャートである。
【図11】本発明にかかるダイレクトメモリアクセス制
御装置の構成の他の例を示すブロック図である。
【符号の説明】
2 制御部 10 BCLレジスタ(第5のレジスタ) 11 SBAレジスタ(第1のレジスタ) 12 DBAレジスタ(第2のレジスタ) 14 PIXレジスタ(第3のレジスタ) 15 SIXレジスタ(第4のレジスタ) 16 BUFレジスタ(第8のレジスタ) 131 SSIZレジスタ(第6のレジスタ) 132 DSIZレジスタ(第7のレジスタ)

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 転送元領域のベースアドレスを格納する
    第1のレジスタと、 転送先領域のベースアドレスを格納する第2のレジスタ
    と、 前記転送元領域におけるデータの読み出し位置を、前記
    第1のレジスタに格納されたベースアドレスからのオフ
    セットとして格納する第3のレジスタと、 前記転送先領域におけるデータの書き込み位置を、前記
    第2のレジスタに格納されたベースアドレスからのオフ
    セットとして格納する第4のレジスタと、 データの総転送量を格納する第5のレジスタと、 前記第1のレジスタの格納値および前記第3のレジスタ
    の格納値に基づいて決定される転送元アドレスからデー
    タを読み出し、読み出されたデータを、前記第2のレジ
    スタの格納値および前記第4のレジスタの格納値に基づ
    いて決定される転送先アドレスに書き込み、転送したデ
    ータの量だけ前記第3のレジスタおよび前記第4のレジ
    スタの各格納値を更新させる動作を、前記第4のレジス
    タの格納値が前記第5のレジスタの格納値に一致するま
    で、繰り返しおこなわせる制御部と、 を具備することを特徴とするダイレクトメモリアクセス
    制御装置。
  2. 【請求項2】 転送元領域のベースアドレスを格納する
    第1のレジスタと、 転送先領域の固定アドレスを格納する第2のレジスタ
    と、 前記転送元領域におけるデータの読み出し位置を、前記
    第1のレジスタに格納されたベースアドレスからのオフ
    セットとして格納する第3のレジスタと、 転送元にデータを書き込むプロセスがつぎに同じ転送元
    にデータを書き込む際の書き込み位置を、前記第1のレ
    ジスタに格納されたベースアドレスからのオフセットと
    して格納する第4のレジスタと、 データの総転送量を格納する第5のレジスタと、 前記第1のレジスタの格納値および前記第3のレジスタ
    の格納値に基づいて決定される転送元アドレスからデー
    タを読み出し、読み出されたデータを、前記第2のレジ
    スタの格納値で示される転送先アドレスに書き込み、転
    送されたデータの量だけ前記第3のレジスタの格納値を
    更新させ、更新した前記第3のレジスタの格納値が前記
    第5のレジスタの格納値以上になるときに前記第3のレ
    ジスタの格納値をゼロにリセットする動作を、前記第3
    のレジスタの格納値が前記第4のレジスタの格納値に一
    致するまで、繰り返しおこなわせる制御部と、 を具備することを特徴とするダイレクトメモリアクセス
    制御装置。
  3. 【請求項3】 転送元領域の固定アドレスを格納する第
    1のレジスタと、 転送先領域のベースアドレスを格納する第2のレジスタ
    と、 前記転送先領域におけるデータの書き込み位置を、前記
    第2のレジスタに格納されたベースアドレスからのオフ
    セットとして格納する第3のレジスタと、 転送先からデータを読み出すプロセスがつぎに同じ転送
    先からデータを読み出す際の読み出し位置を、前記第2
    のレジスタに格納されたベースアドレスからのオフセッ
    トとして格納する第4のレジスタと、 データの総転送量を格納する第5のレジスタと、 前記第1のレジスタの格納値で示される転送元アドレス
    からデータを読み出し、読み出されたデータを、前記第
    2のレジスタの格納値および前記第3のレジスタの格納
    値に基づいて決定される転送先アドレスに書き込み、転
    送されたデータの量だけ前記第3のレジスタの格納値を
    更新させ、更新した前記第3のレジスタの格納値が前記
    第5のレジスタの格納値以上になるときに前記第3のレ
    ジスタの格納値をゼロにリセットする動作を、前記第3
    のレジスタの格納値が前記第4のレジスタの格納値に一
    致するまで、繰り返しおこなわせる制御部と、 を具備することを特徴とするダイレクトメモリアクセス
    制御装置。
  4. 【請求項4】 1回のバス動作で読み出されるデータの
    単位量を格納する第6のレジスタと、 1回のバス動作で書き込まれるデータの単位量を格納す
    る第7のレジスタと、 ワーク領域として用いられる第8のレジスタと、 をさらに具備し、 前記制御部は、前記第7のレジスタで指定される量が、
    前記第6のレジスタで指定される量よりも大きい場合、
    転送元からのデータの読み出しを複数回繰り返しおこな
    い、得られた各データを前記第8のレジスタを利用して
    前記第7のレジスタで指定される量のデータにまとめ、
    まとめられたデータを1回の書き込み動作で転送先に書
    き込む制御をおこなうことを特徴とする請求項1〜3の
    いずれか一つに記載のダイレクトメモリアクセス制御装
    置。
  5. 【請求項5】 1回のバス動作で読み出されるデータの
    単位量を格納する第6のレジスタと、 1回のバス動作で書き込まれるデータの単位量を格納す
    る第7のレジスタと、 ワーク領域として用いられる第8のレジスタと、 をさらに具備し、 前記制御部は、前記第6のレジスタで指定される量が、
    前記第7のレジスタで指定される量よりも大きい場合、
    前記第6のレジスタで指定される量のデータを転送元か
    ら1回の読み出し動作で読み出し、得られたデータを一
    旦前記第8のレジスタに格納し、前記第8のレジスタに
    格納された前記データを、複数回の書き込み動作で転送
    先に書き込む制御をおこなうことを特徴とする請求項1
    〜3のいずれか一つに記載のダイレクトメモリアクセス
    制御装置。
  6. 【請求項6】 転送元領域のベースアドレスおよび前記
    転送元領域のベースアドレスからの第1のオフセットに
    基づいて決定される転送元アドレスからデータを読み出
    す工程と、 読み出したデータの量だけ前記第1のオフセットを更新
    する工程と、 読み出したデータを、転送先領域のベースアドレスおよ
    び前記転送先領域のベースアドレスからの第2のオフセ
    ットに基づいて決定される転送先アドレスに書き込む工
    程と、 書き込んだデータの量だけ前記第2のオフセットを更新
    する工程と、 を、更新後の前記第2のオフセットがデータの総転送量
    に一致するまで、繰り返しおこなうことを特徴とするダ
    イレクトメモリアクセス制御方法。
  7. 【請求項7】 転送元領域のベースアドレスおよび前記
    転送元領域のベースアドレスからのオフセットに基づい
    て決定される転送元アドレスからデータを読み出す工程
    と、 読み出したデータを、転送先領域の固定されたアドレス
    に書き込む工程と、 転送したデータの量だけ前記オフセットを更新する工程
    と、 更新後の前記オフセットがデータの総転送量以上になる
    ときに前記オフセットをゼロにリセットする工程と、 を、前記オフセットが、同一の転送元にデータを書き込
    むプロセスがつぎに同じ転送元にデータを書き込む際の
    書き込み位置の、転送元領域のベースアドレスからのオ
    フセットに一致するまで、繰り返しおこなうことを特徴
    とするダイレクトメモリアクセス制御方法。
  8. 【請求項8】 転送元領域の固定されたアドレスからデ
    ータを読み出す工程と、 読み出したデータを、転送先領域のベースアドレスおよ
    びそこからのオフセットに基づいて決定される転送先ア
    ドレスに書き込む工程と、 転送したデータの量だけ前記オフセットを更新する工程
    と、 更新後の前記オフセットがデータの総転送量以上になる
    ときに前記オフセットをゼロにリセットする工程と、 を、前記オフセットが、同一の転送先からデータを読み
    出すプロセスがつぎに同じ転送先からデータを読み出す
    際の読み出し位置の、転送先領域のベースアドレスから
    のオフセットに一致するまで、繰り返しおこなうことを
    特徴とするダイレクトメモリアクセス制御方法。
  9. 【請求項9】 1回のバス動作で書き込まれるデータの
    単位量が、1回のバス動作で読み出されるデータの単位
    量よりも大きい場合、転送元からのデータの読み出しを
    複数回繰り返しおこない、得られた各データを、1回の
    バス動作で書き込まれるデータの単位量にまとめて1回
    の書き込み動作で転送先に書き込むことを特徴とする請
    求項6〜8のいずれか一つに記載のダイレクトメモリア
    クセス制御方法。
  10. 【請求項10】 1回のバス動作で読み出されるデータ
    の単位量が、1回のバス動作で書き込まれるデータの単
    位量よりも大きい場合、1回の読み出し動作で読み出し
    たデータを、1回のバス動作で書き込まれるデータの単
    位量ごとに分けて複数回の書き込み動作で転送先に書き
    込むことを特徴とする請求項6〜8のいずれか一つに記
    載のダイレクトメモリアクセス制御方法。
JP2001142459A 2001-05-11 2001-05-11 ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法 Pending JP2002342262A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001142459A JP2002342262A (ja) 2001-05-11 2001-05-11 ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法
US10/017,321 US6684267B2 (en) 2001-05-11 2001-12-18 Direct memory access controller, and direct memory access control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001142459A JP2002342262A (ja) 2001-05-11 2001-05-11 ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法

Publications (1)

Publication Number Publication Date
JP2002342262A true JP2002342262A (ja) 2002-11-29

Family

ID=18988757

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001142459A Pending JP2002342262A (ja) 2001-05-11 2001-05-11 ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法

Country Status (2)

Country Link
US (1) US6684267B2 (ja)
JP (1) JP2002342262A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217382A (ja) * 2007-03-05 2008-09-18 Renesas Technology Corp データ処理装置
US9727504B2 (en) 2012-02-29 2017-08-08 Mitsubishi Electric Corporation Data transfer apparatus, data transfer method, and data transfer program

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003271542A (ja) * 2002-03-18 2003-09-26 Fujitsu Ltd ダイレクトアクセスコントローラ
JP4686104B2 (ja) * 2002-04-22 2011-05-18 富士通セミコンダクター株式会社 Dmaコントローラ
JP2004341671A (ja) * 2003-05-14 2004-12-02 Internatl Business Mach Corp <Ibm> 情報処理システム、制御方法、制御プログラム、及び記録媒体
FR2882521B1 (fr) * 2005-02-28 2008-05-09 Oreal Coloration de matieres keratiniques notamment humaines par transfert thermique a sec d'un colorant direct, composition comprenant ledit colorant et son procede de preparation
US7721018B2 (en) * 2006-08-24 2010-05-18 Microchip Technology Incorporated Direct memory access controller with flow control
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8281295B2 (en) * 2008-05-23 2012-10-02 International Business Machines Corporation Computer analysis and runtime coherency checking
US8285670B2 (en) 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US9952840B2 (en) * 2012-05-15 2018-04-24 International Business Machines Corporation Conditional sequential selection of external reference resolutions
CN104281545B (zh) * 2013-07-11 2018-02-23 华为技术有限公司 一种数据读取方法及设备
US9741095B2 (en) * 2014-01-29 2017-08-22 Raytheon Company Method for electronic zoom with sub-pixel offset
WO2020230265A1 (ja) * 2019-05-14 2020-11-19 日本電信電話株式会社 パケットキャプチャ装置および方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0760423B2 (ja) 1984-12-24 1995-06-28 株式会社日立製作所 データ転送方式
JPH05250305A (ja) * 1992-03-06 1993-09-28 Mitsubishi Electric Corp データ転送制御方式
JPH06161944A (ja) 1992-11-26 1994-06-10 Matsushita Electric Ind Co Ltd Dma制御装置
US5530902A (en) * 1993-06-14 1996-06-25 Motorola, Inc. Data packet switching system having DMA controller, service arbiter, buffer type managers, and buffer managers for managing data transfer to provide less processor intervention
US5574944A (en) * 1993-12-15 1996-11-12 Convex Computer Corporation System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context
US5884100A (en) * 1996-06-06 1999-03-16 Sun Microsystems, Inc. Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor
US7181548B2 (en) * 1998-10-30 2007-02-20 Lsi Logic Corporation Command queueing engine
US6604156B1 (en) * 1999-09-15 2003-08-05 Koninklijke Philips Electronics N.V. Message buffer full handling in a CAN device that employs reconfigurable message buffers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217382A (ja) * 2007-03-05 2008-09-18 Renesas Technology Corp データ処理装置
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
US6684267B2 (en) 2004-01-27
US20020169900A1 (en) 2002-11-14

Similar Documents

Publication Publication Date Title
US6341318B1 (en) DMA data streaming
US7500028B2 (en) DMA controller providing for ring buffer and rectangular block transfers
JP2002342262A (ja) ダイレクトメモリアクセス制御装置およびダイレクトメモリアクセス制御方法
JP2003512670A (ja) 連結リストdma記述子アーキテクチャ
JP3181515B2 (ja) データ転送方法及びその方法を用いたデータ転送装置
JP4439455B2 (ja) ビット操作方法、プロセッサ、システム、コンピュータ処理システム、コンピュータのネットワーク
US6687763B2 (en) ATAPI command receiving method
US6272583B1 (en) Microprocessor having built-in DRAM and internal data transfer paths wider and faster than independent external transfer paths
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
US6442627B1 (en) Output FIFO data transfer control device
JPH10124447A (ja) データ転送制御方法及び装置
JP2000029767A (ja) デ―タ処理装置における書き込みバッファ
US6801988B2 (en) Data buffer for block unit data transfer to SDRAM
US6032235A (en) Memory initialization circuit
JP2004030224A (ja) プロセッサ、レジスタ退避方法およびレジスタ指定方法
KR20040073167A (ko) 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
JPH01125644A (ja) データ転送装置
JP2003196156A (ja) 情報処理装置および情報処理方法
JPH1040165A (ja) データ読み出し方法およびリードバッファ
JPH06274450A (ja) データ転送システム
JPH06301600A (ja) 記憶装置
JP2847729B2 (ja) 情報処理装置
CN113961487A (zh) 加速存储器存取的电子装置及方法
JP3345050B2 (ja) 二次元配列型メモリシステム
JPH09146872A (ja) データ入出力処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080710

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090205

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090312

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090403