存储器控制器及存储器访问控制方法

文档序号:6340052阅读:561来源:国知局
专利名称:存储器控制器及存储器访问控制方法
技术领域
本发明涉及存储器的控制技术领域,特别地涉及存储器控制器及存储器访问控制方法。
背景技术
DDR (Double Data Rate,双倍速率)SDRAM (Synchronous Dynamic Random Access Memory,同步动态随机存储器)是使用双倍数据速率的结构来获得高性能的存储器。DDR SDRAM在一个时钟周期内传输两次数据,即它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。对于一次DDR SDRAM访问操作(写操作或读操作),在芯片的内部,每一个时钟周期执行一个位宽为2η的数据传输。而在DDR SDRAM器件的管脚上则每半个时钟周期执行一次η位的数据传输。因此,DDR SDRAM的总线带宽为工作频率X数据总线宽度Χ2。可见,在相同的数据总线宽度和工作频率下,DDR SDRAM的总线带宽比SDR SDRAM的总线带宽提高了一倍。目前的DDR存储器具有速度快、单颗粒存储量大的特点。但是,DDR存储器的操作需要遵从一定的顺序,比如需要按时刷新、读写一个单元的数据需要进行激活以及预充电、连续读写的操作需要在一定的地址范围内进行、跨行和 BANK (即存储器的分块)需要时间开销、读写数据需要预先将地址和命令传送等待存储器准备好等,这些都需要消耗额外的时钟开销。额外的时钟开销使得存储器的读、写速率变慢,从而降低了存储器的性能。

发明内容
为了解决上述问题中的至少一个,根据本发明的一方面,提供一种存储器控制器, 其可以降低存储器的额外的时钟开销。所述存储器控制器包括
地址缓存模块,用于缓存用于对存储器所进行的多个读操作或多个写操作的存储器地址;以及
突发控制模块,用于
根据缓存在所述地址缓存模块中的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中所述一个突发读操作或所述多个突发读操作中的每个突发读操作包括所述多个读操作中的两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的,或者
根据缓存在所述地址缓存模块中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中所述一个突发写操作或所述多个突发写操作中的每个突发写操作包括所述多个写操作中的两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。对于针对多个存储器地址的一组读操作或一组写操作,如果这多个存储器地址不是连续的,则无法对这多个存储器地址进行连续的读操作或写操作,而必须增加额外的跨行时钟开销(当行地址不连续时)。本发明的上述存储器控制器可以将与这多个存储器地址相对应的多个读操作或多个写操作重新进行组合,以形成一个或多个突发读操作或一个或多个突发写操作,其中每个突发读操作或每个突发写操作所针对的存储地址是连续的。由于地址是连续的,因此可以连续地进行每个突发读操作中的多个读操作,或者可以连续地进行或每个突发写操作中的多个写操作,从而降低或消除了跨行时钟开销。优选地,所述突发控制模块包括
地址识别模块,用于检测所述地址缓存模块中的存储器地址,并识别用于所述多个读操作或所述多个写操作的存储器地址中连续的存储器地址;以及
操作重组模块,用于将所述多个读操作中针对所识别的连续的存储器地址的读操作组合在一起以形成所述一个或多个突发读操作,或者用于将所述多个写操作中针对所识别的连续的存储器地址的写操作组合在一起以形成所述一个或多个突发写操作。优选地,所述操作重组模块包括地址重组模块,用于调整存储器地址在地址缓存模块中的存储位置以将所识别的连续的存储器地址相邻地存储在所述地址缓存模块中。优选地,所述存储器控制器还包括
写数据缓存模块,用于缓存用于所述多个写操作的要写入存储器的数据,所述数据包括多个写数据单元,所述多个写数据单元与用于所述多个写操作的存储器地址是相对应的;
其中所述操作重组模块还包括数据重组模块,用于与所述调整存储器地址在地址缓存模块中的存储位置相一致地调整相对应的写数据单元在所述写数据缓存模块中的存储位置,以使得每个突发写操作所针对的写数据单元被相邻地存储在所述写数据缓存模块中。优选地,所述地址缓存模块包括地址转置模块和转置地址缓存模块,所述地址转置模块用于将与要写入存储器的所述数据对应的源地址变换成转置后的存储器地址并将转置后的存储器地址输入到转置地址缓存模块中进行缓存;以及
其中,要写入存储器的所述数据为矩阵数据,所述矩阵数据将被转置存储到存储器中, 其中所述突发控制模块根据所述转置后的存储器地址对针对所述矩阵数据的所述多个写操作进行组合以形成所述一个或多个突发写操作。优选地,所述存储器控制器还包括
PHY (物理层)模块,其具有数据输入端和地址输入端,所述数据输入端与所述写数据缓存模块的输出端相连,所述地址输入端与所述地址缓存模块的输出端相连,
其中,所述PHY模块将所述写数据缓存模块输出的写数据单元与所述地址缓存模块输出的调整存储位置后的存储器地址对齐,然后将每个突发写操作所针对的写数据单元连续地写入所述存储器。根据本发明的另一方面,提供一种存储器访问控制方法,该方法包括
将用于对存储器所进行的多个读操作或多个写操作的存储器地址缓存在地址缓存模块中;以及
突发控制步骤根据缓存在所述地址缓存模块中的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中所述一个突发读操作或所述多个突发读操作中的每个突发读操作包括所述多个读操作中的两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的,或者根据缓存在所述地址缓存模块中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中所述一个突发写操作或所述多个突发写操作中的每个突发写操作包括所述多个写操作中的两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。优选地,所述突发控制步骤包括
检测所述地址缓存模块中的存储器地址,并识别用于所述多个读操作或所述多个写操作的存储器地址中连续的存储器地址;以及
操作重组步骤将所述多个读操作中针对所识别的连续的存储器地址的读操作组合在一起以形成所述一个或多个突发读操作,或者将所述多个写操作中针对所识别的连续的存储器地址的写操作组合在一起以形成所述一个或多个突发写操作。优选地,所述操作重组步骤包括调整存储器地址在地址缓存模块中的存储位置以将所识别的连续的存储器地址相邻地存储在所述地址缓存模块中。优选地,将所识别的连续的存储器地址按正序相邻地存储在所述地址缓存模块中。优选地,所述存储器访问控制方法还包括
缓存用于所述多个写操作的要写入存储器的数据,所述数据包括多个写数据单元,所述多个写数据单元与用于所述多个写操作的存储器地址是相对应的;
其中所述操作重组步骤还包括与所述调整存储器地址在地址缓存模块中的存储位置相一致地调整相对应的写数据单元在所述写数据缓存模块中的存储位置,以使得每个突发写操作所针对的写数据单元被相邻地存储在所述写数据缓存模块中。优选地,将存储器地址缓存在地址缓存模块中包括将与要写入存储器的所述数据对应的源地址变换成转置后的存储器地址并将转置后的存储器地址输入到转置地址缓存模块中进行缓存;以及
其中,要写入存储器的所述数据为矩阵数据,所述矩阵数据将被转置存储到存储器中, 其中在所述突发控制步骤中根据所述转置后的存储器地址对针对所述矩阵数据的所述多个写操作进行组合以形成所述一个或多个突发写操作。优选地,所述存储器访问控制方法还包括将所述写数据缓存模块输出的写数据单元与所述地址缓存模块输出的调整存储位置后的存储器地址对齐,然后将每个突发写操作所针对的写数据单元连续地写入所述存储器。


参照结合附图的以下详细描述,本发明实施例的各种特征可以更容易理解。贯穿附图,相同的附图标记表示相同或相似的元素,并且在附图中
图1示出了矩阵转置操作的示意图2示出了根据本发明的原理的DDR SDRAM存储器控制器200的示意性框图; 图3示出了根据本发明的优选实施例的DDR SDRAM存储器控制器300的示意性框图; 图4示出了根据本发明实施例的对突发长度X突发长度的矩阵数据块的写操作过程的示意图。
具体实施方式
在优选实施例的以下详细说明中,对附图进行参考,其构成本说明书的一部分,并且其中以举例说明的方式示出可以实施本发明的特定实施例。应理解的是,可以利用其它实施例,或者可以在不脱离本发明的范围的情况下进行结构上的或逻辑上的修改。因此,不应在限制性的意义上理解以下详细说明。在下文中,以DDR SDRAM存储器对矩阵数据的转置存储为例说明本发明的原理。但本领域技术人员应当理解的是,本发明还适用于对非矩阵数据的存储操作,并且DDR SDRAM 也只是存在跨行时钟开销的存储器的一个示例。矩阵是人们所熟知的一种计算机数据结构。在工程计算、游戏或图像处理等领域中,矩阵的转置运算被广泛地使用。由双倍速率同步动态随机存取存储器颗粒构成的存储器已被广泛应用在许多阵列信号处理系统中。这类存储器的优点是存储容量大,并且可以在一个时钟周期的上升沿和下降沿分别完成一次读或者写操作。但是DDR SDRAM颗粒的读写需要遵从其特定的操作颗粒需要定时刷新;读写操作需要首先打开行;仅能在一行内完成连续的读或者写操作,不能够支持任意存储位置的随机读写;读写操作完成后需要关闭打开的行,并对其执行预充电操作。这些开销导致了 DDR SDRAM存储系统在数据以矩阵方式组织的阵列信号处理应用中,特别是在需要完成转置操作的应用中不能发挥DDR SDRAM 可以在一个时钟周期内完成2次读或者写操作的特性。图1示出了矩阵转置操作的示意图。如图1所示,矩阵数据A为m行Xm列的矩阵,其数据元素为A…其中i表示行数,j表示列数。在对矩阵A进行转置操作后所得到的矩阵A’还是由原来矩阵A的各数据元素组成,但各数据元素的位置与原来相比发生了变化。 在矩阵A’中,原来处于第i行第j列的数据元素现在处于第j行第i列,即行数和列数发生了对调。例如,如图1中用阴影线示出的数据元素A21,其在转置前位于第2行第1列,但在转置后变成位于第1行第2列。假设要将矩阵数据A转置存储到一 DDR SDRAM存储器中。首先按行读取矩阵A的第一行数据元素An,A12,…,Alm,然后将该行数据元素存储为列数据元素,对其它行的数据元素执行同样的操作。这样,就完成了矩阵数据的转置存储。在将行数据元素存储为列数据元素时,由于要将各列数据元素分别存储于存储器的不同行中,因此要进行跨行写入。 从而,无法进行连续的写操作(因为不在同一行中),而增加了跨行的时钟开销。由此可见, 在进行矩阵数据的转置存储时,无法很好地利用DDR SDRAM可以在一个时钟周期内完成2 次读或者写操作的优点。另外,在对非矩阵数据进行读(写)操作时,如果多个读(写)操作所针对的地址是随机排列的,则多个读(写)操作所针对的地址可能不是连续的,因此也可能无法进行连续的读(写)操作,从而增加额外的时钟开销。根据本发明的DDR SDRAM存储器控制器致力于节省或完全消除上述额外的时钟开销。图2示出了根据本发明的原理的DDR SDRAM存储器控制器200的示意性框图。存储器控制器200包括地址缓存模块201和突发控制模块203。地址缓存模块201用于缓存要进行操作(包括写操作和读操作)的存储器(未示出)地址。优选地,地址缓存模块201为高速缓存模块。突发控制模块203用于对存储器(未示出)的多个读操作或多个写操作进行控制以使得这多个读/写操作形成一个或多个突发操作。
具体地,突发控制模块203执行以下操作根据缓存在地址缓存模块201中的用于多个读操作的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中每个突发读操作包括两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的;或者根据缓存在地址缓存模块201中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中每个突发写操作包括两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。由于每个突发读/写操作所对应的存储器地址是连续的,因此进行的是连续的读 /写操作。从而可以很好地利用DDR SDRAM可以在一个时钟周期内完成2次读/写操作的优点。在本文中,上述及下文中将要提及的“存储器地址是连续的”或“地址是连续的” 是指多个读操作(或多个写操作)所针对的存储器地址是同一行中相邻的连续存储器地址, 从而可以进行连续的读操作(或连续的写操作),从而节省跨行时钟开销。例如,在本发明中,当一次突发写操作在进行时,该突发写操作所针对的多个地址是同行中连续的存储器地址。不同行的地址不能视为是相邻的,针对不同行的地址的操作不能合并为一次突发操作。本文中所提到的“连续的读操作”(或“连续的写操作”)是指当对同一行中相邻的存储器地址进行多个读操作(或多个写操作)时,这多个读操作(或这多个写操作)可以连续进行,各个读操作(或各个写操作)之间没有跨行时钟开销。图2是简单地示出本发明的原理的示意图。接下来将参考图3和图4来详细地说明本发明。图3示出了根据本发明的优选实施例的DDR SDRAM存储器控制器300的示意性框图。图4示出了根据本发明实施例的对突发长度X突发长度的矩阵数据块的写操作过程的示意图。在本实施例中,存储器控制器300的地址缓存模块可以包括两部分写地址缓存模块(图3中虚线所框住的部分)和读地址缓存模块307。优选地,写地址缓存模块可以包括两部分源地址缓存模块301和转置地址缓存模块302。源地址缓存模块301用于对与要存储到存储器的数据对应的源地址进行缓存。转置地址缓存模块302对经过地址转置模块303 (稍后将详述)处理后的转置地址进行缓存。读地址缓存模块307对用于对存储器 100的读操作的存储器地址进行缓存。优选地,源地址缓存模块301、转置地址缓存模块302 和读地址缓存模块307为高速缓存模块,并且均由标志部分、数据部分和控制部分组成。其中,标志部分包括满标志、空标志、半满标志,用来标志当前写入未被读出的数据占相应缓冲模块容量的状态。数据部分包括有效地址的存储队列,地址以先进先出的顺序通过。其控制部分包括读地址指针、读数据有效标志、写地址指针、写数据有效标志。如以下所详述的那样,转置地址缓存模块302支持地址队列的重新排序 (Re-order )的模式。当输入的数据存在相近地址(比如相同行不同列的地址)时,突发控制模块305 (参见图3并在下文中被详细描述)将相同的写操作的对相近地址的空间操作重新排列组成一个新的突发操作序列(将相近的地址进行拼凑从而得到相邻的多个地址,进而可以进行连续操作)。利用DDR的突发操作的高效性(针对相同的数据操作,突发越多操作越高效)对操作进行重新排序,以提高数据的操作吞吐量。这里的转置地址缓存模块302 可以在突发控制模块305的控制下支持将这些地址分组。在该优选实施例中,要存储到存储器100的数据为矩阵数据,要将该矩阵数据转置存储到存储器100中。如上所述,对矩阵数据的转置存储就是指将读取的矩阵数据的行元素存储为列元素。在本发明中,这是通过对地址进行转置运算来实现的。存储器控制器 300包括地址转置模块303,其对源地址缓存模块301中所存储的源地址进行转置运算以得到转置地址。所述转置运算是指将地址的行和列进行对调。例如,如果源地址为第i行第j 列,则经过转置运算后的转置地址为第j行第i列,从而将该源地址所对应的数据Aij存储到第j行第i列。图3中的存储器控制器300还包括写数据缓存模块304,其用于缓存要转置存储到存储器100的数据。写数据缓存模块304也由标志部分、数据部分和控制部分组成。其中,标志部分包括满标志、空标志、半满标志,用来标志当前写入未被读出的数据占相应缓冲模块容量的状态。数据部分包括要写入数据的存储队列,数据以先进先出的顺序通过。其控制部分包括读地址指针、读数据有效标志、写地址指针、写数据有效标志。写数据缓存模块304也支持数据单元的重新排序。对DDR SDRAM的读和写操作是基于突发的,即从一个选定的地址单元开始,连续存取已设置长度的地址单元,该长度就是所谓的突发长度。DDR SDRAM提供的可编程的读或写的突发长度为2、4或8。数据的存取以一个激活命令(Active)开始,接着便是读(Burst Read)或写(Burst Write)命令。与激活命令一起被触发的地址位用来选择将要存取的 BANK和行,与读或写命令一起被触发的地址位用来选择突发存取的起始列单元。当要存取一个不同行的地址单元时,需要通过一个预充电(Precharge)操作关闭当前行。自动刷新 (Autorefresh)命令用来周期性地刷新DDR SDRAM,以保持其内部的数据不丢失。假设本实施例中的突发长度被设置为4,则当对矩阵数据进行转置存储时,DDR SDRAM控制器的读写控制模块(未示出)命令转置控制模块(未示出)依次按行读取矩阵数据的突发长度X突发长度(在本实施例中为4X4)大小的数据块(如图4中虚线勾勒出的部分),转置控制模块将所读取的16个数据单元以及与其相对应的16个存储器地址分别依次存储在写数据缓存模块304中和源地址缓存模块301中。然后,地址转置模块303对源地址缓存模块301中的源地址进行转置运算并将得到的转置地址依次存储到转置地址缓存模块302中。由于是按行进行读取,因此突发长度内的各个源地址是连续的,例如如图4所示,地址 an, a12, a13, a14 是连续的是连续的是连续的,ii41,a42, a43, 4是连续的。但转置后的地址由于行和列调换因此变得不连续。如图4 所示,转置后的地址A1, a21, a31,知是处于不同行的不连续地址。在这种情况下,通过存储器控制器300的突发控制模块305来实现连续的写操作。 在本优选实施例中,突发控制模块305包括地址识别模块3051、地址重组模块3052和数据重组模块3053。地址识别模块3051对转置地址缓存模块302中的转置地址进行检测,并识别连续的转置地址。例如,识别出地址Ei11, a12, a13, a14是连续的,ει21,a22, a23,知是连续的,a31,a32, a33, aM是连续的,ει41,a42, a43, ει44是连续的。则地址重组模块3052基于该识别结果调整各地址在转置地址缓存模块302中的存储位置以使得各组连续的地址按正序被相邻地存储在转置地址缓存模块302中。所述按正序是指按地址从小到大的顺序。 例如,如图4所示,将an,a12, a13, a14^an, a12, a13, 4的顺序相邻地存储,对其它连续地址进行同样的存储位置调整。另外,数据重组模块3053基于该识别结果,将与连续地址^i11, a12, a13, a14对应的数据单元An,A21,A31,A41组合在一起形成一个突发数据块Bi,将与连续地址ii21,a22,a23, 4对应的数据单元A12,A22,A32,A42组合在一起形成一个突发数据块B2,将与连续地址ii31,a32, a33,知对应的数据单元A13,A23,A33,A43组合在一起形成一个突发数据块B3, 将与连续地址ει41,a42, a43, ει44对应的数据单元A14,A24,A34,A44组合在一起形成一个突发数据块Β4。在每个突发数据块Bl — Β4中,数据单元所对应的地址是连续的,因此可以进行连续的写操作。数据重组模块3053可以调整各数据单元在写数据缓存模块304中的存储位置,以使得每个突发数据块中的多个数据单元被相邻地存储,并且多个数据单元的存储顺序与相对应的多个连续地址的顺序一致,以保持数据单元与转置地址之间的正确对应关系。或者可以说,数据重组模块3053以与调整转置地址在转置地址缓存模块302中的存储位置相一致的方式调整相应的数据单元在写数据缓存模块304中的存储位置。这样,通过地址重组模块3052和数据重组模块3053对写地址和写数据的重组,多个写操作被重新排序或重新组合,从而形成多个突发写操作,例如针对突发数据块Bl的突发写操作,针对突发数据块Β2的突发写操作,针对突发数据块Β3的突发写操作和针对突发数据块Β4的突发写操作。在本实施例中,每个突发写操作包括4个写操作,但可以理解的是,每个突发写操作也可以包括2个、3个、5个或其它任意数目的写操作。另外,在本实施例中形成了 4个突发写操作,可以理解的是,也可能形成一个、2个、……等任意数目的突发写操作。一般地,存储器控制器300还包括PHY模块306 (参见图3),其具有数据输入端和地址输入端,数据输入端与写数据缓存模块304的输出端相连,所述地址输入端与转置地址缓存模块302的输出端相连。PHY模块306将写数据缓存模块304输出的一个或多个突发数据块与转置地址缓存模块302输出的调整存储位置后的存储器地址对齐,然后在存储器控制器300的读写控制模块(未示出)的控制下将所述一个或多个突发数据块中的数据单元连续地写入存储器100。例如,以图4中的突发数据块Β1-Β4为例,PHY模块306按照 (Au,A21,A31,A41,A12, A22J A32J A42,A13,A23,A33,A43,A14,A24,A34,A44I 的顺序将这四个突发数据块以及相应的地址发送到存储器100。在将矩阵数据的4X4数据块以突发数据块的模式转置存储到存储器中后,可以以相同的方式继续读取并转置存储矩阵数据的剩余部分,直到所有要存储的数据都被存储完毕。在上面的实施例中,是以矩阵数据的转置存储为例说明了本发明的存储器控制器 300及其在写操作中的应用。但本领域技术人员应当理解的是,本发明也适用于非矩阵数据。例如,对于无需转置存储的非矩阵数据的写操作,本发明的存储器控制器300以与上述方式类似的方式执行对写操作的控制。不同之处在于,源地址无需经过地址转置模块303 的转置运算(如图3中的虚线箭头所示),突发控制模块305检测并识别源地址并将源地址在转置地址缓存模块302中重新排序为一组或多组连续的地址,同时突发控制模块305根据这些连续的地址相应地重新排序并组合写数据缓存模块304中的各数据单元,以形成一个或多个突发数据块。由此完成对多个写操作的重新组合以形成一个或多个突发写操作, 以便进行连续的写操作。由于本实施例的其它操作和原理与上一实施例类似,因此在此不再赘述。以上针对写操作进行了说明。可选地,本发明的存储器控制器300也适用于对多个读操作进行重新排序组合以形成一个或多个突发读操作,其中每个突发读操作包括地址连续的两个或更多的读操作。在执行读操作时,用于读操作的源地址被缓存在读地址缓存块307中。读地址缓存块307也是支持地址的重新排序模式的。突发控制模块305检测并识别源地址并将源地址重新排序为一组或多组连续的地址,每组连续的地址用于一个突发读操作。由此,可以实现对存储器100的连续读操作。在对本发明存储器控制器的优选实施例进行的上述说明中,可以看出本发明的存储器控制器是基于一种存储器访问控制方法。在写操作的情况下,该方法包括步骤
将用于对存储器所进行的多个写操作的存储器地址缓存在写地址缓存模块中; 缓存用于所述多个写操作的要写入存储器的数据,所述数据包括多个写数据单元,所述多个写数据单元与用于所述多个写操作的存储器地址是相对应的;以及
突发控制步骤根据缓存在所述写地址缓存模块中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中每个突发写操作包括所述多个写操作中的两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。其中,突发控制步骤可以包括
检测写地址缓存模块中的存储器地址,并识别用于所述多个写操作的存储器地址中连续的存储器地址;以及
操作重组步骤将所述多个写操作中针对所识别的连续的存储器地址的写操作组合在一起以形成所述一个或多个突发写操作。其中,所述操作重组步骤可以包括调整存储器地址在写地址缓存模块中的存储位置以将所识别的连续的存储器地址相邻地存储在写地址缓存模块中。优选地,操作重组步骤还包括与所述调整存储器地址在写地址缓存模块中的存储位置相一致地调整相对应的写数据单元在所述写数据缓存模块中的存储位置,以使得每个突发写操作所针对的写数据单元被相邻地存储在所述写数据缓存模块中。其中,在要写入存储器的所述数据为矩阵数据且所述矩阵数据将被转置存储到存储器中的情况下,将存储器地址缓存在写地址缓存模块中包括将与要写入存储器的所述数据对应的源地址变换成转置后的存储器地址并将转置后的存储器地址输入到转置地址缓存模块中进行缓存;以及
其中,在所述突发控制步骤中根据所述转置后的存储器地址对针对所述矩阵数据的所述多个写操作进行组合以形成所述一个或多个突发写操作。在读操作的情况下,所述方法包括
将用于对存储器所进行的多个读操作的存储器地址缓存在读地址缓存模块中;以及突发控制步骤根据缓存在所述读地址缓存模块中的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中每个突发读操作包括所述多个读操作中的两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的。其中,所述突发控制步骤包括
检测所述读地址缓存模块中的存储器地址,并识别用于所述多个读操作的存储器地址中连续的存储器地址;以及
操作重组步骤将所述多个读操作中针对所识别的连续的存储器地址的读操作组合在一起以形成所述一个或多个突发读操作。
优选地,所述操作重组步骤包括调整存储器地址在读地址缓存模块中的存储位置以将所识别的连续的存储器地址相邻地存储在所述读地址缓存模块中。通过对本发明的上述示例性说明,可以理解本发明具有以下优点本发明的存储器控制器和访问控制方法利用可连续读写的特性隐藏了额外的跨行等时钟开销以及矩阵转置存储中的转置周期;使得矩阵的转置运算在不增加额外时钟开销的前提下实现了同期转置,即将原有的专属数据转置操作,隐藏到矩阵数据的存储过程中,使得原有的“转置操作=转置周期+存储周期”转化为“转置操作=存储周期”,从而实现了转置硬件加速的功能;本发明可在专用芯片和PFGA上实现,方案灵活,应用范围广,并且具有电路简单、稳定的优点。虽然已相对于特定装置、配置、部件、系统和操作方法描述了本发明,但本领域普通技术人员在阅读本说明书后应认识到,可以在不脱离本发明的精神或范围的情况下对本文所述的实施例和/或其操作进行一定的变更或修改。因此,由所附的权利要求来定义本发明的适当范围。本文所公开的各种实施例、操作、部件和配置一般是示例性的,而并不意图限制范围。
权利要求
1.一种存储器控制器,其特征在于,包括地址缓存模块,用于缓存用于对存储器所进行的多个读操作或多个写操作的存储器地址;以及突发控制模块,用于根据缓存在所述地址缓存模块中的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中所述一个突发读操作或所述多个突发读操作中的每个突发读操作包括所述多个读操作中的两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的,或者根据缓存在所述地址缓存模块中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中所述一个突发写操作或所述多个突发写操作中的每个突发写操作包括所述多个写操作中的两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。
2.如权利要求1所述的存储器控制器,其特征在于,所述突发控制模块包括地址识别模块,用于检测所述地址缓存模块中的存储器地址,并识别用于所述多个读操作或所述多个写操作的存储器地址中连续的存储器地址;以及操作重组模块,用于将所述多个读操作中针对所识别的连续的存储器地址的读操作组合在一起以形成所述一个或多个突发读操作,或者用于将所述多个写操作中针对所识别的连续的存储器地址的写操作组合在一起以形成所述一个或多个突发写操作。
3.如权利要求2所述的存储器控制器,其特征在于,所述操作重组模块包括地址重组模块,用于调整存储器地址在地址缓存模块中的存储位置以将所识别的连续的存储器地址相邻地存储在所述地址缓存模块中。
4.如权利要求3所述的存储器控制器,其特征在于,还包括写数据缓存模块,用于缓存用于所述多个写操作的要写入存储器的数据,所述数据包括多个写数据单元,所述多个写数据单元与用于所述多个写操作的存储器地址是相对应的;其中所述操作重组模块还包括数据重组模块,用于与所述调整存储器地址在地址缓存模块中的存储位置相一致地调整相对应的写数据单元在所述写数据缓存模块中的存储位置,以使得每个突发写操作所针对的写数据单元被相邻地存储在所述写数据缓存模块中。
5.如权利要求4所述的存储器控制器,其特征在于其中所述地址缓存模块包括地址转置模块和转置地址缓存模块,所述地址转置模块用于将与要写入存储器的所述数据对应的源地址变换成转置后的存储器地址并将转置后的存储器地址输入到转置地址缓存模块中进行缓存;以及其中要写入存储器的所述数据为矩阵数据,所述矩阵数据将被转置存储到存储器中, 其中所述突发控制模块根据所述转置后的存储器地址对针对所述矩阵数据的所述多个写操作进行组合以形成所述一个或多个突发写操作。
6.一种存储器访问控制方法,包括将用于对存储器所进行的多个读操作或多个写操作的存储器地址缓存在地址缓存模块中;以及突发控制步骤根据缓存在所述地址缓存模块中的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中所述一个突发读操作或所述多个突发读操作中的每个突发读操作包括所述多个读操作中的两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的,或者根据缓存在所述地址缓存模块中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中所述一个突发写操作或所述多个突发写操作中的每个突发写操作包括所述多个写操作中的两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。
7.如权利要求6所述的存储器访问控制方法,所述突发控制步骤包括检测所述地址缓存模块中的存储器地址,并识别用于所述多个读操作或所述多个写操作的存储器地址中连续的存储器地址;以及操作重组步骤将所述多个读操作中针对所识别的连续的存储器地址的读操作组合在一起以形成所述一个或多个突发读操作,或者将所述多个写操作中针对所识别的连续的存储器地址的写操作组合在一起以形成所述一个或多个突发写操作。
8.如权利要求7所述的存储器访问控制方法,所述操作重组步骤包括调整存储器地址在地址缓存模块中的存储位置以将所识别的连续的存储器地址相邻地存储在所述地址缓存模块中。
9.如权利要求8所述的存储器访问控制方法,还包括缓存用于所述多个写操作的要写入存储器的数据,所述数据包括多个写数据单元,所述多个写数据单元与用于所述多个写操作的存储器地址是相对应的;其中所述操作重组步骤还包括与所述调整存储器地址在地址缓存模块中的存储位置相一致地调整相对应的写数据单元在所述写数据缓存模块中的存储位置,以使得每个突发写操作所针对的写数据单元被相邻地存储在所述写数据缓存模块中。
10.如权利要求9所述的存储器访问控制方法,其中,将存储器地址缓存在地址缓存模块中包括将与要写入存储器的所述数据对应的源地址变换成转置后的存储器地址并将转置后的存储器地址输入到转置地址缓存模块中进行缓存;以及其中,要写入存储器的所述数据为矩阵数据,所述矩阵数据将被转置存储到存储器中, 其中在所述突发控制步骤中根据所述转置后的存储器地址对针对所述矩阵数据的所述多个写操作进行组合以形成所述一个或多个突发写操作。
全文摘要
本发明涉及存储器控制器及存储器访问控制方法。所述存储器控制器包括地址缓存模块,用于缓存用于对存储器所进行的多个读操作或多个写操作的存储器地址;以及突发控制模块,用于根据缓存在所述地址缓存模块中的存储器地址将所述多个读操作重组以形成一个或多个突发读操作,其中每个突发读操作包括两个或更多的读操作,且所述两个或更多的读操作所针对的存储器地址是连续的,或者根据缓存在所述地址缓存模块中的存储器地址将所述多个写操作重组以形成一个或多个突发写操作,其中每个突发写操作包括两个或更多的写操作,且所述两个或更多的写操作所针对的存储器地址是连续的。通过本发明,可以有效地节省存储器读写操作的时钟开销。
文档编号G06F13/16GK102567241SQ20101060721
公开日2012年7月11日 申请日期2010年12月27日 优先权日2010年12月27日
发明者郭旭 申请人:北京国睿中数科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1