CN105579978B - 用于动态控制高速缓存存储器的寻址模式的方法、设备和*** - Google Patents
用于动态控制高速缓存存储器的寻址模式的方法、设备和*** Download PDFInfo
- Publication number
- CN105579978B CN105579978B CN201380079946.5A CN201380079946A CN105579978B CN 105579978 B CN105579978 B CN 105579978B CN 201380079946 A CN201380079946 A CN 201380079946A CN 105579978 B CN105579978 B CN 105579978B
- Authority
- CN
- China
- Prior art keywords
- cache
- cache memory
- node identifier
- core
- group
- 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
Images
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/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/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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在实施例中,高速缓存存储器的第一部分与第一核相关联。这个第一高速缓存存储器部分具有分布式高速缓存存储器,并且可以根据寻址模式被动态地控制为用于第一核的私有高速缓存存储器和由(包含第一核的)多个核共享的共享高速缓存存储器中的一个,所述寻址模式它本身是动态可控的。描述和要求保护其他实施例。
Description
技术领域
本公开关于计算***,并且特别地(但不排他地)关于高速缓存存储器管理。
附图说明
图1是包含多核处理器的计算***的框图。
图2是根据本发明的实施例的多核处理器的框图。
图3是根据实施例的处理器的部分的框图。
图4A是根据实施例的共享高速缓存存储器的集合索引的框图。
图4B是根据本发明的实施例的使用全局集合索引产生的访问地址。
图5是根据本发明的实施例的方法的流程图。
图6是根据本发明的实施例的用于动态控制高速缓存存储器的方法的流程图。
图7是根据本发明的实施例的片上***(SOC)设计的实施例的框图。
具体实施方式
参考图1,描绘用于包含多核处理器的计算***的框图的实施例。处理器100包含任何处理器或处理装置,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上***(SOC)或用来执行代码的其他装置。处理器100在一个实施例中包含至少两个核——核101和102,所述至少两个核可以包含不对称的核或对称的核(图解的实施例)。然而,处理器100可以包含任何数量的处理元件,所述处理元件可以是对称的或不对称的。
在一个实施例中,处理元件涉及用来支持软件线程的逻辑或硬件。硬件处理元件的示例包含:线程单元、线程槽、线程、处理单元、语境、语境单元、逻辑处理器、硬件线程、核和/或任何其他元件,其能够保持处理器的状态,诸如执行状态或架构状态。换言之,处理元件在一个实施例中涉及能够独立与代码(诸如,软件线程、操作***、应用或其他代码)相关联的任何硬件。物理处理器(或处理器插座)典型地涉及集成电路,所述集成电路可能包含任何数量的其他处理元件,诸如核或硬件线程。
核经常涉及能够维持独立架构状态的集成电路上定位的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程典型地涉及能够维持独立架构状态的集成电路上定位的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如能够看到的那样,当某些资源被共享并且其他资源专用于架构状态时,在核和硬件线程的命名之间的界限(line)重叠。然而经常地,操作***把核和硬件线程视作个别的逻辑处理器,其中操作***能够个别地调度在每个逻辑处理器上的操作。
如在图1中图解的物理处理器100包含两个核——核101和102。此处,核101和102被认为是对称的核,即带有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核101包含无序处理器核,而核102包含有序处理器核。然而,可以从任何类型的核,诸如原生核(native core)、软件管理的核、适于执行原生指令集合架构(ISA)的核、适于执行翻译的指令集合架构(ISA)的核、协同设计的核或其他已知的核,个别地选择核101和102。在异构核环境(即,不对称的核)中,翻译的某一形式(这样的二进制翻译)可以用于调度或执行在一个或两个核上的代码。尚待进一步讨论,以下进一步详细描述在核101中图解的功能单元,因为在描绘的实施例中,在核102中的单元以类似的方式操作。
如描绘的那样,核101包含两个硬件线程101a和101b,其还可以被称为硬件线程槽101a和101b。因此,软件实体(诸如,操作***)在一个实施例中可能把处理器100视作四个分离的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。如以上暗指的那样,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可以与架构状态寄存器102a相关联,并且第四线程可以与架构状态寄存器102b相关联。此处,如以上描述的那样,架构状态寄存器(101a、101b、102a和102b)中的每个可以被称为处理元件、线程槽或线程单元。如图解的那样,架构状态寄存器101a被复制在架构状态寄存器101b中,因此个别架构状态/语境能够针对逻辑处理器101a和逻辑处理器101b被储存。在核101中,其他更小的资源,诸如在分配器和重新命名器块130中的指令指针和重新命名逻辑,也可以被复制用于线程101a和101b。一些资源,诸如在重新排序/引退单元135中的重新排序缓冲器、ILTB 120、负载/储存缓冲器以及队列,可以通过划分来共享。其他资源,诸如通用内部寄存器、(一个或多个)页表基寄存器、低等级数据高速缓存和数据TLB 115、(一个或多个)执行单元140以及无序单元135的部分可能被完全共享。
处理器100经常包含其他资源,所述其他资源可以被完全共享、通过划分共享、或者由处理元件专用/专用于处理元件。在图1中,图解带有处理器的图解性逻辑单元/资源的纯示例性处理器的实施例。注意到处理器可以包含或省略这些功能单元中的任何功能单元,以及包含未描绘的任何其他已知的功能单元、逻辑或固件。如图解的那样,核101包含简化的代表性无序(OOO)处理器核。但是有序处理器可以被用在不同的实施例中。所述OOO核包含用来预测将被执行/采用的分支的分支目标缓冲器120和用来储存指令的地址翻译表项的指令翻译缓冲器(I-TLB)120。
核101进一步包含耦合到提取单元120以解码提取的元件的解码模块125。提取逻辑在一个实施例中包含分别与线程槽101a、101b相关联的个别的定序器。通常核101与第一ISA相关联,所述第一ISA限定/规定可在处理器100上执行的指令。经常,是第一ISA的部分的机器代码指令包含指令的部分(称为操作码),其参考/规定将被执行的指令或操作。解码逻辑125包含电路,所述电路从这些指令的操作码标识这些指令并且在管线中传递解码的指令用于如由第一ISA限定的那样处理。例如,如以下更详细讨论的那样,解码器125在一个实施例中包含设计为或适于标识特定指令(诸如,事务指令)的逻辑。作为由解码器125进行的标识的结果,架构或核101采用特定的、预定的动作来执行与适当的指令相关联的任务。注意到以下是重要的:响应于单个或多个指令可以执行在本文中描述的任务、块、操作和方法中的任何一个;所述多个指令中的一些可以是新的或旧的指令。注意到解码器126在一个实施例中标识相同的ISA(或其子集)。替选地,在异构核环境中,解码器126标识第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重新命名器块130包含分配器以保留资源,诸如用来储存指令处理结果的寄存器文件。然而,线程101a和101b可能能够无序执行,其中分配器和重新命名器块130还保留其他资源,诸如用来跟踪指令结果的重新排序缓冲器。单元130还可以包含寄存器重新命名器以把程序/指令参考寄存器重新命名为在处理器100内部的其他寄存器。重新排序/引退单元135包含部件,诸如以上提到的重新排序缓冲器、负载缓冲器和储存缓冲器,以支持无序执行以及对无序执行的指令的稍后有序引退。
调度器和执行单元(一个或多个)块140在一个实施例中包含调度器单元以调度在执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。与执行单元相关联的寄存器文件也被包含以储存信息指令处理结果。示例性执行单元包含浮点执行单元、整数执行单元、跳跃执行单元、加载执行单元、储存执行单元和其他已知的执行单元。
更低等级的数据高速缓存和数据翻译缓冲器(D-TLB)150被耦合到(一个或多个)执行单元140。数据高速缓存将储存最近在元件上使用/操作的诸如数据操作数,其可能被保持在存储器一致性状态中。D-TLB将储存最近虚拟/线性到物理地址翻译。作为特定的示例,处理器可以包含页表结构以把物理存储器分为多个虚拟页。
此处,核101和102共享到更高等级或更远(further-out)的高速缓存(诸如,与片上接口110相关联的第二等级高速缓存)的访问。注意到更高等级或更远指代从(一个或多个)执行单元增加或变得更远的高速缓存等级。在一个实施例中,更高等级高速缓存是最后等级数据高速缓存——在存储器100上的存储器层次中的最后高速缓存——诸如第二或第三等级数据高速缓存。然而,更高等级高速缓存不受如此限制,因为它可以与指令高速缓存相关联或包含指令高速缓存。踪迹高速缓存——一种类型的指令高速缓存——反而可以被耦合在解码器125之后以储存最近解码的踪迹。此处,指令可能指代宏指令(即,由解码器标识的普通指令),其可以解码成许多微指令(微操作)。
在描绘的配置中,处理器100还包含片上接口模块110。以往,存储器控制器(以下被更详细地描述)被包含在处理器100外部的计算***中。在这个情形下,片上接口11将与在处理器100外部的装置(诸如,***存储器175、芯片组(经常包含用来连接到存储器175的存储器控制器集线器以及用来连接***装置的I/O控制器集线器)、存储器控制器集线器、北桥或其他集成电路)通信。并且在这个情形中,总线105可以包含任何已知的互连,诸如多点分支总线(multi-drop bus)、点到点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差动总线以及GTL总线。
存储器175可以专用于处理器100或与在***中的其他装置共享。存储器175的类型的共同示例包含DRAM、SRAM、非易失性存储器(NV存储器)和其他已知储存器装置。注意到装置180可以包含耦合到存储器控制器集线器的图形加速器、处理器或卡、耦合到I/O控制器集线器的数据储存器、无线收发器、闪存装置、音频控制器、网络控制器或其他已知的装置。
然而最近,随着更多逻辑和装置正被集成在单个管芯(诸如,SOC)上,这些装置中的每个可以被并入在处理器100上。例如在一个实施例中,存储器控制器集线器与处理器100位于相同的封装和/或管芯上。此处,核的部分(核上部分)110包含用于与其他装置(诸如,存储器175或图形装置180)对接的一个或多个控制器。包含用于与这样的装置对接的控制器和互连的配置经常称为核上(或无核配置)。例如,片上接口110包含用于片上通信的环形互连和用于片外通信的高速串行点到点链接105。然而,在SOC环境中,甚至更多装置,诸如网络接口、协处理器、存储器175、图形处理器180以及任何其他已知的计算机装置/接口可以被集成在单个管芯或集成电路上以提供小形状因子与高功能性和低功率损耗。
在一个实施例中,处理器100能够执行编译器、优化和/或翻译器代码177以编译、翻译和/或优化应用代码176从而支持在本文中描述的方法和设备或者与其对接。编译器经常包含程序或一组程序以把源文本/代码翻译为目标文本/代码。通常,用编译器来对程序/应用代码的编译在多个阶段和轮回(run)中完成以把高级编程语言代码转换为低级机器或汇编语言代码。然而,单轮回编译器仍可以用于简单的编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,诸如词法分析、预处理、分解、语义分析、代码产生、代码转换和代码优化。
更大的编译器经常包含多个阶段,但是最经常,这些阶段被包含在两个大体的阶段之内:(1)前端,即一般在前端处可以发生语法处理、语义处理和某一转换/优化,以及(2)后端,即一般在后端处发生分析、转换、优化和代码产生。一些编译器涉及中间件(middle),所述中间件图解在编译器的前端与后端之间的划界的模糊。结果,对编译器的***、关联、产生或其他操作的参考可以发生在任何前述的阶段或轮回以及任何其他已知的编译器的阶段或轮回中。作为图解性的示例,编译器可能在编译的一个或多个阶段中***操作、调用、函数等,诸如在编译的前端阶段中的调用/操作的***以及然后在转换阶段期间的调用/操作到更低等级代码的转换。注意到在动态编译期间,编译器代码或动态优化代码可以***这样的操作/调用,以及优化代码用于在运行时间期间的执行。作为特定的图解性示例,在运行时间期间可以动态地优化二进制代码(已经编译的代码)。此处,程序代码可以包含动态优化代码、二进制代码或其组合。
与编译器相似,翻译器(诸如,二进制翻译器)静态地或动态地翻译代码以优化和/或翻译代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的参考可以指代:(1)(一个或多个)编译器程序、优化代码优化器或翻译器的动态或静态的执行以编译程序代码、以维持软件结构、以执行其他操作、以优化代码或者以翻译代码;(2)包含操作/调用的主要程序代码(诸如,被优化/编译了的应用代码)的执行;(3)与主要程序代码相关联的其他程序代码(诸如,库)的执行以维持软件结构、以执行其他软件有关的操作或者以优化代码;或者(4)其组合。
随着更大数量的核被集成到单个处理器或片上***(SoC)中,核互连和高速缓存存储器组织变成性能的一个决定因素。片上通信构造具有各种互连拓扑,诸如全环形和网状拓扑。在大多数通信构造中,每个互连站(interconnect stop)由核和局部最后等级高速缓存(LLC)部分或片段共享。这些LLC片段可以被动态可控地组织为针对单个核的私有高速缓存存储器或共享高速缓存存储器。在私有模式中,由核使用的数据被放置在它的局部LLC片段中并且访问延时是低的。但是在私有模式中,核仅能够访问LLC的小部分,并且一致性业务开销被引入,所述一致性业务开销可以占据无核互连带宽的显著的部分。在另一个方面,共享模式使得整个LLC对所有核可访问。然而,由于核的请求的数据能够位于远程节点的LLC片段中,访问延时能够是非常高的。
群组共享是在私有和共享模式之间的折衷模式。在群组共享模式中,LLC片段被组织成多个群组。群组的LLC片段在与这些片段相关联的核之间被共享,但是不同群组的LLC片段关于在给定群组外部的核是私有的。每个核能够访问相同群组的它的(一个或多个)相邻节点的LLC片段,并且在不同群组之间维持高速缓存一致性。当前,大多数群组共享模式由物理通信构造实施,所述物理通信构造不是灵活的和可伸缩的。相反,给定的分组在制造时被固定。此外,当前的群组共享模式不解决一致性业务问题。
实施例实现根据群组共享模式的共享高速缓存存储器的动态共享,其中节点的标识符(节点ID)被包含作为用来对LLC寻址的寻址方案的部分。例如,这个标识符能够被包含在LLC索引之内以实施群组共享LLC。进一步注意到,这个节点ID可以独立于用于标识给定节点的其他指示器,因为在本文中使用的节点ID对于***软件是透明的并且因此不同于核标识符、高级可编程中断控制器(APIC)ID、或由***的硬件或软件使用的其他标识符。进一步地,理解的是这个节点ID与节点和它的包含的部件(包含核和LLC片段)中的所有相关联。
使用节点标识符作为LLC散列索引算法的部分,LLC片段能够至少部分地基于它们的节点ID被分成数个群组。然后,单个群组的LLC片段在内部作为群组被共享,而在不同群组之间私有地被共享。而且在各种实施例中,分组模式能够是灵活的以基于各种性能特性,诸如工作负载运行时间剖析(profiling)(关于工作负载特性)、互连业务等,来动态调整群组中的一个或多个的大小。其他示例包含LLC访问/缺失率、高速缓存线的状态统计等。实施例还实现关于高速缓存一致性业务的节省。
为了更好理解在其中发生动态高速缓存分组的上下文,参考图2。在图2中,处理器200以高等级被图解。在不同的实施例中,处理器200可以采用例如形成在单个半导体管芯上的多核处理器的形式或者另一个类型的多核处理器。处理器200在另一个实施例中可以是也形成在单个半导体管芯上的SoC。
在图2中示出的高等级中,存在多个节点2100-210n。理解的是这样的节点的数量可以取决于实施例而变化。为了在本文中的讨论的目的,假设16个节点。当然,在其他实施例中可以存在更多或更少数量的个别的节点。节点在本文中同样被称为区片(tile),所述区片可以包含至少一个处理元件和高速缓存存储器层次中的一个或多个等级。在图2的实施例中,每个节点210包含处理器核和/或其他专用处理电路,诸如固定功能处理单元。在不同的实施例中,处理核可以是异构的或同构的。
此外,每个节点210包含高速缓存层次的至少部分。例如,在实施例中每个节点包含仅由局部核访问的私有高速缓存存储器。此外,每个节点还包含共享高速缓存存储器的部分,诸如LLC的部分。每个节点210进一步包含路由器205,所述路由器205被配置为实现经由互连构造220与处理器的其他元件的通信。在图2中示出的实施例中,互连构造220是二维网状互连。然而,理解的是反而可以存在不同类型的互连,所述不同类型的互连包含另一个类型的网状拓扑、环形拓扑、三维拓扑等。
在图2中示出的实施例中,每个节点210与节点标识符相关联,所述节点标识符唯一标识对应的节点。在本文中关于动态高速缓存分组布置描述这个节点ID产生和使用的细节。当然,虽然在图2的实施例中以这个高等级示出,但是理解的是也可以存在附加的电路。例如,为了便于在图2中图解而未示出包含与核操作无关的电路的处理器的无核部分。除了许多其他***装置以外,这样的电路还可以包含片外接口、功率控制机构。
作为处理器布置的进一步图解,现参考图3,图3是根据实施例的处理器的部分的框图。如在图3中示出的那样,处理器300以更详细的等级被示出。具体地,在图3的实施例中示出的是耦合到互连构造340的单个节点或区片310,所述互连构造340进而被耦合到高速缓存控制器350。理解的是,虽然高速缓存控制器350被示出为单个独立的电路,但是在其他实施例中所述高速缓存控制器能够遍及处理器的不同区片分布。
在图3的实施例中,区片310包含核315,所述核315在一些实施例中可以是多线程化处理器核。为了执行在本文中描述的动态高速缓存控制,核315具有核代理318,所述核代理318可以是硬件、软件、固件或其组合,包含逻辑以使用区片的节点ID来执行动态高速缓存寻址,所述区片的节点ID可以被储存在局部储存器319(诸如,寄存器)中。为了实现对请求的数据的快速访问,核315被耦合到将储存仅由核315使用的数据的私有高速缓存320。在另一个实施例中,私有高速缓存320可以在核315内部,并且多等级高速缓存层次的另一个等级可以耦合在核315与LLC之间。在图3中示出的实施例是多等级高速缓存层次,在所述多等级高速缓存层次中私有高速缓存320被耦合到LLC 325,所述LLC 325是包含在区片310中的分布式共享高速缓存存储器的个别部分。在动态操作中,LLC片段325可以被动态配置为仅对核315可访问的私有高速缓存,或者可以被动态配置为对组的多个核可访问的共享高速缓存。因此,在***操作期间动态地发生片段作为私有或共享的布置和操作的不同模式。
为实现与处理器300的其他部分的通信,区片310进一步包含路由器330,所述路由器330被配置为在区片310之内的部件与处理器300的其他区片和其他电路之间传送事务和其他信息。
仍参考图3,区片310经由互连构造340被耦合到高速缓存控制器350。一般地,高速缓存控制器350包含控制逻辑以控制至少分布式LLC的操作。为了这个目的,高速缓存控制器350包含动态分组逻辑355,所述动态分组逻辑355一般被配置为执行如在本文中描述的动态高速缓存片段分组。此外,高速缓存控制器350包含高速缓存一致性逻辑360,所述高速缓存一致性逻辑360可以被配置为执行高速缓存一致性操作以确保遍及处理器的数据视图保持一致性。高速缓存控制器350进一步包含访问请求产生器365,所述访问请求产生器365被配置为产生对于高速缓存存储器的不同部分的访问请求。如在本文中将被描述的那样,产生器365可以产生具有访问地址的访问请求,所述访问地址利用(leverage)在本文中描述的基于节点ID的寻址方案。节点映射表370可以包含针对每个节点的表项,该表项标识针对对应节点的当前的节点ID。理解的是尽管在图3的实施例中以这个高等级示出,但是本发明的范围在这点上不受限制。
在高速缓存存储器寻址方案之内包含节点标识符的不同方式可以在不同实施例中被实现。然而,为了图解的目的,在一个实施例中高速缓存片段的全局集合索引可以如下:
全局LLC集合索引=局部LLC集合索引+节点ID。
现参考图4A,示出的是根据实施例的共享高速缓存存储器的集合索引的框图。如图4A示出的那样,全局集合索引400由节点ID字段410和局部集合索引字段420组成。使用这些构成字段,产生全局集合索引400。这个集合地址(其对应于用于访问共享高速缓存存储器的一个或多个选择的部分的访问地址)的产生可以发生在高速缓存控制器的访问产生器或核的核代理中;然而在其他实施例中这个功能可以发生在不同的位置中。
如在图4A中示出的那样,LLC片段的全局集合索引等于节点ID与局部集合索引组合。这个集合寻址模式在共享模式的LLC片段组织中是有效的。
在实施例中,接收带有标签部分、具有log2(总集合数)的宽度的索引部分以及具有log2(块大小)的宽度的块偏移部分的请求地址。代替地,使用在本文中描述的群组寻址模式操作,访问请求地址包含标签部分、具有log2(总集合数/群组数)的宽度并且包含节点ID中的至少部分的索引部分以及具有log2(块大小)的宽度的偏移部分。
现参考图4B,示出的是根据本发明的实施例的使用全局集合索引产生的访问地址。更具体地,图4B示出由标签字段455、索引字段460以及偏移字段465组成的访问地址450。如看到的那样,索引字段460它本身由节点部分462和索引部分464组成。此外,节点部分462(其对应于节点ID)它本身由群组ID子字段463a和子节点ID子字段463b组成。因此在实施例中,节点ID可以由包含第一字段(用来储存群组ID)和第二字段(用来储存子节点ID)的构成部分组成。进而,索引部分464包含从存储器请求地址得到的索引信息。因此在特别的实施例中,节点ID它本身可以被分成2个部分:群组ID子字段和子节点ID子字段。
当然,虽然为了图解的目的示出这个特别的寻址方案,但是理解的是在不同实施例中动态寻址方案可以采用其他形式,因为不同的节点ID方案是可能的。
与传统LLC索引相比,请求地址对LLC索引贡献更少的位,并且节点ID贡献群组ID。如在图4B的实施例中看到的那样,节点ID形成LLC集合索引的剩余的最高有效部分。
把索引算法与全局LLC片段寻址模式组合,具有相同群组ID的节点形成群组以共享它们的LLC片段,而对现有通信构造没有任何改变。使用此处描述的索引算法,将被共享的LLC高速缓存片段的数量(在本文中称为群组数量)能够通过调整群组ID字段宽度而被改变。这样的改变可以例如由高速缓存控制器或其他控制逻辑基于动态操作条件来动态地执行。
进一步地,当群组ID子字段宽度是0时,LLC片段被切换到共享模式;并且当子节点ID子字段宽度是0时,所有LLC片段被动态地切换到私有。
实施例实现基于实时配置文件对高速缓存分组进行调整以匹配工作负载特性。例如,当群组数量降低时,每个核具有更大LLC容量并且更多数据能够被共享。作为代替,当LLC缺失业务是低的并且一致性业务是低的时,群组数量能够被增加,这导致数据被储存在请求器附近的LLC片段中以缩短访问延时。
因此,LLC分组模式能够被动态调整。进一步地,群组可以被布置使得群组由空间接近的LLC片段(在请求器附近)组成以缩短访问延时。实施例实现在无核通信构造效率中的基于工作负载的改进。此外,实施例针对不同LLC缺失率动态优化LLC组织。
实施例同样适用于其他群组共享模式。如果给定节点ID被分配在一个群组中,则相同节点ID被映射到在其他群组中的相同子节点(0),因为每个群组的LLC集合寻址模式是同样的。因此实施例可以进一步降低在群组之间的一致性业务。例如,当LLC片段的线被写入时,探测无效消息仅被发送到其他群组的带有相同子节点ID的节点,不是所有剩余节点,这节省无核互连带宽。
回去参考图2,在示出的实施例中16个核被分成4个群组,在所述4个群组中节点ID的最高有效的2个位被用作群组ID(并且更低有效的2个位是子节点ID)。在根据这个示例的每个群组中,4个核共享它们的LLC片段,这使得每个核能够访问更大的LLC容量。此外,群组的4个核是相邻的,这保证请求数据不被放置在远程节点上。此外,一致性业务仅发生在带有相同子节点ID(节点ID的最低有效的2个位)的节点之间,并且因此高速缓存一致性消息(诸如,探测/探听消息)仅被发送到至多3个目标节点。
如以上所描述的那样,群组的数量可以针对不同的工作负载被动态地调整以实现更好的性能。例如,如果在16个核上的工作负载共享小的占用空间(footprint)并且没有共享数据,则16个核能够被分成8个群组或甚至16个群组。作为替代,如果在16个核上的工作负载共享大的占用空间以及更多的数据,则16个核能够被分成2个群组或者甚至1个群组。照此,根据实施例的LLC索引算法以高灵活性以及低开销实现动态分组调整。
现参考图5,示出的是根据本发明的实施例的方法的流程图。具体地,图5示出用于选择群组寻址模式并且使用由选择的群组寻址模式所指示的寻址方案来处理高速缓存存储器事务的方法。在某些实施方式中,图5的各种部分可以由处理器的不同部件来执行,所述不同部件包含高速缓存控制器、在核之内的逻辑(诸如,核代理)以及还包含局部高速缓存电路(例如,局部高速缓存控制器)。
如在图5中看到的那样,方法500通过确定高速缓存存储器的群组寻址模式(块510)开始。这个确定可以基于静态的或动态的值。例如,在重置时对***上电时,可以基于例如如在基础输入/输出***(BIOS)或其他***软件之内指示的配置值来为LLC选择默认群组寻址模式。在一些实施方式中,BIOS可以储存并提供默认***值,从而指示共享LLC(以及可能地,群组数量)或者私有LLC片段的偏好。替选地或附加地,可以基于特别应用的执行来选择群组寻址模式的类型,因为某些应用可以创建对于私有高速缓存或共享高速缓存存储器布置更适当的工作负载。基于来自应用的先前执行的统计或其他信息,在应用启动时,LLC能够被适当地配置用于私有模式或共享模式(以及每个群组的节点的选择的数量)。
仍参考图5,基于在块510处的这个确定,控制接下来转到块520,其中节点ID可以被与每个高速缓存存储器部分相关联。在实施例中,中心控制逻辑(诸如,高速缓存控制器)可以为处理器的每个节点产生节点ID。这些节点ID可以被储存在高速缓存控制器的节点ID映射表中。此外,高速缓存控制器可以把节点ID传送到包含LLC片段和核的适当的电路。以这个方式,当产生事务时,这些部件理解***的布置。在这个点上,高速缓存被适当地配置用于操作。
仍参考图5,当在块530处接收进入的请求事务时,可以执行剩余的操作。响应于这个进入的请求事务(其可以(例如)从远程代理被接收在高速缓存控制器中),访问地址可以被产生(块540)。更具体地,在***的正常寻址方案中这个进入的请求事务包含请求地址(即,这个请求地址没有察觉到在本文中描述的基于节点ID的群组寻址)。因此,在块540处,能够产生使用这个进入的请求事务请求地址和节点标识符两者的访问地址。在实施例中,可以像在图4B中示出的地址那样产生访问地址。接下来在菱形550处,能够确定访问地址是否在第一高速缓存存储器部分中命中。如果是,则控制转到块555,其中从命中地址得到的请求的数据被返回到请求器。
否则,如果访问缺失发生在这个第一高速缓存存储器部分中,则控制反而转到块560,其中高速缓存一致性消息被产生并且被发送。更具体地,这个高速缓存一致性消息被发送到与第一高速缓存存储器部分具有共同子节点标识符的其他高速缓存存储器部分。注意到这个高速缓存一致性消息能够由不同部件(诸如,与第一高速缓存存储器部分相关联的局部控制逻辑)产生。替选地,能够向全局高速缓存控制器指示在第一高速缓存存储器部分中的缺失,所述全局高速缓存控制器进而产生高速缓存一致性业务。
仍参考图5,接下来能够在菱形570处确定高速缓存一致性消息的任何目标(即,具有相同子节点ID的其他高速缓存存储器部分)是否包含数据。如果是,在块575处,请求的数据可以被返回到请求器。否则,在块580处,请求消息能够被转发到存储器层次的进一步的部分(诸如,***存储器)以得到请求的数据(注意到在这个请求中的请求地址是原始请求而非基于节点ID的地址)。尽管在图5的实施例中以这个高等级来示出,理解本发明的范围在这点上不受限制。
现参考图6,示出的是根据本发明的实施例的用于动态控制高速缓存存储器的方法的流程图。如在图6中看到的那样,方法600可以用于动态地控制高速缓存存储器布置为共享或私有模式并且在实施例中可以由全局高速缓存控制器执行。
方法600通过接收关于工作负载特性和互连业务的性能度量信息(块610)而开始。在实施例中,这样的工作负载特性包含大的或小的占用空间,和/或共享或私有数据集合。在实施例中,性能信息包含LLC访问率、LLC缺失率、高速缓存线的状态统计。在实施例中,性能度量信息可以由一个或多个核例如从这样的核的性能监视单元接收。进而,可以从互连控制逻辑接收互连业务信息。
可以至少部分地基于这个信息确定分组模式(块620)。例如,如果互连业务是低的并且工作负载是私有的小的数据占用空间,则高速缓存控制器可以被配置为选择在每个群组中带有相对小量节点(例如2个)的群组模式。作为代替,如果互连业务是高的并且工作负载是共享的大的数据占用空间性能工作负载,则可以建立在每个群组中带有更大数量的节点(例如4个或更多)的群组模式。替选地,基于指示大部分核仅需要小的LLC容量的剖析信息,可以配置私有模式。在私有模式中,核的请求的数据可以被高速缓存在局部LLC片段中以减少访问延时并且节省用于在互连结构上的数据转移的功率。
仍参考图6,接下来在菱形630处确定这个分组模式是否是从当前分组模式改变。如果不是,不采用进一步的动作。否则在对群组寻址模式改变时,控制转到块640,其中高速缓存存储器可以被清除。即,因为将进行使用不同的寻址方案,高速缓存存储器被清除以确保不发生矛盾或不一致性。
然后在块650处,可以基于分组模式动态更新节点ID。在实施例中,这个更新包含更新在高速缓存控制器中的节点ID映射表并且把新的节点ID传送到各种节点它们本身(块660),其中值可以被储存在节点的易失性储存器中(例如,在高速缓存逻辑或核代理之内),以便它们能够用于产生高速缓存访问地址。尽管在图6的实施例中以这个高等级示出,但是理解本发明的范围在这点上不受限制。
接下来转向图7,描绘根据实施例的片上***(SOC)设计的实施例。作为特定的图解性示例,SOC 2000被包含在用户设备(UE)中。在一个实施例中,UE指代将由终端用户用来通信的任何装置,诸如手持电话、智能电话、手写板、超薄笔记本、带有宽带适配器的笔记本或任何其他类似的通信装置。经常UE连接到基站或节点,所述基站或节点在本质上可能对应于在GSM网络中的移动站(MS)。
此处,SOC 2000包含2个核——2006和2007。类似于以上的讨论,核2006和2007可以符合指令集合架构,诸如基于Intel® Architecture CoreTM的处理器、超微半导体公司(Advanced Micro Device, AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户以及它们的被许可方或接纳者。核2006和2007被耦合到高速缓存控制2008,所述高速缓存控制2008与总线接口单元2009和L2高速缓存2010相关联以与***2000的其他部分通信。互连2010包含片上互连(诸如,IOSF、AMBA或以上讨论的其他互连),所述片上互连可能实施在本文中描述的一个或多个方面。
互连2010提供到其他部件的通信通道,所述其他部件诸如用来与SIM卡对接的用户标识模块(SIM)2030、用来保持用于由核2006和2007执行以初始化和引导SOC 2000的引导代码的引导ROM 2035、用来与外部存储器(例如,DRAM 2060)对接的SDRAM控制器2040、用来与非易失性存储器(例如,闪存2065)对接的闪存控制器2045、用来与***设备对接的***控制器2050(例如,串行***接口)、用来显示和接收输入(例如,触摸使能输入)的视频编解码器2020和视频接口2025、用来执行图像有关的计算的GPU 2015等。这些接口中的任何一个可以并入在本文中描述的方面。
此外,***图解用于通信的***设备,诸如蓝牙模块2070、3G调制解调器2075、GPS2080以及WiFi 2085。也包含在***中的是功率控制器2055。注意如以上所声明的那样,UE包含用于通信的无线电设备。结果,这些***通信模块不都是需要的。然而,在UE某一形式中,用于外部通信的无线电设备将被包含。
下面的示例关于进一步实施例。在一个示例中,设备包含高速缓存存储器的将与第一核相关联的第一部分,其中第一高速缓存存储器部分将是分布式高速缓存存储器的部分并且将根据寻址模式被动态地控制为用于第一核的私有高速缓存存储器和由包含第一核的多个核共享的共享高速缓存存储器中的一个。
在实施例中,高速缓存控制器将动态地控制第一高速缓存存储器部分。高速缓存控制器可以至少部分基于在第一核上执行的工作负载来动态地控制第一高速缓存存储器部分,并且进一步地,高速缓存控制器可以动态地修改寻址模式。高速缓存控制器可以接收与请求一起的请求地址,并且使用与第一核相关联的节点标识符和请求地址来产生用来访问第一高速缓存存储器部分的地址。在实施例中,地址包括标签部分、包含节点标识符和请求地址的部分的索引部分、以及偏移部分。节点标识符在实施例中包含用来标识包含第一核的核的群组的群组标识符和用来标识第一核的子节点标识符,其中节点标识符是唯一的数而群组标识符和子节点标识符是非唯一的数。
当第一高速缓存存储器部分被配置处于共享高速缓存存储器模式时,高速缓存控制器可以发送高速缓存一致性消息仅到多个核中的与第一核具有共同子节点标识符的核。并且,高速缓存控制器可以动态调整群组标识符以动态控制第一高速缓存存储器部分为私有高速缓存存储器和共享高速缓存存储器中的一个。在实施例中,基于动态控制,群组标识符的宽度和子节点标识符的宽度是可变的。而且,当第一高速缓存存储器部分从私有高速缓存存储器改变为共享高速缓存存储器时,高速缓存控制器可以动态改变包含第一核和第一高速缓存存储器部分的第一节点的节点标识符。
在另一个示例中,SoC包括:多个节点,每个节点用来与节点标识符相关联并且包含至少一个核和至少一个高速缓存片段;以及控制逻辑,用来接收性能度量信息,至少部分基于性能度量信息来确定将由多个节点中的每个的高速缓存部分组成的高速缓存存储器的分组模式,并且用来响应于在分组模式中的改变来动态地改变多个节点中的至少某个的节点标识符。控制逻辑可以响应于在分组模式中的改变而清除高速缓存存储器,并且节点标识符对于***软件可以是透明的。在实施例中,至少一个高速缓存部分在第一分组模式中将是用于至少一个核的私有高速缓存,并且在第二分组模式中将是共享高速缓存。
在一个示例中,控制逻辑将在性能度量信息指示大于第一阈值的缺失率时确定分组模式为第二分组模式,其中多个节点中的N个将用共享高速缓存操作;并且将在性能度量信息指示小于第一阈值的缺失率时确定分组模式为第二分组模式,其中多个节点中的M个将用共享高速缓存操作,其中N小于M。
在实施例中,在第二分组模式中,节点的第一群组将共享节点的第一群组中的每个的至少一个高速缓存部分。分布式高速缓存存储器可以包含多个节点中的每个的至少一个高速缓存部分,其中多个节点中的每个的至少一个高速缓存部分被动态地控制为至少一个核的私有高速缓存存储器和由多个节点中的一些共享的共享高速缓存存储器中的一个。
在实施例中,控制逻辑将接收与请求一起的请求地址,并且将使用与包含第一高速缓存部分的第一节点相关联的节点标识符和请求地址来产生用来访问第一高速缓存部分的地址。所述地址包括标签部分、包含节点标识符和请求地址的部分的索引部分以及偏移部分,并且节点标识符包含用来标识节点的群组的群组标识符和用来标识第一节点的子节点标识符,其中节点标识符是唯一的数而群组标识符和子节点标识符是非唯一的数。
在另一个示例中,方法包括:在包含多个节点的***中接收进入的请求事务;使用进入的请求事务的请求地址和包含第一核和LLC的第一部分的第一节点的节点标识符来产生访问地址,其中当LLC的群组寻址模式改变时节点标识符被动态地改变;以及使用访问地址来访问LLC的第一部分。
在一个示例中,方法进一步包括至少部分基于性能度量信息和***配置信息中的一个或多个来确定LLC的群组寻址模式。响应于群组寻址模式改变,方法包含把节点标识符与LLC的每个部分相关联并且把节点标识符传送到每个对应的节点,其中节点标识符包含群组标识符和子节点标识符。并且方法可以进一步包含产生包含用来标识包含第一节点的节点的群组的群组标识符和用来标识第一节点的子节点标识符的访问地址,其中节点标识符是唯一的数,而群组标识符和子节点标识符是非唯一的数。方法还可以包含:响应于在第一LLC部分中的缺失,产生高速缓存一致性消息并且把所述高速缓存一致性消息发送到与第一节点具有相同子节点标识符的其他LLC部分。在实施例中,响应于对群组寻址模式的改变,高速缓存存储器可以被清除。
在另一个示例中,包含指令的计算机可读媒介将执行任何以上示例中的方法。
在另一个示例中,设备包括用于执行以上示例中的任何一个的方法的装置。
根据另一个示例,***包括:包含多个节点和控制器的处理器,每个节点具有至少一个核和分布式高速缓存存储器的部分,所述控制器用来至少部分地基于分布式高速缓存存储器的分组模式来动态更新多个节点中的每个的节点标识符。所述***可以进一步包含耦合到处理器的DRAM。在示例中,控制器将动态控制分布式高速缓存存储器中的每个部分在第一分组模式中为共享高速缓存存储器的部分,并且在第二分组模式中为私有高速缓存存储器。控制器可以接收与请求一起的请求地址以访问第一分布式高速缓存存储器部分,并且以使用与包含第一分布式高速缓存存储器部分的第一节点相关联的节点标识符和请求地址来产生用来访问第一分布式高速缓存存储器部分的地址,所述地址包含标签部分、包含节点标识符和请求地址的部分的索引部分以及偏移部分。
注意到能够使用各种手段来实施以上处理器。
在示例中,处理器包括并入在用户装备触摸使能装置中的SoC。
在另一个示例中,***包括显示器和存储器,并且包含以上示例中的一个或多个的处理器。
在又一个示例中,设备包括:包含第一高速缓存片段和第一核的第一节点;包含第二高速缓存片段和第二核的第二节点;以及控制逻辑,用来基于第一和第二节点的共同节点标识符来把第一高速缓存片段和第二高速缓存片段包含在第一群组中。控制逻辑进一步用来基于第一节点和第二节点的不同的节点标识符来把第一高速缓存片段包含在第一群组中并且把第二高速缓存片段包含在关于第一群组是私有的第二群组中。在实施例中,控制逻辑将基于性能在共同节点标识符与不同的节点标识符之间动态地改变。
理解的是以上示例中的各种组合是可能的。
实施例可以用于许多不同类型的***中。例如,在一个实施例中,通信装置能够被布置成执行在本文中描述的各种方法和技术。当然,本发明的范围不限于通信装置,并且作为代替,其他实施例能够涉及用于处理指令的其他类型的设备或者包含指令的一个或多个机器可读媒介,所述指令响应于被在计算装置上执行而导致所述装置完成在本文中描述的方法和技术中的一个或多个。
实施例可以以代码被实施并且可以被储存在非暂时性储存器媒介上,所述非暂时性储存器媒介在其上储存有指令,所述非暂时性储存器媒介能够用于编程***以执行所述指令。储存器媒介可以包含但不限于以下各项:任何类型的磁盘(包含软磁盘、光学磁盘、固态驱动(SSD)、压缩磁盘只读存储器(CD - ROM)、压缩磁盘可再写器(CD - RW)、以及磁光学磁盘)、半导体装置诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存存储器、电可擦除可编程只读存储器(EEPROM)、磁或光学卡、或者适于储存电子指令的任何其他类型的媒介。
虽然本发明关于有限数量的实施例进行了描述,但是本领域的技术人员将领会来自所述实施例的许多修改和变化。旨在所附的权利要求覆盖如落在本发明的真实精神和范围之内的所有这样的修改和变化。
Claims (26)
1.一种用于控制高速缓存存储器的设备,包括:
高速缓存存储器的与第一核相关联的第一部分,第一高速缓存存储器部分是分布式高速缓存存储器的一部分,其中根据寻址模式,所述第一高速缓存存储器部分被动态地控制为用于所述第一核的私有高速缓存存储器和由包含所述第一核的多个核共享的共享高速缓存存储器中的一个;以及
高速缓存控制器,用来动态地控制所述第一高速缓存存储器部分,
其中所述高速缓存控制器用来:接收性能度量信息,至少部分基于所述性能度量信息来确定所述分布式高速缓存存储器的分组模式,并且响应于所述分组模式的改变来动态地改变各自包括所述分布式高速缓存存储器的一部分的多个节点中的至少某个的节点标识符。
2.根据权利要求1所述的设备,其中所述高速缓存控制器将至少部分基于在所述第一核上执行的工作负载来动态控制所述第一高速缓存存储器部分。
3.根据权利要求1所述的设备,其中所述高速缓存控制器将动态修改所述寻址模式。
4.根据权利要求3所述的设备,其中所述高速缓存控制器将接收与请求一起的请求地址,并且将使用与所述第一核相关联的节点标识符和所述请求地址来产生用来访问所述第一高速缓存存储器部分的地址。
5.根据权利要求4所述的设备,其中所述地址包括标签部分、包含所述节点标识符和所述请求地址的部分的索引部分、以及偏移部分。
6.根据权利要求4所述的设备,其中所述节点标识符包含用来标识包含所述第一核的核的群组的群组标识符和用来标识所述第一核的子节点标识符,其中所述节点标识符是唯一的数而所述群组标识符和所述子节点标识符是非唯一的数。
7.根据权利要求6所述的设备,其中当所述第一高速缓存存储器部分被配置处于共享高速缓存存储器模式时,所述高速缓存控制器将发送高速缓存一致性消息仅到所述多个核中的与所述第一核具有共同子节点标识符的核。
8.根据权利要求6所述的设备,其中所述高速缓存控制器将动态调整所述群组标识符以动态控制所述第一高速缓存存储器部分为所述私有高速缓存存储器和所述共享高速缓存存储器中的一个。
9.根据权利要求8所述的设备,其中基于所述动态控制,所述群组标识符的宽度和所述子节点标识符的宽度是可变的。
10.根据权利要求8所述的设备,其中当所述第一高速缓存存储器部分从所述私有高速缓存存储器被改变为所述共享高速缓存存储器时,所述高速缓存控制器将动态改变包含所述第一核和所述第一高速缓存存储器部分的第一节点的节点标识符。
11.一种具有动态可控高速缓存存储器的片上***SoC,包括:
多个节点,每个节点具有节点标识符并且包含至少一个核和至少一个高速缓存部分;以及
控制装置,用来:接收性能度量信息,至少部分基于所述性能度量信息来确定由所述多个节点中的每个的高速缓存部分组成的高速缓存存储器的分组模式,并且用来响应于所述分组模式的改变来动态地改变所述多个节点中的至少某个的节点标识符。
12.根据权利要求11所述的SoC,其中所述控制装置将响应于所述分组模式的改变来清除所述高速缓存存储器。
13.根据权利要求11所述的SoC,其中所述节点标识符对于***软件是透明的。
14.根据权利要求11所述的SoC,其中所述至少一个高速缓存部分在第一分组模式中将是用于所述至少一个核的私有高速缓存,并且在第二分组模式中将是共享高速缓存。
15.根据权利要求14所述的SoC,其中所述控制装置将在所述性能度量信息指示大于第一阈值的缺失率时确定所述分组模式为所述第二分组模式,其中所述多个节点中的N个将用所述共享高速缓存操作;并且将在所述性能度量信息指示小于所述第一阈值的缺失率时确定所述分组模式为所述第二分组模式,其中所述多个节点中的M个将用所述共享高速缓存操作,其中N小于M。
16.根据权利要求15所述的SoC,其中在所述第二分组模式中,第一群组的节点将共享所述第一群组的节点中的每个的所述至少一个高速缓存部分。
17.根据权利要求11所述的SoC,进一步包括:包含所述多个节点中的每个的所述至少一个高速缓存部分的分布式高速缓存存储器,其中所述多个节点中的每个的所述至少一个高速缓存部分被动态地控制为所述至少一个核的私有高速缓存存储器和由所述多个节点中的一些共享的共享高速缓存存储器中的一个。
18.根据权利要求11所述的SoC,其中所述控制装置将接收与请求一起的请求地址,并且将使用与包含第一高速缓存部分的第一节点相关联的节点标识符和所述请求地址来产生用来访问所述第一高速缓存部分的地址。
19.根据权利要求18所述的SoC,其中所述地址包括标签部分、包含所述节点标识符和所述请求地址的部分的索引部分、以及偏移部分,并且其中所述节点标识符包含用来标识节点的群组的群组标识符和用来标识所述第一节点的子节点标识符,其中所述节点标识符是唯一的数而所述群组标识符和所述子节点标识符是非唯一的数。
20.一种用于访问最后等级高速缓存LLC的方法,包括:
在包含多个节点的***中接收进入的请求事务;
使用所述进入的请求事务的请求地址和包含第一核和最后等级高速缓存LLC的第一部分的第一节点的节点标识符来产生访问地址,其中当所述LLC的群组寻址模式在私有高速缓存存储器模式与共享高速缓存存储器模式之间改变时所述节点标识符被动态地改变,至少部分基于性能度量信息来确定所述LLC的所述群组寻址模式;以及
使用所述访问地址来访问所述LLC的所述第一部分。
21.根据权利要求20所述的方法,进一步包括至少部分基于***配置信息来确定所述LLC的所述群组寻址模式。
22.根据权利要求20所述的方法,进一步包括响应于群组寻址模式改变,把节点标识符与所述LLC的每个部分相关联并且把所述节点标识符传送到每个对应的节点,其中所述节点标识符包含群组标识符和子节点标识符,其中所述节点标识符是唯一的数,而所述群组标识符和所述子节点标识符是非唯一的数。
23.一种机器可读媒介,包含代码,所述代码当被执行时导致机器执行权利要求20-22中的任何一个的方法。
24.一种用于访问最后等级高速缓存LLC的装置,包括:
用于在包含多个节点的***中接收进入的请求事务的部件;
用于使用所述进入的请求事务的请求地址和包含第一核和最后等级高速缓存LLC的第一部分的第一节点的节点标识符来产生访问地址的部件,其中当所述LLC的群组寻址模式在私有高速缓存存储器模式与共享高速缓存存储器模式之间改变时所述节点标识符被动态地改变,至少部分基于性能度量信息来确定所述LLC的所述群组寻址模式;以及
用于使用所述访问地址来访问所述LLC的所述第一部分的部件。
25.根据权利要求24所述的装置,进一步包括用于至少部分基于***配置信息来确定所述LLC的所述群组寻址模式的部件。
26.根据权利要求24所述的装置,进一步包括用于响应于群组寻址模式改变,把节点标识符与所述LLC的每个部分相关联并且把所述节点标识符传送到每个对应的节点的部件,其中所述节点标识符包含群组标识符和子节点标识符,其中所述节点标识符是唯一的数,而所述群组标识符和所述子节点标识符是非唯一的数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/086281 WO2015062006A1 (en) | 2013-10-31 | 2013-10-31 | A method, apparatus and system for dynamically controlling an addressing mode for a cache memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105579978A CN105579978A (zh) | 2016-05-11 |
CN105579978B true CN105579978B (zh) | 2020-06-09 |
Family
ID=52996789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380079946.5A Active CN105579978B (zh) | 2013-10-31 | 2013-10-31 | 用于动态控制高速缓存存储器的寻址模式的方法、设备和*** |
Country Status (5)
Country | Link |
---|---|
US (1) | US9836400B2 (zh) |
EP (1) | EP3063637A4 (zh) |
KR (1) | KR101815171B1 (zh) |
CN (1) | CN105579978B (zh) |
WO (1) | WO2015062006A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411532B2 (en) * | 2001-09-07 | 2016-08-09 | Pact Xpp Technologies Ag | Methods and systems for transferring data between a processing device and external devices |
US10664751B2 (en) * | 2016-12-01 | 2020-05-26 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either cache memory or neural network unit memory |
US10536334B2 (en) | 2016-01-28 | 2020-01-14 | Oracle International Corporation | System and method for supporting subnet number aliasing in a high performance computing environment |
US10374926B2 (en) | 2016-01-28 | 2019-08-06 | Oracle International Corporation | System and method for monitoring logical network traffic flows using a ternary content addressable memory in a high performance computing environment |
KR102440948B1 (ko) * | 2016-02-11 | 2022-09-05 | 삼성전자주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
CN108604199B (zh) * | 2016-08-23 | 2022-08-23 | 甲骨文国际公司 | 计算环境中支持快速混合重新配置的***和方法、介质 |
US10430706B2 (en) * | 2016-12-01 | 2019-10-01 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either last level cache slice or neural network unit memory |
US10621090B2 (en) * | 2017-01-12 | 2020-04-14 | International Business Machines Corporation | Facility for extending exclusive hold of a cache line in private cache |
US10223085B2 (en) * | 2017-04-28 | 2019-03-05 | International Business Machines Corporation | Discovering high-level language data structures from assembler code |
US10482024B2 (en) * | 2017-07-20 | 2019-11-19 | Alibaba Group Holding Limited | Private caching for thread local storage data access |
US10417161B2 (en) * | 2018-01-26 | 2019-09-17 | Qualcomm Incorporated | Efficient technique for communicating between devices over a multi-drop bus |
US20210191777A1 (en) * | 2018-06-21 | 2021-06-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Memory Allocation in a Hierarchical Memory System |
US10776266B2 (en) * | 2018-11-07 | 2020-09-15 | Arm Limited | Apparatus and method of modification of stored data |
CN115114192B (zh) * | 2021-03-23 | 2024-06-14 | 北京灵汐科技有限公司 | 存储器接口、功能核、众核***和存储数据访问方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7853755B1 (en) * | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020016891A1 (en) * | 1998-06-10 | 2002-02-07 | Karen L. Noel | Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory |
US6457107B1 (en) * | 2000-02-28 | 2002-09-24 | International Business Machines Corporation | Method and apparatus for reducing false sharing in a distributed computing environment |
US6754776B2 (en) * | 2001-05-17 | 2004-06-22 | Fujitsu Limited | Method and system for logical partitioning of cache memory structures in a partitoned computer system |
US7571285B2 (en) * | 2006-07-21 | 2009-08-04 | Intel Corporation | Data classification in shared cache of multiple-core processor |
WO2012077400A1 (ja) * | 2010-12-09 | 2012-06-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチコアシステム、及びそのコアのデータ読み出し方法 |
US9158693B2 (en) * | 2011-10-31 | 2015-10-13 | Intel Corporation | Dynamically controlling cache size to maximize energy efficiency |
CN103235764B (zh) | 2013-04-11 | 2016-01-20 | 浙江大学 | 线程感知多核数据预取自调方法 |
-
2013
- 2013-10-31 CN CN201380079946.5A patent/CN105579978B/zh active Active
- 2013-10-31 WO PCT/CN2013/086281 patent/WO2015062006A1/en active Application Filing
- 2013-10-31 KR KR1020167007870A patent/KR101815171B1/ko active IP Right Grant
- 2013-10-31 US US14/126,921 patent/US9836400B2/en not_active Expired - Fee Related
- 2013-10-31 EP EP13896764.1A patent/EP3063637A4/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7853755B1 (en) * | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
Also Published As
Publication number | Publication date |
---|---|
EP3063637A4 (en) | 2017-07-19 |
CN105579978A (zh) | 2016-05-11 |
US20150120998A1 (en) | 2015-04-30 |
KR20160046892A (ko) | 2016-04-29 |
WO2015062006A1 (en) | 2015-05-07 |
KR101815171B1 (ko) | 2018-01-04 |
EP3063637A1 (en) | 2016-09-07 |
US9836400B2 (en) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105579978B (zh) | 用于动态控制高速缓存存储器的寻址模式的方法、设备和*** | |
US20150169453A1 (en) | Method, apparatus and system for performing management component transport protocol (mctp) communications with a universal serial bus (usb) device | |
US9767026B2 (en) | Providing snoop filtering associated with a data buffer | |
US10162770B2 (en) | Virtual machine migration in rack scale systems | |
US9405687B2 (en) | Method, apparatus and system for handling cache misses in a processor | |
CN107667358B (zh) | 用于在多个拓扑结构中使用的装置及其方法 | |
US8589629B2 (en) | Method for way allocation and way locking in a cache | |
US20170364133A1 (en) | Method, Apparatus, And System For Energy Efficiency And Energy Conservation Including Power And Performance Balancing Between Multiple Processing Elements And/Or A Communication Bus | |
US9940238B2 (en) | Changing cache ownership in clustered multiprocessor | |
EP3274860B1 (en) | A method, apparatus and system for optimizing cache memory transaction handling in a processor | |
JP6321194B2 (ja) | リンクインタフェースの使用されていないハードウェアの電力消費を制御するための方法、装置及びシステム | |
US20140173203A1 (en) | Block Memory Engine | |
US9158702B2 (en) | Apparatus and method for implementing a scratchpad memory using priority hint | |
US20190004970A1 (en) | Method and system for leveraging non-uniform miss penality in cache replacement policy to improve processor performance and power | |
EP3234783B1 (en) | Pointer chasing across distributed memory | |
WO2017172220A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
US9189296B2 (en) | Caching agent for deadlock prevention in a processor by allowing requests that do not deplete available coherence resources | |
US20140281276A1 (en) | Method, apparatus, and system for low latency communication | |
CN112433963B (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 |