Download as pdf or txt
Download as pdf or txt
You are on page 1of 175

分类号 TP368 学号 15069023

UDC 004.2 密级 公开

工学博士学位论文

微处理器存储体系结构优化关键技术研究

博士生姓名 钱程

学 科 专 业 计算机系统结构

研 究 方 向 微处理器体系结构

指 导 教 师 王志英 教授

协助指导教师 黄立波 副研究员

国防科技大学研究生院

二〇一九年三月
Research on Key Techniques Optimization of
Microprocessor Memory Architecture

Candidate: Qian Cheng


Supervisor: Prof. Wang Zhiying

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页
国防科技大学研究生院博士学位论文

2.3.2 压缩技术的参数权衡 .................................................................... 43


2.3.3 主流压缩算法介绍 ........................................................................ 45
2.4 存储内计算相关介绍 ............................................................................... 46
2.4.1 二维集成的存储内计算 ................................................................ 46
2.4.2 三维集成的存储内计算 ................................................................ 47
2.5 本章小结 ................................................................................................... 49

第三章 存储层级感知的优化预取方法 ................................................................ 51


3.1 引言 ........................................................................................................... 51
3.2 相关背景知识及设计动机 ....................................................................... 54
3.2.1 背景知识 ........................................................................................ 54
3.2.2 设计动机 ........................................................................................ 55
3.2.3 本章相关工作 ................................................................................ 57
3.3 CHAM 优化预取方法 .............................................................................. 58
3.3.1 一种动态自适应的预取控制机制 ................................................ 58
3.3.2 一种动态选择的 Cache 替换策略 ................................................. 61
3.3.3 CHAM 硬件开销分析 ................................................................... 64
3.4 实验环境设置 ........................................................................................... 65
3.4.1 系统配置与测试程序 .................................................................... 65
3.4.2 测试参数 ........................................................................................ 65
3.5 实验结果及分析 ....................................................................................... 65
3.5.1 单核测试 ........................................................................................ 65
3.5.2 多核测试 ........................................................................................ 67
3.5.3 与 PADC 的比较 ............................................................................ 68
3.6 参数分析 ................................................................................................... 71
3.6.1 预取激进程度参数分析 ................................................................ 71
3.6.2 数据传输情况参数分析 ................................................................ 72
3.6.3 预取指令丢弃参数分析 ................................................................ 74
3.6.4 替换策略参数分析 ........................................................................ 75
3.6.5 预取指令优先级参数分析 ............................................................ 75
3.7 本章小结 ................................................................................................... 76

第四章 面向三维存储结构的压缩管理机制 ........................................................ 77


4.1 引言 ........................................................................................................... 77
4.2 相关背景知识 ........................................................................................... 79
4.2.1 混合存储立方体 ............................................................................ 79

第 II 页
国防科技大学研究生院博士学位论文

4.2.2 常用压缩算法 ................................................................................ 80


4.2.3 基于压缩的存储系统 .................................................................... 80
4.2.4 本章相关工作 ................................................................................ 81
4.3 CMH 压缩管理机制 ................................................................................. 82
4.3.1 CMH 系统结构 .............................................................................. 82
4.3.2 CMH 中间数据与数据布局 .......................................................... 83
4.3.3 CMH 硬件开销分析 ...................................................................... 87
4.4 实验环境设置 ........................................................................................... 87
4.4.1 系统设置 ........................................................................................ 87
4.4.2 测试程序 ........................................................................................ 87
4.5 结果分析 ................................................................................................... 88
4.5.1 性能结果测试 ................................................................................ 88
4.5.2 存储容量用量对结果的影响 ........................................................ 90
4.5.3 压缩算法参数对结果的影响 ........................................................ 92
4.5.4 FABT 以及 STT Cache 对结果的影响 ......................................... 93
4.6 本章小结 ................................................................................................... 95

第五章 基于存储内计算的应用加速 .................................................................... 97


5.1 引言 ........................................................................................................... 97
5.2 相关背景知识 ........................................................................................... 100
5.2.1 基于 CSR 的矩阵与向量相乘 ....................................................... 100
5.2.2 基于 CSR 的图遍历 ....................................................................... 100
5.2.3 传统的预取技术 ............................................................................ 101
5.2.4 图遍历程序的运行瓶颈 ................................................................ 102
5.2.5 本章相关工作 ................................................................................ 103
5.3 基于存储内计算的应用加速 ................................................................... 105
5.3.1 用于加速矩阵乘的 HMCSP .......................................................... 105
5.3.2 用于加速图遍历的 CGAcc ............................................................ 107
5.4 实验环境设置 ........................................................................................... 114
5.4.1 系统设置 ........................................................................................ 114
5.4.2 测试程序 ........................................................................................ 114
5.5 结果分析 ................................................................................................... 114
5.5.1 HMCSP 相关结果及分析 .............................................................. 115
5.5.2 CGAcc 相关结果及分析 ................................................................ 117
5.6 本章小结 ................................................................................................... 125

第 III 页
国防科技大学研究生院博士学位论文

第六章 结论与展望 ................................................................................................ 127


6.1 工作总结 ................................................................................................... 127
6.2 工作展望 ................................................................................................... 128

致谢 ............................................................................................................................ 129

参考文献 .................................................................................................................... 131

作者在学期间取得的学术成果 ................................................................................ 157

第 IV 页
国防科技大学研究生院博士学位论文

表 目 录

表 2.1 Wide I/O 2,HBM,HMC 比较 ................................................................. 37


表 3.1 Cache 替换策略比较. ................................................................................... 56
表 3.2 在不同情形下的 DTT 值设定情况 ............................................................. 60
表 3.3 根据不同预取准确率而设定的 PDT 值 ..................................................... 61
表 3.4 PACMan-DYN 中子替换策略参数的比较 ................................................. 62
表 3.5 CHAM 硬件开销 ......................................................................................... 64
表 3.6 系统配置 ...................................................................................................... 65
表 4.1 MXT,DMC 与 CMH 之间的比较 ............................................................ 81
表 4.2 系统配置 ...................................................................................................... 88
表 4.3 不同配置下的访问 STTCache 延迟(ns) ................................................ 95
表 5.1 CGAcc 中时间与动作对应列表 .................................................................. 110
表 5.2 系统配置 ...................................................................................................... 115
表 5.3 测试程序描述 .............................................................................................. 115
表 5.4 不同片上 Cache 配置下的访问延迟(ns) ............................................... 119

第V页
国防科技大学研究生院博士学位论文

图 目 录

图 1.1 存储墙问题示意图 ...................................................................................... 3


图 1.2 存主流的非易失存储介质参数示意图 ...................................................... 5
图 1.3 当 DRAM 位元缩小时,其位元恢复时间也有所增长 ............................ 6
图 1.4 三维堆叠 Cache 示例 ................................................................................... 11
图 1.5 可调试的 HCA 结构 .................................................................................... 13
图 1.6 基于数据迁移的 HCA ................................................................................. 14
图 1.7 三维堆叠主存示意图 .................................................................................. 16
图 1.8 本文主要创新工作及其相关关系 .............................................................. 29
图 2.1 DRAM 层次示意图 ..................................................................................... 32
图 2.2 DRAM 位元示意图 ..................................................................................... 33
图 2.3 镁光公司的 HMC 部件 [1] .......................................................................... 35
图 2.4 HMC 的结构以及模块连接示意图 ............................................................ 35
图 2.5 AMD 公司的 HBM 部件 [2] ....................................................................... 36
图 3.1 在不同的预取优先级情况下的 IPC 表现 .................................................. 52
图 3.2 在使用不同 Cache 替换策略下的 IPC 情况 .............................................. 53
图 3.3 在有无预取的情况下的 IPC 比较 .............................................................. 54
图 3.4 预取指令在存储系统中的生命周期 .......................................................... 55
图 3.5 在复杂存储系统中使用 PADC 的 IPC 加速比 .......................................... 55
图 3.6 CHAM 总体的流程图 ................................................................................. 59
图 3.7 动态自适应的预取控制机制的总体结构 .................................................. 61
图 3.8 PACMan-DYN 的实现机制 ......................................................................... 63
图 3.9 CHAM 中混合 Cache 替换策略的实现机制,以 LRU 与 PACMan-DYN
为基础进行组竞争 .................................................................................................... 64
图 3.10 单核环境下的访存命中率提升情况 .......................................................... 66
图 3.11 单核环境下的 IPC 提升情况 ...................................................................... 66
图 3.12 双核系统与四核系统中 MLC 命中率情况 ................................................ 67
图 3.13 双核系统与四核系统中 IPC 提升情况 ...................................................... 68
图 3.14 在单核、双核与四核系统中与 PADC 比较 MLC 命中率的情况 ............ 69
图 3.15 在单核、双核与四核系统中与 PADC 比较 IPC 的情况 .......................... 70
图 3.16 不同的预取器激进程度设置下的 IPC ....................................................... 71
图 3.17 在各种情况下变化数据传输参数时不同的 IPC ....................................... 72
图 3.18 在相对于各种 DTT 最优组合的情况下,其他各组合相对于最优组合
的 MLC 与 LLC 命中率情况 .................................................................................... 73

第 VII 页
国防科技大学研究生院博士学位论文

图 3.19 无预取丢弃机制的 CHAM 与 CHAM 的 IPC 比较 .................................. 74


图 3.20 CHAM 使用不同 Cache 替换策略时的 IPC 比较 ..................................... 75
图 3.21 CHAM 使用不同预取指令优先级调度时的 IPC 比较 ............................. 76
图 4.1 CMH 的总体示意图 .................................................................................... 83
图 4.2 CMH 上的压缩管理算法伪代码 ................................................................ 84
图 4.3 CMH 中的数据层次 .................................................................................... 85
图 4.4 垃圾回收时的数据移动开销 ...................................................................... 86
图 4.5 基准、MXT 与 CMH 的存储容量提升比较 ............................................. 89
图 4.6 基准、MXT 与 CMH 的带宽提升比较 ..................................................... 90
图 4.7 基准、MXT 与 CMH 的 IPC 性能比较 ..................................................... 91
图 4.8 使用方法一对于存储容量以及性能的影响 .............................................. 91
图 4.9 使用方法二对于存储容量以及性能的影响 .............................................. 92
图 4.10 解压缩延迟对性能的影响 .......................................................................... 92
图 4.11 不同块大小对于容量以及性能的影响 ...................................................... 93
图 4.12 四种不同的情况对于容量以及性能的影响 .............................................. 93
图 4.13 不同相连策略对于 STTCache 命中率以及总体性能的影响 ................... 94
图 4.14 不同 STTCache 大小对于命中率以及性能的影响 ................................... 94
图 5.1 基于 CSR 的 SPMV 执行流程伪代码 ........................................................ 100
图 5.2 基于 CSR 的图遍历流程 ............................................................................. 101
图 5.3 基于 CSR 的图遍历伪代码 ......................................................................... 101
图 5.4 有无流预取器时图遍历的性能比较 .......................................................... 102
图 5.5 有无流预取器时图遍历程序执行时的访存停滞率 .................................. 102
图 5.6 有无流预取器时图遍历的 L1 失效率 ........................................................ 103
图 5.7 HMCSP 的结构示意图 ................................................................................ 106
图 5.8 HMCSP 的伪代码示例 ................................................................................ 106
图 5.9 图遍历的示例时间线 .................................................................................. 107
图 5.10 CGAcc 的总体结构 ...................................................................................... 108
图 5.11 CGAcc 的伪代码示例 .................................................................................. 111
图 5.12 HMCSP 在随机的十个稀疏矩阵上运行访存延迟的比较 ........................ 116
图 5.13 HMCSP 在随机的十个稀疏矩阵上性能的比较 ........................................ 116
图 5.14 在不同系数矩阵大小以及稀疏系数的情况下 HMCSP 的传输延迟比
较 ................................................................................................................................ 117
图 5.15 CGAcc 与基准的性能比较 .......................................................................... 117
图 5.16 CGAcc 有无 Cache 优化的性能比较 .......................................................... 118

第 VIII 页
国防科技大学研究生院博士学位论文

图 5.17 CGAcc 与 GraphPrefetcher 的性能比较 ..................................................... 118


图 5.18 在 Cache 容量大小变化的情况下性能比较 ............................................... 119
图 5.19 在不同的片上 Cache 容量大小的情况下命中率比较 ............................... 120
图 5.20 在 Cache 相连度变化的情况下性能比较 ................................................... 121
图 5.21 在不同的片上 Cache 相连度变化的情况下命中率比较 ........................... 122
图 5.22 图的边数目的变化对于性能的影响 .......................................................... 123
图 5.23 图的点数的变化对于性能的影响 .............................................................. 123
图 5.24 在处理 BFS 相似程序时基准、GraphPrefetcher 与 CGAcc 的性能比较 123
图 5.25 在处理线性迭代型程序时基准、GraphPrefetcher 与 CGAcc 的性能比
较 ................................................................................................................................ 123
图 5.26 对于每个 buffer 中消耗的入口数的变化情况 ........................................... 124

第 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 页
国防科技大学研究生院博士学位论文

of future memory systems.

Key Words: Computer memory architecture; Three dimensional stacked


memory; Prefetching technique; Compression algorithm; Processing in mem-
ory

第v页
国防科技大学研究生院博士学位论文

符号使用说明

HPC 高性能计算 (High Performance Computing)


HMC 一种三维存储体,混合存储块(Hybrid Memory Cube)
IPC 每周期指令数,性能评价指标(Instructions per cycle)
PIM 存储内计算(Processing in Memory)
NMP 近存储计算(Near Memory Processing)
NVM 非易失存储器(Non-volatile memroy)
PCM 相变存储器(Phrase change memory)
STT-RAM 自旋力矩存储器(Spin-transfer torque random-access memory)
ReRAM 亿阻器(Resistive random-access memory)
CMP 片上多处理器(chip multiprocessor)
CFG 控制流图(control flow graph)
LDM 链接数据结构(linked data structure)
LLC 最后一级 Cache(Last Level Cache)
MLC 中间一级 Cache(Middle Level Cache)
FIFO 先入先出(First-in,First-out)
DIMM 全缓存双列直插式存储器模块(dual in-line memory module)

第 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页
国防科技大学研究生院博士学位论文

研机构直接时常要进行数据的互访问,例如 ALCF 在运行天气模拟的时候则需要


访问 ORNL 数据中心的天气观测数据来进行对比印证,这对网络的负载能力也
提出了要求,促使网络供应商增大带宽。文献中提到,美国能源部的网络部分
(ESnet)已经将各个中心之间的网络连接速度升级至 100Gb/S,在未来还很有可能
支持 400Gb/S 的带宽以及 100Tb/S 的吞吐率 [13]。网络部分的改进仅限于缩短了
端到端之间的数据传输延迟,而整个网络传输过程中除了包含端与端之间的传输
延迟之外还有本地节点的输入输出延迟,慢速存储设备也成为了整个数据传输过
程中的瓶颈。之前的工作提出了并行文件系统 PFS 的概念,这种文件系统通过配
置大量输入输出服务器以及磁盘提高了可扩展性,从而允许大量的并行操作来提
高系统整体的输入输出能力与性能 [14] [15] [16] [17][18] [19]。但即便如此存储系
统与网络的速度不匹配仍旧是一个问题。
目前已经有若干研究机构推出了具有大数据应用特征的测试集,其中较
为常用的包括 HiBench(Intel 公司推出) [20],CloudSuite(卡内基梅隆大学与
EuroCloud 联合推出) [21],CloudRank、DCBench、BigdataBench(中科院计算所
依次推出) [22] [23] [23]、Smart CloudBench(斯威本科技大学推出) [24] 等等。
选择大数据测试程序集中的测试用例主要考虑到负载特性、软件栈以及数据特性
三个方面,测试集的使用者也主要从这三个方面对大数据相关的应用进行分析。
目前已经有很多使用大数据测试集对大数据应用进行特性研究的工作。举例
来说,Fredman 等分别运行了传统测试程序与大数据测试程序并进行比较分析,在
此基础上进一步总结出大数据应用的一般特征 [25]。这些特征可以从指令与数据
两个层面简要来说,大数据的访存指令表现出 Cache 命中率极低、取指令操作延
迟较大等特性,而数据层面上,大数据应用主要表现为数据量巨大、分散且无规
则、程序数据非结构化、数据访问空间局部性很差、数据移动开销大等等。此外
由于大数据程序基本都是数据密集型应用,因此非常大的数据移动开销也会给带
宽带来很大负担。这些特性也从侧面说明了当前计算机架构在处理大数据应用程
序时在很多方面都受到限制,因此基于大数据应用的数据特性对体系架构提出了
低延迟、高带宽、大容量等要求,从这些方面分别进行优化十分必要。对于不同
的大数据应用,其访存行为模式可能有较大的差别,针对某些应用场景进行优化
也是当前的研究热点 [26]。

1.1.2 存储墙问题在当今对于存储系统提出了更加严峻的挑战

多核众核处理器的处理能力的快速稳定增长需要存储带宽以同步的速度跟
上。但很遗憾的是,存储单元的处理速度提升始终没有跟上处理器的处理速度提
升,这也就造成了所谓的存储墙问题。现代的数据中心处理的巨额数据量也加剧

第2页
国防科技大学研究生院博士学位论文

了存储系统上的压力,如今的 SRAM-DRAM 存储系统结构已经几乎无法满足了。


图 1.1所示的存储墙问题正形象地解释了这一点。近年来计算机系统的处理器计算
能力仍旧如摩尔定律预测的那样每 18 个月翻一番,而存储器的处理器速度平均年
增长率却始终维持在 7% 上下,二者的处理速度差距正逐步加大,如此即形成了
所谓的存储墙。

图 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 当前商用存储结构仍在各方面都受到制约

商用处理器的存储系统采用 DRAM 作为存储介质由来已久,商业上的成功也


使得针对 DRAM 介质本身一直都有持续的研究,使得其在带宽、容量、性能等各
方面都有持续性增长,而功耗及硬件开销则逐步降低。之前优化 DRAM 的方法主
要是将 DRAM 位元不断缩小,传统的 DRAM 位元包括一个晶体管与一个电容器。
当对 DRAM 的位元进行缩小时,整个位元中的所有部件都会随之缩小,这也就意
味着访问晶体管、存储电容器以及外围电路都会更小,从而使得其访存延迟更低,
存储密度更大。从 DRAM 面世至今,DRAM 位元已从 22F 2 下降到如今的 4F 2 。
继续缩小位元大小已经变得非常困难,会导致 DRAM 出现稳定性上的问题。
Cell Distribution Current DRAM

as DRAM scales

15ns tWR

图 1.3 当 DRAM 位元缩小时,其位元恢复时间也有所增长

在目前 DRAM 位元已经非常小的情况下,缩小位元本身就面临着制造工艺受


限的问题。准确的控制 DRAM 位元的维度大小的相关工艺非常复杂,验证处理过
程偏差也更大,所制造的 DRAM 位元的统计学性能就会在更大的一个范围内波
动,更为难以预测,如图 1.3的示例所示。这种不确定性意味着更多的位元可能会
破坏设计规则,而且也超出了目前一些容错机制所能控制的范围,可能会导致很
多制造出的芯片无法通过制造工艺测试 [36] [37]。此外继续缩小位元可能会导致
一些问题:1)更小的电容器可存储的电量更为有限,同时泄漏电流也更高。而更
低的存储电量以及更高的泄露电流导致了位元的泄漏程度以及泄漏数量都有所增
加,因此存储系统必须维护更为频繁的刷新来保证数据的正确性与完整性。如此
存储系统的性能、功耗与稳定性势必有所降低;2)更小的 DRAM 位元所设置的
额定电压也更低 [38] [39],这也进一步减少了每位可以存储的电量,也恶化了门电
路中的漏电现象 [36],而且在更小的维度下,相邻的位元之间很容易产生电磁干
扰,导致电磁耦合效应,继而导致存储的数据错误 [40]。3)更小的位元面积也使
得晶体管与位线的阻抗更高,从而在一定程度上阻碍了位元的充电过程,更慢的
充电过程意味着更长的恢复过程,也就意味着可能超过了系统规定的限制,如此

第6页
国防科技大学研究生院博士学位论文

一来对系统的性能以及产量都有损耗 [38] [41]。由于存储电量的减少,传感放大


器的输入电压偏差也会变的更大,使得传感位元中存储的数据变的更为困难,传
感困难度的提升延长了一半的读写过程,而且也会引起访问失败 [38] [39]。以上
内容在文献中也有所总结 [42]。
这种 DRAM 位元在降低其大小上受的限制影响是广泛的,最明显的一点就是
对存储系统中容量的影响。由于存储系统广泛采用分级结构,越下级的存储层次
访问延迟越大而容量也越大,而上层的存储层次则访存延迟较小而容量也较小。
因此有效的提高上层存储层次的有效容量即可对整体系统性能带来更大的性能提
升。而之前对于 DRAM 位元缩小所带来的问题的阐述说明了在传统存储系统中
进一步的提升容量已经是困难重重。新型的三维存储系统由于其特殊的结构在一
定程度上缓解了这个问题,其通过使用硅穿孔导线(TSV)将 DRAM 层层层堆叠
来在空间层次上扩展容量。但三维存储系统在容量的扩展上也有因其独特结构而
特有的问题,DRAM 层的堆叠也会受到制造工艺以及热耗散上的限制。Khurshid
等人详细阐述了三维存储系统中热耗散带来的影响 [43]。通过使用 Hotspot[44] 在
HMC 上建立一个热力学模型而进行温度测试的结果显示,三维存储系统从上至下
温度的差异非常明显而且普遍都比较高(最顶层 DRAM 层温度约有 72.3◦ C∼ 逻
辑层 82.71◦ C)。过高的温度以及较大的温差会影响 DRAM 系统的性能以及稳定
型,DRAM 系统中的防过热机制在温度达到一定程度的时候会降低其带宽从而防
止温度的增高,这也被称为“节流模式”,在节流模式下,DRAM 系统的性能也会
受到影响。此外,较大的温差也会导致某些温度较低,本无必要进入节流模式的
DRAM 层也被迫节流 [45],降低了 DRAM 的使用率。

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页
国防科技大学研究生院博士学位论文

• HMC 在访存延迟、带宽以及功耗方面都具有相当大的优势。HMC 本身与位


于 CPU 段的存储控制器之间有若干高速串行总线相连以便进行双向的数据
传输,普遍来说 HMC 的访存延迟比 DDRx 系统的访存延迟要低 25% 左右。
在 HMC 中用于进行数据传输的 TSV 可以有上千条之多,众多 TSV 组合起
来所提供的内部带宽则非常可观。存在于 HMC 的最低一级并行为 bank 级
并行,得益于 HMC 独特的 vault 结构,所有的 vault 都有一个对应的 vault 控
制器可以对存储层进行直接操作,而在 DIMM 结构中,所有的访存指令都
被位于处理器端的存储控制器调度。相比起来,HMC 相对于 DIMM 对于并
行的控制更为底层,并行更为可控且效率更高。HMC 中 vault 的数量一般都
为 32 个,众多 vault 的组合也大大提高了存储系统的并行性。HMC 在功耗
方面的优势主要是因为其垂直的结构以及 TSV 的引入大大缩短了存储控制
器与存储层之间的距离,使得 HMC 相比于 DDRx 设备传输数据更为节省功
耗。HMC 的逻辑层在一定程度上承担了原本处理器端所需要处理的存控相
关指令,在某些情况下亦不必将所有数据都传送回 CPU 端进行处理。文献
中报道称,当前对于 DDR3 与 LPDDR2 的能耗使用率评估分别为 70pJ/bit 以
及 40pJ/bit [49],而 HMC 的能耗使用率在 10.48pJ/bit [50] 至 13.7pJ/bit [1] 之
间,可以看出 HMC 的能耗有效率是传统存储结构的 7∼10 倍 [51]。

• 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页
国防科技大学研究生院博士学位论文

多大规模企业则使用 Flash 作为其数据中心 [54] 以及超级计算机的存储介质 [55];


美国能源部的超级计算机 Summit 将在其 3400 个节点上部署 800GB 的非易失存储
介质 [56]。当然 NVM 在很多方面还不成熟,例如大部分 NVM 的写耐性很差,与
DRAM 相比甚至有若干个数量级的差距,而且写操作一般都有非常高的延迟以及
功耗。对于 NVM 的相关技术在小节 2.1.3中有详细叙述。
3. 通过针对性的优化预取技术与压缩技术来利用系统空闲资源尽早将数据放
置在较上层的存储层次,从而尽可能的减少对下层存储系统的访问以缩短访问延
迟而提高性能。
预取技术以及压缩技术在近年来亦有蓬勃发展,针对不同的应用环境与不同
的优化目标有很多相关的工作被提出。一般来说预取技术可以在不引起较大面积
以及能耗开销的情况下对应用程序有较大的加速,在某些极端情况下,预取技术
甚至可能几乎消除所有的 Cache 失效 [57] [58]。当前几乎所有的处理器平台,如
Intel Xeon,AMD Opteron,IBM 以及 Oracle Sparc 等都部署了此技术 [59]。同样的
压缩技术也是一种无需较多面积以及能效开销而可以有效提升存储存储容量的方
法。压缩技术可以有效的降低失效率以及提高带宽使用率,从而转变成性能及功
耗上的有效提升,因此压缩技术在从 Cache 到主存的存储系统的各个层次都有所
使用。
然而要挖掘预取技术本身的潜力则需要一番功夫,预取本质上是需要针对当
前的访存模式而对未来的访存模式做出正确的预测,复杂的访存模式则会使得预
取器也复杂化,从而产生很多中间数据以及延迟开销。在这种情况下,较为简单
的预取器则会错误的读取一些无用的数据来消耗 Cache 空间,更甚者替换掉有用
的 Cache 数据行而影响性能。本论文的工作对于在传统存储系统以及新型存储系
统中合理利用预取技术做出了研究,提高了系统的性能。压缩技术本身也有其局
限性,主要来自于压缩与解压缩操作本身都会带来一定的延迟,会在一定程度上
抵消压缩技术带来的性能提升。因此要合理利用压缩技术则需要对压缩算法、压
缩参数选择以及数据压缩率等方面都要有所兼顾。本文也基于新型存储系统,在
其上针对性的设计了压缩管理系统,以提高新型存储系统的有效存储容量及性能。
这里仅仅对预取技术与压缩算法进行一个大概的阐述,而对于常用的预取技
术与压缩算法的相关技术在之后小节中有详细叙述。

1.3 国内外相关工作

1.3.1 三维存储结构相关工作

1)三维 Cache 存储体系结构


Cache 在拉近处理器处理速度与存储器访问速度上扮演了很重要的角色。三

第 10 页
国防科技大学研究生院博士学位论文

维 Cache 存储结构可以比传统的二维 Cache 提供更快的速度和更大的容量。从直


觉上来看,所谓三维体系结构实质上是将 Cache 层堆叠到处理器层上。传统的
Cache 制造过程中所使用的存储介质是 SRAM。然而 DRAM 相比于 SRAM 拥有更
高的密度和更低的功耗,因此将 DRAM 层堆叠在传统 SRAM 层上以扩大偏上存
储容量。技术上的革新使得 Cache 在制造的过程中融入非易失存储(NVM)技术,
例如 MRAM 与 PCM 等。相比传统的 Cache 结构,融入了新型非易失存储介质的
结构具有完全不同的性能和功耗特性,尤其是在访问延迟、存储颗粒密度以及整
体的功耗方面,新型的 Cache 结构有十分不同的特性。目前已经有一些工作专注
于在片上多处理器(CMPs)上进行 Cache 的堆叠。这种仅仅在 CMPs 上进行堆叠
Cache 的实现如图 1.4所示。图中所示的 Cache 是 LLC(最后一级 Cache),一般情
况下这种 Cache 都会与处理器在同一个芯片中且紧密相连,这个堆叠的 LLC 在每
一个存储层都会有很多个存储通道。

图 1.4 三维堆叠 Cache 示例

Black 等人 [60] 研究了利用 SRAM 与 DRAM 在 CMPs 进行的小规模堆叠。在


他的工作中,基准的结构是二维的 CMPs,这个 CMPs 包含有两个处理器核以及
4MB 的 Cache。在文中作者展示了三种三维堆叠结构:1)直接在处理器上堆叠
8MB 的 SRAM Cache;2)直接在处理器上堆叠 64MB 的 DRAM Cache;3)在处理
器上堆叠 64MB 的 DRAM Cache 以及 4MB 的 SRAM Cache。在第三种结构中 4MB
的 SRAM 部分用来存储对 64MB 的 DRAM 部分的索引。实验结果表明每次访存
行为的性能周期评价随着 Cache 容量的增大越来越好。对比结构 3,结构 2 表现出
了相近的性能与较低的温度峰值,对于基准结构,结构 2 的温度仅仅提高了微不

第 11 页
国防科技大学研究生院博士学位论文

足道的 0.08◦ C。Xu 等人在基于 NOC 的中度可扩展的 CMPs 中评价了将 DRAM 作


为 LLC 进行三维堆叠的效果 [61]。在他的工作中,这个三维 CMPs 的结构包括两
层,其中一层是拥有 16 个处理器核的计算层,另一层是拥有 16 个通道的 DRAM
存储层。实验结果表明在同样的条件下,三维 CMPs 使用 DRAM 进行堆叠比使
用 SRAM 进行堆叠的功耗要低 25.78%,但是 DRAM Cache 的命中率仅有 27.97%,
低于 SRAM Cache。在上述两个工作中进行的性能评估表示,使用堆叠 Cache 带
来的性能提升并不稳定。在此工作中,当处理器的核数增大的时候,DRAM Cache
甚至会带来性能上的损耗。之所以会使得性能降低的内在原因是 DRAM 的存储颗
粒密度相对较大,这使得 Cache 的失效率可能会被降低,但与此同时访问 Cache
的时间也会变长。若访问时间变长的这种负面效果胜过了失效率降低带来的正面
效果,那么性能势必会降低。因此仅仅是单纯的将 DRAM Cache 堆叠在处理器上
并不能有效的提升性能。
Dong [62] 等人研究了将 MRAM 作为 Cache 的存储介质堆叠在处理器核层上
的情况。将 MRAM 代替 SRAM 作为 L2 Cache 的介质,IPC 降低了约 10%,然而
平均功耗则降低了约 95%。若将 MRAM 作为堆叠 L3 Cache 的介质,相比于仅仅
堆叠 L2 Cache,IPC 则增长了约 57%,而仅仅只有约 0.685W 的功耗增长。作者
同样也将 MRAM 作为替换主存的材料,对于使用 DRAM 作为主存的材料的情
况,IPC 增长了约 72%。Sun 等人研究了在三维 CMPs 上堆叠基于 MRAM 的 L2
Cache,并将之与基于 SRAM 的 L2 Cache 作比较 [63]。结果表明,作为代替 SRAM
的 MRAM 可以降低 Cache 的失效率,然而较长的写延迟对性能也会有影响。当
写操作很密集的时候,那么写延迟带来的不利因素会使得性能下降。尽管 MRAM
可能会降低功耗,但是由于频繁的写操作,与之相关的动态功耗可能会急剧增加,
这使得总功耗可能会降低。要想充分利用 SRAM 的低访问延迟以及 DRAM 与融
合的 NVMs 带来的低功耗与高存储密度,混合型结构也许是一种比较合理的解决
方案。与此同时一些新兴的非易失存储介质,如 PCRAM,RRAM 等等在未来也
可能被当做 Cache 结构中的介质来进行研究。
2)三维混合 Cache 体系结构
通过应用一些高密度存储介质,在同样的芯片面积限制下,Cache 的大小也
可以提升的很明显。由于在 Cache 中静态功耗占据了主要的功耗部分,使用新
兴的非易失存储介质可以有效的降低功耗。因此,将快速的 SRAM 与比较慢的
EDRAM/MRAM/PCRAM/RRAM 堆叠起来对于三维 CMPs 设计者来说是一种有前
途的做法。如何有效的设计与控制类似结构是当前的研究热点。
一般来说,混合 Cache 体系结构(HCA)是一种可调试的结构。它分为两个
部分:一部分为快速部分,主要由 SRAM 构成;另一部分为大容量部分,主要由

第 12 页
国防科技大学研究生院博士学位论文

非易失存储介质构成。HCA 有两种工作模式,当处理数据集比较小的时候,快速
部分充当 LLC;若处理数据集比较大的时候,NVM 部分则会被激活。这种可调试
性如图 1.5所示。

图 1.5 可调试的 HCA 结构

Madan 等人提出了一种三维 CMPs 结构,这种结构将 SRAM Cache 与 DRAM


Cache 堆叠在核层 [64]。SRAM 层拥有 16 个数据通道,DRAM 层堆叠在 SRAM 层
上,也拥有 16 个数据通道。如果一个处理器核中的线程有比较小的数据集,那
么数据则被放置到 SRAM 层处理;若线程所携带的数据超过了 SRAM 的容量,
DRAM 则被激活。这种 SRAM-DRAM 混合体系结构可以通过定义相连度、数据
集数、块大小来及进行调试。实验结果表明,这种可调试 HCA 的 IPC 比基准结构
提升了 19%,而与此同时降低了 48% 的网络能耗。Inone [65] 等人在其工作中介
绍了一种具有相似 Cache 结构的 CMPs,这个结构中的 LLC 包含了一层 SRAM 以
及一层 DRAM,当要处理的数据集较小时(不超过 2MB),SRAM 作为 L2 Cache
来提供更快的访问速度。若要处理的数据集超过了 2MB,那么将 DRAM 作为 L2
Cache,SRAM 则用于存储 DRAM 的索引。相比于三维结构,这种结构平均可以
提升 25% 的存储性能。
第二种 HCA 的主要思路则是将频繁访问的数据分配到快速区域中,而将闲置
的数据分配到慢速区域中。这种基于数据迁移的 HCA,其示意图如图 1.6所示。
为了缓解由于融入 MRAM 带来的较长写延迟和较高的写功耗,Sun 等人提出
了一种基于 SRAM-MRAM 结构,这种结构支持数据之间的迁移 [63]。这种结构将
尽可能多的敏感数据放到 SRAM 中以提升性能和功耗。这个 HCA 结构中包括 1
路 SRAM 以及 31 路 MRAM,对于写操作,若一个数据被写了超过一次以上,那
么这个数据就将从 MRAM 中迁移到 SRAM 中。对于读操作,迁移只允许发生在
从 MRAM 到 SRAM 中去,相反则不行。平均来看这种混合结构大概提高了 5.65%
的 IPC,而且相比于仅仅使用 MRAM 作为 Cache 的结构,降低了 12.45% 的功耗。
Wu 等人在其工作中提出了两类三维 HCA [66]。第一种是 Cache 间 HCA
(LHCA),这种结构每一层 Cache 是使用不同的存储介质及技术(例如,L2 级

第 13 页
国防科技大学研究生院博士学位论文

图 1.6 基于数据迁移的 HCA

Cache 由 SRAM 组成而 L3 级 Cache 由 MRAM/PCM 组成)。第二种是 Cache 内


HCA(RHCA),这种结构是指一层 Cache 分成若干个部分,每个部分由不同的存
储介质构成,使用不同的存储技术。对于 RHCA,当一个 Cache Line 的访问频率
高于预先确定的阈值的时候,这种 Cache 数据行就会被迁移到快速部分去。模拟
结果显示,相对于以 SRAM 作为三级 Cache 的基准结构,LHCA 与 RHCA 分别能
提供 7% 以及 12% 的 IPC 加速比。LHCA 的提升比较有限是因为堆叠 L3 Cache 带
来的性能提升会被由于密集访问 L3 Cache 带来的大量的访问延迟所抵消,功耗
则可以优化 70%。Wu 等人还提出了一种区分读写的 HCA(RWHCA) [67]。在
RWHCA 中,LLC 被划分为一个比较大的读区域(由 MRAM 于 PCRAM 组成)以
及一个写区域(由 SRAM 组成)。根据读写行为的不同,相应的数据则会被分配
到不同的的区域中去。
Sharifi 与 Kandemir 提出了一种反馈控制机制动态地分配在 3D CMPs 中的
SRAM 与 MRAM 区域来满足应用级的服务质量(QoS) [68]。这种机制将程序的
理想 IPC 作为目标,动态调整 SRAM 与 MRAM 中的通道数。模拟的结果显示出
这种机制可以满足大部分应用程序的 QoS 需求。
对于 HCA 设计,当前针对于 HCA 的研究热点集中于将访问频率较高的数
据放到 Cache 的 SRAM 区域中去,将不常用的数据交换到比较慢的 DRAM/M-
RAM/PCRAM 层去。
3)三维 CMPs 中的非一致性 Cache 机制(NUCA)
在 CMPs 中 Cache 的扩大会增加访问延迟,为了缓和持续增长的访问延迟,
非一致性 Cache 机制应运而生,这种机制将 Cache 划分为片,所有的片都均匀散

第 14 页
国防科技大学研究生院博士学位论文

布在芯片上。因此,对于临近处理器的 Cache Line,其数据能比较快速的被处理


器访问到。比二维 CMPs 相比,针对于三维 CMPs 的 NUCA,由于更大的存储空
间、更新的 Cache 划分机制、混合的体系结构、多样化的通信部件以及完全不同
的热力 / 功耗限制,对其的研究是一个新的领域。
Li 等人在其工作中阐述了一种三维 CMPs 结构 [69]。这种结构将处理器散布
在许多不同的层,将剩余的空间用 L2 Cache 来填充。不同的层之间使用垂直的总
线来连接。如此一来,与同样的二维 CMPs 结构相比,三维结构中部件之间的物理
距离则大大减小。结果表明这种结构相比于二维 CMPs,IPC 提高了 18%∼37.1%
不等(根据不同的划分策略而定)。
Jung 等人提出了一种基于组的动态 Cache 划分算法 [70],根据 Cache 的用量
分配合适的 Cache 通道。这种算法可以有效地降低 Cache 访问延迟,而 Cache 通
道的划分基本是根据片上网络的距离跳数来决定,处理器核应该更接近于频繁
访问的数据。实验结果表明对于四核 CMPs,IPC 提升了 10.4%。而针对于 16 核
CMPs,IPC 提升了 23.3%。每条指令的功耗在四核 CMPs 与 16 核 CMPs 上分别降
低了 10% 与 17.9%。Jung 针对多程序研究了划分 L2 Cache 的问题,在其文章中提
出了基于用量的延迟感知的 Cache 划分方法(LUCP) [71]。通过探索访问延迟的
多样性以及程序的用量,LUCP 针对每个核都限制了 Cache 资源。为了有效的降低
使用时间,作者使用了启发式方法。实验结果表明,访存时间最高降低了 32.6%。
Loh 等人研究了将 DRAM 作为三维 CMPs 的 LLC [72]。作者提出了一种新型
的 DRAM Cache 体系结构,这种体系结构中使用了一种新型的基于伪 LRU 的替
换策略。这个替换策略可以独立考虑每个核的 Cache 使用情况并有效降低利用率
低的 Cache 通道数量。这种方法可以使 IPC 提高 29.1%。
Misha 等人在三维 CMPs 中融合了 STT-RAM,且在片上网络级提出了重排序
机制来缓解过量写开销问题 [73]。重排序机制是基于避免向高负载的 STT-RAM
通道发送连续请求来隐藏写延迟。在文章中作者使用了启发式方法来准确预测在
距离目的地若干跳的 Cache 通道的忙闲情况。同时文章中也阐述了一种请求优先
级机制来有效的利用空闲的 Cache 通道。实验结果表明相比于 2 层的三维 CMPs
(每层 64 个结点),平均可获得 14% 的 IPC 提升。
4)在三维 CMPs 上堆叠主存
通过使用垂直 TSV,在处理器层上堆叠主存可以提供相当大的存储带宽以便
有效缓解存储墙问题。已有许多研究表明,将三维堆叠技术使用在主存上可以在
性能上带来较大的提升。三维堆叠主存如图 1.7所示:
Meng [74] 等人介绍了一种能够对片上 DRAM 主存进行建模并对性能、功耗、
温度进行评估的框架。作者实现了一种能够在维持功耗与温度的限制条件下使得

第 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 页
国防科技大学研究生院博士学位论文

体系结构,在每次进行较大数据传输的同时,利用 TSV 带宽充足的特点进行较小


的数据传输,以此隐藏访问延迟。实验结果表明,对于单线程的存储密集型应用
程序,相比于传统的二维 CMPs,这种结构的加速比可以达到 1.53∼2.14;相比于
先前的三维堆叠存储结构,这种结构的加速比可以达到 1.27∼1.72。在降低了列缓
存失效的情况下,L2 Cache 与三维 DRAM 的功耗有了降低。

1.3.2 面向处理器及高速缓存的主流预取技术

随着计算规模的快速增大以及处理器能力的飞速增长,存储系统愈发成为整
个存储系统中的性能瓶颈,这也就催生了诸如预取之类的延迟隐藏技术的发展。
但是不针对特定使用场景的预取优化技术甚至有可能对系统性能以及能耗产生不
利影响。之前的工作针对不同的优化目标及应用场景提出了若干预取方法。
1)流预取以及偏移预取
对于流预取器的研究由来已久。Jouppi 等人提出了一种使用流缓冲区的预取
方案 [79]。当出现 Cache 失效时,Cache 数据块将被顺序地预取到一个独立的先进
先出的(FIFO)流缓冲器中而并非 Cache 中以避免强制性 Cache 失效、Cache 污
染以及额外的存储开销。当出现 L1 CACHE 上的指令未命中时,存储控制器会检
查检查流缓冲区的第一个条目,若为吻合的数据则取回 CACHE。这种方法是预取
思想一种非常朴素的实现,其优化形式可以实现更为复杂的功能,例如采用了流
水线技术之后,预取器可以对混合数据流进行预取,效率更高。当预取的数据被
访问到时,存储控制器会流出更多的预取指令以保证在处理器的指令流到达之前,
缓冲器可以维持充足的可能被访问的数据。
Zhu 等人注意到之前的的基于局部性的流预取工作都缺少对失效时序信息的
关注,这就会导致很大比例的不及时预取,也就影响到了预取有效性。他们也发
现恒定偏移预取器中,地址流中的相邻访问以几乎相同的时间间隔发生,也就是
说在流中数据访问其实是以可预测的时序发生的,基于此文中提出了时序感知的
偏移预取器。与传统的仅存储访存地址的预取器相比,这种预取技术所依赖的评
估数据除访存地址之外还包括时序信息。这种技术根据访存地址判断这些未命中
地址是否来自相同的存储区域,从而将若干未命中流分类为不同的流,而与此同
时不同流之间的访问或之间的时序间隔作为直接预取的考虑因素之一。这种技术
可以避免不及时的预取,缓解了 Cache 污染,降低了内存带宽需求,结果显示其
相比于恒定偏移预取器有 11% 的加速 [80]。
Kim 等人说明当前的技术都不能很好的预取到所有的或者最好的数据流,而
提出了一种全新的预取方法,多个流追踪器 MST,来识别在一段 Cache 失效流中
的所有具有偏移特性的访问流,并从中选取一个尽可能覆盖所有失效的“最好”

第 17 页
国防科技大学研究生院博士学位论文

的访问流。MST 可以识别所有基于 PC 以及基于偏移而产生的数据流,其中的偏


移检测机制不基于 PC 或者集中区信息(CZone)。MST 计算最后一次失效与之前
的某次失效之后计算二者之间的偏移,并测试此偏移值是否可以作为某个失效流
的偏移值。MST 通过确定多个偏移值并确定多个失效流,即从中选择更准确的且
能覆盖更多未命中的流(一般是最长的流)作为之后进行预取的基础。当然由于
存储空间的限制,MST 会选择跳过跟踪其中一些流。MST 的硬件开销更小,尤其
对并行程序可以取得可观的效果,运行在 L3 Cache 上可以取得比偏移预取器平均
14% 的性能加速 [81]。
2)关联性预取技术
Roth 等人注意到基于链式数据结构的程序内核会在运行之后的一段时间内按
可预测的形式遍历数据结构,从而提出了一种动态方案来捕捉链式数据的访存模
式并用来预测之后的访问。该技术探索产生某些地址的读取指令与读取某些地址
的读取指令之间的依赖关系,通过识别这种依赖关系,这种技术建立了这种相关
结构以及其遍历方法的表达方式。之后这种技术同时加载一个轻量级的预取引擎
与主程序,预测引擎将先于主程序执行之前流出读取对某地址以及与之有依赖关
系的一系列地址的访问,从而有效地隐藏 LDS 访问延迟。文中报道这种方法大约
有 25% 的性能提升 [82]。
Chou 注意到在使用相关性预取时,若所涉及到的指令与数据过多,则运行时
所需要的相关性表就非常大,使之存储在片上是非常不现实的。文中提出了一种
基于“时间段”概念的相关性预取器,它将相关性表存储到内存上来节省片上空
间。这种预取器利用了程序中时间段的概念来隐藏访问相关性表所需要的延迟:
应用程序执行可以在逻辑上划分为若干个时间段,在每个时间段都可以分为片上
计算时段和片外访问时段,那么消除片外访问就可以减少时间段长度,从而转化
为性能提升。文中提出的技术通过预取整个时间段中的所有的片外未命中以完全
消除它们。此外此工作在处理器核由于其他内存访问或片外访存而停止时访问在
主存内的相关性表,从而利用存储级并行来隐藏访问主存的时间。相比于之前的
相关性预取器,此工作可以达到最高 31% 的性能加速。 [83]。
Liu 等人基于程序的时空局部性提出了一种基于相关性的未命中预取技术。
在此技术中,当目前未命中与之前一个未命中发生之时在时间和空间上都很接近
的时候,就可以认为这两个未命中之间存在相关性。在动态捕获这些未命中之间
的关联之后,此技术将这些相关性数据与数据块内容一起压缩保存。通过这种创
新的方式,这种方法可以在不引入额外延迟以及存储带宽开销的前提下同时取到
相关性历史以及数据块内容。如此基于未命中的相关性,这种技术可以平均提升
88% 的 IPC [84]。

第 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 页
国防科技大学研究生院博士学位论文

进一步将数据返回处理器或 Cache。由于 MSP 位于存储器端,因此可以更便捷的


利用 DRAM 行局部性以及通道状态来提前获取数据。这种方法可以降低片外访存
数目,减少 DRAM 行冲突,有效降低访存延迟。同时 MSP 在每个访存控制器旁
都设置一个小型缓冲,所有的数据首先防止在小型缓冲而不是直接传送回 Cache
以减少片上资源冲突。当发生行缓冲区命中时,MSP 使用下一行预取方案进行预
取,便使得对该行的连续请求就会转变为预取命中。实验表明,单独运行 MSP 可
以提高 6.2% 的 IPC。此外 MSP 可以与处理器端预取器相配合以达到更大的性能
提升。实验表明 MSP 与处理器端预取结合可以获得 10% 的 IPC 提升 [96]。

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 基于三维存储系统的加速器

如今使用 GPU、FPGA 等协处理器或并行性硬件对某些应用程序进行加速已


经屡见不鲜,但是这种加速需要昂贵的额外硬件,而且一般需要对应的软件框架、
编程模型等配合才能完成优化。三维存储系统本身可以作为计算机系统中的内存
部分而存在,因此并不会带来额外的硬件负担,只需要针对优化的应用程序本身
的访存特性进行设计即可。因此本文基于三维存储系统的低延迟、高带宽以及支
持简单内存内计算的特征,针对性的设计加速器以优化了矩阵乘以及图遍历两个
访存模式迥异的应用程序。

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 本文主要创新工作及其相关关系

SCI 收录国际期刊 2 篇,国际会议 6 篇(EI 检索)。

1.6 论文结构

全文共分六章,各章的主要内容如下所示:
第一章,绪论。介绍了本文的研究背景、动机以及目的,同时也对国内外相
关的研究工作、本文的研究工作及创新点做出了阐述。
第二章,存储系统以及关键技术。主要对传统的存储结构以及新型存储结构
和介质、相关的优化技术进行了详细的阐述,为开展后续章节的工作奠定了充分
的理论基础。
第三章,一种面向多层存储结构的优化预取效率方法 CHAM。面向较为复杂
的多级存储系统,CHAM 在运行时以预取准确率为评估标准,动态调整预取指令
与普通访存指令的优先级相对关系,以及动态选择预取数据传回的存储层次来保
持预取的效率。此外预取准确率也用于指导 Cache 替换策略的选择,用于维持较
高的预取准确率,从而提升存储系统的性能。
第四章,一种提升三维存储结构容量的压缩管理机制 CMH。针对新型存储系
统容量提升不高且后继乏力的情况,CMH 使用简单且低开销的 BDI 压缩算法对
流经 HMC 的非常用数据进行压缩。CMH 包含一个数据层次管理系统来保证存储
内压缩与非压缩数据的有序存储以减少存储内数据移动与访问开销;此外还有垃
圾回收机制来避免存储空间的碎片化。
第五章,使用 HMC 存储内计算进行加速的方法:HMCSP 与 CGAcc。使用
HMC 作为加速器优化矩阵乘与图遍历,HMCSP 主要使用 HMC 的 PIM 特性来降

第 29 页
国防科技大学研究生院博士学位论文

低访存规则的矩阵乘程序中的传输延迟;CGAcc 在利用 PIM 之外还结合了图遍历


程序本身的特性,引入流水线预取机制来加速图遍历程序。
第六章,结论和展望。总结已经完成的工作,并对未来的工作做出展望。

第 30 页
国防科技大学研究生院博士学位论文

第二章 处理器存储体系结构以及关键技术介绍

自计算机系统诞生以来存储系统就随处理器系统发展而一直在发展,存储墙
问题的出现以及大数据时代的来临进一步促进了处理器存储体系结构以及相关技
术的向前进步。近年来对于处理器存储体系结构的研究主要集中在两个方面:1)
结构优化,以及 2)相关技术优化。对于结构优化方面,主要工作在于一些新型存
储结构以及若干新型存储介质;对于相关技术优化方面,主要在优化与传统存储
结构相关的预取技术与压缩技术,以及基于新型存储体系结构的存储内计算技术
等。对这些主题的研究至今仍是热点,但在当前处理器存储系统结构飞速发展的
环境下,新型存储结构与介质尚有可优化的空间,而传统的多种传统优化技术也
需要针对新型存储结构进行针对性优化。本章对于处理器存储系统结构以及相关
技术做了一个全面的阐述,为之后的研究工作铺垫了理论基础。

2.1 处理器存储系统结构介绍

2.1.1 传统处理器存储体系结构及其优化

第一代双倍数据率同步动态随机存取存储器与 2000 年面世,在商用计算机市


场上获得巨大成功。目前第四代双倍数据率同步动态随机存取存储器(DDR4)是
现时最新的商用存储器规格,其相比于前代处理器在性能上有很大的提升。其下
代产品 DDR5 已经于 2017 年在 rambus 实验室研制成功,并预计于 2019 年实现
量产。在商业上取得巨大成功的同时,这种传统的二维存储结构面临物理上的位
元难以缩小等问题,在未来的功能扩展上比较困难,之前有一些工作是基于这种
传统二维存储结构并进行结构上优化以达到提升性能的目的,在本节会依次进行
介绍。
1)DDR4
双倍数据率同步动态随机存取存储器的结构可以从逻辑与物理上分别进行介
绍。如图 2.1所示,从逻辑结构上来说,基于 DRAM 的传统存储系统按逻辑层级
结构由整体到部分可以分为 channels,ranks 以及 banks。一个 channel 由共享地址
与数据总线的若干 rank 以及一个存储控制器组成。一个 rank 由若干个(通常为
8 个)bank 组成,bank 可以并行的对访存指令进行处理,也即存在 bank 间并行,
而 bank 是存储结构中可以并行被访问的最小单位 [114] [115]。从物理结构上来说,
DRAM 在实物上是以 DIMM(dual in-line memory module,双通道存储模块)的形
态展现的。DIMM 的每一面都包含两个 rank,每个 rank 中包含若干芯片(chip),
每个 chip 中包含若干 bank。值得注意的是,这里的 bank 是物理上的概念,与逻

第 31 页
国防科技大学研究生院博士学位论文

辑上的 bank 有一定的区别,主要体现在逻辑 rank 结构中的每一个 bank 都是由物


理 rank 中各个 chip 上的对应 bank 的一部分组成的。chip 中若干具有相同编号的
bank 共同组成行(row),每个 row 都具有一个行缓冲器(row buffer)。存储器中的
最小单位称为存储位元(cell),若干存储位元通过共享数据线而形成阵列(array)。

Array

ĊĊ

One Word Output

Bank Chip Rank DIMM

Memory Bus
Memory
Controller

图 2.1 DRAM 层次示意图

图 2.2展示了 DRAM 中位元的结构。每个位元在物理上由一个电容,一个晶


体管以及垂直比特线和水平字线组成。其中电容用于存储电量来表示存储状态,
晶体管用于做访问控制,比特线与水平线则用于确定该位元访问地址。当一个访
存指令访问一个 rank 时,行地址确定之后对应行会被激活,对应的行缓冲器就被
用于存储对应行中所读取的数据。访存指令中 bank 位确定之后,对应的逻辑 bank
即被确定,在物理器件上则反应为所有的芯片中的对应 bank 都被选中,之后确定
行选与列选之后即选定阵列,从其中读取 8 比特的数据,一个 rank 中的所有 8 个
bank 中的特定阵列都会被访问到,从而达到 64 比特的数据总线宽度。读取的数据
会通过传感放大器而放置在行缓存中。一些 DRAM 系统中提供 8 位预取或 burst
读取以缓解存储器处理速度与数据传输速率时间之间 4∼5 倍的差距。预取数据的
大小一般与 Cache 数据块大小一致 [116] [117]。
2)LRDIMM
LRDIMM(Load Reduced DIMM,精简读取 DIMM)在 DRAM 的结构基础上
进行优化,以达到更高的存储密度。与传统的存储结构相比,LRDIMM 中 CPU 端

第 32 页
国防科技大学研究生院博士学位论文

Row/col address N cols Address line

Row Select Decoder


Address line

Transistor

N rows
Array

Capacitor
Sens Amps

Col Select Decoder & Row/col


I/O circuits address
Bit out
Bit line Ground
Bit in

图 2.2 DRAM 位元示意图

的存储控制器的访存模式为串行模式,其将之前的数据信号、指令信号以及控制
信号打包称为一单独的指令,并发送至 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 页
国防科技大学研究生院博士学位论文

DIMM 所导致的额外功耗大约为 4W,那么 FB-DIMM 相比 DDR3 就会有 100W 之


多的开销 [46]。
4)Buffer on Board
BOB(Buffer on Board,板上缓存)存储系统通过在每个 DIMM 之前都设置
存储控制器并与位于 CPU 端的主存储控制器形成网络而有效提升容量和带宽。各
个存储器之前的控制器(称为副存储器)与其对应的存储器之间通过传统的标准
存储传输协议通信以保持简单易用,而各个存储控制器之间使用高速双向串行链
路连接,通过基于包的协议进行通讯以及数据交互以保持高带宽 [47],可以看出
这种结构已经具有三维堆叠存储结构的雏形了。网络型的存储控制器的设置的好
处有三:1) 可以提高整体系统的存储带宽,同时也提供了更好的存储级并行,更多
的存储指令就可以更快的被分配到独立的存储资源中以降低冲突;2) 更好的存储级
并行使得访存指令可以更快的被访问,从而降低访存时间,而更高的带宽也使得
数据传回 CPU 的时间更短;3)可以提升整体的存储容量,串行接口的使用有效
降低了所需要使用的管脚数目,从而使得 CPU 可以连接更多的存储模块,继而增
大了存储密度。总的来说 BOB 存储系统可以在仅仅有很低延迟开销的前提下达到
较高的带宽和容量,但在副存储控制器数量较多时,存储控制器本身以及新引入
的高速双向串行链路会给系统带来很严重的功耗问题 [46]。

2.1.2 新型存储介质及结构

三维堆叠存储系统利用封装技术,将若干 DRAM 层堆叠起来,并使用铜质


的 TSV,垂直的将各个堆叠的层次之间连接起来 [120] [121],从而可以提供更短
的访问延迟以及更大的带宽。除了更低的数据访问延迟之外,这种突破性的技术
带来了许多好处,例如更低的激活功耗与动态功耗、更好的 I/O 速度等等。此外
封装技术的进步使得三维存储系统可以放置在距离处理器更近的位置,而且也使
得 CPU 端与存储器端之间的管脚数目大增,因此三维堆叠存储系统可以提供更
高的带宽。目前 JEDEC 已经推出了高带宽存储(HBM)的参数标准 [122],一些
其他的厂商也提出了其他类型的三维存储结构如 HMC [52] [123]、Wide I/O [124]
等。当今的一些处理器中也应用了三维存储系统,例如 AMD Zen [125]、Intel Xeon
Phi [126] 以及 NVIDA Pascal [127] 等等。尽管三维存储系统可以提供低延迟以及
高带宽,这个技术还是有需要优化之处,其存储容量大小比如今常用的商用存储
器要小很多,一般情况下只有几个 GB。也正是由于存储容量是存储系统中非常重
要的衡量参数,目前三维堆叠存储系统并未完全商用化。
1)Hybrid Memory Cube
图 2.3与图 2.4分别展示了 HMC 的硬件示意图以及结构示意图。可以看出

第 34 页
国防科技大学研究生院博士学位论文

DRAM layers

Base logic
layer
Vertical TSV
connections

图 2.3 镁光公司的 HMC 部件 [1]

HMC 与 CPU 端是用高速双向串行总线相连接,其内部是由一个逻辑层以及若干


To DRAM
个(目前一般为 4 或 8 层)DRAM 层堆叠而成 [50]。图中所示的垂直柱状结构(亦
layers
可看成是若干“双 bank”的组合)是 HMC 中的最小管理单位,称为 vault。每个
vault 中有若干容量大小固定(16MB)的 bank,其 bank 的数量与 HMC 具体的容
量相关。在最新一代的 HMC 中最多允许有 32 个 vault,每个 vault 内部都有独立
的 TSV 导线以及 vault 控制器,这使得每个 vault 可以以并行的方式处理访存指
令。此外由于 TSV 具有相比于 tCCD(传统 DRAM 中的更换列访问延迟)更短的
延迟,使得在 vault 内部可以通过合理的调度而分时复用 TSV,在某种程度上做
到了 vault 内并行 [128] [129]。HMC 在逻辑层上为管理每个 vault 都配备了专用的
vault 控制器,这在另一方面就降低了在 CPU 端的存储控制器的复杂度。实际上
逻辑层上除了控制模块之外还有很多空闲的资源可供使用,这也为之后利用 HMC
进行存储内计算的研究提供了物质基础 [50]。

Vault
VC0 VC1 ĂĂ VC2
HMC

DRAM layers TSVs Switch


Vault
Controller Link 0 Link 1 Link 2 Link 3
Logic Layer
HOST CPU
Links
HOST

(a) (b)

图 2.4 HMC 的结构以及模块连接示意图

HMC 使用串行通信接口,其逻辑层的串行 / 解串行部件负责与 CPU 端的互


联网络间使用以数据包为基础的传输协议进行直接且快速的点对点的通信。HMC
的逻辑层中有 4 到 8 条的高速双向串行链路,每条链路有 16 条双向通道,每条通
道有 10,12.5,15Gb/s 的可选数据率。当数据率被固定到 15Gb/s 时,HMC 可以

第 35 页
国防科技大学研究生院博士学位论文

提供峰值为 480GB/s 的带宽。vault 与逻辑层之间的数据传输是通过一个交叉网络


实现的。这种独特的数据传输模式也使得 HMC 并不在标准 JEDEC 标准中,对其
在市场上的推广造成了一定的影响。
相比于传统存储模块,HMC 在节省功耗方面也更有效率。文献报告称,包含
访存操作、TSV 传输以及串行链路输入输出的功耗综合为 10.48pj/bit,其中逻辑层
的功耗为 6.78pj/bit,其中包含了控制器模块与串行链路模块 [50]。这相比于传统
DDR3 中的 70pj/bit 的功耗以及 DDR5 中的 18∼22pj/bit 的功耗 [50] [130],可以说
是非常大的提升了。
2)High Bandwidth Memory

图 2.5 AMD 公司的 HBM 部件 [2]

图 2.5展示了由 AMD 公司推出的 HBM 器件实物。与 HMC 不同的是,本质


上来说 HBM 并不是严格意义上的三维堆叠,而更可以被称为是 2.5D 堆叠,其
使用大量 TSV 与微型棒来将若干 DRAM 层与逻辑层相连(这个逻辑层在整个系
统内并非必须)。HBM 中处理器层并不与存储层堆叠在一起,处理器层与存储层
之间的连接则通过大量的 TSV 实现,可以在图中看到这些 TSV 通过硅中介层基
板将二者相连。HBM 中一系列垂直的 bank 组成一个接口为 128bit 的 channel,每
个 channel 都可以独立的处理访存指令且很多时候不用考虑数据依赖性,这样保
证了 HBM 的高并行性。当前的 HBM 支持每个堆叠结构中最多 8 个 channel 且每
个 channel 的最大带宽为 32GB/s,那么堆叠结构最大的带宽即为 256GB/s,这也
是当前常用的 HBM2 的最高带宽。HBM 的功耗大概为 6∼7pj/bit,较之 HMC 更
低 [131]。HBM 本身也是 JEDEC 推出的存储标准之一 [122]。目前 HMB 在包括英
伟达 Tesla P100 等显卡上都有应用 [132]。关于 HBM3 的标准于 2016 年推出,预
计于 2019 年进行量产,而 HBM4 则预计于 2024 年推出。
3)Wide I/O
Wide I/O 与 Wide I/O 2 均是针对可移动设备的三维堆叠存储技术。Wide I/O 2
中将存储层直接堆叠在处理器层上,并用大量的 TSV 来将二者相连。在 Wide I/O
中 TSV 被设置为低频状态,以保证有较大带宽的基础上功耗不致过高,从而适应

第 36 页
国防科技大学研究生院博士学位论文

移动设备的功耗需求。对于 Wide I/O 2、HBM 与 HMC 这三种具有不同使用环境


的三维存储介质之间的比较见表 2.1 [131]。

表 2.1 Wide I/O 2,HBM,HMC 比较

Feature Wide I/O 2 HBM HMC


目标系统 可移动设备 图像处理 服务器
JEDEC 兼容性 是 是 否
接口 并行总线 并行总线 高速双向串行链路
最大带宽 68 GB/s 256 GB/s 320 GB/s
系统集成方式 处理器上堆叠 硅中介 高速串行链路
主要缺陷 功耗 / 热耗散问题 对硅中介依赖 非 JEDEC 标准

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 污染以及资源竞


争等问题。所谓 Cache 污染指的是不准确的预取数据会替换掉 Cache 中本来
存在的有用数据,从而使得访问这些有用数据时遇到 Cache 失效而不得去更
低一层的存储阶层来获取数据,更多的失效也会引起更多的预取,从而形成
恶性循环,增大了访存延迟。而资源竞争更是引入预取技术所不可避免的问
题,在存储系统中预取指令与普通访存指令本身是没有差别的,而服务访存
指令的硬件资源有限,资源的竞争不可避免,当预取准确率不高时,这种资
源的竞争会导致性能的下降。之前一些工作为达到预取指令与普通访存指令
之间的平衡,针对性的对预取器进行优化,使其在合理的情况下流出预取指
令以缓解资源竞争问题。也有一些工作通过设置额外的缓存来放置预取的数
据来缓解资源竞争问题,但这又引入了额外的硬件开销,而且无论是延迟还
是功耗都势必有所增加。除此之外还需要一系列额外工作来区分预取指令与
普通访存指令以确保因普通访存指令而获取的数据不会占用此缓存。

• 如何控制预取技术带来的开销。预取技术为了避免冗余的数据读取,需要在
每次预取之前对 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 二维集成的存储内计算

20 世 纪 60 年 代 Dennard 等 人 发 明 了 单 晶 体 管 DRAM 位 元 的 同 时 [176],


Minnick [177],Kautz 等人描述了处理能够实时与大规模并行阵列互连并允许处
理数据传入的逻辑结构 [178] [179]。这种内存逻辑阵列(cellular logic-in-memory,
CLIM)是一种针对特殊应用的结构,因此在一定程度上也限制了它们的功能。
Stone 等人在 1970 年提出了内存处理器中的通用逻辑 [180]。这些 CLIM 阵列不是
真正的 PIM 架构,因为它们的功能仅限于它们的应用场景,但是这些架构与想法
确立了组合计算逻辑与存储结构的基本思想。Fuchs 等人开发的 PIXEL 平面体系
结构与 Ellioitt 等人使用大规模并行通用处理器来进一步实现存储内计算可以看作

第 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 页
国防科技大学研究生院博士学位论文

Liu 等人之后再一次测试了 Kleiner 等人的研究,并提出宽总线的引入可以引脚


和 PCB 布线限制,从而实现更高的系统性能 [195]。重复了 Kleiner 等人的研究并
称 [196]。但是当时的研究存在一些问题,主要是在热耗散方面,Kleiner 等人得出
三维堆叠不会出现热耗散方面的问题的结论,这在目前看来是不正确的 [197] [43]。
在商业支持方面,Tezzaron Semiconductors 公司公布了他们的三维堆叠 SRAM 产
品 [198]。从 2004 年到 2011 年,三维堆叠的近存储计算研究并没有引起人们的
兴趣。
三维集成存储内计算于近年来开始兴起,三维堆叠 PIM / 近存储器处理架构
的相关研究显著增加,基于过去二维集成 PIM 研究的结果,这些研究大多避免了
将计算部件直接嵌入到存储器中,而是通过借助 TSV 堆叠多个混合技术的层来实
现。这主要是因为数据密集型大数据应用领域的兴起,存储内计算可以使得计算
机系统尽可能的从更高层次的存储结构中获取数据,而避免从更下层的存储获取
数据以增加延迟。然而目前的系统可以提供高达 1TB 的主存储器 [199],一些研
究人员甚至提出使用非易失性存储器来形成非常大的主存储器 [34],这也为存储
内计算保证了容量基础。在硬件层面,三维互连技术的主要技术基础依赖于参数、
速度、产量、尺寸和耦合可控的硅穿孔技术(TSV),TSV 已于 2009 年投入生产,
为三维存储结构中各层之间的高速互联提供了物质基础 [200]。镁光公司于 2011
年宣布推出混合存储器立方体(HMC),其将逻辑层与存储层分离,HMC 中计算
逻辑部件放置在逻辑层上,存储层包含若干存储芯片堆叠在逻辑层上方,这便克
服了传统二维 PIM 中所面临的计算部件与存储部件互相影响而导致二者都无法发
挥最好性能的问题。 [1] [50]。在软件层面,目前 OpenMP、OpenACC、CUDA 等
编程语言已经有了长足的发展,为 PIM 中使用编程模型提供了软件支持基础,可
以有效避免二维集成 PIM 所面临的编程负担。三维 PIM 在缓解解决超大规模问题
(百亿亿次级计算时)时面临缓解功耗墙问题、设计低功耗系统方面也提供了新的
思路,当前通用计算系统在处理超大规模问题时所需要处理的数据移动所需要的
功耗、数据带宽都是目前系统无法承担的。一种解决超大规模问题的可行解决方
案是直接在数据存储的地方或附近进行计算来减少数据运动,这也正是存储内计
算 / 近存储计算致力于处理的问题 [201]。
鉴于三维存储结构在带宽、延迟、能耗等很多方面上的优势 [196] [202] [187],
针对在三维存储结构的逻辑层中集成异构的计算组件的好处在很多文献中都有报
道 [203] [204] [205] [206] [207]。这些研究大多集中在通用体系结构领域 [188] [208],
也有一些研究探究了针对特定应用的定制计算逻辑,例如将性能优化的通用架
构与诸如正则表达式加速器等专用功能部件相结合以对某些特定应用进行加
速 [187] [184]。Loh 等人的工作中表示了进行定制化设计可以得到的性能加速非常

第 48 页
国防科技大学研究生院博士学位论文

可观 [206]。还有另一种更为温和的软件 PIM 方法是基于相同的指令集架构(ISA)


将 PIM 部件嵌入常规通用处理器,这些 PIM 指令可以用于将所部分需要处理的计
算任务从主机迁移到存储器端以均衡负载并增强并行性,实际上目前很多协处理
器都采取的是这种做法。
尽管三维存储结构 PIM 在性能等方面有出色表现,但其目前仍有许多问题亟
待解决,例如可编程性、可升级性较差、测试开销很大且产量受限等等。学术界
非常多的针对三维 PIM 的研究并没有使得在工业上并没有一种成型的硬件架构
适合三维 PIM,使得在固定能耗、热耗散、面积开销的前提下,合理的分配计算
部件与存储部件所占的比例以使得三维 PIM 在性能、功耗、热耗散等方面都能
达到合理的状态 [183]。因此未来三维集成的存储内计算还是有很大的可研究空
间 [209] [34]。

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 页
国防科技大学研究生院博士学位论文

种方法欠缺对 LLC 带来的影响的考虑(例如预取指令的优先级分配以及预取数据


应该传回哪一层等等)。因此现在应用于商用系统中的预取管理方式并不适用于三
级层次的 Cache 系统中 [223] [224] [225]。2)尽管很多关注多级 Cache 存储系统的
预取机制已经应用于多种场合 [111] [226] [227],但这些工作仅仅是使用预取正确
率作为运行时评估的参考值,却很少有工作以提高预取准确率为目的。
3HUIRUPDQFH&RPSDULVRQ


'(( '()








QFKE]LS JFF V PFI FV 0 G N ,,
OEH DYH PD $' QDP JREP GHDO
SHU EZ JUR WXV
FDF

图 3.1 在不同的预取优先级情况下的 IPC 表现

一般来说在存储系统中,所有的访存指令都可以归结为两个类:预取指令和
访问指令。而将这两种不同的指令赋予不同的优先级通常会导致性能的很大不同。
以 DEE(预取指令与访问指令有相同的优先级)与 DEF(访问指令有更高的优先
级)为例,取 SPEC 2006 中的 10 个应用程序进行测试,结果如图 3.1所示。可以
看出其中一些程序在 DEF 的设置下性能更高,而其余的程序在 DEE 的设置下性
能更高。这个结果也说明了固定的设置优先级并非是最优配置,而运行时动态调
整预取指令的优先级更为可取。本章提出了一种在运行时使用预取准确率为参数
来决定赋予预取指令优先级的方法。以往已有工作利用预取准确率来指导有效预
取,但只适用于两级 Cache 系统,这与实际的更为复杂的 Cache 系统在很多方面
都有区别。除此之外,以往的工作并没有很好地在实时进行动态调节。在本章提
出的工作中,针对三级 Cache 系统,我们不仅动态地调整分配到所有存储指令的
优先级,也动态地调整进行读取数据传输至 Cache 中不同层次的阈值(相关概念
及设计在小节 3.3.1中会有详细叙述)。
考虑到多级 Cache 系统的复杂性,Cache 替换策略也应该将预取相关的运行时
参数纳入考虑范围以提高性能。针对不同替换策略下的性能差别,我们依旧测试
了来自于 SPEC2006 [228] 的 10 个应用程序。如图 3.2所示,左边五个应用程序在
替换策略为 LRU 时 IPC 较高,而右边 5 个应用程序在替换策略为 PACMan-DYN
(一种动态调整的替换策略,在小节 3.3.2中会有详细描述)时 IPC 较高。这也说明
单一的一种替换策略无法始终保持很有效,同样也不能保证预取指令能被合理的
调度。因此一种由预取准确度指导的混合型替换策略很有希望能提升预取准确率

第 52 页
国防科技大学研究生院博士学位论文

3HUIRUPDQFH&RPSDULVRQ

/58 3$&0DQ'<1








QFKE]LS JFF DU N
'7
' S
HWS VSKLQ
[ DQG DQG
OEH DVW EP HFU VSHFU
SHU DQF HPV) RPQ VS
[DO * 

图 3.2 在使用不同 Cache 替换策略下的 IPC 情况

并提升系统总体性能。
本章提出了一种层级感知的复合方法 CHAM 来提高预取效率,继而提高存储
性能。CHAM 可以在运行时自适应地改变预取指令与访存指令的优先级,并根据
预取准确率动态决定应该把数据回传至 Cache 的哪一级。CHAM 亦包含了一套混
合的替换策略,这种替换策略综合了 LRU 以及 PACMan-DYN [229] 两种策略,并
使用一种组内竞争方法(set dueling mechanism, SDM)来选择当前尽可能的最合适
的策略以保持预取的有效 [230],使得整体性能提高。为了实现这个目标,CHAM
定义了如下几个决定性因素:1)决定预取指令的优先级的阈值;2)决定将预取
的数据传回 Cache 的哪一层的阈值以及 3)实时的合适的 Cache 替换策略 [231]。
我们使用了 SPEC 2006 中的 28 个程序 [228] 以及 BioBench 中的 2 个程序 [232]
来测试 CHAM。评估的标准有 Cache 访存命中率(只选取 L2 级进行评估,即 MLC
Cache 命中率)以及 IPC。实验结果表明在三层 Cache 系统中,CHAM 相比以前
相似的工作有更好的性能表现,平均来说比传统的 Cache 结构有 1.4% 的性能提升
(最大性能提升为 7.3%)。在双核与四核系统中,加速比分别为 2.5% 与 10.1%。关
于 MLC Cache 命中率,在单核、双核以及四核环境下的提升分别为 9.2%、16.8%
与 33.1%。此外 CHAM 的硬件开销非常低,经评估在四核环境下就只需要 2.1KB
的开销。
本章的贡献如下:
1)基于复杂的多级存储结构提出了一种优化预取效率方法。这种方法可以实
时收集预取相关参数,并依据参数动态调整优先级相关阈值,使得预取的数据可
以被传输到合适的层次。
2)我们提出了一种以预取效率为导向的混合 Cache 替换策略。通过在本段时
间窗口中动态的从 LRU 与 PACMan-DYN 中选择预取准确率较高的一个作为下段
时间窗口内使用的替换策略。这种混合 Cache 替换策略成功地提升了预取效率和
系统性能。

第 53 页
国防科技大学研究生院博士学位论文

3)经过全面的实验测试证明,CHAM 与之前相似的工作相比在 MLC Cache


命中率与 IPC 上都有更好的结果。

3.2 相关背景知识及设计动机

3.2.1 背景知识

硬件预取在处理器中是一种非常重要的提升性能的技术 [233]。此前的很多工
作都证明了硬件预取可以为系统带来 10%∼30% 的性能提升 [229] [234]。预取器
会窃听所有从处理器到存储系统的存储指令。一些关键的信息,诸如存储访问的
位置会被记录下来,然后预测未来会有哪些位置有可能被访问到,并向这些位置
流出预取指令。但在实际应用中预料未来可能访问的位置是一件比较困难的事,
大多数预取器中预取准确率并不是很尽如人意。

135()(7&+ 35()(7&+
3HUIRUPDQFH&RPSDULVRQ












I I
FK LS JFF HV F DF
V 0 G N O,, H[ D\ XOL[ HQJ 7' WXPUH OEP
S
WS VWD
U
Q[ N QG DQG
HQ E] DY P
P
$' DP RE GHD SO YU VM ' KL EP UD
RP WXV Q VR SR DO
F
V) XDQK QH D VS QF SHF SHF
U
UOE EZ JU
J F P P O D
SH FD
F H T R
[D V V
* OLE

图 3.3 在有无预取的情况下的 IPC 比较

预取技术本身是基于程序的空间局部性,利用系统的空闲资源提前获取数
据 [235]。预取的效果如图 3.3所示,如果足够准确的话,可以大大提升性能。反
之,若很多预取操作不准确的话,会造成 Cache 污染即而使得性能下降。为了提
升预取的效率,之前已经有很多预取器 [217] [148] [236] [237] 与预取算法 [238] 相
关的工作来处理这些问题。
预取指令在整个访存过程中有一条很长的生命线。如图 3.4所示,在合适的时
间(例如,当 MSHR 为空的时候)预取指令将被流出。普遍来说,预取指令会经
历几个阶段:首先预取指令将被视为一个普通的独占 / 非独占读指令,其后的在
存储层内部的动作与普通读指令无异。然后在数据被预取到之后,会连续地被传
回 LLC 以及 MLC。假设一条预取指令的起点为 MLC,最后到达主存层次,那么
这条指令影响的范围就涉及到 MLC,LLC 以及主存。在整个预取过程中,较低的
预取准确率会在很大范围内带来不必要的数据插入或替换,继而影响存储系统。
CHAM 的设计充分考虑到了这两个过程,并在这两个过程中分别进行了优化。

第 54 页
国防科技大学研究生院博士学位论文

Hardware
MLC Attached
Prefetcher

ADDR
MSHR

Turn into Read

LLC

Read
Write Queue
Queue

Memory

图 3.4 预取指令在存储系统中的生命周期

3.2.2 设计动机

从上面章节的叙述中可知,为了在复杂多层次系统中提高预取有效性,CHAM
需要考虑如下几个方面:1)指令优先级管理,2)数据传输管理以及 3)与 Cache
替换策略的交互。对于这三个方面的详细叙述如下所示:
(1)复杂多层系统的优化需要一个组合型方法

%$6( 3$'&

3HUIRUPDQFH&RPSDULVRQ
















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X O H J S F K 
P Q H H H O Y
H J FW H
P TX K R OD VS VS E
D 
F D
S
FD * OL
E [ 

图 3.5 在复杂存储系统中使用 PADC 的 IPC 加速比

针对复杂多层系统(在本章中特指三级 Cache 系统 + 主存系统)的动态优


化方法应该更为全面以及有效。前面的研究中提出了一个预取感知的方法叫做
PADC [221] 来评估运行时可以评价预取指令的参数,即前面所提的预取准确率。
在 PADC 中,预取准确率被用来指导动态分配给预取指令与访存指令优先级,在
某些情况下亦会用于指导放弃某些确定无用的预取指令。研究称,测试单核程序
可知,PADC 在两级 Cache 系统中可以获得 3.6% 的加速比。然而 PADC 在多层

第 55 页
国防科技大学研究生院博士学位论文

系统中加速比并不明显,如图 3.5所示,平均只有 0.2%。加速比不明显的原因有


二:1)PADC 中使用的预取准确率并不能完全的适用于三层 Cache。L3 Cache 的
引入改变了预取情况,使得除了相关的优先级分配管理方法需要重新设计之外,
预取的数据被传回到 Cache 的哪一层也必须要被着重考虑。2)PADC 没有考虑到
与 Cache 替换策略的互动。可以确定的是,一个不与预取相兼容的替换策略当然
不能有效地利用预取带来的性能提升,在某些情况下也许预取会起到反作用。
如果一个有用的预取指令被赋予了较高的优先级,那么这条指令有很大可能
性会对整个系统性能有益。而相反,若一条指令被判断为无用,那么其应该被赋
予较低的优先级或者直接丢掉。由此可见,合理的控制优先级的分配可以降低存
储操作的延迟。PADC 定义了一个阈值用来判断相比于一般访存指令,预取指令应
该被赋予何种优先级。在运行时,PADC 始终记录最近一段时间窗口的预取准确
率(Prefetch Accuracy Value,PAV),若 PAV 小于预设的阈值,那么预取的指令将
和访存指令分配一样的优先级;而若 PAV 大于阈值,预取的指令相较于访存指令
则分配更高的优先级。针对三级 Cache,CHAM 对于优先级的管理更为灵活。这
个灵活是多方面的,包括阈值的动态调整以及数据回传层次等等。具体的设计细
节在小节 3.3.2中有详细叙述。
(2)PAV 与 Cache 替换策略的结合
从本质上来说,Cache 的替换策略是一种根据以往的访问模式,对接下来要
替换的 Cache 块的预测。作为一种可以有效降低访存延迟并提高系统性能的方式,
有许多研究对替换策略进行有目的的优化改进。如表 3.1所示,目前除了经典的
LRU 以及 LFU 策略,许多混合的算法也有不错的效果 [239] [240] [241] [242]。

表 3.1 Cache 替换策略比较.

replacement policy MPKI reduction(%)


LRU + MRU-repl 8.8
LRU + NMRU-mid 5.1
LRU + Rand 8.9
LRU + RLRU-skew 6.6
LRU + RMRU-skew 11.3
LRU + LFU 14.7

这些常用的工作基本都不以提高预取效率为目的,上图 3.2的结果已经表明,
对于不同的应用程序,不同的替换策略会有不同的性能结果。这就意味着不同的
策略也有不同的预取友好度。为了在运行时保持预取的效率,PAV 就可以用来作
为评估参数来选择当前最合适的替换策略。

第 56 页
国防科技大学研究生院博士学位论文

3.2.3 本章相关工作

很多工作都旨在提高存储系统的性能,缓解存储墙问题,例如 Cache 划分、替


换策略优化、新型预取器机制以及预取算法等等 [243] [244] [245] [246]。针对从整
个存储层次的角度来考虑提高预取性能,本小节的工作 CHAM 使用了一种组合的
方法。包括 1)动态自适应的预取控制机制以及 2)以预取参数为指导的动态混合
替换策略。针对构成 CHAM 的两个主要子工作,下面对相关工作进行了梳理。
1)预取机制相关研究
一直以来预取机制都是提升系统性能的重要技术,因此提升预取的效率也是
研究热点之一。这些优化工作主要集中在更为合理的调度预取指令和访存指令上。
Lin 等人设计了一种较为激进的预取模块 [247]。这个模块仅仅在访存总线为
空闲之时流出,并且提升预取指令的优先级使之能在最大程度上使用 DRAM 的
行缓存,与此同时给予这些预取的数据较低的替换优先级。相比于这个较为静态
的动作,CHAM 使用了动态机制,而且针对更多不同的情形有更强的自适应性。
Zhuang 等人设计一种预取丢弃机制 [248],这种机制会丢弃当前地址与之前地址
相同的预取指令。这种机制过于激进而丢弃掉了很多有用的指令。CHAM 的预
取丢弃机制粒度更细而且由于从指令的整个生命周期来考虑,不会过于激进的
丢掉很多有用的预取指令。Srinath 等人提出了一种可以实时追踪 Cache 污染的机
制 [145],而且根据 Cache 污染的信息,这种机制也包括一种动态决定插入数据块
位置的机制。Lee 等人提出了一种低开销的存储控制器来最大化有用预取指令带
来的好处并降低无用预取指令所带来的坏处 [221]。这个工作包括两个子工作:1.
动态调度预取指令并赋予预取指令与访存指令不同的优先级;2. 根据指令已经等
待的时钟周期来丢弃一些无用的访存指令。CHAM 是这个工作的一个扩展版,基
于更复杂的多级存储系统,CHAM 的实现更为全面与灵活。Pugsley 等人提出了一
种叫做 Sandbox 的机制来实时的决定合适的预取机制 [249]。Sandbox 实时的将预
取地址放入一个过滤器中而非直接取数据,而后将取得的地址与接下来的访存指
令相比较以评估准确率。如果准确率高于一个既定的阈值,那么就将预取付诸实
际,否则就弃之不取。CHAM 也使用预取准确率,但以不同的方式来指导预取指
令的调度,而且 CHAM 也考虑了 Cache 替换策略。Seshadri 等人指出了这么一个
问题:预取到底层存储的数据只会被用一次 [250]。文中基于这个问题提出了两种
应对机制:1. 当一个预取的数据块被访存指令访问一次之后就直接将其优先级降
低。2. 设计一种自我控制的准确率预取器来纠正错误分配的预取指令优先级。这
两个机制有效地减缓了 Cache 污染并提高了系统性能。CHAM 以另一种方式使用
了预取准确率并且良好地结合了 Cache 替换策略。
2)Cache 替换策略相关工作

第 57 页
国防科技大学研究生院博士学位论文

Jaleel 等人详细调查了针对管理共享 Cache 的自适应性插入策略 [251],并提


出了一种线程感知的动态插入策略来满足当前正在运行的每个应用程序的存储需
求。作者也提出了一种使用再引用时间进行预测的 Cache 替换策略。这个策略包
括静态的 RRIP 策略与动态的 RRIP 策略来补充 LRU 的短处 [230]。Qureshi 等人
针对访存密集型应用程序改良了 LRU 策略来降低 Cache 失效 [252]。这个策略包
括 LRU 插入策略以及双封值插入策略来保护 Cache 免受失效动荡的影响。这些策
略依旧缺乏对预取技术的支持。CHAM 充分考虑了预取的特性并且最大化了有益
预取指令带来的性能提升。Duong 等人提出了一种全新的替换策略来将 Cache 的
数据保持足够长的时间用于再次利用以及防止 Cache 被污染 [253]。在这条策略
中,一个 Cache 数据块直到其所属组被访问了固定次(也被称为保护距离)之后
才会被替换。此外这个工作还使用了一种基于重使用历史的命中率模型来直接服
务某些失效的预取。Wu 等人提出了一种基于组竞争的 Cache 替换策略 [229]。使
用 DRRIP 作为基本策略,这种策略可以动态地分辨预取指令与访存指令。CHAM
结合了这种替换策略,并与 LRU 组成了一种基于 SDM 的混合替换策略,在小
节 3.3.2已有详细叙述。

3.3 CHAM 优化预取方法

为了提高预取效率,基于 PAV,CHAM 主要包括两个方面:1)一种动态的自


适应的预取控制机制。根据运行时的预取准确率 [221] [254] [255],这个机制会动
态的改变优先级分配的阈值(priority-assignment threshold,PAT)。在这种机制下,
当 PAV 小于 PAT 时,预取指令的优先级会比访存指令更低;而当 PAV 不小于 PAT
时,预取指令的优先级会与访存指令一致。此外如果一条访存指令一直以一种低
优先级的状态停留在 MSHR 中超过一定时钟周期未被服务,这条指令就会被视
为无用而被清除。CHAM 中也定义了数据传输阈值(data transfer threshold,DTT)
来决定预取的数据会保持在 Cache 的哪个层次。2)一种基于 SDM 的混合 Cache
替换策略。这个策略通过对运行时参数进行分析从 LRU 与 PACMan-DYN [229] 中
选择最合适的策略来保持预取的高效率。图 3.6展示了 CHAM 总体的流程图。

3.3.1 一种动态自适应的预取控制机制

传统的体系架构中并没有针对预取指令进行任何特别的调度,同样也没有考
虑对于预取的数据块的调度。为了提高预取效率,动态自适应的预取控制机制设
置了三个阈值来控制优先级的分配以及数据传输的层次。这些阈值是根据实时计
算的预取准确率来设置的。
1)参数设置

第 58 页
国防科技大学研究生院博士学位论文

ṩᦞPATሩ亴
ᴤᯠ
PAT ਆᤷԔՈ‫ݸ‬㓗
䘋㹼䈳ᮤ

ṩᦞDTTሩᮠ
ᱟ੖䗮ࡠа 䇑㇇PAVо ᴤᯠ
ᱟ ᦞՐ䗃ቲ⅑䘋
⇥ᰦ䰤デਓ MLCཡ᭸⦷ DTT
㹼䈳ᮤ

ṩᦞPDTሩђ
ᴤᯠ ᔳ亴ਆᤷԔㆆ
PDT ⮕䘋㹼䈳ᮤ

䇑㇇н਼
䘹ᤙDPMᴤ儈Ⲵ
Cacheᴯᦒ
Cacheᴯᦒㆆ⮕
ⲴDPM

㔗㔝ᢗ㹼

图 3.6 CHAM 总体的流程图

为了量化预取准确率,CHAM 在 MLC 层部署了三个寄存器。其分别记录:

• 总体预取数(Overall Prefetch, OP),用于记录预取指令的数量。当一条预取


指令流出的时候,预取器中记录的值会累加 1。

• 有效预取数(Positive Prefetch, PP),用于记录有效的预取指令的数量。有效


的预取指令指的是指令所预取的数据在被替换出去之前会被访问到。

• 预取准确率(Prefetch Accuracy Value, PAV),PAV 为 PP 与 OP 的比值。在每


一段时间窗口的结束,PAV 会被重新计算。当计算完成后,PAV 会被传递到
LLC 以及 DRAM 的控制器中以用于实时判断,OP 与 PP 的值被清零。

2)动态自适应性阈值调度
在动态自适应机制中,阈值的确定有非常重要的影响。CHAM 中定义了三个
需要被动态设定的阈值:
(1)优先级分配阈值(Priority Assignment Threshold,PAT),这个阈值用于定
义相对访存指令预取指令应该被赋予怎样的优先级。观察得知,PAT 的设定与
MLC 的失效率与 PAV 的值有关。例如更低的失效率与更高的预取准确率一般意
味着预取指令最近一段时间内效率较高,在这种情况下预取指令应该有更多的机
会被赋予与普通访存指令相同优先级。否则预取指令被赋予与普通访存指令相同
优先级的机会应该降低。需要注意的是,这个参数是自适应的,也就意味着在每
过一个时间窗口 PAT 都会被重新计算,PAT 的计算方式如公式 3.1以所示:

第 59 页
国防科技大学研究生院博士学位论文

M issRateM LC
P AT = (3.1)
P AV
(2)数据传输阈值(Data Transfer Threshold,DTT),这个阈值用于定义预取
的数据应该被传输到哪一个层次。事实上,这个阈值的提出是为了进一步精细化
预取优先级的定义。基于优先级更高的预取指令所取的数据块有更高的概率将来
会被访问到这一事实,CHAM 将 PAV 可能的值分为递增的三个区间,定义为 A,
B,C。如果 PAV 在区间 A 中,所预取的数据将仅仅留在 DRAM 层而并不会回
传到 Cache;若在区间 B 中,所欲取得的数据将会回传到 LLC;若在区间 C 中,
则数据会照常传输回 LLC 与 MLC。在若干次针对 A,B,C 的敏感性测试之后,
CHAM 将 DTT 动态的设置为某些固定值。根据以往的工作,CHAM 将 PAT 的初
始值设置为一个较为合理的值:0.85。如此以来,A,B,C 值的确定就仅仅依赖
于运行时 PAT 的值以及当前的 Cache 替换策略。例如,当 PAT 的值大于 0.85 时而
且 Cache 替换策略为 PACMan-DYN 时,A,B,C 被分别设置为 0∼0.2,0.2∼0.6
以及 0.6∼1。其他的可能情况如表 3.2所示,小节 3.6.2叙述了通过敏感性测试决定
A,B,C 的值。

表 3.2 在不同情形下的 DTT 值设定情况

LRU RRPV
PAT >= 0.85 0∼0.6 0.2∼0.6
PAT < 0.85 0∼0.4 0.3∼0.5

(3)预取指令舍弃阈值(Prefetch Dropping Threshold,PDT),这个阈值用于


定义哪些预取指令是无用的。PADC 中指出等待过久的预取指令有很大可能是无
用的。这是由于一旦一条预取指令流入到 MSHR 中之后,如果它足够有用(例如,
预取准确率足够高),这条指令将转变为一条正常访存指令且会较早的运行。因
此在预取准确率较低的情况下,等待了足够长时间的预取指令将被从 MSHR 中移
除。CHAM 为每条指令都添加了一条标记(即生命周期)来记录此指令暨流出起
所经过的时钟周期。PDT 的值会由 PAT 的不同而不同,而那些生命周期大于 PDT
的预取指令会被丢弃。很容易推断出 PAT 的值愈大,PDT 的值亦应该愈大,这也
意味着在预取正确率较高的情形下,预取指令理应在存储系统中驻留更久。我们
在高于去准确率环境下对预取指令的生命周期做了统计,并将此时的 PDT 设置为
100 [221]。在其他环境下的 PDT 值的设置如表 3.3所示。
3)总体结构
图 3.7展示了动态自适应的预取控制机制的总体结构。这个机制包括上述的三
个部分,这三个部分依据运行时的 PAT 独立工作,工作机制如下所述:

第 60 页
国防科技大学研究生院博士学位论文

表 3.3 根据不同预取准确率而设定的 PDT 值

Prefetch Accuracy < 0.1 0.1∼0.3 0.3∼0.7 >=0.7


PDT 1 15 50 100

Prefetch Accuracy Computing

Dynamic Adaptive Prefetch


Attached Hardware
MLC Prefetcher
Control Mechanism

MSHR
ADDR
PAT

Turn into
Read

LLC PDT

Read Write
DTT
Queue Queue

Memory

图 3.7 动态自适应的预取控制机制的总体结构

• PAT 控制关于预取指令的优先级分配。每过一段固定时钟周期,PAT 便会
被重新计算。CHAM 会依据当前的 PAV 决定应该如何赋予预取指令合适的
优先级。例如若 PAV 低于 PAT 则赋予预取指令低于普通访存指令的优先级,
这也意味这条预取指令不会被很快响应,如果等待时间太久的话甚至会被删
除。

• DTT 控制数据传输机制。在 CHAM 中,DTT 是根据 PAT 的值以及当前的


Cache 替换策略所动态设定的。根据当前 PAT 落在哪个区间中来决定数据该
传输回存储系统的哪一层。

• PDT 控制预取指令舍弃机制。在每段时间窗口的结束,如果 PAV 低于 PAT


且某些预取指令的生命周期已经大于 PDT,则这些预取指令将被舍弃。

3.3.2 一种动态选择的 Cache 替换策略

Cache 替换策略本质上是对将来会访问的数据块的预测。如果被预取的块被
放置在合理的位置(假设预取是有效的前提),那么这些数据块就会被很快的访问
到,性能也必然会有提高。在上面的段落中也有所提及,LRU 是当前最常用的一

第 61 页
国防科技大学研究生院博士学位论文

种替换策略,但很多情况下 LRU 并非是最适合的,而且 LRU 并没有合理地配合


到预取机制。以前的一个工作,叫做 PACMan-DYN,考虑到了区分预取指令与普
通访存指令。之前的小节已经阐述了 LRU 与 PACMan-DYN 两种策略的性能比较,
图 3.2所示的 10 个测试程序中,使用 LRU 性能较高的与使用 PACMan-DYN 性能
较高的各占一半。这同样也说明混合型 Cache 替换策略会比单独的任何策略所提
升的性能更高。混合替换策略中很重要的一个部分就是使用组内竞争机制(SDM)
实时选择最优策略。SDM 从存储中选择某些组进行比较运行时性能的优劣(例如
预取准确率),并以较优的组内所使用的策略为当前的替换策略。CHAM 中结合
使用了 LRU 与 PACMan-PYN 两种策略,并使用 SDM 进行实时选择的混合型替换
策略 [239]。
CHAM 之所以选择 LRU 与 PACMan-DYN 的原因有二:1)LRU 是最常用且
最简单的替换策略,但在很多情况下并不是最适合的。但由于此策略的简单以及
实用性,LRU 仍然可以用作为一个基本的策略。上面也提到 LRU 在这里最大的
问题就是难以与预取指令进行配合。因此为了利用到预取信息,LRU 需要与另一
种替换策略相配合,并利用上述的 SDM 技术来在运行时进行选择。2)为了使用
预取信息,CHAM 使用了另一种考虑到了区分预取的替换策略,PACMan-DYN。
PACMan-DYN 是一种很灵活的策略,它包含很多运行模式,可以在运行时根据具
体的情形选择最为合适的运行模式。PACMan-DYN 与预取指令有非常好的配合,
但比较复杂,运行开销比较大。因此 CHAM 选择 PACMan-DYN 作为与 LRU 配合
的策略。

表 3.4 PACMan-DYN 中子替换策略参数的比较

S1 S2 S3
SRRIP Demand Prefetch Demand Prefetch Demand Prefetch
Insert 2 3 2 2 2 3
Refer 0 0 0 Keep 0 Keep
BRRIP Demand Prefetch Demand Prefetch Demand Prefetch
Insert 3 3 3 3 3 3
Refer 0 0 0 Keep 0 Keep

与经典的 DRRIP 策略一致 [230],PACMan-DYN 使用 M 位计数器来表示预


期再访问值(re-reference prediction value,RRPV)。这个值实际上表示的是 Cache
块的生命时间。RRPV 越小就表示这个 Cache 块在不久之前刚被访问过,也即不
太可能会很快被替换掉。相反的 RRPV 越大则说明此数据块在未来一段时间内
可能不会被使用到。PACMan-DYN 包括两个子策略:SRRIP 与 BRRIP。一般在

第 62 页
国防科技大学研究生院博士学位论文

PACMan-DYN 中 RRPV 被设置为一个两位的计数器,换言之就是 RRPV 的值可


能是 0∼3。对于不同的子策略与不同的指令,在执行不同的操作时 RRPV 会被赋
予不同的值。例如 SRRIP 在插入新数据时,RRPV 被设置为 2;而 DRRIP 在插入
新数据时,RRPV 会被设置为 3。表 3.4展示了在不同情况下 RRPV 时如何分配的。
PACMan-DYN 也是使用 SDM 机制在这些子策略中进行选择。表 3.4虽然展示了
六种不同的子策略,但实际上其中的三种与其他的相比没有什么本质区别,因此
SDM 将实时从 SRRIP+S1,SRRIP+S3 与 BRRIP+S1(定义为组合 1,2,3)之中
选择一个作为当前策略。PACMan-DYN 的实现如图 3.8所示,一般来说 MLC 中含
有上千个组,而从中仅仅只有 32 个组被选作为组竞争监视器(选择 32 组是因为
之前的文献中已经表明了 32 个组已经足以选择出最好的策略),其中 0∼9 使用组
合 1,10∼19 使用组合 2,其余的监视器使用组合 3。当一个访存指令在 MLC 命
中且地址落在其中一个组内时,相应的计数器累加 1. 在一段时间窗口结束后,具
有最大计数的组合将被选为之后一个时间窗口内 Cache 的替换策略。

SDMs
0 Choose the policy for follower sets
1
…...
MAX
9
10
…... Count1 ++ Count2++ Count3++

19 Hit in Hit in Hit in


combination1 combination2 combination3
20
Sets Dedicated to S1
…...
30 Sets Dedicated to S2

31 Sets Dedicated to S3

图 3.8 PACMan-DYN 的实现机制

与 PACMan-DYN 一样,CHAM 从中选择 32 组成为组竞争监视器(SDMs)


[252] 来决定实时替换策略,组 0∼9 使用 LRU 策略,组 10∼19 使用 PACMan-DYN
策略,剩下的组为跟随组,使用被选中的策略,实际上 Cache 之中剩下的所有组与
跟随组所使用的策略一致。如图 3.9所示,CHAM 中也设置了一些计数器来记录取
得更高的预取准确率以及更低的 MLC 失效率的策略,在这里 CHAM 定义了一个
相关参数 DPM(Division of Prefetch accuracy and MLC miss rate),即预取准确率与
MLC 的失效率的比值,并将具有较高 DPM 的策略设置为下一阶段的替换策略。

第 63 页
国防科技大学研究生院博士学位论文

SDMs
Choose the policy for follower sets
0
1
…...
MAX
9
10
…...
LRU’s DPM DRRIP’s DPM
19
20
Sets Dedicated to LRU
…...
30 Sets Dedicated to DRRIP

31 Follower Sets

图 3.9 CHAM 中混合 Cache 替换策略的实现机制,以 LRU 与 PACMan-DYN 为基础进行组


竞争

3.3.3 CHAM 硬件开销分析

表 3.5显示了当使用 CHAM 时所需要的额外的硬件开销。对四核系统来说,总


硬件开销为 17164 位(约 2.1KB,MLC 存储容量的 0.025%)。因此 CHAM 的硬件
开销是非常小的。根据文献中的报告,PADC 所需要的额外存储开销约为 4.25KB,
大概是 CHAM 存储开销的两倍。这是由于尽管 CHAM 中有 SDM 的相关开销,却
并不多;而 PADC 使用了更为负载的预取准确率模型。例如 PADC 多设置了紧急
指令位、行命中请求位等以用于更细粒度的区分不同的存储指令。

表 3.5 CHAM 硬件开销

Extra bits Formula Cost bits


PP(32bits) N-cores*32 128b
Prefetch Accuracy OP(32bits) N-cores*32 128b
PAV(64bits) N-cores*64 256b
32*N-cores
Prefetch Dropping Ages(32bits) 16384b
*N-cachelines
Set dueling Counter(1bit) N-cores*2 8b
PACMan-DYN
RRPV(2bits) N-Cachelines*2 256b
Policy Selection Set dueling Counter(1bit) N-cores 4b

第 64 页
国防科技大学研究生院博士学位论文

3.4 实验环境设置

3.4.1 系统配置与测试程序

本实验中我们使用 GEM5 模拟器作为测试工具。GEM5 是一种非常常用且值


得信赖的全系统模拟器 [256],可以比较精确的模拟真实系统的各种特征。表 3.6中
展示了系统的各项详细配置,包括处理器、Cache、预取器以及主存等等。

表 3.6 系统配置

Out of order; up to 8 microinstructions;


Processor
192-entry ROB; 32-entry LS queue
L1 I/D cache private, 2-way; 32KB, 2 cycles
L2 cache(MLC) private, 8-way; 2MB, 20 cycles
L3 cache(LLC) shared, 16-way; 16MB per-core, 40 cycles
Main Memory On-chip; FR-FCFS scheduling policy
Hardware prefetcher StridePretcher; prefetch degree of 8

CHAM 使用 SPEC2006 [228] 中的 28 个程序以及 BioBench [232] 中的 2 个程


序来测试。所有的程序都是使用 g++ 4.8.2 编译的 64 位可执行程序。对每个测试
程序,CHAM 都收集其运行过程中的两亿五千万条指令用于结果评估。

3.4.2 测试参数

在测试中 CHAM 以未经修改的多层存储系统为基准比较。此外,PADC 作为


相似的之前工作也用于比较。对每个程序,我们都在单核,双核以及四核的环境
下进行了测试。测试的参数有如下几个:

• MLC 访存命中率。此参数用于反应预取准确率。这是由于预取准确率提升
通常意味着更多有用的数据会被传输到 MLC,那么访存命中率势必会有所
增加。

• 单核 IPC。用于反映由于预取准确率提升而性能提升的效果。

• 多核 IPC。多核 IPC 的计算是根据各个核的 IPC 计算几何平均数而得。

3.5 实验结果及分析

3.5.1 单核测试

CHAM 在单核环境下的测试结果分为如下两方面阐述:

第 65 页
国防科技大学研究生院博士学位论文

 %DVHOLQH &+$0
0/&+LW5DWH&RPSDULVRQ












F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ O Q
D E H Y OF M
Q D
K
FE FU FU GW XV
UO
E
E
Z D UR X OHV J
R G VR SR FD KP V V) D  VS Q H H H O Y
H
H J J F W P T X K P OD VS VS E F D
S H R D
FD * OL
E [  

图 3.10 单核环境下的访存命中率提升情况

1)MLC 访存命中率。图 3.10显示了在单核环境下使用 CHAM 带来的 MLC


访存命中率的提升。从图中可以看出对于测试的所有 30 个应用程序,MLC 访存
命中率都有大量的提升(平均提升有 9.2% 而最大的提升达到了 116.0%)。这说明
通过合理的阈值设定以及优先级分配,CHAM 使得预取指令更为有效,而普通访
存指令的失效数也大大降低。对于多级存储系统,失效指令的减少就意味着 MLC
存储的有效数据更多。结合在小节 3.5.2中的多核环境下的结果,可以得出 IPC 与
MLC 命中率时正相关的结论。然而对于某些程序,我们发现尽管 MLC 命中率提
升较高,IPC 并没有相当的提升。这是因为 IPC 是由多种因素共同决定的,MLC 命
中率只是其中之一。例如,有可能指令丢弃策略过于激进而丢弃掉了一些有用的
预取指令,在这种情况下就会出现命中率上升明显而 IPC 并未有明显提升的情况。

%DVHOLQH &+$0

3HUIRUPDQFH&RPSDULVRQ
















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ O Q
D E H Y OF M
Q D
K
FE FU FU GW XV
UO
E
E
Z D UR X OHV J
R G VR SR FD KP V V) D  VS Q H H H O Y
H
H J J FW P T X K P OD VS VS E F D
S H R D
FD * OL
E [  

图 3.11 单核环境下的 IPC 提升情况

2)IPC。图 3.11显示了在单核环境下使用 CHAM 带来的 IPC 提升,结果进行


了归一化。可以得出平均 CHAM 提升了 1.5% 的 IPC。在所有 30 个应用程序中大
约有 25 个应用程序的 IPC 显示出了提升,对程序 BEDTools,IPC 提升达到了最
大的 7.3%。值得注意的是对于某些应用程序,IPC 甚至有轻微的降低。这是由于
有时候 CHAM 过分的降低了预取指令的优先级而使得预取数据块没有被放置到

第 66 页
国防科技大学研究生院博士学位论文

 %DVHOLQH &+$0
0/&+LW5DWH&RPSDULVRQ












F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ O Q
D E H Y OF M
Q D
K
FE FU FU GW XV
UO
E
E
Z D UR X OHV J
R G VR SR FD KP V V) D  VS Q H H H O Y
H
H J J F W P T X K P OD VS VS E F D
S H R D
FD * OL
E [  

(a) 双核系统中 MLC 命中率情况



 %DVHOLQH &+$0
0/&+LW5DWH&RPSDULVRQ












F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X O H J S F K 
P Q H H H O Y
H J FW H
P TX K R OD VS VS E
D 
F D
S
FD * OL
E [ 

(b) 四核系统中 MLC 命中率情况

图 3.12 双核系统与四核系统中 MLC 命中率情况

最为合适的存储层次。在这种情况下,访存指令将不得不访问 LLC 甚至主存层


次,因而会使得性能降低。此外,一些应用程序(例如 8specrand,9specrand)的
IPC 相比基准有所提升,然而其命中率并无明显的提升。这是由于 CHAM 通过不
把太多的数据传输到 MLC 而减少了数据移动,从而使得 MLC 命中率无明显提升
而 IPC 有所提升。总体来说,测试结果表明 CHAM 可以有效地提升预取准确率,
继而提高访存指令命中率以及系统性能。

3.5.2 多核测试

CHAM 也在双核与四核系统上进行测试。多核环境下的测试为在每一个核上
都绑定一个应用程序。测试的参数与单核环境相同。
1)MLC 访存命中率。图 3.12展示了 CHAM 在双核和四核环境下的命中率
提升效果。从图中可以看出,相对于单核环境命中率的提升更为明显。结果显示
对于所有的应用程序 MLC 访存命中率都有提升,在双核环境下平均的提升达到
了 16.8% 且最大的提升情况可以达到 225.5%。在四核环境下平均提升则达到了

第 67 页
国防科技大学研究生院博士学位论文

%DVHOLQH &+$0

3HUIRUPDQFH&RPSDULVRQ














F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ O Q
D E H Y OF M
Q D
K
FE FU FU GW XV
UO
E
E
Z D UR X OHV J
R G VR SR FD KP V V) D  VS Q H H H O Y
H
H J J FW P T X K P OD VS VS E F D
S H R D
FD * OL
E [  

(a) 双核系统中 IPC 提升情况



%DVHOLQH &+$0

3HUIRUPDQFH&RPSDULVRQ


















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X O H J S F K 
P Q H H H O Y
H J FW H
P TX K R OD VS VS E
D 
F D
S
FD * OL
E [ 

(b) 四核系统中 IPC 提升情况

图 3.13 双核系统与四核系统中 IPC 提升情况

33.1% 且最大的提升可以达到 464.0%。


2)IPC。图 3.13展示了 CHAM 在双核与四核系统中的 IPC 提升。从图中可
以看出 CHAM 在双核和四核环境下的 IPC 分别有 2.5% 与 10.1% 的提升。其中一
些程序有着非常显著的 IPC 加速,例如 mcf,在双核与四核的环境下分别获得了
22.8% 与 213.9% 的加速比。但值得注意的是有些程序仍然有 IPC 的降低。例如
bwaves 的 IPC 在双核与四核的环境下分别有 5.4% 与 17.9% 的降低。这是由于在
多核系统中,各个核运行的程序可能会互相影响从而导致一些不必要的 Cache 替
换。综合来看,在多核环境下 CHAM 也通过合理的优先级分配与 Cache 替换策略
选择保持了预取的准确率,并提升了性能。

3.5.3 与 PADC 的比较

本小节展示了 CHAM 与之前相似工作 PADC 的比较。PADC 同样是一种用于


实时自适应地对预取指令进行调度的方法。然而 PADC 的提出并非是针对复杂多
层存储系统,而仅仅是针对两层存储系统,此外 PADC 也并未与 Cache 替换策略

第 68 页
国防科技大学研究生院博士学位论文

3$'& &+$0
0/&+LW5DWH&RPSDULVRQ














F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ O Q
D E H Y OF M
Q D
K
FE FU FU GW XV
UO
E
E
Z D UR X OHV J
R G VR SR FD KP V V) D  VS Q H H H O Y
H
H J J F W P T X K P OD VS VS E F D
S H R D
FD * OL
E [  

(a) 单核系统中与 PADC 比较 MLC 命中率情况



3$'& &+$0
0/&+LW5DWH&RPSDULVRQ














F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X O H J S F K 
P Q H H H O Y
H J FW H
P TX K R OD VS VS E
D 
F D
S
FD * OL
E [ 

(b) 双核系统中与 PADC 比较 MLC 命中率情况



3$'& &+$0

0/&+LW5DWH&RPSDULVRQ
















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X OH J S F K 
P Q H H
S EH FO
Y
H J FW H
P TX K R OD
D V V
S D
S D E
F * OL [

(c) 四核系统中与 PADC 比较 MLC 命中率情况

图 3.14 在单核、双核与四核系统中与 PADC 比较 MLC 命中率的情况

相配合。CHAM 与 PADC 相比的优势也在于此。对二者比较的测试参数与上述参


数一致。
1)MLC 访存命中率。图 3.14展示了在单核、双核以及四核环境下 PADC 与
CHAM 在 MLC 访存命中率的比较结果,相比于 PADC,CHAM 分别提升了 0.15%,
0.9% 与 0.8%。相对于比基准系统的提升,这种程度的提升并不明显。这是由于

第 69 页
国防科技大学研究生院博士学位论文

3$'& &+$0
0/&+LW5DWH&RPSDULVRQ
















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ O Q
D E H Y OF M
Q D
K
FE FU FU GW XV
UO
E
E
Z D UR X OHV J
R G VR SR FD KP V V) D  VS Q H H H O Y
H
H J J F W P T X K P OD VS VS E F D
S H R D
FD * OL
E [  

(a) 单核系统中与 PADC 比较 IPC 情况



3$'& &+$0

0/&+LW5DWH&RPSDULVRQ




















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X O H J S F K 
P Q H H H O Y
H J FW H
P TX K R OD VS VS E
D 
F D
S
FD * OL
E [ 

(b) 双核系统中与 PADC 比较 IPC 情况



3$'& &+$0
0/&+LW5DWH&RPSDULVRQ
















F V V I FV 0 G G N ,, [ \ L[ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD XO P HQ
'
WS W LQ P DQ DQ RR WDO
Q LS J Y P D ' LH P 7 X U
' QW  WRQ O
E
H V UD
H E] D P P V$ VO Q
D
R
E H R R
Y OF P VM ) Q D S
K
FE FU FU GW XV H
E Z D R G V D V D V
UO E J U X OH J S F K 
P Q H H
S EH FO
Y
H J FW H
P TX K R OD
D V V
S D
S D E
F * OL [

(c) 四核系统中与 PADC 比较 IPC 情况

图 3.15 在单核、双核与四核系统中与 PADC 比较 IPC 的情况

PADC 目的也在于提高预取准确率,即反映为访存命中率的提升。然而由于 PADC


不适合用于三层存储系统且未考虑到与 Cache 替换策略相配合,因此 PADC 的
IPC 表现并不好。在单核、双核以及四核环境下 CHAM 相对于 PADC 最大的 IPC
提升分别有 5.4%,10.0% 与 21.5%。结果证明了 CHAM 相比于 PADC 可以更大程
度的提高预取效率,而且对绝大部分程序,CHAM 的性能优于 PADC。我们也注

第 70 页
国防科技大学研究生院博士学位论文

意到对于一些应用程序,PADC 的 IPC 更高一些。出现这种情况主要是因为两个


原因:(1)由于 PADC 针对于两层 Cache 系统设计,因此在三层 Cache 系统中有些
CHAM 的策略例如数据分层回传若过于激进,可能会影响有效数据的替换,从而
影响性能。(2)对于某些程序,若一种替换策略与程序的访存模式匹配较好,始
终保持这种替换策略可以避免策略切换开销,从而达到更好的性能。
2)IPC。图 3.15展示了 CHAM 与 PADC 的 IPC 比较。可以看出当使用 CHAM
时,大部分的程序都有更高的 IPC。对于一些应用程序,PADC 会导致严重的性能
下降,例如 namd。这是由于在处理无效指令时,PADC 仅仅是丢弃指令而 CHAM
做的工作更为细致,例如将数据分层传输等等。因此即使 CHAM 与 PADC 的访
存命中率差距不大,CHAM 的 IPC 更高一些。更为精确的说,在单核系统中使用
CHAM 相比 PADC 基本都会有性能的提升,而在多核系统中对于少数程序 PADC
的 IPC 更高一些,这种情况主要是因为这些程序对命中率高低更为敏感,因此更
好的命中率会使得最后的 IPC 更好。综合来说,与 PADC 相比 CHAM 在单核、双
核以及四核环境下的 IPC 分别有 1.2%,2.6% 与 10.7% 的提升。

3.6 参数分析

本小节对 CHAM 中的各项参数进行分析,包括如下几个部分:1)预取激进


程度参数分析,2)通过规范 DTT 的值,模拟测试多种数据传输情况进行分析;3)
预取指令丢弃参数分析;4)替换策略参数分析;5)预取指令优先级参数分析。

3.6.1 预取激进程度参数分析

实验中使用间隔预取器(stride prefetcher),间隔预取器的激进程度是由间隔
大小决定的。本小节分别对间隔大小为 2、4、8 的情况对预取激进程度进行分析。

6WULGH 6WULGH 6WULGH

3HUIRUPDQFH&RPSDULVRQ
















F V FI FV 0 G N , [ \ [ J I S DU [ N G G H
FK LS JF H ' P P O, OH UD OL Q 7
' P UH P
WS W LQ P Q Q J
Q
H E]
Y P D
E D S X H ' WX  OE H DV K D D UD
D P V$ Q
D H
VR
Y OF VM V)
Q  FE FU FU
UO
E
E
Z UR X J
R G S
R
FD D  Q VS Q H H Y
H
W X K P OD
S
H J F H
P T R D VS VS $
FD * OL
E [  

图 3.16 不同的预取器激进程度设置下的 IPC

图 3.16展示了在不同的预取器激进程度设置下的 IPC,测试程序全部来自

第 71 页
国防科技大学研究生院博士学位论文

SPEC2006。从图中可以看出一般情况下当间隔为 2 时程序运行的 IPC 最低,而当


间隔为 8 时程序运行的 IPC 最高。平均来说,当间隔为 8 时的 IPC 比间隔为 2 的
IPC 高 8.8%,比间隔为 4 的 IPC 高 4.4%。但我们观察到对于某些程序,预取激进
程度对 IPC 并没有明显的影响,同样也有少数程序在间隔较大的时候 IPC 有轻微
的降低。出现上述多种情况的原因是预取本身对于应用程序本身的影响不同,也
就是说不同程序与预取的“友好”程度不尽相同,也就导致了在不同预取激进程
度下性能有区别。例如对于那些空间局部性比较密集的程序,较小的间隔更有利
于性能 [257]。普遍情况下,连续块之间地址间隔为 8 比较常用,而实验也说明将
间隔设置为 8 更有利于大部分程序的性能,这也实验中将间隔设置为 8 的原因。

3.6.2 数据传输情况参数分析

本小节通过对不同的 DTT 组合进行测试来对不同的数据传输情形进行分析。


实际上在小节 3.3.1中所规定的固定的 DTT 组合是通过此参数分析确定的。根据
前面小节的叙述,DTT 可以定义为一个二元组(a,b),而区间 A,B,C 可以分
别表示为 [0,a),[a,b) 以及 [b,1]。这个参数分析实验测试了 10 个合理的组合,
如图 3.17所示。



 
3HUIRUPDQFH&RPSDULVRQ
3HUIRUPDQFH&RPSDULVRQ







 

 



 FDVHB FDVHB FDVHB FDVHB

 FDVHB FDVHB FDVHB FDVHB

 
         
    a

a

a

a

a

a
        a  
a a a a a a a a a a a  a a
           

(a) 设定策略为 LRU 且访存指令有较高优 (b) 设定策略为 PACMan-DYN 且访存指令


先级时各情形 IPC 情况 有较高优先级时各情形 IPC 情况


FDVHB FDVHB


3HUIRUPDQFH&RPSDULVRQ

FDVHB FDVHB
3HUIRUPDQFH&RPSDULVRQ

 

 

 

 

 

 

 
FDVHB FDVHB

 FDVHB FDVHB 

 
         
    a

a

a

a

a

a
        a  
a a a a a a a a a a a  a a
           

(c) 设定策略为 LRU 且访存指令与预取指 (d) 设定策略为 PACMan-DYN 且访存指令


令有相同优先级时各情形 IPC 情况 与预取指令有相同优先级时各情形 IPC 情

图 3.17 在各种情况下变化数据传输参数时不同的 IPC

第 72 页
国防科技大学研究生院博士学位论文

图 3.17展示了不同 DTT 组合以及不同预取优先级情形下程序运行的 IPC。实


际上小节 3.3.1中所使用的 DTT 组合正是根据本参数分析确定的。图 3.17(a)展示
的是使普通访存指令的优先级始终高于预取指令并将替换策略固定为 LRU 策略
的情况,通过固定其余参数,可以得出 DTT 组合与最终结果的关系。剩下的三组
实验也用了类似但不同的配置,所有的实验可以覆盖所有情况。从这四幅图中可
以得出结论:尽管对于在优先级设置与替换策略不同的情形下,IPC 会有轻微区
别,但均有峰值。在图中仅仅列出了一些有代表性的应用程序结果。但实验的总
体结果表明,(0,0.6),(0.2,0.6),(0,0.4),(0.3,0.5)是四种不同情形下最合
适的 DTT 设置。具体情形与结果配置在小节 3.3.1中已有列举。

 0/&0LVV5DWH //&0LVV5DWH
0/&0LVV5DWH //&0LVV5DWH


3HUIRUPDQFH&RPSDULVRQ
3HUIRUPDQFH&RPSDULVRQ














 
                   
                   
                   
           

(a) 在 DTT 最优组合为 0∼0.6 时,其他组 (b) 在 DTT 最优组合为 0.2∼0.6 时,其他
合相对此 MLC 与 LLC 命中率情况 组合相对此 MLC 与 LLC 命中率情况
 
0/&0LVV5DWH //&0LVV5DWH 0/&0LVV5DWH //&0LVV5DWH
3HUIRUPDQFH&RPSDULVRQ

3HUIRUPDQFH&RPSDULVRQ

 

 

 

 

 
                   
                   
                   
           

(c) 在 DTT 最优组合为 0∼0.4 时,其他组 (d) 在 DTT 最优组合为 0.3∼0.5 时,其他
合相对此 MLC 与 LLC 命中率情况 组合相对此 MLC 与 LLC 命中率情况

图 3.18 在相对于各种 DTT 最优组合的情况下,其他各组合相对于最优组合的 MLC 与 LLC


命中率情况

不同 DTT 组合会导致不同的性能的原因主要是由于 MLC 与 LLC 上失效率不


同所致。分别从图 3.17的四个组图中分别取一个程序作为对应情形的代表来进行
分析,图 3.18展示了在不同情形下不同 DTT 组合的 MLC 以及 LLC 失效率情况。
图中每个程序上对应的两条数据柱分别代表 MLC 失效率以及 LLC 失效率。从图
中可以看出,与 IPC 最好的情况时相比,当 DTT 被设置为其他值的时候可能会

第 73 页
国防科技大学研究生院博士学位论文

出现两种情况:1)DTT 被设置为其他值的绝大多数情况都显示出了明显的 MLC


失效率上升,而 LLC 失效率有轻微下降;2)DTT 被设置为其他值的其他情况下
LLC 失效率有明显上升而 MLC 失效率有轻微下降。因此可以得出结论,合理的
DTT 组合可以使得总体系统的失效率情况有所好转,从而性能亦有提升。

3.6.3 预取指令丢弃参数分析

此部分实验对 CHAM 中的预取指令丢弃机制进行分析。根据小节 3.3.1中的


叙述,预取指令丢弃机制会记录每条预取指令的生存时间并且丢掉由于优先级太
低而等待服务时间太久的预取指令。图 3.19展示了单核环境下在 30 个测试程序上
针对有无指令丢弃机制进行性能比较的结果。

%$6( &+$0

3HUIRUPDQFH&RPSDULVRQ

1$3'














F V V I FV 0 G G N ,, [ \ [ HU J I
P H WR P S DU [ N G G OV Z JH
FK  F H HV F P DO SOH UD OL Q '
WS W LQ P DQ DQ RR WDO
Q LS J Y P D '  P
$ OLH QD X P H
7 X U
' QW  WRQ O
E
H V UD
H E] D P P E H R Y OF P VM ) Q D
K
FE FU FU W V
UO
E
E
Z D UR
V
X OH V J
R G V S
R
F D K V D  VS Q H H HG OX Y
H
H J J F W P T X K P O D S S E F D
S D H R D V V
E  
F * OL [

图 3.19 无预取丢弃机制的 CHAM 与 CHAM 的 IPC 比较

图中的每个程序都对应有三条数据柱,分别对应为归一化的基准 IPC,没有
丢弃机制的 CHAM 以及完整的 CHAM。可以得知,相比于基准,没有丢弃机制的
CHAM 平均有 1.0% 的提升而 CHAM 有 1.2% 的提升。这也意味着预取丢弃机制
可以带来 27.1% 的性能提升,且对于绝大部分程序都是有着正面影响。当然我们
也注意到有少数一些程序在有预取丢弃的时候反而 IPC 会下降。这是由于对于这
些应用程序具有不规则访存模式,使得丢弃机制在有用的数据被访问之前就被丢
弃了。除此之外,我们也注意到相比于基准,禁用了丢弃机制的 CHAM 对几乎所
有程序都有提升,只有一个 calculix 表现出了性能下降。这主要是因为程序对预取
并不友好的特性。相对较低的预取准确率降低了预取指令的优先级,在没有预取
丢弃机制时,一旦 MSHR 满了,普通访存指令就必须等待预取指令被服务到。而
由于低预取准确率,预取来的数据也不太可能是有用数据,使得性能更差。总的
来说,由预取丢弃带来的性能提升是因为根据预取准确率信息及时丢弃无用的预
取指令,从而在 MSHR 中为正常访存指令腾出空间使得它们可以被快速服务到。

第 74 页
国防科技大学研究生院博士学位论文

3.6.4 替换策略参数分析

本小节针对 CHAM 中的替换策略进行测试分析。在小节 3.3.2中已经叙述过,


在 CHAM 中使用的替换策略是一种基于 SDM 的混合替换策略,这种替换策略在
实时动态的从 LRU 与 PACMan-DYN 中选择一种作为 Cache 替换策略。为了展示
CHAM 中单独的每种替换策略的贡献,本小节对来自于 SPEC2006 的 28 个程序测
试不同的替换策略对性能的影响。

%$6( 3$&0DQ'<1

3HUIRUPDQFH&RPSDULVRQ

/58 &+$0















F I ,, U I S DU
FK  F H
V VV F FV 0 G G N
P DO OH
[ \
OL
[ H QJ ' P UH WR P [ N G G H
Q LS J Y H P D ' LH P UD X P MH
7
WX  Q OE WS W LQ P DQ Q
D UD
J
H E] D E S Y ' Q  WR H V K
FE FU
E Z
D
D
P P V$ VO Q R G
H
VR SR FD
OF P V V) Q D VS FU H
UO E J UR X O H J K D 
P Q H H Y
H J FW H
P T
X K
R D
OD VS VS D
S
FD * OL
E [  

图 3.20 CHAM 使用不同 Cache 替换策略时的 IPC 比较

图 3.20展示了 CHAM 在使用不同替换策略时的性能。每个应用程序上的四个


数据柱分别表示基准、仅使用 LRU、仅使用 PACMan-DYN 与使用 CHAM 中的混
合替换策略四种情况。可以从图中得知,与基准相比,仅仅使用 LRU 与仅仅使
用 PACMan-DYN 这两种情况都不能带来明显的性能提升,实际的数值数值就分
别只有 0.3% 与 0.2%。这也说明 CHAM 中使用的基于 SDM 的混合存储策略通过
合理地根据预取准确率选取预取友好型的替换策略作为实时策略,可以提高预取
准确率并提高性能。CHAM 的混合存储策略有更好的性能的原因是,CHAM 根据
DPM 的值来选择策略,而 DPM 与失效率和预取准确率直接相关。选择 DPM 值更
大的策略意味着 CHAM 可以更好地利用实时信息并通过选择策略来保证 DPM 维
持在一个较高的水平,而由于较低的失效率以及更高的预取准确率,性能更好。

3.6.5 预取指令优先级参数分析

本小节对预取指令优先级调度进行分析。在小节 3.3.1中提到过,当预取准确
率高于阈值的时候 CHAM 将赋予预取指令以与访存指令相同的优先级,而当预取
准确率低于阈值时预取指令的优先级将比访存指令优先级更低。参数分析的案例
有二:1)保持预取指令的优先级始终与访存指令优先级一致。2)保持预取指令
的优先级始终低于访存指令的优先级。测试的程序与前面实验一致。
图 3.21展示了上述所有情况对比的结果。从图中可以看出,与基准相比,情况

第 75 页
国防科技大学研究生院博士学位论文

%$6( &DVH
3HUIRUPDQFH&RPSDULVRQ

 &DVH &+$0










F I ,, U I S DU
FK  F H
V VV F FV 0 G G N
P DO OH
[ \
OL
[ H QJ ' P UH WR P [ N G G H
Q LS J Y H P D ' LH P UD X P MH
7
WX  Q OE WS W LQ P DQ Q
D UD
J
H E] D E S Y ' Q  WR H V K
FE FU
D P P V$ O Q R H
VR SR FD
OF P V V) Q D VS FU H
UO
E
E
Z
J
D UR W X OHV J G
K X
D 
K P D
Q H H Y
S
H J F H
P T R D
O VS VS D
FD * OL
E [  

图 3.21 CHAM 使用不同预取指令优先级调度时的 IPC 比较

1(保持预取指令与访存指令优先级一样)平均有 1.1% 的性能提升而情况 2(保


持预取指令的优先级低于访存指令的优先级)平均有 1.0% 的性能提升。CHAM
相对于这两种情形平均分别有 14.0% 与 34.9% 的性能提升。这也说明这种动态预
取优先级调度方法与数据传输机制对性能提升有很大好处。
CHAM 调度预取优先级所依据的参数 PAT 也与预取准确率和 Cache 失效率直
接相关,动态调度所依据的信息本质上也与这两个参数息息相连。与这种动态的
方法相比,直接将预取指令优先级赋予固定的优先级会导致两种情况:1)总是保
持访存指令与预取指令优先级相同会使得对访存指令不能被及时的服务到,因此
降低性能;2)在预取指令的优先级总是比访存指令的优先级低的时候,某些访
存友好型应用程序会受影响。这是因为预取数据由于较低的优先级不能及时的取
到合适的位置使得很多访存指令不得不从更深的存储层次取数据,使得性能更低。
情况 1 比情况 2 的平均性能更好是因为在情况 1 中,尽管预取指令在一定程度上
影响了正常访存指令,预取丢弃机制仍旧可以通过丢弃超过一定时间未被服务的
预取指令,在一定程度上为正常访存指令腾出了空间,因而缓解了性能降低。

3.7 本章小结

本章提出了一种优化预取效率的方法 CHAM。CHAM 实时地统计与计算预取


相关参数来评估预取状态,并指导调度预取指令与普通访存指令,控制数据传输
层次以及与 Cache 替换策略相配合。CHAM 部署在 MLC 层次上,其主要包含两
个子工作:1)一种动态的自适应的对优先级分配、数据传输以及预取指令丢弃
进行管理的机制。2)一种动态的以预取参数为导向的基于 SDM 的混合替换策略,
这种策略会从 LRU 与 PACMan-DYN 中选择当前对预取最有优势的策略。从在 30
个应用程序上进行测试的结果得知,CHAM 可以有效提升访存命中率以及系统性
能。在单核、双核、四核环境下,CHAM 平均分别提高了 9.2%,16.8% 以及 33.1%
的访存命中率,以及平均分别提高了 1.2%,2.5% 以及 10.1% 的系统系统性能。

第 76 页
国防科技大学研究生院博士学位论文

第四章 面向三维存储结构的压缩管理机制
本章提出了一种提升 HMC 有效存储容量的压缩管理机制 CMH(Compression
Management in the Hybrid Memory Cube)。三维混合存储模块(HMC)是一种创新
型的三维堆叠存储结构,它可以非常有效地提高带宽且节省功耗。然而由于受到
DRAM 位元可扩展性以及功耗密度的影响,单个 HMC 的物理存储容量很有限,
而且并不太可能在未来有明显的增长。因此在应对大数据时代的高性能应用程序
时,HMC 的存储容量受限将是一个非常严重的问题。CMH 部署在 HMC 的逻辑
层,通过在数据传输的过程中压缩数据以及在运行时对 HMC 中 DRAM 层存储的
数据进行选择性地压缩,CMH 可以有效的提高存储容量,同时也节省了运行时所
消耗的带宽。本章使用了若干访存密集型应用程序对 CMH 进行测试,结果表明
在单核环境下,CMH 可以降低 64.4% 的存储容量,并节省 42.4% 的带宽。对于多
核程序并行的情况,CMH 的优化效果也很好。通过在 HMC 的逻辑层上部署一个
片上 Cache 来存储压缩所用中间数据,以此来进一步降低传输延迟。CMH 引起的
性能上的损失,在单核及多核的情况下仅仅只有 1.2% 与 1.5%,这就说明 CMH 在
并未明显影响性能的情况下有效提高了容量并提高了带宽。

4.1 引言

现代计算机存储系统一般是多层次结构,并且遵从层次越低,容量越大而访
问速度越慢的规律。在存储系统中,内存是相当重要的一环,目前工艺上主要使
用 DRAM 作为制造材料,其具有易失性,主要用来存储程序运行时数据,在断电
时数据即丢失。普遍来说对于同一代的产品,相较于存储系统处理器系统对于数
据的处理明显更快。而近年来微处理器技术的大大发展使得存储系统与处理器之
间的差异日益明显,亦使得存储系统的瓶颈效果更为明显,这也就是我们耳熟能
详的“存储墙”问题。近年来,为了提升系统的总体速度,针对存储系统进行优化
的工作也比比皆是。此论文的第 3章即为对 Cache 内数据存储及管理方法的优化,
通过充分的实验也表明,通过对 Cache 层次的优化,系统的总体性能得到了一定
的加速。在本章,我们将关注点转向更低一层次——主存。
如今大数据已经遍及到生活的各个领域,而处理这些大数据所需要的高性能
计算也对当前的存储系统提出了越来越高的要求,这种要求是多方面的,访存延
迟作为最基础的要求自不必说,其他诸如存储带宽、存储容量等等亦是主要优化
对象。近年来许多新兴的存储结构的出现大大提升了可用存储带宽,这其中具
有代表性的结构包括 Wide-I/O 2 [48]、全缓存 DIMM [46]、片上缓存 [47]、High
Bandwidth Memory(HBM) [48] 以及 Hybrid Memory Cube(HMC)(在上述的章

第 77 页
国防科技大学研究生院博士学位论文

节中已有详议) [52] 等等。这些存储结构一般通过高速串行线来保证高带宽。举


例来说,最新一代的 HMC 可以提供峰值 480GB/s 的带宽,这个数值几乎是同时期
的第二代 HBM 的两倍,而且是 Wide-I/O 2 技术的 8 倍之多。此外由于三维存储系
统基本都采用硅穿孔技术,因此其普遍具有较于传统存储结构仅仅 25% 左右的读
写延迟,可以有效缓解存储系统的瓶颈作用,从而提升系统整体性能。从这些参
数看来,三维存储系统是一种潜力巨大,在未来会有广泛应用的存储系统,这也是
我们主要针对三维存储系统进行研究的原因所在。本章选用 HMC 作为研究对象。
然而不可否认的是三维存储系统目前仍旧存在不少问题,其中最显著的问题
就是存储容量 [258]。相较于在读写延迟和带宽上的巨大优化,三维存储系统的容
量并没有任何优势。目前最新的已经做出实物的 HMC 最大支持 8GB 的容量,这
相对于目前的主流内存容量并无优势甚至稍有落后。这是由于受 HMC 的存储部
分使用的 DRAM 介质本身性质所限。存储器容量的提升主要有几个方法:1. 提高
DRAM 位元的密度。现在 DRAM 相关产品几乎已经探索到了 DRAM 的物理极限,
这也意味着进一步的扩展每一个位元的存储能力变得非常困难。具体说来,进一
步的提升存储容量意味着更高的位密度,而密度的提升需要通过缩小 DRAM 位
元的体积来做到(6F 2 → 4F 2 )。缩小位元体积的主要做法是把凹式场效晶体管
(FET)替换为高密度的垂直晶体管,这是很具有挑战性的 [259]。2. 使用新兴的非
易失性存储介质(non-volatile memory,NVM)。非易失存储介质具有容量大、功
耗低的优势。DRAM 与 NVM 共同组成的混合存储系统也是一种可以有效提高存
储容量的办法 [260]。然而目前 NVM 技术尚未成熟,在工艺制作以及实际操作上
都有很多问题,例如非常长的写延迟以及很高的写功耗等等。还有一种很有效的
用于增加有效容量的方法就是利用压缩技术,这种方法所需要的面积以及能耗开
销基本可以忽略不计。尽管压缩可能会带来一些解压缩的延迟开销,总体来说压
缩用于降低存储开销是非常有效的一种方法。
HMC 虽然是一种很有前景的存储设备,目前为止却几乎没有工作来针对其存
储容量进行优化。未来市场中 HMC 的定位在于处理高性能计算及网络应用程序,
这些程序的特征就是对带宽和存储的要求特别高。上面已经阐述过,HMC 相比于
同类产品在带宽的提供上有相当的优势,而在容量上则有不及。实际上容量的受
限不仅仅是 DRAM 电容器物理极限所致,在 3D 集成工艺中针脚数量也是一个重
要因素 [261] [262]。此外,封装技术也限制了可堆叠的层数。过高的功耗密度与热
耗散在 HMC 也是一个很重要的问题。这些问题使得通过单纯增加层数来增大容
量是不可行的,因此使用压缩技术来提升容量就成为一个自然而然的想法 [263]。
Sparsh 等人做了一个在 Cache 及内存上进行数据压缩的一系列工作的相关调查,
这些工作也说明了压缩技术应用在存储结构中是十分有效的 [3]。但遗憾的是,以

第 78 页
国防科技大学研究生院博士学位论文

前的工作主要受众面是 DIMM 系统,因此并不适用于三维存储系统,因此提出针


对三维存储系统的压缩管理机制的研究就很必要了。
本章提出了一种针对三维存储系统的压缩管理机制 CMH。这是一种旨在提高
三维存储系统的新型存储机制。CMH 本身可以使用多种压缩算法,而从效率以及
开销来考虑,BDI 压缩算法由于其简单的结构、很短的解压缩延迟以及较低的开
销,用在本机制中最为合适 [155]。在每个高速串行线之前,CMH 部署了一个压
缩引擎来压缩不常访问的数据,以及负责将读取的数据解压缩。在运行时,CMH
中有一个算法来规范如何压缩并插入新的数据或者覆盖原有的数据,以及根据访
问频率周期性地对数据进行压缩与解压缩等等。
CMH 使用多个访存密集型应用对性能进行测试。实验结果表明在单核环境
下,CMH 可以节省 64.4% 的容量以及 42.2% 的带宽;在多核环境下,CMH 可以节
省 66.2% 的容量以及 47.8% 的带宽。通过在 HMC 的逻辑层部署一个 STT Cache 以
减少访问地址所需要的额外延迟开销,当解压缩的延迟设置为 3 个周期时,CMH
对 IPC 的影响在单核及多核环境下分别仅为 1.2% 与 1.5%,可以忽略不计。
本章的贡献如下:(1)提出了一个针对提高 HMC 的有效存储容量的压缩管理
框架。(2)描述了 CMH 的架构。考虑到 HMC 的结构,CMH 中体系架构、中间数
据以及数据布局都进行了针对性的设计以避免过高的传输延迟和硬件开销。(3)
针对 CMH 的各种参数和条件进行了全面的实验测试。实验结果表明 CMH 在保持
IPC 稳定的情况下,可以有效地提高有效内存和带宽。

4.2 相关背景知识

4.2.1 混合存储立方体

本文在第二章中已经对 HMC 做过详细介绍,在此简单回顾。混合存储立方体


(下称 HMC)是一种基于 DRAM 存储介质的三维堆叠存储结构。如图 2.4(a)所示,
一般情况下 HMC 中存在一层逻辑层作为简单计算与存储控制模块,并在此逻辑
层上堆叠四层或八层 DRAM 层作为其存储介质,层与层之间使用硅穿孔(TSV)
技术相连。HMC 的逻辑层可以提供诸如访存指令重排序、数据刷新、数据纠错、
数据路由等等。在最近推出的 HMC 2.0 中,其逻辑层可以支持有限但非常有用的
存储内计算指令(PIM) [52] [264]。
在 HMC 中,所有的层是垂直管理的。换句话说,我们可以想象成 HMC 被
竖直地均匀分割成几个部分,每个部分都称之为一个拱顶(下称之为 vault)。每
个 vault 都是相同的结构,即若干部分存储层堆叠在部分逻辑层上,此部分逻辑
层即为此 vault 控制器。每个 vault 中的存储部分包含若干个 bank,每个 bank 的
容量大小则固定为 16M,因此在不同大小容量的 HMC 中 bank 的数目会有区别。

第 79 页
国防科技大学研究生院博士学位论文

图 2.4(b)所示为 HMC 中请求者与回应者组成的包(packet)传输对,在 HMC 中,


存储指令以及数据的传输是通过一种基于包的协议实现。尽管 HMC 大大提升了
带宽并有效降低了能耗,其在存储容量上并未有较出彩的表现,目前 HMC 最大
也只是支持 8GB 而已,相较于传统的存储结构,HMC 在容量方面几乎没有任何
提升。鉴于存储容量大小是决定高性能应用程序运行时性能的重要因素,我们在
本章旨在使用压缩技术在 HMC 上提升有效存储容量。

4.2.2 常用压缩算法

压缩算法应用于存储系统中可以有效的增加存储容量。尤其是多级存储系
统中,压缩技术甚至可以降低 Cache 的失效率并提升带宽 [3]。在以往的工作中,
许多学者针对不同的应用场景及优化目标提出多种压缩算法来扩展数据的可冗
余性。例如哈夫曼编码(Huffman coding)用最少字节编码最常出现的元素 [169];
X-match 使用压缩记录目录项来降低数据冗余,其通过比较输入的数据与保存的
目录来确定重复的数据,从而确定压缩数据 [159]。最常见值压缩(Frequent value
compression)通过编码最常出现的值来达到压缩的效果 [163]。最常见模式压缩
(Frequent pattern compression)则优先选择压缩能压缩至最小字节的数据 [102]。基
准 -差 -常数压缩算法(Base-Delta-immediate,BDI)将一组数据分割成段 [155]。
BDI 算法将其中的一个段作为基准,并把其他的段表示为基准段与本段之间的差
值,从而减少总体存储大小。在多种多样的压缩算法中,我们选择在设计中使用
BDI 算法。这是考虑到了这种算法的高效、低复杂度、适用于内存层次以及硬件
开销很小。

4.2.3 基于压缩的存储系统

在以往的一些工作中提出了使用压缩的方法来优化存储系统。针对 DIMM 存
储系统的 IBM MXT 压缩机制就是一个典型的工作 [265]。MXT 使用区块翻译表
(STT)来定位压缩数据。STT 中的每一行都指向一个存储块,每个存储块的大小
是 256 字节,4 个存储块组成一个存储链。每行 STT 都有 128 位,最多可以容纳
存储四个指针。这些指针可以用来最多指向一个存储链中的 4 个存储块。当一条
访存指令到达之时,存储控制器会从 STT 中查找即将访问的数据的正确位置,随
后依实际需要进行压缩或解压缩数据。相比于 MXT,CMH 有若干区别与创新之
处:1)保持部分数据在非压缩状态;2)使用一种全新的数据层次模型来简化对
于非压缩与压缩数据的管理;3)根据运行时信息后台对压缩与非压缩数据进行相
互转化;4)使用 HMC 片上 STT Cache 缓解额外的访问开销;5)使用垃圾回收机
制避免存储碎片化。

第 80 页
国防科技大学研究生院博士学位论文

DMC 是另一个提升 HMC 容量的工作,其使用两种压缩算法来平衡压缩率与


解压缩延迟 [266]。在 DMC 中,最近访问到的数据块使用低访问延迟压缩算法进
行压缩。与此同时,非经常访问数据块则使用高压缩率压缩算法进行压缩。DMC
有一套非常复杂的地址转换机制来保证地址的快速定位。然而 DMC 过于复杂以
至于维护两种算法的控制模块之间的协同工作开销非常大。与上述两个工作相比,
CMH 在只需要在 HMC 上搭载一种压缩算法的前提下,可以在有效的提升容量的
同时防止 IPC 的明显降低。为了确保较低开销以及避免碎片化,CMH 中也包括了
更为合理的数据结构以及垃圾回收机制等等。表 4.1比较了 MXT,DMC 与 CMH。

表 4.1 MXT,DMC 与 CMH 之间的比较


优化 地址映射 地址 压缩 压缩 后台 数据
方法 开销
目标 复杂度 缓存 粒度 算法 压缩 重组
MXT DIMM 中 片上 Line (1KB) Ziv-Lempel × × 中

DMC HMC 高 逻辑层 64B ∼ 1KB LZ & LCP × 高
√ √
CMH HMC 低 逻辑层 Block (64B) 简化的 BDI 低

4.2.4 本章相关工作

早在 1993 年,Douglis 等人就提出了一种低开销实时压缩方法 [163],这种方


法用于在小内存系统中对大型程序的工作集以压缩的格式进行保存。Tremaine 等
人在 IBM 系统中提出了 MXT,在小节 4.2.2中已经详细介绍了 [265]。Ekman 等人
提出了一种机制使得块的压缩率可变,从而减缓由于压缩带来的性能损失 [102]。
压缩算法也被广泛的使用在了非 DRAM 与多级存储系统中。Dgien 等人提出了
FPC 机制来减少对于非易失存储系统的写操作(由于对于非易失存储系统的写延
迟非常高) [110]。Choi 等人针对非易失存储 Cache 提出了一种自适应的压缩方
法 [111],当一个 Cache 块可用的时候,这种方法使得这个块的存储介质可控。Lee
等人针对混合存储系统(MLC/SLC PCM)提出了一种基于压缩的管理方法来综
合 MLC/SLC PCM 二者的优势 [108]。Du 等人提出了一种基于变量的压缩方法来
提升 DRAM + PCM 混合存储系统的有效容量 [109]。
到目前为止很少有工作使用压缩算法优化三维存储系统。Kim 等人提出了一
个叫做 DMC 的机制 [266],在小节 4.2.3中已有详细讨论。Park 等人提出了一种选
择性的压缩算法 [159],结合 Power Gating 技术可以有效的降低三维 SRAM 系统
中的静态功耗。Khurshid 等人使用数据压缩技术来缓解三维存储系统中温度过高
的问题 [43],从而提高性能。

第 81 页
国防科技大学研究生院博士学位论文

4.3 CMH 压缩管理机制

4.3.1 CMH 系统结构

CMH 的设计通过与 HMC 的本身结构紧密结合,在几乎不使得 IPC 降低的情


况下有效的增加了存储容量。CMH 的设计特征有以下几点:1)CMH 将 HMC 中
的每个 vault 都分成两部分:压缩数据区与非压缩数据区。非压缩数据区的作用类
似于一个存储内的独占型 Cache,用来存储经常被访问到的数据(hot data)。那些
请求这些常用数据的访存指令将直接从这非压缩区读取数据,从而避免解压缩带
来的额外开销。压缩区内则将非常用数据保存为压缩格式,即使对此区域内数据
的读取将不可避免的带来解压缩操作,压缩本身可以大大节省存储空间。2)CMH
可以基于各个 bank 的访问频率动态的调整非压缩区与压缩区之间的比。3)为了
最小化延迟开销,CMH 为管理不同的数据区域使用了更为合适的数据布局,从而
降低了数据管理开销。4)CMH 周期性的重新调整区域以消除碎片。下面我们解
释 CMH 中的设计与操作。
在 CMH 中,我们使用类似但更为简化的 MXT 中使用的区块存储方式来存储
数据。基于 HMC 的“低位交叉”地址映射特性,对所有的 vault,CMH 在区块翻
译表中为每个 block 都分配了一个私有的入口以用于进行地址转换,这样做可以
更为充分的利用区块翻译表,而且使得地址转换过程更为简单、快速及有效。如
图 4.1所示,在 HMC 的 4 个高速串行链路之前,每个都配置了一个基于 BDI 压缩
算法的压缩引擎。这些压缩引擎被用来对请求的数据进行压缩或者解压缩操作。
为了管理压缩区与非压缩区,CMH 为每个 vault 都保留了一份最常被访问 block
(FAB)记录用于表示哪个 block 在一段时间内最常被访问到。若在一段时间内
FAB 有所改变,那么在 HMC 内部的压缩引擎则会解压缩新的 FAB 中的数据,并
将旧的 FAB 中的数据压缩。如此一来即可保证经常被访问到的数据是非压缩状态
从来免去了每次访问的解压缩延迟开销。
当每个存储指令到来之时,CMH 会首先定位到该指令即将访问到的 vault 并
从此 vault 中对应的区块翻译表中读取到即将访问数据的数据状态(即非压缩或是
压缩,若是压缩的话压缩成哪种状态)以及在内存中存储的真实地址。图 4.2展示
了 CMH 中的管理算法,这个算法部署在 HMC 的逻辑层上。当一个写指令到达的
时候,对应 vault 的压缩引擎会判断即将访问的数据是否位于 FAB 中,并依据实
际情况判断是否需要将即将写入的数据压缩或否。在那之后,若是新的数据与存
储的数据大小一致,那么新的数据将会直接替代存储的数据,否则旧的数据将会
被删而新的数据将被插入。在章节 4.3.2中介绍的策略在最小化数据移动开销的同

第 82 页
国防科技大学研究生院博士学位论文

MC Compressed HMC
FABT Comp
Decomp STT0 Slice 0
Entry 0 Block 0
Entry 1 Block 1
Compressor ĊĊ ĊĊ

Crossbar Switch
Link0 Entry n Block n
Decompressor
VC 0
Compressor VC 1
Link1
Decompressor VC 2

Compressor
Link2
Decompressor ĊĊ

Compressor
Link3 VC 31
Decompressor

图 4.1 CMH 的总体示意图

时保证了数据布局的有序。当一个读指令到达的时候,即将读取的数据将会被传
输回存储控制器,并会依据数据的状态判断是否需要解压缩。CMH 也会周期性的
检查各个 vault 中 FAB 是否有所变化,如果有所变化,CMH 将解压缩新的 FAB 中
的数据,并压缩之前的 FAB 中的数据。
为了进一步降低访存延迟,每个 vault 上都部署了一个小 Cache,我们称之为
STT Cache。这个 Cache 用来保存 STT 中的一小部分(STT 本身是保存在 HMC 的
DRAM 层中)。由于从 DRAM 中访问 STT 会带来更高的延迟,STT 可以有效的减
少访存延迟。通过在小节 4.5.4中所做的参数测试,每个 STT Cache 的大小设置为
16KB。

4.3.2 CMH 中间数据与数据布局

1) CMH 的中间数据
CMH 中的每个 vault 都分配了一个 STT,STT 中每一个入口都有两个数据区
域:1)数据压缩状态;以及 2)映射的数据的地址。第一个数据区域需要表示三
种数据状态:空闲、压缩以及未压缩状态。当一个数据在压缩状态中,其可能被编
码成不同的格式。BDI 算法中压缩编码总共有 10 个,可以表示成(a, b)的形式,
就如在小节 4.2.2中说明的那样,a 是基准而 b 是与基准的差值。通过对 SPEC2006
测试集中所有程序的运行时数据的压缩格式出现的频率进行了测试并计算出加权
值,可以得知 BDI 算法中比较常见的编码组合是哪些。从测试的结果中可得知,
最不常见的 4 种压缩编码出现的频率在总体中的占比小于 1%。因此 CMH 只支持
更常见的另 6 种编码格式,加上空闲与非压缩状态两个即总共八个状态,则可以

第 83 页
国防科技大学研究生院博士学位论文

G LOBAL -H ANDLE(system)
1 Initial(system)
2 Input(Access)
3 CurClock = 0
4 while Access 6= NIL
5 Handle(Access, system)
6 CurClock++
7 F req[Access.V ault][Access.Bank]++
8 if isPeriod(CurClock)
9 ReArrange(CurClock, NIL, U pdate, F req)
(a)

H ANDLE(Access, system)
1 status = Search-STT(Access)
2 if Access.T ype = W rite
3 N eedCompress = Search F req(Access.Data)
4 if N eedCompress
5 Compress(Access.Data)
6 N eedAdjust = true
7 if Access.DataSzie = status.Data.size
8 replace(Access.Data, Access.Address)
9 N eedAdjust = f alse
10 if status 6= invalid
11 if Access.DataSzie = status.Data.size
12 replace(Access.Data, Access.Addr)
13 else
14 remove(Access.Data, Access.Addr)
15 insert(Access.Data)
16 else insert(Access.Data)
17 if N eedAdjust
18 ReArrange(system, Access, insert, NIL)
19 if Access.T ype = Read
20 if Access.Data.Compressed
21 Decompress(Access.Data)
22 RespondAccess = MakeRespond(Access)
23 Transfer(RespoindAccess)
(b)

图 4.2 CMH 上的压缩管理算法伪代码

用三个比特来表示。第二个区域表示数据地址,这部分所需要的比特数则与表示
单个 vault 中 block 所需要的比特数一致。对于一个 4GB 的 HMC,其地址为 32 比
特 [52],除去表示 block 与 vault 大小的位数偏移之外需要 23 比特。
2) CMH 的数据布局

第 84 页
国防科技大学研究生院博士学位论文

由于一个压缩块依据实际情况具有不同的大小,压缩数据与非压缩数据可能
分布在 vault 中的任何位置,而数据的分布方式在很大程度上影响了 CMH 对数据
的操作以及可能的碎片化。例如一个压缩了的数据将要被写入到地址 A 中,这个
压缩的数据可能会比当前存放的数据更大。那么这个数据的写入就包括标记原先
的数据为无效以及将新的数据插入这两个操作。如果部署数据不得当,就可能会
引发存储空间内非常多的碎片以及非常多的存储内数据移动。

Compressed Area (Aligned to 16B) Uncompressed Area (Aligned to BlockSize)

Blank space (Less than 1 Block size)


Before After

(1) Compressed Uncompressed Compressed Uncompressed New

(2) Compressed Uncompressed Compressed New Uncompressed First

(3) Compressed Uncompressed Comp1 2 Uncompressed

Comp1 2 New Uncompressed First

(4) Compressed Uncompressed Comp1 2 Uncompressed New

(5) Compressed Uncompressed Compressed New Uncompressed

图 4.3 CMH 中的数据层次

CMH 中使用了一种全新的数据布局方法来避免大量的数据移动以及存储空
间碎片化。与以往工作不同 [109],在 CMH 中的数据布局中,所有的数据都有序
的按照压缩数据在非压缩数据之前的规律放置。如此一来,整个存储空间被分成
两个部分,压缩区与非压缩区。考虑到最小可能的压缩数据块大小,在压缩区的
数据都是按照 16 比特对齐的,而非压缩区的数据则按照 HMC 中 block 大小对齐。
如图 4.3所示,在非压缩区与压缩区之间存在一部分空白区(大小不超过一个块并
对齐到 16 比特),这部分是作为数据移动的缓冲区存在的。数据移动可能有以下
五种情况:

• 一个全新的未压缩数据被插入到非压缩区。在这种情况下,数据将直接被插
入到非压缩区的尾部,此时并不会引起任何数据移动。

• 一个全新的被压缩的数据被插入到压缩区,在这种情况下,数据将被插入到

第 85 页
国防科技大学研究生院博士学位论文

压缩区的尾部。如果空白区不足够以容纳新的数据,那么非压缩区的第一个
数据将被移动到此区域的尾部。如此将会有一个 block 大小的数据移动。

• 一个原数据存储于压缩区,但有新数据有不同大小的压缩数据被写入压缩
区。在这种情况下,若新的数据大小比原先数据大小更小,新的数据可以直
接覆盖在原先数据上,此时并不会有任何数据移动。否则的话,新数据将被
插入到压缩区的尾部,如果有必要的话非压缩区的第一个数据也会被插入到
非压缩区的尾部。与此同时,原数据将被标记为失效。如此若新的数据比原
数据更大的话将会引发两个 block 大小的数据移动。

• 一个原数据存储于压缩区,而新数据为非压缩的数据被写入非压缩区。在这
种情况下,新数据将被直接写入非压缩区的尾部并将原数据标记为失效,此
时并不会引起任何数据移动。

• 一个原数据存储于非压缩区,而新数据为压缩的数据被写入压缩区。在这种
情况下,新数据将被插入到压缩区的底部。原数据将与非压缩区的第一个数
据相交换并被标记为失效。如此会有一个 block 大小的数据移动。

为了避免内存碎片化,CMH 周期性的对 HMC 进行垃圾回收来对其内部存


储的数据进行重新组织。垃圾回收操作每一百万个周期进行一次。图 4.4展示了
三个程序上测试的数据移动开销。对这三个程序,数据移动所占用的平均带宽分
别仅为 5.3%、2.8% 与 2.6%。假设在垃圾回收时 CMH 使用 HMC 最大 TSV 带宽
(9GB/s)的 90%,那么垃圾回收所占用的时间分别仅占全部时间的 5.8%、2.8% 与
2.5%。这也说明了垃圾回收对于总体性能的影响极小。
100% libquantum leslie3d fluidanimate
90%
Bandwidth Ultilization(%)

80%
70%
60%
50%
40%
30%
20%
10%
0%
0 1 2 3 4 5 6 7 8 9 10
Runing Cycle (100 Million Cycle)

图 4.4 垃圾回收时的数据移动开销

第 86 页
国防科技大学研究生院博士学位论文

4.3.3 CMH 硬件开销分析

相比于压缩引擎,FAB(每个 vault 中只有 8 个 bank)以及 STT Cache(总共


512KB,功耗与面积开销都很小),CMH 的主要硬件开销在于 STT。由上所述,最
小的 block 大小设置为 16KB,因此每个 STT 的表项需要 26 个比特(3 个比特表示
压缩状态,23 个比特表示地址)。一个 4GB 的 HMC 中含有 32 个 vault,每个 vault
中的 STT 都有 22 1 个表项。为了控制硬件开销,在 block 更小的时候也仅仅使用
这些表项。事实上,访问已经被压缩的数据虽然需要首先将数据解压缩,但由于
解压缩本身不在关键路径上,使得这种操作并不会在很大程度上影响性能。通过
计算可得知,每个 STT 所占容量为 6.5MB,占总存储容量的 5.07%。由于存储压
缩本身可以节省存储空间,这个硬件开销是不大的。

4.4 实验环境设置

4.4.1 系统设置

BDI 压缩算法 [155] 以及 CMH 的实现工作是在模拟器 CasHMC [30] 上进行


的。我们在 Gem5 上模拟了一个 8 核 2GHZ 的多核顺序处理器 [256],用于获取程
序运行的 IPC。我们使用 Intel PIN [267] 工具来收集访存轨迹(trace)文件。这些
轨迹文件包含了预热运行 30 亿条指令之后再运行 15 亿条指令的访存指令信息。
为了获得足够的访存指令信息,我们部署了一个两级的 Cache(L1 Cache 为 32KB
的两路组相连,L2 Cache 为 2MB 的四路组相连)。我们使用 CACTI 7.0 [268] 来评
估 STT Cache 的延迟,功耗与面积参数等等。
CMH 中的存储系统被设定为一个具有 32 个 vault,4 条带宽为 30Gb/s 高速串
行线,4GB 存储容量的 HMC。假设 10GB/s 的内部带宽被平均分配到 32 个 TSV
上,那么每个 TSV 的带宽为 2.5Gb/s。HMC 的各项时间参数根据 HMC 规范 2.1 版
本来设定 [52]。所有详细地系统参数见表 4.2。

4.4.2 测试程序

根据各个程序的访存特性,我们分别从 SPEC2006 [228] 与 PARSEC 3.0 [269]


中选择了 9 个和 3 个访存密集型程序(访存密集型程序的判定标准为每千条指令
的读指令数和写指令数(RPKI,WPKI)均大于 1)。所有的程序都是由 GCC 4.7.4
编译的 64 位程序。对于多核的场景,我们选择若干程序并将其访存轨迹进行组合
以模拟多程序同时执行。

第 87 页
国防科技大学研究生院博士学位论文

表 4.2 系统配置

Processor 8-core, 2GHZ, in-order


L1 Cache: 32KB, 2-association
Cache
L2 Cache: 2MB, 4-association
close-page, 32 buffer size
Vault Controller
16 command queue size
4 SerDes link, 30 Gb/s lane speed
Link
480 GB/s max link bandwidth
Capacity: 16 KB, Access Latency: 0.167 ns
STT cache
Power: 5.88mW, area: 0.026 mm2 For each
32 TSVs, 2.5 Gb/s
timing: tCK = 0.8ns, tRP = 10
HMC
tRCD = 13, tCL = 13, tRAS = 27
tWR = 10, tCCD = 4
BDI-compression algorithm
Compressor Decompress latency: 3
(1∼5 in sensitivity test)

4.5 结果分析
对于 CMH 的评价主要涉及三个方面:1)容量。除了存储程序运行时数据所
需要的容量,STT 作为硬件开销所需要的容量也会被计算到。2)HMC 带宽。运
行时带宽会受到数据压缩情况的影响。3)IPC。IPC 的实验结果可以证明压缩本
身并没有在很大程度上影响程序整体性能。未作任何修改的 HMC 与上文提及的
MXT 将作为比较对象,其中未作修改的 HMC 为基准。

4.5.1 性能结果测试

图 4.5(a),4.6(a)与 4.7(a)展示了单核程序的运行结果,这些结果都做了归一化
处理并以未经修改的 HMC 测试的结果作为基准。与基准相比,无论是在容量或
是带宽上,CMH 都有很大的提升。而对 IPC,CMH 基本不会带来负面影响。平均
来看,相比于基准 CMH 节省了 64.4% 的存储空间以及 42.2% 的带宽。压缩算法
的使用是空间节省的主要原因,而正由于数据被压缩,使得传输所需要的带宽也
有所节省。而对 IPC,在单核环境下 CMH 相较于基准仅仅减少了 1.2%。至于为何
压缩的引入并不会带来性能下降的原因在于,在整个程序运行过程中对整个程序
有所影响的仅仅是解压缩而并非压缩(由于其不再程序运行关键路径上)。假设加
压缩需要 3 个周期 [155],实际上这个延迟开销的绝大部分都可以被传输压缩数据

第 88 页
国防科技大学研究生院博士学位论文

%$6( 0;7 &0+

&DSDFLW\&RPSDULVRQ














O
H
V FI S 0 G [ V T P D P 8 Q
 OH P B H VL / D
D
Y P VP $
'
VB S H OL
E OE Q ) H
X VR * Q FH P
E
Z
]H FB OH
FD ID B
F D *

(a) 单核环境下的存储容量提升

%$6( 0;7 &0+

&DSDFLW\&RPSDULVRQ














           Q
B B B B B B B B B   D
B B H
,; ,; ,; ,; ,; ,; ,; ,; ,;
0 0 0 0 0 0 0 0 0 ,; ,; B
P
0 0 *

(b) 多核环境下的存储容量提升

图 4.5 基准、MXT 与 CMH 的存储容量提升比较

所节省的时间所抵消。由于需要对 STT 进行访问来查询数据地址,使得传输的延


迟会有轻微的增长。为了进一步的降低传输延迟,CMH 中在每个 vault 中都引入
了 STT Cache 用以减轻必须访问 STT 所引起的额外开销。MXT 的机制中所有的
数据都是压缩的,因此相比 CMH,MXT 可以多节省 1.8% 的存储空间以及 0.6%
的带宽。而 CMH 相比于 MXT 的优势就在于更短的解压缩延迟以及更有效率的数
据传输,由实验结果得知 CMH 的 IPC 比 MXT 高 6.5%。
图 4.5(b), 4.6(b)与 4.7(b)比较了在多核环境下的实验结果,可以看出此结果
和单核的结果具有很强的相似性。平均来看,CMH 相比于基准节省了 66.2% 的容
量与 47.8% 的带宽。与此同时,IPC 也显示出了轻微的降低(相比于基准约 1.5%)。
值得注意的是,有些程序的 IPC 甚至还略有提高,这是因为 STT Cache 的高命中
率以及传输压缩数据所省下来的传输延迟。MXT 相比 CMH 节省的容量以及带宽
非常轻微(0.3% 的容量以及 0.2% 的带宽)。然而 CMH 比 MXT 提高了 8.3% 的
IPC。从实验结果可得知,IPC 并没有被显著降低,而且可以预期当在内存下还有
更低一级存储的时候(例如交换存储空间或者 SSD 硬盘之类的),IPC 会有显著提

第 89 页
国防科技大学研究生院博士学位论文

%$6( 0;7 &0+
%DQGZLGWK&RPSDULVRQ












O
H
V FI S 0 G [ V T P D P 8 Q
 OH P B H VL / D
D
Y P VP $
'
VB S H OL
E OE Q ) H
X VR * Q FH P
E
Z
]H FB OH
FD ID B
F D *

(a) 单核环境下的带宽提升

%$6( 0;7 &0+

%DQGZLGWK&RPSDULVRQ












           Q
B B B B B B B B B   D
B B H
,; ,; ,; ,; ,; ,; ,; ,; ,;
0 0 0 0 0 0 0 0 0 ,; ,; R
P
0 0 H
J

(b) 多核环境下的带宽提升

图 4.6 基准、MXT 与 CMH 的带宽提升比较

高。这是由于更多的数据可以存储在内存中,从而减少对于慢速存储的访问。下
面的实验将对系统中各个参数进行敏感性研究。

4.5.2 存储容量用量对结果的影响

我们使用两种方法对存储容量用量的影响进行评估。1)通过减少 vault 的数
量来改变存储用量。本实验中我们测试了三个访存密集型的程序,vault 的数量
被设置成 2 32,对应使用容量的程度从高(40%∼50%)到低(2%∼3%)。2)通
过测试一些存储容量可变的程序。NPB 就是可以改变运行时存储用量的一类程
序 [270],可以通过更改运行时所需程序来评估存储容量用量的影响。本实验中我
们测试了三个不同等级的容量。
图 4.8(a)与 4.8(b)展示了在使用方法一时在不同容量用量的情况下容量和 IPC
的提升情况。从图中可以看出在容量用量变化的情况下容量提升并没有什么变化;
而在存储使用率较高的情况下 IPC 则有轻微的提升。因此可以得出结论:存储容
量的使用程度高低并不会影响压缩的效果,也不会影响带宽。然而数据的增长会

第 90 页
国防科技大学研究生院博士学位论文

%$6( 0;7 &0+
3HUIRUPDQFH&RPSDULVRQ














O
H
V FI S 0 G [ V T P D P 8 Q
 OH P B H VL / D
D
Y P VP $
'
VB S H OL
E OE Q ) H
X VR * Q FH P
E
Z
] H FB OH
F D ID B
F D *

(a) 单核环境下的 IPC 性能



%$6( 0;7 &0+
3HUIRUPDQFH&RPSDULVRQ














           Q
B B B B B B B B B   D
B B H
,; ,; ,; ,; ,; ,; ,; ,; ,;
0 0 0 0 0 0 0 0 0 ,; ,; B
P
0 0 *

(b) 多核环境下的 IPC 性能

图 4.7 基准、MXT 与 CMH 的 IPC 性能比较


 

OLEBP OHVG IOX OLEBP OHVG IOX


3HUIRUPDQFH&RPSDULVRQ

 
&DSDFLW\&RPSDULVRQ

 

 

 

 

 
         
9B 9B 9B 9B 9B 9B 9B 9B 9B 9B

(a) 使用方法一对于存储容量的提升 (b) 使用方法一对应性能的影响

图 4.8 使用方法一对于存储容量以及性能的影响

导致对存储资源更大的需求,也就会使得有些存储操作更长的等待时间,同时会
导致更长的数据传输延迟。图 4.9(a)与 4.9(b)则是使用方法二测试所得的结果。我
们将标有 A 的数据柱设为基准,图中标有 A 的数据柱子表示占用存储容量最小的
情况,标有 C 的数据柱子表示占用存储容量最大的情况。从图中可得知占用存储
容量的大小并不会明显的影响对于容量的优化。A 与 B,B 与 C 之间对于容量优
化的差距分别仅仅只有 2.2% 与 1.7%。而 IPC 的差距则分别只有 0.2% 与 0.9% 而

第 91 页
国防科技大学研究生院博士学位论文
 
$ % & $ % &

3HUIRUPDQFH&RPSDULVRQ

&DSDFLW\&RPSDULVRQ












 
VS IW OX D
Q VS IW OX D
Q
H H
P P
B B
J J

(a) 使用方法二对于存储容量的提升 (b) 使用方法二对应性能的影响

图 4.9 使用方法二对于存储容量以及性能的影响

已。实验结果表明了容量优化的关键因素在于压缩算法以及程序的特性本身,而
与所占用的容量大小无关。

4.5.3 压缩算法参数对结果的影响

本小节研究压缩算法的参数对于性能的影响,所研究的参数包括解压缩延迟
以及块大小。根据以前文献所述 [155],BDI 算法所需要的解压缩延迟并不大,在
1∼5 个时钟周期之间。在 CMH 的设计中所有的压缩引擎都放置在高速串行导线
之前,这决定了解压缩延迟仅仅会影响传输延迟。图 4.10展示了解压缩延迟如何
影响 IPC。当解压缩延迟上升的时候,传输延迟会上升,从而导致 IPC 下降。当
加压缩延迟被设置为 5 时,对于某些程序传输延迟会有上升,然而 IPC 的下降却
很轻微,仅仅只有 0.1%。

%$6( 6 6 6 6 6
3HUIRUPDQFH&RPSDULVRQ








G X
B
P
V IO
E OH
OL

图 4.10 解压缩延迟对性能的影响

由于 BDI 算法支持对 32B 与 64B 的数据块进行压缩 [155],块大小也作为参


数之一在本章进行研究。图 4.11展示在当数据块大小设置为 32B 与 64B 时在容量
优化以及 IPC 上的差别。对于容量,平均 CMH 在块大小为 64B 时比块大小为 32B
多节省了 19.3% 的容量。除此之外,在块大小为 64B 时,IPC 比块大小为 32B 时
稍好一些(高大概 0.6%)。综上所述,在块大小为 64B 时 CMH 更有效率,这和

第 92 页
国防科技大学研究生院博士学位论文
 
EORFNB EORFNB EORFNB EORFNB



3HUIRUPDQFH&RPSDULVRQ
&DSDFLW\&RPSDULVRQ





 







 
G X Q G X Q
B
P
V IO D B
P
V IO D
E H E H
OL OH P OL OH P
B B
J J

(a) 不同块大小对于存储容量的影响 (b) 不同块大小对于性能的影响

图 4.11 不同块大小对于容量以及性能的影响

BDI 算法实验本身的特征有关。也就是说在块大小为 64B 时,BDI 算法可以有更


高的压缩率。

4.5.4 FABT 以及 STT Cache 对结果的影响

 
121 )$%7 677 $// 121 )$%7 677 $//


3HUIRUPDQFH&RPSDULVRQ


&DSDFLW\&RPSDULVRQ














 
G X Q G X Q
B
P  IO D B
P  IO D
H H
OL
E VB P OL
E VB P
OH B OH B
J J

(a) 四种不同的配置情况对于存储容量的影 (b) 四种不同的配置情况对于性能的影响


图 4.12 四种不同的情况对于容量以及性能的影响

关于 FABT 以及 STT Cache 的定义在第 4.3.1小节有所提及,为了全面的探究


这两个组件对于总体性能的影响,本章对四种情况分别进行了比较。这四种情况
分别是:无 FABT 且无 STT Cache、仅有 FABT、仅有 STT Cache、既有 FABT 也
有 STT Cache(将这四种情况称之为情况 1,2,3,4),其中情况 1 在结果中作为基准。
从图 4.12中可以得出,将无 FABT 的情况与有 FABT 的情况进行比较(即情况 1
与情况 2 比较,情况 3 与情况 4 比较)时可发现,有 FABT 的情况比较没有 FABT
的情况在容量的消耗上会有 1.3% 的提升。而在有 FABT 或者没有 FABT 的情况间
进行比较时,容量的消耗并没有明显区别。图 4.12展示了对 IPC 的比较,结论有
二:1)将有 STT Cache 与没有 STT Cache 的相比较,有 STT Cache 的情况的 IPC
有明显的提升,大概 8.5% 左右。这是由于 STT Cache 避免了很多对 DRAM 层的

第 93 页
国防科技大学研究生院博士学位论文

额外访问。2)比较都有 STT Cache 或是都没有 STT Cache 的情况下,有 FABT 的


情况会有相对稍高的 IPC,大概高 0.2% 左右。这是由于虽然没有 FABT 的情况下
所有传输的数据都是压缩状态,在一定程度上减少了传输延迟,但 FABT 的存在
可以避免频繁的解压缩常访问的数据,这样节省的解压缩的时间可以覆盖由于传
输未压缩数据增加了的传输延迟。
 
'L : : )8// 'L : : )8//

3HUIRUPDQFH&RPSDULVRQ

+LW5DWH&RPSDULVRQ












 
T G X Q T G X Q
B  IO D B  IO D
E H E H
OL VB P OL VB P
OH B OH B
* *

(a) 不同相连策略对 STTCache 命中率的影响 (b) 不同相连策略对总体性能的影响

图 4.13 不同相连策略对于 STTCache 命中率以及总体性能的影响



.% .% .% .%
.% .% .% .%
3HUIRUPDQFH&RPSDULVRQ
+LW5DWH&RPSDULVRQ

 

 

 

 
T G X Q T G X Q
B  IO D B  IO D
E H
OL VB P OL
E VB P
H
OH B OH B
* *

(a) 不同 STTCache 大小对于命中率的影响 (b) 不同 STTCache 大小对于总体性能的影


图 4.14 不同 STTCache 大小对于命中率以及性能的影响

本小节亦探索了 STT Cache 的参数对结果的影响。如表 4.3所示,Cache 组织


形式与大小的不同会导致不同的命中率以及访问延迟,继而使得性能不同。实验
中我们测试了四种组相连形式,分别是直接相连、四路组相连、八路组相连以及
全相连。图 4.13呈现了不同组织形式下不同的命中率,在此实验中直接相连的结
果被设置为基准。从结果可得知,当组织形式改变时命中率的变化并不明显。相
比于基准,其他的结果只有不到 0.01% 的区别。IPC 的结果与命中率的结果基本
相似,图 4.13显示了不同组织形式的结果之间的差距非常小,四路组相连、八路组
相连与全相连的结果与基准相比分别有 0.1%、0.4% 与 0.1% 的减少。考虑到访问

第 94 页
国防科技大学研究生院博士学位论文

STT Cache 的延迟,STT Cache 设置为直接相连是最为合适的。针对 STT Cache 的


容量大小,我们首先将 Cache 设定为直接相连,而后对 8KB、16KB、32KB、64KB
这些不同大小进行测试。图 4.14展示了对不同 Cache 大小时的命中率,可以看出
随着 STT Cache 大小的增长,命中率是增加的趋势,这也与常理相符。将 8KB
的 STT Cache 结果作为基准,16KB、32KB 与 64KB 的结果分别有 1.5%、2.4% 与
2.8% 的加速。然而,IPC 却有不同的结果。尽管 8KB 的 STT Cache 具有更快的访
问延迟,然而由于其更低的命中率会使得 IPC 相对更低。平均来看,当使用 16KB、
32KB 与 64KB 时,IPC 相较于基准有 0.11%、0.09% 与 0.04% 的提升。综合考虑
来看,STT Cache 设置为 16KB 直接相连更有利于性能。

表 4.3 不同配置下的访问 STTCache 延迟(ns)

8KB 16KB 32KB 64KB


Direct-Mapped 0.136 0.167 0.227 0.316
4 Way-Set Assoc 0.395 0.420 0.454 0.464
8 Way-Set Assoc 0.732 0.753 0.779 0.812
Full Assoc 0.304 0.385 0.573 0.709

4.6 本章小结

本章提出了一种提升 HMC 有效存储容量的压缩管理机制 CMH。CMH 选择


性地将传输的数据进行压缩并存储在 HMC 中,由此提高有效存储容量。经过大
量实验,结果显示在单核环境下 CMH 可以多节省 64.4% 的容量并且提升 42.4%
的带宽。对于多核程序,CMH 可以节省 66.2% 的容量并提升 47.8% 的带宽。由于
传输压缩数据降低了传输延迟,在 HMC 上设置的逻辑层也进一步过滤了许多额
外的读取数据地址的读操作。CMH 对于 IPC 的影响极低,对于单核环境与多核环
境,IPC 的降低分别仅仅只有 1.2% 与 1.5%,这也意味着 CMH 可以使得有效容量
大量提升的同时保持 IPC 的稳定。

第 95 页
国防科技大学研究生院博士学位论文

第 96 页
国防科技大学研究生院博士学位论文

第五章 基于存储内计算的应用加速
本章提出了使用 HMC 存储内计算进行应用加速的两种方法:HMCSP 与
CGAcc。混合存储模块(HMC)是一种新型的三维存储结构,其在有计算功能
的逻辑层上堆叠负责存储数据的 DRAM 层。得益于这种独特的结构的存储内计
算(Process in Memory,PIM)特性以及非常短的传输延迟,HMC 作为加速器优
化一些常用的应用程序变得非常有可能。在 HMC 中对应用程序进行优化需要
考虑到程序的访存模式,一般说来访存模式有规则与不规则之分。访存规则的
典型应用程序有基于 CSR(Compressed Sparse Row)表示的系数矩阵与向量相乘
(CSR-SPMV)。SPMV 是一种在基础数值计算中极常用的应用,由于矩阵乘具有高
度的可并行性,很多工作使用一些可并行硬件,例如 GPU、MIC 以及 FPGA 等来
加速 SPMV,而这些并行化方法一般都需要系统级编程模型的软硬件支持,比较
复杂而且硬件开销更大。本章提出了 HMCSP(CSR-based SPMV in Hybrid Memory
Cube),一种利用 HMC 逻辑层的 PIM 部件来降低传输延迟的方法。通过合理的应
用 PIM 以及数据预取,HMCSP 相比于未修改的 HMC 可以达到 49.7% 的传输延
迟降低。
而不规则的访存模式的典型应用之一则为图遍历(Graph Traversal, GT)。图遍
历被广泛的应用于地图规划、社交网络分析等等日常场景中。由于图遍历的访存
密集型特征,处理这类应用程序对目前常规的存储系统提出了巨大的挑战。加之
图遍历本身极差的空间局部性以及处理数据量的快速增长,图遍历比以前所需要
的处理时间更长。一种缓解这种时间消耗的有效方法就是使用数据预取,这种方
法是在已经预料到具体所需要的数据的基础上从 CPU 流出访问 DRAM 的预取指
令。然而由于图遍历中强烈的数据依赖以及预取所需要的大量的数据移动,传统
的预取方法对于此应用的加速效果并不好。本章提出了 CGAcc(CSR-based Graph
Traversal Accelerator on HMC),这是一种利用存储内预取及处理加速基于 CSR 的
图遍历的方法。基于 HMC 的三维结构,CGAcc 部署在其逻辑层上以利用其 PIM
部件以及很短的传输延迟,并通过将预取流水线化来提高存储层次的并行。充分
的实验表明 CGAcc 在提高图遍历性能上十分有效,与基准相比 CGAcc 可以达到
3.6X 的性能提升,而且硬件开销较小。

5.1 引言

大数据时代已然来临,对于计算机系统来说最为明显的影响就是当前的访存
密集型应用程序对于当前的存储系统带来了更大的压力,并提出了更高的要求。
这在客观上也存进了存储技术的进步,促使多种新的优化的技术的出现。最近若

第 97 页
国防科技大学研究生院博士学位论文

干年,许多全新的存储技术与架构被提出来适应当前的大数据环境对存储系统的
低延迟、高带宽等要求,代表性的新架构包括 Wide-I/O、全缓存(Fully-Buffer)
DIMM、板上缓存(Buffer-on-Board)、高带宽存储(High Bandwidth Memory,HBM)
以及混合存储块(Hybrid Memory Cube,HMC) [52] 等等。相比与目前常用的传
统的 DDR4 存储系统,这些存储系统在性能上都有很大的提升。例如最新一代的
HMC 可以提供峰值为 480GB/s 的带宽,这个数值将近是 DDR4 带宽的 20 倍。
一般来说,新型的存储结构可以给访存模式比较规律的应用程序带来较大的
性能提升,尤其是结合预取或并行存储技术的时候。然而若访存模式并不规律,
那么若存储系统不经过任何优化的话,仅仅是低延迟与高带宽并不能给这一类应
用程序带来显著的性能提升,这是主要是因为这些程序难以预测的访存模式、非
常差的空间局部性以及在某些情况下访存指令具有数据依赖性。访存模式比较规
律的典型代表为稀疏矩阵相关的应用。在很多实际情况中很多数据结构都可以抽
象为稀疏矩阵,尤其是数值计算领域,稀疏矩阵相关的操作,例如系数矩阵与向
量相乘(SParse Matrix-Multiplication Vector,SPMV) [271],占据了大部分的数值
计算。而不规律访存的典型应用程序为图遍历,图遍历在现实生活也非常常用,
如路线规划、社交网络分析、基因图分析以及随机关系探测等等。由于图的独特
性,图遍历本身是非常耗时的,特别是当这个图非常大的时候,这种时间上的开
销也会相应的相当大。而非常大的图在实际生活中也非常常见,例如加利福尼亚
州公路网络就有大概两百万节点,在小节 5.2.4中展示了图遍历运行时的 Cache 失
效率以及访存停滞率。
而在存储层次内进行优化最常用的方法就是预取,其通过学习应用程序的访
存模式来保持相对较高的预取准确率来降低很高的存储传输延迟,对访存密集型
应用的性能提升有很大的作用。对于访存模式比较规则的应用程序,预取比较容
易发挥其作用。而对于访存不规则的程序,预取的作用就大大的打了折扣。图遍
历之类的应用程序的访存模式都是典型的不规则、非线性以及依赖于数据的。因
此,这一类的程序对于传统预取器来说难以预测,也就难以发挥预取器的优势。
之前的许多文献中也报道了一些经典的预取器,例如偏移预取器、指针预取器等,
在应对类似于图遍历应用程序时效率很低 [272] [273]。此外值得一提的是,一些
并行运行架构(例如 MapReduce)以及支持并行化的硬件设备(例如 GPU)并不
能很好的加速访存不规则程序 [274],这主要是因为访存不规则的程序本质上的不
容易并行化 [275]。
但是很幸运的一点是,图遍历程序本身的定义很简单也有固定的原则,可以
被预取技术利用。这个原则可以描述为:当前访存指令所取的数据即为下个访存
指令即将访问的地址。因此基于已经得知将要访问的数据位于何处这个事实,优

第 98 页
国防科技大学研究生院博士学位论文

化的重点应该集中在如何尽早的将数据取回。之前的许多工作(在小节 5.2.5中有
详细阐述)将优化工作集中在传统的层次结构中,例如将一个优化的预取器放置
于 Cache 层次中。这种情况中存储系统就只是被看作一个负责存储的被动接受指
令的设备,尽管这种优化方式至今仍是主流,仍旧有很多难以解决的问题,例如
过度预取、Cache 污染、难以平衡预取指令与访存指令等。
但是三维存储系统的出现,存储层之下会堆叠一层逻辑层,从而使得存储系
统相比于之前的存储系统有更多的可能变得更“聪明”。逻辑层可以处理一些简单
的原子逻辑计算以及存储控制任务,这也为存储内计算提供了可能性基础。在本
章中,我们仍旧使用在章 4中使用的三维存储系统 HMC 作为加速器,当前版本的
HMC 可以提供低访存延迟与高带宽,并且在存储层中继承了逻辑层,因此 HMC
可以看作为具有计算功能的存储控制器。本章提出了 HMCSP(CSR-based SPMV
in Hybrid Memory Cube)与 CGACC(CSR-based Graph Traversal Accelerator)两个
工作,使用 HMC 分别对访存模式比较规则的 SPMV 程序以及访存模式不规则的
GT 类程序进行优化。无论是 SPMV 中的矩阵或是 GT 中的图在本章的工作中都是
用了 CSR(Compressed Sparse Row)结构,这是一种存储矩阵数据的压缩型结构,
可以有效地降低存储开销,而且对于日常应用的大型图也能完美适用。之前的一
些工作也证明了相比于其他的压缩格式,CSR 更为高效 [276]。将 HMC 作为基准
进行实验,实验结果表明 HMCSP 可以有效地降低 49.7% 的访存延迟。而 CGAcc
可以达到 3.6X(峰值为 8X)的加速比,并且硬件开销并不大。
本章的主要工作如下:
1)仔细分析了 SPMV 以及 GT 的工作原理与性能瓶颈,分析使用三维存储系
统优化 SPMV 以及 GT 的可能性,并针对程序的特征进行设计优化。在本章的所
有设计中,存储部件在整个系统中是作为可以自我控制的活跃部件出现的,而不
是像之前工作那样的被动接受指令的部件或者是协处理器。
2)分别针对访问模式较为规律的 SPMV 应用程序与访问模式不规律的 GT 应
用程序进行优化,设计了 HMCSP 与 CGAcc。两个工作都充分利用了应用程序的
访存特征以及三维堆叠存储系统的本身优势。HMCSP 扩展了 HMC 的 PIM 能力,
并依赖这种能力有效降低了访存传输延迟;CGAcc 在逻辑层部署了以流水线形式
进行工作的预取器组以增强 HMC 逻辑层的图计算处理能力,可以有效降低传输
延迟以及数据移动开销。
3)针对 HMCSP 与 CGAcc 进行了全面的测试。大量且全面的实验结果表明
使用 HMC 对程序进行优化是一种效果很好,应用前景很广泛的方法。HMC 可以
在开销较低的情况下有效的提高性能。

第 99 页
国防科技大学研究生院博士学位论文

5.2 相关背景知识

关于 HMC 的相关背景知识已经在章节 2与 4.2有详细叙述,在此不再赘述。


本章的相关背景知识涉及到以下几个小节:

5.2.1 基于 CSR 的矩阵与向量相乘

SPMV-CSR(num row, ptr, index, data, x, y)


1 for i = 0 to num row
2 row start = ptr[i]
3 row end = ptr[i + 1]
4 for jj = row start to row end
5 y[row]+ = data[jj] ∗ x[index[jj]]
图 5.1 基于 CSR 的 SPMV 执行流程伪代码

在本章的工作中,无论是 SPMV 中的矩阵或是 GT 中的图都是以 CSR 的形式


保存的,这也与实际相符,因为以 CSR 形式存储的数据可以有效的降低存储开销。
基于 CSR 的 SPMV 主要用到了三个数组:1)data。这个数组用于保存原始数组
中的非零数据。2)index。这个数组用于保存 data 数组中每个元素的列索引。3)
ptr。用于保存每行数据中第一个元素的索引。图 5.1展示了基于 CSR 的 SPMV 的
过程。值得注意的是,图中的 x 数组保存的是向量数据而 y 数组保存的是最终的
结果。SPMV 的过程中会首先访问 ptr 数组,从而取得即将访问的那一行数据的范
围,在这个过程中取到的两个操作数传输回 CPU。当乘法操作做完之后,CPU 将
从数组 y 中取数据,再进行加法操作,得到的最终结果会传输回内存。

5.2.2 基于 CSR 的图遍历

对于基于 CSR 的图遍历,有三个数组会被用到 [271]。这三个数组分别为


vertex、edge 与 visited,这三个数组中存储的都是后面访存指令将要用到的索引而
非指针。图 5.2与图 5.3分别描述了基于 CSR 的图遍历的工作流程以及伪代码。当
前工作节点的索引(假设为 index)会指明后面针对 vertex 数组进行读取的两条指
令地址:分别为 index 与 index + 1。而根据这两个地址从 vertex 数组中所取得的数
据则意味着将从 edge 数组中取得的数据的索引范围。类似的,从 edge 数组中取得
的数据也会将被作为访问 visited 数组的索引。最后 visited 数组将被访问,从而判
断即将访问的节点是否已经被访问过,若没有被访问过,那么这个节点将被作为
新节点处理。

第 100 页
国防科技大学研究生院博士学位论文

0-1 1-7 Work List Vertex Edge Visited


0 1 7 5
4
0
2
1
2
False
True
3-0
0-2 2-0
4-1 1 3 7 True
2 5 0 True
3 4-3
3 7 6 True
2 4-2
4 7 10 0 True
2-6 6-2 11 1 True
3-0 12 1 False
12 2
6 5 3
4
2
图 5.2 基于 CSR 的图遍历流程

CSR-BASED GRAPH TRAVERSAL


(W orkList, V ertex List, Edge List, V isited,
V ertex cnt, Edge cnt, Root)
1 for Cur N ode = Root to V ertex cnt
2 if V isited[Cur N ode] : Continue
3 V ertex.push(Cur N ode)
4 V isited[Cur N ode] = T rue
5 while V ertex.Empty() == F alse
6 V ertex Index = V ertex.top()
7 V ertex.pop()
8 Edge Start = V ertex List[V ertex Index]
9 Edge End = V ertex List[V ertex Index + 1]
10 for Edge Index = Edge Start to Edge End
11 V isited Index = Edge List[Edge Index]
12 if !V isited[V isited Index]
13 V ertex.push(V isited Index)

图 5.3 基于 CSR 的图遍历伪代码

5.2.3 传统的预取技术

1)偏移预取器。偏移预取器是一种传统的预取技术,根据一个预先定义好的
偏移数据,相对于当前正在访问的数据地址预取数据。对于连续且规则的访存模
式,例如数组或者矩阵结构,偏移预取器可以运行得很好。而对于类似图计算这
种访存模式极其不规则的应用程序,偏移预取器的效果则并不好,有时甚至可能
会降低性能。有之前的工作报道称当在 L1 与 L2 两级 Cache 上均部署一个偏移预
取器时,所带来的性能提升仅仅只有 17% [277]。
2)流预取器。流预取器是基于访存模式历史信息而工作的。在每一段时间窗
口 CPU 都会对许多指令地址流进行取样。具有相似访存模式的若干访存指令流会
激励预取器根据保存的地址流信息流出一条预取指令。由于存储指令的访存模式

第 101 页
国防科技大学研究生院博士学位论文

1B3UHI 3UHI

1RUPDOL]HG3HUI






:LNL &$5RDG
\RXW
XEH (PDLO *RRJOH:DWVRQ PD]RQ '%/3
$ .QRZ *PHD
Q

图 5.4 有无流预取器时图遍历的性能比较

依赖于空间局部性,一般都有可重复性,因此这个机制可以运行得很好。图 5.4展
示了一组比较在 L2 级 Cache 有无流预取器的平台上运行相同图编历程序的性能
情况。结果表明在最好的情况下,流预取器也只能带来 6.5% 的性能提升。尽管
性能提升非常有限,根据之前工作的报告,流处预取器仍旧比偏移预取器好了约
5% [277]。基于这些结果,在实验中,基准结构就被设定成在 L2 层 Cache 上部署
了流处理器的两层存储系统。
3)软件层次的预取。一些软件框架可以通过由程序员或编译器进行注解而对
某些适用于预取的关键代码段进行预取支持。对于图遍历之类的程序,软件预取
能带来的性能提升则非常有限。由图 5.3中的伪代码可知,所有读操作都会引起访
存停止。与其他预取机制类似,不准确的软件预取也会导致很多额外的访存指令,
从而使得存储内资源争夺的加剧,或者污染 Cache 等等。

5.2.4 图遍历程序的运行瓶颈

Nstall Stall
Stall Distribution

100 Wiki CARoad youtube Email Google watson Amazon DBLP Know Gmean

75
50
25
0
Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

Npre
Pre

图 5.5 有无流预取器时图遍历程序执行时的访存停滞率

图遍历程序是一种典型的访存不规则程序,因此由于非常差的空间局部性,

第 102 页
国防科技大学研究生院博士学位论文


1B3UHI 3UHI


/0LVV5DWH






:LNL &$5RDG
\RXW
XEH (PDLO *RRJOH:DWVRQ PD]RQ '%/3
$ .QRZ *PHD
Q

图 5.6 有无流预取器时图遍历的 L1 失效率

这一类程序的性能被大量的 Cache 失效与访存停止所限制。在基于 CSR 的图遍


历程序中,唯一的空间局部性仅仅存在于用 vertex 中的数据访问一系列的 edge
数据。为了证实这个观点,我们测试了从 SNAP 数据集中选取的九个图例 [278]。
图 5.5展示了对于遍历这些图而导致的停滞率,可以看出几乎所有的图例都有非
常高的停滞率,平均来说都达到了 90%。图 5.6中展示了遍历这些图所导致的 L1
失效率,可以看出平均来看 L1 失效率达到了 58.9%。而图 5.4的结果也说明流预
取器的部署并不能给性能带来质的区别,也就大概 7.2%。根据之前的研究中报
告,访问 edge 数组是导致 Cache 失效的主要因素,而在实际情况中,edge 数组一
般至少是其他两个数组的几倍甚至几十倍那么大,这也就导致了很多的 Cache 失
效 [277]。实际上其他两个数组也会引起很多的失效,这主要是因为这些对这些数
组的访问都是以一种数据依赖的顺序进行的。如此高的失效率也直接的导致了较
低的性能。

5.2.5 本章相关工作

1)图处理相关的预取工作
有很多工作都试图使用预取技术来加速图处理类应用程序。由于图遍历中的
访存操作类似于 A[B[i]],这是一种典型的非直接不规则的访存行为。Yu 等人提出
了一种有效硬件非直接存储预取器(IMP)来学习访存模式以隐藏延迟 [279]。本
质上来说 IMP 是一种间接性的偏移预取器,由于图计算中数据的存储并非是间接
偏移类型,因此实际上效果比较有限。针对 GPU,Lakshminarayana 等人提出了一
种空闲寄存器感知的预取方法 [280],这种方法主要用于处理读取指令对且指令之
间是有依赖关系的,这种指令对在图计算中非常常见。当目标指令被检测到之后,
控制器就会流出对其有数据依赖的预取指令,并将预取的数据放入空闲的寄存器
中以用于未来的访问。基于图遍历中可以预测访存模式的特性,Nilakant 等提出

第 103 页
国防科技大学研究生院博士学位论文

了 PrefEdge 方法 [281],这种方法使用一种“向前看”的函数来决定将来可能会用
到的访存映射地址,并根据预测的地址将数据从 SSD 移到内存。Ainsworth 等人
提出了一种图遍历专用预取器 [277]。通过监控流过 L1 cache 的数据并合理地平衡
预取指令与访存指令分别所占用的时间,这个预取器可以较为及时地预取到需要
用的数据。Zhang 等人提出了 Minnow 引擎来增加处理器 [282]。Minnow 包括两个
部分:工作列表转移与以工作列表为导向的预取。通过将工作列表相关操作转移,
可以将关键路径上的一些调度移出以提高性能;以工作列表为导向的预取是用于
针对工作列表调度决定来流出针对性的预取指令。综上所述,普遍来说这些工作
的核心思想是在闲暇时间提前将数据取到,这和 CGAcc 的设计思路还是有区别
的。据我们所知,CGAcc 是第一个为基于 CSR 的图计算所设计的,使用 HMC 作
为主题来加速图遍历的工作。
2)指针相关预取
也有很多工作专注于加速非 CSR 表示的图计算相关应用程序。Cooksey 等人
提出了一种内容导向的数据预取技术 [272]。这个技术会针对在访存引用中观察到
的虚拟地址针对性的进行预取。此技术的加速比比较一般,这是因为它并不能避
免过度预取带来的 Cache 污染问题。Al-Sukhni 等人优化编译器配置来优化以内容
为导向的预取 [283]。Ebrahimi 等人提出了一种低开销的软硬件结合的技术 [284],
这个技术分成两部分:以编译器为指导的预取过滤机制以告知硬件所需预取的地
址;以及一种预取限制机制,在混合预取器系统中基于实时的系统反馈管理多个
预取器。Roth 等人提出了一种动态预取机制 [285],这种机制会学习访存模式并探
索生产者读取以及消费者读取之间的关系。Lai 等人提出了一种基于硬件的指针
数据预取 [286],通过分辨并存储指针读写指令,预取器可以预取猜测的虚拟地址
指向的地址并将数据放在缓存中。由于受图表示方式的限制,这些工作的加速都
比较一般。
3)使用 HMC 作为加速器
作为一种全新的三维存储系统,HMC 除了作为常规的内存结构之外还可以
用作为加速器。前面一些工作使用存储内计算技术将任务从 CPU 转移到内存上
运行。Kim 等人提出了 neurocube [287],这是一种部署在 HMC 的逻辑层上的可
编程可扩展的神经网络体系结构。基于以存储为中心的计算原则,neurocube 涵
盖一系列有 2D 麦氏网络连接的处理单元以便进行更有效的神经网络计算。Dai
等人提出了 GraphH [288],旨在使用 PIM 结构来进行图处理。结合了大量的片上
额外硬件以及优化的算法支持,GraphH 可以获得比较大的加速。Nai 等人提出了
GraphPIM [289],这个工作与 GraphH 相似,但是开销更低。还有其他的一些工作
也是相同的概念,但是优化的领域不同 [290] [291]。基于三维存储系统,Hong 等

第 104 页
国防科技大学研究生院博士学位论文

人提出了一种全新的近数据处理(NBP)结构来优化链表遍历(LLT) [292]。这
个设计包括了 NDP 感知的数据本地化以及 LLT 打包来降低传输延迟并提升性能。
普遍来说这些工作都将 HMC 当作可以承担部分计算任务的协处理器。比较起来
CGAcc 将 HMC 当作更为聪明、可以主动承担任务的设备,而且 CGAcc 是优化以
CSR 为表示方式的图例,从以较低的开销获得更好的性能加速。
4)加速图计算的结构
之前也有一些工作为加速图计算专门设计了定制化的架构。Xu 等人基于
FPGA 提出了 OmniGraph 来作图遍历 [293],除此之外还有针对单源最短路径、多
源最短路径、并行宽度优先搜索以及强连通算法的架构 [294][295][296][297]。Ham
等人提出了域指定的 Graphicionado [298],探索了以数据结构为中心的专业化数
据路径并专业化了存储子系统。Dogan 等人提出了一种共享的存储多核体系结
构 [299],通过将硬件级别的信息传递指令放入指令集,这个设计可以加速同步原
函数并有效地将计算任务转移到存储系统上。Song 等人提出了 GraphR,这是一种
基于 ReRam 的图处理加速器 [300]。

5.3 基于存储内计算的应用加速
本节展示了使用三维堆叠系统针对上述提出的两个点所进行的优化工作,分
别是 HMCSP 与 CGAcc。由前所述,在本章中使用 HMC 来进行优化。而 HMCSP
与 CGAcc 都集成在逻辑层,利用逻辑层与存储层之间的低延迟与逻辑层对原子计
算的支持来提升性能。

5.3.1 用于加速矩阵乘的 HMCSP

为了简化讨论,在实验中假设矩阵数据存储在 HMC 中而向量数据是存储在


Cache 中。这与实际情况也是相符的,因为一般情况下向量数据并不是很大,很可
能与矩阵数据都不在一个数量级。HMC 的逻辑层支持简单的原子计算操作,这也
是设计 HMCSP 的主要支持点,可以利用 HMC 的 PIM 进行 SPMV 中大量的乘法
与加法操作。在 HMC 上的原子操作是一种读取 -修改 -写操作,这也就意味着对
于双操作数的操作数,其中一个操作数(D0)来自于此存储层次,而另一操作数
(D1)来自于上层存储设备。而由于这个限制,HMC 上的 PIM 部件就不能直接在
逻辑层完成计算操作。
HMCSP 的解决办法是使用预取技术预先将即将要用到的 D1 取到。以真实的
HMC 硬件为基础,图 5.7展示了 HMCSP 的设计结构。HMCSP 分别在 CPU 端的
HMC 控制器层与逻辑层部署了两个预取器(P0,P1),一个乘法器(由于 HMC 本
身具有加法功能,因此不用部署加法器)以及四个寄存器(R0,R1,R2,R3),其
中 P0,R0,R1,R2 是部署在 CPU 端的存储控制器上的。P0 用于精确的从 HMC

第 105 页
国防科技大学研究生院博士学位论文

MC HMC
R3
R2 SEND SEND DRAM Layers
R1 P1 PREFETCH
R0
SEND

ATOMIC OPERATOR

PREFETCH

Logic layer ADD Multi


P0

图 5.7 HMCSP 的结构示意图

HMCSP Operation
(P 0, P 1, R0, R1, R2, R3,
numr ow, ptr, index, data, x, y)
1 for i = 0 to numr ow
2 R2 = ptr
3 R3 = ptr
4 // Prefetch and PIM Operations can be implement in parallel
5 while Check(CurAddr, R2) == T rue
6 P 0.P ref etch(R0, index[CurAddr])
7 P 1.P ref etch(R1, y[CurAddr])
8 P IMM U LIT (RES, x[R0], data[CurAddr])
9 P IMA DD(y[CurAddr], R1, RES)
10 CurAddr+ = Of f set

图 5.8 HMCSP 的伪代码示例

中取得 index 数组中的数据并存入 R0。R2 用于存储 ptr 数组的地址,存储控制器


会根据 R2 中存储的值判断当前访存地址是否在 ptr 数组之内。如果在的话,就
意味着还会有乘法操作,那么存储控制器就会流出一条预取指令以取得 index 数
据取入 R0,而后回流出一条 PIM 指令完成乘法操作。此 PIM 指令的操作数之一
是根据 R0 从 Cache 中取得操作数 D0(即 x[index[jj]]),在到达逻辑层之后再从
HMC 的 DRAM 层取得操作数 D1(即 data[jj]),而后完成乘法操作并将结果暂存
在 DRAM 层。P1 主要用于将即将访问的 y 数组的数据预取出来并放在 R1,而 R3
的设置与 R2 的设置功能相同,都是为了判断是否需要流出预取指令。当每次对 y
的预取完成且数据被放在 R1 上,存储控制器会完成加法的 PIM 指令。这个 PIM
指令的 D1 即为 R1 中的数据,而 D0 为乘法运算的结果。在 HMCSP 中,得益于
HMC 的高带宽,P0 与 P1 可以并行的执行预取操作以掩盖延迟。由于目前版本的
HMC 逻辑层上尚未支持乘法运算,在 HMCSP 需要部署一个乘法器以支持乘法操
作,这里的乘法器和加法器结构基本一致,区别就是乘法器所作的运算比加法器

第 106 页
国防科技大学研究生院博士学位论文

所作的运算所需时钟周期更长。通过结合 PIM 与数据预取技术,HMCSP 可以有


效的降低延迟。通过预取,存储控制器可以使用延迟更低的原子计算指令来进行
计算操作,而不是使用更多的取数据指令来将数据在 CPU 与 HMC 之间来回移动。
相比于未经修改的 HMC,HMCSP 可以隐藏 PIM 延迟与部分预取的延迟,同时也
减少了很多取数据指令,进一步节省了延迟。HMCSP 的伪代码示例如图 5.8所示。

5.3.2 用于加速图遍历的 CGAcc

Vertex Edge Visited

Baseline Vertex 1 Edge 3 Visited 3 Edge 4 Visited 4 Vertex 3

CGAcc Vertex 1 Edge 3 Visited 3 Vertex 3


Edge 4 Visited 4

t1 t2 t3 t4 t5

图 5.9 图遍历的示例时间线

CGAcc 中集成了许多个关键部件,包括寄存器组,缓存组以及控制器组等,在
下面会有详细描述。图遍历中的访存指令可以根据访问的目标数组(vertex,edge,
visited)而分成三个部分,而访问不同的目标数组的指令之间数据独立且从本质上
是可被流水线化的。CGAcc 使用不同的预取器以一种流水线的形式来处理不同的
指令以隐藏传输延迟,此外 CGAcc 也在逻辑层部署片上 Cache 来进一步降低传输
延迟。以图 5.2中的图遍历为例,图 5.9展示了使用传统结构与 CGAcc 的时间线上
的区别。这个比较也说明了这些访存指令是可以覆盖的,例如在时间槽 t3 与 t4 内
对于不同节点的访存指令就可以分别独立的预取,但是在传统的存储结构中就必
须串行实现。在 CGAcc 中,CPU 所需要做的就是发送一条启动指令以及在遍历的
过程中接收中间结果,而其他的所有工作,包括地址计算与访存操作都是在 HMC
的逻辑层内进行。地址的计算是非常简单的,逻辑层足以胜任的,这些 PIM 操作
可以有效地避免那些从 CPU 到存储的无用的数据移动,因此也不会污染 Cache。
更重要的是,CGAcc 可以在毫无 CPU 干涉情况下利用其内在的并行性以及高带
宽来进行图遍历。因此 CGAcc 克服了传统存储结构中非常低效的串行模式,从而
提高访存性能。下面对 CGAcc 的设计部件进行详细阐述。
1)CGAcc 中部件组成
如图 5.10中展示的那样,CGAcc 中所包括的部件如下:
1)寄存器组。这是 CGAcc 中一些寄存器的集合,用于存储图遍历过程中的

第 107 页
国防科技大学研究生院博士学位论文

DRAM LAYER
VC0 VC1 ĊĊ VC32
LOGIC LAYER
CGACC

Switch
Link 0 Link 1 Link 2 Link 3
CPU SIDE

GCAcc
PB
Register
Groups

VEP EP VSP

VEB EB VSB

VEC EC VSC
On-chip Cache Group

图 5.10 CGAcc 的总体结构

中间数据以及状态信息等等。其中,激活寄存器(Activation Register,AR)用于
启动 CGAcc。当开始一个遍历操作时,CPU 就会向 HMC 发送一条激活指令,其
中包含开始节点的索引作为图遍历中的根节点。继续寄存器(Continual Register,
CR)用于保存当前遍历到的最大的节点索引。需要这个寄存器的原因是一般来说
一个图可以被视作一个森林,而当森林中的一个树遍历完成的时候,需要指导接
下来要遍历的树的根节点。结束树寄存器(End Tree Register,ER)用于标识当前
树是否已经遍历完毕。
2)预取器组。这是 CGAcc 中的核心部分。由于 CSR 的表示方法将图分为
了三个数组,而这三个数组中的数据都会独立的被预取器访问到。因此,预取器
组中有如下预取器:Vertex 预取器(VEP),Edge 预取器(EP)以及 Visited 预取
器(VSP)。从功能上来看,VEP 在刚开始或图中的一个树遍历完成的时候接受一
个新节点的索引,并访问 visited 数组,根据所取到的节点状态来判断是否需要取
vertex 中的数据。VEP 通过读取 AR 来开始整个图遍历过程,在当 ER 标识当前所
遍历的树遍历完成之后,VEP 会读取 CR 中的数据来开始遍历另一颗树。在其他

第 108 页
国防科技大学研究生院博士学位论文

情况下,VEP 不间断的接受从 VSP 传输来的已经确定的新节点。当 vertex 数据被


取到之后,VEP 会向 EP 发送一些取 edge 数据的指令。在每一条 edge 数据(伴随
着扩展出来的节点)被取到之后,EP 将发送一些访存指令到 VSP 来访问 visited
数组,从而判断此扩展出来的节点是否是一个新节点,继而判断是否需要传送到
VEP。实际上,判断扩展的节点是否是新的节点是可以通过监控是否存在写指令
来做到。唯一可能对 visited 数组流出一条写指令的情形就是已给新节点(也即之
前从未被访问过的节点)被访问到的情况,在这种情况下新节点对应的 visited 数
组需要从 false 被改写为 true。在这种找到了一个新节点的情况下,这个节点将作
为扩展出来的节点被传输到 VEP 用于接下来的图遍历。
3) 内部 Cache 组。这部分硬件用于减少传输延迟。Cache 组根据所缓存目标数
组也被分成三个,即 Vertex Prefetch Cache(VEC), Edge Prefetch Cache(EC)以及
Visited Prefetch Cache(VSC)。这些 Cache 中分别缓存了 vertex、edge 以及 visited
数组的部分数据。当预取器流出访存指令之时,这条指令首先根据目标数组而访
问特定的 Cache,如果在 Cache 层命中则直接就从 Cache 层中取得数据,否则则从
相应的存储在 DRAM 层的数组中取得。这些 Cache 中 EC 与 VSC 使用的是传统的
LRU 替换策略,而 VEC 使用的是优化的替换策略,这个替换策略在小节 5.3.2中
有详细叙述。尽管这些预取器是独立工作的,他们对 Cache 的访问却是共享的。
这些 Cache 虽然是根据不同的数组分别存储数据,但预取器在运行时可以根据需
求随意访问任意的 Cache。例如 VEP 不仅仅会访问 VEC 中的数据,也访问 VSC,
因为 VEP 在实时运行之时涉及到 vertex 与 visited 数组。
4)先入先出(FIFO)型 buffer。每个预取器都配备了相应的 FIFO buffer,分
别为 VEB,EB 与 VSB。每个 buffer 都由若干个入口用于存储地址信息,当相应
的地址被访问到后,此地址将被从 buffer 中弹出。对于不同的 buffer,存储地址的
形式也不尽相同。在 VEB 中每个入口存储一条地址,VEP 会使用这条地址流出两
条指令;EB 中每一个入口会存储一个地址对(Addrs,Addre),EP 使用这个地址
对来流出多条访存指令;VSB 中的每个入口存储一条指令而 VSP 会使用这条地址
流出一条访存指令。
2)CGAcc 运行时操作
图遍历具有一个很独一无二的特征,就是当前访问的数据将用作下次访问
指令的地址,这也就意味着下一次访问的节点就可以提前得知。然而根据小
节 5.2.2中所示,要确定下一个要访问的节点需要三次读取操作,在传统存储系统
中,当访问 vertex 数组的指令执行结束之后,访问 edge 与 visited 数组也会连续
且串行地流出直到所有被扩展的节点都被访问到,这个操作也非常的耗时。实际
上所有的存储指令都可以按照访问目标数组而分为三个集合:访问 vertex 数组的,

第 109 页
国防科技大学研究生院博士学位论文

访问 edge 数组的以及访问 visited 数组的,而这些指令从本质上来说是可以流水线


化的。CGAcc 通过令寄存器组以一种流水线形式工作,从而合理利用图遍历的这
种属性。此外地址计算等一些涉及到的简单计算工作也是在寄存器组内进行的。

表 5.1 CGAcc 中时间与动作对应列表

Event Action
ActiveCGAcc
AR = T rue V EB.insert[CR]
VEP AR = F alse
P ref etchAddr(V ertex[n])
P ref etchAddr + Of f set(V ertex[n + 1])
V EB[top] = Addr EvictV EB[top]
EB.insert(V ertex[n])
CR = M aximum(CR, Addr + Of f set)
V EB.insert(CR)
ER = T rue
ER = F alse
W hile Addrs! = Addre
P ref etchAddrs[Edge[n]]
EP EB[top] = {Addrs, Addre} Addres+ = Of f set
EvictEB[top]
V SB.insert(Edge[n])
P ref etchAddr[V isited[n]]
EvictV SB[top]
VSP V SB[top] = Addr If V isited[n] == F alse :
CalculateN ewAddr
V EB.insert(N ewAddr)

图 5.11展示了 CGAcc 的伪代码实现。CGAcc 使得 HMC 以一种更为主动的姿


态,而非像以前那样仅仅是用于存储数据以及接受访存指令。当接收了启动指令
后,CGAcc 会一直取数据而直到所有的图节点被访问完全,同时当找到新节点之
后,遍历的结果就被逐渐确定,而这个结果也会被逐渐传输回 CPU。表 5.1详细描
述了 CGAcc 运行时的操作,左边为事件列,而右边为操作列,指的是事件可能会
引起的操作。如表中所示,当图遍历开始,CPU 会设置 AR 值。而当 VEP 探测到
AR 值之后,会使用 CR 与 CR+offset(这个 offset 值与 vertex 数组的数据结构相吻
合)两个值作为接下来访问 vertex 数组的两条指令地址。这两条访存指令在取得
数据后会以数据对的形式存入 EB,而 EP 在流出指令之时会取 EB 顶部数据对的
第一个元素作为指令地址,相应的这个元素值会被加上 offset。一旦此数据对的两

第 110 页
国防科技大学研究生院博士学位论文

CSR-BASED GRAPH ACCELERATOR


(V EP, EP, V SP )
1 while Task.Complete == False
2 V SP.U pdate(AR, CR, ER, V EB, EB)
3 EP.U pdate(EB, V SB)
4 V EP.U pdate(V SB, V EB)

VSP UPDATE
(AR, CR, ER, V EB, EB)
1 if AR == T rue and CGAcc.Active == F alse
2 ActiveCGAcc
3 else Continue
4
5 if ER == T rue
6 V EB.insert(CR)
7 ER = F alse
8 while V EB.Empty == F alse
9 Addr = V EB[top]
10 P ref etch(Addr)
11 P ref etch(Addr + Of f set)
12 EvictV EB.top
13 EB.insert(V ertex[Addr])
14 CR = M AX(CR, Addr + Of f set)

EP UPDATE
(EB, V SB)
1 Addrs, Addre = EB.top
2 while Addrs! = Addre
3 P ref etchAddrs
4 Addrs+ = Of f set
5 EvictEB.top
6 V SB.insert(Edge(Addr))

VSP UPDATE
(V SB, V EB)
1 Addr = V SB.top
2 P ref etchAddr
3 EvictV SB.top
4 if V isted[Addr] == F alse
5 CalculateN ewAddr
6 V EB.insert(N ewAddr)
图 5.11 CGAcc 的伪代码示例

个元素值相等,那么说明此数据对中的所有数据都被访问到了,因此此数据对被
弹出 EB。VSP 则取 VSB 的顶部的数据作为流出指令的地址,一旦被访问到,此
数据即被弹出 VSB。在指令发出之后会对数据进行布尔判断,若结果为假,则说

第 111 页
国防科技大学研究生院博士学位论文

此扩展出来的节点为新节点,HMC 上的逻辑层会计算出此节点对应在 vertex 数组


中的地址,并插入到 VEB 中。如此每个预取器都不停地从其对应的 buffer 中取得
数据来进行下一步的指令流出,当所有的 buffer 都空且 CR 中无可用的地址,就意
味着图中所有的节点都被访问到,图遍历也就停止了。
3)对片上 Cache 的优化
基于 CSR 的图结构为进一步的优化留下了空间,这里主要说的是 vertex 信息
可以被提前取到。由上面章节的描述可知,当有指令访问 visited 数组之时,也就
意味着在非常近的将来在 vertex 中的对应的节点也会被访问到。根据上述图遍历
的过程,如果一个全新的节点被访问到,那么就意味着对这个节点会有一条写指
令会紧跟着一条读指令流出。如果这个节点被确定为全新节点,那么紧接着就会
有一条读指令流出去取在 vertex 数组中对应的节点。因此当访问 visited 指令时,
CGAcc 会探测到这条读指令,同时会利用 PIM 部件根据访问 visited 数组的地址
来计算访问 vertex 数组所需要的地址。在计算完成之后,两条访问 vertex 的指令
会几乎和访问 visited 的指令一起流出。通过优化,由于数据非常有希望被及时的
预取到,访问 vertex 数组的指令几乎都会在 Cache 上命中。对于那种极其少数的
没有命中的情况,访问 vertex 的指令就仅仅只需要等待预取的指令将数据取回并
插入 Cache。
这个优化需要一些额外硬件的支持,这些支持包括两个寄存器:预取指令
顺序寄存器(Access Order Register,AOR)以及访问 vertex 顺序寄存器(Vertex
Order Register,VOR),这两个寄存器用于保证预取的数据可以按照正确的顺序
放入 VEC 中。AOR 用于为每一个预取指令记录一个顺序,AOR 的初始值设置为
1,当每次有访问 visted 数组的写指令被检测到时,AOR 的值便加 1。这里数据的
预取是乱序的,这也就意味着有时候预取回来的数据不一定就是下面即将用到的
数据。在这种情况下,数据将暂时存储在一个 buffer 中。VOR 则被用于标志访问
vertex 的指令顺序。VOR 的初始值设置为 0,当每对访问 vertex 数组的指令流出
时,VOR 的值加 1。将 AOR 与 VOR 的初始值分别设置为 1 与 0 的原因是每条预
取指令都在访问相同 vertex 节点的一对指令流出之前流出。
当预取的数据(在响应指令中,相应指令与其对应的请求指令有相同的顺序
信息)返回到 buffer(Prefetched Buffer,PB,用于存储 VEP 即将访问的数据)中
时,HMC 上的控制器会检测这条指令的顺序值是否与 VOR 相符。如果相符,预
取的数据就会从 PB 中弹出而插入 VEC。值得注意的是有时读 vertex 数组的指令
可能会直接在 VEC 命中,那么就会使得 VOR 的值大于 AOR 的值,这种情况下只
需要直接将预取的数据丢弃掉,并将 AOR 的值设置为 VOR 的值即可。
4)将 CGAcc 普通化

第 112 页
国防科技大学研究生院博士学位论文

CGAcc 的主要优化目标是基于 CSR 的图遍历中的宽度优先搜索(Breadth


First Search,BTS),但它仍然可以应用于其他以 CSR 图为基础且具有相似的访存
模式的应用程序。
1)类似于 BTS 的应用程序。准确的来说 CGAcc 应当属于一种指定域加速器,
可以用于加速许多应用程序,尤其是图计算相关的程序。CGAcc 对于与 BFS 有
相似访存模式的一系列应用程序效果也很好。其中一个典型的例子就是单源最短
路径问题(Single-Source-Shortest-Path,SSSP),尽管它与 BFS 目的不同,然而具
有十分相似的访存特征。传统的 SSSP 问题一般使用 Bellman-Ford 算法 [301](或
其衍生算法,SPFA [302])来消除负权值边的影响。本质上来说,这个算法是一
个松散过程,通过遍历所有的节点来松散源至任意节点的最短边。BFS 与 SPSS
之间最大的区别就是,BFS 对 visited 数组中任意一个入口的访问只会有且仅有一
次,而 SSSP 中对 visited 数组中的入口可能会有很多次访问,这是由 visited 数组
在两个问题中的定义不同导致的。其他类似的问题也包括连通分量(Connected
Components,CC)、Kcore、图染色(Graph Coloring,GC)问题等等。不需要通过
任何修改或者仅仅需要非常轻微的修改,CGAcc 便可处理这类问题。
2)串行迭代类应用程序。串行迭代是一种在图计算类程序中非常常见的访问
模式,这一类访存模式最显著的特征为在访问图中的点和边数据是是串行迭代的。
中心度问题(Degree Centrality,DC)、三角计数问题(Triangle Counting,TC)与
页面排序问题(PageRank,PR)都是具有这一类访存模式的典型问题。如果边数
据与点数据以一种顺序的方式存储,那么偏移预取器就可以很好的加速这类问题。
然而不幸的是,基于 CSR 的图表示方法中边值是由节点值索引的,这也使得数据
访问是数据依赖的且不规则,因此传统的预取器应付此类问题是较为低效的。可
是这一类程序仍与 BFS 类的程序有相似之处,为了加速这种程序所需要做的修改
仅仅是把调整 VSP 传输去 VEP 的下一个节点改为一个固定的偏移值,其不需要
任何额外的硬件开销。
3)其他访存模式类应用程序。CGAcc 也可以用于处理图遍历之外的应用程
序。CGAcc 利用 HMC 中逻辑层与 DRAM 层之间的低访存延迟来将尽量多的任务
放到 HMC 的逻辑层来减少数据移动。此外由于预取器是以流水线的形式协同工
作来提高效率,那么当访存密集型程序中存在明显的数据依赖时,这个程序就更
容易被以流水化的形式加速。例如上面所叙述的基于 CSR 的 SPMV 也可以使用
CGAcc 加速。通过将几乎所有的数据读取以及计算任务转放至逻辑层上,CGAcc
可以以流水化的形式来实现乘法操作以提高性能。对于其他的具有不同访存模式
的程序,CGAcc 也许需要调整更多(例如改变预取器的个数)来获取最好性能。
5)CGAcc 硬件开销分析

第 113 页
国防科技大学研究生院博士学位论文

综上所述,CGAcc 的硬件开销主要集中在五个方面:1)为了存储中间数据以
及状态的寄存器组;2)片上用于存储预取数据的 Cache;3)为每一个预取器配备
的用于访存地址的 buffer;4)PB,用于保存在优化 Cache 时预取的数据;5)预取
逻辑部件。其中片上的 Cache 与用于访存地址的 buffer 是最为主要的开销。由下
面小节中对 Cache 以及 buffer 的分析测试得知,CGAcc 对 vertex、edge 以及 visited
数组分别使用使用两个 64KB 以及一个 16KB 的直接相连映射 Cache。而 buffer 的
开销相对较小,约为 66KB。因此,CGAcc 在逻辑层上所需要的硬件开销仅仅为
210KB,这个开销是非常低的。

5.4 实验环境设置

5.4.1 系统设置

测试 HMCSP 与 CGAcc 都使用了与章 4的工作相同的 CasHMC 模拟器 [30]。


CasHMC 是时序的、访存轨迹驱动的,它能够模拟最新的 HMC。访存轨迹文件是
使用 Intel PIN [267] 工具收集的。在实验中所收集的访存轨迹仅仅涉及到程序运
行的关键部分,也就是说不包括数据结构的建立以及初始化等。对于 CGAcc,我
们也模拟了一个八核的顺序多处理器。CGAcc 中部署的 Cache 以及 Buffer 的相关
参数都是使用 CACTI 7.0 [268] 来评估。测试使用未经修改的 HMC 作为测试基准,
而 CGAcc 所对比的基准中使用了流预取器。
存储系统配成为一个有 32 个 vault 以及 4 条高速串行导线(30Gb/s)的 4GB
HMC [52],连接到 CPU 端的 HMC 控制器。HMC 内部的 32 个硅穿孔导线共享
10GB/s 的内带宽,也就意味着每个 TSV 有 2.5Gb/s 的带宽。HMC 时序参数根据
HMC 白皮书 2.1 版配置。详细配置在表 5.2中有列举。

5.4.2 测试程序

HMCSP 的测试程序矩阵来自于 armadillo 线性代数库 [303],这个库可以用于


产生均匀分布的随机系数矩阵。CGAcc 的测试程序来自于 Graph-BIG [304],而用
于测试的图例则来自于 SNAP 数据集 [278]。这些图例覆盖了不同的大小以及种
类,保证了测试样例的多样化。关于每个图的详细信息描述在表 5.3中有列举。

5.5 结果分析

本章分别对 HMCSP 以及 CGAcc 的性能进行测试,此外还对于设计中的各个


参数也做了敏感性测试。

第 114 页
国防科技大学研究生院博士学位论文

表 5.2 系统配置

Processor 8-core, 2GHZ, in-order


Cache L1 Cache: 32KB, 2-way
(for baseline) L2 Cache: 2MB, 4-way
close-page, 32 buffer size
Vault Controller
16 command queue size
4 SerDes link, 30 Gb/s lane speed
Link
480 GB/s max link bandwidth
VEC: 16KB, Direct-mapping, Latency: 0.15 ns
Power: 5.9mW, area: 0.03 mm2
On-chip cache
EC,VSC: 64KB, Direct-mapping, Latency: 0.3 ns
Power: 21.1mW, area: 0.07 mm2 For each
32 TSVs, 2.5 Gb/s
timing: tCK = 0.8ns, tRP = 10
HMC
tRCD = 13, tCL = 13, tRAS = 27
tWR = 10, tCCD = 4
On-chip buffer VEB, VSB: 1KB, EB, PB: 32KB

表 5.3 测试程序描述

Workload Vertex Edge Description


Wikipedia talk
Wiki 2,394,385 5,021,410
(communication) network
CA_Road 1,965,206 2,766,607 Road network of California
youtube 1,134,890 2,987,624 Youtube online social network
Email network from
Email 265,214 420,045
a EU research institution
Google 875,713 5,105,039 Web graph from Google
Watson 2,041,302 12,203,772 Watson gene graph
Amazon product co-purchasing
Amazon 262,111 1,234,877
network from March 2 2003
DBLP 317,080 1,049,866 DBLP collaboration network
Knowledge 138,612 1,394,826 Knowledge graph

5.5.1 HMCSP 相关结果及分析

1)HMCSP 性能分析
为了全面的测试不同类型的稀疏矩阵,我们在 HMCSP 上测试了 10 个案例。
这 10 个稀疏矩阵的行列数以及稀疏指数都是随机的,因此这些例子基本覆盖了各

第 115 页
国防科技大学研究生院博士学位论文

种情况。从图 5.12中可以看出,对于不同种类的稀疏矩阵,平均 HMCSP 可以有


效地降低 49.7% 的传输延迟。这是由于 HMC 的 PIM 能力可以用于避免将数据从
CPU 传输数据所带来的延迟,而且使用预取技术也可以有效地与 PIM 计算重叠以
隐藏延迟。

%$6( +0&63


7UDQVFDWLRQ/DWHQF\








         
 1
6( 6( 6( 6( 6( 6( 6( 6( 6( ($
6( B0
&$ &$ &$ &$ &$ &$ &$ &$ &$ &$ *

图 5.12 HMCSP 在随机的十个稀疏矩阵上运行访存延迟的比较


%$6( +0&63
3HUIRUPDQFH&RPSDULVRQ






         
 1
6( 6( 6( 6( 6( 6( 6( 6( 6( ($
6( B0
&$ &$ &$ &$ &$ &$ &$ &$ &$ &$ *

图 5.13 HMCSP 在随机的十个稀疏矩阵上性能的比较

图 5.13展示了 HMCSP 作用在基于 CSR 的 SPMV 的性能。SPMV 是一种典型


的访存密集型的应用程序,访存指令的拥塞很大程度上影响了总体性能。由于
HMCSP 减少了访存指令并良好利用了延迟更短的原子计算操作,CSR-SPMV 能
够在很大程度上被提升。与上面实验相同,对于性能的测试也是在 10 个随机的系
数矩阵上进行。与基准相比 HMCSP 平均提高了 99.1% 的性能。
2)对于矩阵参数的分析
对于矩阵参数的分析主要涉及到矩阵大小以及矩阵稀疏指数。图 5.14(a)展示
了在固定矩阵稀疏系数的情况下改变不同行列的性能变化。图中的五个应用程序
从左到右矩阵大小在增加,可以看出,随着矩阵大小的增加,HMCSP 效率越来越
高。将案例 1 与案例 5 比较的话,可以看出案例 5 比案例 1 多减少了 30.1% 的传
输延迟。这是由于随着保持矩阵稀疏指数不变而矩阵大小增加,总体访存指令数

第 116 页
国防科技大学研究生院博士学位论文

目会大大增加。这样一来 HMCSP 在处理更多指令时可以将更多的读取指令转换


为原子指令,即可以节约更多传输延迟。
 
%$6( +0&63 %$6( +0&63
3HUIRUPDQFH&RPSDULVRQ

3HUIRUPDQFH&RPSDULVRQ
 

 

 

 

 
         
6( 6( 6( 6( 6( 6( 6( 6( 6( 6(
&$ &$ &$ &$ &$ &$ &$ &$ &$ &$

(a) 在不同系数矩阵大小的情况下 HMCSP (b) 在不同系数矩阵稀疏系数的情况下 HM-


的传输延迟比较 CSP 的传输延迟比较

图 5.14 在不同系数矩阵大小以及稀疏系数的情况下 HMCSP 的传输延迟比较

与上面的实验相同,图 5.14(b)展示了针对不同的稀疏指数的测试结果。如图
所示,此实验仍旧测试了 5 个固定大小的随机稀疏矩阵,从左到右稀疏指数逐渐
增高(根据稀疏的定义,系数矩阵被限制在 0.1∼0.3。指数越高,矩阵越密集)。在
使用 HMCSP 的情况下,案例 1(稀疏指数为 0.1)在传输延迟上有 47.3% 的降低,
而案例 5(稀疏指数为 0.3)在传输延迟上有 44.8% 的降低。可以看出在固定大小
的情况下性能差距并不大,这也说明了稀疏指数相较于矩阵大小对于 HMCSP 处
理 CSR-SPMV 的性能影响更小。这是因为稀疏指数的改变并不能引起访存指令数
量大小的显著改变,因此在性能上也区别不大。

5.5.2 CGAcc 相关结果及分析

1)CGAcc 性能分析

%DVHOLQH &*$FF
3HUIRUPDQFH,PSURYHPHQW
















:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

图 5.15 CGAcc 与基准的性能比较

图 5.15展示了基准与 CGAcc 的性能比较。与基准结构相比,CGAcc 平均可以

第 117 页
国防科技大学研究生院博士学位论文

取得 3.6X 的性能加速。性能的提升得益于如下几个方面:1)预取器可以直接从
逻辑层以更短的时间访问到 DRAM 层中存储的数据。一般来说,逻辑层与 DRAM
层之间的传输延迟仅仅是从 CPU 访问 DRAM 层的传输延迟的一半。也就是说,
CGAcc 可以在离内存更近的距离以更快的速度处理数据。2)访存指令可以根据
其要访问的目标数组分为三个部分,每一部分都主要由一个预取器来处理(当然
这并非绝对,例如 VEP 主要处理 vertex 数组的数据,也会少量处理 visited 数组
的数据)。这种流水线化的工作方式可以隐藏传输延迟并提升存储级并行。3)片
上 Cache 的配置进一步降低了传输延迟。片上 Cache 是直接相连的,其大小由小
节 5.5.2中进行的参数分析实验而确定,访问片上的 Cache 只需要不到一个时钟周
期。在图 5.16中也展示了有无 Cache 优化的性能区别,平均来说在 Cache 上的优
化可以带来 4.5% 的性能提升。此性能的提升主要是由于即将被访问的数据已经被
较早的预取到了 VEC,因此可以加速整个图遍历过程。

1&DFKH237 &DFKH237
3HUIRUPDQFH,PSURYHPHQW










:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

图 5.16 CGAcc 有无 Cache 优化的性能比较


*UDSK3UHIHWFKHU &*$FF
3HUIRUPDQFH,PSURYHPHQW


















L O
LN DG XE
H DL JO
H
VR
Q RQ %/
3
RZ HD
Q
: 5R XW (P RR DW D] ' .Q P
&$ \R * : $P *

图 5.17 CGAcc 与 GraphPrefetcher 的性能比较

之前的工作描述了一种针对图遍历的预取器 Graph Prefetcher [277],这个工作


是针对传统的存储结构,而且预取器部署在 CPU 的 Cache 系统上。通过运行相同
的应用程序来比较 Graph Prefetcher 与 CGAcc 的性能。图 5.17展示了比较结果,与

第 118 页
国防科技大学研究生院博士学位论文

Graph Prefetcher 比起来 CGAcc 平均有 1.67X 的性能提升。值得注意的是不同的应


用程序性能提升差距比较大。例如对于 Web-Google 图例二者具有相似的加速比
(2.80X VS 2.88X)。然而对于 CARoad 图例加速比差距就比较大(1.9X VS 8.0X)。
这种加速比差距出现的原因是访存指令根据目标数组分类,而对于分配任务并不
均衡的情况来说,任务较重的预取器会成为瓶颈。因此 CGAcc 在处理稀疏矩阵时
效果更好,因为此时边和节点的数目差距更小一些,而现实生活中大部分的图实
例也是稀疏矩阵。Graph Prefetcher 对于任意的情况都有加速,CGAcc 相比之下加
速更好一些。
2)片上 Cache 对性能的影响
本小节对片上的 Cache 相关参数进行分析研究以确定最合适于系统的配置,
这里的参数指的是 Cache 大小以及相连度两项。表 5.4展示了在不同的配置下片上
Cache 的延迟。本质上来说,对片上 Cache 的访问延迟虽然数值相异,然而实际运
行时并没有什么区别,这是由于 HMC 的时钟频率为 1.25GHz,这也就意味着任何
小于 0.8ns 的访问都需要消耗一个时钟周期。片上 Cache 对于性能有至关重要的作
用,若在 Cache 上命中则可以大大降低访问延迟。因此片上 Cache 的命中率与访
问延迟直接影响到系统性能。为了简化,在实验中我们将 VEC,EC 与 VSC 设置
为相同大小。

表 5.4 不同片上 Cache 配置下的访问延迟(ns)

16KB 32KB 64KB 128KB


Direct-Mapped 0.167 0.227 0.316 0.431
4 Way-Set Assoc 0.420 0.454 0.464 0.523
8 Way-Set Assoc 0.753 0.779 0.812 0.868
Full Assoc 0.304 0.573 0.709 1.191


 .% .% .% .%


3HUIRQGLII&DFKH6L]H












:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

图 5.18 在 Cache 容量大小变化的情况下性能比较

图 5.18比较了不同片上 Cache 大小的性能情况,考虑到逻辑层的硬件开销问

第 119 页
国防科技大学研究生院博士学位论文

.% .% .% .%


9(&+LWUDWH












L O
LN DG XE
H DL O H
VR
Q RQ /3 RZ HD
Q
: 5R XW (P RJ DW D] '% .Q
&$ \R *R : $P *P

(a) VEC 的命中率比较

.% .% .% .%




(&KLWUDWH








L O
LN DG XE
H DL O H
VR
Q RQ /3 RZ HD
Q
: 5R XW (P RJ DW D] '% .Q
&$ \R *R : $P *P

(b) EC 的命中率比较
5
.% .% .% .%
96&KLWUDWH








L O
LN DG XE
H DL O H
VR
Q RQ /3 RZ HD
Q
: 5R XW (P RJ DW D] '% .Q
&$ \R *R : $P *P

(c) VSC 的命中率比较

图 5.19 在不同的片上 Cache 容量大小的情况下命中率比较

题,Cache 的大小限制在 128KB 以下。从结果可以看出,如预期所料,随着 Cache


大小增加,CGAcc 所带来的性能提升也在增加。以 Cache 大小设置为 16KB 时为
基准,当大小设置为 32KB,64KB 以及 128KB 时的加速比分别是 1.17X,1.51X 以
及 1.52X。由于性能与命中率紧密相关,图 5.19也显示了关于命中率的结果。可以
观察到,随着 Cache 大小的增加,EC 与 VSC 的命中率也在增加,而 VEC 的命中
率则显得很混乱,并无一般规律可循。这是由于 EC 与 VSC 都使用了传统的 LRU

第 120 页
国防科技大学研究生院博士学位论文

替换策略因此在命中率上也遵循一般认知上的规律。而由于在小节 5.3.2上已经描
述了对于 VEC 的优化,从 VEP 流出的指令会不停地访问 VEC 直到命中为止。因
此,VEC 的容量不需要很大而且 VEC 的命中率也并不是很影响总体性能。此外我
们也观察到在大小超过 64KB 之后,加速比就达到了饱和状态。这是因为当存储
容量再增大的时候,访问延迟就超过了一个周期。因此,最后我们将 EC 与 VSC
设为 64KB,而 VEC 设为 16KB。

GLUHFWBP ZD\ ZD\ IXOODVVRF

3HUIRQGLII&DFKH$VVRF
















:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

图 5.20 在 Cache 相连度变化的情况下性能比较

对于 Cache 的相连度主要测试四个参数:直接相连、四路组相连、八路组相
连以及全相连。图 5.20与图 5.21分别显示了当 Cache 的大小固定为 64KB 时,不
同相连度配置情况下的性能与命中率比较。图 16 中展示了归一化的性能结果,之
所以将结果归一化是因为不同相连度下命中率与性能的差距很小。相比起来全相
连具有最高的命中率与性能,考虑到实际的硬件开销以及传输延迟,我们将片上
Cache 均设置为直接映射。
3)图密度对于性能的影响
本小节探索图密度对于 CGAcc 的影响。我们通过改变图的两个参数从而改变
图密度:1)固定点数而增加边数;2)固定边数而增加点数。为了更加灵活的调
整节点数和边数,这里使用了 Graph 500 中的 kronecker 图生成器 [305]。对于方法
1,我们将节点指数固定为 16,即为节点数为 65536。而边指数在 5 到 25 之间变
化,即边数目在 655360 至 3276800 之间变化。对于方法 2,我们将边数目固定为
1048576 而点的数目在 32768 至 524288 之间变化。
图 5.22与图 5.23分别展示了针对方法 1 与方法 2 的性能比较。图 5.22的结果
说明,虽然差距不是很明显,在边参数为 15 时性能最高,比平均的加速要高出
了 1.7%。在不同边的情况下性能不同的原因主要是来自于对于每个预取器分配的
任务的不均衡,使得某些预取器成为瓶颈而导致总体性能下降。对于方法 2,结
果显示与方法 1 的结果比较相似。但是值得注意的是当节点参数从 18 升为 19 时
(这也意味着节点数目翻倍了),性能有明显的下降。这是因为当节点参数为 18 时,

第 121 页
国防科技大学研究生院博士学位论文

GLUHFWBP ZD\ ZD\ IXOODVVRF







9(&KLWUDWH
















:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

(a) VEC 的命中率比较

GLUHFWBP ZD\ ZD\ IXOODVVRF







(&KLWUDWH












:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

(b) EC 的命中率比较
5
GLUHFWBP ZD\ ZD\ IXOODVVRF


96&KLWUDWH










:LNL &$5
RDG
\RXWX
EH (PD
LO
*RRJ
OH
:DWV
RQ
$PD
]RQ '%/3 .QRZ *PH
DQ

(c) VSC 的命中率比较

图 5.21 在不同的片上 Cache 相连度变化的情况下命中率比较

VEC 就饱和了,而当节点更多时,VEP 就成了系统的瓶颈,导致性能的降低。


4)将 GCAcc 普遍化的性能分析
本小节测试了将 CGAcc 作用于其他应用程序上的效果。对于与 BFS 类似的
程序,这里测试了 SSSP,KCore 以及 GC。对于线性迭代型程序,这里测试了 DC,
TC,以及 PR。这些测试程序均来自于 GraphBig 测试程序集 [304]。为了更好的
展示,所有的测试程序都使用了相同的三个图例:Amazon,Google 以及 CARoad,
这些图例已经在前面的表中有所叙述。图 5.24表示了 CGAcc 作用于 BFS 类似程

第 122 页
国防科技大学研究生院博士学位论文

%DVHOLQH &*$FF

3HUIRUPDQFHRQ(GJHV


















     DQ
VH VH VH VH VH *PH

图 5.22 图的边数目的变化对于性能的影响


%DVHOLQH &*$FF

3HUIRUPDQFHRQ1RGHV


















 VH

VH

VH

VH
 DQ
VH *PH

图 5.23 图的点数的变化对于性能的影响
3HUIRUPDQFH,PSURYHPHQW


 %DVH *UDSK3) &*$FF




.&RUH *& 6663





RDG *RRJOH ]RQ *PHDQ $5RDG *RRJOH PD]RQ *PHDQ $5RDG *RRJOH PD]RQ *PHDQ
&$5 $PD & $ & $

图 5.24 在处理 BFS 相似程序时基准、GraphPrefetcher 与 CGAcc 的性能比较


3HUIRUPDQFH,PSURYHPHQW


 %DVH *UDSK3) &*$FF




'& 7& 35





RDG *RRJOH PD]RQ *PHDQ $5RDG *RRJOH PD]RQ *PHDQ $5RDG *RRJOH PD]RQ *PHDQ
&$5 $ & $ & $

图 5.25 在处理线性迭代型程序时基准、GraphPrefetcher 与 CGAcc 的性能比较

第 123 页
国防科技大学研究生院博士学位论文

序相对于基准的性能提升。结果显示 CGAcc 在处理这些程序的时候依然能达到很


高的性能,在这三个图例上平均可以取得 4X 的加速,而相对于 Graph Prefetcher
预取器有 2.1X 的性能提升。仅在这三个图例上来说,CGAcc 在 BFS 类似程序上
取得的加速比,相比于 CGAcc 优化 BFS 取得的加速比更低,这是由于更多不平衡
的访存指令(例如,SSSP 中对 visited 数组更多的访问)使得预取器组中的一个或
几个成为整个系统的瓶颈而导致性能下降。对于线性迭代型程序,如图 5.25所示,
尽管加速比不如 BFS 类似程序那样高,CGAcc 平均仍然能获得 2.9X 的性能提升,
相比于 Graph Prefetcher 也有 1.5X 的性能提升。相比于 BFS 类似程序较低性能提
升的原因是线性迭代型程序并不能总是从流水化的处理方式中获得好处,其采用
的更多的是线性访存方式,因此在使用 CGAcc 加速线性迭代型程序时主要的性能
提升来自于逻辑层与 DRAM 层之间更短的访存延迟。
5)预取 Buffer 容量分析

Wiki CARoad youtube


1000 150 1000

800 125 800


100
600 600
75
400 400
50
200 25 200

0 0 0

Email Google Watson


700
1000
800 600
800
500
600
400 600
400 300
400
200
200 200
100
0 0 0

Amazon DBLP Know


1000 1000

800 800 800

600 600 600

400 400 400

200 200 200

0 0 0

图 5.26 对于每个 buffer 中消耗的入口数的变化情况

本小节探究在小节 5.3.2描述的用于存储即将流出的指令地址的先入先出
buffer 大小。图 5.26记录各个 buffer 使用的入口个数,其中蓝线、红线、黄线与绿
线分别代表 VEB、EB、VSB 与 PB。其中 VEB 与 VSB 所需要的入口个数仅仅只
有几个,这是由于当这两个 buffer 不为空的时候,VEP 与 VSP 便可以快速的流出
以 buffer 顶部数据为地址的指令。EB 与 PB 所花费的开销更大。对于 EB,这么大

第 124 页
国防科技大学研究生院博士学位论文

的开销主要是因为 EB 中的每一个入口所存储的乃是一个地址对,只有当这个地
址对的两个地址相同的情况下才会被弹出,这也就意味着 EP 已经访问完了由某
个节点所扩展出来的所有边。对于 PB,原因则是预取的数据必须要保存直到 VSP
可以确定此扩展的点是否已经被访问过,而且在此期间,存储于 PB 的数据仍旧会
不断累积。基于测试结果,VEB 与 VSB 的大小被设置为 1KB 而 EB 与 PB 的大小
被设置为 32KB。

5.6 本章小结

本章提出了使用 HMC 存储内计算进行应用加速的两种方法:HMCSP 与


CGAcc。基于 HMC 可以在处理器中处理简单原子计算操作的特性,HMCSP 考虑
到了 CSR-SPMV 的程序特征,利用 HMC 中逻辑层对 PIM 的支持,结合数据预取
来降低访存传输延迟。通过大量的实验得知相比传统的 HMC,HMCSP 可以降低
49.7% 的传输延迟。CGAcc 则利用了 HMC 中逻辑层与 DRAM 层之间非常短的数
据传输延迟,在逻辑层上部署了三个预取器。在已经了解基于 CSR 的图遍历的工
作流程以及结果的前提下,HMC 主动地以流水线的形式使用预取器降低传输延
迟。经过大量在若干真实世界极大图例上进行测试得知,相比于配备了流处理器
的传统存储结构,CGAcc 可以以非常低的硬件开销获得 3.6X 的加速。

第 125 页
国防科技大学研究生院博士学位论文

第 126 页
国防科技大学研究生院博士学位论文

第六章 结论与展望

6.1 工作总结

大数据时代的来临使得本就已很严重的存储墙、带宽墙以及功率墙问题更为
棘手,当前的计算机系统在处理相关的数据密集型应用时,存储系统往往会成为
整个系统的性能瓶颈。近年来一些针对性的存储优化技术以及新型存储结构、介
质等为存储结构的发展提供了可能性。本文的研究工作围绕从各方面对存储结构
进行优化来展开,基于不同存储结构的优势与不足,针对性的设计优化框架来提
高存储系统的性能;通过合理的利用新型存储结构的存储内计算特性,以全新的
视角探究将存储系统作为加速器的可能性。在目前通用存储系统以及新型存储结
构的框架下,本文重点解决三个问题:如何在当前多级复杂存储结构的框架下充
分挖掘预取技术的潜力;如何在目前 DRAM 可扩展性已经乏力且新型存储结构
存储容量并无很大提高的情况下,通过压缩技术增大其有效容量;如何合理的利
用当前新型三维存储结构的逻辑层进行存储内计算,针对某类重要应用进行加速。
本文的贡献如下:

• 提出了一种面向多层存储结构的优化预取效率方法 CHAM。硬件预取一直
以来都是提升系统性能的重要方法。然而硬件预取的效率在很大程度上取决
于预取的准确率,若准确率较低的话,预取器可能会降低系统的性能。之前
有工作提出在两层 Cache 结构上进行自适应性预取的方法,这种方法在两
层 Cache 结构上可以提升系统性能,而在更为复杂的存储系统中,例如三层
Cache 结构,所取得的性能加速就比较有限。CHAM 部署在存储系统的中层
Cache 中,使用运行时的预取准确率作为评估参数。CHAM 中包括两个工作:
1)一种动态自适应的预取控制机制,用于实时针对预取指令调度的优先级
以及预取数据的传输层次进行调度。以及 2)一种以提高预取率为目的的混
合型 Cache 替换策略。

• 提出了一种提升三维存储结构容量的压缩管理机制 CMH。由于受到 DRAM


位元可扩展性以及功耗密度的影响,单个 HMC 的物理存储容量很有限,而且
并不太可能在未来有明显的增长。因此在应对大数据时代的高性能应用程序
时,HMC 的存储容量受限将是一个非常严重的问题。CMH 部署在 HMC 的
逻辑层,通过在数据传输的过程中压缩数据以及在运行时对 HMC 中 DRAM
层存储的数据进行选择性的压缩,CMH 可以有效地提高存储容量,同时也
节省了运行时所消耗的带宽。

第 127 页
国防科技大学研究生院博士学位论文

• 提出了使用 HMC 存储内计算进行加速的方法:HMCSP 与 CGAcc。HMC 作


为一种新型的三维存储结构,其在有计算功能的逻辑层上堆叠负责存储数
据的 DRAM 层。得益于 HMC 独特的存储内计算(PIM)特性以及非常短的
传输延迟,将 HMC 作为加速器优化一些常用的应用程序变得非常有可能。
HMCSP 是一种利用 HMC 逻辑层的 PIM 部件来降低传输延迟,提高性能的
方法;CGAcc 利用存储内预取器,基于 HMC 的三维结构,部署在其逻辑层
上以利用其 PIM 部件以及很短的传输延迟,并通过将预取流水线化来提高
存储层次的并行,进而对程序进行优化。

6.2 工作展望

对存储系统进行优化研究长期以来都是研究的热点问题,尤其是对于面世尚
未久的一些新型存储介质和结构,很多研究都处在理论研究阶段,远未成熟。由
于研究周期较短以及工作量大等诸多原因,本文的工作仍有许多待加强之处。之
后在项目基金的支持下,会在以下方面进行进一步的研究:

• 本文的工作分别从挖掘预取技术,部署优化算法等方面分别对存储结构进行
优化,在一定程度上缺乏系统性。接下来的工作会对之前的工作进行综合,
例如在新型存储介质上进行数据压缩的同时,需要从存储整体考虑预取对压
缩或非压缩数据的对应策略等。此外在当前的工作框架下,诸如服务质量
(QoS)优化等进一步的工作也值得探究。

• 本文的工作主要集中在对于性能的优化,表现在延迟的降低、带宽的利用率
增高以及有效容量的增大,而对能耗以及热耗散方面却鲜有涉及。而在大数
据时代处理巨量数据、对能耗方面的优化也是非常重要的。此外,新型存储
结构如三维堆叠存储结构由于其独特的堆叠结构,在热耗散方面也有种种问
题。之后工作的主要方向就是针对新型存储系统进行能耗及热耗散方面的
优化。

• 本文的工作对新型存储介质,主要是非易失存储介质并未有过多涉及,而由
前面章节的叙述中可以确定非易失存储器必然会在将来大放异彩。之后的工
作会试图在新型存储结构的框架下,结合之前的研究成果,对非易失存储介
质在新型存储结构中的应用,包括能耗优化以及热耗散优化等进行全面的
研究。

第 128 页
国防科技大学研究生院博士学位论文

致 谢

在即将完成博士论文之际,心情激动万分。博士的结束也意味着我在科大十
余年学生生涯的结束,在此我要向所有在我求学过程中关心我、帮助我、陪伴我、
指导我的老师同学,亲朋好友们表示深深的感谢。
首先我要感谢我的导师王志英教授!王老师是我今生最为难忘的好老师,当
我刚刚进入科大学习之时,王老师就和我见了面,让我见识到了大家风范。在本
科后期,王老师指导师兄带领我开始进行计算机体系结构相关的实验,为我打开
了科研的大门。王老师真诚的为我们做考虑,无论是学术科研或是训练生活,王
老师都会给出最贴心的建议;在我们彷徨无措的时候,王老师总能给激励我们,
做我们坚强的后盾。王老师在学术上底蕴厚实,知识渊博,眼光独到,他总能指明
正确的科研方向;在生活中王老师和蔼可亲,平易近人,急人所急,每次见面都会
真诚地问我们:“有什么困难没有?”。简简单单的一句话让我感动不已。作为王
老师的学生我是无比幸运的,无论在学术上还是生活上,王老师都是我的楷模和
榜样。他的教诲使我终生受益,我会终生向王老师学习,以身为他的学生而骄傲。
感谢我的指导师兄黄立波副研究员!在继本科指导我进行毕业设计工作之后,
从 2015 年 3 月开始我再次跟随黄师兄进行博士的学习和研究工作。黄师兄在体系
结构领域具有非常丰富的科研经验,他治学严谨,知识渊博,思维严密。在跟随
黄师兄做科研的过程中,他对我严格要求,让我知道如何针对一个课题一层一层
抽丝剥茧的分析,如何针对分析的结果有目的的设计实验,如何全面的分析实验
以使得论文比较全面,由此得以在科研道路上更进一步。黄师兄身为教研室的骨
干力量非常忙碌,但他平时仍对我的学习生活十分关心,从未放松要求过,在他
的指导以及严格要求下,我完成了本次博士论文的写作。在此我想对师兄深鞠一
躬,您辛苦了。
感谢我在美国匹兹堡大学联合培养期间对我进行指导的 Bruce Childers 教授。
在我刚刚进入 Childers 教授的实验室之时,是他帮助我适应全英语的生活,也
是他向我展示了国外的计算机方向科研人员另一种不同的工作方式和科研方法。
Childers 老师平易近人,非常懂得学生的顾虑与心思,和他的交流总是感到非常舒
服。Childers 教授对于学术态度的严谨、对于学生的耐心、对于工作的认真负责,
都深深地影响了我,使我明白如何做更好的自己。
在 101 实验室奋斗的时间里,同门师兄弟姐妹的陪伴总是那么暖心。感谢同
师门的苏博师兄,徐帆师兄,朱琪师兄,郭辉师兄,王琼师姐,作为前辈你们以

第 129 页
国防科技大学研究生院博士学位论文

身作则,为我做出了极好的榜样,在与你们的交流过程中上我学习到了合作的可
贵,同时也在科研的前期积累了许多宝贵的经验。感谢你们在我博士研究阶段提
供的帮助。感谢赵夏,王鹏,王璐,于齐,王博千等同学!课题上的困难总是去了
又来,我会永远记得组会之后轻松的感觉。与你们的交谈总能使我灵机一动,或
是有新的想法,或是能解决旧的问题。科研之余,在周末的 101 我们总有办法消
遣疲惫的周末,联机打游戏,在大电视上看电影,欢笑声让研究生阶段不再枯燥,
101 实验室的种种将成为我一生铭记的回忆。
感谢我博士时期所在的博士队,感谢博士队领导对我的关心和照顾。感谢孙
统义队长,杨森教导员,寻兵斌队长,欧阳登轶政委。你们以两人之力管理数百
博士生,充当领导、保姆、前辈等多种角色,努力为我们打造一个氛围轻松而又
保持军人作风的环境,时刻关心我们的身体状态和精神情况,苦口婆心的劝诫我
们劳逸结合。多亏你们,博士队对我来说就像家一样温暖。
感谢博士队所有的同学,博队的同学或是直上同学,或是硕士相遇。我们相
识都至少在六年以上。我们是科研上的同路人,亦是有深厚感情的战友。博士队
是一个优秀的集体,我非常幸运能与你们并肩作战,希望未来的人生路上我们能
不忘彼此,保持联系,记得在人生的一段时间内我们曾经一起为一个目标奋斗过。
特别感谢我的室友徐振。振哥有极强的 DIY 能力,这是我最为佩服的。我们从硕
士开始就在一个寝室,从 17 栋 125,到 224,再到现在博士楼 1118,我们一直能
聊得来,开心的日子总是有你。
感谢我的妻子祎熳,感谢你六年以来始终如一的陪伴。如今你已经成为我生
命中绝不可少的一部分,和你在一起的每一天都很开心。虽然我们专业不同,但
你精益求精的学习态度,严以律己的自我要求始终激励着我,我彷徨无措的时候
能迅速的回复状态,正因为始终有你。你无怨无悔的始终支持,是我前进的动力。
最后感谢我的父母,你们真的辛苦了,从出生到现在,感谢你们为我无私的
奉献一切,我会继续努力,绝不辜负你们的期待。
再次衷心感谢所有帮助我,关心我,爱护我的人们,我的生命因你们而精彩!

第 130 页
国防科技大学研究生院博士学位论文

参考文献
[1] Pawlowski J T. Hybrid memory cube (HMC) [C]. In 2011 IEEE Hot Chips
23 Symposium (HCS). 2011: 1–24.
[2] Macri J. AMD’s next generation GPU and high bandwidth memory architec-
ture: FURY [C]. In Hot Chips 27 Symposium (HCS), 2015 IEEE. 2015: 1–26.
[3] Mittal S, Vetter J S. A survey of architectural approaches for data compression
in cache and main memory systems [J]. IEEE Transactions on Parallel and Distributed
Systems. 2016, 27 (5): 1524–1536.
[4] Oral S, Dillow D A, Fuller D, et al. OLCF’s 1 TB/s, next-generation lustre
file system [C]. In Proceedings of Cray User Group Conference (CUG 2013). 2013.
[5] Taylor R C. An overview of the Hadoop/MapReduce/HBase framework and
its current applications in bioinformatics [C]. In BMC bioinformatics. 2010: S1.
[6] Jackson K R, Ramakrishnan L, Muriki K, et al. Performance analysis of high
performance computing applications on the amazon web services cloud [C]. In 2nd IEEE
international conference on cloud computing technology and science. 2010: 159–168.
[7] Torrellas J. Architectures for extreme-scale computing [J]. Computer. 2009,
42 (11).
[8] Harrod B. US department of energy big data and scientific discovery. 2014.
[9] Byna S, Uselton A, Prabhat D K, et al. Trillion particles, 120,000 cores, and
350 TBs: Lessons learned from a hero I/O run on Hopper [C]. In Cray user group meeting.
2013.
[10] Papka M, Coghlan S, Isaacs E, et al. Mira: Argonne’s 10-petaflops supercom-
puter [R]. 2013.
[11] Rath J. NERSC flips the switch on new Edison supercomputer [J]. Retrieved
April. 2014, 17: 2014.
[12] Tiwari D, Gupta S, Gallarno G, et al. Reliability lessons learned from GPU
experience with the Titan supercomputer at Oak Ridge leadership computing facility [C].
In Proceedings of the international conference for high performance computing, network-
ing, storage and analysis. 2015: 38.
[13] Nordberg H, Cantor M, Dusheyko S, et al. The genome portal of the Depart-
ment of Energy Joint Genome Institute: 2014 updates [J]. Nucleic acids research. 2013,
42 (D1): D26–D31.

第 131 页
国防科技大学研究生院博士学位论文

[14] Gulati A, Merchant A, Varman P J. pClock: an arrival curve based approach


for QoS guarantees in shared storage systems [C]. In ACM SIGMETRICS Performance
Evaluation Review. 2007: 13–24.
[15] Xie B, Chase J, Dillow D, et al. Characterizing output bottlenecks in a su-
percomputer [C]. In Proceedings of the International Conference on High Performance
Computing, Networking, Storage and Analysis. 2012: 8.
[16] Liu Q, Podhorszki N, Logan J, et al. Runtime I/O Re-Routing+ Throttling on
HPC Storage. [C]. In HotStorage. 2013.
[17] Lofstead J, Zheng F, Liu Q, et al. Managing variability in the IO performance
of petascale storage systems [C]. In Proceedings of the 2010 ACM/IEEE International
Conference for High Performance Computing, Networking, Storage and Analysis. 2010:
1–12.
[18] Welch B, Unangst M, Abbasi Z, et al. Scalable Performance of the Panasas
Parallel File System. [C]. In FAST. 2008: 1–17.
[19] Holland M, Gibson G A. Parity declustering for continuous operation in re-
dundant disk arrays [M]. ACM, 1992.
[20] Huang S, Huang J, Dai J, et al. The HiBench benchmark suite: Charac-
terization of the MapReduce-based data analysis [C]. In Data Engineering Workshops
(ICDEW), 2010 IEEE 26th International Conference on. 2010: 41–51.
[21] Ferdman M, Adileh A, Kocberber O, et al. Clearing the clouds: a study of
emerging scale-out workloads on modern hardware [C]. In ACM SIGPLAN Notices.
2012: 37–48.
[22] Luo C, Zhan J, Jia Z, et al. Cloudrank-d: benchmarking and ranking cloud
computing systems for data processing applications [J]. Frontiers of Computer Science.
2012, 6 (4): 347–362.
[23] Wang L, Zhan J, Luo C, et al. Bigdatabench: A big data benchmark suite from
internet services [C]. In High Performance Computer Architecture (HPCA), 2014 IEEE
20th International Symposium on. 2014: 488–499.
[24] Chhetri M B, Chichin S, Vo Q B, et al. Smart CloudBench–Automated Per-
formance Benchmarking of the Cloud [C]. In 2013 IEEE Sixth International Conference
on Cloud Computing. 2013: 414–421.
[25] Ferdman M, Adileh A, Kocberber O, et al. Quantifying the mismatch between
emerging scale-out applications and modern processors [J]. ACM Transactions on Com-
puter Systems (TOCS). 2012, 30 (4): 15.

第 132 页
国防科技大学研究生院博士学位论文

[26] Jia Z, Zhou R, Zhu C, et al. The implications of diverse applications and
scalable data sets in benchmarking big data systems [M] // Jia Z, Zhou R, Zhu C, et al.
Specifying Big Data Benchmarks. Springer, 2014: 2014: 44–59.
[27] Tsai Y-F, Xie Y, Vijaykrishnan N, et al. Three-dimensional cache design ex-
ploration using 3DCacti [C]. In Computer Design: VLSI in Computers and Processors,
2005. ICCD 2005. Proceedings. 2005 IEEE International Conference on. 2005: 519–524.
[28] Hung W-L, Link G M, Xie Y, et al. Interconnect and thermal-aware floor-
planning for 3D microprocessors [C]. In Quality Electronic Design, 2006. ISQED’06. 7th
International Symposium on. 2006: 6–pp.
[29] Leidel J D, Chen Y. Hmc-sim-2.0: A simulation platform for exploring cus-
tom memory cube operations [C]. In Parallel and Distributed Processing Symposium
Workshops, 2016 IEEE International. 2016: 621–630.
[30] Jeon D-I, Chung K-S. Cashmc: A cycle-accurate simulator for hybrid memory
cube [J]. IEEE Computer Architecture Letters. 2017, 16 (1): 10–13.
[31] Weldezion A Y, Lu Z, Weerasekera R, et al. 3-D memory organization and
performance analysis for multi-processor network-on-chip architecture [C]. In IEEE In-
ternational Conference on 3D Systems Integration San Francisco, CA, SEP 28-30, 2009.
2009: 42–48.
[32] Ozer E, Flautner K, Idgunji S, et al. EuroCloud: energy-conscious 3D server-
on-chip for green cloud services [C]. In Workshop on Architectural Concerns in Large
Datacenters in conjunction with ISCA. 2010.
[33] Jevdjic D, Volos S, Falsafi B. Die-stacked DRAM caches for servers: hit ratio,
latency, or bandwidth? have it all with footprint cache [C]. In ACM SIGARCH Computer
Architecture News. 2013: 404–415.
[34] Ranganathan P. From microprocessors to nanostores: Rethinking data-centric
systems [J]. Computer. 2011, 44 (1): 39–48.
[35] Chang J, Ranganathan P, Mudge T, et al. A limits study of benefits from
nanostore-based future data-centric system architectures [C]. In Proceedings of the 9th
conference on Computing Frontiers. 2012: 33–42.
[36] Nair P J, Kim D-H, Qureshi M K. ArchShield: Architectural framework for
assisting DRAM scaling by tolerating high error rates [C]. In ACM SIGARCH Computer
Architecture News. 2013: 72–83.
[37] Jacob B, Ng S, Wang D. Memory systems: cache, DRAM, disk [M]. Morgan
Kaufmann, 2010.

第 133 页
国防科技大学研究生院博士学位论文

[38] Mukundan J, Hunter H, Kim K-h, et al. Understanding and mitigating refresh
overheads in high-density DDR4 DRAM systems [J]. ACM SIGARCH Computer Archi-
tecture News. 2013, 41 (3): 48–59.
[39] Zhang X, Zhang Y, Childers B R, et al. Restore truncation for performance
improvement in future DRAM systems [C]. In 2016 IEEE International Symposium on
High Performance Computer Architecture (HPCA). 2016: 543–554.
[40] Kim Y, Daly R, Kim J, et al. Flipping bits in memory without accessing them:
An experimental study of DRAM disturbance errors [C]. In ACM SIGARCH Computer
Architecture News. 2014: 361–372.
[41] Wang Y, Han Y, Wang C, et al. RADAR: A case for retention-aware DRAM
assembly and repair in future FGR DRAM memory [C]. In Proceedings of the 52nd An-
nual Design Automation Conference. 2015: 19.
[42] Zhang X. Addressing Prolonged Restore Challenges in Further Scaling
DRAMs [D]. [S. l.]: University of Pittsburgh, 2017.
[43] Khurshid M J, Lipasti M. Data compression for thermal mitigation in the
hybrid memory cube [C]. In Computer Design (ICCD), 2013 IEEE 31st International
Conference on. 2013: 185–192.
[44] Huang W, Stan M R, Skadron K, et al. Compact thermal modeling for
temperature-aware design [C]. In Proceedings of the 41st annual Design Automation Con-
ference. 2004: 878–883.
[45] Liu S, Leung B, Neckar A, et al. Hardware/software techniques for DRAM
thermal management [J]. 2011.
[46] Ganesh B, Jaleel A, Wang D, et al. Fully-buffered DIMM memory architec-
tures: Understanding mechanisms, overheads and scaling [C]. In High Performance Com-
puter Architecture, 2007. HPCA 2007. IEEE 13th International Symposium on. 2007:
109–120.
[47] Cooper-Balis E, Rosenfeld P, Jacob B. Buffer-on-board memory systems [M].
IEEE Computer Society, 2012.
[48] JEDEC specifications (Wide I/O, HBM) [EB/OL]. https://www.
jedec.org.
[49] Malladi K T, Nothaft F A, Periyathambi K, et al. Towards energy-proportional
datacenter memory with mobile DRAM [C]. In Computer Architecture (ISCA), 2012 39th
Annual International Symposium on. 2012: 37–48.

第 134 页
国防科技大学研究生院博士学位论文

[50] Jeddeloh J, Keeth B. Hybrid memory cube new DRAM architecture increases
density and performance [C]. In VLSI Technology (VLSIT), 2012 Symposium on. 2012:
87–88.
[51] Rosenfeld P. [S. l.]: . [s. n.], 2014.
[52] Consortium H, et al. Hybrid memory cube specification 2.1 [J]. Retrieved
from hybridmemorycube. org. 2014.
[53] Chen F, Koufaty D A, Zhang X. Hystor: making the best use of solid state
drives in high performance storage systems [C]. In Proceedings of the international con-
ference on Supercomputing. 2011: 22–32.
[54] Metz C. Flash drives replace disks at Amazon, Facebook, Dropbox [J]. URL:
http://www. wired. com/wiredenterprise/2012/06/flashdata-centers. 2012.
[55] Schürmann F, Delalondre F, Kumbhar P S, et al. Rebasing I/O for scientific
computing: leveraging storage class memory in an IBM BlueGene/Q supercomputer [C].
In International Supercomputing Conference. 2014: 331–347.
[56] Mittal S, Vetter J S. A survey of software techniques for using non-volatile
memories for storage and main memory systems [J]. IEEE Transactions on Parallel and
Distributed Systems. 2016, 27 (5): 1537–1550.
[57] Ferdman M, Kaynak C, Falsafi B. Proactive instruction fetch [C]. In Pro-
ceedings of the 44th Annual IEEE/ACM International Symposium on Microarchitecture.
2011: 152–162.
[58] Annavaram M, Patel J M, Davidson E S. Call graph prefetching for database
applications [J]. ACM Transactions on Computer Systems (TOCS). 2003, 21 (4): 412–
444.
[59] Mittal S. A survey of recent prefetching techniques for processor caches [J].
ACM Computing Surveys (CSUR). 2016, 49 (2): 35.
[60] Black B, Annavaram M, Brekelbaum N, et al. Die stacking (3D) microarchi-
tecture [C]. In Proceedings of the 39th Annual IEEE/ACM International Symposium on
Microarchitecture. 2006: 469–479.
[61] Xu T C H, Liljeberg P, Tenhunen H. Exploring DRAM last level cache for 3D
network-on-chip architecture [C]. In Advanced Materials Research. 2012: 4009–4018.
[62] Dong X, Wu X, Xie Y, et al. Stacking magnetic random access memory atop
microprocessors: an architecture-level evaluation [J]. IET Computers & Digital Tech-
niques. 2011, 5 (3): 213–220.

第 135 页
国防科技大学研究生院博士学位论文

[63] Sun G, Dong X, Xie Y, et al. A novel architecture of the 3D stacked MRAM
L2 cache for CMPs [C]. In High Performance Computer Architecture, 2009. HPCA 2009.
IEEE 15th International Symposium on. 2009: 239–249.
[64] Madan N, Zhao L, Muralimanohar N, et al. Optimizing communication and
capacity in a 3D stacked reconfigurable cache hierarchy [C]. In High Performance Com-
puter Architecture, 2009. HPCA 2009. IEEE 15th International Symposium on. 2009:
262–274.
[65] Inoue K, Hashiguchi S, Ueno S, et al. 3D implemented SRAM/DRAM hybrid
cache architecture for high-performance and low power consumption [C]. In Circuits and
Systems (MWSCAS), 2011 IEEE 54th International Midwest Symposium on. 2011: 1–4.
[66] Wu X, Li J, Zhang L, et al. Hybrid cache architecture with disparate memory
technologies [C]. In ACM SIGARCH computer architecture news. 2009: 34–45.
[67] Wu X, Li J, Zhang L, et al. Power and performance of read-write aware hy-
brid caches with non-volatile memories [C]. In Proceedings of the Conference on Design,
Automation and Test in Europe. 2009: 737–742.
[68] Sharifi A, Kandemir M. Automatic feedback control of shared hybrid caches
in 3D chip multiprocessors [C]. In Parallel, Distributed and Network-Based Processing
(PDP), 2011 19th Euromicro International Conference on. 2011: 393–400.
[69] Li F, Nicopoulos C, Richardson T, et al. Design and management of 3D chip
multiprocessors using network-in-memory [C]. In ACM SIGARCH Computer Architec-
ture News. 2006: 130–141.
[70] Jung J, Kang K, Kyung C-M. Design and management of 3D-stacked NUCA
cache for chip multiprocessors [C]. In Proceedings of the 21st edition of the great lakes
symposium on Great lakes symposium on VLSI. 2011: 91–96.
[71] Guthmuller E, Miro-Panades I, Greiner A. Adaptive stackable 3d cache archi-
tecture for manycores [C]. In Adaptive Stackable 3D Cache Architecture for Manycores.
2012.
[72] Loh G H. Extending the effectiveness of 3D-stacked DRAM caches with an
adaptive multi-queue policy [C]. In Proceedings of the 42nd Annual IEEE/ACM Interna-
tional Symposium on Microarchitecture. 2009: 201–212.
[73] Mishra A K, Dong X, Sun G, et al. Architecting on-chip interconnects for
stacked 3D STT-RAM caches in CMPs [C]. In ACM SIGARCH Computer Architecture
News. 2011: 69–80.

第 136 页
国防科技大学研究生院博士学位论文

[74] Meng J, Kawakami K, Coskun A K. Optimizing energy efficiency of 3-D


multicore systems with stacked DRAM under power and thermal constraints [C]. In Pro-
ceedings of the 49th Annual Design Automation Conference. 2012: 648–655.

[75] Meng J, Coskun A K. Analysis and runtime management of 3D systems with


stacked DRAM for boosting energy efficiency [C]. In Proceedings of the Conference on
Design, Automation and Test in Europe. 2012: 611–616.

[76] Loh G H. 3D-stacked memory architectures for multi-core processors [C]. In


ACM SIGARCH computer architecture news. 2008: 453–464.

[77] Jacob P, Zia A, Erdogan O, et al. Mitigating memory wall effects in high-
clock-rate and multicore CMOS 3-D processor memory stacks [J]. Proceedings of the
IEEE. 2009, 97 (1): 108–122.

[78] Woo D H, Seong N H, Lewis D L, et al. An optimized 3D-stacked memory


architecture by exploiting excessive, high-density TSV bandwidth [C]. In High Perfor-
mance Computer Architecture (HPCA), 2010 IEEE 16th International Symposium on.
2010: 1–12.

[79] Jouppi N P. Improving direct-mapped cache performance by the addition of


a small fully-associative cache and prefetch buffers [J]. ACM SIGARCH Computer Ar-
chitecture News. 1990, 18 (2SI): 364–373.

[80] Zhu H, Chen Y, Sun X-H. Timing local streams: improving timeliness in data
prefetching [C]. In Proceedings of the 24th ACM International Conference on Supercom-
puting. 2010: 169–178.

[81] Kim T, Zhao D, Veidenbaum A V. Multiple stream tracker: a new hardware


stride prefetcher [C]. In Proceedings of the 11th ACM Conference on Computing Fron-
tiers. 2014: 34.

[82] Roth A, Moshovos A, Sohi G S. Dependence based prefetching for linked


data structures [J]. ACM SIGOPS Operating Systems Review. 1998, 32 (5): 115–126.

[83] Chou Y. Low-cost epoch-based correlation prefetching for commercial ap-


plications [C]. In Proceedings of the 40th Annual IEEE/ACM International Symposium
on Microarchitecture. 2007: 301–313.

[84] Liu G, Peir J-K, Lee V. Miss-correlation folding: Encoding per-block miss
correlations in compressed dram for data prefetching [C]. In Parallel & Distributed Pro-
cessing Symposium (IPDPS), 2012 IEEE 26th International. 2012: 691–702.

第 137 页
国防科技大学研究生院博士学位论文

[85] Panda B, Balachandran S. XStream: cross-core spatial streaming based MLC


prefetchers for parallel applications in CMPs [C]. In Proceedings of the 23rd international
conference on Parallel architectures and compilation. 2014: 87–98.

[86] Annavaram M, Patel J M, Davidson E S. Data prefetching by dependence


graph precomputation [C]. In Computer Architecture, 2001. Proceedings. 28th Annual
International Symposium on. 2001: 52–61.

[87] Aamodt T, Marcuello P, Chow P, et al. Prescient instruction prefetch [C]. In


Proc. of the 6th Workshop on Multithreaded Execution, Architecture and Compilation.
2002: 2–10.

[88] Rabbah R M, Sandanagobalane H, Ekpanyapong M, et al. Compiler orches-


trated prefetching via speculation and predication [J]. ACM SIGPLAN Notices. 2004,
39 (11): 189–198.

[89] Marathe J, Mueller F. PFetch: software prefetching exploiting temporal pre-


dictability of memory access streams [C]. In Proceedings of the 9th workshop on MEmory
performance: DEaling with Applications, systems and architecture. 2008: 1–8.

[90] Khan M, Sandberg A, Hagersten E. A case for resource efficient prefetching


in multicores [C]. In Parallel Processing (ICPP), 2014 43rd International Conference on.
2014: 101–110.

[91] Spracklen L, Chou Y, Abraham S G. Effective instruction prefetching in chip


multiprocessors for modern commercial applications [C]. In High-Performance Computer
Architecture, 2005. HPCA-11. 11th International Symposium on. 2005: 225–236.

[92] Ferdman M, Wenisch T F, Ailamaki A, et al. Temporal instruction fetch


streaming [C]. In Proceedings of the 41st annual IEEE/ACM International Symposium
on Microarchitecture. 2008: 1–10.

[93] Kolli A, Saidi A, Wenisch T F. RDIP: return-address-stack directed instruc-


tion prefetching [C]. In Microarchitecture (MICRO), 2013 46th Annual IEEE/ACM In-
ternational Symposium on. 2013: 260–271.

[94] Solihin Y, Lee J, Torrellas J. Correlation prefetching with a user-level memory


thread [J]. IEEE Transactions on Parallel and Distributed Systems. 2003, 14 (6): 563–580.

[95] Hughes C J, Adve S V. Memory-side prefetching for linked data structures for
processor-in-memory systems [J]. Journal of Parallel and Distributed Computing. 2005,
65 (4): 448–463.

第 138 页
国防科技大学研究生院博士学位论文

[96] Yedlapalli P, Kotra J, Kultursay E, et al. Meeting midway: Improving CMP


performance with memory-side prefetching [C]. In Proceedings of the 22nd international
conference on Parallel architectures and compilation techniques. 2013: 289–298.

[97] Zhang Y, Yang J, Gupta R. Frequent value locality and value-centric data
cache design [J]. ACM SIGPLAN Notices. 2000, 35 (11): 150–159.

[98] Abali B, Franke H, Poff D E, et al. Memory expansion technology (MXT):


software support and performance [J]. IBM Journal of Research and Development. 2001,
45 (2): 287–301.

[99] Nakar D, Weiss S. Selective main memory compression by identifying pro-


gram phase changes [C]. In Proceedings of the 3rd workshop on Memory performance
issues: in conjunction with the 31st international symposium on computer architecture.
2004: 96–101.

[100] Alameldeen A R, Wood D A. Frequent pattern compression: A significance-


based compression scheme for L2 caches [J]. Dept. Comp. Scie., Univ. Wisconsin-
Madison, Tech. Rep. 2004, 1500.

[101] Alameldeen A R, Wood D A. Adaptive cache compression for high-


performance processors [J]. ACM SIGARCH Computer Architecture News. 2004, 32 (2):
212.

[102] Ekman M, Stenstrom P. A robust main-memory compression scheme [C]. In


ACM SIGARCH Computer Architecture News. 2005: 74–85.

[103] Yang L, Dick R P, Lekatsas H, et al. Online memory compression for embed-
ded systems [J]. ACM Transactions on Embedded Computing Systems (TECS). 2010,
9 (3): 27.

[104] Pekhimenko G, Huberty T, Cai R, et al. Exploiting compressed block size as


an indicator of future reuse [C]. In 2015 IEEE 21st International Symposium on High
Performance Computer Architecture (HPCA). 2015: 51–63.

[105] Zhang Y, Gupta R. Data compression transformations for dynamically allo-


cated data structures [C]. In International Conference on Compiler Construction. 2002:
14–28.

[106] Biswas S, Carley T, Simpson M, et al. Memory overflow protection for em-
bedded systems using run-time checks, reuse, and compression [J]. ACM Transactions on
Embedded Computing Systems (TECS). 2006, 5 (4): 719–752.

第 139 页
国防科技大学研究生院博士学位论文

[107] Ozturk O, Kandemir M. ILP-Based energy minimization techniques for


banked memories [J]. ACM Transactions on Design Automation of Electronic Systems
(TODAES). 2008, 13 (3): 50.
[108] Lee H G, Baek S, Kim J, et al. A compression-based hybrid MLC/SLC man-
agement technique for phase-change memory systems [C]. In A Compression-Based Hy-
brid MLC/SLC Management Technique for Phase-Change Memory Systems. 2012.
[109] Du Y, Zhou M, Childers B, et al. Delta-compressed caching for overcoming
the write bandwidth limitation of hybrid main memory [J]. ACM Transactions on Archi-
tecture and Code Optimization (TACO). 2013, 9 (4): 55.
[110] Dgien D B, Palangappa P M, Hunter N A, et al. Compression architecture for
bit-write reduction in non-volatile memory technologies [C]. In Proceedings of the 2014
IEEE/ACM International Symposium on Nanoscale Architectures. 2014: 51–56.
[111] Choi J H, Kwak J W, Jhang S T, et al. Adaptive cache compression for non-
volatile memories in embedded system [C]. In Proceedings of the 2014 Conference on
Research in Adaptive and Convergent Systems. 2014: 52–57.
[112] Rogers B M, Krishna A, Bell G B, et al. Scaling the bandwidth wall: chal-
lenges in and avenues for CMP scaling [C]. In ACM SIGARCH Computer Architecture
News. 2009: 371–382.
[113] Sathish V, Schulte M J, Kim N S. Lossless and lossy memory I/O link com-
pression for improving performance of GPGPU workloads [C]. In Parallel Architectures
and Compilation Techniques (PACT), 2012 21st International Conference on. 2012: 325–
334.
[114] Mutlu O, Moscibroda T. Parallelism-aware batch scheduling: Enhancing both
performance and fairness of shared DRAM systems [C]. In ACM SIGARCH Computer
Architecture News. 2008: 63–74.
[115] Lee C J, Narasiman V, Mutlu O, et al. Improving memory bank-level paral-
lelism in the presence of prefetching [C]. In Microarchitecture, 2009. MICRO-42. 42nd
Annual IEEE/ACM International Symposium on. 2009: 327–336.
[116] Yoon D H, Erez M. Virtualized and flexible ECC for main memory [C]. In
ACM SIGARCH Computer Architecture News. 2010: 397–408.
[117] Zhang T, Chen K, Xu C, et al. Half-DRAM: a high-bandwidth and low-power
DRAM architecture from the rethinking of fine-grained activation [C]. In Computer Ar-
chitecture (ISCA), 2014 ACM/IEEE 41st International Symposium on. 2014: 349–360.

第 140 页
国防科技大学研究生院博士学位论文

[118] Amer M, Takefman M L. Load reduction dual in-line memory module


(LRDIMM) and method for programming the same. May 28 2013. US Patent 8,452,917.
[119] Byun H, Bok J, Cho K, et al. Bulk-Si photonics technology for DRAM inter-
face [J]. Photonics Research. 2014, 2 (3): A25–A33.
[120] Knickerbocker J U, Andry P S, Dang B, et al. Three-dimensional silicon in-
tegration [J]. IBM Journal of Research and Development. 2008, 52 (6): 553–569.
[121] Kang U, Chung H-J, Heo S, et al. 8 Gb 3-D DDR3 DRAM using through-
silicon-via technology [J]. IEEE Journal of Solid-State Circuits. 2010, 45 (1): 111–119.
[122] Standard J. High bandwidth memory (hbm) dram [J]. JESD235. 2013.
[123] Bolaria J. Micron reinvents dram memory [J]. Microprocessor Report (MPR).
2011.
[124] JEDEC W. O single data rate (WIDE I/O SDR) [J]. JEDEC Standard
JESD229. 2011.
[125] Mantor M. AMD Radeon™ HD 7970 with graphics core next (GCN) archi-
tecture [C]. In Hot Chips 24 Symposium (HCS), 2012 IEEE. 2012: 1–35.
[126] Sodani A. Knights landing (knl): 2nd generation intel® xeon phi proces-
sor [C]. In Hot Chips 27 Symposium (HCS), 2015 IEEE. 2015: 1–24.
[127] Gupta S. NVIDIA Updates GPU Roadmap; Announces Pascal. 2014.
[128] Chen K, Li S, Muralimanohar N, et al. CACTI-3DD: Architecture-level mod-
eling for 3D die-stacked DRAM main memory [C]. In Design, Automation & Test in
Europe Conference & Exhibition (DATE), 2012. 2012: 33–38.
[129] Weis C, Loi I, Benini L, et al. Exploration and optimization of 3-D integrated
DRAM subsystems [J]. IEEE Transactions on Computer-Aided Design of Integrated Cir-
cuits and Systems. 2013, 32 (4): 597–610.
[130] Oskin M, Chong F T, Sherwood T. Active pages: A computation model for
intelligent memory [M]. IEEE Computer Society, 1998.
[131] AKIN B. A Formal Approach to Memory Access Optimization: Data Lay-
out, Reorganization, and Near-Data Processing [D]. [S. l.]: Carnegie Mellon University
Pittsburgh, PA, USA, 2015.
[132] Oden L, Balaji P. Hexe: A Toolkit for Heterogeneous Memory Manage-
ment [C]. In Parallel and Distributed Systems (ICPADS), 2017 IEEE 23rd International
Conference on. 2017: 656–663.

第 141 页
国防科技大学研究生院博士学位论文

[133] Dong X, Muralimanohar N, Jouppi N, et al. Leveraging 3D PCRAM tech-


nologies to reduce checkpoint overhead for future exascale systems [C]. In Proceedings
of the conference on high performance computing networking, storage and analysis. 2009:
57.
[134] Giridhar B, Cieslak M, Duggal D, et al. Exploring DRAM organizations for
energy-efficient and resilient exascale memories [C]. In Proceedings of the International
Conference on High Performance Computing, Networking, Storage and Analysis. 2013:
23.
[135] Mittal S, Vetter J S. A survey of methods for analyzing and improving GPU
energy efficiency [J]. ACM Computing Surveys (CSUR). 2015, 47 (2): 19.
[136] Vetter J S, Mittal S. Opportunities for nonvolatile memory systems in
extreme-scale high-performance computing [J]. Computing in Science & Engineering.
2015, 17 (2): 73–82.
[137] Mittal S, Vetter J S, Li D. A survey of architectural approaches for managing
embedded DRAM and non-volatile on-chip caches [J]. IEEE Transactions on Parallel and
Distributed Systems. 2015: 14.
[138] Narayanan D, Thereska E, Donnelly A, et al. Migrating server storage to
SSDs: analysis of tradeoffs [C]. In Proceedings of the 4th ACM European conference
on Computer systems. 2009: 145–158.
[139] Lee S-W, Moon B. Design of flash-based DBMS: an in-page logging ap-
proach [C]. In Proceedings of the 2007 ACM SIGMOD international conference on Man-
agement of data. 2007: 55–66.
[140] Gupta A, Kim Y, Urgaonkar B. DFTL: a flash translation layer employing
demand-based selective caching of page-level address mappings [M]. ACM, 2009.
[141] Long Y, Na T, Mukhopadhyay S. ReRAM-based processing-in-memory ar-
chitecture for recurrent neural network acceleration [J]. IEEE Transactions on Very Large
Scale Integration (VLSI) Systems. 2018 (99): 1–14.
[142] Caulfield A M, Coburn J, Mollov T, et al. Understanding the impact of emerg-
ing non-volatile memories on high-performance, io-intensive computing [C]. In Proceed-
ings of the 2010 ACM/IEEE International Conference for High Performance Computing,
Networking, Storage and Analysis. 2010: 1–11.
[143] Meza J, Luo Y, Khan S, et al. A case for efficient hardware/software cooper-
ative management of storage and memory [J]. 2013.

第 142 页
国防科技大学研究生院博士学位论文

[144] Fackenthal R, et al. A 16 GB ReRAM with 200 MB/s write and 1 GB/s read
in 27 nm Technology ISSCC Tech. 2014.
[145] Srinath S, Mutlu O, Kim H, et al. Feedback directed prefetching: Improving
the performance and bandwidth-efficiency of hardware prefetchers [C]. In High Perfor-
mance Computer Architecture, 2007. HPCA 2007. IEEE 13th International Symposium
on. 2007: 63–74.
[146] Chen T-F, Baer J-L. Effective hardware-based data prefetching for high-
performance processors [J]. IEEE transactions on computers. 1995, 44 (5): 609–623.
[147] Wenisch S, Trinkaus K, Hild A, et al. Human reaming debris: a source of
multipotent stem cells [J]. Bone. 2005, 36 (1): 74–83.
[148] Somogyi S, Wenisch T F, Ailamaki A, et al. Spatial memory streaming [C].
In ACM SIGARCH Computer Architecture News. 2006: 252–263.
[149] Jain A, Lin C. Linearizing irregular memory accesses for improved correlated
prefetching [C]. In Proceedings of the 46th Annual IEEE/ACM International Symposium
on Microarchitecture. 2013: 247–259.
[150] Lai A-C, Fide C, Falsafi B. Dead-block prediction & dead-block correlating
prefetchers [C]. In Computer Architecture, 2001. Proceedings. 28th Annual International
Symposium on. 2001: 144–154.
[151] Ferdman M, Falsafi B. Last-touch correlated data streaming [C]. In Perfor-
mance Analysis of Systems & Software, 2007. ISPASS 2007. IEEE International Sympo-
sium on. 2007: 105–115.
[152] Mittal S. A survey of architectural techniques for improving cache power
efficiency [J]. Sustainable Computing: Informatics and Systems. 2014, 4 (1): 33–43.
[153] Tian Y, Khan S M, Jiménez D A, et al. Last-level cache deduplication [C]. In
Proceedings of the 28th ACM international conference on Supercomputing. 2014: 53–62.
[154] Dusser J, Piquet T, Seznec A. Zero-content augmented caches [C]. In Pro-
ceedings of the 23rd international conference on Supercomputing. 2009: 46–55.
[155] Pekhimenko G, Seshadri V, Mutlu O, et al. Base-delta-immediate compres-
sion: practical data compression for on-chip caches [C]. In Proceedings of the 21st inter-
national conference on Parallel architectures and compilation techniques. 2012: 377–388.
[156] Arelakis A, Stenström P. A case for a value-aware cache [J]. IEEE Computer
Architecture Letters. 2014, 13 (1): 1–4.

第 143 页
国防科技大学研究生院博士学位论文

[157] Arelakis A, Stenstrom P. SC 2: A statistical compression cache scheme [C].


In Computer Architecture (ISCA), 2014 ACM/IEEE 41st International Symposium on.
2014: 145–156.
[158] Roy S, Kumar R, Prvulovic M. Improving system performance with com-
pressed memory [C]. In Parallel and Distributed Processing Symposium., Proceedings
15th International. 2001: 7–pp.
[159] Park J, Jung J, Yi K, et al. Static energy minimization of 3D stacked L2 cache
with selective cache compression [C]. In Very Large Scale Integration (VLSI-SoC), 2013
IFIP/IEEE 21st International Conference on. 2013: 228–233.
[160] Tanaka K, Matsuda A. Static energy reduction in cache memories using data
compression [C]. In TENCON 2006. 2006 IEEE Region 10 Conference. 2006: 1–4.
[161] Mittal S. A survey of architectural techniques for DRAM power manage-
ment [J]. International Journal of High Performance Systems Architecture (IJHPSA).
2012, 4 (2): 110–119.
[162] Hallnor E G, Reinhardt S K. A unified compressed memory hierarchy [C].
In High-Performance Computer Architecture, 2005. HPCA-11. 11th International Sym-
posium on. 2005: 201–212.
[163] Douglis F. The Compression Cache: Using On-line Compression to Extend
Physical Memory. [C]. In USENIX Winter. 1993: 519–529.
[164] Lee J-S, Hong W-K, Kim S-D. Design and evaluation of a selective com-
pressed memory system [C]. In iccd. 1999: 184.
[165] Kong J, Zhou H. Improving privacy and lifetime of PCM-based main mem-
ory [C]. In 2010 IEEE/IFIP International Conference on Dependable Systems&Networks
(DSN). 2010: 333–342.
[166] Mittal S, Vetter J S, Li D. A survey of architectural approaches for managing
embedded DRAM and non-volatile on-chip caches [J]. IEEE Transactions on Parallel and
Distributed Systems. 2015: 14.
[167] Pujara P, Aggarwal A. Restrictive compression techniques to increase level 1
cache capacity [C]. In Computer Design: VLSI in Computers and Processors, 2005. ICCD
2005. Proceedings. 2005 IEEE International Conference on. 2005: 327–333.
[168] Baek S, Lee H G, Nicopoulos C, et al. A dual-phase compression mechanism
for hybrid DRAM/PCM main memory architectures [C]. In Proceedings of the Great lakes
symposium on VLSI. 2012: 345–350.

第 144 页
国防科技大学研究生院博士学位论文

[169] Huffman D A. A method for the construction of minimum-redundancy


codes [J]. Proceedings of the IRE. 1952, 40 (9): 1098–1101.
[170] Ziv J, Lempel A. Compression of individual sequences via variable-rate cod-
ing [J]. IEEE transactions on Information Theory. 1978, 24 (5): 530–536.
[171] Kjelso M, Gooch M, Jones S. Design and performance of a main memory
hardware data compressor [C]. In EUROMICRO 96. Beyond 2000: Hardware and Soft-
ware Design Strategies., Proceedings of the 22nd EUROMICRO Conference. 1996: 423–
430.
[172] Yang J, Zhang Y, Gupta R. Frequent value compression in data caches [C].
In Proceedings of the 33rd annual ACM/IEEE international symposium on Microarchi-
tecture. 2000: 258–265.
[173] Kim N S, Austin T, Mudge T. Low-energy data cache using sign compression
and cache line bisection [C]. In Proceedings of the 2nd Annual Workshop on Memory
Performance Issues (WMPI’02). 2002.
[174] Chen X, Yang L, Dick R P, et al. C-pack: A high-performance microprocessor
cache compression algorithm [J]. IEEE transactions on very large scale integration (VLSI)
systems. 2010, 18 (8): 1196–1208.
[175] Siegl P, Buchty R, Berekovic M. Data-centric computing frontiers: A survey
on processing-in-memory [C]. In Proceedings of the Second International Symposium on
Memory Systems. 2016: 295–308.
[176] Dennard R H. Field-effect transistor memory. June 4 1968. US Patent
3,387,286.
[177] Minnick R C. A survey of microcellular research [J]. Journal of the ACM
(JACM). 1967, 14 (2): 203–241.
[178] Kautz W H. Cellular logic-in-memory arrays [J]. IEEE Transactions on Com-
puters. 1969, 100 (8): 719–727.
[179] Minnick R, Short R, Goldberg J, et al. CELLULAR ARRAYS FOR LOGIC
AND STORAGE. [R]. 1966.
[180] Stone H S. A logic-in-memory computer [J]. IEEE Transactions on Comput-
ers. 1970, 100 (1): 73–78.
[181] Fuchs H. Pixel-Planes: A VLSI-oriented design for a raster graphics en-
gine [J]. VLSI Design. 1981, 2 (3): 20–28.

第 145 页
国防科技大学研究生院博士学位论文

[182] Elliott D G, Snelgrove W M, Stumm M. Computational RAM: A memory-


SIMD hybrid and its application to DSP [C]. In Custom Integrated Circuits Conference,
1992., Proceedings of the IEEE 1992. 1992: 30–6.
[183] Kogge P M, Sunaga T, Miyataka H, et al. Combined DRAM and logic chip
for massively parallel systems [C]. In Advanced Research in VLSI, 1995. Proceedings.,
Sixteenth Conference on. 1995: 4–16.
[184] Kogge P M. EXECUBE-a new architecture for scaleable MPPs [C]. In Par-
allel Processing, 1994. Vol. 1. ICPP 1994. International Conference on. 1994: 77–84.
[185] Patterson D, Anderson T, Cardwell N, et al. A case for intelligent RAM [J].
IEEE micro. 1997, 17 (2): 34–44.
[186] Gokhale M, Holmes B, Iobst K. Processing in memory: The Terasys mas-
sively parallel PIM array [J]. Computer. 1995, 28 (4): 23–31.
[187] Patterson D, Asanovic K, Brown A, et al. Intelligent ram (iram): the industrial
setting, applications, and architectures [C]. In Computer Design: VLSI in Computers and
Processors, 1997. ICCD’97. Proceedings., 1997 IEEE International Conference on. 1997:
2–7.
[188] Nowatzyk A, Pong F, Saulsbury A. Missing the memory wall: The case for
processor/memory integration [C]. In Computer Architecture, 1996 23rd Annual Interna-
tional Symposium on. 1996: 90–90.
[189] Dlugosch P, Brown D, Glendenning P, et al. An efficient and scalable semi-
conductor architecture for parallel automata processing [J]. IEEE Transactions on Parallel
and Distributed Systems. 2014, 25 (12): 3088–3098.
[190] Kang Y, Huang W, Yoo S-M, et al. FlexRAM: Toward an advanced intel-
ligent memory system [C]. In Computer Design (ICCD), 2012 IEEE 30th International
Conference on. 2012: 5–14.
[191] Brockman J B, Thoziyoor S, Kuntz S K, et al. A low cost, multithreaded
processing-in-memory system [C]. In Proceedings of the 3rd workshop on Memory per-
formance issues: in conjunction with the 31st international symposium on computer ar-
chitecture. 2004: 16–22.
[192] Thoziyoor S, Brockman J, Rinzler D. PIM lite: A multithreaded processor-
in-memory prototype [C]. In Proceedings of the 15th ACM Great Lakes symposium on
VLSI. 2005: 64–69.
[193] Hammarlund P, Martinez A J, Bajwa A A, et al. Haswell: The fourth-
generation intel core processor [J]. IEEE Micro. 2014, 34 (2): 6–20.

第 146 页
国防科技大学研究生院博士学位论文

[194] Larsen E S, McAllister D. Fast matrix multiplies using graphics hardware [C].
In Proceedings of the 2001 ACM/IEEE conference on Supercomputing. 2001: 55–55.
[195] Kleiner M B, Kuhn S A, Ramm P, et al. Performance improvement of the
memory hierarchy of RISC-systems by application of 3-D technology [J]. IEEE Transac-
tions on Components, Packaging, and Manufacturing Technology: Part B. 1996, 19 (4):
709–718.
[196] Liu C C, Ganusov I, Burtscher M, et al. Bridging the processor-memory per-
formance gapwith 3D IC technology [J]. IEEE Design & Test of Computers. 2005 (6):
556–564.
[197] Kim Y, Song Y H. Analysis of thermal behavior for 3D integration of
DRAM [C]. In Consumer Electronics (ISCE 2014), The 18th IEEE International Sym-
posium on. 2014: 1–2.
[198] Semiconductors T. Tezzaron unveils 3d SRAM [J]. Press Release from
http://www. tezzaron. com. 2005.
[199] Starke W J, Stuecheli J, Daly D, et al. The cache and memory subsystems
of the IBM POWER8 processor [J]. IBM Journal of Research and Development. 2015,
59 (1): 3–1.
[200] Motoyoshi M. Through-silicon via (TSV) [J]. Proceedings of the IEEE. 2009,
97 (1): 43–48.
[201] Kogge P M, La Fratta P, Vance M. [2010] Facing the Exascale Energy
Wall [C]. In Innovative Architecture for Future Generation High Performance (IWIA),
2010 International Workshop on. 2010: 51–58.
[202] Reddaway S F. DAP—a distributed array processor [C]. In ACM SIGARCH
Computer Architecture News. 1973: 61–65.
[203] Zhang D P, Jayasena N, Lyashevsky A, et al. A new perspective on
processing-in-memory architecture design [C]. In Proceedings of the ACM SIGPLAN
Workshop on Memory Systems Performance and Correctness. 2013: 7.
[204] Zhu Q, Akin B, Sumbul H E, et al. A 3D-stacked logic-in-memory accel-
erator for application-specific data intensive computing [C]. In 3D Systems Integration
Conference (3DIC), 2013 IEEE International. 2013: 1–7.
[205] Egawa R, Sato M, Tada J, et al. Vertically integrated processor and mem-
ory module design for vector supercomputers [C]. In 3D Systems Integration Conference
(3DIC), 2013 IEEE International. 2013: 1–6.

第 147 页
国防科技大学研究生院博士学位论文

[206] Loh G H, Jayasena N, Oskin M, et al. A processing in memory taxonomy


and a case for studying fixed-function pim [C]. In Workshop on Near-Data Processing
(WoNDP). 2013.
[207] Nair R, Antao S F, Bertolli C, et al. Active memory cube: A processing-in-
memory architecture for exascale systems [J]. IBM Journal of Research and Development.
2015, 59 (2/3): 17–1.
[208] Scrbak M, Islam M, Kavi K M, et al. Processing-in-memory: Exploring the
design space [C]. In International Conference on Architecture of Computing Systems.
2015: 43–54.
[209] Balasubramonian R, Chang J, Manning T, et al. Near-data processing: In-
sights from a MICRO-46 workshop [J]. IEEE Micro. 2014, 34 (4): 36–42.
[210] Wulf W A, McKee S A. Hitting the memory wall: implications of the obvi-
ous [J]. ACM SIGARCH computer architecture news. 1995, 23 (1): 20–24.
[211] McKee S A. Reflections on the memory wall [C]. In Proceedings of the 1st
conference on Computing frontiers. 2004: 162.
[212] McKee S A, Wisniewski R W. Memory wall [M] // McKee S A, Wis-
niewski R W. Encyclopedia of Parallel Computing. Springer, 2011: 2011: 1110–1116.
[213] Wang D, Sun X H. APC: A Novel Memory Metric and Measurement Method-
ology for Modern Memory Systems [J]. IEEE Transactions on Computers. 2014, 63 (7):
1626–1639.
[214] Grannæs M. Reducing Memory Latency by Improving Resource Utiliza-
tion [J]. 2010.
[215] Kang H, Wong J L. To hardware prefetch or not to prefetch?: a virtualized
environment study and core binding approach [J]. Acm Sigplan Notices. 2013, 48 (4):
357–368.
[216] Rahman S, Burtscher M, Zong Z, et al. Maximizing Hardware Prefetch Ef-
fectiveness with Machine Learning [C]. In IEEE International Conference on High PER-
FORMANCE Computing and Communications, 2015 IEEE International Symposium on
Cyberspace Safety and Security, and 2015 IEEE International Conf on Embedded Soft-
ware and Systems. 2015: 383–389.
[217] Hur I, Lin C. Memory Prefetching Using Adaptive Stream Detection [J].
IEEE. 2006, 24 (1): 397–408.
[218] Avudaiyappan K, Abdallah M. Cache replacement policy. December 16 2011.
US Patent App. 14/385,968.

第 148 页
国防科技大学研究生院博士学位论文

[219] Yoo S, Lee E, Bahn H. The least-dirty-first cache replacement policy for
phase-change memory [C]. In Acm Symposium on Applied Computing. 2014: 1449–
1454.
[220] Hyuseinova N, Cai Q, Ozdemir S, et al. Utility and lifetime based cache re-
placement policy [J]. 2015.
[221] Lee C J, Mutlu O, Narasiman V, et al. Prefetch-aware DRAM controllers [C].
In Proceedings of the 41st annual IEEE/ACM International Symposium on Microarchi-
tecture. 2008: 200–209.
[222] Tang P P, Rotithor H G, Carlson R L, et al. Prefetch optimization in shared
resource multi-core systems. May 14 2013. US Patent 8,443,151.
[223] Levinthal D. Performance analysis guide for intel core i7 processor and intel
xeon 5500 processors [J]. Intel Performance Analysis Guide. 2009, 30: 18.
[224] Sinharoy B, Van Norstrand J, Eickemeyer R J, et al. IBM POWER8 processor
core microarchitecture [J]. IBM Journal of Research and Development. 2015, 59 (1): 2–1.
[225] Millán E N, Bederian C S, Piccoli M F, et al. Performance analysis of Cellular
Automata HPC implementations [J]. Computers & Electrical Engineering. 2015, 48: 12–
24.
[226] Anandkumar K M, Akash S, Ganesh D, et al. A hybrid cache replacement
policy for heterogeneous multi-cores [C]. In International Conference on Advances in
Computing, Communications and Informatics. 2014: 594–599.
[227] Megiddo N, Modha D S. Outperforming LRU with an Adaptive Replacement
Cache Algorithm [J]. Computer. 2014, 37 (4): 58 – 65.
[228] Henning J L. SPEC CPU2006 benchmark descriptions [J]. ACM SIGARCH
Computer Architecture News. 2006, 34 (4): 1–17.
[229] Wu C-J, Jaleel A, Martonosi M, et al. PACMan: prefetch-aware cache man-
agement for high performance caching [C]. In Proceedings of the 44th Annual IEEE/ACM
International Symposium on Microarchitecture. 2011: 442–453.
[230] Jaleel A, Theobald K B, Steely Jr S C, et al. High performance cache replace-
ment using re-reference interval prediction (RRIP) [C]. In ISCA’10.
[231] Gao H, Wilkerson C. A Dueling Segmented LRU Replacement Algorithm
with Adaptive Bypassing [C]. In In Proceedings of the 1st JILP Workshop on Computer
Architecture Competitions. 2010.

第 149 页
国防科技大学研究生院博士学位论文

[232] Albayraktaroglu K, Jaleel A, Wu X, et al. BioBench: A benchmark suite of


bioinformatics applications [C]. In Performance Analysis of Systems and Software, 2005.
ISPASS 2005. IEEE International Symposium on. 2005: 2–9.
[233] Dahlgren F, Dubois M, Stenstrom P. Sequential hardware prefetching in
shared-memory multiprocessors [J]. IEEE Transactions on Parallel and Distributed Sys-
tems. 1995, 6 (7): 733–746.
[234] Vanderwiel S P, Lilja D J. Data prefetch mechanisms [J]. ACM Computing
Surveys (CSUR). 2000, 32 (2): 174–199.
[235] Judd P. Bundling Spatially Correlated Prefetches for Improved Main Memory
Row Buffer Locality [D]. [S. l.]: University of Toronto, 2014.
[236] Shevgoor M, Koladiya S, Balasubramonian R, et al. Efficiently prefetching
complex address patterns [C]. In Proceedings of the 48th International Symposium on
Microarchitecture. 2015: 141–152.
[237] Michaud P. A best-offset prefetcher [C]. In 2nd Data Prefetching Champi-
onship. 2015.
[238] Kim J, Gratz P V, Reddy A N. Lookahead Prefetching with Signature Path [J].
[239] Moinuddin K, Jaleel A, Patt Y N, et al. Set-dueling-controlled adaptive inser-
tion for high-performance caching [J]. Micro IEEE. 2008, 28 (1): 91–98.
[240] Qureshi M K, Lynch D N, Mutlu O, et al. A case for MLP-aware cache re-
placement [J]. ACM SIGARCH Computer Architecture News. 2006, 34 (2): 167–178.
[241] Subramanian R, Smaragdakis Y, Loh G H. Adaptive caches: Effective shap-
ing of cache behavior to workloads [C]. In Proceedings of the 39th Annual IEEE/ACM
International Symposium on Microarchitecture. 2006: 385–396.
[242] Lee D, Choi J, Kim J-H, et al. LRFU: A spectrum of policies that subsumes the
least recently used and least frequently used policies [J]. IEEE transactions on Computers.
2001, 50 (12): 1352–1361.
[243] Qureshi M K, Patt Y N. Utility-based cache partitioning: A low-overhead,
high-performance, runtime mechanism to partition shared caches [C]. In Proceedings of
the 39th Annual IEEE/ACM International Symposium on Microarchitecture. 2006: 423–
432.
[244] Manikantan R, Rajan K, Govindarajan R. NUcache: An efficient multicore
cache organization based on next-use distance [C]. In 2011 IEEE 17th International Sym-
posium on High Performance Computer Architecture. 2011: 243–253.

第 150 页
国防科技大学研究生院博士学位论文

[245] Manikantan R, Rajan K, Govindarajan R. Probabilistic shared cache manage-


ment (PriSM) [C]. In ACM SIGARCH computer architecture news. 2012: 428–439.
[246] Sanchez D, Kozyrakis C. Vantage: scalable and efficient fine-grain cache par-
titioning [C]. In ACM SIGARCH Computer Architecture News. 2011: 57–68.
[247] Lin W-F, Reinhardt S K, Burger D. Reducing DRAM latencies with an inte-
grated memory hierarchy design [C]. In High-Performance Computer Architecture, 2001.
HPCA. The Seventh International Symposium on. 2001: 301–312.
[248] Zhuang X, Hsien-hsin S L. Reducing cache pollution via dynamic data
prefetch filtering [J]. IEEE Transactions on Computers. 2007, 56 (1): 18–31.
[249] Pugsley S H, Chishti Z, Wilkerson C, et al. Sandbox prefetching: Safe run-
time evaluation of aggressive prefetchers [C]. In 2014 IEEE 20th International Sympo-
sium on High Performance Computer Architecture (HPCA). 2014: 626–637.
[250] Seshadri V, Yedkar S, Xin H, et al. Mitigating prefetcher-caused pollution
using informed caching policies for prefetched blocks [J]. ACM Transactions on Archi-
tecture and Code Optimization (TACO). 2015, 11 (4): 51.
[251] Jaleel A, Hasenplaugh W, Qureshi M, et al. Adaptive insertion policies for
managing shared caches [C]. In Proceedings of the 17th international conference on Par-
allel architectures and compilation techniques. 2008: 208–219.
[252] Qureshi M K, Jaleel A, Patt Y N, et al. Adaptive insertion policies for high
performance caching [C]. In ACM SIGARCH Computer Architecture News. 2007: 381–
391.
[253] Duong N, Zhao D, Kim T, et al. Improving cache management policies us-
ing dynamic reuse distances [C]. In Proceedings of the 2012 45th Annual IEEE/ACM
International Symposium on Microarchitecture. 2012: 389–400.
[254] Chou Y C. Selectively dropping prefetch requests based on prefetch accuracy
information. November 18 2014. US Patent 8,892,822.
[255] Chidambaram Nachiappan N, Mishra A K, Kademir M, et al. Application-
aware prefetch prioritization in on-chip networks [C]. In Proceedings of the 21st interna-
tional conference on Parallel architectures and compilation techniques. 2012: 441–442.
[256] Binkert N, Beckmann B, Black G, et al. The gem5 simulator [J]. ACM
SIGARCH Computer Architecture News. 2011, 39 (2): 1–7.
[257] Solihin Y. Fundamentals of Parallel Multicore Architecture [M]. CRC Press,
2015.

第 151 页
国防科技大学研究生院博士学位论文

[258] internal technology roadmap for semiconductors 2.0 [EB/OL]. https://


www.semiconductors.org/.
[259] Technology Roadmap of DRAM for Three Major manufacturers: Samsung,
SK-Hynix and Micron [EB/OL]. https://www.techinsights.com/.
[260] Dhiman G, Ayoub R, Rosing T. PDRAM: A hybrid PRAM and DRAM main
memory system [C]. In Design Automation Conference, 2009. DAC’09. 46th ACM/IEEE.
2009: 664–669.
[261] Zhao J, Dong X, Xie Y. Cost-aware three-dimensional (3D) many-core mul-
tiprocessor design [C]. In Design Automation Conference (DAC), 2010 47th ACM/IEEE.
2010: 126–131.
[262] Dong X, Zhao J, Xie Y. Fabrication cost analysis and cost-aware design space
exploration for 3-D ICs [J]. IEEE Transactions on Computer-Aided Design of Integrated
Circuits and Systems. 2010, 29 (12): 1959–1972.
[263] Raghavan G. Five emerging DRAM interfaces you should know for your next
design [J]. Cadence Design Systems. 2013.
[264] Nai L, Kim H. Instruction offloading with hmc 2.0 standard: A case study for
graph traversals [C]. In Proceedings of the 2015 International Symposium on Memory
Systems. 2015: 258–261.
[265] Tremaine R B, Franaszek P A, Robinson J T, et al. IBM memory expansion
technology (MXT) [J]. IBM Journal of Research and Development. 2001, 45 (2): 271–
285.
[266] Kim S, Lee S, Kim T, et al. Transparent Dual Memory Compression Archi-
tecture [C]. In Parallel Architectures and Compilation Techniques (PACT), 2017 26th
International Conference on. 2017: 206–218.
[267] Luk C-K, Cohn R, Muth R, et al. Pin: building customized program analysis
tools with dynamic instrumentation [C]. In Acm sigplan notices. 2005: 190–200.
[268] Wilton S J, Jouppi N P. CACTI: An enhanced cache access and cycle time
model [J]. IEEE Journal of Solid-State Circuits. 1996, 31 (5): 677–688.
[269] Bienia C, Kumar S, Singh J P, et al. The PARSEC benchmark suite: Char-
acterization and architectural implications [C]. In Proceedings of the 17th international
conference on Parallel architectures and compilation techniques. 2008: 72–81.
[270] Bailey D H, Barszcz E, Barton J T, et al. The NAS parallel benchmarks [J].
The International Journal of Supercomputing Applications. 1991, 5 (3): 63–73.

第 152 页
国防科技大学研究生院博士学位论文

[271] D’Azevedo E F, Fahey M R, Mills R T. Vectorized sparse matrix multiply


for compressed row storage format [C]. In International Conference on Computational
Science. 2005: 99–106.
[272] Cooksey R, Jourdan S, Grunwald D. A stateless, content-directed data
prefetching mechanism [C]. In ACM SIGPLAN Notices. 2002: 279–290.
[273] Falsafi B, Wenisch T F. A primer on hardware prefetching [J]. Synthesis Lec-
tures on Computer Architecture. 2014, 9 (1): 1–67.
[274] Williams S, Oliker L, Vuduc R, et al. Optimization of sparse matrix–vector
multiplication on emerging multicore platforms [J]. Parallel Computing. 2009, 35 (3):
178–194.
[275] Malewicz G, Austern M H, Bik A J, et al. Pregel: a system for large-scale
graph processing [C]. In Proceedings of the 2010 ACM SIGMOD International Confer-
ence on Management of data. 2010: 135–146.
[276] Low Y, Bickson D, Gonzalez J, et al. Distributed GraphLab: a framework for
machine learning and data mining in the cloud [J]. Proceedings of the Vldb Endowment.
2012, 5 (8): 716–727.
[277] Ainsworth S, Jones T M. Graph prefetching using data structure knowl-
edge [C]. In Proceedings of the 2016 International Conference on Supercomputing. 2016:
39.
[278] Leskovec J, Krevl A. {SNAP Datasets}:{Stanford} Large Network Dataset
Collection [J]. 2015.
[279] Yu X, Hughes C J, Satish N, et al. IMP: Indirect memory prefetcher [C]. In
Proceedings of the 48th International Symposium on Microarchitecture. 2015: 178–190.
[280] Lakshminarayana N B, Kim H. Spare register aware prefetching for graph
algorithms on GPUs [C]. In High Performance Computer Architecture (HPCA), 2014
IEEE 20th International Symposium on. 2014: 614–625.
[281] Nilakant K, Dalibard V, Roy A, et al. PrefEdge: SSD prefetcher for large-scale
graph traversal [C]. In Proceedings of International Conference on Systems and Storage.
2014: 1–12.
[282] Zhang D, Ma X, Thomson M, et al. Minnow: Lightweight Offload Engines
for Worklist Management and Worklist-Directed Prefetching [C]. In Proceedings of the
Twenty-Third International Conference on Architectural Support for Programming Lan-
guages and Operating Systems. 2018: 593–607.

第 153 页
国防科技大学研究生院博士学位论文

[283] Al-Sukhni H, Bratt I, Connors D A. Compiler-directed content-aware


prefetching for dynamic data structures [C]. In Parallel Architectures and Compilation
Techniques, 2003. PACT 2003. Proceedings. 12th International Conference on. 2003: 91–
100.
[284] Ebrahimi E, Mutlu O, Patt Y N. Techniques for bandwidth-efficient prefetch-
ing of linked data structures in hybrid prefetching systems [C]. In High Performance Com-
puter Architecture, 2009. HPCA 2009. IEEE 15th International Symposium on. 2009:
7–17.
[285] Roth A, Sohi G S. Effective jump-pointer prefetching for linked data struc-
tures [C]. In ACM SIGARCH Computer Architecture News. 1999: 111–121.
[286] Lai S-C. Hardware-based pointer data prefetcher [C]. In Computer Design,
2003. Proceedings. 21st International Conference on. 2003: 290–298.
[287] Kim D, Kung J, Chai S, et al. Neurocube: A programmable digital neuromor-
phic architecture with high-density 3D memory [C]. In Computer Architecture (ISCA),
2016 ACM/IEEE 43rd Annual International Symposium on. 2016: 380–392.
[288] Dai G, Huang T, Chi Y, et al. GraphH: A Processing-in-Memory Architecture
for Large-scale Graph Processing [J]. IEEE Transactions on Computer-Aided Design of
Integrated Circuits and Systems. 2018.
[289] Nai L, Hadidi R, Sim J, et al. GraphPIM: Enabling instruction-level PIM of-
floading in graph computing frameworks [C]. In High Performance Computer Architec-
ture (HPCA), 2017 IEEE International Symposium on. 2017: 457–468.
[290] Aguilera P, Zhang D P, Kim N S, et al. Fine-Grained Task Migration for
Graph Algorithms Using Processing in Memory [C]. In Parallel and Distributed Process-
ing Symposium Workshops, 2016 IEEE International. 2016: 489–498.
[291] Ahn J, Hong S, Yoo S, et al. A scalable processing-in-memory accelerator
for parallel graph processing [J]. ACM SIGARCH Computer Architecture News. 2016,
43 (3): 105–117.
[292] Hong B, Kim G, Ahn J H, et al. Accelerating linked-list traversal through
near-data processing [C]. In Proceedings of the 2016 International Conference on Parallel
Architectures and Compilation. 2016: 113–124.
[293] Xu C, Wang C, Gong L, et al. OmniGraph: A Scalable Hardware Accelerator
for Graph Processing [C]. In Cluster Computing (CLUSTER), 2017 IEEE International
Conference on. 2017: 623–624.

第 154 页
国防科技大学研究生院博士学位论文

[294] Zhou S, Chelmis C, Prasanna V K. Accelerating large-scale single-source


shortest path on FPGA [C]. In Parallel and Distributed Processing Symposium Workshop
(IPDPSW), 2015 IEEE International. 2015: 129–136.
[295] Attia O G, Townsend K R, Jones P H, et al. A Reconfigurable Architecture
for the Detection of Strongly Connected Components [J]. ACM Transactions on Recon-
figurable Technology and Systems (TRETS). 2016, 9 (2): 16.
[296] Attia O G, Grieve A, Townsend K R, et al. Accelerating all-pairs shortest path
using a message-passing reconfigurable architecture [C]. In ReConFigurable Computing
and FPGAs (ReConFig), 2015 International Conference on. 2015: 1–6.
[297] Attia O G, Johnson T, Townsend K, et al. Cygraph: A reconfigurable architec-
ture for parallel breadth-first search [C]. In Parallel & Distributed Processing Symposium
Workshops (IPDPSW), 2014 IEEE International. 2014: 228–235.
[298] Ham T J, Wu L, Sundaram N, et al. Graphicionado: A high-performance and
energy-efficient accelerator for graph analytics [C]. In Microarchitecture (MICRO), 2016
49th Annual IEEE/ACM International Symposium on. 2016: 1–13.
[299] Dogan H, Hijaz F, Ahmad M, et al. Accelerating graph and machine learn-
ing workloads using a shared memory multicore architecture with auxiliary support for
in-hardware explicit messaging [C]. In Parallel and Distributed Processing Symposium
(IPDPS), 2017 IEEE International. 2017: 254–264.
[300] Song L, Zhuo Y, Qian X, et al. GraphR: Accelerating graph processing using
ReRAM [C]. In High Performance Computer Architecture (HPCA), 2018 IEEE Interna-
tional Symposium on. 2018: 531–543.
[301] Cheng C, Riley R, Kumar S P, et al. A loop-free extended Bellman-Ford rout-
ing protocol without bouncing effect [C]. In ACM SIGCOMM Computer Communication
Review. 1989: 224–236.
[302] Fanding D. A Faster Algorithm for Shortest-Path-SPFA [J] [J]. Journal of
Southwest Jiaotong University. 1994, 2.
[303] Sanderson C. Armadillo: An open source C++ linear algebra library for fast
prototyping and computationally intensive experiments [J]. 2010.
[304] Nai L, Xia Y, Tanase I G, et al. GraphBIG: understanding graph computing
in the context of industrial solutions [C]. In High Performance Computing, Networking,
Storage and Analysis, 2015 SC-International Conference for. 2015: 1–12.
[305] Murphy R C, Wheeler K B, Barrett B W, et al. Introducing the graph 500 [J].
Cray Users Group (CUG). 2010, 19: 45–74.

第 155 页
国防科技大学研究生院博士学位论文

第 156 页
国防科技大学研究生院博士学位论文

作者在学期间取得的学术成果

博士期间发表的学术论文

[1] Qian, Cheng, Libo Huang, Qi Yu, and Zhiying Wang. ”CHAM: Improv-
ing Prefetch Efficiency Using a Composite Hierarchy-Aware Method.” Journal of
Circuits, Systems and Computers27, no. 07 (2018): 1850114.(SCI 检索)
[2] Qian, C.; Childers, B.; Huang, L.; Guo, H.; Wang, Z. CGAcc: A Com-
pressed Sparse Row Representation-Based BFS Graph Traversal Accelerator on
Hybrid Memory Cube. Electronics 2018, 7, 307.(SCI 检索)
[3] Qian, Cheng, Bruce Childers, Libo Huang, Qi Yu, and Zhiying Wang.
”HMCSP: Reducing Transaction Latency of CSR-based SPMV in Hybrid Memory
Cube.” In Performance Analysis of Systems and Software (ISPASS), 2018 IEEE
International Symposium on, pp. 114-116. IEEE, 2018. (CCF-C,专业内顶级会
议,EI 检索)
[4] Qian, Cheng, Libo Huang, Qi Yu, Zhiying Wang, and Bruce Childers.
”CMH: compression management for improving capacity in the hybrid memory
cube.” In Proceedings of the 15th ACM International Conference on Computing
Frontiers, pp. 121-128. ACM, 2018. (CCF-C,EI 检索)
[5] Qian, Cheng, Bruce Childers, Libo Huang, Qi Yu, and Zhiying Wang. ”
CGAcc: CSR-based Graph Traversal Accelerator on HMC.” In Parallel Processing
(ICPP), 2018 46th International Conference on, poster. IEEE, 2018. (CCF-B,专
业内顶级会议)
[6] Qian, Cheng. ”Performance Test for Big Data Workloads on Various Emerg-
ing Memories.” In Advances in Computer Communication and Computational Sci-
ences, pp. 157-171. Springer, Singapore, 2019. (EI 检索)
[7] Qian, Cheng, Libo Huang, Peng Xie, Nong Xiao, and Zhiying Wang. ”Ef-
ficient data management on 3D stacked memory for big data applications.” In De-
sign & Test Symposium (IDT), 2015 10th International, pp. 84-89. IEEE, 2015.
2011.(EI 检索)
[8] Qian, Cheng, Libo Huang, Peng Xie, Nong Xiao, and Zhiying Wang. ”A
study on non-volatile 3d stacked memory for big data applications.” In International
Conference on Algorithms and Architectures for Parallel Processing, pp. 103-118.
Springer, Cham, 2015. (CCF-C,EI 检索)

第 157 页
国防科技大学研究生院博士学位论文

[9] John Johnson, Cheng Qian, Zachary Hull, Bruce Childers and Charles
Smith. ” CLEVERCUBE: Smart Memories Securing Architectures.” In Proceed-
ings of the International Symposium on Memory Systems, pp. 49-59. ACM, 2018.(EI
检索)
[10] Yu, Qi, Libo Huang, Cheng Qian, Jianqiao Ma, and Zhiying Wang. ”Eval-
uating Memory Performance of Emerging Scale-Out Applications Using C-AMAT.”
In Performance Analysis of Systems and Software (ISPASS), 2018 IEEE Interna-
tional Symposium on, pp. 117-119. IEEE, 2018.(EI 检索)
[11] Yu, Qi, Libo Huang, Cheng Qian, Jianqiao Ma, and Zhiying Wang. ”FC-
AMAT: factor-based C-AMAT analysis in memory system measurement.” Innova-
tions in Systems and Software Engineering (2018): 1-14.(EI 检索)
[12] Yu, Qi, Libo Huang, Cheng Qian, and Zhiying Wang. ”BC-AMAT: con-
sidering blocked time in memory system measurement.” In Proceedings of the Com-
puting Frontiers Conference, pp. 230-236. ACM, 2017. (CCF-C,EI 检索)
[13] Yu, Qi, Libo Huang, Cheng Qian, Jianqiao Ma, and Zhiying Wang. ”Factor-
based C-AMAT analysis for memory optimization.” In International Conference on
Verification and Evaluation of Computer and Communication Systems, pp. 79-91.
Springer, Cham, 2017.(EI 检索)
[14] Ma, Jianqiao, Qi Yu, Libo Huang, Cheng Qian, and Zhiying Wang. ”Trace-
based method for big data memory characteristics research.” In Advances in Com-
puting, Communications and Informatics (ICACCI), 2017 International Conference
on, pp. 1023-1027. IEEE, 2017.(EI 检索)
[15] Guo, Hui, Libo Huang, Yashuai Lü, Jianqiao Ma, Cheng Qian, Sheng Ma,
and Zhiying Wang. ”Accelerating BFS via Data Structure-Aware Prefetching on
GPU.” IEEE Access (2018).(SCI 检索)

第 158 页

You might also like