JP5026660B2 - 直接メモリアクセス(dma)転送バッファプロセッサ - Google Patents

直接メモリアクセス(dma)転送バッファプロセッサ Download PDF

Info

Publication number
JP5026660B2
JP5026660B2 JP2003551647A JP2003551647A JP5026660B2 JP 5026660 B2 JP5026660 B2 JP 5026660B2 JP 2003551647 A JP2003551647 A JP 2003551647A JP 2003551647 A JP2003551647 A JP 2003551647A JP 5026660 B2 JP5026660 B2 JP 5026660B2
Authority
JP
Japan
Prior art keywords
descriptor
dxb
memory access
host
direct memory
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
JP2003551647A
Other languages
English (en)
Other versions
JP2005513594A (ja
Inventor
ローチ、ブラドレイ
ダックマン、デイビッド
ピール、エリク
シュー、クイン
Original Assignee
エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
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 エミュレックス デザイン アンド マニュファクチュアリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Publication of JP2005513594A publication Critical patent/JP2005513594A/ja
Application granted granted Critical
Publication of JP5026660B2 publication Critical patent/JP5026660B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、直接メモリアクセス(DMA)転送バッファプロセッサに関する。
本出願は、2001年12月10日出願の米国特許暫定出願第60/339,187号明細書の優先権を主張している。
直接メモリアクセス(DMA)はCPU(中央処理装置)の補助なくシステムメモリと装置間でデータを転送する技術である。その代わりに、典型的にDMA制御装置と呼ばれる特定化されたプロセッサがこれらの転送を管理する。
DMA動作はアクセスされるデータブロックのサイズおよび、転送当りバスで送信されるデータ量に基づいて、バスでの多数の転送を必要とする。DMA動作をセットアップするために、DMA制御装置はデータ転送に使用される物理的なアドレスを獲得し、それらを装置のレジスタへマップする。DMA動作が実行された後、DMA制御装置は個々の転送を事後処理する。これらの事前処理および事後処理は、DMA動作に待ち時間を導入し、全てのデータ転送の動作の効率を著しく減少させる。
上記の問題は本発明によって解決される。本発明はホストメモリを有するホストと、そのホストメモリにアクセスするためにバスによりホストに接続されている入力/出力装置との間でデータを転送するために直接メモリアクセスを行う方法において、入力/出力装置とホストとの間の単一の直接メモリアクセス動作のために、記述子を前記入力/出力装置において発生し、前記記述子を入力/出力装置内の待ち行列に書込み、前記記述子の優先順位に基づいて待ち行列から前記記述子をフェッチし、ホスト中のホストメモリと入力/出力装置中のローカルメモリとの間でデータを転送する直接メモリアクセス動作を実行するステップを含んでおり、前記入力/出力装置において発生する記述子はメモリ記述子と前記直接メモリアクセス動作を識別するタグとを含んでおり、臨界的な直接メモリアクセス動作に対しては、記述子は通常の優先順位より高い優先順位が与えられることを特徴としている。
本発明においてはDMA(直接メモリアクセス)交換ブロック(DXB)プロセッサは、例えば周辺コンポーネント相互接続拡張(PCI−X)バスのようなバスによって、ローカルメモリからホストメモリへデータを書込むための受信プロセッサと、バスによってホストメモリから検索されるデータをローカルメモリへ書込むための送信プロセッサとを含んでいる。各プロセッサは高い優先順位の待ち行列と通常の優先順位の待ち行列を含んでいる。制御プログラムはDXBを発生し、これらはそれぞれ制御プログラムにより割当てられるタグと、直接メモリアクセス動作に対応するメモリ記述子を含んでいる。このメモリ記述子はホストメモリ記述子(アドレス/長さ)および1以上のローカルメモリ記述子を含んでいる。制御プログラムはDXBをキャッシュラインスピル動作の待ち行列の1つに書込む。転送プロセッサは2つのチャンネルレジスタを含み、プロセッサが2つのPCI/Xデータ転送を同時に行うことを可能にしている。
図1は、バス115で通信するホスト105と装置110を含むシステム100を示している。バスは例えばPCI(周辺コンポーネント相互接続)またはPCI/X(PCI拡張)バスインターフェースを使用する。装置はシステム、またはホスト、メモリ120、装置のローカルメモリ125間のDMA動作を制御するためのDMA(直接メモリアクセス)交換ブロック(DXB)プロセッサ500および700を含んでいる。受信DXBプロセッサ500はローカルメモリ125からデータを読取り、バス115によってそのデータをホストメモリ120へ転送するために使用される。送信DXBプロセッサ700はホストメモリ120からローカルメモリ125へデータを書込むために使用される。
DXBプロセッサは単一のDMA動作を説明するためDXBを使用する。制御プログラム130は転送のための適切なアドレスおよび長さを決定し、データを受信(ホストメモリ書込み)またはデータを送信(ホストメモリ読取り)のいずれかのための転送動作を規定するために単一のDXBイメージを生成する。制御プログラム130は各DXBのセットアップ、実行、完了を管理する。制御プログラムは制御プロセッサ135により実行されるファームウェアである。
制御プログラム130は1、2、または3の論理メモリアドレスを1つのホストメモリアドレスにマップし、それによってDMA動作でバスを横切って転送されるデータ量を増加させる。3つのローカルメモリアドレスはローカルメモリ範囲を横切って分散される。DXBは例えば4Kバイトの最大のDMA転送サイズを記述している。
DXBはCPU(中央処理装置)中の内部キャッシュ137のキャッシュラインのサイズに対応する固定したサイズ、例えば例示的なCPU135で32バイトを有する。これは制御プログラム130が装置中の独立したレジスタを設定する代わりに、キャッシュからキャッシュラインスピル動作を使用してDMA動作をセットアップすることを可能にする。
DXBは特有のDXBタグと多数の制御フラグを含んでいる。制御プログラム130はDXBタグを特定し、これは事前処理、実行、事後処理中にDMA動作を識別するのに使用されることができる。制御プログラム130は優先順位に基づいて動作される多数のDMA動作をサポートするためにこれらのタグを使用する。
各受信DXBプロセッサ500 と送信DXBプロセッサ700 は、高い優先順位(HP)DXB待ち行列505 、705 と通常の優先順位(NP)DXB待ち行列510 、710 を含んでいる。それらの待ち行列は円形の待ち行列でよい。高い優先順位は臨界的なDMA動作に対応する優先順位であり、制御プログラム130 によって臨界的なDMA動作を優先させるために高い優先順位のDXB待ち行列505 はNP DXB待ち行列の前に位置させること可能にされている。DXBプロセッサはNP DXB待ち行列でDXBを処理する前に、高い優先順位であるHP DXB待ち行列505 における全てのDXBを実行する。DXBはキャッシュラインスピル動作で待ち行列のうちの一つに書込まれ、そのDXBタグにより待ち行列中で識別される。
DXBプロセッサは図2に示されているように、プットポインタ205とゲットポインタ210を使用してそれらのHPおよびNP DXB待ち行列を管理する。プットポインタ205は制御プログラム130を、DXBがロードされる次の利用可能な待ち行列リング位置へ誘導する。プットポインタ205は制御プログラム130により書込まれ読取られることができ、装置110により読取られることができる。ゲットポインタ210は実行されている現在のDXBまたは実行されるべき次のDXBの位置を示す。ゲットポインタは装置110により書込まれ読取られ、制御プログラム130により読取られることができる。プットおよびゲットポインタはポストインクリメントされる。制御プログラム130は制御プログラムがゲットポインタ値をオーバーランしないような任意の値によりプットポインタをインクリメントする。装置は1だけゲットポインタをインクリメントする。プットおよびゲットポインタは単一のレジスタ中に存在してもよい。
待ち行列が一杯である場合、プットポインタはゲットポインタマイナス1に等しい。この状態は1つの利用可能な待ち行列のエントリが存在することを示しているが、この位置は装置がゲットポインタ210をインクリメントするまで、制御プログラム130により使用されることができない。待ち行列が空である場合には、プットポインタ205はゲットポインタ210に等しい。装置がリセットされた後には、プットおよびゲットポインタはゼロに等しい。
システムは2つのDXBプロセッサ、即ち受信動作のための受信DXBプロセッサと、送信動作のための送信DXBプロセッサとを含んでもよい。DXBプロセッサ500、700は、図3に示されているように、DMA動作が完了するときに、即ち目的地バッファが全てのデータを受信したときに制御プログラム130に通知し、エラーに遭遇したか否かを示すため、完了RAM(ランダムアクセスメモリ)300への書込みポートを備えている。完了RAMに記憶されたDXBは制御プログラム130がDMA動作が何故完了しなかったかを決定するために使用されるエラーインジケータを含んでいる。エラー完了は任意の時間に記入されることができる。DXBプロセッサは動作全体が適切に完了したときのみ通常の完了を記入する。制御プログラム130はHPとNP DXB待ち行列505、510と、完了RAM300を通ってDXBプロセッサにのみアクセスする。
制御プログラム130はDXBに制御フラグを設定することにより、中断が各完了通知で発生されるか否かを選択する能力を有する。これは不必要な中断処理を除去する。しかしながら、DMAエラーが中断がディスエーブルされているDXB動作で生じるならば、DXBプロセッサはI/Oタグ識別と遭遇したエラーのタイプを示す完了RAM300へ完了を通知する。例えばDMA動作全体が制御プログラム130によりセットアップされる4つのDXBを必要とするならば、制御プログラム130は第1の3つのDXBで中断をディスエーブルすることができ、最後のDXBの中断だけをエネーブルする。このシナリオでは、制御プログラム130はエラーが生じないならば、DMA動作全体の完了で1つの中断を処理しさえすればよい。
図4は図5で示されている受信DXBプロセッサ500により実行されるDMA動作400を説明しているフローチャートである。DMA動作を開始するため、制御プログラム130はDXBがHP DXB待ち行列またはNP DXB待ち行列に書込まれるべきであるか否かを決定しなければならない(ブロック405)。次に、制御プログラム130は利用可能なスロットが存在するか否かを決定するために待ち行列のゲットおよびプットポインタを読取る(ブロック410)。制御プログラム130が利用可能なスペースが存在することを決定したならば、制御プログラム130は例えばキャッシュライン書込み動作の使用によってDXBを待ち行列中に記入する(ブロック415)。制御プログラム130は待ち行列に書込まれた有効なDXBの数を示すためにプットポインタをインクリメントする(ブロック420)。
インクリメントされたプットポインタは待ち行列が空でないことをDXB事前プロセッサ515へ示す。DXB事前プロセッサ515は最初にHP DXB待ち行列をチェックし、それが制御プログラム130が使用した待ち行列であるならば、DXBはその待ち行列から読取られる(ブロック430)。そうではないならば、NP DXB待ち行列がDXBに対してチェックされる。DXB事前プロセッサは適切な待ち行列からDXBをフェッチし、そのDXBを次のDXBレジスタ520へロードするために32バイトメモリの読取り動作を開始する(ブロック440)。この例では、DXBタグ#5を割当てられたDXBと、DXBタグ#9を割当てられたDXBはHP DXB待ち行列へ書込まれ、DXB事前プロセッサによりフェッチされる。制御プログラム130はまた直接的に次のDXBレジスタを読取り書込むことにより待ち行列を使用せずにDXBプロセッサを制御する。これはエラー回復動作のような非常に高い優先順位の事象に対して望ましい。これらのレジスタはキャッシュ可能/バッファ可能なアドレススペースに存在し、それ故バースト書込みが実行されることができる。
DXB実行プロセッサ525はDXBタグとホストアドレスおよび長さとをPCI受信FIFO(PRF)530へロードする(ブロック445)。DXB実行プロセッサはDXBタグとホストアドレスおよび長さとをPRF530へ書込むために動作レジスタ527を使用することができる。動作レジスタはDMA動作の最も最近の情報を含んでいる。エラーの場合には、制御プログラム130はデバッグ動作のためにこの情報を検索する。
DXB実行プロセッサ525はデータを読取り、そのデータをPRF530へ書込む動作を開始するためにローカルメモリアドレス/長さフィールド(ローカルメモリ記述子とも呼ばれる)を使用する(ブロック450)。データが入来するとき、これはLMAU(ローカルメモリアプリケーションユニット)540によりPRFに書込まれる。前述したように、DXBは3つのローカルメモリ記述子を含んでいてもよく、その場合、そのDXBのデータは3つの異なるローカルメモリ位置からコンパイルされる。
状態情報と共にDXBタグ#は、ホストメモリ書込み動作が完了するかまたは決定的なエラーで終了するときに完了RAM300を通して制御プログラム130に戻される。
PRF530は実際のデータからPCIアドレス、長さ、DXBタグ情報の境界を定めるために内部の区切りビットを使用する。PRFはデータのサイジング論理を助けるためにPRFに記憶された複数のDXBタグを捕捉することができる。
PCI/PCI−X論理モジュール550はホストメモリ書込み動作を特定するためにPCIアドレスおよび長さ情報を使用する(ブロック455)。PRF530は現在の動作に対してPRFに存在するデータ量を示すためにフィルカウントを通過する。タグカウントがゼロに等しいならば、PRFはフィルカウントを決定するために読取りおよび書込みポインタを使用する。タグカウントがゼロに等しくないならば、PRF530はデータの末尾がどこにあるかを予測するために調節されたPCIの長さフィールドを有する読取りポインタを使用する。動作が完了されるとき、PCI/XモジュールはDXBタグ#をDXBプロセッサに戻す。DXB事後プロセッサはPCI状態と共にDXBタグ情報を完了RAMに書込む(ブロック460)。
PRF530は2つのインジケータを使用して利用可能なデータが存在するときPCI/PCI−X論理モジュール550に通知する。ワードカウントフィールドはホストメモリ120へ書込まれる準備がされているPRF530の64ビットデータワードの総数を表している。PCIアドレス、長さ、DXBタグはデータバイトとしてカウントされない。第2のインジケータはタグカウントである。このカウントは現在PRF530にある完全なPCIデータパケット数(即ちDXBプロセッサがPRFに書込んだDXBタグ数)を表している。
以下の疑似コードはワードカウントおよびタグカウントフィールドを使用するための例示的なルールを記載している。
タグ=0であり、バンクカウント<開始しきい値であるならば、PCI DMA動作は開始しない。
タグカウント=0であり、ワードカウント<開始しきい値であるならば、PCI DMA動作を開始しない。
タグカウント>0であるならば、PCI DMA動作を開始する。
タグカウント=0であり、ワードカウント>開始しきい値であるならば、PCI DMA動作を開始し、タグカウント=0であり、ワードカウント<停止しきい値であるならば、PCI DMA動作を停止し、また、タグカウント=1であるならば、PCI DMA動作を継続する。
PCI/PCI−X論理モジュール550は最後のADB(許容可能な遮断境界)シーケンスを断定するときの決定を行うためPCIアドレスを有するワードカウントを使用する。
ワードカウントはデータのオーバーランとアンダーランのシナリオを阻止するためにPCIクロックドメイン560に位置されることができる。FIFO読取りポインタがPCIクロックドメイン560で動作するので、書込みポインタはPCIクロックドメインに同期されなければならない。このクロッキング方法により、同期遅延のために複数の64ビットワードは常に実際の書込みポインタを遅延する。フルFIFOの場合に対しては、読取りポインタはシステムクロックドメインに同期されなければならないので、空のバンクのインジケータは常に実際の読取りポインタを遅延させる。
図6は、図7で示されている送信DXBプロセッサ700により実行されるDMA動作600を記述するフローチャートである。PCI/Xは32までの未処理の送信動作を同時にサポートできる。このスプリット動作をサポートするため、送信DXBプロセッサは2つのチャンネル、即ちチャンネルAとチャンネルBとで同時に2つのDMA動作で動作することができる。
DMA動作を設定するために、制御プログラム130は所望の待ち行列に対するプット/ゲットポインタを読取る(ブロック605)。利用可能なスペースが存在するならば、DXB事前プロセッサ715はNP DXB待ち行列またはHP DXB待ち行列のいずれかで32バイト書込み動作を行う(ブロック610)。動作を完了するため、制御プログラム130は書込まれた有効なDXBの数を示すためにプットポインタをインクリメントしなければならない(ブロック615)。
制御プログラム130がプットポインタを更新後、DXB事前プロセッサの状態マシンはそのプット>ゲットを決定し、その待ち行列の次のDXBをフェッチする(ブロック620)。以下の条件は次のDXBがフェッチされる前に満たされる必要がある。即ちその条件は有効な信号が断言されず、この断言のないことは次のDXBレジスタ720が利用可能であることを示し、ローカルメモリ記述子(LMD)FIFO722はフルではなく、DXB実行プロセッサはそのエラー状態にはなく、チャンネル制御レジスタの休止ビットは設定されない状態であることである。
DXB事前プロセッサ715が32バイトのDXBを読んでいる一方で、制御データは2つの目的地、即ちPCI動作を制御する目的地と、DMA動作を制御する目的地に分割される。ホストアドレス、長さ、タグは次のDXBレジスタへ書込まれ、それはPCI/Xチャンネルレジスタ702、704に結果として書込まれる(ブロック625)。残りのDXB制御データワードは最初に次のDXBレジスタ720へ書込まれ、再度組織され、ローカルメモリ記述子(LMD)FIFO722に書込まれる(ブロック630)。
DXB読み取りが完了するとき、DXB実行プロセッサ725はゲットポインタをインクリメントし、PCI/Xチャンネルレジスタに通過される有効信号を発生する(ブロック630)。有効信号がPCIクロックドメイン760に同期された後、チャンネルが空でありスプリットが許容されるならば、ホストアドレス、長さ、タグはチャンネルAまたはBレジスタに書込まれる(ブロック635)。
DXB事前プロセッサ715はチャンネルAおよびB制御レジスタの両者が満たされるまで、この動作を継続する(ブロック640)。その後、DXB事前プロセッサ715は第3のDXBを次のDXBレジスタ720とLMD FIFO722へロードする。
DXB実行プロセッサ725はLMD FIFO読取り動作を制御し、動作レジスタ765がローカルメモリ記述子の別のセットに対して準備されるときを監視する。これらの記述子は#0、#1、#2ワードに対するDXBタグとローカルメモリアドレス/バイト長を含んでいてもよい。DXBはそれが含んでいる余分のローカルメモリアドレスの数、即ちワード#1と#2を示す制御フラグを含んでいる。DXB動作レジスタ765はDXBタグを含んでいる2つのレジスタセットと、ローカルメモリアドレス#0−#2を含んでいる。
PCI送信FIFO(PFT)730が少なくとも32バイトのデータを累積し、またはDXBタグがPTF中に書込まれるとき(ブロック645)、PTFはタグレディ信号と共にタグをDXB実行プロセッサ725へ転送する。DXB実行プロセッサはPTF供給タグを読取り、2つの動作レジスタセット765に記憶されているタグと比較する(ブロック650)。一致が発見されるとき、ローカルメモリアドレスと所望のバイト長はlmau_開始信号を使用してDXB実行プロセッサにロードされる(ブロック655)。ローカルメモリアクセスストローブを受信するとき、DXB実行プロセッサはデータFIFOからデータを読取り、ローカルメモリアドレスを使用して、そのデータを図8に示されているサイジングFIFO800とへ書込み、それによってデータおよびバイトカウントをバイトオフセットし、所望の数のバイトを書込む(ブロック660)。データシフト論理が使用されて、サイジングFIFO800で適切にデータを整列するため4つの幅64ビットワードであるシフトレジスタ805が使用される。ポインタはこのレジスタのどのバイトがサイジングFIFOに書込まれる次の4つのバイトであるかを規定する。データがPTF FIFO730から読取られるとき、このデータはシフトインされ、最も古い64ビットワードがシフトアウトされる。ポインタはPFT FIFO730が読取るか、サイジングFIFO800が書込むか、またはその両者か、または他の状態かが任意の所定のクロックサイクルで生じているかにしたがって調節されることができる。32バイトのデータがサイジングFIFO800中に書込まれるとき、(またはスプリット応答またはその他の理由のためにFIFOバイトカウントが最初に特定されたバイトカウントよりも少ないならば、さらに少ない)DXB実行プロセッサ725はLMAU制御状態マシン775へrd_data_pkt_rdy信号を断言する(ブロック665)。
データがサイジングFIFOに書込まれた後、(通常は32バイトの)しきい値を横切って、DXB実行プロセッサはこの事象をLMAU制御状態マシン775 に通知し、その結果、LMAU740 に対して適切な書込みリクエストを行う。この事象をトリガーする他の状態は、DXB実行プロセッサ725 がデータの代わりにタグ区切りを検出し、最後のワード区切りが検出され、または初期バイトカウントがゼロになる状態を含んでいる。
非常に多くのデータをローカルメモリ125 へ書込むことに対する保護は、DXB実行プロセッサ中へ組込まれる。LMAU740 に対するDXB実行プロセッサの初期リクエストが(PCI―Xバス状態のために)実際に所定のローカルメモリリクエストで書込まれるよりも大きいバイトカウントを表したときのような場合である。これはバイトカウントをサイジングFIFO800 に残されたバイトの正確な数を表しているMAU740 へ与える第2のローカルメモリリクエストを行うことにより実行される。
LMAU制御状態マシン775は状態マシンがlmau_開始信号を受信するときにオリジナルローカルメモリアドレスとバイトカウントをローカルLMAU740に転送する(ブロック670)。LMAU制御状態マシンはDXB実行プロセッサ725がデータパスを管理するあいだ、LMAUへの制御信号を管理する(ブロック675)。
DXB実行プロセッサがPTFデータを読取るとき、現在のローカルメモリバッファとバイトカウントは先の読取り動作を示すように調節され、状態マシンは次のデータの処理の準備がされる。PTFデータワードがタグではないならば、DXB実行プロセッサはPTFデータワードが現在のタグのローカルメモリ記述子を使用して書込まれると仮定する。PFTデータワードがタグであるならば、DXB実行プロセッサはタグを読取り、それを管理する方法を決定する。
各DXBが完了するとき、即ち全てのデータがローカルメモリ125へ転送されたとき、送信DXBプロセッサ700はPCI転送状態と共にDXBタグ情報を完了RAM中へ書込む(ブロック680)。
DXB事前プロセッサ715はまたPCI―Xタグも発生する。PCI―Xタグは5ビットのフィールドを有する2つの部分からなる。それが発生する態様についてのこの記述は制御プログラム130が直接的にDXBレジスタをプログラムしない場合にのみ有効である。その場合、PCI―Xタグはチャンネル制御レジスタから直接採取される。両チャンネルでは、上位の2つのビット(4:3)はDXB Tx制御レジスタ(DTCTL)のPTBフィールドから取られる。チャンネルAでは、ビット2は0に固定され、ハードウェアはPCI―Xタグが使用される毎に、カウンタを1だけインクリメントすることにより下位のビット(1乃至0)を発生する。
DXBプロセッサは異なるデータフォーマットを考慮するためにデータモードで動作する。データモードはDXB中の制御フラグによりトリガーされる。データモードはPCIバスとローカルメモリとの間でバイトレーンスワップを行う。PCIバスはリトルエンディアンでのみ動作し、ビッグエンディアンのホストの場合には、ビッグエンディアンホストメモリとPCIバスとの間にバイトレーンスワップが存在する。これはPCIバス115とローカルメモリ125との間に2次スワップが存在しなければならないことを意味している。リトルエンディアンホストでは、ビッグエンディアンローカルメモリとリトルエンディアンPCIバスとの間にバイトレーンスワップもまた存在しなければならない。
図9で示されているように、リトルエンディアン制御モードはPCIバス900とローカルメモリ905との間でバイトレーンスワップは行われない。また64ビットワードホストメモリワードで動作するとき、ローカルメモリはローカルメモリワード0としてホストメモリビット31:0を解釈する。このモードの目的はローカルメモリ905とリトルエンディアンホスト910との間で制御情報を転送することである。
図10に示されているように、ビッグエンディアン制御モードはPCIバス1000とローカルメモリ1005との間でバイトレーンスワップを実行する。PCIバスはリトルエンディアンでのみ動作し、ビッグエンディアンホストメモリ1000とPCIバス115との間にバイトレーンスワップが存在する。このことはPCIバス1000とローカルメモリ1005との間に2次スワップが存在しなければならないことを意味している。また64ビットホストメモリワードで動作するとき、ローカルメモリはローカルメモリワード0としてホストメモリビット31:0を解釈する。このモードの目的はローカルメモリとビッグエンディアンホスト1010との間で制御情報を転送することである。
DXBプロセッサの使用によりDMA動作を規定するために必要なCPUサイクルは少なくなり、DMA動作を行うためにハードウェアをプログラムするためのCPU I/O動作は少なくなり、個々のDMA動作の完了を事後処理するためのCPUサイクルは少数になる。DXBプロセッサはまたホスト転送サイズがフレームビット長に一致する伝統的なシナリオではなく、より大きい転送が行われることを可能にすることによってより効率的なPCIバスの使用を実現する。
多数の実施形態を説明した。それにもかかわらず、種々の変形が本発明の技術的範囲を逸脱せずに行われることが理解されるであろう。例えばDXBのサイズおよびアドレスにしたがって、3よりも多数のローカルメモリアドレスがホストアドレスにマップされてもよい。また、送信DXPプロセッサは2よりも多い送信DMAチャンネルを含んでいてもよい。フローチャート中のブロックはスキップされてもよく、順序を違えて行われてもよく、所望の結果をもたらす。したがって、その他の実施形態も特許請求の範囲に記載された技術的範囲に含まれる。
1実施形態にしたがったシステムのブロック図。 データ転送ブロック(DXB)待ち行列のブロック図。 DXB完了RAM(ランダムアクセスメモリ)のブロック図。 受信DXBプロセッサにより実行されるDMA動作を記述しているフローチャート。 受信DXBプロセッサにより実行されるDMA動作を記述しているフローチャート。 受信DXBプロセッサのブロック図。 送信DXBプロセッサにより実行されるDMA動作を記述しているフローチャート。 送信DXBプロセッサにより実行されるDMA動作を記述しているフローチャート。 送信DXBプロセッサにより実行されるDMA動作を記述しているフローチャート。 送信DXBプロセッサのブロック図。 送信DXBプロセッサのサイジングFIFOのブロック図。 リトルエンディアンデータモード動作のフローを示すブロック図。 ビッグエンディアンデータモード動作のフローを示すブロック図。

Claims (22)

  1. ホストメモリを有するホストと、そのホストメモリにアクセスするためにバスによりホストに接続されている入力/出力装置との間でデータを転送するために直接メモリアクセスを行う方法において、
    入力/出力装置とホストとの間の単一の直接メモリアクセス動作のために、記述子を前記入力/出力装置において発生し
    前記記述子を入力/出力装置内の待ち行列に書込み、
    前記記述子の優先順位に基づいて待ち行列から前記記述子をフェッチし、
    ホスト中のホストメモリと入力/出力装置中のローカルメモリとの間でデータを転送する直接メモリアクセス動作を実行するステップを含んでおり、
    前記入力/出力装置において発生する記述子はメモリ記述子と前記直接メモリアクセス動作を識別するタグとを含んでおり、
    臨界的な直接メモリアクセス動作に対しては記述子は通常の優先順位より高い優先順位が与えられる、ことを特徴とする直接メモリアクセスを行う方法。
  2. さらに、直接メモリアクセス動作の実行に応答して、直接メモリアクセス動作に対する状態情報と共にタグを記憶するステップを含んでいる請求項1記載の方法。
  3. 前記状態情報は直接メモリアクセス動作が適切に完了したことを示す請求項2記載の方法。
  4. 前記状態情報はエラー情報を含んでいる請求項2記載の方法。
  5. 前記記述子はキャッシュラインに対応するサイズを有している請求項1記載の方法。
  6. 前記記述子の書込みはキャッシュラインスピル動作を含んでいる請求項5記載の方法。
  7. 前記入力/出力装置内の待ち行列は複数の待ち行列を含み、前記優先順位はそれら複数の待ち行列の待ち行列の有する優先順位である請求項1記載の方法。
  8. 待ち行列は先入れ先出し(FIFO)バッファに記憶され、前記優先順位はバッファ中に記憶される記述子の位置に基づいている請求項1記載の方法。
  9. メモリ記述子はメモリのブロックのアドレスと長さ情報とを含んでいる請求項1記載の方法。
  10. メモリ記述子は直接メモリアクセス動作でアクセスされるホストメモリ位置に対するホストメモリアドレスを含んでいる請求項1記載の方法。
  11. メモリ記述子は直接メモリアクセス動作でアクセスされるローカルメモリ位置の対応する数の複数のローカルメモリアドレスを含んでいる請求項1記載の方法。
  12. 前記複数のローカルメモリ位置は互いに隣接しないメモリ位置として配置されている請求項11記載の方法。
  13. さらに、直接メモリアクセス動作でメモリに書込まれるデータと共にタグおよびアドレスおよび長さ情報をバッファに記憶するステップを含んでいる請求項9記載の方法。
  14. 直接メモリアクセス動作はPCI/X(周辺コンポーネントインターフェース拡張)バスで行われる請求項1記載の方法。
  15. 直接メモリアクセス動作はバスを介して行われ、さらに、
    直接メモリアクセス動作でバスから受信されたリトルエンディアンフォーマットのデータをビッグエンディアンフォーマットに変換し、
    そのビッグエンディアンフォーマットのデータをでローカルメモリに記憶するステップを含んでいる請求項1記載の方法。
  16. マシン実効可能な命令を含んでいるマシン読取り可能な媒体を具備する物品において、
    前記命令は
    メモリ記述子と前記直接メモリアクセス動作を識別するタグとを含んでいる記述子を、入力/出力装置とホストとの間の単一の直接メモリアクセス動作のためにバス介してホストに接続されている入力/出力装置内で発生させ、
    前記記述子を入力/出力装置内で待ち行列に書込み、
    記述子の優先順位に基づいて待ち行列から前記記述子をフェッチし、
    直接メモリアクセス動作を実行してホスト中のホステメモリと入力/出力装置内のローカルメモリとの間でデータを転送させるようにマシンに動作を行わせ、
    臨界的な直接メモリアクセス動作に対しては通常の優先順位より高い優先順位が記述子に与えられている物品。
  17. さらに、直接メモリアクセス動作の実行に応答して、直接メモリアクセス動作のためにマシンに状態情報と共にタグを記憶させるように動作する命令を含んでいる請求項16記載の物品。
  18. 前記状態情報は直接メモリアクセス動作が適切に完了したことを示す請求項17記載の物品。
  19. 前記状態情報はエラー情報を含んでいる請求項17記載の物品。
  20. 記述子はキャッシュラインに対応するサイズを有している請求項16記載の物品
  21. マシンに記述子を書込ませるように動作する命令は、マシンにキャッシュラインスピル動作を実行させるように動作させる命令を含んでいる請求項20記載の物品
  22. 待ち行列は複数の待ち行列の1つであり、前記優先順位は前記複数の待ち行列の他の待ち行列に関する前記待ち行列の優先順位を含んでいる請求項16記載の物品。
JP2003551647A 2001-12-10 2002-12-10 直接メモリアクセス(dma)転送バッファプロセッサ Expired - Fee Related JP5026660B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US33918701P 2001-12-10 2001-12-10
US60/339,187 2001-12-10
US10/179,816 US7159048B2 (en) 2001-12-10 2002-06-24 Direct memory access (DMA) transfer buffer processor
US10/179,816 2002-06-24
PCT/US2002/039551 WO2003050655A2 (en) 2001-12-10 2002-12-10 Direct memory access (dma) transfer buffer processor

Publications (2)

Publication Number Publication Date
JP2005513594A JP2005513594A (ja) 2005-05-12
JP5026660B2 true JP5026660B2 (ja) 2012-09-12

Family

ID=26875713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003551647A Expired - Fee Related JP5026660B2 (ja) 2001-12-10 2002-12-10 直接メモリアクセス(dma)転送バッファプロセッサ

Country Status (6)

Country Link
US (1) US7159048B2 (ja)
EP (1) EP1466254A4 (ja)
JP (1) JP5026660B2 (ja)
KR (1) KR100979825B1 (ja)
CA (1) CA2467707A1 (ja)
WO (1) WO2003050655A2 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10300030A1 (de) * 2003-01-03 2004-07-22 Micronas Gmbh DMA-Modul und Betriebsverfahren hierfür
US7093037B2 (en) * 2003-09-22 2006-08-15 Emulex Design & Manufacturing Corporation Generalized queue and specialized register configuration for coordinating communications between tightly coupled processors
JP4536361B2 (ja) * 2003-11-28 2010-09-01 株式会社日立製作所 データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法
US7334091B1 (en) * 2004-01-05 2008-02-19 Marvell Semiconductor Israel Ltd. Queue memory management
US7493427B2 (en) * 2004-07-14 2009-02-17 International Business Machines Corporation Apparatus and method for supporting received data processing in an offload of network protocol processing
US7533176B2 (en) * 2004-07-14 2009-05-12 International Business Machines Corporation Method for supporting connection establishment in an offload of network protocol processing
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
JP4576323B2 (ja) 2004-12-10 2010-11-04 富士通株式会社 データ転送装置およびデータ転送方法
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
JP4563829B2 (ja) 2005-01-27 2010-10-13 富士通株式会社 ダイレクトメモリアクセス制御方法、ダイレクトメモリアクセス制御装置、情報処理システム、プログラム
US7546392B2 (en) * 2005-05-13 2009-06-09 Texas Instruments Incorporated Data transfer with single channel controller controlling plural transfer controllers
US7546391B2 (en) * 2005-05-13 2009-06-09 Texas Instruments Incorporated Direct memory access channel controller with quick channels, event queue and active channel memory protection
US7664889B2 (en) * 2005-09-29 2010-02-16 Intel Corporation DMA descriptor management mechanism
US7676604B2 (en) * 2005-11-22 2010-03-09 Intel Corporation Task context direct indexing in a protocol engine
US8265169B2 (en) * 2006-12-29 2012-09-11 Intel Corporation Video block memory read request translation and tagging
KR100841796B1 (ko) * 2007-10-25 2008-06-27 김해영 도로구조물의 신축이음부 시공방법
CN101482853B (zh) * 2008-01-10 2010-10-27 松翰科技股份有限公司 直接存储器访问系统及方法
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
US8286004B2 (en) * 2009-10-09 2012-10-09 Lsi Corporation Saving encryption keys in one-time programmable memory
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8984195B2 (en) * 2011-12-02 2015-03-17 Atmel Corporation Microcontroller including alternative links between peripherals for resource sharing
KR101993187B1 (ko) 2012-11-26 2019-06-27 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US9558129B2 (en) * 2014-06-10 2017-01-31 Xilinx, Inc. Circuits for and methods of enabling the access to data
KR102330389B1 (ko) 2014-07-24 2021-11-24 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
KR101667602B1 (ko) * 2015-09-07 2016-10-19 (주) 유파인스 태깅 및 언태깅의 제어가 가능한 선입선출 메모리 장치 및 이를 이용한 데이터 출력 방법
KR102367359B1 (ko) 2017-04-17 2022-02-25 에스케이하이닉스 주식회사 직렬 시스템 버스 인터페이스 및 직접메모리액세스 컨트롤러를 갖는 전자 시스템 및 그 동작 방법
US11347667B2 (en) * 2018-01-10 2022-05-31 Qualcomm Incorporated Bus controller and related methods
CN111290979B (zh) * 2020-03-23 2021-08-17 优刻得科技股份有限公司 数据传输方法、装置及系统
CN115754971B (zh) * 2023-01-10 2023-09-15 湖南傲英创视信息科技有限公司 一种基于离散dma技术的雷达数据采集存储方法和系统
CN117076353B (zh) * 2023-10-16 2024-02-02 苏州元脑智能科技有限公司 描述符的配置方法和描述符的配置装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69328320T2 (de) * 1992-01-09 2000-11-30 Cabletron Systems Inc Vorrichtung und Verfahren zur Datenübertragung zu und von einem Wirtrechnersystem
US5392406A (en) * 1992-09-18 1995-02-21 3Com Corporation DMA data path aligner and network adaptor utilizing same
JPH06119282A (ja) * 1992-10-05 1994-04-28 Mitsubishi Electric Corp デバイス制御装置及びその優先処理方式
US5881313A (en) * 1994-11-07 1999-03-09 Digital Equipment Corporation Arbitration system based on requester class and relative priority including transmit descriptor valid bit for a shared resource having multiple requesters
US5634099A (en) * 1994-12-09 1997-05-27 International Business Machines Corporation Direct memory access unit for transferring data between processor memories in multiprocessing systems
SG82563A1 (en) * 1995-07-07 2001-08-21 Sun Microsystems Inc An apparatus and method for packetizing and segmenting mpeg packets
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US6049842A (en) * 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6212593B1 (en) * 1998-06-01 2001-04-03 Advanced Micro Devices, Inc. Method and apparatus for generating interrupts on a buffer by buffer basis in buffer descriptor ring direct memory access system
US6202107B1 (en) * 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
US6674751B1 (en) * 1999-06-03 2004-01-06 Fujitsu Network Communications, Inc. Serialized bus communication and control architecture

Also Published As

Publication number Publication date
US20030110325A1 (en) 2003-06-12
EP1466254A2 (en) 2004-10-13
US7159048B2 (en) 2007-01-02
JP2005513594A (ja) 2005-05-12
EP1466254A4 (en) 2005-09-14
KR100979825B1 (ko) 2010-09-02
WO2003050655A2 (en) 2003-06-19
KR20040078110A (ko) 2004-09-08
CA2467707A1 (en) 2003-06-19
WO2003050655A3 (en) 2003-10-09

Similar Documents

Publication Publication Date Title
JP5026660B2 (ja) 直接メモリアクセス(dma)転送バッファプロセッサ
US6279051B1 (en) Host adapter having paged payload buffers for simultaneously transferring data between a computer bus and a peripheral bus
EP0607412B1 (en) Network adapter with host indication optimization
US5740467A (en) Apparatus and method for controlling interrupts to a host during data transfer between the host and an adapter
KR0161101B1 (ko) 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터
US5471488A (en) Clock fault detection circuit
US8271700B1 (en) Logical address direct memory access with multiple concurrent physical ports and internal switching
US7058735B2 (en) Method and apparatus for local and distributed data memory access (“DMA”) control
US7320056B2 (en) Multi-processor system
KR100962769B1 (ko) 수퍼차지 메시지 교환기
US6170030B1 (en) Method and apparatus for restreaming data that has been queued in a bus bridging device
JP4317365B2 (ja) 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置
WO2004088462A2 (en) Hardware assisted firmware task scheduling and management
JPH07288535A (ja) プロセッサ・チャネル及び交換機構の間に設けられたアダプタ装置
US6205509B1 (en) Method for improving interrupt response time
WO1999041864A1 (en) Method and apparatus for minimizing asynchronous transmit fifo under-run and receive fifo over-run conditions
US7962676B2 (en) Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords
US6330631B1 (en) Data alignment between buses
US7610415B2 (en) System and method for processing data streams
WO2004088461A2 (en) Local emulation of data ram utilizing write-through cache hardware within a cpu module
JP3600536B2 (ja) 書き込みデータの破壊を制限する方法及びシステムとpciバス・システム
JP3873589B2 (ja) プロセッサシステム
US6665750B1 (en) Input/output device configured for minimizing I/O read operations by copying values to system memory
US7039747B1 (en) Selective smart discards with prefetchable and controlled-prefetchable address space
JPH03127154A (ja) 転送制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100106

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100406

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100803

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

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

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5026660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees