CN104067266A - 带有对所有权的请求且没有数据的预取 - Google Patents

带有对所有权的请求且没有数据的预取 Download PDF

Info

Publication number
CN104067266A
CN104067266A CN201180076288.5A CN201180076288A CN104067266A CN 104067266 A CN104067266 A CN 104067266A CN 201180076288 A CN201180076288 A CN 201180076288A CN 104067266 A CN104067266 A CN 104067266A
Authority
CN
China
Prior art keywords
cache
cache line
request
semi
response
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
CN201180076288.5A
Other languages
English (en)
Other versions
CN104067266B (zh
Inventor
J·考博尔
L·K·吴
G·Z·克里斯沃斯
A·T·福塞斯
R·C·桑德拉拉曼
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 CN104067266A publication Critical patent/CN104067266A/zh
Application granted granted Critical
Publication of CN104067266B publication Critical patent/CN104067266B/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/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/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/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions

Landscapes

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

Abstract

本发明描述了一种由处理器执行的方法。该方法包括执行指令。该指令具有作为操作数的地址。该指令的执行包括把信号发送给处理器的高速缓存一致性协议逻辑。响应于该信号,高速缓存一致性协议逻辑发起对在该地址处的高速缓存线的所有权的请求。该高速缓存线不在处理器的高速缓存中。对所有权的请求也指示不把该高速缓存线发送给处理器。

Description

带有对所有权的请求且没有数据的预取
背景
发明领域
本发明的领域通常涉及计算科学且尤其涉及带有对所有权的请求且没有数据的预取。
背景技术
图1示出具有多个处理器核心101_1到101_N的处理器100。每一核心具有其自己的相应L1高速缓存102_1到102_N,但共享公共的系统存储器103。L1高速缓存102_1到102_N的共同目的是通过把数据项保持在有可能对其进行操作的核心的高速缓存中来最小化对共享存储器103的访问。然而,由于在不同的核心101_1到101_N上运行的相应程序代码可能希望并发地对相同的数据项进行操作是完全可能的,实现“一致性”协议以便确保数据项在计算系统内整体保持“一致”。
通常使用的一致性协议是MESI协议。MESI协议把四种不同的状态中的一种指派给任何高速缓存的项:1)修改(M);2)独占(E);3)共享(S);以及4)无效。处于M状态的高速缓存线对应于“脏”高速缓存线,其包括还没有更新到共享存储器的近来已更新的数据。处于E状态的高速缓存线对应于“清洁”的数据。即,其数据内容与共享存储器中其相应的条目(即,相同的地址)相同。在处理器把新的数据写到处于E状态的高速缓存线时,高速缓存线的状态被改变成M状态。在高速缓存线处于M状态时,在高速缓存线的相应地址处批准对共享存储器的读取之前,必须把已更新的数据回写到共享存储器。回写到存储器引起高速缓存线从M状态转变到E状态。
处于S状态的高速缓存线通常对应于具有跨越各种高速缓存102_1到102_N的多个副本的高速缓存线。在典型的情况中,高速缓存线的单个实例驻留在具体的处理器的高速缓存中的E状态。如果另一处理器期望相同的高速缓存线,则把高速缓存线的第二副本发送给请求的处理器。高速缓存线的状态因此从E改变成S,这是由于现在系统中存在高速缓存线的两个副本。存在MESI协议的其他各方面。然而,这样的特征是公知的,且不需要在这里讨论。
如果处理器101_1到101_N中的任何期望对处于S状态的高速缓存线的副本写入,则期望执行写入的处理器发起对高速缓存线的所有权的请求(request forownership,RFO),该请求被广播给其他处理器。如果批准该RFO,则使得其他处理器的高速缓存中的高速缓存线的任何其他副本无效(即,从S改变为I状态)。
如果RFO被批准的处理器具有处于S状态的高速缓存线的本地副本,则RFO的批准使得本地副本的状态转变到E状态,且随后的写入再次把状态从E状态改变成M状态。如果RFO被批准的处理器在发起RFO时不具有高速缓存线的本地副本,作为RFO的批准的一部分,从具有副本的其他处理器中的一个给它提供高速缓存线的副本。高速缓存线最初保持在E状态。随后的写入把高速缓存线从E状态转变到M状态。
在处理器发起对它期望写入的高速缓存线的RFO但在其自己的高速缓存中当前不具有副本时,不能确保所期望的高速缓存线处于其他高速缓存中的任何。在这种情况中,当其他高速缓存中的任何中不存在所期望的高速缓存线的实例时,从共享存储器取出高速缓存线并将其提供给处于E状态的请求处理器的高速缓存。
附图简述
作为示例而非限制在附图的各图中阐释本发明,附图中,类似的标号指示类似的元素,且附图中:
图1示出多个处理器和系统存储器;
图2示出用于发起RFO_NODATA请求的方法;
图3示出用于处理在批准RFO_NODATA请求之后创建的高速缓存中的条目的方法;
图4示出用于插入引起硬件发起RFO_NODATA请求的CLINITPREF M指令的程序代码编译过程;
图5示出具有能够处理RFO_NODATA请求的缓存和系统存储器协议代理的多处理器半导体芯片;
图6示出能够执行CLINTPREF M指令的处理核心流水线;
图7示出更详细的处理核心流水线;
图8示出计算系统。
详细描述
概览
从背景部分的讨论中回忆起,在处理器发起写入它当前在其自己的本地高速缓存中不具有的高速缓存线的RFO时,不能确保所期望高速缓存线处于另一处理器的高速缓存中。在这种情况中,被称为“高速缓存未命中”,从共享存储器取出高速缓存线并将其输入到请求处理器的高速缓存。
然而,在请求处理器旨在写入到整个高速缓存线(而不是部分地写入到高速缓存线)时,这种操作对应于低效率。在这里,高速缓存线通常被组织成不同的可单独寻址的部分(例如,字节)。至少在其中处理器旨在把新的数据写入到这些可单独寻址的部分中的每一个的情况下,在高速缓存未命中的情况中,从共享存储器取出高速缓存线没有任何作用。即,因为处理器旨在用新的数据完全盖写每一部分,浪费存储器带宽资源来取出将被完全盖写的数据没有任何有用作用。
图2涉及一种经改善的方法,其中,处理核心的指令集包括一种指令,如果程序代码相信它将盖写整个高速缓存线,则程序代码可以调用该指令。根据图2的方法,多核心处理器的处理核心支持指令CLINITPREF M,其充当硬件在地址M处预取高速缓存线的提示。
执行CLINITPREF M指令的处理核心首先检查其自己的高速缓存以便得到高速缓存线,201,且如果它存在(高速缓存命中),则该过程结束。如果高速缓存线不在处理器的本地高速缓存中(本地高速缓存未命中),则处理器向其他处理核心发起RFO_NODATA,202。如果RFO_NODATA得到批准,203,且另一高速缓存中存在高速缓存命中,204(即,其他处理核心中的至少一个在其本地高速缓存中具有该高速缓存线),则其他处理器使得它们的高速缓存线的本地副本无效。然而,不同于传统的已批准RFO和高速缓存命中,不把该高速缓存线提供给请求处理核心205。类似地,如果RFO_NODATA得到批准,203,且高速缓存线不驻留在其他处理核心的相应高速缓存中的任何(高速缓存未命中),则不从存储器取出所请求的高速缓存线,206。
相反,在一种实施例中,无需任何“真实”数据,在对所请求的高速缓存线发起RFO_NODATA的处理器的高速缓存中创建虚拟条目,207。理论上,通过在期望对高速缓存线的任何其他访问(例如,读取或部分写入)之前执行随后的存储指令,处理器在虚拟高速缓存线条目上完全写入。在这里,拒绝把高速缓存线转发给请求核心并且代之以创建虚拟条目,节省了在各协议代理之间以及在协议代理和系统存储器之间的带宽/通信资源。
虚拟条目可以被看作是具有一种新状态,该新状态被添加到MESI一致性协议中的一组传统的MESI状态。具体地,虚拟条目可以被看作是处于N状态:独占的状态,且应进一步理解,高速缓存线不具有数据(回忆起传统上经批准的RFO致使仅把高速缓存线的剩余副本置于E状态)。
理解了高速缓存线不具有数据,协议代理行为不同于如果高速缓存线处于传统的E状态的情况。具体地,如图3中可见,如果在处理核心执行读取虚拟条目的加载指令或执行仅部分地写入高速缓存线的存储指令303之前,该处理核心不能执行完全盖写高速缓存线的存储指令302,则该具有虚拟条目301的处理核心使得虚拟条目无效303。此外,如果由另一处理器做出对虚拟高速缓存线的读取或RFO请求,不是把高速缓存线转变到S状态并执行读取/RFO请求(即,向请求处理器发送高速缓存线的副本),而是使得虚拟高速缓存线无效(转变到I状态)并且不执行该请求。这迫使请求处理器从处于E状态的存储器接收高速缓存线。
注意,在各种实施例中,CLINITPREF M指令可以被看作是一种类型的预取指令,在高速缓存线是需要完全盖写的问题时,该取出指令有效地给系统准备地址M处的高速缓存线的完整盖写,而无需承受在各协议代理之间或在系统存储器接口上承受高速缓存线传输的惩罚。因而,CLINITPREF M在指令程序代码的编译中尤其有用。
在这里,参见图4,如果编译器识别将完全盖写高速缓存线的存储指令的存在,401,则编译器可以把CLINITPREF指令插入到在存储指令前面的代码中,402。因而,在运行时期间,首先执行CLINITPREF指令,其具有以下效果:i)使得其他处理核心中受影响的高速缓存线的任何共享副本无效;ii)给予将完全盖写高速缓存线的处理核心高速缓存线的独占所有权;以及iii)在处理核心的高速缓存中创建虚拟条目,以使得它将按其本地高速缓存中的高速缓存命中处理存储操作。
注意,与上面呈现的思想一致的各种实施例是可能的。例如,在其中处理核心将要完全盖写高速缓存线的情况中,图2的方法避免了在各核心之间的高速缓存线传输和在系统存储器接口上的高速缓存线传输两者的惩罚。
在例如可以被实现为以系统性能的代价强加较不复杂的一致性协议逻辑的替代实施例中,仅避免了跨越系统存储器接口的高速缓存线传输的惩罚。即,在请求处理核心发起RFO_NODATA请求时,把“无数据”部分附加到控制系统存储器访问的一致性协议逻辑的组件,而不是与各个核心的本地高速缓存相关联的一致性协议逻辑的组件。
因而,在处理核心发起RFO_NODATA请求时,如果另一处理核心在其本地高速缓存中具有高速缓存线,则把高速缓存线从具有该高速缓存线的处理核心转发给请求该高速缓存线的处理核心。如果跨越所有处理核心的本地高速缓存发生高速缓存未命中,则控制对系统存储器的访问的一致性逻辑理解,即使正常的高速缓存未命中应触发系统存储器的读取,在RFO_NODATA的情况中,也不应做出这样的读取。
在另一方法中,在指令中提供的提示,以指示在(例如多个)高速缓存未命中的情况中所请求的高速缓存线应向请求处理核心移动多远。例如,图5示出具有多个处理核心501_1–501_N(每一个都带有其自己的本地L1高速缓存502_1–502_N)和L2缓存层的多处理器芯片,L2缓存层由不同的L2高速缓存“片”503_1–503_X组成,其中每一片负责缓存不同的地址且具有其自己的关联一致性平面逻辑。交换核心509把各处理核心互连到L2高速缓存代理和系统存储器控制器507。L1高速缓存、L2高速缓存片两者以及系统存储器控制器507具有它们自己的相应协议代理逻辑电路504_1–504_N、505_1–505_X、508,用于实现与在此提供的教导一致的RFO_NODATA协议和N状态。
注意,上面所描述的实施例中的任何都可以在图5中可见的系统中实现。具体地,图5的系统如上所述操作,不同之处在于,响应于RFO_NODATA请求的所有L1高速缓存502_1到502_N中的未命中引起监听L2高速缓存。在第一实施例中,如果L2高速缓存中存在命中,则使得L2高速缓存中的副本无效且不将其转发给请求处理器。在替代的实施例中,使得L2高速缓存中的副本无效,但将其转发给请求处理器。替代的实施例浪费在L2高速缓存和处理器之间的通信资源509,但使得L2缓存代理的逻辑保持比第一实施例更加简单。如果L2高速缓存中存在未命中,则如刚才所描述的,该过程向系统存储器506行进。具体地,根据任一实施例,系统存储器协议代理508可以被设计为像以上所描述的L2高速缓存协议代理那样工作。
与这些选项一致,在进一步的实施例中,在CLINITPREF M指令中提供指定在处理器内的高速缓存线的数据移动的提示。即,系统可以被设计为支持以上所描述的实施例中的每一个,并且,在该指令中指定哪一实施例生效。具体地,该指令可以采取CLINITPREF M h的形式,其中h是规定在L2高速缓存中的命中时L2缓存协议代理是把高速缓存线(该高速缓存线是RFO_NODATA的对象)向上移动到L1高速缓存还是不把高速缓存线移动到L1高速缓存的临时提示。
单独地或组合地,临时提示h也可以指定在L2高速缓存未命中时系统存储器协议代理508是应该从系统存储器506取出高速缓存线还是不从系统存储器506取出高速缓存线。在进一步的实施例中,如果系统存储器协议代理508从系统存储器506取出高速缓存线,则高速缓存线仅移动到L2高速缓存且不通过任何方式传送到请求处理器。这具有节省在L2高速缓存和处理器(但不是系统存储器总线)之间的通信资源509的效果。在一种实施例中,在指令的立即操作数中指定临时提示信息h。
图6示出具有至少一个执行单元601的指令执行流水线600,至少一个执行单元601耦合到具有该流水线的处理核心的(例如,L1)高速缓存一致性逻辑602。在一种实施例中,响应于CLINITPREF M指令的执行,从执行单元601向高速缓存一致性逻辑602发送信号,该信号触发对指令中所指定的地址M的RFO_NODATA的发起。因此,该信号包括应当发起RFO_NODATA的某种指示以及地址M。可以把地址M从通用寄存器空间603路由到L1高速缓存一致性逻辑,其中把地址M保存为指令的输入操作数。可以直接把地址M从寄存器空间603路由到高速缓存协议代理逻辑602,或者可以通过流水线600路由地址M。在包含临时提示信息的CLINITPREF M h指令的情况中,也把临时提示信息从执行单元601传送到高速缓存一致性逻辑602,高速缓存一致性逻辑602把信息嵌入在RFO_NODATA请求中。
图7示出一般的处理核心700,该处理核心700被认为是描述多种不同类型的处理核架构,例如复杂指令集(CISC)、精简指令集(RISC)和超长指令字(VLIW)。图7的处理核心可以耦合到图6中所叙述的L1高速缓存代理协议逻辑和寄存器空间,以便支持CLINITPREF M指令的执行。
图7的一般处理核700包括:1)获取单元703,其获取指令(例如,从高速缓存或存储器);2)解码单元704,其解码指令;3)调度单元705,其确定到执行单元706的指令发布的时序和/或顺序(注意,调度程序是任选的);4)执行单元706,其执行指令;5)引退单元707,其表示指令的成功完成。值得注意的是,处理核部分地或完全地可以包括或可以不包括控制执行单元706的微操作的微代码708。在前面的讨论中提及的指令执行资源/逻辑可利用执行单元706内的执行单元中的一种或多种实现。
也可以在各种计算系统中实现具有以上所描述的功能性的处理核心。图8示出计算系统(例如,计算机)的实施例。图8的示例性计算系统包括:1)一个或多个处理核心801,其可以被设计为包括两个和三个寄存器标量整数和矢量指令执行;2)存储器控制中枢(MCH)802;3)系统存储器803(存在不同类型的系统存储器,例如DDR RAM、EDO RAM等等);4)高速缓存804;5)I/O控制中枢(ICH)805;6)图形处理器806;7)显示器/屏幕807(存在不同类型的显示器/屏幕,例如阴极射线管(CRT)、平面显示器、薄膜晶体管(TFT)、液晶显示器(LCD)、DPL等等);8)一个或多个I/O设备808。
一个或多个处理核心801执行指令以便执行计算系统实现的任何软件例程。指令频繁地涉及某种类型的对数据执行的操作。数据和指令两者被存储在系统存储器803和高速缓存804中。高速缓存804通常被设计成具有比系统存储器803更短的延迟时间。例如,高速缓存804可以被集成到与(多个)处理器相同的硅芯片上和/或借助于较快的SRAM单元来构建,同时系统存储器803可以借助于DRAM单元来构建。通过往往把更频繁地使用的指令和数据存储在高速缓存804而不是系统存储器803中,改善了计算系统改善的总体性能效率。
有意使得系统存储器803可由在计算系统内的其他组件使用。例如,在软件程序的实现中由一个或多个处理器801操作之前,从到计算系统的各种接口(例如,键盘和鼠标、打印机端口、LAN端口、调制解调器端口等等)接收或从计算系统的内部存储元件(例如,硬盘驱动器)检索的数据常常临时在系统存储器803中排队。类似地,软件程序确定应当通过各计算系统接口中的一个从计算系统发送到外部实体或存储到内部存储元件的数据在传输或存储之前常常临时在系统存储器803中排队。
ICH805负责确保在系统存储器803及其适当的相应计算系统接口(以及内部存储设备,如果计算系统被设计为如此的话)之间适当地传输这样的数据。MCH802负责管理在(多个)处理器801、接口和内部存储元件当中对系统存储器803访问的、可能相对于彼此在时间上很接近地出现的各种竞争性请求。
也在典型计算系统中实现一个或多个I/O设备808。I/O设备通常负责传输去往和/或来自计算系统的数据(例如,联网适配器);或者负责在计算系统内的大规模非易失性存储(例如,硬盘驱动器)。ICH805在自身和所示的I/O设备808之间具有双向点对点链路。
上面的讨论所教导的过程可以用程序代码来执行,例如引起机器执行这些指令以便执行某些功能的机器可执行指令。在这一上下文中,“机器”可以是把中间形式(或者“抽象”)指令转换为处理器专用指令的机器(例如,抽象执行环境,例如“虚拟机”(例如,Java虚拟机)、解释器、公共语言运行时、高级语言虚拟机等))和/或被设计为执行指令的、被放置在半导体芯片上的电子电路(例如,用晶体管实现的“逻辑电路”),例如通用处理器和/或专用处理器。上面的讨论所教导的过程也可以由(在替代方案中,以一台机器或与机器组合)被设计为执行该过程(或其部分)的电子电路执行,而无需执行程序代码。
相信以上讨论所教导的过程也可按各种软件部署框架(例如微软公司的.NET、Mono、Java,甲骨文公司的Fusion等)支持的各种面向对象或非面向对象的计算机编程语言(例如,Java、C#、VB、Python、C、C++、J#、APL、Cobol、Fortran、Pascal、Perl等)在源级程序代码中描述。源级程序代码可被转换成中间形式的程序代码(诸如Java字节代码、微软中间语言等),可将其理解为抽象执行环境(例如,Java虚拟机、公共语言运行时、高级语言虚拟机、解释器等),或者可直接编译成对象代码。
根据各种方法,通过1)编译中间形式的程序代码(例如在运行时间(例如JIT编译器)),2)解释中间形式的程序代码或3)在运行时间编译中间形式的程序代码和解释中间形式的程序代码的组合,抽象执行环境可将中间形式的程序代码转换成处理器专用代码。抽象执行环境可运行在各种操作系统上(诸如UNIX、LINUX、包括Windows系列的微软操作系统、包括MacOS X的苹果计算机操作系统、Sun/Solaris、OS/2、Novell等)。
制品可用于存储程序代码。存储程序代码的制品可体现为但不限于一个或多个存储器(例如,一个或多个闪存、随机存取存储器(静态、动态或其它))、光盘、CD-ROM、DVD ROM、EPROM、EEPROM、磁或光卡或适于存储电子指令的其它类型的机器可读介质。还可从远程计算机(例如,服务器)将程序代码作为体现在传播介质中的数据信号(例如,经由通信链路(例如,网络连接))下载至请求计算机(例如,客户机)。
在前述的说明书中,已经参考其特定的示例性实施例描述了本发明。然而,将明显看出,可以在不偏离所附权利要求中所陈述的本发明的宽广精神和范围的前提下对其做出各种修改和改变。
权利要求书(按照条约第19条的修改)
1.一种半导体芯片,其具有多个处理核心,包括:
所述处理核心的第一处理核心,具有第一L1高速缓存和第一L1高速缓存一致性逻辑,所述第一L1高速缓存一致性逻辑发起对高速缓存线的所有权的请求,但无需响应于所述请求接收所述高速缓存线,响应于所述第一处理核心执行提示即将到来的程序代码旨在完全写入所述高速缓存线的提示指令,发起所述请求,响应于接收对所述请求的批准,所述第一L1高速缓存一致性逻辑在所述第一处理核心的L1高速缓存中为所述高速缓存线创建虚拟条目。
2.如权利要求1所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于发起对所述高速缓存线的读取请求,所述第一L1高速缓存一致性逻辑使得所述虚拟条目无效。
3.如权利要求1所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于所述处理器执行存储指令,所述第一L1高速缓存一致性逻辑使得所述虚拟条目无效。
4.如权利要求1所述的半导体芯片,其特征在于,在L2高速缓存未命中的情况中,所述指令包含判断是否从系统存储器读取所述高速缓存线的临时提示信息。
5.如权利要求1所述的半导体芯片,其特征在于,所述处理核心的指令处理流水线的执行单元执行所述提示指令,所述执行单元耦合到所述第一L1高速缓存一致性逻辑,以便发送应发起所述请求的信号。
6.如权利要求1所述的半导体芯片,进一步包括L2高速缓存一致性逻辑,所述L2高速缓存一致性逻辑被设计为在L2高速缓存命中的情况中响应于所述请求不把所述高速缓存线转发给所述处理核心。
7.如权利要求1所述的半导体芯片,进一步包括系统存储器一致性逻辑,所述系统存储器一致性逻辑被设计为在L2高速缓存未命中的情况中响应于所述请求不从系统存储器取出所述高速缓存线。
8.一种由处理器执行的方法,包括:
执行指令,所述指令具有作为操作数的地址以及临时提示信息,所述指令的执行包括把信号发送给所述处理器的高速缓存一致性协议逻辑;
响应于所述信号,所述高速缓存一致性协议逻辑发起对在所述地址处的高速缓存线的所有权的请求,所述高速缓存线不在所述处理器的高速缓存中,所述对所有权的请求也指示不把所述高速缓存线发送给所述处理器,所述临时提示信息判断在高速缓存未命中而不是L1高速缓存未命中的情况中是否从系统存储器读取所述高速缓存线。
9.如权利要求8所述的方法,进一步包括在所述高速缓存中为所述高速缓存线创建虚拟条目。
10.如权利要求9所述的方法,进一步包括如果对所述高速缓存线的下次访问不是对所述高速缓存线的完全写入则使得所述虚拟条目无效。
11.如权利要求10所述的方法,其特征在于,所述下次访问少于对所述高速缓存线的完全写入。
12.如权利要求10所述的方法,其特征在于,所述下次访问是所述高速缓存线的读取。
13.如权利要求8所述的方法,进一步包括,响应于所述请求,把所述高速缓存线从系统存储器移动到位于所述高速缓存和系统存储器之间的第二高速缓存。
14.一种具有多个处理核心的半导体芯片,包括:
所述处理核心的第一处理核心,具有第一高速缓存和第一高速缓存一致性逻辑,所述第一高速缓存一致性逻辑发起对高速缓存线的所有权的请求,但即使所述高速缓存线不在所述第一高速缓存中也无需响应于所述请求而接收所述高速缓存线,响应于所述第一处理核心执行提示即将到来的程序代码旨在完全写入所述高速缓存线的提示指令,发起所述请求,
所述半导体芯片进一步包括用于第二高速缓存的第二高速缓存一致性逻辑,所述第一高速缓存在所述第一处理核心和所述第二高速缓存之间,在所述第二高速缓存的高速缓存命中的情况中,响应于所述请求,所述第二高速缓存一致性逻辑不把所述缓存线转发给所述处理核心。
15.如权利要求14所述的半导体芯片,其特征在于,响应于接收对所述请求的批准,所述第一高速缓存一致性逻辑在所述第一高速缓存中为所述高速缓存线创建虚拟条目。
16.如权利要求15所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于发起对所述高速缓存线的读取请求,所述第一高速缓存一致性逻辑使得所述虚拟条目无效。
17.如权利要求15所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于所述处理器执行存储指令,所述第一高速缓存一致性逻辑使得所述虚拟条目无效。
18.如权利要求14所述的半导体芯片,其特征在于,所述指令包含在所述第一高速缓存和系统存储器之间的第二高速缓存未命中的情况中判断是否从系统存储器读取所述高速缓存线的临时提示信息。
19.如权利要求14所述的半导体芯片,其特征在于,所述处理核心的指令处理流水线的执行单元执行所述提示指令,所述执行单元被耦合到所述第一高速缓存一致性逻辑以便发送要发起所述请求的信号。

Claims (20)

1.一种半导体芯片,其具有多个处理核心,包括:
所述处理核心的第一处理核心,具有第一L1高速缓存和第一L1高速缓存一致性逻辑,所述第一L1高速缓存一致性逻辑发起对高速缓存线的所有权的请求,但无需响应于所述请求接收所述高速缓存线,响应于所述第一处理核心执行提示即将到来的程序代码旨在完全写入所述高速缓存线的提示指令,发起所述请求。
2.如权利要求1所述的半导体芯片,其特征在于,响应于接收对所述请求的批准,所述第一L1高速缓存一致性逻辑在所述第一处理核心的L1高速缓存中为所述高速缓存线创建虚拟条目。
3.如权利要求2所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于发起对所述高速缓存线的读取请求,所述第一L1高速缓存一致性逻辑使得所述虚拟条目无效。
4.如权利要求2所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于所述处理器执行存储指令,所述第一L1高速缓存一致性逻辑使得所述虚拟条目无效。
5.如权利要求1所述的半导体芯片,其特征在于,在L2高速缓存未命中的情况中,所述指令包含判断是否从系统存储器读取所述高速缓存线的临时提示信息。
6.如权利要求1所述的半导体芯片,其特征在于,所述处理核心的指令处理流水线的执行单元执行所述提示指令,所述执行单元耦合到所述第一L1高速缓存一致性逻辑,以便发送应发起所述请求的信号。
7.如权利要求1所述的半导体芯片,进一步包括L2高速缓存一致性逻辑,所述L2高速缓存一致性逻辑被设计为在L2高速缓存命中的情况中响应于所述请求不把所述高速缓存线转发给所述处理核心。
8.如权利要求1所述的半导体芯片,进一步包括系统存储器一致性逻辑,所述系统存储器一致性逻辑被设计为在L2高速缓存未命中的情况中响应于所述请求不从系统存储器取出所述高速缓存线。
9.一种由处理器执行的方法,包括:
执行指令,所述指令具有作为操作数的地址,所述指令的执行包括把信号发送给所述处理器的高速缓存一致性协议逻辑;
响应于所述信号,所述高速缓存一致性协议逻辑发起对在所述地址处的高速缓存线的所有权的请求,所述高速缓存线不在所述处理器的高速缓存中,所述对所有权的请求也指示不把所述高速缓存线发送给所述处理器。
10.如权利要求9所述的方法,进一步包括在所述高速缓存中为所述高速缓存线创建虚拟条目。
11.如权利要求10所述的方法,进一步包括如果对所述高速缓存线的下次访问不是对所述高速缓存线的完全写入则使得所述虚拟条目无效。
12.如权利要求11所述的方法,其特征在于,所述下次访问少于对所述高速缓存线的完全写入。
13.如权利要求11所述的方法,其特征在于,所述下次访问是所述高速缓存线的读取。
14.如权利要求9所述的方法,进一步包括,响应于所述请求,把所述高速缓存线从系统存储器移动到位于所述高速缓存和系统存储器之间的第二高速缓存。
15.一种具有多个处理核心的半导体芯片,包括:
所述处理核心的第一处理核心,具有第一高速缓存和第一高速缓存一致性逻辑,所述第一高速缓存一致性逻辑发起对高速缓存线的所有权的请求,但即使所述高速缓存线不在所述第一高速缓存中也无需响应于所述请求而接收所述高速缓存线,响应于所述第一处理核心执行提示即将到来的程序代码旨在完全写入所述高速缓存线的提示指令,发起所述请求。
16.如权利要求15所述的半导体芯片,其特征在于,响应于接收对所述请求的批准,所述第一高速缓存一致性逻辑在所述第一高速缓存中为所述高速缓存线创建虚拟条目。
17.如权利要求16所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于发起对所述高速缓存线的读取请求,所述第一高速缓存一致性逻辑使得所述虚拟条目无效。
18.如权利要求16所述的半导体芯片,其特征在于,在所述处理器能够完全写入所述高速缓存线之前,响应于所述处理器执行存储指令,所述第一高速缓存一致性逻辑使得所述虚拟条目无效。
19.如权利要求15所述的半导体芯片,其特征在于,所述指令包含在所述第一高速缓存和系统存储器之间的第二高速缓存未命中的情况中判断是否从系统存储器读取所述高速缓存线的临时提示信息。
20.如权利要求15所述的半导体芯片,其特征在于,所述处理核心的指令处理流水线的执行单元执行所述提示指令,所述执行单元被耦合到所述第一高速缓存一致性逻辑以便发送要发起所述请求的信号。
CN201180076288.5A 2011-12-22 2011-12-22 带有对所有权的请求且没有数据的预取 Active CN104067266B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066854 WO2013095511A1 (en) 2011-12-22 2011-12-22 Prefetch with request for ownership without data

Publications (2)

Publication Number Publication Date
CN104067266A true CN104067266A (zh) 2014-09-24
CN104067266B CN104067266B (zh) 2017-12-26

Family

ID=48669152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180076288.5A Active CN104067266B (zh) 2011-12-22 2011-12-22 带有对所有权的请求且没有数据的预取

Country Status (4)

Country Link
US (1) US9430389B2 (zh)
CN (1) CN104067266B (zh)
TW (1) TWI531913B (zh)
WO (1) WO2013095511A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933539A (zh) * 2016-04-20 2017-07-07 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921966B2 (en) * 2014-05-09 2018-03-20 Intel Corporation Employing prefetch to reduce write overhead
US9961012B2 (en) * 2015-12-21 2018-05-01 Microsoft Technology Licensing, Llc Per-stage assignment of pipelines agents
US10802971B2 (en) 2016-10-13 2020-10-13 International Business Machines Corporation Cache memory transaction shielding via prefetch suppression
US10664273B2 (en) * 2018-03-30 2020-05-26 Intel Corporation Delayed prefetch manager to multicast an updated cache line to processor cores requesting the updated data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775955A (en) * 1985-10-30 1988-10-04 International Business Machines Corporation Cache coherence mechanism based on locking
US20020124143A1 (en) * 2000-10-05 2002-09-05 Compaq Information Technologies Group, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
US20040088487A1 (en) * 2000-06-10 2004-05-06 Barroso Luiz Andre Scalable architecture based on single-chip multiprocessing
CN1495618A (zh) * 2002-09-20 2004-05-12 英特尔公司 芯片多处理器或多处理系统的高速缓存共享

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842826B1 (en) * 2000-06-07 2005-01-11 International Business Machines Incorporated Method and apparatus for providing efficient management of least recently used (LRU) algorithm insertion points corresponding to defined times-in-cache
US6865645B1 (en) * 2000-10-02 2005-03-08 International Business Machines Corporation Program store compare handling between instruction and operand caches
US6772298B2 (en) * 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7546422B2 (en) * 2002-08-28 2009-06-09 Intel Corporation Method and apparatus for the synchronization of distributed caches
US7284097B2 (en) * 2003-09-30 2007-10-16 International Business Machines Corporation Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
US7395407B2 (en) * 2005-10-14 2008-07-01 International Business Machines Corporation Mechanisms and methods for using data access patterns

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775955A (en) * 1985-10-30 1988-10-04 International Business Machines Corporation Cache coherence mechanism based on locking
US20040088487A1 (en) * 2000-06-10 2004-05-06 Barroso Luiz Andre Scalable architecture based on single-chip multiprocessing
US20020124143A1 (en) * 2000-10-05 2002-09-05 Compaq Information Technologies Group, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
CN1495618A (zh) * 2002-09-20 2004-05-12 英特尔公司 芯片多处理器或多处理系统的高速缓存共享

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933539A (zh) * 2016-04-20 2017-07-07 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法

Also Published As

Publication number Publication date
US9430389B2 (en) 2016-08-30
CN104067266B (zh) 2017-12-26
TWI531913B (zh) 2016-05-01
TW201342086A (zh) 2013-10-16
WO2013095511A1 (en) 2013-06-27
US20140164705A1 (en) 2014-06-12

Similar Documents

Publication Publication Date Title
US20200151016A1 (en) Technique for computational nested parallelism
US9436504B2 (en) Techniques for managing the execution order of multiple nested tasks executing on a parallel processor
US8797332B2 (en) Device discovery and topology reporting in a combined CPU/GPU architecture system
JP5738998B2 (ja) マルチプルプロセッサ計算プラットフォームにおけるプロセッサ間通信技法
US8881159B2 (en) Constant time worker thread allocation via configuration caching
KR101697937B1 (ko) 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
US5983310A (en) Pin management of accelerator for interpretive environments
CN108268385B (zh) 具有集成目录高速缓存的优化的高速缓存代理
US9229715B2 (en) Method and apparatus for efficient inter-thread synchronization for helper threads
US20120110586A1 (en) Thread group scheduler for computing on a parallel thread processor
US20060092165A1 (en) Memory management system having a forward progress bit
US9069609B2 (en) Scheduling and execution of compute tasks
WO2012174128A1 (en) General purpose digital data processor, systems and methods
US9626216B2 (en) Graphics processing unit sharing between many applications
US8239866B2 (en) Reduction of memory latencies using fine grained parallelism and FIFO data structures
JP2008269474A (ja) 情報処理装置およびアクセス制御方法
CN104067266A (zh) 带有对所有权的请求且没有数据的预取
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
US8868876B2 (en) Dedicated large page memory pools
Trompouki et al. Optimisation opportunities and evaluation for GPGPU applications on low-end mobile GPUs
US20130135327A1 (en) Saving and Restoring Non-Shader State Using a Command Processor
US20230236878A1 (en) Efficiently launching tasks on a processor
CN115357552A (zh) 消息队列报文存储方法、装置、设备、存储介质和程序产品
CN110609680A (zh) 基于Spring拦截器的参数传递方法、装置、存储介质及设备
US11687460B2 (en) Network cache injection for coherent GPUs

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