近日,北京大学信息科学技术学院计算机科学技术系肖臻研究员领导的课题组开发出一套基于硬件辅助虚拟化的多核确定性重演系统,引起业界广泛关注。确定性重演是指在处理器指令执行过程中,通过记录开始时的状态和执行过程中的必要信息,从而使得将处理器恢复到开始位置重新根据记录的信息执行这一系列指令后,能够获得与前一次执行完全相同的结果。虚拟机确定性重演技术在软件调试、信息安全、入侵检测、病毒行为分析、双机热备份等众多领域有广泛的应用。

针对单核处理器的确定性重演系统已经比较成熟,并且出现了商用系统,然而多核处理器环境的出现给确定性重演带来了极大的挑战。在多核环境下,多线程程序的各个线程对共享内存的交织访问是导致程序执行结果不确定的重要原因之一。业界已有的在多核环境下进行确定性重演的方案往往需要修改处理器架构增加专门用于记录的硬件,从而使得成本大大提高,目前还没有任何一家能够在实际中得到推广。

肖臻研究员领导的课题组第一次提出基于硬件辅助虚拟化的技术从软件上实现多核虚拟机在线确定性重演。该系统采用了基于指令块的方法,通过内存访问写时复制机制和指令块的提交-回滚机制保证指令块的执行满足原子性和可串行性。该方法利用Intel CPU中已有的硬件辅助虚拟化特性,不需要对硬件做任何修改,就可以把虚拟机多核确定性重演的效率提高一个数量级,把检查点恢复的延迟降低一个数量级,从而使该项技术真正走向实用。

肖臻课题组从事虚拟机确定性重演的研究已经有十几年的历史,在国际著名会议和期刊上发表了很多论文,相关成果都以开源软件的方式发布到社区,供大家免费使用。肖臻课题组目前正在致力于利用确定性重演技术实现智能合约的高效、细粒度并发执行。已有的区块链技术(比如以太坊中的智能合约)只支持单线程,就是因为在多核环境下并行程序的执行存在不确定性,影响区块链中的节点达成共识。肖臻课题组开发的确定性重演技术有希望极大地提高智能合约的执行效率,成为区块链3.0中不可或缺的核心技术。

有关该课题组的更多信息,请参考肖臻研究员的主页:http://zhenxiao.com/