JP2004260532A - ネットワークプロセッサ - Google Patents

ネットワークプロセッサ Download PDF

Info

Publication number
JP2004260532A
JP2004260532A JP2003048730A JP2003048730A JP2004260532A JP 2004260532 A JP2004260532 A JP 2004260532A JP 2003048730 A JP2003048730 A JP 2003048730A JP 2003048730 A JP2003048730 A JP 2003048730A JP 2004260532 A JP2004260532 A JP 2004260532A
Authority
JP
Japan
Prior art keywords
packet
processing
network processor
subset
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003048730A
Other languages
English (en)
Inventor
Hiroaki Nishi
宏章 西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003048730A priority Critical patent/JP2004260532A/ja
Publication of JP2004260532A publication Critical patent/JP2004260532A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】ネットワークプロセッサにおけるパケット処理性能を改善し、ルータの大容量化、低遅延化、低コスト化、低消費電力化を図ることである。
【解決手段】プロセスキャッシュ参照部102、プロセスキャッシュメモリ104、スケジューラ106、CPU108などから構成されるネットワークプロセッサであって、ルータにおけるパケット処理において、パケットが持つローカリティを有効に生かして、全てのパケットをCPU108に送るのではなく、CPU108で処理した結果をプロセスキャッシュメモリ104に蓄える機構を備えることにより、同じヘッダを持つパケットは最初に一度だけ処理するだけとなるため、将来のユビキタスによる細粒度通信やストリーム、P2P等による大容量通信に対応するとともに、消費電力を軽減することが可能となる。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、パケット通信に於ける大容量パケットの低遅延交換システムに関わり、特に大容量パケットの低遅延交換システムにおけるパケットの要求処理に必要なネットワークプロセッサのパケット処理方式に関わる。パケットとしては、特にIPパケット、イーサネット(R)・フレームを受入れる技術に適用して有効な技術に関する。
【0002】
【従来の技術】
通信分野においては、広帯域化、高品質化、低遅延化の要求を満たす様々なルータやスイッチの構成技術が提案されている。特に、ネットワークプロセッサは今後のネットワークの高機能化、広帯域化、高品質化、低遅延化に係わる部位であり、ネットワークプロセッサの処理性能がルータやネットワークの性能を左右する。
【0003】
ここで、本発明者が本発明の前提として検討した、従来の基本的なネットワークプロセッサの構成図を図14に示す(例えば、特許文献1,2参照)。この図14を用いて基本的なパケット処理の手順を説明する。
【0004】
ネットワークプロセッサの入力インタフェース1401に投入されたパケットは、まずフォーマットをネットワークプロセッサ内部で扱う形式に変換する。次に、パケット処理部1402において宛先情報を調べる。次に、内蔵するプロセッサ1403においてパケットがプログラマブルに処理し、出力インタフェース1404で例えばスイッチングファブリクス1405に伝える。これらの処理は、順序が入れ替わったり、まとめられたり、それぞれの処理を担うモジュールの数が複数あるといった場合があるが、基本的には各処理を順番に行う。また、内蔵するプロセッサは、まず、パケットのボディがメモリに蓄えられ、パケットのヘッダ情報だけがプロセッサで処理される。
【0005】
ネットワークのバンド幅が増大すると共にネットワークプロセッサに求められる処理容量も向上する。従って、この様な動作を行うネットワークプロセッサの処理容量を高めることを目的とした手法が数多く提案されてきた。最も一般的な手法は、通常のパーソナルコンピュータに搭載するプロセッサと同様のキャッシュやパイプライン化により処理容量を向上する方法である。また、パイプラインも処理容量向上には有効な手段であり、数多くの提案がなされている。
【0006】
まず、キャッシュについて、ネットワークプロセッサ内部にあるプロセッサ(CPU)のインストラクションやデータのキャッシュを備えてメモリアクセス遅延を短縮するのが一般的である(例えば、特許文献3参照)。それ以外については、ルーティングテーブルをキャッシュする手法が特許文献4の従来例に示されている。
【0007】
パイプラインについて、基本的にパケット処理を行うネットワークプロセッサは次々と入力に投入されるパケットを流れ作業で処理していくため、パイプライン化は容易である(例えば、特許文献5参照)。しかし、全てのパケットが流れ作業で行うことができるわけではないため、処理によってはバッファにパケットを一度蓄える必要がある。そこで、FIFOや弾性バッファなどの様々な表現があるが、前記特許文献1や、特許文献6〜11など、数多くのバッファを持つ構成が提案されている。また、パイプラインが詰まったときに停止させる仕組みについても提案されている(例えば、特許文献12参照)。
【0008】
中断することなく内部のプログラム更新する方法(無中断プログラム更新)は信頼性の高いシステムを構築する上で重要な技術である。従来では無中断プログラム更新を実現するために複数のプロセッサを準備し、一方のプロセッサを利用し、利用していないもう一方のプロセッサのプログラムを更新して切り替える方法がある。
【0009】
【特許文献1】
特許第3128058号公報
【0010】
【特許文献2】
特開平9−128313号公報
【0011】
【特許文献3】
特開2001−94596号公報
【0012】
【特許文献4】
特表2001−517024号公報
【0013】
【特許文献5】
特開2001−77832号公報
【0014】
【特許文献6】
特表2002−508868号公報
【0015】
【特許文献7】
特表2002−510450号公報
【0016】
【特許文献8】
特開2002−520907号公報
【0017】
【特許文献9】
特開2002−57698号公報
【0018】
【特許文献10】
特開2002−520907号公報
【0019】
【特許文献11】
特開平9−128313号公報
【0020】
【特許文献12】
特開2002−247095号公報
【0021】
【発明が解決しようとする課題】
ところで、前記のようなネットワークプロセッサの技術において、次世代ルータでは、ユビキタスによる細粒度通信やストリーム、P2P等による大容量通信への対応が不可欠である。現在のネットワークプロセッサは、この様な将来の通信パターンへの対応が困難であるばかりではなく、単にCPUの処理容量を向上するだけで対応しようとすると、消費電力が増大し、実装が困難となる。
【0022】
そこで、本発明の目的は、ネットワークプロセッサにおけるパケット処理性能を改善し、ルータの大容量化、低遅延化、低コスト化、低消費電力化を図ることである。これらを達成するには、ネットワークプロセッサの処理負担軽減が必要である。一方でネットワークプロセッサに求められる機能は、ネットワークに対するニーズの多様化と共に増加する傾向にある。従って、従来のネットワークプロセッサが持つ柔軟性を維持しつつ、処理負担の軽減を図る必要がある。
【0023】
また、本発明では、ネットワークプロセッサにおけるキャッシュ利用についても考慮している。以下において、ネットワークプロセッサにインストラクションキャッシュやデータキャッシュを搭載する方法について述べる。
【0024】
ネットワークプロセッサのインストラクションやデータメモリが外付けされている場合はキャッシュが有効に働くが、ネットワークプロセッサの処理部(CPU)がチップにスタックチップなどの技術で混載されている場合や、同じダイに載っている場合など、メモリ階層が1で十分に低遅延である場合にはキャッシュを構成するメリットがない。そればかりか、キャッシュを挟むことにより無駄な遅延が発生する可能性がある。従って、ネットワークプロセッサにおけるキャッシュ利用の方法と周辺の構成については改善の余地がある。
【0025】
そこで、本発明では、従来手法における次のような課題に着目した。
【0026】
(1)ネットワークプロセッサをプロセッサ部とメモリを1チップで実装する場合、インストラクションやデータのキャッシュは有効に動作しない。キャッシュは高速化に有効な手段ではあるが、この場合はキャッシュの効果が期待できない。
【0027】
(2)最新の研究ではパケットのアクセスには高いローカリティが有り、例えばルーティングテーブル参照にキャッシュを利用すると90%程度のヒット率が得られることが分かっている。このローカリティを現状ではルーティングテーブルの参照にしか用いず、さらにキャッシュにヒットしてもルーティングテーブル参照以外の処理はプロセッサで何度も同じ処理が繰り返し行われる。ローカリティを活かして冗長な処理を省く必要がある。
【0028】
(3)ネットワークプロセッサのキャッシュは処理容量を損ねない程度に柔軟である必要がある。現状では決められたデータ列について決められたハッシュを作成し、決められた結果しか返すことができない。
【0029】
(4)現在のネットワークプロセッサは全てのパケットを同じパケット手順で処理するが、ローカリティの存在を考慮に入れると全てのパケットを同じ手順で処理するのは効率が悪い。
【0030】
(5)無中断プログラム更新を実現するために複数のプロセッサを用いる場合、処理に携わらないプロセッサを確保してプログラムを更新する必要がある。したがって、同時に全てのプロセッサのプログラムを書き換えることができず、パケット処理の負荷が高くできるだけ多くのプロセッサを利用したい場合にはプログラムを更新できず負荷が下がるのを待つか、処理を間引いて(パケットを廃棄して)プログラムの更新を行わなければならないといった問題がある。また、別の方法としてメモリを準備し、プログラムを書き換えている間はそのメモリにパケットを蓄えておくという方法もあるが、この場合はメモリを搭載するためハードウエア数が増大する。
【0031】
(6)今後増大するトラフィックへの対応を単にCPUの高速化に頼ると、消費電力が増大し実装が困難となる。
【0032】
そこで、本発明の他の目的は、キャッシュ利用について、これらの課題を解決したネットワークプロセッサを実現することである。
【0033】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【0034】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【0035】
すなわち、本発明によるネットワークプロセッサは、パケットを受信するインタフェース、受信パケットから情報の部分集合を切り出す手段、切り出された部分集合情報を記憶するキャッシュメモリ、キャッシュメモリコントローラ、部分集合情報の切り出されたパケットが伝送される第1のパス、切り出された部分以外のパケットもしくは、受信パケットの全体が伝送される第2のパス、第1のパスと第2のパスとを分岐する分岐手段などを有し、キャッシュメモリコントローラが、ハッシュを用いた比較情報の縮小化法を用いる場合と用いない場合とを選択して、受信パケットの情報の部分集合とキャッシュメモリに格納された部分集合情報とを比較し、キャッシュヒットした場合には、分岐手段は受信パケットを第2のパスへ分岐させるものである。
【0036】
また、本発明による他のネットワークプロセッサは、切り出された部分集合情報を格納手段に記憶し、この格納手段に格納された部分集合情報と受信パケットに含まれる部分集合情報とを比較する比較手段において、一致しない場合には切り出す手段に対してパケットの部分集合の切り出しを実行させるものである。あるいは、分岐手段が、両者が一致しない場合に、格納手段から伝送されたパケットを第2のパスへ分岐させるようにしたものである。
【0037】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照しながら説明する。尚、以下の実施の形態ではネットワークプロセッサを例に用いるが、本発明は特にネットワークプロセッサに限らず、同等のローカリティが存在する場合に適用することで大容量化、低遅延化、低コスト化、低消費電力化の効果が期待できる。
【0038】
本発明の代表的なものの概要は、上述の課題を解決するために、次の手段を用いる。
【0039】
(1)パケットヘッダの部分集合をキャッシュタグの生成元情報とし、CRC除余項等を利用したハッシュ関数を用いてキャッシュタグを作成する。パケットヘッダの部分集合とは、ルーティングテーブル参照に必要な情報だけではなく、QoSに必要な情報やレイヤ7を含む全てのレイヤにおける処理情報において、必要な要素だけを抽出し集めたものである。このキャッシュを以降プロセスキャッシュと呼ぶ。
【0040】
(2)プロセスキャッシュにミスヒットした場合は、通常のネットワークプロセッサと同等の処理手順を行う。この処理により得られた結果は、プロセスキャッシュのエントリとして登録する。プロセスキャッシュにヒットした場合は、過去の処理結果を再利用できるため、通常のネットワークプロセッサと同じ処理手順を取らず、キャッシュエントリを元にパケットヘッダをモディファイした後にパケットを出力する。この様にパケットが通るパスは2つあり、プロセスキャッシュにヒットしたか、ミスヒットしたかにより2つのパスを選択する。
【0041】
(3)プロセスキャッシュは任意サイズのデータからタグを生成するため、タグの生成効率、キャッシュ利用効率ともに優れたタグの生成手段を備える必要がある。ソフトウエアによるキャッシュタグ生成は柔軟性に優れるものの算出速度に問題がある。ハードウエアによるキャッシュタグ生成は算出速度に優れるが柔軟性に問題がある。そこで、細分化したCRC除余項算出手段をつなぎ合わせるか、固定のCRC除余項演算手段を用いて不足データ分を固定値で埋めることで、ハードウエアコストを増大させることなしに柔軟性を獲得する。
【0042】
(4)プロセスキャッシュにミスヒットした場合、通常のネットワークプロセッサと同等の処理を施すがその処理には時間がかかる。処理中に別のパケットが届いた場合、ローカリティが高いことからこのパケットについても同等の処理が行われる可能性があるため、プロセスキャッシュにミスヒットしたすべてのパケットに対してCPUによる処理を行うのは冗長である。したがって、過去のミスヒットを管理し、同じミスヒットが繰り返された場合にはエントリが未記載のため処理せず、先行したパケットの処理を待って結果が出次第、同じ結果を利用する機構を備える。もしくは、先行したパケットの処理を待たずにCPUでパッチ処理を施す機構を備える。
【0043】
(5)無中断プログラム更新に対応するため、プロセスキャッシュが働いて処理を行う必要がないCPUや時間にプログラムを書き換える手段を設ける。パケットのアクセスパタンが持つ高いローカリティによりプログラム更新の機会は多く存在し、さらに全てのプロセッサのプログラムを同時に書き換えることも可能となり、無中断プログラム更新用の別途メモリを必要としない。
【0044】
(6)プロセスキャッシュにヒットした場合はCPU処理が不要であるため、CPUへのクロック供給や電源供給を遮断できる。従って、高いプロセスキャッシュ率(90%程度)によりCPU部の消費電力は10分の1程度になる。
【0045】
(7)プロセスキャッシュは1つのみ搭載しても構わないが、2つもしくはそれ以上備えると次のような利点がある。
【0046】
(7−1)プロセスキャッシュが1つのみ備わる場合では、複数の場所に散らばるプロセスキャッシュタグ作成に必要な要素をプログラマブルな方法を用いる必要があるが、複数のプロセスキャッシュが備わると、それぞれのプロセスキャッシュが担当する部位のみ抽出すればよい。また、各部位にきめ細かく対応することが出来るためプロセスキャッシュメモリを有効利用できる。
【0047】
(7−2)複数あるプロセスキャッシュのうちのいくつかを、アンキャッシュ領域の指定に利用することができる。このアンキャッシュテーブルに登録するとパケットがCPUをスルーすることを防ぎ、特定のパケットを確実にCPUで処理することができるようになる。
【0048】
これらの効果により、例えばキャッシュヒット率が90%とすると、CPU稼働率も同様に90%となるため、論理処理部では最も消費電力が大きいCPUの稼働率を低減できる。従って、従来の構成と同じ処理容量を備える場合でも、世代が古く安価なテクノロジの利用や、消費電力・動作周波数の低減が可能となる。
【0049】
また、本発明によれば、通信処理を行うネットワークプロセッサは、パケットのフォワーディングに関する経路、QoS、各種サービス等の処理を実際に行うCPU、および前記プロセスキャッシュを備えるものである。
【0050】
以下において、具体的に実施の形態を詳細に説明する。
【0051】
(実施の形態1)
実施の形態1によるネットワークプロセッサの構造および動作の例を述べる。ネットワークプロセッサの構成例を図1に示す。
【0052】
ネットワークプロセッサは、入力インタフェース101、プロセスキャッシュ参照部(キャッシュメモリコントローラ)102、プロセスキャッシュタグおよびそれを伝えるバス103、プロセスキャッシュメモリ(格納手段)104、プロセス情報およびそれを伝えるバス105、スケジューラ(分岐手段)106、パケットバッファ107、複数のCPU(プロセッサ)108、最終処理部(処理手段)109、出力インタフェース110、スイッチングファブリクス111などで構成される。このネットワークプロセッサのチップは、図1の構造を例えばIngress側とEgress側等に複数含む場合もある。
【0053】
このネットワークプロセッサの動作は、まず、入力インタフェース101にパケットが投入される。この入力インタフェースにはパケットのフレーミング等を行うフレーマ等があり、ネットワークプロセッサの内部で扱うパケットとしての体裁を整える。
【0054】
次に、プロセスキャッシュ参照部102において、パケットの部分情報を利用してプロセスキャッシュタグ103を生成し、プロセスキャッシュメモリ104から宛先やQoSに必要な情報、さらにパケットの変更情報などのプロセス情報105を得る。
【0055】
プロセスキャッシュにミスヒットした場合は、パケット宛先インタフェース情報の算出やQoSの処理、パケットの変更処理等の処理を行うためにCPU108にパケットを渡す。パケットすべてを渡すと効率が悪いため処理に必要な部分とそれ以外の部分に分け、処理の必要な部分をCPUに渡し、それ以外の部分をパケットバッファ107に蓄えて先頭のポインタをCPUに通知する機構のスケジューラ106を備える。また、CPU1つでは処理容量が不足することが考えられるため、複数のCPUを備える。
【0056】
スケジューラ106は、どのCPUにどのポインタを渡したか等のCPU資源管理も行う。同時に、ミスヒットしたプロセスキャッシュのタグも通知する。CPU108は、算出した宛先インタフェース情報、QoS情報等の処理が終わったパケットの一部と元のパケットの同じ部位の差分情報をプロセスキャッシュのエントリにまとめ、プロセスキャッシュタグを元にプロセスキャッシュメモリ104に適応する。
【0057】
キャッシュにヒットした場合は、エントリを元に宛先インタフェースの情報、QoSの情報、パケット変更情報の入手や、パケットの変更を行う。この場合、CPU108に処理を移す必要がないため、処理時間の短縮が行える。
【0058】
最後に、最終処理部109において、CPUを利用する場合、利用しない場合で分岐した2つのパスをまとめて1つにして、パケットのヘッダのチェックサムやCRC付与等を行う。その後、出力インタフェース110においてスイッチングファブリクス111が理解できるフォーマットへ変更する。
【0059】
以上の処理のフローチャートを図2に示す。始めに、S201においてプロセスキャッシュタグを求め、S202においてプロセスキャッシュの検索を行う。プロセスキャッシュにミスヒットした場合は、S203においてCPUの処理が行われ、ヒットした場合はCPUの処理はパスする。その後、S204において最終処理を行う。
【0060】
次に、図3〜図9により、個々のモジュールについて説明する。
【0061】
図3に示すように、プロセスキャッシュ参照部102は、プロセスキャッシュタグ生成部(切り出し手段)301、プロセスキャッシュアクセス部302、遅延FIFO303、エントリ比較部(比較手段)304、パケットパッチ部305などで構成される。
【0062】
プロセスキャッシュタグ生成部301は、プログラマブルにパケットの部分要素を抽出し、CRC除余項等を用いた攪拌手段によりプロセスキャッシュタグを算出する。
【0063】
続いて、プロセスキャッシュタグ生成部301を詳細に説明する。図4にプロセスキャッシュタグ生成部の構成を示す。
【0064】
プロセスキャッシュタグ生成部301は、パケットの部分要素を抽出するプログラマブル部分要素抽出プロセッサ401、部分要素抽出プロセッサで抽出した値を保存しておく抽出列メモリ402、抽出列メモリの値を元にCRCの除余項を算出するCRC除余項算出回路403、算出したCRC除余項を含めて内部パケットを構成する内部パケット構成部404から構成される。
【0065】
プログラマブル部分要素抽出プロセッサ401は、パケットの部分要素抽出を専用に行うプログラム可能なシーケンス部を有し、パケットの部分要素を次々に抽出列メモリ402のレジスタアレイに登録する。処理速度が要求されるため、通常のプロセッサ(CPU)とは異なる抽出処理に特化した処理体系を持つ。抽出をビット単位で行うことも可能であるが、ハードウエアや処理コストを考えると、バイト単位などの粗い抽出手段とマスクによる範囲指定要素が適している。ここでは、バイト単位の荒い抽出手段とマスクによる範囲指定要素を持つ場合について述べる。
【0066】
プログラマブル部分要素抽出プロセッサ401のアセンブラのニモニックは、複数のフッキング手段と抽出処理、タグ生成処理、プロセスキャッシュ参照処理、定数指定処理等からなり、各フッキング手段にマッチした場合にどこを抽出するかを順次記述する。また、フッキング手段には無条件フッキングと条件フッキングがある。条件フッキングは備えない場合もある。
【0067】
プロセスキャッシュタグ生成部301のニモニック一覧の例を図5に示す。プログラムはアセンブラの形で記す。プログラムは条件指定部と抽出部の2つに分かれる。条件指定部のプログラムは処理クロック毎時系列に記述し、時間変化の位置はブレークポイントBPで指定する。ブレークポイント間をタームと呼び、ターム内に並列でフックキングを指定する。タームは例えば処理クロックの1クロックに該当する。抽出部のプログラムは抽出命令のみで構成する。パケットの開始およびパケットの終了時、その他パケットが破壊され途中で途切れている場合やネットワークのリンク切断やエラー多発時等にはプログラムをはじめから再実行する。
【0068】
図5におけるHKAは無条件フッキングである。HKAは該当するタームにおいて指定した抽出処理を無条件に行う。
【0069】
HKは条件フッキングである。条件フッキングは指定したフィルタを通したビット列について指定した比較列と一致検査を行い、一致した場合は指定した抽出処理を有効化する。条件フッキングを備える場合は、無条件フッキングを条件フッキングの一部として実装可能である。この場合、必ず一致するようなフィルタと比較列を指定する。HKには後方時間制約があり、HKのあるタームと同じタームかそれ以降のタームにあるSMPLのみ有効化できる。一方、HKCは無効化する。
【0070】
SMPLは抽出である。指定した抽出マスク値で抽出を行う。REFは抽出結果により、攪拌ハッシュを生成しプロセスキャッシュを引く。すなわち、ハッシュを用いた比較情報の縮小化法を適用する。
【0071】
図6に、プロセスキャッシュタグ生成部301の処理プログラムの例を示す。VALはアセンブラに対する指示命令で各種定数を宣言し、アセンブラによりアドレス参照に変換される。図6に示すプログラムは単純に、MACアドレスとIPアドレスのセットを作り、プロセスキャッシュを引く例である。参照位置をプログラムにより自由に変更できるため、レイヤ7等の領域を用いることも可能である。
【0072】
図7に、その処理手順の例を示す。前記図6のプログラムと図7のマッピングとは必ずしも一致しない。図7では例として、前記図6のプログラムよりも複雑なマッピングを行ったものを示している。
【0073】
まず、BPが2つあるため、先頭から2クロック分の情報が素通りする(なにも抽出しない)。次のHKAがコンパレータアレイ701にあるコンパレータA702にマッピングされているとすると、コンパレータAが定数メモリ706の内容に従ってパケットのAの場所703と比較を行う。ここでは無条件にMACADDRのSMPL(実態はサンプラ)をアクティベートする。
【0074】
MACADDRのSMPLがサンプラアレイ704のサンプラA705にマップされているとすると、同じクロック、もしくはタイミング的に厳しい場合は異なるクロックで同じ位置を、定数メモリ706の内容に従ってサンプリングし、抽出列メモリ402に蓄える。REFにより抽出列メモリの内容を元にCRC除余項を算出する。抽出列メモリはバイト程度の粒度で管理して全てのバイト数の組み合わせについてCRC除余項生成手段をもつか、更新があったビット以外は0もしくは1で埋めてキーを作成することで、どのような抽出列でも算出可能な構造とする。
【0075】
キーは、ミスヒット等によりプロセスキャッシュの内容を更新する際など、プロセスキャッシュにエントリを付けるときに必要となる。HKなど、条件によりフッキングするかしないかが分かれる場合には、SMPLで抽出する際にSMPLのID(複数あるサンプルを区別するID、ここではサンプラA,サンプラB等)をエントリに付与する方が、図3におけるパケットパッチ部がちょうど逆の手順でパケットのパッチ処理を行うため管理が容易となる。
【0076】
このプロセスキャッシュタグ生成部301は、バス幅の増大に伴ってハードウエアコストも増大するため、プロセスキャッシュタグ生成部はビット幅を細くし、転送レートを高くすることでハードウエアコストを下げることが考えられる。プロセスキャッシュタグ生成部は、パケットが通過するバス、プロセスキャッシュタグのバスをプロセスキャッシュ参照部102に渡す。
【0077】
図3に戻り、プロセスキャッシュアクセス部302は、プロセスキャッシュメモリ104とのインタフェースであり、プロセスキャッシュタグ生成部で生成したタグを元にプロセスキャッシュメモリを参照する。プロセスキャッシュメモリは例えば通常のプロセッサで用いるキャッシュと同様にn−way セットアソシアティブキャッシュで構成する。
【0078】
エントリ比較部304は、プロセスキャッシュにヒットしたかどうかを調べる部位である。プロセスキャッシュがn−way セットアソシアティブキャッシュの場合は複数の参照結果が得られるため、同数のエントリ比較手段を持つ必要がある。また、どのようなプロセスキャッシュ構造であってもエントリに一緒に保存されているキー(プロセスキャッシュタグを算出する元のデータ)を比較することでキャッシュにヒットしたかどうかを判断する必要がある。エントリ比較部は比較の結果(ヒットフラグ306)とエントリの内容(エントリ列307)をパケットパッチ部305に伝える。
【0079】
プロセスキャッシュアクセス部302とエントリ比較部304は、メモリ参照等の遅延を伴うため、パケット本体をFIFO303で遅延させ、処理の同期を図る。
【0080】
パケットパッチ部305は、キャッシュにミスヒットした場合とヒットした場合を区別するためのビットをパケットに付与する。また、ヒットした場合はエントリに従ってパケットを修正する。プログラマブル部分要素抽出プロセッサ401のプログラムと同じ処理を逆にたどるような、パケットパッチ部内のパケットパッチプロセッサのプログラムを記述する。これらのプログラムはプログラムのデコーダを工夫すれば同じプログラムを用いて動作可能である。
【0081】
また、その様な特別なデコーダを準備しなくとも、プログラムからパケットのどの部分がエントリのどの部分に対応するかがわかればよいため、プログラマブル部分要素抽出プロセッサ401のプログラムをアセンブラで処理する際に、同時にパケットパッチプロセッサのプログラムも作成可能である。条件フッキング手段がある場合はSMPLのIDを入手可能としていれば(前述)、抽出条件にマッチしていたかマッチしていなかったかに関わらずパッチが可能である。
【0082】
次に、図8にスケジューラの構造を示す。スケジューラ106は、分配器801、スルーパス802、CPUパス803、リソース割り当て器804、CPUアレイ805、CPUリソース状態リスト807、コンバイン部810から構成される。
【0083】
このスケジューラ106は、まず分配器801においてヒットフラグに従い、CPUリソースを獲得するパス(CPUパス803)と獲得しないパス(スルーパス802)にパケットを分岐する。
【0084】
リソース割り当て器804は、CPUパスに流れたパケットに対して、複数のCPUの集合であるCPUアレイ805からパケット処理を行っていないアイドル状態であるCPU(例えば806)を選び、そのCPUリソースが割り当てる。CPUリソースの獲得は、CPUリソースの割り当て状態を示すCPUリソース状態リスト807により行う。
【0085】
図9に、CPUリソース状態リストの例を示す。ここでは4つのCPUが存在している例を示している。CPUリソースが獲得されている場合は、CPUが処理状態であることを示すBUSYビットがチェックされている。ここでは、CPU0とCPU1が処理状態である。パケットのFIFO性を考えると、パケット処理はFIFOで行うのが望ましい。新しくCPUリソースを獲得する場合はBUSYビットを調べて処理状態ではないCPUを選ぶ。
【0086】
リソース割り当て器804は、選んだCPUにパケットの部分集合(プロセスキャッシュで比較のために抽出したものと同じもの)もしくは、必要と思われるところすべてをプロセスリクエストバス811によりCPUに渡す。また、実装の容易さを考えると、パケットの先頭からレイヤ7のヘッダを渡してもよい。
【0087】
このスケジューラ106には、複数のインストラクションセットを切り替えることが可能なプロセッサのような機能(インストラクションデコーダ)を持たせ、パケットに応じて処理パスの経路を切り替える命令を持たせたり、プロセッサを直接切り替えることが可能である。
【0088】
リソース割り当て器804は、メモリの管理も行う。すなわち、CPUに渡した以外の部分、もしくはパケット全体を大容量メモリ809に転送し、その先頭アドレスをCPUリソース状態リスト807に保存する。また同時に、大容量メモリ809にパケットを転送した際の最終アドレスを記憶し、次のパケットの転送アドレスとする。
【0089】
大容量メモリ809は、FIFO的に用い、アドレスを使い切るとラップラウンドする。その他、通常のメモリ管理構造と同じようなセグメントに分けたリスト構造による管理も可能であるが、複雑な構造となるため処理速度の向上が難しい。パケットのFIFO性を壊しても処理を早めたい場合にはリスト構造による管理はFIFOとして扱うよりもメモリ利用効率が良い。
【0090】
CPU(806)は、通常のプロセッサと同等の高度な処理を行う。CPUは受け取ったパケットヘッダ以外の部分を参照する可能性があるため、大容量メモリ809へのアクセス手段を持つ。この場合、複数のCPUが1つの大容量メモリ参照を可能とするため、大容量メモリアクセス調停部808が調停を行う。スケジューラ部からのパケットの格納アクセスを最優先順位とする。大容量メモリがデュアルポートメモリである場合は2つ(スケジューラ部と1つのCPU等)のアクセスを行うことができる。
【0091】
CPUは、パケットヘッダからQoSや宛先インタフェースアドレスの情報を調べ、またパケットの一部を改変する。そこで、CPUはQoSや宛先インタフェースアドレス情報はそのすべての情報を、またパケットの改変はその改変前との差分もしくは全ての情報をプロセスキャッシュのエントリとして登録する。エントリ登録作業はパケット処理とは関係がないため、CPUはまずパケットの処理終了をスケジューラに伝えてその後エントリの登録作業を行うことで処理時間の無駄を省く。
【0092】
プロセスキャッシュのエントリに登録する際にも、複数のCPUが1つのプロセスキャッシュ資源を奪う必要があるため、大容量メモリアクセス調停部808は大容量メモリ809だけではなく、プロセスキャッシュメモリ104についても調停を行う。パケットの改変後の情報全てをプロセスキャッシュのエントリとして登録するとメモリコストが問題となるため、(1)差分情報を用いるか、(2)プロセスキャッシュタグ生成部と同じ手法(プログラマブル部分抽出)により抽出するか、(3)CPUのプログラムに従いエントリを作成するなどの処置を行う。
【0093】
差分情報を用いると、どのような変更でももれなくエントリに記載できるが、エントリサイズがダイナミックに変化するため管理が困難となる。プロセスキャッシュタグ生成部の同じ手法ではエントリサイズは固定で管理しやすいが、プログラムを間違えると無駄なところをエントリに記載したり、変更箇所のエントリ記載漏れが発生したりする。CPUがエントリを作成する場合は、エントリ生成に掛かる時間やプログラムの複雑化において問題があるが、最も柔軟な方法である。
【0094】
コンバイン部810は、CPUにより編集されたパケットの内容と、大容量メモリ809に蓄えられた元のパケットの内容とを併せて1つの完全なパケットを作成する部位である。この部位にもプログラマブルな手段が必要であり、フレキシブル部分要素抽出プロセッサと同等の命令列、もしくはアセンブラが同時に生成したコードで復元を行う。
【0095】
従って、本実施の形態によれば、ルータにおけるパケット処理の中核となるネットワークプロセッサにおいて、パケットのアクセスパタンが持つローカリティを有効に用いることにより、処理容量の向上、消費電力の軽減、メンテナンス容易さを提供することができる。
【0096】
すなわち、ヘッダ内の宛先が同一であるなど、パケットのある注目部位が同じであるパケットは同じパケット処理を施す必要があることから、一度施した処理の結果をプロセスキャッシュとして保存し、同じパケット処理を何度もCPUで処理せずに単純な比較手段と置き換え手段のみでパケット処理を行うことにより、ルータの処理容量の向上、消費電力の軽減が期待できる。
【0097】
さらに、このネットワークプロセッサにおいては、同じ部分構成要素を1つまたは複数持つパケットの組を処理する際、各組の最初に届くパケット(X)の処理に掛かる時間と、2番目以降に届く(X)パケットと同じ構成要素をもつパケット(Y)の処理に掛かる時間とを比較すると、パケット(Y)の方の処理時間の方が短く、2番目以降に届く全パケットの処理時間が等しくなるように制御されている。
【0098】
(実施の形態2)
実施の形態2によるネットワークプロセッサとして、プロセスキャッシュを2つもしくはそれ以上備える場合について述べる。この場合、1つのプロセスキャッシュタグ生成部で複数のキャッシュタグを生成する方法と、それぞれに異なるタグを生成する方法がある。
【0099】
前者は、単にプロセスキャッシュメモリの容量不足を補うために複数備えるものである。後者は、プロセスキャッシュメモリの容量不足を補うと共に、抽出範囲を分配することによるプロセスキャッシュの効率利用、さらにはヒット率向上が期待できる。また、接続の仕方においてもプロセスキャッシュを直列に配置するか、並列に配置するかの選択がある。直列に配置すると遅延は増大するが、異なる2つの処理をパケットに施すことができる。並列に配列する遅延は減少するが、とどちらか一方の処理しかパケットに施すことができない。
【0100】
複数のプロセスキャッシュメモリを備えるため、CPUからのプロセスキャッシュメモリアップデート情報をやり取りするパスは全てのプロセスキャッシュメモリに接続している必要があるため、各プロセスキャッシュメモリにアップデート要求のための調停器が必要となる。
【0101】
図10に、後者の場合で、プロセスキャッシュを2つ備える場合の構造を示す。第1段のプロセスキャッシュ構造1001と、第2段のプロセスキャッシュ構造1002を直列に接続した図である。この場合、例えばそれぞれが異なるレイヤの処理を受け持つなどの応用が可能である。各プロセスキャッシュ構造は、前記図1で示した構造と同様であり、また他の構成要素も同様の機能を有する。
【0102】
(実施の形態3)
実施の形態3によるネットワークプロセッサとして、ストリームプロセッサを備える場合について述べる。ネットワークプロセッサでは、たとえプロセスキャッシュにヒットしたとしても何らかの処理をパケットに通過して施したいという要求に答える必要がある。この要求とは、たとえばパケットのロギング、フィルタリング、属性情報の付与等である。この処理に対して通常のCPUと同じ処理媒体を利用すると、その部位がボトルネックとなりプロセスキャッシュにヒットしたとしても結局スループットを向上できなくなる。
【0103】
そこで、プログラマブルではあるが単純な処理が可能で、パケットの流れをせき止めることなく、かつパケットを直接扱うことができるストリームプロセッサを備える。
【0104】
前記図1を応用し、ストリームプロセッサを追加で配置した例を図11に示す。図11において、ストリームプロセッサ1101は最終処理部109の中に存在する。最終処理部ではヘッダのチェックサムやCRC付与等を行うと述べたが、このストリームプロセッサは更に複雑な処理をプログラマブルに行うことができる。
【0105】
最終処理部109には、スケジューラ106からの入力とCPU108からの入力の2つが同時に入るため、これを調停するセレクタが備わっているが、その後にストリームプロセッサ1101を配置する。このストリームプロセッサが通常のプロセッサと異なるのは以下の点である。
【0106】
(1)命令セットが単純である一方、チェックサムやCRC算出等専用の命令セットを備える。
【0107】
(2)レジスタの1つがパケットのバスを直接扱い、パケットの一部をレジスタ参照の様に読み書きできる。このレジスタをストリームレジスタと呼ぶ。
【0108】
(3)ストリームレジスタを読み込み、自由に指定可能な、ある決まったクロック後に書き込めば、パケットの同じ場所に対する読み込みと書き込みとなる。
【0109】
(4)ストリームにあるパケットの一部ビット列やパケット開始からの位置を直接コマンドと理解する。
【0110】
図12に、ストリームプロセッサの構造を示す。付随するCPUは独自の命令セットの他に、パケットストリームにあるパケットの一部ビット列を直接理解するために、前記図7のコンパレータアレイ701と同じフッキング手段、およびパケット開始からのクロックカウンタによる注目位置を調べる手段を内包するパケット命令デコーダ1201備える。
【0111】
パケット命令デコーダ1201がどの場所、どのビットで命令を発行するかはコンパレータアレイの各コンパレータがプログラマブルであるのと同様に自由に定義できる。このパケット命令デコーダはそのほかの通常の命令と同様にプログラムの開始や停止、ジャンプ、各種演算、分岐、データの作成、データやレジスタの変更等の処理を行う。
【0112】
パケットストリーム中のデータは特定のレジスタ(ストリームレジスタ)で参照できる。これを可能にするのがストリームレジスタ読出し部1202である。一般のレジスタと等価に見えるため、各種算術命令やレジスタを扱うその他の命令は一般のレジスタ同様に扱うことができる。
【0113】
CPUは処理に時間がかかり、その処理が終了する時間もまちまちであるが、ここではある決められた時間だけパケットを待たせることができる伸縮自在なディレイFIFO1203を備え、このFIFOがパケットを待たせている間に処理を行い、タイミングを計ってストリームレジスタ書込み部1204でパケットを編集する。この様にストリームレジスタを読み込む処理、書き込む処理の間の遅延でタイミングを取ってプログラムを記載することでパケットを滞ることなく続けて処理することができる。
【0114】
伸縮自在ディレイFIFO1203は、シフトレジスタアレイで構成し、読み出し位置をセレクタにより選択することで伸縮自在性を持たせる。
【0115】
(実施の形態4)
実施の形態4によるネットワークプロセッサとして、ミスヒットキャッシュ機構を備える場合について述べる。プロセスキャッシュにミスヒットした場合は、通常のネットワークプロセッサと同等の処理を施すが、その処理には時間がかかる。処理中に別のパケットが届いた場合、ローカリティが高いことからこのパケットについても同等の処理が行われる可能性があるため、プロセスキャッシュにミスヒットしたすべてのパケットに対してCPUによる処理を行うのは冗長である。したがって、過去のミスヒットを管理し、同じミスヒットが繰り返された場合にはエントリが未記載のため処理せず、先行したパケットの処理を待って結果が出次第、同じ結果を利用する機構を備える。もしくは、先行したパケットの処理を待たずにCPUでパッチ処理を施す機構を備える。
【0116】
図13に、ミスヒットキャッシュ機構を備える構造を示す。エントリ比較部304は、バス1301を通じてミスヒットプロセスキャッシュメモリ1303を参照し、バス1302を通じてエントリを入手する。プロセスキャッシュにミスヒットし、かつミスヒットプロセスキャッシュにヒットした場合(既にミスヒット済みのパケット)は、そのパケットをCPUに送らず待たせるか、CPUに対して既に処理済であることを通知してパッチ処理を依頼する。プロセスキャッシュにミスヒットし、かつミスヒットプロセスキャッシュにミスヒットした場合(初めてミスヒットしたパケット)は、CPUに処理を依頼し、ミスヒットプロセスキャッシュメモリにエントリを登録する。
【0117】
CPUにパッチ処理を依頼する場合は、該当したCPUがそのパケットの処理が割り当てられているCPU(自分である可能性がある)に対して結果の通知依頼を発行するか、スケジューラが同じCPUにパケットを割り当てて対処する等の方法がある。
【0118】
(実施の形態5)
実施の形態5によるネットワークプロセッサとして、内部ソフトウエアの無中断プログラム更新手順について述べる。通常、内部プロセッサ(CPU)のプログラムを更新する必要があるとき、システムを一度止める必要がある。これを回避するために、複数のプロセッサを準備することなく、内部ソフトウエアの無中断プログラム更新手順について述べる。
【0119】
プロセスキャッシュがヒットすると、そのパケットについてはCPUで処理する必要がない。よって、CPU負荷を低く保つことができるため、普段はCPUへのクロック供給を断つことで低電力状態とする。プログラムを書き換える必要がある場合は、CPUへのクロック供給を行いプログラムの更新を行う。もし、全てのCPUが同時にプログラムを書き換えたい場合は、プロセスキャッシュが有効に働き全てのCPUがアイドル状態であるときにプログラムすればよい。
【0120】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0121】
【発明の効果】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【0122】
(1)ルータにおけるパケット処理において、パケットが持つローカリティを有効に生かして、全てのパケットをCPUに送るのではなく、CPUで処理した結果をプロセスキャッシュに蓄える機構を備え、この機構により同じヘッダを持つパケットは最初に一度だけ処理するだけとなるため、将来のユビキタスによる細粒度通信やストリーム、P2P等による大容量通信に対応するととともに、消費電力を軽減することが可能となる。
【0123】
(2)前記(1)により、ネットワークプロセッサにおけるパケット処理性能を改善し、ルータの大容量化、低遅延化、低コスト化、低消費電力化を図ることができる。特に、将来のネットワークプロセッサが抱える処理容量、消費電力の問題に対するブレイクスルーであり、次世代ルータに必要不可欠なものである。
【図面の簡単な説明】
【図1】本発明の実施の形態1におけるプロセスキャッシュおよびプロセスキャッシュヒット時にCPUへの処理をバイパスするスケジューラを備えたネットワークプロセッサの構造を表したブロック図である。
【図2】本発明の実施の形態1において、パケット処理の手順を示したフローチャートである。
【図3】本発明の実施の形態1において、プロセスキャッシュ参照部の構造を表したブロック図である。
【図4】本発明の実施の形態1において、プロセスキャッシュ参照部の中にあるプロセスキャッシュタグ生成部の詳細な構造を表したブロック図である。
【図5】本発明の実施の形態1において、プロセスキャッシュタグ生成部の中にあるプログラマブル部分要素抽出プロセッサのプログラムに必要なアセンブラの例(命令セット)を表した図である。
【図6】本発明の実施の形態1において、プロセスキャッシュタグ生成部の中にあるプログラマブル部分要素抽出プロセッサのプログラムの例(リスト)を表した図である。
【図7】本発明の実施の形態1において、プログラマブル部分要素抽出プロセッサが制御する部位において、プログラムに従って実際にパケットから部分要素を抽出する構造とその動作を表した説明図である。
【図8】本発明の実施の形態1において、スケジューラの内部構造の詳細を示したブロック図である。
【図9】本発明の実施の形態1において、スケジューラが管理するCPUリソース状態リストの内部を表したメモリ構造図である。
【図10】本発明の実施の形態2において、プロセスキャッシュ機構を複数備えるネットワークプロセッサの構造を表したブロック図である。
【図11】本発明の実施の形態3において、プロセスキャッシュ機構を備えるネットワークプロセッサについて、ストリームプロセッサを備える場合の構造を示したブロック図である。
【図12】本発明の実施の形態3において、ストリームプロセッサの構造および処理を示したブロック図である。
【図13】本発明の実施の形態4において、ミスヒットキャッシュを備えるプロセスキャッシュの構造を示したブロック図である。
【図14】本発明の前提として検討した、従来のネットワークプロセッサの構造および処理の流れの例を示したブロック図である。
【符号の説明】
101 入力インタフェース
102 プロセスキャッシュ参照部
103 プロセスキャッシュタグおよびそれを伝えるバス
104 プロセスキャッシュメモリ
105 プロセス情報およびそれを伝えるバス
106 スケジューラ
107 パケットバッファ
108 CPU
109 最終処理部
110 出力インタフェース
111 スイッチングファブリクス
301 プロセスキャッシュタグ生成部
302 プロセスキャッシュアクセス部
303 遅延FIFO
304 エントリ比較部
305 パケットパッチ部
306 ヒットフラグ
307 エントリ列
401 プログラマブル部分要素抽出プロセッサ
402 抽出列メモリ
403 CRC除余項算出回路
404 内部パケット構成部
701 コンパレータアレイ
702 コンパレータ
703 パケットAにおける処理対象の場所
704 サンプラアレイ
705 サンプラの1つであるサンプラA
706 定数メモリ
801 分配器
802 スルーパス
803 CPUパス
804 リソース割り当て器
805 CPUアレイ
806 アイドル状態のCPU
807 CPUリソース状態リスト
808 大容量メモリアクセス調停部
809 大容量メモリ
810 コンバイン部
811 プロセスリクエストバス
1001 プロセスキャッシュ構造(1段目)
1002 プロセスキャッシュ構造(2段目)
1101 ストリームプロセッサ
1201 パケット命令デコーダ
1202 ストリームレジスタ読出し部
1203 伸縮自在ディレイFIFO
1204 ストリームレジスタ書込み部
1301 ヒスヒットプロセスキャッシュタグおよびそれを伝えるバス
1302 ミスヒット情報およびそれを伝えるバス
1303 ミスヒットプロセスキャッシュメモリ

Claims (9)

  1. パケットを受信するインタフェースと、
    前記インタフェースで受信したパケットから情報の部分集合を切り出す切り出し手段と、
    前記切り出し手段で切り出された部分集合情報を記憶するキャッシュメモリと、
    前記キャッシュメモリへのアクセスを制御するキャッシュメモリコントローラと、
    前記部分集合情報の切り出されたパケットが伝送される第1のパスと、
    前記部分集合情報の切り出された部分以外のパケットもしくは、前記受信したパケットの全体が伝送される第2のパスと、
    前記第1のパスと前記第2のパスとを分岐する分岐手段とを有し、
    前記キャッシュメモリコントローラは、ハッシュを用いた比較情報の縮小化法を用いる場合と用いない場合とを選択して、前記インタフェースで受信したパケットの情報の部分集合と前記キャッシュメモリに格納された部分集合情報とを比較し、キャッシュヒットした場合には、前記分岐手段は前記受信したパケットを前記第2のパスへ分岐させることを特徴とするネットワークプロセッサ。
  2. パケットを受信するインタフェースと、
    前記インタフェースで受信したパケットから情報の部分集合を切り出す切り出し手段と、
    前記切り出し手段で切り出された部分集合情報を格納する格納手段と、
    前記格納手段に格納された部分集合情報と前記インタフェースで受信したパケットに含まれる部分集合情報とを比較する比較手段とを有し、
    前記比較手段は、ハッシュを用いた比較情報の縮小化法を用いる場合と用いない場合とを選択して、前記受信したパケットに含まれる部分集合情報と前記格納手段に格納された部分集合情報とを比較し、一致しない場合には前記切り出し手段に対してパケットの部分集合の切り出しを実行させることを特徴とするネットワークプロセッサ。
  3. パケットを受信するインタフェースと、
    前記インタフェースで受信したパケットから情報の部分集合を切り出す切り出し手段と、
    前記切り出し手段で切り出された部分集合情報を格納する格納手段と、
    前記格納手段に格納された部分集合情報と前記インタフェースで受信したパケットに含まれる部分集合情報とを比較する比較手段と、
    前記部分集合情報を処理するプロセッサと、
    パケットに対して送信処理を施す処理手段と、
    パケットの部分集合情報に従ってパケットの処理パスを分岐する分岐手段と、
    前記処理手段と前記格納手段とを結ぶ第1のパスと、
    前記分岐手段と前記プロセッサとを結ぶ第2のパスとを有し、
    前記比較手段は、ハッシュを用いた比較情報の縮小化法を用いる場合と用いない場合とを選択して、前記インタフェースで受信したパケットの部分集合情報と前記格納手段に格納された部分集合情報とを比較し、
    前記分岐手段は、両者が一致しない場合には、前記格納手段から伝送されたパケットを前記第2のパスへ分岐させることを特徴とするネットワークプロセッサ。
  4. 複数のインストラクションセットを切り替えることが可能であり、前記複数のインストラクションセットの一部が、プロセッサ内部の処理パスの経路切り替えスイッチの選択手段を直接制御できる機能を持つインストラクションデコーダを有することを特徴とするネットワークプロセッサ。
  5. 請求項1、2または3記載のネットワークプロセッサにおいて、
    前記パケットの処理部は、複数のインストラクションセットを切り替えることが可能であり、前記複数のインストラクションセットの一部が、プロセッサ内部パイプラインの処理パスの経路切り替えスイッチの選択手段を直接制御できる機能を持つインストラクションデコーダを有することを特徴とするネットワークプロセッサ。
  6. パケットを直接扱うことができるプロセッサ内部パイプラインを有し、
    前記プロセッサ内部パイプラインは、前記パケットの処理においてパケット内部の特徴を利用し、前記パケットの処理手段を切り替える機能を持つ複数のフッキング手段を備えることを特徴とするネットワークプロセッサ。
  7. 請求項1、2または3記載のネットワークプロセッサにおいて、
    前記パケットの処理部は、パケットを直接扱うことができるプロセッサ内部パイプラインを有し、
    前記プロセッサ内部パイプラインは、前記パケットの処理においてパケット内部の特徴を利用し、前記パケットの処理手段を切り替える機能を持つ複数のフッキング手段を備えることを特徴とするネットワークプロセッサ。
  8. パケット処理を行うネットワークプロセッサであって、
    同じ部分構成要素を1つまたは複数持つパケットの組を処理する際、
    各組の最初に届く第1のパケットの処理に掛かる時間と、2番目以降に届く前記第1のパケットと同じ構成要素をもつ第2のパケットの処理に掛かる時間とを比較すると、前記第2のパケットの方の処理時間の方が短く、前記第2のパケットの2番目以降に届く全パケットの処理時間が等しくなるように制御する機能を有することを特徴とするネットワークプロセッサ。
  9. 請求項8記載のネットワークプロセッサにおいて、
    互いに同じ部分構成要素を持たないパケットも併せて処理することを特徴とするネットワークプロセッサ。
JP2003048730A 2003-02-26 2003-02-26 ネットワークプロセッサ Pending JP2004260532A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003048730A JP2004260532A (ja) 2003-02-26 2003-02-26 ネットワークプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003048730A JP2004260532A (ja) 2003-02-26 2003-02-26 ネットワークプロセッサ

Publications (1)

Publication Number Publication Date
JP2004260532A true JP2004260532A (ja) 2004-09-16

Family

ID=33114609

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003048730A Pending JP2004260532A (ja) 2003-02-26 2003-02-26 ネットワークプロセッサ

Country Status (1)

Country Link
JP (1) JP2004260532A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100823130B1 (ko) * 2006-02-02 2008-04-21 삼성전자주식회사 네트워크 프로세서 제어 장치 및 방법
JP2008131351A (ja) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> キャッシュシステム、キャッシュ装置、パケット処理装置、キャッシュ方法、パケット処理方法、キャッシュプログラム、およびパケット処理プログラム
US7440457B2 (en) 2003-10-06 2008-10-21 Hitachi, Ltd. Network-processor accelerator
JP2009033221A (ja) * 2007-07-24 2009-02-12 Auto Network Gijutsu Kenkyusho:Kk 中継接続ユニット
KR100891911B1 (ko) 2006-05-02 2009-04-06 리서치 인 모션 리미티드 푸시 컨텐츠 처리 프로토콜에서의 메타데이터 전달을최적화하는 방법 및 시스템
US7656887B2 (en) 2004-11-05 2010-02-02 Hitachi, Ltd. Traffic control method for network equipment
US7975282B2 (en) 2007-11-01 2011-07-05 Sharp Laboratories Of America, Inc. Distributed cache algorithms and system for time-shifted, and live, peer-to-peer video streaming
US7979419B2 (en) 2007-11-01 2011-07-12 Sharp Laboratories Of America, Inc. Distributed search methods for time-shifted and live peer-to-peer video streaming
JP2012253832A (ja) * 2012-09-26 2012-12-20 Auto Network Gijutsu Kenkyusho:Kk 中継接続ユニット

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7440457B2 (en) 2003-10-06 2008-10-21 Hitachi, Ltd. Network-processor accelerator
US7656887B2 (en) 2004-11-05 2010-02-02 Hitachi, Ltd. Traffic control method for network equipment
KR100823130B1 (ko) * 2006-02-02 2008-04-21 삼성전자주식회사 네트워크 프로세서 제어 장치 및 방법
KR100891911B1 (ko) 2006-05-02 2009-04-06 리서치 인 모션 리미티드 푸시 컨텐츠 처리 프로토콜에서의 메타데이터 전달을최적화하는 방법 및 시스템
JP2008131351A (ja) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> キャッシュシステム、キャッシュ装置、パケット処理装置、キャッシュ方法、パケット処理方法、キャッシュプログラム、およびパケット処理プログラム
JP4630262B2 (ja) * 2006-11-21 2011-02-09 日本電信電話株式会社 キャッシュシステム、キャッシュ装置、パケット処理装置、キャッシュ方法、パケット処理方法、キャッシュプログラム、およびパケット処理プログラム
JP2009033221A (ja) * 2007-07-24 2009-02-12 Auto Network Gijutsu Kenkyusho:Kk 中継接続ユニット
US7975282B2 (en) 2007-11-01 2011-07-05 Sharp Laboratories Of America, Inc. Distributed cache algorithms and system for time-shifted, and live, peer-to-peer video streaming
US7979419B2 (en) 2007-11-01 2011-07-12 Sharp Laboratories Of America, Inc. Distributed search methods for time-shifted and live peer-to-peer video streaming
JP2012253832A (ja) * 2012-09-26 2012-12-20 Auto Network Gijutsu Kenkyusho:Kk 中継接続ユニット

Similar Documents

Publication Publication Date Title
US9639487B1 (en) Managing cache memory in a parallel processing environment
US8127112B2 (en) SIMD array operable to process different respective packet protocols simultaneously while executing a single common instruction stream
US7461210B1 (en) Managing set associative cache memory according to entry type
US7539845B1 (en) Coupling integrated circuits in a parallel processing environment
US7877401B1 (en) Pattern matching
US7636835B1 (en) Coupling data in a parallel processing environment
US7620791B1 (en) Mapping memory in a parallel processing environment
US20080307422A1 (en) Shared memory for multi-core processors
US10210117B2 (en) Computing architecture with peripherals
US7793074B1 (en) Directing data in a parallel processing environment
US7624248B1 (en) Managing memory in a parallel processing environment
WO2001037088A2 (en) Programmable multi-tasking memory management system
JPH04308956A (ja) 受信バッファ
JP2004192620A (ja) マルチプロセッサ・システムでのプロセッサ相互接続を使用するマイクロプロセッサ通信の方法およびデータ処理システム
US20110289257A1 (en) Method and apparatus for accessing cache memory
US20090089546A1 (en) Multiple multi-threaded processors having an L1 instruction cache and a shared L2 instruction cache
JP2005117206A (ja) ネットワークプロセッサアクセラレータ
US20090228663A1 (en) Control circuit, control method, and control program for shared memory
JP2004260532A (ja) ネットワークプロセッサ
US20150242318A1 (en) System and a method for data processing with management of a cache consistency in a network of processors with cache memories
EP1680743B1 (en) Dynamically caching engine instructions for on demand program execution
US7277990B2 (en) Method and apparatus providing efficient queue descriptor memory access
CN100361084C (zh) 用于利用门管理器维护实体顺序的方法和装置
WO2011148925A1 (ja) 半導体装置とネットワークルーティング方法とシステム
EP4036730A1 (en) Application data flow graph execution using network-on-chip overlay

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080226

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080701