发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种支持连续/离散地址多数据并行访问的可配置存储器结构,以满足处理器对存储器进行高吞吐、高并行的数据访问需求,使其能够支持离散地址/连续地址的多个数据的多种访问方式。
(二)技术方案
为达到上述目的,本发明提供了一种支持连续/离散地址多数据并行访问的可配置存储器结构,该结构包括存储阵列、处理数据输入输出的控制电路、处理读写信号的控制电路、配置传输方式的控制寄存器和地址选通电路,其中:
存储阵列,用于储存数据,由存储单元按行和列排列构成,每个存储单元对应一个唯一的行列地址;
处理数据输入输出的控制电路,用于处理数据的读出和写入行为;
处理读写信号的控制电路,用于产生读写行为需要的控制信号;
配置传输方式的控制寄存器,用于设置访问存储器的方式,该方式是连续地址多数据访问或离散地址多数据访问;
地址选通电路,用于决定每个存储阵列使用哪组地址总线作为自己的地址线。
上述方案中,所述每个存储阵列有一组地址总线,该组地址总线决定需要对存储阵列中那些存储单元进行选通。
上述方案中,所述处理数据输入输出的控制电路结合所述处理读写信号的控制电路的输出信号来工作,其内部结构包括输入寄存器、写驱动器、读出放大器、输出寄存器和输出缓冲器。
上述方案中,在将输入端口中数据写入存储单元时,所述处理读写信号的控制电路产生写有效信号,打开输入寄存器写入到存储阵列数据通路,此时数据端口中的数据能够通过输入寄存器,再经过写驱动器将数据存入存储阵列;在将存储单元中数据读出到输出端口,所述处理读写信号的控制电路产生读有效信号,打开存储阵列数据读出到输出端口的数据通路,此时存储阵列中的数据能够写入到输出寄存器,再经过输出缓冲器传送到数据端口。
上述方案中,所述配置传输方式的控制寄存器包括配置寄存器和掩码寄存器,其中:
配置寄存器用来表示需要访问的多个数据的离散程度,即将多个数据设置成离散的几组,每组数据需要提供一组地址总线,组内数据的地址是连续的;
掩码寄存器用于标示访问的多个数据的有效性,它的位数和存储器端口上的数据总线组数相同,每位对应于一组数据总线;当对存储器进行数据访问时,如果与端口上某组数据总线有数据交互,相应位需要置1。
上述方案中,所述配置寄存器还用来对存储器进行逻辑上的分组,将存储器分成2k组,k为1、2、……、log2n,n为自然数,组内只能进行连续地址数据的访问。所述配置寄存器有效位数是log2n。
上述方案中,所述掩码寄存器中的一位和一个存储器块对应,其中,1表示需要从该存储器块中读取数据或者需要向该存储器块中写入数据,根据读信号线和写信号线来确定行为;0表示不需要对该存储器块进行数据访问。
上述方案中,所述地址选通电路的选通方式是由配置传输方式的控制寄存器来确定,当对n个地址离散的数据进行访问时,每个存储阵列使用不同的地址总线来选通数据;当n个地址连续的数据进行访问时,所有存储阵列使用同一个地址总线来选通数据。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明提供的这种支持连续/离散地址多数据并行访问的可配置存储器结构,通过对配置寄存器赋值,改变逻辑上的存储器的分组方式,实现了数据传输方式的多样化,进而满足了处理器对存储器进行高吞吐、高并行的数据访问需求。
2、本发明提供的这种支持连续/离散地址多数据并行访问的可配置存储器结构,满足了处理器对存储器进行高吞吐、高并行的数据访问需求,使其能够支持离散地址/连续地址的多个数据的多种访问方式。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
如图1所示,图1是本发明提供的支持连续/离散地址多数据并行访问的可配置存储器结构的示意图,该结构包括存储阵列、处理数据输入输出的控制电路、处理读写信号的控制电路、配置传输方式的控制寄存器和地址选通电路。其中:
存储阵列,主要是用来保存数据的存储单元阵列。存储单元按行和列排列起来组成存储阵列。每个存储单元对应于一个唯一的行列地址。每个存储阵列有一组地址总线,该组地址总线决定需要对存储阵列中那些存储单元进行选通。
处理数据输入输出的控制电路主要用于处理数据的读出和写入行为,该电路结合所述处理读写信号的控制电路的输出信号来工作,其内部结构和普通存储器中的处理数据输入输出控制电路类似,一般包括输入寄存器、写驱动器、读出放大器、输出寄存器和输出缓冲器。
处理读写信号的控制电路,用来产生读写行为需要的控制信号线。当要把输入端口数据写入存储单元,该电路产生写有效信号,打开输入寄存器写入到存储阵列数据通路。此时数据端口中的数据可以通过输入寄存器,再经过写驱动器把数据存入存储阵列。当要把存储单元中数据读出到输出端口,该电路产生读有效信号,打开存储阵列数据读出到输出端口的数据通路。此时存储阵列中的数据可以写入到输出寄存器,再经过输出缓冲器传送到数据端口。
配置传输方式的控制寄存器,主要用来设置访问存储器的方式,可以是连续地址多数据访问,也可以是离散地址多数据访问。如果是离散地址多数据访问,则可设置何种数据离散方式。该配置传输方式的控制寄存器包括配置(CONFIG_BIT)寄存器和掩码(MASK)寄存器,其中,CONFIG_BIT寄存器用来表示需要访问的多个数据的离散程度,即多个数据分成离散的几组,每组数据需要提供一组地址总线,组内数据的地址是连续的。MASK寄存器用于标示访问的多个数据的有效性,它的位数和存储器端口上的数据总线组数相同,每位对应于一组数据总线(即一个数据)。当对存储器进行数据访问时,如果与端口上某组数据总线有数据交互,相应位需要置1。
地址选通电路,是决定每个存储阵列使用哪组地址总线作为自己的地址线。选通方式是由配置传输方式的控制寄存器来确定。当对n个地址离散的数据进行访问时,每个存储阵列需要使用不同的地址总线来选通数据。图2描述的就是这种情况。当n个地址连续的数据进行访问时,所有存储阵列可以使用同一个地址总线来选通数据。图3描述的就是这种情况。
该存储器通过设置配置传输方式的控制寄存器来决定多数据的访问方式,从而选择合适的地址选通电路,把地址总线送到相应的存储阵列中。读写信号经过处理,产生控制读写通路的信号,来选择打开输出寄存器读出到数据端口的通路或者输入寄存器写入到存储阵列的通路。上面这两个行为协同起来就实现了连续/离散地址多数据并行加载或存储。
该存储器的接口与其他存储器相比,一样拥有地址总线、数据总线和读写信号线,但是其地址数据宽度是普通存储器的n倍。同时该存储器还需要额外的信号线对两个控制寄存器进行赋值。
假设需要在存储器内部和存储器的外部接口之间传送n个数据(按照字节寻址为n×8位,按照字寻址为n×32位),即存储器的数据端口是n组数据比特位。为了在一定功耗约束下,支持离散和连续地址数据访问,需要对存储器进行分块(bank)。方法是把存储器分成n块,然后根据存储器的空间大小,决定对应于每块需要多少根地址线,假设每块需要m根地址信号线来选择数据,那么整个存储器的空间大小为n×2m×t bit(存储器按照字节寻址t为8位,按照字寻址t为32)。
为了满足算法不同粒度并行性的需求,存储器还需要支持多数据不同离散度的访问方式。当算法需要n个地址连续的数据,那么把n个数据设置为一组,对存储器提供一个地址可实现对n个地址连续数据进行读写。当算法需要n个地址离散的数据,那么把n个数据分割为n组,对存储器提供n个地址可以对n个地址离散数据进行读写。存储器的可分的组数为2k(k为1,2,……,log2n)。本发明在存储器内设置一个CONFIG_BIT寄存器进行组数的设置,其有效位数为log2n。
根据应用需求,存储器还需要支持一个周期访问少于n个数据的方式,如n个数据中只读写低n/2个数据。为了降低功耗,需要对无数据进行读写的总线设置为高阻,需要禁止选通无数据读写的存储器块。该发明是在存储器内部设置一个MASK寄存器,通过它对数据通道的开关控制来达到此目的。
通过上面介绍的分割方式和下面要讲述的组织方式,可以实现对存储器不同分组方式的地址连续/地址离散的多数据访问。下面参照附图及对配置寄存器的配置值,来清楚地说明如何实现各种形式的数据访问方式。
首先介绍该存储器和外部单元之间的关键接口,主要有如下几个重要信号接口。除了读写信号线(RD、WR)和配置信号线(CONFIG_BIT),每个存储器块(bank)对应于每种信号线中的一组。比如bank0对应于DATA0,ADDR0及MASK中的第0位。具体含义如下:
DATA:n×t比特位,双向(按照字节寻址t等于8位,按照字寻址t等于32);
MASK:n×1比特位,对应每个bank是否需要有数据读出或者写入;
CONFIG_BIT:log2n比特位,存储器配置寄存器,决定了存储器逻辑上的分组方式,每一组内的bank公用一组地址总线来选择数据;
ADDR:n×m比特位(m是每个bank提取数据需要地址线根数),在标量、向量连续地址加载或存储操作中指定操作地址;
RD:读信号线,该信号线有效,表示需要把存储器中的数据放置在DATA数据总线上;
WR:写信号线,该信号线有效,表示需要把DATA数据总线存储到存储器中的存储单元中。
接口中的信号MASK和CONFIG_BIT对应于存储器中的两个寄存器MASK和CONFIG_BIT。这两个寄存器的示意图如下:
MASK寄存器中的一位和一个Bank对应,为1表示需要从该Bank中读取数据或者需要向该Bank中写入数据,根据RD和WR信号线来确定行为,而为0表示不需要对该bank进行数据访问。
CONFIG_BIT寄存器是用来对存储器进行逻辑上的分组,可以把存储器分成2k(k为1,2,……,log2n)组,组内只能进行连续地址数据的访问。CONFIG_BIT寄存器有效位数是log2n。因为存储器的bank是按照低位进行分割的,所以当对同一组内的连续地址进行访问时,只需要把组内bank的地址线连接到该组的地址线上就可以了。
本发明的存储器是要实现以下目标:支持连续地址/离散地址多数据并行访问,支持多数据多种分组方式的灵活数据访问。具体地说通过发给存储的控制信号线CONFIG_BIT和MASK来决定需要通过什么方式来对存储器中数据空间进行读写。
下面通过3个例子来说明实现方式:
1、如果需要对存储器中n个地址离散的数据进行访问,需要提供n组地址总线,并对MASK和CONFIG_BIT寄存器进行如下设置,这样就可以对n个存储器块(bank)选通相应的存储阵列,实现一次对n个数据的读写操作。
整个存储器的地址和数据示意图如图2所示。存储器的每个bank分别连接各自的地址和数据信号线,在每个bank内部其数据的偏移量是不同的,访问的数据地址是离散的,当然也可是连续的。如需要对n个地址离散数据中的某些数据访问,可把无数据访问的存储器块对应的MASK寄存器位赋值成0。
2、如果需要对存储器读写n个地址连续的数据,只需要发送最低bank地址,对MASK和CONFIG_BIT寄存器进行如下配置就可以实现数据的访问。对于数据加载需要RD信号有效,对于数据存储,只要把WR信号有效就可以实现相应的操作。存储器的每个bank的地址线都连接到最低位的地址线上,这样存储/加载的数据都是从低位地址算起的n个连续地址空间的数据。
整个存储器的地址和数据示意图如图3所示。存储器的每个bank都连接到最低bank对应的地址线上,由于存储器的bank是按照低位进行分割的,所以在每个bank内部其数据的偏移量是相同的,访问的数据其地址也是连续的,这样就很容易实现对n个地址连续的数据的访问操作。
3、如果需要从存储器中访问两组地址离散的n个数据,只需要提供两个组地址(每组的最低m根地址总线),并对MASK和CONFIG_BIT寄存器进行如下设置就可以实现需要的读写操作。
整个存储器的地址和数据示意图如图4所示。CONFIG_BIT寄存器值为2,表示存储器块分成相等两组。0至n/2-1存储器块(n/2-1至n-1存储器块)为一组,这些存储器块连接到同一组地址总线。这样就实现对该种组合方式的数据访问操作。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。