CN101311894A - 多处理器/多内核消息传递机中的推测预取方法和装置 - Google Patents

多处理器/多内核消息传递机中的推测预取方法和装置 Download PDF

Info

Publication number
CN101311894A
CN101311894A CNA200810128793XA CN200810128793A CN101311894A CN 101311894 A CN101311894 A CN 101311894A CN A200810128793X A CNA200810128793X A CN A200810128793XA CN 200810128793 A CN200810128793 A CN 200810128793A CN 101311894 A CN101311894 A CN 101311894A
Authority
CN
China
Prior art keywords
message
kernel
prefetcher
take over
over party
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
CNA200810128793XA
Other languages
English (en)
Other versions
CN101311894B (zh
Inventor
A·孔泽
E·约翰逊
H·加特勒
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN101311894A publication Critical patent/CN101311894A/zh
Application granted granted Critical
Publication of CN101311894B publication Critical patent/CN101311894B/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
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

在一些实施例中,本发明涉及在多处理器/多内核平台中的内核之间的数据预取技术和消息传递技术的新颖组合。在一实施例中,接收方内核具有消息队列和消息预取器。到来的消息同时被写入所述消息队列和所述消息预取器中。所述预取器推测地取得在已接收的消息中引用的数据,以便该数据在该消息在执行流水线中被执行时或之后不久便可用。还描述和请求保护其它实施例。

Description

多处理器/多内核消息传递机中的推测预取方法和装置
技术领域
本发明的实施例通常涉及多处理器/多内核平台上的消息传递,更具体地,涉及内核之间的数据预取技术和消息传递技术的新颖组合。
背景技术
多处理器和/或多内核系统中存在多种使各单独内核能够在单独内核之间发送消息的硬件机制。例如,英特尔IXP2xxx系列的网络处理器具有多种用来将32位消息从一个内核发送到另一个内核的硬件机制。许多微处理器内核也具有推测预取硬件,其将数据从存储器层次结构的一个级取至一个或多个更高级。例如,如果处理器检测到运行于其上的软件以固定间隔(stride)重复地访问数据,该处理器可以推测地取得处理器期望软件下次将请求的数据。
在内核之间传递的消息常包含地址引用(reference)或指针。在现有系统中,接收方内核的执行流水线随需要解引用(dereference)所述指针并从存储单元取得数据。在所述执行流水线中的指令能够被执行之前等待将要获得的数据可能产生较大的延迟。在由Erik J.Johnson和Aaron R.Kunze合著的“IXP 2400/2800 Programming:The Complete Microengine Coding Guide”(英特尔出版社,2003)中记载了消息传递的一种实现。第10章记载了消息传递。
附图说明
通过下述关于本发明的详细说明,其特征和优点将显而易见,其中:
图1是根据本发明的一个实施例、使用消息传递预取的多内核处理器的框图;
图2是根据本发明的一个实施例、用于预取在被传递的消息中引用的数据的示例性方法的流程图;
图3是可在其上实施本发明实施例的多内核处理器的框图;
图4是由一个实施例使用的协议架构的框图;
图5是根据请求保护的主题使用的用于物理互连的装置的框图;
图6A-C是由多个实施例使用的系统的多个实施例;以及
图7示出了根据本发明实施例的四插槽多内核系统。
具体实施方式
本发明的一个实施例是涉及在多个内核之间集成预取和消息传递的系统和方法。与现有系统的情况不同,本发明的实施例避免不适时地从远程物理存储器或另一个处理器的高速缓存获取信息。在本发明的实施例中,当指针被解引用时,数据很可能已经在本地高速缓存中或在前往本地高速缓存的途中。
说明书中对本发明的“一个实施例”或“实施例”的引用是指结合该实施例而描述的特定的特征、结构或特点包含在本发明的至少一个实施例中。因此,在说明书中多处出现的短语“在一个实施例中”并不必然都指同一个实施例。
为了便于说明,阐述了许多具体的配置和细节,以提供对本发明的透彻理解。然而,对于本领域技术人员而言显而易见的是,本发明的实施例无需在此给出的具体细节也可以被实现。此外,为了避免使本发明难以理解,公知的特征被省略或简化。在该说明书中可以给出各种示例。这些仅仅是对本发明的具体实施例的描述。本发明的范围并不限于所给出的示例。
本发明的实施例允许软件将一个或多个内核间消息所指定的物理地址指定到处理器内核。当接收到包含物理地址的消息时,将该消息置于硬件队列中,等待接收方内核上的软件对其使用。当所述消息在队列中时,基于运行在接收方处理器上的代码将很快访问数据的假设,该消息中的地址被发送至硬件预取器以推测地预取该数据。可选择地,所述消息也可以指定将预取的字节数。在取得所述消息后,所述应用通常能够立即访问与所述消息相关联的数据。
在现有系统中,硬件预取器可以连同执行流水线一起使用。流水线中的指令可以令数据被预取,以便在所述指令准备执行时,可以马上获得所述数据。但是,这些预取器需要在试图进行预取之前将指令放入执行流水线中。与之相反,本发明的实施例将预取器集成有内核到内核(内核-内核)消息传递机制,使得来自存储器或其它内核的高速缓存的所需数据比仅使用执行流水线预取器时更快地可用。
当前存在两种类型的消息传递硬件架构。第一种消息传递硬件架构中,消息通过互连(如下文所述的点对点(pTp)互连)被发送到接收方内核,且被入队到接收方内核上的一个或多个硬件队列中。第二种中,消息被发送到单独的硬件单元,在这里它们被排到多个内核之间共享的硬件队列中。例如,IXP2xxx处理器包含可被所有内核访问并能用来在任意组内核之间发送消息的硬件队列单元。本发明在第一种架构中最为有用,这是因为当硬件队列和预取器物理上接近时,它们的耦合更容易实现,然而,这两种架构都可以使用所公开的发明的实施例。对于第一种架构,在图1中示出了示例实施例。图中圈定的数字代表了用于从一个内核向另一个内核发送指针消息的方法的可能的序列。
出于说明的目的,可将消息传递机制称为用于消息传递的“互连”。所述的互连可以是硬件、固件或软件结构,或者可以是三者的任意组合。可以理解平台架构常常规定了互连的配置。
图2是示出图1所示的示例性方法的流程图。下面将依次叙述图1和2。在实现在具有如点对点(pTp)互连架构这样的处理器/内核互连101的平台上的实施例中,(1)在方框201中,发送方内核103利用硬件消息传递机制向接收方内核105发送消息。能够理解,可以利用内核消息传递的各种机制和布局。(2)在方框203中,当接收方内核105接收到消息时,该消息被同时入队到107并发送到预取器109。队列107可以是内核中靠近预取器的一组寄存器或存储器。(3)在方框205中,预取器109发出对共享高速缓存或共享存储器111(取决于所述架构)的存储器引用。高速缓存是分层的,所以必要时可从较低级的高速缓存或共享存储器获得数据。可选地,该消息可以包含应被预取的数据量。(4)在方框207中,由指针引用的数据被置于接收方内核105的本地高速缓存113中。(5)在方框209中,接收方内核105将所述消息从队列107中出队。(6)在方框211中,该指针被解引用,且在高速缓存113中找到该数据以便在执行流水线115中使用。在实施例中,可以使用软件作为消息出队和指针解引用的机制。
在现有系统中,如Intel
Figure A20081012879300111
CoreTM2 Duo处理器这样的双核处理器,每一内核拥有自己的L1高速缓存和共享的L2高速缓存。L1高速缓存有自己的硬件预取器。L1预取器将数据从L2高速缓存预取到L1高速缓存。高速缓存预取器试图猜测将有可能需要什么数据。如果预取未命中,即,数据不在L2高速缓存中,则高速缓存预取器从存储器获得该数据。L2高速缓存具有直接从存储器获取数据的硬件预取器。然而,在现有系统中,这些高速缓存预取器只能与执行流水线一起才能工作。
队列107可由执行流水线115进行轮询,或发起中断处理程序(中断服务例程)以向流水线警告已经接收到消息。在实施例中,可以使用多于一个队列。例如,有些消息可能包含可执行的指令。其它消息可能包含在发送方内核上执行的操作的结果数据。其它消息还可以包含请求接收方处理器完成工作或指示发送方处理器的工作已完成的警告(或中断)。消息可以包含或可以不包含将要预取的地址引用。对应各种消息类型可以实现专门的队列。可以实现一个单独的队列来保存所有消息类型。将可以理解,对单个队列来说,可以使用各种方法来指示将由执行流水线使用的消息的类型。
为了灵活支持存储器指针和非指针消息,软件需要一种为硬件识别该消息是否包含指针的机制。这可以通过针对每个消息由发送方软件在发送消息时设置一标志来指示该消息包含指针来完成。指针识别也可以通过队列自身的属性来实现。例如,特定队列可以只包含带有指针的消息。
当消息发送者有理由相信消息发送时物理存储器中的数据在消息被接收到时仍存在于物理存储器的相同位置中时,本发明的实施例能更为高效地执行。因此,当被在内核之间传递的指针引用的数据具有到物理存储器的长效映射时,本发明效果最佳。同时,使用该特征的软件必须确保由指针引用的数据在可被缓存的存储器中。上述限制在包括操作系统数据结构和网络分组在内的很多环境下都是合理的。
如上所述,可以在平台上实现高速缓存预取器。在一个实施例中,一个或多个内核-内核消息队列107使用附加的预取器109来与执行流水线进行通信。在另一实施例中,可修改现有的硬件预取器以容许内核-内核消息传递预取。可以实现一种类似于现有的直接高速缓存存取系统中所采取的机制。在现有系统中,预取器可以具有针对将要发送到高速缓存层次结构的外发预取请求的未决队列。特定的实现随不同平台而不同。一种将现有的预取器和消息队列连接起来的方法包括一个简单的多路复用器。特别地,被写入消息队列的消息物理地址将简单地继续(通过专用线)至预取器的未决队列。多路复用器在正常预取器请求和那些来自消息队列的“提示(hint)”之间进行仲裁。因为预取器的未决队列包含物理地址请求,所述提示的物理地址简单地变成对高速缓存层次结构的预取请求。
可以理解,有多种方式可以将接口开放给软件,以允许软件配置和/或使用该内核消息预取特性。如果指针消息或非指针消息的确定是所述队列硬件的属性,则可使用控制寄存器或映射到内核的存储器或I/O空间上的寄存器来操控所述接口。如果针对每个发送的消息作出关于该消息是指针消息还是非指针消息的判定,则对软件的接口可以与对队列特性自身的接口相耦合。例如,如果通过指令集中的指令发送消息,可将一个标志指定为该指令的一个额外的操作数。其它的实现选择包括使用发送方内核的本地控制寄存器。
在现有的多内核/处理器系统中,当在内核之间发送包含地址指针的消息且接收方内核解引用该指针时,因为必须从物理存储器或发送方处理器的一致性高速缓存取得数据,所以经常出现流水线停顿。因为将预取与内核消息传递集成使得当解引用指针时,数据更有可能已经在本地高速缓存中,或在前往本地高速缓存的途中,因此,本发明的实施例使得接收方内核的流水线执行更快。
应该注意,一般而言有很多不同的现有方法实现了消息传递(硬件和软件)和预取(常常是硬件),且本发明可以用任意种类的消息传递和预取方案来实现。没有公知的技术将上述技术组合并具备上述的优点。
本发明的一个实施例可在如图3示出的平台上实现。平台300可以包含一个或多个处理器310。所示出的示例性平台300具有两个处理器310a-b。然而,可以理解,平台上能存在任意数目的处理器1-n。所示出的处理器310a-b每个包含两个内核311a-b和311c-d,但可以理解每个处理器可以具有多于两个的内核。在另一个实施例中,可以使用具有多内核的单个处理器。处理器310a-b可以通过前端总线301与也称作北桥的存储器控制中心(MCH)314进行通信。MCH 314通过存储器总线303与系统存储器312进行通信。MCH 314也可通过图形总线305与高级图形端口(AGP)316进行通信。MCH 314可以通过直接模块接口(DMI)总线307与也称作南桥的I/O控制中心(ICH)320进行通信。一些较旧的平台可能使用外围部件互连(PCI)总线在MCH 314和ICH 320之间通信。ICH 320可以通过低引脚数(LPC)总线356耦合到一个或多个部件,如PCI硬盘驱动器(未示出)、如IDE 322、USB 324、LAN 326和音频328这样的遗留部件、以及超级I/O(SIO)控制器356。
处理器310可以是能执行软件的任意类型的多内核处理器,例如微处理器、数字信号处理器、微控制器或类似的部件。
存储器312可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器或任意其它类型的可由处理器310读取的介质。存储器312可以存储用于执行本发明的方法实施例的指令。
例如闪速存储器352这样的非易失性存储器可以通过低引脚数(LPC)总线309耦合到I/O控制器。BIOS固件354通常处于闪速存储器352中,且引导过程将执行来自闪存或固件的指令。
在一些实施例中,平台300是能够进行服务器管理任务的服务器。该平台实施例可以具有通过LPC 309耦合到ICH 320的基板管理控制器(BMC)350。
在其它实施例中,可以使用符合点对点(pTp)互连架构的平台。当前技术发展的一个领域涉及可靠性、可用性和可服务性(RAS)。基于前端总线(FSB)架构的当前系统不允许单个总线部件的热插拔。同样地,当前系统因为要传送初始化值的原因而受到管脚限制的不利影响,并且也由于初始通电配置(POC)值的错误而必须进行多次热启动。
在一个实施例中,点对点(pTp)架构平台支持分层协议方案,这将在下面进一步论述。图4示出了底层网络的高速缓存一致性(cache coherence)协议的抽象视图的一个例子。
图4是一个实施例使用的协议架构。该架构描绘了耦合到网络结构(network fabric)的多个高速缓存代理(caching agent)和本地代理(homeagent)。例如,该网络结构符合分层协议方案,且可以包含链路层、物理层、协议层、路由层或传输层中任一个或全部。所述结构便于点对点网络中从一种协议(本地或高速缓存代理)传输消息到另一种协议。在一个方面,该图描绘了底层网络的高速缓存一致性协议的抽象视图。
图5是根据本文所述发明的实施例而使用的物理互连装置的框图。在一个方面,该装置描绘了用于处理器、芯片组和/或I/O桥接部件的高速缓存一致性的、基于链路的互连方案的物理层。例如,所述物理互连可以由集成设备的每个物理层实施。特别地,物理层提供通过包含两个单向链路的物理互连的两个端口之间的通信。特别地,一个单向链路504从第一集成设备的第一发送端口550a到第二集成设备的第一接收端口550b。同样地,第二单向链路506从第二集成设备的第一发送端口550b到第一集成设备的第一接收端口550a。然而,请求保护的主题并未限制于两个单向链路。本领域技术人员将理解,请求保护的主题支持任何已知的信号传输技术,例如双向链路等。
图6A-C描绘了多种包含一个或多个处理器的点对点系统。请求保护的主题可以包含若干实施例,例如,包含一个处理器606(图6A)、包含两个处理器(P)602(图6B)和包含四个处理器(P)604(图6C)。在实施例602和604中,每一处理器耦合到存储器(M)621,且通过网络结构连接到每个处理器623,所述网络结构可以包含链路层、协议层、路由层、传输层和物理层中的任一个或全部。所述结构有助于点对点网络中从一种协议(本地或高速缓存代理)向另一种协议传输消息。如前所述,网络结构系统支持结合图4-6而描述的任何实施例。
对实施例606来说,单处理器P 623通过对应于分层协议方案的网络结构链路耦合到被标为IO+M+F的图形和存储器控制器625。图形和存储器控制器耦合到存储器且能通过快速外围部件互连(PCI)链路来实现接收和发送。同样地,图形和存储器控制器耦合到输入/输出控制中心(ICH)627。此外,ICH 627通过低引脚数(LPC)总线耦合到固件中心(FWH)629。同时,对一个不同的单处理器实施例来说,该处理器将包含外部网络结构链路。该处理器可以包含多个具有分离或共享的高速缓存的内核,其中每个内核耦合到一个X-bar型路由器和非路由全局链路接口。X-bar型路由器是一插槽中多个内核之间的pTp互连。X-bar是在一种“十字条(cross-bar)”,意指每个部件与其它每个部件之间都有十字链路或连接。这通常比pTp互连链路更快,且可在片上实现,促进了并行通信。因此,该外部网络结构链路耦合到X-bar路由器和非路由全局链路接口。
多处理器系统的实施例包含通过点对点网络631(由处理节点之间的粗线表示)互连的多个处理节点623。为了论述方便,可互换地使用术语“处理节点”和“计算节点”。处理器之间的链路通常是全宽的(或最大宽度),而从处理器到I/O中心(IOH)芯片组(CS)的链路通常为半宽的。每个处理节点623包含一个或多个与关联的存储器621耦合的中央处理器623,所述关联的存储器构成系统主存储器。在替代性的实施例中,存储器621可以物理地合并在一起以组成可被所有处理节点623访问的主存储器。每个处理节点623还可以包括存储器控制器625作为与存储器621的接口。每个处理节点623,包括与其相关联的存储器控制器625,可以在同一个芯片上实现。在替代性的实施例中,每个存储器控制器625可以实现在不同于与其关联的处理节点623的一个芯片上。
每个存储器621可以包含一个或多个类型的存储器件,例如,双列直插式存储模组(DIMM)、动态随机存取存储(DRAM)器件、同步动态随机存取存储(SDRAM)器件、双倍数据速率(DDR)SDRAM器件或其它适用于服务器或一般应用的易失性或非易失性存储器件。
所述系统也可以包括一个或多个输入/输出(I/O)控制器627以向处理节点623和其它系统部件提供接口,使它们访问如闪速存储器或固件中心(FWH)629这样的I/O设备。在一个实施例中,每个I/O控制器627可以耦合到一个或多个处理节点。I/O控制器627和它们各自的处理节点623之间的链路被称为I/O链路。I/O设备可以包括工业标准架构(ISA)设备、外围部件互连(PCI)设备、PCI Express设备、通用串行总线(USB)设备、小型计算机系统接口(SCSI)设备、或其它标准的或专有的适用于服务器或一般应用的I/O设备。I/O设备可以是有线的或无线的。在一个实施例中,I/O设备可以包含无线发射器和无线发射器接收器。
该系统可以是服务器、多处理器桌面计算设备、嵌入式系统、网络设备、或其中多个处理节点通过广域网远程连接的分布式计算设备。
在如图6C所示的实施例中,网络631为处理节点623提供了部分连通性。因此,每个处理节点623直接连接到部分、但可能并不是全部的其它处理节点。处理节点623通过直接连接或间接连接(例如,使用另一个处理器作为媒介)连接到另一个处理节点。
一种由网络631搭载的消息是监听消息,其包含与可影响高速缓存(未示出)中数据项的一致性状态的存储器事务相关的信息。存储器事务指需要访问任意存储器件621或任意高速缓存的事务。当任意处理节点执行存储器事务时,该处理节点在网络621上发出监听消息(或等价地,监听请求),以请求所有其它处理节点验证或更新在各自本地高速缓存中的数据项的一致性状态。当执行直接存储器存取(DMA)时,I/O控制器627也发出和接收监听消息。因此,任何处理节点623和I/O控制器627都可以是一个监听消息的请求节点以及另一个监听消息的目的节点。
当第一处理节点发送监听消息至不直接连接到第一处理节点的第二处理节点时,第一和第二处理节点使用第三处理节点作为转发节点。在这种情况下,第三处理节点作为转发节点用于将监听消息转发至第一和第二处理节点。所述转发可以通过一种扇出(fan-out)机制来执行,该机制复制输入的监听消息并将被复制的消息转发到不同目的地。
图7示出了根据本发明实施例的四插槽系统700。处理器710、720、730和740可以包含任意数目的内核。每个处理器710、720、730和740都具有与之耦合的存储器,分别为715、725、735和745。处理器之间的点线表示pTp互连总线。处理器和其存储器之间的粗体线表示FBD连接。所述处理器中的一些,如该例中的710和730,可以通过pTp互连总线连接到输入/输出中心(IOH)750。IOH 750可以通过如灰线所示多个快速外围部件互连(PCI-e)总线耦合到多个设备(未示出)。IOH 750通过如虚线所示的直接媒体接口(DMI)总线耦合到输入/输出控制中心(ICH)760。ICH 760可以耦合到固件中心(FWH)770和视频图形适配器(VGA)780。
本文所述的技术并不限于任意特定的硬件或软件配置;其可以适用于任何计算、消费电子或处理环境。所述技术可以用软件、硬件或两者的组合来实现。
为了模拟,程序代码可以利用硬件描述语言或另一种基本给出了期望所设计的硬件如何执行的模型的功能描述语言来表示硬件。程序代码可以是汇编或机器语言,或者是可被编译和/或解释的数据。此外,本领域中普遍地以各种形式将软件视为执行动作或产生结果。这种表达方法仅仅是对处理系统执行程序代码以使处理器执行动作或产生结果的简要表述方式。
每个程序都可以用高级过程式或面向对象编程语言来实现,以使其与处理系统通信。然而,如果需要,可以用汇编或机器语言来实现程序。在任何情形下,均可以编译或解释所述语言。
可以用程序指令使采用所述指令编程的通用或专用处理系统执行本文所述的操作。可选择地,所述操作可以由包含用于执行所述操作的硬连线逻辑的特定硬件部件执行,也可通过已编程计算机部件和定制硬件部件的任意组合来执行。此处描述的方法可以以计算机程序产品的形式来提供,所述计算机程序产品可包括其上存储了指令的机器可访问介质,所述指令可用来对处理系统或其它电子设备进行编程来执行所述方法。
程序代码或指令可以存储在如易失性和/或非易失性存储器中,例如存储器件和/或相关联的机器可读的或机器可访问的介质,包括固态存储器、硬盘驱动器、软盘、光存储、磁带、闪速存储器、记忆棒、数字视频盘、数字多用盘(DVD)等,以及更多的如机器可访问生物状态保持存储器这样的特殊介质。机器可读介质可以包含以机器可读的形式存储、传输或接收信息的任意机制,且该介质可以包含有形介质,例如天线、光纤、通信接口等,通过该有形介质,电、光、声或其它形式的编码有该程序代码的传播信号或载波可以传递过去。程序代码可以以分组、串行数据、并行数据、传播信号等的形式传输,且可以以压缩或加密格式进行使用。
程序代码可以在可编程机器上执行的程序中实现,可编程机器例如移动或固定计算机、个人数字助理、机顶盒、移动电话和寻呼机、消费电子设备(包括DVD播放器、个人视频录像机、个人视频播放器、卫星接收器、立体声接收器、有线电视接收器)和其它电子设备,每个都包括处理器、处理器可读的易失性和/或非易失性存储器、至少一个输入设备和/或一个或多个输出设备。程序代码可以应用到使用输入设备输入的数据上以执行所描述的实施例和产生输出信息。输出信息可以应用到一个或多个输出设备上。本领域技术人员可以认识到,所公开的技术主题的实施例可以用各种计算机系统配置完成,包括多内核多处理器系统、小型计算机、大型计算机、以及是普适或微型的计算机或实际可嵌入任意设备的处理器。
尽管操作可以描述成顺序的处理过程,但是有些操作实际上可以并行、并发、和/或在分布式环境中执行,所利用的程序代码存储在本地或远程以便由单或多处理器机器访问。此外,在有些实施例中,可以在不背离本发明公开的技术主题的精神的基础上重新安排操作的顺序。程序代码可由嵌入的控制器使用,或与嵌入的控制器一起使用。
虽然参考示出的实施例描述了本发明,但说明书并非解释为限制性的。各种对示出的实施例的修改和本发明的其它实施例对本发明相关领域技术人员来说是显而易见的,它们都被认为落入了本发明的精神和范围之内。

Claims (27)

1、一种系统,用于在多内核消息传递平台中进行推测预取,该系统包括:
至少一个处理器,所述至少一个处理器中的每一个具有至少一个内核,其中所述系统包括多个内核;
所述多个内核中的接收方内核,其具有本地高速缓存、用于存储接收到的消息的至少一个消息队列、以及消息传递预取器,该消息传递预取器以通信方式耦合到共享高速缓存或共享存储器至少二者之一,并且还耦合到所述本地高速缓存;
互连,用于在所述多个内核之间传递消息;和
所述多个内核中的发送方内核,用于发送消息到所述接收方内核,其中包含存储器引用的消息被发送到所述接收方内核的所述至少一个消息队列和所述消息传递预取器,并且
其中,所述消息传递预取器被配置为推测地取得在接收到的消息中引用的数据,其中所取得的数据在本地高速缓存、共享高速缓存、除所述接收方内核之外的其它内核的本地高速缓存或共享存储器之一中。
2、根据权利要求1所述的系统,其中,所述多个内核中的至少一个内核进一步包括至少一个独立于所述消息传递预取器的执行流水线预取器。
3、根据权利要求1所述的系统,其中,所述多个内核中的至少一个内核进一步包括与所述消息传递预取器处于同一预取器单元中的执行流水线预取器,其中多路复用器在执行流水线预取请求和消息队列预取请求之间作出仲裁。
4、根据权利要求1所述的系统,其中,所述平台包括点对点互连架构,其中消息经互连发送到所述接收方内核,且该消息在所述接收方内核中的一个或多个硬件队列中入队。
5、根据权利要求4所述的系统,进一步包括执行流水线,该执行流水线用于识别何时接收到新的消息,其中,或者由所述执行流水线轮询所述至少一个消息队列以确定新消息是否已到达,或者一旦在所述至少一个消息队列中接收到消息就发起中断来向所述执行流水线通知新消息已到达。
6、根据权利要求1所述的系统,其中,所述消息进一步包括将要预取的字节数。
7、根据权利要求1所述的系统,其中,第一消息队列用于存储包含存储器引用的消息,并且至少另外一个消息队列用于存储不包含存储器引用的消息。
8、根据权利要求7所述的系统,进一步包括用于选择消息队列的模块,该消息队列用来存储包含存储器引用的消息。
9、根据权利要求1所述的系统,其中,使用单个队列来存储包含存储器引用和不包含存储器引用的消息,该系统进一步包括用于识别所存储的消息的类型的模块。
10、根据权利要求9所述的系统,其中,所述用于识别所存储的消息的类型的模块进一步包括与所述消息相对应的标志,所述标志指示消息类型,其中所述标志存储在所述消息或控制寄存器之一中。
11、根据权利要求9所述的系统,其中,所述用于识别所存储的消息的类型的模块进一步包括与所述消息队列相关联的队列属性,该队列属性用于指示所述队列中所有消息的消息类型。
12、一种系统,用于在多内核消息传递平台中进行推测预取,该系统包括:
至少一个处理器,所述至少一个处理器中的每一个具有至少一个内核,其中所述系统包括多个内核;
所述多个内核中的接收方内核,其具有本地高速缓存;
单独的硬件单元,其由所述多个内核共享,用于使消息在至少一个硬件消息队列中入队,所述至少一个硬件消息队列用于为所述接收方内核存储接收到的消息;
消息传递预取器,其以通信方式耦合至所述单独的硬件单元、共享高速缓存或共享存储器至少二者之一、以及所述接收方内核;
互连,其经所述单独的硬件单元在所述多个内核之间传递消息;和
所述多个内核中的发送方内核,其经所述单独的硬件单元向所述接收方内核发送消息,其中包含存储器引用的消息被发送到所述接收方内核的所述至少一个硬件消息队列和所述消息传递预取器,并且
其中,所述消息传递预取器被配置为推测地取得在接收到的消息中引用的数据,其中所取得的数据存储在本地高速缓存、共享高速缓存、除所述接收方内核之外的其它内核的本地高速缓存或共享存储器之一中。
13、根据权利要求12所述的系统,其中,所述多个内核中的至少一个内核进一步包括至少一个独立于所述消息传递预取器的执行流水线预取器。
14、根据权利要求12所述的系统,其中,所述多个内核中的至少一个内核进一步包括与所述消息传递预取器在同一预取器单元中的执行流水线预取器,其中多路复用器在执行流水线预取请求和消息队列预取请求之间作出仲裁。
15、根据权利要求14所述的系统,进一步包括执行流水线,该执行流水线用于识别何时接收到新的消息,其中,或者由所述执行流水线轮询所述至少一个消息队列以确定新消息是否已到达,或者一旦在所述至少一个消息队列中接收到消息就发起中断来向所述执行流水线通知新消息已到达。
16、根据权利要求12所述的系统,其中,第一消息队列用于存储包含存储器引用的消息,并且至少另外一个消息队列用于存储不包含存储器引用的消息。
17、根据权利要求16所述的系统,进一步包括用于选择消息队列的模块,该消息队列用来存储包含存储器引用的消息。
18、根据权利要求12所述的系统,其中,使用单个队列来存储包含存储器引用和不包含存储器引用的消息,该系统进一步包括用于识别所存储的消息的类型的模块。
19、根据权利要求18所述的系统,其中,所述用于识别所存储的消息的类型的模块进一步包括与所述消息相对应的标志,所述标志指示消息类型,其中所述标志存储在所述消息或控制寄存器之一中。
20、一种由机器实现的方法,用于在多内核消息传递平台中进行推测预取,该方法包括:
由发送方内核发送一个消息,该消息包含存储器引用指针且被发送到接收方内核;
由所述接收方内核接收所述消息;
同时使所述消息在消息队列中入队并且将所述消息转发到消息预取器中;
基于所述存储器引用指针,由所述消息预取器发出存储器引用,以获取被引用的存储器;
将所获取的对应于所述存储器引用的数据存储在所述接收方内核的本地高速缓存中;
由所述接收方内核使所述消息从所述消息队列中出队;和
解引用所述存储器引用指针;和
获取存储在所述接收方内核的本地高速缓存中的所述数据。
21、根据权利要求20所述的方法,其中所述数据从本地高速缓存、共享高速缓存、除所述接收方内核之外的其它内核的本地高速缓存或共享存储器之一中获取。
22、根据权利要求20所述的方法,其中,所述消息进一步包括将要预取的字节数。
23、根据权利要求20所述的方法,其中,所述消息预取器是由执行流水线使用的同一个预取器或者未由所述执行流水线使用的单独的预取器二者之一。
24、一种机器可读介质,其具有用于在多内核消息传递平台中进行推测预取的指令,所述指令存储在该介质上,并且在被机器执行时使得该机器:
由发送方内核发送一个消息,该消息包含存储器引用指针并且被发送到接收方内核;
由所述接收方内核接收所述消息;
同时使所述消息在消息队列中入队并且将所述消息转发到消息预取器;
基于所述存储器引用指针,由所述消息预取器发出存储器引用,以获取被引用的存储器;
将所获取的对应所述存储器引用的数据存储在所述接收方内核的本地高速缓存中;
由所述接收方内核使所述消息从所述消息队列中出队;和
解引用所述存储器引用指针;和
获取存储在所述接收方内核的本地高速缓存中的所述数据。
25、根据权利要求24所述的介质,其中,所述数据从本地高速缓存、共享高速缓存、除所述接收方内核之外的其它内核的本地高速缓存或共享存储器之一中获取。
26、根据权利要求25所述的介质,其中,所述消息进一步包括将要预取的字节数。
27、根据权利要求25所述的介质,其中,所述消息预取器是由执行流水线所使用的同一个预取器或者未由所述执行流水线使用的单独的预取器二者之一。
CN200810128793XA 2007-03-30 2008-03-31 多处理器/多内核消息传递机中的推测预取方法和装置 Expired - Fee Related CN101311894B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/731,280 US7937532B2 (en) 2007-03-30 2007-03-30 Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
US11/731,280 2007-03-30

Publications (2)

Publication Number Publication Date
CN101311894A true CN101311894A (zh) 2008-11-26
CN101311894B CN101311894B (zh) 2012-06-06

Family

ID=39744431

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810128793XA Expired - Fee Related CN101311894B (zh) 2007-03-30 2008-03-31 多处理器/多内核消息传递机中的推测预取方法和装置

Country Status (4)

Country Link
US (1) US7937532B2 (zh)
CN (1) CN101311894B (zh)
DE (1) DE102008016178B4 (zh)
TW (1) TWI354230B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901163A (zh) * 2010-07-13 2010-12-01 北京世纪高通科技有限公司 分配消息的方法和装置
CN103227755A (zh) * 2011-09-07 2013-07-31 阿尔特拉公司 使用推测技术的处理器到基于消息的网络的接口
CN103635887A (zh) * 2013-09-23 2014-03-12 华为技术有限公司 缓存数据的方法和存储系统
CN109804354A (zh) * 2016-09-01 2019-05-24 甲骨文国际公司 用于消息队列的消息高速缓存管理
CN111201516A (zh) * 2017-10-12 2020-05-26 Arm有限公司 数据处理系统中的消息传递
CN111625376A (zh) * 2017-04-01 2020-09-04 北京忆芯科技有限公司 通过代理进行队列通信的方法与消息系统
CN112486704A (zh) * 2020-11-27 2021-03-12 中船重工(武汉)凌久电子有限责任公司 一种基于共享存储的多核多处理器同步与通信系统
CN112639741A (zh) * 2018-08-24 2021-04-09 苹果公司 用于控制联合共享的存储器映射区域的方法和装置

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647539B2 (en) * 2007-07-18 2010-01-12 International Business Machines Corporation System and method of testing using test pattern re-execution in varying timing scenarios for processor design verification and validation
US7661023B2 (en) * 2007-07-18 2010-02-09 International Business Machines Corporation System and method for verification of cache snoop logic and coherency between instruction & data caches for processor design verification and validation
US7747908B2 (en) * 2007-07-18 2010-06-29 International Business Machines Corporation System and method for creating different start cache and bus states using multiple test patterns for processor design verification and validation
US7689886B2 (en) * 2007-07-18 2010-03-30 International Business Machines Corporation System and method for predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification and validation
US8127192B2 (en) * 2007-07-18 2012-02-28 International Business Machines Corporation Predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification/validation in interrupt mode
US7739570B2 (en) * 2007-07-18 2010-06-15 International Business Machines Corporation System and method for increasing error checking performance by calculating CRC calculations after multiple test patterns for processor design verification and validation
US8185694B2 (en) * 2008-07-25 2012-05-22 International Business Machines Corporation Testing real page number bits in a cache directory
US9934079B2 (en) 2010-05-27 2018-04-03 International Business Machines Corporation Fast remote communication and computation between processors using store and load operations on direct core-to-core memory
US8966222B2 (en) 2010-12-15 2015-02-24 Microsoft Corporation Message passing in a cluster-on-chip computing environment
US9471532B2 (en) 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
US8706936B2 (en) 2011-11-14 2014-04-22 Arm Limited Integrated circuit having a bus network, and method for the integrated circuit
CN103186491B (zh) * 2011-12-30 2017-11-07 中兴通讯股份有限公司 一种端到端硬件消息传输的实现方法和装置
CN102713852B (zh) * 2012-02-01 2014-06-04 华为技术有限公司 一种多核处理器系统
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
CN104412246B (zh) * 2012-07-02 2017-05-31 马维尔以色列(M.I.S.L.)有限公司 用于从存储器到处理客户端提供复制数据的系统和方法
US9292446B2 (en) * 2012-10-04 2016-03-22 International Business Machines Corporation Speculative prefetching of remote data
DE102016106939B4 (de) 2015-04-17 2024-05-02 Suunto Oy Eingebettetes Rechengerät
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US10652353B2 (en) * 2015-09-24 2020-05-12 Intel Corporation Technologies for automatic processor core association management and communication using direct data placement in private caches
US10284502B2 (en) * 2015-10-12 2019-05-07 Mellanox Technologies, Ltd. Dynamic optimization for IP forwarding performance
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10713202B2 (en) 2016-05-25 2020-07-14 Samsung Electronics Co., Ltd. Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
CN110710172A (zh) 2017-03-29 2020-01-17 芬基波尔有限责任公司 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
CN117971715A (zh) 2017-04-10 2024-05-03 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
CN110892380B (zh) 2017-07-10 2023-08-11 芬基波尔有限责任公司 用于流处理的数据处理单元
CN110915172A (zh) 2017-07-10 2020-03-24 芬基波尔有限责任公司 针对数据中心的接入节点
CN111149329A (zh) 2017-09-29 2020-05-12 芬基波尔有限责任公司 通过多个备用数据路径进行分组喷射的数据中心网络的结构控制协议
CN111164938A (zh) 2017-09-29 2020-05-15 芬基波尔有限责任公司 使用选择性多路径分组流喷射的弹性网络通信
GB2567466B (en) * 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
CN109617832B (zh) * 2019-01-31 2022-07-08 新华三技术有限公司合肥分公司 报文缓存方法及装置
CN112486702B (zh) * 2020-11-27 2024-02-13 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局消息队列实现方法
US11782635B2 (en) 2021-11-12 2023-10-10 Western Digital Technologies, Inc. Method to ensure message arrival before a message pointer

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6738836B1 (en) 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7237068B2 (en) 2003-01-28 2007-06-26 Sun Microsystems, Inc. Computer system employing bundled prefetching and null-data packet transmission
GB0318196D0 (en) * 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7360027B2 (en) 2004-10-15 2008-04-15 Intel Corporation Method and apparatus for initiating CPU data prefetches by an external agent
US7516313B2 (en) * 2004-12-29 2009-04-07 Intel Corporation Predicting contention in a processor
US7350029B2 (en) * 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
US8407432B2 (en) * 2005-06-30 2013-03-26 Intel Corporation Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
US7500031B2 (en) * 2005-11-30 2009-03-03 Broadcom Corporation Ring-based cache coherent bus
US8244718B2 (en) * 2006-08-25 2012-08-14 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries
US8249089B2 (en) * 2006-09-29 2012-08-21 Intel Corporation Methods for pushing address translations mappings to PCI express endpoints

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901163A (zh) * 2010-07-13 2010-12-01 北京世纪高通科技有限公司 分配消息的方法和装置
CN101901163B (zh) * 2010-07-13 2012-10-31 北京世纪高通科技有限公司 分配消息的方法和装置
CN103227755A (zh) * 2011-09-07 2013-07-31 阿尔特拉公司 使用推测技术的处理器到基于消息的网络的接口
CN103227755B (zh) * 2011-09-07 2017-06-16 阿尔特拉公司 使用推测技术的处理器到基于消息的网络的接口
CN103635887A (zh) * 2013-09-23 2014-03-12 华为技术有限公司 缓存数据的方法和存储系统
CN103635887B (zh) * 2013-09-23 2015-07-08 华为技术有限公司 缓存数据的方法和存储系统
CN109804354A (zh) * 2016-09-01 2019-05-24 甲骨文国际公司 用于消息队列的消息高速缓存管理
CN109804354B (zh) * 2016-09-01 2023-08-22 甲骨文国际公司 用于消息队列的消息高速缓存管理
CN111625376A (zh) * 2017-04-01 2020-09-04 北京忆芯科技有限公司 通过代理进行队列通信的方法与消息系统
CN111201516A (zh) * 2017-10-12 2020-05-26 Arm有限公司 数据处理系统中的消息传递
CN112639741A (zh) * 2018-08-24 2021-04-09 苹果公司 用于控制联合共享的存储器映射区域的方法和装置
CN112639741B (zh) * 2018-08-24 2022-06-03 苹果公司 用于控制联合共享的存储器映射区域的方法和装置
CN112486704A (zh) * 2020-11-27 2021-03-12 中船重工(武汉)凌久电子有限责任公司 一种基于共享存储的多核多处理器同步与通信系统
CN112486704B (zh) * 2020-11-27 2024-02-06 中船重工(武汉)凌久电子有限责任公司 一种基于共享存储的多核多处理器同步与通信系统

Also Published As

Publication number Publication date
CN101311894B (zh) 2012-06-06
DE102008016178A1 (de) 2008-10-16
TW200901027A (en) 2009-01-01
US20080244231A1 (en) 2008-10-02
DE102008016178B4 (de) 2011-03-03
TWI354230B (en) 2011-12-11
US7937532B2 (en) 2011-05-03

Similar Documents

Publication Publication Date Title
CN101311894B (zh) 多处理器/多内核消息传递机中的推测预取方法和装置
CN101276286B (zh) 用于加速视频子系统初始化的系统、方法和装置
KR100465583B1 (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법
US7761696B1 (en) Quiescing and de-quiescing point-to-point links
JP5085758B2 (ja) 通信プロトコルにおけるパケット・サイズの削減
US8352656B2 (en) Handling atomic operations for a non-coherent device
US8078862B2 (en) Method for assigning physical data address range in multiprocessor system
JP2000242621A (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
TW200534110A (en) A method for supporting improved burst transfers on a coherent bus
JP2000227908A (ja) 共用介入サポ―トを有する不均等メモリ・アクセス(numa)デ―タ処理システム
US9229868B2 (en) Data recovery for coherent attached processor proxy
JP2000112910A (ja) 非一様メモリ・アクセス・コンピュ―タ・システム及びその操作方法
JP2010250863A (ja) 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
US20190384710A1 (en) System and method for managing transactions
US20220269433A1 (en) System, method and apparatus for peer-to-peer communication
TW201730775A (zh) 在晶片多核心結構上區域地和跨核心地最小化窺探流量
US20070073977A1 (en) Early global observation point for a uniprocessor system
US9367458B2 (en) Programmable coherent proxy for attached processor
WO2023121766A1 (en) System, apparatus and methods for direct data reads from memory
US6085293A (en) Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
US20210349840A1 (en) System, Apparatus And Methods For Handling Consistent Memory Transactions According To A CXL Protocol
US20090006712A1 (en) Data ordering in a multi-node system
US20230342297A1 (en) Multisystem shared memory
JP2009042992A (ja) バス制御装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120606

Termination date: 20200331

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