语义处理器存储服务器架构的制作方法

文档序号:6656368阅读:400来源:国知局
专利名称:语义处理器存储服务器架构的制作方法
语义处理器存储服务器架构有关申请的参考本申请要求于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号正在申 请中的美国专利申请,通过引用合并于此。发明领域本发明通常涉及存储服务器,更为明确地涉及利用数字语义处理器的 存储服务器实现方案。发明背景通常,存储服务器是一台联网的计算机,其提供对本文中称之为"客 户端',的其他计算机和计算设备的^f某体和文件访问。在广域网(WAN)、 局域网(LAN)中可以访问该存储服务器,该存储服务器和/或与另一计 算设备共享专用的端对端连接。存储服务器可为几种类型,包括网络连接存储(NAS)服务器、存储 区域网络(SAN)服务器、和请求型服务器。NAS服务器包括目录结构。对NAS服务器的请求通常指定文件路径 /文件名和如建立、读、写、添加等的操作。NAS服务器将请求转换成一 个或多个磁盘扇区/按块磁盘存取处理,访问该磁盘(或其他存储媒体), 并执行所请求的文件级处理。这样的服务器保持和利用目录结构来定位文
件开始位置,以及保持和采用文件位置表以在磁盘或其它可写媒体中重构 分段文件和定位空闲的扇区。SAN服务器通常接收对基于磁盘扇区/块处理的直接请求,而且可以不清楚文件系统或数据块之间的关系。虽然块请求与^f某体装置中的物理块位置相关,更典型地,SAN服务器支持逻辑块-这样让服务器如在 RAID(Redundant Array fo Independent Disks,独立磁盘冗余阵列)方案中使 一个物理磁盘驱动器看起来象几个逻辑驱动器,或几个物理磁盘驱动器看 起来象一个逻辑驱动器。请求型服务器通常以特定媒体格式提供对々某体的访问。例如,请求型 服务器能提供对音频流或视频流的访问,而无需清楚知道客户端所用的文 件路径/文件名称(客户端可以不知道文件名或具有直接访问文件的权限), 同时可以从文件读出流媒体以及以流分组的形式将其压缩。在架构上,大多数存储服务器与通用计算机没有什么不同(除了在一 些情况下包括有比通常更多和/或更快的磁盘驱动器和磁盘总线控制器),

图1显示了典型存储服务器20的框图。通常为一个或多个微处理器的中 央处理单元(CPU) 22根据存储的程序指令运行服务器。这种处理器通 常以其革新者命名为冯 诺依曼(von Neumann, VN )处理器或计算机, 冯 诺依曼提出处理连续指令的执行方式。CPU22通过前端总线26 (FSB)连接至负责将CPU22连接至其它系 统元件的存储控制器/集线器24 (MCH),所述其它系统元件存储^f敬处理 器程序指令和存储、提供和/或用尽数据。MCH24通过内存总线32管理 系统内存30。 MCH24经由集线器总线42也与PCI ( Peripheral Component Interconnect,外围元件互连)桥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构建的这些芯片组)4吏可编程性和标准操作系统 的应用成为可能,因此降低了成本。不幸的是,在这种#:作配置中,通用 的基于微处理器系统的灵活性和功率很大程度上没有使用,或低效率地使 用。本发明为存储服务器提供了在通常称为语义处理器的典型实施方式 中使用的不同架构。当其处理过程依赖于其"编程"时,这种装置是可配 置的,而且优选如VN机器那样可重新配置。如本文中所用的,"语义 处理器"包括至少两个元件根据定义的语法分析输入流的直接执行分析 器;和能操纵数据的执行引擎(例如数据移动,数学和逻辑运算)以响应 来自于直接执行分析器的请求。语义处理器的编程不同于VN机所使用的常规机器代码。在VN机中, 数据信息包的协议输入参数使用顺序机器指令与所有可能输入进行顺序 比较,分支、循环和线程切换效率低下。相反,语义处理器直接响应输入 流的语义。换句话说,语义处理器执行的"代码"段直接由输入数据驱动。 例如,对于75个左右可能能在信息包中出现的CIFS命令,允许语义处 理器加载与以信息包发送的实际CIFS命令相关的语法和微指令所必要的 是在如下所描述实施方式中的单个分析循环。在下列实施方式中所描述的存储服务器应用中,语义处理器能执行现 有技术VN处理器、芯片组和连接装置的多个功能,语义处理器接收来自 互联网端口或数据报接口的数据报。这些数据报中的一些包括数据操作的 客户端请求。语义处理器使用为服务器所支持的服务器协议语法设计的分 析器表分析所接收到的数据报的元素。基于所分析的,语义处理器以一个 或多个数据存储装置处理响应数据梯:作。通常,通过在单个或多个^i行单
元上发布微指令代码段执行数据操作。当执行数据操作时,语义处理器产 生响应数据报以发送给客户端。作为结果的操作效率使得整个存储服务器 在一些实施方式中分解为一些可安置在媒体装置印刷电路板上的相对小 的集成电路,而语义处理器自身可能只吸取几个瓦特的功率。附图简要说明参照附图,通过阅读本公开内容能够更好地理解本发明,其中 图1包含有典型的冯.诺依曼(vonNeumann)机存储服务器的结构 框图;图2包含有本发明普通存储服务器实施方式的结构框图;图3以模块的形式举例说明了本发明更为详细的存储服务器实施方式;图4表示Ethemet/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的语义处理器中处理tt据输入的一种流程图实例;图23举例说明了一种可用于本发明实施方式的语义处理器实现方案;图24包含有在图23的具有再循环緩冲器的语义处理器中处理已接收 信息包的流程图;图25举例说明了另一种可用于本发明实施方式的更为具体的语义处 理器实现方案;图26包含有在图25的语义处理器中接收IP分段信息包的流程图; 图27包含有在图25的语义处理器中接收已加密和/或未经认证的信息包的流程图;以及图28还举例说明了另 一种可用于本发明实施方式的语义处理器实现方案;图29包含在图28的语义处理器中通过TCP连接来接收iSCSI信息 包的流程图;图30-43更为详细地表示内存子系统。优选实施例的详细描述图2举例说明本发明许多实施方式的高级图形表示。存储服务器包括 具有数据报接口 90和存储器接口 IIO的语义处理器100。该数据报接口 90向服务器提供客户端连接,例如,通过所示网络80或经由与客户端的 端对端连接。该存储器接口 110向语义处理器提供通路为响应客户端请求 而以数据存储装置120开始数据处理。数据存储装置可为本地的。另外, 该数据存储装置也可与所举例说明的服务器网络连接,例如,如果语义处 理器IOO模拟关于客户端的NAS服务器,而同时又为物理存储使用远程 SAN服务器。图3含有存储服务器200更详细的框图,包括语义分析器100。数据 接口 90将语义处理器IOO的緩冲器130连接至物理接口装置(PHY)92, 例如,以太网的光、电、或射频驱动器/接收器对、光纤通道、801.llx、 通用串口总线、Firewire规范、或其他物理层接口。数据报接口将输入数 字数据流提供给緩冲器130,并接收来自缓冲器130的输出数字数据流。在图3中,存储接口 IIO在数据存储装置120和语义处理器IOO之间 作为I/O块总线。在不同的具体实施方式
中,这些总线可以是电缆连接 (iSCSI、光纤通道、SATA)或印刷电路板总线(SATA),这取决于语 义处理器和数据存储装置的配置能力。图3显示了々某体装置硬盘类型的主 要元件,例如,磁盘控制器122、驱动电子线路124、和磁盘碟片、马达 和读/写头126。语义处理器100的一种配置在图3的存储服务器中进行了描述。语义 处理器100包含直接执行分析器(DXP) 140,其控制输入包或緩冲器130 所接收的帧(例如输入"流")的处理。根据当前帧到当前符号的分析, DXP140保留终结和非终结符号的内部分析堆栈。当在分析堆栈顶部的符 号为终结符号时,DXP140将输入流报头的数据与终结符号进行比较,并 希望匹配以便能够继续。当位于分析栈顶部的符号是非终结符号时,着分析的继续,DXP140命^语义代码执行引擎(SEE) 150处理输入段, 或执4于其他4喿作。这种具有按照数据所需将任务分配给执行引擎的高级语法分析器的 结构既灵活,又对诸如数据报协议的高级构造的输入数据有效。在优逸具 体实施方式中,语义处理器可通过调整其表格重新配置,这样具有VN机 灵活的要求。因为语义处理器响应供给其的输入数据,该语义处理器通常能够以比VN机小的指令集有效操作。由于语义处理器使得数据在机器语境中进行处理,如下所解释的,所以指令集也能受益。语义处理器IOO使用至少三张表格执行给定的功能。取回产生式规则 的代码存储在分析表(PT) 170中。语法产生式规则存储在产生式规则表 (PRT ) 180中。SEE150代码段存储在语义代码表(SCT ) 190中。在分析表170中的代码指向表180中的产生式规则。分析表代码以例 如行-列形式或内容-可寻址形式存储。在行-列形式中,表格中的行通过内 部分析堆栈的非终结代码索引,表格中的列通过输入数据报(例如在数据 输入总线上的当前符号)头中的输入数据值索引。在内容-可寻址形式中, 非终结代码拼接和输入数据值能将输入数据提供给表格。产生式规则表180通过分析表170的代码索引。表格如图3所示进行 连接,这样对分析表的查询将直接返回适用于非终结代码和输入数据值的 产生式规则。直接执行分析器根据从PRT返回的产生式规则替换位于其 堆栈顶部的非终结代码,并继续分析其输入。实际上,多种不同语法的代码在产生式规则表中同时存在。例如,一 个代码集可以属于MAC (MediaAccessControl,媒体接入控制)报头格式 分析,而其他代码集属于地址分析协议(ARP)包处理,网际协议(IP) 包处理,传输控制协议(TCP)包处理,实时传输协议(RTP)包处理等。 CIFS、 NFS、和/或其他存储服务器协议的语法添加到产生式规则代码内 存中以增加存储服务器的能力。非终结代码无须在产生式规则代码内存 122中、也无须在属于特定协议的数据块中以任何特定顺序进行分配。通常,分析结果使得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 报头首先表明其协议,例如,字符OxFF表明这是SMB报头。命令字符 紧跟协议字符,表明请求或响应操作的操作代码(opcode)。状态和标识 字段确定其他SMB字段应该如何理解,和/或是否有错误产生。MAC标 记(在这个例子MAC代表媒体认证代码)有效时,能用于认证消息。在SMB中接下来的四个字段为TID、 PID、 UID、和MID字段。当 客户端成功连接到服务器资源时,TID(树标识符)由服务器分配给客户 端。在后续的请求中,客户端使用分配的TID查阅资源。PID(处理标识
符)由客户端分配-虽然服务器记录PID并用它答复客户端,其首先使用于客户端。UID(用户标识符)由服务器分配以识别需认证连接的用户。 通过对每一处理使用不同的MID (多路标识符),使客户端对多个重要 的处理使用同一PID。参数字段可为不同长度和结构,其第一个字符通常表明下面参数的长 度,紧接着参数字段的是适合SMB操作代码的参数文字。如果操作代码 表明第二个SMB报头且紧接着的是緩冲器, 一些参数文字表明后续操作 代码和后续缩短报头的偏移量。SMB以字节计数和字节计数长度緩冲器结束。这样的緩冲器用于例 如发送文件名,发送写入数据到服务器,或发送读出数据到客户端。在这种技术背景下,能够继续解释语义处理器IOO(图3)的基本CIFS 功能。参见图3和4,緩沖器130所接收的每个新帧以MAC才艮头开始。MAC 报头包括目的地地址、源地址、负载型字段、负栽、和校验和。DXP140 分析目的地址以与分配给存储服务器200的地址相匹S己,以及与广播地址 相匹配。如果目的地址未能分析,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 保存当前帧语境的方言代码。SEE 150还确定字节计数符号是否已经分析, 表明已经分析了所有的方言。如果字符串没有分析为已知的方言,SEE150 将无终结字符推到分析栈的顶部,使DXP140用另一种方言分析剩余输 入。这种处理继续直到分析字节计数符号。在那个时候,SEE150将符号 推到输入流的顶部使DXP140停止方言分析。然后DXP140完成分析信息 包,以及指示SEE150选择方言(例如,根据预先编写的分级优选)并将 响应信息包随同属于新会话的参数发送回客户端。SEE150也在机器语境 160中建立新的会话语境。当客户端接收到NEGOTIATE答复时,通常客户端将发送 SESSION—SETUP—ANDX的SMB以完成这一会话。根据接收的此SMB, DXPMO能够分析第一个参数(文字计数)并验证操作代码的正确性。紧 接这个命令(CIFS使用"AndX"识别能与下一个操作代码拼接的操作代 码以形成多路搡作代码SMB ),第二个参数AndXCommand表明第二个 (和哪一个)命令x是否也在此帧中出现。如果AndXCommand表明没 有第二个操作代码(OxFF),那么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命令的子集。本技术领域的熟练技术人员能够 理解,4艮据上述例子,语义处理器如何使用完整CIFS的功能性。进一步, 在实现语义处理器上其他存储服务器协议中,语义处理器执行这些CIFS 命令时所列举的概念是可应用的。图6显示了另 一个语义处理器具体实施方式
300。语义处理器300包 括四个语义代码执行引擎152、 154、 156和158。语义代码执行引擎180 与1/0块电路U2通讯。机器语境160包括两个功能单元可变的机器语 境数据内存(VMCD) 162和阵列机器语境数据内存(AMCD) 164。每 个SEE能通过V-Bus处理与VMCD162的事务和通过A-Bus处理与 VMCD164的事务。在语义处理器300中,当DXP140确定在分析中的一个特定时刻发布 SEE任务时,DXP140用信号通知一个SEE从SCT140加载微指令。 一些
指令段的句柄指示DXP140可选择4壬一可用SEE,或句柄指示特定SEE (例如唯一能访问1/0112的SEE158 )应该接收那些代码段。多路SEE的 可用性使得多个任务并行处理,不会有一些慢任务(如I/0块)阻塞所用 的处理。虽然不是严格必须,特定种类的任务也能指定给特定SEE。例如,可 指定SEE152为输入数据协议SEE,负责处理IP、 TCP、和其他协议的输 入侧,并更新客户端、会话和具有输入CIFS帧数据的文件语境。指定 SEE154执行文件系统操作,诸如加入或更新目录、文件定位表、和用户/ 密码列表、认证用户和请求等。指定SEE156处理协议的输出数据侧,例 如,创建响应帧。指定SEE158处理与数据存储装置的事务。通过这种分 配,SEE在另一个SEE上发布微代码,而不需要通过能移动到不同分析 堆栈的DXP140。例如,SEE154在I/0块SEE158上发布任务以取回或更 新目录。作为另一个例子,当准备好响应数据包数据时,输出协议SEE156 可具有由另 一个SEE设置的信号量。每一个SEE包括廉线寄存器(pipeline register)使得机器语境能访问数 据。与标准CPU相反,优选SEE具体实施方式
完全不知道用于在其上操 作数据的物理数据存储结构。可替代的是,访问数据采用机器语境处理形 式。可在V-bus上访问可变(例如标量)数据;在A-bus上访问阵列数据; 在Si-bus上访问输入流数据。例如,为读出在数据语境ct中用给定位置 6 ^"定位的长度为m个八位字节的标量凄t据元素,SEE使用指令解码器 促使V-bus接口发出总线请求化ea4",oiT化f,wL语境met参考语义处理器 的主语境;当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提供例如机器语境和緩沖器的物理存储。 RAMS30可包括几种内存(DRAM、闪存、CAM等)或诸如同步DRAM 的单一类型。当分析器、产生式规则和语义代码表在操作期间保存在易失 性内存时,引导ROM和引导闪存(Flash memory)可用于初始化RSP520。 非易失性表格存储部分也能存在于数据存储装置上,只要足够的代码在引
导内存中可用使得RSP520与数据存储装置通讯。SATA控制器540连接到RSP520的I/O块端口 ,为RSP520的磁盘访 问请求提供服务。SATA控制器540可以是例如诸如SII3114或 Marvdl88SX5080的商业可用SATA控制器。串行ATA控制器540凭借SATA总线连接到一个或多个SATA数据 存储装置。如图所示,存储服务器500分别通过SATA总线BUSO到BUSN 支持驱动器550-0到550-N。PHY510、 RSP520、 RAM530和SATA控制器540优选在通用印刷电 路板(没有显示)上相互连接。以通用机壳的驱动器布置电路板,SATA 采用电缆提供BUSO-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相连。图IO描述了本质上为"转发"网关的存储服务器800。存储服务器 800包括连接到网络802并由此连接到存储服务器客户端的第一网络物理 接口 PHY1 (模块810)。存储服务器接口 800也包括第二个网络物理接 口 PHY2 (模块840),横跨网络或端到端连接其连接到诸如所描述SAN 服务器850的一个或多个物理服务器。具有连接内存830的RSP820连接 到PHY1和PHY2。 PHY1可以是例如以太网PHY,而PHY2可以是例如 光纤通道PHY。
在梯/f乍中,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 (JustaBunchOfDisks,简 单磁盘捆束)阵列。通常,RSP100能为其客户执行其他形式的客户端虚拟存储服务器。 在一个可替代形式中,RSP将客户端应用使用的磁盘扇区地址映射为多个 物理装置中的特定装置的C-H-S (Cylinder-Head-Sector,磁柱/磁头/磁扇) 地址。在这种配置中,数据存储装置120-1到120-4 (可能有更多个这种 装置)不需要在地域上协同定位,容许对客户端的磁盘定位和物理资源的 高级控制。RSP也能在虚拟配置中起作用,其中,分立的中间装置提供全 部或部分客户端虛拟功能。图l2描述在结合了端口扩展器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,其优选但非必要地安置在作为处理器IIOO—部分 集成的通用存储区域。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群优选有显示)。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 (Dynamic Random Access Memory,动态随才几i方问内存)、CAM(Content Addressable Memory,内容可寻址内存)和/或任一个其他类型所需存储所组成。物理内 存165能安装在处理器1100上,在微处理器1100的外部,或在两个位置 的分开处。管理微处理器195执行用传统软件合理实现的语义处理器1100的任 何所需功能。例如,通过机器语境160,微处理器195能与在物理内存165 中的其拥有的指令空间和数据空间相连接,并执行传统软件以引导处理 器,加栽或调整分析表、产生式规则表和语义代码表,收集统计数字,完 成日志,管理客户端访问,执行错误恢复等。优选地,微处理器195也有 能力与在SEE群152中的调度器通讯,以请求SEE为微处理器的利益执 行任务。管理微处理器优选集成到语义处理器1100中。在先的具体实施方式
中,当将数据块写入磁盘时,语义单元能加密数 据块,和/或当从磁盘读出数据块时,解密数据块。这为在该磁盘驱动器 或多个磁盘驱动器上"长眠(atrest)"的数据提供了安全措施。例如,当语 义单元接收到写入磁盘的数据负载时,为写入准备数据负载的一个操作包 括加密该数据包。这个过程的反向能用于从》兹盘中读出加密的数据。虽然显示并描述了专用执行引擎,可替代实现能使用分析器作为通用 目的处理器的前端数据包处理器。如在先前的实施方式所例示的,基于语义处理器的多个不同的存储服 务器落入本发明的领域。在低功能性的一端,例如通过光纤通道连接到企 业互联网的SAN类型服务器是有可能的。SAN类型服务器包括更高级特 征,诸如上述详细CIFS具体实施方式
中所描迷的那些特征。转换-网关 (translation-gateway)服务器为客户端提供物理服务器的可能大的和可变的 基本阵列访问,而无需使客户端对物理服务器可视。转换-网关服务器和物理服务器能构建为应用类型服务器。作为应用
形式服务器,数据以应用形式格式进行操作。例如,视频点播服务器能存 储多个用户使用的视频,并且使不同的视频部分流入不同的客户端,使每 个客户端能独立导航。音乐点播服务器可相似才乘作。应用形式服务器也能为应用提供存储空间,如存储脱离数码相机的数 字照片的有线或无线服务器,使相机以相对小的内部緩冲器和/或闪存卡 进行操作。这样的服务器可能相对小,以电池供电,以及便于野外使用时 携带。语义处理器存储服务器实施也能执行例如在家庭计算机数据和/或音 频/i见频网络中使用的无线协议。虽然详细具体实施方式
例集中于传统"存 储"装置,打印机、扫描仪、多功能打印机和其他数据转化装置也能与语 义处理器存储服务器连接。其它有利方法调整到特定的应用中。很明显,通过改变由服务器分析的协 议,使语义处理器存储服务器为不同客户端类型服务。如果需要,存储服 务器甚至能同时分析多种存储服务器协议,以允许不同级别客户端的访问(例如,信任客户端的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执行内容-可寻址格式,入提供给分析表。可选择地,分析表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代码要求只Dl[n]的特定比特/字节匹配编码模式以使分析 表2200找到匹配。例如,TCAM的一行能包括IP目的地址段的NT代码 NT—IP,紧接着是表示对应于合成语义处理器装置的IP目的地址的4个字 节。TCAM行其余4个字节设置为"don't care"。这样当NTJP和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]匹配代码匹配。这样,否找到匹配。另 一种观察这种架构的方法是作为"可变向前看(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 entries Table, 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 pointSEP)段和跨越字 节(skipbyte)段。这些段可能是固定长度段或优选为非终结的可变长度段。 符号段包括推入DXP分析堆栈2430 (图17)的终结和/或非终结符号。 SEP段包括在处理数据段中SPU2140使用的SPU入口点(SEP)。跨越
字节段包括输入緩冲器2300使用的跨越字节数据,增加其緩冲器指针和 预先进行输入流处理。在处理产生式规则中有用的其他信息也能作为产生 式去见则2262的一部分保存。
MAPT 2280保存默认产生式规则2264,在此实施方式中,默认产生代码在分析表查询期间不能定位时,能够访问默认产生式规则2264。明没有这样的限制。在本发明的优选实施方式中,产生式规则内存2270 和MAPT2280作为芯片上的SRAM进行操作,其中,各产生式规则和默 认产生式规则包括多个非终结字段。
由于产生式规则和默认产生式规则能够具有不同长度,优选采用容易 索引各自内存2270和2280的方法。在一种方法中,各PR具有容纳固定 最大数目的符号、SEP和诸如跨越字节段的辅助长度的固定长度。当给定 PR不需要所预计的最大数目字符或SEP,序列以NULL字符或SEP而终 止。当给定PR需要多于最大数目时,PR可分为两个PR,并通过例如具 有第一个发布O跨越字节值并将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个所期望目的地址中的l个。对于所有其它目的地址,找 不到分析表条目。然后寻址器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的特定位置。接收 ControLSPU信号时,控制模块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包括安放在SCT2150 中的微指令地址。接收到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、使得DXP 2800 (图21) FIFO存取緩冲器2712中的再循环数据的FIFO块、以及使 得SPU群2640内的SPU随机存取緩冲器2712中的再循环数据的随机存 取(RA)块2718组成。当在緩冲器2712处接收到来自SPU群2640的 再循环数据时,再循环緩冲器2710向DXP 2800发送Port ID,以提醒DXP 2800新数据已经到达。更可取地,所发送的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。例 如,分析器控制FSM2410保持指示当前处理的数据是来自于输入緩沖器 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内的四个缓沖器都具有唯一的PortID,当接收到新数据时 将其发送至DXP 2800。优选地,再循环緩沖器2710包含其唯一的Port ID 以作为每个再循环数据分段的第一个字节。由于PIB2700内的四个緩冲 器都具有独立的输入,所以DXP 2800能同时接收多个Port ID。当DXP 2800接收到多个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之间联系的DAT A/Control信号,DXP 2800请求且接收N个字节的数据。当输入流次 序控制2420接收数据后,该数据被存储于数据寄存器控制2810中的所选 寄存器,其中数据寄存器控制2810中的所选寄存器由当前分析语境所控制。根据下一个模块2930,当DXP 2800确定不再等待进一步的输入以及 在所选分析器堆栈上的符号不是堆栈底端符号之后,它处理在所选分析器 堆栈顶端上的符号和所接收的N个字节数据(或其的一部分)。模块2930 包括对该顶端字符是终结符还是非终结符的判断。这个判断由堆栈处理机 2830执行,最好是通过读取在分析器堆栈2430—1顶端上的状态标记符, 以及向FSM2410发送状态以作为前缀(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,当语 法指示时,DXP2800可以清除所选分析器堆栈和发出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中的缺省产生式规则。 在一个实施方式中,在位于PRT2250内的MAPT2280内存中查找该缺省 产生式规则。可选择地,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的所接收的产生式规则。在 本发明的实施方式中,FSM2410将产生式规则划分为三段,符号段、SEP 段以及跨越字节段。如前所述,优选地,每个产生式规则的分段都为固定 长度或空结束以使得划分方便准确。图22的模块2970以类似图18中的模块2590的方式进行操作,具有 如下的不同之处。第一,将产生式规则的符号段压入至针对当前语境的正 确分析器堆栈。第二,产生式规则的跨越字节部分于操纵针对当前语境的 数据寄存器库中的合适寄存器以及合适的输入緩冲器。第三,当SEP被 发送至SEP分配器时,指令指出用于由SPU执行语义代码的合适输入緩 沖器。根据下一个判断框2975, DXP 2800判断所选緩冲器中的输入数据是 否需要进一步分析。在本发明的实施方式中,当分析器堆栈2430—1的堆 栈指针正在指向并非堆栈底端符号的一个符号时,需要进一步分析输入緩 沖器2300—0中的输入数据。优选地,当分析器堆栈2430_1的堆栈指针正 在指向堆栈底端符号时,FSM 2410从堆栈处理机2830中接收到堆栈空的 信号SE。当不需要进一 步分析所选緩沖器中的输入数据时,执行返回到模块 2905,其中DXP2800判断另一个输入緩冲器而不是已停顿分析器的緩冲 器,是否具有在PIB2700处等待的新数据。当需要进一步分析所选緩冲器中的输入数据时,根据下一个判断模块 2985, DXP 2800判断其是否能够继续分析所选緩沖器中的输入数据。在 本发明的实施方式中,当仍然需要分析时,由于许多原因,例如依赖于待 处理或正在执行的SPU操作,缺少输入数据,具有比在DXP2800中分析 更为优先的其它输入緩沖器等等,所以分析能在指定緩沖器的输入数据处 停止。在一个实施方式中,具有优先于输入緩冲器2300—0中的输入数据
的其它输入緩冲器可以是事先将其分析器堆栈保存的输入緩冲器,或是具有由语法规定的更高优先级的输入緩冲器。通过Status信号,SEP分配器 2650提醒DXP 2800 SPU的处理延时,以及由存储在FSM 2410中的状态 值来提醒DXP 2800优先分析任务。当DXP2800继续分析当前分析语境时,执行返回到模块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(例如,再循环"流")的信息包或帧的处理。由于DXP3180 以相同的方式分析来自输入纟爰冲器3140的输入流和来自再循环纟爰冲器 3160的再循环流,所以以下将只描述输入流分析。DXP 3180根据当前帧直至当前符号的分析来维持终结符和非终结符 的内部分析器堆栈。当分析器堆栈顶端的符号(或一些符号)为终结符时, DXP 3180将输入流报头的数据与终结符进行比较且期望匹配以便继续进 行。当分析器堆栈顶端的符号为非终结符时,DXP 3180使用非终结符和 当前输入数据来扩展堆栈上的语法生成。当分析继续时,DXP3180指导 执行引擎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将完全地分析报头。在信息包需要额外的操作或 额外的信息包来处理信息包负载的情况下,DXP3180将停止分析报头。根据判断模块3330,询问DXP3180是否能够完全地分析报头。如果 DXP 3180能够完全地分析报头,那么根据下一个模块3370, DXP 3180 调用信息包处理器3200中的例行程序来处理信息包负栽,语义处理器 3100等待下一个将在输入緩冲器3140处经由输入端口 3120而接收到的 信息包。如果DXP 3180不得不终止分析报头,那么根据下一个模块3340, DXP 31S0调用信息包处理器3200中的例行程序来操作信息包或等待附加
的信息包。在完成操作或附加信息包到达的情况下,信息包处理器3200 生成调整后的信息包。
根据下一个模块3350,信息包处理器3200将已调整的信息包(或其 的一部分)写入再循环緩冲器3160。这种操作可以通过使带有直接内存 存取内存子系统3240的再循环緩沖器3160工作,或通过使执行引擎3220 从内存子系统3240中读取已调整信息包然后再将已调整信息包写入再循 环緩冲器3160来实现。可选择地,为了节省在信息包处理器3200中的处 理时间,可向再循环緩沖器3160写入专用的^^头而不是整个已调整的信 息包。这个专用的4艮头指导信息包处理器3200来处理已调整的信息包, 而不必传送信息包处理器的内存子系统3240的整个信息包。
根据下一个模块3360, DXP 3180开始分析再循环緩冲器3160内的 数据报头。然后,执行返回到模块3330,其中询问DXP3180是否能够完 全地分析报头。如果DXP3180能够完全地分析报头,那么根据下一个模 块3370, DXP 3180调用信息包处理器3200中的例行程序来处理信息包 负载,语义处理器3100等待下一个将在输入緩冲器3140处经由输入端口 3120而接收到的信息包。
如果DXP3180不得不终止分析报头,那么执行返回到模块3340,其 中DXP 3180调用信息包处理器3200中的例行程序来搡作信息包或等待 附加的信息包,由此生成调整后的信息包。然后,语义处理器3200将已 调整的信息包写入再循环緩冲器3160, DXP3180开始分析再循环緩冲器 3160内的数据报头。
图25表示另一种语义处理器实施方式3400。语义处理器3400包含 有通过哈斯(hashing)函数或内容可寻址内存(CAM)查找表来存取在动态 随机存取内存(DRAM) 3480中数据的阵列机器语境数据(AMCD )内 存、用于加密、解密或数据认证的密码系统块3440、用于高速緩存发往 或来自DRAM3480的语境控制块的语境控制块高速緩存3450、用于高速 緩存基本操作中所使用数据的通用高速緩存3460、以及用于高速緩存正 在写入DRAM3480和从DRAM3480读取的数据流的流高速緩存3470。 语境控制块高速緩存3450优选为软件控制高速緩存,即进程判断何时使 用和释放高速緩存线。五个块的每一个都与DRAM3480以及语义代码执
行引擎(SEE)相连,其也^皮称作语义处理器(SPU) 3410。当DXP3180 对其发信号时,SEE3410处理信息包分段或执行其它的操作。当DXP3180 确定SEE任务即将在其分析过程中的某个特定时刻发出时,DXP 3180向 SEE 3140发信号以从语义代码表(SCT) 3420中加载微指令。然后,将 在SEE 3140中执行所下栽的微指令,从而处理信息包分段。
图26包含通过图25中的语义处理器3400处理所接收互联网协议 (IP)分段信息包的流程图3500。流程图3500用于图示说明根据本发明 实施方式的一种方法。
一旦经由输入端口 3120在输入緩冲器3140处接收到信息包,并且 DXP 3180开始分析输入緩冲器3140内的数据报头时,根据模块3510, 由于信息包被确定为 一个IP分段的信息包,从而DXP 3180停止分析所接 收信息包的报头。优选地,DXP3180完全分析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流水线,其中SPU 3410作为在语义处理器3400的两个块之间传送流动数据的管道或流水 线。
根据下一个判断模块3540, SPU 3410判断是否已分配了用于选择和 排序正确IP信息包分^^的语境控制块(CCB )。用于选择和排序与IP分 段信息包相对应的分段的CCB最好被存储在DRAM 3480中。CCB包含 有指向DRAM 3480中IP分段的指针、 一个针对没有到达IP分^殳信息包 的位掩码、以及在规定一段时间后迫使语义处理器3400停止等待附加IP 分段数据信息包和释放在DRAM 3480内CCB中的存储数据的计时值。
优选地,SPU 3410通过使用AMCD3430的内容可寻址内存(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 3180能够指导对存储于DRAM 3480的再装配 IP分段信息包进行处理,而不必将所有的IP分段信息包都传送至再循环 緩冲器3160。专用的报头可包括指定的非终结符号,其将关于IP的分析
器语法和指针加载至CCB。然后,分析器能够正常地分析IP纟艮头,并且 进入更高分层(例如TCP)报头的分析。
在本发明的实施方式中,DXP 3180通过循环仲裁法来决定对在再循 环緩冲器3160处接收的数据还是在输入緩冲器3140处接收到的数据进行 分析。现在关于接收信息包数据流的第一个和第二个緩沖器来讨论循环仲 裁法的高层次描述。当DXP3180完成第一个緩冲器内的信息包分析时, 它查找第二个緩沖器以判断是否有可以被分析的数据。如果有,那么分析 来自第二个緩冲器的数据。如杲没有,那么DXP3180回顾第一个緩冲器 以判断是否有可以被分析的数据。DXP 3180继续这种循环仲裁法直至第 一个緩冲器或第二个緩沖器内的数据都可以被分析。
图27包括通过图25的语义处理器3400来处理需要解密和/或认证的 已接收信息包的流程图3600。该流程图3600用于图示说明根据本发明实 施方式的另一种方法。
一旦在输入緩冲器3140或再循环緩冲器3160处接收到数据,并且 DXP3180开始分析所接收信息包的报头时,根据模块3610,由于确定该 信息包需要解密和/或认证,所以DXP 3180停止分析所接收信息包的报 头。如果DXP 3180开始分析来自再循环緩冲器3160的信息包报头,优
选地,再循环緩冲器3160将只包含前述的专用报头和再装配1P信息包的 第一个部分。
根据下一个模块3620, DXP 3180向SPU 3410发信号以下载SCT 3420中合适的微指令,并且从输入緩冲器3140或再循环緩冲器3160中 读取信息包。优选地,对于没有放置在再循环緩沖器中的数据,SPU3410 将从DRAM3480而不是再循环緩沖器3160中读取信息包分段。
根据下一个模块3630, SPU 3410将所接收的信息包写入密码系统块 3440,其中对信息包进行认证、解密或两者都进行。在优选实施方式中, 解密和认证可在密码系统块3440中并行执行。密码系统块3440通过使用 三层数据加密标准(TDES )、高级加密标准(AES )、消息摘要5 ( MD-5 ), 安全哈斯(secure hash)算法1 ( SHA-1) 、 Rivest Cipher 4 (RC-4)算法等 来认证、加密或解密信息包。尽管模块3620和3630显示为两个分立的步 骤,但是可以选择将它们作为一个步骤来实现,该步骤为SPU3410同时
读取和写入j言息包。
然后,将已解密和/或认证的信息包写入SPU3410,根据下一个模块 3640, SPU3410将该信息包写入再循环緩冲器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、 SCT3420、端口输入緩冲器(PIB)3730、端口输出緩冲器(POB) 3750、以及机器中央处理器(MCPU) 3771。
当DXP 3180确定SPU任务在分析过程的特定点处发起,那么DXP 3180向SEP分配器3720发信号以下栽语义代码表(SCT)中的微指令以 及从SPU群3710内的多个SPU 3410-1至3410-N中分配一个SPU以执行 该任务。然后,已下载的微指令和将执行的任务被发送至已分配的SPU。 接着,已分配的SPU执行微指令并由此处理数据信息包。在SEP分配器 3720的指导下,SPU能够选择性地从SCT 3420中直接下载微指令。
PIB3730包括至少一个网络接口输入緩冲器、再循环緩冲器、以及外 设元件互连(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包含。优选地,MCPU 3771还能够与SPU群的分配器3720通信以请求SPU为MCPU执行任 务。
在本发明的实施方式中,内存子系统3240进一步包括DRAM接口
3790, 其将连接密码系统块3440、语境控制块高速緩存3450、通用高速 緩存3460和流动高速緩存3470连接至DRAM 3480和外部的DRAM
3791。 在这个实施方式中,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连接的 初始登录和iU正。在一个实施方式中,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信息 包到达PIB3730的输入緩冲器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中已接收信息包位置的指 针至TCPCCB,以及重新起动TCPCCB中的计时器。然后,释放已分配 的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通过SPU 3710连接至内存子系统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之间触发才莫式存取的效率。ARM 3814包括内部高速緩存3815,在一个实施方式中其为32位宽。MCPU 3771 经专门指导以处理32个触发位的传送。MCPU3771可緩沖多个来自ARM 3814的32位触发,然后当高速緩存线达到数据量的一定门限时,触发外 部DRAM3791A。
在一个实施方式中,每个高速緩存区3825都能够物理地映射在外部 DRAM 3791A和3791B中的不同关联区域。这一点再加上分立的MCPU 3771能够避免在ARM 3814和外部DRAM 3791A之间的指令传送被在其 它高速緩存区中进行的数据传送所污染。例如,SPU 3710能够通过高速 緩存区3460、 3450和3470来加栽数据而不受ARM 3814所使用指令空间 的污染。
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 指引SPU3410使用CCB高速緩存3450。目标字段3914也可用于指引SPU 3410来访问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 DRAM 3791B的通路相互交替使用。这意味着CCB高速緩存3450和其它高速緩 存区3825既能够使用通向外部DRAM3791A的通路,又能够使用通向外 部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,然后为与LOA3916 相关的高速緩存线3918 ;险查HOA 3922和有效标志3920。如果有效标志 3920指示有效高速緩存记录并且HOA3922与物理地址3910的HOA3914 相匹配,那么高速緩存线3918的内容被读至所请求的SPU3410。如果标 志字段3920指示无效记录,那么高速緩存线3918的内容被写入外部 DRAM3791A (图30)中的相应地址上。如果标志字段3920指示有效高速緩存记录,但HOA3922与物理地址 3910的HOA3914不匹配,那么高速緩存线3918的记录之一被自动地下 载至外部DRAM 3791 A,并且与物理地址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中的任一条都可以由任意的SPU 3410于任意时刻发送至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内存379L在一个实施方式中, 高速緩存线是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和目标地址3%8以及从TCP报头3970中获得TCP源端口 地址和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个条目进行匹配。如果不匹配,那么SPU3410将为与信 息包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中。这样使得SPU3410 能够快速访问来自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包括表示高速緩存队列有效或无效的有效值(Valid value)、表示脏或干净的高速緩存队列状态值(Statusvalue)、和表示读、写
或无合并状况的指示值(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 3"0直接连接,而ARM 4014通过SPU群4012的SPU 3710 可与AMCD3430相连。AMCD 3430为SPU 3410提供内存查找工具。在 一个例子中,SPU3410确定先前所保存的条目存储在诸如外部DRAM
3719 (图28)的内存中的位置。AMCD3430的查找工具能够查找到数据 在互联网系统的任何存储位置,而且对外部DRAM3791没有限制。当系统是非学习模式时,SPU 3410保持自身的内存映射表,以及SPU 通过增加、删除和调整条目来管理该映射表。当系统是学习模式时,SPU 3410通过执行指令来保持该映射表,即在增加条目时搜索TCAM内存, 或者在删除条目时搜索TCAM内存。在这两种模式中,SPU3410使用关 键字数值来执行各种不同类型的搜索。图40的ADMC 3430包括一组查找接口 ( LUIF ) 4062。在一个实施 方式中,AMCD3430有8个LUIF4062。图示的具体实例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的使用。当SPU3410想要访问 LUIF 4062时,SPU读取空闲列表4050以确定哪个LUIF4062正在使用。 在读取空闲列表4050之后,返回下一个可用的空闲LUIF 4062的地址和 指示LUIF4062可被使用的数值。如果关于LUIF 4062的返回值是有效的, 那么SPU3410能够确实地控制LUIF。然后在空闲列表4050中产生条目, 接着特定的LUIF 4062就不能为其他的任何一个SPU 3410所使用,直到 第一个SPU释放该LUIF。当第一个SPU3410完成搜索和获得搜索返回结 果之后,SPU将已使用的LUIF标识返回空闲列表4050, LUIF可再次为 任意SPU3410所使用。如果空闲列表4050中没有空闲LUIF4062,将通 知所请求的SPU3410没有空闲LUIF,以及迫使SPU稍后再尝试以获得空 闲LUIF4062。空闲列表4050也提供流水线功能,其在等待处理其他SPU 请求时,允许SPU 3410开始加载索引。如下所述,所选的LUIF将查询指令和数据发送给仲裁器4068。仲裁
器4068选择由哪个特定LUIF4062来访问特定TCAM控制器。在这个所 述实施方式中,存在着外部TCAM控制器4072和内部TCAM控制器4076。 外部TCAM控制器4072连接外部TCAM4082,而外部TCAM 4082又连 接外部SRAM 4092。类似地,内部TCAM控制器4076连接内部TCAM 4096,而内部TCAM 4096又连接到内部SRAM4086。通常,在系统中任意一个时刻只有一个TCAM是有效的,无论是内 部TCAM4096或外部TCAM4082。换句话说,如果系统包括外部TCAM 和SRAM 4082、 4092,那么AMCD 3430与这些外部内存相连接。类似地, 如果系统不包括外部TCAM和SRAM内存4082、 4092,那么AMCD3430 只与内部TCAM4096和内部SRAM4086相连接。如同下述,根据外部内 存是否存在,仅使用 一个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。在一实施例中,内部TCAM4096包括512个条目,内部SRAM4086 也包括有512个条目。在其他的实施例中,外部TCAM 4082包括64K至 256K个条目(一个条目为72位,多个条目组合在一起产生宽度大于72 位的搜寻),而内部SRAM4092中也有与之相匹配的条目数目。SRAMS 4086、 4092的位宽通常为20位,而TCAM 4082、 4086则更宽。例如, 内部TCAM 4096宽度可能为164位;例如,而外部TCAM 4082宽度在 72位和448位之间。如上所述,当SPU3710执行查询,其自信息包数据生成关键字。SPU 3410保留一个LUIF4062,然后将指令和数据加载到LUIF4062的寄存器 仰66。当加载指令和数据时,在一个TCAM4096或4082中开始搜索。来 自寄存器4066的指令被传递到仲裁器4068,该仲裁器4068接着将数据 发送到合适的TCAM 4096、 4082。例如,假设外部的TCAM 4082存在,
因而也正在使用。对于TCAM指令,SPU3410发送的数据被提交给外部 TCAM控制器4072,该外部TCAM控制器4072将数据提交至外部TCAM 4082。当外部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连接至各个LUIF 4062以及多路选择器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-l-LUIF-8,其将下一个由所逸TCAM拉制器4076或4072 使用。按照仲裁器4068的最简单形式,可仅将其实现为循环仲裁器,在 其中连续地选择各个LUIF4062。如下所述,在更加智能的系统中,仲裁 器4068使用既往的历史来赋予优先级数值,其说明下一次应当选择哪个 LUIF 4062。在更加智能的仲裁器4068中,优先级系统表明哪个LUIF4062是最 近使用的,并将这一点作为选择用于下一个查询操作的LUIF4062的判别 因素。图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。这 样就确保了各个LUIF4062的公平使用,而且没有一个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能够独占所有 的查询带宽。上迷系统可使用执行一些或所有操作的专用处理器系统、微控制器、 可编程逻辑器件、或微处理器。上述的一些操作可用软件实现,而其他的 操作用可由硬件实现。 本技术领域的熟练人员应认识到,在本发明的范围内可能存在其他的 功能性分区。而且,哪些功能在普通的集成电路上实现而哪些不能实现可 才艮据应用而改变。最后,尽管说明书在几个地方都提及了 "一个"、"某个"、"另一 个"或"一些"实施例,但并不必然意味着这样的提及都指相同的实施方 式或是特征仅适用于单个实施方式。
权利要求
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所述的装置,其中所述緩冲器从所述语义处理单元 接收待所述直接执行分析器分析的数据。
全文摘要
存储服务器使用语义处理器来分析和响应客户端的请求。语义处理器中的直接执行分析器按照规定的语法分析输入流,其包括客户端存储服务器的请求。能够操作数据(例如数据移动、数学和逻辑运算)的语义处理器执行引擎执行微代码段以响应来自于直接执行分析器的请求,以便进行客户端所请求的操作。在一些实施例中,尽管语义处理器自身可能只吸取几个瓦特的功率,但作为结果的操作效率使得整个存储服务器分解成一些可放置于媒体装置的印刷电路板上的相当小的集成电路。
文档编号G06F7/38GK101128795SQ200580022737
公开日2008年2月20日 申请日期2005年5月11日 优先权日2004年5月11日
发明者乔纳森·斯威德勒, 凯文·杰罗米·罗怀特, 凯维赫·杰拉里, 拉杰斯·奈尔, 科莫·瑞斯, 索姆索布理·司柯达尔, 豪伊·V·特朗 申请人:米斯特科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1