CN103164316B - 硬件监视器 - Google Patents
硬件监视器 Download PDFInfo
- Publication number
- CN103164316B CN103164316B CN201210563592.9A CN201210563592A CN103164316B CN 103164316 B CN103164316 B CN 103164316B CN 201210563592 A CN201210563592 A CN 201210563592A CN 103164316 B CN103164316 B CN 103164316B
- Authority
- CN
- China
- Prior art keywords
- context
- address
- monitor
- memory
- value
- 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.)
- Active
Links
- 230000008859 change Effects 0.000 claims abstract description 39
- 238000012544 monitoring process Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 32
- 238000003860 storage Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 22
- 230000002159 abnormal effect Effects 0.000 description 19
- 238000007689 inspection Methods 0.000 description 12
- 239000002131 composite material Substances 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 6
- 230000004913 activation Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 210000000056 organ Anatomy 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 239000007793 ph indicator Substances 0.000 description 1
- 238000005381 potential energy Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000003612 virological effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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/1441—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3027—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及硬件监视器。其中,一种监视器包括:寄存器,其被配置为存储至少两个上下文以及上下文变化值;以及上下文选择器,其被配置为取决于确定上下文变化值与存储器访问地址的第一部分相匹配,选择两个上下文中的至少一个上下文以进行上下文监视。
Description
技术领域
本申请涉及一种硬件监视器,并且具体地但非排他地涉及用于监视处理器内的多个上下文的数据流的硬件监视器。
背景技术
附接至中央处理单元(CPU)以便对软件进行检查的硬件监视器是已知的。硬件监视器通常检查在CPU上执行的软件以确定该软件在许可区域之间执行和访问数据。例如,硬件监视器可以被配置为检测指令何时落到许可区域之外并且可能被恶意插入,或者数据从存储器空间的哪里被读取或者被写入许可区域之外具有类似相关联安全问题的存储器空间。
这些硬件监视器,有时也被称作获取监视器可以被实现在位于CPU旁的集成电路上,用于监视存储器访问并且检查过程(监管者和用户)是否处于预定边界之内。过程访问其所定义边界之外的指令或数据的常见原因是“黑客软件”的操作。当检测到软件已经侵入时,获取监视器或硬件监视器能够快速强制芯片重启以防止非法访问执行。
中央处理单元能够运行并发的软件过程,例如CPU可以具有在CPU上运行的多个用户过程,每个用户过程具有相关联的用户上下文定义;用户过程被允许从其获取指令的一组存储器区域,用户过程被允许从其读取数据的一组存储器区域,以及用户过程被允许从其写入数据的一组存储器区域。当前的CPU和硬件监视器设计的缺陷在于,每次用户过程有所变化,CPU都必须在系统总线上执行从CPU到硬件监视器的硬件寄存器访问,这在硬件监视器被设置为新的用户过程的监视器之前会占用数千个时钟周期。
发明内容
本申请的目标是提供一种硬件/获取监视器系统,其适于执行访问检查并且监视CPU或CPU的群组能够在哪里执行并发软件操作,并且该硬件监视器能够在单个指令周期内在过程之间进行切换。
本申请的实施例目的在于解决以上问题。
根据本申请的第一方面,提供了一种监视器,包括:寄存器,其被配置为存储至少两个上下文以及上下文变化值;以及上下文选择器,其被配置为取决于确定上下文变化值与存储器访问地址的第一部分相匹配,选择两个上下文中的至少一个上下文以进行上下文监视。
至少两个上下文中的每个上下文可以与标识符值相关联,并且其中上下文选择器可以被配置为取决于存储器访问地址的第二部分与上下文相关联的标识符值相匹配,选择两个上下文中的至少一个以进行上下文监视。
每个上下文可以包括以下的至少一个:指令区域;数据读取区域;以及数据写入区域。
监视器可以进一步被配置为接收数据访问存储器地址,其中数据访问存储器地址可以是存储器访问地址。
监视器可以进一步被配置为接收指示CPU以监管者模式进行操作的监管者模式指示器信号。
监视器可以进一步包括地址监视器,其被配置为接收存储器访问地址并且将存储器访问地址值与两个上下文中所选择的至少一个上下文进行比较。
地址监视器可以被配置为在存储器访问地址值处于两个上下文中所选择的至少一个上下文之外时生成系统中断。
监视器可以进一步被配置为接收至少两个上下文和上下文变化值。
一种处理器模块可以包括:中央处理单元;耦合至中央处理单元的存储器;以及如这里所描述的监视器,其被配置为从中央处理单元接收存储器访问地址值。
处理器模块进一步包括安全块,其被配置为向监视器输出至少两个上下文和上下文变化值。
根据本申请的第二方面,可以提供一种监视器,包括:用于存储至少两个上下文和上下文变化值的装置;以及用于取决于确定上下文变化值与存储器访问地址的第一部分相匹配,选择两个上下文中的至少一个上下文以进行上下文监视的装置。
至少两个上下文中的每个上下文可以与标识符值相关联,并且其中用于选择的装置可以进一步包括用于取决于存储器访问地址的第二部分与上下文相关联的标识符值相匹配,选择两个上下文中的至少一个上下文以进行上下文监视的装置。
每个上下文可以包括以下的至少一个:指令区域;数据读取区域;以及数据写入区域。
监视器可以进一步包括用于接收数据访问存储器地址的装置,其中数据访问存储器地址是存储器访问地址。
监视器可以进一步包括用于接收指示CPU以监管者模式进行操作的监管者模式指示器信号的装置。
监视器可以进一步包括:用于接收存储器访问地址的装置;以及用于将存储器访问地址值与两个上下文中所选择的至少一个上下文进行比较的装置。
监视器可以进一步包括用于在存储器访问地址值处于两个上下文中所选择的至少一个上下文之外时生成系统中断的装置。
监视器可以进一步包括用于接收至少两个上下文和上下文变化值的装置。
一种处理器模块可以包括:用于操作指令和处理数据的装置;用于存储指令和数据的装置;以及如这里所描述的监视器。
处理器模块可以进一步包括用于向监视器输出至少两个上下文和上下文变化值的装置。
根据本申请的第三方面,提供了一种用于监视存储器访问的方法,包括:存储至少两个上下文和上下文变化值;以及取决于确定上下文变化值与存储器访问地址的第一部分相匹配,选择两个上下文中的至少一个上下文以进行上下文监视。
至少两个上下文中的每个上下文可以与标识符值相关联;并且其中选择可以进一步包括取决于存储器访问地址的第二部分与上下文相关联的标识符值相匹配,选择两个上下文中的至少一个上下文以进行上下文监视。
每个上下文可以包括以下的至少一个:指令区域;数据读取区域;以及数据写入区域。
该方法可以进一步包括接收数据访问存储器地址,其中数据访问存储器地址是存储器访问地址。
该方法可以进一步包括接收指示CPU以监管者模式进行操作的监管者模式指示器信号。
该方法可以进一步包括:接收存储器访问地址;以及将存储器访问地址值与两个上下文中所选择的至少一个上下文进行比较。
该方法可以进一步包括在存储器访问地址值处于两个上下文中所选择的至少一个上下文之外时生成系统中断。
该方法可以进一步包括接收至少两个上下文和上下文变化值。
一种编码有指令的处理器可读介质,当被处理器所执行时,该指令可以执行如以上所描述的方法。
一种装置,包括至少一个处理器以及包含用于一个或多个程序的计算机代码的至少一个存储器,该至少一个存储器和计算机代码被配置为利用至少一个处理器可使得该装置至少执行如以上所描述的方法。
根据第四方面,提供了一种监视器,包括:寄存器,其被配置为存储至少两个上下文以及上下文变化值;输入,其被配置为接收处理器数据写入访问地址值和访问模式指示器;以及上下文选择器,其被配置为在确定数据写入访问地址值的第二部分与上下文变化值相匹配、并且访问模式指示器指示处理器处于监管者模式时,取决于数据写入访问地址值的第一部分选择两个上下文中的至少一个上下文以进行上下文监视。
根据第五方面,提供了一种监视方法,包括:存储至少两个上下文以及上下文变化值;接收处理器数据写入访问地址值和访问模式指示器;确定数据写入访问地址值的第一部分与上下文变化值相匹配;确定访问模式指示器指示处理器处于监管者模式;以及将上下文改变为与数据写入访问地址值的第二部分相关联的上下文。
根据第六方面,提供了一种监视器,包括:用于存储至少两个上下文以及上下文变化值的装置;用于接收处理器数据写入访问地址值和访问模式指示器的装置;用于确定数据写入访问地址值的第一部分与上下文变化值相匹配的装置;用于确定访问模式指示器指示处理器处于监管者模式的装置;以及用于将上下文改变为与数据写入访问地址值的第二部分相关联的上下文的装置。
附图说明
为了更好地理解本申请,现在将通过示例参考附图,其中:
图1示意性示出了适于采用本申请一些实施例的示例装置;
图2更为详细地示意性示出了根据本申请一些实施例的监视器块;
图3示出了根据本申请一些实施例的监视器块初始化的操作流程图;
图4示出了根据本申请一些实施例的监视器块改变上下文操作的操作流程图;
图5示出了根据本申请一些实施例的监视器块的指令检查操作的操作流程图;
图6示出了根据本申请一些实施例的监视器块的组合检查操作的操作流程图;
图7更为详细地示意性示出了根据本申请另外一些实施例的监视器块;
图8示出了根据本申请一些实施例的图7所示的监视器块的初始化的操作流程图;
图9示出了根据本申请一些实施例的图7所示的监视器块改变上下文操作的操作流程图;
图10示出了根据本申请一些实施例的图7所示的监视器块的指令检查操作的操作流程图;
图11示出了根据本申请一些实施例的图7所示的监视器块的组合检查操作的操作流程图;
图12示出了根据一些实施例的图7所示的监视器块的示例输入/输出的表;
图13示出了根据一些实施例的图7所示的监视器块的示例寄存器排列的表;
图14至17示出了根据本申请一些实施例的定义图7所示的监视器表的示例寄存器ifetch的寄存器相关数据的表;
图18至20示出了根据一些实施例的定义图7所示的监视器块的示例寄存器dfetch的寄存器数据的表;
图21至24示出了根据一些实施例的定义图7所示的监视器块的示例寄存器失败(failure)寄存器的表;
图25更为详细地示出了定义图7所示的监视器块的示例性寄存器上下文地址(context address)寄存器的表;以及
图26更为详细地示出了定义图7所示的监视器块的上下文标识值寄存器的表。
具体实施方式
以下更为详细地对用于提供共享存储器控制的适当装置和可能机制进行描述。
参考图1,示出了能够在其中实现本申请实施例的示例系统、设备或装置。该装置被示为包括耦合至存储器3和监视器块5的中央处理单元1。此外,监视器块5被示出为耦合至安全块7。
在一些实施例中,该装置或系统包括中央处理单元(CPU)1,其可以是任意适当的CPU或CPU核。CPU 1可以被配置为进行操作或执行并发软件过程,例如CPU 1可以被配置有多个虚拟CPU核,每个虚拟CPU核被配置为执行一个软件过程,或者在一些实施例中,CPU 1的集成电路包括多个CPU核,每个核被配置为独立于其它核进行操作并且执行指令访问数据。
在一些实施例中,该装置包括耦合至CPU 1的存储器3。存储器3可以是被配置为存储可由CPU 1访问的数据的任意适当存储器设备。在一些实施例中,CPU 1和存储器3通过多于一个的总线进行耦合,例如用于从存储器向CPU提供指令数据并且处理数据的单独数据总线。然而,将要理解的是,在一些实施例中,指令数据和数据可以经由相同的数据总线在CPU 1和存储器3之间进行传输。
一些实施例中的系统进一步包括耦合至CPU 1和存储器3二者的监视器块5。监视器块5可以被配置为对指令数据总线和数据总线上的访问进行监视。
此外,该系统包括安全块7,根据本申请的一些实施例,该安全块被配置为耦合至监视器块5并且从监视器块5接收指令在哪里执行和/或数据在预定区域之外被访问的指示,并且因此控制系统的重启以防止对系统侵入、系统的非法数据访问或者病毒或其它不希望代码的插入。
CPU 1、存储器3和安全块7的操作在本领域通常是已知的并且为了简化本申请实施例的解释而将不详细进行描述。
参考图2,更为详细地示出了根据一些实施例的示例监视器块5。在一些实施例中,监视器块5被配置为监视CPU 1和存储器3之间的各种存储器访问。例如,在一些实施例中,监视器块5可以被配置为接收或探寻(snoop)指令获取地址(ifetch地址101)、数据访问地址(d_access地址103)、数据获取的读非写指示器(indicator)(r_n_w信号105),以及监管者非用户指示器(s_n_u信号107),其指示获取是在用户模式中调用还是由操作系统内核在监管者模式中调用。此外,在一些实施例中,监视器块5可以被配置为经由系统中断耦合109而耦合至CPU 1,从而监视器在检测到上下文之外的获取时能够在CPU 1中发起系统中断。
监视器块5在一些实施例中可以包括上下文寄存器160。上下文寄存器可以被配置为存储监视器块5用来监视指令和/或数据访问以确定它们是否为可接受的数据或指令访问值并且另外存储“系统地址(SysAddr)”以便进行快速上下文切换的数据值。
在一些实施例中,上下文寄存器160可以包括第一数量(n)的用户上下文161。每个用户上下文161可以被配置为定义访问在其之内对于该上下文有效的存储器区域。在一些实施例中,用户上下文161包括被配置为定义能够从其有效获取指令的存储器区域,被配置为定义能够针对上下文从其有效读取数据的存储器区域的dregion读(dregion read),以及被配置为定义能够针对上下文从其有效写入数据的存储器区域的dregion写(dregionwrite)。第一数量(n)可以是任意适当的上下文数量。
在一些实施例中,上下文寄存器160进一步包括上下文地址寄存器163。上下文地址寄存器可以另外包括系统地址值(SysAddr)和新上下文值。
在一些实施例中,监视器块5进一步包括监视器150。在一些实施例中,监视器150可以是用于针对上下文寄存器160、用户上下文161和上下文地址寄存器163而监视存储器访问的任意适当处理实体。
参考图3至6对监视器150的操作进一步进行描述。
参考图3,更为详细地示出了监视器150关于监视初始化的操作。
作为初始操作,系统/装置以及相关联的监视器块5和监视器150能够被启动或重启。
启动或重启系统的操作在图3中由步骤201所示出。
此外,在一些实施例中,系统地址(SysAddr)被选择定义当被CPU输出时指示上下文变化的地址。所选择的系统地址可以是并未准备用于某用途的任意适当存储器地址。例如,在一些实施例中,所选择的系统地址是非映射区域,这是因为从所寻址区域读取或写入数据的能力是不相关的。在一些实施例中,系统地址可以是预先编程的。
选择系统地址的操作在图3中由步骤203所示出。
此外,在一些实施例中,可以针对每个上下文选择相关联区域的范围。例如,在一些实施例中,针对每个上下文,可以存在至少一个相关联的指令地址区域(iregion),从那些地址来自存储器的指令访问对于该上下文而言是合法且被允许的,至少一个数据读取地址区域(dregion读),从那些地址来自存储器的读取访问对于该上下文而言是合法且被允许的,以及至少一个数据写入地址区域(dregion写),从那些地址来自存储器的写入访问对于该上下文而言是合法且被允许的。
在一些实施例中,iregion、dregion读和dregion写可以包括上界区域地址和下界区域地址。在以下示例中,边界为所排列的8个字节。在一些实施例中,区域可以被“打包(wrapped)”,其中region_x_upper小于region_x_lower。然而,在一些实施例中,区域并不被打包并且被定义为连续且单调(monotonic)的地址。
在一些实施例中,每个区域是单独的,然而可以理解的是,在一些实施例中,区域可以是至少部分重叠的。
监视器150因此在一些实施例中能够针对每个上下文将iregion、dregion读和dregion写的值写入或编程到上下文寄存器160的用户上下文161中。
将每个上下文的iregion、dregion读和dregion写的值写入寄存器的操作在图8中由步骤207所示出。
此外,监视器150能够被配置为将系统地址(SysAddr)写入或编程到上下文寄存器160的上下文地址寄存器163。
在写入区域值以及写入系统地址之后,监视器150可以被配置为针对ifetch地址输入、d_access地址103、r_n_w信号105、s_n_u信号107上的指令和数据访问而监视CPU 1。
关于图4,更为详细地示出了监视器150切换上下文的操作。
监视器150在一些实施例中可以被配置为监视来自d_access地址103的CPU数据访问地址值。
读取CPU数据访问地址值的操作在图4中通过步骤301所示出。
监视器150因此可以进一步被配置为检查数据访问是否以监管者操作模式所执行,例如通过测试监管者非用户信号(s_n_u信号)105是否为活跃的。在系统地址上为监管者模式时,监视器150可以被配置为检查数据访问地址的高数位是否与所存储上下文地址相匹配。换句话说,CPU数据访问地址是否与系统地址(SysAddr)相匹配。
检查访问是否处于监管者模式并且与上下文地址寄存器163中所存储的系统地址相匹配的操作在图4中由步骤303所示出。
在确定了系统地址访问已经被正确检测之后,监视器150随后可以被配置为使用数据访问地址其余的低数位来确定新的或活跃的上下文。
从d_access地址的低数位或最低有效位确定新的上下文值的操作在图4中由步骤305所示出。
监视器150随后可以被配置为激活与活跃的上下文值相关联的iregion、dregion写和dregion读值。
激活适当的iregion、dregion写和dregion读的操作在图4中由步骤307所示出。
在这样的实施例中,有可能根据系统地址匹配、监管者模式匹配和激活区域操作有多快而在单个指令周期内改变上下文。如这里已经描述的,系统地址(SysAddr)区域被选择为地址映射中写入对其无害的某处。此外,只要新的用户过程开始执行,监视器块就将准备强制相关联的用户上下文。
由监视器150强制指令获取键值的操作关于图5所示出。在这样的实施例中,监视器150读取CPU ifetch地址访问以确定是否已经生成了非法指令请求。因此在一些实施例中,监视器150能够读取CPU指令访问的ifetch地址101。
读取CPU指令访问的操作在图5中由步骤401所示出。
监视器150随后能够检查指令访问地址是否处于当前的上下文iregion地址范围之内。
在指令不处于指令区域(iregion)地址的范围中的情况下,则操作进行至确定非法指令读取。
检查指令是否处于当前上下文的地址区域中的操作在图5中由步骤403所示出。
在一些实施例中,在通过检查之后,监视器150确定指令监视周期结束并且指令获取合法。
此外,结束指令监视周期的操作在图5中由步骤407所示出。
在一些实施例中,当范围检查失败时,监视器150被配置为在系统中断耦合109上向CPU生成系统中断信号输出。该系统中断信号在一些实施例中可以被CPU用来指示针对当前用户上下文的非法指令正被访问。
关于图6,示出了监视器150所进行的强制数据访问的操作。在这样的实施例中,监视器150读取CPU d_access地址103以及读非写信号(r_n_w信号)105以确定是否已经生成了非法数据请求。
读取CPU数据访问值和读非写信号的操作在图6中由步骤501所示出。
在一些实施例中,在读非写信号激活的情况下,换句话说,在数据访问是读访问的情况下,监视器150可以被配置为检查数据访问是否处于活动或当前上下文dregion读地址区域之内。
检查作为读取的数据访问是否处于当前上下文dregion读地址区域之内的操作在图6中由步骤503所示出。
在一些实施例中,在读非写信号不为活跃的情况下,换句话说,在数据访问是写访问的情况下,监视器150可以被配置为检查数据访问是否处于活跃的或当前上下文dregion写地址区域之内。
检查作为写入的数据访问是否处于当前上下文dregion写地址区域之内的操作在图6中由步骤505所示出。
在数据访问不处于当前上下文dregion内的情况下(对于读访问是dregion读而对于写访问则是dregion写),则监视器150可以被配置为在系统中断耦合109上向CPU生成系统中断信号输出。该系统中断信号在一些实施例中可以被CPU用来指示针对当前用户上下文的非法数据访问正被处理。
生成非法数据访问系统中断的操作在图6中由步骤509所示出。
在数据访问处于当前上下文dregion内的情况下(对于读访问是dregion读而对于写访问则是dregion写),则监视器150可以被配置为结束数据监视周期。
结束数据监视的操作在图6中由步骤507所示出。
将要理解的是,CPU可以被配置为以任意适当方式对系统中断进行响应。
关于图7,更为详细地示出了根据一些实施例的另外的示例监视器块1005。在一些实施例中,监视器块1005包括输入/输出块1110,其被配置为监视CPU 1和存储器3之间的存储器访问,并且输入/输出块1110还与安全块7进行通信,诸如在需要时向安全块7输出指示器(indicator)或者从安全块7接收“范围”数据。
关于图12,示出了显示用于输入/输出块的示例输入和输出的表。特别地,在一些实施例中,输入可以包括至少一个指令总线监视器输入1601、至少一个数据总线监视器输入1603以及至少一个到安全块7的输出(由fetch_exception输入1605所示出)。
在该示例中,指令总线监视器输入1601被示为指令总线监视器(cpu_ifetch_addr<31:4>)、指令获取监视器(cpu_ifetch_active),以及确定指令获取是监管者指令还是用户指令的输入(cpu_ifetch_sup)。
此外,在一些实施例中,数据总线监视器输入1603包括数据访问地址监视器(cpu_dfetch_d_addr<31:4>)、数据访问监视器(cpu_dfetch_active),以及确定从所访问地址是在写入还是在读取数据的输入(cpu_dfetch_rnw)。
监视器块5可以进一步包括寄存器区域1100。寄存器区域或硬件寄存器区域可以被配置为存储监视器块5用来监视指令和/或数据访问以确定它们是否是可接受的数据或指令访问值的数据值。
在一些实施例中,寄存器区域1100可以包括ifetch区域1101、dfetch区域1104、失败(failure)区域1105和系统地址区域1107。
ifetch区域1101例如可以包括指示与上下文/软件处理能够从其合法获得指令的每个上下文或软件处理相关联的指令存储器区域地址的区域的一系列寄存器值。
ifetch区域1101的示例例如可以关于图13所示出,其中ifetch区域1101可以被细分为n个区域(其中对于该示例而言n=0至63)。在一些实施例中,对于每个区域,ifetch区域1101包括ifetch区域地址下界(ifetch_retion_<n>_lower)、ifetch区域地址上界值(ifetch_region_<n>_upper)、标签标识值(ifetch_region_<n>_tag)以及使能和监管者/用户控制指示器(ifetch_region_<n>_sup_en)。
关于图14、15、16和17,根据一些实施例更为详细地示出了下界、上界、标签和监管者/用户控制寄存器。
关于图14,根据本申请一些实施例示出了下界ifetch区域寄存器定义。在这样的实施例中,下界寄存器具有(针对ifetch区域n)定义地址下界值的数据,在该示例中,该值被定义为来自寄存器的位置31:4的数位。然而,将要理解的是,下界值可以使用任意适当的数位配置并且定义如CPU所使用的任意形式的地址。
关于图15,根据本申请一些实施例示出了上界ifetch区域寄存器定义。在该示例中,ifetch区域n的上界地址值可以由来自32位寄存器的位置31:4的数位值所定义。然而,在其它实施例中,可以使用定义如CPU所使用地址的任意适当寄存器配置。
关于图16,示出了根据一些实施例的标签寄存器定义,其中8位值(标签寄存器的数位位置7:0)定义ifetch区域n的标签值。
关于图17,根据本申请一些实施例示出了监管者和使能寄存器的定义。在(诸如图17中所示的)一些实施例中,使能标志位值由监管者和使能寄存器的数位位置0所定义。此外,监管者标志位值由监管者和使能寄存器的数位位置1所定义,并且定义了定义地址边界内的指令是监管者还是用户指令的监管者标志。在一些实施例中,例如监管者和使能寄存器的数位位置2的监管者使能标志位能够定义监管者使能指令标志。
如图13所示,对于每个区域而言,dfetch区域103也可以从n=0至63而被细分为四个部分。在一些实施例中,dfetch区域寄存器103可以包括下界地址dfetch区域(dfetch_retion_<n>_lower)、上界地址ifetch区域(dfetch_retion_<n>_upper)、使能和只读控制配置区域(dfetch_retion_<n>_config)以及保留区域。将要理解的是,在一些实施例中仅需要这些之中的前三个。
关于图18,示出了下界dfetch区域寄存器的示例定义,其中针对区域n的dfetch下界地址由寄存器的数位位置31:4的值所定义。将要理解的是,下界dfetch地址可以为值的任意适当配置或数位位置排列。
关于图19,示出了上界区域寄存器的示例定义,其中针对区域n的dfetch上界地址由寄存器的数位位置31:4的值所定义。将要理解的是,上界dfetch地址可以由任意适当的数位排列所定义。
关于图20,示出了配置dfetch寄存器的示例定义。配置dfetch寄存器可以利用确定dfetch区域的可接受的读或写状态的单个数位标志来配置。在该示例中,寄存器的数位位置0被用作指示器,其中活跃的值或值“1”被定义为指示dfetch区域为只读(RO),而不活跃的值或值“0”指示dfetch区域为读写(RW)。
此外,在一些实施例中,配置dfetch寄存器可以利用指示该区域是否“使能”的另外数位标志指示器进行配置。在该示例中,配置dfetch寄存器的数位位置1被用作使能标志。
在一些实施例中,如图13所示的失败区域105可以被划分为一系列失败寄存器指示器。例如,失败区域105在一些实施例中可以包括失败状态寄存器(failure_status)、非法指令获取地址值指示器(ifetcn_failure_addr)、数据地址异常(dfetch_failure_addr)和最后“良好”指令获取地址值(ifetch_good_addr)。
关于图21,示出了失败状态(failure_status)寄存器的示例定义。失败状态寄存器在一些实施例中例如可以在数位位置0定义第一标志数位,其定义了何时在任何活跃的iregion之外尝试ifetch(Ifetch)。此外,在一些实施例中,失败状态寄存器例如可以在数位位置1包括另外的标志位,其定义无效的ifetch/dfetch组合(comb)。
关于图22,示出了ifetch失败地址(ifetch_failure_addr)寄存器的示例定义。在一些实施例中,ifetch失败地址寄存器例如可以在数位位置0定义第一标志位,其定义在出现异常时CPU是否处于监管者模式(sup)。此外,在一些实施例中,ifetch失败地址寄存器例如可以在数位位置3:1包括定义在出现异常时的活跃的上下文(context)的值,以及在位置31:4的定义导致该异常的代码地址(value)的另外值。
关于图23,示出了dfetch失败地址(dfetch_failure_addr)寄存起的示例定义。在一些实施例中,dfetch失败地址寄存器例如可以在数位位置0定义第一标志位,其定义在出现异常时CPU是在尝试读取还是写入(rnw)。此外,在一些实施例中,dfetch失败地址寄存器例如可以在位置31:4包括定义导致ifetch/dfetch组合异常的数据地址的值。
关于图24,示出了ifetch最后良好指令地址(ifetch_good_addr)的示例定义。在一些实施例中,ifetch最后良好指令地址寄存器例如可以在数位位置31:4定义值,其定义了来自使能区域的最后所执行指令的代码地址。
在一些实施例中,如图13所示,寄存器区域1100的SysAddr区域1107可以包括定义“神奇(magic)”地址的上下文地址(context_address)寄存器。
关于图25,根据一些实施例示出了上下文地址寄存器(context_address)的示例定义。上下文地址寄存器例如可以在寄存器的数位位置31:7(value)定义值,其定义了“神奇值”,该神奇值在CPU尝试进行访问时出现,用于指示当前上下文要有所变化。此外,上下文地址寄存器例如可以在寄存器的数位位置6:4(current_context)包括另外的值,其定义初始上下文值。
此外,如图13所示,寄存器区域1100在一些实施例中可以包括上下文标识值寄存器1109,其中上下文标识寄存器的8个字节包含6位的上下文标识值(CID)。在一些实施例中每个上下文有一个CID。这些实施例中的上下文管理器可以被配置为输出当前上下文的CID以使得片上系统(SOC)的总线知晓哪个使用上下文在当前进行操作并且这允许SOC硬件强制进行上下文敏感的安全措施。
关于图26,根据一些实施例示出了上下文标识寄存器(CID_n)的示例定义。上下文标识寄存器在一些实施例中可以包括6位的值,例如寄存器数位位置5:0(CID),其定义了要用来标识上下文的6位的上下文标识(CID)值。
在一些实施例中,监视器块5进一步包括系统地址(SysAddr)监视器1120。系统地址监视器1120被配置为对寄存器区域1100进行初始化,并且另外被配置为监视系统地址值以确定上下文已经改变并且因此激活当前上下文值。
关于图8进一步详细示出了系统地址监视器1120的初始化操作。
作为初始化操作,系统/装置可以被启动或重启。
启动或重启系统的操作在图8中由步骤1201所示出。
此外,在一些实施例中,选择定义CPU输出时指示上下文变化的地址的系统地址。所选择的系统地址可以是并非准备用于某用途的任意适当的存储器地址值。例如,在一些实施例中,所选择的系统地址是非映射区域,这是因为从所寻址区域读取或写入数据的能力是不相关的。在一些实施例中,系统地址可以由安全块7来选择。在一些实施例中,安全块的功能可以与监视器块5相融合。在所示出的示例中,系统地址(SysAddr)被选择为系统地址空间中128个字节的区域(2n,其中n是上下文的数量并且在该示例中n=8)。
选择系统地址的操作在图8中由步骤1203所示出。
此外,在一些实施例中,安全块7可以被配置为针对每个上下文选择或定义至少一个指令地址区域(iregion)和至少一个数据地址区域(dregion),来自那里的访问是合法且被允许的。在以下示例中,安全块7被配置为针对八个上下文中的每一个定义八个指令地址区域和八个数据地址区域。换句话说,对于具有8个上下文的该示例而言,定义多达64个区域。
在一些实施例中,iregion可以包括上界区域地址和下界区域地址。在以下示例中,边界为所排列的8个字节。在一些实施例中,区域可以被“打包”,其中region_x_upper小于region_x_lower。然而,在一些实施例中,区域并不被打包并且被定义为连续且单调的地址。
在一些实施例中,每个区域是单独的,然而可以理解的是,在一些实施例中,区域可以是至少部分重叠的。如这里所描述的,iregion可以被配置为CPU能够合法访问代码指令的区域,连同定义确定指令代码是否被允许以CPU监管者和/或用户模式被执行的一些标志或指示器,并且定义8位的“标签”字段,其指示来自iregion的代码被允许访问来自哪个dregion的数据。
此外,在一些实施例中dregion可以被配置为描述包含可合法寻址数据、确定数据是只读(RO)还是读写(RW)的标志或指示器以及使能位的区域。
虽然这里所描述的示例示出了包括8个iregion和8个dregion的上下文,但是对每个上下文所分配的iregion和dregion的数量在一些实施例中可以是动态的,并且另外在一些实施例中每个上下文可以多于或少于8个区域。此外,虽然所示出的示例定义了八个上下文的区域,但是在本申请的一些实施例中比八个更多或更少的上下文具有所定义的区域。
在一些实施例中,系统地址监视器1120因此能够针对每个上下文将iregion和dregion值写入或编程到寄存器区域1100中。
将每个上下文的iregion和dregion值写入寄存器的操作在图8中由步骤1207所示出。
此外,系统地址监视器1120可以被配置为将系统地址(SysAddr)写入或编程到寄存器区域1100的系统地址区域、特别是上下文地址寄存器(context_address)。
在写入上下文iregion和dregion值以及写入系统地址之后,系统地址监视器1120可以被配置为激活监视器块5以开始针对指令和数据访问监视CPU 1。
关于图9示出了系统地址监视器1120切换上下文的操作。系统地址监视器1120例如可以被配置为读取CPU数据访问地址值。
读取CPU数据访问地址值的操作在图9中通过步骤1301所示出。
系统地址监视器1120可以进一步被配置为检查数据访问是否以监管者操作模式所执行。此外,系统地址监视器1120可以被配置为检查数据访问地址是否与所存储的上下文地址相匹配,换句话说,以下表达式是否满足cpu_dfetch_d_addr(31:7)=context_address(31:7)。换句话说,CPU数据获取地址是否匹配神奇地址(或系统地址)。
检查访问是否处于监管者模式并且与上下文地址值相匹配的操作在图9中通过步骤1303所示出。
在已经确定系统地址访问已经被正确检测之后,系统地址监视器1120随后可以被配置为确定新的或活跃的上下文。例如,在一些实施例中,活跃的上下文值可以被定义为cpu_dfetch_d_addr(6:4)数据所定义的值。换句话说,定义新的context(m),其中m取cpu_dfetch_d_addr(6:4)所给出的无符号整数值。
在一些实施例中,可以有以下系统要求,CPU不能在安全块对上下文进行重新编程的同时切换至该上下文,这是因为当它们被复制到以CPU时钟为时钟的活动上下文寄存器时,以安全块总线(clk_stbus)为时钟的上下文寄存器没有重新同步。
系统地址监视器1120随后可以被配置为激活与活动上下文值相关联的ifetch区域、dfetch区域。在一些实施例中,这可以包括激活ifetch和dfetch寄存器区域100的使能标志值。
激活适当ifetch和dfetch区域的操作在图9中由步骤1307所示出。
此外,在一些实施例中,确定活动上下文方面,系统地址监视器1120可以被配置为读取并输出从上下文标识(CID_n)寄存器中的安全块所初始化的查找表取得的上下文标识值。
在一些实施例中,监视器块包括ifetch监视器1140。ifetch监视器1140可以被配置为监视CPU的ifetch地址访问以确定是否已经生成了非法指令请求。因此在一些实施例中,ifetch监视器1140能够读取CPU指令访问。
读取CPU指令访问的操作在图10中由步骤1401所示出。
ifetch监视器1140随后能够检查指令是否处于活跃的区域中。换句话说,ifetch监视器1140读取活跃的上下文的上下界地址以确定当前CPU的ifetch地址是否处于任何这些活跃的区域中。(CPU_ifetch_ADDR是否处于活跃的i-region地址范围内)。在区域没有打包的情况下,则如果
region_x_lower<=地址AND(与)region_x_upper>地址地址处于区域之内,在区域被打包的情况下,则如果
region_x_lower<=地址OR(或)region_x_upper>地址地址处于区域之内。
在指令不处于任何指令区域地址的范围之内,在操作进行至确定非法指令读取,然而如果指令处于活跃的区域之内,则操作进行至监管者检查。
检查指令是否处于活跃的区域之内的操作在图10中由步骤1403所示出。
在指令处于活跃的区域的情况下,则ifetch监视器1140可以被配置为检查中央处理单元处于监管者模式,其中地址范围定义了仅监管者被使能。换句话说,在范围确定了模式检查诸如所设置的ifetch_sup_en(2)示出的被使能,则对CPU进行检查ifetch_sup_en(1)中所指定的监管者模式是否等于监管者模式输入cpu_ifetch_sup。
监管者模式检查的操作在图10中由步骤1405所示出。
在检查通过的情况下,ifetch监视器1140确定指令监视周期已经结束并且指令获取合法。然而,在检查没有通过的情况下,操作进行至非法指令读取操作。
此外,结束指令监视周期的操作在图10中由步骤1407所示出。
在范围检查或监管者模式检查失败的情况下,则ifetch监视器1140被配置为向异常生成器1130指示已经发生了故障。
在一些实施例中,监视器块5包括异常生成器1130,其被配置为从ifetch监视器1140和/或组合监视器1150接收已经进行了失败检查的指示器。异常生成器1130可以进一步被配置为确定其是ifetch监视器失败还是组合监视器失败。
异常生成器1130在检测到ifetch监视器失败指示器时初始化非法指令读取操作。在这样的实施例中,异常生成器1130能够被配置为在ifetch指示器的失败状态为“0”的情况下将失败状态ifetch指示器设置为“1”(failure_status.ifetch==1)。
读取非法指令并且设置失败状态的操作在图10中由步骤1409示出。
此外,异常生成器1130可以被配置为声明获取异常寄存器(fetch_exception)。
声明获取异常生成器的操作在图10的步骤1411中示出。
此外,在一些实施例中,异常生成器1130可以被配置为读取最后良好地址(ifetch_good_addr),读取失败地址(ifetch_failure_addr)。此外,在一些实施例中,异常生成器1130可以被配置为读取值的监管者模式和当前活跃的上下文。
读取最后良好地址、失败地址以及监管者和当前活跃的上下文模式的操作在图10中由步骤1413所示出。
在一些实施例中,异常生成器1130可以被配置为将这些值输出至安全块7。安全块7随后在接收到这些值时能够初始化系统重启以防止任何进一步的侵入或者防止软件上下文执行非法指令代码。
在一些实施例中,监视器块5可以进一步包括组合监视器1150。组合监视器1150可以被配置为监视数据访问和指令区域值以确定针对存储器哪里的数据访问是非法的。
组合监视器1150在一些实施例中可以被配置为读取CPU数据/指令值。
读取CPU数据/指令值的操作在图11中由步骤1501所示出。
组合监视器1150可以进一步被配置为检查数据访问处于活跃的区域内。
在一些实施例中,检查数据访问处于活跃的区域中的操作包括生成与CPU数据获取值(cpu_dfetch_d_addr)相匹配的活动dregion地址范围的列表。
生成与CPU的dfetch地址值相匹配的活动dregion地址范围的列表的操作在图11中由步骤1503所示出。
此外,组合监视器1150可以被配置为执行数据访问检查。数据访问检查可以包括在数据访问是写入并且列表中的数据获取项被定义为只读的情况下去除任意列表成员。换句话说,dfetch_region_readonly标志被设置为1而数据访问是写访问。
在数据访问是写入并且列表中的项为只读的情况下去除列表成员的操作在图11中由步骤1505所示出。
组合监视器1150随后可以被配置为生成组合检查值。在一些实施例中,组合检查值可以包括对与cpu_ifetch_addr值相匹配的iregion进行按位或(OR)。
指令检查值生成的操作在图11中由步骤1507所示出。
组合监视器1150随后可以被配置为生成组合值,其中dregion列表成员与指令检查值进行相与(AND)。
生成组合检查值的操作在图11中由步骤1509所示出。
组合监视器1150随后可以被配置为执行空结果检查,换句话说,检查组合值结果是否等于零以及另外dfetch是否等于系统地址。
执行空结果检查的操作在图11中由步骤1511所示出。
在结果等于0并且dfetch不等于系统地址的情况下,则已经存在非法数据访问的指示器被送至异常生成器1130。
在结果不等于0或dfetch等于系统地址的情况下,则组合监视周期结束。
结束组合周期的操作在图11中由步骤1512所示出。
在一些实施例中,异常生成器1130可以被配置为在检测到来自组合监视器的已经发生非法数据访问的指示器时将失败状态组合寄存器值设置为1(failure_status.comb==1)并且进一步声明获取异常值(fetch_exception)。
在异常生成器初始化非法数据访问响应的操作在图11中由步骤1513所示出。
此外,在一些实施例中,异常生成器1130在确定失败状态组合设置时可以被配置为读取失败地址(dfetch_failure_addr),读取与失败地址相关联的指令地址(ifetch_failure_addr),并且进一步读取监管者模式和当前活跃的模式上下文值。
读取失败地址、指令地址以及监管者和当前活动上下文值的操作在图11中由步骤1515所示出。
换句话说,在failure_status.comb=“1”时,可以读取dfetch失败地址,其包含非法数据访问的地址。此外,ifetch地址包含进行非法数据访问的指令的地址。将要注意的是,在一些实施例中,可以读取ifetch_good_address,然而,这仅能够依赖于failure_status.ifetch值也等于1。
在一些实施例中,异常生成器1130可以被配置为无论何时设置了value_status寄存器的任意值都输出fetch_exception值作为声明。failure_status寄存器可以在对其进行写入时被清空。此外,failure_status寄存器可以与时钟CPU值同步。将要理解的是,失败地址寄存器和ifetch良好地址寄存器在没有声明获取异常值时没有被定义,因为它们以CPU时钟为时钟而没有被重新同步到安全总线域中。然而,它们在获取和异常值被声明的同时被保证是稳定的。
一般而言,本发明的各个实施例可以以硬件或专用电路、软件、逻辑或者其任意组合来实现。例如,一些方面可以以硬件来实现,而其它方面可以以固件或可以由控制器、微处理器或其它计算设备所执行的软件来实现,虽然本发明并不局限于此。虽然本发明的各个方面可以被图示和描述为框图、流程图,或者使用其它一些图形表示形式进行图示和描述,但是所要理解的是,在非限制性示例中,这里所描述的这些模块、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其它计算设备,或者其一些组合来实现。
本申请的实施例可以由计算机软件或者硬件或者由软件和硬件的组合来实现,该软件可由移动设备的诸如处理器实体中的数据处理器执行。此外,就此而言所要注意的是,如图中逻辑流程的任意框可以表示程序步骤,或者互连的逻辑电路、块或功能,或者程序步骤和逻辑电路、块和功能的组合。软件可以存储在诸如存储器芯片或者处理器内实施的存储器模块的物理媒体上,诸如硬盘或软盘的磁性媒体上,以及例如DVD及其数据变化形式、CD的光学媒体上。
存储器可以是适于本地技术上下文的任意类型并且可以使用任意适当的数据存储技术来实现,诸如基于半导体的存储器设备、磁性存储器设备和系统、光学存储器设备和系统、固定存储器和可移动存储器。数据处理器可以是适于本地技术上下文的任意类型,并且作为非限制性示例可以包括一个或多个通用计算机、专用计算机、微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、门级电路以及基于多核处理器架构的处理器。
本发明的实施例可以在诸如集成电路模块的各种组件中进行实践。集成电路的设计是通过(且本身是)高度自动化的过程。复杂且有力的软件工具可用于将逻辑水平的设计转换为准备蚀刻并形成在半导体衬底上的半导体电路设计。
诸如加利福尼亚Mountain View的Synopsys和加利福尼亚SanJose的CadenceDesign所提供的那些程序使用妥善建立的设计规则以及预先存储的设计模块库在半导体芯片上自动规划导线并定位组件。一旦完成了半导体电路的设计,以标准化电子格式(例如,Opus、GDSII等)所产生的设计可以被传送至半导体制造工具或“fab”以进行制造。
以上描述已经通过示例性且非限制性的示例提供了本发明示例性实施例的全面和信息性的描述。然而,当结合附图和所附权利要求进行阅读时,鉴于以上描述,各种修改和适配形式对于本领域技术人员将变得明显。然而,本发明教导的所有这些和类似的修改形式仍然将落入如所附权利要求所确定的本发明的范围之内。
Claims (21)
1.一种监视器,包括:
寄存器,其被配置为存储至少两个上下文以及上下文变化值,其中每个上下文包括定义存储器中地址范围的信息,所述存储器中地址范围被允许用于通过由处理单元执行的软件处理进行的指令获取访问或者数据读写访问;
上下文选择器,其被配置为取决于确定所述寄存器中所存储的所述上下文变化值与由所述处理单元输出的、用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的存储器访问地址的第一部分相匹配,选择所述至少两个上下文中的一个上下文以进行上下文监视;以及
地址监视器,其被配置为接收所述存储器访问地址,并且将用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的所述存储器访问地址的值与定义用于所述至少两个上下文中所选择的所述上下文的所允许的所述存储器中地址范围的所述信息进行比较,所述地址监视器进一步被配置为在所述存储器访问地址处于所允许的所述地址范围之外的情况下产生所述软件处理的存储单元执行的中断。
2.根据权利要求1的监视器,其中所述至少两个上下文中的每个上下文与标识符值相关联,并且其中所述上下文选择器取决于所述标识符值与由所述处理单元输出的用于由被执行的所述软件处理所请求的指令获取访问或者数据读写访问的所述存储器访问地址的第二部分相匹配,选择所述至少两个上下文中所选择的所述一个上下文以进行上下文监视。
3.根据权利要求1或2的监视器,其中针对每个上下文的所述存储器中地址范围包括以下的至少一个:
指令地址范围;
数据读取地址范围;以及
数据写入地址范围。
4.根据权利要求1或2的监视器,其中数据访问存储器地址是所述存储器访问地址。
5.根据权利要求1或2的监视器,其中所述上下文选择器进一步被配置为接收监管者模式指示器信号,并且仅在所述监管者模式指示器信号指示所述处理单元以监管者模式进行操作以及所述第一部分与所述上下文变化值相匹配的情况下选择所述至少两个上下文中的所述上下文以进行上下文监视。
6.一种处理器模块,包括:
中央处理单元;
耦合至所述中央处理单元的存储器;以及
监视器,其被配置为从所述中央处理单元接收存储器访问地址值,并且包括:
寄存器,其被配置为存储至少两个上下文以及上下文变化值,其中每个上下文包括定义存储器中地址范围的信息,所述存储器中地址范围被允许用于通过由所述中央处理单元所执行的软件处理进行的指令获取访问或者数据读写访问;以及
上下文选择器,其被配置为取决于确定所述寄存器中所存储的所述上下文变化值与由所述中央处理单元输出的、用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的存储器访问地址的第一部分相匹配,选择所述至少两个上下文中的一个上下文以进行上下文监视;以及
地址监视器,其被配置为接收所述存储器访问地址,并且将用于由所执行的所述软件处理请求的所述指令获取访问或者数据读写访问的所述存储器访问地址的值与定义用于所述至少两个上下文中所选择的所述上下文的所允许的所述存储器中地址范围的所述信息进行比较,所述地址监视器进一步被配置为在所述存储器访问地址处于所允许的所述地址范围之外的情况下产生所述软件处理的存储单元执行的中断。
7.根据权利要求6的处理器模块,进一步包括安全块,其被配置为向所述监视器输出至少两个上下文和所述上下文变化值。
8.一种监视器,包括:
存储设备,其被配置为存储至少两个上下文和上下文变化值,其中每个上下文包括定义存储器中地址范围的信息,所述存储器中地址范围被允许用于通过由中央处理单元所执行的软件处理进行的指令获取访问或者数据读写访问;
选择电路,其被配置为在由所述中央处理单元输出的、用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的存储器访问地址的第一部分与由所述存储设备存储的所述上下文变化值相匹配的情况下,在所述至少两个上下文之间进行选择以进行上下文监视;以及
地址监视器,其被配置为接收所述存储器访问地址,并且将用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的所述存储器访问地址的值与定义用于所述至少两个上下文中所选择的所述上下文的所允许的所述存储器中地址范围的所述信息进行比较,所述地址监视器进一步被配置为在所述存储器访问地址处于所允许的所述地址范围之外的情况下产生所述软件处理的存储单元执行的中断。
9.根据权利要求8的监视器,其中所述至少两个上下文中的每个上下文与标识符值相关联;并且其中所述选择电路进一步被配置为选择所述两个上下文中、其标识符值与所述存储器访问地址的第二部分相匹配的一个上下文以进行上下文监视。
10.根据权利要求8或9的监视器,其中用于每个上下文的所述存储器中地址范围包括以下的至少一个:
指令地址范围;
数据读取地址范围;以及
数据写入地址范围。
11.根据权利要求8或9的监视器,其中数据访问存储器地址是所述存储器访问地址。
12.根据权利要求8或9的监视器,进一步包括输入端,其被配置为接收监管者模式指示器信号,所述选择电路被配置为仅在所述监管者模式指示器信号指示所述处理单元以监管者模式进行操作以及所述第一部分与所述上下文变化值相匹配的情况下选择所述至少两个上下文中的一个上下文以进行上下文监视。
13.根据权利要求8或9的监视器,进一步包括:
比较电路,其被配置为将所述存储器访问地址的值与所述两个上下文中所选择的所述一个上下文进行比较。
14.根据权利要求13的监视器,进一步包括中断输出端,其被配置为在所述存储器访问地址的所述值处于所允许的所述地址范围之外时生成系统中断。
15.一种处理器模块,包括:
处理单元,其被配置为操作指令和处理数据;
存储器,被配置为所述指令和所述数据;以及
监视器,其包括:
存储设备,其被配置为存储至少两个上下文和上下文变化值,其中每个上下文包括定义存储器中地址范围的信息,所述存储器中地址范围被允许用于通过由所述处理单元所执行的软件处理进行的指令获取访问或者数据读写访问;
选择电路,其被配置为在由所述处理单元输出的、用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的存储器访问地址的第一部分与由所述存储设备存储的所述上下文变化值相匹配的情况下,在所述至少两个上下文之间进行选择以进行上下文监视;以及
地址监视器,其被配置为接收所述存储器访问地址,并且将用于由所执行的所述软件处理请求的所述指令获取访问或者数据读写访问的所述存储器访问地址的值与定义用于所述至少两个上下文中所选择的所述上下文的所允许的所述存储器中地址范围的所述信息进行比较,所述地址监视器进一步被配置为在所述存储器访问地址处于所允许的所述地址范围之外的情况下产生所述软件处理的存储单元执行的中断。
16.根据权利要求15的处理器模块,进一步包括输出端,其被配置为向所述监视器输出所述至少两个上下文和所述上下文变化值。
17.一种用于监视存储器访问的方法,包括:
存储至少两个上下文和上下文变化值,其中每个上下文包括定义存储器中地址范围的信息,所述存储器中地址范围被允许用于通过由处理单元执行的软件处理进行的指令获取访问或者数据读写访问;
确定由所述处理单元输出的、用于由所执行的所述软件处理请求的指令获取访问或者数据读写访问的存储器访问地址的第一部分是否与所存储的所述上下文变化值相匹配;
在所述存储器访问地址的所述第一部分与所存储的所述上下文变化值相匹配的情况下,选择所述至少两个上下文中的一个上下文以进行上下文监视;
将用于由所执行的所述软件处理请求的所述指令获取访问或者数据读写访问的所述存储器访问地址的值与定义用于所述至少两个上下文中所选择的所述上下文的所允许的所述存储器中地址范围的所述信息进行比较;以及
在所述存储器访问地址处于所允许的所述地址范围之外的情况下产生所述软件处理的存储单元执行的中断。
18.根据权利要求17的方法,其中所述至少两个上下文中的每个上下文与标识符值相关联;并且其中所述选择进一步包括:
确定所述存储器访问地址的第二部分是否跟与所述至少两个上下文中的一个上下文相关联的标识符值相匹配;以及
在所述存储器访问地址的所述第二部分匹配的情况下,选择所述至少两个上下文中的所述上下文以进行上下文监视。
19.根据权利要求17或18的方法,其中用于每个上下文的所述存储器中地址范围包括以下的至少一个:
指令地址范围;
数据读取地址范围;以及
数据写入地址范围。
20.根据权利要求17或18的方法,其中数据访问存储器地址是所述存储器访问地址。
21.根据权利要求17或18的方法,进一步包括:
接收监管者模式指示器信号;以及
仅在所述监管者模式指示器信号指示所述处理单元以监管者模式进行操作以及所述第一部分与所述上下文变化值相匹配的情况下,选择所述至少两个上下文中的所述上下文以进行上下文监视。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1121680.1A GB2497736A (en) | 2011-12-16 | 2011-12-16 | Hardware monitor with context selector for selecting from multiple contexts |
GB1121680.1 | 2011-12-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103164316A CN103164316A (zh) | 2013-06-19 |
CN103164316B true CN103164316B (zh) | 2017-07-21 |
Family
ID=45560580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210563592.9A Active CN103164316B (zh) | 2011-12-16 | 2012-12-17 | 硬件监视器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9753870B2 (zh) |
CN (1) | CN103164316B (zh) |
GB (1) | GB2497736A (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9658937B2 (en) | 2015-03-17 | 2017-05-23 | Qualcomm Incorporated | Optimization of hardware monitoring for computing devices |
GB2539435B8 (en) | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level |
GB2539429B (en) | 2015-06-16 | 2017-09-06 | Advanced Risc Mach Ltd | Address translation |
GB2539436B (en) | 2015-06-16 | 2019-02-06 | Advanced Risc Mach Ltd | Secure initialisation |
GB2539433B8 (en) * | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Protected exception handling |
GB2539428B (en) | 2015-06-16 | 2020-09-09 | Advanced Risc Mach Ltd | Data processing apparatus and method with ownership table |
CN108763027A (zh) * | 2018-05-31 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种硬盘监控方法、装置及服务器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908904A (zh) * | 2005-08-05 | 2007-02-07 | 三菱电机株式会社 | 实时内部简易监视器 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5263147A (en) * | 1991-03-01 | 1993-11-16 | Hughes Training, Inc. | System for providing high security for personal computers and workstations |
US6052801A (en) * | 1995-05-10 | 2000-04-18 | Intel Corporation | Method and apparatus for providing breakpoints on a selectable address range |
US6092155A (en) * | 1997-07-10 | 2000-07-18 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems |
US6282657B1 (en) * | 1997-09-16 | 2001-08-28 | Safenet, Inc. | Kernel mode protection |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6587967B1 (en) * | 1999-02-22 | 2003-07-01 | International Business Machines Corporation | Debugger thread monitor |
US20020065646A1 (en) * | 2000-09-11 | 2002-05-30 | Waldie Arthur H. | Embedded debug system using an auxiliary instruction queue |
US7093236B2 (en) * | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
EP1331539B1 (en) * | 2002-01-16 | 2016-09-28 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
WO2004046924A1 (en) * | 2002-11-18 | 2004-06-03 | Arm Limited | Processor switching between secure and non-secure modes |
US7334161B2 (en) * | 2004-04-30 | 2008-02-19 | Arm Limited | Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus |
DE602004031719D1 (de) * | 2004-07-01 | 2011-04-21 | Texas Instruments Inc | Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus |
US7246213B2 (en) * | 2004-07-28 | 2007-07-17 | Hewlett-Packard Development Company, L.P. | Data address security device and method |
US7782329B2 (en) * | 2004-12-10 | 2010-08-24 | Rockwell Collins, Inc. | Method and apparatus for protected graphics generation |
US7865704B2 (en) * | 2006-03-29 | 2011-01-04 | Freescale Semiconductor, Inc. | Selective instruction breakpoint generation based on a count of instruction source events |
US20080244155A1 (en) * | 2007-03-30 | 2008-10-02 | Kyungwoo Lee | Methods and apparatus to protect dynamic memory regions allocated to programming agents |
GB2448151B (en) * | 2007-04-03 | 2011-05-04 | Advanced Risc Mach Ltd | Memory domain based security control within data processing systems |
US20110258421A1 (en) * | 2010-04-19 | 2011-10-20 | International Business Machines Corporation | Architecture Support for Debugging Multithreaded Code |
-
2011
- 2011-12-16 GB GB1121680.1A patent/GB2497736A/en not_active Withdrawn
-
2012
- 2012-12-05 US US13/705,315 patent/US9753870B2/en active Active
- 2012-12-17 CN CN201210563592.9A patent/CN103164316B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908904A (zh) * | 2005-08-05 | 2007-02-07 | 三菱电机株式会社 | 实时内部简易监视器 |
Also Published As
Publication number | Publication date |
---|---|
GB2497736A (en) | 2013-06-26 |
US20130159661A1 (en) | 2013-06-20 |
US9753870B2 (en) | 2017-09-05 |
CN103164316A (zh) | 2013-06-19 |
GB201121680D0 (en) | 2012-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103164316B (zh) | 硬件监视器 | |
CN103294557B (zh) | 具有活动和非活动执行核心的多核处理器 | |
KR100388550B1 (ko) | 멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경 | |
CN103119554B (zh) | 提供平台无关的存储器逻辑 | |
US7284166B2 (en) | Programmable multi-mode built-in self-test and self-repair structure for embedded memory arrays | |
US20100058144A1 (en) | Memory system with ecc-unit and further processing arrangement | |
WO2018118837A1 (en) | Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic | |
US8006144B2 (en) | Memory testing | |
CN106133704A (zh) | 内存故障隔离方法和装置 | |
TWI512460B (zh) | 一種用以處理資料的裝置及方法,及執行該方法之虛擬機器 | |
CN108319525A (zh) | 开关装置及检测集成电路总线的方法 | |
EP2615551B1 (en) | Abnormality inspection device, central processing unit, and abnormality inspection method | |
US7607038B2 (en) | Systems and methods for CPU repair | |
JPH05225067A (ja) | 重要メモリ情報保護装置 | |
US11625316B2 (en) | Checksum generation | |
US20090037783A1 (en) | Protecting data storage structures from intermittent errors | |
US20030133336A1 (en) | Method and apparatus for dynamically hiding a defect in an embedded memory | |
US7617428B2 (en) | Circuits and associated methods for improved debug and test of an application integrated circuit | |
US20140195845A1 (en) | Fault isolation with abstracted objects | |
US9489255B2 (en) | Dynamic array masking | |
US7533293B2 (en) | Systems and methods for CPU repair | |
GB2514611A (en) | Storage integrity validator | |
TWI733964B (zh) | 記憶體整體測試之系統及其方法 | |
WO2019169615A1 (zh) | 访问指令sram的方法和电子设备 | |
CN114846552A (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 |