网络处理器中的多内核互联的制作方法

文档序号:6497486阅读:202来源:国知局
网络处理器中的多内核互联的制作方法
【专利摘要】一种网络处理器包括用于处理数据包数据的多个处理器内核。为了为处理器内核提供对内存子系统的访问,一个互连电路对处理器内核和L2高速缓存与其他内存设备之间的通信进行引导。这些处理器内核被分成若干组,每组共享一条单独总线,并且该L2高速缓存被分成多个条,每个条可以访问一条单独的总线。该互连电路处理存储和从跨多条总线从这些处理器内核检索数据的请求,并处理从这些高速缓存条返回数据的响应。其结果是,该网络处理器为多个处理器内核提供高带宽内存访问。
【专利说明】网络处理器中的多内核互联
[0001]相关申请
[0002]本申请2011年10月31日提交的美国申请13/285,629号申请的继续申请并要求其优先权,该申请的整体教导通过引用结合于此。
【背景技术】
[0003]典型的网络处理器对高级网络协议的工作(如数据包处理操作)进行调度和排队,并且在将数据包转发到连接设备之前允许相对于所接收到的数据包内的高级网络协议(例如,传输层和应用层)进行处理。通常由网络处理器执行的功能包括数据包过滤、队列管理和优先级、服务质量增强、以及访问控制。通过利用特定于处理数据包数据的特征,网络服务器可以优化联网设备的接口。

【发明内容】

[0004]本发明的实施例提供了一种用于对网络处理器中的数据传送和处理进行控制的系统。互连电路引导一组多个处理器内核与高速缓存之间的通信。多条内存总线各自将一组对应的多个处理器内核连接到该互连电路上。该高速缓存被分成多个条,其中每个条通过一条单独总线连接到该互连电路上。该互连电路提供了将从该多个处理器内核接收的请求分布在这些高速缓存条之间。
[0005]在进一步的实施例中,该互连电路可以通过修改这些请求的一个地址部分来转换这些请求。此转换可以包括在每个请求上执行一个散列函数,这提供了这些请求在该多个条之间的一个伪随机分布。该互连电路或这些高速缓存条可以进一步被配置成用于维持多个标签,这些标签指示一个偶联到该多个处理器内核上的LI高速缓存的状态。该互连电路将所接收的请求内的标签引导至多个信道,由此同时处理多个标签。
[0006]在又进一步的实施例中,该互连电路可以包括多个数据输出缓冲器。这些数据输出缓冲器中的每个缓冲器可以从该多个条中的每个条接收数据,和通过这些内存总线中的一条对应内存总线输出数据。该互连电路还可以包括多个请求缓冲器,其中,这些请求缓冲器中的每个缓冲器从每组处理器接收多个请求并将该请求输出到这些条中的一个对应的条。
[0007]在进一步的实施例中,一个或多个桥接电路可以偶联到这些内存总线上。这些桥接电路可以将这些处理器内核连接到一个或多个片上协处理器。进一步地,为了保持内存一致性,这些高速缓存条可以延迟将一个提交信号传输至该多个处理器内核。然后,响应于接收到对已经将无效信号传输至该多个处理器内核中的全部内核的一个指示,这些高速缓存条传输该提交信号。该互连电路和多条内存总线可以被配置成用于控制无效信号在比到达该多个条之一的提交所需的时间更少的时间到达一个LI高速缓存并控制一个后续信号到达接收该无效信号的该多个处理器内核之一。
【专利附图】

【附图说明】[0008]根据本发明的示例性实施例的以下更具体的说明,上述内容将是明显的,如在这些附图中展示的,其中贯穿这些不同的视图的相同的参照字符是指相同的部分。这些图不一定是按比例绘制,而是着重展示本发明的实施例。
[0009]图1为一个框图,展示了一个网络服务处理器,可以在该网络服务处理器中实现本发明的实施例。
[0010]图2为一个实施例中的一致内存互联(CMI)电路和相关联的组件的框图。
[0011]图3为一个框图,展示了一个实施例中的对至这些高速缓存条的请求进行的处理。
[0012]图4为一个框图,展示了到这些高速缓存条的存储请求中实现的缓冲器。
[0013]图5为一个框图,展示了在这些高速缓存条输出的数据中实现的缓冲器。
[0014]图6为一个实施例中的高速缓存条的框图。
【具体实施方式】
[0015]在详细说明本发明的示例实施例之前,下面紧接着描述了一种可以在其中执行这些实施例的示例网络安全处理器,以帮助读者理解本发明的创造性特征。
[0016]图1是一个框图,展示了一个网络服务处理器100。该网络服务处理器100使用至少一个处理器内核120提供高应用性能。
[0017]该网络服务处理器100处理在所接收的数据包中封装的开放系统互联网络L2-L7层协议。如本领域技术人员所熟知的,开放系统互联(OSI)参考模型定义了七层网络协议层(L1-7)。物理层(LI)表示将一台设备连接到一个传输媒介的实际接口,包括电气接口及物理接口。数据链路层(L2)执行数据组帧。网络层(L3)将数据格式化为数据包。传输层(L4)处理端到端的传输。会话层(L5)管理设备之间的通信,例如,无论通信是半双工的还是全双工的。表现层(L6)管理数据格式化及表现,例如,语法、控制代码、特殊图形及字符集。应用层(L7)允许用户之间的通信,例如,文件传送及电子邮件。
[0018]该网络服务处理器100可能为上层网络协议(例如,L4-L7)规划和排列工作(包处理操作),并且允许在接收到的待执行的数据包中进行上层网络协议的处理,以便以线速转发数据包。线速是在传输和接收数据的网络上传送数据的速率。通过处理这些协议来以线速转发这些数据包,该网络服务处理器不会降低网络数据传送速率。
[0019]多个接口单元122接收到一个数据包以进行处理。PCI接口 124也可以接收一个数据包。这些接口单元122通过检查所接收到的数据包中包括的L2网络协议报头中的各种字段来执行所接收到的数据包的预处理,并且然后将该数据包转发到一个数据包输入单元126。至少一个接口单元122a可以从多个X附接单元接口(XAUI)、精简X附接单元接口(RXAUI)、或系列千兆媒体独立接口(SGMII)接收数据包。至少一个接口单元122b可以从一个茵特拉肯接口(ILK)接收连接。
[0020]该数据包输入单元126执行所接收数据包中包括的网络协议头(例如L3及L4头)的进一步的预处理。该预处理包括对于TCP/用户数据包协议(UDP) (L3网络协议)的校验和检查。
[0021]一个空闲池分配器128维护多个指针池,以释放2级高速缓存内存130及外部DRAM108中的内存。该数据包输入单元126使用这些指针池中的一个来将所接收到的数据包数据存储在2级高速缓存内存130或外部DRAM108中,并且使用这些指针池中的另一个来为这些处理器内核120分配工作条目队列。
[0022]数据包输入单元126然后将数据包数据写入2级缓存器130或外部DRAM108中的缓冲器中。优选地,该数据包数据被以便于在这些处理器内核120中的至少一个中执行的高层软件的格式写入这些缓存器中。因此,促进了高级网络协议的进一步处理。
[0023]网络服务处理器100还可包括一个或多个特定用途协处理器。当包括在内时,这些协处理器将一些处理从这些内核120中分流,由此使得该网络服务处理器能够实现高通量数据包处理。例如,提供了一个压缩/解压缩协处理器132,其专用于执行所接收到的数据包的压缩及解压缩。协处理单元的其他实施例包括RAID/De-Dup单元162,这加快了磁盘存储应用程序的数据分块及数据复制处理。
[0024]另一个协处理器是超级有限自动机(HFA)单元160,该单元包括多个专用HFA线程引擎,这些引擎被适配成用于加快防病毒、入侵检测系统及其他内容处理应用程序所必需的模式和/或特征匹配。使用一个HFA单元160,模式和/或特征匹配得到加快,例如被以超过每秒万兆比特的倍数的速率执行。该HFA单元160在一些实施例中可包括确定型有限自动机(DFA)、非确定型有限自动机(NFA)、或HFA算法单元中的任一个。
[0025]一个I/O接口 136管理整体协议及仲裁并且提供一致的I/O划分。该I/O接口136包括一个I/O桥138及一个获取及添加单元140。该I/O桥包括两个桥,一个I/O数据包桥(IOBP) 138a及一个I/O总线桥(IOBN) 138b。I/O数据包桥138a被配置成用于管理整体协议及仲裁并且提供主要与数据包输入及输出相一致的I/O划分。I/O总线桥138b被配置成用于管理整体协议及仲裁并且提供主要与该I/O总线相一致的I/O划分。该获取及添加单元140中的寄存器用来维持那些用于通过一个数据包输出单元146转发已处理的数据包的输出队列的长度。I/O桥138包括多个缓冲队列,用于存储有待在一个一致内存互联(CMI) 144、一个I/O总线142、数据包输入单元126及数据包输出单元146之间传送的信肩、O
[0026]各种各样的I/O接口(M10)116可包括多个辅助接口,如通用I/0(GP10)、闪存、IEEE802 二线管理接口(MDIO)、串行管理中断(SMI)、通用异步收发两用机(UART)、精简千兆比特媒体独立接口(RGMII)、媒体独立接口(MII)、二线串行接口(TWSI)及其他串行接□。
[0027]网络服务提供者100还可包括一个支持MIPS EJTAG标准的联合测试行动组(JTAG)接口 123。根据JTAG及MIPS EJTAG标准,该网络服务提供者100内的多个内核将各自具有一个内部测试访问端口( “TAP”)控制器。这允许对该网络服务提供者100的多核调试支持。
[0028]一个调度/同步及顺序(SSO)模块148为这些处理器内核120排列并调度工作。通过将一个工作条目队列加入到一个队列来排列工作。例如,该数据包输入单元126为每次数据包的到来添加一个工作条目队列。一个定时器单元150用来为这些处理器内核120
调度工作。
[0029]处理器内核120从SSO模块148请求工作。SSO模块148为这些处理器内核120的其中之一选择(即,调度)工作,并且将一个指针返回到该工作条目队列以向该处理器内核120描述该项工作。[0030]处理器内核120依次包括指令高速缓存152、I级数据高速缓存154、及加密加速156。在一个实施例中,该网络服务处理器100包括32个超标量精简指令集计算机(RISC)型处理器内核120。在一些实施例中,这些超标量RISC型处理器内核120各自包括MIPS643版处理器内核的一个扩展。在一个实施例中,这些超标量RISC型处理器内核120各自包括一个cnMIPS II处理器内核。
[0031]2级高速缓存内存130及外部DRAM108被所有的处理器内核120及I/O协处理器设备共享。每个处理器内核120由该CMI144偶联到该2级高速缓存内存130。该CMI144是用于这些处理器内核100、该I/O接口 136和该2级高速缓存内存130及控制器之间的所有内存及I/O事务的通信信道。在一个实施例中,该CMI144可扩展到32个处理器内核120,通过完全写入支持完全一致的I级数据缓存154。优选地,该CMI144被高度缓冲了区分I/O优先级的能力。该CMI偶联到一个轨迹控制单元164,该轨迹控制单元被配置成用于捕获总线请求,这样软件随后可以读取该请求并且在该CMI上生成事件顺序的轨迹。
[0032]2级高速缓存内存控制器131维持内存参考一致性。它针对每个填写请求返回一个块的最新副本,无论该块是存储在2级高速缓存内存130中、在外部DRAM108中、还是在“飞行中”。它还针对每个处理器内核120中的数据缓存154存储了这些标签的复制本。它将高速缓存-块-存储请求的地址与这些数据-高速缓存标签比较,并且每当一个存储指令通过该I/O接口 136来自另一个处理器内核或来自一个I/O部件时使一个数据-高速缓存标签对于一个处理器内核120无效(两个副本)。
[0033]在一些实施例中,多个DRAM控制器133支持高达128千兆字节的DRAM。在一个实施例中,该多个DRAM控制器包括四个DRAM控制器,这些DRAM控制器各自支持32千兆字节的DRAM。优选地,每个DRAM控制器133支持到DRAM108的一个64比特接口。此外,DRAM控制器133可以支持优选的协议,如DDR-1II协议。
[0034]在这些处理器内核120已经处理一个数据包后,数据包输出单元146从2级高速缓存内存130、108中读取该数据包数据,执行L4网络协议后处理(例如,生成一个TCP/UDP校验和),通过这些接口单元122或PCI接口 124转发该数据包并且释放该数据包使用的L2高速缓存内存130/DRAM108。
[0035]这些DRAM控制器133管理发向/来自DRAM108的飞行中事务(负载/存储)。在一些实施例中,这些DRAM控制器133包括四个DRAM控制器,该DRAM108包括四个DRAM内存,并且每个DRAM控制器连接到一个DRAM内存。DFA单元160在一个旁路高速缓存访问路径135上直接偶联到这些DRAM控制器133。该旁路高速缓存访问路径135允许该HFA单元不使用2级高速缓存内存130而直接从内存读取,这可以提高HFA操作的效率。
[0036]本发明的实施例可以在图1中所示的网络服务处理器100中实现,并且其可以更具体地针对数据包输入单元(PKO) 126以及接口单元122。以下参照图2至图4进一步详细描述了示例实施例。
[0037]图2为一个实施例中的一致内存互联(CMI)电路244和相关联的组件的框图。CMI244为用于对多组处理器内核220A-D、I/0桥238A-B、与2级高速缓存内存条230A-D之间的内存和I/O事务进行引导的通信信道和控制电路。CMI244可以在网络处理器100内被实现为CMI144,其中,处理器内核220A-D被实现为处理器内核120,I/O桥238A-B被实现为I/O桥138a-b,并且2级高速缓存内存条230A-D被实现为2级高速缓存130。[0038]随着网络处理器中所实现的处理器内核的数量的增加,提供如此大量来源的内存子系统的受控访问成为问题。具有大量处理器内核(例如,32个)的网络处理器中存在的一个第一挑战是如何将将请求从这些内核传送至内存系统。之前的设计使用了环形总线,该环形总线可以产生更高的(和可变的)延迟。设计多内核芯片的一个第二挑战是服务那么大量内核生成的大量请求。一个第三类似的挑战涉及处理器内核的LI标签(下文中被称为复制标签,或DUT)的结构,该结构必须容纳每个查找请求的要求并可能对DUT进行更新。第四,必须将响应数据从高速缓存传送回FILL总线。在每个高速缓存条具有一次仅服务一条总线请求的能力并且每个请求需要多达4个周期的情况下,可能没有充分利用FILL总线。一个第五挑战涉及与总线存储请求相关联的数据,必须将该数据从请求源传送至将服务该请求的高速缓存条。此问题可与该第五挑战(涉及响应数据)比较,但其中来源和目的地颠倒。第六,这些处理器内核需要访问这些I/O桥的另一侧上的设备。最后,一个第七挑战涉及贯穿该存储器子系统保持内存一致性。
[0039]本发明的实施例提供了用于通过四个一致内存总线(CMB) 225A-D集对这些多个处理器内核和该L2高速缓存和内存子系统之间的事务进行处理。每个CMB225A-D包括多个单独ADD/ST0RE/C0MMIT/FILL总线。四个CMB225A-D的整个分组和I/O桥总线10C/10R通过一致内存互联(CMI) 244连接在一起。同样,四个附加CMB235A-D包括多个单独ADD/STORE/COMMIT/FILL总线,并且将这些高速缓存条230A-D连接到CMI244。
[0040]这些CMB225A-D各自可以支持一组对应的处理器内核220A-D。在本示例实施例中,每组处理器内核220A-D包括8个处理器内核,但其可以被修改以包括附加或更少的内核。为了提供对网络处理器的I/O部分的内存访问,总线225A-B其中的两条总线附接了一个IO桥(IOB) 238A-B。该10B0238A可以用于通过专用I/O命令(IOC)和I/O响应(IOR)总线为处理器内核220A-D提供对NCB侧I/O设备的访问。10B0238A和10B1238B两者可以通过分别与处理器内核220A-B共享CMB总线225A-B来访问该L2高速缓存和内存子系统。[0041 ] 高速缓存条230A-D中的每个条可以包括一个2级高速缓存控制器(L2C),该高速缓存控制器控制CMB225A-D与高速缓存条230A-D之间的命令和响应的传送,同时维持该系统的共享内存一致性模型。以下参照图6进一步详细描述了该L2C。
[0042]通过将处理器内核220A-D和I/O桥238A-B分成四组,由单个CMB225A-D服务每组,可以使用较低的延迟仲裁逻辑。仅在一组处理器内核220A-D(和I/O桥238A-B,在带有附接IO桥的CMB的情况下)之间做出本地仲裁决定,作为覆盖小得多的物理区域的源。仲裁请求和那些请求的同意可以在一个单个周期内完成,如果试图在网络处理器的所有处理器内核和I/O桥之间进行仲裁,这将是一个不可实现的速率。此外,所有CMB225A-D可以用相同低、固定延迟连接到该互连电路中的请求缓冲器。其结果是,以低延迟将请求从这些内核传送至该内存系统。
[0043]为了服务该大量处理器内核生成的大量请求,该L2高速缓存被分成四个单独的高速缓存条230A-D。其结果是,可以服务的请求的带宽变成四倍。可以使用互斥或(XOR)功能使每个请求的物理地址散列,该互斥或功能被配置成用于为所有常见的地址跨步产生高速缓存块跨这4个高速缓存条的近随机分布。这将CMB请求的空间局部性转换成跨这四个高速缓存条230A-D的近随机分布,从而允许每个周期更好地利用四次标签查找。相反地,如果该L2高速缓存反而是一个一致结构,每个周期仅发生一次标签查找,从而严重限制了L2高速缓存带宽。其结果是,该网络处理器可以服务该大量内核生成的大量请求。以下参照图3描述了请求处理和引导的一种示例配置。
[0044]在处理数据请求时,CMI244必须查找和可能更新DUT。在4条总线馈送请求的情况下,该过程每个周期需要多达4次DUT查找。为了容纳多次DUT查找,可以将DUT分成8个集合(也被称为“信道”),每个集合每个周期可以执行一次查找。互连电路244每个周期能够将多达4个CMB请求开槽(slot)至该DUT,其条件是它们需要使用不同的集合。此配置提供2:1的资源对请求的比率,从而增加了可以在同一周期服务多个请求的几率。其结果是,网络处理器内核的LI标签可以容纳每个请求的要求以查找和更新DUT。以下参照图3进一步详细描述了对DUT进行更新的过程。
[0045]通过一条对应的总线225A-D和CMI244将存储或检索数据的请求从一组处理器内核220A-D中的一个内核传送至将对该请求进行服务的高速缓存条230A-D。为了对来自该多个处理器内核的请求进行服务,从存储源(或者I/O桥238A-B或者处理器内核220A-D)读取存储数据的过程可以与写入高速缓存条230A-D存储缓冲器的过程解耦。这可以使用四个2读取/2写入端口自定义数据缓冲器来完成。每个缓冲器可以从两个CMB225A-D总线接收数据,并将数据发送至两个高速缓存条230A-D。此配置允许每个CMB225A-DST0RE总线在每个周期期间提供给定量值(例如,128字节)存储数据,并允许每个高速缓存条每个周期接收相同量值(例如,128字节)的存储数据,而独立于需要提供或接收该数据的具体CMB225A-D或高速缓存条230A-D。此配置CMB存储数据请求的仲裁和针对写入高速缓存条230A-D缓冲器的仲裁,由此允许充分利用可用的总线资源。其结果是,充分利用了高速缓存条的数据输入容量。以下参照图4详细描述了数据缓冲器的配置。
[0046]高速缓存条提供对请求的响应,并且该响应必须从该高速缓存条传送回CMB235A-D FILL总线。每个高速缓存条230A-D可能仅能够一次服务一个CMB请求,并且每个请求需要多达4个周期。为了保持充分利用这些CMB235A-D FILL总线,高速缓存条230A-D FILL缓冲器读取端口可以与CMB235A-D FILL总线解耦,并且可以在互连电路244中实现一个3写入端口可绕过缓冲器以预获取发往CMB235A-D FILL总线的数据。这允许多达3个高速缓存条读出响应数据并对其进行排队以发送至同一总线。这些缓冲器提供用于协调这些CMB235A-D FILL总线和这些高速缓存条230A-D FILL端口以使利用最大化。其结果是,充分利用高速缓存条的数据输出容量。以下参照图5进一步详细描述了 FILL缓冲器的此配置。
[0047]除了高速缓存条230A-D以外,处理器内核220A-D还需要访问10B238A-B的另一侧上的设备(例如,图1中的网络处理器100的I/O总线142上的接口单元122a-b和其他设备)。通过10B0238A的专用I/O命令(IOC)总线提供此访问。这些CMB235A ADD/STORE总线从处理器内核220A-D提供请求,并且互连电路244可以将那些请求转化成该IOC总线所需的形式。此外,互连电路244必须针对该单个IOC总线处理仲裁。当I/O桥238A提供响应数据时,其将该数据放在I/O响应(IOR)总线上。然后,互连电路244接收此数据,对其进行适当格式化,并通过该CMB235A-D FILL总线将该数据返回至请求内核。其结果是,为处理器内核220A-D提供了对跨10B238A-B的设备的访问。
[0048]为了保持内存子系统一致性,鉴于多总线结构,必须考虑存储请求所生成的无效信号和提交信号。当处理器内核220A-D或I/O设备(通过I/O桥238A-B)请求存储操作时,其从对应的高速缓存条230A-D的L2C接收一个提交信号以通知其他内核或I/O设备现在能够从那个存储器看到数据。通过针对其自己的存储器等待所有突出的提交信号,可以确定其更早的存储将在后续存储之前可见。这提供了一种用信号通知其他内核和设备它们可以继续进行的机制。因为多个内核可以在与生成存储的内核/设备不同的总线上,该提交信号与其相关联的LI无效信号之间存在一种重要的排序关系。如果被发送信号的内核在其接收到无效信号之前接收到该信号,其可以看到旧数据,从而引起内存系统中失去一致性。通过抑制传输该提交信号直到首先确认所有总线的无效信号已经被发送至跨所有总线225A-D的处理器内核220A-D,高速缓存条230A-D的L2C可以防止此一致性丧失。在一些实施例中,该电路可以被配置成用于保证这些无效信号在比到达该存储源的提交所需的时间更少的时间到达该LI并保证一个后续信号到达接收该无效信号的内核。其结果是,保持了内存一致性。[0049]图3为一个框图,展示了一个实施例中的对至这些高速缓存条的请求进行的处理。如以上参照图2所述,这些内核侧CMB225A-D和这些高速缓存侧CMB235A-D两者包括多条ADD总线,这些总线携带发起内存事务的地址和控制信息。这些事务的来源可以是处理器内核220A-B和10B238A-B。如图3中所示,CMI互连电路244提供用于处理地址和将其从内核侧CMB225A-D转发至高速缓存侧CMB235A-D。此处,参照图2,在CMB225A-D的与高速缓存条230A-D(也被称为“TAD” (TAD0-TAD1))的任一 FIFO缓冲器对应的ADD总线(ADD0-ADD3)处接收请求的地址。这四条ADD总线中的任一总线可以将事务引导至任一高速缓存条230A-D。无论从哪一条ADD总线发起该事务,请求的地址选择对该事务进行处理的高速缓存条230A-D。可以使用互斥或(XOR)功能使每个请求的物理地址散列,该互斥或功能被配置成用于为所有常见的地址跨步产生高速缓存块跨这四个高速缓存条230A-D(TAD0-TAD3)的近随机分布。这将CMB请求的空间局部性转换成跨这四个高速缓存条230A-D(TAD0-TAD3)的近随机分布,从而允许每个周期更好地利用四次标签查找。
[0050]到达ADD总线上的事务首先进入目的高速缓存条的FIFO之一。每个FIFO每个周期可以缓冲多达四个ADD总线事务。一种算法确定进一步处理多个地址的顺序。
[0051]CMI互连电路244处的调度器可以确定哪些事务可以退出这些FIFO。多达四个事务(这四个TAD中的每个可能发出一个事务)每个周期竞争电路244中的LlD标签管。这些LlD标签管(如管0-7所示)具有这些LI数据高速缓存标签的副本(即,它们为复制标签、或DUT)。这些LlD标签管确定该事务是否使LI高速缓存中的块的副本无效。如果是,则互连电路244将最终针对该事务在COMMIT和FILL总线上发送一个LlD高速缓存无效命令。
[0052]当接收到一个请求时,互连电路244可以对该请求的地址(或地址的一部分,如地址位〈9:7?进行分析以选择每个事务使用哪个LlD标签管。如果所呈现的多达四个事务中的每个事务不同之处全在于地址位〈9: 7>,则交叉开关在该周期期间调度所有事务。该实现方式将DUT分成包含LlD标签管0-3的DUT0-3、和包含LlD标签管4_7的DUT4-7。
[0053]当互连电路244对来自高速缓存条FIFO的事务进行调度时,该事务同时进入分别在互连电路244 (通过ADD总线)和该高速缓存条内的一个LlD标签管和L2标签管两者。对该DUT的状态进行更新以与这些LI标签的状态匹配。该高速缓存条飞行中的缓冲器最终使用来自这些标签管的结果完成该事务。当不存在竞争DUT和高速缓存条资源时,旁路(未示出)可以避免任何过度的FIFO延迟。
[0054]每个请求可以要求该高速缓存条的L2标签的查找、以及所有处理器内核的LI标签的状态。此状态被保持为DUT,为LI标签在L2中的副本。因为将这些请求均匀地分布在这些高速缓存条上的地址散列函数可能没有用于LI,如散列函数所需的位可能不能及时获得。为了提供足够的带宽而在DUT中每周期执行4次查找,可以将DUT分成8个单独的集合(“信道”),其中每个地址映射到一个信道内。因为每周期仅选择4个地址而具有8个DUT信道,可能将基于常态地址分布选择不止一个请求(最大多达4个)。
[0055]图4为一个框图,展示了在到这些高速缓存条的请求中实现的缓冲器。如以上参照图2所述,这些高速缓存侧CMB235A-D包括多条STORE总线,每条总线携带在内存事务过程中有待存储到高速缓存条230A-D的数据。通过一条对应的总线225A-D和CMI244将存储或检索数据的请求从一组处理器内核220A-D中的一个内核传送至将对该请求进行服务的高速缓存条230A-D。为了对来自该多个处理器内核的若干请求进行服务,四个2读取/2写入端口数据缓冲器422A-D从这些STORE总线接收数据(ST0RE0-ST0RE1)。每个缓冲器422A-D可以从两条CMB225A-D STORE总线接收数据,并可以将数据发送至两个高速缓存条230A-D。此配置允许每条CMB225A-D STORE总线在每个周期期间提供给定量值(例如,128字节)存储数据,并允许每个高速缓存条每个周期接收相同量值(例如,128字节)的存储数据,而独立于需要提供或接收该数据的具体CMB225A-D或高速缓存条230A-D。
[0056]图5为一个框图,展示了在这些高速缓存条输出的数据中实现的缓冲器。如以上参照图2所述,高速缓存条提供对请求的响应,并且必须将该响应从该高速缓存条传送回这些CMB235A-D FILL总线(图5中示为TADOFILL...TADIFILL)。每个高速缓存条230A-D可能仅能够一次服务一个CMB请求,并且每个请求需要多达4个周期。为了保持充分利用CMB235A-D FILL总线,FILL缓冲器532A-D可以被实现为将高速缓存条230A-D读取端口与CMB235A-D FILL解耦。FILL缓冲器532A-D可以是在互连电路244中可以实现的3写入端口可绕过缓冲器以预获取发往CMB235A-D FILL总线的数据。这允许多达3个高速缓存条读出响应数据并对其进行排队以发送至同一总线。缓冲器532A-D提供用于协调这些CMB235A-D FILL总线和这些高速缓存条230A-D FILL端口以使这些CMB235A-D FILL总线中的每条总线的利用最大化。
[0057]图6为以上参照图2描述的高速缓存条230A-D中的每个条中存在的L2C控制电路的框图。该高速缓存条包含用于L2高速缓存的其部分的高速缓存标签和数据两者。四个四线组包含该数据。每个四线组具有256KB的L2高速缓存。高速缓存条还包括多个地址和数据缓冲器。这些地址缓冲器包括对所有接收到的L2读取和写入操作进行跟踪的飞行中的地址缓冲器(LFB)、以及对被写入到DRAM (通过LMC)的所有块进行跟踪的受害(victim)地址缓冲器(VAB)。L2C在其LFB中保持并处理多达16个同时L2/DRAM事务,并且还在VAB/VBF中管理多达16个飞行中的L2高速缓存受害操作/完全写入操作。
[0058]数据缓冲器包括:填充缓冲器(FBF),每当从L2高速缓存或DRAM读取数据时使用这些填充缓冲器;存储缓冲器(SBF),其用于所有STORE事务;以及受害数据缓冲器(VDB),其用于将数据写入到DRAM。针对L2/DRAM填充事务,L2C通过与LFB入口相关联的FBF入口从或者L2高速缓存或者内存返回数据。针对L2/DRAM存储事务,L2C首先将STORE总线数据存入到与该LFB入口相关联的SBF入口,然后或者更新高速缓存或者将满的高速缓存块存储直接写入到DRAM。除了至高速缓存块中的所有字节的存储操作,L2高速缓存中丢失的所有L2/DRAM事务需要DRAM填充操作。部分高速缓存块存储操作需要DRAM填充操作以获得没有存储的字节。L2C将DRAM填充数据放到FBF内,然后将其写入L2高速缓存(如需要),并且将其转发到FILL总线上(如需要)。
[0059]虽然已参照其示例实施例对本发明进行了具体地解释和说明,本领域技术人员将理解可不脱离所附权利要求书所包括的本发明的范围在其中做出形式上的各种改变及详细说明。
【权利要求】
1.一种计算机芯片上的计算机系统,包括: 一个互连电路; 多条内存总线,每条总线将一组对应的多个处理器内核连接到该互连电路上;以及 一个高速缓存,被分成多个条,其中每个条通过一条单独总线连接到该互连电路上; 该互连电路被配置成用于将从该多个处理器内核接收的多个请求分布在该多个条之间。
2.如权利要求1所述的系统,其中,该互连电路通过修改这些请求的一个地址部分来转换这些请求。
3.如权利要求2所述的系统,其中,该互连电路在这些请求的每个请求上执行一个散列函数,该散列函数提供这些请求在该多个条之间的一个伪随机分布。
4.如权利要求1所述的系统,其中,该互连电路被配置成用于维持多个标签,这些标签指示一个偶联到该多个处理器内核之一上的LI高速缓存的一种状态,并且其中,该互连电路进一步被配置成用于将该多个请求中的多个标签引导至多个信道,由此同时处理这些对应的标签。
5.如权利要求1所述的系统,其中,该互连电路进一步包括多个数据输出缓冲器,这些数据输出缓冲器中的每个缓冲器被配置成用于从该多个条中的每个条接收数据并通过该多条内存总线中的一条对应总线输出数据。
6.如权利要求1所述的系统,其中,该互连电路进一步包括多个请求缓冲器,这些请求缓冲器中的每个缓冲器从每组多个处理器接收多个请求并将该请求输出到该多个条中的一个对应的条。
7.如权利要求1所述的系统,进一步包括偶联到这些内存总线中的至少一条内存总线上的至少一个桥接电路,该至少一个桥接电路将该多个处理器内核连接到至少一个片上协处理器。
8.如权利要求1所述的系统,其中,这些条被配置成用于延迟将一个提交信号传输至该多个处理器内核,响应于接收到对已经将多个无效信号传输至该多个处理器内核中的全部内核的一个指示,这些条传输该提交信号。
9.如权利要求1所述的系统,其中,该互连电路和该多条内存总线可以被配置成用于控制多个无效信号在比到达该多个条之一的一个提交所需的时间更少的时间到达一个LI高速缓存并控制一个后续信号到达接收该无效的该多个处理器内核之一。
【文档编号】G06F12/08GK103959261SQ201280059239
【公开日】2014年7月30日 申请日期:2012年10月29日 优先权日:2011年10月31日
【发明者】R·E·凯斯勒, D·H·阿舍, J·M·珀维勒, B·D·多比 申请人:凯为公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1