(57)【要約】ノンキャッシュメモリに格納されているデータを対象としたアクセスを許容し、これによりキャッシュコヒーレントメモリを迂回するコンテンツアウェア型アプリケーションの処理システムを提供する。本プロセッサは、キャッシュコヒーレントメモリへのシステムインタフェースと、ノンキャッシュコヒーレントメモリへの低遅延メモリインタフェースとを有する。システムインタフェースは、プロセッサが実行する通常のロード／格納命令のメモリアクセスの対象をキャッシュコヒーレントメモリとする。低遅延メモリインタフェースは、プロセッサが実行する特別なロード／格納命令のメモリアクセスの対象をノンキャッシュメモリとして、これにより、キャッシュコヒーレントメモリを迂回させる。【選択図】図１Ａ
2008512780.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによって実行される通常のロード／格納命令のメモリアクセスの対象をキャッシュコヒーレントメモリとする、キャッシュコヒーレントメモリへのシステムインタフェースと、
プロセッサによって実行される特別なロード／格納命令のメモリアクセスの対象をノンキャッシュメモリとするノンキャッシュメモリへの低遅延メモリインタフェースであって、これにより、前記キャッシュコヒーレントメモリを迂回させる、低遅延メモリインタフェースとを備えたプロセッサ。
【請求項２】
請求項１において、前記低遅延インタフェースは前記プロセッサを前記ノンキャッシュメモリに結合するバスであり、この結合によって前記プロセッサと前記ノンキャッシュメモリとの直接アクセスが可能になるプロセッサ。
【請求項３】
請求項１において、前記特別なロード／格納命令はコプロセッサ命令であるプロセッサ。
【請求項４】
請求項１において、さらに、前記低遅延メモリインタフェースと前記ノンキャッシュメモリとの間でデータを移動させるための複数のレジスタを有するプロセッサ。
【請求項５】
請求項４において、前記複数のレジスタは、前記プロセッサの演算ユニット内に位置するプロセッサ。
【請求項６】
請求項５において、前記複数のレジスタは、前記プロセッサの演算ユニット内に位置する主レジスタファイルから分離されているプロセッサ。
【請求項７】
請求項４において、コンテンツアウェア型アプリケーションの処理を実行するように、前記データは前記ノンキャッシュメモリの決定性有限オートマトン（ＤＦＡ）グラフ内に格納されるプロセッサ。
【請求項８】
請求項１において、前記ノンキャッシュメモリが低遅延メモリであるプロセッサ。
【請求項９】
請求項８において、前記低遅延メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、低遅延ダイナミックランダムアクセスメモリ（ＲＬＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）および高速サイクルランダムアクセスメモリ（ＦＣＲＡＭ）より成るグループから選択されるプロセッサ。
【請求項１０】
請求項９において、前記ＲＬＤＲＡＭは２０ナノ秒以下の待ち時間を有するプロセッサ。
【請求項１１】
請求項１において、さらに、複数のプロセッサコアを有するプロセッサ。
【請求項１２】
プロセッサとノンキャッシュメモリとの間で直接にアクセスする方法であって、
前記プロセッサによって実行される通常のロード／格納命令のメモリアクセスの対象を、キャッシュコヒーレントメモリに対するシステムインタフェースを介して、キャッシュコヒーレントメモリとする工程と、
前記プロセッサによって実行される特別なロード／格納命令のメモリアクセスの対象を、ノンキャッシュコヒーレントメモリに対する低遅延メモリインタフェースを介して、ノンキャッシュメモリとする工程であって、これにより、前記キャッシュコヒーレントメモリを迂回させる工程とを備えた直接アクセス方法。
【請求項１３】
請求項１２において、前記特別なロード／格納命令はコプロセッサ命令である直接アクセス方法。
【請求項１４】
請求項１２において、さらに、前記プロセッサと前記ノンキャッシュメモリとの間でデータを移動させるための複数のレジスタを有する直接アクセス方法。
【請求項１５】
請求項１４において、前記複数のレジスタは、上記プロセッサの演算ユニット内に位置する直接アクセス方法。
【請求項１６】
請求項１５において、前記プロセッサに位置する前記複数のレジスタは、前記プロセッサの前記演算ユニット内に位置する主レジスタファイルから分離されている直接アクセス方法。
【請求項１７】
請求項１４において、コンテンツアウェア型アプリケーションの処理を実行するように、前記データは前記ノンキャッシュメモリの決定性有限オートマトン（ＤＦＡ）グラフ内に格納される直接アクセス方法。
【請求項１８】
請求項１２において、前記ノンキャッシュメモリが低遅延メモリである直接アクセス方法。
【請求項１９】
請求項１８において、前記低遅延メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、低遅延ダイナミックランダムアクセスメモリ（ＲＬＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）および高速サイクルランダムアクセスメモリ（ＦＣＲＡＭ）より成るグループから選択される直接アクセス方法。
【請求項２０】
請求項１９において、前記プロセッサは２０ナノ秒以下の待ち時間でＲＬＤＲＡＭにアクセスする直接アクセス方法。
【請求項２１】
請求項１２において、複数のプロセッサコアを有する直接アクセス方法。
【請求項２２】
コンテンツアウェア型アプリケーション処理のプロセッサ速度を向上させるシステムであって、
ノンキャッシュメモリへのインタフェースを有するプロセッサと、
汎用命令セットに含まれる特別なロード／格納命令であって、前記プロセッサと前記ノンキャッシュメモリとの間でデータを移動させ、これにより、キャッシュコヒーレントメモリを迂回させる特別なロード／格納命令とを備えたシステム。
【請求項２３】
プロセッサとノンキャッシュメモリとの間で直接にアクセスする方法であって、
前記ノンキャッシュメモリにデータを格納する手段と、
コヒーレントキャッシュメモリを迂回させて、前記ノンキャッシュメモリから前記プロセッサにデータをロードする手段とを備えた直接アクセス方法。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、2004年9月10日に出願された米国仮特許出願第60/609,211号の利益を主張する、2004年12月28日に出願された米国特許出願第11/024,002号の継続出願である。上記出願の教示内容は全て、参照により本明細書に含まれる。
【背景技術】
【０００２】
開放型システム間相互接続（ＯＳＩ）参照モデルは、伝送媒体を介する通信に使用される７つのネットワークプロトコル層（Ｌ１−Ｌ７）を規定している。上位層（Ｌ４−Ｌ７）はエンド・ツー・エンド通信を表し、下位層（Ｌ１−Ｌ３）は局所的な通信を表す。
【０００３】
ネットワーキングアプリケーションアウェア型（アプリケーションが自動的にネットワークを制御する）システムは、Ｌ３からＬ７までの範囲のネットワークプロトコル層、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）およびシンプルメール転送プロトコル（ＳＭＴＰ）などのＬ７ネットワークプロトコル層、および伝送制御プロトコル（ＴＣＰ）などのＬ４ネットワークプロトコル層を処理し、フィルタリングし、かつ切り換える必要がある。ネットワークプロトコル層の処理に加えて、ネットワーキングアプリケーションアウェア型システムは、ファイアウォール、仮想プライベートネットワーク（ＶＰＮ）、セキュアソケットレイヤ（ＳＳＬ）、侵入検知システム、インターネットプロトコルセキュリティ、アンチウィルス（ＡＶ）およびアンチスパム機能を含む、Ｌ４からＬ７までのネットワークプロトコル層を介するアクセスベースおよびコンテンツベースのセキュリティによって、これらのプロトコルの安全性を同時にワイヤスピードで保護する必要もある。
【０００４】
ネットワークプロセッサが、高スループットのＬ２およびＬ３ネットワークプロトコル処理に利用される。このＬ２およびＬ３ネットワークプロトコル処理は、パケットをワイヤスピードで転送するパケット処理の実行である。一般に、より高度の処理を必要とするＬ４からＬ７までのネットワークプロトコルの処理には、汎用プロセッサが使用される。例えば、Ｌ４ネットワークプロトコルである伝送制御プロトコル（ＴＣＰ）は、パケット内の全ペイロードにわたるチェックサムの計算、ＴＣＰセグメントバッファの管理および複数のタイマの接続毎の常時保持を含む複数の計算集約型タスクを必要とする。汎用プロセッサは、計算集約型タスクを実行できるが、データを処理してワイヤスピードで転送できるだけの十分な性能は備えていない。
【０００５】
さらに、パケットのコンテンツを調べるコンテンツアウェア型アプリケーション（コンテンツを自動的に認識するアプリケーション）は、データストリーム内の固定文字列および可変回数で反復される文字クラスの双方を含む表現を探索する必要がある。ソフトウェアでこのタスクを実行するために、複数の探索アルゴリズムが使用される。このようなアルゴリズムの１つが、決定性有限オートマトン（ＤＦＡ）である。ただし、ＤＦＡ探索アルゴリズムを使用する場合、反復パターンによるグラフサイズの指数関数的拡大およびデータストリーム内の偽一致などの制限が生じる。
【０００６】
これらの制限があるため、コンテンツ処理アプリケーションは、パターン探索によって生じる結果に対してかなりの量の後処理を必要とする。後処理は、接続種別などの他の接続状態情報およびパケットに包含されるプロトコルヘッダ内の特定の値によって、一致パターンを識別する必要がある。またこれは、特定の他のタイプの計算集約型識別を必要とし、例えば、パターン一致が有効であるのは、それがデータストリーム内の特定の位置範囲内にあるか、あるいは、別のパターンが後に続いてかつ先行するパターンから特定の範囲内にあるか、または、先行するパターンから特定のオフセット位置もしくはそのオフセット位置の後にある場合のみである。例えば、正規表現一致は、種々の演算子と単一文字を組み合わせて、複雑な表現の構成を可能にする。
【発明の開示】
【０００７】
本発明は、プロセッサがコンテンツ処理アプリケーションを実行できる速度を向上することを対象とする。プロセッサは、キャッシュコヒーレントメモリへのシステムインタフェースと、ノンキャッシュコヒーレントメモリへの低遅延メモリインタフェースとを有する。システムインタフェースは、プロセッサによって実行される通常のロード／格納命令のメモリアクセスの対象をキャッシュコヒーレントメモリとする。低遅延メモリインタフェースは、プロセッサによって実行される特別なロード／格納命令のメモリアクセスの対象をノンキャッシュメモリとして、これにより、キャッシュコヒーレントメモリを迂回させる。この特別なロード／格納命令は、コプロセッサ命令であってもよい。このメモリは、低遅延型のメモリであってもよい。プロセッサは、複数のプロセッサコアを有することができる。
【０００８】
一実施形態においては、低遅延インタフェースはプロセッサをノンキャッシュメモリに結合するバスであってもよく、この結合によってプロセッサとノンキャッシュメモリとの直接アクセスが可能になる。別の実施形態においては、データは、コンテンツアウェア型アプリケーションの処理を実行するために、メモリ内の決定性有限オートマトン（ＤＦＡ）グラフに格納されていてもよい。
【０００９】
別の実施形態においては、プロセッサは、プロセッサコアとメモリとの間でデータを移動させる複数のレジスタを有してもよい。複数のレジスタは、プロセッサ内に位置してもよい。プロセッサ内に位置する複数のレジスタは、プロセッサ内に位置する主レジスタファイルから分離されることができる。
【００１０】
別の実施形態においては、低遅延メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、低遅延ダイナミックランダムアクセスメモリ（ＲＬＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）および高速サイクルランダムアクセスメモリ（ＦＣＲＡＭ）より成るグループから選択されてもよく、プロセッサはＲＬＤＲＡＭに３０ナノ秒以下の遅延でアクセスする。
【００１１】
ネットワークサービスプロセッサは、本発明の原理に従って、ネットワーク、セキュリティおよびコンテンツ処理を統合する。ネットワークサービスプロセッサは、コンテンツ処理およびセキュリティ処理用の内蔵型ハードウェアアクセラレーションを、インターネットサービスアクセラレーション用のオンチップコプロセッサモジュールとともに、有する。
【００１２】
本発明の上述および他の目的、特徴および利点は、添付の図面に示す本発明の好適な実施形態に関する以下のより詳細な説明から明らかとなるであろう。諸図面を通じて、同様の参照符号は同じ部分を指す。図面は、必ずしも同尺表示ではなく、本発明の原理を示す際には強調表示を行っている。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の好ましい実施形態について説明する。
【００１４】
図１Ａは、本発明の原理によるネットワークサービスプロセッサ１１０を含むセキュリティアプライアンス１００を示すブロック図である。セキュリティアプライアンス１００は、１つのイーサネット（登録商標）ポート（Ｇｉｇ Ｅ）で受信したパケットを別のイーサネット（登録商標）ポート（Ｇｉｇ Ｅ）に切り換えて、受信したパケットに複数のセキュリティ機能を実行した後にそのパケットを転送する、スタンドアロン型システムである。例えば、セキュリティアプライアンス１００を用いて、広域ネットワーク上で受信するパケットに対してセキュリティ処理を実行した後に、そのパケットをローカルエリアネットワークに転送することができる。
【００１５】
ネットワークサービスプロセッサ１１０は、ハードウェアパケット処理、バッファリング、ワークスケジューリング、順序づけ、同期化、およびキャッシュコヒーレンスサポートを含むことにより、全てのパケット処理タスクの速度を高める。ネットワークサービスプロセッサ１１０は、受信されたパケットにカプセル化されている開放型システム間相互接続ネットワークのＬ２からＬ７層までのプロトコルを処理する。
【００１６】
ネットワークサービスプロセッサ１１０は、イーサネット（登録商標）ポート（Ｇｉｇ Ｅ）から物理インタフェースＰＨＹ１０４ａ、１０４ｂを介してパケットを受信し、受信されたパケットに対してＬ７〜Ｌ２ネットワークプロトコル処理を実行し、処理されたパケットを物理インタフェース１０４ａ、１０４ｂから、またはＰＣＩバス１０６を介して転送する。ネットワークプロトコル処理には、ファイアウォール、アプリケーションファイアウォール、ＩＰセキュリティ（ＩＰＳＥＣ）および／またはセキュアソケットレイヤ（ＳＳＬ）を含む仮想プライベートネットワーク（ＶＰＮ）、侵入検知システム（ＩＤＳ）およびアンチウィルス（ＡＶ）などのネットワークセキュリティプロトコルの処理が含まれてもよい。
【００１７】
ネットワークサービスプロセッサ１１０内のダイナミックランダムアクセスメモリ（ＤＲＡＭ）コントローラは、ネットワークサービスプロセッサ１１０に結合される外部ＤＲＡＭ１０８へのアクセスを制御する。ＤＲＡＭ１０８は、ネットワークサービスプロセッサ１１０の外部に存在する。ＤＲＡＭ１０８は、ＰＨＹインタフェース１０４ａ、１０４ｂまたは周辺装置相互接続拡張（ＰＣＩ−Ｘ）インタフェース１０６から受信されるデータパケットを、ネットワークサービスプロセッサ１１０によって処理するために格納する。
【００１８】
ネットワークサービスプロセッサ１１０内の低遅延メモリコントローラは、低遅延メモリ（ＬＬＭ）１１８を制御する。ＬＬＭ１１８は、侵入検知システム（ＩＤＳ）またはアンチウィルス（ＡＶ）アプリケーションに必要とされる場合のある正規表現一致を含む、高速検索を可能にするインターネットサービス／セキュリティアプリケーションに使用されることができる。
【００１９】
正規表現は、文字列一致パターンを表現する一般的な方法である。正規表現の極小要素は、一致されるべき単一の文字である。これらは、ユーザが連結、選択、クリーネ・スターなどを表現できるようにするメタ文字演算子と組み合わせることもできる。連結は、単一文字（またはサブ文字列）から複数の文字一致パターンを生成するために使用され、選択（|）は、２つ以上のサブ文字列のいずれにも一致できるパターンを生成するために使用される。クリーネ・スター（*）を使用することによって、パターンが文字列内でそのパターンのゼロ（０）またはそれ以上の出現に一致することが可能になる。それぞれの演算子と単一文字との組合せにより、複雑な表現の構築が可能になる。例えば、表現（th(is|at)*）は、th、this、that、thisis、thisat、thatis、thatat、などに一致する。
【００２０】
図１Ｂは、図１Ａに示すネットワークサービスプロセッサ１１０のブロック図である。ネットワークサービスプロセッサ１１０は、図１Ａに関連して説明したとおり、少なくとも１つのプロセッサコア１２０を使用して高いアプリケーション性能を提供する。
【００２１】
パケットは、ＳＰＩ−４．２またはＲＧＭIIインタフェースを介して、ＧＭＸ／ＳＰＸユニット１２２ａ、１２２ｂの任意の１つによって処理されるために受信される。パケットは、ＰＣＩインタフェース１２４によって受信されることもできる。ＧＭＸ／ＳＰＸユニット（１２２ａ、１２２ｂ）は、受信されたパケットに含まれるＬ２ネットワークプロトコルヘッダ内の様々なフィールドをチェックすることによって受信されたパケットの前処理を実行し、次にパケットをパケット入力ユニット１２６に転送する。
【００２２】
パケット入力ユニット１２６は、受信されたパケットに含まれるネットワークプロトコルヘッダ（Ｌ３およびＬ４）のさらなる前処理を実行する。前処理には、通信制御プロトコル（ＴＣＰ）／ユーザデータグラムプロトコル（ＵＤＰ）（Ｌ３ネットワークプロトコル）に関するチェックサムのチェックが含まれる。
【００２３】
フリープールのアロケータ（ＦＰＡ）１２８が、レベル２キャッシュメモリ１３０およびＤＲＡＭ１０８における空きメモリのポインタプールを保持する。入力パケット処理ユニット１２６は、ポインタのプールの１つを使用して、受信されたパケットをレベル２キャッシュメモリ１３０またはＤＲＡＭ１０８に格納し、ポインタの別のプールを使用してプロセッサコア１２０に対してワーク待ち行列エントリを割り当てる。
【００２４】
パケット入力ユニット１２６は次に、レベル２キャッシュ１３０またはＤＲＡＭ１０８内のバッファにパケットデータを書き込む、この書込みのフォーマットは、上位層のネットワークプロトコルによるその後の処理を容易にするために、プロセッサコア１２０のうちの少なくとも１つで実行される上位層ソフトウェアに好都合なフォーマットである。
【００２５】
ネットワークサービスプロセッサ１１０は、プロセッサコア１２０をオフロード（負荷軽減）する特定用途向けコプロセッサを有し、これにより、ネットワークサービスプロセッサが高スループットを達成できるようにする。圧縮／解凍コプロセッサ１３２は、受信パケットの圧縮および解凍を専用に実行する。一実施形態では、決定性有限オートマトン（ＤＦＡ）モジュール（図示せず）は、専用のＤＦＡエンジンを有し、アンチウィルス（ＡＶ）、侵入検知システム（ＩＤＳ）および他のコンテンツ処理アプリケーションに必要なパターンおよび署名一致の処理を速くして、最大４Ｇｂｐｓまで加速する。
【００２６】
Ｉ／Ｏインタフェース（ＩＯＩ）１３６は、全体のプロトコルおよびアービトレーション（調停）を管理し、コヒーレントなＩ／Ｏ区分（partitioning）を提供する。ＩＯＩ１３６は、Ｉ／Ｏブリッジ（ＩＯＢ）１３８およびフェッチ・アンド・アッドユニット（ＦＡＵ）１４０を有する。ＦＡＵ１４０内のレジスタを用いて、パケット出力ユニット１４６を介して処理されたパケットを転送するのに使用される出力待ち行列の長さを保持する。ＩＯＢ１３８は、Ｉ／Ｏバス１４２、コヒーレントメモリバス１４４、パケット入力ユニット１２６、およびパケット出力ユニット１４６間で転送される情報を格納するためのバッファ待ち行列を含む。
【００２７】
パケット順序／ワーク（ＰＯＷ）モジュール１４８は、プロセッサコア１２０に対するワークをキューイングして（待ち行列に入れて）スケジューリングする。ワーク待ち行列エントリを待ち行列に追加することによって、ワークがキューイングされる（待ち行列に入れられる）。例えば、ワーク待ち行列エントリは、パケットの到着毎にパケット入力ユニット１２６によって追加される。プロセッサコアのワークのスケジューリングには、タイマユニット１５０が使用される。
【００２８】
プロセッサコア１２０は、ＰＯＷモジュール１４８にワークを要求する。ＰＯＷモジュール１４８は、プロセッサコア１２０のうちの１つに対してワークを選択（すなわち、スケジューリング）し、そのワークを記述するワーク待ち行列エントリを指すポインタをプロセッサコア１２０に返す。
【００２９】
プロセッサコア１２０は、命令キャッシュ１５２、レベル１（Ｌ１）データキャッシュ１５４、および暗号アクセラレーション１５６を有する。一実施形態においては、ネットワークサービスプロセッサ１１０は、１６個のスーパースカラーＲＩＳＣ（縮小命令セットコンピュータ）型プロセッサコア１２０を有する。一実施形態においては、各スーパースカラーＲＩＳＣ型プロセッサコア１２０はＭＩＰＳ６４バージョン２プロセッサコアの拡張版である。
【００３０】
レベル２（Ｌ２）キャッシュメモリ１３０およびＤＲＡＭ１０８は、プロセッサコア１２０およびＩ／Ｏコプロセッサデバイスの全てによって共用される。各プロセッサコア１２０は、コヒーレントメモリバス１４４によってレベル２キャッシュメモリ１３０に結合される。コヒーレントメモリバス１４４は、プロセッサコア１２０、ＩＯＩ１３６およびＬ２キャッシュメモリ１３０およびＬ２キャッシュメモリコントローラ１３１間の全てのメモリおよびＩ／Ｏトランザクションのための通信チャネルである。一実施形態においては、コヒーレントメモリバス１４４は１６個のプロセッサコア１２０に対して適応でき、ライトスルーによって完全にコヒーレントなＬ１データキャッシュ１５４をサポートし、高度なバッファ機能を果たして、Ｉ／Ｏに優先順位付けすることができる。
【００３１】
Ｌ２キャッシュメモリコントローラ１３１は、メモリ参照コヒーレンスを保持する。Ｌ２キャッシュメモリコントローラ１３１は、ブロックがＬ２キャッシュメモリ１３０もしくは外部ＤＲＡＭ１０８に格納されていても、または処理中（in-flight）であっても、あらゆるＦＩＬＬ（フィル）要求に対して、ブロックの最新コピーを返す。Ｌ２キャッシュメモリコントローラ１３１はまた、各プロセッサコア１２０内にデータキャッシュ１５４に対するタグを２部格納する。Ｌ２キャッシュメモリコントローラ１３１は、キャッシュブロック格納の要求のアドレスをデータ−キャッシュタグと比較し、格納命令が別のプロセッサコアからであるか、またはＩ／Ｏインタフェース１３６を介するＩ／Ｏコンポーネントからであるときは、常にプロセッサコア１２０のデータ−キャッシュタグを（２部とも）無効にする。
【００３２】
ＤＲＡＭコントローラ１３３は、最大１６メガバイトのＤＲＡＭをサポートする。ＤＲＡＭコントローラ１３３は、ＤＲＡＭ１０８との６４ビットまたは１２８ビットインタフェースをサポートする。ＤＲＡＭコントローラ１３３は、ＤＤＲ−Ｉ（ダブルデータレート）およびＤＤＲ−IIプロトコルをサポートする。
【００３３】
プロセッサコア１２０によってパケットが処理されると、パケット出力ユニット（ＰＫＯ）１４６は、メモリからパケットデータを読み出し、Ｌ４ネットワークプロトコル後処理を実行し（例えば、ＴＣＰ／ＵＤＰチェックサムを生成し）、上記パケットをＧＭＸ／ＳＰＸユニット１２２ａ、１２２ｂを介して転送し、上記パケットによって使用たＬ２キャッシュ１３０／ＤＲＡＭ１０８を解放する。
【００３４】
低遅延メモリコントローラ１６０は、ＬＬＭ１１８との処理中（in-flight）のトランザクション（ロード／格納）を管理する。低遅延メモリ（ＬＬＭ）１１８は全てのプロセッサコア１２０によって共有される。ＬＬＭ１１８は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、低遅延ダイナミックランダムアクセスメモリ（ＲＬＤＲＡＭ）、同期ランダムアクセスメモリ（ＳＲＡＭ）、高速サイクルランダムアクセスメモリ（ＦＣＲＡＭ）または技術的に公知の他の任意の種類の低遅延メモリであってもよい。ＲＬＤＲＡＭは、３０ナノ秒またはそれ以下のメモリ遅延（すなわち、プロセッサ１２０によって開始されたメモリ要求が満たされるまでに要する時間）を提供する。各プロセッサコア１２０は、低遅延メモリバス１５８によってＬＬＭコントローラ１６０に直接結合される。低遅延メモリバス１５８は、プロセッサコア１２０とＬＬＭコントローラ１６０との間のコンテンツアウェア型アプリケーション処理のための通信チャネルである。ＬＬＭコントローラ１６０は、ＬＬＭ１１８へのアクセスを制御するためにプロセッサコア１２０とＬＬＭ１１８との間に結合される。
【００３５】
コンテンツアウェア型アプリケーションの処理は、ＬＬＭ１１８に格納されるパターン／表現（データ）を利用する。パターン／表現は、決定性有限オートマトン（ＤＦＡ）の形式であってもよい。ＤＦＡは、状態マシンである。ＤＦＡ状態マシンへの入力は、バイト（１バイト＝８ビット）の文字列である（すなわち、ＤＦＡではアルファベットが１バイトである）。各入力バイトは、状態マシンを１つの状態から次の状態に遷移させる。状態および遷移関数は、図２に示すように、グラフ２００で表示することができる。ただし、各グラフノード（２１０ａ…２１０ｃ）は状態であり、異なるグラフ弧（２２０ａ…２２０ｄ）は異なる入力バイトに対する状態遷移を表す。状態は、「Ａ…Ｚ，ａ…ｚ，０…９，」などの、状態に関連する特定の文字を含んでもよい。状態マシンの現在の状態は、グラフの特定のノードを選択するノード識別子である。例えば、入力が「Ｒｉｃｈａｒｄ」というテキストを含むものとすると、ＤＦＡは、初期の状態１（２１０ａ）から、「Ｒ」が読み取られると状態２（２１０ｂ）に移動する。ＤＦＡは、その後に続く６つの文字「ｉ」、「ｃ」、「ｈ」、「ａ」、「ｒ」、「ｄ」に対して、状態２（２２０ｂ）へのループを続ける。
【００３６】
図３は、本発明の原理による縮小命令セットコンピュータ型（ＲＩＳＣ）プロセッサ１２０を示すブロック図である。プロセッサ１２０は、整数演算ユニット３０２、命令ディスパッチユニット３０４、命令フェッチユニット３０６、メモリ管理ユニット（ＭＭＵ）３０８、システムインタフェース３１０、低遅延インタフェース３５０、ロード／格納ユニット３１４、書込みバッファ３１６、およびセキュリティアクセラレータ１５６を有する。プロセッサコア１２０はデバッグ動作を実行できるＥＪＴＡＧインタフェース３３０も有する。システムインタフェース３１０は、外部メモリ、すなわち、外部（Ｌ２）キャッシュメモリ１３０または主／メインメモリ１０８などのプロセッサ１２０の外側にあるメモリへのアクセスを制御する。
【００３７】
整数演算ユニット３０２は、乗算ユニット３２６、少なくとも１つのレジスタファイル（主レジスタファイル）３２８、および２つの保持レジスタ３３０ａ、３３０ｂを有する。保持レジスタ３３０ａ、３３０ｂは、本発明の原理に従って、ＬＬＭのロード／格納命令を使用して、ＬＬＭ１１８に書き込まれるデータと、ＬＬＭ１１８から読み出されたデータとを格納するために使用される。保持レジスタ３３０ａ、３３０ｂは、命令パイプラインの効率を、このパイプラインを機能停止する前に２つの未処理ロードを許容することによって向上させる。２つの保持レジスタを示したが、１つ、または複数の保持レジスタを使用してもよい。乗算ユニット３２６は６４ビットのレジスタ直接乗算を実行できる。命令フェッチユニット３０６は、命令キャッシュ（ＩＣａｃｈｅ）１５２を有する。ロード／格納ユニット３１４はデータキャッシュ１５４を有する。一実施形態においては、命令キャッシュ１５２は３２キロバイトであり、データキャッシュ１５４は８キロバイトであり、書込みバッファ３１６は２キロバイトである。メモリ管理ユニット３０８は、変換ルックアサイドバッファ（ＴＬＢ）３４０を有する。
【００３８】
一実施形態においては、プロセッサ１２０は、トリプルデータ暗号化規格（３ＤＥＳ）、高度暗号化規格（ＡＥＳ）、セキュアハッシュアルゴリズム（ＳＨＡ−１）、メッセージダイジェストアルゴリズム５番（ＭＤ５）のための暗号アクセラレーションを含む暗号アクセラレーションモジュール（セキュリティアクセラレータ）１５６を有する。暗号アクセラレーションモジュール１５６は、転送（ＭＯＶＥ）によって、演算ユニット３０２内の主レジスタファイル３２８と通信する。ＲＳＡおよびディフィ−ヘルマン（ＤＨ）アルゴリズムが、乗算ユニット３２６において実行される。
【００３９】
図４は、コア１２０がＬＬＭ１１８を参照するために使用するＬＬＭのロード／格納命令フォーマット４１０を示す。これらのロード／格納命令は、主レジスタファイル３２８と、Ｌ１データキャッシュ１５４、Ｌ２キャッシュメモリ１３０およびＤＲＡＭ１０８（図３）を含むキャッシュコヒーレントメモリシステムとの間でデータをロード／格納する、典型的な汎用命令セットにおける一般的なロード／格納命令とは異なる。これに対して、これら新規なロード／格納命令は、直接ＬＬＭ１１８（図３）とコア１２０との間で６４ビットまたは３６ビットのいずれかでロード／格納を開始する。これらの命令は、ＬＬＭ１１８におけるデータの検索／格納が、キャッシュコヒーレントメモリシステムを介する場合よりも高速で実行されることを可能にする。ＬＬＭロード／格納命令を介して低遅延メモリ１１８に設けられるこの経路は、キャッシングを必要としない正規表現一致などのアプリケーションの性能を向上させる。このようなロード／格納命令は、「ＤＭＴＣ２」（コプロセッサ２への倍移動（double move）を引き起こす）および「ＤＭＦＣ２」（コプロセッサ２からの倍移動を引き起こす）である。
【００４０】
さらに図４を参照して、ＣＯＰ２フィールド４１２は、その命令がコプロセッサ命令であること、すなわち、汎用命令ではないことを示す。ＤＭＴ／ＤＭＦフィールド４１４は、操作コード、すなわち命令タイプを格納する。命令タイプＤＭＴは、データが低遅延メモリ１１８から保持レジスタ（３３０ａ，３３０ｂ）に移動されることを示す。命令タイプＤＭＦは、データが保持レジスタ（３３０ａ，３３０ｂ）から主レジスタファイルロード内のレジスタに移動されることを示す。一実施形態においては、低遅延メモリ１１８は３６ビット幅であり、各ＤＭＴ／ＤＭＦ命令によって３６ビットが移動される。ｒｔフィールド４１６は、主レジスタファイル内の１つのレジスタを特定する。ｉｍｐｌフィールド４１８は、操作コードと共に、コプロセッサの移動命令のタイプを特定し、かつ保持レジスタ３３０ａ、３３０ｂを特定する。
【００４１】
保持レジスタの内容を主レジスタファイル３３８内のレジスタにロード（ＤＭＦ）するために、ｒｔフィールドは、保持レジスタに格納されているデータの格納先となるレジスタファイル内のレジスタを特定する。例えば、
ＧＰＲ［ｒｔ］＝ＬＬＭ＿ＤＡＴＡ０＜６３：０＞
である。ここで、ＬＬＭ＿ＤＡＴＡ０は保持レジスタ３３０ａであり、ＧＰＲは汎用レジスタである。
【００４２】
書込み（ＤＭＴ）命令の場合、ｒｔフィールド（４１６）は、低遅延メモリ１１８内の位置アドレスを格納する、レジスタファイル内のレジスタを特定する。例えば、
ＬＬＭ＿ＤＡＴＡ０＜６３：０＞＝ｌｌｍｅｍｏｒｙ［ｒｔ］
である。ここで、ＬＬＭ＿ＤＡＴＡ０は保持レジスタ３３０ａであり、ｌｌｍｅｍｏｒｙは低遅延メモリである。
【００４３】
例えば、保持レジスタ３３０ａに低遅延メモリの位置命令の内容をロードする際には、以下のような低遅延メモリのロード命令（ＤＭＴＣ２）を使用することができる。
ＤＭＴＣ２，＄５，0x0400
ここで、ＤＭＴは命令タイプ（４１４）で、すなわち、保持レジスタに低遅延メモリからのデータがロードされることを示す。Ｃ２（ＣＯＰ２）は、コプロセッサ命令（４１２）を示す。主レジスタファイル３２８（図３）内の５番レジスタが、低遅延メモリ内のアドレス位置を保持する。0x0400は保持レジスタ３３０（図３）を特定する（４１８）（この値は定数であり、別の実施形態では異なる値であってもよい）。
【００４４】
同様に、データを保持レジスタ３３０（図３）から主レジスタファイル３２８（図３）に移動させる場合には、低遅延メモリの格納命令を使用することができる。例えば、以下のような低遅延メモリ格納命令を使用することもできる。
ＤＭＦＣ２，＄６，0x0402
ここで、ＤＭＦは命令タイプ（４１４）で、すなわち、保持レジスタの内容を主レジスタファイル３２８内のレジスタ＄６に格納することを示す。Ｃ２（ＣＯＰ２）は、コプロセッサ命令（４１２）を示す。主レジスタファイル３２８内の６番レジスタが、宛先レジスタ（ｒｔ）（４１６）である。0x0402は保持レジスタ３３０（図３）を特定する（４１８）（この値は定数であり、別の実施形態では異なる値であってもよい）。
【００４５】
上述の命令フォーマットは例示的なものであり、当業者であれば、命令フォーマットが一般的でないロード／格納命令を許容するいかなるフォーマットであってもよいことを理解されるはずである。
【００４６】
図５は、本発明に従ってＬＬＭメモリ位置からレジスタファイル内のレジスタにデータをロードするための一般的でないロード命令の使用の一例を示す。一般的でないロード命令を使用してＬＬＭアドレス位置の内容を主レジスタファイル３２８内のレジスタ６（＄６）にロードするためには、以下の命令シーケンスが使用される。
ＤＭＴＣ２  ＄５，  Ｃ１（Ｃ１は0x0400のような一定値である）
ＤＭＦＣ２  ＄６，  Ｃ２（Ｃ２は0x0402のような一定値である）
【００４７】
データをロードするためには、ロード元である低遅延メモリ１１８内のアドレス（位置）が、最初に、主レジスタファイル３２８内のレジスタ５（＄５）に格納される。「ＤＭＴＣ２  ＄５，0x0400」命令は、レジスタ５内に格納されているアドレスによって特定されるＬＬＭ１１８の位置からデータを保持レジスタ３３０ａに読み出す。次に、「ＤＭＦＣ２  ＄６，0x0402」命令は、保持レジスタ３３０ａに格納されているデータを、主レジスタファイル３２８内のレジスタ６（＄６）にロードする。これらの命令は、ＬＬＭバス１５８を使用して全てのキャッシュを効果的に迂回する。
【００４８】
Ｃ１およびＣ２の値を変更すれば、保持レジスタ３３０ａの代わりに保持レジスタ３３０ｂを使用することができる。例えば、Ｃ１＝0x0408は、Ｃ２＝0x040aに変更されてもよい。
【００４９】
以上、本発明をその好ましい実施形態に関連して詳細には示しかつ説明してきたが、当業者には、添付の請求の範囲に包含される本発明の範囲を逸脱することなく形態および細部に様々な変更を実行できることが理解されるであろう。
【図面の簡単な説明】
【００５０】
【図１Ａ】本発明の原理によるネットワークサービスプロセッサを含むネットワークサービス処理システムを示すブロック図である。
【図１Ｂ】図１Ａに示すネットワークサービスプロセッサのブロック図である。
【図２】一般的なＤＦＡグラフを示す図である。
【図３】本発明の原理による縮小命令セットコンピュータ型（ＲＩＳＣ）プロセッサを示すブロック図である。
【図４】ＬＬＭのロード／格納命令フォーマットを示す図である。
【図５】本発明によるロード／格納操作の例示的使用を示す図である。
【符号の説明】
【００５１】
１０８，１３０  キャッシュコヒーレントメモリ
１１８  ノンキャッシュメモリ
【図１Ａ】
2008512780.tif 000003
【図１Ｂ】
2008512780.tif 000004
【図２】
2008512780.tif 000005
【図３】
2008512780.tif 000006
【図４】
2008512780.tif 000007
【図５】
2008512780.tif 000008
【国際調査報告】
2008512780.tif 000009
2008512780.tif 000010