CN106716386B - 使用页面过滤器和***mmu的硬件辅助存储器压缩管理 - Google Patents
使用页面过滤器和***mmu的硬件辅助存储器压缩管理 Download PDFInfo
- Publication number
- CN106716386B CN106716386B CN201580050274.4A CN201580050274A CN106716386B CN 106716386 B CN106716386 B CN 106716386B CN 201580050274 A CN201580050274 A CN 201580050274A CN 106716386 B CN106716386 B CN 106716386B
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- compressed
- inactive
- pages
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
- 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
-
- 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
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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
- 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
-
- 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
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- 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/65—Details of virtual memory and virtual address translation
-
- 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/68—Details of translation look-aside buffer [TLB]
-
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了方法和***以用于使用被设计为区分活动页面与不活动的页面(分别为“热”页面和“冷”页面)的基于硬件的页面过滤器来管理存储器,使得可以在发生页面错误之前对不活动的页面进行压缩。所述方法和***设计为:实现较低成本、较长电池寿命、和较快用户响应。尽管用于存储器管理的现有方法基于像素或者帧缓冲区压缩,但是所提供的方法和***集中于CPU的程序(例如,通用数据结构)。集中于用于使CPU降低负荷的硬件加速的存储器压缩转换较高功率效率(例如,ASIC功率比CPU低大约100倍)和较高性能(例如,ASIC比CPU快大约10倍),并且还允许硬件辅助的存储器管理分流OS/内核,这显著增加了响应时间。
Description
相关申请的交叉引用
本申请要求2014年10月7日提交的美国临时专利申请序列号62/060,949的优先权,该公开的全部内容以引用的方式并入本文。
背景技术
用于存储器压缩的现有手段通常将重点放在经常应用于GPU(图形处理器单元)、ISP(图像信号处理器)、视频、和/或显示流的像素/参考帧存储器压缩。虽然这样的技术能够实现一定程度的带宽减小,但是没有一种针对或者能够减少存储器占用。
发明内容
本发明内容按照简化的形式介绍了对概念的选择以提供对本公开的一些方面的基本理解。本发明内容不是本公开的广泛概述,并且不旨在标识本公开的关键或者重要元素或者记述本公开的范围。本发明内容仅呈现了本公开的概念中的一些以作为下面提供的具体实施方式的前序。
本公开大体上涉及用于管理存储器的方法和***。更具体地,本公开的方面涉及基于硬件的页面过滤器,其被设计为区分活动的页面与不活动的页面,并且在页面错误发生之前对不活动的页面进行压缩。
本公开的一个实施例涉及一种用于存储器压缩管理的方法,包括:使用页面过滤器来确定虚拟存储器空间中的页面是不活动的;从对应的操作***的页面表去除不活动的页面的工作存储器地址信息;确定在工作存储器中的位置以分配该不活动的页面的压缩信息;分配该不活动的页面的压缩存储器地址;利用该不活动的页面的压缩存储器地址来更新转换后备缓冲区;以及将压缩存储器地址写入压缩存储器。
在另一实施例中,该用于存储器压缩管理的方法进一步包括:从对应的操作***的页面表去除不活动的页面的对应页面表条目。
在另一实施例中,该用于存储器压缩管理的方法进一步包括:引发操作***的存储器管理单元的中断以分配在不活动的页面的压缩存储器中的地址。
本公开的另一实施例涉及一种用于存储器压缩管理的***,该***包括至少一个处理器和耦合至该至少一个处理器的非暂时性计算机可读介质,该非暂时性计算机可读介质存储有指令,该指令在由该至少一个处理器执行时致使该至少一个处理器:使用硬件页面过滤器来确定虚拟存储器空间中的页面是不活动的;从对应的页面表去除不活动的页面的工作存储器地址信息;确定在工作存储器中的位置以分配该不活动的页面的压缩信息;分配该不活动的页面的压缩存储器地址;利用该不活动的页面的压缩存储器地址来更新关联高速缓存;以及将该不活动的页面的压缩存储器地址写入该压缩存储器。
在另一实施例中,在用于存储器压缩管理的***中的该至少一个处理器被进一步致使:从页面表去除该不活动的页面的对应页面表条目。
在再一实施例中,在用于存储器压缩管理的***中的该至少一个处理器被进一步致使:使用存储器管理单元利用该不活动的页面的压缩存储器地址来更新该关联高速缓存。
在又一实施例中,在用于存储器压缩管理的***中的该至少一个处理器被进一步致使:引发存储器管理单元的中断以分配在不活动的页面的压缩存储器中的地址。
本公开的再一实施例涉及一种用于存储器压缩管理的方法,该方法包括:使用硬件页面过滤器来检测虚拟存储器空间中的不活动的页面;在页面错误之前对该不活动的页面进行压缩;以及向对应操作***的内核提供关于所压缩的不活动页面的信息。
在另一实施例中,该用于存储器压缩管理的方法进一步包括:在操作***的页面表中,记录该虚拟存储器空间中的页面中的每一个的压缩存储器的起始物理地址。
在再一实施例中,该用于存储器压缩管理的方法进一步包括:在该页面表中,记录虚拟存储器空间中的页面中的每一个的压缩信息。
在又一实施例中,该用于存储器压缩管理的方法进一步包括:引发中断以利用关于所压缩的不活动页面的信息来更新内核中的页面表条目。
在一个或者多个其它实施例中,本文描述的方法和***可以可选地包括以下附加特征中一个或者多个:由操作***的存储器管理单元利用不活动的页面的压缩存储器地址来更新转换后备缓冲区(例如,关联高速缓存);利用不活动的页面的压缩存储器地址来更新该转换后备缓冲区(或者关联高速缓存)以维持虚拟存储器、压缩存储器、和工作存储器之间的转换信息;页面过滤器基于页面的引用计数低于阈值计数来确定虚拟存储器空间中的页面是不活动的;页面过滤器基于在预定时间段期间页面的引用计数低于阈值计数来确定虚拟存储器空间中的页面是不活动的;和/或响应于容量逐出或者引用计数饱和而引发中断。
本公开的适用性的进一步范围将根据下面给出的具体实施方式变得显而易见。然而,应当理解,由于在本公开的精神和范围内的各种改变和修改将根据具体实施方式而对于本领域的技术人员变得显而易见,因此,具体实施方式和具体示例虽然指示了优选实施例,但是仅通过说明的方式给出。
附图说明
本公开的这些和其它目的、特征、和特性将根据结合所附权利要求书和附图来对以下具体实施方式的学习对本领域的技术人员变得更显而易见,该所有内容形成本说明书的一部分。在附图中:
图1是图示了根据本文描述的一个或者多个实施例的、使用页面过滤器和***存储器管理单元来进行硬件辅助的存储器压缩管理的示例***的框图。
图2是图示了根据本文描述的一个或者多个实施例的、已经向其添加了压缩信息的示例主存储器页面表的框图。
图3是图示了根据本文描述的一个或者多个实施例的、使用页面过滤器来进行基于硬件的页面剖析的示例方法的流程图。
图4是图示了根据本文描述的一个或者多个实施例的、***存储器管理单元的示例操作的框图。
图5是图示了根据本文描述的一个或者多个实施例的、使用页面过滤器和***存储器管理单元来对存储器进行压缩的示例方法的流程图。
图6是图示了根据本文描述的一个或者多个实施例的、使用***存储器管理单元来对存储器进行解压的示例方法的流程图。
图7是图示了根据本文描述的一个或者多个实施例的、被配置用于使用页面过滤器和***存储器管理单元来进行硬件辅助的存储器压缩管理的示例计算设备的框图。
本文提供的标题仅仅是为了方便起见,并不一定会影响本公开中所要求保护的范围或者含义。
在附图中,为了便于理解且出于方便起见,相同的附图标记和任何首字母缩写标识具有相同或者类似结构或者功能的元素或者动作。将在下面的具体实施方式中对附图进行详细描述。
具体实施方式
现在将对各个示例和实施例进行描述。以下描述提供具体细节以供彻底理解并且实现对这些示例的描述。然而,相关领域的技术人员要明白,可以在没有这些细节中的很多细节的情况下实践本文描述的一个或者多个实施例。同样,相关领域的技术人员还要明白,本公开的一个或者多个实施例可以包括本文未详细描述的许多其它明显的特征。此外,下面将不会详细示出或者描述一些熟知的结构或者功能,以便避免不必要地模糊相关描述。
为了实现虚拟存储器,计算机***需要具有通常被称为MMU(存储器管理单元)的特殊存储器管理硬件。在没有MMU的情况下,当CPU(计算机处理单元)访问RAM(随机存取存储器)时,在RAM内的实际位置不会改变(例如,特定存储器地址在RAM内始终是相同的物理位置)。然而,利用MMU,在每次存储器访问之前通过转换步骤来处理存储器地址。如此,可能会使给定的存储器地址一次指向第一物理地址,并且另一次指向第二物理地址。因为对于数十亿字节的存储器分别地追踪虚拟到物理转换所需要的资源会过大,所以,MMU将RAM划分成页面,所述页面是MMU将其作为单个实体来处理的设定大小的存储器的毗连区段。因此,可以将物理存储器视为被称作页面帧的固定大小的槽的阵列,其中的每一个可以包含单个虚拟存储器页面。
为了记录地址空间的每个虚拟页面被放置在物理存储器中的位置,操作***保持被称为页面表(PT)的每进程数据结构。页面表的主要作用是存储地址空间的虚拟页面中的每一个的地址转换,从而通知每个页面驻留在物理存储器中的位置。为了对特定进程所生成的虚拟地址进行转换,有必要首先将其分成两个分量:虚拟页面号(VPN)和页面内的偏移。
然后,利用VPN有可能对页面表进行索引并且确定虚拟页面驻留在哪个物理帧内。例如,通过使用页面表,有可能确定虚拟页面的对应物理帧号(PFN)(有时也称为物理页面号或者PPN)。然后可以通过用PFN(或者PPN)替换VPN来对虚拟地址进行转换。应当理解,不对偏移进行转换(其保持不变),因为偏移仅指示页面内的期望字节。
页面错误是在程序尝试访问(例如,请求)在其地址空间中但当前不位于操作***的真实存储器(例如,RAM)中的数据(或者代码)时发生的事件的序列。操作***必须通过以某种方式使访问的数据常驻存储器来处理页面错误,从而允许程序继续操作,就像页面错误从未发生过一样。例如,如果CPU向MMU呈交期望地址,并且MMU不具有对于该地址的转换,则MMU中断CPU并且致使执行软件(通常称为页面错误处理程序(handler))。然后,该页面错误处理程序确定为了解决该页面错误而必须要完成的操作(例如,从虚拟存储器空间取得数据并且将该数据加载到RAM中)。
当进程(例如,与程序相关联的进程)请求访问其存储器中的数据时,操作***的责任是将由该进程提供的虚拟地址映射至存储该数据的实际存储器的物理地址。页面表是操作***存储其虚拟地址到物理地址的映射的地方,其中,每个映射也被称为“页面表条目”(PTE)。
转换后备缓冲区(TLB)是页面表条目(PTE)的关联高速缓存,其中每个块是单个PTE。如果条目(与虚拟页面相对应)不在TLB中,则发生TLB“未命中(miss)”。如果该条目也不在操作***的真实存储器中(例如,其已经被“换出(paged out)”),则也发生页面错误。TLB和页面表共同构成从虚拟地址映射至物理地址的转换单元。
本公开的实施例涉及用于通过使用被设计为区分活动页面与不活动页面(本文中有时分别被称为“热”页面和“冷”页面)的基于硬件的页面过滤器来管理存储器,使得在发生页面错误之前对不活动页面进行压缩的方法和***。
如下面将更详细地描述的,本公开的方法和***被设计为:实现更低的成本、更长的电池寿命、和更快的用户响应等。例如,根据至少一个实施例,至少就容量而言,实现了较低的成本,这是由于使4GB的DRAM(动态随机存取存储器)表现得如同8GB的DRAM一样。在这个意义上,本公开的方法和***以压缩计算能量(例如,几pJ/Op)换得DRAM成本(例如,每GB几美元)。在延长电池寿命方面,更少的DRAM访问(GB/s)意指更少的功率消耗(mW),并且因此,本文描述的方法和***可以以片上压缩计算能量(例如,几pJ/Op)换得片外存储器参考能量(例如,几百pJ/B)。另外,通过利用硬件辅助的MMU(例如,μs)而不是OS/内核(例如,ms)来实现更快的用户响应。
尽管用于存储器管理的现有方法基于像素或者帧缓冲区压缩,但是本公开的方法和***将重点放在CPU的程序(例如,通用数据结构)上。例如,根据一个或者多个实施例,本文描述的方法和***利用ZRAM(如下面进一步描述的,该ZRAM提供了一种形式的虚拟存储器压缩),该ZRAM以程序的通用堆为目标。将重点放在硬件加速的存储器压缩来使CPU降低负荷(offload)转换了更高的功率效率(例如,ASIC功率比CPU低大约100倍)和更高的性能(例如,ASIC比CPU快大约10倍),并且还允许硬件辅助的存储器管理来使OS/内核降低负荷,这显著增加了响应时间。下面提供了根据本公开的方法和***的关于ZRAM及其利用的附加细节。
ZRAM提供了一种形式的虚拟存储器压缩。ZRAM对RAM的实际块进行压缩以便使更多的RAM可用于操作***。内核(例如,用于通过将这样的请求转换成用于CPU的数据处理指令来管理来自软件应用的输入/输出请求的计算机程序)动态地对程序的存储器进行压缩而无需程序对其了解(“透明”存储器压缩)。通过程序的虚拟地址空间和请求页面调度来实现该压缩。内核可以取消对来自程序的页面表的页面的映射并且对这些页面进行压缩。当访问压缩页面(例如,由程序请求)时,页面错误处理器读取PTE以从压缩池空间定位该页面,对该页面进行解压,并且将该页面链接回程序的页面表。
图1是用于硬件辅助的存储器压缩管理的示例***100。根据本文描述的一个或者多个实施例,***100可以包括页面过滤器110、***存储器管理单元130(***MMU)、最后一级高速缓存(LLC)120、构架(Fabric)140、主未压缩存储器控制器(宽I/O 2或者WIO2 Ct1)160、具有宽I/O 2接口标准的主未压缩存储器(WIO2 RAM)180、低功率双倍数据速率存储器控制器(例如,LPDDR3 Ctl)150、和具有LPDDR3接口标准170的备份压缩存储器(ZRAM)。
根据至少一个实施例,可以将页面过滤器110配置为检测不活动的(或者“冷”)页面,而***MMU 130维持victim TLB(转换后备缓冲区)。例如,LLC 120可以是8MB的片上静态随机存取存储器(SRAM),并且构架140是在***的各个代理(例如,组件、元件等)之间移动命令/分组的片上互连,包括:例如CPU、GPU、片上SRAM高速缓存、片外DRAM等。此外,LPDDR3 Ct1 150是与JEDEC LPDDR3 ZRAM170(备份压缩存储器)对接的存储器控制器。虽然出于容量原因提供LPDDR3 ZRAM 170,但是主工作存储器WIO 2RAM 180被包括在***100中以提供工作带宽。WIO2 RAM 180是除了片上MMU之外提供的专用(例如,高带宽、更小的容量)存储器。应当了解,虽然WIO2是行业标准,但是与LPDDR3一起使用WIO2和片上MMU是一种实现改进的速度和改进的存储器管理的新方法。
在随后的章节中,根据本公开的一个或者多个实施例,在描述页面过滤器(例如,在图1中示出的示例***100中的页面过滤器110)的各个特征的场境(context)中使用“容量逐出”和“引用计数饱和”。例如,页面过滤器可以具有对***层级(不是CPU)的4KB页面的活动保持追踪的1024个条目。在该场境中,页面过滤器是片上高速缓存,因为主页面表驻留在DRAM中。当必须监视新页面时,高速缓存控制器将逐出旧条目(称为“容量逐出”的动作)。类似地,当条目的引用计数达到其最大值(即,“引用计数饱和”)时,高速缓存控制器将引发中断以通知内核的MMU来更新主页面表。
根据本文描述的一个或者多个实施例,可以在引发中断时使用基于硬件的页面剖析以在容量逐出或者引用计数饱和期间更新内核的PTE。例如,一个历史表可以追踪4KB的页面,而另一历史表追踪较大(例如,4MB)的页面。各个页面可以具有最近最少使用(LRU)历史记录或者引用计数以查看页面在一段时间内被引用的频繁程度,其中,该时间段可以是可调整的。可以限定阈值,并且当需要进行容量逐出时,引发中断以逐出未使用的页面/对其进行压缩。如上所述,容量逐出是必须监视新页面并且必须从历史表逐出旧条目的时候。
下文描述根据本公开的一个或者多个实施例的、在基于硬件的页面剖析的示例过程内的页面过滤器的各个特征和操作。在下面的描述中,有时会参照在图3中图示的对应特征和/或操作。
图3图示了使用页面过滤器来进行基于硬件的页面剖析的示例过程300。根据本文描述的一个或者多个实施例,页面剖析的示例过程300可以利用设计为区分活动的(“热”)页面与不活动的(“冷”)页面的页面过滤器(例如,在图1中示出的示例***100中的页面过滤器110)以使得在发生页面错误之前对不活动的页面进行压缩。在下面的章节中提供了关于在基于硬件的页面剖析的示例过程300中的框305至320中的一个或者多个的进一步细节。
PTE提供页面引用的历史记录,使得内核可以决定对哪个页面进行压缩。不应当对活动的或者“热”页面进行压缩。页面过滤器是片上的,而页面表是在DRAM中的。由于片上表具有有限的条目,因此在页面过滤器中发生容量逐出。每当存在容量逐出时,利用最新的引用计数来更新DRAM中的页面表条目。
如上所述,当发生引用计数饱和时,已经达到最大引用计数(例如,对于8位计数器为255或者更大),这意指无法再追踪历史记录。在这样的情况下,可以逐出条目,或者可以重置计数器,并且将相关的引用计数值添加至DRAM中的页面表条目。
根据至少一个实施例,可以基于预定方式(例如,每小时)或者动态地(例如,根据阈值被满足)重置DRAM页面表以便防止DRAM中的计数饱和。
根据至少一个实施例,页面过滤器设计为向内核提供附加信息。虽然内核已经具有一些信息,但是页面过滤器可以通过例如引用计数和/或LRU向量来添加进一步的信息。
此外,在至少一个实施例中,操作***可以向内核提供使得内核能够覆写(override)基于硬件的页面过滤器的提示。这样的布置可以允许页面保持“热”,而不管该页面未被使用/引用。这样的提示还可以被用于覆写对页面的压缩,该压缩可能会花费过长的时间来解压。通过OS来确定页面大小,并且然后将该页面大小设计到硬件中。另一固定参数是片上历史表的大小。例如,微控制器实施方式可以允许这些特征在资源限制内是可配置的。微控制器可以使用ROM或者外部RAM来保存其状态。
图4图示了***存储器管理单元(例如,在图1中示出的并且在上面详细描述的示例***100中的***MMU 130)的示例操作(400)。根据本公开的一个或者多个实施例,可以将***MMU配置为通过缓存页面表条目来执行硬件辅助的(例如,硬件加速的)存储器压缩管理。
例如,根据至少一个实施例,硬件辅助的ZRAM可以负责缓存虚拟页面号(VPN)、物理页面号(PPN)、和压缩页面号(ZPN)。应当理解,在本公开的场境中,主工作存储器(物理存储器)可以是未压缩的。例如,压缩存储器空间(例如,3GB的LPDDR3)可以变成6GB至9GB的压缩ZRAM。
在现有方法中,主工作存储器会试图将虚拟地址映射至物理地址。然而,对于压缩而言,需要更多的信息。如此,添加压缩信息意指可以以例如4KB的粒度来将来自LPDDR3空间的物理页面映射至多个压缩页面。因此,可以将4KB的物理页面映射至两个压缩页面。
根据本公开的一个或者多个实施例,可以将上面描述的压缩信息添加至页面表。图2图示了已经向其添加了压缩信息的这样的主存储器页面表的示例。另外,还可以将每个页面的起始地址记录在页面表中,在该页面表中起始地址是压缩存储器的物理地址。应当注意,在页面表中除了将虚拟地址映射至物理地址之外记录起始地址。按照这种方式,将虚拟地址映射至物理地址,并且将物理地址分离到压缩和未压缩存储器中。
如上所述,CPU具有TLB。当条目未被映射时,将条目分配给***层级MMU,这意指从工作DRAM挑选出页面并且将该页面从当前向压缩空间的映射中去除。然后,触发内核进行一些压缩工作,并且分配条目。当压缩完成时,利用指示压缩页面被分配至其的物理位置的信息来在主存储器表中更新分配的条目。然后,片上数据结构(例如,***MMU)利用压缩的页面信息来被更新。
例如,当用户尝试在该用户已经在web浏览器中打开的不同标签之间进行交换时,可以读取分配的条目。具体地,用户交换到的标签的网页被压缩过,并且现在作为用户交换至该标签的结果而正被解压。在这样的场景中,读取压缩条目以确定在何处取得压缩存储器空间并且将其移动至未压缩空间。
如上所述,TLB未命中导致页面错误。因此,根据本公开的至少一个实施例,可以将DRAM表的某部分保存在片上MMU中,使得可以比在DRAM处查找更快地获得(例如,检索、请求等)条目。
此外,一旦将与条目对应的虚拟页面和物理页面重新映射至CPU TLB(例如,将压缩页面从压缩区域移动至未压缩工作存储器),则可以从MMU去除该条目因为其现在被分配在CPU TLB中。在另一示例中,在例如进程被终止或者标签被去除的情况下,还可以通过内核MMU来使页面表条目无效/去除页面表条目。应当理解,直到程序完成或者被终止才从虚拟存储器去除条目,在该时刻程序可以清除虚拟地址空间。
根据至少一个实施例,高速缓存操作引擎被配置为取消对来自CPU TLB的物理页面的映射并且刷新来自最后一级高速缓存(LLC)的任何行。刷新来自LLC的行是必要的,因为硬件触发的压缩需要从高速缓存去除压缩内容以使高速缓存与存储器保持一致。例如,高速缓存操作可以与在DRAM抽取某物并且将其移动至压缩空间时的分配同时发生。在另一示例中,可以通过硬件引擎决定是时候对页面进行压缩来触发高速缓存操作。在又一示例中,可以通过内核从存储器逐出页面来触发高速缓存操作。
图5图示了使用页面过滤器和***存储器管理单元(例如,在图1中示出的并且在上面详细描述的示例***100中的页面过滤器110和***MMU 130)来对存储器进行压缩的示例过程。下面提供了关于在使用页面过滤器和***MMU来进行存储器压缩的示例过程500中的框505至530中的一个或者多个的各个细节。
根据本文描述的一个或者多个实施例,当给定页面的引用计数被确定为小于一定阈值(其可以是预定的或者可以在操作期间动态地确定/调整)时,页面被认为(例如,分类、视为、确定等)是冷页面。发生这样的情况的结果是:***MMU刷新来自高速缓存的对应页面表条目或者内核MMU处置页面错误(标准存储器逐出)。
如果片上页面过滤器检测到冷页面,则***MMU将要求来自高速缓存的该物理页面号。例如,可以取得4KB数据并且对该数据进行压缩,并且将压缩的存储器分配给页面表条目。然后,内核查找其存储器页面表,并且决定在何处分配压缩页面。一旦内核决定哪个物理页面得到压缩页面信息,片上MMU便更新victim TLB以保持虚拟、压缩、和工作存储器之间的转换。因此,将压缩页面从工作存储器逐出到压缩存储器中。根据本文描述的一个或者多个实施例,可以将直接存储器存取(DMA)引擎配置为将压缩页面写入压缩存储器(例如,在图1示出的示例***100中的LPDDR3 ZRAM 170)。首先发生地址分配,然后将内容保存至压缩存储器。
图6图示了使用***存储器管理单元(例如,在图1中示出的并且在上面详细描述的示例***100中的***MMU 130)来对存储器进行解压的示例过程。下面提供了关于在使用***MMU来进行存储器解压的示例过程600中的框605至630中的一个或者多个的各个细节。
根据一个或者多个实施例,例如,场境切换可以是在用户在web浏览器中的标签之间切换时。例如,可能已经对用户可以尝试切换至其的网页进行了压缩,并且因此,TLB将不会使物理地址在工作存储器中被映射,从而致使页面错误。这样的事件可以发起(例如,开始)预取过程。例如,可以假设程序具有多个需要被取得并且填充的页面。如此,存储器解压的示例过程被设计为不仅得到(例如,检索、请求、取得等)当前请求的页面,而且还获得后继毗连的所请求页面。
查找虚拟和压缩地址并且引发中断以通过找到被分配在工作存储器中的物理页面号的空间来处置页面错误。虽然正在进行1级存储器(该1级存储器是主工作存储器)分配,但是可以从2级存储器(该2级存储器是压缩存储器)取得压缩页面,并且对该压缩页面进行解压。MMU页面表更新和解压应当大致在相同时间完成(解压可能更快)。可以在页面表中分配并且更新1级存储器,并且然后可以将未压缩存储器写入分配的1级存储器空间。
图7是配置用于使用页面过滤器和***存储器管理单元来进行硬件辅助的存储器压缩管理的示例性计算机(700)的高级框图。例如,根据本文描述的一个或者多个实施例,可以将计算机(700)配置为执行基于硬件的页面剖析以在容量逐出或者引用计数饱和期间更新内核的PTE。在非常基本的配置(701)中,计算装置(700)通常包括一个或者多个处理器(710)和***存储器(720)。存储器总线(730)可以被用于在处理器(710)和***存储器(720)之间进行通信。
根据期望的配置,处理器(710)可以是任何类型的处理器,包括但不限于:微处理器(μΡ)、微控制器(μC)、数字信号处理器(DSP)、或者其任何组合。处理器(710)可以包括一个更多层级的高速缓存——诸如一级高速缓存(711)和二级高速缓存(712)、处理器核心(713)、和寄存器(714)。处理器核心(713)可以包括算数逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP Core)、或者其任何组合。存储控制器(716)还可以和处理器(710)一起使用,或者在一些实施方式中,存储控制器(715)可以是处理器(710)的内部部分。
根据期望的配置,***存储器(720)可以是任何类型的存储器,包括但不限于:易失性存储器(诸如,RAM)、非易失性存储器(诸如,ROM、闪速存储器等)或者其任何组合。***存储器(720)通常包括操作***(721)、一个或者多个应用(722)、和程序数据(724)。应用(722)可以包括使用页面过滤器和***MMU来对存储器进行有效率地压缩和解压的硬件辅助的存储器压缩管理***(723)。
程序数据(724)可以包括存储指令,该指令在由一个或者多个处理装置执行时实现用于硬件辅助的存储器压缩管理的***和方法。此外,根据至少一个实施例,程序数据(724)可以包括页面引用计数数据(725),该页面引用计数数据可以涉及页面剖析操作,在该操作中当例如页面的引用计数低于一定阈值时,页面被确定为不活动。在一些实施例中,可以将应用(722)布置为与操作***(721)上的程序数据(724)一起操作。
计算设备(700)可以具有附加特征或者功能、和附加接口以促进基本配置(701)与任何需要的装置和接口之间的通信。
***存储器(720)是计算机存储介质的示例。计算机存储介质包括但不限于:RAM、DRAM、SARM、ROM、EEPROM、闪速存储器或者其它存储器技术、CD-ROM、数字多功能盘(DVD)或者其它光学储存器、磁带盒、磁带、磁盘储存器或者其它磁存储设备、或者可以被用于存储期望的信息并且可由计算设备700进行访问的任何其它介质。任何这样的计算机存储介质都可以是设备(700)的一部分。
可以将计算设备(700)实现为小封装技术便携式(或者移动)电子设备的一部分,所述小封装技术便携式(或者移动)电子设备诸如,蜂窝电话、智能电话、个人数字助理(PDA)、个人媒体播放器设备、平板计算机(平板)、无线web手表设备、个人耳机设备、专用设备、或者包括上面的功能中的任何一个的混合设备。还可以将计算设备(700)实施为包括膝上型计算机和非膝上型计算机配置的个人计算机。
前面描述的详细描述已经经由使用框图、流程图、和/或示例来对设备和/或过程的各个实施例进行了阐述。在这样的框图、流程图、和/或示例包含一个或者多个功能和/或操作的范围内,本领域技术人员要明白,在这样的框图、流程图、或者示例内的每个功能和/或操作可以由范围广泛的硬件、软件、固件、或者实际上其任何组合来单独地和/或共同地实现。在一个实施例中,可以经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或者其它集成格式来实现本文描述的主题的若干部分。然而,本领域的技术人员要认识到,本文所公开的实施例的一些方面能够整体地或者部分地在集成电路中等效地实现为在一个或者多个计算机上运行的一个或者多个计算机程序、在一个或者多个处理器上运行的一个或者多个程序、固件、或者实际上其任何组合,并且根据本公开,设计电路和/或编写软件和/或固件的代码也将在本领域的技术人员的技术范围内。
另外,本领域的技术人员要了解,能够将本文描述的主题的机制分布为各种格式的程序产品,并且无论用于实际执行该分布的非暂时性信号承载介质的特定类型如何,本文描述的主题的说明性实施例都适用。非暂时性信号承载介质的示例包括但不限于以下:可记录型介质——诸如软盘、硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、计算机存储器等;以及传输型介质——诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
对于本文使用的几乎任何复数的和/或单数的术语,在适合于场境和/或应用的情况下本领域的技术人员可以从复数转化为单数和/或从单数转化为复数。为了清楚起见,可以在此对各种单/复数排列组合进行清楚地阐述。
因此,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
Claims (10)
1.一种用于存储器压缩管理的方法(500),包括:
确定与虚拟存储器空间相关联的工作存储器中的页面是不活动的,所述工作存储器(180)是宽输入/输出随机存取存储器;
刷新来自高速缓存(120)的页面表条目,所述高速缓存是静态随机存取存储器并且所述页面表条目指示所述工作存储器中的所述不活动页面的物理位置;
确定(515)在压缩存储器(170)中的物理位置,所述压缩存储器是低功率双倍数据速率随机存取存储器,以写入压缩页面,所述压缩页面从所确定的不活动页面压缩得到;以及
将所述压缩页面写入(530)所述压缩存储器中的所确定的物理位置。
2.根据权利要求1所述的方法,其中,利用所述压缩页面的所确定的物理位置来更新转换后备缓冲区,以便维持所述工作存储器、所述压缩存储器、和所述虚拟存储器空间之间的转换信息。
3.根据权利要求1所述的方法,其中,页面过滤器基于所述页面的引用计数低于阈值计数来确定所述工作存储器中的所述页面是不活动的。
4.根据权利要求1所述的方法,其中,页面过滤器基于在预定时间段期间所述页面的引用计数低于阈值计数来确定所述工作存储器中的所述页面是不活动的。
5.一种用于存储器压缩管理的***(100),所述***包括:
至少一个处理器;以及
非暂时性计算机可读介质,耦合至所述至少一个处理器,所述非暂时性计算机可读介质存储有指令,所述指令在由所述至少一个处理器执行时致使所述至少一个处理器:
使用页面过滤器(110)来确定与虚拟存储器空间相关联的工作存储器(180)中的页面是不活动的,所述工作存储器是宽输入/输出随机存取存储器;
使用存储器管理单元来刷新来自高速缓存(120)的页面表条目,所述高速缓存是静态随机存取存储器;
使用所述存储器管理单元来确定压缩存储器(170)中的物理位置,所述压缩存储器是低功率双倍数据速率随机存取存储器;以及
使用直接存储器访问引擎来将压缩页面写入所述压缩存储器中的所确定的物理位置,所述压缩页面从所确定的不活动页面压缩得到。
6.根据权利要求5所述的***,其中,所述至少一个处理器被进一步致使:
使用存储器管理单元(130),利用所述压缩页面的所确定的物理位置来更新转换后备缓冲区。
7.根据权利要求6所述的***,其中,利用所述压缩页面的所确定的物理位置来更新所述转换后备缓冲区,以便维持所述工作存储器、所述压缩存储器、和所述虚拟存储器空间之间的转换信息。
8.根据权利要求5所述的***,其中,所述页面过滤器基于所述页面的引用计数低于阈值计数来确定所述工作存储器中的所述页面是不活动的。
9.根据权利要求5所述的***,其中,所述页面过滤器基于在预定时间段期间所述页面的引用计数低于阈值计数来确定所述工作存储器中的所述页面是不活动的。
10.一种用于存储器压缩管理的方法,所述方法包括:
检测与虚拟存储器空间相关联的工作存储器(180)中的不活动的页面,所述工作存储器(180)是宽输入/输出随机存取存储器;
在页面错误之前对所述不活动的页面进行压缩;
在位于所述工作存储器内的主存储器页面表中,记录指示压缩存储器(170)中所压缩的不活动页面的物理位置的开始地址,所述压缩存储器是低功率双倍数据速率随机存取存储器;以及
将所压缩的不活动页面写入所述压缩存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462060949P | 2014-10-07 | 2014-10-07 | |
US62/060,949 | 2014-10-07 | ||
PCT/US2015/054496 WO2016057670A1 (en) | 2014-10-07 | 2015-10-07 | Hardware-assisted memory compression management using page filter and system mmu |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106716386A CN106716386A (zh) | 2017-05-24 |
CN106716386B true CN106716386B (zh) | 2020-05-29 |
Family
ID=54337914
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580050274.4A Active CN106716386B (zh) | 2014-10-07 | 2015-10-07 | 使用页面过滤器和***mmu的硬件辅助存储器压缩管理 |
CN201580043956.2A Active CN106663060B (zh) | 2014-10-07 | 2015-10-07 | 用于缓存线路去重的方法和*** |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580043956.2A Active CN106663060B (zh) | 2014-10-07 | 2015-10-07 | 用于缓存线路去重的方法和*** |
Country Status (4)
Country | Link |
---|---|
US (2) | US9740631B2 (zh) |
EP (2) | EP3204859B1 (zh) |
CN (2) | CN106716386B (zh) |
WO (2) | WO2016057670A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016057668A1 (en) | 2014-10-07 | 2016-04-14 | Google Inc. | Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption |
WO2016057670A1 (en) | 2014-10-07 | 2016-04-14 | Google Inc. | Hardware-assisted memory compression management using page filter and system mmu |
DE112016000726B4 (de) * | 2015-02-13 | 2024-08-01 | Google LLC (n.d.Ges.d. Staates Delaware) | Transparente hardwareunterstützte speicherdekompression |
US10528284B2 (en) | 2016-03-29 | 2020-01-07 | Samsung Electronics Co., Ltd. | Method and apparatus for enabling larger memory capacity than physical memory size |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US10678704B2 (en) | 2016-03-29 | 2020-06-09 | Samsung Electronics Co., Ltd. | Method and apparatus for enabling larger memory capacity than physical memory size |
US10496543B2 (en) | 2016-03-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
US9966152B2 (en) | 2016-03-31 | 2018-05-08 | Samsung Electronics Co., Ltd. | Dedupe DRAM system algorithm architecture |
EP3479402B1 (en) | 2016-06-30 | 2021-10-27 | INTEL Corporation | Method and apparatus for remote field programmable gate array processing |
US20180004668A1 (en) * | 2016-06-30 | 2018-01-04 | Intel Corporation | Searchable hot content cache |
CN107579916B (zh) * | 2016-07-04 | 2021-03-23 | 新华三技术有限公司 | 转发表项访问方法及装置 |
US9946660B2 (en) * | 2016-07-29 | 2018-04-17 | Hewlett Packard Enterprise Development Lp | Memory space management |
US20180060235A1 (en) * | 2016-08-30 | 2018-03-01 | Intel Corporation | Non-volatile memory compression devices and associated methods and systems |
US10282436B2 (en) * | 2017-01-04 | 2019-05-07 | Samsung Electronics Co., Ltd. | Memory apparatus for in-place regular expression search |
US10061698B2 (en) | 2017-01-31 | 2018-08-28 | Qualcomm Incorporated | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur |
US10649889B2 (en) * | 2017-06-04 | 2020-05-12 | Apple Inc. | Method and apparatus for managing kernel memory of data processing systems |
CN109710396B (zh) | 2017-10-26 | 2023-08-22 | 华为技术有限公司 | 一种信息采集及内存释放的方法及装置 |
CN110377534B (zh) * | 2018-04-13 | 2023-11-17 | 华为技术有限公司 | 数据处理方法及装置 |
CN110659225A (zh) * | 2018-06-28 | 2020-01-07 | 华为技术有限公司 | 内存管理方法以及相关装置 |
US10776028B2 (en) * | 2018-07-10 | 2020-09-15 | EMC IP Holding Company LLC | Method for maximum data reduction combining compression with deduplication in storage arrays |
US10628072B2 (en) * | 2018-08-21 | 2020-04-21 | Samsung Electronics Co., Ltd. | Scalable architecture enabling large memory system for in-memory computations |
US11249900B2 (en) * | 2018-10-29 | 2022-02-15 | Vmware, Inc. | Efficiently purging non-active blocks in NVM regions using virtblock arrays |
US11379373B2 (en) * | 2019-08-13 | 2022-07-05 | Micron Technology, Inc. | Memory tiering using PCIe connected far memory |
KR20210049602A (ko) | 2019-10-25 | 2021-05-06 | 삼성전자주식회사 | 컴퓨팅 장치 및 그 동작 방법 |
US11797207B2 (en) * | 2020-08-03 | 2023-10-24 | Cornell University | Base and compressed difference data deduplication |
WO2022203532A1 (en) * | 2021-03-23 | 2022-09-29 | Huawei Technologies Co., Ltd. | Method for virtual memory management in a computer |
CN113568940B (zh) * | 2021-08-04 | 2024-05-21 | 北京百度网讯科技有限公司 | 数据查询的方法、装置、设备以及存储介质 |
CN117651021B (zh) * | 2024-01-25 | 2024-04-30 | 苏州萨沙迈半导体有限公司 | 过滤器及其控制方法和装置、电气设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08241241A (ja) * | 1995-01-23 | 1996-09-17 | Internatl Business Mach Corp <Ibm> | 制約された仮想メモリ環境におけるメモリのパフォーマンスをページング活動の縮小によって改善するための方法及びシステム |
US5699539A (en) * | 1993-12-30 | 1997-12-16 | Connectix Corporation | Virtual memory management system and method using data compression |
CN101770430A (zh) * | 2008-12-29 | 2010-07-07 | J·鲁德利克 | 分析移动到非易失性存储器的ram存储对象的方法和设备 |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696927A (en) * | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US5978888A (en) | 1997-04-14 | 1999-11-02 | International Business Machines Corporation | Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels |
US5991847A (en) * | 1997-06-06 | 1999-11-23 | Acceleration Software International Corporation | Data pattern caching for speeding up write operations |
US6393525B1 (en) * | 1999-05-18 | 2002-05-21 | Intel Corporation | Least recently used replacement method with protection |
US6434669B1 (en) | 1999-09-07 | 2002-08-13 | International Business Machines Corporation | Method of cache management to dynamically update information-type dependent cache policies |
US6532520B1 (en) | 1999-09-10 | 2003-03-11 | International Business Machines Corporation | Method and apparatus for allocating data and instructions within a shared cache |
US7089391B2 (en) * | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
US6556952B1 (en) | 2000-05-04 | 2003-04-29 | Advanced Micro Devices, Inc. | Performance monitoring and optimizing of controller parameters |
US7047382B2 (en) | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US6877081B2 (en) | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6516397B2 (en) * | 2001-04-09 | 2003-02-04 | Hewlett-Packard Company | Virtual memory system utilizing data compression implemented through a device |
US7032158B2 (en) * | 2001-04-23 | 2006-04-18 | Quickshift, Inc. | System and method for recognizing and configuring devices embedded on memory modules |
US6792510B1 (en) | 2002-02-14 | 2004-09-14 | Novell, Inc. | System and method for updating a cache |
US7035979B2 (en) | 2002-05-22 | 2006-04-25 | International Business Machines Corporation | Method and apparatus for optimizing cache hit ratio in non L1 caches |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US7134143B2 (en) * | 2003-02-04 | 2006-11-07 | Stellenberg Gerald S | Method and apparatus for data packet pattern matching |
US7383399B2 (en) | 2004-06-30 | 2008-06-03 | Intel Corporation | Method and apparatus for memory compression |
EP1810249A4 (en) * | 2004-10-15 | 2014-09-10 | Seadragon Software Inc | SYSTEM AND METHOD FOR COMMUNICATION MANAGEMENT AND / OR STORAGE OF IMAGE DATA |
US7246205B2 (en) | 2004-12-22 | 2007-07-17 | Intel Corporation | Software controlled dynamic push cache |
US20060179258A1 (en) | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | Method for detecting address match in a deeply pipelined processor design |
TW200828273A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Hard disk cache device and method |
WO2008138042A1 (en) * | 2007-05-10 | 2008-11-20 | Chrystall, Alexander, George, Mallick | System and/or method for reducing disk space usage and improving input/output performance of computer systems |
US7895242B2 (en) | 2007-10-31 | 2011-02-22 | Microsoft Corporation | Compressed storage management |
JP5090941B2 (ja) * | 2008-01-29 | 2012-12-05 | 株式会社日立製作所 | ストレージサブシステム及びストレージシステム |
AU2009250803A1 (en) * | 2008-05-20 | 2009-11-26 | Crystal Clear Partnership | Separation of polysaccharides by charge density gradient |
US8458404B1 (en) | 2008-08-14 | 2013-06-04 | Marvell International Ltd. | Programmable cache access protocol to optimize power consumption and performance |
KR101618634B1 (ko) | 2009-01-07 | 2016-05-09 | 삼성전자주식회사 | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 |
WO2010113203A1 (en) | 2009-03-30 | 2010-10-07 | Hitachi, Ltd. | Information processing system, information processing methods and programs |
US8112585B2 (en) | 2009-04-30 | 2012-02-07 | Netapp, Inc. | Method and apparatus for dynamically switching cache policies |
CN101572552B (zh) * | 2009-06-11 | 2012-07-18 | 哈尔滨工业大学 | 基于内容可寻址存储器的高速无损数据压缩*** |
US8447741B2 (en) * | 2010-01-25 | 2013-05-21 | Sepaton, Inc. | System and method for providing data driven de-duplication services |
US8677071B2 (en) | 2010-03-26 | 2014-03-18 | Virtualmetrix, Inc. | Control of processor cache memory occupancy |
US20110242427A1 (en) * | 2010-04-01 | 2011-10-06 | Timothy Ramsdale | Method and System for Providing 1080P Video With 32-Bit Mobile DDR Memory |
US8886664B2 (en) * | 2010-05-13 | 2014-11-11 | Microsoft Corporation | Decreasing duplicates and loops in an activity record |
US8484405B2 (en) | 2010-07-13 | 2013-07-09 | Vmware, Inc. | Memory compression policies |
US8458145B2 (en) | 2011-01-20 | 2013-06-04 | Infinidat Ltd. | System and method of storage optimization |
KR20130031046A (ko) * | 2011-09-20 | 2013-03-28 | 삼성전자주식회사 | 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 |
US9311250B2 (en) * | 2011-12-19 | 2016-04-12 | Intel Corporation | Techniques for memory de-duplication in a virtual system |
US8706971B1 (en) | 2012-03-14 | 2014-04-22 | Netapp, Inc. | Caching and deduplication of data blocks in cache memory |
WO2013148872A1 (en) * | 2012-03-28 | 2013-10-03 | Huawei Technologies Co., Ltd. | Concurrently accessed set associative overflow cache |
US8930612B2 (en) | 2012-05-31 | 2015-01-06 | Seagate Technology Llc | Background deduplication of data sets in a memory |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
US9043570B2 (en) | 2012-09-11 | 2015-05-26 | Apple Inc. | System cache with quota-based control |
KR20140035082A (ko) * | 2012-09-13 | 2014-03-21 | 삼성전자주식회사 | 메모리 관리방법 |
US20140089600A1 (en) | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with data pending state |
US8938417B2 (en) * | 2013-02-22 | 2015-01-20 | International Business Machines Corporation | Integrity checking and selective deduplication based on network parameters |
US9298637B2 (en) * | 2013-03-13 | 2016-03-29 | International Business Machines Corporation | Dynamic caching module selection for optimized data deduplication |
US9436604B2 (en) | 2013-03-13 | 2016-09-06 | Futurewei Technologies, Inc. | System and method for software/hardware coordinated adaptive performance monitoring |
US20140281155A1 (en) * | 2013-03-14 | 2014-09-18 | Lsi Corporation | Storage device assisted data de-duplication |
GB2512604A (en) | 2013-04-03 | 2014-10-08 | Ibm | Flexibly storing defined presets for configuration of a storage controller |
US9292449B2 (en) | 2013-12-20 | 2016-03-22 | Intel Corporation | Cache memory data compression and decompression |
US9563251B2 (en) * | 2013-12-28 | 2017-02-07 | Intel Corporation | Representing a cache line bit pattern via meta signaling |
US9792063B2 (en) * | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
WO2016057670A1 (en) | 2014-10-07 | 2016-04-14 | Google Inc. | Hardware-assisted memory compression management using page filter and system mmu |
WO2016057668A1 (en) | 2014-10-07 | 2016-04-14 | Google Inc. | Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption |
-
2015
- 2015-10-07 WO PCT/US2015/054496 patent/WO2016057670A1/en active Application Filing
- 2015-10-07 EP EP15784524.9A patent/EP3204859B1/en active Active
- 2015-10-07 US US14/877,484 patent/US9740631B2/en active Active
- 2015-10-07 US US14/877,523 patent/US9785571B2/en active Active
- 2015-10-07 CN CN201580050274.4A patent/CN106716386B/zh active Active
- 2015-10-07 CN CN201580043956.2A patent/CN106663060B/zh active Active
- 2015-10-07 WO PCT/US2015/054499 patent/WO2016057672A1/en active Application Filing
- 2015-10-07 EP EP15784523.1A patent/EP3204860A1/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699539A (en) * | 1993-12-30 | 1997-12-16 | Connectix Corporation | Virtual memory management system and method using data compression |
JPH08241241A (ja) * | 1995-01-23 | 1996-09-17 | Internatl Business Mach Corp <Ibm> | 制約された仮想メモリ環境におけるメモリのパフォーマンスをページング活動の縮小によって改善するための方法及びシステム |
CN101770430A (zh) * | 2008-12-29 | 2010-07-07 | J·鲁德利克 | 分析移动到非易失性存储器的ram存储对象的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US9740631B2 (en) | 2017-08-22 |
EP3204860A1 (en) | 2017-08-16 |
US20160098353A1 (en) | 2016-04-07 |
EP3204859A1 (en) | 2017-08-16 |
WO2016057670A1 (en) | 2016-04-14 |
CN106663060B (zh) | 2019-11-19 |
CN106716386A (zh) | 2017-05-24 |
WO2016057672A1 (en) | 2016-04-14 |
CN106663060A (zh) | 2017-05-10 |
US9785571B2 (en) | 2017-10-10 |
EP3204859B1 (en) | 2020-12-02 |
US20160098356A1 (en) | 2016-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716386B (zh) | 使用页面过滤器和***mmu的硬件辅助存储器压缩管理 | |
US10203901B2 (en) | Transparent hardware-assisted memory decompression | |
US10474583B2 (en) | System and method for controlling cache flush size | |
KR101713051B1 (ko) | 하이브리드 메모리 시스템, 및 그 관리 방법 | |
US10310985B2 (en) | Systems and methods for accessing and managing a computing system memory | |
US9880944B2 (en) | Page replacement algorithms for use with solid-state drives | |
US10282308B2 (en) | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems | |
JP5583274B2 (ja) | コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス | |
US20140181461A1 (en) | Reporting access and dirty pages | |
TWI526832B (zh) | 用於減少執行硬體表搜尋(hwtw)所需的時間和計算資源量的方法和系統 | |
US20190324914A1 (en) | Method, Apparatus, and Non-Transitory Readable Medium for Accessing Non-Volatile Memory | |
KR20140035082A (ko) | 메모리 관리방법 | |
EP3023878B1 (en) | Memory physical address query method and apparatus | |
US20100332693A1 (en) | Direct memory access in a computing environment | |
US9875191B2 (en) | Electronic device having scratchpad memory and management method for scratchpad memory | |
US9792228B2 (en) | Enhancing lifetime of non-volatile cache by injecting random replacement policy | |
TW201447584A (zh) | 用於在執行硬體表搜尋〈hwtw〉時在某些條件下防止對暫存器的內容的未經授權式存取的方法和裝置 | |
JP4915756B2 (ja) | アドレス変換を高速化する方法及びシステム | |
US20070101098A1 (en) | Apparatus and method of reducing page fault rate in virtual memory system | |
US8417903B2 (en) | Preselect list using hidden pages | |
US10565111B2 (en) | Processor | |
TW201441817A (zh) | 資料緩存系統及方法 | |
US9767043B2 (en) | Enhancing lifetime of non-volatile cache by reducing intra-block write variation | |
US20240111687A1 (en) | Translating Virtual Memory Addresses to Physical Memory Addresses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |