JP2008171426A - ディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なう方法、ダイレクト・メモリ・アクセス装置、及びデータ処理システム - Google Patents

ディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なう方法、ダイレクト・メモリ・アクセス装置、及びデータ処理システム Download PDF

Info

Publication number
JP2008171426A
JP2008171426A JP2008000839A JP2008000839A JP2008171426A JP 2008171426 A JP2008171426 A JP 2008171426A JP 2008000839 A JP2008000839 A JP 2008000839A JP 2008000839 A JP2008000839 A JP 2008000839A JP 2008171426 A JP2008171426 A JP 2008171426A
Authority
JP
Japan
Prior art keywords
memory access
descriptor
direct memory
descriptors
prefetch buffer
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.)
Granted
Application number
JP2008000839A
Other languages
English (en)
Other versions
JP4939443B2 (ja
Inventor
Nicholas Richard
リチャード・ニコラス
Bernard Charles Drerup
バーナード・チャールス・ドレラップ
Gupta Jyoti
ジョティ・グプタ
Biran Giora
ジオラ・ビラン
Luis E De La Torre
ルイス・イー・デ・ラ・トーレ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008171426A publication Critical patent/JP2008171426A/ja
Application granted granted Critical
Publication of JP4939443B2 publication Critical patent/JP4939443B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ディスクリプタ・プリフェッチ・バッファにディスクリプタをプリフェッチするDMA装置を提供する。
【解決手段】ディスクリプタ・プリフェッチ・バッファ450の大きさが、所与のレイテンシ環境に適切な数のディスクリプタを維持する。ディスクリプタのリンク・リストをサポートするため、順次的なディスクリプタをプリフェッチし、これに反するディスクリプタを廃棄する。DMAエンジン412は、可能な限り1つのトランザクション当たり複数のディスクリプタを要求し、ディスクリプタ・プリフェッチ・バッファを満杯に保つ。バス・エンジン414がシステム・メモリ430からディスクリプタをフェッチし、プリフェッチ・バッファに書込む。ディスクリプタ・プリフェッチ・バッファにスペースがある時には、バッファがサポートする最大数のディスクリプタをバス・エンジンが要求するアグレッシブ・プリフェッチをDMAエンジンが使用可能である。
【選択図】図4

Description

本発明は、一般的にはデータ処理システムおよび方法の改良に関し、詳しく云えば、高レイテンシ装置ための支援を備えたダイレクト・メモリ・アクセス・コントローラに関するものである。
多くのシステム・オン・チップ(SOC)設計は、ダイレクト・メモリ・アクセス(DMA)コントローラと呼ばれる装置を内蔵する。DMAの目的は、メモリ内の1つのロケーションから別のロケーションにデータ・ブロックを効率的に移動させることである。DMAコントローラは、通常、システム・メモリと入出力(I/O)装置との間でデータを移動させるために使用されるが、システム・メモリ内の1つの領域と別の領域との間でデータを移動させるためにも使用される。プロセッサはデータの移動に関与しないので、DMAコントローラは「ダイレクト」メモリ・アクセス・コントローラと呼ばれる。
DMAコントローラがない場合、データ・ブロックは、ソフトウェア制御の下に1つのメモリ・スペースから別のスペースへデータを1つずつプロセッサにコピーさせることによって、移動することが可能である。通常、これは、大きいデータ・ブロックにとって望ましいことではない。プロセッサが大きいデータ・ブロックを1つずつコピーするとき、プロセッサは大きいメモリ・バッファを持たないので、それは低速であり、一度に32ビットのような小さい非効率的なサイズでデータを移動させなければならない。更に、プロセッサは、そのコピーを行なっている間、自由に他の仕事をすることができない。従って、その移動が完了するまで、プロセッサは拘束される。これらのデータ・ブロック移動を、遥かに速く且つ他の仕事と平行して行なうことができるDMAコントローラにこれらのデータ・ブロック移動を負荷委譲する方がずっと効率的である。
DMAコントローラは、通常、複数の「チャネル」を有する。本明細書において使用されるように、「チャネル」は、DMAコントローラが移動させるべきデータの独立的なストリームである。従って、DMAコントローラは、異なるチャネルを介して幾つものブロック移動を同時に行なうようにプログラムされ得るし、DMA装置が幾つものI/O装置に、或いはI/O装置から、データを同時に転送することを可能にする。
DMAコントローラの代表的なもう1つの特徴は、分散/収集オペレーションである。分散/収集オペレーションは、各データ・ブロックを或るソースから或る宛先に移動させるようにプロセッサによってプログラムされる必要のないオペレーションである。むしろ、プロセッサはシステム・メモリ内にディスクリプタ・テーブルまたはディスクリプタ・リンク・リストを設定する。ディスクリプタ・テーブルまたはリンク・リストは一組のディスクリプタである。各ディスクリプタは、データ・ブロックの移動について記述し、転送するべきバイトのソース・アドレス、宛先アドレス、および数を含む。DMAレジスタを介して直接プログラムされる非分散/収集ブロック移動は、「単一プログラミング」DMAブロック移動と呼ばれる。
DMAコントローラのリンク・リスト・アーキテクチャはテーブル・アーキテクチャよりも融通性があり且つ動的である。リンク・リスト・アーキテクチャでは、プロセッサは、DMAチャネルのうちの1つをチェーンにおける第1ディスクリプタと呼び、そのリンク・リストにおける各ディスクリプタはメモリにおける次のディスクリプタに対するポインタを有する。ディスクリプタはシステム・メモリ内のどこにあってもよく、転送が生じるとき、プロセッサはリスト上に動的に加わることも可能である。DMAコントローラはテーブルまたはリストを自動的に調べ、そのテーブルまたはリスト終端に達するまで、各ディスクリプタによって記述されたデータ・ブロック移動を実行する。
DMA装置は、適切な数のバッファを有するように、且つ、データへの高レイテンシ・パスがデータ転送において重大な機能停止を生じないよう適切な数の同時に存在する未解決トランザクションを処理するように、体系化されてもよい。典型的なDMAプログラミング・モデルは、上述のように、分散/収集ディスクリプタのリストとしてデータ転送を連鎖するためのものである。これらのディスクリプタはメモリからフェッチされなければならない。この環境において、ディスクリプタ・メモリに対するレイテンシがデータに対するレイテンシと同じくらい高い場合、問題に遭遇することがある。後述するように、高レイテンシ・データ・ブロックのフェッチによって、低レイテンシ・ディスクリプタのフェッチを伴う問題が存在することさえある。
典型的なDMAアーキテクチャは、ディスクリプタ内のフェッチされた情報を、「単一プログラミング」DMAブロック・データ移動によってロードされる同じ構成レジスタに、直接給送する。DMA装置が現在のディスクリプタに対する最終トランザクションの書込みを始めるとすぐに、次のディスクリプタのリクエストが始まる。その時点では、データ・ブロック移動を実行した構成レジスタがロードのために再び利用可能であるので、この最終的な書込みが始まるまで、DMA装置は待機しなければならない。このオーバラップは、DMA装置が低レイテンシ環境におけるディスクリプタ間の推移としてデータ・バスの機能停止を減らすことはできるが、それを回避することはできない。しかし、この方式は高レイテンシ環境では1つの障害となることがある。
本発明の目的は、従来技術の欠点を認識し、ディスクリプタ・プリフェッチ・バッファにディスクリプタをプリフェッチするDMA装置を提供することにある。
ディスクリプタ・プリフェッチ・バッファの大きさが、所与のレイテンシ環境にとって適切な数のディスクリプタを維持する。ディスクリプタのリンク・リストをサポートするために、ディスクリプタがメモリでは順次的であるという仮定に基づいてDMAエンジンがディスクリプタをプリフェッチし、この仮定に反するということがわかったいずれのディスクリプタも廃棄する。DMAエンジンは、可能な限りいつも1つのトランザクション当たり複数のディスクリプタを要求することによって、ディスクリプタ・プリフェッチ・バッファを満杯に保つように務める。バス・エンジンがシステム・メモリからこれらのディスクリプタをフェッチし、プリフェッチ・バッファにそれらを書込む。ディスクリプタ・プリフェッチ・バッファに少しでもスペースがあるときには常に、そのバッファがサポートする最大数のディスクリプタをバス・エンジンが要求するというアグレッシブ・プリフェッチをDMAエンジンが使用することが可能である。DMA装置は、格納することができないいずれの残りのディスクリプタも廃棄する。
1つの実施例では、ダイレクト・メモリ・アクセス装置においてディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なうための方法が提供される。その方法は、ダイレクト・メモリ・アクセス装置内のディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、物理メモリに順次的に格納された複数のダイレクト・メモリ・アクセス・ディスクリプタをディスクリプタ・プリフェッチ・バッファにフェッチするステップを含む。その方法は、更に、ディスクリプタ・プリフェッチ・バッファからのディスクリプタに従ってダイレクト・メモリ・アクセス・ブロック移動を行なうために、そのディスクリプタを処理するステップを含む。
1つの実施例では、その方法は、更に、複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックするステップと、複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが非順次的であることに応答して、その所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークするステップとを含む。更なる実施例では、その方法は、更に、所与のダイレクト・メモリ・アクセス・ディスクリプタの後の各ディスクリプタを無効としてマークするステップを含む。
別の実施例では、その方法は、複数のダイレクト・メモリ・アクセス・ディスクリプタ内のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックするステップと、複数のダイレクト・メモリ・アクセスディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが順次的であることに応答して、所与のダイレクト・メモリ・アクセス・ディスクリプタを有効としてマークするステップとを含む。
更なる実施例では、複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする前記ステップは、ディスクリプタ・プリフェッチ・バッファにおける複数の利用可能なスロットを決定するステップと、複数の利用可能なスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチするステップとを含む。
更に別の実施例では、複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする前記ステップは、ディスクリプタ・プリフェッチ・バッファにおける最大数のスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチするステップと、フェッチされた複数のダイレクト・メモリ・アクセス・ディスクリプタをディスクリプタ・プリフェッチ・バッファに格納しようとするステップと、ディスクリプタ・プリフェッチ・バッファが満杯であることに応答して、ディスクリプタ・プリフェッチ・バッファに格納することができなかった残りのダイレクト・メモリ・アクセス・ディスクリプタを複数のダイレクト・メモリ・アクセス・ディスクリプタから廃棄するステップとを含む。更に別の実施例では、その方法は、更に、ディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、複数のダイレクト・メモリ・アクセス・ディスクリプタ内の所与のダイレクト・メモリ・アクセス・ディスクリプタをディスクリプタ・プリフェッチ・バッファに格納するステップを含む。
更に別の実施例では、その方法は、更に、所与のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックするステップと、所与のダイレクト・メモリ・アクセス・ディスクリプタが複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して非順次的であることに応答して、所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークするステップとを含む。更なる実施例では、その方法は、更に、無効としてマークされた所与のダイレクト・メモリ・アクセス・ディスクリプタの後の各ディスクリプタを廃棄するステップを含む。別の実施例では、その方法は、所与のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックするステップと、所与のダイレクト・メモリ・アクセス・ディスクリプタが複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して順次的であることに応答して、所与のダイレクト・メモリ・アクセス・ディスクリプタを有効としてマークするステップとを含む。
別の実施例では、ダイレクト・メモリ・アクセス装置が、プリフェッチ・バッファを有するダイレクト・メモリ・アクセス・エンジンとバス・エンジンとを含む。ダイレクト・メモリ・アクセス装置内のディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、バス・エンジンは、物理メモリに順次的に格納された複数のダイレクト・メモリ・アクセス・ディスクリプタをディスクリプタ・プリフェッチ・バッファにフェッチする。ダイレクト・メモリ・アクセス装置は、ディスクリプタ・プリフェッチ・バッファからのダイレクト・メモリ・アクセス・ディスクリプタに従ってダイレクト・メモリ・アクセス・ブロック移動を行なうために、そのダイレクト・メモリ・アクセス・ディスクリプタを処理する。
別の実施例では、ダイレクト・メモリ・アクセス・エンジンは、複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックする。複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが非順次的であることに応答して、ダイレクト・メモリ・アクセス・エンジンが所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークする。
別の実施例では、ダイレクト・メモリ・アクセス・エンジンは、所与のダイレクト・メモリ・アクセス・ディスクリプタの後の各ディスクリプタを無効としてマークする。更に別の実施例では、ダイレクト・メモリ・アクセス・エンジンは、複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックし、複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが順次的であることに応答して、所与のダイレクト・メモリ・アクセス・ディスクリプタを有効としてマークする。
更に別の実施例では、バス・エンジンは、ディスクリプタ・プリフェッチ・バッファにおける複数の利用可能なスロットを決定し、複数の利用可能なスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする。更に別の実施例では、バス・エンジンは、ディスクリプタ・プリフェッチ・バッファにおける最大数のスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチし、フェッチされた複数のダイレクト・メモリ・アクセス・ディスクリプタをディスクリプタ・プリフェッチ・バッファに格納しようとし、ディスクリプタ・プリフェッチ・バッファが満杯であることに応答して、ディスクリプタ・プリフェッチ・バッファに格納することができなかった残りのダイレクト・メモリ・アクセス・ディスクリプタを複数のダイレクト・メモリ・アクセス・ディスクリプタから廃棄する。
更に別の実施例では、データ処理システムは、バスと、バスに接続された複数のバス・ユニット装置と、バスに接続されたダイレクト・メモリ・アクセス装置(ディスクリプタ・プリフェッチ・バッファを含む)と、処理ユニットと、処理ユニットに接続されたシステム・メモリとを含む。処理ユニットはバスへのアクセスを行なう。処理ユニットは、ダイレクト・メモリ・アクセス・ディスクリプタをシステム・メモリに格納する。各ダイレクト・メモリ・アクセス・ディスクリプタは、複数のバス・ユニット装置内のソース装置およびターゲット装置を表わす。ディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、ダイレクト・メモリ・アクセス装置は、システム・メモリからディスクリプタ・プリフェッチ・バッファに複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする。ダイレクト・メモリ・アクセス装置は、ディスクリプタ・プリフェッチ・バッファからのダイレクト・メモリ・アクセス・ディスクリプタに従ってダイレクト・メモリ・アクセス・ブロック移動を行なうために、そのダイレクト・メモリ・アクセス・ディスクリプタを処理する。
1つの実施例では、ダイレクト・メモリ・アクセス装置は、複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックする。複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが非順次的であることに応答して、ダイレクト・メモリ・アクセス装置は所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークする。
別の実施例では、ダイレクト・メモリ・アクセス装置は、ディスクリプタ・プリフェッチ・バッファにおける複数の利用可能なスロットを決定し、その複数の利用可能なスロット対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする。
更なる実施例では、ダイレクト・メモリ・アクセス装置は、ディスクリプタ・プリフェッチ・バッファにおける最大数のスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチし、フェッチされた複数のダイレクト・メモリ・アクセス・ディスクリプタをディスクリプタ・プリフェッチ・バッファに格納しようとし、ディスクリプタ・プリフェッチ・バッファが満杯であることに応答して、ディスクリプタ・プリフェッチ・バッファに格納することができなかった残りのダイレクト・メモリ・アクセス・ディスクリプタを複数のダイレクト・メモリ・アクセス・ディスクリプタから廃棄する。
本発明の実施例についての下記の詳細な説明から、本発明に関するこれらのおよび他の特徴および利点が開示され、或いは当業者にとって明らかになるであろう。
図面、特に、図1および図2を参照すると、本発明の実施例を具現化し得るデータ処理環境の例が示される。図1および図2は単なる例であり、本発明の諸局面または実施例を具現化し得る環境に関して何らかの制限を主張或いは意味することを意図するものではないことは明らかであろう。本発明の真意および範囲から逸脱することなく、図示の環境に対して多くの修正を施すことが可能である。
図1は、実施例の諸態様を具現化し得るデータ処理システムの例示的なブロック図である。図1に示された例示的なデータ処理システムは、セル・ブロードバンド・エンジン(Cell Broadband Engine - CBE)データ処理システムの一例である。本発明の好適な実施例の説明ではCBEが使用されるが、当業者には明らかなように、以下の説明を読む場合、本発明はそのようなものに限定されるべきではない。
図1に示されるように、CBE100は、プロセッサ(PPU)116およびそのL1キャッシュ112、L2キャッシュ114を有するパワー・プロセッサ・エレメント(PPE)110、並びに、複数の相乗作用プロセッサ・エレメント(synergistic processor element - SPE)120〜134を含む。各SPEは、それ自身の相乗作用プロセッサ・ユニット(SPU)140〜154、メモリ・フロー制御ユニット(MFC)155〜162、ローカル・メモリまたは記憶装置(LS)163〜170、および、バス・インタフェース・ユニット(BIU)180〜194を有する。各BIUは、例えば、ダイレクト・メモリ・アクセス(DMA)、メモリ管理ユニット(MMU)、およびバス・インタフェース・ユニットの結合体であってもよい。高帯域幅の内部エレメント相互接続バス(EIB)196、バス・インターフェース・コントローラ(BIC)197、およびメモリ・インタフェース・コントローラ(MIC)198も設けられる。
ローカル・メモリまたはローカル記憶装置(LS)163-170は、大型メモリ・マップの非コヒーレントなアドレス可能部分であり、物理的にはSPU140〜154に接続された小型のメモリとして提供されてもよい。ローカル記憶装置163〜170は種々のアドレス空間にマップされ得る。これらのアドレス領域は非別名(non-aliased)構成で連続している。ローカル記憶装置163〜170は、更に詳しく後述されるように、SPU識別レジスタを介するというような、そのアドレス・ロケーションによってその対応するSPU140〜154およびSPE120〜134に関連付けられる。ローカル記憶装置が安全なオペレーション・モードに置かれない限り、システムにおけるいずれの資源もローカル記憶装置163〜170からの読取りおよびそれらへの書込みを行なう機能を有する。なお、安全なオペレーション・モードでは、その関連するSPUだけがローカル記憶装置163〜170を、またはローカル記憶装置163〜170の指定された安全な部分を、アクセスすることが可能である。
CBE100は、図1に示された各エレメントが単一のマイクロプロセッサ・チップ上に設けられるようなシステム・オン・チップであってもよい。更に、CBE100は、システムにおける他のSPUの各々から相異なる命令を受けることができる異機種混合の処理環境である。更に、SPUのための命令セットは、PPUのそれとは異なる。例えば、PPUはRISCベースの命令を実行し得るが、SPUはベクトル化された命令を実行する。
SPE120-134は、EIB196を介して相互に且つL2キャッシュ114に接続される。更に、SPE120〜134は、EIB196を介してMIC198およびBIC197に接続される。MIC198は、共用メモリ199に対する通信インターフェースを提供する。BIC197は、CBE100と他の外部バスおよび装置との間の通信インターフェースを提供する。
PPE110はデュアル・スレッドPPEである。このデュアル・スレッドPPE110と8個のSPE120〜134との組合せは、CBE100が10個の同時スレッドおよび128個以上の未解決のメモリ要求を処理できるようにする。PPE110は、ほとんどの計算作業を処理する他の8個のSPE120〜134に対するコントローラとして作用する。PPE110は、通常のオペレーティング・システムを実行するために使用され得るし、一方、SPE120〜134は、例えば、ベクトル化された浮動小数点コード実行を行なう。
SPE120〜134は、相乗作用処理装置(SPU)140〜154、メモリ・フロー制御ユニット155〜162、ローカル・メモリまたはローカル記憶装置163〜170、およびインタフェース・ユニット180〜194を含む。ローカル・メモリまたはローカル記憶装置163〜170は、1つの実施例では、PPE110にとって可視的である256KBの命令およびデータ・メモリを含み、ソフトウェアによって直接にアドレスされ得る。
PPE110は、小さいプログラムまたはスレッドをSPE120-134にロードすることが可能である。なお、小さいプログラムまたはスレッドは、それらのSPEと連鎖して複雑なオペレーションにおける各ステップを処理するためのものである。例えば、CBE100を組込んだセットトップ・ボックスは、DVD、ビデオ、およびオーディオ・デコーディングのためのプログラムをロードし、表示し、そしてデータは、それが最終的に出力ディスプレイにおいて終わるまで、SPE120〜134間で継続するであろう。4GHz 時に、各SPE120-134は、32GFLOPSの理論的パフォーマンスを、PPE110がそれと同様のレベルのパフォーマンスを有することにより、与える。
メモリ・フロー制御ユニット(MFC)155〜162は、システムの残りのおよび他のエレメントに対する、SPUのためのインターフェースとして働く。MFC155〜162は、主記憶装置とローカル記憶装置163〜170の間のデータ転送、保護および同期化のための主要な機構を提供する。論理的には、プロセッサにおける各SPUに対して1つのMFCが存在する。いくつかの具現化態様は、複数のSPUの間で単一のMFCの資源を共有することが可能である。そのような場合、MFCのために定義されたすべての機能およびコマンドが各SPUにとってソフトウェアに依存しないように見えなければならない。MFCを共用するという効果は、実施態様に依存した機能およびコマンドに限定される。
次に図2を参照すると、本発明の諸局面を具現化し得る例示的なデータ処理システムのブロック図が示される。図示の例では、データ処理システム200が、サウス・ブリッジ兼入出力(I/O)コントローラ・ハブ(SB/ICH)204を含むハブ・アーキテクチャを使用する。処理ユニット202が、メモリ・インタフェース・コントローラ(MIC)210を介してシステム・メモリ208に接続される。処理ユニット202は、バス・インターフェース・コントローラ(BIC)206を介してSB/ICH204に接続される。
図示の例では、ローカル・エリア・ネットワーク(LAN)アダプタ212がSB/ICH 204に接続している。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読取り専用メモリ(ROM)224、ハードディスク・ドライブ(HDD)226、CD−ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、並びに、PCI/PCIe装置234がバス238およびバス240を介してSB/ICH204に接続している。PCI/PCIe装置は、例えば、Ethernet(商標)アダプタ、アドイン・カードおよびノート型コンピュータのためのPCカードを含んでもよい。PCIはカード・バス・コントローラを使用するが、PCIeはそれを使用しない。ROM224は、例えば、フラッシュ・バイナリ・入力/出力システム(BIOS)であってもよい。
HDD226およびCD−ROMドライブ230はバス240を介してSB/ICH204に接続している。HDD226およびCD−ROMドライブ230は、例えば、統合ドライブ・エレクトロニクス(IDE)またはシリアル先進技術アタッチメント(SATA)インターフェースを使用してもよい。スーパI/O(SIO)装置236がSB/ICH204に接続されてもよい。
オペレーティング・システムが処理ユニット202上で作動する。オペレーティング・システムは、図2におけるデータ処理システム200内の様々なコンポーネントの制御を調整および提供する。クライアントとしてのオペレーティング・システムは市販のオペレーティング・システムであってもよい。Java(商標)プログラミング・システムのようなオブジェクト指向プログラミング・システムは、そのオペレーティング・システムと関連して作動し得るし、データ処理システム200において実行されるJavaプログラムまたはアプリケーションからそのオペレーティング・システムにコールを行なうことも可能である(Java は、米国のサン・マイクロシステムズ社の商標である)。
サーバーとしてのデータ処理システム200は、例えば、拡張対話式イグゼクティブ(AIX)オペレーティング・システムまたはLINUXオペレーティング・システムを実行するIBM eServer pSeries コンピュータ・システムであってもよい(eServer、pSeries およびAIXは、米国IBM社の商標であり、LINUXは、米国LinusTorvalds の商標である)。データ処理システム200は、処理ユニット202内に複数のプロセッサを含み得る。それとは別に、シングル・プロセッサ・システムが使用されてもよい。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、HDD226のような記憶装置内に置かれ、処理ユニット202による実行のためにメイン・メモリ208にロードされ得る。本発明の実施例のプロセスは、処理ユニット202がコンピュータ使用可能プログラム・コードを使用することによって遂行される。そのコンピュータ使用可能プログラム・コードは、例えば、メイン・メモリ(システム・メモリ)208、ROM224のようなメモリ内に、或いは、例えば、1つまたは複数の周辺装置226および230内に置かれることも可能である。
図2に示されたバス238またはバス240のようなバス・システムは1つまたは複数のバスで構成されてもよい。もちろん、バス・システムは、任意のタイプの通信ファブリックまたはアーキテクチャを使用して具現化することも可能であり、そのファブリックまたはアーキテクチャ接続された種々のコンポーネントまたは装置の間でデータの転送を行なう。図2のモデム222またはネットワーク・アダプタ212のような通信ユニットは、データを送信および受信するために使用される1つまたは複数の装置を含み得る。メモリは、例えば、図2におけるメイン・メモリ208、ROM224、または、NB/MCH202において見られるようなキャッシュ、であってもよい。
図1および図2におけるハードウェアが実施態様次第で変わり得ることは当業者には明らかであろう。図1および図2に示されたハードウェアに加えて、或いはそのハードウェアの代わりに他の内部ハードウェア、或いはフラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブ等のような周辺装置が使用されてもよい。更に、本発明の真意および範囲から逸脱することなく、実施例のプロセスが、前述のSMPシステム以外のマルチプロセッサ・データ処理システムにも適用されてもよい。
更に、データ処理システム200は、クライアント・コンピューティング装置、サーバ・コンピューティング装置、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信装置、パーソナル・デジタル・アシスタント(PDA)、ビデオゲーム・コンソール等を含む多くの任意の種々のデータ処理システムの形体をとることが可能である。いくつかの例では、データ処理システム200は、オペレーティング・システム・ファイルおよび/またはユーザ生成のデータを格納するための不揮発性メモリを提供するためにフラッシュ・メモリで構成されたポータブル・コンピューティング装置であってもよい。本質的には、データ処理システム200は、アーキテクチャ上の制限のない任意の既知の、または今後開発されるデータ処理システムであってもよい。
サウス・ブリッジ204はダイレクト・メモリ・アクセス(DMA)コントローラを含んでもよい。DMAコントローラは、通常、システム・メモリと入出力(I/O)装置との間でデータを移動させるために使用されるが、システム・メモリ内の1つの領域と別の領域との間でデータを移動させるためにも使用される。高いバス利用度が望まれる場合、高レイテンシ装置が独得のチャレンジ(誰何データ)を提示する。高レイテンシ装置と通信する場合、高レイテンシ装置からデータを受け取るために必要な時間が、それよりも前にキューに入れられたすべての他の未決のトランザクションからデータを転送するために必要な時間よりも少ないかまたはそれに等しくなるように、全く同時の未決のトランザクションが存在しなければならない。この基準に適合する場合、DMAがデータを待ち且つ転送のために使用し得るいずれの他のデータも持たないというギャップまたは機能停止状態はそのバス上には滅多に存在しないであろう。
更なる統合に向かう傾向によって、特に、システム・オン・チップによって、図2における多くの装置がサウス・ブリッジ204内に統合されてもよい。例えば、単一のバスをサウス・ブリッジ204内に統合することも可能である。更に、USBコントローラ、PCI、およびPCIeコントローラ、メモリ・コントローラ等のようなコントローラおよびインターフェースをサウス・ブリッジ204内に統合し、内部バスに接続することも可能である。更に、サウス・ブリッジ204は、ローカル・メモリのためのメモリ・モジュールが接続されるメモリ・コントローラを含んでもよい。更に、処理ユニット202は、DMA装置がシステム・メモリ208をアクセスすることを可能にする、図1におけるEIB196(図1)のような内部バスを含んでもよい、ということにも留意されたい。
図3は、実施例に従ってサウス・ブリッジを示すブロック図である。例えば、処理ユニット302がサウス・ブリッジ300におけるバス320にDMAコマンドを発生する。そこで、サウス・ブリッジ300内のDMA装置310が、バス・ユニット装置322のようなソース装置からの読取りオペレーション、およびバス・ユニット装置324のようなターゲット装置への書込みオペレーションを行なうことによってDMAコマンドを実行することが可能である。それとは別の例では、DMAコマンドが、バス・ユニット装置322からシステム・メモリ304にデータ・ブロックを移動させることを要求し得るし、或いは、更に別の例によれば、DMAコマンドが、システム・メモリ304からバス・ユニット装置324にデータ・ブロックを移動させることを要求し得る。バス・ユニット装置322およびバス・ユニット装置324は、例えば、メモリ・コントローラ、USBコントローラ、PCIコントローラ、記憶装置コントローラ等、或いはそれの組合せであってもよい。
ソース装置およびターゲット装置は、メモリのような低レイテンシ装置およびハードディスク・ドライブのような高レイテンシ装置を含み得る。しかし、メモリ装置のような一般に低レイテンシである装置は、場合によっては、バスおよびブリッジ・ハイアラーキにおけるそれらの位置次第で、高レイテンシにもなり得る。サウス・ブリッジ300のコンポーネントの多くは、図の簡潔化のために、図示されていない。サウス・ブリッジ300が、図3に示されていない更に多くの特徴および機能を含むであろうということは当業者には明らかであろう。
サウス・ブリッジ300におけるDMA装置310はDMAエンジン(DE)312およびバス・エンジン(BE)314を含む。特殊な読取り・書込み(RW)コマンドは、DE312がBE314へのトランザクションを更に効率的にキューに入れることを可能にする。より標準的な実施態様を使用すると、BEがバス上で実行するべきすべてのトランザクションを指定することによって、DEはBEを綿密管理するであろう。しかし、図示の実施例では、特殊なRWコマンドは、DE312がデータ・ブロックの移動をより効率的に制御することができるように、DE312が読取りおよび書込みの両方を同時に指定することを可能にする。
BE314は、処理ユニット302からバス320に発生されたブロック移動要求のようなDMAコマンドを読取ることが可能である。処理ユニット302は、DMA装置310にDMAコマンドを直接に発生することも可能である。それとは別に、処理ユニット302は、システム・メモリ304またはローカル・メモリ328におけるテーブルまたはリンク・リストであってもよい分散/収集リストを使ってDMAコマンドを発生することも可能である。後者の場合、BE314は、次のDMAコマンドを受取るために単に分散/収集リストからディスクリプタを読取るだけでよい。DMA装置310は、ローカル・メモリ・コントローラ326を介して接続されたローカル・メモリ328を作業メモリとして使用することも可能である。
図3に示された実施例によれば、例えば、DMA装置は疎結合のDMAエンジン(DM)およびバス・エンジン(BE)として構成される。DEは、プログラムされたデータ・ブロック移動を個別のトランザクションに分解し、分散/収集ディスクリプタを解釈し、そしてチャネル間の調停を行なう。BEは、DMA装置が接続されているバスのバス・プロトコルを理解し、DEによって送られたトランザクションをすべて実行する。BEは、同時のトランザクションを十分にサポートしなければならず、従って、データ・フローのパイプラインが機能停止しないように十分なバッファをサポートしなければならない。DEは、BEに対するトランザクションをキューに入れ、BEのバッファ・スペース当たりのBEを遥かに越えることができる。BEは、簡単な要求/確認ハンドシェイキングを介してDEを抑制する。
DEは、BEが如何に多くのバッファを実装しているかを知らないし、或いは知る必要がない。従って、種々のレイテンシ環境をサポートするために、または種々のバスに接続するために、種々のBEが同じDEと共に使用されことが可能である。スケーラビリティを最大にするために、BEは論理的に独立した「BEユニット」として構成されてもよく、各BEユニットは、DEのための1つのバッファおよび1つのトランザクションを管理する責任を負う。BEユニットの数は、設定可能な合成パラメータであってもよい。
DEがその現在の要求対して肯定応答を得る限り、それは別の要求を行なうことができる。BEが利用可能なバッファを持たない場合、それはDEの現在の要求の肯定応答を保留する。それは、DEがそれ以上の如何なるトランザクションも要求しないようにする。資源がBEにおいて使える状態なるとき、それは、DEへの肯定応答を活性化するであろうし、従って、DEは別のトランザクションを要求することができるであろう。
BEは、バッファの汎用プールを含んでいる。例えば、BEが16個のバッファを含む場合、その16個すべてが1つのDMAチャンネルによって使用されてもよいし、或いは、DEがチャネル間で必要とする任意の方法でそれらを割り当てることも可能である。DEは、任意のチャネルからBEへのトランザクションをキューに入れる。DEは、それが行なうべき更なる作業を持たないとき、または利用可能なバッファ・スペースがないことを示す通知をそのBEが撤回するときだけ、トランザクションをキューに入れることをやめるである。
BEは、そのキューに入れられたトランザクションすべてをバス・プロトコルに従って実行し、トランザクション・データが順序不同(out of order)のトランザクションおよび再試行されたトランザクションに戻るというような起り得るバス状況を処理する。順序不同のデータを処理するDMAは、サブブロックの順序には意味がないデータ・ブロック移動に関して最適化される。データが正しい順序で移動されなければならないネットワーキングおよびビデオ・ストリーム搬送のようないくつかのアプリケーションが存在する。
DEがBEへのトランザクションをキューに入れる単純なインターフェースがDEとBEとの間に存在してもよい。DEがすべてのプログラムされたデータ・ブロックを移動させてしまうまで、BEはDEに関するトランザクションを実行する。DEは、バスを介した読取りおよび書込みを行なう各読取りおよび各書込みをBEに対して指定することによって、すべてのデータ・ブロックを移動させることが可能である。DEはチャネル間の調停を行い、通常は、すべてのチャネルからのデータが多かれ少なかれ同時に移ることができるように、種々のチャネルからの読取り及び書込みを公平な方法でインターリーブする。具現化し得る様々なチャネル調停優先順位方式がある。しかし、調停は本発明の焦点ではない。
DMAがデータの移動に関与するので、DEがソース・アドレスから行なう各読取りトランザクションは、結局、宛先アドレスへの書込みトランザクションによって後続されなければならない。しかも、DMAはデータを処理するのではなくデータを移動させるので、読取りトランザクションによって転送されたデータは、対応する書込みトランザクションによって転送されるデータと同じものである。データは如何なる方法でも修正されない。従って、実施例によれば、DEおよびBEは、そのDEおよびBEの間でキューに入れることができる読取り・書込み(RW)結合コマンドの使用により、プロセスを更に効率的することが可能である。
1つの実施例では、DMA装置が、ディスクリプタ・プリフェッチ・バッファにディスクリプタをプリフェッチする。図3に示された例では、ディスクリプタ・プリフェッチ・バッファ330がDE312内に設けられる。ディスクリプタ・プリフェッチ・バッファ330のサイズは、所与のレイテンシ環境にとって適切な数のディスクリプタを保持する。DE312は、可能な場合は常に1つのトランザクション当たり複数のディスクリプタを要求することによって、ディスクリプタ・プリフェッチ・バッファ330を満杯に維持するように努める。BE314は、システム・メモリ304あるいはローカル・メモリ328からこれらのディスクリプタをフェッチし、それらを、R/Wインターフェースにおける特別のデータ・パスを介してDE312に直接送る。その特別のデータ・パスは、ディスクリプタをBE314からDE312におけるディスクリプタ・プリフェッチ・バッファに渡すためにのみ使用される。図示の例において、次のディスクリプタがプリフェッチ・バッファ内にあり得るので、DE312は、データ・トランザクションがディスクリプタ間で推移するとき、機能停止を必要とすることなく連続してデータ・トランザクションをキューに入れてもよい。
ディスクリプタ・テーブル・アーキテクチャでは、ディスクリプタは順次的であり、ディスクリプタのプリフェッチは簡単である。しかし、ディスクリプタ・テーブル・アーキテクチャは、DMAコントローラが更に融通性のあるリンク・リスト・アーキテクチャの使用によって回避しようとしている欠点を有する。ディスクリプタのプリフェッチは、各ディスクリプタがリンク・リストにおける次のディスクリプタを指すので、本質的には順次的なプロセスである。理論上、各ディスクリプタは次のディスクリプタの位置を「指示する」ので、DMAコントローラは、現在のディスクリプタが検索および検査されるまで次のディスクリプタを得るべき位置を知らないであろう。
実施例によれば、DMAコントローラは、ディスクリプタがメモリ内に順次的に格納されるということを仮定し、その仮定に従ってそれらを「投機的に」フェッチする。DE312がシステム・メモリから実際のディスクリプタ・データを受け取るとき、それは、仮定が妥当であったということを確認するために各ディスクリプタをチェックする。仮定が妥当でないと分かったとき、プリフェッチ・バッファがフラッシュされ、新しいフェッチが正しいアドレスに発せられる。従って、ディスクリプタをメモリに順次的に格納し得なかったとき、この方式の下では機能停止が時々にあるであろう。これは、正しく書かれたソフトウェアではまれなことであろう。この方法は、融通性の低い「ディスクリプタ・テーブル」アーキテクチャを使用することを必要とせずに大きいパフォーマンス向上を与える。
図4は、実施例に従ってディスクリプタ・プリフェッチ・バッファを有するダイレクト・メモリ・アクセス装置を示すブロック図である。DMA装置400はソース装置からの読取りオペレーションおよびターゲット装置への書込みオペレーションを行なうことによってDMAコマンドを実行することができる。DMA装置400のコンポーネントの多くは、図を簡潔にするために示されていない。DMA装置400が、図4に示されていないもっと多くの特徴および機能を含み得るということは当業者には明らかであろう。DMA装置400は、DMAエンジン(DE)412およびバス・エンジン(BE)414を含む。BE414は、例えば、システム・メモリ430から、ディスクリプタ431〜435によって定義されるようなDMAコマンドを読取ることが可能である。ディスクリプタ431〜435は、システム・メモリ430におけるリンク・リストであってもよい分散/収集リストを含む。
図示の実施例によれば、図4に示されるように、例えば、BE414は、所定の数のディスクリプタを、バス420を介してディスクリプタ・プリフェッチ・バッファ450にプリフェッチする。1つの実施例では、各チャネルがディスクリプタの異なるリンク・リストを追跡するので、各DMAチャンネルのためのディスクリプタ・プリフェッチ・バッファが存在し得る。しかし、図4では、図を簡素にするために、1つのディスクリプタ・プリフェッチ・バッファだけしか示されない。図示の例では、ディスクリプタ・プリフェッチ・バッファ450は4つのディスクリプタ451〜454を保持する。ディスクリプタ・プリフェッチ・バッファ450は、実施態様次第で、特にDMA装置400のレイテンシ環境次第で、もっと多くのまたは少ないディスクリプタを保持することも可能である。
各ディスクリプタは、例えば、64バイトの長さのものでもよい。分散/収集オペレーションがチャネルにおけるソフトウェアによって開始されると直ちに、DE412は、この例では、単一の256バイト・トランザクションで4つの順次的なディスクリプタを求める要求を送出する。BE414はそのトランザクションを遂行する。BE414は、ディスクリプタを受け取ると、それをディスクリプタ・プリフェッチ・バッファ450に格納する。
データがディスクリプタ・プリフェッチ・バッファ450に入れられると、DMA装置400は急いでそのデータを評価し、各ディスクリプタが前のディスクリプタに対して実際に順次的であるかどうか、或いは、そもそも、ディスクリプタであるかどうかさえ決定する。ディスクリプタ451〜454はバッファ450に格納され、有効/無効フラグ456を含んでいる。各順次的ディスクリプタは、有効/無効フラグ456を使用して有効なものとしてマークされる。ディスクリプタが非順次的な、即ち、無効なものである場合、DMA装置400は、フラグ456を使用して、そのディスクリプタおよびそれに続くすべてディスクリプタを無効なものとしてマークする。DE412は、ディスクリプタがBE414に送られるとき、そのディスクリプタの有効化を行なう。
フラグ456を使用してディスクリプタが無効のものとしてマークされる場合、ディスクリプタ・プリフェッチ・バッファ450におけるスロットは空であると見なされる。従って、いずれのディスクリプタも無効としてマークされるる場合、バッファ450は実際には満杯でなく、BE414は、バッファ内の利用可能なスペースの量に基づいて別のディスクリプタ・フェッチを直ちに行なうことが可能である。
例えば、4つのディスクリプタを保持することができるバッファを考察すると、先ず、BEが4つのディスクリプタをバッファにフェッチする。この例では、第1および第2のディスクリプタを有効であると見なすが、第3のディスクリプタは非順次的であることが分かっている。DMA装置は第1および第2のディスクリプタを有効なものとしてマークし、第3および第4のディスクリプタを無効のものとしてマークする。ディスクリプタ・プリフェッチ・バッファに2つの利用可能なスロットがあるので、第3のディスクリプタが無効なものであることが分かると直ちに、DEは2つの更なるディスクリプタを要求する。
ディスクリプタをフェッチするためのルールは、プリフェッチ・バッファに利用可能なスペースが存在するときには常に、有効なディスクリプタの処理によって、または、プリフェッチされたディスクリプタが到着したときにそれが無効なものであるとわかったことによって、DEは、そのバッファにおける利用可能なスペースを満たすために必要な量のディスクリプタを要求する単一のトランザクションをキューに入れる。従って、上記の例によれば、DEは、如何に多くのスペースがそのバッファにおいて現在利用可能であるかに従って、1つのトランザクションで1つ、2つ、3つ、または4つのディスクリプタを要求することができる。
典型的なオペレーション中に、DEは、チャネルを開始させるために4つのディスクリプタを要求し、しかる後、ディスクリプタの処理を完了するたびに、1つのディスクリプタを要求するであろう。DEは、それがバッファにおける他の3つのディスクリプタを完全に処理するまで、次のディスクリプタに対するデータを必要としないであろう。この機構は、合理的なサイズにされたパケットに対する機能停止を回避する時間に十分に先立って、ディスクリプタがフェッチされることを可能にしなければならない。もちろん、各ディスクリプタが指示するパケット・サイズが臨界的な大きさより小さい場合、機能停止があるであろう。プリフェッチ・エントリの数は、各ディスクリプタが記述し得る最大のデータ・フェッチ・レイテンシ、最大のディスクリプタ・フェッチ・レイテンシ、および最小パケット・サイズに従って大きさを決められなければならない。
上述のディスクリプタ・プリフェッチ・バッファを備えたDMAコントローラが十分に機能するためには、ソフトウェアが、可能な場合は常にメモリにディスクリプタ・リンク・リストを順次形成しなければならない。各非逐次的ディスクリプタは、DMAエンジンに、それがプリフェッチしたデータを破棄させ、ディスクリプタ・フェッチを新しいアドレスに戻らせてそれを開始させ、従って機能停止を生じさせるであろう。ソフトウェアは、単に、所定ポイントまでディスクリプタ・リンク・リストの順次的性質を制御することだけができる。ソフトウェアは、例えば、仮想メモリにおいてディスクリプタを順次的にし得るが、オペレーティング・システムは、その対応する実ページを物理メモリにおいて非逐次的にマップし得る。ページは一般に少なくとも4kであるので、非逐次ページによる非逐次ディスクリプタの可能性が存在する前、少なくとも64個の逐次的(64バイト)ディスクリプタが存在し得る。ページ境界によるこれらの「ジャンプ」は、上述のディスクリプタ・プリフェッチ・バッファを使用するDMA装置におけるパフォーマンスに無視し得る程度の影響を及ぼすであろう。
しかし、順次ディスクリプタを有することはDMA装置の正しいオペレーションにとって不必要であるということを留意することが重要である。たとえディスクリプタがいずれも順次的でなくても、正しい結果が得られるであろう。メモリ内にディスクリプタ・リンク・リストを順次的に形成することは、パフォーマンスにだけインパクトを与えるが、機能には与えない。
図5は、実施例に従って、ディスクリプタ・プリフェッチを有するダイレクト・メモリ・アクセス装置のオペレーションを示すフローチャートである。そのフローチャート表示の各ブロックおよびそのフローチャート表示におけるブロックの組合せを、コンピュータ・プログラム命令によって具現化し得るということは明らかであろう。プロセッサまたは他のプログラマブル・データ処理装置上で実行される命令がそのフローチャートのブロックにおいて指定された機能を具現化するための手段を作成するように、これらのコンピュータ・プログラム命令をプロセッサまたは他のプログラマブル・データ処理装置に提供してマシンを製造することも可能である。フローチャートのブロックにおいて指定された機能を具現化する命令手段を含むソフトウェアを生成するというような特定の方法で機能するよう、プロセッサまたは他のプログラマブル・データ処理装置を指示し得るコンピュータ可読メモリまたは記憶媒体にこれらのコンピュータ・プログラム命令を格納することも可能である。
従って、フローチャートのブロックは、指定された機能を遂行するための手段の組合せ、指定された機能を遂行するためのステップの組合せ、および指定された機能を遂行するためのプログラム命令手段をサポートする。フローチャートの各ブロック、およびフローチャートにおけるブロックの組合せが、指定された機能またはステップを遂行する特殊目的のハードウェア・ベースのコンピュータ・システムによって、或いは特殊目的ハードウェアおよびコンピュータ命令の組合せによって具現化され得ることも明らかであろう。
次に図5を参照すると、オペレーションが開始し、DMA装置は、ディスクリプタがシステム・メモリにおける分散/収集リンク・リストにおいて利用可能であるかどうかを決定する(ブロック502)。ディスクリプタが利用可能でない場合、オペレーションはブロック502に戻り、ディスクリプタが利用可能になるまで待機する。ブロック502においてディスクリプタが利用可能である場合、DMA装置は、スペースがディスクリプタ・プリフェッチ・バッファにおいて利用可能であるかどうかを決定する(ブロック504)。スペースが利用可能でない場合、オペレーションはブロック502に戻り、ディスクリプタが利用可能になるまで待機する。
ブロック504において、スペースがプリフェッチ・バッファにおいて利用可能である場合、DMA装置はディスクリプタ・プリフェッチ・バッファにおける利用可能なディスクリプタ・スロットの数を決定する(ブロック506)。しかる後、バス・エンジンがディスクリプタをディスクリプタ・プリフェッチ・バッファにフェッチする(ブロック508)。
次に、DMA装置が、プリフェッチされたディスクリプタの有効性をチェックし(ブロック510)、そのディスクリプタが有効かどうかを決定する(ブロック512)。例えば、それが、バッファにおける前のディスクリプタによって指示された順次ディスクリプタでない場合、そのディスクリプタは無効なものであろう。ディスクリプタが無効である場合、DMA装置は、有効/無効フラグを使用してそのディスクリプタおよびその後のすべてのディスクリプタを無効としてマークし(ステップ514)、しかる後、オペレーションは、ブロック502に戻り、ディスクリプタが利用可能になるまで待機する。そうでない場合、DMA装置はそのディスクリプタを有効としてマークする(ステップ516)。
その後、DMA装置は、そのディスクリプタがフェッチされた最後のディスクリプタであるかどうかを決定する(ブロック518)。ディスクリプタが最後のプリフェッチされたディスクリプタでない場合、オペレーションはブロック510に戻り、DMA装置は次のプリフェッチされたディスクリプタの有効性をチェックする。ブロック518においてディスクリプタが最後のプリフェッチされたディスクリプタである場合、オペレーションはブロック502に戻り、更なるディスクリプタが利用可能になるのを待つ。
上述のDMAプリフェッチ機構は、或るデータ・パケット・サイズに対しては十分に機能するが、もっと小さいパケット・サイズに関しては機能停止を生じることがある。別の実施例では、DMA装置はアグレッシブ・プリフェッチを使用する。アグレッシブ・プリフェッチは、それが最後に更なるディスクリプタを破棄しなければならないために多くのバス帯域幅を使用し、従って、それは、上述のディスクリプタ・プリフェッチ機構が扱い得るパケットよりも小さいパケットをサポートしなければならないときにだけ使用されるであろう。
小さいパケット・サイズで生じる問題は、DEがBEへのトランザクションをキューに入れ始めること、および、プリフェッチ・バッファが早く空になり始めるということである。プリフェッチ・バッファが空になり始めると直ちに、DEはプリフェッチ要求を行なう。並び方(how things line up)次第で、通常、BEにより処理された2つのディスクリプタと、DEが次のディスクリプタのプリフェッチを行なう準備ができているときにプリフェッチ・バッファに残っている2つのディスクリプタとが存在する。これは、DEに更に2つのディスクリプタを要求させる。そこで、数クロック・サイクル後に、DEは、BEへの最後の2つのディスクリプタに対するトランザクションの残りをキューに入れ、プリフェッチ・バッファは空になる。従って、DEは、それが更に数クロック・サイクル待っていた場合、それが実際には4つのディスクリプタを要求し得たとき、2つのディスクリプタを要求した。DEは一度に1つの未処理のディスクリプタしかサポートし得ないので、順序の狂ったプリフェッチの復旧をサポートする必要があるというような2つ以上のことをサポートする場合に多くのかなりの困難が存在するとき、これは機能停止を引き起こす。
2つのディスクリプタが戻り、DEがそれらを素早く処理する。従って、DEは4つの更なるディスクリプタを要求する。4つのディスクリプタが戻ると、同じことが生じ、DEは、次のフェッチにおいて更に2つのディスクリプタを要求する。その結果、DEは、4つ、2つ、4つ、2つ等のパターンを繰り返す。これは、パフォーマンスにおける機能停止を引き起こす。
実施例によれば、ディスクリプタ・プリフェッチ・バッファに少しでもスペースある場合には常に、DEは最大数のディスクリプタを要求する。これは、バッファが格納し得るディスクリプタの量よりも多くのディスクリプタ・データをDEが要求するので、非常に積極的である。利用可能なバッファ・スペースが存在しない到着したディスクリプタは廃棄される。しかし、高レイテンシ読取り環境では、バッファがディスクリプタを受け取る時までに、DMA装置は更に幾つかのディスクリプタを処理してしまいそうなので、この積極的プリフェッチが機能する。従って、これがなければ、予想されなかったエクストラ・データを使用することも可能である。格納され得ない何らかのディスクリプタ・データを読取ることによって選択されたエクストラ帯域幅よりも、その後の要求を待つことなく使用することができるディスクリプタを早く受け取ることによって得られるパフォーマンスの方が非常に重要である。
パケット・サイズが大きいとき、バッファにはそれらを格納する空きがないので、DMA装置は、結局、多くのディスクリプタを廃棄することになる。しかし、パケット・サイズが大きいと、ディスクリプタの不足によりパイプラインを機能停止するという危険がないので、廃棄されたディスクリプタによって使用される追加の帯域幅は無視し得る。
図6は、実施例に従って、アグレッシブ・ディスクリプタ・プリフェッチを有するダイレクト・メモリ・アクセス装置のオペレーションを示すフローチャートである。オペレーションが開始し、システム・メモリ内の分散/収集リンク・リストにおけるディスクリプタが利用可能であるかどうかをDMA装置が決定する(ブロック602)。ディスクリプタが利用可能でない場合、オペレーションはブロック602に戻り、ディスクリプタが利用可能になるまで待機する。ブロック602においてディスクリプタが利用可能である場合、DMA装置は、ディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であるかどうかを決定する(ブロック604)。スペースが利用可能でない場合、オペレーションはブロック602に戻り、ディスクリプタが利用可能になるまで待機する。
ブロック604においてプリフェッチ・バッファにおけるスペースが利用可能である場合、ディスクリプタ・プリフェッチ・バッファが保持する最大数のディスクリプタをバス・エンジンがフェッチする(ブロック606)。しかる後、BEが、フェッチされたディスクリプタをディスクリプタ・プリフェッチ・バッファに格納する(ブロック608)。次に、DMA装置は、格納されたプリフェッチされたディスクリプタの有効性をチェックし(ブロック610)、ディスクリプタが有効であるかどうか決定する(ブロック612)。例えば、ディスクリプタが、バッファにおける前のディスクリプタによって指示された順次的ディスクリプタでない場合、そのディスクリプタは無効であるかもしれない。ディスクリプタが無効である場合、DMA装置は、有効/無効フラグを使用してそのディスクリプタを無効としてマークし(ブロック614)、残りのプリフェッチされたディスクリプタを廃棄し(ブロック620)、オペレーションはブロック602に戻って更なるディスクリプタが利用可能になるのを待つ。そうでない場合、DMA装置は、ディスクリプタを有効としてマークする(ブロック616)。
しかる後、DMA装置は、プリフェッチ・バッファがディスクリプタを格納するための空きを有するかどうかを決定する(ブロック618)。バッファが満杯でない場合、オペレーションはブロック608に戻り、DMA装置が次のプリフェッチされたディスクリプタを格納するブロック608に戻る。ブロック618においてバッファが満杯である場合、DMA装置は残りのプリフェッチされたディスクリプタを廃棄し(ブロック620)、オペレーションはブロック602に戻って、更なるディスクリプタが利用可能になるのを待つ。
従って、本実施例は、疎結合のDMAエンジン(DE)およびバス・エンジン(BE)として構成されるDMA装置を提供することによって、従来技術の欠点を解決する。DEは、プログラムされたデータ・ブロック移動を個別のトランザクションにし分解し、分散/収集ディスクリプタを解釈し、チャネル間の調整を行なう。BEは、DMA装置が接続されているバスのバス・プロトコルを理解し、DEによって送られたトランザクションをすべて実行する。DEおよびBEは、DEとBEとの間でキューに入れることが可能な結合読取り・書込み(RW)コマンドを使用することによって、プロセスをより効率的にすることが可能である。
DMA装置は、ディスクリプタをディスクリプタ・プリフェッチ・バッファにプリフェッチする。ディスクリプタ・プリフェッチ・バッファのサイズは、所与のレイテンシ環境にとって適切な数のディスクリプタを保持する。ディスクリプタのリンク・リストをサポートするために、DMAエンジンは、ディスクリプタがメモリにおいて順次的であるという仮定に基づいてそれらのディスクリプタをプリフェッチし、この仮定に反することがわかった如何なるディスクリプタも廃棄する。DMAエンジンは、可能な限り常に、1つのトランザクション当たり複数のディスクリプタを要求することによって、ディスクリプタ・プリフェッチ・バッファを満杯に保つように努める。バス・エンジンは、システム・メモリからこれらのディスクリプタをフェッチし、それらをプリフェッチ・バッファに書込む。DMAエンジンは、ディスクリプタ・プリフェッチ・バッファに少しでもスペースがある場合には常に、バッファがサポートし得る最大数のディスクリプタをバス・エンジンが要求するという、アグレッシブ・プリフェッチを使用することが可能である。DMA装置は、格納することができないあらゆる残るディスクリプタを廃棄する。
実施例が、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、或いは、ハードウェア要素およびソフトウェア要素の両方を含んだ実施例の形式を取ることが可能であるということは明らかであろう。1つの実施例では、その実施例の機構はソフトウェアにおいて具現化される。そのソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコード等を含むが、それに限定されない。
更に、実施例は、コンピュータまたは任意の命令実行システムによって、或いはそれに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスし得るコンピュータ・プログラムの形式を取ることも可能である。この説明のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって使用するための、或いはそれらに関連して使用のためのプログラムを含有し、格納し、通信し、伝播し、または搬送することができる任意の装置であってもよい。
その媒体は、電子システム、磁気システム、光学的システム、電磁気システム、赤外線システム、または半導体システム(もしくは装置もしくはデバイス)、或いは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、固定磁気ディスク、および光ディスクを含む。光ディスクの現用の例は、読取り専用コンパクト・ディスク(CD−ROM)、読取り/書込みコンパクト・ディスク(CD−R/W)、およびDVDを含む。
プログラム・コードを格納および/または実行するために適したデータ処理システムは、システムバスを介してメモリ素子に直接あるいは間接的に接続された少なくとも1つのプロセッサを含むであろう。メモリ素子は、プログラム・コード、大容量記憶装置、およびキャッシュ・メモリの実際の実行中に使用されるローカル・メモリを含み得る。なお、ローカル・メモリは、コードが実行中に大容量記憶装置から検索されなければならない回数を減らすために、少なくとも幾つかのプログラム・コードの一時的記憶装置を提供する。
入出力装置またはI/O装置(キーボード、ディスプレイ、ポインティング・デバイス等を含むが、これらに限定されない)は、システムに直接または介在のI/Oコントローラを通して接続することが可能である。ネットワーク・アダプタは、データ処理システムが、介在の専用ネットワークまたは公衆ネットワークを介して他のデータ処理システム或いは遠隔のプリンター或いは記憶装置に接続されることを可能にするために接続されてもよい。モデム、ケーブル・モデムおよび Ethernet カードは、数少ない現在利用可能なタイプのネットワーク・アダプタである。
本発明に関する記述は、図解および説明を目的として行なわれたものであり、網羅的であること或いは開示された形式の発明に限定されることを意図するものではない。多くの修正および変更が当業者には明らかであろう。本実施例は、発明の原理および実用的な応用例を最もよく理解するために、および、意図する特定の用途に適するよう当業者が種々の実施例に関して本発明を理解することを可能にするために、選択および記述された。
実施例の諸局面を具現化し得るデータ処理システムの例示的なブロック図である。 実施例の諸局面を具現化し得る例示的なデータ処理システムのブロック図である。 実施例に従ってサウス・ブリッジを示すブロック図である。 実施例に従ってディスクリプタ・プリフェッチ・バッファを有するダイレクト・メモリ・アクセス装置を示すブロック図である。 実施例に従ってディスクリプタ・プリフェッチを用いたダイレクト・メモリ・アクセス装置のオペレーションを示すフローチャートである。 実施例に従ってアグレッシブ・ディスクリプタ・プリフェッチを用いたダイレクト・メモリ・アクセス装置のオペレーションを示すフローチャートである。

Claims (13)

  1. ダイレクト・メモリ・アクセス装置においてディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なうための方法であって、
    前記ダイレクト・メモリ・アクセス装置内のディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、物理メモリに順次的に格納された複数のダイレクト・メモリ・アクセス・ディスクリプタを前記ディスクリプタ・プリフェッチ・バッファにフェッチするステップと、
    前記ディスクリプタ・プリフェッチ・バッファからのディスクリプタに従ってダイレクト・メモリ・アクセス・ブロック移動を行なうために、前記ディスプリクタを処理するステップと、
    を含む、方法。
  2. 前記複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックするステップと、
    前記複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが非順次的であることに応答して、前記所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークするステップと、
    を更に含む、請求項1に記載の方法。
  3. 前記所与のダイレクト・メモリ・アクセス・ディスクリプタの後の各ディスクリプタを無効としてマークするステップを更に含む、請求項2に記載の方法。
  4. プリフェッチ・バッファを有するダイレクト・メモリ・アクセス・エンジンと、
    バス・エンジンと、
    を含む、ダイレクト・メモリ・アクセス装置であって、
    前記ダイレクト・メモリ・アクセス装置内のディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、前記バス・エンジンは、物理メモリに順次的に格納された複数のダイレクト・メモリ・アクセス・ディスクリプタを前記ディスクリプタ・プリフェッチ・バッファにフェッチし、
    前記ダイレクト・メモリ・アクセス装置は、前記ディスクリプタ・プリフェッチ・バッファからのダイレクト・メモリ・アクセス・ディスプリクタに従ってダイレクト・メモリ・アクセス・ブロック移動を行なうために、前記ダイレクト・メモリ・アクセス・ディスクリプタ処理する、
    前記ダイレクト・メモリ・アクセス装置。
  5. 前記ダイレクト・メモリ・アクセス・エンジンは、前記複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックし、前記複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが非順次的であることに応答して、前記所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークする、請求項4に記載のダイレクト・メモリ・アクセス装置。
  6. 前記ダイレクト・メモリ・アクセス・エンジンは、前記所与のダイレクト・メモリ・アクセス・ディスクリプタの後の各ディスクリプタを無効としてマークする、請求項5に記載のダイレクト・メモリ・アクセス装置。
  7. 前記ダイレクト・メモリ・アクセス・エンジンは、前記複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックし、前記複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して前記所与のダイレクト・メモリ・アクセス・ディスクリプタが順次的であることに応答して、前記所与のダイレクト・メモリ・アクセス・ディスクリプタを有効としてマークする、請求項4に記載のダイレクト・メモリ・アクセス装置。
  8. バス・エンジンが、前記ディスクリプタ・プリフェッチ・バッファにおける複数の利用可能なスロットを決定し、前記複数の利用可能なスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする、請求項4に記載のダイレクト・メモリ・アクセス装置。
  9. 前記バス・エンジンは、前記ディスクリプタ・プリフェッチ・バッファにおける最大数のスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチし、フェッチされた複数のダイレクト・メモリ・アクセス・ディスクリプタを前記ディスクリプタ・プリフェッチ・バッファに格納しようとし、前記ディスクリプタ・プリフェッチ・バッファが満杯であることに応答して、前記ディスクリプタ・プリフェッチ・バッファに格納することができなかった残りのダイレクト・メモリ・アクセス・ディスクリプタを前記複数のダイレクト・メモメモリ・アクセス・ディスクリプタから廃棄する、請求項4に記載のダイレクト・メモリ・アクセス装置。
  10. バスと、
    前記バスに接続された複数のバス・ユニット装置と、
    前記バスに接続され、ディスクリプタ・プリフェッチ・バッファを含むダイレクト・メモリ・アクセス装置と、
    前記バスへのアクセスを行なう処理ユニットと、
    前記処理ユニットに接続されたシステム・メモリと、
    を含み、
    前記処理ユニットは、ダイレクト・メモリ・アクセス・ディスクリプタを前記システム・メモリに格納し、各ダイレクト・メモリ・アクセス・ディスクリプタが前記複数のバス・ユニット装置内のソース装置およびターゲット装置を表わし、
    前記ディスクリプタ・プリフェッチ・バッファにおけるスペースが利用可能であることに応答して、前記ダイレクト・メモリ・アクセス装置は前記システム・メモリから前記ディスクリプタ・プリフェッチ・バッファに複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチし、
    前記ダイレクト・メモリ・アクセス装置は、前記ディスクリプタ・プリフェッチ・バッファからのダイレクト・メモリ・アクセス・ディスクリプタに従ってダイレクト・メモリ・アクセス・ブロック移動を行なうために、前記ダイレクト・メモリ・アクセス・ディスクリプタを処理する、データ処理システム。
  11. 前記ダイレクト・メモリ・アクセス装置は、前記複数のダイレクト・メモリ・アクセス・ディスクリプタの有効性をチェックし、前記複数のダイレクト・メモリ・アクセス・ディスクリプタ内の前のダイレクト・メモリ・アクセス・ディスクリプタに関して所与のダイレクト・メモリ・アクセス・ディスクリプタが非順次的であることに応答して、前記所与のダイレクト・メモリ・アクセス・ディスクリプタを無効としてマークする、請求項10に記載のデータ処理システム。
  12. 前記ダイレクト・メモリ・アクセス装置は、ディスクリプタ・プリフェッチ・バッファにおける複数の利用可能なスロットを決定し、前記複数の利用可能なスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチする、請求項10に記載のデータ処理システム。
  13. 前記ダイレクト・メモリ・アクセス装置は前記ディスクリプタ・プリフェッチ・バッファにおける最大数のスロットに対応する複数のダイレクト・メモリ・アクセス・ディスクリプタをフェッチし、前記フェッチされたダイレクト・メモリ・アクセス・ディスクリプタを前記ディスクリプタ・プリフェッチ・バッファに格納しようとし、前記ディスクリプタ・プリフェッチ・バッファが満杯であることに応答して、前記ディスクリプタ・プリフェッチ・バッファに格納することができなかった残りのダイレクト・メモリ・アクセス・ディスクリプタを前記複数のダイレクト・メモリ・アクセス・ディスクリプタから廃棄する、請求項10に記載のデータ処理システム。
JP2008000839A 2007-01-10 2008-01-07 ディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なう方法、ダイレクト・メモリ・アクセス装置、及びデータ処理システム Active JP4939443B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/621,789 US7620749B2 (en) 2007-01-10 2007-01-10 Descriptor prefetch mechanism for high latency and out of order DMA device
US11/621789 2007-01-10

Publications (2)

Publication Number Publication Date
JP2008171426A true JP2008171426A (ja) 2008-07-24
JP4939443B2 JP4939443B2 (ja) 2012-05-23

Family

ID=39595276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008000839A Active JP4939443B2 (ja) 2007-01-10 2008-01-07 ディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なう方法、ダイレクト・メモリ・アクセス装置、及びデータ処理システム

Country Status (3)

Country Link
US (1) US7620749B2 (ja)
JP (1) JP4939443B2 (ja)
CN (1) CN101221543B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032243A (ja) * 2007-07-30 2009-02-12 Nvidia Corp 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
JP2016167275A (ja) * 2016-03-24 2016-09-15 インテル・コーポレーション 安全なダイレクトメモリアクセス

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676192B1 (en) * 2005-12-21 2010-03-09 Radio Shack, Corp. Radio scanner programmed from frequency database and method
US7711888B2 (en) * 2006-12-31 2010-05-04 Texas Instruments Incorporated Systems and methods for improving data transfer between devices
EP1950932A1 (en) * 2007-01-29 2008-07-30 Stmicroelectronics Sa System for transmitting data within a network between nodes of the network and flow control process for transmitting said data
TWI334541B (en) * 2007-06-22 2010-12-11 Via Tech Inc Prd (physical region descriptor) pre-fetch methods for dma (direct memory access) unit
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8176252B1 (en) 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
US8495301B1 (en) 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
US8650364B2 (en) * 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
US20100146518A1 (en) * 2008-12-08 2010-06-10 International Business Machines Corporation All-To-All Comparisons on Architectures Having Limited Storage Space
US7870308B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Programmable direct memory access engine
US7870309B2 (en) 2008-12-23 2011-01-11 International Business Machines Corporation Multithreaded programmable direct memory access engine
US8446944B1 (en) * 2009-04-30 2013-05-21 Verint Video Solutions Inc. Data processing system and method
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US8738863B2 (en) * 2009-09-25 2014-05-27 Intel Corporation Configurable multi-level buffering in media and pipelined processing components
US8789153B2 (en) * 2010-01-27 2014-07-22 Authentify, Inc. Method for secure user and transaction authentication and risk management
US8626963B2 (en) * 2010-05-04 2014-01-07 Mediatek Inc. Packet based data transfer system and method for host-slave interface
CN101894000A (zh) * 2010-07-02 2010-11-24 北京海泰方圆科技有限公司 Iso文件的读写方法和读写系统
US8855194B2 (en) * 2011-05-09 2014-10-07 Texas Instruments Incorporated Updating non-shadow registers in video encoder
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
WO2013095461A1 (en) 2011-12-21 2013-06-27 Intel Corporation Secure direct memory access
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US8826391B2 (en) 2012-07-02 2014-09-02 Freescale Semiconductor, Inc. Virtualized trusted descriptors
US10095433B1 (en) * 2012-10-24 2018-10-09 Western Digital Technologies, Inc. Out-of-order data transfer mechanisms for data storage systems
KR101993187B1 (ko) 2012-11-26 2019-06-27 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US10110518B2 (en) 2013-12-18 2018-10-23 Mellanox Technologies, Ltd. Handling transport layer operations received out of order
US9811467B2 (en) * 2014-02-03 2017-11-07 Cavium, Inc. Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US9952991B1 (en) * 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US20170147517A1 (en) * 2015-11-23 2017-05-25 Mediatek Inc. Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10956245B1 (en) * 2017-07-28 2021-03-23 EMC IP Holding Company LLC Storage system with host-directed error scanning of solid-state storage devices
US10983920B2 (en) * 2018-02-08 2021-04-20 Xilinx, Inc. Customizable multi queue DMA interface
US10657087B2 (en) 2018-05-31 2020-05-19 Toshiba Memory Corporation Method of out of order processing of scatter gather lists
JP2020154493A (ja) 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
US11669464B1 (en) 2020-04-24 2023-06-06 Xilinx, Inc. Multi-addressing mode for DMA and non-sequential read and write patterns
US11372645B2 (en) * 2020-06-12 2022-06-28 Qualcomm Incorporated Deferred command execution
CN111651380B (zh) * 2020-06-17 2023-08-18 中国电子科技集团公司第十四研究所 一种基于描述符表的参数加载方法
CN114691562A (zh) * 2020-12-29 2022-07-01 中科寒武纪科技股份有限公司 用于dma操作的方法、装置、设备、集成电路芯片和板卡
US20230161725A1 (en) * 2021-11-23 2023-05-25 Meta Platforms, Inc. Smart scalable design for a crossbar
US11622004B1 (en) 2022-05-02 2023-04-04 Mellanox Technologies, Ltd. Transaction-based reliable transport
CN114968864B (zh) * 2022-07-28 2022-10-25 飞腾信息技术有限公司 验证环境的搭建方法、芯片的验证方法及系统
US20240330213A1 (en) * 2023-03-28 2024-10-03 Xilinx, Inc. Variable buffer size descriptor fetching for a multi-queue direct memory access system
CN116578391B (zh) * 2023-07-08 2023-09-26 北京云豹创芯智能科技有限公司 描述符表读取方法及模块、后端设备、介质、设备、芯片
CN117667793B (zh) * 2024-01-30 2024-04-09 苏州元脑智能科技有限公司 一种多通道描述符管理系统、方法、设备、介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03158952A (ja) * 1989-11-17 1991-07-08 Hitachi Ltd Dmaコントローラおよび情報処理システム
JPH0696007A (ja) * 1992-09-17 1994-04-08 Fujitsu Ltd Dma転送方式
JPH07306785A (ja) * 1994-05-11 1995-11-21 Toshiba Corp 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708233B1 (en) * 1999-03-25 2004-03-16 Microsoft Corporation Method and apparatus for direct buffering of a stream of variable-length data
US6848029B2 (en) * 2000-01-03 2005-01-25 Dirk Coldewey Method and apparatus for prefetching recursive data structures
US7054962B2 (en) * 2002-03-08 2006-05-30 Hewlett-Packard Development Company, L.P. Embedded system having broadcast data storing controller
US7631106B2 (en) * 2002-08-15 2009-12-08 Mellanox Technologies Ltd. Prefetching of receive queue descriptors
JPWO2004057481A1 (ja) * 2002-12-20 2006-04-27 富士通株式会社 Dma制御装置、dma制御方法、dma制御プログラム
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7512722B2 (en) * 2003-07-31 2009-03-31 International Business Machines Corporation Method for completing a plurality of chained list DMA commands that include a fenced list DMA command element
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US7076578B2 (en) * 2003-12-22 2006-07-11 Intel Corporation Race free data transfer algorithm using hardware based polling
US20060206635A1 (en) * 2005-03-11 2006-09-14 Pmc-Sierra, Inc. DMA engine for protocol processing
US7218566B1 (en) * 2005-04-28 2007-05-15 Network Applicance, Inc. Power management of memory via wake/sleep cycles
US7650557B2 (en) * 2005-09-19 2010-01-19 Network Appliance, Inc. Memory scrubbing of expanded memory
US7707477B2 (en) * 2005-09-29 2010-04-27 Apple Inc. Checksum calculation
US7620746B2 (en) * 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US7496695B2 (en) * 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
CN100507886C (zh) 2005-12-22 2009-07-01 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置
US7822903B2 (en) * 2006-02-24 2010-10-26 Qualcomm Incorporated Single bus command having transfer information for transferring data in a processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03158952A (ja) * 1989-11-17 1991-07-08 Hitachi Ltd Dmaコントローラおよび情報処理システム
JPH0696007A (ja) * 1992-09-17 1994-04-08 Fujitsu Ltd Dma転送方式
JPH07306785A (ja) * 1994-05-11 1995-11-21 Toshiba Corp 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032243A (ja) * 2007-07-30 2009-02-12 Nvidia Corp 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
JP2016167275A (ja) * 2016-03-24 2016-09-15 インテル・コーポレーション 安全なダイレクトメモリアクセス

Also Published As

Publication number Publication date
CN101221543B (zh) 2012-02-08
CN101221543A (zh) 2008-07-16
US7620749B2 (en) 2009-11-17
US20080168259A1 (en) 2008-07-10
JP4939443B2 (ja) 2012-05-23

Similar Documents

Publication Publication Date Title
JP4939443B2 (ja) ディスクリプタ・プリフェッチを用いてダイレクト・メモリ・アクセス・ブロック移動を行なう方法、ダイレクト・メモリ・アクセス装置、及びデータ処理システム
US7603490B2 (en) Barrier and interrupt mechanism for high latency and out of order DMA device
US10114651B2 (en) Gathering and scattering multiple data elements
US7523228B2 (en) Method for performing a direct memory access block move in a direct memory access device
JP6381541B2 (ja) データ処理システム中で命令を処理する方法、回路構成、集積回路デバイス、プログラム製品(リモート処理ノード中のアドレス変換データ構造を更新するための変換管理命令)
TWI514275B (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
US8447962B2 (en) Gathering and scattering multiple data elements
JP5764265B2 (ja) 複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワークを利用する回路装置、集積回路デバイス、プログラム製品および方法(複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワーク)
JP5923838B2 (ja) 割り込み分配スキーム
TWI444828B (zh) PCI Express增強及延伸
US9280290B2 (en) Method for steering DMA write requests to cache memory
US6665749B1 (en) Bus protocol for efficiently transferring vector data
JP5977094B2 (ja) フレキシブルフラッシュコマンド
TW201120643A (en) Providing hardware support for shared virtual memory between local and remote physical memory
KR20040045035A (ko) 힌트 버퍼를 이용한 메모리 액세스 대기시간 숨김
JP2013025795A (ja) フラッシュデバイスのためのフラッシュコントローラハードウェアアーキテクチャ
CN112416250B (zh) 基于NVMe的固态硬盘的命令处理方法及相关设备
JP2007207248A (ja) 複数のキャッシュ・ミス後の命令リスト順序付けのための方法
JP2013025794A (ja) フラッシュインタフェースの有効利用
US7805579B2 (en) Methods and arrangements for multi-buffering data
TWI722009B (zh) 用於在遠端處理器上進行基元動作之硬體機制
US8595394B1 (en) Method and system for dynamic buffering of disk I/O command chains
US6738837B1 (en) Digital system with split transaction memory access
JP2007207249A (ja) ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ
US8719542B2 (en) Data transfer apparatus, data transfer method and processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110914

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110929

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111212

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120111

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120131

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

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

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4939443

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250