JP5803000B2 - Dma装置、情報処理装置、及びデータ転送方法 - Google Patents
Dma装置、情報処理装置、及びデータ転送方法 Download PDFInfo
- Publication number
- JP5803000B2 JP5803000B2 JP2011058847A JP2011058847A JP5803000B2 JP 5803000 B2 JP5803000 B2 JP 5803000B2 JP 2011058847 A JP2011058847 A JP 2011058847A JP 2011058847 A JP2011058847 A JP 2011058847A JP 5803000 B2 JP5803000 B2 JP 5803000B2
- Authority
- JP
- Japan
- Prior art keywords
- descriptor
- transfer
- dma
- buffer
- read
- 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
Links
Images
Description
図1に例示するように、情報処理装置1は、DMA装置10、ホストコンピュータ20、記憶装置30、I/O装置40、及びペリフェラルバス50を有する。
DMA装置10は、ホストコンピュータ20と、記憶装置30又はI/O装置40との間のDMA(Direct Memory Access)転送処理を行う。I/O装置40には、ネットワークを介してデータを送受信する通信装置が含まれる。
ディスクリプタ制御部12は、本発明にかかる制御手段の一例であり、ディスクリプタの読出しを制御する。ディスクリプタとは、転送対象となるデータを示す情報であり、例えば、転送元又は転送先の先頭アドレス(メモリ上のアドレス)と、転送データ領域の長さとが含まれている。
ディスクリプタバッファ部14は、ディスクリプタ制御部12により読み出されたディスクリプタを蓄積する。
DMAコントローラ16は、ディスクリプタ制御部12により読み出されたディスクリプタに基づいて、ディスクリプタに対応するデータを転送する。
本例のディスクリプタ制御部12は、上記構成によって、あるディスクリプタに対応するDMA転送処理の完了前に、このディスクリプタに続く後続のディスクリプタを読み出し、読み出されたディスクリプタをディスクリプタバッファ部14に送る。
ミスアライン計算部142は、Readディスクリプタバッファ140又はWriteディスクリプタバッファ144に蓄積されているディスクリプタの少なくとも一部に基づいて、ミスアライン計算を行う。すなわち、ミスアライン計算部142は、あるディスクリプタに対応するDMA転送処理の完了前に、このディスクリプタに続く後続のディスクリプタに関するミスアライン計算を行う。
図2に例示するように、Readディスクリプタバッファ140は、転送元データ領域の先頭アドレスと、転送データ領域の転送長とをバッファリングすると共に、ミスアライン計算部142から出力された計算結果をバッファリングする。ミスアライン計算部142は、Readディスクリプタバッファ140にバッファリングされている先頭アドレス及び転送長を参照して、ミスアライン計算を行う。ミスアライン計算では、最初のアクセスのバースト長、2番目以降のアクセスの有無、最後のアクセスのバースト長、及び、転送データのバイト位置を整列するアライナの制御情報が計算される。
同様に、Writeディスクリプタバッファ144も、転送先データ領域の先頭アドレスと、転送データ領域の転送長と、ミスアライン計算部142から出力された計算結果とをバッファリングする。
図3に例示するように、主記憶装置202には、複数の転送データ領域(転送元データ領域及び転送先データ領域)と、それぞれの転送データ領域に対応するディスクリプタとが格納されている。本例では、「ディスクリプタ1」が「転送元データ領域1」及び「転送先データ領域1」に対応し、「ディスクリプタ2」が「転送元データ領域2」及び「転送先データ領域2」に対応する。ディスクリプタには、転送元データ領域の先頭アドレス、転送先データ領域の先頭アドレス、転送データ領域の長さ(すなわち、転送長)、及び、次のディスクリプタアドレスが含まれている。
図4(A)に示すように、比較例では、1つのディスクリプタに対応するDMA転送を複数に分割し、複数のDMAコントローラで転送する。これにより、主記憶装置の応答時間が長くても、時間あたりの情報転送量を増大化させる。しかしながら、1つのディスクリプタに対応する転送データ領域が小さく、転送時間が短い場合には、性能の改善が少ない。また、DMAコントローラが複数必要であるため、回路規模が増大する。また、複数のDMAコントローラが並行して転送処理を行うため、データの順序を保証できない可能性がある。
「転送元データ領域の先頭アドレス」を(SRC_TOP_ADDRESS)と表記し、「転送先データ領域の先頭アドレス」を(DESTINATION_TOP_ADDRESS)と表記し、「転送データ領域の長さ」を(TRANSFER_LENGTH)と表記し、「ホストコンピュータによって決められる最大の転送サイズ」を(MAX_SIZE)と表記する。なお、(MAX_SIZE)は、計算を容易にするため、2のn乗(nは整数)バイトとする。
図5(A)は、(MAX_SIZE)の単位で区切られた領域の中における転送元データ領域の先頭アドレスの位置(以降、(ADDRESS_IN_MAX_SIZE)と表記)の算出方法を例示する。なお、図中の「0x」は16進数であることを表している。
(ADDRESS_IN_MAX_SIZE)は、(SRC_TOP_ADDRESS)と、(MAX_SIZE)により得られるマスク値(以降、(MAX_SIZE_MASK)と表記)との、ビット単位の「AND」を計算することで得られる。
(MAX_SIZE_MASK)は、以下の式により得られる。なお、以降、全ての値は2の補数で表記されており、加算(+)、減算(−)は2の補数を演算する演算子である。
(MAX_SIZE_MASK)=(MAX_SIZE)−1
(ADDRESS_IN_MAX_SIZE)=(SRC_TOP_ADDRESS) AND (MAX_SIZE_MASK)
まず、(MAX_SIZE)の単位で区切られた領域の中の残りの転送サイズ(以降、(REMAIN_IN_MAX_SIZE))を算出する。図5(B)に、(REMAIN_IN_MAX_SIZE)の領域を例示する。
(REMAIN_IN_MAX_SIZE)は、以下の式で求められる。
(REMAIN_IN_MAX_SIZE)=(MAX_SIZE)−(ADDRESS_IN_MAX_SIZE)
2番目以降のアクセスは、(MAX_SIZE)の単位で区切られた領域を超えて転送が継続される場合に存在する。よって、以下の式が真(true)のときに存在する。
(REMAIN_IN_MAX_SIZE)<(TRANSFER_LENGTH)
最初のアクセスのバースト長を算出するため、まず、(BUS_SIZE)と(BUS_SIZE_MASK)について定義する。
(BUS_SIZE)はバス幅(ここでは8バイトのため8)のことであり、2のn乗(nは整数)のバイト数で表現できる値とする。(BUS_SIZE_MASK)は、バスのバイト位置を区別するためのアドレスを取り出すためのマスク値で、以下のように計算できる。
(BUS_SIZE_MASK)=(BUS_SIZE)−1
この値を用い、かつ、2番目以降のアクセスが存在する場合と存在しない場合とに分け、最初のアクセスのバースト長を求める。
2番目以降のアクセスが存在する場合は、
(転送元データ領域の最初のアクセスのバースト長)=(((REMAIN_IN_MAX_SIZE)−1)/(BUS_SIZE))+1
となる。除算は(BUS_SIZE)が2のn乗(nは整数)のため、論理右シフト演算により、ハードウェアに実装する場合、非常に容易に得ることができる。この具体例を図6(A)に示す。
まず、2番目以降のアクセスが存在する場合と同様に、図6(A)における(REMAIN_IN_MAX_SIZE)だけアクセスした場合のバースト長を計算する。
(REMAIN_IN_MAX_SIZEのアクセスのバースト長)=(((REMAIN_IN_MAX_SIZE)−1)/(BUS_SIZE))+1
この値から、最後の転送データ以降の部分を差し引く。差し引き分は、以下のように計算される。
(最後の転送データ以降のデータの差し引き分)=(MAX_SIZE)−(((SRC_TOP_ADDRESS)+(TRANSFER_LENGTH)) AND (MAX_SIZE_MASK)))/(BUS_SIZE)
これらを用いて、バースト長は以下のように計算できる。
(転送元データ領域の最初のアクセスのバースト長)=(REMAIN_IN_MAX_SIZEのアクセスのバースト長)−(最後の転送データ以降のデータの差し引き分)
(転送元データ領域の最後のアクセスのバースト長)=(((SRC_TOP_ADDRESS)+(TRANSFER_LENGTH)−1) AND (MAX_SIZE_MASK))/(BUS_SIZE)
転送先データ領域については、以上の過程について、(SRC_TOP_ADDRESS)を(DESTINATION_TOP_ADDRESS)に置き換えて計算することで同様に算出することができる。
次に、転送データのバイト位置を整列するアライナの制御情報であるが、これは、以下の式により得られる。
(アライナの制御情報)=(DESTINATION_TOP_ADDRESS) AND (BUS_SIZE_MASK)−(SRC_TOP_ADDRESS) AND (BUS_SIZE_MASK)
この制御情報を用いて、転送先のアドレスに応じて転送先のデータバスの適切な位置にデータを配置して転送を行うよう制御される。
10 DMA装置
12 ディスクリプタ制御部
14 ディスクリプタバッファ部
142 ミスアライン計算部
16 DMAコントローラ
20 ホストコンピュータ
30 記憶装置
40 I/O装置
Claims (6)
- DMA転送を行うDMA装置であって、
ディスクリプタに対応するデータを転送するデータ転送手段と、
前記データ転送手段によるデータ転送処理を制御する制御手段と、
少なくともディスクリプタを蓄積するバッファと、
ディスクリプタに関するミスアライン計算を行うミスアライン計算手段と
を有し、
前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを外部から読み出し、読み出されたディスクリプタを前記バッファに蓄積し、
前記バッファは、前記ミスアライン計算手段に接続された読出し側バッファと、前記ミスアライン計算手段に接続された書込み側バッファとを含み、
前記読出し側バッファは、少なくとも、転送元アドレス及び転送長、及び、前記ミスアライン計算手段から出力された計算結果を蓄積し、
前記書込み側バッファは、少なくとも、転送先アドレス及び転送長、及び、前記ミスアライン計算手段から出力された計算結果を蓄積する
DMA装置。 - DMA転送を行うDMA装置であって、
ディスクリプタに対応するデータを転送するデータ転送手段と、
前記データ転送手段によるデータ転送処理を制御する制御手段と、
少なくともディスクリプタを蓄積するバッファと、
前記バッファに蓄積されたディスクリプタに基づいて、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関するミスアライン計算を行うミスアライン計算手段と
を有するDMA装置。 - 中央演算装置と、
主記憶装置と、
DMA装置と
を備え、
前記DMA装置は、
前記主記憶装置から読み出されたディスクリプタに対応するデータを転送するデータ転送手段と、
前記データ転送手段によるデータ転送処理を制御する制御手段と、
少なくともディスクリプタを蓄積するバッファと
ディスクリプタに関するミスアライン計算を行うミスアライン計算手段と
を有し、
前記制御手段は、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを外部から読み出し、読み出されたディスクリプタを前記バッファに蓄積し、
前記バッファは、前記ミスアライン計算手段に接続された読出し側バッファと、前記ミスアライン計算手段に接続された書込み側バッファとを含み、
前記読出し側バッファは、少なくとも、転送元アドレス及び転送長、及び、前記ミスアライン計算手段から出力された計算結果を蓄積し、
前記書込み側バッファは、少なくとも、転送先アドレス及び転送長、及び、前記ミスアライン計算手段から出力された計算結果を蓄積する
情報処理装置。 - 中央演算装置と、
主記憶装置と、
DMA装置と
を備え、
前記DMA装置は、
前記主記憶装置から読み出されたディスクリプタに対応するデータを転送するデータ転送手段と、
前記データ転送手段によるデータ転送処理を制御する制御手段と、
少なくともディスクリプタを蓄積するバッファと、
前記バッファに蓄積されたディスクリプタに基づいて、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関するミスアライン計算を行うミスアライン計算手段と
を有する
情報処理装置。 - DMA転送を行うデータ転送方法であって、
ディスクリプタに対応するデータを転送するステップと、
ディスクリプタに関するミスアライン計算を行うステップと
前記ディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを読み出すステップと、
読み出されたディスクリプタのうち、少なくとも、転送元アドレス及び転送長、及び、前記ミスアライン計算ステップから出力された計算結果を読出し側バッファに蓄積するステップと、
読み出されたディスクリプタのうち、少なくとも、転送先アドレス及び転送長、及び、前記ミスアライン計算ステップから出力された計算結果を書込み側バッファに蓄積するステップと
を有するデータ転送方法。 - DMA転送を行うデータ転送方法であって、
ディスクリプタに対応するデータを転送するステップと、
前記ディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタを読み出すステップと、
読み出されたディスクリプタをバッファに蓄積するステップと、
前記バッファに蓄積されたディスクリプタに基づいて、あるディスクリプタに対応するDMA転送処理が完了する前に、このディスクリプタの後続のディスクリプタに関するミスアライン計算を行うステップと
を有するデータ転送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011058847A JP5803000B2 (ja) | 2011-03-17 | 2011-03-17 | Dma装置、情報処理装置、及びデータ転送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011058847A JP5803000B2 (ja) | 2011-03-17 | 2011-03-17 | Dma装置、情報処理装置、及びデータ転送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012194828A JP2012194828A (ja) | 2012-10-11 |
JP5803000B2 true JP5803000B2 (ja) | 2015-11-04 |
Family
ID=47086646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011058847A Expired - Fee Related JP5803000B2 (ja) | 2011-03-17 | 2011-03-17 | Dma装置、情報処理装置、及びデータ転送方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5803000B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703951B (zh) * | 2021-10-27 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种处理dma的方法、装置、及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01201761A (ja) * | 1988-02-08 | 1989-08-14 | Matsushita Electric Ind Co Ltd | データ転送制御装置 |
JP2669911B2 (ja) * | 1989-11-17 | 1997-10-29 | 株式会社日立製作所 | Dmaコントローラおよび情報処理システム |
JPH0696007A (ja) * | 1992-09-17 | 1994-04-08 | Fujitsu Ltd | Dma転送方式 |
JPH09146877A (ja) * | 1995-11-22 | 1997-06-06 | Oki Electric Ind Co Ltd | メモリ間データ転送制御装置 |
JP3206568B2 (ja) * | 1998-10-28 | 2001-09-10 | 日本電気株式会社 | Dma制御方法及び装置 |
JP2008033721A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | Dma転送制御装置 |
-
2011
- 2011-03-17 JP JP2011058847A patent/JP5803000B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012194828A (ja) | 2012-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4908017B2 (ja) | Dmaデータ転送装置及びdmaデータ転送方法 | |
US8868809B2 (en) | Interrupt queuing in a media controller architecture | |
CN111126589B (zh) | 神经网络数据处理装置、方法和电子设备 | |
US20150301886A1 (en) | Information processing apparatus, system, and information processing method | |
US7506080B2 (en) | Parallel processing of frame based data transfers | |
JP6287571B2 (ja) | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 | |
CN105573711A (zh) | 一种数据缓存方法及装置 | |
JP2010176442A (ja) | ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法 | |
CN106055504B (zh) | 控制数据传输的方法、装置及计算机设备 | |
JP5803000B2 (ja) | Dma装置、情報処理装置、及びデータ転送方法 | |
JP2010211322A (ja) | ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法 | |
JP5651622B2 (ja) | データ伝送装置、データ伝送方法、及びプログラム | |
KR20170072645A (ko) | 프로세서 및 프로세서에서 데이터를 처리하는 방법 | |
JP2008046771A (ja) | ダイレクトメモリアクセスコントローラ | |
US20160085683A1 (en) | Data receiving device and data receiving method | |
JP5623677B2 (ja) | リードリクエスト処理装置 | |
JP6038292B2 (ja) | データ転送装置及びデータ転送方法 | |
EP3588319B1 (en) | Memory module | |
JP5987560B2 (ja) | データ転送装置、データ転送方法およびデータ転送プログラム | |
JP5359692B2 (ja) | フレーム出力方法及びフレーム出力装置 | |
US20220171725A1 (en) | Packet Processing Device and Packet Processing Method | |
JP6938399B2 (ja) | 通信装置、通信方法およびプログラム | |
JP6698353B2 (ja) | 情報処理装置、dma転送制御方法およびdma転送制御プログラム | |
JP2010067167A (ja) | データ転送装置 | |
JP2004046845A (ja) | システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130618 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140221 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140422 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140826 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150310 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150609 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20150710 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150731 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150810 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5803000 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |