JP2570187B2 - Dma転送装置および方法 - Google Patents

Dma転送装置および方法

Info

Publication number
JP2570187B2
JP2570187B2 JP6164075A JP16407594A JP2570187B2 JP 2570187 B2 JP2570187 B2 JP 2570187B2 JP 6164075 A JP6164075 A JP 6164075A JP 16407594 A JP16407594 A JP 16407594A JP 2570187 B2 JP2570187 B2 JP 2570187B2
Authority
JP
Japan
Prior art keywords
value
cyclic buffer
read
data
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP6164075A
Other languages
English (en)
Other versions
JPH0830544A (ja
Inventor
恵三 南村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP6164075A priority Critical patent/JP2570187B2/ja
Publication of JPH0830544A publication Critical patent/JPH0830544A/ja
Application granted granted Critical
Publication of JP2570187B2 publication Critical patent/JP2570187B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、DMA(ダイレクト・
メモリ・アクセス)転送装置および方法に関し、特に、
制御データのDMA転送回数を低減してスループットを
向上させたDMA転送装置および装置に関する。
【0002】
【従来の技術】ソフトウェアで制御される上位装置とフ
ァームウェアで構成される下位装置との間でデータ転送
などの通信を行なう場合、上位装置内に存在するメイン
メモリ内に、上位装置から下位装置の方向に転送される
データを一時的に蓄積する送信用サイクリックバッファ
と、下位装置から上位装置の方向に転送されるデータを
一時的に蓄積する受信用サイクリックバッファとを用意
し、これらのサイクリックバッファに対してDMA転送
方法により下位装置側からデータの読み出しおよび書込
みを行なうことが一般的である。この場合、各サイクリ
ックバッファごとに、そのサイクリックバッファにおい
て最後に書込まれたバッファ番号(アドレス)を示すラ
イトポインタと、そのバッファにおいて最後に読み込ま
れたバッファ番号(アドレス)を示すリードポインタと
を上位装置のメインメモリ内に設け、ライトポインタの
値WPおよびリードポインタの値RPによって各サイク
リックバッファが管理されるようになっている。
【0003】ここでサイクリックバッファの管理方法、
すなわちサイクリックバッファが空きのある状態である
かビジー状態(空きのない状態)であるかの判定方法に
ついて説明する。ここでは、サイクリックバッファに対
するデータの読み書きの最小単位で測ったサイクリック
バッファの大きさがNであって、ライトポインタの値W
Pおよびリードポインタの値RPが、それぞれ0からN
−1までの整数値をとるものとする。1単位のデータを
サイクリックバッファに書込むたびにライトポインタの
値WPに1を加え、1単位のデータをサイクリックバッ
ファから読み出すたびにリードポインタの値RPに1を
加える。ただし、値N−1に1を加えた結果は0とす
る。そして、「A=(WP+1) mod N」を算出
し、もしA=RPであるならばそのサイクリックバッフ
ァはビジー状態であると判断し、A≠RPであれば空き
状態であると判断する。ここで式「B mod N」
は、整数Bを整数Nで割った場合の余りを表わす。
【0004】下位装置から上位装置に向けてデータを転
送する場合には、データの転送に先立って、受信用サイ
クリックバッファが空き状態であることを確認しなけれ
ばならない。このため、受信用サイクリックバッファに
対応するリードポインタの値が下位装置によって上位装
置内から読み出されるが、下位装置から送信されるデー
タのみならず、これらのポインタ値もDMA転送方法に
よって転送される。なお、ライトポインタの値について
は、送信データ量から下位装置側において計算できるの
で、データ転送に先立って読み出す必要はない。
【0005】図3は、ここで説明した従来の方法による
DMA転送の手順を示すシーケンス図である。下位装置
から上位装置にデータを転送する場合、DMA転送によ
って受信用サイクリックバッファにデータを書込んだの
ち、転送したデータ量に応じて下位装置は上位装置内の
ライトポインタの値WPを更新する。なお、更新後のラ
イトポインタの値は下位装置でも記憶されるようになっ
ている。また、上位装置は、受信用サイクリックバッフ
ァからデータを読み込んだのち、読み込んだデータ量に
応じてリードポインタの値RPを更新する。このときの
データ転送は、以下のような手順となる。
【0006】一連のデータを転送しようとする下位装置
は、まず、上位装置のリードポインタの値RPをDMA
転送により読み出す(ステップ91)。そして、ライト
ポインタについての記憶している値WPとリードポイン
タの値RPとの関係が、「RP=(WP+1) mod
N」を満足するかを判断し(ステップ92)、満足し
ている場合にはビジー状態であるので送信を行なわずに
待ち合わせ処理を実行する(ステップ93)。一方、
「RP≠(WP+1) mod N」に場合には、受信
用サイクリックバッファが空き状態であるとして、空き
容量から求められる最大送信許容データ量以下のデータ
量を算出し(ステップ94)、送信データ量としてこの
算出された量のデータを下位装置から上位装置内の受信
用サイクリックバッファ内にDMA転送によって書込む
(ステップ95)。ライトポインタの値WPの更新後の
値を算出し(ステップ96)、その算出値を下位装置内
に記憶するとともに、DMA転送によって上位装置内の
ライトポインタにも書込む。このように、下位装置から
上位装置に1回のデータ転送を行なうたびに、少なくと
も3回のDMA転送を行なう必要がある。
【0007】
【発明が解決しようとする課題】上述した従来の転送方
法では、本来の転送されるべきデータのほかに、リード
ポインタおよびライトポインタの値などのデータ長の小
さな制御データをDMA転送によって複数回数送信する
必要があり、オーバヘッドが大きくなるとともに、総転
送時間に対する有効なデータが送信されている時間の割
合が小さくなり、スループットが低下するという問題点
がある。
【0008】本発明の目的は、制御データの転送回数を
減少させてスループットの向上をもたらすことのできる
DMA転送装置および方法を提供することにある。
【0009】
【課題を解決するための手段】本発明のDMA転送方法
は、上位装置のメインメモリ内に設けられ下位装置から
前記上位装置に送信されるデータを一時的に蓄積するサ
イクリックバッファと、前記メインメモリ内に設けられ
前記サイクリックバッファの最後に書込まれた位置を記
憶するライトポインタと、前記メインメモリ内に設けら
れ前記サイクリックバッファの最後に読み込まれた位置
を記憶するリードポインタとを有し、前記上位装置と前
記下位装置との間のデータ転送をDMA転送で実行する
DMA転送装置において、前記下位装置内に設けられ前
記ライトポインタに保持される値を維持する第1のイメ
ージ情報領域と、前記下位装置内に設けられ過去のある
時点での前記リードポインタに保持されていた値を維持
する第2のイメージ情報領域と、前記下位装置内に設け
られ、前記第1および第2のイメージ情報領域に格納さ
れている値を参照して前記サイクリックバッファ内の空
きの有無を推定し、空きがあると判断した場合には前記
下位装置から前記上位装置へのデータ転送を実行し、空
きがないと判断した場合には前記リードポインタの値を
読み込んで前記サイクリックバッファ内の空きの有無を
再度推定して空きが確認された場合に前記下位装置から
前記上位装置へのデータ転送を実行する制御手段とを有
する。ここで、第1のイメージ情報領域に格納される値
は、データ転送を行なうたびに転送量に応じて更新され
るようにし、第2のイメージ情報領域に格納される値
は、最近に制御手段で読み出されたリードポインタの値
であるようにすることができる。
【0010】本発明のDMA転送方法は、上位装置のメ
インメモリ内に設けられ下位装置から前記上位装置に送
信されるデータを一時的に蓄積するサイクリックバッフ
ァと、前記メインメモリ内に設けられ前記サイクリック
バッファの最後に書込まれた位置を記憶するライトポイ
ンタと、前記メインメモリ内に設けられ前記サイクリッ
クバッファの最後に読み込まれた位置を記憶するリード
ポインタとを使用するDMA転送方法において、前記ラ
イトポインタに保持されている値に対応する第1の値
と、過去のある時点での前記リードポインタに保持され
ていた値に対応する第2の値とを前記下位装置内に保持
し、前記下位装置から前記上位装置にDMA転送によっ
てデータを転送する場合に、前記下位装置において、前
記第1および第2の値を参照して前記サイクリックバッ
ファ内の空きの有無を推定し、空きがあると判断される
場合には前記下位装置から前記上位装置へのデータのD
MA転送を実行し、空きがないと判断された場合には前
記リードポインタの値を読み込んで前記サイクリックバ
ッファ内の空きの有無を再度推定して空きが確認された
場合に前記下位装置から前記上位装置へのデータのDM
A転送を実行する。ここで、第1の値はデータの転送量
に応じて更新され、第2の値はリードポインタの値を読
み込むたびに更新されるようにすることができる。
【0011】
【作用】受信用サイクリックバッファについて過去のあ
る時点でのリードポインタの値をもとにサイクリックバ
ッファの空きの有無を判定した場合、その時点以降の上
位装置による読出しによって、判定された空きの大きさ
よりもバッファ内の実際の空きが大きい場合はあるが、
実際の空きの方が小さいことない。したがって、空きが
あると判定され続ける限りは、データ転送のたびにリー
ドポインタの値を読み出すことなく、過去のある時点で
のリードポインタの値を採用して判定を続行しデータ転
送を繰り返すことが可能である。本発明では、ここで述
べた原理により、過去のある時点でのリードポインタの
値を下位装置側で保持し、リードポインタの値の読み出
し回数すなわちこの値の下位装置側へのDMA転送の回
数を最小限とすることによって、DMA転送の回数を減
らし、スループットの向上を達成することが可能とな
る。
【0012】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。図1は本発明の一実施例のDMA転送装置
の構成を示すブロック図である。このDMA転送装置
は、大別すると、ソフトウェアで制御される上位装置1
0、ファームウェアで構成される下位装置20、これら
上位装置10および下位装置20を接続するチャネル2
5によって構成されている。
【0013】上位装置10の内部には内部バス11と内
部バス11に接続されたメインメモリ12とが設けられ
ている。このメインメモリ12に内部には、受信用サイ
クリックバッファ13、ライトポインタ14およびリー
ドポインタ15が設けられ、これらはサイクリックバッ
ファエリア16を構成する。受信用サイクリックバッフ
ァ13は、下位装置20からこの上位装置10に送信さ
れてくるデータを一時的に蓄積する領域であり、ライト
ポインタ14は、受信用サイクリックバッファ13にお
いて下位装置10によって最後の書込まれた位置のアド
レス(バッファ番号)を変数WPとして保持するもので
あり、リードポインタ15は、受信用サイクリックバッ
ファ13のアドレス(バッファ番号)であって内部バス
11を介して上位装置10の処理部(不図示)に最後に
読み込まれた位置のアドレス(バッファ番号)を変数R
P1として保持するものである。ここで、受信用サイク
リックバッファ13の大きさは、データの読み書きの最
小単位で測った値で表わしてNである。また、ライトポ
インタ14の値WPおよびリードポインタ15の値RP
1はそれぞれ0からN−1までの整数値をとり、1単位
のデータを受信用サイクリックバッファ13に書込むた
びにライトポインタの値WPに1が加算され、1単位の
データを受信用サイクリックバッファ13から読み出さ
れるたびにリードポインタの値RP1に1が加算され
る。ただし、値N−1に1を加えた結果は0である。
【0014】一方、下位装置20には、上位装置10の
ライトポインタ14の値WPの値をイメージ情報として
保持するWPイメージ領域21と、過去のある時点での
リードポインタ13に格納されていた値を値RP2とし
て保持するRPイメージ領域22と、WPイメージ領域
21およびRPイメージ領域22に格納されている値を
もとに下位装置20から上位装置10へのデータのDM
A転送を制御する制御部23とによって構成されてい
る。具体的には、制御部23は、データ転送を行なおう
とする場合に、WPイメージ領域21に格納されている
値WPおよびRPイメージ領域22に格納されている値
RP2とを参照して受信用サイクリックバッファ13に
空き領域があるかどうかを判断し、空き領域があると判
断した場合にはDMA転送によるデータ転送を実行し、
空き領域がないと判断した場合にはリードポインタ15
から値RP1を読み出してこの値RP1を値RP2に代
入し、空きがあるかの判断を再度実行するように構成さ
れている。2回目の判断によって空きがあると判定され
た場合にはデータ転送を実行し、2回目の判断でも空き
がないと判定されたときには待ち合わせ処理を実行する
ようになっている。なお、DMA転送によってデータを
送信した場合には、送信したデータ量に応じてライトポ
インタ14およびWPイメージ領域21に格納された値
がそれぞれ更新されるようになっている。これにより、
ライトポインタ14に格納されている値とWPイメージ
領域21に格納されている値が常に一致することにな
る。
【0015】次に、この実施例の動作について図2を用
いて説明する。
【0016】下位装置20において上位装置10に対す
るデータ転送要求が発生した場合、制御部23は、WP
イメージ領域21およびRPイメージ領域22からそれ
ぞれ値WPおよびRP2を読み出して、「RP2=(W
P+1) mod N」が成立するかどうかの判定を行
なう(ステップ31)。「作用」欄で説明したように、
「RP2≠(WP+1) mod N」の場合は、受信
サイクリックバッファ13には空きが存在する状態なの
で、ステップ36に移行し、算出された空き容量から求
められる最大送信許容データ量以下のデータ量を算出す
る。そして制御部23は、送信データ量としてこの算出
された量のデータを下位装置20から上位装置10内の
受信用サイクリックバッファ13にDMA転送によって
書込む(ステップ37)。ライトポインタの値WPの更
新後の値を算出し(ステップ38)、算出された値をW
Pイメージ領域21に書込むとともに、DMA転送によ
って上位装置10内のライトポインタ14にも書込み
(ステップ39)、処理を終了する。
【0017】一方、ステップ31で「RP2=(WP+
1) mod N」の場合は、過去のリードポインタの
値からは受信用サイクリックバッファの空きの有無を判
定できない場合であるので、制御部23は、DMA転送
によって、上位装置10内のリードポインタ15の値R
P1を読み込み、この値RP1を代入することによって
RPイメージ領域22に格納されている値RP2を更新
し(ステップ33)、再度、「RP2=(WP+1)
mod N」が成立するかどうかの判定を行なう(ステ
ップ34)。ここで「RP2≠(WP+1) mod
N」の場合には、受信サイクリックバッファ13には空
きが存在する状態なので、ステップ36に移行し、上述
したように、データ転送を行なって処理を終了する。ス
テップ33で「RP2=(WP+1) mod N」で
ある場合は、受信用サイクリックバッファ13が実際に
ビジー状態であるときなので、待ち合わせ処理を実行す
る(ステップ35)。
【0018】
【発明の効果】以上説明したように本発明は、過去のあ
る時点でのリードポインタの値を下位装置側で保持し、
受信用サイクリックバッファに空きがあると判断される
限りは過去のある時点での値をもとに空きの有無の判断
を続行することにより、リードポインタ読み出しのため
のDMA転送の回数が最小限に押えられ、スループット
が大幅に向上するという効果がある。サイクリックバッ
ファのサイズNが十分に大きい場合には、DMA転送回
数のみで比べると、従来方式と比べて約1.5倍のスル
ープットの向上が得られる。
【図面の簡単な説明】
【図1】本発明の一実施例のDMA転送装置の構成を示
すブロック図である。
【図2】図1のDMA転送装置における動作を示すシー
ケンス図である。
【図3】従来のDMA転送装置における動作を示すシー
ケンス図である。
【符号の説明】
10 上位装置 11 内部バス 12 メインメモリ 13 受信用サイクリックバッファ 14 ライトポインタ 15 リードポインタ 16 サイクリックバッファエリア 20 下位装置 21 ライトポインタイメージ領域 22 リードポインタイメージ領域 23 制御部 25 チャネル

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 上位装置のメインメモリ内に設けられ下
    位装置から前記上位装置に送信されるデータを一時的に
    蓄積するサイクリックバッファと、前記メインメモリ内
    に設けられ前記サイクリックバッファの最後に書込まれ
    た位置を記憶するライトポインタと、前記メインメモリ
    内に設けられ前記サイクリックバッファの最後に読み込
    まれた位置を記憶するリードポインタとを有し、前記上
    位装置と前記下位装置との間のデータ転送をDMA転送
    で実行するDMA転送装置において、 前記下位装置内に設けられ前記ライトポインタに保持さ
    れる値を維持する第1のイメージ情報領域と、 前記下位装置内に設けられ過去のある時点での前記リー
    ドポインタに保持されていた値を維持する第2のイメー
    ジ情報領域と、 前記下位装置内に設けられ、前記第1および第2のイメ
    ージ情報領域に格納されている値を参照して前記サイク
    リックバッファ内の空きの有無を推定し、空きがあると
    判断した場合には前記下位装置から前記上位装置へのデ
    ータ転送を実行し、空きがないと判断した場合には前記
    リードポインタの値を読み込んで前記サイクリックバッ
    ファ内の空きの有無を再度推定して空きが確認された場
    合に前記下位装置から前記上位装置へのデータ転送を実
    行する制御手段とを有することを特徴とするDMA転送
    装置。
  2. 【請求項2】 前記データ転送を行なうたびに転送量に
    応じて前記第1のイメージ情報領域に格納される値が更
    新され、前記第2のイメージ情報領域に格納される値が
    最近に前記制御手段で読み出された前記リードポインタ
    の値である請求項1に記載のDMA転送装置。
  3. 【請求項3】 上位装置のメインメモリ内に設けられ下
    位装置から前記上位装置に送信されるデータを一時的に
    蓄積するサイクリックバッファと、前記メインメモリ内
    に設けられ前記サイクリックバッファの最後に書込まれ
    た位置を記憶するライトポインタと、前記メインメモリ
    内に設けられ前記サイクリックバッファの最後に読み込
    まれた位置を記憶するリードポインタとを使用するDM
    A転送方法において、 前記ライトポインタに保持されている値に対応する第1
    の値と、過去のある時点での前記リードポインタに保持
    されていた値に対応する第2の値とを前記下位装置内に
    保持し、 前記下位装置から前記上位装置にDMA転送によってデ
    ータを転送する場合に、前記下位装置において、前記第
    1および第2の値を参照して前記サイクリックバッファ
    内の空きの有無を推定し、空きがあると判断される場合
    には前記下位装置から前記上位装置へのデータのDMA
    転送を実行し、空きがないと判断された場合には前記リ
    ードポインタの値を読み込んで前記サイクリックバッフ
    ァ内の空きの有無を再度推定して空きが確認された場合
    に前記下位装置から前記上位装置へのデータのDMA転
    送を実行することを特徴とするDMA転送方法。
  4. 【請求項4】 前記データの転送量に応じて前記第1の
    値が更新され、前記リードポインタの値を読み込むたび
    に前記第2の値が更新される請求項3に記載のDMA転
    送方法。
JP6164075A 1994-07-15 1994-07-15 Dma転送装置および方法 Expired - Fee Related JP2570187B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6164075A JP2570187B2 (ja) 1994-07-15 1994-07-15 Dma転送装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6164075A JP2570187B2 (ja) 1994-07-15 1994-07-15 Dma転送装置および方法

Publications (2)

Publication Number Publication Date
JPH0830544A JPH0830544A (ja) 1996-02-02
JP2570187B2 true JP2570187B2 (ja) 1997-01-08

Family

ID=15786309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6164075A Expired - Fee Related JP2570187B2 (ja) 1994-07-15 1994-07-15 Dma転送装置および方法

Country Status (1)

Country Link
JP (1) JP2570187B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4809166B2 (ja) 2006-09-06 2011-11-09 株式会社日立製作所 リモートi/oを構成する計算機システム及びi/oデータ転送方法
JP5387155B2 (ja) * 2009-06-15 2014-01-15 富士通セミコンダクター株式会社 Dma転送制御装置およびdma転送制御方法
KR102348429B1 (ko) * 2019-12-23 2022-01-10 서경대학교 산학협력단 멀티 프로젝터 영상 정합을 위한 영상분배및변환장치 및 이를 이용한 영상 정합 방법
WO2021132832A1 (ko) * 2019-12-23 2021-07-01 서경대학교 산학협력단 멀티 프로젝터 영상 정합을 위한 영상분배및변환장치 및 이를 이용한 영상 정합 방법

Also Published As

Publication number Publication date
JPH0830544A (ja) 1996-02-02

Similar Documents

Publication Publication Date Title
US7069373B2 (en) USB endpoint controller flexible memory management
EP0762705B1 (en) Method for transmitting data via a network
US20090006725A1 (en) Memory device
JPH09259033A (ja) バッファ書き込み方法
US6366968B1 (en) Physical write packets processing when posted write error queue is full, with posted write error queue storing physical write requests when posted write packet fails
US7111289B2 (en) Method for implementing dual link list structure to enable fast link-list pointer updates
CN110046114B (zh) 基于pcie协议的dma控制器及dma数据传输方法
US20060236001A1 (en) Direct memory access controller
JP2570187B2 (ja) Dma転送装置および方法
US20080147906A1 (en) DMA Transferring System, DMA Controller, and DMA Transferring Method
US7127530B2 (en) Command issuing apparatus for high-speed serial interface
JP4192416B2 (ja) 計算機システムおよびそのデータ転送方法
US20030005071A1 (en) Inter-processor communication system and method
CN109145397A (zh) 一种支持并行流水访问的外存仲裁结构
JP3133991B2 (ja) データ転送方法およびデータ転送システム
CA2337677A1 (en) Distributed memory type parallel computer and write data transfer end confirming method thereof
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
KR20040066311A (ko) 직접 메모리 접근매체의 데이터 전송 장치 및 방법
US6138186A (en) Burst transfer management system utilizing pointers to ensure that there is enough space in a buffer to receive burst transfers without corrupting data
CN118132474A (zh) 基于dma的数据传输***
JP2000040057A (ja) 計算機システム、バッファ制御装置及び転送方法
JPH0833869B2 (ja) データ処理装置
US20020010815A1 (en) Data transfer method and data recording apparatus
JPH1011387A (ja) 情報処理装置
JPH05227223A (ja) データ転送システム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees