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

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

Info

Publication number
CN102393823A
CN102393823A CN2011101705665A CN201110170566A CN102393823A CN 102393823 A CN102393823 A CN 102393823A CN 2011101705665 A CN2011101705665 A CN 2011101705665A CN 201110170566 A CN201110170566 A CN 201110170566A CN 102393823 A CN102393823 A CN 102393823A
Authority
CN
China
Prior art keywords
access
scene
memory
instruction
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011101705665A
Other languages
English (en)
Other versions
CN102393823B (zh
Inventor
C·J·纽博恩
K·希夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102393823A publication Critical patent/CN102393823A/zh
Application granted granted Critical
Publication of CN102393823B publication Critical patent/CN102393823B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供执行存储器引用过滤的装置、系统和方法,其中执行存储器引用过滤的装置,包括第一硬件逻辑以及标志存储区,其中第一硬件逻辑被配置为:响应于在执行软件程序期间检测到预定指令而监控在程序命令中预定指令之后的指令;确定对应于在预定指令之后的指令的存储器存取操作是否要存取未被分配给对应于软件程序的线程的一个或多个存储器区域;如果是,则引起事件以调用中断处理程序来阻止对应于软件程序的线程存取一个或多个预定存储器区域,以及其中,如果不是,则软件程序的操作继续;以及其中标志存储区保存标志以将第一场景链接到第二场景,其中,在发生第一场景时,设置标志,标志由第二场景监控以产生复合场景。

Description

执行存储器引用过滤的装置、系统和方法
本申请是申请号为200710146938.4、申请日为2007年8月21日、发明名称为“执行存储器引用过滤的技术”的发明专利申请的分案申请。
技术领域
本公开涉及计算及计算机系统的领域,更具体来说,涉及检测计算机系统中的存储器的地址、指令、数据或其它引用的领域。
背景技术
一些计算机系统运行可采用参考点(例如“仪表”)注释的程序,来跟踪计算机程序对存储器的各种引用。例如,一些计算机程序可包括跟踪计算机程序所存取的地址范围的仪表代码,并且某些动作可响应于存取特定地址范围而进行。通常,在软件程序或例程中实现用于比较程序对某个测试范围的存储器地址或值的存储器存取和/或响应于存取特定存储器范围而执行某种功能的逻辑。
通过软件执行存储器存取比较操作可能由于例如与运行执行这些校验所需的软件相关联的开销而限制了可监控的存储器存取的类型、数量和频率。一般来说,增加用于监控诸如存储器存取过滤或监控等功能的软件程序的大小可能降低计算机系统性能,而扩大代码大小,由此需要更大的代码存储装置以及增加的系统成本。
发明内容
本发明提供一种执行存储器引用过滤的装置,包括第一硬件逻辑以及标志存储区,其中所述第一硬件逻辑被配置为:响应于在执行软件程序期间检测到预定指令而监控在程序命令中所述预定指令之后的指令;确定对应于在所述预定指令之后的所述指令的存储器存取操作是否要存取未被分配给对应于所述软件程序的线程的一个或多个存储器区域;如果所述存储器存取操作是要存取未被分配给对应于所述软件程序的所述线程的所述一个或多个预定存储器区域,则引起事件以调用中断处理程序来阻止对应于所述软件程序的所述线程存取所述一个或多个预定存储器区域,以及其中,如果所述存储器存取操作是要存取被分配给对应于所述软件程序的所述线程的存储器区域,则所述软件程序的操作继续;以及其中所述标志存储区保存标志以将第一场景链接到第二场景,其中,在发生所述第一场景时,设置所述标志,所述标志由所述第二场景监控以产生复合场景。
本发明还提供一种执行存储器引用过滤的系统,包括存储器、第一硬件逻辑以及标志存储区,其中所述存储器存储预定指令;所述第一硬件逻辑,被配置为:响应于在执行软件程序期间检测到预定指令而监控在程序命令中所述预定指令之后的指令;确定对应于在所述预定指令之后的所述指令的存储器存取操作是否要存取未被分配给对应于所述软件程序的线程的一个或多个存储器区域;如果所述存储器存取操作是要存取未被分配给对应于所述软件程序的所述线程的所述一个或多个预定存储器区域,则引起事件以调用中断处理程序来阻止对应于所述软件程序的所述线程存取所述一个或多个预定存储器区域,以及其中,如果所述存储器存取操作是要存取被分配给对应于所述软件程序的所述线程的存储器区域,则所述软件程序的操作继续;以及其中所述标志存储区保存标志以将第一场景链接到第二场景,其中,在发生所述第一场景时,设置所述标志,所述标志由所述第二场景监控以产生复合场景。
本发明又提供一种执行存储器引用过滤的方法,包括:从线程中检测标记指令;响应于从所述线程中检测到所述标记指令,确定来自程序的随后的存储器存取操作是否对应于所关注的存储器位置;设置第一标志以指示第一场景的满足;利用第二场景监控所述第一标志的设置,其中,所述第一场景逻辑上连接到所述第二场景以形成复合场景;响应于所述复合场景的满足而采取类似故障的让步;以及响应于所述类似故障的让步而调用处理程序。
本发明的一个方面,提供一种装置,包括:第一逻辑,确定存储器存取操作是否存取一个或多个存储器区域以及对其进行响应而引起让步事件,所述让步事件响应于存取所述一个或多个存储器区域的所述存储器存取操作而调用中断处理程序来执行一个或多个功能。
本发明的另一方面,提供一种系统,包括:存储器,存储标记指令;处理器,对于对一个或多个地址范围的存取,监控在程序命令中所述标记指令之后的指令。
本发明的另一方面,提供一种方法,包括:将一个或多个场景编程到处理器的逻辑通道中;对于第一标记监控程序以便触发所述一个或多个场景;响应检测到第一标记而执行所述一个或多个场景;如果满足所述一个或多个场景,则执行让步事件,其中所述一个或多个场景包括确定是否已对第一地址范围进行了存取。
本发明的另一方面,提供一种在其上存储有指令集的机器可读介质,所述指令集在由机器执行时,使所述机器执行包括以下步骤的方法:监控指令线程对存储器区域的存取;按照响应监控对所述存储器区域的存取而生成的信息简表来修改所述指令线程的性能。
附图说明
在附图中作为实例而不是限制来说明本发明。
图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)设置零标志但不引起让步事件,或者2)设置零标志并引起让步事件。类似地,为了响应于触发在其中已经存取了分支目标地址的第一场景而调用另一个场景,可设置某个标志,如“溢出标志”。例如,在一个实施例中,一个或多个通道可编程为:1)设置溢出标志但不引起让步事件,或者2)设置溢出标志并引起让步事件。
在一个实施例中,标志可实现为通道逻辑中的或者另外与通道逻辑相关联的位存储区。此外,通过将与各场景相关联的通道编程为在发生对应事件之后设置适当的标志,任何数量的场景都可在逻辑上一起配置成实现组合逻辑功能。场景可编程为监控其它场景的标志,以便以适当的顺序来调用场景。
图6说明根据一个实施例用通过标志一起链接的不同场景来编程的两个通道。在图6中,通道601执行第一场景,并响应那个场景的发生而设置进位标志605,它由在通道610中编程的第二场景来监控。结果是其输出为第一和第二场景的功能的复合场景。在一个实施例中,在执行第二场景之后,由让步标志620发信号通知让步事件。处理程序可响应于让步标志被设置而执行,它根据发生的两种场景的组合来执行某种功能。
在一个实施例中,程序可包含标记指令,以指示在程序中特定场景将测试特定存储器存取如读或写操作的那点。在一个实施例中,标记是执行正是指示在程序命令中编程有场景的通道将开始监控后续操作或指令的那点的功能的指令。在其它实施例中,标记可包含除了指示程序开始由场景监控的位置之外还执行的其它功能。在一些实施例中,标记可包含在由场景监控的相同的一个或多个指令中。
在一个实施例中,标记指令可具有以下格式:“MOD r/m”,其中“MOD”表示来自源地址的修改操作,“r/m”(寄存器/存储器地址)例如由3字节操作码来表示。在这个实例中,标记没有包含目的地址字段。但是,在其它实施例中,标记可包含目的地址字段,或者具有其它格式。标记的格式(例如操作码等)可至少部分取决于它所属的特定指令集体系结构。例如,操作数可来自存储器或者寄存器,如用MOD r/m格式所指定的。
下面说明根据本发明的一个实施例执行可被监控的存储器存取的一系列指令:
Sentinel<mode>
Mov<dest>,<src>
在以上代码序列中,标记指令之后是存储器存取指令。在一个实施例中,标记向编程到处理器内通道中的场景指示,对于对第一存储器地址或地址范围以及与随后指令相关联的数据的存取,监控存储器存取指令。在其它实施例中,为了其它原因可监控随后指令,例如检测是否由随后指令将数据范围存储到存储器。
如果存储器存取指令满足编程到通道或多个通道的条件,则类似故障的让步可能发生,它响应让步事件而调用处理例程来执行某些操作。由处理程序执行的操作可能有所不同。例如,在一个实施例中,处理程序通知用户已经对某个地址范围进行了存取。在其它实施例中,处理程序可响应让步事件而执行其它简表建立(profiling)或用户代码修改,在本公开中稍后论述其中的一部分。许多场景可编程到通道中,以便设置让步事件的触发条件。此外,在一些实施例中,一个或多个场景可编程到在逻辑上链接在一起的一个或多个通道中,以便检测更复杂的场景。
在一个实施例中,执行初始化过程,其中处理硬件中的一个或多个通道编程为检测某种场景,其中如果检测到第一标记,则将随后存储器存取操作如存储指令的目标地址与地址范围进行比较。在一个实施例中,如果存储指令的目标地址在某个地址范围内,则可设置硬件标志或其它指示符,以便通知另一个场景来监控另一个条件的发生,例如与存储指令对应的特定数据范围。在这个实例中,第一场景不会引起让步事件,而只是设置标志或其它指示符,且代码序列将继续。
在一个实施例中,第二场景可初始化为检测第一场景的发生(如上所述),然后检测与第一场景中所检测的指令对应的数据值的范围(例如与在数据值的某个范围内的存储指令对应的数据)。在一个实施例中,如果满足第二场景,则让步事件可发生,在其中响应于满足的两个场景而调用处理程序来执行某些操作。在上述实例中,第一场景初始化为检测在地址范围内的存储指令的目标地址,以及对其响应而设置标志,第二场景初始化为监控,以便确定与存储指令对应的存储数据是否在值的某个范围内或者等于特定值,在这种情况中,将发生调用处理程序的类似故障的让步。在其它实施例中,其它场景可初始化为检测与一系列或具体存储位置对应的存储器存取操作如存储器装入操作的其它发生。这样,至少一个实施例可用来执行存储器区域过滤。
图2是流程图,说明与本发明至少一个实施例对应的操作。在操作201,监控第一标记的发生。如果没有检测到第一标记,则程序操作继续进行。如果检测到第一标记,则在操作205,确定随后存储器存取操作是否对应于所关注的存储位置或存储位置范围。如果是,则在操作210,设置标志以指示第一场景的满足。在一个实施例中,随后存储器存取操作可以是具有所关注的目标地址或某个目标地址范围的存储指令。在其它实施例中,随后存储器存取操作可以是与某个装入地址或装入地址范围对应的装入指令。如果检测到第一标记,且如果从第一场景设置了该标志,并且与存储器存取操作对应的数据等于某个值,或者落在数据值的某个范围内,且如果在操作215没有取决于前一场景结果的其它场景,则在操作220发生类似故障的让步,并在操作225调用处理程序。如果没有从第一场景设置标志,或者如果与存储器存取对应的数据值不属于某个值或范围,则没有发生让步事件,并且程序操作继续进行。
本文所述的实施例可适用于各种存储器存取,包括由装入或存储操作对存储器进行的存取、由指向存储器各种区域的指令指针进行的存取、以及对与代码分支目标对应的存储器区域的存取等。此外,至少一个实施例可用来过滤由指令、指令指针或分支目标所存取的地址和/或数据值范围。
如果在上述实例中发生类似故障的让步,则可调用处理程序来执行任何数量的操作。例如,在一个实施例中,可响应于上述场景被满足而执行各种简表建立操作,使得可实时修改引起让步事件的程序。在一个实施例中,响应于一个或多个存储器存取操作的发生的一个或多个场景的满足可调用程序来防止各种存储区由未预期存取该存储区的程序或指令存取。
例如,在一个实施例中,以上所述的存储器区域过滤技术可用来检测软件程序线程何时尝试存取在其堆初级部分、栈或其它存储区中没有分配的对象,并且防止发生将来的存取。此外,如果指针可能不是在栈外公布的,则一个实施例允许在栈上推测地分配对象。这可节省高速缓存颠簸,同时节省栈存取时间。或者,在一个实施例中,允许对象被存储在线程特定的堆初级部分,使得可保持指向初级部分的指针,并且对初级部分执行垃圾收集,而不考虑在线程的堆的其它区域中执行垃圾收集。此外,例如,如果对与特定线程或多个线程对应的初级部分进行存取,则至少一个实施例可触发场景来处理事件,从而导致类似故障的让步。
在一个实施例中,标记指令可检测对存储器的存取,然后触发一个可定义将引起类似故障让步的一个或多个触发事件的场景。在至少一个实施例中,场景实际上可包括在逻辑上按照某种触发功能连接以形成复合场景的多个场景。但是在其它实施例中,在一个或多个场景中定义的一个或多个触发事件可在标记指令或在逻辑上链接在一起的标记指令组合中定义,使得减少标记(或复合标记)触发的场景数。
在一些实施例中,除了仅对存储器区域存取之外,标记指令还可用来定义其它参数。例如,在一个实施例中,一个标记可控制在其中由另一个标记监控对存储器区域的存取的时间窗。例如,第一标记可设置向另一个标记指示它将开始监控对存储器区域的存取的标志。第一标记稍后可清除该标志,以向另一个标记指示停止监控对存储器区域的存取。
在一些实施例中,作为对存储器区域的补充或替代,标记还可定义要监控的输入/输出(I/O)范围。在一个实施例中,按照地址范围来监控I/O,而在其它实施例中,标记可按照各对应于不同I/O的位的某种组合(例如“位图”)来监控对I/O范围的存取。
有利的是,本发明的一个或多个实施例可允许用户程序,例如在操作系统中运行的软件应用程序对处理器资源的存取,至少抽象地在传统上根据特权级仅对OS核心可用的方式进行。例如,在一个实施例中,用户程序可采用标记来监控对某个区域的存储器存取,并且对其进行响应而执行影响高特权处理资源诸如一种处理体系结构中的“环0”上的特权资源的动作。其它处理体系结构可定义资源特权的不同等级,并且可利用实施例来禁止或允许用户程序存取这些资源。
在其中的数据可在并发线程之间共享的某些应用中,必须增加代码和附加数据结构,以便增强对数据对象的互斥存取,使得一次只有一个线程存取给定的数据对象。这些锁定机构产生性能开销。本文所述的技术允许数据对象分组成仅由一个线程存取的存储器区域,并且它们监控从其它线程的存取,以便确保互斥。
在一个实施例中,可按照本文所述的技术来过滤存储器区域,以便阻止对受保护或“未锁定”数据的存取。例如,可为特定线程指定存储器中存储的某些数据,而其它数据可由多个不同的线程使用。相应地,本发明的至少一个实施例可检测对仅为特定线程而分配的数据的存取,并阻止由未授权的线程对该“锁定”数据的存取。相反,本发明的实施例可允许多个线程存取可能不是特定线程独占的或者“未锁定”的数据。在这个实例中,当对象存储在指定为“线程局部”存储空间的存储空间中时,可允许线程使用代码的无锁定形式,而在某些环境下,仅可允许线程使用代码的锁定形式来存取另一个存储空间中的数据。
本发明的实施例也可用于其它应用。例如在安全领域,至少一个实施例可用来监控存储器存取,并调用处理程序来允许用户实时在软件中调节各种安全参数。具体来说,至少一个实施例可用来防止置信的或机械检验的代码被相同进程中的流氓代理修改,防止专用数据结构是相同进程中的未授权代理可见的,防止数据结构被相同进程中的未授权代理修改,或者使授权代码能够存取受保护的结构,而无需任何性能开销。
在一个实施例中,对诸如各种编程语言认可的那些代码对象的存取可被监控和检测,特别是在存取尝试对于存取所对应的外部的堆或栈装入或存储数据时。例如,第一通道可用确定对象装入的地址(x)是否既不在分配给对象装入的全局堆范围(r1)内也不在分配给对象装入的线程特定的堆范围(r2)内的场景来编程。为了触发场景以检查对象装入的地址,可在程序命令中在对象装入之前使用第一标记指令。
在对象存储操作的情况中,第二标记可用来触发编程到第二通道中的场景,以确定对象存储的地址(y)是否不对应于r2,但对象存储的数据(z)仍存储到r2。如果是,则可假定对象存储正尝试在它所对应的局部堆之外公布数据。
图7说明根据一个实施例的流程图。如图7所示,在操作700,对要监控的条件进行编程。在操作705,可执行程序指令。在操作710,可对事件监控度量或微体系结构条件。如图7所示,如果没有触发发生,则方法可在操作705重新开始。否则,在操作715(例如,如果触发了),可中断处理以调节引起所检测条件的处理。而且,在操作715,控制流程可转移到不同的程序部分。
图8是流程图,说明在一个实施例中使用的操作,其中监控对象装入和对象存储,以确定它们是否已经尝试存取其对应软件堆外部的存储器区域。在操作801,如果检测到第一标记,则在操作805,第一场景测试随后对象装入的地址(x)是否既不在分配给对象装入的全局堆范围(r1)内,也不在线程特定的堆范围(r2)内。如果是,则在操作810,可发生让步事件,以调用处理程序来重新发布和/或取消对象装入。如果不是,则在操作815,确定是否检测到第二标记,如果是,则在操作820,确定对象存储的地址(y)是否不对应于r2,但对象存储的数据(z)仍存储到r2。如果是,则在操作825,发生让步事件,以便调用处理程序来重新发布和/或取消对象存储。
除了可用于被管理的运行时间环境的以上所述应用之外,本发明的实施例还可用于与被管理的运行时间环境无关的其它方式。例如,在一个实施例中,以上所述的存储器区域过滤技术可用来检测和恢复对线程特定对象的存取,或者用来实现存储器区域或多种类型存储器之间的相干协议。许多其它应用可利用本文所述的实施例。
图3说明根据一个实施例监控处理资源中发生的事件以及采用所监控事件来改进或优化在体系结构中运行的用户级软件程序的系统。具体来说,图3说明在其中可开发用户级软件程序如应用程序的被管理的运行时间环境301。在其它实施例中,环境301可以是未管理的运行时间环境。在一个实施例中,由CPU 320执行软件程序,CPU 320可包括多个处理资源,例如多核处理器和/或多个处理器。通道315可经由简表建立应用编程接口(API)310编程为监控在检测CPU的某些性能特性如代码热点时有用的事件和场景。可由逻辑或软件307通过解释编程到通道中的事件和场景的结果来检测性能特性如代码热点。此外,还可由检测代码/逻辑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还可经由高性能图形接口539与高性能图形电路538交换数据。本发明的实施例可设置在具有任何数量的处理核的任何处理器中,或者设置在图5的PtP总线代理的每个中。
但是,本发明的其它实施例可存在于图5系统内的其它电路、逻辑单元或装置中。此外,本发明的其它实施例可分布于图5所示的若干电路、逻辑单元或装置上。
本文涉及的处理器或者根据本发明实施例设计的任何其它组件可在从创建到模拟到制造的各种阶段中进行设计。表示设计的数据可通过多种方式来表示设计。首先,如在模拟中可用的那样,硬件可采用硬件描述语言或者另一种功能描述语言来表示。作为补充或替代,采用逻辑和/或晶体管门的电路级模型可在设计过程的某些阶段产生。此外,在某个阶段,大部分设计达到在其中它们可用表示各种装置的物理布局的数据来建模的级别。在使用传统半导体制造技术的情况中,表示装置布局模型的数据可以是指定在用于生产集成电路的掩模的不同掩模层上的各种特征存在还是不存在的数据。
在设计的任何表示中,数据可存储在任何形式的机器可读介质中。经调制或者另外生成以便传送这种信息的光波或电波、存储器或者磁或光存储介质诸如盘可以是机器可读介质。这些介质中的任一个可“携带”或“指示”该设计,或者在本发明的实施例中使用的其它信息,如差错恢复例程中的指令。当传送指示或携带信息的电载波以便执行电信号的复制、缓冲或重传时,制作新的副本。因此,通信提供商或网络提供商的动作可以是制作实施本发明技术的制品诸如载波的副本。
因此,公开了用于操纵存储器存取如装入或存储的技术。虽然在描述了并在附图中示出了某些实施例,但要理解,这些实施例只是对广泛发明的说明而不是限制,以及本发明不限于所示及所述的具体构造和配置,因为本领域的技术人员在研究本公开之后可想到其它各种修改。在其中增长迅速并且不易预见其它进步的例如这样的技术领域中,通过实现技术进步进行促进,所公开的实施例在配置和细节上可易于修改,而不背离本公开的原理或所附权利要求书的范围。
本发明的一个或多个实施例的各方面可在可使用本发明一个或多个实施例的处理器或计算机系统的广告中描述、论述或引用。这类广告可包括但不限于新闻纸、杂志、广告牌或其它报纸或有形媒体。具体来说,本发明一个或多个实施例的各种方面可经由网站、“弹出”广告或其它基于WEB的媒体在互联网上做广告,而不管包含生成网站或弹出广告的程序的服务器是位于美国还是其领土。

Claims (23)

1.一种执行存储器引用过滤的装置,包括第一硬件逻辑以及标志存储区,
其中所述第一硬件逻辑被配置为:
响应于在执行软件程序期间检测到预定指令而监控在程序命令中所述预定指令之后的指令;
确定对应于在所述预定指令之后的所述指令的存储器存取操作是否要存取未被分配给对应于所述软件程序的线程的一个或多个存储器区域;
如果所述存储器存取操作是要存取未被分配给对应于所述软件程序的所述线程的所述一个或多个预定存储器区域,则引起事件以调用中断处理程序来阻止对应于所述软件程序的所述线程存取所述一个或多个预定存储器区域,以及其中,如果所述存储器存取操作是要存取被分配给对应于所述软件程序的所述线程的存储器区域,则所述软件程序的操作继续;以及
其中所述标志存储区保存标志以将第一场景链接到第二场景,其中,在发生所述第一场景时,设置所述标志,所述标志由所述第二场景监控以产生复合场景。
2.如权利要求1所述的装置,其中所述存储器存取操作在程序命令中由所述预定指令的执行领先。
3.如权利要求1或2所述的装置,其中所述第一硬件逻辑响应于所述预定指令的检测而为要存取所述一个或多个预定存储器区域的操作监控在程序命令中所述标记之后的指令
4.如权利要求1至3中任一项所述的装置,其中所述标记指令包括没有对应的装入目的地址的装入操作。
5.如权利要求1至4中任一项所述的装置,还包括第二硬件逻辑以确定与所述存储器存取操作对应的数据是否在值的范围内。
6.如权利要求5所述的装置,其中所述第一硬件逻辑要在处理器的标志存储区存储标志以向所述第二硬件逻辑指示所述第二硬件逻辑是否要确定与所述存储器存取操作对应的所述数据是否在所述值的范围内。
7.如权利要求5或6所述的装置,其中所述事件包括故障。
8.如权利要求7所述的装置,其中所述第一和第二硬件逻辑包括一个或多个硬件可编程逻辑通道,以响应于检测到所述预定指令而执行一个或多个逻辑。
9.如权利要求1至8中任一项所述的装置,其中所述第一硬件逻辑确定所述存储器存取操作是否要存取被分配给其它线程的一个或多个预定存储器区域。
10.一种执行存储器引用过滤的系统,包括存储器、第一硬件逻辑以及标志存储区,
其中所述存储器存储预定指令;
所述第一硬件逻辑,被配置为:
响应于在执行软件程序期间检测到预定指令而监控在程序命令中所述预定指令之后的指令;
确定对应于在所述预定指令之后的所述指令的存储器存取操作是否要存取未被分配给对应于所述软件程序的线程的一个或多个存储器区域;
如果所述存储器存取操作是要存取未被分配给对应于所述软件程序的所述线程的所述一个或多个预定存储器区域,则引起事件以调用中断处理程序来阻止对应于所述软件程序的所述线程存取所述一个或多个预定存储器区域,以及其中,如果所述存储器存取操作是要存取被分配给对应于所述软件程序的所述线程的存储器区域,则所述软件程序的操作继续;以及
其中所述标志存储区保存标志以将第一场景链接到第二场景,其中,在发生所述第一场景时,设置所述标志,所述标志由所述第二场景监控以产生复合场景。
11.如权利要求10所述的系统,其中所述存取包括从存储器装入地址的存取或对存储器存储地址的存取。
12.如权利要求10所述的系统,其中所述存取包括通过指向栈的指令指针的存取。
13.如权利要求10所述的系统,其中所述存取包括对分支目标地址的存取。
14.如权利要求11所述的系统,其中所述处理器要对于数据范围内的数据监控对所述一个或多个地址范围的存取。
15.如权利要求14所述的系统,其中所述处理器包括编程有多个逻辑以监控对所述一个或多个地址范围的存取的多个硬件可编程逻辑通道。
16.如权利要求15所述的系统,其中所述处理器包括与所述多个逻辑对应的多个标志存储区以指示对所述一个或多个地址范围的存取是否要引起预定事件。
17.如权利要求15所述的系统,其中所述多个标志存储区包括标志以从所述多个逻辑的第一逻辑向所述多个逻辑的第二逻辑指示所述第二逻辑是否要监控对所述一个或多个地址范围的存取。
18.如权利要求10至17中任一项所述的系统,其中所述一个或多个地址范围包括一个或多个线性地址范围。
19.如权利要求10至18中任一项所述的系统,其中所述处理器确定所述存储器存取操作是否要存取被分配给其它线程的存储器区域的一个或多个预定地址范围。
20.一种执行存储器引用过滤的方法,包括:
从线程中检测标记指令;
响应于从所述线程中检测到所述标记指令,确定来自程序的随后的存储器存取操作是否对应于所关注的存储器位置;
设置第一标志以指示第一场景的满足;
利用第二场景监控所述第一标志的设置,其中,所述第一场景逻辑上连接到所述第二场景以形成复合场景;
响应于所述复合场景的满足而采取类似故障的让步;以及
响应于所述类似故障的让步而调用处理程序。
21.如权利要求20所述的方法,其中所述第二场景还包括从所述线程中检测第二标记指令。
22.如权利要求20所述的方法,其中所关注的存储器位置包括在未被分配给所述线程的存储器范围内的存储器位置。
23.如权利要求21所述的方法,其中,所述标记指令包括没有目的地址的装入指令。
CN201110170566.5A 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和方法 Expired - Fee Related CN102393823B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/508,016 US7769964B2 (en) 2006-08-21 2006-08-21 Technique to perform memory reference filtering
US11/508016 2006-08-21
CN2007101469384A CN101174223B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2007101469384A Division CN101174223B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和设备

Publications (2)

Publication Number Publication Date
CN102393823A true CN102393823A (zh) 2012-03-28
CN102393823B CN102393823B (zh) 2018-05-22

Family

ID=38566530

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201110170566.5A Expired - Fee Related CN102393823B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和方法
CN2007101469384A Expired - Fee Related CN101174223B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和设备
CN201110170622.5A Expired - Fee Related CN102226891B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN2007101469384A Expired - Fee Related CN101174223B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和设备
CN201110170622.5A Expired - Fee Related CN102226891B (zh) 2006-08-21 2007-08-21 执行存储器引用过滤的装置、系统和方法

Country Status (6)

Country Link
US (1) US7769964B2 (zh)
JP (1) JP4925973B2 (zh)
CN (3) CN102393823B (zh)
DE (1) DE102007039431A1 (zh)
GB (4) GB0716036D0 (zh)
HK (1) HK1120126A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110785745A (zh) * 2017-06-28 2020-02-11 Arm有限公司 中断存储器区域的输出
CN110806839A (zh) * 2018-08-06 2020-02-18 慧荣科技股份有限公司 存储控制的方法、记忆装置、存储器控制器及存储服务器

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214574B2 (en) * 2006-09-08 2012-07-03 Intel Corporation Event handling for architectural events at high privilege levels
US7613753B2 (en) * 2006-11-28 2009-11-03 Alcatel Lucent Platform and method for functional programming (FP) processing
US20090073981A1 (en) * 2007-09-18 2009-03-19 Sensory Networks, Inc. Methods and Apparatus for Network Packet Filtering
US8032804B2 (en) * 2009-01-12 2011-10-04 Micron Technology, Inc. Systems and methods for monitoring a memory system
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US9576244B2 (en) * 2013-09-03 2017-02-21 Roger Midmore Methods and systems of four-valued simulation
US9977725B2 (en) * 2016-08-26 2018-05-22 Cisco Technology, Inc. Automatic classification and parallel processing of untested code in a protected runtime environment
US11635965B2 (en) 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
US11080182B2 (en) * 2019-01-07 2021-08-03 International Business Machines Corporation Object load introspection using guarded storage
US11029957B1 (en) 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0117930B1 (en) 1983-02-23 1987-09-23 International Business Machines Corporation Interactive work station with auxiliary microprocessor for storage protection
DD233676A1 (de) * 1985-01-03 1986-03-05 Thueringer Moebel Speicherbereichsschutz in der mini- und mikrorechentechnik
US5295260A (en) * 1991-05-31 1994-03-15 Cray Research Systems, Inc. Memory range monitoring apparatus for a multiprocessor computer system
JPH08179965A (ja) * 1994-12-26 1996-07-12 Mitsubishi Denki Semiconductor Software Kk イベント検出回路
JP2658982B2 (ja) * 1995-05-25 1997-09-30 日本電気株式会社 特定命令実行検出方式
US6185668B1 (en) * 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5950228A (en) * 1997-02-03 1999-09-07 Digital Equipment Corporation Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables
US6035378A (en) * 1997-12-16 2000-03-07 Ncr Corporation Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system
JP2901149B1 (ja) * 1998-01-30 1999-06-07 株式会社画像技研 コンピュータ作動状況監視装置
KR20010072477A (ko) * 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
US6499028B1 (en) * 1999-03-31 2002-12-24 International Business Machines Corporation Efficient identification of candidate pages and dynamic response in a NUMA computer
JP4522548B2 (ja) 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
JP3710671B2 (ja) * 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
JP3419392B2 (ja) * 2000-10-27 2003-06-23 日本電気株式会社 メモリアクセス監視装置、メモリアクセス監視方法およびメモリアクセス監視用プログラムを記録した記録媒体
JP3707727B2 (ja) * 2000-10-30 2005-10-19 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
JP4611659B2 (ja) * 2004-04-19 2011-01-12 上田日本無線株式会社 不正アクセス検出装置、不正アクセス検出方法、プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110785745A (zh) * 2017-06-28 2020-02-11 Arm有限公司 中断存储器区域的输出
US11816227B2 (en) 2017-06-28 2023-11-14 Arm Limited Interrupting export of memory regions
CN110806839A (zh) * 2018-08-06 2020-02-18 慧荣科技股份有限公司 存储控制的方法、记忆装置、存储器控制器及存储服务器
CN110806839B (zh) * 2018-08-06 2023-06-20 慧荣科技股份有限公司 存储控制的方法、记忆装置、存储器控制器及存储服务器

Also Published As

Publication number Publication date
CN101174223B (zh) 2011-08-10
CN102226891B (zh) 2014-09-17
GB0716300D0 (en) 2007-09-26
CN102226891A (zh) 2011-10-26
GB0716036D0 (en) 2007-09-26
US20080046668A1 (en) 2008-02-21
CN101174223A (zh) 2008-05-07
JP2008071339A (ja) 2008-03-27
GB0817653D0 (en) 2008-11-05
HK1120126A1 (en) 2009-03-20
CN102393823B (zh) 2018-05-22
GB0716299D0 (en) 2007-09-26
GB2441216B (en) 2009-08-26
US7769964B2 (en) 2010-08-03
JP4925973B2 (ja) 2012-05-09
GB2441216A (en) 2008-02-27
DE102007039431A1 (de) 2008-04-10

Similar Documents

Publication Publication Date Title
CN101174223B (zh) 执行存储器引用过滤的装置、系统和设备
JP5367802B2 (ja) 階層化された仮想化アーキテクチャにおける仮想化イベント処理
CN101490646B (zh) 虚拟化性能计数器
CN102129410B (zh) 提供扩展的存储器保护
CN1991808B (zh) 用于访客访问存储器映射的设备的方法和装置
US20220300583A1 (en) Systems and methods for policy linking and/or loading for secure initialization
US8151264B2 (en) Injecting virtualization events in a layered virtualization architecture
US8291410B2 (en) Controlling virtual machines based on activity state
KR101126820B1 (ko) 스레드 통신 및 동기화 기법
CN102207896A (zh) 虚拟机崩溃文件生成技术
CN104050010A (zh) 在协同设计的处理器中创建隔离执行环境
US20120311531A1 (en) Optimizing an object-oriented program by transforming invocations of synthetic accessor methods
CN108351826A (zh) 监视处理器的操作
TW201945971A (zh) 用於檢查安全性能的系統和方法
CN100362474C (zh) 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备
CN104239124A (zh) 将用于虚拟化引擎的指令分页调度到本地存储设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180522

Termination date: 20190821

CF01 Termination of patent right due to non-payment of annual fee