执行存储器引用过滤的技术的制作方法

文档序号:6611929阅读:170来源:国知局
专利名称:执行存储器引用过滤的技术的制作方法
技术领域
本公开涉及计算及计算机系统的领域,更具体来说,涉及检测计 算机系统中的存储器的地址、指令、数据或其它引用的领域。
背景技术
一些计算机系统运行可采用参考点(例如"仪表")注释的程序, 来跟踪计算机程序对存储器的各种引用。例如, 一些计算机程序可包 括跟踪计算机程序所存取的地址范围的仪表代码,并且某些动作可响 应于存取特定地址范围而进行。通常,在软件程序或例程中实现用于 比较程序对某个测试范围的存储器地址或值的存储器存取和/或响应 于存取特定存储器范围而执行某种功能的逻辑。
通过软件执行存储器存取比较操作可能由于例如与运行执行这 些校验所需的软件相关联的开销而限制了可监控的存储器存取的类 型、数量和频率。 一般来说,增加用于监控诸如存储器存取过滤或监 控等功能的软件程序的大小可能降低计算机系统性能,而扩大代码大 小,由此需要更大的代码存储装置以及增加的系统成本。

发明内容
本发明的一个方面,提供一种装置,包括第一逻辑,确定存储 器存取操作是否存取一个或多个存储器区域以及对其进行响应而引 起让步事件,所述让步事件响应于存取所述一个或多个存储器区域的 所述存储器存取操作而调用中断处理程序来执行一个或多个功能。
本发明的另一方面,提供一种系统,包括存储器,存储标记指 令;处理器,对于对一个或多个地址范围的存取,监控在程序命令中所述标记指令之后的指令。
本发明的另一方面,提供一种方法,包括将一个或多个场景编
程到处理器的逻辑通道中;对于笫一标记监控程序以便触发所述一个 或多个场景;响应检测到第一标记而执行所述一个或多个场景;如果 满足所述一个或多个场景,则4丸行让步事件,其中所述一个或多个场 景包括确定是否已对第一地址范围进行了存取。
本发明的另 一方面,提供一种在其上存储有指令集的机器可读介 质,所述指令集在由机器执行时,使所述机器执行包括以下步骤的方 法监控指令线程对存储器区域的存取;按照响应监控对所述存储器 区域的存取而生成的信息简表来修改所述指令线程的性能。


在附图中作为实例而不是限制来说明本发明。
图1说明监控处理器中各种事件的系统的一个实施例。
图2是流程图,说明本发明至少一个实施例的各种方面。
图3说明在其中可使用一个实施例的被管理的运行时间环境。
图4说明在其中可使用至少 一 个实施例的共享总线系统。
图5说明在其中可使用本发明至少一个实施例的点对点总线。
图6说明根据一个实施例在其中可对一个或多个场景进行编程 的多个通道。
图7是流程图,说明根据一个实施例用于使一个或多个场景能够 监控对存储器区域的存取的操作。
图8是流程图,说明在一个实施例中使用的操作。
具体实施例方式
本发明的实施例涉及计算机系统。更具体来说,本发明的至少一 个实施例涉及检测和过滤计算机系统中的存取或者与存储器存取有 关的信息的技术。
在一个实施例中,可监控由计算机程序或其它逻辑对存储器的存 取,并且对其进行响应而通过采用诸如在处理器内的电路中实现的硬 件逻辑和一个或多个软件指令的组合来执行各种操作。在一个实施例
中,硬件可编程逻辑如"通道"可用来检测各种存储器区域或各种数 据值的存取,并响应于这些检测的存取,按照在通道中编程的各种场
景(scenario)来执行功能。在一个实施例中,特定场景或场景组合 的发生可触发类似故障的让步(yield)事件,以便响应于场景的发生 而调用处理例程来执行功能。
由于用于检测和响应存储器引用或存取的发生的逻辑在硬件逻 辑中实现,因此在一个实施例中,负责存储器引用/存取的软件装载 较少开销代码,由此允许比用软件检测和处理存储器存取/引用时更 有效地并以更大性能指标来执4亍软件。此外,至少一个实施例允许可 检测的各种存储器存取和引用的数量、类型及组合方面的更灵活性。
在一个实施例中,通过在要监控的程序中包含在被执行时使场景 检测代码中其它指令的指令或其它代码,硬件定义的场景可监控软件 程序中的各种存储器存取。例如,在一个实施例中,可在程序命令中, 在要存取存储器区域的指令或指令组之前插入诸如"标记"指令之类 的指令。在由运行程序的处理器遇到或执行该标记之后,该处理器或 其它处理器中对应的通道或多个通道可对在程序命令中在该标记之 后执行的指令中包含的或者与其关联的数据、地址或其它信息执行各 种比较操作。此外,如果在程序命令中在标记之后的指令的执行满足 已经编程到通道中的条件,则该条件可触发类似故障的让步事件,使 得处理程序可对其进行响应而4丸行某种功能。
在一个实施例中,对线性或物理地址范围的存取可由在程序命令 中由使一个或多个通道检测该存取并对其进行响应而执行某种功能 的标记领先的指令或指令组来存取。在其它实施例中,可由响应于检 测到在程序命令中在负责存储^t据或数据范围的指令之前的一个或 多个标记而执行一个或多个场景的一个或多个通道,来检测存储到线
性或物理存储器地址的数据或H据范围。此外,在一个实施例中,可 由响应于检测到在程序命令中在负责执行分支预测操作的指令之前
的一个或多个标记而执行一个或多个场景的一个或多个通道,来检测 转移到分支目标或分支目标范围的控制。在其它实施例中,可通过编 程通道以响应于;f企测到程序中的标记而执行某些场景,来4企测其它存 储器引用或存取。此外,可通过组合由通道执行的场景,来在一个或 多个通道中检测存储器引用或存取(例如与存储器存取对应的数据或 地址)的一个或多个组合。
在一个实施例中,区域过滤4支术可用来允许程序线程或其它指令 序列利用诸如"堆"之类的全局存储器区域,而不是在其中当在栈外 向程序公布指向数据的指针时可容易地改写数据的诸如"栈"之类的 较临时存储区。更具体来说,在一个实施例中,可将堆的一部分("初 级部分(kindergarten)")具体分配给一个或多个程序线程,而不管是 否向其它程序或线程公布指向初级部分的指针,因为保持指向堆的指 针("垃圾收集")的现有技术可能仅对于有权存取初级部分的那些线 程才适用于初级部分。在一个实施例中,存储器存取过滤技术可使线 程能够采用堆初级部分而不是栈来存储和存取信息,使得线程或多个 线程可避免栈的临时性质,而没有引起与整个堆相关联的垃圾收集开 销。
图l说明根据一个实施例可监控执行资源的条件的系统。在图1 的实施例中,执行资源105、监控器110和启动逻辑120组成能够执 行指令的处理器IOO的一部分。在一些实施例中,执行资源可包括可 集成到单个組件或集成电路中的硬件资源。但是,执行资源可包括也 可用于执行程序指令的软件或固件资源,或者硬件和软件和/或固件 的任何组合。例如,固件可用作抽象层的一部分,或者可像软件那样 对处理硬件添加功能。软件还可用来模拟指令集的部分或全部,或者 另外帮助进行处理。
处理器可以是执行指令的各种不同类型处理器中的任一种。例如,处理器可以是简化指令集计算(RISC)处理器、复杂指令集计算 (CISC)处理器、超长指令字(VLIW)处理器,或者任何混合或备选处理 器类型。此外,诸如网络或通信处理器、协处理器、嵌入式处理器、 压缩引擎、图形处理器等专用处理器可采用已公开的技术。随着集成 趋势继续发展以及处理器变得更为复杂,对内部性能指标的监控和反 应的需要可能进一步增加,因而使本公开技术更合乎需要。然而,由 于在这个技术领域迅速的技术进步,难以预知所公开技术的所有应 用,但是它们对于执行程序序列的复杂硬件是普及的。
如图1所示,处理器100耦合到存储介质150,如存储器。存储 介质150可以是具有分级结构各级的存储器子系统,其中可包括但不 限于高速緩冲存储器的各级,诸如动态随机存取存储器等系统存储器 以及诸如闪速存储器(例如记忆棒等)、磁盘或光盘之类的非易失性存 储装置。如图所示,存储介质存储程序160和处理程序和/或其它线 程指令,如服务线程170的指令。此外,存储器可存储被管理的运行 时间环境155,在其中可响应于监控执行资源中的各种事件而开发和 优化程序线程或多个线程。
为了允许监控器IIO监控预期事件,监控器110可耦合到4丸行资 源的各个部分,以便检测特定条件或者被通知某些微体系结构事件。 信号线可路由到监控器110,或者监控器可在战略上与相关资源^:在 一起或者与其集成。监控器110可包括各种可编程逻辑或软件或者固 件元件。对于至少一个实施例,监控器IIO可编程为监控与可用来触 发让步事件的在体系结构上定义的事件组合或"场景"相关联的一个 或多个体系结构或微体系结构事件。
在一个实施例中,编程为实现场景的逻辑包含在硬件通道中,可 单独或结合用于构成更详细阐述的场景。在一个实施例中,场景可用 软件指令或指令组来编程。此外,在一个实施例中,通过执行通道读 指令来执行多个通道中存储的多个互相关场景,通道可在逻辑上与另 一个通道相关。或者,监控器IIO可经过硬连线,以检测与某个场景
关联的特定条件或条件组。
相应地,图1所示的系统可支持一个或多个体系结构事件或"让 步事件"。让步事件将所述执行乂人当前运行指令流转移到通道的让步 事件服务例程。通道的服务例程属于当前运行指令流的相同进程/上 下文。当与通道相关联的场景触发时,发信号通知让步事件。
监控器110跟踪各种事件或条件,并且如果它被编程为检测的事
件或条件发生,则发信号通知^丸行资源105,以便中断程序原本要进 行的常规控制流程。如图l所示,中断可导致调用事件处理程序或者 发生线程切换。对于至少一个备选实施例,如果监控器110所监控的 事件或条件发生,则不一定触发程序的常规控制流程的中断。而是, 一组体系结构状态存储元件如通道1300的一个或多个可用来指示在 监控器110检测到某个场景的所有条件时是否应发生让步事件。也就 是说,通道可经过编程,使得在检测到一个场景时会发生让步事件。 没有通道中的这种指示,场景的满足即使检测到了可能也不会引起让 步事件。
在一个实施例中,图1所示处理器100包括一组通道1300。各 个通道可指定触发场景。响应场景的触发,让步事件处理程序可记录 触发事件的发生,并通过调用服务例程如图1所示的通道服务处理程 序185进行响应。让步事件处理程序可以是硬件、固件或软件机构。
在一个实施例中, 一个或多个场景可编程到一个或多个通道中, 以便在由运行在处理器上的程序中的操作存取存储器区域(例如在高 速緩存中或者在系统存储器中)的情况下,生成类似故障的让步。例 如,在一个实施例中,场景可定义成根据存取的线性或物理地址来测 试对存储器第一区域的存取。作为补充或替代,在一个实施例中,场 景可定义成测试在第二地址范围中存储的数据。在又一个实施例中, 可测试要存储在存储器中或者从存储器中存取的数据范围,并对其进 行响应而触发让步事件。可以是低进度指标的其它可检测事件可涉及 执行资源的各种其它微体系结构或结构细节。
图1说明存储介质150还可包括操作系统(OS)180以及通道服务 处理程序机构185。对于至少一个实施例,操作系统180可最低限度 地涉及本文所述的用户级线程监控和优化技术。例如,OS 180可涉 及在让步事件处理期间保存和恢复上下文。因此操作系统180可提供 上下文管理服务。通道状态可以是OS 180管理的上下文的一部分。
但是,对于至少一个实施例,OS 180没有涉及传递让步事件。 对于这种实施例,编程场景(即已经编程到通道中以便触发让步事件 的事件组合)的满足触发在硬件或固件中经由让步事件处理程序传递 的让步事件。对于至少一个实施例,例如,触发场景满足的指令可经 由硬件来加标签。这种标签可经过处理,以便传递让步事件。这种处 理例如可通过执行资源105的石更件或固件诸如微码ROM指令进行。 实现让步事件的控制转移的该;更件或固件机构有时称作"让步事件处 理器"。
控制可经由让步事件处理程序转移到通道服务处理程序185。这 样,体系结构上定义的场景的处理可通过用户级代码直接执行,而具 有OS 180的最小限度干预。对于这样一种实施例,场景条件检测和 让步事件传递(包括控制转移)对OS 180是透明的。
但是,对于至少一个其它实施例,场景的满足可触发在内部生成 的软件中断,而不是如上所述触发硬件传递的让步事件。对于这种实 施例,操作系统180可在发生让步事件软件中断时调用通道服务处理 程序185。
不管让步事件是如何传递的(硬件与软件),让步事件都可通过用 户级代码来处理。也就是说,在^f壬一种方式下,控制都可被转移到通 道服务处理程序185,处理程序185实际上可响应于^r测到触发条件 而将控制转移给用户定义的服务线程或处理程序。这种控制转移中断 了在发生让步事件时执行的当前指令流的执行。在一个实施例中,用 户定义的服务线程或处理程序可包括优化使场景被触发的线程的例 程。此外,在一个实施例中,用户定义的服务线程或处理程序可用来优化引起被管理的运行时间环境中的场景触发的用户级程序,使得优 化可以实时进行。
在满足场景的情况下,在至少一个实施例中,可执行若干功能中 的一个或多个,包括设置一个或多个标志以指示各种状态和/或生成 让步事件。例如,为了响应于触发在其中监控对数据范围或地址区域 的存取的第一场景而调用另一个场景,可采用某个标志,如"进位标
志"。在一个实施例中, 一个或多个通道可编程为1)设置进位标志 但不引起让步事件,或者2)设置进位标志并引起让步事件。
此外,在一个实施例中,其它标志可用来表示作为执行另一种类 型场景的结果而采取的其它动作。例如,为了响应于触发在其中已经 存取了指令指针范围的第一场景而调用另一个场景,可采用某个标 志,如"零标志"。在一个实施例中, 一个或多个通道可编程为1)设 置零标志但不引起让步事件,或者2)设置零标志并引起让步事件。 类似地,为了响应于触发在其中已经存取了分支目标地址的第一场景 而调用另一个场景,可设置某个标志,如"溢出标志"。例如,在一 个实施例中, 一个或多个通道可编程为1)设置溢出标志但不引起 让步事件,或者2)设置溢出标志并引起让步事件。
在一个实施例中,标志可实现为通道逻辑中的或者另外与通道逻 辑相关联的位存储区。此外,通过将与各场景相关联的通道编程为在 发生对应事件之后设置适当的标志,任何数量的场景都可在逻辑上一 起配置成实现组合逻辑功能。场景可编程为监控其它场景的标志,以 便以适当的顺序来调用场景。
图6说明根据一个实施例用通过标志一起链接的不同场景来编 程的两个通道。在图6中,通道601执行第一场景,并响应那个场景 的发生而设置进位标志605,它由在通道610中编程的第二场景来监 控。结果是其输出为第一和第二场景的功能的复合场景。在一个实施 例中,在执行第二场景之后,由让步标志620发信号通知让步事件。 处理程序可响应于让步标志被设置而执行,它根据发生的两种场景的组合来执行某种功能。
在一个实施例中,程序可包含标记指令,以指示在程序中特定场 景将测试特定存储器存取如读或写操作的那点。在一个实施例中,标 记是执行正是指示在程序命令中用场景编程的通道将开始监控后续 操作或指令的那点的功能的指令。在其它实施例中,标记可包含除了 指示程序开始由场景监控的位置之外还执行的其它功能。在一些实施 例中,标记可包含在由场景监控的相同的一个或多个指令中。
在一个实施例中,标记指令可具有以下格式"MODr/m",其中 "MOD"表示来自源地址的修改操作,"r/m"(寄存器/存储器地址) 例如由3字节操作码来表示。在这个实例中,标记没有包含目的地址 字段。但是,在其它实施例中,标记可包含目的地址字段,或者具有 其它格式。标记的格式(例如操作码等)可至少部分取决于它所属的特 定指令集体系结构。例如,操作数可来自存储器或者寄存器,如用
MODr/m格式所指定的。
下面说明根据本发明的 一个实施例^^行可被监控的存储器存取 的一系列指令
Sentinel <mode>
Mov <dest>, <src>
在以上代码序列中,标记指令之后是存储器存取指令。在一个实 施例中,标记向编程到处理器内通道中的场景指示,对于对第一存储 器地址或地址范围以及与随后指令相关联的数据的存取,监控存储器 存取指令。在其它实施例中,为了其它原因可监控随后指令,例如检 测是否由随后指令将数据范围存储到存储器。
如果存储器存取指令满足编程到通道或多个通道的条件,则类似 故障的让步可能发生,它响应让步事件而调用处理例程来执行某些操 作。由处理程序执行的操作可能有所不同。例如,在一个实施例中, 处理程序通知用户已经对某个地址范围进行了存取。在其它实施例 中,处理程序可响应让步事件而4丸行其它简表建立(profiling)或用
户代码修改,在本公开中稍后论述其中的一部分。许多场景可编程到 通道中,以便设置让步事件的触发条件。此外,在一些实施例中,一 个或多个场景可编程到在逻辑上链接在一起的一个或多个通道中,以 便检测更复杂的场景。
在一个实施例中,执行初始化过程,其中处理硬件中的一个或多
个通道编程为;f企测某种场景,其中如果^r测到第一标记,则将随后存 储器存取操作如存储指令的目标地址与地址范围进行比较。在一个实 施例中,如果存储指令的目标地址在某个地址范围内,则可设置硬件 标志或其它指示符,以便通知另一个场景来监控另一个条件的发生, 例如与存储指令对应的特定数据范围。在这个实例中,第一场景不会 引起让步事件,而只是设置标志或其它指示符,且代码序列将继续。 在一个实施例中,第二场景可初始化为检测第一场景的发生(如 上所述),然后检测与第一场景中所检测的指令对应的数据值的范围 (例如与在数据值的某个范围内的存储指令对应的数据)。
在一个实施 例中,如果满足第二场景,则让步事件可发生,在其中响应于满足的 两个场景而调用处理程序来执4亍某些操作。在上述实例中,第一场景 初始化为检测在地址范围内的存储指令的目标地址,以及对其响应而 设置标志,第二场景初始化为监控,以便确定与存储指令对应的存储 数据是否在值的某个范围内或者等于特定值,在这种情况中,将发生 调用处理程序的类似故障的让步。在其它实施例中,其它场景可初始 化为检测与 一 系列或具体存储位置对应的存储器存取操作如存储器 装入操作的其它发生。这样,至少一个实施例可用来执行存储器区域 过滤。
图2是流程图,说明与本发明至少一个实施例对应的操作。在操 作201,监控第一标记的发生。如果没有检测到第一标记,则程序操 作继续进行。如果检测到第一标记,则在操作205,确定随后存储器 存取操作是否对应于所关注的存储位置或存储位置范围。如果是,则 在操作210,设置标志以指示第一场景的满足。在一个实施例中,随后存储器存取操作可以是具有所关注的目标地址或某个目标地址范 围的存储指令。在其它实施例中,随后存储器存取操作可以是与某个 装入地址或装入地址范围对应的装入指令。如杲检测到第一标记,且 如果从第一场景设置了该标志,并且与存储器存取操作对应的数据等
于某个值,或者落在数据值的某个范围内,且如果在操作215没有取 决于前一场景结果的其它场景,则在操作220发生类似故障的让步, 并在操作225调用处理程序。如果没有从第一场景设置标志,或者如 果与存储器存取对应的数据值不属于某个值或范围,则没有发生让步 事件,并且程序操作继续进行。
本文所述的实施例可适用于各种存储器存取,包括由装入或存储 操作对存储器进行的存取、由指向存储器各种区域的指令指针进行的 存取、以及对与代码分支目标对应的存储器区域的存取等。此外,至 少一个实施例可用来过滤由指令、指令指针或分支目标所存取的地址 和/或数据值范围。
如果在上述实例中发生类似故障的让步,则可调用处理程序来执 行任何数量的操作。例如,在一个实施例中,可响应于上述场景被满 足而执行各种简表建立操作,使得可实时修改引起让步事件的程序。 在一个实施例中,响应于一个或多个存储器存取操作的发生的一个或 多个场景的满足可调用程序来防止各种存储区由未预期存取该存储 区的程序或指令存取。
例如,在一个实施例中,以上所述的存储器区域过滤技术可用来 检测软件程序线程何时尝试存取在其堆初级部分、栈或其它存储区中 没有分配的对象,并且防止发生将来的存取。此外,如果指针可能不 是在栈外公布的,则一个实施例允许在栈上推测地分配对象。这可节 省高速緩存颠簸,同时节省栈存取时间。或者,在一个实施例中,允 许对象被存储在线程特定的堆初级部分,使得可保持指向初级部分的 指针,并且对初级部分执行垃圾收集,而不考虑在线程的堆的其它区 域中执行垃圾收集。此外,例如,如果对与特定线程或多个线程对应的初级部分进行存取,则至少一个实施例可触发场景来处理事件,从 而导致类似故障的让步。
在一个实施例中,标记指令可检测对存储器的存取,然后触发一 个可定义将引起类似故障让步的一个或多个触发事件的场景。在至少 一个实施例中,场景实际上可包括在逻辑上按照某种触发功能连接以 形成复合场景的多个场景。但是在其它实施例中,在一个或多个场景 中定义的一个或多个触发事件可在标记指令或在逻辑上链接在一起 的标记指令组合中定义,使得减少标记(或复合标记)触发的场景数。
在一些实施例中,除了仅对存储器区域存取之外,标记指令还可 用来定义其它参数。例如,在一个实施例中, 一个标记可控制在其中由另一个标记监控对存储器区域的存取的时间窗。例如,第一标记可设置向另一个标记指示它将开始监控对存储器区域的存取的标志。第一标记稍后可清除该标志,以向另一个标记指示停止监控对存储器区域的存取。
在一些实施例中,作为对存储器区域的补充或替代,标记还可定义要监控的输入/输出(I/0)范围。在一个实施例中,按照地址范围来监控1/0,而在其它实施例中,标记可按照各对应于不同I/O的位的某种组合(例如"位图")来监控对I/0范围的存取。
有利的是,本发明的一个或多个实施例可允许用户程序,例如在操作系统中运行的软件应用程序对处理器资源的存取,至少抽象地在传统上根据特权级仅对os核心可用的方式进行。例如,在一个实施例中,用户程序可采用标记来监控对某个区域的存储器存取,并且对其进行响应而执行影响高特权处理资源诸如一种处理体系结构中的"环0"上的特权资源的动作。其它处理体系结构可定义资源特权的不同等级,并且可利用实施例来禁止或允许用户程序存取这些资源。
在其中的数据可在并发线程之间共享的某些应用中,必须增加代码和附加数据结构,以便增强对数据对象的互斥存取,使得一次只有一个线程存取给定的数据对象。这些锁定机构产生性能开销。本文所
述的技术允许数据对象分组成仅由一个线程存取的存储器区域,并且 它们监控从其它线程的存取,以便确保互斥。
在一个实施例中,可按照本文所述的技术来过滤存储器区域,以 便阻止对受保护或"未锁定"数据的存取。例如,可为特定线程指定 存储器中存储的某些数据,而其它数据可由多个不同的线程使用。相应地,本发明的至少 一个实施例可^r测对仅为特定线程而分配的数据 的存取,并阻止由未授权的线程对该"锁定"数据的存取。相反,本 发明的实施例可允许多个线程存取可能不是特定线程独占的或者"未 锁定"的数据。在这个实例中,当对象存储在指定为"线程局部"存 储空间的存储空间中时,可允许线程使用代码的无锁定形式,而在某 些环境下,仅可允许线程使用代码的锁定形式来存取另一个存储空间 中的数据。
本发明的实施例也可用于其它应用。例如在安全领域,至少一个 实施例可用来监控存储器存取,并调用处理程序来允许用户实时在软 件中调节各种安全参数。具体来说,至少一个实施例可用来防止置信
的或机械检验的代码被相同进程中的流氓代理修改,防止专用数据结 构是相同进程中的未授权代理可见的,防止数据结构被相同进程中的 未授权代理修改,或者使授权代码能够存取受保护的结构,而无需任 何性能开销。
在一个实施例中,对诸如各种编程语言认可的那些代码对象的存 取可被监控和检测,特别是在存取尝试对于存取所对应的外部的堆或 栈装入或存储数据时。例如,第一通道可用确定对象装入的地址(x) 是否既不在分配给对象装入的全局堆范围(rl)内也不在分配给对象装 入的线程特定的堆范围(r2)内的场景来编程。为了触发场景以检查对 象装入的地址,可在程序命令中在对象装入之前使用第一标记指令。
在对象存储操作的情况中,第二标记可用来触发编程到第二通道 中的场景,以确定对象存储的地址(y)是否不对应于r2,但对象存储 的数据(z)仍存储到r2。如果是,则可假定对象存储正尝试在它所对应的局部堆之外公布数据。
图7说明根据一个实施例的流程图。如图7所示,在操作700, 对要监控的条件进行编程。在4喿作705,可执行程序指令。在操作 710,可对事件监控度量或微体系结构条件。如图7所示,如果没有 触发发生,则方法可在操作705重新开始。否则,在操作715(例如, 如果触发了),可中断处理以调节引起所检测条件的处理。而且,在 操作715,控制流程可转移到不同的程序部分。
图8是流程图,说明在一个实施例中使用的操作,其中监控对象 装入和对象存储,以确定它们是否已经尝试存取其对应软件堆外部的 存储器区域。在操作801,如果检测到第一标记,则在操作805,第 一场景测试随后对象装入的地址(x)是否既不在分配给对象装入的全 局堆范围(rl)内,也不在线程特定的堆范围(r2)内。如果是,则在操作 810,可发生让步事件,以调用处理程序来重新发布和/或取消对象装 入。如果不是,则在操作815,确定是否检测到第二标记,如果是, 则在操作820,确定对象存储的地址(y)是否不对应于r2,但对象存储 的数据(z)仍存储到r2。如果是,则在操作825,发生让步事件,以便 调用处理程序来重新发布和/或取消对象存储。
除了可用于被管理的运行时间环境的以上所述应用之外,本发明 的实施例还可用于与被管理的运行时间环境无关的其它方式。例如, 在一个实施例中,以上所述的存储器区域过滤技术可用来检测和恢复 对线程特定对象的存取,或者用来实现存储器区域或多种类型存储器 之间的相干协议。许多其它应用可利用本文所述的实施例。
图3说明根据一个实施例监控处理资源中发生的事件以及采用 所监控事件来改进或优化在体系结构中运行的用户级软件程序的系 统。具体来说,图3说明在其中可开发用户级软件程序如应用程序的 被管理的运行时间环境301。在其它实施例中,环境301可以是未管 理的运行时间环境。在一个实施例中,由CPU 320执行软件程序, CPU 320可包括多个处理资源,例如多核处理器和/或多个处理器。通道315可经由简表建立应用编程接口 (API) 310编程为监控在才企测 CPU的某些性能特性如代码热点时有用的事件和场景。可由逻辑或 软件307通过解释编程到通道中的事件和场景的结果来^r测性能特 性如代码热点。此外,还可由纟企测代码/逻辑307来解释编程到通道 中的让步动作,以及对其进行响应而调用适当的处理程序。
由检测逻辑/代码307解释和检测的性能信息可由简表生成代码 或逻辑303用来生成所监控特性的简表,其然后可由简表方法生成代 码或逻辑305转换成特定动作或方法,以便改进或优化被管理的运行 时间环境中的用户的代码如应用程序。此外,在一个实施例中,可实 时地并按线程进行对用户代码的改进,而具有极少或者没有由图3的 性能监控体系结构所施加的检测开销。在其它实施例中,其它级或功 能单元可用来生成检测CPU中的性能信息以及对其进行响应而优化 用户的代码所需的信息。
图4说明在其中可使用本发明一个实施例的前端总线(FSB)计算 机系统。处理器405从一级(L1)高速緩冲存储器410和主存储器415 中存取数据。在本发明的其它实施例中,高速緩冲存储器可以是二级 (L2)高速緩存,或者是计算机系统存储器分级结构中的其它存储器。 此外,在一些实施例中,图4的计算机系统可包含L1高速緩存以及 L2高速緩存。
图4的处理器中所示的是才儿器状态的存储区406。在一个实施例 中,存储区可以是一组寄存器,而在其它实施例中,存储区可以是其 它存储器结构。图4中还示出的是根据一个实施例用于保存区段的存 储区407。在其它实施例中,保存区段可位于其它装置或存储器结构 中。处理器可具有任何数量的处理核。但是,本发明的其它实施例可 在系统内的其它装置如独立的总线代理中实现,或者通过硬件、软件 或它们的某种组合分布于整个系统。
主存储器可通过各种存储源来实现,例如动态随机存取存储器 (DRAM)、硬盘驱动器(HDD) 420或者经由网络接口 430远离计算机
系统定位的包含各种存储装置和技术的存储源。高速緩冲存储器可定位在处理器内或者在处理器附近,例如在处理器的局部总线407上。
此外,高速緩冲存储器可包含较快的存储单元如六晶体管(6T)单 元,或者近似相等或更快存取速度的其它存储单元。图4的计算机系 统可以是例如微处理器等总线代理的点对点(PtP)网络,它们经由专用 于PtP网络上的各代理的总线信号进行通信。图5说明以点对点(PtP) 配置来设置的计算机系统。具体来说,图5说明其中处理器、存储器 和输入/输出装置通过多个点对点接口互连的系统。
图5的系统还可包括若干处理器,为了简洁起见仅示出其中两个 处理器570、 580。处理器570、 580各可包括与存储器22、 24连接 的局部存储器控制器集线器(MCH)572、 582。处理器570、 580可采 用PtP接口电路578、 588经由点对点(PtP)接口 550来交换数据。处 理器570、 580各可采用点对点接口电路576、 594、 586、 598经由各 个PtP接口 552、 554与芯片组590交换数据。芯片组590还可经由 高性能图形接口 53 9与高性能图形电路53 8交换数据。本发明的实施 例可设置在具有任何数量的处理核的任何处理器中,或者设置在图5 的PtP总线代理的每个中。
但是,本发明的其它实施例可存在于图5系统内的其它电路、逻 辑单元或装置中。此外,本发明的其它实施例可分布于图5所示的若 干电路、逻辑单元或装置上。可在从创建到模拟到制造的各种阶段中进行设计。表示设计的数据可 通过多种方式来表示设计。首先,如在模拟中可用的那样,硬件可采 用硬件描述语言或者另一种功能描述语言来表示。作为补充或替代, 采用逻辑和/或晶体管门的电路级模型可在设计过程的某些阶段产 生。此外,在某个阶段,大部分设计达到在其中它们可用表示各种装 置的物理布局的数据来建模的级别。在使用传统半导体制造技术的情 况中,表示装置布局模型的数据可以是指定在用于生产集成电路的掩
模的不同掩模层上的各种特征存在还是不存在的数据。
在设计的任何表示中,数椐可存储在任何形式的机器可读介质 中。经调制或者另外生成以便传送这种信息的光波或电波、存储器或 者磁或光存储介质诸如盘可以是机器可读介质。这些介质中的任一个 可"携带"或"指示"该设计,或者在本发明的实施例中使用的其它 信息,如差错恢复例程中的指令。当传送指示或携带信息的电载波以 便执行电信号的复制、緩沖或重传时,制作新的副本。因此,通信提 供商或网络提供商的动作可以是制作实施本发明技术的制品诸如载 波的副本。
因此,公开了用于操纵存储器存取如装入或存储的技术。虽然在 描述了并在附图中示出了某些实施例,但要理解,这些实施例只是对 广泛发明的说明而不是限制,以及本发明不限于所示及所述的具体构 造和配置,因为本领域的技术人员在研究本公开之后可想到其它各种 修改。在其中增长迅速并且不易预见其它进步的例如这样的技术领域 中,通过实现技术进步进行促进,所公开的实施例在配置和细节上可 易于修改,而不背离本公开的原理或所附权利要求书的范围。
本发明的 一个或多个实施例的各方面可在可使用本发明 一个或 多个实施例的处理器或计算机系统的广告中描述、论述或引用。这类 广告可包括但不限于新闻纸、杂志、广告牌或其它报纸或有形媒体。 具体来说,本发明一个或多个实施例的各种方面可经由网站、"弹出"
广告或其它基于WEB的媒体在互联网上做广告,而不管包含生成网 站或弹出广告的程序的服务器是位于美国还是其领土。
权利要求
1.一种装置,包括第一逻辑,确定存储器存取操作是否存取一个或多个存储器区域以及对其进行响应而引起让步事件,所述让步事件响应于存取所述一个或多个存储器区域的所述存储器存取操作而调用中断处理程序来执行一个或多个功能。
2. 如权利要求1所述的装置,其中所述存储器存取操作在程序命 令中由标记指令领先。
3. 如权.利要求2所述的装置,其中所述标记指令向第一逻辑指示 对于存取所述一个或多个存储器区域的所述操作监控在程序命令中 所述标记之后的指令。
4. 如权利要求3所述的装置,其中所述标记指令包括没有对应的 装入目的地址的装入操作。
5. 如权利要求1所述的装置,还包括确定与所述存储器存取操作 对应的数据是否在值的范围内的第二逻辑。
6. 如权利要求5所述的装置,其中第一逻辑设置一个标志,以向 第二逻辑指示第二逻辑是否确定与所述存储器存取操作对应的所述 数据是否在值的范围内。
7. 如权利要求6所述的装置,其中所述让步事件包括类似故障的 让步操作。
8. 如权利要求7所述的装置,其中第一和第二逻辑包括一个或多 个可编程通道,以响应检测到标记指令而执行一个或多个场景。
9. 一种系统,包括存储器,存储标记指令;处理器,对于对一个或多个地址范围的存取,监控在程序 命令中所述标记指令之后的指令。
10. 如权利要求9所述的系统,其中所述存取包括存储器装入或 存储地址。
11. 如权利要求9所述的系统,其中所述存取包括指向栈的指令 指针。
12. 如权利要求9所述的系统,其中所述存取包括分支目标地址。
13. 如权利要求10所述的系统,其中所述处理器对于数据范围 内的数据监控对所述一个或多个地址范围的存取。
14. 如权利要求13所述的系统,其中所述处理器包括用多个场 景编程以监控对所述一个或多个地址范围的存取的多个通道。
15. 如权利要求14所述的系统,其中所迷处理器包括与所述多 个场景对应以指示对所述一个或多个地址范围的存取是否引起让步 事件的多个标志存储区。
16. 如权利要求15所述的系统,其中所述多个标志存储区包括 从所述多个场景的第一场景向所述多个场景的第二场景指示第二场 景是否监控对所述一个或多个地址范围的存取的标志。
17. 如权利要求9所述的系统,其中所述一个或多个地址范围包 括一个或多个线性地址范围。
18. —种方法,包括将一个或多个场景编程到处理器的逻辑通道中;对于第一标记监控程序以^更触发所述一个或多个场景; 响应检测到第一标记而执行所述一个或多个场景; 如果满足所述一个或多个场景,则执行让步事件, 其中所述一个或多个场景包括确定是否已对第 一地址范围进行 了存取。
19. 如权利要求18所述的方法,其中所述让步事件使处理例程 被调用。
20. 如权利要求19所述的方法,其中所述处理例程使软件程序 被修改。
21. 如权利要求19所述的方法,其中所述处理例程使软件程序 的简表被生成,所述简表指示所述软件程序的各种性能方面。
22. 如权利要求21所述的方法,其中所述软件程序运行在被管 理的运行时间环境中。
23. 如权利要求19所述的方法,其中所述处理例程阻止第一线 程存取分配给第二线程的存储器区域。
24. 如权利要求23所述的方法,其中所述存储器区域包括软件栈。
25. 如权利要求23所述的方法,其中所述存储器区域包括软件堆。
26. —种在其上存储有指令集的机器可读介质,所述指令集在由 机器执行时,使所述机器执行包括以下步骤的方法监控指令线程对存储器区域的存取;按照响应监控对所述存储器区域的存取而生成的信息简表来修 改所述指令线程的性能。
27. 如权利要求26所述的才几器可读介质,其中所述监控包括执 行多个场景。
28. 如权利要求27所述的机器可读介质,其中仅当执行所述指 令线程中的标记指令时,才执行所述多个场景。
29. 如权利要求28所述的机器可读介质,还包括在其中修改所 述指令线程的被管理的运行时间环境。
30. 如权利要求28所述的坤几器可读介质,还包括通过其与处理 资源通信的应用程序接口 (API)。
全文摘要
公开一种执行存储器引用过滤的技术。一种过滤存储器区域的技术。更具体来说,本发明的至少一个实施例涉及检测和过滤计算机系统中的存取或者与存储器存取有关的信息的技术。本发明提供一种装置,包括第一逻辑,确定存储器存取操作是否存取一个或多个存储器区域以及对其进行响应而引起让步事件,该让步事件响应于存取一个或多个存储器区域的存储器存取操作而调用中断处理程序来执行一个或多个功能。
文档编号G06F9/48GK101174223SQ200710146938
公开日2008年5月7日 申请日期2007年8月21日 优先权日2006年8月21日
发明者C·J·纽博恩, K·希夫 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1