基于NVRAM的内存数据库性能优化策略研究与设计
- 格式:pdf
- 大小:336.08 KB
- 文档页数:4
DDR SDRAM:SoC低成本高复杂度片外存储器解决方案几乎所有人都知道,用于桌面计算机和便携计算机的DRAM存储器产品与本白皮书所讨论的片外DRAM完全相同。
事实上,全部DRAM产量中的约90%用在计算机上,其它10%当作了系统级芯片(SoC)的片外存储器来使用,这就象将方木钉打入圆孔一样地不适合。
随着要求配备与外部存储器接口的SoC设计方案的数量增加,现化化的DDRn SDRAM存储器接口(DDR、DDR2、DDR3)提供了可靠的供货能力、高存储容量、低成本和合理的通道带宽,但却存在使用不便的接口以及复杂控制器方面的问题。
面对内部DRAM阵列所导致的独特指令结构,且要求在设计方案内加入代表当前先进水平的DRAM接口时,SoC设计人员就会将这个任务视为畏途。
本白皮书对SDRAM的历史进行了简短介绍,并探讨了实施DDRn控制器和PHY的设计考虑要素,并描述了如何采用完整的IP解决方案来帮助加快产品上市周期和降低成本。
SDRAM历史简介尽管存储容量上也发生了令人惊奇的进步,但商品DRAM在过去15年来的演化让接口峰值带宽以远大于2000%的系数增加(请参见图1)。
虽然任何人都不能违背物理学的基本规律而对基本随机存取操作的延迟现象做出类似程度的提升,但通过增加引脚带宽以及在脉冲猝发下访问数据的能力,能够减少一部分存储器相对于典型处理器对于更高速存储器带宽永无止境的需求之间的差距。
在这段发展期内,被称为JC42的美国电子器件工程联合委员会(JEDEC)一直是商品DRAM的行业标准的制订机构。
在1993年下半年,JEDEC发布了最初的SDRAM标准,这个标准最终变成了后来称为“PC100 SDRAM”的标准。
通过将SDRAM的时序参数推到实际极限时,PC133 SDRAM出现了,它将通道频率增加到了133MHz,数据速率增加到了133Mbps。
图1 峰值带宽与DRAM类型对比Peak…峰值带宽在20世纪90年代末,JEDEC制订了一份内容扎实的DRAM发展路线图。
内存设计方案随着科技的不断发展,内存作为计算机硬件的重要组成部分,对于计算机性能和应用体验有着至关重要的影响。
本文将介绍一种创新的内存设计方案,旨在提升计算机的运行速度和效率,以满足日益增长的计算需求。
一、背景随着人工智能、大数据和云计算等技术的快速发展,计算机对于内存的需求量不断增加。
传统的内存设计方案面临着容量限制、能耗高等问题,已经无法满足新时代的需求。
因此,我们需要一种创新的内存设计方案,以提升计算机的性能和效率。
二、方案介绍我们提出了一种基于非易失性内存(Non-Volatile Memory,NVM)的内存设计方案。
传统的内存主要采用的是易失性内存(Volatile Memory),即断电后数据会丢失的内存。
而NVM具有断电后数据仍能保持的特点,可以在关机后快速恢复数据,大大提高计算机的开机速度和用户体验。
该方案的核心是将NVM与传统的DRAM(Dynamic Random Access Memory)相结合。
在计算机启动时,操作系统和常用的应用程序会被加载到DRAM中,以保证快速运行。
而其他不常用的数据则存储在NVM中,以节省DRAM的空间。
当计算机关机时,DRAM中的数据会被定期地保存到NVM中,以确保数据的持久性。
三、方案优势1. 提升计算机的开机速度:采用NVM的内存设计方案可以大幅提升计算机的开机速度。
由于NVM具有断电后数据仍能保持的特点,计算机可以在关机后快速恢复数据,无需重新加载操作系统和常用应用程序,节省了大量的时间。
2. 提高计算机的运行效率:传统的内存设计方案中,由于DRAM容量有限,当内存不足时,计算机会频繁地进行数据的交换和读写操作,导致运行效率低下。
采用NVM的内存设计方案可以扩大内存容量,减少数据交换的次数,提高计算机的运行效率。
3. 提升系统的可靠性:由于NVM具有断电后数据仍能保持的特点,即使在突发情况下,如断电或系统崩溃,用户的数据也能得到有效保护,不会丢失。
单片机的存储器系统设计原理与性能优化策略引言:在当今数字化时代,嵌入式系统的普及和应用日益广泛。
而单片机作为嵌入式系统的核心部件,其存储器系统设计的优化和性能提升对于嵌入式系统整体性能的提升至关重要。
本文将探讨单片机的存储器系统设计原理,以及如何通过优化策略实现性能的提升。
一、存储器系统设计原理单片机的存储器系统由程序存储器(ROM)、数据存储器(RAM)和特殊功能寄存器(SFR)组成。
这三个部分在单片机的整体运作中扮演着不同的角色。
1. 程序存储器(ROM)程序存储器用于存储单片机的程序代码。
根据存取方式的不同,可将程序存储器分为随机存取存储器(RAM)和只读存储器(ROM)。
只读存储器通常包括可编程只读存储器(PROM)、电可擦可编程只读存储器(EPROM)和电子擦可编程只读存储器(EEPROM)。
2. 数据存储器(RAM)数据存储器用于存储单片机运行过程中产生的中间数据。
它通常具有读写能力,可以根据需要进行数据的读取和写入操作。
根据存取方式和存放位置的不同,可以将数据存储器分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。
SRAM具有快速存取速度和不需要刷新的特点,而DRAM占用的面积更小且价格更低。
3. 特殊功能寄存器(SFR)特殊功能寄存器是单片机的特殊存储器,用于保存各种系统和外设的控制和状态信息。
这些寄存器可以通过特定的地址进行访问和控制,实现单片机与外设的交互。
特殊功能寄存器的设计合理与否直接影响着整个系统的性能。
二、性能优化策略为了提升单片机系统的性能,可以从以下几个方面来进行优化:1. 存储器容量优化合理利用存储器容量是优化存储器系统性能的关键。
通过对程序代码和数据存储的分析,可以估算出所需要的存储器容量,并根据实际需求选择合适的存储器芯片。
同时,可以采用编程优化的方法,如代码压缩和数据压缩,减小所需存储器容量。
2. 存储器速度优化存储器访问速度对于单片机系统的性能至关重要。
高速缓存系统的设计与优化方法研究高速缓存系统是计算机体系结构中的重要组成部分,它的设计和优化对于提高计算机系统的性能至关重要。
本文将探讨高速缓存系统的设计原理、优化方法以及相关研究进展。
一、高速缓存系统的设计原理高速缓存是位于CPU和主内存之间的一个小型、容量有限但访问速度较快的存储器。
其设计原理主要包括以下几个方面:1. 考虑访问局部性:高速缓存系统利用程序的访问局部性原理,将频繁访问的数据块存储到缓存中,以提高访问速度。
常见的局部性包括时间局部性和空间局部性。
2. 采用替换策略:当缓存空间不足时,需要替换掉一部分数据,以便为新的数据腾出空间。
常用的替换策略有最近最少使用(LRU)、随机替换等。
3. 设置缓存块大小:缓存块大小的选择对性能有着重要影响。
如果缓存块太小,可能会导致较高的访问延迟;而缓存块太大则会浪费宝贵的缓存空间。
4. 考虑一致性问题:当高速缓存与主内存之间的数据发生改变时,需要保证缓存中的数据与主内存中的数据保持一致。
常见的解决方案有写直达(write through)和写回(write back)等。
二、高速缓存系统的优化方法1. 提高命中率:命中率是衡量高速缓存性能的重要指标,可以通过以下方法进行优化:- 提高空间局部性:空间局部性是指在程序中多次访问相邻的数据。
通过优化程序的数据结构和内存访问模式,可以提高空间局部性,从而提高命中率。
- 提高时间局部性:时间局部性是指程序在一段时间内多次访问同一数据。
通过合理调整缓存块大小和替换策略,可以提高时间局部性,从而提高命中率。
- 使用关联性较高的缓存映射方式:常见的缓存映射方式包括直接映射、全关联映射和组关联映射。
通过选择关联性较高的缓存映射方式,可以提高命中率。
2. 减少替换开销:替换开销是指由于缓存空间不足,需要替换部分数据造成的开销。
可以通过以下方法进行优化:- 采用更精细的替换策略:传统的替换策略如LRU只考虑最近使用的情况,而并不关心数据的重要性。
信息记录材料 2020年12月 第21卷第12期1521 引言SQL Server 数据库是一个长期存储在计算机内的有组织存储、可共享,可以统一管理的大数据集合,管理人员可以对数据进行任意的删除、增加等操作。
数据库的功能是通过一些命令快速地检索出有意义的数据。
随着数据大幅度冗余,为了保证数据库的性能,本文将从数据库性能的框架和优化方法出发,对SQL Server 数据库进行性能优化策略的研究[1]。
2 SQL Server数据库性能优化框架设计2.1 SQL Server 数据库性能优化目的为了更好地完成SQL Server 数据库性能优化策略的研究,首先本文要明确数据库优化的目的是通过改善数据库的核心设备,提高性能和数据库的使用效果。
SQL Server 数据库的使用性能主要表现在系统的吞吐量、数据库检索响应时间、数据库系统承载的用户量三方面。
SQL Server 数据库的吞吐量表示在一定时间内数据库处理检索的数据条数,用事务量衡量数据库的吞吐量。
数据库检索的响应时间是数据库后台处理一条数据的时间,通常以秒和毫秒为单位表示。
数据库承载的用户量是一个数据库性能的重要体现,性能高的数据库会同时支持多个用户进行检索工作,可以在资源拥挤时提供畅通的资源检索。
2.2 SQL Server 数据库性能优化工具为了达到SQL Server 数据库性能优化的最优化,本文选择SQL Server 数据库性能优化工具为性能监视器、事件探查器、对象计数器。
事件侦察器的主要功能是对数据库进行检索,排查具有无格式化的数据库内部组件。
因为事件侦察器要扫描数据库内部的信息所以设备具有信息加密功能,防止数据的泄露。
事件侦查器会根据管理员的指令进行事件查询,或者在事件侦察器中输入关键语句进行侦查,减少侦查器的工作量。
性能监视器是Windows 2003内部的一个工具,它的使用权限要得到数据库和windows 两个管理权限才可以执行,性能监视器可以扫描数据库的每一个组成文件,并定期进行测试,如果测试结果不符合标准,在数据库进行优化过程中,如果出现优化障碍或者优化时自带病毒,性能监视器就会向数据库管理员反馈信息,管理员进行及时维护修改[2]。
基于3D堆叠集成的DRAM缓存架构研究综述摘要:内存访问速度的增长远远跟不上处理器处理性能的增长,“内存墙(Memory Wall)[1]”越来越成为计算机体系结构进步的瓶颈。
3D堆叠集成技术将多层硅芯片叠加起来,使得芯片间传输延迟降低,传输带宽增加。
使用3D堆叠技术可以将DRAM堆叠到多核处理器芯片上,从而使得访存速度获得提高。
由于散热,功耗等问题,基于3D堆叠集成的DRAM往往不具有足够的容量来作为处理器的主存(除了一些特殊的市场需求)。
较为有实践意义的架构是将基于3D堆叠集成的DRAM作为最末级缓存(LLC Last Level Cache)使用。
本文分析了已有的基于3D堆叠集成的DRAM缓存架构,比较了不同架构之间的优缺点,对目前该领域的研究方向做了综述。
关键词:3D堆叠;DRAM;缓存1引言1.1内存墙及现代存储技术1965年,Intel的创始人之一,名誉主席戈登.摩尔(Gordon Moore)提出:每18个月,芯片上的晶体管数目就能够增加一倍。
这就是著名的摩尔定律。
摩尔定律的另一个更为大家熟悉的表述是:每18个月,CPU的速度提高一倍。
过去40年,通用CPU的速度基本按这个预测在发展。
现在CPU的速度超过2.8GHz,实际上还可以做到更高。
但是,CPU速度的提高并不意味着CPU的实际性能也有相应的提高。
在过去40年中,CPU核心的速度提高了近千倍,但是内存的速度提高却不大;更为关键的是,内存的延迟没有降低。
这使得内存延迟已经成为了制约CPU实际处理能力提高的瓶颈。
实际应用中,CPU始终都在等待内存访问。
当内存端口满负载时,CPU核心有超过50%时间是空闲的。
这个问题被称为内存墙(Memory Wall)。
中央处理器的速度决定了计算机运算数据及处理信息的快慢,主存储器的容量则决定了计算机可以储存信息的多寡,有些人可能还会去考虑伴随中央处理器的高速缓存(cache memory)的大小,这是因为高速缓存是用来储存一些经常使用到的信息,把这些经常用到的信息放在速度较快的高速缓存中可以使CPU很快的取得这些信息,而不需要再到速较慢的主存储器中去寻找,如此一来可使CPU处理的速度加快。
数据库性能优化的关键技术分析在当今数字化时代,数据库作为信息存储和管理的核心组件,其性能的优劣直接影响着整个系统的运行效率和用户体验。
无论是大型企业的核心业务系统,还是小型应用的后台数据支撑,都离不开高效稳定的数据库。
因此,深入研究和掌握数据库性能优化的关键技术,对于提升系统性能、降低成本、增强竞争力具有重要意义。
数据库性能优化是一个综合性的工作,涉及到多个方面的技术和策略。
下面我们将从硬件、数据库设计、索引优化、查询优化、存储优化以及参数配置等几个关键技术方面进行详细分析。
一、硬件优化硬件是数据库性能的基础,合理的硬件配置可以为数据库的高效运行提供有力保障。
首先,服务器的 CPU 性能至关重要。
多核、高主频的 CPU 能够更快地处理并发请求和复杂的计算任务。
对于数据量庞大、事务频繁的数据库系统,选择性能强劲的 CPU 可以显著提高处理速度。
其次,内存的大小和性能也会直接影响数据库的运行效率。
足够的内存可以缓存常用的数据和索引,减少磁盘 I/O 操作。
采用高速的DDR4 甚至 DDR5 内存,并合理配置内存大小,能够有效提升数据库的响应速度。
再者,磁盘的性能也是需要重点关注的。
传统的机械硬盘在随机读写性能上存在较大的瓶颈,而固态硬盘(SSD)则具有更快的读写速度和更低的延迟。
使用 SSD 作为数据库的数据存储介质,或者采用磁盘阵列(RAID)技术,如 RAID 10,可以提高磁盘的读写性能和数据可靠性。
此外,网络带宽也是影响数据库性能的一个因素。
对于分布式数据库或者远程访问数据库的场景,高速稳定的网络连接能够减少数据传输的延迟,提高数据交互的效率。
二、数据库设计优化良好的数据库设计是实现高性能的前提。
在数据库建模阶段,要遵循规范化的设计原则,合理规划数据表的结构,避免数据冗余和不一致性。
但过度规范化可能会导致过多的关联操作,影响查询性能。
因此,在某些情况下,可以适当进行反规范化设计,以减少关联操作的开销。
缓存系统设计与优化研究缓存系统在计算机领域中起着至关重要的作用,能够有效地提高系统的性能和响应速度。
本文将对缓存系统的设计和优化进行深入研究,并提供一些有效的方法和技巧,以帮助开发人员在设计和优化缓存系统时取得更好的效果。
一、缓存系统的设计原则在设计缓存系统时,需要遵循一些基本原则,以确保系统的性能和稳定性。
1. 透明性:缓存系统应该对外部应用程序透明,即应用程序无需关心缓存的存在与否,缓存系统应该自动处理数据的读写操作。
2. 数据一致性:缓存系统应该能够保持数据的一致性,当缓存中的数据被修改时,需要及时更新到主数据源,以避免数据的不一致性。
3. 高性能:缓存系统应该能够快速响应数据读取请求,并且能够处理大量的并发请求,以提高系统的性能和响应速度。
4. 可扩展性:缓存系统应该具备良好的可扩展性,能够根据系统的需求进行扩展,以支持更多的数据和更高的并发请求。
二、缓存系统设计的关键要素在设计缓存系统时,需要考虑以下几个关键要素,以保证系统的性能和稳定性。
1. 缓存策略:选择合适的缓存策略对系统的性能有着重要的影响。
常见的缓存策略包括基于时间的淘汰算法(如LRU、LFU)、基于空间的淘汰算法(如FIFO)等。
根据系统的需求和特点,选择适合的缓存策略进行设计。
2. 缓存失效处理:在缓存系统中,缓存数据可能出现失效的情况,如被修改、被删除等。
为了保持数据的一致性,需要设计合理的缓存失效处理机制,及时从主数据源中获取最新的数据,并更新到缓存中。
3. 缓存预热机制:当系统刚启动时,缓存为空,可能会导致大量的缓存穿透,即从主数据源中读取大量的数据。
为了避免缓存穿透,可以设计缓存预热机制,在系统启动时预先加载一部分热门数据到缓存中。
4. 数据一致性保证:缓存系统中的数据一致性是非常重要的。
当缓存中的数据被修改时,需要及时通知主数据源进行更新,以保证数据的一致性。
可以使用触发器、消息队列等机制来实现数据一致性保证。
提高dram存储器存储带宽的技术提高DRAM存储器存储带宽的技术随着计算机应用的不断发展,对存储器存储带宽的需求也越来越高。
DRAM(Dynamic Random Access Memory)作为计算机主要的内存存储介质,其存储带宽的提升对于系统性能的改善至关重要。
本文将探讨提高DRAM存储带宽的一些关键技术。
一、DRAM存储器存储带宽的重要性DRAM存储带宽决定了系统内存与处理器之间的数据传输速度,直接影响系统的整体性能。
随着计算机应用负载的增加,传统的DRAM存储带宽已经无法满足需求,因此提高DRAM存储带宽成为了当务之急。
二、提高DRAM存储带宽的技术1. 增加总线宽度:DRAM存储带宽与总线宽度直接相关。
通过增加总线宽度,可以提高DRAM存储带宽。
例如,从64位总线宽度升级到128位或256位总线宽度,可以有效提高DRAM存储带宽。
2. 增加频率:DRAM存储器的频率也是影响存储带宽的重要参数。
提高DRAM的频率可以增加数据传输速度,从而提高存储带宽。
然而,提高频率也会增加功耗和热量,需要在设计中做出平衡。
3. 优化内存控制器:内存控制器负责协调处理器和DRAM之间的数据传输。
通过优化内存控制器的设计,可以提高DRAM存储带宽。
例如,采用更高效的调度算法、增加预取机制等,都可以提高存储器的访问效率。
4. 采用高速接口:采用高速接口技术,如DDR4、DDR5等,可以提高DRAM存储带宽。
这些高速接口技术在传输速率、带宽等方面都有所提升,可以满足对存储带宽更高要求的应用。
5. 使用多通道架构:多通道架构是提高DRAM存储带宽的有效手段。
通过增加DRAM通道数目,可以同时进行多个数据传输操作,从而提高存储带宽。
然而,多通道架构也需要考虑成本和功耗等因素。
6. 利用高密度存储技术:高密度存储技术可以在有限的物理空间内存储更多的数据,从而提高存储带宽。
例如,采用3D堆叠技术、多级单元存储技术等,可以提高DRAM存储带宽。
基于J2EE模型系统性能优化方法的研究和实现的开题报告一、选题背景:J2EE是目前企业级开发中最常用的框架之一。
随着应用规模及数据量的增大,系统性能问题逐渐凸显。
因此,如何对J2EE模型系统进行性能优化,提升系统性能,增强用户体验,成为当前亟待解决的问题。
二、选题意义:J2EE模型系统性能优化,是提高企业应用系统性能的有效途径。
通过对系统进行性能优化,可以减少资源占用,优化响应时间,提升用户体验,从而增强系统竞争力和可持续发展能力。
三、研究目标与内容:1.研究J2EE模型系统的性能瓶颈,分析造成性能瓶颈的原因和机制;2.寻找能够提高J2EE模型系统性能的方法和技术;3.构建适合J2EE模型的性能测试框架,分析系统性能指标;4.测试J2EE系统性能,对性能瓶颈进行定位并针对性的进行优化;5.实现性能优化方案,对性能进行验证和测试;四、研究方法和步骤:1.文献调研:调研当前J2EE模型系统性能优化的研究现状,并掌握国内外J2EE模型系统性能优化的最新进展和技术手段。
2.性能测试:构建适合J2EE模型的性能测试框架,对系统进行性能测试和性能指标分析。
3.性能定位:基于性能测试结果,对系统的性能瓶颈进行定位,并在定位后从多个方面进行优化。
4.性能优化:结合实际应用场景,采用多种优化手段,对性能瓶颈进行优化。
5.性能测试与验证:对性能优化方案进行验证和测试,保证优化效果的可靠性和稳定性。
五、预期成果:1.完成J2EE模型系统性能测试框架的构建和应用;2.掌握J2EE模型系统性能瓶颈的识别与定位方法,具备性能优化方案制定的能力;3.具备J2EE模型系统性能优化的实操能力,优化后的系统性能得到明显提升。
六、研究难点和解决方案:1.如何对系统的性能瓶颈进行准确定位,解决性能测试和性能瓶颈定位的数据密集和复杂度高的问题;解决方案:结合业内最佳实践,从不同角度进行性能测试,如负载测试、并发测试、压力测试等,结合测试结果,利用性能测试工具对系统进行性能瓶颈分析和定位。
基于LSM-Tree的键值存储系统的读写性能优化
程浩津;胡乃平
【期刊名称】《计算机测量与控制》
【年(卷),期】2024(32)6
【摘要】在写密集型工作环境中,日志结构合并树(LSM-Tree)已逐渐成为主流存储系统,LSM-Tree存在读操作速度慢、写操作成本高、范围查询操作效率低等问题;针对这些问题,为提升LSM-Tree的性能进行了研究,提出了一种基于LSM-Tree的键值存储系统的读写性能优化策略,通过键值分离策略设计vTree结构,并提出层内归并与消极的层间合并相结合的方法,以及范围查询优化合并的策略,从而优化系统的范围查询性能,在LSM-Tree和vTree采用不同的压缩结构,以实现系统读写性能的提升;实验结果表明,与RocksDB相比读性能提升30%,与RocksDB-vTree相比范围查询性能提升10%。
【总页数】8页(P262-268)
【作者】程浩津;胡乃平
【作者单位】青岛科技大学信息科学技术学院
【正文语种】中文
【中图分类】TP391.1
【相关文献】
1.基于SSD-SMR混合存储的LS M树键值存储系统的性能优化
2.一种基于LSM 树的键值存储系统性能优化方法
3.一种读写均衡的高性能键值存储系统
4.基于非
易失性内存的LSM-tree存储系统优化5.基于RDMA的分布式键值存储系统性能优化
因版权原因,仅展示原文概要,查看原文内容请购买。
大容量DRAM的刷新开销问题及优化技术综述崔泽汉;陈明宇【摘要】动态随机存储器(DRAM)具有速度快、密度高、成本低的优势,被广泛应用于计算机的主存.DRAM采用电容作为存储单元,电容电荷的多少表示数字“0”或“1”.由于存在漏电现象,电容里的电荷会缓慢流失,造成数据丢失,为保证数据正确性,DRAM采用周期性的刷新操作,在数据丢失前,把数据读出然后重新写入存储单元.刷新操作会阻碍正常访存的执行,造成性能上的开销;同时刷新操作会消耗额外的功耗,带来功耗上的开销.刷新的开销与DRAM密度相关:在过去,当DRAM密度较小时,需要刷新的存储单元数较少,刷新开销很小,并未引起关注;但是,随着摩尔定律的发展,DRAM密度越来越大,目前已发展到千兆比特级别,其刷新周期并没有改善,单位时间内需要刷新的存储单元数越来越多,从而使刷新带来的性能和功耗开销越来越严重.刷新问题目前得到了工业界和学术界的广泛关注.首先介绍了目前DRAM的刷新方式和开销,以及工业界已经实现的一些改进;然后把工业界和学术界提出的众多优化方法分为“减轻刷新操作对访存的阻塞”和“减少不必要的刷新操作”两大类,分别进行了分析和总结;最后给出了关于智能刷新管理的总结和展望.【期刊名称】《计算机研究与发展》【年(卷),期】2016(053)002【总页数】15页(P416-430)【关键词】主存;动态随机存储器;刷新;性能;功耗;保持时间;不必要刷新【作者】崔泽汉;陈明宇【作者单位】计算机体系结构国家重点实验室(中国科学院计算技术研究所) 北京100190;中国科学院大学北京 100049;计算机体系结构国家重点实验室(中国科学院计算技术研究所) 北京100190【正文语种】中文【中图分类】TP333.1DRAM具有速度快、密度高、成本低的特性,因此近几十年来一直是计算机主存的首选.随着摩尔定律的发展,处理器的频率越来越高、核数越来越多,虽然DRAM的密度越来越高,但是其延迟、带宽增长却很缓慢,越来越成为制约系统性能的瓶颈[1-2].与此同时,随着内存容量需求的逐渐增大,DRAM占系统整体功耗的比例可达40%[3-4].图1显示了DRAM系统的层次结构,从顶层到底层包含Rank,Chip,Bank,Sub-array,MAT,Cell.一个Rank由多个Chip并列组成,同步工作,共同驱动内存总线.一个Chip内部包含多个Bank,它们包含独立的行地址译码器(row decoder)和感应放大器(sense amplifier),可以并发访问.通常认为,Bank是DRAM完成独立操作的最小单元.但事实上,每个Bank又可进一步分割为很多Sub-array(纵向),每个Sub-array包含很多MAT(横向).每个MAT有独立的局部感应放大器.一个典型的MAT包含512×512个Cell,即存储单元.每个存储单元由1个电容和1个晶体管组成:电容的电荷多少表示数字“1”或“0”;晶体管的栅极与字线(wordline)相连,由字线控制晶体管的导通;晶体管的漏极与位线(bitline)相连,导通时由位线表示单元里存储的数据.访问DRAM时,首先需要“激活”1行,即提供行地址,由行地址译码器选通1个Sub-array中的1行,使其字线电平拉高;与字线相连的所有存储单元的晶体管打开,电容与位线连通,电容电荷流向位线,造成细微的电压变动;每个Sub-array的局部感应放大器可以感知到位线上的电压变动,并将其驱动到一定的高电平或低电平(与位线相连的电容也进行了充?放电).当局部感性放大器进一步将数据驱动到全局感应放大器后,才能进行“读写”,根据提供的列地址,从全局感应放大器中选中相应的数据,进行读取或修改.在需要读取另一行的数据前,需要对当前行进行“预充电”,拉低字线电平,关闭晶体管,使存储单元与位线断开,然后将位线电平驱动到中间状态.DRAM数据能被正常读取的关键在于上述激活过程中,电容电荷对位线造成的细微电压变动可以被感应放大器识别.但是,由于电容存在漏电,电容电荷会随着时间而流失,从而导致激活过程中的电压变动变小,直至不可识别.因此,DRAM需要被定期“刷新”,以补充流失的电荷,保证在激活过程中可以造成足够显著的电压变动.刷新操作会阻碍正常访存的执行,造成性能上的开销;同时刷新操作会消耗额外的功耗,带来功耗上的开销.在过去,DRAM密度较小,刷新造成的影响很小,因此并未受到关注.但是,随着摩尔定律不断发展,DRAM密度不断增大[6],目前已达千兆比特的量级,刷新造成的性能和功耗开销指数增加,渐渐引起了工业界和学术界的重视.近年来,工业界的一些标准和学术界的一些研究工作都对刷新进行了一些优化,以减轻其性能和功耗开销.本文标题中的“大容量”即指目前千兆比特量级的DRAM,以及未来更高密度的DRAM,如无特殊说明,下文所述的DRAM都是指大容量DRAM.本文首先简介了目前DRAM刷新存在的问题以及工业界已经提出的一些解决方案;然后把工业界和学术界的优化方法分为“减轻刷新操作对访存的阻塞”和“减少不必要的刷新操作”两大类,进行了分析和总结;最后给出了关于DRAM刷新的研究展望.1.1 刷新要求以JEDEC①DDRx规范[7-10]为例,要求在常温下每64ms(高温下为32ms)刷新一遍所有DRAM存储单元.DDRx规范定义了一种刷新方式AR(auto refresh),为了简化DRAM控制器设计,使其方便支持不同类型的DRAM芯片,DRAM控制器只需在每个刷新周期(比如64ms)内向每个Rank发送8 192个刷新命令,由DRAM芯片内部维护刷新的行指针,并根据自身密度决定要刷新的行数.DRAM控制器发送2个刷新命令之间的间隔为刷新周期的1?8192,定义为tREFI;DRAM芯片执行1个刷新命令的时间取决于DRAM芯片的密度,定义为tRFC.表1列出了DDR3DRAM在常温(85℃以下)?高温(85℃~95℃)下的刷新参数,在高温下刷新周期减半为32ms,相应的刷新间隔tREFI也减半.随着DRAM密度增大,其行大小保持不变,而总行数增多,因此每个间隔内需要刷新的行数增多,导致tRFC不断增大,刷新所占的时间比例tRFC?tREFI不断增大.JEDEC协议只是规定了刷新时间,但并没有规定刷新操作具体如何实现.以4Gb DDR3DRAM为例,要求300ns内完成对64行(8个Bank,每个Bank刷新8行)的刷新操作.本文在接下来的章节中先介绍单行的刷新操作是如何执行的,然后介绍如何在规定时间完成对多行的刷新.1.2 单行刷新原理一般来讲,对DRAM单行的刷新操作是这样执行的:1)起始状态,所有的位线电平被预充电至VDD?2;2)行地址译码器选通该行,拉高字线电平,该行所有存储单元的晶体管导通,使电容和位线连通;3)根据电容电平为高或低,电荷从电容流向位线或者从位线流入电容,从而在位线上造成细微的电平变动VDD?2±Δ,其变动方向被感应放大器识别;4)局部感应放大器根据变动方向,对位线进行充电或放电,将其电平拉至VDD或0,在此过程中,由于位线和电容连通,电容也被重新充电至VDD或放电至0,即进行了刷新操作.上述过程类似于激活操作,在DDR3协议中激活操作的延迟定义为tRAS,约为35ns.在刷新下一行之前,还必须先断开晶体管,将位线电平重新预充电至VDD?2.此过程类似于预充电操作,在DDR3协议中预充电操作的延迟定义为tRP,约为15ns.因此Joint Electron Device Engineering Council.http:??www.jedec.org可认为单行刷新等效于激活操作和预充电操作的组合,其延迟大致为50ns.1.3 AR实现由于单行刷新的延迟大致为50ns,以4Gb DRAM为例,AR要求在300ns内完成对64行的刷新操作,因此只能通过并行方式实现.但是,并行刷新所消耗的叠加电流必须在DRAM容许范围内.比如,DDR3协议为了避免多个并行的激活操作带来的电流叠加,规定了在tFAW时间(约30ns)内只能执行4个激活操作.如1.2节所述,单行刷新类似于激活操作,也会受到DRAM最大容许电流的限制.目前,DRAM执行AR时利用了Bank内Subarray级的并发度,而不是Bank间的并发度(8个Bank并行刷新造成的电流叠加会超出DRAM的电流限制).由于刷新只需要使用每个Sub-array的局部感应放大器(区别于激活操作),使得多个Subarray可以并行刷新,而且Bank内多个Sub-array的并行刷新可以共用很多电路,从而使其消耗的电流大大低于线性叠加.具体地,DRAM将一次刷新操作内要刷新的行分为若干个组,每个组包含1个Bank内的多行①,位于不同的Sub-array.组内的多行利用每个Subarray的局部感应放大器,并行进行刷新.在电流限制范围内,组与组之间的刷新过程可以有一定的重叠.图2显示了多行刷新实现的示例:在AR执行期间,DRAM Rank的所有Bank都无法处理正常访存请求.最坏情况下,访存的等待时间为tRFC.1.4 ROR(RAS-only Refresh)实现另一种没有在JEDEC协议中定义、但是在学术研究中经常被提到的刷新实现方式是利用DRAM激活操作实现刷新功能.如1.2节所述,单行刷新操作等效于对其的激活操作,由于激活操作在早期被称为行地址选通(row address strobe,RAS),因此这种刷新实现方式被称为ROR[11].不同于AR只需控制器在每个刷新间隔内向DRAM发送1个刷新命令,即可完成对多行的刷新;ROR要求控制器向DRAM的每个待刷新的行发送1个激活命令.激活命令的粒度更小,可以指定刷新的行地址,实现对单行进行控制,因此其刷新实现方式更灵活.比如为了避免在时间tRFC里集中刷新多行从而长时间占用整个Rank,可以将对多行的激活操作尽量分散到整个刷新间隔中;同时,当一个Bank执行激活操作时,其他Bank仍然可以执行正常访存操作,减少访存的等待时间.由于ROR以行为粒度进行刷新控制,因此经常被使用于一些智能刷新管理方法中.其缺点是不能充分利用Sub-array级的并发刷新在时间和功耗上的优势.同时,由于需要发送大量的激活命令,DRAM的命令总线更容易饱和,从而影响正常访存命令的发送.1.5 DRAM刷新开销刷新操作会阻塞正常访存的执行,造成性能的开销.AR执行期间,DRAM Rank 的所有Bank都无法响应访存请求.ROR执行过程中,正在刷新的Bank无法接受访存请求.不论哪种刷新方式,都会导致访存被堵塞,延迟增大,最终导致CPU流水线堵塞,性能降低.同时,刷新是非常消耗功耗的操作.表2显示了DRAM一些操作所消耗的平均电流[12].可见刷新操作是功耗最高的操作,而且持续时间很长.随着工艺缩进,DRAM密度仍将以2~3年的速度成倍增长,但是每64ms需要将整个DRAM刷新一遍的约束并没有得到改善,因此,每个刷新间隔内需要刷新的行数相应地成倍增加,刷新所导致的性能和功耗开销随着密度增大而指数增长.图3预测了DRAM密度从4Gb增长到32Gb(tRFC为640ns),相比于理想无刷新的DRAM,上述2种刷新方式所带来的性能和功耗开销[13].在32Gb时,AR使性能下降23.8%,功耗增长114%(ROR由于命令总线饱和,而无法完成刷新要求).1.6 工业界关于刷新的一些优化1)Self Refresh.JEDEC DDRx协议[7-10]和LPDDRx[14-16]协议都支持一种Self Refresh模式,是一种低功耗模式.在这种模式下,DRAM的时钟、DLL、输入?输出缓冲等部件停止工作,只有维持刷新的电路仍然工作,因此这种刷新方式相比于AR更加节省功耗.但是,这种模式的退出要耗费很长时间(≥500ns),如果有访存到来,会被阻塞得更久,更加影响性能,因此一般只用于DRAM长期休眠的场景.2)Postponed Refresh.JEDEC的DDRx协议[7-10]支持灵活的刷新调度,允许将AR命令推迟最多8个刷新间隔,以避免阻塞访存请求.但这种方式一般只适用于访存不密集的场景,对于访存密集的场景,无论如何推迟,总是会阻塞访存请求.3)Per-Bank Refresh.JEDEC的LPDDR2协议[14]和LPDDR3协议[15]支持以Bank为单位进行刷新.这种方式有2个好处:①把每次耗时较长的刷新操作分成了多个耗时较短的刷新操作,从而减少阻塞访存的时间;②一个Bank刷新时,其他Bank可以并行处理正常访存请求.但是,完成同样多行的刷新,多个Per-Bank Refresh的总执行时间要长于单个All-Bank Refresh(即AR)的执行时间,这是因为每个Per-Bank Refresh后都需要一段恢复时间,而且Bank 间的刷新过程不能重叠.以Bank数为8、容量为4Gb的LPDDR3DRAM为例,AR的持续时间tRFCab=130ns,而单个Bank的刷新持续时间tRFCpb=60ns.因此,这种方式有优势也有劣势,其效果取决于具体的应用场景.4)Fine Granularity Refresh.JEDEC的DDR4协议[7]支持1x,2x,4x的刷新模式.1x同上述的AR模式,每个刷新周期发送8192个刷新命令;2x,4x模式每个刷新周期发送的刷新命令个数增加2倍和4倍.相应地,2x,4x的单次刷新行数也减少为1x的1?2,1?4,刷新时间tRFC有一定程度的减少.这种方式也是把一个耗时较长的刷新操作分解为多个耗时较短的刷新操作(每个操作仍以Rank为单位),但是,2x,4x模式的刷新操作后都需要一段恢复时间,其刷新消耗的总时间长于1x模式.以容量为4Gb的DDR4DRAM为例,1x模式的刷新持续时间tRFC1为260ns,而2x,4x模式的刷新持续时间tRFC2,tRFC4分别为160ns,110ns,大于1x模式的1?2,1?4.5)Temperature Controlled Refresh.JEDEC的DDR4协议[7]支持在温度低于45℃时,由DRAM内部按一定的比率选择性地跳过一些刷新命令的执行,从而达到降低刷新功耗的目的.这主要是得益于温度低时,电容的漏电速度减慢,保持数据的时间变长,从而可以降低刷新的频率.但是,对于访存密集的场景,DRAM的温度通常会高于85℃[17],使得这种改进只能在访存很不密集并且散热很好的场景下才能起作用.6)Partial Array Self Refresh.JEDEC的LPDDRx协议[14-16]支持在Self Refresh模式下禁止DRAM里的部分Bank以及Bank里的部分阵列的刷新操作,从而减少刷新的次数,降低功耗.这种方式不能保证未刷新的存储单元里的数据的正确性,因此适用于不存储有效数据的场景.虽然目前这种方式只适用于类似休眠的Self Refresh模式,但是其工作原理很容易能扩展到正常工作的AR模式.但是,要实际应用这种方式,需要操作系统事先回收相应的存储空间,迁移出有效数据,才能禁止对其的刷新操作.如上所述,刷新操作对性能的影响主要归咎于其阻塞了正常访存的执行.因此,如何从命令调度以及刷新实现方式上避免刷新操作对正常访存的阻塞,是降低刷新的性能开销的一个研究方向.2.1 刷新命令调度刷新命令调度主要是DRAM控制器调整刷新操作的执行时机,以避开正常的访存命令执行.图4显示了DRAM控制器对1个DRAM Rank进行命令调度的基本原理.在不调度的情况下,DRAM控制器每隔tREFI生成1个刷新命令,并立即执行该刷新操作.如果访存命令队列不空,那么队列中的这些访存将至少被延迟tRFC时间.JEDEC DDRx协议的Postponed Refresh[7-10]允许将AR命令推迟最多8tREFI,从而为调度刷新命令执行时机提供了可能.一种基本的调度策略是推迟刷新操作的执行,优先执行队列中的访存命令.新生成的刷新命令并不立即执行,而是先填入刷新命令队列,只有当访存命令队列为空或者刷新命令已经被推迟了8tREFI时,才执行刷新命令.这种策略降低了刷新操作的优先级,从而减轻其对正常访存请求的阻塞.但是这种基于访存命令队列是否为空的策略存在一个风险,即有可能当前访存命令队列为空并因此执行了刷新操作,但是马上又有访存请求到来,那么新到来的访存请求最多将被推迟tRFC时间.ER(elastic refresh)[18]改进了上述调度策略:当访存命令队列为空时,不立即执行刷新操作,而是等待一段空闲时间(idle delay),如果没有访存请求到来,才执行刷新操作.其基本思想是,访存命令队列为空后,访存请求有可能在idle delay的时间内到达,因此再适当地推迟刷新操作,进一步降低阻塞访存请求的概率.其idle delay值的选取是动态进行的,当刷新被推迟的时间较短时(小于2tREFI),idle delay值设置为较大的预测值,允许多等待一段时间;随着刷新被推迟的时间增长(2tREFI~6tREFI),idle delay值线性下降,表示刷新的优先级不断提高;当刷新被推迟足够长时间后(大于6tREFI),Idle Delay设置为0.上述idle delay的变化过程,体现了刷新操作的优先级从低到高的转变过程.上述2种调度策略在访存不是很密集、访存命令队列有可能为空的场景下比较有效,但是在访存很密集的场景下,比如多核,访存命令队列基本不会为空,所有的刷新操作都将被推迟8tREFI然后强制执行,因此并不能有效改善对访存命令的阻塞问题[6].2.2 访存命令调度除了对刷新命令进行调度外,DRAM控制器还可以对正常的访存命令进行调度,使其避开刷新操作的执行,避免被阻塞.主存系统通常拥有多个Rank,一个Rank执行刷新操作时,其他Rank仍然可以正常工作,从而为访存命令调度提供了可能.PCD(preemptive command drain)策略[19]提前执行访存命令队列中属于即将要刷新的Rank的访存请求.由于刷新有很强的周期性和规律性,DRAM控制器很容易预测即将刷新的Rank.这样当这个Rank进入刷新状态时,可以尽量减少访存命令队列中属于这个Rank的访存请求,减轻队列中访存请求与刷新的冲突概率和等待时间.DCE(delayed command expansion)策略[19]在将访存请求填入访存命令队列时,推迟填入那些属于正在刷新的Rank的访存请求,避免它们占用访存命令队列的调度资源.这样可以将更多可执行的访存请求填入访存命令队列进行调度.PCD和DCE策略的目标都是当一个Rank正在执行刷新操作时,尽量减少访存命令队列里中属于该Rank的访存请求.因为这些访存请求在访存命令队列中并不会被调度执行,反而占用了队列资源,减少了队列中其他Rank可调度请求的数目,降低了其他Rank的命令调度效率,甚至是占满队列后阻塞其他Rank的命令执行.2.3 减少单次刷新的阻塞时间除了利用命令调度避免访存与刷新冲突外,如何通过刷新实现方式的改进,在发生冲突时减少单次刷新阻塞访存的时间也是一个的研究方向.FGR(fine granularity refresh)[7]通过提高刷新频率,减少每次刷新的工作量,以降低每次刷新阻塞访存的时间.但是FGR增加了总的刷新时间,实验评估显示对于大多数应用,4x模式的性能不如1x模式的性能[19].RP(refresh pausing)[20]是基于基本的AR所做的改进.由于AR需要一次刷新很多行,如果访存命令在此期间到来,就会被阻塞很长时间.RP通过修改DRAM,允许在访存命令到来时,立即暂停当前的AR,优先执行访存命令,等访存命令执行完后,再接着执行未完成的刷新操作.但是,在访存密集的场景下,RP的效果有限,其会导致刷新操作被频繁暂停,并且最终需要被强制执行(推迟的时间超过8tREFI).2.4 刷新与访存并发如何尽量使正常访存和刷新并发进行,是降低刷新影响的另一种方法.ROR[11]利用激活操作进行刷新,一次只刷新一个Bank的1行,允许刷新操作和访存命令在Bank级并发执行:一个Bank执行刷新操作时,其他Bank可以并发执行访存命令.对于低密度的DRAM,这种方式降低了刷新操作和访存命令的冲突概率,可以减少访存的平均等待时间,因此其性能优于AR.但是,由于不能利用Sub-array级的并发刷新,需要更多次刷新操作完成1次AR的工作量,在高密度的DRAM场景下其刷新效率不高的劣势体现出来[13],一方面,频繁的激活操作反而增大了冲突概率,另一方面,也会严重影响系统的访存并发度,因此其性能反而不如AR,如图3(a)所示;另外,由于同样的原因,其功耗开销要更大,如图3(b)所示.PBR(per-bank refresh)[14-15]同样支持刷新操作和访存命令在Bank级并发执行,而且可以在一定程度上利用Sub-array级的并发刷新,改善ROR刷新效率不高的劣势.实验评估显示PBR的性能总是好于AR[21].但是受最大电流的限制,刷新操作执行时,可以并发执行的访存命令数相应地减少,降低了系统的访存并发度;而且由于Bank个数较少,仍然会有相当概率导致访存命令和刷新操作冲突,因此这种方式依然会带来一定的性能开销[21].SALR(sub-array-level refresh)[6,21]在PBR基础上,更进一步的改进是在Sub-array级支持刷新操作和访存命令的并发执行.由于刷新只需要使用每个Sub-array的局部感应放大器,因此可以通过修改DRAM硬件的方式,使一些Sub-array在执行刷新时其他Sub-array可以进行正常的激活、读写、预充电操作.由于Sub-array的个数远大于Bank的个数,因此访存命令和刷新操作的冲突概率极小,可以基本做到不阻塞访存命令.不过,由于最大电流的限制,执行刷新操作时,会减少可并发执行的访存命令个数,从而仍在一定程度上影响性能.另外,这种方式需要对DRAM硬件进行较大改动.2.5 小结表3对本节所述方法进行了归纳:不管是刷新命令调度还是访存命令调度,其思想是不修改DRAM本身,而是改进DRAM控制器的调度策略,使刷新命令和访存命令相互避开,降低冲突导致的访存延迟增加,减少性能开销.上述策略都是基于一定的先验信息,对刷新或者访存命令的执行时机进行调度.不同的是,ER所依据的先验信息(idle delay)由访存历史信息预测得来,而PCD和DCE所依据先验信息(即将刷新的Rank)由刷新的规律性很容易准确得到,因此相比而言,后者更具优势.虽然后者可以成功地使访存命令避开刷新操作,提高吞吐量,但是其不可避免地推迟了某些访存命令的执行,使其等待时间增长,从而可能造成性能上的损失.因此,更加智能的调度算法仍然是未来的研究方向.刷新实现的改进可分2类:FGR和RP尽量减少单次刷新操作阻塞访存的时间(更短的刷新操作或者可暂停的刷新操作);ROR,PBR,SALR则是寻求刷新和正常访存可并发执行的机会,使得刷新操作在“后台”进行,尽量把其对正常访存的干扰降至最低.FGR,RP在访存很密集的情况下效果有限,因为其堵塞访存的总时间没变,甚至有所增长.ROR虽然实现最简单,不需要修改DRAM,但是不能利用Bank内多个Sub-array实现并行刷新,因此在高密度场景下效率不高,性能反而不如AR.PBR的实现简单(LPDDRx已经支持),而且可以利用多Bank并发.SALR的性能最好,但是需要对DRAM进行加大改动.PBR和SALR可能是未来的发展方向.值得注意的是,将刷新与访存并发执行并不是完美的解决方案,即使完全没有冲突,由于DRAM最大电流的限制,刷新操作的“后台”执行会影响“前台”可并发执行的访存请求数,仍带来一定的性能开销.上述方法在一定程度上降低了刷新操作对性能的影响,但是并没有改变刷新操作的总量,执行刷新操作消耗的功耗并没有得到改善.从图3(b)来看,随着DRAM密度进一步增大,刷新操作所消耗的功耗将超过执行正常访存命令所消耗的功耗.因此,如何识别并减少不必要的刷新操作,省去其消耗的功耗,是降低刷新的功耗开销的一个研究方向;与此同时,由于刷新操作的减少,其对性能的影响也能得到改善.事实上所有的DRAM行并不需要以同样的周期刷新,有很多方法可以利用各种信息,减少不必要的刷新操作.根据所利用信息的不同,本节将从信息是什么、如何获取相关信息、以及如何利用相关信息减少刷新操作等方面展开介绍.3.1 利用单元保持时间差异性保持时间指DRAM存储单元从被写入数据到仍然可以读出正确数据所持续的时间,即一个存储单元不刷新而能保持数据正确的最长时间.由于制造工艺的偏差(process variation),不同存储单元的保持时间有较大差异,而JEDEC规范对所有存储单元规定了统一的刷新周期,其实是为了保证保持时间最短的存储单元不丢失数据.事实上,保持时间的概率分布呈现为2部分:主要分布和长尾分。