Professional Documents
Culture Documents
微处理器存储体系结构优化关键技术研究_钱程
微处理器存储体系结构优化关键技术研究_钱程
UDC 004.2 密级 公开
工学博士学位论文
微处理器存储体系结构优化关键技术研究
博士生姓名 钱程
学 科 专 业 计算机系统结构
研 究 方 向 微处理器体系结构
指 导 教 师 王志英 教授
国防科技大学研究生院
二〇一九年三月
Research on Key Techniques Optimization of
Microprocessor Memory Architecture
A dissertation
Submitted in partial fulfillment of the requirements
for the degree of Ph.D of Engineering
in Computer Science and Technology
Graduate School of National University of Defense Technology
Changsha, Hunan, P. R. China
March, 2019
国防科技大学研究生院博士学位论文
目 录
摘 要 ........................................................................................................................ i
ABSTRACT ............................................................................................................... iii
第一章 绪论 ............................................................................................................ 1
1.1 研究背景 ................................................................................................... 1
1.1.1 大数据应用广泛存在于学术研究与工业设计中 ........................ 1
1.1.2 存储墙问题在当今对于存储系统提出了更加严峻的挑战 ........ 2
1.1.3 三维堆叠存储系统与新型非易失存储介质研究蓬勃发展 ........ 4
1.2 课题动机 ................................................................................................... 6
1.2.1 当前商用存储结构仍在各方面都受到制约 ................................ 6
1.2.2 新型存储结构与技术为提高系统总体性能带来机遇 ................ 7
1.3 国内外相关工作 ....................................................................................... 10
1.3.1 三维存储结构相关工作 ................................................................ 10
1.3.2 面向处理器及高速缓存的主流预取技术 .................................... 17
1.3.3 面向高速缓存及主存系统的主流压缩技术 ................................ 22
1.4 本文研究内容 ........................................................................................... 27
1.4.1 针对多级存储结构的预取优化 .................................................... 27
1.4.2 针对三维存储系统的压缩管理 .................................................... 27
1.4.3 基于三维存储系统的加速器 ........................................................ 28
1.5 本文主要创新工作 ................................................................................... 28
1.6 论文结构 ................................................................................................... 29
第二章 处理器存储体系结构以及关键技术介绍 ................................................ 31
2.1 处理器存储系统结构介绍 ....................................................................... 31
2.1.1 传统处理器存储体系结构及其优化 ............................................ 31
2.1.2 新型存储介质及结构 .................................................................... 34
2.1.3 非易失存储介质 ............................................................................ 37
2.2 预取相关技术介绍 ................................................................................... 39
2.2.1 预取技术的分类 ............................................................................ 39
2.2.2 经典预取器设计思路 .................................................................... 40
2.2.3 预取技术的问题与挑战 ................................................................ 41
2.3 压缩相关优化技术 ................................................................................... 42
2.3.1 压缩技术的必要性及优势 ............................................................ 42
第I页
国防科技大学研究生院博士学位论文
第 II 页
国防科技大学研究生院博士学位论文
第 III 页
国防科技大学研究生院博士学位论文
致谢 ............................................................................................................................ 129
第 IV 页
国防科技大学研究生院博士学位论文
表 目 录
第V页
国防科技大学研究生院博士学位论文
图 目 录
第 VII 页
国防科技大学研究生院博士学位论文
第 VIII 页
国防科技大学研究生院博士学位论文
第 IX 页
国防科技大学研究生院博士学位论文
摘 要
大数据时代的来临加剧了本就已很严重的存储墙、带宽墙以及功率墙问题,
也使得当前的计算机系统在处理相关的数据密集型应用时,存储系统往往会成为
整个系统的性能瓶颈。近年来一些针对性的存储优化技术以及新型存储结构、介
质等为存储结构的发展提供了可能性。本文面向存储结构中真实存在的各种问题,
围绕从各方面对存储结构进行优化来展开,基于不同存储结构的优势与不足,针
对性的设计优化框架来提高存储系统的性能;通过合理的利用新型存储结构的存
储内计算特性,以全新的视角探究将存储系统作为加速器的可能性。在目前通用
存储系统以及新型存储结构的框架下,本文重点解决三个问题:如何在当前多级
复杂存储结构的框架下充分挖掘预取技术的潜力;如何在目前 DRAM 可扩展性已
经乏力且新型存储结构存储容量并无很大提高的情况下,通过压缩技术增大其有
效容量;如何合理的利用当前新型三维存储结构的逻辑层进行存储内计算,针对
某类重要应用进行加速。本文取得的主要研究成果如下:
1. 提出了一种面向多层存储结构的优化预取效率方法 CHAM(Composite
Hierarchy-Aware Method for improving Prefetch Efficiency)。硬件预取一直以来都是
提升系统性能的重要方法。然而硬件预取的效率在很大程度上取决于预取的准确
率,若准确率较低的话,预取器可能会降低系统的性能。之前有工作提出在两层
Cache 结构上进行自适应性预取的方法,这种方法在两层 Cache 结构上可以提升
系统性能,而在更为复杂的存储系统中,例如三层的 Cache 结构,所取得的性能
加速就比较有限。CHAM 部署在存储系统中的中层 Cache 中,使用运行时的预取
准确率作为评估参数。CHAM 中包括两个工作:1)一种动态自适应的预取控制
机制,用于在实时针对预取指令调度的优先级以及预取数据的传输层次进行调度。
2)一种以提高预取率为目的的混合型 Cache 替换策略。
2. 提出了一种提升三维存储结构容量的压缩管理机制 CMH(Compression
Management in the Hybrid Memory Cube)。由于受到 DRAM 位元可扩展性以及功
耗密度的影响,单个 HMC 的物理存储容量很有限,而且并不太可能在未来有明显
的增长。因此,在应对大数据时代的高性能应用程序时,HMC 的存储容量受限将
是一个非常严重的问题。针对新型存储系统容量提升不高且后继乏力的情况,提
出了一个用于增长 HMC 有效存储容量的压缩管理机制 CMH。CMH 部署在 HMC
的逻辑层,通过在数据传输的过程中压缩数据以及在运行时对 HMC 中 DRAM 层
存储的数据进行选择性的压缩。CMH 可以有效的提高存储容量,同时也节省了运
第i页
国防科技大学研究生院博士学位论文
行时所消耗的带宽。
3. 提 出 了 使 用 混 合 存 储 块 (HMC,Hybrid Memory Cube) 进 行 加 速 的 方
法,HMCSP(CSR-based SPMV in HMC)与 CGAcc(CSR-based Graph Traversal
Accelerator on HMC)。HMC 作为一种新型的三维存储结构,其在有计算功能的逻
辑层上堆叠负责存储数据的 DRAM 层。得益于 HMC 独特的存储内计算(PIM)
特性以及非常短的传输延迟,将 HMC 作为加速器优化一些常用的应用程序是一
种很有前景的研究点。HMCSP 是一种利用 HMC 逻辑层的 PIM 部件来降低传输
延迟,提高性能的方法;CGAcc 利用存储内预取器,基于 HMC 的三维结构,部
署在其逻辑层上以利用其 PIM 部件以及很短的传输延迟,并通过将预取流水线化
来提高存储层次的并行,进而对程序进行优化。
对存储系统的优化一直以来都是研究的热点,然而由于现在存储技术的飞速
发展,对存储的优化仍有相当大的空间。本文以当前通用的处理器存储架构,以
及一些新型的存储架构为研究基础,提出并设计实现了若干针对目前存储系统中
的性能、容量等问题的优化技术及框架。本文的所有工作都经过了大量实验的验
证,结果也表明对于存储系统的优化是实际有效的,能够应用于未来存储系统的
设计与实现。
关键词: 计算机存储结构;三维堆叠存储;预取技术;压缩算法;存储内计算
第 ii 页
国防科技大学研究生院博士学位论文
ABSTRACT
The advent of big data era has exacerbated the already serious problems of mem-
ory wall, bandwidth wall and power wall. It also makes the memory system become the
performance bottleneck in the whole computer system when dealing with data-intensive
workloads. In recent year, some customized memory optimization techniques, as well as
some novel memory architecture and media, has offer the high possibility of the develop-
ment of memory architecture. This paper is oriented to some real problems in the current
memory structure, focusing on the optimization of the memory structure in many levels.
In conjunction with the advantage and disadvantage of different memory architecture and
hierarchies, some optimization frameworks have been proposed in this paper to migrated
the problems and improve the performance. Besides, using the processing-in-memory
features of the novel memory architecture, this paper also explores the possibility of using
a memory system as an accelerator with a new perspective. Under the current framework
of commercial memory architecture and some novel memory concept, this paper focus on
three issues: 1) how to fully exploit the potential of the prefetching technology under the
current complex multi-level memory hierarchy; 2) how to achieve higher effective capac-
ity by compression technology which the DRAM scalability is weak and the capacity of
novel memory architecture is not greatly improved; 3) how to rationally utilize the logic
layer of the current three-dimensional stacked memory architecture for in-memory com-
puting, and accelerate a certain type of workloads. The main contributions of this paper
are as follows:
1. We proposed a composite hierarchy-aware method for improving the prefetching
efficiency of multi-level memory structure, called CHAM(Composite Hierarchy-Aware
Method for improving Prefetch Efficiency). Hardware prefetching has always been a
significant way to improve system performance. However, the efficiency of hardware
prefetching largely depends on the prefetching accuracy. The prefetcher may degrade the
performance of the system while the accuracy is low. Previous work has proposed that
an adaptive prefetching method for two-level Cache structure. This method can improve
system performance in two-level Cache structure, but it does not work well for a more
complex memory system, such as a three-level cache structure. CHAM is deployed in the
middle level cache (MLC) in the memory system, using the prefetch accuracy in the run-
第 iii 页
国防科技大学研究生院博士学位论文
time as the evaluation parameter. CHAM contains two sub-systems: 1) dynamic adaptive
prefetch control mechanism to schedule the priority and data transfer of prefetch accesses
across the cache hierarchical levels in the runtime and 2) a prefetch efficiency-oriented
hybrid cache replacement policy to select the most suitable policy
2. We proposed a new strategy to increase the effective data capacity of the HMC,
called Compression Management for HMC (CMH, Compression Management in the Hy-
brid Memory Cube). due to limitations in scalability and power density of a DRAM bit
cell, the physical data capacity of an individual HMC is relatively modest and unlikely
to grow significantly and it is likely to be a challenge in adopting the HMC for big data
in high-performance computing. CMH is deployed in the logic layer of the HMC. By
selectively compressing data during data transmission and selectively compressing data
stored in the DRAM layer in the HMC, CMH can effectively increase the capacity. It can
also save bandwidth consumed in the runtime.
3. We proposed two novel mechanisms, HMCSP(CSR-based SPMV in Hybrid Mem-
ory Cube) and CGAcc(CSR-based Graph Traversal Accelerator on HMC), to accelerate
two classical applications, Matrix Multiplication and Graph Traversal, which have com-
pletely different memory access pattern. As a novel of three-dimensional stacked memory
structure, HMC stacks DRAM layers, which responsible for storing data, on a logical layer
with computational functions. Taking the advantage of the processing in memory (PIM)
feature and very short access delays from logical layer to DRAM layer, HMC can be used
as an accelerator for optimizing some significant workloads. HMCSP is such a method
that use the PIM component on HMC’s logic layer to reduce the transaction latency
and improving the performance; CGAcc is deployed on the logic layer and uses the in-
memory prefetcher to utilize its PIM components. CGAcc can optimize graph traverse by
taking advantage of the short transaction delay and parallelizing the prefetch to increase
the memory-level parallelism.
Optimization of memory system has always been a research hotspot. However, due
to the rapid development of memory technology, there is still great space for the memory
optimization. This paper designs and presents some optimization techniques and frame-
works for improving performance and capacity based on the current general memory ar-
chitecture and some novel memory concepts. All of the works have been evaluated by
comprehensive and sufficient experiments. The results also show that the optimizations
of the memory system are practical and can be applied to the design and implementation
第 iv 页
国防科技大学研究生院博士学位论文
第v页
国防科技大学研究生院博士学位论文
符号使用说明
第 vii 页
国防科技大学研究生院博士学位论文
第一章 绪论
大数据时代的到来进一步加剧了本就已经很严重的存储墙问题,使得处理器
存储系统成为整个系统的性能瓶颈,如何优化存储器存储系统也是当前研究的热
点问题。为了突破存储墙的限制,近年来一些针对性的存储优化技术,以及一些
新型存储结构与介质的提出都为存储系统的提升提供了可能性。但是无论是存储
优化技术,或是新型存储结构和机制都有其局限性,无法使处理器存储系统得到
非常有效的性能提升。为了进一步的对存储系统进行优化并挖掘其在存储之外的
潜力,本文基于不同存储结构的优势与不足,针对性的设计优化框架来提高处理
器存储系统的性能;通过合理的利用新型存储结构的存储内计算特性,以全新的
视角探究将处理器存储系统作为加速器的可能性。
1.1 研究背景
1.1.1 大数据应用广泛存在于学术研究与工业设计中
大数据时代的到来使人们再一次意识到数据研究的重要性,近年来 “大数据”
一词俨然已经成为流行词语,各行各业都会涉及到,这在客观上也促进了学术界
与工业界对大数据相关技术进行研究。大数据时代最直观的特征就是数据量的急
剧增大,这种爆炸性的数据量增长的来源是多方面的,比如随社交网络功能的愈
发成熟与多样化,人们每小时在社交网络上交互与存储的流媒体都在数百甚至
上千 TB 的数量级 [3]。再比如众多科技部门进行的许多科学计算,例如基因工
程、高能物理、天气预测等方面也会产生大量的模拟数据。根据之前文献的说法,
美国能源部下属的一些计算中心,如橡树岭国家实验室(OLCF)、阿贡计算中心
(ALCF)以及能源研究科学计算中心 (NERSC) 等每年产生的数据都以数百 TB 计
算,这个数据在今年已经突破了 EB 级 [4] [5] [6] [7]。如何突破传统 I/O 瓶颈,以
较低开销高效处理如此之大的数据对当前的计算处理系统结构提出了很高的要求,
也带来了很大的挑战,文献中提到支持大数据的低开销高效系统结构将在未来很
长一段时间内为研究热点 [8]。
数据量的爆炸式增长绝不仅仅是对存储容量产生影响,对于计算机系统整体
的计算能力、通信能力、处理数据的能力等也提出了更高的要求,各个研究机构
与企业的超级计算机系统也需要更新换代以满足各方面的要求。以 NERSC 的超
级计算机为例,2010 年使用的 Hopper 超级计算机拥有 212TB 的总体存储容量,
之后的 Edison 超级计算机拥有 333TB 的总体容量,再之后的 TITAN 与 MIRA 超
级计算机分别有 710TB 与 786TB 的存储系统 [9] [10] [11] [12]。并且由于各个科
第1页
国防科技大学研究生院博士学位论文
1.1.2 存储墙问题在当今对于存储系统提出了更加严峻的挑战
多核众核处理器的处理能力的快速稳定增长需要存储带宽以同步的速度跟
上。但很遗憾的是,存储单元的处理速度提升始终没有跟上处理器的处理速度提
升,这也就造成了所谓的存储墙问题。现代的数据中心处理的巨额数据量也加剧
第2页
国防科技大学研究生院博士学位论文
图 1.1 存储墙问题示意图
如今存储器中的多级层次结构正是为了提升存储系统的性能,从而缓解存储
墙问题而设计的。人们总是希望一个存储器具有访问速度快、容量大以及价格低
廉等多种特征,但遗憾的是,这些特性往往是不能兼顾的,一般情况下访问速度
快的存储器容量都不会很大而且价格也偏贵,反之亦然。因此现代存储系统一般
都配备了一个从 Cache 到 DRAM 主存,再到 SSD 或 HDD 存储层次,访问速度与
每比特价格由高到低依次递减,存储容量则依次递增。这种层次结构充分利用程
序的空间局部性,尽可能的降低存储系统与处理器系统的处理速度差距。但是对
于访存模式并不规则的应用程序,这种多层次结构的效果就非常有限了。
而大数据应用由于其独特的运行时访存特征对存储系统提出了更多要求,主
要有以下几点:1)一般大数据应用程序对存储容量提出了更高的要求,但目前要
提升现有的存储系统容量已经难上加难了,这主要是因为 DRAM 的可扩展性已经
基本被发掘殆尽,而存储系统的层次不可能无限制的增加,这本身也没意义。由于
大多数大数据应用都适用于分布式结构,因此将存储系统横向扩展进行 scale-out
是一种解决方法。这种方法简单来说就是将一个整体的存储系统分成若干个存储
节点,每个存储节点都具有简单的计算功能和存储功能,互相之间可以进行互联
通信。实际上镁光的 HMC 产品就有此功能。2)大数据应用的实时性对访存延迟
提出了更高的要求。Scale-out 结构的每个节点由于可以进行简单的计算,其访问
延迟会更低,而且若处理的数据刚好就在本节点(由于空间局部性,这种情况发
第3页
国防科技大学研究生院博士学位论文
生的可能性很大),则通讯延迟也可以免去。3)大数据应用对数据存储的成本也
提出了高要求。巨量的数据存储也会带来巨量的成本。因此如何有效的进行存储
以节省开销需要考虑到多方面,如存储介质、性能等。此外对存储系统的冗余能
力、纠错能力等可靠性上也都提出了要求。
1.1.3 三维堆叠存储系统与新型非易失存储介质研究蓬勃发展
近年来随工艺技术的进步,立体芯片封装技术已有很大程度上的成熟与进步。
立体封装技术克服了传统二维芯片封装技术中所面临的资源短缺,扩展困难等问
题,将资源分散地堆叠在每个层(layer)中,层与层之间通过硅穿孔技术(TSV)
相连,实际上这种 TSV 技术早在 2009 年就已经有成熟的工艺并且可以量产,并
可根据需求对 TSV 定制不同的直径、深度和深度比以决定不同的 TSV 特性。TSV
的使用可以有效的降低数据传输长度,从而有效地降低存储结构中各个模块间进
行数据传输的延迟。在一个三维堆叠结构中一般都配备有大量的 TSV 导线,因此
互联开销比较低,带宽会被大大增加,而空间密度的提高也有效地降低了能耗。
三维堆叠技术的发展与成熟也催生了针对三维堆叠结构的设计工具的出
现。例如 3DCacti [27]、Thermal-Aware 3D Floorplanning [28]、HMCSim [29] 以及
CasHMC [30] 等。其中 3DCacti 是一个三维存储系统的架构级工具,主要从层数、
功耗、密度等方面对架构进行权衡和评估。Thermal-Aware 3D Floorplanning 更偏
向底层,在布局布线层次对存储结构中的温度、能耗等进行研究。HMCSim 则是
针对镁光公司推出的 HMC 产品的一款模拟器环境,可以用于集成到其他模拟环
境中以提供相近于 HMC 结构的配置。CasHMC 则是一款精确到时钟周期的、以
存储轨迹文件为输入的结构级模拟器,可以独立的运行以测试应用程序在三维堆
叠存储环境中运行的各项参数。
三维堆叠存储结构在微处理器领域也有很多应用,例如 SRAM 阵列、计算
部件堆叠等等。Loh 等人分别从粗粒度以及细粒度的角度对不同堆叠实例进行
了详细分析与研究,文献中展示了主流的五种处理器 -存储器堆叠模式,分别为
dance-hall 结构、sandwich 结构、per-lay 结构、terminal 结构以及 mixed 结构 [31]。结
构之间的区别在于处理器层与存储层之间的相对位置的不同,举例来说 sandwich
结构就为处理器层与存储层交叉排列。相比较而言处理器层与存储层耦合程度越
低越有利于模块化,互联性更强,将二维设计工具移植到三维上的难度也更低。
而对于耦合性较高的结构,如 sandwich 与 mixed 等,则需要存储控制器在更细
粒度上进行管理,实现复杂度则更高,工具移植的难度也更大。因此一般情况下
dance-hall 结构更为常用。
DRAM 是目前发展最为成熟的存储介质,虽然其具有易失特性,存在其中的
第4页
国防科技大学研究生院博士学位论文
数据需要不停的刷新操作才得以保存,但其读写延迟低,带宽高,价格较低,因
此在当前的计算机系统中 DRAM 仍然是最为常用的存储介质。目前主流的处理器
-存储器三维堆叠系统中的存储器主要指的是 DRAM。虽然 DRAM 存储技术已经
非常成熟,但仍有很多问题与缺陷,如其易失性以及位元难以缩小等,这在一定
程度上也激发了研究人员对新型存储介质的研究。目前新型存储介质主要指的是
非易失存储介质,其具有非易失、大容量、低功耗等特性。当前在非易失存储介
质领域的研究非常热门,许多新兴的非易失存储介质因为其特有的属性而被研究,
目前比较受关注的介质有 PCM、STT-RAM、ReRAM 等。一些主流的非易失存储
介质的参数如图 1.2所示。
图 1.2 存主流的非易失存储介质参数示意图
三维堆叠存储系统主要用来减少处理器与存储器的性能差异,EuroCloud
提出的 Footprint Cache 就是一种典型的针对大数据应用的区分粒度三维存储结
构 [32] [33],它对第一条指令进行分析并决定之后对数据预取的粒度,并从细粒
度(块粒度)与粗粒度(页粒度)进行选择。这种方法较好的结合了不同的数据
分割粒度,能够有效的提高性能。针对非易失存储介质的三维堆叠系统,HP 实验
室在 2011 年提出了 Nano-Store,旨在使用 PCM、闪存等非易失存储介质进行三维
堆叠以形成大容量低功耗的新型存储器。这种新型存储器具有非易失存储器的一
切优点,可以用在数据中心等数据量巨大的应用场景下 [34] [35]。更多工作则研
究如何在一个系统中同时堆叠 DRAM 与 NVM,如此则可以同时利用到 DRAM 与
NVM 的优势,其与一般意义上的三维堆叠存储结构的区别就是在 DRAM 层上又
堆叠了一层 NVM。此时 DRAM 可以看成是处理器与 NVM 之间的一种缓存。
第5页
国防科技大学研究生院博士学位论文
1.2 课题动机
1.2.1 当前商用存储结构仍在各方面都受到制约
as DRAM scales
15ns tWR
第6页
国防科技大学研究生院博士学位论文
1.2.2 新型存储结构与技术为提高系统总体性能带来机遇
为了应对传统存储结构所面临的种种限制,面向低延迟,高带宽,高容量的
新型存储结构与存储优化技术一直以来都是研究的热点。这种研究主要分为三个
方向:
1. 以 DRAM 这种传统易失存储为存储介质基础,以优化结构为主来优化存
储系统性能。 近年来的工作主要有 wide-I/O 2、全缓存双列直插式存储器模块
(dual in-line memory module,DIMM)[46]、片上缓存 [47]、High Bandwidth Memory
(HBM) [48] 以及 Hybrid Memory Cube(HMC)等等。这些工作的重心主要是集
中在降低访存延迟、提高访存带宽上。其中以三维堆叠存储系统所取得的提升最
为显著,三维堆叠存储系统的器件实现主要有 HBM 与 HMC。以上提到的这些新
型存储结构在小节 2.1.2中有详细阐述。这里以 HMC 为例,其独特的存储结构所
带来的好处如下:
第7页
国防科技大学研究生院博士学位论文
• TSV 的引入是三维堆叠的基础,而三维堆叠结构成功的将存储层与逻辑层
解耦合,为不同层次创造了单独优化的可能。存储逻辑优化与存储层的优化
是有不同倾向点的,在同一个芯片上同时满足二者的需要是非常难的,更像
是一个 “零和博弈”。传统的存储结构中逻辑层以及存储层同时存在于一个
片上,若主要优化存储层则会使得放弃逻辑部件的某些冗余功能使之无法高
效执行存控任务,而主要优化逻辑层则会压缩存储空间使得存储密度有所降
低。三维存储结构允许若干属性不同的层堆叠在一起,且每个层都可以根据
其实际需要针对性的进行优化,这使得各个层次的优势得以全面发挥。其
中对逻辑层的优化主要是为了更好的进行 I/O 以及指令传递,在某些情况下
亦可以进行简单源自计算,从而分担某些处理器端存储控制器任务。而对
DRAM 层的优化主要是为了更大的存储密度以及较高的资源利用率。HMC
中特有的逻辑层为存储内计算(Process in Memory,PIM)或者近存储计算
(Near Memory Computing,NMC)提供了可能性。目前最新的 HMC 2.0 已经
支持部分原子操作,可以进行一些简单的计算操作,例如按位运算、逻辑计
算等等 [52]。逻辑层可以以更短的访问延迟从 DRAM 层获取数据,并在逻
辑层内进行计算,其后将数据传送回逻辑层或 CPU 端,这样可以减少很多
不必要的数据传输。实际上 PIM 或 NMC 的概念已经不算新颖,但是自概念
第8页
国防科技大学研究生院博士学位论文
提出以来以来并未有一个高效可行的平台来实现,而三维存储系统出现为存
储内计算提供了一个理想的操作平台。
• 逻辑层的引入为处理器端与存储器端之间设置了缓冲层,其可以用来突破之
前 CPU-DIMM 系统直接通信的限制,也为之后重新定义处理器端与存储层
之间的通信机制创造了可能。之前的 CPU-DIMM 系统中处理器端对于存储
器端具有完全控制权,因此对于存储器在运行时所需要满足的所有时序参数
都是由 CPU 端确保满足。这在本质上是对存储器端的一种限制,在处理器
没有改变的情况下,存储器与之的通讯协议是固定的无法更改,实际上在日
常生活中处理器也是只能与几类存储器兼容。这种限制也遏制了对存储器
的优化工作,因为所有对存储器本身的优化都因为处理器的限制无法在实
际上执行。事实上来说针对存储本身的优化工作是非常少的,大量的工作
是通过添加外部逻辑(如 LRDIMM)或者在 CPU 端进行修改(例如 Buffer
on Board)来实现优化的目的。对于三维存储系统,这个问题就被大大缓解
了。因为三维存储系统中逻辑层的存在,其本身具有对 DRAM 层的部分控
制权,并且可以与 CPU 进行指令以及数据的传输,若针对性的进行设计与
优化,使 CPU 端以一种更为抽象及通用的协议模式(实际上是基于包的传
输协议)与 HMC 进行交流,其后 HMC 的逻辑层再转换为适用于自己的特
殊指令,便可使得 HMC 兼容性有所提高。CPU 端不必完全掌握 DRAM 的
时序参数,不同类型的 DRAM 便可直接集成到 HMC 上。除此之外,得益
于更为抽象的 CPU-Memory 协议,甚至一些非易失存储介质也更有可能与
HMC 融合,CPU 与 HMC 的逻辑层以一种透明的方式管理数据的存储,并
不涉及具体细节 [51]。
当然三维存储系统也有其不可避免的问题所在,如容量受限等。本论文的部分工
作即基于三维存储系统,定位其问题并优化,以及利用其优势对有现实意义的应
用程序进行加速等。
2. 以 PCM,RRAM 等非易失存储介质为基础,利用其非易失的特性试图改
变当前以 DRAM 为主的存储结构。
DRAM 作为最为常用的存储介质一直以来都统治了商用存储系统市场,但由
于 DRAM 本身的限制,近年来发展有所放缓。一些研究将目标放在与 DRAM 性
质完全不同的非易失存储介质(NVM)上面。小节 2.1.3中已对常用的非易失性存
储介质做了简单的介绍,这些介质相比于 DRAM 有容量以及功耗上的优势,为存
储系统的设计开阔了新的思路。目前 NVM(主要是闪存) 已经在一些产品中有所使
用,比如 Intel TurboMemory 中使用了 Flash 来缓存硬盘中的数据 [53];类似的许
第9页
国防科技大学研究生院博士学位论文
1.3 国内外相关工作
1.3.1 三维存储结构相关工作
第 10 页
国防科技大学研究生院博士学位论文
第 11 页
国防科技大学研究生院博士学位论文
第 12 页
国防科技大学研究生院博士学位论文
非易失存储介质构成。HCA 有两种工作模式,当处理数据集比较小的时候,快速
部分充当 LLC;若处理数据集比较大的时候,NVM 部分则会被激活。这种可调试
性如图 1.5所示。
第 13 页
国防科技大学研究生院博士学位论文
第 14 页
国防科技大学研究生院博士学位论文
第 15 页
国防科技大学研究生院博士学位论文
图 1.7 三维堆叠主存示意图
性能最大化的实时优化策略。这个策略能够动态监控工作集行为并据此选择低功
耗或是超频运算模式。实验表明,在允许并行处理的情况下,相比于单总线访问,
使用 DRAM 的三维 CMP 的 IPC 有最高 85.9% 的提高;而通过使用 DVFS 技术,
其功耗降低了约 49.4%。Meng 与 Coskun 等人在堆叠 DRAM 主存的三维 CMPs 中
研究了性能、功耗以及温度的复杂交互行为 [75]。作者针对访存空间的多变性与
温度敏感的访存,提出了一种存储管理机制。实验结果表明相比于同样条件的不
堆叠主存的 CMPs,这种结构有 88.5% 的性能提升。
Loh [76] 在其工作中提出了一种比较激进的三维 DRAM 结构。这种结构充分
利用了片与片之间高带宽的特点,增加了通道的数量以及存储控制器借口的数量。
作者还提出了一种矢量过滤器使得 L2 失效控制结构可以有效地利用三维堆叠内
存所带来的大容量。实验结果表明相对于未加优化的三维堆叠存储结构,在处理
存储密集型应用方面,这个三维 DRAM 结构可以达到 1.75 的加速比。
Jacob [77] 等人评估了在高频处理器上堆叠的共享存储体系结构。所谓高频处
理器是指处理器中使用了一种异构晶体管,这种处理器的工作频率可以达到 16 或
32GHZ。作者研究了多种体系结构参数对于缓解存储墙问题的效果,这些参数包
括多通道、多借口、多路选择等等。实验结果表明集成三维芯片有助于定位解决
在三维 CMPs 中的存储墙问题。
Woo 提出要将 L2 Cache 以及 DRAM 接口重新设计以便利用三维堆叠带来的
高带宽 [78]。作者研究了 Cache 通道的影响并提出相比于更大的 L2 Cache 大小,
更大的 L2 Cache 通道更有利于现代应用程序的性能提升。但是随之而来更大的
L2 Cache 通道会增加访问延迟。为了克服这个缺点,作者提出了 SMART-3D 存储
第 16 页
国防科技大学研究生院博士学位论文
1.3.2 面向处理器及高速缓存的主流预取技术
随着计算规模的快速增大以及处理器能力的飞速增长,存储系统愈发成为整
个存储系统中的性能瓶颈,这也就催生了诸如预取之类的延迟隐藏技术的发展。
但是不针对特定使用场景的预取优化技术甚至有可能对系统性能以及能耗产生不
利影响。之前的工作针对不同的优化目标及应用场景提出了若干预取方法。
1)流预取以及偏移预取
对于流预取器的研究由来已久。Jouppi 等人提出了一种使用流缓冲区的预取
方案 [79]。当出现 Cache 失效时,Cache 数据块将被顺序地预取到一个独立的先进
先出的(FIFO)流缓冲器中而并非 Cache 中以避免强制性 Cache 失效、Cache 污
染以及额外的存储开销。当出现 L1 CACHE 上的指令未命中时,存储控制器会检
查检查流缓冲区的第一个条目,若为吻合的数据则取回 CACHE。这种方法是预取
思想一种非常朴素的实现,其优化形式可以实现更为复杂的功能,例如采用了流
水线技术之后,预取器可以对混合数据流进行预取,效率更高。当预取的数据被
访问到时,存储控制器会流出更多的预取指令以保证在处理器的指令流到达之前,
缓冲器可以维持充足的可能被访问的数据。
Zhu 等人注意到之前的的基于局部性的流预取工作都缺少对失效时序信息的
关注,这就会导致很大比例的不及时预取,也就影响到了预取有效性。他们也发
现恒定偏移预取器中,地址流中的相邻访问以几乎相同的时间间隔发生,也就是
说在流中数据访问其实是以可预测的时序发生的,基于此文中提出了时序感知的
偏移预取器。与传统的仅存储访存地址的预取器相比,这种预取技术所依赖的评
估数据除访存地址之外还包括时序信息。这种技术根据访存地址判断这些未命中
地址是否来自相同的存储区域,从而将若干未命中流分类为不同的流,而与此同
时不同流之间的访问或之间的时序间隔作为直接预取的考虑因素之一。这种技术
可以避免不及时的预取,缓解了 Cache 污染,降低了内存带宽需求,结果显示其
相比于恒定偏移预取器有 11% 的加速 [80]。
Kim 等人说明当前的技术都不能很好的预取到所有的或者最好的数据流,而
提出了一种全新的预取方法,多个流追踪器 MST,来识别在一段 Cache 失效流中
的所有具有偏移特性的访问流,并从中选取一个尽可能覆盖所有失效的“最好”
第 17 页
国防科技大学研究生院博士学位论文
第 18 页
国防科技大学研究生院博士学位论文
Panda 等人指出在并行程序中处理器核之间共享数据和代码并互相通信,在
多个处理器核上出现的指令失效流之间是有相同性的,这也就为跨核的指令失效
流的预测及通信提供了可能性。文中提出了一种跨核空间流预取方法 Xstream,用
于在各个核的私有中层 Cache(Middle Level Cache,MLC)上检测、预测跨核的
空间失效流,并将预测的失效流先于被预测处理器核的执行发送回其 MLC 预取
器中,这样一来相关处理器便可预取数据并消除跨核未命中以提高性能 [85]。
3)软件层次预取
Annavaram 等人提出了一种基于预计算的方法 DGP 来动态识别并预计算能
会导致访问数据 Cache 失效的指令地址。DGP 的依赖图生成器(Dependece Graph
Generator,DGG)可以有效地在实时生成所需要的依赖图,同时独立的预计算引
擎会执行所生成的图来及时地产生用来进行准确预取的访存地址。当一条指令从
指令 Cache 中被获取并放入获取取指队列(instruction fetch queue,IFQ)中时,其
相关性信息实际就已经被确定而以指针的形式与指令一并存在 IFQ 中。当 IFQ 中
的某个访存指令被认为可能会引起 Cache 失效时,DGG 就根据在 IFQ 中的依赖指
针生成依赖图。依赖图将被单独的预计算引擎(precomputation engine,PE)来生
成生读取 / 存储指令以进行预取。由于整个预计算过程是推测执行的,因此比主
线程要提前许多,也避免了重排序缓冲区和取值队列遇到的延迟。这种技术达到
了很高的预取准确度 [86]。
Aamodt 等人提出了一种基于辅助线程的预取技术。这种技术使用分析方法将
运行时的程序行为建模为马尔科夫链以及基于 tarjan 算法的快速路径表达算法来
标记触发点与目标点,以识别造成若干指令 Cache 失效的代码区域。所谓目标点
指的是那些程序即将访问到并会引起指令 Cache 失效的某些位置,而触发点指的
是在目标点之后可以启动辅助进程的位置。在达到触发点之后,辅助线程将开始
被执行并被附加到主线程,而后会推测性地执行主线程稍后将遇到的控制流相关
的指令,这便实现了预取效果。实验证明这种技术在顺序 SMT 机上最高可以达到
63% 的加速 [87]。
Rabbah 等 人 提 出 了 一 种 使 用 预 测 与 推 测 技 术 使 得 编 译 器 可 以 辅 助 预 取。
文中提出了一种猜测执行的程序嵌入式预计算概念 PEPSE(program embedded
precomputatoin via speculative execution),其使用轻量级的算法来识别具有较长
访存操作延迟的地址计算相关的程序依赖图部分,也被称为读取依赖链(load
dependence chain,LDC)。读取依赖链可以用作预计算与预取地址的构建基础,这
些预计算与预取操作会被嵌入到程序的主要执行过程中,这就使得当程序运行时,
LDC 相关的操作也将执行预计算与预取。针对 PEPSE 出现在处理某些指针雕镂
(Pointer-chasing)程序所出现的问题,文中提出了 SPEAR 预取策略,即规定如果
第 19 页
国防科技大学研究生院博士学位论文
LDC 中的读取操作失效了,则绕过之后连续的预计算指令。在模拟器上运行的实
验结果显示这种方法可以加强 PEPSE 对预取的指导效果 [88]。
Marathe 等人提出了一种应用在指令级的软件预取技术来发掘访存流中的可
预取性。该方法以基于反馈的离线方式监视由读取 / 存储指令访问的地址及其内
容,并试图从中找出可预测性以可以从过去有限个访问中预决定读取失效。此技
术首先使用一个小型的训练数据集运行应用程序以提取一些带注释的内存访问踪
迹用于分析可预测性,同时生成一些预取预测器。这些预取器会直接将预取指令
插入程序运行时的汇编语言中。为了保证预测器的及时性与有效性,该方法会实
时执行一些清除操作,例如冗余的数据以及时序上与失效的读取过于接近的指令
等等 [89]。
Khan 等人提出了基于低开销运行时采样和快速 Cache 建模的软件预取技术来
准确识别在 Cache 中频繁失效的访存指令。这种技术首先会分散且随机的对访存
操作进行采样,这些指令所访问的数据块将被监视重用情况,同时这些被采样的
访存指令也会被监视,若被重新执行,那么各次之间访问的地址偏移将被作为数
据重用相关信息记录。这些数据重用信息将用作 Cache 统计学模型的输入,而后
对每一条指令都进行成本 / 收益分析以判断该指令是否能从软件预取中获益,若
可以获益,则此指令会进一步进行分析。之前记录的地址偏移信息被用来分析这
些指令的偏移特征,当观察到一种非常有代表性的偏移特性之后,则这些指令就
被设置为可预取,同时会计算合适的预取记录,调度合适的预取操作。该方法在
合适的时机使用旁路技术以降低 Cache 污染,例如在分析之后不会被重用的数据
块在替换出去时直接协会主存。这种方法可以获得比硬件预取高 24% 的吞吐率以
及 10% 的性能提升 [90]。
4)指令预取
Spracklen 等人分析了一些商业应用在 L1 和 L2Cache 中表现出高指令失效率
的行为。文中提出了一种观点:除却处理连续性失效之外,处理有分支与函数调
用产生的不连续失效也是很重要的。这是由于控制指令的地址一般是非顺序的,
因此会导致取指的不连续性。文中提出了一种不连续预取技术,与传统的顺序预
取一起使用,以消除连续与不连续的指令失效。当出现指令 Cache 失效时,这种
方法将此不连续性信息记录到表中。预取器在取指指令流之前执行,当其找到有
效的表条目时会预取不连续的目标。针对可能出现的 L2 Cache 污染的问题,文中
提出了对 L2 Cache 进行的预取都进行有效性评估,认定为有效的预取指令才可以
被允许执行,这种措施较好地控制了预取的激进程度 [91]。
Fredman 等人注意到之前的指令预取器主要是使用分支预测器来探索未来的
控制流,因此缺陷很明显:预测深度因带宽受限且预取准确率受预测准确率影响。
第 20 页
国防科技大学研究生院博士学位论文
文中认为不应该再去以整个程序的控制流程图为基础,而应更加注意记录大量重
复的失效指令流,从中预测未来可能出现的指令命中,从而提出了时序指令流预
取机制 TIFS。文中首先展示说明了绝大部分的 L1 指令失效都是经常重复出现的,
因此 TIFS 便在 L2 Cache 中记录这些重复出现的流并用于进行指令预取。实验结
果表明 TIFS 可以在几乎不增加存储开销的情况下提升平均 11% 的性能 [92]。
Kolli 等人注意到:1)当前的堆栈调用反映了遍历到某执行点的程序执行路
径,并且由其捕获的程序上下文与 L1 数据 Cache 失效具有很强的相关性。2)返
回地址堆栈(return address stack,RAS)简明地总结了程序上下文。文中提出了一
种以返回地址堆栈信息导向的指令预取方法 RDIP,在每一个调用或返回操作中,
DRIP 将 RAS 状态保存到一个由当前调用堆栈以及调用或返回操作的目的地址组
成的压缩签名中。文中指出 L1 的指令失效与这些签名有很强的关联性,对于单个
签名,都有一部分最近的失效序列与之相关联。使用细粒度上下文信息构造的签
名允许在遍历调用图和大函数或很深的调用操作内进行预取。文中也证明了 RAS
签名具有很高的可预测性,因此可以基于当前签名准确地完成对后续签名的预测。
DRIP 降低了指令预取的面积和能耗开销,同时仍能保持较高预取器覆盖率和程序
性能 [93]。
5)存储端预取
Solihin 等人提出了一种技术,其使用在主存中设置通用处理器并运行用户级
线程执行相关性预取,并且将预取的数据发送到 L2Cache。此技术在内存中维护
了一个相关性表用于记录 L2 Cache 失效,当有访存指令在 L2 失效时,存储控制
器便会查询相关性表并流出预取指令。相关性表是一个软件结构,并不需要对 L2
Cache 进行大量更改。文中表明这种技术的适用性很高,对于不规则访存效果也
很好。而且这种方法非常灵活,因为存储器端线程使用的预取算法可以基于每个
应用程序进行调整。文中表明,通过合理设计预取算法以及相关性表的结构,此
技术可以获得很好的性能提升 [94]。
Hughes 等人提出了一种存储端预取技术来隐藏由于对 LDS 类数据的串行访
问而引发的延迟。此工作在存储器端设置一个可编程的,独立于处理器信息的预
取器来对 LDS 数据结构进行遍历。由于预取器其与存储器足够近,延迟足够低使
其可以比处理器更快进行遍历,从而在处理器访问之前提供数据并通过网络进行
数据的流水线式传输回处理器。文中将此预取器与处理器端预取器进行比较可以
观察到,此预取器和处理器端预取器在不同的应用程序上分别提供了更好的性能,
这也说明了将二者组合以是可行的,而且会有更好的性能 [95]。
Yedlapalli 等人说明无论是片上资源竞争或是片外方位延迟都对访存性能有巨
大的影响,因此提出了一种存储器端预取器 MSP 从 DRAM 取数据,但并不主动
第 21 页
国防科技大学研究生院博士学位论文
1.3.3 面向高速缓存及主存系统的主流压缩技术
随着芯片上核心数量的增加以及关键应用程序变得更加数据密集,现代处理
器中的存储系统必须处理越来越多的数据。面对这些挑战,数据压缩是一种有前
途的方法,它可以提高有效的存储系统容量,并提供性能和能耗优势。之前的工
作针对不同的优化目标及应用场景提出了若干压缩方法。
1)压缩方法用于 Cache 及主存
Zhang 等人通过对 SPECint95 程序集进行测试发现,大多数程序中存在“常用
值局部性”,因此提出用常用值 Cache(frequent value cache,FVC)提升 L1 Cache
容量。FVC 是一种很小的直接相连 Cache,其使用最少的位数来编码最频繁出现
的值来实现压缩。事实上频繁出现的数值并不多,因此很小的 FVC 就可以满足需
求。FVC 有助于在片上保留更多数据,从而减少片外流量并提高能耗。 [97]。
IBM MXT 技术(内存扩展技术)使用压缩技术来提升主存的有效大小。MXT
使用 LZ 压缩算法在数据进入主存之前进行压缩,而在访存时使用专用集成电路
上的解压缩器并行对数据块进行解压缩。MXT 使用区块翻译表(STT)来定位压
缩数据。STT 中的每一行都指向一个存储块,每个存储块的大小是 256 字节,4 个
存储块组成一个存储链。每行 STT 都有 128 位,最多可以容纳存储四个指针。这
些指针可以用来最多指向一个存储链中的 4 个存储块。当一条访存指令到达之时,
存储控制器会从 STT 中查找即将访问的数据的正确位置,随后依实际需要进行压
缩或解压缩数据,这个地址转换表保存在内存上,而转换的过程会大大增加访问
延迟。MXT 中设置了一个 32MB 的 L3 缓存用于存储未压缩的数据,并以压缩块
的粒度(1KB)进行管理。通过在真是应用程序上测试,MXT 可以达到 2:1∼6:
1 的压缩比 [98]。
Nakar 等人表明了在程序运行时并不应该总是将所有数据都压缩,并基于此
提出了一种针对主存的选择性压缩技术。这种技术识别当前工作集并使其保持未
压缩状态以允许更快的访问,其在 CPU 的空闲时间内压缩不在工作集中的页面以
第 22 页
国防科技大学研究生院博士学位论文
节省空间。这种技术还通过检测程序工作集的变化来识别程序阶段,基于此,此
方法仅在表现出良好空间局部性的那些阶段期间执行压缩 [99]。
Alameldeen 等人提出了一种使用 FPC 算法的基于压缩重要程度的 Cache 压缩
技术,关于 FPC 算法在小节 2.3.3中有所介绍 [100]。此技术中将所有 L1 Cache 都
用于存放未压缩数据而 L2 Cache 所存放的数据会依据实际情况动态地在压缩与非
压缩状态之间进行切换,而 L2 中存储的数据形式分配情况取决于一个用来权衡压
缩的开销以及性能提升的局部计数器。在每次访问 L2 Cache 时,此方法将通过一
些参数诸如压缩数据块大小以及 LRU 堆栈深度等来判断此时使用压缩算法是否
可以有效的消除失效,若是则采用压缩算法。文中表明,这种技术可以提供比总
是压缩的工作更好的性能 [101]。
Ekman 等人提出了一种主存压缩方法,主要目标是解决之前技术中定位压缩
块延迟高、压缩块大小不一导致的碎片化问题。这种方法使用 FPC 低延迟压缩算
法,这是考虑到了 FPC 足够简单,在解压缩上所需要的时间延迟很低。对于优化
了的 FPC,其处理某些特殊数据块,例如全零块,效果也相当好。为了能够以低
开销定位压缩块延迟,此方法将地址转换部件保存在类似一个 TLB 的结构中,这
么做的好处有二:1)地址转换可与访问 L2 Cache 并行执行以及 2)全零数据块可
以很快被检测到。此后此方法还通过偶尔执行压缩区域数据块重定位操作来解决
由压缩块大小不一引起的碎片化问题,文中也说明了垃圾回收的频率会足够低以
不影响性能 [102]。
Yang 等人提出了一种基于软件的嵌入式系统内存压缩技术 CRAMES,无需
做任何硬件或应用设计上的变动。CRAMES 使用 OS 虚拟内存交换机制将交换出
的数据页以压缩形式保存,在运行过程中 CRAMES 将动态调整 RAM 的压缩部分
大小,同时 CRAMES 可以对程序进行区分,以仅对那些可能从中获得性能或能耗
提升的应用程序执行压缩,来保证运行时的程序不会受到压缩技术产生延迟影响
而导致性能下降。此外,CRAMES 也实现了对 RAM 的文件系统进行压缩,从而
进一步提升了 RAM 的容量。文中表明,此技术使得有效存储容量增加的同时能
保持应用程序运行时的高性能以及低能耗,而且并未引入硬件开销或是程序设计
的改变 [103]。
Pekhimenko 等人提出了基于数据压缩的 Cache 管理策略 CAMP。CAMP 基于
两个基本想法:1)如果有助于增加 Cache 组中的累积命中率,那么将多个压缩块
保留在 Cache 中并替换出更大的未压缩的块(大小与压缩块的总大小相同)是有
益的,压缩数据块的大小可以直接用来计算该数据块的可重用性,基于此文中提
出了最小值替换策略 MVE,它基于 Cache 块大小与未来可能被访问到的期望值来
执行对于重要程度最低的数据块的替换;2)压缩 Cache 块的大小可以用作其重用
第 23 页
国防科技大学研究生院博士学位论文
特性的指导标准,这是因为同一应用程序内具有相同数据结构的元素进行压缩后
大小也基本相同。隐喻此,文中提出了一种基于大小的插入策略 SIP,其使用压缩
数据块大小作为块重用的指导标准来动态地对 Cache 块进行被替换的优先级排序。
通过结合 MVE 与 SIP,文中方法实现了显著的性能和能耗提高以及内存带宽的减
少 [104]。
2)压缩方法用于编译器
Zhang 等人提出了一系列数据转换方式,其通过使用压缩方法修改在程序
中使用的动态数据结构表示方法。文中在指令集架构(instruction set architecture,
ISA)中添加了数据压缩扩展指令(Data Compression Extension, DCX),针对性的
优化了公共前缀与窄数据方法,使之可以分别将均为 32 位的地址指针域与 32 位
的整数域压缩至 15 位以内,而后组合这些压缩后的域而成为 32 位的数据。这种
技术首先假设数据是完全可压缩的,并为压缩的数据结构分配存储空间。当在运
行时遇到不可压缩数据时,会分配额外的存储空间来处理这些数据。结果证明这
种技术可以显著减少需要分配的存储,执行时间和能耗 [105]。
Biswas 等人提出使用存储压缩方法解决嵌入式系统因为缺少软硬件支持而导
致的必须在编译时估计程序运行时所消耗内存面临的困难。此技术会视当前应用
程序的软件堆栈状态以及全局的内存占用情况来做出不同的判断:首先需要在软
件运行时使用基于编译器的指令来探测访存溢出错误,当程序软件堆栈耗尽内存
而产生溢出被探测到时,此技术首先试图将溢出的数据扩展到系统中之前未使
用的空间以减少应用程序的内存占用;当并无多余可用空间时,此方法会压缩数
据,以释放更多空间以容纳栈堆溢出。当数据被压缩后,读取数据将不得不引入
解压缩开销,但这种情况实际并非特别常见,这是由于仅在系统内存耗尽时使用
压缩 [106]。
Ozturk 等人总结了之前在基于 bank 的主存结构进行功耗优化的各种技术,如
代码重组、数据层次重组等,并提出一种结合多种优化技术以最大化低功耗模式
带来的好处的框架。这里的多种优化技术包括非一致 bank、数据迁移、数据压缩
以及数据重用等等。文中将最小化 DRAM 能耗问题建模为整形线性规划(integer
linear programming,ILP)问题,并使用 ILP 求解器协调各种优化技术来解决。其
中非一致 bank 解决针对特定程序的访存模式来设定 bank 大小;数据迁移技术则
将具有相近访存模式的数据放入同一 bank 的组中;数据压缩有助于减少应用程
序的占用空间,从而减少数据占用的内存块数量;数据复制方法复制在其他活动
bank 上的指定只读数据块来增加某些存储 bank 的空闲率。此框架使用 ILP 求解器
计算最佳数据移动、压缩、复制策略并设置最适合的 bank 大小,修改应用程序运
行时指令,执行显式迁移、压缩 / 解压缩、复制操作 [107]。
第 24 页
国防科技大学研究生院博士学位论文
3)压缩方法用于新型存储结构
Lee 等人发现在 PCM 阵列中使用多级位元虽然可以大幅提升存储容量,然
而在读写延迟上却也有增长。而相比之下,SLC 单元容量较低,但与 MLC 相比
读 / 写访问速度提高了近四倍。文中提出了一种基于压缩的混合多 / 单级位元
(multi/single level cell,MLC/SLC)PCM 管理技术来融合 MLC 与 SLC 各自的优
点。基于 MLC 可存储位数是 SLC 存储位数两倍这一客观事实,此技术可以不需
要做任何地址重映射动态地将 PCM 配置为 SLC 或 MLC 模式,其压缩数据视数据
压缩率而定:当数据能被压缩到原大小 50%以下时,则采用 SLC 模式存储,从而
提供更高的性能。当数据不能被压缩到原大小 50%以下时,则以 MLC 模式存储,
从而获取较高的存储密度 [108]。
混合存储器立方体(Hyrbrid Memory Cube, HMC)设计在逻辑层上堆叠若干
层 DRAM,并使用 TSV 将不同层之间进行互连。Khurshid 等人注意到 HMC 的不
同层之间温度变化大,这种各层温度过高以及变化幅度较大的情况会使得存储性
能及效率降低,而目前常用的基于节制带宽的热管理方案也会不可避免地导致
性能降低。文中提出使用数据压缩来缓解这个问题,其在片上存储控制器中设置
了压缩引擎对数据进行压缩使得读取 / 写入压缩块需要的操作更少,这便降低了
HMC 内的能耗和最高温度。此外此技术将压缩块存储在 HMC 中被访问最多地数
据块中以减少各层温度差异 [43]。
鉴于 PCM 作为新型存储介质具有大容量以及低读取延迟,而 PCM 写耐性低
且写延迟及写功耗高的特性,研究人员提出了 DRAM-PCM 混合主存以合理利用
DRAM 以及 PCM 两方的优点,其中 DRAM 用作 PCM 主存的缓存。Du 等人使用
压缩来增加混合存储系统中 DRAM 的有效容量。DRAM 被动态划分为压缩和未
压缩区域,只有频繁修改的数据才保存在压缩区域中,而常被访问的数据块保存
在未压缩区域中以避免压缩 / 解压缩的延迟。当出现针对 PCM 的写访问时,这种
技术从 PCM 读取现有数据并计算新数据和现有数据之间的差异,然后将该差值压
缩并存储在 DRAM 中,这种做法可以提供高压缩比,但是会引入额外的 PCM 读
取。针对读访问,此方法维护了一份状态表来保存 DRAM 中各个数据行的保存状
态,当读访问到达时则需要首先查询状态表来决定后续相应的读操作 [109]。
针对 NVM 普遍的写操作延迟高、写耐性差的特点,Dgien 等人使用压缩来减
少到 NVM 内存的位写操作,以降低写延迟、动态功耗以及增强写耐性 [110]。此
技术包括三个部件:1)基于频繁访存模式的压缩 / 解压缩引擎;2)用于降低位写
操作的比较器;3)用于平均写操作、加强写耐性的基于机率的负载均衡器。此技
术使用 FPC 算法进行数据压缩,对于无法压缩的数据则以未压缩的形式写入。在
写操作时,将新数据位与当前存储的数据位进行比较,仅写入修改的位。在读访
第 25 页
国防科技大学研究生院博士学位论文
问时,如果数据值以压缩形式存储,则对其进行解压缩。这种方法利用压缩节省
的额外空间,将写入均匀地分布到 NVM 来实现耗损均衡。通过其技术实现的写
入最小化和损耗均衡可以改善设备寿命并减少写入延迟 / 能耗。
Choi 等人说明 Cache 压缩方法在提高 Cache 压缩率的同时也会带来额外的写
操作,从而会带来额外的功耗开销以及器件损耗。文中首先说明并非所有的压缩
都是必须的,然后提出了一种用于 NVM LLC Cache 的自适应压缩技术仅在压缩
技术有效的时候进行压缩,该技术通过记录一系列参数来判断压缩技术是否有效:
例如使用组采样技术来跟踪记录压缩块和未压缩块的失效率;跟踪压缩和未压缩
块的写入操作数来决定是否压缩写入的数据块;通过比较对压缩和未压缩块的写
入次数来判断是否将所有新数据块都以未压缩方式存储,该技术在实时测试上述
参数从而可以严格控制由于压缩引起的额外写入 [111]。
4)压缩方法用于提高带宽利用率
带宽墙的问题随时间推移愈发明显,Rogers 等人提出了两个问题:1)带宽墙
对于未来多核处理器的扩展的限制到了什么程度;2)传统的带宽优化技术在缓解
带宽墙问题上已经做到了什么地步,文章针对这两个问题进行了相应的研究。作
者提出了一个简单有效的分析模型来验证处理器系统结构相关的很多参数(例如
处理器核数、Cache 大小比例等)以及传统的带宽优化技术对带宽会有怎样的影
响。通过验证,文章给出了几个结论:1)再不采用带宽优化技术的情况下,存储
墙问题随处理器核扩展恶化非常明显。2)不同的带宽优化技术对于降低带宽需求
的效果大不相同。3)直接降低带宽开销的技术相比于降低 Cache 失效率的技术效
果更好,例如在四代工艺下,链路压缩可以支持 38 个处理器核心而 Cache 压缩可
以支持 30 个处理器核心,这也说明压缩技术在支持当前正在进行的多处理器扩展
方面非常有效。4)结合多种不同的优化技术可能会达到更好的效果。例如结合
DRAM 缓存技术、三维堆叠存储技术、Cache 以及链路压缩等优化方法,在四代
工艺技术下可以支持 183 个处理器核心 [112]。
Sathish 等人说明当前应用于 GPGPU 内部节省带宽的压缩技术仅仅利用在压
缩纹理与色彩数据而并非 GPGPU 程序工作集数据。文中提出了一种技术用于支
持对 GPU 与其片下存储之间进行传输的数据进行无损与有损压缩。在该技术中压
缩和解压缩均在 GPU 的存储控制器中执行,鉴于 GPU 中对内存的访问大都集中
在纹理空间与全局空间上(GPU 中存储空间可分为纹理、常熟、全局、局部空间)
,
因此压缩的执行也主要集中在这两个空间上。为了避免空间压缩的复杂性,文中
提出的方法并不使用压缩节省的空间,即意味着压缩不会带来有效内存容量的增
加,而只会减少内存延迟和带宽消耗。使用有损压缩的情形是,对于多个 GPU 应
用程序,降低浮点数的精度对于准确度的影响可忽略不计,因此这种技术就不考
第 26 页
国防科技大学研究生院博士学位论文
虑浮点数的最低有效位(least-significant bits,LSB)以节省带宽,对其余的数据则
应用无损压缩 [113]。
1.4 本文研究内容
国内外的众多研究都表明了,传统的存储体系结构在应对日益增长的数据量
时已经捉襟见肘;新型存储结构与介质仍在发展中,尚未成熟;一些常用的存储
优化技术在面对较为复杂的存储结构或者新型存储结构则需要针对性地进行优化。
本文的工作是围绕微处理器存储体系结构优化关键技术研究展开。本文优化的目
标微处理器存储体系结构包括传统的 Cache-DIMM 存储层次以及近年来技术愈发
成熟的三维堆叠存储系统;本文使用的优化方法包括传统常用的预取方法、压缩
方法以及随新型存储结构成熟而兴起的存储内计算方法;本文的优化目标包括存
储系统的容量以及性能。总体来说,本文对微处理器存储体系结构优化关键技术
进行了全面的研究,并进行了卓有成效的优化。图 1.8也展示了本文的主要工作。
本文研究工作集中解决传统优化技术应用于现今存储系统出现的技术问题,
并基于新型存储系统的种种优势,对在高性能计算中常用的关键应用程序进行优
化。通过广泛调查以及大量的资料阅读,本文的研究工作从存储体系结构实际出
发,主要解决如下三个问题:即如何针对目前市场常用的多层次存储系统与常用
预取技术并不兼容的问题进行针对性优化;如何针对新型存储结构容量提升瓶颈
进行针对性优化;以及如何利用新型存储系统的种种优势特性对关键应用程序进
行优化。
1.4.1 针对多级存储结构的预取优化
硬件预取技术一直以来都是提升系统性能的重要方法,但在应对比较复杂的
多级存储结构中比较盲目,往往效果并不好。一般说来硬件预取的效率在很大程
度上取决于预取的准确率,若准确率较低的话,预取器可能会降低系统的性能。
因此本文以预取准确率为判断标准,针对目前常用的多级存储结构提出了一种自
适应的预取方法动态地理预取指令以及预取数据。此外考虑到多级 Cache 系统的
复杂性,本文也将预取相关的运行时参数纳入 Cache 替换策略的考虑范围以提高
性能。
1.4.2 针对三维存储系统的压缩管理
虽然新型的三维存储系统在访问延迟以及带宽上取得了极大的提升,其存储
容量并没有明显的进步。除了 DRAM 位元本身物理上的限制之外,三维存储系统
本身的制造工艺以及热耗散也限制了存储容量的进一步增加,由此可见在三维存
储系统中使用压缩技术为一种可以有效增加容量的好方法。但压缩算法本身也会
第 27 页
国防科技大学研究生院博士学位论文
带来一定的时序上以及用于存储中间数的容量上的开销,为了控制开销,需要审
慎并有针对性地设计压缩管理系统。因此本文基于三维存储系统的现有体系结构,
设计了一种低开销易操作的压缩管理系统以提高三维存储系统的有效存储容量。
1.4.3 基于三维存储系统的加速器
1.5 本文主要创新工作
本文深入研究分析了传统存储结构以及新型存储结构的优势与不足之处,取
得了以下几个方面的创新研究成果:
1.提出了一种面向多层存储结构的优化预取效率方法 CHAM。CHAM 部署
在存储系统中的中层 Cache 中,使用运行时的预取准确率作为评估参数。CHAM
中包括两个工作:1)一种动态自适应的预取控制机制,用于在实时针对预取指令
调度的优先级以及预取数据的传输层次进行调度。2)一种以提高预取率为目的的
混合型 Cache 替换策略。
2.提出了一种提升三维存储结构容量的压缩管理机制 CMH。CMH 部署
在 HMC 的逻辑层,通过在数据传输的过程中压缩数据以及在运行时对 HMC 中
DRAM 层存储的数据进行选择性的压缩,CMH 可以有效的提高存储容量,同时
也节省了运行时所消耗的带宽。
3.提出了使用 HMC 存储内计算进行加速的方法:HMCSP 与 CGAcc。前者
是一种利用 HMC 逻辑层的 PIM 部件来降低传输延迟,提高性能的方法;后者利
用存储内预取器,基于 HMC 的三维结构,部署在其逻辑层上以利用其 PIM 部件
以及很短的传输延迟,并通过将预取流水线化来提高存储层次的并行,进而对程
序进行优化。
文 章 的 主 要 创 新 工 作 如 图 1.8所 示。 本 文 研 究 工 作 受 国 家 自 然 科 学 基 金
(No.60773024)“面向密集型计算的超高性能多核处理器体系结构研究”,国家自然
科学基金 (No. 60873015)“多核异步数据触发微处理器设计关键技术研究”,国家
973 项目 (No.2007CB310901) “计算系统虚拟化基础理论与方法研究”支助。在开
展课题研究和开发工作的同时,已发表或被录用 8 篇学术论文(第一作者),其中
第 28 页
国防科技大学研究生院博士学位论文
传统存储结构 + 传统优化技术
微处理器存储体系结构
存储层级感知的高效预取方法
优化关键技术研究
动态选择的
自适应预取控制机制
Cache替换策略
基于存储内计算的应用加速设计
处理规则访存模式 处理不规则访存模式
面向三维存储结构的压缩管理机制
应用的设计 应用的设计
图 1.8 本文主要创新工作及其相关关系
1.6 论文结构
全文共分六章,各章的主要内容如下所示:
第一章,绪论。介绍了本文的研究背景、动机以及目的,同时也对国内外相
关的研究工作、本文的研究工作及创新点做出了阐述。
第二章,存储系统以及关键技术。主要对传统的存储结构以及新型存储结构
和介质、相关的优化技术进行了详细的阐述,为开展后续章节的工作奠定了充分
的理论基础。
第三章,一种面向多层存储结构的优化预取效率方法 CHAM。面向较为复杂
的多级存储系统,CHAM 在运行时以预取准确率为评估标准,动态调整预取指令
与普通访存指令的优先级相对关系,以及动态选择预取数据传回的存储层次来保
持预取的效率。此外预取准确率也用于指导 Cache 替换策略的选择,用于维持较
高的预取准确率,从而提升存储系统的性能。
第四章,一种提升三维存储结构容量的压缩管理机制 CMH。针对新型存储系
统容量提升不高且后继乏力的情况,CMH 使用简单且低开销的 BDI 压缩算法对
流经 HMC 的非常用数据进行压缩。CMH 包含一个数据层次管理系统来保证存储
内压缩与非压缩数据的有序存储以减少存储内数据移动与访问开销;此外还有垃
圾回收机制来避免存储空间的碎片化。
第五章,使用 HMC 存储内计算进行加速的方法:HMCSP 与 CGAcc。使用
HMC 作为加速器优化矩阵乘与图遍历,HMCSP 主要使用 HMC 的 PIM 特性来降
第 29 页
国防科技大学研究生院博士学位论文
第 30 页
国防科技大学研究生院博士学位论文
第二章 处理器存储体系结构以及关键技术介绍
自计算机系统诞生以来存储系统就随处理器系统发展而一直在发展,存储墙
问题的出现以及大数据时代的来临进一步促进了处理器存储体系结构以及相关技
术的向前进步。近年来对于处理器存储体系结构的研究主要集中在两个方面:1)
结构优化,以及 2)相关技术优化。对于结构优化方面,主要工作在于一些新型存
储结构以及若干新型存储介质;对于相关技术优化方面,主要在优化与传统存储
结构相关的预取技术与压缩技术,以及基于新型存储体系结构的存储内计算技术
等。对这些主题的研究至今仍是热点,但在当前处理器存储系统结构飞速发展的
环境下,新型存储结构与介质尚有可优化的空间,而传统的多种传统优化技术也
需要针对新型存储结构进行针对性优化。本章对于处理器存储系统结构以及相关
技术做了一个全面的阐述,为之后的研究工作铺垫了理论基础。
2.1 处理器存储系统结构介绍
2.1.1 传统处理器存储体系结构及其优化
第 31 页
国防科技大学研究生院博士学位论文
Array
ĊĊ
Memory Bus
Memory
Controller
第 32 页
国防科技大学研究生院博士学位论文
Transistor
N rows
Array
Capacitor
Sens Amps
的存储控制器的访存模式为串行模式,其将之前的数据信号、指令信号以及控制
信号打包称为一单独的指令,并发送至 LRDIMM 上的存储缓冲器。这使得从存储
器的角度来看,总线上始终都只有单独的读取指令,即使得指令数降低,这种读
写指令的降低使得每个 channel 可以连接到更多的 DIMM。之前文献中报道,一个
32GB 的 4 rank LRDIMM 相比于传统的 RDIMM(Resisted DIMM,有寄存器支持
的 DIMM)有 4X 的读取降低 [118]。其他文献中的工作也有报道,LRDIMM 允许
每个 channel 中有三个 DIMM 可以同时在 1.5V 电压的环境下以 1333MT/s 的数据
率工作,而 RDIMM 在一个 channel 中仅允许两个 DIMM 在保持相同的电压以及
数据率同时工作 [119]。
3)Fully Buffered DIMM
传统的结构中所有的数据总线都必须连接到存储模块的接口中,这样做
会使得电信号在传输的过程中有所衰减,从而降低了传输速率。Fully Buffered
DIMM(FB-DIMM,全缓存 DIMM) 在每个存储模块之前都放置了一个高级缓存
(Advanced Memory Buffer,AMB)来缓解此问题。所有存储模块的 AMB 与存储
控制器之间使用高速双向串行链路相连,这样做使得带宽得到了大大提升。存储
控制器直接将数据写到 AMB,AMB 则负责对数据进行缓存并对补偿以及重新发
送传输信号。这种模块之间点对点的连接方式使得存储模块所需要的数据都是
从其他数据模块传输而来,而存储模块本身也可能是传输链路中的一环。这种
连接方式使得 channel 中就可以容纳更多的 DIMM,从而进一步提高了存储密度。
FB-DIMM 在一定程度上提高了带宽和存储容量,然而实际上的应用并不广泛。这
是由于 AMB 的引入使得访存延迟有所增高,而且每个 DIMM 上的功耗开销有了
显著增加。AMB 本身由于高速的输入输出导致其有严重的热耗散问题。文献中报
告称相比于 DDR3,FB-DIMM 允许在存储系统中有 24X 之多的 DIMM,多加一个
第 33 页
国防科技大学研究生院博士学位论文
2.1.2 新型存储介质及结构
第 34 页
国防科技大学研究生院博士学位论文
DRAM layers
Base logic
layer
Vertical TSV
connections
Vault
VC0 VC1 ĂĂ VC2
HMC
(a) (b)
第 35 页
国防科技大学研究生院博士学位论文
第 36 页
国防科技大学研究生院博士学位论文
2.1.3 非易失存储介质
大数据时代的来临使得数据爆炸式增长,也给存储系统带来了前所未有的压
力。之前一些工作预测了未来系统有可能会处理 EB 级别大小的数据,以当前的
系统来说处理这么多数据内存显然远远不足够存储,因此运行时硬盘会不可避免
的被访问到,这就会使得性能至少下降 50% [133]。而系统处理如此多的数据至少
需要 PB 级大小的内存,如此巨大的内存将会带来相当大的、对于系统本身来说难
以接受的功耗 [134] [135] [136] [56]。
如何存储处理巨大的数据量也推动了对新型存储介质的研究。非易失存储介
质、例如闪存(Flash)、相变存储器(PCM)、忆阻器(RRAM)以及自旋力矩存
储器(STT-RAM),可以提供不同于传统存储介质的存储特性,例如更低的功耗
以及更高的存储密度(SRAM 的位元代销大概为 125∼200F 2 ,而 PCM 与 Flash 的
位元大小分别只有 4∼12F 2 以及 4∼6F 2 [133] [137]),被认为在未来可以取代当前
所常用的 SRAM 以及 DRAM,而用于系统中的不同存储层次(从 Cache 到二级存
储)部件的设计。得益于这些特性,NVM 如今在很多产品中已经有了大量的应
用,例如 SSD 等,这在前面的小节 1.1.3中已经有所介绍。当然 NVM 也有其不足
之处,例如写耐性差、写延迟高等等。下面对一些主流的 NVM 进行详细的介绍。
1)闪存(Flash)
闪存由于其高存储密度以及低写耐性通常被用作在 DRAM 与 HDD 之间的二
级存储单元, 目前在市场上以闪存介质为基础的 SSD 已经替代之前的机械硬盘成
为最为流行的外存设备 [54]。但由于造价昂贵,SSD 完全取代 HDD 的代价太大,
因此目前市场上更为常见的是 SSD 搭配 HDD 的情况,对于某些对于存储容量要
求不高的设备,可以全部采用 SSD 设备用作存储 [138]。闪存是基于半导体芯片制
第 37 页
国防科技大学研究生院博士学位论文
成,运行时几乎不产生机械损耗,相比于之前硬盘机械的旋臂结构更加稳定,对
物理碰撞的耐受力比较高。其功耗更低,因此对于热耗散的耐受力比较高。之前
文献报道称,SSD 与 HDD 的性能与所运行应用程序有很大的关系。SSD 对于随机
的访存操作有更好的性能,对于某些写操作很密集的应用程序,SSD 相比于 HDD
能取得的性能提升非常有限 [139]。目前针对闪存的研究主要集中在如何减少写操
作和擦除操作带来的不利影响、材质损耗以及如何利用闪存设计混合存储系统等
等 [137]。
闪存中的访存操作有读、写以及擦除三种。需要单独设计擦除原因是在 Flash
中写操作仅仅能将一个页中的数据(4KB)从 1 变为 0,而将一个数据为从 0 变
为 1 的唯一方法就只有将 block 中所有页面中的数据都设置为 1,所以需要引入粒
度为 block(256KB)的擦除操作来统一将 0 变为 1。由于擦除操作相比于写操作
有更长的操作时间,因此闪存中通常设置了一个转译层(Flash Transaction Layer,
FTL)来隐藏擦除操作,使得在系统层所能见的就只有读写操作 [140]。FTL 在闪
存的性能中起着至关重要的作用,其维护了一个从控制层到 Flash 的虚拟地址映
射表,并根据映射表来进行读写,维持负载均衡。闪存中的页面根据状态可以分
为可用、不可用(含有需要被弃置的数据)、空闲(可以容纳新数据)三种。为了
延迟擦除的操作,FTL 处理写操作是以一种随机写入的方式进行的,也即每次写
都会选择一个空闲的页面,同时将存放之前数据的页置为不可用。FTL 中设置了
垃圾回收机制,用于擦除不可用的页面中的所有数据块且在需要的情况下将可用
的数据页移动到新位置。
2)其他非易失存储器
目前主流研究的非易失存储器主要包括相变存储器(PCM)、自旋力矩存储器
(STT-RAM)与忆阻器(ReRAM),按字节寻址是此类非易失存储介质的主要特征。
由于这三种非易失存储介质具有与传统下级存储器(HDD 或 SSD)相近的存储容
量的同时具有与内存介质相近的访问延迟,因此理论上来说这些存储介质的可适
用范围非常广,在合理的配置下可以放置在存储系统的各个阶层中。与此同时由
于一些非易失存储介质的硬件特性,可以用于做存储内计算操作 [141] [142] [143]。
目前针对这三种非易失存储介质相关的研究非常多,主要目标在于如何将这些非
易失存储介质与当前主流的非易失存储介质相结合或者直接替换,维持不同存储
介质间的一致性,加强非易失介质的耐用性,稳定性以及性能。举例来说,文献
中提出了一个 16Gb 的 ReRAM 原型模型,拥有类似于 DRAM 的处理器结构以及
接口,理论上可以用于替换当前计算机系统中的存储结构,在性能上相去不远而
又兼顾非易失存储介质的某些特性 [144]。文献中提出了一种基于忆阻器的存储内
计算模型用于加速递归神经网络,可以达到相比于 GPU 高 79X 的性能提升 [141]。
第 38 页
国防科技大学研究生院博士学位论文
2.2 预取相关技术介绍
如今计算机系统处理数据量的急速提升使得存储器成为影响系统的瓶颈部分,
那么像预取技术这种可以降低访问延迟以及失效率的方法对于提高存储系统的性
能可以起到非常好的作用。本小节主要对预取相关技术进行讨论。
2.2.1 预取技术的分类
1)数据预取与指令预取
一般情况下指令预取与数据预取的访存模式差异较大。与指令访问模式相比,
数据访问模式更为不规则。由于各个程序数据的不确定性,对于相同的程序在处
理不同的输入数据集时,数据预取对程序的性能影响也很大,这使得数据预取本
身比较复杂,更具有挑战性。一般来说应用程序中指令 Cache 的失效是比较少的,
因此之前的工作中的主要精力是在数据预取,对指令预取的优化并不多。然而大
数据时代的来临使得目前商用处理器的指令 Cache 并不足容纳充足的数据以减少
失效开销,及时的进行指令预取从下级存储中获取数据并放置在高速缓存中对性
能的提升有极大的帮助,这为指令预取在大数据时代点明了重要性并指明了优化
方向。
2)硬件预取与软件预取
由预取指令的产生来源来看,预取可以分为硬件预取与软件预取。所谓硬件
预取指的是由硬件预取器使用一些额外的硬件设备(例如地址映射表等等)来探
测一些特定的指令访存模式,并依此来预测未来即将访问到的数据并进行预取。
硬件预取是设计通用预取技术的主流方法,这主要是由于硬件预取器主要关注程
序运行过程中的访存模式而非特定的执行模块。尽管硬件预取会带来额外的硬件
开销,这种技术可以提供较大的性能提升。软件预取器则面向在运行具有某些特
性(例如规则的循环嵌套等)的应用程序,主要是基于编译器或是应用分析等技
术在源代码中插入预取指令。例如在一些使用链接数据结构的图遍历相关应用中,
在访问子节点的操作之前编译器都会插入预取指令。或者在一些有规律的循环嵌
套过程中,软件预取可以进行循环展开并对相关数据进行预取。软件预取需要提
供运行时的支持,因此需要涉及到操作系统、指令集、编译器等许多软件层面的
重架构,工作量较大。软件预取本身需要面临很多性能上的权衡,一般来说性能
提升不如硬件预取。
3)处理器端预取与存储器端预取
由于传统的预取器一般放置在处理器端某个 Cache 层,并从此 Cache 层流出
预取指令,因此所谓处理器端预取亦指 Cache 端预取。与此相对的存储器端预取
第 39 页
国防科技大学研究生院博士学位论文
指的是预取器放置在存储器端,直接在存储端进行预取。二者相比各有利弊,处
理器端的预取可以更合理的利用 CPU 端的计算与逻辑优势进行预测等复杂计算
操作,从而更加快速的获悉访存模式,并以此基础来对 Cache 层进行优化,而且
对于传统的诸如 Cache 污染之类的问题优化起来更为方便 [145]。而存储器端的预
取可以节省处理器端的片上开销,而且可以在存储器端更灵活的进行优化,相比
于处理器端的预取器其由于存储器端计算资源的限制,预取器的功能不宜过于复
杂 [96]。目前新型三维存储结构在存储端设置了逻辑层为今后的存储端预取提供
了更大的优化空间,通过将部分存储器端功能下移至逻辑层,之前处理端预取的
一些优势便不复存在了。
2.2.2 经典预取器设计思路
预取器设计思路本质上来说是对即将访问数据位置的准确预测,它主要处理
这么一个问题:用何种方法在何时对何位置的数据进行预取?围绕这个问题,最
为简单的一种就是在 Cache 失效出现时,将当前访问数据位置后面 N 个 Cache 行
大小的数据预取至 Cache 层。这种方法并无任何决策智能而言,对于所有情况都
采取同样的操作。基于这种原则的预取器的典例即为针对具有偏移特性的数据
访存模式的偏移预取器(Strider Prefetcher) [146]。举例来说,如果过去的一系
列访存操作可以表示为 B, B + Of f, B + 2Of f, B + 3Of f ,那么预取的数据就在
B + 4Of f ,在特殊情况下,即当 Of f = 1 且连续预取多个数据行时,偏移预取器
即变为流预取器 [59]。如今的流预取器设计并不仅仅局限于上述思路,一般情况
下都会记录若干常见的访存模式流用于匹配,若当前的访存流与某个访存模式匹
配的话,便对保存的模式访存流之后的数据进行预取。事实上这种流预取器已经
超出了单纯偏移预取的范畴,其中的设计思想已经涉及到了相关性预取的概念。
上述的设计思路主要针对的是访存模式规则的应用程序,而对于访存模式不
规则的应用程序,偏移特性并不明显,使得这种设计思路并不能带来明显的性能
提升。举例来说,图计算应用中由于其处理数据结构的独特性,访存模式受数据
影响非常大,访问数据时并没有一个特定的偏移规律。对类似访存模式的应用,
相关性预取便派上了用场,相关性预取器设计的思路则集中在如何利用过去的访
存序列或失效访存来检测访存之间的关联性,并基于此来预测未来可能会失效的
访存并进行预取。这种思路假设访存历史是可以重复的,通过记录访存历史并挖
掘访存历史与当前访存序列之间的相关性来指导预取 [59]。之前的一些工作抛开
特定的访存模式限制,从更一般的程度局部性角度来考虑,预取器的设计则可以
分为时间预取器与空间预取器。其中时间预取器主要考虑时间局部性,其基于最
近出现的数据流会被再次用到的思想,因此其预取是基于一定时间内的失效指令
第 40 页
国防科技大学研究生院博士学位论文
进行的 [147]。空间预取器考虑到了空间局部性,其对当前访问失效数据所在位置
附近的数据进行预取 [148]。还有很多其他的更为复杂的预取器是基于程序本身的
访存特性或者需要优化的目标设计,在此就不一一详述了 [149]。
2.2.3 预取技术的问题与挑战
预取技术可以有效的提升存储系统的性能,但同时当前预取技术本身也面临
很多问题需要解决,总结如下所示:
• 如何提升性能并保证软硬件可靠性。预取器带来最直观的优势即为可以使得
Cache 失效降低,但由于受到 Cache 的失效延迟及许多其他时序因素的影响,
Cache 失效的降低在很多情况中并不意味着性能有所提升。因此如何合理利
用 Cache 失效降低使得性能提升是优化预取技术的重要问题之一。此外,预
取的引入也会对存储系统的可靠性产生影响,这种影响可以分为软件层面与
硬件层面。从软件层面来说,预取会使得数据出错次数增加(在数据出错率
几乎不变的情况下,传输数据量增大);从硬件层面来说,预取引入的额外
写操作可能会引起硬件错误,降低设备的生命周期。在针对以非易失存储介
质为主要存储载体的系统中,由于其写耐性较差,造成硬件出错的概率大大
增加 [137]。
• 如何控制预取技术带来的开销。预取技术为了避免冗余的数据读取,需要在
每次预取之前对 Cache 内容进行查验,因此需要设置额外的逻辑计算部件以
及交互接口来满足此功能。除此之外预取技术的开销主要表现在需要额外的
第 41 页
国防科技大学研究生院博士学位论文
硬件结构来对预取所需要的中间数据进行存储。为了保证预取器对数据实时
快速的访问如失效地址、程序计数器等实时信息,且要避免频繁访问片下数
据所需要的额外延迟,这些数据一般都是需要保存在片上,如此便带来的较
大的存储开销(可能会达到数十 MB),一般需要更改片上结构以满足存储
要求 [150] [151]。
2.3 压缩相关优化技术
数据压缩是一种用于在大容量存储系统中有效增加容量,而同时不会产生大
量面积 / 能量开销的方法。压缩可以降低失效率、提高带宽,从而提高性能和功
耗。由于这些优点,目前压缩技术在 Cache 层和主存上已经广泛使用了 [112]。然
而压缩 / 解压缩操作本身会产生延迟,能耗开销,压缩 / 解压缩硬件功能单元则会
引入面积开销。因此在设计过程中必须权衡压缩在存储容量上的优势与引入的复
杂设计与操作所带来的开销。之前的若干工作提出了许多压缩算法,这些压缩算
法之间具有不同的侧重点与应用场景。有效使用压缩技术需要对数据的可压缩性,
应用场景的优化倾向等有所了解,而后针对性的选择压缩算法。下面对压缩技术
进行相关的介绍。
2.3.1 压缩技术的必要性及优势
大数据时代对计算机系统的处理能力及存储能力都提出了更高的要求,当前
的计算机系统一方面芯片内核数量增加,另一方面存储系统的容量及传输速率也
有所增加。然而由于功耗问题和带宽硬限制出现的存储墙问题亦愈发明显,近来
处理器系统中的存储器与处理器核处理能力比率在逐步降低,大容量存储系统变
得越来越受限 [152]。现实中程序运行所涉及的数据中存在大量的冗余性,之前
文献中报道一些测试程序的数据块重复度高达 98% [153]。这种冗余性出现的因
素有很多种,包括数据本身原因、操作系统的某些固定配置以及若干内存操作等
等。数据本身可能具有很强的重复性,例如一些实际的图矩阵数据中由于其非常
稀疏,大量的数据为零,可以使用之前的零压缩方法来进行压缩编码。这种情况
在很多应用程序中出现都比较频繁,有一些压缩算法正是挖掘程序中类似情况而
进行压缩 [154]。之前研究发现,存储在 Cache 行内的值之间的差异很小,因此它
们可以使用基值和差异数组的压缩形式表示,对应的压缩算法也正是基于此特征
提出 [155]。操作系统的固定配置表现在某些操作系统应用程序使用一个预设好的
固定值来初始化大数组,而实际上所需要用的仅仅是大数据组的一部分,而大量
的数据均被置为 0。实际上为了降低程序出错率与复杂性,程序员也一般都是用
容量消耗较大的数据类型来处理最坏情况,而实际上大多数值可以使用容量消耗
第 42 页
国防科技大学研究生院博士学位论文
较小的数据类型来处理。还有操作系统在运行时进行内存操作时,也会在复制若
干数据副本,此时压缩便可派上用场。
之前一些研究表明,如果每个数据在 Cache 中仅维护一个副本,那么可以
实现超过 16X 的压缩比 [156]。然而由于某些实际情况中的种种限制,尽管少
数技术实现了 3∼4X 的压缩率,大多数实际的压缩技术实现的压缩率是小于 2X
的 [156] [157] [152]。即使如此,压缩仍旧可以帮助将数据存储在较少量的物理
内存中,从而给应用程序以及用户留下存储容量变大的直观感觉。压缩技术带来
的好处是多方面的。从性能上来说,多级存储层次中的压缩技术可以使得本当
应该放置在更低层次的数据可以存储在更高层次,即减少了对慢速存储层次的
访问。例如 Cache 的压缩可以减少开销巨大的片外访问,而内存压缩可以减少触
发磁盘访问的页面错误,从而进一步降低访存延迟。从降低所需带宽方面来说,
压缩还有助于减少存储器带宽需求,这是因为传输压缩的数据所需要的带宽更
低 [158] [106]。从降低功耗方面来说,结合 power gating 等低功耗技术可以允许将
未使用的存储部分转换为低功率状态以节省能耗 [159] [107] [160] [161]。降低的
能量消耗可以降低温度,继而降低热耗散,使得在相同的功率和温度限制的前提
下性能更高 [43]。总而言之,压缩带来的失效率的降低、带宽降低以及能耗减少
使得在相同功率预算内进行更多计算成为可能。压缩方法对于超大规模的计算系
统尤其有前途,通过压缩可以有效地降低节点内和节点之间的频繁的数据移动所
导致的非常高的性能与功耗开销。此外压缩算法对于 CPU/GPU 异构架构也非常
有效,由于 CPU-GPU 异构系统需要进行处理器与协处理器之间的大量数据传输,
因此压缩也能降低可观的数据传输量,缓解带宽需求,此外也减少了数据占用空
间来提高运行效率 [112]。
2.3.2 压缩技术的参数权衡
压缩技术的效果取决于实际运行中的若干因素。具体如下所示:
算法本身属性的影响:在系统中使用压缩算法将不可避免的带来延迟、能
耗与面积开销,而且通常需要额外的硬件或软件支持。延迟开销是由于以压缩
形式写入的数据需要解压缩才能读取,而解压缩操作位于关键访问路径上,其
延迟开销无法被隐藏,对于某些压缩数据大小不同的算法,数据解压缩无法
利用 SIMD 的优势而不得不串行执行。这种额外的延迟可能会抵消压缩带来的
容量优势 [101] [162] [163]。之前的工作中提到可以缓存最近解压缩的数据以
缓解一些解压缩的开销,同时避免再次解压缩某些反复被访问到的数据的需
要 [159] [107] [164] [98]。能耗与面积开销主要是由执行压缩 / 解压缩操作的硬件
部件引入,不同的压缩算法产生的能耗与面积开销差别也比较大。之前文献中说
第 43 页
国防科技大学研究生院博士学位论文
明,不同压缩算法本身也各有优化侧重点,通常提供高压缩率的压缩算法也具有
高延迟 / 能耗 / 面积开销 [157] [152]。某些压缩算法的设计初衷是针对某些特定数
据(如全零数据),因此这类针对性的压缩算法在处理其他程序时性能就非常一
般了。
数据自身属性的影响:压缩程序在处理不同数据时由于处理数据本身属性影
响,性能差距会比较大,影响因素主要体现在以下两个方面。1)数据可压缩性:
对于可压缩性较差的数据,压缩会引入中间数据使得压缩之后的数据大小反而变
得更大,即与压缩的本意相悖,显然在这种情况下并无需进行压缩。当然在实际
应用运行过程中往往并不能即时判断是否需要进行压缩,但是对于某些特定的应
用领域,例如使用加密算法加密数据的系统,则并不适合进行压缩。这是因为压
缩方法本质上利用了数据的冗余性,而由于数据加密技术会引入随机密钥等而减
少了数据冗余 [165] [152]。2)数据处理粒度:压缩处理不同的数据粒度也对整体
压缩表现亦有影响,在处理较大数据块与较小数据块时均各有优缺点。当数据块
较大时,数据冗余性更好,数据压缩率更高,但在读取其中某一部分数据时则不
得不解压缩整个数据块而造成延迟较高;小数据块的压缩率通常低于大数据块的
压缩率且相对所需要保存的中间数据更多,开销更大,但值得一提的是数据粒度
较小时在一些特殊的数据模式例如全零下也可达到较高的压缩率,且对于数据访
问一般解压缩延迟较低。
系统结构属性的影响:系统结构中各个不同层次所倾向的各种属性对压缩算
法的要求也不同,从如下几点说明:1)从处理器的角度出发。通用计算处理器所
着重的属性主要在于延迟,而图形处理器更为看重带宽与吞吐量大小。这使得针
对 CPU 应用环境设计的压缩算法对压缩算法的简单高效低延迟提出了要求,而在
图形处理器的压缩算法则更注重于如何实时的将带宽压缩,以提高系统总体吞吐
率。在 CPU/GPU 异构系统中,压缩算法的部署就更需要仔细的设计,由于各个
处理单元所需要的优化点不同,压缩算法本身也需要兼顾多点或可以在实时动态
调整优化目标进行不同级别的压缩。2)从 Cache 的角度出发。与不同处理器所倾
向的性能优化点不同一致,不同层次的 Cache 所适用的压缩目标也不同。例如 L1
Cache 通常针对延迟而非容量进行优化 [152] [166],因此在 L1Cache 中的压缩策略
应该更保守,压缩算法本身也应该更为简单,以防带来过高解压缩延迟以及能耗和
面积开销 [167]。由于低级 Cache 以及主存更主要的是提供层次级的容量而对于延
迟敏感度较低,因此高压缩率的压缩算法更适合部署在这些存储阶层 [152] [166]。
3)从存储器本身属性的角度出发,压缩所关注的点又不同。传统的压缩算法主要
针对以 DRAM 为存储介质的存储器中,因此除了要求高压缩率,一般还要求对读
取指令不要有过高的解压缩延迟。而对于以非易失性存储器代替 DRAM 的 Cache
第 44 页
国防科技大学研究生院博士学位论文
和主存,由于非易失存储器一个主要特征是写入产生的开销比读取大得多,并且
它们的写耐性比 SRAM 和 DRAM 的写耐性小几个数量级 [152] [166],因此应用于
非易失存储器的压缩技术则更为关注如何通过压缩减少写操作以及写操作所涉及
到的数据,从而提高 NVM 的性能和使用寿命 [111] [136] [152] [109] [168]。
2.3.3 主流压缩算法介绍
之前的许多工作针对若干不同应用场景提出了数个压缩算法,在此列举一些
应用较为广泛的样例。
2000 年之前的工作:霍夫曼编码使用了一种变长编码方案,其通过分析数
据来确定不同元素的比例。之后比例最高的元素使用比比例最低的元素更少的位
数进行编码 [169]。Lempel Ziv(LZ)压缩算法通过引用先前在未压缩数据中存在
的某元素的单个副本来替换重复出现的数据元素 [170]。kjelso 等人提出 X-match
硬件压缩算法。这种算法使用字典,每当找到与字典条目完全或部分匹配的数
据元素时,用较短的代码替换这个数据元素。X-RL 算法是 X-match 算法的扩展,
其注意到存储数据中连续的零元素是非常常见的。因此 X-RL 算法即为在应用
X-match 算法之前还对连续零的长度进行编码,这提高了压缩效率,尤其是对于频
繁包含连续零的存储数据 [171]。Yang 等人提出了频繁值压缩算法(frequent value
compression,FVC),其工作原理在于观察程序执行期间少数在访存阶段频繁出现
的几个值,通过编码这些频繁出现的值来实现数据压缩。Cache 块大小对此算法
影响比较大,随 Cache 块大小的增加,找到频繁值的概率降低且开销增大 [172]。
2000 年至 2010 年之间的工作:Kim 等人提出一种针对窄符号扩展值的方法,
若一个字数据的前半部的所有位都是 0 或 1,这种方法将其压缩为单个位,而后将
此字数据的后半部分和压缩的符号位存储在一个 bank 中 [173]。此方法还提出在
每一数据行中使用第二个标记,以允许以两种方式存储压缩的缓存行,这有助于
增加 Cache 的有效大小。Alameldeen 等人提出了一种基于重要性的压缩算法,称
为频繁模式压缩(FPC),它的工作原理是基于大多数数据类型可以存储在比允许
的最大数量更少的位数中 [100]。例如当 8 位数存储在 64 位整数中时,该字的所
有信息都存储在最低有效位中。该算法扫描每个字以检测它是否属于可以以较少
数量的比特存储的模式之一,并将其以具有合适前缀的压缩形式存储。Dusser 等
人提出了一种设计,该设计添加了一个额外的 Cache(称为零内容 Cache,ZC)来
增强传统 Cache,这个加强 Cache 用于存储空(零)数据块 [154]。由于空块表现
出高空间局部性,因此若干空块与 ZC 中的单个标签相关联,这就实现了高压缩
比。这种设计仅仅需要非常简单的压缩 / 解压缩电路,而且可以避免使用空数据
写入空块。这种方法的局限性在于它不能压缩其他模式的数据。Dusser 等人在主
第 45 页
国防科技大学研究生院博士学位论文
存中也应用了空数据压缩,与 ZC 相结合可以在整个存储层次结构中管理空块。
2010 年之后的工作:Chen 等人提出了 C-PACK 技术,它是一种基于模式匹
配的部分字典匹配压缩算法 [174]。C-PACK 同时使用静态方法和动态方法来检测
频繁出现的数据来压缩数据,在运行过程中动态更新字典以补充那些未被静态编
码模式捕获的频繁出现的单词。为了在 Cache 中合理组织压缩块,C-PACK 使用
了“配对匹配”,即只有在保证总大小小于非压缩行的情况下,若干个压缩行才可
以放在同一行中。Pekhimenko 等人提出了 BDI 压缩,其工作是基于如下观察:对
于许多 Cache 行,存储在 Cache 行内的值之间的差异很小 [155]。基于此观察即可
以使用基值和差异数组进行组合来表示 Cache 行,使得这种组合大小远小于原始
Cache 行的组合大小。但是这种方法无法轻松压缩多个 Cache 行。为了进一步扩展
此压缩算法的适用性,文中建议使用两个基数,其中一个基数总是设置为零,这
有助于全面地压缩各种类型的数据。
2.4 存储内计算相关介绍
存储内计算与近存储计算均为存储内计算的相关内容。两者都试图通过将处
理部件移入存储系统中或附近,利用处理元件和存储体之间的低延迟实现处理时
的高效率和高带宽,来缓解存储墙、带宽墙以及功率墙问题。典型的存储内计算
结构通过利用多核技术以及针对应用的体系结构来利用并行性,在绕过功耗墙和
指令级并行限制的同时,提高能效、整体性能和吞吐量。存储内计算结构是一种
被动加速架构,其本身具备存储功能,在未启用存储内计算功能时与一般存储器
无二,可以提供有规律且透明的存储。而与此同时存储系统内的计算部件也能够
将部分处理器端功能下移以执行一些存储内指令以处理数据。过去几十年来,特
别是当新的存储技术、结构或介质出现时,存储内计算一直都是研究热点。下面
小节介绍了存储内计算相关处理架构开发的历史背景 [175]。
2.4.1 二维集成的存储内计算
第 46 页
国防科技大学研究生院博士学位论文
是真正的存储内计算架构,因为它们都具有典型的存储内计算架构特征,如低延
迟、高带宽、高能效等 [181] [182]。
最初存储内计算(后称 PIM)的术语是由 Kogge 等人于 1995 年最初提到
的 [183] [184]。1996 年 Patterson 等人不再使用大规模并行处理原件来增强位于
存储器中的列解码器以及放大器的处理能力这种粒度很细的优化工作,转而
将简单而功能强大的处理器核集成到内存中,这样降低了部分编程负担,但不
可避免的引入了较大的能耗与面积开销 [185] [186] [182] [183]。智能矢量 RAM
(VI-RAM)由 Patterson 等人推出,由其性能可以看出针对性的架构在提升性能
方面表现比较突出,但其缺点也很明显,其一是并没有解决 DRAM 与处理器之
间性能差距,其二是由于其通用性较差使得其可扩展性也较差,商业支持远远不
足 [187] [180] [182] [186] [188],之后的针对特殊应用的 PIM 设计还有 Dlugosch 针
对处理正则表达式这一特殊应用而在 DRAM 中设计集成自动化引擎,其在处理正
则表达式时有显著的性能提升 [189]。之后也有一些二维 PIM 相关工作推进领域
研究发展,例如 Kang 等人提出了 FlexRAM,它在访存过程中的若干阶段都实现
了 PIM [190];Brockman 等人一反 PIM 的惯常思维,提出了在处理器流水线中直
接放置若干存储部件 [191] [192];而在商业上二维 PIM 一度也被考虑到集成到商
业产品上,Intel 在其 Haswell 架构中开始尝试将 DRAM 和处理器嵌入到相同硅中
介中 [193]。通过前述的众多研究可以看出,存储内计算这种将逻辑部件和存储器
嵌入到同一个芯片上的想法在功能上是可行的,对于某些特殊架构,其可以实现
巨大的加速。实际上 PIM 结构本身在需要的情况下也可以作为单独的存储系统使
用而避免更大的开销。
自从 GPU 出现后,对于二维集成 PIM 的研究就愈发少了。这是由于 GPU 本
身市场化程度高,价格低,使用广泛而且更容易发掘出大规模并行处理能力以提
高性能 [194]。文献中报道称,二维集成 PIM 并不流行的主要原因在于存储器产
量的限制,更多金属层以及将逻辑引入针对字节 / 晶圆优化的工业成本过高。利
用 DRAM 技术进行计算会将 DRAM 的缺点放大,即无法较好的协调面积开销与
处理速度之间的矛盾:正常面积大小的逻辑部件处理速度变慢,快速高效的逻辑
部件存储容量面积开销则较大,功耗也偏高,从而整体计算的效率也较低低。此
外其他一些原因也包括可编程性较差,存储容量有限,测试时间过久以及缺乏商
业支持等 [188] [187]。
2.4.2 三维集成的存储内计算
三 维 集 成 存 储 内 计 算 开 始 于 上 世 纪,Kleiner 等 人 使 用 宽 总 线 将 将 L1 和
L2Cache 通过很多非常小的垂直通孔堆叠在 RISC 处理器上,从而实现内存堆叠,
第 47 页
国防科技大学研究生院博士学位论文
第 48 页
国防科技大学研究生院博士学位论文
2.5 本章小结
本章对全文所涉及到的技术相关背景进行了详细的阐述。首先介绍了传统的
存储结构的技术细节以及对其进行针对性优化的衍生存储结构。随后介绍了为了
应对大数据时代更为严峻的存储墙问题而出现的新型存储结构与存储介质,为本
文之后的工作夯实了背景基础。此外本章还对主流的存储优化技术进行了详细的
介绍,包括预取技术、压缩技术以及存储内计算技术,指出目前这些技术的现状、
优势以及一些问题,相对于本文后面的设计工作这些是设计载体。
第 49 页
国防科技大学研究生院博士学位论文
第 50 页
国防科技大学研究生院博士学位论文
第三章 存储层级感知的优化预取方法
硬件预取一直以来都是提升系统性能的重要方法。然而硬件预取的效率在很
大程度上取决于预取的准确率,若准确率较低的话,预取器可能会降低系统的性
能。之前有工作提出在两层 Cache 结构上进行自适应性预取的方法,这种方法在
两层 Cache 结构上可以提升系统性能,而在更为复杂的现代处理器存储系统中,
例如三层的 Cache 结构,所取得的性能加速就比较有限。因此在复杂的多层级存
储系统中探究预取的效率仍是十分必要的。
本章提出了一种面向多层存储结构的优化预取效率方法 CHAM(Composite
Hierarchy-Aware Method for improving Prefetch Efficiency)。CHAM 部署在存储系统
中的 MLC(Middle Level Cache)层次中,使用运行时的预取准确率作为评估参数。
CHAM 中包括两个工作:1)一种动态自适应的预取控制机制,用于实时针对预取
指令调度的优先级以及预取数据的传输层次。2)一种以提高预取率为目的的混合
型 Cache 替换策略。通过在来自 SPEC2006 的 28 个应用程序以及来自 biobench 的
2 个应用程序上的大量实验表明,与基准相比在单核环境下 CHAM 平均可以提升
9.2% 的 MLC 命中率以及 1.4% 的系统性能; 而在四核环境下,CHAM 平均可以提
升 33.1% 的 MLC 命中率以及 10.1% 的系统性能。
3.1 引言
随着制造工艺的快速发展,如今处理器和存储系统都比以前有了相当大的
提升,但是二者的发展并不是平衡的。如今存储墙问题已经众所周知,即存储
系统的处理速度已经远远落后于处理器的处理速度 [210] [211] [212] [213],使得
存储系统成为系统中的瓶颈部分 [214]。为了弥补这种性能差距,人们提出了层
次型 Cache 结构。一般来说有两种方法来提高 Cache 系统的性能:高效的预取机
制 [215] [216] [217] 以及合理的替换策略 [218] [219] [220]。但是目前来看,与这两
个主题相关的现行方法都没有真正的合理利用到运行时的状态参数而动态调整预
取机制,尤其在一个复杂的多层次系统中,合理利用运行时参数就显得更为重要。
有两个理由可以证明这个议题有继续探索的空间:1)以往的工作基本上即使关注
运行时参数,也仅仅集中在存储层次的某个层次,并非整个存储系统 [221] [222]。
以前的研究中表明 [221],在一个两层 Cache 系统中,取预取准确率作为运行时参
数标准来指导相关访存指令的操作,从而提高整体系统的性能。其中预取准确率
指的是那些被预取的数据块在被替换之前被访问的概率,更好的预取准确率意味
着预取的块有更高的概率将会被访问到。这种方法对于较为简单的存储系统而言
比较有效果,然而对于更加复杂的多层次存储系统却性能欠佳,这主要是由于这
第 51 页
国防科技大学研究生院博士学位论文