CN102622329B - 多核计算机中的远程核操作 - Google Patents

多核计算机中的远程核操作 Download PDF

Info

Publication number
CN102622329B
CN102622329B CN201210030338.2A CN201210030338A CN102622329B CN 102622329 B CN102622329 B CN 102622329B CN 201210030338 A CN201210030338 A CN 201210030338A CN 102622329 B CN102622329 B CN 102622329B
Authority
CN
China
Prior art keywords
core
object earth
place
data structure
transmit leg
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.)
Active
Application number
CN201210030338.2A
Other languages
English (en)
Other versions
CN102622329A (zh
Inventor
R·J·布莱克
T·哈里斯
R·C·麦基尔洛伊
K·斯特劳斯
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102622329A publication Critical patent/CN102622329A/zh
Application granted granted Critical
Publication of CN102622329B publication Critical patent/CN102622329B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0815Cache consistency protocols
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

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

Abstract

本发明公开了多核计算机中的远程核操作。描述了具有共享物理存储器的多核处理器。在一实施例中,发送方核向目的地核发送存储器写请求,使得目的地核可对该请求采取动作,如同该请求源自目的地核那样。在一示例中,一数据结构在共享物理存储器中被配置,并且被映射成对于发送方核和目的地核是可访问的。在一示例中,共享数据结构被用作发送方核与目的地核之间的用于使用存储器写请求来承载数据的消息通道。在一实施例中,使用共享物理存储器来启用一通知机制,以便通过更新通知数据结构来向目的地核通知各事件。在一示例中,通知机制在目的地核触发通知进程,以告知通知的接收进程。

Description

多核计算机中的远程核操作
技术领域
本发明计算机技术,尤其涉及多核处理器。
背景技术
多核处理器越来越广泛,且在许多应用领域中被用于给出性能增益,其中软件进程被并行化使得它们在多个核上同时运行。每个核可被认为是执行对指令的读取和执行的处理器的一部分;例如,每个核可以是单个计算系统内的中央处理单元(CPU)。一般而言,单核处理器一次只能处理一个指令序列。多核处理器具有两个或更多的独立核,这些独立的核可在诸如芯片或芯片封装之类的单个物理器件上被提供。多核可能具有或可能不具有对共享物理存储器的访问,但本申请关于确实具有共享物理存储器的多核处理器。
一个或多个共享物理存储器可用于允许多核之间的通信,并且可以是随机存取存储器(RAM)或其他合适的存储器的块。通常提供分层结构的高速缓存来加速从核到存储器的存储器访问。通过使用互连设备,核、高速缓存和存储器通常彼此相连。然而,以此方式使用共享物理存储器带来技术障碍。例如,各高速缓存之间的相干性通常使用高速缓存相干性协议来维护。然而,高速缓存相干性机制在计算上是昂贵的,且使用有价值的互连资源。
以下描述的各实施例不限于解决使用共享物理存储器的已知多核处理器的任何或全部缺点的实现。
发明内容
下面呈现了本发明的简要概述,以便向读者提供基本理解。本发明内容不是本公开的详尽概述,并且不标识本发明的关键/重要元素,也不描述本发明的范围。其唯一的目的是以简化形式呈现此处所公开的精选概念,作为稍后呈现的更详细的描述的序言。
描述了具有共享物理存储器的多核处理器。在一实施例中,发送方核向目的地核发送存储器写请求,使得目的地核可对该请求采取动作,如同该请求源自目的地核那样。在一示例中,一数据结构在共享物理存储器中被配置,并且被映射成对于发送方核和目的地核是可访问的。在一示例中,共享数据结构被用作发送方核与目的地核之间的用于使用存储器写请求来承载数据的消息通道。在一实施例中,使用共享物理存储器来启用一通知机制,以便通过更新通知数据结构来向目的地核通知各事件。在一示例中,通知机制在目的地核触发通知进程,以告知通知的接收进程。
通过结合附图参考以下详细描述,可更易于领会并更好地理解许多附带特征。
附图说明
根据附图阅读以下详细描述,将更好地理解本发明,在附图中:
图1是两个多核计算机的示意图,其中一个多核计算机具有共享存储器而另一个没有;
图2是多核计算机的示例核的示意图;
图3是多核计算机的另一示例核的示意图;
图4是具有分层高速缓存和共享物理存储器的多核计算机的示意图;
图5是在多核计算机中各核之间发送存储器写请求、接收该指令并执行它的方法的流程图;
图6是用于与图5的方法一起使用的配置过程的更多细节的流程图;
图7是发送存储器写请求的方法的流程图;
图8是标识目的地核的方法的流程图;
图9是读取由存储器写请求先前更新的数据的方法以及当不再需要从另一个核接收的数据时的方法的流程图;
图10是从远程核接收存储器写请求的方法的流程图;
图11是通知进程的流程图;
图12是在接收方核用于使用轻推来实现通知进程的一过程的流程图;
图13示出可在其中实现本文所描述的远程存储器写入以及通知进程的各实施例的示例性的基于多核计算的设备。
在各个附图中使用相同的附图标记来指代相同的部件。
具体实施方式
下面结合附图提供的具体实施方式旨在作为本发明示例的描述,并不旨在表示可以构建或使用本发明示例的唯一形式。本描述阐述了本发明示例的功能,以及用于构建和操作本发明示例的步骤的序列。然而,可以通过不同的示例来实现相同或等效功能和序列。
虽然在本文中将本发明的示例描述并示出为在具有共享物理存储器而不具有高速缓存相干性的多核计算机系统中实现,但是所描述的系统只是作为示例而非限制来提供的。本领域的技术人员将理解,本发明的示例适于在各种不同类型的多核计算机系统(包括具有高速缓存相干性的那些)中应用。
图1是两个多核计算机101、104的示意图,其中一个多核计算机具有共享存储器而另一个没有。第一多核计算机101包括两个节点100、102,其各自具有核106以及高速缓存108。如图所示,每一节点具有其自己的存储器110,且这些节点使用网络接口112进行通信。作为对比,这里所描述的实施例使用具有共享物理存储器的、诸如图1中被示作计算机104的多核计算机。计算机104具有两个核114,其各自具有高速缓存116。这些核共享单个物理存储器118,该物理存储器118可以是随机存取存储器(RAM)或其他合适类型的存储器。这些核可以是不同的类型,例如,有些可以是为诸如图形处理等特定任务设计的,而有些可以是为通用计算设计的。
由于各种原因,将数据写入和写出物理存储器118是耗时的。例如,每个核114可作为与物理存储器118在物理上位置独立的芯片来提供。为了允许更快的数据访问,每个核可具有相关联的高速缓存116。尽管在图1中示出每一核仅一个高速缓存,但实际上可以存在采用分层结构的多个高速缓存,以便增加可用的高速缓存能力。使用高速缓存使得数据访问能被加速,但这也意味着在某些情况下,从高速缓存访问的数据可能不是最新的。为了使得最新近的数据能被使用,先前已经使用了高速缓存相干性机制。高速缓存相干性机制可能需要大量的互连资源。在某些情形中,高速缓存相干性机制可使用多达30%的多核计算机的功率和互连资源。
图2是多核计算机的示例核的示意图。为清楚起见,没有示出核的许多常规组件。核包括一个或多个寄存器202,寄存器202包括为允许实现如下文参考图11和12更详细地描述的通知进程而提供的多个通知控制寄存器204。核还包括扩展的转换后备缓冲器206(TLB),该扩展的转换后备缓冲器206被扩展以使得用于标识多个远程核中的哪一个将是发送进程的目的地核的进程能够实现。可选地,在通知被保护的情况下,提供通知白名单(NWL)208供在实现该通知进程时使用。这将在本文稍后更详细地描述。可选地,提供了线程转换缓冲器210(TTB),并且同样可选地,提供了通知处理单元212。图3是多核计算机的另一示例核300的示意图。为清楚起见,没有示出核的许多常规组件。该核包括寄存器302,该寄存器302按照与上述对图2的描述同样的方式包括通知控制寄存器304。提供了转换后备缓冲器306以及单独的通信转换缓冲器(CTB)308,该通信转换缓冲器(CTB)308被用于使得用于标识多个远程核中的哪一个将是发送进程的目的地核的进程能够实现。如上文参考图2所描述的,还可提供通知白名单310。可选地,提供了线程转换缓冲器312(TTB),并且同样可选地,提供了通知处理单元314。
图4是具有分层高速缓存和共享物理存储器的多核计算机的示意图。在这一示例中,存在四个核400、402、404、406(但这并不是必需的)以及分层高速缓存结构。可以提供两个或更多的核。每个核具有一级高速缓存。例如,核1400具有一级高速缓存408,核2具有一级高速缓存410,核3具有一级高速缓存412,以及核4具有一级高速缓存414。在这一示例中,提供了两个二级高速缓存416和418;每个二级高速缓存都由两个一级高速缓存所共享。还提供了由二级高速缓存416、418所共享的三级高速缓存420。三级高速缓存420与物理存储器422通信。图4中所示的分层高速缓存结构仅为示例,并且可以以每一级处不同数量的高速缓存以及高速缓存共享的不同安排来使用其他级的高速缓存结构。每个核在物理上最接近于它的一级高速缓存,并且由于芯片上的空间要求这限制了一级高速缓存的物理大小。更高级的高速缓存与核距离更远,因此在物理上可以更大。随着离核的距离增加,高速缓存与核之间的通信所花费的时间也增加。各核、高速缓存以及存储器通过互连来连接,且该互连被用于在它们之间移动数据。使用高速缓存相干性机制的多核计算机经由该互连在分层高速缓存结构的各分支之间发送数据和元数据,以便将最新数据提供给各核处的进程。跨分层高速缓存结构的互连发送数据和元数据是耗时、复杂且资源密集的。
在一实施例中,在多核计算机处不提供高速缓存相干性机制。例如,图4中的核4406可访问值存在于高速缓存414中的存储器位置,而核1可访问值也存在于高速缓存408中的相同存储器位置。如果核4对该存储器位置进行写,则在没有高速缓存相干性的情况下,核1就不能确信当它从其高速缓存408中读取时看到该新的值。通过使用如现在参考图5所描述的在各核之间发送存储器写请求的进程,确保了最新的数据,而无需高速缓存相干性。例如,图4中的箭头424以高层次示出了这一进程。如果核1400处运行的进程从核4406处运行的进程取得输入,则核4可被配置成向核1400的一级高速缓存发送存储器写请求。这由箭头424示出。存储器写请求在高速缓存1408处被接收,且可被解释为直接从核1400所接收的存储器写。以此方式,来自核4处运行的进程的数据按简单且有效的方式被提供给核1。存储器写请求可用于在共享物理存储器处的数据结构中高效地构建消息通道。获得了性能优点。例如,提供了使用发送方核和目的地核之间的单个底层消息来操作的快速路径消息发送操作。这降低了个体通信上的开销。这也维护了该实现方式内的局部性,使得发送方核向目的地核的发送不涉及某一其他核。
在另一实施例中,在多核计算机处提供了高速缓存相干性机制,诸如图4所示。在该情况下,可使用与上述在各核之间发送存储器写请求相同的进程。在该情况下,发送存储器写请求的进程使得高速缓存相干性机制上的负担降低,且这给出了性能优点。
参考图4所描述的示例使用单个共享物理存储器。然而,在使用具有超过一个共享物理存储器的架构的情况下,在各核之间发送存储器写请求的进程以及本文描述的其他进程同样可适用。例如,每插槽一个存储器的非均匀存储器架构(NUMA)。
图5是在多核计算机中的各核之间发送存储器写请求、接收该指令并执行它的方法的流程图。该方法包括发送方核处的各步骤且还包括目的地核处的各步骤。
在由多核计算机中两个或更多的核所共享的物理存储器处配置一数据结构。该数据结构与发送方核以及目的地核(这两个核都在多核计算机中)相关联500。数据结构可以是软件用于在发送方核与目的地核之间建立消息通道的任何方便方法。关于这一配置过程的更多细节在下文参考图6给出。
使用互连将存储器写请求从发送方核发送504到目的地核。以此方式,对数据结构的更新可作为从发送方核到目的地核的存储器写请求来发送。在发送方核处执行的用于实现发送存储器写请求的各功能步骤的示例在下文参考图7描述。
在目的地核处接收506存储器写请求。可被执行以读取由存储器写请求在目的地核处先前更新的值的各功能步骤的示例在下文参考图9描述。
在目的地核处执行508存储器写请求,如同该存储器写请求源自目的地核那样。即,存储器写请求是从目的地核执行的。由于存储器写请求是从目的地核写入的,因此更新的可见性对于目的地核是相干的。在某些示例中,这是通过将值写入目的地核的本地高速缓存(一级高速缓存)来完成的,使得它对于目的地核处运行的各进程是可见的。其他示例在本文档中稍后参考图10来描述。
可选地,目的地核可指示它已完成了处理已发送给它的值。在该情况下,接收方核执行(510)“数据已完成”指令以指示不再需要该值。可将该值从接收方核的本地高速缓存中删除(512),而无需将该值写出至共享物理存储器。
图6给出配置消息通道的过程的更多细节。发送方核以及目的地核处的操作系统内核将物理存储器的公共区域映射到这些核上运行的各进程的地址空间。例如,当在两个进程之间要使用消息通道时,则物理存储器的公共区域被映射到这些进程的虚拟地址空间。物理存储器的公共区域包括作为图5的方法的一部分来形成的数据结构。数据结构可采取各种形式。例如,它可以是环形缓冲区、存储器块、向量、队列或堆、或其他数据结构。操作系统数据结构随后被更新以配置消息通道,例如以便指示在发送方核处写入数据结构的任何数据都要被发送到目的地核。操作系统还可配置:例如,在发送方核处数据结构可被写入但不被读取,而在目的地核处,数据结构可被读取但不被写入。用于使用通道来发送消息以及用于实现通知的各操作随后可使用无特权代码来执行,也被成为用户模式。以此方式,常见情况的操作可在用户模式中执行。例如,这允许消息从用户模式中被发送且被传递到目的地核,而无需目的地核上的内核模式中断。
许多消息通道可使用图6的过程来建立,且用于发送存储器写请求和通知(如以下描述的)。以此方式,该过程对于大量通信通道是有效的。例如,以允许系统进程与该系统中的其他进程进行通信。
现在描述伪代码操作,这些伪代码操作提供了如何可实现图5的发送和接收进程的各功能示例。在实践中,某一实现可改编现有指令以执行这些功能。例如,通过将前缀添加在现有指令之前、或通过标记虚拟或物理存储器的特定页来指示对它们的操作应按某一方式来执行以实现此处描述的功能。处理器状态标志也可用于指示要被执行以实现此处描述的功能的存储器操作。
某一实现可要求由这些伪代码操作所访问的存储器位置不被多核处理器处可能正在进行的其他进程的普通存储器读和写并发地访问。这样的并发访问可被认为是竞争条件的形式。
参考图7来描述伪代码数据_发送(data_send)操作700。这可用于实现将存储器写请求从发送方核发送到目的地核的进程(见图5的步骤504)。这一操作可以取两个自变量:v_addr和val。v_addr是在发送方核的虚拟存储器中表示数据结构的地址,而val是要由存储器写请求写入的值。
发送方核可按各种方式获取“val”。现在给出各示例:一个实现可从一组处理器寄存器的内容中取得“val”。一替换实现可从对于发送方核可访问的存储器的内容中取得“val”,存储器的内容诸如从发送方核的高速缓存的观点来看“v_addr”的当前内容。一实现可以对v_addr和val施加约束,诸如v_addr必需与高速缓存行的开始对齐,或val的大小必需是完整的高速缓存行,或val的大小以及v_addr的对齐使得在较大范围的地址上不需要读-修改-写来实现该写入。
在发送方核处,一进程可通过对v_addr执行702地址转换和保护检查来实现这样的数据_发送(data_send)操作,以获取数据结构在物理存储器中相关联的物理地址p_addr。这是使用转换后备缓冲器实现的。该发送方核进程查找704目的地核以寻找v_addr。关于这一查找的更多细节在下文参考图8给出。随后,在消息通道上将远程_写(p_addr,val)(remote_write(p_addr,val))消息发送到目的地核。
该发送方核进程查找704目的地核以寻找v_addr(见图8的框800)。该查找可以按多种方式来实现。在一个示例中,在每个核处使用802缓冲器以高速缓存控制元数据。该缓冲器可被称为通信转换缓冲器(CTB)。控制元数据可包括目的核或目的地高速缓存的标识符。或者,控制元数据可包括目的地软件线程的标识符以及用于将该软件线程标识符转换成目的地核或目的地高速缓存的标识符的单独机制(线程转换缓冲器TTB是执行该第二映射的一种方式)。CTB中的查找可与转换后备缓冲器查找并行进行806。如果在CTB中没找到808条目,则可生成810异常并且将执行切换到操作系统内核。随后操作系统内核能够使用软件管理的数据结构来找到适当的控制元数据并且将其安装在CTB中。随后可重新执行816失败的指令。在另一示例中,如果在CTB中没找到条目808,则CTB可由硬件812从软件维护的数据结构中填充。在另一示例中,使用扩展的转换后备缓冲器(扩展的TLB)804。例如,TLB被扩展以包括控制元数据。在该情况下,图7的步骤702和704被集成为TLB查找的一部分。
通过配置CTB和/或TLB,系统软件能够控制哪些进程可以进行通信。受保护的进程间通信被实现,这意味着可在不同进程之间发送消息,而不是仅在同一进程中操作的各线程之间发送消息。这使得各进程能够被用于实现各系统功能,如在多内核或微内核操作系统中一样。
参考图9来描述伪代码数据_接收(data_receive)操作900。这可用于实现读取由存储器写请求在目的地核处先前更新的数据的进程(见图5的步骤506和508)。数据接_收操作900取一个自变量v_addr,该自变量是在接收方核的虚拟地址空间中表示数据结构的地址。目的地核处的该进程对v_addr执行地址转换和保护检查902,以获取实现消息通道的数据结构在共享存储器中的物理地址p_addr。该进程或者从本地高速缓存中或者取回p_addr的内容并放入本地高速缓存,来返回904p_addr的内容。
参考图9来描述伪代码数据_已完成(data_done)操作906。这可用于实现用信号通知数据不再被某一进程需要的进程(见图5的步骤510和512)。数据_已完成取一个自变量v_addr。对v_addr执行地址和转换检查908,以获取物理地址p_addr。p_addr的内容在目的地核的本地高速缓存中被标记为干净的。p_addr的内容则不需要被写出到存储器。
参考图10来描述伪代码远程_写(remote_write)操作1000。这可用于实现在目的地核处执行存储器写请求的进程(见图5的步骤508)。远程_写取两个变量:p_addr以及要被接收到的存储器写请求写的值。如果在本地于目的地核的一高速缓存中存在p_addr,则被高速缓存的值被更新为val1002。如果本地于目的地核的高速缓存中不存在p_addr1004,则进行以下操作之一:将写转发1006到下一级的高速缓存存储器层级,作为对p_addr的写入;或者,可能通过收回(evict)某一其他行,在本地于目的地核的高速缓存中分配1008空间,由此将p_addr插入到本地于目的地核的该高速缓存。某一实现要求用于在这两个替换方案之间进行选择的策略;在它们之间进行选择涉及以下两者之间的折衷:在数据到达时在目的地核上消耗高速缓存空间(无需知道该数据是否在从高速缓存中被驱逐之前将被读取),(在数据不存储在高速缓存中,但数据随后被访问的情况下)在目的地核上招致高速缓存未命中。现在给出策略的两个示例。“默认转发”策略是:如果存在高速缓存条目则更新该高速缓存条目,否则,将该更新转发到存储器。如果期望一个或多个位置是远程_写请求的目标,则软件可使用常规的预取或读取指令来将该一个或多个位置带入高速缓存中。“默认缓冲”策略是:如果目的地线程正在运行,则在高速缓存中对更新进行缓冲,如果目的地线程不在运行,则将该更新转发到存储器。这需要(i)将目的地-线程-ID添加到远程_写请求的内容,以及(ii)将当前-线程-ID状态寄存器添加到该核。“默认缓冲”的变体是将由远程_写请求所使用的高速缓存空间限制为高速缓存的子集;例如,在4路组相联高速缓存中,远程_写请求可被约束为将未被缓冲的数据写入各路中的一路。
现在描述使用如图5中所建立的共享存储器中的数据结构的通知进程。该通知可用于各种不同的目的,例如,用于指示是时候执行垃圾收集、或是进出退出的时候、或给定的消息通道需要注意。在另一示例中,通知可用于唤醒休眠的核或使核断电来作为节能进程的一部分。该通知进程可与此处所描述的向远程核发送存储器写请求的进程结合使用,因此该通知进程可被称为“远程通知”进程。用于通知的存储器区域与普通存储器并且与消息传递存储器区域相区分。用于实现消息通道的相同技术被用于递送通知、发送“远程_通知(remote_notify)”请求而不是“远程_写”请求。
通知数据结构被配置在多核计算机的共享物理存储器处。向参与通知方案的每个核通知1100该通知数据结构。这在配置阶段按类似于以上参考图6所描述的方式来实现。在一示例中,通知数据结构保持的位比特向量,每一位用于指示不同的条件。高速缓存行大小的向量可能是足够的;如果需要更多位,则可使用多个向量来建立分层结构。还可使用其他类型的数据结构。专用通知高速缓存可用在每一核处,以保持通知数据结构的内容(而不是使用正常数据高速缓存条目)。可以这样做以避免对性能重要的数据高速缓存的修改,但这不是必需的。
在发送方核处,获取1102与事件集中的哪个事件已发生有关的信息。该信息被压缩成紧凑的低层表示。例如,该信息可包括消息已在其上被发送的消息通道的列表,以及该紧凑的底层表示可包括位向量,每一位与一组消息通道相关联。
可选地,通知白名单由发送方核检查1104。这使得受保护的通知方案能够被实现,稍后将更详细地描述该方案。在一个实现中,通知白名单包括一系列(addr,val)对,每一对指示:只要远程_通知请求中所携带的值仅包含“val”中所设置的位,则该核执行对地址“addr”的通知是有效的。
如参考图5所描述的,发送方核使用所建立的消息通道将存储器通知请求从发送方核发送1106到目的地核。存储器通知请求是写入表示事件集中的哪一个事件已发生的值。存储器通知请求在目的地核处被接收1108,且如同它是源自目的地核那样被执行1110,以便通过逻辑“或(OR)”操作来更新通知数据结构。逻辑“或”操作是在由存储器通知请求所指定的值与通知数据结构中的现有值之间进行的。这使用与哪些事件已发生有关的信息来更新通知数据结构。如果通知数据结构的地址在目的地核处被高速缓存,则更新1112发生在该高速缓存处。也可使用其他逻辑操作,包括但不限于,逻辑“与(AND)”、“异或(XOR)”。
如果通知数据结构的地址在目的地核处没有被高速缓存,则将更新1114转发到存储器。注意,存储器通知请求与存储器写请求不同地被对待。这是因为存储器通知请求要求请求中所携带的值(“val”)要使用逻辑或操作与存储器的现有内容组合,而不是简单地被转发到存储器而不处理。各种机制对于执行这一工作是可能的。给出两个示例。首先,核可使用所有位被设置为1的二进制值来代替“val”。该值可被转发到存储器以代替“val”。这可导致用信号发出伪通知,但不导致丢失真实通知。第二,核可包括负责将“val”与存储器的现有内容组合的通知处理单元。通知处理单元访问机器的存储器系统,从存储器中读取当前值,将其与“val”组合,并且写入所得值。
在这一示例中,发送方核能够向目的地核通知关于事件集中的哪个事件已经发生。这是通过更新目的地核能够监视的通知数据结构来实现的。如果目的地核正忙且没有监视通知数据结构,则它会错过事件。在另一实施例中,当通知被接收时,目的地核被轻推(nudge)或被积极地迫使以调用通知功能。
为了实现“轻推”通知方案,可在目的地核处使用通知寄存器。在一示例中,提供了四个通知寄存器。这些通知寄存器被配置1200成保持监视标志、掩码、受监视的区域、以及通知目标功能。掩码指示通知机制是否应执行“轻推”操作。掩码和受监视的区域指示哪些特定通知应导致“轻推”发生。通知目标功能是要被积极地调用以便在事件发生时轻推目的地核的任何功能。
参考图12,当通知从发送方核被接收1202时,目的地核检查其监视标志。如果设置了标志,且如果通知的目的地地址在受监视的区域中,且如果通知的值与掩码的逻辑“与”为非零,则执行轻推。为执行轻推,核清除监视标志1204,原子地读取并清除受监视的区域的内容,并且使用受监视的区域的先前内容作为参数来调用目标通知功能。监视标志随后被重置1206,且过程返回至等待通知1202。
目的地核处的线程可与许多不同的消息发送者进行交互,且通过使用远程通知进程就可能避免要求目的地核线程轮询大量消息通道。每一轮询操作将要么要求对主存储器的访问,要么要求保持消息通道的头部的本地高速缓存行。
通知进程也可在高速缓存相干的硬件上实现。在这一情况下,受监视的地址是一个或多个存储器位置,且相干性消息被用于触发通知。目的地核以共享或排他模式来保持包含受监视的区域的行。当目的地核丢失该行时,目的地核在补偿(back-off)延迟之后再次取回该行,并且评估是否需要递送通知。(这可通过扩展正常的高速缓存或作为单独特殊情况的单条目高速缓存来完成)。总之,高速缓存相干性机制在某些实施例中可用于互连多个核。在目的地核处,当通知数据结构的高速缓存相干性无效被注意到时,对于通知数据结构可从目的地核发送一取回。
如上所述,通知白名单可选地被用于实现具有保护的通知方案,借此发送者能够在特定位置内仅设置特定一组位。这可在以下情况下使用:发送者和目的地是分开的进程(而不是相同进程内的各线程),或多个不同的发送者进程被用于向相同的目的地进程发送通知。在这两种情况下,防止发送者能够任意地设置通知是可能的。例如,操作系统安排发送者映射通知地址(通知数据结构的地址)而无需用户模式访问。每个核保持新的“通知白名单”(NWL),该通知白名单包括与发送者相关联的软状态,该通知白名单列出准许该发送者发送到的(地址、掩码)对。白名单最初为空,且在线程转换时被清除。在通知_发送(notify_send)操作上,搜索NWL以寻找目标地址,且将通知值与可允许的掩码相比较。如果存在未命中,或如果被通知的值没有包含在可允许的掩码内,则发送者上出现异常。
与CTB一样,发送者上的操作系统确定通知是否被允许,且如果被允许,则将条目添加到NWL中。以此方式,使CTB和NWL保持分开,因为CTB处理诸如页等聚集区域,而NWL处理个体地址。可提供公共指令,以单个步骤来清除这两者。
在另一实施例中,NWL通过操作系统将经准许的通知位存储在对于通知发送者只读的存储器中来实现,并且CTB或扩展的TLB为该页存储通知存储器的目的地核以及物理地址(除了NWL存储器的物理地址以外)。当发送方核试图将通知写入该页时,对应的NWL高速缓存行首先被取回,逻辑“与”操作被执行,且所得通知位随后作为远程_通知_请求移动到目的地核。
可选地,某一实现可将虚拟地址连同物理地址或代替物理地址,放置在远程_写和远程_通知请求中。在“经接收者转换的”实现中,远程_写和远程_通知请求仅携带虚拟地址。转换和保护检查在远程写进程(1002)或远程_通知进程(1110)之前在目的地核处被执行。这样的实现可在数据_发送和通知_发送操作中省略地址转换和保护检查。这样的实现可将远程_写和远程_通知操作约束为仅在对共享数据结构具有相同虚拟存储器映射的各进程之间发生。
可选地,目的地核可向发送方核指示:它已经完成了处理诸如远程_写请求和远程_通知请求之类的请求。目的地核C1可向发送方核C2发送响应消息。在接收到响应消息时,核C2可以确信请求消息中所指定的存储器更新对于核C1处运行的进程是可见的。在一个实施例中,自动地将响应发送给所有请求。在另一实施例中,核C2指示是否需要响应。核C2可使用各响应通过在发出后续请求之前要求对早先请求的响应,来提供一系列远程_写和远程_通知请求之间的排序。核C2还可使用各响应经由远程_栅栏(remote_fence)操作来提供远程_写和远程_通知请求以及其他进程之间的排序(以下描述)。
本文所描述的远程写进程和远程通知进程可与机器内诸如线程的调度、线程的预清空、线程的迁移之类的操作系统功能集成。这在可随时间在若干进程之间对核进行复用的多程序机器中是有益的。现在给出关于此的更多细节。
发送者T1的预清空或迁移
在预清空T1之后,各进程在切换到不同保护域中的线程之前清除CTB和NWL。CTB和NWL保持软件状态,该软件状态可在下次T1运行时被重建。
在迁移之后,确保消息不被重新排序是可能的。例如,假设T1从核C-旧(C-Old)迁移至核C-新(C-New),且T1与核C2上的T2进行通信。该实现可规定在完成从C-旧上的T1接收到的消息之前,T2不处理从C-新上的T1接收到的消息。在一示例实现中,可能足以推迟重新调度不同核上的线程直到实现特定的延迟已经过去(例如,该实现内可缓冲的最大消息数与处理每一消息可能需要的最大时间的乘积)。该限度是可接受的,因为处理存储器_写_请求(memory_write_request)和存储器_通知_请求(memory_notify_request)消息不涉及软件处理程序的执行。该延迟可经由新的“远程_栅栏”操作来暴露给软件,该新的“远程_栅栏”操作或者(i)延迟直到将确保所有消息要被处理,或者(ii)与调用者的CTB中的每一远程核进行通信并且在远程核已经完成了处理来自发送者的所有消息时接收响应。在替换实现中,“远程_栅栏”操作使用响应消息来实现:“远程_栅栏”操作延迟直到已经从所有已发送的请求接收到响应。
接收者T2的预清空或迁移
注意到在预清空T2之后不要求特殊工作;远程_写和远程_通知消息可继续到达且由最后运行T2的核来处理(更新主存储器而不是高速缓存)。这在T2阻塞以等待来自T1的数据时尤其可能发生,因此可能期望允许该转发继续一段时间,预期着T2将在相同的核上被恢复(而不是向运行T1的核通知T2现在已被预清空)。
如果T2从C-旧迁移至C-新,则安排未丢失的消息是可能的。消息在从C-旧转发到主存储器的情况下可能被丢失,而C-新具有本地高速缓存中的相同位置的非相干副本。因此,接收者可安排任何发送者知晓接收者的新位置。现在描述取决于TTB(线程转换缓冲器)是否被使用的两个替换实现。
没有TTB的迁移:这一问题类似于改变虚拟-物理页转换(实际上,CTB按照同TLB高速缓存与物理存储器中的虚拟页位置有关的信息相同的方式来高速缓存与线程位置有关的信息)。可使用与TLB关闭(TLBshoot-down)类似的方法来支持线程迁移。在C-新上恢复接收者T2之前,操作系统执行以下过程:
标识可能正在运行对T2是发送者的线程的核的集合(例如,从被维持以供CTB未命中处理程序使用的信息中,或从当设置T1和T2之间的共享存储器时所维护的数据结构中)。
向这些核发送处理器间中断(IPI)。
IPI处理程序对与T2共享的页的CTB条目进行转储清除,并且执行“远程_栅栏”以确保刚好在IPI之前发送的消息在IPI之后所发送的任何消息之前被接收。
带有TTB的迁移:TTB提供各线程ID(例如,T2)与各核ID(例如,C-新)之间的间接层,因此迁移需要改变TTB中的映射而不是CTB条目中的映射。替换TTB实现可提供各TTB之间的硬件相干性。
在一替换实现中,发送方核处所需的TLB、CTB或TTB更新可通过以下操作来执行:将TLB、CTB或TTB与TLB、CTB或TTB是其高速缓存的存储器中的操作系统配置数据结构的地址相关联,以及将该配置数据结构的远程_写_请求从正执行迁移的核发送到发送方核。因此,TLB、CTB或TTB将按发送方核立即可见的方式被更新,而无需向发送方核发送中断。
对发送者T1处的存储器配置的改变
操作系统可重新配置发送者T1处的存储器,使得发送者不再具有对物理页的写访问权。例如,操作系统可移除T1对物理页面的写许可,或者操作系统可改变虚拟-物理地址转换,使得给定的虚拟页映射到一不同的物理页。在完成这样的重新配置之前,操作系统可使用“远程_栅栏”以确保发送者T1先前发出的写在该重新配置发生之前已经完成。
对线程的调度
在多程序系统中,在一个核上运行的操作系统知道分配给该核的给定线程何时变得可运行是有用的。通知机制的扩展可用于通过以下方式来提供该信息:允许向T2发送的通知隐式地用信号向操作系统表示T2已准备好运行。
使用该扩展,每个核除了上述用户模式机制以外还具有内核模式通知机制。另外,每一线程具有操作系统分配的线程ID,且该ID被包括在向该线程所发出的“远程_通知”消息中。如果某一“远程_通知”消息到达除当前正运行的线程以外的一线程,则发生内核模式通知。这如同在由目标线程ID索引的位位置上(相对于由目标核上的操作系统所提供的地址)那样发生。(例如,操作系统可指示内核模式通知应在地址0xf0000000处被递送,且向线程ID256的通知将通过在地址0xf0000020处设置位来指示)。如用户模式通知一样,将所得值与掩码相比较;如果该值与掩码的逻辑“和”为非零,则递送通知。内核模式通知经由中断来递送,通常导致操作系统对被通知的线程进行重新调度(或是立即地、或是之后某一时间)。
注意,使用位图和掩码允许内核选择不接收给定线程的通知(例如,因为它已经被通知过),并且允许多个通知在硬件中累积(例如,在处理给定通知时其他通知到达的情况下)。
此处描述的过程还可被安排成允许消息传递与调度的高效集成。例如,通过允许内核模式调度器标识接收过程何时具有对其可用的消息,以及通过允许用户模式软件标识各消息通道中的哪一个具有可用的消息(或相反地具有可用于在其上发送新消息的空间)。
此处描述的远程写进程和远程通知进程可以提供以下各项中的全部或一个或多个:在用户模式下执行常见情况的操作、受保护的进程间通信、与操作系统功能集成、快速路径消息发送操作的能力、对大量通信信道的操作以及消息传递与调度的高效集成。然而,对于此处描述的过程,提供所有这些功能不是必需的。
此处描述的远程写过程和远程通知过程可提供受保护的进程间通信,这意味着可在不同进程之间发送消息,而不是仅在相同进程中操作的各线程之间发送消息。在例如各进程如在多内核或微内核操作系统中那样被用于实现系统功能的情况下,这是有益的。系统软件可控制哪些进程可通信。
此处描述的远程写进程和远程通知进程可提供与操作系统功能的集成。例如,通过允许将消息发送给已被清空的接收者,以及允许线程在机器中的各核之间迁移,或用于为了电源管理而挂起/恢复整个机器。这在其中可随时间在若干进程之间对核进行复用的多程序机器中可能是有益的。
此处描述的远程写过程和远程通知过程可为大量通信信道提供有效的功能性。例如,以允许系统进程与该系统中的其他进程进行通信。(消息信道通过机器中相对丰富的物理存储器中的存储来支持,而不是由可能稀少的专用消息传递缓冲器存储器内的空间来支持)。
图13示出了可以实现为任何形式的计算和/或电子设备、且其中可以实现此处所描述的远程写和远程通知进程的各实施例的示例性基于多核计算的设备1300的各种组件。
基于计算的设备1300还包括一个或多个处理核1302,处理核可以是用于处理通用计算的计算可执行指令并且还用于实现此处描述的远程写和远程通知进程的微处理器、控制器或任何其他合适类型的处理器。核1302可以是不同的类型的,诸如图形处理器和通用处理器的混合,或者可以是相同的类型。例如,核可以是如上参考图2或3所描述的。在某些示例中,例如使用片上系统架构的情况,处理器1302可包括用硬件(而非软件或固件)实现此处描述的方法的一部分的一个或多个固定功能块(也被称为专用核)。可以在基于计算的设备处提供包括操作系统1308的平台软件或任何其他合适的平台软件以使得能够在该设备上执行应用软件1310。
核1302与互连1304进行通信。核1302经由互连1304共享物理存储器1306。
可以使用可由基于计算的设备1300访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可以包括例如诸如存储器1306等计算机存储介质和通信介质。诸如存储器1306等计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存、相变存储器、忆阻器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者可用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可以以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或者其他数据。如本文所定义的,计算机存储介质不包括通信介质。虽然在基于计算的设备1300中示出了计算机存储介质(存储器1306),然而应当理解,该存储可以是分布式的或位于远程并经由网络或其他通信链路(例如,使用通信接口1320)来访问。
基于计算的设备1300还包括被安排成向可与基于计算的设备1300分开或集成在一起的显示设备1316输出显示信息的输入/输出控制器1314。该显示信息可以提供图形用户界面。输入/输出控制器1314还被安排成接收并处理来自一个或多个设备的输入,如用户输入设备1318(例如,鼠标或键盘)。该用户输入可用于设置配置参数,并且用于使用计算机以供通用计算。在一实施例中,如果显示设备1316是触敏显示设备,则它还可担当用户输入设备1318。输入/输出控制器1314还可向除显示设备之外的设备输出数据,例如,本地连接的打印设备。
此处所使用的术语“计算机”是指带有处理能力使得可以执行指令的任何设备。本领域的技术人员将认识到,这样的处理能力被集成到许多不同的设备中,因此,术语“计算机”包括PC、服务器、移动电话、个人数字助理和许多其他设备。
本文描述的方法可由有形存储介质上的机器可读形式的软件来执行,例如计算机程序的形式,该计算机程序包括在该程序在计算机上运行时适用于执行本文描述的任何方法的所有步骤的计算机程序代码装置并且其中该计算机程序可被包括在计算机可读介质上。有形(或非瞬态)存储介质的示例可包括盘(disk)、拇指型驱动器、存储器等,而不包括所传播的信号。软件可以适合于在并行处理器或串行处理器上执行,使得各方法步骤可以以任何适当的顺序实现,或同时实现。
这确认了软件可以是有价值的、可单独交易的商品。它旨在包含运行于或者控制“哑”或标准硬件以实现所需功能的软件。它还旨在包含例如用于设计硅芯片,或者用于配置通用可编程芯片的HDL(硬件描述语言)软件等“描述”或者定义硬件配置以实现期望功能的软件。
本领域的技术人员将认识到,用来存储程序指令的存储设备可以分布在网络上。例如,远程计算机可以存储被描述为软件的进程的示例。本地或终端计算机可以访问远程计算机并下载软件的一部分或全部以运行程序。可另选地,本地计算机可以根据需要下载软件的片段,或在本地终端上执行一些软件指令,并在远程计算机(或计算机网络)上执行另一些软件指令。本领域的技术人员还将认识到,通过利用本领域的技术人员已知的传统技术,软件指令的全部,或一部分可以通过诸如DSP、可编程逻辑阵列等等之类的专用电路来实现。
如本领域技术人员将清楚的,此处给出的任何范围或者设备值都可以被扩展或者改变而不失去所寻求的效果。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
可以理解,上文所描述的优点可以涉及一个实施例或可以涉及多个实施例。各实施例不限于解决所述问题中的任一个或全部的实施例或具有所述好处和优点中的任一个或全部的实施例。进一步可以理解,对“一个”项目的引用是指那些项目中的一个或多个。
此处所描述的方法的步骤可以在适当的情况下以任何合适的顺序,或同时实现。另外,在不偏离此处所描述的主题的精神和范围的情况下,可以从任何一个方法中删除各单独的框。上文所描述的任何示例的各方面可以与所描述的其他示例中的任何示例的各方面相结合,以构成进一步的示例,而不会丢失寻求的效果。
此处使用了术语“包括”旨在包括已标识的方法的框或元素,但是这样的框或元素不构成排它性的列表,方法或设备可以包含额外的框或元素。
可以理解,上面对一较佳实施例的描述只是作为示例给出并且本领域的技术人员可以做出各种修改。以上说明、示例和数据提供了对本发明的各示例性实施例的结构和使用的全面描述。虽然上文以一定的详细度或参考一个或多个单个实施例描述了本发明的各实施例,但是,在不偏离本发明的精神或范围的情况下,本领域的技术人员可以对所公开的实施例作出很多更改。

Claims (8)

1.一种在具有多个核(1302)以及至少一个共享物理存储器(1306)的多核处理器(1300)处执行的用于远程核操作的方法,所述方法包括:
在所述共享物理存储器中创建数据结构,所述数据结构至少由发送方核来写入并且由作为目的地核的单个核来读取;
使用所述发送方核以及目的地核处的操作系统内核,将用于所述数据结构的物理存储器的公共区域映射(600)到本地于所述发送方核以及目的地核中的每一个的虚拟地址空间;
更新所述数据结构以配置:在发送方核上对虚拟地址的写是由对所述目的地核的存储器写请求来实现的;
将对所述共享物理存储器的一部分的更新作为来自所述核中的第一核的存储器写请求发送(504)到向目的地核,该第一核是发送方核;
在所述目的地核处接收(506)所述存储器写请求;
在所述目的地核处执行(508)对高速缓存存储器分层结构的所述存储器写请求,如同该存储器写请求源自所述目的地核那样。
2.如权利要求1所述的方法,其特征在于,所述目的地核由所述发送方核使用控制元数据来标识,所述控制元数据是在配置过程中被建立的且使用从以下各项中的任一项选出的缓冲器在所述发送方核处被高速缓存:被扩展以结合所述控制元数据的转换后备缓冲器(206);以及存储所述控制元数据的专用通信转换缓冲器(308)。
3.如权利要求1所述的方法,其特征在于,所述多个核是使用分层高速缓存结构来互连的,所述分层高速缓存结构或者具有高速缓存相干性机制或者不具有高速缓存相干性机制。
4.如权利要求1所述的方法,其特征在于,在所述目的地核处执行对高速缓存存储器分层结构的所述存储器写请求被实现,使得在所述目的地核处对所述高速缓存存储器分层结构的所述存储器写请求对于所述目的地核处运行的进程可见。
5.一种在具有共享至少一个共享物理存储器的多个核(1302)的多核处理器(1300)处执行的用于远程核操作的方法,所述方法包括:
在所述共享物理存储器处配置通知数据结构,并且在所述多个核中的每一个核的虚拟地址空间处建立所述通知数据结构的表示,其中每一虚拟地址空间是所述共享物理存储器中的至少一部分在一核处的映射;
在发送方核处获取与事件集中的哪个事件已发生有关的信息(1102),其中所述发送方核是所述多个核中的一个;
通过以下步骤向目的地核通知所述信息,所述目的地核是所述多个核中的一个核:
更新所述通知数据结构或在目的地核虚拟地址空间处的该通知数据结构的表示,包括通过以下操作来更新所述通知数据结构或在所述目的地核虚拟地址空间处的该通知数据结构的表示:将存储器通知请求从所述发送方核发送到所述目的地核,以便写入一值,该值表示所述事件集中的哪一个事件已经在所述目的地核处发生,如同所述通知数据结构更新源自所述目的地核那样。
6.如权利要求5所述的方法,其特征在于,包括:仅允许所述发送方核在指定条件下向所述目的地核发送所述存储器通知请求。
7.如权利要求5所述的方法,其特征在于,包括:使用高速缓存相干性机制来对所述多个核进行互连;以及在所述目的地核处,注意到所述通知数据结构的高速缓存相干性无效,并且将对于所述通知数据结构的取回命令从所述目的地核发送到所述共享物理存储器。
8.一种多核处理器(1300),包括:
使用分层高速缓存结构来互连的多个核(1302);
使用所述分层高速缓存结构与所述多个核进行通信的至少一个共享物理存储器(1306);
所述共享物理存储器处配置有数据结构,所述多个核中的一个是发送方核,该发送方核被安排成向是所述多个核中的一个核的目的地核发送存储器写请求,以便更新所述共享物理存储器处的数据结构,所述共享物理存储器处的数据结构被映射到本地于所述发送方核以及目的地核中的每一个核的高速缓存结构中各部分处的虚拟地址空间。
CN201210030338.2A 2011-02-11 2012-02-10 多核计算机中的远程核操作 Active CN102622329B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/025,446 US9471532B2 (en) 2011-02-11 2011-02-11 Remote core operations in a multi-core computer
US13/025,446 2011-02-11

Publications (2)

Publication Number Publication Date
CN102622329A CN102622329A (zh) 2012-08-01
CN102622329B true CN102622329B (zh) 2015-12-02

Family

ID=46562253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210030338.2A Active CN102622329B (zh) 2011-02-11 2012-02-10 多核计算机中的远程核操作

Country Status (6)

Country Link
US (1) US9471532B2 (zh)
EP (1) EP2673717A4 (zh)
CN (1) CN102622329B (zh)
HK (1) HK1174116A1 (zh)
TW (1) TWI473013B (zh)
WO (1) WO2012109631A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9596222B2 (en) 2011-08-02 2017-03-14 Cavium, Inc. Method and apparatus encoding a rule for a lookup request in a processor
GB2495959A (en) 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
CN103853620B (zh) * 2012-11-30 2017-06-09 华为技术有限公司 一种众核处理器进程间相互通信的方法、装置及系统
US9026681B2 (en) 2013-08-08 2015-05-05 Qualcomm Incorporated Flexible hardware module assignment for enhanced performance
US9411745B2 (en) * 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
US9348645B2 (en) * 2014-05-30 2016-05-24 Apple Inc. Method and apparatus for inter process priority donation
US9600442B2 (en) * 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
US9424173B2 (en) 2014-10-23 2016-08-23 GlobalFoundries, Inc. Performing secure address relocation within a multi-processor system sharing a same physical memory channel to external memory
US9740617B2 (en) * 2014-12-23 2017-08-22 Intel Corporation Hardware apparatuses and methods to control cache line coherence
FR3061327B1 (fr) * 2016-12-26 2019-05-31 Thales Procede de controle d'un processeur multi-coeurs et calculateur associe
CN107038125B (zh) * 2017-04-25 2020-11-24 上海兆芯集成电路有限公司 具有加速预取请求的独立流水线的处理器高速缓存
US11314865B2 (en) * 2017-08-01 2022-04-26 The Trustees Of Princeton University Pluggable trust architecture
US10824584B1 (en) * 2018-04-03 2020-11-03 Xilinx, Inc. Device with data processing engine array that enables partial reconfiguration
CN110413210B (zh) * 2018-04-28 2023-05-30 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和计算机程序产品
CN108614460B (zh) * 2018-06-20 2020-11-06 东莞市李群自动化技术有限公司 分布式多节点控制系统及方法
CN109117291A (zh) * 2018-08-27 2019-01-01 惠州Tcl移动通信有限公司 基于多核处理器的数据调度处理方法、装置和计算机设备
US10860487B2 (en) * 2019-04-17 2020-12-08 Chengdu Haiguang Integrated Circuit Design Co. Ltd. Multi-core processing device and method of transferring data between cores thereof
CN113138711B (zh) * 2020-01-20 2023-11-17 北京希姆计算科技有限公司 一种存储管理装置及芯片
CN113515483A (zh) * 2020-04-10 2021-10-19 华为技术有限公司 一种数据传输方法及装置
CN112000608B (zh) * 2020-09-02 2021-10-01 展讯通信(上海)有限公司 系统级芯片及其中核间通信的方法、智能穿戴设备
US11954034B2 (en) * 2022-03-28 2024-04-09 Woven By Toyota, Inc. Cache coherency protocol for encoding a cache line with a domain shared state
CN115658569B (zh) * 2022-12-08 2023-04-14 井芯微电子技术(天津)有限公司 Amp多核处理器间中断与共享存储方法、系统及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510191A (zh) * 2009-03-26 2009-08-19 浙江大学 具备缓存窗口的多核体系架构及其实现方法
CN101477511B (zh) * 2008-12-31 2010-08-25 杭州华三通信技术有限公司 一种实现多操作系统共享存储介质的方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
US5123094A (en) 1990-01-26 1992-06-16 Apple Computer, Inc. Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers
US6148375A (en) 1998-02-13 2000-11-14 International Business Machines Corporation Hierarchical bus simple COMA architecture for shared memory multiprocessors having a bus directly interconnecting caches between nodes
US6754788B2 (en) 2001-03-15 2004-06-22 International Business Machines Corporation Apparatus, method and computer program product for privatizing operating system data
US7263598B2 (en) 2002-12-12 2007-08-28 Jack Robert Ambuel Deterministic real time hierarchical distributed computing system
WO2004107180A1 (ja) 2003-05-30 2004-12-09 Fujitsu Limited マルチプロセッサシステム
US7711901B2 (en) 2004-02-13 2010-05-04 Intel Corporation Method, system, and apparatus for an hierarchical cache line replacement
US8275951B2 (en) * 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US7577794B2 (en) 2004-10-08 2009-08-18 International Business Machines Corporation Low latency coherency protocol for a multi-chip multiprocessor system
JP2006127217A (ja) * 2004-10-29 2006-05-18 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
EP1710703A1 (fr) 2005-04-04 2006-10-11 Stmicroelectronics Sa Cohérence de cache dans un système multiprocesseurs à mémoire partagée
GB2442984B (en) 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US7937532B2 (en) 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
CN101430651B (zh) 2007-11-05 2012-01-11 中兴通讯股份有限公司 一种异构多核体系中外设的访问方法
WO2009065313A1 (fr) 2007-11-20 2009-05-28 Hangzhou H3C Technologies Co., Ltd. Procédé et équipement à processeur multicœurs pour la mise en œuvre de plusieurs fonctions de traitement de services

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101477511B (zh) * 2008-12-31 2010-08-25 杭州华三通信技术有限公司 一种实现多操作系统共享存储介质的方法和装置
CN101510191A (zh) * 2009-03-26 2009-08-19 浙江大学 具备缓存窗口的多核体系架构及其实现方法

Also Published As

Publication number Publication date
HK1174116A1 (zh) 2013-05-31
EP2673717A4 (en) 2018-01-10
US9471532B2 (en) 2016-10-18
WO2012109631A3 (en) 2012-10-18
US20120210071A1 (en) 2012-08-16
WO2012109631A2 (en) 2012-08-16
TW201234264A (en) 2012-08-16
EP2673717A2 (en) 2013-12-18
TWI473013B (zh) 2015-02-11
CN102622329A (zh) 2012-08-01

Similar Documents

Publication Publication Date Title
CN102622329B (zh) 多核计算机中的远程核操作
US10114740B2 (en) Memory management techniques
CN102880558B (zh) 用于高速缓存块一致性的系统、方法和设备
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
US8930634B2 (en) Speculative read in a cache coherent microprocessor
CN102105871B (zh) 虚拟处理设备的中断控制
US7739455B2 (en) Avoiding livelock using a cache manager in multiple core processors
US7769958B2 (en) Avoiding livelock using intervention messages in multiple core processors
US8850158B2 (en) Apparatus for processing remote page fault and method thereof
CN102985910B (zh) 对无用存储单元收集的系统和方法
CN101802796B (zh) 防止多核处理器中的写回竞争
CN108780406A (zh) 使用rdma共享工作数据的存储器
EP3639144B1 (en) Memory management in non-volatile memory
CN1894662A (zh) 作为用于执行引导码的ram的处理器缓存存储器
TW201346591A (zh) 用於多上下文計算引擎的轉譯後備緩衝之技術
US20140201465A1 (en) Accelerated recovery for snooped addresses in a coherent attached processor proxy
CN104508645A (zh) 用于使用多个子锁来控制对具有读取器-写入器锁的共享数据结构的访问的系统和方法
EP3757860B1 (en) Providing improved efficiency for metadata usages
US10901900B2 (en) System and method for managing cache coherence in a network of processors provided with cache memories
JP2019500705A (ja) 選択的リソースマイグレーションを用いるネットワーク接続型メモリ
JP2018088134A (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US20140201460A1 (en) Data recovery for coherent attached processor proxy
CN113454591A (zh) 具有阻止指示符的定向中断虚拟化
TW201246082A (en) Implementing TLB synchronization for systems with shared virtual memory between processing devices
WO2024087875A1 (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: 1174116

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150722

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150722

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant