CN108710582A - 用于基于局部性的指令处理的选择性启用的系统、设备和方法 - Google Patents
用于基于局部性的指令处理的选择性启用的系统、设备和方法 Download PDFInfo
- Publication number
- CN108710582A CN108710582A CN201810168641.6A CN201810168641A CN108710582A CN 108710582 A CN108710582 A CN 108710582A CN 201810168641 A CN201810168641 A CN 201810168641A CN 108710582 A CN108710582 A CN 108710582A
- Authority
- CN
- China
- Prior art keywords
- memory
- locality
- data
- processor
- 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.)
- Pending
Links
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- 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
-
- 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
- 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/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
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/1028—Power efficiency
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
- G06F2212/6046—Using a specific cache allocation policy other than replacement policy
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一实施例中,处理器包含:具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和计数信息;以及向存储器发出读取请求的存储器控制器,该存储器控制器包含用于接收具有无局部性提示的存储器访问指令以及取代无局部性提示(其中至少部分基于在稀疏访问缓冲器的条目中存储的计数信息)的局部性控制器。还描述其它实施例并要求其它实施例的权利保护。
Description
技术领域
实施例一般涉及在计算系统中存储器访问的有效处理。
背景技术
诸如图分析学等稀疏数据处理工作负载执行无规律的存储器访问。在一些情况下,这些访问是针对大数据结构,并且是伪随机的。在现代处理器中,从存储器获取完全高速缓存行,并且将其插入高速缓冲存储器中。然而,在许多情况下,这些行在任何再使用前被逐出(从空间或时间局部性)。这既导致高速缓存污染,又导致外部存储器带宽的浪费。较新的存储器接口提供细粒度存储器访问能力,即,少于给定存储器行或高速缓存行宽度的存储器访问。然而,子高速缓存行存储器访问在处理器高速缓存层次结构中导致部分高速缓存行,这能够使高速缓存设计变得复杂。
附图说明
图1是根据本发明的一实施例的系统的框图。
图2是根据本发明的一实施例的处理器的框图。
图3是根据本发明的一实施例的系统的框图。
图4是根据本发明的一实施例的方法的流程图。
图5是根据本发明的另一实施例的方法的流程图。
图6是根据本发明的一实施例的稀疏访问缓冲器的框图。
图7A是根据本发明的实施例,要包括在处理器中的示范有序管线和示范寄存器重命名的乱序发出/执行管线的框图。
图7B是图示了根据本发明的实施例,要包括在处理器中的示范寄存器重命名的乱序发出/执行架构核和有序架构核的示范实施例两者的框图。
图8是根据本发明的实施例,带有集成存储器控制器和图形的多核处理器和单核处理器的框图。
图9图示了根据本发明的一实施例的系统的框图。
图10图示了根据本发明的一实施例的芯片上系统(SoC)的框图。
图11图示了根据本发明的实施例,对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
在各种实施例中,处理器配置成通过以可能细粒度方式访问展示非局部性的数据(本文中称为无局部性数据)和可能绕过在高速缓冲存储器中的存储,优化此类数据的处理。一些实施例可利用用户级无局部性存储器访问指令,其可用于以绕过高速缓存层次结构的方式读取和写入数据。此类指令也可用于进行如本文中所述的细粒度存储器访问。虽然本发明的范围在此方面不受限制,但此类指令包含流传送加载和存储指令,核可响应指令针对被访问的各个数据元素而发出若干加载或存储,其携带存储器访问将绕过在高速缓存中的存储,并且可在存储器控制器处被狭窄地处理的提示。
随着响应本文中描述的某些无局部性请求而选择性启用全宽度存储器访问,可在访问模式实际上具高速缓存友好性(例如,如果以伪随机方式访问的数据结构适合于管芯上高速缓存,或者如果采用许多空间局部性以常规模式对数据结构非预期地访问)时利用局部性。以该方式,实施例可利用由较新存储器技术提供的细粒度存储器访问能力,而对高速缓存层次结构设计无重要更改,同时在它退出时捕捉访问中的局部性。
在实施例中,处理器包含对“无局部性”(NL)加载的微架构支持。与非时间加载不同,NL加载既不意指时间也不意指空间局部性。此类NL加载可促使处理器查找高速缓存,并且如果发生高速缓存命中,则如通过常规加载一样,返回数据。相反的是,如果发生未命中,并且在存储器控制器处收到NL请求,则存储器控制器促使发生细粒度存储器访问以从存储器获得部分高速缓存行。注意,此部分高速缓存行未被插入高速缓存中,而是绕过高速缓存,并且被直接向核提供。
图1是包含具有高速缓存层次结构103和存储器118的处理器102的系统100的一实施例的框图。处理器102和存储器118通过一个或多个互连116耦合在一起。处理器102包含一个或多个核104。在图示的示例中,处理器102包含第一核104-1到可选地多达第N核104-N。处理器可包含任何所需数量(例如,经常范围从一到大约几百)的核。核104-1包含一个或多个执行单元106-1,并且核104-N包含一个或多个执行单元106-N。
一般情况下,处理器102也可具有一个或多个高速缓存108、110。高速缓存可表示比存储器118相对更小和更快类型的存储装置。高速缓存也可比存储器118更靠近核和/或执行单元。高速缓存可用于缓存或存储从存储器118被带入处理器中的数据(例如,响应给定存储器访问指令112,例如,加载指令),以提供对数据的更快随后访问。在处理器寻求通过存储器118读取或写入数据时,它可先检查以了解在高速缓存中是否存储了数据的副本。如果在高速缓存中找到数据,则比起如果从存储器118访问数据,处理器可从高速缓存更快地访问数据。因此,包含高速缓存可有助于降低对于访问数据所需要的平均时间量,这可增强处理器的性能和/或吞吐量。
还参照图1,高速缓存层次结构103包含多级高速缓存,其不同在于其与处理器的核和/或执行单元的相对靠近度。核104-1具有第一级高速缓存或1级(L1)高速缓存108-1。类似地,核104-N具有L1高速缓存108-N。每个L1高速缓存可专用于其中包含它的对应核。L1高速缓存表示最靠近核的高速缓存级别。处理器也具有第二级高速缓存或2级(L2)高速缓存110。L2高速缓存表示下一最靠近核的高速缓存级别。在一些实现中,L2高速缓存可由核共享。虽然未示出,但可选地可存在离核仍更远的一个或多个另外的高速缓存级别(例如,3级(L3)高速缓存)。
在处理器中包含高速缓存的一个原因是存储器引用经常具有局部性属性。例如,对存储器中数据的引用经常具有时间和/或空间局部性。时间局部性意指在按照存储器中的地址访问数据时,可能在短的时间期内再次访问相同数据。作为示例方式,当相同值将在循环中被再使用时、在一组计算中被重复使用时或出于各种其它原因时,这可以是该情况。在此类情况下,在从存储器访问数据后,有益的是可在高速缓存中存储数据以便对数据的随后访问可从高速缓存更快地被执行而不是从存储器慢速地被执行。
空间局部性意指在从存储器中的地址访问给定数据时,也可能在短的时间期内访问在附近地址的附近数据。作为示例方式,二者数据集可以是相同内容的部分(例如,图像、表、数据结构、视频等),并且可在大约相同时间被处理。空间局部性也可出于各种其它原因而发生。高速缓存通过不但存储最初需要的数据,而且存储来自附近地址的附近数据,利用空间局部性。
一般情况下,即使在最初可只需要更小得多的数据量时,从存储器访问并且在高速缓存中存储的最少量的数据也是全宽度高速缓存行的数据量。例如,一般情况下,即使最初只需要单个8比特、16比特、32比特、64比特或128比特数据元素,也可从存储器访问并且在高速缓存中存储整个512比特高速缓存行。如果空间局部性存在,则由于在不远的将来也可能将需要被带进高速缓存中的另外数据,因此,这将是有益的。
在操作期间,通过逐出在不远的将来不可能需要的数据,以便为在不远的将来可能需要的数据腾出空间,不断更改在高速缓存中的数据。各种替换算法和策略被使用,其中的许多经常在很大程度上基于由于时间局部性的数据的使用年限(例如,最近最少使用指示)。
存储器访问指令112通过在高速缓存层次结构103中存储已从存储器118聚集的数据元素,利用时间和/或空间局部性。许多数据类型和应用在其访问流中示出显著的空间和/或时间局部性,并且由此受益于在用于聚集的每个数据元素的高速缓存中访问和存储整个高速缓存行数据量。然而,并非所有数据类型和/或应用具有充分的时间和/或空间局部性来证明针对加载和/或存储指令在高速缓存中访问和存储整个高速缓存行是合理的。某些数据元素可只被需要一次,但不可能在不远的将来可再次被需要。例如,这可以是在某些流传送数据应用、高性能计算应用、具有极稀疏存储器访问的流的应用中和在各种其它应用中的情况。另外,在许多情况下,程序员和/或软件(例如,操作系统)可以能够识别局部性。
还参照图1,一个或多个核104可接收和执行无局部性提示存储器访问指令114(例如,诸如无局部性提示加载或聚集指令的无局部性提示加载指令,和/或诸如无局部性提示存储或散射指令的无局部性提示存储指令)。提示可指示要被访问(例如,聚集或散射)的数据具有不充分的空间和/或时间局部性。在一些实施例中,无局部性提示可以是无时间局部性提示。在其它实施例中,无局部性提示可以是无空间局部性提示。在还有的其它实施例中,无局部性提示可以是无时间和无空间局部性提示。就无时间局部性提示而言,在一些实施例中,聚集的数据元素可绕过高速缓存层次结构103和/或不存储在高速缓存层次结构103中,这可有助于降低高速缓存污染。就无空间局部性提示而言,在一些实施例中,可只通过子高速缓存行数据量(例如,一半或四分之一的高速缓存行数据量)或在一些情况下,单数据元素数据量来执行对数据元素的访问,这可有助于降低互连带宽的浪费和/或降低功耗。无局部性提示存储器访问指令的使用可有助于在当存在不充分的空间和/或时间局部性时的时间改善性能和/或降低功耗。
图2是可操作以执行无局部性提示存储器访问指令214的一实施例的处理器202的一实施例的框图。无局部性提示存储器访问指令也可在本文中称为无局部性提示加载指令。在一些实施例中,处理器202可以是通用处理器(例如,在桌上型、膝上型或其它计算机中使用的类型的通用微处理器或中央处理单元(CPU))。备选的是,处理器可以是专用处理器。合适的专用处理器的示例包含但不限于图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器202可以是任何各种复杂指令集计算(CISC)处理器、精简指令集计算(RISC)处理器、极长指令字(VLIW)处理器、其混合、其它类型的处理器,或者可以具有不同处理器的组合(例如,在不同核中)。
在操作期间,处理器202可接收无局部性提示存储器访问指令214。例如,可从指令获取单元、指令队列或诸如此类接收无局部性提示存储器访问指令。无局部性提示存储器访问指令可表示微指令、汇编语言指令、机器代码指令或处理器202的指令集的其它指令或控制信号。
还参照图2,处理器202包含解码单元或解码器230。解码单元230可接收和解码无局部性提示存储器访问指令214。解码单元230可输出一个或多个微指令、微操作、微代码进入点、解码的指令或控制信号,或反映、表示无局部性提示存储器访问指令和/或从其中导出的其它相对较低级别指令或控制信号。一个或多个较低级别指令或控制信号可通过一个或多个较低级别(例如,电路级或硬件级)操作,实现较高级别无局部性提示存储器访问指令。解码单元230可使用各种不同机制被实现,各种不同机制包含但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)及用于实现技术领域中已知的解码单元的其它机制。
再次参照图2,处理器202也包含一组通用寄存器242和一组紧缩数据寄存器232。每个紧缩数据寄存器可表示可操作以存储紧缩数据、向量数据或单指令多数据(SIMD)数据的管芯上存储位置。寄存器可表示对软件和/或程序员可视的架构上可视寄存器(例如,架构寄存器文件)和/或是由指令集的指令指示以识别操作数的寄存器。执行单元206与解码单元230和寄存器232、242耦合。执行单元206可接收表示无局部性提示加载指令和/或从其中导出的一个或多个解码的或以其它方式转换的指令或控制信号。
执行单元206是响应无局部性提示加载指令和/或由于无局部性提示加载指令(例如,响应从指令直接或间接(例如,通过模拟)解码的一个或多个指令或控制信号)而可操作,以访问在存储器中的位置。执行单元206可向一个或多个高速缓存控制器244提供无局部性提示加载操作248。在一些实施例中,可以有单个高速缓存级别和单个高速缓存控制器(例如,L1高速缓存控制器)。在其它实施例中,可以有两个或更多个高速缓存控制器(例如,L1高速缓存控制器、L2高速缓存控制器和可选地L3高速缓存控制器)。
在一些实施例中,如果无局部性提示加载操作248在高速缓存208中命中,则关联高速缓存控制器244可从高速缓存208可选地返回子高速缓存行数据量(其中高速缓存支持子高速缓存行访问,诸如分区高速缓存)。在各种实施例中,子高速缓存行数据量可以是仅高速缓存行的一半(例如,512比特高速缓存行的256比特)、仅高速缓存行的四分之一(例如,仅128比特)、仅高速缓存行的八分之一(例如,仅64比特)或仅单个数据元素(例如,1个128比特、64比特、32比特、16比特或8比特数据元素)。在其它情况下,在高速缓存命中时,可返回完全高速缓存行。
相反,如果无局部性提示加载操作248在所有高速缓存208中未命中,则响应请求249,可向存储器控制器246发送对数据的请求。在一些实施例中,存储器控制器246可执行来自存储器(例如,外部存储器)的子高速缓存行数据访问和返回250。而且注意的是,关联高速缓存控制器244可不在用于所请求的数据的高速缓存中分配存储空间,就像它通常对常规加载指令(即,没有无局部性提示)所做的一样。在各种实施例中,子高速缓存行数据访问和返回250可以是仅高速缓存行的一半(例如,仅256比特)、仅高速缓存行的四分之一(例如,仅128比特)、仅高速缓存行的八分之一(例如,仅64比特)或仅单个数据元素(例如,64比特、32比特、16比特或8比特数据元素)。也就是说,存储器控制器246可从存储器加载数据,其带有比一般将用于没有无局部性提示的加载操作(例如,常规加载操作)更小大小的访问和数据返回。作为一个特定示例,通用于访问完整512比特高速缓存行数据量的一对256比特总线信号中的仅一个可从存储器控制器246被发送到存储器,其中被发送的该一个总线信号是包含所需数据元素的一个总线信号。在一些实施例中,可选择性地使用足以含有所需数据元素的最小大小的访问和数据返回。存储器控制器246可向高速缓存控制器244提供子高速缓存行数据返回250。高速缓存控制器可向执行单元206提供对应子高速缓存行数据量252。因此,在各种实施例中,包含无局部性提示的加载指令可促使子高速缓存行数据访问和直接返回到核两者,绕过高速缓存层次结构。
在实施例中,处理器202包含所谓的稀疏访问缓冲器(SAB)245,其是包含在存储器控制器246中或与其关联的存储器结构。存储器控制器246在此缓冲器中登记细粒度访问的地址。在NL加载到达存储器控制器时,存储器控制器查找缓冲器。对SAB 245中对应条目的命中意指局部性(诸如其中数据以前绕过了高速缓存,但行现在被重新引用的情况)。在一个示例中,响应此情况,NL加载请求被选择性地启用以作为常规加载处理,使得完全高速缓存行作为选择性全宽度返回251从存储器被返回,并且被插入高速缓存中以针对将来访问利用局部性。以该方式,在SAB 245中的信息可由存储器控制器246用于选择性地过滤带有局部性可能的访问和将其目标数据作为完全高速缓存行插入高速缓存中,同时绕过带有无局部性的访问。
实施例可用于处理部分高速缓存行存储器访问而不使用分区高速缓存,这能够简化高速缓存设计。此外,通过一实施例,局部性可能在存在时能够经由高速缓存存储装置而被利用。带有用于局部性的可能的NL加载包含稀疏数据处理工作负载,其可基于输入数据集(例如,大小、类型、拓扑等),展示局部性可能。
在一实施例中,SAB结构包含在存储器控制器中以跟踪在存储器侧处的局部性行为。通过此布置,SAB主要观察低局部性访问业务,因为高局部性访问由高速缓存过滤。相反的是,核侧跟踪将接收带有高和低局部性访问两者的访问流。因此,存储器侧配置的SAB能够针对给定数量的条目提供更高得多的低局部性访问跟踪覆盖。作为示例,甚至带有少到如32个条目的SAB能够提供合理的性能,而核侧跟踪可消耗数量更大得多的条目,例如,256k个条目。
稀疏数据结构在大数据分析、机器学习和高性能计算中很常见。这些工作负载有时具有在高速缓存中不适合的极大数据结构。这些大的数据结构经常经由稀疏连接性矩阵被编索引,这导致带有差的空间局部性和再使用的无规律的访问(例如,通过A[B[i]]的循环,其中A是大的,并且其中B[i]可以是完全随机的)。经由部分宽度加载使用细粒度存储器访问通过降低带宽浪费和高速缓存污染,改善存储器系统性能。
在一实施例中,对无局部性加载的指令集架构(ISA)支持可包含建议无空间或时间局部性的单指令多数据(SIMD)聚集和特殊标量加载。作为基线系统,可为NL加载假设以下语义。在带有弱序化语义的可高速缓存的写回存储器上允许NL加载。这允许硬件推测性地读取数据,并且仍不为嗅探而将(可能部分)高速缓存行插入高速缓存层次结构中。
实施例执行动态判定以确定是否符合NL提示或者忽略提示以在高速缓存层次结构中存储获得的数据(其可能是全宽度)。基于若干因素,简单地为每个NL加载访问绕过高速缓存能够导致性能损耗:(i)稀疏索引的数据结构能够足够小以在高速缓存中适合,因为程序员经常事先不知道输入大小;以及(ii)稀疏输入数据可展示对编译器或程序员未知的不同访问分布。例如,分布可以是均匀随机的,或者就许多社交网络图而言,可展示幂律分布,其中有看到许多重新引用的若干中心节点(hub node),但许多叶节点无再使用。将中心节点选择性地插入高速缓存中并且绕过叶节点将改善总体性能。作为另一因素,程序员能够误用NL加载。针对NL加载检测局部性可能的机制能够在这些情况下取代NL行为。如此,根据一实施例的动态校正机制允许程序员更自由地使用NL加载特征。
在操作中,NL加载流像常规加载流一样开始。如果它在高速缓存中命中,则硬件像平常一样返回高速缓存行,将高速缓存行插入到更靠近核的高速缓存中,并且更新使用比特(虽然可基于NL提示,优化插入和替换)。在一些实施例中,如果已经有对于相同地址的未解决的未命中,则合并NL加载未命中和未解决的加载。如果没有对NL加载的地址的任何未解决的未命中,则它分配填充缓冲器,诸如带有NL标志或指示符的未命中状态保持寄存器(MSHR)条目。如果有对已经具有未解决的NL加载未命中的地址的任何进入的未命中,则进入的未命中将不依赖带有NL标志的未解决的未命中带来高速缓存行。新的未命中能够被停顿(作为MSHR全满),或者带有NL标志的未解决的未命中能够被转换成常规未命中以被插入高速缓存中。
如果NL加载未命中所有高速缓存,并且将访问存储器,则存储器控制器动态确定是将此请求作为常规完全高速缓存行存储器访问(经由无局部性提示的选择性取代)还是作为细粒度(子高速缓存行宽度)存储器访问(根据无局部性提示)执行。如果发生完全高速缓存行访问,则像平常一样完成加载流,返回高速缓存行,使得行被插入高速缓存中,并且分配的MSHR条目被更新。然而,如果决定是进行细粒度存储器访问,则存储器控制器直接向核返回子高速缓存行数据而未将数据插入高速缓存中。在此未命中的完成时,清除带有NL标志的对应MSHR条目。
现在参照图3,图中所示是根据本发明的一实施例的系统的框图。更具体地说,系统300包含处理器302,即多核处理器。如所看到的,处理器302包含带有对应私有高速缓冲存储器(即,L1高速缓存)306-1到306-N的多个核304-1到304-N。这些高速缓冲存储器转而耦合到共享高速缓冲存储器310,其在一实施例中可以是L2高速缓存(并且在一些情况下,其可以是末级高速缓存(LLC))。高速缓冲存储器310转而耦合到存储器控制器346。在示出的实施例中,存储器控制器346耦合到稀疏访问缓冲器345。虽然为便于说明而示为单独的组件,但理解的是,在某些实施例中,稀疏访问缓冲器345可在存储器控制器346内实现。在任何情况下,稀疏访问缓冲器345作为非核电路组件与核304分开,并且因此不是相干域的部分。存储器控制器346转而与系统存储器360接口,其在一实施例中可以是能够处理细粒度访问的任何类型的存储器结构。
理解的是,存储器控制器346可进一步包含配置成响应NL加载请求的接收,动态确定是通过NL加载处理将此类请求作为NL加载处理,还是通过全宽度加载处理来处理请求的局部性控制电路(局部性控制器)347。如本文中所述,此确定可至少部分基于在稀疏访问缓冲器345内的信息。
还参照图3,示出的是用于常规加载处理和NL加载处理的流。具体而言,对于常规加载,加载请求从给定核304发出并且被提供到高速缓存层次结构以确定请求在高速缓存层次结构中是否命中。如果是,则返回数据。如果发生高速缓存未命中,则请求传递到存储器控制器346,其向系统存储器360发出对应请求以获得全宽度的数据(即,完全高速缓存行)。在此数据返回时,存储器控制器346提供数据以便插入高速缓存层次结构中和对请求核304的准备。
相反的是,如果NL加载请求在高速缓存层次结构中未命中,则存储器控制器346访问稀疏访问缓冲器345以确定是通过NL处理还是全宽度处理来处理请求。如果请求的地址在稀疏访问缓冲器345内命中,并且关联置信度值满足阈值级别,则存储器控制器346可将请求作为全宽度加载,通过如上讨论的处理来处理请求。否则,存储器控制器346从系统存储器360请求部分宽度的数据,并且直接向请求核304提供返回的数据,绕过高速缓存层次结构。理解的是,虽然在图3的实施例中以此高级别示出,但许多变形和备选是可能的。
现在参照图4,图中所示是根据本发明的一实施例的方法的流程图。更具体地说,方法400可由硬件电路系统、软件、固件和/或其组合执行。更具体地说,方法400可由处理器内的各种逻辑和电路系统执行,以处理具有无局部性提示的存储器访问指令。如图所示,方法400通过接收具有无局部性提示的存储器访问指令(框410)而开始。此指令可在解码指令的处理器的解码单元内接收。控制转而传递到菱形420,其中确定与此指令关联的地址是否在高速缓冲存储器层次结构内命中。如果是,则控制传递到框430,其中数据被返回到请求方。理解的是,可发生诸如更新命中高速缓存行的最近信息等等的另外处理。
还参照图4,如果请求在高速缓冲存储器层次结构内未命中,则控制传递到框440,其中能够确定存储器访问处理的类型。更具体地说,在可在存储器控制器的局部性控制器中执行的框440,如上所讨论的,来自稀疏访问缓冲器的信息能够用于确定适当的处理。如果将执行非局部性处理,则控制传递到框450,其中部分宽度数据被获得并且直接返回到请求方。部分宽度数据到请求方(例如,核)的此直接返回绕过高速缓存层次结构。而还有,可更新在稀疏访问缓冲器内的信息。例如,如果已经存在用于与此存储器访问指令关联的地址的条目,则可更新(例如,递增)置信度值。或者,如果在稀疏访问缓冲器中以前没有条目存在,则可针对此地址插入新条目。视稀疏访问缓冲器的实现而定,也可存储部分宽度数据本身。
还参照图4,如果替代地确定为此存储器访问指令执行选择性全宽度处理,则控制传递到框460,其中可获得全宽度数据。此数据可经由高速缓冲存储器层次结构被提供到请求方。也要注意,如果在稀疏访问缓冲器中存在用于此地址的条目,则可将它移除。理解的是,虽然在图4的实施例中以此高级别示出,但许多变形和备选是可能的。
因此,在实施例中,SAB可用于例如通过细粒度/全访问决定的方式,动态地检测用于在所有高速缓存中未命中的NL加载的可能局部性。响应细粒度存储器访问,在SAB中分配条目。在存储器控制器中收到并且在SAB中命中的新NL加载指示此地址最近被访问,但绕过了高速缓存,并且现在在被重新引用。在此情况下,针对该特定地址递增用于识别可能局部性的置信度指示符(例如,一个或多个所谓置信度比特)。如果当在存储器控制器中接收到新NL加载时置信度级别足够高,则执行常规完全高速缓存行存储器访问,并且将数据插入高速缓存中以捕捉用于后面请求的局部性。
现在参照图5,图中所示是根据本发明的另一实施例的方法的流程图。更具体地说,方法500陈述具有无局部性提示的加载指令在处理器内的处理。如此,方法500可由硬件电路系统、软件、固件和/或其组合执行。
如图所示,方法500通过确定NL加载指令的地址在高速缓存层次结构的任何级别中是否命中(菱形510)而开始。如果是,则控制传递到框520,其中数据被返回到核。还有,视处理器实现而定,也可将命中数据插入一个或多个更高高速缓存级别(即,更靠近核的一个或多个高速缓存级别)中。相反,如果确定NL加载的地址未在处理器中的任何高速缓存内命中,则控制传递到菱形530以确定地址在SAB内是否命中。
如果不是,则此加载请求的处理可根据SAB是被实现为旁路地址过滤器(BAF)还是读取合并缓冲器(RCB)而通过不同的流来发生。就BAF而言,控制传递到框540,其中存储器控制器可发出窄数据请求(即,用于子高速缓存行宽度数据),并且在接收到来自存储器的所请求的数据时,直接向核返回数据,绕过高速缓存层次结构。如此,此数据未被插入高速缓存层次结构的任何高速缓冲存储器中。而还有,在SAB内未命中的此情况下,可为与此NL加载关联的地址分配新SAB条目。在RCB实现的上下文中在对于与NL加载关联的地址在SAB内未命中的此情况下,控制替代地传递到框545。在该处,子高速缓存宽度数据直接到核,绕过高速缓存层次结构。而还有,在SAB内未命中的此情况下,可为与此NL加载关联的地址分配新SAB条目,并且可在分配的条目内存储部分宽度数据本身。
还参照图5,如果NL加载的地址在SAB内命中,则控制传递到菱形550以确定命中条目的置信度值是否超过置信度阈值。在一个实施例中,置信度值可只是在对于SAB的条目的第一命中上设置成一的单比特。在其它情况中,置信度值可被实现为多比特计数信息,使得对于对此条目的每个命中,可更新置信度值,例如,按一更新。
在任何情况下,如果置信度值不超过置信度阈值,则视SAB是被实现为BAF(框560)或RCB(框565)而定,控制传递到框560和565之一。如图所示,对于BAF实现,部分宽度的数据被直接返回到核,绕过高速缓存层次结构并且没有插入高速缓存层次结构的任何高速缓存中。此外,递增条目的置信度值。替代地,对于RCB实现,部分宽度的数据被直接从SAB本身返回到核,绕过高速缓存层次结构。此外,递增条目的置信度值。
还参照图5,如果替代地确定命中条目的置信度值超过置信度阈值(在菱形550),则视SAB实现而定,控制传递到框570和575之一。就BAF实现而言,在框570,此NL加载的NL提示被取代或忽略,使得存储器控制器请求和接收全宽度的数据,并且向核返回此全宽度的数据。在一实施例中,此返回包含到高速缓存层次结构的一个或多个高速缓存中的插入,因为通过此取代,已作出局部性的确定,使得数据可能通过空间和/或时间局部性的一项或多项再次被使用。此外,在框570,存储器控制器可使与NL加载的地址关联的SAB条目失效。以该方式,在SAB中的额外空间可由另一NL加载使用而用于不同地址。替代地,对于RCB实现,控制传递到框575,其中此NL加载的NL提示被取代或忽略,使得存储器控制器请求和接收来自存储器的剩余数据部分,并且与RCB包含的部分组合以获得被返回到核(并且插入到高速缓存层次结构的一个或多个高速缓存中)的全宽度的数据。此外,在框575,存储器控制器可使与NL加载的地址关联的SAB条目失效。理解的是,虽然在图5中以此高级别示出,但许多变形和备选是可能的。
各种类型的稀疏访问缓冲器实现是可能的。虽然本发明的范围在此方面不受限,但两个可能实现包含读取合并缓冲器(RCB)和旁路地址过滤器(BAF)。
在一个实现中,RCB是包含在存储器控制器中或与其紧密关联的小型存储器侧缓冲器。此类RCB可包含用于存储旁路地址、局部性置信度值和细粒度访问数据的多个条目。此缓冲器是在处理器高速缓存的相干域外,并且它只存储来自其存储器信道,未被插入高速缓存中的子高速缓存行数据。仅当在高速缓存层次结构中未找到对应地址时,才访问RCB中的数据。在存储器控制器中收到的常规写入(例如,从高速缓存的脏逐出(dirtyeviction))还检查RCB,并且更新内容(如果对应地址在RCB中有效)。
当NL加载在RCB中命中时,局部性置信度值被递增,并且加载从RCB向核服务而无任何外部存储器访问。如果对应条目的置信度值足够高,则行的剩余部分被从存储器获取并且与在RCB中已经存在的部分组合以形成高速缓存行。随后,此行被插入高速缓存中以捕捉用于以后访问的可能再使用。在此行被插入高速缓存中时,它变成高速缓存相干域的部分,因此,RCB中使对应条目失效,其严格地排除在CPU高速缓存外。在插入高速缓存层次结构中时使条目失效,这在RCB中开辟了用于分配新条目的空间,最小化了从RCB的强制逐出和增大了用于旁路地址的有效覆盖。在一实施例中,RCB能够被组织为集合相联的高速缓存以减小冲突未命中的机会。注意,RCB可在面积方面是高成本的,因为在实施例中,它可保持全部地址、细粒度数据和元数据。
在另一实现中,SAB可被实现为旁路地址过滤器(BAF),其可配置为包含在存储器控制器中或与其紧密关联的小型缓冲器。此缓冲器保持最近绕过高速缓存层次结构的地址集,并且能够用于作出细粒度存储器访问决定。与RCB不同,BAF只保持地址和置信度指示符,这可降低面积成本。在NL加载在BAF中命中时,递增局部性置信度指示符,并且如果局部性置信度值不满足阈值,则经由细粒度存储器访问,从存储器获取数据。如果置信度值达到阈值,则将请求作为常规存储器访问服务以带来完全高速缓存行,其被插入高速缓存层次结构中以捕捉再使用以供将来引用。在行被插入高速缓存中时,从BAF使对应条目失效,这开辟了用于分配新条目的空间,最小化了从BAF的强制逐出和增大了用于旁路地址的有效覆盖。
注意,通过BAF实现,存储器访问始终发生以获取细粒度数据。另外,为提升到完全高速缓存行中的访问,BAF从存储器获取整个高速缓存行。RCB实现可节省存储器带宽,使得命中被直接从RCB服务,并且完全高速缓存行促进只从存储器获得高速缓存行的剩余部分。然而,BAF实现的占用面积与RCB相比可更小得多,因为它不保持子高速缓存行数据。
另外,BAF可保持近似信息以减小成本,而不牺牲正确性。由于BAF只影响细粒度访问决定,因此,错误将只导致降低的效率。近似信息能够采用例如在BAF中部分地址的存储的形式。这减小了对BAF的容量要求,或者能够用于通过相同容量增大旁路地址覆盖。就部分地址而言,BAF可报告假阳性(假命中)。换而言之,引用地址能够不正确地匹配BAF中的部分地址。此类假阳性能够不正确地增大置信度值,因此,它能够造成使完全高速缓存行访问更经常发生的趋势。这能够通过增大置信度阈值来解决。不过,这些假阳性将不会引发任何正确性问题。注意,通过RCB实现保持部分地址是不可能的,因为假阳性能够导致向核返回错误的数据。
如果完全地址(例如,高速缓存行地址和块偏移)被提供到存储器控制器,则SAB能够用于跟踪空间和时间局部性二者。例如,假设8字节(B)跟踪粒度,对于每个64B高速缓存行,SAB条目可包含8个置信度计数器(注意,置信度计数器能够低至1比特)。对于每个高速缓存行,所有计数器之和可被组合以给出时间局部性置信度,并且带有非零置信度值的相邻计数器可指示用于旁路地址的空间局部性置信度。用于将访问提升到常规完全存储器访问的阈值是使用这些时间/空间置信度计数器来确定的。在最简单的版本中,跟踪粒度是与高速缓存行大小匹配的,并且单个一比特计数器被使用。因此,在此最简单的配置中,在SAB中的第一命中(对相同组块的时间命中或对相同高速缓存行中另一组块的空间命中)后将访问提升到完全访问。
现在参照图6,图中所示是根据本发明的一实施例的稀疏访问缓冲器的框图。更具体地说,图6示出以旁路地址过滤器形式的SAB 600的一实施例,其中SAB 600不包含部分宽度数据的存储。以该方式,通过相同大小的缓冲器,能够存储关于更多地址的信息。
如图所示,SAB 600包含多个条目6100-610n。如所看到的,每个条目610包含多个字段,包含有效字段612、标记字段614和置信度字段616。在一实施例中,有效字段612可以是指示给定条目是否有效的单个比特(例如,设置成逻辑1值以指示条目是有效的,并且反之亦然)。标记字段614可存储给定NL存储器访问指令的地址的至少部分。如上所讨论的,此标记部分可只存储部分地址,以便有利于在可能假阳性的代价下提供更宽覆盖。依次地,置信度字段616可存储一个或多个比特以提供置信度信息。在图6中示出的实施例中,置信度字段616可以是多计数器字段。例如,在一给定实施例中,对于与64 B高速缓存行关联的条目610,可提供8个计数器,每个计数器可以是一个或多个比特。通过此类型的实现,可能基于每个这些计数器的计数值之和,确定时间局部性。空间局部性转而能够通过引用具有非零值的相邻计数器来确定。
在不同实施例中考虑了这些多个计数器的值的不同分析。例如,在一个实施例中,存储器控制器(并且更具体地说,此类存储器控制器的局部性控制器)可在确定具有非局部性提示的特定存储器访问指令是否应替代地作为具有局部性的存储器访问指令而被处理(即,通过在高速缓存层次结构中的全宽度数据返回和存储来处理)中只考虑置信度值的总和。在此类情况下,能够将置信度值的此总和与给定阈值进行比较,并且如果总和超过阈值,则可选择性地启用基于局部性的处理。
在另一实施例中,存储器控制器(并且更具体地说,局部性控制器)可备选地确定选择性地启用基于局部性的处理,其中这些计数器的多个相邻计数器具有非零值,指示空间局部性。在仍有的其它实施例中,能够使用计数器总和技术与相邻计数器值技术的组合。如此实施例能够使用仅空间、仅时间和/或时间/空间组合的局部性信息来作出完全/部分访问决定。
在无实施例的情况下,简单地绕过所有NL访问能够由于失去局部性而导致增大的存储器业务和降低的性能。通过根据一实施例提供SAB,高局部性数据可被选择性地插入高速缓存中,使得从高速缓存提供重新引用的服务。因此,与始终绕过细粒度访问相比,可在给定高速缓存行基础上针对每个NL加载单独执行的基于SAB的动态策略可提供显著的存储器数据业务降低和性能改进。
注意,虽然本文中描述的实施例主要是关于加载操作,但本发明的范围在此方面不受限制。因为实施例也可用于通过相同选择性启用操作,处理具有无局部性提示的写入操作,所以情况是如此。对于常规写入操作,在处理器中收到全宽度高速缓存行,并且随后用新数据改写高速缓存行的至少部分。之后,将完全高速缓存行宽度写回到存储器。相反的是,对于具有无局部性提示的写入操作,窄写入请求可用于将高速缓存行的仅部分写入到存储器,这可牵涉到上面讨论的子高速缓存行处理。此类无局部性提示写入操作的全宽度处理的选择性启用可同等地应用。
用于以不同方式动态执行细粒度存储器访问的实施例在HPC、大数据分析、机器学习等中具有许多可能使用。虽然本发明的范围在此方面不受限制,但实施例可特别适于与特定工作负载一起使用,其特定工作负载诸如页面排名算法、基于稀疏矩阵向量乘的工作负载或随机梯度下降算法。因为对大数据结构的无规律访问在HPC、图形分析、机器学习等中很常见,所以情况是如此。因此,存储器性能能够在这些应用中变成瓶颈。实施例允许从存储器中获取更小粒度数据,并且在存在无局部性时绕过高速缓存。此操作改善了高速缓存利用,并且降低了带宽浪费,这能够显著改善用于此类高值应用的存储器性能,同时有效地利用由这些存储器提供的细粒度访问能力。动态执行能够检测局部性可能,并且将细粒度访问转变成常规完全高速缓存行访问。因此,动态更正了细粒度特征的误用。此布置为程序员提供了使用这些高级特征的更大自由度,而无需过于担心负面性能影响。
图7A是图示了根据本发明的实施例,要包括在处理器中的示范有序管线和示范寄存器重命名的乱序发出/执行管线的框图。图7B是图示了根据本发明的实施例,要包括在处理器中的有序架构核的一示范实施例和示范寄存器重命名的乱序发出/执行架构核两者的框图。图7A-B中的实线框图示了有序管线和有序核,而可选增加的虚线框图示了寄存器重命名的乱序发出/执行管线和核。假定有序方面是乱序方面的子集,将描述乱序方面。
在图7A中,处理器管线700包括获取阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(也称为分派或发出)阶段712、寄存器读取/存储器读取阶段714、执行阶段716、写回/存储器写入阶段718、异常处理阶段722和提交阶段724。
图7B示出处理器核790,其包含耦合到执行引擎单元750的前端单元730,并且执行引擎单元和前端单元两者均耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、极长指令字(VLIM)核或混合或备选核类型。作为仍有的另一选择,核790可以是专用核,诸如,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核或诸如此类。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器耦合到指令获取单元738,该指令获取单元耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令或其它控制信号作为输出。解码单元740可使用各种不同机制来实现。适合机制的示例包含但不仅限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包含微代码ROM或存储用于某些宏指令的微代码的其他媒体(例如,在解码单元740中或以其他方式在前端单元730内)。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包含 耦合到引退单元754和一个或多个调度器单元756的集合的重命名/分配器单元752。调度器单元756表示任何数量的不同调度器,包含预留站、中央指令窗等。调度器单元756耦合到物理寄存器文件单元758。每个物理寄存器单元758表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要被执行的下一条指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元758被引退单元754重叠以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用将来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池等)。引退单元754和物理寄存器文件单元758耦合到执行集群760。执行集群760包含一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。虽然一些实施例可包含专用于特定功能或功能集的多个执行单元,但其它实施例可只包含一个执行单元或全部执行所有功能的多个执行单元。调度器单元756、物理寄存器文件单元758和执行集群760示为可能是多个,因为某些实施例针对某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,每个管线具有其自己的调度器单元、物理寄存器文件单元和/或执行集群 - 并且就单独的存储器访问管线而言,实现了其中仅此管线的执行集群具有存储器访问单元764的某些实施例)。也应理解的是,在使用单独管线的情况下,这些管线中的一个或多个可以是乱序发出/执行的,并且其余管线可以是有序发出/执行的。
存储器访问单元764的集合耦合到存储器单元770,其包含耦合到数据高速缓存单元774的数据TLB单元772,数据高速缓存单元774耦合到2级(L2)高速缓存单元776。指令高速缓存单元734和数据高速缓存单元774可一起被视为是分布式L1高速缓存。 在一个示范实施例中,存储器访问单元764可包含加载单元、存储地址单元和存储数据单元,每个单元耦合到存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的2级(L2)高速缓存单元776。L2高速缓存单元776可耦合到一个或多个其它级别的高速缓存,并且最终耦合到主存储器。
通过示例方式,示范寄存器重命名的乱序发出/执行核架构可按如下方式实现管线700:1)指令获取738执行获取和长度解码阶段702和704;2)解码单元740执行解码阶段706;3)重命名/分配器单元752执行分配阶段708和重命名阶段710;4)调度器单元756执行调度阶段712;5)物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取阶段714;执行集群760执行执行阶段716;6)存储器单元770和物理寄存器文件单元758执行写回/存储器写入阶段718;7)各种单元可牵涉到异常处理阶段722;以及8)引退单元754和物理寄存器文件单元758执行提交阶段724。
核790可支持一个或多个指令集(例如,x86指令集(更新版本已添加一些扩展)、加利福尼亚州Sunnyvale的MIPS Technologies开发的MIPS指令集、加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(带有诸如NEON的可选另外扩展)),包括本文中描述的指令。在一个实施例中,核790包含支持紧缩数据指令集扩展(例如,AVX1、AVX2和/或一些形式的通用向量友好指令格式(U=0和/或U=1))的逻辑,由此允许使用紧缩数据执行由许多多媒体应用使用的操作。
应理解的是,核790可支持多线程(执行两个或多个并行的操作或线程集),并且可以以多种方式来如此进行,包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核在同时进行多线程的每个线程的逻辑核)或其组合(例如,时间片获取和解码及之后的同时多线程,诸如在Intel@超线程技术中)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的图示实施例也包含单独的指令和数据高速缓存单元734/774和共享L2高速缓存单元776,但备选实施例可具有用于指令和数据两者的单个内部高速缓存,诸如,例如L1内部高速缓存,或多个级别的内部高速缓存。在一些实施例中,系统可包含内部高速缓存和在核和/或处理器外的外部高速缓存的组合。备选的是,所有高速缓存可在核和/或处理器的外部。
图7B中进一步图示了处理器也包含存储器控制器780,其可执行本文中描述的动态确定,以可能选择性地取代存储器访问指令的无局部性提示和执行存储器访问指令,就好像它具有局部性一样(例如,全宽度加载和经由诸如存储器单元770的高速缓存层次结构到核790的返回)。相反,在存储器控制器780确定根据无局部性提示处理存储器访问时,部分宽度数据可被获得并且直接向核790返回,绕过包含存储器单元770的高速缓存层次结构。注意,在图7B中示出的实施例中,存储器控制器780包含SAB 785。
图8是根据本发明的实施例,可具有多于一个核,可具有集成存储器控制器和可具有集成图形的处理器800的框图。图8中的实线框图示了带有单个核802A、系统代理器电路810、一个或多个总线控制器电路816的集合的处理器800,而可选添加的虚线框图示了带有多个核802A-N和系统代理器电路810中一个或多个集成存储器控制器电路814的集合的备选处理器800。图示的存储器控制器电路814可包含如本文中描述的一个或多个SAB 815以允许存储器控制器动态确定是否为具有无局部性提示的进入存储器访问请求选择性地启用基于局部性的处理。如在图8中进一步所图示的,处理器800也包含到处理器800N内集成的部分图形的图形电路808。
处理器800可以是通用处理器、协处理器或专用处理器,诸如,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包含30或更多个核)、嵌入式处理器、加速器装置或诸如此类。处理器可在一个或多个芯片上实现。处理器800可以是一个或多个衬底的一部分,和/或可使用诸如例如BiCMOS、CMOS或NMOS的多个工艺技术的任何技术在一个或多个衬底上实现。
存储器层次结构包含在核802A-N内的一个或多个级别的高速缓存电路804A-N(包括L1高速缓存)、一个或多个共享高速缓存电路1006的集合和耦合到集成存储器控制器电路814的集合的外部存储器(未示出)。共享高速缓存806的集合可包含诸如2级(L2)、3级(L3)、4级(L4)或其它级别的高速缓存的一个或多个中间级高速缓存、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环的互连电路812将图形电路808、共享高速缓存电路806的集合和系统代理器电路810/集成存储器控制器电路814互连,但备选实施例可使用任何数量的公知技术以将此类电路互连。在一个实施例中,在一个或多个高速缓存电路806与核802A-N之间保持相干性。
在一些实施例中,一个或多个核802A-N能够进行多线程。系统代理器电路810包含协调和操作核802A-N的那些组件。系统代理器电路810可包含例如可功率控制单元(PCU)和显示单元。PCU可以是或者包含用于调节核802A-N和/或图形电路808的功率状态的逻辑和组件。显示单元可用于驱动一个或多个外部连接的显示器。
核802A-N可在架构指令集方面是同构或异构的;即,两个或更多个核802A-N可以能够执行相同指令集,而其它核可只能够执行该指令集的子集或不同指令集。在一个实施例中,核802A-N是异构的,并且包含下面描述的“小”核和“大”核。
图9是示范计算机架构的框图。本领域中熟知的用于膝上型计算机、桌上型计算机、平板、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换器、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、智能电话、便携式媒体播放器、手持式装置及各种其它电子装置的其它系统设计和配置也是适合的。通常,能够合并如本文中公开的处理器和/或其它执行逻辑的各式各样系统或电子装置一般都是适合的。
现在参照图9,图中所示是根据本发明的一实施例的示范系统900的框图。如图9中所示,多处理器系统900是点对点互连系统,并且包含经由点对点互连950耦合的第一处理器970和第二处理器980。每个处理器970和980可以是图8的处理器800的某一版本。
处理器970和980示为分别包含集成存储器控制器(IMC)单元972和982。处理器970也包含作为其总线控制器单元的一部分的点对点(P-P)接口976和978;类似地,第二处理器980包含P-P接口986和988。如所看到的,处理器970、980进一步包含如本文中所述的SAB975、985。处理器970、980可经由使用P-P接口电路978和988的点对点(P-P)接口950交换信息。如图9中所示,IMC 972和982将处理器耦合到相应存储器,即存储器932和存储器934,这些存储器可以是在本地附连到相应处理器的主存储器的部分。
处理器970、980每个可使用点对点接口电路976、994、986、998,经由各个P-P接口952、954与芯片集990交换信息。芯片集990可使用点对点接口电路992,选择性地经由高性能接口939与协处理器938交换信息。在一个实施例中,协处理器938是专用处理器,诸如,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器或诸如此类。
共享高速缓存(未示出)可被包含在处理器中或者在两个处理器外,但经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片集990可经由接口996耦合到第一总线916。在一个实施例中,第一总线916可以是外设组件互连(PCI)总线,或诸如PCI高速总线或另一第三代I/O互连总线的总线,但本发明的范围不限于此。
如图9中所示,各种I/O装置914可连同将第一总线916耦合到第二总线920的总线桥918,耦合到第一总线916。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如,例如图形加速器和数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器的一个或更多个另外的处理器915耦合到第一总线916。在一个实施例中,第二总线920可以是低引脚计数(LPC)总线。各种装置可耦合到第二总线920,在一个实施例中,包含例如键盘和/或鼠标922、通信装置927和诸如磁盘驱动器或其它海量存储装置等可包含指令/代码和数据930的存储单元928。此外,音频I/O 924可耦合到第二总线920。注意,其它架构是可能的。例如,系统可实现多分支总线或其它此类架构,而不是图9的点对点架构。
现在参照图10,图中所示是根据本发明的一实施例的SoC 1000的框图。此外,虚线框是在更先进的SoC上的可选特征。在图10中,互连电路1012耦合到:应用处理器1010,其包括具有高速缓存电路1004A-1004N的一个或多个核1002A-N的集合和共享高速缓存电路1006;系统代理器电路1010;总线控制器电路1016;集成存储器控制器电路1014,其可包含如本文中所述的SAB 1015;一个或多个协处理器1020的集合,其可包含集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)电路1030;直接存储器存取(DMA)电路1032;及用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,协处理器1020包含专用处理器,诸如,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器或诸如此类。为了本申请的目的,处理系统包含具有处理器的任何系统,诸如,例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级程序化或面向对象编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。实际上,本文中描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可由存储在表示处理器内各种逻辑的机器可读媒体上的表示性指令来实现,指令在由机器读取时,促使机器制作执行本文中所述技术的逻辑。称为“IP核”的此类表示可被存储在有形的非暂态、机器可读媒体上,并且提供到各种客户或生产设施以加载到实际形成逻辑或处理器的制造机器中。相应地,本发明的实施例也包括非暂态有形机器可读媒体,其含有指令或者含有定义本文中描述的结构、电路、设备、处理器和/或系统特征的设计数据,诸如硬件描述语言(HDL)。此类实施例也可称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转译(例如,使用静态二进制转译、包含动态编译的动态二进制转译)、变形、仿真或以其它方式转换成要由核处理的一个或多个其它指令。指令转换器可在硬件、固件、软件或其组合中实现。指令转换器可在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图11是根据本发明的实施例,对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在图示实施例中,指令转换器是软件指令转换器,但备选的是,指令转换器可在软件、固件、硬件或其各种组合中实现。图11示出可使用x86编译器1104对高级语言1102中的程序进行编译,以生成可由带有至少一个x86指令集核的处理器1116在本机执行的x86二进制代码1106。带有至少一个x86指令集核的处理器1116表示能够通过兼容执行或以其它方式处理以下内容,执行与带有至少一个x86指令集核的Intel处理器实质上相同功能的任何处理器:(1)Intel@ x86指令集核的指令集的实质部分或(2)定向为在带有至少一个x86指令集核的Intel处理器上运行,以便实现与带有至少一个x86指令集核的Intel@处理器实质上相同结果的应用或其它软件的对象代码版本。x86编译器1104表示可操作以生成x86二进制代码1106(例如,对象代码)的编译器,该二进制代码1106能够通过或不通过另外的链接处理,在带有至少一个x86指令集核的处理器1116上执行。类似地,图11示出可使用备选指令集编译器1108对高级语言1302中的程序进行编译,以生成备选指令集二进制代码1110,该二进制代码可由未带有至少一个x86指令集核的处理器1114(例如,带有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集,和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)在本机执行。指令转换器1112用于将x86二进制代码1106转换成可由未带有x86指令集核1114的处理器在本机执行的代码。此转换的代码不可能与备选指令集二进制代码1110相同,因为能够进行此操作的指令转换器难以制造;然而,转换的代码将实现一般操作,并且由来自备选指令集的指令组成。因此,指令转换器1112表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1106的软件、固件、硬件或其组合。
本发明提供一组技术方案,如下:
1.一种处理器,包括:
核,包含解码单元,所述解码单元解码具有无局部性提示的存储器访问指令以指示与所述存储器访问指令关联的数据具有非空间局部性和非时间局部性中至少之一;
具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和计数信息;以及
存储器控制器,用于向存储器发出请求,所述存储器控制器包含局部性控制器,所述局部性控制器用于接收具有所述无局部性提示的所述存储器访问指令以及取代所述无局部性提示,其中至少部分基于在所述稀疏访问缓冲器的条目中存储的所述计数信息。
2.根据技术方案1所述的处理器,其中所述无局部性提示将促使绕过所述处理器的高速缓冲存储器的数据到所述核的返回。
3.根据技术方案1所述的处理器,其中响应所述无局部性提示的所述取代,所述存储器控制器将促使全宽度数据部分从所述存储器被获得并且提供到所述核。
4.根据技术方案1所述的处理器,其中响应对所述稀疏访问缓冲器的命中,所述存储器控制器将促使子高速缓存行数据部分被提供到所述核而无对所述存储器的访问。
5.根据技术方案1所述的处理器,其中响应所述无局部性提示,所述存储器控制器将促使子高速缓存行数据部分从所述存储器被获得并且提供到所述核。
6.根据技术方案5所述的处理器,其中所述稀疏访问缓冲器包括读取合并缓冲器,所述读取合并缓冲器具有所述多个条目,其中所述多个条目将进一步针对存储器访问指令存储子高速缓存行数据部分。
7.根据技术方案6所述的处理器,其中响应命中具有超过阈值的所述计数信息的所述稀疏访问缓冲器的第一条目的第二存储器访问指令,所述存储器控制器将获得与所述第二存储器访问指令关联的高速缓存行的剩余部分,合并所述高速缓存行的所述剩余部分和所述子高速缓存行数据部分,并且向所述核发送全高速缓存行宽度的数据。
8.根据技术方案1所述的处理器,其中所述稀疏访问缓冲器包括旁路地址过滤器,以在与具有绕过了所述高速缓冲存储器的所述存储器控制器中处理的所述无局部性提示的存储器访问指令关联的所述多个条目中存储信息。
9.根据技术方案1所述的处理器,其中所述计数信息包括置信度信息,所述稀疏访问缓冲器响应对所述第一条目的所述存储器访问指令命中,更新所述第一条目的所述置信度信息。
10.根据技术方案1所述的处理器,其中所述存储器控制器将响应在具有所述无局部性提示的第二存储器访问指令的所述处理器的高速缓存层次结构中的未命中,在所述稀疏访问缓冲器中插入条目。
11.一种其上存储有指令的机器可读媒体,所述指令如果由机器执行,则促使所述机器执行方法,包括:
响应在处理器的高速缓存层次结构中具有无局部性提示的存储器访问请求的未命中,确定如果所述存储器访问请求在所述处理器的稀疏访问缓冲器中命中,则所述稀疏访问缓冲器存储与具有无局部性提示的存储器访问请求关联的信息;以及
如果所述存储器访问请求在所述稀疏访问缓冲器中命中,并且所述稀疏访问缓冲器的命中条目的置信度值超过阈值,则向所述处理器返回全宽度的数据。
12.根据技术方案11所述的机器可读媒体,其中所述方法进一步包括如果所述存储器访问请求在所述稀疏访问缓冲器中命中,并且所述稀疏访问缓冲器的所述命中条目的所述置信度值小于所述阈值,则向所述处理器返回部分宽度的数据,并且更新所述命中条目的所述置信度值。
13.根据技术方案12所述的机器可读媒体,其中所述方法进一步包括在没有与所述存储器通信的情况下,从所述稀疏访问缓冲器直接向所述处理器返回所述部分宽度的数据。
14.根据技术方案11所述的机器可读媒体,其中所述方法进一步包括如果所述存储器访问请求未在所述稀疏访问缓冲器中命中,则向所述处理器返回部分宽度的数据,并且针对所述存储器访问请求在所述稀疏访问缓冲器中分配新条目。
15.根据技术方案14所述的机器可读媒体,其中所述方法进一步包括经由绕过所述处理器的所述高速缓存层次结构的旁路路径,向所述处理器返回所述部分宽度的数据。
16.一种系统,包括:
处理器,具有用于处理具有无局部性提示的存储器访问指令以指示与所述存储器访问指令关联的数据的非局部性的核和包含耦合到所述核的一个或多个高速缓冲存储器的高速缓存层次结构;
存储器控制器,向系统存储器发出请求,所述存储器控制器包含局部性控制器,所述局部性控制器用于接收具有所述无局部性提示的所述存储器访问指令以及用于取代所述无局部性提示,其中至少部分基于在所述稀疏访问缓冲器的条目中存储的所述计数信息;以及
耦合到所述存储器控制器的所述系统存储器。
17.根据技术方案16所述的系统,进一步包括具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和置信度值,其中所述存储器控制器将至少部分基于所述置信度值,生成所述局部性预测。
18.根据技术方案16所述的系统,其中响应带有局部性的所述存储器访问指令的所述选择性处理,所述存储器控制器将针对全宽度的所述数据向所述系统存储器发出请求,并且在所述高速缓存层次结构中存储所述全宽度的所述数据。
19.根据技术方案16所述的系统,其中响应具有所述无局部性提示的所述存储器访问指令,所述存储器控制器将针对部分宽度的所述数据向所述系统存储器发出请求,并且在所述高速缓存层次结构中绕过所述部分宽度的所述数据的存储。
20.根据技术方案16所述的系统,其中所述处理器进一步包括所述存储器控制器。
以下示例涉及另外实施例。
在一个示例中,处理器包含:核,包含解码具有无局部性提示的存储器访问指令以指示与该存储器访问指令关联的数据具有非空间局部性和非时间局部性中至少之一的解码单元;具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和计数信息;和向存储器发出请求的存储器控制器,该存储器控制器包含接收具有无局部性提示的存储器访问指令和至少部分基于在稀疏访问缓冲器的条目中存储的计数信息,取代无局部性提示的局部性控制器。
在示例中,无局部性提示将促使绕过处理器的高速缓冲存储器的数据到核的返回。
在示例中,响应无局部性提示的取代,存储器控制器将促使全宽度数据部分从存储器被获得并且提供到核。
在示例中,响应对稀疏访问缓冲器的命中,存储器控制器将促使子高速缓存行数据部分被提供到核而无对存储器的访问。
在示例中,响应无局部性提示,存储器控制器将促使子高速缓存行数据部分从存储器被获得并且提供到核。
在示例中,稀疏访问缓冲器包括读取合并缓冲器,该读取合并缓冲器具有多个条目,其中多个条目将进一步针对存储器访问指令存储子高速缓存行数据部分。
在示例中,响应命中具有超过阈值的计数信息的稀疏访问缓冲器的第一条目的第二存储器访问指令,存储器控制器将获得与第二存储器访问指令关联的高速缓存行的剩余部分,合并高速缓存行的剩余部分和子高速缓存行数据部分,并且向核发送全高速缓存行宽度的数据。
在示例中,稀疏访问缓冲器包括旁路地址过滤器,以在与具有绕过了高速缓冲存储器的存储器控制器中处理的无局部性提示的存储器访问指令关联的多个条目中存储信息。
在示例中,计数信息包括置信度信息,稀疏访问缓冲器响应对第一条目的存储器访问指令命中,更新第一条目的置信度信息。
在示例中,存储器控制器将响应在具有无局部性提示的第二存储器访问指令的处理器的高速缓存层次结构中的未命中,在稀疏访问缓冲器中插入条目。
在另一示例中,方法包括:响应在处理器的高速缓存层次结构中具有无局部性提示的存储器访问请求的未命中,确定如果存储器访问请求在处理器的稀疏访问缓冲器中命中,则稀疏访问缓冲器存储与具有无局部性提示的存储器访问请求关联的信息;以及如果存储器访问请求在稀疏访问缓冲器中命中,并且稀疏访问缓冲器的命中条目的置信度值超过阈值,则向处理器返回全宽度的数据。
在示例中,方法进一步包括如果存储器访问请求在稀疏访问缓冲器中命中,并且稀疏访问缓冲器的命中条目的置信度值小于阈值,则向处理器返回部分宽度的数据,并且更新命中条目的置信度值。
在示例中,方法进一步包括在没有与存储器通信的情况下,从稀疏访问缓冲器直接向处理器返回部分宽度的数据。
在示例中,方法进一步包括如果存储器访问请求未在稀疏访问缓冲器中命中,则向处理器返回部分宽度的数据,并且针对存储器访问请求在稀疏访问缓冲器中分配新条目。
在示例中,方法进一步包括经由绕过处理器的高速缓存层次结构的旁路路径,向处理器返回部分宽度的数据。
在另一示例中,包含指令的计算机可读媒体将执行任何上述示例的方法。
在另一示例中,包含数据的计算机可读媒体将供至少一个机器使用以制作至少一个集成电路以执行上述示例的任何一个示例的方法。
在另一示例中,设备包括用于执行上述示例的任何一个示例的方法的部件。
在另一示例中,系统包括:处理器,具有处理具有无局部性提示的存储器访问指令以指示与该存储器访问指令关联的数据的非局部性的核和包含耦合到核的一个或多个高速缓冲存储器的高速缓存层次结构;向系统存储器发出请求的存储器控制器,该存储器控制器包含用于接收具有无局部性提示的该存储器访问指令和用于至少部分基于与数据关联的局部性预测,选择性地处理带有局部性的该存储器访问指令的局部性控制器;以及耦合到存储器控制器的系统存储器。
在示例中,系统进一步包括具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和置信度值,其中该存储器控制器将至少部分基于置信度值,生成局部性预测。
在示例中,响应带有局部性的该存储器访问指令的选择性处理,该存储器控制器将针对全宽度的数据向系统存储器发出请求,并且在高速缓存层次结构中存储全宽度的数据。
在示例中,响应具有无局部性提示的该存储器访问指令,该存储器控制器将针对部分宽度的数据向系统存储器发出请求,并且在高速缓存层次结构中绕过部分宽度的数据的存储。
在示例中,处理器进一步包括存储器控制器。
在还有的另外示例中,设备包括:用于解码具有无局部性提示的存储器访问指令以指示与该存储器访问指令关联的数据具有非空间局部性和非时间局部性中至少之一的部件;具有多个条目的缓冲器部件,每个条目用于针对到特定地址的存储器访问指令存储地址信息和计数信息;和用于向存储器发出请求的存储器控制部件,该存储器控制部件包括局部性控制部件,局部性控制部件用于接收具有无局部性提示的存储器访问指令以及取代所述无局部性提示,其中至少部分基于在所述稀疏访问缓冲器的条目中存储的所述计数信息。
在示例中,无局部性提示将促使绕过一个或多个高速缓存部件的数据的返回。
在示例中,响应无局部性提示的取代,存储器控制部件用于促使全宽度数据部分从存储器部件被获得,并且响应对缓冲器部件的命中,存储器控制部件用于促使子高速缓存行数据部分被获得而无对存储器部件的访问。
在示例中,缓冲器部件包括读取合并缓冲器,该读取合并缓冲器具有多个条目,其中多个条目将进一步针对存储器访问指令存储子高速缓存行数据部分。
在示例中,缓冲器部件包括旁路地址过滤器,以在与具有绕过了一个或多个高速缓存部件的存储器控制部件中处理的无局部性提示的存储器访问指令关联的多个条目中存储信息。
理解的是,上述示例的各种组件是可能的。
注意,术语“电路”和“电路系统”在本文中可交换使用。如在本文中使用,这些术语和该术语“逻辑”用于单独或在任何组合中指模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其它类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,通信装置能够布置成执行本文中描述的各种方法和技术。当然,本发明的范围不限于通信装置,并且其它实施例能够转而涉及用于处理指令的其它类型的设备或者包含指令的一个或多个机器可读媒体,指令响应在计算装置上被执行以促使装置执行本文中描述的一种或多种方法和技术。
实施例可实现在代码中,并可存储在其上存储有指令的非暂态存储媒体上,指令能用于对系统进行编程以执行指令。实施例也可实现在数据中,并且可存储在非暂态存储媒体上,其如果由至少一个机器使用,则促使该至少一个机器制作至少一个集成电路以执行一个或多个操作。还有的其它实施例可实现在包含信息的计算机可读存储媒体中,信息在被加工到SoC或另一处理器中时,将配置SoC或另一处理器执行一个或多个操作。存储媒体可包含但不限于任何类型的盘(包含软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘)、半导体器件(诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM))、磁卡或光卡、或适用于存储电子指令的任何其它类型的媒体。
虽然本发明已针对有限数量的实施例而被描述,但本领域技术人员将领会由此产生的许多修改和变形。随附权利要求书旨在涵盖落入在本发明真正精神和范围内的所有此类修改和变形。
Claims (25)
1.一种用于执行存储器访问指令的处理器,包括:
核,包含解码单元,所述解码单元用于解码具有无局部性提示的存储器访问指令以指示与所述存储器访问指令关联的数据具有非空间局部性和非时间局部性中至少之一;
具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和计数信息;以及
存储器控制器,用于向存储器发出请求,所述存储器控制器包含局部性控制器,所述局部性控制器用于接收具有所述无局部性提示的所述存储器访问指令,以及至少部分基于在所述稀疏访问缓冲器的条目中存储的所述计数信息,取代所述无局部性提示。
2.根据权利要求1所述的处理器,其中所述无局部性提示将促使绕过所述处理器的高速缓冲存储器的数据到所述核的返回。
3.根据权利要求1所述的处理器,其中响应所述无局部性提示的所述取代,所述存储器控制器将促使全宽度数据部分从所述存储器被获得并且提供到所述核。
4.根据权利要求1所述的处理器,其中响应对所述稀疏访问缓冲器的命中,所述存储器控制器将促使子高速缓存行数据部分被提供到所述核而无对所述存储器的访问。
5.根据权利要求1所述的处理器,其中响应所述无局部性提示,所述存储器控制器将促使子高速缓存行数据部分从所述存储器被获得并且提供到所述核。
6.根据权利要求5所述的处理器,其中所述稀疏访问缓冲器包括读取合并缓冲器,所述读取合并缓冲器具有所述多个条目,其中所述多个条目将进一步针对存储器访问指令存储子高速缓存行数据部分。
7.根据权利要求6所述的处理器,其中响应命中具有超过阈值的所述计数信息的所述稀疏访问缓冲器的第一条目的第二存储器访问指令,所述存储器控制器将获得与所述第二存储器访问指令关联的高速缓存行的剩余部分,合并所述高速缓存行的所述剩余部分和所述子高速缓存行数据部分,并且向所述核发送全高速缓存行宽度的数据。
8.根据权利要求1所述的处理器,其中所述稀疏访问缓冲器包括旁路地址过滤器,以在与具有绕过了所述高速缓冲存储器的所述存储器控制器中处理的所述无局部性提示的存储器访问指令关联的所述多个条目中存储信息。
9.根据权利要求1所述的处理器,其中所述计数信息包括置信度信息,所述稀疏访问缓冲器用于响应对所述第一条目的所述存储器访问指令命中,更新所述第一条目的所述置信度信息。
10.根据权利要求1所述的处理器,其中所述存储器控制器将响应在具有所述无局部性提示的第二存储器访问指令的所述处理器的高速缓存层次结构中的未命中,在所述稀疏访问缓冲器中插入条目。
11.一种用于执行存储器访问指令的方法,包括:
响应在处理器的高速缓存层次结构中具有无局部性提示的存储器访问请求的未命中,确定如果所述存储器访问请求在所述处理器的稀疏访问缓冲器中命中,则所述稀疏访问缓冲器存储与具有无局部性提示的存储器访问请求关联的信息;以及
如果所述存储器访问请求在所述稀疏访问缓冲器中命中,并且所述稀疏访问缓冲器的命中条目的置信度值超过阈值,则向所述处理器返回全宽度的数据。
12.根据权利要求11所述的方法,进一步包括如果所述存储器访问请求在所述稀疏访问缓冲器中命中,并且所述稀疏访问缓冲器的所述命中条目的所述置信度值小于所述阈值,则向所述处理器返回部分宽度的数据,并且更新所述命中条目的所述置信度值。
13.根据权利要求12所述的方法,进一步包括在没有与所述存储器通信的情况下,从所述稀疏访问缓冲器直接向所述处理器返回所述部分宽度的数据。
14.根据权利要求11所述的方法,进一步包括如果所述存储器访问请求未在所述稀疏访问缓冲器中命中,则向所述处理器返回部分宽度的数据,并且针对所述存储器访问请求在所述稀疏访问缓冲器中分配新条目。
15.根据权利要求14所述的方法,进一步包括经由绕过所述处理器的所述高速缓存层次结构的旁路路径,向所述处理器返回所述部分宽度的数据。
16.一种计算机可读存储媒体,包含计算机可读指令,在所述计算机可读指令被执行时实现根据权利要求11到15中任一项所述的方法。
17.一种用于执行存储器访问指令的系统,包括:
处理器,具有用于处理具有无局部性提示的存储器访问指令以指示与所述存储器访问指令关联的数据的非局部性的核和包含耦合到所述核的一个或多个高速缓冲存储器的高速缓存层次结构;
存储器控制器,向系统存储器发出请求,所述存储器控制器包含局部性控制器,所述局部性控制器用于接收具有所述无局部性提示的所述存储器访问指令和用于至少部分基于与所述数据关联的局部性预测,选择性地处理带有局部性的所述存储器访问指令;以及
耦合到所述存储器控制器的所述系统存储器。
18.根据权利要求17所述的系统,进一步包括具有多个条目的稀疏访问缓冲器,每个条目针对到特定地址的存储器访问指令存储地址信息和置信度值,其中所述存储器控制器将至少部分基于所述置信度值,生成所述局部性预测。
19.根据权利要求17所述的系统,其中响应带有局部性的所述存储器访问指令的所述选择性处理,所述存储器控制器将针对全宽度的所述数据向所述系统存储器发出请求,并且在所述高速缓存层次结构中存储所述全宽度的所述数据。
20.根据权利要求17所述的系统,其中响应具有所述无局部性提示的所述存储器访问指令,所述存储器控制器将针对部分宽度的所述数据向所述系统存储器发出请求,并且在所述高速缓存层次结构中绕过所述部分宽度的所述数据的存储。
21.根据权利要求17所述的系统,其中所述处理器进一步包括所述存储器控制器。
22.一种用于执行存储器访问指令的设备,包括:
用于解码具有无局部性提示的存储器访问指令以指示与所述存储器访问指令关联的数据具有非空间局部性和非时间局部性至少之一的部件;
具有多个条目的缓冲器部件,每个条目用于针对到特定地址的存储器访问指令存储地址信息和计数信息;以及
存储器控制部件,用于向存储器部件发出请求,所述存储器控制部件包括局部性控制部件,所述局部性控制部件用于接收具有所述无局部性提示的所述存储器访问指令,以及至少部分基于在所述缓冲器部件的条目中存储的所述计数信息,取代所述无局部性提示。
23.根据权利要求22所述的设备,其中所述无局部性提示将促使绕过一个或多个高速缓存部件的数据的返回。
24.根据权利要求22所述的设备,其中响应所述无局部性提示的所述取代,所述存储器控制部件用于促使全宽度数据部分从所述存储器部件被获得,并且响应对所述缓冲器部件的命中,所述存储器控制部件用于促使子高速缓存行数据部分被获得而无对所述存储器部件的访问。
25.根据权利要求22所述的设备,其中所述缓冲器部件包括读取合并缓冲器,所述读取合并缓冲器具有所述多个条目,其中所述多个条目将进一步针对存储器访问指令存储子高速缓存行数据部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/475249 | 2017-03-31 | ||
US15/475,249 US10409727B2 (en) | 2017-03-31 | 2017-03-31 | System, apparatus and method for selective enabling of locality-based instruction handling |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108710582A true CN108710582A (zh) | 2018-10-26 |
Family
ID=63524418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810168641.6A Pending CN108710582A (zh) | 2017-03-31 | 2018-02-28 | 用于基于局部性的指令处理的选择性启用的系统、设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10409727B2 (zh) |
CN (1) | CN108710582A (zh) |
DE (1) | DE102018001537A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113383320A (zh) * | 2019-01-08 | 2021-09-10 | 苹果公司 | 协处理器操作捆绑 |
CN116991479A (zh) * | 2023-09-28 | 2023-11-03 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600442B2 (en) * | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10402336B2 (en) | 2017-03-31 | 2019-09-03 | Intel Corporation | System, apparatus and method for overriding of non-locality-based instruction handling |
US10409727B2 (en) * | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
US20200210186A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Apparatus and method for non-spatial store and scatter instructions |
US11630770B2 (en) * | 2019-07-11 | 2023-04-18 | Meta Platforms Technologies, Llc | Systems and methods for reading and writing sparse data in a neural network accelerator |
US11442643B2 (en) | 2020-02-13 | 2022-09-13 | Samsung Electronics Co., Ltd. | System and method for efficiently converting low-locality data into high-locality data |
US11429299B2 (en) | 2020-02-13 | 2022-08-30 | Samsung Electronics Co., Ltd. | System and method for managing conversion of low-locality data into high-locality data |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
US9367474B2 (en) * | 2013-06-12 | 2016-06-14 | Apple Inc. | Translating cache hints |
US9600442B2 (en) | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US9837412B2 (en) | 2015-12-09 | 2017-12-05 | Peregrine Semiconductor Corporation | S-contact for SOI |
US20170177349A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations |
CA3027756C (en) * | 2016-06-28 | 2021-04-13 | Solano Labs, Inc. | Systems and methods for efficient distribution of stored data objects |
US11182306B2 (en) * | 2016-11-23 | 2021-11-23 | Advanced Micro Devices, Inc. | Dynamic application of software data caching hints based on cache test regions |
US10402336B2 (en) | 2017-03-31 | 2019-09-03 | Intel Corporation | System, apparatus and method for overriding of non-locality-based instruction handling |
US10409727B2 (en) * | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
-
2017
- 2017-03-31 US US15/475,249 patent/US10409727B2/en active Active
-
2018
- 2018-02-27 DE DE102018001537.9A patent/DE102018001537A1/de not_active Withdrawn
- 2018-02-28 CN CN201810168641.6A patent/CN108710582A/zh active Pending
-
2019
- 2019-08-14 US US16/540,163 patent/US11030108B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113383320A (zh) * | 2019-01-08 | 2021-09-10 | 苹果公司 | 协处理器操作捆绑 |
CN113383320B (zh) * | 2019-01-08 | 2024-05-24 | 苹果公司 | 协处理器操作捆绑 |
CN116991479A (zh) * | 2023-09-28 | 2023-11-03 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
CN116991479B (zh) * | 2023-09-28 | 2023-12-12 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11030108B2 (en) | 2021-06-08 |
DE102018001537A1 (de) | 2018-10-04 |
US20180285280A1 (en) | 2018-10-04 |
US20190370180A1 (en) | 2019-12-05 |
US10409727B2 (en) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108710582A (zh) | 用于基于局部性的指令处理的选择性启用的系统、设备和方法 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
US10635593B2 (en) | Create page locality in cache controller cache allocation | |
US9727475B2 (en) | Method and apparatus for distributed snoop filtering | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN105453041B (zh) | 用于高速缓存占据确定和指令调度的方法和装置 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN108292239A (zh) | 使用硬件队列设备的多核心通信加速 | |
CN108701027A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 | |
US20140351524A1 (en) | Dead block predictors for cooperative execution in the last level cache | |
CN104049950B (zh) | 带有旁路多个实例化表的移动消除的系统和方法 | |
CN108027766A (zh) | 预取指令块 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN108228094A (zh) | 存储器侧高速缓存中通路的伺机增加 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104937568B (zh) | 用于多页尺寸转换后备缓冲器(tlb)的装置和方法 | |
US20130024647A1 (en) | Cache backed vector registers | |
CN102640124A (zh) | 用于数据流的储存感知预取 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN105027137B (zh) | 用于针对增强型安全检查的页走查扩展的装置和方法 | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
US10437732B2 (en) | Multi-level cache with associativity collision compensation | |
CN108885586A (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
CN104246694A (zh) | 聚集页错误信令和处理 | |
CN106716949A (zh) | 减少具有扩展mesi协议的多处理器系统的互连流量 |
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 |