JP3905221B2 - バイナリツリーデータ要素ソーティング装置およびatmスペーサ - Google Patents

バイナリツリーデータ要素ソーティング装置およびatmスペーサ Download PDF

Info

Publication number
JP3905221B2
JP3905221B2 JP13058598A JP13058598A JP3905221B2 JP 3905221 B2 JP3905221 B2 JP 3905221B2 JP 13058598 A JP13058598 A JP 13058598A JP 13058598 A JP13058598 A JP 13058598A JP 3905221 B2 JP3905221 B2 JP 3905221B2
Authority
JP
Japan
Prior art keywords
stage
cell
command
node
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP13058598A
Other languages
English (en)
Other versions
JPH10336216A (ja
Inventor
ア−デュオン テュアン
ソアール モレイラ セラファン
Original Assignee
メット
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by メット filed Critical メット
Publication of JPH10336216A publication Critical patent/JPH10336216A/ja
Application granted granted Critical
Publication of JP3905221B2 publication Critical patent/JP3905221B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、それぞれデータ要素を含むことが可能であり、0からn−1まで番号を付けられたn個の連続したステージに分配され、ステージqはノード2qから2q+1−1を有する、1から2n−1まで番号を付けられた2n−1個のノードを有するバイナリツリーにしたがって構成された記憶手段と、1から2n1−1の間の各整数iに対して、ノードiが分類されるべき要素を含み、ノード2iおよび2i+1のそれぞれは分類されるべき要素を含まないか、あるいは決められた順序関係の向きにソートキーがノードiに含まれている要素のソートキーよりも大きいかまたはそれに等しい要素を含むように、順序付けの条件を満足するように、ツリーの中でソートされる要素を分散させるためのバイナリツリーの制御手段を有する、それぞれソートキーを有しデータ要素をソートする装置に関する。
【0002】
【従来の技術】
分類ツリーにおける要素の順序付けは、コンピュータ化されたソーティングの分野で「ヒープソート」と言われるものに対応する。この点に関して、Knuthによる著作「コンピュータプログラミング技法、第3巻、分類および探索」(アディソン・ウェスリー、1973年、142−157ページ)を参照されたり。
【0003】
一例として、図1は、n=4の場合の、順序付けの条件を満足するデータ要素(データ要素のうちソートキーのみが表示されている)を含む15個のノード1−15を有する分類ツリーを示す。
【0004】
ステージ0のノード1はツリーの根あるいは頂点と言われる。ステージn−1の2n-1から2n−1個のノードはツリーの葉であると言われる。ステージqの各ノードiに対して、その数がi2j+j’ここで、jおよびj’は0≦j<n−qおよび0≦j’<2jであるような整数である。の形式である2n-q−1個のツリーのノードは、ノードiの子孫と呼ばれる(ここでノードiはおsの子孫に含まれると考えられる)。これらの子孫のうち、(もしq<n−1ならば)ステージq+lの姉妹ノード2iおよび2i+1はノードiの子であると呼ばれる。他方、ノードiの親(もしq>Oなら)はステージq−1のノードと規定され、その数はもしiが偶数ならばi/2であり、iが奇数ならば(i−1)/2である。ツリーのノード間の親子関係のこれらの論理関係は図1で矢印により示されている。
【0005】
ソートキーの間の順序関係は任意である。図1に示されている例では、自然数間のよく知られた順序関係であり、ソートキーの昇順に分類可能である。降順で分類の場合には、キーの間の順序関係を逆転すれば十分なことは明らかである。図1において、ソートされる要素により占められていないツリーのノードは、それぞれそのソートキーが無限大である要素を含むと見なされる、すなわち、ソートされるデータ要素のどのソートキーよりも大きい。無限大のキーをコード化する1つの可能性は、この目的のキーを含むデータフィールドの1ビットを残してかくことである。もしこのビットが1であればキーは例えば無限大であると見なされ、そうでなければ有限と見なされる。換言すれば、このビットはノードが空きであるか、あるいはデータ要素により使用されているかを示す。
【0006】
ひとたびそれが順序付けられたデータ要素N<2nの集合によりロードされると、ソーティング装置はこれらのN個の要素を連続的にNサイクルでソートキーの順番に転送できる。サイクルの間にツリーから要素を抽出することは、ツリーの根に位置する要素を読み取ることと、常に順序付けの条件を満足させるような方法でその家系の要素を追跡することから成る。したがって、図1に示された場合において、第1のサイクルは根に位置する要素16を読み取ること、および、要素24を根へ、次に要素38をノード2へ、最後に要素623をノード4へ移動することから成る。これは根から葉に向かって抽出コマンドを伝搬することになる。
【0007】
ある用途においては、ソートされる新しい要素をツリーに挿入するコマンドに応答できることは制御手段にとってさらに必要である。したがって、ソーティング装置は各サイクルにおいてソートされる要素を転送または受信することができる。ソーティング装置は、使用される順序関係にしたがって管理され、時間タグあるいは優先権インデックスの他の任意の型式を表現するであろうソートキーの基本原理でダイナミックな待ち行列として作動する。
【0008】
公知のバイナリ分類ツリーでは、所定のノードのレベルにおいて2つの子のどちらにコマンドが伝搬されるべきかはアプリオリに判断できないので、挿入コマンドはツリーの根から葉まで伝搬されず、2人の子の一方の子孫が完全に満たされていてしたがってコマンドの受信には不適当であるかもしれないことが十分理解されよう。したがって、挿入コマンドはツリーの葉から根まで伝搬される。例えば、ソートキーが28である要素を図1のツリーに挿入するためには、それはツリーの空きの葉、例えば葉9に書き込まれ、より高次のノードに含まれる要素と順次比較される。かくして、考慮中の例では要素28および38は順序付けを再確立するために交換される。
【0009】
これらの条件下では、最小のキーを有する要素がツリーから抽出される時に、先行するサイクルが完了していなければならない。したがって、装置がデータ要素を転送あるいは受信できる速度は、コマンドを処理するサイクルの持続時間により制限され、これはステージの数n、すなわちソートされる要素の最大値Nの対数に比例する。この数Nが大きく例えば数千であり、また高速度、例えば毎秒500,000要素以上が必要な応用例では、ソーティング装置を既存の電子回路で組み立てることはできない。
【0010】
【発明が解決しようとする課題】
J.W.ロバーツ他による論文「実時間ソータのATMトラフィック制御への応用」( Proc. ISS '95、1995年4月、第1巻、258−262ページ)は上述の速度限界による影響を受けないソーティング装置、すなわちソートされる要素の最大の数とアプリオリに独立な速度で要素の転送と受信が可能なソーティング装置について説明している。しかしながら、後者の装置の欠点は並列に動作する論理回路の数がNに比例することである。ひとたびソートされる要素の数Nが大きくなると(論文で予測されたATMセルスペーサへの応用の場合のように数千あるいは数万も)、装置のハードウェアの複雑性は大きなものとなる。
【0011】
本発明の目的は、複雑性が限定された高速のソーティング装置を提供することである。
【0012】
【課題を解決するための手段】
本発明は、制御手段が、ソートされる新しい要素を挿入するためのコマンドを有し、バイナリツリーの内容を修正するコマンドに応答する、冒頭に示した種類の装置を提案する。本発明によれば、制御手段は、それぞれ1つのステージあるいは、バイナリツリーの複数の連続したステージと組み合わされた、mが2からnの間の整数であるm個の連続したコントローラと、連続したステージ間のn−1個のインタフェース・レジスタを有し、n−1個のインタフェース・レジスタ間で異なるコントローラと組み合わされたステージ対の間のm−1個のインタフェース・レジスタの各々がパイプラインレジスタを構成し、バイナリツリーの内容を修正するための各コマンドはステージ0からステージn−1へインタフェース・レジスタにより伝搬され、パイプラインレジスタはコントローラの並行動作を許容する。
【0013】
装置の複雑さは、それ自身多くてもツリーのステージの数n、すなわちソートされる要素の最大の数の対数や等しいコントローラの数mによって制限され、限定されている。コントローラのパイプライン構成は並列動作およびソートされる要素の高速入出力を許容する。この速度はソートされる要素の数に依存しない。この速度は、コントローラの数mがステージの数nと等しい時に最大となる。
【0014】
本発明のソーティング装置は、考えられる多数のデータ要素の高速ソーティングが要求される時に、さまざまな用途を有する。したがって、ソーティング装置はどのようなコンピュータ・システムに対してもコプロセッサ・ソーティング・カードの形式で構成することができる。用途の興味ある分野はプロセスの順序付けであり、その場合ソートキーはプロセスを始動するように要求される時刻を表す。かくして最も「緊急の」要素を各時刻にツリーから抽出できる。
【0015】
本発明の装置はATMセルのスペーシングの分野で特に有利な用途を有する。したがって、本発明の第2の局面は、着信セルが書き込まれ発信セルが読み出されるセルメモリと、セルメモリに書き込まれた各セルに理論的送出時間を割り当てる手段とを有する複数の仮想接続によって送信されるATMセルのスペーサを提案する。本発明によれば、スペーサはさらに、仮想接続がセルを収容している各仮想接続に対して、これらのセルがリストの開始とリストの終わりの間で先入れ先出しモードで蓄積されるロケーションのリストをセルメモリが有するように関連するポインタメモリの助けにより、セルメモリを管理するスペーシング制御手段と、仮想接続識別情報と、前記仮想接続に関するリストの開始に含まれているセルの理論的送出時間から成るソートキーを各々が有するデータ要素(K(i)、R(i))を順序づけ、最小のソートキーを有する少なくとも1つのデータ要素を選択するソーティング手段を有し、スペーシング制御手段は、ソーティング手段により選択されたデータ要素において識別された仮想接続に関するリストの開始に含まれたセルの送出を命令するするように構成されており、ソーティング手段は、上に規定したようなソーティング装置であって、ステージ0のそのノード1が前記選択された要素を含むソーティング装置を少なくとも1つ有する。
【0016】
【発明の実施の形態】
図2は、データ要素がn=4ステージを有する図1のバイナリーツリーにしたがって構成されたメモリ200−203に収容されるソーティング装置を示す。
【0017】
バイナリーツリーは、m個の個別のコントローラのセットにより制御される。ここでmは2とツリーのステージの番号nの間の整数である。図2および図3で考慮されている場合において、ツリーの各ステージq、すなわちm=n=4に対して1個のコントローラ2lqがある。各コントローラ2lqはステージqにアクセスできるようにするバス22qを有する。したがって、ツリーの記憶手段は、それぞれ対応するバス220−223を介してアクセス可能なm=4のメモリモジュール200−203に分割されている。各ノードiには、それぞれ、データ要素のソートキーK(i)、図2に表示される唯一のキー(要素が無い場合にはK(i)=∞)、およびこの要素のリファレンスR(i)を収容ための2つのメモリロケーションがある(図3参照)。
【0018】
ステージ0以外のツリーの各ステージqは、ノード2qから2q+1−1のほかに、1ビットの容量を持つ2q-1個のロケーション23、およびn−q+lビットの容量を持つ2q-1個のロケーション25を有する。各ロケーション23はステージqの一対の姉妹ノード2iおよび2i+lと組み合わされたステアリングビットF(i)を含み、その値は、左方向姉妹2iに含まれるキーが右方向姉妹2i+l(K(2i)<K(2i+l))に含まれるキーより小さければF(i)=Oであり、K(2i+l)≦K(2i)ならばF(i)=lである。分類ツリーのロケーション23の合計数は2n-1−1である。
【0019】
ステージqの各ロケーション25はステージqの一対の姉妹ノード2iおよび2i+lと組み合わされた差分カウンターΔ(i)を含み、その値は、左方向姉妹2iの子孫に含まれるデータ要素の数と、右方向姉妹2i+1の子孫に含まれるデータ要素の数との差により与えられる。
【0020】
ステアリングビットF(i)は抽出あるいは交換コマンドをツリーの根から葉まで伝搬するように動作するのに対して、一方差分カウンターΔ(i)は挿入コマンドをツリーの根から葉まで伝搬するように動作する。
【0021】
バイナリーツリーの制御手段は、さらにn−1=3個のインタフェース・レジスタ261−263を有し、各レジスタ26qはステージq−1のコントローラ21q-1とステージqのコントローラ21qの間のインターフェイスとして動作する。さらに図2の基本的な図には、ステージ0のコントローラ210とソーティング装置の環境との間でインターフェイスとして動作するレジスタ260が示されている。ソーティング装置に送られたコマンドは、ソーティング装置により供給されるレスポンスであるとして、このレジスタ260に書き込まれる。実際には、このレジスタ260はツリーの上のステージのコントローラ210と同じ回路に属することができる。
【0022】
図3を参照すると、各レジスタ26qは:
ツリーの根から葉まで伝搬するコマンドの性質を指定するコマンドコードAq;以下の説明において、コマンドAqは例として次のように2ビットでコード化されていると見なされる:Aq=00はステージqの前方のツリーの内容の修正無し、Aq=01は新しい要素を挿入するコマンド、Aq=11はツリーから最も小さいソートキーを有する要素を抽出すると同時に新しい要素をその中に挿入することからなる交換コマンド(最小のソートキーを有する要素の直接抽出は、この要素を無限大のソートキーを有する素子と交換することとして取り扱われる)、およびAq=10ステージqの前方のツリーの内容を再初期化するコマンド;
挿入あるいは交換コマンドによりステージq−1からステージqまで、あるいは交換コマンドによりステージqからステージq−1まで送信されたソートキーBq
ソートキーBqと組み合わされ、ソートキーBqと共に挿入あるいは交換されたデータ要素を形成するリファレンスCq
q−1ビット(この識別はレジスタ260には存在しない)から構成され、コマンドAqがそこから発信されるステージq−1のノードを指定する識別情報Dq、をそれぞれ収容する4つのロケーションで構成されている。いっそう正確には、識別情報DqはそこからコマンドAqが発信するステージq−1のノードiの数のバイナリー法表示のq−1個の最下位ビット、すなわちベース2に対してi=lDqから成る。
【0023】
新しい要素をツリーに挿入するために、コマンドAo=O1およびこの新しい要素Bo、Coがレジスタ260に書き込まれ、次にコマンドがツリーの根から葉まで伝搬される。交換を行うために、コマンドAo=11およびレジスタ260に挿入される要素Bo、Co(直接抽出の場合にはBo=∞である)が書込まれ、その後に最小のキーを有する要素はレジスタ260のロケーションBoおよびCoの中に取り出される。
【0024】
各コントローラ21qにより実行された動作は図4、5および6のフローチャートに示される。これらの動作を実行するために、各コントローラ2lqは適切にプログラムされた高速論理ゲートのネットワークの形式で作られる。動作は本質的に読み取り/書き込み、インクリメント/デクリメント、バイナリーコード化された変数の比較であるので、ゲートネットワークのこのプログラミングには問題が無い。
【0025】
コマンドAqはレジスタ26q(段階100)からまず読み取られ、次いでコマンドの型式を識別するように評価される(段階101)。 修正無しの場合には(Aq=00)、コントローラ2lqは同じコマンドAq+1=00を次のレジスタ26q+1(段階102)に単に書込む。
【0026】
リセットコマンド(Aq=10)の場合には、親の識別Dqは変数sに割り当てられ(段階103)、コントローラ2lqはその数のバイナリー法表示がlsOおよびlslである2つの子ノードを初期化し、一方、段階102においてコマンドAq+1=00を伝搬する前にそのソートキーを無限大にセットし、対応する差分カウンタΔ(1s)に値0を置く(段階104)。ステージ0の特定の場合には、リセットは単にK(l)=∞を書き込むことから成る。
【0027】
レジスタ100から読み込まれたコマンドAqが、親ノード1Dq(Aq=01)からの新しい要素Bq、Cqの挿入を表わすと、これらのパラメータBq、CqおよびDqはコントローラ2lqによりそれぞれ読み取られ、段階105において変数k、rおよびsに割り当てられ、その後識別されたノードの子と組み合わされた差分カウンタΔ(1s)は、段階106において変数δに割り当てられる。
【0028】
もしδ<0ならば(比較107)、右方向の子は左方向の子より多くの子孫を有し、挿入コマンドが左方向の子に伝搬されるように、左方向の子の子孫の中に新しい要素を受信可能な少なくとも1つのノードがある。ビットtは0に等しいとされ、また変数δは段階108において1段階インクリメントされる。逆に、もしδ>Oであれば、ビットtは1に等しいとされ、挿入コマンドが右方向の子に伝搬するように、変数δは段階109において1段階デクリメントされる。段階110において、ソートキーK(lst)および処理済みの、すなわちコマンドが伝搬されるノードに含まれるデータ要素のリファレンスR(lst)は読み取られ、それぞれ変数k’およびr’に割り当てられる。
【0029】
もしk<k’であれば(比較111)、ステージq+lに伝搬される要素w、xが処理済みのノードから読み込まれたk’、r’と段階112において等しいとされるように、処理済みのノードは挿入されるデータ要素より大きいソートキーを含む。もしk’≦kであれば、送信される要素w、xは段階113でレジスタ26qから読み込まれたそのk、rと段階113において等しいとされ、次に変数k、rはそれぞれ変数k’、r’の値を受信する。
【0030】
もし伝搬されるデータ要素のキーwが無限大であれば(比較114)、これは挿入コマンドがもはや伝搬される必要がないからである。次にプロセッサ2lqは段階115において変数v’に値10(再初期設定)を与える。もし送信されるキーwが有限であれば、変数v’は挿入コマンドを示すように段階116において値01を受信する。プロセッサ2lqは続いて、段階117においてAq+1=v’、Bq+1=w、Cq+1=xおよびDq+1=stを書き込むことによりレジスタ26q+1を満たすことができる。
【0031】
段階117の後は、挿入コマンドの処理はもはやコントローラ2lqにそのインタフェース・レジスタ26q、26q+1にアクセスするように要求せず、単に処理中のメモリ領域20qへのアクセスを要求する。段階118において、それは変数δの新しい値を書き込むことにより差分カウンタΔ(1s)を更新する。次に、段階119において、それはK(lst)=kおよびR(lst)=rをそこに書き込むことにより、処理済みのノードのデータ要素を更新する。
【0032】
挿入コマンドの処理を完了するために、次にコントローラ2lqは処理済みのノードlstと組み合わされたステアリングビットF(ls)の値を更新する。コントローラ2lqはまず処理済みのノードの姉妹ノードに含まれるデータ要素のソートキーK(lst)を読み取り、それを変数k’に割り当てる。段階126においてステアリングビットF(ls)を含むロケーション23に書き込まれる変数fは、もし比較121、122、123がt=Oおよびk’≦k,またはt=lおよびk≦k’であることを示せば、段階124において1と等しいとされる(右方向の子に向かってのステアリング)。反対の場合には、段階125においてf=0と見なす。
【0033】
段階126の後に、プロセッサ2lqはコマンドAqの処理を完了し、レジスタ26qから発信されている次のコマンドを処理するために、段階100に戻ることができる。
【0034】
レジスタ26qから読み取られたコマンドがステージq−1の親ノード1Dqからのデータ要素Bq、Cqの交換を示すと(Aq=11)、これらのパラメータBq、CqおよびDqは、読み取られ段階130において変数k、rおよびsにそれぞれ割り当てられる、その後に、識別されたノードの2つの子と組み合わされたステアリングビットF(ls)の値は段階131においてビットtに割り当てられる。処理済みのノード1stから読み込まれたデータK(lst)、R(lst)は、次に段階132において変数k’およびr’に割り当てられる。
【0035】
もし処理済みのノードがレジスタ26qから読み込んだデータ要素のソートキーより大きいソートキーを含むなら(比較133の間はk<k’)、交換コマンドはもはや、レジスタ26q+1に書き込まれるコマンドv’が段階134において00(無修正)と等しいとされるように、ツリーの下位ステージに伝搬される必要はない。この段階134において、レジスタ26qに返送されるデータ要素w’、x’はさらに最小のソートキーを有するそのk、rと等しいとされる。もし比較133がk≧k’を示せば、段階134は段階135により置換され、段階135においてプロセッサ2lqはw’=k’、x’=r’およびv’=11をとる(交換コマンドの伝搬)。
【0036】
プロセッサ2lqは次に段階136に進み、要素w’、x’をインタフェース・レジスタ26qのロケーションBqおよびCqに書き込む。
【0037】
コマンドを伝搬するためにコントローラ2lqは次に段階137を実行しインタフェース・レジスタ26q+1に書き込む:Aq+1=v’、Bq+1=k、Cq+1=rおよびDq+1=st。
【0038】
もし伝搬されたコマンドが交換コマンドでなければ、すなわち、もし比較138がv’≠11を示せば、コントローラ2lqによる交換コマンドの処理は書き込み段階137の後に終了される。他の状況では、プロセッサ2lqは段階139に進み、ステージq+lに送信したキーkが無限大であるか否かを調べる。
【0039】
もし比較139がk=∞を示せば、交換コマンドは実際に直接抽出コマンドであり、処理済みのノードと組み合わされた差分カウンタΔ(1s)を更新することが必要である。この差動カウンタの値がまず読み取られ、段階140において変数δに割り当てられる。もしコントローラ2lqが左方向の子(比較141の間t=O)を処理したならば、変数δは段階142において1段階デクリメントされ、反対の場合、他方それは段階143において1段階インクリメントされる。差分カウンタΔ(1s)は変数δの新しい値にしたがって段階144において更新される。
【0040】
それぞれ有限のソートキーを有する2つの要素の交換が差動カウンタの値に影響を与えないとすれば、もし比較139がkを送信したキーが有限であることを示せば、段階140から144までは実行されない。
【0041】
プロセッサ2lqは次に、コントローラ21q+1が(その段階136の間に)レジスタ26q+lに返送したデータ要素Bq+1、Cq+1を読み取ることにより、またこの返送された要素を変数kおよびrに割り当てることにより、段階145において交換コマンドの処理を再開する。上述のように段階119から126までを介して、コマンドの処理は続いて終了する。
【0042】
図4−6のフローチャートは任意のステージqの場合に提示されている。当然、ある程度の翻案が第1のステージq=0と最後のステージq=n−1において必要である。上に述べたように、q=0に対して、処理済みのノードlstは常にツリーの根であると理解され、段階106−109、118、120−127、131および139−144はできる限り除かれる。レジスタ26nを設けることが必要でないとすれば、最後のコントローラの下流段階110から117までは最後のステージn−1に関して除くことができ、段階102、137および145、さらに交換のみの点で段階119も除くことができる。
【0043】
連続したコントローラの並行動作の時間的構成は、インタフェース・レジスタ26qへのアクセスの共有により条件付けられている。コントローラ2lqがレジスタ26q+1に対して、対応するパラメータも同様に送信する(コマンドの型式により段階102、117あるいは137の後に)コマンドを書き込み終える時刻αqを、同様に交換コマンドの場合にコントローラ2lqがレジスタ26qに、コントローラ21q-1に返送するデータ要素Bq、Cqを書き込み終える時刻βqを図4および図5に示す。さらに、α’qはコントローラ2lqがレジスタ26qから新規コマンドを読み込み始める時刻を示し(段階100のすぐ前に)、またβ’qはコントローラ2lqがレジスタ26q+1から、交換コマンドの場合に(段階145の直前に)コントローラ21q+lにより返送されるデータ要素を読み込み始める時刻を示す。正確なパイプライン動作を得るためには、コントローラを各コマンドに対して、αq≦α’q+1およびβq≦β’q-1が得られるように設計することで十分である。
【0044】
これらの2つの条件を満足させるためには、コントローラ2lqは非同期でも同期でも良い。第1の場合には、パイプライン動作はコントローラ間で交換される肯定応答信号によって保証される。段階136を実行した後、コントローラ2lqはコントローラ21q-1に肯定応答信号を送り、それによりコントローラ21q-1は段階145および交換コマンドの次の処理に進んで良いことを知る。さらに、段階102あるいは137あるいは117を実行した後で、コントローラ2lqは肯定応答信号をコントローラ21q+1に送り、それによりコントローラ2lq+1はその読み取り段階100を開始することによりコマンドの処理を開始してよいことを知る。
【0045】
コントローラ21qの同期動作は、コントローラを論理ゲートのネットワークから構成する場合に、実現がより便利である。この場合に、パイプラインの構成は図7のタイミング図により示される。
【0046】
この図において、4つの行のそれぞれは、そのステージの1つのコントローラの動作を示す。ステージqに関する行の上側の文字RDおよびWRは、それぞれコントローラ2lqにより実行されるレジスタ26qからのまたはレジスタ26qへの読み取りと書き込みを表し、行の下側に位置する同じこれらの文字は、それぞれレジスタ26q+1からのまたはレジスタ26q+1への書き込みと読み取りを示す。上に述べたように、ステージの間の矢印はパイプラインレジスタによるコマンドとパラメータの伝達を表す。ハッチングを付けたインターバルは、コントローラ2lqがそれが制御するメモリ領域20q上で動作中の時間を表す。
【0047】
図7に示す期間θ1は、ソーティング装置が新しい要素を受信し、最小のソートキーを有する要素を転送することができる速度を決定する。それはコマンドに関する命令の集合を処理するために各コントローラにより要求される持続時間に対応する。この期間θ1が、新規コマンドが処理され始めた後に分類ツリーを一貫した順序付けの規則を再確立するために必要なサイクルθ2の持続時間より短いことが判る。図5に示す例において、第1の期間θ1はステージ1に置かれる他の1つの要素とツリーの根に位置する要素との交換に対応する(すなわち、図2の場合において、そのキーは25と38の間に置かれている)、また第二の期間θ1、ステージ2への新しい要素の挿入に対応する(キーは前の交換動作の間に導入された要素のキーより大きいかまたは等しい)。
【0048】
最小のソートキーを有するデータ要素をレジスタ260へ返送するために装置により要求される応答時間θ0=β0−α’0は期間θ1の約3分の1に対応することがさらに指摘される。
【0049】
期間θ1を最小限度に抑え、したがってソーティング装置の動作速度を最大にするために、コントローラにより実行される処理動作を、処理動作がそのインタフェース・レジスタにアクセスする時刻を分離している間隔の内に均質に点在させることが有益である。これは図4から図6のフローチャートの若干の命令の処理を移動することにより実現できる。例えば、もし時刻β’以前に、コントローラqが、コントローラ21q+1がその一連の命令130−136を、レジスタ26q+1からその結果を読み取る前に実行し終えるのを待たなくてはならない時間間隔146(図5)があれば、少なくともこの時間間隔のいくらかは他の命令を実行することにより満たされることができ、これは他のどこかで時間の節約を可能にする。上に述べたように例えば図4から図6の場合、処理済みのノードの姉妹のソートキーの読み込み120は、交換動作中の段階145の前で挿入動作中の段階118の後に行うことができるであろう。この種の最適化は、論理ゲートネットワークをプログラムするために構成されるアーキテクチャの選択に多くを依存する。
【0050】
上記の説明において、装置に最良の速度性能をもたらすように、コントローラのそれぞれが、それへのアクセスがそのために予約されたバイナリーツリーの単一のステージと組み合わされた場合が考慮された。その動作に必要な論理回路(コントローラ21q)の数で測られる装置の複雑さは、したがってnである、すなわちソートされる要素の最大数の対数である。
【0051】
ツリーのいくつかの連続したステージを単一のステージの代わりに若干数のコントローラ、少なくともそれぞれのコントローラ(すなわちm<n)と結び付けることにより、この複雑さは対応して装置速度が低下することを代償に低減できる。コントローラ毎のステージの数はすべてのコントローラに対して必ずしも同一ではない。特に、もし少なくともステージ0と組み合わされたコントローラが分類ツリーの環境に関連する他の機能も実行するならば、このコントローラが他のコントローラよりも少数のステージを管理するために準備がされてもよい。
【0052】
コントローラがツリーのいくつかのステージと組み合わされている場合には、これらのステージに沿ってのコマンドの伝搬はこのコントローラにより連続的に処理される。
【0053】
図8がツリーのステージqからq+p−1と組み合わされたコントローラ21,qpの場合を示すように、異なるコントローラと組み合わされたステージ間のインタフェース・レジスタ26q、26q+pのみが、連続したコントローラの並行動作の点でパイプラインレジスタを構成する。他のレジスタ26q+1、・・・、26q+p-1はコントローラ21qpのみがアクセスできる。これらのレジスタは、このコントローラ21q、pを構成する論理回路の一部を形成するか、あるいはこのコントローラに対して確保され、ステージqからq+p−1を有するメモリモジュールの一部を形成する。
【0054】
m番目のコントローラと組み合わされているバイナリーツリーのステージの中の差分カウンタΔ(i)を不要にすることが可能なことが指摘される。この後者のコントローラはp個のステージn−pからn−1(1≦p<n−1)と組み合わされていると仮定する。パイプラインレジスタ26n-pから挿入コマンドAn-p=01が読み込まれた時、このコマンドが発信された親はこのレジスタで識別されたノード1Dn-pである。もし、2n-p-1の考えられる親のそれぞれのために、最後のコントローラがこの親ノードの子孫の一部を形成している空きの葉の個々のリストを最新に維持しておくならば、パイプラインレジスタのフィールドDn-pで識別された親ノードと組み合わされたリストに属する空きの葉からスタートしてステージn−1からステージn−pへ連続的に挿入コマンドを伝搬することにより、最後のコントローラは挿入コマンドを処理することができる。これらのリストのそれぞれにおいて、葉のそれぞれは、識別情報Dn-pのn−p−1ビットと共に明瞭に葉を識別するpビットで簡単に指定できる。このリストを維持する簡単な方法は後入れ先出し(LIFO)モードでそれを構成することである。識別された親に基づいて空きの葉を指定するpビットが各ステージにおいて使用できるとすれば、挿入コマンドの伝搬を制御するために、最後のコントローラはさらに挿入コマンドをステージn−pからステージn−1へ伝搬することができる。
【0055】
最後の分析において、図2から図8に示す型式のソーティング装置はそれぞれツリーのノード2iと2i+1の対と組み合わされた丁度2n-p-1−1個の差分カウンタΔ(i)を備えることにより構成できるここで、iは1から2n-p-1−1までの範囲である。
【0056】
図9から図15はソーティング装置の他の実施形態を示す。
【0057】
説明を容易にするために、各コントローラ2lqがバイナリーツリー(m=n)の単一のステージqと組み合わされている場合が再び考慮される。しかしながら、前と同じように、このソーティング装置のアーキテクチャが、少なくとも1つのコントローラがいくつかのステージ(m<n)と組み合わされた場合と容易に置換可能であることは理解されるであろう。
【0058】
すでに説明された代表的な実施形態と異なり、図9から図15の実施形態は挿入コマンドをツリーの根から葉まで伝搬するために差分カウンタを使用しない。ツリーのステージqに対応する各メモリモジュール20qは、上に述べたようにノード2qから2q+1−1およびステアリングビットF(2q-1)からF(2q−1)を受信するためのロケーション23を有するが、図9が示すように、差分カウンタを受信するためのロケーション25は有しない。
【0059】
各インタフェース・レジスタ26qは、先に規定したパラメータAq、Bq、CqおよびDqを含む4つのロケーションに加えて、ステージq−1のノード1Dqからの挿入コマンドの伝搬の間に、このコマンドがそこへ伝搬されるステージqの子ノードを指定するビットEqを受信する追加のロケーションを有する。上に述べたように、もしEq=0であれば、挿入コマンドは左方向の子ldq0に伝搬され、他方、もしEq=1であれば、挿入コマンドは右方向の子ldq1に伝搬される。
【0060】
レジスタ26qにおいて、親ノードの識別情報Dqおよび子ノードを指定しているビットEqは、n−1ビットの葉指定フィールドの内容Gqのq個の最高位ビットから成る。この葉指定フィールドの内容Gqは、挿入コマンドの伝搬の間に、このコマンドが伝搬されるバイナリーツリーの空きの葉の1つを指定する。この空きの葉のバイナリー法表示はlGqである。葉の指定が空きであるとすれば、この同じ葉への他の挿入コマンドがバイナリーツリーの下流に現在伝搬していないという条件で、挿入された要素は、ツリーの根からこの指示された空きの葉までのパス上に、確実にその場所を見いだすことが可能であろう。
【0061】
この条件を満たすために、ステージ0と1の間のインタフェース・レジスタ261の葉指定フィールドは、ツリーの最後のステージと組み合わされたコントローラ21n-1からその値G1を受信する。コントローラ21n-1は、例えば図10に概略で示されるようなシフト・レジスタ30により、空きの葉の第一のリストを維持する。このレジスタはn−1ビットのロケーションの番号n’を含み、各コマンド期間θ1においてシフト演算を行う。任意の葉に向かって挿入コマンドがバイナリーツリーの中で多分伝搬しつつあるであろう任意の葉はn’の空きの葉のこの第一のリストの一部を形成する。インタフェース・レジスタ26n-1から最後のコントローラにより読み取られたコマンドAn-1が挿入コマンド(An-1≠01)ではない限り、図8に示すように、n’個の期間θ1ごとに同じ葉の指定を配送するようにシフト・レジスタ30はそれ自身ループバックされる。それに向かって挿入コマンドがツリーの中で多分伝搬しつつあるであろう葉の指定のそれぞれと異なっていると知られるこの指定G1は、インタフェース・レジスタ261の対応するフィールドに書き込まれる。もしそれに反して、挿入コマンドAn-1=01がツリーの最後のステージに到達すれば、後に説明される方法で空きの葉の第2のリストから最後のコントローラにより抽出された新しい空きの葉Pは、シフトレジスタ30およびインタフェース・レジスタ261に導入される。
【0062】
この動作の方法を説明するために、新しい要素をツリーに挿入するために連続して装置がコマンドを処理する場合について、図11は単純化された形式で図7のタイミング図に協力する。この図11において、各矢印の先端部はコントローラ21qが挿入コマンドを処理し始める時刻α’qを示す。上に述べたように、時刻α’oにおいて、コントローラ21oは関連するコマンドおよびパラメータAo、Bo、Coを装置の周囲から受信し、またq≧1である時刻α’qにおいて、コントローラ2lqはコマンドおよびレジスタ26qのパラメーターAq、Bq、CqおよびGqを受信し、対応する処理動作を開始する。図11に示す典型的な時間的構成において、最後のコントローラ21n-1がレジスタ261に対応する空きの葉の指定G1を書き込んだ各挿入コマンドは、2つの期間θ1の後にレジスタ26n-1のこの最後のコントローラにに到達する。したがって、この例においては、シフト・レジスタ30にn’=2のロケーションをとれば十分である。
【0063】
この同じ例において(さらに図1参照)、図10はレジスタ30に保持されたリストに含まれるn’=2の葉9および13(数9および13のバイナリー法表示は1001および1101であるから、それぞれ001および101により指定された)を示す。葉9はしたがって、最後から2番目のコマンドの間にフィールドG1に指定されている。もしこのコマンドが新しい要素の挿入を指し、葉9において終了するなら、(すなわち最後のプロセッサの動作の現在の期間でAn-1=01)、葉9はリストおよびレジスタ30から削除され、P.により指定された新しい葉(図1の場合10、11あるいは15)により置換される。他の状況では、前記の最後から2番目のコマンドは、挿入を参照しないか、あるいはステージn−1の上流にその場所を見いだすデータ要素の挿入を参照するかして、その結果葉9はレジスタ30に維持され、次のコマンドのためにフィールドG1に再び指定される。
【0064】
実際には、番号n’は常にバイナリーツリーのステージの番号n未満となるであろう。このソーティング装置の実施形態が各時刻においてバイナリーツリーが少なくともn’個の空きの葉を有することを意味するとすれば、装置がソートできるデータ要素の最大数は、先に説明した装置と比較して常に2n’以下の数だけ少なく、その結果、ステージの数があまり少なくない場合には装置のソーティング容量は大きな影響を受けない。もし、例えば装置がn’=4においてn=12のステージを有するならば、装置は差分カウンタが使用される場合には最大N=4095の要素までソートでき、空きの葉のリストが使用される場合には最大N=4088の要素をソートできる、これらの2つのNの値の相違は重要ではない。
【0065】
図4で補われるべき図12および図13は、図4から図6に類似のフローチャートを示す(同様な段階を示すために同じ参照番号が使われている)、コマンドの処理の間に図9に示す型式のコントローラ2lqにより実行される動作を詳述する、ここで、q<n−1である。
【0066】
図4、5および6のフローチャートと比較して、図12、13および6のフローチャートは差分カウンタを参照するすべての動作を削除することにより単純化されている。挿入コマンドの処理において実行される段階105および117において、親ノードDqあるいはDq+1の識別情報だけよりもむしろ葉指定フィールドGqあるいはGq+1の全体が、インタフェース・レジスタ26qあるいは26q+1から読み取られるか、あるいはインタフェース・レジスタ26qあるいは26q+1に書き込まれる。前述の例と比較して、コントローラ構造の単純化およびメモリスペースの縮少がそれぞれ別に到達できた。
【0067】
図6で補われるべき図14および図15は、ツリーのステージn−1に関係する最後のコントローラにより実行される動作を詳述する。時刻βn-1とαn-1との間に実行される段階150、151あるいは152は、レジスタ261の葉指定フィールドへの、図10に示すシフト・レジスタ30の内容に対応する空きの葉のリストの中の順位i(O≦i<n’)の葉の数のn−1個の最下位ビットG1=T(i)の書き込みに対応する。最後のステージn−1に関してのコマンドの各々の処理は、段階153においてカウンタiの増加、モジュロn’、によりレジスタ30におけるシフト動作に対応するこれを例外なく終了させる。
【0068】
コントローラ21n-1はまた空きの葉の第2のリストを保持し、それを例えば後入れ先出し(LIFO)モードで管理する。この第2のリストの第1の葉は、最後のコントローラのレジスタあるいはそのメモリ領域20n-1に蓄積されているn−1ビットを有するポインタPにより指定されている。この第1の葉の数のバイナリー法表示は1Pである。第2のリストの各々の葉はソートキーが無限大であるデータ要素を含み、関連するリファレンスに対応しているメモリの部分は、例えば第2のリストの中の次の葉のn−1ビットの上の指定に等しい継続ポインタを蓄積するために使用される(もし1ビットが無限大のキーを識別するために予約されれば、キーに対応する部分もさらに使用できる)。
【0069】
挿入コマンドがインタフェース・レジスタ26n-1の最後のステージのコントローラに到達すると(An-1=01)、Gn-1により指定された空きの葉は新しいデータ要素を含むように満たされねばならない。したがって、図12および図13のフローチャートの段階110から117は不要である。読み取り段階105に段階155が続き、段階155においてコントローラ21n-1は、第2のリストの第1の空きの葉に含まれる要素のリファレンスに対応するメモリ部分に含まれる継続ポインタR(lP)を変数hから読み取る(段階155)。次の段階156において、コントローラ26n-1は空きの葉の2つのリストを更新する。それはGn-1により指定された空きの葉を第1のリストから除去し、領域T(i)において、第2のリストの第1の葉のポインタPで、それを置換する。次にそれはこの値Pを段階155において読み取ったポインタの値に置換する。プロセッサ21n-1は前述の段階150へ次に図6の段階119から126へ、また段階153へ行くことにより挿入コマンドの処理を終了する。
【0070】
交換コマンド(An-1=11)を処理するために、最後のステージのコントローラはまずに先に論じた段階130から136を実行する。段階137は必要ではなく、前述の段階151により置換される。もしステージn−2から引き換えに提示されたソートキーk=Bn-1が処理された葉(比較138の間v’=11)から読み取ったそのK(lst)よりも大きければ、このキーkは段階139において無限大と比較される。もしこのキーkが有限であるなら、交換コマンドの処理は図6の段階119から126を経てまた段階153を経て終了する。他の状況では、コマンドは直接の抽出を示し、以前占有した葉を解放する。段階157において、この葉は無限大のソートキーおよび参照として第2のリストの第1の葉のポインタの値Pをそこに書き込むことにより更新される。対応するステアリングビットF(ls)は段階131において読み取られた値を補足する値を受信する。最終の段階153に移る前に、コントローラ26n-1は段階158において第2のリストの第1の葉のポインタPを解放された葉のバイナリー法の指定stに更新することにより抽出コマンドの処理を終了する。
【0071】
図9から図15による装置の初期化に際して、空きの葉の2つのリストは例えば次のように初期化される:T(i)=i、ベース2に対して、O≦i<n’に対して;P=n’、ベース2に対して;またR(li)=i+l、ベース2に対して、n’≦i<2n−1。
【0072】
図10、図14および図15に示す典型的な具体化例において、最後のコントローラ21n-1はシフトレジスタ30およびLIFOスタックにより「第一のリスト」および「第二のリスト」を保持する。同様の複雑さを持った他の論理構成を採用しうることは指摘されるであろう。例えば、コントローラ21n-1は、空きの葉の数を含む先入れ先出し(FIFO)モードで管理される論理待ち行列を保持でき、一方このFIFO待ち行列が常に少なくともn’個の空きの葉を含むことが保証される。このような条件の下で、「第一のリスト」は待ち行列の最後のn’個のロケーションと、待ち行列の前のロケーションの「第二のリスト」から成る。
【0073】
上述したソーティング装置において、キーがそれによってソートされる、すなわち段階111、122、123および133において互いに比較される。順序関係は、自然数の昇順に対応する。簡単な論理回路によって比較が容易にできる任意の順序関係が、このような装置において要素をソートするために使用できることが理解されるであろう。
【0074】
もし、例えば各ソートキーK(i)が、その時点においてデータ要素のために対応するリファレンスR(i)を取り出すように要求される未来の時刻を規定する時間タグであるなら、ソーティング装置は手順の時間的順序付けを制御するタイムアウト装置として動作することができる。ツリーの根に位置する要素のキーは、もし現在の時刻が到達されていれば、この要素を交換するか、あるいは抽出するように、次に現在の時刻と比較される。
【0075】
もしこの応用例において、時間の値が0から2L−1まで変動するサイクリック・カウンタによってLビットにコード化されれば、2個のLビットキーkとk’の間の順序関係は、0≦(k’−k)(mod2L)<2L−1の場合にのみ、k≦k’でありうる。言い換えれば、例えば段階122において、Lビットについて差分k’−kを計算し(すなわち最高位のキャリーを無視し)、この差分の順序2L−1のビットが0(k≦k’)あるいは1(k>k’)であるか否かを調べれば十分である。したがって、2L−l以上現在の時刻より早いか、あるいは2L-1−1以上現在の時刻よりも遅れている時刻をどのキーも指定しなければ、キーの入力順は満足され、これは十分に大きな数Lを選択すればこれは容易に満たされる条件である。
【0076】
上述したソーティング装置の応用例をATMセルスペーサについて説明する。
【0077】
図16のスペーサにおいて、ポリシング機能は、現在時刻と各着信セルが関係する接続の識別情報IdCxに基づいてモジュール40により実行される。各セルに対して再帰的に計算された理論的送出時間TETは、このモジュール40によりこのセルが関係する接続と組み合わされたスペーシング間隔Tと共にスペーシングコントローラ41に転送される。この情報と接続識別情報IdCxに基づきスペーシングコントローラ41は着信セルが書き込まれ発信セルが読み取られるセルメモリ42の管理を監視し、さらにポインタメモリ43とソーティング装置44を管理する。
【0078】
NCXはIdCx=lからIdCx=NCXまでスペーサが処理できる番号が付された仮想接続の数を表示し、またNCEはメモリ42が前もって規定されたロケーションCh_cell(l)からCh_cell(NCE)に収容できるセルの数を表示する。
【0079】
ここに示す代表的な実施形態において、セルメモリ42およびポインタメモリ43は2つの別のメモリモジュールから成り、その第1のメモリモジュールはコントローラ41の制御の下にユニット46により管理される。しかしながら、他の実施形態が可能であることは理解されるであろう。特に、メモリ42および43はコントローラ41によりアクセスが命令される単一のメモリモジュールで実現できるであろう。上に述べたように、例えば2メガバイトのRAMメモリモジュールが、セルメモリを管理するに必要なポインタと共に、NCX=4096の異なる仮想接続に関する最大NCE=32,000セルまでの蓄積を可能とする。
【0080】
図17はセル−クロック信号CKCを示し、それに基づいてスペーサのシーケンサ47は必要なクロック信号をモジュール40、スペーシングコントローラ41、ソーティング装置44およびセルメモリのマネージャ46に供給する(図1)6。このクロック信号の周期は155Mbit/sリンクの場合に2.7μsである。この信号CKCの各周期に、スペーサはメモリ42に書き込まれたセルを受信し(図17の第3行)、メモリ42から読み込んだセルを送出する(図13の第4行)ことができなくてはならない。図17に示す代表的な刻時において、各セル期間は同様の持続時間を持った2つの連続したフェーズに分割され、第1のフェーズは着信セルの受信のためであり、第2のフェーズは発信セルの送出のためである。
【0081】
各セル期間の第1フェーズにおいて、スペーシングコントローラ41はマネージャ46にセルメモリ42の中のスタートアドレスaを供給する、そこからスタートして、このマネージャは着信セルの53バイトの書き込みを命令する。第2フェーズにおいて、コントローラ41により供給されたスタートアドレスaは、発信セルを転送するために、マネージャ46に、メモリ42のアドレスaから始まる蓄積された53バイトの読み出しを命令できるようにする。この説明のために、アドレスaは、セルが書き込まれる、あるいはセルが読み出されるメモリ42(1≦a≦NCE)のロケーションCh_cell(a)の数に対応すると見なされ、また規約により、a=Oは関連するフェーズ中はメモリ42に対するアクセスを命令してはならないとマネージャ46に通知する(セル期間内は、着信セル、あるいは送出されるセルを禁止)。
【0082】
セルメモリ42は、セルを含む各仮想接続に対して、これらのセルが先入れ先出し(FIFO)モードで配列されるロケーションのリストを含むように構成される。これらのリストはポインタメモリ43によりコントローラ41によって管理される。
【0083】
メモリ43のポインタはそれぞれロケーションCh_cell(l)からCh_cell(NCE)と組み合わされた、フリーロケーション・ポインタPtr_free、1≦IdCx≦NCXに対してNCXリスト開始ポインタPtr_start(IdCx)、1≦IdCx≦NCXに対してNCXリスト終端ポインタPtr_end(IdCx)、および1≦i≦NCEに対してNCE継続ポインタPtr_cont(i)、を有する。メモリ42が所定の時刻においてセルを含んでいない仮想接続の各識別情報IdCxは、この時刻に零にそのリスト終端ポインタPtr_end(IdCx)を有し、空白のリストを示す(これは図16に示す例でIdCx=2の場合である)。他の状況では、接続IdCxにより最も以前に受信したセルを蓄積したロケーションCh_cell(i)の数iはリスト開始ポインタPtr_start(IdCx)と等しく、接続IdCxにより最も最近受信したセルを蓄積したロケーションの数はリスト終端ポインタPtr_end(IdCx)と等しい。接続IdCxに関するFIFOリストは継続ポインタにより連鎖される。リストの終わりではないロケーションCh_cell(i)と組み合わされた継続ポインタPtr_cont(i)は、そのリストでそれに続くロケーションCh_cell(Ptr_cont(i))を指定する。もしロケーションCh_cell(i)がリストの終わりであれば、Ptr_cont(i)=Oにセットされる。図16の例において、IdCx=lと関連するリストはCh_cell(NCE−1)、Ch_cell(l)およびCh_cell(3)であり、またIdCx=NCXと関連するリストはロケーションCh_cell(6)に縮小する。送出されるセルにより占有されていないメモリ42のロケーションは空きロケーションのLIFOリストを形成し、第1のロケーションはポインタPtr_freeにより指定され、後続のロケーションは連続した継続ポインタにより指定される。図16の例において、空きロケーションのリストは出力順にCh_cell(5)、Ch_cell(NCE)およびCh_cell(2)である。
【0084】
図16のスペーサの分類ツリーの根は、ステージ0と組み合わされたコントローラ210の処理動作を実行するスペーシングコントローラ41によりアクセスできる(図2から図15)。ツリーの根に位置するデータ要素K(1)、R(1)は、図に示すようにポインタメモリ43に、あるいはコントローラ41の特殊レジスタに蓄積することができる。コントローラ41はインタフェース・レジスタ261によりソーティング装置44のステージ1からn−1とコマンドおよびパラメータを交換する。この例においてインタフェース・レジスタ261は図9を参照して説明されたものに一致している。
【0085】
ソーティング装置44に供給される各データ要素は、ソートキーK(i)に関して、リスト開始を構成するメモリ42のロケーションに蓄積されたセルの理論的送出時間から成り、またリファレンスR(i)に関して、このセルが関係する仮想接続の識別情報IdCxから成る。キーK(i)はしたがって、既に説明したように、Lビットのサイクリック・カウンタにより規定できる時間タグである。無限大のキーを区別するために1ビットをプラスした、例えばL=16ビットのカウンタが、ATMスペーサへの応用に適している。リファレンスR(i)はNCX=4096の接続に対して12ビットでよい。
【0086】
もしスペーサが実スペーサであれば、コントローラ41はツリーの根にあるキーK(1)を現在の時刻taと比較し、もしK(l)≦taであれば、マネージャ46にa=Ptr_start(R(l))を供給し、その結果リストのスタートに位置するセルの中で最小の理論的送出時間を有するセルが送出される。仮想スペーサの場合には、コントローラ41は同じように動作するが、現在の時刻との比較はしない。K(l)<∞になり次第各周期にセルが送出される。
【0087】
そのロケーションリストが空である(Ptr_end(IdCx)=O)接続IdCxに関連するセルが到着すると、このセルはロケーションCh_cell(Ptr_free)に蓄積され、フリーロケーションのリストは更新され、またコントローラ41は、リファレンスがこのIdCxに対応し、ソートキーがこのセルに対してモジュール40により計算されたTETであるデータ要素の分類ツリーの中に挿入を命令する。
【0088】
ロケーションのリストが空ではない接続IdCxに関するセルの到着は、分類ツリーの内容を修正せず、ロケーションCh_cell(Ptr_free)での蓄積と、また空きロケーションのリストと接続IdCxと組み合わされたリストの更新のみを要求する。
【0089】
ロケーションのリストがこの1つのセルを含む接続IdCxに関するセルの送出は分類ツリーの対応する要素の直接的抽出を必要とし、それは無限大のキーを有する要素の交換に相当する。
【0090】
ロケーションのリストがこのセルの後に1つ以上のセルを含む接続IdCxに関するセルの送出は、ツリーの対応する要素と、リファレンスがこのIdCxに対応し、ソートキーがリストの第2の位置、すなわちロケーションCh_cell(Ptr_cont(Ptr_start(IdCx)))に蓄積されたセルに割り当てられた理論的送出時間である新しい要素との交換を必要とする。
【0091】
この後の場合において、新しい要素のキーを形成する理論的送出時間は、リストの新しい開始に蓄積されたセルに関してモジュール40により供給されたものであり得る。したがって、セルが到着する時にモジュール40により供給されたTET時間を蓄積することは有益である。しかしながら、コントローラ41がソーティング装置44に新しいデータ要素を供給する時に、セルに対して理論的送出時間を再計算することが望ましい。
【0092】
この目的のために、メモリ43は、さまざまな仮想接続IdCxに割り当てられたスペーシング間隔Tの値TT(IdCx)が蓄積された配列を含み、その値をコントローラ41は当該接続によってセルが到着する時モジュール40から受信する。K(l)≦taである時、実スペーサはCh_cell(Ptr_start(R(l)))に蓄積されたセルを送出し、分類ツリーの根に位置する要素K(l)、R(l)を新しい要素K(l)+TT(R(l))、R(l)と交換することを命令する。言い換えれば、リストの新しい開始に蓄積されたセルの理論的送出時間は、送出されたセルの理論的送出時間に当該接続に割り当てられた時間間隔TT(IdCx)を加えたものに等しいとされる。
【0093】
この手順は2つの利点を有する。第1は、もしモジュール40が、接続IdCxに関する2つの連続したセルに、そのそれぞれの到着時刻によってTT(IdCx)よりいっそう離れている理論的送出時間TETを割り当てるならば、また第1のセルが送出された時に、もしこれらの2つのセルの第2のセルがすでにメモリ42に書き込まれていれば、第2のセルの理論的送出時間はモジュール40により計算された理論的送出時間に対して進めることができ、その接続の後続のセルの理論的送出時間も所要のスペーシング特性を阻害せずに進めることができる。これは若干のセルの不要な遅延を回避する。
【0094】
第2の利点は、ある接続に割り当てられたスペーシング間隔を動的に、かつただちに修正できることである。リンクの渋滞が輻輳の危険を生ずる時、この柔軟性は若干の仮想接続に対して例えばスペーシング間隔を増やすことができる。このスペーシング間隔の増加は、メモリ42に含まれるこの接続セルに関する点を含みただちに効力を発し、したがってセルは最初に計算されたTETにしたがっては送出されないであろう。かくして予防的方策の適用による避けられない輻輳へ導く可能性がある遅延は回避される。当然、接続に対してスペーシング間隔を増やす許可はこの接続が確立される時に、同一のCDV許容誤差および情報源の同一挙動に対してセルがポリシング機能により廃棄される確率が増加することを仮定して、情報源(利用者)と合意に達しなければならない。
【0095】
図18は、各セル期間の第1フェーズにおいて図17の第2行に示す時間間隔200の間にコントローラ41により実行される動作を示す。
【0096】
第1の段階201は、着信セルが問題のセル期間内にスペーサに到達するか否かを決定し、もし妥当であるならば、このセルが関連する接続の識別情報IdCxを、理論的送出時間TETおよびモジュール40によりこのセルに供給されたスペーシング間隔Tと共に確認することから成る。
【0097】
もし着信セルが受信されなければ、アドレスa=0が段階202においてセルメモリのマネージャ46に供給され、その後、段階203において、コントローラ41はバイナリーツリーコマンド(A1=00)の内容の修正の無いことをインタフェース・レジスタ261に書き込む。
【0098】
もし着信セルが存在していれば、段階204においてフリーロケーション・ポインタPtr_freeがポインタメモリ43から読み出され、アドレスaに割り当てられ、段階202においてマネージャ46に供給される。もしa=O(受信セル無し、あるいはメモリ42に多数の空きロケーションが存在する)ならば、マネージャ46は現在のセル期間中はメモリ42に書き込まず、スペーシングコントローラ41は前述の段階203を実行し、その結果バイナリーツリーの内容は変化しない。他の状況では、コントローラ41はポインタ読み込み段階205に進む。
【0099】
段階205において、フリーロケーションのリストの第2のロケーションの数Ptr_cont(a)、接続IdCxに関するリストの開始の数Ptr_start(IdCx)およびこのリストのポインタPtr_end(IdCx)はそれぞれ変数b、cおよびdに割り当てられる。段階206において、スペーシング間隔の配列TTは接続IdCxに対してモジュール40から受信した値Tにより更新され、接続IdCxに関するロケーションのリストの終わりに対するポインタとしてアドレスaがメモリ43に書き込まれ、以後リストの終わりがあることを示すために、このロケーションと組み合わされた継続ポインタPtr_cont(a)は零にセットされ、フリーロケーション・ポインタPtr_freeは変数bと共に更新される。
【0100】
接続IdCxに関するロケーションのリストが空でなかったとすれば(すなわち比較207の間、d≠Oであれば)、先に説明したように分類ツリーの内容の修正は必要なく、その結果スペーシングコントローラ41は、前のリストの終わりと組み合わされた継続ポインタを段階208において古いフリーロケーション・ポインタと更新した後、前述の段階203を実行する。Ptr_cont(d)=a。
【0101】
もし比較207がd=Oを示せば、コントローラ41は段階209においてPtr_start(IdCx)=aを書き込むことによりリストポインタの更新を完了する。コントローラは次に新しいデータ要素TET、IdCxを分類ツリーの中へ挿入する。コントローラがそのために行う動作は、バイナリーツリーのステージ0のコントローラ260により行われた動作、すなわち図12、図13および図6のフローチャートの段階110から119に対応する。段階210において、コントローラ41は変数kおよびrにソートキーK(1)およびツリーの根において読み出したデータ要素のリファレンスR(1)を割り当て、その後にコントローラはキーkを段階201においてモジュール40から受信した理論的送出時間TETと比較する(比較211)。もしTET≧Kであれば、挿入コマンドは分類ツリーのステージ1に伝搬されなくてはならず、その結果、段階212において、コントローラ41がA1=01、B1=TETおよびC1=IdCxをパイプラインレジスタ261に書き込み、図16で示すように、レジスタ261の葉指定フィールドはソーティング装置44の最後のコントローラ21n-1から空きの葉G1の数を受信する。
【0102】
もし比較211がTET<Kを示せば、次に新しいデータ要素TET、IdCxは、ツリーの根に書き込まれる必要があり、これは段階216において実行される。これに先だって、もしツリーの根に先に位置されたソートキーkが無限大であれば(比較213)、コントローラ41は段階214においてリセットコマンドA1=10をパイプラインレジスタ261の中へ伝搬する。他の状況では、コントローラ41は先に段階215において根に位置された要素B1=k、C1=rのための挿入コマンド(A1=01)をレジスタ261に書き込む。
【0103】
コントローラ41のソーティング装置44との同期に関する限り、図18は、図7および図11の参照して関係する時刻と対応する時刻αoが、コントローラ41によるパイプラインレジスタ261への書き込みの段階203、212、214あるいは215の後に起きることを示す。この時刻αoから開始して、ステージ1のコントローラ211はコマンド(図17に示す時刻α’1)の処理を始めることができる。
【0104】
図19は、各セル期間の第2フェーズにおいて図17の第2行に示す時間間隔300の間にコントローラ41により実行される動作を示す。
【0105】
第1の段階301は、ソートキーK(l)およびツリーの根に位置するデータ要素のリファレンスR(l)の読み出しと、それらを変数kおよびrにそれぞれ割り当てることから成る。次の比較302は、セルを送出すべきか否かを決めるために動作する。実スペーサの場合には、この段階302はソートキーkを現在時刻taと比較することから成る。仮想スペーサの場合には、この段階302は単にキーkが有限であるか、無限大であるかを調べることから成る。もしk>taならば(実スペーサの場合)、バイナリーツリーコマンドA1=00の内容に修正の無いことをパイプラインレジスタ261に書き込むことを除いて(段階303)、コントローラ41はセル期間の第2フェーズにはなんら動作を行わない。
【0106】
もし段階302以降セルの送出が続くならば、接続rに関連するリスト開始におけるロケーションの数と、このロケーションと組み合わされた継続ポインタがメモリ43から読み出され、段階304において変数aとbにそれぞれ割り当てられる。アドレスaはその次に、段階305においてマネージャ46に供給され、その結果、マネージャはこのアドレスに蓄積されたセルを送出する(図17の第4行)。もしツリーの根に位置する要素で識別された接続r=R(l)に関するロケーションのリストが単一のセルのみを収容していたなら、変数bは0である。これは比較306により検出される。この場合に、リスト終端ポインタPtr_end(r)は段階307において、このリストがもうセルを含んでいないことを示すように零にセットされ、また段階308において、バイナリーツリーで交換されるべき新しい要素のソートキーを構成する無限大の値が理論的送出時間TETに割り当てられる。
【0107】
もし段階306においてb≠Oであれば、ロケーションのリストはいくつかのセルを含み、変数bはこのリストのスタートポインタとして段階309において書き込まれ、段階311において、ロケーションCh_cell(b)に蓄積されたセルは段階301で読み込まれたキーk=K(l)と等しい新しい理論的送出時間TETを受信し、このTETには段階310で読み取られた関連する接続のスペーシング間隔TT(r)と等しくされた変数Tが加えられる。ツリーの根に位置する要素K(l)、R(l)を新しい要素B1=TET、C1=rと交換するためのコマンド(A1=11)が、段階312において、パイプラインレジスタ261に書き込まれる。
【0108】
ソーティング装置44のコントローラ211がコマンドを処理し始めることができる時刻αoは、図19が示すように段階312(あるいは段階303)の後に位置される。スペーシングコントローラ41は、分類ツリーのステージ1から返送された要素をレジスタ261の中に取り込む前に、時刻β’0≧β1(図17参照)まで待たなくてはならない。図17に示す例において、コントローラ41はインターバル〔α0、β’0〕においてフリーロケーションのリストを更新し、段階313においてコントローラ41はフリーロケーション・ポインタPtr_freeを読み取り、変数cにそれを割り当て、次に段階314において、コントローラはPtr_cont(a)=cおよびPtr_free=aをメモリ43に書き込む。
【0109】
ツリーのステージ1のコントローラが最小のキーを有する要素をレジスタ261に一旦返送すると、この要素は段階315においてコントローラ41により読み出され、次に段階316においてツリーの根に書き込まれる。
【0110】
図20は仮想接続に割り当てられた優先権インデックスを考慮に入れることができるATMセルスペーサの変形例を示す。1とUの間の値をとると考えられるこの優先権インデックスはuと示される。図20のスペーサは、それぞれそのステージ0とそのステージ1の間にパイプラインレジスタ261 (u)を有する、U個のソーティング装置44(u)を有する。各ソーティング装置44(u)の動作は先に説明したものと同じである。各バイナリーツリーの根はポインタメモリ43に含まれており(その内容の残りは図20には表示されない)、スペーシングコントローラ41により管理されると考えられる。セルメモリ42およびそのマネージャー46の動作は、コントローラ41により供給されたアドレスaにおけるセルの書き込みと読み出しの点で前述したものと同じである。
【0111】
各ソーティング装置44(u)は、リファレンスR(u)(i)が同じ優先権インデックスuを有する仮想接続IdCxの識別情報を指定するデータ要素を処理する。これらの要素の中から、装置44(u)はその根において(表示の例ではメモリ43の中で)、そのキーK(u)(1)が最小である要素を選択する。したがって、最小のソートキーを示すツリーの根に位置するデータ要素のそれの中で、識別された接続に関連するリストの開始に含まれているセルの送出を命令するように、スペーシングコントローラは工夫されている。いくつかの最小ソートキーK(u)(1)が等しい場合、スペーシングコントローラ41は同順位の中で最大の優先権インデックスを有する接続を選ぶ。
【0112】
この優先権インデックスの管理方法は、スペーシングコントローラ41を大幅に複雑にするものではない。セルの受信の際に実行される動作に関する限り、図18のフローチャートは変わらず、段階210から216は接続識別情報IdCxと同時にコントローラ41により受信された優先権インデックスuに対応する分類ツリー44(u)に関して実行される。
【0113】
各セル期間の第2フェーズにおいて実行された動作に関する限り(図19)、ツリーの根に位置する要素を読み出し、この要素のキーを現在時刻と比較するための段階301、302が優先権インデックスの降順に連続して、インデックスuについては、現在時刻に到達したことを段階302が示すまで行される。この場合に、段階304から316は変更無しに実行され、レジスタ261 (u)への書き込み312と、レジスタ261 (u)からの読み出し315、および当該分類ツリーの根への書き込み316が実行される。
【0114】
図20の例において、U個のソーティング装置は別個である。これらのさまざまなソーティング装置が、その制御手段、すなわち、そのコントローラ2lqおよびそのパイプラインレジスタ26qを共有できることが指摘される。図21はU=2の特定の場合について、このような具体化例を示す。
【0115】
図21の実施形態において、U=2の分類ツリーはインタフェース・レジスタ26qとステージコントローラ21qを共有する。ただその記憶ステージ20q (1)、20q (2)(q≧O)のみが区別される。2つのステージ0はポインタメモリ43の中に含まれる。各ステージq≧lに対して、2つのツリーの対応するステージ20q (1)、20q (2)がコントローラ21qにより管理されるメモリの2つの別の領域により形成され、これらは例えば二値の優先権インデックスから成り、したがってパイプラインレジスタのフィールドDqの最高順位の命令ビットを形成している追加のアドレスビットに基づいて識別される
図22は、リンクのビット・レートがあまり高くない時(例えば155Mbit/sリンク)に使用できるスペーサの異なる実施形態の動作を示す。この変形例において、ソーティング装置は2つのコントローラを有し、一方はバイナリーツリーのステージ0からn−p−1と組み合わされた21o、n-pであり、他方はバイナリーツリーのステージn−pからn−1と組み合わされた21n-p、pである。このソーティング装置において、抽出あるいは交換コマンドは前述のようにステージ0からステージn−1へ伝搬され、一方挿入コマンドはステージn−1からステージ0に向かって伝搬される。したがって、空きの葉の識別Gqを受信するために、差分カウンタあるいはインタフェース・レジスタにロケーションを設けることは不要である。
【0116】
図22に示すように、各セル期間は、例えばセルメモリに任意のセルを書き込むフェーズとセルメモリから任意のセルを読み出すフェーズに対応する2つのフェーズIとIIに分けられる。第1のフェーズIの始めに、スペーシングコントローラは、要素を分類ツリーに挿入する理由およびこのツリーの要素を交換あるいは抽出する理由があるか否かを調べる。もし妥当であるなら、第1のコントローラ21o、n-pは次に、ステージ0からステージn−p−1まで交換コマンドの処理を開始し、第2のコントローラ21n-p、pはステージn−1からステージn−pまで挿入コマンドを伝搬することにより挿入コマンドの処理を開始する。どの葉から挿入コマンドを伝搬するべきか確認するために、コントローラ21n-p、pはステージn−1のすべての空きの葉を指定しているリストを保持し、その1つは挿入コマンドのスタート点として機能するために(例えばLIFO手順により)選択される。
【0117】
第2のフェーズIIにおいて、もし必要あれば、挿入コマンドはステージn−p−1からステージ0までコントローラ21o、n-pによって伝搬され、一方必要ならば、コントローラ21n-p、pは交換コマンドをステージn−pからステージn−1へ伝搬する。
【0118】
インタフェース・レジスタ26n-pは、次に分類ツリーの2つのコントローラの間のパイプラインレジスタとして機能する。フェーズIおよびフェーズIIの間での2つのコントローラ間でのパラメータのいかなる交換も、例えば、このパイプラインレジスタを2つに(1つのレジスタを上向きの方向に、また、1つのレジスタを下向きの方向に)分割することにより可能であり、あるいはパラメータを一方向に交換し、引き続き他の方向に交換することにより可能である。
【0119】
図22に示す実施形態は、例えば最大N=4096の仮想接続までサポートする155Mbit/sリンクの場合に使用できる。したがって、分類ツリーの大きさはn=12およびp=8に決めることができ、ステージ0から3を監視する第1のコントローラ21o、n-pはセルポインタを管理するスペーシングコントローラとおそらく統合可能である。
【図面の簡単な説明】
【図1】バイナリー分類ツリーの図である。
【図2】本発明の有用なソーティング装置の概略図である。
【図3】図2の装置の各コントローラの環境を示す概略図である。
【図4】図3のコントローラの動作を示すフローチャートである。
【図5】図3のコントローラの動作を示すフローチャートである。
【図6】図3のコントローラの動作を示すフローチャートである。
【図7】ソーティング装置の動作のタイミング図である。
【図8】図3に類似し、コントローラの環境の点で可能性のある変形例を示す図である。
【図9】図3に類似し、コントローラの環境の点で可能性のある変形例を示す図である。
【図10】図9によるソーティング装置で用いられるシフト・レジスタを示す図である。
【図11】ソーティング装置の単純化されたタイミング図である。
【図12】図9のコントローラの動作を示すフローチャートである。
【図13】図9のコントローラの動作を示すフローチャートである。
【図14】バイナリーツリーの最後のステージの特定の場合における図12、図13および図6のフローチャートに対応するフローチャートである。
【図15】バイナリーツリーの最後のステージの特定の場合における図12、図13および図6のフローチャートに対応するフローチャートである。
【図16】本発明を実現するATMセルスペーサの全体図である。
【図17】図16のスペーサの動作のタイミング図である。
【図18】ATMセルの受信および送出の際に図16のスペーサのコントローラにより実行される動作を示すフローチャートである。
【図19】ATMセルの受信および送出の際に図16のスペーサのコントローラにより実行される動作を示すフローチャートである。
【図20】本発明を実行するATMスペーサの変形例部分図である。
【図21】本発明を実行するATMスペーサの変形例部分図である。
【図22】図17のタイミング図に相当し、スペーサの変形例を参照するタイミング図である。
【符号の説明】
1〜15 ノード
200〜203 メモリモジュール
211〜213 コントローラ
220〜223 バス
23 ロケーション
25 ロケーション
260〜263 インタフェース レジスタ
30 シフトレジスタ
40 モジュール
41 スペーシングゴントローラ
42 メモリ
43 メモリ
44 ソーティング装置
46 マネージャー
100〜126、130〜145、152〜158 段階
201〜216、301〜316 イテプ

Claims (17)

  1. それぞれデータ要素を含むことが可能であり、0からn−1まで番号を付けられたn個の連続したステージに分配され、ステージqはノード2qから2q+1−1を有する、1から2n−1まで番号を付けられた2n−1個のノードを有するバイナリツリーにしたがって構成された記憶手段と、1から2n1−1の間の各整数iに対して、ノードiが分類されるべき要素を含み、ノード2iおよび2i+1のそれぞれは分類されるべき要素を含まないか、あるいは決められた順序関係の向きにソートキーがノードiに含まれている要素のソートキーよりも大きいかまたはそれに等しい要素を含むように、順序付けの条件を満足するように、ツリーの中でソートされる要素を分散させるためのバイナリツリーの制御手段を有し、
    前記制御手段はソートされる新しい要素を挿入するためのコマンドを含むバイナリツリーの内容を修正するコマンドに応答する、それぞれ個々のソートキーを有するデータ要素をソーティングする装置において、
    前記制御手段が、それぞれステージ(20q)あるいはバイナリツリーの複数の連続したステージと組み合わされた、mが2からnの間の整数であるm個の連続したコントローラ(21q)と、連続したステージ間のn−1個のインタフェース・レジスタ(26q)を有し、前記(n−1)個のインタフェース・レジスタの中で異なるコントローラと組み合わされたステージ対の間のm−1個のインタフェース・レジスタの各々がパイプラインレジスタを構成し、バイナリツリーの内容を修正するための各コマンドはステージ0からステージn−1へ前記インタフェース・レジスタにより伝搬され、前記パイプラインレジスタは前記コントローラの並行動作を許容することを特徴とする、データ要素のソーティング装置。
  2. 1からn−1の間の各整数qに対して、ステージq−1とステージqの間の前記インタフェース・レジスタ(26q)が、ステージq−1のノードからステージqのノードへ伝搬されるコマンド(Aq)を受信するための第1のロケーションと、組合されたコントローラ(21q1)が前記コマンドの処理の間にアクセスするステージq−1の前記ノードの識別情報(Dq)を受信するための第2のロケーションと、ステージq−1の前記ノードから送信されたか、あるいはステージq−1の前記ノードへ送信されるデータ要素(Bq、Cq)を受信するための第3のロケーションとを有する請求項1に記載の装置。
  3. 1からn−1の間の各整数qに対して、ステージq−1とステージqの間の前記インタフェース・レジスタ(26q)が、第2のロケーションに含まれる識別情報(Dq)により、もし前記コマンドがツリーの中への新しい要素の挿入に関するものならば、前記コマンドが伝搬され、また対応するコントローラ(21q)が第1のロケーションに含まれるコマンド(Aq)の処理の間にアクセスするステージqのノードを指定するビット(Eq)を受信するための第4のロケーションを有する請求項2に記載の装置。
  4. 1からn−1の間の各整数qに対して、ステージq−1とステージqの間の前記インタフェース・レジスタ(26q)の第2および第4のロケーションが、新しい要素を挿入するためのコマンドの伝搬の間に、空きの葉の数のn−1個の最下位ビットを含むn−1ビットの葉指定フィールド、すなわち、前記コマンドが伝搬される、ステージn−1の空きのノードの一部を形成し、前記コマンドが伝搬されるステージqのノードは葉指定フィールドの内容のq個の最高位のビットにより指定される請求項3に記載の装置。
  5. ツリーのステージn−1と組み合わされたコントローラ(21n1)が、各葉に向かって新しい要素を挿入するためのコマンドが現在ツリーの中で伝搬されつつある各々の葉を含む指定されたn'空きの葉を含む空きの葉の第1のリストと、第1のリストに含まれていない空きの葉を含む空きの葉の第2のリストを管理し、
    ステージ0と1の間のインタフェース・レジスタの第1のロケーションにソートされる新しい要素を挿入するためのコマンドを登録する間に、各々の葉と異なりそれに向かってツリーの中で他の挿入コマンドが現在伝搬されつつある、第1のリストの空きの葉の数のn−1個の最下位ビットがステージ0と1の間のインタフェース・レジスタの葉指定フィールドの中に登録され、
    ツリーの葉からの要素の抽出の間、前記葉は空きの葉の第2のリストに含まれ、
    新しい要素を挿入するためのコマンドがステージn−2とn−1の間のインタフェース・レジスタ(26n1)の中のステージn−1に到達する、対応するコントローラ(21n1)が空きの葉の第1のリストから前記インタフェース・レジスタの葉指定フィールドのn−1個のビットにより指定された葉(Gn1)を除去し、それを第2のリストからの葉(P)に置換する請求項4に記載の装置。
  6. n'<nである請求項5に記載の装置。
  7. 空きの葉の第1のリストが、それぞれが葉の数のn−1個の最下位ビットを受信するn'個のロケーションを有するそれ自身ループバックされるシフト・レジスタ(30)に記憶される請求項5または6に記載の装置。
  8. 空きの葉の第2のリストが後入れ先出し形式でポインタの連鎖の形で格納され、各ポインタは葉の数を表し、前記連鎖の第1のポインタ(P)は特定のロケーションに格納され、前記連鎖のi番目のポインタ(i≧2)は番号が連鎖のi−1番目のポインタで表される葉に格納されている請求項5、6、7のいずれか1項に記載の装置。
  9. 第1および第2のリストは少なくともn'個のロケーションを有する先入れ先出し形式の論理待ち行列の形式で格納され、第1のリストは、論理待ち行列の最後のn'個のロケーションからなり、第2のリストは論理待ち行列の先行するロケーションから成る請求項5または6に記載の装置。
  10. pはm番目のコントローラと組み合わされているバイナリツリーのステージの数であって1以上n−1未満であり、前記記憶手段がiが1から2np1−1の範囲であるツリーのノード2iと2i+1の対とそれぞれ組み合わされた差分カウンタ(Δ(i))を含むための少なくとも2np1−1個のロケーション(25)を有し、一対のノードと組み合わされた各差分カウンタが前記対の2つのノードの子孫にそれぞれ含まれる、データ要素の数の間の差を示す値を有し、ステージqのノードiの子孫がバイナリツリーの2nq−1個のノードと規定されており、その数はi2j+j'(jおよびj'は0≦j<n−qおよび0≦j'<2 j のような整数)の形であって、
    ステージq−1とステージq(1≦q<n−p)の間のインタフェース・レジスタ(26q)が、新しい要素をその第1のロケーションに、またステージq−1のノードiの識別情報(Dq)をその第2のロケーションに挿入するコマンド(Aq)を受信する、ノード2i i+1の対と組み合わされた差分カウンタ(Δ(i))の値に応じて前記挿入コマンドがステージqのノード2iあるいは2i+1に伝搬される請求項2または3に記載の装置。
  11. 1つのステージのノードの対と組み合わされた差分カウンタ(Δ(i))を含む記憶手段のロケーション(25)が、前記ステージのノードと同じコントローラによりアクセス可能である請求項10に記載の装置。
  12. 前記記憶手段は、iが1から2n1−1の範囲である、ツリーのノード2iと2i+1の対とそれぞれ組み合わされたステアリングビット(F(i))を含むための2n1−1個のロケーション(23)を有し、前記対のノードの1つを指向する一対のノードと組み合わされた各ステアリングビットが、ソートキーが前記対の他のノードに含まれる要素のソートキー以下である要素を含み、
    ステージq−1とステージq(1≦q≦n−1)の間のインタフェース・レジスタ(26q)が、その第1のロケーションにおいて要素を抽出あるいは交換するためのコマンド(Aq)を、またその第2のロケーションにおいてステージq−1のノードiの識別情報(Dq)を受信する、前記抽出あるいは交換コマンドが、ノード2i i+1の対と組み合わされたステアリングビット(F(i))の値に応じて、ステージqのノード2iあるいは2i+1に伝搬される請求項2から11のいずれか1項に記載の装置。
  13. 1つのステージのノードの対と組み合わされたステアリングビット(F(i))を含む記憶手段のロケーション(23)が、前記ステージのノードと同じコントローラによりアクセス可能である請求項12に記載の装置。
  14. 複数の仮想接続にしたがって送信されるATMセルのスペーサであって、着信セルが書き込まれ、発信セルが読み出されるセルメモリ(42)と、前記セルメモリに記憶された各セルに理論的送出時間(TET)を割り当てる手段(40、41)とを有する、ATMセルのスペーサにおいて、
    仮想接続がセルを収容している各仮想接続に対して、前記セルがリストの始めとリストの終わりの間で先入れ先出しモードで格納されるロケーションのリストをセルメモリが有するように関連するポインタメモリ(43)の助けにより、前記セルメモリ(42)を管理するスペーシング制御手段(41、46)と、
    仮想接続識別情報と、前記仮想接続に関するリストの始めに含まれているセルの理論的送出時間から成るソートキーを各々が有するデータ要素(K(i)、R(i))を順序づけ、最小のソートキーを有する少なくとも1つのデータ要素を選択するソーティング手段(41、44)をさらに有し、
    前記スペーシング制御手段は、前記ソーティング手段により選択されたデータ要素における識別された仮想接続に関するリストの始めに含まれたセルの送出を命令するするように構成され、前記ソーティング手段は、請求項1から13までのいずれか1項に記載のソーティング装置であって、ステージ0のそのノード1が前記選択された要素を含むソーティング装置を少なくとも1つ有する
    ことを特徴とするATMセルのスペーサ。
  15. セルメモリに記憶された各セルに理論的送出時間を割り当てる手段が、前記セルの到着時刻(ta)と前記接続に割り当てられたスペーシング間隔(T)とを少なくとも含むパラメータに基づいて、仮想接続に関連する各セルに対する理論的送出時間(TET)を回帰的に計算する手段(40)を有し、
    前記ソーティング手段(41、44)は、前記セルメモリ(42)がセルを含んでいない仮想接続に関連するセルが到着すると、前記仮想接続の識別情報を有する新しいデータ要素、およびソートキーとして、前記回帰的計算手段(40)によって供給された前記セルの理論的送出時間を受け取り、
    前記ソーティング手段は、少なくとも1つの第2のセルをさらに含むロケーションのリストを前記セルメモリが有する仮想接続に関連する第1のセルを送出すると、前記仮想接続の識別情報を有する新しいデータ要素、およびソートキーとして、前記第1のセルの理論的送出時間と前記接続に割り当てられたスペーシング間隔との和に等しい前記第2のセルの理論的送出時間を受け取る請求項14に記載のスペーサ。
  16. 優先権インデックス(u)が仮想接続に割り当てられ、前記ソーティング手段はそれぞれ同様の優先権インデックスの仮想接続の識別情報を有するデータ要素を処理し、またそれぞれそれが処理するデータ要素の中から最小のソートキー(K(u)(1))を有する要素を選択するいくつかの、請求項1から13までのいずれか1項に記載のソーティング装置(44(u))を有し、前記スペーシング制御手段は、最小のソートキーを示す選択されたデータ要素の1つに、あるいは、複数のソーティング装置がそれぞれそのソートキーが最小であるデータ要素を選択するならば、前記複数のソーティング装置により選択された優先権インデックスが最高であるデータ要素の1つにおける識別された接続に関連するリスト開始に含まれているセルの送出を命令するように構成されている請求項14または15に記載のスペーサ。
  17. 種々のソーティング装置の各々が、それぞれの記憶手段(20q (1)、20q (2)を有し、またその制御手段(21q、26q)を共有する請求項16に記載のスペーサ。
JP13058598A 1997-05-13 1998-05-13 バイナリツリーデータ要素ソーティング装置およびatmスペーサ Expired - Lifetime JP3905221B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9705828A FR2763410B1 (fr) 1997-05-13 1997-05-13 Dispositif de tri d'elements de donnees a arbre binaire et espaceur atm comportant un tel dispositif
FR97/05828 1997-05-13

Publications (2)

Publication Number Publication Date
JPH10336216A JPH10336216A (ja) 1998-12-18
JP3905221B2 true JP3905221B2 (ja) 2007-04-18

Family

ID=9506816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13058598A Expired - Lifetime JP3905221B2 (ja) 1997-05-13 1998-05-13 バイナリツリーデータ要素ソーティング装置およびatmスペーサ

Country Status (7)

Country Link
US (1) US6181678B1 (ja)
EP (1) EP0878758B1 (ja)
JP (1) JP3905221B2 (ja)
CA (1) CA2237276C (ja)
DE (1) DE69817672T2 (ja)
ES (1) ES2206862T3 (ja)
FR (1) FR2763410B1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6411957B1 (en) * 1999-06-30 2002-06-25 Arm Limited System and method of organizing nodes within a tree structure
JP2001060967A (ja) * 1999-08-23 2001-03-06 Fujitsu Ltd パケットスイッチ装置
JP2001147800A (ja) 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法
US7496572B2 (en) * 2003-07-11 2009-02-24 Bmc Software, Inc. Reorganizing database objects using variable length keys
US7412444B2 (en) * 2004-02-11 2008-08-12 Idx Systems Corporation Efficient indexing of hierarchical relational database records
JP4479908B2 (ja) * 2005-06-30 2010-06-09 富士通株式会社 データソート処理プログラム、データソート処理方法およびデータソート処理装置
GB0524845D0 (en) * 2005-12-06 2006-01-11 Univ Belfast Sorting apparatus and method
CN101521627B (zh) * 2009-04-13 2011-10-05 华为技术有限公司 插入节点的方法和装置
US9268863B2 (en) 2014-06-03 2016-02-23 International Business Machines Corporation Hierarchical in-memory sort engine
US10936283B2 (en) * 2017-11-30 2021-03-02 International Business Machines Corporation Buffer size optimization in a hierarchical structure
US11048475B2 (en) 2017-11-30 2021-06-29 International Business Machines Corporation Multi-cycle key compares for keys and records of variable length
US11354094B2 (en) 2017-11-30 2022-06-07 International Business Machines Corporation Hierarchical sort/merge structure using a request pipe
US10896022B2 (en) 2017-11-30 2021-01-19 International Business Machines Corporation Sorting using pipelined compare units

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4131947A (en) * 1976-08-06 1978-12-26 Armstrong Philip N Random access digital sorter
JP2736092B2 (ja) 1989-01-10 1998-04-02 株式会社東芝 バッファ装置
US5168567A (en) * 1989-05-30 1992-12-01 Tektronix, Inc. Data sorting circuit
FR2657482B1 (fr) 1990-01-19 1993-12-31 Boyer Pierre Methode et systeme de lissage et de controle de debits de communications temporelles asynchrones.
ATE122191T1 (de) 1991-02-01 1995-05-15 Siemens Ag Verfahren zur überwachung und glättung von datenströmen, die nach einem asynchronen übertragungsverfahren übertragen werden.
FR2674084B1 (fr) 1991-03-13 1993-12-24 Michel Servel Dispositif de declenchement de temporisations multiples.
DE4128411A1 (de) 1991-08-27 1993-03-04 Siemens Ag Anordnung zur bitratenueberwachung in atm-netzen
EP0529127B1 (de) 1991-08-27 1996-10-23 Siemens Aktiengesellschaft Anordnung zur Bitratenüberwachung in ATM-Netzen
EP0544034A1 (de) 1991-11-28 1993-06-02 Siemens Aktiengesellschaft Verfahren zur Wiederherstellung der Reihenfolge von Nachrichtenzellen
FR2686205B1 (fr) 1992-01-14 1994-03-25 Pierre Boyer Methode de controle de debit de cellules.
US5402426A (en) 1992-04-23 1995-03-28 Siemens Aktiengesellschaft Method and arrangement for checking the observance of prescribed transmission bit rates in an ATM switching equipment
DE59209493D1 (de) 1992-06-30 1998-10-15 Siemens Ag Modifiziertes Leaky-Bucket-Verfahren
US5668897A (en) * 1994-03-15 1997-09-16 Stolfo; Salvatore J. Method and apparatus for imaging, image processing and data compression merge/purge techniques for document image databases
US5748780A (en) * 1994-04-07 1998-05-05 Stolfo; Salvatore J. Method and apparatus for imaging, image processing and data compression
GB2288097B (en) 1994-03-23 1998-09-23 Roke Manor Research ATM queuing and scheduling apparatus
US5533020A (en) 1994-10-31 1996-07-02 International Business Machines Corporation ATM cell scheduler

Also Published As

Publication number Publication date
FR2763410B1 (fr) 1999-07-23
DE69817672T2 (de) 2004-07-08
FR2763410A1 (fr) 1998-11-20
US6181678B1 (en) 2001-01-30
JPH10336216A (ja) 1998-12-18
CA2237276C (en) 2007-01-09
DE69817672D1 (de) 2003-10-09
EP0878758B1 (fr) 2003-09-03
ES2206862T3 (es) 2004-05-16
CA2237276A1 (en) 1998-11-13
EP0878758A1 (fr) 1998-11-18

Similar Documents

Publication Publication Date Title
JP3905221B2 (ja) バイナリツリーデータ要素ソーティング装置およびatmスペーサ
US6128303A (en) Asynchronous transfer mode cell processing system with scoreboard scheduling
US5748631A (en) Asynchronous transfer mode cell processing system with multiple cell source multiplexing
EP0702500B1 (en) Method of multicasting and multicast system
US10740006B2 (en) System and method for enabling high read rates to data element lists
EP1062780B1 (en) Apparatus and method for providing different quality of service connections in a tunnel mode
JPH0856230A (ja) スイッチングシステム
US20030227933A1 (en) Prefetching techniques for network interfaces
US6654855B1 (en) Method and apparatus for improving the efficiency of cache memories using chained metrics
US20050125590A1 (en) PCI express switch
US5748630A (en) Asynchronous transfer mode cell processing system with load multiple instruction and memory write-back
US6728256B1 (en) Shared buffer control device
CN110795028A (zh) 针对网络装置实施阶层分布式链接列表的系统及方法
US9785367B2 (en) System and method for enabling high read rates to data element lists
JPH0779234A (ja) セル切替えシステムのノードのための再順序づけ装置
JPH09179743A (ja) エレメントをソートする方法および装置
JP3901840B2 (ja) Atmセルスペーサ
US6647477B2 (en) Transporting data transmission units of different sizes using segments of fixed sizes
US5794025A (en) Method and device for performing modulo-based arithmetic operations in an asynchronous transfer mode cell processing system
US5860148A (en) Asynchronous transfer mode cell processing system with cell buffer space gathering
JP3435244B2 (ja) 通信制御装置
JP2723318B2 (ja) バッファ装置及びatmセルスイッチ
JP3742348B2 (ja) セルシェーピング装置
JPH0832590A (ja) バッファメモリ読出し順序決定回路及び決定方法
JP2000332762A (ja) セル送出管理方法および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050513

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100119

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130119

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term