CN101128795A - 语义处理器存储服务器架构 - Google Patents
语义处理器存储服务器架构 Download PDFInfo
- Publication number
- CN101128795A CN101128795A CNA2005800227372A CN200580022737A CN101128795A CN 101128795 A CN101128795 A CN 101128795A CN A2005800227372 A CNA2005800227372 A CN A2005800227372A CN 200580022737 A CN200580022737 A CN 200580022737A CN 101128795 A CN101128795 A CN 101128795A
- Authority
- CN
- China
- Prior art keywords
- data
- semantic
- spu
- storage server
- symbol
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/1827—Management specifically adapted to NAS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
存储服务器使用语义处理器来分析和响应客户端的请求。语义处理器中的直接执行分析器按照规定的语法分析输入流,其包括客户端存储服务器的请求。能够操作数据(例如数据移动、数学和逻辑运算)的语义处理器执行引擎执行微代码段以响应来自于直接执行分析器的请求,以便进行客户端所请求的操作。在一些实施例中,尽管语义处理器自身可能只吸取几个瓦特的功率,但作为结果的操作效率使得整个存储服务器分解成一些可放置于媒体装置的印刷电路板上的相当小的集成电路。
Description
有关申请的参考
本申请要求于2004年5月11日提交的第10/843,727号美国实用专利申请,于2004年7月28日提交的第60/591,978号美国临时专利申请,于2004年7月27日提交的第60/591,663号美国临时专利申请,于2004年7月22日提交的第60/590,738号美国临时专利申请,以及于2004年7月28日提交的第60/592,000号美国临时专利申请的优先权。
Somsubhra Sikdarg于2003年1月24日提交的名称为“可重构的语义处理器(Reconfigurable Semantic Processor)”的第10/351,030号正在申请中的美国专利申请,通过引用合并于此。
发明领域
本发明通常涉及存储服务器,更为明确地涉及利用数字语义处理器的存储服务器实现方案。
发明背景
通常,存储服务器是一台联网的计算机,其提供对本文中称之为“客户端”的其他计算机和计算设备的媒体和文件访问。在广域网(WAN)、局域网(LAN)中可以访问该存储服务器,该存储服务器和/或与另一计算设备共享专用的端对端连接。
存储服务器可为几种类型,包括网络连接存储(NAS)服务器、存储区域网络(SAN)服务器、和请求型服务器。
NAS服务器包括目录结构。对NAS服务器的请求通常指定文件路径/文件名和如建立、读、写、添加等的操作。NAS服务器将请求转换成一个或多个磁盘扇区/按块磁盘存取处理,访问该磁盘(或其他存储媒体),并执行所请求的文件级处理。这样的服务器保持和利用目录结构来定位文件开始位置,以及保持和采用文件位置表以在磁盘或其它可写媒体中重构分段文件和定位空闲的扇区。
SAN服务器通常接收对基于磁盘扇区/块处理的直接请求,而且可以不清楚文件系统或数据块之间的关系。虽然块请求与媒体装置中的物理块位置相关,更典型地,SAN服务器支持逻辑块-这样让服务器如在RAID(Redundant Array fo Independent Disks,独立磁盘冗余阵列)方案中使一个物理磁盘驱动器看起来象几个逻辑驱动器,或几个物理磁盘驱动器看起来象一个逻辑驱动器。
请求型服务器通常以特定媒体格式提供对媒体的访问。例如,请求型服务器能提供对音频流或视频流的访问,而无需清楚知道客户端所用的文件路径/文件名称(客户端可以不知道文件名或具有直接访问文件的权限),同时可以从文件读出流媒体以及以流分组的形式将其压缩。
在架构上,大多数存储服务器与通用计算机没有什么不同(除了在一些情况下包括有比通常更多和/或更快的磁盘驱动器和磁盘总线控制器),图1显示了典型存储服务器20的框图。通常为一个或多个微处理器的中央处理单元(CPU)22根据存储的程序指令运行服务器。这种处理器通常以其革新者命名为冯·诺依曼(von Neumann,VN)处理器或计算机,冯·诺依曼提出处理连续指令的执行方式。
CPU22通过前端总线26(FSB)连接至负责将CPU22连接至其它系统元件的存储控制器/集线器24(MCH),所述其它系统元件存储微处理器程序指令和存储、提供和/或用尽数据。MCH24通过内存总线32管理系统内存30。MCH24经由集线器总线42也与PCI(Peripheral ComponentInterconnect,外围元件互连)桥40进行通讯使得在PCI互连装置和内存30或CPU22之间移动数据。
多种不同类型的数据传送/接收装置通过PCI桥40和PCI总线44能够连接到服务器20。作为存储服务器之用,两个必要装置为网络接口卡50(NIC)和媒体控制器,例如ATA(AT嵌入式接口)控制器60。
NIC50使得服务器直接连接到局域网(LAN)或其他网络,光纤信道交换结构,或至客户端或另一提供服务器可视网络装置的其它端到端连接。因此NIC50为服务器提供通讯通道使其从客户端接收数据请求以及响应这些请求。实际网络物理通讯协议由于插入不同的NIC而不同,举例来说,无论采用有线或无线通讯协议,以及将NIC软件装置驱动器加载到CPU22上。
ATA控制器60提供至少一条ATA总线62以连接诸如硬盘、光碟和/或磁带驱动器的媒体装置64。每个ATA总线62使得一个或两个媒体装置64连接到存储服务器20上。一些服务器可采用诸如SATA(串行ATA)控制器或SCSI(Small Computer System,小计算机系统接口)主机适配器的其它控制器。
为了作为存储服务器进行操作,CPU22必须执行不同的软件程序。对于NAS,两种普通的格式为NFS(网络文件系统)和CIFS(普通互联网文件系统);前者协议主要存在于UNIX环境中,而后者协议主要存在于微软操作系统环境中。对于NFS服务器,接下来的软件处理促使应用NFS:NIC50的网络装置驱动器;TCP/IP驱动器;RPC(远程过程调用)和将来自TCP/IP的数据表示为NFS服务器软件的XDR(外部数据表示)驱动器;NFS服务器软件本身;本地文件系统;将NFS服务器软件连接到本地文件系统的VFS(虚拟文件系统)驱动器;数据缓冲软件;和存储控制器/主机适配器的装置驱动器。对于每一次NFS数据处理,CPU22必须为每一个软件实体执行程序,根据所需在它们之间切换语境。为了能充分执行,存储服务器20以相对高的速度和功率进行操作,需要风冷和大功率供给以操作微处理器、芯片集、互联网接口、内存、其他外围设备和冷却风扇。现有技术状态,1Gbps(每秒钟千兆比特)全双工互联网连接,需要大约300瓦功率,占用体积为800立方英寸,没有存储媒体时价值约为1500美元。
一些设备提供商试图构建用户定制的集成电路硬件,明确用来处理NAS请求。这种电路设计成本通常不能在电信协议的流动社会中重新获得,其中构建的用来处理特定协议和存储接口的限制组合的特定复杂电路很快会过时。
发明内容
在许多存储服务器的应用中,现已知道微处理器/串行程序方法是低效率的而且体积庞大。大多数存储服务器的存在用于执行存储服务器功能以响应在NIC所接收的客户端的请求。请求本身采用特定协议格式,而且具有有限数目的请求功能和选项。为响应这些请求,将定义明确的存储系统命令提供给媒体装置,而这些命令的结果用于将特定协议数据报返还给该客户端。
存储服务器可编程性和编码通用性是令人非常想要的特性。相应地,使用大容积处理器和芯片组(诸如英特尔公司Intel Corportion和超微公司Advanced Micro Devices构建的这些芯片组)使可编程性和标准操作系统的应用成为可能,因此降低了成本。不幸的是,在这种操作配置中,通用的基于微处理器系统的灵活性和功率很大程度上没有使用,或低效率地使用。
本发明为存储服务器提供了在通常称为语义处理器的典型实施方式中使用的不同架构。当其处理过程依赖于其“编程”时,这种装置是可配置的,而且优选如VN机器那样可重新配置。如本文中所用的, “语义处理器”包括至少两个元件:根据定义的语法分析输入流的直接执行分析器;和能操纵数据的执行引擎(例如数据移动,数学和逻辑运算)以响应来自于直接执行分析器的请求。
语义处理器的编程不同于VN机所使用的常规机器代码。在VN机中,数据信息包的协议输入参数使用顺序机器指令与所有可能输入进行顺序比较,分支、循环和线程切换效率低下。相反,语义处理器直接响应输入流的语义。换句话说,语义处理器执行的“代码”段直接由输入数据驱动。例如,对于75个左右可能能在信息包中出现的CIFS命令,允许语义处理器加载与以信息包发送的实际CIFS命令相关的语法和微指令所必要的是在如下所描述实施方式中的单个分析循环。
在下列实施方式中所描述的存储服务器应用中,语义处理器能执行现有技术VN处理器、芯片组和连接装置的多个功能,语义处理器接收来自互联网端口或数据报接口的数据报。这些数据报中的一些包括数据操作的客户端请求。语义处理器使用为服务器所支持的服务器协议语法设计的分析器表分析所接收到的数据报的元素。基于所分析的,语义处理器以一个或多个数据存储装置处理响应数据操作。通常,通过在单个或多个执行单元上发布微指令代码段执行数据操作。当执行数据操作时,语义处理器产生响应数据报以发送给客户端。作为结果的操作效率使得整个存储服务器在一些实施方式中分解为一些可安置在媒体装置印刷电路板上的相对小的集成电路,而语义处理器自身可能只吸取几个瓦特的功率。
附图简要说明
参照附图,通过阅读本公开内容能够更好地理解本发明,其中:
图1包含有典型的冯·诺依曼(von Neumann)机存储服务器的结构框图;
图2包含有本发明普通存储服务器实施方式的结构框图;
图3以模块的形式举例说明了本发明更为详细的存储服务器实施方式;
图4表示Ethernet/IP/TCP/CIFS存储服务器客户端请求帧的一般结构;
图5表示图4的CIFS帧结构的存储器消息块部分的细节;
图6以模块的形式举例说明了一种可用于本发明实施方式的语义处理器实现方案;
图7表示具有几个物理数据存储装置的存储服务器实施方式的结构框图;
图8举例说明了能够在数据存储装置的印刷电路板上实现的本发明实施方式的结构框图;
图9表示一种具有与磁盘驱动电子设备直接连接的语义处理器的实现方案的结构框图;
图10表示根据本发明实施方式的转换器-存储服务器的结构框图;
图11举例说明了一种系统实施方式,其中语义处理器通过外部存储器接口来访问多个物理数据存储装置;
图12举例说明了一种系统实施方式,其中多个物理数据存储装置通过端口扩展器与语义处理器相连接;
图13举例说明了另一种可用于本发明实施方式的语义处理器实现方案;
图14以模块的形式举例说明了一种可用于本发明实施方式的语义处理器实现方案;
图15A表示一个可用于本发明实施方式的适当的分析器表格结构;
图15B表示一个可用于本发明实施方式的适当的产生式规则表的组织结构;
图16以模块的形式举例说明了可用于本发明实施方式的一种输入缓冲器的实施方案;
图17以模块的形式举例说明了可用于本发明实施方式的一种直接执行分析器(DXP)的实施方案;
图18包含有在图14的语义处理器中处理数据输入的一种流程图;
图19举例说明了又一种可用于本发明实施方式的语义处理器实现方案;
图20以模块的形式举例说明了可用于本发明实施方式的一种端口输入缓冲器(PIB)的实施方案;
图21以模块的形式举例说明了可用于本发明实施方式的另一种直接执行分析器(DXP)的实施方案;
图22包含有在图19的语义处理器中处理数据输入的一种流程图实例;
图23举例说明了一种可用于本发明实施方式的语义处理器实现方案;
图24包含有在图23的具有再循环缓冲器的语义处理器中处理已接收信息包的流程图;
图25举例说明了另一种可用于本发明实施方式的更为具体的语义处理器实现方案;
图26包含有在图25的语义处理器中接收IP分段信息包的流程图;
图27包含有在图25的语义处理器中接收已加密和/或未经认证的信息包的流程图;以及
图28还举例说明了另一种可用于本发明实施方式的语义处理器实现方案;
图29包含在图28的语义处理器中通过TCP连接来接收iSCSI信息包的流程图;
图30-43更为详细地表示内存子系统。
优选实施例的详细描述
图2举例说明本发明许多实施方式的高级图形表示。存储服务器包括具有数据报接口90和存储器接口110的语义处理器100。该数据报接口90向服务器提供客户端连接,例如,通过所示网络80或经由与客户端的端对端连接。该存储器接口110向语义处理器提供通路为响应客户端请求而以数据存储装置120开始数据处理。数据存储装置可为本地的。另外,该数据存储装置也可与所举例说明的服务器网络连接,例如,如果语义处理器100模拟关于客户端的NAS服务器,而同时又为物理存储使用远程SAN服务器。
图3含有存储服务器200更详细的框图,包括语义分析器100。数据接口90将语义处理器100的缓冲器1 30连接至物理接口装置(PHY)92,例如,以太网的光、电、或射频驱动器/接收器对、光纤通道、801.11x、通用串口总线、Firewire规范、或其他物理层接口。数据报接口将输入数字数据流提供给缓冲器130,并接收来自缓冲器130的输出数字数据流。
在图3中,存储接口110在数据存储装置120和语义处理器100之间作为I/O块总线。在不同的具体实施方式中,这些总线可以是电缆连接(iSCSI、光纤通道、SATA)或印刷电路板总线(SATA),这取决于语义处理器和数据存储装置的配置能力。图3显示了媒体装置硬盘类型的主要元件,例如,磁盘控制器122、驱动电子线路124、和磁盘碟片、马达和读/写头126。
语义处理器100的一种配置在图3的存储服务器中进行了描述。语义处理器100包含直接执行分析器(DXP)140,其控制输入包或缓冲器130所接收的帧(例如输入“流”)的处理。根据当前帧到当前符号的分析,DXP140保留终结和非终结符号的内部分析堆栈。当在分析堆栈顶部的符号为终结符号时,DXP140将输入流报头的数据与终结符号进行比较,并希望匹配以便能够继续。当位于分析栈顶部的符号是非终结符号时,DXP140使用非终结符号和当前输入数据以扩展在堆栈中的语法产生。随着分析的继续,DXP140命令语义代码执行引擎(SEE)150处理输入段,或执行其他操作。
这种具有按照数据所需将任务分配给执行引擎的高级语法分析器的结构既灵活,又对诸如数据报协议的高级构造的输入数据有效。在优选具体实施方式中,语义处理器可通过调整其表格重新配置,这样具有VN机灵活的要求。因为语义处理器响应供给其的输入数据,该语义处理器通常能够以比VN机小的指令集有效操作。由于语义处理器使得数据在机器语境中进行处理,如下所解释的,所以指令集也能受益。
语义处理器100使用至少三张表格执行给定的功能。取回产生式规则的代码存储在分析表(PT)170中。语法产生式规则存储在产生式规则表(PRT)180中。SEE150代码段存储在语义代码表(SCT)190中。
在分析表170中的代码指向表180中的产生式规则。分析表代码以例如行-列形式或内容-可寻址形式存储。在行-列形式中,表格中的行通过内部分析堆栈的非终结代码索引,表格中的列通过输入数据报(例如在数据输入总线上的当前符号)头中的输入数据值索引。在内容-可寻址形式中,非终结代码拼接和输入数据值能将输入数据提供给表格。
产生式规则表180通过分析表170的代码索引。表格如图3所示进行连接,这样对分析表的查询将直接返回适用于非终结代码和输入数据值的产生式规则。直接执行分析器根据从PRT返回的产生式规则替换位于其堆栈顶部的非终结代码,并继续分析其输入。
实际上,多种不同语法的代码在产生式规则表中同时存在。例如,一个代码集可以属于MAC(Media Access Control,媒体接入控制)报头格式分析,而其他代码集属于地址分析协议(ARP)包处理,网际协议(IP)包处理,传输控制协议(TCP)包处理,实时传输协议(RTP)包处理等。CIFS、NFS、和/或其他存储服务器协议的语法添加到产生式规则代码内存中以增加存储服务器的能力。非终结代码无须在产生式规则代码内存122中、也无须在属于特定协议的数据块中以任何特定顺序进行分配。
语义代码表190通过分析表代码和/或自产生式规则表180进行索引。通常,分析结果使得DXP140检测对于给定的产生式规则,来自语义代码表190的代码段是否必须加载以及由SEE150执行。
语义代码执行引擎150具有访问机器语境160的通路,该通路是构建了的内存接口,通过上下文相关的符号可寻址。机器语义160,分析器表170,产生式规则表180,和语义代码表190可使用芯片级内存,诸如同步DRAM和CAM的外部存储装置,或这些资源的结合。每一表格或语境主要通过语义接口为共享的物理存储空间提供一张或更多其他表格或语境。
语义处理器100功能块的详细优选设计不在本发明的领域内。对于一些可应用的语义处理器功能块的详细架构例子,读者可参考通过引用合并与此的正在申请中的10/351,030申请文件。
在存储服务器语境中的语义处理器100功能通过特定例子可更好地理解。在这个例子中,CIFS命令和数据结构与以太网/IP/TCP支持结构一起使用。本技术领域的熟练技术人员会认识到所描述的概念也可应用到其他服务器通讯协议中
图4显示了以太网/IP/TCP/CIFS帧250(忽略尾部和校验和)的相关报头/数据块。在其他事件中,对于送往服务器200的任何帧,MAC报头包括服务器200的MAC地址。服务器200能够支持几个网络和传输协议,但这个例子使用网际协议(IP)网络报头和传输控制协议(TCP)传输协议报头。紧接TCP报头的是CIFS存储消息块(SMB)报头HEADER1和包括与HEADER1相关的数据的SMB数据缓冲器BUFFER1。如果需要,许多CIFS操作代码可与其他CIFS操作代码在同一SMB中进行合并,只要不超过帧的最大长度。第二,第三等操作代码的附加报头仅包括第一个报头的最后一些字段,所有其他字段可由第一个报头给出。如图所示,最后SMB报头包括HEADERN和BUFFERN。
图5显示了帧的第一个SMB报头和缓冲器的附加细节。完整的SMB报头首先表明其协议,例如,字符0xFF表明这是SMB报头。命令字符紧跟协议字符,表明请求或响应操作的操作代码(opcode)。状态和标识字段确定其他SMB字段应该如何理解,和/或是否有错误产生。MAC标记(在这个例子MAC代表媒体认证代码)有效时,能用于认证消息。
在SMB中接下来的四个字段为TID、PID、UID、和MID字段。当客户端成功连接到服务器资源时,TID(树标识符)由服务器分配给客户端。在后续的请求中,客户端使用分配的TID查阅资源。PID(处理标识符)由客户端分配-虽然服务器记录PID并用它答复客户端,其首先使用于客户端。UID(用户标识符)由服务器分配以识别需认证连接的用户。通过对每一处理使用不同的MID(多路标识符),使客户端对多个重要的处理使用同一PID。
参数字段可为不同长度和结构,其第一个字符通常表明下面参数的长度,紧接着参数字段的是适合SMB操作代码的参数文字。如果操作代码表明第二个SMB报头且紧接着的是缓冲器,一些参数文字表明后续操作代码和后续缩短报头的偏移量。
SMB以字节计数和字节计数长度缓冲器结束。这样的缓冲器用于例如发送文件名,发送写入数据到服务器,或发送读出数据到客户端。
在这种技术背景下,能够继续解释语义处理器100(图3)的基本CIFS功能。
参见图3和4,缓冲器130所接收的每个新帧以MAC报头开始。MAC报头包括目的地地址、源地址、负载型字段、负载、和校验和。DXP140分析目的地址以与分配给存储服务器200的地址相匹配,以及与广播地址相匹配。如果目的地址未能分析,DXP在SEE150上发行SEE代码段以清除该帧。否则,源地址由SEE用尽并存储以在答复中使用,并分析负载型字段。
在这个例子中,将MAC负载类型分析为IP类型。因此,DXP将IP报头分析的产生式规则加载到分析堆栈,并通过IP报头进行操作。例如,此过程可包括分析目的IP地址以保证数据包指向存储服务器,分派SEE以检查IP报头校验和,更新地址表,保存目的和源地址以返回信息包和其它处理,和/或重新组合IP分组数据包。分析在IP报头中表明的协议以将下一个报头(在这种情况中为TCP报头)的产生式规则加载到DXP分析堆栈中。
然后分析TCP报头。分派SEE以加载与目的IP地址、源IP地址、目的端口和源端口(如果有效连接存在-假设为此例的条件)相关的TCP连接语义。然后该SEE使用序号、确认数、窗、校验和、和其他必要字段以更新连接语义。保存连接语义使其在答复中使用。
假设MAC、IP、和TCP报头已分析为对存储服务器的有效连接,输入流中的下一个符号将表明数据包含SMB请求。DXP140分析这个符号并加载CIFS语法产生式规则到分析堆栈。
下一个输入符号将与CIFS命令(CIFS操作代码)的非终结符号相匹配。例如,分析表可包括CIFS操作代码和这一非终结符号的每个可能组合的条目。当分析CIFS命令时,将与在命令字段中的CIFS操作代码相关的语法加载到分析栈。
能够分析CIFS报头的状态和标记字段,但优选由SEE150用尽并存储在机器语义60中以在解释信息包内容的必需时候使用。
MAC标识、TID、PID、UID和MID字段也指向SEE,SEE保存这些字段以在构建返回帧时使用,并在机器语义160中执行查找以当信息包来自有效源并被指向合适源时认证该信息包。
参数字段格式随CIFS操作代码而不同。根据操作代码,更好地分析参数字段的单元,或利用微代码段命令SEE150用尽该参数。将给出几个常用CIFS命令的例子。
新客户端使用CIFS NEGOTIATE客户端请求识别客户端能够读懂的CIFS方言。NEGOTIATE参数字段包括字节计数,紧接着是列出如无终结字符串的可接受方言的字节计数符号。NEGOTIATE产生式规则促使DXP140使SEE150保存字节计数,然后DXP140分析第一个输入字符串直至NULL字符。如果字符串分析为已知的方言,DXP140使得SEE150保存当前帧语境的方言代码。SEE150还确定字节计数符号是否已经分析,表明已经分析了所有的方言。如果字符串没有分析为已知的方言,SEE150将无终结字符推到分析栈的顶部,使DXP140用另一种方言分析剩余输入。这种处理继续直到分析字节计数符号。在那个时候,SEE150将符号推到输入流的顶部使DXP140停止方言分析。然后DXP140完成分析信息包,以及指示SEE150选择方言(例如,根据预先编写的分级优选)并将响应信息包随同属于新会话的参数发送回客户端。SEE150也在机器语境160中建立新的会话语境。
当客户端接收到NEGOTIATE答复时,通常客户端将发送SESSION_SETUP_ANDX的SMB以完成这一会话。根据接收的此SMB,DXP140能够分析第一个参数(文字计数)并验证操作代码的正确性。紧接这个命令(CIFS使用“AndX”识别能与下一个操作代码拼接的操作代码以形成多路操作代码SMB),第二个参数AndXCommand表明第二个(和哪一个)命令X是否也在此帧中出现。如果AndXCommand表明没有第二个操作代码(0xFF),那么DXP140能分析这些情况并继续进行。如果存在分离的操作代码,处理会更加复杂。
第二个操作代码能用几种方法处理。一种方法是为第一和第二操作代码的每种可能结合写出单独的语法变量。这是可行的,但势必效率低下,这取决于分析表格和产生式规则表的限制。另一种方法是使用多级别语法,较高一级语法分析操作代码并且较低一级语法进一步处理各个已分析的操作代码。第三种方法是使用源于SEE150的推迟机制。在这种方法中,例如,AndXCommand参数加载产生式规则,其使SEE150保存来自输入流的AndXCommand。当完全分析了第一个操作代码时,促使SEE150运行微代码段,其将AndXCommand压回到输入数据流顶部。然后DXP140分析新操作代码并从此处继续,如果存在第二个操作代码,为新操作代码加载参数字段语法。SMB中的附加AndXCommand可以用相同方式处理。
如同在会话语境中保存的大多数包含的参数,SESSION_SETUP_ANDX的其他参数由SEE150用尽而不进行分析,或在有密码的情况下进行验证。分析无终结字符串参数以定位无终结符号,紧接着是对SEE150的指令以保存目前已确定长度的符号。
一旦分析了SESSION_SETUP_ANDX命令,命令SEE150创建响应信息包。然而,如果包括第二个操作代码,该信息包直到处理完各个操作代码时才完成。
LOGOFF_ANDX命令用于结束会话。语义处理器响应这个操作代码所执行的首要功能是使SEE150将会话的会话语境从机器语境160中去掉。
TREE_CONNECT_ANDX命令用来以参数字符串路径所指示的共享服务器资源连接会话。此命令所包括的路径字符串仅分析长度,和/或分析正确服务器名称。路径名称的其余部分也能够分析,虽然由于能够创建有效的路径而其在可写资源中频繁遭到破坏,保持每个目录产生式规则代码的正确是一个难题。因此,路径通常连通至SEE 150以形成通路。另外,DXP 140能够分析“/”字符,并且在某个时刻连通此路径至SEE 150的一个层面。
从根目录开始,读出保存在横跨I/O块总线110的数据存储装置120的目录,以及验证存在所请求的路径而且对客户端没有限制,SEE150可越过特定的路径。假设路径有效并且可用,SEE150创建响应信息包并在会话环境中保存该路径。
NT_CTRATE_ANDX命令创建或打开文件或目录。类似树连接命令,DXP140将这个命令体传递给SEE150以与数据存储装置120进行块I/O处理。如有可能,通过调整合适的目录,将文件标识符(FID)分配给打开的文件,并在机器语境160中为打开的文件创建文件语境,SEE150打开和/或创建文件。然后,SEE150格式化合适的响应帧,表明文件创建/打开请求的结果。
通过客户端使用READ_ANDX和WRITE_ANDX命令,从/至打开的FID中读出和写入数据。当DXP分析到FID参数时,DXP用信号通知SEE150从Si-Bus处取出FID,并且在机器语境160中定位对应的文件语境。然后SEE150执行合适的I/O块处理以在数据存储装置120中读出或写入数据,以及构建给客户端的返回包。注意到可选择产生写操作返回帧,并且在与数据存储装置所有I/O块处理完成之前发送。
上述命令是可能CIFS命令的子集。本技术领域的熟练技术人员能够理解,根据上述例子,语义处理器如何使用完整CIFS的功能性。进一步,在实现语义处理器上其他存储服务器协议中,语义处理器执行这些CIFS命令时所列举的概念是可应用的。
图6显示了另一个语义处理器具体实施方式300。语义处理器300包括四个语义代码执行引擎152、154、156和158。语义代码执行引擎180与I/O块电路1 12通讯。机器语境160包括两个功能单元:可变的机器语境数据内存(VMCD)162和阵列机器语境数据内存(AMCD)164。每个SEE能通过V-Bus处理与VMCD162的事务和通过A-Bus处理与VMCD164的事务。
在语义处理器300中,当DXP140确定在分析中的一个特定时刻发布SEE任务时,DXP140用信号通知一个SEE从SCT140加载微指令。一些指令段的句柄指示DXP140可选择任一可用SEE,或句柄指示特定SEE(例如唯一能访问I/O112的SEE158)应该接收那些代码段。多路SEE的可用性使得多个任务并行处理,不会有一些慢任务(如I/O块)阻塞所用的处理。
虽然不是严格必须,特定种类的任务也能指定给特定SEE。例如,可指定SEE152为输入数据协议SEE,负责处理IP、TCP、和其他协议的输入侧,并更新客户端、会话和具有输入CIFS帧数据的文件语境。指定SEE154执行文件系统操作,诸如加入或更新目录、文件定位表、和用户/密码列表、认证用户和请求等。指定SEE156处理协议的输出数据侧,例如,创建响应帧。指定SEE158处理与数据存储装置的事务。通过这种分配,SEE在另一个SEE上发布微代码,而不需要通过能移动到不同分析堆栈的DXP140。例如,SEE154在I/O块SEE158上发布任务以取回或更新目录。作为另一个例子,当准备好响应数据包数据时,输出协议SEE156可具有由另一个SEE设置的信号量。
每一个SEE包括廉线寄存器(pipeline register)使得机器语境能访问数据。与标准CPU相反,优选SEE具体实施方式完全不知道用于在其上操作数据的物理数据存储结构。可替代的是,访问数据采用机器语境处理形式。可在V-bus上访问可变(例如标量)数据;在A-bus上访问阵列数据;在Si-bus上访问输入流数据。例如,为读出在数据语境ct中用给定位置offset定位的长度为m个八位字节的标量数据元素,SEE使用指令解码器促使V-bus接口发出总线请求{read,ct,offset,m}。语境mct参考语义处理器的主语境;当RSP处理输入数据时,通常创建或消灭其他子语境,例如每个有效CIFS会话的子语境、每个打开文件、每个打开事务等。
一旦SEE传递路径寄存器发布命令,SEE处理数据传递过程。如果需要多路总线传递以读出或写入m个八位字节,廉线寄存器跟踪处理直至完成。作为一个例子,使用2个微指令,6个八字节字段从流输入传递到机器语境变量:第一个指令将6个八位字节从Si-Bus读至廉线寄存器;然后第二个指令将6个八位字节通过V-Bus从寄存器写入机器语境变量。寄存器接口完成执行,尽管需要多个总线数据循环来实现传递。
VMCD162操作在V-Bus上发起的请求。VMCD162具有将机器语境变量数据请求翻译成物理存储处理的能力。这样,VMCD162优选保留将机器环境标识符注明到物理内存起始地址的翻译表,其包括用于分配和释放语境的机制,允许语境由给定的SEE锁定,并确保所请求的处理不会落在所请求语境边界的外面。所采用的实际存储机制根据应用而改变:内存可以是完全内部的、完全外部的、两者的混合、具有大外部内存的高速缓存等等。外部存储可与作为其他存储区的外部内存共享,诸如在给定应用中的AMCD、输入和输出缓冲器、分析表、产生式规则表和语义代码表。
除了阵列机器语境的组织,A-Bus接口和AMCD164操作相似。优选地,不同类型的阵列和表格使用简单总线请求能进行分配、调整大小、释放、写入、读出、搜索、以及甚至可能搞乱或保存。实际基本物理存储对不同类型阵列和表格可以不同,包括例如快速插件级的RAM、外部RAM或ROM、内容-可寻址内存等等。
根据本发明的具体实施方式,如图3所示的存储服务器组成是服务器几种可能功能分配的一种。如下所描述,一些其他可能的配置如图7-10所示。
图7描述了具有一个或多个传统SATA驱动接口的存储服务器500。网络连接502(诸如标准的电或光连接器端口或天线)使得客户端与支持诸如光纤通道、以太网等的所需要协议的PHY501进行通讯。对于以太网,使用诸如博通公司(Broascom)的BCM5421和迈威尔公司(Marvell)的88E1011的商业上可用的PHY。
PHY510提供输入帧给RSP520并从RSP520驱动输出帧。RSP520能以上述配置中的一种、正在申请的第10/351,030号申请文件所描述配置中的一种、或任一种其他功能相似语义处理配置进行配置。
RAM530给RSP520提供例如机器语境和缓冲器的物理存储。RAM530可包括几种内存(DRAM、闪存、CAM等)或诸如同步DRAM的单一类型。当分析器、产生式规则和语义代码表在操作期间保存在易失性内存时,引导ROM和引导闪存(Flash memory)可用于初始化RSP520。非易失性表格存储部分也能存在于数据存储装置上,只要足够的代码在引导内存中可用使得RSP520与数据存储装置通讯。
SATA控制器540连接到RSP520的I/O块端口,为RSP520的磁盘访问请求提供服务。SATA控制器540可以是例如诸如SII3114或Marvell88SX5080的商业可用SATA控制器。
串行ATA控制器540凭借SATA总线连接到一个或多个SATA数据存储装置。如图所示,存储服务器500分别通过SATA总线BUS0到BUSN支持驱动器550-0到550-N。
PHY510、RSP520、RAM530和SATA控制器540优选在通用印刷电路板(没有显示)上相互连接。以通用机壳的驱动器布置电路板,SATA采用电缆提供BUS0-BUSN。可替代地, SATA总线信号能在印刷电路板上发送给每个驱动器的连接器,或通过连接器发送到背板。
另一个存储服务器的实现600如图8所示。优选地,在这种实施中,整个服务器在磁盘驱动器的印刷电路板上实现,网络连接602提供至存储服务器客户端的连接。虽然可能能以相同的方法包装存储服务器架构500,存储服务器600通过在RSP620中集成PHY610和SATA控制器640获得空间和节约成本。使用SEE优选至少部分执行SATA控制器640。
RSP620的SATA控制器部分通过SATA电缆或电路板总线连接到包括SATA接口、磁盘高速缓存和驱动器控制电子装置的驱动器电子装置660。
对于在媒体装置的通用电路板上执行的完整存储服务器,如图9存储服务器700所示,可能完全去除SATA接口。在图9中,在RSP740中执行磁盘控制器功能。控制装置(诸如Marvell 88C7500)、马达、和如模块770显示的伺服系统直接与RSP740相连。
图10描述了本质上为“转发”网关的存储服务器800。存储服务器800包括连接到网络802并由此连接到存储服务器客户端的第一网络物理接口PHY1(模块810)。存储服务器接口800也包括第二个网络物理接口PHY2(模块840),横跨网络或端到端连接其连接到诸如所描述SAN服务器850的一个或多个物理服务器。具有连接内存830的RSP820连接到PHY1和PHY2。PHY1可以是例如以太网PHY,而PHY2可以是例如光纤通道PHY。
在操作中,RSP820通过在远程连接服务器850上发起请求,响应诸如NAS形式或应用形式请求的客户端请求。这样,客户端800看作是对网络802上的客户端的服务器,以及看作是对服务器850的客户端。虽然客户端850描述为SAN服务器,服务器850可以是NAS或甚至是应用形式的服务器。如果PHY1和PHY2支持相同的服务器协议,存储服务器800仍旧能起到有用的功能,作为可升级服务器区、加密点和/或防火墙的集合点。
当PHY1和PHY2提供数据包给RSP820时,RSP820能提供两者输入流的分析。例如,PHY1和PHY2输入流保存到通用输入缓冲器中,以及RSP820中的DXP(没有显示)能轮流分析两者输入流中的数据包,这样协调两路转换任务。RSP820也可配置两个DXP,一个DXP服务于一个物理端口,共享SEE的通用存储和其他RSP资源。
如图11和12所示,前述具体实施方式例可适用于其他系统架构,提供对那些多路物理数据存储装置的访问。在图11中,存储服务器900包括将RSP100连接到例如所示四个装置120-1、120-2、120-3、和120-4的多路物理数据存储装置的存储接口。这些数据存储装置作为RAID阵列(独立磁盘的冗余阵列)在一些具体实施方式中可以被访问,RSP担当RAID控制器,或独立RAID控制器(没有显示)作为部分存储接口110执行。四个数据存储装置能轮流配置成JBOD(Just a Bunch Of Disks,简单磁盘捆束)阵列。
通常,RSP100能为其客户执行其他形式的客户端虚拟存储服务器。在一个可替代形式中,RSP将客户端应用使用的磁盘扇区地址映射为多个物理装置中的特定装置的C-H-S(Cylinder-Head-Sector,磁柱/磁头/磁扇)地址。在这种配置中,数据存储装置120-1到120-4(可能有更多个这种装置)不需要在地域上协同定位,容许对客户端的磁盘定位和物理资源的高级控制。RSP也能在虚拟配置中起作用,其中,分立的中间装置提供全部或部分客户端虚拟功能。
图12描述在结合了端口扩展器950的存储服务器系统1000中RSP100的使用。除了依次与多路物理数据存储装置(例如所示装置120-1到120-4)通讯外,端口扩展器950连接到与RSP100(内部或外部)相连的单个SATA控制器端口。当仅使用与数据存储装置通讯的RSP上的一个端口时,这样的配置能增加整个系统带宽。
图13也显示本发明具体实施方式中有用的另一个语义处理器实现1100。语义处理器110与端口0PHY93、端口1PHY94和PCI-X接口95通讯,每个端口根据所需能与处理器1100集成或外部连接到处理器1100。图3的缓冲器130可用端口输入缓冲器(PIB)132和端口输出缓冲器(POB)134替代,缓冲器130,其优选但非必要地安置在作为处理器1100一部分集成的通用存储区域。PIB132连接到并保持端口0、端口1和PCI-X接口中的每一个的至少一个输入队列,并且也可以包含其他队列。POB134连接到并保持端口0、端口1和PCI-X接口中的每一个的至少一个输出队列,并且也可以包含其他队列。端口0、端口1典型表现为诸如千兆以太网的数据报接口,而PCI-X接口连接到熟悉的PXI-X总线。取决于存储服务器设计,存储资源能连接到这些端口中的任何一个,以及客户端能连接到端口0、端口1中的任一个或两个。
不象图3,在图13中的直接执行分析器140经过分析资源选择器136能接收PIB132中的每个多路输入队列的输入数据。例如,直接执行分析器140能维持每个输入资源的独立分析堆栈,以及在每次数据包完成分析时或延迟分析数据包时,例如当SEE在数据包字段上执行一些计算时,能发送信号通知分析资源选择器交换输入资源。
SEE群152包括N个语义代码执行引擎150-1到150-N。SEE群优选包括通过Sx总线与DXP通讯以及分配任务给各个SEE的单个调度器(没有显示)。
PIB读控制器133和POB写控制器模块135分别为SEE群152提供对PIB132和POB134的访问。如图所示,分析资源选择器136和PIB读控制器133使DXP140作用于一个输入的数据,而SEE群访问另一个输入数据。PIB读控制器133和POB写控制器135优选允许对输入和输出缓冲器的无阻塞访问。
机器语境端口控制器154为SEE群152提供对机器语境160的访问。如端口缓冲器控制器,机器语境端口控制器154为SEE群152提供对机器语境160无阻塞访问。
机器语境160优先考虑和执行SEE群152和管理微处理器192的存储任务,以及典型包括一个或多个专门高速缓存,每个专门高速缓存取决于目标数据访问的特性。机器语境160也能包括一个或多个能用于执行内嵌加密/认证的加密和/或认证引擎。一个或多个传统内存总线接口将机器语境160与物理内存165相连,物理内存165由例如DRAM(DynamicRandom Access Memory,动态随机访问内存)、CAM(Content AddressableMemory,内容可寻址内存)和/或任一个其他类型所需存储所组成。物理内存165能安装在处理器1100上,在微处理器1100的外部,或在两个位置的分开处。
管理微处理器195执行用传统软件合理实现的语义处理器1100的任何所需功能。例如,通过机器语境160,微处理器195能与在物理内存165中的其拥有的指今空间和数据空间相连接,并执行传统软件以引导处理器,加载或调整分析表、产生式规则表和语义代码表,收集统计数字,完成日志,管理客户端访问,执行错误恢复等。优选地,微处理器195也有能力与在SEE群152中的调度器通讯,以请求SEE为微处理器的利益执行任务。管理微处理器优选集成到语义处理器1100中。
在先的具体实施方式中,当将数据块写入磁盘时,语义单元能加密数据块,和/或当从磁盘读出数据块时,解密数据块。这为在该磁盘驱动器或多个磁盘驱动器上“长眠(at rest)”的数据提供了安全措施。例如,当语义单元接收到写入磁盘的数据负载时,为写入准备数据负载的一个操作包括加密该数据包。这个过程的反向能用于从磁盘中读出加密的数据。
虽然显示并描述了专用执行引擎,可替代实现能使用分析器作为通用目的处理器的前端数据包处理器。
如在先前的实施方式所例示的,基于语义处理器的多个不同的存储服务器落入本发明的领域。在低功能性的一端,例如通过光纤通道连接到企业互联网的SAN类型服务器是有可能的。SAN类型服务器包括更高级特征,诸如上述详细CIFS具体实施方式中所描述的那些特征。转换-网关(translation-gateway)服务器为客户端提供物理服务器的可能大的和可变的基本阵列访问,而无需使客户端对物理服务器可视。
转换-网关服务器和物理服务器能构建为应用类型服务器。作为应用形式服务器,数据以应用形式格式进行操作。例如,视频点播服务器能存储多个用户使用的视频,并且使不同的视频部分流入不同的客户端,使每个客户端能独立导航。音乐点播服务器可相似操作。
应用形式服务器也能为应用提供存储空间,如存储脱离数码相机的数字照片的有线或无线服务器,使相机以相对小的内部缓冲器和/或闪存卡进行操作。这样的服务器可能相对小,以电池供电,以及便于野外使用时携带。
语义处理器存储服务器实施也能执行例如在家庭计算机数据和/或音频/视频网络中使用的无线协议。虽然详细具体实施方式例集中于传统“存储”装置,打印机、扫描仪、多功能打印机和其他数据转化装置也能与语义处理器存储服务器连接。
一个本技术领域中普通技术人员认识到在此所讲授的概念可以多种其它有利方法调整到特定的应用中。很明显,通过改变由服务器分析的协议,使语义处理器存储服务器为不同客户端类型服务。如果需要,存储服务器甚至能同时分析多种存储服务器协议,以允许不同级别客户端的访问(例如,信任客户端的SAN访问,以及其他客户端的NAS的访问)。
图14显示了根据本发明具体实施方式的语义处理器2100的框图。语义处理器2100包括输入缓冲器2300,其用于缓冲器通过输入端口2110所接收到的数据流(例如输入“流”),控制在输入缓冲器2300中`的数据包处理的直接执行分析器(DXP)2100,处理信息包段或执行其他操作的语义处理单元2140,和保存或补充信息包段的存储子系统2130。
基于当前输入符号至当前输入帧或数据包的分析,DXP2400保持非终结(也可能是终结)符号的内部分析器堆栈2430。当分析堆栈2430顶部的符号(或多个符号)是终结符号,DXP2400将输入流顶部的数据DI与终结符号进行比较,并期望匹配以能继续。当在分析堆栈2430顶部的符号是非终结(NT)符号,DXP400使用该非终结符号NT和当前输入数据在堆栈2430上扩展语法产生。当分析继续时,DXP2400指示SPU2140处理输入数据段,或执行其他操作。
语义处理器2100使用至少三张表格。SPU2140代码段保存在语义代码表2150中。复杂的语法产生式规则保存在产生式规则表(PRT)2250中。重新获得这些产生式规则的产生式规则(PR)代码保存在分析器表(PT)2200中。对于给定的产生式规则,分析表2200中的PR代码也使DXP2400检测产生式规则语义代码表2150的代码段是否必须加载和由SPU2140执行。
分析器表格2200中的产生式规则(PR)代码指向产生式规则表2250中的产生式规则。以诸如行-列格式或内容-可寻址格式保存PR代码。在行-列格式中,表中的行通过内部分析器堆栈2430顶部的非终结符号NT索引,而表中的列通过输入报头中的输入数据值(或多个值)DI索引。在内容-可寻址形式中,非终结符号NT的拼接和输入数据值(或多个值)DI能将输入提供给表格。优选地,语义处理器2100执行内容-可寻址格式,其中DXP2400将当前输入数据DI的8字节与非终结符号NT拼接以将输入提供给分析表。可选择地,分析表2200将非终结符号NT与接收自DXP2400的当前输入数据DI的8字节进行拼接。
当前发明的一些实施方式包括比图14所示要多的单元。可是为了理解本发明的操作,这些单元是外围设备而且可从公开中删去。
本发明的一些实施方式例的通用分析器操作可参见图14、15A、15B、16和17首先进行解释。图15A描述了分析器表2200的一个可能的实施方式。分析表2200包括产生式规则(PR)代码内存2220。PR代码内存2220包括多个用于访问保存在产生式规则表(PRT)2250中对应的产生式规则的PR代码。实际上,多种不同语法的代码可同时存在于产生式规则代码内存2220中。除非特定查询实施所需,输入值(例如与当前输入值DI[n]拼接的非终结(NT)字符,其中n为所选匹配字节宽度)不需要在PR代码内存2220中以任何特定次序安排。
在一个实施方式中,分析器表2200也包括接收来自DXP2400的数据值DI[n]和NT符号的编址器2210。编址器2210将数据值DI[n]与NT字符拼接,以及将拼接值应用于PR代码内存2220。可选择地,在将数据值DI[n]与NT字符传输到分析器表2200前,DXP2400将两者拼接。
虽然概念上将产生式规则代码内存2220的结构看作矩阵通常是有用的,矩阵具有数据值及NT代码的每个唯一结合的一个PR代码,但本发明并没有这样限制。不同类型内存和内存组织适用于不同应用。
例如,在本发明的实施方式例中,分析器表2200作为内容可寻址内存(CAM)执行,其中编码器2210使用NT代码和输入数据值DI[n]作为对于CAM查询对应于在PRT2250中的产生式规则的PR代码的关键。优选地,CAM为具有TCAM条目的三态CAM(TCAM)。每个TCAM条目包括NT代码和DI[n]匹配值。各个NT代码可具有多个TCAM条目。DI[n]匹配值的各比特能设置为“0”、“1”或“X”(表示“不在意”)。这项能力使得PR代码要求只DI[n]的特定比特/字节匹配编码模式以使分析表2200找到匹配。例如,TCAM的一行能包括IP目的地址段的NT代码NT_IP,紧接着是表示对应于合成语义处理器装置的IP目的地址的4个字节。TCAM行其余4个字节设置为“don’t care”。这样当NT_IP和8个字节DI[8]提交给分析表2200时,其中前4个字节DI[8]包括正确的IP地址,无论后4个字节DI[8]包括什么,将产生匹配。
因此,TCAM采用“don’t care”能力且可以存在的单个NT的多个TCAM条目,TCAM能为给定NT代码和DI[n]匹配值找到多路匹配TCAM。TCAM通过其硬件优先考虑这些匹配并仅输出最高优先级的匹配。进一步地,当NT代码和DI[n]匹配值提交给TCAM时,TCAM欲将每个TCAM条目与所接收的NT代码和并行DI[n]匹配代码匹配。这样,TCAM有能力确定在语义分析器2100的单个时钟循环的分析表2200中是否找到匹配。
另一种观察这种架构的方法是作为“可变向前看(variable look-ahead)”分析器。虽然诸如8字节的固定数据输入段应用于TCAM,TCAM编码仍使得下一个产生式规则基于当前8字节任何输入部分。如果在输入流顶部当前8字节的任何位置的仅1比特或字节是当前规则有兴趣的,则可以对TCAM条目编码使得在匹配中忽略其余部分。本质上,当前“符号”能由给定的产生式规则定义为在输入流报头上的任何一种64比特的组合。通过智能编码,对给定的分析任务通常能够减少表条目、NT代码和分析循环的数目。
在分析表2200中的TCAM产生对应于匹配上述NT和DI[n]的TCAM条目2230的PR代码。PR代码能发回到DXP2400,直接到PR表2250,或两者。在一个实施方式中,PR代码是产生匹配的TCAM条目的行索引。
当没有TCAM条目2230匹配NT和DI[n],存在几种选择。在一个实施方式中,PR代码附带有“有效”比特,如果没有TCAM条目匹配当前输入,该“有效”比特保持不设置。在另一个实施方式中,分析表2200构建对应于NT的默认PR代码,将其提供给分析表。默认PR代码或有效比特的使用将联系图15B进行分析。
当DXP2400和SPU2140在电路上集成在一起时,分析表2200能放置在芯片上或芯片外,或部分在芯片上而部分在芯片外。例如,放置在芯片上的静态RAM(SRAM)或TCAM能用作分析表2200。可替代地,不在芯片上的DRAM或TCAM内存能保存分析表2200,寻址器2210用作不在芯片上的内存的存储控制器或与其通信。在其它实施方式中,分析表2200放置在芯片外的内存中,在芯片上的高速缓存有能力保持分析表2200的一部分。
图15B描述了产生式规则表2250的一种可能的实施。PR表2250包括产生式规则存储2270、匹配所有分析器条目表(Match ALL Parser entriesTable,MAPT)内存2280和寻址器2260。
在一个实施方式中,寻址器2260从DXP2400或分析表2200中接收PR代码并从DXP2400接收NT符号。优选地,所接收的NT符号是与发送到分析表2200相同的NT符号,其中分析器表2200用于放置所接收的PR代码。寻址器2260使用这些所接收到的PR代码和NT符号分别访问相应的产生式规则和默认的产生式规则。在本发明优选实施方式中,所接收的PR代码寻址在产生式规则内存2270中的产生式规则,而所接收的NT寻址在MAPT2280中的默认的产生式规则。寻址器2260在一些实施方式中是没有必要的,但使用时,寻址器2260可以是DXP2400的一部分、PRT2250中的一部分或中间功能块。例如,如果分析表2200或DXP2400直接构建地址,寻址器可以不需要。
产生式规则内存2270保存包含三个数据段的产生式规则2260。这些数据段包括:符号段,SPU入口点(SPU entry point SEP)段和跨越字节(skip byte)段。这些段可能是固定长度段或优选为非终结的可变长度段。符号段包括推入DXP分析堆栈2430(图17)的终结和/或非终结符号。SEP段包括在处理数据段中SPU2140使用的SPU入口点(SEP)。跨越字节段包括输入缓冲器2300使用的跨越字节数据,增加其缓冲器指针和预先进行输入流处理。在处理产生式规则中有用的其他信息也能作为产生式规则2262的一部分保存。
MAPT 2280保存默认产生式规则2264,在此实施方式中,默认产生式规则2264具有与产生式规则内存2270中的PR相同的结构,并且当PR代码在分析表查询期间不能定位时,能够访问默认产生式规则2264。
虽然产生式规则内存2270和MAPT2280显示为独立存储模块,本发明没有这样的限制。在本发明的优选实施方式中,产生式规则内存2270和MAPT2280作为芯片上的SRAM进行操作,其中,各产生式规则和默认产生式规则包括多个非终结字段。
由于产生式规则和默认产生式规则能够具有不同长度,优选采用容易索引各自内存2270和2280的方法。在一种方法中,各PR具有容纳固定最大数目的符号、SEP和诸如跨越字节段的辅助长度的固定长度。当给定PR不需要所预计的最大数目字符或SEP,序列以NULL字符或SEP而终止。当给定PR需要多于最大数目时,PR可分为两个PR,并通过例如具有第一个发布0跨越字节值并将NT推到堆栈而使得第二个在接下来的分析循环中被访问来访问PR。在这种方法中,能够保持TCAM条目和PR表条目之间一一对应,这样从TCAM获得的行地址也是在PR表250中对应的产生式规则的行地址。
PRT2250的MAPT2280部分能相似索引,但使用NT代码而不是PR代码。例如,当PR代码中的有效为没有设置时,寻址器2260选择对应于当前NT的行作为PR表地址。例如,如果容许有2256个NT,MAPT2280能包括2256个条目,每个条目索引到一个NT。当分析表2200没有对应于当前NT和数据输入DI[n]的条目时,访问自MAPT2280对应的默认产生式规则。
再次将IP目的地址作为例子,能够配置分析表例如以在合适的分析周期期间响应2个所期望目的地址中的1个。对于所有其它目的地址,找不到分析表条目。然后寻址器2260为当前NT查找默认规则,这将指示DXP2400和/或SPU2140清除认为是没兴趣信息包的信息包。
虽然上述产生式规则表索引方法提供相对直接和快速的规则访问,其它索引方案也是可能的。对于可变长度PR表条目,PR代码在算术上能够操作以确定产生式规则的物理内存起始地址(这是可能的,例如,如果产生式规则以扩展长度保存,则根据规则分类位置分配PR代码)。在另一种方法中,中间指针表能用于确定来自PR代码在PRT2250中的产生式规则或来自NT符号在MAPT2280中的默认产生式规则的地址。
在一个附加功能单元、输入缓冲器2300更详细解释后,字符的使用、SEP和来自产生式规则2262或2264的跨越字节值将在下面进一步解释。
图16描述本发明实施方式有用的输入缓冲器2300的一个可能实施。输入缓冲器2300包括:通过输入端口2110接收数据的缓冲器2310;控制缓冲器2310中数据的控制模块2330;检查所接收数据的传输错误的错误检查(EC)模块2320;使DXP2400 FIFO访问缓冲器2310中数据的FIFO模块2340,以及使SPU2140随机访问缓冲器2310中数据的随机存取(RA)模块2350。优选地,通过检查信息包间隙(PIG)违反和以太网报头错误以及计算循环冗余代码(CRC),EC模块2320确定所接收数据帧或数据包是否包含错误。
当通过输入端口2100在缓冲器2310中接收到数据包、帧或其他新数据段时,输入缓冲器2300将端口ID传输到DXP2400,同时变换新数据到达的DXP2400。EC模块2320对新数据检查错误,并设置以状态信号发送给DXP2400的状态比特。当DXP2400决定分析所接收数据段的报头时,其将Control_DXP信号发送到输入缓冲器2300,请求一定数目的缓冲器2310数据,或请求缓冲器2310增加其数据报头指针而不向DXP2400发送数据。当接收到Control_DXP信号时,控制模块2330将包括缓冲器2310数据(如果有请求)的Data_DXP信号通过FIFO模块2340传输到DXP2400。在本发明的实施方式中,当数据段以Data_DXP信号形式发送给DXP2400时,控制模块330和FIFO模块340将控制字符加入该数据段中。优选地,该控制字符包括加在传输数据每字节的开头并表示随后数据字节是否是终止或非终止符号的1比特状态标识。控制字符也可包括特定非终结字符,例如,信息包起始、信息包结束和端口ID等。
当SPU2140从要求SPU2140访问输入缓冲器数据中的数据的DXP2400处接收到SPU入口点(SEP)时,SPU2140将Control_SPU信号发送到输入缓冲器2300,要求数据在缓冲器2310的特定位置。接收Control_SPU信号时,控制模块2330将边带信号传输给SPU2140,接着将包含缓冲器2310数据的Data_SPU信号通过RA模块2350发送给SPU2140。边带信号优选表示多少正在发送的字节是有效的,以及数据流中是否存在错误。在本发明实施方式中,当数据流发送给SPU2140时,控制模块2330和RA模块2350将控制字符加入数据流。优选地,控制字符包括在必要时将计算的CRC值和错误标记添加到数据流的数据包或帧的末尾。
图17显示DXP2400一种可能块的实施。基于图17中其他逻辑块的输入,分析器控制有限状态机(FSM)2410控制和安排所有DXP2400操作的顺序。分析器堆栈2430保存DXP2400执行的字符。输入流序列控制2420从输入缓冲器2300取回输入数据值,使DXP2400处理这些输入数据。SPU接口2440为DXP2400将任务分派给SPU2140。这些模块的特定功能将在下面进一步描述。
参见图18中的数据流分析流程图,现将描述在图14-17中的块基本操作。使用流程图2500来描述本发明的方法实施方式。
根据模块2510,语义处理器2100等待通过输入端口2110在输入缓冲器2300接收到的信息包。
下一个决策模块2512确定在模块2510中是否接收到信息包。如果没有接收到信息包,处理返回到模块2510,其中语义处理器2100等待要接收的信息包。如果输入缓冲器2300接收到信息包,根据下一个模块2520,输入缓冲器2300将端口ID信号发送给DXP2400,其中端口IP作为NT符号推入分析器堆栈2430。端口ID信号警告DXP2400信息包已到达输入缓冲器2300。在本发明的优选实施方式中,端口ID信号由输入流顺序控制器2420接收,并传输到FSM2410,其中将端口ID信号推到分析器堆栈2430。优选地,1比特状态,在先或与端口ID并行发送,其表示端口ID作为NT符号。
根据下一个模块2530,在确定分析器堆栈2430顶部的符号不是堆栈底部符号以及DXP没有等待进一步的输入之后,DXP2400请求以及接收输入缓冲器2300的N字节的输入流数据。DXP2400通过在输入流顺序控制器2420和输入缓冲器2300之间连接的DATA/CONTROL信号请求和接收数据。
下一个决策模块2532确定分析堆栈2430中的符号是终止(T)或NT符号。这个确定优选由FSM2410执行,读出分析堆栈24330中的符号状态标识。
当符号确定为终止符号,根据下一个模块2540,DXP2400检验在T符号和所接收N个字节的下一个字节的数据之间的匹配。FSM2410通过比较由输入流顺序控制器2420所接收到的下一个字节的数据和分析器堆栈2430的T符号来检验匹配。检验完成后,FSM2410优选通过减少堆栈指针,将T符号弹出分析器堆栈2430。
下一个决策模块2542确定在T字符和下一个字节的数据之间是否存在匹配。如果有匹配,执行返回到模块2530,其中DXP在确定分析器堆栈2430中的符号不是堆栈栈底符号以及没有在等待进一步的输入后,请求和接收输入缓冲器2300的附加输入流数据。在本发明的优选实施方式例中,T符号匹配产生后,DXP2400仅请求和接收一个字节的输入流数据以补充DI缓冲器,因为消耗了一个输入符号。
当没有产生匹配,在一些未分析的环境中,可使用当前数据段的剩余部分。根据下一个模块2550,DXP2400重新设置分析器堆栈2430并发送SEP将当前信息包的剩余部分从输入缓冲器2300中去除。在本发明的实施方式中,FSM2410通过弹出剩余符号或通过优选设置指向栈底符号的栈顶指针,重新设置分析器堆栈2430。DXP2400通过经SPU接口2440发送命令给SPU2140发送SEP。这条命令请求SPU2140从SCT2150加载微指令,当执行该命令时,使SPU2140从输入缓冲器2300处去除未分析数据段的剩余部分。然后执行返回模块2510。
注意到,不是每个在数据流中未分析输入的例子结果会导致放弃当前数据段的分析。例如,分析器经配置通过语法直接处理普通数据报头选项。另外,使用将数据报头选项传递到SPU进行分析的默认语法规则能够处理较不普通或难的数据报头选项。
当决策模块2532中的符号确定为NT符号,根据下一个模块2560,DXP2400将分析器堆栈2430的NT符号和输入流顺序控制器2420中所接收到的N个字节DI[N]传递到分析器表2200,其中分析器表2200检验匹配,例如,如前面所描述的。在所描述的实施方式中,分析器表2200将NT符号和所接收到的N个字节拼接。可选择地,NT符号和所接收到的N个字节在发送到分析器表2200之前进行拼接。优选地,所接收的N个字节同时发送给SPU接口2440和分析表2200,以及NT符号同时发送给分析表2200和PRT2250。检验完成后,FSM2410优选通过消耗堆栈指针,将NT符号从分析器堆栈2430中弹出。
下一个决策模块2562确定在N个字节数据拼接NT符号在分析器表2200中是否存在匹配。如果产生匹配,根据下一个模块2570,分析器表2200将PR代码返回给对应于匹配的PRT2250,其中PR在PRT2250中寻址产生式规则。可选择地,PR代码通过DXP2400从分析表2200中发送给PRT2250。然后,执行在模块2590处继续。
当没有产生匹配时,根据下一个模块2580,DXP2400使用所接收到的NT符号在PRT2250中查询默认的产生式规则。在优选实施方式中,在位于PRT2250中的MAPT2280内存中查询默认的产生式规则。可选择地,除了PRT2250,MAPT2280内存能放置在内存块中。
在本发明的优选实施方式中,当PRT2250接收到PR代码,仅将PR返回至对应于所查找到的产生式规则或默认的产生式规则的DXP2400。可选择地,PR和默认PR两者都能返回到DXP2400,DXP2400确定将使用哪一个。
根据下一个模块2590,DXP2400处理PRT2250所接收到的规则。DXP2400所接收到的规则可以是产生式规则或默认的产生式规则。在本发明的实施方式中,FSM2410将规则划分成三个字段,符号字段、SEP字段和跨越字节字段。优选地,规则的各字段有固定长度或非终结使其容易并正确划分。
在所描述的实施方式中,FSM2410将包括在产生式规则的字符段中的T和/或NT符号加入分析器堆栈2430。FSM2410将包括在产生式规则的SEP字段中的SEP发送给SPU接口2440。各SEP包括安放在SCT21 50中的微指令地址。接收到SEP时,SPU接口2440分派SPU2140以取出并执行通过SEP指向的微指令。当在许多情况下,由SPU完成的任务不再需要进一步的输入数据,SPU接口2440也将当前DI[N]值发送至SPU2140。可选择地,SPU接口2440取出由SPU2140执行的微指令,并将其连同地址分配发送给SPU2140。FSM2410将产生式规则的跨越字节段通过输入流顺序控制器2420发送给输入缓冲器2300。输入缓冲器2300使用跨越字节数据增加其缓冲器指针,指向输入流的地址分配。各分析循环因此使用0-8之间的任何数目的输入字符。
DXP2400处理自PRT2250接收到的规则之后,下一个决策模块2592确定分析器堆栈2430中的下一个符号是否是栈底符号。如果下一个符号是栈底符号,执行返回到模块2510,其中语义分析器2100等待通过输入端口2110由输入缓冲器2300所接收到的新信息包。
当下一个符号不是栈底符号,下一个决策模块2594确定DXP2400在开始处理分析器堆栈2430的下一个符号前是否等待进一步的输入。在所描述的实施方式中,DXP2400等待SPU2140开始处理输入流段,等待SPU2140返回处理结果数据等。
当DXP2400没有等待进一步输入,执行返回到模块2530,其中DXP2400请求并接收来自输入缓冲器2300的输入流数据。当DXP2400等待进一步输入时,执行返回到模块2594直至接收到输入数据。
图19也显示另一个语义处理器实施方式。语义处理器2600包括语义处理单元(SPU)群2640,该语义处理单元(SPU)群2640包括多个语义处理单元(SPU)2140-1到2140-N。优选地,各SPU2140-1到2140-N相同而且具有相同的功能。SPU群2640连接内存子系统2130、SPU入口点(SEP)分配器2650、SCT2150、端口输入缓冲器(PIB)2700、端口输出缓冲器(POB)2620、和机器中央处理单元(MCPU)2660。
当DXP2800确定在分析时于特定点发布SPU任务时,DXP2800用信号通知SEP分配器2650从语义代码表(SCT)2150加载微指令,以及从SPU群2640中的多个SPU2140-1到2140-N指定SPU以执行任务。所加载的微指令表明要执行的任务,并发送给指定的SPU。然后指定的SPU执行微指令并因此处理输入流中的数据。当SEP分配器2650指示时,SPU能可选择地直接从SCT150加载微指令。
参见图20以进一步详述,PIB2700包括至少一个网络接口输入缓冲器2300(2300-0和2300-1已显示)、再循环缓冲器2710和外围单元连接(PCI-X)输入缓冲器2300_2。POB2620包括(没有显示)至少一个互联网接口输出缓冲器和PCI-X输出缓冲器。端口模块2610包括一个或多个端口,各端口包括物理端口,例如以太网的光、电或射频驱动器/接收器对、光纤通道、802.11x、通用串行总线、Firewire规范、SONET(同步光网络)、或其他物理层接口。优选地,端口模块2610中的端口数目对应于PIB2700中的互联网接口输入缓冲器数目和POB2620中的输出缓冲器数目。
再参见图19,PCI-X接口2630连接PIB2700中的PCI-X输入缓冲器、POB2620中的PCI-X输出缓冲器和外部PCI总线2670。PCI总线2670能连接到其它有PCI能力元件,诸如磁盘驱动器、附加网络端口的接口等。
MCPU2660连接到SPU群2640和内存子系统2130。MCPU2660执行使用传统软件合理完成的语义处理器2600任何所需功能。这些功能通常是由于代码的复杂性不能保证包括在SCT2150中很少发生的、非严格时间限制的功能。优选地,MCPU2660也有能力与SEP分配器2650联系以请求SPU为MCPU执行任务。
图20举例说明了一种可用于本发明实施方式的可能的端口输入缓冲器(PIB)实现方案。该PIB2700包括两个网络接口输入缓冲器2300_0和2300_1,再循环缓冲器2710和PCI-X输入缓冲器2300_2。输入缓冲器2300_0和2300_1以及PCI-X输入缓冲器2300_2的功能与输入缓冲器2300相同,但它们分别从不同的块输入端口2610和PCI-X接口2630接收输入数据。
再循环缓冲器2710是由从SPU群2630中接收再循环数据的缓冲器2712、用于控制缓冲器2712中的再循环数据的控制块2714、使得DXP2800(图21)FIFO存取缓冲器2712中的再循环数据的FIFO块、以及使得SPU群2640内的SPU随机存取缓冲器2712中的再循环数据的随机存取(RA)块2718组成。当在缓冲器2712处接收到来自SPU群2640的再循环数据时,再循环缓冲器2710向DXP 2800发送Port ID,以提醒DXP2800新数据已经到达。更可取地,所发送的Port ID为缓冲器2712内的第一个符号。
当DXP 2800决定分析再循环数据时,它向再循环缓冲器2710发送Control_DXP信号以向缓冲器2712请求一定数量的数据,或递增缓冲器2712的数据指针。当接收到Control_DXP信号后,控制块2714通过FIFO块2716向DXP 2800发送Data_DXP信号,其包含来自缓冲器2712的数据。在本发明的一个实施方式中,控制块2714和FIFO块2716将控制字符添加至利用Data_DXP信号发送到DXP 2800的再循环数据中。更可取地,控制字符为1位的状态标志,其被添加在所传送数据每个字节的开头,并且指示该字节数据为终结符还是非终结符。
当SPU群2640内的SPU2140接收到DXP 2800的SPU入口点(SEP)以要求其存取再循环流内数据时,SPU2140向再循环缓冲器2710发送Control_SPU信号来请求缓冲器2712中一定位置处的数据。当接收到Control_SPU信号后,控制块2714通过RA块2718向SPU2140发送Data_SPU信号,其包含来自缓冲器2712的数据。
图21表示一个可能的DXP 2800结构实现方案。分析器控制有限状态机(FSM)2410根据图21中其它逻辑块的输入,以如同在图17中所示为DXP2400所描述的方式来控制和排序全部的DXP 2800操作。然而存在的不同之处是由于在输入缓冲器2700中存在着多个分析输入。这些不同主要存在于分析器控制FSM 2410、堆栈处理机2830以及输入流次序控制2420。此外,图17的分析器堆栈2430已被能够维持多个分析器堆栈2430_1至2430_M的分析器堆栈块2860所取代。最后,添加一个分析器数据寄存器库2810。
堆栈处理机2830通过将由DXP 2800所执行的符号存储和排序来控制多个分析器堆栈2430_1至2430_M。在本发明的一个实施方式中,分析器堆栈2430_1至2430_M位于单个内存上,其中每个分析器堆栈都分配有此内存的固定部分。另外,在分析器堆栈块2860内的分析器堆栈2430_1至2430_M的数量和每个分析器堆栈的规格都由所示的堆栈处理机2830依据活动的输入数据端口的数量和语法来动态决定和改变。
DXP 2800通过多个接口模块来接收输入,这些接口模块包括:分析器表格接口2840、产生式规则表(PRT)接口2850、输入流次序控制2420和SPU接口2440。通常,除了输入流次序控制2420之外,这些接口的功能如前所述。
输入流次序控制2420和数据寄存器库2810取回且保持来自PIB2700的输入流动数据。数据寄存器库2810由多个能够存储所接收的输入数据流的寄存器组成。优选地,寄存器的数量与能够存在于分析器堆栈块2860内的分析器堆栈2430_1至2430_M的最大数量相等,每个寄存器能够保持N个输入符号。
分析器控制FSM 2410控制输入流次序控制2420、数据寄存器库2810、以及切换不同输入缓冲器之间的分析语境的堆栈处理机2830。例如,分析器控制FSM 2410保持指示当前处理的数据是来自于输入缓冲器2300_0、输入缓冲器2300_1、PCI-X输入缓冲器2300_2、还是再循环缓冲器2710的语境状态。这个语境状态被传递到输入流次序控制2420,使其响应数据或依据指令跳过语法中的指令至合适的输入或再循环缓冲器。语境状态还被传递至数据寄存器库2810,使得该寄存器的载入和读出能够访问与当前的语境状态相对应的寄存器。最后,语境状态被传递至堆栈处理机2830,使得压入和弹出指令至堆栈处理机2830以访问分析器堆栈2430_1至2430_M中正确的一个分析器堆栈。
分析器控制FSM决定何时切换分析语境。例如,当堆栈底端的符号在特定的分析器堆栈中出现时,或当因SPU操作而使特定的分析器语境停顿时,分析器控制FSM能够检查下一个分析语境的状态,并且以循环方式继续执行,直至准备分析的分析语境出现。
现在将参照图22中的数据分析流程图对图15A、15B和19-21中模块的基本操作进行描述。流程图2900用于图示说明根据本发明实施方式的方法。
根据判断模块2905,DXP 2800判断新数据而不是与已停顿分析器堆栈相对应的数据是否已经在PIB27000处被接收。在本发明的一个实施方式中,PIB2700内的四个缓冲器都具有唯一的Port ID,当接收到新数据时将其发送至DXP 2800。优选地,再循环缓冲器2710包含其唯一的Port ID以作为每个再循环数据分段的第一个字节。由于PIB2700内的四个缓冲器都具有独立的输入,所以DXP 2800能同时接收多个Port ID。当DXP2800接收到多个Port ID时,最好使用循环仲裁法来决定将以什么次序来分析各端口处所出现的新数据。
在本发明的一个实施方式中,当分析不得不在某个特定流上停顿时,DXP 2800可以保存分析器堆栈。当FSM 2410向堆栈处理机2830发送Control信号以指令其切换分析器堆栈的选择时,保存分析器堆栈。
当新数据并没有接收到时,处理过程返回模块2905,其中DXP 2800等待将由PIB2700接收的新数据。
当接收到新数据时,根据下一个模块2910,DXP 2800将所选的缓冲器的Port ID压入所选的分析器堆栈以作为NT符号,其中所选的缓冲器为在DXP 2800选择分析的PIB2700内的缓冲器,以及在DXP 2800内所选的分析器堆栈为DXP 2800选择存储将要执行的符号的分析器堆栈。每个端口的已加载语法或该语法的一部分可取决于该端口的已加载最初非终结符号而有所不同。例如,如果一个输入端口接收SONET帧而另一个端口接收Ethernet帧,那么各自端口的Port ID的NT符号能够用于自动选择关于其端口的合适语法。
在本发明的一个实施方式中,输入流次序控制2420通过循环仲裁法来选择PIB2700内的缓冲器,堆栈处理机2830选择分析器堆栈块2860中的分析器堆栈。在本发明的优选实施方式例中,FSM 2410向输入流次序控制2420发送信号以选择PIB2700内的缓冲器,向数据寄存器库2810发送Control Reg信号以选择寄存器。同样地,FSM 2410向堆栈处理机2830发送Control信号以选择缓冲器或者动态分配分析器堆栈块2860中的分析器堆栈。
为了图示说明,假定输入缓冲器2300_0具有由DXP选择的其唯一的Port ID,以及选择分析器堆栈2430_1用于存储来自输入缓冲器2300_0的分析数据中由DXP 2800使用的语法符号。在本发明的说明的实施方式中,当堆栈处理机2830从FSM2410分别接收到在Sym Code和Control信号中的Port ID及Push指令时,堆栈处理器2830将Port ID压入分析器堆栈2430_1。在Port ID之前的1位状态标记表示该Port ID为NT符号。
根据下一个模块2920,DXP 2800请求且接收来自所选缓冲器内数据流的N个字节的数据(或其的一部分)。在说明的实施方式中,通过在输入流次序控制2420和在PIB2700内的输入缓冲器2300_0之间联系的DATA/Control信号,DXP 2800请求且接收N个字节的数据。当输入流次序控制2420接收数据后,该数据被存储于数据寄存器控制2810中的所选寄存器,其中数据寄存器控制2810中的所选寄存器由当前分析语境所控制。
根据下一个模块2930,当DXP 2800确定不再等待进一步的输入以及在所选分析器堆栈上的符号不是堆栈底端符号之后,它处理在所选分析器堆栈顶端上的符号和所接收的N个字节数据(或其的一部分)。模块2930包括对该顶端字符是终结符还是非终结符的判断。这个判断由堆栈处理机2830执行,最好是通过读取在分析器堆栈2430_1顶端上的状态标记符,以及向FSM 2410发送状态以作为前缀(P)代码信号。
当确定该符号为终结(T)符号时,在判断模块2935处DXP 2800检验T符号和来自所接收N个字节的下一个字节数据之间是否匹配。
在本发明的优选实施方式中,当将来自堆栈处理机2830的T符号和来自数据寄存器控制2810内所选寄存器的下一个字节数据输入比较器2820时,比较器2820将匹配信号M发送至FSM 2410,该匹配信号M被DXP2400用于检验T符号是否已匹配。通过使分析器堆栈2430_1的符号出栈,堆栈处理机2830向比较器2820的输入发送分析器堆栈2430_1上的T符号。
当确定当前分析器堆栈的顶端的符号为非终结(NT)符号时,在模块2945处DXP 2800向分析器表格2200发送来自分析器堆栈2430_1的NT符号和在来自库2810的所选寄存器中所接收的N个字节。在说明的实施方式中,NT符号和所接收的N个字节被发送至分析器表格接口2840,其中在被发送至分析器表格2200之前将它们连接起来。可选择地,还能将NT符号和所接收的N个字节直接发送至分析器表格2200。在一些实施方式中,所选寄存
器中所接收的N个字节被同时发往SPU2140和分析器表格2200。
优选地,同时将分析器堆栈2430_1上的符号发送至比较器2820、分析器表格接口2450和PRT接口2460。
假定尝试一个有效的模块2935的T符号匹配,当匹配成功,执行返回到模块2920,其中DXP 2800请求且接收来自PIB2700中多达N个字节的附加数据。在本发明的一个实施方式中,当完成T符号匹配之后,DXP 2800将只请求和接收一个字节的流动数据。
当尝试模块2935的匹配并且不成功时,根据下一个模块2940,当语法指示时,DXP 2800可以清除所选分析器堆栈和发出SEP以除去当前输入缓冲器中的剩余当前数据分段。DXP 2800通过向堆栈处理机2830发送控制信号以使剩余符号出栈和将堆栈指针设置指向堆栈底端符号来复位分析器堆栈2430_1。DXP 2800通过经由SPU接口2440向SPU分配器2650发送指令来发出SEP,其中SPU分配器2650分配SPU2140以从SCT取出微指令。当执行时,微指令除去输入缓冲器2300_0中的剩余当前数据分段。然后,执行返回到模块2905,其中对于一个数据输入而不是已停顿分析器语境数据输入,DXP 2800判断此新数据是否已经在PIB 2700处接收。
假定堆栈顶端符号为非终结符,尝试模块2945的匹配而不是模块2935的匹配。当分析器表格2200和连接N个字节数据的NT符存在匹配时,执行继续至模块2950。分析器表格返回与DXP 2800匹配相对应的PR代码,DXP 2800使用该PR代码查找PRT 2250中的产生式规则。在一个实施方式中,在位于PRT 2250内的PRT内存2270中查找产生式规则。
在说明的实施方式中,通过立即分析器表格接口2450和PRT接口2460将PR代码从分析器表格2200发送至PRT 2250。可选择地,能够将PR代码从分析器表格2200直接发送至PRT 2250。
当判断模块2945中的匹配不成功时,根据下一个模块2960,DXP使用来自所选分析器堆栈的NT符以查找PRT 2250中的缺省产生式规则。在一个实施方式中,在位于PRT 2250内的MAPT 2280内存中查找该缺省产生式规则。可选择地,MAPT 2280内存可位于内存块而不是PRT 2250中。
在说明的实施方式中,堆栈处理机2830同时向产生式规则接口2850和分析器表格接口2840发送。可选择地,堆栈处理机2830可以向分析器表格2200和PRT 2250直接发送NT符号。当PRT2250接收到PR代码和NT符号时,它将向PRT接口2850同时发送产生式规则和缺省产生式规则。产生式规则接口2480只向FSM 2410返回合适的规则。在另一个实施方式中,产生式规则和缺省产生式规则都发送至FSM 2410。在又一个实施方式中,PRT 2250只向PRT接口2850发送PR或缺省PR中的一个,取决于PR代码是否发送至PRT2250。
当执行模块2950或模块2960时,两者都进入下一个模块2970。根据模块2970,DXP 2800处理来自PRT 2250的所接收的产生式规则。在本发明的实施方式中,FSM 2410将产生式规则划分为三段,符号段、SEP段以及跨越字节段。如前所述,优选地,每个产生式规则的分段都为固定长度或空结束以使得划分方便准确。
图22的模块2970以类似图18中的模块2590的方式进行操作,具有如下的不同之处。第一,将产生式规则的符号段压入至针对当前语境的正确分析器堆栈。第二,产生式规则的跨越字节部分于操纵针对当前语境的数据寄存器库中的合适寄存器以及合适的输入缓冲器。第三,当SEP被发送至SEP分配器时,指令指出用于由SPU执行语义代码的合适输入缓冲器。
根据下一个判断框2975,DXP 2800判断所选缓冲器中的输入数据是否需要进一步分析。在本发明的实施方式中,当分析器堆栈2430_1的堆栈指针正在指向并非堆栈底端符号的一个符号时,需要进一步分析输入缓冲器2300_0中的输入数据。优选地,当分析器堆栈2430_1的堆栈指针正在指向堆栈底端符号时,FSM 2410从堆栈处理机2830中接收到堆栈空的信号SE。
当不需要进一步分析所选缓冲器中的输入数据时,执行返回到模块2905,其中DXP 2800判断另一个输入缓冲器而不是已停顿分析器的缓冲器,是否具有在PIB 2700处等待的新数据。
当需要进一步分析所选缓冲器中的输入数据时,根据下一个判断模块2985,DXP 2800判断其是否能够继续分析所选缓冲器中的输入数据。在本发明的实施方式中,当仍然需要分析时,由于许多原因,例如依赖于待处理或正在执行的SPU操作,缺少输入数据,具有比在DXP 2800中分析更为优先的其它输入缓冲器等等,所以分析能在指定缓冲器的输入数据处停止。在一个实施方式中,具有优先于输入缓冲器2300_0中的输入数据的其它输入缓冲器可以是事先将其分析器堆栈保存的输入缓冲器,或是具有由语法规定的更高优先级的输入缓冲器。通过Status信号,SEP分配器2650提醒DXP 2800 SPU的处理延时,以及由存储在FSM 2410中的状态值来提醒DXP 2800优先分析任务。
当DXP 2800继续分析当前分析语境时,执行返回到模块2920,其中DXP 2800请求且接收来自所选缓冲器的输入数据中的多达N个字节的数据。
根据下一个模块2990,当DXP 2800不能继续分析时,DXP 2800保存所选分析器堆栈,随后取消选定所选分析器堆栈、数据寄存器库2810中的所选寄存器、以及所选输入缓冲器。在接收来自FSM 2410的切换Control信号之后,堆栈处理机2830通过选择分析器堆栈块2860内的另一个分析器堆栈来保存和取消选定分析器堆栈2430_1。
在接收来自FSM 2410的切换信号之后,输入流次序控制2420通过选择已接收输入数据的PIB 2700内的另一个缓冲器来取消选定输入缓冲器2300_0,以及在接收来自FSM 2410的切换信号之后,数据寄存器库2810通过选择另一个寄存器来取消选定所选的寄存器。当不存在具有在PIB 2700处等待由DXP 2800分析的新数据的另一个缓冲器时,输入缓冲器2300_0、所选寄存器以及分析器堆栈2430_1能够保持有效。
然后,执行返回到模块2905,其中DXP 2800判断另一个输入缓冲而不是已停顿分析器的缓冲是否在PIB 2700处已被接收。
图23表示根据本发明实施方式的语义处理器3100的结构框图。语义处理器3100包括用于缓冲从输入端口3120接收到的信息包数据流的输入缓冲器3140、用于控制在输入缓冲器3140和再循环缓冲器3160处所接收信息包数据的处理的直接执行分析器(DXP)3180、和用于处理信息包的信息包处理器3200。该输入缓冲器3140和再循环缓冲器3160最好为先进先出(FIFO)缓冲器。信息包处理器3200由用于进行信息包分段或用于进行其它操作的执行引擎3220和用于存储和/或增加信息包分段的内存子系统3240组成。
DXP 3180控制输入缓冲器3140(例如,输入“流”)内和再循环缓冲器3160(例如,再循环“流”)的信息包或帧的处理。由于DXP 3180以相同的方式分析来自输入缓冲器3140的输入流和来自再循环缓冲器3160的再循环流,所以以下将只描述输入流分析。
DXP 3180根据当前帧直至当前符号的分析来维持终结符和非终结符的内部分析器堆栈。当分析器堆栈顶端的符号(或一些符号)为终结符时,DXP 3180将输入流报头的数据与终结符进行比较且期望匹配以便继续进行。当分析器堆栈顶端的符号为非终结符时,DXP 3180使用非终结符和当前输入数据来扩展堆栈上的语法生成。当分析继续时,DXP 3180指导执行引擎3220来处理输入分段或执行其它操作。
语义处理器3100使用至少两个表格。在产生式规则表格(PRT)3190中存储有复杂的语法产生式规则。用于取回这些产生式规则的代码存储于分析器表格(PT)3170。对于给定的产生式规则,分析器表格3170中的代码也允许DXP 3180来确定产生式规则信息包处理器3200应当对信息包分段执行的处理过程。
本发明的一些实施方式包括比图23所示更多的元件。因此,在提出更为复杂的实施方式之前,将给出对在图23中所示语义处理器中信息包流的描述。
图24包含有通过图23的语义处理器3100处理已接收信息包的流程图3300。流程图3300用于图示说明本发明的方法。
根据模块3310,在输入缓冲器3140处通过输入端口3120接收信息包。根据下一个模块3320,DXP 3180开始地分析输入缓冲器3140内的信息包报头。在信息包不需要额外的操作或额外的信息包来处理信息包负载的情况下,DXP 3180将完全地分析报头。在信息包需要额外的操作或额外的信息包来处理信息包负载的情况下,DXP 3180将停止分析报头。
根据判断模块3330,询问DXP 3180是否能够完全地分析报头。如果DXP 3180能够完全地分析报头,那么根据下一个模块3370,DXP 3180调用信息包处理器3200中的例行程序来处理信息包负载,语义处理器3100等待下一个将在输入缓冲器3140处经由输入端口3120而接收到的信息包。
如果DXP 3180不得不终止分析报头,那么根据下一个模块3340,DXP 3180调用信息包处理器3200中的例行程序来操作信息包或等待附加的信息包。在完成操作或附加信息包到达的情况下,信息包处理器3200生成调整后的信息包。
根据下一个模块3350,信息包处理器3200将已调整的信息包(或其的一部分)写入再循环缓冲器3160。这种操作可以通过使带有直接内存存取内存子系统3240的再循环缓冲器3160工作,或通过使执行引擎3220从内存子系统3240中读取已调整信息包然后再将已调整信息包写入再循环缓冲器3160来实现。可选择地,为了节省在信息包处理器3200中的处理时间,可向再循环缓冲器3160写入专用的报头而不是整个已调整的信息包。这个专用的报头指导信息包处理器3200来处理已调整的信息包,而不必传送信息包处理器的内存子系统3240的整个信息包。
根据下一个模块3360,DXP 3180开始分析再循环缓冲器3160内的数据报头。然后,执行返回到模块3330,其中询问DXP 3180是否能够完全地分析报头。如果DXP 3180能够完全地分析报头,那么根据下一个模块3370,DXP 3180调用信息包处理器3200中的例行程序来处理信息包负载,语义处理器3100等待下一个将在输入缓冲器3140处经由输入端口3120而接收到的信息包。
如果DXP 3180不得不终止分析报头,那么执行返回到模块3340,其中DXP 3180调用信息包处理器3200中的例行程序来操作信息包或等待附加的信息包,由此生成调整后的信息包。然后,语义处理器3200将已调整的信息包写入再循环缓冲器3160,DXP 3180开始分析再循环缓冲器3160内的数据报头。
图25表示另一种语义处理器实施方式3400。语义处理器3400包含有通过哈斯(hashing)函数或内容可寻址内存(CAM)查找表来存取在动态随机存取内存(DRAM)3480中数据的阵列机器语境数据(AMCD)内存、用于加密、解密或数据认证的密码系统块3440、用于高速缓存发往或来自DRAM3480的语境控制块的语境控制块高速缓存3450、用于高速缓存基本操作中所使用数据的通用高速缓存3460、以及用于高速缓存正在写入DRAM3480和从DRAM3480读取的数据流的流高速缓存3470。语境控制块高速缓存3450优选为软件控制高速缓存,即进程判断何时使用和释放高速缓存线。五个块的每一个都与DRAM3480以及语义代码执行引擎(SEE)相连,其也被称作语义处理器(SPU)3410。当DXP 3180对其发信号时,SEE 3410处理信息包分段或执行其它的操作。当DXP 3180确定SEE任务即将在其分析过程中的某个特定时刻发出时,DXP 3180向SEE 3140发信号以从语义代码表(SCT)3420中加载微指令。然后,将在SEE 3140中执行所下载的微指令,从而处理信息包分段。
图26包含通过图25中的语义处理器3400处理所接收互联网协议(IP)分段信息包的流程图3500。流程图3500用于图示说明根据本发明实施方式的一种方法。
一旦经由输入端口3120在输入缓冲器3140处接收到信息包,并且DXP 3180开始分析输入缓冲器3140内的数据报头时,根据模块3510,由于信息包被确定为一个IP分段的信息包,从而DXP 3180停止分析所接收信息包的报头。优选地,DXP 3180完全分析IP报头,但是停止分析任何属于随后的分层(例如TCP,UDP,iSCSI等等)的报头。
根据下一个模块3520,DXP 3180向SEE 3410发信号以从SCT 3420中下载合适的微指令,并且从输入缓冲器3140中读取所接收到的数据。根据下一个模块3530,SEE 3410通过流动高速缓存3470将所接收的信息包写入DRAM 3480。虽然模块3520和3530表示为两个独立的步骤,但是在SEE 3410同时读取和写入信息包的情况下,它们可作为一个步骤来执行。SEE 3410读取和写入的并发操作通常称为SEE流水线,其中SPU3410作为在语义处理器3400的两个块之间传送流动数据的管道或流水线。
根据下一个判断模块3540,SPU 3410判断是否已分配了用于选择和排序正确IP信息包分段的语境控制块(CCB)。用于选择和排序与IP分段信息包相对应的分段的CCB最好被存储在DRAM 3480中。CCB包含有指向DRAM 3480中IP分段的指针、一个针对没有到达IP分段信息包的位掩码、以及在规定一段时间后迫使语义处理器3400停止等待附加IP分段数据信息包和释放在DRAM 3480内CCB中的存储数据的计时值。
优选地,SPU 3410通过使用AMCD 3430的内容可寻址内存(CAM)的查找功能来判断是否已分配CCB,该查找功能将所接收IP分段信息包的IP源地址与来自所接收IP信息包分段的报头中的标识和协议相结合以用作一个关键字。可选择地,IP分段关键字存储于DRAM 3480内的分立的CCB表格中,以及可利用将所接收IP分段信息包的IP源地址与来自所接收IP信息包分段的报头中的标识和协议相结合来存取关于CAM的IP分段关键字。这个IP分段关键字的任意寻址避免了关键字交迭和依大小排列的问题。
如果SPU 3410确定CCB没有被分配用于对特定IP分段信息包进行分段选择和排序,那么执行进入模块3550,其中SPU 3410分配CCB。优选地,SPU 3410将一个对应于已分配CCB的关键字输入至AMCD 3430内的IP分段CCB表格,该关键字包括所接收IP分段的IP源地址以及来自所接收IP分段信息包的报头中的标识和协议,并且SPU 3410起动位于CCB中的计时器。当接收到指定分段信息包的第一个分段时,保存IP报头至CCB以用于随后的再循环。对于下一个分段,无需保存IP分段。
一旦分配了用于IP分段信息包选择和排序的CCB时,根据下一个模块3560,SPU 3410将指向IP分段(减去其IP报头)信息包的指针存储于CCB内的DRAM 3480。这些分段的指针在CCB中排列成诸如链表。优选地,在接收时,SPU 3410通过标记与所接收分段相对应的一部分掩码来更新在最近分配的CCB中的位掩码。
根据下一个判断模块3570,SPU 3410判断来自信息包的所有IP分段是否都已接收。优选地,通过使用CCB中的位掩码来实现这一判断。在技术领域内的普通技术人员能够理解到存在许多方便获得的技术来实现用于本发明的位掩码或等效的跟踪机制。
如果对于分段信息包没有接收到所有的IP分段,那么语义处理器3400推迟对此分段信息包的进一步处理,直至接收到另一个分段。
如果IP分段已完全接收,根据下一个模块3580,SPU 3410复位计时器,以正确的顺序从DRAM 3480中读取IP分段,并将它们写入再循环缓冲器3160以补充分析和处理。优选地,SPU 3410向再循环缓冲器3160只写入专用的报头和再装配IP信息包(具有未设立分段位)的第一个部分。专用的报头使得DXP 3 180能够指导对存储于DRAM 3480的再装配IP分段信息包进行处理,而不必将所有的IP分段信息包都传送至再循环缓冲器3160。专用的报头可包括指定的非终结符号,其将关于IP的分析器语法和指针加载至CCB。然后,分析器能够正常地分析IP报头,并且进入更高分层(例如TCP)报头的分析。
在本发明的实施方式中,DXP 3180通过循环仲裁法来决定对在再循环缓冲器3160处接收的数据还是在输入缓冲器3140处接收到的数据进行分析。现在关于接收信息包数据流的第一个和第二个缓冲器来讨论循环仲裁法的高层次描述。当DXP 3180完成第一个缓冲器内的信息包分析时,它查找第二个缓冲器以判断是否有可以被分析的数据。如果有,那么分析来自第二个缓冲器的数据。如果没有,那么DXP 3180回顾第一个缓冲器以判断是否有可以被分析的数据。DXP 3180继续这种循环仲裁法直至第一个缓冲器或第二个缓冲器内的数据都可以被分析。
图27包括通过图25的语义处理器3400来处理需要解密和/或认证的已接收信息包的流程图3600。该流程图3600用于图示说明根据本发明实施方式的另一种方法。
一旦在输入缓冲器3140或再循环缓冲器3160处接收到数据,并且DXP 3180开始分析所接收信息包的报头时,根据模块3610,由于确定该信息包需要解密和/或认证,所以DXP 3180停止分析所接收信息包的报头。如果DXP 3180开始分析来自再循环缓冲器3160的信息包报头,优选地,再循环缓冲器3160将只包含前述的专用报头和再装配IP信息包的第一个部分。
根据下一个模块3620,DXP 3180向SPU 3410发信号以下载SCT3420中合适的微指令,并且从输入缓冲器3140或再循环缓冲器3160中读取信息包。优选地,对于没有放置在再循环缓冲器中的数据,SPU 3410将从DRAM 3480而不是再循环缓冲器3160中读取信息包分段。
根据下一个模块3630,SPU 3410将所接收的信息包写入密码系统块3440,其中对信息包进行认证、解密或两者都进行。在优选实施方式中,解密和认证可在密码系统块3440中并行执行。密码系统块3440通过使用三层数据加密标准(TDES)、高级加密标准(AES)、消息摘要5(MD-5),安全哈斯(secure hash)算法1(SHA-1)、Rivest Cipher 4(RC-4)算法等来认证、加密或解密信息包。尽管模块3620和3630显示为两个分立的步骤,但是可以选择将它们作为一个步骤来实现,该步骤为SPU 3410同时读取和写入信息包。
然后,将已解密和/或认证的信息包写入SPU 3410,根据下一个模块3640,SPU 3410将该信息包写入再循环缓冲器3160以进一步处理。在优选的实施方式中,密码系统块3440包括能够从DRAM 3480读出数据和向其写入数据的直接内存存取引擎。通过向DRAM 3480写入已解密和/或认证的信息包,SPU 3410能够从DRAM 3480只读出已解密和/或认证信息包的报头,随后将它们写入再循环缓冲器3160。由于信息包的负载保留在DRAM 3480,所以语义处理器保存处理时间。类似于IP分段,专用的报头能被写入再循环缓冲器来定位分析器以及将CCB信息传送回SPU 3410。
当在语义处理器2400所接收的单个信息包中包含有IP分段和加密/认证时,可能需要多个通向再循环缓冲器3160的通道。
图28还表示了另一种语义处理器的实施方式。语义处理器3700包括语义执行引擎(SPU)群3710,其包含有多个语义执行引擎(SPU)3410-1,3410-2至3410-N。优选地,SPU 3410-1至3410-N彼此相同并且具有相同的功能。SPU群3710连接着内存子系统3240、SPU入口点(SEP)分配器3720、SCT 3420、端口输入缓冲器(PIB)3730、端口输出缓冲器(POB)3750、以及机器中央处理器(MCPU)3771。
当DXP 3180确定SPU任务在分析过程的特定点处发起,那么DXP3180向SEP分配器3720发信号以下载语义代码表(SCT)中的微指令以及从SPU群3710内的多个SPU 3410-1至3410-N中分配一个SPU以执行该任务。然后,已下载的微指令和将执行的任务被发送至已分配的SPU。接着,已分配的SPU执行微指令并由此处理数据信息包。在SEP分配器3720的指导下,SPU能够选择性地从SCT 3420中直接下载微指令。
PIB 3730包括至少一个网络接口输入缓冲器、再循环缓冲器、以及外设元件互连(PCI-X)输入缓冲器。POB 3750包括至少一个网络接口输出缓冲器和外设元件互连(PCI-X)输出缓冲器。端口块3750包括一个或多个端口,每个端口都包括有物理接口,例如关于以太网、光纤信道、802.11x、通用串行总线、Firewie规范的光学、电学或无线电频率驱动器/接收器,或者其它的物理层接口。优选地,端口块3740的端口数量相应于PIB 3730的网络接口输入缓冲器的数量和POB 3750的输出缓冲器的数量。
PCI-X接口3760连接着PIB 3730内的PCI-X输入缓冲器、POB 3750内的PCI-X输出缓冲器、以及外部PCI总线3780。PCI总线3780能够连接其它的PCI可用元件,例如磁盘驱动器,关于附加网络端口的接口等。
MCPU 3771与SPU群3710和内存子系统3240相连接。MCPU 3771执行语义处理器3700所要求的任何功能,这些功能能够利用在标准硬件上运行的传统软件来适度实现。这些功能通常都是罕见的、非严格时间要求的功能,由于复杂性而不能保证其被SCT 3420包含。优选地,MCPU3771还能够与SPU群的分配器3720通信以请求SPU为MCPU执行任务。
在本发明的实施方式中,内存子系统3240进一步包括DRAM接口3790,其将连接密码系统块3440、语境控制块高速缓存3450、通用高速缓存3460和流动高速缓存3470连接至DRAM 3480和外部的DRAM3791。在这个实施方式中,AMCD 3430直接连接至外部TCAM 3793,TCAM 3793又依次连接至外部的SRAM(静态随机存取内存)3795。
图29包含有通过图28的语义处理器3700来处理所接收的互联网小型计算机系统接口(iSCSI)数据的流程图3800。流程图3800用于图示说明根据本发明实施方式的另一种方法。
根据模块3810,在启动器和用于传输iSCSI数据的目标语义处理器3700之间建立具有至少一个传输控制协议(TCP)会话的iSCSI连接。语义处理器3700包含在PT 3160和PRT 3190中的合适语法和在SCT3420中的微代码以建立TCP会话,然后通过MCPU 3771来处理iSCSI连接的初始登录和认证。在一个实施方式中,SPU群3810中的一个或多个SPU组织和维持TCP会话的状态,包括分配在DRAM 3480中用于TCP再排序的CCB、窗口调整大小的限制以及如果在规定时间帧内没有来自启动器的TCP/iSCSI信息包到达时用于结束TCP连接的计时器。TCP的CCB包括有用于当MCPU 3771建立iSCSI连接时使该CCB与iSCSI的CCB相关联的字段。
在建立了与启动器的TCP会话后,根据下一个模块3820,语义处理器3700等待与在模块3810中建立的TCP会话相对应的TCP/iSCSI信息包到达PIB 3730的输入缓冲器3140。由于语义处理器3700具有多个用于处理输入数据的SPU 3140-1至3140-N,所以在等待下一个与在模块3810中建立的TCP会话相对应的TCP/iSCSI信息包时,语义处理器3700能够并行接收和处理多个信息包。
经由端口块3740的输入端口3120,在PIB 3730的输入缓冲器3140处接收TCP/iSCSI信息包,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中已接收信息包位置的指针至TCP CCB,以及重新起动TCP CCB中的计时器。然后,释放已分配的SPU以及按照DXP 3180的决定可将其分配给其它进程。
根据下一个模块3840,若必要,则重新排序已接收的TCP/iSCSI信息包以确保负载数据的正确次序。正如本领域中所公知,如果所有的前述信息包都已到达,那么TCP信息包被认为是依正确次序排列的。
当确定已接收到的信息包是依正确次序排列时,负责的SPU向SEP分配器3720发信号以从SCT34220中下载用于iSCSI再循环的微指令。根据下一个模块3850,已分配的SPU将iSCSI报头、来自TCP报头的TCP连接ID以及iSCSI非终结符合并以生成专用的iSCSI报头。然后,已分配的SPU将这个专用的iSCSI报头写入PIB 3730内的再循环缓冲器3160。可选择地,利用其所对应的iSCSI负载可将专用的iSCSI报头发送至再循环缓冲器3160。
根据下一个模块3860,分析专用的iSCSI报头,以及语义处理器3700处理iSCSI负载。
根据下一个判断模块3870,询问在已接收的TCP/iSCSI信息包中是否存在另一个iSCSI报头。如果YES,那么执行返回到模块3850,其中使用在已接收的TCP/iSCSI信息包中的第二个iSCSI报头来处理第二个iSCSI负载。正如本领域中所公知,在单个TCP/iSCSI信息包中可存在多个iSCSI报头和负载,由此对于任意的给定iSCSI信息包,可通过再循环缓冲器3160和DXP 3180发送多个信息包分段。
如果NO,那么模块3870返回执行到模块3820,其中语义处理器3700等待与模块3810中建立的TCP会话相对应的另一个TCP/iSCSI信息包。然后,释放已分配的SPU以及按照DXP 3180的决定来将其分配给其它进程。
正如本技术领域的技术人员所能够理解的,当语义处理器3700接收的单个信息包中包含加密、认证、IP分段和iSCSI数据处理的任意组合时,信息包的多个分段都可以经过再循环缓冲器3160传递。
内存子系统
图30更为详细地表示内存子系统3240。SPU 3710群和ARM 3814与内存子系统相连接。在可替换的另一个实施方式中,ARM 3814通过SPU3710连接至内存子系统3240。内存子系统3240包括多个不同的高速缓存区3460,3450,3470,3430,3440和3771,它们都单独适配于不同类型的内存存取。这些多个高速缓存区3460,3450,3470,3430,3440和3771通常被称作高速缓存区3825。SPU 3710和ARM 3814与任何一个不同的高速缓存区3825相通信,然后,这些高速缓存器区又通过主DRAM仲裁器3828与外部的动态随机存取内存(DRAM)3791A相通信。然而,在一个实现方案中,CCB高速缓存3450可能通过CCB DRAM控制器3826而与单独的CCB DRAM 3791B相通信。
不同的高速缓存区3825改善了关于不同数据处理操作的DRAM数据传送。普通高速缓存3460作为被SPU 3710用于通用内存通路的传统高速缓存。例如,普通高速缓存3460可用作通用的随机内存通路,其用于从事普通控制和数据存取操作。
在CCB高速缓存3450中高速缓存线的置换由软件指令来单独控制。这与传统的高速缓存操作相反,在传统的高速缓存操作中,硬件根据谁最后占用高速缓存线位置来控制高速缓存的内容。用软件来控制CCB高速缓存区3450可避免高速缓存过早地重新加载高速缓存线,在从外部DRAM 3791B更新或加载之前,需要由一个或多个SPU 3710来对高速缓存线进行一些中间处理。
流动高速缓存3470主要用于处理流信息包数据。流动高速缓存3470可避免流信息包的传送置换所述普通高速缓存3460中的所有条目。流动高速缓存3470作为高速缓存而不是先进先出(FIFO)存储缓冲器来实施,这是因为一个或多个SPU 3710可能需要读取数据而其仍然位于流动高速缓存3470中。如果使用FIFO,那么流动数据只能在它被加载至外部DRAM之后才能读取。流动高速缓存3470包括多个缓冲器,其中每个都包含有不同的信息包流。这使得不同的SPU 3710能够存取位于流动高速缓存3470上的不同信息包流。
MCPU 3771主要用于指导来自ARM 3814的访问。MCPU 3771改善了在ARM 3814和外部DRAM 3791A之间触发模式存取的效率。ARM3814包括内部高速缓存3815,在一个实施方式中其为32位宽。MCPU 3771经专门指导以处理32个触发位的传送。MCPU 3771可缓冲多个来自ARM3814的32位触发,然后当高速缓存线达到数据量的一定门限时,触发外部DRAM 3791A。
在一个实施方式中,每个高速缓存区3825都能够物理地映射在外部DRAM 3791A和3791B中的不同关联区域。这一点再加上分立的MCPU3771能够避免在ARM 3814和外部DRAM 3791A之间的指令传送被在其它高速缓存区中进行的数据传送所污染。例如,SPU 3710能够通过高速缓存区3460、3450和3470来加载数据而不受ARM 38 14所使用指令空间的污染。
S-代码
图31更为详细表示单个SPU 3410如何初始化内存通路至不同的高速缓存区3825。为了简便,在图31中只表示有普通高速缓存3460、CCB高速缓存3450、以及流动高速缓存3470。
也可称为SPU代码(S-代码)的微指令3900将从直接执行分析器3180(图1)发送至SPU子系统3710。在图32A中更为详细地表示了微指令3900的实例。微指令3900可包括目标字段,其指示单个SPU 3410使用哪个高速缓存区3825来存取数据。例如,在图32A中的高速缓存区3914指引SPU 3410使用CCB高速缓存3450。目标字段3914也可用于指引SPU3410来访问MCPU接口3771(图30)、再循环缓冲器3160(图23)或输出缓冲器3750(图28)。
返回参照图31,每个高速缓存区3825都具有在SPU子系统3710中的一组关联队列3902。单个SPU 3410向队列3902发送数据存取请求,而后该队列能够依序访问不同高速缓存区3825。队列3902还允许不同的SPU 3410同时管理或初始化至不同高速缓存区3825的内存通路。
图32B表示在SPU3410和高速缓存区3825之间发送的高速缓存请求3904的实例。该高速缓存请求3904包括地址和任何关联的数据。另外,高速缓存请求3904包括标识与该请求3904相关联的SPU3410的SPU标签3906。该SPU标签3906告诉高速缓存区3825向哪个SPU 3410发回所请求的任何数据。
仲裁
返回参照图30,特别值得注意的是DRAM仲裁器3828,在一个实施方式中其使用循环仲裁法来判断来自不同数据高速缓存区3825的数据何时可以使用外部DRAM 3791A。在循环仲裁法方案中,主DRAM仲裁器3828以预定的顺序来回运行以检查任何一个高速缓存区3825是否请求访问外部DRAM 3791A。如果特定的高速缓存区3825请求内存访问,那么在其所关联的循环周期内准许其访问外部DRAM 3791A。然后,仲裁器3828检查循环次序中的下一个高速缓存区3825是否请求内存访问。如果下一个高速缓存区3825没有请求内存访问,那么仲裁器3828检查循环次序中的下一个高速缓存区3825。这个过程继续服务于循环次序中的每个高速缓存区3825。
在CCB高速缓存3450和外部DRAM 3791A之间的通路能够消耗大量的带宽。对于在CCB高速缓存3450和分立的外部CCB DRAM 3791B之间的CCB传送,可单独使用CCB DRAM控制器3826。对于连接两个不同的存储体DRAM 3791A和3791B,可分别使用两条不同的总线3834和3836。于是,主DRAM仲裁器3828通过总线3834来分别仲裁其它高速缓存区3460、3470、3430、3440和3771的外部内存通路。如果CCB高速缓存3450没有通过单独的CCB控制器3826来连接外部DRAM,那么主DRAM控制器3828将仲裁通往关于全部高速缓存区3825的外部DRAM3791A的所有通路。
在另一个实施方式中,通向外部DRAM 3791A和外部CCB DRAM3791B的通路相互交替使用。这意味着CCB高速缓存3450和其它高速缓存区3825既能够使用通向外部DRAM 3791A的通路,又能够使用通向外部CCB DRAM 3791B的通路。这使得两个存储体3791A能被同时访问。例如,CCB高速缓存3450能够对外部内存3791A进行读操作,与此同时还能够对外部内存3791B进行写操作。
普通高速缓存
图33更为详细地表示普通高速缓存的一个实例。此普通高速缓存3460从一个SPU 3410(图31)中接收物理地址3910。根据来自物理地址3910的低位地址空间(LOA)3916来访问高速缓存线3918。
在一个实例中,高速缓存线3918可能相当小,或者具有不同于其它高速缓存区3825所使用高速缓存线的大小。例如,高速缓存线3918的规格可能比在流动高速缓存3470和CCB高速缓存3450中所使用高速缓存线的规格小很多。这将提供更多的专用内存通路以用于由不同高速缓存区3825处理的不同类型数据。例如,高速缓存线3918可能只有16个字节长度,用于一般控制数据处理。另一方面,用于流动高速缓存3470的高速缓存线可能具有更大的高速缓存线,例如64个字节,用于传送更大的数据块。
每个高速缓存线3918都具有关联的有效标志3920,其指示高速缓存线上的数据是否有效。该高速缓存线3918还具有关联的高位地址(HOA)字段3922。普通的高速缓存3460接收物理地址3910,然后为与LOA 3916相关的高速缓存线3918检查HOA 3922和有效标志3920。如果有效标志3920指示有效高速缓存记录并且HOA3922与物理地址3910的HOA3914相匹配,那么高速缓存线391 8的内容被读至所请求的SPU 3410。如果标志字段3920指示无效记录,那么高速缓存线3918的内容被写入外部DRAM 3791A(图30)中的相应地址上。
如果标志字段3920指示有效高速缓存记录,但HOA3922与物理地址3910的HOA3914不匹配,那么高速缓存线3918的记录之一被自动地下载至外部DRAM 3791A,并且与物理地址3910相关的外部DRAM 3791A的内容被加载到与LOA 3916相关的高速缓存线3918上。
语境控制块(CCB)高速缓存
图34更为详细地表示了语境控制块(CCB)高速缓存3450。CCB 3450包括多个缓冲器3940和关联的标签3942。与传统4路相关高速缓存不同,该CCB 3450的操作从本质上类似于32路相关高速缓存。多个CCB缓冲器3940和相关标签3942由SPU 3410发出的一组软件指令来控制。软件指令3946包括一组高速缓存/DRAM指令,其用于控制CCB高速缓存3450和外部DRAM 3791A或3791B(图30)之间的数据传送。一组SPU/高速缓存指令3948用于控制在SPU 3410和CCB高速缓存3450之间的数据传送。软件指令3946包括ALLOCATE,LOAD,COMMIT AND DROP等操作。软件指令3948还包括READ和WRITE等操作。
图35表示在SPU 3410和CCB高速缓存3450之间所发送的CCB指令3954的一些实例。这些软件指令3944中的任一条都可以由任意的SPU3410于任意时刻发送至CCB高速缓存3450。
参照图34和35,一个SPU 3410向CCB高速缓存3450发送ALLOCATE指令3954A以首先分配一个CCB缓冲器3940。这条ALLOCATE指令3954A可以包括特定的内存地址或CCB标签3956,其与在包含有CCB的DRAM 3791中的物理地址相关联。CCB高速缓存3450中的控制器3950对所接收CCB地址3956和关联每个缓冲器3940的地址或标签进行对等匹配。关联每个缓冲器3940的地址包含于相关的标签字段3942内。
如果地址/标签3956并没有包含于任何标签字段3942内,那么控制器3950对指定的CCB标签3956分配一个未使用的缓冲器3940。如果在一个标签字段3942中已存在地址,那么控制器3950使用与指定CCB标签3956相关联的缓冲器3940。
控制器3950向所请求的SPU 3410发回应答3954B,其指示CCB缓冲器3940是否已成功分配。如果缓冲器3940已成功分配,那么控制器3950映射来自所有SPU 3410的所有CCB指令3944,其对最近分配的缓冲器3940使用CCB标签3956。
存在着这样的情况,其中SPU 3410可能并不关心在外部DRAM 3791中关于特定内存地址的当前数据。例如,当在外部DRAM 3791中的数据将被重写时。在传统的高速缓存架构中,将当前不包含在高速缓存中的任意指定地址的内容从主内存自动地加载到高速缓存内。然而,ALLOCATE指令3946只是分配一个缓冲器3940,而不必首先从DRAM 3791中读出数据。由此,缓冲器3940能够被用作中间数据处理的便笺式内存,而不再始终读取外部DRAM 3791的数据或将缓冲器3940中的数据写入外部DRAM 3791。
在一个高速缓存3940和外部DRAM 3791之间完成数据传送需要LOAD和COMMIT软件指令3946。例如,将LOAD指令3956C从SPU 3410发送至控制器3950,以从外部DRAM 3791加载关联特定CCB标签3956的CCB至CCB高速缓存3450中的相关缓冲器3940。控制器3950将CCB标签3956转换为DRAM物理地址,然后从DRAM 3791中取出与物理DRAM地址相关联的CCB。
SPU 3410发送COMMIT指今3956C从而将缓冲器3940的内容写入与CCB标签3956相关联的DRAM3791中的物理地址。COMMIT指令3956C还使得控制器3950取消分配缓冲器3940,使其能够分配给另一个CCB。然而,另一个SPU 3410可以随后请求关于相同CCB标签3956的缓冲器分配。控制器3950使用当前位于缓冲器3940的已有CCB,若该CCB还存在于一个缓冲器3940中。
DROP指令3944通知控制器3950放弃与特定CCB标签3956相关联的特定缓冲器3940的内容。控制器3950只需通过取消分配CCB高速缓存3450中的缓冲器3940就可放弃该CCB,而不始终加载缓冲器的内容至外部DRAM 3791。
READ和WRITE指令3948用于CCB高速缓存3450和SPU 3410之间的CCB数据传送。当缓冲器3940已事先分配时,READ和WRITE指令只允许在SPU 3410和CCB高速缓存3450之间的数据传送。
如果当前所有可用的缓冲器3940都在使用中,那么在CCB高速缓存3450处理当前ALLOCATE指令之前,一个SPU 3410将不得不COMMIT一个当前正被使用的缓冲器3940。控制器3950清楚哪些缓冲器3940被指派给不同的CCB地址。SPU 3410只需计数当前已分配的缓冲器3940的数量。如果这个计数值达到可用缓冲器3940的总数,那么一个SPU 3410发出COMMIT或DROP指令以释放一个缓冲器3940。在一个实施方式中,存在至少是SPU 3410数量的两倍的缓冲器。这使得在相同时刻所有的SPU 3410都具有两个可用的缓冲器3940。
因为CCB高速缓存3450的操作由软件控制,SPU 3410控制释放缓冲器3940的时间以及将数据传递给外部内存3791的时间。另外,一个最初为CCB分配缓冲器3940的SPU3410与发出LOAD指令的SPU 3410可以不相同,或者可以不同于通过发出COMMIT或DROP指令而最终释放缓冲器3940的SPU 3410。
指令3944容许在CCB高速缓存3450和DRAM3791之间完全的软件控制数据传递。当信息包数据正被一个或多个SPU 3410进行处理时或当信息包处理期间确定特定的CCB不再需要加载至DRAM 3791或从DRAM3791读取时,这样做就具有显著的优点。例如,一个SPU 3410可以确定在信息包处理期间信息包具有不正确的校验和值。信息包能从CCB缓冲器3940处进行DROPPED,而不必始终将信息包加载至DRAM 3791。
在一个实施方式中,将缓冲器3940实现为高速缓存线。因此只有一个高速缓存线一直需要写回外部DRAM内存3791。在一个实施方式中,高速缓存线是512个字节,字宽为64个字节。控制器3950能够认识哪条高速缓存线已调整以及在COMMIT指令期间只写回缓冲器3940中已改变的高速缓存线。
图36表示当处理TCP会话时如何使用CCB的实例。语义处理器3100(图23)可用于处理任何类型的数据;而所示的TCP信息包用于解释。在这个例子中,信息包3960包括以太网报头3962、IP报头3964、IP源地址3966、IP目的地址3968、TCP报头3970、TCP源端口地址3972、TCP目标端口地址3974、和负载3976。
直接执行分析器3180指示一个或多个SPU3410从IP报头3964中获得源地址3966和目标地址3968以及从TCP报头3970中获得TCP源端口地址3972和TCP目标端口地址3974。这些地址被放置在输入缓冲器3140(图23)。
SPU 3410向AMCD 3430中的CCB查询表3978发送4个地址值3966、3968、3972和3974。查询表3978包括IP源地址字段3980、IP目的地址字段3982、TCP源端口地址字段3984和TCP目的端口地址字段3986的阵列。每个唯一的地址组合都具有关联的CCB标签3979。
AMCD 3430试图将4个地址值3966、3968、3972和3974与CCB查询表3978中的4个条目进行匹配。如果不匹配,那么SPU 3410将为与信息包3960相关联的TCP会话分配新CCB标签3979,并将4个地址值写入表格3978。如果匹配,那么AMCD 3430返回匹配地址组合的CCB标签3979。
如果返回CCB标签3979,那么SPU 410使用已返回的CCB标签3979以进行信息包3960的后续处理。例如,SPU 3410可加载来自信息包3960的特定报头信息至位于CCB高速缓存3450中的CCB。另外,SPU 410也可向流动高速缓存3470(图30)发送来自信息包3960的负载数据3976。
图37表示一些包含于CCB3990中的控制信息。CCB3990可能包括CCB标签3992和会话ID3994。会话ID3994可包括TCP会话的源地址和目标地址。CCB3990还包括连接列表指针3996,其标识在包含有信息包负载数据的外部内存3791中的位置。CCB3990还可包括TCP次序号3998和确认号4000。CCB3990包括处理TCP会话所需的任何其他参数。例如,CCB3990可包括接收窗字段4002、发送窗字段4004和定时器字段4006。
所有TCP控制字段位于相同的关联CCB3990中。这样使得SPU 3410能够快速访问来自CCB高速缓存3450中相同CCB缓冲器3940的相同TCP会话的所有相关联字段。而且,由于CCB高速缓存3450由软件控制,所以SPU 3410能在CCB高速缓存中保持CCB3990直至所有所需处理由所有不同SPU 3410完成。
还可以存在着与不同OSI层关联的CCB 3990。例如,存在与SCSI会话相关联和为其而分配的CCB3990以及与SCSI会话中的TCP会话相关联和为其而分配的其他CCB3990。
图38表示了如何在CCB高速缓存3450中使用标记4112来表示SPU3410完成处理缓冲器3940中CCB内容的时间,以及释放缓冲器3940以便由另一个SPU访问的时间。
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可被指导以加载信息包负载1108到流动高速缓存3470的缓冲器4114。当然,任意的SPU 3410组合也能够处理IP信息包4100中的任何报头和负载信息。
IP信息包4100的所有报头信息能够与相同的CCB 4110相关联。SPU1-3通过CCB高速缓存3450来保存和访问CCB4110。CCB 4110也包括完成位掩码4112。当完成SPU 3410任务时,SPU 3410逻辑“或”(OR)完成掩码4112的位。例如,当在CCB 4110中完成IP报头4102的处理时,SPU#1设置完成位掩码4112的第一个位。当完成对TCP报头4104的处理时,SPU#2设置完成位掩码4112的第二个位。当设置完成位掩码4112中的所有位时,表明在IP信息包4100中完成SPU处理。
这样,当对负载4108的处理完成时,SPU#N检查完成掩码4112。如果掩码4112中的所有位都已设置,那么SPU#N可以例如发送COMMIT指令给CCB高速缓存3450(见图34)其指导CCB高速缓存3450将包含CCB 4110的高速缓存线的内容COMMIT(提交)给外部DRAM内存3791。
流动高速缓存
图39显示了更为详细的流动高速缓存3470。在一个实施方式中,流动高速缓存3470包括用于发送或接收DRAM 3791数据的多路高速缓存4200。在一个例子中,高速缓存4200的宽度为256字节,每个高速缓存队列都包括标签字段4202、VSD字段4204和缓冲器4200的64字节部分。这样,4条高速缓存线与每个缓冲器4200相关联。在一种实施例中,流动高速缓存3470包括各个SPU3410的两个缓冲器4200。
VSD字段4204包括表示高速缓存队列有效或无效的有效值(Validvalue)、表示脏或干净的高速缓存队列状态值(Status value)、和表示读、写或无合并状况的指示值(Direction value)。
特别值得注意的是高速缓存控制器4206实施的预取操作。物理地址4215从一个SPU3410中发送到控制器4206,请求读取DRAM 3791。控制器4206将高速缓存线中的一个与物理地址相关联,例如高速缓存线4210。然后,流动高速缓存控制器4206自动预取4217与缓冲器4200中字节的相同FIFO顺序相关联的三种其他64字节的高速缓存线4212、4214和4216。
预取操作4271的一个重要内容是标签字段4202关联不同缓冲器4200的方法。控制器4206使用标签字段4202来识别特定缓冲器4200。控制器4206选择与标签字段4202相关联的物理地址4218部分以避免缓冲器4200包含相邻的物理地址位置。例如,控制器4206使用与标签字段4202相关联的物理地址4218的中位比特4220。这样可避免3个相邻高速缓存线4212、4214、和4216的预取操作4217与关联高速缓存线4210的流动数据操作发生冲突。
例如,一个SPU3410可向与物理地址4218相关联的流动高速缓存3470发送指令以请求从DRAM内存3791下载信息包数据到与特定缓冲器4200相关联的第一个高速缓存线4200。标签数值为4202的缓冲器4200与物理地址4218的一部分相关联。然后,控制器4206尝试实施预取操作1217以加载与相同缓冲器4200相关联的高速缓存线4212、4214和4216。然而,由于SPU 3410正在使用缓冲器4200,所以停止预取操作4217。另外,当允许完成预取操作4217时,它们能够覆盖写缓冲器4200中根据其他SPU指令已经加载的高速缓存线。
通过从物理地址4218的中位4220获得标签值4202,每个连续的256字节的物理地址边界将被放置在不同的内存缓冲器4200中,由此避免预取操作中的冲突。
AMCD
图40描述了图28的AMCD3430的一实施例的功能框图。SPU群4012与AMCD 3430直接连接,而ARM 4014通过SPU群4012的SPU 3710可与AMCD 3430相连。AMCD 3430为SPU 3410提供内存查找工具。在一个例子中,SPU3410确定先前所保存的条目存储在诸如外部DRAM3719(图28)的内存中的位置。AMCD 3430的查找工具能够查找到数据在互联网系统的任何存储位置,而且对外部DRAM 3791没有限制。
当系统是非学习模式时,SPU 3410保持自身的内存映射表,以及SPU通过增加、删除和调整条目来管理该映射表。当系统是学习模式时,SPU3410通过执行指令来保持该映射表,即在增加条目时搜索TCAM内存,或者在删除条目时搜索TCAM内存。在这两种模式中,SPU 3410使用关键字数值来执行各种不同类型的搜索。
图40的ADMC 3430包括一组查找接口(LUIF)4062。在一个实施方式中,AMCD 3430有8个LUIF 4062。图示的具体实例LUIF包含一组64位的寄存器4066。寄存器4066提供数据存储和进行内存查询的指令,查询结果也经由寄存器4066返回。在一个实施方式中,存在用于查询指令的单个64位寄存器,以及多达7个64位寄存器来保存数据。并非所有数据寄存器都需要被使用。在本发明的一些实施方式中,SPU群4012和LUIF 4062之间通信接口的宽度为64位,这便于包含LUIF 4062中的64位寄存器。在图41中描述了示例指令结构,其内容将在下面进行描述。
因为在设计系统中存在有限数量的LUIF 4062,并且LUIF在某个时刻不能被多于一个的SPU 3410访问,所以存在向SPU 3410分配空闲LUIF的机制。空闲列表4050管理LUIF 4062的使用。当SPU 3410想要访问LUIF 4062时,SPU读取空闲列表4050以确定哪个LUIF4062正在使用。在读取空闲列表4050之后,返回下一个可用的空闲LUIF 4062的地址和指示LUIF4062可被使用的数值。如果关于LUIF 4062的返回值是有效的,那么SPU 3410能够确实地控制LUIF。然后在空闲列表4050中产生条目,接着特定的LUIF 4062就不能为其他的任何一个SPU 3410所使用,直到第一个SPU释放该LUIF。当第一个SPU3410完成搜索和获得搜索返回结果之后,SPU将已使用的LUIF标识返回空闲列表4050,LUIF可再次为任意SPU 3410所使用。如果空闲列表4050中没有空闲LUIF 4062,将通知所请求的SPU3410没有空闲LUIF,以及迫使SPU稍后再尝试以获得空闲LUIF 4062。空闲列表4050也提供流水线功能,其在等待处理其他SPU请求时,允许SPU 3410开始加载索引。
如下所述,所选的LUIF将查询指令和数据发送给仲裁器4068。仲裁器4068选择由哪个特定LUIF4062来访问特定TCAM控制器。在这个所述实施方式中,存在着外部TCAM控制器4072和内部TCAM控制器4076。外部TCAM控制器4072连接外部TCAM4082,而外部TCAM 4082又连接外部SRAM 4092。类似地,内部TCAM控制器4076连接内部TCAM4096,而内部TCAM 4096又连接到内部SRAM4086。
通常,在系统中任意一个时刻只有一个TCAM是有效的,无论是内部TCAM4096或外部TCAM4082。换句话说,如果系统包括外部TCAM和SRAM 4082、4092,那么AMCD 3430与这些外部内存相连接。类似地,如果系统不包括外部TCAM和SRAM内存4082、4092,那么AMCD3430只与内部TCAM 4096和内部SRAM 4086相连接。如同下述,根据外部内存是否存在,仅使用一个TCAM控制器4076或4072。不被AMCD3430使用的特定控制器4072、4076在设置过程中将被“关闭”。在一个实施方式中,当系统初始化时就向AMCD 3430发送设置指令,其指明外部TCAM 4082是否存在。如果外部TCAM 1082存在,那么“关闭”内部TCAM控制器4076,使用外部TCAM控制器4072。相反,如果外部TCAM4082不存在,那么“关闭”外部TCAM控制器4072,使用内部TCAM控制器4076。虽然优选使用仅一个TCAM控制器,无论是4076或4072,但是为了简便,仍可使用TCAM控制器4076和4072来实现AMCD 3430。
在一实施例中,内部TCAM 4096包括512个条目,内部SRAM 4086也包括有512个条目。在其他的实施例中,外部TCAM 4082包括64K至256K个条目(一个条目为72位,多个条目组合在一起产生宽度大于72位的搜寻),而内部SRAM 4092中也有与之相匹配的条目数目。SRAMS4086、4092的位宽通常为20位,而TCAM 4082、4086则更宽。例如,内部TCAM 4096宽度可能为164位;例如,而外部TCAM 4082宽度在72位和448位之间。
如上所述,当SPU 3710执行查询,其自信息包数据生成关键字。SPU3410保留一个LUIF4062,然后将指今和数据加载到LUIF4062的寄存器4066。当加载指令和数据时,在一个TCAM4096或4082中开始搜索。来自寄存器4066的指令被传递到仲裁器4068,该仲裁器4068接着将数据发送到合适的TCAM 4096、4082。例如,假设外部的TCAM 4082存在,因而也正在使用。对于TCAM指令,SPU3410发送的数据被提交给外部TCAM控制器4072,该外部TCAM控制器4072将数据提交至外部TCAM4082。当外部TCAM 4082找到与关键字匹配的数据时,从外部SRAM 4092取回所对应的数据。在一些实施方式中,SRAM 4092保存指向内存位置的指针,该内存位置包含有由保存在TCAM内的关键字数值来索引的所需数据。通过由最初请求的SPU 3410利用的最初LUIF4062的寄存器4066,指针从SRAM 4092返回至所请求的SPU 3410。在SPU3410接收到指针数据之后,其通过将地址放入空闲列表4050来释放LUIF 4062,以便另一个SPU 3410使用。如此,LUIF 4062能够对DRAM 3791或系统中任何位置的其他内存进行搜索、写入、读出或标准的维护操作。
利用这些方法,TCAM 4082或4096可用于在CCB DRAM 3719(图30)中快速查询。TCAM 4082或4096也可用于在同一时刻需要对CCB查找大量IPv6会话的应用。TCAM 4082或4096也用于实现静态路由表,该静态路由表需要查找不同IP会话的端口地址。
一组配置寄存器表格4040与在执行内存查询时由SPU3410发送的关键字数值一起使用。在一个实施方式中,有16个表格条目,每个条目的索引为4位指示器0000-1111。例如,保存在配置表4040中的数据包括有在请求查询过程中的关键字规格。能够使用不同规格的关键字,例如64、72、128、144、164、192、256、288、320、384、和448等。特定的关键字规格和将要寻找键入数据的位置,以及其他各种数据都保存在配置表4040中。参见图41,表格标识号在19∶16的比特位置中出现,其指示将要使用配置表4040中的哪个数值。
图42举例说明了一例仲裁器4068。仲裁器4068连接至各个LUIF4062以及多路选择器4067,该多路选择器连接至内部TCAM控制器4076和外部TCAM控制器4072。如上所述,在本发明的一些实施方式中,在某个时刻仅有一个TCAM控制器4076或4072有效,在启动时其由发送至多路选择器4067的信号所控制。在这个实施方式中,仲裁器4068无法区分其输出信号是发送至内部TCAM控制器4076还是发送至外部TCAM控制器4072。作为替代,仲裁器4068只发送输出信号给多路选择器4067,该多路选择器根据输入至多路选择器的设定值状态来向合适的TCAM控制器4076、4072发送查询请求。
仲裁器4068的功能是选择哪个LUIF 4062,在图42中该LUIF 4062被标识为LUID-1-LUIF-8,其将下一个由所选TCAM控制器4076或4072使用。按照仲裁器4068的最简单形式,可仅将其实现为循环仲裁器,在其中连续地选择各个LUIF4062。如下所述,在更加智能的系统中,仲裁器4068使用既往的历史来赋予优先级数值,其说明下一次应当选择哪个LUIF 4062。
在更加智能的仲裁器4068中,优先级系统表明哪个LUIF4062是最近使用的,并将这一点作为选择用于下一个查询操作的LUIF 4062的判别因素。图43举例说明了在典型的智能化仲裁器4068中的仲裁实例。在时刻A,各优先级的数值已被初始化为“0”,以及LUIF-3和LUIF-7都具有未决的操作。由于仲裁器4068每次只选择一个LUIF4062,而因为在这种情况下所有具有未决操作的LUIF都为相同的优先级“0”,所以仲裁选择LUIF-3。一旦选择了LUIF-3,其优选级就被设置为“1”。在时刻B,LUIF-3具有新的未决操作,而LUIF-7仍有未解决的操作。在这种情况下,由于LUIF-7的优先级高于LUIF-3,所以仲裁器4068选择了LUIF-7。这样就确保了各个LUIF 4062的公平使用,而且没有一个LUIF能独占查询时间。
在时刻C,LUIF-1和LUIF-3都具有未决的操作,因为LUIF-1有较高优先级,所以仲裁器4068选择LUIF-1,即使LUIF-3的操作已经在更长时间内没有解决。最后,在时刻D,只有LUIF-3具有未决的操作,所以仲裁器4068选择LUIF-3,并将其优先级提高到“2”。
采用这种方式,仲裁器4068实施智能化的循环仲裁。换句话,一旦选择了特定的LUIF 4062,其移动至“线末端”,在再次选择特定LUIF之前,将服务于具有未决操作的其他所有LUIF。这将平衡各LUIF 4062在其查询过程中所使用的时间,确保没有一个特定的LUIF能够独占所有的查询带宽。
上述系统可使用执行一些或所有操作的专用处理器系统、微控制器、可编程逻辑器件、或微处理器。上述的一些操作可用软件实现,而其他的操作用可由硬件实现。
本技术领域的熟练人员应认识到,在本发明的范围内可能存在其他的功能性分区。而且,哪些功能在普通的集成电路上实现而哪些不能实现可根据应用而改变。
最后,尽管说明书在几个地方都提及了“一个”、“某个”、“另一个”或“一些”实施例,但并不必然意味着这样的提及都指相同的实施方式或是特征仅适用于单个实施方式。
Claims (14)
1.一种存储服务器,其包括:
一数据报接口,以接收客户端数据操作请求;
一存储器接口,以访问至少一数据存储装置;以及
一语义处理器,其能够根据所存储的语法来分析已接收的客户端请求,以便通过所述存储器接口以所述至少一数据存储装置来处理响应数据操作。
2.如权利要求1所述的存储服务器,其中所述语义处理器包括一直接执行分析器以及多个语义代码执行引擎,所述直接执行分析器用于分析自所述数据报接口处接收的数据报的符号,所述语义代码执行引擎用于在所述直接执行分析器的指导下进行数据操作。
3.如权利要求1所述的存储服务器,其中所述语义处理器包括一直接执行分析器以及一微处理器,所述直接执行分析器用于分析自所述数据报接口处接收的数据报的符号,所述微处理器用于对已分析的数据报进行数据操作。
4.如权利要求1所述的存储服务器,其中所述语义处理器包括一直接执行分析器以及至少一语义代码执行引擎,所述直接执行分析器有一分析器堆栈,用于根据堆栈符号来分析自所述数据报接口处接收的数据报的符号,所述至少一语义代码执行引擎用于在所述直接执行分析器的指导下进行数据操作,所述语义代码执行引擎能够通过修改所述分析器堆栈的内容来改变所述直接执行分析器的操作。
5.如权利要求1所述的存储服务器,其中所述至少一数据存储装置为具有外壳的磁盘驱动器,且其中所述数据报接口、存储器接口和语义处理器被封装于所述磁盘驱动器外壳内。
6.如权利要求1所述的存储服务器,其中所述存储器接口为第二级数据报接口,且所述至少一数据存储装置可经由所述第二级数据报接口被远程访问,其中所述存储服务器能够作为所述至少一数据存储装置的客户端操作,以便服务于由所述存储服务器接收的客户端请求。
7.如权利要求1所述的存储服务器,其进一步包括一第二个数据报接口以及一分析器源选择器,所述第二个数据报接口用于接收客户端数据操作请求,所述分析器源选择器用于允许所述语义处理器在来自所述两个数据报接口的分析数据报符号之间进行切换。
8.如权利要求1所述的存储服务器,其进一步包括一可重构内存,其用于保存至少一部分所述所存储的语法,从而使所述存储服务器可重构以行使具有至少两个不同存储服务器协议组的存储服务器的功能。
9.一种装置,其包括:
一直接执行分析器,其配置成可通过语义分析在缓冲器内的数据来控制对数字数据的处理;
一语义处理单元,其配置成可在所述直接执行分析器的提示时进行数据操作;以及
一内存子系统,其配置成可由语义处理单元的指导下处理所述数字数据。
10.如权利要求9所述的装置,其中所述内存子系统包括连接内存和所述语义处理单元的多个内存高速缓存。
11.如权利要求9所述的装置,其中所述内存子系统包括一密码电路,其可在所述语义处理单元的指导下对数字数据进行加密操作。
12.如权利要求9所述的装置,其中所述内存子系统包括一搜索引擎,其可在所述语义处理单元的指导下行使查表功能。
13.如权利要求9所述的装置,其中所述缓冲器从外部网络接收待所述直接执行分析器分析的数据。
14.如权利要求9所述的装置,其中所述缓冲器从所述语义处理单元接收待所述直接执行分析器分析的数据。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/843,727 | 2004-05-11 | ||
US10/843,727 US7251722B2 (en) | 2004-05-11 | 2004-05-11 | Semantic processor storage server architecture |
US60/590,738 | 2004-07-22 | ||
US60/591,663 | 2004-07-27 | ||
US60/592,000 | 2004-07-28 | ||
US60/591,978 | 2004-07-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101128795A true CN101128795A (zh) | 2008-02-20 |
Family
ID=35426734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800227372A Pending CN101128795A (zh) | 2004-05-11 | 2005-05-11 | 语义处理器存储服务器架构 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7251722B2 (zh) |
CN (1) | CN101128795A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710491A (zh) * | 2011-02-10 | 2012-10-03 | 特克特朗尼克公司 | 使用pcap型过滤器和硬件辅助的patricia树的无损实时线速率过滤 |
CN102725966A (zh) * | 2009-12-30 | 2012-10-10 | 赛贝斯股份有限公司 | 用于移动业务对象的挂起状态管理 |
CN105047029A (zh) * | 2015-07-20 | 2015-11-11 | 北京大学 | 一种自动展示几何题解题过程的课件生成方法 |
CN105791126A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 一种三态内容可寻址存储器tcam查表方法及装置 |
CN107918546A (zh) * | 2013-03-30 | 2018-04-17 | 英特尔公司 | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 |
CN110011807A (zh) * | 2019-03-25 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种关键信息维护方法及系统 |
CN110275840A (zh) * | 2014-02-23 | 2019-09-24 | 拉姆伯斯公司 | 在存储器接口上的分布式过程执行和文件系统 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030172295A1 (en) * | 2002-03-01 | 2003-09-11 | Onspec Electronics, Inc. | Device and system for allowing secure identification of an individual when accessing information and a method of use |
US7424571B2 (en) * | 2004-07-27 | 2008-09-09 | Gigafin Networks, Inc. | Array machine context data memory |
US7251722B2 (en) * | 2004-05-11 | 2007-07-31 | Mistletoe Technologies, Inc. | Semantic processor storage server architecture |
EP1617341A1 (en) * | 2004-07-16 | 2006-01-18 | International Business Machines Corporation | File operation management device |
US20060026377A1 (en) * | 2004-07-27 | 2006-02-02 | Somsubhra Sikdar | Lookup interface for array machine context data memory |
US20070027991A1 (en) * | 2005-07-14 | 2007-02-01 | Mistletoe Technologies, Inc. | TCP isolation with semantic processor TCP state machine |
US20070019661A1 (en) * | 2005-07-20 | 2007-01-25 | Mistletoe Technologies, Inc. | Packet output buffer for semantic processor |
US7680962B2 (en) * | 2004-12-22 | 2010-03-16 | Nec Electronics Corporation | Stream processor and information processing apparatus |
US8073899B2 (en) * | 2005-04-29 | 2011-12-06 | Netapp, Inc. | System and method for proxying data access commands in a storage system cluster |
JPWO2007032394A1 (ja) * | 2005-09-13 | 2009-03-19 | 株式会社ニコン | データ通信装置、電子カメラおよびデータ通信システム |
US20070162626A1 (en) * | 2005-11-02 | 2007-07-12 | Iyer Sree M | System and method for enhancing external storage |
US20080016266A1 (en) * | 2006-07-14 | 2008-01-17 | Yi-Chun Liu | Method And Apparatus For Smart Storage Devices |
TW200821981A (en) * | 2006-11-13 | 2008-05-16 | Vivotek Inc | Reconfigurable image processor and application architecture |
US7876894B2 (en) * | 2006-11-14 | 2011-01-25 | Mcm Portfolio Llc | Method and system to provide security implementation for storage devices |
US7711213B2 (en) * | 2007-01-29 | 2010-05-04 | Hewlett-Packard Development Company, L.P. | Nanowire-based modulators |
US20090046858A1 (en) * | 2007-03-21 | 2009-02-19 | Technology Properties Limited | System and Method of Data Encryption and Data Access of a Set of Storage Devices via a Hardware Key |
US20080288782A1 (en) * | 2007-05-18 | 2008-11-20 | Technology Properties Limited | Method and Apparatus of Providing Security to an External Attachment Device |
US20080181406A1 (en) * | 2007-01-30 | 2008-07-31 | Technology Properties Limited | System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key |
US20080184035A1 (en) * | 2007-01-30 | 2008-07-31 | Technology Properties Limited | System and Method of Storage Device Data Encryption and Data Access |
US20080288703A1 (en) * | 2007-05-18 | 2008-11-20 | Technology Properties Limited | Method and Apparatus of Providing Power to an External Attachment Device via a Computing Device |
US7882202B2 (en) * | 2008-04-01 | 2011-02-01 | International Business Machines Corporation | System to delegate virtual storage access method related file operations to a storage server using an in-band RPC mechanism |
US9477727B2 (en) * | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
US10521423B2 (en) | 2008-12-22 | 2019-12-31 | Ctera Networks, Ltd. | Apparatus and methods for scanning data in a cloud storage service |
US10783121B2 (en) | 2008-12-22 | 2020-09-22 | Ctera Networks, Ltd. | Techniques for optimizing data flows in hybrid cloud storage systems |
US9614924B2 (en) | 2008-12-22 | 2017-04-04 | Ctera Networks Ltd. | Storage device and method thereof for integrating network attached storage with cloud storage services |
US9473419B2 (en) | 2008-12-22 | 2016-10-18 | Ctera Networks, Ltd. | Multi-tenant cloud storage system |
US8886714B2 (en) | 2011-08-08 | 2014-11-11 | Ctera Networks Ltd. | Remote access service for cloud-enabled network devices |
US8434097B2 (en) * | 2009-12-30 | 2013-04-30 | Sybase, Inc. | Dynamic data binding for MBOs for container based application |
US8909662B2 (en) * | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
US9336291B2 (en) * | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US8788458B2 (en) * | 2009-12-30 | 2014-07-22 | Sybase, Inc. | Data caching for mobile applications |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US8892569B2 (en) | 2010-12-23 | 2014-11-18 | Ianywhere Solutions, Inc. | Indexing spatial data with a quadtree index having cost-based query decomposition |
JP2014522011A (ja) * | 2011-05-17 | 2014-08-28 | データボード・インコーポレーテツド | 異種計算環境内のメインフレームのデータオブジェクトに対するアクセスを提供する工程 |
US8874682B2 (en) | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
CN111427534B (zh) * | 2014-12-11 | 2023-07-25 | 微软技术许可有限责任公司 | 能够实现可动作的消息传送的虚拟助理系统 |
US9954681B2 (en) * | 2015-06-10 | 2018-04-24 | Nxp Usa, Inc. | Systems and methods for data encryption |
CN109918673B (zh) * | 2019-03-14 | 2021-08-03 | 湖北亿咖通科技有限公司 | 语义仲裁方法、装置、电子设备和计算机可读存储介质 |
CN111061482B (zh) * | 2019-10-24 | 2023-12-08 | 贝壳技术有限公司 | 字符串中参数的解析方法、装置、存储介质及电子设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4994966A (en) * | 1988-03-31 | 1991-02-19 | Emerson & Stern Associates, Inc. | System and method for natural language parsing by initiating processing prior to entry of complete sentences |
US5487147A (en) | 1991-09-05 | 1996-01-23 | International Business Machines Corporation | Generation of error messages and error recovery for an LL(1) parser |
US5644686A (en) * | 1994-04-29 | 1997-07-01 | International Business Machines Corporation | Expert system and method employing hierarchical knowledge base, and interactive multimedia/hypermedia applications |
US5715468A (en) * | 1994-09-30 | 1998-02-03 | Budzinski; Robert Lucius | Memory system for storing and retrieving experience and knowledge with natural language |
US5793954A (en) | 1995-12-20 | 1998-08-11 | Nb Networks | System and method for general purpose network analysis |
US6493761B1 (en) | 1995-12-20 | 2002-12-10 | Nb Networks | Systems and methods for data processing using a protocol parsing engine |
US6034963A (en) | 1996-10-31 | 2000-03-07 | Iready Corporation | Multiple network protocol encoder/decoder and data processor |
US5916305A (en) | 1996-11-05 | 1999-06-29 | Shomiti Systems, Inc. | Pattern recognition in data communications using predictive parsers |
US6330659B1 (en) | 1997-11-06 | 2001-12-11 | Iready Corporation | Hardware accelerator for an object-oriented programming language |
US6145073A (en) | 1998-10-16 | 2000-11-07 | Quintessence Architectures, Inc. | Data flow integrated circuit architecture |
US6356950B1 (en) | 1999-01-11 | 2002-03-12 | Novilit, Inc. | Method for encoding and decoding data according to a protocol specification |
US7421586B2 (en) * | 1999-05-12 | 2008-09-02 | Fraunhofer Gesselschaft | Protecting mobile code against malicious hosts |
US6772413B2 (en) | 1999-12-21 | 2004-08-03 | Datapower Technology, Inc. | Method and apparatus of data exchange using runtime code generator and translator |
US6985964B1 (en) | 1999-12-22 | 2006-01-10 | Cisco Technology, Inc. | Network processor system including a central processor and at least one peripheral processor |
US6892237B1 (en) | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US7020128B1 (en) * | 2000-11-02 | 2006-03-28 | Efficient Networks, Inc. | System and method for datagram staggering in a communication system |
US20040215665A1 (en) * | 2002-01-09 | 2004-10-28 | Edgar David A. | System, method, and computer program product for providing accelerated and secure wireless data transmission over the internet |
EP1546892B1 (en) * | 2002-09-04 | 2017-03-29 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Protecting mobile code against malicious hosts cross references to related applications |
US7130987B2 (en) * | 2003-01-24 | 2006-10-31 | Mistletoe Technologies, Inc. | Reconfigurable semantic processor |
US7716364B2 (en) * | 2003-06-27 | 2010-05-11 | Broadcom Corporation | Internet protocol multicast replication |
US7251722B2 (en) * | 2004-05-11 | 2007-07-31 | Mistletoe Technologies, Inc. | Semantic processor storage server architecture |
-
2004
- 2004-05-11 US US10/843,727 patent/US7251722B2/en not_active Expired - Fee Related
-
2005
- 2005-05-11 CN CNA2005800227372A patent/CN101128795A/zh active Pending
-
2007
- 2007-06-21 US US11/766,733 patent/US20070250593A1/en not_active Abandoned
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102725966A (zh) * | 2009-12-30 | 2012-10-10 | 赛贝斯股份有限公司 | 用于移动业务对象的挂起状态管理 |
CN102725966B (zh) * | 2009-12-30 | 2014-12-10 | 赛贝斯股份有限公司 | 用于移动业务对象的挂起状态管理 |
CN102710491A (zh) * | 2011-02-10 | 2012-10-03 | 特克特朗尼克公司 | 使用pcap型过滤器和硬件辅助的patricia树的无损实时线速率过滤 |
CN107918546A (zh) * | 2013-03-30 | 2018-04-17 | 英特尔公司 | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 |
CN110275840A (zh) * | 2014-02-23 | 2019-09-24 | 拉姆伯斯公司 | 在存储器接口上的分布式过程执行和文件系统 |
CN110275840B (zh) * | 2014-02-23 | 2024-03-15 | 拉姆伯斯公司 | 在存储器接口上的分布式过程执行和文件系统 |
CN105791126A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 一种三态内容可寻址存储器tcam查表方法及装置 |
CN105791126B (zh) * | 2014-12-26 | 2020-04-24 | 中兴通讯股份有限公司 | 一种三态内容可寻址存储器tcam查表方法及装置 |
CN105047029A (zh) * | 2015-07-20 | 2015-11-11 | 北京大学 | 一种自动展示几何题解题过程的课件生成方法 |
CN110011807A (zh) * | 2019-03-25 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种关键信息维护方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US7251722B2 (en) | 2007-07-31 |
US20050268032A1 (en) | 2005-12-01 |
US20070250593A1 (en) | 2007-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101128795A (zh) | 语义处理器存储服务器架构 | |
US8015303B2 (en) | High data rate stateful protocol processing | |
US7307986B2 (en) | State record processing | |
US9307054B2 (en) | Intelligent network interface system and method for accelerated protocol processing | |
US7382787B1 (en) | Packet routing and switching device | |
US7792027B2 (en) | Pipelined packet switching and queuing architecture | |
US7415596B2 (en) | Parser table/production rule table configuration using CAM and SRAM | |
US8176300B2 (en) | Method and apparatus for content based searching | |
US8301788B2 (en) | Deterministic finite automata (DFA) instruction | |
JP5220974B2 (ja) | ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法 | |
US7701941B2 (en) | Network switch with mutually coupled look-up engine and network processor | |
US20080155051A1 (en) | Direct file transfer system and method for a computer network | |
US8788512B2 (en) | Generating data feed specific parser circuits | |
EP2215565A1 (en) | Deterministic finite automata (dfa) graph compression | |
US20040221123A1 (en) | Virtual data switch and method of use | |
US7466716B2 (en) | Reducing latency in a channel adapter by accelerated I/O control block processing | |
CN108182119A (zh) | 读写分离控制方法和装置、存储介质及电子装置 | |
US9590897B1 (en) | Methods and systems for network devices and associated network transmissions | |
KR20070020289A (ko) | 시맨틱 프로세서 저장 서버 구조 | |
CN1695363B (zh) | 为分组处理确定时钟信号的方法和系统 | |
US7596621B1 (en) | System and method for managing shared state using multiple programmed processors | |
CN1494692A (zh) | 用于处理流水线化数据的设备和方法 | |
CN117714398A (zh) | 一种数据传输系统、方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080220 |