高速访问双倍速率同步动态随机存储器的控制方法及装置与流程

文档序号:11277730阅读:267来源:国知局
高速访问双倍速率同步动态随机存储器的控制方法及装置与流程

本发明涉及访问技术,尤其涉及一种高速访问双倍速率同步动态随机存储器(ddr,doubledataratesdram)的控制方法及装置。



背景技术:

随着高速通信系统的迅猛发展,网络系统中的以太网数据流量越来越大,所需服务功能也越来越多,对传输的以太网包,需要一块足够大小的缓存空间,将数据缓存起来,在完成以太网数据的分析、交换、路由以及用户定义的服务功能后,再将数据报文从缓存中取出并发送出去。

由于当前的网络通信设备速率很高,所需的缓存空间也非常大,对缓存空间的访问速率也有不小的要求,在这种情况下,传统的同步动态随机存储器(sdram,synchronousdynamicrandomaccessmemory)已经不能满足需求,而ddr具有更高的工作频率,更快的速度,更大的缓存空间,已经成为通信网络中最为重要的缓存器件。

现有技术中,在当前网络通信设备中对ddr的访问,主要是通过将访问地址转化成行列映射,首先经过选页操作选到相应的页面(page),再通过地址线选到相应的地址段对数据进行读写。如果ddr的读写地址不连续,则访问时会进行频繁的选页操作,大大降低了ddr的访问效率;同时读写的不均衡也会降低ddr的访问效率。传统的解决方法主要是将ddr划分为固定的缓存块,虽然,这种方法可以提高ddr的访问效率,但是也存在一些弊端:比如固定缓存块的划分,如果缓存块过大,可能会浪费ddr的内存空间;如果缓存块过小,则起不到提高速率的作用等等,这些,都会降低ddr的访问效率。



技术实现要素:

有鉴于此,本发明实施例希望提供一种高速访问ddr的控制方法及装置,至少解决了现有技术存在的问题。

本发明实施例的技术方案是这样实现的:

本发明实施例一种高速访问双倍速率同步动态随机存储器的控制方法,所述方法包括:

将双倍速率同步动态随机存储器ddr按照动态配置策略划分为可变的缓存块;

基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡。

上述方案中,所述方法还包括:

获取针对多个通道突发的读/写操作请求后,根据突发缓冲调度策略将对各个通道的读/写操作请求依次缓存下来,并记录缓存次序;

根据所述缓存次序,对所述ddr中的所述可变的缓存块进行本次读/写操作,在进行本次读/写操作对应的数据读写期间,支持针对所述各个通道其他读/写操作请求的调度。

上述方案中,所述将ddr按照动态配置策略划分为可变的缓存块,包括:

将ddr的地址空间划分为数个区域,配置每个区域的起始地址和结束地址为均可配置;

配置所述每个区域由大小可配置的缓存块组成,每个缓存块均对应一个缓存指针bp;

对于写入ddr的数据包,根据所述数据包的包长选择缓存大小与其接近的区域,将其存入对应bp的缓存块里面。

上述方案中,所述将ddr按照动态配置策略划分为可变的缓存块,还包括:

配置每个区域的bp为一个链表,将所述数据包写入所述ddr时,申请区 域链表首部的bp,数据包读出ddr时,将bp写入链表的尾部;

根据bp大小选择执行一次写入或读出ddr数据的数据包大小,对于超过第一阈值的数据包包长,配置为一次写入或读出符合第二阈值的较长数据,并且保证一次写入或读出的地址是连续的。

上述方案中,所述基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡,包括:

为每一个读/写通道分配一个权重,每检测到发生了一次读/写操作,则将所述权重减去读出或写入的数据包的包长;

所述权重可调整,并按照定时器的设置定时增加所述权重。

上述方案中,所述基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡,还包括:

如果检测到针对多个通道的读/写操作,且申请数据长度均不大于通道当前权重,则选择读出或写入的数据包的包长与上次读/写操作相近的通道,以保证ddr地址连续;

上述方案中,所述基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡,还包括:

为写方向通道配置第一总权重;

为读方向通道配置第二总权重;

连续调度写方向通道的数据到权重为0、或者根据所述第一总权重检测到所有写方向通道的数据写入完成之后,连续调度读方向通道的数据到权重为0、或者直至根据所述第二总权重检测到所有读通道的数据读出完成,结束调度。

上述方案中,根据突发缓冲调度策略将对各个通道的读/写操作请求依次缓存下来,并记录缓存次序,包括:

为读方向通道和写方向通道分别配置两个先进先出队列fifo,两个fifo中,第一fifo用于缓存读写命令,第二fifo用于缓存读写数据;

根据针对多个通道的读/写操作进行调度的调度结果依次将读写命令和通道标记缓存下来,将读写命令次序和通道标记次序作为所述缓存次序并存入所述第一fifo中,按照所述读写命令次序将读写命令传递给所述ddr。

上述方案中,所述根据所述缓存次序,对所述ddr中的所述可变的缓存块进行本次读/写操作,包括:

如果检测到是针对写方向通道的写入操作,则将各个通道的写数据缓存到第二fifo里面,通过缓存完成的通道去调度其他的写数据,之后按照所述通道标记次序将写数据写入ddr;

如果检测到是针对读方向通道的读出操作,则将数据读出后,按照所述通道标记将数据写入对应的第二fifo,对应通道可以将数据从第二fifo读出。

本发明实施例的一种高速访问双倍速率同步动态随机存储器的控制装置,所述装置包括:

缓存控制模块,用于将双倍速率同步动态随机存储器ddr按照动态配置策略划分为可变的缓存块;

调度模块,用于基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡。

上述方案中,所述装置还包括:通道控制模块,用于:

获取针对多个通道突发的读/写操作请求后,根据突发缓冲调度策略将对各个通道的读/写操作请求依次缓存下来,并记录缓存次序;

根据所述缓存次序,对所述ddr中的所述可变的缓存块进行本次读/写操作,在进行本次读/写操作对应的数据读写期间,支持针对所述各个通道其他读/写操作请求的调度。

上述方案中,所述缓存控制模块,进一步用于:

将ddr的地址空间划分为数个区域,配置每个区域的起始地址和结束地址为均可配置;

配置所述每个区域由大小可配置的缓存块组成,每个缓存块均对应一个缓存指针bp;

对于写入ddr的数据包,根据所述数据包的包长选择缓存大小与其接近的区域,将其存入对应bp的缓存块里面。

上述方案中,所述缓存控制模块,进一步用于:

配置每个区域的bp为一个链表,将所述数据包写入所述ddr时,申请区域链表首部的bp,数据包读出ddr时,将bp写入链表的尾部;

根据bp大小选择执行一次写入或读出ddr数据的数据包大小,对于超过第一阈值的数据包包长,配置为一次写入或读出符合第二阈值的较长数据,并且保证一次写入或读出的地址是连续的。

上述方案中,所述调度模块,进一步用于:

为每一个读/写通道分配一个权重,每检测到发生了一次读/写操作,则将所述权重减去读出或写入的数据包的包长;

所述权重可调整,并按照定时器的设置定时增加所述权重。

上述方案中,所述调度模块,进一步用于:

如果检测到针对多个通道的读/写操作,且申请数据长度均不大于通道当前权重,则选择读出或写入的数据包的包长与上次读/写操作相近的通道,以保证ddr地址连续;

上述方案中,所述调度模块,进一步用于:

为写方向通道配置第一总权重;

为读方向通道配置第二总权重;

连续调度写方向通道的数据到权重为0、或者根据所述第一总权重检测到所有写方向通道的数据写入完成之后,连续调度读方向通道的数据到权重为0、或者直至根据所述第二总权重检测到所有读通道的数据读出完成,结束调度。

上述方案中,所述通道控制模块,进一步用于:

为读方向通道和写方向通道分别配置两个先进先出队列fifo,两个fifo中,第一fifo用于缓存读写命令,第二fifo用于缓存读写数据;

根据针对多个通道的读/写操作进行调度的调度结果依次将读写命令和通道标记缓存下来,将读写命令次序和通道标记次序作为所述缓存次序并存入所 述第一fifo中,按照所述读写命令次序将读写命令传递给所述ddr。

上述方案中,所述通道控制模块,进一步用于:

如果检测到是针对写方向通道的写入操作,则将各个通道的写数据缓存到第二fifo里面,通过缓存完成的通道去调度其他的写数据,之后按照所述通道标记次序将写数据写入ddr;

如果检测到是针对读方向通道的读出操作,则将数据读出后,按照所述通道标记将数据写入对应的第二fifo,对应通道可以将数据从第二fifo读出。

本发明实施例的高速访问ddr的控制方法包括:将双倍速率同步动态随机存储器(ddr)按照动态配置策略划分为可变的缓存块;基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡。采用本发明实施例,提高了ddr的访问效率和读写速率。

附图说明

图1为本发明实施例一的实现流程示意图;

图2为本发明实施例二的装置组成结构示意图;

图3为应用本发明实施例的缓存控制模块对应的工作流程图;

图4为应用本发明实施例的ddr空间初始化示意图;

图5为应用本发明实施例的bp初始化示意图;

图6为应用本发明实施例的通道控制模块结构图;

图7为应用本发明实施例的调度模块工作流程图;

图8为应用本发明实施例的数据写入ddr流程图;

图9为应用本发明实施例的数据读出ddr流程图。

具体实施方式

下面结合附图对技术方案的实施作进一步的详细描述。

本发明实施例的一种高速访问ddr的控制方法,如图1所示,所述方法 包括:

步骤101、将ddr按照动态配置策略划分为可变的缓存块。

步骤102、基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡。

步骤103、获取针对多个通道突发的读/写操作请求后,根据突发缓冲调度策略将对各个通道的读/写操作请求依次缓存下来,并记录缓存次序。

步骤104、根据所述缓存次序,对所述ddr中的所述可变的缓存块进行本次读/写操作,在进行本次读/写操作对应的数据读写期间,支持针对所述各个通道其他读/写操作请求的调度。

在本发明实施例一实施方式中,所述将ddr按照动态配置策略划分为可变的缓存块,包括:将ddr的地址空间划分为数个区域,配置每个区域的起始地址和结束地址为均可配置;配置所述每个区域由大小可配置的缓存块组成,每个缓存块均对应一个缓存指针bp;对于写入ddr的数据包,根据所述数据包的包长选择缓存大小与其接近的区域,将其存入对应bp的缓存块里面。

在本发明实施例一实施方式中,所述将ddr按照动态配置策略划分为可变的缓存块,还包括:配置每个区域的bp为一个链表,将所述数据包写入所述ddr时,申请区域链表首部的bp,数据包读出ddr时,将bp写入链表的尾部;根据bp大小选择执行一次写入或读出ddr数据的数据包大小,对于超过第一阈值的数据包包长,配置为一次写入或读出符合第二阈值的较长数据,并且保证一次写入或读出的地址是连续的。

在本发明实施例一实施方式中,所述基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡,包括:为每一个读/写通道分配一个权重,每检测到发生了一次读/写操作,则将所述权重减去读出或写入的数据包的包长;所述权重可调整,并按照定时器的设置定时增加所述权重。

在本发明实施例一实施方式中,所述基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带 宽进行平衡,还包括:如果检测到针对多个通道的读/写操作,且申请数据长度均不大于通道当前权重,则选择读出或写入的数据包的包长与上次读/写操作相近的通道,以保证ddr地址连续。

在本发明实施例一实施方式中,所述基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡,还包括:为写方向通道配置第一总权重;为读方向通道配置第二总权重;连续调度写方向通道的数据到权重为0、或者根据所述第一总权重检测到所有写方向通道的数据写入完成之后,连续调度读方向通道的数据到权重为0、或者直至根据所述第二总权重检测到所有读通道的数据读出完成,结束调度。

在本发明实施例一实施方式中,根据突发缓冲调度策略将对各个通道的读/写操作请求依次缓存下来,并记录缓存次序,包括:为读方向通道和写方向通道分别配置两个先进先出队列fifo,两个fifo中,第一fifo用于缓存读写命令,第二fifo用于缓存读写数据;根据针对多个通道的读/写操作进行调度的调度结果依次将读写命令和通道标记缓存下来,将读写命令次序和通道标记次序作为所述缓存次序并存入所述第一fifo中,按照所述读写命令次序将读写命令传递给所述ddr。

在本发明实施例一实施方式中,所述根据所述缓存次序,对所述ddr中的所述可变的缓存块进行本次读/写操作,包括:如果检测到是针对写方向通道的写入操作,则将各个通道的写数据缓存到第二fifo里面,通过缓存完成的通道去调度其他的写数据,之后按照所述通道标记次序将写数据写入ddr;如果检测到是针对读方向通道的读出操作,则将数据读出后,按照所述通道标记将数据写入对应的第二fifo,对应通道可以将数据从第二fifo读出。

本发明实施例的一种高速访问双倍速率同步动态随机存储器的控制装置,所述装置包括:

缓存控制模块,用于将双倍速率同步动态随机存储器ddr按照动态配置策略划分为可变的缓存块;

调度模块,用于基于所述可变的缓存块进行读写操作时,根据加权循环调度策略对针对多个通道的读/写操作进行调度,并对读/写带宽进行平衡。

在本发明实施例一实施方式中,所述装置还包括:通道控制模块,用于:

获取针对多个通道突发的读/写操作请求后,根据突发缓冲调度策略将对各个通道的读/写操作请求依次缓存下来,并记录缓存次序;

根据所述缓存次序,对所述ddr中的所述可变的缓存块进行本次读/写操作,在进行本次读/写操作对应的数据读写期间,支持针对所述各个通道其他读/写操作请求的调度。

在本发明实施例一实施方式中,所述缓存控制模块,进一步用于:

将ddr的地址空间划分为数个区域,配置每个区域的起始地址和结束地址为均可配置;

配置所述每个区域由大小可配置的缓存块组成,每个缓存块均对应一个缓存指针bp;

对于写入ddr的数据包,根据所述数据包的包长选择缓存大小与其接近的区域,将其存入对应bp的缓存块里面。

在本发明实施例一实施方式中,所述缓存控制模块,进一步用于:

配置每个区域的bp为一个链表,将所述数据包写入所述ddr时,申请区域链表首部的bp,数据包读出ddr时,将bp写入链表的尾部;

根据bp大小选择执行一次写入或读出ddr数据的数据包大小,对于超过第一阈值的数据包包长,配置为一次写入或读出符合第二阈值的较长数据,并且保证一次写入或读出的地址是连续的。

在本发明实施例一实施方式中,所述调度模块,进一步用于:

为每一个读/写通道分配一个权重,每检测到发生了一次读/写操作,则将所述权重减去读出或写入的数据包的包长;

所述权重可调整,并按照定时器的设置定时增加所述权重。

在本发明实施例一实施方式中,所述调度模块,进一步用于:

如果检测到针对多个通道的读/写操作,且申请数据长度均不大于通道当前 权重,则选择读出或写入的数据包的包长与上次读/写操作相近的通道,以保证ddr地址连续;

在本发明实施例一实施方式中,所述调度模块,进一步用于:

为写方向通道配置第一总权重;

为读方向通道配置第二总权重;

连续调度写方向通道的数据到权重为0、或者根据所述第一总权重检测到所有写方向通道的数据写入完成之后,连续调度读方向通道的数据到权重为0、或者直至根据所述第二总权重检测到所有读通道的数据读出完成,结束调度。

在本发明实施例一实施方式中,所述通道控制模块,进一步用于:

为读方向通道和写方向通道分别配置两个先进先出队列fifo,两个fifo中,第一fifo用于缓存读写命令,第二fifo用于缓存读写数据;

根据针对多个通道的读/写操作进行调度的调度结果依次将读写命令和通道标记缓存下来,将读写命令次序和通道标记次序作为所述缓存次序并存入所述第一fifo中,按照所述读写命令次序将读写命令传递给所述ddr。

在本发明实施例一实施方式中,所述通道控制模块,进一步用于:

如果检测到是针对写方向通道的写入操作,则将各个通道的写数据缓存到第二fifo里面,通过缓存完成的通道去调度其他的写数据,之后按照所述通道标记次序将写数据写入ddr;

如果检测到是针对读方向通道的读出操作,则将数据读出后,按照所述通道标记将数据写入对应的第二fifo,对应通道可以将数据从第二fifo读出。

以一个现实应用场景为例对本发明实施例阐述如下:

在现有技术中,在当前网络通信设备中对ddr的访问,主要是通过将访问地址转化成行列映射,首先经过选页操作选到相应的页面(page),再通过地址线选到相应的地址段对数据进行读写。如果ddr的读写地址不连续,则访问时会进行频繁的选页操作,大大降低了ddr的访问效率;同时读写的不均衡也会降低ddr的访问效率。传统的解决方法主要是将ddr划分为固定的缓存块(比如64字节),以缓存块为单位对其进行读写,这种方法能够使ddr 的读写地址连续,从而提高ddr的访问效率,但是,如举例说明,采用这种固定缓存块的方案仍然存在如下弊端:

比如固定缓存块的划分,如果缓存块过大,可能会浪费ddr的内存空间,如果缓存块过小,则起不到提高速率的作用。

另外,采用传统的控制方法很难实现读写均衡,同时有较多的读写切换,降低了访问效率,在多通道同时访问ddr时,也很难实现均衡调度。

而且,采用传统的访问方式是在一个读写操作完成时,才进行下一个读写操作,由于ddr在读写方向均存在时延,使得传统的访问方式会将部分时间浪费在时延等待上,降低了ddr的访问效率。

对于上述问题,本发明实施例高速访问ddr的控制方法,通过ddr空间动态缓存块划分及管理、多通道读写均衡控制、连续读写操作的机制可以提高ddr访问效率和读/写速率,包括以下内容:

一,动态缓存块划分及管理机制:将ddr地址空间划分为数个区域,每个区域由多个缓存(buffer)组成,每个区域的缓存大小均可配置,通过不同的缓存指针(bp,bufferpoint)对地址空间进行管理。

这里,实现动态缓存块划分及管理机制,包括:1.1)将ddr的地址空间划分为数个区域,每个区域的起始地址和结束地址均可配置;1.2)每个区域由大小可配置的缓存组成,每个缓存均对应一个bp;1.3)对于一个数据包,根据包长选择缓存大小与其接近的区域,将其存入对应bp的缓存里面;1.4)每个区域的bp为一个链表,数据包写入ddr时,申请该区域链表首部的bp,数据包读出ddr时,将bp写入链表的尾部;1.5)根据bp大小选择一次写入或读出ddr数据的大小,对于较大的包长,尽量一次写入或读出比较长的数据,并且保证一次写入或读出的地址是连续,减少ddr的选页操作。

二,多通道读写均衡控制机制:在ddr控制器中,通过加权循环调度算法(wrr,weightedroundrobin)对多个通道进行调度,同时对读写带宽进行平衡,减少读写切换。

这里,实现多通道读写均衡控制机制,包括:2.1)为每一个读写通道分配 一个权重,每发生一次读/写操作,将权重减去包长,权重定时增加;2.2)在2.1基础上,如果多个通道有访问ddr请求,且权重均满足要求,尽量保证选择包长与上次读写相近的通道,保证ddr地址连续,减少选页操作;2.3)读方向和写方向各设一个总权重,在2.1的基础上,连续调度写方向通道数据到权重为0或者所有写通道数据完成,然后连续调度读方向数据到权重为0或者所有读通道数据完成,减少读写切换并实现读写均衡。

三,连续读写操作的机制:支持突发缓冲(burstoutstanding)调度机制,对于多个通道突发的读写请求,可以将各个通道的请求依次缓存下来,按照缓存次序对ddr进行读写,在数据读写期间各个通道可以进行其他调度,不必等待本次读写返回结果。

这里,实现连续读写操作的机制,包括:3.1)读写方向各有2个先进先出队列(fifo,firstinputfirstoutput),其中一个fifo缓存读写命令(数据长度),一个fifo缓存读写数据;3.2)ddr控制器按照调度结果依次将读写命令和通道标记缓存下来,并按照次序将读写命令传递给ddr;3.3)如果是写访问,ddr控制器将各个通道的写数据也缓存到数据fifo里面,缓存完成之后该通道可以去调度别的数据,之后ddr控制器按照通道标记次序将数据写入ddr;3.4)如果是读访问,ddr控制器将数据读出后,按照通道标记将数据写入对应的fifo,对应通道可以将数据从fifo读出。

具体的,如图2所示为应用本发明实施例的一个装置结构组成示意图,该装置应用于独立芯片的ddr控制电路(如图2中的ddr控制器),将上述实施例一及其实施方式中的各个实现过程在该独立芯片中具体实现,由ddr控制器实现对ddr的读/写操作(读入操作或写出操作)。ddr31用于存储数据。其中,所述ddr控制器包括缓存控制模块21、调度模块22和多个通道控制模块23(如图2中的通道控制模块1-4,每个通道控制模块控制一个读/写方向的通道),实际应用中不限于这些通道控制模块。

所述缓存控制模块用于实现动态缓存块划分及管理机制,具体的,将ddr地址空间划分为数个区域,每个区域由多个缓存(buffer)组成,每个区域的缓 存大小均可配置,通过不同的缓存指针(bp,bufferpoint)对地址空间进行管理。其中,实现动态缓存块划分及管理机制,包括:1.1)将ddr的地址空间划分为数个区域,每个区域的起始地址和结束地址均可配置;1.2)每个区域由大小可配置的缓存组成,每个缓存均对应一个bp;1.3)对于一个数据包,根据包长选择缓存大小与其接近的区域,将其存入对应bp的缓存里面;1.4)每个区域的bp为一个链表,数据包写入ddr时,申请该区域链表首部的bp,数据包读出ddr时,将bp写入链表的尾部;1.5)根据bp大小选择一次写入或读出ddr数据的大小,对于较大的包长,尽量一次写入或读出比较长的数据,并且保证一次写入或读出的地址是连续,减少ddr的选页操作。

所述调度模块用于实现多通道读写均衡控制机制,具体的,在ddr控制器中,通过加权循环调度算法(wrr,weightedroundrobin)对多个通道进行调度,同时对读写带宽进行平衡,减少读写切换。其中,实现多通道读写均衡控制机制,包括:2.1)为每一个读写通道分配一个权重,每发生一次读/写操作,将权重减去包长,权重定时增加;2.2)在2.1基础上,如果多个通道有访问ddr请求,且权重均满足要求,尽量保证选择包长与上次读写相近的通道,保证ddr地址连续,减少选页操作;2.3)读方向和写方向各设一个总权重,在2.1的基础上,连续调度写方向通道数据到权重为0或者所有写通道数据完成,然后连续调度读方向数据到权重为0或者所有读通道数据完成,减少读写切换并实现读写均衡。

所述通道控制模块用于实现连续读写操作的机制,具体的,支持突发缓冲(burstoutstanding)调度机制,对于多个通道突发的读写请求,可以将各个通道的请求依次缓存下来,按照缓存次序对ddr进行读写,在数据读写期间各个通道可以进行其他调度,不必等待本次读写返回结果。其中,实现连续读写操作的机制,包括:3.1)读写方向各有2个先进先出队列(fifo,firstinputfirstoutput),其中一个fifo缓存读写命令(数据长度),一个fifo缓存读写数据;3.2)ddr控制器按照调度结果依次将读写命令和通道标记缓存下来,并按照次序将读写命令传递给ddr;3.3)如果是写访问,ddr控制器将各个 通道的写数据也缓存到数据fifo里面,缓存完成之后该通道可以去调度别的数据,之后ddr控制器按照通道标记次序将数据写入ddr;3.4)如果是读访问,ddr控制器将数据读出后,按照通道标记将数据写入对应的fifo,对应通道可以将数据从fifo读出。

如图3所示为缓存控制模块的工作流程,具体步骤如下:

步骤201、首先进行ddr地址空间的初始化。该初始化将ddr空间划分为n个区域,其中第一个区域的缓存颗粒配置成m字节,第二个区域配成2m字节…最后一个区域的缓存颗粒配置成n*m字节,如图4所示,完成后进入步骤202;

步骤202、每个区域初始化一个bp池,如图5所示,该bp池为1个1-k的指针链表,存储在1块深度为k的ram里,每个地址都有一个指示标识,为1表示该bp已经被使用,为0表示还未被使用,完成后进入步骤203;

步骤203、接受调度模块发过来的请求,如果是写请求,进入步骤204,否则进入步骤205;

步骤204、从对应区域的bp池里取出当前的空闲bp,发送给调度模块,并将当前bp指示置为1,将空闲bp指针指向下一个空闲bp,并将数据写入ddr,完成后进入步骤203;

步骤205、从对应的bp地址读出ddr中的数据,返回给调度模块,并将当前bp指示置为0,完成后进入步骤203。

图6是通道控制模块的结构图,某个通道访问ddr时,该通道对应的控制器将读/写命令和读/写数据缓存下来,读/写命令存入第一fifo(具体为图6中的命令fifo),将读/写数据存入第二fifo(具体为图6中的数据fifo)。调度模块负责调度各个通道请求,所有通道通过调度模块进行wrr调度,将调度结构传递给缓存控制模块。

调度模块的工作流程如图7所示,具体步骤如下:

步骤301、调度模块给每个通道初始化一个权重,该权重值可以配置,并 给读写各配置一个总权重,每隔固定时间刷新各通道权重;

步骤302、进入写调度周期,查询各个写通道的访问请求,如果没有任何请求则进入步骤306,否则进入步骤303;

步骤303、将符合要求的所有通道申请包长与上次写入ddr的bp大小进行比较,如果有一个通道的包长符合上次的bp大小,则选择这个通道,如果有多个满足,则轮询其中一个,保证本次写入的bp与上次写入的相邻,地址空间连续;如果都不满足,则轮询所有输入通道中的一个,进入步骤304;

步骤304、根据轮询结果,向缓存控制模块申请对应区域的bp,将写请求发给缓存控制模块,并从对应通道控制模块取出数据发送给缓存控制模块,进入步骤305;

步骤305、将对应通道的权重和写通道总权重减去调度包长,如果写通道总权重已经为0,则进入步骤306,否则进入步骤302;

步骤306、进入读调度周期,查询各个读通道的访问请求,如果没有任何请求则进入步骤302,否则进入步骤307;

步骤307、将符合要求的所有通道申请bp与上次读取的bp进行比较,优先选择本次bp与上次bp相邻的通道,如果没有,则轮询其中给一个通道,进入步骤308;

步骤308、根据轮询结果,将读请求发给缓存控制装置,并接受ddr的读出内容发送给通道控制装置,进入步骤309;

步骤309、将对应通道的权重和读通道总权重减去调度包长,如果读通道总权重已经为0则进入步骤302,否则进入步骤306。

图8为本发明写数据访问ddr的工作流程,包括:

步骤401、写通道将写请求发送给该通道控制模块,通道控制模块检查内部命令和数据fifo是否非满,是,则进入步骤402;

步骤402、通道控制模块将命令和数据分别写入命令fifo和数据fifo,此时对应写通道可以进行后续数据调度,无须等待写结果,之后返回步骤401;

步骤403、通道控制模块检查命令fifo是否为空,非空则将写请求发送给 调度模块,进入步骤404;

步骤404、调度模块根据之前描述调度算法,轮询到该通道数据,向缓存控制模块申请bp,进入步骤405;

步骤405、缓存控制模块将数据分配bp给调度模块,将空闲bp指向下一个值,并将数据写入ddr,返回给调度模块写成功指示,进入步骤406;

步骤406、缓存控制模块将bp返回给对应通道控制模块,通道控制模块通知写通道写完成,并告知写通道对应bp,结束本次操作,返回步骤403。

图9为本发明读数据访问ddr的工作流程,包括:

步骤501、读通道将读请求和读bp发送给该通道控制模块,通道控制模块检查内部命令和数据fifo是否非满,是,则进入步骤502;

步骤502、通道控制模块将命令和bp写入命令fifo,此时对应读通道可以进行后续数据调度,无须等待读结果,之后返回步骤501;

步骤503、通道控制模块检查命令fifo是否为空,非空,则将读请求和bp发送给调度模块,进入步骤504;

步骤504、调度模块根据之前描述调度算法,轮询到该通道数据,向缓存控制发起读请求,进入步骤505;

步骤505、缓存控制模块将该bp置为空闲bp,并从ddr中读出数据,返回给调度模块读数据,进入步骤506;

步骤506、缓存控制模块将数据返回给对应通道控制模块,通道控制模块将数据写入数据fifo,并通知读通道读完成,读通道可以从fifo中读出数据,结束本次操作,返回步骤c。

采用本发明实施例,通过将ddr地址划分为多个区域,每个区域颗粒大小可以配置;同时根据wrr算法平衡各个读写通道的数据包;支持读写方向的突发连续访问,与传统的ddr访问方法相比,可以实现读写地址连续均衡,减少ddr的选页和切换操作,同时支持突发缓冲调度,避免了传统方法在读写时的数据等待,提高了ddr访问效率。

本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立 的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。

相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的一种高速访问ddr的控制方法。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1