CN110018847A - 可配置寄存器及基于可配置寄存器的数据存取方法 - Google Patents
可配置寄存器及基于可配置寄存器的数据存取方法 Download PDFInfo
- Publication number
- CN110018847A CN110018847A CN201810022210.9A CN201810022210A CN110018847A CN 110018847 A CN110018847 A CN 110018847A CN 201810022210 A CN201810022210 A CN 201810022210A CN 110018847 A CN110018847 A CN 110018847A
- Authority
- CN
- China
- Prior art keywords
- address
- register
- data
- read
- configuration information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000004364 calculation method Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供了一种可配置寄存器及基于可配置寄存器的数据存取方法,其包括:寄存器堆、多个可配置端口以及离散地址缓存寄存器;寄存器堆包括用于存储待访问的向量数据的多个向量数据寄存器以及用于对外部输入的控制指令进行译码以执行控制指令的译码器;可配置端口包括数个读端口以及数个写端口,用于根据控制指令中的第一地址配置信息对预设参数进行配置,生成第一数据访存地址并对其进行缓存;以及从离散地址缓存寄存器中获取第二地址配置信息并计算第二数据访存地址,并根据第二数据访存地址去寄存器堆中读取/写入对应的离散数据;离散地址缓存寄存器包括至少一个读地址寄存器及至少一个写地址寄存器,用于缓存控制指令中的第二地址配置信息。
Description
技术领域
本发明涉及处理器领域,具体涉及一种可配置寄存器及基于可配置寄存器的数据存取方法。
背景技术
数字信号算法中的矩阵、向量、变换类运算已占据非常核心的地位,异构多核向量型处理器是从DSP(Digital Signal Processor,数字信号处理器)指令系统和体系结构上进行优化设计而来,针对阵列信号处理的处理器,其具有很多与DSP类似的特点。因其经常针对高密集型数据进行处理,且处理速度快,数据访问地址频繁地改变,地址计算需要和数据运算处理相互独立,以减轻运算单元的压力。为此需要设计高性能的地址产生部件来实现信号处理和地址计算并行,以提高功能部件的并行性和流水线的效率,从而提高处理器的性能。
现有的地址产生部件虽然能够支持向量地址的访问,但是对于读写有规律的源数据而言,目前还需要通过固定索引的方法读取/写入数据,这不仅会因为需要设置过多数量指令进而给程序员造成负担,还会影响DSP的指令存取并影响计算效率,对于离散确有相对固定模式的地址访问也无法进行高效的支持,给数据处理过程造成诸多不便。
发明内容
本发明的目的是针对现有技术的缺陷,提供了一种可配置寄存器及基于可配置寄存器的数据存取方法。
根据本发明的一个方面,提供了一种可配置寄存器,包括:寄存器堆、多个可配置端口以及离散地址缓存寄存器;其中,寄存器堆包括多个向量数据寄存器以及译码器,向量数据寄存器用于存储待访问的向量数据;译码器用于对外部输入的控制指令进行译码以执行控制指令;其中,控制指令包括:根据预设读写规律设置的第一地址配置信息或为离散数据设置的第二地址配置信息;
可配置端口包括:数个读端口以及数个写端口;读端口/写端口用于根据控制指令中的第一地址配置信息对预设参数进行配置,生成对应的第一数据访存地址,并将第一数据访存地址进行缓存,以供根据从缓存中读取的第一数据访存地址去寄存器堆中读取/写入对应的访存数据;以及从离散地址缓存寄存器中获取第二地址配置信息并计算对应的第二数据访存地址,并根据第二数据访存地址去寄存器堆中读取/写入对应的离散数据;
离散地址缓存寄存器包括:至少一个读地址寄存器以及至少一个写地址寄存器;读地址寄存器/写地址寄存器用于缓存控制指令中的第二地址配置信息,以供可配置端口从缓存中读取的第二地址配置信息并计算对应的第二数据访存地址。
可选地,可配置端口进一步包括:地址产生器,用于根据控制指令中的第一地址配置信息对预设的地址变量参数及地址指令参数进行配置,以生成对应的地址偏移,并根据地址偏移生成第一数据访存地址;内部寄存器,用于对第一数据访存地址进行缓存,以供根据从缓存中读取的第一数据访存地址去寄存器堆中读取/写入对应的访存数据。
可选地,地址产生器包括:确定单元,用于根据对地址指令参数的配置结果确定对应的地址偏移运算规则以及地址运算规则;运算单元,用于根据地址偏移运算规则以及地址运算规则对预设地址变量参数进行运算,生成对应的地址偏移以及第一数据访存地址。
可选地,地址变量参数包括:I窗口起始地址参数、I窗口内步进长度参数、I窗口大小参数、I窗口内偏移参数、S窗口起始地址参数、S窗口内步进长度参数、S窗口大小参数、以及S窗口内偏移参数。
可选地,控制指令进一步包括:用于计算第二数据访存地址的移位命令选项以及索引标记命令选项;地址指令参数包括S++、I++以及A++中的一个或多个。
根据本发明的另一个方面,提供了一种基于可配置寄存器的数据存取方法,包括:接收外部输入的控制指令;其中,控制指令中包括预先配置的第一地址配置信息和第二地址配置信息;
根据控制指令中的第一地址配置信息对预设的地址变量参数以及地址指令参数进行配置,并根据配置结果计算第一数据访存地址;其中,第一地址配置信息为根据预设读写规律设置的地址配置信息;以及,根据控制指令中的第二地址配置信息计算第二数据访存地址;其中,第二地址配置信息为离散数据的地址配置信息;
根据第一数据访存地址或第二数据访存地址去寄存器堆中读取对应数据。
可选地,根据配置结果生成对应的地址偏移及第一数据访存地址的步骤具体包括:根据配置结果确定对应的地址偏移运算规则以及地址运算规则;根据偏移运算规则以及地址运算规则对地址变量参数进行运算,生成对应的地址偏移以及第一数据访存地址或第二数据访存地址。
可选地,地址变量参数包括:I窗口起始地址参数、I窗口内步进长度参数、I窗口大小参数、I窗口内偏移参数、S窗口起始地址参数、S窗口内步进长度参数、S窗口大小参数、以及S窗口内偏移参数。
可选地,控制指令进一步包括:用于计算第二数据访存地址的移位命令选项以及索引标记命令选项;地址指令参数包括S++、I++以及A++中的一个或多个。
由此可见,在本发明提供的一种可配置寄存器及基于可配置寄存器的数据存取方法中,能够根据外部控制指令中配置的预设参数灵活定义数据及指令的读写数顺序并自动计算数据的读写地址,有效减少了读写数据的指令长度以及指令数量,减轻了程序员编写指令的负担,提升了数据的读写效率;同时,本发明还进一步支持离散地址变换,能够根据预先配置的离散地址信息自动读取/写入离散数据,以支持多种地址的访存模式。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1为本发明一实施例提供的一种可配置寄存器的整体结构示意图;
图2为本发明另一实施例提供的一种可配置寄存器的整体结构示意图;
图3为本发明另一实施例提供的离散数据的存储分布示意图;
图4为本发明一实施例提供的一种基于可配置寄存器的数据存取方法的流程图;
图5为本发明另一实施例提供的一种基于可配置寄存器的数据存取方法的流程图。
具体实施方式
为充分了解本发明之目的、特征及功效,借由下述具体的实施方式,对本发明做详细说明,但本发明并不仅仅限于此。
图1为本发明一实施例提供的一种可配置寄存器的整体结构示意图。如图1所示,本实施例中的可配置寄存器包括:寄存器堆、多个可配置端口以及离散地址缓存寄存器。其中,
寄存器堆包括多个向量数据寄存器(对应图1中的编号R[0]、R[1]、R[2]、R[3]…R[63])以及译码器(图中未示出)。具体地,向量数据寄存器用于存储待访问的向量数据;译码器用于对外部输入的控制指令进行译码以执行该控制指令。其中,上述控制指令包括:根据预设读写规律设置的第一地址配置信息或为离散数据设置的第二地址配置信息。具体实施中,很多通信、图像领域算法的源数据往往具有一定的读写规律,上述预设读写规律即根据通信、图像领域算法的源数据的读写规律所对应设置的预设读写规律。第一地址配置信息以及第二地址配置信息中包含多个待配置的参数值,用于对可配置端口中设置的多个预设参数进行配置。在执行控制指令时,寄存器堆根据译码结果将控制指令发送给对应的可配置端口。
可配置端口包括:数个读端口以及数个写端口。具体实施中,读端口及写端口的数量可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。其中,每个读端口以及写端口中都设置有预设参数,读端口以及写端口在接收控制指令后,根据控制指令中的第一地址配置信息对预设参数的参数值进行配置,以根据配置结果生成第一数据访存地址,并将第一数据访存地址进行缓存,以供从上述缓存中读取第一数据访存地址并根据该第一数据访存地址去寄存器堆中读取/写入对应的访存数据;并且,读端口以及写端口还能够从离散地址缓存寄存器中获取第二地址配置信息,并根据控制指令以及第二地址配置信息计算第二数据访存地址。
离散地址缓存寄存器包括:至少一个读地址寄存器以及至少一个写地址寄存器。读地址寄存器以及写地址寄存器用于缓存控制指令中的第二地址配置信息,以供可配置端口从上述缓存中读取的第二地址配置信息并计算对应的第二数据访存地址。
由此可见,在本发明提供的可配置寄存器中,能够根据外部指令中配置的预设参数定义数据及指令的读写数顺序并自动计算数据的读写地址,有效减少了读写数据的指令长度以及指令数量,减轻了程序员编写指令的负担,提升了数据的读写效率;同时,本发明还进一步支持离散地址变换,对于离散确有相对固定模式的地址访问,能够根据预先配置的离散地址信息自动读取/写入对应的离散数据,从而支持多种地址的访存模式。
图2为本发明另一实施例提供的一种可配置寄存器的整体结构示意图。如图2所示,该可配置寄存器包括:寄存器堆、多个可配置端口以及离散地址缓存寄存器。其中,
寄存器堆包括64个向量数据寄存器以及译码器(图中未示出)。具体地,如图2所示,64个向量数据寄存器为位宽512bit的向量数据寄存器,其由上到下的索引编号分别为0、1、2、3…63(对应图2中的编号R[0]、R[1]、R[2]、R[3]…R[63])。其中,每个向量数据寄存器用于存储待访问的向量数据。译码器用于对外部输入的控制指令进行译码以执行该控制指令。其中,上述控制指令包括:根据预设读写规律设置的第一地址配置信息或为离散数据设置的第二地址配置信息。具体实施中,很多通信、图像领域算法的源数据往往具有一定的读写规律,上述预设读写规律即根据通信、图像领域算法的源数据的读写规律所对应设置的预设读写规律。第一地址配置信息以及第二地址配置信息中包含多个待配置的参数值,分别用于对可配置端口中设置的多个预设参数进行配置。在执行控制指令时,寄存器堆根据译码结果将控制指令发送给对应的可配置端口。
可配置端口具体包括:6个读端口(即图2中所示的读端口0-读端口5)以及5个写端口(即图2中所示的写端口0-写端口4)。其中,上述各个读端口以及写端口位宽为512bit,每个读端口以及写端口能够与寄存器堆之间进行独立的数据及指令交互。
每个读端口以及写端口中进一步设置有:至少一个地址产生器(图中未示出)以及内部寄存器(图中未示出)。具体地,地址产生器用于根据控制指令中的第一地址配置信息对预设的地址变量参数及地址指令参数进行配置,以生成对应的地址偏移,并根据地址偏移生成第一数据访存地址。其中,地址产生器中进一步设置有:确定单元,用于根据配置结果确定对应的地址偏移运算规则以及地址运算规则;以及运算单元,用于根据上述地址偏移运算规则以及地址运算规则对预设地址变量参数进行运算,生成对应的地址偏移以及第一数据访存地址。
下面来介绍第一数据访存地址的计算方式。具体地,上述预设的地址变量参数可以包括:IStart、IStep、ISize、INum、SStart、SStep、SSize、以及SNum,其依次对应I窗口起始地址参数、I窗口内步进长度参数、I窗口大小参数、I窗口内偏移参数、S窗口起始地址参数、S窗口内步进长度参数、S窗口大小参数、以及S窗口内偏移参数,具体对应关系如表1所示。
表1
地址指令参数可以包括S++、I++以及A++中的一个或多个。具体使用时,针对于读端口,地址指令参数的用法如下:
若读端口读取到的控制指令为R[X].R[S++,I++,A++]->ALU.T1,则上述指令表示:根据S++,I++,A++的配置结果生成第一数据访存地址,通过第X个读端口(X可以为0,1,2,3,4,5)在寄存器堆中获取上述第一数据访存地址对应的数据,将该数据传给ALU(arithmeticlogic unit,算术逻辑单元)的T1寄存器。
针对于写端口,地址指令参数的用法如下:
若写端口读取的控制指令为ALU.T0->W[x].R[S++,I++,A++],则上述指令表示:将ALU的T0寄存器的值通过第X个写端口(X可以为0,1,2,3,4)写到当前地址索引到的向量寄存器中。其中,上述地址为根据配置的地址指令参数S++,I++,A++的参数值来计算确定的地址。
在这里,要说明的是,上述R[S++,I++,A++]中的地址指令参数可以任选S++,I++,A++中任意1-3个进行配置,当采用上述3个地址指令参数中的任一地址指令参数时,该地址指令参数对应的值为1。例如,若读取到的指令为R1.R[I++,A++]->ALU.T1,则对应采用地址指令参数I++以及A++,此时S++、I++以及A++的值分别为:0,1,1;若读取到的指令为R[1].R[S++,I++,A++]->ALU.T1,则对应采用地址指令参数S++、I++以及A++,此时S++、I++以及A++的值分别为:1,1,1。具体实施中,根据配置的S++,I++,A++来确定地址变量参数的地址偏移运算规则,以生成对应的地址偏移,然后根据上述地址偏移以及地址运算规则计算对应的第一数据访存地址,并将第一数据访存地址进行缓存,以供从缓存中读取的第一数据访存地址并根据该第一数据访存地址去寄存器堆中读取/写入对应的访存数据。其中,S++、I++以及A++的配置结果与地址偏移运算规则以及地址运算规则的对应关系如表2所示。
表2
为了更加清楚地介绍上述读写规则,下面来列举详细示例进行说明。
若预先配置的各个地址变量参数的参数值如下:IStart=1,IStep=2,ISize=4,INum=0,SStart=0,SStep=2,SSize=5,SNum=0,当地址指令参数采用I++和A++(即表2中I和A的值为1,S值为0),读取的控制指令为:R1.R[I++,A++]->ALU.T1,则根据表2中的对应关系执行如下运算:INum=(0+2)%4=2,Addr=2+1=3,计算得到当前第一数据访存地址是3,即根据该指令从3号向量寄存器中读取对应数据,并将该数据传给ALU的T1寄存器。如果继续执行一遍上述R1.R[I++,A++]->ALU.T1的指令:对应执行如下运算:INum=(2+2)%4=0,Addr=0+1=1,则计算得到当前第一数据访存地址是1,即根据该指令从1号向量寄存器中读取对应数据。由此可见,当上述控制指令循环执行时,能够实现依次读取不同向量寄存器中的存储数据的目的。
其中,用户可以根据自己的需要预先对上述地址变量参数以及地址指令参数的参数值进行配置,并将携带配置信息(对应第一地址配置信息)的控制指令输入可配置寄存器,使可配置寄存器执行上述控制指令来计算对应的第一数据访存地址,计算所得的第一数据访存地址能够根据用户的配置呈现一定规律性,能够以预设的读写规律访问不同的向量寄存器。在实际操作中,由于很多通信、图像领域的算法需要多次读写不同的源数据,并且上述源数据的访存往往很有规律,例如计算FIR,通过递增和循环的方法读取源数据,在计算图像的矩阵数据时,依次读取每一行的下一个元素,当读完一行时,换行再重复上述读写规律。因此,通过本发明能够实现:仅通过少数几条指令来读取有规律的源数据,大大减轻程序员编写指令的负担,同时减少了处理器需要访问的指令数量,提高数据处理效率。
上述内容为可配置端口对第一地址配置信息的处理过程,接下来介绍可配置端口针对第二地址配置信息的处理过程。具体实施中,第二地址配置信息为离散确有相对固定模式的地址访问的离散数据的地址配置信息,其读取/写入的数据对应为离散数据。
具体地,第二地址配置信息存储在离散地址缓存寄存器中。离散地址缓存寄存器包括:2个读地址寄存器(对应图2中靠近读端口侧的两个离散地址寄存器)以及1个写地址寄存器(对应图2中靠近写端口侧的两个离散地址寄存器),用于对控制指令中的第二地址配置信息进行缓存,以供可配置端口从上述缓存中读取第二地址配置信息并计算对应的第二数据访存地址,并根据第二数据访存地址去寄存器堆中读取/写入对应的离散数据。具体实施中,可配置端口根据控制指令中的移位命令选项以及索引标记命令选项对第二地址配置信息进行运算,生成第二数据访存地址,并根据第二数据访存地址去寄存器堆的对应地址中读取/写入对应数据。具体实施中,移位命令选项以及索引标记命令选项的对应指令分别为dis和shift,离散存取方式可以应用在LDPC编译码中。
举例说明:若离散确有相对固定模式的地址访问的离散数据的存储分布为图3所示分布,以读取图3中第一行的离散数据为例,可配置端口读取数据的过程具体可以为:
首先根据第二地址配置信息,通过config指令,配置离散地址缓存寄存器的64个比特的值分别为:1,2,8,9,12,13,其余全为0。
离散地址计算器根据上述配置的第二地址配置信息以及输入控制指令,计算第二数据访存地址并访问对应数据。以读取图3中第一行的离散数据为例,依次输入控制指令如下:
输入R[dis,shift]->ALU.T0,此次计算的索引号是1,等价于R[1]->ALU.T0。
类似地,依次输入:R[dis,shift]->ALU.T1,此次计算的索引号是2,等价于R[2]->ALU.T1;
R[dis,shift]->ALU.T2,此次计算的索引号是8,等价于R[8]->ALU.T2;
R[dis,shift]->ALU.T3,此次计算的索引号是9,等价于R[9]->ALU.T3;
R[dis,shift]->ALU.T4,此次计算的索引号是12,等价于R[12]->ALU.T4;
R[dis,shift]->ALU.T5,此次计算的索引号是13,等价于R[13]->ALU.T5。
其中,移位命令选项shift使地址产生器移位一个比特位,从而使下个带有dis表示的离散访问控制指令所得到的地址是下一个比特位标记的索引。
类似地,其它行的读取方式与上述读取方式类似,此处不再赘述。
另外,上述离散地址访存还能用于load/store访存指令。
其实现过程具体可以为:在访存接口单元同样设置离散地址缓存寄存器,则访存接口单元控制的load/store指令也可以采用dis选项,按照预设的配置,依次读取离散地址的数据,例如:
配置离散地址缓存寄存器的值是:1,7,11,59,61
执行如下指令:
BIU.Load(dis)->ALU.T0,则此次load的地址是当前访存接口单元的基地址+1。
BIU.Load(dis,shift)->ALU.T0,则此次load的地址是当前访存接口单元的基地址+1(因为上一条指令没有shift)。
BIU.Load(dis,shift)->ALU.T1,则此次load的地址是当前访存接口单元的基地址+7。
BIU.Load(dis,shift)->ALU.T2,则此次load的地址是当前访存接口单元的基地址+11。
BIU.Load(dis,shift)->ALU.T3,则此次load的地址是当前访存接口单元的基地址+59。
BIU.Load(dis,shift)->ALU.T4,则此次load的地址是当前访存接口单元的基地址+61。
由此可见,在本发明提供的可配置寄存器能够根据预先配置的多个地址变量参数、以及地址指令参数来定义数据及指令的读写数顺序并自动计算数据的读写地址,有效减少了读写数据的指令长度以及指令数量,减轻了程序员编写指令的负担,提升了数据的读写效率,使读写数据的方式更为灵活;同时,本发明还进一步支持离散地址变换,对于离散确有相对固定模式的地址访问,能够根据预先配置的离散地址信息自动读取/写入对应的离散数据,从而支持多种地址的访存模式。
图4为本发明一实施例提供的一种基于可配置寄存器的数据存取方法的流程图。本发明中的方法基于上述实施例中介绍的可配置寄存器来实现,如图4所示,该方法包括:
步骤S410:接收外部输入的控制指令;其中,控制指令中包括预先配置的第一地址配置信息和第二地址配置信息。
第一地址配置信息为预设读写规律设置的地址配置信息。例如,很多通信、图像领域算法的源数据往往具有一定的读写规律,上述预设读写规律即根据通信、图像领域算法的源数据的读写规律所对应设置的预设读写规律。第二地址配置信息为离散数据的地址配置信息。
步骤S420:根据控制指令中的第一地址配置信息对预设的地址变量参数以及预设指令参数进行配置,并根据配置结果计算第一数据访存地址;以及,根据控制指令中的第二地址配置信息计算第二数据访存地址。
其中,对于具有读写规律的源数据的第一地址配置信息,对预设的地址变量参数以及预设指令参数进行配置,并调用对应指令,以根据地址变量参数以及预设指令参数的配置结果执行对应的计算过程并生成与上述读写规律对应的第一数据访存地址,从而根据第一数据访存地址从寄存器堆中访问对应数据。在此过程中,有效实现了根据外部配置信息来读取寄存器堆中存储的向量数据的目的。第二地址配置信息为离散地址的配置信息,在本步骤中,能够根据第二地址配置信息调用对应指令,并自动计算与第二地址配置信息对应的离散数据的第二数据访存地址,从而根据第二数据访存地址从寄存器堆中读取/写入离散数据。其中,上述所调用的指令可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。
步骤S430:根据第一数据访存地址或第二数据访存地址去寄存器堆中读取/写入对应数据。
由此可见,在本发明提供的基于可配置寄存器的数据存取方法中,能够根据外部指令中配置的预设参数定义数据及指令的读写数顺序并自动计算数据的读写地址,有效减少了读写数据的指令长度以及指令数量,减轻了程序员编写指令的负担,提升了数据的读写效率;同时,本发明还进一步支持离散地址变换,能够根据预先配置的离散地址信息自动读取/写入对应的离散数据,从而支持多种地址类型数据的访存。
图5为本发明另一实施例提供的一种基于可配置寄存器的数据存取方法的流程图。如图5所示,该方法包括:
步骤S510:接收外部输入的控制指令,其中,控制指令中包括预先配置的第一地址配置信息和第二地址配置信息。
其中,控制指令中包括预先配置的第一地址配置信息和第二地址配置信息。第一地址配置信息为预设读写规律设置的地址配置信息。例如,很多通信、图像领域算法的源数据往往具有一定的读写规律,上述预设读写规律即根据通信、图像领域算法的源数据的读写规律所对应设置的预设读写规律。第二地址配置信息为离散数据的地址配置信息。
步骤S520:根据控制指令中的第一地址配置信息对预设的地址变量参数及地址指令参数进行配置,根据配置结果确定对应的地址偏移运算规则以及地址运算规则,根据上述运算规则生成对应的地址偏移以及第一数据访存地址;以及根据第二地址配置信息以及控制指令中的移位命令选项以及索引标记命令选项计算第二数据访存地址。
其中,地址变量参数包括:IStart、IStep、ISize、INum、SStart、SStep、SSize、以及SNum,上述地址变量参数依次对应I窗口起始地址参数、I窗口内步进长度参数、I窗口大小参数、I窗口内偏移参数、S窗口起始地址参数、S窗口内步进长度参数、S窗口大小参数、以及S窗口内偏移参数,具体对应关系可参见上述可配置寄存器实施例中的表1。
地址指令参数可以包括S++、I++以及A++中的一个或多个。具体使用时,针对于读端口,地址指令参数的用法如下:
若读端口读取到的控制指令为R[X].R[S++,I++,A++]->ALU.T1,则上述指令表示:根据S++,I++,A++的配置结果生成第一数据访存地址,通过第X个读端口(X可以为0,1,2,3,4,5)在寄存器堆中获取上述第一数据访存地址对应的数据,将该数据传给ALU(arithmeticlogic unit,算术逻辑单元)的T1寄存器。
针对于写端口,地址指令参数的用法如下:
若写端口读取的控制指令为ALU.T0->W[x].R[S++,I++,A++],则上述指令表示:将ALU的T0寄存器的值通过第X个写端口(X可以为0,1,2,3,4)写到当前地址索引到的向量寄存器中。其中,上述地址为根据配置的地址指令参数S++,I++,A++的参数值来计算确定的地址。
在这里,要说明的是,上述R[S++,I++,A++]中的地址指令参数可以任选S++,I++,A++中任意1-3个进行配置,当采用上述3个地址指令参数中的任一地址指令参数时,该地址指令参数对应的值为1。例如,若读取到的指令为R1.R[I++,A++]->ALU.T1,则对应采用地址指令参数I++以及A++,此时S++、I++以及A++的值分别为:0,1,1;若读取到的指令为R[1].R[S++,I++,A++]->ALU.T1,则对应采用地址指令参数S++、I++以及A++,此时S++、I++以及A++的值分别为:1,1,1。具体实施中,S++、I++以及A++的配置结果与地址偏移运算规则以及地址运算规则的对应关系参见上述可配置寄存器实施例中的表2。
具体实施中,用户可以根据自己的需要预先对上述地址变量参数以及地址指令参数的参数值进行配置,并将携带配置信息(对应第一地址配置信息)的控制指令输入可配置寄存器,使可配置寄存器执行上述控制指令来计算对应的第一数据访存地址,并根据第一数据访存地址规律性访问不同的向量寄存器。在实际操作中,由于很多通信、图像领域的算法需要多次读写不同的源数据,并且上述源数据的访存往往很有规律,例如计算FIR,通过递增和循环的方法读取源数据,在计算图像的矩阵数据时,依次读取每一行的下一个元素,当读完一行时,换行再重复上述读写规律。
在根据第二地址配置信息以及控制指令中的移位命令选项以及索引标记命令选项计算第二数据访存地址。具体实施中,移位命令选项以及索引标记命令选项的对应指令分别为dis和shift。具体实施中,离散存取方式可以应用在LDPC编译码中。
另外,上述离散地址访存方法还可以用于load/store访存指令。
其实现过程具体可以为:在访存接口单元同样设置离散地址缓存寄存器,则访存接口单元控制的load/store指令也可以采用dis选项,按照预设的配置,依次读取离散地址的数据,例如:
配置离散地址缓存寄存器的值是:1,7,11,59,61
执行如下指令:
BIU.Load(dis)->ALU.T0,则此次load的地址是当前访存接口单元的基地址+1。
BIU.Load(dis,shift)->ALU.T0,则此次load的地址是当前访存接口单元的基地址+1(因为上一条指令没有shift)。
BIU.Load(dis,shift)->ALU.T1,则此次load的地址是当前访存接口单元的基地址+7。
BIU.Load(dis,shift)->ALU.T2,则此次load的地址是当前访存接口单元的基地址+11。
BIU.Load(dis,shift)->ALU.T3,则此次load的地址是当前访存接口单元的基地址+59。
BIU.Load(dis,shift)->ALU.T4,则此次load的地址是当前访存接口单元的基地址+61。
步骤S530:根据第一数据访存地址或第二数据访存地址去寄存器堆中读取/写入对应数据。
具体地,根据第一数据访存地址或第二数据访存地址去寄存器堆中读取/写入对应数据参照上述可配置寄存器实施例中的对应介绍,此处不再赘述。
通过本发明能够实现:仅通过少数几条指令来读取有规律的源数据,进而大大减轻了程序员编写指令的负担,减少了处理器需要访问的指令数量,并提高了数据计算效率。由此可见,在本发明提供的可配置寄存器能够根据预先配置的多个地址变量参数、以及地址指令参数来定义数据及指令的读写数顺序并自动计算数据的读写地址,有效减少了读写数据的指令长度以及指令数量,减轻了程序员编写指令的负担,提升了数据的读写效率,使读写数据的方式更为灵活;同时,本发明还进一步支持离散地址变换,对于离散确有相对固定模式的地址访问,能够根据预先配置的离散地址信息自动读取/写入对应的离散数据,从而支持多种地址类型数据的访存。
本发明中所提到的各种模块、电路均为由硬件实现的电路,虽然其中某些模块、电路集成了软件,但本发明所要保护的是集成软件对应的功能的硬件电路,而不仅仅是软件本身。
本领域技术人员应该理解,附图或实施例中所示的装置结构仅仅是示意性的,表示逻辑结构。其中作为分离部件显示的模块可能是或者可能不是物理上分开的,作为模块显示的部件可能是或者可能不是物理模块。
最后,需要注意的是:以上列举的仅是本发明的具体实施例子,当然本领域的技术人员可以对本发明进行改动和变型,倘若这些修改和变型属于本发明权利要求及其等同技术的范围之内,均应认为是本发明的保护范围。
Claims (9)
1.一种可配置寄存器,其特征在于,包括:寄存器堆、多个可配置端口以及离散地址缓存寄存器;其中,
所述寄存器堆包括多个向量数据寄存器以及译码器,所述向量数据寄存器用于存储待访问的向量数据;所述译码器用于对外部输入的控制指令进行译码以执行所述控制指令;其中,所述控制指令包括:根据预设读写规律设置的第一地址配置信息或为离散数据设置的第二地址配置信息;
所述可配置端口包括:数个读端口以及数个写端口;所述读端口/写端口用于根据所述控制指令中的第一地址配置信息对预设参数进行配置,生成对应的第一数据访存地址,并将所述第一数据访存地址进行缓存,以供根据从所述缓存中读取的第一数据访存地址去寄存器堆中读取/写入对应的访存数据;以及从所述离散地址缓存寄存器中获取第二地址配置信息并计算对应的第二数据访存地址,并根据所述第二数据访存地址去寄存器堆中读取/写入对应的离散数据;
所述离散地址缓存寄存器包括:至少一个读地址寄存器以及至少一个写地址寄存器;所述读地址寄存器/写地址寄存器用于缓存所述控制指令中的第二地址配置信息,以供所述可配置端口从所述缓存中读取所述第二地址配置信息并计算对应的第二数据访存地址。
2.根据权利要求1所述的可配置寄存器,其特征在于,所述可配置端口进一步包括:
地址产生器,用于根据所述控制指令中的第一地址配置信息对预设的地址变量参数及地址指令参数进行配置,以生成对应的地址偏移,并根据所述地址偏移生成第一数据访存地址;内部寄存器,用于对所述第一数据访存地址进行缓存,以供根据从所述缓存中读取的第一数据访存地址去寄存器堆中读取/写入对应的访存数据。
3.根据权利要求2所述的可配置寄存器,其特征在于,所述地址产生器包括:
确定单元,用于根据对地址指令参数的配置结果确定对应的地址偏移运算规则以及地址运算规则;
运算单元,用于根据所述地址偏移运算规则以及所述地址运算规则对所述预设地址变量参数进行运算,生成对应的地址偏移以及第一数据访存地址。
4.根据权利要求2或3所述的可配置寄存器,其特征在于,所述地址变量参数包括:I窗口起始地址参数、I窗口内步进长度参数、I窗口大小参数、I窗口内偏移参数、S窗口起始地址参数、S窗口内步进长度参数、S窗口大小参数、以及S窗口内偏移参数。
5.根据权利要求2所述的可配置寄存器,其特征在于,所述控制指令进一步包括:用于计算第二数据访存地址的移位命令选项以及索引标记命令选项;所述地址指令参数包括S++、I++以及A++中的一个或多个。
6.一种基于可配置寄存器的数据存取方法,其特征在于,包括:
接收外部输入的控制指令;其中,所述控制指令中包括预先配置的第一地址配置信息和第二地址配置信息;
根据所述控制指令中的第一地址配置信息对预设的地址变量参数以及地址指令参数进行配置,并根据配置结果计算第一数据访存地址;其中,所述第一地址配置信息为根据预设读写规律设置的地址配置信息;以及,根据所述控制指令中的第二地址配置信息计算第二数据访存地址;其中,所述第二地址配置信息为离散数据的地址配置信息;
根据所述第一数据访存地址或第二数据访存地址去寄存器堆中读取对应数据。
7.根据权利要求6所述的方法,其特征在于,所述根据配置结果计算第一数据访存地址的步骤具体包括:
根据配置结果确定对应的地址偏移运算规则以及地址运算规则;
根据所述偏移运算规则以及所述地址运算规则对所述地址变量参数进行运算,生成对应的地址偏移以及第一数据访存地址。
8.根据权利要求6或7的所述的方法,其特征在于,所述地址变量参数包括:I窗口起始地址参数、I窗口内步进长度参数、I窗口大小参数、I窗口内偏移参数、S窗口起始地址参数、S窗口内步进长度参数、S窗口大小参数、以及S窗口内偏移参数。
9.根据权利要求6所述的方法,其特征在于,所述控制指令进一步包括:用于计算第二数据访存地址的移位命令选项以及索引标记命令选项;所述地址指令参数包括S++、I++以及A++中的一个或多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810022210.9A CN110018847B (zh) | 2018-01-10 | 2018-01-10 | 可配置寄存器及基于可配置寄存器的数据存取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810022210.9A CN110018847B (zh) | 2018-01-10 | 2018-01-10 | 可配置寄存器及基于可配置寄存器的数据存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110018847A true CN110018847A (zh) | 2019-07-16 |
CN110018847B CN110018847B (zh) | 2021-01-12 |
Family
ID=67188007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810022210.9A Active CN110018847B (zh) | 2018-01-10 | 2018-01-10 | 可配置寄存器及基于可配置寄存器的数据存取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110018847B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626083A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN116185499A (zh) * | 2023-04-27 | 2023-05-30 | 深圳鲲云信息科技有限公司 | 寄存器数据传输方法、寄存器缓存模块、智能设备和介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5086500A (en) * | 1987-08-07 | 1992-02-04 | Tektronix, Inc. | Synchronized system by adjusting independently clock signals arriving at a plurality of integrated circuits |
CN101609715A (zh) * | 2009-05-11 | 2009-12-23 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101840383A (zh) * | 2010-04-28 | 2010-09-22 | 中国科学院自动化研究所 | 支持连续/离散地址多数据并行访问的可配置存储器结构 |
CN103092797A (zh) * | 2012-12-13 | 2013-05-08 | 中国航空无线电电子研究所 | 离散量接口同步控制装置、离散量采集及输出控制方法 |
US20140215180A1 (en) * | 2001-03-22 | 2014-07-31 | Altera Corporation | Adaptable datapath for a digital processing system |
CN104572020A (zh) * | 2014-12-31 | 2015-04-29 | 中国电子科技集团公司第三十八研究所 | 一种寄存器堆分页式扩展装置及其实现方法 |
CN105224459A (zh) * | 2015-10-21 | 2016-01-06 | 浪潮电子信息产业股份有限公司 | 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法 |
US20160092237A1 (en) * | 2014-09-30 | 2016-03-31 | Imagination Technologies Limited | Variable Length Execution Pipeline |
-
2018
- 2018-01-10 CN CN201810022210.9A patent/CN110018847B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5086500A (en) * | 1987-08-07 | 1992-02-04 | Tektronix, Inc. | Synchronized system by adjusting independently clock signals arriving at a plurality of integrated circuits |
US20140215180A1 (en) * | 2001-03-22 | 2014-07-31 | Altera Corporation | Adaptable datapath for a digital processing system |
CN101609715A (zh) * | 2009-05-11 | 2009-12-23 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101840383A (zh) * | 2010-04-28 | 2010-09-22 | 中国科学院自动化研究所 | 支持连续/离散地址多数据并行访问的可配置存储器结构 |
CN103092797A (zh) * | 2012-12-13 | 2013-05-08 | 中国航空无线电电子研究所 | 离散量接口同步控制装置、离散量采集及输出控制方法 |
US20160092237A1 (en) * | 2014-09-30 | 2016-03-31 | Imagination Technologies Limited | Variable Length Execution Pipeline |
CN104572020A (zh) * | 2014-12-31 | 2015-04-29 | 中国电子科技集团公司第三十八研究所 | 一种寄存器堆分页式扩展装置及其实现方法 |
CN105224459A (zh) * | 2015-10-21 | 2016-01-06 | 浪潮电子信息产业股份有限公司 | 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626083A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
WO2021223643A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN113626083B (zh) * | 2020-05-08 | 2023-10-13 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
US12106109B2 (en) | 2020-05-08 | 2024-10-01 | Anhui Cambricon Information Technology Co., Ltd. | Data processing apparatus and related product |
CN116185499A (zh) * | 2023-04-27 | 2023-05-30 | 深圳鲲云信息科技有限公司 | 寄存器数据传输方法、寄存器缓存模块、智能设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110018847B (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
CN107315574B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
KR102185287B1 (ko) | 벡터 연산 장치 | |
US7640284B1 (en) | Bit reversal methods for a parallel processor | |
CN107315715B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
US20210406021A1 (en) | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization | |
CN107766079B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN107315718B (zh) | 一种用于执行向量内积运算的装置和方法 | |
JP2012137839A (ja) | メモリ制御装置、及びメモリ制御方法 | |
EP3451156B1 (en) | Apparatus and method for executing vector circular shift operation | |
JPH04343151A (ja) | メモリアクセス装置 | |
EP3451153B1 (en) | Apparatus and method for executing transcendental function operation of vectors | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
WO2017185392A1 (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
EP3451151A1 (en) | Apparatus and method for executing vector comparison operation | |
CN116880903A (zh) | 具有提取提前滞后的流引擎 | |
US20110072170A1 (en) | Systems and Methods for Transferring Data to Maintain Preferred Slot Positions in a Bi-endian Processor | |
WO2017185404A1 (zh) | 一种用于执行向量逻辑运算的装置及方法 | |
CN110018847B (zh) | 可配置寄存器及基于可配置寄存器的数据存取方法 | |
US20070300044A1 (en) | Method and apparatus for interfacing a processor and coprocessor | |
JP2018534666A (ja) | インメモリ処理及び狭幅データポートを備えたコンピュータデバイス | |
WO2020135209A1 (zh) | 减少存储体冲突的方法 | |
WO2017185419A1 (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
US20070300042A1 (en) | Method and apparatus for interfacing a processor and coprocessor |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Shanghai Silang Technology Co.,Ltd. Address before: 102400 floor 402, building 11, No.1 Yanfu Road, Yancun Town, Fangshan District, Beijing Patentee before: Beijing Si Lang science and Technology Co.,Ltd. |