CN108885586A - 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 - Google Patents

用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 Download PDF

Info

Publication number
CN108885586A
CN108885586A CN201780021196.4A CN201780021196A CN108885586A CN 108885586 A CN108885586 A CN 108885586A CN 201780021196 A CN201780021196 A CN 201780021196A CN 108885586 A CN108885586 A CN 108885586A
Authority
CN
China
Prior art keywords
instruction
cache
processor
data
taking
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
CN201780021196.4A
Other languages
English (en)
Other versions
CN108885586B (zh
Inventor
J·A·科尔曼
P·C·阿雷拉诺
G·德朗
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 CN108885586A publication Critical patent/CN108885586A/zh
Application granted granted Critical
Publication of CN108885586B publication Critical patent/CN108885586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3802Instruction prefetching
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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

用于以有保证的完成将数据取出到所指示的高速缓存层级的 处理器、方法、系统和指令
背景技术
技术领域
本文中所描述的实施例一般涉及处理器。具体而言,本文中所描述的实施例一般涉及将数据从存储器加载到处理器中。
背景信息
为了提高性能,处理器典型地具有至少一个高速缓存。高速缓存可表示相对小的快速访问本地存储,其相对靠近于处理器。在操作期间,可将系统存储器中的数据的子集存储在高速缓存中。当处理器想要从系统存储器读取数据或向系统存储器写入数据时,处理器可首先检查以查看该数据的副本是否被存储在高速缓存中。如果数据被存储在高速缓存中,则处理器可从该高速缓存访问数据,而不需要从系统存储器访问该数据。一般地,相比于从系统存储器访问,可以快得多地从高速缓存访问数据。作为示例,从高速缓存对数据的访问一般可花费不多于几个处理器时钟周期,而对系统存储器中的数据的访问一般花费至少一个数量级更长的处理器时钟周期,如果不是更多的话。
附图说明
通过参考以下描述以及用于说明多个实施例的附图,可最佳地理解本发明。在附图中:
图1是包括处理器和系统存储器的实施例的系统的框图。
图2是可操作以执行取出指令的实施例的处理器的实施例的框图。
图3是执行取出指令的实施例的方法的实施例的流程框图。
图4是取出指令的第一示例实施例的框图。
图5是图示出不同的3位高速缓存层级指示字段值到不同的所指示的高速缓存层级的映射的合适的示例的表。
图6是取出指令的第二示例实施例的框图。
图7是可操作以执行取出指令的实施例的处理器的示例实施例的框图。
图8A是图示出有序流水线的实施例以及寄存器重命名的乱序发布/执行流水线的实施例的框图。
图8B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单元,并且执行引擎单元和前端单元两者都耦合到存储器单元。
图9A是单个处理器核以及它与管芯上互连网络的连接及其第二级(L2)高速缓存的本地子集的实施例的框图。
图9B是图9A的处理器核的部分的展开图的实施例的框图。
图10是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件的处理器的实施例的框图。
图11是计算机架构的第一实施例的框图。
图12是计算机架构的第二实施例的框图。
图13是计算机架构的第三实施例的框图。
图14是计算机架构的第四实施例的框图。
图15是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本文中所公开的是取出指令、用于执行该取出指令的处理器、在处理或执行该取出指令时由处理器执行的方法、以及包含用于处理或执行该取出指令的一个或多个处理器的系统。在一些实施例中,处理器可具有:解码单元或用于接收取出指令和/或对该取出指令解码的其他逻辑;以及高速缓存控制器、其他执行单元或用于执行该取出指令的其他逻辑。在下列描述中,阐述众多特定细节(例如,特定指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,可在没有这些特定细节的情况下实施实施例。在其他实例中,未详细示出公知的电路、结构和技术,以避免使对本说明书的理解模糊。
图1是系统100的框图,该系统100包括处理器101和系统存储器102。在各实施例中,系统可表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器、交换机等)、媒体播放器、智能电视机、上网机、机顶盒、视频游戏控制器、工业控制设备、具有嵌入式控制器的机器或设备或其他类型的电子设备。处理器可与存储器耦合,或通过常规的耦合机制(例如,通过一个或多个总线、中枢、存储器控制器、芯片组组件等等)以其他方式彼此通信。
处理器可任选地是多核处理器,其可包括第一核103-1到第N核103-N,其中,核的数量可以是针对特定的实现方式所需要的任何合理的数量(例如,通常在从一个核到几十个核的量级的范围)。第一核具有指令集104。该指令集可包括宏指令、机器级指令、汇编级指令或处理器能够解码和执行的其他指令或控制信号。第一核还具有一组流水线组件108。作为示例,流水线组件可包括任选的预取单元、取出单元、解码单元、一组执行单元、引退或其他提交单元,任选地包括乱序流水线组件,等等。可将指令集中的指令提供给流水线组件,以进行解码、执行或以其他方式实行。
第一核还包括架构寄存器109(例如,一个或多个架构寄存器堆)。该架构寄存器可表示对软件和/或编程者可见的寄存器和/或由指令集中的指令指定或指示以标识操作数的寄存器。架构寄存器一般表示用于存储指令的操作数的管芯上处理器存储位置。架构寄存器可以或可以不被重命名、别名等。为了简化起见,架构寄存器在本文中还可被简称为寄存器。其他核(例如,第N核)可以任选地与第一核相同或者不同于第一核。
在操作期间,处理器101可从系统存储器102加载或检取数据117,处理该数据,并且随后将经处理的或经更新的数据往回存储到系统存储器。一个挑战在于,对存储在系统存储器中的数据的访问通常倾向于具有相对高的等待时间。为了提高性能,处理器通常可具有至少一个高速缓存(例如,高速缓存111-1)或包括处于不同高速缓存层级的多个高速缓存(例如,高速缓存111-1、111-N、112-1、112-N、113、114)的高速缓存层级结构115。高速缓存中的每一个可表示相对小的快速访问本地存储,其相比于系统存储器102相对更靠近于核103和/或流水线组件108(例如,执行单元)。在操作期间,高速缓存可用于高速缓存或存储来自系统存储器的数据的子集,该数据的子集已经从系统存储器加载到处理器中。随后,当处理器想要从系统存储器读取数据或向系统存储器写入数据时,该处理器可首先检查以查看该数据的副本是否被存储在高速缓存中。如果数据被存储在高速缓存中,则处理器可从这些高速缓存访问数据,而不需要从系统存储器访问该数据。一般地,相比于从系统存储器访问,可以快得多地从高速缓存访问数据。作为示例,对来自高速缓存的数据的访问一般可花费不多于几个处理器时钟周期,而对系统存储器中的数据的访问一般花费至少一个数量级更长的处理器时钟周期,如果不是更多的话。结果是,将一个或多个高速缓存包括在处理器中可有助于减少将数据检取到处理器中所需要的时间的平均量,这进而可有助于提高处理器性能和/或吞吐量。
再次参考图1,所图示的处理器具有包括处于两个或更多个不同的高速缓存层级的至少两个高速缓存(例如,高速缓存111-1、111-N、112-1、112-N、113、114中的至少两个)的高速缓存层级结构115。这些高速缓存层级在其与核103和/或其流水线组件108(例如,执行单元)的相对靠近度方面有所不同。在所图示的高速缓存层级结构的特定示例中,第一核103-1具有用于高速缓存或存储指令的专用第一级或第1级(L1)指令高速缓存111-1以及用于高速缓存或存储数据的专用L1数据高速缓存112-1。类似地,第N核103-1具有用于高速缓存或存储指令的专用第一级或第1级(L1)指令高速缓存111-N以及用于高速缓存或存储数据的专用L1数据高速缓存112-N。专用L1高速缓存中的每一个可由将该专用L1高速缓存包括在其中的对应核专用(例如,用于为对应核高速缓存数据)。L1高速缓存处于最靠近于核和/或它们的执行单元的高速缓存层级。特定的所图示的高速缓存层级结构还包括共享的统一第二级或第2级(L2)高速缓存113。术语统一用于指示L2高速缓存可存储指令和数据两者。L2高速缓存处于次靠近于核和/或它们的执行单元的高速缓存层级。共享L2高速缓存可由核中的至少一些或所有的核共享(例如,为其高速缓存数据),而不是对任何特定的单个核专用。如所示,所图示的高速缓存层级结构还可任选地/潜在地包括任选的共享的统一第三级或第3级(L3)高速缓存114,但这不是必需的。L3高速缓存可以处于更远离于核和/或它们的执行单元的高速缓存层级,但仍然比系统存储器更靠近于核和/或它们的执行单元。在另一实施例中,每个核可替代地包括专用统一L2高速缓存而不是共享的L2高速缓存113,并且高速缓存层级结构可任选地/潜在地包括共享的L3高速缓存,并且任选地/潜在地包括共享的第四级或第4级(L4)高速缓存,但这不是必需的。其他高速缓存层级结构也是合适的,并且可以宽泛地包括处于两个或更多个不同高速缓存层级的至少两个高速缓存。
从较靠近于核的高速缓存访问数据一般倾向于比从较远离于核的高速缓存访问数据更快。例如,对L1高速缓存中的数据的访问一般倾向于比对L2高速缓存中的数据的访问更快,对L2高速缓存中的数据的访问一般倾向于比对L3高速缓存中的数据的访问更快,以此类推。相应地,在一些实施例中,能够指定或以其他方式标识将使用哪个高速缓存层级存储给定的数据和/或指令可以是有益的。例如,此类决策可至少部分基于将多频繁地访问数据/指令,快速地访问数据/指令有多重要,多确定将需要数据/指令,等等。另外,通常,更靠近于核的高速缓存(例如,L1高速缓存)一般倾向于比更远离于这些核的高速缓存(例如,L2高速缓存和L3高速缓存)更小。相应地,较小的高速缓存中存储空间的量可更受限制,进一步增强了能够至少部分基于给定的数据/指令的特性、预期用途、期望等等来指定或以其他方式指示将使用哪个高速缓存层级来高速缓存该给定的数据/指令的益处。
在操作期间,一般将通过驱逐已经老化的和/或在不久的将来以其他方式不太可能需要的数据来随时间改变高速缓存中的数据,以便为在不久的将来可能需要的数据腾出空间。本领域中为此目的的各种替代算法和策略是已知的。此类替代算法和策略通常使驱逐部分地基于数据的年龄和/或根据时间局部性的最近使用。另外,处理器可实现高速缓存一致性机制或协议来帮助确保高速缓存中的数据被一致地管理并在恰当的时间被写回到系统存储器,以使得所有的核、处理器或系统中的其他实体一致地查看数据的正确的和当前的版本。合适的高速缓存一致性协议的示例包括但不限于MESI、MOSI、MOESI等等。MESI协议包括四种状态,即修改的(M)、排他的(E)、共享的(S)以及无效的(I),这些状态由两个MESI位指示。MOSI协议利用自身拥有的(owned)(O)状态代替排他的(E)状态。MOESI协议利用排他的(E)和自身拥有的(O)状态两者。修改的状态指明脏高速缓存行(dirty cacheline)。
为了使高速缓存是最有效的,保持它们填充有在不久的将来可能需要的相关数据一般是重要的。例如,如果第一核103-1要执行指令,那么若已经提前将该指令存储在高速缓存层级结构115中,则该第一核一般可以立即执行该指令,而若相反尚未将该指令存储在高速缓存层级结构中而是需要在第一核103-1具有资源并且准备好执行第一指令时从系统存储器102加载该指令,则该指令的执行可能被延迟。类似地,如果第一核要对给定的数据执行指令,那么若已经提前将指令和给定的数据两者存储在高速缓存层级结构中,则该第一核一般可以立即执行该指令,而若尚未将该指令和/或给定的数据存储在高速缓存层级结构中,而是需要在需要它们时从系统存储器加载该指令和给定的数据,则该指令的执行可能被延迟。相应地,高速缓存的非最优使用可倾向于创建处理器准备好执行工作并且具有执行该工作的时间和资源以及可用性但可能被停止而等待将从系统存储器检取的指令和/或它们的数据的情况。此类情况一般倾向于表示处理器资源的低效率的使用,并且可倾向于降级性能。幸运的是,在许多情况下,提前知道(例如,通过编程者和/或编译器或其他软件)需要什么指令和/或数据是可能的。
再次参考图1,第一核103-1的指令集104可包括用于将数据和/或指令加载到处理器的高速缓存中的一个或多个指令105、106、107。作为示例,编程者和/或编译器可包括程序中的这些不同类型的指令中的一个或多个,以便在实际地需要数据和/或指令之前将这些数据和/或指令加载到高速缓存中。通常,数据和/或指令可恰好在实际需要它们之前被加载到高速缓存中,以使得它不会不必要地在被使用之前占用高速缓存很长驻留期和/或时期以及被驱逐。此类指令在以此种方式使用时,可有助于在需要数据和/或指令之前将这些数据和/或指令放置在高速缓存中。这可有助于避免或至少减少高速缓存未命中的数量,这进而可有助于提高处理器性能和/或吞吐量。
指令集可包括取出指令106的实施例。另外,在一些实施例中,该指令集可任选地包括加载指令105和/或可任选地包括预取指令107。这三种不同类型的指令中的每一个在不同的情形下可不同地执行加载和/或可提供不同的可能优势。
在一些实施例中,加载指令105可指示系统存储器中的数据117,并且可以不指定或具体地指示高速缓存层级结构115中的高速缓存层级。在执行时,加载指令105可以可操作以使得处理器从系统存储器102加载所指示的数据117,并且将所加载的数据存储为已经由加载指令105加载在执行核的架构寄存器109中的数据110。在执行时,加载指令105还可以可操作以使得处理器将所加载的数据存储为已经由加载指令105加载在高速缓存层级结构中(例如,在此情况下,在L3高速缓存114中)但不处于该高速缓存层级结构中的任何所指定的或具体所指示的高速缓存层级的数据121。在一些实施例中,可以从架构上保证该加载指令将被执行并完成。例如,对应于该加载指令的加载可由处理器视为所谓的具有高优先级并且处理器一般不能决定不执行或完成的需求加载。
在一些实施例中,预取指令107可指示系统存储器中的数据117,可指定或以其他方式指示高速缓存层级结构115中的给定的高速缓存层级(例如,在该特定示例中,对应于L2高速缓存113的层级),并且可由处理器视为架构的提示并且/或者可以不从架构上保证该指令将被执行和/或完成。在一些情况下,如果执行并完成该预取指令,则其可以可操作以使得处理器从系统存储器102中加载所指示的数据117,并且将所加载的数据存储为已经由预取指令107加载在处于所指示的给定高速缓存层级(例如,在该特定示例中,为对应于L2高速缓存113的层级)的给定的高速缓存中的数据120。与加载指令105相比,如果执行并完成预取指令107,则该预取指令可能无法操作以使得处理器将所加载的数据存储在执行核的架构寄存器109中。
然而,在其他情况下,可以不执行和/或可以不完成预取指令107。如先前所提到,该预取指令可表示架构的提示并且/或者可以不从架构上保证该预取指令将被执行和/或完成。该提示可向处理器建议加载所指示的数据可能是期望的,但是处理器可能在架构上不受约束或者不需要实际加载所指示的数据。相反,处理器可以是架构上自由的,或者允许处理器决定是否想要执行和完成预取指令。例如,处理器可以能够基于各种因素来作出该决策,这些因素诸如例如,当前的工作负荷、可用的资源、处理器是否有其他想要做的事情、是否相反对需求加载需要时间和/或资源,等等。在一些情况下,处理器(例如,其存储器子系统组件中的一个)可故意地决定或确定不执行和/或完成预取指令。作为一个示例,如在118处所示出,存储器控制器116可确定丢弃预取指令(例如,从其缓冲区移除对应于预取指令的操作、将预取指令作为无操作(NOP)来执行等)。相应地,用于预取指令的加载可具有比需求加载更低的优先级,并且可以不从架构上保证该用于预取指令的加载将被执行或完成。
在一些实施例中,取出指令106可指示系统存储器中的数据117(例如,提供地址信息,以指示潜在地与其他信息组合的存储器位置),并且可指定或以其他方式指示给定的高速缓存层级。在该特定示例中,所指示的层级是对应于L3高速缓存114的层级,但在其他示例中,可任选地指示高速缓存层级结构115中的任何其他所期望的高速缓存层级。当执行取出指令106时,其可以可操作以使得处理器从系统存储器102中加载所指示的数据117,并且将所加载的数据存储为已经由取出指令106加载在处于所指示的给定高速缓存层级(例如,在该特定示例中,为对应于L3高速缓存114的层级,但在其他示例中为任何其他所期望的高速缓存层级)的给定的高速缓存中的数据121。取出指令可将数据从存储器或更高层级的高速缓存层级带到所指示的高速缓存层级中。然而,与加载指令105相比,取出指令106在执行时可能无法使处理器将所加载的数据存储在执行核的架构寄存器109中。有利地,这可潜在地允许在实际需要数据之前将该数据加载到高速缓存层级结构中而不将该数据加载到架构寄存器中,将该数据加载到架构寄存器中可倾向于占用架构寄存器中一般有限的空间,尤其是在实际需要数据之前加载该数据时。
与预取指令107相反,并且类似于加载指令105,可从架构上保证取出指令106将被执行和完成。如本文中所使用,从架构上保证指令或操作被完成意指处理器不能架构上自由地自行决定是否完成该指令或操作(例如,其不是处理器可自由地决定不完成的架构的提示)。在一些实施例中,可从架构上保证对应于取出指令106的加载将由处理器视为处理器不能决定或一般地自行决定不执行和/或不完成的加载。在一些实施例中,对应于取出指令106的加载可由处理器视为具有比对应于预取指令107的加载更高的优先级。在一些实施例中,对应于取出指令106的加载可由处理器视为具有与对应于加载指令105的加载相同的或基本上类似的优先级。在一些实施例中,对应于取出指令106的加载可由处理器视为具有与对应于加载指令105的加载的优先级类似或相同的非常高的优先级或最高的优先级的所谓的需求加载。现在,在某些时候,系统崩溃、系统重启、蓝屏事件、非支持电源故障、设备故障或其他此类极端情况可潜在地使得取出指令不被中断并且不能完成。此外,在某些时候,取出指令可能试图做一些不许可或不允许其做的或者其不能做的事,并且这也可潜在地使得该取出指令被中断并且不能完成。例如,如果取出指令试图访问存储器的不允许该取出指令访问的区域,如果取出指令导致违反地址范围,如果取出指令导致段错误,如果取出指令尝试违反权限等等,则这可发生。术语从架构上保证完成不排除此类可能性,而是不同地意指处理器不能架构上自由地自行决定是否执行和/或完成指令和/或操作。
由于不从架构上保证完成预取指令,所以编程者和/或软件不具有将实际加载数据的完整或保证控制。在预取指令的情况下,处理器可决定忽略提示,并且如果其忽略该提示,则数据可能未实际加载到高速缓存层级结构中。这可能不完成编程者和/或软件预期的操作。此外,在实际需要指令和/或数据时,这可能导致高速缓存未命中以及从系统存储器得到数据所需要的相关联的相对长的并且潜在地可变的持续时间的访问。这可倾向于降级性能。
另外,对于需要实时地和/或在关键时间段内执行动作的某些类型的实时和/或时间关键应用,这可倾向于是特别成问题的。作为示例,此类实时和/或时间关键应用通常在通信、信号处理、嵌入式控制应用等等领域中发现。不能够保证预取指令将数据实际加载到高速缓存层级结构中可倾向于使得很难知道或保证可以在某个时间量内完成任务(例如,因为是否将存在高速缓存未命中是未知变量)。例如,其可使得很难知道或保证可以在最坏情况执行时间(WCET)内完成任务。WCET是通常用于估计系统满足实时应用要求的能力的度量的一个示例。由于不能够保证实际完成预取指令并且不能保证预取指令将数据实际加载到高速缓存层级结构中,在一些情况下,为了估计WCET,可能需要假定其没有将数据加载到高速缓存层级结构中,这可以延长实际完成时间。
然而,从架构上保证取出指令106被执行并完成。相应地,可以安全地假定(例如,为了WCET计算的目的)已经由取出指令将数据加载在高速缓存中并且将没有高速缓存未命中发生。此外,在许多实时应用中(诸如在可编程逻辑控制器(PLC)中),将访问的未来代码路径和数据可以是提前可确定的,这可允许取出指令用于在指令和数据被需要之前填充高速缓存。可保证执行加载操作,并且该加载操作可以是可预测的和确定性的,以使得WCET计算可以假定数据被实际加载在高速缓存中。此外,取出指令可指示给定的高速缓存层级,所以在一些实施例中甚至可假定数据已被加载到给定的所指示的高速缓存层级中。
图2是可操作以执行取出指令206的实施例的处理器201的实施例的框图。在一些实施例中,该处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。替代地,该处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任一种,或者具有不同架构的组合(例如,不同的核可具有不同的架构)。在各实施例中,处理器可表示集成电路的至少一部分,可被包括在管芯或半导体衬底上,可包括半导体材料,可包括晶体管,等等。
在操作期间,处理器201可接收取出指令206。例如,可通过总线或其他互连从存储器接收该指令。指令可表示宏指令、机器代码指令、汇编语言指令或处理器的指令集中的其他指令或控制信号。
在一些实施例中,取出指令可显式地指定(例如,通过一个或多个字段或位的集合)或者以其他方式指示(例如,隐式地指示)具有要加载的数据217的存储器位置232的地址信息。术语“数据”在本文中广泛地用于指代数据(即,不是指令)和/或指令中任一者。各种不同类型的地址信息是可能的。地址信息可以表示绝对的存储器地址信息或相对的存储器地址信息,相对的存储器地址信息可指示相对于基础存储器地址或其他存储器位置的存储器位置。另外,可任选地使用各种不同的间接存储器寻址模式。作为一个特定示例,取出指令可隐式地指示用于存储相对存储器地址信息的寄存器(例如,通用寄存器),该相对存储器地址信息可与存储在另一隐式寄存器(例如,代码、数据或扩展段寄存器)中的附加存储器地址信息组合以生成用于标识具有要加载的数据217的第一字节或其他数据元素的存储器位置232的最终存储器地址。尽管未通过显式值表达,但处理器可理解(多个)隐式地或暗示地指示的寄存器。例如,在识别指令的操作码之后,处理器可理解或认识到使用(多个)寄存器是固有的或隐含的。这只是一个示例。其他形式的地址信息也是可能的。另外,地址信息中的一些或所有的地址信息可潜在地通过指令的位(例如,立即数)来提供,而不是在一个或多个寄存器中提供地址信息。
在一些实施例中,取出指令可显式地指定(例如,通过一个或多个字段或位的集合)或者以其他方式指示(例如,隐式地指示)高速缓存层级结构的多个不同高速缓存层级中的高速缓存层级。在一些实施例中,取出指令可具有用于提供用于指示给定的高速缓存层级的值的高速缓存层级指示字段或位的集合。用于指示给定的高速缓存层级可包括用于指示处于给定的高速缓存层级的给定的高速缓存和/或用于指示给定的高速缓存层级。如本文所使用,术语“字段”不意味着连续的位,而是包含在逻辑上被组合在一起成为字段的分离的位。可使用各种不同的可能约定来将高速缓存层级指示字段或位的集合的任意值映射到不同的高速缓存层级。例如,第一值可指示第一高速缓存层级,第二不同的值可指示第二不同的高速缓存层级,第三更不相同的值可指示第三更不相同的高速缓存层级,以此类推。在其他实施例中,高速缓存层级可隐含于取出指令(例如,该取出指令的操作码)。例如,若干不同的取出指令(例如,若干不同的取出指令操作码)可被提供并且各自专用于不同的对应高速缓存层级。例如,第一取出指令操作码可专用于将所指示的数据取出到第一隐含的高速缓存层级,第二不同的取出指令操作码可专用于将所指示的数据取出到第二不同的隐含的高速缓存层级,以此类推。在一些实施例中,取出指令可将高速缓存层级指示为第一级(L1)数据高速缓存、L1指令高速缓存、第二级(L2)高速缓存、任选的第三级(L3)高速缓存以及任选的第四级(L4)高速缓存中的任何一个。替代地,可任选地使用更少的或更多的高速缓存层级。
再次参考图2,该处理器包括解码单元或解码器230。解码单元可接收取出指令并对取出指令解码。解码单元可输出反映、表示相对较高级的取出指令和/或从相对较高级的取出指令导出的一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号等)。在一些实施例中,解码单元可以包括用于接收取出指令的一个或多个输入结构(例如,(多个)端口、(多个)互连、接口)、与输入结构耦合用于识别取出指令并对该取出指令解码的指令识别和解码逻辑、以及与指令识别和解码逻辑耦合用于输出较低级的(多个)指令或(多个)控制信号的一个或多个输出结构(例如,(多个)端口、(多个)互连、接口)。可使用各种不同的机制来实现解码单元,各种不同的机制包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现方式、可编程逻辑阵列(PLA)和适用于实现解码单元的其他机制。
在一些实施例中,作为直接将取出指令提供给解码单元的替代方案,可以任选地使用指令仿真器、变换器、变形器、解释器或其它指令转换模块。各种类型的指令转换模块可以以软件、硬件、固件、或其组合实现。在一些实施例中,指令转换模块可位于处理器外部,诸如例如,在分开的管芯上和/或存储器中(例如,作为静态的、动态的或运行时仿真模块)。作为示例,指令转换模块可接收取出指令,该取出指令可以属于第一指令集,并且指令转换模块可将取出指令仿真、变换、变形、解释或以其他方式转换为可以属于第二不同指令集的一个或多个对应的中间指令或控制信号。可将第二指令集中的这一个或多个中间指令或控制信号提供给解码单元(例如,解码单元230),该解码单元可将它们解码为可由处理器的原生硬件(例如,高速缓存控制器和/或一个或多个执行单元)执行的一个或多个较低级的指令或控制信号。
再次参考图2,高速缓存控制器231与解码单元230耦合。该高速缓存控制器还与处于由取出指令所指示的高速缓存层级的高速缓存214耦合。高速缓存214是处于高速缓存层级结构215中的两个或更多个不同高速缓存层级的至少两个不同的高速缓存中的一个。在各实施例中,高速缓存层级结构可包括至少一个L1高速缓存(例如,L1指令高速缓存和L1数据高速缓存,或者统一L1高速缓存)、至少一个L2高速缓存,任选地包括至少一个L3高速缓存,并且任选地包括至少一个L4高速缓存。高速缓存控制器可表示执行或实现取出指令的操作的执行单元。高速缓存控制器可接收表示取出指令和/或从取出指令导出的一个或多个经解码或以其他方式转换的指令或控制信号。高速缓存控制器还可接收存储器位置的地址信息和高速缓存层级的指示。响应于和/或作为取出指令的结果(例如,响应于从指令解码的一个或多个指令或控制信号和/或响应于正在解码的指令和/或响应于正在提供给解码器的指令),高速缓存控制器可以可操作以加载与存储器位置232相关联的数据217(例如,指令或非指令数据),并将该数据存储到处于所指示的高速缓存层级的高速缓存214中。在一些实施例中,如将在下文进一步解释,取出指令还可指定或以其他方式指示要加载的数据量,并且所指示的数据量可以被加载。有利地,取出指令可允许软件和/或编程者将指令和/或非指令数据加载到所期望的高速缓存层级中,以使得其在以后需要时更靠近于执行流水线。这可有助于防止在实际需要数据时的高速缓存未命中以及导致的需要从存储器访问数据的高等待时间。
在一些情况下,与存储器位置相关联的数据217可能尚未存储在高速缓存中,并且可从存储器位置加载。在一些实施例中,可检查存储器地址以确保其是对齐的,并且确保访问在完整的高速缓存行块中并且不跨越页边界。在其他情况下,与存储器位置相关联的数据217可以已经在高速缓存层级结构中存在(例如,可以先前已加载)。在此类情况下,如果数据在比处于所指示的高速缓存层级的高速缓存更高层级的高速缓存中,则可将该数据带到处于所指示的高速缓存层级的更低层级的高速缓存中,或者如果数据已经在所指示的高速缓存层级处存在,则(多个)高速缓存行可被“触及”(touch)以重置(多个)高速缓存行的年龄或最近最少使用的元数据以延迟驱逐,或者如果数据在比处于所指示的高速缓存层级的高速缓存更低层级的高速缓存中,则可允许数据保持在该更低层级的高速缓存处或者移动到处于所指示的高速缓存层级的高速缓存。高速缓存控制器或处理器可首先检查(多个)L1高速缓存,并且随后检查(多个)L2高速缓存,以此类推在层级结构中向上到系统存储器。
在一些实施例中,如234处所示,可从架构上保证取出指令206将由处理器执行和完成(例如,处理器不是架构上自由的来自行决定是否执行和/或完成取出指令)。有利地,这可有助于使得加载是有保证的或确定性的。在一些实施例中,可将加载操作作为需求加载233来执行。在一些实施例中,用于实现取出指令的需求加载或其他加载操作可具有比对应的用于可被视为架构的提示的预取指令(例如,其也可由解码单元解码并由处理器执行)的加载操作更高的优先级。在一些实施例中,用于实现取出指令的需求加载或其他加载操作可具有与对应的用于加载指令(例如,其也可由解码单元解码并由处理器执行)的加载操作相同的或基本上类似的优先级,该用于加载指令的加载操作用于将数据加载到处理器的架构寄存器中。
在一些实施例中,如穿过数据210的交叉一般地示出,处理器可完成取出指令的执行而不将与存储器位置相关联的所加载的数据存储在处理器的任何架构寄存器209中。在一些实施例中,即使可将该加载操作作为可具有与用于将数据加载到处理器的架构寄存器(例如,通用寄存器、紧缩数据寄存器等)中以供立即处理的加载相同或类似的优先级的需求加载233来执行,但在执行时,取出指令可以不将数据加载到架构寄存器中。此类架构寄存器一般表示有价值且稀缺的存储空间,并且一般不应在实际需要之前消耗。在一些实施例中,取出指令可用于在实际需要处理数据之前将该数据带到高速缓存中,以隐藏从存储器访问数据的一般很长的等待时间中的一些。一旦已经将数据带到高速缓存中,可随后执行相对低等待时间的加载操作,以在实际需要处理数据时正确地将数据加载到架构寄存器中。
在一些实施例中,可任选地在数据实际存储到处于所指示的层级的高速缓存中之前引退或以其他方式提交(例如,由提交单元提交,现在示出)取出指令,但这不是必需的。取出指令可设置或建立要执行的加载,并且随后在加载操作向完成进行的同时行进到引退或提交。至少在概念上,取出指令在执行时可设置或配置直接存储器访问(DMA)操作或DMA引擎(例如,在隐含的高速缓存控制器处),以将数据加载到处于所指示的高速缓存层级的高速缓存中。
高速缓存控制器和/或处理器可包括专门或特定的逻辑(例如,晶体管、集成电路或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其他硬件),该专门或特定的逻辑可操作以执行取出指令和/或响应于取出指令和/或作为取出指令的结果(例如,响应于从取出指令解码出的一个或多个指令或控制信号)来将数据存储在所指示的高速缓存层级中。在一些实施例中,高速缓存控制器可包括:一个或多个输入结构(例如,(多个)端口、(多个)互连、接口),用于接收数据;电路或逻辑,与一个或多个输入结构耦合,用于处理数据;以及一个或多个输出结构(例如,(多个)端口、(多个)互连、接口),与电路或逻辑耦合,用于将数据输出到高速缓存。
为了避免使描述模糊,已示出和描述了相对简单的处理器201。然而,处理器可任选地包括其他处理器组件。例如,各种不同的实施例可包括针对图xx-xx中的任一图所示出和所描述的组件的各种不同的组合和配置。处理器的所有组件可耦合在一起以允许它们按预期操作。
图3是执行取出指令的实施例的方法330的实施例的流程框图。在各种实施例中,可由处理器、指令处理装置、数字逻辑设备或集成电路来执行该方法。在一些实施例中,可由图2的处理器执行图3的方法和/或可在图2的处理器内执行图3的方法。本文中针对图2的处理器所描述的组件、特征和特定可选的细节也任选地应用到图3的方法。替代地,图3的方法可由类似的或不同的处理器或装置执行,和/或在类似的或不同的处理器或装置内执行。此外,图2的处理器可执行与图3的那些方法相同、类似或不同的方法。在一些实施例中,该方法可任选地作为利用处理器执行实时应用的部分来执行和/或在利用处理器执行实时应用的同时执行,该处理器可任选地是通用中央处理单元(CPU)或其他通用处理器,但本发明的范围不限于此。
该方法包括,在框331处,在处理器处接收取出指令。在各方面中,可在处理器或处理器的部分(例如,指令取出单元、解码单元、总线接口单元等)处接收该指令。在各方面中,可从处理器外和/或管芯外的源(例如,从存储器、互连等)或从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收该指令。取出指令可指定或以其他方式指示存储器位置的地址信息。先前所提到的形式的地址信息是合适的。取出指令还可指定或以其他方式将高速缓存层级指示为是多个不同高速缓存层级中的任何一个。在一些实施例中,取出指令可以能够替代地指示L1指令高速缓存或者L1数据高速缓存以及其他层级的高速缓存。在一些实施例中,取出指令还可任选地指定或以其他方式指示要加载的数据量。
方法还包括在框332处响应于取出指令和/或作为取出指令的结果来将与存储器位置相关联的数据存储在处理器的处于所指示的高速缓存层级的高速缓存中。在一些实施例中,处理器可完成取出指令的执行,而不将与存储器位置相关联的数据存储在该处理器的任何架构寄存器中。在一些实施例中,可以从架构上保证取出指令将由处理器完成。在一些实施例中,可通过需求加载来执行取出指令,其可具有与用于将数据加载到处理器的架构寄存器中以供立即处理的需求加载相同或基本上相同的优先级,并且其可具有比用于执行预取指令的加载操作更高的优先级,该预取指令是架构的提示,并且不从架构上保证完成该预取指令。
所图示的方法涉及架构操作(例如,那些从软件角度可见的操作)。在其他实施例中,该方法可以任选地包括一个或多个微架构操作。作为示例,可乱序地取出、解码、调度指令,可访问源操作数,执行单元可执行微架构操作以实现该指令,等等。在一些实施例中,用于实现该指令的微架构操作可任选地包括使用所指示的地址信息来生成可用于从系统存储器访问数据的完整的存储器地址。在一些实施例中,用于实现该指令的微架构操作还可任选地包括:检查以确保存储器地址是对齐的,以及确保访问在完整的高速缓存行块中并且不跨越页边界(例如,以帮助避免生成页错误)。用于实现该指令的微架构操作还可任选地包括从系统存储器加载数据(例如,通过总线或其他互连等来传送数据)。
图4是取出指令406的第一示例实施例的框图。将取出指令存储或以其他方式提供在机器可读介质440上。该介质可包括以计算机系统或其他机器可读的形式提供(例如,存储)信息的机制。机器可读介质可提供或在其上存储有取出指令,并且如果和/或当由计算机系统或其他机器执行该取出指令时,该取出指令可以可操作以使该机器执行和/或导致该机器执行本文中所公开的一种或操作、方法或技术。
取出指令包括操作代码或操作码441。该操作码可表示可操作以标识要执行的指令和/或操作(例如,取出操作)的多个位或者一个或多个字段。该指令还包括任选的用于指示地址信息的地址信息指示字段442。作为示例,任选的地址信息指示字段可包括用于指定要在其中存储地址信息的寄存器、存储器位置或其他存储位置的地址的位。替代地,任选的地址信息指示字段(例如,立即数)可直接提供地址信息,而不是间接地通过寄存器或其他存储位置提供。作为更进一步的示例,可任选地省略地址信息指示字段,并且代替于具有该字段,将地址信息存储在给定的寄存器或其他存储位置中对于取出指令(例如,对于操作码441)可以是隐含的或固有的。例如,在识别操作码之后,处理器可理解或认识到从某个固定寄存器读取地址信息是固有的或隐含的,尽管未表达。
指令还具有高速缓存层级指示字段443。高速缓存层级指示字段可提供用于指定或以其他方式指示要在其中存储所加载的数据的高速缓存层级的值。值与相关联的高速缓存层级的特定映射是任意的,并且可任选地采用许多不同的约定。取决于所期望要指示的高速缓存层级的数量和所要指定或指示的其他可能的选项,高速缓存层级指示字段可具有两个位、三个位、四个位或任选地具有更多个位。替代地,代替于直接提供该值,高速缓存层级指示字段可任选地指示可用于存储指示高速缓存层级的值的寄存器或其他存储位置。
为了进一步说明某些概念,表444图示出不同的2位高速缓存层级指示字段值到不同的所指示的高速缓存层级的映射的一个合适的示例,但这只是一个可能的示例,并且本发明的范围不限于该特定示例。根据该特定示例,2位值00'指示L1指令高速缓存,值'01'指示L1数据高速缓存,值'10'指示L2高速缓存,并且值'11'指示L3高速缓存。应当领会,这只是一个说明性示例。
图5是图示出不同的3位高速缓存层级指示字段值到不同的所指示的高速缓存层级的映射的合适的示例的表550。这只是一个特定示例,并且本发明的范围不限于该特定示例。根据该特定示例,3位值'000'指示L1指令高速缓存,值'001'指示L1数据高速缓存,值'010'指示L2高速缓存,并且值'100'指示L3高速缓存。继续,值'011'指示L4高速缓存,值'101'指示允许溢出到L2高速缓存的L1数据高速缓存,值'110'指示允许溢出到L2高速缓存的L2指令高速缓存,并且值'111'指示允许溢出到L3高速缓存的L2高速缓存。应当领会,这只是一个说明性示例。在该示例中,与不同的高速缓存层级相比,更多的3位值的不同的可能组合是可用的,并且因此3位值的可用组合中的一些用于指示附加信息(例如,在此情况下,指示允许到更高层级的高速缓存的溢出)。
图6是取出指令606的第二示例实施例的框图。将取出指令存储或以其他方式提供在机器可读介质640上。该取出指令包括操作码641、可选的地址信息指示字段642、以及高速缓存层级指示字段643。除非以其他方式指定,否则这些可任选地具有图4的取出指令的对应命名的操作码和字段的特性中的一些或所有。为了避免使描述模糊,将主要描述不同和/或附加的特性,而不重复共同特性。
取出指令还包括任选的数据量指示字段655。数据量指示字段可提供用于指定或以其他方式指示要加载和存储到处于所指示的高速缓存层级的高速缓存的数据量的值。这些值与相关联的数据量的特定映射是任意的,并且可任选地采用许多不同的约定。取决于所期望要指示的不同数据量的数量和/或所要指定或指示的其他可能的选择的数量,数据量指示字段可具有两个位、三个位、四个位、五个位、六个位,或任选地具有更多个位。在一些实施例中,可指定至少四个不同的数据量。在一些实施例中,数据量可在从单个高速缓存行的数据(例如,512位)到放得进存储器的单个页(例如,六十四个高速缓存行可以放得进四千字节的页内)或在一些实施例中任选地多达若干页内的最大数量的高速缓存行的范围中。
为了进一步说明某些概念,表656图示出不同的3位数据量指示字段值到要加载的数据量的不同示例的映射的一个合适的示例。这只是一个特定示例,并且本发明的范围不限于该特定示例。根据该特定示例,3位值'000'指示一个(即,单个)高速缓存行,值'001'指示两个连续的高速缓存行,值'010'指示四个连续的高速缓存行,并且值'100'指示八个连续的高速缓存行。继续,值'011'指示十六个连续的高速缓存行,值'101'指示三十二个连续的高速缓存行,值'110'指示六十四个连续的高速缓存行(例如,单个四千字节页的高速缓存行),并且值'111'指示一百二十八个连续的高速缓存行(例如,两个连续的四千字节页的高速缓存行)。应当领会,这只是一个说明性示例。例如,在其他实施例中,代替于指示多个页(例如,其可潜在地导致页错误),可替代地指示其他数量的连续高速缓存行(例如,三个连续的高速缓存行或六个连续的高速缓存行)。在其他实施例中,可存在选择多于两个页的选项。此外,可任选地使用高速缓存行的不同的分布和/或间隔。
在所图示的示例实施例中,数据量指示字段655的值对应于如表656中所示出的固定数据量,但这不是必须的。在其他实施例中,图6的取出指令可任选地包括用于指示数据量指示字段655中所指示的值的数据粒度的数据粒度字段(例如,一个或多个位)。例如,数据粒度字段可指示数据量指示字段655中所提供的值以高速缓存行粒度(例如,表达或选择多个高速缓存行)还是以页粒度(例如,表达或选择多个页)。作为示例,数据量指示字段655中的值"100"可指示要加载八个单元,并且数据粒度字段可具有指示这些单元是高速缓存行的第一值或者指示这些单元是页的第二不同值。此类数据粒度字段可任选地与本文中所公开的取出指令的其他实施例中的任何一个一起使用。
通过执行单个指令来加载多个高速缓存行的能力可有助于减少代码中指令的数量(例如,指令膨胀)和/或可有助于减少需要执行的指令的数量,这可有助于提高执行性能。例如,指令可具有执行单个指令来加载以上所描述的所有不同的数据量的固定开销。作为示例,单个取出指令可用于将很快要执行的整个库函数加载到L1指令高速缓存中。然而,在一些情况下,如果处理器的自主硬件预取单元是可用的,则可以通过在所取出的高速缓存行之间留出一些间隙来实现好的或最优的性能,因为此类硬件预取单元可以能够在不执行指令的情况下投机地加载中间的非取出的高速缓存行。然而,在保证高速缓存行被加载很重要的情况下,在一些实现方式中,也可不从架构上保证来自硬件预取单元的此类取出将被执行和/或完成。
图4和图6示出可包括在一些实施例的取出指令中的多种类型的字段的示例。所图示的字段布置并非是必须的,相反,可以以各种方式重新布置字段。这些字段中的每一个可由连续的一组位组成,或者可包括逻辑地表示字段的非连续的或分开的位。替代的实施例可包括所图示字段的子集和/或可添加附加字段。作为一个示例,在一些实施例中,图4和/或图6的取出指令可任选地包括用于指示数据将被修改还是只被读取而不被修改的字段(例如,一个或多个位)。作为示例,如果软件知道数据将被修改还是只被读取而不被修改,则其可配置该字段。在一个方面中,处理器(例如,高速缓存控制器)可使用该字段来确定或帮助确定当将所加载的(多个)高速缓存行存储在处于所指示的高速缓存层级的高速缓存中时它们的状态。例如,如果该字段指示数据将被修改,则可给予(多个)高速缓存行在MOSI协议的情况下的自身拥有的(O)状态或者在MESI协议的情况下的排他的(E)状态,而如果该字段指示数据将仅被读取而不被修改,则可给予(多个)高速缓存行MESI和MOSI协议中的共享的(S)状态。该字段可任选地与本文中所公开的取出指令的其他实施例中的任何一个一起使用。
图7是可操作以执行取出指令706的实施例的处理器701的示例实施例的框图。处理器701可以是图2的处理器201,或者可以包括在图2的处理器201中。处理器701包括解码单元730、高速缓存控制器731、以及处于由取出指令706指示的高速缓存层级的高速缓存714。除非以其他方式指定,这些组件可任选地具有图2的相应命名的组件的特性中的一些或全部。为了避免使描述模糊,将主要描述不同和/或附加的特性,而不重复共同特性。
取出指令706可指定或以其他方式指示高速缓存行加载掩码770。高速缓存行加载掩码可任选地存储在寄存器772中,该寄存器772诸如例如,32位或64位通用寄存器、用于紧缩数据断言的专用掩码寄存器等等。替代地,高速缓存行加载掩码可任选地存储在另一存储位置中。在一些实施例中,高速缓存行加载掩码可包括可各自对应于不同的高速缓存行的多个掩码位或其他掩码元素。可掩码这些掩码元素以指示将不加载对应的高速缓存行,或者可不掩码这些掩码元素以指示要加载对应的高速缓存行。例如,可将掩码位清除为二进制零以指示将不加载对应的高速缓存行,或者将掩码位设置为二进制一以指示要加载对应的高速缓存行。
响应于取出指令,高速缓存控制器可以可操作以根据由高速缓存行加载掩码770提供的控制来从由取出指令指示的存储器位置732选择性地加载高速缓存行799。例如,如在所图示的特定示例中所示出,将高速缓存行加载掩码的位-0设置为二进制一,并且因此第一高速缓存行799-1可以被加载并被存储在高速缓存714中。相反,将高速缓存行加载掩码的位-1清除为二进制零,并且因此第二高速缓存行799-2可以被加载或存储在高速缓存中。继续,将高速缓存行加载掩码的位-2设置为二进制一,并且因此第三高速缓存行799-3可以被加载和存储在高速缓存中。类似地,将高速缓存行加载掩码的位-(N-l)设置为二进制一,并且因此第N高速缓存行799-N可以被加载和存储在高速缓存中。以此种方式,取出指令可指示数个高速缓存行(例如,连续的一系列高速缓存行),并且该高速缓存行加载掩码可被配置成用于选择这些高速缓存行的任何所期望的模式或布置以在逐高速缓存行的基础上加载或不加载这些高速缓存行。作为一个示例,具有值"1010101010101010"的高速缓存行加载掩码可用于加载十六个高速缓存行的块中的每隔一个的高速缓存行。作为示例,该模式可潜在地用于利用硬件预取单元自动地加载非加载高速缓存行。作为另一示例,具有值"11001100110011001100110011001100"的高速缓存行加载掩码可用于加载连续高速缓存行对而不加载交错的连续高速缓存行对。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图8A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图8B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图8A-图8B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图8A中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也被称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处置级822和提交级824。
图8B示出处理器核890,该处理器核890包括前端单元830,该前端单元830耦合到执行引擎单元850,并且前端单元830和执行引擎单元850两者都耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核890可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元830包括分支预测单元832,该分支预测单元832耦合到指令高速缓存单元834,该指令高速缓存单元834耦合到指令转换后备缓冲器(TLB)836,该指令转换后备缓冲器836耦合到指令取出单元838,该指令取出单元838耦合到解码单元840。解码单元840(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元840中,或以其他方式在前端单元830内)。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合到引退单元854和一个或多个调度器单元的集合856。(多个)调度器单元856表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元856耦合到(多个)物理寄存器堆单元858。物理寄存器堆单元858中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,物理寄存器堆单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元858由引退单元854重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元854和(多个)物理寄存器堆单元858耦合到(多个)执行集群860。(多个)执行集群860包括一个或多个执行单元的集合862以及一个或多个存储器访问单元的集合864。执行单元862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元856、(多个)物理寄存器堆单元858和(多个)执行集群860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元864的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合864耦合到存储器单元870,该存储器单元870包括数据TLB单元872,该数据TLB单元872耦合到数据高速缓存单元874,该数据高速缓存单元874耦合到第二级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元870中的数据TLB单元872。指令高速缓存单元834还耦合到存储器单元870中的第二级(L2)高速缓存单元876。L2高速缓存单元876耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线800:1)指令取出838执行取出级802和长度解码级804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)(多个)调度器单元856执行调度级812;5)(多个)物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取级814;执行集群860执行执行级816;6)存储器单元870和(多个)物理寄存器堆单元858执行写回/存储器写入级818;7)各单元可牵涉到异常处置级822;以及8)引退单元854和(多个)物理寄存器堆单元858执行提交级824。
核890可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核890包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元834/874以及共享的L2高速缓存单元876,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图9A-图9B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图9A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络902的连接及其第二级(L2)高速缓存的本地子集904的框图。在一个实施例中,指令解码器900支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存906允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存906读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集904是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集904的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集904中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集904中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图9B是根据本发明的实施例的图9A中的处理器核的一部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分,以及关于向量单元910和向量寄存器914的更多细节。具体地,向量单元910是16宽向量处理单元(VPU)(见16宽ALU 928),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元920支持对寄存器输入的混合,通过数值转换单元922A-B支持数值转换,并且通过复制单元924支持对存储器输入的复制。写掩码寄存器926允许预测所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图10是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1000的框图。图10中的实线框图示具有单个核1002A、系统代理1010、一个或多个总线控制器单元的集合1016的处理器1000,而虚线框的任选增加图示具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元的集合1014以及专用逻辑1008的替代处理器1000。
因此,处理器1000的不同实现可包括:1)CPU,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1002A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1002A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1002A-N是大量通用有序核。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1000可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合1006、以及耦合到集成存储器控制器单元的集合1014的外部存储器(未示出)。共享高速缓存单元的集合1006可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1012将集成图形逻辑1008、共享高速缓存单元的集合1006以及系统代理单元1010/(多个)集成存储器控制器单元1014互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1006与核1002A-N之间维持一致性。
在一些实施例中,一个或多个核1002A-N能够实现多线程化。系统代理1010包括协调和操作核1002A-N的那些部件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1002A-N以及集成图形逻辑1008的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构指令集方面可以是同构的或异构的;即,核1002A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图11-21是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图11,所示出的是根据本发明一个实施例的系统1100的框图。系统1100可以包括一个或多个处理器1110、1115,这些处理器耦合到控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190和输入/输出中枢(IOH)1150(其可以在分开的芯片上);GMCH 1190包括存储器和图形控制器,存储器1140和协处理器1145耦合到该存储器和图形控制器;IOH 1150将输入/输出(I/O)设备1160耦合到GMCH1190。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1140和协处理器1145直接耦合到处理器1110,并且控制器中枢1120与IOH 1150处于单个芯片中。
附加的处理器1115的任选性在图11中通过虚线来表示。每一处理器1110、1115可包括本文中描述的处理核中的一个或多个,并且可以是处理器1000的某一版本。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1120经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1195来与(多个)处理器1110、1115进行通信。
在一个实施例中,协处理器1145是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1120可以包括集成图形加速器。
在物理资源1110、1115之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1110将这些协处理器指令识别为具有应当由附连的协处理器1145执行的类型。因此,处理器1110在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1145。(多个)协处理器1145接受并执行所接收的协处理器指令。
现在参见图12,所示出的是根据本发明的实施例的第一更具体的示例性系统1200的框图。如图12中所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个都可以是处理器1000的某一版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
处理器1270和1280示出为分别包括集成存储器控制器(IMC)单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以经由使用点对点(P-P)接口电路1278、1288的P-P接口1250来交换信息。如图12中所示,IMC 1272和1282将处理器耦合到相应的存储器,即存储器1232和存储器1234,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、1298的各个P-P接口1252、1254来与芯片组1290交换信息。芯片组1290可以任选地经由高性能接口1239来与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图12中所示,各种I/O设备1214可连同总线桥1218一起耦合到第一总线1216,该总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1215耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1220,这些设备包括例如键盘和/或鼠标1222、通信设备1227以及存储单元1228,该存储单元1228诸如可包括指令/代码和数据1230的盘驱动器或者其他大容量存储设备。此外,音频I/O1224可以被耦合到第二总线1220。注意,其他架构是可能的。例如,代替图12的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图13,示出的是根据本发明的实施例的第二更具体的示例性系统1300的框图。图12和13中的类似元件使用类似的附图标记,并且从图13中省略了图12的某些方面以避免混淆图13的其他方面。
图13图示处理器1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元,并包括I/O控制逻辑。图13图示不仅存储器1232、1234耦合到CL 1272、1282,而且I/O设备1314也耦合到控制逻辑1272、1282。传统I/O设备1315被耦合到芯片组1290。
现在参考图14,示出的是根据本发明的实施例的SoC 1400的框图。图10中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图14中,(多个)互连单元1402被耦合到:应用处理器1410,其包括一个或多个核的集合132A-N的集合以及(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一个或多个协处理器的集合1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器访问(DMA)单元1432;以及用于耦合到一个或多个外部显示器的显示单元1440。在一个实施例中,(多个)协处理器1420包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图12中图示的代码1230)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图15是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图15示出可使用x86编译器1504来编译高级语言1502形式的程序,以生成可由具有至少一个x86指令集核的处理器1516原生执行的x86二进制代码1506。具有至少一个x86指令集核的处理器1516表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1504表示可操作用于生成x86二进制代码1506(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1516上执行。类似地,图15示出可以使用替代的指令集编译器1508来编译高级语言1502形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1514(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1510。指令转换器1512用于将x86二进制代码1506转换成可以由不具有x86指令集核的处理器1514原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1506的软件、固件、硬件或其组合。
也可以任选地将针对图1和图4-图7中任意一个所描述的组件、特征和细节应用于图2-图3中的任何一者。针对本文中所公开的处理器中的任何一者所描述的组件、特征和细节可任选地应用于本文中所公开的方法中的任何一者,该方法在实施例中可任选地由和/或利用此类处理器执行。本文中在实施例中所描述的处理器(例如,处理器201、处理器701)中的任何一者可任选地包括在本文中所公开的系统(例如,图xx-xx的系统中的任何一者)中的任何一者中。
在说明书和权利要求书中,可能已经使用了术语“耦合的”和/或“连接的”及其衍生词。这些术语不旨在互为同义词。相反,在多个实施例中,“连接的”可用于指示两个或更多元件彼此直接物理和/或电接触。“耦合的”可意指两个或更多个元件彼此直接物理和/或电接触。然而,“耦合的”也可意指两个或更多个元件彼此并不直接接触,但是仍然彼此协作或相互作用。例如,高速缓存控制器可通过一个或多个中间组件与解码单元耦合。在附图中,箭头用于示出连接和耦合。
本文中所公开的组件和前述附图中所描绘的方法可以利用逻辑、模块或单元来实现,这些逻辑、模块或单元包括硬件(例如,晶体管、门电路、电路等)、固件(例如,存储微代码或控制信号的非易失性存储器)、软件(例如,存储在非暂态计算机可读存储介质上)或其组合。在一些实施例中,这些逻辑、模块或单元可包括至少一些或主要是潜在地与一些任选软件组合的硬件和/或固件的混合。
可能已经使用了术语“和/或”。如本文中所使用的,术语“和/或”意思是一个或另一个或两者(例如,A和/或B意思是:A或B,或者A和B两者)。
在以上描述中,为了提供对实施例的透彻理解,已阐述了特定的细节。然而,可以在没有这些特定细节中的一些的情况下来实践其他实施例。本发明的范围不是由以上所提供的具体示例来确定的,而仅由所附权利要求确定。在其他实例中,已经以框图形式和/或没有细节的形式示出了公知的电路、结构、设备和操作,以避免使对说明书的理解变得模糊。在认为合适的地方,已在附图之间重复了附图标记或附图标记的结尾部分以指示可能任选地具有类似或相同特性的对应或类似的元件,除非另外指定或是显而易见的。
某些操作可由硬件组件执行,或者能以机器可执行或电路可执行指令来具体化,这些机器可执行指令或电路可执行指令可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的部分、电路等)利用执行这些操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括专用或特定电路或其他逻辑(例如,可能与固件和/或软件组合的硬件),该专用或特定电路或其他逻辑用于执行和/或处理指令,并且响应于该指令而存储结果。
一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以机器可读形式提供(例如,存储)信息的机制。机器可读介质可提供或在其上存储有指令或指令序列,如果和/或当由机器执行所述指令或指令序列时,该指令或指令序列可用于使该机器执行和/或导致所述机器执行本文中所公开的一种或多种操作、方法或技术。
在一些实施例中,机器可读介质可包括有形的和/或非暂态的机器可读存储介质。例如,非暂态机器可读存储介质可包括,软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、或非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播的信号组成。在一些实施例中,存储介质可包括有形介质,该有形介质包括诸如例如半导体材料、相变材料、磁性固体材料、固体数据存储材料等之类的固态物质或材料。替代地,可任选地使用非有形暂态计算机可读传输介质诸如例如,电、光、声或其他形式的传播信号——诸如载波,红外信号和数字信号。
合适机器的示例包括但不限于,通用处理器、专用处理器、数字逻辑电路、集成电路等。合适的机器的另一些示例包括,包含处理器、数字逻辑电路或集成电路的计算机系统或其他电子设备。此类计算机系统或电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
贯穿本说明书对例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用例如指示可将特定的特征包括在本发明的实施中,但是不一定要求这么做。类似地,在该描述中,为了使本公开流畅并辅助对各创造性方面的理解,有时将各种特征一起归组在单个实施例、附图或对它们的描述中。然而,不应当将公开的该方法解释为反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所反映,创造性方面在于少于单个的公开实施例的所有特征。因此,将遵循具体实施方式的权利要求明确地结合到该具体实施方式中,并且每一项权利要求独立地作为本发明的单独的实施例而存在。
示例实施例
下列示例涉及进一步的实施例。可在一个或多个实施例中的任何地方使用示例中的细节。
示例1是一种处理器,包括处于多个不同的高速缓存层级的多个高速缓存以及用于对取出指令解码的解码单元。该取出指令用于指示存储器位置的地址信息,并且该取出指令用于指示多个不同的高速缓存层级中的高速缓存层级。处理器还包括与解码单元耦合并且与处于所指示的高速缓存层级的高速缓存耦合的高速缓存控制器。高速缓存控制器用于响应于取出指令而将与存储器位置相关联的数据存储在高速缓存中。取出指令从架构上保证将被完成。
示例2包括示例1所述的处理器,其中,取出指令将作为需求加载由处理器执行。
示例3包括示例1所述的处理器,其中,取出指令用于由处理器以与将要用于将数据从存储器位置加载到该处理器的架构寄存器的加载指令相同的优先级来执行。
示例4包括示例1所述的处理器,其中,解码单元还用于对预取指令解码,该预取指令用于指示存储器位置的地址信息,并且其中,该预取指令不从架构上保证将被完成。
示例5包括示例1所述的处理器,其中,处理器用于完成取出指令的执行而不将与存储器位置相关联的数据存储在该处理器的任何架构寄存器中。
示例6包括示例1至5中任一项所述的处理器,其中,解码单元用于对用于具有高速缓存层级指示字段的取出指令解码,该高速缓存层级指示字段用于具有用于指示高速缓存层级的值。
示例7包括示例1至5中任一项所述的处理器,其中,解码单元用于对用于将高速缓存层级指示为是至少第一级(L1)数据高速缓存和L1指令高速缓存中的任何一个的取出指令解码。
示例8包括示例7所述的处理器,任选地,其中,解码单元用于对用于将高速缓存层级指示为是至少L1数据高速缓存、L1指令高速缓存、第二级(L2)高速缓存、第三级(L3)高速缓存中的任何一个的取出指令解码。
示例9包括示例1至5中任一项所述的处理器,其中,解码单元用于对用于指示要存储在高速缓存中的数据量的取出指令解码。
示例10包括示例9所述的处理器,其中,取出指令用于将要存储在高速缓存中的数据量指示为至少四个不同的数据量中的任何一个。另外,任选地,其中,该至少四个不同的数据量在从单个高速缓存行到放得进页内的最大数量的高速缓存行的范围中。
示例11包括示例9所述的处理器,其中,解码单元用于对用于具有数据量字段的取出指令解码,该数据量字段用于具有用于指示数据量的值。
示例12包括示例1至5中任一项所述的处理器,进一步包括提交单元。另外,任选地,其中,该提交单元用于在已经将与存储器位置相关联的数据存储在高速缓存中之前提交取出指令。
示例13是一种方法,由处理器执行,该方法包括在该处理器处接收取出指令。该取出指令指示存储器位置的地址信息,并且该取出指令指示高速缓存层级为多个不同的高速缓存层级中的任何一个。方法还包括:响应于取出指令,将与存储器位置相关联的数据存储在处理器的处于所指示的高速缓存层级的高速缓存中。从架构上保证取出指令将由处理器完成。
示例14包括示例13所述的方法,进一步包括:完成取出指令的执行而不将与存储器位置相关联的数据存储在处理器的任何架构寄存器中。
示例15包括示例13所述的方法,进一步包括:以与用于将数据从存储器位置加载到处理器的架构寄存器的加载指令相同的优先级来执行取出指令。
示例16包括示例13所述的方法,进一步包括:将取出指令作为需求加载来执行。
示例17包括示例13至16中任一项所述的方法,其中,接收步骤包括接收指示数据量的取出指令。
示例18包括示例17所述的方法,其中,接收步骤包括接收能够将数据量指示为在从单个高速缓存行到放得进页内的最大数量的高速缓存行的范围中的至少四个不同的数据量中的任何一个的取出指令。
示例19包括示例13至16中任一项所述的方法,其中,接收步骤包括接收能够将高速缓存层级指示为是至少第一级(L1)数据高速缓存、L1指令高速缓存和第二级(L2)高速缓存中的任何一个的取出指令。
示例20包括示例13至16中任一项所述的方法,进一步包括:在将与存储器位置相关联的数据存储在高速缓存中之前,提交取出指令。
示例21包括示例13至16中任一项所述的方法,在处理器上执行实时应用的同时方法被执行,该处理器是通用中央处理单元(CPU)。
示例22是用于处理指令的系统,其包括互连和与该互连耦合的处理器。该处理器包括处于多个不同高速缓存层级的多个高速缓存。该处理器用于接收取出指令。该取出指令用于指示存储器位置的地址信息,并且用于指示多个不同的高速缓存层级中的高速缓存层级。处理器用于响应于取出指令而将与存储器位置相关联的数据存储在处于所指示的高速缓存层级的高速缓存中。取出指令从架构上保证将被完成。该系统还包括与互连耦合的动态随机存取存储器(DRAM)。DRAM存储实时应用的指令。该实时应用的指令包括取出指令。该实时应用的指令用于使用取出指令来将数据确定性地存储到处于所指示的高速缓存层级的高速缓存。
示例23包括示例23所述的系统,其中,取出指令用于指示数据量。
示例24是一种制品,其包括非暂态机器可读存储介质。该非暂态机器可读存储介质存储取出指令。该取出指令用于指示存储器位置的地址信息,并且该取出指令用于将高速缓存层级指示为多个不同的高速缓存层级中的任何一个高速缓存层级。该取出指令如果由机器执行则用于使该机器执行包括以下步骤的操作:将与存储器位置相关联的数据存储在处理器的处于所指示的高速缓存层级的高速缓存中。取出指令从架构上保证将由该机器完成。
示例25包括示例24所述的制品,其中,非暂态机器可读存储介质进一步存储如果由机器执行则使该机器实现实时算法的指令的集合。另外,任选地,其中,该指令的集合包括和使用用于将数据确定性地存储到所指示的高速缓存层级的取出指令,其中,该取出指令用于指示数据量。
示例26包括示例1-12中任一项所述的处理器,进一步包括:任选的分支预测单元,用于预测分支;以及任选的指令预取单元,与分支预测单元耦合,该指令预取单元用于预取指令,这些指令包括取出指令。该处理器还可任选地包括:任选的第一级(L1)指令高速缓存,与指令预取单元耦合,该L1指令高速缓存用于存储指令;任选的L1数据高速缓存,用于存储数据;以及任选的第二级(L2)高速缓存,用于存储数据和指令。该处理器还可任选地包括指令取出单元,与解码单元、L1指令高速缓存、以及L2高速缓存耦合,该指令取出单元用于取出取出指令,在一些情况下,从L1指令高速缓存和L2高速缓存中的一者取出该取出指令,并且用于将该取出指令提供给解码单元。该处理器还可任选地包括:寄存器重命名单元,用于对寄存器重命名;任选的调度器,用于对已经从取出指令解码出的一个或多个操作进行调度以供执行;以及任选的提交单元,用于提交取出指令的执行结果。
示例27包括一种芯片上系统,该芯片上系统包括:至少一个互连;示例1至12中任一项所述的处理器,与该至少一个互连耦合;任选的图形处理单元(GPU),与该至少一个互连耦合;任选的数字信号处理器(DSP),与该至少一个互连耦合;任选的显示控制器,与该至少一个互连耦合;任选的存储器控制器,与该至少一个互连耦合;任选的无线调制解调器,与该至少一个互连耦合;任选的图像信号处理器,与该至少一个互连耦合;任选的兼容通用串行总线(USB)3.0的控制器,与该至少一个互连耦合;任选的兼容蓝牙4.1的控制器,与该至少一个互连耦合;以及任选的无线收发机控制器,与该至少一个互连耦合。
示例28是处理器或其他装置,可操作以执行示例13至21中任一项所述的方法。
示例29是处理器或其他设备,其包括用于执行示例13-21中的任一项所述的方法的装置。
示例30是处理器或其他设备,其包括可操作以执行示例13至21中任一项所述的方法的模块和/或单元和/或逻辑和/或电路和/或装置的任何组合。
示例31是一种任选地非暂态和/或有形机器可读介质,其任选地存储或以其他方式提供包括第一指令的指令,如果由处理器、计算机系统、电子设备或其他机器执行该第一指令和/或当由处理器、计算机系统、电子设备或其他机器执行该第一指令时,该第一指令可操作以使该机器执行示例13至21中任一项所述的方法。
示例32是基本上如本文中所描述的处理器或其他装置。
示例33是可操作以执行基本上如本文中所描述的任何方法的处理器或其他装置。
示例34是可操作以执行基本上如本文中所描述的任何取出指令的处理器或其他装置。
示例35是计算机系统或其他电子设备,其包括处理器,该处理器具有解码单元,该解码单元可操作以对第一指令集中的指令解码。该处理器还具有一个或多个执行单元。该电子设备还包括与该处理器耦合的存储设备。该存储设备可操作以存储第一指令,该第一指令可以是基本上如本文中所公开的指令中的任何指令,并且该第一指令将是第二不同指令集中的指令。该存储设备也可操作以存储用于将第一指令转换为第一指令集中的一个或多个指令的指令。第一指令集中的一个或多个指令在由处理器执行时,可操作以使该处理器如将由第一指令完成地加载数据并存储所加载的数据。

Claims (25)

1.一种处理器,包括:
多个高速缓存,处于多个不同的高速缓存层级;
解码单元,用于对取出指令解码,所述取出指令用于指示存储器位置的地址信息,并且所述取出指令用于指示所述多个不同的高速缓存层级中的高速缓存层级;以及
高速缓存控制器,与所述解码单元耦合,并且与处于所指示的高速缓存层级的高速缓存耦合,所述高速缓存控制器用于响应于所述取出指令而将与所述存储器位置相关联的数据存储在所述高速缓存中,其中,所述取出指令从架构上保证将被完成。
2.如权利要求1所述的处理器,其中,所述取出指令用于作为需求加载由所述处理器执行。
3.如权利要求1所述的处理器,其中,所述取出指令用于由所述处理器以与将用于将数据从存储器位置加载到所述处理器的架构寄存器的加载指令相同的优先级来执行。
4.如权利要求1所述的处理器,其中,所述解码单元还用于对预取指令解码,所述预取指令用于指示存储器位置的地址信息,并且其中,所述预取指令不从架构上保证将被完成。
5.如权利要求1所述的处理器,其中,所述处理器用于完成所述取出指令的执行而不将与所述存储器位置相关联的数据存储在所述处理器的任何架构寄存器中。
6.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对用于具有高速缓存层级指示字段的所述取出指令解码,所述高速缓存层级指示字段用于具有用于指示所述高速缓存层级的值。
7.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对用于将所述高速缓存层级指示为是至少第一级(L1)数据高速缓存和L1指令高速缓存中的任何一个的所述取出指令解码。
8.如权利要求7所述的处理器,其中,所述解码单元用于对用于将所述高速缓存层级指示为是至少所述L1数据高速缓存、所述L1指令高速缓存、第二级(L2)高速缓存、第三级(L3)高速缓存中的任何一个的所述取出指令解码。
9.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对用于指示要存储在所述高速缓存中的数据量的所述取出指令解码。
10.如权利要求9所述的处理器,其中,所述取出指令用于将所述要存储在所述高速缓存中的数据量指示为从单个高速缓存行到放得进页内的最大数量的高速缓存行的范围中的至少四个不同的数据量中的任何一个。
11.如权利要求9所述的处理器,其中,所述解码单元用于对用于具有数据量字段的所述取出指令解码,所述数据量字段用于具有用于指示所述数据量的值。
12.如权利要求1至5中任一项所述的处理器,进一步包括提交单元,并且其中,所述提交单元用于在已经将与所述存储器位置相关联的数据存储在所述高速缓存中之前提交所述取出指令。
13.一种由处理器执行的方法,包括:
在所述处理器处接收取出指令,所述取出指令指示存储器位置的地址信息,并且所述取出指令将高速缓存层级指示为是多个不同的高速缓存层级中的任何一个;以及
响应于所述取出指令,将与所述存储器位置相关联的数据存储在所述处理器的处于所指示的高速缓存层级的高速缓存中,其中,从架构上保证所述取出指令将由所述处理器完成。
14.如权利要求13所述的方法,进一步包括:完成所述取出指令的执行而不将与所述存储器位置相关联的数据存储在所述处理器的任何架构寄存器中。
15.如权利要求13所述的方法,进一步包括:以与用于将数据从存储器位置加载到所述处理器的架构寄存器的加载指令相同的优先级来执行所述取出指令。
16.如权利要求13所述的方法,进一步包括:将所述取出指令作为需求加载来执行。
17.如权利要求13至16中任一项所述的方法,其中,接收步骤包括接收指示数据量的所述取出指令。
18.如权利要求17所述的方法,其中,接收步骤包括接收能够将所述数据量指示为在从单个高速缓存行到放得进页内的最大数量的高速缓存行的范围中的至少四个不同的数据量中的任何一个的所述取出指令。
19.如权利要求13至16中任一项所述的方法,其中,接收步骤包括接收能够将所述高速缓存层级指示为是至少第一级(L1)数据高速缓存、L1指令高速缓存和第二级(L2)高速缓存中的任何一个的所述取出指令。
20.如权利要求13至16中任一项所述的方法,进一步包括:在将与所述存储器位置相关联的数据存储在所述高速缓存中之前,提交所述取出指令。
21.如权利要求13至16中任一项所述的方法,在所述处理器上执行实时应用的同时所述方法被执行,所述处理器是通用中央处理单元(CPU)。
22.一种用于处理指令的系统,包括:
互连;
处理器,与所述互连耦合,所述处理器包括处于多个不同的高速缓存层级的多个高速缓存,所述处理器用于接收取出指令,所述取出指令用于指示存储器位置的地址信息并且用于指示多个不同的高速缓存层级中的高速缓存层级,所述处理器用于响应于所述取出指令而将与所述存储器位置相关联的数据存储在处于所指示的高速缓存层级的高速缓存中,其中,所述取出指令从架构上保证将被完成;以及
动态随机存取存储器(DRAM),与所述互连耦合,所述DRAM存储实时应用的指令,所述实时应用的所述指令包括所述取出指令,所述实时应用的所述指令用于使用所述取出指令来将数据确定性地存储到处于所指示的高速缓存层级的所述高速缓存。
23.如权利要求23所述的系统,其中,所述取出指令用于指示数据量。
24.一种设备,包括用于执行如权利要求13至16中任一项所述的方法的装置。
25.一种提供指令的机器可读介质,所述指令如果由机器执行则能操作以使所述机器执行如权利要求13至16中的任一项所述的方法。
CN201780021196.4A 2016-04-01 2017-03-02 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 Active CN108885586B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/088,327 2016-04-01
US15/088,327 US20170286118A1 (en) 2016-04-01 2016-04-01 Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
PCT/US2017/020450 WO2017172240A1 (en) 2016-04-01 2017-03-02 Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion

Publications (2)

Publication Number Publication Date
CN108885586A true CN108885586A (zh) 2018-11-23
CN108885586B CN108885586B (zh) 2024-02-20

Family

ID=59961557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780021196.4A Active CN108885586B (zh) 2016-04-01 2017-03-02 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令

Country Status (5)

Country Link
US (1) US20170286118A1 (zh)
CN (1) CN108885586B (zh)
DE (1) DE112017001700T5 (zh)
TW (1) TW201800948A (zh)
WO (1) WO2017172240A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112540796A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198261B2 (en) * 2016-04-11 2019-02-05 Advanced Micro Devices, Inc. Flexible framework to support memory synchronization operations
US10317888B2 (en) * 2017-03-01 2019-06-11 PLETHORA IloT, S.L. Device and system including multiple devices for supervision and control of machines in industrial installation
CN109669897B (zh) * 2017-10-13 2023-11-17 华为技术有限公司 数据传输方法和装置
US11586539B2 (en) * 2019-12-13 2023-02-21 Advanced Micro Devices, Inc. Adaptive cache management based on programming model information
WO2021235988A1 (en) * 2020-05-22 2021-11-25 Telefonaktiebolaget Lm Ericsson (Publ) Efficient loading of code portions to a cache
CN111427837B (zh) * 2020-06-11 2020-11-13 杭州万高科技股份有限公司 一种总线设备连接调整的异构多核处理器
US11847055B2 (en) * 2021-06-30 2023-12-19 Advanced Micro Devices, Inc. Approach for reducing side effects of computation offload to memory
US20240078114A1 (en) * 2022-09-07 2024-03-07 Microsoft Technology Licensing, Llc Providing memory prefetch instructions with completion notifications in processor-based devices

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044847A1 (en) * 2002-08-29 2004-03-04 International Business Machines Corporation Data streaming mechanism in a microprocessor
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US20070088915A1 (en) * 2005-10-13 2007-04-19 Roch Archambault Method and apparatus for software-assisted data cache and prefetch control
CN101042680A (zh) * 2006-03-23 2007-09-26 国际商业机器公司 更新无效一致状态的方法、数据处理系统和高速缓存系统
US20100306503A1 (en) * 2009-06-01 2010-12-02 Via Technologies, Inc. Guaranteed prefetch instruction
US20140195772A1 (en) * 2011-12-20 2014-07-10 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
CN104011653A (zh) * 2011-12-29 2014-08-27 英特尔公司 打包数据操作掩码比较处理器、方法、系统及指令
CN105051743A (zh) * 2012-12-28 2015-11-11 英特尔公司 用于处理安全哈希算法的指令处理器、方法、和系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7089368B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory
US20040044881A1 (en) * 2002-08-28 2004-03-04 Sun Microsystems, Inc. Method and system for early speculative store-load bypass
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US8595471B2 (en) * 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US9612972B2 (en) * 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US9465744B2 (en) * 2014-07-29 2016-10-11 International Business Machines Corporation Data prefetch ramp implemenation based on memory utilization

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US20040044847A1 (en) * 2002-08-29 2004-03-04 International Business Machines Corporation Data streaming mechanism in a microprocessor
US20070088915A1 (en) * 2005-10-13 2007-04-19 Roch Archambault Method and apparatus for software-assisted data cache and prefetch control
CN101042680A (zh) * 2006-03-23 2007-09-26 国际商业机器公司 更新无效一致状态的方法、数据处理系统和高速缓存系统
US20100306503A1 (en) * 2009-06-01 2010-12-02 Via Technologies, Inc. Guaranteed prefetch instruction
US20140195772A1 (en) * 2011-12-20 2014-07-10 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
CN104011653A (zh) * 2011-12-29 2014-08-27 英特尔公司 打包数据操作掩码比较处理器、方法、系统及指令
CN105051743A (zh) * 2012-12-28 2015-11-11 英特尔公司 用于处理安全哈希算法的指令处理器、方法、和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
张民选;王永文;邢座程;邓让钰;蒋江;张承义;: "高性能通用微处理器体系结构关键技术研究", 计算机研究与发展, no. 06 *
郇丹丹等: "快速地址计算的自适应栈高速缓存", 《计算机研究与发展》 *
郇丹丹等: "快速地址计算的自适应栈高速缓存", 《计算机研究与发展》, no. 01, 28 January 2007 (2007-01-28) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112540796A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法

Also Published As

Publication number Publication date
WO2017172240A1 (en) 2017-10-05
DE112017001700T5 (de) 2018-12-13
CN108885586B (zh) 2024-02-20
US20170286118A1 (en) 2017-10-05
TW201800948A (zh) 2018-01-01

Similar Documents

Publication Publication Date Title
CN108885586A (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
TWI803030B (zh) 可中斷及可重啟矩陣乘法指令、處理器、方法和系統
EP3350710B1 (en) Prefetching instruction blocks
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
US9870209B2 (en) Instruction and logic for reducing data cache evictions in an out-of-order processor
CN108268282A (zh) 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令
TWI725073B (zh) 用於載入索引及預取散佈運算的邏輯和指令
US10140210B2 (en) Method and apparatus for cache occupancy determination and instruction scheduling
TWI742048B (zh) 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統
CN104756090B (zh) 提供扩展的缓存替换状态信息
CN108292239A (zh) 使用硬件队列设备的多核心通信加速
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
CN108701027A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令
CN109690552A (zh) 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令
CN108292221A (zh) 事务结束加上持续性提交指令、处理器、方法和系统
CN107918546A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN105027137B (zh) 用于针对增强型安全检查的页走查扩展的装置和方法
CN105247479B (zh) 指令次序实施指令对、处理器、方法和系统
CN108885551A (zh) 存储器复制指令、处理器、方法和系统
CN110419030A (zh) 测量非均匀存储器访问(numa)系统内按节点的带宽
CN109661656A (zh) 用于利用条件所有权请求的智能存储操作的方法和装置
CN110321160A (zh) 用于推测性有条件移动操作的装置和方法
CN108228234A (zh) 用于聚集-更新-分散操作的加速器
CN109313607A (zh) 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant