(57)【要約】データメモリアクセス（ＤＭＡ）の多重チャネルをスケジューリングするよう構成されているスケジューラは、スケジューリング対象の多重チャネル（２１２）に対応するエントリを有するシフト構造（６００）を含んでいる。シフト構造内の各エントリ（６０２）は、多重フィールド（６０４）を含んでいる。各エントリ（６０２）は、これら多重フィールド（６０４）に基づいて決められる重みも含んでいる。スケジューラ（５０８）は、更に、エントリをそれらの各重みに基づいてソートするよう構成されている比較論理回路も含んでいる。【選択図】図２
2004527024.tif 000002
【特許請求の範囲】
【請求項１】
多重チャネルを有するデータメモリアクセス（ＤＭＡ）をスケジューリングするための装置において、
スケジューリングの対象となる多重チャネルに対応する複数のエントリを有するシフト構造であって、前記シフト構造内の各エントリは複数のフィールドを含んでおり、更に前記各エントリは前記複数のフィールドに基づいて決められる重みを含んでいるシフト構造と、
前記エントリをそれらの各重みに基づいてソートするよう構成されている比較論理回路と、を備えていることを特徴とする装置。
【請求項２】
前記比較論理回路は、前記シフト構造へ書き込まれるエントリの重みを、前記シフト構造内の前記複数のエントリの重みと比較するよう構成されていることを特徴とする請求項１に記載の装置。
【請求項３】
前記比較論理回路は、前記シフト構造に書き込まれる前記エントリを重みの重いエントリの後ろに挿入し、重みの軽いエントリを前記シフト構造に書き込まれる前記エントリの後ろにシフトするよう構成されていることを特徴とする請求項２に記載の装置。
【請求項４】
前記重みは、複数のビットを有する数を含んでおり、前記複数のフィールドは、それぞれ、前記重みのビットの１セットに割り当てられていることを特徴とする請求項１に記載の装置。
【請求項５】
前記複数のフィールドは、
前記重みの最上位のビットに割り当てられる使用可能フィールドと、
前記重みの第２位のビットに割り当てられる出力実行可能フィールドと、
前記重みの第３位のビットに割り当てられる入力実行可能フィールドと、
前記重みの第４位のビットに割り当てられるイン・フライトフィールドと、
前記重みの第５位のビットから前記重みの第１０位のビットに割り当てられる優先順位フィールドと、を含んでいることを特徴とする請求項４に記載の装置。
【請求項６】
前記優先順位フィールドは、より高い優先順位にはより重い重みが割り当てられる複数の優先順位レベルを含んでいることを特徴とする請求項５に記載の装置。
【請求項７】
前記ＤＭＡのチャネルは、複数の光学キャリア（ＯＣ）数を有する同期光学ネットワーク（ＳＯＮＥＴ）に接続され、前記複数のエントリには、前記複数のエントリに関係付けられたチャネルのＯＣ数に対応する優先順位レベルが割り当てられることを特徴とする請求項６に記載の装置。
【請求項８】
ＯＣ１２で作動するチャネルに関係付けられたエントリの第１のセットには、優先順位レベル１２が割り当てられ、
ＯＣ３で作動するチャネルに関係付けられたエントリの第２のセットには、優先順位レベル３が割り当てられることを特徴とする請求項７に記載の装置。
【請求項９】
前記シフト構造は先入れ先出し（ＦＩＦＯ）装置であることを特徴とする請求項１に記載の装置。
【請求項１０】
データメモリアクセス（ＤＭＡ）上の多重チャネルをスケジューリングする方法において、
それぞれに前記ＤＭＡ上のチャネルに関係付けられており、それぞれに複数のフィールドを含んでいる複数のエントリをシフト構造に書き込む段階と、
前記複数のフィールドに基づいて前記エントリに重みを割り当てる段階と、
前記エントリを前記重みに基づいてソートし、最も重い重みを有するエントリを前記シフト構造の先頭にソートする段階と、
前記エントリに関係付けられたチャネルを処理するために、前記シフト構造の先頭から前記エントリを読み取る段階と、から成ることを特徴とする方法。
【請求項１１】
前記シフト構造の先頭から読み取られた前記エントリを、前記エントリに関係付けられたチャネルが処理された後、前記シフト構造に書き込んで戻す段階を更に含んでいることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記書き込む段階は、
前記エントリを、前記シフト構造内の、前記シフト構造内で重みがより重いエントリの後ろに挿入する段階と、
前記シフト構造内で重みがより軽いエントリを、書き込んで戻される前記エントリの後ろにシフトする段階と、を更に含んでいることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記重みは、複数のビットを有する数を含んでおり、前記割り当てる段階は、
前記複数のフィールドを、それぞれ、前記重みのビットのセットに割り当てる段階を更に含んでいることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記複数のフィールドは、
前記重みの最上位のビットに割り当てられる使用可能フィールドと、
前記重みの第２位のビットに割り当てられる出力実行可能フィールドと、
前記重みの第３位のビットに割り当てられる入力実行可能フィールドと、
前記重みの第４位のビットに割り当てられるイン・フライトフィールドと、
前記重みの第５位のビットから前記重みの第１０位のビットに割り当てられる優先順位フィールドと、を含んでいることを特徴とする請求項１３に記載の方法。
【請求項１５】
エントリに関係付けられたチャネルを処理する際には、前記エントリの前記入力実行可能フィールドを使用可能にする段階を更に含んでいることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記複数のフィールドは複数の優先順位レベルを含んでおり、更に、
より重い重みをより高い優先順位レベルに割り当てる段階を含んでいることを特徴とする請求項１４に記載の方法。
【請求項１７】
チャネルは、複数の光学キャリア（ＯＣ）数を有する同期光学ネットワーク（ＳＯＮＥＴ）に接続され、更に、
チャネルのＯＣ数に対応する優先順位レベルを割り当てる段階を含んでいることを特徴とする請求項１６に記載の方法。
【請求項１８】
ＯＣ１２で作動するチャネルに関係付けられたエントリの第１のセットに優先順位レベル１２を割り当てる段階と、
ＯＣ３で作動するチャネルに関係付けられたエントリの第２のセットに優先順位レベル３を割り当てる段階と、を更に含んでいることを特徴とする請求項１７に記載の方法。
【請求項１９】
多重チャネルをスケジューリングする方法において、
それぞれにチャネルと関係付けられており、それぞれに複数のフィールドを含んでいる、シフト構造内の複数のエントリに重みを割り当てる段階と、
前記エントリを前記重みに基づいてソートし、最も重い重みを有するエントリを前記シフト構造の先頭にソートする段階と、
前記シフト構造の先頭から前記エントリを読み取る段階と、
前記シフト構造から読み取られた前記エントリに関係付けられたチャネルを処理する段階と、
前記シフト構造から読み取られた前記エントリを前記シフト構造に書き込んで戻す段階と、から成ることを特徴とする方法。
【請求項２０】
前記エントリを、前記シフト構造の、前記シフト構造内で重みがより重いエントリの後ろに挿入して戻す段階と、
前記シフト構造内で重みがより軽いエントリを、前記書き戻されるエントリの後ろにシフトする段階と、を更に含んでいることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記重みは、複数のビットを有する数を含んでおり、前記割り当てる段階は、
前記複数のフィールドを、それぞれ、前記重みのビットのセットに割り当てる段階を更に含んでいることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記複数のフィールドは、複数の優先順位レベルを有する優先順位フィールドを含んでいることを特徴とする請求項１９に記載の方法。
【請求項２３】
前記チャネルは、複数の光学キャリア（ＯＣ）数を有する同期光学ネットワーク（ＳＯＮＥＴ）に接続されており、更に、
チャネルのＯＣ数に対応する優先順位レベルを割り当てる段階を含んでいることを特徴とする請求項２２に記載の方法。
【請求項２４】
ＯＣ１２で作動するチャネルに関係付けられたエントリの第１のセットに優先順位レベル１２を割り当てる段階と、
ＯＣ３で作動するチャネルに関係付けられたエントリの第２のセットに優先順位レベル３を割り当てる段階と、を更に含んでいることを特徴とする請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概括的にはスケジューラに、そしてより厳密には多重チャネルを有するデータメモリアクセス（ＤＭＡ）用のスケジューラに関する。
【背景技術】
【０００２】
一般的には、装置のデータメモリアクセス（ＤＭＡ）は、周辺機器と装置のメモリとの間のデータ伝送を制御する。装置は、周辺機器から受信したデータ及び周辺機器へ送るデータを、それぞれ処理するための入力ＤＭＡと出力ＤＭＡを備えている。周辺機器が入力ＤＭＡ付の装置にデータを送信しようとする場合、周辺機器は入力ＤＭＡに対してリクエストを送る。すると、入力ＤＭＡは、周辺機器に対して確認応答（ＡＣＫ）を送る。周辺機器は、ＡＣＫを受け取ると、データを入力ＤＭＡに送信し、ＤＭＡはそのデータをメモリに伝送する。データを周辺機器に送る場合、装置のプロセッサは、出力ＤＭＡにリクエストを送る。すると、出力ＤＭＡは、メモリから当該データを取り出して、そのデータを周辺機器に送り出す。
【０００３】
従来のＤＭＡは、通常、複数の周辺機器、１つの周辺機器上の多重チャネル、又は装置上の多重メモリチャネルに接続できる多重チャネルを有している。従来のＤＭＡは、通常更に、これらの多重チャネルを制御するためのアービタ又はスケジューラを有している。しかしながら、ＤＭＡ上のチャネル数が増加するにつれ、アービタ／スケジューラは益々複雑になってきている。その結果、ＤＭＡのコストは上がり、処理速度は低下することになる。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明は、データメモリアクセス（ＤＭＡ）の多重チャネルをスケジューリングするためのスケジューラに関する。本発明の或る態様によれば、スケジューラは、スケジューリング対象の多重チャネルに対応するエントリを有するシフト構造を含んでいる。シフト構造内の各エントリは、複数のフィールドを含んでいる。各エントリは、これら複数のフィールドに基づいて決められた重みも含んでいる。スケジューラは、次いで各重みに基づいてエントリをソートするよう構成された比較論理回路も含んでいる。
【発明を実施するための最良の形態】
【０００５】
本発明は、添付図面を参照しながら以下の説明を読めば、深く理解頂けるであろう。図中、同様の部分には同様の符号を付して示している。
【０００６】
本発明をより全般に亘って理解して頂くために、以下の説明では、特定の構成、パラメータなど、多くの具体的な詳細事項を記している。しかしながら、この説明は本発明の範囲を限定しようとするものではなく、代表的な実施形態をより深く説明しようとすることを目的としたものである。
【０００７】
図１に、ラインカード１００を示す。本発明のある態様によれば、ラインカード１００は、フレーマ装置のような各種周辺機器に接続することができる。而して、ラインカード１００は、回路切換信号、パケット信号のような、多様な型式の信号を送受信することができる。
【０００８】
更に、図１に示すように、ラインカード１００は、ラインインタフェース１０２、フレーマＡＳＩＣ１０４、パケットプロセッサＡＳＩＣ（ＰＰＡ）１０６、パケットメッシュＡＳＩＣ（ＰＭＡ）１０８、及びバックプレーンインタフェース１１０を含んでいる。ラインインタフェース１０２は、任意の数のフレーマ装置と接続できるようになっている。バックプレーンインタフェース１１０は、メッシュや共通バスなどの任意の数の追加ラインカードに接続できるよう構成されている。而して、信号を、ラインインタフェース１０２に接続されているフレーマ装置から受信して、バックプレーンインタフェース１１０を通して他のラインカードに送信することができる。加えて、他のラインカードからの信号を、バックプレーンインタフェース１１０を通して受信し、ラインインタフェース１０２に接続されているフレーマ装置に送ることもできる。
【０００９】
上記のように、ラインカード１００は、多様な型式の信号を受信することができる。ラインカード１００は、回路切換信号とパケット信号が混じっているような混成信号も受信することができる。而して、ラインＡＳＩＣ１０４は、パケット信号を分離し、それらを処理のためにＰＰＡに渡すよう構成されている。
【００１０】
更に、上記のように、信号を、ラインインタフェース１０２から受信し、バックプレーンインタフェース１１０から送り出すことができる。加えて、信号を、バックプレーンインタフェース１１０から受信し、ラインインタフェース１０２から送り出すこともできる。従って、図１に示す構成では、一方のＰＰＡを出口ＰＰＡとして構成し、ラインインタフェース１０２から送り出される信号を処理し、他方のＰＰＡを入口ＰＰＡとして構成し、ラインインタフェース１０２で受信される信号を処理することができる。しかしながら、１つのＰＰＡ１０６を、出口ＰＰＡと入口ＰＰＡの両方として構成することもできる。なお、ラインカード１００は、任意の数の入口及び出口ＰＰＡとして構成される任意数のＰＰＡ１０６で構成することもできる。
【００１１】
パケットは、入口ＰＰＡで処理した後、ＰＭＡ１０８によってバックプレーンインタフェース１１０で送り出すことができる。パケットは、バックプレーンインタフェース１１０で受信されると、ＰＭＡ１０８によって出口ＰＰＡ１０６に転送することができる。パケットは、次いで処理され、ラインインタフェース１０２を介して送り出される。上記のように、１つのＰＰＳ１０６を、入口ＰＰＡと出口ＰＰＡの両方として使用することができる。
【００１２】
図２は、ＰＰＡ１０６について詳細に示している。具体的には、ＰＰＡ１０６は、ＬＩＰ（ラインインタフェースプロトコル）インタフェース２０２、入力ＤＭＡ２０４、入力記述子待ち行列２０６、メモリ制御装置２０８、フリーメモリマネジャ（ＦＭＧ）２１０、メモリチャネル２１２、実行ユニット（ＥＵ）２１４、出力ＤＭＡ２１６、及びＬＩＰインタフェース２１８を含んでいる。
【００１３】
先に述べたように、ＰＰＡ１０６は、パケット信号を処理するよう構成されている。より厳密には、パケットは、先ずＬＩＰインタフェース２０２を介して受信される。入力ＤＭＡ２０４は、受信したパケットの記述子を作成するよう構成されている。記述子は、次に、入力記述子待ち行列２０６に記憶される。入力ＤＭＡ２０４は、更に、ＦＭＧ２１０からメモリ（フリーメモリ）内の利用可能空間の場所を得て、パケットをメモリに記憶する。ＥＵ２１４は、入力記述子待ち行列２０６に記憶された記述子を使って記憶されたパケットにアクセスする。次いで、取り出されたパケットは、ＥＵ２１４により、ＥＵ２１４に搭載されたソフトウェア命令に従って処理される。パケットの処理後、ＥＵ２１４は、当該パケット用の出力記述子を作成する。後に詳しく説明するが、ＥＵ２１４は、出力記述子を出力ＤＭＡ２１６の待ち行列に書き込む。パケットは、次にＬＩＰインタフェース２１８を介して送り出される。
【００１４】
上記のように、ＬＩＰインタフェース２０２はパケットを受け取る。より具体的には、本発明の或る実施形態では、ＬＩＰインタフェース２０２は、毎２００メガヘルツ約１６ビットで作動する。更に、図２では４つのＬＩＰインタフェース２０２を示しているが、ＰＰＡ１０６は、具体的用途次第でＬＩＰインタフェース２０２を幾つ含んでもよいと理解されたい。
【００１５】
これも先に述べたが、パケットはメモリに記憶される。しかしながら、各種情報（例えば、転送テーブル、ＥＵ２１４上で実行されるソウトウェアプログラムなど）もメモリに記憶できるものと理解されたい。
【００１６】
図２に示すように、本発明の或る代表的な実施形態では、ＰＰＡ１０６は４つのメモリチャネル２１２を含んでいる。各メモリチャネル２１２は、どの様な数のメモリ装置にでも接続することができ、メモリ装置は、物理的にはラインカード１００（図１）上に配置することができるが、ＰＰＡ１０６に直接にというわけではない。例えば、本実施形態では、各メモリチャネル２１２は複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）に接続される。より具体的には、これらＤＲＡＭは、１００メガヘルツＤＤＲ（ダブルデータレート）ＳＤＲＡＭ（同期化ＤＲＡＭ）を含んでいてもよい。しかしながら、異なる速度で作動する様々なメモリ装置を使用することができるものと理解されたい。
【００１７】
本実施形態では、ＰＰＡ１０６はメモリ制御装置２０８を含んでいる。メモリ制御装置２０８は、ＰＰＡ１０６内の各種ブロック（例えば、入力ＤＭＡ２０４、ＦＭＧ２１０、ＥＵ２１４、出力ＤＭＡ２１６など）と通信してメモリへのアクセスを提供するよう構成することができる。明快さを期して、図２では、メモリ制御装置２０８は、メモリチャネル２１２とは別個の１つのブロックとして示している。しかしながら、個別のメモリ制御装置２０８を各メモリチャネル２１２の専用とすることもできると理解されたい。更に、メモリ制御装置２０８は、各メモリチャネル２１２内に配置することもできると理解されたい。
【００１８】
本発明の或る態様によれば、パケットは、メモリデータユニット（ＭＤＵ）と呼ばれる２５６バイト単位でメモリに記憶される。更に、或る実施形態では、ＭＤＵの記憶用として約１２８メガバイトのメモリを割り振っているが、これは５０万ＭＤＵに相当する。しかしながら、パケットは任意の単位で記憶できるものと理解されたい。更に、どの様な量のメモリ空間をパケット記憶用に割り振ってもよいと理解されたい。
【００１９】
上記のように、入力ＤＭＡ２０４は、パケットを受信すると、そのパケットをメモリに記憶する。より具体的には、入力ＤＭＡ２０４は、パケットをメモリに記憶するためＦＭＧ２１０からフリーＭＤＵを入手する。従って、ＦＭＧ２１０は、どのＭＤＵがフリーであり、どれが使用中かを追跡し続けるよう構成されている。先に述べたように、ＭＤＵは２５６バイト長である。パケットが２５６バイトよりも長い場合、ＤＭＡ２０４は、パケットを記憶するため、適切な数の追加のＭＤＵを割り当てる。入力ＤＭＡ２０４は、次いでＭＤＵのリストを作成する。出力ＦＭＧ２１０については、２０００年１２月１８日出願の「フリーメモリマネジャスキーム及びキャッシュ」と題する米国特許出願第ＮＮ／ＮＮＮ，ＮＮＮ号に詳細に記述されており、その全体を本願に参考文献として援用する。
【００２０】
上記のように、入力ＤＭＡ２０４は、更に、各パケット毎に記述子を作成する。入力ＤＭＡ２０４は、次いでこの記述子を入力記述子待ち行列２０６に記憶する。本発明の或る実施形態では、記述子は約６４ビット（即ち８バイト）長であり、メモリ内のパケット用の第１ＭＤＵの位置やパケットの長さの様なフィールドを含んでいる。しかしながら、記述子は、どの様な長さで、どの様な数及び型式のフィールドを含んでいてもよいものと理解されたい。
【００２１】
上記のように、ＥＵ２１４は、記憶されたパケットを検索してそれを処理する。厳密には、ＥＵ２１４は、入力記述子待ち行列２０６から記述子を読み出す。ＥＵ２１４は、次いでその記述子を使ってメモリからパケットを検索する。例えば、ＥＵ２１４は、パケットを保有している第１ＭＤＵに対するポインタ用の記述子を読み出すことができる。ＥＵ２１４は、パケットのヘッダを読み出し、それを解析して、パケットを分類することができる。ＥＵ２１４は、次いで、当該パケットを送信する前にパケットの或るフィールドを変更することができる。本発明の或る実施形態では、ＥＵ２１４は、１６個の縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサを含んでいる。出力ＥＵ２１４については、２０００年１２月１８日出願の「キャッシュリクエスト再試行待ち行列」と題する米国特許第ＮＮ／ＮＮＮ，ＮＮＮ号に詳細に記述されており、その全体を本願に参考文献として援用する。しかしながら、ＥＵ２１４は、どの様な数及び型式のプロセッサを含んでいてもよいと理解されたい。更に、ＥＵ２１４は、様々な方法でパケットを処理するために、様々なソフトウェアを実行することができると理解されたい。
【００２２】
上記のように、パケットを送信するとき、ＥＵ２１４は、パケット用に作成された最初の記述子に基づいた出力記述子を作成する。この出力記述子は、出力ＤＭＡ２１６の待ち行列に書き込まれ、出力ＤＭＡ２１６は、当該パケットをＬＩＰインタフェース２１８で送り出す。
【００２３】
図３に、出力ＤＭＡ２１６を詳しく示している。以下の説明で、出力ＤＭＡ２１６は、ライン出力ブロック（ＬＯＰ）２１６と呼ばれる。出力ＤＭＡ（ＬＯＰ）２１６は、様々な用語で呼ばれるものと理解されたい。
【００２４】
本発明の或る代表的な実施形態では、ＬＯＰ２１６は待ち行列３０２、ＤＲＡＭ読み出し論理（ＤＲＬ）３０４、ローカル記憶装置（ＬＳＴ）３０６、ポートスケジューラＦＩＦＯ（ＰＳＦ）３０８、及びポート３１０を含んでいる。先に指摘したように、パケットを送信するとき、ＥＵ２１４（図２）は、パケットの出力記述子を待ち行列３０２に書き込む。ＤＲＬ３０４は、待ち行列３０２から記述子を読み出し、ダイレクトメモリ（ｄｍ）リクエストを作り、パケットをメモリチャネル２１２（図２）から取り出す。検索されたパケットは、次いでＬＳＴ３０６に記憶される。ＰＳＦ３０８は、ＬＳＴ３０６からパケットを読み出し、それをポート３１０に送る。
【００２５】
図４に示すように、本実施形態では、ＬＯＰ２１６は、３２チャンネル構成とすることができる。その場合、ＬＯＰ２１６は、各チャネルに対応する３２個の待ち行列３０２を含んでいる（即ち、待ち行列３０２−０から３０２−３１まで）。具体的には、待ち行列３０２−０から３０２−３１は、チャネル０から３１にそれぞれ対応する。しかしながら、ＬＯＰ２１６は、具体的用途次第で、どの様な数のチャネルででも構成することができるものと理解されたい。同様に、ＬＯＰ２１６は、具体的用途次第で、どの様な数の待ち行列３０２を含んでいてもよいと理解されたい。更に、様々なマッピングスキームを使用して、待ち行列３０２をＬＯＰ２１６のチャネルにマッピングできるものと理解されたい。しかも、このマッピングスキームは、ハードウェア及び／又はソフトウェアの何れによっても変更することができる。
【００２６】
図４に示すように、ＬＯＰ２１６は、４個のＤＲＬ３０４も含んでいる（ＤＲＬ３０４−０から３０４−３まで）。本実施形態では、各ＤＲＬ３０４は、８チャネルまで処理できる構成になっている。具体的には、ＤＲＬ３０４−０は、チャネル０から３、及びチャネル１６から１９を処理するよう構成されている。而して、ＤＲＬ３０４−０は、待ち行列３０２−０から３０２−３、及び待ち行列３０２−１６から３０２−１９に接続される。ＤＲＬ３０４−１は、チャネル４から７及びチャネル２０から２３を処理するよう構成されている。而して、ＤＲＬ３０４−１は、待ち行列３０２−４から３０２−７、及び待ち行列３０２−２０から３０２−２３に接続される。ＤＲＬ３０４−２は、チャネル８から１１、及びチャネル２４から２７を処理するよう構成されている。而して、ＤＲＬ３０４−２は、待ち行列３０２−８から３０２−１１、及び待ち行列３０２−２４から３０２−２７に接続される。ＤＲＬ３０４−３は、チャネル１２から１５、及びチャネル２８から３１を処理するよう構成されている。而して、ＤＲＬ３０４−３は、待ち行列３０２−１２から３０２−１５、及び待ち行列３０２−２８から３０２−３１に接続される。ＬＯＰ２１６は、どの様な数のＤＲＬ３０４を含んでいてもよい。各ＬＯＰ２１６は、どの様な数の待ち行列３０２又はチャネルを処理するように構成してもよい。更に、ＤＲＬ３０４は、様々なマッピングスキームを使って、ＬＯＰ２１６の待ち行列３０２又はチャネルにマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び／又はソフトウェアの何れによっても変更することができる。
【００２７】
図４に示すように、ＬＯＰ２１６は、８個のＬＳＴ３０６も含んでいる（即ち、ＬＳＴ３０６―０から３０６−７）。本実施形態では、各ＬＳＴ３０６は、４つまでチャネルを処理できるよう構成されている。具体的には、ＬＳＴ３０６−０は、チャネル０から３を処理するよう構成されている。而して、ＬＳＴ３０６−０は、ＤＲＬ３０４−０に接続されている。ＬＳＴ３０６−１は、チャネル４から７を処理するよう構成されている。而して、ＬＳＴ３０６−１は、ＤＲＬ３０４−１に接続されている。ＬＳＴ３０６−２は、チャネル８から１１を処理するよう構成されている。而して、ＬＳＴ３０６−２は、ＤＲＬ３０４−２に接続されている。ＬＳＴ３０６−３は、チャネル１２から１５を処理するよう構成されている。而して、ＬＳＴ３０６−３は、ＤＲＬ３０４−３に接続されている。ＬＳＴ３０６−４は、チャネル１６から１９を処理するよう構成されている。而して、ＬＳＴ３０６−４は、ＤＲＬ３０４−０に接続されている。ＬＳＴ３０６−５は、チャネル２０から２３を処理するよう構成されている。而して、ＬＳＴ３０６−５は、ＤＲＬ３０４−１に接続されている。ＬＳＴ３０６−６は、チャネル２４から２７を処理するよう構成されている。而して、ＬＳＴ３０６−６は、ＤＲＬ３０４−２に接続されている。最後に、ＬＳＴ３０６−７は、チャネル２８から３１を処理するよう構成されている。而して、ＬＳＴ３０６−７は、ＤＲＬ３０４−３に接続されている。ＬＯＰ２１６は、どの様な数のＬＳＴ３０６を含んでいてもよいと理解されたい。ＬＳＴ３０６は、どの様な数のチャネル及びＤＲＬ３０４を処理するようにでも構成できるものと理解されたい。更に、ＬＳＴ３０６は、様々なマッピングスキームを使ってＤＲＬ３０４にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び／又はソフトウェアの何れによっても変更することができる。
【００２８】
図４に示すように、ＬＯＰ２１６は、４つのＰＳＦ３０８を含んでいる（即ち、ＰＳＦ３０８−０から３０８−３まで）。本実施形態では、各ＰＳＦ３０８は、１６までチャネルを処理できるように構成することができる。しかしながら、図４に示す構成では、ＰＳＦ３０８−０及び３０８−２は、１６までチャネルを処理するよう構成されているが、ＰＳＦ３０８−１及び３０８−３は、８つまでチャネルを処理するよう構成されている。具体的には、ＰＳＦ３０８−０は、チャネル０から１５を処理するよう構成されている。而して、ＰＳＦ３０８−０は、ＬＳＰ３０６−０、３０６−１、３０６−２、及び３０６−３に接続される。ＰＳＦ３０８−１は、チャネル８から１５までを処理するよう構成されている。而して、ＰＳＧ３０８−１は、ＬＳＰ３０６−２及び３０６−３に接続される。しかしながら、ＰＳＦ３０６−１は、ＬＳＰ３０６−０及び３０６−１に接続することによってチャネル０から１５を処理するよう構成することもできると理解されたい。ＰＳＦ３０８−２は、チャネル１６から３１を処理するよう構成されている。而して、ＰＳＦ３０８−２は、ＬＳＰ３０６−４、３０６−５、３０６−６、及び３０６−７に接続される。ＰＳＦ３０８−３は、チャネル２４から３１を処理するよう構成されている。而して、ＰＳＦ３０８−３は、ＬＳＰ３０６−６及び３０６−７に接続される。しかしながら、ＰＳＦ３０６−３は、ＬＳＰ３０６−４及び３０６−５に接続することによりチャネル１６から３１を処理するよう構成することもできると理解されたい。ＬＯＰ２１６は、どの様な数のＰＳＦ３０８を含んでいてもよいと理解されたい。ＰＳＦ３０８は、どの様な数のチャネルでも処理できるように構成することができ、且つどの様な数のＬＳＴ３０６にでも接続できるように構成することができるものと理解されたい。更に、ＰＳＦ３０８は、様々なマッピングスキームを使って、ＬＳＴ３０６にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び／又はソフトウェアの何れによっても変更することができる。
【００２９】
図４に示すように、ＬＯＰ２１６は、４つのポート３１０を含んでいる（即ち、ポート３１０−０から３１０−３まで）。本実施形態では、各ポートは、１６までチャネルを処理できるように構成することができる。而して、ポート３１０−０から３１０−３は、それぞれ、ＰＳＦ３０８−０から３０８−３に接続される。しかしながら上記のように、図４に示す構成では、ＰＳＦ３０８−１と３０８−３は、１６ではなくて８つまでチャネルを処理するよう構成されている。しかしながら、上で指摘したように、ＰＳＦ３０８−１と３０８−３は、１６までチャネルを処理するよう構成することもできる。而して、ポート３１０−１と３１０−３は、１６までチャネルを処理するよう構成することができる。ＬＯＰ２１６は、どの様な数のポート３１０を含んでいてもよいと理解されたい。ポート３１０はどの様な数のチャネルでも処理できるように構成し、どの様な数のＰＳＦ３０８にでも接続できるように構成することができるものと理解されたい。更に、ポート３１０は、様々なマッピングスキームを使ってＰＳＦ３０８にマップできるものと理解されたい。その上、このマッピングスキームは、ハードウェア及び／又はソフトウェアの何れによっても変更することができる。
【００３０】
ＬＯＰ２１６には４つのポート３１０と３２個のチャネルがあると説明してきたが、全てのポート及びチャネルを使用する必要はないと理解されたい。例えば、或る用途では、ポート３１０は１つだけを使用し、チャネルは１６しか使用可能ではないと仮定する。具体的には、ポート３１０−０を使用し、チャネル０から１５が使用可能であると仮定する。上記構成では、４個のＤＲＬ３０４は、全て、４つのリクエストを同時にポート３１０−０に送信することができる。具体的には、ＤＲＬ３０４−０、３０４−１，３０４−２、及び３０４−３は、それぞれ、チャネル０から３、４から７、８から１１、１２から１５、でリクエストを送ることができる。ＤＲＬ３０４−０から３０４−３に対するチャネルの割当が順番になっている（即ち、チャネル０から７がＤＲＬ３０４−０に割り当てられ、チャネル８から１５がＤＲＬ３０４−１に割り当てられ、チャネル１６から２３がＤＲＬ３０４−２に割り当てられ、チャネル２４から３１がＤＲＬ３０４−３に割り当てられる）場合には、ＤＲＬ３０４−０と３０４−１だけが使用できることになる。
【００３１】
次に図５では、上で指摘したように、各ＤＲＬ３０４は８つまでチャネルを処理できるよう構成されている。而して、本実施形態では、各ＤＲＬ３０４は、これらチャネルの処理をスケジューリングするよう構成されたスケジューラ５０８を含んでいる。図５に示すように、各ＤＲＬ３０４は、更に、リクエストマネジャ（ＲＱＭ）５０２、ＤＲＡＭ読み出し制御器（ＤＲＣ）５０４、ＤＲＡＭ読み出しシーケンサ（ＤＲＳ）５０６、及びパーＭＤＵ（ｐＭＤＵ）５１０も含んでいる。
【００３２】
次に図６に示すように、本実施形態では、スケジューラ５０８は、先入れ先出し（ＦＩＦＯ）メモリ、シフトレジスタなどのようなシフト構造６００を含んでいてもよい。図６に示すように、シフト構造６００は、スケジューラ５０８が処理するチャネルに対応するカラム（エントリ）６０２を含んでいる。上記のように、各ＤＲＬ３０４（図５）は８つのチャネルを処理するよう構成することができる。従って、シフト構造６００は、８つのエントリ６０２を含んでいる。しかしながら、シフト構造６００は、用途次第でどの様な数のエントリ６０２を含んでいてもよいと理解されたい。
【００３３】
便宜上及び明快さを期して、以下の説明及び対応する図面では、ＤＲＬ３０４−０（図４）に関係するシフト構造６００を説明し、示している。本実施形態では、ＤＲＬ３０４−０（図４）は、チャネル０から３及びチャネル１６から１９を処理するよう構成されている。而して、シフト構造６００は、チャネル０から３及びチャネル１６から１９、それぞれに対応するエントリ６０６、６０８、６１０、６１２、６１６、６１７、６１８、及び６１９を含んでいる。しかしながら、各ＤＲＬ３０４（図４）は、各ＤＲＬ３０４（図４）が処理する該当チャネルに対応するエントリ６０２を有するシフト構造６００を含んでいるものと理解されたい。
【００３４】
図６に示すように、各エントリ６０２は、複数のフィールド６０４を含んでいる。本実施形態では、エントリ６０２は、チャネル番号フィールド６２０、優先順位フィールド６２２、イン・フライトパケットフィールド６２４、出力実行可能フィールド６２６、入力実行可能フィールド６２８、及び使用可能フィールド６３０を含んでいる。しかしながら、エントリ６０２は、具体的用途次第で、どの様な数のフィールド６０４を含んでいてもよいと理解されたい。
【００３５】
チャネル番号フィールド６２０は、パケットが送信されるチャネル番号を表示すように構成することができる。先に指摘したように、ソフトウェアは、この情報を提供することができる。本実施形態では、ＤＲＬ３４０−０（図４）は、チャネル０から３及びチャネル１６から１９を処理するよう構成されている。而して、シフト構造６００は、チャネル番号０から３及びチャネル番号１６から１９を備えたチャネル番号フィールド６２０を有するエントリ６０２を含んでいる。
【００３６】
使用可能フィールド６３０は、あるチャンルが使用可能であるか否かを表示するように構成することができる。上で指摘したように、シフト構造６００は、チャネル０から３及びチャネル１から１９を処理するよう構成されている。具体的用途次第で、どれだけの数のチャネルを使用可能に又は使用不能にしてもよい。例えば、チャネル０、２、１７だけを使用すると仮定しよう。そうすると、使用可能フィールド６３０は、チャネル０、２、１７に対するエントリ６０６、６１０、６１７が使用可能となる。使用可能フィールド６３０は、チャネル１、３、１６、１８、１９に対するエントリ６０８、６１２、６１６、６１８、６１９が使用不能となる。使用可能フィールド６３０は、ＰＰＡ１０６（図１）の初期構成時にセットすることができる。しかしながら、使用可能フィールド６３０は、都合の良い何れの時期にでもセットできるものと理解されたい。
【００３７】
本実施形態では、出力実行可能フィールド６２６は、ＬＳＴ（図５）がデータ受信の準備を整えていることを表示するように構成することができる。図４に関し先に述べたように、各ＤＲＬ３０４は数多くのＬＳＴ３０６に接続されている。更に、ＬＳＴ３０６−０は、チャネル０から３のデータを記憶するよう構成されている。ＬＳＴ３０６−４は、チャネル１６−１９のデータを記憶するよう構成されている。従って、図６に示すように、エントリ６０２がチャネル１７を処理するように構成されていれば、そのエントリの出力実行可能フィールド６２６は、ＬＳＴ３０６−４（図４）の状態を表示する。
【００３８】
出力実行可能フィールド６２８は、ＲＱＭ５０２（図５）の読み出す記述子が待ち行列３０２（図５）内に在ることを表示するように構成することができる。上記のように、パケットを送信するときには、ソフトウェアは、そのパケットの記述子を待ち行列３０２に書き込む。本実施形態では、待ち行列３０２（図５）は、次いで、該当する入力実行可能フィールド６２８をスケジューラ５０８（図５）にセットする。例えば、或るパケットをチャネル１７で送り出すと仮定する。先に説明したように、本実施形態では、このパケットの記述子は、チャネル１７に割り当てられた待ち行列３０２に書き込まれる。本事例では、記述子は、待ち行列３９２−１７（図５）に書き込まれる。スケジューラ５０８内のエントリ６０２の該当する入力実行可能フィールド６２８が、ここで、チャネル１７用としてセットされることになる。本事例では、エントリ６１７の入力実行可能フィールド６２８がセットされることになる。
【００３９】
イン・フライトパケットフィールド６２４は、或るパケットがイン・フライトであるか否かを表示するように構成することができる。パケットは、メモリから読み出し中、バスへの送信中など処理の途上にある場合にはイン・フライトであると見なされる。
【００４０】
優先順位フィールド６２２は、チャネルの優先順位を表示するように構成することができる。或る構成では、スケジューラ５０８は、６ビットの優先順位フィールド６２２を備えて構成することができる。従って、６４までの異なる優先順位を指定することができる。後に更に詳しく説明するが、優先順位の高いエントリ６０２は、優先順位の低いエントリ６０２よりも先に処理される。本発明の或る実施形態では、優先順位フィールド６２２は、ＰＰＡ１０６（図1）の初期構成時にセットされる。しかしながら、優先順位フィールド６２２は、都合の良いとき何時でもセットできるものと理解されたい。
【００４１】
スケジューラ５０８は、エントリ６０２をソートするよう構成された比較論理回路６４０を含んでいる。本実施形態では、フィールド６０４に基づいてエントリ６０２毎に重みが決められる。具体的には、エントリ６０２の重みは１０ビット数である。これら１０ビットの内の最上位のビットは、使用可能フィールド６３０に割り当てられる。第２位のビットは、出力実行可能フィールド６２６に割り当てられる。第３位のビットは、入力実行可能フィールド６２８に割り当てられる。第４位のビットは、イン・フライトフィールド６２４に割り当てられる。残りの６ビットは、優先順位フィールド６２２に割り当てられる。
【００４２】
而して、本実施形態では、イン・フライトフィールド６２４を持つ、即ちパケットがイン・フライトであるエントリ６０２は、各優先順位に関わらず、イン・フライトフィールド６２４が使用不能であるエントリ６０２より先にソートされる。入力実行可能フィールド６２８が使用可能であるエントリ６０２は、イン・フライトフィールド６２４及び各優先順位に関わらず、入力実行可能フィールド６２８が使用不能であるエントリ６０２より先にソートされる。出力実行可能フィールド６２６が実行可能であるエントリ６０２は、入力実行可能フィールド６２８、イン・フライトフィールド６２４、及び各優先順位に関わらず、出力実行可能フィールド６２６が使用不能であるエントリよりも先にソートされる。使用可能フィールド６３０が使用可能であるエントリ６０２は、出力実行可能フィールド６２６、入力実行可能フィールド６２８、イン・フライトフィールド６２４、及び各優先順位に関わらず、使用可能フィールド６３０が使用不能であるエントリ６０２より先にソートされる。
【００４３】
このようにして、エントリ６０２は、２つのエントリ６０２を各重みを比較することによりソートできるという、単層比較を使ってソートすることができる。対照的に、２つのエントリを、各フィールド６０４を比較することによりソートする場合は、５層比較又はそれ以上の比較が必要となる。しかしながら、エントリ６０２は、様々な比較スキームを使ってソートできるものと理解されたい。例えば、エントリ６０２は、各重み及び任意の数の各フィールド６０４を比較することによりソートできる。更に、エントリ６０２の重みを求める際には、各フィールド６０４の全てではなく一部を使用してもよい。
【００４４】
図６において、カラム６０６が占めている位置がシフト構造６００の先頭であり、カラム６１９が占めている位置がシフト構造６００の末尾であると仮定する。ここで、エントリ６１７は、入力実行可能フィールド６２８が使用可能となっている唯一のエントリ６０２であると仮定する。そうすると、図７に示すように、比較論理回路６４０は、エントリ６１７をシフト構造６００の先頭にシフトする。図７では、使用可能状態の入力実行可能フィールド６２８は「１」で表示され、一方、使用不能状態の入力実行可能フィールド６２８は「０」で表示されている。しかしながら、どの様な種類の表示を使用してもよいと理解されたい。
【００４５】
本実施形態では、ＤＲＣ５０４（図５）は、シフト構造６００の先頭から読み出すように構成することができる。而して、本例では、ＤＲＣ５０４（図５）は、エントリ６１７を読み出す。上記のように、エントリ６１７は、チャネル１７を表示するチャネル番号フィールド６２０を含んでいる。而して、図５に示すように、ＤＲＣ５０４は、ＲＱＭ５０２に、シフト構造６００の先頭のエントリのチャネル番号フィールド６２０（図７）により表示されているチャネル番号に関係付けられた待ち行列３０２から読み出すように命令する。この事例では、ＤＲＣ５０４は、ＲＱＭ５０２に、待ち行列３０２−１７を読むように命令する。
【００４６】
記述子に含まれている情報に基づいて、ＤＲＣ５０４は、次いでダイレクトエントリ（ｄｍ）リクエストを発行し、その記述子に関係付けられているパケットを検索する。具体的には、記述子はパケットが記憶されているメモリ場所を含んでいてもよい。ＤＲＣ５０４は、次に、そのアドレスを使って、メモリ制御装置２０８（図２）にｄｍリクエストを発行する。検索されたパケット又はパケットの一部は、次に、ＬＳＴ３０６に書き込まれる。本例では、検索されたパケット又はパケットの一部は、ＬＳＴ３０６−４（図４）に書き込まれる。
【００４７】
先に指摘したように、本発明の或る実施形態では、パケットは、ＭＤＵと呼ばれる３２バイト単位で処理される。而して、ＤＲＣ５０４は、パケットが３２バイト長を超えているか否かを判定するように構成されている。例えば、待ち行列３０２から検索された記述子は、パケットの長さを含んでいてもよい。ＤＲＣ５０４は、この情報を調べてパケットが３２バイト長を超えているか否かを判定することができる。
【００４８】
本例では、パケットは、長さが３２バイト以下であると仮定する。すると、ＤＲＣ３０４は、エントリ６１７（図７）を、入力実行可能フィールド６２８（図７）に使用不能と書き込んでスケジューラ５０８に戻す。そうすると、図８に示すように、全てのエントリ６０２で入力実行可能フィールド６２８が使用不能となるので、エントリ６１７は、シフト構造６００の末尾に書き込まれる。図５に戻って、ＤＲＣ５０４は、パケットの記述子を保有している待ち行列３０２−１７を削除する。
【００４９】
ここで、本例では、パケット長さが３２バイトよりも長いと仮定する。すると、図９Ａ及び図９Ｂに示すように、ＤＲＣ（図５）は、エントリ６１７に、入力実行可能フィールド６２８に使用可能と書き込んでシフト構造６００に戻す。本実施形態のある構成では、図９Ａに示すように、エントリ６１７は、シフト構造の末尾に書き込むことができる。他のエントリ６０２の全てで入力実行可能フィールド６２８が使用不能となっているので、比較論理回路６４０（図６）は、脈動を起こしてエントリ６１７をシフト構造６００の先頭に戻す。しかしながら、これは時間を消費しクロックサイクルを浪費することになりかねない。而して、図９Ｂに示すように、別の構成では、比較論理回路６４０（図６）は、書き込んでシフト構造６００に戻されようとしているエントリを、現在シフト構造６００にあるエントリと比較するように構成されている。従って、この例では、エントリ６１７は、シフト構造６００の先頭に書き戻され、残りのエントリ６０６、６０８、６１０、６１２、６１６、６１８、６１９は後ろにシフトされる。
【００５０】
他にも入力実行可能フィールド６２８の使用可能なエントリ６０２がある場合、エントリ６１７は、それら他のエントリ６０２の後に書き込んで戻される。例えば、図１０のように、エントリ６１７が書き戻されるときに、エントリ６０６と６０８は入力実行可能フィールド６２８が使用可能であると仮定しよう。而して、エントリ６１７はエントリ６０６と６０８の後ろに書き戻される。繰り返すが、或る実施形態では、エントリ６１７をシフト構造６００の末尾に書き込み、比較論理回路６４０が脈動を起こしてエントリ６１７をエントリ６０８の後ろに戻す。或いは、別の実施形態では、エントリ６１０、６１２、６１６、６１８、６１９を後ろにシフトして、エントリ６１７をエントリ６０８の後ろに書き込む。
【００５１】
図５に戻るが、パケット長さが３２バイトよりも長いときには、ＤＲＣ５０４は、待ち行列３０２から読み出されたパケットの記述子をＭＤＵ５１０に書き込む。具体的には、ＤＲＣ５０４は、パケットの長さなどのパケットの残りの部分の処理に関する記述子の部分を書き込む。更に、データをＬＳＴ３０６に書き込む際、データは、毎３２バイト単位の後に入力された実行可能ビットと共に書き込まれる。
【００５２】
ここで、ＰＰＡ１０６（図１）が初期化されたときに、チャネル０、１、１７は使用可能であったと仮定する。更に、チャネル０、１、１７には、それぞれ、優先順位２０、１０、２０が割り当てられていると仮定する。従って、図１１に示すように、チャネル０、１、１７に関係付けられているエントリ６０６、６０８、６１７の使用可能フィールド６３０は使用可能となる。本事例では、使用可能状態の使用可能フィールド６３０は「１」で表示され、使用不能状態の使用可能フィールド６３０は「０」で表示される。しかしながら、様々な表示を使用できるものと理解されたい。更に図１１に示すように、エントリ６０６、６０８、６１７の優先順位フィールド６２２は、それぞれ、優先順位２０、１０、２０にセットされている。しかしながら、どの様な優先順位表示を利用することもできるものと理解されたい。
【００５３】
上記のように、使用可能フィールド６３０が使用可能なエントリ６０２は、使用可能フィールド６３０が使用不能なエントリ６０２より先にソートされる。更に、優先順位が高いエントリ６０２は、優先順位が低いエントリ６０２より先にソートされる。従って、図１２に示すように、エントリ６０６は、シフト構造６００の先頭にシフトされ、後にエントリ６１７が続き、その後にエントリ６０８が続く。本事例では、大きい数（即ち２０）は、優先順位が高いものと仮定している。しかしながら、様々な優先順位スキームを使用できるものと理解されたい。
【００５４】
ここで、パケットは、チャネル０及び１を通して送られるものと仮定する。図５に示すように、ソフトウェアは、記述子を待ち行列３０２−０及び３０２−１に書き込む。図１３で、ソフトウェアは、更に、エントリ６０６及び６０８の入力実行可能フィールド６２８を使用可能にする。図１３に示すように、シフト構造６００は、エントリ６０６が先頭に留まり、次に６０８が来て、その後にエントリ６１７が来るようにソートされる。エントリ６１７は、エントリ６０８より優先順位が高いが、エントリ６０８は実行可能エントリ６２８が使用可能なので、エントリ６０８がエントリ６１７より前にシフトされる。
【００５５】
図５において、ＤＲＣ５０４は、エントリ６０６（図１３）を読み出し、ＲＱＭ５０２に待ち行列３０２−０の記述子を読み出すよう命令する。ＤＲＣ５０４は、次いで、メモリからパケットを検索するようｄｍリクエストを発行する。更に、ＤＲＳ５０６は、メモリ内のアドエスを求めて、待ち行列３０２から読み出した記述子に基づいてアクセスするよう構成することができる。
【００５６】
図１３において、パケット長さが３２バイトよりも短ければ、ＤＲＣ５０４は、エントリ６０６を、入力実行可能フィールド６２８が使用不能と書き込んで戻す。すると、エントリ６０６は、エントリ６１９の後ろに書き戻され、従って、エントリ６０８が処理される。しかしながら、パケット長さが３２バイトよりも長ければ、ＤＲＣ５０４（図５）は、エントリ６０６を、入力実行可能フィールド６２８が使用可能と書き込んで戻す。本事例では、エントリ６０６は、エントリ６０８よりも優先順位が高いため、シフト構造６００の先頭に書き戻される。このようにして、優先順位が高いチャネルは優先順位が低いチャネルを押しやることになる。
【００５７】
図１４において、パケットは、チャネル０及び１７を通しで送信されると仮定する。而して、エントリ６０６と６１７の入力実行可能フィールド６２８は使用可能である。従って、エントリ６０６がシフト構造６００の先頭にシフトされ、この後にエントリ６１７が続く。ここで、チャネル０に向け処理されるパケットは長さが３２バイトよりも長いと仮定する。すると、エントリ６０６は、入力実行可能フィールド６２８に使用可能と書き込まれてシフト構造６００に戻される。結果的に、エントリ６０６は、優先順位が同等であるのでエントリ６１７の後に書き込まれる。このようにして、優先順位レベルが同じチャネルはラウンドロビン方式を使ってソートされる。
【００５８】
図５に戻るが、先に述べたように、ＰＳＦ３０８は、ＬＳＴ３０６からデータ（即ち、パケット又はパケットの一部）を取り出して、それをポート３１０（図４）で送り出すよう構成されている。図４において、これも上に述べたように、各ＰＳＦ３０８は、１６チャネルまで処理するよう構成されている。而して、図５に示すように、ＰＳＦ３０８は、これらのチャネルの処理をスケジューリングするよう構成されたスケジューラ５１６を含んでいる。図５に示すように、ＰＳＦ３０８は、ＲＡＭ読み出しシーケンサ（ＲＲＳ）５１８、出力データ制御装置（ＯＤＣ）５２６、出力データＲＡＭ（ＯＤＲ）５２８、ＡＣＫ（確認応答）制御モジュール（ＡＣＭ）５２２、及びＡＣＫ  ＲＡＭモジュール（ＡＲＭ）５２４も含んでいる。
【００５９】
スケジューラ５１６は、スケジューラ５０８と同様に作動する。しかしながら、ＰＳＦ３０８は１６個までチャネルを処理するよう構成されているので、スケジューラ５１６も、１６個までチャネルを処理するよう構成されている。而して、図１５に示すように、スケジューラ５１６は、１６個のエントリ１５０２を有するシフト構造１５００を含んでいる。シフト構造１５００は、チャネル番号フィールド、優先順位フィールド、イン・フライトパケットフィールド、出力実行可能フィールド、入力実行可能フィールド、及び使用可能フィールドのような、シフト構造６００（図６）のフィールド６０４と同様の様々なフィールド１５０４を含んでいる。
【００６０】
図５に戻るが、上記のように、メモリからのデータは、３２バイト単位でＬＳＴ３０６に記憶される。具体的には、パケット又はパケットの一部がメモリから検索され、エントリとしてＬＳＴ３０６に記憶され、有効ビットがセットされる。エントリがＬＳＴ３０６から読み出されると、有効ビットはリセットされる。本実施形態では、ＬＳＴ３０６は、検索されたパケットを記憶するよう構成されたＲＡＭ５１２を含んでいる。ＬＳＴ３０６は、エントリが書き込まれＬＳＴ３０６から読み出される度に、ＲＡＭ５１２の有効ビットをセット及びリセットするよう構成されているパケットデータＲＡＭ制御（ＰＤＣ）５１４も含んでいる。
【００６１】
同時に、有効ビットがＬＳＴ３０６にセットされ、スケジューラ５１６の入力実行可能フィールドもセットされる。本実施形態では、ＲＲＳ５１８は、スケジューラ５１６からエントリを読み出すよう構成されている。ＯＤＣ５２６は、次いで、スケジューラ５１６から読み出されたエントリに基づいてＬＳＴ３０６から読み出しを行なう。例えば、チャネル０の使用可能フィールドがスケジューラ５１６で使用可能であると仮定する。シフト構造１５００（図１５）内で使用可能なエントリはこれ１つであると仮定する。すると、ＲＲＳ５１８はこのエントリを読み出し、次いでＯＤＣ５２６は、エントリ内のチャネル番号フィールドのチャネル番号に関係付けられたＬＳＴ３０６にアクセスする。本例では、ＯＤＣ５２６がＬＳＴ３０６−０（図４）からデータを読み出す。
【００６２】
ＬＳＴ３０６からデータを読み出した後、ＯＤＣ５２６は、ＯＤＲ５２８に書込みを行なう。或る実施形態では、ＯＤＲ５２８は、ＦＩＦＯ  ＲＡＭとして構成されている。更に、ＯＤＲ５２８は、ＤＭＡ２１６（図２）の作動クロックとＬＩＰ２１８（図２）のクロックの間の非同期ＦＩＦＯとして作動するよう構成されている。図５に示す論理の全ては、コアクロックで作動し、ＬＩＰ２１８（図２）は別のクロックで作動する。而して、ＯＤＲ５２８は、これら２つのクロックにまたがるデータの転送を容易にする。
【００６３】
図１５に戻るが、シフト構造１５００では、出力実行可能フィールドは、ＡＣＫフィールド１５２０として構成されている。本発明の或る態様によれば、ＡＣＫフィールド１５２０は、ポート３１０（図４）はパケットを送信する準備が整っているか否かを表示するよう構成されている。具体的には、図５において、ＡＲＭ５２４は、クレジット値を備えて構成することができる。このクレジット値は、ポート３１０（図４）を通してパケットを受信することになるポート３１０（図４）に接続されているデバイス上のバッファの数に等しくセットすることができる。本実施形態では、このクレジット値は３２にセットされている。しかしながら、クレジット値は何れの所望の数に等しくセットしてもよいと理解されたい。
【００６４】
パケットがポート３１０（図４）上のチャネルで送り出される場合、ＡＣＭ５２２は、ＡＲＭ５２４のクレジット値を減分する。パケットを受信するデバイスから確認応答を受け取ると、ＡＣＭ５２２は、ＡＲＭ５２４内のクレジット値を増分する。チャネル用のクレジット値が非ゼロであれば、ＡＣＭ５２２は、ＡＣＫフィールド１５２０（図１５）を使用可能にする。チャネル用のクレジット値がゼロであれば、ＡＣＭ５２２は、ＡＣＫフィールド１５２０（図１５）を使用不能にする。例えば、ＡＣＭ５２２は、ＡＣＫフィールド１５２０（図１５）を、「１」にセットして使用可能状態にし、「０」にセットして使用不能とすることができる。しかしながら、様々な値を使用できるものと理解されたい。本実施形態では、ＡＣＫフィールド１５２０（図１５）が使用可能なエントリ１５０２（図１５）は、ＡＣＫフィールド１５２０（図１５）が使用不能なエントリより先にソートされる。
【００６５】
図２に戻るが、上記のように、フレーマ装置は、ＬＩＰインタフェース２０２の他端に接続することができる。本発明の或る用途では、フレーマ装置は、同期光学ネットワーク（ＳＯＮＥＴ）接続部を介してＬＩＰインタフェース２０２に接続されている。このフレーマ装置は、光学キャリア（ＯＣ）数４８（即ち、毎秒２．４８８ギガビット）までの速度で作動するように設計されていると仮定する。これは、ＯＣ４８における１つの論理チャネル、又はその合計データ転送速度がＯＣ４８以下である多数の論理チャネルであってもよい。例えば、フレーマは、合計がＯＣ４８になるような、ＣＯ１２（即ち、毎秒６２２．０８メガバイト）で作動する２つのチャネルと、ＣＯ３（即ち、毎秒１５５．５２メガバイト）で作動する８つのチャネルで構成されていると仮定する。フレーマ装置は、これらチャネルそれぞれに関係付けられた幾つかのバッファリングも有している。このバッファリングは、当該チャネル用にパケットデータを保持するために使用される。
【００６６】
この用途では、図５において、スケジューラ５０８と５１６は、フレーマ装置上のチャネルのＯＣレートに対応する優先順位フィールド６２２（図６）で構成されているものと仮定する。本例では、チャネル４及び５は、１２の優先順位を割り当てられ、チャネル０から３及び６から９は、３の優先順位を割り当てられていると仮定している。
【００６７】
更に、ソフトウェアは、これら全てのチャネルで送信されるパケットを有し、対応する記述子を待ち行列３０２（図４）に書き込んだと仮定する。初期には、優先順位が高い（即ち、１２）２つのエントリが順に処理され、優先順位の低いチャネルが押しやられることになる。先に説明したように、ＬＩＰインタフェース２０２（図２）と２１８（図２）は、毎２００メガヘルツ（ＭＨｚ）約１６ビットで作動することができる。オーバーヘッドがあればこれを取り除いた後で、このレートは依然としてＯＣ４８を超えている。而して、優先順位が高いチャネル（即ち、チャネル４及び５）のデータは、これら２つのチャネル用のフレーマ装置のバッファが一杯となるまで、ＯＣ−４８のレートより速いレートで送信されることになる。その時点で、スケジューラ５１６内のこれら２つのエントリ用の実行可能ビットは、（フレーマ装置はもはや実行可能ではないので）使用不能とされることになる。次いで、優先順位の低いエントリの処理が開始されることになる。時間経過と共に、フレーマ装置は、２つのＯＣ−１２チャネル（即ち、チャネル４及び５）用の、バッファの一部をフリーにする。次いで、対応する入力実行可能フィールドがセットされ、スケジューラ５１６（図１８）は、これらチャネルの処理を再開する。このように、優先順位フィールド６２２（図６）を使用して、ラインの帯域幅を速度が異なる多数の論理チャネルに分割することができる。
【００６８】
以上、本発明を、添付図面に示す具体的実施形態に関連付けて説明してきたが、本発明の精神及び範囲を逸脱することなく様々な変更を加えることができる。従って、本発明は図面及び上記説明に示す特定の形態に制限されるものではないと解釈すべきである。
【図面の簡単な説明】
【００６９】
【図１】ラインカードのブロック図である。
【図２】パケット処理ＡＳＩＣ（ＰＰＡ）のブロック図である。
【図３】出力ＤＭＡのブロック図である。
【図４】図３に示す出力ＤＭＡの別のブロック図である。
【図５】図３に示す出力ＤＭＡの又別のブロック図である。
【図６】本発明のある実施形態によるスケジューラの線図である。
【図７】図６に示すスケジューラの別の線図である。
【図８】図６に示すスケジューラの又別の線図である。
【図９Ａ】図６に示すスケジューラの又別の線図である。
【図９Ｂ】図６に示すスケジューラの又別の線図である。
【図１０】図６に示すスケジューラの又別の線図である。
【図１１】図６に示すスケジューラの又別の線図である。
【図１２】図６に示すスケジューラの又別の線図である。
【図１３】図６に示すスケジューラの又別の線図である。
【図１４】図６に示すスケジューラの又別の線図である。
【図１５】本発明のある実施形態による別のスケジューラの線図である。
【国際公開パンフレット】
2004527024.tif 000003
2004527024.tif 000004
2004527024.tif 000005
2004527024.tif 000006
2004527024.tif 000007
2004527024.tif 000008
2004527024.tif 000009
2004527024.tif 000010
2004527024.tif 000011
2004527024.tif 000012
2004527024.tif 000013
2004527024.tif 000014
2004527024.tif 000015
2004527024.tif 000016
2004527024.tif 000017
2004527024.tif 000018
2004527024.tif 000019
2004527024.tif 000020
2004527024.tif 000021
2004527024.tif 000022
2004527024.tif 000023
2004527024.tif 000024
2004527024.tif 000025
2004527024.tif 000026
2004527024.tif 000027
2004527024.tif 000028
2004527024.tif 000029
2004527024.tif 000030
2004527024.tif 000031
2004527024.tif 000032
2004527024.tif 000033
2004527024.tif 000034
2004527024.tif 000035
2004527024.tif 000036
2004527024.tif 000037
2004527024.tif 000038
2004527024.tif 000039
2004527024.tif 000040
2004527024.tif 000041
2004527024.tif 000042
2004527024.tif 000043
2004527024.tif 000044
2004527024.tif 000045
2004527024.tif 000046
2004527024.tif 000047
2004527024.tif 000048
【国際公開パンフレット（コレクトバージョン）】
2004527024.tif 000049
2004527024.tif 000050
【国際調査報告】
2004527024.tif 000051