(57)【特許請求の範囲】
【請求項１】
バスを介して複数のネットワーク・プロセッサ（ＮＰ）に結合された制御点プロセッサ（ＣＰ）を有するネットワーク処理システムにおいてメモリを管理する方法であって、
前記ＣＰ内に制御点メモリ・マネジャを提供するステップと、
前記複数のＮＰの各々内にＮＰメモリ・マネジャを提供するステップと、
前記ＣＰ内のアプリケーションによるメモリ割り振りの要求に応答して、当該要求を前記ＣＰから前記バスを介して前記複数のＮＰに送信することにより、前記複数のＮＰのうち１つのＮＰ上におけるメモリ位置の割り振りを要求するステップと、
前記１つのＮＰ上に物理メモリを割り振り、前記物理メモリへの読み書きアクセスが前記アプリケーションに利用可能となるように、前記割り振りを表すトークンを前記１つのＮＰから前記制御点メモリ・マネジャに返すステップと
を含む方法。
【請求項２】
前記アプリケーションを前記制御点メモリ・マネジャに登録するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記制御点メモリ・マネジャによって参照テーブルを構築するステップをさらに含み、前記参照テーブルが前記登録されたアプリケーションを保持する、請求項２に記載の方法。
【請求項４】
前記複数のＮＰから応答を収集するステップと、
前記複数のＮＰの各々から応答の１つを受け取るまで、またはタイムアウトが起こるまで待機するステップと、
前記待機の終了に応答して、前記要求が全て完了したことを前記アプリケーションに通知するステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
前記通知するステップが、前記アプリケーション内のコールバック・ルーチンをコール・バックするコールバック機構によって行われる、請求項４に記載の方法。
【請求項６】
前記ＣＰから前記バスを介して前記ＮＰへの送信内に前記トークンを提供することにより、前記割り振りに対応する位置にデータ値を書き込むことを要求するステップと、
前記送信の受け取りに応答して、前記データ値を前記位置へ書き込むステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
前記ＣＰから前記バスを介して前記ＮＰへの送信内に前記トークンを提供することにより、前記割り振りに対応する位置からデータ値を読み取ることを要求するステップと、
前記送信の受け取りに応答して、前記位置から前記データ値を取り出し、前記バスを介して前記ＣＰに前記データ値を返すステップと
をさらに含む、請求項１に記載の方法。
【請求項８】
前記要求が、高速メモリの割り振りに対してプリファレンスを指定する値を含み、前記割り振るステップが、前記値に基づいて前記ＮＰ上に高速メモリを割り振る、請求項１に記載の方法。
【請求項９】
保留中の動作が完了するまで、前記割り振りに対するアクセスを拒絶するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
前記複数のＮＰからメモリ利用可能性情報を要求するステップをさらに含み、
前記要求が、メモリ速度のカテゴリを指定し、前記要求が、前記バスを介して前記複数のＮＰに送信され、
前記要求に応答して、前記複数のＮＰから前記バスを介して前記メモリ利用可能性情報を返すステップと
をさらに含む、請求項１に記載の方法。
【請求項１１】
制御点プロセッサ（ＣＰ）と、
バスを介して前記ＣＰに結合された複数のネットワーク・プロセッサ（ＮＰ）と、
前記ＣＰ内に配置された制御点メモリ・マネジャと、
前記複数のＮＰの各々内に配置されたＮＰメモリ・マネジャと、
前記ＣＰ内のアプリケーションによるメモリ割り振りの要求に応答して、当該要求を前記ＣＰから前記バスを介して前記複数のＮＰに送信することにより、前記複数のＮＰのうち１つのＮＰ上におけるメモリ位置の割り振りを要求する手段と、
前記１つのＮＰ上に物理メモリを割り振り、前記物理メモリへの読み書きアクセスが前記アプリケーションに利用可能となるように、前記割り振りを表すトークンを前記１つのＮＰから前記制御点メモリ・マネジャに返す手段と
を備えるネットワーク処理システム。
【請求項１２】
前記アプリケーションを前記制御点メモリ・マネジャに登録する手段をさらに含む、請求項１１に記載のネットワーク処理システム。
【請求項１３】
前記制御点メモリ・マネジャによって参照テーブルを構築する手段をさらに含み、前記参照テーブルが前記登録されたアプリケーションを保持する、請求項１２に記載のネットワーク処理システム。
【請求項１４】
前記複数のＮＰから応答を収集する手段と、
前記複数のＮＰの各々から応答の１つを受け取るまで、またはタイムアウトが起こるまで待機する手段と、
前記待機の終了に応答して、前記要求が全て完了したことを前記アプリケーションに通知する手段と
をさらに備える、請求項１１に記載のネットワーク処理システム。
【請求項１５】
前記通知が、前記アプリケーション内のコールバック・ルーチンをコール・バックする前記ＣＰ内のコールバック機構によって提供される、請求項１４に記載のネットワーク処理システム。
【請求項１６】
前記ＣＰから前記バスを介して前記ＮＰへの送信内に前記トークンを提供することにより、前記割り振りに対応する位置にデータ値を書き込むことを要求する手段と、
前記送信の受け取りに応答して、前記データ値を前記位置へ書き込む手段と
をさらに備える、請求項１１に記載のネットワーク処理システム。
【請求項１７】
前記ＣＰから前記バスを介して前記ＮＰへの送信内に前記トークンを提供することにより、前記割り振りに対応する位置からデータ値を読み取ることを要求する手段と、
前記送信の受け取りに応答して、前記位置から前記データ値を取り出し、前記バスを介して前記ＣＰに前記データ値を返す手段と
をさらに備える、請求項１１に記載のネットワーク処理システム。
【請求項１８】
前記要求が、高速メモリの割り振りに対してプリファレンスを指定する値を含み、前記割り振る手段が、前記値に基づいて前記ＮＰ上に高速メモリを割り振る、請求項１１に記載のネットワーク処理システム。
【請求項１９】
保留中の動作が完了するまで、前記割り振りに対するアクセスを拒絶する手段をさらに備える、請求項１１に記載のネットワーク処理システム。
【請求項２０】
前記複数のＮＰからメモリ利用可能性情報を要求する手段をさらに備え、
前記要求が、メモリ速度のカテゴリを指定し、前記要求が、前記バスを介して前記複数のＮＰに送信され、
前記要求に応答して、前記複数のＮＰから前記バスを介して前記メモリ利用可能性情報を返す手段をさらに備える、請求項１１に記載のネットワーク処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般にコンピュータ・ネットワークに関し、詳細には、ネットワーク・トラフィックを管理するためのネットワーク・プロセッサに関する。具体的には、本発明は制御点プロセッサとネットワーク・プロセッサの間のメモリ管理に関する。
【０００２】
【従来の技術】
コンピュータ・ネットワークは、複雑なネットワーク経路指定要件およびフィルタリング要件を処理するのにスイッチ・ルータでは不十分な所まで発展している。インターナショナル・ビジネス・マシーンズ（ＩＢＭ）・ネットワーク・プロセッサ（ＮＰ）などのネットワーク・プロセッサはこの必要性を満たすために開発されたものである。ＮＰは、ネットワーク・スイッチの接続に似た接続を利用して、ネットワーク・スイッチのそれを陵駕するレベルの制御および融通性を提供している。並列ルックアップ操作をフレーム上で行うことができ、パケットに対して複雑な変更を行うことができ、方針を複雑なレベルで管理することができる。複数のプロセッサを使って極めて高いフレーム処理スループットが達成される。
【０００３】
ネットワーク・プロセッサ上で動作するオペレーティング・システムのオーバヘッドが高くなることは望ましくない。高フレーム処理スループットの要件のため、ＮＰのサポート・タスクは最小限に下げる必要がある。しかし、データ構造、およびネットワーク・プロセッサを制御する制御命令のためにメモリを割り振る必要がある。さらに、ＮＰは、局所アプリケーションを、たとえばフレーム・フィルタリングおよびブロッキングを行う複雑なフィルタリング・アプリケーションを実行することができる。これらＮＰベースのアプリケーションでは、中央制御点と絶えず通信を必要としないメモリ割り振り方式が必要である。さらに、中央プロセッサ上で動作する中央制御点アプリケーションまたはオペレーティング・システムとＮＰ上で動作するデータ構造またはプログラムの間でのアドレス空間の直接マッピングが必要であるのは不利である。
【０００４】
【発明が解決しようとする課題】
したがって、メモリに対するアクセスが高処理オーバヘッドや制御点プロセッサと１つまたは複数のネットワーク・プロセッサの間でのアドレス空間の直接マッピングを必要とせずに達成できるようにネットワーク処理システムにおいてメモリを管理する方法およびシステムを提供することが望ましい。
【０００５】
【課題を解決するための手段】
直接メモリ・マッピングを必要とせずにネットワーク処理システムにおいてメモリを管理するという目的は、制御点プロセッサと複数のネットワーク・プロセッサ（ＮＰ）を含むネットワーク処理システムにおいてメモリを管理する方法およびシステムで達成される。制御点プロセッサ（ＣＰ）構成要素とネットワーク・プロセッサ構成要素を有する動的メモリ・マネジャが、ＣＰ構成要素からバスを介してＮＰ構成要素に要求を送信することにより、ＮＰ上でのメモリの割り振りをアプリケーションが要求できるようにアプリケーションを登録するために提供される。要求に応答して、ＮＰは物理メモリを割り振り、割り振りを表すトークンをＮＰ構成要素からＣＰ構成要素に返す。このトークンは、物理メモリに対する読み書きアクセスおよびその他のアクセスを提供するのに使用される。
【０００６】
【発明の実施の形態】
図面、殊に図１を参照すると、本発明の一実施形態によるネットワーク処理システムが示されている。パケット経路指定スイッチ１２が、一群のネットワーク・プロセッサＮＰ１４Ａ〜１４Ｃに接続されている。ＮＰ１４Ａ〜１４Ｃは１０Ｂａｓｅ−Ｔまたは１００Ｂａｓｅ−Ｔイーサネット接続１６Ａ〜１６Ｅあるいは当技術分野で知られている他のタイプの通信インタフェースなど様々なプロトコルを有するネットワークへの接続のための媒体インタフェースを提供する。したがって、ＮＰ１４Ａは、媒体インタフェースのいずれかで受け取ったフレームをパケット経路指定スイッチ１２のポート０に経路指定することができ、アドレス変換を実施し、品質サービス（ＱｏＳ）要求に応答し、パケットをブロックし、あるいは入来フレームに対して任意の複雑な経路指定機能またはフレーム処理機能を実施することができる。ＮＰ１４Ａはまた、出口インタフェースを介してパケット経路指定スイッチ１２のポート０からフレームを受け取り、同様の複雑な操作を実施して媒体インタフェースにフレームを経路指定することができる。制御メモリ１５は、経路指定機能およびフレーム処理を駆動する制御ソフトウェア、具体的には本発明のソフトウェア管理ツリー（ＳＭＴ）フレーム・クラシファイアのための記憶域を提供する。ルックアップＺＢＴ  ＳＲＡＭ１７は固定突き合わせツリー（ＦＭＴ）ハードウェアに支援される突き合わせツリーを格納するための高速アクセス・メモリを提供し、ＳＭＴまたはその一部分に高速の記憶域を提供するために使用できる。制御点中央処理ユニット（ＣＰＵ）１１は、ネットワーク・プロセッサの動作の管理ならびにアプリケーション、クラシファイア・ツリーおよびその他のデータのダウンロードを行う。ＣＰＵ１１はダウンロードのためにＳＭＴをコンパイルし作成する。ＳＭＴはＣＰＵ１１上で動作するアプリケーションによって構築され、ＮＰ１４Ａ〜１４Ｃに結合されたメモリにダウンロードされる。
【０００７】
ここで図２を参照すると、ＮＰ１４Ａの簡略化したブロック図が示されている。入口待ち行列化／待ち行列解除／スケジューリング論理（ＥＤＳ）２７は、スイッチ・ファブリック２２に経路指定されるフレームのフレーム・バッファリングおよび制御を管理する。フレームは入口物理ＭＡＣ（媒体アクセス制御）マルチプレクサ（ＰＭＭ）２８が媒体インタフェース接続から受け取り、プロトコル・プロセッサ２５によって変換され処理される。入口スイッチ・インタフェース２３はスイッチ・ファブリック２２への接続を提供し、他のＮＰまたはパケット経路指定スイッチ１２に接続することができる。出口スイッチ・インタフェース２４はスイッチ・ファブリック２２からフレーム・データを受け取り、フレーム・データは出口データ記憶域３１に格納される。プロトコル・プロセッサ２５はそれらのフレームを処理するためにクラシファイア検索を行い、出口ＰＭＭ２９を介してそれを経路指定することができる。
【０００８】
ここで図３を参照すると、本発明の好ましい実施形態によるＮＰ１４Ａの詳細ブロック図が示されている。フレーム・データ、クラシファイア・ツリーおよびアプリケーション・データと命令を格納するためのメモリ４３が、制御ストア・アービタ４２によってＮＰに結合され、コア処理ユニット４６が外部メモリおよび内部メモリへのアクセスを共用できるようになっている。各コア処理ユニット４６は対となるプロトコル処理ユニット（ＤＰＰＵ）４４Ａ〜４４Ｂおよびツリー検索エンジン４５を含む。命令メモリ４７はツリー検索エンジン４５（ＴＳＥ）を駆動するピココードを記憶するためコア処理ユニット４６に結合される。パワーＰＣ（Ｒ）プロセッサ・コア４１はネットワーク・プロセッサ・ユニット４０の管理を行う。ＴＳＥ４５に対する制御を提供するために、ソフトウェア管理ツリー・データおよび固定突き合わせツリー・データをメモリ４３にダウンロードすることができる。ツリーのリーフが合致すると、それはネットワーク・プロセッサ・ユニット４０の内部レジスタにロードされる。ＴＳＥ４５とともに使用されるツリーを静的ツリーまたは動的ツリーと呼ぶ。動的ツリーはフレームの処理に変更が生じるように増分的にかつ迅速に更新されるのでこう呼ばれる。静的ツリーは増分的に更新されず、ツリーが変更される度にツリーの再ロードを必要とする。静的ツリーは、リーフをＩＰアドレスのある範囲に適用するなどより複雑な突き合わせを行うのに有用である。ハードウェア・クラシファイア４８は、突き合わせの準備に受け取ったフレームを事前処理する。
【０００９】
本発明は、ＣＰＵ１１上のアプリケーションおよびＮＰ１４Ａ〜１４Ｃ上で動作するアプリケーションが制御命令、データ、およびフレーム・クラシファイア・ツリーを記憶するのに使用するメモリを割り振ることができるようにＮＰ１４Ａ〜１４Ｃでメモリを管理する方法およびシステムを実施したものである。このメモリはＮＰアプリケーション用のデータ記憶域、ＣＰアプリケーション用のデータ記憶域、フレーム・クラシファイア用のＳＭＴ記憶域などとなることができる。
【００１０】
ここで図４を参照すると、本発明の方法およびシステムを実施したソフトウェア・モジュールが示されている。動的メモリ・マネジャは２つの部分、すなわち制御点メモリ・マネジャ（ＣＰＭＭ）５３とＮＰメモリ・マネジャ６４を含む。動的メモリ・マネジャのＣＰ構成要素はＣＰＵ１１に結合されたメモリ内にあり、ＮＰ構成要素はＮＰ１４Ａに結合されたメモリ内にある。ＣＰＵ１２内で、アプリケーション・ソフトウェア５２はネットワーク・プロセッサ１４Ａ〜１４Ｃによって行われるネットワーク処理の制御を行う。ＮＰ１４Ａ〜１４Ｃ上のデータ記憶域用にメモリを割り振るため、アプリケーション・ソフトウェア５２はＣＰＭＭ５３内のアプリケーション・プログラミング・インタフェース（ＡＰＩ）と通信する。これらのＡＰＩはＮＰ１４Ａ〜１４Ｃ上のメモリに対する割り振りサービスおよび割り振り解除サービス、ならびに読み書きアクセス・サービスと残りの自由空間などのメモリ状況情報に対する要求を提供する。ＡＰＩはまた、高速メモリ割り振りかそれとも低速メモリ割り振りかの選択を行うことができ、ＮＰ１４Ａ〜１４Ｃ内のあるメモリから他のメモリへ動作を移すこともできる。ＡＩＸ（米国ニューヨーク州アーモンクのＩＢＭコーポレーション製造）あるいはＵＮＩＸなどのオペレーティング・システム内での通常の手順コールや通常のメモリ割り振り方式とは異なり、動的メモリ・マネジャ内のＡＰＩは同期していない。
【００１１】
アプリケーションの実行を遅延させたりＮＰ１４Ａ〜１４Ｃの処理を中断させずに割り振りサービスを提供するために、割り振りおよびアクセス要求に対する応答は同期しておらず、トランザクションがＮＰ１４Ａ〜１４Ｃに伝播した後に結果を報告する。動的メモリ・マネジャはまたマルチキャスト・メモリ割り振りおよびアクセスをサポートし、複数ＮＰを各要求中で指定することができ、たとえばマルチキャストＡＰＩはＣＰＵ１２が空間を割り振り、ただ１組の操作で、すなわち単一の割り振りコールと単一の書き込みコールでＮＰ１４Ａ〜１４Ｃの特定のサブセットにデータを書き込むことを可能とする。動的メモリ・マネジャは、応答の全てを受け取った時、あるいはエラー（１つまたは複数のＮＰから応答がないためのタイムアウトを含む）が起こった時にＣＰＭＭ５３を介してＣＰアプリケーション５２にその旨を通知する。
【００１２】
非同期操作を行い、アプリケーションが所有するデータを編成するために、Register()およびDe-Register()ＡＰＩが動的メモリ・マネジャ（ＤＭＭ）によって提供される。アプリケーションはそれ自体をＤＭＭに登録し、アプリケーションが要求する割り振りを記録するテーブルが構築される。アプリケーションがDe-Register()を呼び出すと、ＤＭＭは保留中の要求がタイムアウトするのを待ち、次いでアプリケーションが保持するトークンを全て削除する。
【００１３】
動的メモリ・マネジャのＣＰ構成要素（動的メモリ・マネジャのＣＰＵ１２内にある部分）によってサポートされる動作には、Register()ＡＰＩおよびDe-Register()ＡＰＩがRead()ＡＰＩ、Write()ＡＰＩ、Resize()ＡＰＩ、Allocate()ＡＰＩおよびDeallocate()ＡＰＩとともに含まれる。空きメモリの量と様々なアクセス速度をもつメモリの利用可能性に関する情報を返すために追加の照会が利用可能である。たとえば、頻繁に使用されるフレーム処理アルゴリズムのダウンロードを準備中のＣＰアプリケーションは、高速オンチップ・メモリ中にアルゴリズムを実施するコードを保持するのに十分な空きバイトが利用可能かどうか判定しようとすることがある。CheckMemoryAvailability()ＡＰＩがこの目的に提供されている。
【００１４】
メモリ動作を表すパケットが、ＣＰＵ１２をＮＰ１４Ａ〜１４Ｃと接続するバスに伝播する。デバイス・ドライバ５４は、その要求に必要な情報、すなわち書き込み要求に対するトークンおよびデータを、バス・インタフェース５５のための刺激（ｓｔｉｍｕｌｉ）にパッケージする。ＮＰとＣＰＵ１２を接続するバスはイーサネット接続、ファイバ・チャネル接続または両方向通信を可能とする他の何らかのインタフェースとすることができる。
【００１５】
ＮＰ１４Ａ内で、バス・パケットはバス・インタフェース６２で受信され、誘導（ｇｕｉｄｅｄ）セル・ハンドラ６３で復号され、セル・ハンドラはパケットに封入されている要求を動的メモリ・マネジャ６４のＮＰ構成要素に通信する。次いで動的メモリ・マネジャは、ＮＰに結合されているメモリ４３を割り振り、またはそれにアクセスすることができる。ＳＭＴダウンロード機能６５は、ＮＰ１４ＡにダウンロードされるＳＭＴに対して割り振りを行う。テーブル初期化制御６６は、動的メモリ・マネジャのＮＰ構成要素６４に対してフレームワークをセットアップする。テーブルはトラック割り振りおよびトークンを作成し、それがアプリケーションに渡されて、受け取ったトークン情報をポインタに変換するためのデータを提供し、その結果、ＮＰ内の物理位置にアクセスできるようになる。ＮＰ内で実行されるアプリケーション６８も、これらの機構を使用してメモリを割り振りそれにアクセスし、それによって、ＣＰＵ１２上で動作するアプリケーションとＮＰ上で動作するアプリケーションの間に共通インタフェースがもたらされる。
【００１６】
単一のトークンを使用してアプリケーションによって作成された特定のデータを参照することにより、様々なプロセッサ上で動作する複数のアプリケーションまたは複数のインスタンスが、異なるメモリ内で一義的アドレスにあったとしても、同一のデータを参照することができる。たとえば、複数のプロセッサ上に割り振られた特定の記録を削除する要求を全てのプロセッサにブロードキャストすることができる。割り振り解除はレコードが存在するプロセッサ上で行われ、レコードが存在しないプロセッサ上では行われない。メモリ動作の結果は、アプリケーション登録中に提供されるコールバック機構によってアプリケーションに返される。コールバックは、ターゲットＮＰの各々についてのトークンと結果を供給する動的メモリ・マネジャによって行われる。次いでアプリケーション中のコールバック・ルーチンは、以前に非同期的に待ち行列化された動作の結果を決定する。トークンを使用すると、どの要求が完了し、どの要求がまだ保留中であるかをアプリケーションが識別できるようにする機構が提供される。
【００１７】
動的メモリ・マネジャはまた、所与のトークンに関連する保留中の要求の状況に応じて要求をブロックすることもできる。たとえば、割り振り要求が保留中である場合、書き込み動作はブロックされる。物理位置が割り当てられておらず、書き込みデータ用のターゲットがまだないからである。
【００１８】
図５を参照すると、本発明の一実施形態によるネットワーク処理システムにおけるメモリを管理する方法の流れ図が示されている。アプリケーションが動的メモリ・マネジャに登録され（ステップ７０）、動的メモリ・マネジャはアプリケーションの参照テーブルを構築する（ステップ７１）。アプリケーションは次いで、メモリの割り振りを要求することができ（ステップ７２）この要求はバス上で１つまたは複数のネットワーク・プロセッサに伝播される（ステップ７３）。物理メモリがＮＰサブシステム内で割り振られ、この割り振りを参照するトークンが返される（ステップ７４）。割り振り要求に対する応答がＮＰから返され、動的メモリ・マネジャによって収集される（ステップ７５）。次いでアプリケーションに割り振りの結果が通知される（ステップ７６）。
【００１９】
ここで図６を参照すると、本発明の好ましい実施形態によるＳＭＴをダウンロードする方法の流れ図が示されている。ＳＭＴダウンロード機能６５は、ダウンロードされるＳＭＴのための記憶域の割り振り、および新しいＳＭＴがダウンロードされている間にフレーム・クラシファイア動作を維持するために使用される複数記憶域の割り振りを行う。新しいＳＭＴがＣＰＵ１１上に構築され（ステップ８０）、クラシファイア・タイマが既に動作している場合は停止する（ステップ８１）。これによって、ＣＰＵ１１またはＮＰ１４Ａ〜１４Ｃ上で動作するアプリケーションが新しいＳＭＴのダウンロードの進行中にＳＭＴに対して何らかの追加または変更を加えることが防止される。新しいＳＭＴをチェックして、新しいＳＭＴのダウンロードを必要とする規則変更が起こっているかどうか判定し（ステップ８２）、そうでない場合は、プロセスは終了する。ＳＭＴをダウンロードする必要がある場合は、一般に、まず低速記憶域にダウンロードする（ステップ８３）。高速記憶域は限られた資源であり、十分な高速記憶域（ＮＰ４０内の内部メモリまたはＺＢＴ  ＳＲＡＭ１７などの外部メモリ４３）がない可能性があるからである。
【００２０】
ＮＰフレーム・プロセッサＴＳＥ４５に対し活動ＳＭＴの位置を指定するポインタが、新たにダウンロードされたＳＭＴを指すように変更される（ステップ８４）。次いで、古いＳＭＴが高速メモリからパージされる（ステップ８５）。新しいＳＭＴの別のコピーが高速メモリにダウンロードされる（ステップ８６）。最後に、活動クラシファイア・ツリー・ポインタが、高速メモリの新しいＳＭＴのコピーを指すように変更され（ステップ８７）、ＳＭＴが低速記憶域からパージされ（ステップ８８）、クラシファイア・タイマが再スタートする（ステップ８９）。これによって、利用可能な高速メモリのサイズを最大にしながらＴＳＥ４５の動作を停止せずにＳＭＴの更新が行われる。ＳＭＴを一時的に低速メモリから使用しない場合は、古いＳＭＴと新しいＳＭＴを収容するために高速メモリを大きくしなければならず、そうしないとダウンロードを行う間、ＴＳＥ４５の動作が中断されることになる。
【００２１】
本発明の方法を実施するのにダウンロードを２回行う必要はない。たとえば、全てのメモリが同じ速度でアクセス可能なネットワーク処理システムでＳＭＴダウンロードを行うことができる。この構成においては、単一のダウンロードが行われ、活動ポインタが新しいＳＭＴ位置に切り換えられる。古いＳＭＴの位置を回復しても追加の利益がないからである。
【００２２】
本発明の好ましい実施形態を単一のＣＰＵと複数のＮＰを有する構成で説明したが、本発明は複数のＣＰＵと単一のＮＰを有するシステムや、ネットワークの経路指定および処理の制御を提供するその他の変形形態において実施することもできる。本発明の精神および範囲を逸脱することなく、本発明の形態および細部に様々な変更を加えることができることは当技術の技術者には理解されよう。
【００２３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００２４】
（１）少なくとも１つのネットワーク・プロセッサ（ＮＰ）にバスによって結合された制御点プロセッサ（ＣＰ）を有するネットワーク処理システムにおいてメモリを管理する方法であって、
ＣＰ構成要素を提供するステップと、
前記少なくとも１つのＮＰ上にＮＰ構成要素を設けるステップと、
前記ＣＰ構成要素にアプリケーションを登録するステップと、
前記ＣＰ構成要素から前記バスを介して前記ＮＰ構成要素に要求を送信することにより、前記少なくとも１つのＮＰ上へのメモリ位置の割り振りを要求するステップと、
前記要求に応答して、前記少なくとも１つのＮＰ上に物理メモリを割り振り、前記物理メモリへの読み書きアクセスを提供するために、前記割り振りを表すトークンを前記ＮＰ構成要素から前記ＣＰ構成要素に返すステップと
を含む方法。
（２）メモリの前記割り振りが、ソフトウェア管理ツリー（ＳＭＴ）をダウンロードするために提供され、前記返すステップが、前記ＳＭＴを構築するためにトークンを返す、上記（１）に記載のネットワーク処理システムにおいてメモリを管理する方法。
（３）メモリの前記割り振りが、ソフトウェア管理ツリー（ＳＭＴ）に要素を追加するために提供され、前記返すステップが、前記ＳＭＴに追加された要素に対応するトークンを返す、上記（１）に記載のネットワーク処理システムにおいてメモリを管理する方法。
（４）前記少なくとも１つのＮＰが、複数のＮＰを含んでおり、前記要求するステップが、前記複数のＮＰ上へのメモリの割り振りを要求し、前記方法がさらに、
前記複数のネットワーク・プロセッサから応答を収集するステップと、
前記複数のＮＰの各々から応答の１つを受け取るまで、またはタイムアウトが起こるまで待機するステップと、
前記待機の終了に応答して、前記要求が全て完了したことを前記アプリケーションに通知するステップと
をさらに含む、上記（１）に記載のネットワーク処理システムにおいてメモリを管理する方法。
（５）前記通知するステップが、前記アプリケーション内のコールバック・ルーチンをコール・バックするコールバック機構によって行われ、前記コールバック・ルーチンのアドレスが、前記登録ステップの一部として前記アプリケーションによって供給される、上記（４）に記載のネットワーク処理システムにおいてメモリを管理する方法。
（６）前記ＣＰ構成要素からバスを介して前記ＮＰ構成要素への送信内に前記トークンを提供することにより、前記割り込みに対応する位置にデータ値を書き込むことを要求するステップと、
前記送信の受け取りに応答して、前記データ値を前記位置へ書き込むステップと
をさらに含む、上記（１）に記載のネットワーク処理システムにおいてメモリを管理する方法。
（７）前記ＣＰ構成要素からバスを介して前記ＮＰ構成要素への送信内にトークンを提供することにより、前記割り込みに対応する位置からデータ値を読み取ることを要求するステップと、
前記送信の受け取りに応答して、前記位置から前記データ値を取り出し、前記ＣＰ構成要素に前記データ値を返すステップと
をさらに含む、上記（１）に記載のネットワーク処理システムにおけるメモリを管理する方法。
（８）前記要求が、高速メモリの割り振りに対してプリファレンスを指定する値を含み、前記割り振るステップが、前記値に基づいて前記ＮＰ構成要素上に高速メモリを割り振る、上記（１）に記載のネットワーク処理システムにおけるメモリ管理方法。
（９）待機動作が完了するまで、前記割り振りに対するアクセスを拒絶するステップをさらに含む、上記（１）に記載のネットワーク処理システムにおけるメモリの管理方法。
（１０）前記少なくとも１つのＮＰにメモリ可用性情報を要求するステップであって、前記要求が、メモリ速度のカテゴリを指定し、前記要求が、バスを介して前記少なくとも１つのＮＰに送信されるステップと、
前記要求に応答して、前記少なくとも１つのＮＰから前記バスを介して前記メモリ可用性情報を返すステップと
をさらに含む、上記（１）に記載のネットワーク処理システムにおけるメモリ管理方法。
（１１）制御点プロセッサ（ＣＰ）と、
少なくとも１つのネットワーク・プロセッサ（ＮＰ）と、
前記制御点プロセッサおよび前記少なくとも１つのネットワーク・プロセッサに結合されたバスと、
前記制御点プロセッサ内に配置されたＣＰ構成要素であって、アプリケーションが、前記少なくとも１つのＮＰ内にあるメモリに対するアクセスを登録し、かつ前記少なくとも１つのＮＰ内のメモリの割り振りを要求することができ、前記要求が、前記バスを介して前記ＣＰと前記少なくとも１つのＮＰの間で送信されるＣＰ構成要素と、
前記少なくとも１つのネットワーク・プロセッサ内にあって、物理メモリを割り振り、前記バスから要求を受け取り前記割り振りを表すトークンを前記バスを介して前記ＣＰ構成要素へ返すことにより前記物理メモリへのアクセスを提供するＮＰ構成要素と
を備えるメモリ管理システム。
（１２）メモリの前記割り振りが、ソフトウェア管理ツリー（ＳＭＴ）をダウンロードするために提供され、前記ＮＰ構成要素が、前記ＳＭＴを構築するためにトークンを返す、上記（１１）に記載のメモリ管理システム。
（１３）メモリの前記割り振りが、ソフトウェア管理ツリー（ＳＭＴ）に要素を追加するために提供され、前記ＮＰ構成要素が、前記ＳＭＴに追加された要素に対応するトークンを返す、上記（１１）に記載のメモリ管理システム。
（１４）前記少なくとも１つのＮＰが複数のＮＰを含んでおり、前記ＣＰ構成要素が、前記複数のＮＰ上へのメモリの割り振りを要求し、前記ＣＰ構成要素がさらに、前記複数のネットワーク・プロセッサからの応答を収集し、前記複数のＮＰの各々から応答の１つを受け取るまで、またはタイムアウトが起きるまで待機し、前記待機の終了に応答して、前記要求が全て完了したことを前記アプリケーションに通知する、上記（１１）に記載のメモリ管理システム。
（１５）前記通知が、前記アプリケーション内のコールバック・ルーチンをコール・バックする前記ＣＰ構成要素内のコールバック機構によって提供され、前記コールバック・ルーチンのアドレスが、前記登録時に前記アプリケーションによって供給される、上記（１４）に記載のメモリ管理システム。
（１６）前記アプリケーションが、送信内の前記トークンを前記ＣＰ構成要素からバスを介して前記ＮＰ構成要素に提供することにより、前記割り振りに対応する位置へデータ値を書き込むことを要求し、前記ＮＰ構成要素が前記送信を受け取ったことに応答して、前記ＮＰ構成要素が前記位置に前記データ値を書き込む、上記（１１）に記載のメモリ管理システム。
（１７）前記アプリケーションが、前記ＣＰ構成要素に前記トークンを提供することにより、前記割り振りに対応する位置からデータ値を読み取ることを要求し、前記ＣＰ構成要素が、バスを介して前記ＮＰ構成要素に前記要求を送信し、前記送信を受け取ったことに応答して、前記ＮＰ構成要素が、前記位置から前記データ値を取り出し、前記バスを介して前記ＣＰ構成要素に前記データ値を返す、上記（１１）に記載のメモリ管理システム。
（１８）前記要求が、高速メモリの割り振りに対してプリファレンスを指定する値を含み、前記割り振るステップが、前記値に基づいて前記ＮＰ構成要素上に高速メモリを割り振る、上記（１１）に記載のメモリ管理システム。
（１９）前記ＣＰ構成要素が、保留中の動作が完了するまで前記割り振りへのアクセスを拒絶する、上記（１１）に記載のメモリ管理システム。
（２０）前記アプリケーションが、前記少なくとも１つのＮＰにメモリ可用性情報を要求し、前記要求がメモリ速度カテゴリを指定し、前記要求が、前記バスを介して前記少なくとも１つのＮＰに送信され、前記要求に応答して、前記ＮＰ構成要素が、前記少なくとも１つのＮＰから前記バスを介して前記メモリ可用性情報を返す、上記（１１）に記載のメモリ管理システム。
【図面の簡単な説明】
【図１】本発明の一実施形態によるネットワーク・プロセッサに管理されるネットワーク・サブシステムのブロック図である。
【図２】本発明の実施形態によるネットワーク・プロセッサ内のフレーム・フローを示す簡略化したブロック図である。
【図３】本発明の実施形態によるネットワーク・プロセッサを示す詳細ブロック図である。
【図４】本発明の方法およびシステムを実施したソフトウェア・モジュールを示すブロック図である。
【図５】本発明の一実施形態によるネットワーク・サブシステムにおいてメモリを管理する方法を示す流れ図である。
【図６】本発明の一実施形態によるネットワークにソフトウェア管理ツリーをダウンロードする方法を示す流れ図である。
【符号の説明】
１１  中央処理装置（ＣＰＵ）
１２  パケット経路指定スイッチ
１４Ａ  ネットワーク・プロセッサ（ＮＰ）
１４Ｂ  ネットワーク・プロセッサ（ＮＰ）
１４Ｃ  ネットワーク・プロセッサ（ＮＰ）
１５  制御メモリ
１６Ａ  イーサネット接続
１６Ｂ  イーサネット接続
１６Ｃ  イーサネット接続
１６Ｄ  イーサネット接続
１６Ｅ  イーサネット接続
１７  ルックアップＺＢＴ  ＳＲＡＭ
２２  スイッチ・ファブリック
２３  入口スイッチ・インタフェース
２４  出口スイッチ・インタフェース
２５  プロトコル・プロセッサ
２７  待ち行列化／待ち行列解除／スケジューリング論理（ＥＤＳ）
２８  入口ＭＡＣマルチプレクサ（ＰＭＭ）
２９  出口ＰＭＭ
３１  出口データ記憶域
４０  ネットワーク・プロセッサ・ユニット
４１  プロセッサ・コア
４２  制御ストア・アービタ
４３  メモリ
４４Ａ  対プロトコル処理ユニット（ＤＰＰＵ）
４４Ｂ  対プロトコル処理ユニット（ＤＰＰＵ）
４５  ツリー検索エンジン（ＴＳＥ）
４６  コア処理ユニット
４７  命令メモリ
４８  ハードウェア・クラシファイア
５２  アプリケーション・ソフトウェア
５３  制御点メモリ・マネジャ（ＣＰＭＭ）
５４  デバイス・ドライバ
５５  バス・インタフェース
６２  バス・インタフェース
６３  セル・ハンドラ
６４  ＮＰメモリ・マネジャ
６５  ＳＭＴダウンロード機能
６６  テーブル初期化制御
６８  アプリケーション
【図１】
0003605573.tif 000002
【図２】
0003605573.tif 000003
【図３】
0003605573.tif 000004
【図４】
0003605573.tif 000005
【図５】
0003605573.tif 000006
【図６】
0003605573.tif 000007