JP2004527024A - 多重チャネルを有するデータメモリアクセス用のスケジューラ - Google Patents
多重チャネルを有するデータメモリアクセス用のスケジューラ Download PDFInfo
- Publication number
- JP2004527024A JP2004527024A JP2002551659A JP2002551659A JP2004527024A JP 2004527024 A JP2004527024 A JP 2004527024A JP 2002551659 A JP2002551659 A JP 2002551659A JP 2002551659 A JP2002551659 A JP 2002551659A JP 2004527024 A JP2004527024 A JP 2004527024A
- Authority
- JP
- Japan
- Prior art keywords
- entry
- shift structure
- weight
- channel
- entries
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 claims description 48
- 230000003287 optical effect Effects 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 5
- 239000000969 carrier Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 16
- 230000002093 peripheral effect Effects 0.000 description 12
- 238000013507 mapping Methods 0.000 description 10
- 229920013655 poly(bisphenol-A sulfone) Polymers 0.000 description 9
- 239000000872 buffer Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 229920006375 polyphtalamide Polymers 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Bus Control (AREA)
Abstract
データメモリアクセス(DMA)の多重チャネルをスケジューリングするよう構成されているスケジューラは、スケジューリング対象の多重チャネル(212)に対応するエントリを有するシフト構造(600)を含んでいる。シフト構造内の各エントリ(602)は、多重フィールド(604)を含んでいる。各エントリ(602)は、これら多重フィールド(604)に基づいて決められる重みも含んでいる。スケジューラ(508)は、更に、エントリをそれらの各重みに基づいてソートするよう構成されている比較論理回路も含んでいる。
【選択図】図2
【選択図】図2
Description
【技術分野】
【0001】
本発明は、概括的にはスケジューラに、そしてより厳密には多重チャネルを有するデータメモリアクセス(DMA)用のスケジューラに関する。
【背景技術】
【0002】
一般的には、装置のデータメモリアクセス(DMA)は、周辺機器と装置のメモリとの間のデータ伝送を制御する。装置は、周辺機器から受信したデータ及び周辺機器へ送るデータを、それぞれ処理するための入力DMAと出力DMAを備えている。周辺機器が入力DMA付の装置にデータを送信しようとする場合、周辺機器は入力DMAに対してリクエストを送る。すると、入力DMAは、周辺機器に対して確認応答(ACK)を送る。周辺機器は、ACKを受け取ると、データを入力DMAに送信し、DMAはそのデータをメモリに伝送する。データを周辺機器に送る場合、装置のプロセッサは、出力DMAにリクエストを送る。すると、出力DMAは、メモリから当該データを取り出して、そのデータを周辺機器に送り出す。
【0003】
従来のDMAは、通常、複数の周辺機器、1つの周辺機器上の多重チャネル、又は装置上の多重メモリチャネルに接続できる多重チャネルを有している。従来のDMAは、通常更に、これらの多重チャネルを制御するためのアービタ又はスケジューラを有している。しかしながら、DMA上のチャネル数が増加するにつれ、アービタ/スケジューラは益々複雑になってきている。その結果、DMAのコストは上がり、処理速度は低下することになる。
【発明の開示】
【課題を解決するための手段】
【0004】
本発明は、データメモリアクセス(DMA)の多重チャネルをスケジューリングするためのスケジューラに関する。本発明の或る態様によれば、スケジューラは、スケジューリング対象の多重チャネルに対応するエントリを有するシフト構造を含んでいる。シフト構造内の各エントリは、複数のフィールドを含んでいる。各エントリは、これら複数のフィールドに基づいて決められた重みも含んでいる。スケジューラは、次いで各重みに基づいてエントリをソートするよう構成された比較論理回路も含んでいる。
【発明を実施するための最良の形態】
【0005】
本発明は、添付図面を参照しながら以下の説明を読めば、深く理解頂けるであろう。図中、同様の部分には同様の符号を付して示している。
【0006】
本発明をより全般に亘って理解して頂くために、以下の説明では、特定の構成、パラメータなど、多くの具体的な詳細事項を記している。しかしながら、この説明は本発明の範囲を限定しようとするものではなく、代表的な実施形態をより深く説明しようとすることを目的としたものである。
【0007】
図1に、ラインカード100を示す。本発明のある態様によれば、ラインカード100は、フレーマ装置のような各種周辺機器に接続することができる。而して、ラインカード100は、回路切換信号、パケット信号のような、多様な型式の信号を送受信することができる。
【0008】
更に、図1に示すように、ラインカード100は、ラインインタフェース102、フレーマASIC104、パケットプロセッサASIC(PPA)106、パケットメッシュASIC(PMA)108、及びバックプレーンインタフェース110を含んでいる。ラインインタフェース102は、任意の数のフレーマ装置と接続できるようになっている。バックプレーンインタフェース110は、メッシュや共通バスなどの任意の数の追加ラインカードに接続できるよう構成されている。而して、信号を、ラインインタフェース102に接続されているフレーマ装置から受信して、バックプレーンインタフェース110を通して他のラインカードに送信することができる。加えて、他のラインカードからの信号を、バックプレーンインタフェース110を通して受信し、ラインインタフェース102に接続されているフレーマ装置に送ることもできる。
【0009】
上記のように、ラインカード100は、多様な型式の信号を受信することができる。ラインカード100は、回路切換信号とパケット信号が混じっているような混成信号も受信することができる。而して、ラインASIC104は、パケット信号を分離し、それらを処理のためにPPAに渡すよう構成されている。
【0010】
更に、上記のように、信号を、ラインインタフェース102から受信し、バックプレーンインタフェース110から送り出すことができる。加えて、信号を、バックプレーンインタフェース110から受信し、ラインインタフェース102から送り出すこともできる。従って、図1に示す構成では、一方のPPAを出口PPAとして構成し、ラインインタフェース102から送り出される信号を処理し、他方のPPAを入口PPAとして構成し、ラインインタフェース102で受信される信号を処理することができる。しかしながら、1つのPPA106を、出口PPAと入口PPAの両方として構成することもできる。なお、ラインカード100は、任意の数の入口及び出口PPAとして構成される任意数のPPA106で構成することもできる。
【0011】
パケットは、入口PPAで処理した後、PMA108によってバックプレーンインタフェース110で送り出すことができる。パケットは、バックプレーンインタフェース110で受信されると、PMA108によって出口PPA106に転送することができる。パケットは、次いで処理され、ラインインタフェース102を介して送り出される。上記のように、1つのPPS106を、入口PPAと出口PPAの両方として使用することができる。
【0012】
図2は、PPA106について詳細に示している。具体的には、PPA106は、LIP(ラインインタフェースプロトコル)インタフェース202、入力DMA204、入力記述子待ち行列206、メモリ制御装置208、フリーメモリマネジャ(FMG)210、メモリチャネル212、実行ユニット(EU)214、出力DMA216、及びLIPインタフェース218を含んでいる。
【0013】
先に述べたように、PPA106は、パケット信号を処理するよう構成されている。より厳密には、パケットは、先ずLIPインタフェース202を介して受信される。入力DMA204は、受信したパケットの記述子を作成するよう構成されている。記述子は、次に、入力記述子待ち行列206に記憶される。入力DMA204は、更に、FMG210からメモリ(フリーメモリ)内の利用可能空間の場所を得て、パケットをメモリに記憶する。EU214は、入力記述子待ち行列206に記憶された記述子を使って記憶されたパケットにアクセスする。次いで、取り出されたパケットは、EU214により、EU214に搭載されたソフトウェア命令に従って処理される。パケットの処理後、EU214は、当該パケット用の出力記述子を作成する。後に詳しく説明するが、EU214は、出力記述子を出力DMA216の待ち行列に書き込む。パケットは、次にLIPインタフェース218を介して送り出される。
【0014】
上記のように、LIPインタフェース202はパケットを受け取る。より具体的には、本発明の或る実施形態では、LIPインタフェース202は、毎200メガヘルツ約16ビットで作動する。更に、図2では4つのLIPインタフェース202を示しているが、PPA106は、具体的用途次第でLIPインタフェース202を幾つ含んでもよいと理解されたい。
【0015】
これも先に述べたが、パケットはメモリに記憶される。しかしながら、各種情報(例えば、転送テーブル、EU214上で実行されるソウトウェアプログラムなど)もメモリに記憶できるものと理解されたい。
【0016】
図2に示すように、本発明の或る代表的な実施形態では、PPA106は4つのメモリチャネル212を含んでいる。各メモリチャネル212は、どの様な数のメモリ装置にでも接続することができ、メモリ装置は、物理的にはラインカード100(図1)上に配置することができるが、PPA106に直接にというわけではない。例えば、本実施形態では、各メモリチャネル212は複数のダイナミックランダムアクセスメモリ(DRAM)に接続される。より具体的には、これらDRAMは、100メガヘルツDDR(ダブルデータレート)SDRAM(同期化DRAM)を含んでいてもよい。しかしながら、異なる速度で作動する様々なメモリ装置を使用することができるものと理解されたい。
【0017】
本実施形態では、PPA106はメモリ制御装置208を含んでいる。メモリ制御装置208は、PPA106内の各種ブロック(例えば、入力DMA204、FMG210、EU214、出力DMA216など)と通信してメモリへのアクセスを提供するよう構成することができる。明快さを期して、図2では、メモリ制御装置208は、メモリチャネル212とは別個の1つのブロックとして示している。しかしながら、個別のメモリ制御装置208を各メモリチャネル212の専用とすることもできると理解されたい。更に、メモリ制御装置208は、各メモリチャネル212内に配置することもできると理解されたい。
【0018】
本発明の或る態様によれば、パケットは、メモリデータユニット(MDU)と呼ばれる256バイト単位でメモリに記憶される。更に、或る実施形態では、MDUの記憶用として約128メガバイトのメモリを割り振っているが、これは50万MDUに相当する。しかしながら、パケットは任意の単位で記憶できるものと理解されたい。更に、どの様な量のメモリ空間をパケット記憶用に割り振ってもよいと理解されたい。
【0019】
上記のように、入力DMA204は、パケットを受信すると、そのパケットをメモリに記憶する。より具体的には、入力DMA204は、パケットをメモリに記憶するためFMG210からフリーMDUを入手する。従って、FMG210は、どのMDUがフリーであり、どれが使用中かを追跡し続けるよう構成されている。先に述べたように、MDUは256バイト長である。パケットが256バイトよりも長い場合、DMA204は、パケットを記憶するため、適切な数の追加のMDUを割り当てる。入力DMA204は、次いでMDUのリストを作成する。出力FMG210については、2000年12月18日出願の「フリーメモリマネジャスキーム及びキャッシュ」と題する米国特許出願第NN/NNN,NNN号に詳細に記述されており、その全体を本願に参考文献として援用する。
【0020】
上記のように、入力DMA204は、更に、各パケット毎に記述子を作成する。入力DMA204は、次いでこの記述子を入力記述子待ち行列206に記憶する。本発明の或る実施形態では、記述子は約64ビット(即ち8バイト)長であり、メモリ内のパケット用の第1MDUの位置やパケットの長さの様なフィールドを含んでいる。しかしながら、記述子は、どの様な長さで、どの様な数及び型式のフィールドを含んでいてもよいものと理解されたい。
【0021】
上記のように、EU214は、記憶されたパケットを検索してそれを処理する。厳密には、EU214は、入力記述子待ち行列206から記述子を読み出す。EU214は、次いでその記述子を使ってメモリからパケットを検索する。例えば、EU214は、パケットを保有している第1MDUに対するポインタ用の記述子を読み出すことができる。EU214は、パケットのヘッダを読み出し、それを解析して、パケットを分類することができる。EU214は、次いで、当該パケットを送信する前にパケットの或るフィールドを変更することができる。本発明の或る実施形態では、EU214は、16個の縮小命令セットコンピュータ(RISC)プロセッサを含んでいる。出力EU214については、2000年12月18日出願の「キャッシュリクエスト再試行待ち行列」と題する米国特許第NN/NNN,NNN号に詳細に記述されており、その全体を本願に参考文献として援用する。しかしながら、EU214は、どの様な数及び型式のプロセッサを含んでいてもよいと理解されたい。更に、EU214は、様々な方法でパケットを処理するために、様々なソフトウェアを実行することができると理解されたい。
【0022】
上記のように、パケットを送信するとき、EU214は、パケット用に作成された最初の記述子に基づいた出力記述子を作成する。この出力記述子は、出力DMA216の待ち行列に書き込まれ、出力DMA216は、当該パケットをLIPインタフェース218で送り出す。
【0023】
図3に、出力DMA216を詳しく示している。以下の説明で、出力DMA216は、ライン出力ブロック(LOP)216と呼ばれる。出力DMA(LOP)216は、様々な用語で呼ばれるものと理解されたい。
【0024】
本発明の或る代表的な実施形態では、LOP216は待ち行列302、DRAM読み出し論理(DRL)304、ローカル記憶装置(LST)306、ポートスケジューラFIFO(PSF)308、及びポート310を含んでいる。先に指摘したように、パケットを送信するとき、EU214(図2)は、パケットの出力記述子を待ち行列302に書き込む。DRL304は、待ち行列302から記述子を読み出し、ダイレクトメモリ(dm)リクエストを作り、パケットをメモリチャネル212(図2)から取り出す。検索されたパケットは、次いでLST306に記憶される。PSF308は、LST306からパケットを読み出し、それをポート310に送る。
【0025】
図4に示すように、本実施形態では、LOP216は、32チャンネル構成とすることができる。その場合、LOP216は、各チャネルに対応する32個の待ち行列302を含んでいる(即ち、待ち行列302−0から302−31まで)。具体的には、待ち行列302−0から302−31は、チャネル0から31にそれぞれ対応する。しかしながら、LOP216は、具体的用途次第で、どの様な数のチャネルででも構成することができるものと理解されたい。同様に、LOP216は、具体的用途次第で、どの様な数の待ち行列302を含んでいてもよいと理解されたい。更に、様々なマッピングスキームを使用して、待ち行列302をLOP216のチャネルにマッピングできるものと理解されたい。しかも、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0026】
図4に示すように、LOP216は、4個のDRL304も含んでいる(DRL304−0から304−3まで)。本実施形態では、各DRL304は、8チャネルまで処理できる構成になっている。具体的には、DRL304−0は、チャネル0から3、及びチャネル16から19を処理するよう構成されている。而して、DRL304−0は、待ち行列302−0から302−3、及び待ち行列302−16から302−19に接続される。DRL304−1は、チャネル4から7及びチャネル20から23を処理するよう構成されている。而して、DRL304−1は、待ち行列302−4から302−7、及び待ち行列302−20から302−23に接続される。DRL304−2は、チャネル8から11、及びチャネル24から27を処理するよう構成されている。而して、DRL304−2は、待ち行列302−8から302−11、及び待ち行列302−24から302−27に接続される。DRL304−3は、チャネル12から15、及びチャネル28から31を処理するよう構成されている。而して、DRL304−3は、待ち行列302−12から302−15、及び待ち行列302−28から302−31に接続される。LOP216は、どの様な数のDRL304を含んでいてもよい。各LOP216は、どの様な数の待ち行列302又はチャネルを処理するように構成してもよい。更に、DRL304は、様々なマッピングスキームを使って、LOP216の待ち行列302又はチャネルにマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0027】
図4に示すように、LOP216は、8個のLST306も含んでいる(即ち、LST306―0から306−7)。本実施形態では、各LST306は、4つまでチャネルを処理できるよう構成されている。具体的には、LST306−0は、チャネル0から3を処理するよう構成されている。而して、LST306−0は、DRL304−0に接続されている。LST306−1は、チャネル4から7を処理するよう構成されている。而して、LST306−1は、DRL304−1に接続されている。LST306−2は、チャネル8から11を処理するよう構成されている。而して、LST306−2は、DRL304−2に接続されている。LST306−3は、チャネル12から15を処理するよう構成されている。而して、LST306−3は、DRL304−3に接続されている。LST306−4は、チャネル16から19を処理するよう構成されている。而して、LST306−4は、DRL304−0に接続されている。LST306−5は、チャネル20から23を処理するよう構成されている。而して、LST306−5は、DRL304−1に接続されている。LST306−6は、チャネル24から27を処理するよう構成されている。而して、LST306−6は、DRL304−2に接続されている。最後に、LST306−7は、チャネル28から31を処理するよう構成されている。而して、LST306−7は、DRL304−3に接続されている。LOP216は、どの様な数のLST306を含んでいてもよいと理解されたい。LST306は、どの様な数のチャネル及びDRL304を処理するようにでも構成できるものと理解されたい。更に、LST306は、様々なマッピングスキームを使ってDRL304にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0028】
図4に示すように、LOP216は、4つのPSF308を含んでいる(即ち、PSF308−0から308−3まで)。本実施形態では、各PSF308は、16までチャネルを処理できるように構成することができる。しかしながら、図4に示す構成では、PSF308−0及び308−2は、16までチャネルを処理するよう構成されているが、PSF308−1及び308−3は、8つまでチャネルを処理するよう構成されている。具体的には、PSF308−0は、チャネル0から15を処理するよう構成されている。而して、PSF308−0は、LSP306−0、306−1、306−2、及び306−3に接続される。PSF308−1は、チャネル8から15までを処理するよう構成されている。而して、PSG308−1は、LSP306−2及び306−3に接続される。しかしながら、PSF306−1は、LSP306−0及び306−1に接続することによってチャネル0から15を処理するよう構成することもできると理解されたい。PSF308−2は、チャネル16から31を処理するよう構成されている。而して、PSF308−2は、LSP306−4、306−5、306−6、及び306−7に接続される。PSF308−3は、チャネル24から31を処理するよう構成されている。而して、PSF308−3は、LSP306−6及び306−7に接続される。しかしながら、PSF306−3は、LSP306−4及び306−5に接続することによりチャネル16から31を処理するよう構成することもできると理解されたい。LOP216は、どの様な数のPSF308を含んでいてもよいと理解されたい。PSF308は、どの様な数のチャネルでも処理できるように構成することができ、且つどの様な数のLST306にでも接続できるように構成することができるものと理解されたい。更に、PSF308は、様々なマッピングスキームを使って、LST306にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0029】
図4に示すように、LOP216は、4つのポート310を含んでいる(即ち、ポート310−0から310−3まで)。本実施形態では、各ポートは、16までチャネルを処理できるように構成することができる。而して、ポート310−0から310−3は、それぞれ、PSF308−0から308−3に接続される。しかしながら上記のように、図4に示す構成では、PSF308−1と308−3は、16ではなくて8つまでチャネルを処理するよう構成されている。しかしながら、上で指摘したように、PSF308−1と308−3は、16までチャネルを処理するよう構成することもできる。而して、ポート310−1と310−3は、16までチャネルを処理するよう構成することができる。LOP216は、どの様な数のポート310を含んでいてもよいと理解されたい。ポート310はどの様な数のチャネルでも処理できるように構成し、どの様な数のPSF308にでも接続できるように構成することができるものと理解されたい。更に、ポート310は、様々なマッピングスキームを使ってPSF308にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0030】
LOP216には4つのポート310と32個のチャネルがあると説明してきたが、全てのポート及びチャネルを使用する必要はないと理解されたい。例えば、或る用途では、ポート310は1つだけを使用し、チャネルは16しか使用可能ではないと仮定する。具体的には、ポート310−0を使用し、チャネル0から15が使用可能であると仮定する。上記構成では、4個のDRL304は、全て、4つのリクエストを同時にポート310−0に送信することができる。具体的には、DRL304−0、304−1,304−2、及び304−3は、それぞれ、チャネル0から3、4から7、8から11、12から15、でリクエストを送ることができる。DRL304−0から304−3に対するチャネルの割当が順番になっている(即ち、チャネル0から7がDRL304−0に割り当てられ、チャネル8から15がDRL304−1に割り当てられ、チャネル16から23がDRL304−2に割り当てられ、チャネル24から31がDRL304−3に割り当てられる)場合には、DRL304−0と304−1だけが使用できることになる。
【0031】
次に図5では、上で指摘したように、各DRL304は8つまでチャネルを処理できるよう構成されている。而して、本実施形態では、各DRL304は、これらチャネルの処理をスケジューリングするよう構成されたスケジューラ508を含んでいる。図5に示すように、各DRL304は、更に、リクエストマネジャ(RQM)502、DRAM読み出し制御器(DRC)504、DRAM読み出しシーケンサ(DRS)506、及びパーMDU(pMDU)510も含んでいる。
【0032】
次に図6に示すように、本実施形態では、スケジューラ508は、先入れ先出し(FIFO)メモリ、シフトレジスタなどのようなシフト構造600を含んでいてもよい。図6に示すように、シフト構造600は、スケジューラ508が処理するチャネルに対応するカラム(エントリ)602を含んでいる。上記のように、各DRL304(図5)は8つのチャネルを処理するよう構成することができる。従って、シフト構造600は、8つのエントリ602を含んでいる。しかしながら、シフト構造600は、用途次第でどの様な数のエントリ602を含んでいてもよいと理解されたい。
【0033】
便宜上及び明快さを期して、以下の説明及び対応する図面では、DRL304−0(図4)に関係するシフト構造600を説明し、示している。本実施形態では、DRL304−0(図4)は、チャネル0から3及びチャネル16から19を処理するよう構成されている。而して、シフト構造600は、チャネル0から3及びチャネル16から19、それぞれに対応するエントリ606、608、610、612、616、617、618、及び619を含んでいる。しかしながら、各DRL304(図4)は、各DRL304(図4)が処理する該当チャネルに対応するエントリ602を有するシフト構造600を含んでいるものと理解されたい。
【0034】
図6に示すように、各エントリ602は、複数のフィールド604を含んでいる。本実施形態では、エントリ602は、チャネル番号フィールド620、優先順位フィールド622、イン・フライトパケットフィールド624、出力実行可能フィールド626、入力実行可能フィールド628、及び使用可能フィールド630を含んでいる。しかしながら、エントリ602は、具体的用途次第で、どの様な数のフィールド604を含んでいてもよいと理解されたい。
【0035】
チャネル番号フィールド620は、パケットが送信されるチャネル番号を表示すように構成することができる。先に指摘したように、ソフトウェアは、この情報を提供することができる。本実施形態では、DRL340−0(図4)は、チャネル0から3及びチャネル16から19を処理するよう構成されている。而して、シフト構造600は、チャネル番号0から3及びチャネル番号16から19を備えたチャネル番号フィールド620を有するエントリ602を含んでいる。
【0036】
使用可能フィールド630は、あるチャンルが使用可能であるか否かを表示するように構成することができる。上で指摘したように、シフト構造600は、チャネル0から3及びチャネル1から19を処理するよう構成されている。具体的用途次第で、どれだけの数のチャネルを使用可能に又は使用不能にしてもよい。例えば、チャネル0、2、17だけを使用すると仮定しよう。そうすると、使用可能フィールド630は、チャネル0、2、17に対するエントリ606、610、617が使用可能となる。使用可能フィールド630は、チャネル1、3、16、18、19に対するエントリ608、612、616、618、619が使用不能となる。使用可能フィールド630は、PPA106(図1)の初期構成時にセットすることができる。しかしながら、使用可能フィールド630は、都合の良い何れの時期にでもセットできるものと理解されたい。
【0037】
本実施形態では、出力実行可能フィールド626は、LST(図5)がデータ受信の準備を整えていることを表示するように構成することができる。図4に関し先に述べたように、各DRL304は数多くのLST306に接続されている。更に、LST306−0は、チャネル0から3のデータを記憶するよう構成されている。LST306−4は、チャネル16−19のデータを記憶するよう構成されている。従って、図6に示すように、エントリ602がチャネル17を処理するように構成されていれば、そのエントリの出力実行可能フィールド626は、LST306−4(図4)の状態を表示する。
【0038】
出力実行可能フィールド628は、RQM502(図5)の読み出す記述子が待ち行列302(図5)内に在ることを表示するように構成することができる。上記のように、パケットを送信するときには、ソフトウェアは、そのパケットの記述子を待ち行列302に書き込む。本実施形態では、待ち行列302(図5)は、次いで、該当する入力実行可能フィールド628をスケジューラ508(図5)にセットする。例えば、或るパケットをチャネル17で送り出すと仮定する。先に説明したように、本実施形態では、このパケットの記述子は、チャネル17に割り当てられた待ち行列302に書き込まれる。本事例では、記述子は、待ち行列392−17(図5)に書き込まれる。スケジューラ508内のエントリ602の該当する入力実行可能フィールド628が、ここで、チャネル17用としてセットされることになる。本事例では、エントリ617の入力実行可能フィールド628がセットされることになる。
【0039】
イン・フライトパケットフィールド624は、或るパケットがイン・フライトであるか否かを表示するように構成することができる。パケットは、メモリから読み出し中、バスへの送信中など処理の途上にある場合にはイン・フライトであると見なされる。
【0040】
優先順位フィールド622は、チャネルの優先順位を表示するように構成することができる。或る構成では、スケジューラ508は、6ビットの優先順位フィールド622を備えて構成することができる。従って、64までの異なる優先順位を指定することができる。後に更に詳しく説明するが、優先順位の高いエントリ602は、優先順位の低いエントリ602よりも先に処理される。本発明の或る実施形態では、優先順位フィールド622は、PPA106(図1)の初期構成時にセットされる。しかしながら、優先順位フィールド622は、都合の良いとき何時でもセットできるものと理解されたい。
【0041】
スケジューラ508は、エントリ602をソートするよう構成された比較論理回路640を含んでいる。本実施形態では、フィールド604に基づいてエントリ602毎に重みが決められる。具体的には、エントリ602の重みは10ビット数である。これら10ビットの内の最上位のビットは、使用可能フィールド630に割り当てられる。第2位のビットは、出力実行可能フィールド626に割り当てられる。第3位のビットは、入力実行可能フィールド628に割り当てられる。第4位のビットは、イン・フライトフィールド624に割り当てられる。残りの6ビットは、優先順位フィールド622に割り当てられる。
【0042】
而して、本実施形態では、イン・フライトフィールド624を持つ、即ちパケットがイン・フライトであるエントリ602は、各優先順位に関わらず、イン・フライトフィールド624が使用不能であるエントリ602より先にソートされる。入力実行可能フィールド628が使用可能であるエントリ602は、イン・フライトフィールド624及び各優先順位に関わらず、入力実行可能フィールド628が使用不能であるエントリ602より先にソートされる。出力実行可能フィールド626が実行可能であるエントリ602は、入力実行可能フィールド628、イン・フライトフィールド624、及び各優先順位に関わらず、出力実行可能フィールド626が使用不能であるエントリよりも先にソートされる。使用可能フィールド630が使用可能であるエントリ602は、出力実行可能フィールド626、入力実行可能フィールド628、イン・フライトフィールド624、及び各優先順位に関わらず、使用可能フィールド630が使用不能であるエントリ602より先にソートされる。
【0043】
このようにして、エントリ602は、2つのエントリ602を各重みを比較することによりソートできるという、単層比較を使ってソートすることができる。対照的に、2つのエントリを、各フィールド604を比較することによりソートする場合は、5層比較又はそれ以上の比較が必要となる。しかしながら、エントリ602は、様々な比較スキームを使ってソートできるものと理解されたい。例えば、エントリ602は、各重み及び任意の数の各フィールド604を比較することによりソートできる。更に、エントリ602の重みを求める際には、各フィールド604の全てではなく一部を使用してもよい。
【0044】
図6において、カラム606が占めている位置がシフト構造600の先頭であり、カラム619が占めている位置がシフト構造600の末尾であると仮定する。ここで、エントリ617は、入力実行可能フィールド628が使用可能となっている唯一のエントリ602であると仮定する。そうすると、図7に示すように、比較論理回路640は、エントリ617をシフト構造600の先頭にシフトする。図7では、使用可能状態の入力実行可能フィールド628は「1」で表示され、一方、使用不能状態の入力実行可能フィールド628は「0」で表示されている。しかしながら、どの様な種類の表示を使用してもよいと理解されたい。
【0045】
本実施形態では、DRC504(図5)は、シフト構造600の先頭から読み出すように構成することができる。而して、本例では、DRC504(図5)は、エントリ617を読み出す。上記のように、エントリ617は、チャネル17を表示するチャネル番号フィールド620を含んでいる。而して、図5に示すように、DRC504は、RQM502に、シフト構造600の先頭のエントリのチャネル番号フィールド620(図7)により表示されているチャネル番号に関係付けられた待ち行列302から読み出すように命令する。この事例では、DRC504は、RQM502に、待ち行列302−17を読むように命令する。
【0046】
記述子に含まれている情報に基づいて、DRC504は、次いでダイレクトエントリ(dm)リクエストを発行し、その記述子に関係付けられているパケットを検索する。具体的には、記述子はパケットが記憶されているメモリ場所を含んでいてもよい。DRC504は、次に、そのアドレスを使って、メモリ制御装置208(図2)にdmリクエストを発行する。検索されたパケット又はパケットの一部は、次に、LST306に書き込まれる。本例では、検索されたパケット又はパケットの一部は、LST306−4(図4)に書き込まれる。
【0047】
先に指摘したように、本発明の或る実施形態では、パケットは、MDUと呼ばれる32バイト単位で処理される。而して、DRC504は、パケットが32バイト長を超えているか否かを判定するように構成されている。例えば、待ち行列302から検索された記述子は、パケットの長さを含んでいてもよい。DRC504は、この情報を調べてパケットが32バイト長を超えているか否かを判定することができる。
【0048】
本例では、パケットは、長さが32バイト以下であると仮定する。すると、DRC304は、エントリ617(図7)を、入力実行可能フィールド628(図7)に使用不能と書き込んでスケジューラ508に戻す。そうすると、図8に示すように、全てのエントリ602で入力実行可能フィールド628が使用不能となるので、エントリ617は、シフト構造600の末尾に書き込まれる。図5に戻って、DRC504は、パケットの記述子を保有している待ち行列302−17を削除する。
【0049】
ここで、本例では、パケット長さが32バイトよりも長いと仮定する。すると、図9A及び図9Bに示すように、DRC(図5)は、エントリ617に、入力実行可能フィールド628に使用可能と書き込んでシフト構造600に戻す。本実施形態のある構成では、図9Aに示すように、エントリ617は、シフト構造の末尾に書き込むことができる。他のエントリ602の全てで入力実行可能フィールド628が使用不能となっているので、比較論理回路640(図6)は、脈動を起こしてエントリ617をシフト構造600の先頭に戻す。しかしながら、これは時間を消費しクロックサイクルを浪費することになりかねない。而して、図9Bに示すように、別の構成では、比較論理回路640(図6)は、書き込んでシフト構造600に戻されようとしているエントリを、現在シフト構造600にあるエントリと比較するように構成されている。従って、この例では、エントリ617は、シフト構造600の先頭に書き戻され、残りのエントリ606、608、610、612、616、618、619は後ろにシフトされる。
【0050】
他にも入力実行可能フィールド628の使用可能なエントリ602がある場合、エントリ617は、それら他のエントリ602の後に書き込んで戻される。例えば、図10のように、エントリ617が書き戻されるときに、エントリ606と608は入力実行可能フィールド628が使用可能であると仮定しよう。而して、エントリ617はエントリ606と608の後ろに書き戻される。繰り返すが、或る実施形態では、エントリ617をシフト構造600の末尾に書き込み、比較論理回路640が脈動を起こしてエントリ617をエントリ608の後ろに戻す。或いは、別の実施形態では、エントリ610、612、616、618、619を後ろにシフトして、エントリ617をエントリ608の後ろに書き込む。
【0051】
図5に戻るが、パケット長さが32バイトよりも長いときには、DRC504は、待ち行列302から読み出されたパケットの記述子をMDU510に書き込む。具体的には、DRC504は、パケットの長さなどのパケットの残りの部分の処理に関する記述子の部分を書き込む。更に、データをLST306に書き込む際、データは、毎32バイト単位の後に入力された実行可能ビットと共に書き込まれる。
【0052】
ここで、PPA106(図1)が初期化されたときに、チャネル0、1、17は使用可能であったと仮定する。更に、チャネル0、1、17には、それぞれ、優先順位20、10、20が割り当てられていると仮定する。従って、図11に示すように、チャネル0、1、17に関係付けられているエントリ606、608、617の使用可能フィールド630は使用可能となる。本事例では、使用可能状態の使用可能フィールド630は「1」で表示され、使用不能状態の使用可能フィールド630は「0」で表示される。しかしながら、様々な表示を使用できるものと理解されたい。更に図11に示すように、エントリ606、608、617の優先順位フィールド622は、それぞれ、優先順位20、10、20にセットされている。しかしながら、どの様な優先順位表示を利用することもできるものと理解されたい。
【0053】
上記のように、使用可能フィールド630が使用可能なエントリ602は、使用可能フィールド630が使用不能なエントリ602より先にソートされる。更に、優先順位が高いエントリ602は、優先順位が低いエントリ602より先にソートされる。従って、図12に示すように、エントリ606は、シフト構造600の先頭にシフトされ、後にエントリ617が続き、その後にエントリ608が続く。本事例では、大きい数(即ち20)は、優先順位が高いものと仮定している。しかしながら、様々な優先順位スキームを使用できるものと理解されたい。
【0054】
ここで、パケットは、チャネル0及び1を通して送られるものと仮定する。図5に示すように、ソフトウェアは、記述子を待ち行列302−0及び302−1に書き込む。図13で、ソフトウェアは、更に、エントリ606及び608の入力実行可能フィールド628を使用可能にする。図13に示すように、シフト構造600は、エントリ606が先頭に留まり、次に608が来て、その後にエントリ617が来るようにソートされる。エントリ617は、エントリ608より優先順位が高いが、エントリ608は実行可能エントリ628が使用可能なので、エントリ608がエントリ617より前にシフトされる。
【0055】
図5において、DRC504は、エントリ606(図13)を読み出し、RQM502に待ち行列302−0の記述子を読み出すよう命令する。DRC504は、次いで、メモリからパケットを検索するようdmリクエストを発行する。更に、DRS506は、メモリ内のアドエスを求めて、待ち行列302から読み出した記述子に基づいてアクセスするよう構成することができる。
【0056】
図13において、パケット長さが32バイトよりも短ければ、DRC504は、エントリ606を、入力実行可能フィールド628が使用不能と書き込んで戻す。すると、エントリ606は、エントリ619の後ろに書き戻され、従って、エントリ608が処理される。しかしながら、パケット長さが32バイトよりも長ければ、DRC504(図5)は、エントリ606を、入力実行可能フィールド628が使用可能と書き込んで戻す。本事例では、エントリ606は、エントリ608よりも優先順位が高いため、シフト構造600の先頭に書き戻される。このようにして、優先順位が高いチャネルは優先順位が低いチャネルを押しやることになる。
【0057】
図14において、パケットは、チャネル0及び17を通しで送信されると仮定する。而して、エントリ606と617の入力実行可能フィールド628は使用可能である。従って、エントリ606がシフト構造600の先頭にシフトされ、この後にエントリ617が続く。ここで、チャネル0に向け処理されるパケットは長さが32バイトよりも長いと仮定する。すると、エントリ606は、入力実行可能フィールド628に使用可能と書き込まれてシフト構造600に戻される。結果的に、エントリ606は、優先順位が同等であるのでエントリ617の後に書き込まれる。このようにして、優先順位レベルが同じチャネルはラウンドロビン方式を使ってソートされる。
【0058】
図5に戻るが、先に述べたように、PSF308は、LST306からデータ(即ち、パケット又はパケットの一部)を取り出して、それをポート310(図4)で送り出すよう構成されている。図4において、これも上に述べたように、各PSF308は、16チャネルまで処理するよう構成されている。而して、図5に示すように、PSF308は、これらのチャネルの処理をスケジューリングするよう構成されたスケジューラ516を含んでいる。図5に示すように、PSF308は、RAM読み出しシーケンサ(RRS)518、出力データ制御装置(ODC)526、出力データRAM(ODR)528、ACK(確認応答)制御モジュール(ACM)522、及びACK RAMモジュール(ARM)524も含んでいる。
【0059】
スケジューラ516は、スケジューラ508と同様に作動する。しかしながら、PSF308は16個までチャネルを処理するよう構成されているので、スケジューラ516も、16個までチャネルを処理するよう構成されている。而して、図15に示すように、スケジューラ516は、16個のエントリ1502を有するシフト構造1500を含んでいる。シフト構造1500は、チャネル番号フィールド、優先順位フィールド、イン・フライトパケットフィールド、出力実行可能フィールド、入力実行可能フィールド、及び使用可能フィールドのような、シフト構造600(図6)のフィールド604と同様の様々なフィールド1504を含んでいる。
【0060】
図5に戻るが、上記のように、メモリからのデータは、32バイト単位でLST306に記憶される。具体的には、パケット又はパケットの一部がメモリから検索され、エントリとしてLST306に記憶され、有効ビットがセットされる。エントリがLST306から読み出されると、有効ビットはリセットされる。本実施形態では、LST306は、検索されたパケットを記憶するよう構成されたRAM512を含んでいる。LST306は、エントリが書き込まれLST306から読み出される度に、RAM512の有効ビットをセット及びリセットするよう構成されているパケットデータRAM制御(PDC)514も含んでいる。
【0061】
同時に、有効ビットがLST306にセットされ、スケジューラ516の入力実行可能フィールドもセットされる。本実施形態では、RRS518は、スケジューラ516からエントリを読み出すよう構成されている。ODC526は、次いで、スケジューラ516から読み出されたエントリに基づいてLST306から読み出しを行なう。例えば、チャネル0の使用可能フィールドがスケジューラ516で使用可能であると仮定する。シフト構造1500(図15)内で使用可能なエントリはこれ1つであると仮定する。すると、RRS518はこのエントリを読み出し、次いでODC526は、エントリ内のチャネル番号フィールドのチャネル番号に関係付けられたLST306にアクセスする。本例では、ODC526がLST306−0(図4)からデータを読み出す。
【0062】
LST306からデータを読み出した後、ODC526は、ODR528に書込みを行なう。或る実施形態では、ODR528は、FIFO RAMとして構成されている。更に、ODR528は、DMA216(図2)の作動クロックとLIP218(図2)のクロックの間の非同期FIFOとして作動するよう構成されている。図5に示す論理の全ては、コアクロックで作動し、LIP218(図2)は別のクロックで作動する。而して、ODR528は、これら2つのクロックにまたがるデータの転送を容易にする。
【0063】
図15に戻るが、シフト構造1500では、出力実行可能フィールドは、ACKフィールド1520として構成されている。本発明の或る態様によれば、ACKフィールド1520は、ポート310(図4)はパケットを送信する準備が整っているか否かを表示するよう構成されている。具体的には、図5において、ARM524は、クレジット値を備えて構成することができる。このクレジット値は、ポート310(図4)を通してパケットを受信することになるポート310(図4)に接続されているデバイス上のバッファの数に等しくセットすることができる。本実施形態では、このクレジット値は32にセットされている。しかしながら、クレジット値は何れの所望の数に等しくセットしてもよいと理解されたい。
【0064】
パケットがポート310(図4)上のチャネルで送り出される場合、ACM522は、ARM524のクレジット値を減分する。パケットを受信するデバイスから確認応答を受け取ると、ACM522は、ARM524内のクレジット値を増分する。チャネル用のクレジット値が非ゼロであれば、ACM522は、ACKフィールド1520(図15)を使用可能にする。チャネル用のクレジット値がゼロであれば、ACM522は、ACKフィールド1520(図15)を使用不能にする。例えば、ACM522は、ACKフィールド1520(図15)を、「1」にセットして使用可能状態にし、「0」にセットして使用不能とすることができる。しかしながら、様々な値を使用できるものと理解されたい。本実施形態では、ACKフィールド1520(図15)が使用可能なエントリ1502(図15)は、ACKフィールド1520(図15)が使用不能なエントリより先にソートされる。
【0065】
図2に戻るが、上記のように、フレーマ装置は、LIPインタフェース202の他端に接続することができる。本発明の或る用途では、フレーマ装置は、同期光学ネットワーク(SONET)接続部を介してLIPインタフェース202に接続されている。このフレーマ装置は、光学キャリア(OC)数48(即ち、毎秒2.488ギガビット)までの速度で作動するように設計されていると仮定する。これは、OC48における1つの論理チャネル、又はその合計データ転送速度がOC48以下である多数の論理チャネルであってもよい。例えば、フレーマは、合計がOC48になるような、CO12(即ち、毎秒622.08メガバイト)で作動する2つのチャネルと、CO3(即ち、毎秒155.52メガバイト)で作動する8つのチャネルで構成されていると仮定する。フレーマ装置は、これらチャネルそれぞれに関係付けられた幾つかのバッファリングも有している。このバッファリングは、当該チャネル用にパケットデータを保持するために使用される。
【0066】
この用途では、図5において、スケジューラ508と516は、フレーマ装置上のチャネルのOCレートに対応する優先順位フィールド622(図6)で構成されているものと仮定する。本例では、チャネル4及び5は、12の優先順位を割り当てられ、チャネル0から3及び6から9は、3の優先順位を割り当てられていると仮定している。
【0067】
更に、ソフトウェアは、これら全てのチャネルで送信されるパケットを有し、対応する記述子を待ち行列302(図4)に書き込んだと仮定する。初期には、優先順位が高い(即ち、12)2つのエントリが順に処理され、優先順位の低いチャネルが押しやられることになる。先に説明したように、LIPインタフェース202(図2)と218(図2)は、毎200メガヘルツ(MHz)約16ビットで作動することができる。オーバーヘッドがあればこれを取り除いた後で、このレートは依然としてOC48を超えている。而して、優先順位が高いチャネル(即ち、チャネル4及び5)のデータは、これら2つのチャネル用のフレーマ装置のバッファが一杯となるまで、OC−48のレートより速いレートで送信されることになる。その時点で、スケジューラ516内のこれら2つのエントリ用の実行可能ビットは、(フレーマ装置はもはや実行可能ではないので)使用不能とされることになる。次いで、優先順位の低いエントリの処理が開始されることになる。時間経過と共に、フレーマ装置は、2つのOC−12チャネル(即ち、チャネル4及び5)用の、バッファの一部をフリーにする。次いで、対応する入力実行可能フィールドがセットされ、スケジューラ516(図18)は、これらチャネルの処理を再開する。このように、優先順位フィールド622(図6)を使用して、ラインの帯域幅を速度が異なる多数の論理チャネルに分割することができる。
【0068】
以上、本発明を、添付図面に示す具体的実施形態に関連付けて説明してきたが、本発明の精神及び範囲を逸脱することなく様々な変更を加えることができる。従って、本発明は図面及び上記説明に示す特定の形態に制限されるものではないと解釈すべきである。
【図面の簡単な説明】
【0069】
【図1】ラインカードのブロック図である。
【図2】パケット処理ASIC(PPA)のブロック図である。
【図3】出力DMAのブロック図である。
【図4】図3に示す出力DMAの別のブロック図である。
【図5】図3に示す出力DMAの又別のブロック図である。
【図6】本発明のある実施形態によるスケジューラの線図である。
【図7】図6に示すスケジューラの別の線図である。
【図8】図6に示すスケジューラの又別の線図である。
【図9A】図6に示すスケジューラの又別の線図である。
【図9B】図6に示すスケジューラの又別の線図である。
【図10】図6に示すスケジューラの又別の線図である。
【図11】図6に示すスケジューラの又別の線図である。
【図12】図6に示すスケジューラの又別の線図である。
【図13】図6に示すスケジューラの又別の線図である。
【図14】図6に示すスケジューラの又別の線図である。
【図15】本発明のある実施形態による別のスケジューラの線図である。
【0001】
本発明は、概括的にはスケジューラに、そしてより厳密には多重チャネルを有するデータメモリアクセス(DMA)用のスケジューラに関する。
【背景技術】
【0002】
一般的には、装置のデータメモリアクセス(DMA)は、周辺機器と装置のメモリとの間のデータ伝送を制御する。装置は、周辺機器から受信したデータ及び周辺機器へ送るデータを、それぞれ処理するための入力DMAと出力DMAを備えている。周辺機器が入力DMA付の装置にデータを送信しようとする場合、周辺機器は入力DMAに対してリクエストを送る。すると、入力DMAは、周辺機器に対して確認応答(ACK)を送る。周辺機器は、ACKを受け取ると、データを入力DMAに送信し、DMAはそのデータをメモリに伝送する。データを周辺機器に送る場合、装置のプロセッサは、出力DMAにリクエストを送る。すると、出力DMAは、メモリから当該データを取り出して、そのデータを周辺機器に送り出す。
【0003】
従来のDMAは、通常、複数の周辺機器、1つの周辺機器上の多重チャネル、又は装置上の多重メモリチャネルに接続できる多重チャネルを有している。従来のDMAは、通常更に、これらの多重チャネルを制御するためのアービタ又はスケジューラを有している。しかしながら、DMA上のチャネル数が増加するにつれ、アービタ/スケジューラは益々複雑になってきている。その結果、DMAのコストは上がり、処理速度は低下することになる。
【発明の開示】
【課題を解決するための手段】
【0004】
本発明は、データメモリアクセス(DMA)の多重チャネルをスケジューリングするためのスケジューラに関する。本発明の或る態様によれば、スケジューラは、スケジューリング対象の多重チャネルに対応するエントリを有するシフト構造を含んでいる。シフト構造内の各エントリは、複数のフィールドを含んでいる。各エントリは、これら複数のフィールドに基づいて決められた重みも含んでいる。スケジューラは、次いで各重みに基づいてエントリをソートするよう構成された比較論理回路も含んでいる。
【発明を実施するための最良の形態】
【0005】
本発明は、添付図面を参照しながら以下の説明を読めば、深く理解頂けるであろう。図中、同様の部分には同様の符号を付して示している。
【0006】
本発明をより全般に亘って理解して頂くために、以下の説明では、特定の構成、パラメータなど、多くの具体的な詳細事項を記している。しかしながら、この説明は本発明の範囲を限定しようとするものではなく、代表的な実施形態をより深く説明しようとすることを目的としたものである。
【0007】
図1に、ラインカード100を示す。本発明のある態様によれば、ラインカード100は、フレーマ装置のような各種周辺機器に接続することができる。而して、ラインカード100は、回路切換信号、パケット信号のような、多様な型式の信号を送受信することができる。
【0008】
更に、図1に示すように、ラインカード100は、ラインインタフェース102、フレーマASIC104、パケットプロセッサASIC(PPA)106、パケットメッシュASIC(PMA)108、及びバックプレーンインタフェース110を含んでいる。ラインインタフェース102は、任意の数のフレーマ装置と接続できるようになっている。バックプレーンインタフェース110は、メッシュや共通バスなどの任意の数の追加ラインカードに接続できるよう構成されている。而して、信号を、ラインインタフェース102に接続されているフレーマ装置から受信して、バックプレーンインタフェース110を通して他のラインカードに送信することができる。加えて、他のラインカードからの信号を、バックプレーンインタフェース110を通して受信し、ラインインタフェース102に接続されているフレーマ装置に送ることもできる。
【0009】
上記のように、ラインカード100は、多様な型式の信号を受信することができる。ラインカード100は、回路切換信号とパケット信号が混じっているような混成信号も受信することができる。而して、ラインASIC104は、パケット信号を分離し、それらを処理のためにPPAに渡すよう構成されている。
【0010】
更に、上記のように、信号を、ラインインタフェース102から受信し、バックプレーンインタフェース110から送り出すことができる。加えて、信号を、バックプレーンインタフェース110から受信し、ラインインタフェース102から送り出すこともできる。従って、図1に示す構成では、一方のPPAを出口PPAとして構成し、ラインインタフェース102から送り出される信号を処理し、他方のPPAを入口PPAとして構成し、ラインインタフェース102で受信される信号を処理することができる。しかしながら、1つのPPA106を、出口PPAと入口PPAの両方として構成することもできる。なお、ラインカード100は、任意の数の入口及び出口PPAとして構成される任意数のPPA106で構成することもできる。
【0011】
パケットは、入口PPAで処理した後、PMA108によってバックプレーンインタフェース110で送り出すことができる。パケットは、バックプレーンインタフェース110で受信されると、PMA108によって出口PPA106に転送することができる。パケットは、次いで処理され、ラインインタフェース102を介して送り出される。上記のように、1つのPPS106を、入口PPAと出口PPAの両方として使用することができる。
【0012】
図2は、PPA106について詳細に示している。具体的には、PPA106は、LIP(ラインインタフェースプロトコル)インタフェース202、入力DMA204、入力記述子待ち行列206、メモリ制御装置208、フリーメモリマネジャ(FMG)210、メモリチャネル212、実行ユニット(EU)214、出力DMA216、及びLIPインタフェース218を含んでいる。
【0013】
先に述べたように、PPA106は、パケット信号を処理するよう構成されている。より厳密には、パケットは、先ずLIPインタフェース202を介して受信される。入力DMA204は、受信したパケットの記述子を作成するよう構成されている。記述子は、次に、入力記述子待ち行列206に記憶される。入力DMA204は、更に、FMG210からメモリ(フリーメモリ)内の利用可能空間の場所を得て、パケットをメモリに記憶する。EU214は、入力記述子待ち行列206に記憶された記述子を使って記憶されたパケットにアクセスする。次いで、取り出されたパケットは、EU214により、EU214に搭載されたソフトウェア命令に従って処理される。パケットの処理後、EU214は、当該パケット用の出力記述子を作成する。後に詳しく説明するが、EU214は、出力記述子を出力DMA216の待ち行列に書き込む。パケットは、次にLIPインタフェース218を介して送り出される。
【0014】
上記のように、LIPインタフェース202はパケットを受け取る。より具体的には、本発明の或る実施形態では、LIPインタフェース202は、毎200メガヘルツ約16ビットで作動する。更に、図2では4つのLIPインタフェース202を示しているが、PPA106は、具体的用途次第でLIPインタフェース202を幾つ含んでもよいと理解されたい。
【0015】
これも先に述べたが、パケットはメモリに記憶される。しかしながら、各種情報(例えば、転送テーブル、EU214上で実行されるソウトウェアプログラムなど)もメモリに記憶できるものと理解されたい。
【0016】
図2に示すように、本発明の或る代表的な実施形態では、PPA106は4つのメモリチャネル212を含んでいる。各メモリチャネル212は、どの様な数のメモリ装置にでも接続することができ、メモリ装置は、物理的にはラインカード100(図1)上に配置することができるが、PPA106に直接にというわけではない。例えば、本実施形態では、各メモリチャネル212は複数のダイナミックランダムアクセスメモリ(DRAM)に接続される。より具体的には、これらDRAMは、100メガヘルツDDR(ダブルデータレート)SDRAM(同期化DRAM)を含んでいてもよい。しかしながら、異なる速度で作動する様々なメモリ装置を使用することができるものと理解されたい。
【0017】
本実施形態では、PPA106はメモリ制御装置208を含んでいる。メモリ制御装置208は、PPA106内の各種ブロック(例えば、入力DMA204、FMG210、EU214、出力DMA216など)と通信してメモリへのアクセスを提供するよう構成することができる。明快さを期して、図2では、メモリ制御装置208は、メモリチャネル212とは別個の1つのブロックとして示している。しかしながら、個別のメモリ制御装置208を各メモリチャネル212の専用とすることもできると理解されたい。更に、メモリ制御装置208は、各メモリチャネル212内に配置することもできると理解されたい。
【0018】
本発明の或る態様によれば、パケットは、メモリデータユニット(MDU)と呼ばれる256バイト単位でメモリに記憶される。更に、或る実施形態では、MDUの記憶用として約128メガバイトのメモリを割り振っているが、これは50万MDUに相当する。しかしながら、パケットは任意の単位で記憶できるものと理解されたい。更に、どの様な量のメモリ空間をパケット記憶用に割り振ってもよいと理解されたい。
【0019】
上記のように、入力DMA204は、パケットを受信すると、そのパケットをメモリに記憶する。より具体的には、入力DMA204は、パケットをメモリに記憶するためFMG210からフリーMDUを入手する。従って、FMG210は、どのMDUがフリーであり、どれが使用中かを追跡し続けるよう構成されている。先に述べたように、MDUは256バイト長である。パケットが256バイトよりも長い場合、DMA204は、パケットを記憶するため、適切な数の追加のMDUを割り当てる。入力DMA204は、次いでMDUのリストを作成する。出力FMG210については、2000年12月18日出願の「フリーメモリマネジャスキーム及びキャッシュ」と題する米国特許出願第NN/NNN,NNN号に詳細に記述されており、その全体を本願に参考文献として援用する。
【0020】
上記のように、入力DMA204は、更に、各パケット毎に記述子を作成する。入力DMA204は、次いでこの記述子を入力記述子待ち行列206に記憶する。本発明の或る実施形態では、記述子は約64ビット(即ち8バイト)長であり、メモリ内のパケット用の第1MDUの位置やパケットの長さの様なフィールドを含んでいる。しかしながら、記述子は、どの様な長さで、どの様な数及び型式のフィールドを含んでいてもよいものと理解されたい。
【0021】
上記のように、EU214は、記憶されたパケットを検索してそれを処理する。厳密には、EU214は、入力記述子待ち行列206から記述子を読み出す。EU214は、次いでその記述子を使ってメモリからパケットを検索する。例えば、EU214は、パケットを保有している第1MDUに対するポインタ用の記述子を読み出すことができる。EU214は、パケットのヘッダを読み出し、それを解析して、パケットを分類することができる。EU214は、次いで、当該パケットを送信する前にパケットの或るフィールドを変更することができる。本発明の或る実施形態では、EU214は、16個の縮小命令セットコンピュータ(RISC)プロセッサを含んでいる。出力EU214については、2000年12月18日出願の「キャッシュリクエスト再試行待ち行列」と題する米国特許第NN/NNN,NNN号に詳細に記述されており、その全体を本願に参考文献として援用する。しかしながら、EU214は、どの様な数及び型式のプロセッサを含んでいてもよいと理解されたい。更に、EU214は、様々な方法でパケットを処理するために、様々なソフトウェアを実行することができると理解されたい。
【0022】
上記のように、パケットを送信するとき、EU214は、パケット用に作成された最初の記述子に基づいた出力記述子を作成する。この出力記述子は、出力DMA216の待ち行列に書き込まれ、出力DMA216は、当該パケットをLIPインタフェース218で送り出す。
【0023】
図3に、出力DMA216を詳しく示している。以下の説明で、出力DMA216は、ライン出力ブロック(LOP)216と呼ばれる。出力DMA(LOP)216は、様々な用語で呼ばれるものと理解されたい。
【0024】
本発明の或る代表的な実施形態では、LOP216は待ち行列302、DRAM読み出し論理(DRL)304、ローカル記憶装置(LST)306、ポートスケジューラFIFO(PSF)308、及びポート310を含んでいる。先に指摘したように、パケットを送信するとき、EU214(図2)は、パケットの出力記述子を待ち行列302に書き込む。DRL304は、待ち行列302から記述子を読み出し、ダイレクトメモリ(dm)リクエストを作り、パケットをメモリチャネル212(図2)から取り出す。検索されたパケットは、次いでLST306に記憶される。PSF308は、LST306からパケットを読み出し、それをポート310に送る。
【0025】
図4に示すように、本実施形態では、LOP216は、32チャンネル構成とすることができる。その場合、LOP216は、各チャネルに対応する32個の待ち行列302を含んでいる(即ち、待ち行列302−0から302−31まで)。具体的には、待ち行列302−0から302−31は、チャネル0から31にそれぞれ対応する。しかしながら、LOP216は、具体的用途次第で、どの様な数のチャネルででも構成することができるものと理解されたい。同様に、LOP216は、具体的用途次第で、どの様な数の待ち行列302を含んでいてもよいと理解されたい。更に、様々なマッピングスキームを使用して、待ち行列302をLOP216のチャネルにマッピングできるものと理解されたい。しかも、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0026】
図4に示すように、LOP216は、4個のDRL304も含んでいる(DRL304−0から304−3まで)。本実施形態では、各DRL304は、8チャネルまで処理できる構成になっている。具体的には、DRL304−0は、チャネル0から3、及びチャネル16から19を処理するよう構成されている。而して、DRL304−0は、待ち行列302−0から302−3、及び待ち行列302−16から302−19に接続される。DRL304−1は、チャネル4から7及びチャネル20から23を処理するよう構成されている。而して、DRL304−1は、待ち行列302−4から302−7、及び待ち行列302−20から302−23に接続される。DRL304−2は、チャネル8から11、及びチャネル24から27を処理するよう構成されている。而して、DRL304−2は、待ち行列302−8から302−11、及び待ち行列302−24から302−27に接続される。DRL304−3は、チャネル12から15、及びチャネル28から31を処理するよう構成されている。而して、DRL304−3は、待ち行列302−12から302−15、及び待ち行列302−28から302−31に接続される。LOP216は、どの様な数のDRL304を含んでいてもよい。各LOP216は、どの様な数の待ち行列302又はチャネルを処理するように構成してもよい。更に、DRL304は、様々なマッピングスキームを使って、LOP216の待ち行列302又はチャネルにマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0027】
図4に示すように、LOP216は、8個のLST306も含んでいる(即ち、LST306―0から306−7)。本実施形態では、各LST306は、4つまでチャネルを処理できるよう構成されている。具体的には、LST306−0は、チャネル0から3を処理するよう構成されている。而して、LST306−0は、DRL304−0に接続されている。LST306−1は、チャネル4から7を処理するよう構成されている。而して、LST306−1は、DRL304−1に接続されている。LST306−2は、チャネル8から11を処理するよう構成されている。而して、LST306−2は、DRL304−2に接続されている。LST306−3は、チャネル12から15を処理するよう構成されている。而して、LST306−3は、DRL304−3に接続されている。LST306−4は、チャネル16から19を処理するよう構成されている。而して、LST306−4は、DRL304−0に接続されている。LST306−5は、チャネル20から23を処理するよう構成されている。而して、LST306−5は、DRL304−1に接続されている。LST306−6は、チャネル24から27を処理するよう構成されている。而して、LST306−6は、DRL304−2に接続されている。最後に、LST306−7は、チャネル28から31を処理するよう構成されている。而して、LST306−7は、DRL304−3に接続されている。LOP216は、どの様な数のLST306を含んでいてもよいと理解されたい。LST306は、どの様な数のチャネル及びDRL304を処理するようにでも構成できるものと理解されたい。更に、LST306は、様々なマッピングスキームを使ってDRL304にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0028】
図4に示すように、LOP216は、4つのPSF308を含んでいる(即ち、PSF308−0から308−3まで)。本実施形態では、各PSF308は、16までチャネルを処理できるように構成することができる。しかしながら、図4に示す構成では、PSF308−0及び308−2は、16までチャネルを処理するよう構成されているが、PSF308−1及び308−3は、8つまでチャネルを処理するよう構成されている。具体的には、PSF308−0は、チャネル0から15を処理するよう構成されている。而して、PSF308−0は、LSP306−0、306−1、306−2、及び306−3に接続される。PSF308−1は、チャネル8から15までを処理するよう構成されている。而して、PSG308−1は、LSP306−2及び306−3に接続される。しかしながら、PSF306−1は、LSP306−0及び306−1に接続することによってチャネル0から15を処理するよう構成することもできると理解されたい。PSF308−2は、チャネル16から31を処理するよう構成されている。而して、PSF308−2は、LSP306−4、306−5、306−6、及び306−7に接続される。PSF308−3は、チャネル24から31を処理するよう構成されている。而して、PSF308−3は、LSP306−6及び306−7に接続される。しかしながら、PSF306−3は、LSP306−4及び306−5に接続することによりチャネル16から31を処理するよう構成することもできると理解されたい。LOP216は、どの様な数のPSF308を含んでいてもよいと理解されたい。PSF308は、どの様な数のチャネルでも処理できるように構成することができ、且つどの様な数のLST306にでも接続できるように構成することができるものと理解されたい。更に、PSF308は、様々なマッピングスキームを使って、LST306にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0029】
図4に示すように、LOP216は、4つのポート310を含んでいる(即ち、ポート310−0から310−3まで)。本実施形態では、各ポートは、16までチャネルを処理できるように構成することができる。而して、ポート310−0から310−3は、それぞれ、PSF308−0から308−3に接続される。しかしながら上記のように、図4に示す構成では、PSF308−1と308−3は、16ではなくて8つまでチャネルを処理するよう構成されている。しかしながら、上で指摘したように、PSF308−1と308−3は、16までチャネルを処理するよう構成することもできる。而して、ポート310−1と310−3は、16までチャネルを処理するよう構成することができる。LOP216は、どの様な数のポート310を含んでいてもよいと理解されたい。ポート310はどの様な数のチャネルでも処理できるように構成し、どの様な数のPSF308にでも接続できるように構成することができるものと理解されたい。更に、ポート310は、様々なマッピングスキームを使ってPSF308にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び/又はソフトウェアの何れによっても変更することができる。
【0030】
LOP216には4つのポート310と32個のチャネルがあると説明してきたが、全てのポート及びチャネルを使用する必要はないと理解されたい。例えば、或る用途では、ポート310は1つだけを使用し、チャネルは16しか使用可能ではないと仮定する。具体的には、ポート310−0を使用し、チャネル0から15が使用可能であると仮定する。上記構成では、4個のDRL304は、全て、4つのリクエストを同時にポート310−0に送信することができる。具体的には、DRL304−0、304−1,304−2、及び304−3は、それぞれ、チャネル0から3、4から7、8から11、12から15、でリクエストを送ることができる。DRL304−0から304−3に対するチャネルの割当が順番になっている(即ち、チャネル0から7がDRL304−0に割り当てられ、チャネル8から15がDRL304−1に割り当てられ、チャネル16から23がDRL304−2に割り当てられ、チャネル24から31がDRL304−3に割り当てられる)場合には、DRL304−0と304−1だけが使用できることになる。
【0031】
次に図5では、上で指摘したように、各DRL304は8つまでチャネルを処理できるよう構成されている。而して、本実施形態では、各DRL304は、これらチャネルの処理をスケジューリングするよう構成されたスケジューラ508を含んでいる。図5に示すように、各DRL304は、更に、リクエストマネジャ(RQM)502、DRAM読み出し制御器(DRC)504、DRAM読み出しシーケンサ(DRS)506、及びパーMDU(pMDU)510も含んでいる。
【0032】
次に図6に示すように、本実施形態では、スケジューラ508は、先入れ先出し(FIFO)メモリ、シフトレジスタなどのようなシフト構造600を含んでいてもよい。図6に示すように、シフト構造600は、スケジューラ508が処理するチャネルに対応するカラム(エントリ)602を含んでいる。上記のように、各DRL304(図5)は8つのチャネルを処理するよう構成することができる。従って、シフト構造600は、8つのエントリ602を含んでいる。しかしながら、シフト構造600は、用途次第でどの様な数のエントリ602を含んでいてもよいと理解されたい。
【0033】
便宜上及び明快さを期して、以下の説明及び対応する図面では、DRL304−0(図4)に関係するシフト構造600を説明し、示している。本実施形態では、DRL304−0(図4)は、チャネル0から3及びチャネル16から19を処理するよう構成されている。而して、シフト構造600は、チャネル0から3及びチャネル16から19、それぞれに対応するエントリ606、608、610、612、616、617、618、及び619を含んでいる。しかしながら、各DRL304(図4)は、各DRL304(図4)が処理する該当チャネルに対応するエントリ602を有するシフト構造600を含んでいるものと理解されたい。
【0034】
図6に示すように、各エントリ602は、複数のフィールド604を含んでいる。本実施形態では、エントリ602は、チャネル番号フィールド620、優先順位フィールド622、イン・フライトパケットフィールド624、出力実行可能フィールド626、入力実行可能フィールド628、及び使用可能フィールド630を含んでいる。しかしながら、エントリ602は、具体的用途次第で、どの様な数のフィールド604を含んでいてもよいと理解されたい。
【0035】
チャネル番号フィールド620は、パケットが送信されるチャネル番号を表示すように構成することができる。先に指摘したように、ソフトウェアは、この情報を提供することができる。本実施形態では、DRL340−0(図4)は、チャネル0から3及びチャネル16から19を処理するよう構成されている。而して、シフト構造600は、チャネル番号0から3及びチャネル番号16から19を備えたチャネル番号フィールド620を有するエントリ602を含んでいる。
【0036】
使用可能フィールド630は、あるチャンルが使用可能であるか否かを表示するように構成することができる。上で指摘したように、シフト構造600は、チャネル0から3及びチャネル1から19を処理するよう構成されている。具体的用途次第で、どれだけの数のチャネルを使用可能に又は使用不能にしてもよい。例えば、チャネル0、2、17だけを使用すると仮定しよう。そうすると、使用可能フィールド630は、チャネル0、2、17に対するエントリ606、610、617が使用可能となる。使用可能フィールド630は、チャネル1、3、16、18、19に対するエントリ608、612、616、618、619が使用不能となる。使用可能フィールド630は、PPA106(図1)の初期構成時にセットすることができる。しかしながら、使用可能フィールド630は、都合の良い何れの時期にでもセットできるものと理解されたい。
【0037】
本実施形態では、出力実行可能フィールド626は、LST(図5)がデータ受信の準備を整えていることを表示するように構成することができる。図4に関し先に述べたように、各DRL304は数多くのLST306に接続されている。更に、LST306−0は、チャネル0から3のデータを記憶するよう構成されている。LST306−4は、チャネル16−19のデータを記憶するよう構成されている。従って、図6に示すように、エントリ602がチャネル17を処理するように構成されていれば、そのエントリの出力実行可能フィールド626は、LST306−4(図4)の状態を表示する。
【0038】
出力実行可能フィールド628は、RQM502(図5)の読み出す記述子が待ち行列302(図5)内に在ることを表示するように構成することができる。上記のように、パケットを送信するときには、ソフトウェアは、そのパケットの記述子を待ち行列302に書き込む。本実施形態では、待ち行列302(図5)は、次いで、該当する入力実行可能フィールド628をスケジューラ508(図5)にセットする。例えば、或るパケットをチャネル17で送り出すと仮定する。先に説明したように、本実施形態では、このパケットの記述子は、チャネル17に割り当てられた待ち行列302に書き込まれる。本事例では、記述子は、待ち行列392−17(図5)に書き込まれる。スケジューラ508内のエントリ602の該当する入力実行可能フィールド628が、ここで、チャネル17用としてセットされることになる。本事例では、エントリ617の入力実行可能フィールド628がセットされることになる。
【0039】
イン・フライトパケットフィールド624は、或るパケットがイン・フライトであるか否かを表示するように構成することができる。パケットは、メモリから読み出し中、バスへの送信中など処理の途上にある場合にはイン・フライトであると見なされる。
【0040】
優先順位フィールド622は、チャネルの優先順位を表示するように構成することができる。或る構成では、スケジューラ508は、6ビットの優先順位フィールド622を備えて構成することができる。従って、64までの異なる優先順位を指定することができる。後に更に詳しく説明するが、優先順位の高いエントリ602は、優先順位の低いエントリ602よりも先に処理される。本発明の或る実施形態では、優先順位フィールド622は、PPA106(図1)の初期構成時にセットされる。しかしながら、優先順位フィールド622は、都合の良いとき何時でもセットできるものと理解されたい。
【0041】
スケジューラ508は、エントリ602をソートするよう構成された比較論理回路640を含んでいる。本実施形態では、フィールド604に基づいてエントリ602毎に重みが決められる。具体的には、エントリ602の重みは10ビット数である。これら10ビットの内の最上位のビットは、使用可能フィールド630に割り当てられる。第2位のビットは、出力実行可能フィールド626に割り当てられる。第3位のビットは、入力実行可能フィールド628に割り当てられる。第4位のビットは、イン・フライトフィールド624に割り当てられる。残りの6ビットは、優先順位フィールド622に割り当てられる。
【0042】
而して、本実施形態では、イン・フライトフィールド624を持つ、即ちパケットがイン・フライトであるエントリ602は、各優先順位に関わらず、イン・フライトフィールド624が使用不能であるエントリ602より先にソートされる。入力実行可能フィールド628が使用可能であるエントリ602は、イン・フライトフィールド624及び各優先順位に関わらず、入力実行可能フィールド628が使用不能であるエントリ602より先にソートされる。出力実行可能フィールド626が実行可能であるエントリ602は、入力実行可能フィールド628、イン・フライトフィールド624、及び各優先順位に関わらず、出力実行可能フィールド626が使用不能であるエントリよりも先にソートされる。使用可能フィールド630が使用可能であるエントリ602は、出力実行可能フィールド626、入力実行可能フィールド628、イン・フライトフィールド624、及び各優先順位に関わらず、使用可能フィールド630が使用不能であるエントリ602より先にソートされる。
【0043】
このようにして、エントリ602は、2つのエントリ602を各重みを比較することによりソートできるという、単層比較を使ってソートすることができる。対照的に、2つのエントリを、各フィールド604を比較することによりソートする場合は、5層比較又はそれ以上の比較が必要となる。しかしながら、エントリ602は、様々な比較スキームを使ってソートできるものと理解されたい。例えば、エントリ602は、各重み及び任意の数の各フィールド604を比較することによりソートできる。更に、エントリ602の重みを求める際には、各フィールド604の全てではなく一部を使用してもよい。
【0044】
図6において、カラム606が占めている位置がシフト構造600の先頭であり、カラム619が占めている位置がシフト構造600の末尾であると仮定する。ここで、エントリ617は、入力実行可能フィールド628が使用可能となっている唯一のエントリ602であると仮定する。そうすると、図7に示すように、比較論理回路640は、エントリ617をシフト構造600の先頭にシフトする。図7では、使用可能状態の入力実行可能フィールド628は「1」で表示され、一方、使用不能状態の入力実行可能フィールド628は「0」で表示されている。しかしながら、どの様な種類の表示を使用してもよいと理解されたい。
【0045】
本実施形態では、DRC504(図5)は、シフト構造600の先頭から読み出すように構成することができる。而して、本例では、DRC504(図5)は、エントリ617を読み出す。上記のように、エントリ617は、チャネル17を表示するチャネル番号フィールド620を含んでいる。而して、図5に示すように、DRC504は、RQM502に、シフト構造600の先頭のエントリのチャネル番号フィールド620(図7)により表示されているチャネル番号に関係付けられた待ち行列302から読み出すように命令する。この事例では、DRC504は、RQM502に、待ち行列302−17を読むように命令する。
【0046】
記述子に含まれている情報に基づいて、DRC504は、次いでダイレクトエントリ(dm)リクエストを発行し、その記述子に関係付けられているパケットを検索する。具体的には、記述子はパケットが記憶されているメモリ場所を含んでいてもよい。DRC504は、次に、そのアドレスを使って、メモリ制御装置208(図2)にdmリクエストを発行する。検索されたパケット又はパケットの一部は、次に、LST306に書き込まれる。本例では、検索されたパケット又はパケットの一部は、LST306−4(図4)に書き込まれる。
【0047】
先に指摘したように、本発明の或る実施形態では、パケットは、MDUと呼ばれる32バイト単位で処理される。而して、DRC504は、パケットが32バイト長を超えているか否かを判定するように構成されている。例えば、待ち行列302から検索された記述子は、パケットの長さを含んでいてもよい。DRC504は、この情報を調べてパケットが32バイト長を超えているか否かを判定することができる。
【0048】
本例では、パケットは、長さが32バイト以下であると仮定する。すると、DRC304は、エントリ617(図7)を、入力実行可能フィールド628(図7)に使用不能と書き込んでスケジューラ508に戻す。そうすると、図8に示すように、全てのエントリ602で入力実行可能フィールド628が使用不能となるので、エントリ617は、シフト構造600の末尾に書き込まれる。図5に戻って、DRC504は、パケットの記述子を保有している待ち行列302−17を削除する。
【0049】
ここで、本例では、パケット長さが32バイトよりも長いと仮定する。すると、図9A及び図9Bに示すように、DRC(図5)は、エントリ617に、入力実行可能フィールド628に使用可能と書き込んでシフト構造600に戻す。本実施形態のある構成では、図9Aに示すように、エントリ617は、シフト構造の末尾に書き込むことができる。他のエントリ602の全てで入力実行可能フィールド628が使用不能となっているので、比較論理回路640(図6)は、脈動を起こしてエントリ617をシフト構造600の先頭に戻す。しかしながら、これは時間を消費しクロックサイクルを浪費することになりかねない。而して、図9Bに示すように、別の構成では、比較論理回路640(図6)は、書き込んでシフト構造600に戻されようとしているエントリを、現在シフト構造600にあるエントリと比較するように構成されている。従って、この例では、エントリ617は、シフト構造600の先頭に書き戻され、残りのエントリ606、608、610、612、616、618、619は後ろにシフトされる。
【0050】
他にも入力実行可能フィールド628の使用可能なエントリ602がある場合、エントリ617は、それら他のエントリ602の後に書き込んで戻される。例えば、図10のように、エントリ617が書き戻されるときに、エントリ606と608は入力実行可能フィールド628が使用可能であると仮定しよう。而して、エントリ617はエントリ606と608の後ろに書き戻される。繰り返すが、或る実施形態では、エントリ617をシフト構造600の末尾に書き込み、比較論理回路640が脈動を起こしてエントリ617をエントリ608の後ろに戻す。或いは、別の実施形態では、エントリ610、612、616、618、619を後ろにシフトして、エントリ617をエントリ608の後ろに書き込む。
【0051】
図5に戻るが、パケット長さが32バイトよりも長いときには、DRC504は、待ち行列302から読み出されたパケットの記述子をMDU510に書き込む。具体的には、DRC504は、パケットの長さなどのパケットの残りの部分の処理に関する記述子の部分を書き込む。更に、データをLST306に書き込む際、データは、毎32バイト単位の後に入力された実行可能ビットと共に書き込まれる。
【0052】
ここで、PPA106(図1)が初期化されたときに、チャネル0、1、17は使用可能であったと仮定する。更に、チャネル0、1、17には、それぞれ、優先順位20、10、20が割り当てられていると仮定する。従って、図11に示すように、チャネル0、1、17に関係付けられているエントリ606、608、617の使用可能フィールド630は使用可能となる。本事例では、使用可能状態の使用可能フィールド630は「1」で表示され、使用不能状態の使用可能フィールド630は「0」で表示される。しかしながら、様々な表示を使用できるものと理解されたい。更に図11に示すように、エントリ606、608、617の優先順位フィールド622は、それぞれ、優先順位20、10、20にセットされている。しかしながら、どの様な優先順位表示を利用することもできるものと理解されたい。
【0053】
上記のように、使用可能フィールド630が使用可能なエントリ602は、使用可能フィールド630が使用不能なエントリ602より先にソートされる。更に、優先順位が高いエントリ602は、優先順位が低いエントリ602より先にソートされる。従って、図12に示すように、エントリ606は、シフト構造600の先頭にシフトされ、後にエントリ617が続き、その後にエントリ608が続く。本事例では、大きい数(即ち20)は、優先順位が高いものと仮定している。しかしながら、様々な優先順位スキームを使用できるものと理解されたい。
【0054】
ここで、パケットは、チャネル0及び1を通して送られるものと仮定する。図5に示すように、ソフトウェアは、記述子を待ち行列302−0及び302−1に書き込む。図13で、ソフトウェアは、更に、エントリ606及び608の入力実行可能フィールド628を使用可能にする。図13に示すように、シフト構造600は、エントリ606が先頭に留まり、次に608が来て、その後にエントリ617が来るようにソートされる。エントリ617は、エントリ608より優先順位が高いが、エントリ608は実行可能エントリ628が使用可能なので、エントリ608がエントリ617より前にシフトされる。
【0055】
図5において、DRC504は、エントリ606(図13)を読み出し、RQM502に待ち行列302−0の記述子を読み出すよう命令する。DRC504は、次いで、メモリからパケットを検索するようdmリクエストを発行する。更に、DRS506は、メモリ内のアドエスを求めて、待ち行列302から読み出した記述子に基づいてアクセスするよう構成することができる。
【0056】
図13において、パケット長さが32バイトよりも短ければ、DRC504は、エントリ606を、入力実行可能フィールド628が使用不能と書き込んで戻す。すると、エントリ606は、エントリ619の後ろに書き戻され、従って、エントリ608が処理される。しかしながら、パケット長さが32バイトよりも長ければ、DRC504(図5)は、エントリ606を、入力実行可能フィールド628が使用可能と書き込んで戻す。本事例では、エントリ606は、エントリ608よりも優先順位が高いため、シフト構造600の先頭に書き戻される。このようにして、優先順位が高いチャネルは優先順位が低いチャネルを押しやることになる。
【0057】
図14において、パケットは、チャネル0及び17を通しで送信されると仮定する。而して、エントリ606と617の入力実行可能フィールド628は使用可能である。従って、エントリ606がシフト構造600の先頭にシフトされ、この後にエントリ617が続く。ここで、チャネル0に向け処理されるパケットは長さが32バイトよりも長いと仮定する。すると、エントリ606は、入力実行可能フィールド628に使用可能と書き込まれてシフト構造600に戻される。結果的に、エントリ606は、優先順位が同等であるのでエントリ617の後に書き込まれる。このようにして、優先順位レベルが同じチャネルはラウンドロビン方式を使ってソートされる。
【0058】
図5に戻るが、先に述べたように、PSF308は、LST306からデータ(即ち、パケット又はパケットの一部)を取り出して、それをポート310(図4)で送り出すよう構成されている。図4において、これも上に述べたように、各PSF308は、16チャネルまで処理するよう構成されている。而して、図5に示すように、PSF308は、これらのチャネルの処理をスケジューリングするよう構成されたスケジューラ516を含んでいる。図5に示すように、PSF308は、RAM読み出しシーケンサ(RRS)518、出力データ制御装置(ODC)526、出力データRAM(ODR)528、ACK(確認応答)制御モジュール(ACM)522、及びACK RAMモジュール(ARM)524も含んでいる。
【0059】
スケジューラ516は、スケジューラ508と同様に作動する。しかしながら、PSF308は16個までチャネルを処理するよう構成されているので、スケジューラ516も、16個までチャネルを処理するよう構成されている。而して、図15に示すように、スケジューラ516は、16個のエントリ1502を有するシフト構造1500を含んでいる。シフト構造1500は、チャネル番号フィールド、優先順位フィールド、イン・フライトパケットフィールド、出力実行可能フィールド、入力実行可能フィールド、及び使用可能フィールドのような、シフト構造600(図6)のフィールド604と同様の様々なフィールド1504を含んでいる。
【0060】
図5に戻るが、上記のように、メモリからのデータは、32バイト単位でLST306に記憶される。具体的には、パケット又はパケットの一部がメモリから検索され、エントリとしてLST306に記憶され、有効ビットがセットされる。エントリがLST306から読み出されると、有効ビットはリセットされる。本実施形態では、LST306は、検索されたパケットを記憶するよう構成されたRAM512を含んでいる。LST306は、エントリが書き込まれLST306から読み出される度に、RAM512の有効ビットをセット及びリセットするよう構成されているパケットデータRAM制御(PDC)514も含んでいる。
【0061】
同時に、有効ビットがLST306にセットされ、スケジューラ516の入力実行可能フィールドもセットされる。本実施形態では、RRS518は、スケジューラ516からエントリを読み出すよう構成されている。ODC526は、次いで、スケジューラ516から読み出されたエントリに基づいてLST306から読み出しを行なう。例えば、チャネル0の使用可能フィールドがスケジューラ516で使用可能であると仮定する。シフト構造1500(図15)内で使用可能なエントリはこれ1つであると仮定する。すると、RRS518はこのエントリを読み出し、次いでODC526は、エントリ内のチャネル番号フィールドのチャネル番号に関係付けられたLST306にアクセスする。本例では、ODC526がLST306−0(図4)からデータを読み出す。
【0062】
LST306からデータを読み出した後、ODC526は、ODR528に書込みを行なう。或る実施形態では、ODR528は、FIFO RAMとして構成されている。更に、ODR528は、DMA216(図2)の作動クロックとLIP218(図2)のクロックの間の非同期FIFOとして作動するよう構成されている。図5に示す論理の全ては、コアクロックで作動し、LIP218(図2)は別のクロックで作動する。而して、ODR528は、これら2つのクロックにまたがるデータの転送を容易にする。
【0063】
図15に戻るが、シフト構造1500では、出力実行可能フィールドは、ACKフィールド1520として構成されている。本発明の或る態様によれば、ACKフィールド1520は、ポート310(図4)はパケットを送信する準備が整っているか否かを表示するよう構成されている。具体的には、図5において、ARM524は、クレジット値を備えて構成することができる。このクレジット値は、ポート310(図4)を通してパケットを受信することになるポート310(図4)に接続されているデバイス上のバッファの数に等しくセットすることができる。本実施形態では、このクレジット値は32にセットされている。しかしながら、クレジット値は何れの所望の数に等しくセットしてもよいと理解されたい。
【0064】
パケットがポート310(図4)上のチャネルで送り出される場合、ACM522は、ARM524のクレジット値を減分する。パケットを受信するデバイスから確認応答を受け取ると、ACM522は、ARM524内のクレジット値を増分する。チャネル用のクレジット値が非ゼロであれば、ACM522は、ACKフィールド1520(図15)を使用可能にする。チャネル用のクレジット値がゼロであれば、ACM522は、ACKフィールド1520(図15)を使用不能にする。例えば、ACM522は、ACKフィールド1520(図15)を、「1」にセットして使用可能状態にし、「0」にセットして使用不能とすることができる。しかしながら、様々な値を使用できるものと理解されたい。本実施形態では、ACKフィールド1520(図15)が使用可能なエントリ1502(図15)は、ACKフィールド1520(図15)が使用不能なエントリより先にソートされる。
【0065】
図2に戻るが、上記のように、フレーマ装置は、LIPインタフェース202の他端に接続することができる。本発明の或る用途では、フレーマ装置は、同期光学ネットワーク(SONET)接続部を介してLIPインタフェース202に接続されている。このフレーマ装置は、光学キャリア(OC)数48(即ち、毎秒2.488ギガビット)までの速度で作動するように設計されていると仮定する。これは、OC48における1つの論理チャネル、又はその合計データ転送速度がOC48以下である多数の論理チャネルであってもよい。例えば、フレーマは、合計がOC48になるような、CO12(即ち、毎秒622.08メガバイト)で作動する2つのチャネルと、CO3(即ち、毎秒155.52メガバイト)で作動する8つのチャネルで構成されていると仮定する。フレーマ装置は、これらチャネルそれぞれに関係付けられた幾つかのバッファリングも有している。このバッファリングは、当該チャネル用にパケットデータを保持するために使用される。
【0066】
この用途では、図5において、スケジューラ508と516は、フレーマ装置上のチャネルのOCレートに対応する優先順位フィールド622(図6)で構成されているものと仮定する。本例では、チャネル4及び5は、12の優先順位を割り当てられ、チャネル0から3及び6から9は、3の優先順位を割り当てられていると仮定している。
【0067】
更に、ソフトウェアは、これら全てのチャネルで送信されるパケットを有し、対応する記述子を待ち行列302(図4)に書き込んだと仮定する。初期には、優先順位が高い(即ち、12)2つのエントリが順に処理され、優先順位の低いチャネルが押しやられることになる。先に説明したように、LIPインタフェース202(図2)と218(図2)は、毎200メガヘルツ(MHz)約16ビットで作動することができる。オーバーヘッドがあればこれを取り除いた後で、このレートは依然としてOC48を超えている。而して、優先順位が高いチャネル(即ち、チャネル4及び5)のデータは、これら2つのチャネル用のフレーマ装置のバッファが一杯となるまで、OC−48のレートより速いレートで送信されることになる。その時点で、スケジューラ516内のこれら2つのエントリ用の実行可能ビットは、(フレーマ装置はもはや実行可能ではないので)使用不能とされることになる。次いで、優先順位の低いエントリの処理が開始されることになる。時間経過と共に、フレーマ装置は、2つのOC−12チャネル(即ち、チャネル4及び5)用の、バッファの一部をフリーにする。次いで、対応する入力実行可能フィールドがセットされ、スケジューラ516(図18)は、これらチャネルの処理を再開する。このように、優先順位フィールド622(図6)を使用して、ラインの帯域幅を速度が異なる多数の論理チャネルに分割することができる。
【0068】
以上、本発明を、添付図面に示す具体的実施形態に関連付けて説明してきたが、本発明の精神及び範囲を逸脱することなく様々な変更を加えることができる。従って、本発明は図面及び上記説明に示す特定の形態に制限されるものではないと解釈すべきである。
【図面の簡単な説明】
【0069】
【図1】ラインカードのブロック図である。
【図2】パケット処理ASIC(PPA)のブロック図である。
【図3】出力DMAのブロック図である。
【図4】図3に示す出力DMAの別のブロック図である。
【図5】図3に示す出力DMAの又別のブロック図である。
【図6】本発明のある実施形態によるスケジューラの線図である。
【図7】図6に示すスケジューラの別の線図である。
【図8】図6に示すスケジューラの又別の線図である。
【図9A】図6に示すスケジューラの又別の線図である。
【図9B】図6に示すスケジューラの又別の線図である。
【図10】図6に示すスケジューラの又別の線図である。
【図11】図6に示すスケジューラの又別の線図である。
【図12】図6に示すスケジューラの又別の線図である。
【図13】図6に示すスケジューラの又別の線図である。
【図14】図6に示すスケジューラの又別の線図である。
【図15】本発明のある実施形態による別のスケジューラの線図である。
Claims (24)
- 多重チャネルを有するデータメモリアクセス(DMA)をスケジューリングするための装置において、
スケジューリングの対象となる多重チャネルに対応する複数のエントリを有するシフト構造であって、前記シフト構造内の各エントリは複数のフィールドを含んでおり、更に前記各エントリは前記複数のフィールドに基づいて決められる重みを含んでいるシフト構造と、
前記エントリをそれらの各重みに基づいてソートするよう構成されている比較論理回路と、を備えていることを特徴とする装置。 - 前記比較論理回路は、前記シフト構造へ書き込まれるエントリの重みを、前記シフト構造内の前記複数のエントリの重みと比較するよう構成されていることを特徴とする請求項1に記載の装置。
- 前記比較論理回路は、前記シフト構造に書き込まれる前記エントリを重みの重いエントリの後ろに挿入し、重みの軽いエントリを前記シフト構造に書き込まれる前記エントリの後ろにシフトするよう構成されていることを特徴とする請求項2に記載の装置。
- 前記重みは、複数のビットを有する数を含んでおり、前記複数のフィールドは、それぞれ、前記重みのビットの1セットに割り当てられていることを特徴とする請求項1に記載の装置。
- 前記複数のフィールドは、
前記重みの最上位のビットに割り当てられる使用可能フィールドと、
前記重みの第2位のビットに割り当てられる出力実行可能フィールドと、
前記重みの第3位のビットに割り当てられる入力実行可能フィールドと、
前記重みの第4位のビットに割り当てられるイン・フライトフィールドと、
前記重みの第5位のビットから前記重みの第10位のビットに割り当てられる優先順位フィールドと、を含んでいることを特徴とする請求項4に記載の装置。 - 前記優先順位フィールドは、より高い優先順位にはより重い重みが割り当てられる複数の優先順位レベルを含んでいることを特徴とする請求項5に記載の装置。
- 前記DMAのチャネルは、複数の光学キャリア(OC)数を有する同期光学ネットワーク(SONET)に接続され、前記複数のエントリには、前記複数のエントリに関係付けられたチャネルのOC数に対応する優先順位レベルが割り当てられることを特徴とする請求項6に記載の装置。
- OC12で作動するチャネルに関係付けられたエントリの第1のセットには、優先順位レベル12が割り当てられ、
OC3で作動するチャネルに関係付けられたエントリの第2のセットには、優先順位レベル3が割り当てられることを特徴とする請求項7に記載の装置。 - 前記シフト構造は先入れ先出し(FIFO)装置であることを特徴とする請求項1に記載の装置。
- データメモリアクセス(DMA)上の多重チャネルをスケジューリングする方法において、
それぞれに前記DMA上のチャネルに関係付けられており、それぞれに複数のフィールドを含んでいる複数のエントリをシフト構造に書き込む段階と、
前記複数のフィールドに基づいて前記エントリに重みを割り当てる段階と、
前記エントリを前記重みに基づいてソートし、最も重い重みを有するエントリを前記シフト構造の先頭にソートする段階と、
前記エントリに関係付けられたチャネルを処理するために、前記シフト構造の先頭から前記エントリを読み取る段階と、から成ることを特徴とする方法。 - 前記シフト構造の先頭から読み取られた前記エントリを、前記エントリに関係付けられたチャネルが処理された後、前記シフト構造に書き込んで戻す段階を更に含んでいることを特徴とする請求項10に記載の方法。
- 前記書き込む段階は、
前記エントリを、前記シフト構造内の、前記シフト構造内で重みがより重いエントリの後ろに挿入する段階と、
前記シフト構造内で重みがより軽いエントリを、書き込んで戻される前記エントリの後ろにシフトする段階と、を更に含んでいることを特徴とする請求項11に記載の方法。 - 前記重みは、複数のビットを有する数を含んでおり、前記割り当てる段階は、
前記複数のフィールドを、それぞれ、前記重みのビットのセットに割り当てる段階を更に含んでいることを特徴とする請求項10に記載の方法。 - 前記複数のフィールドは、
前記重みの最上位のビットに割り当てられる使用可能フィールドと、
前記重みの第2位のビットに割り当てられる出力実行可能フィールドと、
前記重みの第3位のビットに割り当てられる入力実行可能フィールドと、
前記重みの第4位のビットに割り当てられるイン・フライトフィールドと、
前記重みの第5位のビットから前記重みの第10位のビットに割り当てられる優先順位フィールドと、を含んでいることを特徴とする請求項13に記載の方法。 - エントリに関係付けられたチャネルを処理する際には、前記エントリの前記入力実行可能フィールドを使用可能にする段階を更に含んでいることを特徴とする請求項14に記載の方法。
- 前記複数のフィールドは複数の優先順位レベルを含んでおり、更に、
より重い重みをより高い優先順位レベルに割り当てる段階を含んでいることを特徴とする請求項14に記載の方法。 - チャネルは、複数の光学キャリア(OC)数を有する同期光学ネットワーク(SONET)に接続され、更に、
チャネルのOC数に対応する優先順位レベルを割り当てる段階を含んでいることを特徴とする請求項16に記載の方法。 - OC12で作動するチャネルに関係付けられたエントリの第1のセットに優先順位レベル12を割り当てる段階と、
OC3で作動するチャネルに関係付けられたエントリの第2のセットに優先順位レベル3を割り当てる段階と、を更に含んでいることを特徴とする請求項17に記載の方法。 - 多重チャネルをスケジューリングする方法において、
それぞれにチャネルと関係付けられており、それぞれに複数のフィールドを含んでいる、シフト構造内の複数のエントリに重みを割り当てる段階と、
前記エントリを前記重みに基づいてソートし、最も重い重みを有するエントリを前記シフト構造の先頭にソートする段階と、
前記シフト構造の先頭から前記エントリを読み取る段階と、
前記シフト構造から読み取られた前記エントリに関係付けられたチャネルを処理する段階と、
前記シフト構造から読み取られた前記エントリを前記シフト構造に書き込んで戻す段階と、から成ることを特徴とする方法。 - 前記エントリを、前記シフト構造の、前記シフト構造内で重みがより重いエントリの後ろに挿入して戻す段階と、
前記シフト構造内で重みがより軽いエントリを、前記書き戻されるエントリの後ろにシフトする段階と、を更に含んでいることを特徴とする請求項19に記載の方法。 - 前記重みは、複数のビットを有する数を含んでおり、前記割り当てる段階は、
前記複数のフィールドを、それぞれ、前記重みのビットのセットに割り当てる段階を更に含んでいることを特徴とする請求項19に記載の方法。 - 前記複数のフィールドは、複数の優先順位レベルを有する優先順位フィールドを含んでいることを特徴とする請求項19に記載の方法。
- 前記チャネルは、複数の光学キャリア(OC)数を有する同期光学ネットワーク(SONET)に接続されており、更に、
チャネルのOC数に対応する優先順位レベルを割り当てる段階を含んでいることを特徴とする請求項22に記載の方法。 - OC12で作動するチャネルに関係付けられたエントリの第1のセットに優先順位レベル12を割り当てる段階と、
OC3で作動するチャネルに関係付けられたエントリの第2のセットに優先順位レベル3を割り当てる段階と、を更に含んでいることを特徴とする請求項23に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/740,669 US7254651B2 (en) | 2000-12-18 | 2000-12-18 | Scheduler for a direct memory access device having multiple channels |
PCT/US2001/044580 WO2002050626A2 (en) | 2000-12-18 | 2001-11-29 | Scheduler for a data memory access having multiple channels |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004527024A true JP2004527024A (ja) | 2004-09-02 |
Family
ID=24977527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002551659A Pending JP2004527024A (ja) | 2000-12-18 | 2001-11-29 | 多重チャネルを有するデータメモリアクセス用のスケジューラ |
Country Status (5)
Country | Link |
---|---|
US (1) | US7254651B2 (ja) |
EP (1) | EP1344138A4 (ja) |
JP (1) | JP2004527024A (ja) |
AU (1) | AU2002217924A1 (ja) |
WO (1) | WO2002050626A2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7869453B2 (en) * | 2004-12-17 | 2011-01-11 | Lantiq Deutschland Gmbh | Apparatus and method for data transfer |
US7493426B2 (en) * | 2005-01-31 | 2009-02-17 | International Business Machines Corporation | Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control |
US20060174050A1 (en) * | 2005-01-31 | 2006-08-03 | International Business Machines Corporation | Internal data bus interconnection mechanism utilizing shared buffers supporting communication among multiple functional components of an integrated circuit chip |
US7136954B2 (en) * | 2005-01-31 | 2006-11-14 | International Business Machines Corporation | Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism |
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 |
US20080285551A1 (en) * | 2007-05-18 | 2008-11-20 | Shamsundar Ashok | Method, Apparatus, and Computer Program Product for Implementing Bandwidth Capping at Logical Port Level for Shared Ethernet Port |
JP2010108300A (ja) * | 2008-10-30 | 2010-05-13 | Hitachi Ltd | 情報処理システム、及び情報処理システムにおけるi/oのパスへの割り当て方法 |
US10996980B2 (en) * | 2018-04-23 | 2021-05-04 | Avago Technologies International Sales Pte. Limited | Multi-threaded command processing system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04367058A (ja) | 1991-06-14 | 1992-12-18 | Matsushita Electric Ind Co Ltd | 情報装置 |
TW207013B (en) * | 1993-02-19 | 1993-06-01 | Nat Science Committee | Architecture of optimal high-speed sorter |
US5828856A (en) | 1994-01-28 | 1998-10-27 | Apple Computer, Inc. | Dual bus concurrent multi-channel direct memory access controller and method |
JPH1040211A (ja) | 1996-04-30 | 1998-02-13 | Texas Instr Inc <Ti> | パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路 |
US5938743A (en) | 1997-03-17 | 1999-08-17 | Xerox Corporation | Method of using the UNIX physio to allow data to be transferred on a plurality of channels concurrently |
US6052375A (en) | 1997-11-26 | 2000-04-18 | International Business Machines Corporation | High speed internetworking traffic scaler and shaper |
-
2000
- 2000-12-18 US US09/740,669 patent/US7254651B2/en not_active Expired - Fee Related
-
2001
- 2001-11-29 AU AU2002217924A patent/AU2002217924A1/en not_active Abandoned
- 2001-11-29 EP EP01271568A patent/EP1344138A4/en not_active Withdrawn
- 2001-11-29 JP JP2002551659A patent/JP2004527024A/ja active Pending
- 2001-11-29 WO PCT/US2001/044580 patent/WO2002050626A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP1344138A4 (en) | 2007-12-05 |
AU2002217924A1 (en) | 2002-07-01 |
WO2002050626A2 (en) | 2002-06-27 |
WO2002050626A3 (en) | 2002-08-22 |
US7254651B2 (en) | 2007-08-07 |
EP1344138A2 (en) | 2003-09-17 |
US20020078267A1 (en) | 2002-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8397010B1 (en) | Convenient, flexible, and efficient management of memory space and bandwidth | |
US9128925B2 (en) | System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines | |
US8155134B2 (en) | System-on-chip communication manager | |
USRE38134E1 (en) | System for communications where first priority data transfer is not disturbed by second priority data transfer and where allocated bandwidth is removed when process terminates abnormally | |
JP3946873B2 (ja) | ディスクアレイ制御装置 | |
US20020126673A1 (en) | Shared memory | |
US7653072B2 (en) | Overcoming access latency inefficiency in memories for packet switched networks | |
US20050235072A1 (en) | Data storage controller | |
EP2472403A2 (en) | Memory arbitration system and method having an arbitration packet protocol | |
US7627672B2 (en) | Network packet storage method and network packet transmitting apparatus using the same | |
US7904677B2 (en) | Memory control device | |
KR100590387B1 (ko) | 네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법 | |
US9128633B2 (en) | Semiconductor memory device and method of operating the semiconductor memory device | |
US6311257B1 (en) | Method and system for allocating memory for a command queue | |
US5907688A (en) | Smart arbitration for non-symmetric data streams | |
JP2004527024A (ja) | 多重チャネルを有するデータメモリアクセス用のスケジューラ | |
WO2000017759A2 (en) | Computer system comprising latency tolerant and intolerant modules | |
US6970936B2 (en) | Data processing system and method of communication that employ a request-and-forget protocol | |
US7529857B2 (en) | Data processing apparatus and data transfer control method | |
US9804959B2 (en) | In-flight packet processing | |
US20100306483A1 (en) | Data Processor with Efficient Scalable Queuing and Method Therefor | |
US6647443B1 (en) | Multi-queue quality of service communication device | |
JP7435054B2 (ja) | 通信装置、通信装置の制御方法、および集積回路 | |
CN118445232A (zh) | 多通道dma控制器保序装置及方法 | |
CN118331480A (zh) | 存储器控制系统与存储器控制方法 |