CN105493053A - 多核处理器中的高速缓存划分 - Google Patents
多核处理器中的高速缓存划分 Download PDFInfo
- Publication number
- CN105493053A CN105493053A CN201380079176.4A CN201380079176A CN105493053A CN 105493053 A CN105493053 A CN 105493053A CN 201380079176 A CN201380079176 A CN 201380079176A CN 105493053 A CN105493053 A CN 105493053A
- Authority
- CN
- China
- Prior art keywords
- cache
- miss
- data source
- data
- cost
- 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
Links
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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand 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/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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- 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/12—Replacement control
-
- 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/282—Partitioned cache
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/601—Reconfiguration of cache memory
- G06F2212/6012—Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文中描述的技术一般地包括与芯片多处理器中的高速缓存划分相关的方法和***。用于多个数据源之间的单个线程或应用的高速缓存划分通过利用所述多个数据源的能量成本和延时成本的变化来改进芯片多处理器的能量或延时效率。可使用最小化或以其它方式减小与高速缓存未命中相关联的延时或能耗的优化算法来选择用于每个数据源的分区大小。
Description
背景技术
除非在本文中另外表明,否则本部分中所述的材料对于本申请中的权利要求来说不是现有技术并且不由于包括在本部分中而被承认是现有技术。
依据摩尔定律,可被实际地合并到集成电路中的晶体管的数量大致每两年翻倍。该趋势已经持续了多半个世纪,并且预计在可预见的未来会持续。然而,简单地将更多个晶体管添加到单线程处理器不再产生快很多的处理器。相反,提高的***性能一直是通过将多个处理器核集成在单个芯片上以创建芯片多处理器并且在该芯片多处理器的多个处理器核之间共享处理来实现的。***性能和功率使用率可利用具有被配置用于多个指令集或者被配置为处理不同的指令集的子集或执行线程的核元件的芯片多处理器来进一步提高。
概述
根据本公开的至少一些实施例,一种更新多核处理器中的高速缓存的方法包括:接收与在多核处理器的单个核上运行的处理或线程相关联的高速缓存未命中的通知,所述多核处理器包括用于存储来自第一数据源的数据的第一高速缓存分区以及用于存储来自第二数据源的数据的第二高速缓存分区;确定与高速缓存未命中相关联的地址对应于第一数据源;并将与高速缓存未命中相关联的数据存储在第一高速缓存分区中。
根据本公开的至少一些实施例,一种多核处理器包括:用于存储来自第一数据源的数据的第一高速缓存分区和用于存储来自第二数据源的数据的第二高速缓存分区、以及控制器。控制器被配置为:接收与在多核处理器的单个核上运行的处理相关联的高速缓存未命中的通知;确定与高速缓存未命中相关联的地址对应于第一数据源;并将与高速缓存未命中相关联的数据存储在第一高速缓存分区中。
根据本公开的至少一些实施例,一种非暂态计算机可读存储介质包括计算机可执行指令。这些指令当被计算机执行时使计算机执行以下步骤:接收与在多核处理器的单个核上运行的处理相关联的高速缓存未命中的通知;确定与高速缓存未命中相关联的地址对应于第一数据源;并将与高速缓存未命中相关联的数据存储在第一高速缓存分区中。
前述概要仅仅是说明性的,而并不意图以任何方式是限制性的。除了说明性的方面,上述实施例和特征、另外的方面、实施例和特征将通过参考附图和下面的详细描述而变得显而易见。
附图说明
通过结合附图进行的以下描述和所附权利要求,本公开的前述和其它特征将变得更充分地显而易见。这些附图仅仅描绘了根据本公开的几个实施例,因此,不应被认为是限制其范围。将通过使用附图来更具体地、更详细地描述本公开,在附图中:
图1示出芯片多处理器的示例实施例的框图;
图2A示出在图1中所示的芯片多处理器的处理器核中的一个上运行的应用或执行线程的示例未命中率曲线;
图2B和图2C示出芯片多处理器中第一数据源的示例未命中成本曲线以及与芯片多处理器相关联的第二数据源的示例未命中成本曲线;
图3是示出高速缓存划分***的框图;
图4展示更新多核处理器中的高速缓存的示例方法的流程图;
图5是实施用于更新多核处理器中的高速缓存的方法的计算机程序产品的说明性实施例的框图;以及
图6是示出示例计算装置的框图,
所有附图都是依照本公开的至少一些实施例来安排的。
具体实施方式
在以下详细描述中,对附图进行参考,所述附图形成详细描述的一部分。在附图中,相似的符号通常标识相似的部件,除非上下文另外指示。在详细描述、附图和权利要求中描述的说明性实施例并不意味着是限制性的。在不脱离这里所提供的主题的精神或范围的情况下,可以利用其它实施例,以及可以进行其它改变。如在本文中一般地描述的和在图中示出的那样,本公开的各方面可以以广泛多样的不同配置被布置、替代、组合和设计,所有这些都被明确地构想,并且构成本公开的一部分。
存在朝向包括数量相对多的处理器核的大规模芯片多处理器的趋势,可以预期在不久的将来有高达数百个或数千个的核计数。这样的处理器可大大地缩短用于具有高并行性级的应用(例如,在其中多个计算可被同时或彼此并行地执行的应用)的处理时间。然而,随着该趋势继续,高核计数芯片多处理器中的所有处理器核的高效使用可能变得更困难,因为在不以指数方式增大由于芯片多处理器中的泄漏电流而引发的静态功耗的情况下,阈值电压可能不再按比例降低。结果,高核计数芯片多处理器中的每一个核可用的功率预算在未来的每代技术中可能降低。该情况导致称之为“功率墙”、“效用墙”或“暗场硅晶”的现象,其中高核计数芯片多处理器的增大的部分可能不被以全频率供电,或者可能根本不被供电。因此,这样的芯片多处理器中的性能改进可能极大地取决于能量效率,诸如性能/瓦特或操作/焦耳。
鉴于以上,改进芯片多处理器中的能量效率的可能的手段是近阈值电压设计(NTD)的技术,该技术将供给电压降至接近于用于芯片多处理器中的核的阈值电压。因为核所消耗的动态功率可能与CV2f成比例(其中C=电容,V=供给电压,f=时钟频率),所以降低用于核的供给电压(因此也降低频率)可能对降低该核所消耗的动态功率有三次方的影响(cubicimpact)。相比之下,由降低供给电压而导致的核性能的对应降低(例如,频率的减小)可能是线性的。因此,NTD可以是用于提高芯片多处理器的能量效率的有效方法。
根据本公开的实施例,高速缓存划分***和方法被用来使用NTD改进芯片多处理器中的能量效率。具体地说,高速缓存被划分为用于单个线程或应用的高速缓存分区,其中每个分区存储来自特定数据源的数据,以通过利用从多个数据源提取数据的能量成本和延时成本的变化来改进芯片多处理器的能量或延时效率。例如,当能量效率对于利用特定核处理特定线程或应用是重要的时,可将高速缓存分区分配以存储来自可用数据源的数据,并且可对这些分区的大小进行调制以实现最佳的或以其它方式改进的能量效率。类似地,当最大性能(例如,最小延时)对于处理线程或应用是重要的时,可将高速缓存分区分配用于存储来自可用数据源的数据,并且可对这些分区调整大小以实现最佳的或以其它方式改进的性能。
在应用程序的延时约束大于带宽约束(例如,延迟关键的应用)的情况下,NTD对芯片多处理器的存储器控制器的影响可能很小。例如,降低存储器控制器的时钟频率一半可能导致其延时从大约10个时钟周期翻倍至20个时钟周期,这与已经约为200-300个时钟周期量级的高速缓存未命中延时相比是可忽略的。因此,当NTD被应用于存储器控制器时,存在其性能可能未受到重大影响的许多应用。
图1示出根据本公开的至少一些实施例布置的芯片多处理器(CMP)100的示例实施例的框图。CMP100可以是由单个集成电路管芯109形成的多核处理器,并且可被配置为使用形成在集成电路管芯109上的多个处理器核来执行并行处理任务(例如,处理多个线程)。CMP100一般可包括被配置用于近阈值操作并且按铺瓦式阵列布置的多个存储器控制器和处理器核。瓦片(tiles)(诸如存储器控制器101-104和处理器核120)可使用任何在技术上可行的互连拓扑(诸如图1中所示的二维网)而被耦合在一起。因此,CMP100可包括21个处理器核120和四个存储器控制器101-104,每个处理器核120被配置有合适的路由器。
为了清晰和简洁起见,从图1省略了可存在于集成电路管芯109上的附加的共享资源,诸如I/O端口、总线接口、功率管理单元等。另外,存储器控制器和处理器核的任何在技术上可行的组合可被用在芯片多处理器中,而不超出本公开的范围。此外,CMP100可耦合到或包括任务管理器、***时钟、操作***(OS)和/或其它部件。
每个处理器核120可以是适合于形成在集成电路管芯109上的任何在技术上可行的处理器或处理器核。一般地,处理器核120中的一些或全部可被配置为处理一个或多个应用或一个应用的执行线程。在一些实施例中,处理器核120中的一些或全部在配置上可以是基本上相同的,在其它实施例中,处理器核120可包括变化的处理器核配置,诸如专门针对某些应用的配置,例如,图形处理单元等。另外,在一些实施例中,处理器核120中的一些或全部可包括用于指令缓冲器和数据缓冲器的高速缓存,这些高速缓存有时被称为“L1高速缓存(指令或数据)”,在一些情况下,还有L2高速缓存。当处理器核120经历高速缓存未命中时,即,当尝试读取高速缓存中的一条数据或者将一条数据写入到高速缓存中失败时,处理器核120可访问数据源1-5中的一个,下面对此进行描述。
存储器控制器101-104中的每个可以是被配置为管理CMP100和CMP100外部的存储器之间的数据流的数字电路。因为CMP100在一些实施例中被配置为用于近阈值操作,所以存储器控制器101-104可以以不同的时钟频率操作。例如,在图1中所示的实施例中,存储器控制器101可以以存储器控制器基本时钟频率f操作,存储器控制器102可以以存储器控制器基本时钟频率的一半f/2操作,存储器控制器103和104可以以存储器控制器基本时钟频率的四分之一f/4操作。此外,存储器控制器101-104中的每个可与一个或多个数据源相关联,其中数据源可以是存储器控制器和在处理器核120中的一个发生高速缓存未命中的情况下可被处理器核120访问的特定存储器的组合。例如,在图1中所示的实施例中,存储器控制器101和主存储器131的组合在本文中可被称为数据源1;存储器控制器102和主存储器131的组合在本文中可被称为数据源2;存储器控制器103和存储器133的组合在本文中可被称为数据源3;存储器控制器104和存储器134的组合在本文中可被称为数据源4;并且存储器控制器101和管芯上存储器135的组合在本文中可被称为数据源5。
数据源101-105中的每个可具有与其相关联的不同延时成本和/或能量成本。具体地说,当被处理器核120用作“高速缓存未命中源”(例如,用于满足处理器核120所经历的高速缓存未命中的数据源)时,数据源101-105中的每个可能需要更多的或更少的时间和/或能量来满足高速缓存未命中。例如,假定存储器控制器基本时钟频率f是处理器时钟频率的四分之一,并且每个存储器控制器具有五个流水线级(pipelinestages),那么用于提供存储器请求的延时对于存储器控制器101为20个处理器时钟周期,对于存储器控制器103为40个周期,对于存储器控制器102和104为80个周期。
对与数据源101-105中的每个相关联的不同的各自的延时成本有贡献的另一个因素可能是归因于包括在数据源101-105中的每个中的存储器的访问延时。例如,主存储器131可以例如是具有数百量级的处理器时钟周期的相对较长的访问延时的芯片外动态随机存取存储器(DRAM),而管芯上存储器135可以例如是具有短得多的访问延时的芯片上DRAM。因此,虽然数据源1和数据源5都可包括同一个存储器控制器101,但是在该示例中,数据源1所具有的与其相关联的总延时远大于数据源5,因为数据源1中的主存储器131的访问延时可能为大于数据源5中的管芯上存储器135的访问延时的数量级。
此外,数据源1-5中的每个相对于访问该数据源的特定处理器核120的位置可能极大地影响当提供来自该特定处理器核120的存储器请求时的延时成本。例如,假定CMP100中的每个路由器是四级流水线,那么通过一个路由器和链路(例如,一“跳(hop)”)路由数据包的时间可以是10个处理器时钟周期往返。因此,当处理器核121利用数据源1来满足处理器核121的高速缓存中的高速缓存未命中时,可将20个处理器时钟周期添加到与数据源1相关联的延时,并且当处理器核121利用数据源4来满足高速缓存未命中时,可将60个处理器时钟周期添加到与数据源4相关联的延时。
就这一点而论,显而易见的是,当NTD被应用于CMP100中的存储器控制器时,用于满足处理器核120所经历的高速缓存未命中的延时成本和能量成本可能大幅变化。这是因为延时成本和能量成本可能取决于数据源1-5中的每个存储器控制器的操作频率、与数据源1-5中的每个相关联的各自的延时成本、数据源1-5中的每个相对于经历高速缓存未命中的特定处理器核120的位置、和/或其它因素。例如,当处理器核121在运行应用时遭受高速缓存未命中时,如果数据源1被用来处理该高速缓存未命中,则满足该高速缓存未命中的延时可以是40个处理器时钟周期:(2跳×10个周期/跳)+用于存储器控制器1的20个周期的存储器控制器延时未命中。相比之下,如果数据源2被用来处理器高速缓冲未命中,则满足高速缓存未命中的延时可以是100个处理器时钟周期:(2跳×10个周期/跳)+用于存储器控制器2的80个周期的存储器控制器延时未命中。因此,取决于高速缓存未命中如何被处理,延时可能有极大的不同。即使芯片外访问延时(例如,供存储器控制器101和存储器控制器102两者访问主存储器131的150个处理器时钟周期)被包括,总高速缓存未命中延时(例如,使用数据源1和2的延时成本)也可能显著不同:与当使用数据源2时的230个处理器时钟周期(80+150)相比,使用数据源1是190个处理器时钟周期(40+150)。
在另一个示例中,取决于高速缓存未命中如何被处理,能量成本在CMP100中可能大大地变化。当处理器核122在运行应用时遭受高速缓存未命中时,如果数据源4被用来处理该高速缓存未命中,则满足该高速缓存未命中的延时可以是90个处理器时钟周期:(1跳×10个周期/跳)+用于存储器控制器4的80个周期的存储器控制器延时未命中。类似地,如果数据源1被用来处理该高速缓存未命中,则满足该高速缓存未命中的延时可以是90个处理器时钟周期:(7跳×10个周期/跳)+用于存储器控制器4的20个周期的存储器控制器延时未命中,所以与使用数据源1或数据源4相关联的延时可以是大致相同的。然而,被路由到数据源1的高速缓存未命中可使用大得多的互连能量和高得多的存储器控制器功率。因此,就延时成本而言,数据源1和数据源4对于处理器核122可以是基本上相同的,但是就能量成本而言,数据源1和数据源4可以是非常不同的。
鉴于以上,本公开的实施例以优化或以其它方式改进运行执行线程或应用的CMP100中的处理器核120的性能或能量效率的方式对高速缓存存储器进行划分。这可通过为数据源1-5之间的处理器核分配高速缓存分区并且对所述分区的大小进行调制以实现改进的性能或能量效率来实现。在一些实施例中,用于数据源1-5中的每个的成本函数可被用来优化或以其它方式改进高速缓存分区的大小,该成本函数对与满足高速缓存未命中相关联的延时成本或者与满足高速缓存未命中相关联的能量成本进行量化。将数据源1-5中的每个的成本函数与被处理器核120运行的线程或应用的未命中率曲线相乘得到每个数据源的未命中成本曲线。这些未命中成本曲线可被用在优化算法中,以选择数据源1-5中的每个的分区大小,其在延时或能量方面最小化或以其它方式降低高速缓存未命中的总成本。下面结合图2A-2C来描述未命中率曲线、成本函数和未命中成本曲线。
图2A示出在CMP100的处理器核120中的一个上运行的应用或执行线程的示例未命中率曲线210。一般地,未命中率曲线可捕捉未命中率作为用于在处理器上运行的处理或应用的高速缓存存储器大小的函数未命中,并且可被用来促进在芯片多处理器中的多个处理器核之间共享的高速缓存存储器的划分。在图2A中,未命中率曲线210说明在处理器核120中的一个上运行的应用或线程的未命中率(y轴)可以是高速缓存大小(S)的函数。换句话说,未命中率可随着高速缓存大小S沿着x轴增大而下降。如所示,未命中率曲线210的下降速率(例如,未命中率曲线210的斜率)也可随着高速缓存大小S增大而减小,因为应用或线程的更多工作集可被保存在高速缓存中用于更大的S值。
用于凭经验构造关于特定应用或线程的未命中率曲线(诸如未命中率曲线210)的技术可在线或离线执行。未命中率曲线210可通过运行目标应用或线程多次来离线产生,每次使用不同的高速缓存存储器大小。可替换地或者附加地,关于目标应用的未命中率曲线210可使用幻影缓冲器(ghostbuffer)或其它专用硬件支持来在线捕捉。
根据本公开的实施例,关于数据源1-5中的每个的成本函数可被用来对延时成本或能量成本进行量化以满足运行应用的处理器核120所经历的高速缓存未命中。当优化或以其它方式改进性能时,关于数据源1-5中的每个的成本函数可表达用以满足高速缓存未命中的时间,并且,当优化或以其它方式改进能量效率时,关于数据源1-5中的每个的成本函数可表达用以满足高速缓存未命中的CMP100所消耗的能量未命中。通过将关于数据源1-5中的一个的成本函数乘以未命中率曲线210,可针对该数据源产生未命中成本曲线。因此,关于特定数据源的未命中成本曲线可以是该数据源的各种属性的函数,这些属性包括但不限于:分配给该数据源中的特定处理器核120的高速缓存分区的大小S;与该数据源的存储器相关联的访问延时;与该数据源相关联的存储器控制器的操作频率;以及该数据源相对于对于其划分该数据源的处理器核120的位置。
图2B和2C示出CMP100中第一数据源的示例未命中成本曲线220以及与CMP100相关联的第二数据源的示例未命中成本曲线230。未命中成本曲线220和230均可与用于处理器核120中的一个的相应的高速缓存分区相关联。如以上所指出的,可通过构造未命中率曲线210(在图2A中示出)并且将未命中率曲线210乘以与第一数据源相关联的成本函数(延时成本或能量成本)来产生未命中成本曲线220。同样地,可通过将未命中率曲线210乘以与第二数据源相关联的成本函数(延时成本或能量成本)来产生未命中成本曲线230。因此,实施例可区分用于CMP100的各种数据源的不同的延时/能量成本,CMP100包括用于在处理器核120上运行的单个线程/应用的存储器分区。为了说明的目的,未命中成本曲线220被假定为是与用于在处理器核123上运行的特定应用或线程的数据源1相关联的未命中成本曲线,未命中成本曲线230被假定为是与用于所述应用或线程的数据源2相关联的未命中成本曲线。图1中示出了处理器核123、数据源1和数据源2。
如图2B和2C所示,未命中成本曲线220和230可以彼此不同,因为数据源1和数据源2的未命中成本函数可以彼此不同。数据源1的未命中成本函数(以及因此,未命中成本的值)一般可以比数据源2的小,并且这可以用未命中成本曲线220和230的相对值来反映。例如,数据源1的存储器控制器(例如,存储器控制器101)可以以比数据源2的存储器控制器高的频率操作,并且可被安置为比数据源2更靠近处理器核123。因此,数据源1的未命中成本一般可小于数据源2的未命中成本。
因为用于数据源1的未命中成本一般可小于用于数据源2的未命中成本,所以可假定CMP100中的高效分区策略将是将数据高速缓存在最低延时(或最低能量消耗)数据源(例如,数据源1)中,以使得没有未命中曾被从更高延时数据源(在这种情况下为数据源2)提取。然而,这样的假定可能不是最佳假定,因为性能(或能量效率)一般是由来自各种数据源的高速缓存未命中的总成本确定的,而不仅仅是由任何单个高速缓存未命中的成本确定的。换句话说,虽然将数据高速缓存在CMP100中的最低延时或最低能量消耗数据源中可避免高速缓存未命中(这些高速缓存未命中否则将引发最高延时或更高能量成本),但是在某一时刻,这样的高速缓存方案的益处一般可能被提供由其它数据源引起的附加未命中的成本的提高抵消。该效应在图2B和2C中被示出,并且在下面被描述。
当高速缓存划分策略被用在不区分异构的数据源(诸如数据源1-5)的CMP100中时,用于特定处理器核的高速缓存存储器一般可在这些数据源之间被相等地划分。就处理器核123(在该示例中,处理器核123使用数据源1和2来进行高速缓存划分)来说,数据源1和数据源2均可占据高速缓存大小的大致一半:S/2。如图2B所示,对于数据源1中的高速缓存大小S/2,未命中成本为C1,在数据源2中,未命中成本为C2,其中C2>>C1。因此,用于与在处理器核123上运行的应用相关联的高速缓存未命中的抽样总体的总未命中成本为C1+C2。
相比之下,图2C示出了当根据一些实施例的最佳(或以其它方式改进的)划分方案被用来确定用于数据源1和数据源2的高速缓存大小时用于高速缓存未命中的同一个抽样总体的总未命中成本。为了说明的目的,该最佳划分方案已经确定用于数据源1中的高速缓存的最佳(或以其它方式改进的)大小为S/4,并且在数据源2中,为3/4S。对于数据源1中的高速缓存大小S/4,未命中成本为C1’,并且对于数据源2中的高速缓存大小3/4S,未命中成本为C2’。因此,当最佳划分方案被使用时,用于高速缓存未命中的抽样总体的总未命中成本为C1’+C2’。如图2C所示,(C1’+C2’)<<(C1+C2)。这是因为,通过使用最佳划分方案,数据源2的分区大小增大为3/4S。由于未命中成本曲线230在1/2S至3/4S区域中具有陡峭下降斜率,所以数据源2的分区大小的这样的增大可大大地降低与数据源2相关联的未命中成本。此外,使用最佳划分方案可使数据源1的分区大小从S/2减小到S/4,并且数据源1的分区大小的减小可使与数据源1相关联的未命中成本略微增大。这是因为未命中成本曲线220在S/4至S/2区域中可能不具有陡峭斜率。因此,当使用最佳划分方案时,用于数据源1和2的总未命中成本可远小于当相等地划分数据源1和2时的总未命中成本。下面描述根据一些实施例的一种这样的最佳划分方案。
在诸如CMP100的芯片多处理器中,给定针对运行特定线程或应用的处理器核120划分的n个数据源(S1,S2,…,Sn),存在分别与每个数据源相关联的n个未命中成本曲线(MC1(s),MC2(s),…,MCn(s))。假定未命中成本曲线MC1(s),MC2(s),…,MCn(s)均是连续的并且是凹的,诸如未命中成本曲线220和230,那么可通过基本上满足以下条件来确定最佳(或以其它方式改进的)分区大小:1)如下的分区大小,其中所有未命中成本曲线都具有相同的或相似的斜率,以及2)分区大小的和等于或大致等于总高速缓存大小S。这些条件可用方程1和2来概述:
S1+S2+...+Sn=S(1)
在一些实施例中,可使用常规约束的优化方案来容易地确定这样的分区大小。在替代或附加实施例中,对于离散未命中成本曲线,优化也可使用与装箱(bin-packing)算法相似的常规组合的搜索算法来实现。在装箱中,可以以最小化或以其它方式减少所用箱的数量的方式来将不同权重的对象打包为有限数量的固定容量的箱。在这样的实施例中,箱可对应于n个数据源S1,S2,…,Sn,被打包的对象可以是高速缓存分区大小的最小单元,并且每个对象的权重可与未命中成本相关。这样的算法的目标可以是最小化或以其它方式降低总未命中成本。应当注意,这样的算法可不同于其它装箱算法,因为:1)箱(例如,数据源)的数量可以是恒定的,并且可以不是优化/改进的目标;2)每个对象(例如,未命中成本)的权重未命中可以是不恒定的,并且可通过参照未命中成本曲线来用特定箱的对象的数量计算;以及3)优化/改进的目标可以是最小化或以其它方式降低所有箱的未命中的总成本。应当注意,一般可构造单个未命中率曲线用于优化或以其它方式改进对于运行特定线程或应用的特定处理器核的划分未命中。
在一些实施例中,在最佳划分方案中区分的数据源的数量可少于可供CMP100中的处理器核使用的数据源的总数。例如,当多个数据源在被处理器核用作高速缓存存储器时具有基本上相似的延时或能量成本时,这样的数据源可被看作单个数据源。
图3是示出根据本公开的一个或多个实施例的高速缓存划分***300的框图。在其中单个处理器核运行应用或线程的芯片多处理器中,高速缓存划分***300可被配置为确定该处理器核所用的多个数据源的最佳的或以其它方式改进的高速缓存大小。在一些实施例中,高速缓存划分***300可被进一步配置为基于每个数据源的最近的未命中成本历史来动态地重新调整数据源的高速缓存存储器分区的大小。如所示,高速缓存划分***300可包括取代策略逻辑模块310、数据源标识符模块320、分区大小表330以及高速缓存划分逻辑模块340,所有这些都彼此操作地耦合。取代策略逻辑模块310、数据源标识符模块320、分区大小表330和/或高速缓存划分逻辑模块340可在高速缓存划分***300中被实施作为与和CMP100相关联的主机装置相关联的操作***的专用硬件、固件、部件或它们的组合。
取代策略逻辑模块310可被配置为确定在哪存储与芯片多处理器中的处理器核所经历的高速缓存未命中相关联的数据。例如,在运行应用或线程时,CMP100的处理器核(诸如处理器核123(在图1中示出))可经历高速缓存未命中。也就是说,处理器核123可访问高速缓存390,并且发现数据不存在于高速缓存390中,指示高速缓存未命中。高速缓存390可以是用于处理器核123的芯片上或芯片外高速缓存,并且可根据本公开的最佳划分方案在数据源1-5(在图1中示出)中的每个之间被划分。因此,当数据被处理器核123提取到高速缓存390中时,取代策略逻辑模块310可被配置为然后确定如何存储在高速缓存未命中信息315中引用的所取回的数据。具体地说,取代策略逻辑模块310可接收高速缓存未命中信息315,该信息可包括处理器核123所经历的高速缓存未命中的通知以及与响应于高速缓存未命中而被提取到高速缓存390中的数据相关联的地址。取代策略逻辑模块310然后可确定来自与和高速缓存未命中数据被取回的位置相同的数据源对应的高速缓存分区的数据块是否可能受损(victimized),或者来自与高速缓存未命中数据被从中取回的数据源的高速缓存分区相比不同的高速缓存分区的数据块是否可能受损,以使得数据反而被从不同的高速缓存分区逐出。“受损”数据块是存储被逐出并且被新数据取代的数据(诸如响应于高速缓存未命中而被取回到高速缓存390中的数据)的块。如所示,取代策略逻辑模块310一般可使用来自分区大小表330的分区大小数据335来完成该操作。下面描述分区大小数据335、分区大小表330和取代策略逻辑模块310通过其确定如何存储所取回的数据的过程。
数据源标识符模块320可以是被配置为当处理器核123经历高速缓存未命中时确定数据源1-5中的哪个与被取回到高速缓存390中的数据相关联的模块。各种方案可被用来做出这样的确定。在图3中所示的实施例中,数据源标识符模块320可包括地址模式匹配(APM)表321和数据源ID(DSI)表322。
APM表321可被配置为基于在高速缓存未命中数据315中引用的数据的地址来产生匹配矢量325。在一些实施例中,APM表321匹配所述数据的地址中的地址模式,并更新匹配矢量325中与该地址中的每个模式对应的比特。例如,4比特匹配矢量325可标识高速缓存未命中数据315中的地址是否匹配多达四个不同的地址模式,其中每个地址模式可与数据源1-5中的一个相关联。举例来说,第一地址模式可被定义为所有奇数页,第二模式可被定义为所有偶数页,第三地址模式可被定义为一些比特位置上的某一地址范围(例如,01至10)中的地址,并且第四地址模式可被定义为另一个地址范围(例如,11至20)中的地址。因此,考虑到这样的模式定义,在具有地址10的高速缓存未命中数据315中引用的数据(其是偶数页以及范围01-10中的页)产生具有值0-1-1-0的匹配矢量325,其表示与APM表321识别的第一至第四地址模式对应的第一至第四比特位置。
应注意,在使用APM321的实施例中,可针对匹配矢量325定义任何合适数量的地址模式。此外,在一些实施例中,涉及特定地址范围的地址模式可被用来确保某些页被CMP100中的存储器控制器(诸如芯片上DRAM)处理。
DSI表322可被配置为高效地确定数据源1-5中的哪个与在高速缓存未命中数据315中引用的数据相关联。在一些实施例中,DSI表322使用来自APM表321的匹配矢量325,并且可快速地查找与高速缓存未命中数据315相关联的数据源的源ID。DSI表322然后提供用于索引分区大小表330的源ID326。
分区大小表330可被配置为查找与源ID326相关联的分区信息。一般地,分区大小表330中的每个条目可包括占据数据源1-5中的特定一个的分区的目标大小、所述分区的当前大小、未命中成本值和/或其它信息。目标分区大小可由高速缓存划分逻辑模块340(下面描述)基于优化算法确定。在一些实施例中,优化算法可基于关于在处理器123上运行的应用的未命中率曲线并且基于包括感兴趣分区的数据源的成本函数来选择分区大小,例如,分区大小表330中的目标分区大小。当高速缓存未命中被处理器123经历时,未命中成本可在分区大小表330中被更新,例如在一些实施例中被更新为移动平均值,未命中成本数据336可被提供给高速缓存划分逻辑模块340,并且可通过将目标分区大小与分区大小表330中的当前分区大小进行比较来产生分区大小数据335。
分区大小数据335可被取代策略逻辑模块310用于确定:1)是否使来自与和高速缓存未命中数据315中引用的数据相同的数据源对应的高速缓存分区的块受损,或者2)是否使来自存储该数据的不同高速缓存分区的块受损。取代策略逻辑模块310然后可将合适的受损块标签(对应于源ID数据316)发送到高速缓存390。具体地说,当分区大小表330中的感兴趣条目的目标大小小于或等于分区大小表330中的感兴趣条目的当前大小时,与所述条目相关联的分区可能太大(即,被过度地分配)。因此,高速缓存未命中数据315中引用的数据可被存储在与感兴趣条目的源ID对应的同一个高速缓存分区中。分区大小不针对该条目改变,因为同一个高速缓存分区中的块可能受损以让位于新存储的数据。相反地,当分区大小表330中的目标大小大于分区大小表330中的当前大小时,与该条目相关联的分区可能太小(即,被不足地分配)。因此,可通过将高速缓存未命中数据315中引用的数据存储在与感兴趣条目的不同源ID对应的分区中来增大分区的大小;分区大小可针对该条目增大,因为不同源ID中的不同高速缓存分区中的块可能受损以让位于新存储的数据。
高速缓存划分逻辑模块340可被配置为确定分区大小表330中的每个条目的目标大小。一般地,高速缓存划分逻辑模块340可通过使用优化算法使确定基于未命中曲线轮廓(诸如图2A中的未命中率曲线210)以及未命中成本数据336。在一些实施例中,优化算法可基于分区大小表330中表示的每个分区的未命中成本曲线来选择分区大小表330中的目标分区大小。换句话说,目标分区大小可基于在处理器321上运行的应用的未命中率曲线,并且基于包括被分配给处理器核123的分区的各种数据源的成本函数。一般地,合适的未命中率曲线可由高速缓存390或者可进行高速缓存操作的其它模块产生。分区大小表330中的条目的新确定的目标大小可经由目标大小数据345被发送。在一些实施例中,高速缓存划分逻辑模块340可重复地(诸如每一个10,000或100,000个高速缓存未命中或时钟周期)确定分区大小表330中的条目的新的目标大小。这是因为分区大小表330中的目标大小的最佳值在短时间段期间通常可能不会大幅改变。
高速缓存划分***300可被配置为适应针对CMP100中的每个处理器核120的数据源的不同未命中成本曲线,因为分区大小表330和高速缓存划分逻辑模块340可针对每个处理器核120被不同地编程。这样,可基于各种数据源的延时或能量消耗的差异来针对特定处理器核120划分高速缓存存储器。此外,可在操作期间更新分区大小表330和高速缓存划分逻辑模块340,以反映正在处理器核120上运行的任何特定应用的不同使用率或者对于正在处理器核120上运行的任何特定应用的不同使用情况。
图4展示了概述根据本公开的一个实施例的用于更新多核处理器中的高速缓存的示例方法400的流程图。方法400可包括如方框401、402和/或403中的一个或多个所示的一个或多个操作、功能或动作。尽管这些方框是按顺序的次序示出的,但是这些方框也可被并行地和/或按与本文中所述的那些次序不同的次序执行。另外,各种方框可基于特定实施方式被组合为更少的方框,被分割为另外的方框,和/或被除去。表示其它操作、功能或动作的另外的方框可被提供。尽管方法400是结合图1-3的CMP100描述的,但是被配置为执行方法400的任何合适的芯片多处理器在本公开的范围内。
方法400可从方框401“接收高速缓存未命中”开始。方框401之后可接着是方框402“确定与高速缓存未命中相关联的地址对应于数据源”,方框402之后可接着是方框403“将与高速缓存未命中相关联的数据存储在数据源中。”
在方框401中,与CMP100相关联的高速缓存划分***(诸如高速缓存划分***300)从处理器核120接收高速缓存未命中的通知。高速缓存未命中可与在处理器核120上运行的处理(诸如执行线程或应用)相关联。
在方框402中,高速缓存划分***300确定与在方框401中涉及的高速缓存未命中相关联的地址对应于CMP100的特定数据源。应注意,CMP100可包括多个数据源和/或存储器控制器,其中每个均可被用于高速缓存存储器的与经历高速缓存未命中的处理器核120相关联的部分。因此,高速缓存划分***300可被配置为基于与每个数据源相关联的延时和/或能量消耗来将CMP100的数据源1-5的部分可编程地分配给该处理器核120。
在方框403中,高速缓存划分***300将与在方框401中涉及的高速缓存未命中相关联的数据存储在方框402中被确定为与高速缓存未命中相关联的数据源中。当该数据源上的高速缓存分区的当前大小等于或大于高速缓存分区的目标大小(如在分区大小表300中所指示的那样)时,可用与高速缓存未命中相关联的数据取代高速缓存分区中的数据,以使得高速缓存分区的大小保持相同。当该数据源上的高速缓存分区的当前大小小于高速缓存分区的目标大小时,可用与高速缓存未命中相关联的数据取代数据源上的不同高速缓存分区中的数据,以使得高速缓存分区的大小可以以数据源上的不同高速缓存分区为代价增大大小。应注意,数据源上的不同高速缓存分区可能与在方框401中涉及的在处理器核120上运行的处理没有关联。应进一步注意,在方框403中涉及的高速缓存分区的目标大小可基于高速缓存分区的成本函数以及在单个核上运行的处理的未命中率。
图5是实施用于更新多核处理器中的高速缓存的方法的计算机程序产品500的说明性实施例的框图。计算机程序产品500可包括信号承载介质504。信号承载介质504可包括一组或多组可执行指令502,这些可执行指令502当被例如计算装置的处理器执行时,可提供至少以上关于图1-4描述的功能。
在一些实施方式中,信号承载介质504可包含非暂态计算机可读介质508,诸如但不限于硬盘驱动器、压缩盘(CD)、数字通用盘(DVD)、数字带、存储器等。在一些实施方式中,信号承载介质504可包含可记录介质510,诸如但不限于存储器、读/写(R/W)CD、R/WDVD等。在一些实施方式中,信号承载介质504可包含通信介质506,诸如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。计算机程序产品500可被记录在非暂态计算机可读介质508或另一个相似的可记录介质510上。
图6是示出根据本公开的至少一些实施例的示例计算装置600的框图。在非常基本的配置602中,计算装置600通常包括一个或多个芯片多处理器604和***存储器606。存储器总线608可被用于处理器604和***存储器606之间的通信。
芯片多处理器604在配置和操作上可基本上类似于图1中的CMP100。取决于期望的配置,芯片多处理器604可以是任何类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或它们的任何组合。处理器604可包括一个或多个等级的高速缓存,诸如一级高速缓存610和二级高速缓存612、处理器核614和寄存器616。示例处理器核614可包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或它们的任何组合。示例存储器控制器618也可与处理器604一起被使用,或在一些实施方式中,存储器控制器618可以是处理器604的内部部分。
取决于期望的配置,***存储器606可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或它们的任何组合。***存储器606可包括操作***620、一个或多个应用622以及程序数据624。应用622可包括被布置为至少执行如关于图4的方法400描述的那些功能的高速缓存划分***626,其类似于图3的高速缓存划分***300。程序数据624对于与如本文中所述的高速缓存划分***626一起操作可能是有用的。在一些实施例中,应用622可被布置为在操作***620上与程序数据624一起操作。该所述的基本配置602在图6中通过内部虚线内那些部件而被示出。
计算装置600可具有附加特征或功能以及用于促进基本配置602和任何所需的装置和接口之间的通信的附加接口。例如,总线/接口控制器630可被用来促进基本配置602与一个或多个数据存储装置632之间经由存储接口总线634的通信。数据存储装置632可以是可移除存储装置636、不可移除存储装置638或它们的组合。可移除存储装置和不可移除存储装置的示例举几个例子来说包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘装置、诸如压缩盘(CD)驱动器或数字通用盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器。示例计算机存储介质可包括在信息存储的任何方法或技术中被实施的易失性和非易失性、可移除和不可移除的介质,诸如计算机可读指令、数据结构、程序模块或其它数据。
***存储器606、可移除存储装置636和不可移除存储装置638是计算机存储介质的示例。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储器装置或可用于存储期望的信息以及可被计算装置600访问的任何其它介质。任何这样的计算机存储介质可以是计算装置600的一部分。
计算装置600也可包括用于促进从各种接口装置(例如,输出装置642、***接口644和通信装置646)到基本配置602的经由总线/接口控制器630的通信的接口总线640。示例输出装置642包括图形处理单元648和音频处理单元650,其可被配置为与诸如显示器或扬声器的各种外部装置经由一个或多个A/V端口652进行通信。示例***接口644包括串行接口控制器654或并行接口控制器656,其可被配置为与诸如输入装置(例如,键盘、鼠标、笔、声音输入装置,触摸输入装置等)或其它***装置(例如,打印机、扫描仪等)的外部装置经由一个或多个I/O端口658进行通信。示例通信装置646包括网络控制器660,其可被布置为促进与一个或多个其它计算装置662经由一个或多个通信端口664在网络通信链路(诸如但不限于光纤、长期演进(LTE)、3G、WiMax)上的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以被体现为计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据,并且可包括任何信息递送介质。“调制数据信号”可以是具有其特性集合中的一个或多个或者被更改为对信号中的信息进行编码的信号。举例来说,而非限制,通信介质可包括诸如有线网络或有线直接连接的有线介质、以及诸如声学、射频(RF)、微波、红外(IR)和其它无线介质的无线介质。如本文中所使用的术语计算机可读介质可包括存储介质和通信介质两者。
计算装置600可被实施作为小型便携式(或移动)电子装置的一部分,所述电子装置诸如蜂窝电话、个人数据助理(PDA)、个人媒体播放器装置、无线网表装置、个人耳机装置、专用装置或包括以上功能中的任何功能的混合装置。计算装置600也可被实施作为包括笔记本计算机和非笔记本计算机配置两者的个人计算机。
如本文中所述的,本公开的实施例使得能够对未命中芯片多处理器中的处理器核进行高速缓存划分,其能够优化或以其它方式改进与高速缓存未命中相关联的延时或能量成本。高速缓存划分可基于多个数据源的延时或能量的差异,并且可促进在芯片多处理器的单个处理器核上运行的单个应用或线程的高效操作。本文中所述的高速缓存划分方案的实施例可提供芯片多处理器的改进的性能或能量效率。这样的性能和能量益处可利用更大核计数芯片多处理器提高,因为这样的多处理器的数据源之间更大的变化增强了本公开的实施例的益处。NTD在芯片多处理器中的存储器控制器的应用可进一步增强本公开的优点。
***的实施例的硬件和软件实施方式之间区别很小;硬件或软件的使用一般是(但不总是,因为在某些环境下,硬件和软件之间的选择可能变得重要)表示成本对效率权衡的设计选择。存在通过其可实现本文中所述的处理和/或***和/或其它技术的各种媒介物(例如,硬件、软件和/或固件),并且优选媒介物将随着部署这些处理和/或***和/或其它技术的上下文而变化。例如,如果实施者确定速度和精度是最重要的,则实施者可选择主要硬件和/或固件媒介物;如果灵活性是最重要的,则可选择主要软件实施方式;或者,再一次可替换地,实施者可选择硬件、软件和/或固件的某一组合。
前述的详细描述已经通过使用框图、流程图和/或示例阐述了装置和/或处理的各种实施例。只要这样的框图、流程图和/或示例包含一个或多个功能和/或操作,本领域技术人员将理解,这样的框图、流程图或示例内的每个功能和/或操作可单个地和/或共同地用范围广泛的硬件、软件、固件或它们的几乎任何组合来实施。在一个实施例中,本文中所述的主题的几个部分可经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实施。然而,本领域技术人员将认识到,本文中所公开的实施例的一些方面整个地或部分地可在集成电路中被等效地实施,被实施作为在一个或多个计算机上运行的一个或多个计算机程序(例如,在一个或多个计算机***上运行的一个或多个程序),被实施作为在一个或多个处理器上运行的一个或多个程序(例如,在一个或多个微处理器上运行的一个或多个程序),被实施作为固件,或者被实施作为它们的几乎任何组合,并且根据本公开,设计电路和/或编写用于软件和/或固件的代码将在本领域技术人员的熟练技能内。另外,本领域技术人员将意识到,本文中所述的主题的机制能够以各种形式作为程序产品分布,并且本文中所述的主题的说明性实施例不管用于实际实现该分布的信号承载介质的具体类型如何都适用。信号承载介质的示例包括但不限于以下:可记录类型的介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字通用盘(DVD)、数字带、计算机存储器等;以及传输类型的介质,诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
本领域技术人员将认识到,以本文中所阐述的方式描述装置和/或处理、其后使用工程实践将这样的所述的装置和/或处理集成到数据处理***中在本领域内是常见的。也就是说,本文中所述的装置和/或处理的至少一部分可经由合理量的实验集成到数据处理***中。本领域技术人员将认识到,典型的数据处理***一般包括以下中的一个或多个:***单元壳体、视频显示装置、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作***的计算实体、驱动器、图形用户界面、以及应用程序、诸如触控板或触摸屏的一个或多个交互装置、和/或包括反馈回路和控制电机(例如,用于感测位置和/或速率的反馈;用于移动和/或调整部件和/或量的控制电机)的控制***。典型的成像***可利用任何合适的市售部件来实施,诸如常见于数据计算/通信和/或网络计算/通信***中的那些部件。
本文中所述的主题有时说明包含在不同的其它部件内的或者与不同的其它部件连接的不同部件。要理解,这样的描绘的架构仅仅是示例,事实上,可实施实现相同功能的许多其它的架构。从概念的意义上来讲,实现相同功能的部件的任何布置是有效“关联的”,以使得期望的功能被实现。因此,本文中组合实现特定功能的任何两个部件可被看作彼此“关联”,以使得不管架构或中间部件如何期望的功能都被实现。同样地,相关联的任何两个部件也可被视为彼此“可操作地连接”或“可操作地耦合”来实现期望的功能,并且能够如此关联的任何两个部件也可被视为彼此“可操作地可耦合”来实现期望的功能。可操作地可耦合的具体示例包括但不限于可物理配合和/或物理交互部件、和/或可无线交互和/或无线交互部件、和/或逻辑交互和/或可逻辑交互部件。
关于基本上任何复数和/或单数术语在本文中的使用,本领域技术人员可以按照其适用于的情景和/或应用而从复数转化到单数和/或从单数转化到复数。为了清楚起见,在本文中可能明确地阐述了各种单数/复数变换。
本领域技术人员将理解的是,总之,本文中且尤其是所附权利要求(例如所附权利要求的主体)中所使用的术语通常意图是“开放的”术语(例如术语“包括”应当被解释为“包括但不限于”,术语“具有”应当被解释为“至少具有”,术语“包含”应当被解释为“包含但不限于”,等等)。本领域技术人员将进一步理解的是,如果所引入的权利要求叙述的特定数字是有意的,这样的意图将被明确叙述在权利要求中,并且在没有这样的叙述的情况下不存在这样的意图。例如,作为理解的辅助,下面所附的权利要求可以包含引入性短语“至少一个”和“一个或多个”的使用以引入权利要求叙述。然而,这样的短语的使用不应被解释为暗示着通过不定冠词“一”或“一个”引入权利要求叙述将包含这样引入的权利要求叙述的任何特定权利要求限定到包含只有一个这样的叙述的实施例,即使当该同一权利要求包括引入性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时也是这样(例如,“一”和/或“一个”应当被解释为意味着“至少一个”或“一个或多个”);对于用来引入权利要求叙述的定冠词的使用来说情况是同样的。此外,即使明确记载了所引入的权利要求叙述的特定数字,本领域技术人员也将认识到,这样的记载应当被解释为意味着至少所记载的数字(例如,在没有其它修饰的情况下,“两个叙述”的直率叙述意味着至少两个叙述或者两个或更多叙述)。此外,在其中使用类似于“A、B和C等中的至少一个”的惯例的那些实例中,通常这样的构造意图是本领域技术人员将理解该惯例的意义(例如,“具有A、B和C等中的至少一个的***”将包括但不限于单独具有A、单独具有B、单独具有C、具有A和B一起、具有A和C一起、具有B和C一起以及/或者具有A、B和C一起等的***)。在其中使用类似于“A、B或C等中的至少一个”的惯例的那些实例中,通常这样的构造意图是本领域技术人员将理解该惯例的意义(例如,“具有A、B或C等中的至少一个的***”将包括但不限于单独具有A、单独具有B、单独具有C、具有A和B一起、具有A和C一起、具有B和C一起以及/或者具有A、B和C一起等的***)。本领域技术人员将进一步理解的是,实际上任何转折性词语和/或提供两个或更多替换术语的短语无论是在说明书、权利要求中还是在附图中都应当被理解为构想包括这些术语中的一个、这些术语中的任一个或这些术语两个的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或“A和B”的可能性。
虽然本文中已经公开了各个方面和实施例,但是其它方面和实施例对于本领域技术人员将是显而易见的。本文中所公开的各个方面和实施例是出于例证的目的,而非意图限制,其中真实范围和精神由权利要求来指明。
Claims (24)
1.一种更新多核处理器中的高速缓存的方法,所述方法包括:
接收与在所述多核处理器的单个核上运行的处理或线程相关联的高速缓存未命中的通知,所述多核处理器包括用于存储来自第一数据源的数据的第一高速缓存分区以及用于存储来自第二数据源的数据的第二高速缓存分区;
确定与所述高速缓存未命中相关联的地址对应于所述第一数据源;以及
将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中。
2.根据权利要求1所述的方法,其中所述处理包括应用和应用的执行线程中的一个。
3.根据权利要求1所述的方法,其中所述第一数据源与第一存储器控制器相关联,所述第二数据源与第二存储器控制器相关联。
4.根据权利要求3所述的方法,其中所述第一数据源具有相对于所述单个核的高速缓存的第一延时,所述第二数据源具有相对于所述单个核的高速缓存的第二延时,所述第一延时与第二延时基本上不同。
5.根据权利要求3所述的方法,其中所述第一数据源具有与所述高速缓存未命中以及将与所述高速缓存未命中相关联的数据提供给所述单个核相关联的第一能量成本,并且其中所述第二数据源具有与所述高速缓存未命中以及将与所述高速缓存未命中相关联的数据提供给所述单个核相关联的第二能量成本,所述第一能量成本与所述第二能量成本基本上不同。
6.根据权利要求1所述的方法,其中确定与所述高速缓存未命中相关联的地址对应于所述第一数据源包括使用基于包括在与所述高速缓存未命中相关联的所述地址中的模式而产生的匹配矢量来标识所述第一数据源。
7.根据权利要求1所述的方法,其中将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中包括将所述第一高速缓存分区的当前大小与所述第一高速缓存分区的目标大小进行比较。
8.根据权利要求7所述的方法,其中将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中包括:当所述第一高速缓存分区的当前大小等于或大于所述目标大小时,用与所述高速缓存未命中相关联的数据取代所述第一高速缓存分区中的数据。
9.根据权利要求7所述的方法,其中将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中包括:当所述第一高速缓存分区的当前大小小于所述目标大小时,通过逐出与所述第二高速缓存分区相关联的数据来增大所述第一高速缓存分区的当前大小。
10.根据权利要求7所述的方法,其中所述第一高速缓存分区的目标大小基于所述第一数据源的成本函数以及在所述单个核上运行的所述处理的未命中率。
11.根据权利要求10所述的方法,其中所述成本函数包括与在所述单个核上运行的所述处理相关联的高速缓存未命中延时成本以及与在所述单个核上运行的所述处理相关联的高速缓存未命中能量成本中的至少一个。
12.根据权利要求7所述的方法,还包括通过优化降低与在所述单个核上运行的所述处理相关联的高速缓存未命中的总成本来选择所述第一高速缓存分区的目标大小。
13.根据权利要求12所述的方法,其中优化降低高速缓存未命中的总成本包括使用常规组合搜索算法,在所述常规组合搜索算法中,高速缓存分区的未命中成本基于与所述第一数据源相关联的成本函数以及存储在所述高速缓存分区中的数据对象的数量。
14.根据权利要求1所述的方法,还包括存储所述第一分区的未命中成本,所述第一分区的未命中成本与接收所述高速缓存未命中以及将与所述高速缓存未命中相关联的数据提供给所述多核处理器的单个核相关联。
15.一种多核处理器,包括:
用于存储来自第一数据源的数据的第一高速缓存分区以及用于存储来自第二数据源的数据的第二高速缓存分区;以及
控制单元,其操作地耦合到所述第一高速缓存分区和所述第二高速缓存分区,并且被配置为:
接收与在所述多核处理器的单个核上运行的处理相关联的高速缓存未命中的通知;
确定与所述高速缓存未命中相关联的地址对应于所述第一数据源;以及
将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中。
16.根据权利要求15所述的多核处理器,其中所述处理包括应用和应用的执行线程中的一个。
17.根据权利要求15所述的多核处理器,其中所述第一数据源与第一存储器控制器相关联,所述第二数据源与第二存储器控制器相关联。
18.根据权利要求17所述的多核处理器,其中所述第一数据源具有相对于所述单个核的第一延时,所述第二数据源具有相对于所述单个核的第二延时,所述第一延时与第二延时基本上不同。
19.根据权利要求17所述的多核处理器,其中所述第一数据源具有与接收所述高速缓存未命中以及将与所述高速缓存未命中相关联的数据提供给所述单个核相关联的第一能量成本,并且其中所述第二数据源具有与接收所述高速缓存未命中以及将与所述高速缓存未命中相关联的数据提供给所述单个核相关联的第二能量成本,所述第一能量成本与所述第二能量成本基本上不同。
20.根据权利要求15所述的多核处理器,其中为了将与所述高速缓存未命中相关联的数据存储在所述第一数据源中,所述控制单元被配置为将所述第一高速缓存分区的当前大小与所述第一高速缓存分区的目标大小进行比较。
21.根据权利要求15所述的多核处理器,其中所述第一数据源和所述第二数据源与同一个存储器控制器相关联。
22.一种包括计算机可执行指令的非暂态计算机可读存储介质,其中所述指令当被计算机执行时使所述计算机执行以下步骤:
接收与在所述多核处理器的单个核上运行的处理相关联的高速缓存未命中的通知;
确定与所述高速缓存未命中相关联的地址对应于所述第一数据源;以及
将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中。
23.根据权利要求22所述的非暂态计算机可读存储介质,其中确定与所述高速缓存未命中相关联的地址对应于所述第一数据源包括使用基于包括在与所述高速缓存未命中相关联的所述地址中的模式而产生的匹配矢量来标识所述第一数据源。
24.根据权利要求22所述的非暂态计算机可读存储介质,其中将与所述高速缓存未命中相关联的数据存储在所述第一高速缓存分区中包括将所述第一高速缓存分区的当前大小与所述第一高速缓存分区的目标大小进行比较。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/057177 WO2015030756A1 (en) | 2013-08-29 | 2013-08-29 | Cache partitioning in a multicore processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105493053A true CN105493053A (zh) | 2016-04-13 |
CN105493053B CN105493053B (zh) | 2019-06-11 |
Family
ID=52587113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380079176.4A Active CN105493053B (zh) | 2013-08-29 | 2013-08-29 | 多核处理器及更新多核处理器中的高速缓存的方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US9612961B2 (zh) |
CN (1) | CN105493053B (zh) |
WO (1) | WO2015030756A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829343A (zh) * | 2018-05-10 | 2018-11-16 | 中国科学院软件研究所 | 一种基于人工智能的缓存优化方法 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9374276B2 (en) | 2012-11-01 | 2016-06-21 | Microsoft Technology Licensing, Llc | CDN traffic management in the cloud |
US9537973B2 (en) * | 2012-11-01 | 2017-01-03 | Microsoft Technology Licensing, Llc | CDN load balancing in the cloud |
US10581687B2 (en) | 2013-09-26 | 2020-03-03 | Appformix Inc. | Real-time cloud-infrastructure policy implementation and management |
US10291472B2 (en) | 2015-07-29 | 2019-05-14 | AppFormix, Inc. | Assessment of operational states of a computing environment |
US10355997B2 (en) | 2013-09-26 | 2019-07-16 | Appformix Inc. | System and method for improving TCP performance in virtualized environments |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
JP6281442B2 (ja) * | 2014-08-14 | 2018-02-21 | 富士通株式会社 | 割り当て制御プログラム、割り当て制御方法及び割り当て制御装置 |
US9535843B2 (en) * | 2015-02-17 | 2017-01-03 | Linkedin Corporation | Managed memory cache with application-layer prefetching |
US9836396B2 (en) * | 2015-05-21 | 2017-12-05 | Mediatek Inc. | Method for managing a last level cache and apparatus utilizing the same |
KR102441178B1 (ko) | 2015-07-29 | 2022-09-08 | 삼성전자주식회사 | 컴퓨팅 장치에서 캐시 플루딩 프로세스를 관리하기 위한 장치 및 방법 |
US10255190B2 (en) | 2015-12-17 | 2019-04-09 | Advanced Micro Devices, Inc. | Hybrid cache |
EP3258382B1 (en) | 2016-06-14 | 2021-08-11 | Arm Ltd | A storage controller |
US10552327B2 (en) | 2016-08-23 | 2020-02-04 | Apple Inc. | Automatic cache partitioning |
US10868742B2 (en) | 2017-03-29 | 2020-12-15 | Juniper Networks, Inc. | Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control |
US11068314B2 (en) * | 2017-03-29 | 2021-07-20 | Juniper Networks, Inc. | Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment |
US11323327B1 (en) | 2017-04-19 | 2022-05-03 | Juniper Networks, Inc. | Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles |
US11755224B2 (en) * | 2017-07-27 | 2023-09-12 | EMC IP Holding Company LLC | Storing data in slices of different sizes within different storage tiers |
US11169805B2 (en) * | 2018-04-30 | 2021-11-09 | Hewlett Packard Enterprise Development Lp | Dynamic processor cache to avoid speculative vulnerability |
US10747668B2 (en) * | 2018-11-01 | 2020-08-18 | Vmware, Inc. | Efficient global cache partition and dynamic sizing for shared storage workloads |
US11080211B2 (en) * | 2018-12-12 | 2021-08-03 | Arm Limited | Storing data from low latency storage |
US11620230B2 (en) * | 2019-05-24 | 2023-04-04 | Texas Instruments Incorporated | Methods and apparatus to facilitate read-modify-write support in a coherent victim cache with parallel data paths |
KR20210079637A (ko) * | 2019-12-20 | 2021-06-30 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4463424A (en) * | 1981-02-19 | 1984-07-31 | International Business Machines Corporation | Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes |
US5537635A (en) * | 1994-04-04 | 1996-07-16 | International Business Machines Corporation | Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size |
US6865647B2 (en) * | 2001-09-29 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8335122B2 (en) * | 2007-11-21 | 2012-12-18 | The Regents Of The University Of Michigan | Cache memory system for a data processing apparatus |
US8412971B2 (en) * | 2010-05-11 | 2013-04-02 | Advanced Micro Devices, Inc. | Method and apparatus for cache control |
US8438338B2 (en) * | 2010-08-15 | 2013-05-07 | International Business Machines Corporation | Flexible use of extended cache using a partition cache footprint |
US8984311B2 (en) | 2011-12-30 | 2015-03-17 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including dynamic C0-state cache resizing |
CN103077128B (zh) | 2012-12-29 | 2015-09-23 | 华中科技大学 | 一种多核环境下的共享缓存动态划分方法 |
GB2509755B (en) * | 2013-01-14 | 2015-07-08 | Imagination Tech Ltd | Partitioning a shared cache using masks associated with threads to avoiding thrashing |
US9984004B1 (en) * | 2016-07-19 | 2018-05-29 | Nutanix, Inc. | Dynamic cache balancing |
-
2013
- 2013-08-29 WO PCT/US2013/057177 patent/WO2015030756A1/en active Application Filing
- 2013-08-29 CN CN201380079176.4A patent/CN105493053B/zh active Active
- 2013-08-29 US US14/363,792 patent/US9612961B2/en active Active
-
2017
- 2017-03-30 US US15/474,577 patent/US10346308B2/en active Active
-
2019
- 2019-06-21 US US16/448,239 patent/US10956331B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4463424A (en) * | 1981-02-19 | 1984-07-31 | International Business Machines Corporation | Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes |
US5537635A (en) * | 1994-04-04 | 1996-07-16 | International Business Machines Corporation | Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size |
US6865647B2 (en) * | 2001-09-29 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829343A (zh) * | 2018-05-10 | 2018-11-16 | 中国科学院软件研究所 | 一种基于人工智能的缓存优化方法 |
CN108829343B (zh) * | 2018-05-10 | 2020-08-04 | 中国科学院软件研究所 | 一种基于人工智能的缓存优化方法 |
Also Published As
Publication number | Publication date |
---|---|
US9612961B2 (en) | 2017-04-04 |
WO2015030756A1 (en) | 2015-03-05 |
US10346308B2 (en) | 2019-07-09 |
US20190370175A1 (en) | 2019-12-05 |
US20170206163A1 (en) | 2017-07-20 |
US10956331B2 (en) | 2021-03-23 |
US20150127912A1 (en) | 2015-05-07 |
CN105493053B (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105493053A (zh) | 多核处理器中的高速缓存划分 | |
CN100501739C (zh) | 利用流预取历史来改进数据预取性能的方法和*** | |
EP3155521B1 (en) | Systems and methods of managing processor device power consumption | |
EP2478441B1 (en) | Read and write aware cache | |
JP5695766B2 (ja) | マルチコアシステムエネルギー消費最適化 | |
Mutlu | Main memory scaling: Challenges and solution directions | |
CN102169461A (zh) | 存储器*** | |
Zhang et al. | CRFTL: cache reallocation-based page-level flash translation layer for smartphones | |
Mutlu et al. | The main memory system: Challenges and opportunities | |
CN104350465A (zh) | 调整计算机程序的动态优化 | |
Zhang et al. | Optimizing data allocation for loops on embedded systems with scratch-pad memory | |
Chen et al. | Refinery swap: An efficient swap mechanism for hybrid DRAM–NVM systems | |
Díaz Álvarez et al. | Optimizing L1 cache for embedded systems through grammatical evolution | |
HeydariGorji et al. | Leveraging Computational Storage for Power-Efficient Distributed Data Analytics | |
Gu et al. | Data allocation with minimum cost under guaranteed probability for multiple types of memories | |
Feng et al. | LAMA: Link-aware hybrid management for memory accesses in emerging CPU-FPGA platforms | |
Li et al. | An application-oblivious memory scheduling system for DNN accelerators | |
US20160274952A1 (en) | Energy efficient supercomputer job allocation | |
Benedict | Application of energy reduction techniques using niched pareto GA of energy analzyer for HPC applications | |
Khajekarimi et al. | Integer linear programming model for allocation and migration of data blocks in the STT‐RAM‐based hybrid caches | |
Namasudra et al. | Dark silicon and future on-chip systems | |
US11630765B2 (en) | Flash translation layer design using reinforcement learning | |
Tsafack Chetsa et al. | A three step blind approach for improving high performance computing systems' energy performance | |
Xu et al. | Flash‐Aware Page Replacement Algorithm | |
Zheng et al. | Research on optimizing last level cache performance for hybrid main memory |
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 |