多粒度并行存储系统的制作方法

文档序号:6444849阅读:340来源:国知局
专利名称:多粒度并行存储系统的制作方法
多粒度并行存储系统技术领域
本发明属于存储技术领域,主要涉及嵌入式信号处理平台中的片上存储系统,特别是支持行列多粒度并行读写的多粒度并行存储系统。
背景技术
随着集成电路工艺的发展,芯片上可集成更多的运算部件和更大容量静态存储器 SRAM容量。高速嵌入式信号处理芯片中可设计多个运算部件和多个大容量、大位宽的片上存储器,实现并行计算和并行存储。信号处理算法经常以矩阵的形式来组织输入/输出数据,并以矩阵为对象进行计算。矩阵数据一般按行或按列存放在存储器中。存储器读写端口位宽固定,并且顺序编址。当矩阵按行存放时,存储器可以一次性并行读写多个矩阵行元素,但无法一次性并行读写多个矩阵列元素;当矩阵按列存放时,存储器可以一次性并行读写多个矩阵列元素,但无法一次性并行读取多个矩阵列元素。
图1是传统的片上存储器的结构和编址方法的示意图,其中显示了当矩阵数据类型与存储单元一致时,矩阵元素在普通片上存储器中的位置。如图1所示,假定存储器读写端口 101位宽为4,即存储器100的一行存放4个元素,一次操作可并行读写4个地址连续的元素;矩阵A的尺寸为4X4,矩阵第i行,第j列元素为 」,(0彡i < 4,0彡j < 4),按行存放在地址0处。此时,存储器100可一次性并行读写4个矩阵行元素,但由于矩阵列元素分布在存储器的多个存储行104中,所以一次只能读写一个矩阵列元素,无法并行读取矩阵列元素。
在信号处理系统中,在并行读写矩阵行元素的同时常常还需要并行读写矩阵列元素,如某信号处理算法输入三个矩阵(A,B,D),需要得到两个矩阵乘法结果C = AXB,E = BXD ;同时,信号处理系统中有4个运算单元可并行计算。那么在计算C = AXB时,需要并行读取矩阵B的4个行元素;在计算E = BXD时,需要并行读取矩阵B的4个列元素。因此,在整个算法实现过程中,即需要按行并行读取矩阵B,也需要按列并行读取矩阵B。但传统存储器结构只能按行并行读取,或按列并行读取。当存储器在每个时钟周期无法并行提供所需的4个操作数时,4个运算单元中只有一个处于工作状态,这必将降低整个系统的运算效率。
同时,矩阵的数据类型多种多样,常用的数据类型有Sbit的字节类型、16bit的短字类型、32bit的整数类型和单精度浮点类型以及64bit的双精度浮点类型。而存储单元是固定一种数据类型,一个地址对应一个Sbit数据或一个地址对应一个32bit数据。为了在存储器中用最基本的存储单元来表达所有数据类型,常用的做法是用多个连续的低位宽数据类型拼接成一个高位宽数据类型。如图2所示,假定存储单元是Sbit的字节,而矩阵尺寸为4X2,数据类型为16bit的短字,按行存放,一个矩阵元素由两个连续8bit拼接而成。 在图1中,矩阵数据类型与存储单元是一致的,矩阵列的元素地址为{3,7,11,15},列地址完全离散;但在图2中,矩阵数据类型与存储元不一致,矩阵列的元素地址为{2,3,6,7,10, 11,14,15},列地址整体离散,部分连续。因此,在并行读写矩阵行、列元素时,还需要考虑矩阵元素的不同数据类型,采用不同的读写粒度。这里所述的“读写粒度”是指地址连续的存储单元的个数。
目前已有一些专利讨论如何实现矩阵行列的读写,但都没有在SRAM架构层次实现矩阵行列多粒度并行读取的功能。如美国专利us 6,084, 771B(Processor With Register File Accessible By Row Column to Achieve DataArray Transposition)、中国专利200910043343. 5(行列访问端口分离的矩阵寄存器文件)都提出了一种支持矩阵行列读取的寄存器文件,但矩阵数据仍存放在存储器中,读写矩阵行列时需要先将矩阵数据从存储器载入寄存器文件,再从寄存器文件读写矩阵行列;同时,由于寄存器文件容量非常少,每次操作只能读写整个矩阵的小部分数据;另外,它们都没有考虑如何支持不同的数据类型。美国专利 US 7, 802, 049 B2 (Random Access MemoryHave Fast Column Access)主要讨论了如何快速地从DRAM存储行中获取连续数据,但没有讨论矩阵行列的并行读取。发明内容
(一)要解决的技术问题
本发明所要解决的技术问题是克服传统的片上存储系统不能并行读写矩阵行列数据及无法跨行读写的缺点,提高存储系统和存储器的读写效率。
( 二 )技术方案
本发明提出的多粒度并行存储系统包括多个存储器、移位产生器、地址增量查找单元、地址移位器、行地址产生器和多个地址加法器,所述移位产生器用于根据外部输入的地址Addr产生移位值Shift ;所述地址增量查找单元用于根据读写粒度g产生地址移位器的输入数据;地址移位器用于将输入的数据循环右移Shift个元素后输出到所述地址加法器一个输入端;所述行地址产生器用于根据外部输入的地址Addr产生行地址RowAddr,输入到每个地址加法器的另一个输入端;所述地址加法器用于将所述两个输入端输入的数据进行无符号相加,得到存储器的读写地址,并将其输入到所述多个存储器的地址输入端。
所述存储系统还包括写移位器和读移位器,所述写移位器用于将外部输入的写数据循环右移Shift个元素后输出到所述多个存储器;所述读移位器接收来自所述多个存储器的数据,并将该数据循环左移Shift个元素后向外部输出。
所述地址移位器、写移位器、读移位器都具有一个移位控制端,所述移位产生器的输出端分别与地址移位器、写移位器、读移位器的该移位控制端相连,用于将所述移位值 Shift输入到所述地址移位器1410、写移位器、读移位器。
所述地址移位器、写移位器、读移位器由多路选择器实现。
所述存储系统的位宽为W,K = Iog2W,所述存储器支持K+1种读写粒度,所述地址增量查找单元包括多个列,且每个列与一个读写粒度相对应。
所述多个存储器构成多个存储块,每个存储块的尺寸为N,地址增量查找单元中从左至右第i列的从下至上第j个元素的值为[(j/^) X21] XD,其中“/”表示整除,D = N/ W,0 < i < K,0< j < W。
所述移位产生器产生Shift值的公式为
Shift = (Addr % W)+ (Addr/N),其中“ %”表示求模,“/” 表示整除。
所述行地址产生器产生行地址RowAddr的公式为RowAddr = Addr/W,其中“/”表示整除。
所述存储器具有一个写使能端,写使能TO直接输入到每个存储器的该写使能端。
(三)有益效果
本发明提出的多粒度并行存储系统和存储器具有多Bank的逻辑结构、支持多粒度并行读写模式和多粒度编址方法,可同时支持不同数据类型的矩阵行列数据并行读取, 从而在根本上清除信号处理算法中转置操作的要求,提高信号处理算法执行效率。


图1是传统的片上存储器的结构和编址方法的示意图,其中示出了当矩阵数据类型与存储单元一致时,矩阵元素在存储器中的位置;
图2是传统的片上存储器的结构和编址方法的另一示意图,其中示出了当矩阵数据位宽是存储单元的位宽的两倍时,矩阵元素在片上存储器中的位置;
图3是本发明提出的存储系统的存储器逻辑结构图4是本发明在不同读写粒度下存储器的编址方式和逻辑Bank划分的示意图5示出了本发明在读写粒度g = 1、读写地址=4时,存储器读写数据与存储单元的对应关系,以及数据选通路径;
图6示出了读写粒度g = 2、读写地址=4时,存储器读写数据与存储单元的对应关系,以及选通路径;
图7示出了读写粒度g = 4、读写地址=4时,存储器读写数据与存储单元的对应关系,以及选通路径;
图8示出了当一尺寸为8X5的矩阵的数据位宽与存储单元位宽一致时,该矩阵元素与存储单元的映射关系;
图9示出了当一尺寸为8X5的矩阵的数据位宽为存储单元位宽的两倍时,该矩阵元素与存储单元的映射关系;
图10示出了存储块305与物理存储单元的映射关系;
图11示出了在图10示出的映射关系下所对应的存储单元,此时读写粒度g = 1, 读写地址为4 ;
图12示出了在图10示出的映射关系下所对应的存储单元,此时读写粒度g = 2, 读写地址为4 ;
图13示出了在图10示出的映射关系下所对应的存储单元,此时读写粒度g = 4, 读写地址为4 ;
图14示出了在图10示出的映射关系下的存储器的物理结构。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
为便于说明发明内容,各个数据位宽以存储单元为单位来度量,存储单元定义为存储器的编址单位,也是存储器可读写的最小数据位宽。描述过程中出现包含“位宽为W” 的语句都需要理解成W个存储单元的比特位(bit)。如存储单元为8bit的字节类型时,读写端口位宽为4的存储器实际位宽为4X8 = 32bit。同时,所有对象从0开始,从左至右编号。另外,如前所述,“粒度”是指地址连续的存储单元的个数。在以下的描述过程中,约定以下符号
■ W 存储器读写端口位宽,必须为2的幂次方(即W为2的η次方,η为自然数);
■ K :K = Iog2W, Κ+1表示存储器支持的读写粒度种类;
■ k 存储器读写粒度参数,为自然数,且O彡k彡K,实际读写粒度为g = 2k ;
_g:g = 2k,存储器读写粒度,1彡g彡W;
■ N:—个存储块的大小。
本发明示意图中均假定W = 4,但本发明适用于W为2的幂次方的其它情况。
(一 )存储系统和存储器的逻辑结构
本发明所提出的存储系统的逻辑结构如图3所示。所述存储系统包括存储器300 和存储器读写端口 301,存储器读写端口 301的位宽为W,存储器300由W个存储块305和一个数据选通网络301构成。每个存储块305是由存储单元303构成的二维阵列,该阵列中的存储行304必须包含W个存储单元303,每个存储块一次可读写一个存储行304。
需要说明的是,存储块305只是表示了存储单元303的逻辑结构,并不是物理结构。
数据选通网络302在逻辑上根据读写地址和读写粒度从W个存储块305中选择W 个存储单元303作为读写对象。
本发明所提出的存储系统支持多种读写粒度,存储系统中每个存储块305的编址方法与图1中存储器编址一致,但在不同的读写粒度下,每个存储块305的起始地址各不相同。我们以参数k来表征不同的读写粒度,实际的读写粒度g = 2k。
图4示出了 W = 4时,存储器在不同读写粒度下每个存储块405的编址。对于读写粒度g,每g个相邻的存储块405拼接成一个逻辑Bank 406,所有逻辑Bank 406的起始地址相同;逻辑Bank 406内的存储块405起始地址前后相接,每个逻辑Bank 406的寻址范围为0 gN-Ι,整个存储器的寻址范围为0 gN-1。
存储器在进行读操作时,将读写地址和读写粒度发送给每个逻辑Bank406,每个逻辑Bank 406读取g个存储单元并通过数据选通网络302传递给存储器读写端口 301,ff/g 个逻辑Bank 406所读取的数据按从左到右的顺序拼接成位宽为W的输出数据。
存储器在进行写操作时,将存储器读写端口 301传递过来的数据拆分成g份,每份数据位宽为w/g,通过数据选通网络302将第i份数据发送给第i个逻辑Bank 406(0 ^ i <g),同时将读写地址和读写粒度发送给每个逻辑Bank 406。每个逻辑Bank 406写入g 个存储单元。
图5示出了读写粒度g = 1,读写地址为4时,存储器内部逻辑通路。数据选通网络502选通逻辑如图中所示,存储器读写端口 501的数据与各个逻辑Bank 506中地址为4, 粒度为1的存储单元503相对应。
图6示出了读写粒度g = 2,读写地址为4时,存储器内部逻辑通路。数据选通网络602选通逻辑如图中所示,存储器读写端口 601的数据与各个逻辑Bank 606中地址为4, 粒度为2的存储单元603相对应。6
图7示出了读写粒度g = 4,读写地址为4时的存储器内部逻辑通路。数据选通网络702选通逻辑如图中所示,存储器读写端口 701的数据与各个逻辑Bank 706中地址为 4,粒度为4的存储单元703相对应。
为利用本发明所提出的多粒度并行存储系统和存储器并行读写矩阵行列数据,需要将矩阵元素按一定的规律存放在存储器中。
图8示出了当一矩阵的数据位宽与存储单元位宽一致时,该矩阵元素与存储单元的映射关系。如图8所示,假定矩阵尺寸为8 X 5,矩阵第i行,第j列元素为 ^,(0 < i < 8, 0 ^ j < 5),当矩阵数据类型与存储单元一致时,按读写粒度g = 1划分逻辑Bank 806 第 i个逻辑Bank 806中连续存放(行号<%W== i)的矩阵行,其中“ % ”表示求模运算。在进行矩阵行列读写时,我们定义连续的W个行元素或W个列元素为一个数据组,如{a00,a01, a02, a03}是行元素构成的一个数据组,{aQQ,a10, a20, a30}是由列元素构成的一个数据组。整个矩阵划分成多个数据组,存储器每个时钟周期可并行读写一个数据组。此时矩阵元素在存储器中的位置如图8所示。当并行读写矩阵行数据组时,读写粒度g = W(这里假定W = 4,也可以为其它2的幂次方)。第i行的第j个数据组的读写地址为
权利要求
1.一种多粒度并行存储系统,包括多个存储器(1407)、移位产生器(1414)、地址增量查找单元(1409)、地址移位器(1410)、行地址产生器(141 和多个地址加法器(1411),其特征在于所述移位产生器(1414)用于根据外部输入的地址Addr产生移位值Siift ; 所述地址增量查找单元(1409)用于根据读写粒度g产生地址移位器(1410)的输入数据;地址移位器(1410)用于将输入的数据循环右移Siift个元素后输出到所述地址加法器(1411) 一个输入端;所述行地址产生器(1413)用于根据外部输入的地址Addr产生行地址RowAddr,输入到每个地址加法器(1411)的另一个输入端;所述地址加法器(1411)用于将所述两个输入端输入的数据进行无符号相加,得到存储器(1407)的读写地址,并将其输入到所述多个存储器(1407)的地址输入端。
2.如权利要求1所述的多粒度并行存储系统,其特征在于,所述存储系统还包括写移位器(1412)和读移位器(1408),所述写移位器(141 用于将外部输入的写数据循环右移Shift个元素后输出到所述多个存储器(1407);所述读移位器(1408)接收来自所述多个存储器(1407)的数据,并将该数据循环左移 Shift个元素后向外部输出。
3.如权利要求2所述的多粒度并行存储系统,其特征在于,所述地址移位器(1410)、写移位器(141 、读移位器(1408)都具有一个移位控制端,所述移位产生器(1414)的输出端分别与地址移位器(1410)、写移位器(1412)、读移位器(1408)的该移位控制端相连,用于将所述移位值Shift输入到所述地址移位器(1410)、写移位器(141 、读移位器1408。
4.如权利要求2所述的多粒度并行存储系统,其特征在于,所述地址移位器(1410)、写移位器(1412)、读移位器(140 由多路选择器实现。
5.如权利要求1所述的多粒度并行存储系统,其特征在于,所述存储系统的位宽为W,K =Iog2W,所述存储器(1407)支持K+1种读写粒度,所述地址增量查找单元(1409)包括多个列,且每个列与一个读写粒度相对应。
6.如权利要求5所述的多粒度并行存储系统,其特征在于,所述多个存储器(1407)构成多个存储块(1005),每个存储块(100 的尺寸为N,地址增量查找单元(1409)中从左至右第i列的从下至上第j个元素的值为[(j/2i) X21] XD,其中“/”表示整除,D = N/W, 0 < i < K,0 < j < W。
7.如权利要求6所述的多粒度并行存储系统,其特征在于,所述移位产生器产生aiift 值的公式为Shift = (Addr% W) + (Addr/N),其中 “%” 表示求模,“/” 表示整除。
8.如权利要求6所述的多粒度并行存储系统,其特征在于,所述行地址产生器产生行地址RowAddr的公式为RowAddr = Addr/W,其中“/”表示整除。
9.如权利要求1所述的多粒度并行存储系统,其特征在于,所述存储器(1407)具有一个写使能端,写使能WE直接输入到每个存储器(1407)的该写使能端。
全文摘要
本发明公开了一种多粒度并行存储系统,该存储系统包括多个存储器、移位产生器、地址增量查找单元、地址移位器、行地址产生器和多个地址加法器。所述移位产生器用于根据外部输入的地址产生移位值Shift;所述地址增量查找单元用于根据读写粒度产生地址移位器的输入数据;地址移位器用于将输入的数据循环右移Shift个元素后输出到所述地址加法器一个输入端;所述行地址产生器用于根据外部输入的地址产生行地址,输入到每个地址加法器的另一个输入端;所述地址加法器用于将所述两个输入端输入的数据进行无符号相加,得到每个存储器的读写地址,并将其输入到所述多个存储器的地址输入端。本发明提出的存储系统可同时支持不同数据类型的矩阵行列数据并行读取,从而在根本上清除信号处理算法中转置操作的要求,提高信号处理算法执行效率。
文档编号G06F12/02GK102541749SQ20111045945
公开日2012年7月4日 申请日期2011年12月31日 优先权日2011年12月31日
发明者刘子君, 张志伟, 张星, 王东琳, 薛晓军, 谢少林 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1