JP2007537550A - Storage server architecture using digital semantic processor - Google Patents

Storage server architecture using digital semantic processor Download PDF

Info

Publication number
JP2007537550A
JP2007537550A JP2007513396A JP2007513396A JP2007537550A JP 2007537550 A JP2007537550 A JP 2007537550A JP 2007513396 A JP2007513396 A JP 2007513396A JP 2007513396 A JP2007513396 A JP 2007513396A JP 2007537550 A JP2007537550 A JP 2007537550A
Authority
JP
Japan
Prior art keywords
data
parser
buffer
dxp
spu
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
JP2007513396A
Other languages
Japanese (ja)
Inventor
ソムスブーラ シクダール,
ケビン, ジェローム ローエット,
ジョナサン スウィードラー,
ラジェシュ ネアー、
コーマル ラーシ、
ホーアイ ヴィ トラン、
ケイブ ジャラリ、
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.)
MISTLETOE TECHNOLOGIES Inc
Original Assignee
MISTLETOE TECHNOLOGIES Inc
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
Priority claimed from US10/843,727 external-priority patent/US7251722B2/en
Application filed by MISTLETOE TECHNOLOGIES Inc filed Critical MISTLETOE TECHNOLOGIES Inc
Publication of JP2007537550A publication Critical patent/JP2007537550A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing

Abstract

ストレージサーバー200はセマンティックプロセッサ100を用いてクライアントのリクエストを解析し応答する。セマンティックプロセッサ100内の直接実行パーサ140は、定義された文法にしたがって、クライアントのストレージサーバーのリクエストを含む入力ストリームを解析する。セマンティックプロセッサ実行エンジン150は、データ(例えば、データの移動、数学的及び論理的演算など)の操作をすることができ、クライアントがリクエストしてきたオペレーションを行うために直接実行パーサからのリクエストに応じてマイクロコードセグメントを実行する。このストレージサーバーによれば、作業効率が向上し、いくつかの実施例ではストレージサーバー全体を小型化することが可能になり、メディアデバイスの回路基板上に搭載可能な数個の比較的小型の集積回路から構成することができる。このセマンティックプロセッサ自体は、おそらく数ワットの電力を必要とするにすぎない。
【選択図】図3
The storage server 200 uses the semantic processor 100 to analyze and respond to client requests. A direct execution parser 140 in the semantic processor 100 parses the input stream containing the client's storage server request according to a defined grammar. Semantic processor execution engine 150 can perform operations on data (eg, data movement, mathematical and logical operations, etc.) in response to a request from a direct execution parser to perform an operation requested by a client. Execute a microcode segment. This storage server improves work efficiency and, in some embodiments, allows the entire storage server to be miniaturized, with several relatively small integrations that can be mounted on the circuit board of the media device. It can consist of a circuit. The semantic processor itself probably only requires a few watts of power.
[Selection] Figure 3

Description

関連する出願Related applications

本出願は、2004年5月11に出願されたアメリカ特許出願No.10/843,727、2004年7月28日に出願されたアメリカ仮特許出願No.60/591,978、2004年7月27日に出願されたアメリカ仮特許出願No.60/591,663 、2004年7月22日に出願されたアメリカ仮特許出願No.60/590,738及び2004年7月28日に出願されたアメリカ仮特許出願No.60/592,000の優先権を主張している。   This application is US patent application No. 10 / 843,727 filed on May 11, 2004, US provisional patent application No. 60 / 591,978 filed on July 28, 2004, filed July 27, 2004. United States provisional patent application No. 60 / 591,663, United States provisional patent application No. 60 / 590,738 filed on July 22, 2004, and United States provisional patent application No. 60 / filed on July 28, 2004. Claims 592,000 priority.

2003年1月24日に、Somsubhra Sikdarにより出願された「再構成可能なセマンティックプロセッサ」という題名の同時係属のアメリカ特許出願No.10/351,030を引用することにより、その内容が本出願に組み入れられているものとする。   By quoting copending US patent application No. 10 / 351,030 entitled “Reconfigurable Semantic Processor” filed by Somsubhra Sikdar on Jan. 24, 2003, the contents of which are incorporated into this application. It shall be.

本発明はストレージサーバーに関し、より詳しくはデジタルセマンティックプロセッサ(“digital semantic processor”)を用いたストレージサーバーの実施例に関する。   The present invention relates to a storage server, and more particularly to an embodiment of a storage server using a digital semantic processor.

従来は、ストレージサーバーは、その他のコンピューターやコンピューター機器(以下、「クライアント」とする)に対するメディア及びファイルアクセスを提供するネットワーク接続されたコンピューターである。このストレージサーバーはWorld Wide Network(WAN)や、Local Area Network(LAN)を通してアクセス可能である。また、このストレージサーバーは他のコンピューター機器と専用のポイント・トゥ・ポイント接続を共有している場合もある。   Traditionally, a storage server is a networked computer that provides media and file access to other computers and computer equipment (hereinafter “clients”). This storage server can be accessed through a World Wide Network (WAN) or a Local Area Network (LAN). The storage server may also share a dedicated point-to-point connection with other computer equipment.

ストレージサーバーは、Network Attached Storage (NAS)サーバー、Storage Area Network (SAN)サーバー、アプリケーション形式のサーバーなどを含む様々な種類のものでよい。   Storage servers may be of various types including Network Attached Storage (NAS) servers, Storage Area Network (SAN) servers, application type servers, and so on.

NASサーバーはディレクトリ構造を持つ。NASサーバーに対するリクエストは、通常、ファイルパスまたはファイル名を指定したり、作成や、読み取りや、書き込みや、添付などの作業(action)を指定するものである。NASサーバーは、リクエストを一つまたは複数のディスクのセクターまたはブロックへのディスクアクセストランザクション(disc sector/block disc access transactions)へと変換し、ディスク(またはその他の記憶媒体)にアクセスし、要求されたファイルレベルのトランザクションを実行する。このようなサーバーは、ファイルの開始位置を見つけるためにディレクトリ構造を保持し、それを利用している。また、このようなサーバーは、セグメント化されたファイルを再構成するとともに、ディスクまたは書き込み可能なメディア上に自由なセクターを見つけるために、ファイル・アロケーション・テーブルを保持し、それを利用している。   The NAS server has a directory structure. A request to the NAS server usually specifies a file path or file name, or specifies an action such as creation, reading, writing, or attachment. The NAS server translates the request into disc sector / block disc access transactions to one or more disk sectors or blocks, accesses the disk (or other storage medium), and is requested Perform file-level transactions. Such servers maintain and use a directory structure to find the start of a file. Such servers also maintain and use file allocation tables to reconstruct segmented files and find free sectors on disk or writable media. .

SANサーバーは、一般的に、ディスクセクターまたはブロックに基づいたトランザクションに対する直接のリクエストを受け取る。そして、SANサーバーは、ファイルシステムやデータブロック間の関係を理解しなくてもよい。ブロックリクエストは、メディアデバイス上の物理的なブロック位置に関係することもあるが、より典型的には、SANサーバーは論理上のブロックをサポートする。このようにして、サーバーは、物理的に単一のディスクドライブを、論理上で複数のディスクドライブとして見えるようにすることができる。また、RAID(Redundant Array of Independent Disks)スキームのように、物理的に複数のディスクドライブを、理論上で単一のディスクドライブとして見えるようにすることができる。   SAN servers typically receive direct requests for transactions based on disk sectors or blocks. And the SAN server does not need to understand the relationship between file systems and data blocks. A block request may relate to a physical block location on the media device, but more typically the SAN server supports logical blocks. In this way, the server can make a physical single disk drive appear logically as multiple disk drives. Further, like a RAID (Redundant Array of Independent Disks) scheme, a plurality of disk drives can be made to appear as a single disk drive in theory.

アプリケーション形式のサーバーは、一般的には、メディア特有の(media-specific)フォーマットでメディアに対するアクセスを提供する。例えば、アプリケーションスタイルのサーバーは、(ファイル名を知らないかもしれない、もしくはファイルに直接アクセスする権限を持たないかもしれない)クライアントから明確なファイルパスやファイル名が得られなくても、ストリーミング形式の音楽または映像に対するアクセスを提供することができる。一方で、ファイルからストリーミングメディアを読み取り、それをストリーミングパッケトフォーマットでカプセル化する。   Application-type servers generally provide access to media in a media-specific format. For example, an application-style server (which may not know the file name or may not have permission to access the file directly) does not have a clear file path or file name from the client, Access to music or video can be provided. On the other hand, it reads the streaming media from the file and encapsulates it in the streaming packet format.

構造上、大多数のストレージサーバーは、一般目的のコンピューターとほとんど異ならない(場合によっては、一般的なコンピューターより多くの高速度のディスクドライブ及びディスクバスコントローラーを備えていることもある)。図1は、典型的なストレージサーバー20のブロック図である。中央処理装置(CPU)22は、一般的には1つまたは複数のマイクロプロセッサであり、格納されたプログラム命令に従ってサーバーを操作する。このプロセッサは、逐次命令を処理する実行形式を提案し、またそれを導入したフォン・ノイマンにちなんで、フォン・ノイマン(VN)プロセッサまたはフォン・ノイマン(VN)マシンと呼ばれることが多い。   By structure, the vast majority of storage servers are very different from general purpose computers (in some cases, they may have more high-speed disk drives and disk bus controllers than typical computers). FIG. 1 is a block diagram of a typical storage server 20. The central processing unit (CPU) 22 is typically one or more microprocessors and operates the server according to stored program instructions. This processor is often called a von Neumann (VN) processor or a von Neumann (VN) machine, after von Neumann, who has proposed and implemented an execution format that processes sequential instructions.

CPU 22は、前面のバス(FSB)26を介して、メモリコントローラー/ハブ(MCH)24に接続される。これは、マイクロプロセッサのプログラム命令を格納したり、データを保存したり、供給したり、消費したりするその他のシステムコンポーネントにCPU 22を接続させることに関する。MCH 24は、メモリバス32を介してシステムメモリ30を制御する。また、MCH 24は、ハブバス42を介してPCI (Peripheral Component Interconnect)ブリッジ40と通信することにより、メモリ30またはCPU 22のどちらか一方とPCI接続されたデバイスとの間でデータをやり取りする。   The CPU 22 is connected to a memory controller / hub (MCH) 24 via a front bus (FSB) 26. This relates to connecting the CPU 22 to other system components that store microprocessor program instructions, store, supply, and consume data. The MCH 24 controls the system memory 30 via the memory bus 32. Further, the MCH 24 communicates with a PCI (Peripheral Component Interconnect) bridge 40 via the hub bus 42 to exchange data between either the memory 30 or the CPU 22 and a PCI-connected device.

PCIブリッジ40及びPCIバス44を介して多様なデータソースやデータシンクデバイスをサーバー20に接続することができる。ストレージサーバーとして使う目的で2つの不可欠なデバイスは、ネットワークインターフェイスカード(NIC) 50とATA (AT Attachment)のようなメディアコントローラ60である。   Various data sources and data sink devices can be connected to the server 20 via the PCI bridge 40 and the PCI bus 44. Two essential devices for use as a storage server are a network controller card (NIC) 50 and a media controller 60 such as an ATA (AT Attachment).

NIC 50は、サーバーがローカルエリアネットワーク(LAN)や他のネットワークまたはFibre Channelスイッチ構造に直接接続することを可能にする。また、クライアントや当該サーバーに対してネットワークが見える状態とする他の装置とのポイント・トゥ・ポイント接続をも可能にする。こうして、NIC 50は、サーバーに対するコミュニケーションパスを提供し、データリクエストをクライアントから受け取るとともにそれらのリクエストに応答する。実際のネットワークの物理的コミュニケーションプロトコルは、例えば、それに対し、どのような有線または無線のコミュニケーションプロトコルが使用されても、異なるNICを挿入するとともに当該NIC用のソフトウェアデバイスドライバーをCPU 22へとロードすることによって、変えることができる。   The NIC 50 allows the server to connect directly to a local area network (LAN) or other network or Fiber Channel switch structure. It also enables point-to-point connections with other devices that make the network visible to clients and servers. Thus, NIC 50 provides a communication path to the server, receives data requests from clients, and responds to those requests. The actual network physical communication protocol, for example, inserts a different NIC and loads the software device driver for that NIC into the CPU 22 no matter what wired or wireless communication protocol is used Can be changed.

ATAコントローラー60は、ハードディスクや、光ディスクや、テープドライブなどを接続するための少なくとも一つのATAバス62を提供する。各ATAバス62により、一つまたは二つのメディアデバイス64をストレージサーバー20に接続することができる。サーバーによっては、SATA (serial ATA)制御装置やSCSI (Small Computer System Interface)ホストアダプターのようなその他の制御装置を利用してもよい。   The ATA controller 60 provides at least one ATA bus 62 for connecting a hard disk, an optical disk, a tape drive, and the like. Each ATA bus 62 allows one or two media devices 64 to be connected to the storage server 20. Depending on the server, other control devices such as a SATA (serial ATA) control device or a SCSI (Small Computer System Interface) host adapter may be used.

ストレージサーバーとして作動するためには、CPU 22は多様なソフトウェアプログラムを実行しなければならない。NASの場合、2つの一般的なフォーマットはNFS (Networked File System)とCIFS (Common Internet File System)である。前者のプロトコルは主としてUNIX環境下で用いられ、後者のプロトコルは主としてマイクロソフトのOS環境下で用いられる。NFSサーバーに対して、以下のようなソフトウェアプロセスがNFSを実行するのを助ける。すなわち、NIC 50用ネットワークデバイスドライバーや、TCP/IPドライバーや、TCP/IPからNFSサーバーソフトウェアへとデータを送るためのRPC (Remote Procedure Call) ドライバーおよびXDR (External Data Representation) ドライバーや、NFSサーバーソフトウェアそれ自体や、ローカルファイルシステムや、NFSサーバーソフトウェアをローカルファイルシステムとインターフェイスで接続するためのVFS (Virtual File System)ドライバーや、データバッファリングソフトウェアや、記憶装置制御装置/ホストアダプター(storage controller/host adapter)用のデバイスドライバなどがある。各NFSデータトランザクションに対して、CPU 22は、それぞれのソフトウェアの間で要求されるようにコンテキストを変化させながら、これらのソフトウェアそれぞれに対してプロセスを実行しなければならない。十分な能力を提供するためには、ストレージサーバー20は、比較的高速かつ高出力で動作しなければならず、マイクロプロセッサと、チップセットと、ネットワークインターフェイスと、メモリと、その他の周辺機器と、冷却ファンと、を操作するために、強制的な空気冷却及び十分な電力供給を必要とする。現在の技術状況では、1 Gbps (Gigabit per second) の全二重通信のネットワークコネクションの場合、約300ワットの出力を必要とし、800立方インチの体積を占め、記憶媒体を抜きにして約1500ドルの出費となる。   In order to operate as a storage server, the CPU 22 must execute various software programs. For NAS, two common formats are NFS (Networked File System) and CIFS (Common Internet File System). The former protocol is mainly used in a UNIX environment, and the latter protocol is mainly used in a Microsoft OS environment. For the NFS server, the following software processes help run NFS: Network device driver for NIC 50, TCP / IP driver, RPC (Remote Procedure Call) driver for sending data from TCP / IP to NFS server software, XDR (External Data Representation) driver, NFS server software VFS (Virtual File System) driver, data buffering software, storage controller / host adapter (storage controller / host) to interface itself, local file system, NFS server software with local file system device drivers for adapters). For each NFS data transaction, CPU 22 must execute a process for each of these software, changing context as required between the respective software. In order to provide sufficient capacity, the storage server 20 must operate at relatively high speed and high power, including a microprocessor, chipset, network interface, memory, and other peripherals, In order to operate the cooling fan, forced air cooling and sufficient power supply are required. In the current state of the art, a network connection for 1 Gbps (Gigabit per second) full-duplex communication requires about 300 watts of power, occupies a volume of 800 cubic inches, and excludes storage media for about $ 1500 It will be an expense.

明確にNASリクエストを処理することを目的とした、ICハードウェアを作ろうと試みているメーカーもある。一般的に、このようなICの設計コストは、流れの速い遠隔コミュニケーションプロトコルの業界では回収することはできない。この業界では、特殊なプロトコルとストレージインターフェイスの限られた組み合わせに対処するように作成された特定の複雑な回路設計がすぐに時代遅れとなることはよくある。   Some manufacturers are trying to make IC hardware specifically designed to handle NAS requests. In general, the design cost of such an IC cannot be recovered by the fast-flowing remote communication protocol industry. In this industry, certain complex circuit designs created to handle the limited combination of specialized protocols and storage interfaces often quickly become obsolete.

多くのストレージサーバーのアプリケーションにおいて、マイクロプロセッサによるシーケンシャルなプログラムを用いたプローチは非効率的でありしかもかさばるものであると認識されている。現状では大多数のストレージサーバーは(most of the storage server's existence)、NICで受け取ったクライアントからのリクエストに応じてストレージサーバーの機能を実行するのに用いられている。リクエスト自身は、リクエストされた機能とオプションを限られた数しか持たないプロトコル特有のフォーマットで表されている。これらのリクエストに応答して、しっかり定義されたストレージシステムのコマンドがメディアデバイスに送られ、これらのコマンドの結果がプロトコル特有のデータグラムをクライアントへ返すのに用いられる。   In many storage server applications, a microprocessor-based approach using sequential programs has been recognized as inefficient and bulky. At present, the majority of storage servers (most of the storage servers's existence) are used to perform storage server functions in response to requests from clients received by the NIC. The request itself is represented in a protocol-specific format with a limited number of requested functions and options. In response to these requests, well-defined storage system commands are sent to the media device, and the results of these commands are used to return protocol-specific datagrams to the client.

ストレージサーバーがプログラム可能であり、コード共通性を持つことはかなり望ましい特性である。したがって、大容量のプロセッサとチップセット(例えば、Intel Corporation 社製やAdvanced Micro Device社製の物)が使用されてきており、ストレージサーバーをプログラム可能にするとともに標準的なオペレーティングシステムの使用を可能にし、それによりコストを削減している。残念ながら、そのようなオペレーション構造では、一般目的のマイクロプロセッサに基づいたシステムの柔軟性及び能力は、ほとんど使われなくなるか、あるいは非効率的に使われるにすぎないようになるであろう。   It is a highly desirable property that the storage server is programmable and has code commonality. Therefore, high-capacity processors and chipsets (for example, those from Intel Corporation and Advanced Micro Device) have been used to allow storage servers to be programmed and standard operating systems to be used. , Thereby reducing costs. Unfortunately, with such an operational structure, the flexibility and power of a general purpose microprocessor-based system will be rarely used or only used inefficiently.

本発明は、ストレージサーバーに対して異なるアーキテクチャを提供するものであり、その代表的な実施例では、一般的にセマンティックプロセッサと称されているものが用いられる。このようなデバイスは構成可能であり、その処理(processing)がその「プログラミング(programming)」に依存するVNマシンのように再構成可能であるのが好ましい。本明細書では、「セマンティックプロセッサ」は少なくとも2つの以下の構成要素を持つ。すなわち、定義された文法に基づいて入力ストリームを解析するための直接実行パーサ(direct execution perser)と、直接実行パーサからのリクエストに応答してデータを制御すること(例えば、データの移動、数学的演算及び論理的演算など)ができる直接実行エンジンである。   The present invention provides a different architecture for the storage server, and in its representative embodiment, what is commonly referred to as a semantic processor is used. Such a device is configurable and is preferably reconfigurable like a VN machine whose processing depends on its "programming". As used herein, a “semantic processor” has at least two components: A direct execution parser to parse the input stream based on a defined grammar, and control data in response to requests from the direct execution parser (eg, data movement, mathematical It is a direct execution engine that can perform operations and logical operations).

セマンティックプロセッサのプログラミングはVNマシンに用いられる標準的なマシンコードと異なる。VNマシンでは、データパケットのプロトコル入力パラメーターは、シーケンシャルなマシン命令を用いて、非効率な点を分岐し、ルーピングしかつスレッド切り替えしながら、可能性のあるすべての入力と順次比較される。これに対し、セマンティックプロセッサは入力ストリームの「意味(semantics)」に直接応答する。言い換えると、セマンティックプロセッサが実行する「コード」セグメントは、入力データにより直接駆動(driven)される。例えば、パケット内に現れる可能性がある75程度のCIFSコマンドについて、セマンティックプロセッサが、パケットで送られる実際のCIFSコマンドに関連する文法やマイクロ命令をロードすることを可能にするのに必要なのは、以下で記述される実施例における単一の解析サイクルだけである。   Semantic processor programming differs from the standard machine code used for VN machines. In a VN machine, the protocol input parameters of the data packet are compared sequentially with all possible inputs using sequential machine instructions, branching, looping and thread switching inefficiencies. In contrast, the semantic processor responds directly to the “semantics” of the input stream. In other words, the “code” segment executed by the semantic processor is directly driven by the input data. For example, for about 75 CIFS commands that can appear in a packet, the following is needed to allow the semantic processor to load the grammar and microinstructions associated with the actual CIFS command sent in the packet: Only a single analysis cycle in the embodiment described in.

以下の実施例で記述するストレージサーバーアプリケーションでは、セマンティックプロセッサは、従来のVNプロセッサ、チップセット及び付属機器の機能の多くを実行することができる。セマンティックプロセッサは、ネットワークポートまたはデータグラムインターフェイスからデータグラムを受け取る。これらのデータグラムの一部は、データオペレーションに対するクライアントのリクエストを含むであろう。セマンティックプロセッサは、サーバーによってサポートされるサーバープロトコル文法に対して設計されたパーサテーブルを用いて、受け取ったデータグラムの要素を解析する。何が解析されたかに基づいて、セマンティックプロセッサは、一つまたは複数のデータ記憶装置と共に応答のデータオペレーションを実行する。データオペレーションは、単一または複数の簡易実行ユニット上でマイクロ命令コードセグメントを起動することで実行される。データオペレーションが実行されると、セマンティックプロセッサはクライアントに送り返すための応答データグラムを作成する。この結果として生じるオペレーション上の効率により、いくつかの実施例においては、ストレージサーバー全体は、比較的小型で、メディアデバイスのプリント基板上に配置することができる数個の集積回路へとまとめることができ、セマンティックプロセッサ自身は、おそらく数ワットの電力を消費するに過ぎない。   In the storage server application described in the examples below, the semantic processor can perform many of the functions of a conventional VN processor, chipset, and accessory equipment. The semantic processor receives datagrams from a network port or datagram interface. Some of these datagrams will contain client requests for data operations. The semantic processor parses the elements of the received datagram using a parser table designed for the server protocol grammar supported by the server. Based on what has been parsed, the semantic processor performs a response data operation with one or more data stores. Data operations are performed by invoking microinstruction code segments on single or multiple simple execution units. When a data operation is performed, the semantic processor creates a response datagram to send back to the client. Due to the resulting operational efficiency, in some embodiments, the entire storage server can be packaged into several integrated circuits that are relatively small and can be placed on a printed circuit board of a media device. Yes, the semantic processor itself will probably only consume a few watts of power.

以下の添付図面に基づいて本件出願の開示内容(発明を実施するための最良の形態)を読むことにより、本説明を最もよく理解できるだろう。   The present description can be best understood by reading the disclosure of the present application (the best mode for carrying out the invention) based on the accompanying drawings below.

図2は、本発明に係る多くの実施例を表現するハイレベルブロック図を示している。ストレージサーバーは、データグラムインターフェイス90及びストレージインターフェイス110を有するセマンティックプロセッサ100を備えている。このデータグラムインターフェイス90は、例えばネットワーク80(以下で示す)やクライアントとのポイント・トゥ・ポイント接続を介して、クライアントにサーバーとの接続を提供する。ストレージインターフェイス110は、セマンティックプロセッサに、クライアントからのリクエストに応じてデータ記憶装置120とのデータトランザクションを開始するためのパスを提供する。このデータ記憶装置はローカルであってもよい。また、このデータ記憶装置は、例えばセマンティックプロセッサ100がNASサーバーをクライアントに対してエミュレートしている場合、図示されているサーバーにネットワーク接続されていてもよい。その場合、同時に遠隔SANサーバーを物理的記憶装置として用いられる。   FIG. 2 shows a high-level block diagram representing many embodiments according to the present invention. The storage server includes a semantic processor 100 having a datagram interface 90 and a storage interface 110. The datagram interface 90 provides the client with a server connection, eg, via a network 80 (shown below) or a point-to-point connection with the client. Storage interface 110 provides the semantic processor with a path to initiate a data transaction with data storage device 120 in response to a request from a client. This data storage device may be local. In addition, this data storage device may be network-connected to the illustrated server, for example, when the semantic processor 100 is emulating a NAS server for a client. In that case, the remote SAN server is used as a physical storage device at the same time.

図3は、セマンティックプロセッサ100を備えたストレージサーバー200のより詳細なブロック図を示している。データグラムインターフェイス90は、セマンティックプロセッサ100のバッファ130を物理的インターフェイスデバイス(PHY)92と接続させる。物理的インターフェイスデバイス(PHY)92の例としては、イーサーネットや、Fibre Channelや、802.11xや、ユニバーサル・シリアル・バス(USB)や、ファイヤーワイヤーや、その他の物理レイヤーインターフェイスなどに対する光学的なあるいは電気的なもしくは無線によるドライバーとレシーバーのペアなどが挙げられる。データグラムインターフェイスは、入力デジタルデータストリームをバッファ130に供給し、バッファ130から出力デジタルデータストリームを受け取る。   FIG. 3 shows a more detailed block diagram of the storage server 200 with the semantic processor 100. Datagram interface 90 connects buffer 130 of semantic processor 100 with physical interface device (PHY) 92. Examples of physical interface devices (PHY) 92 include optical or optical interfaces for Ethernet, Fiber Channel, 802.11x, Universal Serial Bus (USB), FireWire, and other physical layer interfaces. For example, an electric or wireless driver / receiver pair. The datagram interface provides an input digital data stream to the buffer 130 and receives an output digital data stream from the buffer 130.

図3において、ストレージインターフェイス110は、データ記憶装置120とセマンティックプロセッサ100間のブロックI/Oバスとして実施される。様々な実施例において、このバスは、セマンティックプロセッサ及びデータ記憶装置の構成のされかたによっては、ケーブル接続(iSCSI、Fibre Channel、SATA)でもサーキットボードバス(SATA)でもよい。図3は、ディスク制御装置122、ドライブエレクトロニクス124及びディスク126(ディスクの円盤、モーター及び読み書き用ヘッドをまとめたもの)などのハードディスクタイプのメディアデバイスの主な要素を示している。   In FIG. 3, the storage interface 110 is implemented as a block I / O bus between the data storage device 120 and the semantic processor 100. In various embodiments, the bus may be a cable connection (iSCSI, Fiber Channel, SATA) or a circuit board bus (SATA) depending on how the semantic processor and data storage are configured. FIG. 3 shows the main elements of a hard disk type media device such as the disk controller 122, drive electronics 124 and disk 126 (a collection of disk disks, motors and read / write heads).

セマンティックプロセッサ100の構成の1つが、図3で示しているストレージサーバー内に示されている。セマンティックプロセッサ100は、バッファ130において受け取る入力パケットまたは入力フレーム(例えば入力「ストリーム」)の処理を制御する直接実行パーサ (DXP:direct execution parser)を備えている。DXP 140は、現在のフレームから現在のシンボルまでの構文解析に基づいた、終端シンボル(terminal symbol)もしくは非終端のシンボル(non-termina symbol)からなる内蔵パーサスタック(perser stack)を保持している。パーサスタックの一番上にあるシンボルが終端シンボルである場合、DXP 140は、入力ストリームの先頭の部分のデータを終端シンボルと比較し、作業を継続するためにそれらが一致することを期待する。パーサスタックの一番上にあるシンボルが非終端シンボルである場合、DXP 140は非終端シンボル及び現在の入力データを用いて、スタックにある文法生成物(grammber production)を拡張する。解析が継続している間、DXP 140はセマンティックコード実行エンジン(SEE)150に入力セグメントを処理するか、あるいはその他のオペレーションを実行するように指示する。   One configuration of the semantic processor 100 is shown in the storage server shown in FIG. Semantic processor 100 includes a direct execution parser (DXP) that controls the processing of incoming packets or incoming frames (eg, incoming “streams”) received at buffer 130. The DXP 140 maintains a built-in parser stack consisting of terminal symbols or non-termina symbols based on parsing from the current frame to the current symbol. If the symbol at the top of the parser stack is a terminal symbol, DXP 140 compares the data at the beginning of the input stream with the terminal symbol and expects them to match to continue working. If the symbol at the top of the parser stack is a non-terminal symbol, DXP 140 uses the non-terminal symbol and the current input data to extend the grammber production on the stack. While parsing continues, DXP 140 instructs Semantic Code Execution Engine (SEE) 150 to process the input segment or perform other operations.

この構造は、データの要求に応じて実行エンジンにタスクを割り当てる高性能文法パーサを備えており、データグラムプロトコルなどの高度に構成された入力に対し適応性があり、効果を発揮する。好ましい実施例では、セマンティックプロセッサは、そのテーブルを変更することにより再構成することができ、それによりVNマシンの魅力である柔軟性を持つ。セマンティックプロセッサは、与えられた入力に応答するので、一般的にVNマシンより小規模の命令セットで効率的に動作する。以下で説明するが、セマンティックプロセッサはマシンコンテキスト内でのデータ処理を可能にするので、この命令セットは有益なものである。   This structure is equipped with a high performance grammar parser that assigns tasks to execution engines according to data requirements, and is adaptable and highly effective for highly structured inputs such as datagram protocols. In the preferred embodiment, the semantic processor can be reconfigured by changing its table, thereby having the flexibility that is the attraction of VN machines. Semantic processors typically operate more efficiently with a smaller instruction set than VN machines because they respond to given inputs. As described below, this instruction set is useful because the semantic processor allows data processing within the machine context.

セマンティックプロセッサ100は、所定の機能を実行するために少なくとも三つのテーブルを用いる。生成規則を検索するためのコード(code for retrieving production roule)は、パーサテーブル(PT)170内に保存される。文法的生成規則(grammatical production roules)は、生成規則テーブル(PRT)180内に保存される。SEE 150に対するコードセグメントは、セマンティックコードテーブル(SCT)190内に保存される。   Semantic processor 100 uses at least three tables to perform a predetermined function. A code for retrieving production rules (code for retrieving production roule) is stored in a parser table (PT) 170. Grammatical production rules (grammatical production rules) are stored in a production rule table (PRT) 180. Code segments for SEE 150 are stored in Semantic Code Table (SCT) 190.

パーサテーブル170内のコードは、生成規則テーブル180内の生成規則を示す。パーサテーブルのコードは、例えば行列(row-column)フォーマットまたはコンテント・アドレッサブル(content addressable)フォーマットで保存される。行列フォーマットでは、テーブルの行は、内部パーサスタック上の非終端コードによってインデックス付けされる。そして、テーブルの列は、入力(例えば、現在Si-Bus上にあるシンボル)の先頭の部分にある入力データ値によってインデックス付けされる。コンテント・アドレッサブル(content addressable)フォーマットでは、非終端コードと入力データ値を連結することにより、テーブルに対する入力を提供することができる。   The code in the parser table 170 indicates the generation rule in the generation rule table 180. The parser table code is stored, for example, in a row-column format or a content addressable format. In matrix format, table rows are indexed by non-terminal code on the internal parser stack. The columns of the table are then indexed by the input data value at the beginning of the input (eg, a symbol currently on Si-Bus). In the content addressable format, input to the table can be provided by concatenating non-terminal codes and input data values.

生成規則テーブル180は、パーサテーブル170内のコードによってインデックス付けされる。これらのテーブルは、パーサテーブルへのクエリー(query)が、非終端コード及び入力データ値に適用できる生成規則を直接送り返してくるよう、図3に示すようにリンクされてもよい。直接実行パーサは、スタックの一番上にある非終端コードをPRTから送り返されてきた生成規則と置き換え、その後、その入力の解析を継続する。   The production rule table 180 is indexed by the code in the parser table 170. These tables may be linked as shown in FIG. 3 so that the query to the parser table sends back directly the generation rules applicable to the non-terminal code and input data values. The direct execution parser replaces the non-terminal code at the top of the stack with the production rules sent back from the PRT, and then continues parsing its input.

実際には、生成規則テーブル内に、多くの異なる文法に対するコードが同時に存在することができる。例えば、1つのコードのセットを、MAC(Media Access Control)パケットヘッダーフォーマット解析に割り当て、他のコードのセットを、アドレス解決プロトコル(ARP:Address Resolution Protocol)パケット処理や、インターネットプロトコル(IP)パケット処理や、通信制御プロトコルパケット(TCP)処理や、リアルタイム転送プロトコル(RTP)処理などに割り当てることができる。CIFSや、NFSや、その他のストレージサーバーのプロトコルに対する文法は、ストレージサーバー機能を追加するために、生成規則コードメモリに追加される。非終端コードは、生成規則コードメモリ122内で何らかの特定の順序で割り当てられる必要もなく、特定のプロトコルに関連するブロック内で何らかの特定の順序で割り当てられる必要もない。   In practice, code for many different grammars can exist simultaneously in the production rule table. For example, one set of codes is assigned to MAC (Media Access Control) packet header format analysis, and the other set of codes is used for Address Resolution Protocol (ARP) packet processing and Internet Protocol (IP) packet processing. It can also be assigned to communication control protocol packet (TCP) processing, real-time transfer protocol (RTP) processing, and the like. Syntax for CIFS, NFS, and other storage server protocols is added to the production code memory to add storage server functionality. Non-terminal codes need not be assigned in any particular order in the production rule code memory 122, nor do they need to be assigned in any particular order within the blocks associated with a particular protocol.

セマンティックコードテーブル190は、パーサテーブルコードごとにインデックス付けすることができるか、生成規則テーブル180からインデックス付けすることができるか、もしくは両方でインデックス付けすることができる。一般的に、解析結果により、DXP 140は、所定の生成規則に対して、セマンティックコードテーブル190からのコードセグメントがSEE 150によってロードされかつ実行されるべきかどうかを判断することができる。   Semantic code table 190 can be indexed by parser table code, indexed from production rule table 180, or both. In general, the analysis results allow DXP 140 to determine whether a code segment from semantic code table 190 should be loaded and executed by SEE 150 for a given production rule.

セマンティックコード実行エンジン150は、マシンコンテキスト160に対するアクセスパスを持つ。このマシンコンテキスト160は構成されたメモリインターフェイスであり、コンテキストシンボルによるアドレス化が可能である。マシンコンテキスト160と、パーサテーブル170と、生成規則テーブル180と、セマンティックコードテーブル190は、シンクロナスDRAM及びシンクロナスCAMのような内蔵メモリデバイスや、外部メモリデバイスや、またはこのようなリソースの組み合わせを用いてもよい。各テーブルまたはコンテキストは単に、共有された物理的メモリスペースに対するコンテキストインターフェイスに、その他のテーブルまたはコンテキストのうち一つまたは複数を提供するだけでよい。   The semantic code execution engine 150 has an access path to the machine context 160. The machine context 160 is a configured memory interface and can be addressed by a context symbol. The machine context 160, the parser table 170, the generation rule table 180, and the semantic code table 190 include internal memory devices such as synchronous DRAM and synchronous CAM, external memory devices, or combinations of such resources. It may be used. Each table or context may simply provide one or more of the other tables or contexts to the context interface for the shared physical memory space.

セマンティックプロセッサ100の機能上のブロックに対する最適な設計の詳細については、本発明の範囲内には入っていない。適用できるセマンティックプロセッサの機能上のブロックの詳細なアーキテクチャのいくつかの例については、同時係属のアメリカ特許出願No. 10/351,030を参照されたし。この出願の内容は、それを引用することにより本出願に組み入れられているものとする。   Details of the optimal design for the functional blocks of the semantic processor 100 are not within the scope of the present invention. See copending US Patent Application No. 10 / 351,030 for some examples of detailed architectures of functional blocks of applicable semantic processors. The contents of this application are hereby incorporated by reference into this application.

ストレージサーバーコンテキスト内におけるセマンティックプロセッサ100の機能は、具体例により、さらによく理解できる。本例では、イーサーネット、IP、TCPがサポートする構造と共にCIFSコマンド及びCIFSデータ構造が用いられる。当業者であれば、ここで教示された概念がその他のサーバーコミュニケーションプロトコルにも同様に適用できるということを理解するであろう。   The functionality of the semantic processor 100 within the storage server context can be better understood by way of example. In this example, CIFS commands and CIFS data structures are used together with structures supported by Ethernet, IP, and TCP. Those skilled in the art will appreciate that the concepts taught herein are equally applicable to other server communication protocols.

図4は、イーサーネット/IP/TCP/CIFSフレーム250(トレーラー(trailers)とチェックサム(checksums)は無視している)に関連したヘッダー/データブロックを示している。MACヘッダーは、その他のものとともに、サーバー200に提供するように意図されたあらゆるフレームに対するサーバー200のMACアドレスを含むようになっている。サーバー200は、さまざまなネットワーク及び転送プロトコルに対応しているが、この例では、インターネットプロトコル(IP)のネットワークヘッダー及び通信制御プロトコル(TCP)の転送プロトコルヘッダーを用いている。このTCPヘッダーの後ろに、CIFSストレージメッセージブロック(SMB)ヘッダーであるヘッダー1と、ヘッダー1に関連したデータを有するSMBデータバッファであるバッファ1が続く。多くのCIFSオペレーションコードは、フレームの長さの最大長が限度を越えない限り、必要に応じて同じSMB内のその他のCIFSオペレーションコードと組み合わせることができる。第二、第三などのオペレーションコードに対する追加のヘッダーは、第一のヘッダーの最後の数フィールドだけを持ち、それ以外の全フィールドは第一のヘッダーからインプライド(implied)される。図のように、最後のSMBヘッダーは、ヘッダーNとバッファNを含む。   FIG. 4 shows the header / data block associated with Ethernet / IP / TCP / CIFS frame 250 (ignoring trailers and checksums). The MAC header is intended to include the MAC address of the server 200 for every frame intended to be provided to the server 200, along with others. The server 200 supports various networks and transfer protocols. In this example, a network header of Internet protocol (IP) and a transfer protocol header of communication control protocol (TCP) are used. The TCP header is followed by a header 1 which is a CIFS storage message block (SMB) header and a buffer 1 which is an SMB data buffer having data related to the header 1. Many CIFS operation codes can be combined with other CIFS operation codes in the same SMB as needed as long as the maximum frame length does not exceed the limit. The additional headers for the second, third, etc. operation codes have only the last few fields of the first header, and all other fields are implied from the first header. As shown, the last SMB header includes a header N and a buffer N.

図5は、フレームの第一のSMBヘッダーとSMBバッファのさらなる詳細を示している。完全なSMBヘッダーは、最初にそのプロトコルを示す。すなわち、キャラクター(character)0xFFは、これがSMBヘッダーであることを示す。コマンドキャラクターがプロトコルキャラクターの後に続き、リクエストされているのかあるいは応答すべきなのかいずれかの動作のためのオペレーションコードを示す。ステータス及びフラグフィールドは、SMBのその他のフィールドをどう解釈すべきかを判定するか、エラーが起こっているかどうかを判定するか、またはその両方を行う。MACシグネチャー(この例ではMACはメディア確認コード(Media Authorization Code)のことを表している)は、それが有効なとき、メッセージ認証に用いられる。   FIG. 5 shows further details of the first SMB header and SMB buffer of the frame. The complete SMB header first indicates the protocol. That is, character 0xFF indicates that this is an SMB header. The command character follows the protocol character and indicates the operation code for either the requested or responded action. The status and flag fields determine how to interpret other fields in the SMB, determine whether an error has occurred, or both. A MAC signature (in this example, MAC stands for Media Authorization Code) is used for message authentication when it is valid.

SMB内の次の4個のフィールドは、TIDと、PIDと、UIDと、MIDフィールドである。TID(階層識別子(Tree Identifier))は、クライアントがサーバーリソースとの接続に成功したときに、サーバーからクライアントに対して付与される。クライアントは、後のリクエストで、この付与されたTIDを用いて、そのリソースに問い合わせる。PID(process identifier)はクライアントにより付与される(サーバーがPIDを書きとめ、それを用いてクライアントに応答するが、その使用は主としてクライアントによる)。UID(user identifier)は、接続を承認したユーザーを識別するために、サーバーにより付与される。MID(multiple identifier)により、クライアントは、各トランザクション毎に異なるMIDを用いることで、未解決の複数のトランザクションに対し、同一のPIDを用いることができる。   The next four fields in the SMB are the TID, PID, UID, and MID fields. A TID (Tree Identifier) is given from the server to the client when the client successfully connects to the server resource. The client makes an inquiry to the resource using the assigned TID in a later request. A PID (process identifier) is given by the client (the server writes down the PID and uses it to respond to the client, but its use is primarily by the client). The UID (user identifier) is given by the server to identify the user who authorized the connection. The MID (multiple identifier) allows the client to use the same PID for a plurality of unresolved transactions by using a different MID for each transaction.

パラメーターフィールドは長さと構造が可変であり、一般的に第一のキャラクターは次のパラメーターの長さを表し、その後にSMBオペレーションコードに適したパラメーターワードが続く。このオペレーションコードが、第二のSMBヘッダーとSMBバッファが続くことを示すものである場合、パラメーターワードの一部は、後続のオペレーションコードを示し、後続の短縮されたヘッダーの埋め合わせをする。   The parameter field is variable in length and structure, generally the first character represents the length of the next parameter, followed by the parameter word appropriate for the SMB operation code. If this operation code indicates that the second SMB header and SMB buffer follow, a portion of the parameter word indicates the subsequent operation code and makes up for the subsequent shortened header.

SMBはバイトカウントとバイトカウント長のバッファで終了する。このようなバッファは、例えば、ファイル名の送信、書き込んだデータのサーバーへの転送、読み込んだデータのクライアントへの転送などに用いられる。   SMB ends with a byte count and byte count length buffer. Such a buffer is used, for example, for transmitting a file name, transferring written data to a server, transferring read data to a client, and the like.

このような背景のもとで、セマンティックプロセッサ100(図3に示している)に対する基本的なCIFSの機能性についての説明を進めることができる。   Against this backdrop, a description of basic CIFS functionality for the semantic processor 100 (shown in FIG. 3) can proceed.

図3及び4に示されているように、バッファ130で受信した新しい各フレームは、MACヘッダーから始まる。このMACヘッダーは、宛先アドレスと、送信元アドレスと、ペイロードタイプフィールドと、ペイロードと、チェックサムを含んでいる。DXP 140は、宛先アドレスがストレージサーバー200に対して割り当てられたアドレスと一致し、かつそれがブロードキャストアドレスと一致することを期待して宛先のアドレスを解析する。宛先のアドレスが解析できない場合、DXPはSEE 150上でSEEコードセグメントを立ち上げてこのフレームを消去する。そうでなければ(otherwise)、送信元のアドレスは、SEEに消費され(consumed)、返答時に使用するために保存される。そしてペイロードタイプフィールドが解析される。   As shown in FIGS. 3 and 4, each new frame received in buffer 130 begins with a MAC header. This MAC header includes a destination address, a source address, a payload type field, a payload, and a checksum. The DXP 140 analyzes the destination address in the hope that the destination address matches the address assigned to the storage server 200 and that it matches the broadcast address. If the destination address cannot be parsed, DXP will launch a SEE code segment on SEE 150 and erase this frame. Otherwise (otherwise) the source address is consumed by the SEE and saved for use in reply. The payload type field is then parsed.

本例では、IPに対してMACペイロードタイプが解析される。したがって、DXPはIPヘッダーをそのパーサスタック上で解析するための生成規則をロードし、IPヘッダーを介して動作する。例えば、これは、パケットがストレージサーバーに提供されるよう意図されていたことを裏付けるために宛先IPアドレスを解析することや、IPヘッダーチェックサムをチェックしたり、アドレッシングテーブルをアップデートしたり、パケット返信やその他の処理のために宛先及び送信元アドレスを保存したり、フラグメント化されたIPパケットを再構築したりするためにSEEをディスパッチング(dispatching)すること、を含んでもよい。このIPヘッダーで示されるプロトコルは、DXPパーサスタック上で次のヘッダー(本例ではTCPヘッダー)用の生成規則をロードするために解析される。   In this example, the MAC payload type is analyzed for IP. Therefore, DXP loads the production rules for parsing the IP header on its parser stack and works through the IP header. For example, this can be done by analyzing the destination IP address to check that the packet was intended to be delivered to the storage server, checking the IP header checksum, updating the addressing table, Storing the destination and source addresses for processing and other processing, and dispatching the SEE to reconstruct the fragmented IP packet. The protocol indicated by this IP header is parsed to load the production rules for the next header (TCP header in this example) on the DXP parser stack.

その後TCPヘッダーが解析される。SEEは、宛先IPアドレスと、送信元IPアドレスと、宛先ポートと、送信元ポートと、に関係するTCPコネクションコンテキストをロードするために送られる(これは有効なコネクションが存在している場合に限られる。本実施例では、このような場合を想定している)。SEEはその後、連続番号と、確認応答番号と、ウインドウと、チェックサムと、コネクションコンテキストをアップデートするのに必要なその他のフィールドと、を消費する(consume)。このコンテキストは返答時に使用するため保存される。   The TCP header is then parsed. SEE is sent to load the TCP connection context associated with the destination IP address, source IP address, destination port, and source port (only if a valid connection exists). In this embodiment, such a case is assumed). The SEE then consumes a sequence number, an acknowledgment number, a window, a checksum, and other fields necessary to update the connection context. This context is saved for use when replying.

MAC、IP及びTCPヘッダーがストレージサーバーとの有効なコネクションに対して解析されたと仮定すると、入力ストリーム上の次のシンボルは、このデータがSMBリクエストを含んでいることを示すものとなる。DXP 140は、このシンボルを解析し、CIFS文法生成規則をそのスタック上へロードする。   Assuming that the MAC, IP, and TCP headers have been parsed for a valid connection with the storage server, the next symbol on the input stream indicates that this data contains an SMB request. DXP 140 parses this symbol and loads the CIFS grammar generation rules onto its stack.

この次の入力シンボルは、CIFSコマンド(CIFSオペレーションコード)用の非終末シンボルと適合(matched)される。例えば、パーサテーブルは、CIFSオペレーションコード及び非終末シンボルの取りうるすべての組み合わせそれぞれに対するエントリーを持つことができる。CIFSコマンドが解析されると、コマンドフィールド内にあるCIFSオペレーションコードに関係する文法がパーサスタック上へとロードされる。   This next input symbol is matched with a non-terminal symbol for the CIFS command (CIFS operation code). For example, the parser table may have an entry for each possible combination of CIFS operation code and non-terminal symbol. When a CIFS command is parsed, the grammar associated with the CIFS operation code in the command field is loaded onto the parser stack.

CIFSヘッダーのステータスフィールド及びフラグフィールドは解析されてもよいが、SEE 150により消費され、パケットコンテンツを解釈するときに使用するためにマシンコンテキスト160内に保存されるのが好ましい。   CIFS header status and flag fields may be parsed, but are preferably consumed by SEE 150 and stored in machine context 160 for use in interpreting packet content.

また、MACシグネチャーと、TIDと、PIDと、UIDと、MIDフィールドは、SEEに向かわされる(送られる)。このSEEは、このフィールドを返信フレームの再構築時に使用するために保存し、パケットが有効(valid)な送信元から送られ、適切なリソースへと向けられているかを認証するためにマシンコンテキスト160内で検索を実行する。   Also, the MAC signature, TID, PID, UID, and MID fields are directed (sent) to the SEE. This SEE saves this field for use when reconstructing the reply frame, and uses the machine context 160 to authenticate that the packet is sent from a valid source and is directed to the appropriate resource. Perform a search within.

パラメーターフィールドのフォーマットはCIFSオペレーションコードによって変化する。オペレーションコードによっては、パラメーターフィールドの要素を解析するか、マイクロコードのセグメントを使用するパラメーターを消費するようSEE 150に指示するのが好ましいかもしれない。以下において、一般的なCIFSコマンドに関する例をいくつか挙げる。   The format of the parameter field depends on the CIFS operation code. Depending on the operation code, it may be preferable to instruct the SEE 150 to parse the parameter field elements or consume parameters that use microcode segments. Below are some examples of common CIFS commands.

CIFS NEGOTIATEクライアントのリクエストは、新しいクライアントにより、そのクライアントには理解できるCIFS方言を識別するために用いられる。NEGOTIATE用のパラメーターフィールドは、受け入れることができる方言をヌル終端文字列(null-terminated strings)としてリスト化するバイトカウントシンボルへと続くバイトカウントを含む。NEGOTIATE用の生成規則は、DXP 140に指示し、SEE 150にバイトカウントを保存させ、その後DXP 140は第一の入力文字列をNULLキャラクターまで解析する。文字列が既知の方言(dialect)であると解析された場合、DXP 140は、SEE 150に現在のフレームコンテキストに対応する方言用のコードを保存させる。また、SEE 150は、バイトカウントシンボルが解析完了(すべての方言が解析完了されたことを示す)されたかどうかを判定する。そうでなければ、SEE 150は、非終端シンボルをパーサスタックの一番上に載せ、DXP 140にその他の方言に対する残りの入力を解析させる。このプロセスはバイトカウントシンボルが解析され終わるまで続く。同時にSEE 150は、シンボルを入力ストリームの先頭へと載せ、DXP 140に方言の解析をやめさせる。DXP 140は、その後パケットの解析を終え、SEE 150に方言を(例えばpre-programmed hierarchical preferenceに従って)選択するように指示し、クライアントに新しいセッションに関連するパラメーターを付けた返答パケットを返信する。さらに、SEE 150は、新しいセッションのコンテキストをマシンコンテキスト160内にセットアップする。   A CIFS NEGOTIATE client request is used by a new client to identify a CIFS dialect that the client can understand. The parameter field for NEGOTIATE contains a byte count followed by a byte count symbol that lists acceptable dialects as null-terminated strings. The production rules for NEGOTIATE tell DXP 140 to have SEE 150 store the byte count, and then DXP 140 parses the first input string up to the null character. If the string is parsed as a known dialect, DXP 140 causes SEE 150 to save the code for the dialect corresponding to the current frame context. SEE 150 also determines whether the byte count symbol has been analyzed (indicating that all dialects have been analyzed). Otherwise, SEE 150 places the non-terminal symbol on top of the parser stack and causes DXP 140 to parse the remaining input for the other dialects. This process continues until the byte count symbol is parsed. At the same time, SEE 150 places the symbol at the beginning of the input stream and causes DXP 140 to stop parsing the dialect. DXP 140 then finishes parsing the packet, directs SEE 150 to select a dialect (eg, according to a pre-programmed hierarchical preference), and returns a reply packet with the parameters associated with the new session. In addition, SEE 150 sets up a new session context in machine context 160.

クライアントがNEGOTIATE返答を受信すると、通常、クライアントは、セッションを完了するためにSESSION_SETUP_ANDXに対するSMBを送信する。DXP 140は、SMBを受信するとすぐに、第一のパラメーター(単語の合計数)を解析することができ、それがオペレーションコードとして適切であることを確認することができる。第二のパラメーターであるAnd X Commandは、このコマンドの後にこのフレーム内にもまた第二のコマンドXが現れるかどうか(及びどの第二のコマンドXが現れるかどうか)を示すものである(なお、CIFSは、「AndX」を用いて、以下に続くオペレーションコードと連結させてマルチオペレーションコードSMBを形成することができるオペレーションコードを識別する)。And X Commandが二番目のオペレーションコードが存在しない(0xFF)ことを示す場合、DXP 140はこれを解析することができ、作業を続けることができる。別々のオペレーションコードが存在する場合は、処理はより複雑になる。   When the client receives a NEGOTIATE reply, the client typically sends an SMB for SESSION_SETUP_ANDX to complete the session. As soon as DXP 140 receives the SMB, it can analyze the first parameter (total number of words) and confirm that it is appropriate as an operation code. The second parameter, And X Command, indicates whether (and which second command X appears in) the second command X also appears in this frame after this command. CIFS uses “AndX” to identify an operation code that can be concatenated with the following operation code to form a multi-operation code SMB). If And X Command indicates that the second operation code does not exist (0xFF), DXP 140 can parse it and continue working. If there are separate operation codes, the process becomes more complex.

第二のオペレーションコードは、様々なやり方で処理することができる。一つ目の方法は、第一と第二のオペレーションコードの取り得るすべての組み合わせに対して異なる別々の文法を書く方法である。この方法は、実現可能ではあるが、パーサテーブル及び生成規則テーブルの制限次第では、非効率的になりかねない。二つ目の方法は、マルチレベル文法を使用する方法である。この方法では、高レベルな文法がオペレーションコードを解析し、低レベルな文法が解析された各コードを処理する。三つ目の方法は、SEE 150からのプッシュバックメカニズムを使用する方法である。この方法では、例えば、And X Command パラメーターは、SEE 150にAnd X Commandを入力ストリームから保存するようにさせる生成規則をロードする。第一のオペレーションコードが完全に解析され終わると、SEE 150は、And X Commandパラメーターを入力ストリームの先頭へと戻すマイクロコードセグメントを起動するように指示される。DXP 140はその後、新しいオペレーションコードを解析し、第二のオペレーションコードが存在する場合には、その時点から新しいオペレーションコード用のパラメーターフィールド文法をロードすることを続ける。SMB内で追加されたAnd X Commandも、同様の方法で処理することができる。   The second operation code can be processed in various ways. The first method is to write different grammars for all possible combinations of the first and second operation codes. Although this method is feasible, it can be inefficient depending on the limitations of the parser table and the generation rule table. The second method uses multilevel grammar. In this method, the high-level grammar analyzes the operation code and processes each code for which the low-level grammar has been analyzed. The third method is to use a pushback mechanism from SEE 150. In this way, for example, the And X Command parameter loads a production rule that causes SEE 150 to save And X Command from the input stream. When the first operation code has been fully parsed, SEE 150 is instructed to activate a microcode segment that returns the And X Command parameter to the beginning of the input stream. DXP 140 then parses the new operation code and, if a second operation code exists, continues to load the parameter field grammar for the new operation code from that point. And X Command added in SMB can be processed in the same way.

その他のSESSION_SETUP_ANDXのパラメーターは、大半がセッションコンテキスト内に保存されるかあるいはパスワードの場合にはベリファイされるので、おそらく解析されることなくSEE 150により消費されることになろう。ヌル終端文字列(null-terminated strings)のパラメーターは、ヌル終端シンボルを探すために解析することができ、その後に、SEE150に対する、この時点で長さが決定されたシンボルの保存命令が続く。   The other SESSION_SETUP_ANDX parameters will probably be consumed by SEE 150 without being parsed, since they are mostly stored in the session context or verified in the case of passwords. The parameters of null-terminated strings can be parsed to look for null-terminated symbols, followed by a save instruction for the SEE 150 whose length has been determined at this point.

一旦SESSION_SETUP_ANDXのコマンドが解析されると、SEE 150は返答パケットを作成するよう指示されることができる状態となる。しかし、第二のオペレーションコードが含まれる場合は、各オペレーションコードが処理されるまでパケットは完成されない。   Once the SESSION_SETUP_ANDX command is analyzed, the SEE 150 can be instructed to create a reply packet. However, if the second operation code is included, the packet is not completed until each operation code is processed.

LOGOFF_ANDXコマンドはセッションを終了するのに用いられる。このオペレーションコードに応じてセマンティックプロセッサにより実行される第一の機能は、SEE 150にこのセッション用のセッションコンテキストをマシンコンテキスト160から取り除かせることである。   The LOGOFF_ANDX command is used to end a session. The first function performed by the semantic processor in response to this operation code is to have the SEE 150 remove the session context for this session from the machine context 160.

TREE_CONNECT_ANDXコマンドは、セッションを、パラメーターストリングパスにより示される共有されたサーバーリソースと結びつけるために用いられる。このコマンドとともに含まれるパス文字列は、長さに対してのみ解析できるか、正しいサーバー名に対して解析できるか、もしくはその両方に対して解析できる。パス名の残りは解析することができる。ただ、有効なパスは、書き込み可能リソース上で頻繁に作成、破壊することができるので、各ディレクトリに対し的確な生成規則コードを維持することは挑戦的(challenging)かもしれない。したがって、一般的に、そのパスは開始のためにSEE 150に送られることとなる。他のやり方として、DXP 140は、「/」キャラクターを探して解析し、一回に一つのレベルだけSEE 150にパスを送信する。   The TREE_CONNECT_ANDX command is used to associate a session with the shared server resource indicated by the parameter string path. The path string included with this command can be parsed for length only, parsed for the correct server name, or both. The rest of the path name can be parsed. However, since valid paths can be created and destroyed frequently on writable resources, it may be challenging to maintain the correct generation code for each directory. Thus, in general, the path will be sent to SEE 150 for initiation. Alternatively, DXP 140 searches for and analyzes the “/” character and sends a pass to SEE 150 one level at a time.

SEE 150は、ブロックI/Oバスを介してデータ記憶装置120に保存されたディレクトリを読み込み、ルートディレクトリから開始し、そして、要求されたパスが存在してそれがクライアントから制限されていないことを確認することで、特定のパスを通過する。パスが正当であり、有効であると仮定すると、SEE 150は返答パケットを作成し、セッションコンテキスト内にパスを保存する。   SEE 150 reads the directory stored in data storage device 120 via the block I / O bus, starts from the root directory, and confirms that the requested path exists and is not restricted by the client. By confirming, it passes a specific path. Assuming the path is valid and valid, SEE 150 creates a reply packet and saves the path in the session context.

NT_CREATE_ANDXコマンドは、ファイルまたはディレクトリを作成するか開く。DXP 140は、TREE_CONNECTコマンドを使用するときと同様、データ記憶装置120とのブロックI/Oトランザクションのために、このコマンドの大部分をSEE 150に渡してもよい。SEE 150は、可能ならば、適切なディレクトリを修正し、開かれたファイルに対しファイル識別子(file identifier(FID))を割り当て、この開かれたファイルに対するファイルコンテキストをマシンコンテキスト160内で作成することにより、ファイルを開くか、作成するか、もしくはその両方を行う。SEE 150はその後、ファイル作成リクエスト/ファイルオープンリクエストの結果を示す適切な返答フレームをフォーマットする。   The NT_CREATE_ANDX command creates or opens a file or directory. DXP 140 may pass most of this command to SEE 150 for block I / O transactions with data storage device 120, similar to when using the TREE_CONNECT command. SEE 150, if possible, modifies the appropriate directory, assigns a file identifier (FID) to the opened file, and creates a file context in machine context 160 for the opened file. To open and / or create a file. SEE 150 then formats an appropriate response frame indicating the result of the file creation request / file open request.

READ_ANDXコマンドは、クライアントにより、オープンFIDからデータを読み込むのに使用され、WRITE_Xコマンドは、クライアントにより、オープンFIDへデータを書き込むのに使用される。DXPがFIDパラメーターに至るまで解析すると、それはSEE 150に、Si-バスからFIDを取り出し、対応するファイルコンテキストをマシンコンテキスト160内で検索するように信号で伝える。SEE 150はその後、適切なブロックI/Oトランザクションを実行し、データ記憶装置120に対してデータの読み込みまたは書き込み、クライアントに対する返信パケットを作成する(construct)。なお、書き込みオペレーション返信フレームは、場合によっては、データ記憶装置とのすべてのブロックI/Oトランザクションが完了されるまでに生成されて送信されるようにしてもよい。   The READ_ANDX command is used by the client to read data from the open FID, and the WRITE_X command is used by the client to write data to the open FID. When DXP analyzes down to the FID parameter, it signals SEE 150 to retrieve the FID from the Si-bus and search the corresponding file context in machine context 160. The SEE 150 then executes the appropriate block I / O transaction, reads or writes data to the data storage device 120, and constructs a reply packet to the client (construct). In some cases, the write operation return frame may be generated and transmitted before all block I / O transactions with the data storage device are completed.

上述したコマンドは、実行可能性のあるCIFSコマンドの一部である。当業者であれば、これら上記の例から、どのようにしてセマンティックプロセッサが完全なCIFS機能を実行するか理解するであろう。さらに、セマンティックプロセッサがこれらのCIFSコマンドを実行することにより例示されるコンセプトは、セマンティックプロセッサ上でその他のストレージサーバープロトコルを実行することに適用できる。   The commands described above are part of a CIFS command that can be executed. Those skilled in the art will understand from these above examples how the semantic processor performs the full CIFS function. Further, the concepts illustrated by the semantic processor executing these CIFS commands can be applied to executing other storage server protocols on the semantic processor.

図6は、その他のセマンティックプロセッサの実施例300を示している。セマンティックプロセッサ300は、4つのセマンティックコード実行エンジン152、154、156、158を備えている。セマンティックコード実行エンジン158は、ブロックI/Oサーキット112と通信する。マシンコンテキスト160は、2つの機能ユニットを備えている。この2つの機能ユニットは、可変マシンコンテキストデータメモリ(VMCD)162と配列マシンコンテキストデータメモリ(AMCD)164である。各SEEは、VMCD 162とはV-バスを介してやり取りを行うことができ、AMCD 164とはA-バスを介してやり取りを行うことができる。   FIG. 6 shows another semantic processor embodiment 300. The semantic processor 300 includes four semantic code execution engines 152, 154, 156, and 158. Semantic code execution engine 158 communicates with block I / O circuit 112. The machine context 160 has two functional units. The two functional units are a variable machine context data memory (VMCD) 162 and an array machine context data memory (AMCD) 164. Each SEE can exchange with the VMCD 162 via the V-bus, and can exchange with the AMCD 164 via the A-bus.

セマンティックプロセッサ300では、DXP 140がSEEタスクを解析中のある特定の点において開始するべきであると決定すると、DXP 140はSEEの内の一つにSCT 140からマイクロ命令をロードするように信号で伝える。いくつかの命令セグメントに対するハンドルは、DXP 140に、それが任意の利用可能なSEEを選択することができることを示すようにしてもよい。また、このハンドルは、特定のSEE(例えばSEE 158は、ブロックI/Oに対するたった一つのアクセスのみ持つ)は、そのコードセグメントを受信するべきであることを示すようにしてもよい。複数のSEEが利用できることにより、いくつかの遅いタスク(例えばブロックI/O)がすべての処理を邪魔することなく、多くのタスクが平行して実行できるようになる。   When semantic processor 300 determines that DXP 140 should start an SEE task at a particular point during analysis, DXP 140 signals one of the SEEs to load microinstructions from SCT 140. Tell. A handle to some instruction segment may cause DXP 140 to indicate that it can select any available SEE. This handle may also indicate that a particular SEE (eg, SEE 158 has only one access to block I / O) should receive that code segment. The availability of multiple SEEs allows many slow tasks (eg, block I / O) to run in parallel without disturbing all processing.

厳密には必要ではないけれども、特定のSEEに特定の種類のタスクを割り振るようにすることもできる。例えば、SEE 152を指定された入力プロトコルSEEとすることができる。この入力プロトコルSEEは、IPと、TCPと、その他のプロトコルの入力側を処理し、クライアントと、セッションと、ファイルコンテキストを入ってくるCIFSフレームからのデータでアップデートするタスクに関与する。また、SEE 154をファイルシステムオペレーションの実行をするように指定することができる。このファイルシステムオペレーションは、例えば、ディレクトリと、ファイル・アロケーション・テーブルと、ユーザー/パスワードリストを理解しかつアップデート(update)したり、ユーザー及びリクエストなどを認証したりすることを含む。また、SEE 156を例えば、返信フレームの作成などのような、プロトコルの出力側の処理をするように指定することができる。さらに、SEE 158をデータ記憶装置とのやり取りを処理するように指定することもできる。このように分割することで、一つのSEEは、異なる解析タスクへと取り掛かりはじめているかもしれないDXP140を経由する必要なくその他のSEE上でマイクロコードを起動することができる。例えば、SEE 154はブロックI/O SEE 158上でタスクを起動し、ディレクトリを読み出すか書き換える(update)ことができる。他の例として、データが返信パケットに対して準備が整った時点で、出力プロトコルSEE 156はその他のSEEにより設定されるセマフォ(semaphore)を有することができる。   Although not strictly necessary, a specific type of task can be assigned to a specific SEE. For example, SEE 152 can be a designated input protocol SEE. This input protocol SEE is responsible for the task of processing the input side of IP, TCP and other protocols and updating the client, session, and file context with data from the incoming CIFS frame. In addition, SEE 154 can be specified to perform file system operations. This file system operation includes, for example, understanding and updating directories, file allocation tables, and user / password lists, authenticating users and requests, and the like. Further, the SEE 156 can be designated to perform processing on the output side of the protocol such as creation of a reply frame. In addition, SEE 158 may be specified to handle exchanges with data storage devices. This division allows one SEE to launch microcode on other SEEs without having to go through DXP 140, which may have begun working on different analysis tasks. For example, the SEE 154 can activate a task on the block I / O SEE 158 and read or rewrite (update) the directory. As another example, the output protocol SEE 156 can have a semaphore set by other SEEs when the data is ready for the return packet.

各SEEは、マシンコンテキストがデータにアクセスすることを可能にするパイプラインレジスタを有している。通常のCPUとは対照的に、好ましいSEEの実施例は、それらが処理するデータに対して使用される物理的データ記憶機構という概念を持たない。代わりに、データに対するアクセスはマシンコンテキストトランザクションの形態を取る。可変(例えばスカラー)データはV‐バスを介してアクセスされる。配列データはA‐バスを介してアクセスされる。入力ストリームデータはSi‐バスを介してアクセスされる。例えば、データコンテキストct内で所定の記憶場所offsetに配置されたmオクテット長のスカラーデータの要素を読み込むために、SEEは命令デコーダーを使用し、V‐バスインターフェイスにバスリクエスト{read, ct, offset, m}を出す(issue)ように指示する。コンテキストmctは、セマンティックプロセッサのマスターコンテキストに問い合わせる。動作中の各CIFSセッションや、各オープンファイルや、各オープントランザクション等に対するサブコンテキストのようなその他のサブコンテキストは、通常、RSPが入力データを処理するのに合わせて、作成され、破壊される。   Each SEE has a pipeline register that allows the machine context to access the data. In contrast to normal CPUs, the preferred SEE embodiments do not have the concept of physical data storage used for the data they process. Instead, access to data takes the form of machine context transactions. Variable (eg scalar) data is accessed via the V-bus. Array data is accessed via the A-bus. Input stream data is accessed via the Si-bus. For example, to read an element of scalar data of length m octets located at a predetermined storage location offset in the data context ct, the SEE uses an instruction decoder and sends a bus request {read, ct, offset to the V-bus interface. , m} to issue. The context mct queries the master context of the semantic processor. Other subcontexts, such as the subcontext for each CIFS session in operation, each open file, each open transaction, etc. are typically created and destroyed as the RSP processes the input data.

SEEパイプラインレジスタは、コマンドを送られるとすぐに、データ転送プロセスを制御する。複数のバス転送(bus transfer)がmオクテットを読み込むか書き込むように要求されると、パイプラインレジスタはトランザクションを終了まで追跡する。例として、6オクテットフィールドは、2つのマイクロ命令を使用してストリーム入力から可変マシンコンテキスト(machine-context variable)へと転送される。第一の命令は、6オクテットをSi‐バスからパイプラインレジスタへと読み込むことである。第二の命令は、その後、6オクテットをこのレジスタから可変マシンコンテキストへとV‐バスを介して書き込むことである。このレジスタインターフェイスは、どれだけ多くのバスデータサイクルが転送を達成するのに必要であっても、実行する。   The SEE pipeline register controls the data transfer process as soon as a command is sent. When multiple bus transfers are requested to read or write m octets, the pipeline register tracks the transaction to completion. As an example, a 6 octet field is transferred from a stream input to a machine-context variable using two microinstructions. The first instruction is to read 6 octets from the Si-bus into the pipeline register. The second instruction is then to write 6 octets from this register to the variable machine context via the V-bus. This register interface implements no matter how many bus data cycles are needed to accomplish the transfer.

VMCD 162は、V‐バス上で開始されるリクエストに役立つ。VMCD 162は、可変マシンコンテキストデータリクエストを物理的メモリトランザクションへと変換することができる。そのために、VMCD 162は、好ましくは、物理メモリ開始アドレスに対するマシンコンテキスト識別子を参照する変換テーブルを保持し、割り当て及び割り当て解除のための機構(mechanism)を持つ。そして、VMCD 162は、コンテキストが所定のSEEにより固定されることを可能にし、リクエストされたトランザクションがリクエストされたコンテキストの境界の外部へと流出(fall)しないことを確実にする。使用される実際のストレージ機構は、アプリケーションによって変えることができる。メモリは、完全に内蔵することも、完全に外付けにすることも、そららの二つの形態にすることもできる。また、大型外部メモリを有するキャッシュなどにすることもできる。外部メモリは、その他のメモリセクションに対する外部メモリと共有されてもよい。このメモリセクションとしては、所定の実施例におけるAMCDと、入力バッファと、出力バッファと、パーサテーブルと、生成規則テーブルと、セマンティックコードテーブルなどが挙げられる。   VMCD 162 serves requests initiated on the V-bus. VMCD 162 can translate variable machine context data requests into physical memory transactions. To that end, VMCD 162 preferably maintains a translation table that references the machine context identifier for the physical memory start address and has a mechanism for allocation and deallocation. The VMCD 162 then allows the context to be fixed by a given SEE and ensures that the requested transaction does not fall outside the boundary of the requested context. The actual storage mechanism used can vary from application to application. The memory can be fully internal, fully external, or in two forms. Also, a cache having a large external memory can be used. External memory may be shared with external memory for other memory sections. Examples of the memory section include an AMCD, an input buffer, an output buffer, a parser table, a generation rule table, and a semantic code table in a predetermined embodiment.

A-バスインターフェイス及びAMCD 164も、マシンコンテキスト配列の構成を備えていることを除き同様に動作する。異なる種類の配列及びテーブルに対し、割り当てや、割り当て解除や、書き込みや、読み込みや、検索や、場合によってはシンプルバスリクエストを用いたハッシュやソートさえ実行できるようにすることが好ましい。実際の基礎をなす(underlying)物理メモリは、異なる種類の配列及びテーブルに対し異なっていてもよい。この物理メモリは、例えば、高速オンボードRAMや、外部RAMや、外部ROMや、コンテント・アクセッサブル・メモリなどを含む。   The A-bus interface and AMCD 164 operate similarly except that they have a machine context array configuration. It is preferable to be able to execute allocation, deallocation, writing, reading, searching, and even hashing and sorting using simple bus requests for different types of arrays and tables. The actual underlying physical memory may be different for different types of arrays and tables. This physical memory includes, for example, a high-speed onboard RAM, an external RAM, an external ROM, a content accessible memory, and the like.

図3に示されているストレージサーバーの構成は、本発明の実施例に係るサーバーの多数の実行可能性のある機能的パーティションの内の一つである。その他のいくつかの実行可能性のある構成が図7‐図10に示されており、以下においてそれらについて説明する。   The storage server configuration shown in FIG. 3 is one of many possible functional partitions of a server according to an embodiment of the present invention. Several other possible configurations are shown in FIGS. 7-10 and are described below.

図7は、一つまたは複数の従来のSATAドライブに対するインターフェイスを備えているストレージサーバー500を示している。ネットワークコネクション502(標準的な電子的または光学的なコネクタポートまたはアンテナ)により、クライアントは、要求されるプロトコルをサポートするFibre Channelや、EthernetなどのようなPHY 510と通信することができる。Ethernetに対しては、Broadcom BCM 5421またはMarvell 88E1011のような市販のPHYが使用可能である。   FIG. 7 illustrates a storage server 500 that includes an interface to one or more conventional SATA drives. A network connection 502 (a standard electronic or optical connector port or antenna) allows a client to communicate with a PHY 510 such as Fiber Channel, Ethernet, etc. that supports the required protocol. For Ethernet, a commercially available PHY such as Broadcom BCM 5421 or Marvell 88E1011 can be used.

PHY 510は入力フレームをRSP 520に供給し、出力フレームをRSP 520から取り出す。RSP 520は、上述の構成の内の一つや、同時係属のアメリカ特許出願No. 10/351,030に記述されている構成の内の一つや、機能的に似ている他のあらゆるセマンティックプロセッシング構成で構成することができる。   The PHY 510 supplies the input frame to the RSP 520 and extracts the output frame from the RSP 520. RSP 520 consists of one of the configurations described above, one of the configurations described in co-pending US patent application No. 10 / 351,030, or any other semantic processing configuration that is functionally similar. can do.

RAM 530は、RSP 520に対して、例えばマシンコンテキストやバッファ用の物理的記憶装置を提供する。RAM 530は、数種類のメモリ(DRAM、Flash、CAMなど)で構成されていても、Synchronous DRAMのような一種類のメモリで構成されていてもよい。パーサテーブルと、生成規則テーブルと、セマンティックコードテーブルが、動作中に揮発性メモリに保存されたとき、起動用ROMまたは起動用フラッシュメモリが用いられ、RSP 520を初期化する。RSP 520がその他のデータ記憶装置と通信することを可能にするのに十分なコードが起動用メモリ内で利用可能である限り、非揮発性の格納されたテーブルの一部もデータ記憶装置内に存在することができる。   The RAM 530 provides the RSP 520 with physical storage for machine context and buffers, for example. The RAM 530 may be composed of several types of memory (DRAM, Flash, CAM, etc.), or may be composed of one type of memory such as Synchronous DRAM. When the parser table, the generation rule table, and the semantic code table are stored in the volatile memory during operation, the startup ROM or the startup flash memory is used to initialize the RSP 520. As long as enough code is available in the startup memory to allow the RSP 520 to communicate with other data storage devices, a portion of the non-volatile stored table is also in the data storage device. Can exist.

SATA制御装置540は、RSP 520のブロックI/Oポートに接続されており、RSP 520のディスクアクセスリクエストを制御する。SATA制御装置540は、例えばSII 3114やMarvell 88SX5080のような市販のSATA制御装置でよい。   The SATA controller 540 is connected to the block I / O port of the RSP 520 and controls the disk access request of the RSP 520. The SATA controller 540 may be a commercially available SATA controller such as SII 3114 or Marvell 88SX5080.

SATA制御装置540は、SATAバスを介して、1つまたは複数のSATAデータ記憶装置と接続されている。図示されているように、ストレージサーバー500は、ドライブ550−0〜ドライブ550−Nを、それぞれSATAバス0〜SATAバスNを介してサポートする。   The SATA controller 540 is connected to one or more SATA data storage devices via a SATA bus. As illustrated, the storage server 500 supports the drives 550-0 to 550-N via the SATA bus 0 to SATA bus N, respectively.

PHY 510、RSP 520、RAM 530及びSATA制御装置540は、共通のプリント基板(図示せず)上で相互に接続されるのが好ましい。このプリント基板は、SATAケーブルがバス0〜バスNを提供することで、ドライブと共に共通の筐体内に配置することができる。他のやり方として、SATAバス信号は、プリント基板上で、各ドライブのコネクターへ送られるか、コネクターを介してバックプレーン(backplane)へ送られてもよい。   PHY 510, RSP 520, RAM 530 and SATA controller 540 are preferably connected to each other on a common printed circuit board (not shown). This printed circuit board can be placed in a common housing together with the drive by providing the bus 0 to bus N with the SATA cable. Alternatively, the SATA bus signal may be sent on the printed circuit board to the connector of each drive or through the connector to the backplane.

別のストレージサーバーの実施例600が図8に示されている。好ましくは、この実施例においては、サーバー全体が、ストレージサーバーのクライエントとの接続を提供するためのネットワークコネクション602を有するディスクドライブのプリント基板上で実現される。ストレージサーバーアーキテクチャ500も同様の方法でパッケージ化することが可能であるが、ストレージサーバー600は、PHY 610及びSATA制御装置640をRSP 620内にまとめて入れることで、空間的余裕の作成及びコスト削減を実現する。SATA制御装置640は、少なくともその一部がSEEを用いて実施されるのが好ましい。   Another storage server embodiment 600 is shown in FIG. Preferably, in this embodiment, the entire server is implemented on a printed circuit board of a disk drive having a network connection 602 for providing connection with the client of the storage server. The storage server architecture 500 can be packaged in the same way, but the storage server 600 can create PHY 610 and SATA controller 640 together in the RSP 620 to create space and reduce costs. Is realized. The SATA controller 640 is preferably implemented at least partially using SEE.

RSP 620インターフェイスのSATA制御装置セクションは、SATAケーブルまたは回路基板のバスを介して、ドライブエレクトロニクス660と接続している。このドライブエレクトロニクス660は、SATAインターフェイス、ディスクキャッシュ及びドライブ制御エレクトロニクスを含む。   The SATA controller section of the RSP 620 interface connects to the drive electronics 660 via a SATA cable or circuit board bus. The drive electronics 660 includes a SATA interface, disk cache, and drive control electronics.

サーバー全体がメディアデバイス内の共通の回路基板上で使用されれば、図9のストレージサーバー700に示すように、SATAインターフェイスを完全に取り除くことが可能となる。図9では、ディスク制御装置の機能はRSP 720で実施される。ブロック770として図示されている制御装置(例えば、Marvell 88C7500)と、モーターと、サーボ機構は、RSP 720と直接接続する。   If the entire server is used on a common circuit board in the media device, the SATA interface can be completely removed as shown in storage server 700 of FIG. In FIG. 9, the functions of the disk controller are implemented in RSP 720. A controller (eg, Marvell 88C7500), illustrated as block 770, a motor, and a servomechanism directly connect to the RSP 720.

図10は、本質的にはトランスレーションゲートウェイ(“translation” gateway)であるストレージサーバー800を示している。ストレージサーバー800は、ネットワーク802と接続する第一の物理的ネットワークインターフェイスであるPHY1(ブロック810)を有しており、その結果、ストレージサーバークライアントに接続する。また、ストレージサーバーインターフェイス800は、ネットワークまたはポイント・トゥ・ポイント接続を介して1つまたは複数の物理的サーバー(例えば図示されているSANサーバー850)と接続するために、第二の物理的ネットワークインターフェイスであるPHY 2(ブロック840)を有する。RSP 820は、付属メモリ830を備えており、PHY 1及びPHY 2と接続している。PHY 1は、例えばEthernet PHYでよく、PHY 2は、例えばFibre Channel PHYでよい。   FIG. 10 shows a storage server 800 that is essentially a translation gateway (“translation” gateway). The storage server 800 has a first physical network interface PHY1 (block 810) that connects to the network 802, thereby connecting to the storage server client. The storage server interface 800 also provides a second physical network interface for connection to one or more physical servers (eg, the illustrated SAN server 850) via a network or point-to-point connection. PHY 2 (block 840). The RSP 820 includes an attached memory 830 and is connected to the PHY 1 and PHY 2. The PHY 1 may be an Ethernet PHY, for example, and the PHY 2 may be a Fiber Channel PHY, for example.

動作中、RSP 820は、NAS形式のリクエストまたはアプリケーション形式のリクエストのようなクライエントのリクエストに、遠隔接続されているサーバー850上でリクエストに着手することで、応答する。このようにして、サーバー800は、ネットワーク802上のクライエントからはサーバーに見え、サーバー850からはクライエントに見える。サーバー850はSANサーバーとして図示されているが、サーバー850はNASサーバーであってもよく、さらに言えばアプリケーション形式のサーバーであってもよい。PHY 1とPHY 2が同じサーバープロトコルをサポートするならば、ストレージサーバー800は、拡張可能なサーバー・ファームのための集合点や、暗号化点や、ファイヤーウォールという有用な機能を奏することができる。   In operation, the RSP 820 responds to client requests, such as NAS type requests or application type requests, by initiating the request on a remotely connected server 850. In this way, the server 800 appears to the client on the network 802 and appears to the client from the server 850. Although the server 850 is illustrated as a SAN server, the server 850 may be a NAS server, and more specifically, may be an application type server. If PHY 1 and PHY 2 support the same server protocol, the storage server 800 can perform useful functions such as an aggregation point for an expandable server farm, an encryption point, and a firewall.

PHY 1とPHY 2の両方がRSP 820にデータグラムを供給している場合、RSP 820はそれらの入力ストリーム両方に対し解析を提供することができる。例えば、PHY 1とPHY 2の入力ストリームはともに共通の入力バッファ内へ保存することができ、RSP 820内のDXP(図示せず)は、交互に両方の入力ストリーム内のデータグラムを解析することができ、こうして双方向のトランスレーションタスクを調整して実行する(coordinate)ことができる。また、RSP 820は、二つのDXPを用いて構成されてもよく、うち一つを各物理ポートに当て、これら二つでSEEの共通の保存場所とそれ以外のRSPのリソースを共有してもよい。   If both PHY 1 and PHY 2 are supplying datagrams to RSP 820, RSP 820 can provide analysis for both of those input streams. For example, both PHY 1 and PHY 2 input streams can be stored in a common input buffer, and the DXP (not shown) in the RSP 820 can alternately analyze the datagrams in both input streams. And thus coordinate and execute bi-directional translation tasks. The RSP 820 may also be configured using two DXPs, one of which is assigned to each physical port, and these two share a common SEE storage location and other RSP resources. Good.

前述した実施例は、図11及び図12に示すような複数の物理的データ記憶装置に対するアクセスを提供する他のシステムアーキテクチャへ適用することができる。図11では、ストレージサーバー900は、RSP 100を複数の物理的データ記憶装置(例えば、図示している4つの装置120−1、120−2、120−3、120−4)と接続させるストレージインターフェイスを備えている。これらのデータ記憶装置は、いくつか実施例では、RAID (Redundant Array of Independent Disks)配列としてアクセスされることがある。この場合、RSPがRAID制御装置として動作するか、別のRAID制御装置(図示せず)がストレージインターフェイス110の一部として使用される。他のやり方として、4つのデータ記憶装置は、JBOD(Just a Bunch Of Disks)配列として構成されてもよい。   The embodiments described above can be applied to other system architectures that provide access to multiple physical data storage devices as shown in FIGS. In FIG. 11, the storage server 900 connects the RSP 100 to a plurality of physical data storage devices (eg, four devices 120-1, 120-2, 120-3, 120-4 shown). It has. These data storage devices may be accessed as a RAID (Redundant Array of Independent Disks) array in some embodiments. In this case, the RSP operates as a RAID controller, or another RAID controller (not shown) is used as part of the storage interface 110. Alternatively, the four data storage devices may be configured as a JBOD (Just a Bunch Of Disks) array.

一般的に、RSP100は、クライアントに対し仮想化されたストレージサーバーの他の形態を実行することができる。他のある形態では、クライエントアプリケーションにより使用されるディスクセクターアドレスは、RSPにより、多くの物理的デバイスの中の特定のデバイスのC-H-S (Cylinder-Head-Sector)アドレスへとマッピングされる。このような形態では、データ記憶装置120−1〜120−4までの記憶装置(場合によってはさらに多くの記憶装置)は空間的に同一の場所にある必要はなく、これによりクライアントに対する物理的リソース及びディスクの割り当てを高精度で制御することを可能にする。また、RSPは、別の中間機器がクライアントに対し仮想的な機能の全体または一部を提供する仮想形態内で機能することができる。   In general, the RSP 100 can execute other forms of virtualized storage servers for clients. In another embodiment, a disk sector address used by a client application is mapped by RSP to a C-H-S (Cylinder-Head-Sector) address of a specific device among many physical devices. In such a form, the storage devices (in some cases more storage devices) from the data storage devices 120-1 to 120-4 need not be in the same spatial location, thereby providing physical resources for the client. In addition, the disk allocation can be controlled with high accuracy. In addition, the RSP can function in a virtual form in which another intermediate device provides all or part of the virtual function to the client.

図12は、ポート拡張器950を内蔵するストレージサーバーシステム1000内でRSPを使用している形態を示している。ポート拡張器950は、(外付けまたは内蔵されている)RSP100に接続されている単一のSATA制御装置ポートに接続しているが、その一方で多数の物理的データ記憶装置(図示されている装置120‐1〜120‐4)と通信できるようになっている。このような構成は、データ記憶装置と通信するためにRSPの一つのポートしか使用していないものの、全体としてのシステム処理能力(情報量/bandwidth)を増やすことができる。   FIG. 12 shows a form in which the RSP is used in the storage server system 1000 incorporating the port expander 950. The port expander 950 connects to a single SATA controller port that is connected to the RSP 100 (externally or internal), while multiple physical data storage devices (shown) It can communicate with the devices 120-1 to 120-4). Although such a configuration uses only one port of the RSP to communicate with the data storage device, the overall system processing capacity (information amount / bandwidth) can be increased.

図13は、本発明の実施例と共に利用できるセマンティックプロセッサの他の実施例1100を示している。このセマンティックプロセッサ1100は、Port 0 PHY 93、Port 1 PHY 94、及びPCI-Xインターフェイス95と通信する。そして、これらはすべて、必要に応じて、プロセッサ1100に内蔵させるか、外付けでプロセッサ1100と接続させることができる。図3に示しているバッファ130は、ポート入力バッファ(PIB) 132及びポート出力バッファ (POB)134と置き換えられる。これらのバッファは、必ずしもプロセッサ1100の一部としてプロセッサ1100に内蔵される共通メモリセクションにある必要はないが、このように配置されるのが好ましい。PIB 132は、Port 0、Port 1及びPCI-Xインターフェイスそれぞれに対する少なくとも一つの入力キュー(queue)と関連し、それらを保持し、そして、同様に他のキューも保持することができる。POB 134は、Port 0、Port 1及びPCI-Xインターフェイスそれぞれに対する少なくとも一つの出力キュー(queue)と関連し、それらを保持し、そして、同様に他のキューも保持することができる。Port 0及びPort 1は、通常は、Gigabit Ethernetなどのデータグラムインターフェイスであり、一方で、PCI-Xインターフェイスは通常のPXI-Xバスに接続されている。ストレージサーバーの設計次第では、ストレージリソースはこれらのどのポートとも接続可能であり、クライアントもポート1またはポート2あるいはそれらの両方と接続可能である。   FIG. 13 illustrates another embodiment 1100 of a semantic processor that can be used with embodiments of the present invention. The semantic processor 1100 communicates with the Port 0 PHY 93, the Port 1 PHY 94, and the PCI-X interface 95. All of these can be incorporated in the processor 1100 or externally connected to the processor 1100 as necessary. The buffer 130 shown in FIG. 3 is replaced with a port input buffer (PIB) 132 and a port output buffer (POB) 134. These buffers need not necessarily be in a common memory section built into the processor 1100 as part of the processor 1100, but are preferably arranged in this manner. PIB 132 is associated with and holds at least one input queue for each of Port 0, Port 1 and PCI-X interfaces, and can hold other queues as well. POB 134 is associated with and holds at least one output queue for each of Port 0, Port 1 and PCI-X interfaces, and can hold other queues as well. Port 0 and Port 1 are typically datagram interfaces such as Gigabit Ethernet, while the PCI-X interface is connected to a normal PXI-X bus. Depending on the design of the storage server, storage resources can connect to any of these ports, and clients can connect to port 1 and / or port 2 as well.

図3と異なり図13では、直接実行パーサ140は、パーサソースセレクタ136を介して、PIB 132内の複数の入力キューのそれぞれから入力を受け取ることができる。例えば、直接実行パーサ140は、それぞれの入力ソースに対し別々のパーサスタックを保持することができる。そして、直接実行パーサ140は、パケットの解析が終了するか、(例えば、SEEがパケットフィールドで何らかの計算を実行している間に)パケットの解析が行き詰った場合、入力ソースを切り替えるようにパーサソースセレクタ136に信号で伝えることができる。   Unlike FIG. 3, in FIG. 13, the direct execution parser 140 can receive input from each of a plurality of input queues in the PIB 132 via a parser source selector 136. For example, the direct execution parser 140 can maintain a separate parser stack for each input source. The direct execution parser 140 then switches the parser source to switch the input source if the analysis of the packet ends or the packet analysis stalls (for example, while the SEE is performing some computation on the packet field). A signal can be transmitted to the selector 136.

SEEクラスター152は、N個のセマンティックコード実行エンジン150‐1〜150‐Nを備えている。このSEEクラスターは、ディスパッチャ(dispatcher)(図示せず)を備えており、Sx-バスを介してDXP 140と通信し、個々のSEEに対してタスクを配信するのが好ましい。   The SEE cluster 152 includes N semantic code execution engines 150-1 to 150-N. The SEE cluster preferably includes a dispatcher (not shown) and communicates with the DXP 140 via the Sx-bus to deliver tasks to individual SEEs.

PIB読み込み制御装置133及びPOB書き込み制御装置135は、SEEクラスター152に、PIB 132及びPOB 134それぞれに対するアクセスを提供する。図のように、パーサソースー136及びPIB読み込み制御装置133により、DXP 140は、一つの入力からのデータに対し動作することができる。一方で、SEEクラスターはその他の入力からのデータにアクセスする。PIB読み込み制御装置133及びPOB書き込み制御装置135は、入力バッファ及び出力バッファに対し、非制限アクセスを提供するのが好ましい。   PIB read controller 133 and POB write controller 135 provide SEE cluster 152 with access to PIB 132 and POB 134, respectively. As shown, the parser source 136 and the PIB read controller 133 allow the DXP 140 to operate on data from one input. On the other hand, SEE clusters access data from other inputs. PIB read controller 133 and POB write controller 135 preferably provide unrestricted access to the input and output buffers.

マシンコンテキストポート制御装置154は、SEEクラスター152に、マシンコンテキスト160に対するアクセスを提供する。ポートバッファ制御装置と同様に、マシンコンテキストポート制御装置154は、SEEクラスター152に、マシンコンテキスト160に対する非制限アクセスを提供する。   Machine context port controller 154 provides SEE cluster 152 with access to machine context 160. Similar to the port buffer controller, the machine context port controller 154 provides the SEE cluster 152 with unrestricted access to the machine context 160.

マシンコンテキスト160は、SEEクラスター152及びマネージメントマイクロプロセッサ195に対するメモリタスクを優先して、実行する。そして、マシンコンテキスト160は、通常、対象とするデータアクセスの属性に対応してそれぞれが特別化される一つまたは複数の特別なキャッシュを備えている。また、マシンコンテキスト160は、インライン暗号化やインライン認証を実行するのに用いることができる一つまたは複数の暗号化エンジンや認証エンジンを備えている。一つまたは複数の従来のメモリバスインターフェイスは、マシンコンテキスト160を物理メモリ165に接続する。この物理メモリは、例えばDRAM (Dynamic Random Access Memory)、CAM (Content Addressable Memory)や他のタイプの好ましい記憶装置から構成されてよい。物理メモリ165は、プロセッサ1100上に設けるかまたは外付けにするか、あるいはこれらの二つの配置に分けて設けてもよい。   The machine context 160 preferentially executes memory tasks for the SEE cluster 152 and the management microprocessor 195. The machine context 160 normally includes one or a plurality of special caches, each of which is specialized according to a target data access attribute. The machine context 160 also includes one or more encryption engines and authentication engines that can be used to perform inline encryption and inline authentication. One or more conventional memory bus interfaces connect machine context 160 to physical memory 165. This physical memory may comprise, for example, a DRAM (Dynamic Random Access Memory), a CAM (Content Addressable Memory), or other types of preferred storage devices. The physical memory 165 may be provided on the processor 1100 or externally provided, or may be provided separately in these two arrangements.

マネージメントプロセッサ195は、セマンティックプロセッサ1100にとって望ましい機能の内従来のソフトウェアで無理なく達成できるものを実行する。例えば、マイクロプロセッサ195は、マシンコンテキスト160を介して、物理メモリ165内にあるマイクロプロセッサ自らが用いる命令スペース及びデータスペースと接続し、従来のソフトウェアを実行することができる。そしてこのプロセッサは、従来のソフトウェアを実行して、プロセッサを起動したり、パーサテーブル、生成規則テーブル及びセマンティックコードテーブルをロードまたは変更したり、統計値を収集したり、ロギングを実行したり、クライアントアクセスを管理したり、エラー回復を行うなどすることができる。また、マイクロプロセッサ制御装置195は、SEEがマイクロプロセッサに代わってタスクを実行するようリクエストするために、SEEクラスター152内のディスパッチャ(dispatcher)と通信可能であるのが好ましい。このマネージメントマイクロプロセッサは、セマンティックプロセッサ1100に組み込まれるのが好ましい。   The management processor 195 implements the functions desired for the semantic processor 1100 that can be reasonably achieved with conventional software. For example, the microprocessor 195 can connect to the instruction space and data space used by the microprocessor itself in the physical memory 165 via the machine context 160 and execute conventional software. The processor then runs traditional software to start the processor, load or modify parser tables, generation rules tables and semantic code tables, collect statistics, perform logging, You can manage access and perform error recovery. Also, the microprocessor controller 195 is preferably communicable with a dispatcher in the SEE cluster 152 to request that the SEE perform tasks on behalf of the microprocessor. This management microprocessor is preferably incorporated into the semantic processor 1100.

前述した実施例において、セマンティックユニットは、データのブロックがディスクに書き込まれるときこのデータのブロックを暗号化したり、データのブロックがディスクから読み込まれるときこのデータのブロックを複合化したりできる。これにより一つまたは複数のディスクドライブ上で「休止している」データにセキュリティが提供される。例えば、セマンティックユニットがディスクに書き込むためのデータペイロードを受信するとき、書き込み用データペイロードに対する準備をするオペレーションは、パケットの暗号化を含んでもよい。このプロセスの逆が、暗号化されたデータをディスクから読み出すときに実行されてよい。   In the embodiment described above, the semantic unit can encrypt the block of data when the block of data is written to the disk, or it can decrypt the block of data when the block of data is read from the disk. This provides security for data that is “resting” on one or more disk drives. For example, when the semantic unit receives a data payload for writing to disk, the operation of preparing for the data payload for writing may include packet encryption. The reverse of this process may be performed when reading the encrypted data from the disk.

ここまで特殊な目的のための実行エンジンを図示し、記述してきたが、他の実施例では、前記パーサを一般的な目的のプロセッサ用のフロントエンドデータグラムプロセッサとして用いてもよい。   Although an execution engine for special purposes has been illustrated and described thus far, in other embodiments the parser may be used as a front-end datagram processor for a general purpose processor.

前述した実施例に例示されるように、ストレージサーバーをベースにした多くの異なるセマンティックプロセッサが本発明の範囲に含まれる。一番低機能なものでは、例えばFibre Channelにより企業ネットワークと接続されるSAN形式のサーバーに実行可能性がある。NAS形式のサーバーは、上述したCIFSの詳細な実施例に記述されるようなより高度な特徴を持つ。トランスレーションゲートウェイサーバー(translation-gateway server)は、クライアントに対し、潜在的に巨大でかつ変化する基礎をなす物理サーバーのアレイに対するアクセスを提供する。この場合、クライエントに物理サーバーは認知されない。   As illustrated in the foregoing embodiments, many different semantic processors based on storage servers are within the scope of the present invention. For the lowest function, for example, there is a possibility of being executed on a SAN type server connected to a corporate network by Fiber Channel. NAS type servers have more advanced features as described in the detailed CIFS embodiments described above. A translation-gateway server provides clients with access to a potentially huge and changing array of underlying physical servers. In this case, the physical server is not recognized by the client.

トランスレーションゲートウェイサーバーと物理サーバーは、両方とも、アプリケーション形式のサーバーとして構築されてよい。アプリケーション形式のサーバーでは、データはアプリケーション形式のフォーマットで保存される。例えば、ビデオオンデマンドサーバーは、複数のクライアントによって使用されるビデオを保存でき、またビデオの異なる部分を異なるクライアントに対し、そのそれぞれに独立したナビゲーションを持たせ、配信することができる。ミュージックオンデマンドサーバーも同様に動作することができる。   Both the translation gateway server and the physical server may be constructed as application-type servers. In an application format server, data is stored in an application format. For example, a video-on-demand server can store video used by multiple clients and distribute different portions of the video to different clients, each with independent navigation. The music on demand server can operate in the same way.

また、アプリケーション形式のサーバーは、デジタルカメラが比較的小さい内部バッファやフラッシュカードで動作することを可能にするデジタルカメラからの写真を保存する有線または無線のサーバーと同じように、アプリケーションに対する格納スペース(storage space)を提供することができる。このようなサーバーは、野外使用のために、比較的小型でバッテリー駆動式の携帯用タイプのものであってもよい。   Application-style servers also store storage space for applications (like wired or wireless servers that store photos from digital cameras that allow digital cameras to work with relatively small internal buffers and flash cards). storage space). Such servers may be of a relatively small and battery-powered portable type for outdoor use.

また、セマンティックプロセッサを使用したストレージサーバーの実施例は、例えば家庭用コンピューターのデータネットワークや、オーディオネットワークや、ビデオネットワークで用いる無線用プロトコルを使用して(implement)もよい。前述した詳細な実施例は、従来の「ストレージ」デバイス(記憶装置)に焦点を置いてきたが、プリンタやスキャナや多機能プリンタやその他のデータ変換デバイスもまた、セマンティックプロセッサを使用したストレージサーバーに取り付けることができる。   In addition, an embodiment of a storage server using a semantic processor may use a wireless protocol used in, for example, a home computer data network, an audio network, or a video network. While the detailed embodiments described above have focused on traditional “storage” devices, printers, scanners, multi-function printers and other data conversion devices can also be used in storage servers using semantic processors. Can be attached.

当業者であれば、ここで教示された概念が他の多くの有効な方法で特定の用途に適用できるということを認めるであろう。セマンティックプロセッサを使用したストレージサーバーは、このサーバーが解析することができるプロトコルを変化させることで、異なる種類のクライアントを扱えるように構成することができるということは、容易に明らかとなる。好ましく構成されれば、ストレージサーバーは、同時に複数のストレージサーバープロトコルを解析し、異なる階層のクライアントによるアクセス(例えば、信頼できるクライエントからのSANアクセスとその他からのNASアクセス)を可能にすることさえできる。   Those skilled in the art will appreciate that the concepts taught herein can be applied to a particular application in many other effective ways. It will be readily apparent that a storage server using a semantic processor can be configured to handle different types of clients by changing the protocol that the server can analyze. If configured properly, the storage server can even analyze multiple storage server protocols at the same time, allowing access by clients of different tiers (eg, SAN access from trusted clients and NAS access from others). it can.

図14は、本発明の実施例に係るセマンティックプロセッサ2100のブロック図を示している。このセマンティックプロセッサ2100は、入力ポート2110を介して受信するデータストリーム(例えば、入力ストリーム)をバッファするための入力バッファ2300と、入力バッファ2300内のパケット処理を制御する直接実行パーサ(DXP)2400と、パケットのセグメントを処理したり、その他のオペレーションを実行したりするためのセマンティック処理ユニット2140と、パケットのセグメントを保存するか増やしたりするためのメモリシステム2130を備えている。   FIG. 14 shows a block diagram of a semantic processor 2100 according to an embodiment of the present invention. The semantic processor 2100 includes an input buffer 2300 for buffering a data stream (eg, input stream) received via the input port 2110, and a direct execution parser (DXP) 2400 for controlling packet processing in the input buffer 2300. A semantic processing unit 2140 for processing the segments of the packet and performing other operations, and a memory system 2130 for storing or increasing the segments of the packet.

DXP 2400は、現在の入力フレームまたはパケットに対する現在の入力シンボルに至るまでの解析に基づいた非終端の(及び場合によっては終端の)シンボルからなるパーサスタック2430を保持する。パーサスタック2430の一番上に位置する単一のシンボル(または複数のシンボル)が終端シンボルである場合、DXP 2400は、入力ストリームの先頭の部分にあるデータDIを終端シンボルと比較し、作業を継続するためにそれらが一致することを期待する。パーサスタック2430の一番上に位置するシンボルが非終端(NT)シンボルである場合、DXP 2400は非末端シンボルNT及び現在の入力データDIを用い、スタック2430の文法生成物を拡張する。解析が継続している間、DXP 2400は、SPU 2140に、入力データのセグメントを処理するか、その他のオペレーションを実行するように指示する。   The DXP 2400 maintains a parser stack 2430 consisting of non-terminal (and possibly terminal) symbols based on analysis up to the current input symbol for the current input frame or packet. If the single symbol (or symbols) at the top of the parser stack 2430 is a terminal symbol, the DXP 2400 compares the data DI at the beginning of the input stream with the terminal symbol and works Expect them to match to continue. If the symbol at the top of parser stack 2430 is a non-terminal (NT) symbol, DXP 2400 uses the non-terminal symbol NT and the current input data DI to extend the grammar product of stack 2430. While the analysis continues, the DXP 2400 instructs the SPU 2140 to process the segment of input data or perform other operations.

セマンティックプロセッサ2100は少なくとも三つのテーブルを使用する。SPU 2140に対するコードセグメントは、セマンティックコードテーブル2150内に格納される。複雑な文法生成テーブルは、生成規則テーブル(PRT)2250内に格納される。これらの生成規則を検索するための生成規則(PR)コードはパーサテーブル(PT)内に格納される。パーサテーブル2200内のコードはまた、DXP 2400が、所定の生成規則に対してセマンティックコードテーブル2150からのコードセグメントがSPU 2140によってロードされ実行されるべきかを検出することを可能にする。   Semantic processor 2100 uses at least three tables. Code segments for SPU 2140 are stored in semantic code table 2150. The complex grammar generation table is stored in a generation rule table (PRT) 2250. Production rule (PR) codes for retrieving these production rules are stored in a parser table (PT). The code in parser table 2200 also allows DXP 2400 to detect whether code segments from semantic code table 2150 should be loaded and executed by SPU 2140 for a given production rule.

パーサテーブル2200内の生成規則(PR)コードは、生成規則テーブル2250内の生成規則を示す。PRコードは、例えば行列(row-column)フォーマットまたはコンテント・アドレッサブル(content addressable)フォーマットで格納される。行列(row-column)フォーマットでは、テーブルの行は、内部パーサスタック2430の一番上にある非終端シンボルNTによりインデックス付けされ、テーブルの列は、入力の先頭にある入力データ値DIによりインデックス付けされる。コンテント・アドレッサブル(content addressable)フォーマットでは、非終端シンボルNTと単一(または複数)の入力データ値DIを連結したものが、テーブルに対する入力をなす。セマンティックプロセッサ2100は、コンテント・アドレッサブル(content addressable)フォーマットを使用し(implement)、DXP 2400が、非終端シンボルNTを8バイトの現在の入力データDIと連結させ、パーサテーブルに対する入力をなすようにすることが好ましい。他のやり方としては、パーサテーブル2200は、DXP 2400から受け取った非終端シンボルNTと8バイトの現在の入力データDIを連結させてもよい。   The production rule (PR) code in the parser table 2200 indicates the production rule in the production rule table 2250. The PR code is stored, for example, in a row-column format or a content addressable format. In the row-column format, the table rows are indexed by the non-terminal symbol NT at the top of the internal parser stack 2430, and the table columns are indexed by the input data value DI at the beginning of the input. The In the content addressable format, the concatenation of a non-terminal symbol NT and a single (or multiple) input data value DI provides an input to the table. Semantic processor 2100 uses a content addressable format (implement) so that DXP 2400 concatenates the non-terminal symbol NT with the 8-byte current input data DI and makes the input to the parser table Is preferred. Alternatively, the parser table 2200 may concatenate the non-terminal symbol NT received from the DXP 2400 with the current input data DI of 8 bytes.

本発明のいくつかの実施例は、図14に示す要素より多くの要素を含むが、本発明のオペレーション(operation)の理解のためにはこれらの要素は重要でないので、本開示ではそれらを省略する。   Some embodiments of the present invention include more elements than those shown in FIG. 14, but these elements are not important for an understanding of the operation of the present invention and are omitted in this disclosure. To do.

以下において、本発明のいくつかの実施例に関する一般的なパーサオペレーションについて、図14、15A、15B、16及び17に基づいて説明する。図15Aは、パーサテーブル2200の一つの実行可能性がある実施例を示している。パーサテーブル2200は、生成規則(PR)コードメモリ2220で構成される。PRコードメモリ2220は、生成規則テーブル(PRT)2250内に保存されている対応する生成規則にアクセスするために用いられる多数のPRコードを保持している。実際には、生成規則コードメモリ2220内に、多くの異なる文法に対するコードが同時に存在することができる。特定の検索実施時(particular lookup implementation)に必要とされなければ、この入力値(例えば、現在の入力値DI[n]と連結された非終端(NT)シンボル)は、PRコードメモリ2220内でなんらかの特定の順序で割り当てられる必要はない。ただし、例の中のnは、選択されたバイトでの一致幅である。   In the following, a general parser operation for some embodiments of the invention will be described based on FIGS. 14, 15A, 15B, 16 and 17. FIG. FIG. 15A illustrates one possible implementation of parser table 2200. FIG. The parser table 2200 includes a generation rule (PR) code memory 2220. The PR code memory 2220 holds a number of PR codes that are used to access corresponding generation rules stored in a generation rule table (PRT) 2250. In practice, codes for many different grammars can exist simultaneously in the production rule code memory 2220. Unless required for a particular lookup implementation, this input value (for example, a non-terminal (NT) symbol concatenated with the current input value DI [n]) is not stored in the PR code memory 2220. It need not be assigned in any particular order. However, n in the example is the matching width in the selected byte.

ある実施例では、パーサテーブル2200は、DXP 2400からNTシンボルとデータ値DI[n]を受け取るアドレッサー2210も備えている。アドレッサー2210は、NTシンボルをデータ値DI[n]と連結し、この連結したデータ値をPRコードメモリ2220へと格納する。他のやり方としては、DXP 2400は、NTシンボルとデータ値を、パーサテーブル2200へ送る前に連結してもよい。   In one embodiment, parser table 2200 also includes an addresser 2210 that receives NT symbols and data values DI [n] from DXP 2400. The addresser 2210 concatenates the NT symbol with the data value DI [n] and stores the concatenated data value in the PR code memory 2220. Alternatively, the DXP 2400 may concatenate NT symbols and data values before sending them to the parser table 2200.

概念的には、生成規則コードメモリ2220の構造を、NTコードとデータ値の特有な組み合わせのそれぞれに対して一つのPRコードを持つマトリックスとして見ることが有用であることが多いが、本発明はそのようには限定されない。異なるアプリケーションに対し異なるメモリのタイプ及びメモリ構成が適当である場合もある。   Conceptually, it is often useful to view the structure of the production rule code memory 2220 as a matrix with one PR code for each unique combination of NT code and data value. It is not so limited. Different memory types and memory configurations may be appropriate for different applications.

例えば、ある実施例では、パーサテーブル2200はコンテント・アドレッサブル・メモリ(CAM)として実施され、アドレッサー2210は、CAMがPRT2250内の生成規則に対応するPRコードを検索するための鍵としてNTコード及び入力データ値DI[n]を使用する。CAMはTCAMエントリー(entry)に属する三重(ternary)CAM(TCAM)であるのが好ましい。各TCAMエントリー(entry)は、NTコードとDI[n]一致値(DI[n] match value)から構成される。各NTコードは、複数のTCAMエントリーを保持することができる。DI[n] 一致値(DI[n] match value)の各ビットは、「0」、「1」または「X」に設定される。この「X」は「無視(Don't Care)」を表す。この機能により、PRコードは、パーサテーブル2200が一致を見つけるために、数(certain)ビットまたは数(certain)バイトのDI[n]とコード化されたパターンとが一致することだけを必要とする。例えば、TCAMの一行は、宛先IPアドレスフィールドに対するNTコードNT_IPを有しており、その後にセマンティックプロセッサに組み込まれるデバイスに対応する宛先IPアドレスを表す4バイトが続く。このTCAM行の残りの4バイトは「無視(Don't Care)」に設定される。こうして、NT_IP及び8バイトのDI[8]がパーサテーブル2200に提示された場合に、DI[8]の内の最初の4バイトが正しいIPアドレスを含んでいれば、DI[8]の残りの4バイトが何を含んでいても一致が生じることとなる。   For example, in one embodiment, the parser table 2200 is implemented as a content addressable memory (CAM), and the addresser 2210 uses the NT code and key as a key for the CAM to retrieve the PR code corresponding to the production rule in the PRT 2250. Use the input data value DI [n]. The CAM is preferably a ternary CAM (TCAM) belonging to a TCAM entry. Each TCAM entry (entry) is composed of an NT code and a DI [n] match value (DI [n] match value). Each NT code can hold multiple TCAM entries. Each bit of DI [n] match value (DI [n] match value) is set to “0”, “1” or “X”. This “X” represents “Don't Care”. With this feature, the PR code only needs to match the DI [n] of the number of bits or numbers of bytes and the coded pattern in order for the parser table 2200 to find a match. . For example, a row of TCAM has an NT code NT_IP for the destination IP address field, followed by 4 bytes representing the destination IP address corresponding to the device that is to be incorporated into the semantic processor. The remaining 4 bytes of this TCAM line are set to “Don't Care”. Thus, when NT_IP and 8 bytes of DI [8] are presented to the parser table 2200, if the first 4 bytes of DI [8] contain the correct IP address, the remaining DI [8] A match will occur no matter what the 4 bytes contain.

TCAMは、「無視(Don't Care)」機能を採用し、一つのNTに対し複数のTCAMエントリーがあってよいので、TCAMは所定のNTコード及びDI[n]一致値(DI[n] match value)に対して、複数の適合する(matching)TCAMエントリーを見つけることができる。TCAMは、そのハードウェアを通してこれらの一致(match)を優先し、最優先された一致(match)のみ出力する。さらに、NTコード及びDI[n] 一致値(DI[n] match value)がTCAMに提示された場合、TCAMは、並列処理的にTCAMエントリー(entry)毎に受け取ったNTコード及びDI[n]一致値(DI[n] match value)と一致させることを試みる。それゆえに、TCAMは、セマンティックプロセッサ2100の一回のクロックサイクルにおいて、パーサテーブル内に一致が見つかったかどうかを判定する機能を持つ。   TCAM employs the “Don't Care” function, and since there may be multiple TCAM entries for one NT, the TCAM has a predetermined NT code and DI [n] match value (DI [n] For match value, multiple matching TCAM entries can be found. The TCAM prioritizes these matches through its hardware and outputs only the highest priority match. Further, when the NT code and DI [n] match value (DI [n] match value) are presented to the TCAM, the TCAM receives the NT code and DI [n] received for each TCAM entry (entry) in parallel processing. Attempts to match with a match value (DI [n] match value). Therefore, the TCAM has the function of determining whether a match is found in the parser table in one clock cycle of the semantic processor 2100.

このアーキテクチャ(構造)の他の見方には、「可変予見(variable look-ahead)」パーサとして見る見方がある。TCAMには固定データ入力セグメント(例えば8ビット)が入力されるが、TCAMのコード化により、続く生成規則が現在の8バイトの入力のいずれかの部分に基づいて生成されることを可能にする。入力ストリームの先頭の部分の現在の8バイト内にある1ビットまたは1バイトが現在の規則に対して関係を持つ場合、TCAMエントリー(entry)は、照合作業の間、残りを無視するようにコード化してもよい。本質的に、現在の「シンボル」は、所定の生成規則に対して入力ストリームの先頭の部分の64ビットの何らかの組み合わせで定義することができる。一般的に、知的にコード化することにより、解析サイクルの回数と、NTコード数と、テーブルエントリーの数は、所定の解析タスクに関して一般的に減らすことができる。   Another way of looking at this architecture is to look at it as a “variable look-ahead” parser. TCAM receives a fixed data input segment (eg 8 bits), but TCAM encoding allows subsequent production rules to be generated based on any part of the current 8-byte input . If one bit or one byte within the current 8 bytes of the first part of the input stream is relevant to the current rule, the TCAM entry is coded to ignore the rest during the matching operation May be used. In essence, the current “symbol” can be defined by some combination of 64 bits of the leading portion of the input stream for a given production rule. In general, by intelligently coding, the number of analysis cycles, the number of NT codes, and the number of table entries can generally be reduced for a given analysis task.

パーサテーブル2200内のTCAMは、上述したように、NT及びDI[n]と一致するTCAMエントリー2230に対応するPRコードを生成する。PRコードはDXP 2400に送り返されるか、直接PRテーブル2250に送り返されるか、またはその両方に送り返されてもよい。ある実施例では、PRコードは、一致状態を作り出すTCAMエントリーの行インデックスである。   As described above, the TCAM in the parser table 2200 generates a PR code corresponding to the TCAM entry 2230 that matches NT and DI [n]. The PR code may be sent back to the DXP 2400, sent directly back to the PR table 2250, or both. In one embodiment, the PR code is the row index of the TCAM entry that creates a match.

NT及びDI[n]と一致するTCAMエントリーが存在しない場合、いくつかの他のオプションが存在する。ある実施例では、PRコードは、「有効(valid)」ビットを伴う。このビットは、現在の入力の中に一致するTCAMエントリーが存在しない場合は設定されないままとなる。別の実施例では、パーサテーブル2200は、パーサテーブルにより供給されるNTに対応するデフォルトPRコードを構成する。正当なビット及びデフォルトのPRコードの用途は、以下において図15Bと関連して説明する。   If there are no TCAM entries matching NT and DI [n], there are several other options. In one embodiment, the PR code is accompanied by a “valid” bit. This bit remains unset if there is no matching TCAM entry in the current input. In another embodiment, parser table 2200 constitutes a default PR code corresponding to the NT supplied by the parser table. The use of legitimate bits and default PR codes is described below in connection with FIG. 15B.

パーサテーブル2200は、DXP 2400及びSPU 2140が一つの回路に一体に組み込まれる場合、内蔵して配置されるか、外部に配置されるか、またはその両方で配置される。例えば、内蔵されたスタティックRAM(SRAM)またはTCAMは、パーサテーブル2200として動作可能である。他のやり方として、外部DRAMストレージまたはTCAMストレージがパーサテーブル2200を格納することもできる。このパーサテーブル2200は、外部メモリに対するメモリ制御装置として動作するかまたは外部メモリに対するメモリ制御装置と通信するアドレッサー2210を備えている。ある実施例では、パーサテーブル2200は、パーサテーブル2200の一部を保持することができる内蔵キャッシュを備えている外部メモリ内に配置することができる。   When the DXP 2400 and the SPU 2140 are integrated into one circuit, the parser table 2200 is arranged in a built-in manner, arranged outside, or both. For example, a built-in static RAM (SRAM) or TCAM can operate as the parser table 2200. Alternatively, external DRAM storage or TCAM storage can store the parser table 2200. The parser table 2200 includes an addresser 2210 that operates as a memory control device for the external memory or communicates with the memory control device for the external memory. In one embodiment, parser table 2200 can be located in external memory that includes a built-in cache that can hold a portion of parser table 2200.

図15Bは、生成規則テーブル2250の実行可能性のある実施例を示している。PRテーブル2250は、生成規則メモリ2270と、一致全パーサエントリーテーブル(Match All Parser entries Table)メモリ2280と、アドレッサー2260と、を備えている。   FIG. 15B shows a possible implementation of the generation rule table 2250. The PR table 2250 includes a generation rule memory 2270, a match all parser entry table memory 2280, and an addresser 2260.

ある実施例では、アドレッサー2260は、DXP 2400かパーサテーブル2200のいずれか一方からPRコードを受け取り、DXP 2400からNTシンボルを受け取る。好ましくは、受け取ったNTシンボルは、パーサテーブル2200へ送られるNTシンボルと同一のものであり、受け取ったPRコードを配置するのに用いられる。アドレッサー2260は、受け取ったPRコード及びNTシンボルを使用して対応する生成規則及びデフォルトの生成規則にそれぞれアクセスする。本発明の好ましい実施例では、受け取ったPRコードは生成規則を生成規則メモリ2270内にアドレスする。そして、受け取ったNTコードはデフォルトの生成規則をMAPT 2280内にアドレスする。アドレッサー2260はいくつかの実施例においては必ずしも必要ではないが、使用される場合は、DXP 2400の一部やPRT 2250の一部から構成したり、中間の(intermediate)機能ブロックとして構成することもできる。例えば、パーサテーブル2200またはDXP 2400がアドレスを直接構成する場合、アドレッサーは必要とされないかもしれない。   In one embodiment, addresser 2260 receives a PR code from either DXP 2400 or parser table 2200 and receives an NT symbol from DXP 2400. Preferably, the received NT symbol is the same as the NT symbol sent to parser table 2200 and is used to place the received PR code. The addresser 2260 uses the received PR code and NT symbol to access the corresponding production rule and default production rule, respectively. In the preferred embodiment of the present invention, the received PR code addresses the production rule in the production rule memory 2270. The received NT code then addresses the default production rule in MAPT 2280. Addresser 2260 is not necessary in some embodiments, but if used, it may consist of part of DXP 2400, part of PRT 2250, or as an intermediate functional block You can also. For example, if the parser table 2200 or DXP 2400 directly configures an address, an addresser may not be required.

生成規則メモリ2270は、三つのデータセグメントを含む生成規則2262を格納する。これらのデータセグメントは、シンボルセグメントと、SPUエントリーポイント(SEP)セグメントと、スキップバイトセグメントと、を含む。これらのセグメントは、長さ固定セグメントでも長さ可変のセグメントであってもよく、ヌル終端化されている(null-terminal)のが好ましい。シンボルセグメントは、DXPのパーサスタック2430(図17)上へと転送される終端シンボルか非終端シンボルを有している。SEPセグメントは、セグメントデータの処理中にSPU 2140によって使用されるSPUエントリーポイント(SEP)を有している。スキップバイトセグメントは、そのバッファポインターをインクリメントし、入力ストリームの処理を進めるために入力バッファ2300により使用されるスキップバイトデータを有している。また、生成規則の処理において有用なその他の情報を生成規則2262の一部として格納してもよい。   The generation rule memory 2270 stores a generation rule 2262 including three data segments. These data segments include a symbol segment, an SPU entry point (SEP) segment, and a skip byte segment. These segments may be fixed length segments or variable length segments, and are preferably null-terminal. The symbol segment has either a terminal symbol or a non-terminal symbol transferred onto the DXP parser stack 2430 (FIG. 17). The SEP segment has an SPU entry point (SEP) that is used by the SPU 2140 during the processing of segment data. The skip byte segment has skip byte data that is used by the input buffer 2300 to increment its buffer pointer and to proceed with the input stream. Further, other information useful in the generation rule processing may be stored as a part of the generation rule 2262.

MAPT 2280はデフォルトの生成規則2264を格納する。この生成規則は、本実施例では、生成規則メモリ2270内のPRと同じ構造を持ち、PRコードがパーサテーブルの検索中に見つからない場合にアクセスされる。   MAPT 2280 stores a default production rule 2264. In this embodiment, this generation rule has the same structure as the PR in the generation rule memory 2270, and is accessed when the PR code is not found during the parser table search.

生成規則メモリ2270とMAPT 2280は2つの別々のメモリブロックとして図示されているが、本発明はそれに限定されるわけではない。本発明の好ましい実施例では、生成規則メモリ2270及びMAPT 2280は、内蔵SRAMとして実施され、各生成規則及び各デフォルトの生成規則は複数のヌル終端化されたセグメントを保持する。   Although the production rules memory 2270 and MAPT 2280 are illustrated as two separate memory blocks, the present invention is not so limited. In the preferred embodiment of the present invention, production rule memory 2270 and MAPT 2280 are implemented as internal SRAM, with each production rule and each default production rule holding a plurality of null-terminated segments.

生成規則及びデフォルトの生成規則は様々な長さを持つことがあるので、それらの個別のメモリ2270及び2280内へと簡単にインデックス付けして入れることを可能にするアプローチを取るのが好ましい。あるアプローチでは、各PRは、固定最大数のシンボルと、SEPと、スキップバイトフィールドのような補助のデータと、を含むことができる固定長さを持つ。所定のPRコードが許容された最大数のシンボルまたはSEPを必要としない場合、シーケンスは、NULLシンボルまたはSEPで終了される。所定のPRが最大数以上の数を必要とする場合、それは分割して二つのPRへと入れることができる。これらは、例えば第一のPRにスキップバイト値ゼロを持たせ、続く解析サイクルにおいて第二のPRがアクセスされるようにするスタックへNTを転送することで、アクセスされる。このアプローチでは、TCAMから得られる行アドレスがPRテーブル2250内の対応する生成規則の行アドレスと一致するように、TCAMエントリーとPRテーブルエントリーとの間で一対一の対応を維持することができる。   Since production rules and default production rules can have various lengths, it is preferable to take an approach that allows them to be easily indexed into their individual memories 2270 and 2280. In one approach, each PR has a fixed length that can include a fixed maximum number of symbols, SEPs, and auxiliary data such as skip byte fields. If a given PR code does not require the maximum number of symbols or SEP allowed, the sequence is terminated with a NULL symbol or SEP. If a given PR requires more than the maximum number, it can be split into two PRs. These are accessed, for example, by having the first PR have a skip byte value of zero and transferring NT to the stack that allows the second PR to be accessed in the subsequent analysis cycle. In this approach, a one-to-one correspondence between the TCAM entry and the PR table entry can be maintained so that the row address obtained from the TCAM matches the row address of the corresponding generation rule in the PR table 2250.

PRT 2250のMAPT 2280セクションは、NTコードの代わりにPRコードを使用することを除いて同様にインデックス化される。例えば、PRコード上の有効なビットが設定されていない場合、アドレッサー2260は、現在のNTに対応する行をPRテーブルのアドレスとして選択することができる。例えば、2256個のNTが許容された場合、MAPT 2280は、各々がNTの一つに対してインデックス化された2256個のエントリーを含むことができる。パーサテーブル2200が現在のNT及びデータ入力DI[n]に対応するエントリーを一つも持たない場合、MAPT 2280からの対応するデフォルト生成規則がアクセスされる。   The MAPT 2280 section of PRT 2250 is similarly indexed except that it uses PR codes instead of NT codes. For example, if a valid bit on the PR code is not set, the addresser 2260 can select the row corresponding to the current NT as the PR table address. For example, if 2256 NTs are allowed, the MAPT 2280 can include 2256 entries, each indexed to one of the NTs. If the parser table 2200 has no entry corresponding to the current NT and data entry DI [n], the corresponding default generation rule from the MAPT 2280 is accessed.

例として宛先IPアドレスを考えると、パーサテーブルは、例えば、適切な解析サイクルの間に期待される二つの宛先アドレスの内一つに応答するように構成することができる。その他のすべての宛先アドレスに対しては、パーサテーブルエントリーは見つからないであろ。アドレッサー2260はその後、DXP 2400かSPU 2140もしくはその両方に現在のパケットを関係のないパケットとして消去するように命令する、現在のNTに対するデフォルト規則を検索するであろう。   Considering the destination IP address as an example, the parser table can be configured to respond to, for example, one of the two destination addresses expected during an appropriate analysis cycle. For all other destination addresses, no parser table entry will be found. Addresser 2260 will then retrieve the default rule for the current NT that instructs DXP 2400 and / or SPU 2140 to delete the current packet as an irrelevant packet.

上述した生成規則テーブルをインデックス化するアプローチは、比較的簡単でかつすばやいルールアクセスを提供するが、その他のインデックス化スキームも実行可能性がある。可変長さPRテーブルエントリーに関して、PRコードを演算的に制御して、生成規則の物理的メモリの開始アドレスを決定することができる(これは、例えば生成規則が拡張された長さで保存され、次にPRコードが規則の保存された場所に従って割り当てられれば、実行可能である)。その他のアプローチでは、中間ポインターテーブルを使用することで、PRT2250内で生成規則のアドレスをPRコードから決定することや、MAPT 2280内のデフォルト生成規則のアドレスをNTシンボルから決定することができる。   The approach to indexing the production rule table described above provides relatively simple and quick rule access, but other indexing schemes may be implemented. For variable length PR table entries, the PR code can be computationally controlled to determine the starting address of the production rule's physical memory (for example, the production rule is stored with an extended length, Then, if the PR code is assigned according to the place where the rule is stored, it is executable). In other approaches, by using an intermediate pointer table, the address of the production rule can be determined from the PR code in the PRT 2250, and the address of the default production rule in the MAPT 2280 can be determined from the NT symbol.

一つの追加の機能ユニットである入力バッファ2300をさらに詳しく説明した後で、生成規則2262または2264からのシンボルと、SEPと、スキップバイト値の使用法(use)を、以下でさらに説明する。   After describing in more detail one additional functional unit, input buffer 2300, the use of symbols, SEPs, and skip byte values from production rule 2262 or 2264 are further described below.

図16は、本発明の実施例で利用可能である一つの実行可能性がある入力バッファ2300の具体例を示している。入力バッファ2300は以下の要素から構成される。
入力ポート2110を介してデータを受け取るバッファ2300。
バッファ2310内のデータを制御するための制御ブロック2300。
受け取ったデータに転送エラーがあるかを確認するためのエラー確認(EC)ブロック2320。
DXP 2400が、バッファ2310内のデータに対してFIFOアクセスをすることを可能にするFIFOブロック2340。
SPU 2140が、バッファ2310内のデータに対してランダムアクセスをすることを可能にするランダムアクセス(RA)ブロック2350。
ECブロック2320は、好ましくは、相互パケットギャップ(IGP)の違反及びイーサネットヘッダーのエラーを確認するとともに循環冗長コード(CRC)を算定することにより、受け取ったデータフレームまたはパケットがエラーを含んでいるかどうかを判定する。
FIG. 16 shows an example of one possible input buffer 2300 that can be used in embodiments of the present invention. The input buffer 2300 includes the following elements.
A buffer 2300 that receives data via input port 2110.
A control block 2300 for controlling data in the buffer 2310.
Error confirmation (EC) block 2320 to check if the received data has a transfer error.
A FIFO block 2340 that allows the DXP 2400 to have FIFO access to the data in the buffer 2310.
A random access (RA) block 2350 that allows the SPU 2140 to have random access to the data in the buffer 2310.
EC block 2320 preferably checks whether the received data frame or packet contains an error by checking for interpacket gap (IGP) violations and Ethernet header errors and calculating a cyclic redundancy code (CRC). Determine.

パケットや、フレームや、その他のデータセグメントが入力ポート2110を介してバッファ2310において受信されると、入力バッファ2300はDXP 2400にポートIDを転送し、DXP 2400に新しいデータが着いたことを告知する。ECブロック2320は、新しいデータにエラーがあるかどうかを確認し、ステータス信号としてDXP 2400へと送られるステータスビットを設定する。DXP 2400は、受け取ったデータセグメントのヘッダーを解析することを決定すると、制御_DXP信号を入力バッファ2300へと送る。この制御_DXP信号は、バッファ2310からのある量のデータを要求するか、またはバッファ2310がデータをDXP2400へと送ることなく、そのデータヘッドポインターをインクリメントすることを要求する。制御_DXP信号を受け取るとすぐに、制御ブロック2330は、バッファ2310からのデータを含む(リクエストされれば)データ_ DXP信号を、FIFOブロック2340を介してDXP 2400へと転送する。本発明のある実施例では、制御ブロック2330及びFIFOブロック2340は、制御キャラクターがDXP 2400へとデータ_DXP信号で送信される際に、制御キャラクターをデータセグメントへと追加する。この制御キャラクターは、転送されるデータの各バイトの先頭に付け加えられ、データの次のバイトが終端シンボルであるか非終端シンボルであるかどうかを示す1ビットのステータスフラグを有しているのが好ましい。この制御キャラクターは、パケットの先頭や、パケットの終端や、ポート_IDなどの特殊な非終端シンボルを含んでいてもよい。   When a packet, frame, or other data segment is received at buffer 2310 via input port 2110, input buffer 2300 forwards the port ID to DXP 2400 and informs DXP 2400 that new data has arrived. . The EC block 2320 checks whether there is an error in the new data and sets a status bit that is sent to the DXP 2400 as a status signal. When DXP 2400 decides to parse the header of the received data segment, it sends a control_DXP signal to input buffer 2300. This control_DXP signal requests a certain amount of data from buffer 2310, or requests that buffer 2310 increment its data head pointer without sending the data to DXP 2400. As soon as the control_DXP signal is received, the control block 2330 forwards the data_DXP signal including data from the buffer 2310 (if requested) to the DXP 2400 via the FIFO block 2340. In one embodiment of the present invention, control block 2330 and FIFO block 2340 add a control character to the data segment as the control character is transmitted to the DXP 2400 with a data_DXP signal. This control character is preferably added to the beginning of each byte of data to be transferred and preferably has a 1-bit status flag indicating whether the next byte of data is a terminal symbol or a non-terminal symbol. . This control character may include special non-terminal symbols such as the beginning of the packet, the end of the packet, and the port_ID.

SPU 2140が、DXP 2400から、入力バッファデータ内のデータにアクセスするようSPU 2140に要求するSPUエントリーポイント(SEP)を受け取ると、SPU 2140は入力バッファ2300に、バッファ2310内の所定の場所にあるデータを要求する制御_SPU信号を送る。制御_SPU信号を受け取るとすぐに、制御ブロック2330はSPU 2140に側帯波(Sideband)信号を送り、RAブロック2350を介してSPU 2140へとバッファ2310からのデータを含むデータ_SPU信号を送る。この側帯波(Sideband)信号は、好ましくは、何バイトの送られたデータが有効であるかどうかとデータストリーム中にエラーがあるかどうかを示す。本発明のある実施例では、制御ブロック2330及びRAブロック2350は、データストリームがSPU 2140へ送信されるように、制御キャラクターをデータストリームへと追加する。この制御キャラクターは、必要であれば、演算されたCRC値及びエラーフラッグを、データストリーム内のパケットまたはフレームの末端に付け加えているのが好ましい。   When the SPU 2140 receives from the DXP 2400 an SPU entry point (SEP) requesting the SPU 2140 to access data in the input buffer data, the SPU 2140 is in the input buffer 2300 and in place in the buffer 2310 Send control_SPU signal to request data. As soon as the control_SPU signal is received, the control block 2330 sends a sideband signal to the SPU 2140 and sends a data_SPU signal containing data from the buffer 2310 to the SPU 2140 via the RA block 2350. This Sideband signal preferably indicates how many bytes of transmitted data are valid and whether there is an error in the data stream. In one embodiment of the invention, control block 2330 and RA block 2350 add control characters to the data stream so that the data stream is transmitted to SPU 2140. The control character preferably adds the computed CRC value and error flag to the end of the packet or frame in the data stream, if necessary.

図17は、DXP 2400の一つの実行可能性のある具体例のブロック図を示している。パーサ制御有限状態マシン(FSM)2410は、図17に示すその他の論理ブロックからの入力に基づいて、全体的なDXP 2400のオペレーションを制御し、順序付ける。パーサスタック2430は、DXP 2400により実行されるシンボルを格納する。入力ストリームシーケンス制御部2420は、DXP 2400により処理されることとなる入力データ値を入力バッファ2300から読み出す。SPUインターフェイス2440はDXP 2400に代わって、タスクをSPU 2140へと送る。これらのブロックの特定の機能は、以下でさらに詳細に説明する。   FIG. 17 shows a block diagram of one possible implementation of DXP 2400. A parser controlled finite state machine (FSM) 2410 controls and orders the overall DXP 2400 operations based on inputs from the other logic blocks shown in FIG. Parser stack 2430 stores symbols executed by DXP 2400. The input stream sequence control unit 2420 reads the input data value to be processed by the DXP 2400 from the input buffer 2300. The SPU interface 2440 sends tasks to the SPU 2140 on behalf of the DXP 2400. The specific functions of these blocks are described in further detail below.

図14〜17に示すブロック図の基本的なオペレーションは、以下において、図18に示すデータストリーム解析に関するフローチャートに基づいて説明する。このフローチャート2500は、本発明の実施方式を示すために用いられる。   The basic operations of the block diagrams shown in FIGS. 14 to 17 will be described below based on the flowchart relating to the data stream analysis shown in FIG. This flowchart 2500 is used to show the implementation method of the present invention.

ブロック2510では、セマンティックプロセッサ2100は、パケットが入力ポート2110を介して入力バッファ2300内で受信されるのを待つ。   At block 2510, semantic processor 2100 waits for a packet to be received in input buffer 2300 via input port 2110.

次の判定ブロック2512は、ブロック2510でパケットが受信されたかどうか判定する。パケットがまだ受信されてない場合、プロセスは、ブロック2510へと戻り、セマンティックプロセッサ2100がパケットが受信されるのを待つ。パケットが入力バッファにおいて受信されている場合、次のブロック2520では、入力バッファ2300は、ポートID信号をDXP 2400へと送る。この信号は、NTシンボルとしてパーサスタック2430上へと転送される。このポートID信号は、DXP 2400に、パケットが入力バッファ2300に到着したことを告知する。本発明の好ましい実施例では、ポートID信号は、入力ストリームシーケンス制御部2420で受信され、FSM 2410へと転送される。この信号は、パーサスタック2430上へ転送される。好ましくは、1ビットのステータスフラグは、ポートIDに先行して、あるいはポートIDと並列な関係で送られ、ポートIDをNTシンボルで表す。   A next decision block 2512 determines whether a packet is received at block 2510. If the packet has not been received, the process returns to block 2510 and waits for the semantic processor 2100 to receive the packet. If a packet has been received at the input buffer, then in the next block 2520, the input buffer 2300 sends a port ID signal to the DXP 2400. This signal is transferred onto the parser stack 2430 as an NT symbol. This port ID signal informs DXP 2400 that the packet has arrived at input buffer 2300. In the preferred embodiment of the present invention, the port ID signal is received by the input stream sequence controller 2420 and forwarded to the FSM 2410. This signal is transferred onto the parser stack 2430. Preferably, the 1-bit status flag is sent before the port ID or in parallel with the port ID, and the port ID is represented by an NT symbol.

次のブロック2530では、DXP 2400は、パーサスタック2430の一番上にあるシンボルがスタックの一番下のシンボルでなく、このDXPがさらなる入力を待っていないと判定した後、入力バッファ2300からnバイトの入力ストリームデータをリクエストし、それを受信する。DXP 2400は、入力ストリームシーケンス制御部2420と入力バッファ2300の間のデータ/制御信号を介してデータをリクエストし、それを受信する。   In the next block 2530, the DXP 2400 determines that the symbol at the top of the parser stack 2430 is not the bottom symbol on the stack, and that this DXP is not waiting for further input, and then n from the input buffer 2300 Request byte input stream data and receive it. The DXP 2400 requests data via a data / control signal between the input stream sequence controller 2420 and the input buffer 2300 and receives it.

次の判定ブロック2532は、パーサスタック2430上のシンボルが終端(T)シンボルとNTシンボルのどちらであるかを判定する。この判定は、好ましくは、FSM 2410がパーサスタック2430上のシンボルのステータスフラグを読み込むことにより実行される。   A next decision block 2532 determines whether the symbol on the parser stack 2430 is a terminal (T) symbol or an NT symbol. This determination is preferably performed by the FSM 2410 reading a symbol status flag on the parser stack 2430.

このシンボルが終端シンボルであると判定されると、次のブロック2540では、DXP 2400は、受信したNバイトのデータの次のバイトとTシンボルの間に一致があるかどうか確認する。FSM 2410は、入力ストリームシーケンス制御部2420により受信されたデータの次のバイトをパーサスタック2430上のTシンボルと比較することで、一致があるかどうか確認する。確認が完了した後、FSM 2410は、好ましくは、スタックポインターをデクリメントすることにより、Tシンボルをパーサスタックから取り除く(pop)。   If it is determined that this symbol is a terminal symbol, in the next block 2540, the DXP 2400 checks whether there is a match between the next byte of the received N bytes of data and the T symbol. The FSM 2410 confirms whether there is a match by comparing the next byte of the data received by the input stream sequence control unit 2420 with the T symbol on the parser stack 2430. After verification is complete, the FSM 2410 preferably pops the T symbol from the parser stack by decrementing the stack pointer.

この次の判定ブロック2542は、データの次のバイトとTシンボルの間に一致があるかどうか判定する。一致がある場合、実行プログラムはブロック2530へと戻り、DXP 2400が、パーサスタック2430の一番上にあるシンボルがスタックの一番下のシンボルでなく、このDXPがさらなる入力を待っていないと判定した後、入力バッファ2300から追加の入力ストリームデータをリクエストし、それを受信する。本発明の好ましい実施例では、DXP 2400は、Tシンボルの一致があった場合、1バイトの入力ストリームデータだけリクエストし、それを受信し、入力シンボルが一つ消費される分DIバッファを補充する。   This next decision block 2542 determines whether there is a match between the next byte of data and the T symbol. If there is a match, the executing program returns to block 2530 and DXP 2400 determines that the symbol at the top of parser stack 2430 is not the bottom symbol on the stack and that this DXP is not waiting for further input. Then, request additional input stream data from the input buffer 2300 and receive it. In the preferred embodiment of the present invention, if there is a T symbol match, the DXP 2400 requests only one byte of input stream data, receives it, and replenishes the DI buffer as one input symbol is consumed. .

一致がなかった場合、現在のデータセグメントの残りセグメントが周辺機器のどこかにあり解析不能であると推測される。次のブロック2550では、DXP 2400は、パーサスタック2430をリセットし、SEPを起動して、入力バッファ2300からの現在のパケットの残りを取り除く。本発明のある実施例では、FSM 2410は、残りのシンボルを取り除く(pop off)か、一番上のスタックポインターがスタックの一番下のシンボルを指し示すように設定することにより(こちらの方が好ましい)、パーサスタック2430をリセットする。DXP 2400は、SPUインターフェイス2440を介してSPU 2140にコマンドを送ることにより、SEP起動する。このコマンドは、SPU 2140がSCT 2150からマイクロ命令をロードすることを要求する。そしてこのマイクロ命令は実行されると、SPU 2140が、解析できないデータセグメントの残りを入力バッファ2300から取り除くことを可能にする。実行プログラムは、その後、ブロック2510へと戻る。   If there is no match, it is assumed that the remaining segment of the current data segment is somewhere in the peripheral and cannot be analyzed. In the next block 2550, the DXP 2400 resets the parser stack 2430 and activates the SEP to remove the remainder of the current packet from the input buffer 2300. In one embodiment of the invention, FSM 2410 either removes the remaining symbols (pop off) or sets the top stack pointer to point to the bottom symbol on the stack (which is more Reset the parser stack 2430 (preferably). The DXP 2400 starts SEP by sending a command to the SPU 2140 via the SPU interface 2440. This command requests SPU 2140 to load microinstructions from SCT 2150. This microinstruction, when executed, allows the SPU 2140 to remove from the input buffer 2300 the remainder of the data segment that cannot be parsed. The executing program then returns to block 2510.

なお、データストリーム内の解析できない入力のすべての例が、現在のデータセグメントの解析の中止をもたらす可能性がある訳ではない。例えば、パーサは、直接文法を用いることで、通常のヘッダーオプションを制御するように構成されてもよい。他のやり方としては、解析のためにヘッダーオプションをSPUへと送るデフォルト文法規則を使用することで、あまり一般的ではないかあるいは扱いにくいヘッダーオプションに対処することができる。   Note that not all examples of unparseable input in a data stream can result in a break in parsing the current data segment. For example, the parser may be configured to control normal header options by using a direct grammar. Another way to deal with header options that are less common or cumbersome is to use default grammar rules that send header options to the SPU for parsing.

判定ブロック2532におけるシンボルがNTシンボルであると判定されると、次のブロック2560では、DXP 2400は、パーサスタック2430から受け取ったNTシンボルと入力ストリームシーケンス制御部2420内の受信したNバイトDI[N]とをパーサテーブル2200へ送る。そこで、パーサテーブル2200は、例えば前述したように、一致があるかどうか確認する。図示した実施例では、パーサテーブル2200は、受信したNバイトとNTシンボルを連結させる。別のやり方としては、受信したNバイトとNTシンボルを、パーサテーブル2200へ送られる前に連結させてもよい。好ましくは、受信したNバイトは、SPUインターフェイス2440とパーサテーブル2200の両方へと同時に送られ、またNTシンボルは、パーサテーブル2200とPRT 2250の両方へと同時に送られる。一致確認が完了したあと、FSM2 410は、パーサスタック2430からNTシンボルを取り除く(pop)。これは、スタックポインターをデクリメントすることにより実行されるのが好ましい。   If it is determined that the symbol in decision block 2532 is an NT symbol, in the next block 2560, the DXP 2400 receives the NT symbol received from the parser stack 2430 and the received N byte DI [N in the input stream sequence controller 2420. ] To the parser table 2200. Therefore, the parser table 2200 confirms whether there is a match, for example, as described above. In the illustrated embodiment, parser table 2200 concatenates the received N bytes and NT symbols. Alternatively, the received N bytes and NT symbols may be concatenated before being sent to the parser table 2200. Preferably, the received N bytes are sent simultaneously to both SPU interface 2440 and parser table 2200, and NT symbols are sent simultaneously to both parser table 2200 and PRT 2250. After the match check is complete, the FSM2 410 removes the NT symbol from the parser stack 2430 (pop). This is preferably done by decrementing the stack pointer.

次の判定ブロック2562は、パーサテーブル2200内で、Nバイトのデータと連結されたNTシンボルに対する一致があったかどうか判定する。一致がある場合、次のブロック2570では、パーサテーブル2200は一致に対応するPRコードをPRT 2250へと送り返し、そのPRコードは生成規則をPRT 2250内にアドレス指定する。その他のやり方では、PRコードは、DXP 2400を介してパーサテーブル2200からPRT 2250へと送られる。その後、実行プログラムはブロック2590から続く。   The next decision block 2562 determines whether there is a match for the NT symbol concatenated with N bytes of data in the parser table 2200. If there is a match, in the next block 2570, the parser table 2200 sends the PR code corresponding to the match back to the PRT 2250, which addresses the generation rule in the PRT 2250. Otherwise, the PR code is sent from parser table 2200 to PRT 2250 via DXP 2400. The execution program then continues from block 2590.

一致がない場合、次のブロック2580では、DXP 2400は受信したNTシンボルを使用して、PRT 2250内でデフォルト生成規則を検索する。好ましい実施例では、デフォルト生成規則はPRT 2250内に配置されたMAPT 2280メモリ内で検索される。その他のやり方としては、MAPT 2280メモリは、PRT 2250以外のメモリブロック内に配置されてもよい。   If there is no match, in the next block 2580, the DXP 2400 uses the received NT symbol to search for a default production rule in the PRT 2250. In the preferred embodiment, the default production rule is searched in the MAPT 2280 memory located in the PRT 2250. Alternatively, the MAPT 2280 memory may be located in a memory block other than the PRT 2250.

本発明の好ましい実施例では、PRT 2250がPRコードを受信すると、PRT 2250は、見つかった生成規則またはデフォルト生成規則のどちらかに対応するPRのみをDXP 2400へ送り返す。その他のやり方としては、PR及びデフォルトPRの両方をDXP 2400へと送り返し、DXP 2400がどちらを使用するか決定するやり方もある。   In the preferred embodiment of the present invention, when the PRT 2250 receives the PR code, the PRT 2250 sends back only the PR corresponding to either the found production rule or the default production rule to the DXP 2400. Another way is to send both the PR and default PR back to the DXP 2400 and the DXP 2400 will decide which one to use.

次のブロック2590では、DXP 2400はPRT 2250から受信した規則を処理する。DXP 2400が受信した規則は、生成規則とデフォルト生成規則のどちらであってもよい。本発明の実施例では、FSM 2410は、規則を以下の三つのセグメントに分割する。ここで言う三つのセグメントとは、シンボルセグメントと、SEPセグメントと、スキップバイトセグメントのことである。規則の各セグメントは、簡単で正確な分割ができるように、固定された長さを持つかあるいはヌル終端化されているのが好ましい。   In the next block 2590, the DXP 2400 processes the rules received from the PRT 2250. The rules received by DXP 2400 may be either production rules or default production rules. In an embodiment of the present invention, FSM 2410 divides the rule into the following three segments. The three segments referred to here are a symbol segment, a SEP segment, and a skip byte segment. Each segment of the rule preferably has a fixed length or is null terminated so that it can be easily and accurately divided.

図示している実施例では、FSM 2410はTシンボルか、NTシンボルか、またはその両方をパーサスタック2430に送る。これらのシンボルは、生成規則のシンボルセグメント内に含まれるものである。FSM 2410は、生成規則のSEPセグメント内に含まれるSEPを、SPUインターフェイス2440に送る。各SEPは、SCT 2150内に配置されたマイクロ命令に対するアドレスを備えている。これらのSEPを受け取るとすぐに、SPUインターフェイス2440は、SEPにより指定されたマイクロ命令を取り込み、それらを実行するように、SPU 2140を割り当てる。多くの場合、SPUにより完了されるタスクはさらなる入力データを必要としないので、SPUインターフェイス2440はまた、現在のDI[N]値をSPU 2140へと送る。他のやり方としては、SPUインターフェイス2440は、SPU 2140により実行されるマイクロ命令を取り込み、SPUを割り当てるのと同時にそれらのマイクロ命令をSPU 2140へ送る。FSM 2410は、入力ストリームシーケンス制御部2420を介して、生成規則のスキップバイトセグメントを入力バッファ2300に送る。入力バッファ2300は、スキップバイトデータを使用して、入力ストリーム内の配置を指し示す自身のバッファポインターをインクリメントする。各解析サイクルは、それ故に、0から8までの範囲のいずれかの個数の入力シンボルを消費することができる。   In the illustrated embodiment, FSM 2410 sends a T symbol, an NT symbol, or both to parser stack 2430. These symbols are included in the symbol segment of the production rule. The FSM 2410 sends the SEP included in the SEP segment of the production rule to the SPU interface 2440. Each SEP has an address for a microinstruction located in the SCT 2150. As soon as these SEPs are received, the SPU interface 2440 takes the microinstructions specified by the SEP and assigns the SPU 2140 to execute them. In many cases, SPU interface 2440 also sends the current DI [N] value to SPU 2140 because tasks completed by the SPU do not require any additional input data. Alternatively, the SPU interface 2440 takes microinstructions executed by the SPU 2140 and sends the microinstructions to the SPU 2140 at the same time as the SPUs are allocated. The FSM 2410 sends the skip byte segment of the generation rule to the input buffer 2300 via the input stream sequence control unit 2420. The input buffer 2300 uses the skip byte data to increment its own buffer pointer that points to the placement in the input stream. Each analysis cycle can therefore consume any number of input symbols ranging from 0 to 8.

DXP 2400がPRTから受信した規則を処理したあと、次の判定ブロック2592は、パーサスタック2430上の次のシンボルがスタックの一番下のシンボルかどうか判定する。次のシンボルがスタックの一番下のシンボルである場合、実行プログラムはブロック2510に戻り、そこで、セマンティックプロセッサ2100が、新しいパケットが入力ポート2110を介して入力バッファ2300において受信されるのを待つ。   After the DXP 2400 processes the rules received from the PRT, the next decision block 2592 determines whether the next symbol on the parser stack 2430 is the bottom symbol on the stack. If the next symbol is the bottom symbol on the stack, the executing program returns to block 2510 where the semantic processor 2100 waits for a new packet to be received at the input buffer 2300 via the input port 2110.

次のシンボルがスタックの一番下のシンボルでない場合、次の判定ブロック2594は、DXP2400が、パーサスタック上2430の次のシンボルの処理を開始する前に、それがさらなる入力を待っているかどうか判定する。図示しているDXP 2400は、SPU 2140が入力ストリームのセグメントの処理を開始するのを待つことや、SPU 2140が処理結果のデータを送り返すのを待つことなどができる。   If the next symbol is not the bottom symbol on the stack, the next decision block 2594 determines whether it is waiting for further input before the DXP 2400 begins processing the next symbol on the parser stack 2430. To do. The illustrated DXP 2400 can wait for the SPU 2140 to start processing a segment of the input stream, wait for the SPU 2140 to send back processing result data, and so forth.

DXP 2400がさらなる入力を待っていない場合、実行プログラムはブロック2530へと戻り、そこで、DXP 2400が入力バッファ2300から入力ストリームデータをリクエストし、それを受信する。DXP 2400がさらなる入力を待っている場合、実行プログラムは、その入力が受信されるまで、ブロック2594へのループを続ける。   If the DXP 2400 is not waiting for further input, the executing program returns to block 2530 where the DXP 2400 requests input stream data from the input buffer 2300 and receives it. If the DXP 2400 is waiting for further input, the executing program continues to loop to block 2594 until that input is received.

図19は、別のセマンティックプロセッサの実施例を示している。セマンティックプロセッサ2600は、多数のセマンティックプロセッシングユニット(SPU)2140−1〜2140−Nを含むセマンティックプロセッシングユニット(SPU)のクラスター2640を備えている。SPU 2140−1〜2140−Nの各SPUは、同一の構成及び機能を持つのが好ましい。SPUクラスター2640は、メモリサブシステム2130と、SPUエントリーポイントSEEエントリーポイントディスパッチャ(dispatcher)2650と、SCT 2150と、ポート入力バッファ(PIB)2700と、ポート出力バッファ(POB) 2620と、マシン中央演算処理装置(MCPU)2660と、接続されている。   FIG. 19 illustrates another semantic processor embodiment. Semantic processor 2600 includes a cluster 2640 of semantic processing units (SPUs) including a number of semantic processing units (SPUs) 2140-1 to 2140-N. The SPUs 2140-1 to 2140-N preferably have the same configuration and function. SPU cluster 2640, memory subsystem 2130, SPU entry point SEE entry point dispatcher (dispatcher) 2650, SCT 2150, port input buffer (PIB) 2700, port output buffer (POB) 2620, machine central processing It is connected to the device (MCPU) 2660.

DXP 2800が、解析の特定の時点でSPUタスクが開始されるべきであると判定すると、DXP 2800は、SEPディスパッチャ2650に、セマンティックコードテーブル(SCT)2150からマイクロ命令をロードし、SPUクラスター2640内の複数のSPU2140‐1〜2140‐NからSPUを割り当てて、タスクを実行するように信号で伝える。ロードされたマイクロ命令は、タスクが実行されるべきであることを示し、割り当てられたSPUへと送られる。割り当てられたSPUは、その後、マイクロ命令を実行し、入力ストリーム内のデータはそれに沿って処理される。その他のやり方としては、SPUは、SEPディスパッチャ2650により指示される場合、マイクロ命令をSCT2150から直接ロードしてもよい。   If the DXP 2800 determines that the SPU task should be started at a particular point in the analysis, the DXP 2800 loads the SEP dispatcher 2650 with microinstructions from the Semantic Code Table (SCT) 2150 and within the SPU cluster 2640 Allocate SPUs from multiple SPUs 2140-1 to 2140-N and signal them to perform the task. The loaded microinstruction indicates that the task should be executed and is sent to the assigned SPU. The assigned SPU then executes the microinstruction and the data in the input stream is processed accordingly. Alternatively, the SPU may load microinstructions directly from the SCT 2150 when directed by the SEP dispatcher 2650.

より詳しく理解するために図20を参照すると、PIB 2700は少なくとも一つのネットワークインターフェイス入力バッファ2300(この図では、2300_0及び2300_1が図示されている)と、再循環バッファ2710と、相互周辺機器(PCI-X)入力バッファ2300_2と、を備えている。POB 2620(図示せず)は、少なくとも一つのネットワークインターフェイス出力バッファと、PCI-X出力バッファと、を備えている。ポートブロック2610は、各々が物理的インターフェイスを有している一つまたは複数のポートを備えている。この物理的インターフェイスの例としては、Fibre Channelや、802.11xや、ユニバーサル・シリアル・バス(USB)や、ファイヤーワイヤーや、SONETや、その他の物理レイヤーインターフェイスに対する光学的または電気的あるいは無線によるドライバーとレシーバーのペアなどが挙げられる。ポートブロック2610内のポートの数は、PIB 2700内のネットワークインターフェイス入力バッファの数及びPOB 2620内の出力バッファの数と対応するのが好ましい。   Referring to FIG. 20 for a more detailed understanding, the PIB 2700 includes at least one network interface input buffer 2300 (in this figure, 2300_0 and 2300_1 are illustrated), a recirculation buffer 2710, and a mutual peripheral (PCI -X) input buffer 2300_2. The POB 2620 (not shown) includes at least one network interface output buffer and a PCI-X output buffer. The port block 2610 includes one or more ports, each having a physical interface. Examples of this physical interface include optical, electrical, or wireless drivers for Fiber Channel, 802.11x, Universal Serial Bus (USB), FireWire, SONET, and other physical layer interfaces. For example, a receiver pair. The number of ports in port block 2610 preferably corresponds to the number of network interface input buffers in PIB 2700 and the number of output buffers in POB 2620.

少し戻って図19では、PCI-Xインターフェイス2630は、PIB 2700内のPCI-X入力バッファと、POB 2620内のPCI-X出力バッファと、外部PCIバス2670と、接続されている。PCIバス2670は、ディスクドライブや追加のネットワークポート用のインターフェイスなどのようなその他のPCI可能な周辺機器と接続することができる。   Referring back slightly to FIG. 19, the PCI-X interface 2630 is connected to the PCI-X input buffer in the PIB 2700, the PCI-X output buffer in the POB 2620, and the external PCI bus 2670. The PCI bus 2670 can be connected to other PCI-capable peripherals such as disk drives and interfaces for additional network ports.

MCPU 2660は、SPUクラスター2640及びメモリサブシステム2130と接続されている。MCPU 2660は、セマンティックプロセッサ2600にとって望ましい機能の中で、従来のソフトウェアで無理なく遂行できるものを実行する。これらの機能は、通常、あまり使われずかつ時間的に重要でない機能であり、そのコードの複雑性から、SCT2150内に含まれることを保障しない。MCPU 2660はまた、SPUがMCPUの代わりにタスクを実行することをリクエストするために、SEPディスパッチャ2650と通信できるのが好ましい。   The MCPU 2660 is connected to the SPU cluster 2640 and the memory subsystem 2130. The MCPU 2660 implements the functions desired for the semantic processor 2600 that can be accomplished with conventional software without difficulty. These functions are usually functions that are not often used and are not important in time, and because of the complexity of the code, they are not guaranteed to be included in the SCT 2150. The MCPU 2660 is also preferably capable of communicating with the SEP dispatcher 2650 to request that the SPU perform tasks on behalf of the MCPU.

図20は、本発明の実施例に利用することができるポート入力バッファ(PIB)2700の一つの実行可能性がある具体例を示している。PIB 2700は、二つのネットワークインターフェイス入力バッファ2300_0及び2300_1と、再循環バッファ2710と、PCI-X入力バッファ2300_2と、を備えている。入力バッファ2300_0及び2300_1と、PCI-X入力バッファ2300_2は、機能的に入力バッファ2300と同等である。しかしこれらは、入力データを、ポートブロック2610と PCI-Xインターフェイス2630に対してそれぞれ異なっている入力から受け取る。   FIG. 20 illustrates one possible implementation of a port input buffer (PIB) 2700 that can be utilized in embodiments of the present invention. The PIB 2700 includes two network interface input buffers 2300_0 and 2300_1, a recirculation buffer 2710, and a PCI-X input buffer 2300_2. The input buffers 2300_0 and 2300_1 and the PCI-X input buffer 2300_2 are functionally equivalent to the input buffer 2300. However, they receive input data from different inputs to the port block 2610 and the PCI-X interface 2630, respectively.

再循環バッファ2710は、SPUクラスター2640から再循環データを受け取るバッファ2712と、バッファ2712内の再循環データを制御するための制御ブロック2714と、DXP 2800が(図21に示している)バッファ2712内の再循環データに対してFIFOアクセスすることを可能にするFIFOブロック2716と、SPUクラスター2640内のSPUがバッファ2712内の再循環データに対してランダムアクセス(RA)することを可能にするランダムアクセスブロック2718と、を備えている。SPUクラスターからの再循環データがバッファ2712において受信されると、再循環バッファ2710はポートIDをDXP 2800へと送り、新しいデータが到着したことをDXP 2800に告知する。送られるポートIDは、バッファ2712内の最初のシンボルであることが好ましい。   The recirculation buffer 2710 includes a buffer 2712 that receives recirculation data from the SPU cluster 2640, a control block 2714 for controlling the recirculation data in the buffer 2712, and a DXP 2800 in the buffer 2712 (shown in FIG. 21). FIFO block 2716, which allows FIFO access to the recirculated data, and random access, which allows the SPUs in SPU cluster 2640 to randomly access (RA) the recirculated data in buffer 2712 And a block 2718. When recirculated data from the SPU cluster is received in buffer 2712, recirculating buffer 2710 sends a port ID to DXP 2800 to notify DXP 2800 that new data has arrived. The port ID sent is preferably the first symbol in buffer 2712.

DXP 2800が再循環データを解析すると決定すると、このDXPは再循環バッファ2710に制御_DXP信号を送信する。この制御_ DXP信号は、バッファ2712からの一定量のデータを要求するか、バッファ2712のデータポインターをインクリメントするように要求するものである。制御_ DXP信号を受信するとすぐに、制御ブロック2714は、FIFOブロック2716を介して、バッファ2712からのデータを含むデータ_DXP信号をDXP 2800に送信する。本発明のある実施例においては、この制御ブロック2714とFIFOブロック2716は、データ_DXP信号を使用しDXP 2800へと送信される再循環データに制御キャラクターを加える。この制御キャラクターは、転送されるデータの各バイトの最初の部分に付け加えられ、データのそのバイトが終端シンボルか非終端シンボルなのかどうかを示す1ビットのステータスフラグであることが好ましい。   When the DXP 2800 decides to analyze the recirculated data, the DXP sends a control_DXP signal to the recirculating buffer 2710. This control_DXP signal requests a certain amount of data from the buffer 2712 or requests to increment the data pointer of the buffer 2712. As soon as the control_DXP signal is received, the control block 2714 sends a data_DXP signal including data from the buffer 2712 to the DXP 2800 via the FIFO block 2716. In one embodiment of the present invention, this control block 2714 and FIFO block 2716 add control characters to the recirculated data sent to the DXP 2800 using the data_DXP signal. This control character is preferably a 1-bit status flag that is added to the first portion of each byte of data to be transferred and indicates whether that byte of data is a terminal symbol or a non-terminal symbol.

SPUクラスター2640内のSPU 2140が、SPUに再循環ストリーム内のデータにアクセスすることを要求するSPUエントリーポイント(SEP)をDXP 2800から受信すると、SPU 2140は、ある記憶場所に位置するデータをバッファ2712からリクエストする制御_DXP信号を再循環バッファ2710へと送る。制御_DXP信号を受信するとすぐに、制御ブロック2714は、バッファ2712からのデータを含むデータ_DXP信号を、RAブロック2718を介してSPU 2140へと送る。   When the SPU 2140 in the SPU cluster 2640 receives an SPU entry point (SEP) from the DXP 2800 that requires the SPU to access the data in the recirculation stream, the SPU 2140 buffers the data located at a storage location. The control_DXP signal requested from 2712 is sent to the recirculation buffer 2710. Upon receipt of the control_DXP signal, control block 2714 sends a data_DXP signal containing data from buffer 2712 to SPU 2140 via RA block 2718.

図21は、DXP 2800の一つの実行可能性のある具体例のブロック図を示している。パーサ制御有限状態マシン(FSM)2410は、図17に示されているDXP 2400に関して記述したのと同様のやり方で、図21に示しているその他の論理ブロックからの入力に基づいて、全体的なDXP 2800のオペレーションを制御し、それを順序付ける。しかし、入力バッファ2700内の複数の解析中の入力の存在により違いが生じる。これらの違いは、主に、パーサ制御FSM 2410と、スタックハンドラー2830と、入力ストリームシーケンス制御部2420とにある。加えて、図17に示すパーサスタック2430は、複数のパーサスタック2430_1〜2430_Mを保持することができるパーサスタックブロック2860と交換されている。最後に、パーサデータレジスタバンク2810が追加される。   FIG. 21 shows a block diagram of one possible implementation of DXP 2800. The Parser Controlled Finite State Machine (FSM) 2410 is based on input from the other logic blocks shown in FIG. 21 in a manner similar to that described for the DXP 2400 shown in FIG. Control the operation of the DXP 2800 and order it. However, there are differences due to the presence of multiple inputs under analysis in the input buffer 2700. These differences are mainly in the parser control FSM 2410, the stack handler 2830, and the input stream sequence control unit 2420. In addition, the parser stack 2430 shown in FIG. 17 is replaced with a parser stack block 2860 that can hold a plurality of parser stacks 2430_1 to 2430_M. Finally, a parser data register bank 2810 is added.

スタックハンドラー2830は、DXP 2800により実行されるシンボルを保存するとともにそれらを順序付けることで、複数のパーサスタック2430_1〜2430_ Mを制御する。本発明のある実施例では、パーサスタック2430_1〜2430_Mは一つのメモリ内に配置され、各パーサスタックはそのメモリの決まった場所に配置される。その他のやり方として、パーサスタックブロック2860内のパーサスタック2430_1〜2430_Mの数と大きさは、動作中の入力データポートの数及び文法の数を読み取って、スタックハンドラー2830により、動的に決定され、変化させられてもよい。   The stack handler 2830 controls a plurality of parser stacks 2430_1 to 2430_M by storing and ordering symbols executed by the DXP 2800. In one embodiment of the invention, parser stacks 2430_1-2430_M are located in a single memory, and each parser stack is located at a fixed location in that memory. Alternatively, the number and size of parser stacks 2430_1-2430_M in parser stack block 2860 is dynamically determined by stack handler 2830, reading the number of active input data ports and the number of grammars, It may be changed.

DXP 2800は、複数のインターフェイスブロックを介して入力を受け取る。この複数のインターフェイスブロックは、パーサテーブル2840と、生成規則テーブル(PRT)インターフェイス2850と、入力ストリームシーケンス制御部2420と、SPUインターフェイス2440と、を含む。一般的に、これらのインターフェイスは、入力ストリームシーケンス制御部2420を除いて、前述したように機能する。   The DXP 2800 receives input through multiple interface blocks. The plurality of interface blocks include a parser table 2840, a production rule table (PRT) interface 2850, an input stream sequence control unit 2420, and an SPU interface 2440. In general, these interfaces function as described above, with the exception of the input stream sequence controller 2420.

入力ストリームシーケンス制御部2420及びデータレジスタバンク2810は、PIB 2700から入力ストリームデータを検索し、それを保持する。データレジスタバンク2810は、受信した入力ストリームデータを保存することができる複数のレジスタから構成される。レジスタの数は、パーサスタックテーブル2860内に存在できるパーサスタック2430_1〜2430_ Mの最大数に等しく、各レジスタはN個の入力シンボルを保持することができるのが好ましい。   The input stream sequence control unit 2420 and the data register bank 2810 retrieve input stream data from the PIB 2700 and hold it. The data register bank 2810 includes a plurality of registers that can store received input stream data. The number of registers is equal to the maximum number of parser stacks 2430_1 to 2430_M that can exist in the parser stack table 2860, and each register is preferably capable of holding N input symbols.

パーサ制御FSM 2410は、入力ストリームシーケンス制御部2420と、データレジスタバンク2810と、スタックハンドラー2830と、を制御し、異なる入力バッファ間で解析用コンテキストを切り替える。例えば、パーサ制御FSM 2410は、現在それが、入力バッファ2300_0と、入力バッファ2300_1と、PCI−X入力バッファ2300_2と、再循環バッファ2710と、のうちのどこから来たデータとともに動作しているのかを示すコンテキスト状態を保持する。このコンテキスト状態は入力ストリームシーケンス制御部2420に送信される。そして、入力ストリームシーケンス制御部にデータ入力に応答させるか、適切な入力バッファまたは再循環バッファに対するコマンドを伴った文法内のコマンドをスキップさせる。また、コンテキスト状態は、データレジスタバンク2810に送信される。そして、レジスタのロードや読み込み、現在のコンテキスト状態に対応するレジスタにアクセスする。最後に、このコンテキスト状態は、スタックハンドラー2830に送信され、スタックハンドラー2830に対するプッシュ(pushes)及びポップコマンドが、パーサスタック2430_1〜2430_ Mのうちの正しいパーサスタックへとアクセスするようにする。   The parser control FSM 2410 controls the input stream sequence control unit 2420, the data register bank 2810, and the stack handler 2830, and switches the analysis context between different input buffers. For example, the parser control FSM 2410 can now determine which of the input buffer 2300_0, input buffer 2300_1, PCI-X input buffer 2300_2, and recirculation buffer 2710 is operating with the data coming from. Holds the indicated context state. This context state is transmitted to the input stream sequence control unit 2420. Then, the input stream sequence control unit is caused to respond to the data input, or the command in the grammar accompanied by the command for the appropriate input buffer or recirculation buffer is skipped. The context state is transmitted to the data register bank 2810. Then, the register is loaded and read, and the register corresponding to the current context state is accessed. Finally, this context state is sent to the stack handler 2830 so that push and pop commands to the stack handler 2830 access the correct parser stack of the parser stacks 2430_1 to 2430_M.

パーサ制御FSMは解析用コンテキストを変えるタイミングを決定する。例えば、スタックの一番下のシンボルが特定のパーサスタック上に到達するか、特定の解析用コンテキストがSPUオペレーションの結果解析に行き詰まると、パーサ制御FSMは次の解析用コンテキストの状態(state of the next parsing context)を調べ(examine)、解析を行う準備のできた解析用コンテキストが到着するまで、総当り方式を継続する。   The parser control FSM determines when to change the analysis context. For example, if the bottom symbol on the stack reaches a particular parser stack, or if a particular parsing context gets stuck in analyzing the results of an SPU operation, the parser control FSM will state the next parsing context (state of the Examine the next parsing context and continue the brute force method until a ready analysis context arrives.

ブロック図15Aと、15Bと、19−21とにおける基礎的なオペレーションを図22に示すデータ解析のフローチャートに基づいて以下において説明する。フローチャート2900は、本発明の実施例にかかる実施方法を説明するために使用される。   The basic operations in the block diagrams 15A, 15B, and 19-21 will be described below based on the data analysis flowchart shown in FIG. Flowchart 2900 is used to describe an implementation method according to an embodiment of the present invention.

判定ブロック2905では、DXP 2800は、解析の行き詰ったパーサスタックに対応するデータ以外の新しいデータがPIB 2700において受信されたかどうか判定する。本発明の実施例では、PIB 2700内の4つのバッファは固有のポートIDを持つ。これらのポートIDは、新しいデータが受信されると、それぞれDXP 2800に送信される。好ましくは、再循環バッファ2710は、自身の固有のポートIDを各再循環データセグメント内の最初の一バイトとして有している。PIB 2700内の4つのバッファは、それぞれ固有の入力を持つので、DXP 2800は複数のポートIDを同時に受信することができる。DXP 2800が複数のポートIDを受信すると、総当り方式の調停(arbitration)を用いて、ポートに存在する新たなデータを解析するシーケンスを決定するようにするのが好ましい。   At decision block 2905, the DXP 2800 determines whether new data other than the data corresponding to the parser stack that was stalled in analysis has been received at the PIB 2700. In an embodiment of the invention, the four buffers in PIB 2700 have unique port IDs. These port IDs are each sent to the DXP 2800 when new data is received. Preferably, recirculation buffer 2710 has its own unique port ID as the first byte in each recirculation data segment. Since the four buffers in the PIB 2700 each have a unique input, the DXP 2800 can receive multiple port IDs simultaneously. When the DXP 2800 receives a plurality of port IDs, it is preferable to use a round-robin arbitration to determine a sequence for analyzing new data present at the port.

本発明のある実施例では、特定のストリームで解析を中止しなければならなくなったとき、パーサスタックはDXP 2800により保存される。FSM 2410が、パーサスタックの選択を切り替えるようにスタックハンドラーに命令する制御信号をスタックハンドラー2830に送ると、パーサスタックは保存される。   In one embodiment of the invention, the parser stack is saved by the DXP 2800 when parsing has to be stopped on a particular stream. When the FSM 2410 sends a control signal to the stack handler 2830 that instructs the stack handler to switch parser stack selection, the parser stack is saved.

新しいデータがまだ受信されていないと、プロセスはブロック2905へ戻り、そこで、DXP 2800は、新しいデータがPIB 2700で受信されるのを待つ。   If new data has not yet been received, the process returns to block 2905 where the DXP 2800 waits for new data to be received at the PIB 2700.

新しいデータが受信されていると、次のブロック2910では、DXP 2800は、選択されたバッファのポートIDをNTシンボルとして選択されたパーサスタック上へ転送する。この選択されたバッファは、PIB内のバッファでDXPが解析することを決めたバッファである。そして、DXP 2800内の選択されたパーサスタックは、DXP 2800が実行されるシンボルをそこに格納することを選択したパーサスタックである。各ポートに対してロードされた文法またはその一部は、そのポートに対してロードされた最初の(initial)非終端シンボルに応じて、異なってよい。例えば、ある入力ポートがSONETフレームを受信し、他の入力ポートがイーサーネットフレームを受信した場合、各ポートに対するポートIDNTシンボルは、各ポートに対する適切な文法を機械的に選択するのに使用することができる。   If new data has been received, at the next block 2910, the DXP 2800 forwards the port ID of the selected buffer onto the selected parser stack as an NT symbol. This selected buffer is the buffer in the PIB that DXP has decided to analyze. And the selected parser stack in DXP 2800 is the parser stack that has chosen to store the symbols on which DXP 2800 is executed. The grammar loaded for each port, or a portion thereof, may be different depending on the initial non-terminal symbol loaded for that port. For example, if one input port receives a SONET frame and another input port receives an Ethernet frame, the port IDNT symbol for each port can be used to mechanically select the appropriate grammar for each port. Can do.

本発明のある実施例では、入力ストリームシーケンス制御部2420は、総当り方式の調停(arbitration)を介してPIB 2700内でバッファを選択し、スタックハンドラー2830はパーサスタックブロック2860内でパーサスタックを選択する。本発明の好ましい実施例では、FSM 2410は入力ストリームシーケンス制御部に、PIB 2700内でのバッファの選択を可能にするように指示する信号を送り、データレジスタバンク2810にレジスタを選択するように指示する制御レジスタ信号(Control Reg signal)を送る。同様にFSM 2410は、スタックハンドラー2830に、バッファの選択を可能にするように指示する制御信号か、パーサスタックをパーサスタックブロック2860内で動的に割り当てるように指示する制御信号を送る。   In one embodiment of the present invention, the input stream sequence controller 2420 selects a buffer in the PIB 2700 via brute force arbitration, and the stack handler 2830 selects a parser stack in the parser stack block 2860. To do. In the preferred embodiment of the present invention, the FSM 2410 sends a signal to the input stream sequence controller instructing the selection of a buffer within the PIB 2700, and instructs the data register bank 2810 to select a register. Send a control register signal (Control Reg signal). Similarly, the FSM 2410 sends a control signal instructing the stack handler 2830 to allow selection of a buffer or a control signal instructing the parser stack to be dynamically allocated in the parser stack block 2860.

説明のため、入力バッファ2300_0は、DXP 2800により選定された自身のポートIDを持ち、このパーサスタック2430_1は、入力バッファ2300_0からのデータの解析において使用される文法シンボルを格納するために、DXP 2800により選定されると仮定する。本発明の図示されている実施例では、スタックハンドラー2830が、FSM 2410からポートIDをSYMコードで受信し、転送コマンドを制御信号で受信した後、ポートIDはスタックハンドラー2830により、パーサスタック2430_1上へと送られる。ポートIDに先行する1ビットのステータスフラグは、ポートIDをNTシンボルとして表示する。   For illustration purposes, the input buffer 2300_0 has its own port ID selected by the DXP 2800, and this parser stack 2430_1 is used to store grammar symbols used in parsing data from the input buffer 2300_0. Is selected. In the illustrated embodiment of the present invention, after the stack handler 2830 receives the port ID from the FSM 2410 as a SYM code and receives the transfer command as a control signal, the port ID is received by the stack handler 2830 on the parser stack 2430_1. Sent to. The 1-bit status flag preceding the port ID displays the port ID as an NT symbol.

次のブロック2920では、DXP 2800は、選択されたバッファ内のストリームからのNバイトのデータ(またはその一部)をリクエストし、それを受信する。図示されている実施例では、DXP 2800は、PIB 2700内の入力バッファ2300_0と入力ストリームシーケンス制御部2420の間のデータ/制御信号を介してデータをリクエストし、それを受信する。データが入力ストリーム制御部2420により受信されると、そのデータはデータレジスタ制御部2810内の選択されたレジスタへと格納される。データレジスタ制御部2810内の選択されたレジスタは、現在の解析用コンテキストにより制御される。   In a next block 2920, the DXP 2800 requests and receives N bytes of data (or a portion thereof) from the stream in the selected buffer. In the illustrated embodiment, the DXP 2800 requests and receives data via data / control signals between the input buffer 2300_0 in the PIB 2700 and the input stream sequence controller 2420. When data is received by the input stream controller 2420, the data is stored in a selected register in the data register controller 2810. The selected register in the data register control unit 2810 is controlled by the current analysis context.

次のブロック2930では、DXP 2800は、自身がさらなる入力を待っておらず、選択されたパーサスタック上のシンボルがスタックの一番下のシンボルでないと判定した後、選択されたパーサスタックの一番上にあるシンボル及び受信したNバイトのデータ(またはその一部)を処理する。ブロック2930は、一番上のシンボルが終端シンボルであるか非終端シンボルであるかの判定を含む。この判定は、スタックハンドラー2830により実行されてもよい。なお、この判定は、パーサスタック2430_1の一番上のシンボルのステータスフラグを読み込むとともに、そのステータスをFSM 2410へ接頭(P)コード信号として送信することにより実行されるのが好ましい。   In the next block 2930, DXP 2800 determines that it is not waiting for further input and that the symbol on the selected parser stack is not the bottom symbol on the stack, and then the top of the selected parser stack. Process the symbol above and the received N bytes of data (or part of it). Block 2930 includes determining whether the top symbol is a terminal symbol or a non-terminal symbol. This determination may be performed by the stack handler 2830. This determination is preferably performed by reading the status flag of the top symbol of parser stack 2430_1 and transmitting the status to FSM 2410 as a prefix (P) code signal.

判定ブロック2935において、シンボルが終端(T)シンボルであると判定されると、DXP 2800は、受信したNバイトからのデータの次のバイトとTシンボルの間で一致があるかどうか調べる。   If it is determined at decision block 2935 that the symbol is a terminal (T) symbol, the DXP 2800 checks to see if there is a match between the next byte of data from the received N bytes and the T symbol.

本発明の好ましい実施例では、Tシンボルの一致があったかどうかを調べるためにDXP 2400により使用される一致信号Mは、比較器2820が、スタックハンドラー2830からのTシンボルを入力されるとともに、データレジスタ制御装置2810内の選択されたレジスタからのデータの次のバイトを入力されている場合に、比較器2820によりFSM 2410へと送られる。スタックハンドラー2830は、シンボルをパーサスタック2430_ 1から取り出す(pop off of)ことで、パーサスタック2430_1上のTシンボルを比較器2820の入力へと送る。   In the preferred embodiment of the present invention, the match signal M used by the DXP 2400 to see if there has been a T symbol match is the comparator 2820 that receives the T symbol from the stack handler 2830 as well as the data register. When the next byte of data from the selected register in controller 2810 has been input, it is sent by comparator 2820 to FSM 2410. The stack handler 2830 pops off the symbol from the parser stack 2430_1 to send the T symbol on the parser stack 2430_1 to the input of the comparator 2820.

ブロック2945において、現在のパーサスタックの一番上にあるシンボルが非終端(NT)シンボルであると判定されると、DXP 2800は、パーサスタック2430_ 1からのNTシンボルと、バンク2810から選択されたレジスタ内の受信されたNバイトと、をパーサテーブル2200へと送る。図示されている実施例では、NTシンボル及び受信されたNバイトはパーサテーブルインターフェイス2840へと送られる。これらは、パーサテーブル2200へと送られる前に連結される。他のやり方としては、NTシンボル及び受信したNバイトをパーサテーブル2200へと直接送ることができる。いくつかの実施例では、選択されたレジスタ内の受信したNバイトは、SPU 2140とパーサテーブル2200に同時に送られる。   If block 2945 determines that the symbol at the top of the current parser stack is a non-terminal (NT) symbol, the DXP 2800 will register the NT symbol from parser stack 2430_1 and the register selected from bank 2810. The received N bytes are sent to the parser table 2200. In the illustrated embodiment, NT symbols and received N bytes are sent to parser table interface 2840. These are concatenated before being sent to the parser table 2200. Alternatively, the NT symbols and received N bytes can be sent directly to the parser table 2200. In some embodiments, the received N bytes in the selected register are sent to the SPU 2140 and the parser table 2200 simultaneously.

パーサスタック2430_ 1上のシンボルは、比較器2820と、パーサテーブルインターフェイス2450と、PRTインターフェイス2460とに同時に送られるのが好ましい。   The symbols on parser stack 2430_1 are preferably sent simultaneously to comparator 2820, parser table interface 2450, and PRT interface 2460.

有効なブロック2935のTシンボルの一致が試みられたと仮定すると、その一致が成功した場合、実行プログラムはブロック2920へと戻り、そこで、DXP 2800は、PIB 2700からのNバイト以下の追加のデータをリクエストし、それを受信する。本発明のある実施例では、DXP 2800は、Tシンボルの一致があった場合、1バイトのストリームデータをリクエストし、それを受信するだけとなる。   Assuming that a valid block 2935 T-symbol match was attempted, if the match was successful, the executing program would return to block 2920 where the DXP 2800 received no more than N bytes of data from the PIB 2700. Request and receive it. In one embodiment of the present invention, if there is a T symbol match, the DXP 2800 will only request and receive 1 byte of stream data.

ブロック2935での一致が試みられ成功すると、次のブロック2940では、DXP 2800は、文法が指示すれば、選択されたパーサスタックを消去してもよく、その後、SEPを起動して現在のデータセグメントの残りを現在の入力バッファから削除する。   If a match in block 2935 is attempted and successful, in the next block 2940, the DXP 2800 may clear the selected parser stack if the grammar indicates, and then invoke SEP to invoke the current data segment. Delete the rest of the from the current input buffer.

DXP 2800は、残りのシンボルを取り出すとともにスタックポインターをスタックの一番下のシンボルへと設定するように指示する制御信号をスタックハンドラー2830へと送ることで、パーサスタック2430_1をリセットする。DXP 2800は、SPUインターフェイスを介してSPUディスパッチャ2650にコマンドを送ることでSEPを起動する。この命令に従って、SPUディスパッチャ2650は、SCT 2150からマイクロ命令を取り込むSPU 2140を割り当てる。このマイクロ命令は、実行されると、入力バッファ2300_ 0からの現在のデータセグメントの残りを削除する。その後、実行プログラムはブロック2905へと戻り、そこで、DXP 2800は、解析の行き詰ったパーサコンテキストを有するデータ入力を除いたデータ入力に関する新しいデータがPIB 2700において受信されたかどうか判定する。   The DXP 2800 resets the parser stack 2430_1 by sending a control signal to the stack handler 2830 to take out the remaining symbols and set the stack pointer to the bottom symbol in the stack. The DXP 2800 starts the SEP by sending a command to the SPU dispatcher 2650 via the SPU interface. In accordance with this instruction, the SPU dispatcher 2650 allocates an SPU 2140 that fetches microinstructions from the SCT 2150. When executed, this microinstruction deletes the remainder of the current data segment from the input buffer 2300_0. Thereafter, the execution program returns to block 2905 where the DXP 2800 determines whether new data related to the data input has been received at the PIB 2700 except for the data input having a parsing parser context.

スタックの一番上のシンボルが非終端シンボルであると仮定すると、ブロック2935の代わりにブロック2945での一致が試みられる。パーサスタックテーブル2200内で、Nバイトのデータと連結されたNTシンボルに対する一致があった場合、実行プログラムはブロック2905へと進む。パーサテーブル2200は、一致に対応するPRコードをDXP 2800に送り返す。そしてDXP 2800は、PRコードを使用し、PRT 2250内で生成規則を検索する。ある実施例では、生成規則は、PRT 2250内に配置されたPRTメモリ2270内で検索される。   Assuming that the top symbol on the stack is a non-terminal symbol, a match is attempted at block 2945 instead of block 2935. If there is a match in the parser stack table 2200 for an NT symbol concatenated with N bytes of data, the execution program proceeds to block 2905. Parser table 2200 sends a PR code corresponding to the match back to DXP 2800. The DXP 2800 uses the PR code to search for a generation rule in the PRT 2250. In one embodiment, the production rules are retrieved in PRT memory 2270 located in PRT 2250.

図示されている実施例では、PRコードは、中間パーサテーブルインターフェイス2450及び中間PRTインターフェイス2460を介して、パーサテーブル2200からPRT 2250に送られる。その他のやり方としては、PRコードをパーサテーブル2200からPRT 2250に直接送ることができる。   In the illustrated embodiment, the PR code is sent from parser table 2200 to PRT 2250 via intermediate parser table interface 2450 and intermediate PRT interface 2460. Alternatively, the PR code can be sent directly from the parser table 2200 to the PRT 2250.

判定ブロック2945において一致が失敗すると、次のブロック2960では、DXP 2800は選択されたパーサスタックからのNTシンボルを使用して、PRT 2250内でデフォルト生成規則を検索する。ある実施例では、デフォルト生成規則は、PRT 2250内に配置されたMAPT 2280メモリ内で検索される。その他のやり方としては、MAPT 2280メモリをPRT 2250以外のメモリブロック内に配置することができる。   If the match fails at decision block 2945, then at the next block 2960, DXP 2800 uses the NT symbol from the selected parser stack to search for a default generation rule in PRT 2250. In one embodiment, default production rules are searched in MAPT 2280 memory located in PRT 2250. Alternatively, the MAPT 2280 memory can be placed in a memory block other than the PRT 2250.

図示されている実施例では、スタックハンドラー2830は、生成規則インターフェイス2850及びパーサテーブルインターフェイス2840に、NTシンボルを同時に送る。その他のやり方としては、スタックハンドラー2830は、パーサテーブル2200とPRT 2250に直接NTシンボルを送ることができる。PRT 2250がPRコード及びNTシンボルを受信すると、PRT 2250はPRTインターフェイス2850に、生成規則とデフォルト生成規則の両方を同時に送る。生成規則インターフェイス2480は、適切な規則だけをFSM 2410へと送り返す。他の実施例では、生成規則とデフォルト生成規則の両方がFSM 2410へと送られる。また他の実施例では、PRコードがPRT 2250へと送られたかどうかに応じて、PRT 2250はPRTインターフェイス2850に、PRとデフォルトPRのどちらか一方だけを送り返す。   In the illustrated embodiment, the stack handler 2830 sends NT symbols to the production rules interface 2850 and the parser table interface 2840 simultaneously. Alternatively, stack handler 2830 can send NT symbols directly to parser table 2200 and PRT 2250. When the PRT 2250 receives the PR code and the NT symbol, the PRT 2250 sends both the production rule and the default production rule to the PRT interface 2850 at the same time. The production rules interface 2480 sends only the appropriate rules back to the FSM 2410. In other embodiments, both production rules and default production rules are sent to the FSM 2410. In other embodiments, depending on whether a PR code has been sent to the PRT 2250, the PRT 2250 returns only one of the PR and the default PR to the PRT interface 2850.

ブロック2950とブロック2960のどちらが実行された場合も、次のブロック2970へと進む。ブロック2970では、DXP 2800はPRT 2250から受信した生成規則を処理する。本発明のある実施例では、FSM 2410は生成規則を三つのセグメントへと分割する。この三つのセグメントは、シンボルセグメントと、SEPセグメントと、スキップバイトセグメントと、である。生成規則の各セグメントは、前述したように簡単で正確な分割を可能にするために、長さが固定されかつヌル終端化されているのが好ましい。   If either block 2950 or block 2960 is executed, processing proceeds to the next block 2970. At block 2970, DXP 2800 processes the production rules received from PRT 2250. In one embodiment of the present invention, FSM 2410 splits the production rule into three segments. These three segments are a symbol segment, a SEP segment, and a skip byte segment. Each segment of the production rule is preferably fixed in length and null-terminated to allow simple and accurate division as described above.

図22に示しているブロック2970は、図18に示しているブロック2950と似た様なやり方で動作するが、以下のような違いがある。第一に、生成規則のシンボルセグメントは現在のコンテキストに対する適切なパーサスタック上へと転送される。第二に、生成規則のスキップバイトセクションは、データレジスタバンク内で現在のコンテキストに対して適切なレジスタを制御するとともに、現在のコンテキストに対して適切な入力バッファを制御するために使用される。第三に、SEPがSEPディスパッチャ(dispatcher)へと送られると、命令は、SPUによるセマンティックコードの実行に対して適切な入力バッファを指し示す。   The block 2970 shown in FIG. 22 operates in a similar manner to the block 2950 shown in FIG. 18, with the following differences. First, the production symbol segment is transferred onto the appropriate parser stack for the current context. Second, the skip byte section of the production rule is used to control the appropriate registers for the current context in the data register bank and the appropriate input buffer for the current context. Third, when the SEP is sent to the SEP dispatcher, the instruction points to the appropriate input buffer for execution of the semantic code by the SPU.

次の判定ブロック2975では、DXP 2800は、選択されたバッファ内の入力データがさらなる解析を必要としているかどうか判定する。本発明のある実施例では、スタック2430_1の(for)パーサスタックポインターが、スタックの一番下のシンボル以外のシンボルを指し示している場合、入力バッファ2300_0内の入力データはさらなる解析を必要とする。スタック2430_1の(for)パーサスタックポインターが、スタックの一番下のシンボルを指し示している場合、FSM 2410が、スタックハンドラー2830から空スタック信号(stack empty sugnal: SE)を受信するのが好ましい。   In a next decision block 2975, the DXP 2800 determines whether the input data in the selected buffer requires further analysis. In one embodiment of the present invention, if the (for) parser stack pointer in stack 2430_1 points to a symbol other than the bottom symbol in the stack, the input data in input buffer 2300_0 requires further analysis. The FSM 2410 preferably receives an empty stack signal (stack empty sugnal: SE) from the stack handler 2830 if the (for) parser stack pointer of the stack 2430_1 points to the bottom symbol of the stack.

選択されたバッファ内の入力データがさらに解析されることを必要としない場合、実行プログラムはブロック2905へと戻り、そこで、DXP 2800は、行き詰ったパーサスタックのバッファ以外のもう一つの入力バッファが、PIB 2700で来るのを待っている新しいデータを持っているかどうか判定する。   If the input data in the selected buffer does not need to be further analyzed, the execution program returns to block 2905 where the DXP 2800 has another input buffer other than the dead parser stack buffer. Determine if you have new data waiting to come in PIB 2700.

選択されたバッファ内の入力データがさらに解析されることを必要とする場合、次の判定ブロック2985では、DXP 2800は、それが選択されたバッファ内の入力データの解析を継続することができるかどうか判定する。本発明のある実施例では、まだ解析が必要であっても、いくつかの理由により所定のバッファからの入力データで解析を中止することがある。この理由としては、未解決または実行中のSPUオペレーションによるものや、入力データの不足や、その他の入力バッファがDXP 2800内での解析において優先権を持っていること、などがある。ある実施例では、入力バッファ2300_0内の入力データについて優先権を持っている別の入力バッファは、以前格納されたパーサスタックを有していた入力バッファや、文法命令としてより高度な優先権を持つ入力バッファであってもよい。DXP 2800は、SEPディスパッチャ2650により、ステータス信号を介してSPU処理の遅れについて告知される。また、DXP 2800は、FSM 2410内に格納されているステータス値により、優先して解析するタスクについて告知される。   If the input data in the selected buffer needs to be further analyzed, in the next decision block 2985, can the DXP 2800 continue to analyze the input data in the selected buffer? Judge whether. In some embodiments of the present invention, analysis may be stopped with input data from a given buffer for several reasons, even though analysis is still required. This may be due to unresolved or ongoing SPU operations, lack of input data, or other input buffers having priority in analysis within the DXP 2800. In one embodiment, another input buffer that has priority over the input data in input buffer 2300_0 has a higher priority as a grammar instruction or an input buffer that previously had a parser stack stored. It may be an input buffer. The DXP 2800 is informed by the SEP dispatcher 2650 about the SPU processing delay via the status signal. Further, the DXP 2800 is notified of the task to be preferentially analyzed based on the status value stored in the FSM 2410.

DXPが現在の解析用コンテキストで解析を継続することができる場合、実行プログラムはブロック2920へと戻り、そこで、DXP 2800は、選択されたバッファ内の入力データからNバイト以下のデータをリクエストし、それを受信する。   If DXP can continue parsing in the current parsing context, the execution program returns to block 2920, where DXP 2800 requests less than N bytes of data from the input data in the selected buffer, Receive it.

DXP2800が解析を継続することができない場合、次のブロック2990では、DXP 2800は選択されたパーサスタックを格納し、続いて、選択されたパーサスタックと、データレジスタバンク2810内で選択されたレジスタと、選択された入力バッファと、を選択解除する。FSM 2410から切り替え制御信号を受信すると、スタックハンドラー2830は、パーサスタック2430_ 1を格納し、その後パーサスタックブロック2860内で他のパーサスタックを選択することで、パーサスタック2430_ 1を選択解除する。   If the DXP 2800 is unable to continue parsing, in the next block 2990, the DXP 2800 stores the selected parser stack, followed by the selected parser stack and the selected register in the data register bank 2810. Deselect the selected input buffer. Upon receiving the switching control signal from the FSM 2410, the stack handler 2830 stores the parser stack 2430_1, and then selects another parser stack in the parser stack block 2860, thereby deselecting the parser stack 2430_1.

入力ストリームシーケンス制御部2420は、FSM 2410から切り替え信号を受信すると、入力データをすでに受信しているPIB 2700内の他のバッファを選択することで入力バッファ2300_0を選択解除する。そしてデータレジスタバンク2810は、FSM 2410から切り替え信号を受信すると、他のレジスタを選択することにより、選択されたレジスタを選択解除する。DXP 2800により解析される新しいデータが来るのをPIB 2700で待っている他のバッファがない場合、入力バッファ2300_0と、選択されたレジスタと、パーサスタック2430_ 1は、動作中のままでいることができる。   When receiving the switching signal from the FSM 2410, the input stream sequence control unit 2420 deselects the input buffer 2300_0 by selecting another buffer in the PIB 2700 that has already received the input data. When the data register bank 2810 receives the switching signal from the FSM 2410, the data register bank 2810 deselects the selected register by selecting another register. The input buffer 2300_0, the selected register, and the parser stack 2430_1 may remain operational if there are no other buffers waiting for the PIB 2700 to receive new data to be analyzed by the DXP 2800 it can.

実行プログラムは、その後、ブロック2905へと戻り、DXP 2800は、解析が行き詰ったパーサスタックを有する入力ストリーム以外のほかの入力ストリームがPIB2700で受信されたかどうか判定する。   The executing program then returns to block 2905, where the DXP 2800 determines whether an input stream other than an input stream having a parser stack that has been parsed has been received at the PIB 2700.

図23は、本発明の実施例に係るセマンティックプロセッサ3100のブロック図を示している。セマンティックプロセッサ3100は、入力ポート3120を介して受信されるパケットデータストリームをバッファするための入力バッファ3140と、入力バッファ3140及び再循環バッファ3160において受信されるパケットデータの処理を制御する直接実行パーサ(DXP)3180と、パケットを処理するためのパケットプロセッサ3200と、を備えている。この入力バッファ3140及び再循環バッファ3160は、先入れ先出し(first-in-first-out(FIFO))バッファであるのが好ましい。このパケットプロセッサ3200は、パケットのセグメントの処理またはその他のオペレーションの実行のための実行エンジン3220と、パケットのセグメントを格納したり、増やしたりするためのメモリサブシステム3240と、から構成される。   FIG. 23 shows a block diagram of a semantic processor 3100 according to an embodiment of the present invention. The semantic processor 3100 has an input buffer 3140 for buffering a packet data stream received via the input port 3120, and a direct execution parser (which controls the processing of packet data received at the input buffer 3140 and the recirculation buffer 3160). DXP) 3180 and a packet processor 3200 for processing the packet. The input buffer 3140 and recirculation buffer 3160 are preferably first-in-first-out (FIFO) buffers. The packet processor 3200 comprises an execution engine 3220 for processing packet segments or performing other operations, and a memory subsystem 3240 for storing and incrementing packet segments.

DXP 3180は、入力バッファ3140内のパケットまたはフレーム(例えば入力「ストリーム」)の処理と、再循環バッファ3160内のパケットまたはフレーム(例えば再循環「ストリーム」)の処理と、を制御する。DXP 3180は、入力バッファ3140からの入力ストリームと、再循環バッファ3160からの再循環ストリームと、を同様のやり方で解析するので、以下で入力ストリームの解析についてのみ説明する。   The DXP 3180 controls the processing of packets or frames (eg, input “streams”) in the input buffer 3140 and the processing of packets or frames (eg, recirculation “streams”) in the recirculation buffer 3160. Since the DXP 3180 analyzes the input stream from the input buffer 3140 and the recirculation stream from the recirculation buffer 3160 in a similar manner, only the analysis of the input stream will be described below.

DXP 3180は、現在のシンボルまでの現在のフレームの解析に基づいて、終端シンボル及び非終端シンボルを含む内部パーサスタックを保持する。パーサスタックの一番上にあるシンボルが終端シンボルである場合、DXP 3180は、入力ストリームの先頭にあるデータを終端シンボルと比較し、作業を続けるために一致を期待する。パーサスタックの一番上にあるシンボルが非終端シンボルである場合、DXP 3180は、この非終端シンボル及び現在の入力データを使用しスタック上の文法生成物を拡大する。解析が続くと、DXP 3180は、実行エンジン3220に、入力のセグメントを処理するか、その他のオペレーションを実行するように指示を送る。   The DXP 3180 maintains an internal parser stack containing terminal and non-terminal symbols based on the analysis of the current frame up to the current symbol. If the symbol at the top of the parser stack is a terminal symbol, the DXP 3180 compares the data at the beginning of the input stream with the terminal symbol and expects a match to continue working. If the symbol at the top of the parser stack is a non-terminal symbol, the DXP 3180 uses this non-terminal symbol and the current input data to expand the grammar product on the stack. As parsing continues, the DXP 3180 sends instructions to the execution engine 3220 to process the segment of input or perform other operations.

セマンティックプロセッサ3180は、少なくとも2つのテーブルを使用する。複雑な文法生成規則は、生成規則テーブル(PRT)3190内に格納される。これらの生成規則を検索する(読み出す)ためのコードは、パーサテーブル(PT)3170内に格納される。パーサテーブル3170内のコードは、DXP 3180が、所定の生成規則に関して、パケットプロセッサ3200がパケットのセグメントについて実行すべき処理を決定することを可能にする。   Semantic processor 3180 uses at least two tables. Complex grammar generation rules are stored in a generation rule table (PRT) 3190. Codes for searching (reading out) these generation rules are stored in a parser table (PT) 3170. The code in parser table 3170 allows DXP 3180 to determine what processing packet processor 3200 should perform on the segment of the packet for a given production rule.

本発明の実施例の中には、図23に示したものより多くの構成要素を含むものもある。したがって、そのようなより複雑な実施例の説明を行う前に、図23に示されたセマンティックプロセッサ内のパケットフローについて説明する。   Some embodiments of the present invention include more components than those shown in FIG. Therefore, before describing such a more complex embodiment, the packet flow within the semantic processor shown in FIG. 23 will be described.

図24は、図23に示すセマンティックプロセッサ3100を介して受信したパケットの処理に関するフローチャート3300である。このフローチャート3300は、本発明の方法を説明するのに使用される。   FIG. 24 is a flowchart 3300 regarding processing of a packet received via the semantic processor 3100 shown in FIG. This flowchart 3300 is used to describe the method of the present invention.

ブロック3310では、パケットは入力ポート3120を介して、入力バッファ3140において受信される。次のブロック3320では、DXP 3180は入力バッファ3140内のパケットのヘッダーの解析を開始する。パケットが、パケットのペイロードの処理を可能にするために追加の操作か追加のパケットを必要としない場合、DXP 3180はヘッダーを完全に解析する。パケットが、パケットのペイロードの処理を可能にするために追加の操作か追加のパケットを必要とする場合、DXP 3180はヘッダーの解析をやめる。   In block 3310, the packet is received at input buffer 3140 via input port 3120. In the next block 3320, the DXP 3180 begins parsing the header of the packet in the input buffer 3140. If the packet does not require additional operations or additional packets to allow processing of the packet payload, the DXP 3180 fully parses the header. If the packet requires additional operations or additional packets to allow processing of the packet payload, the DXP 3180 will stop parsing the header.

判定ブロック3330では、DXP 3180がヘッダーを完全に解析することができたかどうかが問われる。DXP 3180が完全にヘッダーの解析を行うことができた場合、次のブロック3370では、DXP 3180はパケットプロセッサ3200内のルーチンを呼び出し、パケットペイロードを処理する。その後、セマンティックプロセッサ3100は、次のパケットが入力ポート3120を介して、入力バッファ3140において受信されるのを待つ。   Decision block 3330 asks whether DXP 3180 was able to fully parse the header. If the DXP 3180 was able to fully parse the header, in the next block 3370, the DXP 3180 calls a routine in the packet processor 3200 to process the packet payload. The semantic processor 3100 then waits for the next packet to be received at the input buffer 3140 via the input port 3120.

DXP 3180がヘッダーの解析をやめなければならない場合、次のブロック3340では、DXP 3180は、追加のパケットを待つか、パケットプロセッサ3200内のルーチンを呼び出して、パケットを制御する。制御が完了するかあるいは追加のパケットが到着するとすぐに、パケットプロセッサ3200は調整された(解決された)パケットを作成する。   If the DXP 3180 has to stop parsing the header, in the next block 3340, the DXP 3180 waits for an additional packet or calls a routine in the packet processor 3200 to control the packet. As soon as control is complete or additional packets arrive, the packet processor 3200 creates a conditioned (resolved) packet.

次のブロック3350では、パケットプロセッサ3200は調整された(解決された)パケット(またはその一部)を再循環バッファ3160に書き込む。これは、再循環バッファがメモリサブシステム3240に対して直接メモリアクセスすることを可能にすることにより達成することができる。もしくは、直接実行エンジン3220に、メモリサブシステム3240からの調節されたパケットを読み込ませ、その後再循環バッファ3160に調節されたパケットを書き込ませることにより達成することができる。その他のやり方として、パケットプロセッサ3200内に処理時間を格納するためには、完全に調節されたパケットの代わりに、特別なヘッダーが再循環バッファ3160に書き込まれてもよい。この特別なヘッダーは、完全なパケットをパケットプロセッサのメモリサブシステム3240から転送することを必要とせずに、パケットプロセッサ3200に、調節されたパケットを処理するように指示する。   In a next block 3350, the packet processor 3200 writes the adjusted (resolved) packet (or a portion thereof) to the recirculation buffer 3160. This can be achieved by allowing the recirculating buffer to have direct memory access to the memory subsystem 3240. Alternatively, this can be accomplished by having the direct execution engine 3220 read the adjusted packet from the memory subsystem 3240 and then write the adjusted packet to the recirculation buffer 3160. Alternatively, a special header may be written to the recirculation buffer 3160 instead of a fully adjusted packet to store processing time within the packet processor 3200. This special header instructs the packet processor 3200 to process the adjusted packet without requiring the complete packet to be transferred from the packet processor memory subsystem 3240.

次のブロック3360では、DXP 3180は、再循環バッファ3160内のデータのヘッダーの解析を開始する。その後、実行プログラムはブロック3330へと戻り、そこで、DXP 3180がヘッダーを完全に解析することができたかどうか問われる。DXP 3180がヘッダーを完全に解析することができた場合、その後次のブロック3370では、DXP 3180はパケットプロセッサ3200内のルーチンを呼び出し、パケットペイロードを処理する。その後、セマンティックプロセッサ3100は、新しいパケットが、入力ポート3120を介して入力バッファ3140において受信されるのを待つ。   In the next block 3360, the DXP 3180 begins parsing the header of the data in the recirculation buffer 3160. The executing program then returns to block 3330 where it is asked if DXP 3180 was able to fully parse the header. If DXP 3180 was able to parse the header completely, then in the next block 3370, DXP 3180 calls a routine in packet processor 3200 to process the packet payload. The semantic processor 3100 then waits for a new packet to be received at the input buffer 3140 via the input port 3120.

DXP 3180がヘッダーの解析をやめなければならない場合、実行プログラムはブロック3340へと戻り、そこで、DXP 3180が、パケットプロセッサ3200内のルーチンを呼び出し、パケットを制御するか、追加のパケットを待ち、その後、調節されたパケットを作成する。パケットプロセッサ3200は、その後、調節されたパケットを再循環バッファ3160へと書き込む。そして、DXP 3180は、再循環バッファ3160内のパケットのヘッダーの解析を開始する。   If the DXP 3180 has to stop parsing the header, the executing program returns to block 3340, where the DXP 3180 calls a routine in the packet processor 3200 to control the packet or wait for an additional packet, then Create an adjusted packet. Packet processor 3200 then writes the adjusted packet to recirculation buffer 3160. Then, the DXP 3180 starts analyzing the header of the packet in the recirculation buffer 3160.

図25は、セマンティックプロセッサ3400の他の実施例を示している。セマンティックプロセッサ3400は以下の要素を備えている。
ハッシュ機能(ハッシング関数)またはコンテント・アドレッサブル・メモリ(CAM)検索を介して動的ランダムアクセスメモリ(DRAM)3480内のデータにアクセスするためのアレイマシンコンテキストデータメモリ(AMCD) 3430
データの暗号化や、複合化や、認証のための暗号処理ブロック3440
DRAM3480へコンテキスト制御ブロックをキャッシュするとともに、DRAM3480からコンテキスト制御ブロックをキャッシュするためのコンテキスト制御ブロックキャッシュ3450
基本オペレーションにおいて使用されるデータをキャッシュするための通常キャッシュ3460
データストリームがDRAMへと書き込まれている間と、データストリームがDRAMから書き込まれている間に、データストリームをキャッシュするためのストリーミングキャッシュ3470
このコンテキスト制御ブロックキャッシュ3450は、ソフトウェア制御のキャッシュであるのが好ましい。すなわち、いつキャッシュラインが使用され、いつ使用されないかをプロセスが決定するのが好ましい。この五つの各ブロックはDRAM 3480及びセマンティックコード実行エンジン(SEE)と接続されている(なお、セマンティックコード実行エンジン(SEE)は、セマンティックプロセッシングユニット(SPU)3410とも称される)。SEE 3410は、DXP 3180により信号を送られると、パケットのセグメントを処理するか、その他のオペレーションを実行する。DXP 3180が、解析の特定の時点でSEEタスクを開始すると決定すると、DXP 3180はSEE 3410に、セマンティックコードテーブル(SCT)3420からマイクロ命令をロードするように信号で伝える。このロードされたマイクロ命令は、その後SEE 3410内で実行され、パケットのセグメントはそれに従って処理される。
FIG. 25 illustrates another embodiment of the semantic processor 3400. The semantic processor 3400 includes the following elements.
Array machine context data memory (AMCD) 3430 for accessing data in dynamic random access memory (DRAM) 3480 via hash function (hashing function) or content addressable memory (CAM) search
Cryptographic processing block 3440 for data encryption, decryption, and authentication
Context control block cache 3450 for caching context control blocks to DRAM 3480 and for caching context control blocks from DRAM 3480
Normal cache 3460 for caching data used in basic operations
Streaming cache 3470 for caching data streams while the data stream is being written to DRAM and while the data stream is being written from DRAM
This context control block cache 3450 is preferably a software controlled cache. That is, the process preferably determines when a cache line is used and when it is not used. Each of the five blocks is connected to a DRAM 3480 and a semantic code execution engine (SEE) (the semantic code execution engine (SEE) is also referred to as a semantic processing unit (SPU) 3410). When SEE 3410 is signaled by DXP 3180, it processes the segment of the packet or performs other operations. If DXP 3180 decides to start the SEE task at a particular point in the analysis, DXP 3180 signals SEE 3410 to load microinstructions from the Semantic Code Table (SCT) 3420. This loaded microinstruction is then executed in SEE 3410 and the segment of the packet is processed accordingly.

図26は、図25に示しているセマンティックプロセッサ3400を介して受信したフラグメント化したインターネットプロトコル(IP)パケットの処理に関するフローチャート3500である。このフローチャート3500は、本発明の実施例に係る実施方式を説明するために使用される。   FIG. 26 is a flowchart 3500 for processing a fragmented Internet Protocol (IP) packet received via the semantic processor 3400 shown in FIG. This flowchart 3500 is used to describe an implementation method according to an embodiment of the present invention.

パケットが入力ポート3120を介して入力バッファ3140において受信され、それに伴いDXP 3180が入力バッファ3140内のパケットのヘッダーの解析を開始すると、ブロック3510では、DXP 3180は、受信したパケットがフラグメント化したIPパケットであると判定されたため、受信したパケットのヘッダーの解析をやめる。DXP 3180は、IPヘッダーを完全に解析し、続く層に属するヘッダー(TCP、UDP、iSCSIなど)についてはどのヘッダーに対しても解析を行わないのが好ましい。   When a packet is received at the input buffer 3140 via the input port 3120 and the DXP 3180 begins parsing the header of the packet in the input buffer 3140 accordingly, at block 3510, the DXP 3180 receives the IP fragmented from the received packet. Since it is determined to be a packet, the analysis of the header of the received packet is stopped. The DXP 3180 preferably parses the IP header completely and does not parse any headers belonging to subsequent layers (TCP, UDP, iSCSI, etc.).

次のブロック3520では、DXP 3180は、SEE 3410にSCT 3420から適切なマイクロ命令をロードするとともに、入力バッファ3140から受信したパケットを読み込むように信号で伝える。次のブロック3530では、SEE 3410は、受信したパケットをストリーミングキャッシュ3470を介してDRAM 3480へ書き込む。ブロック3520とブロック3530は二つの個別のステップとして示されているが、他のやり方としては、これらは、SEE 3410がパケットの読み込みと書き込みを同時に行うことで一つのステップとして実行されてもよい。このSEE 3410による同時に読み込みと書き込みを実行するオペレーションは、SEEパイプライン方式として知られている。このオペレーションでは、SPU 3410は、セマンティックプロセッサ3400内の二つのブロック間で転送されるストリーミングデータ用のコンジット(conduit)またはパイプラインとして動作する。   In the next block 3520, the DXP 3180 signals the SEE 3410 to load the appropriate microinstruction from the SCT 3420 and to read the received packet from the input buffer 3140. In a next block 3530, the SEE 3410 writes the received packet to the DRAM 3480 via the streaming cache 3470. Although blocks 3520 and 3530 are shown as two separate steps, alternatively, they may be performed as a single step with the SEE 3410 reading and writing packets simultaneously. This SEE 3410 simultaneous read and write operation is known as the SEE pipeline method. In this operation, the SPU 3410 operates as a conduit or pipeline for streaming data that is transferred between two blocks within the semantic processor 3400.

次の判定ブロック3540では、SPU 3410は、コンテキスト制御ブロック(CCB)が正しいIPパケットフラグメントの収集や順序付けのために割り当てられているかどうか判定する。フラグメント化されたIPパケットに対応するフラグメントを収集しかつ順序付けするCCBは、DRAM 3480内に格納されるのが好ましい。CCBは、DRAM 3480内のIPフラグメントに対するポインターと、まだ到着していないフラグメント化されたIPパケットに対するビットマスクと、割り当てられた期間が過ぎたらセマンティックプロセッサ3400に追加のフラグメント化されたIPパケットを待つことをやめさせ、その後、DRAM 3480内のCCBに保存されたデータを開放させるためのタイマー値と、を含んでいる。   In a next decision block 3540, the SPU 3410 determines whether a context control block (CCB) has been allocated for correct IP packet fragment collection and ordering. The CCB that collects and orders the fragments corresponding to the fragmented IP packets is preferably stored in DRAM 3480. CCB waits for pointers to IP fragments in DRAM 3480, bit mask for fragmented IP packets that have not yet arrived, and additional fragmented IP packets to semantic processor 3400 after the allotted period has passed And a timer value for releasing the data stored in the CCB in the DRAM 3480.

SPU 3410は、受信したIPパケットフラグメントのヘッダーからのID(identification)及びプロトコルを組み合わせた、受信したフラグメント化されたIPパケットの送信元IPアドレスを鍵として使用して、AMCD 3430のコンテント・アドレッサブル・メモリ(CAM)の検索機能にアクセスすることで、CCBが割り当てられているかどうか判定するのが好ましい。その他のやり方としては、IPフラグメント鍵は、DRAM 3480内の別々のCCBテーブル内に格納される。そして、このやり方では、この鍵は、受信したIPパケットフラグメントのヘッダーからのID(identification)及びプロトコルを組み合わせた、受信したフラグメント化されたIPパケットの送信元IPアドレスを使用することでCAMとアクセスさせられる。このIPフラグメント鍵のアドレス化のやり方は、鍵の重複と鍵の大きさの問題を回避する。   The SPU 3410 uses the source IP address of the received fragmented IP packet, which is a combination of the ID (identification) and protocol from the header of the received IP packet fragment, as a key, and the content addressable AMCD 3430 It is preferable to determine whether a CCB is allocated by accessing a memory (CAM) search function. Alternatively, the IP fragment key is stored in a separate CCB table in DRAM 3480. And in this way, this key accesses the CAM by using the source IP address of the received fragmented IP packet, which combines the ID (identification) and protocol from the header of the received IP packet fragment. Be made. This IP fragment key addressing approach avoids key duplication and key size issues.

SPU 3410が、特定のフラグメント化されたパケットに関するフラグメントの集積と順序付けのためにCCBがまだ割り当てられていないと判定する場合、実行プログラムはブロック3550へと進み、そこでSPU 3410がCCBを割り当てる。SPU 3410は、割り当てられたCCBに対応する鍵を、AMCD 3430内のIPフラグメントCCBテーブルへ入力し、CCB内に配置されたタイマーを開始する。ここで言う鍵は、受信したフラグメント化されたIPパケットのヘッダーからのID(identification)及びプロトコルと、受信したIPフラグメントの送信元IPアドレスと、から構成されるものである。与えられたフラグメント化されたパケットに関する最初のフラグメントが受信されると、IPヘッダーはまた、後の再循環のために、CCBへ格納される。以後のフラグメントに関しては、IPヘッダーは格納される必要はない。   If the SPU 3410 determines that a CCB has not yet been assigned due to fragment accumulation and ordering for a particular fragmented packet, the executing program proceeds to block 3550 where the SPU 3410 assigns a CCB. The SPU 3410 inputs the key corresponding to the assigned CCB into the IP fragment CCB table in the AMCD 3430 and starts a timer placed in the CCB. The key here is composed of ID (identification) and protocol from the header of the received fragmented IP packet, and the source IP address of the received IP fragment. When the first fragment for a given fragmented packet is received, the IP header is also stored in the CCB for later recirculation. For subsequent fragments, the IP header need not be stored.

CCBがフラグメント化されたIPパケットの収集と順序付けのために割り当てられるとすぐに、次のブロック3560では、SPU 3410はフラグメント化されたIPパケット(からIPヘッダーを除いたもの)に対するポインターをCCB内のDRAM 3480に格納する。フラグメントに対するポインターは、例えばリンクされたリストとしてCCB内に設ける(arrange)ことができる。好ましくは、SPU 3410は、受信されたフラグメントに対応するマスクの一部を受信されたものとしてマーキングすることで、ビットマスクを新たに割り当てられたCCBでアップデートしてよい。   As soon as the CCB is allocated for collection and ordering of fragmented IP packets, in the next block 3560, the SPU 3410 sends a pointer to the fragmented IP packet (excluding the IP header) in the CCB. Store in DRAM 3480. The pointers to the fragments can be arranged in the CCB, for example as a linked list. Preferably, the SPU 3410 may update the bit mask with the newly assigned CCB by marking a portion of the mask corresponding to the received fragment as received.

次の判定ブロック3570では、SPU 3410は、パケットからのIPフラグメントのすべてが受信されたかどうか判定する。この判定は、CCB内でビットマスクを使用して達成されるのが好ましい。当業者であれば、本発明とともに利用可能なビットマスクまたはそれと均等なトラッキング機構を実施するのに容易に利用可能な多数の技術があることを理解するであろう。   In a next decision block 3570, the SPU 3410 determines whether all of the IP fragments from the packet have been received. This determination is preferably accomplished using a bit mask in the CCB. One skilled in the art will appreciate that there are a number of techniques readily available to implement a bit mask or equivalent tracking mechanism that can be used with the present invention.

フラグメントパケットに関するIPフラグメントのすべてが受信され終わっていない場合、セマンティックプロセッサ3400は、その他のフラグメントが受信されるまで、このフラグメント化されたパケットに関するさらなる処理を保留する。   If all of the IP fragments for a fragment packet have not been received, the semantic processor 3400 suspends further processing for this fragmented packet until other fragments are received.

IPフラグメントのすべてが受信され終わっている場合、次のブロック3580では、SPU 3410は、タイマーをリセットするとともに、DRAM 3480からIPフラグメントを正しい順序で読み込み、その後、さらなる解析と処理のために、それらを再循環バッファ3160へ書き込む。SPU 3410は、特別なヘッダーと、再構築されたIPパケット(フラグメント化ビットは設定されていないまま)の最初(first)の部分と、だけを再循環バッファ3160へ書き込むのが好ましい。特別なヘッダーは、DXP 3180が、フラグメント化されたパケットのすべてを再循環バッファ3160へと転送する必要なく、DRAM 3480内に格納された再構築されたフラグメント化されたIPパケットの処理を指示することを可能にする。特別なヘッダーは、IPに対するパーサ文法をロードするとともにCCBに対するポインターをロードするように指定された非終端シンボルから構成することができる。こうして、パーサは通常、IPヘッダーを解析することができ、その後上位層(例えばTCP)のヘッダーの解析へと進むことができる。   If all of the IP fragments have been received, then in the next block 3580, the SPU 3410 resets the timer and reads the IP fragments from the DRAM 3480 in the correct order and then those for further analysis and processing. Is written to the recirculation buffer 3160. The SPU 3410 preferably writes only the special header and the first part of the reconstructed IP packet (with the fragmentation bit not set) to the recirculation buffer 3160. A special header directs DXP 3180 to process reassembled fragmented IP packets stored in DRAM 3480 without having to forward all of the fragmented packets to recirculation buffer 3160 Make it possible. Special headers can consist of non-terminal symbols that are specified to load a parser grammar for IP and load a pointer to CCB. Thus, the parser can usually parse the IP header and then proceed to the analysis of higher layer (eg, TCP) headers.

本発明の実施例では、DXP 3180は、総当り方式の調停(arbitration)を介して、再循環バッファ3160と入力バッファ3140のどちらか一方で受信されたデータを解析することを決定する。総当り方式の調停(arbitration)に関する高度な記述は、パケットデータストリームを受信するための第一と第二のバッファに関連して以下において説明する。DXP 3180は、第一のバッファ内のパケットの解析を完了すると、第二のバッファを見て、データが解析可能かどうか判定する。解析可能である場合、第二のバッファからのデータが解析される。解析可能でない場合、DXP 3180は、第一のバッファを再び見て、データが解析可能かどうか判定する。DXP 3180は、第一のバッファか第二のバッファのどちらかでデータが解析可能となるまで、この総当り方式の調停(arbitration)を続ける。   In an embodiment of the invention, the DXP 3180 decides to analyze the data received in either the recirculation buffer 3160 or the input buffer 3140 via brute force arbitration. An advanced description of brute force arbitration is described below in connection with first and second buffers for receiving a packet data stream. When the DXP 3180 completes the analysis of the packet in the first buffer, the DXP 3180 looks at the second buffer and determines whether the data can be analyzed. If it can be analyzed, the data from the second buffer is analyzed. If not, the DXP 3180 looks again at the first buffer to determine if the data can be analyzed. The DXP 3180 continues this round-robin arbitration until the data can be analyzed in either the first buffer or the second buffer.

図27は、図25に示すセマンティックプロセッサ3400を介して受信したパケットで、複合化か、認証か、またはその両方が必要なパケットの処理に関するフローチャート3600である。このフローチャート3600は、本発明の実施例に係るその他の実施方式を説明するのに使用される。   FIG. 27 is a flowchart 3600 for processing a packet received via the semantic processor 3400 shown in FIG. 25 that requires decryption, authentication, or both. This flowchart 3600 is used to describe other implementation schemes according to embodiments of the present invention.

パケットが入力バッファ3140または再循環バッファ3160において受信され、それに伴いDXP 3180が受信したパケットのヘッダーの解析を開始すると、ブロック3610では、DXP 3180は、受信したパケットは複合化か、認証か、またはその両方が必要であると判定されたため、受信したパケットのヘッダーの解析をやめる。DXP 3180が再循環バッファ3160からのパケットのヘッダーの解析を開始した場合、再循環バッファ3160は、前述した特別なヘッダー及び再構築されたIPパケットの最初の部分だけを含んでいるのが好ましい。   When a packet is received at input buffer 3140 or recirculation buffer 3160 and DXP 3180 begins parsing the received packet header accordingly, at block 3610, DXP 3180 either decrypts the received packet, authenticates it, or Since it is determined that both are necessary, the analysis of the header of the received packet is stopped. When the DXP 3180 begins parsing the header of a packet from the recirculation buffer 3160, the recirculation buffer 3160 preferably includes only the special header described above and the first part of the reconstructed IP packet.

次のブロック3620では、DXP 3180は、SPU 3410に、SCT 3420から適切なマイクロ命令をロードするとともに、入力バッファ3140または再循環バッファ3160から受信したパケットを読み込むように指示する信号を送る。SPU3410は、再循環バッファ内にまだ配置されていないデータに対しては、再循環バッファ3160の代わりにDRAM 3480からパケットフラグメントを読み込むのが好ましい。   In the next block 3620, the DXP 3180 sends a signal to the SPU 3410 to load the appropriate microinstruction from the SCT 3420 and to read packets received from the input buffer 3140 or recirculation buffer 3160. The SPU 3410 preferably reads packet fragments from the DRAM 3480 instead of the recirculation buffer 3160 for data that has not yet been placed in the recirculation buffer.

次のブロック3630では、SPU 3410は、受信したパケットを暗号処理ブロック3440へ書き込む。そして、パケットはそこで認証されるか、複合化されるか、またはその両方を実行される。好ましい実施例では、複合化及び認証は暗号処理ブロック3440内で平行して実行される。暗号処理ブロック3440は、Triple Data Encryption Standard (T-DES)、Advanced Encryption Standard(AES)、Message Digest 5 (MD-5)、Secure Hash Algorithm 1 (SHA-1)、Rivest Cipher 4 (RC-4) アルゴリズムなどを使用することで、パケットの認証や、暗号化や、複合化を、可能にする。ブロック3620及びブロック3630は二つの別々のステップとして図示されているが、他のやり方としては、SPU 3410がパケットの読み込みと書き込みを同時に行うことで、これらは一つのステップとして実行することができる。   In the next block 3630, the SPU 3410 writes the received packet to the cryptographic processing block 3440. The packet is then authenticated, decrypted, or both. In the preferred embodiment, decryption and authentication are performed in parallel within cryptographic processing block 3440. Cryptographic processing block 3440 is Triple Data Encryption Standard (T-DES), Advanced Encryption Standard (AES), Message Digest 5 (MD-5), Secure Hash Algorithm 1 (SHA-1), Rivest Cipher 4 (RC-4) By using an algorithm or the like, packet authentication, encryption, and decryption are possible. Although block 3620 and block 3630 are illustrated as two separate steps, alternatively, the SPU 3410 can read and write packets simultaneously, which can be performed as a single step.

複合化されたパケットや認証されたパケットはこうして、SPU 3410へと書き込まれ、次のブロック3640では、SPU 3410は、さらなる処理のために、パケットを再循環バッファ3160へ書き込む。好ましい実施例では、暗号処理ブロック3440は、データをDRAM 3480から読み込むことができ、かつデータをDRAM 3480へと書き込むことができる直接メモリアクセスエンジンを備えている。複合化されたパケットや認証されたパケットをDRAM 3480へ戻して書き込むことで、SPU 3410は、DRAM 3480からの複合化されたパケットや認証されたパケットのヘッダーだけを読み込むことができ、続いて、それらを再循環バッファ3160へと書き込むことができる。パケットのペイロードはDRAM 3480内に残っているので、セマンティックプロセッサ3400は、処理時間を保存する。IPフラグメント化の時と同様(like with IP fragmentation)、特別なヘッダーは再循環バッファへ書き込まれ、パーサを方向付けるとともに、CCB情報をSPU 3410へと送り返す。   The decrypted and authenticated packets are thus written to the SPU 3410, and in the next block 3640, the SPU 3410 writes the packet to the recirculation buffer 3160 for further processing. In the preferred embodiment, cryptographic processing block 3440 includes a direct memory access engine that can read data from DRAM 3480 and write data to DRAM 3480. By writing the decrypted packet or authenticated packet back to DRAM 3480, the SPU 3410 can read only the decrypted packet or authenticated packet header from DRAM 3480, They can be written to the recirculation buffer 3160. Since the payload of the packet remains in DRAM 3480, semantic processor 3400 saves processing time. As with IP fragmentation (like with IP fragmentation), special headers are written to the recirculation buffer, directing the parser and sending CCB information back to the SPU 3410.

フラグメント化されたIPや、暗号化されたIPや、認証IPが、セマンティックプロセッサ3400により受信された単一のパケット内に含まれる場合、再循環バッファ3160を通過するための複数のパスが必要となることがある。   If fragmented IP, encrypted IP, or authentication IP is included in a single packet received by the semantic processor 3400, multiple paths are required to go through the recirculation buffer 3160 May be.

図28は、セマンティックプロセッサの別の実施例を示している。セマンティックプロセッサ3700は、複数のセマンティック実行エンジン(SEE) 3410_ 1〜3410_ Nを含んでいるセマンティック実行エンジン(SEE)クラスター3710を備えている。各SEE 3410_ 1〜SEE 3410_ Nは、同質であり、同一の機能を持つのが好ましい。SPUクラスター3710は、メモリサブシステム3240と、SEEエントリーポイント(SEP)ディスパッチャ(dispatcher)3720と、SCT 3420と、ポート入力バッファ(PIB)3730と、ポート出力バッファ(POB)3750と、マシン中央演算処理装置(MCPU)3771と、と連結される。   FIG. 28 shows another embodiment of the semantic processor. The semantic processor 3700 includes a semantic execution engine (SEE) cluster 3710 including a plurality of semantic execution engines (SEE) 3410_1 to 3410_N. Each SEE 3410_1 to SEE 3410_N is preferably of the same quality and has the same function. SPU cluster 3710 includes memory subsystem 3240, SEE entry point (SEP) dispatcher 3720, SCT 3420, port input buffer (PIB) 3730, port output buffer (POB) 3750, and machine central processing It is connected with a device (MCPU) 3771.

DXP 3180が、解析の特定の時点でSEEタスクを開始すると決定すると、DXP 3180は、SEPディスパッチャ3720に、セマンティックコードテーブル(SCT)3420からマイクロ命令をロードするとともに、SEEクラスター3710内の複数のSEE 3410_1〜3410_NからSEEを割り当てて、タスクを実行ように指示する信号を送る。このロードされたマイクロ命令と実行されるタスクは、その後、割り当てられたSEEへ送られる。割り当てられたSEEは、その後、マイクロ命令を実行し、データパケットはそれに従って処理される。SEEは、その他のやり方として、SEPディスパッチャ3720に命令された場合、SCT 3420から直接マイクロ命令をロードすることができる。   When DXP 3180 decides to start an SEE task at a particular point in the analysis, DXP 3180 loads the SEP dispatcher 3720 with microinstructions from the Semantic Code Table (SCT) 3420 and includes multiple SEEs in the SEE cluster 3710. Allocate SEE from 3410_1 to 3410_N and send a signal instructing to execute the task. This loaded microinstruction and the task to be executed are then sent to the assigned SEE. The assigned SEE then executes the microinstruction and the data packet is processed accordingly. The SEE can alternatively load microinstructions directly from the SCT 3420 when commanded to the SEP dispatcher 3720.

PIB 3730は、少なくとも一つのネットワークインターフェイス入力バッファと、再循環バッファと、周辺機器構成要素相互通信(PCI-X)入力バッファと、を備えている。POB 3750は、少なくとも一つのネットワークインターフェイス出力バッファと、周辺機器構成要素相互通信(PCI-X)出力バッファと、を備えている。ポートブロック3750は、一つまたは複数のポートを備えている。これらの各ポートは、物理的インターフェイスを備えている。この物理的インターフェイスの例としては、イーサーネットや、Fibre Channelや、802.11xや、ユニバーサル・シリアル・バス(USB)や、ファイヤーワイヤーや、その他の物理レイヤーインターフェイスなどに対する光学的なあるいは電気的なもしくは無線によるドライバーとレシーバーのペアなどが挙げられる。ポートブロック3470内のポートの数は、PIB 3730内のネットワークインターフェイス入力バッファの数と、POB 3750内の出力バッファの数と、一致する(対応する)のが好ましい。   The PIB 3730 includes at least one network interface input buffer, a recirculation buffer, and a peripheral component intercommunication (PCI-X) input buffer. The POB 3750 includes at least one network interface output buffer and a peripheral component intercommunication (PCI-X) output buffer. The port block 3750 includes one or a plurality of ports. Each of these ports has a physical interface. Examples of this physical interface include optical, electrical or electrical for Ethernet, Fiber Channel, 802.11x, Universal Serial Bus (USB), FireWire, and other physical layer interfaces. One example is a wireless driver / receiver pair. The number of ports in port block 3470 preferably matches (corresponds) to the number of network interface input buffers in PIB 3730 and the number of output buffers in POB 3750.

PCI-Xインターフェイス3760は、PIB 3730内のPCI-X入力バッファと、POB 3750内のPCI-X出力バッファと、外部PCI-Xバス3780と、接続される。PCIバス3780は、ディスクドライブや、追加のネットワークポートに対するインターフェイスなどのような、その他のPCIケーブル構成要素と接続することができる。   The PCI-X interface 3760 is connected to the PCI-X input buffer in the PIB 3730, the PCI-X output buffer in the POB 3750, and the external PCI-X bus 3780. The PCI bus 3780 can be connected to other PCI cable components such as disk drives and interfaces to additional network ports.

MCPU 3771は、SEEクラスター3710と、メモリサブシステム3240と、に接続される。
MCPU 3771は、セマンティックプロセッサ3700にとって望ましい機能の中で、通常のハードウェア上で従来のソフトウェアを起動することで無理なく遂行できるものを実行する。これらの機能は、通常、あまり使われずかつ時間的に重要でない機能であり、そのコードの複雑性から、SCT 3420内に含まれることを保障しない。MCPU 3771はまた、SEEがMCPUの代わりにタスクを実行するようにリクエストするためにSEEクラスター3710内のディスパッチャ(dispatcher)と通信する機能を持つ。
The MCPU 3771 is connected to the SEE cluster 3710 and the memory subsystem 3240.
The MCPU 3771 executes functions desirable for the semantic processor 3700 that can be performed without difficulty by activating conventional software on normal hardware. These functions are usually less used and not time critical functions, and because of the complexity of their code, they are not guaranteed to be included in SCT 3420. The MCPU 3771 also has the ability to communicate with a dispatcher in the SEE cluster 3710 to request that the SEE perform tasks on behalf of the MCPU.

本発明のある実施例では、メモリサブシステム3240は、さらに、暗号処理ブロック3440と、コンテキスト制御ブロックキャッシュ3450と、通常キャッシュ3460と、ストリーミングキャッシュ3470と、をDRAM 3480及び外部DRAM 3791と接続させるDRAMインターフェイス3790から構成される。この実施例では、AMCD 3430は、外部TCAMと直接接続するが、一方で、外部SRAM 3795(静的ランダムアクセスメモリ)と接続される。   In one embodiment of the present invention, the memory subsystem 3240 further includes a DRAM that connects the cryptographic processing block 3440, the context control block cache 3450, the normal cache 3460, and the streaming cache 3470 with the DRAM 3480 and the external DRAM 3791. Consists of interface 3790. In this embodiment, the AMCD 3430 connects directly to an external TCAM, while connected to an external SRAM 3795 (static random access memory).

図29は、図28に示しているセマンティックプロセッサ3700を介して受信したインターネット小型コンピューター用周辺機器インターフェイス(iSCSI)データの処理に関するフローチャート3800である。このフローチャート3800は、本発明の実施例に係る他の実施方法を説明するのに使用される。   FIG. 29 is a flowchart 3800 relating to processing of peripheral interface (iSCSI) data for Internet small computers received via semantic processor 3700 shown in FIG. This flowchart 3800 is used to describe another implementation method according to an embodiment of the present invention.

ブロック3810では、少なくとも一つの通信制御プロトコル(TCP)セッションを持つiSCSIコネクションが、iSCSIデータの転送のために、開始プログラム(initiator)と対象のセマンティックプロセッサ3700の間に確立される。セマンティックプロセッサ3700は、適切な文法をPT 3160及びPRT 3190内に含むとともに、マイクロコードをSCT3420内に有している。この文法及びマイクロコードにより、TCPセッションを確立し、その後MCPU 3771を介して、iSCSIコネクションの初期(initial)ログイン及び初期(initial)認証を処理する。ある実施例では、SPUクラスター3710内の一つまたは複数のSPUはTCPセッションの状態を整理しかつ保持する。このTCPセッションの状態は、TCPの再順序付けのための、CCBのDRAM 3480内での割り当てと、ウィンドウサイズ制限と、割り当てられたタイムフレーム内に開始プログラム(initiator)からさらなるTCPパケットやiSCSIパケットが到着しない場合にTCPセッションを終了するためのタイマーと、を含む。TCP CCBは、一旦iSCSIコネクションがMCPU 3771により確立されると、このCCBをiSCSI CCBと関連させるためのフィールドを保持するようになる。   At block 3810, an iSCSI connection having at least one Communication Control Protocol (TCP) session is established between the initiator and the target semantic processor 3700 for the transfer of iSCSI data. Semantic processor 3700 includes the appropriate grammar in PT 3160 and PRT 3190 and has microcode in SCT 3420. With this grammar and microcode, a TCP session is established and then the initial login and initial authentication of the iSCSI connection are processed via the MCPU 3771. In one embodiment, one or more SPUs in SPU cluster 3710 organize and maintain the state of TCP sessions. The state of this TCP session is determined by TCPB DRAM 3480 allocation for TCP reordering, window size limits, and additional TCP and iSCSI packets from the initiator within the allocated timeframe. And a timer for terminating the TCP session if it does not arrive. The TCP CCB holds a field for associating this CCB with the iSCSI CCB once the iSCSI connection is established by the MCPU 3771.

TCPセッションが、開始プログラムとともに確立されると、次のブロック3820では、セマンティックプロセッサ3700は、ブロック3810内に確立されたTCPセッションに対応するTCP/iSCSIパケットがPIB 3730の入力バッファ3140内に到着するのを待つ。セマンティックプロセッサ3700は、入力データの処理に利用可能な複数のSPU 3410-1〜3410-Nを備えているので、セマンティックプロセッサ3700は、ブロック3810内で確立されたTCPセッションに対応する次のTCP/iSCSIパケットを待っている間、複数のパケットを並列に受信し、それらを並列処理することができる。   Once the TCP session is established with the initiating program, in the next block 3820, the semantic processor 3700 receives a TCP / iSCSI packet corresponding to the TCP session established in block 3810 in the input buffer 3140 of the PIB 3730. Wait for Semantic processor 3700 includes a plurality of SPUs 3410-1 through 3410-N that can be used to process input data, so that semantic processor 3700 can receive the next TCP / IP corresponding to the TCP session established in block 3810. While waiting for an iSCSI packet, multiple packets can be received in parallel and processed in parallel.

TCP/iSCSIパケットは、ポートブロック3740の入力ポート3120を介して、PIB 3730の入力バッファ3140において受信される。その後、DXP 3180は、入力バッファ3140内にあるパケットのTCPヘッダーを解析する。次のブロック3830では、DXP 3180は、SEPディスパッチャ3720に、SCT 3420から適切なマイクロ命令をロードするとともに、SPUクラスター3710からSPUを割り当てて、割り当てられたSPUにマイクロ命令を送るように指示する信号を送る。このマイクロ命令は、実行されると、割り当てられたSPUに、受信したパケットを入力バッファ3140から読み込み、その後、その受信したパケットをストリーミングキャッシュ3470を介してDRAM 3480へと書き込むように、要求するものである。この割り当てられたSPUはその後、AMCD 3430の検索機能を使用してTCP CCBを検索し、DRAM 3480内の受信したパケットの記憶場所(location)に対するポインターをTCP CCBへ格納し、TCP CCB内でタイマーを再始動させる。割り当てられたSPUはその後、割り当て解除され、DXP 3180が決定するままにその他の処理に割り当てることができる。   The TCP / iSCSI packet is received in the input buffer 3140 of the PIB 3730 via the input port 3120 of the port block 3740. The DXP 3180 then analyzes the TCP header of the packet in the input buffer 3140. In the next block 3830, the DXP 3180 signals to the SEP dispatcher 3720 to load the appropriate microinstruction from the SCT 3420 and to allocate an SPU from the SPU cluster 3710 and send the microinstruction to the assigned SPU. Send. When executed, this microinstruction requests the allocated SPU to read the received packet from the input buffer 3140 and then write the received packet to the DRAM 3480 via the streaming cache 3470. It is. This assigned SPU then uses the search function of AMCD 3430 to find the TCP CCB, stores a pointer to the location of the received packet in DRAM 3480 in the TCP CCB, and timers in the TCP CCB Is restarted. The assigned SPU is then deallocated and can be assigned to other processes as determined by DXP 3180.

次のブロック3840では、受信したTCP/iSCSIパケットは、必要であれば、ペイロードデータのシーケンスが正しいことを保障するために再順序付けされる。当技術分野で周知のように、すべての先行するパケットが到着している場合、TCPパケットは適切な順序にあると考えられる。   In the next block 3840, the received TCP / iSCSI packets are reordered, if necessary, to ensure that the payload data sequence is correct. As is well known in the art, TCP packets are considered in the proper order if all previous packets have arrived.

受信したパケットが適切な順序にあると判定されると、関連するSPUは、SEPディスパッチャ3720に、SCT 3420からiSCSI再循環に対するマイクロ命令をロードするように指示する信号を送る。次のブロック3850では、割り当てられたSPUは、iSCSIヘッダーと、TCPヘッダーからのTCPコネクションIDと、iSCSI非終端シンボルと、を組み合わせ特別なiSCSIヘッダーを作成する。割り当てられたSPUは、その後、特別なiSCSIヘッダーをPIB 3730内の再循環バッファ3160へ書き込む。その他のやり方としては、特別なiSCSIヘッダーを、それに対応するiSCSIペイロードとともに、再循環バッファ3160へと送ることができる。   If it is determined that the received packets are in the proper order, the associated SPU signals the SEP dispatcher 3720 to load a microinstruction for iSCSI recirculation from the SCT 3420. In a next block 3850, the assigned SPU combines the iSCSI header, the TCP connection ID from the TCP header, and the iSCSI non-terminal symbol to create a special iSCSI header. The assigned SPU then writes a special iSCSI header to the recirculation buffer 3160 in the PIB 3730. Alternatively, a special iSCSI header can be sent to the recirculation buffer 3160 along with the corresponding iSCSI payload.

次のブロック3860では、特別なiSCSIヘッダーは解析され、その後セマンティックプロセッサ3700は、iSCSIペイロードを処理する。   In a next block 3860, the special iSCSI header is parsed and then the semantic processor 3700 processes the iSCSI payload.

次の判定ブロック3870では、受信したTCP/iSCSIパケット内にもう一つのiSCSIヘッダーがあるかどうか尋ねられる。受信したTCP/iSCSIパケット内にもう一つのiSCSIヘッダーがある場合、実行プログラムはブロック3850へと戻り、そこで、この受信したTCP/iSCSIパケット内の第二のiSCSIヘッダーが第二のiSCSIペイロードを処理するために使用される。当技術分野で周知のように、単一のTCP/iSCSIパケット内に複数のiSCSIヘッダーとiSCSIペイロードがあってもよく、それゆえに、所定のいずれのiSCSIパケットにも、再循環バッファ3160及びDXP 3180を介して送られる複数のパケットセグメントがあってもよい。   In a next decision block 3870, it is asked if there is another iSCSI header in the received TCP / iSCSI packet. If there is another iSCSI header in the received TCP / iSCSI packet, the execution program returns to block 3850 where the second iSCSI header in this received TCP / iSCSI packet processes the second iSCSI payload. Used to do. As is well known in the art, there may be multiple iSCSI headers and iSCSI payloads within a single TCP / iSCSI packet, and therefore any given iSCSI packet will contain a recirculation buffer 3160 and DXP 3180. There may be multiple packet segments sent via.

受信したTCP/iSCSIパケット内にもう一つのiSCSIヘッダーがない場合、ブロック3870は実行プログラムをブロック3820へと戻し、そこで、セマンティックプロセッサ3700が、ブロック3810内に確立されたTCPセッションに対応する別のTCP/iSCSIパケットが到着するのを待つ。割り当てられたSPUは、その後割り当て解除され、その後、DXP 3180が決定するままにその他の処理に割り当てることができる。   If there is no other iSCSI header in the received TCP / iSCSI packet, block 3870 returns the executing program to block 3820, where the semantic processor 3700 returns another TCP session that is established in block 3810. Wait for a TCP / iSCSI packet to arrive. The assigned SPU is then deallocated and can then be assigned to other processes as determined by DXP 3180.

当業者であれば、セマンティックプロセッサ3700により受信される単一のパケット内に暗号化と、認証と、IPフラグメント化と、iSCSIデータ処理と、のいずれかの組み合わせが含まれている場合、複数のパケットのセグメントが、異なる時点で、再循環バッファ3160を通過するようにしてもよいということを、理解するであろう。   Those skilled in the art will recognize that multiple combinations of encryption, authentication, IP fragmentation, and iSCSI data processing are included in a single packet received by the semantic processor 3700. It will be understood that segments of a packet may pass through recirculation buffer 3160 at different times.

メモリサブシステム
図30は、メモリサブシステム3240をさらに詳しく示している。SPU 3710のクラスターとARM 3814は、メモリサブシステム3240と接続される。他の実施例では、ARM 3814は、SPU 3710を介してメモリサブシステム3240と接続される。メモリサブシステム3240は、それぞれ異なる種類のメモリアクセスに対して適応される複数の異なるキャッシュ領域3460と、3450と、3470と、3430と、3440と、3771と、を備えている。複数のキャッシュ領域3460と、3450と、3470と、3430と、3440と、3771と、は通常、キャッシュ領域3825と呼ばれる。SPUクラスター3710及びARM 3814は、キャッシュ領域3825のいずれかのキャッシュと接続し、今度はそのキャッシュが、メインDRAMアービター(arbiter) 3828を介して外部動的ランダムアクセスメモリ(DRAM)と接続する。しかし、ある実施例においては、CCBキャッシュ3450は、CCB DRAM制御装置3826を介して別の外部CCB DRAM 3791Bと接続してもよい。
Memory Subsystem FIG. 30 shows the memory subsystem 3240 in more detail. The cluster of SPU 3710 and the ARM 3814 are connected to the memory subsystem 3240. In other embodiments, the ARM 3814 is connected to the memory subsystem 3240 via the SPU 3710. The memory subsystem 3240 includes a plurality of different cache areas 3460, 3450, 3470, 3430, 3440, and 3771 that are adapted for different types of memory accesses. The plurality of cache areas 3460, 3450, 3470, 3430, 3440, and 3771 are generally referred to as a cache area 3825. SPU cluster 3710 and ARM 3814 connect to one of the caches in cache area 3825, which in turn connects to external dynamic random access memory (DRAM) through main DRAM arbiter 3828. However, in one embodiment, CCB cache 3450 may be connected to another external CCB DRAM 3791B via CCB DRAM controller 3826.

異なるキャッシュ領域3825は、異なるデータ処理オペレーションに関するDRAMのデータ転送を改善する。通常キャッシュ3460は、SPU 3710による通常目的のメモリアクセスのための標準的なキャッシュとして動作する。例えば、通常キャッシュ3460は、通常の制御オペレーションとデータアクセスオペレーションを指示するために使用される通常目的のランダムメモリアクセスのために使用されてもよい。   Different cache areas 3825 improve DRAM data transfer for different data processing operations. The normal cache 3460 operates as a standard cache for normal purpose memory access by the SPU 3710. For example, the normal cache 3460 may be used for normal purpose random memory accesses that are used to direct normal control and data access operations.

CCBキャッシュ3450内のキャッシュライン取替えは、ソフトウェアコマンドにより排他的に制御される。これは、最後にどのハードウェアがキャッシュライン位置を占有した(occupy)かに基づいて、ハードウェアがキャッシュのコンテンツを制御する従来のキャッシュオペレーションと正反対である。CCBキャッシュ領域3450をソフトウェアで制御することで、キャッシュが、キャッシュラインを早くリロードしすぎるのを防ぐことができる。このリロードは、キャッシュラインが外部DRAM 3791Bからロードまたはアップデートされる前に、一つまたは複数のSPU 3710による何らかの中間処理を必要とすることがある。   Cache line replacement in the CCB cache 3450 is controlled exclusively by software commands. This is the opposite of conventional cache operations where the hardware controls the contents of the cache based on which hardware last occupied the cache line location. By controlling the CCB cache area 3450 with software, the cache can be prevented from reloading the cache line too early. This reload may require some intermediate processing by one or more SPUs 3710 before the cache line is loaded or updated from external DRAM 3791B.

ストリーミングキャッシュ3470は、主にストリーミングパケットデータを処理するのに用いられる。ストリーミングキャッシュ3470は、ストリーミングパケット転送が、通常キャッシュ3460内のほとんどすべてのエントリーを置き換えることをやめさせる。ストリーミングキャッシュ3470は、一つまたは複数のSPU 3710が、まだデータがストリーミングキャッシュ3710内に配置されている間に、データを読み込む必要が出てくる可能性があるので、先入れ先出し(FIFO)メモリバッファの代わりにキャッシュとして実行される。FIFOが使用されると、ストリーミングデータは、外部DRAM 3791Aへとロードされてからしか読み込むことができなくなってしまう。ストリーミングキャッシュ3470は、各々が異なるパケットストリームを保持することができる複数のバッファを備えている。これにより、異なるSPU 3710は、異なるパケットストリームがストリーミングキャッシュ3470内に配置されている間にもそれらにアクセスすることができる。   The streaming cache 3470 is mainly used to process streaming packet data. The streaming cache 3470 stops streaming packet transfers from replacing almost all entries in the normal cache 3460. Streaming cache 3470 is a first-in first-out (FIFO) memory buffer because one or more SPUs 3710 may need to read data while the data is still in the streaming cache 3710. Instead it runs as a cache. If the FIFO is used, the streaming data can only be read after being loaded into the external DRAM 3791A. The streaming cache 3470 includes a plurality of buffers each capable of holding a different packet stream. This allows different SPUs 3710 to access different packet streams while they are located in the streaming cache 3470.

MCPU 3771は、主にARM 3814からの命令アクセスのために使用される。MCPU 3771は、ARM 3814と外部DRAM 3791A間のバーストモードアクセスの効率を向上させる。ARM 3814は、ある実施例では、32ビット幅である内蔵キャッシュ3815を備えている。MCPU 3771は、特に、32ビットバースト転送を制御する(handle)ように方向付けられている(direct)。MCPU 3771は、複数の32ビットバーストをARM 3814からバッファして、その後キャッシュラインがいくつかの閾値データ量に到達したとき、それらを外部DRAM 3791Aへバーストして(一斉に送って)よい。   The MCPU 3771 is mainly used for instruction access from the ARM 3814. The MCPU 3771 improves the efficiency of burst mode access between the ARM 3814 and the external DRAM 3791A. The ARM 3814 includes an internal cache 3815 that, in one embodiment, is 32 bits wide. The MCPU 3771 is specifically directed to control 32-bit burst transfers. The MCPU 3771 may buffer multiple 32-bit bursts from the ARM 3814 and then burst (send together) to the external DRAM 3791A when the cache line reaches some threshold amount of data.

ある実施例では、各キャッシュ領域3825は、外部DRAM 3791Aと3791B内の異なる関連領域に、物理的に配置させてもよい。これと、MCPU 3771をキャッシュ領域と別々にすることにより、ARM 3814と外部DRAM 3791A間の命令転送が、他のキャッシュ領域に指示されるデータ転送により悪影響を及ぼされる(polluted)ことを防止する。例えば、SPU 3710は、キャッシュ領域3460と、3450と、3470と、を介して、ARM 3814により使用される命令スペース(instruction space)に悪影響を及ぼす(polluting)ことなく、データをロードすることができる。   In one embodiment, each cache area 3825 may be physically located in a different associated area in external DRAM 3791A and 3791B. By separating the MCPU 3771 from the cache area, instruction transfer between the ARM 3814 and the external DRAM 3791A is prevented from being adversely affected by data transfer instructed to the other cache area. For example, the SPU 3710 can load data through cache areas 3460, 3450, and 3470 without polluting the instruction space used by the ARM 3814. .

S−コード
図31は、異なるキャッシュ領域3825に対して、メモリアクセスが各SPU 3410によりどのように開始されるかを詳しく示している。簡単のため、図31には、通常キャッシュ3460と、CCBキャッシュ3450と、ストリーミングキャッシュ3470と、だけが示されている。
S-code FIG. 31 shows in detail how memory access is initiated by each SPU 3410 for different cache areas 3825. For simplicity, only the normal cache 3460, the CCB cache 3450, and the streaming cache 3470 are shown in FIG.

マイクロ命令3900は、もう一つの呼び方としてSPUコード(S−Code)と呼ばれ、直接実行パーサ3180(図23に示している)からSPUサブシステム3710へと送られる。マイクロ命令3900の例は、図32Aでより詳しく示されている。このマイクロ命令3900は、各SPU 3410に、どのキャッシュ領域をデータ処理のために使用するのかを指示するターゲットフィールド3914を含んでもよい。例えば、図32Aに示しているキャッシュ領域フィールド3914は、SPU 3410にCCBキャッシュ3450を使用するように命令する。ターゲットフィールド3914は、SPU 3410に、MCPU 3771(図30に示している)や、再循環バッファ(図23に示している)や、出力バッファ3750(図28に示している)にアクセスするように命令するのに用いることもできる。   The microinstruction 3900 is called an SPU code (S-Code) as another way of calling, and is sent directly from the execution parser 3180 (shown in FIG. 23) to the SPU subsystem 3710. An example of microinstruction 3900 is shown in more detail in FIG. 32A. The microinstruction 3900 may include a target field 3914 that indicates to each SPU 3410 which cache area to use for data processing. For example, the cache area field 3914 shown in FIG. 32A instructs the SPU 3410 to use the CCB cache 3450. Target field 3914 allows SPU 3410 to access MCPU 3771 (shown in FIG. 30), recirculation buffer (shown in FIG. 23), and output buffer 3750 (shown in FIG. 28). It can also be used to command.

図31に関して、各キャッシュ領域3825は、SPUサブシステム3710内に、関連したキューのセットを保持している。個々のSPU 3410は、データアクセスリクエストをキュー3902に送り、その後このキュー3902は異なるキャッシュ領域3825に対し順序正しいアクセスを提供する。このキュー3902はまた、異なるSPU 3410が、異なるキャッシュ領域3825に対するメモリアクセスを同時に導いたり、指示したりすることを可能にする。   With reference to FIG. 31, each cache area 3825 maintains a set of associated queues within the SPU subsystem 3710. Each SPU 3410 sends a data access request to queue 3902, which then provides in-order access to different cache areas 3825. This queue 3902 also allows different SPUs 3410 to direct and direct memory accesses to different cache areas 3825 at the same time.

図32BはSPU 3410とキャッシュ領域3825間で送信されるキャッシュリクエスト3904の例を示している。このキャッシュリクエスト3904はアドレス及びあらゆる関連データを含んでいる。加えて、このキャッシュリクエスト3904は、どのSPU 3410がこのリクエスト3904と関連されているかを識別するSPUタグ3906を含んでいる。SPUタグ3906は、キャッシュ領域3825に、どのSPU 3410へリクエストされたデータを送信するかを伝える。   FIG. 32B shows an example of a cache request 3904 transmitted between the SPU 3410 and the cache area 3825. This cache request 3904 includes an address and any associated data. In addition, the cache request 3904 includes an SPU tag 3906 that identifies which SPU 3410 is associated with the request 3904. The SPU tag 3906 tells the cache area 3825 which SPU 3410 to transmit the requested data.

調停(arbitration)
図30に関して、調停に特に関係しているのは、DRAMアービター(arbiter)3828である。このDRAMアービター3828は、ある実施例では、いつ異なるデータキャッシュ領域3825からのデータが外部DRAM 3791Aに対するアクセスを得るのかを判定するために総当り方式のアービトレーション(round robin arbitration)を用いている。総当り方式の調停スキームでは、メインのDRAMアービター3828は、所定の順序で、何れかのキャッシュ領域3825が外部DRAM 3791Aに対するアクセスをリクエストしたかどうかチェックし続ける。特定のキャッシュ領域3825がメモリアクセスリクエストを作成する場合、そのメモリアクセスリクエストに関連した総当り方式の実行期間中、そのメモリアクセスリクエストは外部DRAM 3791Aに対するアクセスとみなされる。アービター3828は、その後、メモリアクセスリクエストに関して次のキャッシュ領域3825を総当り順でチェックする。次のキャッシュ領域3825がメモリアクセスリクエストを持たない場合、アービター3828は次のキャッシュ領域3825を総当り順でチェックする。このプロセスは、各キャッシュ領域3825が総当り順で提供され、継続する。
Arbitration
With regard to FIG. 30, the DRAM arbiter 3828 is particularly concerned with arbitration. The DRAM arbiter 3828, in one embodiment, uses round robin arbitration to determine when data from different data cache areas 3825 gains access to the external DRAM 3791A. In the brute force arbitration scheme, the main DRAM arbiter 3828 continues to check whether any cache area 3825 has requested access to the external DRAM 3791A in a predetermined order. When a particular cache area 3825 creates a memory access request, the memory access request is considered an access to external DRAM 3791A during the brute force execution associated with that memory access request. Arbiter 3828 then checks the next cache area 3825 in brute force order for memory access requests. If the next cache area 3825 has no memory access request, the arbiter 3828 checks the next cache area 3825 in brute force order. This process continues with each cache area 3825 being provided in brute force order.

CCBキャッシュ3450と外部DRAM 3791A間のアクセスは、大量の情報量や回線容量(bandwidth)を消費することがある。CCB DRAM制御装置3826は、CCBキャッシュ(コンテキスト制御ブロックキャッシュ)3450と別の外部CCB DRAM 3791B間のCCB転送専用に使用することができる。異なるバス3834と3836は、それぞれ、DRAM 3791AとDRAM 3791Bの2つの異なるバンクに対するアクセスに使用することができる。他のキャッシュ領域3460、3470、3430、3440及び3771による外部メモリに対するアクセスは、メインのDRAMアービター3828によりバス3834を介して個別に調停される。CCBキャッシュ3450が外部DRAMに別のCCB制御装置3826を介して接続されていない場合、メインのDRAM制御装置(アービター)3828は、外部DRAM 3791Aに対するすべてのアクセスを、すべてのキャッシュ領域3825に対して調停する。   Access between the CCB cache 3450 and the external DRAM 3791A may consume a large amount of information and bandwidth. The CCB DRAM controller 3826 can be used exclusively for CCB transfer between the CCB cache (context control block cache) 3450 and another external CCB DRAM 3791B. Different buses 3834 and 3836 can be used to access two different banks of DRAM 3791A and DRAM 3791B, respectively. Access to external memory by the other cache areas 3460, 3470, 3430, 3440 and 3771 is individually arbitrated via the bus 3834 by the main DRAM arbiter 3828. If the CCB cache 3450 is not connected to external DRAM via another CCB controller 3826, the main DRAM controller (arbiter) 3828 directs all accesses to the external DRAM 3791A to all cache areas 3825. Mediate.

他の実施例では、外部DRAM 3791Aに対するアクセスと外部CCB DRAM 3791Bに対するアクセスは交互的になされる(interleaved)。これは、CCBキャッシュ3450及びその他のキャッシュ領域3825は、外部DRAM 3791Aと外部DRAM 3791Bの両方に対するメモリアクセスを行うことができることを意味する。これは、2つのメモリバンク3791Aと3791Bが、同時にアクセスされることを可能にする。例えば、CCBキャッシュ3450は、外部メモリ3791Aからの読み込みオペレーションを行うと同時に、外部メモリ3791Bへの書き込みオペレーションを行うことができる。   In other embodiments, access to external DRAM 3791A and access to external CCB DRAM 3791B are interleaved. This means that the CCB cache 3450 and the other cache area 3825 can perform memory access to both the external DRAM 3791A and the external DRAM 3791B. This allows two memory banks 3791A and 3791B to be accessed simultaneously. For example, the CCB cache 3450 can perform a read operation from the external memory 3791A and simultaneously perform a write operation to the external memory 3791B.

通常キャッシュ
図33は、通常キャッシュ3460の一例をより詳しく示している。この通常キャッシュ3460は、SPU 3410(図31に示している)の一つから物理アドレス3910を受け取る。キャッシュライン3918は、物理アドレス3910からの下位アドレススペース(LOA)3916に従って、アクセスされる。
Normal Cache FIG. 33 shows an example of the normal cache 3460 in more detail. This normal cache 3460 receives a physical address 3910 from one of the SPUs 3410 (shown in FIG. 31). The cache line 3918 is accessed according to the lower address space (LOA) 3916 from the physical address 3910.

このキャッシュライン3918は、ある例では、その他のキャッシュ領域3825内で使用されるキャッシュラインと比べて比較的小型であるか、それらとは異なるサイズを持つことがある。例えば、キャッシュライン3918は、ストリーミングキャッシュ3470やCCBキャッシュ3450で使用されるキャッシュラインと比べずっと小型でもよい。これにより、異なるキャッシュ領域3825により処理される異なる種類のデータに対してよりカスタマイズされたメモリアクセスを提供する。例えば、キャッシュライン3918は、通常のデータ処理制御に対して使用する場合は、16バイト長あればよい。一方、ストリーミングキャッシュ3470に対して使用するキャッシュラインは、大型のデータブロックを転送するために、これより大型のキャッシュライン(例えば64ビット長のもの)を持つことがある。   This cache line 3918 may be relatively small or have a different size than the cache lines used in other cache areas 3825 in some examples. For example, the cache line 3918 may be much smaller than the cache line used in the streaming cache 3470 or the CCB cache 3450. This provides more customized memory access for different types of data processed by different cache areas 3825. For example, the cache line 3918 may be 16 bytes long when used for normal data processing control. On the other hand, the cache line used for the streaming cache 3470 may have a larger cache line (for example, 64 bits long) in order to transfer a large data block.

各キャッシュライン3918は、キャッシュライン内のデータが有効であるかどうかを示す関連有効フラグ(associated valid flag)3920を保持してもよい。また、このキャッシュライン3918は、関連高位アドレス(HOA)フィールド3922を保持する。通常キャッシュ3460は、物理アドレス3910を受け取り、その後、LO A3916と関連したキャッシュライン3918に対するHOA 3922及び有効フラグ3920を調べる。有効フラグ3920が有効なキャッシュ入力を示し、HOA 3922が物理アドレス3910に対するHOA 3914と一致する場合、キャッシュライン3918のコンテンツは、リクエストしているSPU 3410へ出力される。フラグフィールド3920が無効な入力(entry)を示している場合、キャッシュライン3918のコンテンツは、外部DRAM 3791A(図30に示している)内の対応するアドレスにより上書きされる。   Each cache line 3918 may maintain an associated valid flag 3920 that indicates whether the data in the cache line is valid. The cache line 3918 also holds an associated high order address (HOA) field 3922. The normal cache 3460 receives the physical address 3910 and then examines the HOA 3922 and valid flag 3920 for the cache line 3918 associated with LO A 3916. If the valid flag 3920 indicates a valid cache input and the HOA 3922 matches the HOA 3914 for the physical address 3910, the contents of the cache line 3918 are output to the requesting SPU 3410. If flag field 3920 indicates an invalid entry, the contents of cache line 3918 are overwritten by the corresponding address in external DRAM 3791A (shown in FIG. 30).

フラグフィールド3920は有効なキャッシュ入力(entry)を示しているが、HOA 3922が物理アドレス3910内のHOA 3914と一致しない場合、キャッシュライン3918内の入力(entry)の一つが、自動的に外部DRAM 3791Aへロードされるとともに、物理アドレス3910と関連する外部DRAM 3791Aのコンテンツは、LOA 3916と関連するキャッシュライン3918へロードされる。   Flag field 3920 indicates a valid cache entry, but if HOA 3922 does not match HOA 3914 in physical address 3910, one of the entries in cache line 3918 will automatically be external DRAM. The contents of the external DRAM 3791A associated with the physical address 3910 and loaded into the 3791A are loaded into the cache line 3918 associated with the LOA 3916.

コンテキスト制御ブロック(CCB)キャッシュ
図34は、コンテキストコントロールブロック(CCB)キャッシュ3450をより詳しく示している。このCCB 3450は、複数のバッファ3940及び連想タグ(associative tag)3942を備えている。従来の4重連想キャッシュ(4-way associative cache)とは異なって、CCB 3450は本質的に32重連想キャッシュのように動作する。複数のCCBバッファ3940及び連想タグ(associative tag)3942は、SPU 3410を介して送信されるソフトウェアコマンドのセットにより制御される。このソフトウェアコマンド3946は、外部DRAM 3791Aまたは3791B(図30に示している)とCCBキャッシュ3450との間のデータ転送の制御のために使用されるキャッシュ/DRAM命令3946のセットを含んでいる。SPU/キャッシュコマンド3948のセットは、SPU 3410とCCBキャッシュ3450との間のデータ転送を制御するのに使用される。ソフトウェア命令3946は、ALLOCATE(割り当て)オペレーションと、LOAD(ロード)オペレーションと、COMMIT(委任)オペレーションと、DROP(廃棄)オペレーションと、を含んでいる。ソフトウェア命令3948は、READ(読み込みオペレーション及びWRITE(書き込み)オペレーションを含んでいる。
Context Control Block (CCB) Cache FIG. 34 shows the context control block (CCB) cache 3450 in more detail. The CCB 3450 includes a plurality of buffers 3940 and an associative tag 3942. Unlike traditional 4-way associative caches, CCB 3450 behaves essentially like a 32-way associative cache. The plurality of CCB buffers 3940 and associative tags 3942 are controlled by a set of software commands transmitted via the SPU 3410. This software command 3946 includes a set of cache / DRAM instructions 3946 used to control data transfer between external DRAM 3791A or 3791B (shown in FIG. 30) and CCB cache 3450. A set of SPU / cache commands 3948 is used to control data transfer between the SPU 3410 and the CCB cache 3450. Software instructions 3946 include an ALLOCATE operation, a LOAD operation, a COMMIT operation, and a DROP operation. Software instructions 3948 include a READ (read operation) and a WRITE (write) operation.

図35は、SPU 3410とCCBキャッシュ3450の間で送信されるCCBコマンド3954の例をいくつか示している。これらのどのソフトウェアコマンド3944も、SPU 3410により、いつでもCCBキャッシュ3450に出すことができる。   FIG. 35 shows some examples of CCB commands 3954 sent between the SPU 3410 and the CCB cache 3450. Any of these software commands 3944 can be issued to the CCB cache 3450 at any time by the SPU 3410.

図34及び35に示すように、SPU 3410の一つが、CCBバッファ3940の一つを最初に割り当てるように命令するALLOCATEコマンド3954A、をCCBキャッシュ3450へ送る。ALLOCATEコマンド3954Aは、CCBを含むDRAM 3791内の物理アドレスに関連する特定のメモリアドレスかあるいは特定のCCBタグ3956を含むことができる。CCBキャッシュ3450内の制御装置3950は、受け取ったCCBアドレス3956と、各バッファ3940に関連するアドレスまたはタグとが、並列的に一致させる処理を行う。各バッファ3940に関連するアドレスは、関連するタグフィールド3942内に保持される。   As shown in FIGS. 34 and 35, one of the SPUs 3410 sends an ALLOCATE command 3954A, which instructs the CCB cache 3450 to allocate one of the CCB buffers 3940 first. The ALLOCATE command 3954A can include a specific memory address associated with a physical address in DRAM 3791 containing the CCB or a specific CCB tag 3956. The control device 3950 in the CCB cache 3450 performs a process of matching the received CCB address 3956 and the address or tag associated with each buffer 3940 in parallel. The address associated with each buffer 3940 is held in the associated tag field 3942.

アドレス/タグ3956がどのタグフィールド3942にも保持されない場合、制御装置3950は、使用されていないバッファ3940の一つを特定のCCBタグ3956に割り当てる。アドレスがタグフィールド3942の一つにすでに存在している場合、制御装置3950は、すでに特定のCCBタグ3956と関連付けがなされているバッファ3940を使用する。   If address / tag 3956 is not held in any tag field 3942, controller 3950 assigns one of the unused buffers 3940 to a particular CCB tag 3956. If the address already exists in one of the tag fields 3942, the controller 3950 uses a buffer 3940 that is already associated with a particular CCB tag 3956.

制御装置3950は、応答(reply)3954BをリクエストしているSPU 3410へと送り返す。この応答は、CCBバッファ3940がうまく割り当てられたかどうかを示す。バッファ3940がうまく割り当てられた場合、制御装置3950は、CCBタグ3956を使用するすべてのSPU 3410からのすべてのCCBコマンド3944を、新しく割り当てられたバッファ3940へとマッピングする。   The controller 3950 sends back a reply 3954B to the requesting SPU 3410. This response indicates whether the CCB buffer 3940 has been successfully allocated. If buffer 3940 is successfully allocated, controller 3950 maps all CCB commands 3944 from all SPUs 3410 using CCB tag 3956 to newly allocated buffer 3940.

SPU 3410が、現在外部DRAM 3791内にある特定のメモリアドレスに関するデータを無視してもよい状況がある。例えば、外部DRAM 3791内のデータが上書きされる予定がある場合などがこれにあたる。従来のキャッシュアーキテクチャでは、何らかの特定のアドレスを持ち、現在はキャッシュ内に保持されていないコンテンツは、自動的にメインのメモリからキャッシュへロードされる。しかし、ALLOCATEコマンド3946は、最初にDRAM 3791からデータを読み込む必要なく、単にバッファ3940の一つを割り当てる。こうして、それまでにバッファ3940内のデータを外部DRAM 3791から読み込んだり、それを外部DRAM 3791へ書き込んだりすることなく、バッファ3940を中間データ処理のためのメモ帳として使用することもできる。   There are situations where the SPU 3410 may ignore data relating to a particular memory address currently in the external DRAM 3791. For example, this is the case when data in the external DRAM 3791 is scheduled to be overwritten. In a conventional cache architecture, content that has some specific address and is not currently held in the cache is automatically loaded from main memory into the cache. However, the ALLOCATE command 3946 simply allocates one of the buffers 3940 without first having to read data from the DRAM 3791. Thus, the buffer 3940 can be used as a memo pad for intermediate data processing without reading the data in the buffer 3940 from the external DRAM 3791 and writing it into the external DRAM 3791 so far.

LOADまたはCOMMITのソフトウェアコマンド3946は、キャッシュバッファ3940の一つと外部DRAM 3791との間でのデータ転送を完了するために、必要とされる。例えばLOAD(ロード)コマンド3954Cは、SPU 3410から制御装置3950へと送られ、特定のCCBタグ3956に関連するCCBを、外部DRAMからCCBキャッシュ3450内の関連するバッファ3940へロードする。制御装置3950は、CCBタグ3956をDRAM物理アドレスへと変換することができる。その後、この制御装置3950は、DRAM物理アドレスと関連したDRAM 3791からCCBを取り込むことができる。   A LOAD or COMMIT software command 3946 is required to complete the data transfer between one of the cache buffers 3940 and the external DRAM 3791. For example, a LOAD command 3954C is sent from the SPU 3410 to the controller 3950 to load the CCB associated with a particular CCB tag 3956 from the external DRAM into the associated buffer 3940 in the CCB cache 3450. The controller 3950 can convert the CCB tag 3956 into a DRAM physical address. The controller 3950 can then retrieve the CCB from the DRAM 3791 associated with the DRAM physical address.

COMMIT(委任)コマンド3954Cは、SPU 3410により、バッファ3940のコンテンツを、CCBタグ3956に関連するDRAM 3791内の物理アドレスへ書き込むために送信される。このCOMMITコマンド3956Cはまた、制御装置3950にバッファ3940の割り当てを解除させ、このバッファを他のCCBに割り当てることを可能にする。しかし、他のSPU 3410は、後で、同じCCBタグ3956に関するバッファ割り当てをリクエストすることができる。この制御装置3950は、CCBがバッファ3940の一つの中にまだ存在している場合、現在バッファ3940内に存在し、その内部に配置されているCCBを使用することができる。   A COMMIT command 3954C is sent by SPU 3410 to write the contents of buffer 3940 to the physical address in DRAM 3791 associated with CCB tag 3956. This COMMIT command 3956C also causes the controller 3950 to deallocate the buffer 3940 and allow this buffer to be allocated to other CCBs. However, other SPUs 3410 can later request buffer allocation for the same CCB tag 3956. If the CCB is still present in one of the buffers 3940, the controller 3950 can use the CCB that is currently in the buffer 3940 and located therein.

DROP(廃棄)コマンド3944は、制御装置3950に、特定のCCBタグ3956と関連した特定のバッファ3940のコンテンツを廃棄する(discard)ように命令する。制御装置3950は、バッファのコンテンツを外部DRAM 3791へロードすることなく、単にCCBキャッシュ3450内のバッファ3940を割り当て解除することにより、CCBを廃棄する。   The DROP command 3944 instructs the controller 3950 to discard the contents of a particular buffer 3940 associated with a particular CCB tag 3956. The controller 3950 discards the CCB by simply deallocating the buffer 3940 in the CCB cache 3450 without loading the buffer contents into the external DRAM 3791.

READ及びWRITE命令3948は、CCBキャッシュ3450とSPU 3410間でCCBデータを転送するのに使用される。READ及びWRITE命令3948は、バッファ3940があらかじめ割り当てられている場合に限り、SPU 3410とCCBキャッシュ3450との間でデータ転送することを可能にする。   READ and WRITE instructions 3948 are used to transfer CCB data between the CCB cache 3450 and the SPU 3410. READ and WRITE instructions 3948 allow data transfer between SPU 3410 and CCB cache 3450 only if buffer 3940 is pre-allocated.

すべての利用可能なバッファ3940が現在使用中である場合、SPU 3410の一つは、現在のALLOCATEコマンドがCCBキャッシュにより提供されるようになるまでに、現在使用されているバッファ3940の一つに委任(COMMIT)をしなくてはならないだろう。制御装置3950は、異なるCCBアドレスに対してどのバッファ3940が割り当てられているかについてのトラック(履歴)を保持する。SPU 3410は、現在割り当てられたバッファ3940の数のカウントを保持することしか必要としない。カウント数が利用可能なバッファ3940の総数に到達する場合、SPU 3410の一つは、COMMITコマンドまたはDROPコマンドを出して、バッファ3940の一つを開放する(割り当て解除する)ことができる。ある実施例では、すくなくともSPU 3410の倍のバッファ3940を備えている。これにより、すべてのSPU 3410は二つの利用可能なバッファ3940を同時に確保することができる。   If all available buffers 3940 are currently in use, one of the SPUs 3410 will become one of the currently used buffers 3940 until the current ALLOCATE command is served by the CCB cache. You will have to do a COMMIT. The control device 3950 maintains a track (history) as to which buffer 3940 is assigned to a different CCB address. The SPU 3410 only needs to keep a count of the number of buffers 3940 currently allocated. If the count reaches the total number of available buffers 3940, one of the SPUs 3410 can issue a COMMIT or DROP command to release (deallocate) one of the buffers 3940. Some embodiments include at least twice as many buffers 3940 as SPUs 3410. This allows all SPUs 3410 to reserve two available buffers 3940 simultaneously.

CCBキャッシュ3450内のオペレーションはソフトウェア制御下にあるので、SPU 3410が制御するのは、バッファ3940が開放され、そのバッファが外部メモリ3791へデータを転送するときだけである。加えて、バッファ3940をCCBに対して最初に割り当てるSPU 3410は、LOADコマンドを出すSPU 3410や、最終的にCOMMITコマンドやDROPコマンドを出すことによりバッファ3940を開放するSPU 3410と、異なってもよい。   Since the operation in the CCB cache 3450 is under software control, the SPU 3410 only controls when the buffer 3940 is released and the buffer transfers data to the external memory 3791. In addition, the SPU 3410 that initially allocates the buffer 3940 to the CCB may be different from the SPU 3410 that issues the LOAD command and the SPU 3410 that eventually releases the buffer 3940 by issuing a COMMIT command or DROP command. .

コマンド3944は、CCBキャッシュ3450とDRAM 3791との間のデータ転送の完全なソフトウェア制御を可能にする。これは、パケットデータが一つまたは複数のSPU 3410により処理される場合と、パケット処理中に特定のCCBが、DRAM 3791へロードされる必要がないと判定されるかまたはそれがDRAM 3791から読み込まれる必要がないと判定される場合に、かなり効果的である。例えば、SPU 3410の一つは、パケットの処理中に、パケットが不正確なチェックサム値を持っていると判定することがある。そのパケットは、そのパケットをDRAM 3791へロードすることなく、CCBバッファ3940から廃棄(除外/Dropped)することができる。   Command 3944 allows complete software control of data transfer between CCB cache 3450 and DRAM 3791. This is the case when packet data is processed by one or more SPU 3410 and during packet processing it is determined that a particular CCB does not need to be loaded into DRAM 3791 or it is read from DRAM 3791 It is quite effective when it is determined that it is not necessary to be performed. For example, one of the SPUs 3410 may determine that the packet has an incorrect checksum value while processing the packet. The packet can be dropped (dropped) from CCB buffer 3940 without loading the packet into DRAM 3791.

ある実施例のバッファ3940はキャッシュラインとして実施される。それゆえ、一つのキャッシュラインだけが外部DRAMメモリ3791へ戻されて書き込まれる。ある実施例では、キャッシュラインは512バイトであり、そのワード(words)は64バイト幅である。制御装置3950は、どのキャッシュラインが変更されたかを認識することができる。そして、COMMITコマンドの命令下にある間に限り、制御装置3950は、バッファ3940で変更されたキャッシュラインを外部DRAMメモリ3791に戻して書き込むことができる。   In one embodiment, buffer 3940 is implemented as a cache line. Therefore, only one cache line is returned to the external DRAM memory 3791 for writing. In one embodiment, a cache line is 512 bytes and its words are 64 bytes wide. The control device 3950 can recognize which cache line has been changed. Then, the control device 3950 can return the cache line changed in the buffer 3940 to the external DRAM memory 3791 and write it as long as it is under the command of the COMMIT command.

図36は、TCPセッションの処理中にどのようにCCBが使用されるかの例を示している。セマンティックプロセッサ3100(図23に示している)は、どの種類のデータ処理に対しても使用することができるが、ここでは説明のためにTCPパケット3960が示されている。この例の中のパケット3960は、イーサネットヘッダー3962と、IPヘッダー3964と、送信元IPアドレス3966と、宛先IPアドレス3968と、TCPヘッダー3970と、送信元TCPポートアドレス3972と、宛先TCPポートアドレス3974と、ペイロード3976と、を含んでいる。   FIG. 36 shows an example of how CCB is used during the processing of a TCP session. Semantic processor 3100 (shown in FIG. 23) can be used for any kind of data processing, but here TCP packet 3960 is shown for illustration. Packet 3960 in this example has an Ethernet header 3962, an IP header 3964, a source IP address 3966, a destination IP address 3968, a TCP header 3970, a source TCP port address 3972, and a destination TCP port address 3974. And a payload 3976.

直接実行パーサ3180は、一つまたは複数のSPUに、IPヘッダー3964から送信元IPアドレス及び宛先IPアドレスを得るように指示し、TCPヘッダー3970から送信元TCPポートアドレス及び宛先TCPポートアドレスを得るように指示する。これらのアドレスは、入力バッファ3140(図23に示している)内に配置されてもよい。   The direct execution parser 3180 instructs one or more SPUs to obtain the source IP address and destination IP address from the IP header 3964, and obtains the source TCP port address and destination TCP port address from the TCP header 3970. To instruct. These addresses may be located in the input buffer 3140 (shown in FIG. 23).

SPU 3410は、4つのアドレス値3966と、3968と、3972と、3974と、をAMCD 3430内のCCB検索テーブル3978へ送る。この検索テーブル3978は、送信元IPアドレスフィールド3980と、宛先IPアドレスフィールド3982と、送信元TCPポートアドレスフィールド3984と、宛先TCPポートアドレス3986と、の配列(array)を含んでいる。各アドレスの特有な組み合わせは、関連したCCBタグ3979を持つ。   The SPU 3410 sends the four address values 3966, 3968, 3972, and 3974 to the CCB search table 3978 in the AMCD 3430. The search table 3978 includes an array of a source IP address field 3980, a destination IP address field 3882, a source TCP port address field 3984, and a destination TCP port address 3986. Each unique combination of addresses has an associated CCB tag 3979.

AMCD 3430は、4つのアドレス値3966と、3968と、3972と、3974と、をCCB検索テーブル3978内の4つの入力(entry)と一致させようと試みる。一致がない場合、SPU 3410は、新しいCCBタグ3979をパケット3960に関連したTCPセッションに対して割り当てる。そして、この4つのアドレス値はテーブル3978へ書き込まれる。一致がある場合、AMCD 3430は、一致しているアドレスの組み合わせに関連するCCBタグ3979を送り返す。   The AMCD 3430 attempts to match the four address values 3966, 3968, 3972, and 3974 with the four entries in the CCB lookup table 3978. If there is no match, SPU 3410 assigns a new CCB tag 3979 for the TCP session associated with packet 3960. These four address values are written into the table 3978. If there is a match, AMCD 3430 sends back a CCB tag 3979 associated with the matching address combination.

CCBタグ3979が送り返される場合、SPU 3410は、パケット3960の次の処理のために送り返されたCCBタグ3979を使用する。例えば、SPU 3410は、特定のヘッダー情報をこのパケット3960からCCBキャッシュ3450内に配置されたCCBへロードしてもよい。加えて、SPU 3410は、ペイロードデータ3976をパケット3960からストリーミングキャッシュ3470(図30に示している)へ送ってもよい。   If CCB tag 3979 is sent back, SPU 3410 uses CCB tag 3979 sent back for the next processing of packet 3960. For example, the SPU 3410 may load specific header information from this packet 3960 into a CCB located in the CCB cache 3450. In addition, SPU 3410 may send payload data 3976 from packet 3960 to streaming cache 3470 (shown in FIG. 30).

図37は、CCB 3990に保持されることがある制御情報を数例示している。CCB 3990は、セッションID 3994とともに(along with)CCBタグ3992を保持してもよい。セッションID 3994は、TCPセッションに関する送信元及び宛先アドレスを含んでもよい。CCB 3990はまた、外部メモリ3791内のパケットペイロードデータを含む記憶場所を識別する、リンクされたリストポインターを保持してもよい。CCB 3990はまた、TCPシーケンス番号3998及び受信確認番号4000を保持してもよい。CCB 3990は、TCPセッションを処理するのに必要とされるかもしれない他のなんらかのパラメーターも保持してよい。例えば、CCB 3990は、受信ウィンドウフィールド4002と、送信ウィンドウフィールド4004と、タイマーフィールド4006と、を保持してもよい。   FIG. 37 illustrates several examples of control information that may be held in the CCB 3990. CCB 3990 may hold a CCB tag 3992 along with session ID 3994. Session ID 3994 may include a source and destination address for the TCP session. CCB 3990 may also maintain a linked list pointer that identifies a storage location containing packet payload data in external memory 3791. CCB 3990 may also hold TCP sequence number 3998 and acknowledgment number 4000. CCB 3990 may also hold any other parameters that may be needed to process a TCP session. For example, the CCB 3990 may hold a reception window field 4002, a transmission window field 4004, and a timer field 4006.

すべてのTCP制御フィールドは、関連した同一のCCB 3990内に配置される。これにより、SPU 3410は、同一のTCPセッションに関連する、CCBキャッシュ3450内の同一のCCBバッファ3940からのすべてのフィールドにすばやくアクセスすることができる。さらに、CCBキャッシュ3450はソフトウェアにより制御されるので、すべての必要とされる処理がすべての異なるSPU 3410により完了されるまで、SPU 3410はCCB 3990をCCBキャッシュ3450内に保持することができる。   All TCP control fields are placed in the same associated CCB 3990. This allows the SPU 3410 to quickly access all fields from the same CCB buffer 3940 in the CCB cache 3450 that are associated with the same TCP session. Further, since the CCB cache 3450 is controlled by software, the SPU 3410 can keep the CCB 3990 in the CCB cache 3450 until all required processing is completed by all the different SPUs 3410.

異なるOSIレイヤーに関連するCCB 3990があってもよい。例えば、一部のCCB 3990がSCSIセッションに関連し、それに割り当てられ、他のCCB 3990がSCSIセッション内のTCPセッションに関連し、それに割り当てられてもよい。   There may be CCB 3990 associated with different OSI layers. For example, some CCB 3990 may be associated with and assigned to a SCSI session and other CCB 3990 may be associated with and assigned to a TCP session within a SCSI session.

図38は、いつSPU 3410がバッファ3940内のCCBコンテンツを処理し終わるのかと、いつバッファ3940が利用可能になりその他のSPUによるアクセスに対し開放されるのかと、を表すためにフラグ4112がどのようにCCBキャッシュ3450内で使用されているのかを示している。   Figure 38 shows which flag 4112 indicates when SPU 3410 has finished processing CCB content in buffer 3940 and when buffer 3940 is available and freed for access by other SPUs. Shows how it is used in the CCB cache 3450.

IPパケット4100は、処理システム3100(図23に示している)により受信される。このIPパケット4100は、IPヘッダー4102と、TCPヘッダー4104と、ISCSIヘッダー4106と、を含むヘッダーセクションを有している。このIPパケット4100はまた、パケットデータを含むペイロード4108を有している。パーサ3180(図23に示している)は、異なるSPU 3410に、異なるIPヘッダー4102と、TCPヘッダー4104と、ISCSIヘッダー4106と、に含まれる情報及びペイロード4108に含まれるデータを処理するように指示することができる。例えば、第一SPU♯1がIPヘッダー情報4102を処理し、SPU♯2がTCPヘッダー情報4104を処理し、SPU♯3がISCSIヘッダー情報4106を処理する。別のSPU♯Nに、パケットペイロード4108をストリーミングキャッシュ3470内のバッファ4114へロードするように指示してもよい。もちろん、SPU 3410のどの組み合わせも、IPパケット4100内のあらゆるヘッダー情報とペイロード情報を処理することがきる。   The IP packet 4100 is received by the processing system 3100 (shown in FIG. 23). This IP packet 4100 has a header section including an IP header 4102, a TCP header 4104, and an iSCSI header 4106. The IP packet 4100 also has a payload 4108 that includes packet data. Parser 3180 (shown in FIG. 23) directs different SPUs 3410 to process information contained in different IP headers 4102, TCP headers 4104, and iSCSI headers 4106 and data contained in payload 4108. can do. For example, the first SPU # 1 processes the IP header information 4102, the SPU # 2 processes the TCP header information 4104, and the SPU # 3 processes the iSCSI header information 4106. Another SPU # N may be instructed to load the packet payload 4108 into the buffer 4114 in the streaming cache 3470. Of course, any combination of SPUs 3410 can process any header information and payload information in the IP packet 4100.

IPパケット4100内のヘッダー情報のすべては、同じCCB 4110と関連付けされてもよい。SPU1−3は、CCBキャッシュを介して、CCB 4110を格納し、それにアクセスする。CCB 4110はまた、完了ビットマスク4112を備えている。ここでSPU 3410は、それらのタスクが完了した際に、完了マスク4112のビットに対し(意図せずに)未知の他のビットと論理OR演算を行う。例えば、SPU♯1は、CCB 4110内のIPヘッダー4102の処理が完了したときに、完了ビットマスク4112の第一のビットを設定(set)してもよい。SPU♯2は、TCPヘッダー4104の処理が完了したときに、完了ビットマスク4112の第二のビットを設定(set)することができる。完了ビットマスク4112のすべてのビットが設定される場合、これはIPパケット4100のSPUによる処理が完了したことを示す。   All of the header information in the IP packet 4100 may be associated with the same CCB 4110. The SPU1-3 stores and accesses the CCB 4110 via the CCB cache. CCB 4110 also includes a completion bit mask 4112. Here, when these tasks are completed, the SPU 3410 performs a logical OR operation on other bits of the completion mask 4112 (unintentionally) with other unknown bits. For example, SPU # 1 may set the first bit of completion bit mask 4112 when processing of IP header 4102 in CCB 4110 is completed. The SPU # 2 can set the second bit of the completion bit mask 4112 when the processing of the TCP header 4104 is completed. When all bits of the completion bit mask 4112 are set, this indicates that the processing of the IP packet 4100 by the SPU is completed.

こうして、ペイロード4108に対する処理が完了したとき、SPU♯Nは完了マスク4112をチェックする。マスク4112のすべてのビットが設定されている場合、SPU♯Nは、例えば、CCBキャッシュ3450(図31に示している)にCOMMITコマンドを送ってもよい。このCOMMITコマンドは、CCBキャッシュ3450に、CCB 4110を含んでいるキャッシュラインのコンテンツを外部DRAMメモリ3791へ委任するように指示する。   Thus, when processing for the payload 4108 is completed, the SPU # N checks the completion mask 4112. If all bits of mask 4112 are set, SPU # N may send a COMMIT command to CCB cache 3450 (shown in FIG. 31), for example. This COMMIT command instructs the CCB cache 3450 to delegate the contents of the cache line containing the CCB 4110 to the external DRAM memory 3791.

ストリーミングキャッシュ
図39は、ストリーミングキャッシュ3470をより詳しく示している。ある実施例では、このストリーミングキャッシュ3470は、DRAM 3791からのデータの送受信のために使用される複数のバッファ4200を含んでいる。ある例のバッファ4200は、256バイト幅であり、各キャッシュラインは、タグフィールド4202と、VSDフィールド4204と、バッファ4200の64バイト部分と、を含んでいる。このようにして、4つのキャッシュラインは各バッファ4200と関連される。このストリーミングキャッシュ3470は、ある具体例(implementation)では、各SPU 3410に対し二つのバッファ4200を備えている。
Streaming Cache FIG. 39 shows the streaming cache 3470 in more detail. In one embodiment, the streaming cache 3470 includes a plurality of buffers 4200 that are used to send and receive data from the DRAM 3791. An example buffer 4200 is 256 bytes wide, and each cache line includes a tag field 4202, a VSD field 4204, and a 64-byte portion of the buffer 4200. In this way, four cache lines are associated with each buffer 4200. The streaming cache 3470 includes two buffers 4200 for each SPU 3410 in one implementation.

VSDフィールド4204は、キャッシュラインが有効か無効かどうかを示す有効値と、キャッシュラインがまだ更新されている最中にあるかあるいは更新され終わっている(dirty or clean)かどうかを示すステータス値と、読み込み状態か、書き込み状態か、非併合状態か、を示す命令値(direction value)と、を有している。   The VSD field 4204 contains a valid value that indicates whether the cache line is valid or invalid, and a status value that indicates whether the cache line is still being updated or has been updated (dirty or clean). And a command value (direction value) indicating whether the data is in a read state, a write state, or a non-merged state.

ストリーミングキャッシュと特に関係があるのは、キャッシュ制御装置4206により行われる事前取り込みオペレーション(pre-fetch operation)である。物理アドレス4218は、DRAM 3791からの読み込みをリクエストしている複数のSPU 3410のうちの一つから制御装置4206へ送られる。制御装置4206は、物理アドレスをキャッシュラインの一つ(例えばキャッシュライン4210)と関連付ける。ストリーミングキャッシュ制御装置4206は、その後自動的に、バッファ4200内での同じFIFOのバイト順序と関連する三つの他の64バイトキャッシュライン4212、4214、4216に対する事前取り込み(pre-fetch)4217を行う。   Of particular relevance to the streaming cache is a pre-fetch operation performed by the cache controller 4206. The physical address 4218 is sent to the control device 4206 from one of the plurality of SPUs 3410 requesting reading from the DRAM 3791. The controller 4206 associates the physical address with one of the cache lines (eg, the cache line 4210). The streaming cache controller 4206 then automatically pre-fetches 4217 for the three other 64-byte cache lines 4212, 4214, 4216 associated with the same FIFO byte order in the buffer 4200.

事前取り込み(pre-fetch)4217の一つの重要な態様(aspect)は、タグフィールド4202が異なるバッファ4200と関連付けされる方法である。タグフィールド4202は、制御装置4206により、特定のバッファ4200を識別するために使用される。物理アドレス4218のタグフィールド4202に関連する部分は、バッファ4200が連続的な物理アドレス配置を保持することを避けるように制御装置4206により選択される。例えば、制御装置4206は、物理アドレス4218の中頃の順番の複数のビット(middle order bit)4220を使用して、そのビットをタグフィールド4202と関連付けさせてもよい。これにより、三つの連続キャッシュライン4212、4214、4216の事前取り込み(pre-fetch)4217が、キャッシュライン4210と関連したストリーミングデータオペレーションと衝突するのを防止する。   One important aspect of pre-fetch 4217 is how the tag field 4202 is associated with a different buffer 4200. The tag field 4202 is used by the controller 4206 to identify a particular buffer 4200. The portion of physical address 4218 associated with tag field 4202 is selected by controller 4206 to avoid buffer 4200 holding a continuous physical address arrangement. For example, the controller 4206 may use a middle order bit 4220 in the middle of the physical address 4218 to associate that bit with the tag field 4202. This prevents the pre-fetch 4217 of three consecutive cache lines 4212, 4214, 4216 from colliding with streaming data operations associated with the cache line 4210.

例えば、SPU 3410の一つは、ストリーミングキャッシュ3470に対して、関連物理アドレス4218を付けたコマンドを送ってもよい。このコマンドは、パケットデータがDRAMメモリ3791から特定のバッファ4200と関連する第一キャッシュライン4210へロードされることを要求する。このバッファ4200は、物理アドレス4218の一部と関連するタグ値4202を持っている。この後で、制御装置4206は、事前取り込みオペレーション(pre-fetch operation)を行って同じバッファ4200に関連するキャッシュライン4212、4214、4216をもロードするように試みてよい。しかし、バッファ4200は、SPU 3410によりすでに使用されているので、事前取り込み(pre-fetch)4217は、行き詰ることとなる。加えて、事前取り込み(pre-fetch)4217が完了することを許可されると、それらは、バッファ4200内にある、他のSPUコマンドに従ってすでにロードされたキャッシュラインを上書きすることができる。   For example, one of the SPUs 3410 may send a command with an associated physical address 4218 to the streaming cache 3470. This command requests that packet data be loaded from the DRAM memory 3791 into the first cache line 4210 associated with the particular buffer 4200. This buffer 4200 has a tag value 4202 associated with a part of the physical address 4218. Thereafter, the controller 4206 may attempt to perform a pre-fetch operation to load the cache lines 4212, 4214, 4216 associated with the same buffer 4200 as well. However, because the buffer 4200 is already in use by the SPU 3410, the pre-fetch 4217 will get stuck. In addition, once pre-fetch 4217 is allowed to complete, they can overwrite cache lines already loaded according to other SPU commands in buffer 4200.

物理アドレス4218の中頃の順番の複数のビット(middle order bit)4220からタグ値4202を得ることで、連続した256バイトの各物理アドレス限界は、異なるメモリバッファ4200内に記憶(locate)されることとなる。これにより、事前取り込みオペレーション(pre-fetch operation)中のオペレーション同士の衝突を防止する。   By obtaining the tag value 4202 from the middle order bit 4220 in the middle of the physical address 4218, each physical address limit of 256 consecutive bytes is stored in a different memory buffer 4200. It becomes. This prevents collisions between operations during a pre-fetch operation.

AMCD
図40は、図28のAMCD 3430の一例としての実施例の機能ブロック図である。SPUクラスター4012はAMCD 3430と直接通信する一方、ARM 4014はSPUクラスター4012におけるSPU 3710を介してAMCD 3430と通信することができる。AMCD 3430はSPU 3410に対してメモリ検索機能(memory lookup facility)を提供する。一つの例では、SPU 3410は、例えば外部DRAM 3791(図28参照)のようなメモリ内のどこに以前保存されたエントリーが保存されているかを判定する。AMCD 3430における検索機能は、ネットワークシステムのどこかのデータが保存されている場所を検索することができるのであって、外部DRAM 3791に限定されるものではない。
AMCD
FIG. 40 is a functional block diagram of an example of the AMCD 3430 in FIG. SPU cluster 4012 communicates directly with AMCD 3430, while ARM 4014 can communicate with AMCD 3430 via SPU 3710 in SPU cluster 4012. The AMCD 3430 provides a memory lookup facility for the SPU 3410. In one example, SPU 3410 determines where a previously saved entry is stored in memory, such as external DRAM 3791 (see FIG. 28). The search function in the AMCD 3430 can search a location where some data in the network system is stored, and is not limited to the external DRAM 3791.

このシステムが非学習モード(non-learning mode)のときは、SPU 3410はそれ自身のメモリマッピングのテーブルを保持し、エントリーを加え、削除しかつ修正することによりそのテーブルを管理する。このシステムが学習モード(learning mode)のときは、SPU 3410は、エントリーを加えながらTCAMメモリをサーチせよというコマンドあるいはエントリーを削除しながらTCAMメモリをサーチせよというコマンドを実行することによって、テーブルを保持する。いずれのモードにおいても、キーとなる値(以下、「キー値」とする)がこれらの異なるタイプのサーチのそれぞれを行うにあたってSPU 3410によって用いられる。   When this system is in non-learning mode, SPU 3410 maintains its own memory mapping table and manages it by adding, deleting and modifying entries. When the system is in learning mode, the SPU 3410 maintains the table by executing a command to search TCAM memory while adding entries or a command to search TCAM memory while deleting entries. To do. In either mode, key values (hereinafter “key values”) are used by the SPU 3410 to perform each of these different types of searches.

図40のAMCD 3430は、検索インターフェイス(lookup interface)のセット(LUIF)4062を有している。一実施例では、AMCD 3430に8個のLUIFがある。LUIFの一例の詳細が図示されており、64ビットのレジスタ4066のセットを含んでいる。これらのレジスタ4066は、データ用の保存場所を提供するとともにメモリ検索を実行せよとのコマンドを提供する。また、検索結果もこれらのレジスタ4066を介して戻される。一実施例では、検索コマンド用の1個の64ビットレジスタと、データ保存用の7個までの64ビットレジスタを備えている。必ずしもすべてのレジスタが使用される必要はない。本発明のいくつかの実施例では、SPUクラスター4012とLUIF 4062の間の通信インターフェイスは64ビット幅であり、そのためLUIF 4062が複数の64ビットレジスタを含むのに好都合となっている。このコマンドの構造の一例が図41に示されており、その内容については以下で説明する。   The AMCD 3430 in FIG. 40 has a set of lookup interfaces (LUIF) 4062. In one embodiment, AMCD 3430 has 8 LUIFs. Details of an example LUIF are shown and include a set of 64-bit registers 4066. These registers 4066 provide a storage location for data and a command to perform a memory search. Search results are also returned via these registers 4066. One embodiment includes one 64-bit register for search commands and up to seven 64-bit registers for data storage. Not all registers need be used. In some embodiments of the present invention, the communication interface between SPU cluster 4012 and LUIF 4062 is 64 bits wide, which makes it convenient for LUIF 4062 to include multiple 64-bit registers. An example of the structure of this command is shown in FIG. 41, and the contents will be described below.

設計されたシステムには有限数のLUIF 4062があり、しかもこれらのLUIFは一度に1個以上のSPU 3410によってアクセスされることができないので、フリーのLUIFをSPU 3410に割り当てる機構が設けられている。フリーリスト4050はLUIF 4062の使用方法を管理する。SPU 3410がLUIF 4062にアクセスしたい場合、当該SPUがフリーリスト4050を読み、どのLUIF 4062が使用中かを調べる。フリーリスト4050を読んだ後、次の利用可能なフリーなLUIF 4062のアドレスが当該LUIF 4062が使用することができることを示す値とともに戻される。当該LUIF 4062についての戻された値が有効な場合には、SPU 3410は当該LUIFの制御を安全に行うことができる。次いで、第1のSPU 3410がLUIFを解放するまで当該特定のLUIF 4062は他のSPU 3410によって使われることができないというエントリーがフリーリスト4050になされる。この第1のSPU 3410がサーチを終えかつ戻ってきたサーチ結果を得た後、SPUは使用されたLUIFの識別子をフリーリスト4050に載せ、そして当該LUIFが再び他のSPU 3410による使用に対して利用可能な状態となる。フリーリスト4050にフリーなLUIFが無い場合、リクエストされているSPU 3410は、フリーなLUIFが無いことを知らされ、SPU 3410はフリーなLUIF 4062を得るために後で再びトライすることを強制させられる。また、フリーリスト4050は、SPUs 3410に処理すべき他のSPUリクエストを待ちながらインデックスのロードを開始させることを可能にせしめるパイプライニング機能も提供する。   The designed system has a finite number of LUIFs 4062, and since these LUIFs cannot be accessed by more than one SPU 3410 at a time, a mechanism is provided to allocate free LUIFs to the SPU 3410. . The free list 4050 manages the usage of LUIF 4062. If the SPU 3410 wants to access the LUIF 4062, the SPU reads the free list 4050 to see which LUIF 4062 is in use. After reading the free list 4050, the address of the next available free LUIF 4062 is returned with a value indicating that the LUIF 4062 can be used. If the returned value for the LUIF 4062 is valid, the SPU 3410 can safely control the LUIF. An entry is then made to the free list 4050 that the particular LUIF 4062 cannot be used by another SPU 3410 until the first SPU 3410 releases the LUIF. After this first SPU 3410 has finished searching and returned search results, the SPU places the identifier of the used LUIF on the free list 4050, and the LUIF is again for use by other SPU 3410s. It becomes available. If there is no free LUIF on the free list 4050, the requested SPU 3410 is informed that there is no free LUIF and the SPU 3410 is forced to try again later to get a free LUIF 4062 . The free list 4050 also provides a pipelining function that allows the SPUs 3410 to start index loading while waiting for other SPU requests to be processed.

選択されたLUIFは、以下に記載するように、アービター(arbiter) 4068に検索コマンドとデータを送る。このアービター4068は、どの特定なLUIF 4062が特定のTCAM制御装置にアクセスするかを選択する。本実施例では、外部TCAM制御装置1072のほかに内蔵(内部)TCAM制御装置4076がある。外部TCAM制御装置4072は他の外部TCAM 4082に接続されており、またその外部TCAM 4082を介して外部SRAM 4096にも接続されている。同様に、内蔵TCAM制御装置4076は、内蔵TCAM 4096に接続されており、またその内蔵TCAM 4096を介して内蔵SRAM 4086にも接続されている。   The selected LUIF sends a search command and data to an arbiter 4068 as described below. This arbiter 4068 selects which particular LUIF 4062 has access to a particular TCAM controller. In this embodiment, in addition to the external TCAM control device 1072, there is a built-in (internal) TCAM control device 4076. The external TCAM control device 4072 is connected to another external TCAM 4082 and is also connected to the external SRAM 4096 via the external TCAM 4082. Similarly, the built-in TCAM control device 4076 is connected to the built-in TCAM 4096, and is also connected to the built-in SRAM 4086 via the built-in TCAM 4096.

通常、本システムでは、一度に一つのTCAMだけが、すなわち内蔵TCAM 4096または外部TCAM 4082のいずれか一方だけが稼動する。換言すれば、本システムが外部TCAMとSRAM 4092を備えていると、AMCD 3430がこれらの外部メモリと通信する。同様に、システムが外部TCAM及びSRAM 4092を備えていない場合、AMCD 3430が内蔵TCAM 4096と内蔵SRAM 4086とだけ通信する。以下に述べるように、外部メモリがあるかどうかによって、一つの制御装置4076または4072だけが使用される。AMCD 3430によって使用されていない特定の制御装置4072または4076は、セットアップの過程で“turned off”であるとされる。一実施例では、システム初期化の際に、外部TCAM 4082があるかかどうかを示すセットアップコマンドがAMCD 3430に送られる。外部TCAM 4082がある場合、内蔵TCAM制御装置4076は“turned off”となり、外部TCAM 制御装置4072が使用される。これに対し、外部TCAM 4082がない場合、外部TCAM制御装置4072は“turned off”となり、内蔵TCAM 制御装置4076が使用される。簡単にするために、TCAM制御装置4076か4072のいずれか一方のTCAM制御装置だけが使用されることが好ましいが、AMCD 3430は、両方のTCAM制御装置4076及び4072を使用して実行することができるようになっている。   Normally, only one TCAM at a time operates in this system, ie either the built-in TCAM 4096 or the external TCAM 4082. In other words, if the system includes an external TCAM and SRAM 4092, the AMCD 3430 communicates with these external memories. Similarly, if the system does not have an external TCAM and SRAM 4092, the AMCD 3430 communicates only with the built-in TCAM 4096 and built-in SRAM 4086. As will be described below, only one controller 4076 or 4072 is used depending on whether there is external memory. The particular controller 4072 or 4076 that is not being used by the AMCD 3430 is said to be “turned off” during the setup process. In one embodiment, during system initialization, a setup command is sent to AMCD 3430 indicating whether there is an external TCAM 4082. When there is an external TCAM 4082, the built-in TCAM control device 4076 is “turned off” and the external TCAM control device 4072 is used. On the other hand, when there is no external TCAM 4082, the external TCAM control device 4072 is “turned off” and the built-in TCAM control device 4076 is used. For simplicity, it is preferred that only one of the TCAM controllers 4076 or 4072 is used, but AMCD 3430 can be run using both TCAM controllers 4076 and 4072. It can be done.

実施例の一例では、内蔵TCAM 4096は512個のエントリーを含んでおり、SRAM 4086も同様である。他の実施例では、外部TCMA 4082は、外部SRAM 4092におけるエントリーの数と一致する64k〜256kのエントリーを含んでいる(一つのエントリーは72ビットであり、多数のエントリーが一緒に連動して72ビットより広いサーチ範囲を作り出す)。通常、SRAM 4086, 4092は、20ビット幅であり、一方TCMA 4082、4086はそれらよりも大分広い。内臓TCAM 4906は、例えば、164ビット幅とすることできるが、その一方、外部TCAM 4082は、例えば、72〜448ビット幅の範囲にある。   In one example embodiment, the built-in TCAM 4096 includes 512 entries, as does the SRAM 4086. In another embodiment, the external TCMA 4082 includes 64k-256k entries that match the number of entries in the external SRAM 4092 (one entry is 72 bits, and multiple entries are linked together 72 Produces a wider search range than bits). Normally, SRAM 4086 and 4092 are 20 bits wide, while TCMA 4082 and 4086 are much wider than them. The built-in TCAM 4906 can be 164 bits wide, for example, while the external TCAM 4082 is, for example, in the range of 72-448 bits wide.

SPU 3710が検索を実行すると、前述したように、パケットデータからキーを作成する。SPU 3410は、LUIFs 4062の内の一つリザーブし、次いでそのLUIF 4062のレジスタ4066にコマンド(CMD)及びデータをロードする。コマンド及びデータがロードされると、TCAM 4096または4082の内の一方でサーチを開始する。レジスタ4066からのコマンドはアービター4068に送られ、次いでそのデータを適したTCAM 4096,4082に送る。例えば、外部TCAM 4082があり、それが使用中であると仮定する。TCAMコマンドに対して、SPU 3410によって送られたデータが外部TCAM制御装置4072に提示され、そして当該制御装置4072がそのデータを外部TCAM 4082に提示する。外部TCAM 4082がキーデータの一致を見つけると、対応するデータが外部SRAM 4092から検索される。いくつかの実施例では、SRAM 4092は、TCAMに保存されたキー値によってインデックス化された所望のデータを含むメモリの記憶場所に対するポインターを格納している。このSRAM 4092からのポインターは、元のリクエストしたSPU 3410によって用いられた元のLUIF 40062のレジスタ4066を介して、リクエストしているSPU 3410に戻される。LUIFs 4062は、このようにして、DRAM 3791あるいはシステムのどこかにあるメモリ上で、サーチ、書き込み、読み出し、あるいは標準メンテナンス作業に用いることができる。   When the SPU 3710 performs a search, a key is created from the packet data as described above. The SPU 3410 reserves one of the LUIFs 4062 and then loads the command (CMD) and data into the register 4066 of the LUIF 4062. When commands and data are loaded, the search begins in either TCAM 4096 or 4082. The command from register 4066 is sent to arbiter 4068 and then the data is sent to the appropriate TCAM 4096,4082. For example, assume there is an external TCAM 4082 and it is in use. In response to a TCAM command, the data sent by the SPU 3410 is presented to the external TCAM controller 4072 and the controller 4072 presents the data to the external TCAM 4082. When the external TCAM 4082 finds a key data match, the corresponding data is retrieved from the external SRAM 4092. In some embodiments, SRAM 4092 stores a pointer to a memory location that contains the desired data indexed by the key value stored in the TCAM. The pointer from this SRAM 4092 is returned to the requesting SPU 3410 via the register 4066 of the original LUIF 40062 used by the original requesting SPU 3410. LUIFs 4062 can thus be used for searching, writing, reading, or standard maintenance operations on DRAM 3791 or memory somewhere in the system.

これらの方法を用いることによって、TCAM 4082または4096は、CCB DRAM 3791B(図30)において高速検索に用いられる。また、TCAM 4082または4096は、非常に多くのセッション数が同時にIPv6用のCCBsに対して検索される必要があるアプリケーションに用いることもできる。さらに、TCAM 4082または4096は、異なるIPセッションに対するポートアドレスを検索する必要がある静的経路テーブル(static route table)を実施するのにも用いることができる。   By using these methods, TCAM 4082 or 4096 is used for high speed search in CCB DRAM 3791B (FIG. 30). TCAM 4082 or 4096 can also be used for applications where a very large number of sessions need to be searched for CCBs for IPv6 simultaneously. Further, TCAM 4082 or 4096 can also be used to implement a static route table that needs to look up port addresses for different IP sessions.

コンフィグレーションレジスターテーブル(configuration register table)4040のセットがメモリ検索を行うにあたってSPU 3410によって送られたキー値と関連して用いられる。一実施例では、16のテーブルエントリーがあり、各テーブルが0000〜1111の4ビットインディケータによってインデックス付けされることができる。例えば、コンフィグレーションテーブル4040に保存されているデータは、リクエストされている検索におけるキーのサイズを含むことができる。64, 72, 128, 144, 164, 192, 256, 288, 320, 384または448ビットのようないろいろなサイズのキーを用いることができる。コンフィグレーションテーブル4040には、特別なキーのサイズのデータ(キーが掛けられたデータがサーチされる場合)や他の種々のデータが保存されている。図41に示すように、テーブル識別子番号がビットロケーション19:16の位置に有り、コンフィグレーションテーブル4040においてどの値が用いられるかを示している。   A set of configuration register table 4040 is used in conjunction with the key value sent by SPU 3410 in performing a memory search. In one embodiment, there are 16 table entries, and each table can be indexed by 0000-1111 4-bit indicators. For example, the data stored in the configuration table 4040 can include the size of the key in the requested search. Various size keys such as 64, 72, 128, 144, 164, 192, 256, 288, 320, 384 or 448 bits can be used. The configuration table 4040 stores data of a special key size (when the keyed data is searched) and other various data. As shown in FIG. 41, the table identifier number is at the position of bit location 19:16, which indicates which value is used in the configuration table 4040.

図42は、アービター4068の一例を示している。アービター4068は、各LUIF 4062に接続されている。また、アービター4068は、内蔵TCAM制御装置4076及び外部TCAM制御装置4072の両方に接続されているセレクトMUX 4067にも接続されている。前述したように、本発明のいくつかの実施例では、TCAM制御装置4076、4072のいずれか一方だけが一度に稼動し、当該制御装置が起動時にセレクタMUX 4067に送られる信号により制御される。この実施例では、アービター4068は、その出力信号が内蔵TCAM制御装置4076及び外部TCAM制御装置4072のいずれに送られたか区別していない。その代わりに、アービター4086は、単に、出力信号をセレクトMUX 4067に送るだけで、セレクトMUX 4067が該MUXに入力されたセットアップ値の状態に基づいて検索リクエストを適したTCAM制御装置4076または4072にルーティングして送るようになっている。   FIG. 42 shows an example of the arbiter 4068. Arbiter 4068 is connected to each LUIF 4062. The arbiter 4068 is also connected to a select MUX 4067 connected to both the built-in TCAM control device 4076 and the external TCAM control device 4072. As described above, in some embodiments of the present invention, only one of the TCAM control devices 4076 and 4072 operates at a time, and the control device is controlled by a signal sent to the selector MUX 4067 at startup. In this embodiment, the arbiter 4068 does not distinguish whether the output signal is sent to the built-in TCAM controller 4076 or the external TCAM controller 4072. Instead, the arbiter 4086 simply sends an output signal to the select MUX 4067 and the select MUX 4067 directs the search request to the appropriate TCAM controller 4076 or 4072 based on the state of the setup value input to the MUX. It is supposed to route and send.

アービター4068の機能は、図42において符号LUIF-1〜LUIF-8で示されているLUIFs 4062のどれかを選択することであり、選択されたLUIF 4062が選択されたTCAM制御装置4076または4072によって次に使用されることになる。このアービター4068は、その最も単純化された形態では、総当り式アービター(round-robin arbiter)として実施することができる。より知的なシステムでは、アービター4068は、以下に記載するように、過去の経緯を用いて、どのLUIF 4062が次に選択されるべきかを表すプライオリティ値を付与する。   The function of the arbiter 4068 is to select one of the LUIFs 4062 indicated by the symbols LUIF-1 to LUIF-8 in FIG. 42, and the selected LUIF 4062 is selected by the selected TCAM controller 4076 or 4072. It will be used next. This arbiter 4068, in its simplest form, can be implemented as a round-robin arbiter. In a more intelligent system, the arbiter 4068 uses the past history to give a priority value that indicates which LUIF 4062 should be selected next, as described below.

すなわち、このより知的なアービター4068では、プライオリティシステムがどのLUIF 4062が最も直近に使用されたか示すとともに、この内容を次の検索作業でどのLUIF 4062を選択すべきかの決定のためのファクターにするようになっている。図43は、知的アービターの一例における調停(arbitration)の例を示している。時間Aでは、各プライオリティ値がすでに“0”に初期化されており、LUIF-3及びLUIF-7がオペレーション(作業)をペンディング状態としている。アービター4068は、一度に一つのLUIF 4062だけを選択するので、LUIF-3が調停を介して選択される。これは、オペレーションがペンディング中の他のLUIF (LUIF-7)も同じプライオリティ(この場合は“0”)を有しているためである。一旦、LUIF-3が選ばれると。そのプライオリティは“1”に設定される。時間Bでは、LUIF-3はペンディング中の新たなオペレーションを有しているのに対し、LUIF-7は依然としてまだ使われていないオペレーションを有している。この場合、アービター4068は、LUIF-7がLUIF-3よりも高いプライオリティを有しているので、LUIF-7を選択する。これは、すべてのLUIFsのそれぞれが均等に使われることを確実にするとともに、特定の一つのLUIFだけが検索時間を独占しないこと確実にする。   That is, in this more intelligent arbiter 4068, the priority system indicates which LUIF 4062 was most recently used and makes this content a factor for determining which LUIF 4062 to select in the next search operation. It is like that. FIG. 43 shows an example of arbitration in an example of an intelligent arbiter. At time A, each priority value is already initialized to “0”, and LUIF-3 and LUIF-7 are put in an operation (work) pending state. Arbiter 4068 selects only one LUIF 4062 at a time, so LUIF-3 is selected via arbitration. This is because other LUIFs (LUIF-7) whose operations are pending have the same priority (in this case, “0”). Once LUIF-3 is chosen. The priority is set to “1”. At time B, LUIF-3 has a new operation pending, while LUIF-7 still has an operation that is not yet used. In this case, the arbiter 4068 selects LUIF-7 because LUIF-7 has a higher priority than LUIF-3. This ensures that each of all LUIFs is used equally and ensures that only one particular LUIF does not monopolize the search time.

時間Cでは、LUIF-1及びLUIF-3がペンディング中のオペレーションを有しており、アービター4068は、LUIF-1を選択する。これは、LUIF-3におけるオペレーションがより長くペンディング状態にあるが、LUIF-1がより高いプライオリティを有しているためである。最後の、時間Dにおいては、LUIF-3だけがペンディング中のオペレーションを有しているので、アービター4068はLUIF-3を選択肢、そのプライオリティを“2”にする。   At time C, LUIF-1 and LUIF-3 have pending operations, and arbiter 4068 selects LUIF-1. This is because the operation in LUIF-3 has been pending for a longer time, but LUIF-1 has a higher priority. Finally, at time D, only LUIF-3 has a pending operation, so arbiter 4068 selects LUIF-3 and sets its priority to “2”.

このようにして、アービター4068は知的な総当り式調停(intelligent round-robin arbitration)を実施する。換言すれば、一旦特定のLUIFが選択されると、当該LUIFが「ラインの端(end of the line)」まで移動し、ペンディング中のオペレーションを有している他のすべてのLUIFsが前記特定のLUIFが再び選択される前に使用されるようになっている。この方法は、各LUIF 4062がその検索機能を用いる時間を均等化させるとともに、特定の一つのLUIF 4062だけが検索帯域のすべてを独占しないようにすることを確実にする。   In this way, the arbiter 4068 performs intelligent round-robin arbitration. In other words, once a particular LUIF is selected, the LUIF moves to “end of the line” and all other LUIFs with pending operations are Used before LUIF is selected again. This method equalizes the time each LUIF 4062 uses its search function and ensures that only one particular LUIF 4062 does not monopolize all of the search bandwidth.

上述したシステムは、前記オペレーションのすべてあるいはいくつかを行う専用のプロセッサシステムや、マイクロコントローラや、プログラマブル論理装置を使用することができる。また、上述したオペレーションのいくつかは、ソフトウェアで実行してもよく、またその他のオペレーションはハードウェアで実行してもよい。   The system described above can use a dedicated processor system, microcontroller, or programmable logic device that performs all or some of the above operations. Also, some of the operations described above may be performed in software, and other operations may be performed in hardware.

当業者であれば、本発明の範囲内で他の機能的なパーティションが可能であることを理解するであろう。また、どんな機能が共通の集積回路で実行されるか実行されないかは、アプリケーションによって変わることに留意されたい。   One skilled in the art will appreciate that other functional partitions are possible within the scope of the present invention. It should also be noted that what functions are performed or not performed on a common integrated circuit depends on the application.

最後に、本明細書では、いくつかの箇所で、「ある実施例では・・・」、「一つの実施例では・・・」、「他の実施例では・・・」、「いくつかの実施例では」といった表現があるが、これは必ずしも特定な同じ実施例を意味しているものではなく、またそこで記載された特徴が特定の一つの実施例だけに適用されることを意味しているわけではないことに留意されたい。   Finally, in this specification, in several places, “in one embodiment ...”, “in one embodiment ...”, “in other embodiments ...”, “some In the embodiment, it is not necessarily meant to mean the same specific embodiment, but also means that the features described there apply to only one particular embodiment. Note that it is not.

典型的フォン・ノイマンマシンストレージサーバーのブロック図を示している。1 shows a block diagram of a typical von Neumann machine storage server. 本発明の実施例に係る一般的なストレージサーバーのブロック図を示している。1 shows a block diagram of a general storage server according to an embodiment of the present invention. FIG. 本発明の実施例に係るストレージサーバーのより詳細なブロック図を示している。FIG. 2 shows a more detailed block diagram of a storage server according to an embodiment of the present invention. イーサネット(Ethernet)/IP/TCP/CIFSストレージサーバーのクライアントのリクエストフレームの一般的な構造を示している。Fig. 2 illustrates a general structure of a client request frame of an Ethernet / IP / TCP / CIFS storage server. 図4に示しているCIFSフレーム構造のストレージメッセージブロック部分の詳細を示している。5 shows details of the storage message block portion of the CIFS frame structure shown in FIG. 前述した本発明の実施例に利用可能なセマンティックプロセッサの具体例(implementation)をブロック図で示している。An implementation of a semantic processor that can be used in the above-described embodiment of the present invention is shown in a block diagram. 複数の物理的データ記憶装置を備えたストレージサーバー実施例のブロック図を示している。FIG. 3 shows a block diagram of an embodiment of a storage server with multiple physical data storage devices. データ記憶装置のプリント基板上で実施することができる本発明の実施例のブロック図を示している。FIG. 2 shows a block diagram of an embodiment of the present invention that can be implemented on a printed circuit board of a data storage device. ディスクのドライブエレクトロニクスと直接通信するセマンティックプロセッサを有している実施例(implementation)のブロック図を示している。FIG. 4 shows a block diagram of an implementation having a semantic processor in direct communication with disk drive electronics. 本発明の実施例に係る転換ストレージサーバーのブロック図を示している。FIG. 3 shows a block diagram of a conversion storage server according to an embodiment of the present invention. 複数の物理的データ記憶装置が、外部ストレージインターフェイスを介してセマンティックプロセッサによりアクセスされることを特徴とするシステムの実施例を示している。1 illustrates an embodiment of a system characterized in that multiple physical data storage devices are accessed by a semantic processor via an external storage interface. 複数の物理的データ記憶装置がポート拡張器を介してセマンティックプロセッサと連結されることを特徴とするシステムの実施例を示している。1 illustrates an embodiment of a system characterized in that a plurality of physical data storage devices are coupled to a semantic processor via a port expander. 本発明の実施例に利用可能なさらに別のセマンティックプロセッサの実施例を示している。Fig. 6 illustrates yet another semantic processor embodiment that can be used in embodiments of the present invention. 本発明の実施例に利用可能なセマンティックプロセッサをブロック図で示している。FIG. 2 illustrates in block diagram form a semantic processor that can be used in embodiments of the present invention. 本発明の実施例に利用可能である一つの実行可能性のあるパーサテーブルの構成を示している。Fig. 4 illustrates the configuration of one feasible parser table that can be used in an embodiment of the present invention. 本発明の実施例に利用可能である一つの実行可能性のある生成規則テーブルの構成を示している。3 shows the configuration of one feasible generation rule table that can be used in an embodiment of the present invention. 本発明の実施例に利用可能な入力バッファに関する一つの具体例をブロック図で示している。One specific example of an input buffer that can be used in an embodiment of the present invention is shown in a block diagram. 本発明の実施例に利用可能な直接実行パーサ(DXP)に関する一つの具体例をブロック図で示している。One specific example of a direct execution parser (DXP) that can be used in embodiments of the present invention is shown in block diagram form. 図14に示しているセマンティックプロセッサ内でのデータ入力の処理に関するフローチャートの例である。It is an example of the flowchart regarding the process of the data input in the semantic processor shown in FIG. 本発明の実施例に利用可能な別のセマンティックプロセッサの実施例を示している。Fig. 4 illustrates another semantic processor embodiment that can be used in embodiments of the present invention. 本発明の実施例に利用可能なポート入力バッファ(PIB)の実施例をブロック図で示している。An example of a port input buffer (PIB) that can be used in embodiments of the present invention is shown in block diagram form. 本発明の実施例に利用可能な直接実行パーサ(DXP)の別の実施例をブロック図で示している。FIG. 6 illustrates, in block diagram form, another embodiment of a direct execution parser (DXP) that can be used in embodiments of the present invention. 図19に示すセマンティックプロセッサ内でのデータ入力の処理に関するフローチャートの例である。It is an example of the flowchart regarding the process of data input in the semantic processor shown in FIG. 本発明の実施例に利用可能なセマンティックプロセッサをブロック図で示している。FIG. 2 illustrates in block diagram form a semantic processor that can be used in embodiments of the present invention. 図23に示す再循環バッファを備えたセマンティックプロセッサ内での受信したパケットの処理に関するフローチャートである。FIG. 24 is a flowchart relating to processing of a received packet in a semantic processor including the recirculation buffer shown in FIG. 23. 本発明の実施例に利用可能な別のセマンティックプロセッサの実施例をより詳しく示している。Fig. 6 illustrates in more detail another semantic processor embodiment that may be used in embodiments of the present invention. 図25に示しているセマンティックプロセッサ内での受信したフラグメント化されたIPパケットのフローチャートを示している。FIG. 26 shows a flowchart of a received fragmented IP packet within the semantic processor shown in FIG. 図25に示しているセマンティックプロセッサ内で受信した、暗号化されているか、認証されていないか、またはその両方である、パケットのフローチャートを示している。FIG. 26 shows a flowchart of a packet received in the semantic processor shown in FIG. 25 that is encrypted, unauthenticated, or both. 本発明の実施例に利用可能であるさらに別のセマンティックプロセッサの実施例を示している。Fig. 6 illustrates yet another semantic processor embodiment that may be used in embodiments of the present invention. 本発明の実施例に利用可能であるさらに別のセマンティックプロセッサの実施例を示している。Fig. 6 illustrates yet another semantic processor embodiment that may be used in embodiments of the present invention. 図28に示しているセマンティックプロセッサ内のTCPコネクションを介して受信したiSCSIパケットのフローチャートである。FIG. 29 is a flowchart of an iSCSI packet received via a TCP connection in the semantic processor shown in FIG. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail. メモリサブシステムをより詳しく示す図である。FIG. 3 is a diagram illustrating the memory subsystem in more detail.

Claims (14)

データ演算用のクライアントのリクエストを受信するデータグラムインターフェイスと、
少なくとも一つのデータ記憶装置にアクセスするストレージインターフェイスと、
前記少なくとも一つのデータ記憶装置とデータ演算に応じてストレージインターフェイスを介してトランザクションするために、格納された文法に基づいて、受信したクライアントのリクエストを解析する能力を有するセマンティックプロセッサと、を備えるストレージサーバー。
A datagram interface that receives client requests for data operations;
A storage interface for accessing at least one data storage device;
A storage server comprising: a semantic processor having the ability to parse received client requests based on a stored grammar for transaction via the storage interface in response to the at least one data storage device and data operations .
前記セマンティックプロセッサは、前記データグラムインターフェイスにおいて受信したデータグラムからシンボルを解析する直接実行パーサと、前記直接実行パーサによって指示通りにデータ演算を行う複数のセマンティックコード実行エンジンと、を備える請求項1に記載のストレージサーバー。   The said semantic processor is provided with the direct execution parser which analyzes a symbol from the datagram received in the said datagram interface, and several semantic code execution engine which performs a data operation according to the instruction | indication by the said direct execution parser. The listed storage server. 前記セマンティックプロセッサは、前記データグラムインターフェイスにおいて受信したデータグラムからシンボルを解析する直接実行パーサと、前記解析されたデータグラムに対してデータ演算を行うマイクロプロセッサと、を有する請求項1に記載のストレージサーバー。   The storage according to claim 1, wherein the semantic processor comprises a direct execution parser that analyzes symbols from datagrams received at the datagram interface, and a microprocessor that performs data operations on the analyzed datagrams. server. 前記セマンティックプロセッサは、パーサスタックを備え、スタックシンボルに従って前記データグラムインターフェイスにおいて受信したデータグラムからシンボルを解析する直接実行パーサと、前記直接実行パーサによって指示された通りデータ演算を行う少なくとも一つのセマンティックコード実行エンジンと、を備え、前記セマンティックコード実行エンジンは、前記パーサスタックの内容を修正することにより前記直接実行パーサのオペレーションを変更する能力を有している請求項1に記載のストレージサーバー。   The semantic processor comprises a parser stack, a direct execution parser that parses symbols from datagrams received at the datagram interface according to the stack symbols, and at least one semantic code that performs data operations as instructed by the direct execution parser The storage server of claim 1, further comprising an execution engine, wherein the semantic code execution engine has the ability to change the operation of the direct execution parser by modifying the contents of the parser stack. 前記少なくとも一つのデータ記憶装置は、筐体を有するディスクドライブであり、前記データグラムインターフェイス、前記ストレージインターフェイス及び前記セマンティックプロセッサが前記ディスクドライブの筐体内に内蔵されている請求項1に記載のストレージサーバー。   The storage server according to claim 1, wherein the at least one data storage device is a disk drive having a housing, and the datagram interface, the storage interface, and the semantic processor are built in the housing of the disk drive. . 前記ストレージインターフェイスは、二次的なデータグラムインターフェイスであり、前記少なくとも一つのデータ記憶装置は前記二次的なデータグラムインターフェイスを介して遠隔からアクセスされるようになっており、前記ストレージサーバーは、当該ストレージサーバーにより受信したクライアントのリクエストを満たすために、前記少なくとも一つのデータ記憶装置のクライアントとして作動することができるようになっている請求項1に記載のストレージサーバー。   The storage interface is a secondary datagram interface, the at least one data storage device is remotely accessed via the secondary datagram interface, and the storage server includes: The storage server of claim 1, wherein the storage server is operable to act as a client of the at least one data storage device to satisfy a client request received by the storage server. さらに、データ演算用のクライアントのリクエストを受信する第2のデータグラムインターフェイスと、前記セマンティックプロセッサに前記二つのデータグラムからの解析データグラムシンボルの間で切り替えを行わせるパーサソースセレクタと、を備える請求項1に記載のストレージサーバー。   And a second datagram interface that receives a client request for data operation, and a parser source selector that causes the semantic processor to switch between parsed datagram symbols from the two datagrams. Item 4. The storage server according to item 1. さらに、前記格納された文法の少なくとも一部を保持する再構成可能なメモリを備え、当該メモリにより、前記ストレージサーバーが少なくとも二つの異なるストレージサーバープロトコルのセットを有するストレージサーバーとして機能すべく再構成可能になっている請求項1に記載のストレージサーバー。   In addition, a reconfigurable memory that holds at least a portion of the stored grammar is provided so that the storage server can be reconfigured to function as a storage server having at least two different sets of storage server protocols. The storage server according to claim 1. バッファでセマンティック式にデータを解析することによって、デジタルデータの処理を制御するように構成されている直接実行パーサと、
前記直接実行パーサによって指示されたときにデータ演算を行うように構成されているセマンティックプロセッシングユニットと、
前記セマンティックプロセッシングユニットによって指示されたときに前記デジタルデータを処理するように構成されたメモリサブシステムと、備えることを特徴とする装置。
A direct execution parser configured to control the processing of digital data by analyzing the data semantically in a buffer;
A semantic processing unit configured to perform data operations when instructed by the direct execution parser;
An apparatus comprising: a memory subsystem configured to process the digital data when instructed by the semantic processing unit.
前記メモリサブシステムは、メモリと前記セマンティックプロセッシングユニットとの間に接続された複数のメモリキャッシュを含む請求項9に記載の装置。   The apparatus of claim 9, wherein the memory subsystem includes a plurality of memory caches connected between a memory and the semantic processing unit. 前記メモリサブシステムは、前記セマンティックプロセッシングユニットによって指示されたときにデジタルデータに対して暗号化演算を行う暗号化回路を含む請求項9に記載の装置。   The apparatus of claim 9, wherein the memory subsystem includes an encryption circuit that performs an encryption operation on digital data when instructed by the semantic processing unit. 前記メモリサブシステムは、前記セマンティックプロセッシングユニットによって指示されたときに検索機能(look-up functions)を実行する検索エンジンを含む請求項9に記載の装置。   The apparatus of claim 9, wherein the memory subsystem includes a search engine that performs look-up functions when instructed by the semantic processing unit. 前記バッファは、外部ネットワークから前記直接実行パーサによって解析されるデータを受け取るようになっている請求項9に記載の装置。   The apparatus of claim 9, wherein the buffer is adapted to receive data to be analyzed by the direct execution parser from an external network. 前記バッファは、前記セマンティックプロセッシングユニットから前記直接実行パーサによって解析されるデータを受け取るようになっている請求項9に記載の装置。   The apparatus of claim 9, wherein the buffer is adapted to receive data to be analyzed by the direct execution parser from the semantic processing unit.
JP2007513396A 2004-05-11 2005-05-11 Storage server architecture using digital semantic processor Pending JP2007537550A (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/843,727 US7251722B2 (en) 2004-05-11 2004-05-11 Semantic processor storage server architecture
US59073804P 2004-07-22 2004-07-22
US59166304P 2004-07-27 2004-07-27
US59200004P 2004-07-28 2004-07-28
US59197804P 2004-07-28 2004-07-28
PCT/US2005/016763 WO2005111813A2 (en) 2004-05-11 2005-05-11 Semantic processor storage server architecture

Publications (1)

Publication Number Publication Date
JP2007537550A true JP2007537550A (en) 2007-12-20

Family

ID=35394797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007513396A Pending JP2007537550A (en) 2004-05-11 2005-05-11 Storage server architecture using digital semantic processor

Country Status (5)

Country Link
EP (1) EP1761852A2 (en)
JP (1) JP2007537550A (en)
KR (1) KR20070020289A (en)
CA (1) CA2565596A1 (en)
WO (1) WO2005111813A2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288782A1 (en) * 2007-05-18 2008-11-20 Technology Properties Limited Method and Apparatus of Providing Security to an External Attachment Device
CN106899510B (en) * 2015-12-18 2020-04-03 华为技术有限公司 Transmission rate control method and device based on iSCSI protocol
CN110569252B (en) * 2018-05-16 2023-04-07 杭州海康威视数字技术股份有限公司 Data processing system and method

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5916305A (en) * 1996-11-05 1999-06-29 Shomiti Systems, Inc. Pattern recognition in data communications using predictive parsers
US7716364B2 (en) * 2003-06-27 2010-05-11 Broadcom Corporation Internet protocol multicast replication

Also Published As

Publication number Publication date
KR20070020289A (en) 2007-02-20
EP1761852A2 (en) 2007-03-14
WO2005111813A2 (en) 2005-11-24
WO2005111813A3 (en) 2007-05-31
CA2565596A1 (en) 2005-11-24

Similar Documents

Publication Publication Date Title
US7251722B2 (en) Semantic processor storage server architecture
KR100201574B1 (en) Parallel i/o network file server architecture
KR100437146B1 (en) Intelligent network interface device and system for accelerating communication
US7664892B2 (en) Method, system, and program for managing data read operations on network controller with offloading functions
US7415596B2 (en) Parser table/production rule table configuration using CAM and SRAM
US6807581B1 (en) Intelligent network storage interface system
JP5066702B2 (en) Intelligent network storage interface system and device
JP5220974B2 (en) Apparatus and method for acceleration of hardware execution or operating system functions
US9513825B2 (en) Storage system having a channel control function using a plurality of processors
US8099470B2 (en) Remote direct memory access for iSCSI
US7424571B2 (en) Array machine context data memory
US20050281281A1 (en) Port input buffer architecture
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US7404040B2 (en) Packet data placement in a processor cache
US20060004983A1 (en) Method, system, and program for managing memory options for devices
US8621101B1 (en) Intelligent network storage interface device
US20060026377A1 (en) Lookup interface for array machine context data memory
JP2007537550A (en) Storage server architecture using digital semantic processor
US20060047868A1 (en) Method and system for efficiently using buffer space
US7266614B1 (en) Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission
US7451268B2 (en) Arbiter for array machine context data memory
Dalessandro et al. iSER storage target for object-based storage devices
WO2004081712A2 (en) Network processor-based storage controller, compute element and method of using same