CN102629191B - 数字信号处理器寻址方法 - Google Patents
数字信号处理器寻址方法 Download PDFInfo
- Publication number
- CN102629191B CN102629191B CN201210123104.2A CN201210123104A CN102629191B CN 102629191 B CN102629191 B CN 102629191B CN 201210123104 A CN201210123104 A CN 201210123104A CN 102629191 B CN102629191 B CN 102629191B
- Authority
- CN
- China
- Prior art keywords
- address
- memory access
- value
- addressing
- digital signal
- 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
Abstract
本发明属于计算机数字信号处理技术领域,具体涉及一种数字信号处理器寻址方法。本寻址方法具体如下:数字信号处理器中的访存单元从片内存储器中读取数据,所述访存单元并将读取到的数据写入数字信号处理器的寄存器组,数字信号处理器中的运算部件以寄存器组中的数据为源操作数进行运算并将运算结果写回寄存器组,且所述访存单元将寄存器组中的运算结果写回至片内存储器中;所述访存单元在以下四种寻址类型中择一访问所述片内存储器中的数据:直接寻址,或基地址偏移量寻址,或矩阵模寻址,或位反序寻址。使用本寻址方法能够基于所述以阵列方式构成的大带宽存储块并面向数字信号处理应用实现高效的数据访问。
Description
技术领域
本发明属于计算机数字信号处理技术领域,具体涉及一种数字信号处理器寻址方法。
背景技术
数字信号处理已成为提高产品性能的一个主要手段,作为基于数字信号处理特点制作的器件,数字信号处理器(DSP)已成为数字系统不可或缺的核心器件。在应用需求的推动下,DSP的性能不断获得提高,目前,新体制雷达及4G通信等领域对DSP的性能提出了更高的要求。
高性能计算的实现本质上取决于单位时间内启动的运算部件数量,启动的运算部件的数量可以用以下算式描述:
UnitNum:单位时间内启动的运算部件数量
CycleNum:单位时间内运行的时钟节拍数
InstrNum:每个时钟节拍发射的指令数
UnitNumEachInstr:每条指令启动的运算部件数
为实现高性能计算,人们首先想到提升处理器频率,即增加上式中的CycleNum。这种方法在一定条件下可以不改变处理器的架构而轻易地获得更高性能。然而频率的进一步提升可能需要细化流水阶,增加流水线的深度,而深度流水又会使得程序分支导致的时钟节拍开销增大。此外,这种方法还会带来高功耗、制造工艺复杂度加大等一系列问题。
另一种实现高性能计算的思路是提高指令的并行发射能力,即增加上式中的InstrNum。常用的技术手段包括超标量与超长指令字,超标量依赖硬件实现多发射,设计复杂度较高;超长指令字更多地依赖软件实现多发射,即由程序员或高级语言编译器构造出超长指令字,由硬件执行。从广义上来看,多核技术也属于这一类型,即依靠多个内核提高单芯片内的指令并行发射能力。
第三种思路是设计出能启动更多运算部件的指令,即增加上式中的UnitNumEachInstr。单指令多数据(SIMD)指令和各种形式的复合指令均可达到此目的。
以兼顾容量与速度为出发点,现代处理器多采用层次化的存储结构。以典型的数字信号处理器为例,其存储结构一般包括片外存储器、片内存储器、寄存器组三个层次,所述数字信号处理器还包括用于对片内存储器进行访问的访存单元和直接存储器访问(DMA)控制器。
信号处理应用的特点决定了DSP处理的对象往往是数据流,典型的数据流处理过程为:待处理的数据首先被DMA控制器从片外存储器传送至片内存储器;再被访存单元读入寄存器组;DSP中的运算部件处理寄存器组中的输入数据,并将计算结果写回寄存器组;寄存器组中的运算结果被访存单元写回片内存储器;最后片内存储器中的计算结果被DMA控制器传送至片外存储器。
单位时间里向存储器存取的信息量称为带宽。由于DMA传输技术的不断进步,并且多个DMA通道可以并行工作,因此,在上述数据流处理过程中,片内存储器与寄存器组间的数据传输带宽是主要的性能瓶颈。为实现高性能实时数字信号处理,必须设法提高片内存储器与寄存器组间数据传输的带宽。提高带宽有两种方式:缩短片内存储器存取周期和增大片内存储器数据总线位宽。在现有技术水准下,缩短片内存储器存取周期的空间非常有限,因此增大片内存储器数据总线位宽是一种主要的带宽提升手段。
在DSP设计实现中,由于工艺上的原因,通常是由若干个总线位宽较小的存储体(Bank)以阵列方式构成具有较大总线位宽的存储块(Block)。图1给出了一个这样的存储块示例,总线位宽为32bit的Bank0~Bank3以阵列方式构成总线位宽为128bit的Block0,Block0中内存单元的地址编排如图1中0~11所示。
另一方面,一个数字信号处理应用的时间开销往往集中在若干核心算法模块上,如FFT、矩阵运算等。若能针对这些核心算法设计出相应的寻址方法,将会显著提升数字信号处理应用的整体效率。
DSP的寻址方法是与其内存及总线结构密切相关的,对于如何基于所述以阵列方式构成的大带宽存储块并面向数字信号处理应用实现高效的数据访问,现有的DSP寻址方法所能提供的支持并不理想。
发明内容
根据上述现有技术存在的不足,本发明的目的在于,提供一种数字信号处理器寻址方法,使用该寻址方法能够基于所述以阵列方式构成的大带宽存储块并面向数字信号处理应用实现高效的数据访问。
为实现上述目的,本发明采用了以下技术方案:一种数字信号处理器寻址方法,其特征在于:数字信号处理器中的访存单元从片内存储器中读取数据,所述访存单元并将读取到的数据写入数字信号处理器的寄存器组,数字信号处理器中的运算部件以寄存器组中的数据为源操作数进行运算并将运算结果写回寄存器组,且所述访存单元将寄存器组中的运算结果写回至片内存储器中;所述访存单元以矩阵模寻址类型访问所述片内存储器中的数据;
所述矩阵模寻址类型以单字或双字为访存单位;
在以单字为访存单位访存时,数字信号处理器中的取值单元所发出的采用矩阵模寻址类型的单条指令产生N个地址,且1≤N≤4,此N个地址中的每一个地址即为对应访存单位的地址;
在以双字为访存单位访存时,数字信号处理器中的取值单元所发出的采用矩阵模寻址类型的单条指令产生N对地址,且1≤N≤4,此N对地址中的每一对地址均包括两个连续的地址,且每一对地址均以其包含的两个连续地址中的较小值作为该访存单位的地址;
所述采用矩阵模寻址类型的单条指令由基地址、字间偏移量、模地址边界值形成实际的访存地址;
所述采用矩阵模寻址类型的单条指令在形成实际访存地址时使用的基地址由数字信号处理器中的一个基地址寄存器确定,该基地址寄存器由所述采用矩阵模寻址类型的单条指令指定;
所述采用矩阵模寻址类型的单条指令在形成实际访存地址时使用的字间偏移量由数字信号处理器中的一个字间偏移量寄存器确定,该字间偏移量寄存器由所述采用矩阵模寻址类型的单条指令指定;
所述采用矩阵模寻址类型的单条指令在形成实际访存地址时使用的模地址边界值为一确定值,且模地址边界值为4或8或16。
本数字信号处理器寻址方法还可以通过以下方式得以进一步实现:
优选的,所述矩阵模寻址类型在以单字为访存单位访存时,按以下步骤寻址:
步骤1、数字信号处理器中的取值单元所发出的以单字为访存单位的单条指令产生N(1≤N≤4)个地址的初始值;
步骤2、若N为1,转至步骤8,否则继续执行步骤3;
步骤3、设定M等于1;
步骤4、设定Q为所述模地址边界值减1后所得值的位宽,若第M+1个地址的低Q位小于第M个地址的低Q位,则称在第M+1个地址上越过了模地址边界,并继续执行步骤5,否则转至步骤6;
步骤5、将第M+1个地址到第N个地址的值均减去模地址边界值后作为第M+1个地址到第N个地址的新值;
步骤6、令M=M+1;
步骤7、若M<N,转至步骤4执行,否则执行步骤8;
步骤8、此时第1到第N个地址即为实际的访存地址。
优选的,所述矩阵模寻址类型在以双字为访存单位访存时,按以下步骤寻址:
步骤1、数字信号处理器中的取值单元所发出的以双字为访存单位的单条指令产生N(1≤N≤4)对地址的初始值,所述N对地址中的每一对地址均包括两个连续的地址,且每一对地址均以其包含的两个连续地址中的较小值作为该访存单位的地址;
步骤2、若N为1,转至步骤8,否则继续执行步骤3;
步骤3、设定M等于1;
步骤4、设定Q为所述模地址边界值减1后所得值的位宽,若第M+1对地址中较小地址值的低Q位小于第M对地址中较小地址值的低Q位,则称在第M+1对地址上越过了模地址边界,并继续执行步骤5,否则转至步骤6;
步骤5、将第M+1对地址到第N对地址的值均减去模地址边界值后作为第M+1对地址到第N对地址的新值;
步骤6、令M=M+1;
步骤7、若M<N,转至步骤4执行,否则执行步骤8;
步骤8、此时第1到第N对地址即为实际的访存地址。
本发明和现有技术相比,其优点在于:
1)、本数字信号处理器寻址方法更适合基于所述以阵列方式构成的大带宽存储块进行实数矩阵运算或复数矩阵运算。
本寻址方法以单字或双字作为基本的访存单位,因此适合于寻址实数或复数。采用本寻址方法的单条指令传输的数据量为1~4个单字或1~4个双字,因此能够发挥所述大带宽存储块的带宽优势。本寻址方法所访问的访存单位的地址之间设有使访问片内存储器正常工作的偏移量,能够进一步简化矩阵运算时的访存操作,例如,对于一个如表1所示的4阶实数方阵,方阵中的数据为V0~V15。
表14阶实数方阵
V0 | V1 | V2 | V3 |
V4 | V5 | V6 | V7 |
V8 | V9 | V10 | V11 |
V2 | V13 | V14 | V15 |
将表1所示方阵中的数据写入一个由8个Bank构成的存储块(设其起始地址为0)后,方阵数据在存储块中的分布如表2所示,该存储块的地址范围是0~23。
表24阶方阵数据在存储块中的分布
以本发明中的直接寻址类型为例,基于该寻址类型实现的单条指令,在将基地址设定为0,并将字间偏移量设定为1时,依次读出的四个单字即为表1所示方阵中的第一行;在将基地址设定为0,并将字间偏移量设定为4时,依次读出的四个单字即为表1所示方阵中的第一列;在将基地址设定为0,并将字间偏移量设定为5时,依次读出的四个单字即为表1所示方阵中的主对角线。即用一条指令即可实现对表1所示方阵的一行或一列或主对角线的访问。
2)、基于所述以阵列方式构成的大带宽存储块,本发明的数字信号处理器寻址方法中的矩阵模寻址类型能够显著减少对矩阵进行转置运算时的访存时间。
在基于所述存储块进行访存时,当要并发访问的多个数据分布于不同的Bank时,访存效率最高。如要并发访问表2中的V0、V1、V2,仅需一个访存周期即可;而当要并发访问表2中的V0、V1、V8时,其中V0和V8均位于Bank0,此时称在Bank0上出现了Bank冲突,因为每个Bank的数据端口的位宽是固定的,所以在第一个访存周期,只能访问V0和V1,在第二个访存周期才能够访问V8,可见,Bank冲突的出现会降低访存效率。
为减少Bank冲突,可以将需要按列访问的数据通过矩阵转置的方法转变为按行存储后再进行访问,本数字信号处理器寻址方法中的矩阵模寻址类型能够减少对以模地址边界值为阶数的方阵进行转置运算时的访存时间,进而改善相关算法的性能。
在矩阵模寻址类型中,将存储块数据端口位宽与内存单元位宽之间的比值称为模地址边界值,比如,若存储块数据端口位宽为256位,内存单元位宽为32位,则模地址边界值为8。
下面通过例子对矩阵模寻址类型的使用方法做进一步说明。
(1)、以4阶方阵的转置为例。
一个4阶方阵在一个由4个Bank构成的存储块中的存储情况如表3所示,该存储块的地址范围是0~15,其中存储的8阶方阵的数据为V0~V15。表3方阵的转置阵在存储块中的存储情况如表4所示,存放转置阵的地址范围是100~115。存储块数据端口位宽为4个内存单元的位宽,即模地址边界值为4。
表3待转置矩阵
表4转置后的矩阵
若采用本发明中的直接寻址类型,虽然可以仅用一个访存周期即可读出矩阵中的一行(如V0~V3),但是将该组数据写回存储块时会出现严重的Bank冲突,需要4个访存周期才能完成一列的写操作。因此,在采用本发明中的直接寻址类型时,完成上述方阵的转置运算所需访存周期(读并写)数为4+4×4=20。
若采用本发明中的矩阵模寻址类型,完成表3方阵至表4方阵的转置运算时的访存步骤如下:
步骤1、读内存,设定起始地址为0,字间偏移量为5,消耗一个访存周期即可从表3所示内存区域中读出数据(V0,V5,V10,V15);
步骤2、写内存,设定起始地址为100,字间偏移量为5,消耗一个访存周期即可将步骤1读出的数据写入表4所示内存区域,写数据的顺序是(V0,V5,V10,V15);
步骤3、读内存,设定起始地址为1,字间偏移量为5,消耗一个访存周期即可从表3所示内存区域中读出数据(V1,V6,V11,V12);
步骤4、写内存,设定起始地址为103,字间偏移量为5,消耗一个访存周期即可将步骤1读出的数据写入表4所示内存区域,写数据的顺序是(V12,V1,V6,V11);
步骤5、读内存,设定起始地址为2,字间偏移量为5,消耗一个访存周期即可从表3所示内存区域中读出数据(V2,V7,V8,V13);
步骤6、写内存,设定起始地址为102,字间偏移量为5,消耗一个访存周期即可将步骤1读出的数据写入表4所示内存区域,写数据的顺序是(V8,V13,V2,V7);
步骤7、读内存,设定起始地址为3,字间偏移量为5,消耗一个访存周期即可从表3所示内存区域中读出数据(V3,V4,V9,V14);
步骤8、写内存,设定起始地址为101,字间偏移量为5,消耗一个访存周期即可将步骤1读出的数据写入表4所示内存区域,写数据的顺序是(V4,V9,V14,V3);
可见,在采用本发明中的矩阵模寻址类型时,完成上述方阵的转置运算所需访存周期(读并写)数为4+4=8,访存时间较少。
(2)、以8阶方阵的转置为例。
一个8阶方阵在一个由8个Bank构成的存储块中的存储情况如表5所示,该存储块的地址范围是0~63,其中存储的8阶方阵的数据为V0~V63。表5方阵的转置阵在存储块中的存储情况如表6所示,存放转置阵的地址范围是100~163。存储块的数据端口的位宽为8个内存单元的位宽,即模地址边界值为8。
表5待转置矩阵
表6转置后的矩阵
若采用本发明中的直接寻址类型,虽然可以仅用一个访存周期即可读出矩阵中的一行(如V0~V7),但是将该组数据写回存储块时会出现严重的Bank冲突,需要8个访存周期才能完成一列的写操作。因此,在采用本发明中的直接寻址类型时,完成上述方阵的转置运算所需访存周期(读并写)数为8+8×8=72。
若采用本发明中的矩阵模寻址类型,完成表5方阵至表6方阵的转置运算时的访存步骤如下:
步骤1、读内存,设定起始地址为0,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V0,V9,V18,V27,V36,V45,V54,V63);
步骤2、写内存,设定起始地址为100,字间偏移量为9,消耗一个访存周期即可将步骤1读出的数据写入表6所示内存区域,写数据的顺序是(V0,V9,V18,V27,V36,V45,V54,V63);
步骤3、读内存,设定起始地址为1,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V1,V10,V19,V28,V37,V46,V55,V56);
步骤4、写内存,设定起始地址为107,字间偏移量为9,消耗一个访存周期即可将步骤3读出的数据写入表6所示内存区域,写数据的顺序是(V56,V1,V10,V19,V28,V37,V46,V55);
步骤5、读内存,设定起始地址为2,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V2,V11,V20,V29,V38,V47,V48,V57);
步骤6、写内存,设定起始地址为106,字间偏移量为9,消耗一个访存周期即可将步骤5读出的数据写入表6所示内存区域,写数据的顺序是(V48,V57,V2,V11,V20,V29,V38,V47);
步骤7、读内存,设定起始地址为3,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V3,V12,V21,V30,V39,V40,V49,V58);
步骤8、写内存,设定起始地址为105,字间偏移量为9,消耗一个访存周期即可将步骤7读出的数据写入表6所示内存区域,写数据的顺序是(V40,V49,V58,V3,V12,V21,V30,V39);
步骤9、读内存,设定起始地址为4,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V4,V13,V22,V31,V32,V41,V50,V59);
步骤10、写内存,设定起始地址为104,字间偏移量为9,消耗一个访存周期即可将步骤9读出的数据写入表6所示内存区域,写数据的顺序是(V32,V41,V50,V59,V4,V13,V22,V31);
步骤11、读内存,设定起始地址为5,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V5,V14,V23,V24,V33,V42,V51,V60);
步骤12、写内存,设定起始地址为103,字间偏移量为9,消耗一个访存周期即可将步骤11读出的数据写入表6所示内存区域,写数据的顺序是(V24,V33,V42,V51,V60,V5,V14,V23);
步骤13、读内存,设定起始地址为6,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V6,V15,V16,V25,V34,V43,V52,V61);
步骤14、写内存,设定起始地址为102,字间偏移量为9,消耗一个访存周期即可将步骤13读出的数据写入表6所示内存区域,写数据的顺序是(V16,V25,V34,V43,V52,V61,V6,V15);
步骤15、读内存,设定起始地址为7,字间偏移量为9,消耗一个访存周期即可从表5所示内存区域中读出数据(V7,V8,V17,V26,V35,V44,V53,V62);
步骤16、写内存,设定起始地址为101,字间偏移量为9,消耗一个访存周期即可将步骤15读出的数据写入表6所示内存区域,写数据的顺序是(V8,V17,V26,V35,V44,V53,V62,V7)。
可见,在采用本发明中的矩阵模寻址类型时,完成上述方阵的转置运算所需访存周期(读并写)数为8+8=16,访存时间较少。
(3)、以6×5矩阵的转置为例。
本发明中矩阵模寻址类型除能够加快以模地址边界值为阶数的方阵的转置速度外,对于其他矩阵的转置,同样也能起到缩短访存时间的作用。
以一个行数与列数均小于8的矩阵(如6×5矩阵)为例,说明其转置过程:将该6×5矩阵扩展为一个8阶方阵,并按照表7所示方式存储,对此8阶方阵进行转置后矩阵数据在存储块中的分布如表8所示,可见,上述6×5矩阵也得到了转置。
完成上述方阵的转置运算所需访存周期(读并写)数仍为8+8=16,而若以本发明中直接寻址类型完成上述6×5矩阵的转置,所需访存周期(读并写)数为6+5×6=36,在此例中,矩阵模寻址类型访存时间仍较少。
表7待转置矩阵
表8转置后的矩阵
(4)、以12×8矩阵的转置为例。
以一个行数或列数大于8的矩阵(如12×8矩阵)为例,说明其转置过程:先将其扩展为16阶方阵(所述12×8矩阵位于该16阶方阵的左上角),并将此16阶方阵按田字形切分,作为四个8阶方阵分别存储(子阵0、子阵1、子阵2、子阵3),如表9所示;将子阵0~子阵3分别转置,并交换子阵1和子阵2的首地址指针,通过各子阵的首地址指针即可实现对转置后的16阶方阵的引用,也即可实现对转置后的12×8矩阵的引用。
基于矩阵模寻址类型按上述方式完成矩阵的转置所需访存周期(读并写)数为(8+8)×4=64,而若以本发明中直接寻址类型完成上述12×8矩阵的转置,所需访存周期(读并写)数为12+12×8=108,在此例中,矩阵模寻址类型访存时间仍较少。
表916阶方阵切分为8阶方阵
附图说明
图1为由四个Bank以阵列方式构成的一个存储块。
图2为应用本发明的一个数字信号处理器实例BWDSP100的结构框图。
图3为一个存储块内的地址编排示意图。
图4为位反序示例。
图5为以单字为访存单位的矩阵模寻址类型实际访存地址形成流程。
图6为以双字为访存单位的矩阵模寻址类型实际访存地址形成流程。
图7为块浮点标志寄存器位域定义。
具体实施方式
下面以BWDSP100数字信号处理器为例对本发明做详细说明。
BWDSP100数字信号处理器的结构框图如图2所示。BWDSP100数字信号处理器内部含有4个计算核X、Y、Z、T,每个计算核包含一个通用寄存器组(由64个寄存器R0~R63组成)、一个访存单元和一组运算部件:4个乘法器、8个算术逻辑单元(ALU)、2个移位器、一个特定功能运算电路。位于各计算核内部的计算部件之间具有高度并行性,为了减少控制的复杂性,采用单指令多数据(SIMD)与多指令多数据(MIMD)相结合的方式来对DSP内部的多个计算部件进行控制。在计算核之间采用SIMD方式进行控制,即一条指令可以同时控制多个计算核内部的同类型计算部件完成相同的功能,而使用的源操作数不同;在计算核内部采用MIMD方式进行控制,即同一计算核内部的各计算部件分别由不同的指令来控制,使用的源操作数也各不相同。BWDSP100支持超长指令字(VLIW),即能够同时发射由多条指令构成的超长指令字,所发射的超长指令字最多达512位长。
BWDSP100数字信号处理器具有28Mbit的片内存储器,此片内存储器由片内程序存储器和片内数据存储器构成,其中片内程序存储器为4Mbit;片内数据存储器由3个存储块构成,每一个存储块的数据访问端口的位宽为256位,存储容量为8Mbit;每一个存储块在内部是由8个Bank构成的,每一个Bank的内存单元和数据访问端口的位宽都是32位。BWDSP100具有一条512位宽的程序总线和3条256位宽的内部数据总线,3条内部数据总线中又包括1条写数据总线(如图2中的内部数据总线0)和2条读数据总线(如图2中的内部数据总线1和内部数据总线2)。峰值情况下,每个计算核中的访存单元在一个访存周期内可以从2条读数据总线分别读取64位数据,并向写数据总线写入64位数据。BWDSP100内部具有三组地址寄存器U0~U15、V0~V15、W0~W16,以及一组地址计算部件,用于支持访存地址的生成。
直接寻址类型的实现
指令集中采用直接寻址类型的访存指令如表10所示。以其中的{x,y,z,t}Rs=[Un+=Um,Uk]为例。该指令依据地址寄存器Un、Uk的值形成访存地址,从片内存储器中最多读出4个字,依次写入X、Y、Z、T计算核内的第s个通用寄存器,每一个核接收1个字。是否为某个计算核读取数据取决于指令中的控制信号,即,在通用寄存器Rs的前缀中X、Y、Z、T如果出现,则为对应核读取数据,否则不为对应核读取数据。
地址寄存器Un的值作为基地址。
地址寄存器Um的值作为基地址的修改量。它的作用是:在寻址的同时修改Un。即,在寻址的同时,Un被修改为Un+Um。对Un的修改是后修改,也就是说,当前寻址用的基地址还是Un,而非Un+Um。基地址修改量定义为有符号数,当其为正时,基地址会增大;当其为负时,基地址会减小。
地址寄存器Uk的值是无符号数,作为字间偏移量。字间偏移量是指访问的多个访存单位之间的地址差值,对于单字访存指令,该差值以单字为单位;对于双字访存指令,该差值以双字为单位。
采用直接寻址类型的单条指令生成实际访存地址的步骤如下:
步骤1、数字信号处理器中的取值单元所发出的采用直接寻址类型的单条指令产生N个访存单位的地址,且1≤N≤4,第1个访存单位的地址值即为基地址值,并设定M等于1;
步骤2、若M等于N,转至步骤5,否则继续执行步骤3;
步骤3、第M+1个访存单位的地址值=第M个访存单位的地址值+字间偏移量×一个访存单位中的字的个数;
步骤4、设定M=M+1,转至步骤2;
步骤5、此时第1到第N个访存单位的地址即为实际的访存地址。
在上述步骤中,采用直接寻址类型的单条指令以单字或双字为访存单位进行访存。
XZTR0=[U0+=U1,U2]是一个采用直接寻址类型的单字访存指令实例。通用寄存器R0的前缀中只有X、Z、T,那么这条指令的作用就是读出3个字,然后分别写入X、Z、T计算核内的通用寄存器R0。即,将地址为(U0)存储单元的字送给计算核X;将地址为(U0+U2)存储单元的字送给计算核Z;将地址为(U0+2×U2)存储单元的字送给计算核T。
[U0+=U1,U2]=XYZTR1:0是一个采用直接寻址类型的双字访存指令实例。该指令将X、Y、Z、T计算核内的通用寄存器对R1:0的值写入片内数据存储器。来自X计算核数据的写访存地址为(U0)和(U0+1);来自Y计算核数据的写访存地址为(U0+2×U2)和(U0+2×U2+1);来自Z计算核数据的写访存地址为(U0+2×2×U2)和(U0+2×2×U2+1);来自T计算核数据的写访存地址为(U0+3×2×U2)和(U0+3×2×U2+1)。
表10采用直接寻址方式的访存指令
{x,y,z,t}Rs=[Un+=Um,Uk] | 单字读访存,直接寻址,使用U地址寄存器 |
{x,y,z,t}Rs=[Vn+=Vm,Vk] | 单字读访存,直接寻址,使用V地址寄存器 |
{x,y,z,t}Rs=[Wn+=Wm,Wk] | 单字读访存,直接寻址,使用W地址寄存器 |
[Un+=Um,Uk]={x,y,z,t}Rs | 单字写访存,直接寻址,使用U地址寄存器 |
[Vn+=Vm,Vk]={x,y,z,t}Rs | 单字写访存,直接寻址,使用V地址寄存器 |
[Wn+=Wm,Wk]={x,y,z,t}Rs | 单字写访存,直接寻址,使用W地址寄存器 |
{x,y,z,t}Rs+1:s=[Un+=Um,Uk] | 双字读访存,直接寻址,使用U地址寄存器 |
{x,y,z,t}Rs+1:s=[Vn+=Vm,Vk] | 双字读访存,直接寻址,使用V地址寄存器 |
{x,y,z,t}Rs+1:s=[Wn+=Wm,Wk] | 双字读访存,直接寻址,使用W地址寄存器 |
[Un+=Um,Uk]={x,y,z,t}Rs+1:s | 双字写访存,直接寻址,使用U地址寄存器 |
[Vn+=Vm,Vk]={x,y,z,t}Rs+1:s | 双字写访存,直接寻址,使用V地址寄存器 |
[Wn+=Wm,Wk]={x,y,z,t}Rs+1:s | 双字写访存,直接寻址,使用W地址寄存器 |
基地址偏移量寻址类型的实现
指令集中采用基地址偏移量寻址类型的访存指令如表11。以其中的{x,y,z,t}Rs=[Un+Um,Uk]为例。该指令依据地址寄存器Un、Um、Uk的值形成访存地址,从内存中最多读出4个字,依次写入X、Y、Z、T计算核内的第s个通用寄存器,每一个计算核接收1个字。是否为某个计算核读取数据取决于指令中的控制信号,即,在通用寄存器Rs的前缀中X、Y、Z、T如果出现,则为对应计算核读取数据,否则不为对应计算核读取数据。
地址寄存器Un的值作为基地址。
地址寄存器Um的值是有符号数,作为基地址偏移量,用于对当前的基地址作修正,用修正之后的基地址参与地址产生。
地址寄存器Uk的值是无符号数,作为字间偏移量。字间偏移量是指访问的多个访存单位之间的地址差值,对于单字访存指令,该差值以字为单位;对于双字访存指令,该差值以双字为单位。
采用基地址偏移量寻址类型的单条指令生成实际访存地址的步骤如下:
步骤1、数字信号处理器中的取值单元所发出的采用基地址偏移量寻址类型的单条指令产生N个访存单位的地址,且1≤N≤4,第1个访存单位的地址值为基地址值+基地址偏移量,并设定M等于1;
步骤2、若M等于N,转至步骤5,否则继续执行步骤3;
步骤3、第M+1个访存单位的地址值=第M个访存单位的地址值+字间偏移量×一个访存单位中的字的个数;
步骤4、设定M=M+1,转至步骤2;
步骤5、此时第1到第N个访存单位的地址即为实际的访存地址。
在上述步骤中,采用基地址偏移量寻址类型的单条指令以单字或双字为访存单位进行访存。
XZTR0=[U0+U1,U2]是一个采用基地址偏移量寻址类型的单字访存指令实例。通用寄存器R0的前缀中只有X、Z、T,那么这条指令的作用就是读出3个字,然后分别写入X、Z、T计算核内的通用寄存器R0。即,将地址为(U0+U1)存储单元的字送给计算核X;将地址为(U0+U1+U2)存储单元的字送给计算核Z;将地址为(U0+U1+2×U2)存储单元的字送给计算核T。
[U0+U1,U2]=XZTR1:0是一个采用基地址偏移量寻址类型的双字访存指令实例。该指令将X、Z、T核内的通用寄存器对R1:0的值写入片内数据存储器。来自X计算核数据的写访存地址为(U0+U1)和(U0+U1+1);来自Z计算核数据的写访存地址为(U0+U1+2×U2)和(U0+U1+2×U2+1);来自T计算核数据的写访存地址为(U0+U1+2×2×U2)和(U0+U1+2×2×U2+1)。
表11采用基地址偏移量寻址类型的访存指令
{x,y,z,t}Rs=[Un+Um,Uk] | 单字读访存,基地址偏移量寻址,使用U地址寄存器 |
{x,y,z,t}Rs=[Vn+Vm,Vk] | 单字读访存,基地址偏移量寻址,使用V地址寄存器 |
{x,y,z,t}Rs=[Wn+Wm,Wk] | 单字读访存,基地址偏移量寻址,使用W地址寄存器 |
[Un+Um,Uk]={x,y,z,t}Rs | 单字写访存,基地址偏移量寻址,使用U地址寄存器 |
[Vn+Vm,Vk]={x,y,z,t}Rs | 单字写访存,基地址偏移量寻址,使用V地址寄存器 |
[Wn+Wm,Wk]={x,y,z,t}Rs | 单字写访存,基地址偏移量寻址,使用W地址寄存器 |
{x,y,z,t}Rs+1:s=[Un+Um,Uk] | 双字读访存,基地址偏移量寻址,使用U地址寄存器 |
{x,y,z,t}Rs+1:s=[Vn+Vm,Vk] | 双字读访存,基地址偏移量寻址,使用V地址寄存器 |
{x,y,z,t}Rs+1:s=[Wn+Wm,Wk] | 双字读访存,基地址偏移量寻址,使用W地址寄存器 |
[Un+Um,Uk]={x,y,z,t}Rs+1:s | 双字写访存,基地址偏移量寻址,使用U地址寄存器 |
[Vn+Vm,Vk]={x,y,z,t}Rs+1:s | 双字写访存,基地址偏移量寻址,使用V地址寄存器 |
[Wn+Wm,Wk]={x,y,z,t}Rs+1:s | 双字写访存,基地址偏移量寻址,使用W地址寄存器 |
矩阵模寻址类型的实现
矩阵模寻址是为适应矩阵寻址所设计的一种寻址类型。DSP片内存储器某一个存储块内的地址编排如附图3所示,该存储块由8个Bank构成,图3中的每一列表示一个Bank内的地址编排,存储块的数据端口支持同时访问8个内存单元,因此模地址边界值为8。
指令集中采用矩阵模寻址类型的访存指令如表12所示。以其中的{xRayRbzRctRd}=m[Un+=Um,Uk]为例。该指令依据地址寄存器Un、Uk的值按照矩阵模寻址类型构成访存地址,从内存中最多读出4个字,依次写入X计算核内的通用寄存器Ra、Y计算核内的通用寄存器Rb、Z计算核内的通用寄存器Rc、T计算核内的通用寄存器Rd,每一个计算核接收1个字。是否为某个计算核读取数据取决于指令中的控制信号,即,相应计算核的通用寄存器标识是否在指令中出现。
地址寄存器Un的值作为基地址。
地址寄存器Um的值作为基地址修改量。它的作用是,在寻址的同时修改基地址Un。即,在寻址的同时,Un内的值被修改为Un+Um。对Un的修改是后修改,也就是说,当前寻址用的基地址还是Un,而非Un+Um。基地址修改量定义为有符号数,当其为正时,基地址会增大;当其为负时,基地址会减小。
地址寄存器Uk的值是无符号数,作为字间偏移量。字间偏移量是指访问的多个访存单位之间的地址差值,对于单字访存指令也即以单字为访存单位访存时的单条指令,该差值以单字为单位;对于双字访存指令也即以双字为访存单位访存时的单条指令,该差值以双字为单位。
(1)对于单字访存指令
xR1yR3zR5tR7=m[U0+=U1,U2]是一个采用矩阵模寻址类型的单字访存指令,其作用是根据地址寄存器U0、U2中的值从片内存储器中依次读取4个单字分别写入X计算核内的通用寄存器R1、Y计算核内的通用寄存器R3、Z计算核内的通用寄存器R5、T计算核内的通用寄存器R7。
地址寄存器U0中的值作为基地址,设其初始值为2;地址寄存器U2中的值作为字间偏移量,其单位是单字,设其初始值为10。
下面以上述指令为例进一步说明其实际访存地址的形成过程。对于确定的访存指令,其根据指定的地址寄存器中的确定的初始值,按照图5所示矩阵模寻址类型访问存储器时,形成实际访存地址的过程可以用一个确定的顺序步骤序列来描述。
步骤1、以单字为访存单位的单条指令产生4个地址的初始值,产生该初始值的方式是:以基地址作为第一个地址值,并在其基础上依次累加字间偏移量,形成后续地址。在本例中,第一个地址的初始值是(U0),即2;第二个地址的初始值是(U0+U2),即12;第三个地址的初始值是(U0+2×U2),即22;第四个地址的初始值是(U0+3×U2),即32,以N表示地址个数,即N为4;
步骤2、“N为1”不成立,所以执行步骤3;
步骤3、设定M等于1;
步骤4、设定Q为所述模地址边界值减1后所得值的位宽,由于本例中模地址边界值为8,故位宽Q为3,则第M+1个地址也即第2个地址的低三位以十进制表示是4,第M个地址也即第1个地址的低三位以十进制表示是2,因此“第M+1个地址的低三位小于第M个地址的低三位”不成立,所以执行步骤5;
步骤5、令M=M+1,更新后的M为2;
步骤6、“M<N”成立,所以执行步骤7;
步骤7、第M+1个地址也即第3个地址的低三位以十进制表示是6,第M个地址也即第2个地址的低三位以十进制表示是4,因此“第M+1个地址的低三位小于第M个地址的低三位”不成立,所以执行步骤8;
步骤8、令M=M+1,更新后的M为3;
步骤9、“M<N”成立,所以执行步骤10;
步骤10、第M+1个地址也即第4个地址的低三位以十进制表示是0,第M个地址也即第3个地址的低三位以十进制表示是6,因此“第M+1个地址的低三位小于第M个地址的低三位”成立,即在第4个地址上越过了模地址边界,所以执行步骤11;
步骤11、将第4个地址的值减8后作为第4个地址的新值;
步骤12、令M=M+1,更新后的M为4;
步骤13、“M<N”不成立,所以执行步骤14;
步骤14、此时第1到第4个地址即为实际的访存地址,即2、12、22、24。
(2)对于双字访存指令
m[U0+=U1,U2]=xR1:0yR3:2zR5:4tR7:6是一个采用矩阵模寻址类型的双字访存指令,其作用是根据地址寄存器U0、U2中的值将X计算核内的通用寄存器对R1:0(由两个通用寄存器R1、R0组成)、Y计算核内的通用寄存器对R3:2(由两个通用寄存器R3、R2组成)、Z计算核内的通用寄存器对R5:4(由两个通用寄存器R5、R4组成)、T计算核内的通用寄存器对R7:6(由两个通用寄存器R7、R6组成)中的值写入片内存储器。
地址寄存器U0中的值作为基地址,设其初始值为6;地址寄存器U2中的值作为字间偏移量,其单位是双字,设其初始值为10。
下面以上述指令为例进一步说明其实际访存地址的形成过程。对于确定的访存指令,其根据指定的地址寄存器中的确定的初始值,按图6所示矩阵模寻址类型访问存储器时,形成实际访存地址的过程可以用一个确定的顺序步骤序列来描述。
步骤1、以双字为访存单位的单条指令产生4对地址的初始值,产生该初始值的方式是:以基地址作为第1对地址中的首地址值,并在其基础上依次累加以单字为单位的偏移量(2×U2,即20),形成后续地址对中的首地址值,以N表示地址对数,即N为4,此4对地址的初始值如下;
第1对地址(X计算核数据对的写访存地址)为
(U0)和(U0+1),即6和7;
第2对地址(Y计算核数据对的写访存地址)为
(U0+2×U2)和(U0+2×U2+1),即26和27;
第3对地址(Z计算核数据对的写访存地址)为
(U0+2×2×U2)和(U0+2×2×U2+1),即46和47;
第4对地址(T计算核数据对的写访存地址)为
(U0+3×2×U2)和(U0+3×2×U2+1),即66和67;
步骤2、“N为1”不成立,所以执行步骤3;
步骤3、设定M等于1;
步骤4、设定Q为所述模地址边界值减1后所得值的位宽,由于本例中模地址边界值为8,故位宽Q为3,则第M+1对地址也即第2对地址中首地址的低三位以十进制表示是2,第M对地址也即第1对地址中首地址的低三位以十进制表示是6,因此“第M+1对地址中首地址的低三位小于第M对地址中首地址的低三位”成立,即在第2对地址上越过了模地址边界,所以执行步骤5;
步骤5、将第2对地址到第4对地址的值均减8后作为第2对地址到第4对地址的新值,调整后的地址序列如下:
第1对地址(X计算核数据对的写访存地址)为
(U0)=6和(U0+1)=7;
第2对地址(Y计算核数据对的写访存地址)为
(U0+2×U2-8)=18和(U0+2×U2+1-8)=19;
第3对地址(Z计算核数据对的写访存地址)为
(U0+2×2×U2-8)=38和(U0+2×2×U2+1-8)=39;
第4对地址(T计算核数据对的写访存地址)为
(U0+3×2×U2-8)=58和(U0+3×2×U2+1-8)=59;
步骤6、令M=M+1,更新后的M为2;
步骤7、“M<N”成立,所以执行步骤8;
步骤8、第M+1对地址也即第3对地址中首地址的低三位以十进制表示是6,第M对地址也即第2对地址中首地址的低三位以十进制表示是2,因此“第M+1对地址中首地址的低三位小于第M对地址中首地址的低三位”不成立,所以执行步骤9;
步骤9、令M=M+1,更新后的M为3;
步骤10、“M<N”成立,所以执行步骤11;
步骤11、第M+1对地址也即第4对地址中首地址的低三位以十进制表示是2,第M对地址也即第3对地址中首地址的低三位以十进制表示是6,因此“第M+1对地址中首地址的低三位小于第M对地址中首地址的低三位”成立,即在第4对地址上越过了模地址边界,所以执行步骤12;
步骤12、将第4对地址的值减8后作为第4对地址的新值,调整后的地址序列如下:
第1对地址(X计算核数据对的写访存地址)为
(U0)=6和(U0+1)=7;
第2对地址(Y计算核数据对的写访存地址)为
(U0+2×U2-8)=18和(U0+2×U2+1-8)=19;
第3对地址(Z计算核数据对的写访存地址)为
(U0+2×2×U2-8)=38和(U0+2×2×U2+1-8)=39;
第4对地址(T计算核数据对的写访存地址)为
(U0+3×2×U2-8-8)=50和(U0+3×2×U2+1-8-8)=51;
步骤13、令M=M+1,更新后的M为4;
步骤14、“M<N”不成立,所以执行步骤15;
步骤15、此时第1到第4对地址即为实际的访存地址。
表12采用矩阵模寻址类型的访存指令
位反序寻址类型的实现
位反序寻址是为FFT运算所设计的一种寻址类型,即将某地址值的若干位前后颠倒,形成实际访存所需要的地址。考虑到FFT不同运算点数的需要,这种地址反序需要根据运算长度进行一定选择,如运算点数为2n,即存储器需要存储2n个数据,则所需地址位宽为n,此时地址反序是指把地址的第(n-1)位与第(0)位互换、地址第(n-2)位与第(1)位互换……,以此类推。如附图4所示,把地址0x002000F0的低8位反序,该地址就变成了0x0020000F;再如,把地址0x002000F0的低7位反序,它就变成了0x00200087。
指令集中采用位反序寻址类型的访存指令如表13所示。以其中的{x,y,z,t}Rs+1:s=br(C)[Un+=Um,Uk]为例。该指令依据地址寄存器Un、Uk的值按照位反序算法形成访存地址,从内存中最多读出4对字,依次写入X、Y、Z、T计算核内由第s与第s+1个寄存器组成的寄存器对,每一个计算核接收1对字。所采用的位反序算法中参与位反序的地址位数由指令中的常数C指定。是否为某个计算核读取数据取决于指令中的控制信号,即,在通用寄存器对Rs+1:s的前缀中X、Y、Z、T如果出现,则为对应计算核读取数据,否则不为对应计算核读取数据。
地址寄存器Un的值作为基地址。
地址寄存器Um的值作为基地址修改量。它的作用是,在寻址的同时修改基地址Un。即,在寻址的同时,Un内的值被修改为Un+Um。对Un的修改是后修改,也就是说,当前寻址用的基地址还是Un,而非Un+Um。基地址修改量定义为有符号数,当其为正时,基地址会增大;当其为负时,基地址会减小。
地址寄存器Uk的值是无符号数,作为字间偏移量。字间偏移量是指访问的多个访存单位之间的地址差值,对于双字访存指令,该差值以双字为单位。
采用位反序寻址类型的单条指令生成实际访存地址的步骤如下:
步骤1、数字信号处理器中的取值单元所发出的采用位反序寻址类型的单条指令产生N个访存单位的地址,且1≤N≤4,第1个访存单位的地址值为经过位反序算法处理后的基地址值,并设定M等于1;
步骤2、若M等于N,转至步骤5,否则继续执行步骤3;
步骤3、第M+1个访存单位的地址值=第M个访存单位的地址值+字间偏移量×一个访存单位中的字的个数;
步骤4、设定M=M+1,转至步骤2;
步骤5、此时第1到第N个访存单位的地址即为实际的访存地址。
在上述步骤中,采用位反序寻址类型的单条指令以双字为访存单位进行访存。
XYZTR1:0=br(6)[U0+=U1,U2]是一个采用位反序寻址类型的访存指令实例,它从片内数据存储器中读取4对字,然后依次写入X、Y、Z、T计算核内的通用寄存器对R1:0。所产生的4对地址依次是:
[反序(U0)]、[反序(U0)+1];
[反序(U0)+2×U2]、[反序(U0)+2×U2+1];
[反序(U0)+2×2×U2)]、[反序(U0)+2×2×U2+1];
[反序(U0)+3×2×U2]、[反序(U0)+3×2×U2+1]。
该指令中以常数6指定了位反序算法仅对基地址的低6位进行反序,基地址的高位保持不变。
表13采用位反序寻址类型的访存指令
{x,y,z,t}Rs+1:s=br(C)[Un+=Um,Uk] | 位反序寻址双字读访存指令,使用U地址寄存器 |
{x,y,z,t}Rs+1:s=br(C)[Vn+=Vm,Vk] | 位反序寻址双字读访存指令,使用V地址寄存器 |
{x,y,z,t}Rs+1:s=br(C)[Wn+=Wm,Wk] | 位反序寻址双字读访存指令,使用W地址寄存器 |
br(C)[Un+=Um,Uk]={x,y,z,t}Rs+1:s | 位反序寻址双字写访存指令,使用U地址寄存器 |
br(C)[Vn+=Vm,Vk]={x,y,z,t}Rs+1:s | 位反序寻址双字写访存指令,使用V地址寄存器 |
br(C)[Wn+=Wm,Wk]={x,y,z,t}Rs+1:s | 位反序寻址双字写访存指令,使用W地址寄存器 |
为提高定点运算的动态范围和精度,BWDSP100的每个计算核内设置一个块浮点标志寄存器ABFPR,用于保存该计算核内ALU指令形成的块浮点标志。该寄存器的位域定义如图7所示,其[1:0]位在DSP上电后的初始值为0。每个ABFPR都有更新使能信号,该信号来自本计算核内的寄存器ALUCR的第3位。该位为1,则更新使能信号有效;该位为0,则更新使能信号无效。若更新使能信号有效,在ALU执行某些指令时,会按照一定规则根据ALU的计算结果以及ABFPR的当前值更新ABFPR,使得其始终记录一个特定计算过程产生结果的最大增益。在上一特定计算过程的计算结果作为下一个特定计算过程的源操作数时,程序可以根据ABFPR决定是否需要对源操作数进行移位操作,这样可以有效提高定点运算的动态范围和精度。与块浮点操作相关的指令如表15。
ABFPR按照以下规则被更新:
1)根据ALU计算结果的[31:28]位,获得当前ALU指令的增益值。计算结果的[31:28]位被预留作为符号扩展位,因此应避免操作数的原始值超出数据表示范围,如通过移位操作。当其值为0b0000时,表示计算结果是正数;当其值为0b1111时表示计算结果是负数;当其值不为0b1111或0b0000时,表示发生了增益,具体的增益值计算按照表14实施,表14中的x代表二进制数0或者1;
表14增益值计算规则
计算结果[31:28]位的值 | 增益值 |
0000或1111 | 00(值为0,没有发生增益) |
0001或1110 | 01(值为1,发生1位增益) |
001x或110x | 10(值为2,发生2位增益) |
01xx或10xx | 11(值为3,发生3位增益) |
2)取同一计算核内各ALU的计算结果的增益值以及ABFPR当前值中的最大值更新ABFPR。
表15与块浮点操作相关的指令
Claims (3)
1.一种数字信号处理器寻址方法,其特征在于:数字信号处理器中的访存单元从片内存储器中读取数据,所述访存单元并将读取到的数据写入数字信号处理器的寄存器组,数字信号处理器中的运算部件以寄存器组中的数据为源操作数进行运算并将运算结果写回寄存器组,且所述访存单元将寄存器组中的运算结果写回至片内存储器中;所述访存单元以矩阵模寻址类型访问所述片内存储器中的数据;
所述矩阵模寻址类型以单字或双字为访存单位;
在以单字为访存单位访存时,数字信号处理器中的取值单元所发出的采用矩阵模寻址类型的单条指令产生N个地址,且1≤N≤4,此N个地址中的每一个地址即为对应访存单位的地址;
在以双字为访存单位访存时,数字信号处理器中的取值单元所发出的采用矩阵模寻址类型的单条指令产生N对地址,且1≤N≤4,此N对地址中的每一对地址均包括两个连续的地址,且每一对地址均以其包含的两个连续地址中的较小值作为该访存单位的地址;
所述采用矩阵模寻址类型的单条指令由基地址、字间偏移量、模地址边界值形成实际的访存地址;
所述采用矩阵模寻址类型的单条指令在形成实际访存地址时使用的基地址由数字信号处理器中的一个基地址寄存器确定,该基地址寄存器由所述采用矩阵模寻址类型的单条指令指定;
所述采用矩阵模寻址类型的单条指令在形成实际访存地址时使用的字间偏移量由数字信号处理器中的一个字间偏移量寄存器确定,该字间偏移量寄存器由所述采用矩阵模寻址类型的单条指令指定;
所述采用矩阵模寻址类型的单条指令在形成实际访存地址时使用的模地址边界值为一确定值,且模地址边界值为4或8或16。
2.根据权利要求1所述数字信号处理器寻址方法,其特征在于,所述矩阵模寻址类型在以单字为访存单位访存时,按以下步骤寻址:
步骤1、数字信号处理器中的取值单元所发出的以单字为访存单位的单条指令产生N个地址的初始值,且1≤N≤4;
步骤2、若N为1,转至步骤8,否则继续执行步骤3;
步骤3、设定M等于1;
步骤4、设定Q为所述模地址边界值减1后所得值的位宽,若第M+1个地址的低Q位小于第M个地址的低Q位,则称在第M+1个地址上越过了模地址边界,并继续执行步骤5,否则转至步骤6;
步骤5、将第M+1个地址到第N个地址的值均减去模地址边界值后作为第M+1个地址到第N个地址的新值;
步骤6、令M=M+1;
步骤7、若M<N,转至步骤4执行,否则执行步骤8;
步骤8、此时第1到第N个地址即为实际的访存地址。
3.根据权利要求1所述数字信号处理器寻址方法,其特征在于,所述矩阵模寻址类型在以双字为访存单位访存时,按以下步骤寻址:
步骤1、数字信号处理器中的取值单元所发出的以双字为访存单位的单条指令产生N对地址的初始值,且1≤N≤4;所述N对地址中的每一对地址均包括两个连续的地址,且每一对地址均以其包含的两个连续地址中的较小值作为该访存单位的地址;
步骤2、若N为1,转至步骤8,否则继续执行步骤3;
步骤3、设定M等于1;
步骤4、设定Q为所述模地址边界值减1后所得值的位宽,若第M+1对地址中较小地址值的低Q位小于第M对地址中较小地址值的低Q位,则称在第M+1对地址上越过了模地址边界,并继续执行步骤5,否则转至步骤6;
步骤5、将第M+1对地址到第N对地址的值均减去模地址边界值后作为第M+1对地址到第N对地址的新值;
步骤6、令M=M+1;
步骤7、若M<N,转至步骤4执行,否则执行步骤8;
步骤8、此时第1到第N对地址即为实际的访存地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210123104.2A CN102629191B (zh) | 2011-04-25 | 2012-04-23 | 数字信号处理器寻址方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110102682 | 2011-04-25 | ||
CN201110102682.3 | 2011-04-25 | ||
CN201210123104.2A CN102629191B (zh) | 2011-04-25 | 2012-04-23 | 数字信号处理器寻址方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102629191A CN102629191A (zh) | 2012-08-08 |
CN102629191B true CN102629191B (zh) | 2014-07-30 |
Family
ID=46587452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210123104.2A Active CN102629191B (zh) | 2011-04-25 | 2012-04-23 | 数字信号处理器寻址方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102629191B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930008B (zh) * | 2012-10-29 | 2015-10-07 | 无锡江南计算技术研究所 | 向量查表方法 |
CN103365821B (zh) * | 2013-06-06 | 2016-02-10 | 北京时代民芯科技有限公司 | 一种异构多核处理器的地址生成器 |
US10466928B2 (en) * | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
CN107894966A (zh) * | 2017-12-11 | 2018-04-10 | 上海齐网网络科技有限公司 | 一种基于流水线的块浮点模式下的fft处理器引擎原型 |
CN108037953A (zh) * | 2017-12-11 | 2018-05-15 | 上海齐网网络科技有限公司 | 一种基于流水线的块浮点模式下的dsp内部架构 |
CN113704142B (zh) * | 2021-09-02 | 2022-06-14 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1318167A (zh) * | 1998-09-14 | 2001-10-17 | 印菲内奥技术股份有限公司 | 在dsp存储器中访问复数向量的方法和装置 |
US6505288B1 (en) * | 1999-12-17 | 2003-01-07 | Samsung Electronics Co., Ltd. | Matrix operation apparatus and digital signal processor capable of performing matrix operations |
CN1529244A (zh) * | 2003-10-14 | 2004-09-15 | 中国科学院计算技术研究所 | 含有显式高速缓冲存储器的计算机微体系结构 |
-
2012
- 2012-04-23 CN CN201210123104.2A patent/CN102629191B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1318167A (zh) * | 1998-09-14 | 2001-10-17 | 印菲内奥技术股份有限公司 | 在dsp存储器中访问复数向量的方法和装置 |
US6505288B1 (en) * | 1999-12-17 | 2003-01-07 | Samsung Electronics Co., Ltd. | Matrix operation apparatus and digital signal processor capable of performing matrix operations |
CN1529244A (zh) * | 2003-10-14 | 2004-09-15 | 中国科学院计算技术研究所 | 含有显式高速缓冲存储器的计算机微体系结构 |
Also Published As
Publication number | Publication date |
---|---|
CN102629191A (zh) | 2012-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102629191B (zh) | 数字信号处理器寻址方法 | |
US10984074B2 (en) | Accelerator for sparse-dense matrix multiplication | |
US20210326405A1 (en) | Method and apparatus for distributed and cooperative computation in artificial neural networks | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN103902507B (zh) | 一种面向可编程代数处理器的矩阵乘法计算装置及方法 | |
US9268691B2 (en) | Fast mechanism for accessing 2n±1 interleaved memory system | |
CN103761215B (zh) | 基于图形处理器的矩阵转置优化方法 | |
CN102279818A (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
WO2022226721A1 (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN112446471B (zh) | 基于异构众核处理器的卷积加速方法 | |
CN113312303A (zh) | 处理器微架构、SoC芯片及低功耗智能设备 | |
CN105373367A (zh) | 支持标向量协同工作的向量simd运算结构 | |
CN109614145B (zh) | 一种处理器核心结构及数据访存方法 | |
CN104615516B (zh) | 面向GPDSP的大规模高性能Linpack测试基准实现的方法 | |
CN103235717B (zh) | 具有多态指令集体系结构的处理器 | |
CN104679690A (zh) | 用于gpdsp的基于乒乓机制支持数据乱序返回的dma矩阵转置传输方法 | |
CN101236488B (zh) | 协同分布式的处理方法及装置 | |
WO2023041002A1 (zh) | 近内存计算加速器、双列直插式内存模块以及计算设备 | |
EP3929732A1 (en) | Matrix data scatter and gather by row | |
CN105302749B (zh) | Gpdsp中面向单指令多线程模式的dma传输方法 | |
CN102622318B (zh) | 一种存储器控制电路及其控制的向量数据寻址方法 | |
CN108062282A (zh) | 一种gpdsp中dma数据合并传输方法 | |
CN102968388A (zh) | 数据布局方法及其装置 | |
CN103699517A (zh) | 一种1-d/2-d混合架构fft处理器 | |
CN108234147A (zh) | Gpdsp中基于主机计数的dma广播数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191010 Address after: 5 / F, airborne center, 38 new area, No. 199, Xiangzhang Avenue, hi tech Zone, Hefei City, Anhui Province 230000 Patentee after: Anhui core Century Technology Co., Ltd. Address before: 230088, 199, camphor Road, hi tech Zone, Anhui, Hefei Patentee before: No.38 Inst., China Electronic Sci. & Tech. Group Co. |
|
TR01 | Transfer of patent right |