用于管理的运行时间的基于硬件的运行时间检测设施的制作方法_4

文档序号:8385926阅读:来源:国知局
序缓冲器522的最后一个字节的位置。
[0093] 在实施例中,运行时间检测程序缓冲器当前地址(RCA) 706可由MRIC指令更新。 RCA706为待存储的下一个报告群组在程序缓冲器522中的位置。RCA706检查报告群组 大小字段744 (RGS字段),且影响用以形成程序缓冲器522的地址的有效位位置的数目。64 位的RCA706为字0、字1的位位置0至26-RGS和附加在右边的RGS+5二进位零。此为将 存储在程序缓冲器522中的后续报告群组在图5的程序缓冲器522中的开始位置。报告群 组为由检测模块506创建且随后存储在程序缓冲器522中的信息单元。在实施例中,当由 RCA706指定的RGS字段744不等于运行时间检测控制的当前报告群组大小(即,RCA706 会改变RGS字段744)时,则将RCA706设置为ROA702。
[0094] 剩余样本间隔计数字段742 (RSIC字段)可由较低特权程序使用MRIC指令更新。 RSIC字段742包括64位的无正负号的整数,其指示剩余样本间隔计数。当运行时间检测控 制中的RSIC字段742的值为零或等于缩放因子(scalingfactor)字段740 (SF字段)中 的值,且运行时间检测经启用时,则下一样本间隔为基于取样模式708 (M)及SF字段740的 值的完整间隔。当RSIC字段742是非零的且小于SF字段740,且运行时间检测经启用时, 下一样本间隔为部分间隔。当RSIC字段742是非零的且大于SF字段740值,且运行时间 检测经启用时,下一样本间隔为延长间隔。当延长间隔过期时,下一间隔是基于SF字段740 值。当RSIC字段742经设置为非零值时,其经受SF字段740也经受的相同依赖模型最大 限制。当RSIC字段742的原始值为零时,取样模式将支配在LRIC指令及MRIC指令的执行 期间RSIC字段742是否经设置为SF字段740中的值,或该字段是否继续展示为零,直至运 行时间检测经启用。
[0095] SF字段740含有64位的无正负号的整数,其值为单元的缩放因子计数。单元的尺 寸是根据模式字段708(M字段)确定。当RSIC字段742中的值为零时,SF字段740提供 RSIC字段742的递减至零的初始值,在递减至零时,当前指令被识别为样本指令,且从SF字 段740值再新间隔计数。SF字段740的有效值在1至264-1的范围中。如果指定了零,则 采用值一。然而,每一模型可具有SF字段740的最小值及最大值两者。最小值及最大值也 可基于模式字段708而不同。如果指定了小于最小值的值,则依赖模型最小值被载入。如 果指定了大于最大值的值,则依赖模型最大值被载入。
[0096] DC控制字段736为4位的无正负号的整数,其值指明与数据提取或存储高速缓存 未命中相关联的高速缓存等待层级。即,样本指令遭遇数据存取高速缓存未命中。除非被 另一运行时间检测控制禁止,否则尝试存储表示样本指令的报告群组,该样本指令的数据 存取在数值上大于或等于由DC控制字段736的值指明的层级的高速缓存等待层级处经识 别为未命中。用于数据存取的高速缓冲存储器结构及高速缓存等待层级是依赖模型的。对 于具有多个操作数或长操作数的指令,其是依赖模型于哪一操作数存取(如果存在)是用 于报告控制。依赖模型行为可忽略DC控制字段736的值,且因此不使用该值作为存储报告 群组的原因。
[0097]IC字段734为4位的无正负号的整数,其值指明与指令提取高速缓存未命中相关 联的高速缓存等待层级。即,样本指令的提取遭遇指令提取高速缓存未命中。对于IC字段 734及DC控制字段736两者而言,高速缓存等待层级为特定高速缓存层级存取与进行观测 的处理器的距离的抽象化。等待层级取决于处理器与主存储器之间的嵌套高速缓存层级的 量与在多个处理器之间共用这些高速缓存层级的方式的组合。较大等待层级通常对应于消 耗较多时间的存取。IC字段734及DC控制字段736中的值可被视为高速缓存等待层级的 零原点识别。举例而言,值零对应于Ll高速缓冲存储器(即,最接近处理器的高速缓冲存 储器)。值一因此为下一层高速缓冲存储器,其可被称为L2高速缓冲存储器,或甚至LI. 5 高速缓冲存储器(在一些机器中)。值2-15指明额外高速缓存等待层的逻辑渐进,直至达 到主存储器,但不包括主存储器本身。一般而言,高速缓冲存储器结构不会深达十五层。因 此,IC字段734及DC控制字段736中的值15被解译为特殊情况,其分别且无关于高速缓 存等待层级地意味:并未出于产生报告群组的存储的目的而识别出指令提取或数据存取的 高速缓存未命中。除非被另一运行时间检测控制禁止,否则尝试存储表示样本指令的报告 群组,该样本指令的提取被识别在数值上大于或等于由IC字段734的值指明的层级的高速 缓存等待层级处未命中。用于指令提取的高速缓冲存储器结构及高速缓存等待层级是依赖 模型的。依赖模型行为可忽略IC字段734的值,且因此不使用该值作为存储报告群组的原 因。
[0098] 高速缓存等待层级更动控制报告控制位732 (F位)是用于非分支指令且用于分支 预测控制。当运行时间检测控制中的F位732为零时,检查运行时间检测控制的高速缓存 报告控制(IC字段734及DC控制字段736)且根据其经定义功能来加以使用。检查运行时 间检测控制的分支预测控制(BPxn722、BPxt724、BPti726及BPni728位)且根据其经定 义功能来加以使用。当F位732为1时,这些相同控制被忽略且报告群组被存储,除非被另 一控制禁止。
[0099] 数据高速缓存未命中控制位730(D位)指示报告群组是否将被存储。如果D位730 为1,则可或可不将额外类型记录置于报告群组的含有关于样本指令的依赖模型数据的额 外区段中。
[0100] MRIC指令包括分支预测(BP)报告控制(BPxn722、BPxt724、BPti726 及BPni 728)。如果运行时间检测控制中的BP报告控制位为零,则不检查相应条件。如果BP报告 控制位为1且相应分支预测条件存在,则报告群组被存储。
[0101] BPxn位722在为1时启用对分支预测信息的检查。因此,如果样本分支被错误地 预测为经采纳而实际上未被采纳,则报告群组被存储。
[0102] BPxt位724在为1时启用对分支预测信息的检查。因此,如果样本分支被错误地 预测为未被采纳而实际上经采纳,则报告群组被存储。
[0103] BPti位726在为1时启用对分支预测信息的检查。因此,如果样本分支被正确地 预测为经采纳且实际上被采纳,但分支目标被错误地预测,则报告群组被存储。
[0104] BPni位728在为1时启用对分支预测信息的检查。因此,如果样本分支被正确地 预测为未被采纳且实际上未被采纳,且分支目标被错误地预测,则报告群组被存储。
[0105] 事务执行模式记录位720 (X位)的启用控制控制着对事务执行模式中止记录的收 集。当运行时间检测控制中的X位720为零时,不收集事务执行模式中止记录。当X位720 为1时,收集事务执行模式中止记录且将记录置于图5的收集缓冲器508中。如果模型未 被安装有事务执行设施,则忽略X位720。
[0106]RIEMIT指令控制位718 (E位)控制RIEMIT指令的执行。当在运行时间检测经启 用时运行时间检测控制中的E位718为零或被忽略且当作零来对待时,RIEMIT执行无操作 (no-operation)。当E位718为1且未被以其他方式忽略时,RIEMIT经启用以执行其经定 义功能。
[0107] J位746在为零时指定:不管掩码值如何,条件分支(BC)指令在其他类型分支类 别中。如果J位746为1,则指定掩码15的BC指令在返回类型分支类别中。当BC指令指 定掩码1-14时,其不受J位746影响且始终在其他类型分支类别中。当在返回类型分支类 别中时,R位716控制至图5的收集缓冲器508中的包括。当在其他类型分支类别中时,B 位748控制至收集缓冲器508中的包括。其他类型分支类别也可被指示为传送类型分支类 别。
[0108] 指令地址码位714(C位)控制调用类型分支的启用。如果运行时间检测控制中的 C位714为1且指令为调用类型分支,则收集缓冲器508被更新。如果对调用类型分支及返 回类型分支两者的依赖模型检测被组合,则C位714对两个类型起作用,且R位716无效。
[0109]R位716为返回类型分支的启用控制。如果运行时间检测控制中的R位716为1 且指令为返回类型分支,则收集缓冲器508被更新。
[0110]B位748为对除了调用类型分支及返回类型分支以外的分支的启用控制。如果运 行时间检测控制中的B位748为1且指令为由运行时间检测识别的其他类型分支,则收集 缓冲器508被更新。
[0111] 最大地址已超出位712 (MAE位)在经设置为1时指示已存储了具有经设置为1的 C位714的一个或多个报告群组。一旦ME位712经设置为1,继续运行时间检测的执行不 会将该位设置回至零。将MAE位712指定为零的LRIC指令或MRIC指令的执行会将MAE位 712设置为零。
[0112] 运行时间检测下一个(RINEXT)控制位710 (N位)控制着对运行时间检测下一个 指令(其控制样本指令的执行)的启用。当运行时间检测控制中的N位710为零或被忽略 且当作零来对待时,RINEXT执行无操作。当N位710为1且未被以其他方式忽略时,RINEXT 被启用以执行其经定义功能。
[0113] 模式字段708(M字段)为4位的无正负号的整数,其在运行时间检测控制中的值 指定用于运行时间检测控制的取样模式。所支持的取样模式可包括基于对CPU循环进行计 数、对指令进行计数的取样,或可回应于诸如RINEXT的样本指令而定向至样本。
[0114] 报告群组大小字段744 (RGS)为3位的无正负号的整数,其值指定报告群组的记录 的数目(I)。报告群组中的记录的数目可从两个记录(包括开始/时间戳记录及指令最 后记录)变化至多达256个记录。在实施例中,上限可为依赖模型的。置于报告群组中的 16字节记录的数目为2( kgs+1)。
[0115] 主要CPU能力抑制控制位738(Y位)及次要CPU能力抑制控制位739(Z位)被共 同称为抑制控制。对报告群组的存储的抑制意味着不执行存储尝试。当配置中的所有CPU 的CPU能力相同时,抑制控制无效且不发生抑制。在一配置中,如果一个CPU的CPU能力不 同于另一CPU的能力,则抑制控制生效,且将至少一个CPU称为以CPU能力或主要CPU能力 操作,而将至少一其他CPU称为以次要CPU能力操作。主要CPU能力及次要CPU能力是不同 操作速度。当Y位738及Z位739均为零时,抑制不发生。当Y位738为零且Z位739为 1时,在CPU(例如,处理器106)以次要CPU能力操作的情况下发生抑制。当Y位738为1 且Z位739为零时,在CPU(例如,处理器106)以主要CPU能力操作的情况下发生抑制。当 Y位738及Z位739均为1时,发生抑制。
[0116] 图7的以上字段及位是字段的放置及命名的示例,且在本文中为清楚起见而提 供。将理解,在其他实施例中,可仅使用字段的子集,字段可呈任何次序或在任何位置中,和 /或可用不同名称来表示。
[0117] 当运行时间检测经安装且启用时,可在收集缓冲器508中捕获许多事件及数据。 收集缓冲器508被用以捕获记录的集合,记录的内容报告在程序执行期间由处理器106识 别的事件。示例为:一个或多个采纳分支的执行,事务执行中止事件,高速缓存未命中,及运 行时间检测发出指令的操作数。IC控制字段734及DC控制字段736设置层级,程序可对在 该层级采取用以改进指令或数据预取行为的某一校正动作有兴趣。RIEMIT指令的执行通过 将通用寄存器的值存储至收集缓冲器508中来收集该值。额外数据可被收集和/或存储在 其他缓冲器中,其他缓冲器诸如用以收集依赖模型样本指令数据以建构运行时间检测指令 记录的指令数据缓冲器(IDB)(未描绘)。
[0118] 所收集的运行时间检测信息是以取样方式报告。对来自指令流的指令进行取样。 经取样的指令被称为样本指令。当运行时间检测经启用时,用于确定样本指令的若干模式 被定义如下。在循环计数模式中,计数为SF740或RSIC742(其任一个被用以提供用于当 前间隔的计数)中所指定的CPU循环的数目。回应于与取样模式相关联的事件调整该计数。 举例而言,当处理器106处在操作状态中时,该计数可被递减。当该计数递减至诸如零的临 限值时,当前指令被识别为样本指令,且将该计数重新初始化至SF740值且该计数开始随 下一循环递减。当样本指令的执行完成时,执行报告(如果适当)。
[0119] 在指令计数模式中,在SF740或RSIC742(其任一个被用以提供用于当前间隔的 计数)中指定计数。针对由单一操作单元组成的指令,在作为用以调整计数的事件的指令 完成时递减计数。当计数递减至诸如零的临限值时,指令为样本指令。对于由多个操作单 元组成的指令,可按以下方式中的一个递减计数:
[0120] a.针对可中断指令,直到部分完成的所有操作单元表示一个已计数单元,针对该 已计数单元,计数递减。
[0121] b.针对可中断指令,从最近的部分完成起直到最终完成的所有操作单元表示一个 已计数单元,针对该已计数单元,计数递减。
[0122] c.针对在执行由指令的参数指定的处理的CPU确定子部分之后完成的指令,完成 表示一个已计数单元,针对该已计数单元,计数递减。
[0123]d.针对在执行多个操作单元之后完成而不在以上类别a-c中的指令,最后一个操 作单元的完成表示一个已计数单元,针对该已计数单元,计数递减。
[0124] 当针对指令的任何已计数单元而言计数递减至零时,指令为样本指令。当达到诸 如零的临限值时,将计数重新初始化至SF740值,且计数开始如以上a-d中所描述的倒数 计数(countdown)。在计数模式的所有情况下,在样本指令的最后一个操作单元完成之后 发生报告(如果适当)。
[0125] 在导向取样模式中,当N位710为1且RINEXT指令被成功执行时,导向取样发生。 样本指令为RINEXT指令的后的下一顺序指令(NSI)。如果下一顺序指令为执行类型指令, 则样本指令为该执行类型指令的目标指令。当处于循环计数或指令技术模式中时,可发生 导向取样。计数取样结合导向取样及其所导致动作中的任一个继续且不另外受影响,以下 情况除外:如果根据计数取样确定的样本指令与由导向取样确定的指令相同,则不存储两 个报告群组。
[0126] 不管取样模式如何,当样本指令是由RINEXT指令的执行识别时,存储报告群组。 然而,运行时间检测控制Y738、Z739、Qs614及Ps612继续有效。
[0127] 循环计数及指令计数取样各自基于内部系统事件及例外条件而确定会经受一定 量的可变性的适当间隔。倒数计数(countdown)在运行时间检测从停用转变至启用时开 始。视可插入于RINEXT与NSI的完成之间的任何事件而定,导向取样经受较少量的可变性。 值得注意,中断可导致被视为NSI的指令不再为NSI。
[0128] 与模式无关,取样识别样本指令。一旦样本指令经识别,收集便在该样本指令的执 行完成时停止,且开始报告。接着应用管理报告的各种报告控制。在使报告群组的存储在 搁置中时,收集继续。
[0129]当不在事务执行模式中时,在样本指令的执行完成时,报告群组的存储变为在搁 置中。当在事务执行模式中时,在样本指令的执行完成时,报告群组的存储被延后,直至事 务结束,且接着变为在搁置中。当报告群组的存储被延后或在搁置中时,如果识别出以下中 断中的任一个,则报告群组可被清除
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1