基于存储空间复用提高sdram总线有效访问速率的方法
【技术领域】
[00011本发明涉及SDRAM领域,具体涉及基于存储空间复用提高SDRAM总线有效访问速率 的方法。
【背景技术】
[0002] 随着网络带宽和网络数据量的不断快速增加,处于网络各个关键节点的通信设备 处理能力要求也不断提高。通信设备的处理能力不仅仅体现在芯片本身运算能力的提升, 同时也要求芯片对外围数据的存储、读写、输入输出等单元速率相应提升。然而,芯片本身 对外部存储访问能力的快速提升与外部存储器的性能总是不完全同步,这在一定程度上成 为制约芯片性能发挥的瓶颈。
[0003] 作为网络重要组件之一的核心路由器,除了拥有上百万条路由表外,还有大量的 MAC地址表、MPLS标签表、接口表、VLAN表和访问控制列表(ACL)等表项,因此,对芯片外围数 据存储的容量和性能提出了更高的要求。
[0004] SDRAM(同步动态随机存储器)相对于其它如SRAM(Static Random Access Memory)、TCAM(Ternary Content Addressable Memory)等存储芯片,以其价格低廉和存储 空间大的优势,在网络设备存储扩展方面有着广泛的应用。当前芯片外部SDRAM接口已经发 展到第三代(DDR3)并取得广泛应用,其主频从800MHz到2133MHz;部分芯片已经开始兼容集 成第四代(DDR4)接口,DDR4虽然支持更高主频,但是其价格昂贵,目前在产品商用方面使用 较少。虽然SDRAM访问频率有所提高,但仍满足不了芯片线速处理报文时对SDRAM接口访问 的性能要求。主要原因在于:访问一次SDRAM要完成必要的准备工作(激活)和必要的收尾工 作(充电、刷新、校准),数据总线上有效数据传输时间DQ占整个访问时间比例比较小,也就 是说即使总线频率很高,时钟tCK周期很短,但由于tCL周期变长,数据总线的利用率(一次 操作连读8次为例计算)只有15 %左右。以DDR3SDRAM常用1600MHz的访问频率为例计算,在 易1J除芯片读写过程中激活时间、充电时间、刷新时间、校验时间等开销后,对一个SDRAM的同 一物理Bank随机访问的实际速率约20Mpps,这与当前40G芯片60Mpps随机访问要求有很大 差别。
[0005] 鉴于SDRAM存在上述局限,当前业界对SDRAM存储接口进行了不同方式的优化和改 进,主要有以下几个方面:
[0006] (1)在片内增加读写临时存储空间Cache。
[0007] 一个SDRAM局部区域共享一个Cache项,Cache项中临时保存着该区域SDRAM最近一 次读入的数据,芯片如果在需要读入外部数据时,首先会在片内Cache中查找,如果查找命 中,将直接使用Cache中的数据交给芯片运算器处理,而不用在外部SDRAM中去读取,这样就 节省了一次SDRAM的访问开销,从而提高了数据读写的速率。这种利用芯片运行过程中空间 局部性,对于芯片长期从事重复数据运算的应用场景确实有一定的效果,但是对于网络设 备中需要处理的形式多样的网络报文和交替查找大量转发表项的应用场景,其效果并不明 显,反而会适得其反。这是由于进入芯片的每个数据报文可能查找SDRAM的表项各不一样, C a c h e项会被频繁的更新,新来的数据报文往往在C a c h e中找不到需要的数据(C a c h e Miss),转而要向SDRAM中读取,数据从外部SDRAM中读取到Cache中后再传递给运算单元进 行处理,这种Cache Miss造成读写一次SDRAM需要更长的时间,反而不能提高读写外部存储 的速率。
[0008] (2)基于SDRAM读写同一个Bank下的连续地址效率高,以及每次读写操作后都需要 进行预充电的特点,对芯片动态随机访问SDRAM的中间加入读写命令缓冲区,通过对读写命 令的序列进行分析和仲裁,根据SDRAM读写时序特点进行读写操作的优化。优化的方法一是 对于缓冲区中读相同Bank下的同一行但是不连续的数据的几次操作,转换为一次连续读操 作,再通过掩码去掉中间的无关数据,返回需要读操作需要的数据;优化的方法二是对不同 Bank下的不同行进行随机访问优化,通过"兵乓操作"让访问在不同的Bank上轮换进行,从 而隐藏了访问操作后所需的充电时间。然而,方法一的优化作用比较有限,原因在于:这种 对同一 Bank下同一行的读写操作在实际中概率不高,能够实施优化的概率不大;方法二为 了实现轮换的"兵乓操作",改变了访问SDRAM的顺序,有可能会导致数据的错误,这种优化 方案比较适合对于读写操作顺序没有太多要求的场合,并且这种采用"兵乓操作"的算法对 提高SDRAM访问速率比较有限,算法对SDRAM访问优化的深度还不够完善。另外,在采用常用 的"兵乓操作"进行优化后,通过FIFO缓冲去将原本连续访问同一个Bank不同行的操作转换 为依次访问两个不同Bank下的数据,可以部分隐藏系统充电时间tRP(7clock),通过时间叠 加隐藏了 2clock,优化后的带宽利用率大约为15.4%,访问带宽为21.321^?8;如果采用 4Bank之间的"乒乓操作",可以隐藏整个充电时间(7clock),优化后最大的带宽利用率为 20 %,访问速率为26.65Mpps。可见优化后带宽利用率还是没有得到较大的改善,与实际应 用60Mpps的需要还是有较大的差距。
[0009] 由此,在网络设备40G平台中,要求SDRAM提供足够大的访问带宽,保证其及时查找 表项并实现报文的线速转发,并且这个过程中访问SDRAM动态随机性大、规律性小,涉及表 项条目多、重复性小,单纯的应用上述优化方法难以满足实际应用需求。
【发明内容】
[0010]本发明所要解决的技术问题是现有提高SDRAM存储访问能力的方式难以满足实际 应用需求的问题。
[0011] 为了解决上述技术问题,本发明所采用的技术方案是提供一种基于存储空间复用 提高SDRAM总线有效访问速率的方法,包括以下步骤:
[0012] 将4片位宽为8比特的SDRAM芯片分成两个组GroupO和Groupl,每组2片SDRAM芯片 共用一个片选信号,内存访问命令利用不同的片选信号在时序上对GroupO和Groupl交替进 行;
[0013] 将表项在物理Bank上存储为4份镜像,且所述4份镜像分别处在不同的Bank内,对 用户虚拟出4个逻辑Bank;
[0014] 对逻辑Bank进行仲裁选择,将用户的内存访问请求按照时序分发到不同的物理 Bank上,实现多个物理Bank之间的轮转访问。
[0015] 在上述方法中,对SDRAM的实际物理内存地址空间与用户地址空间之间做映射,形 成逻辑地址。
[0016]在上述方法中,逻辑地址的最高两位作为SDRAM的Bank的低2位选择地址,依据用 户的访问仲裁输出。
[0017]在上述方法中,每个Bank上增加了两个分别用于存放读写访问命令的队列缓冲 区,用户的随机访问通过处理后,被缓存在对应的逻辑Bank缓冲区上。
[0018] 在上述方法中,用户对同一个逻辑Bank的访问被划分到不同的4个物理Bank上,对 缓冲区中访问请求仲裁器执行的逻辑步骤如下,其中刷新操作P需要在Ts为0或1上,写操作 Μ必须在Ts为0、4、8和12上,读操作F对Ts没有要求。
[0019]本发明,基于Bank镜像和Bank仲裁相结合,通过对总线分组复用,对用户隐藏了每 次SDRAM访问间消耗的激活时间和预充电时间,使得SDRAM同一Bank的访问速率由约20Mpps 提高到65Mpps,满足了当前网络设备40G平台60Mpps的访问速率要求。
【附图说明】
[0020] 图1为本发明中4片SDRAM芯片分组示意图;
[0021 ]图2为本发明中不同Bank内存储示意图;
[0022] 图3为本发明中实际物理内存地址空间与用户地址空间映射示意图;
[0023] 图4为本发明中用户访问示意图;
[0024] 图5为本发明中优化后的读时序图。
【具体实施方式】
[0025] 本发明提供了一种基于存储空间复用提高SDRAM总线有效访问速率的方法,基于 Bank镜像和Bank仲裁相结合,通过对总线分组复用,对用户隐藏了每次SDRAM访问间消耗的 激活时间和预充电时间,使得SDRAM同一Bank的访问速率由约20Mpps提高到65Mpps,满足了 当前网络设备40G平台60Mpps的访问速率要求。下面结合说明书附图和【具体实施方式】对本 发明做出详细的说明。
[0026] 本发明提供的基于存储空间复用提高SDRAM总线有效访问速率的方法,包括步骤:
[0027] 1)将4片位宽为8比特的SDRAM芯片分成两个组GroupO和Groupl,每组2片SDRAM芯 片共用一个片选信号,内存访问命令利用不同的片选信号在时序上对GroupO和Groupl交替 进行。
[0028]如图1所示,本实施例采用4片SDRAM芯片组成外围数据存储器,采用两个片选信号 CS0和CS1,4片位宽为8比特的SDRAM芯片501?舰1、501^12、50狀13和501^14,每两片组成一个 组(GroupO和Groupl ),每组共用一个片选信号。GroupO的数据连接接口数据总线的DATA [15:0 ],Group 1的数据连接接口数据总线的DATA[ 31:16 ],所有其它控制信号四芯片共享。 [0029] 访问命令在时序上对GroupO和Groupl交替进行,每次访问连读8次,共可读出 16bitX8 = 128bit 的数据。
[0030]实际应用过程中,为了能够一次访问读出整条表项,SDRAM的表项存储设计,每条 表项宽度不要超过128bit。
[0031 ] 2)将SDRAM的表项在物理Bank上存储为4份镜像形成4个逻辑Bank。
[0032] 每片SDRAM芯片内部划分为8个物理Bank(Physics Bank),每个物理Bank提供8bit 数据。
[0033]物理Bank类似于一张表格,每次访问需要先指定行,再指定列,从而能够找到这个 单元格,访问SDRAM时一次只能对一个物理Bank访问。SDRAM支持在本Bank预充电的时间内, 对别的Bank进行访问操作,即Bank轮换的寻址(乒乓操作)。
[0034]单一的Bank轮换虽然可以通过隐藏预充电时间,提高
SDRAM总线的利用率,实现访 问速率的优化,但是会破坏随机访问的顺序,为此本发明将SDRAM的表项在物理Bank上存储 了 4份镜像。
[0035] GroupO和Groupl每个组有8个物理Bank,共计16个物理Bank,表项的存储空间原始 在八0,80,0),00上,501^1内部分别镜像四份(厶1,81,(:1,0142,82,〇2,0243,83,〇3,03)。 GroupO与Groupl之间成镜像,同一芯片内部BankO至l」Bank3与Bank4至l」Bank7成镜像,A0,A1, A2,A3内存储的表项内容完全一样,并且分别处在不同的Bank内,其存储图如图2所示。
[0036] 由于利用了镜像功能将一份表项复制保存在不同的逻辑Bank上,因此随机访问过 程中对一条表项的连续四次以内的访问,可以将这对同一表项的访问分发到4个逻辑Bank 上分别进行,从而构成Bank间的轮转访问操作,相比没有做镜像之前,能够实现不破坏随机 访问顺序的前提下,构造出Bank轮转访问顺序。
[0037] 通过Bank的镜像,不但能够支持同一表项的连续四次以内的高效访问,而且能够 实现更大范围内存的Bank轮转访问,在提高了有效总线带宽和访问速率的同时,对于一条 表项的访问速率也相比之前也提高了四倍。
[0038] 3)对SDRAM的实际物理内存地址空间与用户地址空间之间做映射,形成逻辑地址。
[0039]由于SDRAM内部镜像机制的存在,表项在实际SDRAM上存储存在较多的重复,为了 向用户层屏蔽这些镜像的内存结构,让用户看到的SDRAM存储空间和普通没有镜像的存储 空间完全等同的效果。本发明在实际物理内存地址空间与用户地址空间之间做了一次映 射,用户看到的地址实际上是逻辑地址。
[0040] 如图3所示,以2Gbit的SDRAM为例,逻辑地址为22位,逻辑地址的低7位[6:0]作为 SDRAM的列地址上的高7位,逻辑地址的高16位[20:7 ]作为SDRAM的行地址,逻辑地址的最高 两位[22:21 ]作为SDRAM的Bank的低2位选择地址,SDRAM的最高两位Gr和BA两位地址对用户 是隐藏的,是由Bank仲裁器依据用户的访问仲裁输出的。从用户侧看到的是通过最高地址 的2位进行Bank的选择,提供给用户的是共有四个逻辑Bank可以选择进行数据的访问,每个 逻辑Bank地址范围与SDRAM物理地址之间关系的如下表所示。
[0041 ] 4 X 2Gb i t下用户逻辑Bank地址空间与SDRAM物理地址之间的关系 [0042]
[0043] 4)对逻辑Bank进行仲裁选择,将用户的内存访问请求按照时序分发到不同的物理 Bank上,实现多个物理Bank之间的轮转访问。
[0044]如图4所示,用户的随机访问请求(Request)命令首先经过请求分析模块,通过对 请求地址的最高2位分析,再经仲裁器仲裁后分别对逻辑BankA、BankB、BankC、BankD进行访 问。
[0045]每个Bank上增加了两个分别用于存放读写访问命令的队列缓冲区,用户的随机访 问通过处理后,被缓存在对应的逻辑Bank缓冲区上。本发明将写访问缓冲区标记为M_FIF0, 将读缓冲区标记为F_FIF0,其中还有一个用于对芯片刷新命令缓冲区标记为P_FIF0。
[0046] Bank仲裁器主要基于4个逻辑Bank缓冲区中的访问请求命令进行SDRAM逻辑bank 的仲裁选择,将用户的访问请求按照时序分发到16个物理Bank上,实现16个物理Bank之间 的轮转访问。在分发的过程中,三个缓冲区中P _ FIF 0的优先级最高,其次是写缓冲区Μ _ FIFO,优先级最低的是读F_FIF0缓冲区。Bank仲裁调度机制列表如下:
[0048]用户对同一个逻辑Bank的访问被划分到不同的4个物理Bank上,对缓冲区中访问 请求仲裁器执行的逻辑步骤如下,其中刷新操作P需要在Ts为0或1上,写操作必须在Ts为0、 4、8和12上,读操作则对Ts没有要求,读操作的流程如下:
[0049] 步骤1:判断P_FIF0队列中刷新请求是否为空,如果为空则进入步骤2,如果不为空 且Ts % 16 = = 0或Ts % 16 = = 1,则取出命令执行对该虚拟Bank对应的两组Group中共4个逻 辑Bank进行刷新操作。
[0050] 步骤2:判断M_FIF0队列中写请求是否为空,如果为空则进入步骤3,如果不为空并 且Ts % 4= =0则执行写请求,对两个Group中共4个逻辑Bank执行写操作,Ts = Ts+4。
[0051 ] 步骤3:判断F_FIF0队列中读请求是否为空,如果为空则进入步骤4,如果不为空, 则执行读请求,Ts = Ts+l。
[0052] 步骤4:跳转到步骤1。
[0053] 优化后的读时序如图5所示,由图5所示时序可知,优化后的访问时间为:
[0054] -次访问:tRCD+tCL+DQ+tRP(clock);
[0055] 两次访问:tRCD+tCL+DQ+tRP+2 X 1 (clock);
[0056] 三次访问:tRCD+tCL+DQ+tRP+2 X2(clock);
[0057] N次访问:tRCD+tCL+DQ+tRP+2 X (N-l)(clock);
[0058] 平均一次访问时间t为2c lock。
[0059] SDRAM中几个重要参数含义说明:
[0060] tRRD:Bank与Bank之间的切换时钟周期;
[0061 ] tRAS:Activate和Precharge命令之间的最小时钟周期;
[0062] tRC:Activate一行到Activate另一行需要等待的时钟周期;
[0063] tRO):从一行Activate到read/write命令等待的最小时钟周期数;
[0064] tCL:从发出read命令到SDRAM送出数据的时钟周期;
[0065] tRP:充电时钟周期;
[0066] tCK: 一个时钟周期的时长;
[0067] DQ:4cycles(8次连读);
[0068] Ts一个周期为16次访问,一个周期需要的时间No_cycles_per_TDM_round等于Ts X t = 32clock;
[0069] SDRAM的有效访问频率需要扣除芯片刷新方面的损耗,以2Gbit、533Mhz的SDRAM为 例,参数如下表,具体带宽计算过程如下:
[0070]
[0071] 刷新率:Refresh command rate = total no rows/refresh period;
[0072] 刷新带宽:Refresh bandwidth = Read refresh rate X cost of refresh command;
[0073] 逻辑Bank带宽:Lookup rate per logicbank= (f-Refresh bandwidth)/no_ cyc1es-per_TDM-round X no_cop i es
[0074] 考虑到接口实现的复杂度,在满足性能要求的前提下,本发明采用的SDRAM接口数 据总线宽度为32比特,存储结构由4片8比特的SDRAM芯片组成。通过采用多个(6~8个)类似 SDRAM接口,可满足100G、200G平台性能要求。本发明不局限于上述最佳实施方式,任何人应 该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均 落入本发明的保护范围之内。
【主权项】
1. 基于存储空间复用提高SDRAM总线有效访问速率的方法,其特征在于,包括以下步 骤: 将4片位宽为8比特的SDRAM芯片分成两个组GroupO和Groupl,每组2片SDRAM芯片共用 一个片选信号,内存访问命令通过不同的片选信号在时序上对GroupO和Groupl交替进行; 将表项在物理Bank上存储为4份镜像,且所述4份镜像分别处在不同的物理Bank内,对 用户虚拟出4个逻辑Bank; 对逻辑Bank进行仲裁选择,将用户的内存访问请求按照时序分发到不同的物理Bank上,实现多个物理Bank之间的轮转访问。2. 如权利要求1所述的方法,其特征在于,对SDRAM的实际物理内存地址空间与用户地 址空间之间做映射,形成逻辑地址。3. 如权利要求2所述的方法,其特征在于,逻辑地址的最高两位作为SDRAM的物理Bank 的低2位选择地址,依据用户的访问仲裁输出。4. 如权利要求2所述的方法,其特征在于,每个逻辑Bank上增加了两个分别用于存放读 写访问命令的队列缓冲区,用户的随机访问通过处理后,被缓存在对应的逻辑Bank缓冲区 上。5. 如权利要求1所述的方法,其特征在于,用户对同一个逻辑Bank的访问被仲裁轮转到 不同的4个物理Bank上,对缓冲区中访问请求仲裁器执行的逻辑步骤如下,其中刷新操作P 需要在Ts为0或1上,写操作Μ必须在Ts为0、4、8和12上,读操作F对Ts没有要求。
【专利摘要】本发明公开了一种基于存储空间复用提高SDRAM总线有效访问速率的方法,包括以下步骤:将4片位宽为8比特的SDRAM芯片分成两个组Group0和Group1,每组2片SDRAM芯片共用一个片选信号,内存访问命令利用不同的片选信号在时序上对Group0和Group1交替进行;将SDRAM中的表项在物理Bank上存储为4份镜像,且所述4份镜像分别处在不同的物理Bank内,对用户虚拟出4个逻辑Bank;对逻辑Bank进行仲裁选择,将用户的内存访问请求按照时序分发到不同的物理Bank上,实现多个物理Bank之间的轮转访问。本发明,基于Bank镜像和Bank仲裁相结合,通过对总线分组复用,对用户隐藏了每次SDRAM访问间消耗的激活时间和预充电时间,使得SDRAM同一Bank的访问速率由约20Mpps提高到65Mpps,满足了当前网络设备40G平台60Mpps的访问速率要求。
【IPC分类】G06F3/06, G06F13/16
【公开号】CN105487988
【申请号】CN201510874934
【发明人】李念军, 范富明, 肖杉
【申请人】武汉烽火网络有限责任公司
【公开日】2016年4月13日
【申请日】2015年12月3日