指令延时控制方法、控制器以及存储器与流程

文档序号:12719477阅读:483来源:国知局
指令延时控制方法、控制器以及存储器与流程

本发明涉及电子技术领域,尤其涉及指令延时控制方法、控制器以及存储器。



背景技术:

根据DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器)协议(JESD79-3E,JESD79-2C,JESD209B)规定,数据的传输是通过对DDR SDRAM发出读写命令以及收发相应的数据来完成的。用户对DDR SDRAM的操作,通常都是通过DDR controller(DDR控制器)进行。

DDR controller与PHY(物理层)之间通过工业标准协议DFI接口(DDR PHY Interface,双倍速率同步动态随机存储器物理层接口)(DFI3.0,DFI3.1,DFI4.0)进行命令的传递和数据的交换。PHY的工作频率一般是DDR controller的2倍或4倍,也即,DDR controller的一个时钟周期对应于PHY的2个或者4个时钟周期。由于DDR SDRAM自身的构造限制,在正常读写模式下,大部分命令之间都存在最小延时要求,而且读写命令与相应的数据之间也有延时要求。例如,DDR controller接收到用户连续下发的命令A和命令B后,在将命令A通过DFI传输到PHY之后,并不立即将命令B传输到PHY,而是先对命令B进行时延处理,使命令B与其前一命令A之间的时延达到最小时延之后再将命令B通过DFI接口传输给PHY。又例如,DDR controller接收到用户将数据“a1,a2,a3”写入存储器的请求之后,并不是将写入请求与待写入数据一起传送给PHY,而是先发送写入请求,然后在经过一定的时延之后再将待写入数据传输到PHY。命令与命令间、命令与数据之间需要一定的时延主要是数据存储器侧通过硬件电路处理用户命令需要花费一定的时间,因此时延是必须的。

精确控制命令与命令或命令与数据之间的时延,使时延保持为满足要求的最小时延对提高DDR SDRAM的带宽利用率极为关键。而为了精确控制这些时延,一般是通过多个计时器来进行延时处理,计时器的启动与结束需要由大量的组合逻辑电路控制,这些组合逻辑间甚至还存在反馈。例如有两个连续的命令A、B,在DDR controller将命令A传输到PHY时,DDR controller需要启动与命令A、B间时延对应的各计时器计时,使各计时器同时开始计时。这个控制过程需要大量的组合逻辑电路在精准的时刻工作,达到各计时器同步开启计时的效果,但由于组合逻辑电路本身因素,很难在较短的时间内使各计时器达到同步启动的效果,因此,DDR controller需要给予充足的时间,保证各计时器均准备完成后再开始计时。这严重影响到DDR controller的时序,导致DDR controller工作最高频率受到极大限制。而根据DFI的协议规定,DDR controller的频率与PHY频率有固定的倍数关系的,降低controller的频率将导致DDR SDRAM的带宽利用率成倍下降。



技术实现要素:

本发明提供的指令延时控制方法、控制器以及存储器,主要解决的技术问题是:提供一种延时控制方案,用以解决现有技术中因控制命令与命令间时延对应的组合逻辑电路复杂,在进行延时处理时需要花费额外的等待时间,进而降低DDR controller工作频率的问题。

为解决上述技术问题,本发明提供一种指令延时控制方法,包括:

确定接收到的当前请求指令是否满足预设条件,所述预设条件包括所述当前请求指令与前一请求指令之间的最小时延大于0;

所述当前请求指令满足预设条件时,在所述当前请求指令之前插入至少一个周期的空白指令;

对所述当前请求指令进行延时处理,使所述当前请求指令与所述前一请求指令之间的时延满足对应的最小时延的要求;

将所述当前请求指令分配到数据命令接口的通道上以将其传输至物理层传输通道。

进一步,若所述数据命令接口通道包括4个通道,将所述当前请求指令分配到数据命令接口的通道之前包括:

从所述4个通道中指定一个作为第一通道以供激活指令、自刷新指令以及全部预充电指令共用,并从所述4个通道中指定两个第二通道以供读指令/带预充电的读指令、写指令/带预充电的写指令以及预充电指令共用,所述两个第二通道之间间隔有一个通道;

将所述当前请求指令分配到数据命令接口的通道包括:将所述当前请求指令分配到预先为其指定的数据命令接口通道上。

进一步,若所述数据命令接口通道包括2个通道,将所述当前请求指令分配到数据命令接口的通道之前包括:

从所述2个通道中指定一个作为第一通道以供激活指令、自刷新指令以及全部预充电指令共用,并将所述两个通道均作为第二通道以供读指令/带预充电的读指令、写指令/带预充电的写指令以及预充电指令共用;

将所述当前请求指令分配到数据命令接口的通道包括:将所述当前请求指令分配到预先为其指定的数据命令接口通道上。

进一步,插入的所述空白指令所占用的时长小于等于所述当前请求指令与所述前一请求指令之间的最小时延。

进一步,所述预设条件还包括:接收到所述当前请求指令的概率大于等于预设阈值。

进一步,当接收到所述当前请求指令的概率小于预设阈值时,按照第一预设时延的要求控制所述当前请求指令与所述前一请求指令之间的时延,所述第一预设时延大于等于所述当前请求指令与所述前一请求指令之间的最小时延。

进一步,对所述当前请求指令进行延时处理之前包括:

自所述前一请求指令分配到预先为其指定的数据命令接口通道起,在处理插入空白指令期间完成对所述当前请求指令进行延时计时的各计时器的计时准备;

对所述当前请求指令进行延时处理包括:通过所述各计时器的计时控制对所述当前请求指令进行延时。

本发明还提供一种控制器,包括:

条件判断模块,用于确定接收到的当前请求指令是否满足预设条件,所述预设条件包括所述当前请求指令与前一请求指令之间的最小时延大于0;

指令插入模块,用于所述当前请求指令满足预设条件时,在所述当前请求指令之前插入至少一个周期的空白指令;

延时处理模块,用于对所述当前请求指令进行延时处理,使所述当前请求指令与所述前一请求指令之间的时延满足对应的最小时延的要求;

通道分配模块,用于将所述当前请求指令分配到数据命令接口的通道上以将其传输至物理层传输通道。

进一步,条件判断模块用于判断所述当前请求指令与前一请求指令之间的最小时延是否大于0,并确定接收到所述当前请求指令的概率是否大于等于预设阈值;在所述当前请求指令与前一请求指令之间的最小时延大于0,且接收到所述当前请求指令的概率大于等于预设阈值时,判断所述当前请求指令满足预设条件。

本发明还提供一种存储器器,包括用户接口、数据命令接口、物理层传输通道、数据存储器以及如上所述的控制器;所述数据存储器与所述控制器通过所述物理层传输通道连接。

本发明的有益效果是:

本发明提供的指令延时控制方法、控制器以及存储器,通过对接收到的当前请求指令进行判断,确定当前请求指令是否满足包括与前一请求指令之间存在时延的预设要求,当确定当前请求指令满足预设条件时,在当前请求指令之前插入至少一个周期的空白指令。插入空白指令之后再对当前请求指令进行延时处理,使当前请求指令与插入空白指令之前的“前一请求指令”之间的时延满足对应的最小时延要求,然后将当前请求指令分配到数据命令接口的通道上以将其传输至物理层传输通道。在本发明当中,利用了满足预设条件的当前请求指令与其前一请求指令之间本来就存在时延的特点,在对当前请求指令进行延时处理之前,先插入空白指令,使得当前请求指令与前一请求指令之间不再连续。而且由于空白指令与任何指令之间均不存在延时要求,因此,在对空白指令进行传输的期间,当前请求指令与前一请求指令间时延对应计时器的组合逻辑电路可以做好计时准备,当空白指令传输完成之后,控制器不需要等待,就可以直接开始工作。因此控制器的工作频率得到了提升,进而提升了带宽利用率。另一方面,由于部分命令间插入了不需要组合逻辑电路工作的空白指令,因此组合逻辑电路不需要随时保持高速切换,这提升了控制器的鲁棒性。

附图说明

图1为本发明实施例一提供的指令延时控制方法的一种流程图;

图2为本发明各实施例种存储器的一种硬件结构示意图;

图3为插入空白指令之前指令帧格式的一种结构示意图;

图4为插入空白指令之后指令帧格式的一种结构示意图;

图5为本发明实施例二提供的控制器的一种结构示意图;

图6为本发明实施例二中部署控制器的终端的一种硬件结构示意图;

图7为本发明实施例三提供的控制器的一种架构图。

具体实施方式

下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。

实施例一:

为了解决现有技术中因控制命令与命令间时延对应的组合逻辑电路复杂,在进行延时处理时需要花费额外的等待时间,进而使得DDR controller工作频率降低的问题,本实施例提供一种指令延时控制方法,请参见图1:

S102、确定接收到的当前请求指令是否满足预设条件。

图2示出的是一种存储器的结构示意图,存储器2包括控制器20、用户接口21、数据命令接口22、数据存储器23,其中数据存储器23与数据命令接口22之间通过物理层传输通道24连接。用户可以通过用户接口21下发请求指令或与请求指令对应的数据等。控制器20在通过用户接口21接收到请求指令或数据之后,可以对请求指令或数据进行处理,这其中自然也包括指令间或指令与数据间的延时处理。处理完成之后,通过数据命令接口22传输到物理层传输通道24上,由物理层传输通道24将指令传输到数据存储器23中,进行数据读取;或者控制器20通过数据命令接口22依次将用户下发的请求指令与待写入数据发送到物理层传输通道24上,进而完成待写入数据在数据存储器23上的写入。

在本实施例中,存储器可以是DDR存储器DDR存储器又可以是DDR SDRAM、DDR2SDRAM、DDR3SDRAM以及DDR4SDRAM、LPDDR(Low Power Double Data Rate SDRAM,低功率双倍速率同步动态随机存储器)、LPDDR2、LPDDR3等类型。

本领域技术人员应当理解的是,DDR存储器中,DDR controller不参与PHY的初始化(Initialization)、写入校准(write leveling)以及读取校准(read leveling)等过程,只有PHY工作正常以后,DDR controller与PHY之间才存在正常的数据与命令传递。因此,本实施例中提供的指令延时控制方法仅仅针对有控制器参与的过程,对于上述初始化命令、写入校准以及读取校准等,则可以不进行控制。

与数据存储器23上的数据读写相关的请求指令包括rd(读指令)、wr(写指令)、act(激活指令)等。由于DDR的读写寻址的具有独占性,因此在读写操作后,若对同一bank的另一行进行寻址,就要将原来的有效工作行关闭,这一操作称为pre(Precharge,预充电)。除了单独的PRE请求指令以外,DDR中也提供也wra(带预充电的写指令)和rda(带预充电的读指令)。

控制器发送到PHY的命令,除了数据读写相关的命令以外,还包括:控制使DDR SDRAM进入低功耗的掉电(Power Down)模式或自刷新(Self-Refresh)模式的命令,掉电模式或自刷新模式能够在很大程度上降低DDR SDRAM功耗;对DDR3SDRAM内部的寄存器中的读写时序参数进行修改的命令,以满足不同频率读写的需求;刷新(Refresh)命令,用于定期对DDR SDRAM进行数据刷新,防止DDR SDRAM保存的数据丢失。

若当前请求指令满足预设条件,则控制器将会在当前请求指令与前一请求指令之间插入至少一个周期的空白指令。而本实施例中,控制器对指令间的时延控制本来就是利用了指令之间的固有时延,因此,在本实施例中预设条件包括当前请求指令与前一请求指令之间的最小时延大于0,也就是说当前请求指令与前一请求指令之间本来存在固有时延。

在本实施例的另外一些示例当中,预设条件还包括接收到当前请求指令的概率大于等于预设阈值。这一条件是为了筛除不常用的请求指令,例如MRS(状态传送指令)、SRE(自刷新进入指令)/SRX(自刷新退出指令)以及PDE(掉电进入指令)/PDX(掉电退出指令)等,这些请求指令并不常用,所以并不需要对这些请求指令的时延进行精确控制,为了保证仅将控制器有限的处理资源运用于常见请求指令时延的控制,以达到更好的时延控制效果,因此,在本实施例中通过接收到当前请求指令的概率大于等于预设阈值这一预设条件排除一些不常见的指令。

预设阈值可以由用户设定,预设阈值的大小将会决定出哪些请求指令会被进行精确时延控制,而哪些请求指令则不会。用户设定预设阈值的时候可以基于一段较长时间的统计结果进行,例如统计用户在一个月的时间内输入各请求指令的频率,计算出接收各请求指令的概率,然后根据用户的指令时延控制要求确定将预设阈值设置为多大。

对于经过预设条件筛选后,不满足预设条件的请求指令,可以直接按照现有方式进行时延控制,也可以进一步进行分类控制,例如:当前请求指令与前一请求指令之间的最小时延等于0,也即当前指令与前一请求指令之间并不存在固有时延,这时候,可以将直接对当前请求指令按照现有时延控制方式进行控制。若接收到当前请求指令的概率低于预设阈值,控制器可以直接按照现有方式进行控制。也可以按照第一预设时延的要求控制当前请求指令与前一请求指令之间的时延,第一预设时延大于等于当前请求指令与前一请求指令之间的最小时延。也就是说,将当前请求指令与前一请求指令间的时延设置得大一些,因为对不常用请求指令的时延控制精确与否并不会大程度的影响控制器的整体带宽利用率。

S104、当前请求指令满足预设条件时,在当前请求指令之前插入一个周期的空白指令。

当控制器确定当前请求指令满足预设条件时,将会在当前请求指令之前插入空白指令(DES指令)。插入空白指令的周期数通常为一个,但可以理解的是,如果当前请求指令与前一请求指令之间的最小时延大于两个指令周期,则插入空白指令的周期数也可以随之增加,只要保证插入的空白指令所占用的时间小于等于当前请求指令与前一请求指令之间的最小时延即可。

前面已经介绍过了,请求指令间存在时延要求主要是由于DDR中硬件电路在处理前一请求指令的时候需要花费一定的时间,为了避免控制器将当前请求指令发送给PHY之后,前一请求指令的处理还未完成,会限定请求指令之间存在时延。本实施例中就是利用了请求指令间的最小时延,先利用空白指令对当前请求指令进行一个“时延预处理”,在“时延预处理”过程中,通过空白指令的插入,使得当前请求指令与前一请求指令之间已经存在一个时延,只是这个时延暂且不满足最小时延的要求,需要后续过程进行进一步处理。更重要的是,通过空白指令的插入,使得当前请求指令与前一请求指令之间不再紧邻、不再连续,这解除了当前请求指令与前一请求指令间的耦合,使得当前请求指令与前一请求指令之间由组合逻辑变成了时序逻辑。图3和图4分别示出了插入空白指令之前和插入空白指令之后的指令帧格式。

S106、对当前请求指令进行延时处理。

自前一请求指令分配到预先为其指定的数据命令接口通道起,在处理插入空白指令期间控制器需要完成对当前请求指令进行延时计时的各计时器的计时准备,将各计时器的电平从无效状态拉到有效状态。当空白指令到物理层传输通道的传输完成之后,控制器可以控制各计时器开始计时以实现延时处理。计时长度应当大于等于当前请求指令与前一请求指令间的最小时延与插入的空白指令所占用时间之差。例如,当前请求指令与前一请求指令之间最小时延为4个周期,而在此之前已经插入了一个周期的空白指令,这时候的计时长度只要大于等于3个周期即可。为了实现时延的精确控制,计时长度最好等于使当前请求指令与前一请求指令之间的时延满足对应的最小时延的要求。

S108、将当前请求指令分配到数据命令接口的通道上以将其传输至物理层传输通道。

当计时完成之后,控制器可以将当前请求指令分配到数据命令接口的通道上,以便经由物理层传输通道传给数据存储器,传输当前请求指令所使用的通道可以是由用户预先指定确定的。

在本实施例中,由于PHY的工作频率是DDR controller的2倍或4倍,因此,控制器的一个时钟周期对应于PHY的2个或者4个时钟周期,这就相当于PHY具有2条或4条通道,而数据命令接口的工作频率与PHY的相同,也就是说,数据命令接口也有2条或4条与PHY相连的通道。在本实施例中,数据命令接口包括但不限于DFI接口,其可以实现数据信息、命令信息、状态信息、Debug(调试)信息、Training(训练)信息等的传输。

当数据命令接口具有两个通道时,控制器可以根据用户的指示从2个通道中指定一个作为第一通道以供激活act、ref,prea指令共用,并将两个通道均作为第二通道以供rd/rda,wr/wra以及pre指令共用。在这种情况下,rd/rda,wr/wra以及pre指令无论在哪个通道上都可以进行传输。也就是说,当这些请求指令传输到数据命令接口时,数据命令接口的两个通道中,当前哪一个处于有效工作状态就使用哪一个进行传输,完全不需要等待。而prea,ref和act指令的时延误差严格控制在1个PHY时钟误差,因为,如果prea,ref和act指令传输到数据命令接口时,数据命令接口的两个通道中处于有效工作状态的通道不是预先指定的通道,则控制器将等待PHY的另一个通道有效工作的时候再传输这些请求指令,这需要等待一个PHY时钟周期;否则,若prea,ref和act指令传输到数据命令接口时,数据命令接口的两个通道中处于有效工作状态的通道恰好是预先指定的通道,则控制器不需要等待就可以直接将请求指令传输出去。

当数据命令接口具有4个通道时,控制器可以根据用户的指示从4个通道中指定一个作为第一通道以供激活act、ref,prea指令共用,并从4个通道中指定两个第二通道以供rd/rda,wr/wra以及pre指令共用,且指定出的两个第二通道之间间隔有一个通道。与两个通道的情况类似,在这种情况下,控制器可以将rd/rda,wr/wra,pre请求指令的时延误差严格控制在1个PHY时钟周期,而对于prea,ref和act的请求指令的时延误差约束在3个PHY时钟周期。

本发明实施例提供的指令延时控制方法,控制器通过在本来就具有时延的指令间插入空白指令,使得两个相邻的请求指令不隔离开,不再相邻,从而使得连续的请求指令得以“解耦”,从组合逻辑控制变成时序逻辑控制。在对空白指令进行传输的期间,当前请求指令与前一请求指令间时延对应计时器的组合逻辑电路可以做好计时准备,当空白指令传输完成之后,控制器不需要等待,就可以直接开始工作。最终使得控制器的工作频率得到了提升,进而提升了带宽利用率。另一方面,由于部分命令间插入了不需要组合逻辑电路工作的空白指令,因此组合逻辑电路不需要随时保持高速切换,这提升了控制器的鲁棒性。

实施例二:

本实施例先提供一种控制器,下面请参见图5所示出的控制器的一种结构示意图:

控制器20包括条件判断模块202、指令插入模块204、延时处理模块206以及通道分配模块208,条件判断模块202用于确定接收到的当前请求指令是否满足预设条件,指令插入模块204用于在条件判断模块202的判断结果为是时,在当前请求指令之前插入至少一个周期的空白指令,延时处理模块206用于对当前请求指令进行延时处理,使当前请求指令与前一请求指令之间的时延满足对应的最小时延的要求;而通道分配模块208则在对当前请求指令的延时处理完成之后,将当前请求指令分配到数据命令接口的通道上以将其传输至物理层传输通道。

本实施例中还提供一种存储器,图2示出的是该存储器的结构示意图,存储器2包括控制器20、用户接口21、数据命令接口22、数据存储器23,其中数据存储器23与数据命令接口22之间通过物理层传输通道24连接。用户可以通过用户接口21下发请求指令或与请求指令对应的数据等。控制器20在通过用户接口21接收到请求指令或数据之后,可以对请求指令或数据进行处理,这其中自然也包括指令间或指令与数据间的延时处理。处理完成之后,通过数据命令接口22传输到物理层传输通道24上,由物理层传输通道24将指令传输到数据存储器23中,进行数据读取;或者控制器20通过数据命令接口22依次将用户下发的请求指令与待写入数据发送到物理层传输通道24上,进而完成待写入数据在数据存储器23上的写入。

在本实施例中,以DDR作为上述存储器,DDR存储器又可以是DDR SDRAM、DDR2SDRAM、DDR3SDRAM以及DDR4SDRAM、LPDDR、LPDDR2、LPDDR3等类型。

本领域技术人员应当理解的是,DDR存储器中,DDR controller不参与PHY的初始化、写入校准以及读取校准等过程,只有PHY工作正常以后,DDR controller与PHY之间才存在正常的数据与命令传递。因此,本实施例中控制器可以不对上述初始化命令、写入校准以及读取校准指令等进行控制。

与数据存储器23上的数据读写相关的请求指令包括rd、wr、act等。由于DDR的读写寻址的具有独占性,因此在读写操作后,若对同一bank的另一行进行寻址,就要将原来的有效工作行关闭,这一操作称为pre。除了单独的PRE请求指令以外,DDR中也提供也带预充电的写指令和带预充电的读指令。

通道分配模块208发送到PHY的命令,除了数据读写相关的命令以外,还包括:控制使DDR SDRAM进入低功耗的掉电模式或自刷新模式的命令,掉电模式或自刷新模式能够在很大程度上降低DDR SDRAM功耗;对DDR3SDRAM内部的寄存器中的读写时序参数进行修改的命令,以满足不同频率读写的需求;刷新命令,用于定期对DDR SDRAM进行数据刷新,防止DDR SDRAM保存的数据丢失。

若当前请求指令满足预设条件,则指令插入模块204将会在当前请求指令与前一请求指令之间插入至少一个周期的空白指令。而本实施例中,控制器20对指令间的时延控制本来就是利用了指令之间的固有时延,因此,在本实施例中,条件判断模块202用于判断的预设条件包括当前请求指令与前一请求指令之间的最小时延大于0,也就是说当前请求指令与前一请求指令之间本来存在固有时延。

在本实施例的另外一些示例当中,预设条件还包括接收到当前请求指令的概率大于等于预设阈值。这一条件是为了筛除不常用的请求指令,例如MRS、SRE/SRX以及PDE/PDX等,这些请求指令并不常用,所以并不需要对这些请求指令的时延进行精确控制,为了保证仅将控制器20有限的处理资源运用于常见请求指令时延的控制,以达到更好的时延控制效果,因此,在本实施例中条件判断模块202通过接收到当前请求指令的概率大于等于预设阈值这一预设条件排除一些不常见的指令。

预设阈值可以由用户设定,预设阈值的大小将会决定出哪些请求指令会被进行精确时延控制,而哪些请求指令不会。用户设定预设阈值的时候可以基于一段较长时间的统计结果进行,例如统计用户在一个月的时间内输入各请求指令的频率,计算出接收各请求指令的概率,然后根据用户的指令时延控制要求确定将预设阈值设置为多大。

对于经过条件判断模块202基于预设条件的筛选后,不满足预设条件的请求指令,可以直接按照现有方式进行时延控制,也可以进一步进行分类控制,例如:当前请求指令与前一请求指令之间的最小时延等于0,也即当前指令与前一请求指令之间并不存在固有时延,这时候,可以将直接对当前请求指令按照现有时延控制方式进行控制。若接收到当前请求指令的概率低于预设阈值,控制器20可以直接按照现有方式进行控制。也可以按照第一预设时延的要求控制当前请求指令与前一请求指令之间的时延,第一预设时延大于等于当前请求指令与前一请求指令之间的最小时延。也就是说,将当前请求指令与前一请求指令间的时延设置得大一些,因为对不常用请求指令的时延控制精确与否并不会大程度的影响控制器20的整体工作频率。

当条件判断模块202确定当前请求指令满足预设条件时,指令插入模块204将会在当前请求指令之前插入空白指令。插入空白指令的周期数通常为一个,但可以理解的是,如果当前请求指令与前一请求指令之间的最小时延大于两个指令周期,则指令插入模块204插入空白指令的周期数也可以随之增加,只要保证插入的空白指令所占用的时间小于等于当前请求指令与前一请求指令之间的最小时延即可。

前面已经介绍过了,请求指令间存在时延要求主要是由于DDR中硬件电路在处理前一请求指令的时候需要花费一定的时间,为了避免通道分配模块208将当前请求指令发送给PHY之后,前一请求指令的处理还未完成,会限定请求指令之间存在时延。本实施例中就是利用了请求指令间的最小时延,指令插入模块204先利用空白指令对当前请求指令进行一个“时延预处理”,在“时延预处理”过程中,通过空白指令的插入,使得当前请求指令与前一请求指令之间已经存在一个时延,只是这个时延暂且不满足最小时延的要求,需要后续过程延时处理模块206进行进一步处理。更重要的是,通过空白指令的插入,使得当前请求指令与前一请求指令之间不再紧邻、不再连续,这解除了当前请求指令与前一请求指令间的耦合,使得当前请求指令与前一请求指令之间由组合逻辑变成了时序逻辑。图3和图4分别示出了插入空白指令之前和插入空白指令之后的指令帧格式。

自前一请求指令分配到预先为其指定的数据命令接口通道起,在处理插入空白指令期间延时处理模块206需要完成对当前请求指令进行延时计时的各计时器的计时准备,将各计时器的电平从无效状态拉到有效状态。当空白指令到物理层传输通道的传输完成之后,延时处理模块206可以控制各计时器开始计时以实现延时处理。计时长度应当大于等于当前请求指令与前一请求指令间的最小时延与插入的空白指令所占用时间之差。例如,当前请求指令与前一请求指令之间最小时延为4个周期,而在此之前已经插入了一个周期的空白指令,这时候的计时长度只要大于等于3个周期即可。为了实现时延的精确控制,计时长度最好等于使当前请求指令与前一请求指令之间的时延满足对应的最小时延的要求。

当延时处理模块206计时完成之后,通道分配模块208可以将当前请求指令分配到数据命令接口的通道上,以便经由物理层传输通道传给数据存储器,传输当前请求指令所使用的通道可以是由用户预先指定确定的。

在本实施例中,由于PHY的工作频率是DDR controller的2倍或4倍,因此,控制器20的一个时钟周期对应于PHY的2个或者4个时钟周期,而数据命令接口的工作频率与PHY的相同,也就是说,数据命令接口也有2条或4条与PHY相连的通道。在本实施例中,数据命令接口包括但不限于DFI接口,其可以实现数据信息、命令信息、状态信息、Debug信息、Training信息等的传输。

当数据命令接口具有两个通道时,控制器20可以根据用户的指示从2个通道中指定一个作为第一通道以供激活act、ref,prea指令共用,并将两个通道均作为第二通道以供rd/rda,wr/wra以及pre指令共用。在这种情况下,rd/rda,wr/wra以及pre指令无论在哪个通道上都可以进行传输。也就是说,当这些请求指令传输到数据命令接口时,数据命令接口的两个通道中,当前哪一个处于有效工作状态就使用哪一个进行传输,完全不需要等待。而prea,ref和act指令的时延误差严格控制在1个PHY时钟误差,因为,如果prea,ref和act指令传输到数据命令接口时,数据命令接口的两个通道中处于有效工作状态的通道不是预先指定的通道,则通道分配模块208将等待PHY的另一个通道有效工作的时候再传输这些请求指令,这需要等待一个PHY时钟周期;否则,若prea,ref和act指令传输到数据命令接口时,数据命令接口的两个通道中处于有效工作状态的通道恰好是预先指定的通道,则通道分配模块208不需要等待就可以直接将请求指令传输出去。

当数据命令接口具有4个通道时,控制器20可以根据用户的指示从4个通道中指定一个作为第一通道以供激活act、ref,prea指令共用,并从4个通道中指定两个第二通道以供rd/rda,wr/wra以及pre指令共用,且指定出的两个第二通道之间间隔有一个通道。与两个通道的情况类似,在这种情况下,通道分配模块208可以将rd/rda,wr/wra,pre请求指令的时延误差严格控制在1个PHY时钟周期,而对于prea,ref和act的请求指令的时延误差约束在3个PHY时钟周期。

本实施例中的控制器可以部署在与存储器连接的中终端处理器上,如图6所示,终端60包括处理器6与存储器2、输入单元7,控制器中条件判断模块、指令插入模块、延时处理模块以及通道分配模块的功能均可以通过处理器6实现,当处理器6通过输入单元7接收到用户输入的当前请求指令,并确定当前请求指令满足预设条件之后,会将当前请求指令存储到缓冲区中,当空白指令的传输完成后再提取当前请求指令进行延时处理,然后为之分配到数据命令接口的通道上以将其传输至物理层传输通道。

本发明实施例提供的控制器,通过在本来就具有时延的指令间插入空白指令,使得两个相邻的请求指令不隔离开,不再相邻,从而使得连续的请求指令得以“解耦”,从组合逻辑控制变成时序逻辑控制。在对空白指令进行传输的期间,当前请求指令与前一请求指令间时延对应计时器的组合逻辑电路可以做好计时准备,当空白指令传输完成之后,控制器不需要等待,就可以直接开始工作。最终使得控制器的工作频率得到了提升,进而提升了带宽利用率。另一方面,由于部分命令间插入了不需要组合逻辑电路工作的空白指令,因此组合逻辑电路不需要随时保持高速切换,这提升了控制器的鲁棒性。

实施例三:

图7示出的是本实施例提供的控制器70的架构图,控制器70通过用户接口71接收到当前请求指令,进而判断当前请求指令是否是常见指令,如否,例如当前请求指令是MRS,SRE/SRX,PDE/PDX中的任意一个,则直接可以根据预先为这些指令设置的比较宽裕的第一时延进行延时控制。如果当前请求指令是rd/rda,wr/wra,act,pre/prea,ref这些常见请求指令中的任意一个,则进一步确定其与前一请求指令之间是否具有大于0的最小时延。表1中示出了两个相邻请求指令间的时延要求以供参考:

表1

当根据表1确定当前请求指令与前一请求指令之间不存在时延时,即二者之间可无缝操作时,控制器70直接将当前请求指令发送到预取队列73,由预取队列将其发送给DFI接口74。如果控制器70确定当前请求指令与前一请求指令间存在时延要求时,控制器70将当前请求指令存储到缓冲区72当中,同时将至少一个周期的空白指令传输到预取队列73中;当空白指令传输到DFI接口74后,控制器70控制将缓冲区72中存储的当前请求指令传输至预取队列73中,利用计时器对当前请求指令进行延时处理之后,再从预取队列73中按照先入先出原则提取当前请求指令将其传输给DFI接口74并按照预先指定的通道传输至物理层传输通道。

本实施例中提供的控制器,针对出现概率较小的请求指令,不会花费大量的资源对其时延进行精确控制,从而节省了处理资源以更好地对出现概率较大的请求指令进行精确时延控制,优化了资源配置。另外控制器通过插入空白指令对于前一请求指令存在时延的当前请求指令进行“时延预处理”,使得当前请求指令与前一请求指令之间不再紧邻、不再连续,解除了当前请求指令与前一请求指令间的耦合,使得当前请求指令与前一请求指令之间由组合逻辑变成了时序逻辑。并且给了后续需要参与计时的各计时器足够的时间进行计时准备,使得组合逻辑电路不需要随时保持高速切换,这提升了控制器的鲁棒性。

显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。

以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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