CN107066397B - 用于管理数据迁移的方法、***和存储介质 - Google Patents
用于管理数据迁移的方法、***和存储介质 Download PDFInfo
- Publication number
- CN107066397B CN107066397B CN201611234178.8A CN201611234178A CN107066397B CN 107066397 B CN107066397 B CN 107066397B CN 201611234178 A CN201611234178 A CN 201611234178A CN 107066397 B CN107066397 B CN 107066397B
- Authority
- CN
- China
- Prior art keywords
- pages
- page
- memory
- main memory
- request
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000013508 migration Methods 0.000 title claims abstract description 8
- 230000005012 migration Effects 0.000 title claims abstract description 8
- 230000015654 memory Effects 0.000 claims abstract description 504
- 230000004044 response Effects 0.000 claims description 12
- 238000007667 floating Methods 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 238000007796 conventional method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000010926 purge Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002238 attenuated effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered 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/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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- 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/25—Using a specific main memory architecture
- G06F2212/253—Centralized memory
-
- 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)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述剖析缓存替换,其是管理主存储器和缓存存储器间数据迁移提高***性能的技术。与传统缓存替换技术不同,剖析缓存替换用剖析器维护计数器,其计数访问缓存存储器中维护的和主存储器中维护的页面的存储器请求。基于剖析器采集的信息(如关于存储器访问请求)移动器在主存储器和缓存存储器间移动页面。例如移动器可交换主存储器的高请求页面(如主存储器的最多请求页面)与缓存存储器的低请求页面(如缓冲存储器的最少请求页面)。例如计数器指示主存储器的高请求页面的访问请求量大于缓存存储器的低请求页面的时移动器可如此。为不阻碍存储器用户操作(如客户端应用)移动器后台执行页面交换。为此移动器限于预定时间间隔交换页面如每微秒。
Description
相关申请
本申请根据35U.S.C.119要求2016年2月10日提交的题为“Profiling CacheReplacement”的临时申请No.62/293,688的优先权, 该公开以引用的方式全部并入本文。
背景技术
在计算时,缓存是用于暂时性存储频繁访问的数据的存储器块,并且允许比对未缓存数据的请求更快地服务对缓存数据的未来请求。如果将请求的数据包含在缓存中(称为“缓存命中”的场景),那么可以通过简单地读取缓存来处理该请求,这比从主存储器访问数据相对更快。相反,如果不将请求的数据包含在缓存中(称为“缓存缺失”的场景),那么重新计算数据,或者,在传统的技术中,从数据的原始存储位置将数据填充到缓存中,这比从缓存简单地读取数据更慢。因此,就速度而言,在从缓存存储器服务更大部分数据请求时,提高了总体***性能。
因为缓存存储器通常比主存储器小,所以先前填充到缓存的数据可能需要由最近使用的数据替换。为此,采用缓存替换算法。传统的缓存替换算法包括最近最少使用(LRU)算法、最近最多使用(MRU) 算法、最不常用(LFU)算法、随机替换算法等。广义地说,缓存替换算法是计算机程序或者硬件维护结构实施用于管理缓存存储器的一组优化指令。具体地,缓存替换算法选择要清除缓存存储器中的哪个信息以便为来自主存储器的信息腾出空间。
许多传统缓存替换算法不维护关于当前不在缓存存储器中的数据块的信息。因此,在数据的工作集的大小超过缓存存储器的大小时,可能生成过度填充和清除业务。该过度填充和清除业务可以导致称为“抖动”的情况,在这种情况下,缓存缺失的数量急剧增加,并且,由于缺失导致的执行缓存填充和清除所耗的时间可以超过对数据的工作集执行原来请求的计算操作所耗的时间。因此,传统缓存替换算法具有会阻碍计算操作的缺陷。
发明内容
本文描述了剖析缓存替换。剖析缓存替换是一种用于管理在主存储器和缓存存储器之间的数据迁移以提高总体***性能的技术。缓存存储器和主存储器都配置为存储数据的页面——缓存存储器比主存储器小,因此缓存存储器能够维护比主存储器更少的页面。然而,与主存储器相比,缓存存储器具有更低的延迟、更高的宽带、或者更低的电力使用中的至少一个。因此,在从缓存存储器服务更大部分数据访问请求时,提高了***性能。为了增加从缓存存储器服务的该部分数据访问请求,剖析缓存替换将高请求页面缓存在缓存存储器中并且将较少请求页面迁移到(或者留在)主存储器中。
与传统缓存替换技术不同,剖析缓存替换采用剖析器来维护计数器,该计数器不仅对访问缓存存储器中维护的页面的存储器请求进行计数,还对访问主存储器中维护的页面的存储器请求进行计数。基于剖析器所采集到的信息(例如,关于存储器访问请求),移动器在主存储器和缓存存储器之间移动页面。例如,移动器可以将主存储器的高请求页面,诸如,主存储器的最多请求页面,与缓存存储器的低请求页面,诸如,缓冲存储器的最少请求页面,交换。例如,在计数器指示主存储器的高请求页面的页面访问请求量大于缓存存储器的低请求页面的页面访问请求量时,移动器可以进行上述交换。
为了不阻碍存储器用户的操作(例如,客户端应用),针对缓存缺失,不阻挡由存储器用户提出的请求,并且移动器在后台执行页面交换。关于非阻挡行为,在页面访问请求导致缓存缺失时,不立即将请求的页面加载到缓存存储器中使得可以从缓存存储器服务该请求。而是,可以直接从主存储器服务该请求。关于在后台执行页面交换,优先服务存储器用户通过移动器执行的页面交换而提交的请求。为此,将移动器局限于按照预定时间间隔交换页面,诸如,每1微秒(μs)。按照预定时间间隔,移动器确定主存储器的高请求页面的页面访问请求量是否超过缓存存储器的低请求页面的页面访问请求量。如果超过,则移动器将主存储器的高请求页面与缓存存储器的低请求页面交换。这样,剖析缓存替换优化了缓存存储器中所填充的页面,并且这样做不会干扰存储器用户的操作,结果是提高了***性能。
本发明内容的提供是为了介绍有关本技术的简化构思,在下面的具体实施方式中将进一步描述本技术。本发明内容既不旨在识别所要求的主题的本质特征,也不旨在用于确定所要求的主题的范围。
附图说明
参考以下附图来描述剖析缓存替换的技术和装置的实施例。贯穿整个附图,相同的数字用于表示类似的特性和部件。
图1示出了可以实施本技术的示例环境。
图2图示了示出了在第一时间主存储器和缓存存储器的示例页面计数器值的图表。
图3图示了示出了在第一时间之后的第二时间主存储器和缓存存储器的示例页面计数器值的图表。
图4图示了图1的示例存储器-剖析计算装置。
图5图示了根据剖析算法来替换缓存存储器中的页面的方法。
图6图示了通过使用空间减小的计数器来对剖析缓存替换的页面访问进行计数的方法。
图7图示了通过使用每存储器页面少于一个计数器来对剖析缓存替换的页面访问进行计数的方法。
图8图示了体现了剖析缓存替换的、或者可以实施能够使用剖析缓存替换的技术的示例计算***。
具体实施方式
概述
本文描述了使用剖析缓存替换的技术以及支持剖析缓存替换的装置。通过使用这些技术和装置,按照比传统缓存替换技术,诸如,最近最少使用(LRU)算法、最近最多使用(MRU)算法、最不常用(LFU) 算法、随机替换算法等,更能提高***性能的方式,来管理在主存储器和缓存存储器之间的数据迁移。至少部分地因为减少发生“抖动”的次数,结合在主存储器和缓存存储器之间迁移数据,所以提高了性能。术语“抖动”是指一种由过度填充和清除业务导致的情况,在数据的工作集的大小超过缓存存储器的大小时,可以产生过度填充和清除业务。抖动可以导致缓存缺失量急剧增加,这使***执行缓存填充和清除所产生的缺失比对数据的工作集执行原来请求的计算操作耗费更多的时间。通过剖析缓存替换的应用,可以按照减少抖动并且提高总体***性能的方式来管理在缓存存储器和主存储器中的数据。
例如,存储器用户,诸如,客户端应用,可以请求访问存储器中加载的特定页面。在该示例中,假设客户端应用请求访问来自存储器的特定页面,作为初始化过程的一部分。在初始化过程期间,客户端应用可以请求访问特定页面许多次。为了更有效地服务客户端应用的请求,可以将特定页面加载到存储器中,例如,从而使得,相较于从主存储器服务,可以更快地服务对特定页面的请求。在完成初始化过程之后,客户端应用可能不需要访问特定页面,或者,相对于其它页面,可能较少地访问特定页面。在正常操作期间,客户端应用反而可能更多地请求访问其它页面,从而使得访问其它页面的请求最终超过对特定页面的请求,这是因为已经完成了初始化过程并且不再请求特定页面。
因此,例如,尽管缓存存储器比主存储器小,但是因为缓存存储器比主存储器具有更低的延迟、更高的宽带、或者更低的电力使用,因此通过从缓存存储器服务对其它页面的请求,可以提高客户端应用的正常操作的效率。换言之,可以通过将其它页面中的一个与特定页面交换,来提高效率。如本文使用的“交换”是指能够使得将与该一个其它页面对应的数据填充到缓存存储器中并且清除与来自缓存存储器的特定页面对应的数据的动作或者一系列动作。在一些场景中,仅将与该一个其它页面对应的数据和与特定页面对应的数据交换,从而使得该一个其它页面的数据替代缓存存储器中的特定页面的数据,并且特定页面的数据替代主存储器中的该一个其它页面的数据。在这种场景中,在对页面进行缓存时,其数据仅驻留在缓存存储器中,而不驻留在主存储器中。
然而,在其它场景中,不管与数据对应的页面是否进行了缓存,存储器中的各个页面的至少一些数据存在于主存储器中。在这些场景中,在对页面进行缓存时,缓存存储器中的页面和主存储器中的页面共同提供页面的有效数据。然而,在一些情况下,缓存存储器中的一些页面可能不包含有效数据,这是因为没有填充那些页面。主存储器中的一些页面也可能不包含有效数据,诸如当在缓存存储器中已经完全修改了那些页面的整体数据时。在这些场景下,将特定页面的数据和对应于该一个其它页面的数据交换不仅仅是在第一次描述的场景中的数据交换。更确切地说,交换涉及将与来自缓存存储器的特定页面对应的数据清除到主存储器中的相应页面。在该相应页面处,将在缓存存储器中修改的数据的部分复制到主存储器中的相应页面,该复制局限于修改过的数据块,这是因为相应页面仍然维护未修改的数据块的相同数据。在清除之后,利用来自主存储器的该一个其它页面的数据填充缓存存储器的被清除了数据的页面。然而,相应页面(例如,清除的数据所放置的页面)和该一个其它页面(例如,用于填充可用缓存存储器页面的主存储器数据)不对应于相同的页面。
在该交换之后,从缓存存储器服务对该一个其它页面的请求,不考虑主存储器和缓存存储器的配置方式以及因此不考虑其页面的交换方式。为了确定何时在主存储器和缓存存储器中交换页面以及交换哪些页面,剖析缓存替换对主存储器和缓存存储器中维护的数据的页面访问进行计数。具体地,利用计数器追踪对“可寻址存储器”中的页面的访问。术语“可寻址存储器”是指由存储器用户识别到的存储器的部分。在上面描述的第一场景中,可寻址存储器的大小与主存储器的大小加上缓存存储器的大小对应。然而,在其它场景中,可寻址存储器的大小仅与主存储的大小对应。因此,所维护的计数器的数量与主存储器中的页面的数量对应。为此,剖析器可以针对可寻址存储器中的各个页面维护计数器,并且在请求访问那些页面中的一个页面时,针对该页面来递增计数器。在上面讨论的其它存储器配置和交换的场景中,针对可寻址存储器中的每个页面维护一个计数器,例如,针对主存储器中的每个页面维护一个计数器,这是因为缓存的页面也由主存储器中的数据来表示。
回到客户端应用的讨论,该客户端应用在初始化期间请求访问特定页面许多次,在初始化之后不请求访问特定页面或者较少地请求访问特定页面,并且在正常操作期间更多地请求访问其它页面。剖析器在某一时刻维护的计数器可以指示:相较于对特定页面的访问,已经更多地请求对其它页面中的至少一个页面的访问。一旦出现这种情况,配置为将页面从主存储器移动到缓存存储器以及将页面从缓存存储器移动到主存储器的移动器可以将其它页面中相较于特定页面更多请求的一个页面与特定页面交换。具体地,移动器可以将更多请求的页面从主存储器移动到缓存存储器中,并且可以将特定页面从缓存存储器移动到主存储器中。为了防止中断客户端应用的操作,将不阻塞客户端应用提出的请求,并且将在后台执行交换页面以优化缓存存储器中维护的数据的动作。具体地,在页面访问请求导致缓存缺失时,不立即将请求的页面加载到缓存存储器中使得可以从缓存存储器服务该请求。而是,可以直接从主存储器服务该请求。进一步地,将移动器局限于按照预定时间间隔发起页面交换,诸如,每1微秒(μs)。因此,移动器不会与客户端应用竞争以便在其它时间访问主存储器或者缓存存储器。通过使用这种技术,可以避免中断计算操作并且减少抖动,从而提高了***的总体性能。
这只是可以执行剖析缓存替换的方式的一个简单示例,下面将提供其它示例和细节。本文现在转向参考示出了页面计数器值的图表的示例环境,之后描述装置和方法、以及示例计算***。
示例环境
图1是可以采用剖析缓存替换的示例环境100的图示。示例环境 100图示了具有剖析存储器104的存储器-剖析计算装置102。在图1的特定示例中,存储器-剖析计算装置102配置为智能手机,然而,也设想了其它配置。在后图中图示了存储器-剖析计算装置102的能够使用剖析缓存替换来优化存储器的其它配置。
示例环境100还图示了剖析存储器104的部件。剖析存储器104 包括缓存存储器106和主存储器108。缓存存储器106和主存储器108 能够存储供存储器用户诸如通过操作***、客户端应用等访问的数据。例如,缓存存储器106和主存储器108能够存储数据的页面。如本文使用的,术语“页面”是指大小相同的数据块,例如,4千字节(KB) 数据块。相对于主存储器108,缓存存储器106更小,缓存存储器具有更小的存储空间并且因此能够比主存储器108存储更少的数据页面。虽然就存储空间而言小于主存储器108,但缓存存储器比主存储器108 具有更低的延迟、更高的宽带、或者更低的电力使用中的至少一个。由于缓存存储器106的这些特性,就速度、电力、或者***的一些其它度量而言,针对缓存的数据,而不是非缓存的数据,服务更大部分的数据访问请求导致存储器-剖析计算装置102的请求服务更高效。
剖析存储器104还包括映射器110、剖析器112、和移动器114。映射器110、剖析器112、和移动器114表示通过对主存储器108中的高度使用的页面进行缓存和留下较少使用的页面来优化剖析存储器104的性能的功能。映射器110用于每一次存储器访问。映射器110将输入地址映射到缓存存储器106中的地址(例如,缓存命中)或者主存储器108中的地址(例如,缓存缺失)。与传统技术相比,在页面访问请求导致缓存缺失时,不立即将请求的页面加载到缓存存储器106 中使得可以从缓存存储器106服务该请求。而是,可以直接从主存储器108服务该请求,例如,将请求的页面提供给请求直接从主存储器 108访问页面的存储器用户。
剖析器112表示采集关于存储器访问的信息的功能。例如,剖析器112追踪页面访问量,诸如访问剖析存储器104中的页面的请求量。尽管本文通过使用追踪访问每一个页面的请求量的示例来描述本技术,但是,在不脱离本文所描述的本技术的精神或者范围的情况下,剖析器112可以按照不同的方式来追踪存储器访问。在每一个请求的请求大小不一致时,诸如,在某些请求是64B而其它请求是128B时,剖析器112可以对字节而非请求量进行计数。可替代地,剖析器112可以将访问存储器中的页面的更大请求视为多个请求。在其它示例中,可以追踪存储器访问,而不对访问页面的每一个请求进行计数。更确切地说,可以追踪页面的读取请求,但不追踪写入请求。同样,可以追踪页面的写入请求,但不追踪读取请求。
无论用于追踪对页面的存储器访问的单元如何,剖析器112都可以针对缓存存储器106中的各个页面以及主存储器108中的各个页面维护一个计数器。在请求访问页面时,剖析器112可以递增用于该页面的计数器,从而追踪页面访问。然而,在一种或者多种实施方式中,剖析器112维护每个存储器的页面少于一个计数器。为此,剖析器112 可以减少用于存储追踪信息的存储器的数量,该追踪信息描述了剖析存储器104的页面访问。本文下面讨论了关于剖析器112使用每个的存储器页面少于一个计数器的方式的细节。
移动器114表示在缓存存储器106和主存储器108之间移动页面的功能。例如,移动器114能够将主存储器108的高请求页面与缓存存储器106的低请求页面交换。如本文使用的,术语“高”请求的一个或多个页面表示比在考虑中的存储器的该部分中的其它页面请求更多的页面,并且可以与在考虑中的该部分中的最多请求页面、该部分中的前百分之十的请求页面等相对应。例如,主存储器108的高请求页面可以是请求量在主存储器108的页面中排名在前百分之十的页面,或者可以是主存储器108中的最多请求页面。类似地,术语“低”请求的一个或者多个页面表示比在考虑中的存储器的该部分中的其它页面请求更少的页面,并且可以与在考虑中的该部分的最少请求页面、该部分中的倒数百分之十的请求页面等对应。例如,缓存存储器106 的低请求页面可以是请求量在缓存存储器106的页面中排名在倒数百分之十的页面,或者可以是缓存存储器的最少请求页面。然而,应该注意,结合存储器的与页面对应的该部分来使用“高”和“低”。因此,主存储器108的高请求页面的访问请求量小于缓存存储器108的低请求页面的访问请求量,或者可以具有相似的请求量。然而,主存储器108的高请求页面的访问请求量大于主存储器108的低请求页面的访问请求量。此外,剖析存储器104的高请求页面(例如,在主存储器108和缓存存储器106中的页面当中)的访问请求量大于剖析存储器104的低请求页面的访问请求量。
在任何情况下,响应于访问主存储器108的高请求页面的请求多于访问缓存存储器106的低请求页面的请求的确定,移动器114可以将主存储器108的高请求页面与缓存存储器106的低请求页面交换。除了在缓存存储器106和主存储器108之间移动页面之外,移动器114 还表示对关于访问主存储器108的页面是否多于访问缓存存储器106 的页面做出确定的功能。移动器114可以通过检查剖析器112采集到的信息,例如,计数器,来实现这种功能。一旦移动器114移动页面 (例如,将缓存存储器106的页面与主存储器108的页面交换),移动器114更新映射器110所使用的地址信息,从而使得未来的存储器访问请求被映射到缓存存储器106或者主存储器108中的正确地址。应该注意,响应于访问主存储器108的高请求页面的请求不多于访问缓存存储器106的低请求页面的请求的确定,移动器114不交换页面。
针对场境,考虑图2和图3示出了主存储器和缓存存储器的示例页面计数器值的图表。图2的图表200示出了在第一时间的主存储器和缓存存储器的示例页面计数器值,并且图3的图表300示出了在第一时间之后的第二时间的主存储器和缓存存储器的示例页面计数器值。如下面更详细地讨论,移动器114检查关于所请求的页面访问的信息。移动器114还按照预定时间间隔,例如,每1微秒(μs),发起页面交换。根据预定时间间隔,与图表200对应的第一时间可以是在发生该特定的预定时间间隔之前,而与图表300对应的第二时间可以是在发生该特定的预定时间间隔之后。
图表200包括第一轴200,该第一轴202与指示页面访问量的计数器值对应。图表200的第二轴204表示在存储器中维护的页面。图表200还包括分割线206。图示在分割线206左边的柱条表示在第一时间在缓存存储器106中的页面的计数器值,而图示在分割线右边的柱条表示在第一时间在主存储器108中的页面的计数器值。在图2和图3 所示出的特定示例中,缓存存储器106是128兆字节(128MB),主存储器108是4千兆字节(4GB),并且数据的各个页面是4千字节 (4KB)。因此,在分割线206左边的柱条表示128MB具有4-KB页面,而在分割线206右边的柱条表示4GB具有4-KB页面(100万页面)。应该理解,在不脱离本文描述的技术的精神或者范围的情况下,这些都仅仅是示例性的大小,并且缓存存储器106、主存储器108、以及维护在这些存储器中的页面的大小可以不同于示例中使用的大小。
为了更容易理解所阐释的构思,已经将图2和图3图示为表示上面所描述的场景,在该场景中,仅将与主存储器108的页面对应的数据和与缓存存储器106的页面对应的数据交换,从而使得,在对页面进行缓存时,其数据是在缓存存储器106中而不是在主存储器108中。在这些场景中,存储器用户将可寻址存储器识别为4GB和128MB的组合(例如,主存储器108和缓存存储器106的组合)。然而,在实施方式中,在缓存存储器106小于主存储器108时(128MB对比4GB),可以根据该另一存储器配置和上面描述的交换场景来配置主存储器 108和缓存存储器106。
在该另一存储器配置和上面描述的交换场景中,主存储器108的页面和缓存存储器106的页面共同提供缓存的页面的有效数据。在这些其它场景中,在对页面进行缓存时,与缓存的页面对应的至少一些数据可以在缓存存储器106中,并且与缓存的页面对应的至少一些数据也可以在主存储器108中。然而,在一些情况下,缓存存储器106 的一些页面可以不包含有效数据,这是因为未填充那些页面。主存储器108的一些页面也可以不包含有效数据,诸如在缓存存储器106中已经修改了那些页面的整个数据时。根据这些其它配置和交换场景,并且考虑到主存储器是4GB并且缓存存储器是128GB的示例,存储器用户将可寻址存储器仅识别为4GB(例如,仅仅主存储器108)。在将来自主存储器的数据的4-KB页面填充到缓存存储器106中时,移动器114可以不将数据的页面的4-KB的各个部分都填充到缓存存储器 106中。例如,而是移动器114可以将页面的数据的1KB填充到缓存存储器106中。移动器114可以填充接近请求地址的数据的1KB,诸如在不确定关于是否将使用其它3KB时。在预计对页面的大多数请求是写入请求时,移动器114可以不将被过度写入的页面的数据填充到缓存存储器106中。确切地说,移动器114可以将指示在何处才能查找到页面的各个64-字节的部分的信息填充到缓存存储器106中。
返回到图2和图3所图示的示例中,将表示页面的柱条按照计数器值的降序从左至右排列,并且还在缓存存储器106和主存储器108 的边界内。因此,表示缓存存储器106中的最多访问页面的页面访问量的柱条208与比柱条210更大的计数器指对应,该柱条210表示缓存存储器106中的第二最多访问页面的页面访问量。类似地,表示主存储器108中的第二最少访问页面的页面访问量的柱条212与比柱条 214更大的计数器值对应,该柱条214表示主存储器108中的最少访问页面的页面访问量。
其中需要特别注意的是柱条216、218,该柱条216、218分别表示在第一时间在缓存存储器106中的最少请求页面和在主存储器108 中的最多请求页面。在所图示的示例中,柱条216小于柱条218,并且因此表示在第一时间针对缓存存储器106中的最少请求页面的访问请求已经少于针对主存储器108中的最多请求页面的访问请求。
图表300与图表200相似,其包括表示计数器值和存储器维护的页面的轴、在缓存存储器106和主存储器108中维护的页面之间的分割线等。然而,在值得注意的方面中,图表300与图表200不同。在图表300中,交换了柱条216、218,表示在缓存存储器106与主存储器108之间交换了对应的页面。换言之,图表 300图示了一种场景,在该场景中,将柱条216表示的页面(例如,通过移动器114)移入主存储器108中,并且将柱条218表示的页面(例如,通过移动器114)移入缓存存储器106中。
如上面所提到的,图表200与第一时间对应并且图表300与在第一时间之后的第二时间对应。为了清楚起见,在图2和图3中可以假设在第一时间和第二时间之间尚未提出由图示的柱条表示的访问页面的请求。换言之,图表200、300中表示的页面的计数器值在这两个时间处是相同的。然而,在第一时间和第二时间之间,假设已经发生了移动周期,该移动周期指在期间移动器114在缓存存储器106和主存储器108之间交换页面的时间。因此,第一时间和第二时间可以表示分别就在移动周期之前和就在移动周期之后的时间片段。因此,在第一时间和第二时间之间,通过移动器114应用剖析缓存替换技术来优化存储器-剖析计算装置102的缓存的页面。
关于图1的示例存储器-剖析计算装置102,考虑了图4的详细图示。存储器-剖析计算装置102可以是一个装置或者各个装置的组合,此处将用6种示例来说明:智能手机102-1、计算手表102-2、数码相机102-3、膝上型计算机102-4、平板计算机102-5、和台式计算机102-6,但也可以使用其它计算装置和***,诸如上网本、游戏机、或者机顶盒。如上面所提到的,在一些实施例中,本技术至少部分地通过远程计算装置来操作。例如,可以将远程计算装置配置为服务器。在这种情况下,可以局部地放弃一些计算,例如,通过具有有限计算操作的通信装置将使能该计算的数据传送至服务器或者甚至将使能该计算的数据直接从存储器-剖析计算装置102传送至服务器。
存储器-剖析计算装置102包括显示器402(如图4示出的)、收发器404、一个或者多个处理器406、和计算机可读存储介质408(CRM 408),或者能够与其通信。收发器404能够直接地或者通过通信网络发送和接收数据,诸如通过局域网、广域网、个域网、蜂窝网、或者近场网络来自装置102的客户端应用数据。
在一种或者多种实施方式中,缓存存储器106、主存储器108、剖析器112、映射器110和移动器114包含在CRM 408上。缓存存储器 106包括缓存的页面410并且主存储器包括主存储器加载的页面412 (MM-加载的页面412)。剖析器112包括剖析器112采集的关于存储器访问的存储器访问信息414。例如,存储器访问信息414包括计数器,该计数器指示访问缓存的页面410和MM-加载的页面412的请求量。 CRM 408还包括输入地址映射416,该输入地址映射416将输入地址 (诸如,存储器用户提供来访问在缓存存储器或者主存储器中的信息的页面的输入地址)映射到缓存存储器106中的缓存的页面410中的一个的地址(缓存命中),或者主存储器108中的MM-加载的页面412 中的一个的地址(缓存缺失)。
如上面讨论的,映射器110用于各个存储器访问,并且表示将输入地址映射到在缓存存储器106或者主存储器108中的地址的功能。在映射器110接收到输入地址时(例如,用于请求访问来自存储器的数据的页面),映射器110可以参考输入地址映射416并且返回缓存存储器106或者主存储器108的对应地址。
也将剖析器112用于各个存储器访问。具体地,剖析器112追踪对缓存的页面410和MM-加载的页面412的访问的数量。在一种或者多种实施方式中,剖析器112维护针对各个缓存的页面410和各个MM- 加载的页面412的相应计数器,作为存储器访问信息414的一部分。在这种场景中,在访问缓存页面410中的一个和MM-加载的页面412 中的一个时,剖析器112递增相应计数器以指示该访问。然而,在一些实施方式中,为各个缓存的页面410和各个MM-加载的页面412维护可递增计数器可能会消耗太多的存储空间。如果剖析器112使用8 位计数器,那么主存储器为4GB并且各个MM-加载的页面412为4KB,例如,然后将1MB的存储器仅用于存储一百万个页面的计数器,这在一些实施方式中可能不合适,例如,在将存储器访问信息414存储在静态随机存取存储器(SRAM)中时。因此,剖析器112可以按照利用更少存储的方式来追踪并且维护存储器访问信息414。例如,剖析器 112可以实施计数器,使得通过一系列计数器的动态扩展来减少总计数器存储,或者使得,对于存储器的每个页面,存在少于一个的计数器。
关于通过动态扩展来减少总计数器存储,在一种或者多种默认实施方式中,剖析器112可以使用8位计数器,而在一种或者多种其它实施方式中,可以使用动态扩展的计数器。为了实施范围动态扩展的计数器,可以使用浮点表示法。广义地说,在缓存存储器106和主存储器108中的页面的访问计数具有高动态范围,例如,相较于低访问度的页面,可以明显更多地访问高访问度的页面,并且高访问度的页面的访问量在***操作期间可以继续增加。
在一种或者多种实施方式中,包括采用了动态扩展的计数器的实施方式,可以将存储器中的数据划分为集合。换言之,可以将缓存的页面410和MM-加载的页面412划分为页面集合,从而使得每个集合包括一些缓存的页面410和一些MM-加载的页面412。例如,在缓存存储器106为128MB,主存储器108为4GB,并且每个页面为4KB 的继续的示例中,可以将页面划分为集合,从而使得每个集合包括512 个MM-加载的页面412和16个缓存的页面410。在将存储器中的数据划分为集合时,移动器114可以将在集合中的缓存的页面410与也在该集合中的MM-加载的页面412交换。因此,在检查计数器时,在该示例中,移动器114可以检查512个计数器以确定最多请求页面和最少请求页面。然而,移动器114不将在集合中的缓存页面410与来自其它集合中的MM-加载的页面412交换。
在动态扩展的计数器实施方式中,剖析器112可以针对页面的每个集合保持公共标度S,并且针对集合中的每个页面保持N位计数器 C。例如,剖析器可以通过使用6位来实施针对页面集合的公共标度S。广义地说,在将页面划分为集合时,剖析器112可以使用公共标度,这是因为在集合内将计数器值进行比较,例如,由于仅交换在相同集合的缓存存储器106和主存储器108中的页面。利用公共标度S和N 位计数器C,剖析器112可以维护计数器,从而使得计数器的值等于 C×2S。
与剖析缓存替换的默认实施方式形成对比,在剖析缓存替换的默认实施方式中,剖析器112针对页面的每次访问将计数器值递增1,在使用动态扩展的计数器的实施方式中,剖析器112以的概率增加页面的计数器C。这允许剖析器112生成S随机位,并且然后,仅在各个S 位为零时,增加计数器。在页面的计数器C溢出时(例如,在先前的N 位不足以表示页面访问时),剖析器112可以将页面的集合的公共标度S增加1,并且将导致该溢出的特定页面以及该集合的其它页面的各个计数器值除以2。
考虑采用了动态扩展的计数器的该方案的场景。剖析器112可以按照各种不同的方式来存储每个计数器值。例如,剖析器112可以存储等于C的计数器值,其中,C仅仅是二进制整数。剖析器112还可以存储等于C×2S的计数器值,其中,C还是二进制整数。剖析器112还可以通过针对C使用简单的浮点表示法来增加单独的计数器的动态范围。剖析器112存储的计数器值仍然可以等于C×2S,然而,剖析器 112可以将C编码为:C=K×2E。
此处,术语K表示有效位数,该有效位数是由其有效数字组成的浮点数的一部分,并且术语E表示底数(2是底数)的指数。鉴于这种情况,最后的计数器值是:K×2E+S。
如果在该场景中,假设剖析器112使用4位有效位数K(从而使得其值可以在0-15中变化)和3位指数(从而使得其值可以在0-7中变化),那么7位计数器C可以表示在[0,15×27]范围内的页面访问值。
考虑采用了动态扩展的计数器的替代场景。在该替代场景中,剖析器112按照不同的方式来对单独的计数器C进行编码。具体地,编码取决于分配给有效位数K的位的数量,本文表示为nK,和分配给指数的位的数量,本文表示为n。如果指数E等于零,然后,剖析器112仅对计数器C的值进行编码,从而使得其等于有效位数K,从而使得 C=K。然而,如果指数E大于零,那么剖析器112对计数器C的值进行如下编码:
C=(K+2nK)2E-1
如果在该替代场景中,假设分配给有效位数nK的位的数量是4 位并且分配给指数nE的位的数量是3位,那么计数器可以存储在 [0,1984]范围内的值。如上面提到的,除了减少单独的计数器的大小(就位的数量而言)之外,在一些存储敏感的实施方式中,也可以减少计数器的数量,例如,从存储器的每一页一个计数器减少到存储器的每一页少于一个计数器。
关于针对存储器的每一页使用少于一个计数器,这样做是基于以下观察:存储器用户(例如,客户端应用)结合公共工作负载使用的数据的工作集不太可能等于或者超过主存储器108的大小。此外,由于剖析缓存替换涉及将主存储器108的高请求页面缓存到缓存存储器 106中,而不是,仅因为请求对那些页面的访问而简单地将页面缓存到缓存存储器106中,因此主存储器108的很少请求页面的访问量与本文描述的技术在很大程度上是不相干的。因此,剖析器112可以维护用于更常访问的页面的计数器。
为了减少用于追踪缓存存储器106和主存储器108中的页面的计数器的数量,可以使用标签来标识各个计数器所关联的页面。在请求访问与计数器相关联的页面时,剖析器112按照上面描述的方式中的一种方式来更新计数器以指示该访问。然而,在请求访问与计数器不相关联的页面(例如,计数器当前未追踪其访问的页面)时,可以将已经用于追踪对不同页面的访问的计数器中的一个计数器与该不同页面解除关联,并且将其与请求的但先前未相关联的页面相关联。
一些将计数器与追踪的页面解除关联并且将该计数器与请求的但先前未相关联的页面相关联的传统技术可以导致抖动。在一种或者多种实施方式中,剖析缓存替换涉及应用一种或者多种修改的计数器标记技术来将计数器与追踪的页面解除关联并且将计数器与请求的但先前未相关联的页面相关联。与传统技术相比较,这些修改的计数器标记技术可以减少抖动。
剖析器112通过维护计数器N的数量作为存储器访问信息414的一部分来应用修改的计数器标记技术。每个计数器包括表示页面标签的数据对,该数据对标识计数器所关联的页面和与该页面相关联的计数,例如,{页面,计数}形式。在请求访问特定页面X时,剖析器112 检查以查看是否有与特定页面X相关联的计数器{X,C}。如果有与特定页面X相关联的计数器,例如,存在{X,C},那么剖析器112将计数C 递增1。如果不存在与特定页面X相关联的计数器,那么剖析器112 查找针对具有最小计数C的页面Y的计数器{Y,C}。然后,剖析器112 更换计数器值,从而使得该计数器值与特定页面X相关联并且指示特定页面X的一次访问,例如,剖析器将这对值从{Y,C}调整到{X,1}。这与延续先前计数的传统技术不同。换言之,不是像修改的计数器标记技术一样用1来替换C,传统技术是用C+1来替换C。通过用修改的计数器标记技术来对页面访问进行计数,具有最大计数的计数器N的数量与前n个页面对应。
不管如何实施计数器,移动器114表示检查存储器访问信息414 中维护的计数器以便确定是否在主存储器108和缓存存储器106之间交换页面的功能。如上面提到的,移动器114执行这些检查,以做出按照预定时间间隔,诸如,每1微秒(μs),发起页面交换的确定。尽管本文描述的示例表示该时间间隔是预定的并且与1μs对应,但是,在不脱离本文描述的技术的精神或者范围的情况下,该时间间隔可以不同。例如,也可以基于如下面详细讨论的访问数量(例如,请求对来自剖析存储器104的页面的总访问数量)等,来随机地确定预定间隔。
按照预定时间间隔(每1微秒),移动器114可以根据本文描述的技术来做出确定。而不是通过使用绝对时间(例如,预定时间间隔),针对页面的每个集合的每N个存储器访问,移动器114可以可替代地做出确定。按照这种方式,本文描述的技术可以控制使用的后台带宽的百分比,而不是使用的后台带宽的绝对值。
不管频率如何,在移动周期期间,将移动器114配置为确定对主存储器108中的高请求页面的请求是否多于对缓存存储器106中的低请求页面的请求。相对于MM-加载的页面412,高度请求主存储器108 的高请求页面,并且,相对于缓存的页面410,较低地请求缓存存储器 106中的低请求页面。然而,对高请求的主存储器页面的请求量与对低请求的缓存存储器页面的请求量可以基本相似。
如果对主存储器108中的高请求页面的请求多于对缓存存储器 106中的低请求页面的请求,那么移动器114将主存储器108的高请求页面与缓存存储器106的低请求页面交换。为此,移动器114从缓存存储器106清除低请求页面,并且将主存储器的高请求页面填充到缓冲存储器106中。由于移动器114的操作与来自存储器用户(例如,客户端应用)的需求请求相竞争,将移动器114的确定和交换操作限制到移动周期减少了移动器114对存储器用户的影响——减少了存储器剖析计算装置102的存储器访问的延迟。因此,在存储器用户访问来自缓存存储器106和主存储器108的数据的页面的同时,移动器114 在后台操作。
除了将移动器114的操作限制到后台之外,存储器用户提出的页面访问请求的优先权高于为了优化存储器而提出的页面访问请求,例如,移动器114请求的页面交换。针对访问来自缓存存储器106和主存储器108的数据的页面而提出的请求大体上可以划分为两种类型——需求请求和后台请求。术语“需求请求”是指存储器用户,诸如客户端应用,针对来自缓存存储器106和主存储器108的数据的页面提出的请求。术语“后台请求”是指需求请求直接触发的填充或者清除请求,诸如移动器114结合在缓存存储器106和主存储器108之间交换页面而提出的填充和清除请求。
本文描述的技术按照以下几个方面来优先满足需求请求,而不是满足后台请求。首先,该技术可以允许有限数量的待定后台请求,诸如,通过将待定请求维护为一个队列,该队列配置为保持该有限数量的待定请求。如果在提出后台请求时队列已满,那么仅丢弃该请求,例如,不将该请求添加到队列中。事实上,直到服务了在已满的队列中的待定后台请求中的至少一个之后,才将其它后台请求添加到队列中。
本文描述的技术优先满足需求请求而不是满足后台请求的第二个方面涉及一种实施方式,在这种实施方式中,使用了动态随机存取存储器(DRAM)请求队列并且允许后台请求填充有限数量(例如,一半)的DRAM请求队列。例如,如果DRAM请求队列的填充程度超过队列的最大填充程度的一半,那么本文描述的技术将传入请求限制为需求请求。此时,在DRAM请求队列的填充程度超过队列的最大填充程度的一半时,可以停止后台请求。例如,如果存在太多的待定的由移动器所请求的后台请求,那么丢弃移动器114发起的后台请求。尽管如此,但是将未丢弃的由移动器114发起的后台请求分解成DRAM 请求并且发送至DRAM请求队列。如果DRAM请求队列超过特定阈值 (例如,队列的最大填充程度的一半),这表示DRAM请求队列太繁忙当前不能处理传入的DRAM请求,那么不将进一步的后台请求发送至DRAM请求队列。相反,保留后台DRAM请求直到DRAM请求队列程度低于阈值。一旦DRAM请求队列能够再次处理后台DRAM请求,将所保留的请求发送至DRAM请求队列。
在操作期间,存储器用户施加于剖析存储器104的工作负载可以随着时间而改变。结合变化的工作负载,高请求的页面也可以改变。换言之,在一个客户端应用操作时在主存储器108中缓存的和高请求的页面可以不与在另一个客户端应用操作时在主存储器108中缓存的和高请求的页面相同。为了确保利用与存储器-剖析计算装置102的当前操作对应的页面来填充缓存存储器106,剖析器112可以对页面计数器的值进行衰减。通过按照一些衰减间隔对计数器值进行自动衰减,曾经密集访问的页面当它们的使用减少时,可以从缓存存储器106清除。
在一种或者多种实施方式中,剖析器112可以按照衰减间隔来简单地将集合中的各个计数器值减半。考虑了衰减间隔与针对集合中的页面所请求的总访问数量的预定阈值(例如,214次访问)对应的示例。在该示例中,在对集合中的页面的总访问数量超过214次访问时,剖析器112将集合中的计数器值除以2。返回参考使用公共标度S的实施方式,在集合的公共标度S大于0时,剖析器112通过将集合的公共标度S减少1来对计数器进行衰减。然而,如果集合的公共标度S已经为0,那么剖析器112将集合的各个计数器除以2。然而,在其它实施方式中,衰减间隔与一些预定绝对时间对应,而不是与预定访问数量对应。应该理解,在不脱离本文描述的技术的精神或者范围的情况下,可以按照除了将计数器除以2之外的方式来对计数器进行衰减。例如,除了将计数器除以2之外,可以将计数器乘以一个因子,诸如三分之二(2/3)。
进一步关于在存储器-剖析计算装置102的操作期间发生的另一些场景,在一些情况下,针对缓存存储器106的低请求页面和主存储器 108的高请求页面的计数器可以具有相同的或者非常相似的值。参考页面的集合,该集合的低请求缓存页面(与其它缓存页面相比较)和该集合的主存储器108中的高请求页面可以具有相同的或者非常相似的值。在缓存的页面针对作为要缓存的候选的页面具有相似计数器值时,当移动器114确定要缓存哪些页面时,可能会产生困难。考虑如下示例:相较于集合的其它页面,对该集合的第一页面的访问略多。由于具有更多的访问,所以移动器114可以对第一页面进行缓存。然而,之后还考虑,相较于第一页面,对集合的第二页面的访问变得略多。由于后续的访问,移动器114用第二页面替换了第一页面,从而从缓存存储器106清除第一页面。在循环参考的页面的集合中,再次略多地访问第一页面可以使移动器114替换掉缓存存储器中的第二页面,以此类推。这种场景可以针对这些页面导致抖动,并且在使用衰减的计数器并且衰减间隔较短时,这种场景尤其存在问题。
为了防止这种抖动,移动器114可以在确定将主存储器108的高请求页面与缓存存储器106的低请求页面交换之前添加进入屏障。因此,不是在每当高请求的主存储器页面的请求访问量大于低请求的缓存页面的请求访问量时都将主存储器108的高请求页面与缓存存储器 106的低请求页面交换,而是移动器114可以确定在高请求的主存储器页面的请求访问量大于低请求的缓存页面的访问量和进入屏障时,交换页面。例如,在以下条件成立时,移动器114可以确定交换页面。
AccessCount(high MM page)>(AccessCount(little CM page)+Δ)
在该表达式中,Δ表示进入屏障并且可以与预定整数,诸如,抵消交换页面的资源成本(例如,时间、电力等)的整数,相对应。
在不脱离本文描述的技术的精神或者范围的情况下,仍然可以按照其它方式来实施剖析缓存替换。替代实施方式的示例是使用时间复用计数器。不是仅仅为访问最多的页面维护计数器,剖析器112可以针对各个页面维护计数器。然而,在任何给定时间处,剖析器112可以具有访问有限数量的计数器的权限。考虑如下场景:将十六分之一的计数器维护在SRAM中并且将剩余的十六分之十五的计数器维护在 DRAM中。在请求访问用于其的计数器在SRAM中的页面时,剖析器 112仅递增计数器。然而,在请求访问用于其的计数器在DRAM中的页面时,剖析器112忽略该请求。周期性地,这些时间复用计数器技术使SRAM中的计数器回冲到DRAM中,并且将另外十六分之一的计数器从DRAM加载到SRAM中。如此,过了一段时间之后,每个计数器将会具有实际访问计数值的大约十六分之一。可以将移动器114配置为检查在DRAM和SRAM中的计数器。
替代实施例的另一示例是将计数器捆绑在页表数据结构中。因此,不是维护单独的计数器,剖析器112可以将计数器捆绑在页表数据结构中。如此,计数器的管理可以遵循与页表和转换后备缓冲器(TLB) 相同的流程。在替代实施例的又一示例中,可以通过逐渐地降低公共标度S来实施计数器衰减,产生分数S。不是按照预定衰减间隔对每个计数器进行衰减,而是可以通过逐渐地降低公共标度S来对所表示的计数器值进行衰减。
下面更加详细地阐述了这些和其它能力、以及图1和图4的实体动作和交互的方式。可以进一步将这些实体划分、组合等。图1的环境100和图4的详细图示示出了能够采用描述的技术的许多可能的环境中的一些。
示例方法
图5至图7描绘了实现或者使用剖析缓存替换的方法。将这些方法示出为指定已执行的操作的块的集合,但不一定局限于被示出为通过相应块来执行操作的顺序或者组合。可以对图1的环境100和在图4 中详细描述的实体进行以下讨论参考的部分,对其的参考仅仅是用作示例。本技术不局限于通过在一个装置上运行的一个实体或者多个实体来执行。
图5描绘了方法500,该方法描述了根据用于管理在缓存存储器和主存储器之间的数据迁移的剖析算法来替换缓存存储器中的页面的方式。
在502处,更新维护为与主存储器和缓存存储器中维护的数据的页面相关联的计数器。计数器配置为指示访问主存储器和缓存存储器中维护的页面的请求量。例如,剖析器112维护存储器访问信息414 中的计数器。这些计数器指示访问缓存的页面410和MM-加载页面412 的请求量。例如,响应于访问缓存的页面410中的一个或者MM-加载页面412中的一个的请求,剖析器112递增存储器访问信息414中的对应计数器。
为了不干扰到诸如客户端应用的存储器用户的存储器访问,在服务存储器针对缓存存储器106和主存储器108中维护的页面提出的请求的后台中执行剖析存储器替换。如此,可以将方法步骤504和506 的执行局限于按照预定时间间隔,诸如每1微秒(μs),来执行。在 504处,按照预定时间间隔,根据计数器,做出关于主存储器的高请求页面的页面访问请求量是否大于缓存存储器的低请求页面的页面访问请求量的确定。相对于加载在主存储器中的页面,主存储器的高请求页面是高请求的,并且相对于加载在缓存存储器中的页面,缓存存储器的低请求页面是低请求的。然而,对高请求的主存储器页面的请求量与对低请求的缓存存储器页面的请求量可以基本相似。
例如,移动器114检查通过剖析器112维护在存储器访问信息414 中的计数器。例如,每1微秒,移动器114根据计数器来确定低请求的缓存的页面410(例如,其被请求少于缓存存储器106中的其它页面) 和高请求的MM-加载的页面412(例如,其被请求多于主存储器108 中的其它页面)。移动器114比较相应的计数器值,以确定对主存储器108的高请求页面的请求是否多于对缓存存储器106的低请求页面的请求。
在506处,响应于高请求的主存储器页面的页面访问请求量大于低请求的缓存存储器页面的页面访问请求量的确定,将高请求的主存储器页面与低请求的缓存存储器页面交换。例如,移动器114在步骤 504处确定对主存储器108的高请求页面的请求多于对缓存存储器106 的低请求页面的请求。响应于该确定,移动器114将来自主存储器108 的高请求页面与来自缓存存储器106的低请求页面交换。换言之,移动器114从缓存存储器106清除低请求的缓存存储器页面并且将该页面加载到主存储器108中。移动器114还对高请求的主存储器页面进行缓存。
图6描绘方法600,该方法描述了通过使用空间减小的计数器来对剖析缓存替换的页面访问进行计数的方式。
在602处,针对存储器中的页面的集合维护公共标度。例如,将剖析存储器104中维护的数据划分为页面的集合,从而使得各个集合包括来自缓存存储器106的多个页面和来自主存储器108的多个页面。具体地,可以如上面详细描述地将页面划分为集合。针对数据的每个集合,剖析器112维护公共标度S,该公共标度S指示集合中的页面的基本计数或者基本访问量。在一种或者多种实施方式中,剖析器112 针对页面的每个集合维护4位公共标度。应该理解,在不脱离本文所描述的本技术的精神或者范围的情况下,可以使用不同大小的公共标度(就位的数量而言)。
在604处,针对集合中的各个页面维护计数器,并且该计数器指示相对于集合中的其它页面的页面访问量。例如,剖析器112针对集合中的每个页面维护N位计数器,如上面详细描述的。页面的N位计数器、与该页面的集合的公共标度S共同指示页面的访问量。响应于访问页面的请求,在606处,根据该访问来更新对应的计数器和公共标度。例如,响应于访问页面的请求,剖析器112更新与请求的页面相关联的N位计数器并且还更新与请求的页面的集合相关联的公共标度。剖析器112按照上面详细描述的方式来更新N位计数器和公共标度S。应该理解,本文描述的技术可以利用在一种或者多种存储敏感的实施方式中的方法600,例如,在将存储器访问信息414存储在SRAM 中时。
图7描绘了方法700,该方法描述了通过使用存储器中的每个页面少于一个计数器来计数针对剖析缓存替换的页面访问的方式。与方法600一样,也可以将方法700用于一种或者多种存储敏感的实施方式中。
在702处,将n个计数器与存储器中的前n个访问页面相关联。例如,剖析器112将n个计数器与剖析存储器104中的前n个访问页面相关联。具体地,将计数器与剖析存储器104的缓存的页面相关联的,留下剩余的计数器与主存储器108中的下一个最多访问的页面相关联。
在704处,接收访问在存储器中维护的页面的请求。例如,接收访问在剖析存储器104中维护的数据的页面的请求,诸如访问缓存页面410中的一个或者MM-加载的页面412中的一个。在706处,做出关于请求的页面是否与计数器中的一个相关联的确定,例如,计数器中的一个是否具有识别请求的页面的属性。例如,剖析器112确定请求的页面是否与维护为存储器访问信息414中的一部分的计数器中的一个相关联的确定。
如果做出请求的页面与计数器中的一个相关联的确定(例如,在 706处为“是”),那么在708处,更新与请求的页面相关联的计数器。例如,剖析器112将用于与请求的页面相关联的计数器的计数器值C 从C递增到C+1。然而,如果做出请求的页面不与计数器中的一个相关联的确定(例如,在706处为“否”),那么在710处,确定与计数器相关联的最少访问页面。例如,剖析器112确定与计数器相关联的最少访问页面和请求的页面在页面的相同集合中。可替代地,剖析器112仅确定与计数器相关联的页面的最少访问页面。剖析器112可以通过检查计数器的计数器值来确定最少访问页面。
在712处,将最少访问页面的计数器与请求的页面的计数器相关联。例如,剖析器112将最少访问页面与计数器解除关联,并且然后将计数器与请求的页面相关联,例如,通过改变计数器的标签来识别请求的页面。在714处,将计数器的计数器值调整为反映该访问请求。例如,剖析器112通过将计数器值设置为1来调整计数器值C(其指示先前与计数器相关联的页面的访问量)。将计数器值设置为1与涉及将计数器值C设置为C+1的一些传统技术相反。如此,方法700可以减少抖动。
先前的讨论描述了关于剖析缓存替换的方法。可以在硬件(例如,固定逻辑电路***)、固件、软件、手动处理、或者其任何组合中实施这些方法的各个方面。这些技术可以体现在图1、图4和图8示出的实体中的一个或者多个(下面在图8中描述了计算***800),可以将这些实体进一步地划分、组合等。因此,这些图示出了能够采用所描述的技术的许多可能的***或者设备中的一些。这些图中的实体通常表示软件、固件、硬件、整个装置或者网络、或者其组合。
示例计算***
图8图示了示例计算***800的各个部件,这些部件可以实施为参考先前图中所描述的任何类型的客户端、服务器、和/或计算装置,以实施剖析缓存替换。在实施例中,可以将计算***800实施为有线的和/或无线的可穿戴装置、片上***(SoC)、和/或另一类型的装置及其部分中的一个或者组合。还可以将计算***800与用户(例如,个人)和/或操作装置的实体相关联,从而使得装置描述了包括用户、软件、固件和/或装置的组合的逻辑装置。
计算***800包括实现装置数据804(例如,接收到的数据、正在接收的数据、计划用于广播的数据、数据的分组等)的有线和/或无线通信的通信装置802。装置数据804或者其它装置内容可以包括装置的配置设置、存储在装置上的媒体内容、和/或与装置的用户相关联的信息。存储在计算***800的媒体内容可以包括任何类型的音频、视频、和/或图像数据,包括剖析缓存替换动作的复杂或者详细的结果。计算***800包括一个或者多个数据输入806,经由该一个或者多个数据输入可以接收任何类型的数据、媒体内容、和/或输入,诸如,人类话语、用户可选择的输入(显式或隐式)、消息、音乐、电视媒体内容、录制的视频内容、和从任何内容和/或数据源接收到的任何其它类型的音频、视频、和/或图像数据。
计算***800还包括通信接口808,该通信接口808可以实施为串行和/或并行接口、无线接口、任何类型的网络接口、调制解调器中的任何一个或者多个,并且可以实施为任何其它类型的通信接口。通信接口808在计算***800与其它电子、计算和通信装置与计算*** 800进行通信所采用的通信网络之间提供连接和/或通信链路。
计算***800包括一个或者多个处理器810(例如,微处理器、控制器等中的任何一种),该处理器处理各种计算机可执行指令以控制计算***800的操作并且实现进行剖析缓存替换的技术或者可以体现剖析缓存替换的技术。可替代地或者另外,可以利用硬件、固件、或者实施为与通常标识为812的处理和控制电路连接的固定逻辑电路***中的任何一个或者组合来实施计算***800。虽然图中未示出,但是计算***800可以包括将装置内的各种部件耦合在一起的***总线或者数据传输***。***总线可以包括不同总线结构中的任何一种或者组合,诸如,存储器总线或者存储器控制器、***总线、通用串行总线、和/或利用多种总线架构中的任何一种的处理器或者本地总线。
除了实现持久和/或非暂时性数据存储的剖析存储器104之外,计算***800还包括计算机可读介质814,诸如,一个或者多个存储器装置(即,与仅支持信号传输相反),其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器(ROM)、闪速存储器、EPROM、 EEPROM等中的任何一种或者多种)、和盘存储装置。盘存储装置可以实施为任何类型的磁或者光存储装置,诸如,硬盘驱动器、可记录和/或可重写光盘(CD)、任何类型的数字通用盘(DVD)等。计算***800还可以包括大容量存储介质装置816。在该示例中,计算机可读介质814还包括剖析存储器104。
计算机可读介质814提供存储结构来存储装置数据804、以及各种装置应用818和与计算***800的操作方面相关的任何其它类型的信息和/或数据。例如,可以将操作***820维护为具有计算机可读介质814的计算机应用并且在处理器810上执行。装置应用818可以包括装置管理器,诸如任何形式的控制应用、软件应用、信号处理和控制模块、特定装置所固有的代码、特定装置的硬件抽象层等。
装置应用818还包括任何***部件、引擎或者管理器来实施本技术。
结论
虽然已经用针对特征和/或方法的语言描述了使用剖析缓存替换的技术以及实现剖析缓存替换的设备的实施例,但是要理解,随附权利要求书的主体并不限于所描述的具体特征或者方法。而是,该具体特征和方法是作为这些技术的示例实施方式而被公开。
Claims (20)
1.一种用于管理数据迁移的方法,所述方法包括:
维护与在主存储器和缓存存储器中维护的数据的页面相关联的计数器,所述计数器指示访问所述页面的请求量,在所述主存储器和所述缓存存储器中维护的所述数据的所述页面划分为页面集合,每个页面集合包括来自所述缓存存储器的多个页面和来自所述主存储器的多个页面;
基于所述维护来动态扩展由所述计数器能够表示的值的范围;以及
按照预定时间间隔:
根据所述计数器来确定在给定集合中的所述主存储器的高请求页面的页面访问请求量是否大于在所述给定集合中的所述缓存存储器的低请求页面的页面访问请求量,所述确定在少于所有页面集合上按照所述预定时间间隔执行;以及
响应于确定在所述给定集合中的所述主存储器的所述高请求页面的页面访问请求量大于在所述给定集合中的所述缓存存储器的所述低请求页面的页面访问请求量,在所述给定集合中将所述主存储器的所述高请求页面与所述缓存存储器的所述低请求页面交换。
2.根据权利要求1所述的方法,其中,所述缓存存储器的所述低请求页面与所述缓存存储器的最少请求页面对应,并且所述主存储器的所述高请求页面与所述主存储器的最多请求页面对应。
3.根据权利要求1所述的方法,其中,在服务由存储器用户做出的访问在所述主存储器和所述缓存存储器中维护的页面的请求的后台中,执行所述确定步骤和所述交换步骤。
4.根据权利要求1所述的方法,其进一步包括:
接收访问在所述主存储器中维护的页面的至少一个页面的请求;以及
服务来自所述主存储器的所述请求,而不首先将所述至少一个页面填充到所述缓存存储器中。
5.根据权利要求1所述的方法,其中,不将所述主存储器的页面与不同集合中的所述缓存存储器的页面交换。
6.根据权利要求1所述的方法,其中,所述预定时间间隔是1微秒(1μs)。
7.根据权利要求1所述的方法,其中,所述动态扩展包括使用浮点表示法或公共标度中的至少一个实施所述计数器。
8.一种用于管理数据迁移的***,包括:
配置为维护数据的页面的主存储器和缓存存储器,所述缓存存储器配置为维护比所述主存储器更少的页面,所述缓存存储器比所述主存储器具有更低的延迟、更高的宽带、或者更低的电力使用中的至少一个,在所述主存储器和所述缓存存储器中维护的所述数据的所述页面划分为页面集合,每个页面集合包括来自所述缓存存储器的多个页面和来自所述主存储器的多个页面;
剖析器,所述剖析器配置为:
维护与所述主存储器和所述缓存存储器中维护的所述页面相关联的计数器,所述计数器配置为指示访问所述页面的请求量;以及
基于所述维护来动态扩展由所述计数器能够表示的值的范围;以及
移动器,所述移动器配置为:
根据所述计数器按照预定时间间隔来做出关于在给定集合中的所述主存储器的高请求页面的页面访问请求量是否大于在所述给定集合中的所述缓存存储器的低请求页面的页面访问请求量的确定,包括被配置为按照所述预定时间间隔检查少于所有页面集合;以及
响应于确定在所述给定集合中的所述主存储器的所述高请求页面的页面访问请求量大于在所述给定集合中的所述缓存存储器的所述低请求页面的页面访问请求量,在所述给定集合中将所述主存储器的所述高请求页面与所述缓存存储器的所述低请求页面交换。
9.根据权利要求8所述的***,其中,所述剖析器进一步配置为对于所述主存储器中的所述页面的每一个,维护相应的计数器。
10.根据权利要求8所述的***,其中,所述剖析器进一步配置为:针对所述主存储器中维护的数据的每个页面,维护少于一个所述计数器。
11.根据权利要求8所述的***,其中,所述预定时间间隔包括1微秒(1μs)。
12.根据权利要求8所述的***,进一步包括映射器,所述映射器配置为将与存储器访问请求相关联的输入地址映射到所述主存储器或者所述缓存存储器中的对应页面,以有效服务所述存储器访问请求。
13.根据权利要求8所述的***,其中,所述剖析器被配置为通过使用浮点表示法或公共标度中的至少一个实施所述计数器来动态扩展所述值的范围。
14.一种或者多种计算机可读存储介质,包括:
配置为维护数据的页面的主存储器和缓存存储器,所述缓存存储器配置为维护比所述主存储器更少的页面;并且
所述缓存存储器比所述主存储器具有更低的延迟、更高的宽带、或者更低的电力使用中的至少一个;以及
指令,所述指令响应于被一个或多个处理器执行通过执行包括以下的操作根据剖析缓存替换技术将所述页面填充到所述缓存存储器中:
维护与所述主存储器和所述缓存存储器的所述页面相关联的计数器,以指示访问所述页面的请求量;
基于所述维护来动态扩展由所述计数器能够表示的值的范围;
根据所述计数器,按照预定时间间隔做出关于所述主存储器的高请求页面的页面访问请求量是否大于所述缓存存储器的低请求页面的页面访问请求量的确定;以及
响应于确定所述主存储器的所述高请求页面的页面访问请求量大于所述缓存存储器的所述低请求页面的页面访问请求量,将所述主存储器的所述高请求页面与所述缓存存储器的所述低请求页面交换。
15.根据权利要求14所述的一种或者多种计算机可读存储介质,其中,所述缓存存储器具有至少128兆字节(MB)的大小。
16.根据权利要求14所述的一种或者多种计算机可读存储介质,其中,所述主存储器的具有至少4千兆字节(GB)的大小。
17.根据权利要求14所述的一种或者多种计算机可读存储介质,其中,所述动态扩展包括使用浮点表示法或公共标度中的至少一个实施所述计数器。
18.根据权利要求14所述的一种或者多种计算机可读存储介质,其中,所述维护计数器包括维护少于所述数据的页面的每个页面一个计数器的计数器的数量。
19.根据权利要求18所述的一种或者多种计算机可读存储介质,其中,所述维护所述计数器包括使用标签来标识与所述计数器中的每一个计数器相关联的页面。
20.根据权利要求14所述的一种或者多种计算机可读存储介质,其中,所述操作进一步包括响应于所述交换而更新所述计数器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662293688P | 2016-02-10 | 2016-02-10 | |
US62/293,688 | 2016-02-10 | ||
US15/097,177 | 2016-04-12 | ||
US15/097,177 US10387329B2 (en) | 2016-02-10 | 2016-04-12 | Profiling cache replacement |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107066397A CN107066397A (zh) | 2017-08-18 |
CN107066397B true CN107066397B (zh) | 2020-12-04 |
Family
ID=57799876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611234178.8A Active CN107066397B (zh) | 2016-02-10 | 2016-12-28 | 用于管理数据迁移的方法、***和存储介质 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10387329B2 (zh) |
EP (1) | EP3414665B1 (zh) |
JP (1) | JP6613375B2 (zh) |
KR (1) | KR102043886B1 (zh) |
CN (1) | CN107066397B (zh) |
DE (2) | DE202016107157U1 (zh) |
GB (1) | GB2547306B (zh) |
TW (1) | TWI684099B (zh) |
WO (1) | WO2017139037A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387329B2 (en) | 2016-02-10 | 2019-08-20 | Google Llc | Profiling cache replacement |
US9826932B2 (en) | 2016-04-19 | 2017-11-28 | Google Llc | Automated abdominojugular reflux testing |
CN107992434A (zh) * | 2017-11-24 | 2018-05-04 | 郑州云海信息技术有限公司 | 用于分布式分层存储***的下刷方法、装置及存储介质 |
CN108089998A (zh) * | 2017-12-13 | 2018-05-29 | 郑州云海信息技术有限公司 | 一种Linux分页替换方法及*** |
CN108829344A (zh) * | 2018-05-24 | 2018-11-16 | 北京百度网讯科技有限公司 | 数据存储方法、装置及存储介质 |
US11475014B2 (en) * | 2018-12-20 | 2022-10-18 | AVAST Software s.r.o. | Updating a toplist for a continuous data stream |
KR20200091199A (ko) * | 2019-01-22 | 2020-07-30 | 에스케이하이닉스 주식회사 | 저장 장치, 저장 장치를 포함하는 컴퓨팅 시스템 및 그 동작 방법 |
US10908821B2 (en) | 2019-02-28 | 2021-02-02 | Micron Technology, Inc. | Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system |
US11106609B2 (en) | 2019-02-28 | 2021-08-31 | Micron Technology, Inc. | Priority scheduling in queues to access cache data in a memory sub-system |
US11288199B2 (en) | 2019-02-28 | 2022-03-29 | Micron Technology, Inc. | Separate read-only cache and write-read cache in a memory sub-system |
US10970222B2 (en) | 2019-02-28 | 2021-04-06 | Micron Technology, Inc. | Eviction of a cache line based on a modification of a sector of the cache line |
US11526290B2 (en) * | 2019-06-29 | 2022-12-13 | Intel Corporation | System and method to track physical address accesses by a CPU or device |
US11237981B1 (en) | 2019-09-30 | 2022-02-01 | Amazon Technologies, Inc. | Memory scanner to accelerate page classification |
US11899589B2 (en) | 2021-06-22 | 2024-02-13 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for bias mode management in memory systems |
CN113489572B (zh) * | 2021-08-23 | 2022-12-20 | 杭州安恒信息技术股份有限公司 | 一种请求发送方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0362880A2 (en) * | 1988-10-07 | 1990-04-11 | Hitachi, Ltd. | Process for partially swapping real storage areas used by a program between a real storage and an auxiliary storage |
EP1505506A1 (en) * | 2003-08-05 | 2005-02-09 | Sap Ag | A method of data caching |
CN102483720A (zh) * | 2009-09-18 | 2012-05-30 | 国际商业机器公司 | 读写感知的高速缓存 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247687A (en) | 1990-08-31 | 1993-09-21 | International Business Machines Corp. | Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time |
US6134602A (en) | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
US6457102B1 (en) * | 1999-11-05 | 2002-09-24 | Emc Corporation | Cache using multiple LRU's |
US6829679B2 (en) * | 2001-11-09 | 2004-12-07 | International Business Machines Corporation | Different caching treatment of memory contents based on memory region |
US20050108478A1 (en) | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Dynamic frequent instruction line cache |
JP2008090554A (ja) | 2006-09-29 | 2008-04-17 | Toshiba Corp | 情報処理装置、制御装置およびメモリ管理方法 |
JP5183650B2 (ja) * | 2010-02-17 | 2013-04-17 | 株式会社日立製作所 | 計算機システム,計算機システムにおけるバックアップ方法及びプログラム |
US20110320754A1 (en) * | 2010-02-23 | 2011-12-29 | Hitachi, Ltd | Management system for storage system and method for managing storage system |
US20120017039A1 (en) * | 2010-07-16 | 2012-01-19 | Plx Technology, Inc. | Caching using virtual memory |
US10169087B2 (en) * | 2011-01-28 | 2019-01-01 | International Business Machines Corporation | Technique for preserving memory affinity in a non-uniform memory access data processing system |
EP2677432A1 (en) | 2011-02-16 | 2013-12-25 | Fujitsu Limited | Memory management program, memory management method, information processing device, and computer-readable recording medium upon which memory management program has been recorded |
JP5376681B2 (ja) | 2011-02-28 | 2013-12-25 | エヌイーシーコンピュータテクノ株式会社 | 情報処理装置及びエラー訂正支援方法 |
US20130091331A1 (en) * | 2011-10-11 | 2013-04-11 | Iulian Moraru | Methods, apparatus, and articles of manufacture to manage memory |
US8832411B2 (en) * | 2011-12-14 | 2014-09-09 | Microsoft Corporation | Working set swapping using a sequentially ordered swap file |
US9098406B2 (en) * | 2012-01-23 | 2015-08-04 | Empire Technology Development Llc | Managing addressable memory in heterogeneous multicore processors |
US9116792B2 (en) * | 2012-05-18 | 2015-08-25 | Silicon Motion, Inc. | Data storage device and method for flash block management |
WO2014057521A1 (en) * | 2012-10-12 | 2014-04-17 | Hitachi, Ltd. | Storage apparatus and data management method |
US9940286B2 (en) | 2013-03-14 | 2018-04-10 | Nvidia Corporation | PCIE traffic tracking hardware in a unified virtual memory system |
KR102094163B1 (ko) | 2013-08-28 | 2020-03-27 | 삼성전자 주식회사 | 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 |
US9472248B2 (en) * | 2014-03-28 | 2016-10-18 | Intel Corporation | Method and apparatus for implementing a heterogeneous memory subsystem |
GB2527788A (en) * | 2014-07-02 | 2016-01-06 | Ibm | Scheduling applications in a clustered computer system |
US9727466B2 (en) * | 2014-08-26 | 2017-08-08 | Arm Limited | Interconnect and method of managing a snoop filter for an interconnect |
US10387329B2 (en) | 2016-02-10 | 2019-08-20 | Google Llc | Profiling cache replacement |
-
2016
- 2016-04-12 US US15/097,177 patent/US10387329B2/en active Active
- 2016-12-08 GB GB1620880.3A patent/GB2547306B/en active Active
- 2016-12-16 TW TW105141709A patent/TWI684099B/zh active
- 2016-12-20 DE DE202016107157.7U patent/DE202016107157U1/de active Active
- 2016-12-20 DE DE102016225545.2A patent/DE102016225545A1/de not_active Withdrawn
- 2016-12-26 WO PCT/US2016/068625 patent/WO2017139037A1/en active Application Filing
- 2016-12-26 EP EP16826601.3A patent/EP3414665B1/en active Active
- 2016-12-26 KR KR1020187011277A patent/KR102043886B1/ko active IP Right Grant
- 2016-12-26 JP JP2018524413A patent/JP6613375B2/ja active Active
- 2016-12-28 CN CN201611234178.8A patent/CN107066397B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0362880A2 (en) * | 1988-10-07 | 1990-04-11 | Hitachi, Ltd. | Process for partially swapping real storage areas used by a program between a real storage and an auxiliary storage |
EP1505506A1 (en) * | 2003-08-05 | 2005-02-09 | Sap Ag | A method of data caching |
CN102483720A (zh) * | 2009-09-18 | 2012-05-30 | 国际商业机器公司 | 读写感知的高速缓存 |
Also Published As
Publication number | Publication date |
---|---|
TWI684099B (zh) | 2020-02-01 |
JP2018537770A (ja) | 2018-12-20 |
EP3414665B1 (en) | 2021-11-10 |
DE202016107157U1 (de) | 2017-06-06 |
TW201732603A (zh) | 2017-09-16 |
GB2547306B (en) | 2019-10-09 |
GB2547306A (en) | 2017-08-16 |
CN107066397A (zh) | 2017-08-18 |
EP3414665A1 (en) | 2018-12-19 |
US10387329B2 (en) | 2019-08-20 |
WO2017139037A1 (en) | 2017-08-17 |
GB201620880D0 (en) | 2017-01-25 |
JP6613375B2 (ja) | 2019-11-27 |
KR102043886B1 (ko) | 2019-12-02 |
US20170228322A1 (en) | 2017-08-10 |
KR20180056736A (ko) | 2018-05-29 |
DE102016225545A1 (de) | 2017-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066397B (zh) | 用于管理数据迁移的方法、***和存储介质 | |
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US10152428B1 (en) | Virtual memory service levels | |
US8745334B2 (en) | Sectored cache replacement algorithm for reducing memory writebacks | |
US6438651B1 (en) | Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US9501419B2 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
CN111602377B (zh) | 高速缓存中资源调整方法、数据访问方法及装置 | |
EP3388935B1 (en) | Cache management method, cache controller and computer system | |
US9880944B2 (en) | Page replacement algorithms for use with solid-state drives | |
US20100083120A1 (en) | Storage System, Control Program and Storage System Conttrol Method | |
US8707006B2 (en) | Cache index coloring for virtual-address dynamic allocators | |
CN109002400B (zh) | 一种内容感知型计算机缓存管理***及方法 | |
WO2021143154A1 (zh) | 一种缓存管理方法及装置 | |
CN115080459A (zh) | 缓存管理方法及装置、计算机可读存储介质 | |
CN110658999B (zh) | 一种信息更新方法、装置、设备及计算机可读存储介质 | |
KR101976320B1 (ko) | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 | |
US11321243B2 (en) | Data storage device including a semiconductor device managing address mapping of a semiconductor memory device | |
CN116069719A (zh) | 处理器、内存控制器、片上***芯片和数据预取方法 | |
US20200167285A1 (en) | Prefetching data to reduce cache misses | |
CN117917650A (zh) | 持久性存储装置及其操作方法 |
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 | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |