数据报文存取控制装置和方法

文档序号:7702223阅读:130来源:国知局
专利名称:数据报文存取控制装置和方法
技术领域
本发明涉及存储控制技术,特别涉及适用于存储转发机制的一种数据报 文存取控制装置、以及适用于存储转发机制的 一种数据报文存取控制方法。
背景技术
现今的网络设备大多都是基于存储转发机制的,即数据报文进入网络设 备后首先存储,然后由网络设备进行例如"下一跳查找"等操作后,再读取 存储的数据报文并转发。
一般来说, 一个需要转发的数据报文在网络设备中可能被存取多次,那 么网络设备存取数据报文的效率就会在很大程度上影响数据报文传输的效 率。例如,数据报文首先存储在入方向线卡板上等待路由转发查找,然后读 出该数据报文并通过背板交换网发送到出方向线卡板上,这样,该数据报文
再存储在出方向线卡板上等待QoS调度,满足QoS要求的数据报文被读出 并发送出去。因此,为了提高数据报文的传输效率,就需要网络设备对数据 报文的存取满足如下要求
1) 、网络设备内部的数据报文存储容量应大于等于RTTxRbit, RTT (round trip time )为线卡板上的线路环回时间、R为线卡板上的线路速率,
假设RTT约为200ms,对于1个10Gbit接口的网络设备来说,需要具有 10Gbit/sx0.2s共2Gbit的存+者容量;
2) 、网络设备中需要具备用于存取数据报文的高带宽,假设1个10Gbit 接口的网络设备对每个数据报文需要进行两次存取,则该网络设备需要 20Gbit带宽的存取能力。
实际应用中,网络设备中的数据报文处理芯片通常为专用集成电路(Application Specific Integrated Circuit, ASIC )或(Field Programmable Gate Arrey, FPGA )芯片,其存储容量不足以满足数据报文所需的存储容量,因 而为了满足上述要求,参见图1,现有基于存储转发机制的网络设备中,通 常将带宽较高、存储容量较大的随机存储器(RAM)外接于每块线卡板的 数据报文处理芯片。参见图2,数据报文处理芯片内部设置有控制逻辑,该 控制逻辑可利用先进先出存储器(FIFO)的队列管理机制,将数据报文处理 芯片接收到的数据报文依次存入至RAM中、并将RAM中的数据报文顺序 读取后供数据报文处理芯片发出。
在众多类型的RAM中,第2代双倍数据速率(Double Data Rate 2, DDR2 )同步动态随才几接入存卡者器(Synchronous Dynamic Random Access Memory, SDRAM)和第3代双倍数据速率(Double Data Rate 3, DDR3 ) SDRAM由于容量更大、速度更高、价格更便宜,因而常被选用。
然而,即^f更选用容量更大、速度更高的DDR2 SDRAM或DDR3 SDRAM 来存放数据报文,但由于DDR2 SDRAM和DDR3 SDRAM本身的某些特性 会限制^:据才艮文的连续读写才喿作。例如访问DDR2 SDRAM同一存储体
(BANK)的不同行(ROW)时,在连续两行激活(ACT)命令之间的延时, 从而使DDR2 SDRAM的总线空闲;访问DDR2 SDRAM任意BANK的任意 行时,对该行的读操作和预充电(precharge)操作等,也会使DDR2 SDRAM 的总线空闲。
而现有存取数据报文的控制逻辑并未考虑到如何回避上述限制对数据 报文存取效率的影响,而是采用对DDR2 SDRAM和DDR3 SDRAM的随机 读写操作,因而无法满足存取数据报文高带宽的要求。
参见图3,以突发(burst)模式下读数据报文为例,控制逻辑从外接 DDR2 SDRAM中同一 BANK的不同行内读取连续的数据报文
在T0时钟周期,向外接DDR2 SDRAM发送ACT命令激活、用以激活 外接DDR2 SDRAM中该BANK内的对应行;
在Tl时钟周期,向外接DDR2 SDRAM发送RD命令,外接DDR2
8SDRAM开始对该BANK内对应行颗粒进行读才喿作;
在T2 T3时钟周期,外接DDR2 SDRAM继续对该BANK内对应行颗 粒的读操作;
在T4时钟周期,等待外接DDR2 SDRAM进行precharge操作、用以关 闭该-f亍;
在T5 T6时钟周期内,外接DDR2 SDRAM通过总线输出读取的数据报
文;
在T7时钟周期内,等待连续两行ACT命令之间的延时;
在T8时钟周期内才能够再次向外接DDR2 SDRAM发送ACT命令激 活、用以激活外接DDR2 SDRAM中该BANK内下 一行。
在上述过程中,T0 T7共8个时钟周期内,DDR2 SDRAM的总线只有 T5 T6这2个时钟周期被占用,即对于连续读#:作的总线利用率只有25% 、 连续写操作的总线利用率同理。而且,读写操作间的切换,还会随不同DDR2 SDRAM的特性导致总线空闲不同数量的时钟周期,即读写操作交替进行时 的总线利用率更低。此外,TO时钟周期激活对应行后,由于预先设置的DDR2 SDRAM参数tRCD而延时0个时钟周期即可在Tl时钟周期内对该行颗粒进 行读操作,并由于参数AL和CL而延时4个时钟周期通过DDR2 SDRAM 的总线读出。实际应用中,TO时钟周期激活对应4亍后,也有可能由于DDR2 SDRAM总线速率高而通过设置参数tRCD来延时至少1个时钟周期再对该 行颗粒进行读操作,或通过设置参数AL、 CL来进一步延长总线读出数据的 延时,那么此时的总线利用率就会进一步降低,写操作同理。
可见,现有基于存储转发机制的网络设备虽然能够利用RAM来满足数 据报文存储容量大的要求,但其控制逻辑无法满足存取数据报文高带宽的要 求,从而影响存储转发机制下的数据报文存取效率。

发明内容
有鉴于此,本发明提供了 一种适用于存储转发机制的数据报文存取控制装置、以及一种适用于存储转发机制的数据报文存取控制方法,能够提高存 储转发机制下的报文传输效率。
本发明提供的一种适用于存储转发机制的数据报文存取控制装置,包

入方向管理模块,内部设有若干入方向队列; 出方向管理才莫块,内部设有若干出方向队列;
存储器控制模块,可将任一入方向队列的数据报文存放至外部随机存储 器内的对应外部队列中,可从外部随机存储器内的对应外部队列中读取应存 放至任一 出方向队列的数据报文;
透传FIFO,可将任一入方向队列中的数据才艮文緩存后向对应出方向队 列传递;
入方向控制模块,在有入方向队列非空时,如果对应外部队列中有数据 报文、且非满,则将该入方向队列中的数据报文提供给存储器控制模块;如 果对应外部队列为空、且透传FIFO和对应出方向队列均非满,则将该入方 向队列中的数据才艮文写入至透传FIFO;如果透传FIFO或对应出方向队列将 满或已满,则将该入方向队列中的数据报文提供给存储器控制模块;否则, 暂不针对该入方向队列进行读写操作;
出方向控制才莫块,在透传FIFO非空时,/人透传FIFO读取数据报文并 存放至对应出方向队列;在透传FIFO为空时,如果有出方向队列非满、且 外部随机存储器中对应外部队列非空,则向存储器控制模块请求从外部存储 器中的对应外部队列读取数据报文、并存放至该出方向队列;否则,暂不针 对该非满出方向队列进行读写操作。
入方向管理模块中进一步设有多路输入、 一路输出的入方向选择器,入 方向选择器的每一路输入连接一个入方向队列、 一路输出连接至入方向控制 模块;
入方向控制模块进一步向入方向选择器的控制端输出一入方向轮寻控 制信号,用于以轮寻方式控制入方向选择器连接入方向队列的每一路输入依次与入方向选择器的一路输出导通;
出方向管理模块中进一步设有一路输入、多路输出的出方向选择器,出 方向选择器的每一路输出连接一个出方向队列、一5^输入连接自出方向控制 模块;
出方向控制模块进一步向出方向选择器的控制端输出一出方向轮寻控 制信号,用于以轮寻方式控制出方向选择器连接出方向队列的每一路输出与 出方向选择器的一路输入导通。
每一入方向队列进一步向入方向控制模块输出表示该入方向队列空满 状态的状态信号,以供入方向控制模块判断是否有入方向队列非空;
每一 出方向队列进一步向出方向控制模块和入方向控制模块输出表示 该出方向队列空满状态的状态信号,以供出方向控制模块判断是否有出方向 队列非满、入方向控制模块判断对应出方向队列是否非满。
入方向控制模块进一步维护一外部存储器写指针列表、并进一步通过一 写数据输出队列、以及一写地址输出队列与存储器控制模块相连;入方向控 制模块将数据报文存放至写数据输出队列,同时将外部存储器写指针列表 中,与该数据报文所属入方向队列对应的当前写指针存放至写地址输出队 列、并更新该写指针;
出方向控制模块进一步维护一外部存储器读指针列表、并进一步通过一 读数据输入队列、以及一读地址输出队列与存储器控制模块相连;出方向控 制模块将外部存储器读指针列表中,与非满状态出方向队列对应的读指针存 放至读地址输出队列,然后从读数据输入队列中读取对应的数据报文、并更 新该对应的读指针;
且,入方向控制模块和出方向控制模块依据外部存储器写指针列表和外 部存储器读指针列表,判断外部随机存储器中的各外部队列的空满状态。
存储器控制模块以信元Cell为单位向外部随机存储器中的对应外部队
列写入数据报文、同一 Cell的各部分写入至不同BANK、每部分位于一个
BANK中的同一行,且存储器控制模块以预设间隔顺序向每个Cell各部分所在BANK的一行发送激活命令和包含预充电命令的写命令、用以消除向 外部随机存储器写入各部分之间的总线等待时间;
存储器控制模块以Cell为单位从外部随机存储器中的对应外部队列中 读取数据报文,且存储器控制模块以预设间隔顺序向每个Cell各部分所在 BANK的一行发送激活命令和包含预充电命令的读命令、用以消除从外部随 机存储器读出各部分之间的总线等待时间。
一个Cell小于等于一行的容量与BANK数量的乘积、且大于等于对一 个BANK的读写访问时间与该BANK的预充电时间内所能够读写的最大数
据量;
所述预设间隔小于等于 一行数据占用的外接随机存储器的总线周期长度。
本发明提供的 一种适用于存储转发机制的数据报文存取控制方法,该方 法可将芯片接收的数据报文写入至外接随机存储器,还可从外接随机存储器 中请求读取数据报文至芯片、并从芯片发出,
在芯片内设置若干入方向队列、及对应的若干出方向队列,还在芯片内
设置可在片内传输数据报文的透传FIFO; 且,该数据报文存取控制方法包括
入方向控制模块,在有入方向队列非空时,如果对应外部队列中有数据 报文、且非满,则将该入方向队列中的数据报文提供给存储器控制模块;如 果对应外部队列为空、且透传FIFO和对应出方向队列均非满,则将该入方 向队列中的数据才艮文写入至透传FIFO;如果透传FIFO或对应出方向队列将 满或已满,则将该入方向队列中的数据报文提供给存储器控制模块;否则, 暂针对该入方向队列进行读写操作;
在透传FIFO非空时,从透传FIFO读取数据才艮文并存放至对应出方向 队列;在透传FIFO为空时,如果有出方向队列非满、且外接随机存储器中
该出方向队列;否则,暂不针对该非满出方向队列进行读写操作。该数据报文存取控制方法进一步轮寻每一入方向队列和每一出方向队列。
每一入方向队列进一步产生表示该入方向队列空满状态的状态信号,用
以判断是否有入方向队列非空;
每 一 出方向队列进 一 步产生表示该出方向队列空满状态的状态信号,用 以判断是否有出方向队列非满。
进一步设置一外部存储器写指针列表和一外部存储器读指针列表;
该数据报文存取控制方法进一步将待存放至外接随机存储器内对应外 部队列的数据报文,存放至预先在芯片内设置的写数据输出队列,同时将外 部存储器写指针列表中,与该数据报文所属入方向队列对应的当前写指针存 放至预先在芯片内设置的写地址输出队列、并更新该写指针;
该数据报文存取控制方法还进一步将预先在芯片内设置的外部存储器 读指针列表中,与非满状态出方向队列对应的读指针存放至预先在芯片内设 置的读地址输出队列,然后从读数据输入队列中读取对应的数据报文、并更 新该对应的读指针;
且,该数据报文存取控制方法依据外部存储器写指针列表和外部存储器 读指针列表,判断外接随机存储器中的各外部队列的空满状态。
该数据报文存取控制方法以信元Cell为单位向外部随机存储器中的对 应外部队列写入数据报文、同一 Cell的各部分写入至不同BANK、每部分 位于一个BANK中的同一行,且存储器控制模块以预设间隔顺序向每个Cell 各部分所在BANK的一行发送激活命令和包含预充电命令的写命令、用以 消除向外部随机存储器写入各部分之间的总线等待时间;
该数据报文存取控制方法还以Cell为单位从外部随机存储器中的对应 外部队列中读取数据报文,且存储器控制模块以预设间隔顺序向每个Cell 各部分所在BANK的一行发送激活命令和包含预充电命令的读命令、用以 消除从外部随机存储器读出各部分之间的总线等待时间。
一个Cell小于等于一行的容量与BANK数量的乘积、且大于等于对一
13个BANK的读写访问时间与该BANK的预充电时间内所能够读写的最大凝: 据量;
所述预设间隔小于等于 一行数据占用的外接随机存储器的总线周期长度。
由上述技术方案可见,本发明利用一透传FIFO,该透传FIFO作为小数 据量的一级緩存,而外接RAM则仅用作大数据量的二级緩存,这样,由于 有部分数据报文在片内存取、而非所有数据报文均通过外接RAM实现存取, 因而减少了外接RAM总线利用率低对数据报文的传输效率的影响,从而提 高数据报文传输效率。
可选地,本发明还可以单元Cell为单位对外4妄RAM进行数据才艮文的读 写操作,并将每个Cell分为若干部分、每一部分顺序写入至不同BANK的 任一行中,并在对外接RAM读写数据报文时,以预设间隔连续向每个Cell 各部分所在BANK发送激活命令和包含预充电命令的读命令,从而消除从 前述随机存储器读取每个Cell各部分之间的等待时间,进而提高外接RAM 总线利用率、进一步提高数据报文传输效率。


图1为现有基于存储转发机制的网络设备中的线卡板结构示意图2为现有如图1所示线卡板中FIFO队列管理机制的示意图3为现有控制逻辑读取外接RAM的时序图4为本发明实施例中数据报文存取控制装置的结构示意图5为本发明实施例中数据报文存取控制逻辑的逻辑结构示意图6为本发明实施例中数据报文存取控制的 一 实例示意图7a 图7b为本发明实施例中数据报文存取控制的另一实例示意图8为本发明实施例中对外接RAM读操作实例的时序图9a 图9b为本发明实施例中对外接RAM读写操作切换的时序图10a 图10b为本发明实施例中数据报文存取控制方法的流程示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举 实施例,对本发明进一步详细说明。
在本实施例中,考虑到数据报文处理芯片通常为ASIC或FPGA芯片、 该芯片内又通常会设有可任意配置的RAM资源,因而为了使得数据报文传 输效率尽可能少地受数据报文处理外接RAM的影响,利用数据报文处理芯 片内的RAM资源实现一透传FIFO,该透传FIFO用作小数据量的一级緩存, 而数据报文处理芯片外接的RAM则用作大数据量的二级緩存。
其中,上述透传FIFO的作用,可看作是将经由外接RAM总线的数据 报文传输路径旁路(Bypass),因而本文中也可称该透传FIFO为Bypass FIFO。
图4为本发明实施例中数据报文存取控制装置的结构示意图。如图4所 示,以外接RAM为DDR2 SDRAM为例,本实施例中的数据报文处理芯片 作为数据报文存取控制装置,具体包括
入方向管理(Ingress Queue Uni, IQU)模块,内部设有若干入方向队 列IQ1 IQ255,每个入方向队列IQi可存放接收自数据报文存取控制装置外 部的同 一报文流中若干数据报文;
出方向管理(Engress Queue Uni, EQU)模块,内部设有若干出方向队 列EQ1 EQ255,每个出方向队列EQi可存放来自对应入方向队列的同一报 文流中若干数据报文、等待发送至报文存取控制装置外部;
其中,i为大于等于l、且小于等于255的正整数,当然,每种队列的 总数也可不限于255个、而是可以更多;
存储器控制模块(DDR2 SDRAM Controller),基于现有FIFO队列管 理机制对外接DDR2 SDRAM进行数据报文的读写操作;具体说,存储器控 制模块可将任一入方向队列IQi的数据报文存放至外接DDR2 SDRAM内的 对应外部队列Qi中,并可/人外4妄DDR2 SDRAM内的对应外部队列Qi中读取应存放至任一出方向队列EQi的数据报文;
透传FIFO、或称为Bypass FIFO,可将任一入方向队列IQi中的数据报 文緩存后、向对应出方向队列EQi传递;
以及入方向控制(Ingress Control )才莫块和出方向4空制才莫块(Egress Control)。
入方向控制模块在有入方向队列IQi非空时,先判断外接DDR2 SDRAM 中的对应外部队列Qi中是否已存有数据报文;
如果外接DDR2 SDRAM中的对应外部队列Qi已存有数据报文、且非 满,则表示该入方向队列IQi所对应的才艮文流中已有数据报文存放至对应外 部队列Qi、且该对应外部队列能够继续存入数据报文,因而为了保证该入 方向队列IQi所对应的才艮文流中各lt据才艮文间的顺序不变,将该入方向队列 IQi中的数据报文提供给存储器控制模块,以使IQi中的数据报文经IQi、外 接DDR2 SDRAM中的Qi、 EQi的二级緩存路径传输;需要说明的是,本文 所述的"非满",是指未到达"将满(afull)"或"已满(full)"状态;
如果外接DDR2 SDRAM中的对应外部队列Qi为空,则再判断Bypass FIFO及对应出方向队列EQi是否均非满;
如果外4妄DDR2 SDRAM中的对应外部队列Qi为空时、Bypass FIFO及 对应出方向队列EQi均非满,则表示该入方向队列IQi所对应的报文流中没 有数据报文存放至对应外部队列Qi、且能够通过Bypass FIFO传递数据报文 至对应出方向队列EQi,因而将该入方向队列IQi中的数据报文写入至 Bypass FIFO,以使IQi中的数据报文经IQi、 Bypass FIFO、 EQi的一级緩存 路径传输;
如果外接DDR2 SDRAM中的对应外部队列Qi为空时、Bypass FIFO或 对应出方向队列EQi将满或已满,则将该入方向队列IQi中的数据报文提供 给存储器控制模块,以使IQi中的数据报文经IQi、外接DDR2 SDRAM中 的Qi、 EQi的二级緩存路径传输;
否则,对应外部队列Qi虽有数据才艮文、^旦该外部队列Qi已满,因而暂不针对该入方向队列IQi进行读写操作。
出方向控制模块在Bypass FIFO非空时,从Bypass FIFO读取数据报文、 并存放至该数据才艮文所属入方向队列IQi对应的出方向队列EQi;由于 Bypass FIFO中的数据报文是在外部队列Qi中没有对应报文流中的数据报 文、且对应出方向队列EQi非满时写入的,因而外部队列Qi中没有本应位 于该数据报文之前的同 一报文流中的其它数据报文,即便从Bypass FIFO读 取数据报文时外部队列Qi中已存有同一报文流中的数据报文,但由于读取 的该数据报文不会在外部队列Qi中有同一报文流中的数据报文时存入至 Bypass FIFO,因而外部队列Qi中此时存放的数据报文一定是位于从Bypass FIFO读取的数据报文之后的,从而只要Bypass FIFO非空即从其读取数据 报文,不会导致对应报文流中的数据报文顺序发生变化;
出方向控制模块在Bypass FIFO为空时,如果有出方向队列EQi非满、 且外接DDR2 SDRAM中的对应外部队列Qi非空,则表示从对应外部队列 Qi读取数据报文不会改变对应报文流中各数据报文间的顺序,因而向存储 器控制模块请求从外部存储器中的对应外部队列Qi读取数据报文、并存放 至该出方向队列EQi;否则,Bypass FIFO为空、且对应外部队列Qi中没有 数据报文,因而暂不针对该出方向队列进行读写操作。
可见,由于有数据报文经数据报文存取控制装置内部的一级緩存路径传 输、而非所有数据报文均经外接DDR2 SDRAM总线所在的二级緩存路径传 输,从而能够减少DDR2 SDRAM总线利用率低对数据报文转发效率的影响。
而且,由于在对应外部队列中有数据报文时,不会选择控制装置内部的 一级緩存路径传输,因而能够保证报文流中各数据报文间的顺序不会发生变 化;由于在出方向队列EQi将满或已满时,也不会选择控制装置内部的一级 緩存路径传输,因而还能够避免如下情况出现入方向控制模块将入方向 FIFO队列IQi中的凄t据报文读取并写入至Bypass FIFO后,出方向控制模块 即便从Bypass FIFO读取该出属于IQi、并应存入至EQi的数据报文,但由 于EQi此时将满或已满、不足以写入数据报文,从而导致数据报文丢包。实际用用中,/人IQi读出的数据才艮文应当写入至对应的EQi、而不应当 写入至EQl EQi-l以及EQi+l EQ255中的任一出方向队列,因而入方向控 制模块还应对从IQi读出的数据报文中添加表示IQi的标识,以便出方向控 制模块依据该标识判断出数据报文所属IQi、并存放至IQi对应的EQi中。
图5为本发明实施例中数据报文存取控制逻辑的逻辑结构示意图。如图 5所示,在本实施例中,通过Bypass FIFO相连通的入方向队列IQi与对应 出方向EQi构成的一级緩存路径,而外接DDR2 SDRAM中的对应外部队列 Qi则属于二级緩存路径。
下面,对本实施例中如图4所示的数据报文存取控制装置进行再进一步 的详细i兌明。
为了避免入方向管理模块内的若干入方向队列中,有入方向队列中的数 据报文长时间不被入方向控制模块读取,本实施例可由入方向控制模块以轮 寻方式读取若干入方向队列中的数据报文,具体实现可以为
参见图4,入方向管理模块中进一步设有多路输入、 一路输出的入方向 选择器,入方向选择器的每一路输入连接一个入方向队列、 一路输出连接至 入方向控制模块,而关于入方向管理模块接收的数据报文如何分配至若干入 方向队列,则可以由本领域技术人员通过任意方式来实现,本文并不予以关
注;
入方向控制模块进一步向入方向选择器的控制端输出一入方向轮寻控
制信号(I_queue_select),用于以轮寻方式控制入方向选择器连接入方向队 列的每一路输入依次与入方向选择器的 一路输出导通,从而实现以轮寻方式 读取若干入方向队列中的数据报文。
相应地,为了使得出方向控制模块能够将获取的数据报文均匀分配至出 方向管理模块内的若干出方向队列中,以避免数据报文堆积在某几个出方向 队列、降低数据报文外发效率,本实施例可由出方向控制模块以轮寻方式向 若干出方向FIFO队列写入数据报文,具体实现可以为
出方向管理模块中进一步设有一路输入、多路输出的出方向选择器,出方向选择器的每一路输出连接一个出方向队列、 一路输入连接自出方向控制 模块,而关于出方向管理模块如何从若干出方向队列中选择外发数据报文,
则可以由本领域技术人员通过任意方式来实现,本文并不予以关注;
出方向控制模块进一步向出方向选择器的控制端输出一出方向轮寻控
制信号(E一queue—select),用于以轮寻方式控制出方向选择器连接出方向 队列的每一路输出与出方向选择器的 一路输入导通,从而实现以轮寻方式向 若干出方向队列写入数据报文。
仍参见图4,为了实现入方向控制模块能够判断出是否有入方向FIFO 队列非空,每一入方向队列可进一步向入方向控制模块输出表示该入方向队 列空满状态的状态信号(I—queue—status );而为了出方向控制模块能够判断 出是否有出方向队列非满、入方向控制模块能够判断出对应出方向队列是否 非满,每一 出方向队列还可进一步向出方向控制模块和入方向控制模块输出 表示该出方向队列空满状态的状态信号(E—queue—status )。
此外,仍参见图4,为了入方向控制模块和出方向控制模块能够判断出 外接DDR2 SDRAM中各外部队列的空满状态、入方向控制模块能够使存储 器控制模块将数据报文写入至对应外部队列、以及出方向控制模块能够使存 储器控制模块准确读取对应外部队列中的数据报文,本实施例中进一步由入 方向控制模块维护一外部存储器写指针列表(WPTRList)、由出方向控制 模块维护一外部存储器读指针列表(RPTRList)。
这样,入方向控制模块进一步通过一写数据输出队列(WRQ)、以及 一写地址输出队列(WADDR)与存储器控制模块相连,且入方向控制模块 将需提供给存储器控制模块的数据报文存放至写数据输出队列,同时将外部 存储器写指针列表中,与该数据报文所属入方向队列IQi对应的当前写指针 WPTRi存放至写地址输出队列、并更新该写指针WPTRi;其中,更新写指 针的方式,可以按照对应外部队列Qi在外接DDR2 SDRAM中顺序占用的 相邻实际地址间差值与写入的数据报文所占地址总数的乘积,依次对写指针 的值进行累加操作;而出方向控制模块进一步通过一读数据输入队列(RDQ)、以及一读地 址输出队列(RADDR)与存储器控制模块相连,且出方向控制模块将外部 存储器读指针列表中,与非满状态出方向队列EQi对应的读指针RPTRi存 放至读地址输出队列、并更新该读指针RPTRi,然后即可从读数据输入队列 中读取对应的数据才艮文;其中,更新读指针的方式可以按照对应外部队列 Qi在外接DDR2 SDRAM中顺序占用的相邻实际地址间差值与读取的数据 报文所占地址总数的乘积,依次对读指针的值进行累加操作;
入方向控制模块和出方向控制模块,还可依据外部存储器写指针列表和 外部存储器读指针列表,并按照现有任一种方式比对每一外部队列的读写指 针,来判断外部随机存储器中的各外部队列的空满状态。
下面,结合实例对上述如图4所示的数据报文存取控制装置的工作原理 进行进一步说明。
参见图6,图6中省略了各模块的信号传递关系、数据报文传递路径如 虚线箭头所示,入方向控制模块通过循环罗宾(RoimdRobin, RR)轮寻调 度到若干入方向队列中的IQ0,当IQO有数据报文时,对应外部队列Q0中 没有数据报文,若干出方向FIFO队列中对应的EQ0未到达将满阈值、且 Bypass FIFO也未到达将满或满状态,则表示IQO、 Bypass FIFO、 EQO顺序 构成的片内数据报文传递路径未阻塞,且通过该路径传递数据报文不会导致 数据报文在其所属报文流中的顺序发生变化,因而入方向控制模块读取IQO 中的数据报文写入至Bypass FIFO、并为数据报文添加表示IQO的标识。此 后,出方向控制才莫块在从Bypass FIFO读取出标识IQO的数据才艮文后,即可 写入至未到达将满或已满状态的对应EQO。
参见图7a,图7a中省略了各模块的信号传递关系、数据报文传递路径 如虚线箭头所示,入方向控制模块通过RR轮寻调度到若干入方向队列中的 IQO, IQ0有数据报文,但对应外部队列Q0中有同一报文流中的数据报文, 且若干出方向队列中对应的EQO到达将满阈值,导致IQO、 Bypass FIFO、 EQO顺序构成的片内数据报文传递路径阻塞,此时,由于外接DDR2 SDRAM的对应外部队列Q0中虽然有数据报文但处于非满状态,因而入方向控制模 块读取IQ0中的数据报文,并将表示IQ0的标识添加至该数据才艮文后、存放 至连接存储器控制模块的写数据输出队列WRQ中,同时还将外部存储器写 指针列表中对应IQ0的写指针WPTR0存放至写地址输出队列WADDR中, 然后将Q0在外接DDR2 SDRAM中顺序占用的相邻实际地址间差值与IQ0 中该数据报文的长度之乘积累加至写指针WPTR0、以实现对写指针WPTR0 的更新。此后,存储器控制模块即可依据写地址输出队列WADDR中的写 指针WPTRO,将写数据输出队列WRQ中属于IQ0的数据报文写入至外接 DDR2 SDRAM的对应外部队列Q0中。
参见图7b,图7b中省略了各模块的信号传递关系、数据报文传递路径 如虚线箭头所示,Bypass FIFO为空,出方向控制才莫块通过RR调度^"寻到 若干出方向队列中的EQO, EQ0未到达将满阈值、且外接DDR2 SDRAM中 对应外部队列Q0非空,出方向控制模块从外部存储器读指针列表中读出 EQ0对应的读指针RPTR0、并存放至读指针输出队列RADDR。此后,存 储器控制模块即可依据读指针输出队列RADD中的读指针RPTRO,从外接 DDR2 SDRAM的对应外部队列Q0中读取数据报文并存放至读数据输入队 列RDQ,出方向控制模块从读数据输入队列RDQ读出携带标识IQ0的数据 报文、并存放至EQO,然后将Q0在外接DDR2 SDRAM中顺序占用的相邻 实际地址间差值与从读数据输入队列RDQ读出的携带标识IQ0的数据报文 长度之乘积累加至写指针RPTR0、以实现对读指针RPTR0的更新。
基于如图6、以及图7a 图7b所示的实例,当外部数据报文进入到入方 向队列的速率,小于出方向队列发出数据报文的速率时,入方向队列中的数 据才艮文会由于对应出方向队列非满、且Bypass FIFO非满,而通过如图6所 示的数据报文存取控制装置内的Bypass FIFO所在的一级緩存路径传输,从 而可以减少数据报文在数据报文存取控制装置内的延时。但当进入到入方向 队列的数据报文速率大于从出方向队列发出的数据报文速率时,会导致出方 向队列将满或已满,此时,入方向队列中的数据报文就需要存储到外接DDR2 SDRAM中,即通过如图7a 图7b所示的外接DDR2 SDRAM总线所 在的二级緩存路径传输,优选地,存储器控制模块对外接DDR2 SDRAM的 写优先级高于读优先级。
以上,是本实施例数据报文存取控制装置中包含有一级緩存路径的结构 所进行的详细说明,除此之外,本实施例还对外接DDR2 SDRAM的读写操 作方式、也就是控制逻辑进行了改进。
考虑到不同数据报文的大小各异、通常为64字节 1500字节,那么本 实施例将每一报文流中的各数据报文,以等大小信元(Cell)为单位对每个 入方向队列IQi进行读操作、对Bypass FIFO和外接DDR2 SDRAM中的每 个外部队列Qi进行读写操作、对出方向队列EQi进行写操作,这样,对于 4个BANK、每个BANK中的1行为64字节的DDR2 SDRAM来说,可使 同一 Cell被均分至各BANK存储、且无需通过Precharge命令和ACT命令 执行换行操作。
实际应用中,每个Cell可以包含多个数据报文,也可以多个Cell构成 一个数据报文。如果存在某个报文流最后剩余的数据报文不足一个Cell,此 时,不足一个Cell的剩余数据报文可以在对应外部队列从DDR2 SDRAM中 读空后,通过片内的Bypass FIFO来传输。
此外,本实施例还可利用BANK交错(interleave )方式来实现外接DDR2 SDRAM的控制逻辑。
具体说,存储器控制模块以Cell为单位向外接DDR2 SDRAM中的对应 外部队列写入数据报文,每个Cell被分为若干部分(较佳地分为与BANK 相同数量的部分)、同一 Cell的各部分写入至不同BANK、 Cell的每部分在 一个BANK中只占用一行内的一'J、部分、即Cell的每部分位于一个BANK 中的同 一行,且存储器控制模块以预设间隔针对每个Cell各部分所在BANK 的一行向外接DDR2 SDRAM顺序发送ACT命令和包含自动预充电(Auto Precharge)命令的写(WR)命令、用以消除向外部随机存储器写入各部分 之间的总线等待时间;同理,存储器控制才莫块以Cell为单位从外接DDR2 SDRAM中的对应外 部队列中读取数据报文,且存储器控制模块以预设间隔,针对每个Cell各部 分所在BANK的 一行向外接DDR2 SDRAM顺序发送ACT命令和包含Auto Precharge命令的RD命令、用以消除从外部随机存储器读出各部分之间的总 线等待时间。
进一步说,为了消除向外部随机存储器写入各部分之间的总线等待时 间, 一个Cell需小于等于BANK数量与列数量的乘积,即一个Cell的大小 不会超过一行的容量与BANK数量的乘积;此外,由于一个Cell会被划分 为各部分存储在不同BANK,因而为了避免在读写访问第一个BANK后, 对其他BANK的读写访问时间不足以第 一个BANK的Precharge时间、即不 足以第一个BANK完成Precharge, —个Cell也不应小于一个BANK的读写 访问时间与Precharge时间所能够读写的最大数据量、即读写访问第一个 BANK后对其他BANK的读写访问时间足以第 一 个BANK完成Precharge 。
针对上述读写访问方式,外接DDR2 SDRAM中的各外部队列要存放
一递增,而是应当设置每 一 外部队列的所有连续实际地址划顺序分为与 BANK数量相同的实际地址段,每个实际地址段中各连续实际地址的列地址 逐一递增、BANK地址和行地址相同,且,每个实际地址段中各连续实际地 址的BANK地址,区别于该实际地址段所属外部队列的其他实际地址段; 每个实际地址段中各连续实际地址的行地址,区别于该实际地址段所属外部 队列之外的其他外部队列中,与该实际地址段位于同一 BANK的实际地址 段。
而且,在更新写指针WPTRi和读指针RPTRi时,对于同一Cell中一个 部分内的数据,对写指针WPTRi和读指针RPTRi累加该部分内数据所占用 的列数,当开始写入或读取同一个Cell中下一部分的数据时,则需先对写指 针WPTRi和读指针RPTRi表示BANK地址的次低位加1 ,然后再对写指针 WPTRi和读指针RPTRi累加该部分内数据所占用的列数。写指针WPTRi
23和读指针RPTRi的设置方式、以及更新方式,可以由本领域技术人员采用 任意方式实现,在此不再——列举。
参见图8,以连续读取两个Cell、每个Cell占256字节和16个时钟周 期为例,假设每一个Cell均分为4个部分Da、 Db、 Dc、 Dd,并分别被写入 在BANK0、 BANK1、 BANK2、 BANK3中的一行内(两个Cell的Da写入 在BANK0的不同行,Db、 Dc、 Dd同理),从存储器控制模块读指针输出 队列RADDR中读取到该Cell所在数据报文所属入方向队列对应的读指针开 始
在TO时钟周期,存储器控制模块针对BANKO中第一个Cell的Da所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANKO 中第一个Cell的Da所在行被激活;
在Tl时钟周期,存储器控制模块针对BANKO中第一个Cell的Da所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;需 要说明的是,虽然外接DDR2 SDRAM中的参数tRCD被设置为4,即在发 送ACT命令后、等待4个时钟周期才可执行对颗粒的读操作,但为了使得 针对每一个Cell的4个部分的ACT命令和包含Auto Precharge命令的RD 命令能够更加紧凑,因而将外接DDR2 SDRAM中的现有参数AL设置为3、 使包含Auto Precharge命令的RD命令可提前3个时钟周期发送,以使每次 发送ACT命令后、在下一个时钟周期内即可发送包含Auto Precharge命令 的RD命令,后续发送的包含Auto Precharge命令的RD命令同理;
在T2 T3时钟周期,空闲等待;需要说明的是,虽然包含Auto Precharge 命令的RD命令提前3个时钟周期发送,但由于参数tRCD被设置为4,因 而外接DDR2 SDRAM仍需等到T4时钟周期才可开始对激活行的颗粒实际 执行读操作;
在T4时钟周期,存储器控制模块针对BANK1中第一个Cell的Db所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANK1 中第 一个Cell的Db所在行被激活;同时,外接DDR2 SDRAM开始对BANKO中第一个Cell的Da所在行的颗粒进行读操作;
在T5时钟周期,存储器控制模块针对BANK1中第一个Cell的Db所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;同 时,外接DDR2 SDRAM继续对BANK0中第 一个Cell的Da所在行的颗粒 进行读操作;
在T6 T7时钟周期,外接DDR2 SDRAM仍继续对BANK0中第一个 Cell的Da所在行的颗粒进行读操作,且外接DDR2 SDRAM针对BANK1 中第 一个Cell的Db所在行的包含Auto Precharge命令的RD命令进行空闲 等待;
在T8时钟周期,存储器控制模块针对BANK2中第一个Cell的Dc所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANK2 中第 一个Cell的Dc所在行被激活;且外接DDR2 SDRAM开始通过总线向 存储器控制模块输出BANKO中第一个Cell的Da,同时开始通过Auto Precharge操作关闭BANKO中第一个Cell的Da所在行、并开始对BANK1 中第一个Cell的Db所在行的颗粒进行读操作;
在T9时钟周期,存储器控制模块针对BANK2中第一个Cell的Dc所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;同 时,外接DDR2 SDRAM继续通过总线向存储器控制模块输出BANKO中第 一个Cell的Da、并继续对BANK1中第一个Cell的Db所在行的颗粒进行 读操作;
在T10 T11时钟周期,外接继续通过总线向存储器控制模块输出 BANKO中第 一个Cell的Da、外接DDR2 SDRAM仍继续对BANK1中第一 个Cell的Db所在行的颗粒进行读操作,且外接DDR2 SDRAM针对BANK2 中第 一个Cell的Dc所在行的包含Auto Precharge命令的RD命令进行空闲 等待;
在T12时钟周期,存储器控制模块针对BANK3中第一个Cell的Dd所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANK3中第 一个Cell的Dd所在行被激活;且BANKO中第 一个Cell的Da已输出 完毕,外接DDR2 SDRAM开始通过总线向存储器控制模块输出BANK1中 第一个Cell的Db,同时开始通过Auto Precharge操作关闭BANK1中第一 个Cell的Db所在行、并开始对BANK2中第一个Cell的Dc所在行的颗粒 进行读操作;
在T13时钟周期,存储器控制模块针对BANK3中第一个Cell的Dd所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;同 时,外接DDR2 SDRAM继续通过总线向存储器控制模块输出BANK1中第 一个Cell的Db、并继续对BANK2中第一个Cell的Dc所在行的颗粒进行 读操作;
在T14 T15时钟周期,外接继续通过总线向存储器控制模块输出 BANK1中第 一个Cell的Db、外接DDR2 SDRAM仍继续对BANK2中第一 个Cell的Dc所在4亍的颗粒进行读才喿作,且外接DDR2 SDRAM针对BANK3 中第 一个Cell的Dd所在行的包含Auto Precharge命令的RD命令进行空闲 等待;
在T16时钟周期,存储器控制模块针对BANKO中第二个Cell的Da所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANKO 中第二个Cell的Da所在行被激活(区别于TO时钟周期内激活的第 一个Cell 的Da所在行);且BANK1中第一个Cell的Db已输出完毕,外接DDR2 SDRAM开始通过总线向存储器控制模块输出BANK2中第一个Cell的Dc, 同时开始通过Auto Precharge操作关闭BANK1中第 一个Cell的Db所在行、 并开始对BANK3中第一个Cell的Dd所在行的颗粒进行读操作;
在T17时钟周期,存储器控制模块针对BANKO中第二个Cell的Da所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;同 时,外接DDR2 SDRAM继续通过总线向存储器控制模块输出BANK2中第 一个Cell的Dc、并继续对BANK3中第一个Cell的Dd所在行的颗粒进行 读操作;在T18-T19时钟周期,外接继续通过总线向存储器控制模块输出 BANK2中第 一个Cell的Dc、外接DDR2 SDRAM仍继续对BANK3中第一 个Cell的Dd所在行的颗粒进行读操作,且外接DDR2 SDRAM针对BANK0 中第二个Cell的Da所在行的包含Auto Precharge命令的RD命令进行空闲 等待;
在T20时钟周期,存储器控制模块针对BANK1中第二个Cell的Db所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANK1 中第二个Cell的Db所在行被激活(区别于T4时钟周期内激活的第 一个Cell 的Db所在行);且BANK2中第一个Cell的Dc已输出完毕,外接DDR2 SDRAM开始通过总线向存储器控制模块输出BANK3中第一个Cell的Dd, 同时开始通过Auto Precharge操作关闭BANK2中第 一个Cell的Dc所在行、 并开始对BANKO中第二个Cell的Da所在行的颗粒进行读操作;
在T21时钟周期,存储器控制模块针对BANK1中第二个Cell的Db所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;同 时,外接DDR2 SDRAM继续通过总线向存储器控制模块输出BANK3中第 一个Cell的Dd、并继续对BANKO中第二个Cell的Da所在行的颗粒进行 读操作;
在T22 T23时钟周期,外接继续通过总线向存储器控制模块输出 BANK3中第一个Cell的Dd、外接DDR2 SDRAM仍继续对BANKO中第二 个Cell的Da所在行的颗粒进行读操作,且外接DDR2 SDRAM针对BANK1 中第二个Cell的Db所在行的包含Auto Precharge命令的RD命令进行空闲 等待;
在T24时钟周期,存储器控制模块针对BANK2中第二个Cell的Dc所 在行,向外接DDR2 SDRAM发送ACT命令,外接DDR2 SDRAM的BANK2 中第二个Cell的Dc所在行被激活(区别于T8时钟周期内激活的第 一个Cell 的Dc所在行);且BANK3中第一个Cell的Dd已输出完毕,外接DDR2 SDRAM开始通过总线向存储器控制模块输出BANKO中第二个Cell的Da,同时开始通过Auto Precharge操作关闭BANK3中第 一个Cell的Dd所在行、 并开始对BANK1中第二个Cell的Db所在行的颗粒进行读操作;
在T25时钟周期,存储器控制模块针对BANK2中第二个Cell的Dc所 在行,向外接DDR2 SDRAM发送包含Auto Precharge命令的RD命令;同 时,外接DDR2 SDRAM继续通过总线向存储器控制模块输出BANK0中第 二个Cell的Da、并继续对BANK1中第二个Cell的Db所在行的颗粒进行 读操作;
在T26 T27时钟周期,外接继续通过总线向存储器控制模块输出 BANKO中第二个Cell的Da、外接DDR2 SDRAM仍继续对BANK1中第二 个Cell的Db所在行的颗粒进行读4喿作,且外接DDR2 SDRAM针对BANK2 中第二个Cell的Dc所在行的包含Auto Precharge命令的RD命令进行空闲 等待;
此后,按照T12 T19相同的原理继续执行即可完成第二个Cell中所有 部分的输出。
通过上述实例可见,只要保证前述预设间隔的长度,即存储器控制模块 针对每个Cell各部分所在BANK《亍向外接DDR2 SDRAM顺序发送ACT命 令之间的间隔长度、发送包含Auto Precharge命令的WR命令之间的间隔长 度,小于等于外接DDR2 SDRAM总线传输一行数据所占用的时钟周期长度, 即可消除从外接DDR2 SDRAM读出同一 Cell、以及不同Cell的各部分之间 的总线等待时间,写入连续的Cell时同理。
而且,在上述实例中,可利用40个时钟周期完成对两个Cell的连续读 取,在这40个时钟周期内,外接DDR2 SDRAM的总线只有T0 T7这8个 时钟周期处于空闲,总线利用率达到了 80% ,从而提高了数据报文的存储 转发效率。而且,即便连续读取的Cell数量增加,外接DDR2 SDRAM的总 线也仍会只有8个时钟周期空闲J人而可随着连续读取的Celltt量增加而进 一步提高总线利用率,进而进一步提高了数据报文的存储转发效率。
然而,实际应用中,由于数据报文存储后需要转发,因而外接DDR2SDRAM实际上可看作是写入和读出比例1: 1的FIFO,那么除了连续读和 连续写之外,也就一定会存在读写切换的情况。对于读写之间切换的情况, 存储器控制模块在向外接DDR2 SDRAM顺序发送ACT命令和包含Auto Precharge命令的RD命令后,等待前述预设间隔、或4壬意数量的时钟周期后, 即发送ACT命令(如果是对之前的RD命令对应的行进行写操作则无需再 发送ACT命令)和包含Auto Precharge命令的WR。
而通常情况下,由于DDR2 SDRAM本身的特性而会导致读颗粒切换至 写颗粒、以及写颗粒切换至读颗粒之间,均存在预定数量的空闲时钟周期。
参见图9a,在同一BANK的同一行内先读出凄t才居Dout,然后再写入数 据Din,但即便WR在RD之后按照预设间隔提前发送,但外接DDR2 SDRAM 在总线输出完毕Dout后,仍等待一个时钟周期T8,才开始通过总线接收写 入数据Din。在相同或不同BANK的不同行内先读出数据Dout、再写入数 据Din也是同理。
参见图9b,在同一 BANK的同一行内先写入凄t据Din,然后再读出数 据Dout,但无论RD命令是否提前发送,外接DDR2 SDRAM在总线输入 Din完毕后,必须等待T4 T8这5个时钟周期,才能够开始通过总线输出 Dout。
上述图9a和图9b仅仅是以一种型号的DDR2 SDRAM为例,实际应用 中,不同型号的DDR2 SDRAM在读颗粒切换至写颗粒、以及写颗粒切换至 读颗粒之间的空闲时钟周期数量也有可能不同。
但是,即便有读颗粒切换至写颗粒、以及写颗粒切换至读颗粒之间的空 闲时钟周期存在,本实施例中的方案相比于现有方案,仍然是提高了外接 DDR2 SDRAM的总线利用率。
对于写一个Cell与读一个Cell交替执行的最坏情况,总线利用率可参 见^口下/>式
甜S—_歸e — C丄夂+ Re W — C£K_
£/yi,—『n化C丄尺+『n化to Read C丄AT + ReaJ C丄尺+ Read to『nfe C丄AT
29其中,为总线利用率、『〃化-CZ尺为写一个Cell所需的时钟周 期数、)^&_"_116"6/_0^为写切换至读占用的空闲时钟周期数、He"" —CX《
为读一个Cell所需的时钟周期数、Re"" ——『"e-"尺为读切换至写所占用 的空闲时钟周期数。
当『nYe —CLS:和Reac/_0^为16 、 ffnYe —to_ReW —CL尺为 1 、 Rea(to —歸e — d为5时
= ~16 + 16~ = 84.21 % 锁,"16 + 5 + 16 + 1
如果此时外接DDR2 SDRAM的总线速率为266MHz时,总线的有效带 宽为266 x 64 x 2 x 84.21% = 28.67Gbps,足够满足用于存取数据报文的 10Gbit (包括10Gbit读数据和10Gbit写数据)能力。
当然,上述公式中并未考虑在第一次读或写时如图8中T0 T7时钟周 期所示的等待时间,^f旦对于大量Cdl的连续读写来"^兌,该等待时间可以只出 现一次,因而可忽略不计。
以上是对本实施例中数据报文存取控制装置的详细说明。下面,再针对 本实施例中数据报文存储控制方法进行说明。
本实施例中的数据报文存取控制方法可基于与数据报文存取控制装置 相同的原理,由硬件计算机程序、或软硬结合的计算才几程序来实现,并应用 于ASIC或FPGA芯片中。
本实施例中的数据报文存取控制方法可将ASIC或FPGA芯片接收的数 据报文写入至外接随机存储器,还可从外接随机存储器中请求读取数据报文 至ASIC或FPGA芯片、并从ASIC或FPGA芯片发出。
具体说,本实施例中的数据报文存取控制方法需要在ASIC或FPGA芯 片内设置若干入方向队列、及对应的若干出方向队列,还需要在ASIC或 FPGA芯片内设置可在片内传输数据报文的透传FIFO。
且,该数据报文存取控制方法包括为了对ASIC或FPGA芯片接收自外部的数据报文实现存储,在有入方 向队列非空时,先判断外接DDR2 SDRAM中的对应外部队列中是否已存有 数据报文,
如果外接DDR2 SDRAM中的对应外部队列中已存有数据报文、且非满, 则表示该入方向队列所对应的净艮文流中已有数据才艮文存放至对应外部队列、 且该对应外部队列能够继续存入数据报文,因而为了保证该入方向队列所对 应的报文流中各数据报文间的顺序不变,将该入方向队列中的数据报文提供 给存储器控制模块,以使中的数据报文经外接DDR2 SDRAM数据总线所在 的片外二级緩存路径传输;
如果外接DDR2 SDRAM中的对应外部队列中没有数据报文,再判断 Bypass FIFO及对应出方向队列是否均非满;
如果外接DDR2 SDRAM中的对应外部队列为空时、透传FIFO及对应 出方向队列均非满,则表示该入方向队列所对应的报文流中没有数据报文存 放至对应外部队列、且能够通过透传FIFO传递数据才艮文至对应出方向队列, 因而将该入方向队列中的数据才艮文写入至透传FIFO,以使该入方向队列中 的数据报文经透传FIFO所在的片内 一级緩存路径传输;
如果外接DDR2 SDRAM中的对应外部队列为空时、片内或对应出方向 队列将满或已满,则由于外接DDR2 SDRAM中的对应外部队列为空,因而 将该入方向队列中的数据报文提供给存储器控制模块,以使该入方向队列中 的数据报文可经外接DDR2 SDRAM总线所在的片外二级緩存路径传输;
否则,外接DDR2 SDRAM中的对应外部队列虽有数据报文、但该外部 队列已满,暂不针对该入方向队列进行读写操作。
为了对存储的数据报文实现转发,在透传FIFO非空时,从透传FIFO 读取^t据才艮文并存》i:至对应出方向队列;在透传FIFO为空时,如果有出方 向队列非满、且外接DDR2 SDRAM中对应外部队列非空,则从外接DDR2 SDRAM内的对应外部队列中读取应存i文至该出方向队列;否则,Bypass FIFO为空、且对应外部队列Qi中没有数据报文,因而暂不针对该出方向队列进行读写操作。
参见图10a,为了对ASIC或FPGA芯片接收自外部的数据报文实现存 储的具体流程可以包括
步骤1001a,轮寻下一个入方向队列。
步骤1002a,依据当前轮寻到的入方向队列产生的表示该入方向队列空 满状态的状态信号,判断该入方向队列是否非空,如果是,则执行步骤1003a, 否则返回步骤1001a继续轮寻。
步骤1003a,判断外接DDR2 SDRAM中的对应外部队列是否有数据报 文,如果有数据报文,则执行步骤1004a,否则执行步骤1006a。
本实施例中还可进一步设置一外部存储器写指针列表和一外部存储器 读指针列表,本步骤可按照现有方式,依据外部存储器写指针列表和外部存 储器读指针列表判断外接DDR2 SDRAM中对应外部队列是否非空。
步骤1004a,判断外接DDR2 SDRAM中对应外部队列是否非满,如果 非满,则执行步骤1005,否则返回步骤1001继续4仑寻。
本步骤中,可以依据外部存储器写指针列表和外部存储器读指针列表判 断外接DDR2 SDRAM中对应外部队列是否非满。
步骤1005a,将当前轮寻到的入方向队列中的数据报文添加对应标识后、 存放至外接随机存储器内的对应外部队列中,然后返回步骤1001a继续轮寻。
本步骤中,可以将当前轮寻到的非空入方向队列中待存放至外接DDR2 SDRAM内对应外部队列的数据报文,先存放至预先在ASIC或FPGA芯片 内设置的写数据输出队列,同时将外部存储器写指针列表中,与该数据报文 所属入方向队列对应的当前写指针存放至预先在ASIC或FPGA芯片内设置 的写地址输出队列、并更新该写指针。然后依据地址输出队列中的写地址指 针,依次将写数据输出队列中顺序存放的数据报文写入至外接DDR2 SDRAM内对应外部队列。
步骤1006a,判断透传FIFO是否非满、且对应出方向队列非满,如果 是,则执行步骤1007a,否则跳转至步骤1004a。步骤1007a,透传FIFO非满、可以存入数据报文,且对应出方向队列 非满、不会出现数据报文无法存入对应出方向队列而丟包的情况,因而将该 入方向队列中的数据才艮文添加对应标识后写入至透传FIFO,并返回步骤 腦la。
至此,上述流程结束。
参见图10b,为了对对存储的数据报文实现转发的具体流程可以包括
步骤1001b,判断透传FIFO是否非空,如果是,则执行步骤1002b, 否则执行步骤1003b。
步骤1002b,从透传FIFO读取数据报文,并依据该数据报文携带的标 识存》文至对应的出方向队列,然后返回步骤lOOlb。
步骤1003b,轮寻下一个出方向队列。
步骤1004b,依据当前轮寻到的出方向队列产生的表示该出方向队列空 满状态的状态信号,判断该出方向队列是否非满,如果是,则执行步骤1005b, 否则返回步骤lOOlb。
步骤1005b,判断外部随机存储器中对应外部队列是否非空,如果是, 则执行步骤1006b,否则返回步骤1001b。
本实施例中还可进一步设置一外部存储器写指针列表和一外部存储器 读指针列表,本步骤可按照现有方式,依据外部存储器写指针列表和外部存 储器读指针列表判断外部随机存储器中对应外部队列是否非满。
步骤1006b,从外接随机存储器的对应外部队列中请求读取数据报文。
本步骤中,可以先将预先在ASIC或FPGA芯片内设置的外部存储器读 指针列表中,与非满状态出方向队列对应的读指针存放至预先在ASIC或 FPGA芯片内"&置的读地址输出队列,然后再从读^t据输入队列中读取对应 的数据报文、并更新该对应的读指针。
步骤1007b,依据读取到的数据报文携带的标识存放至当前轮寻到的非 满出方向队列,然后返回步骤1001b。
至此,上述流程结束。
33如上述图10a和图10b所示的流程可见,本实施例中的数据报文存取控 制方法利用透传FIFO作为小数据量的一级緩存,而外接的RAM则仅用作 大数据量的二级緩存,这样,由于有部分数据报文在片内存取、而非所有数 据报文均通过外接RAM实现存取,因而减少了外接RAM总线利用率低对 数据报文的传输效率的影响,从而提高数据报文传输效率。
此外,在如图10a所示流程的步骤1006a中,较佳地以Cell为单位向外 部随机存储器中的对应外部队列写入数据报文、同一 Cell的各部分写入至不 同BANK、每部分位于一个BANK中的同一行,且存储器控制模块以预设 间隔顺序向每个Cell各部分所在BANK的一行发送激活命令和包含预充电 命令的写命令、用以消除向外部随机存储器写入各部分之间的总线等待时 间;
在如图10b所示流程的步骤1006b中,较佳地以Cell为单位从外部随 机存储器中的对应外部队列中读取数据报文,且存储器控制模块以预设间隔 顺序向每个Cell各部分所在BANK的一4于发送激活命令和包含预充电命令 的读命令、用以消除从外部随机存储器读出各部分之间的总线等待时间。
这样,即可消除从前述随机存储器读取每个Cell各部分之间的等待时 间,进而提高外接RAM总线利用率、进一步提高数据报文传输效率。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等, 均应包含在本发明的保护范围之内。
权利要求
1、一种数据报文存取控制装置,其特征在于,包括入方向管理模块,内部设有若干入方向队列;出方向管理模块,内部设有若干出方向队列;存储器控制模块,可将任一入方向队列的数据报文存放至外部随机存储器内的对应外部队列中,可从外部随机存储器内的对应外部队列中读取应存放至任一出方向队列的数据报文;透传FIFO,可将任一入方向队列中的数据报文缓存后向对应出方向队列传递;入方向控制模块,在有入方向队列非空时,如果对应外部队列中有数据报文、且非满,则将该入方向队列中的数据报文提供给存储器控制模块;如果对应外部队列为空、且透传FIFO和对应出方向队列均非满,则将该入方向队列中的数据报文写入至透传FIFO;如果透传FIFO或对应出方向队列将满或已满,则将该入方向队列中的数据报文提供给存储器控制模块;否则,暂不针对该入方向队列进行读写操作;出方向控制模块,在透传FIFO非空时,从透传FIFO读取数据报文并存放至对应出方向队列;在透传FIFO为空时,如果有出方向队列非满、且外部随机存储器中对应外部队列非空,则向存储器控制模块请求从外部存储器中的对应外部队列读取数据报文、并存放至该出方向队列;否则,暂不针对该非满出方向队列进行读写操作。
2、 如权利要求1所述的数据报文存取控制装置,其特征在于, 入方向管理模块中进一步设有多路输入、 一路输出的入方向选择器,入方向选择器的每一路输入连接一个入方向队列、 一路输出连接至入方向控制 模块;入方向控制模块进一步向入方向选择器的控制端输出一入方向轮寻控 制信号,用于以轮寻方式控制入方向选择器连接入方向队列的每一路输入依次与入方向选择器的一路输出导通;出方向管理模块中进一步设有一路输入、多路输出的出方向选择器,出 方向选择器的每一路输出连接一个出方向队列、 一路输入连接自出方向控制 模块;出方向控制模块进一步向出方向选择器的控制端输出一出方向轮寻控 制信号,用于以轮寻方式控制出方向选择器连接出方向队列的每一路输出与 出方向选择器的 一路输入导通。
3、 如权利要求1所述的数据报文存取控制装置,其特征在于, 每一入方向队列进一步向入方向控制模块输出表示该入方向队列空满状态的状态信号,以供入方向控制模块判断是否有入方向队列非空;每一 出方向队列进一步向出方向控制模块和入方向控制模块输出表示 该出方向队列空满状态的状态信号,以供出方向控制模块判断是否有出方向 队列非满、入方向控制模块判断对应出方向队列是否非满。
4、 如权利要求1所述的数据报文存取控制装置,其特征在于, 入方向控制模块进一步维护一外部存储器写指针列表、并进一步通过一写数据输出队列、以及一写地址输出队列与存储器控制模块相连;入方向控 制模块将数据报文存放至写数据输出队列,同时将外部存储器写指针列表 中,与该数据报文所属入方向队列对应的当前写指针存放至写地址输出队 列、并更新该写指针;出方向控制模块进一步维护一外部存储器读指针列表、并进一步通过一 读数据输入队列、以及一读地址输出队列与存储器控制模块相连;出方向控 制模块将外部存储器读指针列表中,与非满状态出方向队列对应的读指针存 放至读地址输出队列,然后从读数据输入队列中读取对应的数据报文、并更 新该7于应的读指4十;且,入方向控制模块和出方向控制模块依据外部存储器写指针列表和外 部存储器读指针列表,判断外部随机存储器中的各外部队列的空满状态。
5、 如权利要求1至4中任一项所述的数据緩存控制装置,其特征在于,存储器控制模块以信元Cell为单位向外部随机存储器中的对应外部队 列写入数据才艮文、同一 Cell的各部分写入至不同BANK、每部分位于一个 BANK中的同一行,且存储器控制模块以预设间隔顺序向每个Cell各部分 所在BANK的一行发送激活命令和包含预充电命令的写命令、用以消除向 外部随机存储器写入各部分之间的总线等待时间;存储器控制模块以Cell为单位从外部随机存储器中的对应外部队列中 读取数据报文,且存储器控制模块以预设间隔顺序向每个Cell各部分所在 BANK的一行发送激活命令和包含预充电命令的读命令、用以消除从外部随 机存储器读出各部分之间的总线等待时间。
6、 如权利要求5所述的数据緩存控制装置,其特征在于,一个Cell小于等于一行的容量与BANK数量的乘积、且大于等于对一 个BANK的读写访问时间与该BANK的预充电时间内所能够读写的最大彩: 据量;所述预设间隔小于等于一行数据占用的外接随机存储器的总线周期长度。
7、 一种数据报文存取控制方法,该方法可将芯片接收的数据报文写入 至外接随机存储器,还可从外接随机存储器中请求读取数据报文至芯片、并 从芯片发出,其特征在于,在芯片内设置若干入方向队列、及对应的若干出 方向队列,还在芯片内设置可在片内传输数据报文的透传FIFO;且,该数据报文存取控制方法包括入方向控制模块,在有入方向队列非空时,如果对应外部队列中有数据 报文、且非满,则将该入方向队列中的数据报文提供给存储器控制模块;如 果对应外部队列为空、且透传FIFO和对应出方向队列均非满,则将该入方 向队列中的凄t据l艮文写入至透传FIFO;如果透传FIFO或对应出方向队列将 满或已满,则将该入方向队列中的数据报文提供给存储器控制模块;否则, 暂针对该入方向队列进行读写操作;在透传FIFO非空时,从透传FIFO读取数据报文并存放至对应出方向队列;在透传FIFO为空时,如果有出方向队列非满、且外接随机存储器中该出方向队列;否则,暂不针对该非满出方向队列进行读写操作。
8、 如权利要求7所述的数据报文存取控制方法法,其特征在于,该数 据报文存取控制方法进一步轮寻每一入方向队列和每一出方向队列。
9、 如权利要求7所述的数据报文存取控制方法,其特征在于, 每一入方向队列进一步产生表示该入方向队列空满状态的状态信号,用以判断是否有入方向队列非空;每一 出方向队列进一步产生表示该出方向队列空满状态的状态信号,用 以判断是否有出方向队列非满。
10、 如权利要求7所述的数据报文存取控制方法,其特征在于,进一步 设置一外部存储器写指针列表和一外部存储器读指针列表;该数据报文存取控制方法进 一 步将待存放至外接随机存储器内对应外 部队列的数据报文,存放至预先在芯片内设置的写数据输出队列,同时将外 部存储器写指针列表中,与该数据报文所属入方向队列对应的当前写指针存放至预先在芯片内设置的写地址输出队列、并更新该写指针;该数据报文存取控制方法还进一步将预先在芯片内设置的外部存储器读指针列表中,与非满状态出方向队列对应的读指针存放至预先在芯片内设置的读地址输出队列,然后从读数据输入队列中读取对应的数据报文、并更新该对应的读指针;且,该数据报文存取控制方法依据外部存储器写指针列表和外部存储器读指针列表,判断外接随机存储器中的各外部队列的空满状态。
11、 如权利要求7至10中任一项所述的数据报文存取控制方法,其特 征在于,该数据报文存取控制方法以信元Cell为单位向外部随机存储器中的对 应外部队列写入^据报文、同一 Cell的各部分写入至不同BANK、每部分 位于一个BANK中的同一行,且存储器控制模块以预设间隔顺序向每个Cell各部分所在BANK的一行发送激活命令和包含预充电命令的写命令、用以消除向外部随机存储器写入各部分之间的总线等待时间;该数据报文存取控制方法还以Cell为单位从外部随机存储器中的对应外部队列中读取数据报文,且存储器控制模块以预设间隔顺序向每个Cell各部分所在BANK的一行发送激活命令和包含预充电命令的读命令、用以消除从外部随机存储器读出各部分之间的总线等待时间。
12、如权利要求11所述的数据緩存控制方法,其特征在于,一个Cell小于等于一行的容量与BANK数量的乘积、且大于等于对一个BANK的读写访问时间与该BANK的预充电时间内所能够读写的最大数据量;所述预设间隔小于等于一行数据占用的外接随机存储器的总线周期长度。
全文摘要
本发明公开了一种数据报文存取控制装置和方法。本发明利用数据报文处理芯片内的RAM资源实现一透传FIFO,该透传FIFO用作小数据量的一级缓存,而数据报文处理芯片外接的RAM则仅用作大数据量的二级缓存,这样,由于有部分数据报文在片内存取、而非所有数据报文均通过外接RAM实现存取,因而减少了外接RAM总线利用率低对数据报文的传输效率的影响,从而提高数据报文传输效率。本发明还可以BANK交错(Interleave)方式对外接RAM进行数据报文的读写操作,从而提高了外接RAM总线利用率、进一步提高了数据报文传输效率。
文档编号H04L12/56GK101621469SQ200910091229
公开日2010年1月6日 申请日期2009年8月13日 优先权日2009年8月13日
发明者凯 任 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1