专利名称:一种提高存储器访问效率的方法及存储器控制器的制作方法
技术领域:
本发明涉及数据存储技术,特别是涉及一种提高存储器访问效率的方法及存储器控制器。
背景技术:
随着通讯和多媒体行业的发展,人们对数据传输速度的要求越来越高,所以,网络处理器、图像处理芯片和流媒体处理芯片等处理芯片的速度就越来越快。但是,存储器的带宽是这些处理芯片的性能瓶颈,虽然存储器制造商开发出了多种高性能的动态存储器,但是,存储器的带宽并不能随着性能的提高而加大。
存储器的带宽是指单位时间内访问存储器的数据量,理论上讲,存储器的带宽和存储器的时钟频率和存储器的数据总线位数有关,也就是说,存储器的时钟频率和数据总线位数决定了存储器的峰值带宽。但是,在实际工作时,存储器未必能达到峰值带宽,影响带宽的因素还很多,比如,数据写入和读出存储器所需的延迟时间和所存储数据的命中率。延迟时间和命中率对带宽的影响非常大,当把这些因素考虑在内,提高存储器的带宽的重点在于缩短数据读写的延迟时间以及提高所存储数据的命中率,即提高存储器的访问效率。
动态存储器通常具有多个页(Bank),每个页具有多个行和列。动态存储器通常需要对一行进行激活(Active)操作之后,才能对该行进行读写操作。动态处理器不允许同一页内的两行同时被激活,所以,如果某页存在一个已经被激活的行,而又要操作另一行时,必须先关闭(Precharge)先前已经被激活的行,再激活需要操作的行,然后才能对该行进行读写操作。
下面举例说明现有的访问存储器的方法,参见图1,对动态存储器的同一页不同行进行操作时,在步骤101,激活第N页第R1行;在步骤102,读写访问第N页第R1行;在步骤103,关闭第N页第R1行;在步骤104,激活第N页第R2行;在步骤105,读写访问第N页第R2行;在步骤106,关闭第N页第R2行。
参见图2,对动态存储器的同一页同一行进行操作时,在步骤201,激活第N页第R行;在步骤202,读写访问第N页第R行第C1列;在步骤203,读写访问第N页第R行第C2列;在步骤204,读写访问第N页第R行第C3列;在步骤205,读写访问第N页第R1行第C4列;在步骤206,关闭第N页第R行。
从以上技术方案可以看出,在连续对存储器的同一行进行操作时,不论连续操作多少次,仅有一次激活操作和一次关闭操作,但是,在连续对不同的行进行操作时,每一次换行都对应一次激活操作和一次关闭操作。由于这些激活和关闭等操作将增加读写数据的延迟时间,所以,激活和关闭操作对于读写数据来说是开销,造成对存储器带宽的浪费,存储器的实际带宽因为这些开销的存在而大大降低,甚至不到峰值带宽的一半。
发明内容
本发明的主要目的在于提供一种提高存储器访问效率的方法,利用分页式存储器的特性,将激活关闭的开销抵消在读写操作中。
本发明的另一目的在于提供一种存储器控制器,提高存储器的访问效率。
本发明的目的是通过如下技术方案实现的一种提高存储器访问效率的方法,适用于分页式存储器,其包括按顺序对分页式存储器的N个页执行激活操作,并在对当前页执行激活操作的同时对上一个激活的页执行读操作或写操作,在对激活的页执行完读操作或写操作后自动对该页执行关闭操作,其中N为大于2且小于分页式存储器总页数的自然数。
优选地,所述N为4。
其中,所述对分页式存储器的N个页执行激活操作具体为对分页式存储器的N个页中的一行执行激活操作,所述对激活的页执行读操作或写操作具体为对激活的页中激活的行执行读操作或写操作。
在本发明一实施例中,所述激活页并对激活的页执行写操作具体为按顺序对分页式存储器的N个页的一行执行激活操作,并在对当前页执行激活操作的同时将未写入的待存储数据写入上一个激活的页中激活的行,重复此步骤直至对将所有待存储数据写入分页式存储器。
在本实施例中,所述激活页并对激活的页执行读操作具体为按顺序对分页式存储器的N个页的一行执行激活操作,并在对当前页执行激活操作的同时将未读取的待读取数据从上一个激活的页中激活的行读出,重复此步骤直至将所有待读取数据从分页式存储器中读出。
在本发明的优选实施例中,所述激活页并对激活的页执行写操作具体为按顺序对分页式存储器的N个页的同一行执行激活操作,并在对当前页执行激活操作的同时将当前待存储数据写入上一个激活的页中激活的行,对N个页的同一行写入相同的当前待存储数据,然后将后续待存储数据作为当前待存储数据,重复此步骤直至将所有待存储数据写入分页式存储器。
在优选实施例中,所述激活页并对激活的页执行读操作具体为按顺序对分页式存储器的N个页的不同行执行激活操作,并在对当前页执行激活操作的同时将未读出的待读取数据从上一个激活的页中激活的行读出,重复此步骤直至将所有待读取数据从分页式存储器中读出。
一种存储器控制器,用于对分页式存储器进行控制,包括时钟模块、仲裁模块、初始化模块、命令模块和数据通路模块,所述命令模块对生成的与访问存储器相关的命令进行排序和组织后通过数据通路模块发送至分页式存储器,以实现按顺序对分页式存储器的N个页执行激活操作,并在对当前页执行激活操作的同时对上一个激活的页进行读操作或写操作,在对激活的页的读操作或写操作完毕后自动关闭该页,其中N为大于2且小于分页式存储器总页数的自然数。
优选地,命令模块在对分页式存储器的N个页执行激活操作并执行写操作的过程中,将同一待存储数据复制N份,分别写入N个页的同一位置。
其中,所述与访问存储器相关的命令包括激活、关闭、读命令或写命令。从上述技术方案可以看出,本发明的方法通过合理组织与访问存储器相关的访问命令,将激活和关闭存储器的开销抵消在读写操作中,从而提高了存储器的访问效率。并且,在本发明一优选实施例中,通过将数据复制N份分别写入存储器的N个页,利用空间换取存储器的访问带宽,可以将存储器访问效率保持在一个较高的水平。
图1是现有技术的对存储器的同一页不同行进行操作的示意性流程图;图2是现有技术的对存储器的同一页同一行进行操作的示意性流程图;图3是本发明第一实施例的访问分页式存储器的流程图;图4是本发明第二实施例的对存储器进行写操作的流程图;图5是本发明第二实施例的对存储器进行读操作的流程图;图6是本发明的存储器控制器的示意性结构框图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的思想是利用分页式存储器的特性来提高其带宽利用率。下面介绍存储器的一些特性。
第一,对于分页式存储器,在激活某页的同时可以激活其它一或多个页。
第二,每次激活一页中的一行需要等待一定的时间,即激活时间,然后才能对该行进行读写操作,在这段激活时间内可以对另一页中已经激活的行进行读写操作。
第三,分页式存储器有自动关闭行的功能,即当对某行的读写操作完成之后,自动关闭该行。
基于以上三个特点,可以通过将激活和读写操作交替进行,并启动自动关闭行的功能,将激活和关闭的开销抵消在读写操作中。
下面通过两个实施例对本发明的提高存储器访问效率的方法进行详细说明。
第一实施例在第一实施例中,利用上述分页式存储器的特点,轮流激活不同页并进行读写。图3是本发明第一实施例的访问分页式存储器的流程图。从图3可见,本实施例具体包括如下步骤步骤301激活物理页1中的第R1行;步骤302激活物理页2中的第R2行,并对物理页1中的第R1行进行读写操作;步骤303激活物理页3中的第R3行,并对物理页2中的第R2行进行读写操作;步骤304激活物理页4中的第R4行,并对物理页3中的第R3行进行读写操作;步骤305对物理页4中的第R4行进行读写操作。
然后,在仍有未写入的待存储数据或未读出的待读取数据时,返回步骤301,从物理页1开始第二轮循环。在第二轮循环中,对物理页1的第R5行到物理页4的第R8行进行读写操作。
由于启动了自动关闭行的功能,那么当本轮循环执行到需要激活某一页时,该页中上一轮被激活的行已经有足够的时间完成关闭操作,所以可以进行本轮的激活操作。例如,当步骤302完成后,即对物理页1的第R1行进行完读写操作后,只要在步骤305结束之前关闭该行,即可在下一轮循环的步骤301中再次激活物理页1。由于步骤303到步骤305这段时间远大于行关闭的操作时间,因此可以实现无等待的循环。
从上述第一实施例的技术方案可以看出,在每一轮循环中,总共完成了五个操作,其中读写操作占了四个,因此带宽的利用率达到了80%。
上述实施例以四页轮流的方式为例,对于两页存储器,可采用两页轮流的方式;对于八页存储器,可采用八页轮流的方式。但是,对于超过四页的存储器,例如八页或十六页存储器,也可以采用四页轮流的方式。
上述多页轮流的方式虽然能够大大提高存储器的访问效率,但是也存在一定缺陷,用户从存储器读取数据时,如果待读取的数据保存在同一页的不同行中,无法应用多页轮流的方式进行读取,因此,由于用户的访问地址的随机性,存储器的访问效率有可能无法稳定在一个较高的水平,所以存储器的带宽不稳定。为了解决上述问题,本发明又提出了一种用空间换带宽的方式,在第二实施例中进行详细介绍。
第二实施例本实施例所采用的空间换带宽的方式是如果采用N页轮流的方式,在写入数据时,将一个数据复制N份,分别写入N页的同一行的同一列,这样N页上的数据完全相同。在读取数据时,可以保证在任何情况下均可利用多页轮流的方式读取数据,而且可以按照任意页顺序读取。例如,对于四页轮流的方式,可以对这四页进行随机排序,比如可以将物理页3、4、1和2分别作为逻辑页1、2、3和4,也可以将物理页4、1、2和3分别作为逻辑页1、2、3和4,然后按照逻辑页顺序进行读取。
图4是本发明第二实施例的对存储器进行写操作的流程图。从图4可见,在本实施例中仍以四页轮流的方式为例,对存储器进行写操作具体包含如下步骤步骤401激活逻辑页1的第R1行;步骤402激活逻辑页2的第R1行,并在逻辑页1的第R1行写入数据段D1;步骤403激活逻辑页3的第R1行,并从逻辑页2的第R1行开始写入数据段D1;步骤404激活逻辑页4的第R1行,并从逻辑页3的第R1行开始写入数据段D1;步骤405从逻辑页4的第R1行开始写入数据段D1。
然后,在仍有未写入的待存储数据时,返回步骤401,从逻辑页1开始第二轮循环。在第二轮循环中,在R2行写入数据段D2;在第三轮循环中,在R3行写入数据段D3,直至最后一轮循环即第S轮循环中,在RS行写入数据段DS。这样,在执行完写入操作后,四个页上的数据完全相同,数据段D1、D2、D3至DS分别位于四个页上的第R1、R2、R3至第RS行。
图5是本发明第二实施例的对存储器进行读操作的流程图。从图5可见,在本实施例中仍以四页轮流的方式为例,对存储器进行读操作具体包含如下步骤步骤501激活逻辑页1的第R1行;步骤502激活逻辑页2的第R2行,并从逻辑页1的第R1行读取数据段D1;步骤503激活逻辑页3的第R3行,并从逻辑页2的第R2行读取数据段D2;步骤504激活逻辑页4的第R4行,并从逻辑页3的第R3行读取数据段D3;步骤505从逻辑页4的第R4行读取数据段D4。
然后,在仍有未读出的待读取数据时,返回步骤501,从逻辑页1开始第二轮循环。
从上述技术方案可见,第一轮循环中,从逻辑页1的第R1行至逻辑页4的第R4行分别读取数据段D1到D4;第二轮循环中,从逻辑页1的第R5行至逻辑页4的第R8行分别读取数据段D5到D8,直至第INT(S/4)+1轮循环,从逻辑页MOD(S/4)的第RS行读取数据段DS,其中INT()表示取整操作,MOD表示取余数的操作。
在本实施例中,向存储器写入数据时,将写入的数据复制几份,分别写入存储器的几个页中,因此这几个页中保存着相同的数据,这样,虽然占用空间,但是可在任何情况下利用多页轮流的方式读取数据,并可按照任意页顺序读取数据,从而避免了第一实施例中可能出现的由于待读取的数据位于同页的不同行所导致的访问效率不稳定的缺陷,因此是本发明的一个优选实施例。
在上述两个实施例中,均假设读取的数据与写入的数据为同一大小的数据,在实际应用中,读取的数据可以是写入的数据中的一部分,其实现的方式与本发明的实施例类似,在此不予赘述。
本发明还提供了一种提高存储器访问效率的存储器控制器,该存储器控制器控制存储器实现上述多页轮流的访问。
图6是本发明的提高存储器访问效率的存储器控制器的示意性结构框图。从图6可见,该存储器控制器包括时钟模块、初始化模块、仲裁模块、命令模块和数据通路模块。
时钟模块产生存储器控制器所需的时钟信号,并将时钟信号输入到初始化模块、仲裁模块、命令模块和数据通路模块。
初始化模块生成对存储器的初始化命令,并将初始化命令发送给命令模块,以实现存储器的延迟锁定环(DLL)的复位、使能以及某些外置双倍速率动态同步随机访问存储器(DDR SDRAM)读写特性的配置。
仲裁模块完成对多个通路的访问请求的仲裁,根据系统要求进行公平轮询、优先级轮询等,选择一个通路的访问请求,向命令模块发送访问请求命令和数据,并在访问请求为写入请求时将待写入的数据发送至命令模块;在接收到命令模块发来的从存储器读取的数据时,将所读取的数据发送给对应的通路。
命令模块对初始化模块和仲裁模块送来的命令和数据进行处理,对激活、读取、关闭等命令进行合理的排序和组织,然后将优化后的数据和命令发送至数据通路模块,以实现第一实施例所述的多页轮流访问的方式,或者,应用第二实施例所述的以空间换带宽的多页轮流访问的方式;并转发数据通路模块发来的从存储器读取的数据至仲裁模块。
数据通路模块对接收到的命令和数据进行时序安排,使输出的命令和数据符合接口存储器的时序要求;接收从存储器读取的数据,对所读取的数据进行真情采样后发送至命令模块。
本发明的方法和存储器控制器适用于对所有类型的分页式存储器,例如内置动态随机访问存储器(DRAM)、外置动态同步随机访问存储器(SDRAM)、外置双倍速率动态同步随机访问存储器(DDR SDRAM)、外置第2代双倍速率动态同步随机访问存储器(DDR SDRAM2)、外置低延迟动态同步随机访问存储器(RLDRAM)、外置快速循环随机访问存储器(FCRAM)等,并包括未来可能出现的任何类型的分页式存储器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种提高存储器访问效率的方法,适用于分页式存储器,其特征在于,包括按顺序对分页式存储器的N个页执行激活操作,并在对当前页执行激活操作的同时对上一个激活的页执行读操作或写操作,在对激活的页执行完读操作或写操作后自动对该页执行关闭操作,其中N为大于2且小于分页式存储器总页数的自然数。
2.根据权利要求1所述的方法,其特征在于,所述N为4。
3.根据权利要求1所述的方法,其特征在于,所述对分页式存储器的N个页执行激活操作具体为对分页式存储器的N个页中的一行执行激活操作,所述对激活的页执行读操作或写操作具体为对激活的页中激活的行执行读操作或写操作。
4.根据权利要求3所述的方法,其特征在于,所述激活页并对激活的页执行写操作具体为按顺序对分页式存储器的N个页的一行执行激活操作,并在对当前页执行激活操作的同时将未写入的待存储数据写入上一个激活的页中激活的行,重复此步骤直至对将所有待存储数据写入分页式存储器。
5.根据权利要求4所述的方法,其特征在于,所述激活页并对激活的页执行读操作具体为按顺序对分页式存储器的N个页的一行执行激活操作,并在对当前页执行激活操作的同时将未读取的待读取数据从上一个激活的页中激活的行读出,重复此步骤直至将所有待读取数据从分页式存储器中读出。
6.根据权利要求3所述的方法,其特征在于,所述激活页并对激活的页执行写操作具体为按顺序对分页式存储器的N个页的同一行执行激活操作,并在对当前页执行激活操作的同时将当前待存储数据写入上一个激活的页中激活的行,对N个页的同一行写入相同的当前待存储数据,然后将后续待存储数据作为当前待存储数据,重复此步骤直至将所有待存储数据写入分页式存储器。
7.根据权利要求6所述的方法,其特征在于,所述激活页并对激活的页执行读操作具体为按顺序对分页式存储器的N个页的不同行执行激活操作,并在对当前页执行激活操作的同时将未读出的待读取数据从上一个激活的页中激活的行读出,重复此步骤直至将所有待读取数据从分页式存储器中读出。
8.一种存储器控制器,用于对分页式存储器进行控制,包括时钟模块、仲裁模块、初始化模块、命令模块和数据通路模块,其特征在于,所述命令模块对生成的与访问存储器相关的命令进行排序和组织后通过数据通路模块发送至分页式存储器,以实现按顺序对分页式存储器的N个页执行激活操作,并在对当前页执行激活操作的同时对上一个激活的页进行读操作或写操作,在对激活的页的读操作或写操作完毕后自动关闭该页,其中N为大于2且小于分页式存储器总页数的自然数。
9.根据权利要求8所述的存储器控制器,其特征在于,命令模块在对分页式存储器的N个页执行激活操作并执行写操作的过程中,将同一待存储数据复制N份,分别写入N个页的同一位置。
10.根据权利要求8或9所述的存储器控制器,其特征在于,所述与访问存储器相关的命令包括激活、关闭、读命令或写命令。
全文摘要
本发明公开了一种提高存储器访问效率的方法,该方法是按顺序对分页式存储器的N个页执行激活操作,并在对当前页执行激活操作的同时对上一个激活的页进行读操作或写操作,在对激活的页执行完读操作或写操作后自动对该页执行关闭操作,其中N为大于2且小于分页式存储器总页数的自然数。应用了本发明的方法,可以将激活和关闭存储器的开销抵消在读写操作中,从而提高了存储器的访问效率。并且,在本发明的优选实施例中,通过将数据复制N份分别写入存储器的N个页,保证了将存储器的访问效率稳定在一个较高的水平。
文档编号G06F12/00GK1851669SQ20051009865
公开日2006年10月25日 申请日期2005年9月7日 优先权日2005年9月7日
发明者谢小玲, 吕超, 慕光, 罗琨 申请人:深圳市海思半导体有限公司