CN111480151A - 将高速缓存线从共用存储器页面冲洗到存储器 - Google Patents
将高速缓存线从共用存储器页面冲洗到存储器 Download PDFInfo
- Publication number
- CN111480151A CN111480151A CN201880080249.4A CN201880080249A CN111480151A CN 111480151 A CN111480151 A CN 111480151A CN 201880080249 A CN201880080249 A CN 201880080249A CN 111480151 A CN111480151 A CN 111480151A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- memory
- line
- memory page
- 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
- 238000011010 flushing procedure Methods 0.000 title claims description 11
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 abstract description 76
- 238000007726 management method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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/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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0882—Page mode
-
- 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
-
- 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
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
处理***(100)从高速缓存(302)冲洗共享与被识别用于驱逐的高速缓存线(304)相同的存储器页面(147)的那些高速缓存线(308、309)。所述处理***的高速缓存控制器(175)将所述高速缓存线识别为被调度用于驱逐。作为响应,所述高速缓存控制器识别与所述相同存储器页面相关联的额外“脏牺牲”高速缓存线(已经在所述高速缓存处被修改但尚未写回到存储器的高速缓存线),并且将所述所识别的高速缓存线中的每一者写入到存储器(105)中的相同存储器页面。通过将与所述存储器页面相关联的所述脏牺牲高速缓存线中的每一者写入到存储器,所述处理***减少了存储器开销并且改善了处理效率。
Description
背景技术
处理***经常利用存储器分级体系来支持***的处理节点的数据存储。存储器分级体系包括可供节点的一个或多个处理器核心访问的多个层级的高速缓存,以及用以存储可由在处理器核心处执行的程序指令操纵的所有数据的主存储器。为了改善处理效率,处理***可以实施存储器管理方案,其中处理***根据管理方案将数据移动到存储器分级体系的不同层级。例如,在一些存储器管理方案下,处理***将处理器核心最近访问的数据移动到存储器分级体系的较靠近所述核心的层级,使得将来可以相对快速地访问所述数据。此外,存储器管理方案控制当在存储器分级体系的给定层级处接收到新数据时如何在那个存储器分级体系层级处替换数据,以及如何和何时在存储器分级体系层级之间复制数据。然而,常规的存储器管理方案可能低效地执行这些数据替换和传送操作,从而消耗过高量的***资源。
附图说明
通过参考附图,可以更好地理解本公开,并且使得本领域技术人员容易明白其许多特征和优点。在不同图式中使用相同参考符号指示相似或相同的项目。
图1是根据一些实施方案的处理***的框图,所述处理***从高速缓存冲洗共享与正被驱逐的高速缓存线相同的存储器页面的高速缓存线。
图2是根据一些实施方案的在图1的处理***中使用的高速缓存分级结构的框图。
图3是示出根据一些实施方案的图1的处理***冲洗共享与正被驱逐的高速缓存线相同的存储器页面的高速缓存线的实例的框图。
图4是示出根据一些实施方案的从高速缓存冲洗共享与正被驱逐的高速缓存线相同的存储器页面的那些高速缓存线的方法的流程图。
图5是示出根据一些实施方案的在高速缓存的相同索引处存储共享相同存储器页面的高速缓存线的方法的流程图。
具体实施方式
图1至5示出了用于通过从高速缓存冲洗共享与被识别用于驱逐的高速缓存线相同的存储器页面的那些高速缓存线来改善处理***处的存储器管理效率的技术。处理***的高速缓存控制器将高速缓存线识别为被调度用于驱逐。作为响应,高速缓存控制器识别与相同存储器页面相关联的额外“脏牺牲”高速缓存线(已经在高速缓存处被修改但尚未写回到存储器的高速缓存线),并且将每个所识别的高速缓存线写入到相同存储器页面。通过将与存储器页面相关联的每个脏牺牲高速缓存线写入到存储器,处理***减少了存储器开销并且改善了处理效率。
举例来说,处理效率的基准之一是“写入局部性”,其至少部分地指处理***多久一次对相同存储器页面执行顺序写入操作或时间上相对接近的写入操作。明确地说,因为为写入操作准备存储器页面消耗***资源,所以增大写入局部性减少了准备存储器页面的次数,并且因此减少了***资源消耗。常规的高速缓存控制器只有在高速缓存线被替换策略选择用于驱逐时才会将所述高速缓存线写入到存储器。那些高速缓存线往往来自与最近被驱逐的其他高速缓存线不同的存储器页面。使用本文描述的技术,高速缓存控制器从高速缓存冲洗共享与正被驱逐的高速缓存线相同的存储器页面的那些高速缓存线,从而增大写入局部性并且改善处理效率。
图1是根据一些实施方案的处理***100的框图。处理***100大体上被配置来代表电子装置执行指令集(例如,计算机程序或应用程序)。因此,处理***可以被并入到诸如台式或膝上型计算机、服务器、平板电脑、智能手机、游戏控制台等许多电子装置中的任何一者中。为了支持指令集的执行,处理***100包括或可以访问存储器105或其他存储组件,所述存储组件使用诸如动态随机存取存储器(DRAM)的非暂时性计算机可读介质来实施。然而,DRAM存储器(DRAM)105还可以使用包括静态随机存取存储器(SRAM)、非易失性RAM等在内的其他类型的存储器来实施。处理***100还包括总线110以支持在处理***100中实施的实体(诸如DRAM 105)之间的通信。DRAM 105被划分成一组逻辑片段,其在本文中称为页面(例如,存储器页面147)。在一些实施方案中,每个存储器页面共享共用寻址或其他访问电路,使得对相同存储器页面的多个顺序访问比对不同存储器页面的顺序访问消耗更少的资源。如本文进一步描述,处理***100实施存储器管理方案以鼓励对相同存储器页面的顺序访问,从而节省***资源并提高处理效率。
处理***100包括图形处理单元(GPU)115,其被配置来渲染图像以供在显示器120上呈现。例如,GPU 115可以渲染对象以产生提供给显示器120的像素值,显示器120使用所述像素值来显示表示渲染对象的图像。GPU 115的一些实施方案用于通用计算。在所示实施方案中,GPU 115实施多个处理元件116、117、118(本文统称为“处理元件116至118”),所述处理元件被配置来同时或并行执行指令。在所示实施方案中,GPU 115通过总线110与DRAM105通信。然而,GPU 115的一些实施方案通过直接连接或经由其他总线、桥接器、交换机、路由器等与DRAM 105通信。GPU 115执行DRAM 105中所存储的指令,并且GPU 115在DRAM 105中存储诸如执行指令的结果的信息。例如,DRAM 105可以存储来自待由GPU 115执行的程序代码的指令的复本125。GPU 115包括调度器130,其被配置来调度指令以供处理元件116至118执行。
GPU 115还实施高速缓存分级结构135,其包括一个或多个层级的高速缓存,所述高速缓存用以高速缓存指令或数据以供处理元件116至118进行相对较低等待时间的访问。高速缓存分级结构135包括多个单独的高速缓存和对应的高速缓存位置(高速缓存线),如在图2中进一步详细描述。GPU 115还包括高速缓存控制器139以用于控制高速缓存分级结构135的层级之间的数据移动以及高速缓存分级结构135与DRAM 105之间的数据移动,如下文进一步描述。
处理***100还包括实施多个处理元件141、142、143的中央处理单元(CPU)140,所述处理元件141、142、143在本文中统称为“处理元件141至143”。处理元件141至143被配置来同时或并行执行指令。例如,处理元件141至143被配置来同时或并行执行多个线程。CPU140包括调度器150,其被配置来调度指令以供处理元件141至143执行。CPU 140连接到总线110,并且因此经由总线110与GPU115和DRAM 105通信。CPU 140执行DRAM 105中所存储的诸如程序代码145的指令,并且CPU 140还在DRAM 105中存储诸如执行指令的结果的信息。
CPU 140实施高速缓存分级结构155,其包括一个或多个层级的高速缓存,所述高速缓存用以高速缓存指令或数据以供处理元件141至143进行相对较低等待时间的访问。虽然高速缓存分级结构155被描绘为在处理元件141至143的外部,但是处理元件141至143的一些实施方案并入有互连到高速缓存分级结构155的对应高速缓存。高速缓存分级结构155的细节在下面相对于图2更详细地进行描述。
CPU 140还包括高速缓存控制器175以用于接收和发送第一高速缓存线和随后高速缓存线进入和离开高速缓存分级结构155、在高速缓存分级结构155的层级之间的数据移动以及在高速缓存分级结构155与DRAM 105之间的数据移动。高速缓存控制器175的操作在下面进一步详细描述。应当了解,高速缓存控制器139相对于高速缓存分级结构135执行类似操作。
高速缓存控制器175通过管理对应高速缓存的条目的各个方面来为高速缓存分级结构155和DRAM 105实施指定存储器管理方案。举例来说,在执行指令的过程中,处理元件141至143生成被称为存储器访问操作的操作以从高速缓存分级结构155检索或修改数据。存储器访问操作的实例包括用以将数据写入到存储器位置的写入操作,以及用以从存储器位置读取数据的读取操作。每个存储器位置对应于不同的存储器地址,并且每个存储器访问操作包括由存储器访问操作作为目标的存储器地址。高速缓存控制器175从处理元件141至143接收存储器访问操作,并且在读取操作的情况下通过向处理元件141至143提供数据或者在写入操作的情况下通过修改高速缓存分级结构155的一个或多个条目(称为高速缓存线)处的数据来执行存储器访问操作。
在执行存储器访问操作的过程中,高速缓存控制器175基于指定的存储器管理方案来在高速缓存分级结构155的不同层级之间以及在高速缓存分级结构155与DRAM 105之间移动数据。例如,在一些实施方案中,高速缓存控制器175通过以下方式来提高存储器访问效率:将最近访问的数据(即,最近由存储器访问操作作为目标的数据)移动到高速缓存分级结构155的更高层级,使得所述数据在高速缓存分级结构155中“更靠近”处理元件141至143,并且因此可以更快地被处理元件141至143访问。在一些实施方案中,高速缓存控制器175至少部分地基于由处理元件141至143生成的存储器访问操作中所检测到的模式来在存储器分级体系的层级之间推测性地传送数据。此外,高速缓存控制器175管理高速缓存分级结构155与DRAM 105之间的数据传送。例如,响应于确定由存储器操作作为目标的数据没有存储在高速缓存分级结构155的高速缓存线处,高速缓存控制器175将由存储器操作作为目标的数据从DRAM 105传送到高速缓存分级结构155的一个或多个高速缓存线。
高速缓存控制器175还被配置来维持高速缓存分级结构155的不同层级之间以及高速缓存分级结构155与DRAM 105之间的数据一致性。明确地说,当在高速缓存分级结构155的高速缓存线处修改数据时,如下文进一步描述,高速缓存控制器确保在修改数据可以被另一个处理元件、处理器核心、处理单元等访问之前,修改数据被存储在高速缓存分级结构155的其他高速缓存线处,并且被存储在与修改数据的存储器地址对应的DRAM 105的条目处。
为了管理高速缓存分级结构155的层级之间的数据传送并且维持数据一致性,高速缓存控制器175维持高速缓存分级结构155的每个高速缓存线的一致性状态信息。高速缓存线的一致性状态信息指示所述高速缓存线是存储有效数据并且因此不适合被与不同存储器地址相关联的数据替换,还是存储无效数据并且因此适合被与不同存储器地址相关联的数据替换。此外,对于具有有效状态的高速缓存线,一致性状态信息指示高速缓存线处的数据是否处于修改状态-即1)高速缓存线处的数据是否已经从其存储在高速缓存线处时的原始状态修改,以及2)高速缓存线处的修改数据是否尚未被复制到高速缓存分级结构155的较低层级或DRAM 105。在一些实施方案中,一致性状态信息指示额外一致性方面,诸如存储在高速缓存线处的数据是可由CPU独占访问还是与其他处理单元共享。
为了在高速缓存分级结构155的层级之间传送数据并维持数据一致性,高速缓存控制器175执行至少两种类型的操作,在本文中称为驱逐操作和冲洗操作。明确地说,高速缓存控制器175基于由高速缓存控制器175实施的存储器管理方案来响应于(例如)确定接收数据将被存储在高速缓存线处而执行用以从高速缓存线驱逐有效数据的驱逐操作。为了对高速缓存线执行驱逐操作,高速缓存控制器175确定高速缓存线是否处于修改状态。如果不是,高速缓存控制器175将高速缓存线的状态设置为无效状态。如果高速缓存线处于修改状态,则高速缓存控制器175将高速缓存线的内容复制到高速缓存分级结构155的较低层级和DRAM 105中的一者或多者。
高速缓存控制器175执行冲洗操作以维持高速缓存分级结构155的不同层级之间的数据一致性。为了执行冲洗操作,高速缓存控制器175将高速缓存分级结构155的给定层级处的一个或多个高速缓存线识别为处于有效状态和修改状态,并且将修改高速缓存线的内容复制到高速缓存分级结构的一个或多个较低层级。与上述驱逐操作相反,高速缓存控制器175将所识别的高速缓存线维持处于有效状态。在一些实施方案中,高速缓存控制器175周期性地或响应于在CPU 140处识别到一个或多个指定条件(诸如特定指令的执行、正被执行的线程的改变等)来执行冲洗操作。
在一些实施方案中,响应于驱逐高速缓存线,高速缓存控制器175对与被驱逐的高速缓存线相同的DRAM 105页面相关联的高速缓存线执行冲洗操作。明确地说,响应于识别到用于驱逐的高速缓存线,高速缓存控制器175识别高速缓存分级结构155的相同层级处的其他高速缓存线,所述其他高速缓存线被分配给与被识别用于驱逐的高速缓存线相同的页面的存储器地址。高速缓存控制器接着经由对相同存储器页面的多次写入操作将被驱逐的高速缓存线和额外的所识别的高速缓存线写入到DRAM 105,因此改善处理器效率。此外,在一些实施方案中,CPU 140将冲洗过的高速缓存线的状态设置为干净(即,未修改)状态。
图2是与图1的高速缓存分级结构135和155中的一者对应的高速缓存分级结构200的框图。高速缓存分级结构200高速缓存信息,诸如用于处理元件201、202、203、204的指令或数据,所述处理元件在本文中统称为“处理元件201至204”。处理元件201至204用以实施如图1所示的处理元件116至118和141至143的一些实施方案。
高速缓存分级结构200包括三个层级的高速缓存:第一层级,其包括L1高速缓存211、212、213、214(本文中统称为“L1高速缓存211至214”);第二层级,其包括L2高速缓存215、220;以及第三层级,其包括L3高速缓存225。然而,高速缓存分级结构200的一些实施方案包括更多或更少层级的高速缓存。虽然L1高速缓存211至214被描绘为互连到对应处理元件201至204的独立硬件结构,但是L1高速缓存211至214的一些实施方案被并入到实施处理元件201至204的硬件结构中。每一层级的高速缓存含有多个单独的高速缓存线(例如,高速缓存线230至237)。
L1高速缓存211至214用以高速缓存信息以供对应处理元件201至204访问,并且是用于对应处理元件的专用高速缓存。例如,L1高速缓存211被配置来高速缓存用于处理元件201的信息。处理元件201因此可以向L1高速缓存211发出存储器访问请求。如果存储器访问请求在L1高速缓存211中命中,则返回所请求的信息。如果存储器访问请求在L1高速缓存211中未命中(即,所请求的数据不存在),则存储器访问请求被转发到下一个较低高速缓存层级(即,L2高速缓存215)。
处理元件201至204被分组为子集227、229,并且子集227、229与对应的L2高速缓存215、220相关联。L2高速缓存215、220因此是被配置来高速缓存用于子集227、229的处理元件201至204的信息的共享高速缓存。例如,L2高速缓存215高速缓存用于处理元件201、202的信息。如上论述,如果处理元件201、202中的一者发出在对应L1高速缓存211、212中未命中的存储器访问请求,则所述存储器访问请求被转发到L2高速缓存215。如果存储器访问请求在L2高速缓存215中命中,则所请求的信息被返回到请求处理元件201、202。如果存储器访问请求在L2高速缓存215中未命中,则L2高速缓存215将存储器访问请求转发到高速缓存的下一个更高层级(例如,L3高速缓存225)。
L3高速缓存225被配置为用于处理元件201至204的共享高速缓存。来自处理元件201至204的在L2高速缓存215、220中未命中的存储器访问请求被转发到L3高速缓存225。如果存储器访问请求在L3高速缓存225中命中,则所请求的信息被返回到请求处理元件201至204。如果存储器访问请求在L3高速缓存225中未命中,则L3高速缓存225将存储器访问请求转发到DRAM 105。高速缓存分级结构200还包括高速缓存索引170和图1的高速缓存控制器175。
图3是示出根据一些实施方案的冲洗共享与正被驱逐的高速缓存线相同的存储器页面的高速缓存线的实例300的框图。实例300示出了高速缓存302,其对应于高速缓存分级体系155的一个层级,并且包括多个高速缓存线304至311。高速缓存线304至311中的每一者被CPU 140分配给DRAM 105页面的一个页面。例如,高速缓存线304存储被分配给对应于指定为PG 1的给定DRAM页面的存储器地址的数据,而高速缓存线305存储被分配给指定为PG2的不同DRAM页面的数据。
响应于识别到用于驱逐的高速缓存线304,高速缓存控制器175实行对高速缓存302的搜索以查找处于修改状态的高速缓存线(有时称为“脏”高速缓存线),所述高速缓存线与相同存储器页面相关联-即,与DRAM PG 1相关联-并且处于修改状态。因此,在实例300中,高速缓存控制器175识别到高速缓存线308和309。高速缓存控制器175接着将高速缓存线304、308和309中的每一者写入到DRAM 105,将高速缓存线304设置为无效状态。此外,高速缓存控制器175将高速缓存线308和309设置为未修改状态,并且将高速缓存线308和309中的每一者维持处于有效状态。因此,高速缓存控制器175冲洗与同正被驱逐的高速缓存线304相同的存储器页面相关联的数据,并且从而改善处理***100的写入局部性。
图4是示出根据一些实施方案的改善处理***的写入局部性的方法400的流程图。相对于在图1的处理***100处的示例性实施方式来描述方法400。方法400在框402处开始,在框402处高速缓存控制器175响应于(例如)接收数据被指定存储在高速缓存线处来识别用于从高速缓存分级结构155驱逐到DRAM 105的高速缓存线。在框404处,高速缓存控制器175搜索高速缓存以查找与DRAM的相同存储器页面相关联的修改(即,脏)高速缓存线。在框406处,高速缓存控制器175将在框402处被识别用于驱逐的高速缓存线和在框404处被识别的脏高速缓存线两者写入到DRAM 105的对应存储器页面。在框408处,高速缓存控制器175将被驱逐的高速缓存线设置为无效状态,从而指示所述高速缓存线准备好存储传入数据。在框410处,高速缓存控制器175将在框404处识别的脏高速缓存线设置为未修改(即,干净)状态,但是将所述高速缓存线维持处于有效状态以指示所述高速缓存线不可用于存储与不同存储器地址相关联的数据。
在一些实施方案中,高速缓存控制器175可以通过在高速缓存的与相同索引相关联的高速缓存线处存储与相同存储器页面相关联的数据来进一步改善存储器管理。通过以此方式存储数据,可以根据图4的方法400快速且有效地将数据冲洗到相同存储器页面。根据一些实施方案的在高速缓存的相同索引处存储共享相同存储器页面的高速缓存线的示例性方法500。相对于图1的处理***100处的示例性实施方式来描述方法500。在框502处,高速缓存控制器175接收待存储在高速缓存分级结构155的高速缓存处的数据。在框504处,高速缓存控制器175针对接收数据的存储器地址识别DRAM 105的存储器页面。在框506处,高速缓存控制器175识别对应于在框504处识别的存储器页面的高速缓存的索引。在框508处,高速缓存控制器175将接收数据存储在所识别索引的高速缓存线处。
在一些实施方案中,上述设备和技术在包括一个或多个集成电路(IC)装置(还称为集成电路封装或微芯片)的***(诸如上文参考图1至5描述的处理***100)中实施。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可以用于这些IC装置的设计和制作。这些设计工具通常被表示为一个或多个软件程序。所述一个或多个软件程序包括可由计算机***执行的代码,以操纵计算机***对代表一个或多个IC装置的电路的代码进行操作,以便执行用以设计或改造制造***以制作所述电路的过程的至少一部分。这个代码可以包括指令、数据或指令与数据的组合。代表设计工具或制作工具的软件指令通常存储在计算***可访问的计算机可读存储介质中。同样,代表IC装置的设计或制作的一个或多个阶段的代码可以存储在相同的计算机可读存储介质或不同的计算机可读存储介质中并且从其进行访问。
计算机可读存储介质可以包括任何非暂时性存储介质或者非暂时性存储介质组合,其在使用期间可由计算机***访问以向计算机***提供指令和/或数据。此类存储介质可以包括但不限于光学介质(例如,压缩光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器)或基于微机电***(MEMS)的存储介质。计算机可读存储介质可以嵌入在计算***中(例如,***RAM或ROM)、固定地附接到计算***(例如,磁性硬盘驱动器)、可拆卸地附接到计算***(例如,光盘或基于通用串行总线(USB)的快闪存储器),或者经由有线或无线网络耦接到计算机***(例如,网络可访问存储装置(NAS))。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理***的一个或多个处理器来实施。所述软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一组或多组可执行指令。软件可以包括指令和某些数据,其当由一个或多个处理器执行时操纵所述一个或多个处理器执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括(例如)磁盘或光盘存储装置、固态存储装置(诸如快闪存储器)、高速缓存、随机存取存储器(RAM)或其他非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令可以呈源代码、汇编语言代码、目标代码或由一个或多个处理器解释或者能够执行的其他指令格式。
请注意,并不需要上文在一般描述中描述的所有活动或元件,可能不需要特定活动或装置的一部分,并且除了所描述的那些活动或元件之外,还可以执行一个或多个进一步活动或者包括一个或多个进一步元件。此外,列出活动的次序不一定是它们被执行的次序。另外,已经参考特定实施方案描述了所述概念。然而,本领域普通技术人员了解,在不脱离如所附权利要求书中所陈述的本公开的范围的情况下,可以做出各种修改和变化。因此,说明书和附图应当被认为是说明性的而不是限制性的,并且所有此类修改都旨在包括于本公开的范围内。
上文已经关于特定实施方案描述了好处、其他优点和问题解决方案。然而,所述好处、优点、问题解决方案以及可以致使任何好处、优点或解决方案出现或变得更加显著的任何特征不应被解释为任何或所有权利要求的关键、必需或必要特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文教导的本领域技术人员容易明白的不同但等效的方式进行修改和实践。除了如在所附权利要求书中描述以外,对本文所示的构造或设计的细节没有限制。因此,很明显,上文公开的特定实施方案可以被更改或修改,并且所有此类变化都被认为在所公开的主题的范围内。因此,本文所寻求的保护如在所附权利要求书中阐述。
Claims (20)
1.一种方法,其包括:
由处理器从高速缓存识别用于驱逐的第一高速缓存线;以及
响应于识别出所述用于驱逐的第一高速缓存线:
识别与同所述第一高速缓存线相同的存储器页面相关联的第二高速缓存线;以及
将所述第一高速缓存线和所述第二高速缓存线写入到所述存储器页面。
2.如权利要求1所述的方法,其还包括:
响应于将所述第二高速缓存线写入到所述存储器页面,在所述高速缓存处将所述第二高速缓存线设置为干净状态。
3.如权利要求2所述的方法,其还包括:
响应于将所述第二高速缓存线设置为所述干净状态,在所述高速缓存处将所述第二高速缓存线维持处于有效状态。
4.如权利要求3所述的方法,其还包括:
响应于将所述第一高速缓存线写入到所述存储器页面,在所述高速缓存处将所述第一高速缓存线设置为无效状态。
5.如权利要求1所述的方法,其还包括:
在所述高速缓存处接收所述第二高速缓存线;以及
响应于接收到所述第二高速缓存线,并且响应于识别出所述第一高速缓存线和所述第二高速缓存线存储在所述相同存储器页面处,将所述第二高速缓存线存储在所述高速缓存的存储所述第一高速缓存线的第一索引处。
6.如权利要求5所述的方法,其还包括:
响应于识别出所述用于驱逐的第一高速缓存线,搜索所述第一索引以查找与所述相同存储器页面相关联的高速缓存线。
7.如权利要求1所述的方法,其还包括:
响应于识别出所述用于驱逐的第一高速缓存线:
识别与同所述第一高速缓存线相同的存储器页面相关联的第三高速缓存线;以及
将所述第三高速缓存线写入到所述存储器页面。
8.一种方法,其包括:
响应于在高速缓存处识别出用于驱逐的第一高速缓存线:
在所述高速缓存处识别对应于与所述第一高速缓存线相同的第一存储器页面的第一多个高速缓存线;以及
通过将所述第一多个高速缓存线中的每一者写入到存储器,从所述高速缓存冲洗所述第一多个高速缓存线。
9.如权利要求8所述的方法,其中冲洗还包括:
在所述高速缓存处将所述第一多个高速缓存线中的每一者维持处于有效状态。
10.如权利要求8所述的方法,其还包括:
响应于识别出所述用于驱逐的第一高速缓存线,在所述高速缓存处将所述第一高速缓存线置于无效状态。
11.如权利要求8所述的方法,其中识别所述第一多个高速缓存线包括:
识别存储所述第一高速缓存线所在的所述高速缓存的索引;以及
搜索所述索引以查找所述第一多个高速缓存线。
12.如权利要求8所述的方法,其还包括:
响应于在所述高速缓存处识别出用于驱逐的第二高速缓存线:
在所述高速缓存处识别对应于与所述第二高速缓存线相同的第二存储器页面的第二多个高速缓存线,所述第二存储器页面不同于所述第一存储器页面;以及
通过将所述第二多个高速缓存线写入到所述存储器来从所述高速缓存冲洗所述第二多个高速缓存线。
13.如权利要求12所述的方法,其中所述第一多个高速缓存线和所述第二多个高速缓存线与所述高速缓存的不同索引相关联。
14.一种处理器,其包括:
高速缓存,其被配置来存储第一高速缓存线和第二高速缓存线;以及
高速缓存控制器,其被配置来:
识别所述用于驱逐的第一高速缓存线;
将所述第二高速缓存线识别为与同所述第一高速缓存线相同的存储器页面相关联;以及
将所述第一高速缓存线和所述第二高速缓存线写入到所述存储器页面。
15.如权利要求14所述的处理器,其中响应于将所述第二高速缓存线写入到所述存储器页面,所述高速缓存控制器被配置来在所述高速缓存处将所述第二高速缓存线设置为干净状态。
16.如权利要求15所述的处理器,其中
响应于将所述第二高速缓存线设置为所述干净状态,所述高速缓存控制器被配置来在所述高速缓存处将所述第二高速缓存线维持处于有效状态。
17.如权利要求16所述的处理器,其中
响应于将所述第一高速缓存线写入到所述存储器页面,所述高速缓存控制器被配置来将所述第一高速缓存线设置为无效状态。
18.如权利要求14所述的处理器,其中
所述高速缓存控制器被配置来:
在所述高速缓存处接收所述第二高速缓存线;以及
响应于接收到所述第二高速缓存线并识别出所述第一高速缓存线和所述第二高速缓存线存储在所述相同存储器页面处,将所述第二高速缓存线存储在所述高速缓存的存储所述第一高速缓存线的第一索引处。
19.如权利要求18所述的处理器,其中
响应于识别出所述用于驱逐的第一高速缓存线,所述高速缓存控制器被配置来搜索所述第一索引以查找与所述相同存储器页面相关联的高速缓存线。
20.如权利要求14所述的处理器,其中
响应于所述高速缓存控制器识别出所述用于驱逐的第一高速缓存线,所述高速缓存控制器被配置来:
识别与同所述第一高速缓存线相同的存储器页面相关联的第三高速缓存线;以及
将所述第三高速缓存线写入到所述存储器页面。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/839,089 | 2017-12-12 | ||
US15/839,089 US11561906B2 (en) | 2017-12-12 | 2017-12-12 | Rinsing cache lines from a common memory page to memory |
PCT/US2018/052415 WO2019118042A1 (en) | 2017-12-12 | 2018-09-24 | Rinsing cache lines from a common memory page to memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111480151A true CN111480151A (zh) | 2020-07-31 |
Family
ID=66696868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880080249.4A Pending CN111480151A (zh) | 2017-12-12 | 2018-09-24 | 将高速缓存线从共用存储器页面冲洗到存储器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11561906B2 (zh) |
EP (1) | EP3724774B1 (zh) |
JP (1) | JP2021506028A (zh) |
KR (1) | KR20200088391A (zh) |
CN (1) | CN111480151A (zh) |
WO (1) | WO2019118042A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124270B (zh) * | 2018-10-31 | 2023-10-27 | 伊姆西Ip控股有限责任公司 | 缓存管理的方法、设备和计算机程序产品 |
US20230236985A1 (en) * | 2022-01-21 | 2023-07-27 | Centaur Technology, Inc. | Memory controller zero cache |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265514A1 (en) * | 2008-04-17 | 2009-10-22 | Arm Limited | Efficiency of cache memory operations |
US20110276762A1 (en) * | 2010-05-07 | 2011-11-10 | International Business Machines Corporation | Coordinated writeback of dirty cachelines |
CN102804152A (zh) * | 2009-05-15 | 2012-11-28 | 甲骨文美国公司 | 对存储器层次结构中的闪存的高速缓存一致性支持 |
US20150019823A1 (en) * | 2013-07-15 | 2015-01-15 | Advanced Micro Devices, Inc. | Method and apparatus related to cache memory |
US9141543B1 (en) * | 2012-01-06 | 2015-09-22 | Marvell International Ltd. | Systems and methods for writing data from a caching agent to main memory according to a pre-clean criterion |
CN107408079A (zh) * | 2015-03-27 | 2017-11-28 | 英特尔公司 | 带有一致单元的多级别***存储器的存储器控制器 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5077826A (en) * | 1989-08-09 | 1991-12-31 | International Business Machines Corporation | Cache performance in an information handling system employing page searching |
JPH0520195A (ja) * | 1991-07-16 | 1993-01-29 | Matsushita Electric Ind Co Ltd | キヤツシユメモリ制御装置 |
US5630088A (en) * | 1995-03-09 | 1997-05-13 | Hewlett-Packard Company | Virtual to physical address translation |
US5752261A (en) * | 1996-11-07 | 1998-05-12 | Ncr Corporation | Method and apparatus for detecting thrashing in a cache memory |
JP2000187616A (ja) * | 1998-12-22 | 2000-07-04 | Nec Corp | キャッシュラインをクリーンな状態に保つメモリシステム |
US6751720B2 (en) * | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy |
US6973543B1 (en) | 2001-07-12 | 2005-12-06 | Advanced Micro Devices, Inc. | Partial directory cache for reducing probe traffic in multiprocessor systems |
US8612956B2 (en) * | 2007-12-05 | 2013-12-17 | International Business Machines Corporation | Efficient object profiling for optimizing object locality |
US8949541B2 (en) | 2008-12-08 | 2015-02-03 | Nvidia Corporation | Techniques for evicting dirty data from a cache using a notification sorter and count thresholds |
US8924652B2 (en) | 2009-11-23 | 2014-12-30 | Marvell Israel (M.I.S.L.) Ltd. | Simultaneous eviction and cleaning operations in a cache |
JP2011198091A (ja) * | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
US8683128B2 (en) | 2010-05-07 | 2014-03-25 | International Business Machines Corporation | Memory bus write prioritization |
US8543766B2 (en) | 2011-06-10 | 2013-09-24 | Freescale Semiconductor, Inc. | Writing data to system memory in a data processing system in which cache line states are tracked |
WO2013015893A1 (en) * | 2011-07-27 | 2013-01-31 | Rambus Inc. | Memory with deferred fractional row activation |
US9940247B2 (en) | 2012-06-26 | 2018-04-10 | Advanced Micro Devices, Inc. | Concurrent access to cache dirty bits |
US10133678B2 (en) * | 2013-08-28 | 2018-11-20 | Advanced Micro Devices, Inc. | Method and apparatus for memory management |
WO2015061965A1 (en) * | 2013-10-29 | 2015-05-07 | Hua Zhong University Of Science Technology | Mixed cache management |
US9904805B2 (en) * | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
US20170168957A1 (en) * | 2015-12-10 | 2017-06-15 | Ati Technologies Ulc | Aware Cache Replacement Policy |
US10303602B2 (en) | 2017-03-31 | 2019-05-28 | Advanced Micro Devices, Inc. | Preemptive cache management policies for processing units |
-
2017
- 2017-12-12 US US15/839,089 patent/US11561906B2/en active Active
-
2018
- 2018-09-24 JP JP2020531657A patent/JP2021506028A/ja active Pending
- 2018-09-24 KR KR1020207016835A patent/KR20200088391A/ko not_active Application Discontinuation
- 2018-09-24 WO PCT/US2018/052415 patent/WO2019118042A1/en unknown
- 2018-09-24 CN CN201880080249.4A patent/CN111480151A/zh active Pending
- 2018-09-24 EP EP18888210.4A patent/EP3724774B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265514A1 (en) * | 2008-04-17 | 2009-10-22 | Arm Limited | Efficiency of cache memory operations |
CN102804152A (zh) * | 2009-05-15 | 2012-11-28 | 甲骨文美国公司 | 对存储器层次结构中的闪存的高速缓存一致性支持 |
US20110276762A1 (en) * | 2010-05-07 | 2011-11-10 | International Business Machines Corporation | Coordinated writeback of dirty cachelines |
US9141543B1 (en) * | 2012-01-06 | 2015-09-22 | Marvell International Ltd. | Systems and methods for writing data from a caching agent to main memory according to a pre-clean criterion |
US20150019823A1 (en) * | 2013-07-15 | 2015-01-15 | Advanced Micro Devices, Inc. | Method and apparatus related to cache memory |
CN107408079A (zh) * | 2015-03-27 | 2017-11-28 | 英特尔公司 | 带有一致单元的多级别***存储器的存储器控制器 |
Also Published As
Publication number | Publication date |
---|---|
US11561906B2 (en) | 2023-01-24 |
US20190179770A1 (en) | 2019-06-13 |
EP3724774B1 (en) | 2024-03-13 |
KR20200088391A (ko) | 2020-07-22 |
EP3724774A4 (en) | 2021-09-08 |
EP3724774A1 (en) | 2020-10-21 |
JP2021506028A (ja) | 2021-02-18 |
WO2019118042A1 (en) | 2019-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552339B2 (en) | Dynamically adapting mechanism for translation lookaside buffer shootdowns | |
JP2017138852A (ja) | 情報処理装置、記憶装置およびプログラム | |
CN109154907B (zh) | 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译 | |
US20140281299A1 (en) | Opportunistic migration of memory pages in a unified virtual memory system | |
US10423354B2 (en) | Selective data copying between memory modules | |
KR20170098187A (ko) | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 | |
JP6630449B2 (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
US9830262B2 (en) | Access tracking mechanism for hybrid memories in a unified virtual system | |
KR20100132244A (ko) | 메모리 시스템 및 메모리 시스템 관리 방법 | |
US20180336143A1 (en) | Concurrent cache memory access | |
US10705977B2 (en) | Method of dirty cache line eviction | |
US20170083444A1 (en) | Configuring fast memory as cache for slow memory | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
US20180113815A1 (en) | Cache entry replacement based on penalty of memory access | |
CN110554975A (zh) | 提供死块预测以用于确定是否在cache设备中对数据高速缓存 | |
US9483400B2 (en) | Multiplexed memory for segments and pages | |
CN111344685A (zh) | 在断电状态期间保留处理器内核的高速缓存条目 | |
EP3688597B1 (en) | Preemptive cache writeback with transaction support | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
US9128856B2 (en) | Selective cache fills in response to write misses | |
JP6786541B2 (ja) | 管理装置、情報処理装置、管理方法、およびプログラム | |
US20210191641A1 (en) | Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor |
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 |