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

文档序号:8385926阅读:来源:国知局
:1)程序中断;2)紧急机器检查中断;3)重新启动中 断;及4)监督调用中断。
[0130] 任何搁置中的1/0、外部及可抑制的机器检查中断保持搁置,直至报告群组已被存 储或运行时间检测控制确定报告群将不被存储。
[0131] 每一模式可或可不允许报告控制的不同集合。当取样模式为指令计数或循环计 数,但导向取样也被使用时,可能通过多个取样方法来识别出相同样本指令。当此情况发 生,且待使用的报告控制根据取样模式而不同时,应用与导向取样相关联的报告控制。
[0132] 归因于可能出现的非同步及非请求系统事件,用以对特定指令进行取样的间隔的 精确确定通常不可行。实情为,可将RINEXT指令用以较接近地指明样本指令。
[0133] 当在循环计数模式或者指令计数时,可以与从指令计数或循环计数样本识别样本 指令的很接近地发出RINEXT指令。相关联的报告群组的内容是好象样本指令被识别为 RINEXT指令的NSI,而不是好象应用了样本指令的循环计数或指令计数识别。
[0134] 如果以下例外条件中的任何一个或多个得到满足,则RINEXT的执行可作为无操 作来执行:
[0135] 1.运行时间检测控制是无效的。
[0136] 2.在问题状态中,当前运行时间检测控制的Ps612为零,从而指示问题状态报告 不被准许。
[0137] 3.在监督状态中,当前运行时间检测控制的Qs614为零,从而指示监督状态报告 不被准许。
[0138] 4.当前运行时间检测控制的N位710为零,从而指示RINEXT指令本身不被准许。
[0139] 5.存储被抑制。
[0140] 6.当前PSW中的字段指示运行时间检测被停用。
[0141] 7.依赖模型临限值将被超过。在一时间段中RINEXT已被发出的次数已超过依赖 模型极限。
[0142] 8.存在程序缓冲器满条件。
[0143] 9.存在运行时间检测暂停条件。
[0144] 10.下一顺序指令为开始解译执行指令。
[0145] 11.下一顺序指令为监督调用指令。
[0146] 转而参看图8,大体上展示了收集缓冲器508的实施例。如先前所描述,当在程序 执行期间启用运行时间检测时,运行时间检测数据是收集于处理器106内。在实施例中,在 处理器106内收集数据的位置为收集缓冲器508,且视情况为指令数据缓冲器。在实施例 中,收集缓冲器508为处理器106的内部缓冲器,其用以存储(save)所收集的最近记录。当 检测到样本触发点时,将记录从收集缓冲器508复制至程序缓冲器522中以作为将写入至 程序缓冲器522的报告群组的部分。在实施例中,以非破坏性方式从收集缓冲器复制记录。
[0147] 收集缓冲器508可被称为"硬件收集缓冲器",因为收集缓冲器508位于处理器 中,且在实施例中经实施为表示给定事件的指令地址802及事件后设数据804的寄存器对 的阵列。在实施例中,指令数据缓冲器也由寄存器对的阵列来实施。事件的示例为采纳分 支,针对该采纳分支,寄存器对可保存该分支的指令地址,且该后设数据可保存分支的目标 以及关于分支的历史行为的信息。在实施例中,寄存器对经排序,且随着事件出现于指令 流中而被顺序地更新。维持计数器以指示阵列中的最近经更新输入项的索引。在实施例 中,收集缓冲器508为循环缓冲器,且当收集缓冲器508被填满时,下一事件覆写阵列中的 第一输入项,且在发生后续事件时阵列的寄存器对的顺序更新重新开始。因而,假设阵列 CB[0]至CB[N-1]及指示最新更新索引的计数器i,所捕获的事件的追踪可由序列CB[i]、 CB[i-l]、......、CB[1]、CB[0]、CB[N-1]、CB[N-2]、......、CB[i+1]来表示。在另一实施例 中,使用两个指针:指向缓冲器中的最旧输入项的头指针,及指向缓冲器中的最新输入项的 尾/当前指针。
[0148] 在收集缓冲器508中顺序地捕获表示处理器106在任何给定执行点处的状态的事 件。将收集缓冲器508用以捕获记录的集合,记录的内容报告在程序执行期间由处理器106 识别的事件(例如,一个或多个采纳分支的执行,事务执行中止事件,RIEMIT指令的操作数 等)。在实施例中,经识别的事件视图7中所展示的RICCB的内容而定。图8中所展示的收 集缓冲器508的实施例中的输入项包括事件指令地址802及其他相关的事件后设数据804。 事件后设数据804的示例包括(但不限于):采纳分支的指令地址及该分支的目标(包括 关于分支的历史行为的某一信息);RIEMIT指令的指令地址及各别寄存器值;及事务中止 指令的地址及各别事务复原进入点。
[0149] 图8中所展示的收集缓冲器508的实施例能够存储多达32个输入项(S卩,关于32 个事件的信息),其中由64个位(例如,位0:63)指定每一指令地址802且由64个位(例 如,位64:127)指定事件后设数据804。收集缓冲器的大小(Rcb)为依赖模型计数,其表示记 录的数目。在图8中所展示的收集缓冲器508的实施例中,收集缓冲器的字节大小为16字 节记录大小的倍数。在实施例中,收集缓冲器的大小为大于或等于模型的最大报告群组的 计数(R1J与报告群组中的未从收集缓冲器获取的记录的计数(R1C)之间的差的记录数目。 因此,在实施例中,收集缓冲器的大小经表示为:(RrorRic)。
[0150] 在实施例中,收集缓冲器508及指令数据缓冲器(如果使用指令数据缓冲器)的 内容被清除或以其他方式受以下事件影响:(1)中断;(2)开启及关闭运行时间检测设施的 PSW位(例如,位24)从1变至0 ;及(3)当运行时间检测设施处于事务执行模式中时识别 出样本指令时(在此情况下,对收集数据缓冲器508及指令数据缓冲器的进一步更新停止 且在事务结束时继续),此时,报告群组的存储在搁置中且收集缓冲器508及指令数据缓冲 器被清除。
[0151] 在诸如图IB中所展示的模拟主机计算机系统的实施例中,收集缓冲器508使用寄 存器和/或存储器实施。在该实施例中,如果存在,则可选指令数据缓冲器也使用寄存器和 /或存储器实施。
[0152] 在实施例中,额外能力可影响数据收集,且可看作提供额外数据收集点,而不实质 上干扰先前所描述的正常指令计数或循环计数取样。这些能力包括RIEMIT指令的执行, RIEMIT指令通过将通用寄存器的值存储至收集缓冲器508中来收集该值。另外,先前所描 述的运行时间检测控制中的数据收集控制位可用以定制所收集数据的类型,例如,E、C、R及 B控制位。以此方式,所收集数据的类型是可程序化的。
[0153] 在实施例中,实施指令数据缓冲器以收集用以建构运行时间检测指令记录的依赖 模型样本指令数据。指令数据缓冲器从指令收集数据以便在该指令被识别为样本指令时使 数据可用。在实施例中,该指令数据缓冲器为处理器中的硬件缓冲器/存储位置,关于可变 为触发器以作为样本点的指令的信息是存储在该硬件缓冲器/存储位置中,使得在登出过 程期间,该信息可与来自收集缓冲器508的数据一起被写出。类似于收集缓冲器508,该指 令数据缓冲器包括指令地址及与该指令相关联的后设数据。指令数据缓冲器中的后设数据 常常为依赖机器的,且可包括(但不限于):高速缓存未命中相关的信息,及分支预测相关 的信息。
[0154] 根据实施例,所收集的其他数据可不来自于收集缓冲器508且可不来自于指令数 据缓冲器。示例包括用以形成以下各者的部分的数据:(1)报告群组的第一记录:时间戳或 开始记录;及(2)额外类型的记录,其可针对每一个报告群组而创建且因此不存储在收集 缓冲器508中,这些记录(当存在时)可放置于报告群组的额外或依赖机器部分中。这些 系统产生的记录在本文中被称为"系统信息记录"。
[0155] 图9描述了在样本点处被存储到程序缓冲器522的报告群组900的高级示例。在 记录中的报告群组的大小被表示为RKe,等于2(MB+1),其中,RGS是作为指数的报告群组大小。 当在报告群组中使用时,可以或可以不非破坏性地复制从除了收集缓冲器508之外的位置 复制的模型相关的数量的记录(Rnc)。在图9的示例中,Rffi= 8,Res= 2,并且Rnc= 4。在 图9中所示的示例报告群组900包括报头区段902、主体区段904、额外记录区段906和页 脚区段908。
[0156] 报头区段902可以包括开始记录或时间标记记录,用于存储状态、跟踪和/或定时 信息。对于在程序缓冲器中存储的第一报告群组在报头区段902中存储开始记录(即,当 RCA706等于ROA702时)。在一个实施例中,开始记录包括:记录类型字段"02";报告群 组数量(NRG)字段,用于指示在程序缓冲器中当前存储了多少报告群组;RGS字段,用于指 示报告群组的大小;停止(S)字段,用于指示程序缓冲器522是否满了;暂停(H)字段,用 于指示是否暂停了运行时间检测;以及,日时(TOD)时钟时间段,用于指示何时写入开始记 录。在一个实施例中,在开始记录中的字段的至少一个子集出自RI控制块(例如,RICCB)。 时间标记记录的一个实施例具有记录类型"03",并且包括用于指示何时存储记录的TOD时 钟字段。在一个实施例中,对于除了第一报告群组之外的每一个报告群组在报头区段902 中存储时间标记记录。
[0157] 报告群组的主体区段904可以包括用于从收集缓冲器508样本的事件和信息的多 种记录。事件和信息可以表示例如由发送指令捕获的状态信息、事务执行异常终止、调用、 返回、分支和填充。
[0158] 在一个实施例中,在成功地执行RIEMIT指令时,在收集缓冲器508中建立和存储 发送记录。发送记录的一个实施例包括:记录类型字段"10";指令地址码字段,用于指示在 发送记录中如何表示当前PSW的指令地址比特位置;指令地址字段,其根据编址模式(例 如,64、31或24比特)来变化,并且如果RIEMIT是执行类型指令的目标则包含RIEMIT指令 或执行类型指令的指令地址,以及,发送数据字段,用于存储来自由RIEMIT指令指定的一 般寄存器的数据。
[0159] 在一个实施例中,通过隐含的异常终止或通过事务异常终止指令的执行来建立和 在收集缓冲器508中存储事务执行模式异常终止记录。异常终止记录的一个实施例包括: 记录类型字段"11"、指令地址码字段,用于指示如何在事务执行异常终止记录中表示当前 PSW的指令地址比特位置;指令地址字段,其根据编址模式(例如,64、31或24比特)来变 化,并且如果异常终止指令是执行类型指令的目标则包含异常终止指令或执行类型指令的 指令地址,以及,用于与异常终止相关联的任何模型相关数据的字段。
[0160] 在一个实施例中,通过调用类型分支指令来建立调用记录,该调用类型分支指令 例如是:当R2字段非零时的BRANCHANDSAVE(分支和存储)(BASR);BRANCHANDSAVE(分 支和存储)(BAS);BRANCHRELATIVEANDSAVELONG;BRANCHRELATIVEANDSAVE;当R2 字 段是非零时的BRANCHANDLINK(BALR);BRANCHANDLINK(BAL);以及,当R2字段是非零时 的BRANCHANDSAVEANDSETMODE。调用记录的一个实施例包括:记录类型字段"12"、指令 地址码字段,用于指示如何在调用记录中表示当前PSW的指令地址比特位置;指令地址字 段,其根据编址模式(例如,64、31或24比特)来变化,并且如果分支指令是执行类型指令 的目标则包含分支指令或执行类型指令的指令地址,以及,良好作为的字段,用于指示是否 周期地预测了分支;以及,目标地址字段,其包含分支目标地址(也被称为"被调用位置")。
[0161] 返回记录和传送记录可以具有与调用记录相同的格式。在一个实施例中,返回记 录具有记录类型字段"13"并且通过诸如当R2字段非零时的BRANCHONCONDITION(BCR) 的返回类型分支指令的执行而被建立。对于返回记录,如果分支是执行类型指令的目标,则 指令地址字段包含分支指令或执行类型指令的地址,并且目标地址字段包含返回位置。
[0162] 在实施例中,传送记录具有为"14"的记录类型字段且是通过诸如以下各者 的返回类型分支指令的执行而创建:a.当R2字段为非零且掩码在1-14的范围中时, BRANCHONCONDITION(BCR) ;b.当J位为零或掩码在1-14的范围中时,BRANCHON CONDITION(BC) ;c.BRANCHON⑶UNT(BCT,BCTR,BCTG,BCTGR) ;d.BRANCHONINDEX HIGH(BXHjBXHG) ;e.BRANCHONINDEXLOWOREQUAL(BXLE,BXLEG) ;f.BRANCHRELATIVE ONCONDITION(BRC) ;g.BRANCHRELATIVEONCONDITIONLONG(BRCL) ;h.BRANCHRELATIVE ONCOUNT(BRCT,BRCTG) ;i.BRANCHRELATIVEONCOUNTHIGH(BRCTH) ;j.BRANCHRELATIVE ONINDEXHIGH(BRXH,BRXHG) ;k.BRANCHRELATIVEONINDEXLOWOREQUAL(BRXLE,BRXLG); I.COMPAREANDBRANCH(CRB,CGRB) ;m.COMPAREANDBRANCHRELATIVE(CRJ,CGRJ); n.COMPAREIMMEDIATEANDBRANCH(CIB,CGIB) ;o.COMPAREIMMEDIATEAND BRANCHRELATIVE(CIJ,CGIJ) ;p.COMPARELOGICALANDBRANCH(CLRB,CLGRB); q.COMPARELOGICALANDBRANCHRELATIVE(CLRJ,CLGRJ) ;r.COMPARELOGICAL IMMEDIATEANDBRANCH(CLIB,CLGIB);及s.COMPARELOGICALIMMEDIATEANDBRANCH RELATIVE(CLIJ,CLGIJ)。传送记录是在分支经采纳时创建。对于传送记录,指令地址字段 含有分支指令或执行类型指令(如果分支为执行类型指令的目标)的地址,且目标地址字 段含有返回位置。
[0163]当收集缓冲器508中的有效记录的数目不足以填满具有当前RGS的报告群组时, 在报告群组中使用填充记录。填充记录的实施例包括"00"的记录类型字段,以指示该记录 为填充记录,且剩余字节是未定义的。
[0164] 额外记录区段906(在存在时)可含有依赖模型记录。在实施例中,除了记录类型 经设置为"01"以指示该记录为额外记录且该额外记录的剩余字节含有依赖模型数据之外, 额外记录的格式类似于填充记录。
[0165] 页脚区段908可以包括包含关于样本指令的执行的信息的指令记录。当对于样本 指令存储报告群组时,建立指令记录。指令记录的一个实施例包括:记录类型字段"04"、指 令地址码字段,用于指示如何在指令记录中表示当前PSW的指令地址比特位置;指令地址 字段,其根据编址模式(例如,64、31或24比特)来变化,并且如果样本指令是执行类型指 令的目标则包含样本指令或执行类型指令的指令地址,以及,指令数据缓冲器(IDB)字段, 其包含从IDB收集的任何模型相关数据。
[0166] 图10描述了用于实现运行时间检测设施的一个实施例的处理流1000。处理流 1000可以被处理器106实现。处理流1000可以替代地被图IB的模拟处理器29实现。为 了容易说明,在此相对于处理器106来描述处理流1000。在块1002处,处理器106执行诸 如应用518的应用的指令流。在块1004,例如通过
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1