● 摘要
存储器是所有计算机系统中的一个关键组件,在各种类型的系统,如服务器、嵌入式系统、桌面系统、移动设备还有传感器网络中都是不可或缺的。随着计算系统规模的增长,存储系统无论在容量、能耗、成本、性能还是管理算法等方面,都需要保持持续发展,才能维持整体的系统性能,满足应用的需求。不幸的是,尽管处理器性能延续着摩尔定律的高速发展,存储系统的发展速度却无法与之匹配。两者之间的性能鸿沟变得越来越大。上个世纪九十年代,人们就提出了由这一性能差异造成的“存储墙”问题,并预言其最终将成为整个计算机系统的性能瓶颈。
随着近几年来半导体工艺技术的发展,单个芯片上的晶体管数量持续增长,微处理器进入了多核时代。多核处理器突破了单核处理器的物理极限以及功耗障碍等难题,通过多个相对简单的处理内核的并行工作大大提高了处理器的系统性能。由于其显著的性能优势,多核架构已经被应用于从高端服务器处理器到 PC 机的各个计算机应用领域,片上多核处理器已经正式替代单核结构,成为微处理器发展的主流。
多核架构的高并行性带来了强大的处理能力,更加需要存储系统提供低时延,高带宽和低功耗的服务,“存储墙”现象亟需得到缓解。为了解决这一问题,人们从不同的角度提出了大量的研究。比如提出新型的存储介质,设计新型的DRAM结构等。我们则从访存行为的角度进行分析,发现对主存的访问可以分为DRAM刷新、由于Cache不命中产生的常规访存请求以及预取操作这三类。这些访存请求的调度服务机制在多核结构下面临着新的优化问题。
首先,随着系统规模的扩展,需要刷新的内存单元越来越多。刷新一方面会增加访存请求的时延,造成处理器的长时间虚耗,另一方面会大量消耗系统功耗,最终造成系统能效的降阶,制约存储系统的扩展性。因此,为了提高访存性能,降低刷新能耗,需要对传统的刷新模式进行优化,尽量减少刷新操作。
其次,在多核环境下,数量众多的处理器内核以及应用共享存储资源,除了对存储容量和带宽这些传统性能的需求日益增长之外,还要求存储系统能够同时管理并控制不同内核和应用之间的访存干扰,保证对不同应用的服务质量。原有的单核系统的访存调度算法已经不能很好的适用于多核环境,会造成资源共享的多线程之间的不公平性,最终导致处理资源的大量浪费,系统整体性能的明显降阶。因此,有必要重新设计适用于多核多线程系统的访存调度算法,在兼顾访存效率的同时维持整体的公平性。
第三,随着系统规模的扩大,每个内核实际可以分配到的带宽资源进一步减少,预取可能不但无法有效的隐藏访存时延,还会造成访存性能下降。因为使用预取可能会引入过量的片外访存请求,大量占用访存带宽,推迟正常访存操作的进行,进一步造成访存过载。所以需要针对预取提出新的调度机制,以访存为核心,根据带宽实际情况动态调度预取请求,减少不恰当预取带来的各种负面影响。
围绕上述问题,为缓解片上多核系统的访存瓶颈,本论文通过分析访存行为的类型和特征,分别为DRAM刷新,常规访存请求和预取操作这三种类型的访存行为提出了新的优化机制。本文的主要贡献如下:
1.提出了一种基于纠错模式的DRAM刷新机制DRAM-ECP,可以向主存系统提供统一的低刷新频率。该机制采用纠错模式屏蔽在低频模式下出现的泄漏单元,使用纠错指针保证了数据的正确性。同时提供了简单快捷的泄漏单元查验,可以与主存访问并行进行。DRAM-ECP大大减少了主存的刷新操作,有效控制了刷新能耗。
2.提出一种公平的线程感知的访存请求调度策略FTAM,可以消除传统访存调度算法造成的多个线程之间的不公平性现象。这是一种轻量级的线程感知的调度策略,无论是时间还是空间成本都很低。FTAM基于访存请求的等待时间,来源线程以及不同线程的访存调度服务历史建立了一种简单灵活的多参数优先级计算规则,在保证系统吞吐量的前提下有效保证了线程间公平性。
3.提出了一种对访存场景感知的协同硬件预取方法SACOP,可以解决不恰当预取对有限的存储资源带来的资源浪费和性能下降。SACOP根据访存控制器等待队列和访存带宽使用的实际情况,在充分的利用访存带宽的前提下调度预取操作。SACOP可以避免因过多预取操作带来的访存过载,提升存储器访问效率;显著的减少对有效Cache行的不正确置换,同时并不引入过多额外的存储开销;同时还可以极大的减少由被置换的Dirty Cache行带来的二次访存拥塞。