CN115934166A - 一种基于可动态构建寄存器的高效操作方法及系统 - Google Patents
一种基于可动态构建寄存器的高效操作方法及系统 Download PDFInfo
- Publication number
- CN115934166A CN115934166A CN202211391577.0A CN202211391577A CN115934166A CN 115934166 A CN115934166 A CN 115934166A CN 202211391577 A CN202211391577 A CN 202211391577A CN 115934166 A CN115934166 A CN 115934166A
- Authority
- CN
- China
- Prior art keywords
- register
- domain
- read
- list
- write
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种基于可动态构建寄存器的高效操作方法及系统,涉及芯片验证及驱动软件编程技术领域。包括:根据实际编程需求,构建整体位大小为n的寄存器;对寄存器进行以下读写操作:当获取寄存器的整体位大小时,则进行寄存器的整体读写操作;当先获取寄存器的整体位大小,再获取分域操作指令时,则进行寄存器的分域读写操作。分域读写操作是对寄存器进行分段,通过段索引对寄存器的各个域进行取值操作和赋值操作。该系统包括寄存器构建单元和寄存器读写操作单元。本发明寄存器,构建非常简洁,且可以实现动态构建,编程工作量可以节省50%以上;通过段索引访问,编码更加简单;支持批量赋值和取值,编程效率高。
Description
技术领域
本发明涉及芯片设计、验证及驱动软件编程技术领域,具体涉及一种基于可动态构建寄存器的高效操作方法及系统。
背景技术
随着ICT领域的强劲需求,促使芯片规模越来越大,处理的业务也越来越多,芯片内部的寄存器数量也就从几百扩展到几千甚至上万,每个寄存器又包含众多(几个到十几个)的域。对这些寄存器的定义、读写操作、变更、维护的工作量非常庞大。为确保芯片能正常工作,需要在芯片的参考模型中构建寄存器的完整模型,对寄存器进行全面的验证,期望有一种高效的、方便的构建的操作方法。
另外,对芯片驱动软件而言,寄存器是软件来控制芯片行为的核心通道和窗口。在芯片驱动软件开发过程中,需要对驱动软件进行全面的测试,测试需要外部激励,需要寄存器的对等模型,也期望有一种高效的、方便的寄存器构建的操作方法。
在芯片设计、验证及驱动软件编程中,有大量的寄存器register需要定义和编程操作。一个寄存器一般可以是8bit位、16bit位、32bit位、64bit位等等。在一个寄存器内部,再分为bit位数不等的多个域。示例:一个32bit位的指令寄存器定义如图1所示。
在市面上现有的编程语言中,如C/C++、SystemVerilog等,都采用struct结构体数据类型来定义以上指令寄存器,使用了“位域”的特性。
上述示例在C/C++语言中的定义和操作使用如下:
struct Instruction{ //bit description
uint16 opcode:7; //7:1
uint16 rd:5; //12:8
uint16 funct3:3; //15:13
uint16 rs1:5; //20:16
uint16 rs2:5; //25:21
uint16 funct7:7; //32:26
};
struct Instruction inst1;
inst1.opcode=5;通过该语句实现对域opcode的赋值操作,且赋值为5。
上述示例在SystemVerilog语言中,使用packedstruct压缩结构体定义上述寄存器如下:typedef struct packed{
bit[6:0]opcode; //7:1
bit[4:0]rd; //12:8
bit[2:0]funct3; //15:13
bit[4:0]rs1; //20:16
bit[4:0]rs2; //25:21
bit[6:0]funct7; //32:26
}inst1;
inst1.opcode=5;通过该语句实现对域opcode的赋值操作,且赋值为5。
由以上可知,一个寄存器需要定义的内容包括:寄存器名称、寄存器整体位宽、寄存器的读写属性(作为域的默认读写属性)、寄存器每个域的位置和位宽、寄存器每个域的名称和每个域的读写属性,其中域的读写属性优先级高于寄存器的读写属性。
现有市面上的编程语言,没有一个专门的数据结构用于寄存器的定义,只是借用编程语言的struct结构体来定义寄存器。上述示例使用类似struct结构体定义及操作寄存器存在如下缺点:
(1)寄存器构建复杂:每个域需要定义一个变量(包括变量类型和变量名)和位宽。
(2)每个寄存器必须单独构建,一旦构建就不能修改或修改起来困难。即只能静态定义,不支持动态定义。然而一般的寄存器的数量在几十到几千之间,维护工作量很大。
(3)寄存器每个域的属性设置,需要使用其他数据结构。
(4)对每个域的访问只能使用域的变量名称,且只能单独访问。
(5)寄存器构建变更需要修改源代码。
总之,现有寄存器是基于静态构建,不支持动态构建,进而对寄存器的操作使用和维护不方便,造成编程工作量大和效率低的问题。
发明内容
本发明所要解决的技术问题是现有寄存器的构建是采用从局部到整体的思想,先定义各个局部域,且每个局部域均需要定义一个变量(包括变量类型和变量名称)和位宽,构建复杂;同时,每个寄存器必须单独构建,一旦构建就不能修改或者修改相当困难,即只能实现静态构建,不支持动态构建,存在构建不方便的缺陷,因而对寄存器的操作使用和维护不方便,造成编程工作量大和效率低的问题。本发明目的在于提供一种基于可动态构建寄存器的高效操作方法及系统,本发明寄存器构建非常简洁,且可以实现动态构建;使得寄存器的操作使用和维护简单快捷,编程工作量可以节省50%以上,且编程效率高。
本发明通过下述技术方案实现:
第一方面,本发明提供了一种基于可动态构建寄存器的高效操作方法,该方法是基于索引方式进行寄存器的读写操作;该方法包括:
根据实际编程需求,构建整体位大小为n的寄存器;
对寄存器进行以下读写操作:
当获取寄存器的整体位大小时,则进行寄存器的整体读写操作;
当先获取寄存器的整体位大小,再获取分域操作指令时,则进行寄存器的分域读写操作。
进一步地,寄存器的整体读写操作,包括:寄存器的整体取值操作和赋值操作。
进一步地,进行寄存器的分域读写操作,包括:
对寄存器进行分段,划分为若干段;并对划分后的段按顺序进行自动编号,每段即为一个域;
将段的编号作为段索引,按照索引方式,通过段索引对寄存器的各个域进行取值操作(即读操作)和赋值操作(即写操作)。
进一步地,划分后的段数最小值为1,划分后的段数最大值为寄存器的整体位大小。
进一步地,该方法还包括:
通过list列表对寄存器的各个域进行格式化处理,具体为:
通过第一list列表设置各个域的位宽,且各个域的位宽总和等于寄存器的整体位大小;
通过第二list列表设置各个域的名称;
通过第三list列表设置各个域的属性,域的属性包括只读、读写和只写等等。
以上技术方案,通过list列表对寄存器(register)进行“格式化”,同时还可以设置各个域的名称。设置名称为可选项,也可以通过名称来访问寄存器的域。本发明在一个数据结构内,实现了寄存器的各个域的读写属性设置及读写操作。
进一步地,寄存器的各个域大小能够动态调整,通过直接修改第一list列表和/或第二list列表和/或第三list列表的取值即可,这样可以实现寄存器的动态构建。
进一步地,根据域的名称,对寄存器的对应域进行取值操作和赋值操作。
进一步地,根据list列表,进行寄存器各个域的批量取值操作和赋值操作。
第二方面,本发明又提供了一种基于可动态构建寄存器的高效操作系统,该系统支持一种基于可动态构建寄存器的高效操作方法;该系统基于索引方式进行寄存器的读写操作,该系统包括:
寄存器构建单元,用于根据实际编程需求,构建整体位大小为n的寄存器;
寄存器读写操作单元,用于对寄存器进行读写操作:当获取寄存器的整体位大小时,则执行寄存器整体读写操作单元;当先获取寄存器的整体位大小,再获取分域操作指令,则执行寄存器分域读写操作单元。
进一步地,所述寄存器整体读写操作单元,用于根据寄存器的整体位大小,完成内存分配,用于限定各个域位宽的总和,并进行寄存器的整体取值操作和赋值操作。
传统寄存器的整体位宽,由各个域的位宽之和来决定,是从局部到整体的思想。而本发明以上技术方案是采用从整体到局部的思想。
进一步地,所述寄存器分域读写操作单元包括分段分域子单元和索引式操作子单元;
分段分域子单元,用于对寄存器进行分段,划分为若干段;并对划分后的段按顺序进行自动编号,每段即为一个域;
索引式操作子单元,用于将段的编号作为段索引,按照索引方式,通过段索引对寄存器的各个域进行取值操作和赋值操作。
进一步地,还包括格式化输入单元和格式化处理单元;
所述格式化输入单元,用于输入各个list列表,所述list列表包括位宽列表、域名称列表和域属性列表;
所述格式化处理单元,用于通过格式化输入单元输入的各个list列表对寄存器整体进行分割和标记;所述格式化处理单元包括第一设置单元、第二设置单元和第三设置单元;
所述第一设置单元,用于通过位宽列表设置各个域的位宽,且各个域的位宽总和等于寄存器的整体位大小;
所述第二设置单元,用于通过域名称列表设置各个域的名称;
所述第三设置单元,用于通过域属性列表设置各个域的属性,域的属性包括只读、读写和只写。其中域的属性为可选,默认和寄存器的整体属性一致;如果不一致,以域的属性为准。
进一步地,还包括:第一操作单元和第二操作单元;
所述第一操作单元,用于根据域的名称,对寄存器的对应域进行取值操作和赋值操作;
所述第二操作单元,用于根据位宽列表,进行寄存器各个域的批量取值操作和赋值操作。
需要注意的是:在赋值操作时,如果所赋的值大于域的位宽,需要做截位处理即可。
本发明与现有技术相比,具有如下的优点和有益效果:
1、和现有寄存器的操作方法不同,本发明采用从整体到局部的思想,根据实际编程需求,先构建寄存器的整体位大小,再设置局部域大小,且局部域大小可以动态调整;根据寄存器的整体位大小,进行寄存器的整体取值操作和赋值操作;克服了现有寄存器不能实现整体取值和赋值操作的弊端。在设置寄存器的各个域时,采用“格式化”技术,将寄存器划分为多个段,并自动完成顺序段编号,每段即为一个域,且每个域按顺序排列。后续即可使用段编号来对寄存器的各个域进行取值操作和赋值操作,克服了现有技术对每个域的访问只能使用域的变量名称,且只能单独访问的问题;并且,段编号是一个数字,比现有技术采用变量名称的读写形式简单,可节省数倍,带来收益巨大。
2、本发明从寄存器整体出发实现寄存器的构建,构建非常简洁,无需定义域的类型,无需定义域的名称,只需指明域的位宽,且可以动态调整域的位宽,具体通过直接修改第一list列表和/或第二list列表和/或第三list列表的取值即可实现寄存器的动态构建。通过list列表来“格式化”寄存器的各个域,编程工作量可以节省50%以上;本发明在一个数据结构内,实现了寄存器的各个域的读写属性定义及读写操作,即直接使用段索引和名称对寄存器的域进行赋值和取值操作,编码更加简单,且赋值和取值操作方便快捷;还支持使用list列表对寄存器的各个域进行批量赋值和取值操作,编程效率高。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为一个32bit位的指令寄存器定义示意图。
图2为本发明实施例1的一种基于可动态构建寄存器的高效操作方法流程图。
图3为本发明实施例2的一种基于可动态构建寄存器的高效操作系统结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1
基于现有寄存器的构建是采用从局部到整体的思想,先定义各个局部域,且每个局部域均需要定义一个变量(包括变量类型和变量名称)和位宽,构建复杂;同时,每个寄存器必须单独构建,一旦构建就不能修改或者修改相当困难,即只能实现静态构建,不支持动态构建,存在构建不方便的缺陷,因而对寄存器的操作使用和维护不方便,造成编程工作量大和效率低的问题。
和现有寄存器的操作方法不同,本发明采用从整体到局部的思想,根据实际编程需求,先构建寄存器的整体位大小,再设置局部域大小,且局部域大小可以动态调整;根据寄存器的整体位大小,进行寄存器的整体取值操作和赋值操作;克服了现有寄存器不能实现整体取值和赋值操作的弊端。在设置寄存器的各个域时,采用“格式化”技术,将寄存器划分为多个段,并自动完成顺序段编号,每段即为一个域,且每个域按顺序排列。后续即可使用段编号来对寄存器的各个域进行取值操作和赋值操作,克服了现有技术对每个域的访问只能使用域的变量名称,且只能单独访问的问题;并且,段编号是一个数字,比现有技术采用变量名称的读写形式简单,可节省数倍,带来收益巨大。另外,本发明还通过list列表对寄存器(register)进行“格式化”,同时还可以设置各个域的名称,也可以通过名称来访问寄存器的域。
本发明从寄存器整体出发实现寄存器的构建,构建非常简洁,无需定义域的类型,无需定义域的名称,只需指明域的位宽,且可以动态调整域的位宽,具体通过直接修改第一list列表和/或第二list列表和/或第三list列表的取值即可实现寄存器的动态构建。当然为阅读方便,也可以指定域的名称,但无需定义域的类型;通过list列表来“格式化”寄存器的各个域,编程工作量可以节省50%以上;通过段索引访问,编码更加简单,且赋值和取值操作方便快捷,编程效率高。
同时,本发明在一个数据结构内,实现了寄存器的各个域的读写属性定义及读写操作,即直接使用段索引和名称对寄存器的域进行赋值和取值操作,编码更加简单,且赋值和取值操作方便快捷;还支持使用list列表对寄存器的各个域进行批量赋值和取值操作,编程效率高。
如图2所示,图2为本发明实施例1的一种基于可动态构建寄存器的高效操作方法流程图。本发明一种基于可动态构建寄存器的高效操作方法,该方法是基于索引方式进行寄存器的读写操作;该方法包括:
步骤1,根据实际编程需求,构建整体位大小为n的寄存器;寄存器的整体位大小n有8bit位、16bit位、32bit位、64bit位等。
步骤2,对寄存器进行以下读写操作:
当获取寄存器的整体位大小时,则进行寄存器的整体读写操作;
当先获取寄存器的整体位大小,再获取分域操作指令时,则进行寄存器的分域读写操作。
作为进一步地实施,寄存器的整体读写操作,包括:寄存器的整体取值操作和赋值操作。
作为进一步地实施,进行寄存器的分域读写操作,包括:
采用格式化技术,对寄存器进行分段,划分为若干段;并对划分后的段按顺序进行自动编号,每段即为一个域;其中,划分后的段数最小值为1,划分后的段数最大值为寄存器的整体位大小。
将段的编号作为段索引,按照索引方式,通过段索引对寄存器的各个域进行取值操作(即读操作)和赋值操作(即写操作)。
以上技术方案,本发明实施例在步骤1构建了一个整体位大小为32bit位的寄存器对象inst1,可表示为:
reginst1(32)
通过以下方式进行该寄存器的整体位大小获取,即调用size()函数可以查看寄存器的大小:
intsize=inst1.size()
本发明实施例在步骤2中通过以下方式实现寄存器的整体赋值和取值:
inst1=0xF0_55AA
该语句实现把十六进制0xF0_55AA整体赋值给寄存器对象inst1;
int result=inst1
该语句实现对寄存器对象inst1的整体取值,并把所取出的值返回result中;
寄存器reg变量的bit高位在左,低位在右;且低位从1开始,而不是从0开始。
另外,还可以通过函数setAttr(REG_ATTR::WR)设置寄存器的整体读写属性为可读可写属性等。
本发明实施例在步骤3中将寄存器reg划分为6个域,如图1所示;
通过以下语句为寄存器reg第2个域赋值:
inst1<2>=13
该语句表示把十进制15赋值给寄存器reg的段索引为2的域;
通过以下语句取出寄存器reg第2个域的值:
int result=inst1<2>
该语句表示取出给寄存器reg第2个域的值,并把所取出的值返回result中。
作为进一步地实施,该方法还包括步骤5:
通过list列表对寄存器的各个域进行格式化处理,具体为:
通过第一list列表设置各个域的位宽,且各个域的位宽总和等于寄存器的整体位大小;
通过第二list列表设置各个域的名称;
通过第三list列表设置各个域的属性,域的属性包括只读、读写和只写。
需要说明的是,各个域的位宽、各个域的名称和各个域的属性设置均采用list列表方式,第一list列表、第二list列表、第三list列表三者只是为了区分而已。
以上技术方案,通过list列表对寄存器(register)进行“格式化”,同时还可以设置各个域的名称。设置名称为可选项,也可以直接通过名称来访问寄存器的域。本发明在一个数据结构内,实现了寄存器的各个域的读写属性设置及读写操作。
本发明实施例在步骤5中通过第一list列表l1设置各个域的位宽,如下:
list<int>l1=[7,5,5,3,5,7]
本发明实施例在步骤5中通过第二list列表设置各个域的名称,如下:
list<string>l2=[“funct7”,“rs2”,“rs1”,“funct3”,“rd”,“opcode”]
通过第三list列表设置各个域的属性,如下:
list<REG_ATTR>l3=[REG_ATTR::RO,REG_ATTR::WR,REG_ATTR::WR,REG_ATTR::WR,REG_ATTR::WR,REG_ATTR::WO]
只设置各个域的宽度,设置了6个域,采用如下格式化函数实现:
inst1.format(l1)
设置各个域的宽度和名称,采用如下格式化函数实现:
inst1.format(l1,l2)
设置各个域的宽度、名称和读写属性,采用如下格式化函数实现:
inst1.format(l1,l2,l3)
如果需要变更寄存器的设置,只需修改列表l1、l2、l3的取值即可,这样可以实现寄存器的动态构建。避免了现有技术中借用编程语言的struct结构体来静态构建寄存器的弊端。
在经过上述格式化操作之后,寄存器的各个域可以按索引1-6进行赋值和取值,如下:
第一,根据域的名称,对寄存器的对应域进行取值操作和赋值操作。
inst1<“rs2”>=13
该语句表示把十进制13赋值给寄存器reg中域名称为“rs2”的域;
result=inst1<“rs2”>
该语句表示取出寄存器reg中域名称为“rs2”的域的值。
第二,根据第一list列表,进行寄存器各个域的批量取值操作和赋值操作。
list<int>l1=[21,2,3,6,5,8]
该语句表示一次实现寄存器reg中6个域的批量赋值,且是按照顺序把十进制的21,2,3,6,5,8分别赋值给对应的域;
同时,还可以通过inst1=l1进行寄存器各个域的批量赋值操作。
list<int>l2=inst1
该语句表示一次从寄存器reg中读出6个域的值,并返回给一个列表。
本发明的技术优点在于:
(1)本发明寄存器构建非常简洁,且可以实现动态构建;编程工作量可以节省50%以上。
(2)本发明在一个数据结构内,实现了寄存器的每个域的读写属性设置。
(3)本发明通过段索引访问,编码更加简单。
(4)本发明支持批量赋值和取值,编程效率高。
实施例2
如图3所示,本实施例提供了一种基于可动态构建寄存器的高效操作系统,该系统支持实施例1的一种基于可动态构建寄存器的高效操作方法;该系统基于索引方式进行寄存器的读写操作,该系统包括:
寄存器构建单元,用于根据实际编程需求,构建整体位大小为n的寄存器;
寄存器读写操作单元,用于对寄存器进行读写操作:当获取寄存器的整体位大小时,则执行寄存器整体读写操作单元;当先获取寄存器的整体位大小,再获取分域操作指令,则执行寄存器分域读写操作单元。
作为进一步地实施,所述寄存器整体读写操作单元,用于根据寄存器的整体位大小,完成内存分配,用于限定各个域位宽的总和,并进行寄存器的整体取值操作和赋值操作。
传统寄存器的整体位宽,由各个域的位宽之和来决定,是从局部到整体的思想。而本发明以上技术方案是采用从整体到局部的思想。
作为进一步地实施,所述寄存器分域读写操作单元包括分段分域子单元和索引式操作子单元;
分段分域子单元,用于对寄存器进行分段,划分为若干段;并对划分后的段按顺序进行自动编号,每段即为一个域;
索引式操作子单元,用于将段的编号作为段索引,按照索引方式,通过段索引对寄存器的各个域进行取值操作和赋值操作。
作为进一步地实施,还包括格式化输入单元和格式化处理单元;
所述格式化输入单元,用于输入各个list列表,所述list列表包括位宽列表、域名称列表和域属性列表;
所述格式化处理单元,用于通过格式化输入单元输入的各个list列表对寄存器整体进行分割和标记;所述格式化处理单元包括第一设置单元、第二设置单元和第三设置单元;
所述第一设置单元,用于通过位宽列表设置各个域的位宽,且各个域的位宽总和等于寄存器的整体位大小;
所述第二设置单元,用于通过域名称列表设置各个域的名称;
所述第三设置单元,用于通过域属性列表设置各个域的属性,域的属性包括只读、读写和只写。其中域的属性为可选,默认和寄存器的整体属性一致;如果不一致,以域的属性为准。
作为进一步地实施,还包括:第一操作单元和第二操作单元;
所述第一操作单元,用于根据域的名称,对寄存器的对应域进行取值操作和赋值操作;
所述第二操作单元,用于根据位宽列表,进行寄存器各个域的批量取值操作和赋值操作。
需要注意的是:在赋值操作时,如果所赋的值大于域的位宽,需要做截位处理即可。
各个单元的执行过程按照实施例1所述的一种基于可动态构建寄存器的高效操作方法流程步骤执行即可,此实施例中不再一一赘述。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于可动态构建寄存器的高效操作方法,其特征在于,该方法包括:
根据实际编程需求,构建整体位大小为n的寄存器;
对寄存器进行以下读写操作:
当获取寄存器的整体位大小时,则进行寄存器的整体读写操作;
当先获取寄存器的整体位大小,再获取分域操作指令时,则进行寄存器的分域读写操作。
2.根据权利要求1所述的一种基于可动态构建寄存器的高效操作方法,其特征在于,所述寄存器的整体读写操作,包括:寄存器的整体取值操作和赋值操作。
3.根据权利要求1所述的一种基于可动态构建寄存器的高效操作方法,其特征在于,所述进行寄存器的分域读写操作,包括:
对寄存器进行分段,划分为若干段;并对划分后的段按顺序进行自动编号,每段即为一个域;
将段的编号作为段索引,按照索引方式,通过段索引对寄存器的各个域进行取值操作和赋值操作。
4.根据权利要求3所述的一种基于可动态构建寄存器的高效操作方法,其特征在于,划分后的段数最小值为1,划分后的段数最大值为寄存器的整体位大小。
5.根据权利要求3所述的一种基于可动态构建寄存器的高效操作方法,其特征在于,该方法还包括:
通过list列表对寄存器的各个域进行格式化处理,具体为:
通过第一list列表设置各个域的位宽,且各个域的位宽总和等于寄存器的整体位大小;
通过第二list列表设置各个域的名称;
通过第三list列表设置各个域的属性,域的属性包括只读、读写和只写。
6.根据权利要求5所述的一种基于可动态构建寄存器的高效操作方法,其特征在于,寄存器的各个域大小能够动态调整,通过直接修改第一list列表和/或第二list列表和/或第三list列表的取值即可。
7.根据权利要求5所述的一种基于可动态构建寄存器的高效操作方法,其特征在于,根据域的名称,对寄存器的对应域进行取值操作和赋值操作;
根据list列表,进行寄存器各个域的批量取值操作和赋值操作。
8.一种基于可动态构建寄存器的高效操作系统,其特征在于,该系统包括:
寄存器构建单元,用于根据实际编程需求,构建整体位大小为n的寄存器;
寄存器读写操作单元,用于对寄存器进行读写操作:当获取寄存器的整体位大小时,则执行寄存器整体读写操作单元;当先获取寄存器的整体位大小,再获取分域操作指令,则执行寄存器分域读写操作单元。
9.根据权利要求8所述的一种基于可动态构建寄存器的高效操作系统,其特征在于,
所述寄存器整体读写操作单元,用于根据寄存器的整体位大小,完成内存分配,用于限定各个域位宽的总和,并进行寄存器的整体取值操作和赋值操作;
所述寄存器分域读写操作单元包括分段分域子单元和索引式操作子单元;
分段分域子单元,用于对寄存器进行分段,划分为若干段;并对划分后的段按顺序进行自动编号,每段即为一个域;
索引式操作子单元,用于将段的编号作为段索引,按照索引方式,通过段索引对寄存器的各个域进行取值操作和赋值操作。
10.根据权利要求9所述的一种基于可动态构建寄存器的高效操作系统,其特征在于,还包括格式化输入单元和格式化处理单元;
所述格式化输入单元,用于输入各个list列表,所述list列表包括位宽列表、域名称列表和域属性列表;
所述格式化处理单元,用于通过格式化输入单元输入的各个list列表对寄存器整体进行分割和标记;所述格式化处理单元包括第一设置单元、第二设置单元和第三设置单元;
所述第一设置单元,用于通过位宽列表设置各个域的位宽,且各个域的位宽总和等于寄存器的整体位大小;
所述第二设置单元,用于通过域名称列表设置各个域的名称;
所述第三设置单元,用于通过域属性列表设置各个域的属性,域的属性包括只读、读写和只写。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211391577.0A CN115934166B (zh) | 2022-11-08 | 2022-11-08 | 一种基于可动态构建寄存器的高效操作方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211391577.0A CN115934166B (zh) | 2022-11-08 | 2022-11-08 | 一种基于可动态构建寄存器的高效操作方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115934166A true CN115934166A (zh) | 2023-04-07 |
CN115934166B CN115934166B (zh) | 2023-07-04 |
Family
ID=86556585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211391577.0A Active CN115934166B (zh) | 2022-11-08 | 2022-11-08 | 一种基于可动态构建寄存器的高效操作方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934166B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6188411B1 (en) * | 1998-07-02 | 2001-02-13 | Neomagic Corp. | Closed-loop reading of index registers using wide read and narrow write for multi-threaded system |
CN1929447A (zh) * | 2006-06-01 | 2007-03-14 | 华为技术有限公司 | 地址前缀查找方法和装置以及报文转发方法和系统 |
CN103235762A (zh) * | 2013-04-19 | 2013-08-07 | 中国科学院自动化研究所 | 一种自索引寄存器文件堆装置 |
CN103559028A (zh) * | 2013-10-24 | 2014-02-05 | 烽火通信科技股份有限公司 | Otn系列芯片软件工具包架构的实现方法及装置 |
CN106484415A (zh) * | 2016-10-08 | 2017-03-08 | 武汉瑞纳捷电子技术有限公司 | 一种寄存器配置代码自动生成方法及装置 |
CN109117518A (zh) * | 2018-07-21 | 2019-01-01 | 中国人民解放军战略支援部队信息工程大学 | 一种寄存器读写访问验证系统及方法 |
CN109634797A (zh) * | 2018-12-18 | 2019-04-16 | 上海交通大学 | 一种用寄存器屏蔽窗口分析寄存器架构敏感因子的方法 |
CN113961248A (zh) * | 2021-11-12 | 2022-01-21 | 海光信息技术股份有限公司 | 寄存器映射方法、处理器、芯片及电子设备 |
CN115248998A (zh) * | 2022-09-22 | 2022-10-28 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
-
2022
- 2022-11-08 CN CN202211391577.0A patent/CN115934166B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6188411B1 (en) * | 1998-07-02 | 2001-02-13 | Neomagic Corp. | Closed-loop reading of index registers using wide read and narrow write for multi-threaded system |
CN1929447A (zh) * | 2006-06-01 | 2007-03-14 | 华为技术有限公司 | 地址前缀查找方法和装置以及报文转发方法和系统 |
CN103235762A (zh) * | 2013-04-19 | 2013-08-07 | 中国科学院自动化研究所 | 一种自索引寄存器文件堆装置 |
CN103559028A (zh) * | 2013-10-24 | 2014-02-05 | 烽火通信科技股份有限公司 | Otn系列芯片软件工具包架构的实现方法及装置 |
CN106484415A (zh) * | 2016-10-08 | 2017-03-08 | 武汉瑞纳捷电子技术有限公司 | 一种寄存器配置代码自动生成方法及装置 |
CN109117518A (zh) * | 2018-07-21 | 2019-01-01 | 中国人民解放军战略支援部队信息工程大学 | 一种寄存器读写访问验证系统及方法 |
CN109634797A (zh) * | 2018-12-18 | 2019-04-16 | 上海交通大学 | 一种用寄存器屏蔽窗口分析寄存器架构敏感因子的方法 |
CN113961248A (zh) * | 2021-11-12 | 2022-01-21 | 海光信息技术股份有限公司 | 寄存器映射方法、处理器、芯片及电子设备 |
CN115248998A (zh) * | 2022-09-22 | 2022-10-28 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
Non-Patent Citations (5)
Title |
---|
XIN WANG: "GPU Register Packing: Dynamically Exploiting Narrow-Width Operands to Improve Performance", 《 2017 IEEE TRUSTCOM/BIGDATASE/ICESS》 * |
刘松鹤: "微处理器片上存储系统性能优化关键技术研究", 《中国博士学位论文全文数据库 (信息科技辑)》, no. 1 * |
王孝龙;刘勤让;林森杰;黄雅静;: "基于独立规则集位提取的包分类压缩方法", 计算机应用, no. 08 * |
王孝龙等: "基于独立规则集位提取的包分类压缩方法", 《计算机应用》, vol. 38, no. 8 * |
田晓旭;徐庆阳;汤先拓;刘冬培;: "基于UVM的寄存器验证自动化方法", 集成电路应用, no. 02 * |
Also Published As
Publication number | Publication date |
---|---|
CN115934166B (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101539850B (zh) | 单精度浮点数据存储方法和处理器 | |
US5905893A (en) | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set | |
US6412066B2 (en) | Microprocessor employing branch instruction to set compression mode | |
US5896519A (en) | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions | |
US8555260B1 (en) | Direct hardware processing of internal data structure fields | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
US5794010A (en) | Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
CN107291950A (zh) | 表单数据更新方法、装置及计算机设备 | |
CN102591787B (zh) | Java卡的数据处理方法及装置 | |
CN115934166B (zh) | 一种基于可动态构建寄存器的高效操作方法及系统 | |
EP3779706B1 (en) | Method, apparatus, device and computer-readable storage medium for storage management | |
CN115617819B (zh) | 数据存储方法、系统、计算机设备及存储介质 | |
US20210165654A1 (en) | Eliminating execution of instructions that produce a constant result | |
WO1997048041A1 (en) | An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set | |
US9448801B2 (en) | Automatic register port selection in extensible processor architecture | |
US9477473B2 (en) | Bit-level register file updates in extensible processor architecture | |
USRE34635E (en) | Method and apparatus for bit operational process | |
CN115277553A (zh) | 一种流表存储方法、装置、设备和计算机可读存储介质 | |
US7464370B2 (en) | Creating a method from a block of code | |
US7774748B1 (en) | System and method for automatic conversion of a partially-explicit instruction set to an explicit instruction set | |
US20030120854A1 (en) | Method and apparatus for increasing the memory read/write speed by using internal registers | |
EP4432099A1 (en) | Data processing method and apparatus, and computing device and storage medium | |
CN117331512B (zh) | 对gpu核内存储器执行写操作的数据压缩及处理方法 | |
CN116360858B (zh) | 数据的处理方法、图形处理器、电子设备及存储介质 |
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 |