CN104813293B - 使用动态分配的脏掩码空间的存储器管理 - Google Patents
使用动态分配的脏掩码空间的存储器管理 Download PDFInfo
- Publication number
- CN104813293B CN104813293B CN201380061576.2A CN201380061576A CN104813293B CN 104813293 B CN104813293 B CN 104813293B CN 201380061576 A CN201380061576 A CN 201380061576A CN 104813293 B CN104813293 B CN 104813293B
- Authority
- CN
- China
- Prior art keywords
- dirty
- cache line
- cache
- mask
- byte
- 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
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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/604—Details relating to cache allocation
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
本发明揭示与包含高速缓冲存储器的存储器系统有关的系统及方法。所述高速缓冲存储器系统包含:包含多个高速缓冲存储器行的高速缓冲存储器;以及包含多个脏掩码的脏缓冲器。高速缓存控制器经配置以当到所述高速缓冲存储器行中的每一者的写入不是到所述高速缓冲存储器行的完全写入时,将所述脏掩码中的一者分配给所述相应高速缓冲存储器行。所述脏掩码中的每一者指示所述高速缓冲存储器行中的一者中的数据单元的脏状态。所述高速缓存控制器存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别ID信息。
Description
技术领域
本发明涉及存储器管理,且更确切地说,涉及高速缓冲存储器的管理。
背景技术
高速缓冲存储器也称为高速缓存,其用于多种数据处理系统中以加速对数据的存取。字节可写高速缓存允许客户端写入高速缓冲存储器行的一些字节,而使其它字节不受影响。在写入到字节可写高速缓冲存储器时,维持数据相干性是重要的。多种字节可写高速缓冲存储器写入方案可用以维持数据相干性。这些写入方案中的一些可能削弱系统性能或消耗过多存储器空间。
发明内容
在一实例中,脏缓冲器可包含在到高速缓冲存储器行的写入不是到所述高速缓冲存储器行的完全写入时分配给相应高速缓冲存储器行的多个脏掩码。在一实例中,脏缓冲器可为高速缓冲存储器的部分。在其它实例中,其可与所述高速缓冲存储器分离,例如为单独的存储器装置。所述脏掩码指示高速缓冲存储器行中的数据单元的脏状态。所述高速缓冲存储器行中的每一者可包含存储分配给所述高速缓冲存储器行的所述脏掩码的识别(ID)的位置。举例来说,所述ID可通常存储于与例如脏旗标及/或全脏旗标等旗标在相同高速缓存行中的脏缓冲器索引中,所述脏旗标可指示所述高速缓存行中的至少一个字节是脏的,所述全脏旗标可指示所述高速缓冲存储器行中的每一字节是脏的。此可允许存取便利性。然而,在其它实例中,所述ID可存储于与所述高速缓存行中的所述旗标分离的其它存储器存储位置中。
在一个实例中,本发明描述一种高速缓冲存储器系统,其包含:包含多个高速缓冲存储器行的高速缓冲存储器;包含多个脏掩码的脏缓冲器;以及控制器,其经配置以在到所述高速缓冲存储器行中的每一者的写入不是到所述高速缓冲存储器行的完全写入时,将所述脏掩码中的一者分配给所述相应高速缓冲存储器行。所述脏掩码中的每一者指示所述高速缓冲存储器行中的一者中的数据单元的脏状态。所述控制器存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别(ID)信息。
在另一实例中,本发明描述一种操作存储器系统的方法,其包含:将数据写入到包含多个高速缓冲存储器行的高速缓冲存储器;在到所述高速缓冲存储器行中的每一者的写入不是到所述高速缓冲存储器行的完全写入时,将多个脏掩码中的一者分配给所述高速缓冲存储器行,其中所述脏掩码指示所述高速缓冲存储器行中的数据单元的脏状态;以及存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别(ID)信息。
在另一实例中,本发明描述一种存储器系统,其包含:用于将数据写入到包含多个高速缓冲存储器行的高速缓冲存储器的装置;用于在到所述高速缓冲存储器行中的每一者的写入不是到所述高速缓冲存储器行的完全写入时将多个脏掩码中的一者分配给所述高速缓冲存储器行的装置,其中所述脏掩码指示所述高速缓冲存储器行中的数据单元的脏状态;以及用于存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别(ID)信息的装置。
在另一实例中,本发明描述一种系统,其包含:处理器;耦合到所述处理器的主存储器;耦合到所述处理器的高速缓冲存储器。所述高速缓冲存储器包含:控制器;多个高速缓冲存储器行;以及脏缓冲器。所述脏缓冲器包含脏掩码。所述控制器在到所述高速缓冲存储器行中的每一者的写入不是到所述高速缓冲存储器行的完全写入时,将所述脏掩码中的一者分配给所述高速缓冲存储器行。所述脏掩码指示所述高速缓冲存储器行中的数据单元的脏状态。所述控制器存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别(ID)信息。
在另一实例中,本发明描述一种操作存储器系统的方法,其包含:使用指示到高速缓冲存储器中的高速缓冲存储器行的写入不是完全写入的脏旗标来跟踪所述高速缓冲存储器行的状态;在到所述高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时,将脏掩码分配给所述高速缓冲存储器行;以及跟踪所述所分配脏掩码的识别(ID)信息附加到所述特定高速缓冲存储器行,使得可存取所述脏掩码。
在另一实例中,本发明描述一种高速缓冲存储器系统,其包含:用于使用指示到高速缓冲存储器中的高速缓冲存储器行的写入不是完全写入的脏旗标来跟踪所述高速缓冲存储器行的状态的装置;用于在到所述高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时将脏掩码分配给所述高速缓冲存储器行的装置;以及用于跟踪所述所分配脏掩码的识别(ID)信息附加到所述特定高速缓冲存储器行使得可存取所述脏掩码的装置。
在另一实例中,本发明描述一种非暂时性计算机可读媒体。所述计算机可读媒体包含在执行时致使可编程处理器进行以下操作的指令:使用指示到高速缓冲存储器中的高速缓冲存储器行的写入不是完全写入的脏旗标来跟踪所述高速缓冲存储器行的状态;在到所述高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时,将脏掩码分配给所述高速缓冲存储器行;以及跟踪所述所分配脏掩码的识别(ID)信息附加到所述特定高速缓冲存储器行,使得可存取所述脏掩码。
一或多个实例的细节陈述于附图及以下描述中。其它特征、目标及优势将从描述及附图以及权利要求书中显而易见。
附图说明
图1是说明可实施本发明的技术的实例处理系统的框图,所述处理系统包含处理器、高速缓冲存储器及主存储器。
图2是说明可实施本发明的技术的图1的实例高速缓冲存储器的额外细节的框图。
图3是说明可实施本发明的技术的高速缓冲存储器行的实例的框图。
图4A及4B是说明使用本发明的技术的在高速缓存中的数据处理的实例的概念图。
图5是说明根据本发明的技术的实例方法的流程图。
图6是说明根据本发明的技术的实例方法的另一流程图。
具体实施方式
用以维持数据相干性的一个方案有时称为“读取-分配-写入”方案。在接收到写入请求时,处理器可首先从系统存储器读取目标高速缓冲存储器行,且接着所述处理器可将所选数据单元(例如字节)写入到高速缓冲存储器。未写入的数据单元与系统存储器具有相同值。在从高速缓存收回高速缓冲存储器行时,将整个高速缓冲存储器行发送到系统存储器。任何未受影响的数据单元可被写入相同值。利用此方案,到高速缓冲存储器行的任何写入导致对系统存储器的读取。此导致系统存储器的额外业务及对写入请求的不合需要的时延。在现代数字系统中,存储器带宽通常可能是系统性能的瓶颈。对于图形处理单元(GPU)可尤其如此。因此,此方案归因于系统存储器的增大的业务而可能不是优选的。
用以维持数据相干性的另一方案涉及存储所谓的“字节脏掩码”。(数据单元通常可一次一个字节地存取)。字节脏掩码指示高速缓冲存储器行中的是脏的任何字节。在字节包含不同于较高层级存储器(例如,系统存储器)的数据且尚未被写入到较高层级存储器,使得在高速缓存与系统存储器中可能存在不一致数据时,所述字节是脏的。举例来说,字节脏掩码可用以指示是否已发生对高速缓冲存储器行的修改,使得需要将改变写入到系统存储器。因此,在写回高速缓存时,字节脏掩码中的位可指示有必要将高速缓冲存储器行写回到存储器系统阶层中的次高存储器层级,例如系统存储器。
替代对于整个高速缓冲存储器行使用1位脏位,可对于每一高速缓冲存储器行存储1位/字节脏掩码。在被收回时,脏掩码可与高速缓冲存储器行数据一起作为字节写入启用数据发出,以使得可确定包含不同于较高层级存储器中的对应数据的数据的脏字节。“非脏”字节(即,尚未写入且仍与较高层级存储器中的对应数据相同的字节)可不写入到系统存储器。利用此类型的方案,系统将掩码与数据一起存储在每一高速缓冲存储器行中。对于每一字节利用1位掩码,掩码随机存取存储器(RAM)为数据RAM的1/8,从而存在大的存储器区域成本。由于RAM架构,掩码RAM区域通常可能大于RAM的总体区域的1/8。作为说明,在一个实例中,高速缓存为8千字节(KB)(使用512x128位RAM),区域在28nm技术中为约0.061mm2。然而,在此实例中,256x32位的掩码RAM具有0.013mm2的区域,其为高速缓冲存储器的区域的21%。
用于存储上文所描述的脏字节掩码系统的实例架构说明于表1中。在一个实例中,假定高速缓存具有128个高速缓冲存储器行(0...127),每一行中具有1千字节数据。在使用以下表1的架构存储字节脏掩码时,每一高速缓冲存储器行需要1024位脏字节掩码,其消耗128K位寄存器,如下文表1中所示。
如表1中所说明,高速缓冲存储器行可包含有效旗标以指示高速缓冲存储器行中的数据是否有效,且包含标签,所述标签指示主存储器中的对应于高速缓存中的数据的地址。数据(表1中未展示)也是高速缓冲存储器行的部分。脏旗标用以指示是否已写入高速缓冲存储器行的数据中的任何字节以使得其不再匹配主系统存储器中的数据。高速缓冲存储器行还可包含脏字节掩码,所述脏字节掩码指示高速缓冲存储器行的哪些字节是脏的。
有效高速缓存行 | 地址 | 高速缓存行被写入 | 指示哪一字节是脏的 |
有效0 | 标签0 | 脏 | 脏字节掩码0[1023:0] |
有效1 | 标签1 | 脏 | 脏字节掩码1[1023:0] |
有效2 | 标签2 | 脏 | 脏字节掩码2[1023:0] |
... | ... | ... | |
... | ... | ... | |
... | ... | ... | |
有效127 | 标签127 | 脏 | 脏字节掩码127[1023:0] |
表1 用于字节脏掩码的标签架构
上文所描述的读取-分配-写入方案及存储字节脏掩码方案两者都具有其自身的缺点。读取-分配-写入方案采用额外带宽,且存储字节脏掩码导致区域惩罚(areapenalty)。在表1中说明的实例中,字节脏掩码对于高速缓冲存储器行中的每一字节存储一位。如果特定位起作用,例如逻辑“1”,则对应字节是脏的。其它配置也是可能的。
在上文所论述的第二架构中,高速缓冲存储器存储字节脏掩码。所述系统中的每一高速缓冲存储器行具有用于字节脏掩码的专用位置。仅不覆盖整个高速缓存的写入请求才将使用脏掩码。读取请求将不使用任何脏掩码,且覆盖整个高速缓存行的写入请求可使用1位脏旗标。因此,使系统中的每一高速缓冲存储器行具有用于字节脏掩码的专用位置可能比必要情况使用的存储器大。
根据本发明的技术,替代对于每一高速缓冲存储器行中的每一字节使用1位掩码,可对于每一高速缓冲存储器行使用1位旗标结合一池字节脏掩码。因此,覆盖整个高速缓冲存储器行的写入请求可使用1位脏旗标来描述高速缓冲存储器的状态。因此,可替代用于每一字节的1位掩码来使用用于整个高速缓冲存储器行的1位旗标。对于脏但不全脏的每一高速缓冲存储器行,可提供指向字节脏掩码存储器位置中的一者的指针。在一实例中,所述池字节脏掩码中的每一掩码可对于高速缓冲存储器行中的每一字节存储一位。如果特定位起作用,例如逻辑“1”,则对应字节是脏的。其它配置也是可能的。
举例来说,指针可用以指向单独的字节脏掩码存储器位置。单独字节脏掩码存储器位置可用以存储字节脏掩码。每一字节脏掩码指示特定高速缓冲存储器行的哪些字节是脏的。换句话说,脏字节是高速缓冲存储器行中的已被写入而使得其不再含有与主存储器中的对应存储器位置相同的数据的那些字节。字节脏掩码存储器位置的数目可小于高速缓冲存储器行的数目,因为一般来说,并非高速缓冲存储器中的所有高速缓冲存储器行都将同时具有是脏的字节。因此,可在此类实例系统中使用较小存储器。
通常,在利用图形处理单元(GPU)的应用中,作为一实例,大多数请求为读取请求。读取请求不会致使高速缓冲存储器行中的字节变脏,因为此类读取并不改变高速缓冲存储器行中的值。换句话说,如果在读取之前,高速缓冲存储器行含有与对应较高层级存储器(例如主存储器)相同的数据,则高速缓冲存储器行在读取之后也将含有与所述对应较高层级存储器相同的数据。另外,大多数写入请求具有连续地址。因此,一般来说,在利用GPU的应用中,相邻写入请求将最终覆盖整个高速缓冲存储器行。假定数据不被相同数据覆写,那么如果已写入整个高速缓冲存储器行,则每一字节的内容都是脏的。换句话说,在高速缓冲存储器行的每一字节不含有与对应较高层级存储器位置相同的数据时,则不再有必要跟踪哪些字节是脏的,因为所有字节都是脏的。根据本发明的技术,可用1位脏旗标及到单独字节脏掩码存储器位置的指针来替换脏掩码,所述字节脏掩码存储器位置可为一池脏掩码的部分。所述1位脏旗标指示高速缓存行是否是脏的,且如果是,则由所述指针识别的单独字节脏掩码存储器位置指示高速缓存行的哪些字节是脏的。可使用较小数目的脏掩码,因为每一高速缓冲存储器行不需要个别脏掩码。即,一些高速缓冲存储器行不是脏的,即,并不包含任何脏字节。
本发明提出一种用于字节可写高速缓存的写入架构。所提出的架构可具有特定特征。作为一个实例,替代对于每一高速缓冲存储器行使用专用脏掩码,整个高速缓存可共享一池脏掩码。在与对于每一高速缓冲存储器行包含字节脏掩码的系统相比时,所述池共享脏掩码可使用较小存储器。可允许使用数目比高速缓冲存储器行的数目小的脏掩码的系统操作的一个方面为读取操作的频率。读取操作并不改变高速缓冲存储器,且因此并不导致使用来自所述池脏掩码的脏掩码。因此,脏掩码的数目可显著小于高速缓冲存储器行的数目,因为如上文所论述,一些系统可执行大数目的读取(其并不致使数据变脏)。因为许多数据可能不(例如)与其它高速缓冲存储器行同时变脏,因此可使用一池字节脏掩码替代用于每一高速缓冲存储器行的字节脏掩码。此外,在一些系统中,写入往往是到相同高速缓冲存储器行,这意味着这些行往往会变得“全脏”。全脏高速缓冲存储器行不使用字节脏掩码,因为每一字节都是脏的。
在说明脏掩码的数目可显著小于高速缓冲存储器行的数目的实例中,具有1000个高速缓冲存储器行的高速缓存可使用仅20个脏掩码。如果写入请求不写入到整个高速缓冲存储器行而使得仅字节的子组是脏的,则可将脏掩码空间分配给特定高速缓冲存储器行。所分配脏掩码空间的识别(ID)可附加到此高速缓冲存储器行,以使得可在收回此高速缓冲存储器行时存取所述掩码。一般来说,ID可与例如脏旗标及/或全脏旗标等高速缓存行旗标一起存储,所述脏旗标可指示高速缓存行中的至少一个字节是脏的,所述全脏旗标可指示高速缓冲存储器行中的每一字节都是脏的。此可允许存取便利性。然而,在其它实例中,ID可存储于其它存储器存储位置中。
在关于特定高速缓冲存储器行的信息不再存储于脏字节掩码中的意义上,可收回高速缓冲存储器行。例如在用来自主存储器的新信息写入高速缓冲存储器行使得其不再脏时或在高速缓冲存储器行变得全脏且因为每一字节都是脏的而不需要跟踪哪些字节是脏的时,可发生此情形。在一些情况下,如果系统中的每一脏字节掩码都在使用中,则可能有必要收回高速缓冲存储器行,即使其是脏的但不全脏。因此,系统可从主存储器16写入高速缓冲存储器行,以使得高速缓冲存储器行不再脏。
其次,命中附加有脏掩码的高速缓冲存储器行(例如,相对于特定脏掩码在使用中的高速缓冲存储器行)的任何写入请求应引起对应脏掩码的更新。在更新脏掩码时,检测逻辑可检测脏掩码是否都是1。一旦脏掩码全部是1,从而指示高速缓存行是全脏的,则可通过将脏掩码的ID设定为无效而使其从高速缓冲存储器行解除附加。此指示高速缓冲存储器行是“全脏”的。在需要将整个高速缓冲存储器行写入到存储器阶层中的次高存储器时,高速缓冲存储器行是全脏的。换句话说,在已写入整个高速缓冲存储器行而使得存储器阶层中的次高存储器(例如主系统存储器或某一其它中间存储器)不为最新时,高速缓冲存储器行是全脏的。
每一高速缓冲存储器行可使用1位“全脏”旗标来指示特定高速缓冲存储器行是否全脏。因此,对于全脏高速缓冲存储器行,其脏掩码可用于其它请求。举例来说,用于全脏高速缓冲存储器行的脏掩码可用于重新分配以指示未完全写入(例如,全脏)的另一高速缓冲存储器行。高速缓冲存储器行的全脏状态可由上文所提及的完全旗标指示。由此,不再需要用于那一高速缓冲存储器行的脏掩码,因为对于全脏高速缓冲存储器行,那一高速缓冲存储器行的每一字节都是脏的。因此,在此实例中,掩码对于跟踪是脏的字节是不必要的。
为在字节脏掩码的其它用途与本发明所提出的一些技术的实例之间进行比较,假定高速缓冲存储器散列128个高速缓冲存储器行,每一者具有1千字节数据。在使用其它技术存储字节脏掩码时,每一高速缓冲存储器行需要1024位脏字节掩码,其消耗128K位寄存器,如上文表1中所示。
利用在本发明中提出的技术,在一个实例中,每一高速缓冲存储器行可使用1位“全脏”旗标来指示特定高速缓冲存储器行是否是全脏的。如果特定高速缓冲存储器行不是全脏的,则3位索引(在下文表2中称为3位脏缓冲器索引)将指示哪一缓冲器正存储用于特定高速缓冲存储器行的脏字节掩码(DirtyByteMask)。假定大多数高速缓冲存储器行是非脏或全脏,则8项缓冲器(脏缓冲器)可足够大以供用于具有128个高速缓冲存储器行的高速缓存。
缓冲器中的每一项可存储1k位旗标及可包括8k位寄存器的8项脏缓冲器。在一个实例中,使用用于标签中的每一高速缓冲存储器行的四个额外位,如表2中所说明。128个高速缓冲存储器行的总位消耗为4*128=512位。与8k位脏缓冲器组合,用于跟踪数据相干性(即,跟踪哪些字节是脏的及哪些字节不是脏的)的总位数目为8.5k位,其比在上文所提及的其它方案中用于存储字节脏掩码所需的128k位小得多。表2中说明的高速缓冲存储器行还包含标签,所述标签指示含有对应于高速缓冲存储器中的数据的数据的主存储器(或某一较高层级存储器)中的地址。举例来说,标签可指示其中存储在特定高速缓存行上的数据还可用以由处理器读取的主存储器中的地址。
表2 一个所提出方法的标签架构
图1是说明包含处理器12、高速缓冲存储器14及主存储器16的实例处理系统10的框图。处理器12可为微处理器、数字信号处理器(DSP)、中央处理单元(CPU)、图形处理单元(GPU)或其它处理器。另外,处理器12可包含数字逻辑,例如现场可编程门阵列(FPGA)、复合可编程逻辑装置(CPLD)及实施处理功能性的其它数字逻辑。处理器12可包含其一或多个组合。举例来说,处理器12可包含GPU以及提供处理功能性的其它逻辑。在一些实例中,处理器12可为一或多个处理器,例如多个CPU、多个DSP、一或多个CPU与DSP的组合,或CPU、DSP、GPU、FPGA、CPLD或其它处理逻辑的其它组合。
处理器12可使用高速缓冲存储器14用于暂时性数据读取及写入以减小原本将有必要存取主存储器16(其可为主系统存储器)的平均存储器存取时间。在与主存储器16相比时,高速缓冲存储器14可较小,例如,具有较低量的数据存储。在与主存储器16相比时,高速缓冲存储器14还可为较快存储器。举例来说,从高速缓冲存储器14的读取可比从主存储器16的读取花费较少时钟循环来完成。在一些实例中,高速缓冲存储器可与处理器12在相同芯片上,如虚线24所指示。在其它实例中,高速缓冲存储器可在可邻近于处理器12的单独芯片中。在一些实例中,高速缓冲存储器14可服务于多个处理器。高速缓冲存储器14还可包含多个阶层层级,例如层级1及层级2高速缓存两者。在高速缓冲存储器设计中,一般来说可能存在时延与命中率之间的折衷。较大高速缓存可具有更好的命中率但时延较长。为解决此折衷,许多系统可使用多个高速缓存层级,其中小的快速高速缓存由较大、较慢的高速缓存来补充。一般来说,多层级高速缓存可通过首先检查通常最小的层级1(L1)高速缓存来操作。如果层级1高速缓存具有命中,则处理器继续进行。如果较小高速缓存未命中,则一般来说,可检查次大高速缓存(L2)。可用越来越高层级的高速缓存来继续此过程,直到可检查主存储器16。
另外,高速缓冲存储器14可存储来自主存储器16的频繁使用的存储位置的数据的副本。只要大多数存储器存取高速缓冲存储于高速缓冲存储器14中,存储器存取的平均时延就可比主存储器16的时延更接近于高速缓冲存储器14的时延。将理解,高速缓冲存储器14读取或写入发生的百分比比主存储器读取及写入的百分比越高,使用高速缓冲存储器14及主存储器16的系统的存储器存取性能一般来说将越高。
一般来说,主存储器16可为随机存取存储器(RAM)或其它类型的易失性计算机存储器。在一些实例中,主存储器16可为RAM与只读存储器(ROM)两者的混合。在一些情况下,如果需要存储可执行代码但极少或不需要存储数据,则主存储器16可为例如非易失性存储器(例如,ROM)。在其中需要存储极小量的数据的情况下,可使用单独存储器,可使用寄存器,可使用高速缓冲存储器14,或可使用其它类型的存储装置。在各种实例中,主存储器16可例如经由系统总线26耦合到处理器12。一般来说,主存储器16将被视为比高速缓冲存储器14层级高的存储器。一般来说,在与高速缓冲存储器14相比时,主存储器16可较大,例如具有较大量的数据存储。另外,一般来说,当与高速缓冲存储器14相比时,主存储器16将较慢。举例来说,与处理器12读取或写入数据到高速缓冲存储器14所花费的时间相比,读取或写入数据到主存储器16所花费的时间可能较长。
在所说明的实例中,处理器12耦合到高速缓冲存储器14以允许由处理器12读取及写入到高速缓冲存储器14。另外,处理器12耦合到主存储器16以允许由处理器12读取及写入到主存储器16。本文所述的技术可应用于其中高速缓冲存储器14与主存储器仅经由处理器12耦合、可结合本文所述的技术使用的存储器配置中。另外,在所说明的实例中,主存储器16可耦合到高速缓冲存储器14以允许在无需处理器12干预的情况下在主存储器16与高速缓冲存储器14之间传送数据。举例来说,数据传送控制器22可控制此数据传送。如所说明,数据传送控制器22可在主存储器16及高速缓冲存储器14外部。在其它实例中,数据传送控制器22可为主存储器16或高速缓冲存储器14的部分。数据传送控制器22还可包含在主存储器16及高速缓冲存储器14中的组件或在主存储器16、高速缓冲存储器14中以及在这些装置外部的组件。在一些实例中,高速缓存控制器20与数据传送控制器22可为单个控制器。将理解,其它存储器配置也是可能的。举例来说,高速缓存可连接到主存储器而不连接到处理器,或高速缓存可连接到处理器而不连接到主存储器。在另一实例中,具有多个较高层级的存储器的系统可结合本文所述的技术来使用。举例来说,一些系统可具有与处理器12在相同芯片上的第一层级高速缓存及与处理器12以及主存储器16在不同芯片上的第二层级高速缓存(未展示)。一般来说,任何高速缓冲存储器(例如,第一层级高速缓存、任选第二层级高速缓存,等)将为与主存储器16分离的存储器装置且一般来说不会与主存储器16在相同芯片上。
在一实例中,高速缓冲存储器14为字节可写高速缓存,其包含用于跟踪哪一(如果有)字节处理器12已写入数据及尚未写入数据的各种方面。高速缓冲存储器14不使用用于每一高速缓冲存储器行的专用掩码。而是,在一个实例中,在高速缓冲存储器14中,整个高速缓存共享脏掩码空间18中的一池脏掩码。所述池脏字节掩码或旗标可按需要分配给高速缓冲存储器14的不同行。一般来说,此类高速缓存架构可比对于每一高速缓冲存储器行包含一脏掩码的高速缓存系统使用较少存储器位置、较小功率及较小区域。通过共享一池脏行,可使用较少的总存储器位置。
如图1中所说明,脏掩码空间18中的所述池脏掩码可存储于高速缓冲存储器14的一部分中。因此,脏掩码空间18中的所述池脏掩码可为与高速缓冲存储器14相同的物理部分的部分。然而,在其它实例中,脏掩码空间18中的所述池脏掩码可存储于与高速缓冲存储器分离的存储器或分离的物理部分中。此单独存储器位置可耦合到高速缓冲存储器14以允许执行本申请案的技术。如上文所论述,脏掩码的数目可小于高速缓冲存储器14中的高速缓冲存储器行的数目。举例来说,具有1000个高速缓冲存储器行的高速缓冲存储器14可使用仅20个脏掩码。
脏掩码空间18中的脏掩码指示字节是“脏”的。当在末次系统存储器传送之后已用值写入字节时,所述字节是脏的。所写入的值一般来说将不同于主存储器16中的对应值。换句话说,在已写入值而使得存储于字节中的值可能不与存储于主存储器16中的对应存储器位置中的值相同时,所述字节是脏的。相反,在存储于字节中的值匹配存储于主存储器16中的对应存储器位置中的值时,即,在我们知晓其从末次系统存储器传送以来尚未被写入时,所述字节不是脏的。将理解,各种实例系统并不跟踪高速缓冲存储器中的特定字节是否正存储不同于存储于主存储器16中的对应值的值。而是,如果在末次系统存储器传送之后发生到高速缓冲存储器中的那一字节的写入,则可假定,值不再匹配存储于主存储器16的对应存储器位置中的值。一般来说,在高速缓冲存储器行的特定字节是脏的但并非那一高速缓冲存储器行的每一字节都是脏的时,脏掩码空间18中的脏掩码允许系统在脏的字节与不脏的字节之间进行区分。如果特定高速缓冲存储器行中的字节都不是脏的,则那一高速缓冲存储器行不需要脏掩码,至少在那一特定时间不需要。在某一其它时间,那一高速缓冲存储器行的一或多个字节可能是脏的。因此,在那时可使用脏掩码空间18中的脏掩码。另一方面,在特定高速缓冲存储器行的所有字节都是脏的时,则那一高速缓冲存储器行也不需要脏掩码。再次,对于至少那一特定时间可为此情况。另外,不必跟踪哪些特定字节是脏的,因为全脏旗标可能已经指示高速缓冲存储器行中的每一字节都是脏的。相对于下文论述的图4A及4B的实例详细地描述此方面。
在一些实例中,高速缓冲存储器14及脏掩码空间18可由高速缓存控制器20控制。高速缓存控制器20可经配置以在到高速缓冲存储器行中的每一者的写入不是到所述高速缓冲存储器行的完全写入时,将脏掩码中的一者分配给相应高速缓冲存储器行。在一实例中,所述脏掩码中的每一者指示高速缓冲存储器行中的一者中的数据单元的脏状态。另外,高速缓存控制器20可存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别(ID)信息。
高速缓存控制器20可为可实施本发明的各种方面的数字逻辑电路、处理器或其它电路。高速缓存控制器20可包含硬件、软件或硬件与软件的某一组合。另外,尽管高速缓存控制器20说明为在高速缓存14内部,但在其它实例中,高速缓存控制器20的全部或一部分可与高速缓冲存储器14分离。在其它实例中,处理器12可用以控制高速缓冲存储器14的功能性以实施控制功能性。
实施本发明的各方面的装置、系统及方法还可跟踪一系列字节是否“全脏”。在那一位置中的每一个别字节都是脏的时,高速缓冲存储器14中的字节是全脏的。如果高速缓冲存储器位置中的每一个别字节都是脏的(位置为全脏),则不需要对于那一位置使用脏掩码空间18中的脏掩码来跟踪哪些个别字节是脏的。还相对于下文论述的图4A及4B的实例更详细地描述此情形。
图1中所说明的系统可经配置以实施包含包括一系列高速缓冲存储器行的高速缓冲存储器14的存储器系统。每一高速缓冲存储器行可包含全脏旗标及脏缓冲器索引。包含高速缓冲存储器系统的处理系统10还可包含包括脏掩码空间的脏缓冲器。在到特定高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时,脏掩码空间可分配给所述高速缓冲存储器行,其中所分配脏掩码空间的识别(ID)附加到所述特定高速缓冲存储器行,使得可存取所述脏掩码空间。
图2是说明可实施本发明的技术的图1的实例高速缓冲存储器14的框图。高速缓冲存储器14可包含用于存储数据及与所述数据有关的各种其它信息的数个高速缓冲存储器行110、112、114、116、118、120、122。举例来说,高速缓冲存储器行110、112、114、116、118、120、122可包含旗标以指示高速缓冲存储器行中的数据是否有效。高速缓冲存储器行110、112、114、116、118、120、122还可包含标签,所述标签指示对应于高速缓存中的所述数据的主存储器中的地址。将理解,展示小数目的高速缓冲存储器行110、112、114、116、118、120、122以用于说明,且通常将存在极大量的高速缓冲存储器行。可随高速缓冲存储器行110、112、114、116、118、120、122中的每一者包含脏旗标以指示数据中的任何字节是否已被写入以使得其不再匹配主存储器16中的数据。
另外,可随高速缓冲存储器行110、112、114、116、118、120、122包含全脏旗标以指示高速缓冲存储器行110、112、114、116、118、120、122中的一者中的每一字节是否是脏的。在例如处理器12已写入到高速缓冲存储器行中的所有字节且高速缓冲存储器行中的所有字节含有与主存储器16中的对应存储器位置中的数据值不同的值时,可发生此情形。
在高速缓冲存储器行110、112、114、116、118、120、122脏但不全脏时,高速缓冲存储器行110、112、114、116、118、120、122还可包含脏缓冲器索引,所述脏缓冲器索引充当到脏掩码空间108中的脏掩码中的位置的指针。在高速缓冲存储器行全脏时,不必使用一系列旗标或掩码来跟踪哪些字节是脏的。这是因为所有字节都是脏的。因此,在高速缓冲存储器行110、112、114、116、118、120、122全脏时,对应于存储于脏掩码空间108中的所述高速缓冲存储器行110、112、114、116、118、120、122的任何位置可分配给另一高速缓冲存储器行110、112、114、116、118、120、122。因此,脏掩码空间108的部分可动态地分配给脏但不全脏的高速缓冲存储器行110、112、114、116、118、120、122。另外,可从全脏或根本不脏的任何高速缓冲存储器行110、112、114、116、118、120、122动态地解除分配脏掩码空间108。换句话说,在特定高速缓冲存储器行中的数据全脏或不脏时,可从脏掩码空间108“收回”关于所述高速缓冲存储器行的信息。在收回所述高速缓冲存储器行之后,可重新分配由此信息使用的空间以用于另一高速缓冲存储器行。
在又其它情况下,如果例如一或多个高速缓冲存储器行110、112、114、116、118、120、122不脏且从未脏,则掩码空间108可能从不动态地分配给高速缓冲存储器行110、112、114、116、118、120、122中的一或多者。或者,一或多个高速缓冲存储器行110、112、114、116、118、120、122可能全脏且可能从未脏过。例如在到高速缓冲存储器行的一个写入中同时写入整个高速缓冲存储器行(例如,高速缓冲存储器行中的每一字节)而使得所述高速缓冲存储器行从不脏变为全脏时,可能发生此情形。
图2中所说明的高速缓冲存储器14可经配置以实施存储器系统。高速缓冲存储器14可包含一系列高速缓冲存储器行。每一高速缓冲存储器行可包含全脏旗标及脏缓冲器索引。另外,高速缓冲存储器14还可包含包括脏掩码空间的脏缓冲器。在其它实例中,脏缓冲器可在高速缓冲存储器14外部。在到特定高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时,脏掩码空间可分配给所述高速缓冲存储器行,其中所分配脏掩码空间的识别(ID)附加到所述特定高速缓冲存储器行,使得可存取所述脏掩码空间。
图3是说明实例高速缓冲存储器行110的框图,所述高速缓冲存储器行是可实施本发明的技术的图2的高速缓冲存储器行110、112、114、116、118、120、122中的一者。高速缓冲存储器行110包含有效旗标300以指示高速缓冲存储器行中的数据是否有效。高速缓冲存储器行110还包含标签302,所述标签指示含有对应于高速缓冲存储器14中的数据的数据(即,还可用于高速缓冲存储器14中的处理器12的主存储器16数据)的主存储器16中的地址。数据304也是高速缓冲存储器行110的部分,且可包含例如数据304的三个数据字节306、308、310。在其它实例中,较多或较少字节也是可能的。
在所说明的实例中,脏旗标312可用以指示数据中的任何字节是否已被写入而使得其可能不再匹配主存储器16中的数据,例如,处理器12是否已将新值写入到高速缓冲存储器行110。将理解,处理器12可将与已经存在的数据值相同的数据值写入到高速缓冲存储器行,但一般来说,值将不相同。另外,一般来说,实施这些技术的系统可能实际上并不检查以查看值是否已改变。而是,在发生各种写入时可假定例如“脏”或“全脏”等状态。每当存储于高速缓冲存储器行的一或多个字节中的值改变且这些值不再与存储于主存储器16中的对应位置中的值相同时,则已改变的字节是“脏”的。在高速缓冲存储器行中的一些但不是所有字节是脏的时,系统可使用掩码跟踪哪些字节是脏的以指示是脏的特定字节。掩码可存储于脏掩码空间18中的一池存储器位置中的一者中。
可包含全脏旗标314以指示高速缓冲存储器行110中的每一字节是否是脏的。在此情况下,如果高速缓冲存储器行110全脏,则不需要在脏掩码空间18中具有脏缓冲器掩码。在高速缓冲存储器行110脏但不全脏时,高速缓冲存储器行110还可包含脏缓冲器索引316,所述脏缓冲器索引充当到脏掩码空间18中的位置的指针。
如图3中所说明,在一些实例中,脏旗标312及全脏旗标314可用以指示每一高速缓冲存储器行110的状态。在其它实例中,可使用指示高速缓冲存储器行不脏的“清洁”旗标及全脏旗标。一般来说,清洁旗标可为脏旗标312的反量。其它实例可包含清洁旗标、脏旗标及全脏旗标。
将理解,在高速缓冲存储器行110全脏时,不必使用一系列旗标或掩码来跟踪哪些字节是脏的。这是因为所有字节都是脏的。在所有字节都是脏的时,单个“全脏”旗标提供足够信息来确定哪些字节是脏的。存储于脏掩码空间18中的指示哪些字节是脏的的任何掩码可由另一高速缓冲存储器行使用。因此,在高速缓冲存储器行110全脏时,对应于存储于脏掩码空间18中的高速缓冲存储器行110的任何位置可分配给另一高速缓冲存储器行以指示脏字节。因此,脏掩码空间18可动态地分配给脏但不全脏的高速缓冲存储器行110、112、114、116、118、120、122。可从全脏或根本不脏的任何高速缓冲存储器行110、112、114、116、118、120、122动态地解除分配脏掩码空间18。
举例来说,命中附加有存储于高速缓冲存储器行中的脏掩码的高速缓冲存储器行110、112、114、116、118、120、122的任何写入请求可能引起对应脏掩码的更新。在更新脏掩码时,检测逻辑可检测脏掩码是否都是1,即,对于高速缓冲存储器行中的每一字节存在“1”。一旦脏掩码全部是1,则高速缓冲存储器行是全脏的。因此,可通过设定脏掩码314以指示高速缓冲存储器行是“全脏”的来从高速缓冲存储器行110解除附加脏掩码。在已写入高速缓冲存储器行中的每一字节而使得每一字节不包含与主存储器中的对应字节相同的数据时,高速缓冲存储器行是全脏的。此时,需要将整个高速缓冲存储器行写入到存储器阶层中的次高存储器,例如主存储器16。换句话说,在已写入整个高速缓冲存储器行而使得存储器阶层中的次高存储器不是最新时,高速缓冲存储器行是全脏的。每一高速缓冲存储器行可使用1位“全脏”旗标来指示特定高速缓冲存储器行是否是全脏的。因此,对于全脏高速缓冲存储器行,其脏掩码可用于重新分配以指示未完全写入的另一高速缓冲存储器行。高速缓冲存储器行的全脏状态可由全脏旗标指示。由此,对于那一高速缓冲存储器行不再需要脏掩码,因为对于全脏高速缓冲存储器行,那一高速缓冲存储器行中的每一字节都是脏的。掩码对于跟踪脏的字节是不必要的。
如图3中所说明,高速缓冲存储器行可经配置以包含全脏旗标314及脏缓冲器索引316。在到特定高速缓冲存储器行110的写入不是到所述特定高速缓冲存储器行的完全写入时,脏掩码空间18可为可分配给所述高速缓冲存储器行110的高速缓冲存储器14或单独存储器装置的部分。所分配脏掩码空间的识别(ID)附加到所述特定高速缓冲存储器行110,使得可存取所述脏掩码空间18。
图4A及4B是说明使用本发明的技术的高速缓冲存储器14中的数据处理的实例的概念图。图4A说明单个高速缓冲存储器行110中的在五不同时间点过程上的值。时间0指示初始状态。时间1到3说明到高速缓冲存储器行110的各种数据写入。在与例如读取-分配-写入方案相比时,所提出的方案可节省系统存储器读取带宽。时间4说明从地址723的读取及高速缓存行777的收回,使得关于高速缓冲存储器行777的信息不再存储于脏字节掩码中,因为高速缓冲存储器行已变得全脏且不需要跟踪哪些字节是脏的(因为每一字节都是脏的)。图4B中说明用于脏掩码空间18中的单个地址及主存储器16中的单个地址的值以及这些值如何在五个不同时间点改变。
如所论述,说明五个不同时间。这五个不同时间点为时间0到时间4。时间0为初始状态。在时间0处,数据尚未写入到高速缓冲存储器行110。一般来说,各种旗标及数据寄存器在时间0处为何值可能不是特别重要。
数据可接着从主存储器16写入到高速缓冲存储器行110。在所说明的实例中,在高速缓冲存储器14从处理器12接收到写入请求时,其在那时并不知晓主存储器16中的数据且不提取所述数据。而是,可根据处理器12的需要一次一个字节地将数据写入到高速缓冲存储器14。如果实际上从不需要所述数据,则不将其写入到高速缓冲存储器14。此可节省从主存储器16到高速缓冲存储器14的读取带宽。此数据可如同其在时间1、2及3处被写入那样逐字节地存储于高速缓冲存储器行110中,且可由处理器12读取或写入。在时间1、2及3处,以不同方式修改数据304,如下文更详细地论述。在时间4处,将数据304从高速缓冲存储器行110写回到主存储器16,以使得主存储器16与高速缓冲存储器行110再次存储相同数据。此时,可收回高速缓冲存储器行110,且可将数据从地址723写入到高速缓冲存储器行110。可将数据写入到高速缓冲存储器行110,因为处理器12需要所述数据。
如图4A的实例中所说明,在时间0处,我们一般“不关心”高速缓冲存储器行110中的任何数据。值可为某一初始状态或来自到高速缓冲存储器行110的先前写入的垃圾数据。“不关心”由“X”指示。大写“X”指示十六进制值(各自为4位),且小写“x”指示个别位。因此,在此实例中,有效旗标300、脏旗标312及全脏旗标314为个别位。在另一实例中,可能在时间0处存储的值是已知有效值,而只是不再需要处理。
如图4A的实例中所说明,标签302包含三个十六进制值(总共12位)。标签302指示现在存储于高速缓冲存储器行中的数据所来源于的主存储器16中的地址。脏缓冲器索引316包含三个二进制数字。脏缓冲器索引316充当到掩码的指针,其指示哪些字节是脏的。
数据304包含三个字节的数据。每一数据字节306、308、310为两个十六进制数字。一个字节为8位,且每一十六进制数字表示4个位。在所说明的实例中,脏掩码空间18中的每一地址包含三个位。在所说明的实例中,主存储器16包含六个十六进制数字(总共24位)。
图4A到4B所说明的实例不是读取-分配-写入方案。因此,因为在图4A到4B的实例中,处理器12不需要初始数据值,因此所述图未说明写入到高速缓冲存储器14的数据。在读取-分配-写入实例中,有效数据可从主存储器16写入到高速缓冲存储器14,更具体来说,数据可写入到高速缓冲存储器14的高速缓冲存储器行110。因此,有效旗标300为“1”。标签302将指示数据所来自的主存储器16中的地址为“777”。在此实例中,主存储器16,地址777将包含数据“AA AA AA”。
在时间1处,数据304被修改。更具体来说,数据字节308从其先前值改变为“00”。可例如由处理器12作为处理器12执行的过程的部分或通过从主存储器16到高速缓冲存储器14的直接存储器传送来进行此修改。因此,数据304是“脏”的,如由含有值“1”的脏旗标312所指示。三个数据字节306、308、310中的仅一者是脏的;具体来说,数据字节308是脏的。高速缓冲存储器行110不“全脏”,且全脏旗标314含有值“0”。因为高速缓冲存储器行110“脏”但不“全脏”(上文所论述的第二状态),因此需要脏缓冲器掩码来确定字节可写高速缓冲存储器14的哪些字节是脏的。举例来说,指示脏字节的位可存储于脏掩码空间18中。脏缓冲器索引316含有值“101”。此值为到脏掩码空间18中的地址的指针。脏掩码空间18的地址“101”说明于图4B中,且在时间1处,脏掩码空间18的地址“101”(5)含有二进制值“010”。此指示数据字节308是脏的,由“010”中的“1”指示。“010”中的第一个“0”指示数据字节306不脏,且“010”中的第二个“0”指示数据字节310不脏。因此,在图4B所说明的实例中,脏掩码空间18、地址“101”中的每一位可用以跟踪数据304的特定数据字节306、308、310的脏状态。
如图4A中所说明,在时间2处,数据304被修改。更具体来说,数据字节306从其先前值改变为“FF”。数据304仍是“脏”的,如由含有值“1”的脏旗标312所指示。三个数据字节306、308、310中的仅两者是脏的,具体来说,数据字节306及308是脏的。高速缓冲存储器行110不“全脏”且全脏旗标314含有值“0”。因为高速缓冲存储器行110“脏”但不“全脏”(再次为上文所论述的第二状态),因此需要脏缓冲器掩码以确定字节可写高速缓冲存储器14的哪些字节是脏的。举例来说,指示脏字节的位可存储于脏掩码空间18中。脏缓冲器索引316含有值“101”。此值为到脏掩码空间18中的地址的指针。脏掩码空间18的地址“101”说明于图4B中,且在时间2处,脏掩码空间18的地址“101”含有二进制值“110”。此指示数据字节306及308是脏的,由“110”中的“1”指示。“110”中的“0”指示数据字节310不脏。在图4B的所说明实例中,脏掩码空间18、地址“101”中的每一位可用以跟踪数据304的特定数据字节306、308、310的脏状态。
如图4A中所说明,在时间3处,数据304再次被修改。更具体来说,数据字节310从其先前值改变为“88”。数据304是“脏”的,如由含有值“1”的脏旗标312所指示。然而,此时,三个数据字节306、308、310中所有三者都是脏的。高速缓冲存储器行110在时间3处“全脏”。因此,全脏旗标314含有值“1”。因为高速缓冲存储器行110“全脏”(上文所论述的第三状态),因此不需要脏缓冲器掩码来确定字节可写高速缓冲存储器14的哪些字节是脏的。高速缓冲存储器行110的所有字节都是脏的。脏缓冲器索引316中的值在时间3处为“不关心”,即“xxx”。另外,脏掩码空间18、地址101的值为“不关心”,即“xxx”。此掩码空间可重新分配给另一高速缓冲存储器行110、112、114、116、118、120、122以跟踪脏字节状态。
在时间4处,如图4A中所说明,数据304写回到主存储器16,地址777。因此,在时间4处,主存储器16、地址777中的数据为“FF 00 88”。在时间4处,高速缓冲存储器行110处于上文所描述的第一状态“不脏”。在不脏状态中,存储于脏掩码空间18中的脏缓冲器掩码是不需要的,因为没有位是脏的。脏旗标312在时间4处含有值“0”,且全脏旗标314在时间4处也含有值“0”。换句话说,关于高速缓冲存储器行110的信息不再存储于脏字节掩码中,因为高速缓冲存储器行已变得全脏且不需要跟踪哪些字节是脏的(因为每一字节都是脏的)。在时间4处,高速缓冲存储器行110可存储例如与另一主存储器16地址(例如,地址723)有关的信息。
在一实例中,如上文所描述,如果写入请求不写入到整个高速缓冲存储器行,则脏掩码空间可分配给所述高速缓冲存储器行。所分配脏掩码空间的识别(ID)可附加到此高速缓冲存储器行,以使得在收回此高速缓冲存储器行时可存取所述掩码。
在一个实例中,脏掩码可用以跟踪多个数据字节中的特定数据字节。掩码内的特定位可用以标记数据字节是否已经由写入而改变,使得所述字节不再匹配例如主存储器中的对应字节的值。
在一实例中,使用掩码内的位来个别地标记多个数据字节中的每一者允许跟踪哪些已经由至少一个写入而更新。在一实例中,特定脏位可用以指示特定字节是脏的。可通过确定掩码中的每一位是否起作用来确定已更新多个数据字节中的每一者。
使用脏掩码允许确定是否已更新数据元素。举例来说,可提供特定逻辑电路以验证脏掩码中的所有脏位被标记为脏,例如通过对所有脏位进行布尔‘与’操作(Boolean‘and’operation)。此时,数据元素组可标记为回写候选者。
命中附加有脏掩码的高速缓冲存储器行的任何写入请求应引起对应脏掩码的更新。在更新脏掩码时,检测逻辑可检测脏掩码是否都是1。一旦脏掩码全部是1,从而指示特定高速缓存行中的字节是全脏的,则可通过将ID设定为无效而使其从高速缓冲存储器行解除附加。此指示高速缓冲存储器行是“全脏”的。在需要将整个高速缓冲存储器行写入到存储器阶层中的次高存储器时,高速缓冲存储器行是全脏的。换句话说,在已写入整个高速缓冲存储器行而使得存储器阶层中的次高存储器不为最新时,高速缓冲存储器行是全脏的。每一高速缓冲存储器行可使用1位“完全”旗标来指示特定高速缓冲存储器行是否是全脏的。因此,对于全脏高速缓冲存储器行,其脏掩码可用于重新分配以指示未完全写入的另一高速缓冲存储器行。高速缓冲存储器行的全脏状态可由全脏旗标指示。由此,对于那一高速缓冲存储器行不再需要脏掩码。
图5是说明根据本发明的技术的实例方法的流程图。高速缓冲存储器14可跟踪高速缓冲存储器中的高速缓冲存储器行的状态(400)。举例来说,高速缓存控制器20可跟踪高速缓冲存储器14中的高速缓冲存储器行的状态。可例如使用指示到高速缓冲存储器行的写入不是到那一特定高速缓冲存储器行中的每一字节的完全写入的脏旗标来进行此操作。因此,在到高速缓冲存储器行的写入发生且所述写入不是到那一特定高速缓冲存储器行中的每一字节的完全写入时,高速缓冲存储器行中的一些字节可能不同于主存储器16中的对应存储器位置。另外,高速缓冲存储器行中的一些字节可能与主存储器16中的对应存储器位置相同。然而,将理解,随着到相同高速缓冲存储器行的后续写入发生,最终整个高速缓冲存储器行可不同于主存储器16中的对应存储器位置。如上文所论述,在末次存储器传送之后可能发生的写入一般来说将使存储于高速缓存中的数据从存储于对应存储器位置中的数据改变。尽管如此,仍有可能处理器12将相同值写入到高速缓冲存储器,以使得数据在写入发生之后实际上并不改变。系统一般来说并不实际上检查数据以确信其已改变。而是,系统仅如此假定且基于写入的值而将适当脏旗标标记为例如脏或全脏。举例来说,到整个高速缓冲存储器行的写入可发生,或到高速缓冲存储器行的多个写入可最终改变所述高速缓冲存储器行中的每一字节。
在到特定高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时,高速缓冲存储器可将脏掩码空间18分配给所述高速缓冲存储器行(402)。举例来说,高速缓存控制器20可执行所述分配。将理解,高速缓存控制器20可为高速缓冲存储器14的部分或与高速缓冲存储器14分离。因此,脏掩码空间18内的脏掩码可按需要分配给高速缓冲存储器且从高速缓冲存储器行解除分配。使用脏掩码空间18而非用于每一高速缓存行的脏掩码空间可需要较小存储器。
高速缓冲存储器可跟踪所分配脏掩码空间的识别(ID)附加到特定高速缓冲存储器行,使得可存取所述脏掩码空间(404)。举例来说,高速缓存控制器20可跟踪ID。因此,ID可提供高速缓冲存储器行与所分配脏掩码空间(例如脏掩码)之间的连接,使得脏掩码可用以确定高速缓冲存储器行中的哪些字节是脏的且潜在地不包含与主存储器16中的对应字节相同的数据。
在一些实例中,如果脏掩码空间18中的所有脏掩码已分配给高速缓冲存储器行且需要额外脏掩码,则可例如在对应高速缓冲存储器行变得全脏(每一字节不同于主存储器16中的对应字节)之前解除分配一个脏掩码。如果此情形发生,则可选择脏掩码空间108中的脏掩码以从特定高速缓冲存储器行解除分配,且可将高速缓冲存储器行中的数据写回到主存储器16中的对应存储器,使得高速缓冲存储器行不再是脏的。
在到一系列高速缓冲存储器行中的包含对应脏掩码的一个高速缓冲存储器行的写入请求发生时,本文所述的系统及方法的一些实例可引起对脏掩码空间中的所述脏掩码的更新。另外,高速缓存可将所分配脏掩码空间的ID附加到特定高速缓冲存储器行,使得在收回此高速缓冲存储器行时可存取所述脏掩码空间。在一些实例中,高速缓存还可指示脏缓冲器掩码被分配给的特定高速缓冲存储器行。高速缓存还可指示高速缓冲存储器行的至少一个字节不同于主存储器中的对应字节。
本文所述的各种实例可指示高速缓冲存储器14可执行各种动作。将理解,在一些实例中,处理器、控制器或高速缓冲存储器14内部的其它逻辑电路可执行这些动作。其它实例可包含不在高速缓冲存储器14内部但控制本文所述的功能中的一或多者的处理器、控制器或其它逻辑电路。因此,可在高速缓冲存储器内部、在高速缓冲存储器外部或以其组合来执行动态分配的脏掩码空间功能性。其可由硬件电路、软件或其某一组合来执行。
图6是说明根据本发明的技术的实例方法的另一流程图。实例系统、装置或设备可将数据写入到包含一系列高速缓冲存储器行的高速缓冲存储器(450)。每一高速缓冲存储器行可包含全脏旗标及脏缓冲器索引。全脏旗标指示高速缓冲存储器行是“全脏”的。换句话说,高速缓冲存储器行中的每一字节不同于主存储器16中的对应字节。
脏缓冲器索引可包含地址或到脏缓冲器的索引。举例来说,脏缓冲器索引可包含到脏掩码中的至少一者被分配给的至少一个位置的至少一个指针。在另一实例中,脏缓冲器索引包含到多个脏掩码中的一者被分配给的位置的指针。脏缓冲器指示不同于主存储器16中的对应字节的字节。
实例系统、装置或设备可在到特定高速缓冲存储器行的写入不是到所述特定高速缓冲存储器行的完全写入时将脏缓冲器中的脏掩码空间分配给所述高速缓冲存储器行(452)。举例来说,实例系统、装置或设备内的高速缓存控制器20可执行此类分配。在一些实例中,高速缓存控制器20可为高速缓冲存储器14的部分。在其它实例中,其可为单独装置。另外,所分配脏掩码空间的识别(ID)附加到特定高速缓冲存储器行,使得可存取脏掩码空间。
应认识到,取决于实例,本文中所描述的技术中的任一者的某些动作或事件可用不同顺序来执行,可添加、合并或全部省略所述动作或事件(例如,实践所述技术未必需要所有所描述动作或事件)。此外,在某些实施例中,可同时(例如,通过多线程处理、中断处理或多个处理器)而非顺序地执行动作或事件。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果用软件实施,则所述功能可作为一或多个指令或代码在计算机可读媒体上存储或发射,且由基于硬件的处理单元来执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包含促进将计算机程序从一处传送到另一处的任何媒体(例如,根据一种通信协议)的通信媒体。以此方式,计算机可读媒体通常可对应于(1)有形计算机可读存储媒体,其是非暂时性的,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
借助于实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的期望程序代码且可以由计算机存取的任何其它媒体。同样,可恰当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波的无线技术包含于媒体的定义中。但是,应理解,所述计算机可读存储媒体及数据存储媒体并不包括连接、载波、信号或其它暂时性媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘及光盘包含紧密光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘及蓝光光盘,其中磁盘通常磁性地再现数据,而光盘使用激光光学地再现数据。上文各者的组合也应包含在计算机可读媒体的范围内。
指令可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。此外,在一些方面中,本文所述的功能性可在经配置用于编码及解码的专用硬件及/或软件模块内提供,或并入在组合编解码器中。而且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。而是,如上文所描述,各种单元可以结合合适的软件及/或固件而组合在编解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述各种实例。这些及其它实例属于所附权利要求书的范围内。
Claims (31)
1.一种高速缓冲存储器系统,其包括:
包含多个高速缓冲存储器行的高速缓冲存储器;
包含多个脏掩码的脏缓冲器,所述多个脏掩码的数目小于高速缓冲存储器行的数目;以及
高速缓存控制器,其经配置以:
在到相应高速缓冲存储器行的写入不是到所述相应高速缓冲存储器行的完全写入时,将脏掩码分配给所述相应高速缓冲存储器行,其中所述脏掩码指示所述相应高速缓冲存储器行中的数据单元的脏状态,
存储使所述脏掩码与所述脏掩码被分配给的所述相应高速缓冲存储器行相关联的识别ID信息,以及
在所述相应高速缓冲存储器行中的每一字节是脏的时或在所述相应高速缓冲存储器行中的每一字节不脏时,从所述相应高速缓冲存储器行解除分配所述脏掩码。
2.根据权利要求1所述的高速缓冲存储器系统,其中所述多个高速缓冲存储器行包含:
存储全脏旗标的位置,所述全脏旗标指示所述相应高速缓冲存储器行中的每一字节何时是脏的;以及
存储用于存储所述ID信息的脏缓冲器索引的位置。
3.根据权利要求2所述的高速缓冲存储器系统,其进一步包括:
存储脏旗标的位置,所述脏旗标指示所述相应高速缓冲存储器行的至少一个数据单元自从从主存储器的末次数据写入以来已被写入。
4.根据权利要求3所述的高速缓冲存储器系统,其中所述脏旗标包括1位旗标。
5.根据权利要求2所述的高速缓冲存储器系统,其中所述全脏旗标包括1位旗标。
6.根据权利要求2所述的高速缓冲存储器系统,其中所述脏缓冲器索引提供所述脏掩码的地址,所述地址指示所述脏掩码被分配给的所述相应高速缓冲存储器行。
7.根据权利要求2所述的高速缓冲存储器系统,其中所述脏缓冲器索引包括到所述脏掩码在所述脏缓冲器中的位置的指针。
8.根据权利要求1所述的高速缓冲存储器系统,其中所述高速缓存控制器进一步经配置以在发生对所述相应高速缓冲存储器行的写入请求时引起对分配给所述相应高速缓冲存储器行的所述脏掩码的更新。
9.根据权利要求1所述的高速缓冲存储器系统,其中所述脏缓冲器包括所述高速缓冲存储器的一部分。
10.根据权利要求1所述的高速缓冲存储器系统,其中所述脏缓冲器包括与所述高速缓冲存储器分离的存储器。
11.根据权利要求1所述的高速缓冲存储器系统,其进一步包括耦合到所述高速缓冲存储器的处理器及耦合到所述处理器的主存储器,所述处理器经配置以读取并写入数据到所述高速缓冲存储器及所述主存储器。
12.一种操作存储器系统的方法,其包括:
将数据写入到包含多个高速缓冲存储器行的高速缓冲存储器;
在到相应高速缓冲存储器行的写入不是到所述相应高速缓冲存储器行的完全写入时,将脏掩码分配给所述相应高速缓冲存储器行,其中所述脏掩码指示所述相应高速缓冲存储器行中的数据单元的脏状态,所述脏掩码的数目小于高速缓冲存储器行的数目;
在所述相应高速缓冲存储器行中的每一字节是脏的时或在所述相应高速缓冲存储器行中的每一字节不脏时,从所述相应高速缓冲存储器行解除分配所述脏掩码;以及
存储使所述脏掩码与所述脏掩码被分配给的所述相应高速缓冲存储器行相关联的识别ID信息。
13.根据权利要求12所述的方法,其中所述多个高速缓冲存储器行中的每一者包含:
存储全脏旗标的位置,所述全脏旗标指示所述相应高速缓冲存储器行中的每一字节何时是脏的;以及
存储用于存储所述ID信息的脏缓冲器索引的位置。
14.根据权利要求12所述的方法,其进一步包括在发生对包含所述脏掩码的所述相应高速缓冲存储器行的写入请求时引起对所述脏掩码的更新。
15.根据权利要求12所述的方法,其进一步包括指示所述相应高速缓冲存储器行的至少一个数据单元自从从主存储器的末次数据写入以来已被写入。
16.根据权利要求12所述的方法,其进一步包括指示所述相应高速缓冲存储器行是全脏的。
17.根据权利要求12所述的方法,其进一步包括指示所述脏掩码被分配给的所述相应高速缓冲存储器行。
18.一种高速缓冲存储器系统,其包括:
用于将数据写入到包含多个高速缓冲存储器行的高速缓冲存储器的装置;
用于在到相应高速缓冲存储器行的写入不是到所述相应高速缓冲存储器行的完全写入时将脏掩码分配给所述相应高速缓冲存储器行的装置,其中所述脏掩码指示所述相应高速缓冲存储器行中的数据单元的脏状态,所述脏掩码的数目小于高速缓冲存储器行的数目;
用于在所述相应高速缓冲存储器行中的每一字节是脏的时或在所述相应高速缓冲存储器行中的每一字节不脏时从所述相应高速缓冲存储器行解除分配所述脏掩码的装置;以及
用于存储使所述脏掩码与所述脏掩码被分配给的所述高速缓冲存储器行相关联的识别ID信息的装置。
19.根据权利要求18所述的高速缓冲存储器系统,其中所述高速缓冲存储器行中的每一者包含:
用于存储全脏旗标的装置,所述全脏旗标指示所述相应高速缓冲存储器行中的每一字节何时是脏的;以及
用于存储用于存储所述ID信息的脏缓冲器索引的装置。
20.根据权利要求18所述的高速缓冲存储器系统,其进一步包括用于在发生对包含所述脏掩码的所述相应高速缓冲存储器行的写入请求时引起对所述脏掩码的更新的装置。
21.根据权利要求18所述的高速缓冲存储器系统,其进一步包括用于指示所述相应高速缓冲存储器行的至少一个数据单元自从从主存储器的末次数据写入以来已被写入的装置。
22.根据权利要求18所述的高速缓冲存储器系统,其进一步包括用于指示所述相应高速缓冲存储器行是全脏的装置。
23.根据权利要求18所述的高速缓冲存储器系统,其进一步包括用于指示脏缓冲器被分配给的所述相应高速缓冲存储器行的装置。
24.一种处理器系统,其包括:
处理器;
耦合到所述处理器的主存储器;
耦合到所述处理器的高速缓冲存储器,所述高速缓冲存储器包含:
高速缓存控制器;
多个高速缓冲存储器行;以及
脏缓冲器,其包含脏掩码,
其中所述高速缓存控制器经配置以在到相应高速缓冲存储器行的写入不是到所述相应高速缓冲存储器行的完全写入时,将所述脏掩码分配给所述相应高速缓冲存储器行,其中所述脏掩码指示所述相应高速缓冲存储器行中的数据单元的脏状态,
其中所述高速缓存控制器经配置以在所述相应高速缓冲存储器行中的每一字节是脏的时或在所述相应高速缓冲存储器行中的每一字节不脏时,从所述相应高速缓冲存储器行解除分配所述脏掩码,且
其中所述高速缓存控制器经配置以存储使所述脏掩码与所述脏掩码被分配给的所述相应高速缓冲存储器行相关联的识别ID信息,所述脏掩码的数目小于高速缓冲存储器行的数目。
25.根据权利要求24所述的处理器系统,其中所述高速缓冲存储器行中的每一者包含:
存储全脏旗标的位置,所述全脏旗标指示所述相应高速缓冲存储器行中的每一字节何时是脏的;以及
存储用于存储所述ID信息的脏缓冲器索引的位置。
26.根据权利要求25所述的处理器系统,其中所述高速缓冲存储器行中的每一者进一步包含存储脏旗标的位置,所述脏旗标指示所述相应高速缓冲存储器行的至少一个数据单元不同于所述主存储器中的对应数据单元。
27.根据权利要求25所述的处理器系统,其中所述脏缓冲器索引提供脏掩码的地址,所述地址指示所述脏掩码被分配给的所述相应高速缓冲存储器行。
28.根据权利要求24所述的处理器系统,其中所述高速缓存控制器进一步经配置以在发生对包含所述脏掩码的所述相应高速缓冲存储器行的写入请求时引起对所述脏掩码的更新。
29.根据权利要求24所述的处理器系统,其中所述高速缓存控制器经配置以将用于所述相应高速缓冲存储器行的所述ID信息存储在所述相应高速缓冲存储器行中的位置中。
30.根据权利要求24所述的处理器系统,其中所述脏缓冲器包括所述高速缓冲存储器的一部分。
31.根据权利要求24所述的处理器系统,其中所述脏缓冲器包括与所述高速缓冲存储器分离的存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/687,761 US9342461B2 (en) | 2012-11-28 | 2012-11-28 | Cache memory system and method using dynamically allocated dirty mask space |
US13/687,761 | 2012-11-28 | ||
PCT/US2013/067111 WO2014085002A1 (en) | 2012-11-28 | 2013-10-28 | Memory management using dynamically allocated dirty mask space |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104813293A CN104813293A (zh) | 2015-07-29 |
CN104813293B true CN104813293B (zh) | 2017-10-31 |
Family
ID=49551817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380061576.2A Active CN104813293B (zh) | 2012-11-28 | 2013-10-28 | 使用动态分配的脏掩码空间的存储器管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9342461B2 (zh) |
EP (1) | EP2926257B1 (zh) |
JP (1) | JP6009688B2 (zh) |
KR (1) | KR101662969B1 (zh) |
CN (1) | CN104813293B (zh) |
WO (1) | WO2014085002A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160026579A1 (en) * | 2014-07-22 | 2016-01-28 | Lsi Corporation | Storage Controller and Method for Managing Metadata Operations in a Cache |
KR102362239B1 (ko) | 2015-12-30 | 2022-02-14 | 삼성전자주식회사 | 디램 캐시를 포함하는 메모리 시스템 및 그것의 캐시 관리 방법 |
US10585798B2 (en) * | 2017-11-27 | 2020-03-10 | Intel Corporation | Tracking cache line consumption |
US10705590B2 (en) | 2017-11-28 | 2020-07-07 | Google Llc | Power-conserving cache memory usage |
US11099987B2 (en) * | 2019-11-27 | 2021-08-24 | Micron Technology, Inc. | Bit masking valid sectors for write-back coalescing |
KR20220030440A (ko) * | 2020-08-31 | 2022-03-11 | 삼성전자주식회사 | 전자 장치, 시스템-온-칩, 및 그것의 동작 방법 |
JP7350699B2 (ja) * | 2020-09-11 | 2023-09-26 | 株式会社東芝 | ライトバックキャッシュ装置 |
CN112835532A (zh) * | 2021-02-25 | 2021-05-25 | 上海壁仞智能科技有限公司 | 用于缓存控制的方法以及计算装置 |
US11681631B2 (en) | 2021-06-25 | 2023-06-20 | Microsoft Technology Licensing, Llc | Write-behind optimization of covering cache |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612113A (zh) * | 2003-10-14 | 2005-05-04 | 国际商业机器公司 | 节能高速缓存及其运行方法 |
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
CN102160040A (zh) * | 2008-09-17 | 2011-08-17 | 松下电器产业株式会社 | 高速缓存存储器、存储器系统、数据复制方法及数据改写方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155824A (en) * | 1989-05-15 | 1992-10-13 | Motorola, Inc. | System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address |
US5802572A (en) * | 1996-03-15 | 1998-09-01 | International Business Machines Corporation | Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache |
JP3204295B2 (ja) * | 1997-03-31 | 2001-09-04 | 日本電気株式会社 | キャッシュメモリシステム |
US6205521B1 (en) | 1997-11-03 | 2001-03-20 | Compaq Computer Corporation | Inclusion map for accelerated cache flush |
JP4434534B2 (ja) * | 2001-09-27 | 2010-03-17 | 株式会社東芝 | プロセッサ・システム |
US7203798B2 (en) | 2003-03-20 | 2007-04-10 | Matsushita Electric Industrial Co., Ltd. | Data memory cache unit and data memory cache system |
JP4009306B2 (ja) | 2003-11-18 | 2007-11-14 | 松下電器産業株式会社 | キャッシュメモリおよびその制御方法 |
EP1698978A4 (en) | 2003-12-22 | 2008-11-05 | Matsushita Electric Ind Co Ltd | CACHE MEMORY AND CONTROL PROCEDURE THEREFOR |
US20060143397A1 (en) | 2004-12-29 | 2006-06-29 | O'bleness R F | Dirty line hint array for cache flushing |
US7380070B2 (en) | 2005-02-17 | 2008-05-27 | Texas Instruments Incorporated | Organization of dirty bits for a write-back cache |
US20060274070A1 (en) | 2005-04-19 | 2006-12-07 | Herman Daniel L | Techniques and workflows for computer graphics animation system |
US8180968B2 (en) * | 2007-03-28 | 2012-05-15 | Oracle America, Inc. | Reduction of cache flush time using a dirty line limiter |
US7917699B2 (en) | 2007-12-21 | 2011-03-29 | Mips Technologies, Inc. | Apparatus and method for controlling the exclusivity mode of a level-two cache |
JP2011248389A (ja) * | 2008-09-09 | 2011-12-08 | Panasonic Corp | キャッシュメモリ、キャッシュメモリシステム |
US8732409B2 (en) | 2008-11-17 | 2014-05-20 | Entropic Communications, Inc. | Cache management policy and corresponding device |
JP2012203560A (ja) * | 2011-03-24 | 2012-10-22 | Toshiba Corp | キャッシュメモリおよびキャッシュシステム |
-
2012
- 2012-11-28 US US13/687,761 patent/US9342461B2/en not_active Expired - Fee Related
-
2013
- 2013-10-28 KR KR1020157016404A patent/KR101662969B1/ko active IP Right Grant
- 2013-10-28 JP JP2015544069A patent/JP6009688B2/ja not_active Expired - Fee Related
- 2013-10-28 CN CN201380061576.2A patent/CN104813293B/zh active Active
- 2013-10-28 WO PCT/US2013/067111 patent/WO2014085002A1/en active Application Filing
- 2013-10-28 EP EP13786863.4A patent/EP2926257B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612113A (zh) * | 2003-10-14 | 2005-05-04 | 国际商业机器公司 | 节能高速缓存及其运行方法 |
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
CN102160040A (zh) * | 2008-09-17 | 2011-08-17 | 松下电器产业株式会社 | 高速缓存存储器、存储器系统、数据复制方法及数据改写方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2015535631A (ja) | 2015-12-14 |
US20140149685A1 (en) | 2014-05-29 |
JP6009688B2 (ja) | 2016-10-19 |
CN104813293A (zh) | 2015-07-29 |
KR101662969B1 (ko) | 2016-10-05 |
US9342461B2 (en) | 2016-05-17 |
WO2014085002A1 (en) | 2014-06-05 |
EP2926257B1 (en) | 2019-06-26 |
EP2926257A1 (en) | 2015-10-07 |
KR20150091101A (ko) | 2015-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104813293B (zh) | 使用动态分配的脏掩码空间的存储器管理 | |
US8806101B2 (en) | Metaphysical address space for holding lossy metadata in hardware | |
US8838906B2 (en) | Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution | |
CN113853593A (zh) | 支持清空写入未命中条目的受害者高速缓存 | |
CN101059783B (zh) | 事务型存储器的虚拟化 | |
US5530832A (en) | System and method for practicing essential inclusion in a multiprocessor and cache hierarchy | |
CN103383672B (zh) | 高速缓存控制以减少事务回滚 | |
US9645942B2 (en) | Method for pinning data in large cache in multi-level memory system | |
CN103729306B (zh) | 高速缓存块无效的方法和数据处理设备 | |
US7590802B2 (en) | Direct deposit using locking cache | |
CN101292228A (zh) | 转换后备缓冲器的锁定指示符 | |
CN103279428B (zh) | 一种显式的面向流应用的多核Cache一致性主动管理方法 | |
US5765199A (en) | Data processor with alocate bit and method of operation | |
US6950909B2 (en) | System and method for reducing contention in a multi-sectored cache | |
US7260674B2 (en) | Programmable parallel lookup memory | |
US20160154650A1 (en) | Efficient usage of a multi-level register file utilizing a register file bypass | |
CN111201518A (zh) | 用于管理能力元数据的设备和方法 | |
CN104461932A (zh) | 一种面向大数据应用的目录缓存管理方法 | |
CN101571836A (zh) | 用于替换缓存块的方法和系统 | |
US20080040548A1 (en) | Method for Processor to Use Locking Cache as Part of System Memory | |
US7010649B2 (en) | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache | |
US20140143498A1 (en) | Methods and apparatus for filtering stack data within a cache memory hierarchy | |
US20040078544A1 (en) | Memory address remapping method | |
CN110659305A (zh) | 基于非易失存储系统的高性能关系型数据库服务 | |
CN116804975A (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 |