技术领域
[0001] 本发明大体来说涉及计算机存储器存取,且更具体来说涉及一种计算机存储器系统及存储器分段方法。
相关背景技术
[0002] 美国专利申请公开2008/0263315阐述一种依靠存储器段标识符及存储器段掩码来指示存储器定位的计算机寻址模式(addressing mode)及存储器存取方法。在此种寻址模式中,处理器接收包括存储器段标识符及存储器段掩码的指令。处理器采用两级地址解码方案来存取各别的存储器定位。在此种解码方案下,处理器对存储器段标识符进行解码以选择特定的存储器段。每一存储器段包括预定义数目的存储器定位。处理器基于在存储器段掩码中设定的掩码位来选择存储器段内的存储器定位。所公开的寻址模式由于能够高效地存取不连续的存储器定位而具有优势。
[0003] 美国专利11,301,391阐述一种系统,所述系统包括:第一存储器组件,具有与实行存储器操作相关联的特定存取大小;第二存储器组件,用于存储逻辑‑物理数据结构(logical to physical data structure),逻辑‑物理数据结构的条目将管理段(management segment)映射到存储器组件中的相应的物理定位,其中每一管理段对应于具有特定存取大小的总计多个逻辑存取单元;以及处理装置,可操作地耦合到存储器组件。所述处理装置可通过以下方式逐一管理段地实行存储器管理操作:为每一相应的管理段跟踪对于与相应的管理段对应的构成存取单元的存取请求,并基于所述跟踪来判断是否对所述相应的管理段实行特定的存储器管理操作。
具体实施方式
[0038] 概述
[0039] 计算机的存储空间常常被划分成存储器区段或存储器段,所述存储器区段或存储器段通常对应于代码与数据的自然划分,例如操作系统(Operating System,OS)相对于应用程序代码、系统相对于用户数据。许可代码可与存储器段相关联;例如对于给定的存储器区段来说,尽管可不对读取存取进行限制,但可只允许对操作系统进行写入存取。在一些计算机系统中,处理器可针对每一存储器存取(memory access)发出用户身份(ID)代码,且各种存储器区段可为每一此种用户定义许可列表。
[0040] 另外,计算机或计算机中的专用电路系统有时可将CPU所存取的区段重映射到存储器中的不同区段(通常具有相同的大小)。(此技术可用于基于页面的虚拟存储系统中及用于段。)
[0041] 本文中所公开的本发明的实施例提供高效的存储器分段技术,包括设备及方法。在实施例中,计算机系统包括存储器区段属性存储器(Memory Section Attribute Storage,MSAS),所述MSAS被配置成为每一存储器区段存储区段的基地址及区段大小。在实施例中,区段大小总是二的整数次幂,且区段基地址是相应区段大小的整数倍;因此,在实施例中,为查明地址是否处于给定的区段内,对指定区段的数目减少的最高有效地址位进行比较即可,此使得本公开的方案快且高效。在实施例中,所要比较的地址位的数目等于存储器大小的以2为底的对数减去区段大小的以二为底的对数。
[0042] 在一些实施例中,响应于来自处理器(在本文中也被称为主机)的存储器存取请求,MSAS将地址同时与所有段的基地址进行比较,以对所寻址的区段(addressed section)进行定位。在实施例中,MSAS还包括为段中的每一者指定的安全策略代码(例如,许可代码),并响应于地址输入而输出附属于所寻址的存储器区段的安全策略代码。
[0043] 在一些实施例中,计算机系统还包括存储器存取控制(Memory Access Control,MAC)电路,所述MAC电路被配置成从处理器接收包括用户ID及读取‑写入指示的存取属性,对照MSAS所输出的安全策略代码对所述存取属性进行检查,且据此允许或拒绝进行存储器存取。
[0044] 在实施例中,计算机系统能够进行从用户空间到物理存储空间的区段重映射。MSAS包括每一区段的重映射代码;当MSAS根据输入地址以及所存储的基地址及区段大小对段进行定位时,MSAS根据相应的重映射代码对地址进行重映射。
[0045] 系统说明
[0046] 在下文中所公开的实例性实施例中,假定总存储器大小为131,072(217或128K)字12
节,最小区段大小为4,096(2 或4K)字节。然而,本发明并非仅限于131,072字节以及为4,
096的最小区段大小;此外,数据大小并非仅限于字节(例如,数据可为32位的字)。在实施例中,可使用任何合适的存储器大小、最小区段大小及存储器数据大小(如以下将示出,区段大小应为二的整数次幂)。
[0047] 图1是示意性地示出根据本发明实施例的计算机存储器系统100的实例性配置的方块图。
[0048] 计算机存储器系统包括被划分成12个区段的存储器102。存储器区段属性存储器(MSAS)104对每一区段的包括基地址、大小及安全策略代码(例如,许可代码)在内的属性进行描述。根据图1中所示的实例性实施例,存储器大小是0x20000(128K)且最小区段大小是0x01000或4K字节;因此,MSAS的基地址字段包括log2(128K)‑log2(4K)=5位。
[0049] 在下文中将把安全策略代码称为许可代码。然而,所公开的技术并非仅限于许可代码;在实施例中,可使用任何其他合适的安全策略代码。
[0050] 区段属性及相应的MSAS内容如下表中所示出:
[0051]
[0052] 在实施例中,段的基地址是相应的段大小的整数乘积。此种限制使得能够进行其中仅对较小数目的指定区段的位进行比较的高效段搜索,如以下将进行阐述(参照图3)。
[0053] 请注意,为避免歧义,在下文中将把处理器所发送的地址的基地址位称为基地址,并将用于指定基地址位的MSAS位称为基字段。
[0054] 在图1中示出且在上文中阐述的计算机存储器系统100的配置是为了使概念清晰起见而引用的实例。在替代性实施例中也可使用其他的配置。在一些实施例中,举例来说,由于区段的大小总是二的幂,因此区段大小字段中的位数可较小(例如,如果可能的区段大小(为4K字节的倍数)仅为1、2、4、8、16及32,则区段大小字段可只包括三个位)。
[0055] 图2是示意性地示出根据本发明实施例的具有被划分成区段的存储器102的计算机200的方块图。处理器202(也被称为主机)向存储器102(图1)发起存储器存取请求(例如,存储器读取存取或存储器写入存取),从而将读取输出或写入输出置位(在其他实施例中,处理器可包括单个读取/写入(read/write,R/W)输出及存取使能线;在一些其他实施例中,可使用任何其他合适的存储器存取配置)。
[0056] 为简洁起见,以下将使用用语lg来指示以2为底的对数运算。将进一步把lg(存储器大小)减去整个存储器的地址中的位数称为N(在图1中所示的实例中N=17),将lg(最小区段大小)减去最小区段中的位数称为L,并将区段的MSAS的基字段中的位数称为B。在图2中所示的实例性实施例中,N=17,L=12且B=5。
[0057] 当处理器202对存储器进行存取时,处理器会发送地址、读取指示或写入指示、以及用户ID(例如,用户/管理员)。所述B个高阶地址位被输入到MSAS。
[0058] 响应于所输入地址位,MSAS决定对存储器中的哪一段进行存取并向MAC发送相应的许可代码。在实施例中,当基字段及所输入地址位两者都根据区段大小而被屏蔽时,MSAS查找其中基字段等于所输入地址位的条目(如以下将参照图3所述)。
[0059] 计算机200还包括被配置成允许或不允许对存储器进行存取的存储器存取控制(Memory Access Control,MAC)电路204。MAC对MSAS所发送的与由处理器进行寻址的区段对应的许可代码进行检查,并根据许可代码、用户ID代码以及读取输入或写入输入来判断是否允许进行存取。如果不允许进行存取,则MAC例如通过向门206发送去能信号以阻挡写入操作和/或向门208发送去能信号以阻挡读取操作来阻止进行存取。另外或作为另外一种选择,MAC可向处理器发送中止信号(Abort signal)。
[0060] 在图2中示出且在上文中阐述的计算机200的配置是为了使概念清晰起见而引用的实例。在替代性实施例中也可使用其他的配置。举例来说,在一些实施例中,存储器102可包括例如闪速存储器等非易失性存储器(Non‑Volatile memory,NVM),且处理器202所发送的存取类型可包括读取、编程及擦除(许可代码将会被相应地修改)。在一些实施例中,存储器102可包括具有不同的区段大小的多个存储器。在实施例中,存储器也可由外部源(例如,电路内调试器)进行存取,且用户ID类型可包括一个或多个外部用户ID类型。
[0061] 将地址匹配到区段
[0062] 在实施例中,区段大小是二的整数次幂,且区段的基地址被限制为相应区段大小乘以整数;此种限制会简化对给定存取地址的目标段的查找。
[0063] 在图1中所示的实例性配置中,为查明处理器所发送的N位地址A是否存取具有B位基地址字段BAk及段大小Sk的段k,应仅对A与BAk的高阶位(被称为指定区段的位)进行比较,其中t=B‑(lg(Sk)‑L)。举例来说,如果基地址字段为0x08(图1所示MSAS104的条目5)且段大小为32K,则t=5‑(15‑12)=2;为查明地址是否落在区段5中,仅需要对区段的所述两个高阶位进行比较即可。
[0064] 图3是示意性地示出根据本发明实施例的MSAS104的方块图。MSAS包括多个区段条目302。每一区段条目包括为相应区段存储基字段的基地址存储器304及为区段存储位比较掩码(bit comparison mask)的大小掩码存储器306。位比较掩码包括被设定成逻辑零的(lg(Sk)‑L)个最低有效位以及被设定成逻辑1的其余(高阶)位。(应注意,由于大小总是二的整数次幂,因此不同大小的数目等于B(例如,4K、8K、16K、32K、64K及128K);在一些实施例中,大小掩码存储器包括段大小的编码且需要lg(B)个位。举例来说,4K可被编码为0b000,8K可被编码为0b001,16K可被编码为010,32K可被编码为011,32K可被编码为100,64K可被编码为101且128K可被编码为110。此种方式会节省存储位,但需要解码逻辑来产生位掩码。)
[0065] 与门308(总计B个门)对处理器所发送的地址的所述B个高阶位中的每一者与位掩码的对应位进行逻辑与运算,而与门310(B个门)对基字段位与位掩码的对应位进行逻辑与运算(在一些实施例中,基地址存储器304包括B个位,其中(lg(Sk)‑L)个最低有效位被设定成逻辑0,且因此可能不需要门310)。
[0066] 门308的B位输出及门310的B位输出被输出到B个异或(Exclusive‑Or,XOR)门312;每一XOR门对一对地址位与对应的基字段位进行比较。如果所有未被屏蔽的A[16:12]地址位等于未被屏蔽的基字段位,则与门314产生单个匹配指示。
[0067] 根据图3中所示的实例性实施例,许可表316存储各区段的许可(图1所示MSAS104表中的P0至P19)。当条目302中的一者指示匹配时,许可表向MAC 204(图2)发送相应的许可代码,MAC 204将会对当前存取应用许可。
[0068] 在图3中示出且在上文中阐述的MSAS104的配置仅为以实例的方式引用的实例。在替代性实施例中也可使用其他的配置。举例来说,在一些实施例中,MSAS104包括被配置成施行上述屏蔽比较的内容可寻址存储器(content‑addressable memory,CAM)。在其他实施例中,许可代码存储于对应的条目302中。在再一些其他实施例中,每一条目可存储包括例如重映射信息(以下将参照图4进行阐述)和/或磨损量度(wear measure)(供NVM存储器使用)在内的其他位。
[0069] 段重映射
[0070] 计算机系统有时能够进行存储器重映射,例如以支持虚拟存储器(virtual memory)或允许代码重新使用。根据本发明的实施例支持基于段的存储器重映射,其中用户(通常是操作系统)定义将处理器所发送的段重映射到存储器中的不同的段(用户存储器常常被称为逻辑存储器,而实际存储器被称为物理存储器)。所述段通常大小相同;然而,在一些实施例中,处理器所存取的区段可被重映射到更大区段的下部部分(例如,出于安全原因,以便仅允许对区段的一部分进行存取)。
[0071] 图4是示意性地示出根据本发明实施例的计算机存储器的实例性区段重映射400的方块图。MSAS104包括每一条目的重映射字段,所述重映射字段指示由处理器202的存取所指向的存储器102中的区段。
[0072] 在图4中所示的实例性配置中,MSAS将逻辑存储器中的处理器所存取的段重映射到物理存储器中的大小相等的段。举例来说,条目2中的基字段=0x04的4K区段被重映射到基字段=0x1F的相同大小的区段。一些区段(例如,条目5中的区段)未被重映射。在一些实施例中,为易于实施,未被重映射的区段将被重映射到同一基地址。
[0073] 图5是示意性地示出根据本发明实施例的具有区段重映射的计算机500的方块图。如同图2中所示的计算机200一样,计算机500包括处理器202、存储器102及MAC 204。然而,计算机500包括MSAS 504,MSAS 504被配置成根据MSAS 504所包括的重映射条目而将处理器202所存取的区段重映射到存储器102中的区段。
[0074] 如同MSAS104(图2)一样,MSAS 504被配置成接收所述B个高阶地址位,对存储器中要被存取的段进行定位并向MAC发送相应的许可代码。与MSAS104不同,MSAS 504还被配置成将所述B个高阶位重映射到存储器中的可不同于所述B个输入位的基地址;因此,MSAS可对处理器202所存取的区段进行重映射。(计算机500的包括MAC 204、门206及门208在内的其他单元相同于计算机200的具有相同的单元编号的相应单元。)
[0075] 图6是示意性地示出根据本发明实施例的用于进行存储器分段的方法的流程图600。所述流程图由MSAS 504及MAC 204(图5)来执行。
[0076] 流程图首先进行得到存储器存取操作(get‑memory‑access operation)602,在得到存储器存取操作602中,对于处理器202所发起的存储器存取请求,MSAS接收高阶地址位且MAC接收用户ID代码(例如,用户/管理员)及读取‑写入指示(例如,读取输入及写入输入)。
[0077] 接下来,在搜索区段操作604中,MSAS对具有段大小Sk*2L及基地址字段BAk的区段k进行搜索,使得地址位的t个最高有效位等于基地址字段BAk,其中t=B‑(lg(Sk)‑L)。
[0078] 流程图现在进入得到许可操作(get‑permission operation)606,在得到许可操作606中,MSAS向MAC输出与段k对应的许可代码Pk。接下来,在允许/拒绝存取操作608中,MAC对照MSAS所发送的许可代码对处理器所发送的用户ID指示及读取/写入指示进行检查。如果不允许进行存取,则MAC将向处理器发送中止信号和/或禁止进行存储器存取(例如,通过向门206、门208发送去能指示)。
[0079] 如果在操作608中MAC允许进行存取,则流程图可进入到重映射操作610,并通过对所述t个最高有效(most significant,MS)位进行修改而对存取进行重映射。
[0080] 在操作610之后,流程图结束。
[0081] 在图6中示出且在上文中阐述的流程图600的配置是实例性配置。在替代性实施例中也可使用其他的流程图。举例来说,在实施例中,MSAS不发送中止指示(但会阻止存储器存取)。在另一实例中,不实施重映射且在操作608之后结束流程图。
[0082] 在图1至图6中示出且在上文中阐述的包括MAC 204、MSAS104、区段条目302在内的计算机系统200的配置及流程图600的方法是仅为了使概念清晰起见而示出的实例性配置及流程图。在替代性实施例中也可使用任何其他合适的配置及流程图。
[0083] 包括MAC 204、MSAS104及其子单元在内的计算机系统200的不同子单元可使用合适的硬件来实施,例如在一个或多个应用专用集成电路(Application‑Specific Integrated Circuit,ASIC)或现场可编程门阵列(Field‑Programmable Gate Array,FPGA)中使用软件、使用硬件或使用硬件元件与软件元件的组合来实施。
[0084] 处理器202可包括一个或多个通用处理器,所述一个或多个通用处理器利用软件被编程为施行本文中阐述的功能。举例来说,软件可通过网络以电子形式下载到处理器或者从主机下载,或者作为另外一种选择或另外,软件可提供和/或存储在非暂时性有形介质(例如磁性存储器、光学存储器或电子存储器)上。
[0085] 因此,应理解,上述实施例是通过实例的方式引用,且本发明并不仅限于上文具体示出及阐述的内容。确切来说,本发明的范围包括上文阐述的各种特征的组合及子组合以及所属领域中的技术人员在阅读前述说明时将设想到并且在现有技术中未公开的其变化及修改形式。并入本专利申请中进行参考的文献被认为是本申请的组成部分,而当这些并入的文献中以与本说明书中明确进行或隐含进行的定义相冲突的方式定义任何术语时,应仅考虑本说明书中的定义。