CN117375625B - 地址空间的动态解压缩方法、地址解压器、设备及介质 - Google Patents
地址空间的动态解压缩方法、地址解压器、设备及介质 Download PDFInfo
- Publication number
- CN117375625B CN117375625B CN202311641033.XA CN202311641033A CN117375625B CN 117375625 B CN117375625 B CN 117375625B CN 202311641033 A CN202311641033 A CN 202311641033A CN 117375625 B CN117375625 B CN 117375625B
- Authority
- CN
- China
- Prior art keywords
- address
- mask
- compressed
- accessed
- peripheral equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000006837 decompression Effects 0.000 title claims abstract description 41
- 230000002093 peripheral effect Effects 0.000 claims abstract description 161
- 238000004590 computer program Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明实施例公开了一种地址空间的动态解压缩方法、地址解压器、设备及介质,该方法包括:预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;获取对外围设备访问的压缩地址;根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种地址空间的动态解压缩方法、地址解压器、设备及介质。
背景技术
针对现有的基于32位处理器的GPU设计方案,由于其寻址范围受限,只能访问4G以内的地址空间,整个4G空间中只有一小部分空间作为整个系统的配置空间,如256MB大小的配置空间,这使得很多外设配置受限,如GPU内部的PCIE controller、DDR controller、DDRPHY等,这些模块中的配置空间基本都是按地址分区访问内部寄存器,用到的地址范围基本都很大,但是实际的寄存器占用的空间很小,如4KB。
另一方面,GPU的核心为32位RISC处理器,地址位宽为32位,对应访问空间为0到4GB,在这部分空间中分配一部分空间作为配置空间使用,在理想的情况下,所有外设的配置空间应该是紧密排列的,如PCIE占用了1MB配置空间,那就分配地址0~0xFFFFF,DDR占用1MB配置空间,接着分配地址0x100000~0x1FFFFF,这样的地址利用率是最高的,可实际的情况并不是这样,目前功能相对复杂一点的外设,其配置空间都会分成好几块,不同的配置空间控制不同的功能,一般通过不同的基址去访问不同的配置空间,通过地址区分外设内部配置空间的方式一般都会存在地址空洞,造成空间浪费。
为了解决32位GPU地址空间不足的问题,通常的做法是修改处理器里面总线的宽度,但这种方法还需要扩展或者改造处理器汇编指令,设计能够访问大于32位地址空间的指令,改动范围从核内访存到总线部分,涉及修改的地方非常多,并且修改完成后,不仅要验证修改后的功能是否正常,还得验证其他功能是否受影响,一整套测试流程下来,花费周期较长,并不能满足用户的预期。
发明内容
基于此,有必要针对上述问题,提出了一种地址空间的动态解压缩方法、地址解压器、设备及介质。
为实现上述目的,本申请第一方面提供一种地址空间的动态解压缩方法,所述方法包括:
预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
获取对外围设备访问的压缩地址;
根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
在一些实施方式中,所述方法还包括:预先设置外围设备的地址空间分布;所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
获得实际地址之后,确定所述实际地址匹配的地址位;
根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
在一些实施方式中,所述预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板,具体包括:预先设置每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template。
在一些实施方式中,所述根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板中,之后,所述方法还包括:根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩。
在一些实施方式中,所述根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩,具体包括:如果所述对应的地址掩码、地址模板的取值为0,确定不对外围设备访问的压缩地址进行解压缩;如果所述对应的地址掩码、地址模板的取值为非0,确定对外围设备访问的压缩地址进行解压缩。
在一些实施方式中,所述根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址,具体包括:根据地址掩码addr_mask规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板template中,获得实际地址。
在一些实施方式中,所述根据地址掩码addr_mask规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板template中,获得实际地址,具体包括:按位从低到高遍历地址掩码addr_mask的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板template中,并且与地址掩码addr_mask为1的位相对应的位置,跳过地址掩码addr_mask中为0的位,生成最终的实际地址result。
为实现上述目的,本申请第二方面提供一种地址解压器,所述地址解压器包括:
寄存器,用于预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
地址比较器,用于根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
多路选择器,用于根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
地址解压模块,用于根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
为实现上述目的,本申请第三方面提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
获取对外围设备访问的压缩地址;
根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
为实现上述目的,本申请第四方面提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
获取对外围设备访问的压缩地址;
根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
采用本发明实施例,具有如下有益效果:
本发明根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板,也就是确定了解压缩对应的算法,提高了灵活性,之后,再根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,从而解决32位GPU空间紧缺的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为一个实施例中地址空间的动态解压缩方法的流程示意图;
图2为一个实施例中地址解压过程展示图;
图3为第二个实施例中地址空间的动态解压缩方法的流程示意图;
图4为第三个实施例中地址空间的动态解压缩方法的流程示意图;
图5为一个实施例中地址解压器的结构图;
图6为一个实施例中地址解压器的整体框图;
图7为一个实施例中计算机设备的结构示意图;
图8为一个实施例中计算机可读存储介质的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,在第一个实施例中,提供一种地址空间的动态解压缩方法,包括步骤S1至步骤S5。
步骤S1:预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
具体地,预先设置每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template。
所述每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template存储在寄存器区域。
通过每组地址区间的起始地址Addr_start和终止地址Addr_end确定CORE访问的地址属于哪个地址区间,从而确定了对应的地址掩码addr_mask、地址模板template,也就确定该地址区间的解压算法。
示例性地,如表1所示,配置四组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template;其中,第四组地址区间对应地址掩码addr_mask、地址模板template为0。
表1
步骤S2,获取对外围设备访问的压缩地址;
需要说明的是,此处压缩地址的方法可以自定义,示例性地,开发人员可以根据实际需求压缩地址,并根据压缩地址在地址区间中查找,确定压缩地址匹配的地址掩码addr_mask和地址模板templat,以确定该压缩地址的解压算法,解压算法的参数配置同样由开发人员自定义。
步骤S3,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
具体地,所述对外围设备访问的压缩地址从低到高按顺序在所有地址区间查找,查找到所述的地址区间后,停止查找。
示例性地,对地址0x1C18发起访问,如表1所示,该地址在地址区间中查找后,确定该地址属于表1中第一项设定的地址区间内。
步骤S4,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
具体地,如果所述对外围设备访问的压缩地址在任意一个地址区间内,那么该地址区间对应的地址掩码addr_mask、地址模板template,就是该压缩地址的解压算法。
示例性地,如表1所示,该地址0x1C18通过查找后,确定该地址属于表1中第一项设定的地址区间内,这样,确定了第一项对应的地址掩码addr_mask、地址模板template,是该地址的解压算法。
步骤S5,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
具体地,根据地址掩码addr_mask规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板template中,获得实际地址。
按位从低到高遍历地址掩码addr_mask的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板template中,并且与地址掩码addr_mask为1的位相对应的位置,跳过地址掩码addr_mask中为0的位,生成最终的实际地址result。
示例性地,如图2所示,采用2进制的方式对地址0x1C18的解压缩过程进行展示,巧妙的利用addr_mask和template生成最终的实际地址result。
本发明根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板,也就是确定了解压缩对应的算法,提高了灵活性,之后,再根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,从而解决32位GPU空间紧缺的问题。
如图3所示,在第二个实施例中,提供了一种地址空间的动态解压缩方法。该方法具体包括如下步骤:
步骤S21,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
具体地,预先设置每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template。
所述每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template存储在寄存器区域。
通过每组地址区间的起始地址Addr_start和终止地址Addr_end确定CORE访问的地址属于哪个地址区间,从而确定了对应的地址掩码addr_mask、地址模板template,也就确定该地址区间的解压算法。
示例性地,如表2所示,配置四组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template;其中,第四组地址区间对应地址掩码addr_mask、地址模板template为0。
表2
步骤S22,预先设置外围设备的地址空间分布,所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
具体地,压缩外围设备的地址空间分布中不必要的地址位,对每个配置空间中功能区域设置对应的地址位。
示例性地,如表3所示,现有技术中目前功能相对复杂一点的外设,其配置空间都会分成若干块,不同的配置空间控制不同的功能,一般通过不同的基址去访问不同的配置空间,通过地址区分外设内部配置空间的方式一般都会存在地址空洞,造成空间浪费;从表3可以看出,第二配置空间中的register space占用了13位,大小为8KB空间,是所有配置空间中占用最大的一个。为了访问到任一个配置空间,使用地址去区分,每块配置空间有相应的地址格式,根据该地址格式就可以访问到对应的配置空间,缺点就是浪费了地址空间,表3中的地址空间已经用完了整个4G的地址了,没有多余的地址给其他外设使用。
表3
如表4所示,采用本发明压缩外围设备的地址空间分布中不必要的地址位,对每个配置空间中功能区域设置对应的地址位,以第一配置空间、第三配置空间为例,通过表4可看出配置空间地址的压缩情况,占用15位,也就是32KB空间,占用空间非常小。
表4
需要说明的是:
1、此处不必要的地址位具体指如表3所示的固定不变的地址位,因为这些固定不变的地址位在访问相应的空间时都是固定的,所以可以进行压缩,以节省地址空间。
2、当访问第三配置空间时,从表4中能够发现压缩后的地址格式和第一配置空间是一致的,说明这两个配置空间压缩后的地址位有重叠,此时可以通过以下两种方法解决地址位重叠问题,以更好地区分需要访问配置空间:
第一种方法:在每次访问外设前,重新配置寄存器
由于在地址空间的动态解压缩方法中,可以动态配置地址区间、以及每组地址区间对应的地址掩码、地址模板,所以每访问一个外设前,可以重新配置对应配置空间的addr_mask和template,使压缩后的地址空间都处于表2中的第一项中的地址区间时,能够有不同的addr_mask和template,以此区分需要访问的配置空间;
第二种方法:将两个配置空间中其中一个地址少压缩一位
在系统配置空间不是特别紧张的情况下,此时无需每个设备地址都要压缩到极致的小,示例性地,此时如果有两个压缩地址有空间重叠,将其中一个地址少压缩一位,让其符合表2中的第二项区间范围,以此避免地址位重叠。
步骤S23,获取对外围设备访问的压缩地址;
步骤S24,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
具体地,所述对外围设备访问的压缩地址从低到高按顺序在所有地址区间查找,查找到所述的地址区间后,停止查找。
示例性地,对地址0x1C18发起访问,如表2所示,该地址在地址区间中查找后,确定该地址属于表2中第一项设定的地址区间内。
步骤S25,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
具体地,如果所述对外围设备访问的压缩地址在任意一个地址区间内,那么该地址区间对应的地址掩码addr_mask、地址模板template,就是该压缩地址的解压算法。
示例性地,如表2所示,该地址0x1C18通过查找后,确定该地址属于表1中第一项设定的地址区间内,这样,确定了第一项对应的地址掩码addr_mask、地址模板template,是该地址的解压算法。
步骤S26,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
具体地,根据地址掩码addr_mask规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板template中,获得实际地址。
按位从低到高遍历地址掩码addr_mask的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板template中,并且与地址掩码addr_mask为1的位相对应的位置,跳过地址掩码addr_mask中为0的位,生成最终的实际地址result。
示例性地,如图2所示,采用2进制的方式对地址0x1C18的解压缩过程进行展示,巧妙的利用addr_mask和template生成最终的实际地址result。
步骤S27,确定所述实际地址匹配的地址位;
具体地,在外围设备的地址空间分布中查找到与实际地址匹配的地址位。
步骤S28,根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
如图4所示,在第三个实施例中,提供了一种地址空间的动态解压缩方法。该方法具体包括如下步骤:
步骤S31,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
具体地,预先设置每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template。
所述每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template存储在寄存器区域。
通过每组地址区间的起始地址Addr_start和终止地址Addr_end确定CORE访问的地址属于哪个地址区间,从而确定了对应的地址掩码addr_mask、地址模板template,也就确定该地址区间的解压算法。
示例性地,如表5所示,配置四组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template;其中,第四组地址区间对应地址掩码addr_mask、地址模板template为0。
表5
步骤S32,预先设置外围设备的地址空间分布,所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
具体地,压缩外围设备的地址空间分布中不必要的地址位,对每个配置空间中功能区域设置对应的地址位。
示例性地,如表6所示,现有技术中目前功能相对复杂一点的外设,其配置空间都会分成若干块,不同的配置空间控制不同的功能,一般通过不同的基址去访问不同的配置空间,通过地址区分外设内部配置空间的方式一般都会存在地址空洞,造成空间浪费;从表6可以看出,第二配置空间中的register space占用了13位,大小为8KB空间,是所有配置空间中占用最大的一个。为了访问到任一个配置空间,使用地址去区分,每块配置空间有相应的地址格式,根据该地址格式就可以访问到对应的配置空间,缺点就是浪费了地址空间,表6中的地址空间已经用完了整个4G的地址了,没有多余的地址给其他外设使用。
表6
如表7所示,采用本发明压缩外围设备的地址空间分布中不必要的地址位,对每个配置空间中功能区域设置对应的地址位,以第一配置空间、第三配置空间为例,通过表7可看出配置空间地址的压缩情况,占用15位,也就是32KB空间,占用空间非常小。
表7
步骤S33,获取对外围设备访问的压缩地址;
步骤S34,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
具体地,所述对外围设备访问的压缩地址从低到高按顺序在所有地址区间查找,查找到所述的地址区间后,停止查找。
示例性地,对地址0x1C18发起访问,如表5所示,该地址在地址区间中查找后,确定该地址属于表5中第一项设定的地址区间内。
步骤S35,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
具体地,如果所述对外围设备访问的压缩地址在任意一个地址区间内,那么该地址区间对应的地址掩码addr_mask、地址模板template,就是该压缩地址的解压算法。
示例性地,如表5所示,该地址0x1C18通过查找后,确定该地址属于表1中第一项设定的地址区间内,这样,确定了第一项对应的地址掩码addr_mask、地址模板template,是该地址的解压算法。
步骤S36,根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩。
具体地,如果所述对应的地址掩码、地址模板的取值为0,确定不对外围设备访问的压缩地址进行解压缩;如果所述对应的地址掩码、地址模板的取值为非0,确定对外围设备访问的压缩地址进行解压缩。
示例性地,有些地址不需要转换的时候,可以将addr_mask和template配置为0,如表5中第四组所示,那就代表CORE访问的地址,如0x30000,会原封不动输出,直接跳过地址解压过程。
通过地址掩码、地址模板的取值实现对解压缩过程的选择或者跳过。
需要说明的是,此处不需要转换指的是访问的外设空间本来就很小的情况,示例性地,假设访问的外设空间只占用了4KB空间,此时地址解压反而浪费更多的资源,直接将输入地址作为输出地址即可。
步骤S37,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
具体地,根据地址掩码addr_mask规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板template中,获得实际地址。
按位从低到高遍历地址掩码addr_mask的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板template中,并且与地址掩码addr_mask为1的位相对应的位置,跳过地址掩码addr_mask中为0的位,生成最终的实际地址result。
示例性地,如图2所示,采用2进制的方式对地址0x1C18的解压缩过程进行展示,巧妙的利用addr_mask和template生成最终的实际地址result。
步骤S38,确定所述实际地址匹配的地址位;
具体地,在外围设备的地址空间分布中查找到与实际地址匹配的地址位。
步骤S39,根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
如图5所示,在第四个实施例中,提供了一种地址解压器,所述地址解压器包括寄存器201、地址比较器202、多路选择器203以及地址解压模块204.
寄存器201,用于预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
地址比较器202,用于根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
多路选择器203,用于根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
地址解压模块204,用于根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
示例性地,如图6所示,所述寄存器具体用于预先设置每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template;所述每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template存储在寄存器区域。
通过每组地址区间的起始地址Addr_start和终止地址Addr_end确定CORE访问的地址属于哪个地址区间,从而确定了对应的地址掩码addr_mask、地址模板template,也就确定该地址区间的解压算法。
所述地址比较器具体用于对外围设备访问的压缩地址从低到高按顺序在所有地址区间查找,查找到所述的地址区间后,停止查找。
所述多路选择器具体用于如果所述对外围设备访问的压缩地址在任意一个地址区间内,该地址区间对应的地址掩码addr_mask、地址模板template;
那么所述地址掩码addr_mask、地址模板template就是该压缩地址的解压算法。
所述地址解压模块具体用于根据地址掩码addr_mask规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板template中,获得实际地址;
按位从低到高遍历地址掩码addr_mask的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板template中,并且与地址掩码addr_mask为1的位相对应的位置,跳过地址掩码addr_mask中为0的位,生成最终的实际地址result。
关于地址解压器中各模块实现上述技术方案的其他细节,可参见上述提供的地址空间的动态解压缩方法中的描述,此处不再赘述。
在本申请实施例中,提供一种计算机设备,请参阅图7,图7为一个实施例中计算机设备的结构示意图,该设备包括包括存储器301和处理器302,所述存储器301存储有计算机程序,所述计算机程序被所述处理器302执行时,使得所述处理器302执行如下步骤:
步骤S1,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
步骤S2,获取对外围设备访问的压缩地址;
步骤S3,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
步骤S4,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
步骤S5,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
或者,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
步骤S21,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
步骤S22,预先设置外围设备的地址空间分布,所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
步骤S23,获取对外围设备访问的压缩地址;
步骤S24,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
步骤S25,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
步骤S26,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
步骤S27,确定所述实际地址匹配的地址位;
步骤S28,根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
或者,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
步骤S31,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
步骤S32,预先设置外围设备的地址空间分布,所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
步骤S33,获取对外围设备访问的压缩地址;
步骤S34,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
步骤S35,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
步骤S36,根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩。
步骤S37,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
步骤S38,确定所述实际地址匹配的地址位;
步骤S39,根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
其中,处理器302还可以称为CPU(Central Processing Unit,中央处理单元),处理器302可能是一种集成电路芯片,具有信号的处理能力;处理器302还可以是通用处理器、DSP(Digital Signal Process,数字信号处理器)、ASIC(Application SpecificIntegrated Circuit,专用集成电路)、FPGA(Field Programmable Gata Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,其中通用处理器可以是微处理器或者该处理器302也可以是任何常规的处理器等。
在本申请实施例中,提供一种计算机可读存储介质,请参阅图8,图8为一个实施例中计算机可读存储介质的结构示意图,该存储介质上存储有可读的计算机程序401;其中,该计算机程序401可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务机器,或者网络设备等)或处理器(processor)执行以下步骤:
步骤S1,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
步骤S2,获取对外围设备访问的压缩地址;
步骤S3,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
步骤S4,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
步骤S5,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址。
或者,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
步骤S21,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
步骤S22,预先设置外围设备的地址空间分布,所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
步骤S23,获取对外围设备访问的压缩地址;
步骤S24,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
步骤S25,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
步骤S26,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
步骤S27,确定所述实际地址匹配的地址位;
步骤S28,根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
或者,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
步骤S31,预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
步骤S32,预先设置外围设备的地址空间分布,所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
步骤S33,获取对外围设备访问的压缩地址;
步骤S34,根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
步骤S35,根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
步骤S36,根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩。
步骤S37,根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
步骤S38,确定所述实际地址匹配的地址位;
步骤S39,根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
而前述的存储介质包括:U盘、移动硬盘、磁碟或者光盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)等各种可以存储程序代码的介质,或者是计算机、服务机器、手机、平板等终端设备。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种地址空间的动态解压缩方法,其特征在于,所述方法包括:
预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
获取对外围设备访问的压缩地址;
根据所述对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
所述根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址,具体包括:根据地址掩码规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板中,获得实际地址;
所述根据地址掩码规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板中,获得实际地址,具体包括:按位从低到高遍历地址掩码的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板中,并且与地址掩码为1的位相对应的位置,跳过地址掩码中为0的位,生成最终的实际地址result。
2.根据权利要求1所述的地址空间的动态解压缩方法,其特征在于,所述方法还包括:预先设置外围设备的地址空间分布;所述地址空间分布包括若干个配置空间、以及每个配置空间中功能区域对应的地址位;
获得实际地址之后,确定所述实际地址匹配的地址位;
根据所述实际地址匹配的地址位访问该配置空间中的功能区域。
3.根据权利要求1所述的地址空间的动态解压缩方法,其特征在于,所述预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板,具体包括:预先设置每组地址区间的起始地址Addr_start和终止地址Addr_end、以及每组地址区间对应的地址掩码addr_mask、地址模板template。
4.根据权利要求1-3任意一项所述的地址空间的动态解压缩方法,其特征在于,所述根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板中,之后,所述方法还包括:根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩。
5.根据权利要求4所述的地址空间的动态解压缩方法,其特征在于,所述根据所述对应的地址掩码、地址模板的取值确定是否对外围设备访问的压缩地址进行解压缩,具体包括:如果所述对应的地址掩码、地址模板的取值为0,确定不对外围设备访问的压缩地址进行解压缩;如果所述对应的地址掩码、地址模板的取值为非0,确定对外围设备访问的压缩地址进行解压缩。
6.一种地址解压器,其特征在于,所述地址解压器包括:
寄存器,用于预先设置若干组地址区间、以及每组地址区间对应的地址掩码、地址模板;
地址比较器,用于根据对外围设备访问的压缩地址在地址区间中查找,确定所述对外围设备访问的压缩地址匹配的地址区间;
多路选择器,用于根据所述地址区间确定该对外围设备访问的压缩地址对应的地址掩码、地址模板;
地址解压模块,用于根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址;
所述根据所述地址掩码、地址模板对外围设备访问的压缩地址进行解压缩,获得实际地址,具体包括:根据地址掩码规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板中,获得实际地址;
所述根据地址掩码规定的格式,将所述对外围设备访问的压缩地址分解后填到地址模板中,获得实际地址,具体包括:按位从低到高遍历地址掩码的取值,遇到取值为1的位时,将所述对外围设备访问的压缩地址中的位按顺序放到地址模板中,并且与地址掩码为1的位相对应的位置,跳过地址掩码中为0的位,生成最终的实际地址result。
7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311641033.XA CN117375625B (zh) | 2023-12-04 | 2023-12-04 | 地址空间的动态解压缩方法、地址解压器、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311641033.XA CN117375625B (zh) | 2023-12-04 | 2023-12-04 | 地址空间的动态解压缩方法、地址解压器、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117375625A CN117375625A (zh) | 2024-01-09 |
CN117375625B true CN117375625B (zh) | 2024-03-22 |
Family
ID=89393210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311641033.XA Active CN117375625B (zh) | 2023-12-04 | 2023-12-04 | 地址空间的动态解压缩方法、地址解压器、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117375625B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4092715A (en) * | 1976-09-22 | 1978-05-30 | Honeywell Information Systems Inc. | Input-output unit having extended addressing capability |
JP2004021422A (ja) * | 2002-06-13 | 2004-01-22 | Renesas Technology Corp | マイクロコンピュータ |
CN104025020A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN108521817A (zh) * | 2014-12-22 | 2018-09-11 | 英特尔公司 | 用于执行反离心操作的指令和逻辑 |
CN112202939A (zh) * | 2020-10-16 | 2021-01-08 | 北京华耀科技有限公司 | Ip地址的压缩、解压缩与报文收发方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396135B2 (en) * | 2011-05-18 | 2016-07-19 | University Of North Texas | Method and apparatus for improving computer cache performance and for protecting memory systems against some side channel attacks |
-
2023
- 2023-12-04 CN CN202311641033.XA patent/CN117375625B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4092715A (en) * | 1976-09-22 | 1978-05-30 | Honeywell Information Systems Inc. | Input-output unit having extended addressing capability |
JP2004021422A (ja) * | 2002-06-13 | 2004-01-22 | Renesas Technology Corp | マイクロコンピュータ |
CN104025020A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN108521817A (zh) * | 2014-12-22 | 2018-09-11 | 英特尔公司 | 用于执行反离心操作的指令和逻辑 |
CN112202939A (zh) * | 2020-10-16 | 2021-01-08 | 北京华耀科技有限公司 | Ip地址的压缩、解压缩与报文收发方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117375625A (zh) | 2024-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11006127B2 (en) | System and method for foveated compression of image frames in a system on a chip | |
KR100706246B1 (ko) | 읽기 성능을 향상시킬 수 있는 메모리 카드 | |
US20140359225A1 (en) | Multi-core processor and multi-core processor system | |
KR102005227B1 (ko) | 데이터 처리 시스템과 이의 동작 방법 | |
CN110799959A (zh) | 一种数据压缩方法与解压方法以及相关设备 | |
DE102013113189A1 (de) | Mobile Vorrichtung und Verfahren zum Verwalten von Daten mit Auslagerung derselben | |
CN104461401A (zh) | Spi闪速存储器的数据读写管理方法及数据读写管理装置 | |
CN112199040A (zh) | 存储访问方法及智能处理装置 | |
CN117375625B (zh) | 地址空间的动态解压缩方法、地址解压器、设备及介质 | |
CN102438149A (zh) | 一种基于可重构技术的avs反变换的实现方法 | |
CN113806244B (zh) | 用于片上系统的内存管理方法和基于片上系统的设备 | |
CN109614399B (zh) | 位图数据查询方法、装置、计算机设备和存储介质 | |
CN109088636B (zh) | 一种数据处理方法、系统及电子设备和存储介质 | |
CN116710900A (zh) | 存储器中的动态元数据重定位 | |
CN103136022B (zh) | 将压缩配置映像存储在内部只读存储器上的逻辑器件 | |
US20230161835A1 (en) | Matrix operation method and accelerator | |
US11593318B2 (en) | Techniques for asynchronous snapshot invalidation | |
CN114356507A (zh) | 基于浏览器处理文档的方法、装置、设备及存储介质 | |
CN202049755U (zh) | 一种可编程器件 | |
TWI588746B (zh) | 電子裝置及其控制方法 | |
US9836401B2 (en) | Multi-core simulation system and method based on shared translation block cache | |
CN104639981B (zh) | 电视系统开启方法和电视 | |
CN117270760B (zh) | 序列映射生成方法、装置、存储主控芯片及存储介质 | |
CN114816263B (zh) | 存储访问方法及智能处理装置 | |
KR101202691B1 (ko) | 데이터의 처리 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |