基于QEMU的高效指令追踪技术.pdf
《基于QEMU的高效指令追踪技术.pdf》由会员分享,可在线阅读,更多相关《基于QEMU的高效指令追踪技术.pdf(8页珍藏版)》请在咨信网上搜索。
1、基于 QEMU 的高效指令追踪技术王涛,秦宵宵,徐学政,王璐,方健(军事科学院国防科技创新研究院,北京100071)通信作者:徐学政,E-mail:摘要:系统模拟器通过模拟处理器、内存、外设等硬件资源创建一个完整的虚拟计算机环境,支持运行和调试不同架构的软件,可大大缩短跨架构的软件开发周期.模拟器的调试模块通常具有指令追踪功能,可记录程序运行的指令序列以用于进一步分析,如程序运行时间评估、程序行为模式分析、软硬件联合仿真等.支持 RISC-V 架构的主流模拟器 QEMU 和 Spike 均具有指令追踪功能,但其时间和空间开销过大,在应对规模较大的应用时效率低下.本文提出了一种基于 QEMU 的
2、指令追踪技术,将程序中的基本块、控制流图等静态信息与分支选择等动态信息解耦,在保证指令序列不失真的同时高效追踪执行序列.相比 QEMU 原生实现的指令追踪,本文提出的指令追踪技术的时间开销平均降低了 80%以上,空间开销平均降低了 95%以上.此外,本文面向 RISC-V 架构,实现了多种场景下的指令序列离线分析,包括指令分类统计、程序热点标记、行为模式分析等.关键词:QEMU;RISC-V;指令追踪;模拟器;处理器引用格式:王涛,秦宵宵,徐学政,王璐,方健.基于 QEMU 的高效指令追踪技术.计算机系统应用,2023,32(11):310.http:/www.c-s- Instruction
3、 Tracing Based on QEMUWANGTao,QINXiao-Xiao,XUXue-Zheng,WANGLu,FANGJian(DefenseInnovationInstitute,AcademyofMilitarySciences,Beijing100071,China)Abstract:Thesystememulatorcreatesavirtualenvironmentbyemulatinghardwareresourcessuchasprocessor,memory,andperipherals,whichcansupportsoftwarerunninganddebug
4、gingofdifferentarchitecturesandgreatlyshortenthecross-architecturesoftwaredevelopmentcycle.Theemulatorusuallysupportsinstructiontracingandcanbeemployedforanalysisbyrecordingtheinstructionsequenceofprogramrunning,suchasrunningtimeevaluationandbehaviorpatternanalysisrelatedtotheprogram,andjointemulati
5、onofsoftwareandhardware.AsthemainstreamemulatorssupportingRISC-Varchitecture,bothQEMUandSpikesupportinstructiontracing.However,theyaretime-andspace-expensiveandinefficientwhendealingwithlarge-scaleapplications.Thus,thisstudyproposesaninstructiontracingtechnologywithQEMU.Wheninstructionsaretracedwith
6、outdistortion,staticinformationsuchasbasicblocksandcontrolflowchartsintheprogramisdecoupledfrombranchselectionandotherdynamicinformation.ComparedwiththenativeinstructiontracingimplementedbyQEMU,theproposedtechnologyreducesthetimeoverheadbymorethan80%andthespaceoverheadbymorethan95%.Additionally,base
7、donRISC-Varchitecture,thisstudyrealizesoff-lineanalysisofinstructionsequencesinvariousscenarios,suchasinstructionclassificationstatistics,programhotspotmarking,andprogrambehavioranalysis.Key words:QEMU;RISC-V;instructiontracing;emulator;processor计算机系统应用ISSN1003-3254,CODENCSAOBNE-mail:ComputerSystems
8、&Applications,2023,32(11):310doi:10.15888/ki.csa.009330http:/www.c-s-中国科学院软件研究所版权所有.Tel:+86-10-62661041基金项目:国家自然科学基金(62102439)本文由“RISC-V技术及生态”专题特约编辑邢明杰高级工程师、宋威副研究员、张科正高级工程师以及易秋萍副教授推荐.收稿时间:2023-03-29;修改时间:2023-06-27;采用时间:2023-07-21;csa 在线出版时间:2023-09-15CNKI 网络首发时间:2023-09-18SpecialIssue专论综述31引言 1.1 研
9、究背景以 QEMU1为代表的系统模拟器通过模拟 CPU、内存、外设等硬件资源创建一个完整的虚拟计算机环境,支持运行和调试不同架构的软件.模拟器在芯片设计和验证阶段被广泛使用,相比各类硬件仿真平台具有明显的速度优势,这主要得益于其高度抽象的实现方式:在模拟一个目标设备时,模拟器可以根据需要对其行为进行抽象建模并实现.例如,QEMU 忽略了 CPU的部分微架构实现,仅对指令集的语义进行建模,大大加快模拟速度的同时保证了上层软件的跨架构运行,能够显著缩短跨架构的软件开发周期2,3.模拟器的调试模块通常具有指令追踪功能,可记录程序运行的指令序列以用于进一步分析.例如:(1)通过统计指令序列中各类型指令
10、的数目粗略评估程序的实际运行时间;(2)通过程序各时间段的基本块采样分析程序的行为模式4,5;(3)通过对程序热点片段的标记和提取进行软硬件的联合仿真等.利用模拟器准确和高效地对目标程序进行指令追踪,是进行各类分析的基础.在硬件层面,芯片通常会提供硬件性能计数器、追踪和调试模块等机制帮助用户进行性能分析6,模拟器的调试和追踪模块是对相应硬件抽象模拟,从而实现跨架构的性能分析.在软件层面,可利用插桩技术(如IntelPin7和 DynamoRIO8,9等)实现指令追踪和性能分析,相比之下,模拟器的指令追踪无需修改程序,不受硬件平台的限制,可在芯片设计初期实现跨指令集架构的模拟运行.本文拟研究基于
11、模拟器的程序指令级的追踪和分析.在系统层面,用户可利用 OpenTracing10,OpenTelemetry11等技术对分布式系统中的各组件进行追踪和性能监测.近年来,RISC-V 架构12凭借其精简、开放、模块化的设计和高可定制的特点在工业界和教育界广受欢迎.面向 RISC-V 的处理器接连问世,支持 RISC-V 的系统模拟器也被广泛使用,如 Spike13,QEMU1等.本研究实现了基于 QEMU 的高效指令追踪,并面向 RISC-V架构实现了多种基于指令序列的分析.1.2 研究现状支持 RISC-V 架构的模拟器 QEMU 和 Spike 均具备指令追踪功能.Spike 是专门面向
12、RISC-V 架构的模拟器,能够模拟一个或多个硬件线程.相较于其他模拟器,Spike 更专注于对 RISC-V 指令集的准确模拟,而非对多架构以及各类设备的虚拟化,常作为参考模型用于芯片的测试和验证.Spike 支持追踪程序执行的指令信息,它会将模拟的硬件线程号、指令地址、指令编码及反汇编信息按照指令执行的顺序记录下来,以供用户分析.QEMU 是一个面向多种架构的开源模拟器和虚拟机管理工具,通过动态二进制翻译机制模拟不同的指令集架构.QEMU 会按块翻译、缓存和执行目标架构的代码,并支持将翻译和执行过程中处理的指令地址、编码和反汇编信息以日志的形式输出.Spike 受限于自身的模拟速度和日志记
13、录方式,其指令追踪功能相比 QEMU 的要慢很多.图 1 对比了在模拟 NPB 基准套件中的 bt.S.x 时二者的时间(详细实验配置见第 5.1 节).可以看出,在该目标应用下 Spike的模拟效率仅为 QEMU 的 30%,开启指令追踪后效率更是不足 QEMU 的 3%.600500400300200100关闭指令追踪运行时间(s)13.8501.64.411.2开启指令追踪0SpikeQEMU图 1比较 QEMU 和 Spike 的指令追踪效率虽然 QEMU 的指令追踪效率优于 Spike,但仍然无法应对较长的指令序列,如某些大型软件或循环次数较多的基准测试程序.仍以 bt.S.x 为例
14、,在数据规模仅为 S(数组大小仅为 121212)的情况下,QEMU 在开启指令追踪后的模拟时间变为 2.5 倍,记录的日志文件高达 300MB,这并不利于后续基于指令序列的各类分析.1.3 需求与挑战通过分析和实践,我们认为用户对于模拟器的指令追踪功能有至少以下 3 点需求:(1)序列完整.指令序列的正确性和完整性是后续分析的基础,指令追踪应支持记录程序从开始到结束的完整指令序列;(2)信息多元.用户对于指令序列分析的需求是多样的,但所需的信息各不相同.例如,指令分类统计需要记录指令计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第11期4专论综述SpecialIss
15、ue的类型和频次,程序热点分析需要记录指令的地址和频次,而程序的行为分析需要记录不同执行阶段的指令序列;(3)执行高效.指令追踪的时间开销和空间开销要在可接受的范围内,尤其是空间开销,如果指令序列占用空间过大将不利于后续的分析.开发满足需求的指令追踪功能面临的主要挑战是:难以在保证指令序列完整性和信息多元性的同时降低时间和空间开销.按需进行指令追踪能够一定程度降低开销,例如,当用户只需统计指令数目时,模拟器无需为其提供完整的指令序列,只需要统计指令频次,这将大大降低空间开销.然而,指令追踪应按需提供多种信息而无需为各类应用单独开发不同的指令追踪程序.为特定的应用场景开发特定的指令追踪方法难以适
16、应用户多样化的分析需求.1.4 基于 QEMU 的高效指令追踪技术本研究提出了一种基于 QEMU 模拟器的指令追踪技术,将程序中的基本块、控制流图等静态信息与分支选择等动态信息解耦,在保证指令序列不失真的同时高效追踪执行序列.相比 QEMU 原生实现的指令追踪,本文提出的指令追踪技术的时间开销平均降低了 80%以上,空间开销平均降低了 95%以上.此外,本文面向 RISC-V 架构,实现了多种场景下的指令序列离线分析,包括指令分类统计、程序热点标记、行为模式分析等.对于不同的序列分析,可按需还原指令序列,降低分析开销.本文第 2 节简要介绍了 QEMU 原生的指令追踪实现,包括块翻译机制、日志
17、系统和插件机制.第 3 节介绍了一种基于信息解耦的高效指令追踪技术.第4 节介绍了技术的具体实现.第 5 节介绍了实验设计、结果以及案例分析.第 6 节进行了总结.2QEMU 指令追踪QEMU 原生的指令追踪14可以基于块翻译和日志系统实现.例如,通过开启“in_asm,exec,nochain”调试选项,可以翻译块为单位记录指令信息以及目标程序的 PC 序列,经过处理可还原出完整的指令序列.2.1 块翻译机制QEMU 的高效模拟得益于其块翻译机制,它以程序的基本块为单位,通过在两种架构之间建立 TCG(tinycodegenerator)翻译层,将目标架构的指令翻译成宿主机指令.TCG 可分
18、为前端和后端,前端将目标架构的指令翻译成中间表示(TCGIR),后端再将 TCGIR 翻译成宿主机的指令.图 2 展示了 TCG 翻译的流程示意.与编译器类似,将翻译过程分成前后端的优势在于:(1)服务于目标架构的前端翻译和面向宿主机架构的后端翻译可以独立实现,避免前后架构的组合爆炸;(2)TCGIR 不与任何指令集架构相关,将通用的优化技术应用于 TCGIR,各个架构都将从中受益.movi_i64 tmp3,$08add_64 tmp2,r10,tmp3mov_i64 r10,tmp2TCG IR目标架构x86,RISC-V,ARM,PPCRISC-VTCG IRx86宿主机架构x86,RI
19、SC-V,ARM,PPCaddi a0,a1,8addq$8,%rbxmovq%rbx,060(%rbp)图 2TCG 代码翻译示意QEMU 以基本块为单位翻译代码.当 QEMU 第1 次翻译一段代码时,会将连续的目标指令翻译成宿主机指令,直到遇见跳转指令才停止翻译.翻译得到的代码块被称作翻译块(translationblock,TB).QEMU 将翻译好的 TB 缓存并用哈希表进行维护.在每次执行完一个 TB 时,QEMU 根据需要执行的下一个 PC 值在哈希表中查找对应的 TB 并加载运行.为了降低查表的开销,QEMU 在 TB 之间建立链接,使得一个 TB 执行后,直接跳转并执行下一个
20、TB,而无需查找 TB.这些链接在一起的 TB 被称为扩展的翻译块.TB的缓存技术和链接技术大大提高了 QEMU 的模拟性能.2.2 日志系统QEMU 内部具有功能强大的日志系统,支持记录TB 的执行顺序、指令反汇编、中断等.通过分析 QEMU产生的日志信息,开发人员可以了解应用程序的运行行为,快速定位缺陷.表 1给出了 QEMU 支持的常用日志类型.QEMU 的日志信息由各自独自的开关管理,在启动时通过调试选项开启一个或多个日志类型.2.3 插件机制QEMU 提供了插件机制以观察记录目标程序的运行,可在启动时通过动态链接库的形式加载运行一个或多个插件.通过插件,用户可在 QEMU 模拟运行目
21、标程序的多个阶段(如 CPU 实例化、执行、TB 翻译、系统调用等)注册回调函数,分析提取感兴趣的信息.例如,可在 TB 执行阶段注册插件函数,根据作为参数2023年第32卷第11期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述5传入的 TB 信息分析记录 TB 包含的指令数目、指令类型、TB 的执行次数等.该函数会在 TB 的执行阶段被调用,伴随 TB 的每次执行而执行.利用 QEMU 的插件机制可以实现指令级别的观测记录.表 1QEMU 常用日志类型选项日志类型out_asmTB对应的宿主机汇编指令in_asmTB对应的目标程序汇编指令int中断和异
22、常exec执行的每个TB信息cpu进入TB时的CPU寄存器fpu进入TB时的FPU寄存器mmuMMU相关状态plugin插件信息nochain禁用TB链接(打印完整TB序列)strace用户态系统调用插件的实现独立于 QEMU 内部的模拟执行,并且只能观测、分析和记录 QEMU 暴露的信息(如 TB),无法修改机器状态,保证了程序的模拟执行不受影响.3基于信息解耦的指令追踪方法 3.1 解耦静态基本块信息和动态指令序列程序中的基本块15指的是一段连续的代码,程序的执行只能从基本块的第 1 条语句进入,从基本块的最后一条语句离开.图 3 展示了一个简单的基于基本块的控制流图.如果基本块的第 1
23、条指令被执行,则后续的指令必然被执行,换言之,程序运行结束后,一个基本块内所有指令的执行次数是相同的.基于以上性质,指令追踪只需记录基本块的 ID,后续根据每个基本块的指令信息即可还原完整的指令序列.例如,通过记录序列“B0-B1-B4”并通过后续解析这 3 个基本块内部的指令序列即可按需还原完整的指令序列.该方法的核心思想是:解耦静态的基本块信息和动态的指令序列,加快指令追踪的过程,后续按需还原指令序列,可大大降低指令追踪的时间和空间开销.3.2 解耦静态控制流图和动态分支选择通过分析发现,在控制流图15中存在部分基本块仅有一个出边(即指向其他基本块的边),例如图 3 中的 B1,B2 和
24、B3.对于仅有一个出边的基本块,当其被执行时,其唯一后继的基本块一定被执行,记录其后继的基本块信息是冗余的.例如,对于执行序列“B0-B2-B3-B4”,B2 的执行必然伴随着 B3 和 B4 的执行.此外,B0 作为入口基本块也必然被执行.因此,序列“B0-B2-B3-B4”可压缩为“B2”.ld t0,0(a0)beq t0,t1,L0slli t0,t0,2j L2L2:sd t0,0(a0)L1:addi t0,t0,1addi t0,t0,1B0B1B4B2B3L0:j L1图 3基于基本块的控制流图示意上述方法的核心思想是:将静态的控制流图与动态的分支选择解耦,仅记录程序在运行至分
25、支点时的选择(即具有一个以上出边的基本块),后续通过遍历控制流图对序列进行还原.3.3 面向需求的指令序列还原通过前文介绍的两种信息解耦技术,指令序列分为静态和动态两部分信息分别记录.静态信息包括程序的控制流图、各个基本块的指令信息等;动态信息包括程序执行的分支选择.通过遍历控制流图并根据记录的分支选择序列恢复完整的基本块序列,并可进一步通过检索基本块信息还原完整的指令序列.然而,并非所有的后续分析都需要完整的指令序列,为了提高序列分析的效率,可按需对指令序列进行还原.图 4展示了上述流程的示意图.热点提取行为分析动态信息指令序列追踪目标程序指令序列还原静态信息指令统计代价估计图 4指令序列的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QEMU 高效 指令 追踪 技术
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。