向星形拓扑串行总线接口委托网络处理器操作的制作方法

文档序号:6477919阅读:271来源:国知局
专利名称:向星形拓扑串行总线接口委托网络处理器操作的制作方法
技术领域
本发明涉及计算机和电信领域,更具体而言,本发明涉及用于计算机和电信应用 中的高级处理器。
背景技术
现代计算机和电信系统具有极大的优点,包括能够在全世界范围内进行信息通 信。计算机和电信设备的常规架构包括大量的分立电路,这导致处理能力和通信速度二者 的效率低。例如,图1示出了这种采用大量分立芯片和技术的常规线卡。在图1中,常规线 卡100包括以下分立部件分类部件102、业务管理器104、缓冲存储器106、安全协处理 器108、传输控制协议(TCP)/网际协议(IP)卸载引擎110、L3+协处理器112、物理层设备 (PHY) 114、媒体存取控制(MAC) 116、分组转发引擎118、结构接口芯片120、控制处理器122、 动态随机存取存储器(DRAM) 124、存取控制表(ACL)三重内容可寻址存储器(TCAM) 126和多 协议标签交换(MPLS)静态随机存取存储器(SRAM) 128。该卡还包括交换结构130,该交换 结构130可以与其他卡和/或数据连接。处理器和其他部件的进步已经提高了电信设备处理、操作、存储、检索和传送信息 的能力。近来,工程师们已经开始将多种功能组合到集成电路中,以便减少分立集成电路的 总数量,同时仍然以同样或更好水平的性能执行必要的功能。利用新技术增大芯片上的晶 体管数量的能力以及降低成本的愿望已经对这种组合起了促进作用。这些组合的集成电路 中的一些的功能已经变得如此强大,以致于它们经常被称为芯片上系统(SOC)。然而,在芯 片上组合电路和系统可能会变得非常复杂并提出了很多工程难题。例如,硬件工程师希望 确保将来设计的灵活性,而软件工程师希望确保他们的软件也能运行在芯片上和将来的设 计上。在高级交换和路由领域中,对新型尖端组网和通信应用的需求一直在持续增长。 此外,诸如内容感知组网(content-aware networking)、高集成性安全和新形式的存储管 理之类的方案正开始移植到灵活的多业务系统中。用于实现这些和其他下一代方案的技术 必须提供智能和高性能,并且具有灵活性,以迅速适应新的协议和业务。为了利用这种高性能组网和数据处理能力,重要的是这样的系统能够优选利用 标准化高带宽总线与各种高带宽外围设备通信。尽管很多有专利权的高带宽总线是可能 的,但是利用标准化总线允许系统与更宽范围的各种外围设备进行接口,从而提高了系统 的总体价值和实用性。近年来流行的一种高带宽标准化总线是PCI Express (PCI-E或PCIe)接口。PCIe 接口最初由Intel提出,作为非常普及但带宽有限的个人计算机PCI接口的替代,PCIe接 口的带宽大,而且由于PCIe接口现在已经成为个人计算机主板上的标准部件,因此它也得 到了广泛使用。目前有数百或数千不同的外围设备可与PCIe接口 一起工作,使得这种接口 对于当前的高级处理系统而言尤其有用。
较早的并行PCI系统遭遇了带宽瓶颈,该带宽瓶颈是由于保持大量的以高时钟速 度彼此同步的并行电路线引起的,与该较早的并行PCI系统相反,PCIe系统是非常快速的 串行系统。串行系统仅使用非常少数量的电路线,通常是使用两根电路线来发送,使用两根 电路线来接收,这种更简单的方案在高时钟速度和高数据率下支持得更好。PCIe通过允许 多个串行电路而进一步提高了带宽。根据PCIe的结构,可以有少到1个双向电路,或者多 到32个双向串行电路。尽管在硬件层级上串行PCIe系统根本不同于较早的并行PCI系统,但较早的PCI 系统极其成功,并且计算机行业已经在较早代的PCI硬件和软件中做了大量投资。为了帮 助带宽高得多的PCIe系统与先前存在的PCI硬件和软件基础设施兼容,将PCIe设计成模 拟较早并行PCI数据传输协定中的很多协定。这样,较早代的软件能够继续对PCIe设备寻 址,如同它们是PCI设备一样,并且PCIe电路将PCI数据发送和接收请求转换成串行PCIe 数据分组,发送或接收这些数据分组,然后将串行PCIe数据分组重新组装成可由最初为 PCI格式设计的软件(和硬件)处理的格式。这种保持向后兼容同时又提供高得多带宽的 PCIe设计意图已经成功了,并且PCIe现在已经在计算机行业标准中得到广泛使用。尽管其他工作人员,例 如Stufflebeam (美国专利7058738)已经看到了将多个CPU 通过单个交换器(例如PCIe交换器)接口到多个I/O设备的某些问题,但之前的这种工作 一直集中在复杂性较低且性能通常较低的多个CPU配置上,而这种配置不必应对当多个内 核必须经由其他高速(常常是芯片上的)通信环和互连来协调它们活动时所造成的问题。因此,需要的是一种能够利用新技术并且同时还能够提供高性能功能性的高级处 理器。此外,这种技术将是尤其有帮助的,它包含灵活的改造能力,例如包含利用诸如PCIe 总线等高带宽星形拓扑总线与多个高带宽外围设备进行接口的能力。

发明内容
本发明提供了用于克服所述局限的有用新结构和技术,并提供了一种高级处理 器,该高级处理器能够利用新技术,同时还能够提供具有灵活修改能力的高性能功能性。本 发明采用了包括模块化部件和通信结构的高级架构芯片上系统(SoC)以提供高性能的设备。这种高级处理器包括多个多线程处理器内核,每个多线程处理器内核都具有数据 高速缓冲存储器和指令高速缓冲存储器。数据交换互连(DSI)通过其相应的数据高速缓冲 存储器耦合到每个处理器内核,并且数据交换互连(DSI)被配置为在处理器内核之间传递 信息。还可以将2级(L2)高速缓冲存储器、存储器桥和/或超级存储器桥耦合到数据交换 互连(DSI)并且2级(L2)高速缓冲存储器、存储器桥和/或超级存储器桥用于存储可由处 理器内核访问的信息。消息收发网络通过内核的相应指令高速缓冲存储器(消息站)耦合到每个处理器 内核。多个通信端口连接到消息收发网络。在本发明的一个方面中,高级电信处理器还包 括耦合到消息收发网络和多个通信端口的接口切换互连(ISI),所述接口切换互连(ISI) 用于在消息收发网络和通信端口之间传递信息。这个接口切换互连也可以与超级存储器桥 通信。超级存储器桥也可以与一个或多个通信端口和前述DSI通信。在这里披露的本发明的实施例中,消息收发网络和ISI连接到PCIexpress (PCIe)接口,使处理器能够与很宽范围的各种高带宽PCIe外围设备进行接口。本发明的PCIe实施例的优点包括能够以高效、灵活和高成本效益的方式在计算 机系统和大量外围设备之间提供高带宽通信。


参考附图来描述本发明,附图中图1示出了常规的线卡;图2A示出了根据本发明实施例的示例性高级处理器,示出了 PCIe接口如何连接 到处理器;图2B示出了根据本发明备选实施例的示例性高级处理器,再次示出了 PCIe接口 如何连接到处理器;图3A示出了常规的单线程单发射处理;
图3B示出了常规的简单多线程调度;图3C示出了常规的具有停顿线程(stalled thread)的简单多线程调度;图3D示出了根据本发明实施例的渴望轮询(eager round-robin)调度;图3E示出了根据本发明实施例的多线程固定周期调度;图3F示出了根据本发明实施例的采用渴望轮询调度的多线程固定周期;图3G示出了根据本发明实施例的具有关联接口单元的内核;图3H示出了根据本发明实施例的处理器的示例性流水线;图31示出了根据本发明实施例的处理器内的内核中断流水操作;图3J示出了根据本发明实施例的可编程中断控制器(PIC)操作;图3K示出了根据本发明实施例的用于多个线程分配的返回地址堆栈(RAS);图4A示出了根据本发明实施例的数据交换互连(DSI)环装置 (ringarrangement);图4B示出了根据本发明实施例的DSI环部件;图4C示出了根据本发明实施例的DSI中的示例性数据检索的流程图;图5A示出了根据本发明实施例的快速消息收发环部件;图5B示出了图5A的系统所用的消息数据结构;图5C示出了根据本发明实施例的连接到快速消息收发网络(FMN)的各种主体 (agent)的概念图;图5D示出了常规处理系统中的的网络业务;图5E示出了根据本发明实施例的分组流;图5F示出了 PCIe接口如何连接到FMN/ISI和PCIeI/0总线的详细视图;图5G示出了在FMN/ISI和PCIe接口之间发送的64比特字消息的数据字段概述;图5H示出了 PCIe接口 DMA如何将来自处理器的消息转换成PCIeTLP请求以及 PCIe接口 DMA如何重新组装这些各种PCIe TLP分组的;图51示出了一个流程图,该流程图示出了 PCIe读请求和写请求之间的确认消息 的不对称性;图6A示出了根据本发明实施例的在四个线程上均勻分配分组的分组分配引擎
9(PDE);图6B示出了根据本发明实施例的利用轮询方案进行分组分配的PDE ;图6C示出了根据本发明实施例的在分组生命周期期间的分组排序设备(POD)布 置;以及图6D示出了根据本发明实施例的POD输出分配(outbounddistribution)。
具体实施例方式参考具体架构和协议来描述本发明。本领域技术人员将认识到,说明书用于例示 并提供了实施本发明的最佳模式。说明书并非要进行限制,所提到的电信和其他应用可以 同样适用于通用计算机应用,例如服务器应用、分布式共享存储器应用等。如本文所述,提 到了以太网协议、网际协议、超传输协议和其他协议,但本发明也可以适用于其他协议。此 外,提到了包含集成电路的芯片,同时可以想到以芯片形式组合这些所述集成电路的其他 混合电路或元电路。此外,提到了示例性MIPS架构和指令集,但在本发明中可以使用其他 架构和指令集。其他架构和指令集例如包括x86、PowerPC, ARM等。A.架构架构是针对系统的,将系统设计成对在常规线卡上执行的许多功能进行合并且增 强线卡功能性。在一个实施例中,本发明是一种包括用于执行很多分立功能的电路的集成 电路。对集成电路设计进行调节,以使其适应通信处理。因此,处理器设计强调存储器密集 型操作而不是计算密集型操作。处理器设计包括用于减轻处理器繁重的存储器存取过程的 内部网络,将存储器存取过程委托给其他实体以进行单独处理。结果是高效率的存储器存 取和线程处理。此外,本发明的一个实施例被设计成对在图1的常规线卡上执行的许多功能进行 合并,且增强线卡功能性。在一个实施例中,本发明是一种包括用于执行很多分立功能的电 路的集成电路。对集成电路设计进行调节,以使其适应通信处理。因此,处理器设计强调存 储器密集型操作而不是计算密集型操作。处理器设计包括用于如下所述的高效率存储器存 取和线程处理的内部网络。图2A示出了根据本发明实施例的示例性高级处理器(200)。高级处理器是一种能 够执行先前分派给特定集成电路的很多功能的集成电路。例如,高级处理器包括分组转发 引擎、3层协处理器和控制处理器。根据需要,处理器可以包括其他部件。如这里所示,给定 示例性功能部件的数量,在示例性实施例中,功率消耗大约为20瓦。当然,在本发明的其他 实施例中,功率消耗可以多于或少于大约20瓦。示例性处理器被设计为芯片上的网络。分布式处理架构允许部件彼此通信且不必 共享公共时钟速率。例如,以较高速率对一个处理器部件进行时钟控制,而以较低速率对另 一个处理器部件进行时钟控制。网络架构还支持通过简单向网络增加部件来在将来的设计 中增加其他部件的能力。例如,如果期望将来的通信接口,则可以将该接口布置于处理器芯 片上并将其耦合到处理器网络。然后,可以把将来的处理器与新通信接口制造在一起。设计原则是创造一种能够利用通用软件工具和可重复使用的部件编程的处理器。 几个支持这种设计原则的示例性特征包括静态门设计;低风险定制存储器设计;基于触 发器的设计;可测试性设计,包括全扫描、存储器内置自我测试(BIST)、架构冗余和测试仪器支持特征;功耗更低,包括门控时钟;门控逻辑和存储器换页;数据通路和控制分离,包 括智能引导布置;以及物理实现的快速反馈。软件原则是能够利用行业标准开发工具和环境。希望利用通用软件工具和可重复 使用的部件来对处理进行编程。行业标准工具和环境包括常见工具,例如gcc/gdb以及在 客户或程序设计者选择的环境中开发的能力。还希望通过提供硬件抽象层(HAL)定义来保护现有的和将来的代码投资。这样能 够较容易地使现有的应用和代码与未来代的芯片兼容。谈到CPU内核,内核被设计成适应MIPS64,并具有在大约1. 5GHz+范围内的频率目 标。支持该架构的另外示例性特征包括4路多线程单发射10级流水线;实时处理支持,包 括高速缓冲存储器行同步(cache linelocking)和向量中断支持;32 KB 4路组关联的指 令高速缓冲存储器;32KB4路组关联的数据高速缓冲存储器;以及128条目的翻译旁视缓冲 器(TLB)。示例性实施例的一个重要方面是高速 处理器输入/输出(I/O),其由如下部件 支持两个XGMII/SPI-4(例如图2A的框228a和228b);三个IGbMAC ;—个能够适应 800/1600MHZ存储器的16比特超传输(例如框232),该800/1600MHz存储器包括一个闪存 部分(例如图2A的框226)和两个四倍数据率(QDR2)/双倍数据率(DDR2) SRAM部分;能够 适应400/800MHZ的两个64比特DDR2通道;以及包括PCIe (PCI扩展或扩展外围部件互连) 端口(例如图2A的框234)、联合测试存取组(JTAG)和通用异步接收机/发射机(UART) (例如框226)的通信端口。PCIe 通信端口使用诸如PCIe总线之类的高带宽星形拓扑串行通信总线是有益的,这是因为它 有助于扩展处理器的能力和实用性。在讨论如何能够将PCIe技术集成到这种处理器中之 前,有必要对PCIe技术做更详细的回顾。如前所述,PCIe总线由一个或更多个(通常是多个)高带宽双向串行连接构成。 每个双向串行连接被称为“通道”。这些串行连接轮流受到PCIe交换器的控制,PCIe交换 器能够以星形拓扑配置在各种PCIe外围设备(器件)与PCIe交换器之间创建多个点到点 串行连接。结果,每个设备自身都直接串联连接到交换器,而不必与其他设备共享该连接。 这种拓扑,连同串行连接的更高固有速度,有助于提高PCIe总线的带宽。为了进一步增加 带宽,PCIe设备能够以1和32个通道连接到交换器。于是,需要更高带宽的PCIe设备可 以采用更多个PCIe通道,而需要较低带宽的PCIe设备可以采用较少的PCIe通道。注意,将串行总线接口到这种高级处理器的有效手段的当前教导不限于PCIe协 议自身。如将要论述的,这些技术和方法适应于与广泛的各种不同星形拓扑高速串行总线 协议一起工作,各种不同星形拓扑高速串行总线协议包括HyperTransport、InfiniBand, RapidIO和StarFabric。然而,为了简化论述,在本公开中将始终使用PCIe作为具体示例。如前所述,为了最大化地向后兼容先前存在的PCI并行总线,PCIe的设计人员选 择了使PCIe总线的新串行方面对于系统硬件和软件而言尽可能地透明(不容易觉察到)。 他们通过如下方式来实现这一点使PCIe总线的高级接口类似于较早的PCI总线,并且将 串行数据管理功能放在较低层上,从而先前存在的硬件和软件将不必应对非常不同的基于 PCIe分组的串行数据交换格式。这样,PCIe数据分组发送广泛的各种不同信号,包括控制信号和中断信号。可以在 Budruk> Anderson 禾口 Shanley, Mindeshare, Inc. (2004), Addisonffesley 的 “PCI express system architecture” 一书中找到关于 PCI express 的详细信息。简而言之,PCIe协议由物理层(包含逻辑子层和电气子层)、事务层和数据链路层 构成。
物理层(有时称为PIPE或PHY)控制着连接各PCIe设备的实际串行线。它允许设 备与中央PCIe交换器形成一个或多个串行双向“通道”,并利用每个设备具体的硬件和带 宽需求来精确确定应当给设备分配多少通道。由于所有通信都是通过串行链路进行的,因 此其他消息,例如中断和控制信号也是通过这些通道由串行数据分组发送的。不是使用时 钟脉冲来同步数据(这样使用大量的带宽),而是利用顺序的8比特/10比特编码方案来发 送数据分组,该8比特/10比特编码方案自身携带有充足的时钟信息,以确保设备不会失去 一个字节在哪里开始,另一个字节在哪里结束的线索。如果通过多个通道向设备发送数据, 通常会对这种数据进行交织,在不同通道上发送顺序的字节,这进一步提高了速度。PCIe的 速度通常在2. 5吉比特/秒的范围内,不远的将来要设计更快的设备。事务层严格管理在任何给定时刻串行通道上进行的是什么类别的业务。它采用的 是基于信用的流控制。PCIe设备向它们具有的任何额外接收缓冲器发信号(获得信用)。 无论何时只要发送设备向接收设备发送事务层分组(在这里称为PCIe-TLP,以将其与不同 的“线程级并行性”(缩写TLP)区分开),发送设备都利用该帐户推断出信用,从而确保未 超过接收设备的缓冲能力。在接收设备已经处理过数据时,它向发送设备发回信号,用信号 通知其再次具有空闲缓冲器了。通过这种方式,可以可靠地发送相当多的PCIe-TLP,而不会 因为针对各个PCIe-TLP的大量返回握手信号而使带宽拥堵。数据链路层处理事务层分组。为了检测任何PCIe-TLP发送或接收错误,数据链路 层为PCIe-TLP捆绑32比特的CRC校验和。如果因为一些原因给定的PCIe-TLP未通过校 验和校验,则利用独立式数据链路层分组(DLLP)将这种失败作为NAK发回发端设备。发端 设备然后可以重新发送PCIe-TLP。将在本论述的后面给出如何将PCIe总线与高级处理器集成的更多细节。除了 PCIe总线之外,接口可以包含很多其他类型的设备。作为接口的一部分,还 包括两个简化的GMII (RGMII)(例如图2A的框230a和230b)端口。此外,安全加速引擎 (SAE)(例如图2A的框238)可以将基于硬件的加速应用于诸如加密、解密、鉴别和密钥生成 等安全功能。这样的特征能够帮助软件提供高性能安全应用,例如IPSec和SSL。CPU的架构原则是优化线程级并行性(TLP)而不是指令级并行性(ILP),包括受益 于TLP架构的组网工作负荷,并保持工作负荷小。该架构允许在单个芯片上实现多个CPU实例化,这又支持可扩缩性。通常,超标量 设计在受存储器限制的问题上具有最小的性能收益。主动分支预测对于这种处理器应用而 言通常是多余的,甚至可能是浪费的。示例性实施例采用窄流水线,这是因为它们通常具有更好的频率可扩缩性。因此, 存储器延迟不像在其他种类处理器中那样成为一个大问题,事实上,如下所述,可以通过多 线程方式有效地隐藏任何存储器延迟。本发明的实施例可以利用无阻塞式加载、在CPU接口处进行存储器重新排序以及用于信号量和存储器屏障的专用指令来优化存储器子系统。在本发明的一个方面中,处理器可以获取和发出被增加到加载/存储的语义。在 本发明实施例的另一方面中,处理器能够为定时器支持采用特殊的原子递增。如上所述,多线程CPU相对于常规技术提供了多个优点。本发明的示例性实施例 采用了细粒度多线程操作,其能够每个时钟切换线程并且具有4个线程可用于发射。多线程方面提供了如下优点利用了由长延迟操作导致的空闲周期;针对面积与 性能矛盾进行了优化;对于受存储器限制的应用而言是理想的;实现了存储器带宽的最佳 利用;存储器子系统;利用M0SI (修改、自有、共享、无效)协议的高速缓冲存储器一致性; 全图高速缓冲存储器目录,包括相对于广播监听方式减少了监听带宽并增加了可扩缩性; 大的芯片上共享双存储体2MB L2高速缓冲存储器;错误检查和纠正(ECC)保护的高速缓冲 存储器和存储器;2个64比特的400/800 DDR2通道(例如12. 8GByte/s峰值带宽)安全 流水线;支持芯片上标准安全功能(例如AES、DES/3DES、SHA-1、MD5和RSA);允许功能级 联(例如加密_ >签名)以减少存储器存取;每个安全流水线4Gb带宽,RSA除外;芯片上 的交换互连;用于芯片内通信的消息传递机制;超级块之间的点到点连接,以相对于共享 总线方式提供更大的可扩缩性;用于数据消息收发的16字节全双工链路(例如,在1GHz下 每个链路32GB/S的带宽);以及基于信用的流控制机制。用于多个处理器内核的多线程技术的一些优点包括存储器时延容许和故障容许。图2B示出了根据本发明备选实施例的示例性高级处理器。提供本实施例是为了 展示可以修改该架构以容纳其他部件,例如视频处理器215。在这种情况下,视频处理器可 以与处理器内核、通信网络(例如DSI和消息收发网络)以及其他部件通信。B.处理器内核和多线程图2A的示例性高级处理器200包括多个多线程处理器内核210a_h。每个示例性内 核包括相关联的数据高速缓冲存储器212a_h以及指令高速缓冲存储器214a_h。数据交换 互连(DSI)216可以耦合到处理器内核210a-h中的每一个,并且数据交换互连(DSI)216用 于在处理器内核之间以及在L2高速缓冲存储器208和用于主存储器存取的存储器桥206、 208之间传递数据。此外,消息收发网络222可以耦合到处理器内核210a-h和多个通信端 口 240a-f中的每一个。尽管图2A中示出了八个内核,但在本发明中可以使用更少或更多 数量的内核。类似地,在本发明的各方面中,内核可以执行不同的软件程序和例程,甚至运 行不同的操作系统。在希望在较老的操作系统下在一个或多个内核上运行旧式软件、以及 希望在一不同操作系统(多个操作系统)下在一个或多个其他内核上运行更新的软件的情 况下,在单个统一平台之内的不同内核上运行不同软件程序和操作系统的能力可能尤其有 用。类似地,由于示例性处理器允许在统一平台之内组合多个独立功能,因此在内核上运行 多个不同软件和操作系统的能力意味着可以继续使用与被组合的独立功能相关联的异类 软件(disparate software)。示例性处理器包括能够进行多线程操作的多个CPU内核210a_h。在示例性实施例 中,有八个4路多线程兼容MIPS64的CPU,常常将其称为处理器内核。本发明的实施例可以 包括32个硬件上下文(hardware context),CPU内核可以工作在大约1. 5GHz。本发明的 一个方面是多个CPU内核的冗余性和容错性质。因此,例如,如果内核之一发生故障,则其 他内核会继续工作,并且系统的总体性能仅会稍微下降。在一个实施例中,可以将第九处理器内核增加到架构上,从而用高可靠性确保有八个内核是起作用的。多线程内核方案可以允许软件更有效地使用在很多分组处理应用中固有的并行 性。大多数常规处理器使用单发射、单线程架构,但这在典型的组网应用中具有性能限制。 在本发明的各方面中,多个线程 可以执行不同的软件程序和例程,甚至运行不同的操作系 统。类似于上文针对内核所述,在希望在老的操作系统下在一个或多个线程上运行旧式软 件、以及希望在一不同操作系统(多个操作系统)下在一个或多个其他线程上运行更新的 软件的情况下,这种在单个统一平台之内的不同线程上运行不同软件程序和操作系统的能 力可能尤其有用。类似地,由于示例性处理器允许在统一平台之内组合多个独立功能,因此 在线程上运行多个不同软件和操作系统的能力意味着可以继续使用与被组合的独立功能 相关联的异类软件。下文论述的是本发明对单线程和多线程应用的性能进行改善所采用的 一些技术。现在参考图3A,示出了常规的单线程单发射处理,并且该常规的单线程单发射处 理由总附图标记300A表示。在方框的顶部示出了周期序号。方框之内的“A”可以代表第 一分组,方框之内的“B”可以代表下一个分组。方框之内的下标数字可以代表分组指令和/ 或段。如图所示,高速缓冲存储器未命中(cache miss)之后的浪费周期5_10是由于未为 执行准备好其他指令造成的。系统必须实质性停止以适应固有的存储器延时,并且这是不 希望出现的。对于很多处理器而言,通过每个周期执行更多指令来改善性能,从而提供指令级 并行性(ILP)。在这种方式中,向架构增加更多功能单元,以便每个周期执行多个指令。这 种方式也被称为单线程多发射处理器设计。尽管与单发射设计相比提供了一些改进,但由 于分组处理应用通常具有高延迟性质,因此性能一般仍然受到影响。具体而言,长延时存储 器参考通常导致类似的低效率和更大的总能力损失。作为备选方式,可以使用多线程单发射架构。这种方式利用并更充分利用了通常 会在组网应用中发现的分组级并行性。简而言之,适当设计的多线程处理器可以有效隐藏 存储器延时。因此,在这种线程化设计中,当一个线程变得不活动而等待存储器数据返回 时,其他线程仍然能够处理指令。这可以通过使其他简单的多发射处理器经受的浪费周期 最小化来使处理器利用率最大化。现在参考图3B,示出了常规的简单多线程调度,并且该常规的简单多线程调度由 总附图标记300B表示。指令调度器(IS)302B能够接收四个线程A,B,C和D,如IS 302B 左侧的框中所示。每个周期可以简单地以“轮询”方式从每个线程中选择不同的分组指令, 如图所示。只要每个线程具有可用于发射的指令,这种方式通常就能够工作得很好。然而, 这种“规则的”指令发射模式通常不能在实际组网应用中持续。诸如指令高速缓冲存储器 未命中、数据高速缓冲存储器未命中、数据使用互锁和硬件资源不可用之类的常见因素可 能会使流水线停顿。现在参考图3C,示出了常规的具有停顿线程的简单多线程调度,其由总附图标记 300C表示。指令调度器(IS) 302C能够接收四个线程A,B和C,以及空的“D”线程。如图 所示,常规的轮询调度导致浪费周期4、8和12,如果D线程可用的话,来自D线程的指令会 落在这些位置。在本示例中,在图示的时间段内,流水线效率损失为25%。这种方案的改进 是“渴望”轮询调度方案,其被设计成用于克服这种效率损失。
现在参考图3D,示出了根据本发明实施例的渴望轮询调度,并且该渴望轮询调度 由总附图标记300D表示。图示的线程和可用指令与图3C中所示的线程和可用指令相同。 然而,在图3D中,线程可以由渴望轮询调度器(ERRS)302D来接收。只要有指令需要处理, 则渴望轮询方案就顺次发出来自每个线程的指令,从而能够保持流水线是充满的。当一个 线程正在“休眠”而未发出指令时,调度器能够例如以每三个时钟周期一个的速率发出来自 其余三个线程的指令。类似地,如果两个线程不活动,则调度器能够以每其他时钟周期一个 的速率发出来自两个活动线程的指令。这种方式的重大优点是能够以全速运行一般应用, 例如不能充分利用4路多线程的那些应用。其他适当的方式包括多线程固定周期调度。现在参考图3E,示出了示例性多线程固定周期调度,并且该示例性多线程固定周 期调度由总附图标记300E表示。指令调度器(IS) 302E能够从四个活动线程接收指令,该 四个活动线程是A,B,C和D,如图所示。在这种可编程固定周期调度中,在切换到另一线程 之前,可以为给定线程提供固定数量的周期。在图示的示例中,在从线程B发出任何指令之 前,线程A发出256条指令,这可以是系统中允许的最大数量。一旦线程B开始,它可以在 将流水线交接到线程C之前发出200条指令,等等。现在参考图3F,示出了采用渴望轮询调度的示例性多线程固定周期,并且该示例 性多线程固定周期由总附图标记300F表示。指令调度器(IS)302F能够从四个活动线程接收指令,该四个活动线程是A,B,C和 D,如图所示。可以使用这种方式以便在遇到停顿状况时使流水线效率最大化。例如,如果 线程A在发出256条指令之前遇到停顿(例如高速缓冲存储器未命中),则可以通过轮询 方式使用其他线程来“填充”可能会浪费的周期。在图3F中所示的示例中,在周期7之后, 在访问线程A的指令时发生了停顿状况,在这一点调度器可以在周期8切换到线程B。类 似地,在周期13之后,在访问线程B的指令时发生了另一个停顿状况,因此调度器然后可以 在周期14切换到线程C。在本示例中,在访问线程C的指令期间没有发生停顿,因此线程C 的调度可以继续,一直持续到为该线程编程的限制(例如200),从而可以在周期214将最后 的C线程指令放在流水线中。现在参考图3G,示出了根据本发明实施例的具有关联接口单元的内核,并且 该具有关联接口单元的内核由总附图标记300G表示。内核302G可以包括取指令单 元(IFU)304G、指令高速缓冲存储器单元(I⑶)306G、解耦缓冲器308G、存储器管理单元 (MMU)310G、指令执行单元(IEU)312G和加载/存储单元(LSU)314。IFU 304G能够与ICU 306G接口,IEU 312G能够与LSU 314接口。ICU 306G也能够与交换块(SWB)/ 二级(L2) 高速缓冲存储器块316G接口。LSU 314G可以是一级(L1)数据高速缓冲存储器,也可以与 SWB/L2316G接口。IEU 312G可以与消息(MSG)块318G接口,并且消息(MSG)块318G也可 以与SWB 320G接口。此外,根据实施例使用的寄存器322G可以包括线程ID(TID)、程序计 数器(PC)和数据字段。根据本发明的实施例,每个MIPS架构内核具有单个物理流水线,但是每个MIPS架 构内核可以被配置为支持多线程功能(即四个“虚拟”内核)。在组网应用中,与常规计算 型指令方案不同,线程更可能在存储器存取或其他长延时操作时等待。这样,可以使用本文 论述的调度方法来改善系统的总效率。现在参考图3H,示出了示例性10级(即周期)处理器流水线,并且该处理器流水线由总附图标记300H表示。在一般操作中,每条指令可以沿流水线进行并花费10个周期 或10级来执行。然而,在任何给定时间点,可以有多达10个占据每一级的不同指令。因此, 该示例性流水线的吞吐量可以是每个周期完成1条指令。将图3G和图3H—起来看,周期1_4例如可以代表IFU 304G的操作。在图3H中, 级或周期1(IPG级)可以包括调度来自不同线程的指令(线程调度302H)。这种线程调度例 如可以包括轮询、加权轮询(WRR)或渴望轮询。此外,可以在IPG级中产生指令指针(IP)。 从ICU 306G取出指令可以发生在级2(FET)和3 (FE2)中,并且从ICU 306G取出指令可以 在级2中的指令取出开始304H中发起。在级3中,可以开始分支预测306H和/或返回地 址堆栈(RAS)(跳转寄存器)310H,并且分支预测306H和/或返回地址堆栈(RAS)(跳转寄 存器)310H可以在级4(DEC)中完成。在级4中,还可以返回取出的指令(指令返回308H)。 接下来,可以将指令以及其他相关信息传递到级5并还可以将指令以及其他相关信息置于 解耦缓冲器308G中。图3H的示例性流水线操作的级5-10可以表示IEU 312G的操作。在级5(REG) 中,可以对指令解码,并可以完成任何所需要的寄存器查找(寄存器查找314H)。同样在级 5中,冒险检测逻辑(LD-使用冒险316H)可以判断是否需要停顿。如果需要停顿,则冒险 检测逻辑可以向解耦缓冲器308G发送信号,以重放指令(例如解耦/重放312H)。然而, 如果未发出信号通知这种重放,则可以改为从解耦缓冲器308G取出指令。此外,在一些情 况下,例如在冒险/相关性是由未决的长延时操作(例如数据高速缓冲存储器未命中)造 成的情况下,可以不重放线程而是将其置于休眠。在级6(EXE)中,可以“执行”指令,其例 如包括ALU/移位和/或其他操作(例如ALU/移位/OP 318H)。在级7 (MEM)中,可以开始 数据存储操作,并可以解析分支的结果(分支解析320H)。此外,数据存储器查找可以延续 到扩展级7、8(RTN)和9(RT2),并可以由级9(RT2)返回加载数据(加载返回322H)。在级 10(WRB),可以提交或收回指令,并可以针对特定指令最终更新所有关联的寄存器。通常,如此设计架构,使得在流水线中没有停顿。采取这种方式既为了实现的简易 性也为了增大工作频率。然而,有一些情况需要流水线停顿或停止。在这样的情况下,解耦 缓冲器308G(可以将其视为IFU 304G的功能部分)可以允许从停止点重新开始或“重放”, 从而代替必须清洗整个流水线并重新开始线程以实现停顿。例如,可以由IFU 304G向解耦 缓冲器308G提供信号来指示需要停顿。在一个实施例中,解耦缓冲器308G可以充当指令 的队列,由此IFU 304G获得的每个指令也进入解耦缓冲器308G。在这种队列中,可以基于 如上所述的特定线程调度来乱序调度指令。如果向解耦缓冲器308G发送信号以请求停顿, 则可以对“停止”点之后的那些指令重新线程化。另一方面,如果未请求停顿,则可以简单 地从解耦缓冲器取出指令并继续流水线。因此,在没有停顿的情况下,解耦缓冲器308G可 以基本像先入先出(FIFO)缓冲器一样。然而,如果几个线程之一请求停顿,则其余线程可 以通过缓冲器继续进行,并且不对它们进行阻挡。作为本发明实施例的另一方面,可以将翻译旁视缓冲器(TLB)作为诸如图3G的 MMU 310G之类的存储器管理单元(MMU)的一部分来管理。这可以包括在多个线程之间进 行独立的以及公共的TLB分配。128条目的TLB可以包括64条目的共用主TLB和两个32 条目的微TLB,两个32条目的微TLB各用于指令和数据侧。在不能通过访问相关的微TLB 来满足翻译时,可以向主TLB发送请求。如果主TLB也不包含期望的条目,则发生中断或陷
16阱。为了保持符合MIPS架构,主TLB可以支持成对条目(例如映射到不同物理页的一 对连续虚拟页)、可变页面大小(例如4K到256M)和经由TLB读取/写入指令的软件管理。 为了支持多个线程,可以利用安装了微TLB和主TLB中的条目的线程的线程ID(TID)对微 TLB和主TLB中的条目进行标记。此外,主TLB可以在至少两种模式下操作。在“分区”模 式(partitioned mode)下,可以为每个活动线程分配主TLB的唯一子集或部分,以安装条 目,并且在翻译期间,每个线程仅看到属于自己的条目。在“全局”模式下,任何线程可以分 配主TLB任何部分中的条目,并且所有条目对所有线程都是可见的。在主TLB写入期间可 以使用“去映射”机制以确保不会由不同的线程引入交迭的翻译。作为一个示例,可以使用最近不用(NRU)算法来分配每个微TLB中的条目。不论 是什么模式,线程都可以分配微TLB的任何部分中的条目。然而,微TLB中的翻译可能受模 式影响。在全局模式下,所有的微TLB条目对所有线程都是可见的,但在分区模式下,每个 线程仅可以看到其自己的条目。此外,由于主TLB能够支持每个周期最多一次翻译,因此可 以使用仲裁机制来确保为来自所有线程的微TLB “未命中”请求提供公平服务。在标准的MIPS架构中,地址空间的未映射区域遵循以下协定物理地址等于虚拟 地址。然而,根据本发明的实施例,消除了这种限制,并且未映射区域可以通过微TLB/主 TLB等级体系而进行虚拟到物理映射,同时工作在“虚拟MIPS”模式下。这种方式允许用户 将不同线程的未映射区域彼此隔离。然而,作为这种方法的副产品,违反了正常的MIPS协 定,即可以将在它们的虚拟页号(VPN2)字段中包含未映射地址的主TLB条目视为无效。在 本发明的一个实施例中,可以将这种能力交还给用户,由此主TLB中的每个条目可以包括 特殊的“主有效”位,该“主有效”位仅在虚拟MIPS模式下对用户是可见的。例如,可以由 主有效位值“0”表示无效条目,并且可以由主有效位值“ 1,,表示有效条目。作为本发明的另一方面,系统可以支持有序流水线中的乱序加载/存储调度。作 为示例性实施方式,可以存在用户可编程的宽松存储器排序模型,以便使总体性能最大化。 在一个实施例中,可以通过用户编程将排序从强有序模型变为弱有序模型。系统可以支持 四种类型(i)加载-加载重排序;(ii)加载-存储重排序;(iii)存储-存储重排序和(iv) 存储-加载重排序。可以借助于寄存器中的位矢量来独立地使每种排序放松。如果将每种 类型设置成宽松状态,则可以实现弱排序模型。现在参考图31,示出了根据本发明实施例的处理器内的内核中断流水操作,并且 该内核中断流水操作由总附图标记3001表示。如将要在下文参考图3J更详细论述的,可 编程中断控制器(PIC)向累加器3021提供中断,该中断包括中断计数器和MSG块。因此, 操作3001可以发生在整个系统的任何处理器或内核之内。功能块调度线程3041可以从块 3021接收控制接口。可以通过阴影映射实现到MIPS架构的扩展,阴影映射可以包括原因 3061到EIRR 3081以及状态3101到EIMR 3121。MIPS架构通常针对指定状态和原因寄存 器中的每一个仅提供2个位用于软件中断和6个位用于硬件中断。根据本发明的实施例, 可以保持这种MIPS指令架构的兼容性,同时提供扩展。如图31中更详细所示,针对中断未决(interrupt pending)的原因3061到EIRR 3081的阴影映射可以包括将原因3061寄存器的位8-15映射到EIRR308I的位0_7。而且, 软件中断可以保持在内核之中,而不是通过PIC,且可以通过向原因3061的位8和/或9写入来执行软件中断。原因3061的剩余6个位可以用于硬件中断。类似地,针对屏蔽 (mask) 的状态3101到EIMR312I的阴影映射可以包括将状态3101寄存器的位8_15映射到EIMR 3121的位0-7。此外,可以通过向状态3101的位8和/或9写入来进行软件中断,而剩余6 个位可以用于硬件中断。通过这种方式,根据本发明实施例的寄存器扩展在处理中断方面 提供了更加多的灵活性。在一个实施例中,还可以经由EIRR 3081的未阴影化位8-63和/ 或EIMR 3121的位8-63来传达中断。现在参考图3J,示出了根据本发明实施例的PIC操作,并且该PIC操作由总附图标 记300J表示。例如,可以在图2A的框226的实施中包括流程300J。在图3J中,同步302J 可以接收中断指示并向未决304J控制块提供控制输入。未决304J可以有效充当中断通 路,并且未决304J也可以接收系统定时器和看门狗定时器指示。调度中断306J可以从未 决304J接收输入。中断重定向表(IRT)308J可以从调度中断306J接收输入。IRT 308J的每个中断和/或条目可以包括中断的关联属性(例如属性314J),如 图所示。属性314J例如可以包括CPU屏蔽316-1J、中断矢量316-2J、以及字段316-3J和 316-4J。中断矢量316-2J可以是指定中断优先级的6位字段。在一个实施例中,如上文参 考图31所述,中断矢量316-2J中的较低数可以经由映射到EPR 3081来表示关联中断的 较高优先级。在图3J中,CPU&线程调度310J可以从块308J接收输入,例如来自属性314J 的信息。具体而言,CPU屏蔽316-1J可以用于指示要将中断递交到哪个CPU或内核。递交 312J块可以从块310J接收输入。除了 PIC之外,32个线程中的每一个例如可以包含64位的中断矢量。PIC可以从 主体接收中断或请求,然后将它们递交给适当的线程。作为一个示例性实施方式,这种控制 可以是软件可编程的。因此,软件控制可以选择通过对适当PIC控制寄存器编程来将所有 外部类型的中断重定向到一个或多个线程。类似地,Pic可以从PCI-X接口(例如图2A的 PCI-X 234)接收中断事件或指示,接着可以将其重定向到处理器内核的特定线程。此外,中 断重定向表(例如图3J的IRT 308J)可以描述由PIC接收的事件的标识(例如中断指示) 以及与它相对于一个或多个“主体”的方向有关的信息。可以利用内核屏蔽将事件重定向 到特定内核,可以由软件设置内核屏蔽以指定可用于向指定接收方递交事件的矢量号。这 种方式的优点是它允许软件识别中断的源而无需询问。在将多个接收方编程为用于给定事件或中断的情况下,可以将PIC调度器编程为 使用全局“轮询”方案或基于每个中断的局部轮询方案来递交事件。例如,如果将线程5、14 和27编程为用于接收外部中断,则PIC调度器可以向线程5递交第一个外部中断,向线程 14递交下一个外部中断,向线程27递交下一个外部中断,然后返回到线程5递交下一个中 断,等等。此外,PIC还可以允许任何线程中断任何其他线程(S卩,线程间中断)。这可以通 过向PIC地址空间进行存储(即写入操作)来得到支持。能够用于这种写入操作的值可以 指定中断矢量和PIC用于线程间中断的目标线程。软件控制然后可以使用标准协定来标识 线程间中断。作为一个示例,可以为此目的保留矢量范围。如上文参考图3G和图3H所述,每个内核可以包括流水线解耦缓冲器(例如图3G 的解耦308G)。在本发明实施例的一个方面中,可以使得具有多线程的有序流水线中的资源 使用率最大化。因此,解耦缓冲器是“线程感知的”,这是因为可以允许未请求停顿的线程继续而无需停止。通过这种方式,流水线解耦缓冲器可以对先前调度的线程重新排序。如上 所述,线程调度可以仅在流水线开始时发生。当然,对给定线程内的指令的重新排序通常不 是由解耦缓冲器执行的,而是独立的线程可以不承受任何代价,原因在于可以允许它们在 挂起停顿的线程的同时有效绕过解耦缓冲器。在本发明的一个实施例中,可以在内核实施方式中使用3周期高速缓冲存储器。 与专门设计的高速缓冲存储器相反,这种3周期高速缓冲存储器是“现成的”单元库高速缓 冲存储器(cell library cache),以便降低系统成本。结果,在加载与使用一条数据和/或 指令之间可能有三个周期的间隙。解耦缓冲器可以在这3周期延迟期间中有效工作并利用 这3个周期的延迟。例如,如果仅有单个线程,则会导致3周期的延时。然而,在提供四个 线程的情况下,可以由其他线程占据中间时隙。此外,还可以支持分支预测。对于正确预测 但未采用的分支,没有代价。对于正确预测且采用的分支,有一个周期的“泡沫”或代价。对 于未命中的预测,有5个周期的泡沫,但在有四个线程工作时可以大大减少这种代价,这是 因为泡沫可以简单地被其他线程占据。例如,不是有5个周期的泡沫,四个线程中的每一个 线程可以占据一个,从而仅有单个泡沫代价实际保留下来。如上文参考图3D、图3E和图3F所述,根据本发明实施例的指令调度方案可以包括 渴望轮询调度(ERRS)、每线程固定周期数、以及采用ERRS的多线程固定周期。此外,在有冲 突时,激活线程的特定机制可以包括使用记分板机制,记分板机制可以跟踪长延迟操作,例 如存储器存取、乘法和/或除法操作。现在参考图3K,示出了用于多线程分配的返回地址堆栈(RAS)操作,并且该返回 地址堆栈(RAS)操作由总附图标记300K表示。该操作可以在图3G的IFU 304G中实施, 并且该操作还可以如例如图3H的操作310H表示。在本发明的实施例中支持的指令中有 (i)分支指令,其中预测是否采用且目标是已知的;(ii)跳转指令,其中始终采用且目标是 已知的;以及(iii)跳转寄存器,其中始终采用且从寄存器和/或具有未知内容的堆栈中检 索目标。在图3K的示例性操作中,能够遇到跳转并链接(JAL)指令(302K)以启动操作。响 应于JAL,可以将程序计数器(PC)放置在返回地址堆栈(RAS)上(304K)。示例性RAS被显 示为堆栈312K,并且在一个实施例中,堆栈312K是先进后出(FIL0)型堆栈以适应嵌套子 例程调用。可以基本上与将PC放置在堆栈312K上并行地进行子例程调用(306K)。然后 可以发生与子例程指令相关联的各种操作(308K)。一旦完成子例程流程,可以从堆栈312K 检索返回地址(310K),并且主程序可以在任何分支延迟(314K)之后继续进行(316K)。对于多线程操作,可以划分堆栈312K,使得在若干线程上动态配置条目。划分可以 变化,以适应活动线程的数量。因此,如果仅有一个线程在使用中,则可以将为堆栈312K分 配的整组条目用于该线程。然而,如果多个线程是活动的,则可以动态配置堆栈312K的条 目以适应线程,以便高效地利用堆栈312K的可用空间。在常规多处理器环境中,通常按照轮询原则将中断给予不同的CPU来处理或通过 指定特定CPU来处理中断。然而,根据本发明的实施例,图2A的PIC 226(图3J更详细地 示出了其操作)具有在多线程机器中的多个CPU/内核和线程之间保持负载平衡和重定向 中断的能力。如上文参考图3J所述,IRT 308J可以包括每个中断的属性,如属性314J中 所示。可以使用CPU屏蔽316-1J来促进负载平衡,这是通过允许将特定CPU和/或线程屏
19蔽在中断处理之外而实现的。在一个实施例中,CPU屏蔽可以是32位宽,以允许屏蔽8个 内核(均具有4个线程)的任意组合。例如,图2A的内核-2 210c和内核-7 210h是高利 用率处理器,从而图3J的CPU屏蔽316-1J可以针对IRT 308J中的每个中断将它的相应位 设置为“1”,从而不允许内核_2或内核-7上的任何中断处理。此外,对于CPU/内核以及线程而言,可以在那些对于特定中断而言未被屏蔽的内 核和/或线程之间采用轮询方案(例如,借助于指针)。通过这种方式,为中断负载平衡实 现了最大的可编程灵活性。因此,图3J的操作300J允许两级中断调度(i)如上所述的 306J的调度;以及(ii)包括CPU/内核和线程屏蔽的负载平衡方法。作为本发明实施例的另一方面,允许线程到线程的中断,由此一个线程可以中断 另一个线程。可以将这种线程到线程中断用于对不同线程进行同步,如电信应用中普遍使 用的那样。而且,根据本发明的实施例,这种线程到线程中断可以不经过任何 调度。C.数据交换和L2高速缓冲存储器现在回到图2A,示例性处理器还可以包括若干增进高性能的部件,包括8路 组关联的芯片上2级(L2)高速缓冲存储器(2MB);高速缓冲存储器一致性超传输接口 (768Gbps);硬件加速的服务质量(Q0S)和分类;安全硬件加速一AES,DES/3DES,SHA-1,MDS 和RSA;分组排序支持;串处理支持;TOE硬件(TCP卸载引擎);以及许多10信号。在本发 明实施例的一个方面中,数据交换互连216可以通过其相应的数据高速缓冲存储器212a-h 耦合到处理器内核210a-h中的每一个。而且,消息收发网络222可以通过其相应的指令高 速缓冲存储器214a_h耦合到处理器内核210a_h中的每一个。此外,在本发明实施例的一 个方面中,高级电信处理器还可以包括耦合到数据交换互连的L2高速缓冲存储器208,并 且该L2高速缓冲存储器208用于存储处理器内核210a-h可访问的信息。在示例性实施例 中,L2高速缓冲存储器包括与处理器内核数量相同数量的区段(有时称为存储体)。该示 例是参考图4A描述的,但该示例也可以使用更多或更少的L2高速缓冲存储器区段。如前所述,本发明的实施例包括利用M0SI(修改、自有、共享、无效)协议来保持高 速缓冲存储器一致性。增加“自有”状态通过允许在处理内核之间共享脏高速缓冲存储器 线而增强了 “MSI”协议。具体而言,本发明的示例性实施例可以向运行于8个处理器内核 以及I/O设备的多达32个硬件上下文上的软件提供存储器的完全一致图。可以在整个L1 和L2高速缓冲存储器(例如,分别是图2A中的212a-h和208)分层体系中使用M0SI协议。 此外,所有外部访问(external reference)(例如由I/O设备发起的那些引用)可以监听 L1和L2高速缓冲存储器,以确保数据的一致性和连贯性。在一个实施例中,如下文将要更 详细论述的,可以使用基于环的方法来在多处理系统中实现高速缓冲存储器一致性。通常, 仅有一个“节点”可以是一条数据的所有者,以便保持一致性。根据本发明实施例的一个方面,L2高速缓冲存储器(例如图2A的高速缓冲存储器 208)可以是2MB、具有32B线大小的8路组关联统一(即指令和数据)高速缓冲存储器。此 外,L2高速缓冲存储器每个周期可以接受多达8个同时的访问。L2阵列以内核时钟大约一 半的速率运行,但可以对该阵列进行流水线处理以允许每个内核时钟所有存储体都接受请 求,整个阵列大约有2个内核时钟的延时。而且,L2高速缓冲存储器设计可以“不考虑” L1 高速缓冲存储器,从而可以有效增大总的存储器容量。对L2高速缓冲存储器实现方式的ECC保护,高速缓冲存储器数据和高速缓冲存储器标记阵列都可以由SECDED(单纠错双检错)防差错码进行保护。因此,校正了所有单比 特错误而无需软件介入。而且,在检测到不可校正的错误时,无论何时修改了高速缓冲存储 器线,就可以将所述不可校正的错误作为码错误异常传递到软件。在一个实施例中,如下文 将要更详细论述的,每个L2高速缓冲存储器可以像部件环上的任何其他“主体”那样工作。根据本发明实施例的另一方面,可以将数据移动环上的“桥”用于存储器和I/O业 务的最佳重定向。图2A的超级存储器I/O桥206和存储器桥218可以是独立的物理结构, 但它们可以在概念上是相同的。桥可以是例如主存储器和I/O访问的主要守护者。此外, 在一个实施例中,I/O可以是存储器映射的。现在参考图4A,示出了根据本发明实施例的数据交换互连(DSI)环装置,并且该 数据交换互连(DSI)环装置由总附图标记400A表示。这种环装置可以是图2A的DSI 216 连同超级存储器I/O桥206和存储器桥218的实施方式。在图4A中,桥206可以允许存储 器&I/0与环的其余部分之间的接口。环元件402a-j每个都与图2A的内核210a_h和存储 器桥中的一个相对应。相应地,元件402a接口到L2高速缓冲存储器L2a和内核-0210a,元 件402b接口到L2b和内核210b,等等,直到元件402h接口到L2h和内核210h。桥206包 括环上的元件402i,桥218包括环上的元件402 j。如图4A所示,四个环可以构成示例性实施例中的环状结构请求环(RQ)、数据环 (DT)、监听环(SNP)和响应环(RSP)。环上的通信是基于分组的通信。示例性的RQ环分组 例如包括目的地ID、事务ID、地址、请求类型(例如RD,RD13EX,WR,UPG)、有效位、可高速缓冲 存储器化指示(cacheable indication)和字节使能。示例性的DT环分组例如包括目的地 ID、事务ID、数据、状态(例如错误指示)和有效位。示例性的SNP环分组例如包括目的地 ID、有效位、CPU监听响应(例如清洁、共享或脏指示)、L2监听响应、桥监听响应、重试(针 对CPU、桥和L2中的每一个)、AERR(例如非法请求、请求奇偶性)和事务ID。示例性的RSP 环分组包括SNP的所有字段,但与RSP环的“进行中”状态相比,RSP环分组表示“最终”状 态。现在参考图4B,示出了根据本发明实施例的DSI环部件,并且该DSI环部件由总 附图标记400B表示。在一个实施例中,环部件402b-0对应于四个环RQ、DT、SNP或RSP之 一。类似地,环部件402b-l、402b-2和402b-3均对应于四个环之一。例如,可以通过将环 部件402b-0、402b-l、402b-2和402b_3加在一起形成“节点”。可以在触发器404B中接收输入数据或“入环”(Ring In)。触发器404B的输出可 以连接到触发器406B和408B以及多路复用器416B。触发器406B和408B的输出可以用于 局部数据使用。触发器410B可以从相关联的L2高速缓冲存储器接收输入,而触发器412B 可以从相关联的CPU接收输入。触发器410B和412B的输出可以连接到多路复用器414B。 多路复用器414B的输出可以连接到多路复用器416B,多路复用器416B的输出可以连接到 输出数据或“出环”(Ring Out)。而且,环部件402b-0可以接收有效位信号。通常,如果数据是有效的(例如有效位=“1”),则多路复用器416B选择在入环上 接收的较高优先级数据。否则,可以经由多路复用器414B从L2或CPU选择数据。此外,在 该示例中,如果入环上接收的数据是去往本地节点的,则触发器406B和/或408B可以将数 据传递到本地内核上而不是在再次接收数据之前允许数据在环周围一直传递。现在参考图4C,示出了根据本发明实施例的DSI中的示例性数据检索的流程图,并且该流程图由总附图标记400C表示。流程可以起始于“开始” 452处,并可以在请求环 (RQ)上放置请求(454)。环状结构中的每个CPU和L2都可以检查被请求的数据(456)。而 且,可以在每个连接到环的存储器桥中接收请求(458)。如果任何CPU或L2具有被请求的 数据(460),则可以由具有该数据的节点将该数据放到数据环(DT)上(462)。如果没有CPU 或L2发现被请求的数据(460),则可以由存储器桥之一检索该数据(464)。可以由找到数据 的节点或存储器桥在监听环(SNP)和/或响应环(RSP)上放置确认(466),流程可以在“结 束”处完成(468)。在一个实施例中,可以包含由存储器桥向SNP和/或RSP环进行确认。在备选实施例中,存储器桥不必等待未在任何L2高速缓冲存储器中发现数据的 指示来发起存储器请求。相反,可以投机性地(例如向DRAM)发出存储器请求。在这种方 法中,如果在来自DRAM的响应之前找到数据,则可以丢弃稍后的响应。投机性DRAM访问可 以帮助减轻较长存储器延时的影响。D.消息传递网络同样在图2A中,在本发明实施例的一个方面中,高级电信处理器可以包括接口切 换互连(ISI) 224,接口切换互连224耦合到消息收发网络222和一组通信端口 240a_f,并 用于在消息收发网络222和通信端口 240a-f之间传递信息。现在参考图5A,示出了根据本发明实施例的快速消息收发环部件或站,并且该快 速消息收发环部件或站由总附图标记500A表示。关联的环状结构可以提供点到点消息,以 作为例如MIPS架构的扩展。“入环”信号可以连接到插入队列502A和接收队列(RCVQ)506A 两者。插入队列也可以连接到多路复用器504A,多路复用器504A的输出可以是“出环”。插 入队列始终得到优先级,因此该环不会发生堵塞。在虚线框520A和522A中示出了 CPU内 核的关联寄存器。在框520A之内,缓冲器RCV缓冲器510A-0到RCV缓冲器510-N可以与 RCVQ 506A接口。多路复用器504A的第二输入可以连接到发送队列(XMTQ)508A。同样在 框520A内,缓冲器XMT缓冲器512A-0到XMT缓冲器512A-N可以与XMTQ 508A接口。还可 以在框520A中发现状态514A寄存器。在虚线框522A之内,可以发现存储器映射配置寄存 器516A和基于信用的流控制518A。现在参考图5B,示出了图5A的系统所用的消息数据结构,并且该消息数据结构由 总附图标记500B表示。标识字段可以包括线程502B、源504B和目的地508B。还可以有消息 大小指示符“大小”508B。标识字段和消息大小指示符可以形成侧板(sideboard) 514B。要 发送的消息或数据自身(例如MSG 512B)可以包括若干部分,例如510B-0、510B-l、510B-2 和510B-3。根据实施例,消息是最小的单元,因此不能中断完整的消息。基于信用的流控制能够提供例如用于管理消息发送的机制。在一个实施例中,针 对目标/接收机而分配给所有发射机的信用总数不能超过其接收队列(例如图5A的RCVQ 506A)中的条目的数量之和。例如,在一个实施例中,256是信用总数,这是因为每个目标/ 接收机的RCVQ大小是256个条目。通常,软件可以控制信用的分配。例如,在引导时,每个 发送机/发射机或参与的主体可以被分配一些默认数量的信用。然后软件可以自由按每个 发射机分配信用。例如,针对系统中的其他目标/接收机中的每一个,每个发送机/发射机 可以具有由软件设置的可编程数量的信用。然而,并非要求系统中的所有主体都作为目标
/接收机来参与发射信用的分配。在一个实施例中,可以针对内核-1、内核_2........内
核-7、RGMII130> RGMII131、XGMIISPI-4. 2__q、XGMII/SPI-4. 2—” P0D0、P0D1、.......P0D4 等中的每一个对内核-0的信用进行编程。下面的表1示出了针对作为接收机的内核-o的示 例性信用分配。表 1在本示例中,当内核-1向内核-0发送大小为2(例如2个64比特的数据元)的 消息时,可以将内核-0中的内核-1的信用递减2(例如从32递减到30)。在内核-0接收 消息时,消息可以进入内核-0的RCVQ。一旦从内核-0的RCVQ取走消息,实质上释放了那 个消息存储空间或那个消息存储空间变得可用。内核-o然后可以向发送机发送信号(例 如向内核-1发送自由信用信号),指示还有空间量(例如2)可用。如果在没有收到来自内 核-o的相应自由信用信号的情况下内核-1继续向内核-0发送消息,最终内核-1的信用 数量可以变为零,并且内核-1不能向内核-o发送任何更多消息。例如,仅在内核-0利用 自由信用信号做出响应时,内核-1才能够向内核-o发送另外的消息。现在参考图5C,示出了根据本发明实施例的如何可以将各种主体连接到快速消 息收发网络(FMN)的概念图,并且该概念图由总附图标记500C表示。8个内核(内核-0 502C-0到内核-7 502C-7)连同相关联的数据高速缓冲存储器(D-高速缓冲存储器504C-0 到504C-7)和指令高速缓冲存储器(I-高速缓冲存储器506C-0到506C-7)能够与FMN接 口。此外,网络I/O接口组也能够接口到FMN。与端口 A相关联,DMA 508C-A、分析器/分 类器512C-A和XGMII/SPI-4. 2端口 A 514C-A可以通过分组分配引擎(PDE) 510C-A接口到 FMN。类似地,对于端口 B,DMA 508C-B、分析器/分类器512C-B和XGMII/SPI 4. 2端口 B 514C-B可以通过PDE 510C-B接口到FMN。而且,DMA 516C、分析器/分类器520C、RGMII端 口 A 522C-A、RGMII 端口 B 522C-B、RGMII 端口 C 522C-C、RGMII 端口 D 522C-D 能够通过 PDE 518C接口到FMN。而且,包括DMA 526C和DMA引擎528C的安全加速引擎524C可以接 口到FMN。PCIe总线534也可以接口到FMN和/或接口切换互连(ISI)。在图5F到图51
发射主体 内核-0 内核-1 内核-2 内核-3 内核-4 内核-5 内核-6 内核-7 PODO RGMII0 其他全部
允许的信用(总数为256)
0
32 32 32 0
32 32 32 32 32 0
23中更详细示出了这种接口。作为本发明实施例的一方面,FMN上的所有主体(例如内核/线程或组网接口,如 图5C中所示的)可以向FMN上的任何其他主体发送消息。这种结构可以允许在主体之间 进行快速的分组移动,但软件可以通过这样定义消息容器的句法和语义来将消息收发系统 的使用改变为适合于任何其他适当目的。在任何情况下,FMN上的每个主体都包括发送队 列(例如508A)和接收队列(例如506A),如上文参考图5A所述。因此,可以将去往特定主 体的消息放入相关联的接收队列中。所有源自特定主体的消息都可以被输入关联的发送队 列中,并随后推送到FMN上以递交给预定接收方。在本发明实施例的另一方面中,内核(例如图5C的内核-0 502C-0到内核-7 502C-7)的所有线程可以共享队列资源。为了确保发出消息的公平性,可以实施“轮询”方 案来将消息接受到发送队列中。这可以确保所有线程都能够发出消息,即便在它们之一正 在以更快速率发出消息时也是如此。相应地,可能的是在发出消息时给定发送队列是满 的。在这种情况下,可以允许所有线程排队等待一个消息(每个线程都在内核内部),直到 发送队列有空间接受更多消息为止。如图5C所示,组网接口使用PDE来将输入的分组分配 给指定线程。此外,可以通过分组排序软件对去往组网接口的输出分组进行路由。现在参考图5D,示出了常规处理系统中的网络业务,并且该网络业务由总附图 标记500D表示。分组输入可以由分组分配502D接收并被发送到分组处理(504D-0到 504D-3)。分组分类/排序506D能够从分组处理接收输出并能够提供分组输出。尽管这种 分组级并行处理架构固有地适于组网应用,但有效的架构必须为输入分组分配和输出分组 分类/排序提供高效支持,以使并行分组处理的优点最大化。如图5D所示,每个分组必须 经过单次分配(例如502D)和单次分类/排序(例如506D)。这些操作都对分组流具有串 行化影响,从而系统的总体性能由这两种功能的较慢者决定。现在参考图5E,示出了根据本发明实施例的分组流,并且该分组流由总附图标记 500E表示。这种方式提供了扩展(即可升级)的高性能架构,从而使得分组能够流过系统。 组网输入502E可以包括RGMII、XGMII和/或SPI-4. 2和/或PCIe接口配置的端口。在接 收到分组之后,可以利用快速消息收发网络(FMN)经由分组分配引擎(PDE)504E将它们分
配给分组处理506E的线程之一例如线程0、1、2........31。选定的线程可以执行例如由
分组头或净荷设定的一个或多个功能,然后将分组发送到分组排序软件508E。作为备选实 施例,可以使用如图2A的框236中所示的分组排序设备(POD)来代替图5E的508E。在任 一种实施方式中,这种功能建立了分组排序,然后经由FMN将其传递到输出网络(例如组网 输出510E)。类似于组网输入,输出端口可以是例如配置的RGMII、XGMII或SPI-4. 2接口 或PCIe总线中的任一个。E.接口切换在本发明实施例的一个方面中,FMN可以与每个CPU/内核接口,如图2A所示。这 种FMN到内核的接口可以包括压入/弹出指令、等待消息指令和在消息到达时中断。在常 规MIPS架构中,分配了协处理器或“ C0P2 ”空间。然而,根据本发明的实施例,为了经由FMN 进行消息收发用途而保留了为C0P2指定的空间。在一个实施例中,软件可执行指令可以包 括消息发送(MsgSnd)、消息加载(MsgLd)、到C0P2的消息(MTC2)、来自C0P2的消息(MFC2) 和消息等待(Msg Wait)。MsgSnd和MsgLd指令可以包括目标信息以及消息大小指示。MTC2和MFC2指令可以包括来自/指向本地配置寄存器的数据传输,本地配置寄存器例如是图5A 的状态514A和寄存器522A。Msg Wait指令可以包括基本进入“休眠”状态直到有消息为 止的操作(例如在消息到达时中断)。作为本发明的实施例的另一方面,可以将快速消息收发(FMN)环部件组织成 “桶”(bucket)。例如,可以通过类似于上述线程概念的方式在多个桶之间划分图5A的RCVQ 506A和XMTQ 508A中的每一个。在本发明实施例的一个方面中,分组分配引擎(PDE)可以包括XGMII/SPI-4. 2接 口以及四个RGMII接口和PCIe接口中的每一个,以便能够以高效和负载平衡的方式将输入 的分组分配给处理线程。硬件加速的分组分配对于高吞吐量组网应用而言是重要的。在没 有PDE的情况下,分组分配例如可以由软件处理。然而,对于64B的分组而言,在XGMII型接 口上仅有大约20ns可用于执行这种功能。此外,由于单生产者多消费者(single-producer multiple-consumer)的情况,因此必须运用队列指针管理。这种仅有软件的方案只是不能 跟上所需的分组传送速度,而不会影响整个系统的性能。根据本发明的实施例,PDE可以利用快速消息收发网络(FMN)来将分组迅速分配 给由软件指定为处理线程的线程。在一个实施例中,PDE可以实施加权的轮询方案,以便在 预定接收方之间分配分组。在一种实施方式中,实际上不移动分组,而是在组网接口接收它 时将其写入存储器中。PDE能够在消息中插入“分组描述符”并随后将它发送到由软件指定 的接收方之一。这也能够表示并非所有线程都必需参与从任何给定接口接收分组。PCIe 接口现在参考图5F,图5F示出了在快速消息收发网络(FMN)和接口切换互连(ISI) (540)与PCIe接口 (534)之间的接口的放大图,PCIe接口先前在图2A(234)和图5C(534) 中示出过了。快速消息收发网络和/或接口切换互连(540)向PCIe接口发送各种信号,用 于控制接口以及向接口发送数据和从接口接收数据。为了加快开发这样的设备,尽可能依靠以前设计的PCIe部件通常是有利的。可以 从不同供应商获得适合的PCIe数字内核、物理层(PHY)和验证部件。通常,购买的这些部件 是知识产权和集成电路设计组件,并结合定制的DMA设计软件来使用这些设计组件,以设 计能够接口到高级处理器的快速消息总线并进而与PCIe总线硬件接口的集成电路芯片。一个重要的设计考虑是尽可能地精简(简化)PCIe接口和命令。这种精简过程使 接口保持既较简单又较快速,并允许例如本发明的单芯片多内核处理器以较少量的软件和 硬件开销来控制PCIe设备。如将要论述的,本设计将快速消息收发网络(FMN) /接口切换互连与定制的DMA引 擎(541)结合在一起加以利用,该定制的DMA引擎(541)是作为PCIe接口单元(534)的一 部分而被嵌入的。DMA引擎本质上充当着处理器内核和各种PCIe设备所使用的非常不同的 存储器存储协议之间的转换器。将转换过程交给定制的DMA引擎极大地减少了对内核处理 器的计算需求,从而将内核处理器解放出来做其他工作。简而言之,DMA(直接存储器存取)电路允许硬件以独立于处理器内核CPU的方式 访问存储器。DMA用于在设备之间拷贝存储块(memorychunk)。尽管CPU利用适当的DMA 命令发起该过程,但是CPU然后可以做其他事情,而DMA执行存储器拷贝命令。在本实施例中,构造定制的DMA引擎,使其接受作为输入的短的、高度优化的处理器FMN和ISI消息。DMA然后将FMN/ISI消息转换成适当的PCIe-TLP分组(然后由接口中 的其他PCIe电路对其进行处理),然后自动处理内核处理器请求的原始存储器拷贝命令。
这样,DMA将存储器拷贝请求转换成PCIe-TLP分组,并经由PCIe-TLP分组将它发 送到其他PCIe电路,所述其他PCIe电路向PCIe总线上的适当PCIe设备发送适当的命令。 在这些分组已经被PCIe电路发送之后,指定的PCIe设备完成该任务。在指定的PCIe总线 设备已经完成它的分配任务之后,PCIe总线设备然后会向PCIe接口返回适当的PCIe-TLP 分组。PCIe接口 DMA接受这些PCIe-TLP分组,并将它们转换成适当的存储器拷贝命令,并 以其他方式管理处理器内核最初分配的任务,而无需来自处理器内核的进一步关注。结果, 处理器和处理器内核现在能够以最小的处理器内核计算开销与广泛的各种不同的PCIe设 备进行通信。处理器内核经由通过FMN/ISI发送的短(1_2个64比特字)消息与PCIe接口通 信。PCIe接口被设计成接受被分配给四个不同桶的输入消息。每个桶可以具有每桶多达 64个条目的队列,最大的队列深度为256个消息。PCIe接口还被设计成输出4种不同类别的消息。这些输出消息都可以存储在队列 中,在队列中,每一类最多4条消息,最大输出队列深度为16条输出消息。从FMN/ISI向PCIe接口发送的命令如下桶中的消息
桶ι描述 从处理器内核到PCIe接口的大部分通信是简单且简洁的2个64比特字存储器读 取/写命令形式。处理器内核将通常假设这些命令已经被成功完成。结果,PCIe接口仅 以非常简洁的单个64比特字的形式返回简洁的“0K”、“Not OK”状态消息。各种发出消息 类别如下所示发出消息类别 图5G示出了由处理器内核经由FMN/ISI发送到PCIe接口设备上的DMA引擎的两 个简洁的64比特字中的数据字段的概况,并且图5G还示出了从PCIe接口设备上的DMA引 擎经由FMN/ISI发回处理器内核的单个简洁的64比特字的概况。如图所示,大部分字空间 被DMA源地址、DMA目的地地址和存储数据字节计数信息占据。两个字的其余部分包括如 下所示的各种控制信息比特和字段发送到PCIe接口 DMA引擎的FMN/ISI消息的字段如下
71] 在这里,可以将COHERENT、RDX、RETEN、TD、EP、ATTR字段认为是星形拓扑串行总线控制字段,或者更具体地,可以将COHERENT、RDX、RETEN、TD、EP、ATTR字段认为是PCIe总线 控制字段。发出的返回消息实质上是有名的ACK或OK或问题消息。它由单个64比特字构成。
它的字段如下所示 为了简化该论述,将不详细论述这些返回消息的运动,不过在图5F中示出了这种 返回路径中的一些(555)。返回到图5F,在消息框(542)电路中存储来自处理器的输入消息,该电路可以保 持4桶(不同类型)的消息,每种类型64个消息缓冲器。然后,消息通过轮询调度器和消息总线仲裁器而得到处理,然后到达DMA引擎 (541)。存储器加载(写入)指令由DMA引擎的DMA加载邮递式请求器部分(DMA load posted requestor portion) (543)来处理,被转换成适当的PCIe-TCP数据分组,然后被发 送到1/0总线从属电路(545)。然后将其发送到1/0总线仲裁器电路(546),该电路利用 轮询调度器处理各种PCI 1/0总线请求。1/0总线仲裁器然后将分组发送到其他PCIe电 路,例如1/0总线请求器(547)和PCIe链路完成器(548)。这些部件与PCIe控制仲裁器 (549) 一起工作来管理实际的PCIe物理层电路(550),该实际的PCIe物理层电路(550)进 行实际的硬件PCIe分组发送和接收。然后,将PCIe-TCP分组置于PCIe总线(551)上并将 PCIe-TCP分组发送到各种PCIe设备(未示出)。写标记跟踪器跟踪读出和写入内容的状 态。在本实施例中,所有的写命令都不期望得到响应,并且一旦接受到命令,所有写命 令都会完成,然而,所有读和只读命令期望得到返回响应。在本实施例中,为了简化设计,假设可以乱序返回所有1/0总线主读请求完成。在 本实施例中,还假设所有请求都是针对相连字节的,并且对于1/0、配置和寄存器地址空间 而言,命令中请求的最大字节数为4,且字节不会越过双字地址界。图5H示出了消息从处理器内核经由FMN到达PCIe接口设备的硬件流图。消息 一般源于处理器内核(560)(前面在图5C中示出(502C-0到502C-7)),并且该消息被处理 (561),以便发送到FMN快速消息收发网络/接口切换互连ISI (562)上,然后被PCIe接口 的初始级(未示出)接收和处理。最后,在经过处理和适当的轮询调度以及仲裁之后,将写消息发送到DMA引擎的DMA加载请求器部分(563)。DMA加载请求器然后经由I/O互连 (559)读取DRAM或高速缓冲存储器(558),从DRAM或高速缓冲存储器(558)检索适当数据, 然后进行将数据和请求从原始DMA请求格式(图5G所示)转换到适当的(通常为多个)
PCI-TLPO,PCI-TLPl........PCI-TLPn(564)请求所需的适当转换和计算,其中适当的(通
常为多个)PCI-TLP0、PCI-TLP1、.......PCI-TLPn (564)请求是访问相关PCIe设备上的被
请求存储位置所需 要的。然后将这些请求通过其他PCIe电路路由到PCIe物理层(565),然 后在PCIe物理层上,将它们在PCIe总线上发送。如前所述,为了简化系统并使处理时间更短,在本实施例中,写数据的长度加上目 的地地址双字偏移(double word offset)不能超过PCIe-TLP的最大净荷长度。此外,写请 求不能越过4K字节的地址界。进一步将PCIe-TLP划分成32字节的源地址返回PCIe-TLP 数据分组存储器读(存储)请求(再次为图5G中所示的两个64比特字)也通过FMN移 动到PCIe接口,在此将它们传递到DMA引擎中的DMA存储请求器。读请求的最大长度取决 于配置的最大净荷大小。当DMA存储消息的源地址不是双字对准时,第一返回PCIe-TLP分 组的长度为1、2或3(566)。如前所述,在本实施例中,读请求PCIe-TLP分组不能越过4K字 节源地址界。DMA存储请求器返回分组处理器(567)将经由1/0(559)对高速缓冲存储器或 DRAM(558)进行适当写入、协商初始DMA指令、以及PCIe-TLP分组的内容,或者产生额外的 PCIe-TLP分组以将数据转发到适当的PCIe设备上。在完成对DRAM的读或写时,它然后将 通知处理器内核(CPU)。PCIe物理层接收机(566)从各种PCIe设备接收PCIe-TLP分组(567)。DMA存储请 求器引擎判断响应初始DMA命令的适当方式是否向其他PCIe设备发出额外的PCIe-TLP 分组。如果是这样的话,它再次发出适当的PCIe-TMP命令。如果对接收的PCIe-TLP分组 和初始DMA命令的适当响应是向L2高速缓冲存储器写入数据或将它放回FMN/ISI总线上, 则DMA将再次做出适当决定并按照需要将它路由到FMN/ISI。图51示出了消息如何从处理器内核流到PCIe接口的流程图,并且图51还示出了 PCIe写请求和读请求之间的返回消息产生上的不对称性。尽管写请求不产生返回确认消 息,但读消息会产生。在处理器(570)发送PCIe消息(571)之后,该消息被PCIe接口分析 (571)并被发送到DMA引擎(572)。DMA引擎经由互连I/O对DRAM或高速缓冲存储器进行 适当读写(572A),并检索需要的数据,其中所需要的数据是以PCIe-TMP分组的形式被重发 的。如果被请求的操作(573)为写(574),那么默默地完成该操作。如果被请求的操作为读 (575),那么系统产生接收完成确认(576),接收读数据(577),并再次经由互连I/O进行适 当的DRAM或高速缓冲存储器写入(577A),判断哪个处理器或设备请求数据(578),并将数 据放到适当的I/O互连(579),以向请求设备或处理器返回数据。一旦完成这种操作(580), PCIe将会对监测事务进度并指示完成的跟踪标记进行清除(581)。现在参考图6A,示出了根据本发明实施例的在四个线程上均勻分配分组的PDE, 并且该分配过程由总附图标记600A表示。在本示例中,软件可以选择线程4到7来进行可 能的分组接收。然后,PDE能够例如顺次选择这些线程之一来分配每个分组。在图6A中, 可以由分组分配引擎(PDE)602A来接收组网输入,PDE可以选择线程4、5、6或7之一来进 行分组分配。在该特定示例中,线程4可以在时间、接收分组1,在时间t5接收分组5,线程5可以在时间t2接收分组2,在时间t6接收分组6,线程6可以在时间t3接收分组3,在 时间t7接收分组7,线程7可以在时间t4接收分组4,在时间t8接收分组8。现在参考图6B,示出了根据本发明实施例的利用轮询方案来分配分组的PDE,并 且该分配过程由总附图标记600B表示。如上文参考FMN所述,软件可以对所有接收机从每 个发射机获得的允许信用的数量进行编程。由于PDE实质上是发射机,因此它也可以使用 信用信息来以“轮询”方式分配分组。在图6B中,PDE 602B能够接收组网输入并向指定线 程(例如线程0到线程3)提供分组,如图所示。在本示例中,线程2(例如接收机)比其他 线程更慢地处理分组。PDE 602B能够检测到来自该接收机的信用可用性的步调慢,并通过 将分组引导到更高效的处理线 程来加以调节。具体而言,线程2在周期tn在PDE内具有最 小数量的可用信用。尽管周期tn处的分组11的下一个逻辑接收机可能已经是线程2,但 是PDE能够识别该线程中的处理延迟,并因此选择线程3作为分配分组11的最佳目标。在 该特定示例中,线程2可以继续相对于其他线程表现出处理延迟,因此PDE可以避免向该线 程分配。而且,在没有任何接收机有空间接受新分组的情况下,PDE可以将分组队列扩展到 存储器。因为大多数组网应用都不是非常能容忍分组的随机到达次序,因此希望按次序递 交分组。此外,在系统中并入并行处理和分组排序的特征是困难的。一种方式是将排序任 务留给软件,但这样会变得难以保持线路速率。另一个选择是在单个流中向同一处理线程 发送所有分组,使得排序基本是自动的。然而,这种方式要求在分组分配之前进行流鉴别 (即分类),并且这降低了系统性能。另一个缺点是最大流的吞吐量是由单线程的性能决 定的。这妨碍了单个大流在它们经过系统时维持其吞吐量。根据本发明的实施例,可以使用被称为分组排序设备(POD)的高级硬件加速结 构。POD的目的是通过在将分组发送到组网输出接口之前对它们重新排序以提供并行处理 线程的不受限使用。现在参考图6C,示出了根据本发明实施例的在分组生命周期期间的 POD布置,并且该布置由总附图标记600C表示。该图基本示出了在分组通过处理器的生命 周期期间的POD的逻辑布置。在该特定示例中,PDE 602C可以向线程发送分组,如图所示。 线程0可以在时间、接收分组1,在时间、接收分组5,等等,直到周期tN_3。线程1可以在 时间t2接收分组2,在时间t6接收分组6,等等,直到周期tN_2。线程2可以在时间t3接收 分组3,在时间t7接收分组7,等等,直到周期tN_i。最后,线程3可以在时间t4接收分组4, 在时间t8接收分组8,等等,直到周期tN。在从不同线程接收分组并随后将分组发送到组网输出期间,可以将分组排序设备 (POD)604C看作是分组排序器。可以为给定组网接口接收的所有分组分配序号。然后,可以 由PDE将该序号连同其余分组信息转发到工作线程。一旦线程已经完成了分组处理,它可 以将分组描述符连同初始序号转发到POD。POD可以例如按照由接收接口分配的初始序号 严格确定的次序向输出接口释放这些分组。在大部分应用中,POD将按照随机次序接收分组,这是因为分组通常是由线程按随 机次序处理的。POD能够基于接收接口分配的序号建立队列,并继续按照接收的那样对分组 排序。POD可以按照接收接口分配的次序向给定输出接口发出分组。现在参考图6D,示出 了根据本发明实施例的POD输出分配,并且该POD输出分配由总附图标记600D表示。如在 分组排序设备(P0D)602D中所看到的那样,最初可以通过执行线程向POD发送分组2和4。在几个周期之后,线程可以完成分组3的工作并将其放在POD中。分组可能尚未被排序,这 是因为分组1尚未就位。最后,在周期t7完成分组1并将其相应地放在POD中。现在可以 对分组进行排序,并且POD能够按照1、2、3、4的次序发出分组。如果接下来接收分组5,则 在分组4之后的输出中发出分组5。在接收其余分组时,可以将每个分组存储在队列(例 如512-深结构)中,直到接收到下一个更高序号的分组为止。在该时间,可以将分组添加 到输出流(例如组网输出)。最老的分组可能永远到达不了 P0D,从而造成瞬时的线头阻塞情况。如果处理不适当,这种错误状况会导致系统死锁。然而,根据实施例的一方面,POD装备有超时机制,该 超时机制被设计为一旦超时计数器已经到期,该超时机制就丢掉列表头部的未到达分组。 以超时计数器到期之前就填满队列容量(例如512个位置)的速率向POD输入分组也是可 能的。根据实施例的一方面,在POD达到队列容量时,可以丢掉列表头部的分组并可以接受 新的分组。这个动作也可以消除任何线头阻塞情况。而且,软件可以知道由于坏分组、控 制分组或一些其他适当原因,将不会向POD中输入某一序号。在这种情况下,软件控制可以 在POD中插入“空”描述符,以在允许POD自动反应之前消除瞬时的线头阻塞情况。根据本发明的实施例,五个可编程的POD是可用的(例如芯片上),并可以将这五 个可编程的POD看作是一般性“排序”结构。在一个示例性配置中,软件控制(即经由用户) 可以向四个组网接口分配POD中的四个,同时保留一个POD用于一般排序目的。此外,如果 对于仅有软件的控制就足够的应用希望这样做的话,可以简单地绕过POD。F.存储器接口和访问在本发明实施例的一个方面中,高级电信处理器还可以包括存储器桥218,存储器 桥218耦合到数据交换互连和至少一个通信端口(例如框220),并且该存储器桥218被配 置为与数据交换互连和通信端口通信。在本发明的一个方面中,高级电信处理器还可以包括超级存储器桥206,超级存储 器桥206耦合到数据交换互连(DSI)、接口切换互连和至少一个通信端口(例如框202、框 204),并且该超级存储器桥206被配置为与数据交换互连、接口切换互连和通信端口通信。在本发明实施例的另一方面中,如上文参考图4A、图4B和图4C所述,可以在基于 环的数据移动网络上实现存储器排序。G.结论本发明的优点包括能够以高效且成本效益高的方式在计算机系统与存储器之间 提供高带宽通信。具体而言,本发明的本实施例集中于一种新型PCIe接口,这种PCIe接口 通过使处理器能够与各种不同PCIe设备一起工作而增强了高级处理器的能力。已经公开了示例性实施例和最佳模式,可以对公开的实施例进行各种修改和变 形,同时保持在由以下权利要求界定的本发明的主题和精神之内。
权利要求
一种用于多内核处理器的星形拓扑串行总线接口系统,所述处理器内核中的至少一些能够支持多个软件产生的读或写指令,用于与所述星形拓扑串行总线接口系统接口;所述多内核处理器具有能够将各内核处理器链接在一起的内部快速消息收发网络或接口切换互连;其中所述星形拓扑串行总线接口系统连接到所述快速消息收发网络或接口切换互连,并且其中所述星形拓扑串行总线接口系统被配置为从所述内核处理器接收存储器读或写发送请求;并且其中所述星形拓扑串行总线接口系统包括DMA,所述DMA被配置为响应于所述读或写请求中的至少一个而允许将所述内部快速消息收发网络或接口切换互连存储器读或写请求实现为星形拓扑串行总线事务层分组(TLP)。
2.根据权利要求1所述的星形拓扑串行总线接口系统,其中所述星形拓扑串行总线遵 守从一组协议中选择的协议,该组协议包括PCIe、HyperTransport、InfiniBand、RapidIO 和 StarFabric 协议。
3.根据权利要求1所述的星形拓扑串行总线接口系统,其中所述快速消息收发网络 或接口切换互连承载与存储器相关的消息分组,所述消息分组包括从一组字段中选择的字 段,该组字段包括DMA源地址字段、DMA目的地地址字段、DMA数据字节计数字段和星形拓扑 串行总线控制字段,并且其中所述星形拓扑串行总线接口能够读取和理解这些字段。
4.根据权利要求1所述的星形拓扑串行总线接口系统,其中所述快速消息收发网络或 接口切换互连采用基于信用的流控制来管理消息发送,其中为给定发射机分配固定数量的 发送信用,以用于向特定接收机发送消息,所述给定发射机经由所述快速消息收发网络向 所述特定接收机进行的发送用完了这些信用的一部分,并且其中在用完针对所述特定接收 机的所述发送信用时,不能再从所述给定发射机向所述特定接收机进行发送,直到所述特 定接收机经由所述快速消息收发网络或接口切换互连将补充了所述发送信用的至少一部 分的消息发回所述特定发射机为止,并且其中所述星形拓扑串行总线接口采用所述基于信 用的流控制系统。
5.根据权利要求1所述的星形拓扑串行总线接口系统,其中所述快速消息收发网络或 接口切换互连从分组分配引擎(PDE)发送队列向处理器内核发送线程消息,所述分组分配 引擎发送队列采用轮询分配方案、加权轮询分配方案或渴望轮询分配方案,并且其中所述 星形拓扑串行总线接口利用内部队列来处理来自所述快速消息收发网络或接口切换互连 的消息,所述内部队列采用轮询分配方案、加权轮询分配方案或渴望轮询分配方案。
6.根据权利要求1所述的星形拓扑串行总线接口系统,其中所述快速消息收发网络或 接口切换互连具有环形结构。
7.根据权利要求1所述的星形拓扑串行总线接口系统,其中所述快速消息收发网络至 少通过所述内核的指令高速缓冲存储器耦合到所述处理器内核,所述接口切换互连经由超 级存储器桥耦合到所述快速消息收发网络和数据交换互连两者,并且所述数据交换互连至 少通过所述内核的数据高速缓冲存储器耦合到所述处理器内核。
8.根据权利要求1所述的星形拓扑串行总线接口,其中所述处理器内核具有从由MIPS、x86、PowerPC和ARM架构和指令集构成的组中选择的架构和指令集。
9.一种用于高级多内核处理器的星形拓扑串行总线接口,所述高级内核处理器包括多个处理器内核,每个处理器内核具有数据高速缓冲存储器和指令高速缓冲存储器;耦合到所述内核的快速消息收发网络(FMN)或接口切换互连(ISI),所述快速消息收 发网络或接口切换互连被配置为在所述多个处理器内核、所述星形拓扑串行总线接口和任 选设备中的任意设备之间提供与存储器相关或不与存储器相关的消息传输,所述任选设备 是从由L2高速缓冲存储器、通信端口、网络I/O接口组、DMA设备、分析器/分类器设备、 XGMII/SPI-4.2端口、分组分配引擎(PDE)和安全加速引擎构成的组中选择的;其中所述星形拓扑串行总线接口包括至少一个DMA和关联的星形拓扑串行总线支持 电路,用于将所述快速消息收发网络或接口切换互连上的存储器读或写消息转换成适于通 过星形拓扑串行总线传送到一个或多个星形拓扑串行总线外围设备的星形拓扑串行总线 事务层分组。
10.根据权利要求9所述的星形拓扑串行总线接口,其中所述星形拓扑串行总线遵守 从一组协议中选择的协议,该组协议包括PCIe、HyperTransport、InfiniBand、RapidIO和 StarFabric 协议。
11.根据权利要求9所述的星形拓扑串行总线接口,其中所述快速消息收发网络或接 口切换互连承载与存储器相关的消息分组,所述消息分组包括从一组字段中选择的字段, 该组字段包括DMA源地址字段、DMA目的地地址字段、DMA数据字节计数字段和星形拓扑串 行总线控制字段,并且其中所述星形拓扑串行总线接口能够读取和理解这些字段。
12.根据权利要求9所述的星形拓扑串行总线接口,其中所述快速消息收发网络或接 口切换互连采用基于信用的流控制来管理消息发送,其中为给定发射机分配固定数量的发 送信用,以用于向特定接收机发送消息,所述给定发射机经由所述快速消息收发网络或接 口切换互连向所述特定接收机进行的发送用完了这些信用的一部分,并且其中在用完针对 所述特定接收机的所述发送信用时,不能再从所述给定发射机向所述特定接收机进行发 送,直到所述特定接收机经由所述快速消息收发网络或接口切换互连将补充了所述发送信 用的至少一部分的消息发回所述特定发射机为止,并且其中所述星形拓扑串行总线接口采 用所述基于信用的流控制系统。
13.根据权利要求9所述的星形拓扑串行总线接口,其中所述快速消息收发网络或接 口切换互连从分组分配引擎(PDE)发送队列向处理器内核发送线程消息,所述分组分配引 擎发送队列采用轮询分配方案、加权轮询分配方案或渴望轮询分配方案,并且其中所述星 形拓扑串行总线接口利用内部队列来处理来自所述快速消息收发网络或接口切换互连的 消息,所述内部队列采用轮询分配方案、加权轮询分配方案或渴望轮询分配方案。
14.根据权利要求9所述的星形拓扑串行总线接口,其中所述快速消息收发网络或接 口切换互连具有环形结构。
15.根据权利要求9所述的星形拓扑串行总线接口,其中所述快速消息收发网络至少 通过所述内核的指令高速缓冲存储器耦合到所述处理器内核,所述接口切换互连经由超级 存储器桥耦合到所述快速消息收发网络和数据交换互连两者,并且所述数据交换互连至少 通过所述内核的数据高速缓冲存储器耦合到所述处理器内核。
16.根据权利要求9所述的星形拓扑串行总线接口,其中所述处理器内核具有从由 MIPS、x86、PowerPC和ARM架构和指令集构成的组中选择的架构和指令集。
17.一种用于高级多内核处理器的PCIe接口系统,所述高级内核处理器包括多个处理器内核,每个处理器内核具有数据高速缓冲存储器和指令高速缓冲存储器;数据交换互连环装置,所述数据交换互连环装置直接与所述多个处理器内核中的每一 个处理器内核的所述数据高速缓冲存储器耦合,所述数据交换互连环装置被配置为在所述 多个处理器内核之间传递与存储器相关的信息;以及与所述数据交换互连环装置分开的快速消息收发网络(FMN),所述快速消息收发网络 直接与所述多个处理器内核中的每一个处理器内核的所述指令高速缓冲存储器耦合;接口切换互连,所述接口切换互连经由超级存储器桥连接到所述快速消息收发网络和 数据交换互连;所述快速消息收发网络和接口切换互连被配置为在所述多个处理器内核中的任意处 理器内核之间以及在PCIe接口和任选设备之间提供与存储器相关或不与存储器相关的消 息传输,所述任选设备是从由L2高速缓冲存储器、通信端口、网络I/O接口组、DMA设备、分 析器/分类器设备、XGMII/SPI-4.2端口、分组分配引擎(PDE)和安全加速引擎构成的组中 选择的;其中任何所述处理器内核和任何所述任选设备利用所述快速消息收发网络或接口切 换互连向任何其他所述处理器内核和任何其他所述任选设备发送消息;其中所述PCIe接口包括至少一个DMA和关联的PCIe支持电路,用于将来自所述快速 消息收发网络或接口切换互连的存储器读或写消息转换成适于通过PCIe串行总线传送到 一个或多个PCIe外围设备的PCIe事务层分组。
18.根据权利要求17所述的PCIe接口系统,其中所述快速消息收发网络承载与存储 器相关的消息分组,所述消息分组包括从一组字段中选择的字段,该组字段包括DMA源地 址字段、DMA目的地地址字段、DMA数据字节计数字段和PCIe总线控制字段,并且其中所述 PCIe接口能够读取和理解这些字段。
19.根据权利要求17所述的PCIe接口系统,其中所述快速消息收发网络采用基于信用 的流控制来管理消息发送,其中为给定发射机分配固定数量的发送信用,以用于向特定接 收机发送消息,所述给定发射机经由所述快速消息收发网络向所述特定接收机进行的发送 用完了这些信用的一部分,并且其中在用完针对所述特定接收机的所述发送信用时,不能 再从所述给定发射机向所述特定接收机进行发送,直到所述特定接收机经由所述快速消息 收发网络将补充了所述发送信用的至少一部分的消息发回所述特定发射机为止,并且其中 所述PCIe接口采用所述基于信用的流控制系统。
20.根据权利要求17所述的PCIe接口系统,其中所述快速消息收发网络从分组分配引 擎(PDE)发送队列向处理器内核发送线程消息,所述分组分配引擎发送队列采用轮询分配 方案、加权轮询分配方案或渴望轮询分配方案,并且其中所述PCIe接口利用内部队列来处 理来自所述快速消息收发网络的消息,所述内部队列采用轮询分配方案、加权轮询分配方 案或渴望轮询分配方案。
21.根据权利要求17所述的PCIe接口系统,其中所述快速消息收发网络或接口切换互连具有环形结构。
22.根据权利要求17所述的星形拓扑串行总线接口,其中所述处理器内核具有从由 MIPS、x86、PowerPC和ARM架构和指令集构成的组中选择的架构和指令集。
23.—种系统,包括多内核处理器,所述多内核处理器包括多个处理器内核,所述多个处理器内核能够支 持多个软件产生的读或写指令,以与PCIe总线接口进行接口 ;所述多内核处理器具有能够将多个处理器内核链接在一起的内部快速消息收发网络 或接口切换互连。
24.根据权利要求23所述的系统,其中所述PCIe总线接口包括用于对从所述快速消息 收发网络或所述接口切换互连接收的读或写消息进行转换的电路。
25.根据权利要求23所述的系统,其中所述PCIe总线接口包括用于将从所述快速消 息收发网络或所述接口切换互连接收的读或写消息转换成适于通过PCIe总线传送的PCIe 事务层分组的电路。
26.根据权利要求25所述的系统,其中所述电路包括至少一个直接存储器存取和关联 的PCIe电路。
27.根据权利要求23所述的系统,其中所述多内核处理器具有能够将多个处理器内核 链接在一起的接口切换互连。
28.根据权利要求23所述的系统,其中所述多内核处理器具有能够将多个处理器内核 链接在一起的内部快速消息收发网络。
29.根据权利要求28所述的系统,其中所述PCIe总线接口处理来自所述快速消息收发 网络的消息。
30.根据权利要求29所述的系统,其中所述PCIe总线接口利用内部队列来处理来自所 述快速消息收发网络的消息。
31.根据权利要求29所述的系统,其中所述PCIe总线接口利用轮询分配方案来处理来 自所述快速消息收发网络的消息。
32.根据权利要求29所述的系统,其中所述PCIe总线接口利用加权轮询分配方案来处 理来自所述快速消息收发网络的消息。
33.根据权利要求29所述的系统,其中所述PCIe总线接口利用渴望轮询分配方案来处 理来自所述快速消息收发网络的消息。
34.根据权利要求23所述的系统,其中所述PCIe总线接口采用基于信用的流控制系统。
35.一种方法,包括提供多内核处理器,所述多内核处理器包括多个处理器内核,所述多个处理器内核能 够支持多个软件产生的读或写指令,以与PCIe总线接口进行接口 ;所述多内核处理器具有能够将多个处理器内核链接在一起的内部快速消息收发网络 或接口切换互连。
36.根据权利要求35所述的方法,其中所述PCIe总线接口包括用于对从所述快速消息 收发网络或所述接口切换互连接收的读或写消息进行转换的电路。
37.根据权利要求35所述的方法,其中所述PCIe总线接口包括用于将从所述快速消息收发网络或所述接口切换互连接收的读或写消息转换成适于通过PCIe总线传送的PCIe 事务层分组的电路。
38.根据权利要求35所述的方法,其中所述电路包括至少一个直接存储器存取和关联 的PCIe电路。
39.根据权利要求35所述的方法,其中所述多内核处理器具有能够将多个处理器内核 链接在一起的接口切换互连。
40.根据权利要求35所述的方法,其中所述多内核处理器具有能够将多个处理器内核 链接在一起的内部快速消息收发网络。
41.根据权利要求40所述的方法,其中所述PCIe总线接口处理来自所述快速消息收发 网络的消息。
42.根据权利要求41所述的方法,其中所述PCIe总线接口利用内部队列来处理来自所 述快速消息收发网络的消息。
43.根据权利要求41所述的方法,其中所述PCIe总线接口利用轮询分配方案来处理来 自所述快速消息收发网络的消息。
44.根据权利要求41所述的方法,其中所述PCIe总线接口利用加权轮询分配方案来处 理来自所述快速消息收发网络的消息。
45.根据权利要求41所述的方法,其中所述PCIe总线接口利用渴望轮询分配方案来处 理来自所述快速消息收发网络的消息。
46.一种系统,包括 PCIe总线接口部件;以及多内核处理器,所述多内核处理器包括多个处理器内核,所述多个处理器内核能够支 持多个软件产生的读或写指令,以经由所述PCIe总线接口部件与PCIe总线进行接口 ;所述多内核处理器具有能够将多个处理器内核链接在一起的内部快速消息收发网络 或接口切换互连。
47.根据权利要求46所述的系统,其中所述PCIe总线接口部件与所述多内核处理器集成在一起。
全文摘要
一种高级处理器包括多个多线程处理器内核,每个多线程处理器内核均具有数据高速缓冲存储器和指令高速缓冲存储器。数据交换互连耦合到每个处理器内核并用于在处理器内核之间传递信息。消息收发网络耦合到每个处理器内核和多个通信端口。数据交换互连通过其相应的数据高速缓冲存储器耦合到每个处理器内核,并且消息收发网络通过其相应的消息站耦合到每个处理器内核。在本发明实施例的一个方面中,消息收发网络连接到高带宽星形拓扑串行总线,例如能够支持多个高带宽PCIe通道的PCIexpress(PCIe)接口。本发明的优点包括能够以高效且成本效益高的方式在计算机系统和存储器之间提供高带宽通信。
文档编号G06F15/16GK101878475SQ200880100883
公开日2010年11月3日 申请日期2008年7月25日 优先权日2007年7月31日
发明者D·T.·哈斯, J·J·朱 申请人:Netlogic微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1