CN104981786B - 在多核芯片中为母核预取 - Google Patents

在多核芯片中为母核预取 Download PDF

Info

Publication number
CN104981786B
CN104981786B CN201480008240.4A CN201480008240A CN104981786B CN 104981786 B CN104981786 B CN 104981786B CN 201480008240 A CN201480008240 A CN 201480008240A CN 104981786 B CN104981786 B CN 104981786B
Authority
CN
China
Prior art keywords
parent nucleus
core
scouting
cache
shared cache
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
CN201480008240.4A
Other languages
English (en)
Other versions
CN104981786A (zh
Inventor
B·R·普瑞斯凯
C·A·卡尔果维斯基
C-L·K·舒
F·Y·布萨巴
S·卡洛
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104981786A publication Critical patent/CN104981786A/zh
Application granted granted Critical
Publication of CN104981786B publication Critical patent/CN104981786B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

在具有至少一个侦察核、至少一个母核、以及在该至少一个侦察核和该至少一个母核之间共用的共享高速缓存器的芯片上,由该至少一个侦察核执行预取代码来监视该至少一个母核,该预取代码独立于该至少一个母核执行;侦察核基于监视至少一个母核确定在该至少一个母核中发生了至少一个指定的数据模式;基于所述确定,从该至少一个侦察核向该该共享高速缓存器发送预取请求;该共享高速缓存器将由该预取请求指示的数据集发送给该至少一个母核。

Description

在多核芯片中为母核预取
技术领域
本发明一般涉及具有母核和侦察(scout)核的多核芯片,更具体地涉及在多核芯片中为母核预取。
背景技术
单线程处理器性能的增长受限于单线程性能所需的功率要求。通过增加频率和/或功能特性的处理器的功率需求加倍不一定会产生性能增益大于或等于增加的功率需求。这是因为性能增益和功率增益比显著倾斜。为了提供芯片性能的增长,功率预算的重要部分可以是专门在芯片上放置额外的核。而共享高速缓存器和内存防止性能增加与核数量的增加同比例,增加芯片上的核的数量导致的性能增益比单纯提高单核处理器的性能可以产生更大的性能/瓦(watt)增益。
在一个提高单线程性能的方法中,可以将在同一芯片上作为主核或母核的次级核作为侦察核。具体来说,侦察核可用于从共享高速缓存器预取数据到母核的私有高速缓存器。这种方法在母核遇到高速缓存器未命中(miss)的事件中可能是特别有用的。当特定的数据行导致搜索母核的目录,而请求的缓存行不存在时,高速缓存器未命中发生。一个典型的获得未命中的高速缓存行的方法是对更高级别的高速缓存器启动一个获取操作。侦察核提供了一种用于预取母核所需要的数据的机制。
应该指出的是,不同的程序表现不同,导致一个预取算法或方法可能不总是改善访问高速缓存器内容的延迟。在对母核预取数据的方法中,有一个相对小而简单的算法,该算法可以提供一种跨越引擎,其基于后续高速缓存器多个未命中之间观测到的跨越来投机性预取数据。为了覆盖更复杂的模式,需要额外的硬件,这些硬件在物理尺寸和功率上更复杂并且更大。然而,依照芯片对吞吐量、延迟、和功率平衡的取舍,可用于预取的专用硬件的量可以是有限的核。此外,监视和检测高速缓存器未命中所需要的面积和存储的量可能太大,不能在硬件上唯一地实现。
发明内容
本发明的多个方面包括一种用于在芯片上预取数据的方法、系统、和计算机程序产品,所述芯片具有至少一个侦察核,至少一个母核,在所述至少一个侦察核和所述至少一个母核之间共有的共享高速缓存器。由侦察核执行预取代码来监测母核。预取代码独立于母核执行。侦察核基于对母核的监视确定在母核中发生了至少一个指定的数据模式,侦察核向共享高速缓存器发出预取请求,基于所述被侦察核检测到的至少一个指定的模式发送预取请求,共享高速缓存器将预取请求指示的数据集发送到母核。
附图说明
现在将要参考附图,通过举例的方式描述本发明的多个实施例,其中:
图1根据一个实施例描述了多核芯片;
图2根据一个实施例描述了一个中央处理(CP)芯片;
图3根据另一个实施例描述了一个CP芯片;
图4根据又一个实施例描述了一个CP芯片;;
图5根据一个实施例描述了用于说明用于由侦察核为母核预取预取数据的操作方法的流程;以及
图6示出根据本发明的一个实施例的计算机程序产品。
具体实施方式
公开了在多核芯片中的侦察核为母核预取数据的实施例。在一个示例性实施例中,多核芯片包括至少一个母核,至少一个侦察核,以及共享高速缓存器。侦察核监视母核的行为,监视母核创建的至少一种指定的模式,并确定是否应该从侦察核向共享高速缓存器发送预取请求。一旦从侦察核接收到预取请求,将被预取请求的数据发送到母核。被预取请求的数据只能由母核接受,而不能由侦察核接受。侦察核监视其中出现的各种类型的指定数据模式的母核。相反,现有的具有专有硬件预取器的某些类型的核通常只能监视母核的模式的指定子集。同时,由于由侦察核预取器重用的硬件量,侦察处理器能够比典型的硬件预取器分析更多的数据。
图1根据一个实施例描述了计算系统10的例子。计算系统10包括至少一个中央处理(CP)芯片20。在如图1所示的示范性实施例中,示出了三个CP芯片20,然而可以理解,可以使用任何数量的CP芯片20。每一个CP芯片20与共享的高速缓存器22和系统内存器24通信。
现在参考图1-2,每个CP芯片20包括用于读取和执行指令的多个核30。例如,在如图2所示的示例实施例中,每个CP芯片20包括母核32和侦察核34,然而可以理解,也可以使用任何数量的核30。在图3-4中还示说明了CP芯片的替代实施例。参考图2,每个核30还包括各自的指令高速缓存器(I-cache)40和数据高速缓存器(D-cache)42。在如图2所示的示例实施例中,每个核30只包括一级(L1)高速缓存器,然而可以理解,在不同实施例中,核30也可以包括二级(L2)高速缓存器。每个核30可操作地连接到共享高速缓存器50。在如图2所示的实施例中,共享高速缓存器50是L2高速缓存器,然而,可以理解,其也可以是三级(L3)高速缓存器。
在母核32和共享高速缓存器50之间提供数据返回总线60,并且在侦察核34和共享高速缓存器50之间提供数据返回总线62。获取请求总线64将母核32与共享高速缓存器50连接起来,在这将数据从母核32发送到共享高速缓存器50。获取监视总线66将侦察核34与共享高速缓存器50连接起来,在这侦察核34通过获取监视总线66监视共享高速缓存器50。获取请求总线68位于侦察核34和共享高速缓存器50之间,从而将各种预取请求从侦察核34发送到共享高速缓存器50。获取请求总线68如获取请求总线64所做的那样,也可用于典型的获取。之所以需要这种获取是要将预取代码加载到侦察核34,除此之外,载入进一步的数据的以便分析的可能需求应该是要被分析的数据没有全部纳入本地数据高速缓存器42和/或预取代码没有完全纳入本地的指令高速缓存器40。
在图2所示的实施例中,共享高速缓存器50作为一个集线器或连接点,以便侦察核34可以监视母核32。侦察核34监视母核32以得到在母核32中发生的至少一个指定的数据模式。具体来说,侦察核34执行用来监视母核32的预取代码。预取代码确定是否在母核32中发生一个或多个指定的数据模式,并基于指定的数据模式向共享高速缓存器50发送获取请求。而且,预取代码是独立于由母核32执行的任何代码执行的。侦察核34通常在位于侦察核34的L1指令高速缓存器40中存储预取代码。
指定数据模式可以是离开母核32的内容请求,(例如,对不在母核32的指令高速缓存器40和数据高速缓存器42中的高速缓存指定行的请求),或者替换地,母核32的检查点地址。例如,母核32可能或者从指令高速缓存器40或者从数据高速缓存器42请求存储器地址。如果指令高速缓存器40或数据高速缓存器42不包含从母核32请求的指定的缓存行,就发生高速缓存器未命中。侦察核34由获取监视总线66,通过共享高速缓存器50,监视母核32,检测到高速缓存器未命中。在一个实施例中,侦察核34确定是否或者在指令高速缓存器40或者在数据高速缓存器42发生高速缓存器未命中(或任何其他类型的位于母核32中的高速缓存器发生了高速缓存器未命中),一旦检测到高速缓存未命中,可以由侦察核34通过获取请求总线68向共享高速缓存器50发送对预期的未来的未命中的高速缓存行的预取。在一种方法中,侦察核34也可以检查来确定是否高速缓存器的指定行存储在母核32的高速缓存器中(例如,指令高速缓存器40和数据高速缓存器42)。如果高速缓存器的指定行在母核32中,那么就不需要预取已经在母核32的高速缓存器中的数据。
在另一种方法中,母核32的检查点地址可以通过共享高速缓存器50在母核32和侦察核34之间传递。具体的检查点地址可以是指定事件的代表。指定的事件可以是,例如,垃圾收集或上下文切换。在一个示例性实施例中,检查地址可以与母核32中或者指令高速缓存器40或者数据高速缓存器42中的指定高速缓存行相关联,然而,可以理解,检查点地址可以不必与指定的预取地址相关联。侦察核34监视母核32,并且一旦指定的事件完成后,母核34将预取请求发送共享高速缓存器50以获取与指定事件相关联的高速缓存行。
一旦从侦察核34接收到预取请求,共享高速缓存器50通过数据返回总线60向母核32发送被预取请求的数据。共享高速缓存器50将被预取请求的数据作为预取请求的函数向母核32发送。被预取请求所请求的数据只由母核32接受,而不是由侦察核34接受。
在一种方法中,侦察核34通知母核32代表母核32进行了预取。另外,在另一种方法,共享高速缓存器50一旦发出被预取请求的数据,同时就通知母核32代表了母核32进行了预取。因此,侦察核34通知共享高速缓存器50如何在母核32路由和存储被预取请求的数据,就如母核32进行的预取请求(即使是侦察核34,而不是母核32进行了该请求)。因此,被预取请求的数据存储在母核心32的指令高速缓存器40或数据高速缓存器42。
图3是CP芯片的替换说明,该CP芯片有单独的侦察核134,但至少有2个母核132。应该注意的是,虽然图3中示出了2个母核132,也可以使用任意数量的多个母核132。在如图3所示的实施例中,在母核132和共享高速缓存器150之间提供数据返回总线160,在侦察核134和共享高速缓存器150之间提供数据返回总线162。为每个母核132提供了获取请求总线164,这里获取请求总线164将母核132与共享高速缓存器50连接起来。获取监视总线166将侦察核134与共享高速缓存器150连接起来。获取请求总线168位于侦察核134和共享高速缓存器150之间,以从侦察核134向共享高速缓器150发送不同的预取请求。
图4是CP芯片124的可选说明,CP芯片124具有至少2个侦察核234和一个母核232。应该注意的是,尽管图4说明了2个侦察核234,也可以使用多个侦察核232(例如,2个以上)。在图4中所示的实施例中,在母核232和共享高速缓存器250之间提供数据返回总线260。为每个侦察核234提供数据返回总线262,其用来连接多个侦察核234中的一个与共享高速缓存器250。获取请求总线264将母核232和共享高速缓存器250连接起来。为多个侦察核234中的每一个提供获取监视总线266,其用于将多个侦察核234中的一个与共享高速缓存器250连接起来。为多个侦察核234中的每一个提供获取请求总线268,其用于将多个侦察核234中的一个与共享高速缓存器250连接起来。
在图4所示的实施例中,每一个侦察核234可以监视母核232,以寻找不同的指定的数据模式。例如,在一种方法中,侦察核中的一个可以正在监视和分析母核232的L1指令高速缓存器240的行为,剩下的侦察核234可以正在监测和分析母核232的L1数据高速缓存器242的行为。因此,在指定时间段内,可以监视和分析其它数据。
图5是说明现在要讨论的用于由侦察核为母核预取数据的方法300的流程图。参考图1-5,方法300在块302开始,其中侦察核34通过共享高速缓存器50监视母核32。然后方法300可继续到块304。
在块304中,侦察核34监视母核32,以寻找在母核32中发生的指定的数据模式。正如上面所讨论的,指定的数据模式可以或者是离开母核32的内容要求(例如,对在母核32的或者指令高速缓存器40或者数据高速缓存器42中不存在的指定高速缓存行的请求),或者是检查点地址。如果未检测到指定的数据模式,方法300可以返回到块302。如果检测到指定的数据模式,方法300可以继续到块306。
在306块,侦察核34向共享高速缓存器50发送预取请求。如上所述,预取请求可以是,例如,侦察核34发送给共享高速缓存器50的对未命中的高速缓存行的预取。然后方法300可以继续到块308。
在块308,通知母核32预取是代表母核32进行的。然后方法300可以继续到块310。
在块310,共享高速缓存器50通过数据返回总线60将被预取请求的数据发送母核32。共享高速缓存器50将被预取请求的数据作为预取请求的函数发送给母核32。在一个实施例中,在同一时间执行块308和块310。然后方法300可终止。
所属技术领域的技术人员知道,本发明的一个或多个方面可以实现为系统、方法或计算机程序产品。因此,本发明的一个或多个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的一个或多个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图6,在一个例子中,例如,计算机程序产品600包括一个或多个其上存储有计算机可读的程序代码装置或逻辑604的计算机可读存储介质602,其中该介质可以是有形的或者无形的,以提供并方便以下描述的本发明的一个或多个方面。
当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。这种产品可以由,例如,编译器或者汇编器创建,从而当执行本发明的各个方面时来组合指令。
以上描述的包括在计算机系统10中的技术效果和优点包括可以由侦察核34的L1指令高速缓存器40执行的程序的创建。侦察核34可以监视母核以寻找母核中发生的各种类型的指定的数据模式。相比较而言,现有的一些类型的硬件预取器只监视母核的指定模式。而且,当侦察核34的整个L1数据高速缓存器可以用于存储可能要被分析的数据时,侦察核监视和分析的数据模式的量可以比现有的硬件预取器相对大一些。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (17)

1.一种预取数据的计算机系统,该系统包括:
芯片,包括:
位于该芯片上的至少一个侦察核;
位于该芯片上的至少一个母核;以及
在该至少一个侦察核和该至少一个母核之间共用的共享高速缓存器,该共享高速缓存器位于该芯片之上,该系统被配置为执行方法,包括:
由该至少一个侦察核执行预取代码,该预取代码独立于该至少一个母核执行,所述预取代码包括:监视该至少一个母核中的指定数据模式,该指定数据模式包括在位于该至少一个母核的高速缓存器中发生的高速缓存器未命中和该至少一个母核的检查点地址中的至少一个;
由该至少一个侦察核基于监视该至少一个母核确定在该至少一个母核中发生了至少一个指定数据模式;
基于所述确定,从该至少一个侦察核向该共享高速缓存器发送预取请求;以及
由该共享高速缓存器将由该预取请求指示的数据集发送给该至少一个母核。
2.根据权利要求1所述的计算机系统,进一步包括通知该至少一个母核该预取请求是代表该至少一个母核进行的。
3.根据权利要求1或2所述的计算机系统,其中该至少一个侦察核通知该共享高速缓存器如何在位于至少一个母核内的高速缓存器中路由和存储由该预取请求请求来的数据。
4.根据权利要求1或2所述的计算机系统,其中该芯片包括至少两个母核,每一个与该共享高速缓存器通信。
5.根据权利要求1或2所述的计算机系统,其中该芯片包括至少两个与该共享高速缓存器通信的侦察核,其中该侦察核监视该至少一个母核以寻找不同的指定数据模式。
6.根据权利要求1或2所述的计算机系统,其中该至少一个侦察核通过获取监视总线监视该至少一个母核,其中该获取监视总线将该至少一个侦察核连接到该共享高速缓存器。
7.一种可被处理电路和存储指令读取的计算机可读存储介质,其上存储有用于由处理电路执行来执行用于预取芯片上的数据的方法的计算机程序,该芯片具有至少一个侦察核、至少一个母核;以及在该至少一个侦察核和该至少一个母核之间共用的共享高速缓存器,该方法包括:
由该至少一个侦察核执行预取代码,该预取代码独立于该至少一个母核执行,所述预取代码包括:监视该至少一个母核中的指定数据模式,该指定数据模式包括在位于该至少一个母核的高速缓存器中发生的高速缓存器未命中和该至少一个母核的检查点地址中的至少一个;
由该至少一个侦察核基于监视该至少一个母核确定在该至少一个母核中发生了至少一个指定数据模式;
基于所述确定,从该至少一个侦察核向该共享高速缓存器发送预取请求;以及
由该共享高速缓存器将由该预取请求指示的数据集发送给该至少一个母核。
8.根据权利要求7所述的计算机可读存储介质,进一步包括通知该至少一个母核该预取请求是代表该至少一个母核进行的。
9.根据权利要求7或8所述的计算机可读存储介质,其中该至少一个侦察核通知该共享高速缓存器如何在位于至少一个母核内的高速缓存器中路由和存储由该预取请求请求来的数据。
10.根据权利要求7或8所述的计算机可读存储介质,其中该芯片包括至少两个母核,每一个与该共享高速缓存器通信。
11.根据权利要求7或8所述的计算机可读存储介质,其中该芯片包括至少两个与该共享高速缓存器通信的侦察核,其中该侦察核监视该至少一个母核以寻找不同的指定数据模式。
12.根据权利要求7或8所述的计算机可读存储介质,其中该至少一个侦察核通过获取监视总线监视该至少一个母核,其中该获取监视总线将该至少一个侦察核连接到该共享高速缓存器。
13.一种预取芯片上的数据的计算机实现的方法,该芯片具有至少一个侦察核、至少一个母核;以及在该至少一个侦察核和该至少一个母核之间共用的共享高速缓存器,该方法包括:
由该至少一个侦察核执行预取代码,该预取代码独立于该至少一个母核执行,所述预取代码包括:监视该至少一个母核中的指定数据模式,该指定数据模式包括在位于该至少一个母核的高速缓存器中发生的高速缓存器未命中和该至少一个母核的检查点地址中的至少一个;
由该至少一个侦察核基于监视该至少一个母核确定在该至少一个母核中发生了至少一个指定数据模式;
基于所述确定,从该至少一个侦察核向该共享高速缓存器发送预取请求;以及
由该共享高速缓存器将由该预取请求指示的数据集发送给该至少一个母核。
14.根据权利要求13所述的方法,进一步包括通知该至少一个母核该预取请求是代表该至少一个母核进行的。
15.根据权利要求13或14所述的方法,其中该至少一个侦察核通知该共享高速缓存器如何在位于至少一个母核内的高速缓存器中路由和存储由该预取请求请求来的数据。
16.根据权利要求13或14所述的方法,其中该芯片包括至少两个母核,每一个与该共享高速缓存器通信。
17.根据权利要求13或14所述的方法,其中该芯片包括至少两个与该共享高速缓存器通信的侦察核,其中该侦察核监视该至少一个母核以寻找不同的指定数据模式。
CN201480008240.4A 2013-03-05 2014-02-13 在多核芯片中为母核预取 Active CN104981786B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/785,377 2013-03-05
US13/785,377 US9116816B2 (en) 2013-03-05 2013-03-05 Prefetching for a parent core in a multi-core chip
PCT/IB2014/058955 WO2014136003A1 (en) 2013-03-05 2014-02-13 Prefetching for parent core in multi-core chip

Publications (2)

Publication Number Publication Date
CN104981786A CN104981786A (zh) 2015-10-14
CN104981786B true CN104981786B (zh) 2018-07-20

Family

ID=51489358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480008240.4A Active CN104981786B (zh) 2013-03-05 2014-02-13 在多核芯片中为母核预取

Country Status (6)

Country Link
US (2) US9116816B2 (zh)
JP (1) JP6320431B2 (zh)
CN (1) CN104981786B (zh)
DE (1) DE112014000336T5 (zh)
GB (1) GB2525831B (zh)
WO (1) WO2014136003A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116816B2 (en) * 2013-03-05 2015-08-25 International Business Machines Corporation Prefetching for a parent core in a multi-core chip
US10013344B2 (en) * 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
US10678736B2 (en) * 2015-09-25 2020-06-09 Intel Corporation Extending multichip package link off package
GB2544474B (en) 2015-11-16 2020-02-26 Advanced Risc Mach Ltd Event triggered programmable prefetcher
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
CN108763011B (zh) * 2018-03-27 2021-09-07 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) SoC芯片核数检测方法、装置、系统及存储介质
CN113342709B (zh) * 2021-06-04 2023-02-21 海光信息技术股份有限公司 在多处理器系统中访问数据的方法和多处理器系统
CN114217861A (zh) * 2021-12-06 2022-03-22 海光信息技术股份有限公司 数据处理方法及装置、电子装置和存储介质
CN114297098A (zh) * 2021-12-31 2022-04-08 上海阵量智能科技有限公司 芯片的缓存系统、数据处理方法、设备、存储介质及芯片

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US7502910B2 (en) * 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US8230422B2 (en) 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US7950012B2 (en) 2005-03-16 2011-05-24 Oracle America, Inc. Facilitating communication and synchronization between main and scout threads
US7590805B2 (en) 2005-12-29 2009-09-15 Intel Corporation Monitor implementation in a multicore processor with inclusive LLC
US7730263B2 (en) 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
US7509481B2 (en) 2006-03-03 2009-03-24 Sun Microsystems, Inc. Patchable and/or programmable pre-decode
JP2008015668A (ja) * 2006-07-04 2008-01-24 Toyota Infotechnology Center Co Ltd タスク管理装置
JP4945200B2 (ja) * 2006-08-29 2012-06-06 株式会社日立製作所 計算機システム及びプロセッサの制御方法
US20080141268A1 (en) 2006-12-12 2008-06-12 Tirumalai Partha P Utility function execution using scout threads
US7975107B2 (en) 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8775778B2 (en) 2008-02-01 2014-07-08 International Business Machines Corporation Use of a helper thread to asynchronously compute incoming data
US8707016B2 (en) 2008-02-01 2014-04-22 International Business Machines Corporation Thread partitioning in a multi-core environment
JP2009258984A (ja) * 2008-04-16 2009-11-05 Toshiba Corp 情報処理装置およびロード制御方法
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
JP2010217992A (ja) 2009-03-13 2010-09-30 Mitsubishi Electric Corp キャッシュ制御装置及びキャッシュ制御方法及びキャッシュ制御プログラム
US8195888B2 (en) 2009-03-20 2012-06-05 Empire Technology Development Llc Multiprocessor cache prefetch with off-chip bandwidth allocation
US8407707B2 (en) 2009-05-18 2013-03-26 Lsi Corporation Task queuing in a network communications processor architecture
US8176349B2 (en) 2009-04-30 2012-05-08 Hewlett-Packard Development Company, L.P. Look-ahead processor for signaling suitable non-idle performance state for main processor
US8752008B2 (en) 2009-09-02 2014-06-10 Advanced Micro Devices, Inc. Lightweight service based dynamic binary rewriter framework
US8443151B2 (en) 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8904114B2 (en) 2009-11-24 2014-12-02 Empire Technology Development Llc Shared upper level cache architecture
US8341357B2 (en) 2010-03-16 2012-12-25 Oracle America, Inc. Pre-fetching for a sibling cache
US8453161B2 (en) 2010-05-25 2013-05-28 International Business Machines Corporation Method and apparatus for efficient helper thread state initialization using inter-thread register copy
US9116816B2 (en) * 2013-03-05 2015-08-25 International Business Machines Corporation Prefetching for a parent core in a multi-core chip

Also Published As

Publication number Publication date
GB201516351D0 (en) 2015-10-28
US20150019820A1 (en) 2015-01-15
US9128852B2 (en) 2015-09-08
US9116816B2 (en) 2015-08-25
JP2016509320A (ja) 2016-03-24
US20140258640A1 (en) 2014-09-11
DE112014000336T5 (de) 2015-09-17
GB2525831B (en) 2016-03-23
CN104981786A (zh) 2015-10-14
GB2525831A (en) 2015-11-04
JP6320431B2 (ja) 2018-05-09
WO2014136003A1 (en) 2014-09-12

Similar Documents

Publication Publication Date Title
CN104981786B (zh) 在多核芯片中为母核预取
US10684832B2 (en) Code placement using a dynamic call graph
CN105960639B (zh) 分布式存储系统中的优先化数据重构
CN104981787B (zh) 具有母核和侦察核的芯片的数据预取
CN104220980B (zh) 经管理的指令缓存预取
KR101973731B1 (ko) 버퍼 충만도에 기초한 캐시에 대한 프리페치
CN108268271A (zh) 微服务的升级方法与升级装置
JP2015511347A5 (zh)
CN104657286B (zh) 一种分级存储方法及装置
CN102834806A (zh) 系统结构管理设备、系统结构管理方法和程序
CN104133783B (zh) 处理分散式缓存数据的方法和装置
CN105683928B (zh) 用于数据高速缓存策略的方法、服务器和存储器设备
US20170091111A1 (en) Configurable cache architecture
CN102362258A (zh) 验证虚拟机
CN103777898A (zh) 操作存储器设备的方法及系统
CN103368789A (zh) 集群监视器、用于监视集群的方法及计算机可读记录介质
CN105431815A (zh) 用于数据库工作负荷的输入-输出优先化
US7908268B2 (en) Predictive database pool preparation
CN109492020A (zh) 一种数据缓存方法、装置、电子设备及存储介质
CN105637483B (zh) 线程迁移方法、装置和系统
CN109254880A (zh) 一种处理数据库宕机的方法及装置
US20150106797A1 (en) Dynamic code selection based on data policies
Li et al. Algorithm-Switching-Based Last-Level Cache Structure with Hybrid Main Memory Architecture
US20110264831A1 (en) Method and system for xml data transfer transactional coalescing
CN102955712B (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
GR01 Patent grant
GR01 Patent grant