专利名称:结合存储块支持多存储体的方法和设备的制作方法
相关应用的交叉引用没有可应用的。
关于联邦发起的研究的声明没有可应用的。
背景技术:
在本领域所知的是,网络设备,比如路由器和开关,能包括网络处理器来使得易于收发数据。某些网络处理器,例如英特尔公司生产的多核心,单芯片IXP网络处理器以及高速排队和FIFO(先进先出)结构由利用指针进行存储的描述符结构支持。公开号为US2003/0140196A1的美国专利申请披露了一个排队控制数据结构的例子。例如,用指针结构寻址的信息包描述符可以为32位或更少位。
也在本领域所知的是,控制存储器的存储容量需求随着在网络系统里被支持的排队数量的增加在持续地增加。典型的SRAM(静态随机读写存储器)解决方案,例如QDR(四倍数据率),在存储容量方面存储技术是受限的。众所周知的是,SRAM实现是昂贵的而且和DRAM(动态随机存取存储器)比较起来消耗了大量的不动产。然而,一些所知的DRAM实现,例如RLDRAM(减少等待时间DRAM),具有存储器将不同的存储体的存储命令分类来最大化存储器带宽利用。现有的存储控制器设计为每个存储体使用单独的FIFO,这导致了大量的存储单元,例如FIFOs(先进/先出)。例如在8体设计中,使用8个FIFOs,而在16体设计中,使用16个FIFOs。
图1示出了先前技术的包括主命令FIFO2来存储命令的基于体的存储器控制器1和基于储存体5a-h中的哪一个将处理命令来分类命令的体管理模块4。在所述的实施中有8个FIFOs 6a-h,每一个相应于每个存储体5a-h。引脚接口7配置在存储体5a-h和FIFOs 6a-h之间。每个FIFO的头/尾结构8a-h能控制每个FIFO 6a-h的数据输入输出。此外,每个FIFO 6a-h的先行结构9a-h能方便数据传送给引脚接口7。
利用这个配置,需要的和存储体数量相等的FIFOs需要相对大量的芯片区。此外,如果一个体FIFO未被充分使用,不用的存储器不能给由于特定存储体的命令超额而暂时超载的FIFO。如果一个体FIFO装满,背压信号将被送给主命令FIFO,这将反过来背压整个系统至因此没有命令丢失。背压信号减少吞吐量并且一般地使系统实施降级。进一步的,由于每个存储模块有一个单独的满,空,头指针和尾指针结构,8体存储器需要具有这些结构的8个设置等等。
附图概述这里包含的实施例将从以下的详细说明以及联系附图更加充分地被了解,其中图1是先前技术的存储控制器的实现;图2是包括网络设备的系统的例子的图,该网络设备包括具有基于体的存储控制器的网络处理器单元。
图2A是一个具有处理单元支持基于体的存储控制器的网络处理器的例子的图。
图3是一个运行微码的处理单元(PE)的例子的图。
图4是一个示出存储控制器执行的例子的图。
图5A-5D示出了在存储控制器里的序列的存储和使用命令;以及图6是存储体和接口逻辑执行的例子的概括描述。
详细描述图2示出了网络设备2的例子,该设备包括具有链接表悬挂队列的内容寻址存储器的网络处理器单元(NPUs),当处理来自于数据源6的收入信息包以及将处理后的数据传送到目的设备8时,定制存储命令。网络设备2包括,例如,路由器,开关等等。数据源6和目的设备8包括目前所知的或者将要开发的不同的网络设备,这些网络设备能被连接跨越通讯路径,例如具有OC-192(每秒10G比特)线速的光学路径。
所述的网络设备2能管理队列和访问将在下面详述的存储器。设备2以通过交换结构SF(例如,纵横或者共享的存储器交换结构)互连的线路卡LC1-LC4(“刀片”)的集合为特征。交换结构SF,例如,可以遵照CSIX(通用交换接口)或者其他结构技术例如HyperTransport,Infiniband,PCT(外围组件互连),Packet-Over-SONET,RapidIO,和/或UTOPLA(ATM(异步传输模式)的通用测试和操作物理层接口)。
单独的线路卡(例如LC1)可以包括一或多个物理层(PHY)设备PD1,PD2(例如,光的,有线的,以及无线物理层)处理网络连接上的通讯。物理层PD在不同网络媒体传输的物理信号和数字系统使用的比特(例如,“0”-s和“1”-s)之间进行翻译。线路卡LC也能包括帧设备(例如,以太网,同步光纤网络(SONET),高级数据链路(HDLC)调帧器或者其他的“第二层”设备)FD1,FD2执行例如误差检测和/或校正的对帧的操作。所示的线路卡LC也能包括一或多个网络处理器NP1,NP2为经由物理层接收的信息包执行信息包处理操作以及将信息包通过交换结构SF直接传送到线路卡LC,提供一个出口接口来传送信息包。潜在的,网络处理器NP可以代替帧设备FD来执行“第二层”的职责。
图2A示出了包括处理器12的系统10的例子,该系统能作为网络处理器提供。处理器12被连接到一或多个I/O设备,例如,网络设备14和16,以及存储系统18。处理器12包括多个处理器(“处理引擎”或“处理单元”)20,每一个具有多个控制硬件执行线程22。在所示的例子里,有“n”个处理单元20,每一个处理单元20能够处理多线程22,这将在下面更充分地描述。在所述的实施例里,硬件支持的线程的最大数目“N”为8。每一个处理单元20连接到相邻的处理单元并能和其通讯。
在一个实施例里,处理器12也能包括一个通用目的处理器24帮助下载微码控制处理单元20和处理器12的其他资源,并且执行其他的计算机类型功能例如处理协议和异常。在网络处理应用里,处理器24也能提供支持给不能通过处理单元20处理的高层网络处理任务。
每一个结合共享资源操作的处理单元20包括,例如,存储系统18,外部总线接口26,I/O接口28以及控制和状态寄存器(CSRs)32。I/O接口28负责控制和连接处理器12到I/O设备14,16。存储系统18包括动态随机存取存储器(DRAM)34,通过DRAM控制器36来访问和静态随机读写存储器(SRAM)38,通过SRAM控制器40来访问。尽管没有示出,处理器12也可以包括非易失性存储器来支持引导操作。DRAM 34和DRAM控制器36被典型地用来处理大列的数据,例如,在网络应用里,处理来自于网络信息包的有效载荷。在一个网络实施里,SRAM 38和SRAM控制器40被用来减少等待时间,快速存取任务,例如,访问查找表等等。
设备14,16可以为能够传输和/或接收网络通信数据的任意网络设备,例如连接到10/100Base T以太网,干兆以太网,ATM或者其他类型的网络的帧/MAC(媒体访问控制子层)设备,或者连接到交换结构的设备。例如,在一个配置里,网络设备14可以为以太网MAC设备(连接到以太网上,没有示出)传输数据到处理器12以及设备16可以为交换结构设备从处理器12接收处理的数据为了传输到交换结构。
此外,每一个网络设备14,16能包括多个端口被处理器12服务。I/O接口28因此支持一或多种类型的接口,例如为了信息包和单元在物理层设备和更高级的协议层(例如,链路层)之间传输的接口,或者在通信管理器和交换结构之间的为了异步传输模式(ATM),网际协议(IP),以太网,和类似的数据通讯应用的接口。I/O接口28可以包括单独的接收和传输块,每一个可以为处理器12支持的特定接口单独配置。
其他的设备,例如主计算机和/或总线外设(未示出),可以连接到被外部总线接口26控制的外部总线,也能被处理器12服务。
一般的,作为网络处理器,处理器12能连接到不同类型的通讯设备或者收/发数据的接口。处理器12作为网络处理器操作能接收来自于例如像网络设备14那样的网络设备的单元信息并且以并行的方式处理那些单元。单元信息能包括整个的网络信息包(例如,以太网信息包)或者像这样的包的一部分,例如,像通用交换接口(或者“CSIX”)单元或者ATM单元,或者信息包段。其他单元也如此预期。
处理器12的每一个功能单元连接到一个外部总线结构或者互连42。存储总线44a,44b分别连接存储控制器36和40,分别地,到存储系统18的各自的存储单元DRAM34和SRAM38。I/O接口28经由单独的I/O总线线路46a和46b分别连接到设备14和16。
参照图3,示出了处理单元20的一个例子。处理单元(PE)20包括控制单元50,该控制单元包括控制存储51,控制逻辑(或者微控制器)52以及上下文仲裁器/事件逻辑53。控制存储51用来存储微码。微码可以通过处理器24下载。PE线程22的功能性因此为了特定用户的应用被通过核心处理器24下载到处理单元的控制储存51的微码来确定。
微控制器52包括每一个被支持的线程的指令解码器和程序计数器(PC)单元。上下文仲裁器/事件逻辑53能从任意共享的资源,例如,SRAM38,DRAM34,或者处理器核心24等等接收消息。这些消息提供一个请求功能是否已经完成的信息。
PE20也包括执行数据路径54和连接到控制单元50的通用目的寄存器(GPR)文件单元56。数据路径54可以包括一些不同的数据路径单元,例如,ALU(数字逻辑单元),乘法器和内容寻址存储器(CAM)。
GPR文件单元56(GPRs)的寄存器以两个单独的体被提供,体A56a和体B56b。GPRs完全地在程序控制下被读写。GPRs,当在指令里作为资源使用时,提供操作数给数据路径54。当在指令里作为目的地使用时,它们和数据路径54的结果一起被写入。指令区分被资源或者目的地选择的特定GPRs的寄存器的数目。由控制单元50提供的指令里的操作码位选择哪一个数据路径单元将执行指令定义的操作。
PE20进一步包括写传输(传输输出)寄存器文件62和读传输(传输输入)寄存器文件64。写传输寄存器文件62的写传输寄存器存储将被写到在处理单元外部的资源的数据。在所述的实施例里,写传输寄存器文件被分割为SRAM(SRAM写传输寄存器62a)和DRAM(DRAM写传输寄存器62b)的单独的寄存器文件。读传输寄存器文件64用来存储来自于在处理单元20的外部的资源的返回数据。像写传输寄存器文件一样,读传输寄存器文件分别地被分割为SRAM和DRAM的单独的寄存器文件,寄存器文件64a和64b。传输寄存器文件62,64连接到数据路径54和控制存储50。应该注意的是处理器12的结构支持“反射器”指令允许任意PE访问其他任何PE的传输寄存器。
PE20也包括本地存储器66。本地存储器66被寄存器68a(“LM_Addr_1”),68b(“LM_Addr_0”)寻址,其提供操作数到数据路径54,从作为目的地的数据路径54接收结果。
PE20也包括本地控制和状态寄存器(CSRs)70,连接到传输寄存器,来存储本地内部线程和全程事件信号信息,以及其他控制和状态信息。其他存储和功能单元,例如,循环冗余校验(CRC)单元(未示出),也可以被包括在处理单元里。
PE20的其他寄存器类型包括下一个相邻(NN)寄存器74,连接到控制存储50和执行数据路径54,为存储从在管道的先前相邻PE接收的信息来处理下一个相邻输入信号76a,或从被本地CSRs 70的信息控制的相同的PE。在处理管道的下一个相邻输出信号76b到下一个相邻PE(“下流PE”)能在本地CSRs70的控制下被提供。因此,在任意PE上的线程能够通过下一个相邻信号发信号给下一个PE上的线程。
由于所述的硬件被示出并且在这儿对某些细节进行描述,可以理解的是在这里所示的和所描述的具有链接表悬挂队列来定制存储命令的内容寻址存储器的实施例可以应用于不同的硬件,处理器,结构,设备,开发系统/工具等等。
图4示出了存储控制器100的例子,其包括主命令FIFO 102提供命令给存储命令存储器模块104来存储多存储体106a-h的命令。控制机构108a-h,由于每个存储体106a-h连接到命令存储器模块104,能包括头指针和尾指针。每个存储体可选的先行模块110a-h能连接在命令存储模块104的数据出口端口和引脚接口逻辑112之间。本领域普通技术人员所知的是,先行模块110提高了写命令群和读命令群的最佳存储操作的有效性。也就是说,转换读命令到写命令和/或相反的转换能浪费存储周期。
在实施例里,在命令存储模块104里的每一个位置包括命令存储字段104a和下一个字段104b,其指向在给定的存储体的命令的链接表里的下一个入口。命令存储器模块104进一步包括有效标记104c,其能形成“有效比特阵列”的一部分。当入口包含有效命令时,或者头指针指向特定入口时,它的相应有效标记104c被设置。在入口被使用后,有效标记104c重置并且入口进入可用入口池。
控制机构108包括头指针109和尾指针111。最初,头指针和尾指针109,111指向相同的位置,该位置在初始化时被分配给相应的存储体。那儿头尾指针指向相同的位置,能假定命令存储器模块104不包括相应存储体的任意指令。一般的,每个控制机构108,和命令存储器模块104连接在一起,控制每个存储体命令的链接表。
当接收到给定存储体的新命令时,自由入口被命令存储器模块的有效标记104c所确定。新命令被写入头指针位置并且下一个自由入口位置被识别和放置在下一个字段104b。尾指针111被更新指向下一个自由入口位置。命令的链接表使用这个机构能被构建。
当引脚接口逻辑112从命令存储器模块104得到新指令时,尾指针111用来从存储器池里读出下一个命令。尾指针111接着用写在下一个指针位置的入口号来更新并且和使用的入口相应的有效标记104c被重置。
图5A-C,和图4联系在一起,示出了存储和使用在基于头指针109,尾指针111和命令存储器模块的下一个字段104b的命令存储器模块(图4)中的命令的处理顺序的例子。已经了解的是头尾指针109,111控制特定存储体命令的链接表以及头尾指针对存在于每一个存储体。
在图5A里,模块104并不包括连接头尾指针109,1111的体的任意命令,因此它们指向相同的位置,如命令存储器模块104的位置5所示。注意到位置5(15)的有效标记104c15由于头指针109指向这个位置被设置。在图5B里,来自于主命令FIFO102(图4)的第一命令C1存储在位置5的命令字段104a15里。作为命令存储器操作的一部分,下一个入口位置基于有效标记104c被识别。在所述的实施例里,位置7被识别为下一个入口位置并且这个信息被写入到位置5的下一个字段104b15。尾指针111被更新指向命令存储器模块的位置7并且位置7的有效标记104c17被设置。
在图5C里,第二命令C2从主命令FIFO102被接收并存储在位置7里。下一个入口位置被识别为位置1并且这个信息被写入位置7的下一个字段。尾指针111被更新指向位置1并且这个位置的有效标记被设置。
在图5D里,第一命令C1从命令存储器模块104被传送到先行结构110和引脚接口112。存储第一命令C1的位置5变成空并且有效标记104c被重置。头指针109被更新指向位置7,其包括第二命令C2,如此来处理顺序接收和使用的特定存储体的命令等等。
由于这里有一个多重存储体的命令存储器模块104,代替例如在传统实施里头使用的8或者16存储器模块,从而获得了存储模块利用的显著提高。此外,存储体FIFOs(链接表)能增长或者收缩来减少或者消除背压发生的数量。
已经了解的是宽范围的存储体的实施是可能的。图6示出了能连接到图4的引脚接口逻辑112的8存储体配置的一个例子。由于访问给定的存储体可能使得体在下一个或者下几个周期内不可用,引脚接口逻辑112通过保持追踪哪些存储体是可用的来最大化存储体的访问。对于不同的存储体的访问应该在时间上被分配来最大化存储器访问的有效性。此外,由于头尾指针在范例实施例里被示出,可以理解的是其他指针结构能被用来满足特定实施的需求。
其他实施例在以下的权利要求的范围之内。
权利要求
1.一存储控制器系统,包括存储命令存储器模块,存储用于多个存储体的命令,该存储命令存储器模块包括多个位置,每一个位置有命令存储器字段和下一位置字段;以及多个连接到该存储命令存储器模块的控制机构,所述多个控制机构的每一个分别相应于多个存储体中的一个,每一个控制机构包括一第一指针和一第二指针,其中第一指针,第二指针和下一位置字段提供用于多个存储体中的给定一个的命令的链接表。
2.根据权利要求1所述的系统,其中第一指针指向下一个将被使用的指令,第二指针指向在其中存储命令的下一位置,并且下一位置字段包括通过第二指针的下一位置指向的指针。
3.根据权利要求1所述的系统,进一步包括主命令存储器设备来提供命令给存储命令存储器模块。
4.根据权利要求1所述的系统,其中在存储命令存储器模块里的多个位置的每一个包括有效标记。
5.根据权利要求4所述的系统,其中当命令被存储在第一位置相应位置和/或第二指针指向该位置时,有效标记被设置。
6.根据权利要求4所述的系统,其中有效标记被用来确定在存储命令存储器模块里的下一可用位置。
7.一网络处理器单元,包括存储控制器系统,包括存储命令存储器模块,存储用于多个存储体的命令,该存储命令存储器模块包括多个位置,每一个位置有一命令存储器字段和一下一位置字段;以及多个连接到该存储命令存储器模块的控制机构,多个控制机构的每一个分别相应于多个存储体中的一个,每一个控制机构包括一第一指针和一第二指针,其中第一指针,第二指针和下一位置字段提供用于多个存储体中的给定一个的命令的链接表。
8.根据权利要求7所述的单元,其中第一指针指向下一个将被使用的指令,第二指针指向在其中存储命令的下一位置,并且下一位置字段包括通过第二指针的下一位置指向的指针。
9.根据权利要求7所述的单元,进一步包括主命令存储器设备来提供命令给存储命令存储器模块。
10.根据权利要求7所述的单元,其中在存储命令存储器模块里的多个位置的每一个包括一个有效标记。
11.根据权利要求7所述的单元,其中网络处理器单元有形成于一个单独的管芯上的多核。
12.一网络传输设备,包括至少一线路卡,用于传输数据给交换结构的端口;所述至少一线路卡包括具有配置来执行微码的多线程处理单元的一网络处理器单元,该网络处理器单元包括存储控制器系统,具有存储命令存储器模块,存储用于多个存储体的命令,该存储命令存储器模块包括多个位置,每一个位置有一命令存储器字段和一下一位置字段;以及多个连接到该存储命令存储器模块的控制机构,多个控制机构的每一个分别相应于多个存储体中的一个,每一个控制机构包括一第一指针和一第二指针,其中第一指针,第二指针和下一位置字段提供用于多个存储体中的给定一个的命令的链接表。
13.根据权利要求12所述的设备,其中第一指针指向下一个将被使用的指令,第二指针指向在其中存储命令的下一位置,并且下一位置字段包括通过第二指针的下一位置指向的指针。
14.根据权利要求12所述的设备,进一步包括主命令存储器设备来提供命令给存储命令存储器模块。
15.根据权利要求12所述的设备,其中在存储命令存储器模块里的多个位置的每一个包括一个有效标记。
16.根据权利要求15所述的设备,其中有效标记被用来确定在存储命令存储器模块里的下一可用位置。
17.一种存储在命令存储器模块里的多个存储体的命令的方法,包括接收用于多个存储体的第一个的第一命令;存储该第一命令于位于存储命令存储器模块的第一位置的命令字段;更新头指针/尾指针对的尾指针到存储命令存储器模块中的下一可用位置,该头指针/尾指针对相应于多个存储体的第一个;以及存储指针到存储命令存储器模块的第一位置的下一位置字段中的下一可用位置,其中头指针、尾指针和下一位置字段提供用于多个存储体的第一个的命令的链接表。
18.根据权利要求17所述的方法,进一步包括为在存储命令存储器模块的下一可用位置设置有效标记。
19.根据权利要求18所述的方法,其中有效标记为第一位置被设置并且通过检查在存储命令存储器模块的位置的有效标记来确定另一可用位置。
20.根据权利要求17所述的方法,进一步包括传输来自于存储命令存储器模块的第一命令并且更新头指针。
21.根据权利要求17所述的方法,进一步包括当多个存储体的其他体的进一步的命令被接收和传输时,更新进一步的头/尾指针对。
全文摘要
一存储控制器系统包括一存储命令存储器模块来存储多个存储体的命令。系统包括多个控制机构,每个包括第一和第二指针,和每个模块位置的下一字段联系在一起,来提供多个存储体中给定的一个的命令的链接表。
文档编号H04L12/56GK1809025SQ200510121540
公开日2006年7月26日 申请日期2005年12月21日 优先权日2004年12月21日
发明者S·杰恩, G·沃尔瑞奇, M·罗森布鲁斯, D·伯恩斯坦恩 申请人:英特尔公司