使用地址别名的存储器访问控制的制作方法

文档序号:17184910发布日期:2019-03-22 21:15阅读:182来源:国知局
使用地址别名的存储器访问控制的制作方法

本公开涉及存储器访问控制领域。



背景技术:

存储器访问控制允许基于希望访问存储器的处理设备的操作模式来限制对存储器的某些区的访问。例如,处理设备可以能够以用户模式和以管理员模式操作。仅当处理设备以管理员模式操作时,存储器的某些段可以是可读、可写或可执行的,并且仅当处理设备处于用户模式时,存储器的其它段可以是可执行的。此外,仅当处理设备以管理员模式操作时,才允许修改与操作系统相关的某些核心程序文件。

通常使用mpu(存储器保护单元)或mmu(存储器管理单元)来实现访问控制。然而,就逻辑门(通常超过1万个门)而言,mpu和mmu具有相对高的成本。实际上,现有技术设备通常提供寄存器存储关于要应用于每个存储器段的存储器访问规则的信息,以及存储识别规则所适用的每个存储器段的起始地址和大小的信息。此外,现有技术的设备通常采用地址比较器来为每个存储器访问操作验证是否正在访问受限制的存储器段。这种比较器增加了额外的功耗。此外,存储器段的粒度通常很差,通常最小为32字节,并且通常为1到4kb。



技术实现要素:

期望存储器访问控制系统具有相对低的表面积、低功耗和/或允许相对好的粒度。

根据一个方面,提供了一种存储器访问控制系统,包括:处理设备,能够在多个操作模式下操作,以及使用多个地址别名访问存储器;以及验证电路,被配置为:与存储器中的第一存储器位置的第一读取操作相关地接收所述多个地址别名中的与第一读取操作相关联的第一地址别名的指示;验证处理设备的当前操作模式允许处理设备使用第一地址别名访问存储器;在第一次读取操作期间,接收存储在第一存储器位置处的第一标记;以及基于第一标记和第一地址别名来验证处理设备被允许访问第一存储器位置。

根据一个实施例,验证电路还被配置为:与对第一存储器位置的第一写入操作相关地生成第一标记,并将第一标记存储在第一存储器位置处。

根据一个实施例,验证电路还被配置为:与第一写入操作相关地接收所述多个地址别名中的与第一写入操作相关联的地址别名的指示;以及验证处理设备的当前操作模式允许处理设备使用与第一写入操作相关联的所述地址别名写入存储器。

根据一个实施例,第一标记包括错误检测代码或错误校正代码。

根据一个实施例,存储器访问控制系统还包括:错误检测代码或错误校正代码电路,被配置为验证第一地址别名与用于第一标记的写入操作的地址别名相匹配。

根据一个实施例,存储器访问控制系统还包括:地址解码器,被配置为从与第一读取操作相关联的地址中提取第一地址别名。

根据一个实施例,第一标记的长度在1位到8位之间。

根据另一方面,提供了数据处理系统,包括:上述存储器访问控制系统;以及存储器,经由地址总线和数据总线耦合到处理设备。

根据又一方面,提供了存储器访问控制的方法,包括:通过与处理设备对存储器的第一存储器位置的第一读取操作相关的验证电路,接收与第一读取操作相关联的多个地址别名中的第一地址别名的指示,该处理设备能够在多个操作模式下操作并使用多个地址别名访问存储器;验证处理设备的当前操作模式允许处理设备使用第一地址别名访问存储器;在第一读取操作期间,接收存储在第一存储器位置处的第一标记;以及基于第一标记和第一地址别名,验证处理设备被允许访问第一存储位置。

根据一个实施例,该方法还包括:在第一读取操作之前,与对第一存储器位置的第一写入操作相关地生成第一标记,并将第一标记存储在第一存储器位置处。

根据一个实施例,该方法还包括:通过与第一写入操作相关的验证电路,接收与第一写入操作相关联的所述多个地址别名中的地址别名的指示;以及验证处理设备的当前操作模式允许处理设备使用与第一写入操作相关联的所述地址别名写入存储器。

根据一个实施例,第一标记包括错误检测代码或错误校正代码。

根据一个实施例,该方法还包括:通过错误检测代码或错误校正代码电路来验证第一地址别名与用于第一标记的写入操作的地址别名相匹配。

根据一个实施例,该方法还包括:由地址解码器从与第一读取操作相关联的地址中提取第一地址别名。

附图说明

从以下对实施例的详细描述中,前述和其它特征和优点将变得显而易见,所述实施例是以说明而非限制的方式参考附图给出的,其中:

图1示意性地示出了具有受限制访问的段的存储器的示例;

图2示意性地示出了根据本公开的示例实施例的具有存储了标记的存储器位置的存储器;

图3示意性地示出了根据本公开的示例实施例的包括存储器访问控制电路的数据处理系统;

图4是示出根据本公开的示例实施例的使用图3的存储器访问控制系统写入存储器位置的方法中的操作的流程图;

图5是示出根据本公开的示例实施例的使用图3的存储器访问控制系统从存储器位置读取的方法中的操作的流程图;

图6示意性地示出了根据本公开的另一示例实施例的包括存储器访问控制电路的数据处理系统;以及

图7示意性地示出了根据本公开的又一示例实施例的包括存储器访问控制系统的数据处理系统。

具体实施方式

图1示意性地示出了包括具有不同访问权限的若干个段的存储器100的示例。在图1的示例中,存储器包括分别对应于用户堆栈(userstackr,w)和用户数据(userdatar,w)的段102和104、存储用户代码(usercodex,r)的段106、以及分别存储管理员数据(supervisordatar,w)和管理员代码(supervisorcodex,r)的段108和110,段102和104中的每个段在用户操作模式期间都可以通过读取和写入操作进行访问,段106可以在用户操作模式期间执行或读取,段108和110只能在管理员操作模式期间访问,段108允许读取和写入操作,而段110仅允许执行和读取操作。

使用存储器管理单元(mmu)或存储器保护单元(mpu)可以实现执行图1的各个存储器段的访问规则,但是如上面在背景技术部分中所描述的那样,这样做会导致表面积、功耗和段的粒度方面的缺点。

图2示出了根据本公开示例实施例的存储器200。根据本文描述的实施例,不是将存储器分成如上面结合图1所描述的地址段,而是可以将存储器的每个存储器位置分配给多个不同的别名地址区中的任何一个,每个别名地址区能够使用对应的地址别名访问。每个存储器位置对应于存储器的可寻址部分。例如,存储器200具有对应于地址0x000至0xfff的物理地址位置,其中前缀“0x”表示十六进制值。存储器中的第一别名地址区与地址别名“0”相关联,因此可以使用地址0x0000到0x0fff来访问,其中十六进制值的第一个数字0是地址别名。存储器中的第二别名地址区与地址别名“1”相关联,因此可以使用地址0x1000至0x1fff来访问。

此外,除了所存储的数据之外,还在每个存储器位置处存储标记。例如,如图2所示,存储器位置201包括数据值data1和相关标记marker1,并且存储器位置202包括数据值data2和相关标记marker2。标记表示在存储在对应的存储器位置处的数据值的写入操作期间使用的地址别名。在一些实施例中,每个标记包括直接指示地址别名的一个或多个数据位。例如,标记是“0”位,表示对应于存储器的一个别名地址区的地址别名,标记是“1”位,表示对应于存储器的另一个别名地址区的另一个地址别名。在下面更详细描述的替代实施例中,每个标记至少部分地基于在对存储器位置的最新写入操作期间使用的地址别名而采用edc(错误检测代码)或ecc(错误校正代码)的形式。

图3示意性地示出了根据本公开示例实施例的数据处理系统300。

系统300包括经由地址总线304和数据总线306与存储器200通信的处理设备302。存储器200例如是诸如sram(静态随机存取存储器)或dram(动态随机访问存储器)的易失性存储器,或者是诸如flash存储器或eeprom(电子可擦除可编程只读存储器)的可编程非易失性存储器。处理设备302例如包括一个或多个处理器,该一个或多个处理器在例如存储在存储器200中和/或在单独的指令存储器中的指令的控制下。处理设备302例如能够以多种不同的操作模式操作,诸如用户模式和管理员模式。如本领域技术人员所知,处理设备的不同操作模式例如与不同级别的访问权限相关联,该访问权限与读取、写入或执行存储在存储器中的数据/指令相关。存储器访问控制电路308被提供用于控制处理设备302对存储器200的访问。

存储器访问控制电路308例如包括地址解码器(addressdecoder)310和验证电路(verificationcircuit)312。地址解码器310接收地址总线304上提供的地址的一个或多个位,并从这些位确定处理设备的地址别名以用于当前存储器访问操作。该信息例如作为信号alias提供给验证电路312。验证电路312还根据处理设备302的当前操作模式在一条或多条线313上接收访问类型的指示,访问类型由一个或多个位表示。例如,访问类型可以是“用户访问”或“管理员访问”。处理设备例如还在一条或多条输出线314上提供操作类型的指示,该操作类型例如是读取r、写入w或执行x操作。这些一条或多条线314例如耦合到验证电路312。此外,存储器200例如还接收指示操作是读取操作还是写入操作的线314中的至少一条。

以这种方式,验证电路312能够验证:处理设备的访问类型允许处理设备使用与给定操作类型(读取、写入或执行)相关的存储器访问操作的地址别名。验证电路312还经由总线315向存储器200写入标记值并从存储器200读取标记值。

现在将参考图4和图5更详细地描述图3的电路300的操作。

图4是示出根据本公开示例实施例的将数据写入存储器200中的存储器位置的方法中的操作的流程图。该方法例如由图3的存储器访问控制电路308实现。

在操作401中,从由处理设备提供的存储器地址中提取由处理设备请求的与写入操作相关联的地址别名。例如,如关于图3所描述的,存储器访问控制电路308包括地址解码器310,地址解码器310从地址总线304上提供的地址中提取地址别名。备选地,地址别名可以直接由地址的一个或多个位表示,在这种情况下可以省略地址解码器310。

在操作402中,基于处理设备的当前访问类型,确定是否允许使用由处理设备请求的地址别名由处理设备302对存储器200进行写入访问。例如,验证电路312存储基于处理设备302的访问类型定义处理设备302的访问权限的规则。作为示例,在用户操作模式期间,访问类型对应于“用户访问”,并且验证电路312存储的规则定义用户是否被授权使用一个或多个地址别名来访问存储器以进行读取、写入或执行操作。

如果确定处理设备的访问类型不允许处理设备使用所请求的地址别名访问存储器,则在操作403中,例如拒绝对存储器的访问,并且报警信号可以由验证电路312断言。然而,如果确定允许访问,则下一操作是操作404。

在操作404中,生成与处理设备302请求的写入操作的地址别名相对应的标记,并将该标记与要写入存储器的数据组合。例如,如图3所示,在总线315上从验证电路312向存储器200的数据端口提供一个或多个位的标记,该数据端口足够宽以接收数据总线306上的数据和总线315上的标记。

在操作405中,在定义的存储器地址处执行对数据总线306上的数据和总线315上的标记的存储器200的写入操作。例如,定义的存储器地址是地址总线304上提供的物理存储器地址,不包括地址别名的一个或多个位。在一些实施例中,地址别名的位不提供给存储器200。

图5是示出根据本公开示例实施例的从存储器位置读取数据和/或执行存储在存储器200中的指令的方法中的操作的流程图。该方法例如由图3的存储器访问控制电路308实现。

在操作501至503中,以与上述图4的对应操作401至403中进行的验证类似的方式,验证处理设备具有基于所请求的地址别名进行存储器访问的许可。然而,在图5的情况下,地址别名涉及读取或执行操作,而不是写入操作,因此验证是否允许读取和/或执行操作。如上所述,地址别名可以由地址解码器310从地址中提取。

如果在操作502中确定处理设备302的当前访问类型允许访问,则在操作504中,执行来自存储器的读取或执行操作,包括读取存储在地址位置处的标记,标记在总线315上被提供给验证电路312。

在操作505中,确定标记的值是否与现在用于访问存储器的地址别名兼容。例如,标记被提供给验证电路312,验证电路312将标记与从读取或执行操作的地址中提取的地址别名进行比较。如果标记等于地址别名或与地址别名兼容,则数据可以由处理设备302在操作506中使用。或者,如果标记值不对应于与读取或执行操作相关联的地址别名,则数据例如在操作507中被丢弃,和/或验证电路例如断言报警信号alarm。在一些实施例中,从存储器200读取的数据可以在被提供给处理设备302之前被延迟一个或多个周期,从而允许在标记值不对应于地址别名的情况下相对于处理设备302保留数据。或者,可以将数据提供给处理设备302,但是由验证电路生成的报警例如使得处理设备302中止所读取数据的软件执行或中止基于所读取数据的软件。

图6示意性地示出了根据图3的替换实施例的数据处理系统600。系统600的若干特征类似于系统300的特征,并且这些特征已经用相同的附图标记进行标记,并且将不再详细描述。

在图6中,图3的存储器访问控制电路308已由存储器访问控制电路602替换,该存储器访问控制电路602包括地址解码器310、验证电路312以及另外的错误检测代码/错误校正代码电路(edc/ecc)604。例如,电路604能够基于数据总线306上存在的数据并且还基于与存储器访问操作相关联的地址别名来生成和验证错误检测代码和/或错误校正代码。特别地,在总线605上向存储器200提供edc或ecc以及从存储器200提供edc或ecc。在电路604生成ecc的情况下,数据校正电路(校正)606例如还被提供用于在电路604的控制下校正从存储器202读取的数据。

在对存储器200的写入操作期间,由处理设备使用的地址别名从地址中提取,并根据访问类型进行验证,如上面关于图4的操作401到403所述。此外,如果基于处理电路的访问类型允许存储器写入访问,则验证电路312基于地址别名生成中间标记,并将中间标记提供给edc/ecc电路604。然后,电路604例如基于中间标记以及基于数据值生成edc和/或ecc,并将代码提供给存储器200以与数据一起写入存储器位置。因此,edc和/或ecc形成新标记,该新标记基于验证电路312提供的中间标记和基于要存储到存储器位置的数据值而生成。

在来自存储器200的读取操作期间,处理设备使用的地址别名从地址中提取,并根据访问类型进行验证,如上面关于图5的操作501至503所述。此外,如果基于处理电路的访问类型允许存储器读取访问,则验证电路312基于地址解码器提供的地址别名生成中间标记,并将中间标记提供给edc/ecc电路604。电路604还接收以edc和/或ecc的形式存储到存储器位置的标记。因此,电路604能够相对于从存储器位置读取的数据和由验证电路312提供的中间标记来验证edc/ecc代码。

在edc/ecc电路604检测到错误的情况下,这表示在从地址位置读取的数据值或edc/ecc中存在错误,或者表示与先前对存储器位置的写入操作相关联的原始中间标记不匹配于与读取操作相关联的当前中间标记。在代码是edc的情况下,电路604例如输出错误信号error,并且可以丢弃从存储器读取的数据值,或者可以中止执行数据的软件或中止基于数据的软件,如上面关于图5所述。在代码是ecc的情况下,电路604例如控制校正电路(校正)606以校正所读取数据值中的任何错误。如果在中间标记中没有检测到错误,则例如通知验证电路312,并且不断言报警信号alarm。然而,如果在中间标记中检测到错误,则电路604例如将校正的标记提供给验证电路312,验证电路312例如断言报警信号alarm。

edc和/或ecc形式的标记的优点在于,这种标记能够提供错误检测和/或校正以及地址别名的验证,而没有相对于标准edc或ecc增加位数。实际上,edc或ecc的给定位数通常允许保护一系列输入位。例如,由汉明码实现的6位ecc允许保护多达57位的输入数据。因此,如果数据总线306具有32位的宽度,则中间标记可以高达25位而不增加ecc的位数。实际上,中间标记通常可以由相当少的位来表示,例如包括1位到8位,并且可以简单地等于地址别名。

图7示意性地示出了根据本公开的又一示例实施例的数据处理系统700。系统700具有与图6的实施例相同的许多特征,并且这些特征已经用相同的附图标记进行标记,并且将不再详细描述。

在图7的实施例中,验证电路312仅基于处理设备的当前访问类型使用所请求的地址别名来验证是否允许访问,如关于图4的操作401至403和图5的操作501至503所述。edc/ecc电路604例如直接从地址总线304接收包括地址别名的地址,并基于包含地址别名的地址的至少一部分来生成对应的中间标记。然后,在写入操作期间生成edc/ecc时可以考虑中间标记,或者中间标记可以在读取操作期间用于验证edc/ecc。

在图7之一的替代实施例中,不是从地址总线304接收地址数据,而是edc/ecc电路604可以从地址解码器310接收信号alias,并且基于此地址别名生成或验证中间标记。

本文描述的实施例的优点在于:通过定义可以由处理设备302用来访问存储器的地址别名,并且还将标记存储在存储器的存储器位置中,可以以简单的方式实现访问控制,而且不需要mpu或mmu。此外,各个别名地址区的粒度可以非常小,例如与字大小相等。

已经如此描述了至少一个说明性实施例,本领域技术人员将容易想到各种改变、修改和改进。例如,对于本领域技术人员来说显而易见的是,本文描述的存储器访问控制电路308、602和702仅表示一些示例实现方式,并且各种替换将是可能的。例如,如果例如地址别名由地址的一个或多个位简单地指示,则可以在没有地址解码器的情况下提取地址别名,并且图6中的验证电路312或edc/ecc电路604可以负责用于基于标记的验证生成报警信号。

可以组合上述各种实施例以提供进一步的实施例。根据以上详细描述,可以对实施例进行这些和其它改变。通常,在以下权利要求中,所使用的术语不应被解释为将权利要求限制于说明书和权利要求中公开的特定实施例,而是应该被解释为包括所有可能的实施例以及这些权利要求所赋予的等同物的全部范围。因此,权利要求不受本公开的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1