论文部分内容阅读
随着多核技术的发展,核心数目的增加使得内存容量和带宽的需求相应的增加;应用和操作系统的发展也需要越来越多的内存资源,使得性能和容量的矛盾更加突出。在传统的紧耦合体系结构下,由于处理器和内存是紧密相连的,本地内存配置有限,很难满足未来内存增长的需求,还会导致资源不匹配、频繁进行系统升级、资源共享困难等问题。光互联和高速电路技术的应用和发展使得高带宽、低延迟的网络得到普遍应用,用网络内存来提供一个灵活的访存系统成为可能。
本文主要针对网络内存客户端的访存体系结构,性能模型和性能优化技术等进行研究,并设计和实现了软件网络内存服务系统NMS和硬件的远程内存原型系统,研究网络内存性能、资源管理、可靠性、可扩展性和使用模式。
基于网格化的动态自组织计算机体系结构DSAG(Dynamic Self-organized computerArchitecture based on Grid-component)思想,本文提出了一种网络内存客户端的访存优化架构。通过一个智能网络内存控制器来直接访问网络内存,在这个智能网络内存控制器中构建虚拟地址页缓存来减少远程访存,并使用一个基于访存流特征的预取机来进一步提高访存性能。
在该体系结构下,构建了一个网络内存的性能模型,评价了不同的本地内存配置和网络访存延迟对于应用性能的影响。基于Linpack,Blast,Quicksort和SPEC2000,SPEC2006等应用的访存序列模拟分析表明,在这种远程内存访存结构下,使用高速网(如Infiniband或光互联等)和流预取机,对规则访存应用可以取得和全本地内存配置相近的性能(Linpack的减速比1.4),从而验证了以少量性能下降换取灵活的远程内存扩展方法的可行性。
针对科学计算应用的特点,本文提出了一种可变步长的带状流检测算法VSS(Variable Stride Stream)来发现应用的访存特征。VSS解决了固定步长流检测算法下,循环访问中虚拟页地址的跳跃问题,消除了断流,减少了伪流,可以有效提高访存流识别率和流的覆盖率。如对Linpack,相比固定步长检测算法,VSS可以提高30%的访存覆盖率。
提出了一种基于时钟步长的多步流预取优化算法。利用访存监控部件获取的访存时间信息,在生成流的同时按照时间步长进行分析,确定预取的长度。该优化算法解决了在流预取下,某些应用预取页面不能及时取回的问题,可显著提高预取命中率,减少远程访存,如对于Linpack相比单步预取可以减少90%的远程访存。
提出了一种KNP(Keep Next Page)算法配合流预取管理本地页缓存和预取缓冲区,利用访存流特性,提高本地缓存命中率,减少远程访存。如对Linpack最多提高20%的本地cache命中率。
设计和实现了基于两级服务结构的软件网络内存系统NMS(Network MemorySetvice)。NMS实现了动态化内存资源管理,并提出了一种资源评价和拍卖模型来解决网络内存资源冲突。另外对系统的延迟、带宽、可扩展性等指标进行了测试,并采用多个应用对系统进行了性能评价。在千兆以太网下,NMS系统4K页的远程访存延迟约为200us,相比磁盘性能具有明显优势,对于应用性能有很大提高,比如对mysql的查询,性能最高可以提高20倍。
设计和实现了一个基于PCI的内存扩展系统,一块基于PCIx的扩展卡可以提供24GB的板上内存和最高1GBps的访存带宽。把该扩展卡作为硬件网络内存的一种实现原型,研究远程内存的应用模式。