用于测量微处理器中的流水线停顿的方法和装置转让专利

申请号 : CN200810074112.6

文献号 : CN101246447B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·E·梅里卡斯V·R·因杜库鲁

申请人 : 国际商业机器公司

摘要 :

本发明提供了用于测量微处理器中的流水线停顿的方法和装置。一种计算机实现的方法、装置和计算机程序产品,其用于监控指令流水线中指令的执行。该过程标识待完成执行的指令组的停顿周期数。该过程检索对应于所述指令组的确定性时延模式。该过程将所述停顿周期数与确定性执行时延模式进行比较。响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,该过程将所述指令标识为依赖指令。

权利要求 :

1.一种用于监控指令流水线中的指令执行的计算机实现的方法,所述计算机实现的方法包括:对于待完成执行的指令组的停顿周期数进行计数;

检索对应于所述指令组的确定性时延模式;

将所述停顿周期数与确定性时延模式进行比较;以及响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,将所述指令标识为依赖指令。

2.根据权利要求1的计算机实现的方法,其进一步包括:将所述确定性周期数分派给所述指令以形成依赖指令延迟。

3.根据权利要求2的计算机实现的方法,其进一步包括:从所述组的停顿周期数中减去所述依赖指令延迟,以便确定可归于所述先行指令的先行指令延迟。

4.根据权利要求1的计算机实现的方法,其中所述确定性时延模式包括:在先行指令完成执行之后,预计发生依赖指令完成执行的确定性周期数。

5.根据权利要求1的计算机实现的方法,其中:标识所述指令组中每个指令所进行的操作的类型;以及基于所标识的所述指令组中每个指令所进行的操作的类型,从多个确定性时延模式中标识确定性时延模式。

6.根据权利要求1的计算机实现的方法,其中从硬编码于处理器芯片上的晶体管中的多个确定性时延模式中检索所述确定性时延模式。

7.根据权利要求1的计算机实现的方法,其中从存储在处理器芯片上的存储器中的多个确定性时延模式中检索所述确定性时延模式。

8.一种用于监控指令流水线中的指令执行的计算机实现的方法,所述计算机实现的方法包括:基于对应于指令组的确定性时延模式,标识所述指令组中的依赖指令;

对发生在先行指令完成执行之后的停顿周期数进行计数,以便形成依赖指令延迟;以及响应于确定所述依赖指令延迟等于在确定性时延模式中所标识的依赖指令,将所述依赖指令延迟确认为可归于所述依赖指令的执行延迟。

9.根据权利要求8的计算机实现的方法,其进一步包括:从存储在处理器芯片上的存储器中的多个确定性时延模式中检索对应于所述指令组的确定性时延模式。

10.根据权利要求8的计算机实现的方法,其进一步包括:从硬编码于处理器芯片上的晶体管中的多个确定性时延模式中检索对应于所述指令组的确定性时延模式。

11.根据权利要求8的计算机实现的方法,其进一步包括:将待完成的指令组的停顿周期数与所述确定性时延模式进行比较;以及响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,将所述指令标识为依赖于所述先行指令的指令。

12.根据权利要求11的计算机实现的方法,其进一步包括:从待完成的指令组的停顿周期数中减去所述依赖指令延迟,以便确定可归于所述先行指令的先行指令延迟。

13.根据权利要求8的计算机实现的方法,其中所述确定性时延模式包括:在先行指令完成执行之后,预计发生依赖指令完成执行的预先确定的周期数。

14.根据权利要求8的计算机实现的方法,其中:标识所述指令组中每个指令所进行的操作的类型;以及基于所标识的所述指令组中每个指令所进行的操作的类型,从多个确定性时延模式中标识对应于所述指令组的确定性时延模式。

15.一种用于监控指令流水线中的指令执行的计算机实现的装置,所述计算机实现的装置包括:对于待完成执行的指令组的停顿周期数进行计数的部件;

检索对应于所述指令组的确定性时延模式的部件;

将所述停顿周期数与确定性时延模式进行比较的部件;以及响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,将所述指令标识为依赖指令的部件。

16.根据权利要求15的装置,进一步包括:

将所述确定性周期数分派给所述指令以形成依赖指令延迟的部件。

17.根据权利要求16的装置,进一步包括:

从所述组的停顿周期数中减去所述依赖指令延迟,以便确定可归于所述先行指令的先行指令延迟的部件。

18.根据权利要求15的装置,其中所述确定性时延模式包括:在先行指令完成执行之后,预计发生依赖指令完成执行的确定性周期数。

19.根据权利要求15的装置,进一步包括:

标识所述指令组中每个指令所进行的操作的类型的部件;以及基于所标识的所述指令组中每个指令所进行的操作的类型,从多个确定性时延模式中标识确定性时延模式的部件。

20.根据权利要求15的装置,进一步包括:从硬编码于处理器芯片上的晶体管中的多个确定性时延模式中检索所述确定性时延模式的部件。

21.根据权利要求15的装置,进一步包括:从存储在处理器芯片上的存储器中的多个确定性时延模式中检索所述确定性时延模式的部件。

22.一种用于监控指令流水线中的指令执行的计算机实现的装置,所述计算机实现的装置包括:基于对应于指令组的确定性时延模式,标识所述指令组中的依赖指令的部件;

对发生在先行指令完成执行之后的停顿周期数进行计数,以便形成依赖指令延迟的部件;以及响应于确定所述依赖指令延迟等于在确定性时延模式中所标识的依赖指令,将所述依赖指令延迟确认为可归于所述依赖指令的执行延迟的部件。

23.根据权利要求22的装置,进一步包括:从存储在处理器芯片上的存储器中的多个确定性时延模式中检索对应于所述指令组的确定性时延模式的部件。

24.根据权利要求22的装置,进一步包括:从硬编码于处理器芯片上的晶体管中的多个确定性时延模式中检索对应于所述指令组的确定性时延模式的部件。

25.根据权利要求22的装置,进一步包括:将待完成的指令组的停顿周期数与所述确定性时延模式进行比较的部件;以及响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,将所述指令标识为依赖于所述先行指令的指令的部件。

26.根据权利要求22的装置,进一步包括:从待完成的指令组的停顿周期数中减去所述依赖指令延迟,以便确定可归于所述先行指令的先行指令延迟的部件。

27.根据权利要求22的装置,其中所述确定性时延模式包括:在先行指令完成执行之后,预计发生依赖指令完成执行的预先确定的周期数。

28.根据权利要求22的装置,进一步包括:标识所述指令组中每个指令所进行的操作的类型的部件;以及基于所标识的所述指令组中每个指令所进行的操作的类型,从多个确定性时延模式中标识对应于所述指令组的确定性时延模式的部件。

29.一种微处理器芯片,其包括:

精简指令集计算机处理器,其中所述精简指令集计算机处理器在指令流水线中执行指令组;

性能监控计数器,其中所述性能监控计数器对于待完成执行的指令组的停顿周期数进行计数;以及每指令周期分析器,其中所述每指令周期分析器检索对应于所述指令组的确定性时延模式,将所述停顿周期数与确定性时延模式进行比较,以及响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,将所述指令标识为依赖指令。

30.根据权利要求29的微处理器芯片,其中所述微处理器芯片进一步包括:一组晶体管,其中将多个确定性时延模式硬编码到所述一组晶体管中。

31.根据权利要求29的微处理器芯片,其中所述微处理器芯片进一步包括:在所述微处理器芯片上的存储器,其中将多个确定性时延模式存储在所述微处理器芯片上的存储器中。

说明书 :

用于测量微处理器中的流水线停顿的方法和装置

技术领域

[0001] 本申请一般涉及数据处理系统,并且特别涉及一种用于性能监控的方法和装置。更特别地,本申请针对的是一种计算机实现的方法、装置和计算机可用程序代码,其用于标识可归于在指令流水线中执行的指令组中的给定指令的停顿周期(stall cycles)。

背景技术

[0002] 微处理器的性能监控包括计算完成指令执行所需要的平均每指令周期(CPI,cycles per instruction)。通常,精简指令集计算机(RISC)微处理器能够在单个处理器时钟周期期间完成一个或多个指令的执行。
[0003] 一般按阶段或分量执行指令。用于完成指令执行的分量通常包括读取指令、对指令进行解码、进行操作,以及将操作结果写入存储器和/或寄存器。当将结果写入存储器和/或寄存器时,进行操作的结果便成为可视的或者可用于其它指令和过程。
[0004] 可以通过将每指令周期分成执行分量来分析处理器性能,以便确定指令执行的哪些部分耗用最多的处理器周期。在无序或推测性(speculatively)执行指令的处理器中,在指令完成之后研究执行分量的性能更为方便或准确。
[0005] 在执行指令或指令组但未完成指令期间所耗用的处理器周期称为停顿周期。停顿核算(stall accounting)是监控停顿周期的过程,其标识了哪个指令造成停顿,以及确定停顿的原因。
[0006] 如果用户知道哪个指令停顿以及停顿的原因,则该用户也许能够纠正问题以避免或减少停顿周期数。举例来说,如果加载指令由于对所需数据值的存储器访问而导致过多的停顿周期,则可以通过高速缓存所需要的数据值来减少停顿周期数。
[0007] 在每次完成一个指令的处理器中,停顿核算是相当直截了当的。任何停顿发生都可归于所完成的那一个指令。然而,在指令流水线中完成指令组的处理器,例如IBMPOWER5 ,却是较难分析的。
[0008] 在指令流水线中,通过处理器以装配线方式来处理分量执行的各个阶段中的多个指令。当通过算术逻辑部件(ALU)在执行一个指令的操作时,可以将下一指令加载到高速缓存,并且将执行另一指令的结果写入寄存器。可以于同一时间在各个完成阶段处理具有两个或更多指令的指令组。直到完成该组中的每个指令时才完成该指令组的执行。如果该组的完成停顿了,则停顿周期可能是由于发生在该组中的任何一个或多个指令中的停顿。
[0009] 该指令组的完成发生停顿可能并不是由于单个原因,因为每个指令均可以具有其自己的停顿原因。然而,在单独的指令阻塞内,原因可能存在于其阻塞了整个组。举例来说,发生在待完成的最后指令中的停顿导致整个组的完成的停顿。
[0010] 当前,性能监控标识了指令组中最后的指令完成延迟的来源,并且将该来源归为整个组停顿的原因。该方法对于分析是有用的,但却不一定准确描述了指令组所遇到的完成延迟。此外,如果该组中的一个或多个指令依赖于该组中另一指令的完成,则将指令组所遇到的完成中的整个延迟归于最后获知的延迟的现有方法可能导致误导停顿核算。

发明内容

[0011] 说明性实施例提供了一种计算机实现的方法、装置以及计算机可用程序代码,其用于监控指令流水线中指令的执行。在一个实施例中,该过程对指令组的停顿周期数进行计数。该过程检索对应于所述指令组的确定性时延模式(deterministic latency pattern)。该过程将所述停顿周期数与所述确定性时延模式进行比较。响应于确定所述指令组中的指令在先行指令完成之后的确定性周期数完成,该过程将所述指令标识为依赖指令。
[0012] 在另一实施例中,该过程对发生在先行指令完成执行之后的停顿周期数进行计数,以便形成依赖指令延迟。响应于确定所述依赖指令延迟等于在所述确定性时延模式中所标识的确定性指令延迟,该过程将所述依赖指令延迟确认为可归于所述依赖指令的执行延迟。所述确定性时延模式包括:在先行指令完成执行之后,预计发生依赖指令完成执行的预先确定的周期数。
[0013] 在另一实施例中,从所述组的停顿周期数中减去所述依赖指令延迟,以便确定可归于所述先行指令的先行指令延迟。
[0014] 在另一实施例中,该过程标识所述指令组中每个指令所进行的操作。基于所标识的由所述指令组中的每个指令所进行的操作,该过程然后从多个确定性时延模式中标识确定性时延模式。在一个实施例中,从硬编码于处理器芯片上的晶体管中的多个确定性时延模式中检索所述确定性时延模式。在另一实施例中,从所述处理器芯片上的存储器中检索所述确定性时延模式。

附图说明

[0015] 在所附权利要求中阐述了被认为是说明性实施例的特色的新颖特征。然而,当结合附图阅读时,通过参照以下对说明性实施例的详细描述,将最好地理解说明性实施例本身,以及其优选的使用模式、进一步的目的和优点,在附图中:
[0016] 图1是可以在其中实现说明性实施例的数据处理系统的图形表示;
[0017] 图2是可以在其中实现说明性实施例的数据处理系统的框图;
[0018] 图3是依照说明性实施例用于处理信息的处理器系统的框图;
[0019] 图4是依照说明性实施例的框图,其说明了当将确定性执行值用于指令流水线中的停顿核算时的数据流;
[0020] 图5是依照说明性实施例依赖于加载指令的定点指令的示图;
[0021] 图6是依照说明性实施例说明了用于指令组的性能分析的过程的流程图;以及[0022] 图7是依照说明性实施例说明了用于对依赖指令进行停顿核算的过程的流程图。

具体实施方式

[0023] 现参照附图并且特别参照图1,其示出了可以在其中实现说明性实施例的数据处理系统的图形表示。计算机100包括系统单元102、视频显示终端104、键盘106、存储设备108(其可以包括软盘驱动和其它类型的永久和可装卸存储介质),以及鼠标110。个人计算机100可以包括附加的输入设备。附加的输入设备的例子包括操纵杆、触摸板、触摸屏、跟踪球、扩音器等。
[0024] 计算机100可以是任何合适的计算机,例如IBM eServerTM计算机或IntelliStation 计算机,其是位于纽约Armonk的国际商业机器公司的产品。尽管绘图表示示出了个人计算机,然而可以在其它类型的数据处理系统中实现其它的实施例。举例来说,可以在网络计算机中实现其它的实施例。计算机100还优选地包括图形用户接口(GUI),其可以借由驻留于在计算机100内操作的计算机可读介质的系统软件来实现。
[0025] 接下来,图2描绘了可以在其中实现说明性实施例的数据处理系统的框图。数据处理系统200是诸如图1中的计算机100的计算机的例子,可以在其中安置实现说明性实施例的过程的代码或指令。
[0026] 在所描绘的例子中,数据处理系统200采用包括北桥和存储控制器集线器(MCH)202以及南桥和输入/输出(I/O)控制器集线器(ICH)204在内的集线器体系结构。处理单元206、主存储器208以及图形处理器210耦合于北桥和存储控制器集线器202。处理单元206可以含有一个或多个处理器并且甚至可以使用一个或多个不同种类的处理器系统来实现。举例来说,图形处理器210可以通过加速图形端口(AGP)耦合于MCH。
[0027] 在所描绘的例子中,局域网(LAN)适配器212耦合于南桥和I/O控制器集线器204、音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)端口和其它通信端口232。PCI/PCIe设备234通过总线238耦合于南桥和I/O控制器集线器204。硬盘驱动(HDD)226和CD-ROM驱动230通过总线240耦合于南桥和I/O控制器集线器204。
[0028] PCI/PCIe设备可以包括,例如,以太网适配器、附加卡(add-in cards)以及用于笔记本计算机的PC卡。PCI使用卡式总线控制器,而PCIe并不使用。ROM 224可以是,例如,闪速二进制输入/输出系统(BIOS)。硬盘驱动226和CD-ROM驱动230可以使用,例如,集成驱动器电子电路(IDE)或串行高级技术配件(SATA)接口。超级I/O(SIO)设备236可以耦合于南桥和I/O控制器集线器204。
[0029] 操作系统在处理单元206上运行。该操作系统协调和控制图2中的数据处理系统200内的各种组件。操作系统可以是市售的操作系统,例如Microsoft Windows XP。(Microsoft 和Windows XP 是微软公司在美国、其它国家或二者的商标)。面向TM
对象的编程系统,例如Java 编程系统,可以结合操作系统运行并且从在数据处理系统TM TM
200上执行的Java 程序或应用向操作系统提供调用。Java 和所有基于Java的商标是SunMicrosystems公司在美国、其它国家或二者的商标。
[0030] 用于操作系统、面向对象的编程系统以及应用或程序的指令位于诸如硬盘驱动226之类的存储设备上。可以将这些指令加载到主存储器208给处理单元206执行。说明性实施例的过程可以由处理单元206使用计算机实现的指令来实现,其中指令可以位于存储器中。存储器的例子是主存储器208、只读存储器224,或者在一个或多个外围设备中。
[0031] 图1和图2中所示出的硬件可以取决于所说明的实施例的实现而变化。除了图1和图2中所描绘的硬件之外,或者代替图1和图2中所描绘的硬件,还可以使用其它内部硬件或外围设备,例如闪速存储器、等效非易失性存储器或光盘驱动等。另外,说明性实施例的过程可以应用于多处理器数据处理系统。
[0032] 图2中所示出的系统和组件可以根据所示出的说明性例子而变化。在一些说明性例子中,数据处理系统200可以是个人数字助理(PDA)。个人数字助理一般配备有闪速存储器,以便提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。另外,数据处理系统200可以是平板计算机、膝上型计算机,或者电话设备。
[0033] 图2中所示出的其它组件可以根据所示出的说明性例子而变化。举例来说,总线系统可以包括一条或多条总线,例如系统总线、I/O总线和PCI总线。当然,可以使用在依附于构造或体系结构的不同组件或设备之间提供数据传送的任何合适类型的通信构造或体系结构来实现总线系统。另外,通信单元可以包括用于发送和接收数据的一个或多个设备,例如调制解调器或网络适配器。进一步地,存储器可以是,例如,主存储器208或诸如在北桥和存储控制器集线器202中找得到的高速缓存。此外,处理单元可以包括一个或多个处理器或CPU。
[0034] 接下来转至图3,其依照本发明的说明性实施例描绘了用于处理信息的处理器系统的框图。可以将处理器310实现为图1中的处理器102。
[0035] 在说明性实施例中,处理器310是单个集成电路超标量微处理器。因此,如下文进一步讨论的,处理器310包括各种单元、寄存器、缓冲器、存储器,以及其它部件,其全部通过集成电路形成。此外,在说明性实施例中,处理器310根据精简指令集计算机(RISC)技术进行操作。如图3中所示,系统总线311连接至处理器310的总线接口单元(BIU)312。BIU312控制处理器310与系统总线311之间的信息传递。
[0036] BIU 312连接至指令高速缓存314以及处理器310的数据高速缓存316。指令高速缓存314向定序器单元318输出指令。响应于来自指令高速缓存314的这样的指令,定序器单元318选择性地向处理器310的其它执行电路输出指令。
[0037] 除了定序器单元318之外,在说明性实施例中,处理器310的执行电路还包括多个执行单元,即分支单元320、定点单元A(FXUA)322、定点单元B(FXUB)324、复杂定点单元(“CFXU”)326、加载/存储单元(LSU)328,以及浮点单元(FPU)330。FXUA 322、FXUB 324、CFXU326,以及LSU 328从通用体系结构寄存器(GPR)332和定点重命名缓冲器334接收源操作信息作为输入。此外,FXUA 322和FXUB 324输入来自进位比特(CA)寄存器339的“进位比特(carry bit)”。FXUA 322、FXUB 324、CFXU 326和LSU 328输出其操作结果(目的操作数信息)用于存储在定点重命名缓冲器334中所选择的条目处。此外,CFXU 326输入来自专用寄存器处理单元(SPR单元)337的源操作数信息,并且将目的操作数信息输出到专用寄存器处理单元(SPR单元)337。
[0038] FPU 330输入来自浮点体系结构寄存器(FPR)336以及浮点重命名缓冲器338的源操作数信息。FPU 330输出其操作结果用于存储在浮点重命名缓冲器338中所选择的条目处。
[0039] 响应于加载指令,LSU 328输入来自数据高速缓存316的信息,并且将这样的信息复制到重命名缓冲器334和338中所选择的重命名缓冲器。如果数据高速缓存316中未存储这样的信息,那么数据高速缓存316输入来自系统存储器360的这样的信息,系统存储器360连接至系统总线311。此外,数据高速缓存316能够通过BIU 312和系统总线311将来自数据高速缓存316的信息输出到连接至系统总线311的系统存储器360。在这些例子中,GPR 332和FPR 336之一向LSU 328发送存储指令。响应于存储指令,LSU 328输入来自所选择的GPR 332和FPR 336之一的信息,并且将这样的信息复制到数据高速缓存316。
[0040] 定序器单元318输入来自GPR 332和FPR 336的信息,并且向GPR332和FPR 336输出信息。从定序器单元318,分支单元320输入指示处理器310的当前状态的信号和指令。响应于这样的信号和指令,分支单元320向定序器单元318输出信号,该信号指示存储了用于由处理器310执行的指令序列的合适的存储地址。响应于来自分支单元320的这样的信号,定序器单元318输入来自指令高速缓存314的所指示的指令序列。如果指令高速缓存314中未存储该指令序列中的一个或多个,那么指令高速缓存314输入来自于连接至系统总线311的系统存储器360的该指令。
[0041] 响应于来自指令高速缓存314的指令输入,定序器单元318选择性地将指令调遣至执行单元320、322、324、326、328和330中所选择的执行单元。每个执行单元执行特定类别的指令中的一个或多个指令。举例来说,FXUA 322和FXUB 324在源操作数上执行第一类定点数学操作,例如加法、减法、与(ANDing)、或(ORing)和异或(XORing)。CFXU 326在源操作数上执行第二类定点操作,例如,定点乘法和除法。FPU 330在源操作数上执行浮点操作,例如,浮点乘法和除法。
[0042] 当在重命名缓冲器之一334处存储了信息时,这样的信息便与指令所指定的存储位置相关联,其中,对于该指令分配了所选择的重命名缓冲器。举例来说,信息可以与诸如GPR 332或进位比特(CA)寄存器339之一的存储位置相关联。响应于来自定序器单元318的信号,将存储在所选择的重命名缓冲器之一334的信息复制到其关联的GPR 332或CA寄存器339之一。响应于“完成”生成该信息的指令,定序器单元318引导对于存储在所选择的重命名缓冲器之一334的信息的该复制。此类型的复制称为“回写”。
[0043] 当在所选择的重命名缓冲器之一338处存储了信息时,这样的信息便与FPR 336之一相关联。响应于来自定序器单元318的信号,将存储在所选择的重命名缓冲器之一338的信息复制到其关联的FPR 336之一。响应于“完成”生成该信息的指令,定序器单元318引导对于存储在所选择的重命名缓冲器之一338的信息的该复制。
[0044] 通过在执行单元320、322、324、326、328和330中的各个执行单元处同时处理多个指令,处理器310获得高性能。因此,将每个指令处理为一系列阶段,其各自可随其它指令阶段并行执行。这样的技术称为“流水线”。在说明性实施例的显著方面,通常将指令处理为六个阶段,即读取、解码、调遣、执行、完成和回写。
[0045] 在读取阶段,定序器单元318选择性地输入来自指令高速缓存314的一个或多个指令,其来自存储有上文结合分支单元320和定序器单元318所进一步讨论的指令序列的一个或多个存储地址。在解码阶段,定序器单元318解码达到四个的所读取的指令。
[0046] 当在解码阶段解码了指令之后,在调遣阶段中,在为所调遣的指令的结果保留了重命名缓冲器条目之后,定序器单元318选择性地将达到四个的经解码指令调遣至执行单元320、322、324、326、328和330中所选择的执行单元。这些结果可以是操作数信息。在调遣阶段,将操作数信息提供给为调遣的指令所选择的执行单元。处理器310按照指令的编程顺序来调遣指令。
[0047] 在执行阶段,执行单元执行其调遣的指令,并且输出其操作结果用于存储在上文进一步讨论的重命名缓冲器334和重命名缓冲器338中所选择的条目处。在这些例子中,结果是操作数信息。以这样的方式,处理器310能够相对于指令的编程顺序无序地执行指令。
[0048] 在完成阶段,定序器单元318指示指令“完成”。处理器310按照指令的编程顺序“完成”指令。
[0049] 在回写阶段,定序器318将对于来自重命名缓冲器334和338的信息的复制分别引导至GPR 332和FPR 336。定序器单元318引导对于存储在所选择的重命名缓冲器的信息的该复制。同样地,在特定指令的回写阶段,响应于特定的指令,处理器310更新其体系结构状态。处理器310按照指令的编程顺序处理指令相应的“回写”阶段。处理器310在特定情形下有利地融合了指令的完成阶段和回写阶段。
[0050] 在说明性实施例中,每个指令均需要一个机器周期来完成指令处理的每个阶段。然而,一些指令,例如由CFXU 326所执行的复杂定点指令,可能需要超过一个的周期。因此,响应于完成先前的指令所需要的时间上的变化,在特定指令的执行与完成阶段之间可能出现可变延迟。
[0051] 在定序器318内提供完成缓冲器348,以便跟踪正在执行单元内执行的多个指令的完成。当指示已经成功完成指令或指令组时,按照应用指定的顺序,可以利用完成缓冲器348来发起将哪些完成的指令的结果传送至关联的通用寄存器。如文中所使用的,指令组含有两个或更多的指令。
[0052] 另外,处理器310还包括性能监控单元340,其连接至指令高速缓存314以及处理器310中的其它单元。可以利用性能监控单元340来监控处理器310的操作,在该说明性实施例中,性能监控单元340是一种软件可访问机制,其能够提供对存储控制以及指令执行资源的利用的详细信息描述。尽管图3中未进行说明,然而性能监控单元340耦合于处理器310的每个功能单元,以便准许监控处理器310的操作的所有方面,举例来说,其包括重构事件之间的关系、标识伪触发、标识性能瓶颈、监控流水线停顿、监控空闲处理器周期、确定调遣效率、确定分支效率、确定未对准(misaligned)数据访问的性能损失、标识执行串行化指令的频率、标识禁止的中断,以及确定性能效率。举例来说,感兴趣的事件还可以包括指令解码的时间、指令的执行、分支事件、高速缓存未中,以及高速缓存命中。
[0053] 性能监控单元340包括与实现相关的数目(implementation-dependentnumber)的计数器341-342,标记为PMC1和PMC2,其用于对所选事件的发生进行计数。举例来说,感兴趣的事件还可以包括指令解码的时间、指令的执行、分支事件、高速缓存未中,以及高速缓存命中。
[0054] 性能监控单元340进一步包括至少一个监控器模式控制寄存器(MMCR,monitor mode control register)。在该例中,给出了两个控制寄存器,MMCR 343和344,其指定计数器341-342的功能。优选地将计数器341-342和MMCR 343-344实现为SPR,其对于读或写来说可通过CFXU 326可执行的MFSPR和MTSPR指令进行访问。然而,在一个可选的实施例中,可以简单地将计数器341-342和MMCR 343-344实现为I/O空间中的地址。在另一可选的实施例中,可以间接通过索引寄存器访问控制寄存器和计数器。
[0055] 性能监控单元340内的各种组件可以用于生成用于性能分析的数据。取决于特定的实现,不同的组件可以用于生成跟踪数据。在其它的说明性实施例中,性能单元340可以为用于时间仿形(time profiling)的数据提供对名称解决方案的动态地址的支持。
[0056] 另外,处理器310还包括中断单元350,其连接至指令高速缓存314。另外,尽管图3中未示出,然而中断单元350连接至处理器310内的其它功能单元。中断单元350可以接收来自其它功能单元的信号,并且发起动作,例如,启动错误处理或软中断(trap)过程。在这些例子中,采用中断单元350来生成可以在程序执行期间发生的中断和异常。
[0057] 图1至图3中所描绘的例子以及上述例子并不意味着暗示体系结构限制。举例来说,除了采取PDA的形式以外,数据处理系统200还可以是平板计算机、膝上型计算机或电话设备。此外,处理器310可以包括多核微处理器和/或复杂指令集计算机(CISC)处理器。图1至图3中所描绘的例子是说明性实施例,且并不意味着暗示体系结构限制。
[0058] 微处理器的性能监控包括计算完成指令的执行所需要的平均每指令周期(CPI)。指令通常包括操作码。操作码是指定将要由指令进行的操作的类型的机器语言指令的一部分。举例来说,指令操作可以包括但不限于:加载操作或诸如加法操作或除法操作的数学操作。通常,精简指令集计算机(RISC)微处理器能够在单个处理器时钟周期期间完成一个或多个指令的执行。精简指令集计算机是这样的计算机,即该计算机的处理器可以非常快速地执行简单的指令集。
[0059] 一般在完成的分量中执行指令,完成的分量包括读取指令、解码指令、进行操作,以及将操作结果写入存储器和/或寄存器。举例来说,进行操作可以包括通过微处理器的算术逻辑单元(ALU)来进行诸如加法操作的数学操作。当将结果写入存储器和/或寄存器时指令完成,此时,结果便成为可视的或可用于其它指令和独立过程。
[0060] 当指令正耗用相对大量的处理器周期来达到完成和/或未能达到完成时,在指令未完成的情况下所耗用的周期称为停顿周期。在每次完成一个指令的处理器中,标识出哪个指令停顿以及标识停顿的原因都是相当直截了当的。
[0061] 然而,按组(例如在指令流水线中)完成指令的处理器却是较难分析的。在这样的情况下,直到完成该组中的每个指令时才完成该指令组的执行。因而,如果该组的完成有停顿,则停顿可能是由于发生在该组中的任何指令中的停顿。
[0062] 当前,性能监控标识出指令组中最后的指令完成延迟的来源,并且将该来源归为整个组停顿的原因。性能监控是监控程序的性能以便聚集有关程序速度、存储器使用以及效率的信息,例如对于待完成的指令或指令组来说每指令的周期数。通过性能监控所聚集的信息可以用于优化程序或指令集,从而提高处理速度和加大效率。
[0063] 在当前的解决方案中,性能监控单元推测性地对未完成指令组的任何周期上的停顿事件进行计数。待清除的最后事件被认为是整个指令组的停顿原因,并且被确认为停顿的原因。性能监控单元认为所有其它的停顿原因都是无效的并且舍弃那些原因。标识出最后的指令停顿的原因的该方法对于分析是有用的,但在该组中的指令相互依赖的情况下却不一定准确描述指令组所遇到的执行完成延迟。
[0064] 举例来说,在包括加载指令和两个加法指令的指令组中,如果第一加法指令需要加载指令所提供的数据值,并且第二加法指令需要第一加法指令的结果,那么第一加法依赖于加载指令并且第二加法依赖于第一加法。
[0065] 说明性实施例认识到,如果以上例子中的加载指令停顿,则第一和第二加法指令也将停顿,因为第一和第二加法是依赖指令。依赖指令是这样的指令,即该指令依赖于用于执行待完成的依赖指令的另一指令。因而,将该组中的停顿归因于第二加法指令将既不准确又会产生误导,即使第二加法指令是待完成的最后的指令。
[0066] 说明性实施例还认识到,即使从该指令组中移除第一和第二加法指令,该指令组仍会由于发生在加载指令上的停顿而在完成中遇到停顿。因此,用户将不能基于将最后的指令标识为停顿原因来改进该指令组的性能。因而,在指令组中的指令相互依赖的情况下,将组中的完成停顿的来源标识为最后的指令的现有方法可能并不准确并且会产生误导。
[0067] 因此,说明性实施例提供了一种计算机实现的方法、装置和计算机程序产品,其用于监控指令流水线中指令的执行。该过程对于待完成执行的指令组的停顿周期数进行计数。该过程检索用于该指令组的确定性时延模式。该过程将停顿周期数与确定性执行时延模式进行比较。响应于确定该指令组中的指令在先行指令之后的确定性周期数完成,该过程将该指令标识为依赖指令。先行指令是依赖指令所依赖的指令。举例来说,如果加法指令需要加载指令所提供的数据值,则加载指令是加法指令的先行指令。加法指令是依赖指令,因为加法指令依赖于加载指令的结果来完成。
[0068] 图4是依照说明性实施例的框图,其说明了当将确定性执行值用于指令流水线中的停顿核算时的数据流。停顿核算是一种用于标识引起停顿的指令以及该停顿的原因的方法。可以以任何类型的计算设备来实现计算机400,例如个人计算机、膝上型计算机、个人数字助理,或者图1和图2中所描绘的任何其它的计算设备。在该说明性实施例中,计算机400是精简指令集计算机。
[0069] 处理器402是用于在计算机400上执行指令的任何已知或可用类型的处理器,其包括但不限于中央处理器(CPU)。可以以单核处理器、多核处理器或多处理器来实现说明性实施例。举例来说,处理器402可以是Cell宽带引擎(BE)芯片处理器。举例来说,处理器402可以是Cell BroadbandEngineTM(BE)处理器,其是包括单个基本64位Power PC处理器核心(PPC)以及八个协处理器核心(SPC)的多核处理器芯片。在该例中,处理器402是诸如图2中的处理器单元206或图3中的处理器310这样的处理器。
[0070] 处理器402在执行指令流水线中的指令组404。执行指令组404包括两个或更多的指令。在该例中,执行指令组是具有五个指令的指令集。直到执行指令组404中的每个指令完成时才完成执行指令组404。因此,如果在执行指令组404中的一个或多个指令的执行期间发生停顿,则整个指令组可能停顿。
[0071] 性能监控单元406是微处理器芯片上的硬件组件,在该微处理器芯片上将处理器402置于计算机400中。性能监控单元406是处理器芯片上的微处理器逻辑的一部分,其分析处理器402在每个指令执行期间的性能。在每指令时钟周期(CPI)内测量执行指令组
404的处理器402的性能。在该例中,性能监控单元406是任何已知或可用类型的性能监控单元,举例来说,诸如图3中的性能监控单元340。
[0072] 性能监控单元406包括性能监控计数器408。性能监控计数器408是用于对指令执行期间所耗用或使用的处理器周期数进行计数的软件组件。举例来说,如果处理器402在执行单个定点指令,并且在执行定点指令期间利用了两个处理器周期,则性能监控计数器408将对该定点指令计数每指令两个周期。然而,如果处理器402在执行具有两个或更多指令的指令组,则性能监控计数器408将对处理器402利用来完成该指令组中所有指令的执行的周期数进行计数。
[0073] 性能监控单元406包括每指令周期(CPI)分析器410,以便标识可归于指令组中的依赖指令的每指令周期数。CPI分析器410是硬件或软件组件,其用于分析对于在执行指令组期间所利用的周期的计数,确定该指令组中一个或多个指令是否是依赖指令,以及标识可归于每个依赖指令的停顿周期数。
[0074] 举例来说,如果加法指令需要加载指令所提供数据值,则加法指令依赖于加载指令。换句话说,直到加载指令完成时才可以完成加法值。诸如加载指令的先行指令中的任何停顿或延迟都将导致在任何依赖指令中的等效停顿或延迟。
[0075] 在RISC处理器中,很多指令具有确定性执行时延。确定性执行时延是预先确定的或预计的用于在已完成所有先行指令之后完成依赖指令的执行的处理器周期数。换句话说,确定性执行时延是在已满足依赖指令的所有依赖性之后在完成依赖指令完成中所预计的延迟。举例来说,加法指令可能具有两个周期的确定性执行时延。这意味着当已经满足对于加法指令的所有依赖性,并且由处理器402进行了加法指令所指定的加法操作时,预计处理器402耗用两个处理器周期。确定性执行时延将取决于所进行的操作的类型、指令的依赖性以及处理器的类型而变化。
[0076] 当将停顿周期归于指令组中的给定指令时,性能监控单元406中的CPI分析器410使用确定性时延来确定正完成的指令是否依赖于先前完成的指令或先行指令。如果正完成的指令依赖于先前完成的指令,则CPI分析器410基于指令所进行的给定操作的预先确定的时延模式来划分两个指令之间的停顿周期。
[0077] 在以上给出的例子中,如果完成了加载指令并且然后完成了依赖加法指令,则CPI分析器410预计加法指令在完成加载指令之后耗用两个周期。因而,不论发生在完成加法指令期间的停顿周期数如何,如果加法指令在加载指令完成之后的两个周期完成,则CPI分析器410将加法指令标识为依赖于加载指令。换句话说,如果两个周期的实际指令完成延迟等于两个周期的预计确定性时延模式,则CPI分析器410认为加法指令依赖于加载指令。
[0078] 确定性时延模式412是一组一个或多个预计的确定性时延模式,其指定了在已经满足依赖指令的所有依赖性之后,对于待完成的依赖指令来说所预计的周期数。确定性时延模式是在未发生停顿事件的情况下,完成给定指令组中给定指令的执行所预计的处理器周期数。话句话说,在给定处理器中,用户可以确定完成加法指令的执行所需要的估计处理器周期数。举例来说,加法指令可能需要两个处理器周期来完成。因此,用于完成加法指令的预计或确定性周期数是两个周期。
[0079] 同样地,在包括两个加法指令的指令组中,用户可以确定预计要两个周期来完成每个加法指令并且发生两个加法指令的完成预计要四个周期。这是用于具有两个加法指令的指令组的确定性时延模式。换句话说,确定性时延模式是对于待完成的给定指令组来说,基于该组中每个指令所进行的操作而预计耗用的预期处理器周期模式。
[0080] 因而,如果加载指令需要四个周期来完成,并且指令组包括一个加载指令和两个加法指令,则该组的确定性时延模式可以是用于加载指令的四个处理器周期、用于第一加法指令的两个处理器周期,以及用于第二加法指令的两个处理器周期。
[0081] 确定性时延模式取决于处理器的类型、指令所进行的操作、指令的依赖性的模式,以及指令组所进行的操作而有所变化。然而,可以预先确定对于各个指令组来说预计的周期数,并且将其存储在诸如数据存储器414之类的数据存储设备中。因而,CPI分析器410可以访问确定性时延模式412,以便标识与处理器402中的执行指令组404相匹配的指令组的周期模式。
[0082] 在指令组完成执行之后,CPI分析器410比较由性能监控计数器408所计算的对于该指令组来说实际的每指令周期计数。基于每个指令的实际指令延迟与来自确定性时延模式412的一个或多个匹配模式的比较,CPI分析器410确定哪些指令是依赖指令。基于该比较,CPI分析器410标识哪些指令是依赖指令以及哪些指令是先行指令。
[0083] 基于实际的每指令周期计数与匹配的确定性时延模式的比较,CPI分析器410确定可归于先行指令的停顿周期数和/或可归于一个或多个依赖指令的停顿周期数。
[0084] 数据存储器414是用于存储数据的任何已知或可用类型的硬件或软件设备。举例来说,数据存储器414可以包括硬编码于处理器芯片上的晶体管中的数据、单片存储器、片外存储器,例如只读存储器(ROM)、非易失性随机访问存储器(NVRAM),或者任何其它已知或可用类型的数据存储设备。
[0085] 现参照图5,其依照说明性实施例示出了依赖于加载指令的定点指令的时序图。完成信号500是用于完成包括依赖于加载指令的定点指令的指令组的信号。在执行该指令组期间,性能监控单元并不知道哪些指令是依赖指令。
[0086] 在该例中,定点指令信号502是示出了在对定点指令的完成中的时延或停顿的信号。定点指令是该指令组中待完成的最后指令。定点指令信号502指示指令组中在指令完成之前经历该指令组的最长时延的定点操作。定点延迟504是在完成定点指令的执行期间所经历的实际延迟或停顿量。
[0087] 加载指令信号506指示相同的指令组中在完成加载指令之前经历了时延的加载指令。加载时延508是在完成加载指令时的延迟量。加载时延508小于定点指令信号502的定点延迟504。完成停顿是对于整个指令组的完成来说总的延迟量。
[0088] 依赖定点延迟510是依赖于加载指令的定点指令的确定性执行值。依赖定点延迟510不是停顿周期的实际计数。依赖定点延迟510是在定点指令依赖于加载指令的情况下,预计发生在先行加载指令完成之后、在定点指令即将完成之前的停顿。依赖定点延迟510是该指令组的确定性时延模式中预先确定的值。换句话说,依赖定点延迟510是完成该指令组中的定点指令所预计的延迟。
[0089] 诸如图4中的CPI分析器410的CPI分析器标识出匹配的确定性时延模式,以便标识依赖定点延迟510。CPI分析器将定点指令的定点延迟504与依赖定点延迟510进行比较。如果依赖定点延迟510与在加载指令完成之后发生的实际定点延迟504的停顿部分相匹配,那么CPI分析器将定点指令标识为依赖于加载指令。换句话说,如果定点指令依赖于加载指令,则CPI分析器预计该定点指令在该加载指令之后的确定性周期数完成。确定性周期数是预计在指令即将完成之前要耗用的预先确定的周期数。换句话说,如果在未发生停顿时处理器通常需要两个处理器周期来完成加法指令,那么在该例中对于加法指令,确定性周期数是两个处理器周期。
[0090] 在这种情况下,在加载指令完成之后发生的定点延迟504匹配于依赖定点延迟510。因而,在该例中,CPI分析器确定定点指令依赖于加载指令。
[0091] 如上所示,性能监控单元的CPI分析器利用在执行指令组期间发生的特定事件之间的确定性关系来将诸如定点延迟504这样的停顿期拆分成分量。CPI分析器识别出依赖定点指令将在满足其依赖性之后的已知周期数完成。如果CPI分析器检测到加载操作结束,并且然后在此后的确定性周期数中结束了定点操作,则CPI分析器可以推断该定点操作依赖于该加载操作。在这种情况下,从完成停顿时间中减去加载指令时延,以便确定可归于定点指令的实际延迟。在这种情况下,可归于定点指令的延迟等于依赖定点延迟。
[0092] 在该例中,使用定点延迟和加载时延作为例子。然而,说明性实施例的过程可应用于具有确定性关系的含有两个或更多指令的任何指令组,而不管指令的类型和/或指令所进行的操作的类型。
[0093] 图6是依照说明性实施例说明了用于指令组的性能分析的过程的流程图。在图6所示出的该说明性例子中,通过诸如图4中的性能监控单元406这样的硬件和/或软件组件来实现该过程,用于监控处理器性能、将每指令周期与确定性值的模式进行比较、标识依赖指令,以及标识依赖指令延迟。
[0094] 该过程通过确定指令组是否正在执行(步骤602)而开始。如果单个指令正在执行,则该过程返回到步骤602。返回步骤602,如果指令组正在执行,则该过程从诸如图4中的性能监控计数器408这样的性能监控计数器检索对于该指令组的每指令周期数(步骤606)。该过程标识该指令组所进行的操作的类型(步骤608)。可以基于指令中的操作码来确定操作类型。
[0095] 接下来,该过程为所标识的操作标识确定性模式(步骤610)。举例来说,如果对指令组所标识的操作包括加载和两个加法操作,则该过程为包括加载和两个加法的指令组检索确定性模式。该确定性模式提供了在该组中的指令之一依赖于另一指令的情况下会预期的预计时延或停顿周期数。举例来说,一种模式可以包括用于依赖于加载的第一加法以及依赖于第一加法的第二加法的确定性值。另一种确定性模式可以包括用于依赖于加载的第一加法以及不依赖于加载或加法指令的第二加法的确定性值。对于该例中的操作的第三确定性模式可以包括这样的模式,即在该模式中,两个加法操作均依赖于加载。
[0096] 该过程将所检索的CPI计数与确定性时延模式进行比较,以便对关于是否标识了任何模式匹配进行确定(步骤612)。如果发现模式匹配,则该过程标识依赖指令,并且将来自模式匹配的确定性时延计数值确认到相应的依赖指令(步骤614)。换句话说,如果发现模式匹配,则该过程基于模式匹配标识一个或多个依赖指令。该过程然后可以基于模式匹配确定依赖指令延迟。将该依赖指令延迟确认到或归于所标识的依赖指令。该过程从可归于来自该模式的依赖指令的CPI中减去确定性计数值,以便标识可归于先行指令的时延(步骤616),且此后该过程终止。
[0097] 返回到步骤612,如果没有发现模式匹配,则该过程舍弃来自确定性时延模式的确定性计数值(步骤618),并且将停顿周期归于待完成的最后指令(步骤620),且此后该过程终止。
[0098] 在另一说明性实施例中,当还未完成指令组时,并且当刚好结束或终止由于加载时延而导致的完成停顿时,性能监控单元开始对周期进行计数。如果性能监控单元确定定点指令结束于加载指令完成之后的适当周期数,则性能监控单元可以将该计数确认成依赖定点延迟。性能监控单元还可以将发生在依赖定点延迟之前的计数归于加载指令,该加载指令也被称为依赖定点指令的先行指令。
[0099] 然而,如果在定点指令未完成的情况下超过了确定性周期数,则性能监控单元舍弃或不予处理加载时延以及依赖定点延迟计数。在这种情况下,性能监控单元将整个停顿计数归于待完成的指令组中的最后指令。在这种情况下,会将整个停顿计数归于定点指令。
[0100] 图7是依照说明性实施例说明了用于对依赖指令进行停顿核算的过程的流程图。在图7所示出的该说明性例子中,通过用于分析每指令周期的软件组件(例如图4中的性能监控单元406)来实现该过程,以便标识依赖指令和依赖指令时延。
[0101] 该过程通过为指令组的每指令周期进行计数(步骤702)而开始。该过程对关于是否完成了先行指令进行确定(步骤704)。换句话说,该过程确定是否还未完成指令组以及是否已经完成了先行指令。如果该过程确定先行指令完成,则该过程标识依赖指令所进行的操作(步骤706),并且开始对每指令周期进行计数,以便形成依赖指令延迟CPI(步骤708)。
[0102] 基于诸如图4中的性能监控单元406这样的性能监控单元所收集的数据,该过程确定是否完成了依赖指令(步骤710)。如果未完成指令,则该过程返回到步骤708。当完成指令时,该过程确定依赖执行延迟CPI是否匹配于所标识的操作的确定性执行时延(步骤712)。如果发现匹配,则该过程确认该指令是依赖指令,并且将依赖执行延迟CPI确认到依赖指令(步骤714)。换句话说,整个停顿计数并不归于依赖指令。相反,仅是发生在先行指令完成之后的停顿周期归于依赖指令。该过程从整个组的总CPI中减去依赖执行延迟CPI,以便为先行指令标识执行CPI延迟(步骤716),且此后该过程终止。
[0103] 返回到步骤712,如果依赖执行延迟CPI并不匹配于该操作的确定性执行时延,则该过程舍弃依赖执行延迟CPI(步骤718)并在此后终止。
[0104] 因而,说明性实施例提供了一种计算机实现的方法、装置和计算机程序产品,其用于在指令流水线中进行停顿核算。该过程对于待完成执行的指令组的停顿周期数进行计数。该过程检索对应于该指令组的确定性时延模式。
[0105] 对应于指令组的确定性时延模式是用于与正完成执行的指令组相匹配的指令组的模式。举例来说,如果正完成执行的指令组或刚好完成执行的指令组包括加载指令和两个加法指令,则对应的确定性时延模式是用于具有加载指令和两个加法指令的指令组的时延模式。如果在数据存储设备中可获得用于具有两个加载指令和三个加法指令的指令组的确定性时延模式,那么该确定性时延模式将不是与具有单个加载指令和两个加法指令的正完成的指令组相对应的确定性时延模式。
[0106] 该过程将停顿周期数与确定性执行时延模式进行比较。响应于确定指令组中的指令在先行指令完成之后的确定性周期数完成,该过程将该指令标识为依赖指令。
[0107] 因而,说明性实施例较为准确和可靠地标识了依赖指令以及可归于依赖指令的停顿周期数。用户能够通过标识造成停顿周期的先行和依赖指令来改进处理器性能。
[0108] 附图中的流程图和框图说明了根据各种实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能性和操作。就此而言,流程图或框图中的每个块均可以表示模块、区段,或者代码的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应当注意,在某些可选的实现中,块中所指出的功能可以不按照附图中所指出的顺序发生。例如,实际上,取决于所涉及的功能性,完全可以并行地执行连续示出的两个块,或者有时可以以相反的顺序执行这些块。
[0109] 说明性实施例可以采取全硬件实施例、全软件实施例或者既含有硬件元素又含有软件元素的实施例的形式。可以以软件实现可选实施例,其包括但不限于固件、常驻软件、微码等。
[0110] 此外,说明性实施例可以采取可访问于计算机可用或计算机可读介质的计算机程序产品的形式,该计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用的或者与计算机或任何指令执行系统结合使用的程序代码。对于该描述来说,计算机可用或计算机可读介质可以是能够容纳、存储、通信、传播或传送由指令执行系统、装置或设备使用的或者与指令执行系统、装置或设备结合使用的程序的任何有形装置。
[0111] 介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备)或者传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可装卸计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前的例子包括只读光盘存储器(CD-ROM)、读/写光盘(CD-R/W)和DVD。
[0112] 适于存储和/或执行程序代码的数据处理系统可以包括通过系统总线直接地或间接地耦合于存储元件的至少一个处理器。存储元件可以包括在程序代码的实际执行期间所使用的局部存储器、大容量存储器,以及为了减少在执行期间必须从大容量存储器检索代码的次数而提供对至少一些程序代码的临时存储的高速缓冲存储器。
[0113] 输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接地或者通过插入I/O控制器耦合于系统。
[0114] 网络适配器也可以耦合于系统,从而使得数据处理系统能够适于通过介入专用或公用网络耦合于其它的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡正是几种当前可用类型的网络适配器。
[0115] 已经出于说明和描述的目的给出了对说明性实施例的描述,且并不旨在以所公开的形式穷举或限制于说明性实施例。对本领域的普通技术人员来说,很多修改和变形将是显而易见的。选择和描述实施例是为了最好地解释说明性实施例的原理、实际应用,以及使本领域的普通技术人员能够针对适于预期的特定用途的各种实施例以及各种修改来理解说明性实施例。