专利名称::用于设定运行于处理器上的程序软件之机制的制作方法
技术领域:
:本发明关于微处理器,详而言之,用于监视微处理器过程的机制以及在程序执行中收集的效能数据(performancedata)的程序。
背景技术:
:多年以来,软件工程师和处理器设计者已了解到,在执行时量测软件行为之能力是必要的,一些设定(profiling)机制存在而能量测行为,例如,函数呼叫(functioncall)的频率和持续时间(duration)。一个设定文件或程序分析工具,可监视给定之程序或提供事件的输出流或历史事件的概要。设定(profile)运行的软件有多种不同的方法,举例而言,一种是植测(instrument)(植入并检测,简称为植测)即将运行的实际码,植测一般系关于被监视插入程序的监视码,该植测码可输出分析数据,其它设定档的类型包括基于设定档及统计设定档的事件,一些基于设定的事件使用设定文件模块以设陷阱捕捉例如呼叫这样的事件,统计设定档通过中断可能在基于事件发生的时间或次数的预定区间中的操作系统而运用采样。这些习知设定档的类型确实提供了结果,然而,他们试图以增加太多额外的状态至CPU和运行程序而扰乱正被监视的程序,且中断了太过频繁的程序流。
发明内容本文揭露用于设定运行于处理器上的软件的机制的许多实施例,于一实施例中,一种具有一或多个处理器内核的处理器,包含可执行包含一或多个程序的指令的执行逻辑,而每一程序可包括一或多个线程,该处理器亦包括设定机制,且该设定机制包含监视逻辑和监视程序,该监视逻辑可监视该一或多个程序而不中断被监视的该一或多个程序的控制流,而该监视程序可收集效能数据。于具体实施例中,该监视程序包括该一或多个处理器内核在使用者模式操作时所执行的程序指令。图1为包含多内核处理节点的计算机系统的一实施例的方块图;图2是说明图1的设定机制的一实施例的更详细观点的方块图;图3A是说明一例示性指令收回事件记录的图式;图3B是说明一例示性分支收回事件记录的图式;图3C是说明一例示性数据缓存未中事件记录的图式;以及图4是说明一例示性控制设定档块的一实施例的图式。虽然本发明容许有不同的修改与替代形式,但是具体实施例系以图式中的例子的方式来表示且在此详细的叙述。然而应该了解的是,图式与有关的详细叙述并不是要来限3制本发明为所揭露的特定形式,而相反地,本发明系涵盖如附加的权利要求书所定义的本发明精神与范围内的所有修改形式、修改物和替代形式。主要组件符号说明10计算机系统13AU3B外围装置15AU5B处理器内核17、17A、17BPMSRl18AU8B监视逻辑20节点控制器12程序节点14内存16、16A、16BPMSRO18部份监视逻辑19、19A、19B事件计数器22内存控制器24A至24CHyterTranspor(HT)接口电路60第三阶(L3)缓存内存200设定机制221遗失事件计数器232A至232B环缓冲区237轮询275控制块设定档475控制块档218控制块寄存器231A至231C环缓冲区233A至233C轮询250操作系统305,310,320事件记录具体实施例方式请参阅图1,系为计算机系统10的一个实施例之方块图。在该图式的实施例中,计算机系统10包含耦合至内存14及外围装置13A-13B之程序节点12,程序节点12包含耦合至节点控制器20之处理器器内核15A-15B,而节点控制器20更耦合至内存控制器22、复数个HyterTransp0rTM(HT)接口电路24A至24C、以及共享第三阶(L3)缓存内存60。HT电路24C系耦合至外围装置13A,且以菊炼(daisy-chain)结构耦合至外围装置13B(于本实施例中利用HT接口),而其余HT电路24A及24B可经由其它HT接口(未予以图式)连结至其它相似程序节点(未予以图式),内存处理器22亦耦合至内存14,于一实施例中,程序节点12可为包括如图1所示之电路之单一集成电路芯片,亦即,程序节点12可为芯片微处理器(chipmultiprocessor,CMP),可利用整合或分立组件的任何阶层,应该注意的是,程序节点12可包含各种其它为简化而省略之电路,应该注意的是,包含数字和字母(例如处理器内核15A)的参考指示只与适当的数字有关。一般而言,处理器内核15A-15B可利用节点处理器20的接口互相连接及与计算机系统10的其它组件连接(例如外围装置13A-13B、其它处理器内核(未予以图式)、及内存控制器22等),该接口可被设计为任何所需的样子,于一些实施例中,缓存内存同调通讯(cachecoherentcommunication)可被定义为该接口。于一实施例中,在节点处理器20和处理器内核15A-15B之接口的通讯,可为类似那些在HT接口使用的封包之形式,于其它实施例中,可使用任何需要的通讯(例如在总线接口的交易、不同形式的封包等),于其它实施例中,处理器内核15A-15B可共享一接口至节点控制器20(例如共享总线)。一般而言,来自处理器内核15A-15B之通讯可包含请求,如读取操作(读取内存位置或外部寄存器至处理器内核)及写入操作(将写入内存位置或外部寄存器)、探针的响应(对于缓存内存同调实施例)、中断确认、及系统管理信息等。如上所述,内存14可包含任何适合的内存装置,举例来说,内存14可包括一或更多个随机存取内存,在动态随机存取内存族中,例如RAMBUS内存(RAMBUSDRAM,RDRAM)、同步动态随机存取内存(synchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取内存(doubledatarateSDRAM,DDRSDRAM),替代地,利用静态随机存取内存等可应用于内存14。内存14有时可意指计算机可读储存媒体,而程序数据与命令可于该计算机可读储存媒体中被储存及检索以用以执行,内存控制器22可包括内存14的接口控制电路,因此,内存控制器22可包含用以队列内存请求之请求队列等。HT电路24A至24C可包括各种缓冲器及控制电路以从HT链接(HIlink)接收封包以及在HT链接传输封包,该HT接口包括单向链接以传输封包,每一HT电路24A至24C可被耦合至两个这样的链接(一为传输而另一为接收),已知HT接口可以缓存内存连贯方式(coherentfashionM例如在程序节点之间)或非连贯方式(例如到达/来自外围装置13A-13B)而被操作。在该图式的实施例中,并没有使用HT电路24A-24B,且HT电路24C系经非连贯方式耦合至外围装置13A-13B。应该注意的是,尽管本文实施例利用HT接口以在节点间及在节点与外围装置间通讯,其它实施例可利用任何需要的接口或任何用以通讯的接口,举例来说,可利用基于接口的其它封包、可利用总线接口、可利用各种标准外围接口(例如外围组件互连(peripheralcomponentinterconnect,PCI)等)等。外围装置13A-13B可为任何类型的外围装置,例如,外围装置13A-13B可包含用以与其它计算机系统通讯之装置,而该装置系与该其它计算机系统耦合(例如网络适配卡,类似整合在计算机系统的主要电路板上或调制解调器之网络适配卡的电路),另外,外围装置13A-13B可包含视讯(vedio)加速器、声频(audio)卡、驱动控制器、小计算机系统接口(SmallComputerSystemsInterface,SCSI)配接器及电话卡、声卡、以及各种数据获取卡例如通用接口总线(generalpurposeinterfacebus,GPIB)或总线适配卡,再者,外围装置13A-13B可包含非易失储存器例如硬盘、软盘装置、快闪装置、光学储存媒体及其它,应该注意的是,该“外围装置”名称亦指包围(encompass)输入/输出装置。一般而言,处理器内核15A-15B可包含电路,且该电路系设计为用以执行定义于给定的指令集架构(instructionsetarchitecture)的指令,亦即,处理器内核电路系用以提取、译码、执行以及储存定义于该指令集架构的指令之结果,例如,于一实施例中,处理器内核15A-15B可实施x86架构,就其本身而言,处理器内核可被操作于一或更多模式或保护层,且该保护层系一般如同CPU保护层(CPUprotectionlevels,CPLs)或意指保护环,于x86架构中有四层,设计为CPLO至CPL3,虽然通常只有使用两层,通常使用的其中一层为CPL0,而该CPLO系通常指的是内核(kernel)模式及最高优先层,另一通常使用的是CPL3,而该CPL3—般系如同使用者模式及意指最低优先层。处理器内核15A-15B可包含括任何需要的组构,包含超管线的(superpipelined)、超纯量(superscalar)或及其组合,其它组构可包含纯量、管线的、非管线的等,许多实施例可应用顺序混乱的臆测执行(speculativeexecution)或按顺序的执行,处理器内核可包括,与任何以上的构造结合,对一或更多指令或其它函数的微译码,各种实施例可实施各种其它设计特征,例如缓存内存、变换后备缓冲区5(translationlookasidebuffer,简称TLBs)、漏地址缓冲器(missedaddressbuffers,MABs)、模型特定寄存器(modelspecificregisters,MSRs)、控制寄存器(controlregisters,CRs),如同其它系统层次控制硬件,因此,于该图式之实施例,处理器内核15A包含硬件设定文件(profilinghardware),而该硬件设定文件包含分别由16A和17A所表示的PMSRO和PMSRl、及包含事件计数器(eventcounter)19A的监视逻辑18A,应该注意的是,在其它实施例中,可利用其他多数硬件设定文件组件,例如特定模型寄存器,又应该注意的是,事件计数器19A系显示于单独的方块,然而,于许多实施例中,处理器内核15A可包含一些事件计数器单元,而该事件计数器单元可置于邻近可被计数的事件,举例而言,若特定事件计数器单元正计数指令的收回,则事件计数器单元可位于邻近负担信息的逻辑,例如记录缓冲器逻辑(未予以图式),如图所示,处理器内核15B系包含类似特征。于许多实施例中,节点控制器20可包含多种用以将处理器内核15A和15B互相连接、与其它节点互连、及与内存互连之电路互连(未予以图式),节点控制器20亦可包含选择及控制各种节点特性的功能,例如对节点的最大和最小操作频率、对节点的最大和最小电源供应电压,节点控制器20—般系用以在处理器内核15A-15B、内存控制器22、HT电路24A-24C之间定通讯路线,取决于通讯类型、通讯中的位置等。于一实施例中,节电控制器20可包含系统请求队列(systemrequestqueue,SRQ)(未予以图标),且在该请求队列系统中接收被节点控制器写入的通讯,节点控制器20可安排层用以选路的STQ至目的地的通讯,在处理器内核15A-15B、内存控制器22、HT电路24A-24C之间,因此,在该图标的实施例中,节点控制器20包含额外的监视逻辑,该监视逻辑系硬件设定文件的一部分且以部份监视逻辑18表示,系用以在其它对象,到内存14和外围装置13的监视器之抽样选路之间控制,于程序设定(processprofiling)操作期间。以下将会详细说明,处理器内核15A和15B系用以同时执行一或多个线程或程序,因此,处理器内核15A和15B每个可包含硬件及软件之能程序设定文件的功能(亦即设定机制)以启用程序设定,举例来说,处理器内核15A系用以于使用者模式(CPL3)或内核模式(CPLO)的任一模式中执行监视程序,该监视程序可收集关联于在处理器内核15A或处理器内核15B运行的使用者模式的程序之效能数据,就其本身而言,处理器内核硬件,例如PMSRO和PMSR1、监视逻辑18A、监视逻辑18B、监视逻辑18C,可促进效能数据的收集。又应该注意的是,尽管于图1所示之计算机系统10系包含一程序节点12,其它实施例可实施任何数量的程序节点,同样地,在许多实施例中,如程序节点12的节点可包含任何数量的程序内核,许多实施例的计算机系统10,亦可包含每节点12之不同数量的HT接口,以及耦合至节点12之任何数量的外围装置13等。请参阅图2,其说明图1之设定机制之一具体实施例之更详细观点之架构图,详而言之,监视逻辑18包含事件计数器19、遗失事件计数器221、控制块寄存器218。如图所示,监视逻辑18与外围装置13A通讯,于该图标之实施例中,外围装置13A系描述为非易失性储存器,例如硬盘机驱动器或快闪驱动器,监视逻辑18亦与内存14、操作系统250通讯,该操作系统250可表示分别在处理器内核15A和15的任一或两者的操作系统(OS),如上述于一实施例中,设定机制200可共同地包含例如至少操作系统OS的一部分、监视逻辑18、PMSRO16,PMSR117、内存14及外围装置13A。设定机制200扩充了处理器架构,允许使用者模式(CPL3)程序以非常低的负担收集有关本身的效能数据,举例来说,如动态优化器和管理执行环境的模块,能以高精确度和分辨率监视正运行的程序,因此允许设定机制对效能问题提出报告及机会以立即修复这些问题,该架构扩充可允许程序收集效能数据及以轮询或执行一偶尔中断的方式检查效能数据,在此提出CPU和程序的最小附加状态,这和习知效能计数器不同,此可在无中断下收集大量数据,大大地降低利用效能回馈的负担,详而言之,于一实施例中,在此描述之设定机制200可利用一根本不请求数据收集中断的轮询方案。设定机制200亦可容许使用者程序不呼叫驱动器而控制他的数据收集,该驱动器可为与数据收集软件或硬件互相影响之软件例程。最后,设定机制200可在线程上下文中运行,所以多数程序可同时在一系统中利用设定机制200。于许多实施例中,当有可能时,监视逻辑18被用以监视和计数在使用者模式码的执行时且在预定区间的一或多个事件,以插入事件记录至环缓冲区(ringbuffer)(例如环缓冲区231A),而该环缓冲区231A系在内存14之运行程序的地址空间,一旦环缓冲区填满了使用者指定阈值(user-specifiedthreshold),监视逻辑18可导致该操作系统OS的中断,该操作系统OS可利用单一程序通过将缓冲区的内容移至非易失性储存器(例如外围装置13A)或以其它一些方法利用缓冲区内容,而使该缓冲区成为空的,有了适当的操作系统OS支持,该中断甚至可被传递至一个别的程序或线程。在一些实施例中,设定机制200可容许使用者程序手动插入信息至一环缓冲区的事件记录,且容许该程序记录会影响在缓冲区的其它数据的解释之软件事件。于一实施例中,设定机制200可收集关联于事件如指令收回、分支(亦即转换或控制)收回、及数据缓存未中(datacatchmisses)的信息,然而,应该思忖的是,在其它实施例中,亦可监视其它事件例如CPU周期、数据TLB未中、指令TLB未中、浮点操作、指令缓存未中、及内存锁竞争(memorylockcontention),信息事件可记录于事件记录中,如图3A至3C所示。为了与操作系统OS进行沟通且合作,在许多实施例中,操作系统OS系用以检查设定机制200是否激活,若是,则显示设定文件特征,该操作系统OS必须使这设定机制200激活,若该操作系统OS允许程序作用于其上,通过使设定文件激活,该操作系统OS确定上下文交换设定档状态;通过使设定文件能中断,该操作系统OS确定程序设定文件状态,且在使用者程序的操作之数据不会泄漏任何其它程序。于该图标之实施例中,内存14包含一些程序和线程的程序、及在控制块设定文件(profilingcontrolblock)275信息的程序,详而言之,如图所示,内存14具有四个分配给程序和线程的例示性地址空间,从左边开始,程序和线程(processandthread,P1T1)系包含使用者模式码,而该使用者模式码包含了一些应用码和监视码,因此,该地址空间亦包含用以储存事件记录的环缓冲区231A,该监视码亦可包含用以监视环缓冲区231A之轮询码233A,且如上所述,当环缓冲区231A到达预定阈值时监视逻辑18会发出通知。下个地址空间以P1T2表示,与P1T1相似亦包含使用者模式码,而该使用者模式码系包含环缓冲区231B,对于以P2T1表示的下个地址空间亦类似,其系关于第二程序及第二线程。内存14中的第四地址空间说明了以P1T3表示的监视线程之实施例,该监视线程的地址空间包含一些环缓冲区(例如232A及232B)的空间,如图所示监视码使用者模式码,监视线程P1T3可被使用于监视一些在任何处理器内核执行的程序,于该图标的实施例中有两个环缓冲区,因此有两个程序被监视,然而,在其它实施例中,任何数量的线程或程序可被监视,举例而言,若监视线程P1T3正监视在其它程序的线程,而环缓冲区232A及232B可在内存中,亦即共享正被监视的程序,且线程P1T3和正被监视的线程皆可读取和写入缓冲区。在一实施例中,于监视事件时,若在使用者模式中执行指令,指令可被计数,且在关联于指令技术标准的模式下,例如高级微装置(AdvancedMicroDevices)标准的指令计数,提供了指令计数,然而,其它实施例可能以其它方式计数指令,此外,当在(或进入或离开)系统管理模式(SystemManagementMode,SMM)时,设定档可能不会活动。一设定档系启用(以下进一步叙述),使用者线程经由新指令可在他的操作中具有完整的控制,于一实施例中,该新指令可称为LLWPCB、SLWPCB、及LWPINS,这些指令可具体指定一至控制块设定档275(详细说明于图4)的指针(pointer),初始化内部设定档状态,亦即开始(或结束)设定档状态,且插入事件记录至环缓冲区,在多绪执行程序中的每一线程可分别用以设定档操作,一线程具有自己的环缓冲区及事件计数器,而该事件计数器可与其余线程状态上下文交换,然而,环缓冲区是可以共享的,所以单一监视线程例如图2之P1T3可处理来自在已知程序中多重其它线程的数据。在设定文件操作中,监视逻辑18系用以监视及记录一或多个事件的类型,于一实施例中,监视逻辑18可包含,用以计数事件、收集事件记录、储存事件记录至内存的缓冲区(例如环缓冲区231、232)、报告缓冲区填满的量,以及当一事件记录以储存时重置一特定事件计数,且控制从环缓冲区至非易失性储存器之信息的传输的功效,以下系详细描述这些功效。于一实施例中,每一次收回一个指令,监视逻辑18对所有关联于指令的事件,减少他的初始事件计数器19,一个指令可导致零、一、或多重事件,例如当指令收回时,亦即分支收回时,直接跳跃(directjump)经由内存的指针而计数,以及亦引起至两个数据缓存内存未中(或更多,若有TLB未中),且至指令缓存未中,所以有些事件会有其过滤或条件以调整计数,例如,一缓存未中事件可指定唯有潜伏大于一特定最小值的事件才合适被计数。再者,当一事件计数器达到零时应报告该事件,因此监视逻辑18收集一事件记录(如图3A所示),详而言之,于一应用中,在事件记录的内部复制中可被写入。对于多数事件,如指令收回而言,监视逻辑18系用以收集一事件记录,以描述导致计数器达到零的指令,然而,如以下进一步地详述,监视逻辑18系用以收集事件记录数据作为引起事件的下个指令,或执行其它替代办法以获得该记录。监视逻辑18在任何时间(亦即同时)可收集关于一或很多事件的事件数据,视具体应用而定,在一应用中,监视逻辑18可选择合适的事件的其中之一,而其它失效的事件等待直到该选择的事件被写入至内存14,接着监视逻辑18可挑出下个合适的指令以等待事件,在其它应用中,若多数事件计数器达到零,则监视逻辑18可收集每事件一事件记录且将其依序写入内存14。监视逻辑18系用以在某些情况发生时丢弃事件,举例来说,若已知的环缓冲区需要从硬盘被浏览(pagein),则无法保存延迟(pending)事件记录数据;若事件被丢弃,则监视逻辑18收集事件记录作为引起事件的下个指令。同样地,若监视逻辑18需回放指令以收集完整的事件记录,则该回放于某些理由下异常终止而以收回代替,在这情况下,事件计数器19系维持在零,且监视逻辑18收集事件记录作为下个引起事件的下个指令。当一完整的事件记录被收集时,如当事件计数器达到零时,监视逻辑18系用以储存该事件至程序地址空间的环缓冲区(例如231),且预定了环缓冲区指针,若该环缓冲区于此时是满的,则监视逻辑18增加未中事件的未中事件计数器且并不预定环缓冲区指针。若多于一事件记录同时准备好被储存,在一应用中,只有一事件必须被储存,监视逻辑18可延缓储存其它事件记录,或丢弃信息且返回选择下个合适于该丢弃事件类型的指令,如果需要的话。应该注意的是,该储存不需和指令收回同时地完成,换言之,若设定机制200缓冲了该事件记录内容,该储存阶段(及继起之阶段)在导致事件收回的指令之后可完成一些周期,关于该事件及指令的数据是精确的,但设定文件程序的其余部份可能稍后完成。若设定档线程中断是启用的,且用于该环缓冲区的空间超出使用者所定义的预定阈值,则监视逻辑18可用以开始一个中断,所以操作系统OS可对一些程序发出信号使该缓冲区成为空的,该中断可被导向至被监视的程序、个别的程序或线程,如前述实施例中的P1T3,应该注意的是,该中断的发生将晚很多于导致线程被接触之事件。于一实施例中,使用者程序可等待直到在环缓冲区处理事件发生中断,然而,这将会需要一些内核或驱动支持,就其本身而论,中断只有在如果内核模式例程允许时可以激活,举例而言,使用者程序会呼叫驱动器将设定机制中断和旗号(semaphore)或互斥(mutex)旗号连结在一起,当中断发生时,驱动器对相关对象发出讯号,任何在对象上等待的线程会醒来且处理这个缓冲,然而,应该仔细考虑其它驱动模式的可能。在其它实施例中,使用者程序可具有一线程以定期轮询(如233)环缓冲区(如231)以及从其移动事件记录,将尾指针提前以便设定机制200硬件可继续储存记录。如上所述,当被监视的事件溢出他的事件计数器,监视逻辑18将事件记录写入至相关事件环缓冲区,在许多实施例中,如图3A至3C所示,在环缓冲区的每个事件系32字节(bytes)长度,然而,应该思量的是,每个事件可使用任何所需的位数在其它实施例中。实际记录规格可利用CPUID命令而决定以描绘设定机制200的特性,应该注意的是,当设定机制200写入事件记录时,事件记录的保留栏(reservedfield)可设置为零,然而,其它实施例可提供其它描绘设定机制特征的方法,应该注意的是,在图3A至3C所示之事件记录仅例示性记录,在其它实施例中,事件记录可包含其它栏,且在记录中可设置不同的栏,或栏可具有与如图3A至3C所示之事件记录不同大小的栏。请参阅图3A,其表示对指令收回的事件记录305的例示性事件记录,首先,从右边开始,字节0为事件识别码(eventID)栏,其指定了事件记录类型,而事件ID的1表示指令收回事件记录,于一实施例中,有效识别码为1至255,而0为无效事件识别码;下一字节系内核识别栏,对多内核系统而言,该栏识别了设定机制200的哪个内核在运作,这栏允许软件从多线程收集事件记录至单一缓冲区而不遗失CPU信息,在一实施例中,对单一内核系统而言,0的识别系为可使用的。在其它实施例中,特定机构寄存器(machinespecificregister,MSR)或其它被操作系统初始的值或其它码可提供内核ID;下两字节为特定事件旗标(flag)栏且可包含任何数量的旗标,视不同的事件记录类型而定,在该所示之例示性事件记录中,全部栏都是被保留的;下四字节显示了一特定事件数据栏,在该所示之例示性事件记录中,这些栏是被保留的,而下一列包含字节8:15,且表示指令地址。于一实施例中,事件计数器系减量(decremented)的于每次指令收回,当计数器到达零时,在设定机制200中的监视逻辑18系以事件识别码1储存事件记录,事件记录的字节8:15包含指令的线性指令(linearinstruction)指针地址,而该指令的执行引起了事件。请参阅图3B,其表示对分支收回的例示性事件记录310,事件记录310的结构与图3A之事件记录305相似,然而如图3B所示,事件ID为2,其标出该事件记录作为分支收回事件记录,事件特定旗标栏包含三个位地址31:29的旗标,这些旗标个别为TKN、PRD及PRV,在一实施例中,若执行分支则该TKN位将指示逻辑1,若不执行该分支则该TKN位将指示逻辑0;若正确地预测分支则该PRD位将指示逻辑1,而若错误预测该分支则该PRD位将指示逻辑0;若该PRV位有效则该PRD位将指示逻辑1,而预测信息失效则该PRD位将指示逻辑0。相似于图3A,图3B之字节8:15亦包含指令地址,因此,字节16:23表示在该分支后的指令地址,若执行该分支则该分支后的指令地址为目标,若不执行该分支则为通过(fall-through)地址。在许多实施例中,无论转移是否执行,事件计数器系减量的于每次控制收回的转移,该控制的转移系包含短的和长的跳跃(包含JCXZ及其变化)、L00Px、CALL和RET指令,然而,并不包含陷阱或中断,无论同步或不同步,也不包含交换至或来自CPL3、SMM或SVM,例如SYSCALL、SYSENTER或INT3之操作。当计数器到达零时,在设定机制200中的监控逻辑18系以事件识别码2储存事件记录,旗标指出了无论分支是否执行(对无条件转移而言是执行)以及无论是否正确预测(对直接分支而言永远是正确的),该记录亦包含分支指令及分支目标的地址,对无执行的条件分支(conditionalbranches)而言,该目标系为通过地址。设定机制200的有些应用在一些或全部的分支中无法获得分支预测信息,事件记录中的位可指示预测信息是否有效。请参阅图3C,其表示对数据缓存未中的例示性事件记录320,事件记录320的指令系与分别在图3A的事件记录305和图3B的事件记录310相似,然而,如图3C所示,事件ID为3,标出该事件记录作为数据缓存未中的事件记录,该事件特定旗标栏包含两个旗标,其位位置为3128,这些旗标分别为包含位位置3128的SRC和DAV,在一实施例中,该SRC位表示对请求数据的来源的一个3位编码。表一系表示SRC编码的范例,尽管其它编码是可能的及需考虑的。若数据地址有效则该DAV位将指示逻辑1,若数据地址无效则该DAV位将指示逻辑1,与图3A相似,图3C之字节8:15亦包含指令地址,因此字节1623表示内存参考(memoryreference)的地址(若该DAV位等于1),事件特定数据字节系标出“Latency”且指示缓存未中的全部潜伏(在周期中),以下进一步描述。表一、来源位码0无有效状态1区域第三阶(L3)缓存2远程CPU或第三阶(L3)缓存3动态随机存取内存4保留的(远程缓存)5保留的6保留的7I其它(内存映像输入输出/组态/外围组件互联/高级可程序中断控制器)(MMIO/Config/PCI/APIC)在许多实施例中,事件计数器系减量每当来自内存的负载引起了数据缓存未中,且该数据缓存未中的潜伏超过了预定的潜伏阈值(latencythreshold)及/或该数据缓存未中的数据系来自缓存的阶层或用以选择或计数的内存阶层,于一实施例中,引起两个在单一负载上的遗失(misses)之未校准(misaligned)存取,只减少了事件计数器的1,且如果报告事件,数据系在遗失的最低地址。设定机制200并不会计数间接由于TLB走步(walk)、区域或全域描述符表(local/globaldescriptortable,LDT/GDT)引用、TLB未中等之缓存未中,因此,于一实施例中,设定机制200系用以只计数指令直接引起的的负载。当计数器到达零时,监视逻辑18系以事件编码3储存事件记录,旗标系随意地指示数据的来源,如果可得到的话,该事件记录包含全部潜伏、负载指令的地址以及参考数据的地址,然而,由硬件设定文件本身所引起的缓存未中并非计数的对象。应该注意的是,x86架构容许同时有多负载未完成,然而,在某些状况下,具有对每个等待缓存未中被解决的负载之全潜伏计数器是无用的,在这样的情况下可思量使用种种单纯化。举例而言,于一应用中,潜伏可能大约为2」的倍数,其中j的范围系包含于1至4,例如,在这其余部份中,假设j=4,所以W=16,潜伏报告的低4位在事件记录中将会是0,实际潜伏计数可能减少16,亦即每16周期等待一次,当查询设定机制特征时,CPUID指令可回复j的数值如“PLatencyRnd”或一些类似的名称,然而,可利用其它机制以返回j的数值。在其它应用中,当开始计数潜伏时可执行一近似值,若计数了16的增加,则于等待负载时有16个周期不需开始,也就是说,在等待的起始16周期之任何时间中,潜伏数值可从1碰撞(bump)至16。在其它应用中,全潜伏可在2n-16(n小于或等于10)中,因此,当潜伏计数器达到其最大值时,该潜伏计数器应用了饱和(saturating)计数器以停止计数,例如,若η=10时,潜伏数值以16为阶层从0至1008间漫游,然后停在1008,此外,若η=10时,每一应用的计数器仅使用了6位,当查询设定机制特征时,CPUID指令(或其它机制)可回复η的数值如“PLatencyMax”,然而,可利用其它机制以返回j的数值。应该注意的是,于上述例子中,当执行决定缓存未中事件是否合适的比较之计数,曾过滤事件的潜伏阈值为16的倍数,又应该注意的是,当决定是否是用上述的简单化时,依据区域及电力应被选择而无论什么系为可实施的。如上所述,数据缓存未中的事件记录报告了数据的线性地址,记录线性地址之方法,影响了所报告的确切事件以及报告一缓存未中事件所需的总时间,因此,监视逻辑18可对导致计数器达到零的事件或下次合适的事件撷取数据。设定档(profiling)设置在一实施例中,于操作中确认设定机制200是否出现,而可以利用CPUID,详而言之,可将处理器EDX位0返回以响应执行呼叫CPUID<=EAX:8000_001,若位0显示逻辑数值为1,则设定机制200是出现的;若位0显示逻辑数值为0,则设定机制200是不出现的,然而,需要思考的是,在其它实施例中,可保留逻辑数值及其相关函数。此外,为了确认所提供的设定机制的功能,CPUID指令可与新的页请求(Ieafrequest)码一起使用,举例而言,执行呼叫CPUID<=EAX8000_001C(为了扩大11特征,使用8000_001D)可返回某些数值,下列表二系显示数值的范例,尽管其它数值和位作用是可能的及可考虑的。表二、设定机制CPUID数值权利要求一种处理器(12),包含一个或多个处理器内核(15A,15B),该处理器包括执行逻辑,用以执行包含一个或多个程序(P1,P2)的指令,且每一程序具有一个或多个线程(T1,T2,T3);以及一种设定机制,该设定机制包括监视逻辑(18A,18B),用以监视一个或多个程序且用以提供对关联至该一个或多个程序的效能数据的存取,而不中断被监视的该一个或多个程序的控制流;监视程序(监视码),用以收集该效能数据。2.如权利要求1所述的处理器,其中,该监视程序包括该一个或多个处理器内核在使用者模式操作时所执行的程序指令。3.如权利要求1所述的处理器,其中,该监视逻辑进一步用以于每个被监视的该一个或多个程序的各自地址空间中形成储存缓冲区(231,232)。4.如权利要求3所述的处理器,其中,该监视逻辑进一步用以记录预定事件的发生,且用以将对应的事件记录(305,310,320)写入至该储存缓冲区。5.如权利要求4所述的处理器,其中,该监视程序用以执行轮询指令以确定是否每个被监视的该一个或多个程序的每个各自地址空间的每个储存缓冲区填满至一预定阈值。6.如权利要求5所述的处理器,其中,该监视逻辑用以通知该监视程序以响应确定给定的储存缓冲区填满至一预定阈值。7.如权利要求6所述的处理器,其中,该监视逻辑进一步用以产生中断至执行在该处理器内核中的一个上的操作系统,其中,该操作系统用以通知使用者程序以响应该中断,其中,该使用者程序用以检查该事件记录且执行对应该事件记录的一个或多个预定动作。8.如权利要求6所述的处理器,其中,该监视逻辑进一步用以产生中断至执行在该处理器内核中的一个上的操作系统,其中,该操作系统用以通知使用者程序以响应该中断,其中,该使用者程序用以检查该事件记录且从给定的储存缓冲器转移该事件记录至非易失储存器。9.如权利要求5所述的处理器,其中,该监视逻辑用以产生中断至执行在该处理器内核中的一个上的操作系统以响应确定给定的储存缓冲区填满至一预定阈值,其中,该操作系统通知使用者程序以响应该中断,其中,该使用者程序用以检查该事件记录且从给定的储存缓冲器转移该事件记录至非易失储存器。10.如权利要求1所述的处理器,其中,该监视程序包括单一监视线程(用户模式监视码),用以监视任何其它线程,其中,该单一监视线程保留事件记录给每个受监视的线程。全文摘要一种具有一个或多个处理器内核(15)的处理器(12)包含可执行一个或多个程序(P1,P2)的指令的执行逻辑,且每一处理可包含一个或多个线程(T1,T2),该处理器亦包含设计文件机制,包含监视逻辑(18)和监视程序(监视码),该监视逻辑可监视一个或多个程序且用以提供关联该一个或多个程序的效能数据的存取,而不中断被监视的该一个或多个程序的控制流,而监视程序可收集该效能数据。再且,该监视程序可包含该一个或多个处理器内核在使用者模式操作时所执行的程序指令。文档编号G06F9/50GK101952806SQ200880125008公开日2011年1月19日申请日期2008年12月3日优先权日2007年12月18日发明者A·切尔诺夫申请人:格罗方德半导体公司