一种衡量系统管理中断时间的方法及装置与流程

文档序号:13072588阅读:258来源:国知局
一种衡量系统管理中断时间的方法及装置与流程

本发明涉及计算机应用技术领域,特别涉及一种衡量系统管理中断时间的方法及装置。



背景技术:

以前x86使用intx的方式来处理中断程序,后来要处理的中断越来越多,为了让软硬件设计者更容易设计出符合需求的中断程序,cpu多提供了smi(systemmanagerinterrupt,系统管理中断)和smm(systemmanagementmode,系统管理模式)。在intel386,intel486引入的一种特殊的操作模式,在这种模式下,可以执行高级电源管理,硬件控制和运行oem代码。它对于操作系统而言是完全透明的,也就是说操作系统并不知道cpu什么时候会进入和退出smm。smi是进入smm的唯一途径,smi可以由处理器的smi#管脚有效或者是apic(advancedprograminterfacecontroller,高级可编程中断控制器)总线的smi信息。它是不可屏蔽的中断,独立于其它形式的中断。它被设计成只给系统固件使用,不是给应用软件或者一般的系统软件使用。在smm中,cpu需要一块内存区域smram(systemmanagementram,系统管理内存),cpu在进入smm前,会把寄存器的值存储到smram中,然后cpu会跳转到系统固件smi处理程序入口去执行处理程序,一般来说,系统会有多个cpu,进入smm后,系统固件会选取一个主cpu来执行主要的处理程序,其他cpu大部分时间都会处于等待执行任务的状态,只有主cpu通知其它cpu执行任务时才会被激活,smi处理完成后用rsm指令跳转回原来的地方继续执行,同时恢复cpu寄存器的值。smi分为软件中断和硬件中断,即用程序设定产生中断和外部硬件产生中断如cpu错误管脚产生中断。

由于计算机系统硬件发展较快,一个系统拥有越来越多的cpu从而整机多任务处理性能得到大幅提升,然而系统固件使用smi处理的各个cpu的事件变得更加复杂,花费的时间更多,这样有必要在硬件系统研发阶段对smi中断处理时间进行测试以衡量是否符合系统约束条件而不至于影响系统性能,例如,处理程序是否超时,smi中断使用频率是否过高等。

现有技术中,对smm的诊断方法,是通过acpi计时器读取执行smi处理程序的第一时间值,在smi处理程序结束后再通过acpi计时器读取第二时间值,将时间差记录到内存中的方法获取系统smm的时间,然而通过acpi计时器获取时间是通过io读取时间计数,io访问有一定延时,而且acpi计时器是固定频率3.579545mhz,对获取的数据的精度不够高,并且smi的时间和频率可能会影响操作系统性能,现有技术中的操作系统无法获取相应的数据加以分析诊断,因此,如何减少访问延时,提高获取的数据的精确度,使操作系统可以获取相应的数据加以分析诊断,是现今急需解决的问题。



技术实现要素:

本发明的目的是提供一种衡量系统管理中断时间的方法及装置,以减少访问延时,提高获取的数据的精确度,使操作系统可以获取相应的数据加以分析诊断。

为解决上述技术问题,本发明提供一种衡量系统管理中断时间的方法,包括:

触发smi中断后,最先进入smm的处理器读取第一tsc时钟的计数,作为第一时间戳存储到内存中的预设位置;其中,所述第一tsc时钟为最先进入所述smm的处理器中的tsc时钟;

主处理器执行完所述smi中断对应的smi处理程序后,读取第二tsc时钟的计数作为第二时间戳;其中,所述主处理器为从进入所述smm的处理器中选取的一个处理器,所述第二tsc时钟为所述主处理器中的tsc时钟;

所述主处理器判断所述smi中断对应的执行时间是否大于smi最大时间;其中,所述执行时间为所述第二时间戳减去所述第一时间戳,所述smi最大时间为预先设置的oemacpi表中的参数;

若否,则所述主处理器更新所述oemacpi表中的smi累计时间和smi触发次数,并退出所述smm;

若是,则所述主处理器更新所述oemacpi表中的所述smi最大时间、所述smi累计时间和所述smi触发次数,并退出所述smm。

可选的,触发smi中断后,最先进入smm的处理器读取第一tsc时钟的计数之前,还包括:

系统启动过程中初始化所述oemacpi表,并将所述oemacpi表中各参数各自对应的参数地址告知处理器进入所述smm执行的smi处理函数。

可选的,所述主处理器更新所述oemacpi表中的所述smi最大时间、所述smi累计时间和所述smi触发次数,包括:

所述主处理器执行所述smi处理函数,读取所述oemacpi表中所述smi最大时间、所述smi累计时间和所述smi触发次数各自对应的参数地址,将所述smi最大时间更新为所述执行时间,将所述smi累计时间更新为所述smi累计时间加所述执行时间,将所述smi触发次数更新为所述smi触发次数加1。

可选的,该方法还包括:

操作系统软件读取所述oemacpi表,将所述smi最大时间和所述smi累计时间的时间单位换算成时间;其中,所述时间单位具体为tick,所述时间具体为ms。

此外,本发明还提供了一种衡量系统管理中断时间的装置,包括:

存储模块,用于触发smi中断后,最先进入smm的处理器读取第一tsc时钟的计数,作为第一时间戳存储到内存中的预设位置;其中,所述第一tsc时钟为最先进入所述smm的处理器中的tsc时钟;

读取模块,用于主处理器执行完所述smi中断对应的smi处理程序后,读取第二tsc时钟的计数作为第二时间戳;其中,所述主处理器为从进入所述smm的处理器中选取的一个处理器,所述第二tsc时钟为所述主处理器中的tsc时钟;

判断模块,用于所述主处理器判断所述smi中断对应的执行时间是否大于smi最大时间;其中,所述执行时间为所述第二时间戳减去所述第一时间戳,所述smi最大时间为预先设置的oemacpi表中的参数;

第一更新模块,用于若所述执行时间小于或等于所述smi最大时间,则所述主处理器更新所述oemacpi表中的smi累计时间和smi触发次数,并退出所述smm;

第二更新模块,用于若所述执行时间大于所述smi最大时间,则所述主处理器更新所述oemacpi表中的所述smi最大时间、所述smi累计时间和所述smi触发次数,并退出所述smm。

可选的,该装置还包括:

告知模块,用于系统启动过程中初始化所述oemacpi表,并将所述oemacpi表中各参数各自对应的参数地址告知处理器进入所述smm执行的smi处理函数。

可选的,所述第二更新模块,包括:

更新子模块,用于所述主处理器执行所述smi处理函数,读取所述oemacpi表中所述smi最大时间、所述smi累计时间和所述smi触发次数各自对应的参数地址,将所述smi最大时间更新为所述执行时间,将所述smi累计时间更新为所述smi累计时间加所述执行时间,将所述smi触发次数更新为所述smi触发次数加1。

可选的,该装置还包括:

转换模块,用于操作系统软件读取所述oemacpi表,将所述smi最大时间和所述smi累计时间的时间单位换算成时间;其中,所述时间单位具体为tick,所述时间具体为ms。

本发明所提供的一种衡量系统管理中断时间的方法,包括:触发smi中断后,最先进入smm的处理器读取第一tsc时钟的计数,作为第一时间戳存储到内存中的预设位置;其中,第一tsc时钟为最先进入smm的处理器中的tsc时钟;主处理器执行完smi中断对应的smi处理程序后,读取第二tsc时钟的计数作为第二时间戳;其中,主处理器为从进入smm的处理器中选取的一个处理器,第二tsc时钟为主处理器中的tsc时钟;主处理器判断smi中断对应的执行时间是否大于smi最大时间;其中,执行时间为第二时间戳减去第一时间戳,smi最大时间为预先设置的oemacpi表中的参数;若否,则主处理器更新oemacpi表中的smi累计时间和smi触发次数,并退出smm;若是,则主处理器更新oemacpi表中的smi最大时间、smi累计时间和smi触发次数,并退出smm;

可见,本发明通过最先进入smm的处理器和主处理器分别读取各自的tsc时钟的计数,可以采用tsc时钟获取smi的执行时间,由于tsc时钟的频率大于2ghz,精度较高,而且访问延时小,可以减少访问延时,提高获取的smi的执行时间的精确度;通过根据smi的执行时间与smi最大时间的比较,可以对oemacpi表中的参数进行更新,使得操作系统可以通过oemacpi表获得需要的参数并解析结果用来衡量系统性能。此外,本发明还提供了一种衡量系统管理中断时间的装置,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种衡量系统管理中断时间的方法的流程图;

图2为本发明实施例所提供的一种衡量系统管理中断时间的方法的oemacpi表的示意图;

图3为本发明实施例所提供的一种衡量系统管理中断时间的装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种衡量系统管理中断时间的方法的流程图。该方法可以包括:

步骤101:触发smi中断后,最先进入smm的处理器读取第一tsc时钟的计数,作为第一时间戳存储到内存中的预设位置;其中,第一tsc时钟为最先进入smm的处理器中的tsc时钟。

可以理解的是,触发smi中断后,系统中的所有处理器(cpu)均会跑到smi处理代码入口执行smi处理函数,也就是所有处理器均会进入smm,并执行smi处理函数。本步骤可以为最先进入smm的处理器执行对应的smi处理函数,读取自身的tsc时钟的计数,作为第一时间戳存储到内存中的预设位置,而后进入smm的处理器可以不进行本步骤。

需要说明的是,本步骤中第一时间戳存储的内存中的预设位置,可以由设计人员根据实用场景和用户需求自行设置,如可以为smi处理函数在系统启动过程中或系统启动后自行设置的内存中的一个位置,本实施例对此不受任何限制。

具体的,由于将第一时间戳存储到内存中的预设位置,可以减少步骤103中主处理器获取第一时间戳的时间,从而减少smi处理函数的执行时间,将第一时间戳存储到如硬盘的其他位置,也可以达到本实施例的目的,本实施例对此不受任何限制。

步骤102:主处理器执行完smi中断对应的smi处理程序后,读取第二tsc时钟的计数作为第二时间戳;其中,主处理器为从进入smm的处理器中选取的一个处理器,第二tsc时钟为主处理器中的tsc时钟。

可以理解的是,主处理器可以为从全部进入smm的处理器中选取的一个处理器,对于主处理器的具体选取和执行smi中断对应的smi处理程序的过程,可以采用与现有技术相似的方式实现,也可以采用其他方式实现,本实施例对此不做任何限制。

具体的,本步骤中还可以包括选取主cpu并执行smi中断对应的smi处理程序,其他cpu等待主cpu完成smi的任务,准备退出smm的过程。

需要说明的是,由于主cpu是最后一个退出smm的cpu,所以本实施例所提供的方法采用主cpu在smi退出之前读取自身的tsc时钟的计数,作为第二时间戳。由于一个系统中所有cpu各自的tsc都是同步的误差很小,可以使用不同cpu的tsc的计数计算smi中断对应的执行时间。

步骤103:主处理器判断smi中断对应的执行时间是否大于smi最大时间;若否,则进入步骤104;若是,则进入步骤105。

其中,执行时间为第二时间戳减去第一时间戳,smi最大时间为预先设置的oemacpi表中的参数。

可以理解的是,smi中断对应的执行时间可以为主处理器将读取的第二时间戳与从内存中的预设位置读取的第一时间戳相减,获取的数值。smi最大时间可以为主处理器从oemacpi表中smi最大时间对应的参数地址获取的数值;对应的,本步骤还可以包括主处理器执行smi处理函数,获取smi中断对应的执行时间和smi最大时间的步骤。本实施例对此不受任何限制。

具体的,对于oemacpi表中的具体内容,可以如图2所示包括smi最大时间、smi累计时间和smi触发次数这三个参数,也可以包括其中的一个或两个参数,还可以其他参数,本实施例对此不做任何限制。

需要说明的是,系统固件可以在系统启动过程中初始化的oemacpi表,包括定义smi最大时间,smi触发次数,smi累计时间这三个参数等,同时可以告知smi处理函数上述参数对应的参数地址,以方便主处理器执行smi处理函数时,可以直接访问参数减少smi处理函数的执行时间,之后在进入操作系统前做清零操作。

对应的,本实施例所提供的方法还可以包括:系统启动过程中初始化所述oemacpi表,并将所述oemacpi表中各参数各自对应的参数地址告知处理器进入所述smm执行的smi处理函数的步骤。本实施例对此不做任何限制。

步骤104:主处理器更新oemacpi表中的smi累计时间和smi触发次数,并退出smm。

可以理解的是,若本次smi中断对应的执行时间不大于oemacpi表中的smi最大时间,则主处理器可以不更新oemacpi表中的smi最大时间,而是只更新oemacpi表中的smi累计时间和smi触发次数,如本步骤中,主处理器可以执行smi处理函数,读取oemacpi表中smi累计时间和smi触发次数各自对应的参数地址,将smi累计时间更新为smi累计时间加本次smi中断对应的执行时间,将smi触发次数更新为smi触发次数加1,并在更新完成后退出smm。

具体的,本步骤中主处理器只要可以oemacpi表中的smi累计时间和smi触发次数,对于具体的更新过程,可以由设计人员自行设置,本实施例对此不做任何限制。

步骤105:主处理器更新oemacpi表中的smi最大时间、smi累计时间和smi触发次数,并退出smm。

可以理解的是,若本次smi中断对应的执行时间大于oemacpi表中的smi最大时间,则主处理器可以更新oemacpi表中的smi最大时间、smi累计时间和smi触发次数,如本步骤中,主处理器可以执行smi处理函数,读取oemacpi表中smi最大时间、smi累计时间和smi触发次数各自对应的参数地址,将smi最大时间更新为本次smi中断对应的执行时间,将smi累计时间更新为smi累计时间加本次smi中断对应的执行时间,将smi触发次数更新为smi触发次数加1,并在更新完成后退出smm。

具体的,本步骤中主处理器只要可以oemacpi表中的smi最大时间、smi累计时间和smi触发次数,对于具体的更新过程,可以由设计人员自行设置,本实施例对此不做任何限制。

需要说明的是,为了减少主处理器执行smi处理函数的时间,尽快退出smm,因此,本实施例所提供的方法并未加入过多的诊断内容,也就是在smi处理函数中并未加入主处理器需要进行的其他操作。如果需要更多诊断内容可以通过系统串口打印smi执行的全部内容包括smi的执行时间,以及打印smi执行时间是否超出规定值的警告信息,通过串口信息记录查询系统处于smi的具体操作。本实施例对此不做任何限制。

进一步的,为了方便操作系统可以获取oemacpi表中相应的参数加以分析诊断,本实施例所提供的方法还可以包括操作系统软件读取oemacpi表,将smi最大时间和smi累计时间的时间单位(tick)换算成时间(ms)的步骤;对于操作系统软件的具体类型和内容,可以由设计人员自行设置,本实施例对此不做任何限制。同样的,不利用操作系统软件将smi最大时间和smi累计时间的时间单位换算成时间,而是通过主处理器在更新oemacpi表的过程中将smi最大时间和smi累计时间的时间单位换算成时间,也可以达到本步骤的目的,本实施例对此同样不做任何限制。

本实施例中,本发明实施例通过最先进入smm的处理器和主处理器分别读取各自的tsc时钟的计数,可以采用tsc时钟获取smi的执行时间,由于tsc时钟的频率大于2ghz,精度较高,而且访问延时小,可以减少访问延时,提高获取的smi的执行时间的精确度;通过根据smi的执行时间与smi最大时间的比较,可以对oemacpi表中的参数进行更新,使得操作系统可以通过oemacpi表获得需要的参数并解析结果用来衡量系统性能。

请参考图3,图3为本发明实施例所提供的一种衡量系统管理中断时间的装置的结构图。该装置可以包括:

存储模块100,用于触发smi中断后,最先进入smm的处理器读取第一tsc时钟的计数,作为第一时间戳存储到内存中的预设位置;其中,第一tsc时钟为最先进入smm的处理器中的tsc时钟;

读取模块200,用于主处理器执行完smi中断对应的smi处理程序后,读取第二tsc时钟的计数作为第二时间戳;其中,主处理器为从进入smm的处理器中选取的一个处理器,第二tsc时钟为主处理器中的tsc时钟;

判断模块300,用于主处理器判断smi中断对应的执行时间是否大于smi最大时间;其中,执行时间为第二时间戳减去第一时间戳,smi最大时间为预先设置的oemacpi表中的参数;

第一更新模块400,用于若执行时间小于或等于smi最大时间,则主处理器更新oemacpi表中的smi累计时间和smi触发次数,并退出smm;

第二更新模块500,用于若执行时间大于smi最大时间,则主处理器更新oemacpi表中的smi最大时间、smi累计时间和smi触发次数,并退出smm。

可选的,该装置还可以包括:

告知模块,用于系统启动过程中初始化oemacpi表,并将oemacpi表中各参数各自对应的参数地址告知处理器进入smm执行的smi处理函数。

可选的,第二更新模块500,可以包括:

更新子模块,用于主处理器执行smi处理函数,读取oemacpi表中smi最大时间、smi累计时间和smi触发次数各自对应的参数地址,将smi最大时间更新为执行时间,将smi累计时间更新为smi累计时间加执行时间,将smi触发次数更新为smi触发次数加1。

可选的,该装置还可以包括:

转换模块,用于操作系统软件读取oemacpi表,将smi最大时间和smi累计时间的时间单位换算成时间;其中,时间单位具体为tick,时间具体为ms。

本实施例中,本发明实施例通过存储模块100和读取模块200利用最先进入smm的处理器和主处理器分别读取各自的tsc时钟的计数,可以采用tsc时钟获取smi的执行时间,由于tsc时钟的频率大于2ghz,精度较高,而且访问延时小,可以减少访问延时,提高获取的smi的执行时间的精确度;通过判断模块300根据smi的执行时间与smi最大时间的比较,可以利用第一更新模块400或第二更新模块500对oemacpi表中的参数进行更新,使得操作系统可以通过oemacpi表获得需要的参数并解析结果用来衡量系统性能。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种衡量系统管理中断时间的方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1