CN111177030B - 混合存储器管理 - Google Patents
混合存储器管理 Download PDFInfo
- Publication number
- CN111177030B CN111177030B CN201911227514.XA CN201911227514A CN111177030B CN 111177030 B CN111177030 B CN 111177030B CN 201911227514 A CN201911227514 A CN 201911227514A CN 111177030 B CN111177030 B CN 111177030B
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- data
- cache line
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/065—Replication mechanisms
-
- 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
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及混合存储器管理。提供了方法、系统和装置,用于基于利用至少一个页表遍历器对页表的扫描来确定对于页表的每个页表条目访问位是否被设置,该访问位指示在上一个扫描周期中与页表条目相关联的页是否被访问;响应于确定对于与每一页相关联的页表条目访问位未被设置而递增该页的计数;在确定对于每个页表条目访问位是否被设置后重置该访问位;接收从主存储器访问第一数据页的请求;基于确定第一数据页未存储在主存储器中来发起页故障;以及使用DMA引擎来检修页故障。
Description
分案说明
本申请属于申请日为2017年8月14日的中国发明专利申请No.201710691364.2的分案申请。
技术领域
本说明书大体上涉及存储器系统。
背景技术
各种各样的存储器设备能够被用来维护和存储用于各种计算机和类似系统的数据和指令。在常规的计算系统中,通常采用动态随机存取存储器(DRAM)技术来操作计算机的动态存储器以便应用以高速操作。然而,用作计算机系统中的主存储器的DRAM不再像过去一样快速升级。因此,DRM储存器已经变为计算环境中的有限资源。
可以使用第二层存储器,诸如非易失性存储器,弥补DRAM和诸如NAND闪存的较慢技术之间的性能差距。该第二层存储器可以通过存储器或IO总线来本地访问或通过高速网络来远程地访问。然而,应用需要明确地管理数据放置或系统必须提供在存储器层之间透明地移动数据的自动管理。由此,需要新技术以用于具有最小性能影响的自动管理来克服为较慢存储设备设计的现有技术的不足。
发明内容
以系统和方法实施本说明书中的主题的一个创新方面,所述系统和方法包括:利用处理器基于利用所述处理器的至少一个页表遍历器(walker)对页表的扫描来确定对于所述页表的每个页表条目访问位是否被设置,所述访问位指示在上一个扫描周期中与该页表条目相关联的页是否被访问;响应于确定对于与每一页相关联的页表条目访问位未被设置而递增该页的计数;在利用处理器确定对于每个页表条目访问位是否被设置后重置该访问位;接收从主存储器访问第一数据页的请求;基于确定所述第一数据页未被存储在所述主存储器中来发起页故障;以及使用直接存储器存取(DMA)引擎来检修所述页故障,
在某些实施方式中,使用DMA引擎来检修所述页故障包括:如果所述主存储器无法接收页转移,则基于每页的计数来确定最不常用页中的一页并且将所述最不常用页中的所述页释放到所述辅助存储器中,以及将所述第一页数据从所述辅助存储器传送到所述主存储器。
在某些实施方式中,发起所述页故障包括在所述页故障被检修的同时暂行执行线程;以及在检修所述页故障后释放所述线程以访问所述主存储器。此外,在某些实施方式中,通过以下至少一个来维护每页的计数:在静态随机存取存储器中存储的每页的计数器、计数布隆(Bloom)过滤器,或者在动态随机存取存储器中存储的每页的计数器。
以系统和方法所述本说明书中的主题的一个创新方面,所述系统和方法包括:基于利用至少一个页表遍历器对页表的扫描来确定对于所述页表的每个页表条目访问位是否被设置,所述访问位指示在上一个扫描周期中与该页表条目相关联的页是否在主存储器处被访问;响应于确定对于与所述主存储器中的页相关联的页表条目访问位未被设置而递增对于该页的主计数;在确定对每个页表条目访问位是否被设置后重置该访问位;基于本地代理(home agent)接收访问所述辅助存储器中的页的请求,确定所述辅助存储器中的该页是否被访问;响应于基于所述本地代理接收访问所述辅助存储器中的每一页的请求而确定访问所述辅助存储器中的该页,递增对于所述辅助存储器中的该页的辅助计数;基于所述辅助计数,将所述辅助存储器中的特定页识别为频繁被访问;以及将被识别为频繁被访问的特定页从所述辅助存储器迁移到所述主存储器。
以系统和方法所述本说明书中的主题的另一方面,所述系统和方法包括:基于所述主计数,将所述主存储器中的一定页识别为未被频繁访问;以及将被识别为未被频繁访问的所述一定页从所述主存储器迁移到所述辅助存储器。此外,迁移被识别为未被频繁访问的所述一定页包括:使与所述一定页相关联的页表条目无效,对与所述一定页相关联的任何条目执行转换后备缓冲区变更(translation lookaside buffer shootdown),以及将所述一定页从所述主存储器转移到所述辅助存储器。
在某些实施方式中,通过以下至少一个来维护对于主存储器中的每一页的主计数和对于所述辅助存储器中的每一页的辅助计数中的每一个:在静态随机存取存储器中存储的每页的计数器、计数布隆过滤器、或者在动态随机存取存储器中存储的每页的计数器。
在某些实施方式中,基于所述主计数来将所述主存储器中的一定页识别为未被频繁访问包括确定对于所述一定页的访问间时间满足访问间时间阈值。此外,在某些实施方式中,响应于确定对于所述一定页的访问间时间满足访问间时间阈值,将被识别为未被频繁访问的所述一定页从所述主存储器迁移到所述辅助存储器。
以系统、方法和装置实施本说明书中的主题的另一创新方面,所述系统、方法和装置包括:接收从主存储器访问数据页的第一高速缓存行的请求,以及确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中。响应于确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在所述辅助存储器中,将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;更新与所述数据页相关联的页表条目以指向所述主存储器中的所述数据页的位置;以及将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器。
在某些实施方式中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的第二高速缓存行的访问的同时,实现高速缓存相干性机制。
在某些实施方式中,所述高速缓存相干性机制包括:由所述高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;以及响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放每个高速缓存行的所有权。
在某些实施方式中,所述系统、方法和装置包括将所述数据的高速缓存行存储在所述高速缓存代理的高速缓存中。在某些实施方式中,所述系统、方法和装置包括存储与所述数据页的高速缓存行相关联的标记和相干状态位。
以系统、方法和装置实施本说明书中的主题的另一方面,所述系统、方法和装置包括:响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行,就响应于所述伺探请求而返回所述第二高速缓存行。
以系统、方法和装置实施本说明书中的主题的又一方面,所述系统、方法和装置包括:如果所述主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放页的位置处。
这些方面的其他实施例包括对应的系统、装置、和计算机程序,其被配置成执行在计算机存储设备上编码的方法的动作。
能实现本说明书中所述的主题的具体实施例以便实现下述优点中的一个或多个。例如,用于由硬件确定的存储器中的页的使用或访问统计可以比涉及软件和采样技术的当前方法更精确和准确。此外,通过首先转移请求对其访问的特定高速缓存行而不是整个数据页,可以减少响应于访问页的请求而转移该页所致使的延迟,这导致更快执行正执行的应用或过程。
在附图和下述描述中,阐述本发明的一个或多个实施例的细节。本发明的其他特征和优点根据说明书、附图、和权利要求书将变得显而易见。
附图说明
图1描绘了根据本公开的实施方式的、包括存储器设备的系统的示例。
图2描绘了根据本公开的实施方式的、包括存储器设备的系统的示例。
图3A描绘了根据本公开的实施方式的、用于处置页故障的过程的示例的流程图。
图3B描绘了根据本公开的实施方式的、用于回写线程的过程的示例的流程图。
图4描绘了根据本公开的实施方式的、使用DMA引擎利用硬件来确定页的使用频率以及检修页故障的过程的示例的流程图。
图5描绘了根据本公开的实施方式的、利用硬件来确定页的使用频率以及执行页迁移的过程的示例的流程图。
图6描绘了根据本公开的实施方式的、通过首先转移关键缓存行来处置页故障的过程的示例的流程图。
在各附图中的相似附图标记和名称指示相似的元素。
具体实施方式
新的非易失性存储器可以通过存储器或IO总线来本地访问或通过高速网络来远程地访问。这些技术的性能具有两个重要的作用:首先,它们足够快,使得访问它们的软件开销必须是最小的;以及其次,它们足够慢,使得DRAM通常可以被用作高速缓存。为利用这些类型的非易失性存储器的优点,应用需要明确地管理数据放置或系统必须提供在不同存储器部分之间透明地移动数据的自动管理。
因此,本公开的实施例提供用于通过存储器或IO总线而本地可用或通过网络而远程可用的辅助存储器的高性能自动管理的系统。辅助存储器可以是非易失性并且本质上永久的计算机存储器。辅助存储器可以不由处理器直接访问并且可能比主要存储器(primarymemory)或主存储器(main memory)。主存储器可由CPU直接访问,主存储器也被称为主要存储器、主要储存器、内部存储器或第一层存储器。如下文更详细所述,硬件利用高速缓存相干性协议并且在基于现代处理器的系统中互连以减少访问时延和维护一致性。此外,例如,优化的内核驱动程序为存储器的第二层提供快速路径并且处理与存储器管理硬件的所有通信。与对如同步、存储器管理、和块IO转移的事项产生大的成本的、通过用于页式调度(paging)的内核的现有的路径相比,此过程是有利的。
在下文中,更详细地描述这些特征和附加特征。
图1描绘根据本公开的实施方式的、包括存储器设备的系统100的示例。中央处理单元(CPU)110可以与DRAM 120和存储器管理单元(MMU)150通信。系统100可以进一步包括可以在网络上访问的远程存储器130。高速缓存代理140和本地代理145在存储器的管理中,与MMU 150一起操作。术语高速缓存代理指代存储高速缓存数据并且能发起存储器请求的处理单元代理。换言之,术语高速缓存代理可以表示可以向相干存储器中发起事务并且可以将副本保留在其自己的高速缓存结构中的实体。例如,本地代理145可以是存储器控制器。术语本地代理指代监督或拥有存储器的区域或部分的处理单元代理。换言之,术语本地代理可以表示服务于相干事务、监督相干存储器的一部分、和/或管理在不同高速缓存代理间可能产生的冲突的实体。此外,页表遍历器160和转换后备缓冲区(TLB)165可以是MMU150的一部分或与MMU 150一起实现。
MMU 150是硬件单元,其可以使存储器引用经过它、执行将虚拟存储器地址转换成物理地址以及处理高速缓存控制。例如,MMU 150可以将页表用作包含每页一个页表条目(PTE)的存储器内表(in-memory table)以将虚拟页号映射至主存储器中的物理页号。作为PTE的联合高速缓存的转换后备缓冲区165可以被用来避免每次映射虚拟地址时访问主存储器的必要性。当PTE禁止访问虚拟页——例如因为无物理随机存取存储器被分配到该虚拟页时,MMU 150可以将页故障信号告知CPU 110。参考图1,系统100可以另外包括非易失性存储器180,以及可以可选地包括专用DRAM 170。
图2描绘根据本公开的实施方式的、包括存储器设备的系统200。系统200可以包括CPU 210和DRAM 220。系统200可以进一步包括直接存储器存取(DMA)引擎230和辅助储存器240。CPU 210、DRAM 220、DMA引擎230、和辅助储存器240可以经由一个或多个总线215、225或其他方式的数据通信来进行数据通信。
操作中,DMA引擎230可以被用于检修(service)页故障、处理回写、或页迁移。辅助储存器240可以是用作第二层存储器的存储器设备,可以不由CPU 210直接访问。DMA引擎230可以直接连接到CPU 210或可以是诸如高速缓存代理的单独实体的一部分。当CPU 210尝试从作为主存储器的DRAM 220——即第一层存储器或主要存储器访问页,并且该页被调出(page out)并存在于辅助储存器240中时,页故障会发生。该页故障可以指示操作系统(OS)需要将该页从辅助储存器240移动到主存储器——DRAM 220。根据本文所述的实施例,硬件DMA引擎230管理页故障,检测访问不在主存储器DRAM 220中的页的尝试。作为响应,暂停该线程的执行同时检修页故障。然后,释放该线程以访问主存储器DRAM 220并且继续执行。
以那种方式,硬件可以通过使用DMA引擎230检修页故障来发起页转移。因此,存在可编程DMA引擎230来加速检修页故障、回写脏页、和迁移页中的页转移。DMA引擎230可以管理对多个并发请求的服务。可以使用相干互连上的低开销命令和响应接口来发起和完成DMA引擎230请求,该相干互连可以是用于共享存储器的互连。DMA引擎230可以被配置成相干存储器的采用存储器相干性协议的用户,使得DMA引擎230可以将数据直接转移到处理器或CPU 210的最后一级高速缓存。
图3A描述根据本公开的实施方式的、用于处理页故障的过程300的示例的流程图。如上所述,当线程或运行的程序访问被映射到虚拟地址空间但并不真正被加载到主存储器中的存储器页时,可以发生页故障。处理器的MMU 150可以检测该页故障。当在310检测到页故障时,在320可以进行有关是否存在空闲页的确定。如果有空闲页,则“是”,在330,可以将页数据从辅助储存器或后备存储复制到空闲页位置。如果没有空闲页,则“否”,在360,从FIFO队列抽出页,该FIFO队列可以跟踪队列中的存储器中的所有页,其中最新到来的页处于后面,并且最早到来的处于前面。如果该页为脏——即已被修改,则在370,系统可以将该页写到辅助存储器或后备存储器。在将该页从主存储器转移到辅助存储器中,在380,可以使与该页相关联的页表条目无效,并且可以执行用于与该页相关联的任何条目的TLB变更(shootdown),例如,使得对其他处理器转存(flush)TLB条目。在该页现在为空闲的情况下,在330,可以将页数据从辅助储存器或后备存储器复制到该空闲页位置。可以在340更新页表以通过更新与该页相关联的PTE而指向主存储器中的该页的位置来创建有效PTE。一旦处理了该页故障,在350,就可以继续该线程或运行的程序。
图3B描绘了根据本公开的实施方式的、用于回写线程的过程305的示例的流程图。在315唤醒时,可以进行有关空闲页数是否满足阈值页数的确定,该阈值页数可以是给定架构被配置来处理的任何页数。例如,在325,可以进行有关空闲页数是否小于或等于阈值的确定。如果空闲页数不满足阈值(“否”),例如大于阈值,则在335该线程可以睡眠。然而,如果在325确定空闲页数满足阈值(“是”),则在345,该系统确定FIFO队列中的下一页。如果该页脏——即已被修改,则在370,该系统可以将该页写入辅助存储器或后备存储。在将该页从主存储器转移到辅助存储器中,在380,使与该页相关联的页表条目无效,以及可以执行用于与该页相关联的任何条目的TLB变更。在该页现在为空闲的情况下,在325,可以再次进行有关空闲页数是否满足阈值的确定。
可以经由硬件而不是通常导致更慢存储器访问以及处理和丢弃一些另外有用的高速缓存信息的、要求CPU开销的软件来执行页表扫描,即遍历页表的扫描。通常,通过扫描页表可以确定页数据的访问频率,例如相对于数据的其他页频繁访问哪一页数据,以及相对于数据的其他页不频繁地访问哪一页数据。在页表中映射的每一页——例如每一PTE可以具有标志或访问位,每当访问该页就可以设置该标识或访问位并且然后在扫描该页表后由CPU清除该标志或访问位。
可以通过扩增页表遍历器或包括一个或多个页表遍历器的MMU来实现此硬件,例如用于读取页表并且将虚拟-物理转换自动地加载到TLB中的内置硬件。由此,该硬件可以是处理器架构的一部分,从而在处理器中使用页表扫描机制。例如,该硬件可以实现遍历页表进行扫描——扫描PTE的例程以确定自上次扫描起是否在每一PTE访问位都已被设置。在确定该访问位是否已被设置后,可以清除该访问位,并且然后可以继续操作直到下次扫描页表为止。该扫描可以周期性地——例如以扫描之间的预定时间段发生,或可以通过一些外部事件来触发扫描。每次确定访问位或标志未被设置时,分别对每一页来递增计数。
随着时间流逝,可以根据该扫描来创建简档,并且该简档指示访问每页频繁程度和/或新近程度。例如,该硬件可以包括用于每页的的一个或多个计数器或布隆过滤器以维护使用统计——例如未设置的访问位或标志的计数或可以将结果存储在存储器——例如二级存储器中以允许排序和过滤例如最常使用和最少使用的页或者最频繁访问和不太频繁访问的页。更具体的,该硬件可以维护每页计数器来确定对该页进行访问的新近程度并且可以在扫描相应PTE时更新每个计数器。可以在用于快速访问的片上SRAM中提供每页计数器。替选地,因为辅助存储器的大小可以是大的,使计数器的面积成本更高,因此可以使用计数布隆过滤器来维护有关页集合的访问统计,由此节省面积。替选地,该硬件可以使用少量专用DRAM或可以将计数器存储在系统DRAM中。
在某些实施例中,收集访问统计的页表扫描可以利用包含在处理器的页表遍历器中或与其紧密耦合的硬件模块来实现,或可以实现在MMU中,因为MMU可以具有已经可用于IO设备的一个或多个页表遍历器。因此,如上所述,该硬件可以扫描页表并且可以使用每个PTE的访问位基于确定自上一次扫描以来访问位是否已被设置来确定每页寿命。例如,如果访问位已被设置,则在上一个扫描周期内访问了该页,或者如果访问位未被设置,则其未被访问过并且可以被视为冷,例如在上一个扫描周期期间未访问。有利地,由硬件确定的这些使用或访问统计可以比涉及软件和采样技术的当前方法更精确和准确。
由此,对于主存储器,可以对每一页计数访问位未曾被设置的次数来识别冷页,其中,页的计数越高,该页越冷。当该页被访问并且访问位被设置时,可以将计数重置为0。可以周期性地扫描页表以检测访问位的变化,并且可以在每次扫描时清除所有访问位。由此,计数可以表示该页的寿命,即,多长时间未访问过该页。
如上所述,DMA引擎230可以在检修页故障中使用。在某些实施例中,可以使用访问统计来确定页转移的目的地或确定可以被实现以识别要转移哪些页以及何时转移那些页的策略。例如,基于访问统计,可以从最常用到最不常用的顺序来对页进行排序,或反之亦然。当使用DMA引擎230来检修页故障时,如果在主存储器DRAM 220中没有空闲页,硬件辅助页式调度过程可以释放最不常用页中的一页或将其回写到辅助存储器并且可以使用该最不常用页的位置来将新页转移到主存储器。
图4描绘根据本公开的实施方式的、用于利用硬件来确定页的使用频率以及使用DMA引擎来检修页故障的过程400的示例的流程图。过程400包括:在410,使用处理器基于利用页表扫描器扫描页表来确定对于页表的每个PTE访问位是否被设置。例如,可以对处理器的至少一个页表遍历器进行修改来对该页表扫描访问位是否被设置。例如,可以将线程添加到该页表遍历器来扫描该页表或可以通过与页表遍历器分开的硬件来完成该扫描。访问位可以指示在上一个扫描周期内——例如在页表的上一次扫描和当前扫描之间——是否访问过与PTE相关联的页。
在420,可以响应于确定对于与每页相关联的PTE访问位未被设置而递增该页的计数。在确定对于每个PTE访问位是否被设置后,在430,处理器可以重置该访问位。可以由在静态随机存取存储器中存储的每页的计数器来维护每页的计数,或计数布隆过滤器可以维护与页的集合有关的访问统计。替选地,每页的计数器可以被存储在动态随机存取存储器——例如少量的专用DRAM中或系统DRAM中。
过程4400可以进一步包括:在440,从主存储器接收访问数据页的请求。在450,基于确定请求对其访问的数据页未被存储在主存储器中来发起页故障。在460,页故障处理程序(handler)可以检测该页故障并且可以使用DMA引擎230来检修该页故障。
例如,如果主存储器不具有空闲页并且无法接收页转移,则在470,可以基于每页的计数来确定主存储器中的特定页,例如主存储器中最不常用页中的一页。在470,DMA引擎230可以管理页转移并且可以释放所述页中的所确定的一页或将其回写到辅助存储器中。此外,在470,可以将请求对其访问的数据页从辅助存储器转移到主存储器中最不常用页中的所释放页的位置处。替选地,如果主存储器确实具有空闲页并且能够接收页转移,则在480,DMA引擎230可以管理将页数据从辅助存储器转移到主存储器。
在某些实施例中,当发起页故障时,可以暂停执行该线程或运行的程序,同时DMA引擎230管理数据转移以检修该页故障,如上所述。在检修了该页故障之后,可以释放该线程来访问主存储器中的页。
不同于访问数据并且发起页故障以从辅助存储器转移页数据的IO请求,在一些系统中,通过使用页转移,可以由处理器通过加载和存储来直接访问辅助存储器。在这些系统中,不需要以页粒度来访问数据。然而,可以有益的是,利用如上所述的使用或访问统计来基于该数据为“热”还是“冷”——即访问的新近程度、访问的频繁程度、或再次访问的可能性——来自动地迁移数据。
通常,利用高速缓存相干性架构的特征,本地代理145可以识别该本地代理负责的对存储器的每次访问并且可以使用该识别来维护访问统计,在该高速缓存相干性架构中,辅助存储器中的数据可以与负责物理地址空间的区域——例如该区域中的所有辅助存储器——的本地代理145相关联。与辅助存储器相关联的本地代理145可以维护与正访问哪些页以及何时访问那些页有关的数据。基于访问频率——例如如果访问频率满足阈值,则本地代理145可以确定可以将频繁访问的数据从辅助存储器转移到主存储器DRAM 120。
为执行该迁移,有利的是:不仅确定辅助存储器中的哪些页正变“热”——即访问频率增加,而且还确定主存储器DRAM中的哪些页正变“冷”——即访问频率减小。换言之,确定可能比主存储器更慢的辅助存储器中哪些页被更频繁地访问,以及主存储器中哪些页被不太频繁地访问。确定主存储器中不太频繁访问哪些页的一个过程参考基于例如访问位未被设置的计数的主存储器DRAM的使用或访问统计在上文中进行了描述。基于如上所述的对主存储器的访问统计并且利用绑定到辅助存储器的本地代理以确定对于辅助存储器的访问统计,该系统可以确定何时将数据从主存储器DRAM移动到辅助存储器以及何时将数据从辅助存储器移动到主存储器DRAM。
由此,硬件可以确定何时在例如DRAM 220的主存储器以及例如辅助储存器240的辅助存储器之间迁移页。例如,硬件可以使用具有本地代理的高速缓存相干性消息与具有访问位的PTE的组合来确定数据的“温度”,即某些数据的“热”或频繁访问的程度以及“冷”或不频繁访问的程度分别是怎样的。因此,将具有增加的访问频率的比率的页从辅助存储器迁移到主存储器。如上所述,通过经由检测这些访问的本地代理来监视对辅助存储器的存储器访问的硬件,可以确定“变热”或被更频繁访问的那些页,因为本地代理拥有物理地址范围。基于那些确定的访问,可以在例如片上SRAM中维护每页访问计数器。替选地,因为辅助存储器的大小可以是大的,使计数器的硬件面积成本更高,所以可以使用计数布隆过滤器来维护与页集合有关的访问统计,由此节省面积。替选地,该硬件可以使用少量的专用DRAM或可以将计数器存储在系统DRAM中。
此外,如上更详细所述,通过监视PTE,可以确定变冷或不太频繁访问的页。例如,当页的访问间时间(inter-access time)满足访问间时间阈值时,通过使与该页相关联的PTE无效、对与该页相关联的任何条目执行TLB变更、以及将该页从主存储器DRAM转移到辅助存储器,系统可以发起将该页从主存储器DRAM向辅助存储器的转移。
图5描绘了根据本公开的实施方式的、用于利用硬件来确定页的使用频率并且基于确定的使用来执行页迁移的过程500的示例的流程图。过程500包括:在510,基于利用处理器的页表扫描器对页表的扫描,确定对于页表的每个PTE访问位是否被设置。访问位可以指示在上一个扫描周期内——例如在页表的上一次扫描与当前扫描之间——是否访问过与PTE相关联的页。在520,响应于确定对于与该页相关联的PTE访问位未被设置,可以递增主存储器中的每页的计数。替选地,响应于确定对于与主存储器中的每页相关联的PTE访问位已被设置,可以递增该页的计数。在确定对于每一PTE访问位是否被设置后,在530,处理器可以重置该访问位。可以由在静态随机存取存储器中存储的每页的计数器来维护主存储器中的每页的计数,或计数布隆过滤器可以维护与页的集合有关的访问统计。替选地,每页的计数器可以被存储在动态随机存取存储器——例如少量的专用DRAM中或系统DRAM中。
过程500可以进一步包括:在540,基于本地代理接收访问辅助存储器中的页的请求,确定是否访问过辅助存储器中的该页。此外,在540,响应于基于本地代理接收到访问辅助存储器中的页的请求来确定访问了辅助存储器中的页,可以递增对于辅助存储器中的每一页的计数。在550,基于该计数,将辅助存储器中的页识别为频繁访问。并且在550,将被识别为频繁访问的该页从辅助存储器迁移到主存储器。在某些实施例中,可以将页组或存储器的一部分识别为频繁访问并且将其从辅助存储器迁移到主存储器。
过程500可以进一步包括:在560,基于对主存储器中的每页的计数,将主存储器中的该页识别为不频繁访问。在560,将被识别为不频繁访问的该页从主存储器迁移到辅助存储器。在某些实施例中,可以将页组或存储器的一部分识别为不频繁访问并且将其从主存储器迁移到辅助存储器。在560,基于该计数来将主存储器中的页识别为不频繁访问可以包括:确定对于该页的访问间时间——即访问之间的时间满足访问间时间阈值,例如对于该页的访问间时间大于,或者大于或等于访问间时间阈值。由此,响应于确定对于该页或页组的访问间时间满足访问间时间阈值,被识别为不频繁访问的页或页组被从主存储器迁移到辅助存储器。
在560的迁移被识别为不频繁访问的页的过程可以包括:使与该页或页组相关联的一个或多个PTE无效,对与该页或页组相关联的任何条目来执行转换后备缓冲区变更,以及将该页或页组从主存储器转移到辅助存储器。由在静态随机存取存储器中存储的每页的计数器来维护对于辅助存储器中的每一页的计数,或者计数布隆过滤器可以维护有关页集的访问统计。替选地,每页的计数器可以存储在动态随机存取存储器,例如少量的专用DRAM中或系统DRAM中。
如上所述,例如,当应用尝试访问存储器——例如页并且该页不存在于主存储器中时,发生页故障。该页故障可以触发将该整页从辅助存储器向主存储器DRAM的转移,并且然后该应用可以继续执行。然而,该过程在读取该页的数据时可以致使延迟。例如,对于4KB大小的页,可以转移整个4KB,这可以在读取该4KB数据时致使延迟。根据本文所述的实施例,可以有利地降低该延迟,这可以导致更快执行正执行的应用或过程。
不同于转移整页——例如上面示例中的整个4KB,该系统识别应用视图访问哪个高速缓存行——例如数据块,并且初始仅将该高速缓存行从辅助存储器传送到主存储器。通过转移请求对其访问的高速缓存行,该应用可以执行其读取或写入该数据并且继续运行。在转移该关键高速缓存行而不转移整个页后,可以在后台中转移该页的剩余部分,例如4KB的剩余部分。
在某些实施例中,可以将关键高速缓存行提供给CPU,并且可以使用高速缓存相干性机制或协议。该过程实现用于处理页故障的更快性能。例如,在操作中,应用可以仅请求访问该页的一个或两个高速缓存行,以及可以提供关键高速缓存行而无需等待转移整页。然后,在为该应用提供请求的数据——例如关键高速缓存行以继续其执行后,在后台传送该页的剩余部分。
由此,通过硬件首先递送关键高速缓存行,可以减小页故障时延。该硬件可以将请求的高速缓存行从辅助存储器转移到例如处理器的高速缓存和主DRAM。因此,在转移请求的页中的剩余高速缓存行前,提供请求的数据。此外,例如,定制的页故障处理程序或该硬件可以更新PTE以指向主机DRAM中的新页。因此,在那些高速缓存行真正存在于主存储器中前,其他处理器可以访问该页中的高速缓存行。
在某些实施例中,为维护存储器的一致性视图,高速缓存代理140可以在页中的高速缓存行上执行请求所有权(RFO)以在发生页转移的同时专门地保持它们。在该硬件结束转移高速缓存行后,高速缓存代理140可以释放该高速缓存行的所有权以使得从主机的高速缓存或主机DRM来服务未来请求。此外,例如,当主机在正转移页的同时尝试访问该页中的其他高速缓存行中的一个时,根据高速缓存相干性机制,该硬件可以辨识对其他高速缓存行的伺探(snoop)请求,例如处理器间高速缓存相干性操作,并且一旦从辅助存储器转移其他高速缓存行,就响应于该伺探请求而提供其他高速缓存行。
在某些实施例中,该硬件可以不真正地在高速缓存代理的高速缓存中存储输运中的页的高速缓存行。相反,可以存储用于那些行的标记和相干性状态位,并且然后可以转发向主机DRAM或向较慢存储器的请求的数据。在任一布置中,可以减少正转移的高速缓存页所需的片上SRAM。
图6描绘了根据本公开的实施方式的、通过首先转移关键高速缓存行来处理页故障的过程600的示例的流程图。过程600可以包括:在610处,从主存储器接收访问数据页的高速缓存行的请求。在620,可以确定所请求的高速缓存行未存储在主存储器中,而是可能存储在辅助存储器中。在630,可以将来自辅助存储器的数据页的所请求高速缓存行——例如数据块转移到主存储器,而不转移数据的整页。由此,提供请求的高速缓存行,并且数据的该页的除请求的高速缓存行外的剩余部分仍然可以存储在辅助存储器中。
过程600可以进一步包括:在640,更新与数据页相关联的PTE以指向主存储器中的数据页的位置。在650,在响应于访问高速缓存行的请求而已提供请求的高速缓存行后,可以在后台将数据的该页的剩余部分从辅助存储器转移到主存储器。
在某些实施例中,可以实现高速缓存相干性机制,同时在650,将数据的该页的剩余部分从辅助存储器转移到主存储器,以提供访问数据的该页的第二高速缓存行,而不是请求的第一高速缓存行。高速缓存相干性机制可以包括:由高速缓存代理140发放该数据页中的高速缓存行的RFO,并且响应于高速缓存行正从辅助存储器转移到主存储器,释放每个高速缓存行的所有权。根据高速缓存相干性机制,可以将数据页的高速缓存行存储在高速缓存代理140的高速缓存中。替选地,可以存储与该数据页的那些高速缓存行相关联的标记和相干性状态位。此外,在650,响应于在转移该数据页的剩余部分的同时访问该数据页的第二高速缓存行的请求,可以识别对于该第二高速缓存行的伺探请求,并且一旦从辅助存储器转移第二高速缓存行,就响应于该伺探请求而返回第二高速缓存行。如果主存储器无法接收页转移——例如无空闲页,就可以基于上述的使用统计来确定在主存储器中存储的最不常用页中的一个,并且可以释放最不常用页中的一个或将其回写到辅助存储器。因此,可以将该数据页从辅助存储器转移到主存储器的最不常用页中的所释放页的位置处。
以下述方法、系统和装置来实施本说明书中所述的主题的其他创新方面:
实施例1:一种计算机实现的方法,包括:接收从主存储器访问数据页的第一高速缓存行的请求;确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中,以及作为响应,将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;更新与所述数据页相关联的页表条目以指向所述主存储器中的所述数据页的位置;以及将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器。
实施例2:如实施例1所述的方法,其中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的第二高速缓存行的访问的同时,实现高速缓存相干性机制。
实施例3:如实施例2所述的方法,其中,所述高速缓存相干性机制包括:由高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放每个高速缓存行的所有权。
实施例4:如实施例3所述的方法,进一步包括:将所述数据页的高速缓存行存储在所述高速缓存代理的高速缓存中。
实施例5:如实施例3所述的方法,进一步包括:存储与所述数据页的高速缓存行相关联的标记和相干性状态位。
实施例6:如实施例3所述的方法,进一步包括:响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行就响应于所述伺探请求而返回所述第二高速缓存行。
实施例7:如实施例1所述的方法,进一步包括:如果所述主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放页的位置处。
实施例8:一种系统,包括:一个或多个处理器;以及存储能够执行的指令的一个或多个存储设备,所述指令在由所述一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括:接收从主存储器访问数据页的第一高速缓存行的请求;确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中;将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;更新与所述数据页相关联的页表条目以指向所述主存储器中的所述数据页的位置;将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器。
实施例9:如实施例8所述的系统,其中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的所述第二高速缓存行的访问的同时,实现高速缓存相干性机制。
实施例10:如实施例9所述的系统,其中,所述高速缓存相干性机制包括:由高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放每个高速缓存行的所有权。
实施例11:如实施例10所述的系统,所述操作进一步包括:将所述数据页的高速缓存行存储在所述高速缓存代理的高速缓存中。
实施例12:如实施例10所述的系统,所述操作进一步包括:存储与所述数据页的高速缓存行相关联的标记和相干性状态位。
实施例13:如实施例10所述的系统,所述操作进一步包括:响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行,就响应于所述伺探请求而返回所述第二高速缓存行。
实施例14:如实施例8所述的系统,所述操作进一步包括:如果所述主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放页的位置处。
实施例15:一种计算机可读存储设备,存储可由一个或多个处理器执行的指令,所述指令在被执行时使得一个或多个处理器执行操作,所述操作包括:接收从主存储器访问数据页的第一高速缓存行的请求;确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中;将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;更新与所述数据页相关联的页表条目以指向所述主存储器中的所述数据页的位置;以及将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器。
实施例16:如实施例15所述的计算机可读存储设备,其中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的所述第二高速缓存行的访问的同时,实现高速缓存相干性机制。
实施例17:如实施例16所述的计算机可读存储设备,其中,所述高速缓存相干性机制包括:由高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放每个高速缓存行的所有权。
实施例18:如实施例17所述的计算机可读存储设备,所述操作进一步包括存储以下中的一个:(i)在所述高速缓存代理的所述高速缓存中的所述数据页的高速缓存行;或(ii)与所述数据页的高速缓存行相关联的标记和相干性状态位。
实施例19:如实施例17所述的计算机可读存储设备,所述操作进一步包括:响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行,就响应于所述伺探请求而返回所述第二高速缓存行。
实施例20:如实施例15所述的计算机可读存储设备,所述操作进一步包括:如果主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放页的位置处。
描述了各种实施方式。然而,将理解在不背离本公开的精神和范围的情况下,可以作出各种修改。例如,可以使用上文所示的流程的不同形式,其中步骤被重新排序、添加、或移除。
在本说明书中所述的发明的实施方式和所有功能性操作可以以数字电子电路、固件、或硬件——包括在本说明书中公开的结构及其结构等价物、或者以以上的一个或多个的组合来实现。本发明的实施方式可以实现为使用一个或多个计算机程序产品——即计算机程序指令的一个或多个模块,该计算机程序指令被编码在计算机可读介质上以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质能是机器可读存储介质、机器可读存储基底、存储器设备、或它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备、以及机器,通过示例方式包括可编程处理器、计算机、或多个处理器或计算机。除硬件外,装置还可以包括为讨论中的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或以上一个或多个的组合的代码。
虽然本公开包含许多具体细节,但是这些细节不应当被解释为对本发明或可以要求保护的范围的限制,而应当被解释为本发明的特定实施方式所特有的特征的描述。还可以将在本说明书中在单独的实施方式的场境(context)中描述的某些特征以组合的方式在单个实施方式中实现。相反地,也可以使在单个实施方式的场境中描述的各种特征分离地或以任何适当的子组合在多个实施方式中实现。此外,尽管可能在上文将特征描述为以某些组合起作用,甚至最初如此要求保护,但是在一些情况下能够将来自所要求保护的组合的一个或多个特征从该组合中删去,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中按照特定顺序图示操作,然而,不应当将这理解为需要按照所示的特定顺序或按照连续顺序执行这样的操作、或者需要执行所有图示的操作,才能达到期望的结果。在某些情况下,多任务以及并行处理可以是有利的。此外,不应当将在上述实施方式中的各种系统组件的分离理解为在所有实施方式中均需要这样的分离,而应当理解的是,通常可以将所述程序组件和系统一起整合在单个软件产品中或封装为多个软件产品。
因此,已描述了本公开的特定实施方式。其他实施方式在所附权利要求书的范围内。例如,可以按照不同的顺序来执行权利要求中记载的动作并且仍然达到期望的结果。描述了多个实施方式。然而,将理解到在不背离本公开的精神和范围的情况下,可以做出各种改进。例如,可以使用上述流程的各种形式,其中步骤被重新排序、添加或移除。因此,其他实施方式也在所附权利要求书的范围内。
Claims (37)
1.一种计算机实现的方法,包括:
接收从主存储器访问数据页的第一高速缓存行的请求;
确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中,以及作为响应,
将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;
更新与所述数据页相关联的页表条目以指向所述数据页在所述主存储器中的位置;以及
将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的第二高速缓存行的访问,所述转移包括,
由高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;以及
由所述高速缓存代理,响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放所述高速缓存代理对每个高速缓存行的所有权。
2.如权利要求1所述的方法,其中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的所述第二高速缓存行的访问的同时,实现高速缓存相干性机制。
3.如权利要求1所述的方法,进一步包括:
将所述数据页的高速缓存行存储在所述高速缓存代理的高速缓存中。
4.如权利要求1所述的方法,进一步包括:
存储与所述数据页的高速缓存行相关联的标记和相干性状态位。
5.如权利要求1所述的方法,进一步包括:
响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行,就响应于所述伺探请求而返回所述第二高速缓存行。
6.如权利要求1所述的方法,进一步包括:
如果所述主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放的页的位置处。
7.一种用于混合存储器管理的系统,包括:
一个或多个处理器;以及
存储指令的一个或多个存储设备,所述指令在由所述一个或多个处理器执行时能够操作来使得所述一个或多个处理器执行操作,所述操作包括:
接收从主存储器访问数据页的第一高速缓存行的请求;
确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中;
将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;
更新与所述数据页相关联的页表条目以指向所述数据页在所述主存储器中的位置;
将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的第二高速缓存行的访问,所述转移包括,
由高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;以及
由所述高速缓存代理,响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放所述高速缓存代理对每个高速缓存行的所有权。
8.如权利要求7所述的系统,其中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的所述第二高速缓存行的访问的同时,实现高速缓存相干性机制。
9.如权利要求7所述的系统,所述操作进一步包括:
将所述数据页的高速缓存行存储在所述高速缓存代理的高速缓存中。
10.如权利要求7所述的系统,所述操作进一步包括:
存储与所述数据页的高速缓存行相关联的标记和相干性状态位。
11.如权利要求7所述的系统,所述操作进一步包括:
响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行,就响应于所述伺探请求而返回所述第二高速缓存行。
12.如权利要求7所述的系统,所述操作进一步包括:
如果所述主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放的页的位置处。
13.一种计算机可读存储设备,存储可由一个或多个处理器执行的指令,所述指令在被执行时使得所述一个或多个处理器执行操作,所述操作包括:
接收从主存储器访问数据页的第一高速缓存行的请求;
确定所述第一高速缓存行未被存储在所述主存储器中并且被存储在辅助存储器中;
将所述数据页的所述第一高速缓存行从所述辅助存储器转移到所述主存储器,而不转移整个数据页,其中,所述数据页的剩余部分仍然存储在所述辅助存储器中;
更新与所述数据页相关联的页表条目以指向所述数据页在所述主存储器中的位置;
将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的第二高速缓存行的访问,所述转移包括,
由高速缓存代理发放对于所述数据页中的高速缓存行的所有权的请求;以及
由所述高速缓存代理,响应于所述高速缓存行从所述辅助存储器转移到所述主存储器,释放所述高速缓存代理对每个高速缓存行的所有权。
14.如权利要求13所述的计算机可读存储设备,其中,在将所述数据页的所述剩余部分从所述辅助存储器转移到所述主存储器以提供对所述数据页的所述第二高速缓存行的访问的同时,实现高速缓存相干性机制。
15.如权利要求13所述的计算机可读存储设备,所述操作进一步包括以下中的一个:
(i)在所述高速缓存代理的高速缓存中存储所述数据页的高速缓存行;或(ii)存储与所述数据页的高速缓存行相关联的标记和相干性状态位。
16.如权利要求13所述的计算机可读存储设备,所述操作进一步包括:
响应于在转移所述数据页的所述剩余部分的同时访问所述数据页的所述第二高速缓存行的请求,辨识对于所述第二高速缓存行的伺探请求,并且一旦从所述辅助存储器转移所述第二高速缓存行,就响应于所述伺探请求而返回所述第二高速缓存行。
17.如权利要求13所述的计算机可读存储设备,所述操作进一步包括:
如果所述主存储器无法接收页转移,则确定在所述主存储器中存储的最不常用页中的一页并且将所述最不常用页中的所述一页释放到所述辅助存储器中,以及将所述数据页从所述辅助存储器转移到所述主存储器的所述最不常用页中的所释放的页的位置处。
18.一种计算机实现的方法,包括:
利用处理器基于利用页表扫描器对页表的扫描来确定对于所述页表的每个页表条目访问位是否被设置,所述访问位指示在上一个扫描周期中与该页表条目相关联的页是否被访问;
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中未被访问,递增该页的计数,其中,每一页的计数指示到所述上一个扫描周期为止的、该页未被访问的连续先前扫描周期的数目并且特定页的计数大于一;
在利用所述处理器确定对于每个页表条目访问位是否被设置后重置被访问过的页中的每一页的访问位;
接收从主存储器访问第一数据页的请求;
基于确定所述第一数据页未被存储在所述主存储器中来发起页故障;以及
响应于发起所述页故障,基于每一页的计数来确定特定页并且将所述第一数据页从辅助存储器转移到所述主存储器中的所释放的特定页的位置处。
19.如权利要求18所述的方法,其中,基于每一页的计数来将所述特定页确定为最不常用页中的一页。
20.如权利要求18所述的方法,其中,发起所述页故障包括:
在所述页故障被检修的同时暂停线程的执行;以及
在所述页故障被检修后释放所述线程以访问所述主存储器。
21.如权利要求18所述的方法,其中,每一页的计数是通过以下中的至少一个来维护的:在静态随机存取存储器中存储的每一页的计数器、计数布隆过滤器、或者在动态随机存取存储器中存储的每一页的计数器。
22.如权利要求18所述的方法,其中,重置被访问过的页中的每一页的访问位包括:
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中被访问过,重置该页的计数。
23.如权利要求22所述的方法,其中,响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中被访问过,重置该页的计数包括:
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中被访问过,对于该页将计数设置为零。
24.如权利要求18所述的方法,其中,存储在所述主存储器中的每一页和存储在所述辅助存储器中的每一页的计数被存储在静态随机存取存储器中。
25.如权利要求18所述的方法,其中,所述页表扫描器是通过向一个或多个硬件页表遍历器添加线程来实现的。
26.一种用于混合存储器管理的系统,包括:
一个或多个计算机以及存储指令的一个或多个存储设备,所述指令在由所述一个或多个计算机执行时能够操作来使得所述一个或多个计算机执行操作,所述操作包括:
利用处理器基于利用页表扫描器对页表的扫描来确定对于所述页表的每个页表条目访问位是否被设置,所述访问位指示在上一个扫描周期中与该页表条目相关联的页是否被访问;
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中未被访问,递增该页的计数,其中,每一页的计数指示到所述上一个扫描周期为止的、该页未被访问的连续先前扫描周期的数目并且特定页的计数大于一;
在利用所述处理器确定对于每个页表条目访问位是否被设置后重置被访问过的页中的每一页的访问位;
接收从主存储器访问第一数据页的请求;
基于确定所述第一数据页未被存储在所述主存储器中来发起页故障;以及
响应于发起所述页故障,基于每一页的计数来确定特定页并且将所述第一数据页从辅助存储器转移到所述主存储器中的所释放的特定页的位置处。
27.如权利要求26所述的系统,其中,基于每一页的计数来将所述特定页确定为最不常用页中的一页。
28.如权利要求26所述的系统,其中,发起所述页故障包括:
在所述页故障被检修的同时暂停线程的执行;以及
在所述页故障被检修后释放所述线程以访问所述主存储器。
29.如权利要求26所述的系统,其中,每一页的计数是通过以下中的至少一个来维护的:在静态随机存取存储器中存储的每一页的计数器、计数布隆过滤器、或者在动态随机存取存储器中存储的每一页的计数器。
30.如权利要求26所述的系统,其中,重置被访问过的页中的每一页的访问位包括:
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中被访问过,重置该页的计数。
31.如权利要求30所述的系统,其中,响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中被访问过,重置该页的计数包括:
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中被访问过,对于该页将计数设置为零。
32.如权利要求26所述的系统,其中,存储在所述主存储器中的每一页和存储在所述辅助存储器中的每一页的计数被存储在静态随机存取存储器中。
33.如权利要求26所述的系统,其中,所述页表扫描器是通过向一个或多个硬件页表遍历器添加线程来实现的。
34.一种非暂时性计算机可读介质,存储包括可由一个或多个计算机执行的指令的软件,所述指令在被执行时使得所述一个或多个计算机执行操作,所述操作包括:
利用处理器基于利用页表扫描器对页表的扫描来确定对于所述页表的每个页表条目访问位是否被设置,所述访问位指示在上一个扫描周期中与该页表条目相关联的页是否被访问;
响应于确定针对与每一页相关联的页表条目的访问位指示与该页表条目相关联的页在所述上一个扫描周期中未被访问,递增该页的计数,其中,每一页的计数指示到所述上一个扫描周期为止的、该页未被访问的连续先前扫描周期的数目并且特定页的计数大于一;
在利用所述处理器确定对于每个页表条目访问位是否被设置后重置被访问过的页中的每一页的访问位;
接收从主存储器访问第一数据页的请求;
基于确定所述第一数据页未被存储在所述主存储器中来发起页故障;以及
响应于发起所述页故障,基于每一页的计数来确定特定页并且将所述第一数据页从辅助存储器转移到所述主存储器中的所释放的特定页的位置处。
35.如权利要求34所述的介质,其中,基于每一页的计数来将所述特定页确定为最不常用页中的一页。
36.如权利要求34所述的介质,其中,发起所述页故障包括:
在所述页故障被检修的同时暂停线程的执行;以及
在所述页故障被检修后释放所述线程以访问所述主存储器。
37.如权利要求34所述的介质,其中,每一页的计数是通过以下中的至少一个来维护的:在静态随机存取存储器中存储的每一页的计数器、计数布隆过滤器、或者在动态随机存取存储器中存储的每一页的计数器。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/235,495 | 2016-08-12 | ||
US15/235,495 US10152427B2 (en) | 2016-08-12 | 2016-08-12 | Hybrid memory management |
US15/236,171 | 2016-08-12 | ||
US15/236,171 US10037173B2 (en) | 2016-08-12 | 2016-08-12 | Hybrid memory management |
CN201710691364.2A CN107729168A (zh) | 2016-08-12 | 2017-08-14 | 混合存储器管理 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710691364.2A Division CN107729168A (zh) | 2016-08-12 | 2017-08-14 | 混合存储器管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177030A CN111177030A (zh) | 2020-05-19 |
CN111177030B true CN111177030B (zh) | 2021-08-20 |
Family
ID=60579714
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911227514.XA Active CN111177030B (zh) | 2016-08-12 | 2017-08-14 | 混合存储器管理 |
CN201710691364.2A Pending CN107729168A (zh) | 2016-08-12 | 2017-08-14 | 混合存储器管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710691364.2A Pending CN107729168A (zh) | 2016-08-12 | 2017-08-14 | 混合存储器管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10037173B2 (zh) |
EP (2) | EP3282364B1 (zh) |
JP (2) | JP2018026136A (zh) |
CN (2) | CN111177030B (zh) |
DE (2) | DE202017104840U1 (zh) |
TW (1) | TWI643073B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10108550B2 (en) | 2016-09-22 | 2018-10-23 | Google Llc | Memory management supporting huge pages |
US10437799B2 (en) * | 2016-12-02 | 2019-10-08 | International Business Machines Corporation | Data migration using a migration data placement tool between storage systems based on data access |
US10437800B2 (en) * | 2016-12-02 | 2019-10-08 | International Business Machines Corporation | Data migration using a migration data placement tool between storage systems based on data access |
US20180336158A1 (en) * | 2017-05-16 | 2018-11-22 | Dell Products L.P. | Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory |
WO2020056610A1 (zh) * | 2018-09-18 | 2020-03-26 | 华为技术有限公司 | 一种存储装置及电子设备 |
US11609858B2 (en) | 2018-12-26 | 2023-03-21 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US11113207B2 (en) * | 2018-12-26 | 2021-09-07 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
KR20200085522A (ko) * | 2019-01-07 | 2020-07-15 | 에스케이하이닉스 주식회사 | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
US11055221B2 (en) * | 2019-03-22 | 2021-07-06 | Samsung Electronics Co., Ltd. | Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory |
US11599384B2 (en) | 2019-10-03 | 2023-03-07 | Micron Technology, Inc. | Customized root processes for individual applications |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
US11436041B2 (en) | 2019-10-03 | 2022-09-06 | Micron Technology, Inc. | Customized root processes for groups of applications |
US11429445B2 (en) | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
KR102400977B1 (ko) | 2020-05-29 | 2022-05-25 | 성균관대학교산학협력단 | 프로세서를 통한 페이지 폴트 처리 방법 |
US11393548B2 (en) * | 2020-12-18 | 2022-07-19 | Micron Technology, Inc. | Workload adaptive scans for memory sub-systems |
CN113311994A (zh) * | 2021-04-09 | 2021-08-27 | 中企云链(北京)金融信息服务有限公司 | 一种基于高并发的数据缓存方法 |
JP2022161746A (ja) | 2021-04-09 | 2022-10-21 | 富士通株式会社 | 情報処理プログラム、情報処理方法、および情報処理装置 |
US11733902B2 (en) | 2021-04-30 | 2023-08-22 | International Business Machines Corporation | Integrating and increasing performance of disaggregated memory in operating systems |
CN114201444B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
CN115794397A (zh) * | 2022-11-29 | 2023-03-14 | 阿里云计算有限公司 | 冷热页管理加速设备、方法、mmu、处理器及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361345A (en) * | 1991-09-19 | 1994-11-01 | Hewlett-Packard Company | Critical line first paging system |
EP0731944A1 (en) * | 1994-10-03 | 1996-09-18 | International Business Machines Corporation | Coherency and synchronization mechanism for i/o channel controllers in a data processing system |
CN1506849A (zh) * | 2002-12-12 | 2004-06-23 | 国际商业机器公司 | 能够管理虚拟存储器处理方案的数据处理系统 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6159557A (ja) * | 1984-08-30 | 1986-03-27 | Toshiba Corp | 仮想記憶制御装置 |
JPH047653A (ja) * | 1990-04-25 | 1992-01-13 | Matsushita Electric Ind Co Ltd | 仮想記憶メモリ装置 |
JPH05241958A (ja) * | 1992-02-26 | 1993-09-21 | Nec Corp | 仮想記憶制御方式 |
US5493663A (en) | 1992-04-22 | 1996-02-20 | International Business Machines Corporation | Method and apparatus for predetermining pages for swapping from physical memory in accordance with the number of accesses |
US5432917A (en) * | 1992-04-22 | 1995-07-11 | International Business Machines Corporation | Tabulation of multi-bit vector history |
US6029224A (en) | 1995-06-07 | 2000-02-22 | Lucent Technologies Inc. | Self-contained memory apparatus having diverse types of memory and distributed control |
US6671791B1 (en) | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
US6782453B2 (en) * | 2002-02-12 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Storing data in memory |
JP3982353B2 (ja) | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
US6804729B2 (en) | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
US7409580B2 (en) | 2005-02-09 | 2008-08-05 | International Business Machines Corporation | System and method for recovering from errors in a data processing system |
US7546416B2 (en) * | 2006-06-26 | 2009-06-09 | Micron Technology, Inc. | Method for substantially uninterrupted cache readout |
US7882309B2 (en) * | 2007-07-26 | 2011-02-01 | Globalfoundries Inc. | Method and apparatus for handling excess data during memory access |
US8055876B2 (en) | 2008-06-06 | 2011-11-08 | International Business Machines Corporation | Selectively mark free frames as unused for cooperative memory over-commitment |
US20100070678A1 (en) * | 2008-09-12 | 2010-03-18 | Vmware, Inc. | Saving and Restoring State Information for Virtualized Computer Systems |
US8832353B2 (en) * | 2009-04-07 | 2014-09-09 | Sandisk Technologies Inc. | Host stop-transmission handling |
JP2011165093A (ja) * | 2010-02-12 | 2011-08-25 | Nippon Telegr & Teleph Corp <Ntt> | メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム |
US9015441B2 (en) * | 2010-04-30 | 2015-04-21 | Microsoft Technology Licensing, Llc | Memory usage scanning |
US9195612B2 (en) | 2011-11-29 | 2015-11-24 | Microsoft Technology Licensing, Llc | Computer system with memory aging for high performance |
US9330736B2 (en) * | 2012-11-09 | 2016-05-03 | Qualcomm Incorporated | Processor memory optimization via page access counting |
US10133677B2 (en) | 2013-03-14 | 2018-11-20 | Nvidia Corporation | Opportunistic migration of memory pages in a unified virtual memory system |
US9792220B2 (en) | 2013-03-15 | 2017-10-17 | Nvidia Corporation | Microcontroller for memory management unit |
US20150058520A1 (en) | 2013-08-22 | 2015-02-26 | International Business Machines Corporation | Detection of hot pages for partition migration |
US9535831B2 (en) | 2014-01-10 | 2017-01-03 | Advanced Micro Devices, Inc. | Page migration in a 3D stacked hybrid memory |
US20170177482A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Computing system having multi-level system memory capable of operating in a single level system memory mode |
US10114559B2 (en) | 2016-08-12 | 2018-10-30 | International Business Machines Corporation | Generating node access information for a transaction accessing nodes of a data set index |
-
2016
- 2016-08-12 US US15/236,171 patent/US10037173B2/en active Active
-
2017
- 2017-08-11 EP EP17185833.5A patent/EP3282364B1/en active Active
- 2017-08-11 TW TW106127201A patent/TWI643073B/zh active
- 2017-08-11 EP EP17185832.7A patent/EP3291097A3/en not_active Withdrawn
- 2017-08-11 DE DE202017104840.3U patent/DE202017104840U1/de active Active
- 2017-08-11 DE DE202017104841.1U patent/DE202017104841U1/de active Active
- 2017-08-14 CN CN201911227514.XA patent/CN111177030B/zh active Active
- 2017-08-14 JP JP2017156543A patent/JP2018026136A/ja active Pending
- 2017-08-14 CN CN201710691364.2A patent/CN107729168A/zh active Pending
-
2019
- 2019-10-03 JP JP2019183022A patent/JP6944983B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361345A (en) * | 1991-09-19 | 1994-11-01 | Hewlett-Packard Company | Critical line first paging system |
EP0731944A1 (en) * | 1994-10-03 | 1996-09-18 | International Business Machines Corporation | Coherency and synchronization mechanism for i/o channel controllers in a data processing system |
CN1506849A (zh) * | 2002-12-12 | 2004-06-23 | 国际商业机器公司 | 能够管理虚拟存储器处理方案的数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
TWI643073B (zh) | 2018-12-01 |
US20180046411A1 (en) | 2018-02-15 |
DE202017104841U1 (de) | 2017-11-22 |
TW201810057A (zh) | 2018-03-16 |
US10037173B2 (en) | 2018-07-31 |
JP6944983B2 (ja) | 2021-10-06 |
EP3291097A2 (en) | 2018-03-07 |
EP3282364B1 (en) | 2019-10-09 |
CN107729168A (zh) | 2018-02-23 |
EP3282364A1 (en) | 2018-02-14 |
CN111177030A (zh) | 2020-05-19 |
EP3291097A3 (en) | 2018-05-30 |
JP2018026136A (ja) | 2018-02-15 |
JP2020009492A (ja) | 2020-01-16 |
DE202017104840U1 (de) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177030B (zh) | 混合存储器管理 | |
US10705975B2 (en) | Hybrid memory management | |
CN109791523B (zh) | 支持巨页的内存管理 | |
CN110209601B (zh) | 存储器接口 | |
CN110209610B (zh) | 存储器接口 | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US6295582B1 (en) | System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available | |
CN110209599B (zh) | 相干性管理器 | |
US7523260B2 (en) | Propagating data using mirrored lock caches | |
JP2018504694A5 (zh) | ||
CN113853589A (zh) | 高速缓冲存储器大小改变 | |
US10754791B2 (en) | Software translation prefetch instructions | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
US20240256459A1 (en) | System and method for managing a memory hierarchy |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |