NBJL 2020论文导读18: Hybrid2: Combining Caching and Migration in Hybrid Memory Systems
潘宇
论文下载地址:https://ieeexplore.ieee.org/document/9065506?denied=
发表时间:2020
会议名称:HPCA
作者信息:Evangelos Vasilakis ; Vassilis Papaefstathiou ; Pedro Trancoso ; Ioannis Sourdis
一、论文摘要
3D-stacked DRAM作为近存(NM)可以增加内存带宽,但是容量有限,通常需要用较大的远存(FM)进行补充,例如off-chip DRAM,但其带宽较低。过去,如何充分利用NM带宽和FM的容量最大化系统性能主要包括两种思路:一种为缓存策略,即NM作为缓存,FM作为主存;另一种为数据迁移方案,即NM和FM混合为一个平坦地址空间,两者之间进行数据迁移。两种方案在性能,主内存容量,数据传输成本等方面存在差异、各有优劣,两者也共同面临着与数据传输粒度和元数据管理相关的挑战。基于此本文将缓存和数据迁移两者方案思路结合,提出了名为Hybrid2的混合内存系统,旨在保留两者优势,针对共同挑战进行改进,最大程度地减少其开销。
本文的贡献如下:
1. 提出了一种新型混合内存架构,该架构结合了3D-stacked DRAM中的缓存和迁移功能。
2. 通过使用统一的机制,减轻了DRAM缓存标签查找和数据迁移地址重新映射的等待时间和流量开销。
3. 通过使用3D-stacked DRAM的一小部分作为高速缓存,Hybrid2可以快速适应工作集的变化,优于最新的数据迁移方案。
4. 与最先进的DRAM缓存方案的性能相近,并且在内存密集型工作负载中性能优于它们,同时为平面内存地址空间提供了几乎所有3D-stacked DRAM容量。
在近存和远存容量比为1:16、1:8和1:4的情况下,Hybrid2与当前的最新数据迁移方案相比平均提高了7.9%,9.1%和6.4%,和最新的缓存方案相比,在相同的实验配置下,只损失0.3%,1.2%和5.3%的性能的情况下,获得了5.9%,12.1%和24.6%的主存容量。
二、论文内容
Hybrid2选择一小部分NM作为Cache,剩余NM和FM作为主存。数据以高速缓存行粒度(例如64字节)被提取到DRAM高速缓存,而DRAM高速缓存标签以扇区为粒度(例如2KB)。小型的DRAM高速缓存与粗粒度扇区结合在一起,可以将标签完全保留在芯片上。从DRAM缓存中逐出的扇区,迁移机制将决定是将其迁移到NM还是将其逐出到FM。Hybrid2的总体框架如下图所示:
Hybrid2主要由处理器,3D堆栈DRAM和常规DRAM组成。在该系统中,常规DRAM是FM,3D堆叠DRAM是NM。 阴影部分是DRAM缓存迁移控制器(DCMC)。DCMC是在DRAM缓存控制器基础上增加一些其他结构进行了补充,可以同时支持DRAM缓存和迁移。DCMC负责管理DRAM缓存的内容,转换重新映射的扇区的地址,选择要迁移到NM的扇区,并组织迁移,本文主要的设计在DCMC中实现。
扩展标签数组(XTA)是DCMC中很重要的设计部分。它是一个片上标签数组,包含DRAM缓存的所有标签。从这个图可以看出它是组相连的,每个组都保存有多个扇区的条目,每个扇区的每个Cacheline均带有有效位和脏位。如下图所示:
其中白色字段是扇区Cache所需的常规字段,包括扇区的标签和该扇区的状态位,状态位包括每个Cacheline的有效位和脏位。剩下的是设计所需的附加内容,计数器和两个指针,一个指向NM里的位置,一个指向FM里的位置。计数器记录对该扇区的访问次数,并用它来确定从DRAM缓存中逐出扇区后是否把这个扇区迁移到NM。
下图举了两个例子,上面的XTA条目代表的是一个部分数据存在于DRAM高速缓存中还未迁移到NM的扇区,因此,该扇区的某些高速缓存行已被提取到NM,XTA条目对应的有效位有效。脏位标记了在DRAM高速缓存中时已写入的扇区的高速缓存行。 NM指针显示该扇区在NM中的位置,而FM指针指示该扇区在FM中的位置。下面的XTA条目代表的是一个已完全迁移到NM的扇区,NM指针指示其位置。对于迁移到NM的扇区,不使用FM指针,并将保存所有有效位和脏位设置为1。
Hybrid2的内存空间布局如下图所示:
可以看出NM的一部分作为DRAM缓存,剩余的大部分NM和FM混合成一个平坦地址空间,在Hybrid2的设计中,可以对NM和FM页面中的所有地址进行重新映射。 因此在NM中需要保留一个重映射表和一个反向重映射表。重映射表存储从处理器物理地址到每个扇区所在的NM或FM中实际位置的映射,反向重映射表保存了NM中所有位置的处理器物理地址。除了重新映射和反向重新映射表之外,还有一个保留所有当前不包含有效数据的FM位置的堆栈(Free-FM-Stack),这意味着这些扇区已迁移到NM,但未被其他扇区覆盖数据。此堆栈的大小受DRAM缓存中可容纳的扇区数的限制。总体而言,重新映射数据结构所需的空间为NM容量的3.5%。
在Hybrid2中,所有内存请求都通过DCMC,当请求到达DCMC时,使用其地址来索引XTA,判断DRAM高速缓存中所需的扇区和高速缓存行是否可用。如下图所示,分为四种情况:
1 XTA命中,根据需要的cacheline是否命中分为两种情况
1.a XTA命中/缓存行命中:在这种情况下,请求的缓存行位于NM中。扇区可以位于NM或FM中,无论哪种方式,都可以通过NM指针在NM中使用需要的缓存行。
1.b XTA命中/高速缓存行未命中:这种情况下,XTA中有请求扇区的条目,但是所需的高速缓存行无效;这意味着该扇区位于FM中,并且只有一些缓存行已被提取到DRAM缓存中。使用FM指针从FM读取高速缓存行,使用NM指针将其写入NM中的对应位置。
2 XTA未命中,这种情况下,XTA不包含与请求的扇区匹配的条目。所请求的扇区可以位于NM (2.a)或FM (2.b)中。使用处理器物理扇区地址作为索引来访问重映射表,找到扇区在内存系统中的位置。不管扇区位于NM还是FM,都会在XTA中为该扇区分配一个条目。
2.a XTA Miss /扇区在NM中:该扇区位于NM中因此该扇区的所有高速缓存行已经在NM中,将XTA条目对应更新; NM指针设置为扇区的NM位置,并且所有高速缓存行都标记为有效和脏的。 XTA条目的FM指针设置为零,表示该扇区位于NM中。
2.b XTA Miss /扇区在FM中:该扇区位于FM中,因此需要在NM中为该扇区分配空间,并将请求的缓存行从FM中提取到NM中新分配的位置。随后,用新的扇区更新XTA; NM指针设置为新分配的NM位置; FM指针设置为扇区的FM位置;只对提取的缓存行设置有效,根据所请求的类型是否设置脏位。为了确保在NM中进行分配时的正确性,即使该扇区尚未迁移到NM,也会使用扇区处理器的物理地址来更新反向重映射表。这种情况需要几个元数据操作,但是,平均只有9.3%的内存系统访问需要这种处理,并且根据评估元数据管理对性能的影响最小。
在NM中给扇区分配空间采取的是一种类似于FIFO的策略,找到第一个不在Cache中的扇区,其主要流程如下:
使用一个NM计数器代表着NM中所有的可用扇区,每次需要在NM中分配扇区时对NM计数器加一,找到一个备选扇区,然后查找反向重映射表获得其处理器物理地址,使用地址查找XTA确认该扇区是否在Cache中,若在,该扇区不可分配,继续对NM计数器加一对下一个备选扇区进行判断,若不在则该扇区可分配,从FM-free-stack找一个空闲的FM扇区将所选NM扇区数据复制到FM中,更新对应的重映射表项。
对于DRAM Cache的替换流程如下图所示:
采用LRU策略找到被替换的扇区,而该扇区有两种可能,已经迁移到NM的扇区和部分或全部cacheline被提取到NM的FM扇区。对于迁移到NM的扇区,其重映射表在迁移到NM时已经更新,反向重映射表在其第一次提取数据到NM时已经更新,因此对于这种情况直接更改XTA条目即可;而对于另一种情况,需要通过迁移策略决定是将该FM扇区迁移进NM还是逐回FM。若逐回FM,只需将脏的cacheline写回FM,若迁移到NM,则需要将所有无效的Cacheline从FM读到NM,然后更新重映射表项。
对于迁移策略,主要考虑三个因素:访问次数,迁移代价和迁移带宽。
访问次数是利用访问计数器(9位)来判断,对于逐出扇区,其访问次数如果大于等于其余扇区的访问次数,选择迁移到NM,若有其他扇区访问次数大于逐出扇区,则选择逐回到FM。只对未迁移过的扇区增加计数,比较时忽略达到最大值的扇区,以避免饥饿。对于迁移代价,比较迁移和逐出的代价,将两者相减,逐出代价为需要写回FM脏的cacheline的数目,迁移代价为扇区cacheline总数减去有效的数目,即要从FM读入的cacheline数目,再加上一个扇区cacheline总数,因为需要将NM扇区数据写入FM,再加一个更新重映射表的操作。迁移代价相关公式如下所示:
对于迁移带宽,使用一个计数器记录FM访问次数,每次使用迁移代价Netcost和FM访问次数比较,如果小的话进行迁移,然后从计数器减去Netcost本质上它为允许迁移的FM访问设置了上限,定期重置计数器(每100K个周期)以适应工作负载阶段的变化。
综合三种因素其迁移决策的整体流程如下图所示:
对于逐出扇区,先计算迁移代价Netcost,然后将其和FM计数器比较,代价更高逐出到FM,代价更低根据访问次数进行判断,与其他Cache的扇区比较访问次数,若都大于等于其他扇区的访问次数,则选择迁移到NM中来,若小于一个其他扇区的访问次数,仍选择逐回到FM。
三、自己的认识和体会
对于3D-stacked DRAM带宽高、容量小和常规DRAM带宽低而容量大的特征,和DRAM和PM之间的关系相仿,将缓存和数据迁移方案结合的思路和访存方式可以借鉴尝试。另外本文的有关缓存方案和数据迁移方案的相关工作都做的很充分,里面有很多值得参考和借鉴。