HMTT:一个坚持了15年的硬件项目

9月14日早上,和陈明宇老师一起得知美国微软研究院采购的第四代混合访存监测设备(HMTT v4)货款N万美元已经付到计算所。很高兴看到这项15年前研制的技术,今天还依然有效,依然具有先进性

自2005年开始研制HMTT(A Hybrid Memory Trace Toolkit),有部署在国内大厂,也为多家国际企业和大学提供过数据,曾经有一块装满访存Trace的硬盘在全世界飞(不过现在不知道在哪里了)。这次是第一次将HMTT卖到美国去。

2011年曾有一块硬盘在全世界飞

HMTT是我们自研的一种很有特色的计算机内存总线行为监测设备,比较小众,因为全世界只有少数几家企业能从事DRAM内存系统的研究与开发。最近几年随着非易失性存储NVM和DRAM开始结合,越来越多的企业投入到这方面的研究,于是想用HMTT的企业不断增加。2019年就收到了国际存储领军企业美国西部数据的来信,要购买HMTT,中间开过几次电话会议。我们也应对方要求专门录了一个视频放到了Youtube,但2019年5月份后就没有再联系了。

知乎视频www.zhihu.com图标

HMTT项目大概在2005年前后开始启动,是我在陈明宇研究员的指导下开展的博士工作。其实原理很简单——HMTT是一块插在内存槽上的卡,内存再插在HMTT卡上。这样HMTT就能获取到物理地址,再结合OS内核页表,就能将物理地址翻译为进程虚拟地址。但真的要实现出来,并在真实的机器上工作,却经历了太多技术挑战,必须搞清楚涉及到的每一个细节,否则设备就无法正常工作。

比如有一个问题困恼了近半年时间,最后才发现是自己存在一个知识盲点,没搞清楚IOMMU的工作原理;又如HMTT卡上的时钟和DDR总线时钟频率并不完全一样,还存在相位漂移,导致采集数据会出现丢失问题。对我而言,解决每一个问题都让我有一种收获感。而更大的挑战其实是以前都是做软件开发,完全没有接触过硬件,这是我做的第一个硬件项目!于是,我从零开始学习Verilog、学习FPGA、学习DDR规范、学习BIOS……

第一版HMTT开发了好几年,最后是在2007年的五一劳动节彻底调通,实现进程虚拟地址的获取,那一刻的兴奋感现在还记忆犹新。此后,HMTT还幸运地发表在2008年计算机系统评测顶级会议SIGMETRICS上(据了解应该是大陆第一篇),获得了计算所优秀论文一等奖。后来与当时在龙芯读博士的唐丹合作,用HMTT来收集I/O访存Trace,分析DMA访存特征,并提出DMA Cache优化技术,又发表于2010年的计算机体系结构顶会HPCA,再次获得计算所优秀论文一等奖。

2012年后我转向新的研究方向,而十几年来陈明宇老师带领团队一直持续研制了HMTT v2、 HMTT v3以及HMTT v4。目前支持DDR4-1600/1866,能在Intel Skylake/Coffeelake/Broadwell, AMD Ryzen等平台上工作。

HMTT v4近照:内存条插在HMTT卡上
HMTT工作照

HMTT对教学也起到了帮助。有一次,在给国科大本科生上操作系统,讲虚拟内存管理,虚拟地址如何映射到物理地址,忽然想起了HMTT。于是找出了老幻灯片,给学生们展示了当时做的QuickSort访存行为监测例子,讲解物理地址与虚拟地址之间的区别与映射关系——用HMTT能够实时监测的QuickSort访存行为,可以看到杂乱无章的物理访存,但映射到虚拟地址后能明显地看到QuickSort排序的特点

知乎视频www.zhihu.com图标

HMTT让我体会到了做计算机系统工作的乐趣,也深深地影响了我此后的科研风格——不满足于软件模拟,而是希望做出真正可工作的原型系统,哪怕需要花几年时间,哪怕论文发表少了些

然而现在也开始面临一些外部压力。这种研究风格的一个很大的不足就是学生论文少,但随着企业招聘也开始越来越看重顶会论文,使一部分学生产生了“论文焦虑感”。所以呼吁企业在招聘时能综合考虑学术论文与原型系统。

最后分享几张早期三代HMTT的照片:

HMTT v1 (2006年)
HMTT v2 (2008年)
HMTT v3

编辑于 09-18