买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】统一地址转换方法与统一地址空间_北京忆恒创源科技股份有限公司_201810315446.1 

申请/专利权人:北京忆恒创源科技股份有限公司

申请日:2018-04-10

公开(公告)日:2024-04-12

公开(公告)号:CN110362509B

主分类号:G06F12/1009

分类号:G06F12/1009

优先权:

专利状态码:有效-授权

法律状态:2024.04.12#授权;2021.10.08#著录事项变更;2021.02.02#实质审查的生效;2019.10.22#公开

摘要:本申请提供了统一地址转换方法与统一地址空间。所提供的地址转换方法,包括:获取程序访问存储设备的地址与存储设备类型;根据存储设备的地址与存储设备类型生成统一地址空间中的地址;将统一存储空间中的地址转换为存储设备可接收的地址;使用存储设备可接收的地址访问存储设备。

主权项:1.一种地址转换方法,包括:获取程序访问存储设备的地址与存储设备类型;根据存储设备的地址与存储设备类型生成统一地址空间中的地址;将统一地址空间中的地址转换为存储设备可接收的地址;使用存储设备可接收的地址访问存储设备;其中,运行在CPU上的程序,使用统一地址空间的统一地址直接访问存储设备,所述存储设备包括内存设备和外存设备;程序访问的统一地址空间,是内存设备与外存设备提供的存储空间的和;还包括采用如下方式实现存储设备的地址到统一地址空间的映射:对存储设备的地址通过哈希运算转换为哈希值,并在哈希值上加上统一地址空间的区域的起始地址完成到统一地址空间的映射;多种类型的存储设备的地址空间被映射到统一地址空间中的不同区域。

全文数据:统一地址转换与统一地址空间技术领域本申请涉及信息处理设备,具体地,涉及为信息处理设备的多种存储设备提供统一地址转换,以及为多种存储设备提供统一地址空间。背景技术图1展示了信息处理设备的框图。信息处理设备包括CPU与存储器Memory,也称为内存。信息处理设备还耦合到SSD固态驱动器,SolidStateDrive、NVDIMM非易失内存条、机械硬盘HDD、KV存储设备等外存Storage设备的一种或多种。为了清楚的目的,本申请中,用存储设备统一指示内存设备与外存设备。在的CPU上运行的应用程序为使用存储设备,使用多种形式的地址。例如,按照字节可寻址方式访问内存与NVDIMM,按照块设备的逻辑地址访问SSD与HDD,以及使用键来访问KV存储设备。现有技术中,应用程序使用虚拟地址访问内存,操作系统维护页表,将虚拟地址转换为访问总线的线性地址或访问存储器的物理地址。应用程序使用逻辑地址访问SSD,驱动程序或者SSD,使用FTL将逻辑地址转换为访问非易失存储介质的物理地址。利用FTLFlashTranslationLayer,闪存转换层来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。由驱动程序或SSD来提供FTL服务,相应地SSD分别接收非易失存储介质的物理地址或逻辑地址。使用多种形式的地址访问存储设备,既增加了应用程序使用存储设备的复杂度,也增加了操作系统或驱动程序转换各种形式地址的复杂度。发明内容根据本申请的一些实施例,将程序使用的访问多种存储设备的地址转换为统一地址,以降低操作系统或驱动程序管理各种形式地址的复杂度。根据本申请的另一些实施例,处理器上运行的程序或指令直接使用统一地址访问各种存储设备,程序无需再处理不同类型存储设备引入的复杂度,通过简化存储模型而降低了程序设计开发的复杂度。也优化了存储系统的效率。根据本申请的第一方面,提供了根据本申请第一方面的第一地址转换方法,包括:获取程序访问存储设备的地址与存储设备类型;根据存储设备的地址与存储设备类型生成统一地址空间中的地址;将统一存储空间中的地址转换为存储设备可接收的地址;使用存储设备可接收的地址访问存储设备。根据本申请第一方面的第一地址转换方法,提供了根据本申请第一方面的第二地址转换方法,其中,多种类型的存储设备的地址空间被映射到统一地址空间中的不同区域。根据本申请第一方面的第一或第二地址转换方法,提供了根据本申请第一方面的第三地址转换方法,其中获取统一地址的部分作为统一页号,通过统一页号查询页表得到用于存储设备的页地址。根据本申请第一方面的第三地址转换方法,提供了根据本申请第一方面的第四地址转换方法,其中若存储设备类型是内存设备,将用于存储设备的页地址拼接统一地址的部分得到存储设备可接收的地址;若存储设备类型是外存设备,将用于存储设备的页地址作为存储设备可接收的地址。根据本申请第一方面的第一或第二地址转换方法,提供了根据本申请第一方面的第五地址转换方法,其中,若存储设备是接收逻辑地址的外存设备,获取统一地址的部分得到逻辑地址,将所述逻辑地址作为存储设备可接收的地址。根据本申请第一方面的第五地址转换方法,提供了根据本申请第一方面的第六地址转换方法,其中获取统一地址的部分作为统一页号,通过统一页号查询页表得到用于存储设备的逻辑地址。根据本申请第一方面的第一或第二地址转换方法,提供了根据本申请第一方面的第七地址转换方法,还包括:若存储设备是接收物理地址的外存设备,获取统一地址的部分得到逻辑地址,用逻辑地址查询页表得到用于存储设备的物理地址;将所述物理地址作为存储设备可接收的地址。根据本申请第一方面的第一或第二地址转换方法,提供了根据本申请第一方面的第八地址转换方法,还包括:若存储设备是接收键K的KV存储设备设备,获取统一地址的部分得到键K,将键K作为存储设备可接收的地址。根据本申请第一方面的第一至第八地址转换方法之一,提供了根据本申请第一方面的第九地址转换方法,还包括:为统一存储空间中的地址分配存储设备可接收的地址;在页表中记录统一存储空间中的地址与分配的存储设备可接收的地址的对应关系;以及使用分配的存储设备可接收的地址向存储设备写入数据。根据本申请第一方面的第一至第九地址转换方法之一,提供了根据本申请第一方面的第十地址转换方法,还包括:若旁路转换缓存中记录了所述统一存储空间中的地址,从旁路转换缓存获取所述存储设备可接收的地址。根据本申请第一方面的第十地址转换方法,提供了根据本申请第一方面的第十一地址转换方法,其中旁路转换缓存的条目中还记录了命名空间标识符,在旁路转换缓存的条目中的命名空间标识符与统一存储空间中的地址同程序访问的命名空间标识符与统一存储空间中的地址一致时,从旁路转换缓存获取所述存储设备可接收的地址。根据本申请第一方面的第三或第四地址转换方法,提供了根据本申请第一方面的第十二地址转换方法,其中用所述统一存储空间中的地址的第一部分索引第一级页表,获取第二级页表的地址,并用所述统一存储空间中的地址的第二部分索引第二级页表,获取用于存储设备的页地址;以及其中第一级页表的条目中还记录了该条目所对应的统一地址段被映射到的存储设备类型。根据本申请的第二方面,提供了根据本申请第二方面的第一地址转换方法,包括:在处理器上执行的加载指令指示从统一地址空间中的地址加载数据;将统一存储空间中的地址转换为存储设备可接收的地址;使用存储设备可接收的地址访问存储设备获取数据;以及将获取的数据存储在所述加载指令指示的目的存储单元。根据本申请第二方面的第一地址转换方法,提供了根据本申请第二方面的第二地址转换方法,其中加载指令指示目的存储单元的类型;若所述统一存储空间中的地址指示内存设备,目的存储单元为通用架构寄存器;若所述统一地址空间中的地址指示外存设备,目的存储单元为可容纳外存设备的数据页的寄存器堆或紧耦合存储器。根据本申请第二方面的第一地址转换方法,提供了根据本申请第二方面的第三地址转换方法,其中若所述统一地址空间中的地址指示外存设备,目的存储单元为通用架构寄存器,则将获取的外存设备的数据页存储在高速缓冲存储器中,以及将数据页对应于统一所述统一地址空间中的地址的数据存储在通用架构寄存器中。根据本申请第二方面的第一地址转换方法,提供了根据本申请第二方面的第四地址转换方法,其中所述加载指令为无目的位置加载指令,无目的位置加载指令中未记录目的存储单元,而暗示目的存储单元为高速缓冲存储器;以及执行所述加载指令获取的数据,被存储在所述加载指令暗示的高速缓冲存储器。根据本申请第二方面的第四地址转换方法,提供了根据本申请第二方面的第五地址转换方法,其中执行所述无目的位置加载指令获取的数据在高速缓冲存储器中占据一个或多个高速缓冲存储器行,为每个高速缓冲存储器行设置同其存储的数据对应的统一地址空间地址索引,从而CPU执行的后续加载指令时,通过比较后续加载指令指示的统一地址空间地址与高速缓冲存储器行记录的统一地址空间地址索引,以识别是否命中高速缓冲存储器。根据本申请的第三方面,提供了根据本申请第三方面的信息处理设备,包括存储在存储介质中的程序,当所述程序被处理器执行时,执行根据本申请第一方面与第二方面的地址转换方法之一。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1是相关技术中固态存储设备的框图;图2A是根据本申请实施例的统一地址映射的示意图;图2B展示了根据本申请又一实施例的统一地址映射的示意图;图3A展示了根据本申请实施例的生使用统一地址空间处理读数据请求的流程图;图3B展示了根据本申请实施例的生使用统一地址空间处理写数据请求的流程图;图4A是根据本申请实施例的对统一地址进行地址转换的页表的示意图;图4B是根据本申请又一实施例的对统一地址进行地址转换的页表的示意图;图5展示了根据本申请实施例对统一地址进行转换的MMU的示意图;图6A是现有技术的信息处理设备的存储体系结构的示意图;以及图6B展示了根据本申请再一实施例的信息处理设备的存储体系结构的示意图。具体实施方式下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图2A是根据本申请实施例的统一地址映射的示意图。为了清楚的目的,将程序访问内存的存储空间称为内存地址空间,而将程序访问外存的存储空间称为外存地址空间。参看图2A,根据本申请的实施例,将内存地址空间与外存地址空间统一编址为统一地址空间。例如,内存地址空间大小为4GB,内存地址空间的范围是[0-4GB],而外存地址空间大小为512GB,外存地址空间范围是[0-512GB]。为在统一地址空间中容纳内存地址空间与外存地址空间,统一地址空间的大小为516GB内存地址空间与外存地址空间大小的和,统一地址空间的范围是[0-516GB]。内存地址空间与外存地址空间在统一地址空间可以有部分重叠,或者互不重叠。根据图2A所示的实施例,程序分别使用内存地址空间与外存地址空间使用内存与外存,而无须改变对内存和或外存的使用方式。在一种实施方式中,CPU的内存管理单元、操作系统和或驱动程序,将程序使用的内存地址与外存地址映射到统一地址空间。例如,对于内存地址,将其映射到统一地址空间时,内存地址值保持不变,或者在内存地址的比特序列中添加多个零例如,在内存地址的前部添加多个零;对于外存地址,将其映射到统一地址空间时,在外存地址上增加整体偏移,例如,将外存地址值增加4GB,得到其在统一地址空间的地址。在可选的实施方式中,外存地址空间包括按地址范围区分的多个区域,每个区域被用于一种存储设备。例如,将内存地址映射到区域1,而将外存地址映射到区域2。各个区域有在外存地址空间的起始地址,区域在外存地址的起始地址与内存地址或外存地址相加,得到内存地址或外存地址在统一地址空间中的地址。CPU的内存管理单元、操作系统和或驱动程序,识别统一地址空间中被映射到内存地址的部分,对这部分地址使用页表等现有技术的方式得到对应的线性地址或访问内存的物理地址。而对于统一地址空间中被映射到例如SSD的外存的部分,如果被访问的SSD提供逻辑地址接口,则将统一地址空间中的地址可选地,截取地址相对于区域2的偏移值直接提供给SSD;如果被访问的SSD提供物理地址接口或OCSSDOpenChannelSSD,开放通道SSD接口,则将统一地址空间中的地址可选地,截取地址相对于区域2的偏移值通过FTL进行转换后得到的物理地址提供给SSD。图2B展示了根据本申请又一实施例的统一地址映射的示意图。根据图2B的实施例,将内存地址空间、SSD地址空间与KV存储设备的地址空间统一编址为统一地址空间。作为举例,统一地址空间[0-A1]的地址范围被用于内存地址空间,[A2,A3]的地址范围被用于SSD地址空间,而[A4-A5]的地址范围被用于KV存储设备地址空间。作为举例,内存地址空间与SSD地址空间均为线性的,将内存地址与SSD地址施加指定的偏移而映射到统一地址空间。例如,将SSD地址加上A2得到对应于SSD地址的统一地址空间地址也称为统一地址。对于KV存储设备,程序使用键K来访问KV存储设备。键是例如URIUniformResourceIdentifier、统一资源标识符、文件系统路径、UUIDUniversallyUniqueIDentifier,通用唯一标识符。操作系统和或驱动程序,将程序提供的用于访问KV存储设备的键K映射到数值。例如,通过哈希运算,将诸如字符串形式的键K转换为哈希值,将哈希值作为数值再加上A4,以将键K映射到统一地址空间。以及使用由键K得到的哈希值访问KV存储设备。可选地,程序提供的键K为哈希值或UUID形式,将其直接作为数值并加上A4,以得到统一地址空间地址。可选地,将内存地址和或SSD地址也转换为哈希值,并将哈希值加上统一地址空间的区域的起始地址,以将内存地址空间和或SSD地址空间映射到统一地址空间。图3A展示了根据本申请实施例的生使用统一地址空间处理读数据请求的流程图。由CPU例如MMC,内存MemoryManagementUnit,管理单元、操作系统和或驱动程序或其组合来执行图3A所示的流程。CPU上执行的程序要访问读数据。对于内存数据,使用虚拟地址访问;对于SSD数据,使用例如逻辑地址访问,对于KV存储设备,使用例如键K访问。CPU例如MMC,内存MemoryManagementUnit,管理单元、操作系统和或驱动程序,获取用于访问数据的地址,并识别待访问数据被存储的类型内存、外存、SSD或KV存储设备等310。依据待访问数据的地址与待访问数据被存储的类型,生成统一地址320。例如,响应于要访问内存中的地址为D1的数据,将D1作为统一地址。响应于要访问SSD中的地址为D2的数据,将D2+A2作为统一地址空间地址,其中A2是统一地址空间中,被映射给SSD设备的地址范围的起始地址。响应于要访问KV存储设备中键K对应的值,计算键K的哈希值并加上A4作为统一地址空间地址,其中A4是统一地址空间中被映射给KV存储设备的地址范围的起始地址。CPU的MMU、操作系统和或驱动程序根据得到的统一地址,得到对应的页地址330,并根据页地址访问对应的存储设备340。例如,对于映射到内存设备的统一地址,使用MMU和或操作系统提供的页表机制,得到待读取数据所在的内存页,并从内存页读取数据。对于映射到按物理地址访问的SSD设备的统一地址,在页表中存储统一地址与用于SSD的物理地址每个用于SSD的物理地址指示一页数据,SSD的数据页大小可以为512字节、1K字节、2K字节、4K字节、8K字节等的对应关系,通过查询页表得到同统一地址对应的用于SSD的物理地址。可选地,另外地提供FTL服务,用于将映射到SSD设备的统一地址转换为用于SSD的物理地址。作为再一个例子,对于映射到按逻辑地址访问的SSD的统一地址,将统一地址或统一地址的部分直接作为逻辑地址访问KSSSD设备。作为又一个例子,将统一地址或统一地址的部分直接作为逻辑地址,以及将要访问数据的进程的标识符映射为命名空间标识,并根据命令空间标识与逻辑地址访问SSD设备。作为又一个例子,对于映射到KV存储设备的统一地址,在页表中存储统一地址与KV存储设备的键的对应关系,通过查询页表得到同统一地址对应的用于KV存储设备的键,从而CPU上运行的各个进程可使用相同的键访问专属于自己的同键对应的值。可选地,对于映射到KV存储设备的统一地址,将统一地址或统一地址的部分直接作为键访问KV存储设备。可选地,映射到KV存储设备的统一地址,对应于了具有不同大小的存储空间,以容纳不同大小的同键K对应的值。根据图3A展示的实施例,程序可按字节访问内存设备。对于SSD设备,若程序按数据页访问SSD设备,操作系统驱动程序按现有技术的块设备存储协议从SSD设备读取数据,并将读出的数据页提供给访问SSD设备的程序。根据本申请的实施例,程序也可按字节访问SSD设备,操作系统驱动程序按现有技术的块设备存储协议从SSD设备读取待访问数据所在的数据页,并从读出的数据页中获取程序要访问的字节并提供给访问SSD设备的程序。程序还可按“键-值”接口协议访问KV存储设备。操作系统驱动程序按现有技术的“键-值”接口协议从KV设备读取待访问值V,并将读出的值提供给访问KV存储设备的程序。图3B展示了根据本申请实施例的生使用统一地址空间处理写数据请求的流程图。由CPU例如MMC,内存MemoryManagementUnit,管理单元、操作系统和或驱动程序或其组合来执行图3B所示的流程。CPU上执行的程序要访问写数据。对于内存数据,使用虚拟地址访问;对于SSD数据,使用例如逻辑地址访问,对于KV存储设备,使用例如键K访问。CPU例如MMC,内存MemoryManagementUnit,管理单元、操作系统和或驱动程序,获取用于访问数据的地址,并识别待访问数据被存储的类型内存、外存、SSD或KV存储设备等350。依据待访问数据的地址与待访问数据被存储的类型,生成统一地址360。CPU的MMU、操作系统和或驱动程序根据得到的统一地址,识别对应的存储设备的类型370。一些类型的存储设备支持原位写操作,例如对于内存设备、提供逻辑地址的SSD设备、KV存储设备,可向被指示的地址直接写入数据。可选地,对于内存设备,按字节写入数据,对于SSD设备按数据页写入数据,而对于KV存储设备,按“键-值”对写入数据。一些类型的存储设备,不支持原位写操作,例如对于提供物理地址存储协议的SSD设备例如,遵循OCSSD协议的设备,需要向新分配的物理地址写入数据,并记录统一地址与新分配的物理地址的映射关系。继续参看图3B,在步骤370,若识别出待写入数据的统一地址对应于支持原位写操作的设备,使用MMU和或操作系统提供的页表机制,将统一地址转换为页地址380,并根据写地址写入数据385。将统一地址转换为页地址的方式以在根据图3A的实施例中描述。在步骤370,若识别出待写入数据的统一地址对应于不支持原位写操作的设备,还为该统一地址,分配可承载待写入数据的新页地址390。可承载数据的页地址是例如存储设备上尚未被写入数据的物理地址。操作系统或驱动程序向新分配的页地址写入数据,以及在页表中记录该统一地址与新分配的页地址的映射关系395。以及根据页地址访问对应的存储设备398。可选地,存储设备按页访问。待写入数据的大小小于数据页的大小。操作系统或驱动程序还从待访问的页读出数据,用待写入的数据更新读出的数据,并将更新后的数据写入数据页。图4A是根据本申请实施例的对统一地址进行地址转换的页表的示意图。根据图4A的实施例,展示了2级页表410。第一级页表称为地址转换目录,地址转换目录的各个条目记录了统一地址的地址段称为统一地址段同第二级页表也称为转换页的地址的对应关系。可选地,第一级页表的条目所指示的统一地址段可以是隐含的,通过统一地址的部分比特例如,前10比特的值寻址第一级页表的条目。依然可选地,第一级页表的条目中记录的第二级页表也称为转换页的地址,也是统一地址,例如,被映射到内存设备的统一地址。可选地,第一级页表的条目中记录的第二级页表也称为转换页的地址是内存地址。第二级页表转换页的各个条目记录了统一地址的页地址同存储设备的页地址的对应关系。可选地,第二级页表的条目所指示的统一地址的页地址可以是隐含的,通过统一地址的部分比特例如,中间10比特的值寻址第二级页表的条目。第二级页表的条目记录的存储设备的页地址可以是内存设备的页地址,也可以是SSD等外存设备的页地址。可选地,在一个转换页中的各个条目的页地址属于相同的存储设备相同的内存设备或相同的外存设备。图4A展示了两个转换页TP1与TP2。转换页TP1的各条目指示了内存页的地址,而转换页TP2的各条目指示了外存设备的外存页的地址,例如,SSD设备的逻辑地址物理地址。而第一级页表地址转换目录的第一个条目记录了转换页TP1的地址例如,映射到内存的统一地址,第一级页表地址转换目录的第二个条目记录了转换页TP2的地址。MMU或操作系统利用图4A展示的页表对统一地址进行转换得到页地址也参看图3A的步骤330,或图3B的步骤380。例如,根据统一地址的高10比特查询第一级页表地址转换目录,从查询到的条目中获取转换页地址例如,转换页TP1的地址,再用统一地址的中间10比特查询转换页TP1,得到内存页地址例如,内存页地址1,以及根据内存页地址1以及可选地统一地址的其他比特从内存获取数据。可选地,在地址转换目录的条目或者转换页中还记录该条目所对应的统一地址段被映射到的存储设备类型内存设备、SSD设备或KV存储设备。作为又一个例子,通过统一地址的部分比特查询第一级页表,得到转换页TP2的地址,并知晓转换页TP2指示例如SSD设备,通过统一地址的又一部分比特查询转换页TP2得到例如外存页地址2,从外存页地址2访问SSD设备。图4B是根据本申请又一实施例的对统一地址进行地址转换的页表的示意图。根据图4B的实施例,展示了3级页表420。第一级页表称为地址转换目录,地址转换目录的各个条目记录了统一地址的地址段称为统一地址段同第二级页表也称为转换页表的地址的对应关系。地址转换目录的条目记录了第二级页表的地址。第二级页表转换页表的各个条目记录了统一地址的地址的部分同转换页的对应关系。转换页表的条目记录了第三级页表也称为转换页的地址。第三级页表的条目记录了存储设备的页地址,可以是内存设备的页地址,也可以是SSD等外存设备的页地址。可选地,在地址转换目录的条目、转换页表的条目或者转换页中还记录该条目所对应的统一地址段被映射到的存储设备类型内存设备、SSD设备或KV存储设备。图4B展示了两个转换页表TPT1与TPT2,以及两个转换页TP1与TP2。转换页TP1的各条目指示了内存页的地址,而转换页TP2的各条目指示了外存设备的外存页的地址。而第一级页表地址转换目录的第一个条目记录了转换页表TPT1的地址,第一级页表的第二个条目记录了转换页表TPT2的地址。转换页表TPT1的第一个条目记录了转换页TP1的地址,第二级页表的转换页表TPT2的第二个条目记录了第三级页表转换页TP6的地址。MMU或操作系统利用图4B展示的页表对统一地址进行转换得到页地址也参看图3A的步骤330,或图3B的步骤380。例如,根据统一地址的高10比特查询第一级页表地址转换目录,从查询到的条目中获取转换页表地址例如,转换页表TPT1的地址,再用统一地址的中间10比特查询转换页表TPT1,得到转换页地址例如,转换页TP1,以及根据统一地址的另外中间10比特查询转换页TP1,得到内存页地址例如,内存页地址1,以及根据内存页地址1以及可选地统一地址的其他比特从内存获取数据。作为又一个例子,通过统一地址的部分比特查询第一级页表,得到转换页表TPT2的地址,通过统一地址的又一部分比特查询转换页表TPT2得到转换页地址例如转换页TP6,再用统一地址的有一部分比特查询转换页TP6,得到外存页地址2,从外存页地址2访问外存设备。图5展示了根据本申请实施例对统一地址进行转换的MMU的示意图。如图5所示,用MMU来将统一地址510转换访问内存或外存的逻辑地址物理地址。例如,对于内存和基于OCSSD协议的SSD,将统一地址510转换为物理地址,而对于基于NVMe协议的SSD,将统一地址510转换为逻辑地址。MMU包括其管理的页表与TLBTranslationLookasideBuffer,旁路转换缓存。页表中记录了统一地址空间的页地址称为统一页号与内存页或外存页的映射关系。为进行地址转换,将统一地址的统一页号部分例如统一地址的高位作为索引,提供给MMU来查询页表,将从页表中查到的内存页地址或外存页地址作为MMU的输出。可选地,对于访问内存的统一地址,MMU还将统一地址的低位拼接到页表提供的内存页地址,以得到访问内存的物理地址,作为MMU的输出。对于访问诸如SSD的外存的统一地址,MMU将页表提供的外存页地址作为MMU的输出。MMU管理的页表条目可被更新。例如,在图3B的步骤395,在页表条目中记录统一地址与新分配的页地址的对应关系。MMU所管理的页表,具有例如图4A或图4B展示的多级页表结构。页表也可具有其他结构,例如单级的平坦表、树结构、哈希表等。MMU还包括TLB。MMU的TLB记录了页表的部分条目。例如,TLB中记录页表的被频繁使用的条目。TLB以硬件实现,从而具有相对于存储器访问更快的响应速度。一般地,TLB的条目数量较少,以仅容纳页表的部分条目而非全部。影响于要对统一地址进行转换,除了用统一地址510的统一页号部分查询页表,MMU还并行地用统一页号部分查询TLB。若TLB的条目中记录了该统一页号,TLB将迅速给出响应,TLB输出被命中的条目的内存页地址或外存页地址,该内存页地址或外存页地址作为MMU的输出,以及可选地还添加上统一地址的低位得到逻辑地址或物理地址。从而无须再等待页表查询结果。若TLB未命中,则用页表的查询结果作为输出。以及可选地,还用页表的查询结果替换TLB的条目,以期下一次查询TLB时,TLB能命中。可选地,页表和或TLB还为每个进程记录了其统一页号与内存页外存页的映射关系,从而多个进程各自可独占完整的统一地址空间例如,最大512GB。进程标识符是CPU、MMU、操作系统等用于区分进程所使用的标识符。根据本申请的实施例,将统一地址的指定部分用作进程标识符PID,将统一地址的又一指定部分用作统一页地址,以使用MMU。响应于将统一地址的进程标识符PID与统一页号都提供给MMU,MMU依据PID选取同该PID对应的页表,并用统一页号查询同该PID对应的页表,以得到内存页或外存页。而TLB的每个条目还记录该条目所属的PID,仅当TLB条目所记录的PID与统一页号均命中时,该TLB条目才被命中。在页表条目与TLB条目被更新时,也识别条目所对应的PID。依然可选地,为程序或进程分配命名空间NS,NameSpace,例如在NVMe协议中被定义,对于被映射到外存的统一地址,在页表和或TLB的条目中为将命名空间标识符NSID与统一地址组合作为页表或TLB的索引。MMU依据NSID选取同该NSID对应的页表,并用统一页号查询同该NSID对应的页表,以得到外存页。而TLB的每个条目还记录该条目所属的NSID,仅当TLB条目所记录的NSID与统一页号均命中时,该TLB条目才被命中。可选地,在页表和或TLB中,NSID同PID具有相同的形态,并占用相同数量的比特。进一步地,依据NSID的优先级或用户指定,为各个NSID分配TLB条目等资源的数量,以为NSID提供差异化的服务质量。在上面的实施例中,运行在CPU上的程序可使用现有技术的方式内存设备和或外存设备,而不感知统一地址空间,由操作系统和或驱动程序将CPU上运行的程序访问内存设备和或外存设备的地址转换成统一地址,再根据统一地址查询页表或通过MMU得到要访问的内存设备和或外存设备的物理地址逻辑地址。在根据本申请的其他一些实施例中,运行在CPU上的程序使用统一地址访问内存设备和或外存设备。图6A是现有技术的信息处理设备的存储体系结构的示意图。CPU耦合到内存,CPU上运行的程序访问的地址是内存的地址。当要访问外存设备例如,KV存储设备,或诸如SSD的块存储设备时,从外存设备获取的数据先被加载到内存,CPU上运行的程序再根据内存地址从内存获取被加载的数据。从而CPU上运行的程序不是直接访问外存设备,而要通过内存中转数据。图6B展示了根据本申请再一实施例的信息处理设备的存储体系结构的示意图。运行在CPU上的程序,使用统一地址空间的统一地址访问内存设备和或外存设备例如块设备、KV存储设备。程序可访问的统一地址空间,是内存设备与外存设备提供的存储空间的和。程序访问例如块设备时,无须通过内存缓存或中转从块设备获取的数据,而是直接使用统一地址访问块设备。作为举例,程序使用加载指令例如,LDrd,rs,其中LD指示加载指令,rd指示加载数据的目的位置架构寄存器,而rs架构寄存器指示由统一地址表示的加载数据的源位置通过统一地址来从内存设备和或外存设备获取数据到CPU。CPU中提供多种类型的架构寄存器,例如具有32位或64位大小寄存器R,具有2KB或4KB大小的寄存器堆RP。程序要访问按字节寻址的内存设备时,在加载指令中,使用寄存器R作为目的寄存器rd,在寄存器rs中添加要访问的统一地址,CPU执行加载指令,从内存设备获取数据,将获取的数据添加到寄存器R。在又一个例子中,程序要访问按页寻址的外存设备时,在加载指令中,使用寄存器堆RP作为目的寄存器rd,在寄存器rs中添加要访问的统一地址,CPU执行加载指令,从外存设备获取数据页,将获取的数据页添加到寄存器堆RP。可选地,若统一地址指示的外存设备是提供逻辑地址的SSD,MMU将统一地址映射为逻辑地址,并提供给SSD,以及还接收从SSD提供的数据页,并将数据页存入寄存器堆RP。若统一地址指示的外存设备是提供物理地址的SSD,MMU将统一地址映射为物理地址,并提供给SSD。在另一个例子中,程序要访问按键K寻址的KV存储设备时,在加载指令中,使用寄存器堆RP作为目的寄存器rd,在寄存器rs中添加要访问的统一地址,CPU执行加载指令,从外存设备获取同键K对应的值V,将获取的值V添加到寄存器堆RP。可选地,值V具有可变的尺寸,CPU提供具有更大尺寸的架构寄存器,例如紧耦合存储器TightlyCoupledMemories,来容纳值V。以及在加载指令中,使用紧耦合存储器的部分或全部区域作为目的寄存器rd。CPU执行加载指令,从外存设备获取同键K对应的值V,将获取的值V添加到紧耦合存储器。在又一种实施方式中,程序使用的加载指令指示的目的位置rd为通用的架构寄存器例如,具有32位、64位、128位或者其他大小。通用的架构寄存器的大小可能小于外存设备的页大小,也无法容纳具有较大尺寸的同键K对应的值。MMU依据统一地址识别出要访问的存储设备的类型,对于例如SSD的块设备,获取整页数据。获取的整页数据被存储在CPU的高速缓冲存储器Cache,而将整页数据中由加载指令的统一地址所指示的部分加载到目的寄存器rd。以及随着整页数据被存储在高速缓冲存储器,整页数据在高速缓冲存储器中占据一个或多个高速缓冲存储器行CacheLine,为每个高速缓冲存储器行设置对应的统一地址索引,从而CPU执行的后续加载指令,有望命中高速缓冲存储器,并从高速缓冲存储器中获取数据。类似地,对于统一地址要访问的存储设备是例如KV存储设备的情形,从KV存储设备获取的完整值V被存储在高速缓冲存储器。还根据值V的各部分的相对于值V的起始位置的偏移值,设置高速缓存行的索引,从而CPU执行的后续加载指令,有望命中高速缓冲存储器,并从高速缓冲存储器中获取数据。在依然又一种实施方式中,CPU执行的加载指令称为无目的位置加载指令,仅指示统一地址表示的待加载数据的源位置rs,而不指示加载数据的目的位置。例如,在加载块设备的数据页或KV存储设备的值V时,使用无目的位置加载指令。通过执行无目的位置加载指令,由统一地址表示的待加载数据被存储在高速缓冲存储器,从而CPU接下来执行的访问在无目的位置加载指令的源位置或其附近的加载指令将命中高速缓冲存储器。无目的位置加载指令可指定要加载的数据的尺寸,或者根据统一地址被映射到的块设备的页大小确定要加载的数据的尺寸,或者从根据统一地址被映射到KV存储设备获取的值V的大小确定要加载的数据的尺寸。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

权利要求:1.一种地址转换方法,包括:获取程序访问存储设备的地址与存储设备类型;根据存储设备的地址与存储设备类型生成统一地址空间中的地址;将统一存储空间中的地址转换为存储设备可接收的地址;使用存储设备可接收的地址访问存储设备。2.根据权利要求1所述的方法,其中获取统一地址的部分作为统一页号,通过统一页号查询页表得到用于存储设备的页地址。3.根据权利要求2所述的方法,其中若存储设备类型是内存设备,将用于存储设备的页地址拼接统一地址的部分得到存储设备可接收的地址;若存储设备类型是外存设备,将用于存储设备的页地址作为存储设备可接收的地址。4.根据权利要求1所述的方法,其中,若存储设备是接收逻辑地址的外存设备,获取统一地址的部分得到逻辑地址,将所述逻辑地址作为存储设备可接收的地址。5.根据权利要求1所述的方法,还包括:若存储设备是接收物理地址的外存设备,获取统一地址的部分得到逻辑地址,用逻辑地址查询页表得到用于存储设备的物理地址;将所述物理地址作为存储设备可接收的地址。6.根据权利要求1所述的方法,还包括:若存储设备是接收键K的KV存储设备设备,获取统一地址的部分得到键K,将键K作为存储设备可接收的地址。7.一种地址转换方法,包括:在处理器上执行的加载指令指示从统一地址空间中的地址加载数据;将统一存储空间中的地址转换为存储设备可接收的地址;使用存储设备可接收的地址访问存储设备获取数据;以及将获取的数据存储在所述加载指令指示的目的存储单元。8.根据权利要求7所述的方法,其中加载指令指示目的存储单元的类型;若所述统一存储空间中的地址指示内存设备,目的存储单元为通用架构寄存器;若所述统一地址空间中的地址指示外存设备,目的存储单元为可容纳外存设备的数据页的寄存器堆或紧耦合存储器。9.根据权利要求7所述的方法,其中所述加载指令为无目的位置加载指令,无目的位置加载指令中未记录目的存储单元,而暗示目的存储单元为高速缓冲存储器;以及执行所述加载指令获取的数据,被存储在所述加载指令暗示的高速缓冲存储器。10.一种信息处理设备,包括存储在存储介质中的程序,当所述程序被处理器执行时,执行根据权利要求1-9之一所述的方法。

百度查询: 北京忆恒创源科技股份有限公司 统一地址转换方法与统一地址空间

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。