CN1920797A - 存储器访问控制装置 - Google Patents
存储器访问控制装置 Download PDFInfo
- Publication number
- CN1920797A CN1920797A CNA2006101214554A CN200610121455A CN1920797A CN 1920797 A CN1920797 A CN 1920797A CN A2006101214554 A CNA2006101214554 A CN A2006101214554A CN 200610121455 A CN200610121455 A CN 200610121455A CN 1920797 A CN1920797 A CN 1920797A
- Authority
- CN
- China
- Prior art keywords
- address
- territory
- register
- regional
- processor request
- 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
Links
Images
Classifications
-
- 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
- G06F12/1466—Key-lock mechanism
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在区域切换表中,定义了覆盖存储空间的地址区域,并且列出了可以访问在对应于程序组件的域中的区域的操作。在相应的寄存器中保存指示对应于执行中的程序组件的域的域号,以及指示包含之前访问的地址的区域的区域号。装置包括访问检查单元,如果处理器请求地址(VA)落在区域边界之外,则发出第一中断。如果根据对应于包含处理器请求地址(VA)的区域的域号的许可属性,不许可处理器请求操作码(OP),则访问检查单元还发出第二中断。如果已出现第一中断或第二中断,则访问检查单元将中断因子写入寄存器。
Description
技术领域
本发明涉及一种存储器访问控制装置。
背景技术
诸如CPU这样的计算装置提供了可以在其中相对于程序执行平面寻址(flat addressing)(例如其中,单个整数指定存储空间的唯一位置)的存储空间。使用许可平面寻址的存储空间使得能够共享利用指针(即,存储存储器地址的变量;通过使用程序语言抽象化存储器地址的方法)构造数据结构的方法或者不需要拷贝操作的数据,从而生成高效率的程序。但是,如果在部分程序中存在有缺陷的或者恶意的代码,那么整个程序的可靠性就会降低。
通过关联多个程序组件(在这种情况下是组成元素)而生成需要高可靠性的大规模程序。生成程序,从而使得各个程序组件具有定义清晰的公共接口并且彼此链接,并且将存储器的访问区域和各个程序组件之间的子程序(subroutine)调用限制在所需的范围内。
当以这样的方式将预定限制施加于每个程序组件的存储器访问和子程序调用时,即使在程序组件中存在有缺陷的或者恶意的代码,该代码的影响可以被抑制在预定范围之内。这样可以改善整个程序的可靠性。
对于每个程序组件的存储器访问,生成许可映射表,其中定义了可访问的地址区域和相应的操作类型。通过参照此许可映射表来执行访问限制。写入许可映射表的存储区域分散在存储设备的地址空间中,指示存储区域的开始和结束的地址并不总是对准在每个页边界处。此外,如果改变程序以及将程序组件替换为新的,那么需要相应地极大地改变许可映射表。
使用这种许可映射表的访问控制方法包括传统的MMU(MemoryManagement Unit,存储器管理单元)方案、ABR(Address BoundaryRegister,地址边界寄存器)方案,以及混合方案。
在MMU方案中,通过为由存储器管理单元所管理的页表项提供许可位,从而以页为基础来执行访问限制。一页(通常是4K字节)作为访问控制单元,对于软件对象(例如变量或者子程序)的保护单元是足够大的。当沿着页边界对程序中的保护目标分类时,页中会出现碎片,从而导致存储器的使用效率降低。通常,将被存储在页表项中的许可位被限制于少量集合中,由此不能高效地复用对应于执行中的程序组件的许可映射表。
在ABR方案中,通过提供地址边界寄存器或者指定了可访问区域的上下限的段描述符来限制可访问地址值的范围。尽管可以任意定义访问控制单元的位置和大小,但是可以同时指定的存储区域的数量受地址边界寄存器的数量的限制。
在混合方案中,将同时定义包括上下限地址的组合、许可位以及优先级在内的多组信息,并根据包含请求地址的最高优先级范围中的许可位执行访问控制。地址范围或者通过使用地址的高位序列的方案指定,或者通过使用美国专利No.7068545中描述的地址边界寄存器的方案来指定。在这些方案中,当通过地址的高位字符串指定地址范围时,将在地址范围的大小和位置上施加严格的限制。在这种情况下,严格的限制表明可以指定的地址范围局限于2的幂,并且该范围的地址局限于该大小的倍数。
根据这种方法,在不改变任何程序代码的情况下,不能高效地为每个程序组件限制访问存储区域。
发明内容
根据本发明的一个方面,提供了一种存储器访问控制装置,包括:第一贮存器,用于存储区域切换表(region switching table),其中定义了覆盖存储空间的多个地址区域,并且列出了可以访问在对应于程序的组件的多个域(domain)中的区域的操作;第一寄存器,用于保存中断因子(interrupt factor);第二寄存器,用于保存域号,该域号指示对应于执行中的程序组件的域;第三寄存器,用于保存区域号,该区域号码指示包含之前访问过的地址的区域;以及访问检查单元,用于接收处理器请求地址(VA)、处理器请求操作码(OP)、域号和区域号,如果处理器请求地址(VA)落在由区域切换表中的区域号所指定的区域边界外,则发出第一中断,如果根据对应于包含处理器请求地址(VA)的区域的域号的许可属性,不许可处理器请求操作码(OP),则发出第二中断,如果出现第一中断或第二中断,则将包含处理器请求地址(VA)的第一中断因子和包含处理器请求操作码(OP)的第二中断因子写入第一寄存器。
附图说明
图1是显示包含根据一个实施例的访问控制装置的计算机系统的框图;
图2是显示访问控制装置的功能框图;
图3是显示访问检查单元的控制寄存器的视图;
图4是显示区域切换表和域切换表的视图;
图5是显示如何编码区域切换表和域切换表的例子的视图;
图6是访问检查单元初始化设备的流程图;
图7是显示访问检查单元的操作流程的流程图;
图8是区域切换设备的流程图;
图9是域切换设备的流程图;
图10是显示访问检查单元的视图;以及
图11是显示启动、挂起以及终止程序的操作的流程图。
具体实施方式
以下将参照附图描述本发明的实施例。
首先将参照图1简要描述在计算机系统中提供根据实施例的访问控制装置的实例。
如图1所示,该计算机系统包括执行主要计算的处理器内核11,用于记录信息的主存储器19,控制到处理器内核11的中断的中断控制器13(INTC),用于管理主存储器19的操作的存储器管理单元12(MMU),指令/数据缓存15,用于将处理器连接到总线18的总线接口单元16(BIU),用于将主存储器19连接到总线18的存储器控制器20,以及连接到处理器内核11和中断控制器13并根据正在执行的程序进行访问控制的访问检查单元14(ACU)。存储器系统包括从处理器内核11到主存储器19的路径上的元件,并由存储器管理单元12、指令/数据缓存15、存储器控制器20、主存储器19等等分层地构成。访问检查单元14位于处理器内核11和存储器系统之间并且监控对处理器内核11的存储器系统的访问。更特别地,处理器内核11接收访问存储器系统的请求和操作码,并查询关于正在执行的程序的访问控制信息。当程序向存储器系统发出访问请求时,许可或禁止该访问。
根据该实施例的访问控制装置位于图1所示的访问检查单元14和主存储器19上。
如图2所示,该访问控制装置包括访问检查单元14(ACU)、ACU控制寄存器30(REG)、ACU初始化设备23(INI)、区域切换设备24(RSC)、以及域(domain)切换设备25(DSC)。主存储器19包括域切换堆栈27(DSS)、区域切换表28(RST)、以及域切换表29(DST)。应当注意到,管理程序22包括模块23、24、以及25。访问控制信息26包括模块27、28、以及29。该访问控制信息包括访问控制信息26的区域切换表28和域切换表29。
在该访问控制装置中,执行程序之前,ACU初始化设备23(INI)在主存储器19中存储反映应用程序21的结构的访问控制表(28和29)作为保护目标。然后访问控制装置将区域切换表28(RST)存储在ACU控制寄存器(REG)中,并启动应用程序21。然后访问检查单元14通过查询区域切换表28(RST)来监控应用程序21的存储器访问。一检测到异常,访问检查单元14就生成到处理器内核11的中断,并将控制权转移到管理程序(区域切换设备24和域切换设备25)。区域切换设备24(RSC)和域切换设备25(DSC)独立于应用程序21设置并切换的许可映射表。
以这种方式改变写入访问控制表的内容使得可以在考虑到可靠性和性能之间的平衡的情况下执行调整。
如果正在执行的程序所请求的地址中存在空间局部性,那么通过软件来实现降低访问控制装置的使用频率的功能(具体地,设备24和25)。这样可以在不显著降低性能的情况下减少处理器内核11的开销和功耗。
在这种情况下,访问控制表包括用于许可程序访问存储器的许可映射表,以及定义切换程序所访问的存储器区域的切换许可信息的数据,或者访问控制表包括区域切换表和域切换表。
如图2中的箭头31所示,将代表请求码和请求地址的信号与CPU时钟同步地从处理器内核11输入到访问检查单元14。ACU控制寄存器30将区域号(图3中的RN#)、域号(图3中的DN1)以及区域切换表28(图3中的TAB)输入到访问检查单元14(ACU)。一旦在来自应用程序的存储器访问中检测到异常,访问检查单元14就将异常(exception)传输到处理器内核11。当出现异常时,访问检查单元将异常代码(图3中的INT)、异常出现时的内核请求代码(图3中的OPC)以及内核请求地址(图3中的ADR)存储到寄存器30中。操作请求代码包括三个部分,即存储器操作类型(R|W|X)、控制转移因子(call|retn|othr)、以及访问请求时的访问寄存器号。存储器操作类型是存储器读取(R)、存储器写入(W)、或者指令读取(X)。控制转移因子是子程序调用(call)、过程返回(retn)、或者其它(othr)。
一接收到来自访问检查单元14的中断,处理器内核11就挂起应用程序21的执行,并启动预先注册的软件实现(可实现)单元22的区域切换设备24或域切换设备25。区域切换设备24从ACU控制寄存器30读入中断因子,并通过查询区域切换表28来更新区域号(图3中的RN#)。域切换设备25从ACU控制寄存器30读入中断因子,并通过查询域切换表29(图4)和域切换堆栈27(图4)来更新域号(图3中的DN1)。域切换设备25有时检测到对存储器的访问违例(INT3)或域切换违例(INT4)。如果管理程序(区域切换设备24或域切换设备25)在没有检测到任何违例的情况下终止,那么处理器内核11从出现异常的指令处恢复应用程序。
根据本实施例的访问控制装置使用在程序执行期间限制处理器内核11所请求的存储器访问的方法,并使用对应于程序的静态结构的访问控制表28和29(图4)以及对应于程序的动态状态的ACU控制寄存器30和域切换堆栈27,通过查询访问控制表和控制寄存器来确定许可/禁止来自程序的访问。
在根据本实施例的访问控制装置中,关于访问控制表的排列和位置,该表被分割为区域切换表28以及域切换表29,在该区域切换表28中描述了每个程序组件的许可映射表,在该域切换表29中描述了程序组件之间的控制转移的关系,并且将频繁访问的区域切换表28放置在ACU控制寄存器30(REG)中,从而实现了速度的提高和可靠性的增强。
下面将参照图4描述本实施例的区域切换表28(RST)、域切换表29(DST)以及域切换栈27(DSS)。
如图4所示,由行方向的地址和列方向的域指示本实施例的区域切换表28(DSS)。在这种情况下,指令区域(“r-x”,例如,0x5)的范围为域dom-0中从地址rst.addr[0]到地址rst.addr[1]的范围,访问禁止区域(“---”,例如,0x0)分布在域dom-0中从地址rst.addr[1]到地址rst.addr[2]的范围中,只读区域(“r--”,例如,0x1)分布在域dom-0中从地址rst.addr[2]到地址rst.addr[3]的范围中,读/写区域(“rw-”,例如,0x3)分布在域dom-0中从地址rst.addr[3]到地址rst.addr[4]的范围中,访问禁止区域(“---”,例如,0x0)分布在域dom-0中从地址rst.addr[4]到地址rst.addr[5]的范围中。访问禁止区域(“---”,例如,0x0)还分布在域dom-0中从地址rst.addr[5]到后续地址的范围中。此外,访问禁止区域(“---”,例如,0x0)分布在域dom-1中从地址rst.addr[0]到地址rst.addr[1]的范围中,指令区域(“r-x”,例如,0x5)分布在域dom-1中从地址rst.addr[1]到地址rst.addr[2]的范围中,只读区域(“r--”,例如,0x1)分布在域dom-1中从地址rst.addr[2]到地址rst.addr[3]的范围中,访问禁止区域(“---”,例如,0x0)分布在域dom-1中从地址rst.addr[3]到地址rst.addr[4]的范围中,读/写区域(“rw-”,例如,0x3)分布在域dom-1中从地址rst.addr[4]到地址rst.addr[5]的范围中,以及完全访问许可区域(“rwx”,例如,0x7)分布在域dom-1中从地址rst.addr[5]到后续地址的范围中。
域切换表29(DST)指示域dom-0和域dom-1的入口dst.addr[0]、dst.addr[1]、dst.addr[2]以及dst.addr[3]的位置。域切换堆栈27(DSS)具有如图4所示的设置。
定义了称为保护域的逻辑单元,并且将程序的可执行代码分配到保护域中的一个。公共访问许可映射表用于分配给相同保护域的可执行代码。如果有缺陷的或恶意的部分存在于可执行代码中,那么这部分的影响所到达的范围成为保护域。
尽管假定将保护域分配给程序的每个组件,但是可以将一个保护域分配到彼此关联的多个组件(对应于相同的制造者)。程序具有多个域,并且将程序组件中存在的缺陷分离到各个域中。假定保护域由一个数字唯一标识,以下将该标识符称为域号。
将程序的所有保护域之中具有公共许可属性的地址组合到同一个簇中,将各个地址分类为簇。此后,连续地址值属于同一个簇的最大范围称为保护区域。根据该定义表示区域切换表可以确保区域原子性。
根据该定义,所有区域的集合在不重叠的情况下覆盖整个地址空间。提供保护域和请求地址将会确定可以应用于一个地址范围的操作。每个区域可以通过使用地址唯一(一对一)标识,以下将该标识符称为区域号。
接下来将参照图3描述控制访问检查单元14(ACU)的操作的ACU控制寄存器30(REG)。
控制寄存器(CTR)是指定访问检查的存在/缺少的寄存器,用于打开/关闭来自处理器内核11的访问检查。如果访问检查单元14检测到异常并启动异常处理程序,那么访问检查单元14将控制寄存器(CTR)的值从打开(ON)切换到关闭(OFF)。
请求地址寄存器(ADR)是在出现异常时记录由处理器内核11请求的地址的寄存器。访问检查单元14将这个地址写入该寄存器。执行管理程序22的处理器内核11读出该地址。
请求操作码寄存器(OPC)是在出现异常时记录由处理器内核11请求的操作码的寄存器。访问检查单元14将这个代码写入该寄存器。执行管理程序22的处理器内核11读出该代码。
操作请求代码寄存器(OPC)的值包括三个部分,即存储器操作类型(opc[0]∷=R|W|X)、控制转移因子(opc[1]∷=call|retn|othr)、以及生成访问请求时的地址寄存器号(opc[2])。存储器操作类型是存储器读取(R)、存储器写入(W)、或者指令读取(X)。控制转移因子是子程序调用(call)、过程返回(retn)、或者其它(othr)。
在检测到异常时由访问检查单元14更新异常代码寄存器(INT)。处理器内核11在执行异常处理代码的过程中查询该寄存器。异常代码包括区域切换异常(INT1)以及域切换异常(INT2)。
地址边界数组数据库(TP1)是保存区域切换表中的地址数组(rst.addr[])的头部的ACU控制寄存器号的寄存器,并且在执行相同的应用程序时不必改变寄存器值。
许可数组数据库(TP2)是保存区域切换表中的许可数组(rst.perm[])的头部的ACU控制寄存器号的寄存器,并且在执行同一个应用程序时不需要改变寄存器值。
域号寄存器(DN1)保存用于在执行应用程序时识别保护域的域号。当保护域变化时,域切换设备25(将在后面描述)更新域号寄存器。
区域号寄存器(RN#)保存对应于包括之前刚刚访问的地址的区域的区域号,以便与处理器内核11的地址寄存器配对。当地址变化到该区域之外时,区域切换设备24(将在后面描述)更新区域号寄存器。当存储器访问中存在空间局部性时,可以通过为每个地址寄存器复用区域号寄存器来降低区域切换设备24的执行次数。
图5中的“RST”显示区域切换表28的编码的例子。定义了覆盖平面存储器空间的多个地址区域,并列出了可以访问在各个域中的存储区域的操作。区域切换表包括边界地址数组rst.addr[]和许可位图(bitmap)数组rst.perm[]。该表的大小N被记录为区域表区域的开始字。在地址数组rst.addr[]中,按照地址值的次序排列并存储区域边界地址,并将地址空间的下限(在32-位地址的情况下是0x00000000)和下限(在32-位地址的情况下是Oxffffffff)存储为由数组的开头rst.addr[0]和结尾rst.addr[M]所定义的元素。假定具有区域号i的区域是由大于等于rst.addr[i]并小于rst.addr[i+1]所定义的地址区。应当注意到,假定用于该实例的符号“x.y[z]”为“当从变量x中获取具有名称y的分量,并且所获取的y被看作数组时的第z个分量”。
在位图数组rst.perm[]中,将具有区域号i的许可属性以位图格式存储为第i个元素rst.perm[i],并将相对于域号j的许可属性存储为相同位图的第j个槽(slot)rst.perm[i][j]。在这个编码的例子中,每个槽包括四个位,域可以写最多八个。
图5显示域切换表DST的编码的例子。域切换表包括地址数组dst.addr[]和位图数组dst.perm[]。该表的大小M被存储为域切换表区域的开始字。在地址数组dst.addr[]中,将指示保护域的入口的地址列表以地址的次序排列并存储。分量dst.perm[k].dom和dst.perm[k].call保存入口点dst.addr[k]的附属域号以及指示在第k个元素上许可还是禁止来自另一个域的调用的位图。
通常,保护域的入口点是由程序组件对外部公开的接口函数地址(应用程序编程接口的起始地址)。
假定除执行应用程序21的用户模式之外,处理器内核11还具有执行管理程序22的特权模式,区域切换设备24和域切换设备25以特权模式执行操作,并且在特权模式中不对存储器的访问执行检查。当访问检查单元14产生错误(fault)时,处理器内核11挂起应用程序21的执行,将执行模式从用户模式切换到特权模式,并启动预先注册为异常处理程序的管理程序。
因为将在该处理器中注册的异常处理程序是区域切换设备24或者域切换设备25自身,所以假设管理程序22是将被根据错误类型而激活的管理程序。可以通过关闭上述控制寄存器CTR,在上述特权模式中挂起访问检查。
接下来将参照图3、6、7、8、9以及10描述访问检查装置的操作。
如图2所示,访问检查单元14在接收到来自ACU控制寄存器30的信息和由处理器内核所请求的地址VA和操作码OP后进行操作,并在出现异常时输出地址ADR、操作码OPC、以及异常因子代码INT。
如图3和6所示,访问检查单元14根据区域号寄存器(RN#)确定地址边界值,检验内核请求地址VA是否包含在地址边界中,根据域号寄存器的值确定对该区域的许可位,并检验是否可以访问该区域。如果在前一个检查中确定了错误,那么生成地址边界错误(INT1)。如果在后一个检查中确定了错误,那么生成域边界错误(INT2)。
如图10所示,将访问检查单元14实现为硬件电路,与CPU周期同步地检验对应用程序的访问违例。不会出现伴随访问检查的处理延迟,除非生成了错误。
只有当控制寄存器CTR是打开(ON)时,访问检查单元14在处理器内核11访问主存储器19之前确定访问的许可/抑制。访问检查单元14检验对应于区域切换表TP1中的区域号RN#的表项。如果请求地址VA落在区域边界外部,则生成区域边界错误(INT1)。如果检验对应于包括地址VA的区域入口的域DN1的许可属性,并且没有许可请求码OP,那么生成域边界错误(INT2)。当出现异常时,将导致该异常的指令的请求地址VA、操作码OP、以及异常因子分别存储为ADR、OPC、以及INT。然后关闭控制寄存器CTR,并在处理器内核11中生成中断。处理器内核11挂起应用程序,并启动管理程序(区域切换设备24和域切换设备25)。应当注意到,当从管理程序进行恢复时,打开控制寄存器CTR以从应用程序中出现异常的指令地址重新开始。
接下来将参照图3和8描述区域切换设备24的操作。
如果由处理器内核11请求的存储器地址落在由当前区域号指示的区域边界的外部,那么访问检查单元14生成地址边界错误(INT1),并将处理器内核11切换到特权模式以便起动区域切换代码。
当出现异常时的因子是INT1时则调用区域切换设备24。然后区域切换设备24接收异常出现时的内核请求地址ADR和对应处理的区域切换表TP1,并输出包括请求地址ADR的新区域号码RN#。根据内核请求操作码OPC和对应于处理器内核11的ISA(Instruction SetArchitecture,指令系统结构)的地址寄存器号来确定应该在其中存储区域号的寄存器。
区域切换设备24通过二分检索法在区域切换表28中搜索包含请求地址VA的区域号,并在区域号寄存器RN#中设置新的区域号。此后,从异常处理程序恢复。处理器从导致地址边界错误的程序指令开始重新执行。在紧接着执行区域切换设备24之后重新开始的指令中,不会出现INT1。
接下来将参照图3和9描述域切换设备25。
如果出现异常时的因子代码是INT2,则调用域切换设备25。然后域切换设备25接收在出现异常时的请求地址(图3中的ADR)、相应处理的域切换表29(DST)、当前域号(图3中的DN1)、以及域切换堆栈(DSS),并输出新的域号或异常(INT3或INT4)。
如果内核请求操作码的类型不是指令读取(op[0]=x),那么域切换设备25确定访问违例(INT3)。只有当该类型是指令读取(x)时,才可能进行域切换。如果控制转移因子是返回(op[1]=retn),那么域切换设备将来自域切换堆栈27(DSS)的返回地址与请求地址进行比较。如果他们彼此相一致,那么切换域号。如果他们彼此不一致,那么域切换设备25确定域切换违例(INT4)。
如果控制转移因子是调用(op[1]=call),那么域切换设备25使用内核请求地址ADR作为关键字搜索(结果k)域切换表29(DST)。如果入口点存在(va=e[$dn1])并且是来自当前域(c[k][$dn1]=1)的调用许可,那么域切换设备25将当前域号和函数返回地址压入域切换堆栈27(DSS),将域切换为入口点所属的域(更新域号寄存器DN1),并终止管理程序。然后处理器继续执行导致域边界错误的应用程序的指令。
如果注册了用于在出现访问保护违例(INT3)或域切换违例(INT4)时对相应程序等执行恢复控制的管理程序,那么将控制权传送到管理程序用于恢复。否则,停止程序。
接下来将参照图2、3、4以及10描述访问局部性和调整。
在执行程序的过程中,在由处理器所请求的地址序列中存在空间局部性,即“还会对之前所请求的地址附近的地址生成请求”。假定存在空间局部性。在这种情况下,从寄存器值变化的频率的观点来说,存在域号码寄存器(DN1)的变化频率低于地址寄存器的变化频率以及区域号寄存器(RN#)的变化频率低于域号寄存器的变化频率的趋势。此外,通过为处理器内核的每个地址寄存器保存区域号寄存器(RN#),可以降低区域号的变化频率。
在图2中提出的访问控制装置中,访问检查单元是通过如图10所示的硬件电路实现的,并且与CPU周期同步地监控应用程序。因此,仅仅当地址和域变化时,在执行管理程序的部分增加了控制开销。所以,在访问的局部性增强以及执行管理程序的中断频率减少时,伴随访问控制的开销降低。在一个极端的例子中,通过定义单个域并且将所有地址设置为单个区域以允许完全访问(“rwx”),可以在不产生任何开销的情况下执行程序。
根据需要改变区域和域的粒度使得可以考虑可靠性和性能之间的权衡。在调整中,不必将程序代码自身修改为访问控制目标,只需改变其中写入了保护域的访问控制表。
在实现图2中的访问控制装置所需的功能中,仅将使用频率高的访问检查单元14通过硬件电路来实现,将出现错误时使用频率低的区域切换设备24和域切换设备25通过软件实现为管理程序,从而抑制了实现访问控制装置所需的硬件的数量。这也有助于减少处理器的开销和功耗。
在有操作系统的系统中,在操作系统上将管理程序注册为ACU驱动器的程序。在没有操作系统的系统中,管理程序与应用程序连接。
假定存在操作系统。在这种情况下,当将保护目标程序读入用户区域存储器时,从预定目录搜索出相应的访问控制表并读入内核区域。如果不存在相应的访问控制表,则生成并使用标准访问控制表。启动程序之前,设置区域号和域号的初始值,并启动对目标程序的访问控制。
假定在有操作系统的系统中,当由于执行另一个应用程序等而将用于保护目标的应用程序挂起时,将ACU控制寄存器组30保存在内核区域的相应程序管理模块中,并在重新开始时恢复,如图11所示。应当注意到,如果ACU控制寄存器的区域切换表RST存储区域TAB有足够的容量,那么可以将多个应用程序的RST同时安排在寄存器中以实现指示RST头的切换寄存器TP1和TP2的高效实现。
根据上述实施例,将生成反映作为保护目标的程序的结构的访问控制表,并在执行该程序之前注册在处理器中。然后处理器通过查询访问控制表来设置并切换许可映射表。这使得可以不管程序的设置而设置并切换许可映射表。因此,能够高效地限制每个程序组件的访问存储区域。
作为另一个实施例,将专用域分配给与应用程序动态链接时所执行的扩展(plug-in,插件)代码,并将独立地指定由该扩展代码调用的诸如系统调用这样的入口点,从而容易地为扩展代码实现安全的沙箱执行环境。
对于另一个实施例,当通过软件实现区域切换设备24时,通过在不修改源程序的情况下改变域切换代码,每次调用域入口的函数时,系统用户都能注册可执行的钩子函数。这样的钩子函数对于例如增加参数检验、调试程序、或存储操作日志是有效的。
当由于区域切换设备24的改变而出现关于应用程序组件(组成元件)的访问违例时,可以进行注册以便调用程序中的特定处理程序代码。例如,在这样的处理程序代码中,可以为应用程序的每个组件编写恢复控制(恢复处理程序)。
本领域的技术人员将容易地想到其他的优点和变形。所以,本发明的范围不局限于此处所显示并描述的特定细节和典型实施例。因此,在不脱离由附加权利要求及其等价内容所定义的一般发明原理的精神或范围的情况下,可以进行各种修改。
Claims (18)
1.一种存储器访问控制装置,包括:
第一贮存器,用于存储区域切换表,在该区域切换表中定义了覆盖存储空间的多个地址区域,并且列出了可以访问在多个与程序组件对应的域中的区域的操作;
第一寄存器,用于保存中断因子;
第二寄存器,用于保存指示与执行中的程序的组件对应的域的域号;
第三寄存器,用于保存指示包含之前访问的地址的区域的区域号;以及
访问检查单元,用于:
接收处理器请求地址(VA)、处理器请求操作码(OP)、所述域号、以及所述区域号,
如果所述处理器请求地址(VA)落在由所述区域切换表中的区域号所指定的区域边界之外,则发出第一中断,
如果根据与包含所述处理器请求地址(VA)的区域的域号对应的许可属性,不许可所述处理器请求操作码(OP),则发出第二中断,以及
如果已经出现所述第一中断或所述第二中断,则将包含所述处理器请求地址(VA)的第一中断因子和包含所述处理器请求操作码(OP)的第二中断因子写入所述第一寄存器。
2.根据权利要求1所述的装置,其中,所述区域切换表包括边界地址数组(rst.addr[]),在该边界地址数组中,按照地址值的顺序排列并存储区域边界地址,并且其中,假定具有区域号i的区域是由大于等于rst.addr[i]并小于rst.addr[i+1]的值所定义的地址区域。
3.根据权利要求1所述的装置,其中,所述区域切换表包括许可位图数组(rst.perm[]),其中具有区域号i的许可属性被以位图格式存储为第i个元素rst.perm[i],并且关于域号j的许可属性被存储为相同位图的第j个槽rst.perm[i][j]。
4.根据权利要求1所述的装置,其中,所述第一中断对应于地址边界错误。
5.根据权利要求4所述的装置,还包括:
区域切换设备,响应于所述第一中断而调用该区域切换设备,并且用于当已经出现地址边界错误时,根据存储在所述第一寄存器中的第一中断因子的处理器请求地址(VA)来更新所述第三寄存器中的区域号。
6.根据权利要求5所述的装置,其中,所述区域切换设备由软件来实现,所述访问检查单元由硬件来实现。
7.根据权利要求1所述的装置,其中,所述第二中断对应于域边界错误。
8.根据权利要求7所述的装置,还包括:
域切换表,其中描述了程序组件之间的控制转移的关系;
域切换设备,响应于所述第二中断而调用该域切换设备,并且用于根据存储在所述第一寄存器中的第一中断因子的处理器请求地址(VA)、存储在所述第一寄存器中的第二中断因子的处理器请求操作码(OP)、所述域切换表来更新所述第二寄存器中的域号,或者发出第三中断或第四中断。
9.根据权利要求8所述的装置,其中,所述第三中断对应于访问违例,所述第四中断对应于域切换违例。
10.根据权利要求8所述的装置,其中,所述域切换设备由软件来实现,所述访问检查单元由硬件来实现。
11.一种存储器访问控制方法,包括:
存储区域切换表,其中定义了覆盖存储空间的多个地址区域,并且列出了可以访问在多个与程序组件对应的域中的区域的操作;
在第一寄存器中保存中断因子;
在第二寄存器中保存指示与执行中的程序的组件对应的域的域号;
在第三寄存器中保存指示包含之前访问的地址的区域的区域号;
接收处理器请求地址(VA)、处理器请求操作码(OP)、所述域号、以及所述区域号;
如果所述处理器请求地址(VA)落在由所述区域切换表中的区域号所指定的区域边界之外,则发出第一中断;
如果根据与包含所述处理器请求地址(VA)的区域的域号对应的许可属性,不许可所述处理器请求操作码(OP),则发出第二中断,以及
如果已经出现所述第一中断或所述第二中断,则将包含所述处理器请求地址(VA)的第一中断因子和包含所述处理器请求操作码(OP)的第二中断因子写入所述第一寄存器。
12.根据权利要求11所述的方法,其中,所述区域切换表包括边界地址数组(rst.addr[]),在该边界地址数组中,按照地址值的顺序排列并存储区域边界地址,并且其中,假定具有区域号i的区域是由大于等于rst.addr[i]并小于rst.addr[i+1]的值所定义的地址区域。
13.根据权利要求11所述的方法,其中,所述区域切换表包括许可位图数组(rst.perm[]),其中具有区域号i的许可属性被以位图格式存储为第i个元素rst.perm[i],并且关于域号j的许可属性被存储为相同位图的第j个槽rst.perm[i][j]。
14.根据权利要求11所述的方法,其中,所述第一中断对应于地址边界错误。
15.根据权利要求14所述的方法,还包括:
响应所述第一中断,当已经出现地址边界错误时,根据存储在所述第一寄存器中的第一中断因子的处理器请求地址(VA)来更新所述第三寄存器中的区域号。
16.根据权利要求11所述的方法,其中,所述第二中断对应于域边界错误。
17.根据权利要求16所述的方法,还包括:
存储域切换表,其中描述了程序组件之间的控制转移的关系;
响应所述第二中断,根据存储在所述第一寄存器中的第一中断因子的处理器请求地址(VA)、存储在所述第一寄存器中的第二中断因子的处理器请求操作码(OP)、所述域切换表来更新所述第二寄存器中的域号,或者发出第三中断或第四中断。
18.根据权利要求17所述的方法,其中,所述第三中断对应于访问违例,所述第四中断对应于域切换违例。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005246326A JP4519738B2 (ja) | 2005-08-26 | 2005-08-26 | メモリアクセス制御装置 |
JP246326/2005 | 2005-08-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1920797A true CN1920797A (zh) | 2007-02-28 |
CN100428202C CN100428202C (zh) | 2008-10-22 |
Family
ID=37778524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101214554A Expired - Fee Related CN100428202C (zh) | 2005-08-26 | 2006-08-25 | 存储器访问控制装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070050586A1 (zh) |
JP (1) | JP4519738B2 (zh) |
CN (1) | CN100428202C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290646B (zh) * | 2007-04-16 | 2013-05-01 | 三星电子株式会社 | 在虚拟环境中保护系统的设备和方法 |
CN105320608A (zh) * | 2014-08-01 | 2016-02-10 | Arm有限公司 | 用于控制存储器设备处理访问请求的存储器控制器和方法 |
CN109739799A (zh) * | 2018-12-29 | 2019-05-10 | 深圳市优必选科技有限公司 | 异构多核处理器的数据交互方法、异构多核处理器和终端 |
CN112449698A (zh) * | 2018-07-27 | 2021-03-05 | Arm有限公司 | 针对存储在存储器系统中的控制表的二分搜寻过程 |
US20220050908A1 (en) * | 2018-08-30 | 2022-02-17 | Micron Technology, Inc. | Domain Crossing in Executing Instructions in Computer Processors |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090307442A1 (en) * | 2005-10-25 | 2009-12-10 | Balbir Singh | Memory Access Control |
JP4220537B2 (ja) * | 2006-06-23 | 2009-02-04 | 株式会社東芝 | アクセス制御キャッシュ装置及び方法 |
US20080127142A1 (en) * | 2006-11-28 | 2008-05-29 | Microsoft Corporation | Compiling executable code into a less-trusted address space |
US9178848B1 (en) * | 2007-07-23 | 2015-11-03 | Google Inc. | Identifying affiliated domains |
US8200694B1 (en) | 2007-07-23 | 2012-06-12 | Google Inc. | Identification of implicitly local queries |
US8788490B1 (en) | 2008-06-27 | 2014-07-22 | Google Inc. | Link based locale identification for domains and domain content |
US20120311285A1 (en) * | 2011-06-03 | 2012-12-06 | Ronald Dean Smith | Method and System for Context Specific Hardware Memory Access Protection |
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
CN102592083B (zh) * | 2011-12-27 | 2014-12-10 | 深圳国微技术有限公司 | 用于提高soc芯片系统安全的存储保护控制器及方法 |
GB2501343A (en) * | 2012-02-08 | 2013-10-23 | Advanced Risc Mach Ltd | Data processing apparatus and method using secure domain and less secure domain |
US9116711B2 (en) | 2012-02-08 | 2015-08-25 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
US9213828B2 (en) | 2012-02-08 | 2015-12-15 | Arm Limited | Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains |
US9477834B2 (en) | 2012-02-08 | 2016-10-25 | Arm Limited | Maintaining secure data isolated from non-secure access when switching between domains |
US10210349B2 (en) | 2012-02-08 | 2019-02-19 | Arm Limited | Data processing apparatus and method using secure domain and less secure domain |
US9703697B2 (en) * | 2012-12-27 | 2017-07-11 | Intel Corporation | Sharing serial peripheral interface flash memory in a multi-node server system on chip platform environment |
US10936713B2 (en) * | 2015-12-17 | 2021-03-02 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US10235176B2 (en) | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
CN106227672B (zh) * | 2016-08-10 | 2019-07-09 | 中车株洲电力机车研究所有限公司 | 一种嵌入式应用程序故障捕捉及处理方法 |
US11783064B2 (en) * | 2017-07-10 | 2023-10-10 | Intel Corporation | Techniques to provide hardware enforced protection environment for a system management mode |
WO2019152792A1 (en) | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | Systems and methods for policy linking and/or loading for secure initialization |
WO2019152772A1 (en) | 2018-02-02 | 2019-08-08 | The Charles Stark Draper Laboratory, Inc. | Systems and methods for policy execution processing |
EP3788488A1 (en) | 2018-04-30 | 2021-03-10 | Dover Microsystems, Inc. | Systems and methods for checking safety properties |
US11914726B2 (en) | 2018-08-30 | 2024-02-27 | Micron Technology, Inc. | Access control for processor registers based on execution domains |
WO2020097179A1 (en) | 2018-11-06 | 2020-05-14 | Dover Microsystems, Inc. | Systems and methods for stalling host processor |
WO2020132012A1 (en) | 2018-12-18 | 2020-06-25 | Dover Microsystems, Inc. | Systems and methods for data lifecycle protection |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0425771A3 (en) * | 1989-11-03 | 1992-09-02 | International Business Machines Corporation | An efficient mechanism for providing fine grain storage protection intervals |
JPH08212140A (ja) * | 1995-02-01 | 1996-08-20 | Hitachi Ltd | メモリプロテクション方式 |
JP3638714B2 (ja) * | 1996-05-23 | 2005-04-13 | 三菱電機株式会社 | 記憶データ保護装置 |
GB2325061B (en) * | 1997-04-30 | 2001-06-06 | Advanced Risc Mach Ltd | Memory access protection |
JP3607540B2 (ja) * | 1999-08-18 | 2005-01-05 | エヌイーシーシステムテクノロジー株式会社 | プログラム単位メモリアクセス属性管理方式 |
US6519690B1 (en) * | 1999-08-23 | 2003-02-11 | Advanced Micro Devices, Inc. | Flexible address programming with wrap blocking |
DE10105284A1 (de) * | 2001-02-06 | 2002-08-29 | Infineon Technologies Ag | Mikroprozessorschaltung für Datenträger und Verfahren zum Organisieren des Zugriffs auf in einem Speicher abgelegten Daten |
US7149862B2 (en) * | 2002-11-18 | 2006-12-12 | Arm Limited | Access control in a data processing apparatus |
-
2005
- 2005-08-26 JP JP2005246326A patent/JP4519738B2/ja not_active Expired - Fee Related
-
2006
- 2006-08-25 CN CNB2006101214554A patent/CN100428202C/zh not_active Expired - Fee Related
- 2006-08-25 US US11/509,596 patent/US20070050586A1/en not_active Abandoned
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290646B (zh) * | 2007-04-16 | 2013-05-01 | 三星电子株式会社 | 在虚拟环境中保护系统的设备和方法 |
CN105320608A (zh) * | 2014-08-01 | 2016-02-10 | Arm有限公司 | 用于控制存储器设备处理访问请求的存储器控制器和方法 |
CN105320608B (zh) * | 2014-08-01 | 2021-01-29 | Arm 有限公司 | 用于控制存储器设备处理访问请求的存储器控制器和方法 |
US11243898B2 (en) | 2014-08-01 | 2022-02-08 | Arm Limited | Memory controller and method for controlling a memory device to process access requests issued by at least one master device |
CN112449698A (zh) * | 2018-07-27 | 2021-03-05 | Arm有限公司 | 针对存储在存储器系统中的控制表的二分搜寻过程 |
US11907301B2 (en) | 2018-07-27 | 2024-02-20 | Arm Limited | Binary search procedure for control table stored in memory system |
US20220050908A1 (en) * | 2018-08-30 | 2022-02-17 | Micron Technology, Inc. | Domain Crossing in Executing Instructions in Computer Processors |
CN109739799A (zh) * | 2018-12-29 | 2019-05-10 | 深圳市优必选科技有限公司 | 异构多核处理器的数据交互方法、异构多核处理器和终端 |
Also Published As
Publication number | Publication date |
---|---|
JP4519738B2 (ja) | 2010-08-04 |
US20070050586A1 (en) | 2007-03-01 |
JP2007058776A (ja) | 2007-03-08 |
CN100428202C (zh) | 2008-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1920797A (zh) | 存储器访问控制装置 | |
JP4759059B2 (ja) | メモリページをプログラムに対応付けるページカラーリング | |
US9747218B2 (en) | CPU security mechanisms employing thread-specific protection domains | |
CN100468324C (zh) | 处理与虚拟机体系结构中客户软件的操作相关联的故障 | |
CN100468351C (zh) | 对在虚拟机体系结构中客户软件操作期间出现的故障的控制 | |
US6789156B1 (en) | Content-based, transparent sharing of memory units | |
CN100356335C (zh) | 保存跟踪数据的方法和装置 | |
CN1894662B (zh) | 作为用于执行引导码的ram的处理器缓存存储器 | |
US8572604B2 (en) | Method and apparatus to support virtualization with code patches | |
US8352940B2 (en) | Virtual cluster proxy to virtual I/O server manager interface | |
US20040064668A1 (en) | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN103460179A (zh) | 用于透明地对应用程序进行插桩的方法和设备 | |
US20220374415A1 (en) | Systems and methods for updating metadata | |
CN113806253A (zh) | 受到损害的存储设备固件的检测 | |
CN101266635A (zh) | 提供对临界存储器区域的受保护访问 | |
CN102207896A (zh) | 虚拟机崩溃文件生成技术 | |
CN103080912A (zh) | 用于微处理器系统的存储器管理单元、微处理器系统及管理存储器的方法 | |
Johnson | Some requirements for architectural support of software debugging | |
US10061918B2 (en) | System, apparatus and method for filtering memory access logging in a processor | |
WO2020057394A1 (zh) | 监控样本进程的内存访问行为的方法和装置 | |
KR100529782B1 (ko) | 임베디드 제어 환경에서 원격 i/o 기능에 효율적으로액세스하기 위한 방법 및 시스템 | |
JP2020525934A (ja) | 命令の実行を制御する装置および方法 | |
Allievi et al. | Windows internals, part 2 | |
EP3759606B1 (en) | An apparatus and method for accessing metadata when debugging a device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081022 Termination date: 20150825 |
|
EXPY | Termination of patent right or utility model |