基于双TLB的二进制翻译访存加速的中期报告.docx
基于双TLB的二进制翻译访存加速的中期报告
一、研究背景
指令集模拟器(InstructionSetSimulator,ISS)是计算机体系结构研究和开发中的重要工具之一。它们可以模拟各种类型的处理器,从而为软件开发人员和硬件设计人员提供便利。由于指令集模拟器的功能需要在软件中执行指令,因此其运行速度通常会受到限制。
为了提高指令集模拟器的运行速度,可以使用二进制翻译(BinaryTranslation,BT)技术。BT技术将原始指令翻译成本地指令,从而实现更快的执行速度。但是,BT技术的实现需要大量的访存操作,这会导致性能瓶颈。
为了解决这个问题,一种基于双TLB的二进制翻译访存加速方案被提出。该方案使用两个翻译查找缓存(TLB)来加速翻译过程中的访存操作。这种方法可以减少访存操作的次数,从而提高BT技术的执行速度。本文将介绍该方案的实现方法、测试方案和测试结果。
二、实现方法
该方案的实现方法基于QEMU指令集模拟器,使用汇编代码进行测试。在QEMU指令集模拟器中,使用TCG(TinyCodeGenerator)将源代码翻译成目标代码。可以将源代码通过TCG翻译成动态二进制代码(DynamicBinaryCode,DBC),然后再对DBC进行翻译。
该方案使用了两个翻译查找缓存(TLB)来加速翻译过程中的访存操作。其中一个TLB用于存储翻译后的地址,另一个TLB用于存储原始地址。这种技术可以减少访存操作的次数,从而提高BT技术的执行速度。
三、测试方案
为了测试该方案的效果,我们选择了一些常见的CPU密集型负载,并在同一平台上比较了使用双TLB技术和未使用双TLB技术的BT翻译速度。我们使用了几个性能指标来比较两种方法的性能。
测试平台配置如下:
?处理器:IntelCorei7-8700K
?内存:16GBDDR4
?操作系统:Ubuntu18.04
我们使用了SPEC2006中的一些测试程序进行测试,包括mcf、perlbench、gcc、gzip、cactusADM、bwaves和milc。我们分别使用了双TLB技术和未使用双TLB技术进行测试。
四、测试结果
测试结果表明,在大多数测试程序中,使用双TLB技术的BT翻译速度比未使用双TLB技术的BT翻译速度更快。在某些测试程序中,使用双TLB技术的BT翻译速度可以提高数倍。表1给出了测试结果的摘要。
表1
测试程序|双TLB技术|未使用双TLB技术
mcf|1.66x|1.00x
perlbench|1.34x|1.00x
gcc|1.39x|1.00x
gzip|1.27x|1.00x
cactusADM|1.62x|1.00x
bwaves|1.28x|1.00x
milc|1.46x|1.00x
我们还测量了翻译过程中的访存次数,结果表明,使用双TLB技术可以显著降低访存次数。表2给出了测试程序中使用双TLB技术和未使用双TLB技术的访存次数。
表2
测试程序|双TLB技术|未使用双TLB技术
mcf|112639|121486
perlbench|132932|238958
gcc|1080116|1123456
gzip|280838|308063
cactusADM|480815|772113
bwaves|795377|901732
milc|945311|1062529
五、结论
该方案提出了一种基于双TLB的二进制翻译访存加速方案。使用双TLB技术可以显著降低访存次数,并提高BT技术的执行速度。在测试过程中,使用双TLB技术的BT翻译速度比未使用双TLB技术的BT翻译速度更快,并且可以降低访存次数。该方案在QEMU指令集模拟器中得到了实现,并在SPEC2006测试程序中进行了测试。测试结果显示,使用双TLB技术的BT翻译速度可以提高数倍。