专利名称:一种同步动态存储器控制器的设计方法
技术领域:
本发明涉及一种存储器控制器的设计方法,特别涉及一种同步动态存储器控制器的设计方法。
背景技术:
AVS是中国第一个具有自主知识产权的数字音视频编解码标准,全称是《信息技术先进音视频编码标准》。H.264是由ITU-T和ISO两个国际标准化组织的有关视频编码专家联合组成的视频联合工作组(JVT)开发制定的一个视频编码标准,这两种标准在编码效率上较之以往的视频压缩标准都有了显著的提高,但是与此同时硬件实现解码的复杂度也随之上升,给硬件设计带来一定的挑战。
在实时高清视频解码运算中,有大量中间数据需要保存和读取,其中的绝大部分数据,比如已经解码完成的图像的所有象素值,由于数据量很大,因而需要保存到片外存储器中,以备后解码的图像作为参考数据或者直接用于显示。另一方面,系统的总线频率和带宽往往受到实际条件以及成本,功耗的限制,由于成本的原因,使用速度最快的SRAM是不切实际的。本文提到的高清视频解码芯片采用片外的SDRAM作为解码数据的存储载体,SDRAM的固有性质以及高清视频解码中庞大的数据量,决定了要实现实时解码必须提高SDRAM的数据访问效率,这就要求设计一种高效的SDRAM控制方案。
发明内容
本发明所要解决的技术问题是针对上述现有技术现状而提供一种能够提高SDRAM的数据访问效率的同步动态存储器控制器的设计方法。
本发明解决上述技术问题所采用的技术方案为一种同步动态存储器(SDRAM)控制器的设计方法,包括针对视频解码进行优化,可以大幅度提高存储器数据读写的效率,易于硬件的实现,其特征在于(1)地址解析优化;(2)一次状态寄存器设置和使用自动预充电(Auto Pre-charge)模式;(3)对激活(Active)命令发送时间优化;(4)对刷新(Refresh)的时间间隔动态控制;(5)缓存读写命令,划分读写时间片,读写命令分别集中发送。
对地址解析优化,使数据平均分布在各个Bank中,使得对各个Bank的访问平均化,避免在时间上需要连续取得的数据都存储在一个Bank中,造成频繁的行激活和预充电的时间的等待,降低效率;地址映射公式如下设使用的SDRAM存储器Column地址为m位,Row地址为n位,请求读写的逻辑地址为Address[m+n-1:0]取X=Address[m-1:0],Y=Address[m+n-1:m],Bottom_field=Y
则对应于逻辑地址Address的SDRAM物理地址为Bank=Bottom_field?{!Y[2],Y[1]}:Y[2:1]Row={Y[n-1:3],Bottom_field}Column=X。
只在上电初始化时设置一次状态寄存器,并且使用自动预充电(Auto Pre-charge)模式,提高命令管道的利用率。
对激活(Active)命令发送时间优化,一个Bank的Active指令在其余3个Bank的Idle,tRCD,tRP时间内或者在两个读写指令的间隔时间内发出,减少命令管道冲突的发生和等待激活的时间。
对刷新(Refresh)的时间间隔在预设的阈值范围内动态控制,减少刷新在数据读写过程中的干扰。
对读写命令进行缓存,并在调度时划分为读时间片和写时间片,读写命令在相应时间片内集中发送时间,消除读写衔接引起的时间浪费。设置两个计数器,第一个计数器对当前时间片周期进行计数,另一个计数器对当前时间片连续空闲周期进行计数,当其中一个计数器达到预设的阈值时即进行读写时间片的切换。
与现有技术相比,本发明的优点在于,通过SDRAM中的4个Bank协同工作,充分利用SDRAM的通讯能力,满足大量数据高速通讯的需求,其带宽利用率进行在视频解码时能达到85%以上,可以实现AVS和H.264的高清视频实时解码。本发明不仅仅适用于SDRAM和DDR SDRAM以及视频解码。
图1是SDRAM读写时序示意图;图2是SDRAM控制器逻辑框图。
具体实施例方式
以下结合附图实施例对本发明作进一步详细描述。
本发明在SDRAM上的具体实现如下所述,在DDR SDRAM上的实现与SDRAM类似。
1.SDRAM控制器的技术方案如图1所示,根据SDRAM的规范,对SDRAM上任意数据的读写,须先激活以打开其所在行,然后进行读写,读写完成后还需要对该行预充电以关闭这一行。为了得到一个数据,必须额外附加时间tRCD,tRP,来打开和关闭这个数据所在的行,而且整个过程还受到tRC和tRAS的限制。
SDRAM中含有4个相对独立的Bank,在完成初始化操作后,除了刷新(Refresh),重置寄存器(LMR)等命令以外,各个Bank是基本独立的,但是他们共用同一套接口(命令,地址和数据接口)。因此在实际应用中,既要充分的保证4个Bank的工作,尽量保证数据总线的非空闲状态,又不能造成命令,数据,地址接口的数据冲突。
(1)SDRAM的地址解析优化经过统计,在视频解码中,系统对SDRAM中数据的访问是随机而且分散的,特别是对内存读取最多的读取参考帧数据,在H.264中占总读取数据量的80%,在AVS中总读取量的76-88%,而且平均数据长度不超过3,所以把内存中的数据在地址解析的时候平均分布在4个Bank中,使各个模块对内存的访问平均化,这样才不会存在所有在时间上需要连续取得的数据都存在于一个Bank中,造成频繁的行激活和预充电的时间的等待,导致数据总线处于无数据的空闲状态。
设使用的SDRAM存储器Column地址为m位,Row地址为n位,请求读写的逻辑地址为Address[m+n-1:0]。
取X=Address[m-1:0],Y=Address[m+n-1:m],Bottom_field=Y
。
则对应于逻辑地址Address的SDRAM物理地址为Bank=Bottom_field?{!Y[2],Y[1]}:Y[2:1]Row={Y[n-1:3],Bottom_field}Column=X这样映射处理以后视频数据中各行像素平均分配到了4个Bank中,且对各个Bank的操作互相交错开来,提高了带宽利用率。
(2)一次状态寄存器设置和使用自动预充电(Auto Pre-charge)模式为了数据的最大吞吐流量,尽量把指令拼接在一起,此时命令总线可能产生冲突。为了解决这一点,本发明采用了自动预充电(Auto Pre-charge)模式,这样减少了一个命令,对于一个Bank来说,减少了1tCK/tRC的指令占用。根据系统频率的不同,这个改变在效率上的效果在1/8-1/12之间,同时由于4个Bank的协同操作,由此引来的在tWR等时间上的增加并不减少数据总线的利用率。
(3)对激活(Active)命令发送时间优化激活(Active)命令经常与读写指令冲突,它同时还受到tRRD的限制。本发明将一个Bank的active指令在其余3个Bank的Idle,tRCD,tRP时间内或者在两个读写指令的间隔时间内发出,保证数据管道流水线畅通。为了达到此目的,必须在一个Bank的读写将要结束时就判断其它Bank是否有读写请求,提前做出判断并根据规则对其他Bank的请求进行仲裁,同时还要考虑时序和实际硬件电路的实现难易程度,对逻辑进行优化。
(4)对刷新(Refresh)的时间间隔动态控制SDRAM为了保持其中的数据不丢失,需要在64ms内刷新4096或8096次,本发明中预设了一个阈值范围,适当弹性的控制了每次刷新的时间间隔,既使SDRAM在规定时间内能够得到刷新,又能减少刷新在数据读写过程中的干扰。
(5)缓存读写命令,划分读写时间片,读写命令分别集中发送在SDRAM中,由于数据输入寄存器和数据输出寄存器的存在,4个Bank如果同为读或者写是可以紧密衔接的,数据在其中形成流水线式的传送。但是,同一个Bank或者不同Bank之间写命令不能紧接着读命令,否则造成数据的冲突。本发明设计了一个对读写命令的缓存,并在调度时划分为读时间片和写时间片,读写命令在相应时间片内集中发送时间,消除读写衔接引起的时间浪费。本发明设置了两个计数器,第一个计数器对当前时段周期进行计数,另一个计数器对当前时段连续空闲周期进行计数,当其中一个计数器达到预设的阈值时即进行读写时段的切换。这样就能把读写操作分别集中起来,同时保证请求的响应时间具有可预测的上限,又不会因为在某一时段中长时间没有相应的请求而降低利用率。
2.SDRAM控制器的设计实现如图2所示,SDRAM控制器采用模块化设计,包括了仲裁器,初始化控制器,管道控制器,刷新控制器,状态控制器,命令解析器,响应发生器,数据控制器等模块。
仲裁器接收对SDRAM的读写请求,进行地址解析,缓存并进行优化排序,输出给状态控制器。
初始化控制器负责在系统上电初始化时配置SDRAM的各种参数。
刷新控制器动态计算刷新周期来控制SDRAM的刷新周期,保持SDRAM的数据完整性。
状态控制器控制4个Bank的状态转换,响应信号的处理等过程。
管道控制器根据4个Bank的状态来预测管道的使用情况,协调控制4个Bank状态控制器的平衡运转,并保证命令通道不会冲突,数据通道尽量保持有效状态并且不冲突。
命令解析器接收状态控制器和初始化控制器发出的命令并转换成符合SDRAM规范的控制信号输出给SDRAM芯片。
响应发生器根据状态控制器发出SDRAM读写请求的响应信号。
数据控制器接收状态控制器发出的命令选择写入SDRAM的数据,并从SDRAM读出的数据中选择有效数据。
本发明已经在高清实时解码SOC芯片凤芯一号和凤芯二号上得到实际应用。采用这种方法设计的SDRAM控制器的带宽利用率能达到85%以上,通过SDRAM中的4个Bank的协同工作,极大的利用了SDRAM的通讯能力,满足高速大量数据通讯的需求,可以实现AVS和H.264的高清视频实时解码。
权利要求
1.一种同步动态存储器(SDRAM)控制器的设计方法,包括针对视频解码进行优化,可以大幅度提高存储器数据读写的效率,易于硬件的实现,其特征在于(1)地址解析优化;(2)一次状态寄存器设置和使用自动预充电(Auto Pre-charge)模式;(3)对激活(Active)命令发送时间优化;(4)对刷新(Refresh)的时间间隔动态控制;(5)缓存读写命令,划分读写时间片,读写命令分别集中发送。
2.如权利要求1所述的同步动态存储器(SDRAM)控制器的设计方法,其特征在于对地址解析优化,使数据平均分布在各个Bank中,使得对各个Bank的访问平均化,避免在时间上需要连续取得的数据都存储在一个Bank中,造成频繁的行激活和预充电的时间的等待,降低效率;地址映射公式如下设使用的SDRAM存储器Column地址为m位,Row地址为n位,请求读写的逻辑地址为Address[m+n-1:0]取X=Address[m-1:0],Y=Address[m+n-1:m],Bottom_field=Y
则对应于逻辑地址Address的SDRAM物理地址为Bank=Bottom_field?{!Y[2],Y[1]}Y[2:1]Row={Y[n-1:3],Bottom_field}Column=X。
3.如权利要求1所述的同步动态存储器(SDRAM)控制器的设计方法,其特征在于只在上电初始化时设置一次状态寄存器,并且使用自动预充电(Auto Pre-charge)模式,提高命令管道的利用率。
4.如权利要求1所述的同步动态存储器(SDRAM)控制器的设计方法,其特征在于对激活(Active)命令发送时间优化,一个Bank的Active指令在其余3个Bank的Idle,tRCD,tRP时间内或者在两个读写指令的间隔时间内发出,减少命令管道冲突的发生和等待激活的时间。
5.如权利要求1所述的同步动态存储器(SDRAM)控制器的设计方法,其特征在于对刷新(Refresh)的时间间隔在预设的阈值范围内动态控制,减少刷新在数据读写过程中的干扰。
6.如权利要求1所述的同步动态存储器(SDRAM)控制器的设计方法,其特征在于对读写命令进行缓存,并在调度时划分为读时间片和写时间片,读写命令在相应时间片内集中发送时间,消除读写衔接引起的时间浪费;设置两个计数器,第一个计数器对当前时段周期进行计数,另一个计数器对当前时段连续空闲周期进行计数,当其中一个计数器达到预设的阈值时即进行读写时段的切换。
全文摘要
一种同步动态存储器(SDRAM)控制器的设计方法,包括针对视频解码进行优化,可以大幅度提高存储器数据读写的效率,易于硬件的实现,(1)地址解析优化;(2)一次状态寄存器设置和使用自动预充电(Auto Pre-charge)模式;(3)对激活(Active)命令发送时间优化;(4)对刷新(Refresh)的时间间隔动态控制;(5)缓存读写命令,划分读写时间片,读写命令分别集中发送。其优点在于,通过SDRAM中的4个Bank协同工作,充分利用SDRAM的通讯能力,满足大量数据高速通讯的需求,其带宽利用率进行在视频解码时能达到85%以上,可以实现AVS和H.264的高清视频实时解码。本发明不仅仅适用于SDRAM和DDR SDRAM以及视频解码。
文档编号H04N7/24GK1815625SQ20051006165
公开日2006年8月9日 申请日期2005年11月18日 优先权日2005年11月18日
发明者彭聪, 黄晁, 孙宁, 龚国旺 申请人:宁波中科集成电路设计中心有限公司