CN105453041B - 用于高速缓存占据确定和指令调度的方法和装置 - Google Patents
用于高速缓存占据确定和指令调度的方法和装置 Download PDFInfo
- Publication number
- CN105453041B CN105453041B CN201480046896.5A CN201480046896A CN105453041B CN 105453041 B CN105453041 B CN 105453041B CN 201480046896 A CN201480046896 A CN 201480046896A CN 105453041 B CN105453041 B CN 105453041B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- instruction
- processor
- level 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000003860 storage Methods 0.000 claims description 28
- 238000004891 communication Methods 0.000 claims description 12
- 230000002093 peripheral effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 13
- 210000004027 cell Anatomy 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 101150090341 dst1 gene Proteins 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006911 nucleation Effects 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 210000004940 nucleus Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
装置和方法用于确定一个或多个操作所需要的数据是否存储在高速缓存中并且基于所述确定调度操作以供执行。例如,处理器的一个实施例包括:包括至少1级(L1)高速缓存的分层级的高速缓存级,用于对数据进行缓存;高速缓存占据确定逻辑,用于确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中;以及调度逻辑,用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执行。
Description
技术领域
本发明大体涉及计算机处理器的领域。更具体地,本发明涉及用于高速缓存占据确定和指令调度的装置和方法。
背景技术
数据高速缓存未命中导致程序代码的低效执行,因为如果执行操作所需要的数据没有存储在高速缓存中,则必须花费大量时间(例如微处理器周期)来从存储器检索数据。对该问题之前的一种解决方案是数据预取,其中提供显式架构支持以预计将需要的数据并且预取该数据以缓存。另一解决方案是使用高速缓存遗忘和高速缓存意识算法,其确定如何优化存储器中的数据结构的布局,而不使用任何特殊的架构支持或交互。
附图说明
从结合以下各图的以下详细描述,可以得到对本发明的更好理解,其中:
图1A是图示了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、无序发布(issue)/执行管线二者的框图;
图1B是图示了根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、无序发布/执行架构核二者的框图;
图2是根据本发明的实施例的具有集成存储器控制器和图形的多核处理器和单核处理器的框图;
图3图示了依照本发明的一个实施例的系统的框图;
图4图示了依照本发明的实施例的第二系统的框图;
图5图示了依照本发明的实施例的第三系统的框图;
图6图示了依照本发明的实施例的片上系统(SoC)的框图;
图7图示了根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令形成对比的框图;
图8图示了具有用于确定高速缓存占据的逻辑的架构的一个实施例。
图9图示了用于确定高速缓存占据并且基于所述确定执行随后操作的方法的一个实施例。
图10图示了用于确定高速缓存占据并且基于所述确定执行来自工作队列的工作项目的方法的一个实施例。
具体实施方式
在以下描述中,出于解释的目的,阐述众多具体细节以便提供对下文描述的本发明的实施例的透彻理解。然而,本领域技术人员将清楚的是,本发明的实施例可以在没有这些具体细节中的一些的情况下实践。在其他实例中,以框图形式示出公知的结构和设备以避免使本发明的实施例的底层原理模糊。
示例性处理器架构和数据类型
图1A是图示了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、无序发布/执行管线二者的框图。图1B是图示了根据本发明的实施例的要包括在处理器中的有序架构核和示例性寄存器重命名、无序发布/执行架构核的示例性实施例二者的框图。图1A-1B中的实线框图示了有序管线和无序管线,而虚线框的可选添加图示了寄存器重命名、无序发布/执行管线和核。在给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图1A中,处理器管线100包括获取级102、长度解码级104、解码级106、分配级108、重命名级110、调度(还称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、回写/存储器写入级118、异常处置级122和提交级124。
图1B示出了处理器核190,其包括耦合到执行引擎单元150的前端单元130,并且这两者都耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合型或可替换核类型。作为又一选项,核190可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元130包括耦合到指令高速缓存单元134的品牌预测单元132,指令高速缓存单元134耦合到指令转换后备缓冲器(TLB)136,指令转换后备缓冲器(TLB)136耦合到指令获取单元138,指令获取单元138耦合到解码单元140。解码单元140(或解码器)可以解码指令,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其从原始指令解码或者以其他方式反映原始代码或者从原始代码导出。解码单元140可以使用各种不同机制实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核190包括微代码ROM或者存储用于某些宏指令的微代码的其他介质(例如在解码单元140中或者以其他方式在前端单元130内)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括耦合到引退单元154和一个或多个调度器单元156的集合的重命名/分配器单元152。(多个)调度器单元156表示任何数目的不同调度器,包括预留站、中央指令窗口等。(多个)调度器单元156耦合到(多个)物理寄存器文件单元158。(多个)物理寄存器文件单元158中的每一个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同数据类型,诸如标量整数、标量浮点数、封包整数、封包浮点数、矢量整数、矢量浮点数、状态(例如,作为要执行的下一指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器文件单元158包括矢量寄存器单元、写入掩码寄存器单元以及标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。(多个)物理寄存器文件单元158与引退单元154重叠以说明其中可以实现寄存器重命名和无序执行的各种方式(例如使用(多个)重新排序缓冲器和(多个)引退寄存器文件;使用(多个)将来文件、(多个)历史缓冲器和(多个)引退寄存器文件;使用寄存器图和寄存器池;等等)。引退单元154和(多个)物理寄存器文件单元158耦合到(多个)执行群簇160。(多个)执行群簇160包括一个或多个执行单元162的集合和一个或多个存储器访问单元164的集合。执行单元162可以在各种类型数据(例如标量浮点数、封包整数、封包浮点数、矢量整数、矢量浮点数)上执行各种操作(例如移位、加法、减除、乘法)。尽管一些实施例可以包括专用于具体功能或功能集合的数个执行单元,但是其他实施例可以包括仅一个执行单元或者全部执行所有功能的多个执行单元。(多个)调度器单元156、(多个)物理寄存器文件单元158和(多个)执行群簇160被示为可能是复数个,因为某些实施例创建用于某些类型数据/操作的分离管线(例如标量整数管线、标量浮点数/封包整数/封包浮点数/矢量整数/矢量浮点数管线,和/或存储器访问管线,每一个具有其自身的调度器单元、(多个)物理寄存器文件单元和/或执行群簇——并且在分离存储器访问管线的情况下,实现其中仅该管线的执行群簇具有(多个)存储器访问单元164的某些实施例)。还应当理解到,在使用分离管线的情况下,这些管线中的一个或多个可以是无序发布/执行并且其余为有序的。
存储器访问单元164的集合耦合到存储器单元170,其包括耦合到数据高速缓存单元174的数据TLB单元172,数据高速缓存单元174耦合到2级(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可以包括加载单元、存储地址单元和存储数据单元,其中每一个耦合到存储器单元170中的数据TLB单元172。指令高速缓存单元134还耦合到存储器单元170中的2级(L2)高速缓存单元176。L2高速缓存单元176耦合到一个或多个其他级高速缓存并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可以实现如下管线100:1)指令获取138执行获取和长度解码级102和104;2)解码单元140执行解码级106;3)重命名/分配器单元152执行分配级108和重命名级110;4)(多个)调度器单元156执行调度级112;5)(多个)物理寄存器文件单元158和存储器单元170执行寄存器读取/存储器读取级114;执行群簇160对执行级116进行执行;6)存储器单元170和(多个)物理寄存器文件单元158执行回写/存储器写入级118;7)各种单元可以牵涉在接受处置级122中;并且8)引退单元154和(多个)物理寄存器文件单元158执行提交级124。
核190可以支持一个或多个指令集,例如x86指令集(具有已经添加有较新版本的一些扩展);Sunnyvale, CA的MIPS Technologies的MIPS指令集;Sunnyvale, CA的ARMHoldings的ARM指令集(具有诸如NEON之类的可选附加扩展),包括本文描述的(多个)指令。在一个实施例中,核190包括逻辑以支持封包数据指令集扩展(例如AVX1,AVX2和/或某种形式的通用矢量友好指令格式(U=0和/或U=1),在下文描述),从而允许使用封包数据执行许多多媒体应用所使用的操作。
应当理解到,核可以支持多线程(执行操作或线程的两个或更多并行集合),并且可以以各种方式这样做,包括时间片段多线程、同时多线程(其中单个物理核针对物理核同时多线程的每一个线程提供逻辑核),或者其组合(例如时间片段获取和解码以及在此之后的同时多线程,诸如在超线程技术中)。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解到,寄存器重命名可以在有序架构中使用。尽管处理器的所图示的实施例还包括分离的指令和数据高速缓存单元134/137和共享的L2高速缓存单元176,但是可替换实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或者多个级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存与在核和/或处理器外部的外部高速缓存的组合。可替换地,所有高速缓存可以在核和/或处理器外部。
图2是根据本发明的实施例的处理器200的框图,其可以具有多于一个核,可以具有集成的存储器控制器,并且可以具有集成的图形。图2中的实线框图示了具有单个核202A、系统代理210、一个或多个总线控制器单元216的集合的处理器200,而虚线框的可选添加图示了具有多个核202A-N、系统代理单元210中的一个或多个集成存储器控制器单元214的集合、以及专用逻辑208的可替换处理器200。
因而,处理器200的不同实现可以包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核)的专用逻辑208以及作为一个或多个通用核(例如通用有序核、通用无序核、两者的组合)的核202A-N的CPU;2)具有作为主要意图用于图形和/或科学(吞吐量)的大量专用核的核202A-N的协处理器;以及3)具有作为大量通用有序核的核202A-N的协处理器。因而,处理器200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量众集成核(MIC)协处理器(包括30或更多个核)、嵌入式处理器等等。处理器可以实现在一个或多个芯片上。处理器200可以是一个或多个衬底的部分和/或可以使用数个处理技术中的任一个而实现在一个或多个衬底上,所述技术诸如例如BiCMOS、CMOS或NMOS。
存储器层级包括核内的一个或多个级的高速缓存、一集合或一个或多个共享高速缓存单元206、以及耦合到集成存储器控制器单元214的集合的外部存储器(未示出)。共享高速缓存单元206的集合可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或者其他级高速缓存、末级高速缓存(LLC)和/或其组合。尽管在一个实施例中基于环的互连单元212互连集成图形逻辑208、共享高速缓存单元206的集合和系统代理单元210/(多个)集成存储器控制器单元214,但是可替换实施例可以使用任何数目的公知技术以用于互连这样的单元。在一个实施例中,在一个或多个高速缓存单元206和核202A-N之间维持一致性。
在一些实施例中,一个或多个核202A-N能够进行多线程。系统代理210包括协调和操作核202A-N的那些组件。系统代理单元210可以包括例如电力控制单元(PCU)和显示单元。PCU可以是或者包括用于调控核202A-N和集成图形逻辑208的电力状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核202A-N在架构指令集方面可以是同构或异构的;也就是说,核202A-N中的两个或更多个可以能够执行相同指令集,而其他核可能仅能够执行该指令集的子集或者不同的指令集。在一个实施例中,核202A-N是异构的并且包括下文描述的“小”核和“大”核二者。
图3-6是示例性计算机架构的框图。现有技术中针对膝上型电脑、台式电脑、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其他电子设备所已知的其他系统设计和配置同样适用。一般而言,能够并入如本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是适用的。
现在参照图3,示出了依照本发明的一个实施例的系统300的框图。系统300可以包括一个或多个处理器310、315,其耦合到控制器中心320。在一个实施例中,控制器中心320包括图形存储器控制器中心(GMCH)390和输入/输出中心(IOH)350(其可以在分离芯片上);GMCH 390包括存储器340和协处理器345所耦合至的存储器和图形控制器;IOH 350将输入/输出(I/O)设备360耦合至GMCH 390。可替换地,存储器和图形控制器中的一个或二者集成在处理器中(如本文所描述的),存储器340和协处理器345直接耦合到处理器310,以及具有IOH 350的单个芯片中的控制器中心320。
附加处理器315的可选性质在图3中利用折线标示。每一个处理器310、315可以包括本文描述的一个或多个处理核并且可以是某种版本的处理器200。
存储器340可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或二者的组合。对于至少一个实施例,控制器中心320经由诸如前端总线(FSB)之类的多点总线、诸如快速路径互连(QPI)之类的点对点接口或者类似的连接395而与(多个)处理器310、315通信。
在一个实施例中,协处理器345是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中心320可以包括集成图形加速器。
物理资源310、315之间可能存在一系列优点指标方面的各种差异,所述指标包括架构、微架构、热、电力消耗特性等等。
在一个实施例中,处理器310执行控制一般类型数据处理操作的指令。协处理器指令可以嵌入在指令内。处理器310将这些协处理器指令识别为应当由所附连的协处理器345执行的类型。相应地,处理器310在协处理器总线或其他互连上向协处理器345发布这些协处理器指令(或者表示协处理器指令的控制信号)。(多个)协处理器345接受并且执行所接收的协处理器指令。
现在参照图4,示出了依照本发明的实施例的第一个更为具体的示例性系统400的框图。如图4中所示,多处理器系统400是点对点互连系统,并且包括经由点对点互连450耦合的第一处理器470和第二处理器480。处理器470和480中的每一个可以是某种版本的处理器200。在本发明的一个实施例中,处理器470和480分别为处理器310和315,而协处理器438是协处理器345。在另一实施例中,处理器470和480分别为处理器310和协处理器345。
处理器470和480被示出为分别包括集成存储器控制器(IMC)单元472和482。处理器470还包括作为其总线控制器单元的部分的点对点(P-P)接口476和478;类似地,第二处理器480包括P-P接口486和488。处理器470、480可以使用P-P接口电路478、488而经由点对点(P-P)接口450交换信息。如图4中所示,IMC 472和482将处理器耦合到相应存储器,即存储器432和存储器434,其可以是在本地附连到相应处理器的主存储器的部分。
处理器470、480各自可以使用点对点接口电路476、494、486、498而经由个体P-P接口452、454与芯片组490交换信息。芯片组490可以可选地经由高性能接口439与协处理器438交换信息。在一个实施例中,协处理器438是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可以包括在处理器中或者两个处理器外部,而经由P-P互连与处理器连接,使得任一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中,如果处理器放置到低电力模式中的话。
芯片组490可以经由接口496耦合到第一总线416。在一个实施例中,第一总线416可以是外围组件互连(PCI)总线,或者诸如快速PCI总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图4中所示,各种I/O设备414可以耦合到第一总线416,连同将第一总线416耦合到第二总线420的总线418一起。在一个实施例中,一个或多个附加处理器415,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器,耦合到第一总线416。在一个实施例中,第二总线420可以是低引脚计数(LPC)总线。各种设备可以耦合到第二总线420,包括例如键盘和/或鼠标422、通信设备427和存储单元428,诸如盘驱动器或者其他大容量存储设备,其在一个实施例中可以包括指令/代码和数据430。另外,音频I/O 424可以耦合到第二总线420。要指出的是,其他架构是可能的。例如,代替图4的点对点架构,系统可以实现多点总线或其他这样的架构。
现在参照图5,示出了依照本发明的实施例的第二更为具体的示例性系统500的框图。图4和5中的相似元件标有相似参考标号,并且图4的某些方面已经从图5省略以便避免使图5的其他方面模糊。
图5图示了处理器470、480可以分别包括集成存储器和I/O控制逻辑(“CL”)472和482。因而,CL 472、482包括集成存储器控制器并且包括I/O控制逻辑。图5图示了不仅存储器432、434耦合到CL 472、482,而且I/O设备514也耦合到控制逻辑472、482。传统I/O设备515耦合到芯片组490。
现在参照图6,示出了依照本发明的实施例的SoC 600的框图。图2中的相似元件标有相似参考标号。而且,虚线框是更为先进的SoC上的可选特征。在图6中,(多个)互连单元602耦合到:包括一个或多个核202A-N的集合和(多个)共享高速缓存单元206的应用处理器610;系统代理单元210;(多个)总线控制器单元216;(多个)集成存储器控制器单元214;可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一集合或一个或多个协处理器620;静态随机存取存储器(SRAM)单元630;直接存储器存取(DMA)单元632;以及用于耦合到一个或多个外部显示器的显示单元640。在一个实施例中,(多个)协处理器620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文公开的机制的实施例可以实现在硬件、软件、固件或这样的实现方案的组合中。本发明的实施例可以实现为计算机程序或程序代码,其在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行。
可以应用程序代码,诸如在图4中图示的代码430,以输入指令来执行本文描述的功能并且生成输出信息。输出信息可以以已知方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,诸如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级过程式或面向对象编程语言实现以与处理系统通信。程序代码也可以用汇编或机器语言实现,如果期望的话。事实上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解译语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该指令表示处理器内的各种逻辑,其在由机器读取时使得机器构造逻辑以执行本文描述的技术。称为“IP核”的这样的表示可以存储在有形机器可读介质上并且供应给各种消费者或制造机构以加载到实际做出逻辑或处理器的构造机器中。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如硬盘之类的存储介质、任何其他形式的盘(包括软盘、光学盘、光盘只读存储器(CD-ROM)、光盘可再写(CD-RW)和磁光盘)、诸如只读存储器(ROM)之类的半导体器件、诸如动态随机存取存储器(DRAM)之类的随机存取存储器(RAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光学卡、或者适用于存储电子指令的任何其他类型的介质。
相应地,本发明的实施例还包括包含指令或包含设计数据的非暂时性有形机器可读介质。诸如硬件描述语言(HDL),其限定本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以称为程序产品。
在一些情况下,指令转换器可以用于将指令从源指令集转换成目标指令集。例如,指令转换器可以翻译(例如使用静态二进制翻译、动态二进制翻译(包括动态编译))、变异、仿效或以其他方式将指令转换成要由核处理的一个或多个其他指令。指令转换器可以实现在软件、硬件、固件或其组合中。指令转换器可以是接通处理器、关断处理器、或者部分接通和部分关断的处理器。
图7是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令形成对照的框图。在所图示的实施例中,指令转换器是软件指令转换器,但是可替换地,指令转换器可以实现在软件、固件、硬件或其各种组合中。图7示出了高级语言702的程序可以使用x86编译器704编译以生成x86二进制代码706,其可以由具有至少一个x86指令集核的处理器716本机执行。具有至少一个x86指令集核的处理器716表示任何处理器,所述处理器可以通过以下方式执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能:兼容地执行或以其他方式处理(1)Intel x86指令集核的指令集的基本部分或者(2)目标是在具有至少一个x86指令集核的Intel处理器上运行的应用或其他软件的对象代码版本,以便实现与具有至少一个x86指令集核的Intel处理器基本上相同的结果。x86编译器704表示可操作为生成x86二进制代码706(例如对象代码)的编译器,该代码可以在具有或没有附加链接处理的情况下在具有至少一个x86指令集核的处理器716上执行。类似地,图7示出了高级语言702的程序可以使用可替换指令集编译器708编译以生成可替换指令集二进制代码710,其可以由没有至少一个x86指令集核的处理器714(例如,具有执行Sunnyvale, CA的MIPS Technologies的MIPS指令集和/或执行Sunnyvale, CA的ARM Holdings的ARM指令集的核的处理器)本机执行。指令转换器712用于将x86二进制代码706转换成可以由没有x86指令集核的处理器714本机执行的代码。该经转换的代码不大可能与可替换的指令集二进制代码710相同,因为能够这样做的指令转换器难以做出;然而,经转换的代码将完成一般操作并且由来自可替换指令集的指令构成。因而,指令转换器712表示软件、固件、硬件或其组合,其通过模仿、仿真或任何其他过程而允许没有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码706。
用于高速缓存占据确定和指令调度的装置和方法
本发明的一个实施例使用与数据相关联的地址来确定数据项目当前是否存储在高速缓存中并且基于所述确定调度一个或多个随后操作(例如宏指令、微操作等)。术语“调度”在本文中宽泛地用于指代涉及是否和/或何时应当执行特定指令、微操作的任何决定;包括关于特定工作部分是否可以从一个线程再分配到另一个的决定(例如当线程看起来像从其他线程的工作队列盗取工作时,如在以下示例中描述的那样)。
除确定数据是否处于高速缓存中之外,一个实施例也可以提供其中存储数据的(多个)特定高速缓存级的指示(例如1级(L1)、2级(L3)、较低级高速缓存(LLC)等);访问数据所要求的预期“时间”量的指示(例如以处理器周期计);和/或关于地址是否根据指定搜索等级而“太远”的指示(例如使用阈值数目的处理器周期)。
本发明的一个实施例可以实现为指令,其取得作为输入的地址并且提供关于由地址标识的数据项目当前是否被缓存的指示。如下文详细讨论的,该指令的结果然后可以在调度随后指令以用于执行时使用(例如选择针对其地址被缓存的那些指令)。
作为示例,该“高速缓存占据确定”指令可以采取诸如以下形式:
INCACHE SRC1,DST1
其中数据地址存储在源寄存器SRC1中并且确定结果(即数据是否被缓存、什么级、预期的访问“时间”、地址“太远”的指示等等)被写入到目的寄存器DST1。
在一个实施例中,高速缓存占据确定指令是矢量指令,诸如先进的矢量扩展(AVX)或AVX2指令,其从一个或多个矢量源寄存器(例如其中单个矢量寄存器可以存储多个地址操作数)读取多个地址并且将多个结果写入到一个或多个矢量目的寄存器(例如其中单个矢量目的寄存器存储多个结果)。然而应当指出的是,本发明的底层原理不限于矢量实现。
如图8中所图示的,在一个实施例中,处理器内的指令逻辑830包括高速缓存占据确定逻辑800以用于执行本文描述的高速缓存占据确定操作。例如,响应于执行INCACHE指令,高速缓存占据确定逻辑800可以确定一个或多个地址801是否与当前存储在高速缓存级810-812之一中的数据相关联。如上文提及的,结果802可以包括该信息以及(多个)特定高速缓存级的指示、预期的访问时间(例如以处理器周期计)和/或地址是否太远的指示(例如基于指定阈值的处理器周期)。在一个实施例中,通过使用(多个)地址执行高速缓存查找操作来完成确定(例如比较地址或地址的部分与现有高速缓存标签)。
在一个实施例中,一旦确定结果802,它们就可以由调度逻辑820使用以用于调度随后操作的执行。例如,关于存储在L1高速缓存中的数据的操作可以首先执行,接着是关于存储在L2高速缓存中的数据的操作,接着是在高速缓存层级中进一步向下的操作(例如存储在较低级高速缓存(LLC)或(多个)其他较低高速缓存级中)。尽管没有在图8中具体示出,但是调度逻辑820可以实现在处理器或核的指令解码级中(例如在预留站或其他调度单元内)。
在一个实施例中,指令充当针对随后操作的线索。与地址相关联的高速缓存行可以在指令返回之后(例如在随后操作需要数据的时候)从高速缓存逐出,从而导致其结果废弃。在这样的情况下,仅性能将受影响并且地址将简单地使用已知技术而被带回到高速缓存中。
指令的一个实施例可以尝试保持高速缓存810-812中的高速缓存行。例如,由占据确定逻辑800执行的查找可以被视为使用高速缓存行(例如针对至少最近使用的(LRU)或其他逐出策略,或者提供行可以在高速缓存中停留多久/最近如何使用它的指示)以改进行足够长久地维持在高速缓存中以由随后指令使用的几率。
如所提及的,由高速缓存占据指令提供的信息(例如是否在高速缓存中、高速缓存级等)然后可以用来调度随后指令和/或线程的执行。例如,高速缓存占据指令可以使得各种类型的过程能够以更为高效、具有高速缓存意识的方式执行,包括(但不限于)围绕工作队列循环的工作队列算法、在每一次迭代处提取并处理工作项目、以及可能地在这样做时利用附加项目扩增工作队列。在存在并发的情况下,任何项目可以从工作队列拿掉并且执行。可以存在或者可以不存在并行性。在一些情况下,项目可能需要一次一个地处理(单线程的);在其他场景中,若干工作者可以并行地处理分立项目(参见下文讨论的“工作盗取”)。
本发明的一个实施例用于从工作队列选择下一项目以进行处理。在所有情况等同(并且忽略公正性问题)的情况下,有益的性能将是选取其数据已经处于一个高速缓存中(特别地在高速缓存层级中进一步向上的高速缓存,诸如L1高速缓存810)的项目。如果所执行的过程是存储器范围的(其中难以预测接下来将需要哪些地址),则这可能特别有益。
在本发明的一个实施例中,利用本发明的实施例的过程扫描工作队列以搜寻“被缓存的”项目(例如如本文描述的利用高速缓存占据指令),并且处理首先找到的那个。可替换地或者此外,过程可以标识被缓存的多个项目并且选取在高速缓存层级中相对较高的一个或多个工作项目(例如在L1高速缓存中)。如果在高速缓存中没有找到项目,则工作队列上的第一个项目被拾取和处理(例如使用标准技术)。
当对其节点分散于存储器中的树进行扫描时,本发明的实施例可以特别地适用。在这种实现中,工作队列上的每一个项目指定向节点的指针。若干这样的节点可以驻留在相同高速缓存行中,但是在任意的次序或位置中。通常,可以仅基于预期的高速缓存行为而在例如遍历树的宽度优先搜索(BFS)或深度优先搜索(DFS)之间做出选择,从而希望针对空间地点进行优化。
使用本发明的实施例,可以通过使高速缓存引导扫描来获得较大精度(如上文讨论的)。这样的扫描的实例包括例如遍历四元/八元树来以任意次序处理其遗留物,并且标记并清扫垃圾收集器(即回收不再在由程序的使用中的存储器的部分的过程)。
另一示例牵涉到工作盗取并行执行框架,诸如线程构建模块(TBB)、由本申请的受让方开发以用于编写利用多核处理器的软件程序的C++模板库。当线程看起来像是从其他线程的工作队列盗取工作时,其将偏好盗取已经处于盗取线程的高速缓存中的工作。确定工作是否处于高速缓存中可以使用本文描述的技术来完成。
作为具体示例,将在BFS扫描的以下教科书实现(来自Wikipedia)的上下文内描述本发明的一个实施例:
一个实施例通过循环遍历Q或Q的有限部分来实现行6(),以搜索驻留在高速缓存中的条目(例如执行上文描述的高速缓存占据指令)。如果找到一个,则其“出列”(可能地从Q中部)并且返回。如果没有找到这样的条目,则Q的第一个元素出列。要指出的是,搜索可能不再是宽度优先的。
另一应用是在行13中检查以确定u是否处于高速缓存中。如果是,则继续检查其标记,并且将其排队在“被缓存”队列中。如果u不处于高速缓存中,则将其排队在“未被缓存”队列中。在一个实施例中,首先从“被缓存”队列执行工作项目;当被缓存队列为空时,从“未被缓存”队列执行工作项目。
在图9中图示了用于确定数据是否存储在高速缓存中的方法的一个实施例。在901处,标识与要处理的数据相关联的一个或多个地址(例如如从等待执行的一个或多个指令所确定的)。如之前提及的,在一个实施例中,多个地址可以同时读取和处理(例如通过矢量执行从矢量寄存器读取)。在902处,关于与每一个地址相关联的数据是否存储在一个高速缓存级中做出确定。如果否,则在904处存储指示数据没有处于高速缓存中的结果(例如在目的/结果寄存器中)。如果是,则在903处,存储指示数据存储于一个高速缓存级中的结果,潜在地连同高速缓存级的身份和/或其他相关信息(例如预期的访问“时间”、地址“太远”的指示等等)。
在905处,基于结果调度一个或多个随后操作。例如,如果没有数据存储在高速缓存级中,则可以使用现有调度技术来调度随后操作。然而,如果用于一个或多个待决操作的数据存储在高速缓存中,则这些操作可以被调度以用于在没有存储于高速缓存中的数据的操作之前执行。在一个实施例中,其中存储数据的(多个)高速缓存级的身份可以用于调度。例如,关于存储在L1高速缓存中的数据的操作可以首先执行,接着是关于存储在L2高速缓存中的数据的操作,并且然后是在高速缓存层级中进一步向下的操作(例如存储在较低级高速缓存(LLC)或(多个)其他较低高速缓存级中)。
应当指出的是,使用本文描述的技术调度的“操作”可以包括任何形式的操作,包括例如宏指令或微操作。此外,本发明的底层原理可以实现在任何类型的指令集架构上,包括复杂指令集计算机(CISC)架构和精简指令集计算机(RISC)架构。
在图10中图示了用于基于每一个工作项目的数据是否存储于高速缓存中来从工作队列调度工作项目的方法的一个实施例。在1001处,选择一个或多个工作项目以用于评估。如所提及的,每一个工作项目可以存储在待决执行的工作队列中并且多个工作项目可以并行地评估。在1002处,关于执行一个或多个工作项目所需要的数据是否存储在高速缓存中做出确定(例如使用如上文讨论的数据的地址)。如果否,则在1004处,存储指示数据没有处于高速缓存中的结果,并且在1005处使用现有技术来调度工作项目(例如使用BFS扫描)。
然而,如果在1002处确定一个或多个工作项目的数据被缓存,则在1003处,存储指示数据存储在一个高速缓存级中的结果,潜在地连同高速缓存级的身份和/或其他相关信息(例如预期的访问“时间”、地址“太远”的指示等等)。在1005处,针对其缓存数据的工作项目可以被调度以用于在没有存储于高速缓存中的数据的工作项目之前执行。在一个实施例中,其中存储数据的(多个)高速缓存级的身份可以用于调度。例如,如在图9中所示的实施例中,与存储在L1高速缓存中的数据有关的工作项目可以首先执行,接着是与存储在L2高速缓存中的数据有关的工作项目,并且然后是在高速缓存层级中进一步向下的工作项目(例如存储在较低级高速缓存(LLC)或(多个)其他较低高速缓存级中)。
本发明的实施例可以包括已经在上文描述的各种步骤。步骤可以体现在计算机可执行指令中,其可以用于使得通用或专用处理器执行所述步骤。可替换地,这些步骤可以通过包含用于执行步骤的硬连线逻辑的具体硬件组件来执行,或者通过编程计算机组件和定制硬件组件的任何组合来执行。
如本文描述的,指令可以是指诸如专用集成电路(ASIC)的硬件的具体配置,所述硬件配置成执行某些操作或者具有存储在非暂时性计算机可读介质中所体现的存储器中的预确定功能性或软件指令。因而,在图中示出的技术可以使用在一个或多个电子设备(例如终端站、网络元件等)上存储和执行的代码和数据来实现。这样的电子设备使用计算机机器可读介质来(内部地和/或通过网络与其他电子设备)存储和传送代码和数据,计算机机器可读介质诸如非暂时性计算机机器可读存储介质(例如磁盘;光学盘;随机存取存储器;只读存储器;闪速存储器设备;相变存储器)和暂时性计算机机器可读通信介质(例如电气、光学、声学或其他形式的传播信号——诸如载波、红外信号、数字信号等等)。此外,这样的电子设备典型地包括耦合到一个或多个其他组件的一个或多个处理器的集合,所述其他组件诸如一个或多个存储设备(非暂时性机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)和网络连接。处理器的集合和其他组件的耦合典型地通过一个或多个总线和桥(还称为总线控制器)进行。存储设备和承载网络业务量的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因而,给定电子设备的存储设备典型地存储代码和/或数据以用于在该电子设备的一个或多个处理器的集合上执行。当然,本发明的实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合来实现。贯穿该详细描述,出于解释的目的,阐述了众多具体细节以便提供对本发明的透彻理解。然而,对于本领域技术人员而言将清楚的是,本发明可以在没有这些具体细节中的一些的情况下实践。在某些实例中,没有详尽地描述公知结构和功能以便避免使本发明的主题模糊。因而,本发明的范围和精神应当根据所附的权利要求来判定。
Claims (32)
1.一种处理器,包括:
包括至少1级(L1)高速缓存的分层级的高速缓存级,用于对数据进行缓存;
高速缓存占据确定逻辑,用于确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中;以及
调度逻辑,用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执行。
2.根据权利要求1所述的处理器,其中高速缓存占据确定逻辑包括执行逻辑,用于执行高速缓存占据指令以确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中。
3.根据权利要求2所述的处理器,其中高速缓存占据指令读取与用于所述一个或多个随后指令的所述数据相关联的一个或多个地址并且使用所述地址来确定所述数据是否存储在一个高速缓存级中。
4.根据权利要求3所述的处理器,其中使用所述地址包括执行关于所述地址的高速缓存查找操作。
5.根据权利要求1所述的处理器,其中高速缓存占据确定逻辑还用于确定其中存储与所述一个或多个随后操作相关联的所述数据的特定高速缓存级。
6.根据权利要求5所述的处理器,其中调度逻辑用于基于其中存储用于所述随后操作的所述数据的特定高速缓存级的确定来调度所述随后操作的执行。
7.根据权利要求6所述的处理器,其中调度逻辑在与高速缓存层级中相对较低的数据和/或没有处于高速缓存级中的数据有关的操作之前调度与高速缓存层级中相对较高的数据有关的操作。
8.根据权利要求1所述的处理器,其中高速缓存占据确定逻辑还基于指定阈值来确定预期的访问所述数据的时间和/或所述数据是否太远的指示。
9.根据权利要求8所述的处理器,其中调度逻辑在基于指定阈值所确定的预期的访问所述数据的时间和/或所述数据是否太远的指示的基础上调度所述随后操作。
10.根据权利要求1所述的处理器,其中高速缓存级还包括2级(L2)高速缓存和较低级高速缓存(LLC)。
11.一种由处理器执行的方法,包括:
在包括至少1级(L1)高速缓存的分层级的高速缓存级内对数据进行缓存;
确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中;以及
基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执行。
12.根据权利要求11所述的方法,还包括:
执行高速缓存占据指令以确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中。
13.根据权利要求12所述的方法,其中高速缓存占据指令读取与用于一个或多个随后指令的所述数据相关联的一个或多个地址并且使用所述地址来确定所述数据是否存储在一个高速缓存级中。
14.根据权利要求13所述的方法,其中使用所述地址包括执行与所述地址有关的高速缓存查找操作。
15.根据权利要求11所述的方法,还包括:
确定其中存储与所述一个或多个随后操作相关联的所述数据的特定高速缓存级。
16.根据权利要求15所述的方法,还包括:
基于其中存储用于所述随后操作的所述数据的特定高速缓存级的确定来调度所述随后操作的执行。
17.根据权利要求16所述的方法,还包括:
在与高速缓存层级中相对较低的数据和/或没有处于高速缓存级中的数据有关的操作之前调度与高速缓存层级中相对较高的数据有关的操作。
18.根据权利要求11所述的方法,还包括:
基于指定阈值来确定预期的访问所述数据的时间和/或所述数据是否太远的指示。
19.根据权利要求18所述的方法,还包括:
在基于指定阈值所确定的预期的访问所述数据的时间和/或所述数据是否太远的指示的基础上调度所述随后操作。
20.根据权利要求11所述的方法,其中高速缓存级还包括2级(L2)高速缓存和较低级高速缓存(LLC)。
21.一种计算机系统,包括:
用于存储程序代码和数据的存储器;
用于与一个或多个外围设备通信的输入/输出(IO)通信接口;
用于将系统通信耦合到网络的网络通信接口;以及
处理器,包括:
包括至少1级(L1)高速缓存的分层级的高速缓存级,用于对数据进行缓存;
高速缓存占据确定逻辑,用于确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中;以及
调度逻辑,用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执行。
22.一种要由处理器使用的装置,包括:
用于在包括至少1级(L1)高速缓存的分层级的高速缓存级内对数据进行缓存的部件;
用于确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中的部件;以及
用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执行的部件。
23.根据权利要求22所述的装置,还包括:
用于执行高速缓存占据指令以确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中的部件。
24.根据权利要求23所述的装置,其中高速缓存占据指令读取与用于一个或多个随后指令的所述数据相关联的一个或多个地址并且使用所述地址来确定所述数据是否存储在一个高速缓存级中。
25.根据权利要求24所述的装置,其中使用所述地址包括执行与所述地址有关的高速缓存查找操作。
26.根据权利要求22所述的装置,还包括:
用于确定其中存储与所述一个或多个随后操作相关联的所述数据的特定高速缓存级。
27.根据权利要求26所述的装置,还包括:
用于基于其中存储用于所述随后操作的所述数据的特定高速缓存级的确定来调度所述随后操作的执行的部件。
28.根据权利要求27所述的装置,还包括:
用于在与高速缓存层级中相对较低的数据和/或没有处于高速缓存级中的数据有关的操作之前调度与高速缓存层级中相对较高的数据有关的操作的部件。
29.根据权利要求22所述的装置,还包括:
用于基于指定阈值来确定预期的访问所述数据的时间和/或所述数据是否太远的指示。
30.根据权利要求29所述的装置,还包括:
用于在基于指定阈值所确定的预期的访问所述数据的时间和/或所述数据是否太远的指示的基础上调度所述随后操作的部件。
31.根据权利要求22所述的装置,其中高速缓存级还包括2级(L2)高速缓存和较低级高速缓存(LLC)。
32.一种计算机可读介质,具有存储在其上的指令,所述指令在被执行时促使计算机执行如权利要求11-20中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/035,231 US10140210B2 (en) | 2013-09-24 | 2013-09-24 | Method and apparatus for cache occupancy determination and instruction scheduling |
US14/035231 | 2013-09-24 | ||
PCT/US2014/054491 WO2015047700A1 (en) | 2013-09-24 | 2014-09-08 | Method and apparatus for cache occupancy determination and instruction scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105453041A CN105453041A (zh) | 2016-03-30 |
CN105453041B true CN105453041B (zh) | 2019-10-01 |
Family
ID=52692054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480046896.5A Active CN105453041B (zh) | 2013-09-24 | 2014-09-08 | 用于高速缓存占据确定和指令调度的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10140210B2 (zh) |
EP (1) | EP3049924B1 (zh) |
JP (1) | JP6375379B2 (zh) |
KR (1) | KR101804908B1 (zh) |
CN (1) | CN105453041B (zh) |
TW (1) | TWI536165B (zh) |
WO (1) | WO2015047700A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI588652B (zh) * | 2015-09-01 | 2017-06-21 | 慧榮科技股份有限公司 | 讀取及寫入命令排程方法以及使用該方法的裝置 |
TWI621015B (zh) * | 2015-09-01 | 2018-04-11 | 慧榮科技股份有限公司 | 讀取及寫入命令排程方法以及使用該方法的裝置 |
US10521350B2 (en) | 2016-07-20 | 2019-12-31 | International Business Machines Corporation | Determining the effectiveness of prefetch instructions |
US10169239B2 (en) | 2016-07-20 | 2019-01-01 | International Business Machines Corporation | Managing a prefetch queue based on priority indications of prefetch requests |
US10452395B2 (en) * | 2016-07-20 | 2019-10-22 | International Business Machines Corporation | Instruction to query cache residency |
US10621095B2 (en) | 2016-07-20 | 2020-04-14 | International Business Machines Corporation | Processing data based on cache residency |
US9946646B2 (en) * | 2016-09-06 | 2018-04-17 | Advanced Micro Devices, Inc. | Systems and method for delayed cache utilization |
US10152338B2 (en) | 2016-12-14 | 2018-12-11 | International Business Machines Corporation | Marking external sibling caller routines |
US10180827B2 (en) | 2016-12-14 | 2019-01-15 | International Business Machines Corporation | Suppressing storing of context information |
US10241769B2 (en) | 2016-12-14 | 2019-03-26 | International Business Machines Corporation | Marking sibling caller routines |
US10095493B2 (en) | 2016-12-14 | 2018-10-09 | International Business Machines Corporation | Call sequence generation based on type of routine |
US20180165073A1 (en) | 2016-12-14 | 2018-06-14 | International Business Machines Corporation | Context information based on type of routine being called |
US10235190B2 (en) | 2016-12-14 | 2019-03-19 | International Business Machines Corporation | Executing instructions to store context information based on routine to be executed |
US10372452B2 (en) * | 2017-03-14 | 2019-08-06 | Samsung Electronics Co., Ltd. | Memory load to load fusing |
CN108279928B (zh) * | 2018-01-30 | 2021-03-19 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN111752868B (zh) * | 2019-03-27 | 2024-06-18 | 北京沃东天骏信息技术有限公司 | Lru缓存的实现方法、装置、计算机可读存储介质及设备 |
CN113138798A (zh) * | 2020-01-18 | 2021-07-20 | 佛山市云米电器科技有限公司 | 多场景下的指令执行方法、装置、设备及存储介质 |
CN116755782B (zh) * | 2023-08-18 | 2023-10-20 | 腾讯科技(深圳)有限公司 | 一种指令调度的方法、装置、设备、存储介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724586A (en) * | 1996-09-30 | 1998-03-03 | Nec Research Institute, Inc. | Method for improving cache locality of a computer program |
CN1849591A (zh) * | 2002-11-22 | 2006-10-18 | 皇家飞利浦电子股份有限公司 | 使用高速缓存未命中模式来寻址跨距预测表 |
JP2011150691A (ja) * | 2009-12-25 | 2011-08-04 | Fujitsu Ltd | 演算処理装置、情報処理装置及び制御方法 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5943691A (en) * | 1995-12-27 | 1999-08-24 | Sun Microsystems, Inc. | Determination of array padding using collision vectors |
US5761515A (en) | 1996-03-14 | 1998-06-02 | International Business Machines Corporation | Branch on cache hit/miss for compiler-assisted miss delay tolerance |
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US6237059B1 (en) | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system interactions among contexts in a computer system |
US6308261B1 (en) | 1998-01-30 | 2001-10-23 | Hewlett-Packard Company | Computer system having an instruction for probing memory latency |
GB2348306B (en) | 1999-03-25 | 2003-07-30 | Ibm | Data processing systems and method for processing tasks in such systems |
KR20030088031A (ko) | 2001-02-27 | 2003-11-15 | 인터내셔널 비지네스 머신즈 코포레이션 | 마이크로 프로세서 및 명령실행순서 스케쥴링 방법 |
US8069336B2 (en) * | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
JP4520788B2 (ja) | 2004-07-29 | 2010-08-11 | 富士通株式会社 | マルチスレッドプロセッサ |
US7392340B1 (en) * | 2005-03-21 | 2008-06-24 | Western Digital Technologies, Inc. | Disk drive employing stream detection engine to enhance cache management policy |
US7430642B2 (en) * | 2005-06-10 | 2008-09-30 | Freescale Semiconductor, Inc. | System and method for unified cache access using sequential instruction information |
EP1914632B1 (en) | 2005-08-09 | 2012-06-27 | Fujitsu Ltd. | Schedule control program and schedule control method |
US20070180158A1 (en) | 2006-02-01 | 2007-08-02 | International Business Machines Corporation | Method for command list ordering after multiple cache misses |
US20070186049A1 (en) | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for instruction lines |
US7447879B2 (en) | 2006-02-09 | 2008-11-04 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
US7689773B2 (en) * | 2006-11-30 | 2010-03-30 | Sun Microsystems, Inc. | Methods and apparatus for estimating fair cache miss rates on a chip multiprocessor |
WO2009029549A2 (en) * | 2007-08-24 | 2009-03-05 | Virtualmetrix, Inc. | Method and apparatus for fine grain performance management of computer systems |
US7890702B2 (en) * | 2007-11-26 | 2011-02-15 | Advanced Micro Devices, Inc. | Prefetch instruction extensions |
JP4759026B2 (ja) | 2008-07-15 | 2011-08-31 | 公立大学法人広島市立大学 | プロセッサ |
US8392651B2 (en) * | 2008-08-20 | 2013-03-05 | Mips Technologies, Inc. | Data cache way prediction |
US9396024B2 (en) * | 2008-10-14 | 2016-07-19 | Vmware, Inc. | Online computation of cache occupancy and performance |
US8429665B2 (en) | 2010-03-19 | 2013-04-23 | Vmware, Inc. | Cache performance prediction, partitioning and scheduling based on cache pressure of threads |
US9244732B2 (en) * | 2009-08-28 | 2016-01-26 | Vmware, Inc. | Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution |
US9639479B2 (en) | 2009-09-23 | 2017-05-02 | Nvidia Corporation | Instructions for managing a parallel cache hierarchy |
US20110072218A1 (en) * | 2009-09-24 | 2011-03-24 | Srilatha Manne | Prefetch promotion mechanism to reduce cache pollution |
US8677071B2 (en) * | 2010-03-26 | 2014-03-18 | Virtualmetrix, Inc. | Control of processor cache memory occupancy |
US9110810B2 (en) | 2011-12-06 | 2015-08-18 | Nvidia Corporation | Multi-level instruction cache prefetching |
US9311098B2 (en) * | 2013-05-07 | 2016-04-12 | Apple Inc. | Mechanism for reducing cache power consumption using cache way prediction |
-
2013
- 2013-09-24 US US14/035,231 patent/US10140210B2/en active Active
-
2014
- 2014-09-02 TW TW103130266A patent/TWI536165B/zh active
- 2014-09-08 WO PCT/US2014/054491 patent/WO2015047700A1/en active Application Filing
- 2014-09-08 KR KR1020167004467A patent/KR101804908B1/ko active IP Right Grant
- 2014-09-08 JP JP2016542028A patent/JP6375379B2/ja not_active Expired - Fee Related
- 2014-09-08 CN CN201480046896.5A patent/CN105453041B/zh active Active
- 2014-09-08 EP EP14849028.7A patent/EP3049924B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724586A (en) * | 1996-09-30 | 1998-03-03 | Nec Research Institute, Inc. | Method for improving cache locality of a computer program |
CN1849591A (zh) * | 2002-11-22 | 2006-10-18 | 皇家飞利浦电子股份有限公司 | 使用高速缓存未命中模式来寻址跨距预测表 |
JP2011150691A (ja) * | 2009-12-25 | 2011-08-04 | Fujitsu Ltd | 演算処理装置、情報処理装置及び制御方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3049924A4 (en) | 2017-06-28 |
TW201516681A (zh) | 2015-05-01 |
WO2015047700A1 (en) | 2015-04-02 |
TWI536165B (zh) | 2016-06-01 |
JP2016534476A (ja) | 2016-11-04 |
CN105453041A (zh) | 2016-03-30 |
US20150089139A1 (en) | 2015-03-26 |
JP6375379B2 (ja) | 2018-08-15 |
KR101804908B1 (ko) | 2017-12-07 |
KR20160033768A (ko) | 2016-03-28 |
EP3049924B1 (en) | 2020-12-23 |
US10140210B2 (en) | 2018-11-27 |
EP3049924A1 (en) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105453041B (zh) | 用于高速缓存占据确定和指令调度的方法和装置 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN109213522A (zh) | 远程原子操作指令 | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
CN108701027A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 | |
CN109690552A (zh) | 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN104937568B (zh) | 用于多页尺寸转换后备缓冲器(tlb)的装置和方法 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
CN104969178B (zh) | 用于实现便笺式存储器的装置和方法 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN107209723A (zh) | 用于虚拟化的细粒度地址重新映射 | |
CN109032609A (zh) | 用于实现页级自动二进制转换的硬件剖析机制 | |
CN110321299A (zh) | 用于检测重复数据访问并自动地将数据加载到本地高速缓存中的系统、方法和装置 | |
CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
CN105027137B (zh) | 用于针对增强型安全检查的页走查扩展的装置和方法 | |
CN108710582A (zh) | 用于基于局部性的指令处理的选择性启用的系统、设备和方法 | |
CN108885586A (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
CN108228234A (zh) | 用于聚集-更新-分散操作的加速器 | |
CN110347431A (zh) | 自适应空间访问预取器装置和方法 | |
CN108475199A (zh) | 用于执行密钥值查找指令的处理设备 | |
CN109791486A (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 |