CN103874988A - 对高速缓存进行可编程分区 - Google Patents
对高速缓存进行可编程分区 Download PDFInfo
- Publication number
- CN103874988A CN103874988A CN201180073218.4A CN201180073218A CN103874988A CN 103874988 A CN103874988 A CN 103874988A CN 201180073218 A CN201180073218 A CN 201180073218A CN 103874988 A CN103874988 A CN 103874988A
- Authority
- CN
- China
- Prior art keywords
- cache
- speed cache
- agency
- assigned
- subregion
- 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
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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
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
技术领域
本发明通常涉及电子设备中存储器的使用,并且尤其涉及与处理器连接的存储器的使用。
背景技术
处理器可以使用高速缓存来存储被频繁地重复使用的资料。通过将被频繁地重复使用的信息存储在高速缓存中,可以更加快速地存取该信息。
在现代处理器中,翻译后援缓冲器(TLB,translation lookaside buffer)存储从虚拟地址到物理地址的地址转换。这些地址转换由操作系统生成并且存储在页表数据结构内的存储器中,用于填入该翻译后援缓冲器。
附图说明
图1是对于本发明一个实施例的系统描述;
图2是根据本发明一个实施例的高速缓存分区的示意性描述;
图3是根据本发明一个实施例的高速缓存分区指派和置换(replacement)算法的示意性描述;并且
图4是对于本发明一个实施例的流程图。
具体实施方式
根据一些实施例,可以将高速缓存划分为可以被可编程地配置的可寻址分区。高速缓存尺寸可以被可编程地配置,到高速缓存内的特定分区的代理的指派也是如此。此外,可以可编程地确定两个或更多个代理是否被指派以便在任意时间段使用相同的高速缓存分区。
按照这一方式,可以在一些实施例中实现可用高速缓存空间的更加有效的利用。这可以产生来自高速缓存的信息的更加有效率的存取,在一些情况下,这可以改善存取时间并且可以改善能够存储在高速缓存内的信息的量。
高速缓存的分区的编程可以静态地进行,原因在于,其可以从开始被设置并且不会改变。分区也可以动态地进行,在相关联的处理器或控制器的操作期间,可编程地调整到改变的条件。
尽管下面的示例参照翻译后援缓冲器,但是本发明可应用于由处理器使用的各种高速缓存。在其中多个客户端或代理请求到高速缓存的存取的任意情况下,按照可编程的方式对高速缓存进行分区可以防止客户端彼此攻击(shrashing)以便存取该高速缓存。
如本文使用的,“代理”可以是存储或者取回高速缓存中的代码或数据的代码或硬件。
在一些实施例中,高速缓存可以是完全相关联的。然而,在其它实施例中,高速缓存可以是具有高级别的关联性的任意高速缓存。例如,具有高于4路关联性的关联性的高速缓存可以更多地得益于本发明的一些方面。
将图1中示出的高速缓存230说明为翻译后援缓冲器,但是本发明决不局限于翻译后援缓冲器,并且可应用于一般的高速缓存。
图1中示出的系统可以是台式机或移动设备。例如,提到一些示例,该系统可以是膝上型计算机、平板电脑、移动互联网设备(MID)或者智能电话。
核心210可以是任意处理器、控制器或者甚至是直接存储器存取(DMA)控制器核心。核心210可以包括存储器260,其可以存储用于控制翻译后援缓冲器230内的分区的编程的软件。在其它实施例中,可以将编程存储在核心的外部。在实施例中,核心也可以与标记高速缓存238(tagcache)进行通信,该标记高速缓存238使用所存储的内核可存取比特,该内核可存取比特包括对于存储器的每一页的状态信息或元数据。连接到翻译后援缓冲器和标记高速缓存的是翻译后援缓冲器未命中处理逻辑240,该翻译后援缓冲器未命中处理逻辑240依次耦接到存储器控制器245和诸如系统存储器的主存储器250。
核心可以请求主存储器250的特定页中的信息。因此,核心210可以向翻译后援缓冲器230和标记高速缓存238提供地址。如果在翻译后援缓冲器230中不存在相对应的物理到虚拟转换,则可以向未命中处理逻辑240指示并且提供翻译后援缓冲器未命中。逻辑240依次可以向存储器控制器245提供所请求的地址,以便使页表条目能够载入到翻译后援缓冲器230中。如果所请求的地址没有命中标记高速缓存中的标记高速缓存条目,则可以使用类似的方法,因为可以经过未命中处理逻辑240和存储器控制器245来做出请求,以便从主存储器250中的其专用存储器获得标记信息并且提供该标记信息用于在标记高速缓存238中进行存储。
如图2所示,可以对高速缓存238进行分区。在这一示例中,存在四个代理,代理A-D。在其它实施例中可以包含任意数量的代理。在这一示例中,将最低高速缓存(即,具有较低编号地址的高速缓存)指派给代理A和B,将中间高速缓存指派给代理C,并且将顶部高速缓存指派给代理D。在这一示例中,使用被称作LRA0、LRA1、LRA2、最小和最大的最小地址和最大地址来定义分区。在一个实施例中,分区的底部和顶部高速缓存行可以由对于每一个分区的地址来识别。
尽管给出了其中基于高速缓存行地址来将高速缓存划分为分区或部分的示例,但是也可以基于包括块、块的集合以及传统分区的存储器的其它粒度来对高速缓存进行分区。
因而,在图2中说明的示例中,每一个分区的尺寸可以由其最小地址和最大地址来定义。同样,可以可编程地确定到分区的代理的指派。最后,可以可编程地确定是否使用重叠(其中将多于一个代理指派到相同的分区)。
例如,关于重叠,可以确定两个或者更多个代理是否可能同时使用分区。如果为是,则将代理指派到不同的分区会更加有效。然而,如果代理可能在不同的时间使用分区,则如果将相同的代理指派到相同的分区,则更加有效地分配分区的使用率。也可以使用用于向分区指派或者不指派重叠代理的其它原理。
此外,不同的代理可以提供有具有不同的可编程尺寸的分区。对分区尺寸进行编程可以进行多方面考虑,包括关于多少高速缓存空间由特定代理或者特定代理类型使用的已知关系。而且,在分区使用期间可以动态地调整分区的尺寸。例如,基于高速缓存行存储的速率,可以分配更多的行。同样,基于在处理期间可能存在的各种条件,可以向分区动态地重新指派代理,并且可以动态地应用或者解除重叠。
分区也可以按照其它方式重叠。例如,代理A可以使用分区的可用条目的一半,代理B可以使用另一半,并且代理C可以使用全部条目。在这一情况下,分区在两个代理之间分开,这两个代理中的每一个使用分区的一部分,而另一代理与这两个代理中的每一个重叠。为了实现这样的布置,将LRAA映射到较低的一半,将LRAB映射到较高的一半,并且将LRAC映射到整个分区,与区域A和B重叠。如果代理A和B同时是活动的,而代理C在不同的时间是活动的,则这一映射类型会是有用的。
参照图3,根据一些实施例,描述了用于将代理指派到高速缓存分区的算法以及高速缓存置换策略。在一些实施例中,可以使用最近最少分配(LRA)高速缓存置换策略。
在右上角(在10),可以将代理可编程地指派到高速缓存分区。这可以通过指派标记有LRA并且后面跟着编号以及最小和最大地址的最小和最大地址来进行。因而,在方框20处指派用于由代理A使用的分区,在方框22处指派用于由代理B使用的分区,在方框24处指派用于由代理C使用的分区,并且在方框26处指派用于由代理D使用的分区。
将代理选择输入(例如,使用LRA2)提供到复用器28以便选择要被服务的特定代理。然后,当该特定代理当前正在被服务时,激活被指派到该代理的方框50、52或者54。因而,在一个实施例中,如在图2中说明的,如果将代理D指派到LRA2,则可以激活标记为“使用LRA2”的行以便激活方框54,同时方框50和52是不活动的。
方框50、52和54中的每一个可以按照其它方式同样地工作。在方框54的情况下,每一个方框采取诸如LRA2min和LRA2max的最小地址和最大地址,并且,在每次使用该方框时,使计数器38加一(方框32)。然后,在复用器/计数器40处的校验确定是否实际上选择了该LRA块。如果为是,则计数器40自增。在这一实施例中,当达到最大地址(即,例如,顶部地址)(方框36)时,然后该计数上滚并且最近最少分配地址被覆写。实施例也可以基于包括最少使用地址的其它方案进行覆写。
寄存器30和34中的每一个可以被重写以便改变分区的尺寸。此外,改变将哪一个块指派到哪一个代理是容易的事情,以使得能够可编程地重新指派代理。可以通过将具有相同的LRA min和max的相同分区指派到两个或更多个代理来容易地实现重叠。
参照图4,根据一个实施例,高速缓存配置序列60可以实现在软件、硬件和/或固件中。在一个实施例中,高速缓存配置序列60可以实现在软件中,作为存储在诸如光学、磁或半导体存储器的非暂态计算机可读介质中的计算机可读指令。作为一个示例,可以将指令存储在存储器260中作为核心210的一部分。然而,在一些实施例中,可以代替地与核心210独立地存储指令,并且该指令可以由核心210执行。
核心210可以是任意种类的处理器,包括图形处理器、中央处理单元或者微控制器。核心210可以是集成电路的一部分,该集成电路包括集成在其上的图形和中央处理单元二者,或者核心210可以是具有位于相同的集成电路上的多个核心的任意集成电路的一部分。类似地,核心210可以位于其自己的集成电路上,而没有其它核心。
继续参照图4,首先核心可以确定是否要使用重叠,如在方框62中指示的。基于是否使用重叠并且基于使用高速缓存的代理的特性,可以向分区指派代理,如在方框64中指示的。然后,可以例如通过指派最小地址和最大地址来确定分区尺寸,如在方框66中指示的。如先前提到的,也可以使用其它分区指派技术,包括向给定代理指派给定数量的块或者分区。
在一些实施例中,可以改变步骤的顺序。并且,在一些实施例中,所述步骤中的一些步骤可以是动态的并且一些步骤可以是静态的。在一些实施例中,可以省去所述步骤中的一些。作为再一示例,位于相同集成电路上的不同处理器可以具有不同的可编程配置。在一些实施例中,对于代理来说,也能够共享与不同的处理器相关联的分区。在另外的其它实施例中,单个分区的高速缓存可以由多于一个处理器使用。
在一些实施例中,可以对于每一个代理提供寄存器以便可编程地存储LRA min和LRA max、任意重叠和代理,以便对分区指派进行高速缓存。寄存器也可以存储分区粒度,例如当分区由给定数量的诸如高速缓存行、块或者块的集合的规则尺寸的单元组成时。
本文描述的图形处理技术可以实现在各种硬件架构中。例如,图形功能可以集成在芯片集中。可选地,可以使用分立图形处理器。作为再一实施例,图形功能可以由包括多核心处理器的通用处理器实现。
在整个说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在包涵在本发明内的至少一个实实现中。因而,短语“一个实施例”或者“在实施例中”的出现不必指代相同的实施例。而且,特定特征、结构或者特性可以按照除了所说明的特定实施例之外的其它适合形式提出,所有这样的形式可以包括在本申请的权利要求内。
尽管关于有限数量的实施例描述了本发明,但是本领域的普通技术人员将意识到从中进行的各种修改和变化。所附权利要求意在覆盖落入本发明的真实精神和范围内的所有这样的修改和变化。
Claims (20)
1.一种方法,包括:
可编程地将代理指派到高速缓存的分立部分。
2.如权利要求1所述的方法,包括可编程地将多于一个代理指派到相同的分立高速缓存部分。
3.如权利要求1所述的方法,包括可编程地设置高速缓存部分的尺寸。
4.如权利要求1所述的方法,包括动态地改变一个或多个代理到高速缓存部分的指派。
5.如权利要求1所述的方法,包括按照翻译后援缓冲器的形式将代理指派到高速缓存的分立部分。
6.如权利要求1所述的方法,包括使用具有大于四路的关联性的高速缓存。
7.一种非暂态计算机可读介质,其存储指令以便使核心执行下列步骤:
将多于一个代理指派到高速缓存的分立部分。
8.如权利要求7所述的介质,进一步存储指令以便动态地改变多于一个代理到所述高速缓存的所述分立部分的指派。
9.如权利要求8所述的介质,进一步存储指令以便可编程地设置高速缓存部分的尺寸。
10.如权利要求8所述的介质,进一步存储指令以便将代理指派到高速缓存的分立部分。
11.如权利要求10所述的介质,进一步存储指令以便改变一个或多个代理到高速缓存部分的指派。
12.如权利要求8所述的介质,进一步存储指令以便按照翻译后援缓冲器的形式将代理指派到高速缓存的分立部分。
13.如权利要求8所述的介质,进一步存储指令以便使用具有大于四路的关联性的高速缓存。
14.一种装置,包括:
处理器核心;以及
高速缓存,耦接到所述核心,所述核心用于将代理指派到高速缓存的分立部分。
15.如权利要求14所述的装置,所述核心用于可编程地将多于一个代理指派到相同的分立高速缓存部分。
16.如权利要求14所述的装置,所述核心用于可编程地设置高速缓存部分的尺寸。
17.如权利要求14所述的装置,所述核心用于动态地改变一个或多个代理到高速缓存部分的指派。
18.如权利要求14所述的装置,其中,所述高速缓存是翻译后援缓冲器。
19.如权利要求14所述的装置,所述高速缓存具有大于四路的关联性。
20.如权利要求14所述的装置,其中,所述核心是图形核心并且所述高速缓存是翻译后援缓冲器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/049584 WO2013032437A1 (en) | 2011-08-29 | 2011-08-29 | Programmably partitioning caches |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103874988A true CN103874988A (zh) | 2014-06-18 |
Family
ID=47756674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180073218.4A Pending CN103874988A (zh) | 2011-08-29 | 2011-08-29 | 对高速缓存进行可编程分区 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130275683A1 (zh) |
CN (1) | CN103874988A (zh) |
WO (1) | WO2013032437A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621038B2 (en) * | 2011-09-27 | 2013-12-31 | Cloudflare, Inc. | Incompatible network gateway provisioned through DNS |
US9558120B2 (en) | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
CN105677413A (zh) * | 2016-01-06 | 2016-06-15 | 中国航空无线电电子研究所 | 一种综合模块化航空电子系统多分区应用后加载方法 |
US10089233B2 (en) | 2016-05-11 | 2018-10-02 | Ge Aviation Systems, Llc | Method of partitioning a set-associative cache in a computing platform |
US11232033B2 (en) * | 2019-08-02 | 2022-01-25 | Apple Inc. | Application aware SoC memory cache partitioning |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055510A1 (en) * | 2002-10-08 | 2005-03-10 | Hass David T. | Advanced processor translation lookaside buffer management in a multithreaded system |
US20080104362A1 (en) * | 2006-10-25 | 2008-05-01 | Buros William M | Method and System for Performance-Driven Memory Page Size Promotion |
CN101331465A (zh) * | 2005-12-21 | 2008-12-24 | 英特尔公司 | 分区的共享高速缓存 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594734B1 (en) * | 1999-12-20 | 2003-07-15 | Intel Corporation | Method and apparatus for self modifying code detection using a translation lookaside buffer |
US6851030B2 (en) * | 2002-10-16 | 2005-02-01 | International Business Machines Corporation | System and method for dynamically allocating associative resources |
US8806177B2 (en) * | 2006-07-07 | 2014-08-12 | International Business Machines Corporation | Prefetch engine based translation prefetching |
US20090300319A1 (en) * | 2008-06-02 | 2009-12-03 | Ehud Cohen | Apparatus and method for memory structure to handle two load operations |
-
2011
- 2011-08-29 CN CN201180073218.4A patent/CN103874988A/zh active Pending
- 2011-08-29 US US13/995,197 patent/US20130275683A1/en not_active Abandoned
- 2011-08-29 WO PCT/US2011/049584 patent/WO2013032437A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055510A1 (en) * | 2002-10-08 | 2005-03-10 | Hass David T. | Advanced processor translation lookaside buffer management in a multithreaded system |
CN101331465A (zh) * | 2005-12-21 | 2008-12-24 | 英特尔公司 | 分区的共享高速缓存 |
US20080104362A1 (en) * | 2006-10-25 | 2008-05-01 | Buros William M | Method and System for Performance-Driven Memory Page Size Promotion |
Also Published As
Publication number | Publication date |
---|---|
WO2013032437A1 (en) | 2013-03-07 |
US20130275683A1 (en) | 2013-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210042238A1 (en) | Memory management for a hierarchical memory system | |
US9965392B2 (en) | Managing coherent memory between an accelerated processing device and a central processing unit | |
US10901894B2 (en) | Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories | |
US9098417B2 (en) | Partitioning caches for sub-entities in computing devices | |
US9645945B2 (en) | Fill partitioning of a shared cache | |
CN105493053B (zh) | 多核处理器及更新多核处理器中的高速缓存的方法 | |
US8095736B2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
CN105283855B (zh) | 一种寻址方法及装置 | |
TW201814539A (zh) | 使用在一以處理器為基礎的系統中之空間服務品質標示提供異質記憶體系統之彈性管理 | |
KR101139565B1 (ko) | 인-메모리, 인-페이지 디렉토리 캐시 일관성 기법 | |
US10108553B2 (en) | Memory management method and device and memory controller | |
CN103218312A (zh) | 文件访问方法及系统 | |
CN103874988A (zh) | 对高速缓存进行可编程分区 | |
KR20160064720A (ko) | 캐시 메모리 장치 및 이를 포함하는 전자 시스템 | |
JP7449694B2 (ja) | 変換索引バッファにおける構成可能なスキューアソシエイティビティ | |
US10705977B2 (en) | Method of dirty cache line eviction | |
WO2011117223A1 (en) | Sparse data access acceleration | |
EP3188028B1 (en) | Buffer management method and apparatus | |
CN114691537A (zh) | 一种访问存储器的方法及信息处理设备 | |
GB2528263A (en) | Graphics processing systems | |
JP2019164629A (ja) | モデル生成装置、情報処理装置、モデル生成方法およびプログラム | |
US11561906B2 (en) | Rinsing cache lines from a common memory page to memory | |
CN105612505B (zh) | Cpu调度的方法和装置 | |
US9710392B2 (en) | Virtual memory mapping for improved DRAM page locality | |
RU2487398C1 (ru) | Способ формирования виртуальной памяти и устройство для его реализации |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140618 |