没有合适的资源?快使用搜索试试~ 我知道了~
1404最新成果:RISC-V处理器摘要林茨开普勒大学卢卡斯·克莱默复杂系统研究所奥地利林茨lucas.jku.at林茨开普勒大学丹尼尔·格罗斯复杂系统研究所奥地利林茨osse@jku.atdaniel.gr在本文中,我们演示了使用开源的领域特定语言WAL来分析RISC-V处理器的性能指标。 WAL程序通过在模拟波形(VCD)上“行走”的同时评估处理器信号来计算这些度量。所提出的WAL程序具有灵活性和通用性,可以很容易地适应不同的RISC-V内核。1引言今天,处理器市场被少数专有指令集体系结构(ISA)和少数非常大的公司所主导RISC-V是一个开放且免版税的ISA [10],致力于通过协作进行创新RISC-V的开放性使小公司和社区项目能够开发自己的处理器,这些处理器利用RISC-V然而,这种开发带来了自己的一系列挑战,因为可用的RISC-V内核数量庞大,通常具有高度可配置性和可扩展性,这使得设计人员和用户都很难比较不同的内核和内核配置[6,9]。需要对内核进行复杂的分析,以获得相关的性能指标。 由于必须评估各种内核,因此分析解决方案必须满足以下几个要求:(1)分析必须足够强大,以涵盖复杂的分析任务,(2)它必须与实现无关,并且易于移植到新内核,(3)它必须易于集成到现有工作流中。在本文中,我们使用开源波形分析语言(WAL)[5]来分析几种RISC-V实现的相关指标,从面积效率极高的实现到性能更高的流水线内核WAL已经被实现为领域特定语言(DSL)[8]。 该语言允许创建分析程序使用的VCD波形产生的值,在一个RISC-V核心的仿真。 我们的贡献是灵活的WAL程序,用于不同的性能指标。这些程序可以在各种RISC-V微架构上进行调整和使用我们的实验结果表明,基于WAL的分析可以清楚地突出所分析的岩心之间的差异。此外,我们可以量化不同的核心配置,可以通过启用额外的功能,如指令缓存或分支预测设置的性能改进允许制作本作品的全部或部分数字或硬拷贝供个人或课堂使用,无需付费,前提是复制品不以营利或商业利益为目的制作或分发,并且复制品在第一页上带有此通知和完整必须尊重作者以外的其他人所拥有的本作品组件的版权允许用信用进行提取复制,或重新发布,张贴在服务器上或重新分发到列表,需要事先特定的许可和/或费用。请求权限请发邮件至permissions@acm.org。DAC©2022版权归所有者/作者所有出版权授权给ACM。ACM ISBN 978-1-4503-9142-9/22/07。- 是的- 是的十五块https://doi.org/10.1145/3489517.3530623图1:指令控制和数据信号的波形2用WAL进行我们演示了如何灵活和通用的处理器分析程序可以在WAL中创建为此,我们首先说明WAL程序是如何工作的(第2.1节)。然后,我们引入WAL程序来分析每个周期的执行指令数(第2.2节),并计算停滞流水线阶段的周期百分比(第2.3节)。 我们考虑四个众所周知的RISC-V内核。 其中两个内核很小,面积效率很高[2,3],而另外两个内核更复杂,流水线,并且能够在某些配置中运行Linux [1,4,7]。2.1WAL程序原理与其他编程语言相比,WAL程序可以直接访问波形的所有信号值WAL中的波形信号类似于访问变量,不同之处在于返回的值取决于加载的波形和访问信号的时间 考虑图1中的波形。 &&当且仅当波 形 和 instr_done 信 号 均 设 置 为 1 时 , W AL e xp r ession(instr_done)1在波形中的给定时间点恢复为真。在图1中,表达式计算为true的所有时间点都以绿色突出显示WAL提供了大量可用于分析波形的函数例如,count函数可用于计算在波形上执行了多少个WAL表达式指令(count(&&count_done))。2.2每周期首先,我们分析了每个核心的原始性能的执行指令每周期(IPC)。由于所有分析的核心都是单核架构,因此最佳理论IPC分数为1。0. 这意味着内核在每个时钟周期执行并提交一条指令。然而,这几乎是不可能实现的,例如,由于分支和存储器引起的延迟。用于IPC分析的WAL程序分为两个独立的部分,一个是通用的和独立于内核的分析部分,另一个是必须由用户提供的内核特定代码。执行IPC分析的通用WAL程序如清单1所示。 该函数对轨迹参数中传递的所有波形执行IPC分析。 对于每个跟踪,首先在第3行中加载跟踪,然后在第4行中调用可选的设置函数。可选的设置和清理功能可以由用户定义,以执行内核特定的设置和清理操作。然后,在第5行中使用1WAL使用LISP风格的前缀表示法。14051(defuncalc−ipc [trace]2(for[跟踪痕迹]3(loadtrace t)4(设置)5(set[instructions(count((is−valid)(instr−done)])&&6(set[ipc(fdiv1(fdiv(count(is−valid))instructions))])7(printf“%40s:%15.2f\n”跟踪ipc)8(clean-up)9(unloadt)清单1:IPC分析的通用WAL函数1(defun为−valid[](TOP.IO_CLK TOP.IO_CLK_N))&&2(defuninstr−done[]3TOP.ibex_simple_system.u_top.u_ibex_top.u_ibex_core.id_stage_i.instr_done)45(requireriscv−lib)6(calc−ipc'(“ibex-default.vcd”“ibex-icache.vcd”))清单2:IPC分析的IBEX特定代码1(defunsetup [(stages stages)](set[stages(groups“isMoving”)]))2(defun是−valid [](&&TOP.(!TOP.reset)))3(defun是−stalled [(stagesstages)]4(in0(map(lambda[stage](in−groupstage# isMoving))stages)56(requireriscv−lib)7(calc−pipeline−stall'(“vexrv-smallest.vcd”“vexrv-full.vcd”))清单3:VexRiscv特定的流水线停顿分析代码用户提供的is-valid和done-done函数(见下文)。其思想是计算波形上谓词有效和已完成的求值为1的频率,然后通过WAL的set函数将结果分配给变量指令。接下来,在第6行中计算所得IPC值。 我们将总有效周期数除以执行的指令数,取其倒数,并在第7行中打印出来。最后,调用可选的清理函数,并在第9行中从WAL环境中卸载跟踪。要在新的RISC-V内核上执行IPC分析,用户只需提供两个is-valid和done函数。清单2中的第1-3行显示了IBEX处理器的这些函数的实现。每当指令完成时,IBEX处理器总是将id_stage_i模块内的instr_done因此,该函数只需要返回该信号的值定义所需功能后,即可开始IPC分析首先,在清单2的第5行中,我们导入WALRISC-V库以访问IPC分析的WAL定义然后,在第6行中,我们调用calc-ipc函数,其中包含我们要执行分析的波形文件列表(在示例中,分别为两个IBEX VCD default和icache2.3管道失速活动除了IPC分析,WAL RISC-V库还支持计算具有停滞流水线阶段的周期百分比。例如,该度量对于访问分支预测的工作效率很有用。流水线停顿分析的工作原理类似于IPC分析,因为用户可以使用通用库函数,并且只需自己提供某些特定于处理器的函数。 用户必须提供函数是有效的和是停止的。清单3显示了在VexRiscv处理器上进行管道停顿分析所需的处理器特定代码is-stalled函数应该在管道的某个部分停止的每个时间点返回true考虑VexRiscv流水线:每个阶段都有一个isMoving信号,可用于确定该阶段当前是否停止。我们在setup函数中获得与管道阶段相关联的所有组的列表,该函数在主分析之前被调用 is-stalled函数在第3行中定义。该函数创建一个列表,其中包含每个isMoving信号的值,并检查该列表是否包含0,0表示该流水线阶段当前处于停滞状态。通过使用组内函数,我们可以得到表1:分析结果核心配置IPC停顿周期SERV servant 0.02未管道化PicoRv32默认0.24非流水线VexRiscv microNoCsr 0.33 63%VexRiscv最小值0.33 66%VexRiscvsmall AndProductive0.42 54%VexRiscvsmallAndProductiveICache0.47 51%VexRiscv twoThreeStage 0.47 48%VexRiscv安全0.57 42%VexRiscv linux 0.59 38%VexRiscv满0.57 35%VexRiscvfullNoMmuMaxPerf0.63 33%IBEX违约0.63 48%IBEX icache 0.89 19%所有的isMoving信号,即使信号的实际位置改变或流水线级数改变。在第2行中,实现了is-valid函数,该函数与IBEX核心的实现类似。最后,在第6行导入RISC-V库,并在第7行开始对两个波形进行分析。3实验结果IPC和管道失速活动的结果总结见表1。 为了得到实验结果,我们分析了在每个内核上运行Dhetrone基准测试所产生的波形。Core列显示所分析的RISC-V核心的名称,Configuration列显示核心配置。IPC列和Stalled Cycles列分别显示每个周期的指令数和具有停滞流水线阶段的周期百分比IPC结果显示,所评估的内核的性能存在很大差异。例如,IBEXicache配置比SERV核心快44倍以上。实现更多复杂的功能,例如对于VexRiscv和IBEX核心,更好的分支预测清楚地表明,流水线停滞的周期数显著减少这也与在IPC列中看到的性能改进。4结论在本文中,我们演示了使用开源语言WAL来分析性能指标。 我们 已 经 表 明 , 分 析 程 序 可 以 写 在 一 个 通 用 的 形 式 和microarchitecture的具体细节,可以通过用户定义的功能处理。在实验中,我们的分析程序强调了不同微架构的RISC-V内核的巨大性能差异。致谢这项工作得到了上奥地利州资助的LIT安全和正确系统实验室的引用[1] 2022. GitHub-IBEX。https://github.com/lowRISC/ibex。[2] 2022. GitHub - PicoRV32. https://github.com/YosysHQ/picorv32。[3] 2022. GitHub-SERV. https://github.com/olofk/serv。[4] 2022. GitHub - VexRiscv. https://github.com/SpinalHDL/VexRiscv。[5] 2022. 波形分析语言WALhttps://github.com/ics-jku/wal。[6] Dörflinger等人2021年开源应用级RISC-V处理器实现的比较调查在CF。12-20[7] Davide Schiavone et al. 2017.慢而稳才能赢?物联网应用的超低功耗RISC-V内核在帕特莫斯。1-8.[8] 卢卡斯·克莱默和丹尼尔·格罗斯2022. WAL:一种用于高级设计理解和分析的新型波形分析语言。在ASP-DAC中。 358- 364.[9] 艾德·斯珀林2022年哪个处理器最好? https://semiengineering.com/which-processor-is-best.[10] 安德鲁·沃特曼和克里斯特·阿萨诺维奇。2019. RISC-V指令集手册:第一卷:非特权ISA。SiFive Inc.和CS部门,EECS部门,加州大学伯克利分校。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功