JP4456490B2 - Dma装置 - Google Patents

Dma装置 Download PDF

Info

Publication number
JP4456490B2
JP4456490B2 JP2005008008A JP2005008008A JP4456490B2 JP 4456490 B2 JP4456490 B2 JP 4456490B2 JP 2005008008 A JP2005008008 A JP 2005008008A JP 2005008008 A JP2005008008 A JP 2005008008A JP 4456490 B2 JP4456490 B2 JP 4456490B2
Authority
JP
Japan
Prior art keywords
dma
memory
data
descriptor
controller
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
JP2005008008A
Other languages
English (en)
Other versions
JP2006195823A (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.)
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 JP2005008008A priority Critical patent/JP4456490B2/ja
Priority to US11/196,469 priority patent/US7640374B2/en
Publication of JP2006195823A publication Critical patent/JP2006195823A/ja
Application granted granted Critical
Publication of JP4456490B2 publication Critical patent/JP4456490B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)

Description

本発明は、DMA(Direct Memory Access)制御によるデータ転送方式に関する。
従来より、メモリからデータを読み出す際のCPUの負荷を軽くするための技術としてDMA転送が広く知られている。DMA転送では、DMAコントローラが、メモリ領域管理情報であるディスクリプタを用いて所望のデータを読み出す(例えば、特許文献1)。なお、特許文献1においては、メモリから取り出したディスクリプタを基にデータの格納領域を参照し、画像メモリの特定の領域から画像データが読み出される。DMAコントローラのディスクリプタを用いてデータの転送単位を分割し、これを時分割に実行することで、複数のデータ転送動作をあたかも平行して実行しているように動作させることができる。
図10は、DMAコントローラが、ディスクリプタにより指定されたデータを読み出す、従来の処理を示したシーケンス図である。例えば接続されたキーボード、マウス等の他のデバイスから、所望のデータを読み出すよう命令が入力されると、DMAコントローラ4が、まずディスクリプタを読み出す。次に、そのディスクリプタが指し示すメモリの所定の領域からデータを読み出す。読み出されたデータは、転送先のデバイスに転送される。
図10中の括弧書きで示された番号は、DMA転送処理の実行順を示す。以下、図中の番号に沿って、従来技術に係るDMA転送処理について説明する。
<1>CPU2は、DMAコントローラ4に対して、メモリ3に格納されたディスクリプタを読み出すよう指示する。
<2>DMAコントローラ4が、メモリコントローラ5に対して、ディスクリプタの読み出しを要求する。
<3>DMAコントローラ4は、メモリコントローラ5を介して、メモリ3から読み出されたディスクリプタを受信する。
<4>DMAコントローラ4が、メモリコントローラ5に対して、メモリ3の、受信したディスクリプタが指し示す領域に格納された、データの読み出しを要求する。メモリコントローラ5は、DMAコントローラ4からデータの読み出し要求を受信してからメモリ3に対してデータ読み出し要求を送信するまでの間、すなわち実際にメモリ3からデータを読み出す処理を実行する前に、事前準備処理およびバスの使用権が付与されるのを待機する処理を実行する。バスの使用権が与えられると、<5>の処理に進む。
<5>メモリコントローラ5が、メモリ3からのデータの読み出しを開始する。
<6>メモリ3から、ディスクリプタに基づいてデータが読み出される。メモリ3から取り出されたデータは、データバス7を介してメモリコントローラ5に転送され、データは、メモリコントローラ5のプリフェッチバッファ(pre-fetch buffer)に格納される。
<7>メモリコントローラ5は、プリフェッチバッファに格納されたデータを、順次DMAコントローラ4に転送する。ここで、プリフェッチバッファにデータを格納する処理速度とプリフェッチバッファのデータをDMAコントローラ4に転送する処理速度とでは、一般に転送処理に要する速度の方が遅い。このため、メモリ3から取得したデータが次第にプリフェッチバッファに蓄積されていく。このため、メモリコントローラ5は、プリフェッチバッファのデータ量が所定値を超えると、一旦、ディスクリプタに対応するメモリ3からのデータ読み出し要求を解除する。すなわち、データバス7を開放する。
<8>メモリコントローラ5は、未転送のデータについて引き続きメモリ3から読み出すための事前準備処理を実行し、再度コントロールバス6およびデータバス7の使用権を得るための、バス使用要求を行う。
<9>コントロールバス6およびデータバス7の使用権を得た後、未転送のデータをメモリ3から読み出し、データバス7を介して、順次DMAコントローラ4に対して転送する。
以下、DMAコントローラ4が要求した全てのデータがメモリ3から読み出されるまで、上記<5>から<8>と同様の処理が繰り返される。
<10>DMAコントローラ4が要求したデータ量分のデータの、DMAコントローラ4への転送が完了すると、DMAコントローラ4は、CPU2に対して、DMA転送完了通知を送信して、処理を終了する。メモリ3から読み出されたデータは、DMAコントローラ4から所定のデバイスに転送される。
特開2003−198817号公報(図4、0003段落)
従来のDMA転送方法においては、図10に示されるように、1つのディスクリプタに対応するメモリ3からのデータ読み出しが複数回実行されるときは、その都度、事前準備処理を実行し、バスの使用権が付与されるまで待機する必要がある。ここで、メモリコントローラ5が事前準備処理実行中およびバスの使用権付与待ち状態にある間は、データバス7は使用されていない。すなわち、従来技術においては、データバス7が使用されていない期間は、所定のデータ量をメモリ3から読み出してメモリコントローラ5に転送するごとに発生することになる。
メモリコントローラ5がメモリ3から未転送のデータを読み出すよう要求するごとに、上記の事前準備処理およびコントロールバス6およびデータバス7の使用権取得のための処理を実行する必要がある。このため、所定のデータ量のデータをメモリ3からメモリコントローラ5のプリフェッチバッファに取り出すごとに、メモリレイテンシに起因するデータバス7がデータ転送に使用されていない期間が生じる。バスの使用効率、すなわちDMA転送におけるスループットの向上の観点からは、データバス7が使用されていない期間を短縮させることが好ましい。
本発明は、1つのディスクリプタに対応するデータをDMA転送するよう要求された場合において、DMA転送におけるスループットを向上させることのできる技術を提供することを目的とする。
上記目的を達成するために、本発明は、ディスクリプタに対応するデータをメモリから読み出すDMA装置であって、1つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、前記複数のサブディスクリプタに対応するデータを前記メモリから読み出すための複数の読み出し要求を生成する複数のDMAコントローラと、前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出すメモリコントローラとを備えた構成とする。
ディスクリプタに対応するデータをメモリから読み出す際に、そのディスクリプタを複数のサブディスクリプタに分割する。1つのサブディスクリプタを受信したDMAコントローラは、そのサブディスクリプタに対応するデータをメモリから読み出すための、読み出し要求を生成する。メモリコントローラは、複数のDMAコントローラから送信された読み出し要求を受信すると、それぞれのサブディスクリプタに対応するデータを読み出して対応するDMAコントローラに転送する。複数のサブディスクリプタに対応するデータの読み出しに関わる処理が互いに一部重複するため、メモリレイテンシが吸収され、DMA転送におけるスループットを向上させることができる。
前記複数のDMAコントローラの状態を管理するDMAコントローラ管理手段、をさらに備え、前記分割手段は、前記ディスクリプタを、前記DMAコントローラ管理手段によって前記メモリからデータを読み出すことが可能な状態と判断されたDMAコントローラの数に、前記サブディスクリプタを分割することとしてもよい。DMAコントローラ管理手段によって、データの読み出しが可能なDMAコントローラの数が把握されるので、ディスクリプタを適切な数に分割することができる。
前記メモリコントローラは、複数のバッファ回路を含んで構成され、該複数のバッファ回路は、前記サブディスクリプタに対応するデータを、前記メモリから読み出して記憶することとしてもよい。さらに、前記バッファ回路は、他のバッファ回路がデータの前記メモリからの読み出しを実行している間に、該メモリからデータを読み出すための準備処理を実行することとしてもよい。あるいは、前記バッファ回路は、前記準備処理を実行した後、前記メモリとの間のバスの使用権限を付与されると、データを該メモリから読み出す処理を開始することとしてもよい。
このような構成とすることにより、他のバッファ回路がサブディスクリプタに基づいたデータの読み出しを行っている間に、予めデータ読み出しのための準備処理を実行させておくことができる。他のバッファ回路についてデータの読み出しが完了すると、すぐにデータの読み出しを開始することができるので、バスの使用効率を向上させることができる。
なお、本発明は、上記のDMA装置に限られない。上記のディスクリプタを分割したサブディスクリプタに基づいて、サブディスクリプタに対応するデータをメモリから読み出す処理を実行する方法、およびサブディスクリプタを生成してかかる処理を実現させる装置等であっても、本発明に含まれる。
本発明によれば、ディスクリプタを分割し、その分割されたディスクリプタ(サブディスクリプタ)を用いてデータの読み出しをメモリコントローラに対して実行させる。複数のメモリコントローラにおいて、メモリレイテンシを引き起こす処理の一部が時間的に重複して実行されるため、メモリコントローラがメモリからデータを読み出す際のデータの伝送路であるデータバスの未使用期間が縮小され、DMA転送処理におけるスループットを向上させることができる。
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図1は、DMA転送に関わる回路の全体図である。ディスクリプタ管理装置1、メモリ3、DMAコントローラ4およびメモリコントローラ5を含んで構成される。
メモリ3に格納される情報には、例えば画像データ等の各種データ、およびこれらデータが格納されるメモリ領域管理情報である、ディスクリプタ等がある。DMAコントローラ4は、DMA転送においては、ディスクリプタに基づいて、各種データの格納されているアドレスを決定し、読み出したデータを指定されたデバイスに転送する。DMAコントローラ4は、本実施形態においては複数備えられる。メモリコントローラ5は、コントロールバス6を介してメモリ3に対して制御信号を送受信し、データバス7を介してメモリ3とデータを送受信する。本発明に係るDMA転送では、CPU2が所定のディスクリプタ(メモリ領域管理情報)を読み出すよう指示を出すと、ディスクリプタ管理装置1がそのディスクリプタを読み出して分割する。そして、DMAコントローラ4は、そのディスクリプタを分割することによって生成された複数のメモリ領域管理情報に基づいて、メモリ3からデータを読み出し、デバイスに対して読み出したデータを転送する。DMAコントローラ4がデータの読み出しの際に使用する、分割されたアドレス情報等のメモリ領域管理情報を、本実施形態においては、サブディスクリプタと定義する。
ディスクリプタ管理装置1は、ディスクリプタ制御部11、分割部12およびDMA管理部13を含んで構成される。図2から図6を参照して、ディスクリプタ管理装置1について説明する。
図2は、ディスクリプタ制御部11についての構成図である。ディスクリプタ制御部11は、CPU2からのディスクリプタ読み出し指示に基づいて、メモリコントローラ5に対してディスクリプタを読み出すよう要求する。また、ディスクリプタに対応するデータ転送が終了したことを認識すると、DMA転送の処理が完了したことをCPU2に対して通知する。内部に備えた状態遷移機械110により、ディスクリプタ管理装置1の状態を管理する。
図3は、状態遷移機械110により管理される、ディスクリプタ管理装置1の状態遷移図である。図3に示されるように、ディスクリプタ管理装置1は、アイドル状態、要求状態、アクティブ状態および完了状態の4つの状態を順に遷移する。状態遷移機械110は、所定の時間間隔(1周期)で装置の状態を監視しており、4つの状態それぞれの場合における所定の条件を満たすと、次の状態に遷移したと認識する。
アイドル状態では、ディスクリプタ管理装置1は、DMA転送を実行しておらず、この状態にあるときにCPU2からディスクリプタ読み出しの指示を受けると、本実施形態に係るDMA転送を開始する。要求状態では、メモリコントローラ5に対してディスクリプタの読み出し要求を送信し、ディスクリプタの受信を待機している。1周期後、状態は要求状態からアクティブ状態に遷移する。
アクティブ状態では、メモリ3からDMAコントローラ4に対してデータを転送中であり、ディスクリプタ管理装置1は、DMA転送が完了して、転送に関わるDMAコントローラ4から処理が完了したことの通知の受信を待機する。転送完了通知を受信すると、アクティブ状態から完了状態に遷移する。
完了状態では、DMA転送が完了したことをCPU2に対して通知する。1周期経過後、状態はアイドル状態に遷移する。
図4は、分割部12の回路構成図である。分割部12は、メモリ3から読み出したディスクリプタを、メモリコントローラ5を介して受信し、受信したディスクリプタを複数のサブディスクリプタに分割する。本実施形態においては、以下、分割数を3とする。ディスクリプタを3つに分割することで生成されたサブディスクリプタは、それぞれDMA転送を実行する3つのDMAコントローラ4に割り当てられる。
3つに分割されたサブディスクリプタ0、1および2は、例えばサブディスクリプタ121に示されるデータ構造を備える。図4に示されるように、メモリ3に対して要求する、読み出すデータのサイズ、メモリ3上のアドレス、転送先のアドレス等の情報を含んで構成される。例えば10キロバイトのデータを読み出す場合、1つのサブディスクリプタにより読み出されるデータサイズは、例えば、10/3=3.3キロバイトである。サブディスクリプタを割り当てられたDMAコントローラ4は、格納された情報に基づいて、メモリ3上のアドレスから所定のサイズのデータを読み出し、転送先のアドレスに対して読み出したデータを転送する。
図5は、DMA管理部13の回路構成図である。DMA管理部13は、接続された複数のDMAコントローラ4から、DMAコントローラの状態を伝えるための信号を受信する。DMAコントローラ4から受信した信号は、内部に備えた状態遷移機械130に与えられる。状態遷移機械130は、各DMAコントローラ4の状態を管理し、その情報をディスクリプタ制御部11に送信する。ディスクリプタ制御部11は、DMAコントローラ4の状態から、DMA転送中か否か等を判断する。
図6は、DMA管理部13によって管理される、DMAコントローラ4の状態遷移図である。図6に示されるように、DMAコントローラ4は、アイドル状態、使用状態および完了状態の3つの状態を順に遷移する。DMA管理部13の状態遷移機械130は、所定の時間間隔(1周期)でDMAコントローラ4の状態を監視しており、3つの状態それぞれの場合における所定の条件を満たすと、次の状態に遷移したと認識する。なお、監視されるDMAコントローラ4は、ディスクリプタ管理装置1に接続されたDMAコントローラ4全てについてであってもよいし、所定の数分のDMAコントローラ4についてであってもよい。
アイドル状態では、管理すべき複数のDMAコントローラ4の全てが使用されていない状態にある。アイドル状態のDMAコントローラ4において、DMA転送が開始されると、1周期経過後、使用中状態に遷移する。使用中状態では、DMAコントローラ4がDMA転送処理を実行中であり、転送処理に関わる全てのDMAコントローラ4についてその処理が完了した場合は、完了状態に遷移する。完了状態では、処理に関わる全てのDMAコントローラ4について、DMA転送処理が完了したことをディスクリプタ制御部11に対して通知する。1周期経過後、状態はアイドル状態に遷移する。
図7は、本実施形態に係るディスクリプタ管理装置1の基本動作のフローチャートである。図7を参照して、ディスクリプタ管理装置1がディスクリプタを分割してサブディスクリプタを生成し、DMA転送を行う方法についてその概要を説明する。
まず、CPU2からの指示を受けると、ステップS1で、ディスクリプタの読み出し処理を実行する。ステップS2で、ディスクリプタに関わるディスクリプタ情報を取得する。ステップS3で、受信したディスクリプタを、所定の数で分割し、複数のサブディスクリプタを生成する。ステップS4で、生成した複数のサブディスクリプタをそれぞれ対応するDMAコントローラ4に転送し、DMAコントローラ4においてDMA転送を開始するための、DMAスタートの指示を送信する。
DMA転送が開始されると、ディスクリプタ管理装置1では、ステップS5で、アクティブ状態にある全てのDMAコントローラ4について、DMA転送が終了待ちの動作に入る。アクティブ状態にある全てのDMAコントローラ4のDMA転送が完了すると、ステップS6で、DMAアクセス終了通知をCPU2に対して送信し、処理を終了する。
図8は、ディスクリプタを分割して生成されたサブディスクリプタを用いた、複数のDMAコントローラ4によるDMA転送のシーケンス図であり、図9は、本実施形態に係るDMA転送におけるデータフローを、ディスクリプタ管理装置1の構成図に対応させて表した図である。なお、図9には、図8の括弧書きの処理手順が対応させて示されている。図8および図9を参照して、本実施形態に係るディスクリプタ管理装置1およびこれに接続された他の装置の動作処理について、図中の括弧書きで示された番号に沿ってさらに詳しく説明する。
<1>CPU2が、ディスクリプタ管理装置1に対して、ディスクリプタ読み出しを指示する。
<2>DMA管理部13から通知されたDMAコントローラ4の状態がアイドル状態である場合、ディスクリプタ制御部11は、ディスクリプタ読み出し要求をメモリコントローラ5に対して送信する。
<3>ディスクリプタ管理装置1が、メモリ3から読み出されたディスクリプタを受信する。
<4>分割部12が、受信したディスクリプタを3つに分割し、3つのサブディスクリプタ0、1および2を生成する。
<5>3つのアイドル状態のDMAコントローラ4に対して、生成したサブディスクリプタ0、1および2をそれぞれ送信し、DMA転送を開始するよう要求するための、DMAスタート指示を送信する。
<6>各DMAコントローラ4が、メモリコントローラ5に対してメモリ読み出し要求を送信する。読み出し要求を受信したメモリコントローラ5においては、受信した3つの読み出し要求に対応させて、キューを割り当てる。ここで、キューは、メモリ3からデータを読み出すに当たって、順に3つの処理動作を行う。本実施形態においては、それぞれを、事前準備処理動作、バス使用権付与待ち動作および読み出し動作とする。ここで、本実施形態に係るメモリレイテンシは、事前準備処理動作およびバス使用権付与待ち動作を実行する期間に相当する。本実施形態において割り当てられた3つのキューは、それぞれが他のキューとは独立して事前準備処理動作およびバス使用権付与待ち動作を実行し、他のキューが読み出し動作を行っていないことを認識すると、バス使用権を得て読み出し動作を実行する。3つのキューのうち、先にDMAコントローラ4から読み出し要求を受けて一連の動作処理の実行を開始したキューから順に、キュー(0)、キュー(1)およびキュー(2)とする。3つのキューは、それぞれが、事前準備処理動作を実行し、バス使用権付与待ち動作に入る。
<7>まず、キュー(0)が、バスの使用権を取得し、読み出し処理を実行する。
<8>メモリ3から読み出された、サブディスクリプタ0に対応するデータがメモリコントローラ5のプリフェッチバッファに格納される。なお、プリフェッチバッファはメモリコントローラ5に複数個、本実施形態においては3個備えられており、3つのキューによって読み出されたデータがそれぞれのプリフェッチバッファに格納される。キューおよびプリフェッチバッファは、本実施形態においてはバッファ回路として動作し、バッファ回路は、データの読み出しに関する一連の処理の実行および読み出したデータの格納に用いられる。
<9>プリフェッチバッファに格納されたデータは、順次DMAコントローラ4に転送される。DMAコントローラ4は、指定された転送先のデバイスにデータを転送する。しかし、プリフェッチバッファにデータを格納する処理速度と、プリフェッチバッファからデータを読み出してデバイスに転送する処理速度とでは、一般に、転送に要する速度の方が遅い。このため、プリフェッチバッファには次第にデータが蓄積されていく。このため、メモリコントローラ5は、プリフェッチバッファのデータ量が所定値を超えると、一旦、サブディスクリプタ0に対応するメモリ読み出し要求を解除する。すなわち、データバス7を開放する。なお、本実施形態においては、読み出すデータ量を10キロバイト、プリフェッチバッファに格納し得るデータ容量を2キロバイトとする。
<10>バスが開放されると、バスの使用権の付与待ち状態にあったキュー(1)がバスの使用権を得て、読み出し処理を開始する。キュー(1)は、上記<6>の処理において、事前準備処理動作を完了し、バス使用権付与待ち動作を行っているところであるので、バスの使用権が付与されると即時にデータの読み出し動作を開始する。なお、キュー(0)は、未受信のデータをメモリ3から読み出すため、再度、事前準備処理動作およびバス使用権付与待ち動作を行い、バスの使用権が付与されるのを待機する。
<11>メモリ3から読み出された、サブディスクリプタ1に対応するデータがメモリコントローラ5のプリフェッチバッファに格納される。
<12>上記<9>の処理と同様に、プリフェッチバッファに格納されたデータは、順次DMAコントローラ4に転送される。メモリコントローラ5は、プリフェッチバッファの容量を超えない量である2キロバイトのデータを読み出すと、一旦、サブディスクリプタ1に対応するメモリ読み出し要求を解除する。
<13>バスが開放されると、バスの使用権の付与待ち状態にあったキュー(2)がバスの使用権を得て、読み出し処理を開始する。上記<10>の処理におけるキュー(1)と同様に、キュー(2)は、上記<6>の処理において、事前準備処理動作を完了し、バス使用権付与待ち動作を行っているところであるので、バスの使用権が付与されると即時にデータの読み出し動作を開始する。キュー(1)は、上記<10>の処理におけるキュー(0)と同様の処理を実行し、バスの使用権が付与されるのを待機する。
以降、同様に所定の容量のデータがメモリ3から読み出されてメモリコントローラ5のプリフェッチバッファに格納されると、バスが一旦開放され、次のバス使用権付与待ち状態にあるキューがバスの使用権を獲得し、読み出し処理を開始する。プリフェッチバッファに格納されたデータは、順次対応するDMAコントローラ4に転送される。
<14>サブディスクリプタ0に対応する、2+1.3=3.3キロバイト分のデータについてDMA転送が完了する。DMAコントローラ4は、ディスクリプタ管理装置1に対して完了通知を送信する。
<15>サブディスクリプタ1に対応する、2+1.3=3.3キロバイト分のデータの転送が完了し、完了通知が送信される。
<16>サブディスクリプタ2に対応する、2+1.3=3.3キロバイト分のデータの転送が完了し、完了通知が送信される。
<17>3つのDMAコントローラ4から完了通知を受信すると、ディスクリプタ管理装置1のDMA管理部13は、上記<2>で読み出した1つのディスクリプタに係るDMA転送が完了したと認識し、ディスクリプタ制御部11に処理完了の通知を行う。
<18>ディスクリプタ制御部11は、CPU2に対し、DMA転送終了通知を送信する。
このように、1つのディスクリプタに対応するメモリ3からのデータ読み出しが、複数のサブディスクリプタによって複数回実行されるときは、その都度事前準備処理、バス使用権付与待ち動作を実行しなくとも、先立ってこれらの処理が実行されている。このため、バス使用権を付与されたバッファ回路においては、すぐにデータの読み出し処理を実行することができ、バスの未使用時間を短くすることができる。
図9に示されるように、本実施形態に係るDMA転送によれば、ディスクリプタ管理装置1が、データの読み出しにおいてメモリの参照領域を示すディスクリプタを複数のサブディスクリプタに分割し、複数のDMAコントローラ4にサブディスクリプタを分配する。サブディスクリプタを受信したそれぞれのDMAコントローラ4は、そのサブディスクリプタを用いてデータ読み出しの処理を実行する。図9の例では、アイドル状態のDMAコントローラ(0)、(1)および(2)に対し、スタート指示を出し、10/3=3.3キロバイトずつサブディスクリプタに基づきメモリから読み出す。
データ読み出しの処理を実行するメモリコントローラ5においては、実際にメモリ3からデータを取り出し、自装置のプリフェッチバッファに格納する処理を実行するに先立って、上記の事前準備処理を実行し、さらに、コントロールバス6やデータバス7の使用権を得るために待機する必要がある。サブディスクリプタを受信した複数のDMAコントローラ4から並行してデータ読み出し要求を受信し、複数のバッファ回路で事前準備処理やバス使用権を付与されるまでの待機処理を並行させて行うことで、1つのディスクリプタに対するデータの読み出しであっても、複数のバッファ回路について、事前準備処理やバス使用権付与待ちを時間的に重複させて実行することが可能となる。このため、メモリコントローラ5においては、それぞれのバッファ回路はバスの使用権を付与されるとすぐにデータ読み出しの処理を実行することができ、必然的に発生するメモリレイテンシが吸収され、バスが使用されていない期間を小さく抑えられる。これにより、DMA転送におけるスループットを向上させることができる。
なお、上記実施形態においては、ディスクリプタの分割数を3として説明したが、これに限られない。例えば、ディスクリプタ管理装置1に接続されたDMAコントローラ4の総数を分割数としてもよい。ディスクリプタを最大数で分割することで、DMA装置としてのスループットを最大限に向上させることができる。あるいは、DMA管理部13で、アイドル状態と判断されたDMAコントローラ4の総数で分割することとしてもよい。ある時点において、DMA転送を実行可能な状態にある、適切なDMAコントローラの数でディスクリプタを分割する。これにより、その時点においてスループットを最大限に向上させることができる。
また、上記実施形態においては、事前準備処理が完了し、さらにバスの使用権付与待ちの状態にあるときに、バスの使用権が付与されたことを契機としてバッファ回路がデータ読み出しを開始しているが、これに限られない。事前準備処理やバス使用権の付与待ち等、データ読み出しよりも先に行うべき処理を複数のバッファ回路において時間的に重複させて実行させておくことで、バスの使用効率が向上し、本実施形態と同様の効果を得ることができる。
(付記1)
ディスクリプタに対応するデータをメモリから読み出すDMA装置であって、
1つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、
前記複数のサブディスクリプタに対応するデータを前記メモリから読み出すための複数の読み出し要求を生成する複数のDMAコントローラと、
前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出すメモリコントローラと、
を備えたことを特徴とするDMA装置。
(付記2)
前記分割手段は、前記ディスクリプタを、前記DMAコントローラの数の前記サブディスクリプタに分割する
ことを特徴とする付記1に記載のDMA装置。
(付記3)
前記分割手段は、前記ディスクリプタを、所定の数の前記サブディスクリプタに分割する
ことを特徴とする付記1に記載のDMA装置。
(付記4)
前記複数のDMAコントローラの状態を管理するDMAコントローラ管理手段、
をさらに備え、
前記分割手段は、前記ディスクリプタを、前記DMAコントローラ管理手段によって前記メモリからデータを読み出すことが可能な状態と判断されたDMAコントローラの数に、前記サブディスクリプタを分割する
ことを特徴とする付記1に記載のDMA装置。
(付記5)
前記メモリコントローラは、複数のバッファ回路を含んで構成され、該複数のバッファ回路は、前記サブディスクリプタに対応するデータを、前記メモリから読み出して記憶する
ことを特徴とする付記1に記載のDMA装置。
(付記6)
前記バッファ回路は、他のバッファ回路が前記メモリからデータの読み出しを実行している間に、該メモリからデータを読み出すための準備処理を実行する
ことを特徴とする付記5に記載のDMA装置。
(付記7)
前記バッファ回路は、前記準備処理を実行した後、前記メモリとの間のバスの使用権限を付与されると、データを該メモリから読み出す処理を開始する
ことを特徴とする付記6に記載のDMA装置。
(付記8)
前記バッファ回路は、他のバッファ回路が前記メモリからデータの読み出しを実行している間に、該メモリとの間のバスの使用権限を付与されるための処理を実行する
ことを特徴とする付記5に記載のDMA装置。
(付記9)
前記複数のバッファ回路は、前記メモリからデータを読み出すための準備処理、該メモリとの間のバスの使用権限を付与されるための処理および該メモリからデータを読み出す一連の処理の一部を、他のバッファ回路の処理と互いに時間的に重複させて実行する
ことを特徴とする付記5に記載のDMA装置。
(付記10)
複数のDMAコントローラが、メモリコントローラを介して、ディスクリプタに対応するデータをメモリから読み出す処理において使用される、ディスクリプタ管理装置であって、
CPUからの指示に応じてディスクリプタを読み出す読み出し手段と、
読み出した1つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、
前記複数のサブディスクリプタを前記複数のDMAコントローラに送信する送信手段と、
前記複数のDMAコントローラの全てについて、前記複数のサブディスクリプタに対応するデータを読み出す処理が完了すると、DMA転送が完了したことの通知を前記CPUに対して行う通知手段と
を備えたことを特徴とするディスクリプタ管理装置。
(付記11)
ディスクリプタに対応するデータをメモリから読み出すDMA転送方法であって、
1つのディスクリプタを複数のサブディスクリプタに分割し、
前記複数のサブディスクリプタに基づいて、対応する複数の読み出し要求を生成し、
前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出す
処理を含むことを特徴とするDMA転送方法。
DMA転送に関わる回路の全体図である。 ディスクリプタ制御部についての構成図である。 ディスクリプタ制御部の状態遷移機械により管理される、ディスクリプタ管理装置の状態遷移図である。 分割部の回路構成図である。 DMA管理部の回路構成図である。 DMA管理部によって管理される、DMAコントローラの状態遷移図である。 本実施形態に係るディスクリプタ管理装置の基本動作のフローチャートである。 ディスクリプタを分割して生成されたサブディスクリプタを用いた、複数のDMAコントローラによるDMA転送のシーケンス図である。 本実施形態に係るDMA転送におけるデータフローを、ディスクリプタ管理装置の構成図に対応させて表した図である。 DMAコントローラが、読み出した1つのディスクリプタを基に所望のデータを読み出す、従来の処理を示したシーケンス図である。
符号の説明
1 ディスクリプタ管理装置
2 CPU
3 メモリ
4 DMAコントローラ
5 メモリコントローラ
6 コントロールバス
7 データバス
11 ディスクリプタ制御部
12 分割部
13 DMA管理部

Claims (5)

  1. ディスクリプタに対応するデータをメモリから読み出すDMA装置であって、
    1つのディスクリプタを複数のサブディスクリプタに分割し、前記複数のサブディスクリプタを複数のDMAコントローラに分配して転送する分割手段と、
    受信したサブディスクリプタに対応するデータ読み出し要求を、メモリコントローラに送信する前記複数のDMAコントローラと、
    記読み出し要求にしたがって、対応するデータを前記メモリから読み出す前記メモリコントローラと、を備え、
    前記メモリコントローラは、前記複数のDMAコントローラのうちの1つのDMAコントローラが持つサブディスクリプタに対応したデータを読み出しているときに、前記複数のDMAコントローラのうちの他のDMAコントローラからの前記読み出し要求を受信し、前記他のDMAコントローラが持つサブディスクリプタに対応したデータを読み出すための準備処理をバスの使用権付与待ち動作を行なっている状態まで進めて待機させることを特徴とする、DMA装置。
  2. 前記複数のDMAコントローラの状態を管理するDMAコントローラ管理手段、
    をさらに備え、
    前記分割手段は、前記ディスクリプタを、前記DMAコントローラ管理手段によって前記メモリからデータを読み出すことが可能な状態と判断されたDMAコントローラの数に、前記サブディスクリプタを分割することを特徴とする請求項1に記載のDMA装置。
  3. 前記メモリコントローラは、複数のバッファ回路を含んで構成され、該複数のバッファ回路は、前記サブディスクリプタに対応するデータを、前記メモリから読み出して記憶することを特徴とする請求項1に記載のDMA装置。
  4. 前記バッファ回路は、他のバッファ回路が前記メモリからデータの読み出しを実行している間に、前記準備処理をバスの使用権付与待ち動作を行なっている状態まで進めて待機させることを特徴とする、請求項3に記載のDMA装置。
  5. 前記バッファ回路は、前記準備処理をバスの使用権付与待ち動作を行なっている状態まで進めて待機させた後、前記メモリとの間のバスの使用権限を付与されると、データを該メモリから読み出す処理を開始することを特徴とする請求項4に記載のDMA装置。
JP2005008008A 2005-01-14 2005-01-14 Dma装置 Expired - Fee Related JP4456490B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005008008A JP4456490B2 (ja) 2005-01-14 2005-01-14 Dma装置
US11/196,469 US7640374B2 (en) 2005-01-14 2005-08-04 Data transfer apparatus by direct memory access controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005008008A JP4456490B2 (ja) 2005-01-14 2005-01-14 Dma装置

Publications (2)

Publication Number Publication Date
JP2006195823A JP2006195823A (ja) 2006-07-27
JP4456490B2 true JP4456490B2 (ja) 2010-04-28

Family

ID=36685280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005008008A Expired - Fee Related JP4456490B2 (ja) 2005-01-14 2005-01-14 Dma装置

Country Status (2)

Country Link
US (1) US7640374B2 (ja)
JP (1) JP4456490B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268753A (ja) * 2005-03-25 2006-10-05 Fujitsu Ltd Dma回路及びコンピュータシステム
JP4836488B2 (ja) * 2005-05-09 2011-12-14 株式会社東芝 データ転送装置及び半導体集積回路装置
JP2008210280A (ja) * 2007-02-27 2008-09-11 Fujitsu Ltd 半導体装置及びdmaコントローラ
KR20080105390A (ko) * 2007-05-30 2008-12-04 삼성전자주식회사 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
JP4847407B2 (ja) * 2007-07-19 2011-12-28 株式会社リコー データ処理装置及びデータ処理方法
JP4839489B2 (ja) * 2008-02-06 2011-12-21 Necシステムテクノロジー株式会社 ディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラム
US8504736B2 (en) * 2008-05-30 2013-08-06 Sony Computer Entertainment America Inc. File input/output scheduler
US20100088433A1 (en) * 2008-10-03 2010-04-08 An Chen Computer Co., Ltd. Direct memory access (DMA) system
US8086766B2 (en) * 2010-01-15 2011-12-27 International Business Machines Corporation Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
US8868852B2 (en) 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US8880651B2 (en) 2011-07-25 2014-11-04 Sony Computer Entertainment America, LLC Method and system for efficient download of data package
JP5651622B2 (ja) * 2012-03-07 2015-01-14 株式会社東芝 データ伝送装置、データ伝送方法、及びプログラム
TW201339842A (zh) * 2012-03-20 2013-10-01 Copystar Backup & Storage Corp 協同式匯流排仲裁多工架構及依該架構所進行之資料存取仲裁方法
US8775694B2 (en) * 2012-09-21 2014-07-08 Atmel Corporation ADC sequencing
CN107239420B (zh) * 2012-11-21 2020-05-05 相干逻辑公司 具有散布处理器dma-fifo的处理系统
KR20150122825A (ko) * 2014-04-23 2015-11-03 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
KR102180972B1 (ko) * 2014-04-23 2020-11-20 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US9684615B1 (en) * 2015-01-08 2017-06-20 Altera Corporation Apparatus and methods for multiple-channel direct memory access
US9715464B2 (en) 2015-03-27 2017-07-25 Microsoft Technology Licensing, Llc Direct memory access descriptor processing
JP6698353B2 (ja) * 2016-01-05 2020-05-27 Necプラットフォームズ株式会社 情報処理装置、dma転送制御方法およびdma転送制御プログラム
JP2018116550A (ja) 2017-01-19 2018-07-26 Necプラットフォームズ株式会社 転送制御装置
US11604748B2 (en) * 2020-10-30 2023-03-14 Microsoft Technology Licensing, Llc Interconnect for direct memory access controllers
US20230100586A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Circuitry and methods for accelerating streaming data-transformation operations
US20230236889A1 (en) * 2022-01-27 2023-07-27 Microsoft Technology Licensing, Llc Distributed accelerator
CN117112465B (zh) * 2023-10-16 2024-10-15 北京象帝先计算技术有限公司 Dma调度器及方法、片上系统、电子组件及设备
CN120567801B (zh) * 2025-07-31 2025-11-14 浪潮电子信息产业股份有限公司 一种数据传输方法、系统、产品、设备、介质及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696007A (ja) 1992-09-17 1994-04-08 Fujitsu Ltd Dma転送方式
JPH1049479A (ja) 1996-08-01 1998-02-20 Matsushita Electric Ind Co Ltd マスタデバイス
DE60124484T2 (de) * 2000-09-29 2007-09-06 Ricoh Company, Ltd. Datenverarbeitungsvorrichtung und DMA-Datenübertragungsverfahren
US7034838B2 (en) * 2001-12-27 2006-04-25 Ricoh Company, Ltd. Information processing apparatus
JP4148680B2 (ja) 2001-12-27 2008-09-10 株式会社リコー 画像処理装置
US7228550B1 (en) * 2002-01-07 2007-06-05 Slt Logic, Llc System and method for making communication streams available to processes executing under control of an operating system but without the intervention of the operating system
JP2004040637A (ja) 2002-07-05 2004-02-05 Canon Inc パケット通信装置及びパケット通信制御方法
US7185151B2 (en) * 2002-09-19 2007-02-27 Ricoh Company, Ltd. Data processing device characterized in its data transfer method, program for executing on a computer to perform functions of the device, and computer readable recording medium storing such a program

Also Published As

Publication number Publication date
US7640374B2 (en) 2009-12-29
JP2006195823A (ja) 2006-07-27
US20060161694A1 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
JP4456490B2 (ja) Dma装置
JP4480427B2 (ja) リソース管理装置
JP2008242983A (ja) データ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラム
JP5040050B2 (ja) 複数チャネルdmaコントローラおよびプロセッサシステム
JP2013097659A (ja) 半導体データ処理装置、タイムトリガ通信システム及び通信システム
CN1728118B (zh) 资源分配管理方法和设备
KR100708096B1 (ko) 버스 시스템 및 그 실행 순서 조정방법
JP2007079789A (ja) 計算機システム及びイベント処理方法
CN1262934C (zh) 具有不同资源访问方案的系统集成代理程序
JP2012043375A (ja) データ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置
CN115563038A (zh) 基于dma控制器的数据处理系统、方法和数据处理设备
US8775767B2 (en) Method and system for allocating memory to a pipeline
CN106681948A (zh) 可编程逻辑器件的逻辑控制方法及装置
CN119105980B (zh) 一种dma系统和数据转存方法
JP2006338538A (ja) ストリームプロセッサ
US20090119429A1 (en) Semiconductor integrated circuit
JP2005293427A (ja) データ転送処理装置及びデータ転送処理方法
CN101647002A (zh) 多处理系统及方法
JP6817827B2 (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
US8135878B1 (en) Method and apparatus for improving throughput on a common bus
JP2006079394A (ja) データ処理装置
JP2007249635A (ja) データ転送装置及びデータ転送方法
CN120448074B (zh) 基于执行引擎的数据处理方法、设备、存储介质及产品
JP4170330B2 (ja) 情報処理装置
JPH11175464A (ja) 調停装置および方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090831

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: 20100202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100205

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130212

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4456490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140212

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees