CN102622318B - 一种存储器控制电路及其控制的向量数据寻址方法 - Google Patents
一种存储器控制电路及其控制的向量数据寻址方法 Download PDFInfo
- Publication number
- CN102622318B CN102622318B CN201210048577.0A CN201210048577A CN102622318B CN 102622318 B CN102622318 B CN 102622318B CN 201210048577 A CN201210048577 A CN 201210048577A CN 102622318 B CN102622318 B CN 102622318B
- Authority
- CN
- China
- Prior art keywords
- storer
- address
- operand
- data
- vector data
- 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.)
- Expired - Fee Related
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种存储器控制电路及其控制的向量数据寻址方法,该方法包括以下步骤:存储器控制电路接收输入信号,该输入信号包括访存样式和地址;根据访存样式和地址生成向量数据中各个操作数在存储器中的地址;根据各个操作数在存储器中的地址依次进行存储器的访存操作。本发明节省了处理器访问存储器的时间,提高了程序的性能。
Description
技术领域
本发明涉及一种处理器技术,尤其涉及一种存储器控制电路及其控制的向量数据寻址方法。
背景技术
数字信号处理器(Digital Signal Processor,简称DSP)是一种可编程的高性能处理器,主要应用于数据密集型计算,如语音识别、图像处理等。在一些高速实时信号处理系统中,对数字信号处理器的运算速度提出了很高的要求。
目前DSP都有专门的单指令多数据流(Single Instruction MultipleData,简称SIMD)指令子集,用于加速数字信号处理的过程。SIMD指令主要是基于单指令多数据并行技术,它的核心思想是一条指令能够同时对不同的数据进行相同的操作。
图1是现有技术SIMD指令操作示意图。如图1所示,其中A、B为向量运算的源操作数,D为向量运算的目的操作数;OP为操作类型,例如加法、减法、乘法或移位等操作。
SIMD指令增加了运算的并行性,提高了处理器的性能,但是在使用SIMD指令之前需要对数据进行有效的组织,因为向量运算单元的取数和存数都是对连续的存储单元进行操作的。
例如图1中的A寄存器,假设A的数据宽度为128bit,存储器的数据宽度为128bit,最小存储单元为32bit,且处理器不支持数据不对齐操作,则A中的数据A0、A1、A2、A3需要存储在存储器中连续的四个单元(即一个数据块中)。当A中的数据不在一个数据块中时,就需要对这些数据进行组织,以便于将它们取回到一个向量寄存器中。
对数据进行有效组织是充分利用SIMD指令的关键,一般有两种方式:软件方式和硬件方式,其中软件方式是采用特定的算法对存储器中的数据进行重新排列,以方便向量运算;硬件方式是采用特殊的寻址方式来对数据进行组织。
目前为了充分利用SIMD指令的并行性,主要采用软件的方式来对数据进行组织,但是这种方式降低了程序的性能,因为数据的组织过程增加了指令运行的额外开销。
例如DSP中的快速傅立叶变换(Fast Fourier Transform,简称FFT)算法,它的数据点在进行快速傅里叶变换时需要进行倒序处理,如图2所示,为了利用SIMD指令实现FFT算法,待处理的数据需要组织成图2所示的形式。为了装载一个向量寄存器(一个数据块),存储器需要4次读操作和4次写操作来对数据进行组织,DSP中的4次访存操作模型如图3所示。
发明内容
本发明的目的是通过硬件的方式对存储器中的数据进行有效的组织。
为实现上述目的,一方面,本发明提供了一种存储器控制电路控制的向量数据寻址方法,该方法包括以下步骤:存储器控制电路接收输入信号,该输入信号包括访存样式和地址;根据访存样式和地址生成向量数据中各个操作数在存储器中的地址;根据各个操作数在存储器中的地址依次进行存储器的访存操作。
另一方面,本发明提供了一种存储器控制电路,该电路包括:信号接收模块、地址生成状态控制器和访存控制模块,其中信号接收模块用于接收输入信号,该输入信号包括访存样式和地址;地址生成状态控制器用于根据访存样式和地址生成向量数据中各个操作数在存储器的地址;访存控制模块用于根据各个操作数在存储器中的地址依次进行存储器的访存操作。
根据本发明存储器控制电路及其控制的向量数据寻址方法,节省了处理器访问存储器的时间,提高了程序的性能。
附图说明
通过以下结合附图以举例方式对本发明的实施方式进行详细描述后,本发明的其他特征、特点和优点将会更加明显。
图1为现有技术SIMD指令操作示意图;
图2为16点FFT中数据的倒序处理示意图;
图3为现有技术数字信号处理器的访存模型;
图4为本发明实施例存储器控制电路示意结构图;
图5为本发明实施例存储器控制电路控制的向量数据寻址方法流程图;
图6为本发明实施例基于16点FFT样式的读操作示意图;
图7为本发明实施例基于16点FFT样式的写操作示意图;
图8为本发明实施例数字信号处理器的访存模型。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明实施例采用基于样式的向量数据寻址方法,通过硬件的方式对存储器中的数据进行有效的组织。
图4为本发明实施例存储器控制电路示意图。如图4所示,存储器控制电路30包括信号接收模块31、地址生成状态控制器32和访存控制模块33。
信号接收模块31用于接收输入信号,该输入信号包括访存样式(pattern)、地址(address)、读/写控制信号和写入向量数据。
地址生成状态控制器32用于根据信号接收模块31接收的访存样式和地址生成向量数据中各个操作数在存储器40中的地址(如图4中的addr0-addrN-1)。地址生成状态控制器32包括状态机,该状态机中的每个状态对应生成一个操作数的地址。
访存控制模块33用于根据地址生成状态控制器32生成的各个操作数在存储器中的地址依次进行存储器的访存操作。
在一个例子中,存储器控制电路30对存储器40进行读操作,读操作的步骤如下:地址生成状态控制器32根据信号接收模块31接收的访存样式和地址生成向量数据中各个操作数在存储器40中的地址;访存控制模块33根据上述各个操作数在存储器40中的地址依次从存储器40中读取各个操作数拼成读出向量数据并输出。
在另一个例子中,存储器控制电路30对存储器40进行写操作,写操作的步骤如下:地址生成状态控制器32根据信号接收模块31接收的访存样式和地址生成写入向量数据中各个操作数在存储器40中的地址;访存控制模块33根据上述各个操作数在存储器40中的地址依次写入到存储器40中。
本发明实施例通过硬件的方式来对存储器中的数据进行有效的组织,向量数据中各个操作数的地址通过访存地址基于样式的变换获得,节省了处理器访问存储器的时间,提高了程序的性能。
图5为本发明实施存储器控制电路控制的向量数据寻址方法流程图。如图5所示,该方法包括步骤501-503。
在步骤501,存储器控制电路接收输入信号,所述输入信号包括访存样式和地址。
在本发明实施例中,存储器控制电路接收外部输入信号,上述输入信号包括访存样式、地址、读/写控制和写入向量数据。
访存样式实际上是一种映射方式,可以用数学符号标记为f(·)。其映射的定义为:假设X、Y是两个非空集合,如果存在一个法则f,使得对X中每个元素x,按法则f,在Y中有唯一确定的元素y与之对应,则称f为从X到Y的映射,记作:f:X→Y,其中y称为元素x的(在映射f下)的像,并记作f(x),即y=f(x)。
在一个例子中,y=f(x)=x2+x+1,则元素x和元素y的映射关系如表1所示。
表1
x | y |
1 | 3 |
2 | 7 |
3 | 13 |
i | i2+i+1 |
在步骤502,根据访存样式和地址生成向量数据中各个操作数在存储器中的地址。
具体地,存储器控制电路根据输入的访存样式和地址生成向量数据中各个操作数在存储器中的地址。如图4所示,向量数据中各个操作数在存储器的地址(addr0、addr1、......addrN-1)是通过以下访存样式生成:
addr0=f(address);
addr1=f(address+1);
addr2=f(address+2);
addri=f(address+i);
addrN-1=f(address+(N一1))。
其中,“addr0、addr1、......addrN-1”是向量数据中各个操作数在存储器中的地址,address是由外部输入的地址,address+1是指address的下一个连续的地址,N是指向量数据中操作数的个数。
在步骤503,根据各个操作数在存储器中的地址依次进行存储器的访存操作。
具体地,存储器控制电路根据各个操作数在存储器中的地址依次进行存储器的访存操作。例如,当存储器控制电路对存储器进行读操作时,存储器控制电路根据向量数据中各个操作数在存储器中的地址读取数据,并将读取的数据拼成读出向量数据并输出;当存储器控制电路对存储器进行写操作时,存储器控制电路根据写入向量数据中各个操作数在存储中的地址依次写入到存储器中。
以下有关向量运算单元针对存储器的读/写操作进行描述:
假设数据宽度为N*M,其中N为向量数据中的操作数个数,M为每个操作数的宽度,存储器(单端口)的带宽为N*M,最小存储单元数据宽度为M,读取或写入数据的时间为处理器的一个时钟周期T。
1、向量运算单元对存储器进行读操作
当向量运算单元要读取的N个数据(向量数据中的各个操作数)在存储器的一个数据块中时,则访存样式为连续,存储器控制电路只需要对存储器进行一次读操作,读取向量数据的时间为T;
当向量运算单元要读取的N个数据分散在n(n≤N)个数据块中时,但是这些数据的地址之间有一定的特征关系,也即输入地址基于样式的变换能够得到这N个数据的地址信息,存储器控制电路需要对存储器进行n次读操作,将这n次读回来的数据拼凑在一起即可以得到所需要的向量数据,此时读取向量数据的时间为n*T。
2、向量运算单元对存储器进行写操作
当向量运算单元要写入的向量数据处于存储器的一个数据块中时,则访存样式为连续,存储器控制电路只需要对存储器进行一次写操作,写入向量数据的时间为T;
当向量运算单元要写入的向量数据分散在n(n≤N)个数据块中,但这些数据的地址之间有一定的特征关系,也即输入地址基于样式的变换能够得到这N个数据的地址信息,存储器控制电路需要对存储器进行n次写操作,此时写入这个向量数据的时间为n*T。
以下通过图6和图7来说明本发明实施例向量运算单元针对存储器的读/写操作的具体应用,通过基于样式的向量数据寻址方法来实现16点输入FFT数据地址的倒位序排序,即实现如图2所示的功能。假设16点数据顺序存储在存储器中,数据宽度为32bit,存储器带宽为128bit,最小存储单元为32bit,向量运算单元的数据宽度为32bit*4。16点FFT的数据地址可以用4bit宽(b3b2b1b0)的数据来表示,新生成地址A的表达式如下所示,倒位序排序的结果如表2所示:
A=f(b3b2b1b0)=b0b1b2b3
表2
图6为本发明实施例基于16点FFT样式的读操作示意图。
首先,由向量运算单元向存储器控制电路发送一条基于16点FFT样式的向量数据读操作指令,后发送一条顺序写操作指令。
指令格式为:load_vector Ma,[Aa]<fft_pattern>
Store_vector[Ab],Ma
其中,Ma为128bit宽度的向量寄存器,Aa、Ab为32bit宽度的地址寄存器,fft_pattern为FFT样式。运行上述两条指令将可以完成四个数据点的倒位序排序,其中输入地址address基于FFT样式fft_pattern分别生成地址addr0、addr1、addr2和addr3。存储器控制电路分别对存储器的上述四个地址进行读操作,得到数据data0、data1、data2和data3,将读出的上述四个数据拼凑在一起即可得到读出向量数据Ma,然后将Ma存储到存储器指定的地址。
其中,fft_pattern=f(·),用于实现地址的倒位序变址处理,下面是第一次操作时各个变量的值:
address=32’h0;
addr0=f(32’h0)=32’h0;data0={96’h0,x(0)};
addr1=f(32’h1)=32’h8;data1={96’h0,x(8)};
addr2=f(32’h2)=32’h4;data2={96’h0,x(4)};
addr3=f(32’h3)=32’hc;data3={96’h0,x(12)};
Ma={x(12),x(4),x(8),x(0)}。
其中的32’h0是指数据宽度为32比特,数值为0,采用十六进制的方式表示。由于32’h1的倒序地址为32’h8,因此addr1=f(32’h1)=32’h8。
图7为本发明实施例基于16点FFT样式的写操作示意图。
首先,由向量运算单元向存储器控制电路发送一条读操作命令,后发送一条基于16点FFT样式的向量数据写操作指令。
指令格式为:load_vector Ma,[Aa]
Store_vector[Ab]<fft_pattern>,Ma
其中,Ma为128bit宽度的向量寄存器,Aa、Ab为32bit宽度的地址寄存器,fft_pattern为FFT样式。运行上述两条指令将可以完成四个数据点的倒位序排序,其中输入地址address基于FFT样式fft_pattern分别生成地址addr0、addr1、addr2和addr3。存储器控制电路分别将数据data0、data1、data2和data3写入存储器的上述四个地址即可以完成四个数据点的倒位序排序。向量数据Ma通过从指定的存储器地址读取。
其中,fft_pattern=f(·),用于实现地址的倒位序变址处理,下面是第一次操作时各个变量的值:
Ma={x(3),x(2),x(1),x(0)}
address=32’h10;
addr0=f(address-offset)+offset=32’h10;data0={96’h0,x(0)};
addr1=f(address+1-offset)+offset=32’h18;data1={96’h0,x(1)};
addr2=f(address+2-offset)+offset=32’h14;data2={96’h0,x(2)};
addr3=f(address+3-offset)+offset=32’h1c;data3={96’h0,x(3)};
其中offset=32’h10。
本发明实施例采用基于样式的向量寻址方法,通过硬件的方式来对存储器中的数据进行有效的组织,以便于向量运算单元的使用。当要读取或写入的向量数据各个操作数存储在存储器的多个数据块时,只需要进行一次访存操作就可以完成对存储器的访问,其访存模型参见如图8所示。本发明实施例节省了存储器访问的时间,提高了程序的性能。
显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明所要求保护的范围仅由所述的权利要求书进行限定。
Claims (5)
1.一种存储器控制电路控制的向量数据寻址方法,其特征在于,所述方法包括步骤:
存储器控制电路接收输入信号,所述输入信号包括访存样式和地址;
根据所述访存样式和所述地址生成向量数据中各个操作数在存储器中的地址;
根据所述各个操作数在存储器中的地址依次进行存储器的访存操作;
将从存储器中读取的各个操作数拼成读出向量数据并输出;
所述输入信号还包括写入向量数据,所述存储器控制电路根据所述写入向量数据中各个操作数在存储器中的地址依次写入到存储器中;
所述访存样式为一种映射方式,用数学符号标记为f(·)。
2.根据权利要求1所述的方法,其特征在于,当要读取的所述各个操作数存储在存储器的多个数据块中时,向量运算单元只需要进行一次读操作。
3.根据权利要求1所述的方法,其特征在于,当所述写入向量数据中各个操作数处于存储器的多个数据块中时,向量运算单元只需要进行一次写操作。
4.一种存储器控制电路,其特征在于,所述存储器控制电路包括:
信号接收模块,用于接收输入信号,所述输入信号包括访存样式和地址;
地址生成状态控制器,用于根据访存样式和地址生成向量数据中各个操作数在存储器的地址;
访存控制模块,用于根据各个操作数在存储器中的地址依次进行存储器的访存操作;
所述访存控制模块将从存储器中读取的各个操作数拼成读出向量数据并输出;
所述信号接收模块还用于接收写入向量数据,存储器控制电路根据所述写入向量数据中各个操作数在存储器中的地址依次写入到存储器中;
所述访存样式为一种映射方式,用数学符号标记为f(·)。
5.根据权利要求4所述的电路,其特征在于,所述地址生成状态控制器包括状态机,所述状态机中的每个状态对应生成一个操作数的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210048577.0A CN102622318B (zh) | 2012-02-27 | 2012-02-27 | 一种存储器控制电路及其控制的向量数据寻址方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210048577.0A CN102622318B (zh) | 2012-02-27 | 2012-02-27 | 一种存储器控制电路及其控制的向量数据寻址方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102622318A CN102622318A (zh) | 2012-08-01 |
CN102622318B true CN102622318B (zh) | 2014-09-10 |
Family
ID=46562242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210048577.0A Expired - Fee Related CN102622318B (zh) | 2012-02-27 | 2012-02-27 | 一种存储器控制电路及其控制的向量数据寻址方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102622318B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345448B (zh) * | 2013-07-10 | 2016-01-06 | 广西科技大学 | 寻址与存储一体化两读出一写入存储控制器 |
CN114036096B (zh) * | 2021-11-04 | 2024-05-03 | 珠海一微半导体股份有限公司 | 一种基于总线接口的读控制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
CN101339546A (zh) * | 2008-08-07 | 2009-01-07 | 那微微电子科技(上海)有限公司 | 地址映射方法和操作数并行的fft处理系统 |
CN102279818A (zh) * | 2011-07-28 | 2011-12-14 | 中国人民解放军国防科学技术大学 | 支持有限共享的向量数据访存控制方法及向量存储器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000137674A (ja) * | 1998-10-30 | 2000-05-16 | Nec Corp | バースト転送メモリマップトレジスタ |
US20110087859A1 (en) * | 2002-02-04 | 2011-04-14 | Mimar Tibet | System cycle loading and storing of misaligned vector elements in a simd processor |
-
2012
- 2012-02-27 CN CN201210048577.0A patent/CN102622318B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
CN101339546A (zh) * | 2008-08-07 | 2009-01-07 | 那微微电子科技(上海)有限公司 | 地址映射方法和操作数并行的fft处理系统 |
CN102279818A (zh) * | 2011-07-28 | 2011-12-14 | 中国人民解放军国防科学技术大学 | 支持有限共享的向量数据访存控制方法及向量存储器 |
Non-Patent Citations (3)
Title |
---|
JP特开2000-137674A 2000.05.16 |
基于Intel SIMD指令的二维FFT优化算法;李成军等;《计算机工程与应用》;20071231;第43卷(第5期);第41-44页 * |
李成军等.基于Intel SIMD指令的二维FFT优化算法.《计算机工程与应用》.2007,第43卷(第5期), |
Also Published As
Publication number | Publication date |
---|---|
CN102622318A (zh) | 2012-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8094157B1 (en) | Performing an occurence count of radices | |
CN102279818B (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN108388527B (zh) | 直接存储器存取引擎及其方法 | |
US7689541B1 (en) | Reordering data using a series of offsets | |
US7624107B1 (en) | Radix sort algorithm for graphics processing units | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US11705207B2 (en) | Processor in non-volatile storage memory | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
WO2018148918A1 (zh) | 存储设备、芯片及存储设备的控制方法 | |
CN102622318B (zh) | 一种存储器控制电路及其控制的向量数据寻址方法 | |
US7774583B1 (en) | Processing bypass register file system and method | |
CN111158757B (zh) | 并行存取装置和方法以及芯片 | |
US9268744B2 (en) | Parallel bit reversal devices and methods | |
CN101236488B (zh) | 协同分布式的处理方法及装置 | |
CN101398784A (zh) | 一种二维寻址方法及装置 | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
CN110018847B (zh) | 可配置寄存器及基于可配置寄存器的数据存取方法 | |
CN102411557A (zh) | 多粒度并行fft计算装置 | |
CN103493039A (zh) | 数据处理方法和相关装置 | |
CN102200961B (zh) | 一种动态可重构处理器内子单元的扩展方法 | |
CN113448624A (zh) | 数据存取方法及装置、系统、ai加速器 | |
US11500632B2 (en) | Processor device for executing SIMD instructions | |
CN111368250B (zh) | 基于傅里叶变换/逆变换的数据处理系统、方法及设备 | |
CN112486904A (zh) | 可重构处理单元阵列的寄存器堆设计方法及装置 | |
CN106649136B (zh) | 一种数据存储方法和存储装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140910 Termination date: 20200227 |
|
CF01 | Termination of patent right due to non-payment of annual fee |