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

文档序号:6453693阅读:260来源:国知局
专利名称:区域保护单元,指令集和保护存储器区域的方法
技术领域
本发明涉及一种用于保护存储器区域的区域保护单元。
本发明还涉及一种包括多个区域保护单元的集成电路(IC)装置。 本发明还涉及一种用于这种IC装置的指令集。
本发明还涉及一种用于保护存储器区域的方法。
背景技术
为了满足音频和视频设备的需要,产业向着在单个芯片上集成整
个系统方向发展,即所谓片上系统(SoC),或在诸如所谓系统级封装
(SiP)的单封装中集成整个系统。如今,典型的SoC已经包括多个, 可能为不同种类的处理器核和专用硬件外设。在这些硬件之上,堆叠 多层软件(驱动程序,操作系统,流和控制层)以建立用于家庭和移 动应用中的完整的音频/视频应用。
这种复杂的SoC应用的发展包括检验其正确性的需要。在工业中, 可以预见到的趋势是,调试用于这些应用的嵌入式软件变得日益困难。 由于对每个软件组件的操作的可观测性的限制,通常难以快速并容易 地定位运行在SoC之上的软件中的错误。结果是,这项任务变得成本 更高。目前,工业花费总项目时间的平均50%用于硬件和软件的流片 后(post-silicon)调试。随着日益增长的推向市场时间的压力,减少 花费在硅上软件调试的时间和资源的量变得更为重要。
在 2006 年1月U日从网络 (http : 〃www.arm.com/documentation/ARMProcessor Cores/index.html)检索至U 的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 IOO相关联的存储器区域的边界地址值,即 限定存储器区域的下边界或上边界的地址值,而第二寄存器120存储该 存储器区域的大小。RPU100还包括算术函数块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, MUX152具有耦 合到第二寄存器120的第一输入、耦合到预定义值MAXSIZE+1的第二 输入以及耦合到比较器150的另一输入的输出,其中预定义值 MAXSIZE+1定义了RPU所能保护的存储器区域的最大大小。备选地, MAXSIZE+1可硬编码到控制器160或比较器150中。基于硬件的RPU
100由适当的软件,即指令集来控制,优选地以应用程序接口 (API)
而分组,从而配置和操作RPU 100。下面给出了典型的指令流及其在 RPU 100的硬件上的含义的实例。
作为初始指令,控制器160可接收复位指令。这会触发控制器160 以清除RPU IOO的所有内部设定,诸如第一寄存器110和第二寄存器 120的内容以及RPU输出162处提供的输出信号。典型地,RPU IOO包 括指示RPU IOO是否在使用的内部标记(未示出)。该标记同样在接收 到该指令时被复位。
下一指令将询问RPU IOO以检测它是否足够大以保护指令中规定 的存储器区域大小。控制器160将会检测RPU输入161,以了解另一RPU IOO是否已经承担该分配。这将在下面详细描述。待保护的存储器区域 的大小可在数据通信总线163上得到,并且控制器160将选择MUX152 的MAXSIZE+1输入。因此,比较器150指示RPU IOO是否能与该存储 器区域相关联,S卩,RPU100是否足够大。如果是,则控制器160把第 一内部标记(未示出)设定为指示RPU已经接受该分配的值,并且同 时迫使把待保护的存储器区域的大小存储在第二寄存器120中。可选 地,控制器160断言(assert)其输出166,因此导致断言的(asserted) RPU输出162。这个断言的输入通知其它RPU IOO已经分配所请求的保 护。备选地,比较器150的断言输出可替代地用于此目的。
典型地,将RPU 100的RPU输出162耦合到另一RPU IOO的RPU输 入161。这样,可以形成RPU的分级菊花链(daisy chain)。
在这种菊花链中,如果多于一个的RPU同时接受指定存储器区域 的保护的任务,则较低级别的,即后续或下游RPU将会在通过其RPU 输入161接收到来自较高级别的,即前身或上游RPU的断言输出时,将 其自身与该任务解除关联(dissociate)。重要的是,其它(较低级别的) RPU在下一时钟周期内接收该断言输出信号,以避免把多个RPU与单 个存储器区域相关联。虽然RPU之间的信号路径包括很少的逻辑,这 意味着信号能在单个时钟周期内到达若干个RPU控制器,然而在很长 的菊花链的情况下,该信号可能不能到达所有的下游RPU。为达到此 目的,可提供诸如携带先行(look-ahead)信号路径的额外的信号路径,
以确保每个RPU对信号的及时接收。这种技术本身是众所周知的,因 此不再进一步说明。
应意识到,在执行此功能的过程中,第一寄存器HO应携带零值以
使数据通信总线163上的存储器区域大小通过算术函数块140而不改 变。备选地,在这种模式中可将算术函数块140旁路(bypass),比如, 通过算术函数块140周围的一组多路复用器(未示出)。其它方案对于 技术人员是显而易见的。
在RPU接受上述任务时,将发出指定要保护的存储器区域的边界 地址的另一指令,比如下边界地址。该指令将由具有其断言的第一内 部标记的RPU IOO获取,即接受存储器保护任务的RPU 100。通过数据 通信总线163提供边界地址,控制器160使第一寄存器110捕获该值。控 制器160将把另一内部标记(未示出)设置为指示RPU100目前正在使 用的值,并且清除其第一内部标记。在此模式中,控制器160未使用其 输入信号161和输出信号166。备选地,如上所述,边界地址也可被包 括在用于检测RPU是否可用于保护存储器区域的指令中。
接下来,在检测地址模式中,由适当的指令发信号通知,RPU100 检测通过数据通信总线163接收的地址是否落入已与RPU IOO相关联 的存储器区域内。为此目的,控制器l6O激活算术逻辑块l40,该块从 数据通信总线163上接收的地址中减去存储在第一寄存器110中的存储 器区域的(下)边界地址。控制器160还选择耦合到第二寄存器120的 MUX 152的输入,以便于比较器150将算术函数块140的结果和存储在 第二寄存器120中的区域大小值相比较,该比较器150可由减法单元或
另一适当的算术函数块来实现。
比较器150输出的信号指示数据通信总线163上的地址大于或等于
存储在第一寄存器110中的下边界地址,但这两个值之间的差不超过存 储器区域的大小。备选地,寄存器110中可使用上边界地址,在此情况 下,比较器150将发信号通知数据通信总线163上的地址小于或等于上 边界地址。简而言之,比较器产生的信号指示数据通信总线163上的地 址是否落入到RPU IOO所保护的存储器区域中。
在RPU输出162上提供的输出信号是比较器150提供的信号和RPU
输入161上接收到的级联输入信号的逻辑OR。该信号在以下情况中将
被断言比较器150或另一RPU已发信号通知数据通信总线163上提供
的地址落入其所保护的存储器区域。所述信号能被用于多种目的。例 如,在检测有效地址的情况下,该信号可以用于准予对受保护的存储 器区域的存储器存取,或可以用于设定指示指定地址为有效地址的标
记。相反,对于无效地址,(去断言(deasserted))信号可触发系统的 中断和随后的状态捕获,针对评估目的,RPU架构是比如追踪导致无 效地址规格的故障起源的一部分。
最终,可向RPU100提供将其自身与存储器区域解除关联的指令。 为此目的,将为数据通信总线163提供与这个存储器区域特性相对应的 参数,诸如存储在第一寄存器110中的受保护的存储器区域的边界地 址,或位于该区域内的地址。具有断言的另一内部标记的RPU100(即 正在使用的RPU 100)的控制器160指令算术函数块140把数据通信总 线163上的值与存储在第一寄存器110中的值相比较。如果值相匹配, 控制器160将去断言(deassert)其另一内部标记,以指示RPU IOO再次 变得可用。控制器160也可使第一寄存器110和第二寄存器120的内容复位。
RPU100的实施例特别适用于保护堆型(heap-type)存储器区域。 图2示出了特别适用于保护堆型存储器区域的RPU 200的实施例。除 RPU IOO之外,RPU 200包括用于存储函数标识符的第三寄存器130, 所述功能标识符与RPU 200可保护的栈相关联。典型地,栈用于特定 函数作用域(scope)中的临时和/或内部变量。该作用域中的标识符 的存储是有用的,下面将详细说明。RPU 200还具有MUX 152上的额 外的固定值输入,以及受控制器160的控制的额外的MUX 142,以便 于第一寄存器110和第三寄存器130之间的选择。
RPU 200可以与针对RPU IOO而说明的相同方式复位。利用RPU IOO不敏感的专用指令,可将RPU 200与堆型存储器区域相关联。例如, 当在栈上分配缓冲区时,为了分配RPU 200来保护该缓冲区,可以调 用该指令。把RPU200和栈区域相关联的机制与把RPU100和堆型存储 器区域相关联的方式类似,即,通过将堆型区域的大小提供给RPU
200,并且将其与MAXSIZE+1值相比较,等等,因此将不进一步说明。 显而易见,不仅将存储在第一寄存器110中的存储器区域的边界地址提 供给新关联的RPU 200,而且还将函数作用域标识符提供给RPU 200 以存储在第三寄存器130中。以与RPU IOO中相同的方式检测地址是否 落入受保护的堆型存储器区域内,因而也不会进一步说明。
堆型RPU100和栈型RPU200的主要差异在于,对于后者的类型, 多个RPU200可被分配给相同的函数作用域。第三寄存器130中函数作 用域标识符的存在便于被分配给单个函数作用域的RPU 200的有效的 解除关联。通过模式选择线165和数据通信总线163将包括适当的函数 作用域标识符的解除分配(deallocation)指令广播给所有RPU,并且 触发栈型RPU 200中的控制器160,以通过激活算术函数块140并选择 MUX 142的适当输入而将数据通信总线163上的标识符的值与存储在 第三寄存器130中的值相比较。将MUX 152设定为固定的值输入,比 如",,使得如果数据通信总线163和第三寄存器130上的函数作用域 标识符相同,则比较器150产生算术函数块140的输出比MUX 152提供 的值更小的信号。该信号将触发控制器160复位其另一内部标记,从而 解除RPU 200与其存储器区域的关联。因此,能使用单个指令同时使 共享来自各个存储器区域的函数作用域的所有RPU200解除关联。
在这里,应指出,优选地使用无符号整数用于通过数据通信总线 163提供的各种参数。例如,这确保当数据通信总线163上的函数作用 域标识符与第三寄存器130中的值不同时,算术函数块140的输出总是 产生比MUX 152的固定值大的值。
图3示出了根据本发明的IC装置300的示例。IC装置300具有处理单 元310,所述处理单元310可为中央处理单元或多个处理单元之一,其 通过数据通信总线320和总线适配器330耦合到RPU控制器340。通过模 式选择总线165和数据通信总线163将RPU控制器340耦合到多个堆型 RPU IOO和多个栈型RPU 200。 RPU控制器340也可通过RPU各自的时 钟信号线164(为了清楚起见,图3中未示出),将时钟信号提供给RPU。 备选地,该信号可由单独的时钟发生器(未示出)来提供。应意识到, 堆型RPU IOO和栈型RPU 200的混合的选择仅作为非限制性实例。备选
的装置,比如仅具有RPU100或仅具有RPU200同样是可行的。为了清 楚起见,图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上提供的地址的信息。
应意识到,由于RPU200为RPU IOO的扩展版本,所以也能使用栈 型RPU 200来保护堆型存储器区域。以下述方式将其应用于IC架构中。 将OR门350插在菊花链的第一部分和菊花链的第二部分之间。如上所 述,如果栈型RPU200不允许作为堆型RPU,则RPU控制器340将断言 OR门的输入,该输入在RPU检测其自身是否能与要保护的存储器区域 相关联的模式下通过数据线354耦合到RPU控制器340的 stack—fallback—n输出。OR门350的断言输入将导致耦合到OR门350的 输出的第一栈型RPU200的输入161接收信号值,该信号值指示较高级
别的RPU己经接受该任务。这个值波动(ripple)通过所有RPU200, 使得RPU中的任何一个都不接受该任务。
另一方面,如果允许RPU 200接收保护堆型存储器区域的任务, 则RPU控制器将去断言数据线354,这允许堆型RPU IOO和栈型RPU 200中的每一个接受该任务。
针对用于操作IC装置300的RPU架构,下面给出了合并在API中的 C型指令集的示例实现。这些指令是上述图1和2的详细描述中的指令 的示例。
vo/cf rpus—/M/a//'ze f J
此函数复位RPU硬件,清除所有设定。
当通过诸如malloc和new的函数在堆上分配缓冲区时,调用这个函 数。此函数传递诸如缓冲区的基地址和大小的信息。对可用的基于硬 件的RPU100或200中的任何一个进行编程,以保护该缓冲区,并返回 真值,但如果没有RPU可用,则返回假值。后者的返回值开启低效运 行(fallback)机制以保护软件中的缓冲区。
jboo/厂jDt/ssfac/c_enaib/e(Vo/'cf *base, uns/'gnec/ /ong /'nf s/ze,/nf 细c_/(^)
类似rpus—heap—enable函数,当在栈上分配缓冲^l时,调用此函数。 它传送诸如栈缓冲区的基地址和大小的信息,以及其中分配缓冲区的 函数作用域的标识码。
iboo/ /ptvsc/ ec/c—access o/.af *po/>7ferJ
只要软件中存在存储器存取,便调用此函数。存储器存取的地址 通过存储器映射输入/输出(MMIO)空间传送到硬件。如果菊花链中 基于硬件的RPU 100或200通过针对参照所有已知的有效区域进行检 测而确认该存储器地址,则该函数调用返回真值,反之则返回假值。 如果使用基于额外软件的保护,则可以使用后者来激活软件低效运行, 以参照软件中保护的所有区域来检测该存储器地址。
如果完整的存储器保护架构由硬件实现,那么该指令返回的假值 可用于触发软件调试器,指示存在非法的存储器存取。优选地,所有 上述指令通过存储器映射的输入/输出(MMIO)空间向下层的RPU硬
件传送相关数据。
RPU构架的备选实施,即RPU控制器340直接观测总线以自动提取 总线上出现的任何事务处理(transaction)的地址。RPU控制器340的 第二备选实施将RPU控制器340作为主处理单元310和系统总线320之 间的桥接模块,允许其监控并且有条件地使处理单元310做出的任何存 储器存取通过。
当程序或编程者释放堆上分配的存储器时,调用此函数。使用此 调用能够释放向给定基地址分配的RPU 100或200,并用于在将来保护 新的缓冲区。如果在硬件中存在保护以给定的基地址开始的缓冲区的 RPU100或200,则返回值为真,如果不存在该RPU,则返回值为假。
后者可用于仅有条件地搜索软件中保护的缓冲区的列表,并将适当的 RPU从该列表中移除。
vo/of rpus一sfac/c_cf/saib/e funcf/on—/'cf j>
当特定函数的作用域结束时,调用此函数。将函数作用域的标识 码传送到硬件,特别是传送到栈型RPU 200。使用此调用,将释放在 此函数中分配以及由此通过标识码(function_id)标识的任何栈型 RPU200,并可用于后续的使用。
应指出,上述实施例说明但不限制本发明,并且本领域的技术人 员能设计多个可替代实施例,而不偏离权利要求的范围。在权利要求 中,位于括号内的任何附图标记不应解释为限制权利要求。词"包括" 不排除除了权利要求中列出的之外的组件和步骤的存在。组件之前的 "一"或"一个"不排除多个这种组件的存在。本发明能借助包括几个截 然不同的组件的硬件实施。在装置权利要求中列举了几个装置,这些 装置中的几个能通过同一项硬件来实施。起码的事实是,在互不相同 的从属权利要求中列举的特定措施并不意味这些措施的组合不能产生 优点。
权利要求
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)与所述存储器区域的关联。
全文摘要
公开了一种存储器保护单元,包括第一寄存器,用于存储存储器区域边界地址;第二寄存器,用于存储存储器区域大小;算术函数块,用于对提供给区域保护单元的存储器地址和第一寄存器中的地址执行算术函数。所述单元还包括比较器,用于比较算术函数块的输出和第二寄存器中的大小值,将比较器耦合到用于通知总线上存储器地址的有效性的输出。区域保护单元具有控制器,该控制器被配置成从发布到区域保护单元的指令中获取存储器区域地址和存储器区域大小,用于将所述单元与所述区域相关联,并响应于另一指令而解除所述单元与其存储器区域的关联。
文档编号G06F12/14GK101375258SQ200780003197
公开日2009年2月25日 申请日期2007年1月16日 优先权日2006年1月17日
发明者休伯特斯·G·H·韦尔默朗, 尤达亚·塞斯华, 纳加拉杰·布萨 申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1