一种针对图像处理的同步动态随机存储器存取方法

文档序号:6541677阅读:115来源:国知局
专利名称:一种针对图像处理的同步动态随机存储器存取方法
技术领域
本发明涉及存储器应用领域,特别是一种针对图像处理的同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)存取方法。
背景技术
在数字图像处理过程中,每帧图像通常分为若干个宏块(Macro Block,MB),每个宏块由一个16×16字节的亮度分量Y和两个8×8字节的色度分量U、V组成,每个亮度分量Y又可以分为四个8×8字节的块(block)。由于图像处理过程中主要涉及到宏块中的亮度分量,因此图像处理中所说的宏块通常指宏块中的亮度分量。图1所示的是图像帧中的一个宏块A,宏块A在图像帧中的位置是从i行到i+15行、从j列到j+15列,宏块A的大小为16行16列,含有16×16=256字节。
SDRAM是数字图像处理过程中常用的存储器。如图2所示的是一个512Mbit8位数据宽度的SDRAM芯片,该芯片包括4个体(bank)bank0、bank1、bank2、bank3。该SDRAM的地址管脚包括1个片选信号CS0管脚,2个体信号bank0bank1管脚,13个行(row)列(column)地址复用管脚。当需要读取一个8位数据时,SDRAM控制器向该SDRAM芯片发出的地址数据包括CS0,bank0bank1,row,column。地址数据中CS0为一位,表示选中该芯片;bank0bank1为两位,表示选中该芯片上的某一个体,例如00表示选中bank0、01表示选中bank01、10表示选中bank2、11表示选中bank3;row为13位,表示行地址;column为11位,表示列地址。通常对于SDRAM中一个字节的26位地址A25A24...A1A0,对应的地址映射为CS0、column、bank0bank1、row。通常将bank中的一行称为一页(page),由于本例中列地址为11位,因此本例中页的大小为2Kbyte,同样由于本例中行地址为13位,因此每列的大小为8Kbyte。
参考图3,在现有技术中通常将一个宏块数据存储在SDRAM芯片同一个体的同一个列中,图3中左边是宏块A从i行至i+15行在CPU虚拟内存中分成16行,它们都存储在图3右边所示的SDRAM中bank0的一列。
参考图4,现有技术对于图像帧中每一个宏块存储的流程如下步骤401,图像处理程序需要存储一个宏块数据时,处理器向SDRAM控制器发出存储一个宏块数据的指令、一个宏块的数据以及该宏块数据在处理器中的虚拟地址。
步骤402,SDRAM控制器接收到上述指令后,将该宏块数据映射到SDRAM芯片同一个体的一个列中,即产生包括CS0、bank0bank1、row、column的地址信息,其中宏块内各个数据的CS0、bank0bank1、column相同,而row不同。
具体映射过程例如SDRAM控制器将处理器输出的虚拟地址中的高位地址映射到SDRAM的列地址,低位地址映射到SDRAM页面内的行地址。由于一个宏块在处理器中的虚拟地址仅在低位地址发生变化,因此所述的行地址是变化的、而列地址保持不变,这样该宏块数据就被映射到了SDRAM中的同一个列。
步骤403,SDRAM控制器依次存储上述宏块数据中的16行数据,其中宏块的每行数据存储过程如下a、SDRAM控制器发送激活(active)命令和CS0、bank0bank1、row,根据地址信息中的CS0、bank0bank1和row选中一个bank并激活与row地址相应的行;b、SDRAM控制器发送write命令和column,在指定的bank和行中根据地址信息中的column选中相应的列,并写入一个字节数据;c、SDRAM控制器发送预充电(precharge)命令让上述行失活,即关闭当前行。这是由于下一个数据存储在不同的行,SDRAM需要将当前的行失活才能激活不同的行。
重复执行a、b、c,依次写入上述宏块一行的16个数据,从而完成上述宏块一行数据的存储。
步骤404,结束当前宏块的存储过程。
在现有技术中,读取图像帧中每一个宏块的流程如图5所示,包括以下步骤步骤501,图像处理程序需要读取一个宏块数据时,处理器向SDRAM控制器发出读取该宏块数据的指令和该宏块数据在处理器中的虚拟地址。
步骤502,SDRAM控制器接收到上述请求后,将该宏块数据映射到SDRAM芯片中的一列,例如将处理器输出的虚拟地址中的高位地址映射到SDRAM的列地址、低位地址映射到SDRAM页面内的行地址,产生该宏块数据在SDRAM中的地址信息。
步骤503,SDRAM控制器依次读取上述宏块数据中的各行数据,并将各行数据返回给程序。从SDRAM读取宏块中一行数据的过程如下A、SDRAM控制器发送active命令和CS0、bank0bank1、row,根据地址信息中的CS0、bank0bank1和row选中相应的bank并激活与row地址相应的行;B、SDRAM控制器发送read命令和column,在指定的bank和行中根据地址信息中的column选中相应的列,并读取一个字节数据;C、SDRAM控制器发送precharge命令让上述行失活。这同样是由于下一个数据存储在不同的行,SDRAM需要将当前的行失活才能激活不同的行。
D、重复执行A、B、C,读取上述宏块一行的16个数据后,将这一行数据返回给程序。
步骤503,结束当前宏块的读取。
图6和图7给出了在上述存储和读取一个宏块数据过程中的时序图,最上面一行是CPU时钟周期,中间一行是SDRAM控制器发送的命令,第三行是写入SDRAM芯片或从SDRAM芯片中读取的数据,这里所有信号都是在每个时钟周期的上升沿触发。在上述存取一个宏块数据的过程中,在发送第一个active命令后过3个时钟周期,相应的bank和行被激活,然后发送write或read命令;再过3个时钟周期之后,选中相应的列并在该地址中存取1个字节数据,再发送precharge命令;再过3个时钟周期后,刚选中的行被失活,然后发送active命令,开始下一个字节数据的存取;重复上述过程直到完成一个宏块所有数据的存取。通过上述分析可以看出,第一个字节数据的存取需要6个时钟周期,其它255个字节数据的存储各需要9个时钟周期,那么存取一个宏块数据即256字节总共需要用的时间为6+255×9=2301个时钟周期。
从上述现有技术中可以看出,由于SDRAM控制器将同一个宏块数据映射到SDRAM芯片中不同的行,导致对一个宏块数据的写入或读取时都需要增加SDRAM的precharge和active命令,将导致每读取一字节数据至少90ns的访问延迟,大大降低了SDRAM存取图像数据的速度。

发明内容
有鉴于此,本发明提出了一种针对图像处理的SDRAM存取方法,用以提高SDRAM存取图像数据的速度。
根据上述目的,本发明提供了一种针对图像处理的SDRAM存取方法,在图像处理过程中以图像的数据块为数据存取单位,该方法包括以下步骤A.SDRAM控制器接收到存取一个数据块的请求后,根据请求中所述数据块在处理器中的虚拟地址产生所述数据块中各个数据在SDRAM中的地址信息,所述地址信息包括SDRAM的片选信号、体信号、行地址信息和列地址信息,其中所述数据块中各个数据的片选信号、体信号和行地址信息相同;B.根据所述片选信号、体信号和行地址信息激活SDRAM中对应的行;
C.SDRAM控制器发送存取命令和所述列地址信息;在步骤B所述的行中,选中所述列地址信息指示的列,并在所述列中存取所述数据块中与所述列地址信息对应的数据。
所述数据块为宏块或块。
步骤A中所述根据请求中所述数据块在处理器中的虚拟地址产生所述数据块中各个数据在SDRAM中的地址信息的步骤包括将所述虚拟地址中的高位地址映射为SDRAM的行地址,以及将虚拟地址中的低位地址映射为SDRAM的列地址。
较佳地,步骤A中所述根据请求中所述数据块在处理器中的虚拟地址产生所述数据块中各个数据在SDRAM中的地址信息的步骤包括将所述虚拟地址中的高位地址与一位低位地址进行运算后映射为SDRAM的行地址,以及将虚拟地址中的低位地址映射为SDRAM的列地址。
步骤B包括SDRAM控制器发送激活active命令和片选信号、体信号和行地址信息;根据所述片选信号选中该片选信号指示的SDRAM芯片;在所述SDRAM芯片中根据体信号选中该体信号指示的体;在所述体中根据所述行地址信息激活该行地址信息指示的行。
步骤C中所述列地址信息为所述数据块中各个数据的列地址信息;所述SDRAM控制器发送存取命令和所述列地址信息的步骤为SDRAM控制器依次发送存取命令和所述数据块中各个数据的列地址信息。
较佳地,在步骤C中,SDRAM控制器依次连续地发送存取命令和所述数据块中各个数据的列地址信息。
步骤C之前进一步包括确定步骤A中所述列地址信息中第一个数据的列地址信息为起始列地址信息的步骤;步骤C中所述SDRAM控制器发送存取命令和所述列地址信息的步骤为SDRAM控制器发送存取命令和所述起始列地址信息;步骤C中所述选中所述列地址信息指示的列的步骤包括根据所述起始列地址信息和预先设定的突发burst模式确定burst模式的列地址信息,选中busrt模式的列地址信息指示的列。
在步骤C之后进一步包括关闭步骤B中所述的行的步骤。
进一步,SDRAM控制器通过发送预充电precharge命令关闭步骤B中所述的行。
从上述方案中可以看出,由于本发明将数据块的数据映射到SDRAM的同一个行中,与现有技术相比,本发明在存取一个数据块的数据时不需要多余的precharge、active命令,只需要一个write或read命令,减少了在存取数据时的访问延迟,从而提高了SDRAM存取图像数据的速度,提高了图像处理的效率。


图1为宏块在图像帧中的示意图;图2为SDRAM芯片示意图;图3为现有技术中一个宏块数据在SDRAM中的地址映射关系示意图;图4为现有技术中存储一个宏块数据的流程图;图5为现有技术中读取一个宏块数据的流程图;图6为根据现有技术存储一个宏块数据的时序图;图7为根据现有技术读取一个宏块数据的时序图;图8为本发明中一个宏块数据在SDRAM中的地址映射关系示意图;图9为根据本发明存储一个宏块数据的流程图;图10为根据本发明读取一个宏块数据的流程图;图11为根据本发明存储一个宏块数据的时序图;图12为根据本发明读取一个宏块数据的时序图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
参考图8,本发明将一个宏块数据全部映射在SDRAM芯片同一个体的同一行中。图8中左边所示的是宏块A在从i行到i+15行在CPU虚拟内存中分成16行,它们都存储在图8右边所示的SDRAMbank0的一行中。
如图9所示,本发明对于图像帧中每一个宏块存储的流程如下步骤901,图像处理程序需要存储一个宏块数据时,处理器向SDRAM控制器发送存储指令和一个宏块数据以及该宏块数据在处理器中的虚拟地址。
步骤902,SDRAM控制器接收到上述指令后,将该宏块数据映射到SDRAM芯片中的一行,即产生该宏块数据在SDRAM芯片中的地址,包括片选信号CS0、体信号bank0bank1、行地址信息row、列地址信息column,其中该宏块所有数据的CS0、bank0bank1、row相同。
本发明的映射过程与现有技术不同,以现有技术中举例的地址映射方法为例,本发明将处理器输出的虚拟地址中的高位地址映射到SDRAM的行地址,低位地址映射到SDRAM页面内的列地址。由于一个宏块在处理器中的虚拟地址仅在低位地址发生变化,经过本发明的映射之后,行地址是相同的、而列地址是变化的,因此一个宏块数据就被映射到了SDRAM的同一个行中。
由于目前SDRAM芯片的一行为512字节到4096字节,远大于图像处理中的一个宏块的256字节,因此在SDRAM芯片中的一行完全能够存储一个宏块数据。
为了使得不同的宏块映射到SDRAM芯片的不同行中,可以结合虚拟地址中的高位地址和低位地址产生行地址信息。还以上面的地址映射方法为例,将高位地址中的一位或多位与一位低位地址进行“与”、“或”或者其它运算后产生行地址信息,就能够使得不同宏块的行地址信息不同,从而将不同宏块映射到不同的行。
步骤903,SDRAM控制器发送active命令和CS0、bank0bank1、row,根据地址信息中的CS0、bank0bank1和row选中CS0对应的SDRAM芯片中bank0bank1对应的bank,并激活与row地址对应的行。
步骤904,SDRAM控制器发送write命令和A的column,在指定的bank和行中根据地址信息中的column选中相应的列,并写入宏块的第一个字节的数据,即A。重复发送write命令和column,依次根据地址信息中的column选中相应的列并写入一字节数据,直到写入第A+255字节数据。
由于本发明中一个宏块数据是存储在同一个行中的,中间不需要precharge和active命令,并且后一个write命令可以在前一个write命令之后立即发出,即连续地发送write命令和列地址信息,那么在前一个write命令写入数据的下一个时钟周期上升沿就可以写入下一个数据,减少了写入两个数据之间的延迟时间。
在本步骤中,还可以采用突发(burst)模式访问SDRAM,这种访问模式以访问指定的地址开始,然后按照预先设定的方式定位其它的数据的地址。Burst模式访问顺序主要由突发长度(burst length)、突发类型(burst type)和起始列地址所决定。突发长度和突发类型都是在SDRAM上电初始化时载入模式寄存器(mode register)的,这些参数是由厂商或者用户定义的。其中突发类型主要分为两种连续存取(sequential)和交叉存取(interleaved);突发长度决定了read或者write命令能够访问的列地址的最大数目,对于sequential和interleaved这两种突发类型它们的突发长度可以是1、2、4、8,另外全页(full-page)突发模式仅仅适用于sequential类型,全页突发可以用突发终止(burst terminate)命令来产生任意的突发长度。当一个read或者write命令被发出之后,突发长度就被选定了,以后的访问操作会以这个突发长度为限进行存取操作。
以全页突发为例,在SDRAM上电初始化时载入模式寄存器的突发类型和突发长度分别为sequential和full-page,在本步骤中SDRAM控制器发送write命令和起始列地址,即该宏块第一个数据的列地址,不妨设为n列,根据起始列地址n以及突发模式得出该宏块数据在行中的列地址为n、n+1、...、n+256,在步骤903选中的行中根据上述列地址依次写入该宏块的256个数据。在写入第256个数据时,SDRAM控制器发送burst terminate命令,从而完成该宏块的数据存储。
步骤905,在完成写入该宏块中A+255字节数据时,SDRAM控制器发送precharge命令,使得当前行失活,以便于进行下面的存储或读取操作。
步骤906,结束当前宏块数据的存储。
如图10所示,本发明中每一个宏块的读取过程如下步骤1001,图像处理程序需要读取一个宏块数据时,处理器向SDRAM控制器发出读取命令和该宏块数据在处理器中的虚拟地址。
步骤1002,SDRAM控制器接收到上述请求后,根据该宏块数据在处理器中的虚拟地址将该宏块数据映射到SDRAM中的一行,并产生地址信息,包括片选信号CS0、体信号bank0bank1、行地址信息row、列地址信息column。其中的映射过程与本发明存储一个宏块数据时的映射过程相同。
步骤1003,SDRAM控制器发送active命令和CS0、bank0bank1、row,根据地址信息中的CS0、bank0bank1和row选中CS0对应的SDRAM芯片中bank0bank1对应的bank,并激活与row地址对应的行。
步骤1004,SDRAM控制器发送read命令和A的column,在指定的bank和行中根据地址信息中的column选中相应的列,并读取该宏块的第一个字节的数据,即A。重复发送read命令及column,依次根据地址信息中的column选中相应的列并读取一字节数据,直到读取A+255字节数据。
同样由于本发明中一个宏块数据是存储在同一个行中的,中间不需要precharge和active命令,后一个read命令可以在前一个read命令之后立即发出,即连续地发送read命令和列地址信息,那么在前一个read命令读取数据的下一个时钟周期上升沿就可以读取下一个数据,减少了读取两个数据之间的延迟时间。
在本步骤中同样可以采用burst模式读取该宏块数据,具体过程和写入时一样,不同的是在写入时发送的是write命令,而在读取时发送的是read命令。
步骤1005,在完成读取该宏块中A+255字节数据时,SDRAM控制器发送precharge命令,使得当前行失活,以便于进行下面的存储或读取操作。
步骤1006,结束当前宏块数据的读取。
参考图11和图12所示的本发明存储和读取数据的时序图,图中存取数据时采用连续发送write/read命令的方式。如图所示,根据本发明存储一个宏块数据或者读取一个宏块数据,在写入或读取第一个数据时需要6个时钟周期,而后面的255个各需要1个时钟周期,存储或读取一个宏块数据总共需要6+256=262个时钟周期,不到现有技术230 1个时钟周期的八分之一。
本发明也可以应用在图像处理中单位数据块是块(block)的情形,所述步骤与宏块一样,这里不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种针对图像处理的同步动态随机存储器SDRAM存取方法,其特征在于,在图像处理过程中以图像的数据块为数据存取单位,该方法包括以下步骤A.SDRAM控制器接收到存取一个数据块的请求后,根据请求中所述数据块在处理器中的虚拟地址产生所述数据块中各个数据在SDRAM中的地址信息,所述地址信息包括SDRAM的片选信号、体信号、行地址信息和列地址信息,其中所述数据块中各个数据的片选信号、体信号和行地址信息相同;B.根据所述片选信号、体信号和行地址信息激活SDRAM中对应的行;C.SDRAM控制器发送存取命令和所述列地址信息;在步骤B所述的行中,选中所述列地址信息指示的列,并在所述列中存取所述数据块中与所述列地址信息对应的数据。
2.根据权利要求1所述的方法,其特征在于,所述数据块为宏块或块。
3.根据权利要求1所述的方法,其特征在于,步骤A中所述根据请求中所述数据块在处理器中的虚拟地址产生所述数据块中各个数据在SDRAM中的地址信息的步骤包括将所述虚拟地址中的高位地址映射为SDRAM的行地址,以及将虚拟地址中的低位地址映射为SDRAM的列地址。
4.根据权利要求1所述的方法,其特征在于,步骤A中所述根据请求中所述数据块在处理器中的虚拟地址产生所述数据块中各个数据在SDRAM中的地址信息的步骤包括将所述虚拟地址中的高位地址与一位低位地址进行运算后映射为SDRAM的行地址,以及将虚拟地址中的低位地址映射为SDRAM的列地址。
5.根据权利要求1所述的方法,其特征在于,步骤B包括SDRAM控制器发送激活active命令和片选信号、体信号和行地址信息;根据所述片选信号选中该片选信号指示的SDRAM芯片;在所述SDRAM芯片中根据体信号选中该体信号指示的体;在所述体中根据所述行地址信息激活该行地址信息指示的行。
6.根据权利要求1、3、4之一所述的方法,其特征在于,步骤C中所述列地址信息为所述数据块中各个数据的列地址信息;所述SDRAM控制器发送存取命令和所述列地址信息的步骤为SDRAM控制器依次发送存取命令和所述数据块中各个数据的列地址信息。
7.根据权利要求6所述的方法,其特征在于,在步骤C中,SDRAM控制器依次连续地发送存取命令和所述数据块中各个数据的列地址信息。
8.根据权利要求1、3、4之一所述的方法,其特征在于,步骤C之前进一步包括确定步骤A中所述列地址信息中第一个数据的列地址信息为起始列地址信息的步骤;步骤C中所述SDRAM控制器发送存取命令和所述列地址信息的步骤为SDRAM控制器发送存取命令和所述起始列地址信息;步骤C中所述选中所述列地址信息指示的列的步骤包括根据所述起始列地址信息和预先设定的突发burst模式确定burst模式的列地址信息,选中busrt模式的列地址信息指示的列。
9.根据权利要求1所述的方法,其特征在于,在步骤C之后进一步包括关闭步骤B中所述的行的步骤。
10.根据权利要求9所述的方法,其特征在于,SDRAM控制器通过发送预充电precharge命令关闭步骤B中所述的行。
全文摘要
本发明公开了一种针对图像处理的SDRAM存取方法,该方法包括以下步骤SDRAM控制器接收到存取一个数据块的请求后,产生数据块中各个数据在SDRAM中的地址信息,所述地址信息包括片选信号、体信号、行地址信息和列地址信息,其中各个数据的片选信号、体信号和行地址信息相同;根据所述片选信号、体信号和行地址信息激活SDRAM中对应的行;在步骤B所述的行中依次根据所述列地址信息选中所述列地址信息指示的列并存取所述数据块的各个数据。由于本发明将一个数据块的数据映射到SDRAM芯片中的同一行,在读取或写入该数据块的数据时,不需要多余的预充电和激活命令,减少了访问SDRAM的延时时间,提高了数据存取的速度。
文档编号G06F12/00GK1674151SQ200510056888
公开日2005年9月28日 申请日期2005年3月28日 优先权日2005年3月28日
发明者白锋 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1