论文部分内容阅读
“存储墙(Memory Wall)”问题是制约计算机性能的主要瓶颈之一。在集成电路工艺进步的促进下,计算机系统结构发生巨大变化。多核处理器成为计算机系统结构发展的必然趋势,需要准确的实验方法快速模拟多核系统中多线程程序的内存性能。系统结构的变化促进大数据(Big Data)时代到来,多数应用依赖于多核处理器构成的大规模分布式存储后台。新型的内存键值存储(In-Memory Key-Value Store,即IMKVs)的出现受到内存系统研究者们的关注。如何优化内存系统结构,提高内存键值存储的内存系统性能,成为亟待解决的问题。同时,嵌入式多核处理器的内存系统能耗制约着嵌入式系统的工作周期,需要能够准确描述程序访存密度和访存能量关系的模型指导内存系统结构设计和优化。 本文选择多核处理器内存系统为研究目标,针对多线程程序内存系统仿真、内存键值存储系统优化、以及嵌入式多核系统的内存结构,提出准确快速实验方法和分析模型,并优化内存系统结构设计,主要工作包括以下几个方面: 针对研究多线程内存系统时,路径驱动(trace-driven)仿真方法不能建模多线程程序的并行线程间(inter-thread)行为,比如线程间的序和同步,导致宏观trace错位的问题,提出一种新的多线程程序内存系统路径驱动仿真模型。这个模型结合动态插桩工具,在线程中关键执行点插桩,截获多线程程序执行过程中,线程获得锁的顺序和线程在栅障函数作用下的同步行为,将锁的顺序和同步关系记录到trace中。在trace回放仿真阶段,模拟器精确重建线程获得锁的顺序和栅障函数的同步行为。实验表明上述内存系统模拟方法避免宏观trace错位后仿真指标降低大约10%。 针对路径驱动方法中仅仅依靠每个访存操作的主要内存信息,比如访存地址、数据大小等等进行仿真,而缺少必要的操作数寄存器信息,无法进行访存操作依赖的检查,导致微观trace错位问题,提出trace收集阶段维护寄存器和访存操作的映射关系,把寄存器依赖关系转换成访存操作依赖关系,准确模拟访存操作之间依赖关系决定访存操作的执行时刻和顺序。实验表明优化后的内存系统模拟方法避免微观trace错位后,部分访存密集型程序仿真指标降低超过50%。综合避免宏观和微观访存错位,多种内存系统指标降低10%~20%。 通过详细分析内存键值存储系统中的数据访问,发现IMKVs存在规律的主存数据访问模式。这个模式可以用来实现有效的数据预取。结合键值对(Key-Value)的数据结构,提出一种简单有效的方式来扩展内存控制器设计,进行数据预取。针对数据预取中需要解决的两个问题:数据预取的大小和数据预取地址,提出两种不同技术实现预测。同时对比分析这两种技术的设计优缺点,并进行全面的仿真实验评估采用上述技术对提高真实内存键值存储系统的有效性。实验表明采用预取技术能够提高内存系统性能35.4%。此外,评估两种不同预取技术带来的功耗开销。 通过分析嵌入式系统中Scratchpad Memory(SPM)的访问宽度和单位平均访问能量的关系,提出分析存储器访问能量的Arrowline模型和Hillslope模型。实验测试对比显示上述模型能够根据应用程序的访存密度预测内存系统访问能量,指导内存系统设计。在此基础上提出混合宽度SPM结构设计,优化嵌入式多核系统内存设计。功耗仿真实验显示混合SPM结构设计能够有效减少嵌入式系统在典型算法应用中的内存访问能量,最高可以降低52%。