一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种DDR命令调度方法、装置、设备及介质与流程

2021-05-07 22:47:00 来源:中国专利 TAG:调度 介质 装置 命令 特别
一种DDR命令调度方法、装置、设备及介质与流程

本申请涉及计算机技术领域,特别涉及一种ddr命令调度方法、装置、设备、介质。



背景技术:

随着多媒体应用技术的发展,ddr(doubledatarate,双倍速率存储器)的读写访问效率过低,通常成为芯片系统的瓶颈。典型的ddr调度系统中,支持对ddr访问命令基于效率优先的原则进行调度,将更加高效的命令,优先调度给下游,从而提升ddr读写访问的效率。

但是对于同服务id(identity,身份标识)的访问命令,是要求保序执行的。如果出现大量同服务id访问命令的访问,只能对同服务id访问命令进行顺序执行,导致其调度能力大打折扣。且调度系统通常是对缓存中的命令直接仲裁输出的。比如,仲裁器空闲时,后续输入的命令会直接输出给下游,这时容易导致一些比较低效行为的命令在调度系统的下游汇聚。从而降低了ddr读写访问的效率。因此,如何进行ddr访问命令的调度以提升ddr读写访问效率就成为了本领域技术人员需要解决的问题。



技术实现要素:

有鉴于此,本申请的目的在于提供一种ddr命令调度方法、装置、设备、介质,能够提升ddr读写访问效率。其具体方案如下:

第一方面,本申请公开了一种ddr命令调度方法,包括:

当获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定;

对所述待执行ddr访问命令进行缓存,并在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr;

当所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行且有效的ddr读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理;

如果需对所述读数据作保序处理,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。

可选地,还包括:

当所述ddr执行ddr访问命令时,将未执行且有效的ddr访问命令的计数器清零,并根据当前执行的ddr访问命令更新所述未执行且有效的ddr访问命令的命令类型;

根据更新后的命令类型更新所述未执行且有效的ddr访问命令的等待时间,且所述未执行且有效的ddr访问命令的计数器重新开始计时。

可选地,所述对所述待执行ddr访问命令进行缓存,包括:

当所述待执行ddr访问命令为读命令时,将所述待执行ddr访问命令和所述待执行ddr访问命令对应的伴随状态信息缓存到第一命令缓存队列中;

将所述待执行ddr访问命令以及所述待执行ddr访问命令在所述第一命令缓存队列中的第一指针位置缓存到第二命令缓存队列中;

相应地,所述将所述待执行ddr访问命令仲裁输出至ddr之后,还包括:

将所述待执行ddr访问命令对应的随路信息缓存到随路缓存队列中,以便根据所述随路信息查找到所述待执行ddr访问命令对应的伴随状态信息,其中,所述随路信息包括所述待执行ddr访问命令的id、所述第一指针位置以及待执行ddr访问命令的读数据长度。

可选地,所述将所述待执行ddr访问命令和所述待执行ddr访问命令对应的伴随状态信息缓存到第一命令缓存队列中之前,还包括:

确定出所述待执行ddr访问命令对应的伴随状态信息。

可选地,所述确定出所述待执行ddr访问命令对应的伴随状态信息,包括:

将所述第一命令缓存队列中除所述待执行ddr访问命令之外的ddr访问命令中最新接收到的ddr访问命令的命令顺序加1作为所述待执行ddr访问命令的命令顺序;

从所述第一命令缓存队列中除所述待执行ddr访问命令之外的ddr访问命令中确定出目标ddr访问命令集合,其中,所述目标ddr访问命令集合中的ddr访问命令对应的服务id和所述待执行ddr命令对应的服务id相同;

将所述目标ddr访问命令集合中最新接收到的ddr访问命令在所述第一命令缓存队列中的第二指针位置确定为所述待执行ddr访问命令的保序指针,并将所述待执行ddr访问命令的保序标志拉高。

可选地,所述对所述读数据进行缓存,包括:

将所述待执行ddr访问命令在所述第一命令缓存队列中的第一指针位置确定为数据缓存位置;

将所述读数据缓存到预设数据缓存中的所述数据缓存位置上。

可选地,所述直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,包括:

当所述保序指针对应的第二指针位置上的ddr访问命令的命令有效标志位拉低时,将所述待执行ddr访问命令的保序标志拉低;

将所述读数据返回到对应的目标服务。

第二方面,本申请公开了一种ddr命令调度装置,包括:

配置模块,用于在获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定;

第一缓存模块,用于对所述待执行ddr访问命令进行缓存;

命令仲裁输出模块,用于在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr;

判断模块,用于在所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行ddr且有效的读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理;

第二缓存模块,用于在需对所述读数据作保序处理时,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。

第三方面,本申请公开了一种电子设备,包括:

存储器和处理器;

其中,所述存储器,用于存储计算机程序;

所述处理器,用于执行所述计算机程序,以实现前述公开的ddr命令调度方法。

第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的ddr命令调度方法。

可见,本申请在获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定,以及对所述待执行ddr访问命令进行缓存,并在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr,然后在所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行且有效的ddr读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理,如果需对所述读数据作保序处理,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。这样即使是同服务id发起的ddr访问命令,由于不同的ddr访问命令与ddr最近执行的ddr访问命令关系的不同,会配置不同的等待时间,当等待时间达到之后便可以输出至ddr执行,所以可以实现同服务id发起的ddr访问命令的乱序执行,且对于同服务id发起的ddr读命令对应的读数据作保序处理,可以保证乱序执行的ddr读命令对应的读数据按照接收到ddr读命令的顺序返回到目标服务中,避免目标服务出现异常,这样通过为不同ddr访问命令配置对应的等待时间可以对同服务id发起的ddr访问命令进行基于效率优先原则的调度,提高了ddr读写访问的效率,且保证系统服务的正常运行。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请公开的一种ddr命令调度方法流程图;

图2为本申请公开的一种ddr命令调度系统装置所处位置的示意图;

图3为本申请公开的一种ddr命令调度系统装置结构示意图;

图4为本申请公开的一种ddr命令调度装置结构示意图;

图5为本申请公开的一种电子设备结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,在对ddr命令进行调度的过程中,对于同服务id的访问命令,是要求保序执行的。如果出现大量同服务id访问命令的访问,只能对同id访问命令进行顺序执行,导致其调度能力大打折扣。且调度系统通常是对缓存中的命令直接仲裁输出的。比如,仲裁器空闲时,后续输入的命令会直接输出给下游,这时容易导致一些比较低效行为的命令在调度系统的下游汇聚。从而降低了ddr读写访问的效率。有鉴于此,本申请提出了一种ddr命令调度方法,能够提升ddr读写访问效率。

参见图1所示,本申请实施例公开了一种ddr命令调度方法,该方法包括:

步骤s11:当获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定。

在具体的实施过程中,前端的服务会先后端的ddr调度系统发起ddr访问命令,当获取到待执行的ddr命令时,需要根据所述待执行ddr命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定。

在具体的实施过程中,命令类型可以为指示所述待执行ddr访问命令和ddr最近执行的ddr访问命令之间的关系。比如所述待执行ddr访问命令和ddr最近执行的ddr访问命令是否同bank,是否同row,是否同为读(或者写)命令;对于不同bank的命令,可能还需要维护所述待执行ddr访问命令的bank状态:是否bank激活等。对于不同的命令类型,可配置一个不同的等待时间。

当所述待执行ddr访问命令和ddr最近执行的ddr访问命令同bank或同row时,可以配置一个较短的等待时间,当所述待执行ddr访问命令和ddr最近执行的ddr访问命令不同bank时,可以配置一个较长的等待时间等。

在实际应用中,还包括当所述ddr执行ddr访问命令时,将所述未执行且有效的ddr访问命令的计数器清零,并根据当前执行的ddr访问命令更新所述未执行且有效的ddr访问命令的命令类型;根据更新后的命令类型更新所述未执行且有效的ddr访问命令的等待时间,且所述未执行且有效的ddr访问命令的计数器重新开始计时。在所述ddr未执行ddr访问命令时,计数器每拍时钟自动 1,直到他们计到命令对应的等待时间,将计数器停下来。

也即,每当ddr执行一个新的ddr命令时,便需要将所有未执行且有效的ddr访问命令的计数器清零,且根据当前执行的ddr访问命令更新未执行且有效的ddr访问命令的命令类型,以及根据更新后的命令类型更新未执行且有效的ddr访问命令的等待时间,然后各个未执行且有效的ddr访问命令的计数器重新开始计时。由于每次执行的ddr访问命令和未执行且有效的ddr访问命令之间的关系会不相同,所以每当所述ddr执行新的ddr访问命令时便需要更新所述各个未执行且有效的ddr访问命令的命令类型以及等待时间。

由于未执行且有效的ddr访问命令的等待时间需要根据命令类型配置,而各个未执行且有效的ddr访问命令的命令类型表示的是与ddr最近一次执行的ddr访问命令的关系,所以即使两个未执行且有效的ddr访问命令来自相同的服务id,由于和ddr最近一次执行的ddr访问命令之间的关系不同,所以这两个未执行且有效的ddr访问命令各自的等待时间会不相同,而等待时间达到之后,便可以输出至ddr执行,所以可以实现同服务id的命令的乱序执行。

上述的待执行ddr访问命令包括待执行ddr读命令和待执行ddr写命令,也即,本申请中既能对ddr读命令进行基于效率优先的乱序调度,也能对ddr写命令进行基于效率优先的乱序调度。

步骤s12:对所述待执行ddr访问命令进行缓存,并在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr。

可以理解的是,所述待执行ddr访问命令需要等待一定的时间,所以需要先对所述待执行ddr访问命令进行缓存,并在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr,以便所述ddr执行所述待执行ddr访问命令,进行从所述ddr中读取数据或向所述ddr中写入数据。

其中,所述对所述待执行ddr访问命令进行缓存,包括:当所述待执行ddr访问命令为读命令时,将所述待执行ddr访问命令和所述待执行ddr访问命令对应的伴随状态信息缓存到第一命令缓存队列中;将所述待执行ddr访问命令以及所述待执行ddr访问命令在所述第一命令缓存队列中的第一指针位置缓存到第二命令缓存队列中;相应地,所述将所述待执行ddr访问命令仲裁输出至ddr之后,还包括:将所述待执行ddr访问命令对应的随路信息缓存到随路缓存队列中,以便根据所述随路信息查找到所述待执行ddr访问命令对应的伴随状态信息,其中,所述随路信息包括所述待执行ddr访问命令的id、所述第一指针位置以及待执行ddr访问命令的读数据长度。

对所述待执行ddr访问命令进行缓存,包括:当所述待执行ddr访问命令为写命令时,可以直接将ddr写命令写入到所述第二命令缓存队列中。

其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行且有效的ddr读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理。例如,在获取到所述待执行ddr访问命令之前,所述第一命令缓存队列中还有3个未执行且有效的ddr访问命令,则获取到所述待执行ddr访问命令时,所述待执行ddr访问命令的命令顺序为4。

相应地,就需要先确定出所述伴随状态信息。具体的,可以先将所述第一命令缓存队列中除所述待执行ddr访问命令之外的ddr访问命令中最新接收到的ddr访问命令的命令顺序加1作为所述待执行ddr访问命令的命令顺序;从所述第一命令缓存队列中除所述待执行ddr访问命令之外的ddr访问命令中确定出目标ddr访问命令集合,其中,所述目标ddr访问命令集合中的ddr访问命令对应的服务id和所述待执行ddr命令对应的服务id相同;将所述目标ddr访问命令集合中最新接收到的ddr访问命令在所述第一命令缓存队列中的第二指针位置确定为所述待执行ddr访问命令的保序指针,并将所述待执行ddr访问命令的保序标志拉高。

也即,当所述第一命令缓存队列访问命令中如果有和所述待执行ddr访问命令来自相同的服务id的ddr读命令,则表明需要对所述待执行ddr访问命令作保序处理,所以需要将所述待执行ddr访问命令的保序标志拉高,且将所述第一命令缓存队列中除去所述待执行ddr访问命令之外的ddr访问命令中,与所述待执行ddr访问命令同服务id的读命令中的最近获取到的ddr访问命令在所述第一命令缓存队列中的第二指针位置确定为所述待执行ddr访问命令的保序指针,这样当所述保序指针对应的第二指针位置处的ddr访问命令的命令有效标志位拉低时,表明所述待执行ddr访问命令同服务id的,且在待执行ddr访问命令之前便获取到的ddr访问命令对应的读数据已经返回到目标服务中,所以便可以将所述待执行ddr访问命令的保序标志拉低,表示所述待执行ddr访问命令对应的读数据可以不需要再保序,可以返回到目标服务中。

由于ddr写命令不需要进行保序处理,所以ddr写命令不需要带有保序标志和保序指针。

步骤s13:当所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行且有效的ddr读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理。

可以理解的是,在所述待执行ddr访问命令为读命令,且从ddr中获取到所述待执行ddr访问命令对应的读数据之后,所述读数据可能需要进行保序处理,所以需要判断所述读数据是否需要作保序处理,具体的,就是根据所述待执行ddr访问命令的伴随状态信息判断是否需要对所述读数据作保序处理。

也即,如果所述待执行ddr访问命令的伴随状态信息中的保序标志被拉高时,则表示所述读数据需要作保序处理。如果所述待执行ddr访问命令的伴随状态信息中的保序标志被拉低时,则表示所述读数据不需要作保序处理。

具体的,就是根据所述待执行ddr访问命令在所述随路缓存队列中的随路信息获取所述待执行ddr访问命令的在所述第一命令缓存队列中的第一指针位置,从所述第一指针位置读取所述待执行ddr访问命令对应的伴随状态信息,根据所述伴随状态信息判断是否需要对所述读数据作保序处理。所述随路缓存队列为一个先进先出队列,且在ddr读命令输出至ddr时,才将对应的随路信息缓存到所述随路缓存队列中,所以所述ddr读命令对应的读数据返回时,便可以从所述随路缓存队列中读取到对应的随路信息。

步骤s14:如果需对所述读数据作保序处理,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。

相应的,需对所述读数据作保序处理时,则先对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,再将所述读数据返回到对应的目标服务,以保证向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。

其中,对所述读数据进行缓存,包括:将所述待执行ddr访问命令在所述第一命令缓存队列中的第一指针位置确定为数据缓存位置;将所述读数据缓存到预设数据缓存中的所述数据缓存位置上。

其中,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,包括:当所述保序指针对应的第二指针位置上的ddr访问命令的命令有效标志位拉低时,将所述待执行ddr访问命令的保序标志拉低;将所述读数据返回到对应的目标服务。在所述待执行ddr访问命令的保序标志被拉低之后,表示在所述待执行ddr访问命令之前获取到的,和所述待执行ddr访问命令拥有相同的服务id的ddr读命令对应的读数据已经返回所述服务id对应的目标服务,可以不需要再对所述待执行ddr访问命令对应的读数据进行保序,可以将所述待执行ddr访问命令对应的读数据返回所述目标服务,这样可以包括所述目标服务接收到的读数据的顺序和发起对应的ddr访问命令的顺序是相同的,以避免出现读数据返回顺序错误导致服务异常的问题。这样可以保证同服务id的ddr读命令在进行基于效率优先原则进行乱序执行以后,也可以按照服务发起ddr命令的顺序返回对应的读数据,以避免出现读数据返回顺序错误导致服务异常的问题。

对于普通的仲裁器,并没有这种配置等待时间的机制,可能将一些低效的命令频繁的调度给下游的ddr,导致整体的性能比较差。在支持了仲裁降速的机制之后,一些低效的命令可以在缓存队列中进行等待直到等待时间到来,才会提起请求。这样做可以提高缓存队列的利用率,提高系统的调度效率。比如系统比较空闲期间,连续的到来cmd0/1/2/3/4/5的6个写命令。cmd0/2/4是同bank同row的。cmd1/3/5是同bank同row的。而cmd0/2/4和cmd1/3/5之间却是同bank不同row的。对于普通的仲裁器可能是按顺序调度出去(没有等待时间,且下游空闲时,直接按照先进先出调度),而采用了仲裁降速的处理后,调度顺序可能变成了cmd0/2/4/1/3/5的顺序,这段时间ddr效率上将得到显著的提升。

可见,本申请在获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定,以及对所述待执行ddr访问命令进行缓存,并在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr,然后在所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行且有效的ddr读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理,如果需对所述读数据作保序处理,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。这样即使是同服务id发起的ddr访问命令,由于不同的ddr访问命令与ddr最近执行的ddr访问命令关系的不同,会配置不同的等待时间,当等待时间达到之后便可以输出至ddr执行,所以可以实现同服务id发起的ddr访问命令的乱序执行,且对于同服务id发起的ddr读命令对应的读数据作保序处理,可以保证乱序执行的ddr读命令对应的读数据按照接收到ddr读命令的顺序返回到目标服务中,避免目标服务出现异常,这样通过为不同ddr访问命令配置对应的等待时间可以对同服务id发起的ddr访问命令进行基于效率优先原则的调度,提高了ddr读写访问的效率,且保证系统服务的正常运行。

参见图2所示,为典型的ddr调度系统装置所处位置的示意图。ddr控制器接口转换装置,是指系统中将上游ddr访问命令转换到ddr控制器接口时序的模块。ddr调度系统装置,是指该发明所在的系统装置,其目的用来提升ddr访问效率。ddr时序控制装置。是指将其上游过来的命令转换到ddr访问时序的模块。

在具体的实施过程中,可以在上述图2的ddr调度系统装置中增加仲裁降速模块以及同id数据调序模块实现前述实施例中的ddr命令调度方法,参见图3所示,为新的ddr调度系统装置示意图。

结合上述图3对前述实施例中公开的ddr命令调度方法进行说明。ddr读命令输入时,会根据ddr命令的命令类型为ddr命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定。会产生4个伴随状态信息:命令有效标志位、命令顺序、保序标志(是否需要做保序)、以及保序指针。将ddr读命令和伴随状态信息写入同id读数据调序模块的读命令缓存队列(也即,前述的第一命令缓存队列)。同时产生这个ddr读命令所在同id读数据调序模块的读命令缓存队列的第一指针位置,送给ddr命令仲裁器。ddr命令仲裁器会将这个第一指针位置和相应的ddr读命令一起缓存在ddr命令仲裁器的命令队列(也即,前述的第二命令缓存队列)中,当达到所述等待时间,将ddr命令仲裁输出。如果是ddr写命令可以直接将ddr写命令写入到所述第二命令缓存队列中。

每当ddr命令仲裁器调度出一个ddr读命令时,同id读数据调序模块会获取这个被调度ddr读命令在所述读命令缓存队列中的第一指针位置。同id读数据调序模块根据ddr命令仲裁器仲裁出去的ddr读命令在所述读命令缓存队列中的第一指针位置,产生命令的随路信息,写入随路信息缓存队列。其中,随路信息包括命令的id,命令在读命令缓存队列中的第一指针位置,以及对应读数据的长度。这里的随路信息缓存队列是一个先进先出的队列。读数据返回时,直接按顺序读取随路信息缓存队列的随路信息。读数据根据读取的随路信息,获取到对应的命令所在的第一指针位置。通过这个指针,查找到读数据对应命令的伴随状态信息。获取到这个读数据对应的命令id,是否要作保序,以及保序指针。如果这个读数据不需要作保序,则直接从同id读数据调序模块输出。如果这个读数据需要作保序,则写入读数据缓存buf的相应位置(这个位置就是对应读命令的第一指针位置,读命令和读数据在对应队列或buf的指针是相同)。待这个读数据保序标志解除后,经过mux仲裁输出。

其中,保序状态的解除:对于保序状态的读数据,需要待其保序指针指向的命令对应的读数据全部返回上游的服务之后,解除相应的保序状态。如果读数据缓存buf为空,则等待相应的读数据返回后,直接返回上游的服务。

其中,命令有效标志位表示读命令进入同id读数据调序模块,将命令有效标志位拉高,指示命令有效。当该ddr读命令的所有读数据从ddr返回,并从同id读数据调序模块输出给上游的服务之后,将命令有效标志拉低。

命令顺序:即记录有效的ddr读命令进入读命令缓存队列中的顺序。每次ddr读命令写入读命令缓存队列时,将所述读命令缓存队列中的有效ddr读命令个数(包括该ddr读命令)作为该ddr读命令的顺序记录。当有ddr读命令的有效标志拉低时,对于所有未执行且有效的ddr读命令中,命令顺序大于这个输出ddr读命令的命令顺序时,将这些ddr读命令的命令顺序-1。

保序标志:新进入同id读数据调序模块的ddr读命令,如果在读命令缓存队列中还有与其同id的ddr读命令,且这些ddr读命令有效(命令有效标志位=1),那么将这个新进来的ddr读命令的保序标志拉高,标记为需要保序的命令。保序标志是一个动态信号,在检测到一个需要保序的命令,其保序指针指示的命令对应的读数据已经全部返回上游的服务时,该命令的保序状态会撤销。

保序指针:新进入同id读数据调序模块的需要做保序的读命令,找到该命令同id的,最晚输入的读命令缓存队列的命令所在的第二指针位置,将第二指针位置记录为它的保序指针。类似于一种链表的结构,在命令的保序指针指示的队列位置,这个位置对应的命令的读数据全部返回给上游(或者是这个命令的有效标志拉低)时,被保序的命令的保序标志拉低,也就意味着命令不再有保序要求,其返回的读数据可以开始返回给上游的服务了。这样就实现了在ddr命令仲裁器中进行了同服务id读命令的乱序调度后,同服务id的乱序返回的读数据在同id读数据调序模块中进行调序。最终保证同服务id读命令对应的读数据顺序返回给上游的服务。

特别的,对于初始并没有命令调度出去时,ddr命令仲裁器的命令队列中的命令的等待时间=0,即首次输入ddr命令仲裁器的命令,可以马上提起请求,并仲裁输出至ddr。

参见图4所示,本申请实施例公开了一种ddr命令调度装置,包括:

配置模块11,用于在获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定;

第一缓存模块12,用于对所述待执行ddr访问命令进行缓存;

命令仲裁输出模块13,用于在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr;

判断模块14,用于当所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行ddr且有效的读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理;

第二缓存模块15,用于在需对所述读数据作保序处理时,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。

可见,本申请在获取到待执行ddr访问命令时,根据所述待执行ddr访问命令的命令类型为所述待执行ddr访问命令配置等待时间和计时器,其中,所述命令类型根据ddr最近执行的ddr访问命令确定,以及对所述待执行ddr访问命令进行缓存,并在所述待执行ddr访问命令的计时器的计时达到所述等待时间时,将所述待执行ddr访问命令仲裁输出至ddr,然后在所述待执行ddr访问命令为读命令,且从所述ddr中获取到待执行ddr访问命令对应的读数据时,根据所述待执行ddr访问命令的伴随状态信息判断是否对所述读数据作保序处理,其中,所述伴随状态信息包括命令有效标志位、命令顺序、保序标志、保序指针,所述命令有效标志位拉高时,表示所述待执行ddr访问命令有效,所述命令顺序表示后台接收到所述待执行ddr访问命令在所有未执行且有效的ddr读命令中的顺序,所述保序标志拉高时,表示需对所述待执行ddr访问命令对应的读数据进行保序处理,如果需对所述读数据作保序处理,对所述读数据进行缓存,直到所述待执行ddr访问命令的保序标志拉低,则将所述读数据返回到对应的目标服务,以便向所述目标服务返回所述读数据的顺序与所述目标服务发起所述待执行ddr访问命令的顺序相同。这样即使是同服务id发起的ddr访问命令,由于不同的ddr访问命令与ddr最近执行的ddr访问命令关系的不同,会配置不同的等待时间,当等待时间达到之后便可以输出至ddr执行,所以可以实现同服务id发起的ddr访问命令的乱序执行,且对于同服务id发起的ddr读命令对应的读数据作保序处理,可以保证乱序执行的ddr读命令对应的读数据按照接收到ddr读命令的顺序返回到目标服务中,避免目标服务出现异常,这样通过为不同ddr访问命令配置对应的等待时间可以对同服务id发起的ddr访问命令进行基于效率优先原则的调度,提高了ddr读写访问的效率,且保证系统服务的正常运行。

在具体的实施过程中,所述配置模块11可以相当于前述图3中的仲裁器降速模块,所述第一缓存模块12可以包括前述图3中的同id读数据调序模块中的读命令缓存队列和ddr命令仲裁器中的命令队列。命令仲裁输出模块13可以包括前述图3中的ddr命令仲裁器,所述判断模块14可以相当于前述图3中的同id读数据调序模块中的一部分,所述第二缓存模块15可以相当于前述图3中的同id读数据调序模块中的读数据缓存buf。

参见图5所示,为本申请实施例提供的一种电子设备20的结构示意图,该电子设备20可以实现前述实施例中公开的ddr命令调度方法步骤。

通常,本实施例中的电子设备20包括:处理器21和存储器22。

其中,处理器21可以包括一个或多个处理核心,比如四核心处理器、八核心处理器等。处理器21可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程们阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的图像的渲染和绘制。一些实施例中,处理器21可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器22可以包括一个或多个计算机可读存储介质,计算机可读存储介质可以是非暂态的。存储器22还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器22至少用于存储以下计算机程序221,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例中公开的ddr命令调度方法步骤。

在一些实施例中,电子设备20还可包括有显示屏23、输入输出接口24、通信接口25、传感器26、电源27以及通信总线28。

本技术领域人员可以理解,图5中示出的结构并不构成对电子设备20的限定,可以包括比图示更多或更少的组件。

进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的ddr命令调度方法。

其中,关于上述ddr命令调度方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的一种ddr命令调度方法、装置、设备、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜