JP2001154976A - Dmaコントローラ及びその制御方法 - Google Patents

Dmaコントローラ及びその制御方法

Info

Publication number
JP2001154976A
JP2001154976A JP33468399A JP33468399A JP2001154976A JP 2001154976 A JP2001154976 A JP 2001154976A JP 33468399 A JP33468399 A JP 33468399A JP 33468399 A JP33468399 A JP 33468399A JP 2001154976 A JP2001154976 A JP 2001154976A
Authority
JP
Japan
Prior art keywords
transfer
data
input
bus
signal
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
JP33468399A
Other languages
English (en)
Inventor
Toshiaki Minami
利秋 南
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP33468399A priority Critical patent/JP2001154976A/ja
Priority to US09/718,189 priority patent/US6651114B1/en
Publication of JP2001154976A publication Critical patent/JP2001154976A/ja
Withdrawn 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)

Abstract

(57)【要約】 【課題】 I/Oバスに接続されたデバイスに依存し
て、I/Oバスとシステムバス間のデータ転送レートを
適応的に最適なものとする。 【解決手段】 入出力デバイス250’が高速転送可能
な装置であって、その装置250にDMAチャネルが割
り当てられているとする。バースト要求信号272がア
サートされているときに、アクノリッジ信号271があ
ると、その1つのアクノリッジ信号に対して、DMAコ
ントローラ280’は、FIFOメモリ290内の所定
数のデータは連続してその入出力装置に転送する。これ
で主記憶から入出力デバイスへの転送を行う。また、入
出力装置から主記憶への転送の場合も同様に行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はDMAコントローラ
及びその制御方法、詳しくは、主記憶とI/O間のデー
タ転送を行うDMAコントローラ及びその制御方法に関
するものである。
【0002】
【従来の技術】コンピュータシステムにおいて直接メモ
リアクセス(DMA)は入出力(I/O)デバイスとシ
ステムの主記憶との間でデータを転送するために用いら
れる。また主記憶のある範囲の内容を別のある範囲に転
送するためにも使われる。DMAはCPUに関わらずD
MAコントローラによって実行される。すなわちDMA
コントローラは入出力装置にデータを出力させ、それを
主記憶に書き込む機能と、主記憶からデータを読み出
し、それを入出力装置に受け取らせる機能を有する。こ
のようにして、DMAコントローラが動作中であって
も、CPUは他のタスクを実行することができるため、
システム全体のパフォーマンスを著しく向上させること
ができる。
【0003】図2はDMAコントローラを使用したコン
ピュータシステムの一例の構成図である。同図において
100はシステムバスである。110はCPUでありバ
スインターフェースを介しシステムバスと接続してい
る。120は主記憶でありRAMにより構成されてい
る。130はプログラム実行コード等が格納されたRO
Mである。140,150,160はそれぞれ入出力装
置であり、システムバスインターフェース141,15
1,161を介してシステムバス100に接続するとと
もに制御線170を介してDMAコントローラ180と
接続している。DMAコントローラ180はシステムバ
ス100に接続するとともに制御線170を介し、14
0,150,160のそれぞれの入出力装置と接続して
いる。
【0004】この例の場合、DMAコントローラ180
はデータ転送を制御するが、データそのものはDMAコ
ントローラ180を通過しない。DMAコントローラ1
80はデータ転送に必要なリード、ライトコマンドを発
行するが、データはシステムバス100を通じ主記憶1
20と入出力装置140,150,160間を直接移動
する。
【0005】図3はDMAコントローラを使用したコン
ピュータシステムの別の一例を示した構成図である。同
図において200はシステムバスである。210はCP
Uでありバスインターフェースを介しシステムバスと接
続している。220は主記憶でありRAMにより構成さ
れている。230はプログラム実行コード等が格納され
たROMである。240,250,260はそれぞれ入
出力装置であり、I/Oバス270を介してDMAコン
トローラ280と接続している。DMAコントローラ2
80はシステムバス200に接続するとともにI/Oバ
ス270を介し、240,250,260のそれぞれの
入出力装置と接続している。
【0006】各入出力装置と主記憶それぞれのアクセス
速度が異なることから、このDMAコントローラ280
には速度緩衝用のFIFOメモリ290が内蔵されてい
る。
【0007】この例の場合にはDMAコントローラ28
0はデータ転送を制御するとともにデータそのものもD
MAコントローラ280のバスインターフェースを介し
てシステムバス200を通じ主記憶220に対して読み
出し、書き込みされる。さらにそれらのデータは入出力
装置240,250,260との間でI/Oバス270
を通じ転送される。
【0008】このとき、デバイスのデータ幅と主記憶の
データ幅が異なる場合、例えばデバイスのデータ幅が8
bit、主記憶のデータ幅が32bitであった場合、
FIFO290を利用して同時にデータ幅の変換が行わ
れる。
【0009】FIFO290は32bit幅(ワード)
×整数分の容量を有し、書き込みに際しては任意のビッ
ト位置に対してマスクできる(マスクした場合元の情報
を保つ)。
【0010】データ転送の方向が主記憶から入出力装置
の場合には、図4に示すように、主記憶から1ワード
(32bit)ずつデータを読み出しFIFOの最後尾
のワードに格納し、FIFOの先頭の1ワード(32b
it)のデータは上位バイトから順次1バイト(8bi
t)ずつセレクタにより選択され4回に分けてI/Oデ
バイスの1つに転送される。
【0011】データ転送の方向が入出力装置から主記憶
の場合には、図5に示すように、入出力装置から1バイ
ト(8bit)のデータを受け取る度にFIFOの最後
尾のワード内の上位バイトから順に格納する。その後、
FIFOの先頭から1ワード(32bit)のデータを
まとめて主記憶に書き込む。FIFOの容量が1ワード
=4バイト以上あれば、DMAコントローラがシステム
バスのアクセス権を要求し、バス権を獲得した後主記憶
にデータを書き込むまでの間にも同時並行して入出力装
置からDMAコントローラに対してデータを転送するこ
とができ、高速な入出力装置が接続されている場合でも
入出力装置側の待ち時間を減らすことができるため入出
力装置のオーバーランの発生を抑制できる。また主記憶
への書きこみ頻度が4分の1になるのでシステムバスの
利用効率を向上できる。
【0012】このように図4においてシステムバスのデ
ータ幅が32bitであり、I/Oバスのデータ幅が8
bitである場合DMAコントローラと入出力装置の間
の転送は次のような手順で行われる。
【0013】データ転送の方向が主記憶から入出力装置
の場合には、1)まず始めにどの入出力装置にDMAチ
ャンネルを割り当てるかを決定する。2)チャンネルを
割り当てられた入出力装置からDMA転送要求を示すR
eq*信号をアサートする。3)FIFOにデータが存
在すれば直ちにDMAコントローラからアクノリッジ信
号Ack*が該入出力装置に対して返される。また、F
IFOが空であればDMAコントローラは主記憶から1
ワードのデータを読み出してFIFOに格納した後、ア
クノリッジ信号Ack*を該入出力装置に対して返す。
4)それと同時にDMAコントローラにより1バイトの
データがI/Oバス上にドライブされ、入出力装置はそ
のデータを取り込む。5)2)〜4)をCPUにより設
定されたDMA転送長の回数だけ繰り返す。
【0014】データ転送の方向が入出力装置から主記憶
の場合には、1)まず始めにどの入出力装置にDMAチ
ャンネルを割り当てるかを決定する。2)チャンネルを
割り当てられた入出力装置からのDMA転送要求を示す
Req*信号をアサートする。入出力装置により1バイ
トのデータがI/Oバス上にドライブされる。3)FI
FOに空きがあれば直ちにDMAコントローラからアク
ノリッジ信号Ack*が該入出力装置に対して返され
る。FIFOが一杯であればDMAコントローラは主記
憶に対するデータの書き込みが終りFIFOに空きがで
きるのを待った後、アクノリッジ信号Ack*を該入出
力装置に対して返す。4)DMAコントローラはI/O
バス上のデータをFIFOに格納する。FIFOの内容
が1ワード以上あればDMAコントローラは引き続いて
FIFOの内容が1ワード未満になるまで主記憶にデー
タを書き込みにいく。5)2)〜4)をCPUにより設
定されたDMA転送長の回数だけ繰り返す。
【0015】
【発明が解決しようとする課題】このようにDMAコン
トローラと入出力装置との間で2本の信号を用いてハン
ドシェークを行いながらデータを転送する場合、特に完
全同期式の設計ではデータの転送レートは最大でも(I
/Oバス幅)×(システムクロック周波数)×1/2の
転送レートに抑えられる。
【0016】すなわちシステムクロックが25MHzの
場合、I/Oバス幅が8bitであることからDMAコ
ントローラと入出力装置の間の最大転送レートは100
Mbit/secとなる。
【0017】一方システムバスは32bit幅であるこ
とから、主記憶に対する一度のリードあるいはライトの
平均遅延時間を4クロックサイクルとすると転送レート
は200Mbit/secである。
【0018】従って最大転送レートが比較的低速なフロ
ッピーディスクコントローラ等の入出力装置が接続され
ている場合には上記構成でも問題は無いが、最大転送レ
ートが100Mbit/secを越えるような入出力装
置、例えば高速ハードディスクコントローラやIEEE
1394のコントローラ等の入出力装置を接続した場
合、I/Oデバイス側で十分な容量のFIFOを持つ必
要が生じ、場合によってはDMAコントローラと入出力
装置間の転送レートがボトルネックとなり必要な性能を
発揮できない。
【0019】本発明は上記のような課題に鑑みなされた
もので、I/Oバスに接続されたデバイスに依存して、
I/Oバスとシステムバス間のデータ転送レートを適応
的に最適なものとすることを可能ならしめるDMAコン
トローラ及びその制御方法を提供しようとするものであ
る。
【0020】
【課題を解決するための手段】この課題を解決するた
め、例えば本発明のDMAコントローラは以下の構成を
備える。すなわち、システムバスに接続された主記憶と
I/Oバスに接続された入出力装置間のデータ転送を行
うDMAコントローラであって、前記システムバスと前
記I/Oバスの転送速度差を緩衝するFIFOメモリ
と、前記I/Oバス上に設けられたDMA転送する際の
DMA転送要求信号、DMA転送アクノリッジ信号、更
に、バースト要求信号をモニタするモニタ手段と、前記
バースト要求信号がアサートされていない場合、前記ア
クノリッジ信号が発生する度にハンドシェークによる前
記主記憶と前記入出力装置の間のデータ転送を行ない、
前記バースト要求信号がアサートされている場合、一度
のアクノリッジ信号に対して、予め設定された数のデー
タを前記主記憶と前記入出力装置の間で連続して転送す
る転送手段とを備える。
【0021】
【発明の実施の形態】以下、添付図面に従って本発明に
係る実施形態を詳細に説明する。
【0022】[第1の実施形態]図1は実施形態におけ
るDMAコントローラの構成とその周辺装置の接続関係
を示す図である。図3との対照のため、実質的に同じ構
成要素には符号に’をつけて示している。
【0023】この構成図において200’はシステムバ
スである。210’はCPUでありバスインターフェー
スを介しシステムバスと接続している。220’は主記
憶でありRAMにより構成されている。230’はプロ
グラム実行コード等が格納されたROMである。DMA
コントローラ280’はバスインターフェース281を
介してシステムバス200’に接続するとともに、I/
Oバス270’を介し、入出力装置240’,25
0’,260’と接続している。ここで271,272
はそれぞれAck*,Req*信号であり、273は本実
施形態により追加されたBurstReq*信号であ
る。290’は速度緩衝用のFIFOメモリである。
【0024】240’,250’,260’はそれぞれ
入出力装置であり、I/Oバス270’およびAck*
信号271、Req*信号272、BurtstReq*
信号273を介してDMAコントローラ280’と接続
している。これら3つの入出力装置のうち、240’は
低速なアクセス速度を持つ入出力装置であり、特にFI
FOは備えていない。250’および260’は高速な
アクセス速度を持つ入出力装置であって、システムクロ
ックとは非同期のクロック周期で外部と高速に入出力す
るために、必要な容量のFIFO251,261をそれ
ぞれ備えているものとする。
【0025】上記構成において、まず始めに、主記憶2
20’と入出力装置240’との間でデータをDMA転
送する場合について説明する。簡単のため本実施形態で
はCPU210’からの設定によりDMAチャネルを入
出力装置240’に選択的に割り当てておくこととす
る。
【0026】図6はデータの転送方向が主記憶220’
から入出力装置240’である場合のタイミングチャー
トを示したものである。まず時刻t1に入出力装置24
0’がDMAデータ転送要求信号Req*(272)を
アサートする。このときFIFO290’はまだ空であ
るのでDMAコントローラ280’はシステムバス20
0’を介して1ワードのデータをリードしてFIFO2
90’に格納し、時刻t2に入出力装置240’に対し
てAck*信号271をアサートするとともにI/Oバ
ス270’上に1バイトのデータをドライブする。入出
力装置240’は次のシステムクロックの立ち上がりエ
ッジ(時刻t3)にAck*信号271を認識するとI/
Oバス270’上のデータを取り込み、次の転送要求が
無いのでReq*信号272をネゲートする。時刻t4に
入出力装置240’は再びDMAデータ転送要求信号R
eq*272をアサートする。このときFIFO29
0’にはすでにデータがあるのでDMAコントローラ2
80’は次のクロックの立ち上がり(時刻t5)で直ち
に入出力装置240’に対してAck*信号271をア
サートするとともにI/Oバス270’上に1バイトの
データをドライブする。入出力装置240’は次のシス
テムクロックの立ち上がりエッジ(時刻t6)にAck*
信号271を認識するとI/Oバス270’上のデータ
を取り込み、さらに転送要求があるのでそのままReq
*信号272をアサートし続ける。DMAコントローラ
280’は次のクロックの立ち上がり(時刻t7)で直
ちに入出力装置240’に対してAck*信号271を
アサートするとともにI/Oバス270’上に1バイト
のデータをドライブする。このようにしてDMAコント
ローラ280’と入出力装置240’との間でハンドシ
ェークを行いながら1バイトずつデータを転送するの
で、データ転送速度は最大でも(I/Oバス幅=8bi
t)×(システムクロック周波数)×1/2となる。
【0027】図7はデータの転送方向が入出力装置24
0’から主記憶220’である場合のタイミングチャー
トを示したものである。
【0028】外部からデータを1バイト受信すると、ま
ず時刻t1に入出力装置240’がDMAデータ転送要
求信号Req*(272)をアサートすると同時にI/
Oバス270’上に1バイトのデータをドライブする。
このときFIFO290’は空であるのでDMAコント
ローラ280’は次のクロックの立ち上がり(時刻t
2)で入出力装置240’に対してAck*信号271を
アサートするとともにI/Oバス270’上のデータを
取り込みFIFO290’に格納する。入出力装置24
0’は次のクロックの立ち上がり(時刻t3)にAck*
信号271を認識すると次の転送要求が無いのでReq
*信号272をネゲートする。外部から次の1バイトの
データを受信すると時刻t4に入出力装置240’は再
びDMAデータ転送要求信号Req*をアサートすると
同時にI/Oバス270’上に1バイトのデータをドラ
イブする。このときもFIFO290’にはまだ一杯で
はないのでDMAコントローラ280’は次のクロック
の立ち上がり(時刻t5)で直ちに入出力装置240’
に対してAck*信号271をアサートするとともにI
/Oバス270’上の1バイトのデータをFIFO29
0’に格納する。この間に外部から次の1バイトのデー
タを既に受信しているため入出力装置240’は次のシ
ステムクロックの立ち上がりエッジ(時刻t6)にAc
k*信号271を認識するとそのままReq*信号272
をアサートし続け次の1バイトのデータをI/Oバス2
70’上にドライブする。DMAコントローラ280’
は次のクロックの立ち上がり(時刻t7)で直ちに入出
力装置240’に対してAck*信号271をアサート
するとともにI/Oバス270’上の1バイトのデータ
をFIFO290’に格納する。このようにして、FI
FO290’内に1ワード分のデータが揃った時点でD
MAコントローラ280’はシステムバス200’を介
して主記憶220’にその1ワードのデータを書き込
む。
【0029】次に主記憶220’と入出力装置250’
(260’の場合も同じ)との間でデータをDMA転送
する場合について説明する。
【0030】図8はデータの転送方向が主記憶220’
から入出力装置250’である場合のタイミングチャー
トを示したものである。
【0031】まず時刻t1に入出力装置250’がDM
Aデータ転送要求信号Req*272をアサートすると
同時にBurtstReq*273をアサートする。本
実施形態においてBurstReq*信号273がアサ
ートされた場合、連続して8バイトのデータを転送する
ことにすると、このときFIFO290’はまだ空であ
るのでDMAコントローラ280’はシステムバス20
0’を介して主記憶220’から続けて2ワードのデー
タをリードしてFIFO290’に格納する。時刻t2
から8サイクル連続で入出力装置250’に対してAc
k*信号271をアサートしながらI/Oバス270’
上には主記憶220’上で低位のアドレスのデータから
順に1サイクルに1バイトずつドライブする。
【0032】入出力装置250’は次のシステムクロッ
クの立ち上がりエッジ(時刻t3)にAck*信号271
を認識するとその後8サイクル連続でI/Oバス27
0’上のデータを順次取り込み内部のFIFO251に
格納する。入出力装置250’はこの8バイトのデータ
を受け取ってもまだ必要なデータに足りないのでそのま
まReq*信号272およびBurstReq*信号27
3をアサートし続ける。DMAコントローラ280’は
時刻t3以降もReq*信号272及びBurstReq
*信号273がアサートされているので再度システムバ
ス200’を介して主記憶220’から続けて2ワード
のデータをリードしてFIFO290’に格納する。
【0033】時刻t4から8サイクル連続で入出力装置
250’に対してAck*信号をアサートしながらI/
Oバス270’上には主記憶220’上で低位のアドレ
スのデータから順に1サイクルに1バイトずつドライブ
する。入出力装置250’は次のシステムクロックの立
ち上がりエッジ(時刻t5)にAck*信号271を認識
するとその後8サイクル連続でI/Oバス270’上の
データを順次取り込み内部のFIFO251に格納す
る。
【0034】このような転送を行った場合、DMAコン
トローラ280’と入出力装置250’との間の転送レ
ートは最大10サイクルで8バイトのデータを転送でき
るので、(I/Oバス幅=8bit)×(システムクロ
ック周波数)×4/5となる。
【0035】本実施形態において入出力装置250’は
FIFO251に36バイト格納した時点で外部にデー
タを送信するとすれば、このような転送を3回繰り返し
た後、最後に4バイトの転送が残る。これはBurst
Req*信号273をアサートした場合の転送長8バイ
トに満たないので、これ以降Req*信号272とAc
k*信号271によるハンドシェークで1バイトのデー
タ転送を4回行う。
【0036】図9はデータの転送方向が入出力装置25
0’から主記憶220’である場合のタイミングチャー
トを示したものである。
【0037】入出力装置250’は外部から36バイト
のパケットを受信すると、時刻t1にDMAデータ転送
要求信号Req*(272)とBurstReq*(27
3)を同時にアサートすると同時にFIFO251の先
頭の1バイトのデータを読み出しI/Oバス270’上
にドライブする。このときFIFO290’は空である
のでDMAコントローラ280’は次のクロックの立ち
上がり(時刻t2)から8サイクル連続で入出力装置2
50’に対してAck*信号をアサートするとともにI
/Oバス270’上のデータを取り込みFIFO29
0’に格納する。入出力装置250’は次のクロックの
立ち上がり(時刻t3)にAck*信号を認識すると次の
サイクルから7サイクルに亘りFIFO251内のデー
タを先頭から順次1バイトずつI/Oバス上にドライブ
するとともにDMAコントローラ280’はそれを順に
FIFO290’に格納する。DMAコントローラ28
0’はFIFO290’内のデータが4バイト(1ワー
ド)を越えるとFIFO290’の先頭から1ワードず
つシステムバス200’を介して主記憶220’に書き
込む。
【0038】時刻t4において入出力装置250’はF
IFO251内に8バイト以上データがあるためそのま
まReq*(272)信号とBurstReq*(27
3)信号をアサートし続ける。DMAコントローラ28
0’のFIFO290’に8バイト以上の空きがある場
合時刻t5から8サイクル連続で入出力装置250’に
対してAck*信号をアサートする。
【0039】このような転送を3回繰り返した後、最後
に4バイトの転送が残る。これはBurstReq*信
号273をアサートした場合の転送長8バイトに満たな
いので、これ以降Req*信号272とAck*信号27
1によるハンドシェークで1バイトのデータ転送を4回
行う。
【0040】本実施形態ではBurstReq*信号2
73をアサートする場合Ack*信号271も同じタイ
ミングでアサートしているが、もちろんBurstRe
q*信号(273)のみをアサートするようにしてもよ
い。
【0041】本実施形態ではBurstReq*信号
(273)がアサートされた場合Ack*信号271を
8サイクル期間連続してアサートし、次にアサートする
までの間1サイクル期間以上間隔をあけているが、FI
FO290’の容量あるいはシステムバス200’のリ
ード/ライトサイクルの上で可能であれば8サイクル期
間×任意回数連続してアサートしてもよい。
【0042】また本実施形態では1チャンネルのDMA
コントローラに対しI/Oバスを介して複数の入出力装
置が接続されている例を示したが、もちろん入出力装置
の数は1つでも良い。
【0043】[第2の実施形態]第2の実施形態の構成
を図10に示す。同図において、図1と実質的に同じ構
成要素については同一符号を付し、その説明については
省略する。
【0044】本第2の実施形態における特徴部分は、信
号線273’を設けた点である。この信号線273’
は、転送バイト数情報を示す信号であり、最大でもFI
FO290’の容量を指示するに足る本数の信号線より
構成されている。本第2の実施形態ではFIFO29
0’の容量を2ワード(8バイト)とするので、転送バ
イス数情報信号は3本(3ビット)であり、1バイト
(000)〜8バイト(111)を表現することができ
る。
【0045】240’〜260’は入出力装置であっ
て、入出力装置240’は低速なアクセス速度であり、
入出力装置250’及び260’はそれぞれバッファを
有したアクセス速度が高速なものである。
【0046】図11はデータの転送方向が主記憶22
0’→入出力装置250’(入出力装置260’も同
じ)である場合のタイミングチャートを示したものであ
る。
【0047】この例では主記憶220’から14バイト
のデータを読出し、DMAコントローラを介して入出力
装置に受け渡し、外部に出力する場合を示している。
【0048】まず時刻t1に入出力装置250’がDM
Aデータ転送要求信号Req*(272)をアサートす
ると同時に転送バイト数情報信号273によりFIFO
290’の最大容量である8バイトを指示する。このと
きFIFO290’はまだ空であるのでDMAコントロ
ーラ280’はシステムバス200’を介して主記憶2
20’から続けて2ワードのデータをリードしてFIF
O290’に格納する。時刻t2から8サイクル連続で
入出力装置250’に対してAck*信号(271)を
アサートしながらI/Oバス270’上には主記憶22
0’上で低位のアドレスのデータ(8ビット)から順に
1サイクルに1バイトずつドライブする。
【0049】入出力装置250’は次のシステムクロッ
クの立ち上がりエッジ(時刻t3)にAck*信号(27
1)を認識するとその後8サイクル連続でI/Oバス2
70’上のデータを順次取り込み内部のFIFO251
に格納する。入出力装置250’はこの8バイトのデー
タを受け取ってもまだ必要なデータに足りないのでその
ままReq*信号(272)をアサートし続け、転送バ
イト数情報信号(273)により残り6バイトの転送を
指示する。DMAコントローラ280’は時刻t3以降
もReq*信号(272)がアサートされているので再
度システムバス200’を介して主記憶220’から転
送バイト数情報信号(273)によって指示された6バ
イトのデータをリードしてFIFO290’に格納した
後、時刻t4から6サイクル連続で入出力装置250’
に対してAck*信号をアサートしながらI/Oバス2
70’上には主記憶220’上で低位のアドレスのデー
タから順に1サイクルに1バイトずつドライブする。入
出力装置250’は次のシステムクロックの立ち上がり
エッジ(時刻t5)にAck*信号(271)を認識する
とその後6サイクル連続でI/Oバス270’上のデー
タを順次取り込み内部のFIFO251に格納する。
【0050】このような転送を行った場合、DMAコン
トローラ280’と入出力装置250’との間の転送レ
ートは最大では転送バイト数を毎回8として10サイク
ルで8バイトのデータを転送できるので、(I/Oバス
幅=8bit)×(システムクロック周波数)×4/5
となる。
【0051】図12は、データの転送方向が入出力装置
250’から主記憶200’である場合のタイミングチ
ャートを示したものである。この例では、14バイトの
データを受け取り、DMAコントローラを介して主記憶
に書き込む例である。
【0052】入出力装置220’は外部から14バイト
のパケットを受信すると、時刻t1にDMAデータ転送
要求信号Req*(272)をアサートし、転送バイト
数情報信号273により転送長を8に指示すると同時に
FIFO251の先頭の1バイトのデータを読み出しI
/Oバス270’上にドライブする。このときFIFO
290’は空であるのでDMAコントローラ280’は
次のクロックの立ち上がり(時刻t2)から8サイクル
連続で入出力装置250’に対してAck*信号をアサ
ートするとともにI/Oバス270’上のデータを取り
込みFIFO290’に格納する。
【0053】入出力装置250’は次のクロックの立ち
上がり(時刻t3)にAck*信号271を認識すると次
のサイクルから7サイクルに亘りFIFO251内のデ
ータを先頭から順次1バイトずつI/Oバス上にドライ
ブするとともにDMAコントローラ280’はそれを順
にFIFO290’に格納する。DMAコントローラ2
80’はFIFO290’内のデータが4バイト(1ワ
ード)を越えるとFIFO290’の先頭から1ワード
ずつシステムバス200’を介して主記憶220’に書
き込む。
【0054】時刻t4において入出力装置250’は8
サイクル目のAck*信号271のアサート状態を確認
すると、FIFO251内に6バイトのデータがあるた
めそのままReq*信号272をアサートし続け転送バ
イト数情報信号273により次回の転送長に6を指示す
る。DMAコントローラ280’は時刻t5にFIFO
290’に6バイト以上の空きができるためそこから6
サイクル連続で入出力装置250’に対してAck*信
号をアサートする。
【0055】DMAコントローラ280’はFIFO2
90’の内容が4バイトを越えると主記憶220’に書
き出すが、この例の場合最後にFIFO内に2バイトの
データが残る。
【0056】このとき・入出力装置250’が最後のデ
ータを受け渡した後DMAコントローラ280’に直接
指示する。
【0057】・予めCPU210’によって設定された
回数のDMA転送が終了した後、CPU210’より指
示する。
【0058】のいずれかの方法によってFIFOの残り
内容を主記憶220’に書き出す。
【0059】主記憶220’と入出力装置240’との
間でデータをDMA転送する場合には、DMAコントロ
ーラの選択回路で転送バイト数情報信号273を1に固
定しておけばよく、新たに回路を追加することなく従来
通りに接続できる。
【0060】本第2の実施形態では転送バイト数情報信
号273で指示されたサイクル期間Ack*信号(27
1)を連続してアサートし、次にアサートするまでの間
1サイクル期間以上間隔をあけているが、FIFO29
0’の容量あるいはシステムバス200’のリード/ラ
イトサイクルの上で可能であれば、Ack*信号271
を一旦ネゲートせず、続けて次の転送バイト数情報信号
273で指示されたサイクル期間連続してアサートして
もよい。
【0061】また本実施形態では1チャンネルのDMA
コントローラに対しI/Oバスを介して複数の入出力装
置が接続されている例を示したが、もちろん入出力装置
の数は1つでも良い。
【0062】以上説明したように、本実施形態によれば
DMAコントローラと入出力装置との間でハンドシェー
クを行いながらデータを転送する場合にも(I/Oバス
幅)×(システムクロック周波数)×1/2以上の転送
レートが得られるため、高速な入出力装置が接続されて
いる場合にも、この転送がボトルネックにならず、その
ため入出力装置側に必要なFIFOの容量を削減するこ
とができまた必要な性能を実現可能とする。
【0063】また、実施形態によれば、従来通り一度の
Ack*信号のアサートと共に1バイトのデータを転送
するモードをあわせて持つことにより、バースト転送時
の転送バイト数に満たない端数のデータを転送すること
ができ、また低速なI/Oデバイスが接続されている場
合に入出力装置側に不要なFIFOを付加する必要がな
い。
【0064】また、本実施形態はI/Oバスに接続され
たデバイスに応じてそのデバイスに最適なデータ転送を
行うことも可能になる。
【0065】そして、本実施形態で説明したように、各
々の入出力装置の転送速度に適したI/Oバスの転送レ
ートを適応的に実現することができる。
【0066】
【発明の効果】以上説明したように本発明によれば、I
/Oバスに接続されたデバイスに依存して、I/Oバス
とシステムバス間のデータ転送レートを適応的に最適な
ものとすることが可能になる。
【図面の簡単な説明】
【図1】実施形態におけるDMAコントラの主要部の構
成とその周辺の接続関係を示す図である。
【図2】一般的なシステム構成の一例を示す図である。
【図3】他のシステムの一例を示す図である。
【図4】主記憶から入出力装置へのFIFOを介したデ
ータ幅変換の仕組みを示す図である。
【図5】入出力装置から主記憶へのFIFOを介したデ
ータ幅変換の仕組みを示す図である。
【図6】実施形態における主記憶から低速な入出力装置
のデータの転送におけるタイミングチャートを示す図で
ある。
【図7】実施形態における低速な入出力装置から主記憶
へのデータの転送におけるタイミングチャートを示す図
である。
【図8】実施形態における主記憶から高速な入出力装置
へのデータの転送のタイミングチャートを示す図であ
る。
【図9】実施形態における高速な入出力装置から主記憶
へのデータの転送のタイミングチャートを示す図であ
る。
【図10】第2の実施形態におけるDMAコントラの主
要部の構成とその周辺の接続関係を示す図である。
【図11】第2の実施形態における主記憶から高速な入
出力装置へのデータ転送のタイミングチャートを示す図
である。
【図12】第2の実施形態における高速な入出力装置か
ら主記憶へのデータ転送のタイミングチャートを示す図
である。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 システムバスに接続された主記憶とI/
    Oバスに接続された入出力装置間のデータ転送を行うD
    MAコントローラであって、 前記システムバスと前記I/Oバスの転送速度差を緩衝
    するFIFOメモリと、 前記I/Oバス上に設けられたDMA転送する際のDM
    A転送要求信号、DMA転送アクノリッジ信号、更に、
    バースト要求信号をモニタするモニタ手段と、 前記バースト要求信号がアサートされていない場合、前
    記アクノリッジ信号が発生する度にハンドシェークによ
    る前記主記憶と前記入出力装置の間のデータ転送を行な
    い、 前記バースト要求信号がアサートされている場合、一度
    のアクノリッジ信号に対して、予め設定された数のデー
    タを前記主記憶と前記入出力装置の間で連続して転送す
    る転送手段とを備えることを特徴とするDMAコントロ
    ーラ。
  2. 【請求項2】 前記I/Oバスには複数の入出力装置が
    接続可能とすることを特徴とする請求項第1項に記載の
    DMAコントローラ。
  3. 【請求項3】 前記転送手段による転送方向が、前記主
    記憶から前記入出力装置の場合、前記FIFOメモリ内
    の転送済みとなって空いているメモリ容量が所定量に達
    した場合、前記転送手段による転送を行っている間に次
    のデータを前記主記憶から前記FIFOメモリに転送を
    行うことを特徴とする請求項第1項又は第2項のいずれ
    か1つに記載のDMAコントローラ。
  4. 【請求項4】 前記転送手段による転送方向が、前記入
    出力装置から前記主記憶の場合、前記FIFOメモリ内
    に前記システムバスのバス幅分のデータが格納された場
    合に主記憶メモリへの書き込みを行うと共に、次のデー
    タを前記入出力装置から前記FIFOメモリに転送を行
    うことを特徴とする請求項第1項又は第2項のいずれか
    1つに記載のDMAコントローラ。
  5. 【請求項5】 接続される入出力装置はすべて同じデー
    タ幅でDMAとの間でデータ転送を行うことを特徴とす
    る請求項2に記載のDMAコントローラ。
  6. 【請求項6】 システムバスに接続された主記憶とI/
    Oバスに接続された入出力装置間のデータ転送を行い、
    前記システムバスと前記I/Oバスの転送速度差を緩衝
    するFIFOメモリを有するDMAコントローラの制御
    方法であって、 前記I/Oバス上に設けられたDMA転送する際のDM
    A転送要求信号、DMA転送アクノリッジ信号、更に、
    バースト要求信号をモニタするモニタ工程と、 前記バースト要求信号がアサートされていない場合、前
    記アクノリッジ信号が発生する度にハンドシェークによ
    る前記主記憶と前記入出力装置の間データ転送を行な
    い、 前記バースト要求信号がアサートされている場合、一度
    のアクノリッジ信号に対して、予め設定された数のデー
    タを前記主記憶と前記入出力装置の間のデータの転送を
    行う転送制御工程とを備えることを特徴とするDMAコ
    ントローラの制御方法。
  7. 【請求項7】 システムバスに接続された主記憶とI/
    Oバスに接続された入出力装置間のデータ転送を行うD
    MAコントローラであって、 前記システムバスと前記I/Oバスの転送速度差を緩衝
    するFIFOメモリと、 前記I/Oバス上に設けられたDMA転送する際のDM
    A転送要求信号、DMA転送アクノリッジ信号、更に、
    転送データ数信号をモニタするモニタ手段と、 前記DMA転送要求信号に対する一度のアクノリッジ信
    号があって、前記転送データ数信号で指定されたデータ
    数が指定された場合、当該指定されたデータ数のデータ
    を一度のアクノリッジに対して連続して転送する転送手
    段とを備えることを特徴とするDMAコントローラ。
  8. 【請求項8】 システムバスに接続された主記憶とI/
    Oバスに接続された入出力装置間のデータ転送を行い、
    前記システムバスと前記I/Oバスの転送速度差を緩衝
    するFIFOメモリを有するDMAコントローラの制御
    方法であって、 前記I/Oバス上に設けられたDMA転送する際のDM
    A転送要求信号、DMA転送アクノリッジ信号、更に、
    転送データ数信号をモニタするモニタ工程と、 前記DMA転送要求信号に対する一度のアクノリッジ信
    号があって、前記転送データ数信号で指定されたデータ
    数が指定された場合、当該指定されたデータ数のデータ
    を一度のアクノリッジに対して連続して転送する転送制
    御工程とを備えることを特徴とするDMAコントローラ
    の制御方法。
JP33468399A 1999-11-25 1999-11-25 Dmaコントローラ及びその制御方法 Withdrawn JP2001154976A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP33468399A JP2001154976A (ja) 1999-11-25 1999-11-25 Dmaコントローラ及びその制御方法
US09/718,189 US6651114B1 (en) 1999-11-25 2000-11-21 DMA controller which optimizes transfer rate of data and method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33468399A JP2001154976A (ja) 1999-11-25 1999-11-25 Dmaコントローラ及びその制御方法

Publications (1)

Publication Number Publication Date
JP2001154976A true JP2001154976A (ja) 2001-06-08

Family

ID=18280076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33468399A Withdrawn JP2001154976A (ja) 1999-11-25 1999-11-25 Dmaコントローラ及びその制御方法

Country Status (2)

Country Link
US (1) US6651114B1 (ja)
JP (1) JP2001154976A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6877049B1 (en) * 2002-05-30 2005-04-05 Finisar Corporation Integrated FIFO memory management control system using a credit value
US20050182863A1 (en) * 2004-02-18 2005-08-18 Arm Limited, Direct memory access control

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847750A (en) * 1986-02-13 1989-07-11 Intelligent Instrumentation, Inc. Peripheral DMA controller for data acquisition system
JP2712131B2 (ja) * 1989-01-23 1998-02-10 株式会社日立製作所 通信制御装置
US6408346B1 (en) * 1989-11-03 2002-06-18 Compaq Computer Corporation System for communicating with an external device using a parallel port with DMA capabilities and for developing a signal to indicate the availability of data
US5381538A (en) * 1991-10-15 1995-01-10 International Business Machines Corp. DMA controller including a FIFO register and a residual register for data buffering and having different operating modes
JPH05173932A (ja) * 1991-12-24 1993-07-13 Toshiba Corp データ転送装置
US5974480A (en) * 1996-10-18 1999-10-26 Samsung Electronics Co., Ltd. DMA controller which receives size data for each DMA channel
US6151654A (en) * 1997-12-24 2000-11-21 Intel Corporation Method and apparatus for encoded DMA acknowledges

Also Published As

Publication number Publication date
US6651114B1 (en) 2003-11-18

Similar Documents

Publication Publication Date Title
CN106874224B (zh) 自动搬运且适应器件的多线SPI-Flash控制器
US6954806B2 (en) Data transfer apparatus and method
US6947442B1 (en) Data transfer control device and electronic equipment
EP1389760B1 (en) Data transfer control system, program and data transfer control method
US20020184453A1 (en) Data bus system including posted reads and writes
KR920004416B1 (ko) 개량된 통신제어장치에 사용된 데이타 처리장치
JP2001036588A (ja) データ転送制御装置及び電子機器
US7249204B2 (en) Data transfer control device electronic equipment and method data transfer control
US6687763B2 (en) ATAPI command receiving method
CA2289192C (en) Communication dma device
JP2001154976A (ja) Dmaコントローラ及びその制御方法
US6772311B2 (en) ATAPI device unaligned and aligned parallel I/O data transfer controller
US8769167B2 (en) Channel device, information processing system and data transfer method
JP3599692B2 (ja) データ伝送装置
US20010002481A1 (en) Data access unit and method therefor
JPH1063617A (ja) シリアル通信装置
KR100441884B1 (ko) 패킷 처리 엔진과 메인 프로세서간에 고속 블록 데이터전송을 수행하는 네트워크 시스템 및 그것의 dma운영방법
JP2002288115A (ja) Usbコントローラ
JP2003150534A (ja) チェインブロック転送方法及び通信制御装置
JP2000295295A (ja) ブロック・データ転送用バッファメモリ及びシリアルデータ送受信システム
JP2570986B2 (ja) データ転送制御装置及び方法
JP2001265711A (ja) データ転送装置およびバスシステム
JP2006195810A (ja) メモリコントローラおよび高速データ転送方法
CN115729863A (zh) 数据传输方法、装置、电子设备及介质
JP2007172510A (ja) Dma転送装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070206