执行存储器引用过滤的装置、系统和方法

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

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


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