用于基于关键路径的分析的性能监视体系结构的增强的制作方法

文档序号:6567614阅读:182来源:国知局

专利名称::用于基于关键路径的分析的性能监视体系结构的增强的制作方法
技术领域
:本发明涉及计算机系统领域,具体来说涉及微体系结构的性能监视和调整。
背景技术
:性能分析是表征、调试和调整微体系结构设计、查找和修正硬件和软件中的性能瓶颈以及定位可避免的性能问题的基础。随着计算机业的发展,分析微体系结枸并基于该分析来对微体系结构进行更改的能力变得更加复杂且重要。除了提供尽可能最佳的平台外,常常通过调整应用程序以使之在该平台上以最佳表现运行来实现最佳性能。在识别性能瓶颈、找出如何通过更好的代码生成来避免它们以及确认性能的提升等方面都有大量投入。性能监视器是该分析中的一个关键组件。性能监视比硅前(pre-silicon)模拟提供更大量的性能数据,并且已经被用于调整微体系结构设计以提升诸如存储转发等方面的性能。在推动硅更改时,准确地知道性能问题发生的频度和从改进微体系结构的该部分获得的多大获益是必不可少的要素。在过去,串行执行机器的性能监视相对是直接的,因为跟踪串行性能瓶颈远比检测并行乱序执行期间的性能极限容易得多。典型性能分析按如下方式将工作负荷的CPI(每个指令的时钟数)分解成各个组成部分1)硬件中的计数性能事件,2)估算每个事件对程序的关键路径的相对贡献,以及3)将对工作负荷的性能瓶颈产生贡献的各个组成部分组合成总细分。估算单个微体系结构原因的每个实例成本对于乱序且高度推测的机器来说是困难的,其中有要涵盖许多停止成本的大部分的足够推测且流水线并行性。目前,已经采用专用方法来估算事件的每个实例影响,并且这些估算的精确度和变化常常是未知的。例如,图1图示单问题机器中指令101-107的提取、执行和引退(retirement)的示例。指令102具有分支误预测110,它使指令103的提取延迟,并显著地在指令102之后推出(pushout)指令103的引退。指令104具有第一级高速緩存未命中120,它进一步地推出指令105的引退。但是指令104的引退4食出125被指令105的第二级高速緩存未命中130矮化(dwarfed),它具有如此长的等待时间,以致于指令106中的分支误预测135对它的引退时间没有任何影响。正如图1所列举的,不管能够实现乱序高度推测并行执行的处理器中有全面的性能监视,即使在单个问题^/L器中,测量引退推出时也存在无法理解的复杂性。附图以举例方式而无意作为限制图示了本发明。图1图示单个问题机器中多个操作的提取、执行和引退的实施例。图2图示一种处理器的实施例,该处理器包括第一性能监视模块和第二微体系结构调整模块。图3图示图2的特定实施例。图4图示一种处理器的实施例,该处理器包括用于以静态或动态方式重新编译软件的模块。图5图示一种系统的实施例,该系统包括具有用于监视处理器的性能和调整处理器的微体系结构的^f莫块的处理器。图6a图示用于监视性能并基于性能来调整微处理器的流程图的实施例。图6b图示图6a的特定实施例。图6c图示用于监视性能并调整微处理器的另一个实施例。图7图示用于在特定事件发生时测量引退推出的实施例。具体实施例方式在下文描述中,提出了例如特定体系结构、这些体系结构内的功能部件、调整机制和系统配置的大量特定细节以便提供对本发明的透彻理解。但是,对于本领域技术人员显见的是,无需采用这些特定细节也能实施本发明。在一些其他情况中,没有对例如公知的逻辑设计、软件编译器、软件重新配置技术和处理器去功能部件(processordefeaturing)技术等的公知组件或方法进行详细描述,以便避免不必要地妨碍了对本发明的理解。性能监视图2图示一种处理器205的实施例,该处理器205具有性能监视模块210和调整模块215。处理器205可以是用于执行代码和/或对数据进行操作的任何部件。作为特定实例,处理器205能够实现并行执行。在另一个实施例中,处理器205能够实现乱序执行。处理器205还可以实现分支预测和推测,执行,以及实现其他^^知的处理单元和方法。处理器250中图示的其他处理单元包括存储器子系统220、前端225、乱序引擎230和执行单元235。这些模块、单元或功能块的每一个可以为处理器205提供前述的功能。在一个实施例中,存储器子系统包括较高级的高速緩存和用于与外部设备实现接口的总线接口,前端225包括投机逻辑和提取逻辑,乱序引擎230包括用于将指令重新排序的调度逻辑,以及执行单元235包括以串行和并行执行的浮点和整数执行单元。模块210和模块215能以硬件、软件、固件或其任何组合来实现。通常,在不同的实施例中,模块的边界是不同的,并且一起来实现以及单独地实现功能。在一个示例中,在一个模块中实现性能10监视和调整。在图2图示的实施例中,分别示出模块210和模块215;但是模块210和模块215可以是由其他图示的单元220-235执行的软件。模块210用于监视处理器205的性能。在一个实施例中,通过确定和/或导出至关键路径的每个实例成本来实现性能监视。关键路径包括在将增加发生、任务或事件的等待时间的情况下将会对完成操作、指令、指令集或程序所要耗费的时间产生贡献的任何此类发生、任务和/或事件的任何路径或序列。在图形学上来说,关键路径有时可以称为经过特定机器上运行的程序中的数据、控制和资源相关性的图形的路径,其中该相关图形中的任何弧的延长将导致该程序的执行等待时间的增加。因此,换言之,事件/功能部件对关键路径的每个实例贡献是事件(例如第二级高速緩存未命中)或微体系结构功能部件(例如分支预测单元)对完成任务或程序中所经历的等待时间的贡献。实际上,事件或功能部件的贡献在不同的应用程序域间有显著差异。因此,可以为特定的用户级应用程序(例如操作系统)来确定事件或微体系结构功能部件成本/贡献。下文将参考图3来更详细地论述模块215。事件包括处理器中引起等待时间的任何操作、发生或动作。微处理器中的常见事件的一些示例包括低级高速緩存未命中、次级高速緩存未命中、高级高速緩存未命中、高速緩存访问、高速緩存窥探、分支误预测、从存储器提取、引退时锁定(lockatretirement)、硬件预提取、前端存储、高速緩存分割(cachesplit)、存储转发问题、资源停止、回写、指令解码、地址转换、对转换緩冲器的访问、整型运算数执行、浮点运算数执行、寄存器的重命名、指令的调度、寄存器读取以及寄存器写入。微体系结构功能部件包括与前述的事件关联的逻辑、功能单元、资源或其他功能部件。微体系结构功能部件的示例包括高速緩存、指令高速緩存、数据高速緩存、分支目标阵列、虚拟存储器表、寄存器文件、转换表、后备緩冲器、分支预测单元、硬件预提取器、执行单元、乱序引擎、分配器单元、寄存器重命名逻辑、总线接口单元、提取单元、解码单元、体系结构状态寄存器、执行单元、浮点执行单元、整型执行单元、ALU以及微处理器的其他常见功能部件。每个指令的时钟数性能的主要指标之一是每个指令的时钟数(CPI)。CPI可以分成多个组成部分,以便可以确定可能归因于多个因素/事件的每一个因素/事件的周期百分比的指示。如上所述,这些因素可以包括诸如未命中高速緩存和进入DRAM引起的等待时间、分支误预测处罚、引退机制(即为了锁定)引起的流水线延迟等的事件。另一些因素的示例包括与这些事件关联的微体系结构功能部件,例如未命中的高速缓存、用于分支预测的分支目标阵列中的未命中、将总线接口用于进入DRAM以及使用状态才几来实现锁定。通常,通过将因素发生的次数乘以它以周期计的影响,然后除以总周期数来确定该因素的相对贡献。虽然对于标量非流水线非推测机器来说能够精确地提供此类细分,但是对于超标量流水线乱序且高度推测机器来说难以给出精确的周期统计。工作负荷中通常存一部分停止。因此,该停止的局部影响对程序的总关键路径产生的贡献可能远比理论上每个实例成本对程序的总关键路径产生的贡献小。意外的是,如果局部延迟导致较佳的总体调度,则局部停止甚至可能对程序的总执行时间有正面影响。分析每个实例的贡献/成本可以釆用多种不同的方式来确定每个实例事件成本,即事件或微体系结构功能部件对关键路径的贡献,这些方式包括(l)分析性估算;(2)来自性能监视器的持续时间计数;(3)由硬件性能监视器和由模拟器测量的引退推出;以及(4)按微基准测试、模拟和硅去功能部件测量的因事件数量的改变导致总执行时间中的改变。在第一实施例中,在理论上确定每个实例成本,即功能部件的贡献。理论贡献可以包括功能部件操作或事件发生的经验知识以及体系结构模拟。这常常通过理解微体系结构、并且通常集中在执行阶段而非引退来导出。最简单形式的分析性估算表征局部停止成本,与如何通过以并行方式执行其他操作(执行阶段或指令)可获得的并行性来涵盖这些停止无关。在另一个实施例中,性能监视器通过持续时间计数来确定功能部件的贡献。一些性能监视器事件被定义为对感兴趣的事项发生的每个周期计数。这得到持续时间计数,而不是实例计数。这两类计数是状态机(例如页步行处理程序(pagewalkhandler)、锁定状态机)处于活动的周期以及队列中有一个或多个项(例如总线的未完成高速缓存未命中的队列)的周期。这些示例测量执行阶段中的时间,而除非执行处于引退状态(此情况对应于锁定状态机),否则不一定测量引退推出。此形式的功能部件在本领域中可用于评估基准测试专用成本。引退推出在确定事件和功能部件在局部规一莫以及将该测量外推到全局规模上的贡献是有用的。引退推出在一个操作在期望的时间或期望的周期期间不引退时发生。例如,对于顺序的指令(或微操作)对,如果第二个指令在第一个指令之后没有尽可能快地引退(通常在相同的周期内,或如果引退资源受限,则在下一个周期内),则考虑推出该引退。引退推出提供向后看、对关键路径的贡献的"区域性的,,(而非单纯局部的)测量。就引退推出知道某个时间点之前已引退的所有操作的重叠的意义上来看,它是向后看的。如果局部13停止成本为50的两个操作按相差一个周期开始,则第二个操作的引退推出至多为1,而非50。引退推出的实际测量可能因开始测量该推出的具体时间而有所不同。在一个实例中,测量从事件的发生开始。在另一个实施例中,推出的测量从指令或操作应该已被引退的时间开始。在再一个实施例中,仅通过对引退推出发生的次数计数来测量引退推出,下文参考顺序操作的引退推出来予以"i仑述。有多种方式用于通过引退推出来测量/导出每个实例的贡献。为了说明,下文论述引退推出、顺序操作和标记的两种方法。这两种机制使用户能够通过利用不同阈值重复运行来创建引退推出的分布直方图。顺序操作的引退推出能够创建程序中所有操作的引退延迟的分布图。此外,引退推出的标记能够创建个别/特定事件(例如分支误预测的个别贡献)的延迟分布图。顺序操作的引退推出,即'隻引退限定户指定的阈值的顺序操作实例进行计数。因此,测量连续操作的推出并报告等待时间超过预定义阈值的推出的数量。在一个实施例中,使用专用计数器来测量慢引退限定,该专用计数器对没有引退来自线程的的指令的周期计数。只要第一个操作引退,就将该计数器初始化为用户定义的值。如果计数器因具体设计而对于特定的第二指令下溢或上溢,则将该第二指令视为具有慢引退,即引退推出。作为采用递减计数器的设计的一个示例,如果用户希望对25个周期中推出多少指令引退计数,则该计数器设为25的预定义值。如果它下溢,则认为推出第二指令的引退。在递增计数器实现中,可以将用户定义的值初始化为0或负值。,如,将计数器初始化为0,并递增计数到25的阈值。如果计数器上溢,则存在引退推出。在备选方式中,可以将递增计数器初始化为-25,并递增计数到0,这在确定计数器上溢时筒化了逻辑比较。引退推出标记,即引退推出分布描绘与慢引退限定非常相似,引退推出标记限定具有超过某个阈值的引退推出的指令或操作。但是,在此机制中,慢引退限定是对感兴趣的指令或操作的许多其他限定的其中之一。其他限定可以包括针对该指令或操作发生的特定事件,例如第二级高速緩存未命中。在逻辑上将这些限定组合,并且如果指令或操作满足指定的限定标准,则对该指令或操作计数。注意,可以对限定器(qualifier)/事件进行逻辑运算或将它们组合,这在指定的机器状态寄存器中是可以进行用户定义的。在另一个实施例中,基于一个或多个特定事件的排除来标记操作。如上所述,并行执行可以掩蔽特定事件的实际影响。作为特定的示例,对第三级高速緩存的未命中可能矮化对笫二级高速緩存的未命中的影响。为了隔离对第二级高速緩存的未命中的影响,如果特定操作导致对第二级高速緩存的未命中而未导致第三级高速緩存的未命中,则可以标记该特定操作。换言之,从测量中排除对导致第三级高速緩存未命中的操作的测量。因此,该标记包括在特定事件发生且至少第二事件未发生时选择操作。直接参考图7,其中图示使用标记机制来测量引退推出的实施例。在流程705中,当特定事件发生和/或特定事件排除时标记操作。该操作将在能够实现并行执行的处理器中执行。但是,该处理器还能够实现串行执行、推测4丸行和乱序执行。特定事件可以是上文论述的微处理器中的任何事件。在一个实施例中,事件是引退事件时的基于事件的精确采样(preciseeventbasedsampling)(PEBS)。在PEBS中,将操作(微操作或指令)标示(标记)为已遇到感兴趣的事件,例如高速緩存未命中。当该操作引退时,引退逻辑注意到它^皮标记并^t丸行特殊的动作。将指令的地址和体系结构状态(例如标志和体系结构寄存器)保存在存储緩冲器中。在此情况中,将推出等待时间与其他信息一起记录。程序执行可以在那些特殊动作之后继续,直到记录此类信息的存储緩冲器(几乎)满为止。当存储緩沖器满(或高于用户指定的水位标)时,导致性能监视中断,由此以信号告知用户应该读取该存储緩冲器。可以由硬件中的有限状态机、通过微^f戈码中的指令或二者的组合来管理对PEBS执行的动作。导致操作的标记的一些事件的特定亏例包括高速緩存未命中、高速緩存访问、高速緩存窥探、分支误预测、引退时锁定、硬件预提取、加载、存储、回写以及对转换緩冲器的访问。标记包括选择操作来用于测量。注意还可以将这些事件选为排除的目标,即如果这些事件的其中之一也与上文i仑述的特定事件同时发生,则可以不标记该操作。在流程710中标记或选择^^喿作之后,确定操作的引退推出。如上所述,确定引退推出可以是对引退中的延迟的实际测量,以及由于该特定事件而简单地将该操作作为一个延迟的引退。在目标是实际测量引退的实施例中,计数器(例如用于慢引退限定的计数器)中的阈值模数设为0,以使引退时的最终值为等于引退推出的正数。在一个实例中,初始化y—计数器并基于第一计数器的初始化和存储寄存器的使用来确定引退推出。在此实例中,将第一计数器的状态复制到另一个机器状态寄存器。当引退时,冻结该存储寄存器而不对其更新。因此,该存储寄存器在软件读出它之前是稳定不变的。注意,测量推出是参考引退时的测量来引述的。但是,还可以在乱序机器中的其他有序阻塞(in-orderchoke)点处测量推出,例如提取存储器操作、将存储器操作解码、发出存储器操作、将存储器操作分配到存储器排序緩冲器中以及存储器操作的全局可见性。局部停止成本可能:R并行:执行的其他工作部分或完全地涵盖。捕捉区域性延迟的引退推出也可能被测量引退推出时仍在进行中的工作或其他停止部分或完全地涵盖。如上文论述的,图1中图示了涵盖引退推出的一种方式。给定操作的停止对程序的关键路径产生的贡献的最终测量是由于该停止原因而发生的执行等待时间上的变化。对全局关键路径的平均增量贡献的一个指示是测量程序的整个执行或长时间追踪(即长时间追踪执行监视)。这种方法涵盖了流水线中任何位置发生的对关键路径的贡献,并将其他并行性可以涵盖局部延迟的因素纳入考虑。通过更改事件实例的数量(这更改了执行时间)并计算将执行时间上的变化除以事件数量上的变化来导出增量贡献。例如,如果增加高速緩存大小将高速緩存未命中的次数从100降低到90,并将执行时间从2000降低到1600,则增量贡献是每次未命中(2000-1600)/(100-90)=40周期。可以采用多种方式来实现Jt技术。第一,可以构造两个版本的微基准测试,一个采用事件而另一个没有。第二,可以更改模拟器配置以引入或消除事件。在两种配置中对一个或多个程序运行该模拟,并对每种情况记录事件的婆t量和总执行时间。最后,一些产品支持硅去功能部件,例如收缩分支目标阵列的大小或更改策略。例如,这可以用于影响分支预测率。如上所述,可以通过如下方式来进行确定微体系结构功能部件的贡献,即事件成本(l)分析性估算;(2)来自性能监视器的持续时间计数;(3)由硬件性能监视器和由模拟器测量的引退推出;以及(4)通过微基准测试、模拟和硅去功能部件测量的总执行时间。但是,性能监视和确定对关键路径的贡献不限于上述方法的其中之一的正交实现,相反可以利用4壬何组合来分析硅功能部件的事件对关键路径的贡献。特定事件的每个实例成本的示例为了评估多种事件的每个实例成本,采用了分析每个实例贡献部分中描述的一些技术。当然,存在多种对追踪的全面CPI细分的贡献项(contributor)。选择了四个重要的贡献项来演示每种描述的技术的效用。但是,对于每个事件,使用所有这些技术不总是可能的或方便的。例如,性能监视持续时间计数对于关注的事件可能不可用。相似地,通过调整模拟器中的大小或策略来扰乱执行可能不会影响事件发生的次数或更改特定追踪中的运行时间。表1示出基于;漠拟执行的扰乱对这四个原因中的每个原因的估算成本的汇总,并提供基于总体模拟结果的影响中的变化的指示。<table>tableseeoriginaldocumentpage18</column></row><table>表l:经验每个实例成本分支误预测是应用程序降速的常见原因。它们迫使处理器流水线重新启动并抛弃推测工作。分支预测器随着时间推移变得越来越准确。然而,随着更深且更宽的流水线,误预测可能导致完成有用工作的机会大量丢失。<table>tableseeoriginaldocumentpage18</column></row><table>表2:分支误预测的每个实例事件成本分支误预测成本的分析性测量是从正常地检测到分支误预测起,执行并返回到正常地从追踪高速緩存提取指令的延迟(31)的周期数。分析视角测量机器前端中发生的实际延迟。如果评估分支条件时因为资源争用或因为未解决的数据依赖(尤其是在该依赖是对经受高速緩存未命中的加载的情况中)而存在任何延迟,则会增加该延迟。出于这些原因,如微基准测试、HW引退推出和模拟的引退推出中可见到的,引退推出延迟可能在三十多到四十多。表2中对应于HW引退推出示出三个值。这里使用的微基准测试具有含条件分支且无存储器引用的循环体。具有36个周期延迟的分支比具有35个周期延迟的分支多28%,具有40个周期延迟的分支比具有39个周期延迟的分支多27%,以及具有41个周期的延迟的分支比具有40个周期延迟的分支多43%。微基准测试接近地与分析模型匹配,因为它们包含不多的并行工作,无需复杂的清除。但是,如图1所示,在指令106具有分支误预测的情况下,如果机器的后端中已经有较早的引退推出,则前端中的延迟可能不会有影响。而且,较迟的高速緩存未命中可能因远远更大的延迟而掩盖该分支对关键路径的贡献。其一个原因是,对总关键路径的平均贡献远低于引退推出。已由禁用间接分支预测器得到对关键路径的it拟的总贡献,由此它就可以4义预测最后一个目标。而且,在真实应用中,路径外(off-path)代码常常可以执行有用的数据预提取和DTLB查询,这减少误预测的影响。最后,将一个误预测的处理与第二误预测的处理重叠可以减少对总关键路径的平均贡献。从此论述来看,显然对关4建路径的实际平均贡献可能与具体上下文高度相关,并且引退推出可能高估每个实例成本。可以将例如~70%的缩放系数应用于HW测量的引退推出以得到中等每个实例成本。注意此事件成本可能与特定微体系结构以及甚至相同微体系结构系列内的实现高度相关。,一j^a〃專遽凝存^命^第一级高速缓存未命中是常发生的。乱序处理器设计为查找指令流中的独立工作以使处理器保持繁忙,同时处理第二级高速緩存未命中。因此,局部Ll未命中成本(例如引退推出)中仅小部分对19总关键路径产生贡献。<table>tableseeoriginaldocumentpage20</column></row><table>表3:第一级高速緩存未命中的每个实例事件成本这里分析模型描述正常的加载使用成本之上的LI未命中的开销。该事件的微基准测试由面对18个周期开销的均匀分布的指针跟踪循环构成。可以将~50%的缩》文系数应用于所有Ll未命中事件的硬件引退推出以得出中值每个实例成本。可以将第二级高速緩存未命中发出到较高级高速緩存或存储器控制器/DRAM。乱序处理器设计为查找独立的L2高速緩存未命中以将这些长时间事务的处理实现流水线化。<table>tableseeoriginaldocumentpage20</column></row><table>表4:第二级高速緩存未命中的每个实例事件成本高速緩存未命中的分析性测量是具有流式DRAM页命中的306个时钟。这从3.4GHz处理器上具有800MHzFSB的90纳秒DRAM计算出。由简单指针跟踪代码构成的微基准测试较好地与该分析模型相关。该内核设计为在DTLB中命中,但是从硬件预提取器实现不了任何有益之处。这里有少i午并行工作要做,这可以隐藏一些等待时间,并有少许独立工作要〗故,这将阻止每个加载立即^L发送到DRAM。引退推出和模拟执行全部导致小于分析值的每个实例成本。实际上,模拟执行显示不同的跟踪之间每个实例成本上范围较宽的变化,比分析值更短以及更长。显然,通过频谱的短等待时间端上叠加的DRAM访问有所获益。较长的每个实例等待时间可能以多种方式发生,包括处理器存储器请求排队深度限制和总线带宽不足。硬件预提取器在此等待时间中起非常重要的作用。虽然相应地进行扼流控制,但是它能够将多个请求插入到存储器系统中,由此增加后续需求加载的等待时间。在频谱的另一端,预提取器有时预提取得太迟,以致于无法避免專交早加栽时的未命中,但是足够早以致于已导致数据在较早加载时处于从DRAM发出的途中。这导致较短的每个实例有效未命中成本。一般来说,中值每个实例成本与HW引退推出测量非常相似。如上文提到的,成本的变化在不同应用程序域之间有显著差异。因此,在确定特定功能部件的贡献时,潜在地具有用于测量给定应用程序的成本的场内机制会极其有帮助。鉴于这种变化,可以在每个应用程序的基础上调整微体系结构。调整微体系结构可以例如在引退推出测量和总执行时间测量期间调整微体系结构以确定每个实例事件成本。^f旦是,也可以响应每个实例事件成本来调整微体系结构。调整微体系结构功能部件或微体系结构包括更改大小、启用或禁用微体系结构内的逻辑、功能部件和/或单元以及更改微体系结构内的策略。在一个实施例中,调整l基于微体系结构功能部件的贡献(即每个实例贡献)来实现的。作为第一个示例,改变功能部件的大小、启用功能部件、禁用功能部件或基于哪个动作减少关键路径中的等待时间来改变与功能部件关联的策略。作为另一个示例,可以使用例如功率等其他考虑来调整微体系结构。在此示例中,可以确定禁用功能部件将等待时间增加不大的量。但是,基于功能部件的性能获益不大且禁用该功能部件将节省很大的功率的确定,调整该功能部件,例如禁用该功能部件。作为经验示例,有关先前的体系结构注意到,在多个宏工作负载中,注意到大量的混淆冲突。发生混淆沖突的这些示例的其中之一是在访问相同高速缓存行的多个线程之间。软件线程是可用来独立于另一个线程来执行的程序的至少一部分。一些微处理器甚至支持硬件中的多线程,其中处理器具有至少多组完整且独立的体系结构状态寄存器,用于独立地调度多个软件线程的执行。但是,这些硬件线程共享例如高速緩存的一些资源。先前,多个线程对高速緩存中的相同高速緩存行的访问导致高速緩存行的位移和局部性的减少。因此,线程的数据存储器的起始地址:故设为不同的值以便避免线程之间高速緩存中的高速緩存行的位移。参考图3,图示处理器205中模块215的特定实施例。模块215用于至少基于微体系结构功能部件对关键路径的贡献来调整用户级应用程序的微体系结构功能部件。这种类型的调整的非常特别的示例包括在应用程序期间或例如垃圾收集的应用程序阶段监视硬件预提取器的性能。在启用硬件预提取器的情况下运行垃圾收集,然后在禁用硬件预提取器的情况下运行垃圾收集,发现在一些实例中,在没有硬件预提取器的情况下,垃圾收集执行得更好。因此,可以在垃圾收集应用程序的执行时调整微体系结构并禁用硬件预提取器。基于性能分析更改策略的其他示例包括预提取的积极性、在同时线程化机器中相对地将资源分配到不同线程、推测页步行、对TLB的推测更新、以及在用于分支和存储器依赖的预测机制之间进行选择。图3图示微体系结构功能部件存储器子系统220、高速緩存350、前端225、分支预测355、提取360、执行单元235、高速緩存350、执行单元355、乱序引擎230和引退365。微体系结构功能部件的其他示例包括高速緩存、指令高速緩存、数据高速緩存、分支目标阵列、虚拟存储器表、寄存器文件、转换表、后备緩冲器、分支预测单元、间接分支预测器、硬件预提取器、执行单元、乱序引擎、分配器单元、寄存器重命名逻辑、总线接口单元、提取单元、解码单元、体系结构状态寄存器、执行单元、浮点执行单元、整型执行单元、ALU、以及微处理器的其他常见功能部件。如上所述,调整微体系结构功能部件可以包括启用或禁用微体系结构功能部件。与上文硬件预提取器的示例一样,当特定软件程序期间禁用功能部件时,如果确定贡献将得到增强,即更好,则禁用预提取器。确定微体系结构功能部件对用户级应用程序的关键路径的贡献的一种方式是在启用该微体系结构功能部件的情况下执行用户级应用程序。然后在禁用该微体系结构功能部件的情况下执行用户级应用程序。最后,基于启用功能部件情况下用户级应用程序的执行与禁用功能部件情况下用户级应用程序的执行的比较来确定微体系结构功能部件对用户级应用程序的关键路径的贡献。简单来说,通过在每次执行用户级应用程序时测量总执行时间,确定哪个总执行时间较好;启用功能部件情况下的总执行时间还是禁用功能部件情况下的总执行时间。作为特定示例,模块215包括去功能部件寄存器305。去功能部件寄存器305包括多个字段,例如字段310-335。这些字段可以是各个位,或每个字段可以具有多个位。此外,每个字段可用来调整微体系结构功能部件。换言之,该字段与微体系结构功能部件关联,即字段310与分支预测355关联,字段315与提取360关联,字段320关联到高速緩存350,字段325关联到引.退逻辑365,字段330关联到执行单元355,以及字段335关联到高速緩存350。当设置这些字段的其中一个字段(例如字段310)时,它禁用分支预测355。如上所论述,如果在被禁用时功能部件对关键路径的性能贡献得以增强,则另一个模块(例如嵌入在模块215中或作为模块215的一部分、与模块215关联的软件程序)可以设置字段(例如字段310)。如上文提到的,模块215可以是硬件、软件或它们的组合,以及与模块210关联或部分地与模块210重叠。例如,作为模块210的功能的一部分,为了确定用户级程序执行期间分支预测355的贡献,可以使用;f莫块215中图示的寄存器305来调整或禁用处理器205的功能部件(例如分支预测355)。在另一个实施例中,去功能部件(即调整)包括以物理方式或虚拟方式更改功能部件的大小。在上面示例的备选方式中,如果显示分支预测355的贡献增强了用户级应用程序的执行,则可以通过字段310相应地增加/减少分支预测355的大小。下面的示例i兌明通过调整高速緩存的大小来调整处理器以发现功能部件或事件(例如高速緩存未命中)的贡献的能力。调整软件参考图4,图示处理器监视性能和调整软件的实施例。处理器405(与图2和图3所示的处理器205更相似)可以具有与处理器关联的任何公知逻辑。如图所示,处理器405包括如下单元/功能部件存储器子系统420、前端425、乱序引擎430以及执行单元435。在这些功能块的每个功能块内,可能存在多种其他微体系结构功能部件,例如第二级高速緩存421、4是取/解码单元427、分支预测426、引退431、第一级高速緩存436和^l行单元437。如上所述,模块410为软件程序的执行确定关键路径中的每个实例事件成本。从上文导出的每个实例事件成本的示例包括持续时间计数、引退推出测量和长时间追踪执行测量。再次要注意模块410和模块415可能具有模糊的边界,因为它们的功能、硬件、软件或硬件与软件的组合可能重叠。与其中模块415通过与功能部件接口来调整微体系结构的图3对比,模块415基于关键路径中的每个实例事件成本来调整软件程序。模块415可以包括用于编译和/或解释要在处理器405上执行的代码的任何硬件、软件或组合。在一个实施例中,;溪块415基于确定的每个实例事件成本来重新编译程序的后续运行时执行的代码,以便比最初编译的代码更频繁或不频繁地利用前文提到的微体系结构功能部件。在另一个实施例中,模块415对于程序的相同运行的24余下部分以不同的方式编译代石马,即使用动态编译或重新编译来改进特定工作负载和平台上的执行时间。如上所述,除了能够调整^f敬体系结构外,还可以通过调整应用程序以使之最佳地在该平、台上运行来达到更好的性能。调整软件包括优化代码。调整应用程序的一个示例是软件程序的重新编译。调整软件还可以包括将软件/代码优化成块数据结构以吻合地置于高速缓存内,重新布置代码以利用缺省分支预测条件而无需使用分支预测器表资源,在不同指令地址发出代码以避免可能导致分支预测和代码高速緩存结构中的局部性管理问题的某些混淆和冲突状况,重新布置动态分配的存储器或堆栈上的数据(包括堆栈对齐)以避免跨高速緩存行引起的处罚,以及调节访问的粒度和对齐以避免存储转发问题。作为调整软件的特定示例,软件450利用处理器405/在处理器405上执行。模块410确定每个实例事件成本,例如分支预测逻辑426中误预测分支的成本。基于此分析,模块415将软件450重新布置成软件460,它是重新布置以不同方式在处理器405上执行的相同的用户级应用程序。在此示例中,重新布置软件460以便更好地利用缺省分支预测条件。因此,重新编译软件460以不同方式利用分支预测426。其他示例可以包括4丸行代码中用于禁用分支预测逻辑426的指令和更改分支预测逻辑426使用的软件提示。用于性能监视的系统接下来参考图5,图示使用性能监视的系统。处理器505耦合到控制器集线器550,而控制器集线器550耦合到存储器560。控制器集线器550可以是存储器控制器集线器或芯片组装置的其他部分。在一些实例中,控制器集线器550具有集成的视频控制器,例如视频控制器555。但是,视频控制器555还可以位于耦合到控制器集线器550的图形装置上。注意每个图示的装置之间可能存在其他组件、互连、装置和电路。处理器505包括冲莫块510。对莫块510用于确定软件程序执行期间的每个实例事件贡献,基于每个实例事件贡献来调整微处理器505的体系结构配置,存储体系结构配置,并在软件程序的后续执行时基于存储的体系结构配置再次调整体系结构配置。作为特定示例,模块510利用贡献模块511确定软件程序(例如操作系统)执行期间的事件贡献。软件程序的其他示例包括访客应用程序、操作系统应用程序、基准测试、微基准测试、驱动程序和嵌入式应用程序。对于此示例,假定事件贡献例如对第一级高速緩存536的未命中不显著地影响执行,可以减小高速緩存536的大小以节省功率而不会影响关键路径中的执行时间。因此,调整模块512通过减小第一级高速緩存536的大小来调整处理器505的体系结构。如上所述,可以利用具有与处理器505中的不同功能部件关联的字段的寄存器来实现调整。在使用寄存器的情况中,存储体系结构配置包括将寄存器值存储在存储装置513中,存储装置513仅仅是另一个寄存器或存储器装置(例如存储器560)。在软件程序的后续执行时,无需重复性能监视步骤,并可以加载先前存储的配置。因此,基于存储的配置来对软件程序再次调整体系结构。用于性能监视的方法图6a图示用于监视性能并调整微处理器的流程图的实施例。在流程605中,使用微处理器执行第一软件程序。在一个实施例中,微处理器能够实现乱序并行执行。接下来在流程610中,确定与执行第一软件程序关联的关键路径的事件成本。参考图6b,图示确定事件的成本和调整微处理器的示例。可以通过分析性分析、持续时间计数(如图流程611所示)、引退推出(例如图流程612所示)和/或总执行时间(如图流程613所示)来确定事件成本。注意可以使用这些方法的任何组合来确定事件的成本。微处理器中的常见事件的一些示例包括低级高速緩存未命中、次级高速緩存未命中、高级高速緩存未命中、高速緩存访问、高速緩存窥探、分支误预测、从存储器提取、引退时锁定、硬件预提取、加载、存储、回写、指令解码、地址转换、对转换緩沖器的访问、整型运算数执行、浮点运算数纟丸行、寄存器的重命名、指令的调度、寄存器读取以及寄存器写入。返回到图6a,在流程615中,基于与执行第一软件程序关联的关键路径的事件成本来调整微处理器。调整包括对微体系结构的任何更改以增强性能和/或改善执^"时间。再次参考图6b,调整的一个示例包括启用或禁用微体系结构功能部件(如图流程617所示)。功能部件的一些示范性示例包括高速緩存、转换表、转换后备緩沖器(TLB)、分支预测单元、硬件预提取器、执行单元和乱序引擎。另一个示例包括更改使用微体系结构功能部件的大小或频率(如图流程616所示)。在再一个实施例中,调整微处理器包括调整/编译要执行的软件程序来以不同方式利用处理器,例如不利用硬件预提取器。目前为止,参考单个软件程序来论述性能监视和调整以描述性能监视。但是,可以利用要在处理器上执行的任何数量的应用程序来实现性能监视和调整。图6c图示概述(profiling)/调整第二程序的体系结构且在再次加载第一应用程序时再次调整微处理器的流程图的实施例。流程605-615与图6a中的流程相同。在流程620中,存储表示调整与第一软件程序关联的微处理器的笫一配置。在流程625中,确定与执行第二软件程序关联的关键路径的事件成本。在流程630中,基于与执行第二软件程序关联的关键路径的事件成本来调整微处理器。最后,在流程635,在第一软件程序的后续执行时基于存储的第一配置再次调整微处理器。从上文可看到,基于个别应用程序的性能来动态地调整微处理器。因为以不同方式利用处理器中的某些功能部件,并且事件(例如高速緩存未命中)的成本对于不同的应用程序有显著差异,所以27可以将微体系结构和/或软件应用程序本身调整到更有效率且快速地执行。通过分析性方法、模拟、引退推出的测量和总执行时间的任何组合来测量功能部件的事件和贡献的成本,以确保监视正确的性能,尤其是对于并行执行机器监视正确的性能。在前文说明书中,本发明是参考其特定示范实施例来描述的。但是,可设想在不背离所附权利要求中提出的本发明的较宽精神和范围的前提下,可以对此进行多种修改和更改。因此,本说明书和附图应视为说明性意义的而非限定性意义的。权利要求1.一种方法,包括使用微处理器执行第一软件程序;确定与执行所述第一软件程序关联的关键路径的事件成本;以及基于所述与执行所述第一软件程序关联的关键路径的事件成本来调整所述微处理器。2.如权利要求1所述的方法,其特征在于,所述微处理器能够实现乱序并行执行。3.如权利要求1所述的方法,其特征在于,调整所述微处理器包括更改微体系结构功能部件的大小,所述微体系结构功能部件选自指令高速緩存、数据高速纟爰存、分支目标阵列、虚拟存储器表和寄存器文件。4.如权利要求1所述的方法,其特征在于,调整所述微处理器包括禁用微体系结构功能部件,所述微体系结构功能部件选自高速緩存、转换表、后备緩沖器、分支预测单元、硬件预提取器和执行单元。5.如权利要求l所述的方法,其特征在于,还包括存储表示调整与所述第一软件程序关联的微处理器的第一配置;确定与执行所述第二软件^E序关联的关键路径的事件成本;基于所述与执行所述第二^:件程序关联的关键路径的事件成本来调整所述微处理器;以及在所述第一软件程序的后续执行时基于所存储的第一配置来再次调整所述微处理器。6.如权利要求5所述的方法,其特征在于,所述第一和第二软件程序的每一个软件程序选自访客应用程序、操作系统、操作系统应用程序、基准测试应用程序、驱动程序和嵌入式应用程序。7.如权利要求1所述的方法,其特征在于,确定关键路径的事件成本包括执行持续时间计数。8.如权利要求7所述的方法,其特征在于,所述执行持续时间计数包括对所述微处理器中的状态机处于活动的周期进行计数,其中所述状态机选自页步行处理工具、锁定状态机和总线的未完成高速缓存未命中的队列。9.如权利要求1所述的方法,其特征在于,确定关键路径的事件成本包括测量操作的引退推出。10.如权利要求9所述的方法,其特征在于,所述测量操作的引退推出包括测量连续成对的操作的引退中的延迟。11.如权利要求9所述的方法,其特征在于,所述测量操作的引退推出包括测量具有特定事件的操作的引退延迟。12.如权利要求11所述的方法,其特征在于,所述事件选自低级高速缓存未命中、次级高速緩存未命中、高级高速緩存未命中、高速緩存访问、高速緩存窥探、分支误预测、从存储器提取、引退时锁定、硬件预提取、加载、存储、回写、指令解码、地址转换、对转换緩沖器的访问、整型运算数执行、浮点运算数执行、寄存器的重命名、指令的调度、寄存器读取以及寄存器写入。13.—种方法,包括在特定事件发生时标记操作,所述操作要在能够实现并行执行的处理器中执行;以及确定所述操作的引退推出。14.如权利要求13所述的方法,其特征在于,所述标记操作包括在所述特定事件发生时选择所述操作以进行采样。15.如权利要求13所述的方法,其特征在于,所述标记操作包括在所述特定事件发生且第二事件未发生时选择所述操作以进行采样。16.如权利要求14所述的方法,其特征在于,所述特定事件选自高速緩存未命中、高速緩存访问、高速緩存窥探、分支误预测、引退时锁定、硬件预提取、加栽、存储、回写以及对转换緩沖器的访问。17.如权利要求14所述的方法,其特征在于,所述特定事件是引退事件时的基于事件的精确采样。18.如权利要求14所述的方法,其特征在于,所述确定所述操作的引退推出延迟包括当选择所述操作以进行采样时初始化第一计数器;基于所述第一计数器的初始化和存储寄存器的使用来确定所述引退推出。19.如权利要求18所述的方法,其特征在于,所述笫一计数器的初始化包括将所述第一计数器设置为用户定义的值,以及其中存储寄存器的使用包括在利用所述第一计数器测量所述引退推出时将所述第一计数器的状态复制到所述存储寄存器中,以便被读出来确定所述引退推出。20.—种i殳备,包括微处理器,所述微处理器包括第一模块,所述第一^f莫块用于为用户级应用程序确定微体系结构功能部件的贡献;以及第二才莫块,所述第二模块用于在要执行所述用户级应用程序时,至少基于所述微体系结构功能部件的贡献来调整所述微体系结构功能部件。21.如权利要求20所述的设备,其特征在于,为用户级应用程序确定微体系结构功能部件的贡献包括在启用所述微体系结构功能部件的情况下执行所述用户级应用程序;在禁用所述微体系结构功能部件的情况下执行所述用户级应用程序;以及基于启用所述功能部件的情况下所述用户级应用程序的执行与禁用所述功能部件的情况下所述用户级应用程序的执行的比较,为所述用户级应用程序确定所述《故体系结构功能部件的贡献。22.如权利要求20所述的设备,其特征在于,调整所述微体系结构功能部件包括更改所述微体系结构功能部件的大小,所述微体系结构功能部件选自指令高速緩存、数据高速緩存、分支目标阵列、虚拟存储器表、以及寄存器文件。23.如权利要求20所述的设备,其特征在于,调整所述微体系结构功能部件包括禁用所述微体系结构功能部件,所述微体系结构功能部件选自指令高速緩存、数据高速緩存、转换表、后备緩冲器、分支预测单元、硬件预提i[又器以及执行单元。24.如权利要求20所述的设备,其特征在于,调整所述微体系结构功能部件还基于所述微体系结构功能部件所耗用的功率的量。25.如权利要求23所述的设备,其特征在于,所述第二模块包括具有与所述微体系结构功能部件关联的字段的寄存器,其中所述字段在^皮设置时将禁用所述^t体系结构功能部件;在所述功能部件被禁用时能增强所述功能部件的性能贡献的情况下,用于设置所述寄存器中与所述微体系结构功能部件关联的字段的模块。26.—种设备,包括微处理器,所述微处理器包括用于确定执行软件程序的每个实例事件成本的模块;以及用于基于所述每个实例事件成本调整所述软件程序的模块。27.如权利要求26所述的"i殳备,其特征在于,确定每个实例事件成本包括通过从如下项构成的组中选择的性能监视技术来导出所述每个实例事件成本持续时间计数、引退推出测量以及长时间追踪执行监视。28.如权利要求26所述的设备,其特征在于,调整所述软件程序选自重新编译所述软件程序、优化所述软件程序、将所述软件程序优化成块数据结构以吻合:l也置于高速緩存内、重新布置所述软件程序以利用缺省分支预测条件、在不同的指令地址处发出代码、在动态分配的存储器中重新布置数据以及调整访问的粒度和对齐。29.—种系统,包括控制器集线器,所述控制器集线器耦合到存储器以及视频控制器;微处理器,所述微处理器包括用于执行如下步骤的模块在软件程序执行期间确定每个实例事件贡献;基于所述每个实例事件贡^调整所述微处理器的体系结构配置;存储所述体系结构配置;以及在所述软件程序的后续执行时基于所存储的体系结构配置再次调整所述体系结构配置。30.如权利要求29所述的系统,其特征在于,所述微处理器能够实现乱序并行执行。31.如权利要求29所述的系统,其特征在于,将所述体系结构配置存储在所述微处理器中的寄存器中。32.如权利要求29所迷的系统,其特征在于,在软件程序执行期间确定每个实例事件贡献包括测量多个特定事件发生的多个引退推出;以及基于所述多个引退推出和所述特定事件发生的次数导出所述特定事件的每个实例事件贡献。33.如权利要求29所述的系统,其特征在于,在软件程序执行期间确定每个实例事件贡献包括多次执行所述软件程序,其中每次执行所述软件时更改特定事件发生的次数,以及监视所述微处理器中的关健路径的性能;基于所述关键路径的性能上的改变与所述特定事件发生的次数上的改变的比较,导出所述特定事件的每个实例事件贡献。全文摘要本文描述一种用于监视微体系结构的性能和基于监视的性能来调整微体系结构的方法和设备。通过模拟、分析性原因查找、引退推出测量、总执行时间和确定每个实例事件成本的其他方法来监视性能。基于每个实例事件成本,调整微体系结构和/或执行软件以增强性能。文档编号G06F17/50GK101427223SQ200680019059公开日2009年5月6日申请日期2006年6月1日优先权日2005年6月1日发明者C·纽伯恩申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1