1.本发明涉及计算机应用技术领域,具体涉及一种处理器微架构监测方法及装置。另外,还涉及一种电子设备及处理器可读存储介质。
背景技术:2.在arm(advanced risc machines)处理器的技术文档中,处理器状态被分为正常状态和调试状态。正常状态下,处理器使用高效的现代流水线执行进程,而在调试状态下,处理器的流水线被暂停,处理器的系统状态和微架构状态被固定。为了提高处理器的可调试性,arm处理器提供了一组调试寄存器。调试寄存器主要面向调试状态,提供了基本的单处理器调试功能,包括使处理器进入调试状态、在调试状态下单步执行指令、在调试状态下获取处理器数据和在调试状态下传递处理器数据等。调试寄存器中的断点寄存器包括dbgbcr和dbgbvr,能使处理器进入调试状态,前者用于控制断点属性,后者用于设置断点地址。当进程的指令地址与dbgbvr的值匹配上时,处理器将清空流水线并进入调试状态。调试状态下,处理器被调试器接管,调试器通过调试寄存器中的dbgdtrtx和dbgdtrrx寄存器获取处理器的微架构状态并进行数据交互。调试器通过editr和edscr寄存器在处于调试状态的待测试处理器上单步执行部分指令。arm处理器提供了调试寄存器的接口,因此能使用同一芯片上的其余处理器作为调试器对某个特定处理器展开调试,这使得片上跨核调试模型的实现成为可能。
3.为了提高处理器的可测性,arm处理器还提供了调试架构coresight。coresight是arm处理器集成的用于调试的ip核,包含了高级外围总线(advanced peripheral bus,apb)、交叉触发器接口(cross trigger interface,cti)、嵌入式跟踪宏模块(embedded trace macrocell,etm)和嵌入式跟踪缓冲区(embedded trace buffer,etb)等。高级外围总线提供了调试架构的访问接口,能够通过一个固定的物理地址访问调试架构,如cti寄存器组等。cti组件实现了调试器与被调试处理器直接的调试信号收发,arm处理器的技术文档提供了使用cti组件使待测试处理器进入和退出调试状态的详细步骤。利用接口,同一芯片上的处理器之间能够通过cti寄存器直接发送和接收调试信号,而不再依赖jtag(joint test action group,联合测试工作组)接口与外部调试器,使片上跨核调试模型的实现成为可能。然而,现有的基于coresight的arm调试器或监测工具大都使用外部调试器,包括工业界的ds-5和ads,以及ninja等。外部调试器大都具有良好的用户接口和丰富的调试功能,但在监测效果方面存在不足。因此如何提供一种更为有效的处理器微架构监测方案成为亟待解决的难题。
技术实现要素:4.为此,本发明提供一种处理器微架构监测方法及装置,以解决现有技术中存在的处理器微架构监测方案局限性较高,从而导致监测效果较差的缺陷。
5.第一方面,本发明提供一种处理器微架构监测方法,包括:基于预设的组件控制模
块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;
6.将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。
7.进一步的,所述组件控制模块包括:调试寄存器控制模块、交叉触发器接口组件控制模块以及性能监控组件控制模块;
8.所述基于预设的组件控制模块对待测试处理器的调试状态进行控制,具体包括:基于所述调试寄存器控制模块,通过所述待测试处理器的接口读写所述待测试处理器的调试寄存器的内容;基于所述交叉触发器接口组件控制模块,通过所述接口读写所述交叉触发器接口组件控制模块的内容;基于所述性能监控组件控制模块,通过所述接口读写所述性能监控组件的内容;以实现控制所述待测试处理器进入、退出调试状态,控制所述待测试处理器在调试状态下执行相应的监测指令以及控制所述数据获取模块获取监测数据和数据传输模块来传递监测数据。
9.进一步的,所述的处理器微架构监测方法,还包括:
10.基于所述数据获取模块获取所述待测试处理器的间接监测数据;所述间接监测数据包括所述待测试处理器中分支预测器、指令页表缓存、数据页表缓存和二级缓存对应的监测数据;
11.将所述间接监测数据通过预设的性能监控组件在线写入所述内存空间内,利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析;其中,所述性能监控组件包含所述待测试处理器对应的微架构事件,所述微架构事件的组合能够间接反映所述待测试处理器中微架构部件的关键属性。
12.进一步的,在将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内之前,还包括:基于预设的跨域通信协议获取用户进程发送的监测命令,并利用所述内核空间的监测系统状态监听器根据监测系统的当前状态检查所述监测命令的合法性;
13.其中,所述跨域通信协议是将所述组件控制模块与所述数据获取模块划分成独立的子监测功能模块,并封装成函数后写入所述内核空间,将所述子监测功能模块映射成监测命令并进行封装得到的。
14.进一步的,所述直接监测数据包括:一级缓存以及联合页表缓存对应的监测数据。
15.进一步的,所述的处理器微架构监测方法,还包括:基于所述数据获取模块获取相应的微架构组件的内容;其中,所述微架构组件的内容包括所述性能监控组件中事件计数器的内容和所述性能监控组件中时钟计数器的内容;
16.所述利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析,具体包括:
17.基于所述监测数据分析模块在获取所述微架构组件的内容后,通过相对应的目标算法分别对所述分支预测器、所述指令页表缓存、所述数据页表缓存和所述二级缓存对应的监测数据进行分析,以实现恢复所述微架构组件的关键属性。
18.进一步的,所述的处理器微架构监测方法,在基于预设的跨域通信协议获取用户
进程发送的监测命令之前,还包括:
19.将所述调试处理器中监测系统的监测功能划分成独立的子多个监测功能模块,在所述内核空间将所述子监测功能模块封装成独立函数,以实现监测功能;以及将所述监测功能封装成监测命令,以使得所述用户空间的用户进程能够通过监测命令调用所述内核空间的函数以实现相应的监测功能;以及在所述内核空间使用一个有限状态机,根据所述监测系统的当前状态检查用户进程对应的监测命令是否合法;基于linux操作系统的netlink机制实现所述用户空间与所述内核空间的跨域通信,并将所述监测命令封装到所述跨域通信协议中。
20.第二方面,本发明还提供一种处理器微架构监测装置,包括:
21.控制单元,用于基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;
22.第一监测数据分析单元,用于将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。
23.进一步的,所述组件控制模块包括:调试寄存器控制模块、交叉触发器接口组件控制模块以及性能监控组件控制模块;
24.所述控制单元,具体用于:基于所述调试寄存器控制模块,通过所述待测试处理器的接口读写所述待测试处理器的调试寄存器的内容;基于所述交叉触发器接口组件控制模块,通过所述接口读写所述交叉触发器接口组件控制模块的内容;基于所述性能监控组件控制模块,通过所述接口读写所述性能监控组件的内容;以实现控制所述待测试处理器进入、退出调试状态,控制所述待测试处理器在调试状态下执行相应的监测指令以及控制所述数据获取模块获取监测数据和数据传输模块来传递监测数据。
25.进一步的,所述的处理器微架构监测装置,还包括:
26.第二监测数据分析单元,用于分析基于所述数据获取模块获取所述待测试处理器的间接监测数据;所述间接监测数据包括所述待测试处理器中分支预测器、指令页表缓存、数据页表缓存和二级缓存对应的监测数据;
27.将所述间接监测数据通过预设的性能监控组件在线写入所述内存空间内,利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析;其中,所述性能监控组件包含所述待测试处理器对应的微架构事件,所述微架构事件的组合能够间接反映所述待测试处理器中微架构部件的关键属性。
28.进一步的,在将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内之前,还包括:监测命令分析单元,用于分析基于预设的跨域通信协议获取用户进程发送的监测命令,并利用所述内核空间的监测系统状态监听器根据监测系统的当前状态检查所述监测命令的合法性;
29.其中,所述跨域通信协议是将所述组件控制模块与所述数据获取模块划分成独立的子监测功能模块,并封装成函数后写入所述内核空间,将所述子监测功能模块映射成监测命令并进行封装得到的。
30.进一步的,所述直接监测数据包括:一级缓存以及联合页表缓存对应的监测数据。
31.进一步的,所述的处理器微架构监测装置,还包括:数据内容获取单元,用于基于所述数据获取模块获取相应的微架构组件的内容;其中,所述微架构组件的内容包括所述性能监控组件中事件计数器的内容和所述性能监控组件中时钟计数器的内容;
32.所述第二监测数据分析单元,具体用于:
33.基于所述监测数据分析模块在获取所述微架构组件的内容后,通过相对应的目标算法分别对所述分支预测器、所述指令页表缓存、所述数据页表缓存和所述二级缓存对应的监测数据进行分析,以实现恢复所述微架构组件的关键属性。
34.进一步的,所述的处理器微架构监测装置,在基于预设的跨域通信协议获取用户进程发送的监测命令之前,还包括:
35.交互单元,用于将所述调试处理器中监测系统的监测功能划分成独立的子多个监测功能模块,在所述内核空间将所述子监测功能模块封装成独立函数,以实现监测功能;以及将所述监测功能封装成监测命令,以使得所述用户空间的用户进程能够通过监测命令调用所述内核空间的函数以实现相应的监测功能;以及在所述内核空间使用一个有限状态机,根据所述监测系统的当前状态检查用户进程对应的监测命令是否合法;基于linux操作系统的netlink机制实现所述用户空间与所述内核空间的跨域通信,并将所述监测命令封装到所述跨域通信协议中。
36.第三方面,本发明还提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时实现如上述任意一项所述的处理器微架构监测方法的步骤。
37.第四方面,本发明还提供一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的处理器微架构监测方法的步骤。
38.本发明提供的处理器微架构监测方法,通过位于调试处理器的内核空间中的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据,将所述直接监测数据传入预先位于所述调试处理器的内核空间的数据传输设备驱动模块创建的内存空间内,利用位于所述调试处理器的用户空间的监测数据分析模块读取所述内存空间内的直接监测数据进行分析;该方法监测覆盖范围广,能够有效提高处理器微架构监测的可靠性、稳定性和可扩展性,从而提升处理器系统结构与微架构监测效果。
附图说明
39.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
40.图1是本发明实施例提供的处理器微架构监测方法的流程示意图;
41.图2是本发明实施例提供的处理器微架构监测方法的覆盖范围的示意图;
42.图3是本发明实施例提供的处理器微架构监测方法对应的监测系统的示意图;
43.图4是本发明实施例提供的监测系统运行时状态机的示意图;
44.图5是本发明实施例提供的用户进程指令插桩的基本流程示意图;
45.图6是本发明实施例提供的处理器微架构监测装置的结构示意图;
46.图7是本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
47.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
48.本发明提供一种处理器微架构的监测方法。该方法可基于arm处理器的调试寄存器、性能监控模块和调试架构coresight,实现一种简单高效的片上跨核调试模型,从而实现处理器运行时微架构实时监测。其中,调试寄存器提供了对单个处理器调试的基本接口,性能监控模块提供了间接监测处理器微架构部件的方法,而调试架构coresight提供了片上处理器退出调试的机制。该方法的直接监测范围包括一级缓存(l1 cache或l1缓存)和联合页表缓存(unified translation lookaside buffer,unified tlb);该方法的间接监测范围包括分支预测器(branch predictor,bp)、指令页表缓存(instruction tlb)、数据页表缓存(data tlb)和二级缓存(l2 cache或l2缓存)的部分属性。该方法在应用过程中不仅支持基于硬件断点的微架构监测,还支持指令粒度的插桩,能够跟踪arm处理器系统结构层面的指令流与数据流。
49.下面基于本发明所述的处理器微架构监测方法,对其实施例进行详细描述。如图1所示,其为本发明实施例提供的处理器微架构监测方法的流程示意图,具体实现过程包括以下步骤:
50.步骤101:基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据。其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间。所述直接监测数据包括:一级缓存以及联合页表缓存对应的监测数据。所述待测试处理器可以是指被测试的arm处理器,如图3中的cpu1。所述调试处理器可以是指作为调试器的arm处理器,如图3中的cpu2。
51.所述组件控制模块具体包括:调试寄存器控制模块、交叉触发器接口(cross trigger interface,cti)组件控制模块以及性能监控组件控制模块(即(performance monitor unit,pmu)组件控制模块),这些组件控制模块可基于arm处理器的技术文档实现。相应的,所述基于预设的组件控制模块对待测试处理器的调试状态进行控制,对应的过程包括:基于所述调试寄存器控制模块,通过所述待测试处理器的接口读写所述待测试处理器的调试寄存器的内容;基于交叉触发器接口组件控制模块,通过所述接口读写所述交叉触发器接口组件控制模块的内容;基于所述性能监控组件控制模块,通过所述接口读写所述性能监控组件的内容;以实现控制所述待测试处理器进入、退出调试状态,控制所述待测试处理器在调试状态下执行相应的监测指令以及控制所述数据获取模块获取监测数据和数据传输模块来传递监测数据。
52.具体的,基于所述调试寄存器控制模块,通过配置dbgbcr和dbgbvr寄存器,实现硬
件断点的写入、删除和属性配置;通过editr寄存器和edscr寄存器的ite字段控制调试状态下指令的单步执行;通过edscr寄存器的ma字段设置调试状态下寄存器与内存数据的获取模式;通过edscr寄存器的txfull和rxfull字段控制数据获取的同步。基于所述交叉触发器接口组件控制模块,通过控制cticontrol、ctigate、ctiouten、ctiapppulse、ctiintack和ctitrigoutstatus等寄存器来实现调试退出信号的发送,从而控制待测试处理器退出调试状态。基于所述pmu组件控制模块,通过pmcr和pmcntenset寄存器开启和关闭pmu,通过pmevtyper寄存器配置想要监测的系统结构和微架构事件,通过pmuserenr寄存器配置pmu组件的使用权限。进一步的,基于数据获取和传输模块,使用调试寄存器dbgdtrrx和dbgdtrtx获取待测处理器的寄存器和内存数据(即系统结构的监测数据),每次最多获取64位数据;使用arm处理器提供的一级缓存(l1 cache)和联合页表缓存(unified tlb)访问接口,获取相关微架构组件内容,使用pmu的pmevcntr寄存器获取pmu事件计数器的内容,使用pmccntr寄存器获取pmu时钟计数器的内容,即微架构事件的监测数据。获取监测数据后,数据获取和传输模块基于linux虚拟文件系统(virtual file system,vfs)和页表管理机制实现监测数据的存储,具体实现方式为创建设备文件并将其挂载到linux系统上,然后与vfs节点绑定。其中,所述数据获取和传输模块包括所述数据获取模块和数据传输模块。在具体实施过程中,为了实现自动化且可靠的监测,需要预先将组件控制模块与数据获取和传输模块划分成独立的监测功能模块,并封装成函数后写入内核空间,然后将相应的监测功能模块映射成监测命令并封装到跨域通信协议中,从而实现用户与监测系统的交互。
53.步骤102:将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。所述直接监测数据包括:一级缓存(l1 cache)以及联合页表缓存(unified tlb)对应的监测数据。所述一级缓存包括图2中的一级指令缓存(l1 instruction cache)和一级数据缓存(l1 data cache)。
54.本发明实施例中,在将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内之前,还包括:基于预设的跨域通信协议获取用户进程发送的监测命令,并利用所述内核空间的监测系统状态监听器根据监测系统的当前状态检查所述监测命令的合法性。其中,所述跨域通信协议是将所述组件控制模块与所述数据获取模块划分成独立的子监测功能模块,并封装成函数后写入所述内核空间,将所述子监测功能模块映射成监测命令并进行封装得到的。实际实施过程中,在基于预设的跨域通信协议获取用户进程发送的监测命令之前,还包括:将所述调试处理器中监测系统的监测功能划分成独立的子多个监测功能模块,在所述内核空间将所述子监测功能模块封装成独立函数,以实现监测功能;以及将所述监测功能封装成监测命令,以使得所述用户空间的用户进程能够通过监测命令调用所述内核空间的函数以实现相应的监测功能;以及在所述内核空间使用一个有限状态机,根据所述监测系统的当前状态检查用户进程对应的监测命令是否合法;基于linux操作系统的netlink机制实现所述用户空间与所述内核空间的跨域通信,并将监测命令封装到所述跨域通信协议中。
55.如图3所示,其为处理器的监测系统。cpu1为待测试处理器,cpu2为作为调试器的处理器。cpu2中,包含调试寄存器控制模块、交叉触发器接口组件控制模块和pmu组件控制
模块在内的控制模块、监测系统状态机、监测系统状态监听器以及数据传输设备驱动位于内核空间,基于netlink实现的通信接口和监测数据分析模块位于用户空间。控制模块通过arm处理器的内存映射接口直接读写待测试处理器cpu1的调试寄存器、cti组件以及pmu组件,以达到控制待测试处理器进入、退出调试状态,以及在调试状态下执行指令、获取数据和传递数据的目的。用户进程使用发明内容中所述的通信协议给监测系统发送命令,内核空间的监测系统状态监听器直接根据监测系统当前状态检查命令的合法性。待测试处理器的直接监测数据通过调试寄存器传入被控制寄存器,然后在线传入由设备驱动创建的内存空间内;待测试处理器的间接监测数据通过pmu在线写入这片内存空间。位于用户空间的分析模块能够离线读取该内存空间的数据并进行分析。这种松耦合架构大大提高了监测系统的可靠性、稳定性和可扩展性。
56.本发明实施例中,基于arm处理器提供的直接访问一级缓存和联合tlb的方式。以aarch64指令集架构为例,s3_3_c15_c2_0寄存器提供了访问一级数据缓存(l1 data cache)标签字段的方法,s3_3_c15_c4_0寄存器提供了访问一级数据缓存数据字段的方法,s3_3_c15_c2_1和s3_3_c15_c4_1寄存器分别提供了访问一级指令缓存(l1 instruction cache)的标签字段和数据字段的方法,s3_3_c15_c4_2提供了访问联合页表缓存的方法。在访问这些数据后,能够通过s3_3_c15_c0_0~s3_3_c15_c0_3四个寄存器把数据传递到通用寄存器。在调试状态下,能够通过这个接口直接监测一级缓存和联合页表缓存(unified tlb)的内容。
57.在本发明实施例中,利用arm处理器提供的一组pmu(performance monitor unit)事件,通过对处理器微架构对应的pmu事件计数来反映处理器状态。表1列举了处理器的微架构事件(即pmu事件),这些事件的组合能够反映处理器微架构部件的关键属性。
58.表1 arm提供的pmu事件
[0059][0060]
在具体实施过程中,基于arm处理器调试寄存器、性能监控模块和调试架构coresight构建的片上跨核调试模型(如图3所示)实现对arm处理器的缓存、页表缓存以及分支预测器等组件的监测。在基于所述监测系统进行监测过程中,可使用调试寄存器提供的硬件断点功能,在处理器上执行的指令到达指定地址时,暂停处理器并使其进入调试状态,同时保持处理器的系统结构与微架构状态;使用调试寄存器提供的处理器调试状态下单步指令执行机制、数据传输机制和内存读写机制,实现跨核调试的大部分基础功能;使用调试架构coresight的cti组件实现处理器退出调试状态并恢复正常执行的功能;使用arm处理器提供的缓存数据获取接口直接监测处理器的一级指令缓存、一级数据缓存与联合页表缓存的所有数据;使用性能监控模块提供的系统结构与微架构事件计数功能,间接监测无法直接获取数据的部分微架构组件的关键属性,具体包括图2中的分支预测器(branch predictor,bp)、指令页表缓存(instruction tlb)、数据页表缓存(data tlb)和二级缓存(l2 cache)的部分属性。
[0061]
需要说明的是,上述实现过程中部分操作只能在处理器处于特定状态下实现,比如只有在正常状态下才能刷新处理器的缓存。一些情况下的不当操作可能导致处理器崩
溃,比如开启断点后长时间没有重启目标核。
[0062]
进一步的,为了实现可靠、稳定的监测,本发明使用监测功能和监测命令松耦合且跨域实现的方式保证监测过程的稳定性和可靠性,使用跨域通信协议保证监测过程的自动化和高效性。具体实现过程包括:将监测系统的监测功能分成多个子模块,在内核空间把子模块封装成独立函数,实现监测功能;此外,把监测功能封装成监测命令,允许用户空间的进程通过监测命令调用内核空间实现的监测功能;同时,在内核空间使用一个有限的状态机(即监测系统状态机),实现根据监测系统的当前状态检查用户的监测命令是否合法,从而防止用户的错误监测步骤造成系统错误。最后,基于linux操作系统的netlink机制实现用户空间与内核空间的跨域通信,并把监测命令封装到跨域通信协议中,从而实现高效的自动化监测。
[0063]
需要说明的是,本发明通过将监测功能划分成独立的模块并封装成内核空间的函数,同时将功能模块映射成监测命令,实现命令与监测功能在用户空间和内核空间隔离。本发明在内核空间实现了一个有限的状态机(即监测系统状态机)和监听器(即监测系统状态监听器),状态机一共有五个状态,分别是监测系统未启动(v)、监听器未启动(i)、监听器启动且目标核处于正常模式(l)、目标核处于调试模式(d)和监测系统完成一轮监测且监听器暂停(e)。监听器通过循环检查待测试处理器edscr寄存器的status字段,实时获取待测试处理器的状态。具体如图4所示,通过插入内核驱动,能使状态从v转移到i;通过启动监听器,能使状态从i转移到l;监听器将通过不断访问待测试处理器上edscr寄存器的status字段获取待测试处理器是否处于调试状态,若是,则监测系统的状态更新为d,否则监测系统的状态回到l。当处理器进入调试状态的指令地址位于用户提供的断点地址链表的尾节点,或用户主动暂停监听器后,监测系统进入e状态。只有e状态能够删除内核驱动,回到v状态。e状态需要通过重置监测系统设置来回到i状态,继续开始下一组测试用例的监测。
[0064]
表2列出了监测系统各监测功能对应的命令操作码和允许执行时的监测系统的状态,共包含16种功能。命令操作码的低8位用于描述功能的序号,高8位用于描述功能允许执行的状态。需要说明的是,此编码仍保留了大量的可扩展空间。
[0065]
表2监测系统各监测功能的指令编码和允许执行状态
[0066][0067][0068]
用户和监测系统通过linux操作系统的netlink机制实现跨域实时通信。类似网络通信,本发明设计了如下的跨域通信协议。其中,字段len表示数据包长度。get/reply表示数据发送方向,get表示数据从测试用例发往监测系统,reply表示数据从监测系统发往测试用例。checksum用于检查数据包的正确性。op表示测试用例请求的内容。ret_state只在reply包中定义,表示数据包的发送、检查和执行结果。state只在reply包中定义,表示监测系统发包时的状态。addr_n表示数据包附带列表数据时的数据长度。《list》是指向一个数组列表的指针。其余的位置保留,均填充0。
[0069][0070]
在本发明具体应用过程中,面向arm处理器的用户进程的指令粒度插桩时,为了进一步提高监测的自动化程度和可扩展性,本发明设计了一种支持用户在处理器的特定上下文环境执行特定代码的方法,从而实现指令粒度的插桩。该方法的关键是支持任意数量的硬件断点。例如:假设用户提前构造了一个任意长度的地址链表,要求监测系统在这些地址处使待测试处理器进入调试状态,从而自动执行监测功能或者用户预定义的其它操作。由于arm处理器的硬件断点寄存器个数有限,为了支持任意数量的硬件断点,本发明提出逐步调试模式,即在每条指令处触发断点,并在指令地址与用户的地址链表匹配时执行用户的插桩代码。为了保证断点的连续性,在每次进入调试状态时,可以通过获取待测试处理器通用寄存器的内容,来动态计算下一条指令地址,并把硬件断点寄存器的值更新为该地址。具体如图5所示,所述用户进程指令粒度插桩的基本流程。监测系统收到用户提供的断点地址链表后,首先把程序的入口地址(如主函数的第一条指令地址)写入硬件断点寄存器dbgbvr。之后,在待测试处理器每次由于硬件断点进入调试状态后,监测系统将清除硬件断点并动态计算下一指令地址,提前把该地址写入硬件断点寄存器。如果当前断点地址在用户的断点地址链表中,则调用用户的插桩代码,如果插桩代码包含监测命令,内核同样通过状态机的方式检查命令的合法性。
[0071]
在本发明实施过程中,还包括基于所述数据获取模块获取所述待测试处理器的间接监测数据;所述间接监测数据包括所述待测试处理器中分支预测器、指令页表缓存、数据页表缓存和二级缓存对应的监测数据;将所述间接监测数据通过预设的性能监控组件在线写入所述内存空间内,利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析;其中,所述性能监控组件包含所述待测试处理器对应的微架构事件,所述微架构事件的组合能够间接反映所述待测试处理器中微架构部件的关键属性。进一步的,还包括:基于所述数据获取模块获取相应的微架构组件的内容;其中,所述微架构组件的内容包括所述性能监控组件中事件计数器的内容和所述性能监控组件中时钟计数器的内容。相应的,所述利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析,对应的实现过程包括:基于所述监测数据分析模块在获取所述微架构组件的内容后,通过相对应的目标算法分别对所述分支预测器、所述指令页表缓存、所述数据页表缓存和所述二级缓存对应的监测数据进行分析,以实现恢复所述微架构组件的关键属性。
[0072]
在本发明实施例中,可使用性能监控模块提供的微架构事件,通过相应的目标算法(即间接监测算法)恢复上述相应的部分内容。例如,所述间接监测算法包括:基于br_
mis_pred、br_pred和br_return_retired等事件的组合来监测bp中分支目标缓冲区(branch target buffer,btb)和返回地址栈(return stack buffer,rsb)的部分内容。基于l2d_cache和bus_access等事件的组合来监测二级缓存的部分内容。基于l1i_tlb_refill、l1d_tlb_refill和inst_retired等事件组合来监测指令页表缓存和数据页表缓存的部分内容。所述间接监测算法包括算法1、算法2、算法3、算法4以及算法5。
[0073]
需要说明的是,本发明基于表1所列的pmu事件,设计了监测arm处理器分支预测器的组件分支目标缓冲区和返回地址栈的算法。算法1利用6个pmu事件,实现了判断某个地址索引的分支目标缓冲区表项内容是否为某个特定地址的方法。在执行地址v的间接分支指令i前后进行pmu采样,若立即数分支或返回分支计数发生变化,说明存在测量噪声,否则观察分支指令预测执行和错误预测计数,若分支指令被预测执行但错误预测,说明v索引到的分支目标缓冲区表项的预测目标地址不是i的实际目标地址tv,从而达到间接监测这一分支目标缓冲区表项的目的。类似地,算法2通过执行一条返回指令并观察分支指令的预测情况计数,间接推断返回地址栈顶部地址。这种间接监测方式会破坏程序上下文,因此在每次调用间接监测算法后要回滚待测试处理器的测试用例,从而在每次间接监测前保持相同的处理器环境。具体的,算法1:分支目标缓冲区间接监测算法:输入:一条间接分支跳转指令i;该指令的虚拟地址v;已知的跳转地址tv;pmu事件inst_retired、br_mis_pred、br_pred、br_immed_retired、br_return_retired和inst_spec列表e
←
[e8,e
16
,e
18
,e
13
,e
14
,e
27
];输出:v索引的分支目标缓冲区表项是否为tv的判断j。开始:se
←
[0,0,0,0,0,0];for i∈[0,len(e)-1]do;se[i]
←
sample(e[i]);end for;execute(i);for i∈[0,len(e)-1]do;se[i]
←
sample(e[i])-se[i];end for;if se[3]》0 or se[4]》0or se[0]=0or se[5]=0or se[0]<se[6];j
←
0;else;j
←
se[1]=0 and se[2]=1;end if;retur j;结束。算法2:返回地址栈间接监测算法:输入:一条返回指令i;该指令的虚拟地址v;已知的跳转地址tv;pmu事件inst_retired、br_mis_pred、br_pred、br_return_retired和inst_spec列表e
←
[e8,e
16
,e
18
,e
14
,e
27
];输出:返回地址栈的顶部是否为tv的判断j。开始:se
←
[0,0,0,0,0];for i∈[0,len(e)-1]do;se[i]
←
sample(e[i]);end for;execute(i);for i∈[0,len(e)-1]do:se[i]
←
sample(e[i])-se[i];end for;if se[3]=0 or se[4]=0 or se[0]=0 or se[0]<se[5];j
←
0;else;j
←
se[1]=0and se[2]=1;end if;retur j;结束。
[0074]
在间接监测过程中,指令页表缓存和数据页表缓存使用了pmu事件inst_retired、l1i_tlb_refill和l1d_tlb_refill,还使用了pmu的时钟计数器。算法3通过执行一条已知地址为v的任意非访存、非跳转指令,并观察指令页表缓存是否缺失以及执行该指令的时钟周期是否大于页表缓存缺失时的时钟周期阈值,来判断该指令对应的地址是否在指令页表缓存中存在相关表项。类似地,算法4通过执行目标地址为v访存指令,观察是否发生页表缓存缺失,来判断数据页表缓存中是否存在地址v的相关访存表项。具体的,算法3为:指令页表缓存间接监测算法:输入:一条非访存、非跳转指令i,其虚拟地址为v;已知的页表缓存缺失时钟周期阈值tm;pmu事件inst_retired和l1i_tlb_refill列表e
←
[e8,e2];pmu时钟计数器c;输出:指令页表缓存中是否存在与地址v相关表项的判断j。开始:se
←
[0,0,0];for i∈[0,len(e)-1]do;se[i]
←
sample(e[i]);end for;se[2]
←
sample(c);execute(i);for i∈[0,len(e)-1]do;se[i]
←
sample(e[i])-se[i];end for;se[2]
←
sample(c)-se[2];if se[0]=0;j
←
0;else;j
←
se[2]≤tm and se[1]=0;end if;retur j;结束。算法4为:数据
页表缓存间接监测算法:输入:一条访存指令i,访存地址为v;已知的页表缓存缺失时钟周期阈值tm;pmu事件inst_retired和l1d_tlb_refill列表e
←
[e8,e5];pmu时钟计数器c;输出:数据页表缓存中是否存在与地址v相关表项的判断j。开始:se
←
[0,0,0];for i∈[0,len(e)-1]do;se[i]
←
sample(e[i]);end for;se[2]
←
sample(c);execute(i);for i∈[0,len(e)-1]do;se[i]
←
sample(e[i])-se[i];end for;se[2]
←
sample(c)-se[2];if se[0]=0;j
←
0;else;j
←
se[2]≤tm and se[1]=0;end if;returnj;结束。
[0075]
另外,在间接监测过程中,对二级缓存的监测使用了pmu事件inst_retired、mem_access、l2d_cache和bus_access。算法5首先对虚拟地址v计算其在一级缓存中的集合(set)数,然后使用dc isw指令把一级缓存集合清空。接下来执行访存指令i,若l2d_cache事件加1,说明二级缓存被访问,若同时bus_access事件未加1,说明三级缓存(l3 cache)没被访问,从而表明二级缓存中存在虚拟地址v对应的有效数据。具体的,算法5为:二级缓存间接监测:输入:一条访存指令i;目标内存的虚拟地址v;pmu事件inst_retired、mem_access、l2d_cache和bus_access表e
←
[e8,e
19
,e
22
,e
25
]输出:监测二级缓存中是否存在虚拟地址v对应的有效数据的判断j。开始:se
←
[0,0,0,0];set
←
getset(v):execute(dc isw(set)):for i∈[0,len(e)-1]do;se[i]
←
sample(e[i]);end for;execute(i);se
←
[0,0,0,0];set
←
getset(v);execute(dc isw(set));for i∈[0,len(e)-1]do;se[i]
←
sample(e[i]);end for;execute(i);for i∈[0,len(e)-1]do;se[i]
←
sample(e[i])-se[i];end for;if se[0]=0 or se[1]=0 or se[1]<se[2]orse[0]<se[1];j
←
0;else;j
←
se[2]=1 and se[3]=0;end if;returnj;结束。
[0076]
本发明实施例所述的处理器微架构监测方法,通过位于调试处理器的内核空间中的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据,将所述直接监测数据传入预先位于所述调试处理器的内核空间的数据传输设备驱动模块创建的内存空间内,利用位于所述调试处理器的用户空间的监测数据分析模块读取所述内存空间内的直接监测数据进行分析;其监测覆盖范围广,能够有效提高处理器微架构监测的可靠性、稳定性和可扩展性,从而提升处理器系统结构与微架构监测效果。
[0077]
与上述提供的一种处理器微架构监测方法相对应,本发明还提供一种处理器微架构监测装置。由于该装置的实施例相似于上述方法实施例,所以描述得比较简单,相关之处请参见上述方法实施例部分的说明即可,下面描述的处理器微架构监测装置的实施例仅是示意性的。请参考图6所示,其为本发明实施例提供的一种处理器微架构监测装置的结构示意图。
[0078]
本发明所述的处理器微架构监测装置,具体包括如下部分:
[0079]
控制单元601,用于基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;
[0080]
第一监测数据分析单元602,用于将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。
[0081]
进一步的,所述组件控制模块包括:调试寄存器控制模块、交叉触发器接口组件控制模块以及性能监控组件控制模块;
[0082]
所述控制单元,具体用于:基于所述调试寄存器控制模块,通过所述待测试处理器的接口读写所述待测试处理器的调试寄存器的内容;基于所述交叉触发器接口组件控制模块,通过所述接口读写所述交叉触发器接口组件控制模块的内容;基于所述性能监控组件控制模块,通过所述接口读写所述性能监控组件的内容;以实现控制所述待测试处理器进入、退出调试状态,控制所述待测试处理器在调试状态下执行相应的监测指令以及控制所述数据获取模块获取监测数据和数据传输模块来传递监测数据。
[0083]
进一步的,所述的处理器微架构监测装置,还包括:
[0084]
第二监测数据分析单元,用于基于所述数据获取模块获取所述待测试处理器的间接监测数据;所述间接监测数据包括所述待测试处理器中分支预测器、指令页表缓存、数据页表缓存和二级缓存对应的监测数据;
[0085]
将所述间接监测数据通过预设的性能监控组件在线写入所述内存空间内,利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析;其中,所述性能监控组件包含所述待测试处理器对应的微架构事件,所述微架构事件的组合能够间接反映所述待测试处理器中微架构部件的关键属性。
[0086]
进一步的,在将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内之前,还包括:监测命令分析单元,用于基于预设的跨域通信协议获取用户进程发送的监测命令,并利用所述内核空间的监测系统状态监听器根据监测系统的当前状态检查所述监测命令的合法性;
[0087]
其中,所述跨域通信协议是将所述组件控制模块与所述数据获取模块划分成独立的子监测功能模块,并封装成函数后写入所述内核空间,将所述子监测功能模块映射成监测命令并进行封装得到的。
[0088]
进一步的,所述直接监测数据包括:一级缓存以及联合页表缓存对应的监测数据。
[0089]
进一步的,所述的处理器微架构监测装置,还包括:数据内容获取单元,用于基于所述数据获取模块获取相应的微架构组件的内容;其中,所述微架构组件的内容包括所述性能监控组件中事件计数器的内容和所述性能监控组件中时钟计数器的内容;
[0090]
所述第二监测数据分析单元,具体用于:
[0091]
基于所述监测数据分析模块在获取所述微架构组件的内容后,通过相对应的目标算法分别对所述分支预测器、所述指令页表缓存、所述数据页表缓存和所述二级缓存对应的监测数据进行分析,以实现恢复所述微架构组件的关键属性。
[0092]
进一步的,所述的处理器微架构监测装置,在基于预设的跨域通信协议获取用户进程发送的监测命令之前,还包括:
[0093]
交互单元,用于将所述调试处理器中监测系统的监测功能划分成独立的子多个监测功能模块,在所述内核空间将所述子监测功能模块封装成独立函数,以实现监测功能;以及将所述监测功能封装成监测命令,以使得所述用户空间的用户进程能够通过监测命令调用所述内核空间的函数以实现相应的监测功能;以及在所述内核空间使用一个有限状态机,根据所述监测系统的当前状态检查用户进程对应的监测命令是否合法;基于linux操作系统的netlink机制实现所述用户空间与所述内核空间的跨域通信,并将所述监测命令封
装到所述跨域通信协议中。
[0094]
本发明实施例所述的处理器微架构监测装置,通过位于调试处理器的内核空间中的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据,将所述直接监测数据传入预先位于所述调试处理器的内核空间的数据传输设备驱动模块创建的内存空间内,利用位于所述调试处理器的用户空间的监测数据分析模块读取所述内存空间内的直接监测数据进行分析,监测覆盖范围广,能够有效提高处理器微架构监测的可靠性、稳定性和可扩展性,从而提升处理器系统结构与微架构监测效果。
[0095]
与上述提供的处理器微架构监测方法相对应,本发明还提供一种电子设备。由于该电子设备的实施例相似于上述方法实施例,所以描述得比较简单,相关之处请参见上述方法实施例部分的说明即可,下面描述的电子设备仅是示意性的。如图7所示,其为本发明实施例公开的一种电子设备的实体结构示意图。该电子设备可以包括:处理器(processor)701、存储器(memory)702和通信总线703(即上述装置总线)以及查找引擎705,其中,处理器701,存储器702通过通信总线703完成相互间的通信,通过通信接口704与外部进行通信。处理器701可以调用存储器702中的逻辑指令,以执行处理器微架构监测方法,该方法包括:基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。
[0096]
此外,上述的存储器702中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:存储芯片、u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0097]
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在处理器可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的处理器微架构监测方法。该方法包括:基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。
[0098]
又一方面,本发明实施例还提供一种处理器可读存储介质,所述处理器可读存储
介质上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的处理器微架构监测方法。该方法包括:基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。
[0099]
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
[0100]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0101]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0102]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:1.一种处理器微架构监测方法,其特征在于,包括:基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。2.根据权利要求1所述的处理器微架构监测方法,其特征在于,所述组件控制模块包括:调试寄存器控制模块、交叉触发器接口组件控制模块以及性能监控组件控制模块;所述基于预设的组件控制模块对待测试处理器的调试状态进行控制,具体包括:基于所述调试寄存器控制模块,通过所述待测试处理器的接口读写所述待测试处理器的调试寄存器的内容;基于所述交叉触发器接口组件控制模块,通过所述接口读写所述交叉触发器接口组件控制模块的内容;基于所述性能监控组件控制模块,通过所述接口读写所述性能监控组件的内容;以实现控制所述待测试处理器进入、退出调试状态,控制所述待测试处理器在调试状态下执行相应的监测指令以及控制所述数据获取模块获取监测数据和数据传输模块来传递监测数据。3.根据权利要求1所述的处理器微架构监测方法,其特征在于,还包括:基于所述数据获取模块获取所述待测试处理器的间接监测数据;所述间接监测数据包括所述待测试处理器中分支预测器、指令页表缓存、数据页表缓存和二级缓存对应的监测数据;将所述间接监测数据通过预设的性能监控组件在线写入所述内存空间内,利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析;其中,所述性能监控组件包含所述待测试处理器对应的微架构事件,所述微架构事件的组合能够间接反映所述待测试处理器中微架构部件的关键属性。4.根据权利要求1所述的处理器微架构监测方法,其特征在于,在将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内之前,还包括:基于预设的跨域通信协议获取用户进程发送的监测命令,并利用所述内核空间的监测系统状态监听器根据监测系统的当前状态检查所述监测命令的合法性;其中,所述跨域通信协议是将所述组件控制模块与所述数据获取模块划分成独立的子监测功能模块,并封装成函数后写入所述内核空间,将所述子监测功能模块映射成监测命令并进行封装得到的。5.根据权利要求3所述的处理器微架构监测方法,其特征在于,还包括:基于所述数据获取模块获取相应的微架构组件的内容;其中,所述微架构组件的内容包括所述性能监控组件中事件计数器的内容和所述性能监控组件中时钟计数器的内容;所述利用监测数据分析模块读取所述内存空间内的间接监测数据进行分析,具体包括:基于所述监测数据分析模块在获取所述微架构组件的内容后,通过相对应的目标算法分别对所述分支预测器、所述指令页表缓存、所述数据页表缓存和所述二级缓存对应的监测数据进行分析,以实现恢复所述微架构组件的关键属性。
6.根据权利要求4所述的处理器微架构监测方法,其特征在于,在基于预设的跨域通信协议获取用户进程发送的监测命令之前,还包括:将所述调试处理器中监测系统的监测功能划分成独立的子多个监测功能模块,在所述内核空间将所述子监测功能模块封装成独立函数,以实现监测功能;以及将所述监测功能封装成监测命令,以使得所述用户空间的用户进程能够通过监测命令调用所述内核空间的函数以实现相应的监测功能;以及在所述内核空间使用一个有限状态机,根据所述监测系统的当前状态检查用户进程对应的监测命令是否合法;基于linux操作系统的netlink机制实现所述用户空间与所述内核空间的跨域通信,并将所述监测命令封装到所述跨域通信协议中。7.根据权利要求1所述的处理器微架构监测方法,其特征在于,所述直接监测数据包括:一级缓存以及联合页表缓存对应的监测数据。8.一种处理器微架构监测装置,其特征在于,包括:控制单元,用于基于预设的组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取所述待测试处理器的直接监测数据;其中,所述组件控制模块和所述数据获取模块位于调试处理器的内核空间;第一监测数据分析单元,用于将所述直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取所述内存空间内的直接监测数据进行分析;所述数据传输设备驱动模块位于所述调试处理器的内核空间,所述监测数据分析模块位于所述调试处理器的用户空间。9.一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任意一项所述的处理器微架构监测方法的步骤。10.一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任意一项所述的处理器微架构监测方法的步骤。
技术总结本发明提供一种处理器微架构监测方法及装置。该方法包括:基于组件控制模块对待测试处理器的调试状态进行控制,并基于数据获取模块获取待测试处理器的直接监测数据;组件控制模块和数据获取模块位于调试处理器的内核空间;将直接监测数据传入预先基于数据传输设备驱动模块创建的内存空间内,利用监测数据分析模块读取内存空间内的直接监测数据进行分析;数据传输设备驱动模块位于调试处理器的内核空间,监测数据分析模块位于调试处理器的用户空间。本发明提供的处理器微架构监测方法,能够有效提高处理器微架构监测的可靠性、稳定性和可扩展性,从而提升处理器微架构监测效果。从而提升处理器微架构监测效果。从而提升处理器微架构监测效果。
技术研发人员:汪东升 吕勇强 王海霞 邱朋飞 刘畅 林晓伟 何文剑 赵能龙 钟安阳 毛少武
受保护的技术使用者:华为技术有限公司
技术研发日:2022.06.28
技术公布日:2022/11/1