CN101375258A - 区域保护单元,指令集和保护存储器区域的方法 - Google Patents

区域保护单元,指令集和保护存储器区域的方法 Download PDF

Info

Publication number
CN101375258A
CN101375258A CNA2007800031972A CN200780003197A CN101375258A CN 101375258 A CN101375258 A CN 101375258A CN A2007800031972 A CNA2007800031972 A CN A2007800031972A CN 200780003197 A CN200780003197 A CN 200780003197A CN 101375258 A CN101375258 A CN 101375258A
Authority
CN
China
Prior art keywords
protection unit
region protection
region
rpu
zone
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.)
Pending
Application number
CNA2007800031972A
Other languages
English (en)
Inventor
休伯特斯·G·H·韦尔默朗
纳加拉杰·布萨
尤达亚·塞斯华
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN101375258A publication Critical patent/CN101375258A/zh
Pending legal-status Critical Current

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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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

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)

Abstract

公开了一种存储器保护单元,包括:第一寄存器,用于存储存储器区域边界地址;第二寄存器,用于存储存储器区域大小;算术函数块,用于对提供给区域保护单元的存储器地址和第一寄存器中的地址执行算术函数。所述单元还包括比较器,用于比较算术函数块的输出和第二寄存器中的大小值,将比较器耦合到用于通知总线上存储器地址的有效性的输出。区域保护单元具有控制器,该控制器被配置成:从发布到区域保护单元的指令中获取存储器区域地址和存储器区域大小,用于将所述单元与所述区域相关联,并响应于另一指令而解除所述单元与其存储器区域的关联。

Description

区域保护单元,指令集和保护存储器区域的方法
技术领域
本发明涉及一种用于保护存储器区域的区域保护单元。
本发明还涉及一种包括多个区域保护单元的集成电路(IC)装置。
本发明还涉及一种用于这种IC装置的指令集。
本发明还涉及一种用于保护存储器区域的方法。
背景技术
为了满足音频和视频设备的需要,产业向着在单个芯片上集成整个系统方向发展,即所谓片上系统(SoC),或在诸如所谓系统级封装(SiP)的单封装中集成整个系统。如今,典型的SoC已经包括多个,可能为不同种类的处理器核和专用硬件外设。在这些硬件之上,堆叠多层软件(驱动程序,操作系统,流和控制层)以建立用于家庭和移动应用中的完整的音频/视频应用。
这种复杂的SoC应用的发展包括检验其正确性的需要。在工业中,可以预见到的趋势是,调试用于这些应用的嵌入式软件变得日益困难。由于对每个软件组件的操作的可观测性的限制,通常难以快速并容易地定位运行在SoC之上的软件中的错误。结果是,这项任务变得成本更高。目前,工业花费总项目时间的平均50%用于硬件和软件的流片后(post-silicon)调试。随着日益增长的推向市场时间的压力,减少花费在硅上软件调试的时间和资源的量变得更为重要。
在2006年1月11日从网络(http://www.arm.com/documentation/ARMProcessor Cores/index.html)检索到的ARM Ltd.:“ARM 1156T2F-S Technical Reference Manual”,2005,中公开了一种用于提供针对非法存储器存取的保护的IC架构的一个实例,典型地,这种非法存储器存取会造成运行在这种架构上的软件中的(运行时)错误。ARM 1156T2-F-S处理器包括以硬件实现的存储器保护单元,其中存储器被划分成连续的区域。存储器保护单元在查找表(LUT)中存储基地址以及与每个区域的区域大小相对应的五比特值。针对每次存储器存取,必须检查LUT以定位相应的区域。类似地,对于存储器(去)分配,必须(重新)设定LUT中的适当条目。由于存储器必须被划分为相同大小的连续区域并且每个区域以固定的存储器位置开始,因而这样的存储器保护架构的操作耗时且缺乏灵活度。
发明内容
本发明提供用于集成电路装置的改进的调试能力,对于这种配置,所述改善的调试能力导致更短的软件应用开发时间。更具体地,本发明提供用于在流片后应用开发期间调试运行时存储器讹误问题的方法和基础结构。
根据本发明的一个方面,提供了一种存储器区域保护单元(RPU),所述存储器区域保护单元(RPU)包括:第一寄存器,用于存储存储器区域边界地址;第二寄存器,用于存储存储器区域大小;算术函数块,用于对提供给区域保护单元的存储器地址和第一寄存器中的地址执行算术函数;比较器,用于比较算术函数块的输出和第二寄存器中的存储器区域大小值,将比较器耦合到用于发信号通知所提供的存储器地址的有效性的输出;以及控制器,被配置成:响应于发布给RPU的、用于把所述区域保护单元与所述区域相关联的一个或更多个指令,在第一寄存器中存储存储器区域边界地址并在第二寄存器中存储存储器区域大小;以及响应于发布给RPU的另一指令,解除所述区域保护单元与所述区域的关联。
这样的RPU具有益处,能使用软件中的合适指令来配置,例如,对于与该单元相关联的存储器区域大小来说,这改善了保护单元的灵活度,同时,由于在硬件中实现存储器保护算法,在操作过程中表现出良好的性能。
RPU可进一步包括响应于控制器的多路复用器,所述多路复用器具有耦合到第二寄存器的第一输入,耦合到指示最大区域大小的值的第二输入,以及耦合到比较器的输出。这进一步提高了RPU的灵活性,因为能配置或设计各种RPU以保护由指定的最大大小指示的各种大小的存储器区域。能使用专用指令检测用于保护存储器区域的RPU在大小方面的适配性,所述专用指令调用给定的最大大小和提供给RPU的区域大小的比较。
RPU可与堆以及栈相关联。对于后者,RPU可进一步包括另一寄存器,用于存储函数作用域标识符,所述算术函数块还被配置为对提供给区域保护单元的另一函数作用域标识符以及所述另一寄存器中存储的标识符执行算术函数;其中多路复用器具有耦合到固定值源的第三输入。通过向所有RPU提供函数作用域标识符并把所提供的标识符和另一寄存器中存储的值相比较,能够找到合适的RPU和/或解除RPU与栈的关联。
有益地,通过响应于控制器的另一多路复用器,将第一寄存器和所述另一寄存器耦合到算术函数块。这使得通过控制器选择适当的寄存器变得容易。
在优选实施例中,RPU还包括OR门,所述OR门具有耦合到比较器的输出的第一输入,耦合到控制器的输出的第二输入,以及耦合到区域保护单元输出的输出。这使在RPU的菊花链中耦合该RPU变得容易。例如,一旦RUP之一检测到有效地址,指示此事件的信号可经由OR门波动通过RPU的控制器,菊花链中的最终RPU的输出发信号通知包括验证地址的存储器区域和菊花链中的一个RPU的有效关联。
根据本发明的另一方面,提供了一种集成电路装置,包括:数据通信总线;存储器装置,耦合到所述总线,并具有多个用于存储数据的区域;处理单元,耦合到所述总线,并用于处理所述数据;多个本发明的RPU,每一个RPU可与所述存储器装置的区域相关联;以及RPU控制器,耦合在所述总线和所述多个RPU之间,用于控制处理单元对所述存储器装置的存取,所述RPU控制器被配置成在处理单元和所述多个RPU之间传送所述指令。
本发明的IC装置,可以是诸如SoC的单管芯IC或诸如SiP的集成产品,包括用于保护存储器装置的硬件(HW)/软件(HW)混合方案,所述存储器装置可包括单个存储器或多个存储器。混合方案确保在操作期间,比如调试期间,存储器保护架构对IC装置的性能几乎没有损失,代价是用于RPU和RPU控制器的有限的HW区域开销。
优选地,以菊花链的形式来组织所述多个区域保护单元,后一区域保护单元的控制器的输入耦合到前一区域保护单元的控制器的输出,菊花链中的最后区域保护单元的控制器的输出耦合到区域保护单元控制器。这便于从RPU控制器向所有菊花链式RPU传送单个指令,例如,由于此情况是通过RPU内的控制器的菊花链路径的级联,链中的最后RPU的输出将向RPU控制器发信号通知某个情况,比如由RPU之一保护的区域内的存储器地址。
在实施例中,菊花链的第一部分包括所述多个区域保护单元的第一部分,来自所述第一部分的每个单元可与所述存储器装置的堆区域相关联,而且菊花链的第二部分包括所述多个区域保护单元的第二部分,来自所述第二部分的每个单元可与所述存储器装置的栈区域相关联。本发明的IC装置允许保护混合的存储器架构,即,其中同时使用堆和栈的架构;通过使用不同类型的RPU使这变得容易,针对要保护的存储器区域的类型,对每一个RPU做出优化。
根据本发明的另一方面,提供了一种由本发明的集成电路装置中的处理单元来执行的软件程序,所述程序包括第一指令,用于把来自多个区域保护单元的区域保护单元与存储器装置的区域相关联;第一指令包括用于定义所述区域的大小的参数;第一另一参数,用于向关联的区域保护单元提供所述区域的下边界地址;第二指令,包括定义存储器地址值的参数,用于指令所述多个区域保护单元检测所述存储器地址值是否位于与各个单元相关联的区域内;以及第三指令,包括与所述存储器装置的区域特征相对应的参数,用于解除区域保护单元与所述区域的关联。这种软件程序可被存储在诸如CD-ROM,DVD,存储棒,网络可访问数据库等的计算机可读存储介质上,便于本发明的IC装置上的高速存储器保护。
第一指令还可以包括定义RPU使用的函数作用域标识符的第二另一参数,所述RPU保护典型地与预定函数作用域相关联的基于栈的存储器区域。第一指令可以包括第一另一和第二另一参数;备选地,第一另一参数和第二另一参数可以包括在一个或更多个单独的指令中,诸如用于提供边界地址的第一专用指令和用于提供函数作用域标识符的第二专用指令
第三指令的参数的特性可以是存储器(边界)地址或函数作用域标识符,这使得RPU能够识别其解除关联指令。
根据本发明的又一方法,提供了一种用于保护存储器装置的区域的方法,包括:提供本发明的集成电路装置;通过向区域保护单元控制器发布第一指令,向处理单元分配用于执行预定义函数的存储器区域,所述指令包括存储器区域的大小;将指令转送到所述多个区域保护单元,以检测用于保护所述存储器区域的区域保护单元的可用性;以及在区域保护单元可用的情况下:通过将存储器区域的大小存储在可用区域保护单元的第二寄存器中,将可用区域保护单元与存储器区域相关联;向所述区域保护单元提供所述存储器区域的边界地址;以及在所述区域保护单元的第一寄存器中存储所述边界地址;在区域保护单元不可用的情况下,提供指示所述区域保护单元不可用的信号。此方法在几乎不付出硬件和性能开销的前提下,便于运行时存储器保护。
此方法还可以包括如下步骤:向区域保护单元控制器发布存储器存取指令,所述指令包括与存储器装置的地址相对应的参数;将所述存取指令转送到多个区域保护单元,以检测所述地址是否位于与任意的区域保护单元相关联的存储器装置的区域内;以及提供对所述地址的有效性的指示。例如,通过运行在处理器单元上的软件,便于快速检测非法存储器存取。
所述方法还可以包括如下步骤:通过向区域保护单元控制器发布另一指令,在处理单元完成预定义函数的执行时,对处理单元使用的存储器区域解除分配,所述指令包括与存储器装置的区域的特征相对应的参数,用于解除区域保护单元与所述区域的关联;将所述另一指令转送给所述多个区域保护单元,以检测区域保护单元和存储器区域的关联;以及如果区域保护单元与存储器区域相关联,则解除所述区域保护单元与所述存储器区域的关联。例如,通过提供存储器区域的边界地址,受保护的存储器区域内的地址或函数作用域标识符作为另一指令的参数,便于有效地对来自存储器保护架构的RPU资源解除分配。
附图说明
参考附图,通过非限定实例更详细地描述本发明,其中
图1示出本发明的RPU的实施例;
图2示出本发明的RPU的另一实施例;以及
图3示出本发明的IC装置的实施例。
具体实施方式
应理解附图只是示意性的,并非按比例绘制。也应理解所有附图中使用的相同的附图标记来表示相同或类似的部分。
图1示出根据本发明的RPU 100的第一实施例。RPU 100具有耦合到数据线,比如数据通信总线163的第一寄存器110和第二寄存器120。第一寄存器110存储与RPU 100相关联的存储器区域的边界地址值,即限定存储器区域的下边界或上边界的地址值,而第二寄存器120存储该存储器区域的大小。RPU 100还包括算术函数块140,比如减法单元,其具有耦合到数据通信总线163的第一输入和耦合到第一寄存器110的第二输入。将算术函数单元140的输出耦合到比较器150的输入,所述比较器150具有耦合到第二寄存器120的另一输入。将比较器150的输出通过可选的OR门170耦合到RPU的输出162。RPU100具有用于配置第一寄存器110和第二寄存器120的控制器160。将控制器耦合到RPU输入161,时钟信号线164和数据输入线165,通过这些线路控制器160能接收来自诸如处理单元(未示出)的外部电路的配置和操作指令。RPU包括在控制器160控制下的多路复用器(MUX)152,MUX 152具有耦合到第二寄存器120的第一输入、耦合到预定义值MAXSIZE+1的第二输入以及耦合到比较器150的另一输入的输出,其中预定义值MAXSIZE+1定义了RPU所能保护的存储器区域的最大大小。备选地,MAXSIZE+1可硬编码到控制器160或比较器150中。基于硬件的RPU100由适当的软件,即指令集来控制,优选地以应用程序接口(API)而分组,从而配置和操作RPU 100。下面给出了典型的指令流及其在RPU100的硬件上的含义的实例。
作为初始指令,控制器160可接收复位指令。这会触发控制器160以清除RPU 100的所有内部设定,诸如第一寄存器110和第二寄存器120的内容以及RPU输出162处提供的输出信号。典型地,RPU 100包括指示RPU 100是否在使用的内部标记(未示出)。该标记同样在接收到该指令时被复位。
下一指令将询问RPU 100以检测它是否足够大以保护指令中规定的存储器区域大小。控制器160将会检测RPU输入161,以了解另一RPU100是否已经承担该分配。这将在下面详细描述。待保护的存储器区域的大小可在数据通信总线163上得到,并且控制器160将选择MUX152的MAXSIZE+1输入。因此,比较器150指示RPU 100是否能与该存储器区域相关联,即,RPU 100是否足够大。如果是,则控制器160把第一内部标记(未示出)设定为指示RPU已经接受该分配的值,并且同时迫使把待保护的存储器区域的大小存储在第二寄存器120中。可选地,控制器160断言(assert)其输出166,因此导致断言的(asserted)RPU输出162。这个断言的输入通知其它RPU 100已经分配所请求的保护。备选地,比较器150的断言输出可替代地用于此目的。
典型地,将RPU 100的RPU输出162耦合到另一RPU 100的RPU输入161。这样,可以形成RPU的分级菊花链(daisy chain)。
在这种菊花链中,如果多于一个的RPU同时接受指定存储器区域的保护的任务,则较低级别的,即后续或下游RPU将会在通过其RPU输入161接收到来自较高级别的,即前身或上游RPU的断言输出时,将其自身与该任务解除关联(dissociate)。重要的是,其它(较低级别的)RPU在下一时钟周期内接收该断言输出信号,以避免把多个RPU与单个存储器区域相关联。虽然RPU之间的信号路径包括很少的逻辑,这意味着信号能在单个时钟周期内到达若干个RPU控制器,然而在很长的菊花链的情况下,该信号可能不能到达所有的下游RPU。为达到此目的,可提供诸如携带先行(look-ahead)信号路径的额外的信号路径,以确保每个RPU对信号的及时接收。这种技术本身是众所周知的,因此不再进一步说明。
应意识到,在执行此功能的过程中,第一寄存器110应携带零值以使数据通信总线163上的存储器区域大小通过算术函数块140而不改变。备选地,在这种模式中可将算术函数块140旁路(bypass),比如,通过算术函数块140周围的一组多路复用器(未示出)。其它方案对于技术人员是显而易见的。
在RPU接受上述任务时,将发出指定要保护的存储器区域的边界地址的另一指令,比如下边界地址。该指令将由具有其断言的第一内部标记的RPU 100获取,即接受存储器保护任务的RPU 100。通过数据通信总线163提供边界地址,控制器160使第一寄存器110捕获该值。控制器160将把另一内部标记(未示出)设置为指示RPU 100目前正在使用的值,并且清除其第一内部标记。在此模式中,控制器160未使用其输入信号161和输出信号166。备选地,如上所述,边界地址也可被包括在用于检测RPU是否可用于保护存储器区域的指令中。
接下来,在检测地址模式中,由适当的指令发信号通知,RPU 100检测通过数据通信总线163接收的地址是否落入已与RPU 100相关联的存储器区域内。为此目的,控制器160激活算术逻辑块140,该块从数据通信总线163上接收的地址中减去存储在第一寄存器110中的存储器区域的(下)边界地址。控制器160还选择耦合到第二寄存器120的MUX 152的输入,以便于比较器150将算术函数块140的结果和存储在第二寄存器120中的区域大小值相比较,该比较器150可由减法单元或另一适当的算术函数块来实现。
比较器150输出的信号指示数据通信总线163上的地址大于或等于存储在第一寄存器110中的下边界地址,但这两个值之间的差不超过存储器区域的大小。备选地,寄存器110中可使用上边界地址,在此情况下,比较器150将发信号通知数据通信总线163上的地址小于或等于上边界地址。简而言之,比较器产生的信号指示数据通信总线163上的地址是否落入到RPU 100所保护的存储器区域中。
在RPU输出162上提供的输出信号是比较器150提供的信号和RPU输入161上接收到的级联输入信号的逻辑OR。该信号在以下情况中将被断言:比较器150或另一RPU已发信号通知数据通信总线163上提供的地址落入其所保护的存储器区域。所述信号能被用于多种目的。例如,在检测有效地址的情况下,该信号可以用于准予对受保护的存储器区域的存储器存取,或可以用于设定指示指定地址为有效地址的标记。相反,对于无效地址,(去断言(deasserted))信号可触发系统的中断和随后的状态捕获,针对评估目的,RPU架构是比如追踪导致无效地址规格的故障起源的一部分。
最终,可向RPU 100提供将其自身与存储器区域解除关联的指令。为此目的,将为数据通信总线163提供与这个存储器区域特性相对应的参数,诸如存储在第一寄存器110中的受保护的存储器区域的边界地址,或位于该区域内的地址。具有断言的另一内部标记的RPU 100(即正在使用的RPU 100)的控制器160指令算术函数块140把数据通信总线163上的值与存储在第一寄存器110中的值相比较。如果值相匹配,控制器160将去断言(deassert)其另一内部标记,以指示RPU 100再次变得可用。控制器160也可使第一寄存器110和第二寄存器120的内容复位。
RPU 100的实施例特别适用于保护堆型(heap-type)存储器区域。图2示出了特别适用于保护堆型存储器区域的RPU 200的实施例。除RPU 100之外,RPU 200包括用于存储函数标识符的第三寄存器130,所述功能标识符与RPU 200可保护的栈相关联。典型地,栈用于特定函数作用域(scope)中的临时和/或内部变量。该作用域中的标识符的存储是有用的,下面将详细说明。RPU 200还具有MUX 152上的额外的固定值输入,以及受控制器160的控制的额外的MUX 142,以便于第一寄存器110和第三寄存器130之间的选择。
RPU 200可以与针对RPU 100而说明的相同方式复位。利用RPU100不敏感的专用指令,可将RPU 200与堆型存储器区域相关联。例如,当在栈上分配缓冲区时,为了分配RPU 200来保护该缓冲区,可以调用该指令。把RPU 200和栈区域相关联的机制与把RPU 100和堆型存储器区域相关联的方式类似,即,通过将堆型区域的大小提供给RPU200,并且将其与MAXSIZE+1值相比较,等等,因此将不进一步说明。显而易见,不仅将存储在第一寄存器110中的存储器区域的边界地址提供给新关联的RPU 200,而且还将函数作用域标识符提供给RPU 200以存储在第三寄存器130中。以与RPU 100中相同的方式检测地址是否落入受保护的堆型存储器区域内,因而也不会进一步说明。
堆型RPU 100和栈型RPU 200的主要差异在于,对于后者的类型,多个RPU 200可被分配给相同的函数作用域。第三寄存器130中函数作用域标识符的存在便于被分配给单个函数作用域的RPU 200的有效的解除关联。通过模式选择线165和数据通信总线163将包括适当的函数作用域标识符的解除分配(deallocation)指令广播给所有RPU,并且触发栈型RPU 200中的控制器160,以通过激活算术函数块140并选择MUX 142的适当输入而将数据通信总线163上的标识符的值与存储在第三寄存器130中的值相比较。将MUX 152设定为固定的值输入,比如‘1’,使得如果数据通信总线163和第三寄存器130上的函数作用域标识符相同,则比较器150产生算术函数块140的输出比MUX 152提供的值更小的信号。该信号将触发控制器160复位其另一内部标记,从而解除RPU 200与其存储器区域的关联。因此,能使用单个指令同时使共享来自各个存储器区域的函数作用域的所有RPU 200解除关联。
在这里,应指出,优选地使用无符号整数用于通过数据通信总线163提供的各种参数。例如,这确保当数据通信总线163上的函数作用域标识符与第三寄存器130中的值不同时,算术函数块140的输出总是产生比MUX 152的固定值大的值。
图3示出了根据本发明的IC装置300的示例。IC装置300具有处理单元310,所述处理单元310可为中央处理单元或多个处理单元之一,其通过数据通信总线320和总线适配器330耦合到RPU控制器340。通过模式选择总线165和数据通信总线163将RPU控制器340耦合到多个堆型RPU 100和多个栈型RPU 200。RPU控制器340也可通过RPU各自的时钟信号线164(为了清楚起见,图3中未示出),将时钟信号提供给RPU。备选地,该信号可由单独的时钟发生器(未示出)来提供。应意识到,堆型RPU 100和栈型RPU 200的混合的选择仅作为非限制性实例。备选的装置,比如仅具有RPU 100或仅具有RPU 200同样是可行的。为了清楚起见,图3未示出IC装置300的存储器装置。
配置RPU控制器340以通过其data_in、address、data_out、read和write端口来处理处理单元310的存储器存取。也可使用这些端口从处理单元310接收指令,以配置和控制RPU 100和200。为此目的,RPU控制器340解码接收到的指令,并在RPU模式总线165上为RPU提供相应的模式选择指令,并将从处理单元310接收到的指令中的参数转送到RPU数据通信总线163。
在这里,应指出,该架构也可用于存储器装置(未示出)中存储的安全数据;该安全数据存储在未保护的存储器区域中,这导致存取请求被拒绝,因为安全数据的地址与IC装置300中任意的RPU所保护的存储器区域不对应。安全数据仅能通过在IC装置300的专用模式下,通过切断存储器保护装置,即RPU控制器340而进行存取。
如上所述,通过其各自的RPU输入161和RPU输出162,以菊花链的形式来组织RPU 100和200。在菊花链的第一部分中对堆型RPU 100进行分组,该链中最后的RPU 100的输出162通过数据线352耦合到RPU控制器340的heap_in输入。在菊花链的第二部分中对栈型RPU 200进行分组,该链中最后的RPU 200的输出162通过数据线356耦合到RPU控制器的stack_in输入。如上所述,使用数据线352和356来将菊花链形式的RPU的级联信息传送到RPU控制器340,例如RPU之一已接受存储器区域保护任务的分配的信息,或RPU之一已确认数据通信总线163上提供的地址的信息。
应意识到,由于RPU 200为RPU 100的扩展版本,所以也能使用栈型RPU200来保护堆型存储器区域。以下述方式将其应用于IC架构中。将OR门350插在菊花链的第一部分和菊花链的第二部分之间。如上所述,如果栈型RPU 200不允许作为堆型RPU,则RPU控制器340将断言OR门的输入,该输入在RPU检测其自身是否能与要保护的存储器区域相关联的模式下通过数据线354耦合到RPU控制器340的stack_fallback_n输出。OR门350的断言输入将导致耦合到OR门350的输出的第一栈型RPU 200的输入161接收信号值,该信号值指示较高级别的RPU已经接受该任务。这个值波动(ripple)通过所有RPU 200,使得RPU中的任何一个都不接受该任务。
另一方面,如果允许RPU 200接收保护堆型存储器区域的任务,则RPU控制器将去断言数据线354,这允许堆型RPU 100和栈型RPU200中的每一个接受该任务。
针对用于操作IC装置300的RPU架构,下面给出了合并在API中的C型指令集的示例实现。这些指令是上述图1和2的详细描述中的指令的示例。
void rpus_initialize()
此函数复位RPU硬件,清除所有设定。
bool rpus_heap_enable(voidbase,unsigned long int size)
当通过诸如malloc和new的函数在堆上分配缓冲区时,调用这个函数。此函数传递诸如缓冲区的基地址和大小的信息。对可用的基于硬件的RPU100或200中的任何一个进行编程,以保护该缓冲区,并返回真值,但如果没有RPU可用,则返回假值。后者的返回值开启低效运行(fallback)机制以保护软件中的缓冲区。
bool rpus_stack_enable(void*base,unsigned long int size,intfunc_id)
类似rpus_heap_enable函数,当在栈上分配缓冲器时,调用此函数。它传送诸如栈缓冲区的基地址和大小的信息,以及其中分配缓冲区的函数作用域的标识码。
bool rpus_check_access(voidpointer)
只要软件中存在存储器存取,便调用此函数。存储器存取的地址通过存储器映射输入/输出(MMIO)空间传送到硬件。如果菊花链中基于硬件的RPU 100或200通过针对参照所有已知的有效区域进行检测而确认该存储器地址,则该函数调用返回真值,反之则返回假值。如果使用基于额外软件的保护,则可以使用后者来激活软件低效运行,以参照软件中保护的所有区域来检测该存储器地址。
如果完整的存储器保护架构由硬件实现,那么该指令返回的假值可用于触发软件调试器,指示存在非法的存储器存取。优选地,所有上述指令通过存储器映射的输入/输出(MMIO)空间向下层的RPU硬件传送相关数据。
RPU构架的备选实施,即RPU控制器340直接观测总线以自动提取总线上出现的任何事务处理(transaction)的地址。RPU控制器340的第二备选实施将RPU控制器340作为主处理单元310和系统总线320之间的桥接模块,允许其监控并且有条件地使处理单元310做出的任何存储器存取通过。
bool rpus_heap_disable(voidbase)
当程序或编程者释放堆上分配的存储器时,调用此函数。使用此调用能够释放向给定基地址分配的RPU 100或200,并用于在将来保护新的缓冲区。如果在硬件中存在保护以给定的基地址开始的缓冲区的RPU 100或200,则返回值为真,如果不存在该RPU,则返回值为假。后者可用于仅有条件地搜索软件中保护的缓冲区的列表,并将适当的RPU从该列表中移除。
void rpus_stack_disable(int function_id)
当特定函数的作用域结束时,调用此函数。将函数作用域的标识码传送到硬件,特别是传送到栈型RPU 200。使用此调用,将释放在此函数中分配以及由此通过标识码(function_id)标识的任何栈型RPU 200,并可用于后续的使用。
应指出,上述实施例说明但不限制本发明,并且本领域的技术人员能设计多个可替代实施例,而不偏离权利要求的范围。在权利要求中,位于括号内的任何附图标记不应解释为限制权利要求。词“包括”不排除除了权利要求中列出的之外的组件和步骤的存在。组件之前的“一”或“一个”不排除多个这种组件的存在。本发明能借助包括几个截然不同的组件的硬件实施。在装置权利要求中列举了几个装置,这些装置中的几个能通过同一项硬件来实施。起码的事实是,在互不相同的从属权利要求中列举的特定措施并不意味这些措施的组合不能产生优点。

Claims (21)

1.一种存储器区域保护单元(100,200),包括:
第一寄存器(110),用于存储存储器区域边界地址;
第二寄存器(120),用于存储存储器区域大小;
算术函数块(140),用于对提供给区域保护单元(100,200)的存储器地址和第一寄存器(110)中的地址值执行算术函数;
比较器(150),用于比较算术函数块(140)的输出和第二寄存器(120)中的存储器区域大小值,将比较器(150)耦合到用于发信号通知所提供的存储器地址的有效性的输出(162);以及
控制器(160),被配置成:
响应于发布给区域保护单元(100,200)的、用于把所述区域保护单元(100,200)与所述区域相关联的一个或更多个指令,在第一寄存器(110)中存储存储器区域边界地址并在第二寄存器(120)中存储存储器区域大小;以及
响应于发布给区域保护单元(100,200)的另一指令,解除所述区域保护单元(100,200)与所述区域的关联。
2.根据权利要求1所述的区域保护单元(100,200),还包括响应于控制器(160)的多路复用器(152),所述多路复用器(152)具有耦合到第二寄存器(120)的第一输入,耦合到指示最大区域大小的值的第二输入,以及耦合到比较器(150)的输出。
3.根据权利要求2所述的区域保护单元(200),还包括另一寄存器(130),用于存储函数作用域标识符,所述算术函数块(140)还被配置为对提供给区域保护单元(200)的另一函数作用域标识符以及所述另一寄存器(130)中存储的标识符执行算术函数;其中多路复用器(152)具有耦合到固定值源的第三输入。
4.根据权利要求3所述的区域保护单元(200),其中通过响应于控制器(160)的另一多路复用器(142),将第一寄存器(110)和所述另一寄存器(130)耦合到算术函数块(140)。
5.根据前述任何一个权利要求所述的区域保护单元(100,200),还包括OR门(170),所述OR门(170)具有耦合到比较器(150)的输出的第一输入,耦合到控制器(160)的输出(166)的第二输入,以及耦合到区域保护单元输出(162)的输出。
6.一种集成电路装置(300)包括:
数据通信总线(320);
存储器装置,耦合到所述总线(320),并具有多个用于存储数据的区域;
处理单元(310),耦合到所述总线,并用于处理所述数据;
多个如权利要求1-5中任意一项所述的区域保护单元(100,200),每一个区域保护单元(100,200)能与所述存储器装置的区域相关联;以及
区域保护单元控制器(340),耦合在所述总线(320)和所述多个区域保护单元(100,200)之间,用于控制处理单元(310)对所述存储器装置的存取,所述区域保护单元控制器(340)被配置成在处理单元(310)和所述多个区域保护单元(100,200)之间传送所述指令。
7.根据权利要求6所述的集成电路装置,其中以菊花链的形式来组织所述多个区域保护单元(100,200),后一区域保护单元的控制器(160)的输入(161)耦合到前一区域保护单元的控制器(160)的输出(166),菊花链中的最后区域保护单元(100,200)的控制器的输出(166)耦合到区域保护单元控制器(340)。
8.根据权利要求7所述的集成电路装置(300),其中菊花链的第一部分包括所述多个区域保护单元(100)的第一部分,来自所述第一部分的每个单元能与所述存储器装置的堆区域相关联,而且菊花链的第二部分包括所述多个区域保护单元(200)的第二部分,来自所述第二部分的每个单元能与所述存储器装置的栈区域相关联。
9.根据权利要求6,7或8所述的集成电路装置(300),其中所述集成电路装置(300)包括片上系统。
10.根据权利要求6,7或8所述的集成电路装置(300),其中所述集成电路装置(300)包括系统级封装。
11.一种软件程序,由根据权利要求6-10中任意一项所述的集成电路装置(300)中的处理单元(310)来执行,所述程序包括:
第一指令,用于把来自多个区域保护单元的区域保护单元(100,200)与存储器装置的区域相关联;第一指令包括用于定义所述区域的大小的参数;
第一另一参数,用于向关联的区域保护单元(100,200)提供所述区域的下边界地址;
第二指令,包括定义存储器地址值的参数,用于指令所述多个区域保护单元(100,200)检查所述存储器地址值是否位于与各个单元(100,200)相关联的区域内;以及
第三指令,包括与所述存储器装置的区域特征相对应的参数,用于解除区域保护单元(100,200)与所述区域的关联。
12.根据权利要求11所述的软件程序,其中第一指令包括所述第一另一参数。
13.根据权利要求11所述的软件程序,还包括定义函数作用域标识符的第二另一参数。
14.根据权利要求13所述的软件程序,其中第一指令包括所述第二另一参数。
15.根据权利要求13所述的软件程序,其中第一另一参数和第二另一参数包括在一个或更多个单独的指令中。
16.根据权利要求11所述的软件程序,其中所述特征是属于所述区域的存储器地址。
17.根据权利要求11所述的软件程序,其中所述特征是函数作用域标识符。
18.一种计算机可读存储介质,包括根据权利要求11-17中任意一项所述的软件程序。
19.一种用于保护存储器装置的区域的方法,包括:
提供根据权利要求6所述的集成电路装置(300);
通过向区域保护单元控制器(340)发布第一指令,向处理单元(310)分配用于执行预定义函数的存储器区域,所述指令包括存储器区域的大小;
将指令转送到所述多个区域保护单元(100,200),以检查用于保护所述存储器区域的区域保护单元(100,200)的可用性;以及
在区域保护单元(100,200)可用的情况下:
通过将存储器区域的大小存储在可用区域保护单元(100,200)的第二寄存器(120)中,将可用区域保护单元(100,200)与存储器区域相关联;
向所述区域保护单元(100,200)提供所述存储器区域的边界地址;以及
在所述区域保护单元(100,200)的第一寄存器(110)中存储所述边界地址;
在所有区域保护单元(100,200)都不可用的情况下,提供指示区域保护单元(100,200)不可用的信号。
20.根据权利要求19所述的方法,还包括:
向区域保护单元控制器(340)发布存储器存取指令,所述指令包括与存储器装置的地址相对应的参数;
将所述存取指令转送到多个区域保护单元(100,200),以检查所述地址是否位于与任意的区域保护单元(100,200)相关联的存储器装置的区域内;以及
如果所述地址位于由区域保护单元(100,200)所保护的区域内,则提供对所述地址的有效性的指示。
21.根据权利要求19或20所述的方法,还包括:
通过向区域保护单元控制器(340)发布另一指令,在处理单元(310)完成预定义函数的执行时,解除对处理单元(310)使用的存储器区域的分配,所述指令包括与存储器装置的区域的特征相对应的参数,用于解除区域保护单元(100,200)与所述区域的关联;
将所述另一指令转送给所述多个区域保护单元(100,200),以检查区域保护单元和存储器区域的关联;以及
如果区域保护单元(100,200)与存储器区域相关联,则解除所述区域保护单元(100,200)与所述存储器区域的关联。
CNA2007800031972A 2006-01-17 2007-01-16 区域保护单元,指令集和保护存储器区域的方法 Pending CN101375258A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP06100454.5 2006-01-17
EP06100454 2006-01-17

Publications (1)

Publication Number Publication Date
CN101375258A true CN101375258A (zh) 2009-02-25

Family

ID=37988985

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007800031972A Pending CN101375258A (zh) 2006-01-17 2007-01-16 区域保护单元,指令集和保护存储器区域的方法

Country Status (6)

Country Link
US (1) US8069325B2 (zh)
EP (1) EP1979820A1 (zh)
JP (1) JP2009524140A (zh)
CN (1) CN101375258A (zh)
TW (1) TW200805065A (zh)
WO (1) WO2007083267A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566972B (zh) * 2009-05-12 2010-12-08 苏州国芯科技有限公司 嵌入式系统用户多分区存储空间访问权限的安全控制方法
CN102541752A (zh) * 2011-12-26 2012-07-04 苏州国芯科技有限公司 嵌入式系统可寻址空间的分区方法
CN110192187A (zh) * 2017-01-19 2019-08-30 国际商业机器公司 受保护存储事件处理的运行时插桩
CN110199266A (zh) * 2017-01-19 2019-09-03 国际商业机器公司 调节受保护存储设施的操作的加载和存储控制

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5292934B2 (ja) * 2008-06-11 2013-09-18 ソニー株式会社 メモリ制御装置および情報処理装置
US8910136B2 (en) 2011-09-02 2014-12-09 International Business Machines Corporation Generating code that calls functions based on types of memory
US9740518B2 (en) 2012-09-12 2017-08-22 Nxp Usa, Inc. Conflict detection circuit for resolving access conflict to peripheral device by multiple virtual machines
WO2014080248A1 (en) 2012-11-23 2014-05-30 Freescale Semiconductor, Inc. System on chip
GB2511794B (en) * 2013-03-13 2020-12-02 Advanced Risc Mach Ltd A Protection Unit and Method for Controlling Access by Plural Processes to a Storage Unit
WO2015008108A1 (en) 2013-07-18 2015-01-22 Freescale Semiconductor, Inc. Charge pump circuit, phase locked loop apparatus, integrated circuit, and method of manufacture of a charge pump
WO2015008112A1 (en) * 2013-07-18 2015-01-22 Freescale Semiconductor, Inc. System on chip and method therefor
US9569345B2 (en) 2013-12-27 2017-02-14 International Business Machines Corporation Architectural failure analysis
US9336100B2 (en) 2013-12-27 2016-05-10 International Business Machines Corporation Efficient debugging of memory miscompare failures in post-silicon validation
US9251045B2 (en) 2013-12-27 2016-02-02 International Business Machines Corporation Control flow error localization
US9690719B2 (en) 2014-09-11 2017-06-27 Nxp Usa, Inc. Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof
GB2543520B (en) * 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US20190370038A1 (en) * 2016-07-27 2019-12-05 Intel Corporation Apparatus and method supporting code optimization
KR101958540B1 (ko) 2017-01-31 2019-03-14 연세대학교 산학협력단 온 칩 dram을 사용한 멀티코어 환경에서의 포스트 실리콘 디버그 장치 및 방법
US11550733B2 (en) * 2020-07-01 2023-01-10 Arm Limited Method, system and circuit for managing a secure memory partition

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3827029A (en) * 1972-09-25 1974-07-30 Westinghouse Electric Corp Memory and program protection system for a digital computer system
JP2533931B2 (ja) * 1989-03-28 1996-09-11 富士通株式会社 動的割当て領域のデ―タ内容保護方式
JP3120606B2 (ja) * 1992-12-09 2000-12-25 富士通株式会社 アドレス生成処理方法
EP0700002B1 (en) * 1994-08-31 1999-05-19 Motorola, Inc. Modular chip select control circuit
GB2325061B (en) * 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
DE19821004C2 (de) * 1998-05-11 2000-03-23 Ericsson Telefon Ab L M Sequenzgenerator
US7043615B1 (en) * 2000-06-02 2006-05-09 Renesas Technology Corp. Nonvolatile semiconductor memory and method of managing information in information distribution system
EP1182571B1 (en) 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
DE10122505A1 (de) * 2001-05-10 2002-11-14 Giesecke & Devrient Gmbh Verfahren zum Schützen eines Rechners gegen Manipulation von Registerinhalten und Rechner zum Durchführen des Verfahrens
JP2003006046A (ja) * 2001-06-25 2003-01-10 Sanyo Electric Co Ltd メモリプロテクション方法および回路
JP3866597B2 (ja) * 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
JP2005284630A (ja) * 2004-03-29 2005-10-13 Oki Electric Ind Co Ltd オペレーティングシステム
JP2005338892A (ja) * 2004-05-24 2005-12-08 Toshiba Corp メモリ異常使用検知装置
US7068545B1 (en) * 2005-01-04 2006-06-27 Arm Limited Data processing apparatus having memory protection unit
US8051263B2 (en) * 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
JP4939387B2 (ja) * 2007-12-06 2012-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びアドレス空間保護方法
US7895404B2 (en) * 2008-02-14 2011-02-22 Atmel Rousset S.A.S. Access rights on a memory map

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566972B (zh) * 2009-05-12 2010-12-08 苏州国芯科技有限公司 嵌入式系统用户多分区存储空间访问权限的安全控制方法
CN102541752A (zh) * 2011-12-26 2012-07-04 苏州国芯科技有限公司 嵌入式系统可寻址空间的分区方法
CN102541752B (zh) * 2011-12-26 2015-04-15 苏州国芯科技有限公司 嵌入式系统可寻址空间的分区方法
CN110192187A (zh) * 2017-01-19 2019-08-30 国际商业机器公司 受保护存储事件处理的运行时插桩
CN110199266A (zh) * 2017-01-19 2019-09-03 国际商业机器公司 调节受保护存储设施的操作的加载和存储控制
CN110199266B (zh) * 2017-01-19 2023-01-31 国际商业机器公司 用于促进计算环境中的处理的方法和系统
CN110192187B (zh) * 2017-01-19 2023-05-26 国际商业机器公司 受保护存储事件处理的运行时插桩

Also Published As

Publication number Publication date
EP1979820A1 (en) 2008-10-15
US8069325B2 (en) 2011-11-29
TW200805065A (en) 2008-01-16
WO2007083267A1 (en) 2007-07-26
US20100223438A1 (en) 2010-09-02
JP2009524140A (ja) 2009-06-25

Similar Documents

Publication Publication Date Title
CN101375258A (zh) 区域保护单元,指令集和保护存储器区域的方法
US6539500B1 (en) System and method for tracing
US5657475A (en) System for protecting memory accesses by comparing the upper and lower bounds addresses and attribute bits identifying unauthorized combinations of type of operation and mode of access
US7200776B2 (en) System and method for generating trace data in a computing system
CN102567109B (zh) 中断分配方案
CN101661440A (zh) 安全信息处理
CN102341783A (zh) 用于各个处理器的辅助中断虚拟化的访客中断控制器
JPH11514113A (ja) 複数プロセッサ・システム内のプロセッサ間でメッセージを送信する方法および装置
CN107735769A (zh) 固件相关事件通知
US20080288691A1 (en) Method and apparatus of lock transactions processing in single or multi-core processor
US20060150023A1 (en) Debugging apparatus
US20090271583A1 (en) Monitoring transactions in a data processing apparatus
US9104472B2 (en) Write transaction interpretation for interrupt assertion
US20050114578A1 (en) Secure software SMI dispatching using caller address
GB2062912A (en) Data processing system including internal register addressing arrangements
CN102053868A (zh) 一种内存泄露检测方法和装置
WO2006069364A2 (en) System and method for control registers accessed via private operations
EP2817714B1 (en) Hiding logical processors from an operating system on a computer
CN117149644A (zh) 内存溢出检测方法、装置、操作系统、设备及存储介质
US20170262384A1 (en) Method for protecting memory against unauthorized access
US7219167B2 (en) Accessing configuration registers by automatically changing an index
US7260745B1 (en) Detection of information on an interconnect
WO2005091147A1 (en) A cache mechanism
CN100363905C (zh) 一种基于绝对座标体系的操作系统客体重用测试方法
US6349371B1 (en) Circuit for storing information

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090225