CN112825058A - 处理器性能评估方法及装置 - Google Patents
处理器性能评估方法及装置 Download PDFInfo
- Publication number
- CN112825058A CN112825058A CN201911149666.2A CN201911149666A CN112825058A CN 112825058 A CN112825058 A CN 112825058A CN 201911149666 A CN201911149666 A CN 201911149666A CN 112825058 A CN112825058 A CN 112825058A
- Authority
- CN
- China
- Prior art keywords
- processor
- evaluation component
- performance
- evaluation
- execution result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000011156 evaluation Methods 0.000 title claims abstract description 429
- 238000000034 method Methods 0.000 claims abstract description 89
- 230000006870 function Effects 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 18
- 238000012886 linear function Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 description 21
- 230000005540 biological transmission Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000011161 development Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012854 evaluation process Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013210 evaluation model Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种处理器性能评估方法,适于生成用于评估处理器性能的评估组件,评估组件包括至少一个可调节的参数,该方法包括步骤:获取处理器执行校准程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令;根据执行结果序列,采用当前的评估组件来计算处理器的性能指标值;获取处理器执行校准程序期间的累计运行信息,根据累计运行信息来确定处理器的实际性能指标值;通过对比评估组件计算的性能指标值和所述性能指标值来调节评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。本发明一并公开了采用生成的评估组件来评估处理器性能的处理器性能评估方法以及相应的装置。
Description
技术领域
本发明涉及处理器性能分析技术领域,尤其涉及一种处理器性能评估方法以及相应的装置。
背景技术
随着网络通信技术的发展,当今社会已进入物联网(Internet of Things,IoT)时代。嵌入式技术是物联网得以实现的基础。在嵌入式芯片的开发阶段,开发者需要编写多个程序,并将程序烧写至嵌入式芯片的存储器中。嵌入式芯片开发完成后,可将其集成于智能设备。当嵌入式芯片的处理器执行存储器中存储的程序时,使得智能设备能够启动工作并实现相应功能。
程序的编写质量会影响处理器的处理性能。因此,在将程序烧写至存储器之前,通常需要对程序进行多轮优化,直至使处理器的性能满足或超过设计目标为止。现有的程序优化方法是,在处理器中实际运行程序,采用追踪单元来实时记录并输出处理器的详细运行信息,包括每条指令的地址、时钟周期数、分支跳转信息、内存访问信息等。由运行信息组成的数据流即为追踪流。随后,根据追踪流来确定处理器运行该程序的时长(时钟周期数)、分支预测准确率、缓存命中率等性能指标,根据处理器的这些性能指标来对程序进行优化。
在上述方法中,评估处理器的性能需要追踪单元实时输出包含处理器的详细运行信息的追踪流。追踪流的数据量与处理器的执行速度成正比,对于时钟频率为千兆赫兹的嵌入式处理器,相应的追踪单元每秒需要输出千兆字节的追踪流数据。大量的追踪流数据对追踪单元的缓存容量和传输带宽造成较大压力,增加了性能指标的计算时间和复杂度。
发明内容
为此,本发明提供一种处理器性能评估方法及装置,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种处理器性能评估方法,适于生成用于评估处理器性能的评估组件,评估组件包括至少一个可调节的参数,该方法包括步骤:获取处理器执行校准程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令;根据执行结果序列,采用当前的评估组件来计算处理器的性能指标值;获取处理器执行校准程序期间的累计运行信息,根据累计运行信息来确定处理器的实际性能指标值;通过对比评估组件计算的性能指标值和实际性能指标值来调节评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
根据本发明的第二个方面,提供一种处理器性能评估方法,包括步骤:获取处理器执行待测程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令;根据执行结果序列,采用评估组件来确定处理器执行待测程序期间的性能指标值。
根据本发明的第三个方面,提供一种评估组件生成装置,适于生成用于评估处理器性能的评估组件,评估组件包括至少一个可调节的参数,该装置包括:序列获取模块,适于获取处理器执行校准程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令;评估模块,适于根据执行结果序列,采用当前的评估组件来计算处理器的性能指标值;实际值获取模块,适于获取处理器执行校准程序期间的累计运行信息,根据累计运行信息来确定处理器的实际性能指标值;以及校准模块,适于通过对比评估组件计算的性能指标值和实际性能指标值来调节评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
根据本发明的第四个方面,提供一种处理器性能评估装置,包括:序列获取模块,适于获取处理器执行待测程序的执行结果序列,所述执行结果序列包括按照执行顺序排列的多条指令;以及评估模块,适于根据所述执行结果序列,采用评估组件来确定所述处理器的性能指标值。
根据本发明的第五个方面,提供一种评估组件生成设备,包括上述评估组件生成装置,适于生成用于评估处理器性能的评估组件。
根据本发明的第六个方面,提供一种性能评估设备,包括上述处理器性能评估装置,适于根据评估组件来确定处理器的性能指标值。
根据本发明的第七个方面,提供一种评估组件生成系统,包括:追踪单元,适于追踪处理器的运行信息,以及对运行信息进行累计以生成累计运行信息;与追踪单元耦接的评估组件生成设备,评估组件生成设备包括上述评估组件生成装置;评估组件生成设备适于接收追踪单元发来的处理器执行校准程序期间的累计运行信息,并执行上述处理器性能评估方法,以生成用于评估处理器性能的评估组件。
根据本发明的第八个方面,提供一种性能评估系统,包括:追踪单元,适于追踪处理器的运行信息,以及根据运行信息来生成处理器执行待测程序的执行结果序列;与追踪单元耦接的性能评估设备,性能评估设备包括上述处理器性能评估装置;性能评估设备适于接收追踪单元发来的待测程序的执行结果序列,并执行上述处理器性能评估方法,以评估处理器的性能。本发明的技术方案采用评估组件来评估处理器的性能。首先,用于生成评估组件的处理器性能评估方法,根据处理器执行校准程序的实际情况来对评估组件进行校准,调节评估组件的参数,生成能够准确评估处理器性能的评估组件。然后,执行处理器性能评估方法,采用生成的评估组件来评估处理器的性能。
根据本发明的处理器性能评估方法,在处理器中实际执行校准程序,在处理器执行校准程序期间,追踪单元生成并输出处理器的累计运行信息,累计运行信息用于确定处理器的实际性能指标值。评估组件根据校准程序的执行结果序列计算出校准程序的性能指标值,评估组件计算出的性能指标值是一个估算值,与实际性能指标值不一定相同。通过对比评估组件估算出的性能指标值与实际性能指标值之间的差距,来调节评估组件的参数,对评估组件进行校准,以提高评估组件的准确性。在该方法中,追踪单元不需要实时输出处理器的详细运行信息,而是阶段性地输出一段时间内的累计运行信息,大大减小了追踪流的数据量,降低了追踪单元的缓存和带宽压力。
按照上述方法生成的评估组件可用于评估处理器的性能。在本发明的处理器性能评估方法中,获取待测程序的执行结果序列,根据执行结果序列,采用评估组件来确定处理器的性能指标值。由于评估组件经过校准已经保证了较高的准确性,因此基于评估组件的处理器性能评估方法可以快速、简捷、准确地评估处理器的性能。在该性能评估方法中,追踪单元不需要实时输出处理器的详细运行信息,而是至多需要输出待测程序的执行结果序列,这大大减小了追踪流的数据量,降低了追踪单元的缓存和带宽压力。
进一步地,在某些场景中,甚至不需要在处理器中实际运行待测程序、也不需要设置追踪单元,而是采用软件模拟器来模拟处理器执行待测程序的过程,从而生成待测程序的执行结果序列。然后根据该执行结果序列,采用评估组件来确定处理器的性能指标值。该方法无需占用处理器资源,尤其适用于嵌入式处理器开发的早期阶段,处理器复杂难用且数量紧缺的应用场景。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1A、图1B分别示出了根据本发明两个实施例的评估组件生成系统100A、100B的示意图;
图2示出了根据本发明另一个实施例的评估组件生成系统100C的示意图;
图3A、图3B分别示出了根据本发明两个实施例的性能评估系统300A、300B的示意图;
图4示出了根据本发明另一个实施例的性能评估系统300C的示意图;
图5示出了根据本发明一个实施例的处理器性能评估方法500的流程图;以及
图6示出了根据本发明一个实施例的处理器性能评估方法600的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
现有技术的处理器性能评估方法需要追踪单元实时输出包含处理器的详细运行信息的追踪流,这增加了追踪单元的缓存和带宽压力,并且增加了处理器性能指标值的计算时间和复杂度。为解决该问题,本发明提供了一种采用评估组件来评估处理器性能的技术方案。在本发明的技术方案中,首先,执行用于生成评估组件的处理器性能评估方法,根据处理器执行校准程序的实际情况来对评估组件进行校准,调节评估组件的参数,生成能够准确评估处理器性能的评估组件。然后,执行处理器性能评估方法,采用生成的评估组件来评估处理器的性能。
图1A示出了根据本发明一个实施例的评估组件生成系统100A的示意图。系统100A用于调节评估组件的参数,以生成能够准确评估处理器性能的评估组件。如图1A所示,评估组件生成系统100A包括相互耦接的追踪单元112和评估组件生成设备200。
追踪单元112为用于追踪处理器110的运行信息并生成处理器追踪流的电路,其例如可以是由比较电路、计数电路等组成的集成电路模块,但不限于此。在图1A所示的实施例中,追踪单元112驻留于处理器110中,是处理器110的内部电路模块。在另一些实施例中,追踪单元112也可以位于处理器110外部,二者部署于同一个片上系统(SoC:System on Chip)上并且相互耦接。
需要说明的是,处理器110可以是单核或多核的中央处理器(CPU)。在一些实施例中,处理器110也可以是图形处理器(GPU)、神经网络处理器(NPU)、张量处理器(TPU)等用于处理特定计算任务的处理器。本发明不限制处理器110的类型,任意具有运算和控制能力的集成电路均可以作为本发明的处理器110。
另外,需要说明的是,为了使附图更加简洁,图1A仅示出了处理器110中的追踪单元112,省略了处理器中的其他结构。本领域技术人员可以理解,除了追踪单元112之外,处理器110还包括其他结构,例如取指令单元、译码单元、执行单元、寄存器组等。本发明对处理器110的结构不做限制。
评估组件生成设备200例如可以是桌面计算机、笔记本计算机等,但不限于此。根据一种实施例,评估组件生成设备200可以通过调试器与追踪单元112所在的处理器110(当追踪单元112为处理器110的内部模块时)或者与追踪单元112所在的片上系统(当追踪单元112位于处理器110外部时)连接,在设备200与处理器110之间、或者设备200与片上系统之间形成传输通道,用于实现控制指令及数据的传输。
例如,评估组件生成设备200可以基于调试器所形成的传输通道,向处理器110发送控制指令,控制追踪单元112开始/停止输出追踪流,以及控制追踪流所包括的运行信息的详尽程度;追踪单元112基于调试器所形成的传输通道,将生成的追踪流发送至评估组件生成设备200。
需要说明的是,图1A中所示的各个连接线不是指代基于调试器所形成的具体的物理传输通道,而指的是数据的流向。例如,图1A右侧的上下两条连接线表示追踪单元112可以向评估组件生成设备200传输执行结果序列和累计运行信息两种数据,而不表示追踪单元112与评估组件生成设备200之间有分别用于传输执行结果序列和累计运行信息的两条物理传输通道。通常地,评估组件生成设备200与追踪单元112之间仅有一条物理传输通道,执行结果序列和累计运行信息均是通过该通道传输至评估组件生成设备200。执行结果序列与累计运行信息的具体含义及作用将于下文中详述。
在本发明的实施例中,评估组件生成设备200中存储有评估组件生成装置210和评估组件220。
评估组件220用于评估处理器的性能,其以程序的执行结果序列为输入,对执行结果序列进行分析、计算后,输出处理器执行该程序时的性能指标值。
一个程序通常包括多条指令,当处理器执行该程序时,处理器顺序执行的多条指令即为该程序的执行结果序列。需要说明的是,程序的执行结果序列不一定包括程序中的所有指令,执行结果序列中的多条指令的排列顺序也不一定与程序源码文件中的指令的排列顺序相同。例如,程序中可能包括条件跳转指令,条件跳转指令中包含判断条件,判断条件成立与否会导致接下来执行不同的分支。程序中显然包括该条件跳转指令后的所有分支的指令,但是当处理器执行该程序时,只会根据判断条件的判断结果来走向其中的某一个分支,这样其他分支的指令便不包含在该程序的执行结果序列中了。
例如,一个用于求变量x的绝对值的程序包括表1所示的6个指令:
表1
指令2为分支跳转指令,当变量x的值小于0时,跳转至指令5;当变量x的值大于等于0时,继续执行指令3。若处理器在执行程序时,获取到的x的值为-6,则处理器在执行完指令2后,将跳转执行指令5,即,该程序的执行结果序列为:指令1→指令2→指令5→指令6。
处理器的性能指标例如包括时钟周期数、分支预测准确率、缓存命中率等,但不限于此。处理器的时钟周期数即处理器执行程序所经过的时钟周期。为了提高处理器中指令流水线的处理效率,处理器通常会对条件跳转指令进行分支预测,即预测条件跳转指令是否跳转,在实际执行条件跳转指令的判断条件之前,将预测的分支的指令加载至指令流水线中。处理器的分支预测准确率为处理器执行程序所得到的执行结果序列中,分支预测正确的条件跳转指令的数量与条件跳转指令的总数量的比值。处理器的缓存命中率为处理器执行程序所得到的执行结果序列中,从缓存中获取到的指令的数量与该执行结果序列中的指令的总数量的比值。
处理器的性能指标有多种,相应地,评估组件220包括分别用于评估各项性能指标的性能评估模型。例如,评估组件220包括时钟模型、分支预测模型和缓存模型,三者均以程序的执行结果序列为输入,对执行结果序列进行计算处理,分别输出处理器执行该程序的时钟周期数、分支预测准确率和缓存命中率。
评估组件220的结构由本领域技术人员预先设置,其例如可以采用单项式、多项式、滤波器、神经网络等结构,但不限于此。评估组件220包括至少一个可调节的参数。
本领域技术人员设置了评估组件220的结构后,分别为该组件的各个参数设置初始值,生成初始的评估组件Model0。初始的参数不能保证评估组件的准确性,通常地,按照初始的评估组件所计算出的性能指标值与处理器的实际性能指标值相去甚远,误差较大。
评估组件生成装置210用于执行本发明的处理器性能评估方法500,根据处理器的实际性能指标值对评估组件220进行校准,多次调节评估组件的参数,相应地依次生成模型Model1、Model2、…,逐渐减小评估组件计算出的性能指标值与实际性能指标值之间的误差,直至误差小于预设的阈值为止。经过校准所生成的评估组件可以准确、快速地评估处理器的性能。
如图1A所示,评估组件生成装置210包括序列获取模块212、评估模块214、实际值获取模块216、校准模块218和输出模块219。
序列获取模块212适于获取处理器执行校准程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令。需要说明的是,校准程序指的是用于校准评估组件220的可调参数的程序,其具体可以实现为任意完整的程序或程序片段,本发明对校准程序的具体实现不做限制。
根据一种实施例,如图1A所示,校准程序的执行结果序列由追踪单元112实时追踪处理器110的运行信息而生成,并输出至序列获取模块212。具体地,在处理器110执行校准程序的过程中,追踪单元112实时追踪处理器110所执行的每一条指令的地址信息并输出,每一条地址信息唯一对应于一条指令,从而生成校准程序的执行结果序列。相应地,序列获取模块212由追踪单元112处获取处理器执行校准程序的执行结果序列。
评估模块214适于根据校准程序的执行结果序列,采用当前的评估组件来计算处理器的性能指标值。
根据一种实施例,性能指标包括时钟周期数、分支预测准确率、缓存命中率,相应地,评估组件220包括时钟模型、分支预测模型和缓存模型。
时钟模型适于根据执行结果序列所包括的指令的数量,来计算处理器执行该执行结果序列的时钟周期数。时钟模型包括多个可调节的参数。时钟模型的具体结构可以由本领域技术人员自行设置,本发明对此不做限制。
根据一种实施例,时钟模型为以执行结果序列所包括的指令的数量为输入的函数,该函数包括至少一个待定系数。该函数的表达式有多种设置方式。
根据一种实施例,考虑到存储器的存取速度远小于处理器的运算速度,因此,处理器执行访存指令(即需要对存储器进行读写的指令)的时钟周期要远大于执行数据处理指令、跳转指令、寄存器存取指令等的始终周期。通常地,处理器执行一条访存指令需要几百个时钟周期,而执行一条数据处理指令等其他类型的指令只需要几个始终周期,二者相差两个数量级,执行后者的时间相较于前者可以忽略不计。因此,在一种较为简单、粗糙的实施例中,时钟模型为以执行结果序列所包括的访存指令的数量为输入的线性函数,该函数的待定系数为访存延迟,访存延迟即执行一条访存指令所经过的时钟周期。换言之,在该实施例中,时钟模型为形如y=ax的函数,其中,y为执行结果序列的时钟周期数,a为访存延迟,x为执行结果序列所包括的访存指令的数量。
基于该时钟模型,校准程序的时钟周期数即为校准程序的执行结果序列所包括的访存指令的数量与访存延迟a的乘积。
上述形如y=ax的线性模型虽然结构简单、待定系数少(只有访存延迟a一个),但不够准确。为了提高时钟模型的准确性,在另一种实施例中,时钟模型为以执行结果序列所包括的不同类型指令的数量为输入的一次函数,该函数的待定系数为各类型指令的单位执行周期。例如,在该实施例中,时钟模型为形如y=a1x1+a2x2+a3x3的函数,其中,y为执行结果序列的时钟周期数,x1、x2、x3分别为执行结果序列所包括的访存指令、数据处理指令、跳转指令的数量,a1、a2、a3分别为执行一条访存指令、一条数据处理指令、一条跳转指令的时钟周期。
基于该时钟模型,校准程序的时钟周期数为a1*校准程序的执行结果序列所包括的访存指令的数量、a2*校准程序的执行结果序列所包括的数据处理指令的数量、a3*校准程序的执行结果序列所包括的跳转指令的数量三者之和。
考虑到实际情况中,执行结果序列的总的时钟周期数会受总线冲突、高速缓存机制、流水线的相关性等多种因素的影响,因此,执行结果序列的时钟周期数通常不是执行结果序列所包括的不同类型的指令的数量的线性函数。为了更好地反应实际情况中的不确定性和非线性关系,根据一种实施例,时钟模型为以执行结果序列所包括的不同类型指令的数量为输入的多项式函数,该函数的待定系数包括各单项式的系数。例如,在该实施例中,时钟模型为形如y=a1x1 2+a2x1+a3x2+a4的函数,其中,y为执行结果序列的时钟周期数,x1、x2分别为执行结果序列所包括的访存指令、数据处理指令的数量,a1~a4分别为二次项、两个一次项和常数项的系数。
基于该时钟模型,校准程序的时钟周期数为a1*校准程序的执行结果序列所包括的访存指令的数量^2、a2*校准程序的执行结果序列所包括的访存指令的数量、a3*校准程序的执行结果序列所包括的数据处理指令的数量、a4四者之和。
以上仅给出了时钟模型的三个示例,本领域技术人员可以理解,时钟模型还可以采用其他结构。本发明对时钟模型的具体结构不做限制,任意能够计算出执行结果序列的时钟周期数的模型均在本发明的保护范围之内。
分支预测模型适于根据执行结果序列中的条件跳转指令的跳转情况,来计算处理器执行该执行结果序列的分支预测准确率。分支预测模型的参数包括各条件跳转指令的预测跳转方向,即预测各条件跳转指令是否发生跳转。分支预测模型预测了各条件跳转指令是否发生跳转,执行结果序列则给出了各条件跳转指令的实际跳转情况。因此,通过对比预测的跳转方向与校准程序的执行结果序列中的实际跳转情况是否相同,即可计算出处理器执行校准程序期间的分支预测准确率。
本领域技术人员可以理解,各条件跳转指令的预测跳转方向在校准程序的执行过程中可以是固定不变的(此时分支预测模型为静态分支预测模型),也可以是动态变化的(此时分支预测模型为动态分支预测模型)。本发明对分支预测模型的具体结构不做限制,任意能够计算出执行结果序列的分支预测准确率的模型均在本发明的保护范围之内。
缓存模型适于根据执行结果序列来计算处理器执行该执行结果序列期间的缓存命中率。缓存模型的参数包括缓存行容量和行替换策略。缓存行是从存储器加载至高速缓存的数据量的计量单位。行替换策略即当高速缓存的容量不够时,将缓存中已有的数据移出缓存所采用的策略。行替换策略包括但不限于先进先出、近期最少使用移出、随机移出等策略。
基于缓存模型,可以预测各时刻高速缓存(Cache)中包括哪些指令,从而预测执行结果序列中的各指令的来源,即处理器是从高速缓存中获取指令还是从存储器中获取指令(只要指令在高速缓存中,处理器就会从高速缓存获取指令)。计算执行结果序列中来源于高速缓存的指令的数量与执行结果序列中指令的总数量的比值,即为缓存命中率。
本领域技术人员可以理解,除了缓存行容量和行替换策略之外,缓存模型还可以包括缓存容量、存储器地址和缓存地址的映射方式等。本发明对缓存模型的具体结构不做限制,任意能够计算出执行结果序列的缓存命中率的模型均在本发明的保护范围之内。
根据一种实施例,校准程序的执行结果序列可以被划分为多个序列片段,每一个序列片段均可以采用当前的评估组件计算出相应的性能指标值。例如,校准程序的执行结果序列tr可以被划分为tr1、tr2、tr3等多个序列片段,每一个序列片段均可以作为评估组件的输入,相应地,评估组件可以计算出处理器执行各序列片段期间的性能指标值,处理器执行校准程序期间的性能指标值为由处理器执行这些序列片段时的性能指标值所组成的序列。
实际值获取模块216适于获取处理器执行校准程序期间的累计运行信息,根据累计运行信息来确定处理器的实际性能指标值。
累计运行信息是在处理器110在一段时间内,追踪单元112追踪到的不同类型运行信息的累计数量。例如,追踪单元112实时追踪处理器110的运行信息,运行信息包括处理器110执行的各条指令的地址信息、指令的时钟周期、条件跳转指令的分支预测是否正确、指令是否命中缓存(处理器是否从缓存中获取指令)等。分别统计一段时间内的各项运行信息的数量,可以得出各项运行信息的累计数量。运行信息的累计数量即为累计运行信息。
根据一种实施例,累计运行信息包括:执行的指令的数量、时钟周期的数量、分支预测正确的数量、分支预测错误的数量、缓存命中的数量、缓存未命中的数量。
根据获取到的累计运行信息,可以确定处理器的实际性能指标值。例如,基于上述累计运行信息,可以确定实际的时钟周期数、分支预测准确率和缓存命中率。实际时钟周期数即为上述时钟周期的数量,实际分支预测准确率即为分支预测正确的数量与分支预测正确的数量、分支预测错误的数量之和的比值,实际缓存命中率即为缓存命中的数量与缓存命中的数量、缓存未命中的数量之和的比值。
根据一种实施例,实际值获取模块216在处理器执行校准程序期间,按照预定频率获取多个时间段内的累计运行信息。也就是说,在处理器执行校准程序期间,追踪单元112按照预定频率向实际值获取模块216输出各时间段内的累计运行信息。
具体地,追踪单元112实时追踪处理器110的各项运行信息,分别对各项运行信息进行累计以生成累计运行信息,每隔一段时间将该段时间内的累计运行信息输出。累计运行信息的生成是持续的,但是输出是间断的。例如,设定追踪单元112从t0时刻开始,按照△t的间隔时间来输出累计运行信息,那么,在t0+△t时刻,追踪单元112输出t0至t0+△t时间段内的累计运行信息;在t0+2△t时刻,追踪单元112输出t0+△t至t0+2△t时间段内的累计运行信息;在t0+3△t时刻,追踪单元112输出t0+2△t至t0+3△t时间段内的累计运行信息,…,以此类推。
根据一种实施例,可以在处理器110中设置一个或多个控制寄存器(控制寄存器在图1A中未示出)。评估组件生成设备200通过采用调试器(例如JTAG调试器)向处理器110的控制寄存器中写入数值,来控制追踪单元112输出累计运行信息的情况(包括输出累计运行信息的起止条件、两次输出之间的间隔时间等),从而控制实际值获取模块216获取累计运行信息的情况。例如,可以在处理器110中设置如表2所示的三个控制寄存器SynStart、SynEnd和SynInterval,通过向这三个控制寄存器中写入相应的值来控制追踪单元112输出累计运行信息的情况。
表2
名称 | 宽度(位) | 功能 | 值 |
SynStart | 64 | 输出累计运行信息的起始指令计数 | 0 |
SynEnd | 64 | 输出累计运行信息的结束指令计数 | 0 |
SynInterval | 32 | 两次输出之间的指令计数间隔 | 10000 |
寄存器SynStart用于设置追踪单元112输出累计运行信息的起始指令计数,寄存器SynEnd用于设置追踪单元输出累计运行信息的结束指令计数,寄存器SynInterval用于设置追踪单元112两次输出累计运行信息之间的指令计数间隔。
若SynStart和SynEnd的值均为0,则追踪单元112按照SynInterval设定的指令计数间隔周期性地输出累计运行信息,如表2所示,SynInterval的值为10000,则追踪单元112每追踪到10000条指令,输出一次累计运行信息。
若SynStart的值不为0,SynEnd的值为0,则追踪单元112在追踪到的指令数量达到SynStart后,开始按照SynInterval设定的指令计数间隔周期性地输出累计运行信息。
若SynStart的值为0,SynEnd的值不为0,则追踪单元112按照SynInterval设定的指令计数间隔周期性地输出累计运行信息,直至其追踪到的指令数量达到SynEnd为止。
若SynStart和SynEnd的值均不为0,则追踪单元112自追踪到的指令数量达到SynStart后,开始按照SynInterval设定的指令计数间隔周期性地输出累计运行信息,至指令计数达到SynEnd为止。
需要说明的是,以上仅给出了用于控制追踪单元112输出累计运行信息的情况的一种控制寄存器组合,本发明对用于控制追踪单元112输出累计运行信息的控制寄存器的数量、名称、位宽以及具体功能不做限制,任意能够控制追踪单元112输出累计运行信息的寄存器组合均在本发明的保护范围之内。
实际值获取模块216根据获取到的各时间段的累计运行信息来计算处理器在各时间段的实际性能指标值,例如实际时钟周期数、实际分支预测准确率、实际缓存命中率等。
校准模块218适于通过对比评估组件所计算的性能指标值和实际性能指标值来调节评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
需要说明的是,参与对比的模型计算的性能指标值与实际性能指标值在时间跨度上具有一致性。若评估模块214根据整个校准程序的执行结果序列计算出校准程序的性能指标值,则与该计算出的该性能指标值相对比的实际性能指标值应当由实际值获取模块216根据处理器110执行整个校准程序期间的累计运行信息而确定。若追踪单元112实时连续地向序列获取模块212输出执行结果序列,且间断地向实际值获取模块216输出各时间段的累计运行信息,则评估模块214根据某一时间段的执行结果序列所计算出的性能指标值应当与实际值获取模块216根据同一时间段的累计运行信息所确定出的实际性能指标值进行对比。
例如,追踪单元112能够实时追踪并输出处理器110的执行结果序列,并且从t0时刻开始,按照△t的间隔时间来输出累计运行信息。初始的性能模型为Model0。评估模块214根据t0至t0+△t时间段内的执行结果序列,采用当前的评估组件计算出性能指标值;实际值获取模块216根据t0至t0+△t时间段内的累计运行信息来确定实际性能指标值;校准模块218通过对比t0至t0+△t时间段的计算出的性能指标值与实际性能指标值,沿着能够减小计算出的性能指标值与实际性能指标值之间的误差的方向来调节评估组件的参数,生成评估组件Model1。
随后,评估模块214根据t0+△t至t0+2△t时间段内的执行结果序列,采用当前的评估组件计算出性能指标值;实际值获取模块216根据t0+△t至t0+2△t时间段内的累计运行信息来确定实际性能指标值;校准模块218通过对比t0+△t至t0+2△t时间段的计算出的性能指标值与实际性能指标值,沿着能够减小计算出的性能指标值与实际性能指标值之间的误差的方向来调节评估组件的参数,生成评估组件Model2,…,以此类推,直至评估组件所计算出的性能指标值与实际性能指标值之间的误差收敛至小于预设阈值为止。这时的评估组件即为最终生成的能够准确评估处理器性能的评估组件。
评估组件的参数的具体调节方式根据评估组件的类型而定。
根据一种实施例,评估组件包括时钟模型,该时钟模型为以执行结果序列所包括的指令的数量为输入的函数,该函数包括至少一个待定系数。这种情况下,校准模块218判断评估模块214计算的时钟周期数与实际时钟周期数的差的绝对值是否大于预设阈值,若是,则根据计算的时钟周期数和实际时钟周期数来调节待定系数。待定系数的具体调节方式根据时钟模型函数的表达式而定。
在一个实施例中,时钟模型为以执行结果序列所包括的访存指令的数量为输入的线性函数,即y=ax,该函数仅包括访存延迟a这一个待定系数。访存延迟a的值可以按照以下方法调节:将访存延迟a的值更新为实际时钟周期数与执行结果序列所包括的访存指令的数量的比值。或者,为了提高模型的泛化能力,减少噪声因素,可以将访存延迟a的值更新为当前时间段之前的多个时间段(包括当前时间段)的实际时钟周期数的平均值与这多个时间段的执行结果序列所包括的访存指令数量的平均值的比值。
在另一个实施例中,时钟模型为以执行结果序列所包括的不同类型指令的数量为输入的一次函数,该函数的待定系数为各类型指令的单位执行周期。这种情况下,可以根据当前时间段之前的多个时间段(包括当前时间段)的执行结果序列所包括的不同类型指令的数量,以及这多个时间段的实际时钟周期数,来拟合该一次函数,从而确定各类型指令的单位执行周期。
例如,时钟模型为形如y=a1x1+a2x2+a3x3的一次函数,x1、x2、x3分别为执行结果序列所包括的访存指令、数据处理指令、跳转指令的数量,该函数的待定系数为执行一条访存指令、一条数据处理指令、一条跳转指令的时钟周期的时钟周期a1、a2、a3。每个时间段的执行结果序列所包括的访存指令、数据处理指令、跳转指令的数量和该时间段的实际时钟周期数可以组成一个形如(访存指令数量x1,数据处理指令数量x2,跳转指令数量x3,实际时钟周期数yreal)的样本点,多个时间段则对应于多个这样的样本点。采用多个样本点来拟合该一次函数,从而更新该一次函数的待定系数a1、a2、a3的值。
在又一个实施例中,时钟模型为以执行结果序列所包括的不同类型指令的数量为输入的多项式函数,该函数的待定系数包括各单项式的系数。这种情况下,可以根据当前时间段之前的多个时间段(包括当前时间段)的执行结果序列所包括的不同类型指令的数量,以及这多个时间段的实际时钟周期数,来拟合该一次函数,从而确定各类型指令的单位执行周期。
例如,时钟周期模型为形如y=a1x1 2+a2x1+a3x2+a4的函数,其中,y为执行结果序列的时钟周期数,x1、x2分别为执行结果序列所包括的访存指令、数据处理指令的数量,a1~a4分别为二次项、两个一次项和常数项的系数。每个时间段的执行结果序列所包括的访存指令、数据处理指令、跳转指令的数量和该时间段的实际时钟周期数可以组成一个形如(访存指令数量x1,数据处理指令数量x2,实际时钟周期数yreal)的样本点,多个时间段则对应于多个这样的样本点。采用多个样本点来拟合该多项式函数,从而更新该多项式函数的待定系数a1、~a4的值。
根据一种实施例,评估组件包括分支预测模型,分支预测模型适于根据执行结果序列中的条件跳转指令的跳转情况,来计算处理器执行该执行结果序列期间的分支预测准确率。分支预测模型的参数包括各条件跳转指令的预测跳转方向,即预测各条件跳转指令是否发生跳转。在这种情况下,校准模块218判断模型计算的分支预测准确率与实际分支预测准确率是否相同,若二者不同,则根据实际分支预测准确率来调节各条件跳转指令的预测跳转方向,以使根据调节后的预测跳转方向所计算出的分支预测准确率与实际分支预测准确率相同。
例如,处理器110的指令集中包括三种条件跳转指令A、B、C,分支预测模型为静态分支预测模型,该模型的参数包括指令A、B、C的预测跳转方向,即预测指令A、B、C是否发生跳转。指令A、指令B预测跳转,指令C预测不跳转。
序列获取模块212获取到第一时间段的执行结果序列,执行结果序列中指令A共出现20次,其中15次发生跳转,5次未跳转;指令B共出现50次,其中30次跳转,20次未跳转;指令C共出现30次,其中5次跳转,25次未跳转。评估模块214根据该执行结果序列中的指令A、B、C的跳转情况,计算出分支预测准确率=(指令A预测正确的数量+指令B预测正确的数量+指令C预测正确的数量)/(指令A、B、C的总数量)=(15+30+25)/(20+50+30)=70%。实际值获取模块216根据该段时间的累计运行信息,确定实际分支预测准确率为50%。模型计算出的分支预测准确率与实际分支预测准确率不同,因此,校准模块218将调节分支预测模型的参数,即调节指令A、B、C的预测跳转方向,使根据调节后的预测跳转方向所计算出的分支预测准确率与实际分支预测准确率相同。
指令A、B、C的预测跳转方向的可能组合有八种,按照每一种组合方式,根据第一时间段的执行结果序列计算出来的分支预测准确率如下表3所示。
表3
表3中,第7种参数组合为当前分支预测模型所采用的参数组合,按照该参数组合所计算出的分支预测率(70%)已经被证明与实际分支预测准确率(50%)不符,因此,在后续参数调节的过程中,这种参数组合将不再被考虑。
在剩下的七种参数组合中,与第一时间段的实际分支预测准确率相同的为第1种和第8种,因此,可以将分支预测模型的参数更新为二者之一。例如,将分支预测模型的参数更新为第8种,即,预测指令A、B、C均跳转。由于当前无法确定第1种和第8种参数组合中哪一个是准确的参数组合,因此,需要在后续步骤中对选中的第8种参数组合进行验证。
接下来,序列获取模块212获取第二时间段的执行结果序列,该执行结果序列中指令A共出现20次,其中5次发生跳转,15次未跳转;指令B共出现40次,其中10次跳转,30次未跳转;指令C共出现40次,其中15次跳转,25次未跳转。评估模块214根据该执行结果序列中的指令A、B、C的跳转情况,计算出分支预测准确率=(指令A预测正确的数量+指令B预测正确的数量+指令C预测正确的数量)/(指令A、B、C的总数量)=(5+40+15)/(20+40+40)=60%。实际值获取模块216根据该段时间的累计运行信息,确定实际分支预测准确率为70%。模型计算出的分支预测准确率与实际分支预测准确率不同,因此,校准模块218将调节分支预测模型的参数,即调节指令A、B、C的预测跳转方向,使根据调节后的预测跳转方向所计算出的分支预测准确率与实际分支预测准确率相同。
在排除了指令A、B预测跳转,指令C预测不跳转,以及指令A、B、C均预测跳转这两组错误参数后,指令A、B、C的预测跳转方向的可能组合剩下6种,按照每一种组合方式,根据第二时间段的执行结果序列计算出来的分支预测准确率如下表4所示。
表4
在表4的六种参数组合中,与第二时间段的实际分支预测准确率相同的仅为第1种参数组合,因此,将分支预测模型的参数更新为第1种参数组合,即指令A、B、C均预测不跳转。至此,便确定了分支预测模型的准确参数,生成了能够准确评估处理器性能的分支预测模型。
根据一种实施例,评估组件包括缓存模型,缓存模型适于根据执行结果序列来计算处理器执行该执行结果序列期间的缓存命中率。缓存模型的参数包括缓存行容量和行替换策略。在这种情况下,校准模块218判断缓存模型计算的缓存命中率与实际缓存命中率是否相同,若二者不同,则根据实际缓存命中率来调节缓存行容量和行替换策略,以使根据调节后的缓存行容量和行替换策略所计算出的缓存命中率与实际缓存命中率相同。
当评估组件计算出的性能指标值与实际性能指标值之间的误差收敛至小于预设阈值时,校准模块218终止评估组件参数的调节过程。此时的模型参数即为最优参数,最优参数对应的模型即为评估组件生成装置210所生成的、能够准确评估评估处理器性能的评估组件。
输出模块219适于将校准模块218生成的最优参数,即最终生成的评估组件的参数输出至设备200的显示器240,以便显示器240将生成的评估组件展示给用户。
在图1A所示的评估组件生成系统100A中,在处理器110中实际执行校准程序,在处理器110执行校准程序期间,追踪单元112实时向评估组件生成装置210输出处理器的执行结果序列,并且阶段性地向评估组件生成装置210输出处理器的累计运行信息。累计运行信息用于确定处理器的实际性能指标值。评估组件根据执行结果序列计算出处理器的性能指标值,评估组件计算出的性能指标值是一个估算值,与实际性能指标值不一定相同。通过对比评估组件估算出的性能指标值与实际性能指标值之间的差距,来调节评估组件的参数,对评估组件进行校准,以提高评估组件的准确性。在该实施例中,追踪单元112不需要实时输出处理器的详细运行信息,而仅需要实时输出处理器的执行结果序列,并且阶段性地输出一段时间内的累计运行信息,这大大减小了追踪流的数据量,降低了追踪单元的缓存和带宽压力。
图1B示出了根据本发明另一个实施例的评估组件生成系统100B的示意图。图1B与图1A中的相同编号指代相同的组件,相同组件的功能和处理逻辑可以参见上文中的相关描述,此处不再赘述。
系统100B与前述系统100A的区别在于,评估组件生成设备200中还包括软件模拟器230,软件模拟器适于模拟处理器110执行校准程序的过程,以便生成校准程序的执行结果序列,并将生成的执行结果序列输出至评估组件生成装置210的序列获取模块212。这样,追踪单元112便不再需要实时输出处理器110的执行结果序列,仅需要阶段性地输出累计运行信息,相较于系统100A进一步减小了追踪流的数据量,降低了追踪单元的缓存和带宽压力。
需要说明的是,虽然系统100B相较于系统100A来说,追踪单元输出的数据量更少,进一步降低了追踪单元的缓存和带宽压力,但本领域技术人员可以理解,软件模拟器230模拟处理器110执行校准程序的过程所生成的执行结果序列通常与处理器110实际执行校准程序的执行结果序列存在一定偏差,因此系统100B中生成的评估组件的准确性通常会低于系统100A所生成的评估组件。
在图1A、图1B所示的实施例中,评估组件生成设备200和处理器110均位于用户侧,用户可以通过诸如鼠标、键盘、触摸屏、显示器等输入输出设备来与评估组件生成设备200直接进行交互。设备200基于用户的交互操作来启动本发明的性能评估方法,调整性能评估模型的参数,生成能够准确评估处理器性能的评估组件,并通过显示器将生成的评估组件展示给用户。
在另一些实施例中,评估组件生成设备200也可以是用户不可触及的远程设备,例如云服务器等。在该场景中,用户可以通过与评估组件生成设备200通信连接的本地终端设备来向设备200发起评估请求,以使设备200执行本发明的性能评估方法500,生成能够准确评估处理性能的评估组件。
图2示出了当评估组件生成设备200为远程设备时的评估组件生成系统100C的示意图。如图2所示,系统100C包括位于用户侧的处理器110、终端设备120,以及位于远处(云端)的评估组件生成设备200。终端设备120例如可以是个人计算机、手机、平板电脑、IoT设备等,但不限于此。终端设备120与处理器110耦接。评估组件生成设备200中部署有评估组件生成装置210,当评估组件生成设备200实现为云服务器时,评估组件生成装置210可以实现为部署于云服务器中的计算实例。
用户可以通过在终端设备120上进行相应操作来使处理器110执行校准程序,以及使追踪单元112追踪并输出处理器110执行校准程序期间的执行结果序列和累计运行信息。
终端设备120通过互联网与评估组件生成设备200通信连接。用户可以在终端设备120上登录特定的远程评估应用(App)或在浏览器中访问特定的网页,通过在特定的应用或特定的网页中进行操作,来向评估组件生成设备200发送评估请求,以启动评估组件的生成过程。评估组件生成设备200接收终端设备120发来的评估请求,响应于该请求,调用评估组件生成装置210来生成用于评估处理器110的性能的评估组件。
追踪单元112将处理器110执行校准程序期间的执行结果序列和累计运行信息经由终端设备120上传至评估组件生成装置210(具体地,将执行结果序列上传至装置210的序列获取模块212,将累计运行信息上传至实际值获取模块216)。评估组件生成装置210基于终端设备120上传的执行结果序列和累计运行信息,执行本发明的处理器性能评估方法500,对评估组件220的参数进行调节、校准,以生成能够准确评估处理器性能的评估组件。根据一种实施例,评估组件生成装置210生成评估组件后,向终端设备120返回评估组件成功生成的消息,并返回生成的评估组件的参数,以便在终端设备120的显示器122上将生成的评估组件展示给用户。
在一些实施例中,如图2所示,评估组件生成设备200中还部署有软件模拟器230,当评估组件生成设备200实现为云服务器时,软件模拟器230可以实现为部署于云服务器中的计算实例。在这种情况下,用户可以通过在终端设备120上进行相应操作来使处理器110执行校准程序,以及使追踪单元112追踪并输出处理器110执行校准程序期间的累计运行信息。
用户通过在终端设备120上进行相应操作,来向评估组件生成设备200发送评估请求,以启动评估组件的生成过程。评估组件生成设备200接收终端设备120发来的评估请求,响应于该请求,调用软件模拟器230来模拟处理器110执行校准程序的过程,生成处理器110执行校准程序的执行结果序列,以及调用评估组件生成装置210来生成用于评估处理器110的性能的评估组件。
追踪单元112将处理器110执行校准程序期间的累计运行信息经由终端设备120上传至评估组件生成装置210(具体地,将累计运行信息上传至实际值获取模块216)。评估组件生成装置210基于终端设备120上传的累计运行信息以及软件模拟器230生成的执行结果序列,执行本发明的处理器性能评估方法500,对评估组件220的参数进行调节、校准,以生成能够准确评估处理器性能的评估组件。根据一种实施例,评估组件生成装置210生成评估组件后,向终端设备120返回评估组件成功生成的消息,并返回生成的评估组件的参数,以便在终端设备120的显示器122上将生成的评估组件展示给用户。
在评估组件生成装置210生成评估组件后,评估组件生成设备200可以将生成的评估组件通过诸如网络通信连接、移动存储介质(例如U盘、硬盘等)等方式传输至性能评估设备,以便性能评估设备采用该评估组件来评估处理器的性能。在某些实施例中,性能评估设备与评估组件生成设备可以是同一个设备。
图3A示出了根据本发明一个实施例的性能评估系统300A的示意图。系统300A用于评估处理器的性能。如图3A所示,性能评估系统300A包括追踪单元312和性能评估设备400。
追踪单元312适于追踪处理器310的运行信息,根据追踪到的运行信息来生成处理器执行待测程序的执行结果序列。例如,运行信息包括处理器310所执行的每一条指令的地址信息,每一条地址信息唯一对应于一条指令,从而生成待测程序的执行结果序列。
需要说明的是,在图3A所示的实施例中,追踪单元312驻留于处理器310中,是处理器310的内部电路模块。在另一些实施例中,追踪单元312也可以位于处理器310外部,二者部署于同一个片上系统上并且相互耦接。
需要说明的是,为了使附图更加简洁,图3A仅示出了处理器310中的追踪单元312,省略了处理器中的其他结构。本领域技术人员可以理解,除了追踪单元312之外,处理器310还包括其他结构,例如取指令单元、译码单元、执行单元、寄存器组等。本发明对处理器310的结构不做限制。
性能评估设备400例如可以是桌面计算机、笔记本计算机等,但不限于此。根据一种实施例,性能评估设备400可以通过调试器与追踪单元312所在的处理器310(当追踪单元312为处理器310的内部模块时)或者与追踪单元312所在的片上系统(当追踪单元312位于处理器310外部时)连接,在性能评估设备400与处理器310之间、或者性能评估设备400与片上系统之间形成传输通道,用于实现控制指令及数据的传输。
例如,性能评估设备400可以基于调试器所形成的传输通道,向处理器310发送控制指令,控制追踪单元312开始/停止输出执行结果序列;追踪单元312基于调试器所形成的传输通道,将生成的执行结果序列发送至性能评估设备200。
需要说明的是,图3A中所示的各个连接线不是指代基于调试器所形成的具体的物理传输通道,而指的是数据的流向。例如,图3A右侧的连接线表示追踪单元312可以向性能评估设备400传输执行结果序列,而不表示追踪单元312与性能评估设备400之间有一条专门用于传输执行结果序列的物理传输通道。
在本发明的实施例中,性能评估设备400中存储有评估组件和性能评估装置410。
评估组件由前述评估组件生成设备200生成,并传输至性能评估设备400进行存储。评估组件用于评估处理器的性能,其以程序的执行结果序列为输入,输出处理器执行该程序期间的性能指标值。
根据一种实施例,性能指标包括时钟周期数、分支预测准确率、缓存命中率等多种,相应地,评估组件包括时钟模型、分支预测模型、缓存模型等多种,三者均适于以程序的执行结果序列为输入,分别输出处理器执行该程序的时钟周期数、分支预测准确率和缓存命中率。
性能评估装置410用于执行本发明的处理器性能评估方法600,基于性能评估设备400中存储的评估组件来评估处理器执行待测程序期间的性能。如图3A所示,性能评估装置410包括序列获取模块412、评估模块414和输出模块416。
序列获取模块412适于获取处理器执行待测程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令。
评估模块414适于根据序列获取模块412获取到的执行结果序列,采用评估组件来确定处理器执行待测程序期间的性能指标值。
根据一种实施例,评估组件包括时钟模型,评估模块414适于将执行结果序列所包括的指令的数量输入时钟模型,以便时钟模型输出处理器执行该待测程序的时钟周期数。
根据一种实施例,评估组件包括分支预测模型,评估模块414适于将执行结果序列中的条件跳转指令的跳转情况输入分支预测模型,以便分支预测模型输出处理器执行待测程序期间的分支预测准确率。
根据一种实施例,评估组件包括缓存模型,评估模块414适于将执行结果序列输入缓存模型,以便缓存模型输出处理器执行待测程序期间的缓存命中率。
输出模块416适于将评估模块414确定的处理器的性能指标值输出至显示器430,以便显示器430将处理器的评估结果,即处理器的性能指标值显示给用户。
在图3A所示的性能评估系统300A中,在处理器310中实际执行待测程序,在处理器310执行待测程序期间,追踪单元312实时向性能评估装置410输出处理器的执行结果序列。性能评估装置410根据执行结果序列,采用评估组件来确定处理器的性能指标值。由于评估组件经过校准已经保证了较高的准确性,因此基于评估组件的处理器性能评估方法可以快速、简捷、准确地评估程序的性能。在该实施例中,追踪单元312不需要实时输出处理器的详细运行信息,而仅需要实时输出处理器的执行结果序列,这大大减小了追踪流的数据量,降低了追踪单元的缓存和带宽压力。
图3A所示的性能评估系统300A在评估待测程序的性能时,需要在处理器310中实际运行待测程序,并由追踪单元312输出执行结果序列。即,系统300A在评估处理器执行待测程序期间的性能时仍需要占用实际的处理器资源。而在嵌入式处理器开发的早期阶段,处理器复杂难用且数量紧缺,采用系统300A的结构来评估处理器的性能会占用有限的处理器资源,且不易操作。基于这种考虑,本发明提供了另一个实施例的性能评估系统300B,如图3B所示。
系统300B与系统300A的区别在于,系统300B仅包括性能评估设备400,而不包括追踪单元312。换言之,系统300B即为性能评估设备400本身。
如图3B所示,性能评估设备400包括软件模拟器420,软件模拟器420适于模拟图3A中的处理器310执行待测程序的过程,以便生成待测程序的执行结果序列,并将生成的执行结果序列输出至性能评估装置410的序列获取模块412。
序列获取模块412从软件模拟器420处获取执行结果序列,评估模块414根据执行结果序列,采用评估组件来确定处理器执行待测程序期间的性能指标。处理器的性能评估过程完全在性能评估设备400中采用纯软件的方式实现,不需要像图3A所示的实施例那样,在处理器310中实际运行待测程序并由追踪单元312生成、输出执行结果序列。图3B所示的实施例无需占用处理器资源,尤其适于在嵌入式处理器开发的早期阶段,处理器复杂难用且数量紧缺的应用场景中,对处理器进行性能评估。
在图3A、图3B所示的实施例中,性能评估设备400和处理器310均位于用户侧,用户可以通过诸如鼠标、键盘、触摸屏、显示器等输入输出设备来与性能评估设备400直接进行交互。设备400基于用户的交互操作来启动本发明的性能评估方法600,采用评估组件来确定处理器的性能指标值,并通过显示器430将处理器的性能指标值展示给用户。
在另一些实施例中,性能评估设备400也可以是用户不可触及的远程设备,例如云服务器等。在该场景中,用户可以通过与性能评估设备400通信连接的本地终端设备来向性能评估设备400发起评估请求,以使设备400执行本发明的性能评估方法600,根据评估组件来确定处理器的性能指标值。
图4示出了当性能评估设备400为远程设备时的性能评估系统300C的示意图。如图4所示,系统300C包括位于用户侧的终端设备320以及位于远处的性能评估设备400。终端设备320例如可以是个人计算机、手机、平板电脑、IoT设备等,但不限于此。性能评估设备400中部署有性能评估装置410,当性能评估设备400实现为云服务器时,性能评估装置410可以实现为部署于云服务器中的计算实例。
终端设备320可以与处理器310耦接。用户可以通过在终端设备320上进行相应操作来使处理器310执行待测程序,以及使追踪单元312追踪并输出处理器310执行待测程序的执行结果序列。
终端设备320通过互联网与性能评估设备400通信连接。用户可以在终端设备320上登录特定的远程评估应用(App)或在浏览器中访问特定的网页,通过在特定的应用或特定的网页中进行操作,来向性能评估设备400发送评估请求,以启动处理器性能评估过程。性能评估设备400接收终端设备320发来的评估请求,响应于该请求,调用性能评估装置410来评估处理器性能。
追踪单元312将处理器310执行待测程序的执行结果序列经由终端设备320上传至性能评估装置410(具体地,将执行结果序列上传至装置410的序列获取模块412)。性能评估装置410基于终端设备320上传的执行结果序列,执行本发明的处理器性能评估方法600,采用评估组件来确定处理器的性能指标值。根据一种实施例,性能评估装置410确定处理器的性能指标值后,向终端设备320返回评估完成的消息,并返回处理器的性能指标值,以便在终端设备320的显示器322上将处理器的性能指标值展示给用户。
在一些实施例中,如图4所示,性能评估设备400中还部署有软件模拟器420,当性能评估设备400实现为云服务器时,软件模拟器420可以实现为部署于云服务器中的计算实例。
在这种情况下,用户通过在终端设备320上进行相应操作,来向性能评估设备400发送评估请求,以启动处理器性能评估过程。性能评估设备400接收终端设备320发来的评估请求,响应于该请求,调用软件模拟器420来模拟处理器310执行待测程序的过程,生成处理器310执行待测程序的执行结果序列,以及调用性能评估装置410来评估处理器的性能。
性能评估装置410基于软件模拟器420生成的执行结果序列,执行本发明的处理器性能评估方法600,采用评估组件来确定处理器的性能指标值。根据一种实施例,性能评估装置410确定处理器的性能指标值后,向终端设备320返回评估完成的消息,并返回处理器的性能指标值,以便在终端设备320的显示器322上将处理器的性能指标值展示给用户。
图5示出了根据本发明一个实施例的处理器性能评估方法500的流程图。方法500在评估组件生成设备200中执行,具体地,由评估组件生成设备200中的评估组件生成装置210执行。方法500用于调节评估组件的参数,以生成能够准确评估处理器性能的评估组件。如图5所示,方法500始于步骤S510。
在步骤S510中,获取处理器执行校准程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令。
步骤S510由评估组件生成装置210中的序列获取模块212执行。根据一种实施例,执行结果序列可以如图1A所示的那样,由追踪单元112追踪处理器110的实际运行信息而得出;可也以如图1B所示的那样,由评估组件生成设备200中的软件模拟器230模拟处理器的运行过程而得出。
步骤S510的具体实施方式可以参考上文中序列获取模块212的相关描述,此处不再赘述。
步骤S510获取校准程序的执行结果序列后,执行步骤S520。在步骤S520中,根据执行结果序列,采用当前的评估组件来计算处理器的性能指标值。
步骤S520由评估组件生成装置210中的评估模块214执行。
根据一种实施例,性能指标包括时钟周期数、分支预测准确率和缓存命中率。相应地,评估组件包括时钟模型、分支预测模型和缓存模型,三者均以程序的执行结果序列为输入,对执行结果序列进行计算处理,分别输出处理器执行该程序的时钟周期数、分支预测准确率和缓存命中率。
步骤S520的具体实施方式可以参考上文中评估模块214的相关描述,此处不再赘述。
在步骤S530中,获取处理器执行校准程序期间的累计运行信息,根据累计运行信息来确定处理器的实际性能指标值。
步骤S530由评估组件生成装置210中的实际值获取模块216执行。
根据一种实施例,累计运行信息包括:执行的指令的数量、时钟周期的数量、分支预测正确的数量、分支预测错误的数量、缓存命中的数量、缓存未命中的数量。
根据一种实施例,步骤S530进一步包括:在处理器执行校准程序期间,按照预定频率获取多个时间段内的累计运行信息;根据各时间段的累计运行信息来计算处理器在各时间段的实际性能指标值。
步骤S530的具体实施方式可以参考上文中实际获取模块216的相关描述,此处不再赘述。
在步骤S540中,通过对比评估组件计算的性能指标值和实际性能指标值来调节评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
步骤S540由评估组件生成装置210中的校准模块218执行。
根据一种实施例,步骤S540进一步包括:通过对比根据一时间段内的执行结果序列所计算出的性能指标值与该时间段的实际性能指标值来调节评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
评估组件的参数的具体调节方式根据评估组件的类型而确定。
根据一种实施例,评估组件包括时钟模型,且该时钟模型为以执行结果序列所包括的指令的数量为输入的函数,该函数包括至少一个待定系数,则步骤S540进一步按照以下步骤来调节时钟模型的待定系数:若计算的时钟周期数与实际时钟周期数的差的绝对值大于预设阈值,则根据计算的时钟周期数和实际时钟周期数来调节待定系数。
待定系数的具体调节方式根据时钟模型函数的表达式而定。
在一个实施例中,时钟周期模型为以执行结果序列所包括的访存指令的数量为输入的线性函数,且该线性函数的待定系数包括访存延迟,则访存延迟的值可以按照以下方法调节:将访存延迟的值更新为实际时钟周期数与执行结果序列包括的访存指令的数量的比值;或者,将访存延迟的值更新为当前时间段之前的多个时间段(包括当前时间段)的实际时钟周期数的平均值与这多个时间段的执行结果序列所包括的访存指令数量的平均值的比值。
在另一个实施例中,时钟模型为以执行结果序列所包括的不同类型指令的数量为输入的一次函数,该函数的待定系数为各类型指令的单位执行周期。这种情况下,可以按照以下方法来调节各类型指令的单位执行周期:根据当前时间段之前的多个时间段(包括当前时间段)的执行结果序列所包括的不同类型指令的数量,以及这多个时间段的实际时钟周期数,来拟合该一次函数,从而确定各类型指令的单位执行周期。
在又一个实施例中,时钟模型为以执行结果序列所包括的不同类型指令的数量为输入的多项式函数,该函数的待定系数包括各单项式的系数。这种情况下,可以按照以下方法来调节各单项式的系数:根据当前时间段之前的多个时间段(包括当前时间段)的执行结果序列所包括的不同类型指令的数量,以及这多个时间段的实际时钟周期数,来拟合该一次函数,从而确定各类型指令的单位执行周期。
根据一种实施例,评估组件包括分支预测模型,分支预测模型适于根据执行结果序列中的条件跳转指令的跳转情况,来计算处理器执行该执行结果序列期间的分支预测准确率。分支预测模型的参数包括各条件跳转指令的预测跳转方向,即预测各条件跳转指令是否发生跳转。在这种情况下,步骤S540进一步按照以下步骤来调节分支预测模型的参数:判断模型计算的分支预测准确率与实际分支预测准确率是否相同,若二者不同,则根据实际分支预测准确率来调节各条件跳转指令的预测跳转方向,以使根据调节后的预测跳转方向所计算出的分支预测准确率与实际分支预测准确率相同。
根据一种实施例,评估组件包括缓存模型,缓存模型适于根据执行结果序列来计算处理器执行该执行结果序列期间的缓存命中率。缓存模型的参数包括缓存行容量和行替换策略。在这种情况下,步骤S540进一步按照以下步骤来调节缓存模型的参数:判断缓存模型计算的缓存命中率与实际缓存命中率是否相同,若二者不同,则根据实际缓存命中率来调节缓存行容量和行替换策略,以使根据调节后的缓存行容量和行替换策略所计算出的缓存命中率与实际缓存命中率相同。
步骤S540的其他具体实施方式可以参考上文中校准模块218的相关描述,此处不再赘述。
当评估组件计算出的性能指标值与实际性能指标值之间的误差收敛至小于预设阈值时,终止步骤S540的参数调节过程。此时的模型参数即为最优参数,最优参数对应的模型即为方法500所生成的、能够准确评估处理器性能的评估组件。
图6示出了根据本发明一个实施例的处理器性能评估方法600的流程图。方法600在性能评估设备400中执行,具体地,由性能评估设备400中的性能评估装置410执行。方法600用于根据方法500生成的评估组件,来评估处理器执行待测程序期间的性能。如图6所示,方法600始于步骤S610。
在步骤S610中,获取处理器执行待测程序的执行结果序列,执行结果序列包括按照执行顺序排列的多条指令。
步骤S610由性能评估装置410中的序列获取模块412执行。根据一种实施例,执行结果序列可以如图3A所示的那样,由追踪单元312追踪处理器310的实际运行信息而得出;也可以如图3B那样,由性能评估设备400中的软件模拟器420模拟处理器310的运行过程而得出。
步骤S610的具体实施方式可以参考上文中序列获取模块412的相关描述,此处不再赘述。
随后,在步骤S620中,根据执行结果序列,采用评估组件来确定处理器执行待测程序期间的性能指标值。
步骤S620由性能评估装置410中的评估模块414执行。
根据一种实施例,评估组件包括时钟模型,步骤S620进一步包括:将执行结果序列所包括的指令的数量输入时钟模型,以便时钟模型输出处理器执行待测程序的时钟周期数。
根据一种实施例,评估组件包括分支预测模型,步骤S620进一步包括:将执行结果序列中的条件跳转指令的跳转情况输入分支预测模型,以便分支预测模型输出处理器执行待测程序期间的分支预测准确率。
根据一种实施例,评估组件包括缓存模型,步骤S620进一步包括:将执行结果序列输入缓存模型,以便缓存模型输出处理器执行待测程序期间的缓存命中率。
步骤S620的具体实施方式可以参考上文中评估模块414的相关描述,此处不再赘述。这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的处理器性能评估方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (37)
1.一种处理器性能评估方法,适于生成用于评估处理器性能的评估组件,所述评估组件包括至少一个可调节的参数,所述方法包括步骤:
获取处理器执行校准程序的执行结果序列,所述执行结果序列包括按照执行顺序排列的多条指令;
根据所述执行结果序列,采用当前的评估组件来计算处理器的性能指标值;
获取处理器执行所述校准程序期间的累计运行信息,根据所述累计运行信息来确定处理器的实际性能指标值;
通过对比评估组件计算的性能指标值和所述实际性能指标值来调节所述评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
2.如权利要求1所述的方法,其中,所述执行结果序列通过追踪处理器的实际运行信息而得出,或者通过软件模拟器模拟处理器的运行过程而得出。
3.如权利要求1或2所述的方法,其中,所述性能指标包括:
时钟周期数、分支预测准确率、缓存命中率。
4.如权利要求1-3中任一项所述的方法,其中,所述累计运行信息包括:
执行的指令的数量、时钟周期的数量、分支预测正确的数量、分支预测错误的数量、缓存命中的数量、缓存未命中的数量。
5.如权利要求1-4中任一项所述的方法,其中,所述获取处理器执行所述校准程序期间的累计运行信息,根据所述累计运行信息来确定处理器的实际性能指标值的步骤包括:
在处理器执行所述校准程序期间,按照预定频率获取多个时间段内的累计运行信息;
根据各时间段的累计运行信息来计算处理器在各时间段的实际性能指标值。
6.如权利要求5所述的方法,其中,所述通过对比评估组件计算的性能指标值和所述实际性能指标值来调节所述评估组件的参数的步骤包括:
通过对比根据一时间段内的执行结果序列所计算出的性能指标值与该时间段的实际性能指标值来调节所述评估组件的参数。
7.如权利要求3所述的方法,其中,所述评估组件包括时钟模型,所述时钟模型适于根据执行结果序列所包括的指令的数量,来计算处理器执行所述执行结果序列的时钟周期数。
8.如权利要求7所述的方法,其中,所述时钟模型为以所述执行结果序列所包括的指令的数量为输入的函数,所述函数包括至少一个待定系数;
所述通过对比评估组件计算的性能指标值和所述实际性能指标值来调节所述评估组件的参数的步骤包括:
若计算的时钟周期数与实际时钟周期数的差的绝对值大于预设阈值,则根据所述计算的时钟周期数和所述实际时钟周期数来调节所述待定系数。
9.如权利要求8所述的方法,其中,所述时钟模型为以所述执行结果序列所包括的访存指令的数量为输入的线性函数,所述待定系数包括访存延迟;
所述根据所述计算的时钟周期数和所述实际时钟周期数来调节所述待定系数的步骤包括:
将访存延迟的值更新为所述实际时钟周期数与所述执行结果序列包括的访存指令的数量的比值。
10.如权利要求8所述的方法,其中,所述时钟模型为以所述执行结果序列所包括的不同类型指令的数量为输入的多项式函数,所述待定系数包括各单项式的系数;
所述根据所述计算的时钟周期数和所述实际时钟周期数来调节所述待定系数的步骤包括:
根据多个时间段的执行结果序列所包括的不同类型指令的数量,以及所述多个时间段的实际时钟周期数,来拟合所述多项式函数,以确定各单项式的系数。
11.如权利要求3所述的方法,其中,所述评估组件包括分支预测模型,所述分支预测模型适于根据执行结果序列中的条件跳转指令的跳转情况,来计算处理器的分支预测准确率。
12.如权利要求11所述的方法,其中,所述分支预测模型的参数包括各条件跳转指令的预测跳转方向;
所述通过对比评估组件计算的性能指标值和所述实际性能指标值来调节所述评估组件的参数的步骤包括:
若计算的分支预测准确率与实际分支预测准确率不同,则根据实际分支预测准确率来调节各条件跳转指令的预测跳转方向,以使根据调节后的预测跳转方向所计算出的分支预测准确率与所述实际分支预测准确率相同。
13.如权利要求3所述的方法,其中,所述评估组件包括缓存模型,所述缓存模型适于根据执行结果序列来计算处理器的缓存命中率。
14.如权利要求13所述的方法,其中,所述缓存模型的参数包括缓存行容量和行替换策略;
所述通过对比评估组件计算的性能指标值和所述实际性能指标值,来调节所述评估组件的参数的步骤包括:
若计算的缓存命中率与实际缓存命中率不同,则根据实际缓存命中率来调节缓存行容量和行替换策略,以使根据调节后的缓存行容量和行替换策略所计算出的缓存命中率与所述实际缓存命中率相同。
15.如权利要求1所述的方法,还包括步骤:
将生成的评估组件的参数输出至显示器,以便显示器显示所述生成的评估组件。
16.一种处理器性能评估方法,包括步骤:
获取处理器执行待测程序的执行结果序列,所述执行结果序列包括按照执行顺序排列的多条指令;
根据所述执行结果序列,采用评估组件来确定处理器执行所述待测程序期间的性能指标值。
17.如权利要求16所述的方法,其中,所述执行结果序列通过追踪处理器的实际运行信息而得出,或者通过软件模拟器模拟处理器的运行过程而得出。
18.如权利要求16或17所述的方法,其中,所述评估组件包括时钟模型;
所述根据所述执行结果序列,采用评估组件来确定所述处理器的性能指标值的步骤包括:
将所述执行结果序列所包括的指令的数量输入所述时钟模型,以便所述时钟模型输出所述处理器执行所述待测程序的时钟周期数。
19.如权利要求16或17所述的方法,其中,所述评估组件包括分支预测模型;
所述根据所述执行结果序列,采用评估组件来确定所述处理器的性能指标值的步骤包括:
将所述执行结果序列中的条件跳转指令的跳转情况输入所述分支预测模型,以便所述分支预测模型输出所述处理器的分支预测准确率。
20.如权利要求16或17所述的方法,其中,所述评估组件包括缓存模型;
所述根据所述执行结果序列,采用评估组件来确定所述处理器的性能指标值的步骤包括:
将所述执行结果序列输入所述缓存模型,以便所述缓存模型输出所述处理器的缓存命中率。
21.如权利要求16所述的方法,还包括步骤:
将所述性能指标值输出至显示器,以便显示器显示所述性能指标值。
22.一种评估组件生成装置,适于生成用于评估处理器性能的评估组件,所述评估组件包括至少一个可调节的参数,所述装置包括:
序列获取模块,适于获取处理器执行校准程序的执行结果序列,所述执行结果序列包括按照执行顺序排列的多条指令;
评估模块,适于根据所述执行结果序列,采用当前的评估组件来计算处理器的性能指标值;
实际值获取模块,适于获取处理器执行所述校准程序期间的累计运行信息,根据所述累计运行信息来确定所述处理器的实际性能指标值;以及
校准模块,适于通过对比评估组件计算的性能指标值和所述实际性能指标值来调节所述评估组件的参数,以减小评估组件所计算的性能指标值与实际性能指标值之间的误差。
23.如权利要求22所述的装置,还包括:
输出模块,适于将生成的评估组件的参数输出至显示器,以便显示器显示所述生成的评估组件。
24.一种处理器性能评估装置,包括:
序列获取模块,适于获取处理器执行待测程序的执行结果序列,所述执行结果序列包括按照执行顺序排列的多条指令;以及
评估模块,适于根据所述执行结果序列,采用评估组件来确定所述处理器的性能指标值。
25.如权利要求24所述的装置,还包括:
输出模块,适于将所述性能指标值输出至显示器,以便显示器显示所述性能指标值。
26.一种评估组件生成设备,包括如权利要求22或23所述的评估组件生成装置,适于生成用于评估处理器性能的评估组件。
27.如权利要求26所述的设备,还包括软件模拟器,所述软件模拟器适于模拟处理器执行校准程序的过程,以便生成所述校准程序的执行结果序列。
28.如权利要求26所述的设备,还包括显示器,所述显示器适于显示生成的评估组件。
29.一种性能评估设备,包括如权利要求24或25所述的处理器性能评估装置,适于根据评估组件来确定处理器的性能指标值。
30.如权利要求29所述的设备,还包括软件模拟器,所述软件模拟器适于模拟处理器执行待测程序的过程,以便生成所述待测程序的执行结果序列。
31.如权利要求29所述的设备,还包括显示器,所述显示器适于显示所述性能指标值。
32.一种评估组件生成系统,包括:
追踪单元,适于追踪处理器的运行信息,以及对所述运行信息进行累计以生成累计运行信息;
与所述追踪单元耦接的评估组件生成设备,所述评估组件生成设备包括如权利要求22或23所述的评估组件生成装置;
所述评估组件生成设备适于接收所述追踪单元发来的处理器执行校准程序期间的累计运行信息,并执行如权利要求1-15中任一项所述的处理器性能评估方法,以生成用于评估处理器性能的评估组件。
33.如权利要求32所述的系统,其中,所述追踪单元驻留于所述处理器中,或者与所述处理器耦接。
34.如权利要求32或33所述的系统,其中,所述追踪单元还适于根据所述运行信息来生成所述处理器执行所述校准程序的执行结果序列。
35.如权利要求32或33所述的系统,其中,所述评估组件生成设备还包括软件模拟器,所述软件模拟器适于模拟处理器执行校准程序的过程,以便生成所述校准程序的执行结果序列。
36.一种性能评估系统,包括:
追踪单元,适于追踪处理器的运行信息,以及根据所述运行信息来生成所述处理器执行待测程序的执行结果序列;
与所述追踪单元耦接的性能评估设备,所述性能评估设备包括如权利要求24或25所述的处理器性能评估装置;
所述性能评估设备适于接收所述追踪单元发来的待测程序的执行结果序列,并执行如权利要求16-21中任一项所述的处理器性能评估方法,以评估处理器的性能。
37.如权利要求36所述的系统,其中,所述追踪单元驻留于所述处理器中,或者与所述处理器耦接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911149666.2A CN112825058B (zh) | 2019-11-21 | 2019-11-21 | 处理器性能评估方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911149666.2A CN112825058B (zh) | 2019-11-21 | 2019-11-21 | 处理器性能评估方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112825058A true CN112825058A (zh) | 2021-05-21 |
CN112825058B CN112825058B (zh) | 2024-07-16 |
Family
ID=75907359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911149666.2A Active CN112825058B (zh) | 2019-11-21 | 2019-11-21 | 处理器性能评估方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112825058B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835984A (zh) * | 2021-09-27 | 2021-12-24 | 山东省计算中心(国家超级计算济南中心) | 一种基于国产超算微架构的众核应用性能评估方法 |
CN116090388A (zh) * | 2022-12-21 | 2023-05-09 | 海光信息技术股份有限公司 | 芯片内部电压预测模型生成方法、预测方法及相关装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050661A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Adjusting a processor operating parameter based on a performance criterion |
EP1856612A1 (en) * | 2005-01-28 | 2007-11-21 | International Business Machines Corporation | Method for counting instructions for logging and replay of a deterministic sequence of events |
CN101482891A (zh) * | 2008-01-08 | 2009-07-15 | 富士通株式会社 | 性能评估模拟 |
CN105094949A (zh) * | 2015-08-06 | 2015-11-25 | 复旦大学 | 一种基于指令计算模型与反馈补偿的模拟方法与系统 |
JP2016184376A (ja) * | 2015-03-27 | 2016-10-20 | 株式会社メガチップス | 性能評価モジュール及びこれを組み込んだ半導体集積回路 |
CN106713573A (zh) * | 2016-12-29 | 2017-05-24 | 努比亚技术有限公司 | 一种终端设备的性能测试装置和方法 |
CN107229575A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存性能的评估方法及装置 |
CN110178123A (zh) * | 2017-07-12 | 2019-08-27 | 华为技术有限公司 | 性能指标评估方法及装置 |
-
2019
- 2019-11-21 CN CN201911149666.2A patent/CN112825058B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1856612A1 (en) * | 2005-01-28 | 2007-11-21 | International Business Machines Corporation | Method for counting instructions for logging and replay of a deterministic sequence of events |
US20070050661A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Adjusting a processor operating parameter based on a performance criterion |
CN101482891A (zh) * | 2008-01-08 | 2009-07-15 | 富士通株式会社 | 性能评估模拟 |
JP2016184376A (ja) * | 2015-03-27 | 2016-10-20 | 株式会社メガチップス | 性能評価モジュール及びこれを組み込んだ半導体集積回路 |
CN105094949A (zh) * | 2015-08-06 | 2015-11-25 | 复旦大学 | 一种基于指令计算模型与反馈补偿的模拟方法与系统 |
CN107229575A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存性能的评估方法及装置 |
CN106713573A (zh) * | 2016-12-29 | 2017-05-24 | 努比亚技术有限公司 | 一种终端设备的性能测试装置和方法 |
CN110178123A (zh) * | 2017-07-12 | 2019-08-27 | 华为技术有限公司 | 性能指标评估方法及装置 |
Non-Patent Citations (2)
Title |
---|
庞九凤;佟冬;李皓;何浪;程旭;: "面向基于x86处理器和AMBA的系统芯片的全系统模拟器PKUsim-86", 电子学报, no. 02 * |
张海涛;龚龙庆;: "用于嵌入式计算机性能评测技术及其方法研究", 现代电子技术, no. 14 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835984A (zh) * | 2021-09-27 | 2021-12-24 | 山东省计算中心(国家超级计算济南中心) | 一种基于国产超算微架构的众核应用性能评估方法 |
CN113835984B (zh) * | 2021-09-27 | 2023-08-08 | 山东省计算中心(国家超级计算济南中心) | 一种基于国产超算微架构的众核应用性能评估方法 |
CN116090388A (zh) * | 2022-12-21 | 2023-05-09 | 海光信息技术股份有限公司 | 芯片内部电压预测模型生成方法、预测方法及相关装置 |
CN116090388B (zh) * | 2022-12-21 | 2024-05-17 | 海光信息技术股份有限公司 | 芯片内部电压预测模型生成方法、预测方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112825058B (zh) | 2024-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5298444B2 (ja) | プロセッサ設計を特徴付けるための方法、装置、論理プログラム及びシステム | |
Da Silva et al. | Performance Modeling for FPGAs: Extending the Roofline Model with High‐Level Synthesis Tools | |
US8140319B2 (en) | Method and system for predicting system performance and capacity using software module performance statistics | |
US6059835A (en) | Performance evaluation of processor operation using trace pre-processing | |
US10146531B2 (en) | Method and apparatus for generating a refactored code | |
US20190095796A1 (en) | Methods and arrangements to determine physical resource assignments | |
US20190004920A1 (en) | Technologies for processor simulation modeling with machine learning | |
Ipek et al. | Efficient architectural design space exploration via predictive modeling | |
CN116126333A (zh) | 自动化编译的系统和方法 | |
EP2348431A1 (en) | Method and apparatus to efficiently generate a processor architecture model | |
CN108885579B (zh) | 用于根据核追踪进行数据挖掘的方法和设备 | |
CN114780233A (zh) | 基于微服务链路分析和强化学习的调度方法及装置 | |
Aleti et al. | An efficient method for uncertainty propagation in robust software performance estimation | |
CN112825058B (zh) | 处理器性能评估方法及装置 | |
US20130013283A1 (en) | Distributed multi-pass microarchitecture simulation | |
US10318615B1 (en) | Modeling and measuring browser performance using reference pages | |
CN102144232A (zh) | 使用分支取代的仿真处理器执行 | |
Liang et al. | Cache modeling in probabilistic execution time analysis | |
US7120567B2 (en) | Method and apparatus for determining output uncertainty of computer system models | |
Nambiar et al. | Model driven software performance engineering: Current challenges and way ahead | |
US20230056423A1 (en) | Processor core simulator including trace-based coherent cache driven memory traffic generator | |
Lewis et al. | Chaotic attractor prediction for server run-time energy consumption | |
Araujo et al. | Software aging issues in streaming video player. | |
CN108846248B (zh) | 一种应用建模及性能预测方法 | |
US20210182696A1 (en) | Prediction of objective variable using models based on relevance of each model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |