CN107430554A - 通过使用数据的可压缩性作为高速缓存***的标准来提高存储高速缓存性能 - Google Patents
通过使用数据的可压缩性作为高速缓存***的标准来提高存储高速缓存性能 Download PDFInfo
- Publication number
- CN107430554A CN107430554A CN201680018928.XA CN201680018928A CN107430554A CN 107430554 A CN107430554 A CN 107430554A CN 201680018928 A CN201680018928 A CN 201680018928A CN 107430554 A CN107430554 A CN 107430554A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- cache lines
- cache
- compressibility
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 61
- 230000015654 memory Effects 0.000 claims abstract description 143
- 238000000034 method Methods 0.000 claims abstract description 48
- 230000000717 retained effect Effects 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000007906 compression Methods 0.000 claims description 19
- 230000006835 compression Effects 0.000 claims description 16
- 238000013500 data storage Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- 238000000429 assembly Methods 0.000 description 13
- 230000000712 assembly Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000005538 encapsulation Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000002708 enhancing effect Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional 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
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了与通过使用数据的可压缩性作为高速缓存***或分配以及删除的标准来提高存储高速缓存性能相关的方法和装置。在一个实施例中,存储器(例如,响应于数据可压缩的确定)存储与数据的压缩版本对应的一个或多个高速缓存行。至少部分地基于数据的可压缩性的指示来确定所述一个或多个高速缓存行是否要被保留或***在存储器中。还公开和要求保护其它实施例。
Description
相关申请
本申请要求根据35 U.S.C.365(b)的对2015年3月27日提交的美国申请号14/672,093的优先权。所述申请号14/672,093特此被整体地通过引用并入本文中。
技术领域
本公开一般地涉及电子领域。更特别地,一些实施例一般地涉及通过使用数据的可压缩性作为高速缓存***或分配的标准来提高存储高速缓存性能。
背景技术
一般地,存储在高速缓存中的数据可以比存储在其它类型的存储器中的相同数据快许多倍地来访问。一般地,随着高速缓存介质的大小增加,在高速缓存中发现数据的可能性增加(例如,导致更好的命中率)。然而,增大高速缓存的大小增加总体***成本。
附图说明
关于附图提供了详细描述。在图中,参考号码的(一个或多个)最左数位标识该参考号码首次出现的图。不同图中的相同参考号码的使用指示类似或相同的项目。
图1和4-6图示了可以用于实现在本文中论述的各种实施例的计算***的实施例的框图。
图2图示了根据实施例的固态驱动器的各种组件的框图。
图3A1、3A2、3B1、3B2和C图示了根据一些实施例的方法的流程图。
具体实施方式
在以下描述中,阐述了众多具体细节以便提供对各种实施例的透彻理解。然而,可以在没有具体细节的情况下实践各种实施例。在其它实例中,没有详细地描述公知的方法、过程、组件和电路,以便不使特定实施例模糊。进一步地,可以使用诸如集成半导体电路(“硬件”)、组织成一个或多个程序(“软件”)的计算机可读指令或硬件和软件的一些组合之类的各种部件来执行实施例的各种方面。为了本公开的目的,对“逻辑”的引用应当意指硬件、软件、固件或其一些组合。
如上面所论述的,利用高速缓存可以有益于性能。为此,广泛使用存储高速缓存。例如,固态驱动器(SSD)可以用作高速缓存介质。一般地,在同等条件下,高速缓存的命中率将随着高速缓存介质的大小增大而增大。因此,使用SSD的一些高速缓存实现可以使用SSD中的硬件压缩来压缩数据,以使得更多数据纳入高速缓存中,导致提高的高速缓存命中率。
为此,一些实施例涉及通过使用数据的可压缩性作为高速缓存***或分配的标准来提高存储高速缓存性能。为了高效地使用高速缓存,做出是否应当高速缓存(或从高速缓存驱逐)数据片的决定。此决定(在本文中也称为“高速缓存***”或“高速缓存分配”)旨在确保被高速缓存的数据有可能在(例如,相对近的)将来被访问以及高速缓存介质中的有限空间仅用于被频繁访问的数据。因此,是否高速缓存(或从高速缓存驱逐)一些数据片可以是高速缓存利用效率中的关键决定。
更具体地,一个实施例通过(例如,按高速缓存存储介质的高速缓存行或其它粒度)优先选择具有较高可压缩性的数据作为高速缓存策略决定中(或者当数据被高速缓存或从高速缓存驱逐时)的因素来提高利用数据压缩非易失性存储器(例如,SSD)的存储高速缓存的高速缓存命中率。以前,这是不可能的,因为主机中的高速缓存策略逻辑/软件无法知道数据在逐高速缓存行基础(或者其它粒度)上的可压缩性。(可以在诸如本文中论述的那些之类的各种非易失性存储器中实现的)优化的部分包括在压缩过程中的特征,其中主机逻辑/软件例如在每个输入/输出(IO)数据被写入到高速缓存介质时(或者将数据写入到高速缓存介质之前)被明确地给予关于每个输入/输出(IO)数据的可压缩性的信息。因此,主机(或服务器)中的高速缓存策略逻辑/软件可以明确地知道每个高速缓存行的数据的可压缩性,即使实际压缩由非易失性存储器设备(例如,SSD)本身中的硬件执行。然后,高速缓存策略逻辑/软件可以优先选择更可压缩的数据;因此,增加高速缓存中的数据的总体可压缩性。因此,高速缓存可以保存比不使用可压缩性作为因素时它将会保存的高速缓存行更多的高速缓存行,并且因此,在所有其它因素相等的情况下,高速缓存的命中率将会提高。因此,高速缓存行中的数据的可压缩性被用于增强用于决定是否将存储数据移动到高速缓存中或是否从高速缓存移除存储数据的传统因素(举几个例子,顺序性、进程ID、大小、文件类型)。
此外,虽然关于(例如,包括NAND和/或NOR类型的存储器单元的)SSD论述了一些实施例,但是实施例不限于SSD并且可以使用(以不同于SSD但仍然可用于存储的格式的)任何类型的非易失性存储器。(不论以SSD格式还是其它方式使用的)存储介质可以是任何类型的存储介质,包括例如以下中的一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪存、自旋扭矩随机存取存储器(STTRAM)、电阻式随机存取存储器、字节可寻址3维交叉点存储器、PCM(相变存储器)等。并且,可以使用由电池或电容支持以保持数据的任何类型的随机存取存储器(RAM),诸如动态RAM(DRAM)。因此,甚至可以将(例如,由电池或电容支持的)能够在电力故障或电力中断期间保留数据的易失性存储器用于存储高速缓存。
可以在(例如,包括诸如台式机、工作站、服务器、托架***等的非移动计算设备,以及诸如智能电话、平板、UMPC(超移动个人计算机)、膝上型计算机、UltrabookTM计算设备、智能手表、智能眼镜、智能手镯等的移动计算设备的)各种计算***中提供本文中论述的技术,所述各种计算***包括关于图1-6论述的那些。更特别地,图1图示了根据实施例的计算***100的框图。***100可以包括一个或多个处理器102-1至102-N(在本文中一般称为“多个处理器102”或“处理器102”)。处理器102可以经由互连或总线104进行通信。每个处理器可以包括各种组件,为了清楚仅关于处理器102-1论述了其中的一些。因此,其余处理器102-2至102-N中的每一个可以包括关于处理器102-1论述的相同或类似的组件。
在实施例中,处理器102-1可以包括一个或多个处理器核心106-1至106-M(在本文中称为“多个核心106”或更一般地称为“核心106”)、处理器高速缓存108(其在各种实施例中可以是共享高速缓存或私有高速缓存)和/或路由器110。处理器核心106可以在单个集成电路(IC)芯片上实现。此外,芯片可以包括一个或多个共享和/或私有高速缓存(诸如处理器高速缓存108)、总线或互连(诸如总线或互连112)、逻辑120、存储器控制器(诸如关于图4-6论述的那些)或其它组件。
在一个实施例中,路由器110可用于在处理器102-1和/或***100的各种组件之间进行通信。此外,处理器102-1可以包括不止一个路由器110。此外,许多路由器110可以在通信中以使得能实现在处理器102-1内部或外部的各种组件之间的数据路由。
处理器高速缓存108可以存储由处理器102-1的一个或多个组件(诸如核心106)利用的(例如,包括指令的)数据。例如,处理器高速缓存108可以本地地高速缓存存储在存储器114中的数据,以用于由处理器102的组件进行的更快访问。如图1中所示,存储器114可以经由互连104与处理器102通信。在实施例中,处理器高速缓存108(其可以被共享)可以具有各种级别,例如,处理器高速缓存108可以是中级高速缓存和/或末级高速缓存(LLC)。并且,核心106中的每个可以包括一级(LI)处理器高速缓存(116-1)(在本文中一般称为“LI处理器高速缓存116”)。处理器102-1的各种组件可以直接地、通过总线(例如,总线112)和/或存储器控制器或集线器(hub)与处理器高速缓存108通信。
如图1中所示,存储器114可以通过存储器控制器120耦合到***100的其它组件。存储器114包括易失性存储器,并且可以被可交换地称为主存储器。虽然存储器控制器120被示出为耦合在互连104和存储器114之间,但存储器控制器120可以位于***100中的其它地方。例如,在一些实施例中,存储器控制器120或其部分可以被提供在处理器102中的一个内。
***100还包括非易失性(NV)存储(或非易失性存储器(NVM))设备,诸如经由SSD控制器逻辑125耦合到互连104的SSD 130。因此,逻辑125可以控制***100的各种组件对SSD 130的访问。此外,虽然逻辑125被示出为直接耦合到图1中的互连104,但是逻辑125可以替代地经由存储总线/互连(诸如SATA(串行高级技术附件)总线、***组件互连(PCI)(或快速PCI(PCIe)接口)等)与***100的一个或多个其它组件(例如,在存储总线经由比如总线桥接器、(诸如关于图2和4-6论述的)芯片组等的一些其它逻辑耦合到互连104的情况下)通信。此外,在各种实施例中逻辑125可以被并入到存储器控制器逻辑(诸如关于图4-6论述的那些)中或提供在同一集成电路(IC)设备上(例如,在与SSD 130相同的IC设备上,或者在与SSD 130相同的外壳中)。
如图1中所示,***100还包括后备贮存器180,其可以是比存储高速缓存(诸如SSD130)相对更慢的存储设备。因此,后备贮存器180可以包括硬盘驱动器,诸如图4的盘驱动器428、图5的数据记忆装置548,或者更一般地,比存储高速缓存慢的任何其它存储设备。此外,如本文中将例如关于图3A1至图3C进一步论述的,存储高速缓存(例如,SSD 130或本文中论述的另一存储设备,诸如具有电源后备的NVM或非NVM设备)可用于高速缓存存储在后备贮存器180中的数据。
此外,逻辑125和/或SSD 130可以耦合到一个或多个传感器(未示出)以接收(例如,以一个或多个位或信号的形式的)信息来指示所述一个或多个传感器的状态或者由所述一个或多个传感器检测到的值。这(一个或多个)传感器可以被提供邻近于***100(或本文中论述的其它计算***,诸如例如关于包括4-6的其它图所论述的那些)的组件,所述组件包括核心106、互连104或112、处理器102外部的组件、SSD 130、SSD总线、SATA总线、逻辑125等,以感测影响***/平台的功率/热行为的各种因素中的变化,所述各种因素诸如温度、工作频率、工作电压、功耗和/或核心间通信活动等。
如图1中所图示的,***100可以包括高速缓存逻辑160,其可以位于***100中的各种位置(诸如示出的那些位置,包括耦合到互连104、在处理器102内部等)中。如本文中论述的,逻辑160通过使用数据的可压缩性作为高速缓存***的标准来提高存储高速缓存性能。
图2图示了根据实施例的SSD的各种组件的框图。逻辑160可以位于如所论述的图1的***100中的各种位置中以及SSD控制器逻辑125内部。在SSD控制器逻辑125可以经由接口250(例如,SATA、SAS、PCIe等)促进SSD 130与其它***组件之间的通信的同时,控制器逻辑282促进逻辑125与SSD 130内部的组件之间的通信(或SSD 130内部的组件之间的通信)。如图2中所示,控制器逻辑282包括一个或多个处理器核心或处理器284以及存储器控制器逻辑286,并且耦合到随机存取存储器(RAM)288、固件记忆装置290和一个或多个存储器模块或管芯292-1到292n(其可以包括NAND闪存、NOR闪存或其它类型的非易失性存储器)。存储器模块292-1至292-n经由一个或多个存储器通道或总线而耦合到存储器控制器逻辑286。关于图1-6论述的操作中的一个或多个可以由图2的组件中的一个或多个执行,例如,处理器284和/或控制器282可以压缩/解压缩(或以其它方式引起压缩/解压缩)写入到存储器模块292-1至292-n或从存储器模块292-1至292-n读取的数据。并且,图1-6的操作中的一个或多个可以被编程到固件290中。此外,在一些实施例中,(在存在多个存储器模块/介质292-1至292-n的情况下,诸如硬盘驱动器、闪存或本文中论述的其它类型的非易失性存储器)可以使用混合驱动器来代替SSD 130。在使用混合驱动器的实施例中,逻辑160可以存在于与混合驱动器相同的外壳中。
图3A1至C图示了根据一些实施例的方法的流程图。更特别地,图3A1和3A2图示了解决两个类型的读取未命中的方法。图3B1和3B2图示了解决两个类型的写入未命中的方法。图3C图示了根据实施例的在存储高速缓存中提供空闲空间的方法。图3A1至C中示出的方法意图根据一些实施例通过使用数据的可压缩性作为高速缓存分配的标准来提高存储高速缓存性能。在一些实施例中,图1-2和/或4-6的一个或多个组件(诸如逻辑160)执行图3A1-C的一个或多个操作。
参考图1-3A1,在操作302处,响应于在操作301处检测到读取未命中(其中“读取未命中”一般指代一些所请求的数据不在存储高速缓存(例如,SSD 130或其它存储高速缓存,诸如本文中论述的那些)中的指示),从后备贮存器(例如,后备贮存器180)获得所请求的数据。在操作304处,满足读取请求(即,所请求的数据被提供给请求代理)。在操作306处,所请求的数据被存储在存储高速缓存的一个或多个空闲高速缓存行中。在操作308处,接收关于在操作306处写入的数据的压缩信息。压缩信息可以包括数据可压缩的程度的指示(或者替代地,数据的压缩版本相对数据的未压缩版本的大小)。使用此压缩信息作为一个因素,操作310确定是否将数据保存在存储高速缓存的一个或多个高速缓存条目(entry)/行中。因此,高速缓存行中的数据的可压缩性(根据操作308的压缩信息)被用于增强用于决定是在操作312处将数据保存在存储高速缓存中还是在操作314处从存储高速缓存移除数据的传统因素(举几个例子,顺序性、进程ID、请求大小和/或文件类型)。
参考图1-3A2,图3A2的方法应对与图3A1的方法不同类型的读取未命中,因为图3A2的方法不像图3A1的操作306处所做的那样将数据写入到(一个或多个)空闲高速缓存行。替代地,图3A2的方法在操作320处确定是否将所请求的数据存储在存储高速缓存中。此决定使用操作308的数据的可压缩性作为确定是否将数据存储在存储高速缓存的一个或多个高速缓存条目/行中的一个因素。因此,高速缓存行中的数据的可压缩性(根据操作308的压缩信息)被用于增强用于决定是否在操作322处将数据写入在存储高速缓存中的传统因素(举几个例子,顺序性、进程ID、请求大小和/或文件类型)。
参考图1-3B1,在操作332处,响应于在操作330处检测到写入未命中(其中“写入未命中”一般指代写入数据不在存储高速缓存中的指示)。在操作332处,将数据写入到存储高速缓存。在操作334处,接收关于在操作332处写入的数据的压缩信息。压缩信息可以包括数据可压缩的程度的指示(或者替代地,数据的压缩版本相对数据的未压缩版本的大小)。使用此压缩信息作为一个因素,操作336确定是否将数据保存在存储高速缓存的一个或多个高速缓存条目/行中。因此,高速缓存行中的数据的可压缩性(根据操作308的压缩信息)被用于增强用于决定是在操作338处将数据保存在存储高速缓存中还是在操作339处从存储高速缓存移除数据的传统因素(举几个例子,顺序性、进程ID、请求大小和/或文件类型)。
参考图1-3B2,图3B2的方法应对与图3B1的方法不同类型的写入未命中,因为图3B2的方法不像图3B1的操作332处所做的那样将数据写入到(一个或多个)空闲高速缓存行。代之以,图3B2的方法在操作346处确定是否将数据存储在存储高速缓存中。此决定使用操作338的数据的可压缩性作为确定是否将数据存储在存储高速缓存的一个或多个高速缓存条目/行中的一个因素。因此,高速缓存行中的数据的可压缩性(根据操作346的压缩信息)被用于增强用于决定是否在操作348处将数据写入存储高速缓存中的传统因素(举几个例子,顺序性、进程ID、请求大小和/或文件类型)。
图3C图示了根据实施例的从存储高速缓存驱逐或解除分配一个或多个高速缓存行的方法的流程图。在一些实施例中,图3C的方法用于执行分别关于图3A1和3B1论述的操作314和/或339。此外,从存储高速缓存的删除/解除分配/驱逐通常发生在与满足读取未命中或写入未命中相关联的操作(诸如参照图3A1至3B2论述的那些)之后。高速缓存驱逐操作一般发生在达到某高速缓存的“充满”或“空闲空间”阈值时,或否则在确定存储在存储高速缓存中的一些数据如在操作314和/或339中不再需要被高速缓存时。为此,在操作350处,一旦确定要删除(例如,在一个或多个高速缓存行中的)一些高速缓存数据,则操作352接收关于要驱逐的一个或多个高速缓存行的压缩信息作为确定是否在操作354处驱逐(一个或多个)高速缓存行的一个因素。因此,354处的选择操作基于(按照操作352的压缩信息的)数据的可压缩性,其增强了用于决定是否在操作358处从存储高速缓存删除所选择的(一个或多个)行的传统因素(举几个例子,顺序性、进程ID、请求大小和/或文件类型)。
此外,对于当前正在被读取或写入的数据,***决定将为是/否。删除将基于比如LRU(最近最少使用)加上可压缩性信息之类的因素而做出,并且将响应于对空间的需要,并且在此情况下,逻辑将搜索要删除的“最佳”高速缓存行。在各种实施例中,数据可以被高速缓存在专用高速缓存(未示出)中和/或NVM(诸如存储器单元292、SSD 130等)中。并且,可以响应于针对后备贮存器(诸如后备贮存器180、图4的盘驱动器428、图5的数据记忆装置548或(包括例如更慢的SSD或NVM的)比用作存储高速缓存的SSD 130更慢的另一存储设备的读取或写入操作和/或基于周期性调度(例如,响应于定时器的期满)来执行图3A1-3C的方法。周期性调度可以用于自高速缓存的解除分配,而不常用于在高速缓存中进行***/分配的决定。
因此,实施例通过使用高速缓存的“行”中的数据的可压缩性作为决定何时在高速缓存中***/分配/保留行以及何时从高速缓存删除/驱逐行的算法/策略中的因素来提高存储高速缓存的有效性。可以优先选择更可压缩的高速缓存行;因此,增加高速缓存所保存的行的数目。因此,将提高存储子***的总体性能和命中率。在一些实施例中,假设在数据的可压缩性与不久的将来需要数据的可能性之间不存在相关或正相关。
在一些实现中,当被查询时,NVM(例如,SSD 130和/或逻辑160)返回与介质上的所有数据的聚合可压缩性成比例地增大/收缩的大小。当大小增大时,可以向高速缓存添加附加的高速缓存行。当大小收缩时,从高速缓存移除行。因此,一些实施例提供改进的实现,因为通过使用单个高速缓存行的可压缩性作为标准,可以优先选择更可压缩的高速缓存行作为高速缓存***/保留和/或删除策略中的因素,并因此可以提高聚合数据的总体可压缩性,导致更多的高速缓存行被存储。
此外,在实施例中,(例如,在图1-6的处理器102/402/502/620/630中实现的)主机高速缓存策略可能知道用于其放置算法/逻辑(例如,逻辑160)的压缩高速缓存行的大小。此信息可以与关于图3A1-3C论述的高速缓存行可压缩性相同。此外,一些实施例可以用在存储高速缓存中以提高性能,因此该提高是直接可市场化的。替代地,它可以被用作使用较小的和/或较低成本的NVM/SSD来实现与较大的、较昂贵的高速缓存类似的性能的方式。
图4图示了根据实施例的计算***400的框图。计算***400可以包括经由互连网络(或总线)404通信的一个或多个中央处理单元(CPU)402或处理器。处理器402可以包括通用处理器、网络处理器(其处理通过计算机网络403传送的数据)、应用处理器(诸如在蜂窝电话、智能电话等中使用的那些)或其它类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。可以利用各种类型的计算机网络403,其包括有线(例如,以太网、吉比特、光纤等)网络或无线网络(诸如蜂窝、3G(第三代蜂窝电话技术或第三代无线格式(UWCC))、4G、低功率嵌入式(LPE)等)。此外,处理器402可以具有单或多核心设计。具有多核心设计的处理器402可以将不同类型的处理器核心整合在同一集成电路(IC)管芯上。并且,具有多核心设计的处理器402可以被实现为对称的或非对称的多处理器。
在实施例中,处理器402中的一个或多个可以与图1的处理器102相同或类似。例如,处理器402中的一个或多个可以包括核106中的一个或多个和/或处理器高速缓存108。并且,关于图1-3C论述的操作可以由***400的一个或多个组件执行。
芯片组406也可以与互连网络404通信。芯片组406可以包括图形和存储器控制集线器(GMCH)408。GMCH 408可以包括与存储器114通信的存储器控制器410(在实施例中,其可以与图1的存储器控制器120相同或类似)。存储器114可以存储数据,所述数据包括由CPU402或包括在计算***400中的任何其它设备执行的指令序列。并且,***400包括逻辑125、SSD 130和/或逻辑160(其可以经由如所图示的总线422,经由诸如404之类的其它互连而耦合到***400,其中在各种实施例中逻辑125被并入到芯片组406等中)。在一个实施例中,存储器114可以包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它类型的存储设备。也可以利用非易失性存储器,诸如硬盘驱动器、闪存等,包括本文中论述的任何NVM。附加设备可以经由互连网络404进行通信,诸如多个CPU和/或多个***存储器。
GMCH 408也可以包括与图形加速器416通信的图形接口414。在一个实施例中,图形接口414可以经由加速图形端口(AGP)或***组件互连(PCI)(或快速PCI(PCIe)接口)与图形加速器416进行通信。在实施例中,显示器417(诸如平板显示器、触摸屏等)可以通过例如信号转换器与图形接口414通信,所述信号转换器将存储在诸如视频存储器或***存储器之类的存储设备中的图像的数字表示转化成由显示器解释和显示的显示信号。显示设备产生的显示信号可以在被显示器417解释并随后显示在显示器417上之前经过各种控制设备。
集线器接口418可以允许GMCH 408和输入/输出控制集线器(ICH)420进行通信。ICH 420可以提供到与计算***400通信的I/O设备的接口。ICH 420可以通过诸如***组件互连(PCI)桥接器、通用串行总线(USB)控制器或其它类型的***桥接器或控制器之类的***桥接器(或控制器)424与总线422通信。桥接器424可以提供CPU 402和***设备之间的数据路径。可以利用其它类型的拓扑。并且,多个总线可以例如通过多个桥接器或控制器与ICH 420通信。此外,在各种实施例中,与ICH 420通信的其它***设备可以包括集成驱动电子设备(IDE)或(一个或多个)小型计算机***接口(SCSI)硬盘驱动器、(一个或多个)USB端口、键盘、鼠标、(一个或多个)并行端口、(一个或多个)串行端口、(一个或多个)软盘驱动器、数字输出支持(例如,数字视频接口(DVI))或其它设备。
总线422可以与音频设备426、一个或多个盘驱动器428、以及网络接口设备430(其例如经由有线或无线接口与计算机网络403通信)通信。如所示,网络接口设备430可以耦合到天线431以(例如,经由电气和电子工程师协会(IEEE)802.11接口(包括IEEE 802.11 a/b/g/n/ac等)、蜂窝接口、3G、4G、LPE等)无线地与网络403通信。其它设备可以经由总线422进行通信。并且,在一些实施例中,各种组件(诸如网络接口设备430)可以与GMCH 408通信。此外,处理器402和GMCH 408可以组合以形成单个芯片。此外,在其它实施例中,图形加速器416可以被包括在GMCH 408内。
此外,计算***400可以包括易失性和/或非易失性存储器(或记忆装置)。例如,非易失性存储器可以包括以下中的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、盘驱动器(例如428)、软盘、紧致盘ROM(CD-ROM)、数字多用途盘(DVD)、闪存、磁光盘或能够存储电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。
图5图示了根据实施例的以点对点(PtP)配置布置的计算***500。特别地,图5示出了其中处理器、存储器和输入/输出设备通过多个点对点接口互连的***。关于图1-4论述的操作可以由***500的一个或多个组件执行。
如图5中所图示的,***500可以包括若干处理器,为了清楚而仅示出了其中的两个处理器502和504。处理器502和504可以各自包括本地存储器控制器集线器(MCH)506和508,以使得能实现与存储器510和512的通信。存储器510和/或512可以存储各种数据,诸如关于图1和/或4的存储器114论述的那些。并且,在一些实施例中,MCH 506和508可以包括存储器控制器120。此外,***500包括逻辑125、SSD 130和/或逻辑160(其可以经由诸如所图示的总线540/544、经由到(一个或多个)处理器502/504或芯片组520的其它点对点连接而耦合到***500,其中在各种实施例中逻辑125被并入芯片组520等中)。
在实施例中,处理器502和504可以是关于图4论述的处理器402中的处理器。处理器502和504可以分别使用PtP接口电路516和518经由点对点(PtP)接口514交换数据。并且,处理器502和504可以各自使用点对点接口电路526、528、530和532经由单独的PtP接口522和524与芯片组520交换数据。芯片组520可以进一步例如使用PtP接口电路537经由高性能图形接口536与高性能图形电路534交换数据。如关于图4所论述的,在一些实施例中,图形接口536可以耦合到显示设备(例如,显示器417)。
在一个实施例中,图1的核心106中的一个或多个和/或处理器高速缓存108可以位于处理器502和504(未示出)内。然而,其它实施例可以存在于图5的***500内的其它电路、逻辑单元或设备中。此外,其它实施例可以分布遍及图5中图示的若干电路、逻辑单元或设备。
芯片组520可以使用PtP接口电路541与总线540通信。总线540可以具有与其通信的一个或多个设备,诸如总线桥接器542和I/O设备543。经由总线544,总线桥接器542可以与其它设备进行通信,所述其它设备诸如键盘/鼠标545、通信设备546(诸如调制解调器、网络接口设备或其它通信设备,其可以如关于网络接口设备430所论述的例如包括经由天线431与计算机网络403通信)、音频I/O设备和/或数据存储设备548。数据存储设备548可以存储可由处理器502和/或504执行的代码549。
在一些实施例中,本文中论述的组件中的一个或多个可以被具体化为片上***(SOC)设备。图6图示了根据实施例的SOC封装的框图。如图6中所图示的,SOC 602包括一个或多个中央处理单元(CPU)核心620、一个或多个图形处理器单元(GPU)核心630、输入/输出(I/O)接口640和存储器控制器642。SOC封装602的各种组件可以耦合到诸如本文中关于其它图所论述的互连或总线。并且,SOC封装602可以包括更多或更少组件,诸如本文中关于其它图所论述的那些。进一步地,SOC封装620的每个组件可以包括一个或多个其它组件,例如,如在本文中关于其它附图所论述的。在一个实施例中,SOC封装602(及其组件)被提供在一个或多个集成电路(IC)管芯上,例如其被封装到单个半导体器件上。
如图6中所图示的,SOC封装602经由存储器控制器642耦合到存储器660(其可以与本文中关于其它图所论述的存储器类似或相同)。在实施例中,存储器660(或其一部分)可以被整合在SOC封装602上。
I/O接口640可以例如经由诸如本文中关于其它图所论述的互连和/或总线而耦合到一个或多个I/O设备670。(一个或多个)I/O设备670可以包括键盘、鼠标、触摸板、显示器、图像/视频捕获设备(诸如相机或摄录像机/录像机)、触摸屏、扬声器等中的一个或多个。此外,在实施例中,SOC封装602可以包括/整合逻辑125。替代地,逻辑125可以被提供在SOC封装602的外部(即,作为分立逻辑)。
以下示例关于其它实施例。示例1包括一种装置,所述装置包括:存储器,用以响应于数据可压缩的确定而存储与数据的压缩版本对应的所述一个或多个高速缓存行;以及逻辑,用以至少部分地基于数据的可压缩性的指示来确定所述一个或多个高速缓存行是否要被保留或***在存储器中。示例2包括示例1的装置,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之前被存储在存储器中。示例3包括示例1的装置,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之后被存储在存储器中。示例4包括示例1的装置,其包括用以确定是否要移除所述一个或多个高速缓存行的逻辑。示例5包括示例1的装置,其包括用以至少部分地基于数据的可压缩性的指示来确定是否要移除所述一个或多个高速缓存行的逻辑。示例6包括示例1的装置,其中数据的可压缩性要至少部分地基于数据的未压缩版本的大小和数据的压缩版本的大小来确定。示例7包括示例1的装置,其中存储器要包括非易失性存储器,所述非易失性存储器包括以下中的一个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪存、自旋扭矩转移随机存取存储器(STTRAM)、电阻式随机存取存储器、相变存储器(PCM)、NAND、3维NAND和字节可寻址的3维交叉点存储器。示例8包括示例1的装置,其中SSD要包括存储器和逻辑。示例9包括示例1的装置,其中存储器要存储未压缩数据。
示例10包括一种方法,所述方法包括:响应于数据可压缩的确定,将与数据的压缩版本对应的一个或多个高速缓存行存储在存储器中;以及至少部分地基于数据的可压缩性的指示,确定所述一个或多个高速缓存行是否要被保留或***在存储器中。示例11包括示例10的方法,进一步包括在确定所述一个或多个高速缓存行是否要被保留在存储器中之前,将所述一个或多个高速缓存行存储在存储器中。示例12包括示例10的方法,进一步包括在确定所述一个或多个高速缓存行是否要被保留在存储器中之后,将所述一个或多个高速缓存行存储在存储器中。示例13包括示例10的方法,进一步包括确定是否要移除所述一个或多个高速缓存行。示例14包括示例10的方法,进一步包括至少部分地基于数据的可压缩性的指示来确定是否要移除所述一个或多个高速缓存行。示例15包括示例10的方法,进一步包括至少基于数据的未压缩版本的大小和数据的压缩版本的大小来确定数据的可压缩性。示例16包括示例9的方法,进一步包括将未压缩数据存储在存储器中。示例17包括示例10的方法,其中存储器包括非易失性存储器,所述非易失性存储器包括以下中的一个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪存、自旋扭矩转移随机存取存储器(STTRAM)、电阻式随机存取存储器、相变存储器(PCM)、NAND、3维NAND和字节可寻址的3维交叉点存储器。
示例18包括一种***,所述***包括:存储器;以及至少一个处理器核心,用以访问存储器;所述存储器用以响应于数据可压缩的确定而存储与数据的压缩版本对应的一个或多个高速缓存行;逻辑,用以至少部分地基于数据的可压缩性的指示来确定所述一个或多个高速缓存行是否要被保留或***在存储器中。示例19包括示例18的***,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之前被存储在存储器中。示例20包括示例18的***,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之后被存储在存储器中。示例21包括示例18的***,其包括用以至少部分地基于数据的可压缩性的指示来确定是否要移除所述一个或多个高速缓存行的逻辑。示例22包括示例18的***,其中数据的可压缩性要至少部分地基于数据的未压缩版本的大小和数据的压缩版本的大小来确定。示例23包括示例18的***,其中存储器要存储未压缩数据。示例24包括示例18的***,其中存储器要包括非易失性存储器,所述非易失性存储器包括以下中的一个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪存、自旋扭矩转移随机存取存储器(STTRAM)、电阻式随机存取存储器、相变存储器(PCM)、NAND、3维NAND和字节可寻址的3维交叉点存储器。示例25包括示例18的***,其中SSD要包括存储器和逻辑。
示例26包括一种包括一个或多个指令的计算机可读介质,所述一个或多个指令当在处理器上被执行时将处理器配置成实行一个或多个操作来:响应于数据可压缩的确定,将与数据的压缩版本对应的一个或多个高速缓存行存储在存储器中;以及至少部分地基于数据的可压缩性的指示,确定所述一个或多个高速缓存行是否要被保留或***在存储器中。示例27包括示例26的计算机可读介质,进一步包括一个或多个指令,其当在处理器上被执行时将处理器配置成实行一个或多个操作以在确定所述一个或多个高速缓存行是否要被保留在存储器中之前将所述一个或多个高速缓存行存储在存储器中。示例28包括示例26的计算机可读介质,进一步包括一个或多个指令,其当在处理器上被执行时将处理器配置成实行一个或多个操作以在确定所述一个或多个高速缓存行是否要被保留在存储器中之后将所述一个或多个高速缓存行存储在存储器中。
示例29包括一种装置,所述装置包括用以执行如在任何前述示例中阐述的方法的部件。示例30包括机器可读记忆装置,其包括机器可读指令,所述机器可读指令在被执行时实施如在任何前述示例中阐述的方法或实现如在任何前述示例中阐述的装置。
在各种实施例中,本文中例如关于图1-6论述的操作可以被实现为硬件(例如,电路)、软件、固件、微代码或其组合,其可以被提供为计算机程序产品,所述计算机程序产品例如包括在其上存储了指令(或软件程序)的有形(例如,非瞬时)机器可读或计算机可读介质,所述指令(或软件程序)被用于对计算机进行编程以执行本文中论述的过程。并且,作为示例,术语“逻辑”可以包括软件、硬件或软件和硬件的组合。机器可读介质可以包括存储设备,诸如关于图1-6所论述的那些。
此外,这样的有形计算机可读介质可以被作为计算机程序产品而下载,其中可以经由通信链路(例如,总线、调制解调器或网络连接)通过(诸如在载波或其它传播介质中的)数据信号的方式将程序从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
在说明书中对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构或特性可以被包括在至少一个实现中。在说明书中的各种地方中的短语“在一个实施例中”的出现可能或可能不都指代同一实施例。
并且,在说明书和权利要求书中,可以使用术语“耦合”和“连接”连同其派生词。在一些实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理或电气接触。“耦合”可以意指两个或更多个元件直接物理或电气接触。然而,“耦合”也可以意指两个或更多个元件可以彼此不直接接触,但是仍然可以彼此协作或相互作用。
因此,虽然已经以特定于结构特征和/或方法动作的语言描述了实施例,但是要理解,所要求保护的主题可以不限于所描述的具体特征或动作。相反,具体特征和动作被公开作为实现所要求保护的主题的样本形式。
Claims (25)
1.一种装置,包括:
存储器,用以响应于数据可压缩的确定而存储与数据的压缩版本对应的一个或多个高速缓存行;以及
逻辑,用以至少部分地基于数据的可压缩性的指示来确定所述一个或多个高速缓存行是否要被保留或***在存储器中。
2.权利要求1的装置,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之前被存储在存储器中。
3.权利要求1的装置,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之后被存储在存储器中。
4.权利要求1的装置,包括用以确定是否要移除所述一个或多个高速缓存行的逻辑。
5.权利要求1的装置,包括用以至少部分地基于数据的可压缩性的指示来确定是否要移除所述一个或多个高速缓存行的逻辑。
6.权利要求1的装置,其中数据的可压缩性要至少部分地基于数据的未压缩版本的大小和数据的压缩版本的大小来确定。
7.权利要求1的装置,其中存储器要包括非易失性存储器,所述非易失性存储器包括以下中的一个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪存、自旋扭矩转移随机存取存储器(STTRAM)、电阻式随机存取存储器、相变存储器(PCM)、NAND、3维NAND和字节可寻址的3维交叉点存储器。
8.权利要求1的装置,其中SSD要包括存储器和逻辑。
9.权利要求1的装置,其中存储器要存储未压缩数据。
10.一种方法,包括:
响应于数据可压缩的确定,将与数据的压缩版本对应的一个或多个高速缓存行存储在存储器中;以及
至少部分地基于数据的可压缩性的指示,确定所述一个或多个高速缓存行是否要被保留或***在存储器中。
11.权利要求10的方法,进一步包括在确定所述一个或多个高速缓存行是否要被保留在存储器中之前,将所述一个或多个高速缓存行存储在存储器中。
12.权利要求10的方法,进一步包括在确定所述一个或多个高速缓存行是否要被保留在存储器中之后,将所述一个或多个高速缓存行存储在存储器中。
13.权利要求10的方法,进一步包括确定是否要移除所述一个或多个高速缓存行。
14.权利要求10的方法,进一步包括至少部分地基于数据的可压缩性的指示来确定是否要移除所述一个或多个高速缓存行。
15.权利要求10的方法,进一步包括至少基于数据的未压缩版本的大小和数据的压缩版本的大小来确定数据的可压缩性。
16.权利要求10的方法,进一步包括将未压缩数据存储在存储器中。
17.权利要求10的方法,其中存储器包括非易失性存储器,所述非易失性存储器包括以下中的一个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪存、自旋扭矩转移随机存取存储器(STTRAM)、电阻式随机存取存储器、相变存储器(PCM)、NAND、3维NAND和字节可寻址的3维交叉点存储器。
18.一种***,包括:
存储器;以及
至少一个处理器核心,用以访问存储器;
所述存储器用以响应于数据可压缩的确定而存储与数据的压缩版本对应的一个或多个高速缓存行;
逻辑,用以至少部分地基于数据的可压缩性的指示来确定所述一个或多个高速缓存行是否要被保留或***在存储器中。
19.权利要求18的***,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之前被存储在存储器中。
20.权利要求18的***,其中所述一个或多个高速缓存行要在确定所述一个或多个高速缓存行是否要被保留在存储器中之后被存储在存储器中。
21.权利要求18的***,包括用以至少部分地基于数据的可压缩性的指示来确定是否要移除所述一个或多个高速缓存行的逻辑。
22.权利要求18的***,其中数据的可压缩性要至少部分地基于数据的未压缩版本的大小和数据的压缩版本的大小来确定。
23.权利要求18的***,其中存储器要存储未压缩数据。
24.一种包括一个或多个指令的计算机可读介质,所述一个或多个指令当在处理器上被执行时将处理器配置成实行权利要求10至17中的任一个的一个或多个操作。
25.一种装置,包括用以执行如在权利要求10至17中的任一个中阐述的方法的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/672093 | 2015-03-27 | ||
US14/672,093 US20160283390A1 (en) | 2015-03-27 | 2015-03-27 | Storage cache performance by using compressibility of the data as a criteria for cache insertion |
PCT/US2016/018517 WO2016160164A1 (en) | 2015-03-27 | 2016-02-18 | Improving storage cache performance by using compressibility of the data as a criteria for cache insertion |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430554A true CN107430554A (zh) | 2017-12-01 |
CN107430554B CN107430554B (zh) | 2022-08-16 |
Family
ID=56975877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680018928.XA Active CN107430554B (zh) | 2015-03-27 | 2016-02-18 | 通过使用数据的可压缩性作为高速缓存***的标准来提高存储高速缓存性能 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160283390A1 (zh) |
KR (2) | KR20240033123A (zh) |
CN (1) | CN107430554B (zh) |
WO (1) | WO2016160164A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032970A (zh) * | 2018-06-16 | 2018-12-18 | 温州职业技术学院 | 一种基于lru算法的动态缓存方法 |
CN111104052A (zh) * | 2018-10-26 | 2020-05-05 | 伊姆西Ip控股有限责任公司 | 存储数据的方法、装置和计算机程序产品 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US10061514B2 (en) | 2015-04-15 | 2018-08-28 | Formulus Black Corporation | Method and apparatus for dense hyper IO digital retention |
KR20190040614A (ko) * | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
US10572186B2 (en) | 2017-12-18 | 2020-02-25 | Formulus Black Corporation | Random access memory (RAM)-based computer systems, devices, and methods |
US10776268B2 (en) | 2018-04-19 | 2020-09-15 | Western Digital Technologies, Inc. | Priority addresses for storage cache management |
US10838727B2 (en) * | 2018-12-14 | 2020-11-17 | Advanced Micro Devices, Inc. | Device and method for cache utilization aware data compression |
WO2020142431A1 (en) | 2019-01-02 | 2020-07-09 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
KR102175094B1 (ko) | 2020-06-04 | 2020-11-05 | 최훈권 | 병렬처리 압축 기반 데이터 중복성 제거를 통한 고효율 데이터 저장 시스템 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010001872A1 (en) * | 1998-06-10 | 2001-05-24 | International Business Machines Corp. | Data caching with a partially compressed cache |
US20020144062A1 (en) * | 2001-03-29 | 2002-10-03 | Hitachi, Ltd. | Hardware prefetch system |
US20050071566A1 (en) * | 2003-09-30 | 2005-03-31 | Ali-Reza Adl-Tabatabai | Mechanism to increase data compression in a cache |
US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
CN1853170A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 压缩高速缓存内数据的机制 |
CN101409675A (zh) * | 2007-09-28 | 2009-04-15 | 英特尔公司 | 网络分组净荷压缩 |
CN101640794A (zh) * | 2008-07-31 | 2010-02-03 | 鸿富锦精密工业(深圳)有限公司 | 影像资料压缩***及其方法 |
CN103546158A (zh) * | 2012-04-04 | 2014-01-29 | 英特尔公司 | 压缩深度高速缓存 |
CN103685179A (zh) * | 2012-09-12 | 2014-03-26 | ***通信集团公司 | 一种内容压缩方法、装置及*** |
CN103744627A (zh) * | 2014-01-26 | 2014-04-23 | 武汉英泰斯特电子技术有限公司 | 对实时采集的数据压缩存储的方法及*** |
CN103838766A (zh) * | 2012-11-26 | 2014-06-04 | 深圳市腾讯计算机***有限公司 | 防空缓存方法和装置 |
CN103902467A (zh) * | 2012-12-26 | 2014-07-02 | 华为技术有限公司 | 压缩内存访问控制方法、装置及*** |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
US20150058576A1 (en) * | 2013-08-20 | 2015-02-26 | International Business Machines Corporation | Hardware managed compressed cache |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020014406A1 (en) * | 1998-05-21 | 2002-02-07 | Hiroshi Takashima | Aluminum target material for sputtering and method for producing same |
KR100829570B1 (ko) * | 2006-10-20 | 2008-05-14 | 삼성전자주식회사 | 크로스 포인트 메모리용 박막 트랜지스터 및 그 제조 방법 |
US8631203B2 (en) * | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US9003104B2 (en) * | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
CN103797470B (zh) * | 2011-09-16 | 2017-02-15 | 日本电气株式会社 | 存储*** |
-
2015
- 2015-03-27 US US14/672,093 patent/US20160283390A1/en not_active Abandoned
-
2016
- 2016-02-18 KR KR1020247006590A patent/KR20240033123A/ko not_active Application Discontinuation
- 2016-02-18 CN CN201680018928.XA patent/CN107430554B/zh active Active
- 2016-02-18 KR KR1020177023488A patent/KR20170129701A/ko not_active IP Right Cessation
- 2016-02-18 WO PCT/US2016/018517 patent/WO2016160164A1/en active Application Filing
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010001872A1 (en) * | 1998-06-10 | 2001-05-24 | International Business Machines Corp. | Data caching with a partially compressed cache |
US20020144062A1 (en) * | 2001-03-29 | 2002-10-03 | Hitachi, Ltd. | Hardware prefetch system |
US20050071566A1 (en) * | 2003-09-30 | 2005-03-31 | Ali-Reza Adl-Tabatabai | Mechanism to increase data compression in a cache |
CN1853170A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 压缩高速缓存内数据的机制 |
US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
CN101409675A (zh) * | 2007-09-28 | 2009-04-15 | 英特尔公司 | 网络分组净荷压缩 |
CN101640794A (zh) * | 2008-07-31 | 2010-02-03 | 鸿富锦精密工业(深圳)有限公司 | 影像资料压缩***及其方法 |
CN103546158A (zh) * | 2012-04-04 | 2014-01-29 | 英特尔公司 | 压缩深度高速缓存 |
CN103685179A (zh) * | 2012-09-12 | 2014-03-26 | ***通信集团公司 | 一种内容压缩方法、装置及*** |
CN103838766A (zh) * | 2012-11-26 | 2014-06-04 | 深圳市腾讯计算机***有限公司 | 防空缓存方法和装置 |
CN103902467A (zh) * | 2012-12-26 | 2014-07-02 | 华为技术有限公司 | 压缩内存访问控制方法、装置及*** |
US20150058576A1 (en) * | 2013-08-20 | 2015-02-26 | International Business Machines Corporation | Hardware managed compressed cache |
CN103744627A (zh) * | 2014-01-26 | 2014-04-23 | 武汉英泰斯特电子技术有限公司 | 对实时采集的数据压缩存储的方法及*** |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
Non-Patent Citations (1)
Title |
---|
唐思成: "基于动态预解压方法的嵌入式内存压缩技术及实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032970A (zh) * | 2018-06-16 | 2018-12-18 | 温州职业技术学院 | 一种基于lru算法的动态缓存方法 |
CN111104052A (zh) * | 2018-10-26 | 2020-05-05 | 伊姆西Ip控股有限责任公司 | 存储数据的方法、装置和计算机程序产品 |
CN111104052B (zh) * | 2018-10-26 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 用于存储数据的方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20170129701A (ko) | 2017-11-27 |
US20160283390A1 (en) | 2016-09-29 |
WO2016160164A1 (en) | 2016-10-06 |
KR20240033123A (ko) | 2024-03-12 |
CN107430554B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430554A (zh) | 通过使用数据的可压缩性作为高速缓存***的标准来提高存储高速缓存性能 | |
CN107466418B (zh) | 用于多级别单元模式非易失性存储器的成本优化单级别单元模式非易失性存储器 | |
CN108351813B (zh) | 用于在非易失性存储器快速(NVMe)控制器的不同网络地址上使能个别的NVMe输入/输出(IO)队列的方法和装置 | |
TWI494764B (zh) | 用於壓縮的及密集的虛擬記憶體之方法及裝置 | |
KR102553539B1 (ko) | 고체 상태 드라이브에서 가비지 수집 리소스 할당을 적응시키는 메커니즘 | |
US10754785B2 (en) | Checkpointing for DRAM-less SSD | |
US9841920B2 (en) | Heterogeneous memory die stacking for energy efficient computing | |
KR20130031046A (ko) | 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 | |
US9818458B1 (en) | Techniques for entry to a lower power state for a memory device | |
CN105630700B (zh) | 一种具有二级缓存结构的存储***及读写方法 | |
CN108710583A (zh) | Ssd写缓存区的管理方法、装置、计算机设备及介质 | |
US9910783B2 (en) | Implementing selective cache injection | |
US20140164713A1 (en) | Bypassing Memory Requests to a Main Memory | |
WO2019090493A1 (zh) | 内存块回收方法和装置 | |
CN102799390B (zh) | 能耗感知的协同式自适应预取方法和装置 | |
Chen et al. | Unified non-volatile memory and NAND flash memory architecture in smartphones | |
CN115794682A (zh) | 缓存替换方法及装置、电子设备、存储介质 | |
US20160378151A1 (en) | Rack scale architecture (rsa) and shared memory controller (smc) techniques of fast zeroing | |
US8380962B2 (en) | Systems and methods for efficient sequential logging on caching-enabled storage devices | |
CN103488582B (zh) | 写高速缓冲存储器的方法及装置 | |
CN104252423A (zh) | 基于多内核处理器的一致性处理方法和装置 | |
CN104025198B (zh) | 相变存储器与开关(pcms)写错误检测 | |
CN105608014B (zh) | 一种使用mram的存储设备 | |
CN105653468B (zh) | 一种使用mram的存储设备 | |
CN105701060A (zh) | 基于fpga的高速实时数据记录*** |
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 |