SoC实时信号处理系统中的存储系统设计
作者:李 栋,付 博,涂宝招 时间:2006-11-06 00:13 来源:
摘 要:在实时信号处理系统中,常常需要对原始数据以及中间处理数据以行或列交错的形式进行访问,使用通用的DDR-SDRAM系统难以满足系统的实时要求。在基于SoC ( System on Chip)技术的实时信号处理系统中,设计了具有全新体系结构的存储系统,新的存储系统的访存效率达到一般的DDR-SDRAM的2~3倍左右。
关键词:SoC;IC;DDR存储系统;实时信号处理系统
引言
实时信号处理系统在各种民用、军用系统中都有着广泛的应用。采用SoC技术,可以将整个信号处理系统集成到一块芯片中,并使系统中的各个IP具有很好的可复用性,因此基于SoC技术的实时系统是目前的研究热点之一。由于实时信号处理系统中原始数据以及中间处理数据往往很多(超过1GB),所以提高存储系统的访存效率是满足实时性要求的关键技术。
在各种常见的存储介质中,SRAM访问速度最快,但是容量小、价格昂贵;Flash访问速度有限;SDRAM速度较快、容量较大、应用广泛;DDR-SDRAM在时钟的上下沿都可以进行数据传输,是目前应用最广的存储介质。在DDR-SDRAM中访问同一个ROW内的数据可以达到较高效率,但是对于不同ROW间数据的连续访问效率较低。在实时信号处理系统中,对信号原始数据以及中间处理数据的访问是以行或列交错的形式进行的,采用通用的DDR-SDARM存储系统往往难以兼顾行访问效率和列访问效率,造成整个系统的平均访存效率较低,因此往往成为系统的瓶颈,难以满足实时的要求。
本文针对实时数字信号处理系统的特点,设计了一种新的存储体系结构,重新组织DDR存储颗粒的结构,并对地址空间进行了有效的变换,兼顾了行访问效率和列访问效率,新的存储系统IP集成到整个SoC系统中后,整体的访存效率达到通用DDR-SDRAM系统的2~3倍左右,有效地满足了实时信号处理系统的实时性要求。
DDR -SDRAM存储系统访存分析DDR-SDRAM (Double Data Rate SDRAM)容量大、速度快,在时钟的上沿和下沿都可以驱动数据,是目前最为常用的存储系统。本部分将分析DDR-SDRAM访存方式与速度的关系,以便于新的存储系统结构的设计。
DDR-SDRAM的颗粒由2或4个Bank组成,每个Bank是一个以行列方式组织的存储单元阵列。在进行了初始化之后,数据可以进行正常的访问,存储单元每隔一定时间,需要进行刷新。数据访问的过程一般有:
(1)打开一行数据(将一行数据写入颗粒中的Buffer),时间为Tcas(可以设定为2,2. 5个周期)。
(2)突发方式读写Buffer中的数据(突发长度可为2,4,8),每个周期可以读出两个数据。
(3)关闭打开的行数据(将Buffer中的数据写回存储阵列),花费时间为T
RP= 20ns。DDR颗粒的数据访问基本流程如图1所示。
图1 DDR颗粒的数据访问基本流程
假设系统的时钟周期为T
period,不考虑存储颗粒周期性的刷新,对于存储在同一行内的数据列(长度为x),访问时间为T = T
cas+ x/2×T
perioD+ T
RP。若访问的x个数据每两个为1组,每组数据s所在的行不同,则访问时间为T = ( T
cas+ T
period+T
RP)×x/2。可见,如果每次需要访问的数据存储在同一行中,则访问时间可以大大减少。多体交叉技术采用一次打开多个Bank的方法,可以相对减少访存的Overhead,但是同一行内的数据的突发读写同样可以大大减少数据访问的时间。
新的存储系统设计方案新的存储系统设计方案的主要思想是将原始数据的存储位置进行调整,使原始数据在以行方式和列方式读写的时候,在进行一定长度的突发读写时,都可以不变换行地址,这样就兼顾了行读写效率和列读写效率,从而使系统的总体平均访存效率得到大幅度的提高。由于地址空间映射关系的变化,新的存储系统不采用通用的DDR-SDRAM的DIMM条,将对存储颗粒进行重新排列,并对地址线和数据线进行重排。在此基础上,采用特殊的读写访问控制方法,可以使新的存储系统的访存效率大幅度提高。
新的存储系统将所有DDR存储颗粒分为四组,每组数据线宽度为16bit,每组地址线的低两位各不相同。每组存储颗粒拥有独立的控制器模块,每组颗粒的数据输入输出根据输入地址以及行列读写方式的不同对数据和地址进行重新组合。
图2 新的存储方案的简图。
地址空间变化方法在本文所应用的实时信号处理系统中,原始信号数据是16k×16k的点阵数据I[ x∶y ] ,每个数据包含16bit的实部和16bit的虚部,共1GB,系统地址的地址线Sys_ADDR [ 31:0 ]共32bit,其中有效地址位数为30bit。地址和数据的映射关系为实部Sys_ADDR [ x:y ] = ( x×16k+ y)×4;虚部Sys_ADDR [ x:y ] = ( x×16k+ y)×4+ 2。
存储系统的地址线DDR_ADDR [ 31:0 ]为32bit,其中有效位是低30bit。DDR地址的[ 9:0 ]为列地址,[ 22:10 ]为行地址,[ 24:23 ]为Bank地址。新的存储系统的四个部分被称为DDR0、DDR1、DDR2和DDR3,对应的数据总线分别为DDR _DAT0 [ 15:0 ] ,DDR_DAT1 [ 15:0 ] ,DDR_DAT2[ 15:0 ] ,DDR_DAT3 [ 15:0 ]。DDR _ADDR0,DDR _ADDR1,DDR _ADDR2,DDR_ADDR3,由于共有四个模组,而每次读写时采用64bit对齐方式,所以DDR 地址的低三位为0,DDR _ADDR0,DDR _ADDR1,DDR_ADDR2,DDR_ADDR3的有效位数都是25bit,共可以进行1GB地址空间的寻址。采用行模式,具体的地址变换方法如下所示( Sys_ADDR简写为SA):
DDR_ADDR0 = {SA[23:22] ,SA[27:24] ,SA[15:9 ] ,SA[17:16] ,SA[21:18] ,SA[8:4] ,SA[1 ]};
DDR_ADDR1 = {SA[23:22] ,SA[27:24] ,SA[15:9 ] ,SA[17:16] ,SA[21:18] ,SA[8:4] ,SA[1 ]};
DDR_ADDR2= {SA[23:22] ,SA[27:24] ,SA[15:9 ] ,SA[17:16] ,SA[21:18] ,SA[8:4] ,SA[1 ]};
DDR_ADDR3 = {SA[23:22] ,SA[27:24] ,SA[15:9 ] ,SA[17:16] ,SA[21:18] ,SA[8:4] ,SA[1 ]};
行模式下的数据要根据原始数据的行号Sys_ADDR [ 29:16]的低两位( Sys_ADDR[ 17:16] )来重组,具体的重组方法如图3所示。
图3行模式下的数据重组
在行方式进行读写时,Sys_ADDR只有[ 15:2]会发生变化。由于DDR地址的低10位为列地址线,Sys_ADDR [ 15:2]中的[ 8:4]处于列地址线中,而且Sys_ADDR在列地址线中,所以最长的突发为64个数据(这里的每个数据指64bit)。在列模式下,Sys_ADDR [ 15:2]决定了原始数据的列号,列号的低两位Sys_ADDR [ 3:2]决定了具体的地址变换方式,如图4所示。
列模式下数据要根据原始数据的列号Sys_ADDR [ 3:2]的低两位( Sys_ADDR [ 3:2] )来重组,具体的重组方法与图3类似,将决定排列方式的Sys_ADDR [ 17:16]换成Sys_ADDR [ 3:2]即可。
在列方式进行读写时,Sys_ADDR只有[ 30:16]会发生变化,由于DDR地址的低10位为列地址线,Sys_ADDR [ 30:16]中的[ 21:18]处于列地址线中,Sys_ADDR在列地址线中。另外,Sys_ADDR [ 23:22]处于Bank线,系统采用的是多体交叉技术,可以跨Bank进行突发读写,所以最长的突发为128个数据(这里的每个数据指64bit)。
存储颗粒阵列排列
从图4所示的列模式下地址变换方法可以看出,在地址空间的变化过程中的列模式下,不同的DDR存储颗粒在读写过程中需要的地址有所不同,所以无法采用通用的DDR DIMM条,因此需要重新组织存储颗粒模组。具体的方法是:所有的存储颗粒总容量为1GB,每块颗粒容量为256Mbit,数据宽度为8bit,地址宽度为13bit,共需32块存储颗粒。将所有的存储颗粒分为四组,每组颗粒内部具有相同的地址连接方式,所有颗粒的地址线的DDR_ADDR [ 12:2]完全相同,但是每组颗粒都具有自己的DDR_ADDR [ 1:0 ]。所有的颗粒又可以分为四排,每排都可以达到64bit的数据输出宽度,每排之间采用CS[ 3:0 ]进行片选。具体的连接组织方式如图5所示。
图4列模式下地址变换方法
分析与比较
通用DDR系统行列模式下的平均访存效率分析
若采用通用的DDR-SDRAM,则系统地址空间和存储地址空间之间的映射关系为:DDR_ADDR = Sys_ADDR。当系统按照行方式访问原始数据或中间数据时,突发读写最大长度应小于颗粒的列长度(1kbit),若数据长度为x,则访问时间为T
h-1k= T
cas+ x/2×T
perioD+ T
RP= 516*T
period当系统按照列方式访问原始数据或中间数据时,突发读写最大长度应小于颗粒的列长度( 1kbit),若数据长度为x,由于每个原始数据点的对应数据都不在同一行中,总的访问时间为T
v-1k= T
cas+ T
perioD+ T
RP×x/2= 2500*T
period以行方式访问再以列方式访问整个原始数据(共1GB),所消耗的总时间为
系统工作频率为100MHz,则可得T = 4031774720ns,数据的平均访问速度为Vddr≈ 4126GbPs。
新的存储系统行列模式下的平均访存效率分析由第3节可知,在行模式下,采用突发读写长度为64bit的方式,则每次访问的数据都处于同一行中,一次突发读写的时间为T
h-64= T
cas+ 64/2×T
perioD+ T
RP= 36×T
period。
在列模式下,采用突发读写长度为128bit的方式,则每次访问的数据都处于同一行中,一次突发读写的时间为T
v-128=T
cas+ 128/2×T
perioD+ T
RP= 68×T
period。
以行方式访问再以列方式访问整个原始数据(共1GB),所消耗的总时间为
数据的平均访问速度为Vnew≈ 11172GbPs。新的存储系统和通用DDR存储系统相比,在纯粹的行读写模式下,Burst长度较长(大于64bit)的情况下,访问时间略高于通用DDR存储系统。但是在列模式下,新的存储系统的访问时间远远低于通用DDR存储系统。行列混合模式下的平均访问时间也比通用DDR系统有了大幅度的降低。对于不同长度不同读写方式下的比较如图6所示。新的存储系统已经在FPGA上验证调试通过。
结 论
本文针对实时数字信号处理系统的特点,设计了一种新的存储体系结构,重新组织DDR存储颗粒的结构,并对地址空间进行了有效的变换,兼顾了行访问效率和列访问效率。新的存储系统IP集成到整个SoC系统中后,整体的访存效率达到通用DDR-SDRAM系统的2~3倍左右,有效地满足了实时信号处理系统的实时性要求。下一步的工作将集中在整个系统的低功耗优化方面。