一种ddr控制器及请求调度方法

文档序号:6741557阅读:345来源:国知局
专利名称:一种ddr控制器及请求调度方法
技术领域
本发明涉及数字集成电路DDR控制器设计领域,具体说是一种DDR控制器及请求调度方法。所述DDR指DDR2/3 (DDR2或DDR3)。
背景技术
随着计算机系统的迅速发展,现代计算机系统越来越受主存储器性能的限制。处理器的性能以每年60%的速度在增长,而主存储器芯片带宽仅仅以每年10%的速度在增长。在速度方面,主存储器和处理器一直保持了大约一个数量级的差距。为使主存储器带宽能够匹配处理器性能所花费的代价越来越大,计算机系统设计者必须尽力去缩小处理器和主存储器之间的性能差距。DDR2/3控制器的请求调度方法就是对主存储器访问的相关操作进行合理调度的技术,通过该调度缩短访存时间,从而达到提高主存储器带宽的目的。

发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种DDR控制器及请求调度方法,应用于高速通信系统传输芯片设计中数据的存储及转发,相比较传统控制器,采用基于DRAM结构特性的请求调度,大大降低请求的延迟,提高传输时数据总线的利用率,相同配置下可以得到更大总线带宽。为达到以上目的,本发明采取的技术方案是:一种DDR控制器,其特征在于,包括:AHB接口适配模块10,若干客户请求发送模块11,客户接口模块12,端口调度模块13,BANK调度模块14,解释模块15,PUB_PHY适配模块16,DDR2/3PHY模块17,DDR2/3器件18,接口数据缓存模块19,数据处理模块20,微机口配置模块21,时钟管理模块22 ;AHB接口适配模块10完成将AHB总线上的请求转换到DDR控制器设计的私有接口,并将转换后的请求输出到客户接口模块12 ;客户请求发送模块11完成客户请求适配到DDR控制器设计的私有接口,并将转换后的请求输出到客户接口模块12 ;客户接口模块12完成应用客户请求吸收和数据交换,客户地址到DDR地址的映射,读写请求地址分配和回收,并具有分配地址检错保护能力,读、写请求顺序响应功能,客户时钟域与DDR3C核心控制层时钟域的相互切换功能;端口调度模块13,其完成根据不同端口配置的请求的优先级对请求的执行顺序进行调度,将请求根据端口优先级顺序输出给BANK调度模块14 ; BANK调度模块14完成根据请求的BANK地址及读写类型来进行请求顺序的调整,输出给下游解释模块15,目的是尽可能的将相同BANK地址的请求分散开,将相同读写类型的请求连续起来,从而使下游解释模块的解释命令效率更高;解释模块15,主要完成维持DRAM的刷新、对业务的读写请求进行命令调度,按照DDR2/3协议将仲裁后的客户读、写请求解释为DRAM命令,完成请求业务的分割,完成DDR自刷新模式及省电模式功能;PUB_PHY适配模块16主要完成控制器输出的DRAM命令和读、写数据与不同厂家DDR-PHY的适配;其实现DRAM的初始化及通过微机口来对DRAM进行测试的功能;DDR2/3PHY模块17完成DDR控制器和DDR2/3器件18之间的连接,进行电气信号的转换、写电平校准、读数据采集和读取数据偏移校正等工作;接口数据缓存模块19缓存接口发来的读写数据;数据处理模块20包括读数据处理模块201和写数据处理模块202两部分,在读/写接口缓冲的数据读取/写入过程,基于每次分割后的列动作,产生接口缓冲的读/写信息,计算命令到数据的整个路径延时;微机口配置模块21通过微机口来配置控制器需要使用的各种参数配置,以满足不同应用需求;时钟管理模块22提供设计所需要的时钟源。在上述技术方案的基础上,所述客户请求发送模块11根据客户要求支持读写合一端口、单独写端口或单独读端口。在上述技术方案的基础上,客户接口模块12具有自检功能,在没有客户请求的情况下能发出一系列具有校验性质的读写请求。在上述技术方案的基础上,端口调度模块13作为仲裁调度模块,其在遇到相同优先级下采用轮询调度的方法,保证高优先级端口请求的延迟较短,得到更大的总线带宽。在上述技术方案的基础上,所述DDR控制器的各模块完全以硬件FPGA形式实现。一种DDR控制器的请求调度方法,其特征在于,包括以下步骤:步骤1:用户通过客户请求发送模块11向客户接口模块12发出数据的读写请求,所述数据的读写请求至少包括请求类型、地址、长度、ID号,客户接口模块12暂时将请求存入模块内的缓存中,等待下游端口调度模块13给出响应ACK信号后,顺序向端口调度模块13发出请求;其中:数据通路写方向,写数据存入按照请求信息中的页面地址存入客户接口模块12的写缓存中,等待后续的解释模块15解释该请求时再将写数据发出;数据通路读方向,接收到解释模块15的读脉冲后,根据读使能信号将读回的数据暂存到读缓存中,按照客户读请求来的次序依次弹出读数据;步骤2:客户接口模块12发出的请求在端口调度模块13和BANK调度模块14内根据请求的端口号及BANK地址进行调度;步骤3:经过调度后的请求顺序进入解释模块15内的请求等待队列中,按照DDR的协议中规定的时序要求将请求解释成DDR识别的指令;步骤4:解释模块15发出的DDR指令,经过PUB_PHY适配模块16来调整指令及数据间的相位关系,然后进入PHY模块17内进行电平转换输出到DDR器件18。在上述技术方案的基础上,当每次请求完成后,在客户接口模块12内部,客户的地址需要按照请求输入的次序顺序释放。在上述技术方案的基础上,端口调度模块13和BANK调度模块14的具体调度过程如下:首先,请求在端口调度模块13内会根据请求端口的优先级进行初步的调度,高优先级优先,同优先级下使用Roundrobin轮询算法进行仲裁;然后,根据请求的BANK地址及读写类型将请求分入不同的队列中,BANK调度模块14会在不同的队列的请求间进行间插调度,最大程度保证不连续调用同一个BANK的请求;同时,BANK调度模块14还会保证读写请求“捆绑”输出,即保证一段时间内DDR数据总线传输方向一致,减少不必要的读写切换时间;另外,BANK调度模块14还有超时保护机制,保证不会出现某种类型的请求总是得不到响应的问题出现。在上述技术方案的基础上,所述客户接口模块12包括以下功能子模块:读数据缓存119、读请求扭序120、读响应队列121、读BUFF页面指针122、客户地址到缓存页面的地址映射125、请求信息缓存队列124、写BUFF页面指针126、写请求扭序127、写响应队列128、写数据缓存129 ;客户接口模块12的工作流程如下:对于写请求的处理,客户端在收到写响应cli_waq_ack后,向客户接口模块12发出写请求、客户信息及数据,客户信息中的地址信息经过客户地址到缓存页面的地址映射125子模块转换为客户接口可识别的页面地址page_addr,并与其他请求信息一起存入请求信息缓存队列124中;写数据cli_wd根据映射后的缓存页面地址page_addr存入写数据缓存写数据缓存129中;同时记录客户接口中缓存的写请求个数的写BUFF页面指针126加I ;然后等待下游的端口调度模块13中的请求等待队列不满时,就按队列次序顺序弹出请求及信息;当下游的解释模块15完成某个写请求的解释后,会通过写数据处理模块202向客户接口模块12发出取该请求数据的请求;由于下游模块会对请求执行次序进行一定的调度,因此写数据处理模块202返回的写响应为乱序释放;为了防止客户端出现地址冲突的问题,客户接口模块12会将乱序释放的写响应存入写响应队列128中,最后根据实际写请求进入的顺序依次通过写请求扭序127顺序输出写完成指示及ID信息;对于读请求的处理,请求信息的存入及地址映射原理同写请求的处理;当解释模块15完成读请求的解释后,等待一定延迟后将读数据根据读BUFF页面指针122存入读数据缓存119的相应位置,等待读响应队列121中返回的响应进入,在读请求扭序120扭序成请求进入的次序后,然后顺序向客户发出读数据及ID信息。本发明所述的DDR控制器及请求调度方法,调度方法具有高效率,可以灵活支持DDR2/3器件的控制器设计及实现装置,有效解决目前数字传输芯片中数据通过DDR器件存储转发效率较低的瓶颈问题,以及硬件实现存储器访问调度算法的实现问题。


本发明有如下附图:图1:高速DDR2/3控制器的结构示意图。图2:客户接口模块工作流程图。图3:请求仲裁的结构示意图。图4:请求仲裁的工作流程图。
具体实施例方式以下结合附图对本发明作进一步详细说明。如图1所示,本发明所述的DDR控制器(DDR3C控制器),是一种结构上含有用户接口及DDR器件物理层(PHY),功能上兼容一般数据请求及AHB类请求的DDR2/3的控制器装置,其包括:AHB接口适配模块(AHB_APT) 10,若干客户请求发送模块(CLI_H0ST) 11,客户接口模块(CLI_INF) 12,端口调度模块(P0RT_SCH) 13,BANK 调度模块(BANK_SCH) 14,解释模块(DDR3CTR) 15,PUB_PHY 适配模块 16,DDR2/3PHY 模块 17,DDR2/3 器件 18,接口数据缓存模块19,数据处理模块(W/RDCC) 20,微机口配置模块(UPI_DDR3C) 21,时钟管理模块(CLK_MANAGE) 22 ;AHB接口适配模块10完成将AHB总线上的请求转换到DDR控制器设计的私有接口,并将转换后的请求输出到客户接口模块12 ;客户请求发送模块11完成客户请求适配到DDR控制器设计的私有接口,并将转换后的请求输出到客户接口模块12 ;所述客户请求发送模块11根据客户要求支持读写合一端口、单独写端口或单独读端口;图1所示实施例中,设有N个客户请求发送模块11,N值为大于等于I的正整数;客户接口模块12完成应用客户请求吸收和数据交换,客户地址到DDR地址的映射,读写请求地址分配和回收,并具有分配地址检错保护能力,读、写请求顺序响应功能,客户时钟域与DDR3C核心控制层时钟域的相互切换功能;另外,本模块还具有自检功能,在没有客户请求的情况下能发出一系列具有校验性质的读写请求,便于使用者对设计进行调试;端口调度模块13,亦可称为仲裁调度模块,其完成根据不同端口配置的请求的优先级对请求的执行顺序进行调度,将请求根据端口优先级顺序输出给BANK调度模块14 ;相同优先级下采用轮询调度的方法,保证高优先级端口请求的延迟较短,得到更大的总线带宽;BANK调度模块14完成根据请求的BANK地址及读写类型来进行请求顺序的调整,输出给下游解释模块15,目的是尽可能的将相同BANK地址的请求分散开,将相同读写类型的请求连续起来,从而使下游解释模块的解释命令效率更高;解释模块15,亦称为读写请求解释模块,主要完成维持DRAM的刷新、对业务的读写请求进行命令调度,按照DDR2/3协议将仲裁后的客户读、写请求解释为DRAM命令,完成请求业务的分割,完成DDR自刷新模式及省电模式(低功耗设计)等功能;PUB_PHY适配模块16主要完成控制器输出的DRAM命令和读、写数据与不同厂家DDR-PHY的适配;另外,DRAM的初始化及通过微机口来对DRAM进行测试的功能也在此实现;针对不同的厂家或DDR2/3类型,这个模块需要调整;DDR2/3PHY模块17完成DDR控制器和DDR2/3器件18之间的连接,进行电气信号
的转换、写电平校准、读数据采集和读取数据偏移校正等工作;接口数据缓存模块19缓存接口发来的读写数据;数据处理模块20包括读数据处理模块201 (RDCC)和写数据处理模块202 (WDCC)
两部分,在读/写接口缓冲的数据读取/写入过程,基于每次分割后的列动作,产生接口缓冲的读/写信息,计算命令到数据的整个路径延时;微机口配置模块21通过微机口来配置控制器需要使用的各种参数配置,目的是使本发明可以满足不同应用需求;时钟管理模块22提供设计所需要的时钟源。本发明所述的DDR2/3控制器的设计完全以硬件FPGA形式实现。通过微机口(UPI)对控制器进行关于DDR参数及控制器特性的简单配置,就可以实现通过硬件接口向DDR2/3器件存储转发数据。对于高速通信中需要进行大量数据存储转发的系统,使用本发明设计,在可承受的硬件代价下(硬件面积较小复杂度不高),可以得到较高的数据总线利用率(数据传输带宽)。另外,本发明支持AHB总线类的CPU请求,并通过仲裁算法保证AHB类的请求得到较快的响应。其具有以下特色和优点:1、同时兼容DDR2/3协议;2、支持业界标准 DDR PHY Interface〗.I ;3、低面积、低客户请求延时的设计结构;4、同时支持AMBA AXI/AHB及业务类请求,端口可灵活配置;5、高效的请求调度方法(基于客户请求及DRAM特性)保证高带宽利用率及低延时; 6、支持低功耗设计,降低系统功耗;7、采用1:2的控制器与DRAM时钟频率比,降低设计部分时序;8、具有自检功能,在不接外在接口的情况下可以测试控制器及DDR器件的工作情况。针对上述DDR控制器,本发明还给出了该DDR控制器的请求调度方法,包括以下步骤:步骤1:用户通过客户请求发送模块11(该模块包括两类请求:一般客户端口请求及AHB接口类请求)向客户接口模块12发出数据的读写请求(包括请求类型、地址、长度、ID等),客户接口模块12暂时将请求存入模块内的缓存中,等待下游端口调度模块13给出响应ACK信号后,顺序向端口调度模块13发出请求;数据通路写方向,写数据存入按照请求信息中的页面地址存入客户接口模块12的写缓存中,等待后续的解释模块15解释该请求时再将写数据发出;数据通路读方向,接收到解释模块15的读脉冲后,根据读使能信号将读回的数据暂存到读缓存中,按照客户读请求来的次序依次弹出读数据;由于进入客户接口模块12的请求需要经过下游端口调度模块13和BANK调度模块14的乱序调度,因此在解释模块15中有可能出现前面到的请求还未执行,后面的请求就读写了相同的地址的冲突情况。为了避免这种请求地址冲突的情况,当每次请求完成后,在客户接口模块12内部,客户的地址需要按照请求输入的次序顺序释放;步骤2:客户接口模块12发出的请求会在端口调度模块13和BANK调度模块14内根据请求的端口号及BANK地址进行一定程度地调度。调度的作用:一是保证低延时端口请求的高优先级,二是提高下游解释模块的解释效率,从而得到DDR数据总线上的高吞吐率。端口调度模块13和BANK调度模块14的具体调度过程如下:
首先,请求在端口调度模块13内会根据请求端口的优先级进行初步的调度,高优先级优先,同优先级下使用Roundrobin轮询算法进行仲裁;然后,根据请求的BANK地址及读写类型将请求分入不同的队列中(DDR共8个BANK,每个BANK分为读、写两个队列,共16个队列),BANK调度模块14会在不同的队列的请求间进行间插调度,最大程度保证不连续调用同一个BANK的请求;同时,BANK调度模块14还会保证读写请求“捆绑”输出,即保证一段时间内DDR数据总线传输方向一致,减少不必要的读写切换时间;另外,BANK调度模块14还有超时保护机制,保证不会出现某种类型的请求总是得不到响应的问题出现;步骤3:经过调度后的请求顺序进入解释模块15内的请求等待队列中,按照DDR的协议中规定的时序要求将请求解释成DDR识别的指令;具体解释过程中,一方面,解释模块15会顺序解释并执行等待队列队首请求的读写动作,另一方面,如果模块检测到队列中有其他请求需要提前准备的需求(比如充电或激活),则会在执行列动作的间隔中,插空执行队列中请求的充电或激活动作;另外,解释模块还需要完成DDR规定的刷新操作及省电模式下的自刷新操作;步骤4:解释模块15发出的DDR指令,经过PUB_PHY适配模块16来调整指令及数据间的相位关系,然后进入PHY模块17内进行电平转换输出到DDR器件18 ;PUB_PHY适配模块16接口通过简单处理可灵活适配到不同的PHY接口上,方便通用;为了降低整个设计的时序要求,本发明设计采用控制核心层使用低频时钟,在PUB_PHY模块倍频到DDR高频时钟的方法,即解释模块在低频时钟下并行输出两条通路的命令、地址及双倍位宽的数据,在PUB_PHY模块中使用倍频时钟采样后合并成一条通路输出给DDR ;接口间具体的时序关系满足业界标准 DDR PHY Interface2.1。如图2所示为本发明所述的DDR2/3控制器设计的客户接口模块12的工作流程图,其中客户接口模块12的具体实施包括以下功能子模块:读数据缓存119、读请求扭序120、读响应队列121、读BUFF页面指针122、客户地址到缓存页面的地址映射125、请求信息缓存队列124、写BUFF页面指针126、写请求扭序127、写响应队列128、写数据缓存129。本发明实施例的DDR2/3控制器设计的客户接口模块12可以适用于读写合一的客户接口、独立的读接口、独立的写接口,AHB类客户接口(前端需增加AHB总线的适配电路模块)。在不同的应用场景下,可以通过配置来选择接口的类型。客户接口模块12的工作流程如下:I)对于写请求的处理,客户端在收到写响应cli_waq_ack后,向客户接口模块12发出写请求、客户信息(包括地址、长度、ID、掩码等)及数据,客户信息中的地址信息经过客户地址到缓存页面的地址映射125子模块转换为客户接口可识别的页面地址page_addr,并与其他请求信息一起存入请求信息缓存队列124 (异步FIFO组成)中;写数据cli_wd根据映射后的缓存页面地址page_addr存入写数据缓存写数据缓存129中;同时记录客户接口中缓存的写请求个数的写BUFF页面指针126加I ;然后等待下游的端口调度模块13中的请求等待队列不满时(即反压ACK信号有效),就按队列次序顺序弹出请求及信息;当下游的解释模块15完成某个写请求的解释后,会通过写数据处理模块202 (WDCC,图1中数据处理模块20的子模块)向客户接口模块12发出取该请求数据的请求;由于下游模块(端口调度模块13,BANK调度模块14)会对请求执行次序进行一定的调度,因此写数据处理模块202返回的写响应为乱序释放;为了防止客户端出现地址冲突的问题(例如因为请求调度后,某个DDR地址还没被写之前就被读),客户接口模块12会将乱序释放的写响应存入写响应队列(异步FIFO) 128中,最后根据实际写请求进入的顺序依次通过写请求扭序127顺序输出写完成指示及ID信息;2)对于读请求的处理,请求信息的存入及地址映射原理同写请求的处理;当解释模块15完成读请求的解释后,等待一定延迟后将读数据根据读BUFF页面指针122存入读数据缓存119的相应位置,等待读响应队列121中返回的响应进入,在读请求扭序120扭序成请求进入的次序后,然后顺序向客户发出读数据及ID信息。如图3所示为本发明所述的DDR2/3控制器设计的用于实现请求仲裁功能的端口调度模块13及BANK调度模块14的结构框图,即请求仲裁功能的具体实施包括以下功能模块:端口调度模块13、BANK调度模块14。各个端口的请求并行进入端口调度模块13,按照优先级、连续请求间相同BANK地址的请求分离、读写类型一致的请求捆绑执行等调度原则下串行输出。如图4所示为本发明所述的DDR2/3控制器设计的请求调度(请求仲裁)功能的具体工作流程图。由于DDR器件的独特的三维存储结构(DDR地址分为Bank块地址),Row (行地址)和Column (列地址)三部分),其存取数据的性能高度依赖于所执行命令的模式(即各个业务间命令的执行次序)。通过分析发现,对请求按照相同BANK地址离散化、读写类型一致的请求捆绑执行的原则进行乱序调度,可以显著的提高存储器的性能(带宽、延时等)。本发明实施例的DDR2/3控制器设计按照上面的调度原则进行请求调度,其工作流程如下:整个调度分为两个阶段,端口调度(端口仲裁,即一次仲裁)以及BANK调度(BANK仲裁,即二次仲裁)。首先,各个客户接口模块12的请求并行进入端口调度模块13,端口调度模块13会根据每个接口所配置的请求优先级将请求进行分组(步骤100设计支持接口可以配置I一8种优先级,I优先级最高),然后各组优先级请求进入该组相对应的轮叫调度Roundrobin (Round-Robin Scheduling)轮询模块(简称为RR模块)内(步骤101),等待下游步骤102弹出一个请求后,启动相应优先级RR模块的轮询,选出该优先级的下一个待输出的请求。每种优先级下的RR模块选择的等待输出请求,会按照固定的优先级顺序(1 — 8)(步骤102),串行输出进入BANK调度模块14。BANK调度模块14会根据请求的BANK地址,将输入请求分为8个BANK管理单元BMU (步骤103),在每个BANK管理单元内部根据端口配置的端口类型(读写合一、单独写、单独读)将请求存入三个队列中(步骤104),然后各个BANK管理单元队列中队首的请求按照读写类型分别进入读或写RR模块内(步骤105),根据请求类型选择状态机给出的选择信号来从读或写RR模块内选择请求输出(步骤106),最终串行输出调度后的请求(步骤109)。读写类型请求的选择是由一个请求类型选择状态机来确定(步骤107),该状态机会根据微机口配置的读写请求的最长执行时间以及反馈回来的当前输出的请求BANK地址来调整输出请求的类型。另外,为了保证从BANK调度模块14串行输出的请求BANK地址的分散性,当前输出的请求的BANK地址会被记录,并反馈回读和写RR模块的入口处,在一段时间内(配置值)屏蔽该类BANK地址的请求再次进入读和写RR模块内(步骤108)。经过上述两阶段调度的请求流,具有请求的BANK地址离散化、读写类型捆绑,并兼顾了客户端口的优先级的特点,大大调高了下游解释模块进行命令解释的效率,提高了整个控制器的转发性能。
上述本发明的实施例按照本发明技术方案的控制方法为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围包括且不限于该实施例。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
权利要求
1.一种DDR控制器,其特征在于,包括:AHB接口适配模块(10),若干客户请求发送模块(11),客户接口模块(12 ),端口调度模块(13),BANK调度模块(14),解释模块(15),PUB_PHY适配模块(16),DDR2/3PHY模块(17),DDR2/3器件(18),接口数据缓存模块(19),数据处理模块(20 ),微机口配置模块(21),时钟管理模块(22 ); AHB接口适配模块(10)完成将AHB总线上的请求转换到DDR控制器设计的私有接口,并将转换后的请求输出到客户接口模块(12); 客户请求发送模块(11)完成客户请求适配到DDR控制器设计的私有接口,并将转换后的请求输出到客户接口模块(12 ); 客户接口模块(12)完成应用客户请求吸收和数据交换,客户地址到DDR地址的映射,读写请求地址分配和回收,并具有分配地址检错保护能力,读、写请求顺序响应功能,客户时钟域与DDR3C核心控制层时钟域的相互切换功能; 端口调度模块(13),其完成根据不同端口配置的请求的优先级对请求的执行顺序进行调度,将请求根据端口优先级顺序输出给BANK调度模块(14); BANK调度模块(14)完成根据请求的BANK地址及读写类型来进行请求顺序的调整,输出给下游解释模块(15),目的是尽可能的将相同BANK地址的请求分散开,将相同读写类型的请求连续起来,从而使下游解释模块的解释命令效率更高; 解释模块(15),主要完成维持DRAM的刷新、对业务的读写请求进行命令调度,按照DDR2/3协议将仲裁后的客户读、写请求解释为DRAM命令,完成请求业务的分割,完成DDR自刷新模式及省电模式功能; PUB_PHY适配模块(16)主要完成控制器输出的DRAM命令和读、写数据与不同厂家DDR-PHY的适配;其实现DRAM的初始化及通过微机口来对DRAM进行测试的功能; DDR2/3PHY模块(17)完成DDR控制器和DDR2/3器件(18)之间的连接,进行电气信号的转换、写电平校准、读数据采集和读取数据偏移校正等工作; 接口数据缓存模块(19)缓存接口发来的读写数据; 数据处理模块(20)包括读数据处理模块(201)和写数据处理模块(202)两部分,在读/写接口缓冲的数据读取/写入过程,基于每次分割后的列动作,产生接口缓冲的读/写信息,计算命令到数据的整个路径延时; 微机口配置模块(21)通过微机口来配置控制器需要使用的各种参数配置,以满足不同应用需求; 时钟管理模块(22)提供设计所需要的时钟源。
2.如权利要求1所述的DDR控制器,其特征在于:所述客户请求发送模块(11)根据客户要求支持读写合一端口、单独写端口或单独读端口。
3.如权利要求1所述的DDR控制器,其特征在于:客户接口模块(12)具有自检功能,在没有客户请求的情况下能发出一系列具有校验性质的读写请求。
4.如权利要求1所述的DDR控制器,其特征在于:端口调度模块(13)作为仲裁调度模块,其在遇到相 同优先级下采用轮询调度的方法,保证高优先级端口请求的延迟较短,得到更大的总线带宽。
5.如权利要求1所述的DDR控制器,其特征在于:所述DDR控制器的各模块完全以硬件FPGA形式实现。
6.一种DDR控制器的请求调度方法,其特征在于,包括以下步骤: 步骤1:用户通过客户请求发送模块(11)向客户接口模块(12)发出数据的读写请求,所述数据的读写请求至少包括请求类型、地址、长度、ID号,客户接口模块(12)暂时将请求存入模块内的缓存中,等待下游端口调度模块(13)给出响应ACK信号后,顺序向端口调度模块(13)发出请求; 其中: 数据通路写方向,写数据存入按照请求信息中的页面地址存入客户接口模块(12)的写缓存中,等待后续的解释模块(15)解释该请求时再将写数据发出; 数据通路读方向,接收到解释模块(15)的读脉冲后,根据读使能信号将读回的数据暂存到读缓存中,按照客户读请求来的次序依次弹出读数据; 步骤2:客户接口模块(12)发出的请求在端口调度模块(13)和BANK调度模块(14)内根据请求的端口号及BANK地址进行调度; 步骤3:经过调度后的请求顺序进入解释模块(15 )内的请求等待队列中,按照DDR的协议中规定的时序要求将请求解释成DDR识别的指令; 步骤4:解释模块(15)发出的DDR指令,经过PUB_PHY适配模块(16)来调整指令及数据间的相位关系,然后进入PHY模块(17)内进行电平转换输出到DDR器件(18)。
7.如权利要求6所述的方法,其特征在于:当每次请求完成后,在客户接口模块(12)内部,客户的地址需要按照请求输入的次序顺序释放。
8.如权利要求6所述的方法,其特征在于,端口调度模块(13)和BANK调度模块(14)的具体调度过程如下: 首先,请求在端口调度模块(13)内会根据请求端口的优先级进行初步的调度,高优先级优先,同优先级下使用轮叫调度Roundrobin轮询算法进行仲裁; 然后,根据请求的BANK地址及读写类型将请求分入不同的队列中,BANK调度模块(14 )会在不同的队列的请求间进行间插调度,最大程度保证不连续调用同一个BANK的请求;同时,BANK调度模块(14)还会保证读写请求“捆绑”输出,即保证一段时间内DDR数据总线传输方向一致,减少不必要的读写切换时间;另外,BANK调度模块(14)还有超时保护机制,保证不会出现某种类型的请求总是得不到响应的问题出现。
9.如权利要求6所述的方法,其特征在于,所述客户接口模块(12)包括以下功能子模块:读数据缓存(119 )、读请求扭序(120 )、读响应队列(121)、读BUFF页面指针(122 )、客户地址到缓存页面的地址映射(125)、请求信息缓存队列(124)、写BUFF页面指针(126)、写请求扭序(127)、写响应队列(128)、写数据缓存(129); 客户接口模块(12)的工作流程如下: 对于写请求的处理,客户端在收到写响应cli_waq_ack后,向客户接口模块(12)发出写请求、客户信息及数据,客户信息中的地址信息经过客户地址到缓存页面的地址映射(125)子模块转换为客户接口可识别的页面地址page_addr,并与其他请求信息一起存入请求信息缓存队列(124)中;写数据cli_wd根据映射后的缓存页面地址page_addr存入写数据缓存写数据缓存(129)中;同时记录客户接口中缓存的写请求个数的写BUFF页面指针(126)加I;然后等待下游的端口调度模块(13)中的请求等待队列不满时,就按队列次序顺序弹出请求及信息;当下游的解释模块(15)完成某个写请求的解释后,会通过写数据处理模块(202 )向客户接口模块(12 )发出取该请求数据的请求;由于下游模块会对请求执行次序进行一定的调度,因此写数据处理模块(202)返回的写响应为乱序释放;为了防止客户端出现地址冲突的问题,客户接口模块(12)会将乱序释放的写响应存入写响应队列(128)中,最后根据实际写请求进入的顺序依次通过写请求扭序(127)顺序输出写完成指示及ID信息; 对于读请求的处理,请求信息的存入及地址映射原理同写请求的处理;当解释模块(15)完成读请求的解释后,等待一定延迟后将读数据根据读BUFF页面指针(122)存入读数据缓存(119)的相应位置,等待读响应队列(121)中返回的响应进入,在读请求扭序(120)扭序成请求进入的次序后,然后顺序向客户发出读数据及ID信息。
全文摘要
本发明涉及一种DDR控制器及请求调度方法,该控制器包括AHB接口适配模块(10),若干客户请求发送模块(11),客户接口模块(12),端口调度模块(13),BANK调度模块(14),解释模块(15),PUB_PHY适配模块(16),DDR2/3PHY模块(17),DDR2/3器件(18),接口数据缓存模块(19),数据处理模块(20),微机口配置模块(21),时钟管理模块(22)。本发明所述的DDR控制器及请求调度方法,应用于高速通信系统传输芯片设计中数据的存储及转发,相比较传统控制器,采用基于DRAM结构特性的请求调度,大大降低请求的延迟,提高传输时数据总线的利用率,相同配置下可以得到更大总线带宽。
文档编号G11C7/22GK103198856SQ20131009601
公开日2013年7月10日 申请日期2013年3月22日 优先权日2013年3月22日
发明者王颖伟, 冯波, 张睿 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1