CN114746850A - 提供动态随机存取存储器高速缓存作为第二类型存储器 - Google Patents
提供动态随机存取存储器高速缓存作为第二类型存储器 Download PDFInfo
- Publication number
- CN114746850A CN114746850A CN202080083166.8A CN202080083166A CN114746850A CN 114746850 A CN114746850 A CN 114746850A CN 202080083166 A CN202080083166 A CN 202080083166A CN 114746850 A CN114746850 A CN 114746850A
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- dram
- data
- type
- 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.)
- Pending
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/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
- 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
-
- 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/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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于由处理器在计算系统中提供动态随机存取存储器(“DRAM”)高速缓存作为第二类型存储器的各种实施例。可使用DRAM的一个或多个空闲位、数据压缩操作或其组合来清除存储器行中的选定量的字节。高速缓存目录和数据可以存储在存储器行中。DRAM高速缓存被配置为第二类型存储器的高速缓存。
Description
技术领域
本发明一般涉及计算系统,并且更具体地,涉及使用一个或多个计算处理器提供动态随机存取存储器(“DRAM”)作为第二类型存储器的高速缓存的各种实施例。
背景技术
在当今社会,计算机系统是常见的。计算机系统可以在工作场所、家庭或学校中找到。计算机系统可以包括数据存储系统或磁盘存储系统以处理和存储数据。近年来,软件技术和硬件技术两者都经历了惊人的进步。利用新技术,添加了越来越多的功能,并且为这些计算机系统的使用提供了更大的便利。现今要处理的信息量大大增加。因此,处理、存储和/或检索各种信息量是要解决的关键问题。
发明内容
示出了用于由处理器提供动态随机存取存储器(“DRAM”)高速缓存作为计算系统中的第二类型存储器的各种实施例。可使用DRAM的一个或多个空闲位、数据压缩操作或其组合来清除存储器行中的存储器的选定量的字节。高速缓存目录和数据可以存储在存储器行中。DRAM高速缓存被配置作为第二类型存储器的高速缓存。
附图说明
为了容易地理解本发明的优点,将通过参考在附图中示出的具体实施例来呈现对以上简要描述的本发明的更具体的描述。应当理解,这些附图仅描述了本发明的典型实施例,因此不应被认为是对其范围的限制,将通过使用附图来描述和解释本发明的附加特征和细节,其中:
图1是描绘根据本发明实施例的示例性云计算节点的框图;
图2是描绘根据本发明实施例的示例性云计算环境的附加框图;
图3是描绘根据本发明实施例的抽象模型层的附加框图;
图4A-图4C是描绘其中可实现本发明的各方面的作为第二类型存储器的动态随机存取存储器(“DRAM”)高速缓存的基本系统的操作的附加框图;
图5A-图5B是描绘根据本发明的各方面的DRAM高速缓存一对二(“1到2”)路和一对四(“1到4”)路组关联高速缓存的框图;
图6是描绘可以实现本发明的各方面的作为第二类型存储器的动态随机存取存储器(“DRAM”)高速缓存的各种选项的操作的附加框图;
图7是描绘根据本发明的各方面的一阶性能估计的附加框图;以及
图8是描绘在可实现本发明的各方面的计算系统中提供动态随机存取存储器(“DRAM”)高速缓存作为第二类型存储器的示例性方法的流程图。
具体实施方式
计算环境可以包括主存储装置(也称为主存储器)以及辅存储装置。与诸如存储级的存储器的辅助存储装置相比,主存储装置被认为是快速访问存储装置。此外,主存储装置的寻址被认为比寻址存储级存储器更简单。存储级存储器是传统主存储装置之外的外部存储空间,其提供比直接存取存储设备更快的存取。存储级存储器可以被实现为经由若干输入/输出(I/O)适配器连接到计算系统的固态设备的组,该I/O适配器用于将I/O设备的技术映射到(一个或多个)中央处理单元的存储器总线。
另外,存储器设备用于各种各样的应用中,包括计算机系统。包含微处理器或类似设备的计算机系统和其它电子设备通常包括系统存储器,系统存储器通常使用动态随机存取存储器(DRAM)来实施。因此,希望使用DRAM作为第二类型存储器的高速缓存。第二类型存储器可以是较慢、较高容量和/或廉价的DRAM。第二类型存储器也可以是一些其它类型的存储器,例如非易失性存储器(“NVM”)闪存、相变材料(“PCM”)和其它新兴存储器。在一个方面中,新兴存储器具有高容量,但通常比DRAM慢(延迟、带宽)。因此,本发明使用DRAM作为高速缓存来减轻第二(“第二”)类型存储器的较低性能。因此,本发明使用DRAM作为第二类型存储器的高速缓存解决了高速缓存需要目录(例如,标签阵列)的挑战/问题,但是由于目录挑战,当前技术水平的目录大小限制了高速缓存大小。
将DRAM用作第二类型存储器的高速缓存具有额外的挑战/问题,其中添加目录需要显著的资源消耗、设计和工程工作,同时影响处理器和存储器两者设计和调度。因此,本发明的使用消除了此第二挑战/问题,因为本发明消除了对于目录的DRAM中的附加位的需要。空闲位,例如双倍数据速率5同步(“DD5”)DRAM中的空闲位,是高需求的,因此通常为其它目的而保留,并且本发明消除了对这些空闲位的需要。而且,根据本发明,不需要改变处理器“嵌套”-该嵌套是核和存储器之间的所有逻辑。
因此,本发明提供一种DRAM高速缓存作为计算系统中的第二类型存储器。可使用DRAM的一个或多个空闲位、数据压缩操作或其组合来清除存储器行中的存储器的选定量的字节。高速缓存目录和数据可以存储在存储器行中。DRAM高速缓存被配置作为第二类型存储器的高速缓存。
在一个方面中,本发明可以利用数据压缩操作释放128字节存储器行中的至少4字节的空间。在另一实施例中,如果在DRAM中,例如在DDR5DRAM中空闲位可用,则数据压缩可能是不必要的。高速缓存目录和数据可以置于相同的存储器行中。另外,整个DRAM和/或DRAM的选定数量可以变成SCM/慢速DRAM的高速缓存,其平均带宽/延迟与DRAM的平均带宽/延迟类似,并且容量将与SCM/慢速DRAM的容量类似。计算机系统高速缓存的当前技术状态使用称为“N路”组-关联性的概念,其中每个存储器行可以灵活地存在于高速缓存中的N个位置中的一个位置,其中N是正整数(例如,1、2、3等)。较大的N意味着在高速缓存中寻找行的位置的灵活性较大。因此,高度关联的高速缓存在寻找存储器行的位置方面具有更大的灵活性,但是实施起来更复杂。直接映射的高速缓存意味着存储行只能处于高速缓存中的一个位置,因此在高速缓存中寻找存储器行的位置方面不太灵活,但更容易实施。
在一个方面中,本发明,取决于数据可压缩性,要么是直接映射的(1-路)DRAM高速缓存,要么是由于压缩,2-路组关联的高速缓存可以用包含1或2个高速缓存行中的每个行来实施。本发明使用128字节大小的高速缓存行,与现有技术的处理器高速缓存的状态相同。高速缓存和主存储器之间的高速缓存行以128字节的相同高速缓存行粒度交换。在本发明的一个方面中,由于本发明是一种全硬件解决方案,因此,用于实施高速缓存的计算系统软件支持是不必要的。因此,本发明提供了优于现有技术解决方案的当前状态的优点,现有技术解决方案1)使用基于页的方法,其要求显著的软件开发,2)具有性能损失,因为即使当需要在页中访问单个字节时,计算系统也必须在DRAM和SCM/慢DRAM之间移动整个数据页(64KB)。相反,本发明仅移动128字节,因此减少了存储器总线带宽消耗。由于硬件解决方案,DRAM高速缓存对于任何软件是透明的,例如,管理程序、操作系统,而不依赖于任何软件团体。
在另一方面,本发明提供可被配置为SCM的高速缓存的DRAM(存储级存储器;假设系统DRAM和第二类型存储器位于单独的存储器通道上(例如,开放一致加速器处理器接口“OCAPI”)的第二类型存储器和/或附接到DRAM和SCM两者的存储器缓冲器。在一个方面中,SCM的DRAM高速缓存可以以与第二类型存储器类似的成本和容量来执行(例如,以32TB SCM作为后备的4太字节“TB”DRAM高速缓存(其中延迟和带宽平均更接近32TB DRAM))。
本发明不需要对DRAM或SCM组织进行改变,例如1)与基于DDR4、DDR5、HBM和任何SCM的任何DRAM设计兼容,2)高速缓存目录不需要的附加位(例如,消除SRAM阵列、TLB等),3)对虚拟存储器子系统、页表、页大小没有影响或依赖,4)传输的单位和高速缓存粒度等于128字节,其可以等于存储器传输的单位和L3行大小,5)不知道所实施的处理器或DRAM高速缓存的存储器缓冲器芯片的位置(具有微小的区域影响),6)对现有ECC透明,和/或6)在一致性域以下操作,例如DRAM和SCM看起来类似于常规DRAM。
当高速缓存为“命中”时,DRAM高速缓存可以将1个和/或2个处理器周期添加到DRAM(例如,常规/普通DRAM)读取时间,这意味着存储器行存在于高速缓存中。当存储行不在DRAM高速缓存中时,存在“未命中”,并且访问存储行的延迟是SCM延迟的延迟。SCM延迟取决于所使用的存储器技术,并且对于SLC闪存技术和/或OpenCAPI类型的存储器设备技术,SCM延迟可以是3到5微秒(“us”),或者当SCM是NAND闪存时,SCM延迟可以是1-3微秒,并且当SCM是PCM时,SCM延迟可以是1微秒。当SCM是慢速DRAM技术时,SCM延迟可以等于常规/普通DRAM的两倍(“2x”)。
预先理解,尽管本公开包括关于云计算的详细描述,但是本文中记载的教导的实施不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实施。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储装置、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储装置,而不需要与服务的提供商进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的瘦或胖客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:提供商的计算资源被集池化以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供商和消费者两者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供商的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,该软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图1,示出了云计算节点的示例的示意图。云计算节点10仅是合适的云计算节点的一个示例,并且不旨在对本文描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,云计算节点10能够被实施和/或执行上文阐述的任何功能。
在云计算节点10中,存在计算机系统/服务器12,其可与许多其他通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或局部总线。作为示例而非限制,这些架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围组件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓冲存储器32。计算机系统/服务器12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)被配置为执行本发明的实施例的功能的程序模块。
具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可作为示例而非限制存储在系统存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现方式。程序模块42通常执行本文描述的本发明实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14通信,诸如键盘、指示设备、显示器24等;使用户能够与计算机系统/服务器12交互的一个或多个设备;和/或使计算机系统/服务器12能够与一个或多个其它计算设备通信的设备(例如网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口22发生。然而,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其它组件通信。应当理解,尽管未示出,其它硬件和/或软件组件可以与计算机系统/服务器12结合使用,示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
现在参考图2,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,该本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、桌上型计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。在一个或多个网络中,它们可以被物理地或虚拟地分组(未示出),诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图2中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算设备通信。
现在参考图3,示出了由云计算环境50(图2)提供的一组功能抽象层。应当预先理解,图3中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
设备层55包括嵌入有和/或独立的电子器件、传感器、致动器和其他对象以在云计算环境50中执行各种任务的物理和/或虚拟设备。设备层55中的每个设备将联网能力结合到其他功能抽象层,使得从设备获得的信息可以被提供给该设备,和/或来自其他抽象层的信息可以被提供给设备。在一个实施例中,包括设备层55在内的各种设备可以并入统称为“物联网”(IoT)的实体的网络。如本领域普通技术人员将理解的,这样的实体网络允许数据的相互通信、收集和传播以实现各种目的。
如图所示,设备层55包括传感器52、致动器53、具有集成处理、传感器和联网电子设备的“学习”恒温器56、相机57、可控家用插座/插口58以及可控电开关59,如图所示。其它可能的设备可以包括但不限于各种附加传感器设备、联网设备、电子设备(诸如远程控制设备)、附加致动器设备、所谓的“智能”电器(诸如冰箱或洗衣机/干衣机)以及各种各样的其它可能的互连对象。
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储装置72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的帐单或发票开具。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及,在本发明的所示实施例的上下文中,各种工作负载和功能96用于在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存。另外,用于在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存的工作负载和功能96可以包括诸如数据分析(包括来自各种环境传感器的数据收集和处理)和/或分析操作之类的操作。本领域的普通技术人员将理解,用于在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存的工作负荷和功能96还可以结合各种抽象层的其他部分(诸如硬件和软件60、虚拟化70、管理80和其他工作负荷90(诸如数据分析处理94)中的那些)来工作,以实现本发明的所示实施例的各种目的。
如前所述,本发明提供了一种新颖的解决方案,用于提供DRAM作为第二类型存储器的高速缓存。在操作中,可以访问和利用现有的DRAM。SCM或慢速DRAM可以是OCAPI或附接的存储器总线。SCM/慢速DRAM大小可以是DRAM大小的整数倍(例如,最小2倍大小,诸如1太字节(“TB”)DRAM和16TB SCM/慢速DRAM。该DRAM高速缓存中的存储单元是128字节大小的数据块,在下文中称为“行”。
较高SCM地址位可以变成高速缓存中的标签(例如,地址标签大小位可以等于log2(SCM的大小/DRAM的大小)、等于4位和/或可以等于用于任何未来扩展的最大8位标签(例如,SCM与DRAM的容量比为256)。
另外,可以压缩128字节的存储器行,其中每个存储器行可以被压缩到124字节或更少(例如,使用小型且快速的压缩器)。在一个方面,所有或部分存储器行将被压缩到原始大小的选定/期望结果(例如,124/128=97%)。一旦存储器行被压缩,则可以将其相应的地址标签存储在高速缓存行中由于压缩而释放的4字节空间中(例如,标签大小是先前指示的最大8位)。压缩的高速缓存行还包含有效和修改的位(2位)和/或压缩和高速缓存的ID(CID)字段(例如,20或21位长)。高速缓存行中的CID字段指示存储器行何时以压缩形式存储在DRAM高速缓存中。CID是存储器控制器在识别高速缓存行是否被压缩时辨识的预定位模式。当存储行不能被压缩时,不存在CID比特模式。因此,在本发明的一个方面,未压缩的存储器行被存储在SCM中,而不存储在DRAM高速缓存中。
如果存储器行压缩到60字节或更少,则两个压缩的存储器行可以存储在一个128字节大小的高速缓存行(例如,2-路组关联DRAM高速缓存)中。在这种情况下,每个压缩的行包括4字节的控制信息(标签、CID、有效、修改)加上60字节的压缩的数据,因此总共64字节。因此,两个压缩的存储器行可存储在一个128字节高速缓存行的位置中。可以在释放空间中添加控制位,以指示高速缓存行是1-路还是2-路组关联DRAM高速缓存(例如,快速/小型存储器520(例如,快速/小型第1类型的存储器))。
应当注意,CID可以是在上电时设置的20位任意常数,例如CID=0xEDB3A。所选择的CID值被写入SystemCID寄存器,并且从那时起,使用该值来辨识压缩的高速缓存行。
当存储在高速缓存行中的CID值等于SystemCID寄存器时,它指示128字节行是压缩格式,因此存储器行包含控制信息,例如高速缓存标签、有效和/或修改位。
当存储在高速缓存行中的CID值不等于SystemCID寄存器时,它指示128字节行包含未压缩形式的原始数据。系统CID寄存器值从不改变,但是当存储在高速缓存行中时,可以对它执行与存储器地址的散列的逻辑运算(例如,进行XOR运算)。在另一方面,系统CID寄存器内容可以周期性地更新,但是DRAM中的缓存行必须相应地更新。
对于读取命中,可以执行以下操作。可以从用作第二类型存储器(例如SCM)的高速缓存的DRAM请求存储器行。高速缓存行中的CID字段可以与SystemCID寄存器进行比较。如果两个值相等,则表示该行被压缩。检查该行的有效位。如果该行有效,则将处理器所请求的地址与存储在高速缓存线中的地址标签进行比较。如果在DRAM高速缓存中发现所请求的行(例如,高速缓存读取命中),则可以将数据解压缩并传递到处理器。
对于读取未命中,可以执行以下操作。高速缓存行中的CID字段可以与SystemCID寄存器进行比较。如果两个值匹配,则该行被压缩。检查有效位。如果该行有效,则将处理器所请求的地址与存储在高速缓存行中的地址标签进行比较。如果所请求的地址与所存储的标签不匹配,则在DRAM高速缓存中未发现该行(例如,高速缓存未命中)。在未命中之后,从SCM获取/检索128字节的未命中存储器行,并将其传递至处理器。如果传递到处理器的128字节存储器行压缩到124字节或更少,则DRAM高速缓存中的旧行可以被替换,并且如果需要的话被写回到SCM。可以将新的地址标签和控制字段写入DRAM高速缓存行(例如,DRAM高速缓存中新写入的存储器行)。CID字段可以被写入以指示存储器行被高速缓存并被压缩。如果128字节存储器块不压缩,则现有DRAM高速缓存行不被替换。
对于写入命中,可以执行以下操作。可以首先从DRAM高速缓存读取存储器行。可以将该行的CID字段与SystemCID寄存器进行比较。可以将所存储的地址标签与处理器所请求的地址进行比较。假设在DRAM中定位/找到所请求的存储器行,则可以压缩所写入的行。如果存储行是124字节或更少,则可以覆写现有的存储行(不需要写回)。如果存储器行未压缩,则DRAM行可以被设置为无效,并且存储器行可以被写入SCM。可选地,隐含的行可以从SCM带入DRAM。
对于写入未命中,可以执行以下操作。可以首先从DRAM高速缓存读取存储器行。可以将该行的CID字段与SystemCID寄存器进行比较。可以比较地址标签。假设所请求的存储器行没有位于DRAM中/或在DRAM中找到,则可以压缩所写入的块。如果124字节或更少,则可以替换现有行(并且如果修改位有效,则将旧行写回到SCM)。如果存储行没有压缩,则存储行可以被写入SCM并且旧存储行不被替换。
图4A-图4C描述了用于作为第二类型存储器的动态随机存取存储器(“DRAM”)高速缓存的基础系统400的操作。即,基础系统400的框图描绘了处理器410、快速/小型存储器420(例如,快速/小型第1类型的存储器,例如DRAM高速缓存)和慢速/大型存储器430(例如,慢速/大型第2类型的存储器,例如SCM)。也就是说,快速/小型存储器420用作慢速/大型存储器430(例如,慢速/大型第二类型的存储器)的DRAM高速缓存。在一个方面,图1-图3中描述的组件、模块、服务、应用和/或功能中的一个或多个可在图4A-图4C中使用。
现在转到图4A,在第一步骤中,基础系统400的操作使用DRAM高速缓存,通过读取128字节慢速存储器行(@address b0,b1,b2,b3,b4)来存储128字节慢速存储器行(@addressb0,b1,b2,b3,b4)。在第二步骤中,在处理器410上,128字节慢速存储器行(@address b0,b1,b2,b3,b4)可以被压缩到124字节(或更少),释放4字节。
在第三步骤中,将称为“标签”的较高地址位b0,b1写入到4字节释放空间中。此时,标签(例如,较高地址位b0,b1)和数据存储在相同的128字节行中。在第四步骤中,128字节的行(来自处理器410)可以被写入到存储器行(@快速/小型存储器420的地址b2,b3,b4,应当注意,在存储器组织中没有需要的改变,也没有需要的附加位或计算机组件(例如,硬件线路)。
现在转到图4B,当处理器410需要从存储器行(@address b0,b1,b2,b3,b4)读取时,在第一动作步骤中,顶部/较高地址位b0,b1可以从存储器行@address b0,b1,b2,b3,b4剥离,然后处理器请求从快速/小型存储器420的存储器行@address b2,b3,b4读取。在第二动作步骤中,如果从快速/小型存储器420的存储器行@address b2,b3,b4读取的标签(例如,较高地址位b0,b1)等于所请求的地址,则存在高速缓存命中。124B或更小的cData(例如,高速缓存数据)可以被解压缩并被传递到处理器410(例如,处理器核心)。或者,在第三动作步骤中,如果从快速/小型存储器420的存储器行@address b2,b3,b4读取的标签(例如,较高地址位b0,b1)不匹配所请求的地址,则存在高速缓未存命中。
从图4B中高速缓存未命中的第三动作步骤继续(例如,如果从快速/小型存储器420的存储器行@address b2,b3,b4读取的标签(例如,高位地址位b0,b1)与所请求的地址不匹配,则存在高速缓存未命中),在如图4C中所示的第四动作步骤中,必须将存储器行@address b0,b1,b2,b3,b4的未命中地址发送到慢速/大型存储器430(例如,慢速/大型第二类型存储器)。
现在转到图5A-图5B,图5A描绘了一对二(“1对2”)路组DRAM高速缓存500和一对四(“1对4”)路组关联DRAM高速缓存(例如,图4A-图4C的快速/小型存储器520(例如,快速/小型第1类型存储器))。在一个方面,图1-图4A-图4C中描述的组件、模块、服务、应用和/或功能中的一个或多个可在图5A-图5B中使用。为了简洁起见,省略了对在本文描述的其他实施例中采用的类似元件、组件、模块、服务、应用和/或功能的重复描述。
如图5A所描绘的,如果128字节行每个都压缩到小于60字节,则可以将两个存储器行放置/存储在快速/小型存储器420(例如,快速/小型第1类型的存储器)的一个存储器行的空间中。也就是说,如果两个存储器行的压缩总数是120B或更小,则可以将它们放在相同的存储器行中。换句话说,在存储器行@address b0,b1,b2,b3,b4和存储器行@address a0,a1,b2,b3,b4处的两个存储器行在同一物理存储器行@address b2,b3,b4中。因此,2-路相关性高速缓存是所希望的,因为它通常增加高速缓存命中率。
现在转到图5B,可以为每个存储器行动态地选择替代的“第二机会”位置,进一步将来自2-路关联性高速缓存的关联性添加(例如,加倍)到4-路关联性高速缓存。如果第一位置(例如,第一存储器行)是高速缓存未命中,则可以搜索第二位置(例如,第二存储器行)。第二位置意味着两次读取(例如,读取第一位置然后读取第二位置),这将增加读取延迟(平均1.5微秒)。然而,如果高速缓存未命中损失高,则搜索快速/小型存储器420(例如,快速/小型第1类型的存储器)中的第二位置可能是优选的,因为增加的关联性减少了到图4A-图4C的慢速/大型存储器430(例如,慢速/大型第2类型的存储器)的未命中。
应当注意,快速/小型存储器420可以被称为1对4路关联性高速缓存,因为在最坏的情况下,两个行将不会各自压缩到60B,并且每个位置将存储一行(例如,2-路)。在最佳情况的情形中,两个位置(例如,快速/小型存储器420的第一位置和第二位置)可以存储2行。在平均情形(例如,中间)中,一个位置可具有2行,且另一位置可具有1行(3-路)。
图6是描绘可以实现本发明的各方面的作为第二类型存储器的动态随机存取存储器(“DRAM”)高速缓存的各种选项的操作的附加框图。在一个方面,图1-图5A-图5B中描述的组件、模块、服务、应用和/或功能中的一个或多个可以在图6中使用。为了简洁起见,省略了在本文描述的其它实施例中采用的类似元件、组件、模块、服务、应用和/或功能的重复描述。
如系统610中所描绘的,系统610可包括经由总线连接到存储器缓冲器(“MB”)的处理器。DRAM和SCM MB中的每一个可以与MB相关联。SCM MB可以与SCM相关联。在这种配置中,高速缓存逻辑可以完全包含在MB中。DRAM容量可以是SCM的相当大的部分,以增加高速缓存命中率。
如系统620中所描绘的,系统640可包括经由第一总线连接到存储器缓冲器(“MB”)并经由第二总线连接到SCM MB的处理器。DRAM可与MB相关联。SCM可与MB相关联。
在这种配置中,高速缓存逻辑可以完全由处理器处理,其中存储器缓冲器和存储器控制器完全不知道高速缓存活动。DRAM(例如,服务器DRAM)可以是SCM的DRAM高速缓存,其可以具有选定量的存储容量(例如,高达数兆字节的大小)。DRAM(例如,服务器DRAM)可以占用选定数量的存储器端口(例如,大多数存储器端口)并且针对性能进行优化(例如,优化的带宽和最小化的延迟)。
SCM还可以占用更少的存储器端口并且针对存储容量进行优化。结果,混合存储器系统性能类似于具有SCM的成本容量的服务器DRAM(例如,小于全部DRAM系统的50%的成本)。
现在转到图7,表700描述了一阶性能估计。在一个方面,图1-图6中描述的组件、模块、服务、应用和/或功能中的一个或多个可以在图7中使用。为了简洁,省略了对在此本文的其他实施例中采用的类似元件、组件、模块、服务、应用和/或功能的重复描述。
如所描绘的,表700描绘了针对基础系统(仅DRAM)、慢速DRAM、DRAM高速缓存和慢速DRAM(例如,DRAM高速缓存上的90%的高速缓存命中率)、SCM以及DRAM高速缓存和SCM(例如,DRAM高速缓存上的90%的高速缓存命中率)的一阶性能估计。一阶性能估计包括相对于DRAM的平均延迟、相对CPI和细节。每指令周期(CPI)是描述处理器性能的品质因数。CPI越低表示性能越高。仿真结果显示存储器延迟是CPI的20%的原因(例如,取决于处理器工作负荷,平均10-30%)。如所描绘的,表700的列710示出了如何计算平均CPI。例如,慢速DRAM具有DRAM的2.0倍的延迟。由于慢速DRAM占CPI的20%并且它具有DRAM的2倍的延迟,所以在710的第二行中计算出的平均CPI为1.2。然而,如果慢速SRAM与DRAM高速缓存组合,则平均延迟将是1.2,慢速DRAM解决方案的从2.0的减少,并且因此710中的第3行的计算示出DRAM高速缓存和慢速DRAM解决方案(例如,DRAM高速缓存+慢速DRAM解决方案)具有1.04的平均CPI,其小于慢速DRAM解决方案的1.2的平均CPI。
现在转向图8,描绘了用于在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存作为第二类型存储器的方法800,其中可以实施所图示的实施例的各个方面。功能800可以被实施为作为机器上的指令执行的方法,其中指令被包括在至少一个计算机可读介质上或非暂时性机器可读存储介质上。功能800可以在框802中开始。
如框804中所示,可以使用DRAM的一个或多个空闲位、数据压缩操作或其组合来释放(例如,清除、替换和/或编辑)存储器行中的存储器的选定量的字节。高速缓存目录和数据可以置于(和存储)在存储器行中(例如,被置于相同的存储器行中),如在框806中。如在框808中,DRAM高速缓存被实施/配置为第二类型存储器的高速缓存(例如,直接映射的DRAM高速缓存或一对多路组关联高速缓存)。功能800可以在框810中结束。
在一个方面中,结合图8的至少一个框和/或作为其一部分,方法800的操作可以包括以下各项中的每一个。功能800的操作可将DRAM高速缓存配置为存储级存储器(“SCM”)的高速缓存或慢速DRAM解决方案,和/或将DRAM高速缓存配置为直接映射的DRAM高速缓存或组关联高速缓存。
功能800的操作可将DRAM高速缓存配置为其中两条存储器行置于相同位置的单路或双路组关联高速缓存,和/或将DRAM高速缓存配置为其中两个存储器行被置于第一相同位置且两个替代存储器行被置于第二相同位置的一对四路组关联高速缓存。
功能800的操作可以压缩存储器行中的选定量的字节中的数据,以放置高速缓存目录和数据两者。功能800的操作可在存储器行中释放的数据段中添加标签和元数据。
功能800的操作可以压缩等于或小于124字节的存储行并释放至少四个字节,将标签和数据存储在存储行中,和/或将存储行写入第一类型存储器和第二类型存储器。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),该计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及常规的过程式编程语言(例如“C”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
Claims (20)
1.一种由处理器执行的用于在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存作为第二类型存储器的方法,包括:
使用所述DRAM的一个或多个空闲位、数据压缩操作或其组合来清除存储器行中的选定量的字节;
将高速缓存目录和数据两者存储在所述存储器行中,其中所述DRAM高速缓存被配置为第二类型存储器的高速缓存。
2.根据权利要求1所述的方法,还包括将所述DRAM高速缓存配置为存储级存储器(“SCM”)或慢速DRAM解决方案的高速缓存。
3.根据权利要求1所述的方法,还包括将所述DRAM高速缓存配置为直接映射的高速缓存或组关联高速缓存。
4.根据权利要求1所述的方法,还包括:
将所述DRAM高速缓存配置为一对二路组关联高速缓存,其中两个存储器行被置于类似的位置;或
将所述DRAM高速缓存配置为一对四路组关联高速缓存,其中两个存储器行被置于第一类似位置,且两个替代存储器行被置于第二类似位置。
5.根据权利要求1所述的方法,还包括压缩所述存储器行中的所述选定量的字节中的数据,以放置所述高速缓存目录和数据两者。
6.根据权利要求1所述的方法,还包括在所述存储器行中被清除的数据段中添加标签和元数据。
7.根据权利要求1所述的方法,还包括:
压缩等于或小于124字节的存储行并释放至少四个字节;
将标签和数据存储在所述存储器行中;以及
将所述存储器行写入到第一类型存储器和所述第二类型存储器。
8.一种用于在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存作为第二类型存储器的系统,包括:
具有可执行指令的一个或多个计算机,所述可执行指令在被执行时使所述系统:
使用所述DRAM的一个或多个空闲位、数据压缩操作或其组合来清除存储器行中的选定量的字节;以及
将高速缓存目录和数据两者存储在所述存储器行中,其中所述DRAM高速缓存被配置为第二类型存储器的高速缓存。
9.根据权利要求8所述的系统,其中,所述可执行指令将所述DRAM高速缓存配置为存储级存储器(“SCM”)或慢速DRAM解决方案的高速缓存。
10.根据权利要求8所述的系统,其中所述可执行指令将所述DRAM高速缓存配置为直接映射的DRAM高速缓存或组关联高速缓存。
11.根据权利要求8所述的系统,其中所述可执行指令:
将所述DRAM高速缓存配置为一对二路组关联高速缓存,其中两个存储器行被置于类似的位置;或
将DRAM高速缓存配置为一对四路组关联高速缓存,其中两个存储器行被置于第一类似位置,且两个替代存储器行被置于第二类似位置。
12.根据权利要求8所述的系统,其中所述可执行指令压缩所述存储器行中的所述选定量的字节中的数据,以放置所述高速缓存目录和数据两者。
13.根据权利要求8所述的系统,其中所述可执行指令在所述存储器行中被清除的数据段中添加标签和元数据。
14.根据权利要求8所述的系统,其中所述可执行指令:
压缩等于或小于124字节的所述存储器行,并且释放多达至少四个字节;
将标签和数据存储在所述存储器行中;以及
将所述存储器行写入第一类型存储器和所述第二类型存储器。
15.一种用于由处理器在计算环境中提供动态随机存取存储器(“DRAM”)高速缓存作为第二类型存储器的计算机程序产品,所述计算机程序产品包括具有存储在其中的计算机可读程序代码部分的非暂时性计算机可读存储介质,所述计算机可读程序代码部分包括:
使用所述DRAM的一个或多个空闲位、数据压缩操作或其组合来清除存储器行中的选定量的字节的可执行部分;以及
将高速缓存目录和数据两者存储在所述存储器行中的可执行部分,其中所述DRAM高速缓存被配置为第二类型存储器的高速缓存。
16.根据权利要求15所述的计算机程序产品,还包括将所述DRAM高速缓存配置为存储级存储器(“SCM”)或慢速DRAM解决方案的高速缓存的可执行部分。
17.根据权利要求15所述的计算机程序产品,还包括将所述DRAM高速缓存配置为直接映射的DRAM高速缓存或组关联高速缓存的可执行部分。
18.根据权利要求15所述的计算机程序产品,还包括执行以下操作的可执行部分:
将DRAM高速缓存配置为一对二路组关联高速缓存,其中两个存储器行被置于类似的位置;
将DRAM高速缓存配置为一对四路组关联高速缓存,其中两个存储器行被置于第一类似位置,且两个替代存储器行被置于第二类似位置;或
压缩所述存储器行中的所述选定量的字节中的数据,以放置所述高速缓存目录和数据两者。
19.根据权利要求15所述的计算机程序产品,还包括将标签和元数据添加到在所述存储器行中被清除的数据段中的可执行部分。
20.根据权利要求15所述的计算机程序产品,还包括执行以下操作的可执行部分:
压缩等于或小于124字节的所述存储器行,并且释放多达至少四个字节;
将标签和数据存储在所述存储器行中;以及
将所述存储器行写入第一类型存储器和第二类型存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/702,080 US11221770B2 (en) | 2019-12-03 | 2019-12-03 | Providing a dynamic random-access memory cache as second type memory |
US16/702,080 | 2019-12-03 | ||
PCT/EP2020/083833 WO2021110570A1 (en) | 2019-12-03 | 2020-11-30 | Providing a dynamic random-access memory cache as second type memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114746850A true CN114746850A (zh) | 2022-07-12 |
Family
ID=73654803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080083166.8A Pending CN114746850A (zh) | 2019-12-03 | 2020-11-30 | 提供动态随机存取存储器高速缓存作为第二类型存储器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11221770B2 (zh) |
EP (1) | EP4070202A1 (zh) |
JP (1) | JP2023505442A (zh) |
CN (1) | CN114746850A (zh) |
WO (1) | WO2021110570A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11573896B2 (en) * | 2021-06-25 | 2023-02-07 | International Business Machines Corporation | DRAM caching storage class memory |
US11792303B1 (en) * | 2022-09-30 | 2023-10-17 | International Business Machines Corporation | Fast clear memory of system memory |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564305B1 (en) | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
KR100381615B1 (ko) | 2001-01-04 | 2003-04-26 | (주)실리콘세븐 | 디램 캐쉬 메모리를 이용하여 리프레쉬 동작을 숨기는에스램 호환 메모리 |
US9830262B2 (en) | 2013-03-14 | 2017-11-28 | Nvidia Corporation | Access tracking mechanism for hybrid memories in a unified virtual system |
TWI493446B (zh) | 2013-09-23 | 2015-07-21 | Mstar Semiconductor Inc | 記憶體管理方法及記憶體管理裝置 |
WO2016130915A1 (en) | 2015-02-13 | 2016-08-18 | Google Inc. | Transparent hardware-assisted memory decompression |
US20170206172A1 (en) | 2016-01-19 | 2017-07-20 | SK Hynix Inc. | Tehcniques with os- and application- transparent memory compression |
KR102523141B1 (ko) * | 2016-02-15 | 2023-04-20 | 삼성전자주식회사 | 휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 모듈 |
US9996471B2 (en) * | 2016-06-28 | 2018-06-12 | Arm Limited | Cache with compressed data and tag |
US10366008B2 (en) | 2016-12-12 | 2019-07-30 | Advanced Micro Devices, Inc. | Tag and data organization in large memory caches |
US11301378B2 (en) | 2017-10-12 | 2022-04-12 | Rambus Inc. | Nonvolatile physical memory with DRAM cache and mapping thereof |
-
2019
- 2019-12-03 US US16/702,080 patent/US11221770B2/en active Active
-
2020
- 2020-11-30 CN CN202080083166.8A patent/CN114746850A/zh active Pending
- 2020-11-30 WO PCT/EP2020/083833 patent/WO2021110570A1/en unknown
- 2020-11-30 EP EP20816949.0A patent/EP4070202A1/en active Pending
- 2020-11-30 JP JP2022532699A patent/JP2023505442A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US11221770B2 (en) | 2022-01-11 |
EP4070202A1 (en) | 2022-10-12 |
JP2023505442A (ja) | 2023-02-09 |
US20210165580A1 (en) | 2021-06-03 |
WO2021110570A1 (en) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110663019B (zh) | 用于叠瓦式磁记录(smr)的文件系统 | |
US9798655B2 (en) | Managing a cache on storage devices supporting compression | |
JP7539202B2 (ja) | コンピューティング環境におけるアクセラレータとストレージとの間のダイレクト・データ・アクセス | |
CN111316248B (zh) | 促进对存储器局部域信息的访问 | |
CN114746850A (zh) | 提供动态随机存取存储器高速缓存作为第二类型存储器 | |
US9959245B2 (en) | Access frequency approximation for remote direct memory access | |
CN114730307A (zh) | 智能数据池 | |
CN112748849A (zh) | 用于存储数据的方法、设备和计算机程序产品 | |
US10346424B2 (en) | Object processing | |
US11573899B1 (en) | Transparent interleaving of compressed cache lines | |
US11481158B2 (en) | Enabling compression based on queue occupancy | |
US20200341677A1 (en) | Heat value tracking | |
US11914527B2 (en) | Providing a dynamic random-access memory cache as second type memory per application process | |
US20190166185A1 (en) | Methods and systems for improving efficiency in data transfers | |
US11573896B2 (en) | DRAM caching storage class memory | |
US20240053897A1 (en) | Fast memory clear of system memory | |
US12007968B2 (en) | Full allocation volume to deduplication volume migration in a storage system | |
US9251100B2 (en) | Bitmap locking using a nodal lock | |
US10719483B2 (en) | Remote copy with data deduplication functionality | |
JP2024533124A (ja) | データ重複排除 | |
JP2023536973A (ja) | ダイレクト・メモリ・アクセス(dma)マッピングされたページを移行する際の遅延の最小化 |
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 |