本发明涉及计算机,尤其涉及一种地址空间的扩展方法、地址转换器、设备及介质。
背景技术:
1、32位处理器的地址范围为0到4gb,对于一个复杂的系统来说,不仅拥有众多的外设,还拥有多条总线,如此一来,4gb的空间就显得不太够用了,而空间不足会导致无法接入更多的外设去完成复杂的系统设计,为了解决空间不足这一问题,最简单直接的做法就是直接更换64位处理器,但如果只能使用32位处理器,也可以通过设计自研指令实现大于4gb空间访问,如riscv指令集支持用户自研指令,但这种方法同时还要修改核内相关的总线宽度,使修改难度会大幅度提升,并且与核相关联的模块都可能需要修改,修改完也还需花费大量时间去调测。
2、在32位处理器的0到4gb地址空间范围内,整个soc系统中还包括了很多外设,这些外设有相应的配置空间,在统一编址的情况下,这部分外设配置空间属于4gb空间的一部分,配置空间的增多就代表着数据空间减少,在外设的配置空间较大以及外设接入数量较多的情况下,系统的数据空间就会大大减小,既想要接入更多的外设,也想最大化的保留数据空间,以此来完成复杂的soc设计,比如在系统4g地址空间中,分配128mb作为配置空间使用,但是实际需要用到的配置空间远远比128mb大,那么如何实现在现有128mb配置空间中访问更大的配置空间,如4gb、8gb、16gb等是急需攻克的难题。
技术实现思路
1、基于此,有必要针对上述问题,提出了一种地址空间的扩展方法、地址转换器、设备及介质。
2、为实现上述目的,本申请第一方面提供一种地址空间的扩展方法,所述方法包括:
3、预设虚拟地址的范围总区间以及对应的物理地址基址;
4、获取待访问的地址;
5、根据所述待访问的地址在虚拟地址的范围总区间中查找,确定所述待访问的地址是否处于虚拟地址的范围总区间内;
6、如果所述待访问的地址处于虚拟地址的范围总区间内,对所述待访问的地址进行转换确定最终访问地址;
7、根据所述对应的物理地址基址的最低位将最终访问地址输出到对应的总线。
8、在一些实施方式中,所述预设虚拟地址的范围总区间以及对应的物理地址基址,具体包括:确定若干个虚拟地址vaddr,设置每个虚拟地址vaddr的限定转换地址区间size,获得每个虚拟地址的范围区间、以及虚拟地址的范围总区间[vaddr,vaddr+size];还根据所述每个虚拟地址的范围区间设置对应的物理地址基址paddr_base。
9、在一些实施方式中,所述根据所述待访问的地址在虚拟地址的范围总区间中查找,确定所述待访问的地址是否处于虚拟地址的范围总区间内,具体包括:如果所述待访问的地址处于虚拟地址的范围总区间[vaddr,vaddr+size]之中,确定所述待访问的地址处于虚拟地址的范围总区间内;如果所述待访问的地址处于虚拟地址的范围总区间[vaddr,vaddr+size]之外,确定所述待访问的地址处于虚拟地址的范围总区间外。
10、在一些实施方式中,所述如果所述待访问的地址处于虚拟地址的范围总区间内,对所述待访问的地址进行转换确定最终访问地址,具体包括:对所述待访问的地址进行偏移并且结合对应的物理地址基址确定最终访问地址。
11、在一些实施方式中,所述对所述待访问的地址进行偏移并且结合对应的物理地址基址确定最终访问地址,具体包括:根据所述待访问的地址和匹配的每个虚拟地址确定偏移地址,所述偏移地址和该虚拟地址对应的物理地址基址结合最终访问地址。
12、在一些实施方式中,所述根据所述对应的物理地址基址的最低位将最终访问地址输出到对应的总线,具体包括:如果所述对应的物理地址基址的最低位为0,将所述最终访问地址输出到系统总线system bus;如果所述对应的物理地址基址的最低位为1,将所述最终访问地址输出到外围设备总线peripherals bus。
13、在一些实施方式中,所述预设虚拟地址的范围总区间以及对应的物理地址基址,具体包括:配置寄存器表,所述寄存器表内包括若干个虚拟地址vaddr、每个虚拟地址vaddr的限定转换地址区间size、以及每个虚拟地址的范围区间对应的物理地址基址paddr_base。
14、为实现上述目的,本申请第二方面提供一种地址转换器,所述地址转换器包括:
15、寄存器,用于预设虚拟地址的范围总区间以及对应的物理地址基址;
16、地址比较器,用于根据待访问的地址在虚拟地址的范围总区间中查找,确定所述待访问的地址是否处于虚拟地址的范围总区间内;
17、地址转换器,用于如果所述待访问的地址处于虚拟地址的范围总区间内,对所述待访问的地址进行转换确定最终访问地址;
18、地址选择器,用于根据所述对应的物理地址基址的最低位将最终访问地址输出到对应的总线。
19、为实现上述目的,本申请第三方面提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
20、预设虚拟地址的范围总区间以及对应的物理地址基址;
21、获取待访问的地址;
22、根据所述待访问的地址在虚拟地址的范围总区间中查找,确定所述待访问的地址是否处于虚拟地址的范围总区间内;
23、如果所述待访问的地址处于虚拟地址的范围总区间内,对所述待访问的地址进行转换确定最终访问地址;
24、根据所述对应的物理地址基址的最低位将最终访问地址输出到对应的总线。
25、为实现上述目的,本申请第四方面提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
26、预设虚拟地址的范围总区间以及对应的物理地址基址;
27、获取待访问的地址;
28、根据所述待访问的地址在虚拟地址的范围总区间中查找,确定所述待访问的地址是否处于虚拟地址的范围总区间内;
29、如果所述待访问的地址处于虚拟地址的范围总区间内,对所述待访问的地址进行转换确定最终访问地址;
30、根据所述对应的物理地址基址的最低位将最终访问地址输出到对应的总线。
31、采用本发明实施例,具有如下有益效果:
32、本申请通过预设虚拟地址的范围总区间以及对应的物理地址基址,也就是配置寄存器表,进而根据所述待访问的地址在虚拟地址的范围总区间中查找,确定最终访问地址,完成地址转换,实现只需增加配置地址转换关系,就可以拥有能访问最大64位地址范围以及总线切换访问的能力。
1.一种地址空间的扩展方法,其特征在于,所述方法包括:
2.根据权利要求1所述的地址空间的扩展方法,其特征在于,所述预设虚拟地址的范围总区间以及对应的物理地址基址,具体包括:确定若干个虚拟地址vaddr,设置每个虚拟地址vaddr的限定转换地址区间size,获得每个虚拟地址的范围区间、以及虚拟地址的范围总区间[vaddr,vaddr+size];还根据所述每个虚拟地址的范围区间设置对应的物理地址基址paddr_base。
3.根据权利要求2所述的地址空间的扩展方法,其特征在于,所述根据所述待访问的地址在虚拟地址的范围总区间中查找,确定所述待访问的地址是否处于虚拟地址的范围总区间内,具体包括:如果所述待访问的地址处于虚拟地址的范围总区间[vaddr,vaddr+size]之中,确定所述待访问的地址处于虚拟地址的范围总区间内;如果所述待访问的地址处于虚拟地址的范围总区间[vaddr,vaddr+size]之外,确定所述待访问的地址处于虚拟地址的范围总区间外。
4.根据权利要求3所述的地址空间的扩展方法,其特征在于,所述如果所述待访问的地址处于虚拟地址的范围总区间内,对所述待访问的地址进行转换确定最终访问地址,具体包括:对所述待访问的地址进行偏移并且结合对应的物理地址基址确定最终访问地址。
5.根据权利要求4所述的地址空间的扩展方法,其特征在于,所述对所述待访问的地址进行偏移并且结合对应的物理地址基址确定最终访问地址,具体包括:根据所述待访问的地址和匹配的每个虚拟地址确定偏移地址,所述偏移地址和该虚拟地址对应的物理地址基址结合最终访问地址。
6.根据权利要求1-5任意一项所述的地址空间的扩展方法,其特征在于,所述根据所述对应的物理地址基址的最低位将最终访问地址输出到对应的总线,具体包括:如果所述对应的物理地址基址的最低位为0,将所述最终访问地址输出到系统总线system bus;如果所述对应的物理地址基址的最低位为1,将所述最终访问地址输出到外围设备总线peripherals bus。
7.根据权利要求1所述的地址空间的扩展方法,其特征在于,所述预设虚拟地址的范围总区间以及对应的物理地址基址,具体包括:配置寄存器表,所述寄存器表内包括若干个虚拟地址vaddr、每个虚拟地址vaddr的限定转换地址区间size、以及每个虚拟地址的范围区间对应的物理地址基址paddr_base。
8.一种地址转换器,其特征在于,所述地址转换器包括:
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。