【技术实现步骤摘要】
面向AArch64架构的CPU指令微基准测试方法及系统
[0001]本专利技术涉及CPU的微基准测试技术,具体涉及一种面向AArch64架构的CPU指令微基准测试方法及系统。
技术介绍
[0002]计算机执行的是机器代码,机器代码是编码了低级操作的字节序列,这些低级操作包括处理数据、管理内存、读写设备数据。这些被编码成字节序列的低级操作被称作CPU指令(硬件指令)。硬件指令在汇编代码中就被表示为汇编指令,它和硬件指令一一对应。编写汇编程序并使用汇编指令是程序员用来对计算机进行低级操作的最直接最全面的方式。
[0003]高级编程语言是编写计算程序的主要方式,高级语言较汇编语言编程更容易更方便。高级语言会被编译器或者解释器,根据编程语言的规则,目标机器的指令集和操作系统遵循的惯例,经过一系列阶段生成机器代码(一系列硬件指令的组合)。计算机程序的性能,除了程序使用的算法,编译器的编译能力外,还与编译器生成的硬件指令有关。而且编译器为了更加高效的将高级编程语言转换成硬件指令,也需要知道所使用硬件指令的延迟与吞吐量。所以了解处理器硬件指令的性能,对分析计算机程序性能。高级语言和硬件指令之间没有直接的映射关系。使用高级语言编写的程序难以测试硬件指令的性能。汇编语言只是机器代码的文本表示,它硬件指令存在一一对应的关系,所以通过汇编语言编写的程序可以准确的测试硬件指令的性能。
[0004]大多数汇编指令有一个或者多个操作数,指示该指令执行的一个操作中需要使用的源数据,以及放置结果的目的位置。操作数可以有立即数、内存地 ...
【技术保护点】
【技术特征摘要】
1.一种面向AArch64架构的CPU指令微基准测试方法,其特征在于,包括:1)使用计时函数获取当前时间得到延迟测试开始时间LT1;2)将索引寄存器GR1的值初始化为整数0、边界寄存器GR2的值初始化为循环次数CN;3)以串行的方式连续调用被测试指令LN次,其中LN为预先设定的每一次连续调用被测试指令的次数;4)判断索引寄存器GR1的值大于等于边界寄存器GR2的值是否成立,若成立,则使用计时函数获取当前时间得到延迟测试结束时间LT2,并将延迟测试结束时间LT2减去延迟测试开始时间LT1得到整个指令延迟测试的总耗时LT,执行下一步;否则,将索引寄存器GR1的值加1,跳转执行步骤3);5)根据循环次数CN、每一次连续调用被测试指令的次数LN以及整个指令延迟测试的总耗时LT计算被测试指令在测试平台上的指令延迟LD。2.根据权利要求1所述的面向AArch64架构的CPU指令微基准测试方法,其特征在于,步骤5)中计算被测试指令在测试平台上的指令延迟LD的函数表达式为:上式中,LD为整个指令延迟测试的总耗时,LN为每一次连续调用被测试指令的次数,CN为循环次数,CPU_FRQ为CPU频率,K为测试过程中使用的时间单位与CPU频率单位之间的转换系数。3.根据权利要求1所述的面向AArch64架构的CPU指令微基准测试方法,其特征在于,步骤5)之后还包括进行指令吞吐量测试的步骤:S1)使用计时函数获取当前时间得到吞吐量测试开始时间OT1;S2)将索引寄存器GR1的值初始化为整数0、边界寄存器GR2的值初始化为循环次数CN;S3)以完全流水的方式连续调用被测试指令ON次,ON为预先设定的每一次连续调用被测试指令的次数;S4)判断索引寄存器GR1的值大于等于边界寄存器GR2的值是否成立,若成立,则使用计时函数获取当前时间得到吞吐量测试结束时间OT2,并将吞吐量测试结束时间OT2减去吞吐量测试开始时间OT1得到整个指令吞吐量测试的总耗时OT,执行下一步;否则,将索引寄存器GR1的值加1,跳转执行步骤S3);S5)根据循环次数CN、每一次连续调用被测试指令的次数ON以及整个指令吞吐量测试的总耗时OT计算被测试指令在测试平台上的指令吞吐量OD。4.根据权利要求3所述的面向AArch64架构的CPU指令微基准测试方法,其特征在于,步骤S5)中计算被测试指令在测试平台上的指令吞吐量OD的函数表达式为:上式中,ON为每一次连续调用被测试指令的次数,CN为循环次数,OT为整个指令吞吐量测试的总耗时,CPU_FRQ为CPU频率,K为测试过程中使用的时间单位与CPU频率单位之间的转换系数。5.根据权利要求4所述的面向AArch64架构的CPU指令微基准测试方法,其特征在于,步骤3)中以串行的方式连续调用被测试指令LN次是指:相邻的指令调用之间存在着数据先写后读依赖,使得CPU的功能部件在执行这LN条被测试指令时,既无法同时发射多条指令,也
无法让多条测试指令以流水线的方式执行;步骤S3)以完全流水的方式连续调用被测试指令ON次是指:将不存在任何数据依赖的被测试指令连续调用ON次,使得CPU在执行这ON条被测试指令时,指令被发射到多个CPU功能部件上以及让这些指令以流水方式执行。6.根据权利要求5所述的面向AArch64架构的CPU指令微基准测试方法,其特征在于,步骤1)之前还包括测试初始化的步骤:确定测试过程中使用的索引寄存器GR1和边界寄存器GR2,GR1和GR2可为通用寄存器组{R0,R1,R2...R30}中指定的任意两个寄存器;确定被测试指令在测试中需要使用的寄存器组{TR0,TR1,TR2,...,TR
N
‑1};被测试指令使用通用寄存器时,{TR0,TR1,TR2,...,TR
N
‑1}是通用寄存器组{R0,R1,R2,...,R30}中除被用作索引寄存器GR1和边界寄存器GR2外的其他N=29个通用寄存器;被测试指令使用SIMD寄存器时,{TR0,TR1,TR2,...,TR
N
‑1}为SIMD寄存器组{V0,V1,V2,...,V31};被测试指令使用可变长向量寄存器时,{TR0,TR1,TR2,...,TR
N
‑1}为可变长向量寄存器组{Z0,Z1,Z2,...,Z31};查询待测试芯片手册或者通过频率测试程序获取测试平台的CPU频率CPU_FRQ。7.根据权利要求6所述的面向AArch64架构的CPU指令微基准测试方法,其特征在于,所述测试初始化之前还包括确定被测试指令类型的步骤:根据被测试指令中各操作数的类型、数量与用途,确定被测试指令的指令类型,所述指令类型包括:指令类型D1_S1:被测试指令包含两个寄存器操作数,并且其中一个寄存器REG_DST用作目的寄存器,另外一个寄存器REG_SRC1用作源寄存器;指令类型D1_S2:被测试指令包含三个寄存器操作数,并且其中一个寄存器REG_DST用作目的寄存器,另外两个寄存器REG_SRC1和REG_SRC2用作源寄存器;指令类型D1_S3:被测试指令包含四个寄存器操作数,并且其中一个寄存器REG_DST用作目的寄存器,另外三个寄存器REG_SRC1、REG_SRC2和REG_SRC3用作源寄存器;指令类型S...
【专利技术属性】
技术研发人员:沈洁,龙标,黄春,唐滔,彭林,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。