CN101878475A - 向星形拓扑串行总线接口委托网络处理器操作 - Google Patents

向星形拓扑串行总线接口委托网络处理器操作 Download PDF

Info

Publication number
CN101878475A
CN101878475A CN200880100883.6A CN200880100883A CN101878475A CN 101878475 A CN101878475 A CN 101878475A CN 200880100883 A CN200880100883 A CN 200880100883A CN 101878475 A CN101878475 A CN 101878475A
Authority
CN
China
Prior art keywords
interface
pcie
transceiver network
interconnection
processor cores
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200880100883.6A
Other languages
English (en)
Other versions
CN101878475B (zh
Inventor
J·J·朱
D·T.·哈斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
RMI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by RMI Corp filed Critical RMI Corp
Publication of CN101878475A publication Critical patent/CN101878475A/zh
Application granted granted Critical
Publication of CN101878475B publication Critical patent/CN101878475B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4286Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Abstract

一种高级处理器包括多个多线程处理器内核,每个多线程处理器内核均具有数据高速缓冲存储器和指令高速缓冲存储器。数据交换互连耦合到每个处理器内核并用于在处理器内核之间传递信息。消息收发网络耦合到每个处理器内核和多个通信端口。数据交换互连通过其相应的数据高速缓冲存储器耦合到每个处理器内核,并且消息收发网络通过其相应的消息站耦合到每个处理器内核。在本发明实施例的一个方面中,消息收发网络连接到高带宽星形拓扑串行总线,例如能够支持多个高带宽PCIe通道的PCIexpress(PCIe)接口。本发明的优点包括能够以高效且成本效益高的方式在计算机系统和存储器之间提供高带宽通信。

Description

向星形拓扑串行总线接口委托网络处理器操作
技术领域
本发明涉及计算机和电信领域,更具体而言,本发明涉及用于计算机和电信应用中的高级处理器。
背景技术
现代计算机和电信系统具有极大的优点,包括能够在全世界范围内进行信息通信。计算机和电信设备的常规架构包括大量的分立电路,这导致处理能力和通信速度二者的效率低。
例如,图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示出了根据本发明实施例的处理器的示例性流水线;
图3I示出了根据本发明实施例的处理器内的内核中断流水操作;
图3J示出了根据本发明实施例的可编程中断控制器(PIC)操作;
图3K示出了根据本发明实施例的用于多个线程分配的返回地址堆栈(RAS);
图4A示出了根据本发明实施例的数据交换互连(DSI)环装置(ringarrangement);
图4B示出了根据本发明实施例的DSI环部件;
图4C示出了根据本发明实施例的DSI中的示例性数据检索的流程图;
图5A示出了根据本发明实施例的快速消息收发环部件;
图5B示出了图5A的系统所用的消息数据结构;
图5C示出了根据本发明实施例的连接到快速消息收发网络(FMN)的各种主体(agent)的概念图;
图5D示出了常规处理系统中的的网络业务;
图5E示出了根据本发明实施例的分组流;
图5F示出了PCIe接口如何连接到FMN/ISI和PCIeI/O总线的详细视图;
图5G示出了在FMN/ISI和PCIe接口之间发送的64比特字消息的数据字段概述;
图5H示出了PCIe接口DMA如何将来自处理器的消息转换成PCIeTLP请求以及PCIe接口DMA如何重新组装这些各种PCIe TLP分组的;
图5I示出了一个流程图,该流程图示出了PCIe读请求和写请求之间的确认消息的不对称性;
图6A示出了根据本发明实施例的在四个线程上均匀分配分组的分组分配引擎(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);三个1GbMAC;一个能够适应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),AddisonWesley的“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个线程可用于发射。
多线程方面提供了如下优点:利用了由长延迟操作导致的空闲周期;针对面积与性能矛盾进行了优化;对于受存储器限制的应用而言是理想的;实现了存储器带宽的最佳利用;存储器子系统;利用MOSI(修改、自有、共享、无效)协议的高速缓冲存储器一致性;全图高速缓冲存储器目录,包括相对于广播监听方式减少了监听带宽并增加了可扩缩性;大的芯片上共享双存储体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、指令高速缓冲存储器单元(ICU)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也不包含期望的条目,则发生中断或陷阱。
为了保持符合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)存储-加载重排序。可以借助于寄存器中的位矢量来独立地使每种排序放松。如果将每种类型设置成宽松状态,则可以实现弱排序模型。
现在参考图3I,示出了根据本发明实施例的处理器内的内核中断流水操作,并且该内核中断流水操作由总附图标记300I表示。如将要在下文参考图3J更详细论述的,可编程中断控制器(PIC)向累加器302I提供中断,该中断包括中断计数器和MSG块。因此,操作300I可以发生在整个系统的任何处理器或内核之内。功能块调度线程304I可以从块302I接收控制接口。可以通过阴影映射实现到MIPS架构的扩展,阴影映射可以包括原因306I到EIRR 308I以及状态310I到EIMR 312I。MIPS架构通常针对指定状态和原因寄存器中的每一个仅提供2个位用于软件中断和6个位用于硬件中断。根据本发明的实施例,可以保持这种MIPS指令架构的兼容性,同时提供扩展。
如图3I中更详细所示,针对中断未决(interrupt pending)的原因306I到EIRR 308I的阴影映射可以包括将原因306I寄存器的位8-15映射到EIRR308I的位0-7。而且,软件中断可以保持在内核之中,而不是通过PIC,且可以通过向原因306I的位8和/或9写入来执行软件中断。原因306I的剩余6个位可以用于硬件中断。类似地,针对屏蔽(mask)的状态310I到EIMR312I的阴影映射可以包括将状态310I寄存器的位8-15映射到EIMR 312I的位0-7。此外,可以通过向状态310I的位8和/或9写入来进行软件中断,而剩余6个位可以用于硬件中断。通过这种方式,根据本发明实施例的寄存器扩展在处理中断方面提供了更加多的灵活性。在一个实施例中,还可以经由EIRR 308I的未阴影化位8-63和/或EIMR 312I的位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位字段。在一个实施例中,如上文参考图3I所述,中断矢量316-2J中的较低数可以经由映射到EIPR 308I来表示关联中断的较高优先级。在图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还可以允许任何线程中断任何其他线程(即,线程间中断)。这可以通过向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是先进后出(FILO)型堆栈以适应嵌套子例程调用。可以基本上与将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和/或线程屏蔽在中断处理之外而实现的。在一个实施例中,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);硬件加速的服务质量(QOS)和分类;安全硬件加速--AES,DES/3DES,SHA-1,MDS和RSA;分组排序支持;串处理支持;TOE硬件(TCP卸载引擎);以及许多IO信号。在本发明实施例的一个方面中,数据交换互连216可以通过其相应的数据高速缓冲存储器212a-h耦合到处理器内核210a-h中的每一个。而且,消息收发网络222可以通过其相应的指令高速缓冲存储器214a-h耦合到处理器内核210a-h中的每一个。此外,在本发明实施例的一个方面中,高级电信处理器还可以包括耦合到数据交换互连的L2高速缓冲存储器208,并且该L2高速缓冲存储器208用于存储处理器内核210a-h可访问的信息。在示例性实施例中,L2高速缓冲存储器包括与处理器内核数量相同数量的区段(有时称为存储体)。该示例是参考图4A描述的,但该示例也可以使用更多或更少的L2高速缓冲存储器区段。
如前所述,本发明的实施例包括利用MOSI(修改、自有、共享、无效)协议来保持高速缓冲存储器一致性。增加“自有”状态通过允许在处理内核之间共享脏高速缓冲存储器线而增强了“MSI”协议。具体而言,本发明的示例性实施例可以向运行于8个处理器内核以及I/O设备的多达32个硬件上下文上的软件提供存储器的完全一致图。可以在整个L1和L2高速缓冲存储器(例如,分别是图2A中的212a-h和208)分层体系中使用MOSI协议。此外,所有外部访问(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/O与环的其余部分之间的接口。环元件402a-j每个都与图2A的内核210a-h和存储器桥中的一个相对应。相应地,元件402a接口到L2高速缓冲存储器L2a和内核-0210a,元件402b接口到L2b和内核210b,等等,直到元件402h接口到L2h和内核210h。桥206包括环上的元件402i,桥218包括环上的元件402j。
如图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-1、402b-2和402b-3均对应于四个环之一。例如,可以通过将环部件402b-0、402b-1、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-1、510B-2和510B-3。根据实施例,消息是最小的单元,因此不能中断完整的消息。
基于信用的流控制能够提供例如用于管理消息发送的机制。在一个实施例中,针对目标/接收机而分配给所有发射机的信用总数不能超过其接收队列(例如图5A的RCVQ 506A)中的条目的数量之和。例如,在一个实施例中,256是信用总数,这是因为每个目标/接收机的RCVQ大小是256个条目。通常,软件可以控制信用的分配。例如,在引导时,每个发送机/发射机或参与的主体可以被分配一些默认数量的信用。然后软件可以自由按每个发射机分配信用。例如,针对系统中的其他目标/接收机中的每一个,每个发送机/发射机可以具有由软件设置的可编程数量的信用。然而,并非要求系统中的所有主体都作为目标/接收机来参与发射信用的分配。在一个实施例中,可以针对内核-1、内核-2、......、内核-7、RGMII130、RGMII131、XGMIISPI-4.2--0、XGMII/SPI-4.2--1、PODO、POD1、......、POD4等中的每一个对内核-0的信用进行编程。下面的表1示出了针对作为接收机的内核-0的示例性信用分配。
表1
Figure GPA00001009958800261
在本示例中,当内核-1向内核-0发送大小为2(例如2个64比特的数据元)的消息时,可以将内核-0中的内核-1的信用递减2(例如从32递减到30)。在内核-0接收消息时,消息可以进入内核-0的RCVQ。一旦从内核-0的RCVQ取走消息,实质上释放了那个消息存储空间或那个消息存储空间变得可用。内核-0然后可以向发送机发送信号(例如向内核-1发送自由信用信号),指示还有空间量(例如2)可用。如果在没有收到来自内核-0的相应自由信用信号的情况下内核-1继续向内核-0发送消息,最终内核-1的信用数量可以变为零,并且内核-1不能向内核-0发送任何更多消息。例如,仅在内核-0利用自由信用信号做出响应时,内核-1才能够向内核-0发送另外的消息。
现在参考图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到图5I中更详细示出了这种接口。
作为本发明实施例的一方面,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架构中,分配了协处理器或“COP2”空间。然而,根据本发明的实施例,为了经由FMN进行消息收发用途而保留了为COP2指定的空间。在一个实施例中,软件可执行指令可以包括消息发送(MsgSnd)、消息加载(MsgLd)、到COP2的消息(MTC2)、来自COP2的消息(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接口发送的命令如下:
桶中的消息
  名称   桶   描述
  链路0DMA加载   0   用于从I/O总线从属接口读取存储数据并在PCIe链路0上写入存储数据的消息(也称为DMA邮递)
  链路0DMA存储   1   用于从PCIe链路0读取存储数据并在I/O总线从属接口上写入存储数据的消息(也称为DMA非邮递)
  链路1DMA加载   2   用于从I/O总线从属接口读取存储数据并在PCIe链路1上写入存储数据的消息(也称为DMA邮递)
  链路1DMA存储   3   用于从PCIe链路1读取存储数据并在I/O总线从属接口上写入存储数据的消息(也称为DMA非邮递)
从处理器内核到PCIe接口的大部分通信是简单且简洁的2个64比特字存储器读取/写命令形式。处理器内核将通常假设:这些命令已经被成功完成。结果,PCIe接口仅以非常简洁的单个64比特字的形式返回简洁的“OK”、“Not OK”状态消息。各种发出消息类别如下所示:
发出消息类别
  名称   类别   描述
  链路0DMA加载   0   针对桶0中的消息返回消息
  名称   类别   描述
  链路0DMA存储   1   针对桶1中的消息返回消息
  链路1DMA加载   2   针对桶2中的消息返回消息
  链路1DMA存储   3   针对桶3中的消息返回消息
图5G示出了由处理器内核经由FMN/ISI发送到PCIe接口设备上的DMA引擎的两个简洁的64比特字中的数据字段的概况,并且图5G还示出了从PCIe接口设备上的DMA引擎经由FMN/ISI发回处理器内核的单个简洁的64比特字的概况。如图所示,大部分字空间被DMA源地址、DMA目的地地址和存储数据字节计数信息占据。两个字的其余部分包括如下所示的各种控制信息比特和字段:
发送到PCIe接口DMA引擎的FMN/ISI消息的字段如下:
  字   字段   比特   描述
  0   保留   63∶61
  0   COHERENT   60   I/O总线从属请求一致性启用
  0   L2ALLOC   59   I/O总线从属请求L2分配启用
  0   RDX   58   I/O总线从属请求只读启用
  0   RETEN   57   返回消息启用
  0   RETID   56∶50   返回消息目标ID
  0   TID   49∶40   消息标记ID
  0   SRC   39∶0   DMA源地址
  1   TD   63   PCIe请求TD字段
  1   EP   62   PCIe请求EP字段
  1   ATTR   61∶00   PCIe请求属性字段
  1   BC   59∶40   DMA数据字节计数
  1   DEST   39∶0   DMA目的地地址
在这里,可以将COHERENT、RDX、RETEN、TD、EP、ATTR字段认为是星形拓扑串行总线控制字段,或者更具体地,可以将COHERENT、RDX、RETEN、TD、EP、ATTR字段认为是PCIe总线控制字段。
发出的返回消息实质上是有名的ACK或OK或问题消息。它由单个64比特字构成。它的字段如下所示:
  字段   比特   描述
  保留   63∶14
  FLUSH   13   为消息启用清洗
  MSGERR   12   输入消息错误
  IOBERR   11   I/O总线错误
 PCIEERR   10   PCIe链路错误
  TID   9∶0   消息标记ID
为了简化该论述,将不详细论述这些返回消息的运动,不过在图5F中示出了这种返回路径中的一些(555)。
返回到图5F,在消息框(542)电路中存储来自处理器的输入消息,该电路可以保持4桶(不同类型)的消息,每种类型64个消息缓冲器。
然后,消息通过轮询调度器和消息总线仲裁器而得到处理,然后到达DMA引擎(541)。存储器加载(写入)指令由DMA引擎的DMA加载邮递式请求器部分(DMA load posted requestor portion)(543)来处理,被转换成适当的PCIe-TCP数据分组,然后被发送到I/O总线从属电路(545)。然后将其发送到I/O总线仲裁器电路(546),该电路利用轮询调度器处理各种PCI I/O总线请求。I/O总线仲裁器然后将分组发送到其他PCIe电路,例如I/O总线请求器(547)和PCIe链路完成器(548)。这些部件与PCIe控制仲裁器(549)一起工作来管理实际的PCIe物理层电路(550),该实际的PCIe物理层电路(550)进行实际的硬件PCIe分组发送和接收。然后,将PCIe-TCP分组置于PCIe总线(551)上并将PCIe-TCP分组发送到各种PCIe设备(未示出)。写标记跟踪器跟踪读出和写入内容的状态。
在本实施例中,所有的写命令都不期望得到响应,并且一旦接受到命令,所有写命令都会完成,然而,所有读和只读命令期望得到返回响应。
在本实施例中,为了简化设计,假设可以乱序返回所有I/O总线主读请求完成。在本实施例中,还假设所有请求都是针对相连字节的,并且对于I/O、配置和寄存器地址空间而言,命令中请求的最大字节数为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-TLP0、PCI-TLP1、......、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)将经由I/O(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。
图5I示出了消息如何从处理器内核流到PCIe接口的流程图,并且图5I还示出了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可以在时间t1接收分组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在周期t11在PDE内具有最小数量的可用信用。尽管周期t11处的分组11的下一个逻辑接收机可能已经是线程2,但是PDE能够识别该线程中的处理延迟,并因此选择线程3作为分配分组11的最佳目标。在该特定示例中,线程2可以继续相对于其他线程表现出处理延迟,因此PDE可以避免向该线程分配。而且,在没有任何接收机有空间接受新分组的情况下,PDE可以将分组队列扩展到存储器。
因为大多数组网应用都不是非常能容忍分组的随机到达次序,因此希望按次序递交分组。此外,在系统中并入并行处理和分组排序的特征是困难的。一种方式是将排序任务留给软件,但这样会变得难以保持线路速率。另一个选择是在单个流中向同一处理线程发送所有分组,使得排序基本是自动的。然而,这种方式要求在分组分配之前进行流鉴别(即分类),并且这降低了系统性能。另一个缺点是:最大流的吞吐量是由单线程的性能决定的。这妨碍了单个大流在它们经过系统时维持其吞吐量。
根据本发明的实施例,可以使用被称为分组排序设备(POD)的高级硬件加速结构。POD的目的是通过在将分组发送到组网输出接口之前对它们重新排序以提供并行处理线程的不受限使用。现在参考图6C,示出了根据本发明实施例的在分组生命周期期间的POD布置,并且该布置由总附图标记600C表示。该图基本示出了在分组通过处理器的生命周期期间的POD的逻辑布置。在该特定示例中,PDE 602C可以向线程发送分组,如图所示。线程0可以在时间t1接收分组1,在时间t5接收分组5,等等,直到周期tN-3。线程1可以在时间t2接收分组2,在时间t6接收分组6,等等,直到周期tN-2。线程2可以在时间t3接收分组3,在时间t7接收分组7,等等,直到周期tN-1。最后,线程3可以在时间t4接收分组4,在时间t8接收分组8,等等,直到周期tN
在从不同线程接收分组并随后将分组发送到组网输出期间,可以将分组排序设备(POD)604C看作是分组排序器。可以为给定组网接口接收的所有分组分配序号。然后,可以由PDE将该序号连同其余分组信息转发到工作线程。一旦线程已经完成了分组处理,它可以将分组描述符连同初始序号转发到POD。POD可以例如按照由接收接口分配的初始序号严格确定的次序向输出接口释放这些分组。
在大部分应用中,POD将按照随机次序接收分组,这是因为分组通常是由线程按随机次序处理的。POD能够基于接收接口分配的序号建立队列,并继续按照接收的那样对分组排序。POD可以按照接收接口分配的次序向给定输出接口发出分组。现在参考图6D,示出了根据本发明实施例的POD输出分配,并且该POD输出分配由总附图标记600D表示。如在分组排序设备(POD)602D中所看到的那样,最初可以通过执行线程向POD发送分组2和4。在几个周期之后,线程可以完成分组3的工作并将其放在POD中。分组可能尚未被排序,这是因为分组1尚未就位。最后,在周期t7完成分组1并将其相应地放在POD中。现在可以对分组进行排序,并且POD能够按照1、2、3、4的次序发出分组。如果接下来接收分组5,则在分组4之后的输出中发出分组5。在接收其余分组时,可以将每个分组存储在队列(例如512-深结构)中,直到接收到下一个更高序号的分组为止。在该时间,可以将分组添加到输出流(例如组网输出)。
最老的分组可能永远到达不了POD,从而造成瞬时的线头阻塞情况。如果处理不适当,这种错误状况会导致系统死锁。然而,根据实施例的一方面,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设备一起工作而增强了高级处理器的能力。
已经公开了示例性实施例和最佳模式,可以对公开的实施例进行各种修改和变形,同时保持在由以下权利要求界定的本发明的主题和精神之内。

Claims (47)

1.一种用于多内核处理器的星形拓扑串行总线接口系统,
所述处理器内核中的至少一些能够支持多个软件产生的读或写指令,用于与所述星形拓扑串行总线接口系统接口;
所述多内核处理器具有能够将各内核处理器链接在一起的内部快速消息收发网络或接口切换互连;
其中所述星形拓扑串行总线接口系统连接到所述快速消息收发网络或接口切换互连,并且
其中所述星形拓扑串行总线接口系统被配置为从所述内核处理器接收存储器读或写发送请求;并且
其中所述星形拓扑串行总线接口系统包括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总线接口部件与所述多内核处理器集成在一起。
CN200880100883.6A 2007-07-31 2008-07-25 向星形拓扑串行总线接口委托网络处理器操作 Expired - Fee Related CN101878475B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/831,887 2007-07-31
US11/831,887 US8037224B2 (en) 2002-10-08 2007-07-31 Delegating network processor operations to star topology serial bus interfaces
US12/019,576 US8065456B2 (en) 2002-10-08 2008-01-24 Delegating network processor operations to star topology serial bus interfaces
US12/019,576 2008-01-24
PCT/US2008/009040 WO2009017668A1 (en) 2007-07-31 2008-07-25 Delegating network processor operations to star topology serial bus interfaces

Publications (2)

Publication Number Publication Date
CN101878475A true CN101878475A (zh) 2010-11-03
CN101878475B CN101878475B (zh) 2014-05-21

Family

ID=39169564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880100883.6A Expired - Fee Related CN101878475B (zh) 2007-07-31 2008-07-25 向星形拓扑串行总线接口委托网络处理器操作

Country Status (5)

Country Link
US (5) US8037224B2 (zh)
EP (1) EP2174229A4 (zh)
CN (1) CN101878475B (zh)
HK (1) HK1150084A1 (zh)
WO (1) WO2009017668A1 (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102387084A (zh) * 2011-11-29 2012-03-21 中国航空工业集团公司第六三一研究所 基于RapidIO协议包交换的系统结构
CN104662515A (zh) * 2012-05-24 2015-05-27 罗杰.史密斯 可动态构建的计算机系统
CN104737142A (zh) * 2012-10-22 2015-06-24 英特尔公司 多时隙链路层流控制单元
CN105247825A (zh) * 2013-06-29 2016-01-13 英特尔公司 基于信用的仲裁的服务率重新分配
CN106027349A (zh) * 2016-04-29 2016-10-12 重庆爱思网安信息技术有限公司 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法
CN106484503A (zh) * 2015-08-27 2017-03-08 深圳市中兴微电子技术有限公司 一种校验和的计算方法及网络处理器
CN109144749A (zh) * 2018-08-14 2019-01-04 苏州硅岛信息科技有限公司 一种使用处理器实现多处理器间通信的方法
CN109614152A (zh) * 2018-12-06 2019-04-12 青岛镕铭半导体有限公司 硬件加速模块及存储设备
CN109783423A (zh) * 2019-01-25 2019-05-21 上海兆芯集成电路有限公司 环形总线以及额度分配方法
CN111417936A (zh) * 2017-12-15 2020-07-14 Ati科技无限责任公司 用于增加加速处理装置的带宽的并行数据传送
CN111527485A (zh) * 2017-11-03 2020-08-11 相干逻辑公司 存储器网络处理器
CN115001627A (zh) * 2022-05-30 2022-09-02 山东省计算中心(国家超级计算济南中心) 一种InfiniBand网络子网管理报文处理方法及系统
CN117714229A (zh) * 2024-02-05 2024-03-15 上海登临科技有限公司 数据传输网络、片上系统及电子设备

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8015303B2 (en) * 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US7627721B2 (en) * 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7814218B1 (en) 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US8151278B1 (en) 2002-10-17 2012-04-03 Astute Networks, Inc. System and method for timer management in a stateful protocol processing system
US7596621B1 (en) * 2002-10-17 2009-09-29 Astute Networks, Inc. System and method for managing shared state using multiple programmed processors
US7447794B1 (en) 2002-12-04 2008-11-04 Silicon Graphics, Inc. System and method for conveying information
US20050132089A1 (en) * 2003-12-12 2005-06-16 Octigabay Systems Corporation Directly connected low latency network and interface
US8260968B2 (en) * 2006-01-23 2012-09-04 Lantiq Deutschland Gmbh Method and system for booting a software package on a network processor
US20080307109A1 (en) * 2007-06-08 2008-12-11 Galloway Curtis C File protocol for transaction based communication
US8285895B2 (en) * 2007-08-06 2012-10-09 Winbond Electronics Corporation Handshake free sharing in a computer architecture
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
KR100947618B1 (ko) * 2008-08-27 2010-03-15 한국전자통신연구원 데이터 처리 시스템
TWI378384B (en) * 2008-10-15 2012-12-01 Phison Electronics Corp Mother board system, storage device for booting up thereof and connector
US8671220B1 (en) 2008-11-28 2014-03-11 Netlogic Microsystems, Inc. Network-on-chip system, method, and computer program product for transmitting messages utilizing a centralized on-chip shared memory switch
US7852757B1 (en) * 2009-03-10 2010-12-14 Xilinx, Inc. Status based data flow control for chip systems
CN101873299B (zh) * 2009-04-24 2013-08-14 北京大豪科技股份有限公司 串行总线和通信方法及系统
US8170062B2 (en) * 2009-04-29 2012-05-01 Intel Corporation Packetized interface for coupling agents
US8289960B2 (en) * 2009-06-22 2012-10-16 Citrix Systems, Inc. Systems and methods for N-core tracing
US9596186B2 (en) * 2009-06-30 2017-03-14 Oracle America, Inc. Multiple processes sharing a single infiniband connection
US8385333B2 (en) * 2009-06-30 2013-02-26 Intel Corporation Mechanism for clock synchronization
US8473818B2 (en) * 2009-10-12 2013-06-25 Empire Technology Development Llc Reliable communications in on-chip networks
US8850250B2 (en) 2010-06-01 2014-09-30 Intel Corporation Integration of processor and input/output hub
US20120017214A1 (en) * 2010-07-16 2012-01-19 Qualcomm Incorporated System and method to allocate portions of a shared stack
WO2012023149A2 (en) * 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd Multi-root input output virtualization aware switch
US9146610B2 (en) 2010-09-25 2015-09-29 Intel Corporation Throttling integrated link
US9146746B2 (en) * 2011-03-01 2015-09-29 University Of Washington Through Its Center Of Commercialization Systems and methods for providing deterministic execution
US8972611B2 (en) * 2011-08-11 2015-03-03 Cisco Technology, Inc. Multi-server consolidated input/output (IO) device
WO2013081620A1 (en) * 2011-12-01 2013-06-06 Intel Corporation Server including switch circuitry
US9348385B2 (en) 2012-07-09 2016-05-24 L. Pierre deRochement Hybrid computing module
US20140092740A1 (en) * 2012-09-29 2014-04-03 Ren Wang Adaptive packet deflection to achieve fair, low-cost, and/or energy-efficient quality of service in network on chip devices
US9479196B2 (en) 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
US9129071B2 (en) * 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
EP3142016B1 (en) * 2012-11-21 2021-10-13 Coherent Logix Incorporated Processing system with interspersed processors dma-fifo
CN103036817A (zh) * 2012-12-14 2013-04-10 华为技术有限公司 一种服务器单板、服务器单板实现方法及主处理器
US10073779B2 (en) 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
JP2014194672A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd メモリ制御装置、及びメモリ制御方法
US9910816B2 (en) * 2013-07-22 2018-03-06 Futurewei Technologies, Inc. Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
US8977786B1 (en) * 2013-07-30 2015-03-10 Qlogic, Corporation Method and system for processing information at peripheral devices
CN103533045B (zh) * 2013-10-12 2017-12-29 丁贤根 一种用于pcie数据链路层高性能容错的方法
CN103544133B (zh) * 2013-10-12 2017-01-25 北京旋极信息技术股份有限公司 一种转换装置及方法
US9372724B2 (en) * 2014-04-01 2016-06-21 Freescale Semiconductor, Inc. System and method for conditional task switching during ordering scope transitions
US9372723B2 (en) * 2014-04-01 2016-06-21 Freescale Semiconductor, Inc. System and method for conditional task switching during ordering scope transitions
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
US9304702B2 (en) 2014-05-29 2016-04-05 Netapp, Inc. System and method for parallelized performance data collection in a computing system
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
US9733981B2 (en) 2014-06-10 2017-08-15 Nxp Usa, Inc. System and method for conditional task switching during ordering scope transitions
EP3211518A1 (en) * 2014-10-21 2017-08-30 Kabushiki Kaisha Tokyo Kikai Seisakusho Image processing device
US10732865B2 (en) 2015-09-23 2020-08-04 Oracle International Corporation Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces
US9753876B1 (en) * 2016-09-22 2017-09-05 International Business Machines Corporation Processing of inbound back-to-back completions in a communication system
US10275388B2 (en) * 2016-09-26 2019-04-30 International Business Machines Corporation Simultaneous inbound multi-packet processing
US10216656B2 (en) * 2016-09-27 2019-02-26 International Business Machines Corporation Cut-through buffer with variable frequencies
US10122642B2 (en) * 2016-09-29 2018-11-06 Intel IP Corporation Managing a data stream in a multicore system
CN108011909B (zh) * 2016-10-28 2020-09-01 北京市商汤科技开发有限公司 通信方法和系统、电子设备和计算机集群
CN107894963B (zh) * 2017-11-27 2021-07-27 上海兆芯集成电路有限公司 用于系统单芯片的通信控制器与通信方法
CN108287801A (zh) * 2018-01-08 2018-07-17 深圳必旺电子商务有限公司 Uart接口串联网络的时分复用装置、时分复用方法及其控制方法
US10867091B1 (en) * 2018-08-17 2020-12-15 Synopsys, Inc. Machine learning based power optimization using parallel training and localized data generation
CN110262993B (zh) * 2019-06-11 2022-02-08 浙江华创视讯科技有限公司 输入信息的读取方法及电路、存储介质、电子装置
CN112825101B (zh) * 2019-11-21 2024-03-08 广州希姆半导体科技有限公司 芯片架构及其数据处理方法、电子设备及存储介质
CN111615150B (zh) * 2020-05-13 2023-09-08 深圳市广和通无线股份有限公司 基于PCIe接口的5G数据传输方法、装置、设备及存储介质
US20220114125A1 (en) * 2020-10-09 2022-04-14 Intel Corporation Low-latency optical connection for cxl for a server cpu
US11843959B2 (en) 2020-10-29 2023-12-12 Ambeent Wireless Method and system for enabling low-latency data communication by aggregating a plurality of network interfaces
CN113868172A (zh) * 2021-09-28 2021-12-31 上海兆芯集成电路有限公司 互连接口

Family Cites Families (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179715A (en) * 1987-03-11 1993-01-12 Toyo Communication Co., Ltd. Multiprocessor computer system with process execution allocated by process managers in a ring configuration
DE3865232D1 (de) * 1987-05-14 1991-11-07 Siemens Ag Verfahren zum einleiten des konfigurierens nach dem unterbrechen mindestens zweier parallel angeordneter, ringfoermiger netze.
US5219741A (en) * 1989-09-06 1993-06-15 Degussa Ag Method of making L-proline using an N-acyl-L-protine acylase
EP0422310A1 (en) * 1989-10-10 1991-04-17 International Business Machines Corporation Distributed mechanism for the fast scheduling of shared objects
US6693951B1 (en) 1990-06-25 2004-02-17 Qualcomm Incorporated System and method for generating signal waveforms in a CDMA cellular telephone system
US5369376A (en) 1991-11-29 1994-11-29 Standard Microsystems, Inc. Programmable phase locked loop circuit and method of programming same
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5219274A (en) 1992-08-10 1993-06-15 Tuthill Corporation Pump with internal pressure relief
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5577204A (en) 1993-12-15 1996-11-19 Convex Computer Corporation Parallel processing computer system interconnections utilizing unidirectional communication links with separate request and response lines for direct communication or using a crossbar switching device
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5956342A (en) * 1995-07-19 1999-09-21 Fujitsu Network Communications, Inc. Priority arbitration for point-to-point and multipoint transmission
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
JPH10106142A (ja) * 1996-09-27 1998-04-24 Sony Corp データデコードシステムおよびデータデコード方法、伝送装置および方法、並びに、受信装置および方法
US5940872A (en) 1996-11-01 1999-08-17 Intel Corporation Software and hardware-managed translation lookaside buffer
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6452933B1 (en) 1997-02-07 2002-09-17 Lucent Technologies Inc. Fair queuing system with adaptive bandwidth redistribution
US6018792A (en) * 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
JP3601955B2 (ja) * 1997-10-23 2004-12-15 株式会社日立製作所 データ転送方法およびそれに適した計算機システム
US5987492A (en) 1997-10-31 1999-11-16 Sun Microsystems, Inc. Method and apparatus for processor sharing
US6219741B1 (en) 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6084856A (en) 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for adjusting overflow buffers and flow control watermark levels
US6272520B1 (en) 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
US6341337B1 (en) * 1998-01-30 2002-01-22 Sun Microsystems, Inc. Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic
US6456628B1 (en) 1998-04-17 2002-09-24 Intelect Communications, Inc. DSP intercommunication network
US6032218A (en) * 1998-05-28 2000-02-29 3Com Corporation Configurable weighted round robin arbiter
US6067301A (en) * 1998-05-29 2000-05-23 Cabletron Systems, Inc. Method and apparatus for forwarding packets from a plurality of contending queues to an output
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6594701B1 (en) 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data
US6240152B1 (en) * 1998-08-18 2001-05-29 Sun Microsystems, Inc. Apparatus and method for switching frequency modes in a phase locked loop system
US6370606B1 (en) * 1998-11-05 2002-04-09 Compaq Computer Corporation System and method for simulating hardware interrupts in a multiprocessor computer system
US6584101B2 (en) 1998-12-04 2003-06-24 Pmc-Sierra Ltd. Communication method for packet switching systems
US6618379B1 (en) 1998-12-08 2003-09-09 Nec Corporation RRGS-round-robin greedy scheduling for input/output terabit switches
US6275749B1 (en) 1998-12-22 2001-08-14 Philips Electronics North America Corporation Interrupt-controlled thread processing
US6389468B1 (en) * 1999-03-01 2002-05-14 Sun Microsystems, Inc. Method and apparatus for distributing network traffic processing on a multiprocessor computer
US6658016B1 (en) * 1999-03-05 2003-12-02 Broadcom Corporation Packet switching fabric having a segmented ring with token based resource control protocol and output queuing control
US7007099B1 (en) * 1999-05-03 2006-02-28 Lucent Technologies Inc. High speed multi-port serial-to-PCI bus interface
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6438671B1 (en) 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
CA2283627C (en) * 1999-09-27 2008-08-12 Nortel Networks Corporation High-capacity wdm-tdm packet switch
US6574725B1 (en) 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US6848003B1 (en) * 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
DE10085287T1 (de) * 1999-12-08 2003-03-27 Univ British Columbia Zeitplaner für einen gewichteten fairen Warteschlagenbetrieb
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6629268B1 (en) 2000-01-25 2003-09-30 International Business Machines Corporation Method and apparatus for servicing a processing system through a test port
WO2001063416A1 (en) 2000-02-24 2001-08-30 Bops Incorporated Methods and apparatus for scalable array processor interrupt detection and response
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US6665791B1 (en) 2000-03-30 2003-12-16 Agere Systems Inc. Method and apparatus for releasing functional units in a multithreaded VLIW processor
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6687903B1 (en) * 2000-06-28 2004-02-03 Emc Corporation Inhibiting starvation in a multitasking operating system
EP1182570A3 (en) * 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
US6862282B1 (en) * 2000-08-29 2005-03-01 Nortel Networks Limited Method and apparatus for packet ordering in a data processing system
JP3426223B2 (ja) 2000-09-27 2003-07-14 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム
US6745297B2 (en) 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US7020713B1 (en) * 2000-10-10 2006-03-28 Novell, Inc. System and method for balancing TCP/IP/workload of multi-processor system based on hash buckets
US7035998B1 (en) * 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US7353289B2 (en) * 2000-11-06 2008-04-01 Telecommunication Systems, Inc. System for an open architecture development platform with centralized synchronization
US7127588B2 (en) * 2000-12-05 2006-10-24 Mindspeed Technologies, Inc. Apparatus and method for an improved performance VLIW processor
CN1305156A (zh) * 2000-12-21 2001-07-25 孙吉平 利用通用串行总线接口识别ic智能卡的装置及其实现方法
US6944850B2 (en) 2000-12-21 2005-09-13 Intel Corporation Hop method for stepping parallel hardware threads
US6772268B1 (en) 2000-12-22 2004-08-03 Nortel Networks Ltd Centralized look up engine architecture and interface
US7131125B2 (en) 2000-12-22 2006-10-31 Nortel Networks Limited Method and system for sharing a computer resource between instruction threads of a multi-threaded process
US6785887B2 (en) 2000-12-27 2004-08-31 International Business Machines Corporation Technique for using shared resources on a multi-threaded processor
JP2002207708A (ja) 2001-01-12 2002-07-26 Mitsubishi Electric Corp 演算装置
US20020161961A1 (en) * 2001-01-17 2002-10-31 Ajile Systems, Inc. Multiple virtual machine environment management system
JP2004524617A (ja) 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド クロック分配システム
US7145913B2 (en) 2001-02-15 2006-12-05 The Board Of Trustees Of The University Of Illinois Thread based scalable routing for an active router
US6963921B1 (en) 2001-02-16 2005-11-08 3Com Corporation Method and apparatus for hardware assisted TCP packet re-assembly
WO2002084957A2 (en) 2001-04-13 2002-10-24 Motorola, Inc., A Corporation Of The State Of Delaware Manipulating data streams in data stream processors
JP2002319929A (ja) 2001-04-23 2002-10-31 Mitsubishi Electric Corp クロック同期回路およびその設計方法
US7451335B2 (en) * 2001-04-24 2008-11-11 Broadcom Corporation Selectively disabling a portion of ASF operations when ASF device is powered by auxiliary power
US6952749B2 (en) 2001-05-02 2005-10-04 Portalplayer, Inc. Multiprocessor interrupt handling system and method
US6976155B2 (en) 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US20030195989A1 (en) 2001-07-02 2003-10-16 Globespan Virata Incorporated Communications system using rings architecture
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US7062761B2 (en) * 2001-07-10 2006-06-13 Micron Technology, Inc. Dynamic arrays and overlays with bounds policies
JP3630118B2 (ja) 2001-07-12 2005-03-16 日本電気株式会社 スレッド終了方法及び装置並びに並列プロセッサシステム
US6697918B2 (en) * 2001-07-18 2004-02-24 Broadcom Corporation Cache configured to read evicted cache block responsive to transmitting block's address on interface
US7218637B1 (en) * 2001-07-20 2007-05-15 Yotta Networks, Llc System for switching data using dynamic scheduling
US7190900B1 (en) * 2001-07-20 2007-03-13 Lighthouse Capital Partners Iv, Lp System and method for implementing dynamic scheduling of data in a non-blocking all-optical switching network
US6901505B2 (en) * 2001-08-09 2005-05-31 Advanced Micro Devices, Inc. Instruction causing swap of base address from segment register with address from another register
US7058948B2 (en) * 2001-08-10 2006-06-06 Hewlett-Packard Development Company, L.P. Synchronization objects for multi-computer systems
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6918012B2 (en) * 2001-08-28 2005-07-12 Hewlett-Packard Development Company, L.P. Streamlined cache coherency protocol system and method for a multiple processor single chip device
US7167471B2 (en) 2001-08-28 2007-01-23 International Business Machines Corporation Network processor with single interface supporting tree search engine and CAM
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US7006495B2 (en) * 2001-08-31 2006-02-28 Intel Corporation Transmitting multicast data packets
US7111162B1 (en) 2001-09-10 2006-09-19 Cisco Technology, Inc. Load balancing approach for scaling secure sockets layer performance
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US6904040B2 (en) * 2001-10-05 2005-06-07 International Business Machines Corporaiton Packet preprocessing interface for multiprocessor network handler
US7187663B2 (en) 2001-10-09 2007-03-06 Schmidt Dominik J Flexible processing system
US6901491B2 (en) * 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20030105799A1 (en) 2001-12-03 2003-06-05 Avaz Networks, Inc. Distributed processing architecture with scalable processing layers
US7158964B2 (en) 2001-12-12 2007-01-02 Intel Corporation Queue management
JP3914771B2 (ja) 2002-01-09 2007-05-16 株式会社日立製作所 パケット通信装置及びパケットデータ転送制御方法
US6983348B2 (en) 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
US7458006B2 (en) * 2002-02-22 2008-11-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages
US6981079B2 (en) 2002-03-21 2005-12-27 International Business Machines Corporation Critical datapath error handling in a multiprocessor architecture
US7054950B2 (en) 2002-04-15 2006-05-30 Intel Corporation Network thread scheduling
US7448036B2 (en) 2002-05-02 2008-11-04 International Business Machines Corporation System and method for thread scheduling with weak preemption policy
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US20030235194A1 (en) 2002-06-04 2003-12-25 Mike Morrison Network processor with multiple multi-threaded packet-type specific engines
US7248594B2 (en) 2002-06-14 2007-07-24 Intel Corporation Efficient multi-threaded multi-processor scheduling implementation
DE60233172D1 (de) * 2002-06-28 2009-09-10 Nokia Corp Lastausgleicheinrichtung und verfahren dafür
US6816809B2 (en) * 2002-07-23 2004-11-09 Hewlett-Packard Development Company, L.P. Hardware based utilization metering
US20040024904A1 (en) * 2002-07-31 2004-02-05 Dimambro Francesco R. Load balancing packet transmission among multiple transmit rings
US7076545B2 (en) 2002-07-31 2006-07-11 Sun Microsystems, Inc. Load balancing the servicing of received packets
US7130368B1 (en) 2002-09-19 2006-10-31 Nortel Network Limited Clock recovery using a direct smoothing process
US7461213B2 (en) 2002-10-08 2008-12-02 Rmi Corporation Advanced processor system using request, data, snoop, and response rings
US7627721B2 (en) * 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US7467243B2 (en) 2002-10-08 2008-12-16 Rmi Corporation Advanced processor with scheme for optimal packet flow in a multi-processor system on a chip
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US20040103248A1 (en) 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US8015567B2 (en) * 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7461215B2 (en) 2002-10-08 2008-12-02 Rmi Corporation Advanced processor with implementation of memory ordering on a ring based data movement network
US6971103B2 (en) 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
AU2002349257A1 (en) 2002-11-06 2004-06-07 Wuhan Fiberhome Networks Co., Ltd. Multiple service ring of n-ringlet structure based on multiple fe, ge and 10ge
US7181742B2 (en) * 2002-11-19 2007-02-20 Intel Corporation Allocation of packets and threads
US6986002B2 (en) 2002-12-17 2006-01-10 International Business Machines Corporation Adaptive shared data interventions in coupled broadcast engines
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7415540B2 (en) 2002-12-31 2008-08-19 Intel Corporation Scheduling processing threads
JP4277979B2 (ja) 2003-01-31 2009-06-10 株式会社ルネサステクノロジ 半導体集積回路装置
US7657880B2 (en) 2003-01-31 2010-02-02 Intel Corporation Safe store for speculative helper threads
US7039914B2 (en) 2003-03-07 2006-05-02 Cisco Technology, Inc. Message processing in network forwarding engine by tracking order of assigned thread in order group
US6794896B1 (en) 2003-04-21 2004-09-21 Xilinx, Inc. Method and apparatus for multithreading
US7290261B2 (en) 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US6988173B2 (en) 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US20040240472A1 (en) 2003-05-28 2004-12-02 Alok Kumar Method and system for maintenance of packet order using caching
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US7243172B2 (en) * 2003-10-14 2007-07-10 Broadcom Corporation Fragment storage for data alignment and merger
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US20050125582A1 (en) 2003-12-08 2005-06-09 Tu Steven J. Methods and apparatus to dispatch interrupts in multi-processor systems
US7657706B2 (en) 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US7000048B2 (en) * 2003-12-18 2006-02-14 Intel Corporation Apparatus and method for parallel processing of network data on a single processing thread
US8209490B2 (en) 2003-12-30 2012-06-26 Intel Corporation Protocol for maintaining cache coherency in a CMP
US7313643B2 (en) 2004-02-17 2007-12-25 Nec Electronics America, Inc. PCI-express to PCI/PCI X translator
US20050210229A1 (en) 2004-03-22 2005-09-22 Prashant Sethi Method and system for configuration of processor integrated devices in multi-processor systems
US7474661B2 (en) 2004-03-26 2009-01-06 Samsung Electronics Co., Ltd. Apparatus and method for distributing forwarding table lookup operations among a plurality of microengines in a high-speed routing node
US7304996B1 (en) 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US7089341B2 (en) 2004-03-31 2006-08-08 International Business Machines Corporation Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform
US7586851B2 (en) 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
US7058738B2 (en) 2004-04-28 2006-06-06 Microsoft Corporation Configurable PCI express switch which allows multiple CPUs to be connected to multiple I/O devices
US20060041715A1 (en) * 2004-05-28 2006-02-23 Chrysos George Z Multiprocessor chip having bidirectional ring interconnect
US9264384B1 (en) * 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
WO2006034023A2 (en) 2004-09-16 2006-03-30 Ip Fabrics, Inc. Data plane technology including packet processing for network processors
US7487379B2 (en) * 2004-11-22 2009-02-03 Rmi Corporation High performance integrated circuit with low skew clocking networks and improved low power operating mode having reduced recovery time
WO2006068595A1 (en) 2004-12-22 2006-06-29 Xelerated Ab A method for reducing buffer capacity in a pipeline processor
US7545749B2 (en) * 2005-02-15 2009-06-09 Microsoft Corporation High-accuracy packet pair for network bottleneck bandwidth measurement
US20060195663A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation Virtualized I/O adapter for a multi-processor data processing system
US7483377B2 (en) * 2005-03-01 2009-01-27 Intel Corporation Method and apparatus to prioritize network traffic
US7406566B2 (en) 2005-06-03 2008-07-29 Intel Corporation Ring interconnect with multiple coherence networks
US7386646B2 (en) * 2005-08-25 2008-06-10 Broadcom Corporation System and method for interrupt distribution in a multithread processor
US8726292B2 (en) * 2005-08-25 2014-05-13 Broadcom Corporation System and method for communication in a multithread processor
US20070106827A1 (en) * 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
US20070121626A1 (en) * 2005-11-28 2007-05-31 Shepard Jeffrey L G User and activity based end-to-end utilization measurement system
US7472266B2 (en) 2005-12-30 2008-12-30 Intel Corporation Fault resilient boot in multi-processor systems
CN103530187B (zh) 2006-03-27 2017-01-18 相干逻辑公司 为多处理器系统设计程序
US7661006B2 (en) 2007-01-09 2010-02-09 International Business Machines Corporation Method and apparatus for self-healing symmetric multi-processor system interconnects
WO2009099573A1 (en) 2008-02-08 2009-08-13 Rmi Corporation System and method for parsing and allocating a plurality of packets to processor core threads
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102387084B (zh) * 2011-11-29 2014-06-25 中国航空工业集团公司第六三一研究所 基于RapidIO协议包交换的系统结构
CN102387084A (zh) * 2011-11-29 2012-03-21 中国航空工业集团公司第六三一研究所 基于RapidIO协议包交换的系统结构
CN104662515A (zh) * 2012-05-24 2015-05-27 罗杰.史密斯 可动态构建的计算机系统
CN104662515B (zh) * 2012-05-24 2018-12-04 罗杰.史密斯 可动态构建的计算机系统
US10204064B2 (en) 2012-10-22 2019-02-12 Intel Corporation Multislot link layer flit wherein flit includes three or more slots whereby each slot comprises respective control field and respective payload field
CN104737142A (zh) * 2012-10-22 2015-06-24 英特尔公司 多时隙链路层流控制单元
US9753885B2 (en) 2012-10-22 2017-09-05 Intel Corporation Multislot link layer flit wherein flit includes three or more slots whereby each slot comprises respective control field and respective payload field
CN104737142B (zh) * 2012-10-22 2018-03-23 英特尔公司 多时隙链路层流控制单元
CN105247825A (zh) * 2013-06-29 2016-01-13 英特尔公司 基于信用的仲裁的服务率重新分配
CN106484503A (zh) * 2015-08-27 2017-03-08 深圳市中兴微电子技术有限公司 一种校验和的计算方法及网络处理器
CN106484503B (zh) * 2015-08-27 2019-10-18 深圳市中兴微电子技术有限公司 一种校验和的计算方法及网络处理器
CN106027349A (zh) * 2016-04-29 2016-10-12 重庆爱思网安信息技术有限公司 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法
CN106027349B (zh) * 2016-04-29 2019-01-18 重庆爱思网安信息技术有限公司 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法
CN111527485A (zh) * 2017-11-03 2020-08-11 相干逻辑公司 存储器网络处理器
CN111527485B (zh) * 2017-11-03 2023-09-12 相干逻辑公司 存储器网络处理器
CN111417936A (zh) * 2017-12-15 2020-07-14 Ati科技无限责任公司 用于增加加速处理装置的带宽的并行数据传送
CN109144749A (zh) * 2018-08-14 2019-01-04 苏州硅岛信息科技有限公司 一种使用处理器实现多处理器间通信的方法
CN109144749B (zh) * 2018-08-14 2021-07-27 苏州硅岛信息科技有限公司 一种使用处理器实现多处理器间通信的方法
CN109614152A (zh) * 2018-12-06 2019-04-12 青岛镕铭半导体有限公司 硬件加速模块及存储设备
CN109614152B (zh) * 2018-12-06 2022-11-04 镕铭微电子(济南)有限公司 硬件加速模块及存储设备
CN109783423A (zh) * 2019-01-25 2019-05-21 上海兆芯集成电路有限公司 环形总线以及额度分配方法
CN115001627A (zh) * 2022-05-30 2022-09-02 山东省计算中心(国家超级计算济南中心) 一种InfiniBand网络子网管理报文处理方法及系统
CN117714229A (zh) * 2024-02-05 2024-03-15 上海登临科技有限公司 数据传输网络、片上系统及电子设备

Also Published As

Publication number Publication date
US8037224B2 (en) 2011-10-11
US8788732B2 (en) 2014-07-22
US20130339558A1 (en) 2013-12-19
CN101878475B (zh) 2014-05-21
EP2174229A4 (en) 2012-02-15
HK1150084A1 (zh) 2011-10-28
US8065456B2 (en) 2011-11-22
US20080062927A1 (en) 2008-03-13
US20120089762A1 (en) 2012-04-12
US20100318703A1 (en) 2010-12-16
US20080184008A1 (en) 2008-07-31
US8543747B2 (en) 2013-09-24
WO2009017668A1 (en) 2009-02-05
EP2174229A1 (en) 2010-04-14

Similar Documents

Publication Publication Date Title
CN101878475B (zh) 向星形拓扑串行总线接口委托网络处理器操作
KR101279473B1 (ko) 어드밴스드 프로세서
CN110036380B (zh) 用于高速互连中低延迟的双模phy
US8489794B2 (en) Processor bus bridge for network processors or the like
US7991977B2 (en) Advanced processor translation lookaside buffer management in a multithreaded system
US9264380B2 (en) Method and apparatus for implementing cache coherency of a processor
US7509462B2 (en) Advanced processor with use of bridges on a data movement ring for optimal redirection of memory and I/O traffic
US8015567B2 (en) Advanced processor with mechanism for packet distribution at high line rate
US7984268B2 (en) Advanced processor scheduling in a multithreaded system
US20050033889A1 (en) Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
CN103959261B (zh) 网络处理器中的多内核互联
US7461213B2 (en) Advanced processor system using request, data, snoop, and response rings
US7467243B2 (en) Advanced processor with scheme for optimal packet flow in a multi-processor system on a chip
EP1660992A2 (en) Multi-core multi-thread processor
JP4660064B2 (ja) 分散処理システムにおけるロックの実行
CN108604209A (zh) 扁平化端口桥
US9088474B2 (en) Advanced processor with interfacing messaging network to a CPU
WO2009099573A1 (en) System and method for parsing and allocating a plurality of packets to processor core threads
CN100498757C (zh) 高级处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1150084

Country of ref document: HK

C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: American California

Applicant after: Network Logic Microsystems

Address before: American California

Applicant before: NETLOGIC Microsystems

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: RMI CORP. TO: NETLOGIC MICROSYSTEMS INC.

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: California, USA

Patentee after: Network logic I LLC

Address before: American California

Patentee before: Network Logic Microsystems

TR01 Transfer of patent right

Effective date of registration: 20151109

Address after: California, USA

Patentee after: BROADCOM Corp.

Address before: California, USA

Patentee before: Network logic I LLC

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170315

Address after: Singapore Singapore

Patentee after: Avago Technologies General IP (Singapore) Pte. Ltd.

Address before: California, USA

Patentee before: BROADCOM Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140521

Termination date: 20170725