説明

ソート装置及び方法

ユニットを所定の順序に従ってユニット記憶構造にソートするためのソート装置及び方法であり、ソート装置が、ユニット記憶構造内のユニットのレコードを含むユニットサーチ構造と、ユニット記憶構造内のユニットの位置ポインタを含むユニット位置ポインタ構造とを備え、ソート装置が、ソートされるユニットを受信し、ユニットサーチ構造が、ソートされるユニットを読み出し、ユニット記憶構造内のユニットのそのレコードを使用して、ソートされるユニットに最も近く一致するユニットをサーチし、ユニット位置ポインタ構造にアクセスし、最も近く一致するユニットの位置ポインタを取り出し、ソート装置が、最も近く一致するユニットの位置ポインタを使用して、ユニット記憶構造にアクセスし、ユニット記憶構造にソートされるユニットを、所定の順序による適切な位置に置く。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソート装置及び方法に関し、詳細には、限定的ではないが、通信ネットワーク内でパケットのタグをソートするためのソート装置及び方法に関する。
【背景技術】
【0002】
個々のユニットをある順序、たとえば昇順又は降順にソートすることが望ましい多くの適用例がある。こうした適用例は、パケット交換通信網である。パケット交換通信網は、ネットワークを介して伝播されるデータをパケットに分割することによって動作する。それらのパケットは、ネットワークを介して別々に伝播される。ルータなどのネットワークのノード上では、ノードの多くの異なる入力からのパケットをノードの単一の出力に伝播する必要があることは、よくあることである。これは、パケットキューイング、及びパケット伝播競合をもたらし、それによって、パケットの処理(service)のスケジューリング、たとえばパケットを処理する順序の決定が必要になる。従来、これは、各パケットにタグを割り当て、タグ、したがってパケットの処理がスケジューリングされるべき順序を決定することによって達成される。たとえば、多くの場合、タグを昇順に処理すると決定される。次いで、より高いスケジューリング優先度を有するパケットにはより低いタグ値が割り当てられ、より低いスケジューリング優先度を有するパケットにはより高いタグ値が割り当てられるように、スケジューリングポリシーを使用してタグの値が計算される。
【発明の開示】
【発明が解決しようとする課題】
【0003】
タグを昇順に処理するには、最低の値を有するタグのサーチの繰返し、又はタグを昇順にソートし、順序の先頭のタグの読出しを繰り返すことを必要とする。それぞれの技術の様々な方法が使用されてきた。しかし、特に、通信ネットワークの使用及び所望の速度は増加し続けており、パケットスケジューリングがこれまで以上に重要になるので、ソート技術の向上が望ましい。
【課題を解決するための手段】
【0004】
本発明の第1の態様によれば、ユニットを所定の順序に従ってユニット記憶構造にソートするためのソート装置が提供され、ユニット記憶構造内のユニットのレコードを含むユニットサーチ構造と、ユニット記憶構造内のユニットの位置ポインタを含むユニット位置ポインタ構造とを備え、ソート装置が、ソートされるユニットを受信し、ユニットサーチ構造が、ソートされるユニットを読み出し、ユニット記憶構造内のユニットのそのレコードを使用して、ソートされるユニットに最も近く一致するユニットをサーチし、ユニット位置ポインタ構造にアクセスし、最も近く一致するユニットの位置ポインタを取り出し、ソート装置が、最も近く一致するユニットの位置ポインタを使用して、ユニット記憶構造にアクセスし、ユニット記憶構造にソートされるユニットを所定の順序による適切な位置に置く。
【0005】
ユニット位置ポインタ構造の使用は、ユニットサーチ構造が、ユニット記憶構造に直接アクセスする必要がないことを意味する。サーチ構造と記憶構造は、互いに分離される。これによって、ソート装置のためにより柔軟な設計を採用することが可能になる。さらに、ソート装置にこの構成を使用すると、この装置のソート機能を、ユニット記憶構造からのユニットの取出しとは別々に実施することが可能となる。これによって、ユニットの取出しを依然として可能にしながら、記憶構造の容量が柔軟なままであることが可能となる。
【0006】
ユニットサーチ構造は、ツリーサーチ構造を備えてもよい。ツリーサーチ構造は、マルチビットツリーサーチ構造を備えてもよい。マルチビットツリーサーチ構造を使用すると、ツリー構造の圧縮が可能となり、サーチ構造の速度が増す。ツリーサーチ構造は、複数のサーチレベルを備えてもよい。ツリーサーチ構造は、少なくとも1つのノードを備える第1のサーチレベルを具備してもよい。ツリーサーチ構造は、前のサーチレベルのノードにリンクされた1つ又は複数のノードをそれぞれが含む、1つ又は複数のさらなるサーチレベルを備えてもよい。ノードの少なくとも一部は、ユニット記憶構造内のユニットのレコードを含んでもよい。ノードはそれぞれ、1つ又は複数のビットを備えてもよい。ノードのビットの少なくとも一部は、ユニット記憶構造内のユニットのレコードを含んでもよい。
【0007】
ツリーサーチ構造は、ソートされるユニットの少なくとも1つのセグメントを、1つ又は複数のサーチレベルの少なくとも1つのノードと比較して、そのセグメント又は各セグメントに最も近い一致を見つけ、したがって、ソートされるユニットに最も近く一致するユニットを見つけることによって、最も近く一致するユニットをサーチしてもよい。たとえば、ツリーサーチ構造は、ソートされるユニットの第1のセグメントを、ツリーサーチ構造の第1のサーチレベルのノードと比較して、第1のセグメントに最も近い一致、及び第1のサーチレベルのノードがリンクされているツリーサーチ構造の第2のサーチレベル内のノードを見つけ、ソートされるユニットの第2のセグメントを、第2のサーチレベルのノードと比較して、第2のセグメントに最も近い一致、及び第2のサーチレベルのノードがリンクされているツリーサーチ構造の第3のサーチレベル内のノードを見つけ、ソートされるユニットの第3のセグメントを、第3のサーチレベルのノードと比較して、第3のセグメントに最も近い一致、したがって、ソートされるユニットに最も近いユニットを見つけることによって、最も近く一致するユニットをサーチしてもよい。
【0008】
ツリーサーチ構造は、ユニット記憶構造内のユニットのそのレコードを更新してもよい。これは、ユニットがソートされた後に実施されてもよい。これは、ユニットがソートされる間に実施されてもよい。
【0009】
ユニット位置ポインタ構造は、ソート装置によってユニット記憶構造にソートされ得る各ユニットの位置ポインタの位置を備えてもよい。位置は、ユニットがソート装置によってユニット記憶構造にソートされている場合、そのユニットの位置ポインタを含んでもよい。ソート装置は、ユニットがソートされた後、ユニットの位置ポインタを、ユニット位置ポインタ構造内に置いてもよい。ユニット位置ポインタ構造は、ルックアップテーブルを備えてもよい。ユニット位置ポインタ構造は、ユニットサーチ構造にリンクされてもよい。ユニット位置ポインタ構造は、それがユニットサーチ構造のツリーサーチ構造の最下位レベルを有効に備えるように、ユニットサーチ構造にリンクされてもよい。
【0010】
ソート装置は、ユニットを所定の順序にソートするために、ユニットソートポリシーを操作してもよい。順序は、ユニット値の昇順であってもよい。順序は、ユニット値の降順であってもよい。
【0011】
ソート装置は、ユニットサーチ構造及びユニット位置ポインタ構造のための分散メモリアーキテクチュアを含んでもよい。具体的には、ユニットサーチ構造及びユニット位置ポインタ構造のツリーサーチ構造の各サーチレベルは、それぞれ独立にアクセス可能なメモリアーキテクチュアを備えてもよい。メモリアーキテクチュアは、互いに独立に書き込まれ、又は読み出され得る。これによって、ソート装置のための並列パイプライン構造が提供される。これは、ユニットサーチ構造のサーチ、及びソート装置のソートの速度を増加させる。ソート装置は、クロックのサイクルに従って動作してもよい。メモリアーキテクチュアは、各クロックサイクル内に一度だけアクセス可能であってもよい。ユニットサーチ構造及びユニット位置ポインタ構造のツリーサーチ構造のサーチレベルについてそれぞれ独立にアクセス可能なメモリアーキテクチュアを使用すると、ソート装置が各クロックサイクル内で、最も近く一致するユニットの位置ポインタを取り出すことが可能となる。ユニットサーチ構造及びユニット位置ポインタ構造のツリーサーチ構造のサーチレベルについてそれぞれ独立にアクセス可能なメモリアーキテクチュアを使用すると、ソート装置が各クロックサイクル内でユニットをソートすることが可能となる。これは、ユニット記憶構造内にユニットを置くことが1クロックサイクル内で実施される場合に当てはまる。
【0012】
特に、ユニットサーチ構造及びユニット位置ポインタ構造のツリーサーチ構造の各サーチレベルについてそれぞれ独立にアクセス可能な4つのメモリアーキテクチュアを備えた、ユニットサーチ構造及びユニット位置ポインタ構造用の分散型のメモリアーキテクチュアを使用すると、ソート装置のスループット速度は増加するが、装置の複雑さ及びコストも増加する。ユニットサーチ構造及びユニット位置ポインタ構造用に他の数のメモリアーキテクチュアが使用され得ることが理解されよう。たとえば、1つのメモリアーキテクチュアだけが、ユニットサーチ構造及びユニット位置ポインタ構造用に使用されてもよく、或いは2つ又は3つのメモリアーキテクチュアが、ユニットサーチ構造及びユニット位置ポインタ構造用に使用されてもよい。使用するメモリアーキテクチュアの数を選択する際には、ソート装置の速度とソート装置のコストの間のトレードオフが行われなければならない。
【0013】
ソート装置は、ハードウェアベースであってもよい。ソート装置は、システムオンチップ(SoC:system on chip)技術を使用した実装によるハードウェアベースのものであってもよい。ソート装置は、ユニットサーチ構造及びユニット位置ポインタ構造用のSoCメモリアーキテクチュアを備えてもよい。ユニットサーチ構造のSoCメモリアーキテクチュアは、RAMメモリのブロックを備えてもよい。ユニットサーチ構造がツリーサーチ構造を含む場合、ツリーサーチ構造の第1のサーチレベル及び第2のサーチレベルは、複数のレジスタを備えてもよく、ツリーサーチ構造のさらなるサーチレベルはそれぞれ、RAMメモリのブロックを備えてもよい。
【0014】
ユニット記憶構造は、ソート装置とは別々に提供されてもよい。或いは、ソート装置は、ユニット記憶構造を備えてもよい。ユニット記憶構造は、リンクリストを備えてもよい。リンクリスト内に格納されたユニットは、所定の順序になるように互いにリンクされてもよい。各ユニットについては、ユニット記憶構造は、ユニットに関連する1つ又は複数の要素をさらに格納してもよい。ユニット記憶構造にリンクリストを使用すると、ソートされ得るすべての可能なユニットのためのメモリを取っておくのではなく、ユニットがソートされるときにユニットへの必要に応じてメモリを使用することが可能となる。これは、それによってメモリ管理及びメモリ割当ての制御が非常に単純化されるので特に有用であり、またユニット記憶構造が、他の装置によって共有されているメモリで実装される場合にも有益であり得る。
【0015】
ユニットをソートするために単一のソート装置が使用されてもよい。或いは、複数のソート装置が、ユニットをソートするために併せて使用されてもよい。それぞれのソート装置が、クロックのサイクルに従って動作してもよい。複数のソート装置を併せて使用すると、ユニットを各クロックサイクル内でソートすることが可能となる。たとえば、4つのソート装置が、ユニットをソートするために併せて使用されてもよい。ユニットは、4つの別個のユニット記憶構造、各ソート装置について1つのユニット記憶構造にソートされてもよい。ユニットをユニット記憶構造に置くことが4クロックサイクル内で実施される場合、4つのソート装置を併せて使用すると、ユニットを各クロックサイクル内でソートすることが可能となる。
【0016】
ソート装置は、通信ネットワークのパケットのタグをソートしてもよい。ソート装置は、パケットのタグをソートするために、タグソートポリシーを操作してもよい。タグは、タグ計算回路によって計算されてもよい。タグ計算回路は、タグを計算するために、パケットスケジューリングポリシーを操作してもよい。パケットスケジューリングポリシーは、たとえば、公平キューイングポリシーのファミリーのいずれか、たとえば重み付き公平キューイングポリシーを備えてもよい。
【0017】
ソート装置は、パケットスケジューラの一部を備えてもよい。スケジューラのソート装置は、通信ネットワークのルータの一部を備えてもよい。
【0018】
本発明の第2の態様によれば、ユニット記憶構造内のユニットのレコードを含むユニットサーチ構造と、ユニット記憶構造内のユニットの位置ポインタを含むユニット位置ポインタ構造とを備えるソート装置を使用して、ユニットを所定の順序に従ってユニット記憶構造にソートする方法が提供され、ソート装置が、ソートされるユニットを受信するステップと、ユニットサーチ構造が、ソートされるユニットを読み出し、ユニット記憶構造内のユニットのそのレコードを使用して、ソートされるユニットに最も近く一致するユニットをサーチし、ユニット位置ポインタ構造にアクセスし、最も近く一致するユニットの位置ポインタを取り出すステップと、ソート装置が、最も近く一致するユニットの位置ポインタを使用して、ユニット記憶構造にアクセスし、ユニット記憶構造にソートされるユニットを所定の順序による適切な位置に置くステップとを含む。
【0019】
本発明の第3の態様によれば、本発明の第1の態様によるソート装置を備える、通信ネットワークのためのスケジューラが提供される。
【0020】
次に、本発明の一実施形態について、例示するためだけに、添付の図面を参照して述べる。
【発明を実施するための最良の形態】
【0021】
図1に示されたソート装置1は、ユニットサーチ構造2、ユニット位置ポインタ構造3、及びユニット記憶構造4をも備える。しかし、ユニット記憶構造は、ソート装置の外部に設けられてもよいことが理解されよう。
【0022】
ユニットサーチ構造は、マルチビットツリーサーチ構造を備え、このマルチビットツリーサーチ構造は、示されるように、3つのサーチレベル5を備え、各レベルが1つ又は複数のノード6を備える。ツリーサーチ構造は、より多い又は少ないサーチレベル、また各レベル内により多い又は少ないノードを備え得ることが理解されよう。このツリーサーチ構造は、2ビットの長さを有するユニットセグメントを使用して、6ビットの長さを有するユニットをソートする。本発明はこのツリーサーチ構造に限定されないが、それぞれ異なる長さのユニットをソートするためのツリーサーチ構造を包含することが再び理解されよう。ツリーサーチ構造2の3つのサーチレベル5の各ノード6は、4ビットを、各ユニットセグメントオプション00、01、10又は11について1ビットを備える。レベルのノードのビットは、装置によってユニット記憶構造にソートされたユニットのレコードを含むために使用される。ビットのユニットセグメントオプションに対応するユニットセグメントが装置によって以前にソートされていない場合は、ビットは、0を含む。ビットのユニットセグメントオプションに対応するユニットセグメントが装置によって以前にソートされている場合は、ビットは、1を含む。第1及び第2のサーチレベルに1を含むノードのビットは、ツリーサーチ構造内のそれより下のレベルで、ノード、子ノードにリンクされる。
【0023】
ツリーサーチ構造は、メモリ内で実装される。構造の2つの第1のサーチレベルはレジスタからなり、第3のサーチレベルは、RAMのブロックからなる。2つの第1のサーチレベルは、これらのサーチレベルに必要なメモリの量が比較的小さく、レジスタを使用して実現され得るので、レジスタを使用して実装されてもよい。
【0024】
ユニット位置ポインタ構造3は、ルックアップテーブルを備える。ソート装置によってユニット記憶構造にソートされ得る各ユニットについて、位置がテーブル内に提供されてもよい。ユニット位置ポインタ構造の位置は、そのユニットがソート装置によってユニット記憶構造にソートされている場合は、ユニットの位置ポインタを含む。各ユニットについて、位置ポインタは、ユニット記憶構造内のユニットの位置を示す。ユニット位置ポインタ構造は、メモリ内で実装され、RAMのブロックを含む。ユニットサーチ構造及びユニット位置ポインタ構造は、ユニット位置ポインタ構造がユニットサーチ構造のツリーサーチ構造の第4のサーチレベルを有効に形成するようにリンクされる。
【0025】
ユニット記憶構造4は、リンクリストを含む。リンクリストは、メモリ内で実装される。リンクリスト内のユニットは、メモリ全体にわたってランダムに分散されてもよい。リンクリスト内に格納されたユニットは、所定の順序になるように互いにリンクされる。リンクリストの各エントリは、ユニットと、リスト内の後続のユニットへの位置ポインタとを含む。ソート装置のこの実施形態では、リンクリストは、ユニットサーチ構造2及びユニット位置ポインタ構造3を備えたチップ内に含まれる。しかし、リンクリストは、たとえば外部デュアルポートRAM上で、オフチップで実装されてもよい。
【0026】
ソート装置は、以下のように動作する。ユニットがユニット記憶構造にソートされる所定の順序を決定する、ユニットソートポリシーが選択される。この実施形態では、所定の順序は、ユニットの昇順である。しかし、ユニットの他の順序、たとえば降順が選択され得ることが理解されよう。
【0027】
ソートされるユニットは、ソート装置1によって受信され、ユニットサーチ構造2によって読み出される。ユニットサーチ構造によって読み出される各ユニットについて、ユニットの値に基づいて、復号手順が、ツリーサーチ構造の3つのサーチレベル5のそれぞれで実施される。この手順は、ユニットサーチ構造内に含まれるこれらのユニットのレコードを使用して、ユニット記憶構造内の最も近く一致するユニットをサーチする。たとえば、110110の値を有するユニットに最も近く一致するユニットを見つけるために、2つの第1のビット、11を備えるユニットセグメントが、ツリーサーチ構造の第1のサーチレベルのノードと比較される。このノード内の第4のビットは、ユニットセグメントオプション11に関連する。第4のビット内に1が存在する場合は、これは、11で始まるユニットが装置によって既にソートされており、ノードの第4のビットがそれより下のサーチレベル、すなわちツリーサーチ構造の第2のサーチレベルのノードにリンクされることを示す。ユニットの、次の2つのビット、01を備えるユニットセグメントが、第2のサーチレベルのノードと比較される。このノードの第2のビットが1を含む場合は、これは、1101で始まるユニットが以前に装置によってソートされており、このノードの第2のビットがそれより下のサーチレベル、すなわちツリーサーチ構造の第3のサーチレベルのノードにリンクされることを示す。(第2のビットが0を含む場合は、ユニットセグメント01にできるだけ近い一致、及び第3サーチレベルの対応するノードを見つけるために第2のサーチレベルのノード内の4ビットがスキャンされる。)ユニットの、最後の2ビットを備えるユニットセグメントは、第3のサーチレベル内のノードと比較される。このノードの第3のビットは、現在ソートされているユニットとまさに同じユニットを装置が既にソートしている可能性が低いので、通常0を含む。ユニットセグメント10にできるだけ近い一致を見つけるために、第3のサーチレベルのノード内の4つのビットがスキャンされる。これは、たとえば、01であり得る。次いで、ソートされるユニットに最も近く一致するユニットは、110101である。
【0028】
ツリーサーチ構造の第3のサーチレベルの各ノードは、ユニット位置ポインタ構造内の4つのエントリ、ユニットセグメントオプション、00、01、10及び11のそれぞれについて1つのエントリにリンクされる。ユニット位置ポインタ構造は、ユニット記憶構造内のユニットの位置へのポインタを含む。この実施例では、ユニット110110は、以前にソートされておらず、ユニット位置ポインタ構造内のこのユニットの場所は空である。最も近く一致するユニットが110101であると決定される。ソート装置は、このユニットについてユニット位置ポインタ構造内の位置にアクセスし、ユニット記憶構造内のこのユニットの位置を読み出す。
【0029】
この時点で、ソートされるユニットは、リンクリストユニットの記憶構造内に、所定の順序、すなわちこの実施例では昇順による正確な位置に容易に挿入することができる。ソート装置は、ソートされるユニットについてリンクリスト内の記憶位置を要求し、この位置にユニットを格納する。ソート装置は、最も近く一致するユニット110101の位置ポインタを使用して、リンクリスト内のこのユニットの位置にアクセスし、この位置から、リンクリスト内の後続のユニットの位置ポインタを読み出す。ソート装置は、ユニット110101の位置の位置ポインタを、ソートされるユニットのリンクリスト内に位置を指すように変更する。またソート装置は、最も近く一致するユニットの位置からそれが読み出した、リンクリスト内の後続のユニットの位置ポインタを、ソートされるユニットのリンクリストの位置に挿入する。したがって、ソートされるユニットは、リンクリストユニット記憶構造内に、ユニットの昇順による位置に置かれる。
【0030】
ユニットサーチ構造に含まれた、ユニット記憶構造内のユニットのレコードが更新される。これは、ユニットがソートされた後に、或いはユニットに最も近く一致するユニットをサーチする間に行うことができる。ユニットの各セグメントについて、ツリーサーチ構造の第1、第2及び第3のサーチレベルの適切なノードの適切なビット内に、1が置かれる。上記に示された実施例では、第1のサーチレベルのノード内の第4のビットに1が置かれ、第2のサーチレベルでアクセスされたノード内の第2のビットに1が置かれ、第3のサーチレベルでアクセスされたノード内の第3のビットに1が置かれる。ソートされた各ユニットについて、ソート装置は、ユニット位置ポインタ構造内に、ユニットのユニット記憶構造内の位置へのポインタを置く。
【0031】
ユニットサーチ構造のマルチビットツリーサーチ構造及びユニット位置ポインタ構造は、分散メモリアーキテクチュアを使用して実装される。ツリーサーチ構造及びユニット位置ポインタ構造の3つのサーチレベルは、それぞれ独立にアクセス可能なメモリアーキテクチュア内に保持される。ツリーサーチ構造及びユニット位置ポインタ構造のレベルは、互いに独立に書き込み、又は読み出すことができる。これによって、ソート装置の並列パイプライン構造が提供され、装置の動作速度が向上する。
【0032】
上記説明は、ソート装置によってソートされる第2及び後続のユニットに当てはまる。ソートされるべきユニットが、装置によってソートされる第1のユニットである場合、異なる、第1のユニットソート手順を使用しなければならない。ソートされるべき第1のユニットが、ソート装置によって受信され、ユニットサーチ構造がアクセスされ、ツリーサーチ構造の第1のサーチレベルのノードのビットはそれぞれ、0を含む。これは、ソート装置に、第1のユニットソート手順を適用させる。第1のユニットは、それに割り当てられたリンクリストユニット記憶構造内に位置を有する。次いで、ユニットサーチ構造は、第1のユニットの第1のセグメントを読み出し、ツリーサーチ構造の第1のサーチレベルのノードの適切なビットに1を書き込み、第1のサーチレベルのノード内のビットにリンクされた第2のサーチレベルのノードに移動する。次いで、ユニットサーチ構造は、第1のユニットの次のセグメントを読み出し、第2のサーチレベルのノードの適切なビットに1を書き込み、第2のサーチレベルのノード内のビットにリンクされた第3のサーチレベルのノードに移動する。次いで、ユニットサーチ構造は、第1のユニットの最後のセグメントを読み出し、第3のサーチレベルのノードの適切なビットに1を書き込み、第1のユニットに割り当てられたユニット位置ポインタ構造内の位置に移動し、第1のノードに割り当てられたユニット記憶構造位置をユニット位置ポインタ構造内の位置に書き込む。次いで、ソート装置は、ユニット記憶構造内の事前に割り当てられた位置に第1のユニットを置くために、第1のユニットの位置ポインタを使用する。
【0033】
ソート装置は、たとえば通信ネットワークの一部を備える場合、クロックサイクルに従って動作してもよい。これが当てはまる場合、特定のどんなメモリも、クロックサイクル当たり一度だけアクセスされ得るのが通常である。ツリーサーチ構造及びユニット位置ポインタ構造の3つのサーチレベルは、それぞれ独立にアクセス可能なメモリ位置内に保持され、したがって、3つのすべてのサーチレベル及びポインタ位置構造が、同じクロックサイクル内にアクセスされ得る。したがって、第1の3クロックサイクルの後、ソート装置は、各クロックサイクル内で、ソートされるユニットに最も近く一致するユニットの位置ポインタを取り出すことができる。したがって、ソート装置は、ユニット記憶構造内にユニットを置くのに1クロックサイクルしか必要でないならば、各クロックサイクル内でユニットをソートするであろう。しかし、リンクリストユニット記憶構造を備えるメモリは、ユニットをリンクリストに置くために、4回アクセスしなければならない。したがって、ユニットをリンクリスト内に置くには、4クロックサイクルを要する。したがって、4つのクロックサイクルごとにユニットがソート装置に入力され、そうでない場合は、最も近く一致するユニット位置ポインタが取り出され、リンクリスト内に置かれるべきユニットのキューが発生する。したがって、ソート装置は、4クロックサイクルごとにユニットをソートするにすぎない。3つの各サーチレベル、及び位置ポインタ構造は、4クロックサイクルごとにアクセスされるにすぎない。中間にある「冗長な」クロックサイクルは、メモリ位置がそれぞれ独立にアクセス可能であるために、同じクロックサイクル内に2つ以上のサーチレベル及び位置ポインタ構造にアクセスすることができるので、ツリーサーチ構造のビット、及び位置ポインタ構造内の位置ポインタを更新するために使用することができる。
【0034】
ソート装置のアーキテクチュアは、VHDLで実装され、Synpilcity and Xilinx Foundationツールを使用して、Xilinx Virtex FPGA用に合成されている。84MHzのクロック速度で、ソート操作当たり4クロックサイクルの場合、この実装形態は、40Gbpsで250Bの平均ユニットサイズをサポートすることができる。この回路実装にSoC技術を使用すると、100Gbpsを超過する速度の達成が可能となり得る。
【0035】
ユニットをソートするために、単一のソート装置が使用されてもよい。或いは、複数のソート装置が、ユニットをソートするために併せて使用されてもよい。たとえば、4つのソート装置が、ユニットをソートするために併せて使用されてもよい。ユニットは、4つの別個のユニット記憶構造、各ソート装置について1つのユニット記憶構造にソートされる。(この場合、ユニットの取出しが必要な場合、各記憶構造の第1のユニットが読み出され、最低の値を有するユニットが取り出される。)それぞれのソート装置は、クロックのサイクルに従って動作してもよい。上記のようにユニット記憶構造がリンクリストである場合、ユニットを記憶構造に置くのに4クロックサイクルを要する。したがって、それぞれのソート装置は、4つのクロックサイクルごとに1ユニットをソートし得るにすぎない。4つのソート装置を併せて使用すると、ユニットを各クロックサイクル内でソートすることが可能となる。
【0036】
図2は、パケットベースの通信ネットワーク用のスケジューラの概略図を示している。スケジューラは、通信ネットワークのルータの一部を備える。ルータは、ネットワークを介して伝播されるデータパケットをルーティングするように働く。ルータは、ルータの複数の入力を介してパケットを受信し、この複数のパケットを、ルータの出力に伝播する必要がある。これによって、パケットの伝播のスケジューリングが必要となる。
【0037】
こうしたスケジューリングは、スケジューラによって実施される。スケジューリングプロセスは、2つの段階、パケットスケジューリングポリシー機能及びパケット修理機能からなる。スケジューラ10は、パケットスケジューリングポリシー機能を担うパケットスケジューリングポリシー回路12と、パケット処理機能を担うパケット処理回路14とを備える。
【0038】
パケットスケジューリングポリシー回路12は、スケジューラを介したパケットの伝播のスケジューリング、特に順序を決定するために使用されるパケットスケジューリングポリシーを操作する。スケジューリングポリシー回路は、スケジューリングポリシーに従って各パケットのタグを計算し、タグの値は、互い対してパケットのスケジューリングを決定するために使用される。通常、タグを昇順に処理するようにスケジューリングすることが決定される。次いで、タグの値は、スケジューリングポリシーを使用して、より低いタグ値が、より高いスケジューリング優先度を有するパケットに割り当てられ、より高いタグ値が、より低いスケジューリング優先度を有するパケットに割り当てられるように計算される。
【0039】
パケットスケジューリングポリシー回路は、タグを計算するために使用されるタグ計算回路16を備える。タグは、計算されると、パケット処理回路14に渡される。
【0040】
パケット処理回路14によって受信されるタグは本質的に、ランダムな順序である。この理由は、ネットワーク内の単一のトラフィックフロー内のパケットは、フローに以前に割り当てられたタグよりも高くなっていくタグを受信するが、別個のトラフィックフローからのパケットは、タグを昇順には受信しないが、フローの特性、及びタグ計算回路によって操作されたスケジューリングポリシーに従って受信するからである。スケジューラは、複数のフローからパケットを受信し、したがって、計算されたタグ値は、特定の順序を有さない。タグが、タグ計算回路から受信される順序、すなわちランダムな順序で格納される場合、これは、関連するパケットの処理のための後続のタグ取出しに対して意味をもつ。通常、タグは、まず最低のタグから始めて、昇順に取り出され、これを容易にするために、タグは、パケット処理回路に到着するとすぐに昇順にソートされ、したがって順番に格納される。
【0041】
パケット処理回路14は、タグソート装置18を備える。タグソート装置は、上述の図1のユニットソート装置と同じ構造を有する。タグソート装置18は、タグサーチ構造と、タグ位置ポインタ構造と、タグ記憶構造とを備える。上述したように、ソートされるべきタグがタグサーチ構造によって受信される場合、最も近く一致する値のサーチが実施される。これによって、タグ位置ポインタ構造から、ソートされるタグに最も近く一致するタグ記憶構造内のタグに、位置ポインタが返される。次いで、ソートされるタグは、タグの昇順に従って、タグ記憶構造内の正確な位置に挿入される。したがって、タグソート装置は、タグを昇順にソートする問題への解決策を提供する。タグツリーサーチ構造及びタグ位置ポインタ構造のサーチレベルが、互いに独立に実装されるので、これによって、高速タグソート方法、及びマルチギガビット回線高速ネットワーク内のパケットスケジューリングが可能なスケジューラが提供される。
【0042】
またスケジューラは、到着するタグのソートが行われている間、ルータからネットワークへと前方伝播を行うために、ソートされたタグを取り出し、それに関連するパケットをスケジューラの出力に転送している。ソートされたタグは、まず最も低いタグから始めて、昇順に取り出される。これは、タグがリンクリストの記憶構造内で昇順にソートされているので、リンクリストのタグ記憶構造の第1のエントリ内のタグを繰り返し読み出す単純なプロセスである。タグ記憶構造の各エントリは、タグ、及びタグに関連するパケットが格納された位置を示す位置ポインタをも含み、スケジューラ及びルータからの前方伝播のためにパケットを取り出すことを可能にする。
【図面の簡単な説明】
【0043】
【図1】本発明の第1の態様によるソート装置の概略図である。
【図2】図1のソート装置を組み込む、本発明の第2の態様によるスケジューラの概略図である。

【特許請求の範囲】
【請求項1】
ユニットを所定の順序に従ってユニット記憶構造にソートするためのソート装置であって、
前記ユニット記憶構造内のユニットのレコードを含むユニットサーチ構造と、
前記ユニット記憶構造内のユニットの位置ポインタを含むユニット位置ポインタ構造と
を備え、
当該ソート装置が、ソートされるユニットを受信し、
前記ユニットサーチ構造が前記ソートされるユニットを読み出し、前記ユニット記憶構造内のユニットのそのレコードを使用して、前記ソートされるユニットに最も近く一致するユニットをサーチし、前記ユニット位置ポインタ構造にアクセスし、前記最も近く一致するユニットの位置ポインタを取り出し、
前記ソート装置が、前記最も近く一致するユニットの前記位置ポインタを使用して、前記ユニット記憶構造にアクセスし、前記ユニット記憶構造にソートされる前記ユニットを、前記所定の順序による適切な位置に置く、ソート装置。
【請求項2】
前記ユニットサーチ構造がツリーサーチ構造を含む、請求項1に記載のソート装置。
【請求項3】
前記ツリーサーチ構造がマルチビットツリーサーチ構造を含む、請求項2に記載のソート装置。
【請求項4】
前記ツリーサーチ構造が複数のサーチレベルを含む、請求項3に記載のソート装置。
【請求項5】
前記ツリーサーチ構造が、少なくとも1つのノードを備える第1のサーチレベルを具備する、請求項4に記載のソート装置。
【請求項6】
前記ツリーサーチ構造が、直前のサーチレベルのノードにリンクされた1つ又は複数のノードをそれぞれが備える1つ又は複数のさらなるサーチレベルを具備する、請求項5に記載のソート装置。
【請求項7】
前記ノードの少なくとも一部が、前記ユニット記憶構造内のユニットの前記レコードを含む、請求項5又は6に記載のソート装置。
【請求項8】
前記ノードのそれぞれが1つ又は複数のビットを備える、請求項5〜7のいずれか一項に記載のソート装置。
【請求項9】
前記ノードの前記ビットの少なくとも一部が、前記ユニット記憶構造内のユニットの前記レコードを含む、請求項8に記載のソート装置。
【請求項10】
前記ツリーサーチ構造が、ソートされる前記ユニットの少なくとも1つのセグメントを1つ又は複数のサーチレベルの少なくとも1つのノードと比較することによって、前記最も近く一致するユニットをサーチして、前記セグメント又は各セグメントに最も近い一致を見つけ、もって、前記ソートされるユニットに前記最も近く一致するユニットを見つける、請求項5〜9のいずれか一項に記載のソート装置。
【請求項11】
前記ツリーサーチ構造が、前記ソートされるユニットの第1のセグメントを前記ツリーサーチ構造の第1のサーチレベルのノードと比較して、前記第1のセグメントに最も近い一致、及び前記第1のサーチレベルの前記ノードがリンクされた前記ツリーサーチ構造の第2のサーチレベル内のノードを見つけ、前記ソートされるユニットの第2のセグメントを前記第2のサーチレベルの前記ノードと比較して、前記第2のセグメントに最も近い一致、及び前記第2のサーチレベルの前記ノードがリンクされた前記ツリーサーチ構造の第3のサーチレベル内のノードを見つけ、前記ソートされるユニットの第3のセグメントを第3のサーチレベルの前記ノードと比較して、前記第3のセグメントに最も近い一致、したがって、前記ソートされるユニットに最も近く一致するユニットを見つけることによって、前記最も近く一致するユニットをサーチする、請求項10に記載のソート装置。
【請求項12】
前記ツリーサーチ構造が、前記ユニット記憶構造内の前記ユニットのそのレコードを更新する、請求項2〜11のいずれか一項に記載のソート装置。
【請求項13】
前記ユニット位置ポインタ構造が、前記ソート装置によって前記ユニット記憶構造にソートされ得る各ユニットの位置ポインタの位置を備える、請求項1〜12のいずれか一項に記載のソート装置。
【請求項14】
ユニットが前記ソート装置によって前記ユニット記憶構造にソートされている場合は、位置が前記ユニットの位置ポインタを含む、請求項13に記載のソート装置。
【請求項15】
前記ユニットがソートされた後、前記ソート装置がユニットの位置ポインタを前記ユニット位置ポインタ構造内に置く、請求項13又は14に記載のソート装置。
【請求項16】
前記ユニット位置ポインタ構造がルックアップテーブルを備える、請求項1〜15のいずれか一項に記載のソート装置。
【請求項17】
ユニット位置ポインタ構造が前記ユニットサーチ構造にリンクされる、請求項1〜16のいずれか一項に記載のソート装置。
【請求項18】
前記ユニット位置ポインタ構造が、前記ユニットサーチ構造の前記ツリーサーチ構造の最下位レベルを有効に備えるように前記ユニットサーチ構造にリンクされる、請求項17に記載のソート装置。
【請求項19】
前記ソート装置が、前記ユニットを前記所定の順序にソートするためにユニットソートポリシーを操作する、請求項1〜18のいずれか一項に記載のソート装置。
【請求項20】
前記ソート装置が、前記ユニットサーチ構造及び前記ユニット位置ポインタ構造のための分散メモリアーキテクチュアを備える、請求項1〜19のいずれか一項に記載のソート装置。
【請求項21】
前記ユニットサーチ構造及び前記ユニット位置ポインタ構造の前記ツリーサーチ構造の各サーチレベルが、それぞれ独立にアクセス可能なメモリアーキテクチュアを備える、請求項4〜20のいずれか一項に従属する請求項20に記載のソート装置。
【請求項22】
前記ユニット記憶構造がリンクリストを含む、請求項1〜21のいずれか一項に記載のソート装置。
【請求項23】
前記リンクリスト内に格納された前記ユニットが、所定の順序になるように互いにリンクされる、請求項22に記載のソート装置。
【請求項24】
通信ネットワークのパケットのタグをソートする、請求項1〜23のいずれか一項に記載のソート装置。
【請求項25】
請求項1〜24のいずれか一項に記載のソート装置を備えるパケットスケジューラ。
【請求項26】
ユニット記憶構造内のユニットのレコードを含むユニットサーチ構造と、前記ユニット記憶構造内のユニットの位置ポインタを含むユニット位置ポインタ構造とを備えるソート装置を使用して、ユニットを所定の順序に従って前記ユニット記憶構造にソートする方法であって、
前記ソート装置が、ソートされるユニットを受信するステップと、
前記ユニットサーチ構造が、前記ソートされるユニットを読み出し、前記ユニット記憶構造内のユニットのそのレコードを使用して、前記ソートされるユニットに最も近く一致するユニットをサーチし、前記ユニット位置ポインタ構造にアクセスし、前記最も近く一致するユニットの位置ポインタを取り出すステップと、
前記ソート装置が、前記最も近く一致するユニットの前記位置ポインタを使用して、前記ユニット記憶構造にアクセスし、前記ユニット記憶構造にソートされる前記ユニットを、前記所定の順序による適切な位置に置くステップと
を備える方法。

【図1】
image rotate

【図2】
image rotate


【公表番号】特表2009−518916(P2009−518916A)
【公表日】平成21年5月7日(2009.5.7)
【国際特許分類】
【出願番号】特願2008−543888(P2008−543888)
【出願日】平成18年12月5日(2006.12.5)
【国際出願番号】PCT/GB2006/004526
【国際公開番号】WO2007/066085
【国際公開日】平成19年6月14日(2007.6.14)
【出願人】(504389636)ザ クイーンズ ユニヴァーシティ オブ ベルファスト (14)
【Fターム(参考)】