(57)【要約】【課題】  ＤＭＡ転送におけるスループットを向上させることのできる技術を提供する。【解決手段】  ディスクリプタに対応するデータをメモリから読み出すＤＭＡ装置であって、ディスクリプタ管理装置１の分割部１２が、１つのディスクリプタを複数のサブディスクリプタに分割する。複数のＤＭＡコントローラ４が、複数のサブディスクリプタに対応するデータをメモリ３から読み出すための複数の読み出し要求を生成する。メモリコントローラ５が、複数の読み出し要求にしたがって、対応するデータをメモリ３から読み出す。【選択図】図１
2006195823.tif 000002
【特許請求の範囲】
【請求項１】
ディスクリプタに対応するデータをメモリから読み出すＤＭＡ装置であって、
１つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、
前記複数のサブディスクリプタに対応するデータを前記メモリから読み出すための複数の読み出し要求を生成する複数のＤＭＡコントローラと、
前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出すメモリコントローラと、
を備えたことを特徴とするＤＭＡ装置。
【請求項２】
前記複数のＤＭＡコントローラの状態を管理するＤＭＡコントローラ管理手段、
をさらに備え、
前記分割手段は、前記ディスクリプタを、前記ＤＭＡコントローラ管理手段によって前記メモリからデータを読み出すことが可能な状態と判断されたＤＭＡコントローラの数に、前記サブディスクリプタを分割する
ことを特徴とする請求項１に記載のＤＭＡ装置。
【請求項３】
前記メモリコントローラは、複数のバッファ回路を含んで構成され、該複数のバッファ回路は、前記サブディスクリプタに対応するデータを、前記メモリから読み出して記憶する
ことを特徴とする請求項１に記載のＤＭＡ装置。
【請求項４】
前記バッファ回路は、他のバッファ回路が前記メモリからデータの読み出しを実行している間に、該メモリからデータを読み出すための準備処理を実行する
ことを特徴とする請求項３に記載のＤＭＡ装置。
【請求項５】
前記バッファ回路は、前記準備処理を実行した後、前記メモリとの間のバスの使用権限を付与されると、データを該メモリから読み出す処理を開始する
ことを特徴とする請求項４に記載のＤＭＡ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ（Direct Memory Access）制御によるデータ転送方式に関する。
【背景技術】
【０００２】
従来より、メモリからデータを読み出す際のＣＰＵの負荷を軽くするための技術としてＤＭＡ転送が広く知られている。ＤＭＡ転送では、ＤＭＡコントローラが、メモリ領域管理情報であるディスクリプタを用いて所望のデータを読み出す（例えば、特許文献１）。なお、特許文献１においては、メモリから取り出したディスクリプタを基にデータの格納領域を参照し、画像メモリの特定の領域から画像データが読み出される。ＤＭＡコントローラのディスクリプタを用いてデータの転送単位を分割し、これを時分割に実行することで、複数のデータ転送動作をあたかも平行して実行しているように動作させることができる。
【０００３】
図１０は、ＤＭＡコントローラが、ディスクリプタにより指定されたデータを読み出す、従来の処理を示したシーケンス図である。例えば接続されたキーボード、マウス等の他のデバイスから、所望のデータを読み出すよう命令が入力されると、ＤＭＡコントローラ４が、まずディスクリプタを読み出す。次に、そのディスクリプタが指し示すメモリの所定の領域からデータを読み出す。読み出されたデータは、転送先のデバイスに転送される。
【０００４】
図１０中の括弧書きで示された番号は、ＤＭＡ転送処理の実行順を示す。以下、図中の番号に沿って、従来技術に係るＤＭＡ転送処理について説明する。
＜１＞ＣＰＵ２は、ＤＭＡコントローラ４に対して、メモリ３に格納されたディスクリプタを読み出すよう指示する。
【０００５】
＜２＞ＤＭＡコントローラ４が、メモリコントローラ５に対して、ディスクリプタの読み出しを要求する。
＜３＞ＤＭＡコントローラ４は、メモリコントローラ５を介して、メモリ３から読み出されたディスクリプタを受信する。
【０００６】
＜４＞ＤＭＡコントローラ４が、メモリコントローラ５に対して、メモリ３の、受信したディスクリプタが指し示す領域に格納された、データの読み出しを要求する。メモリコントローラ５は、ＤＭＡコントローラ４からデータの読み出し要求を受信してからメモリ３に対してデータ読み出し要求を送信するまでの間、すなわち実際にメモリ３からデータを読み出す処理を実行する前に、事前準備処理およびバスの使用権が付与されるのを待機する処理を実行する。バスの使用権が与えられると、＜５＞の処理に進む。
【０００７】
＜５＞メモリコントローラ５が、メモリ３からのデータの読み出しを開始する。
＜６＞メモリ３から、ディスクリプタに基づいてデータが読み出される。メモリ３から取り出されたデータは、データバス７を介してメモリコントローラ５に転送され、データは、メモリコントローラ５のプリフェッチバッファ（pre-fetch buffer）に格納される。
【０００８】
＜７＞メモリコントローラ５は、プリフェッチバッファに格納されたデータを、順次ＤＭＡコントローラ４に転送する。ここで、プリフェッチバッファにデータを格納する処理速度とプリフェッチバッファのデータをＤＭＡコントローラ４に転送する処理速度とでは、一般に転送処理に要する速度の方が遅い。このため、メモリ３から取得したデータが次第にプリフェッチバッファに蓄積されていく。このため、メモリコントローラ５は、プリフェッチバッファのデータ量が所定値を超えると、一旦、ディスクリプタに対応するメモリ３からのデータ読み出し要求を解除する。すなわち、データバス７を開放する。
【０００９】
＜８＞メモリコントローラ５は、未転送のデータについて引き続きメモリ３から読み出すための事前準備処理を実行し、再度コントロールバス６およびデータバス７の使用権を得るための、バス使用要求を行う。
【００１０】
＜９＞コントロールバス６およびデータバス７の使用権を得た後、未転送のデータをメモリ３から読み出し、データバス７を介して、順次ＤＭＡコントローラ４に対して転送する。
【００１１】
以下、ＤＭＡコントローラ４が要求した全てのデータがメモリ３から読み出されるまで、上記＜５＞から＜８＞と同様の処理が繰り返される。
＜１０＞ＤＭＡコントローラ４が要求したデータ量分のデータの、ＤＭＡコントローラ４への転送が完了すると、ＤＭＡコントローラ４は、ＣＰＵ２に対して、ＤＭＡ転送完了通知を送信して、処理を終了する。メモリ３から読み出されたデータは、ＤＭＡコントローラ４から所定のデバイスに転送される。
【特許文献１】特開２００３−１９８８１７号公報（図４、０００３段落）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従来のＤＭＡ転送方法においては、図１０に示されるように、１つのディスクリプタに対応するメモリ３からのデータ読み出しが複数回実行されるときは、その都度、事前準備処理を実行し、バスの使用権が付与されるまで待機する必要がある。ここで、メモリコントローラ５が事前準備処理実行中およびバスの使用権付与待ち状態にある間は、データバス７は使用されていない。すなわち、従来技術においては、データバス７が使用されていない期間は、所定のデータ量をメモリ３から読み出してメモリコントローラ５に転送するごとに発生することになる。
【００１３】
メモリコントローラ５がメモリ３から未転送のデータを読み出すよう要求するごとに、上記の事前準備処理およびコントロールバス６およびデータバス７の使用権取得のための処理を実行する必要がある。このため、所定のデータ量のデータをメモリ３からメモリコントローラ５のプリフェッチバッファに取り出すごとに、メモリレイテンシに起因するデータバス７がデータ転送に使用されていない期間が生じる。バスの使用効率、すなわちＤＭＡ転送におけるスループットの向上の観点からは、データバス７が使用されていない期間を短縮させることが好ましい。
【００１４】
本発明は、１つのディスクリプタに対応するデータをＤＭＡ転送するよう要求された場合において、ＤＭＡ転送におけるスループットを向上させることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明は、ディスクリプタに対応するデータをメモリから読み出すＤＭＡ装置であって、１つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、前記複数のサブディスクリプタに対応するデータを前記メモリから読み出すための複数の読み出し要求を生成する複数のＤＭＡコントローラと、前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出すメモリコントローラとを備えた構成とする。
【００１６】
ディスクリプタに対応するデータをメモリから読み出す際に、そのディスクリプタを複数のサブディスクリプタに分割する。１つのサブディスクリプタを受信したＤＭＡコントローラは、そのサブディスクリプタに対応するデータをメモリから読み出すための、読み出し要求を生成する。メモリコントローラは、複数のＤＭＡコントローラから送信された読み出し要求を受信すると、それぞれのサブディスクリプタに対応するデータを読み出して対応するＤＭＡコントローラに転送する。複数のサブディスクリプタに対応するデータの読み出しに関わる処理が互いに一部重複するため、メモリレイテンシが吸収され、ＤＭＡ転送におけるスループットを向上させることができる。
【００１７】
前記複数のＤＭＡコントローラの状態を管理するＤＭＡコントローラ管理手段、をさらに備え、前記分割手段は、前記ディスクリプタを、前記ＤＭＡコントローラ管理手段によって前記メモリからデータを読み出すことが可能な状態と判断されたＤＭＡコントローラの数に、前記サブディスクリプタを分割することとしてもよい。ＤＭＡコントローラ管理手段によって、データの読み出しが可能なＤＭＡコントローラの数が把握されるので、ディスクリプタを適切な数に分割することができる。
【００１８】
前記メモリコントローラは、複数のバッファ回路を含んで構成され、該複数のバッファ回路は、前記サブディスクリプタに対応するデータを、前記メモリから読み出して記憶することとしてもよい。さらに、前記バッファ回路は、他のバッファ回路がデータの前記メモリからの読み出しを実行している間に、該メモリからデータを読み出すための準備処理を実行することとしてもよい。あるいは、前記バッファ回路は、前記準備処理を実行した後、前記メモリとの間のバスの使用権限を付与されると、データを該メモリから読み出す処理を開始することとしてもよい。
【００１９】
このような構成とすることにより、他のバッファ回路がサブディスクリプタに基づいたデータの読み出しを行っている間に、予めデータ読み出しのための準備処理を実行させておくことができる。他のバッファ回路についてデータの読み出しが完了すると、すぐにデータの読み出しを開始することができるので、バスの使用効率を向上させることができる。
【００２０】
なお、本発明は、上記のＤＭＡ装置に限られない。上記のディスクリプタを分割したサブディスクリプタに基づいて、サブディスクリプタに対応するデータをメモリから読み出す処理を実行する方法、およびサブディスクリプタを生成してかかる処理を実現させる装置等であっても、本発明に含まれる。
【発明の効果】
【００２１】
本発明によれば、ディスクリプタを分割し、その分割されたディスクリプタ（サブディスクリプタ）を用いてデータの読み出しをメモリコントローラに対して実行させる。複数のメモリコントローラにおいて、メモリレイテンシを引き起こす処理の一部が時間的に重複して実行されるため、メモリコントローラがメモリからデータを読み出す際のデータの伝送路であるデータバスの未使用期間が縮小され、ＤＭＡ転送処理におけるスループットを向上させることができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図１は、ＤＭＡ転送に関わる回路の全体図である。ディスクリプタ管理装置１、メモリ３、ＤＭＡコントローラ４およびメモリコントローラ５を含んで構成される。
【００２３】
メモリ３に格納される情報には、例えば画像データ等の各種データ、およびこれらデータが格納されるメモリ領域管理情報である、ディスクリプタ等がある。ＤＭＡコントローラ４は、ＤＭＡ転送においては、ディスクリプタに基づいて、各種データの格納されているアドレスを決定し、読み出したデータを指定されたデバイスに転送する。ＤＭＡコントローラ４は、本実施形態においては複数備えられる。メモリコントローラ５は、コントロールバス６を介してメモリ３に対して制御信号を送受信し、データバス７を介してメモリ３とデータを送受信する。本発明に係るＤＭＡ転送では、ＣＰＵ２が所定のディスクリプタ（メモリ領域管理情報）を読み出すよう指示を出すと、ディスクリプタ管理装置１がそのディスクリプタを読み出して分割する。そして、ＤＭＡコントローラ４は、そのディスクリプタを分割することによって生成された複数のメモリ領域管理情報に基づいて、メモリ３からデータを読み出し、デバイスに対して読み出したデータを転送する。ＤＭＡコントローラ４がデータの読み出しの際に使用する、分割されたアドレス情報等のメモリ領域管理情報を、本実施形態においては、サブディスクリプタと定義する。
【００２４】
ディスクリプタ管理装置１は、ディスクリプタ制御部１１、分割部１２およびＤＭＡ管理部１３を含んで構成される。図２から図６を参照して、ディスクリプタ管理装置１について説明する。
【００２５】
図２は、ディスクリプタ制御部１１についての構成図である。ディスクリプタ制御部１１は、ＣＰＵ２からのディスクリプタ読み出し指示に基づいて、メモリコントローラ５に対してディスクリプタを読み出すよう要求する。また、ディスクリプタに対応するデータ転送が終了したことを認識すると、ＤＭＡ転送の処理が完了したことをＣＰＵ２に対して通知する。内部に備えた状態遷移機械１１０により、ディスクリプタ管理装置１の状態を管理する。
【００２６】
図３は、状態遷移機械１１０により管理される、ディスクリプタ管理装置１の状態遷移図である。図３に示されるように、ディスクリプタ管理装置１は、アイドル状態、要求状態、アクティブ状態および完了状態の4つの状態を順に遷移する。状態遷移機械１１０は、所定の時間間隔（１周期）で装置の状態を監視しており、4つの状態それぞれの場合における所定の条件を満たすと、次の状態に遷移したと認識する。
【００２７】
アイドル状態では、ディスクリプタ管理装置１は、ＤＭＡ転送を実行しておらず、この状態にあるときにＣＰＵ２からディスクリプタ読み出しの指示を受けると、本実施形態に係るＤＭＡ転送を開始する。要求状態では、メモリコントローラ５に対してディスクリプタの読み出し要求を送信し、ディスクリプタの受信を待機している。１周期後、状態は要求状態からアクティブ状態に遷移する。
【００２８】
アクティブ状態では、メモリ３からＤＭＡコントローラ４に対してデータを転送中であり、ディスクリプタ管理装置１は、ＤＭＡ転送が完了して、転送に関わるＤＭＡコントローラ４から処理が完了したことの通知の受信を待機する。転送完了通知を受信すると、アクティブ状態から完了状態に遷移する。
【００２９】
完了状態では、ＤＭＡ転送が完了したことをＣＰＵ２に対して通知する。１周期経過後、状態はアイドル状態に遷移する。
図４は、分割部１２の回路構成図である。分割部１２は、メモリ３から読み出したディスクリプタを、メモリコントローラ５を介して受信し、受信したディスクリプタを複数のサブディスクリプタに分割する。本実施形態においては、以下、分割数を３とする。ディスクリプタを３つに分割することで生成されたサブディスクリプタは、それぞれＤＭＡ転送を実行する３つのＤＭＡコントローラ４に割り当てられる。
【００３０】
３つに分割されたサブディスクリプタ０、１および２は、例えばサブディスクリプタ１２１に示されるデータ構造を備える。図４に示されるように、メモリ３に対して要求する、読み出すデータのサイズ、メモリ３上のアドレス、転送先のアドレス等の情報を含んで構成される。例えば１０キロバイトのデータを読み出す場合、１つのサブディスクリプタにより読み出されるデータサイズは、例えば、１０／３＝３．３キロバイトである。サブディスクリプタを割り当てられたＤＭＡコントローラ４は、格納された情報に基づいて、メモリ３上のアドレスから所定のサイズのデータを読み出し、転送先のアドレスに対して読み出したデータを転送する。
【００３１】
図５は、ＤＭＡ管理部１３の回路構成図である。ＤＭＡ管理部１３は、接続された複数のＤＭＡコントローラ４から、ＤＭＡコントローラの状態を伝えるための信号を受信する。ＤＭＡコントローラ４から受信した信号は、内部に備えた状態遷移機械１３０に与えられる。状態遷移機械１３０は、各ＤＭＡコントローラ４の状態を管理し、その情報をディスクリプタ制御部１１に送信する。ディスクリプタ制御部１１は、ＤＭＡコントローラ４の状態から、ＤＭＡ転送中か否か等を判断する。
【００３２】
図６は、ＤＭＡ管理部１３によって管理される、ＤＭＡコントローラ４の状態遷移図である。図６に示されるように、ＤＭＡコントローラ４は、アイドル状態、使用状態および完了状態の３つの状態を順に遷移する。ＤＭＡ管理部１３の状態遷移機械１３０は、所定の時間間隔（１周期）でＤＭＡコントローラ４の状態を監視しており、３つの状態それぞれの場合における所定の条件を満たすと、次の状態に遷移したと認識する。なお、監視されるＤＭＡコントローラ４は、ディスクリプタ管理装置１に接続されたＤＭＡコントローラ４全てについてであってもよいし、所定の数分のＤＭＡコントローラ４についてであってもよい。
【００３３】
アイドル状態では、管理すべき複数のＤＭＡコントローラ４の全てが使用されていない状態にある。アイドル状態のＤＭＡコントローラ４において、ＤＭＡ転送が開始されると、１周期経過後、使用中状態に遷移する。使用中状態では、ＤＭＡコントローラ４がＤＭＡ転送処理を実行中であり、転送処理に関わる全てのＤＭＡコントローラ４についてその処理が完了した場合は、完了状態に遷移する。完了状態では、処理に関わる全てのＤＭＡコントローラ４について、ＤＭＡ転送処理が完了したことをディスクリプタ制御部１１に対して通知する。１周期経過後、状態はアイドル状態に遷移する。
【００３４】
図７は、本実施形態に係るディスクリプタ管理装置１の基本動作のフローチャートである。図７を参照して、ディスクリプタ管理装置１がディスクリプタを分割してサブディスクリプタを生成し、ＤＭＡ転送を行う方法についてその概要を説明する。
【００３５】
まず、ＣＰＵ２からの指示を受けると、ステップＳ１で、ディスクリプタの読み出し処理を実行する。ステップＳ２で、ディスクリプタに関わるディスクリプタ情報を取得する。ステップＳ３で、受信したディスクリプタを、所定の数で分割し、複数のサブディスクリプタを生成する。ステップＳ４で、生成した複数のサブディスクリプタをそれぞれ対応するＤＭＡコントローラ４に転送し、ＤＭＡコントローラ４においてＤＭＡ転送を開始するための、ＤＭＡスタートの指示を送信する。
【００３６】
ＤＭＡ転送が開始されると、ディスクリプタ管理装置１では、ステップＳ５で、アクティブ状態にある全てのＤＭＡコントローラ４について、ＤＭＡ転送が終了待ちの動作に入る。アクティブ状態にある全てのＤＭＡコントローラ４のＤＭＡ転送が完了すると、ステップＳ６で、ＤＭＡアクセス終了通知をＣＰＵ２に対して送信し、処理を終了する。
【００３７】
図８は、ディスクリプタを分割して生成されたサブディスクリプタを用いた、複数のＤＭＡコントローラ４によるＤＭＡ転送のシーケンス図であり、図９は、本実施形態に係るＤＭＡ転送におけるデータフローを、ディスクリプタ管理装置１の構成図に対応させて表した図である。なお、図９には、図８の括弧書きの処理手順が対応させて示されている。図８および図９を参照して、本実施形態に係るディスクリプタ管理装置１およびこれに接続された他の装置の動作処理について、図中の括弧書きで示された番号に沿ってさらに詳しく説明する。
【００３８】
＜１＞ＣＰＵ２が、ディスクリプタ管理装置１に対して、ディスクリプタ読み出しを指示する。
＜２＞ＤＭＡ管理部１３から通知されたＤＭＡコントローラ４の状態がアイドル状態である場合、ディスクリプタ制御部１１は、ディスクリプタ読み出し要求をメモリコントローラ５に対して送信する。
【００３９】
＜３＞ディスクリプタ管理装置１が、メモリ３から読み出されたディスクリプタを受信する。
＜４＞分割部１２が、受信したディスクリプタを３つに分割し、３つのサブディスクリプタ０、１および２を生成する。
【００４０】
＜５＞３つのアイドル状態のＤＭＡコントローラ４に対して、生成したサブディスクリプタ０、１および２をそれぞれ送信し、ＤＭＡ転送を開始するよう要求するための、ＤＭＡスタート指示を送信する。
【００４１】
＜６＞各ＤＭＡコントローラ４が、メモリコントローラ５に対してメモリ読み出し要求を送信する。読み出し要求を受信したメモリコントローラ５においては、受信した３つの読み出し要求に対応させて、キューを割り当てる。ここで、キューは、メモリ３からデータを読み出すに当たって、順に３つの処理動作を行う。本実施形態においては、それぞれを、事前準備処理動作、バス使用権付与待ち動作および読み出し動作とする。ここで、本実施形態に係るメモリレイテンシは、事前準備処理動作およびバス使用権付与待ち動作を実行する期間に相当する。本実施形態において割り当てられた３つのキューは、それぞれが他のキューとは独立して事前準備処理動作およびバス使用権付与待ち動作を実行し、他のキューが読み出し動作を行っていないことを認識すると、バス使用権を得て読み出し動作を実行する。３つのキューのうち、先にＤＭＡコントローラ４から読み出し要求を受けて一連の動作処理の実行を開始したキューから順に、キュー（０）、キュー（１）およびキュー（２）とする。３つのキューは、それぞれが、事前準備処理動作を実行し、バス使用権付与待ち動作に入る。
【００４２】
＜７＞まず、キュー（０）が、バスの使用権を取得し、読み出し処理を実行する。
＜８＞メモリ３から読み出された、サブディスクリプタ０に対応するデータがメモリコントローラ５のプリフェッチバッファに格納される。なお、プリフェッチバッファはメモリコントローラ５に複数個、本実施形態においては３個備えられており、３つのキューによって読み出されたデータがそれぞれのプリフェッチバッファに格納される。キューおよびプリフェッチバッファは、本実施形態においてはバッファ回路として動作し、バッファ回路は、データの読み出しに関する一連の処理の実行および読み出したデータの格納に用いられる。
【００４３】
＜９＞プリフェッチバッファに格納されたデータは、順次ＤＭＡコントローラ４に転送される。ＤＭＡコントローラ４は、指定された転送先のデバイスにデータを転送する。しかし、プリフェッチバッファにデータを格納する処理速度と、プリフェッチバッファからデータを読み出してデバイスに転送する処理速度とでは、一般に、転送に要する速度の方が遅い。このため、プリフェッチバッファには次第にデータが蓄積されていく。このため、メモリコントローラ５は、プリフェッチバッファのデータ量が所定値を超えると、一旦、サブディスクリプタ０に対応するメモリ読み出し要求を解除する。すなわち、データバス７を開放する。なお、本実施形態においては、読み出すデータ量を１０キロバイト、プリフェッチバッファに格納し得るデータ容量を２キロバイトとする。
【００４４】
＜１０＞バスが開放されると、バスの使用権の付与待ち状態にあったキュー（１）がバスの使用権を得て、読み出し処理を開始する。キュー（１）は、上記＜６＞の処理において、事前準備処理動作を完了し、バス使用権付与待ち動作を行っているところであるので、バスの使用権が付与されると即時にデータの読み出し動作を開始する。なお、キュー（０）は、未受信のデータをメモリ３から読み出すため、再度、事前準備処理動作およびバス使用権付与待ち動作を行い、バスの使用権が付与されるのを待機する。
【００４５】
＜１１＞メモリ３から読み出された、サブディスクリプタ１に対応するデータがメモリコントローラ５のプリフェッチバッファに格納される。
＜１２＞上記＜９＞の処理と同様に、プリフェッチバッファに格納されたデータは、順次ＤＭＡコントローラ４に転送される。メモリコントローラ５は、プリフェッチバッファの容量を超えない量である２キロバイトのデータを読み出すと、一旦、サブディスクリプタ１に対応するメモリ読み出し要求を解除する。
【００４６】
＜１３＞バスが開放されると、バスの使用権の付与待ち状態にあったキュー（２）がバスの使用権を得て、読み出し処理を開始する。上記＜１０＞の処理におけるキュー（１）と同様に、キュー（２）は、上記＜６＞の処理において、事前準備処理動作を完了し、バス使用権付与待ち動作を行っているところであるので、バスの使用権が付与されると即時にデータの読み出し動作を開始する。キュー（１）は、上記＜１０＞の処理におけるキュー（０）と同様の処理を実行し、バスの使用権が付与されるのを待機する。
【００４７】
以降、同様に所定の容量のデータがメモリ３から読み出されてメモリコントローラ５のプリフェッチバッファに格納されると、バスが一旦開放され、次のバス使用権付与待ち状態にあるキューがバスの使用権を獲得し、読み出し処理を開始する。プリフェッチバッファに格納されたデータは、順次対応するＤＭＡコントローラ４に転送される。
【００４８】
＜１４＞サブディスクリプタ０に対応する、２＋１．３＝３．３キロバイト分のデータについてＤＭＡ転送が完了する。ＤＭＡコントローラ４は、ディスクリプタ管理装置１に対して完了通知を送信する。
【００４９】
＜１５＞サブディスクリプタ１に対応する、２＋１．３＝３．３キロバイト分のデータの転送が完了し、完了通知が送信される。
＜１６＞サブディスクリプタ２に対応する、２＋１．３＝３．３キロバイト分のデータの転送が完了し、完了通知が送信される。
【００５０】
＜１７＞３つのＤＭＡコントローラ４から完了通知を受信すると、ディスクリプタ管理装置１のＤＭＡ管理部１３は、上記＜２＞で読み出した１つのディスクリプタに係るＤＭＡ転送が完了したと認識し、ディスクリプタ制御部１１に処理完了の通知を行う。
【００５１】
＜１８＞ディスクリプタ制御部１１は、ＣＰＵ２に対し、ＤＭＡ転送終了通知を送信する。
このように、１つのディスクリプタに対応するメモリ３からのデータ読み出しが、複数のサブディスクリプタによって複数回実行されるときは、その都度事前準備処理、バス使用権付与待ち動作を実行しなくとも、先立ってこれらの処理が実行されている。このため、バス使用権を付与されたバッファ回路においては、すぐにデータの読み出し処理を実行することができ、バスの未使用時間を短くすることができる。
【００５２】
図９に示されるように、本実施形態に係るＤＭＡ転送によれば、ディスクリプタ管理装置１が、データの読み出しにおいてメモリの参照領域を示すディスクリプタを複数のサブディスクリプタに分割し、複数のＤＭＡコントローラ４にサブディスクリプタを分配する。サブディスクリプタを受信したそれぞれのＤＭＡコントローラ４は、そのサブディスクリプタを用いてデータ読み出しの処理を実行する。図９の例では、アイドル状態のＤＭＡコントローラ（０）、（１）および（２）に対し、スタート指示を出し、１０／３＝３．３キロバイトずつサブディスクリプタに基づきメモリから読み出す。
【００５３】
データ読み出しの処理を実行するメモリコントローラ５においては、実際にメモリ３からデータを取り出し、自装置のプリフェッチバッファに格納する処理を実行するに先立って、上記の事前準備処理を実行し、さらに、コントロールバス６やデータバス７の使用権を得るために待機する必要がある。サブディスクリプタを受信した複数のＤＭＡコントローラ４から並行してデータ読み出し要求を受信し、複数のバッファ回路で事前準備処理やバス使用権を付与されるまでの待機処理を並行させて行うことで、１つのディスクリプタに対するデータの読み出しであっても、複数のバッファ回路について、事前準備処理やバス使用権付与待ちを時間的に重複させて実行することが可能となる。このため、メモリコントローラ５においては、それぞれのバッファ回路はバスの使用権を付与されるとすぐにデータ読み出しの処理を実行することができ、必然的に発生するメモリレイテンシが吸収され、バスが使用されていない期間を小さく抑えられる。これにより、ＤＭＡ転送におけるスループットを向上させることができる。
【００５４】
なお、上記実施形態においては、ディスクリプタの分割数を３として説明したが、これに限られない。例えば、ディスクリプタ管理装置１に接続されたＤＭＡコントローラ４の総数を分割数としてもよい。ディスクリプタを最大数で分割することで、ＤＭＡ装置としてのスループットを最大限に向上させることができる。あるいは、ＤＭＡ管理部１３で、アイドル状態と判断されたＤＭＡコントローラ４の総数で分割することとしてもよい。ある時点において、ＤＭＡ転送を実行可能な状態にある、適切なＤＭＡコントローラの数でディスクリプタを分割する。これにより、その時点においてスループットを最大限に向上させることができる。
【００５５】
また、上記実施形態においては、事前準備処理が完了し、さらにバスの使用権付与待ちの状態にあるときに、バスの使用権が付与されたことを契機としてバッファ回路がデータ読み出しを開始しているが、これに限られない。事前準備処理やバス使用権の付与待ち等、データ読み出しよりも先に行うべき処理を複数のバッファ回路において時間的に重複させて実行させておくことで、バスの使用効率が向上し、本実施形態と同様の効果を得ることができる。
【００５６】
（付記１）
ディスクリプタに対応するデータをメモリから読み出すＤＭＡ装置であって、
１つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、
前記複数のサブディスクリプタに対応するデータを前記メモリから読み出すための複数の読み出し要求を生成する複数のＤＭＡコントローラと、
前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出すメモリコントローラと、
を備えたことを特徴とするＤＭＡ装置。
【００５７】
（付記２）
前記分割手段は、前記ディスクリプタを、前記ＤＭＡコントローラの数の前記サブディスクリプタに分割する
ことを特徴とする付記１に記載のＤＭＡ装置。
【００５８】
（付記３）
前記分割手段は、前記ディスクリプタを、所定の数の前記サブディスクリプタに分割する
ことを特徴とする付記１に記載のＤＭＡ装置。
【００５９】
（付記４）
前記複数のＤＭＡコントローラの状態を管理するＤＭＡコントローラ管理手段、
をさらに備え、
前記分割手段は、前記ディスクリプタを、前記ＤＭＡコントローラ管理手段によって前記メモリからデータを読み出すことが可能な状態と判断されたＤＭＡコントローラの数に、前記サブディスクリプタを分割する
ことを特徴とする付記１に記載のＤＭＡ装置。
【００６０】
（付記５）
前記メモリコントローラは、複数のバッファ回路を含んで構成され、該複数のバッファ回路は、前記サブディスクリプタに対応するデータを、前記メモリから読み出して記憶する
ことを特徴とする付記１に記載のＤＭＡ装置。
【００６１】
（付記６）
前記バッファ回路は、他のバッファ回路が前記メモリからデータの読み出しを実行している間に、該メモリからデータを読み出すための準備処理を実行する
ことを特徴とする付記５に記載のＤＭＡ装置。
【００６２】
（付記７）
前記バッファ回路は、前記準備処理を実行した後、前記メモリとの間のバスの使用権限を付与されると、データを該メモリから読み出す処理を開始する
ことを特徴とする付記６に記載のＤＭＡ装置。
【００６３】
（付記８）
前記バッファ回路は、他のバッファ回路が前記メモリからデータの読み出しを実行している間に、該メモリとの間のバスの使用権限を付与されるための処理を実行する
ことを特徴とする付記５に記載のＤＭＡ装置。
【００６４】
（付記９）
前記複数のバッファ回路は、前記メモリからデータを読み出すための準備処理、該メモリとの間のバスの使用権限を付与されるための処理および該メモリからデータを読み出す一連の処理の一部を、他のバッファ回路の処理と互いに時間的に重複させて実行する
ことを特徴とする付記５に記載のＤＭＡ装置。
【００６５】
（付記１０）
複数のＤＭＡコントローラが、メモリコントローラを介して、ディスクリプタに対応するデータをメモリから読み出す処理において使用される、ディスクリプタ管理装置であって、
ＣＰＵからの指示に応じてディスクリプタを読み出す読み出し手段と、
読み出した１つのディスクリプタを複数のサブディスクリプタに分割する分割手段と、
前記複数のサブディスクリプタを前記複数のＤＭＡコントローラに送信する送信手段と、
前記複数のＤＭＡコントローラの全てについて、前記複数のサブディスクリプタに対応するデータを読み出す処理が完了すると、ＤＭＡ転送が完了したことの通知を前記ＣＰＵに対して行う通知手段と
を備えたことを特徴とするディスクリプタ管理装置。
【００６６】
（付記１１）
ディスクリプタに対応するデータをメモリから読み出すＤＭＡ転送方法であって、
１つのディスクリプタを複数のサブディスクリプタに分割し、
前記複数のサブディスクリプタに基づいて、対応する複数の読み出し要求を生成し、
前記複数の読み出し要求にしたがって、対応するデータを前記メモリから読み出す
処理を含むことを特徴とするＤＭＡ転送方法。
【図面の簡単な説明】
【００６７】
【図１】ＤＭＡ転送に関わる回路の全体図である。
【図２】ディスクリプタ制御部についての構成図である。
【図３】ディスクリプタ制御部の状態遷移機械により管理される、ディスクリプタ管理装置の状態遷移図である。
【図４】分割部の回路構成図である。
【図５】DMA管理部の回路構成図である。
【図６】DMA管理部によって管理される、ＤＭＡコントローラの状態遷移図である。
【図７】本実施形態に係るディスクリプタ管理装置の基本動作のフローチャートである。
【図８】ディスクリプタを分割して生成されたサブディスクリプタを用いた、複数のＤＭＡコントローラによるＤＭＡ転送のシーケンス図である。
【図９】本実施形態に係るＤＭＡ転送におけるデータフローを、ディスクリプタ管理装置の構成図に対応させて表した図である。
【図１０】ＤＭＡコントローラが、読み出した１つのディスクリプタを基に所望のデータを読み出す、従来の処理を示したシーケンス図である。
【符号の説明】
【００６８】
１      ディスクリプタ管理装置
２      ＣＰＵ
３      メモリ
４      ＤＭＡコントローラ
５      メモリコントローラ
６      コントロールバス
７      データバス
１１      ディスクリプタ制御部
１２      分割部
１３      ＤＭＡ管理部
【図１】
2006195823.tif 000003
【図２】
2006195823.tif 000004
【図３】
2006195823.tif 000005
【図４】
2006195823.tif 000006
【図５】
2006195823.tif 000007
【図６】
2006195823.tif 000008
【図７】
2006195823.tif 000009
【図９】
2006195823.tif 000010
【図８】
2006195823.tif 000011
【図１０】
2006195823.tif 000012