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

一种指令调度方法、指令调度装置和相关设备与流程

2022-06-02 12:49:08 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术领域,具体涉及一种指令调度方法、指令调度装置和相关设备。


背景技术:

2.内存控制器是计算机系统内部控制内存并且负责内存与cpu(central processing unit,中央处理器)之间数据交互的重要组成部分。内存控制器能够按照预设的指令调度方式,调度cpu发送给内存的指令,以实现cpu的不同指令对内存的有序访问。但是,目前的内存控制器的指令调度方式,会存在导致内存带宽的利用率较低的情况。


技术实现要素:

3.有鉴于此,本发明实施例提供一种指令调度方法、指令调度装置和相关设备,以提高内存带宽的利用率。
4.为解决上述问题,本发明实施例提供如下技术方案。
5.第一方面,本发明实施例提供一种指令调度方法,包括:
6.根据第一发送阈值,向内存连续发送多个第一指令;所述第一发送阈值用于限定向所述内存连续发送所述第一指令的阈值;
7.确定任意两个连续发送的所述第一指令的实际间隔时间是否大于至少一个预设间隔时间;
8.若大于至少一个预设间隔时间,将所述第一发送阈值减小至少一个预设值,并根据减小后的第一发送阈值,向所述内存连续发送多个第一指令。
9.第二方面,本发明实施例提供一种指令调度装置,包括:
10.指令调度模块,用于根据第一发送阈值,向内存连续发送多个第一指令;所述第一发送阈值用于限定向所述内存连续发送所述第一指令的阈值;
11.阈值调整模块,用于确定任意两个连续发送的所述第一指令的实际间隔时间是否大于至少一个预设间隔时间;若大于至少一个预设间隔时间,将所述第一发送阈值减小至少一个预设值,以使所述指令调度模块根据减小后的第一发送阈值,向所述内存连续发送多个第一指令。
12.第三方面,本发明实施例提供一种内存控制器,所述内存控制器被配置为执行本发明实施例所述的指令调度方法。
13.第四方面,本发明实施例提供一种芯片,包括本发明实施例所述的内存控制器。
14.第五方面,本发明实施例提供一种电子设备,包括本发明实施例所述的芯片。
15.本发明实施例所提供的指令调度方法、指令调度装置和相关设备,根据第一发送阈值,向内存连续发送多个第一指令,确定任意两个连续发送的第一指令的实际间隔时间是否大于至少一个预设间隔时间,若大于至少一个预设间隔时间,将第一发送阈值减小至少一个预设值,并根据减小后的第一发送阈值,向内存连续发送多个第一指令。由于第一发
送阈值减小至少一个预设值之后,减小了向内存连续发送第一指令的阈值,因此,可以更快地离开当前向内存连续发送第一指令的状态,切换到向内存连续发送另一种指令的状态,从而可以减少数据总线上的空闲时间,提高内存带宽的利用率。
附图说明
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
17.图1示例性的示出了一种处理器系统的结构示意图;
18.图2为本发明一个实施例提供的指令调度方法的流程图;
19.图3为本发明另一实施例提供的指令调度方法的流程图;
20.图4为本发明另一实施例提供的指令调度方法的流程图;
21.图5为本发明一个实施例提供的指令调度装置的结构示意图;
22.图6为本发明一个实施例提供的内存控制器的结构示意图。
具体实施方式
23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.图1示例性的示出了一种处理器系统的结构示意图。如图1所示,该处理器系统100可以包括:cpu 110、内存控制器120和内存130。其中,cpu 110是处理器系统100的运算和控制核心,作为信息处理、程序运行的最终执行单元。内存控制器120是控制内存130,并且使cpu 110与内存130进行数据传输的硬件。内存130为处理器系统100中的存储器件,用于暂时存放cpu 110中的运算数据,并与硬盘等外部存储器交换数据。在一个示例中,内存130例如为dram(dynamic random access memory,动态随机存取存储器)。
25.需要说明的是,尽管上述处理器系统100的结构仅示出了cpu 110、内存控制器120和内存130,但是在具体实施过程中,处理器系统100还可以包括实现正常运行所必需的其他组件。例如,cpu 110与内存控制器120之间还可布置多级缓存(cache)等。本发明实施例所指的处理器系统可以是芯片系统,例如soc(system on chip,系统级芯片)等集成电路芯片系统。
26.在处理器系统100中,cpu 110会通过内存控制器120与内存130进行大量的命令和数据传输,具体包括:cpu 110向内存控制器120发送指令或数据,内存控制器120先将接收到的指令缓存在一个指令队列中,之后再从指令队列中取出缓存的指令,并通过数据总线发送给内存130,使内存130执行相应的指令。
27.在实际应用中,指令队列中的指令并不是单一的指令,而是包括至少两种指令,如包括读指令和写指令,并且,指令队列中的读指令和写指令是随机排布的。基于此,为了减少内存控制器发送读指令和写指令的切换次数,内存控制器通常会采用一定时间或数量的
不同指令交替发送的指令调度方式,如,采用在一定时间或数量内只发送一种指令如读指令,然后在下一时间或数量内只发送另一种指令如写指令的指令调度方式。
28.在内存控制器向内存连续发送读指令或写指令的过程中,若两个连续发送的指令是分别发送给内存的不同区块的,则这两个连续指令之间的间隔时间较小;若两个连续发送的指令是发送给内存的同一区块的,则这两个连续指令之间的间隔时间较大。这是因为发送至内存的同一区块的指令遵循时间参数tccd_l,因此,指令间的延迟较大,即指令之间的间隔时间较大;发送至内存的不同区块的指令遵循时间参数tccd_s,因此,指令间的延迟较小,即指令之间的间隔时间较小。
29.虽然内存控制器可以在时序参数的影响下,优先选中与上一个发送的指令间隔时间较小的指令作为下一个发送指令,即优先选择与上一个发送的指令去往不同区块的指令作为下一个发送指令,但是,随着指令的不断发送,指令队列中同一种的指令剩余数量越来越少,剩余指令去往不同区块的几率越来越小,去往同一区块的几率越来越大,导致两个连续发送的指令的间隔时间较大的几率越来越大。而间隔时间较大又会导致数据总线上的空闲时间较多,内存带宽的损失较大。
30.发明人研究发现,在连续发送一种指令如读指令的过程中,若在两个连续发送的指令的间隔时间较大的情况下,使得内存控制器更快地切换成连续发送另一种指令如写指令的状态,可以减少数据总线上的空闲时间,减少内存带宽的损失。
31.基于此,本发明实施例提供了一种指令调度方案,在向内存连续发送多个同一种指令的过程中,确定任意两个连续的指令的间隔时间是否大于至少一个预设间隔时间,并在间隔时间大于至少一个预设间隔时间的情况下,减小向内存连续发送同一种指令的阈值,使得能够更快地离开当前指令的连续发送状态,切换到另一种指令的连续发送状态,从而可以减少数据总线上的空闲时间,提高内存带宽的利用率。
32.作为本发明实施例公开内容的一种可选实现,本发明实施例提供了一种指令调度方法,应用于内存控制器,该内存控制器用于调度发送给内存的指令,尤其是用于调度发送给随机地址的内存的指令。图2为本发明一个实施例提供的指令调度方法的流程图,如图2所示,该指令调度方法可以包括如下步骤。
33.在步骤s201中,根据第一发送阈值,向内存连续发送多个第一指令;
34.本发明实施例中,内存控制器接收到cpu发送给内存的指令之后,会将指令缓存在一个指令队列中,之后再从指令队列中取出缓存的指令发送给内存,使内存执行相应的指令。具体地,内存控制器会根据第一发送阈值,向内存连续发送指令队列中的多个第一指令。
35.其中,第一发送阈值用于限定内存控制器向内存连续发送第一指令的阈值,或者说,限定内存控制器向内存连续发送第一指令的量。可选地,第一发送阈值包括数量阈值或时间阈值。也就是说,第一发送阈值用于限定内存控制器向内存连续发送第一指令的数量或时间。当然,本发明并不仅限于此,在另一些实施例中,第一发送阈值还可以包括数据量阈值等。
36.例如,假设数量阈值为10,则内存控制器会连续向内存发送10个第一指令;假设时间阈值为1分钟,则内存控制器会在1分钟内连续向内存发送第一指令。当然,在发送完10个第一指令之后,内存控制器会连续向内存发送10个另一种指令即第二指令;在发送完1分钟
的读指令之后,内存控制器会在1分钟内连续向内存发送另一种指令即第二指令,在此不再赘述。
37.在步骤s202中,确定任意两个连续发送的第一指令的实际间隔时间是否大于至少一个预设间隔时间;若大于至少一个预设间隔时间,进入步骤s203;
38.在步骤s203中,将第一发送阈值减小至少一个预设值,并根据减小后的第一发送阈值,向内存连续发送多个第一指令。
39.内存控制器根据第一发送阈值向内存连续发送多个第一指令的过程中,在向内存发送任一第一指令之后,确定向内存发送另一第一指令的实际间隔时间是否大于至少一个预设间隔时间,若该实际间隔时间大于至少一个预设间隔时间,说明这两个连续发送的第一指令的实际间隔时间大于至少一个预设间隔时间,说明这两个连续发送的第一指令的实际间隔时间较大,会导致数据总线上的空闲时间较大,导致内存带宽的损失较大。
40.基于此,本发明实施例中,内存控制器可以将第一发送阈值减小至少一个预设值,并根据减小后的第一发送阈值,向内存连续发送多个第一指令。其中,预设值包括预设时间值或预设数量值。若第一发送阈值为时间阈值,则预设值为预设时间值;若第一发送阈值为数量阈值,则预设值为预设数量值。并且,第一发送阈值增大或减小的预设值可以相等,也可以不相等。一个可选示例中,预设数量值为1,预设时间值可以为4个时钟周期或8个时钟周期。
41.由于第一发送阈值减小至少一个预设值之后,减小了向内存连续发送第一指令的阈值,如减小了向内存连续发送第一指令的时间或数量,因此,可以使得向内存连续发送第一指令的时间或数量,能够更快速地达到第一发送阈值限定的时间或数量,从而使得内存控制器可以更快速地离开当前连续发送第一指令的状态,切换到连续发送另一种指令如第二指令的状态,进而可以减少数据总线上的空闲时间,提高内存带宽的利用率。
42.需要说明的是,本发明一些实施例中,第一发送阈值减小的预设值的个数等于实际间隔时间大于的预设间隔时间的个数。例如,实际间隔时间大于1个预设间隔时间,则将第一发送阈值减小1个预设值,实际间隔时间大于2个预设间隔时间,则将第一发送阈值减小2个预设值,实际间隔时间大于3个预设间隔时间,则将第一发送阈值减小3个预设值,以此类推。当然,本发明并不仅限于此,在另一些实施例中,第一发送阈值减小的预设值的个数还可以等于实际间隔时间大于的预设间隔时间的个数的2倍、3倍等,在此不再赘述。
43.本发明一些实施例中,第一指令为读指令或写指令,第二指令为写指令或读指令,但是,第一指令和第二指令为不同的指令,即第一指令和第二指令不同为读指令或写指令。也就是说,若第一指令为读指令,则第二指令为写指令;若第一指令为写指令,则第二指令为读指令。或者说,在连续发送读指令的状态下,读指令为第一指令,写指令为第二指令,在连续发送写指令的状态下,写指令为第一指令,读指令为第二指令。
44.在内存控制器向内存连续发送读指令的过程中,在发送任一读指令之后,确定发送另一读指令的实际间隔时间大于至少一个预设间隔时间,即可确定两个连续发送的读指令的实际间隔时间大于至少一个预设间隔时间,之后通过减小连续发送读指令的发送阈值,即可使得内存控制器更快地切换到连续发送写指令的状态。
45.同样,在内存控制器向内存连续发送写指令的过程中,在发送任一写指令之后,确定发送另一写指令的实际间隔时间大于至少一个预设间隔时间,即可确定两个连续发送的
写指令的实际间隔时间大于至少一个预设间隔时间,之后通过减小连续发送写指令的发送阈值,即可使得内存控制器更快地切换到连续发送读指令的状态。
46.由于在内存控制器向内存连续发送写指令的过程中,读指令会不断积累,数量会不断增多,因此,切换到连续发送读指令的状态之后,两个连续的读指令发送至内存的不同区块的几率较大,两个连续的读指令的间隔时间较小的几率较大。同样,在内存控制器向内存连续发送读指令的过程中,写指令会不断积累,数量会不断增多,因此,切换到连续发送写指令的状态之后,两个连续的写指令发送至内存的不同区块的几率较大,两个连续的写指令的间隔时间较小的几率较大。
47.基于此,本发明实施例中,在当前指令的实际间隔时间较大的情况下,可以通过减小第一发送阈值,减小连续发送读指令或写指令的发送时间或数量,加快或缩短当前指令的发送进程,更快地切换到间隔时间较小的另一种指令的连续发送状态,以减少数据总线上的空闲时间,减少内存带宽的损失,提高内存带宽的利用率。
48.需要说明的是,本发明实施例中,两个连续发送的读指令或两个连续发送写指令之间的实际间隔时间大于预设间隔时间,不仅可以是指令队列中读指令或写指令的剩余数量较少且剩余的读指令或写指令中发送至内存的同一区块的指令数量较多的情况导致的,也可以是指令队列中没有或者有很少的页命中指令,主要以页未命中指令和页冲突指令为主的情况导致的。当然,无论是哪种情况导致的,只要两个连续发送的读指令或两个连续发送写指令之间的实际间隔时间大于预设间隔时间,都可以采用本发明实施例中的方法进行阈值的调整以及指令的调度。
49.其中,页命中指令是指访存命令地址指向的行已经装载到区块缓冲区内,可以直接进行发送列选通访问数据,页未命中指令是指区块缓冲区内未装载任何行,指令需要发送行选通后才能发送列选通,页冲突指令是指区块缓冲区内装载的行,不是访存命令地址指向的行,指令需要先对区块预充电,然后行选通,才能发送列选通。
50.因此,若指令队列中没有或者有很少的页命中指令,主要以页未命中指令和页冲突指令为主,那么,发送页未命中指令和页冲突指令之前,都需等待一定的行选通时间或预充电时间,才能发送指令,导致指令间的实际间隔时间较大。而本发明实施例中,在指令间的实际间隔时间大于预设间隔时间的情况下,通过减小第一发送阈值加快或缩短当前指令的发送进程,可以将等待行选通或预充电的时间,替换为发送另一种指令的时间,从而可以减少数据总线上的空闲时间,减少内存带宽的损失,提高内存带宽的利用率。
51.需要说明的是,本发明实施例中的预设间隔时间可以是根据需求设置的两个连续发送的第一指令之间的最小间隔时间。例如,当两个连续发送的第一指令是发送给内存的不同区块指令时,两个连续发送的第一指令之间的最小延迟时间遵循时间参数tccd_s,则预设间隔时间可以是这两个连续发送的第一指令间的最小延迟时间。
52.在上述实施例的基础上,本发明一些实施例中,若实际间隔时间小于或等于一个预设间隔时间,将第一发送阈值增大预设值,以增大向内存连续发送第一指令的阈值。
53.也就是说,若两个连续发送的第一指令的实际间隔时间大于至少一个预设间隔时间,可以通过减小第一发送阈值,减小连续发送第一指令的时间或数量,加快或缩短第一指令的发送进程;若两个连续发送的第一指令的实际间隔时间小于或等于一个预设间隔时间,可以通过增大第一发送阈值,增大连续发送第一指令的时间或数量,以实现第一发送阈
值的动态调整,以使指令的发送状态始终保持在间隔时间较小的状态。
54.需要说明的是,虽然可能存在第一发送阈值先减小预设值后又增加预设值,使得第一发送阈值保持不变的情况,但是,这种情况下能够使指令的发送状态始终保持在间隔时间较小的状态,因此,也可以减少数据总线上的空闲时间,提高内存带宽的利用率。
55.当然,本发明并不仅限于此,在另一些实施例中,如图3所示,图3为本发明另一实施例提供的指令调度方法的流程图,若两个连续发送的第一指令的实际间隔时间小于或等于一个预设间隔时间,进入步骤s204,在步骤s204中,判断第一发送阈值是否等于第一预设阈值,若等于第一预设阈值,进入步骤s205,在步骤s205中,保持第一发送阈值不变;若小于第一预设阈值,进入步骤s206,在步骤s206中,将第一发送阈值增大预设值,以增大向内存连续发送第一指令的阈值。
56.基于此,在第一发送阈值增大到第一预设阈值之后,就不会再继续增大,可以使第一指令的发送阈值保持在第一预设阈值及以下,以免第一发送阈值过大,导致同一种指令长期占据数据总线,导致另一种指令无法发送,导致指令的延迟较大。其中,第一预设阈值可以通过配置寄存器设定,在此不再赘述。
57.需要说明的是,本发明实施例中的第一发送阈值可以等于第一预设阈值,也可以小于第一预设阈值。也就是说,本发明实施例中,不仅可以在第1个发送的第一指令和第2个发送的第一指令的实际间隔时间大于至少一个预设间隔时间的情况下,将第一发送阈值减小至少一个预设值,在第2个发送的第一指令和第3个发送的第一指令的实际间隔时间大于至少一个预设间隔时间的情况下,再次将第一发送阈值减小至少一个预设值,依次类推,可以连续多次减小第一发送阈值。
58.基于此,在第一指令之间的实际间隔时间大于多个预设间隔时间,导致第一发送阈值减小多个预设值的情况下,或者,在多个第一指令之间的实际间隔时间都大于至少一个预设间隔时间,导致第一发送阈值连续多次减小至少一个预设值的情况下,如实际间隔时间大于预设间隔时间的指令数量占指令总数量的比例超过50%,导致第一发送阈值的总减小量大于总增大量的情况下,会使得第一发送阈值连续多次减小至少一个预设值。若当前已发送的指令数量或时间已经达到减小后的第一发送阈值对应的数量或时间,则可以立即切换到连续发送第二指令的状态。也就是说,本发明实施例中,在第一发送阈值连续多次减小的情况下,可以进一步地加快或缩短当前指令的发送进程,进一步快速地切换到间隔时间较小的另一种指令的连续发送状态,以减少数据总线上的空闲时间,减少内存带宽的损失,提高内存带宽的利用率。
59.本发明一些实施例中,如图4所示,图4为本发明另一实施例提供的指令调度方法的流程图,将第一发送阈值减小至少一个预设值之后,在步骤s207中,判断向内存连续发送第一指令的阈值是否已达到当前的第一发送阈值;若是,进入步骤s208;
60.在步骤s208中,根据第二发送阈值,向内存连续发送多个第二指令;第二发送阈值用于限定向内存连续发送第二指令的阈值,该阈值包括数量阈值或时间阈值。
61.需要说明的是,第二发送阈值与第一发送阈值可以相等,也可以不相等。即,读指令的预设发送阈值和写指令的预设发送阈值可以相等,也可以不相等。并且,无论上一次读指令的发送阈值调整到何种大小,再次切换到连续发送读指令的状态时,读指令的发送阈值都可以从预设发送阈值即第一预设阈值开始调整。同样,再次切换到连续发送写指令的
状态时,写指令的发送阈值都可以从预设发送阈值即第一预设阈值开始调整。
62.还需要说明的是,在连续发送读指令的过程中,读指令计数器会记录已发送读指令的数量或时间,当已发送读指令的数量或时间等于当前的第一发送阈值时,切换到连续发送写指令的状态,写指令计数器开始记录已发送写指令的数量或时间。同时,会清空读指令计数器的值,待再次发送读指令时再开始计数。同样,切换到连续发送写指令的状态时,也会清空写指令计数器的值。
63.在上述任一实施例的基础上,本发明一些实施例中,确定任意两个连续发送的第一指令的实际间隔时间是否大于至少一个预设间隔时间,包括:
64.在向内存发送任一第一指令之后,进行至少一个预设间隔时间的计时;
65.若在第1个预设间隔时间内,向内存发送另一第一指令,则实际间隔时间小于或等于一个预设间隔时间;
66.若在第m个预设间隔时间内,向内存发送另一第一指令,m为大于1的自然数,则实际间隔时间大于至少一个预设间隔时间;将第一发送阈值减少至少一个预设值包括:将第一发送阈值减少(m-1)个预设值。
67.例如,在向内存发送任一第一指令之后,开始计时,若计时时间达到一个预设间隔时间之前或同时,向内存发送另一第一指令,则实际间隔时间小于或等于一个预设间隔时间,判断第一发送阈值是否等于第一预设阈值,并根据判断结果确定是否增大第一发送阈值;若计时时间达到一个预设间隔时间时,未向内存发送另一第一指令,但在计时时间大于一个预设间隔时间、小于两个预设间隔时间时,即在第2个预设间隔时间内,向内存发送了另一第一指令,则实际间隔时间大于一个预设间隔时间,将第一发送阈值减小一个预设值;若计时时间达到两个预设间隔时间时,仍向内存发送另一第一指令,但在计时时间大于两个预设间隔时间、小于三个预设间隔时间时,即在第3个预设间隔时间内,向内存发送了另一第一指令,则实际间隔时间大于两个预设间隔时间,将第一发送阈值减小两个预设值。
68.本发明一些实施例中,可以根据处理器系统内时钟信号的时钟周期对两个连续指令之间的实际间隔时间进行计时。例如,在向内存发送任一第一指令之后,通过时间窗口计数器进行时钟周期的计数,当时钟周期的计数值达到一个时间窗口对应的预设计数值时,计时时间达到一个预设间隔时间。其中,可以根据预设间隔时间对应的时钟周期数设置预设计数值。
69.并且,在向内存发送任一第一指令之后,可以在每个时钟周期开始时,都判断是否向内存发送了另一第一指令,若确定当前时钟周期未向内存发送另一第一指令,判断时间窗口计数器的计数值是否达到了预设计数值,若已达到预设计数值,说明两个连续发送的第一指令的实际间隔时间达到了一个预设间隔时间,可以清空时间窗口计数器,进行下一个时间窗口或预设间隔时间的计数;若未达到预设计数值,除时间窗口计数器继续计时之外,不做任何操作。
70.若确定当前时钟周期向内存发送了另一第一指令,判断时间窗口计数器的计数值是否达到了预设计数值,若已达到预设计数值,说明两个连续发送的第一指令的实际间隔时间大于一个预设间隔时间,可以清空时间窗口计数器,进行下一个预设间隔时间的计数;若未达到预设计数值,说明两个连续发送的第一指令的实际间隔时间小于一个预设间隔时间,可以判断第一发送阈值是否等于第一预设阈值,并根据判断结果确定是否增大第一发
送阈值。
71.本发明一些实施例中,若在一个预设间隔时间内未向内存发送另一第一指令,则在计时时间达到一个预设间隔时间之后,即可确定两个连续发送的第一指令的实际间隔时间大于一个预设间隔时间,即可将第一发送阈值减小一个预设值。
72.并且,在将第一发送阈值减小至少一个预设值之后,可以通过溢出标志表明另一第一指令的实际间隔时间已大于预设间隔时间,这样即便在第一个计时时间达到预设间隔时间、第二个计时时间未达到预设间隔时间时,向内存发送了另一第一指令,也可根据溢出标志判定另一第一指令与前一第一指令的实际间隔时间大于预设间隔时间,而不会错误判定成小于预设间隔时间。
73.基于此,本发明一些实施例中,若在预设间隔时间内未向内存发送另一第一指令,则在计时时间达到预设间隔时间,并将第一发送阈值减小预设值之后,将溢出标志设置为第一标志。
74.在内存控制器向内存发送另一第一指令之后,判断溢出标志是否为第一标志,若为第一标志,说明当前第一指令与前一第一指令的实际间隔时间大于预设间隔时间,已经将第一发送阈值减小预设值,此时保持当前的第一发送阈值不变即可,当然,还可以清空时间窗口计数器,清除溢出标志,进入下一轮的间隔时间判定流程;若不为第一标志,说明当前第一指令与前一第一指令的实际间隔时间小于预设间隔时间,则根据第一发送阈值和第一预设阈值的比较结果,确定是否增大第一发送阈值。其中,溢出标志为第一标志,可以是溢出标志为真,溢出标志不为第一标志,可以是溢出标志为假或未检测到溢出标志。
75.需要说明的是,在根据第一发送阈值,向内存连续发送多个第一指令之前,还可以判断当前是否是连续发送第一指令的状态,并且,是否已经发送了一个第一指令,若是连续发送第一指令的状态且已发送了一个第一指令,确定是否向内存发送另一第一指令的实际间隔时间是否大于至少一个预设间隔时间,若否,说明内存控制器处于空闲状态,则保持当前的空闲状态。当然,在空闲状态下,时间窗口计数器为清零的状态,溢出标志也不是第一标志,如溢出标志为假,第一指令的连续发送阈值为第一预设阈值。
76.本发明实施例中的指令调度方法,通过在向内存发送任一第一指令之后,确定向内存发送另一第一指令的实际间隔时间是否大于至少一个预设间隔时间,确定是否减小或增大第一发送阈值,以减少数据总线上的空闲时间,提高内存带宽的利用率。并且,本发明实施例中的指令调度方法,对发送给随机地址的内存的指令进行调度时,在带宽利用率较高的情况下,仍可以带来1%~2%带宽利用率的提升,降低3%-5%的读写平均延迟。
77.作为本发明实施例公开内容的另一种可选实现,本发明实施例提供了一种指令调度装置,应用于内存控制器,该内存控制器用于调度发送给内存的指令,尤其是用于调度发送给随机地址的内存的指令。图5为本发明一个实施例提供的指令调度装置的结构示意图,如图5所示,该指令调度装置具体包括:
78.指令调度模块51,用于根据第一发送阈值,向内存连续发送多个第一指令;第一发送阈值用于限定向内存连续发送第一指令的阈值;
79.阈值调整模块52,用于确定任意两个连续发送的第一指令的实际间隔时间是否大于至少一个预设间隔时间;若该实际间隔时间大于至少一个预设间隔时间,将第一发送阈值减小至少一个预设值,以使指令调度模块51根据减小后的第一发送阈值,向内存连续发
送多个第一指令。
80.本发明一些实施例中,阈值调整模块52还用于在实际间隔时间小于或等于一个预设间隔时间时,将第一发送阈值增大预设值,以增大向内存连续发送第一指令的阈值。
81.本发明一些实施例中,阈值调整模块52还用于在实际间隔时间小于或等于一个预设间隔时间时,判断第一发送阈值是否等于第一预设阈值;第一预设阈值为向内存连续发送第一指令的最大阈值;若等于第一预设阈值,保持第一发送阈值不变;若小于第一预设阈值,将第一发送阈值增大预设值,以增大向内存连续发送第一指令的阈值。
82.本发明一些实施例中,指令调度模块51还用于判断向内存连续发送第一指令的阈值是否已达到当前的第一发送阈值;若是,根据第二发送阈值,向内存连续发送多个第二指令;第二发送阈值用于限定向内存连续发送第二指令的阈值,该阈值包括数量阈值或时间阈值。
83.本发明一些实施例中,阈值调整模块52确定任意两个连续发送的第一指令的实际间隔时间是否大于至少一个预设间隔时间,包括:
84.在向内存发送任一第一指令之后,进行至少一个预设间隔时间的计时;
85.若在第1个预设间隔时间内,向内存发送另一第一指令,则实际间隔时间小于或等于一个预设间隔时间;
86.若在第m个预设间隔时间内,向内存发送另一第一指令,m为大于1的自然数,则实际间隔时间大于至少一个预设间隔时间;
87.将第一发送阈值减少至少一个预设值包括:将第一发送阈值减小(m-1)个预设值。
88.本发明一些实施例中,在计时时间等于一个预设间隔时间时,若未向内存发送另一第一指令,阈值调整模块52还用于将溢出标志设置为第一标志;
89.向内存发送另一第一指令之后,阈值调整模块52还用于判断溢出标志是否为第一标志;若为第一标志,保持第一发送阈值不变,并清除溢出标志;若不为第一标志,根据第一发送阈值和第一预设阈值的比较结果,确定是否将第一发送阈值增大预设值。
90.本发明一些实施例中,第一指令为读指令或写指令;并且,若第一指令为读指令,则第二指令为写指令,若第一指令为写指令,则第二指令为读指令。
91.作为本发明实施例公开内容的另一种可选实现,本发明实施例提供了一种内存控制器,该内存控制器被配置为执行如上任一实施例的指令调度方法。
92.图6为本发明一个实施例提供的内存控制器的结构示意图,内存控制器200可以通过总线接口接收来自cpu核心的访存指令,并通过高级外围总线apb接口或dfi接口等与ddr物理层连接,通过该物理层与内存连接。
93.其中,内存控制器200可以包括地址解码器201、指令队列202、数据缓存203、区块状态记录表204、时序检查器205、刷新控制模块206、仲裁器207、出发队列208等。
94.地址解码器201配置为将接收到的访存指令的物理地址按照配置寄存器指定的地址映射方式,转换成ddr dram的标准地址格式。
95.指令队列202配置为存储收到的访存指令,同时根据仲裁器207提供的信息对存储的访存指令信息实时更新。例如,若接收到写指令,对应的数据会存储在数据缓存203中。除了存储访存信息外,指令队列202也提供一些统计结果以供其他模块使用。
96.区块状态记录表204中记录了内存各个区块的地址以及状态,并根据仲裁器207的
仲裁结果进行更新。同时,每当有访存指令到达时,区块状态记录表204也会为指令队列202提供该访存指令的初始区块状态信息。
97.时序检查器205记录、检测访存中用到的各种时序参数,并为仲裁器207和刷新控制模块206提供必要的时序信息,以保证内存访存操作的正确性。
98.刷新控制模块206配置为管理内存的刷新,以维持内存数据不会丢失。
99.仲裁器207配置为接收其他模块的各种指令,按照既定规则对指令进行筛选,其中也包含读写切换逻辑。当有指令赢得仲裁时,仲裁器207将赢得仲裁的指令发往出发队列208,同时,仲裁器207还会向各个模块提供反馈信号,以帮助这些模块进行信息更新。
100.出发队列208配置为将来自仲裁器207的指令以及从数据缓存203得到的数据(例如读写指令对应的数据)按照规则发送给dfi接口,并最终到达内存,并且接收从内存读回的数据,并将数据返回至总线接口,以使该数据到达cpu核心。例如,当来自仲裁器207的指令为写指令时,出发队列208还将从数据缓存203得到的数据按照规则发送给dfi接口,并最终到达内存,以实现数据写入。
101.需要说明的是,本发明一些实施例中的指令调度模块51可以为上述仲裁器207,阈值调整模块52可以与仲裁器207相连,用于获取仲裁器207发出指令的时间,并根据两个连续发送的指令的间隔时间是否大于预设间隔时间,调整第一发送阈值的大小。当然,本发明另一些实施例中,指令调度装置可以集成在仲裁器207内,通过仲裁器207实现本发明实施例中的指令调度流程。
102.作为本发明实施例公开内容的另一种可选实现,本发明实施例提供了一种芯片,该芯片包括如上任一实施例提供的内存控制器。当然,该芯片还可以包括cpu以及内存等结构,并且,该芯片可以是封装后的芯片,也可以是未封装的裸片等,在此不再赘述。
103.作为本发明实施例公开内容的另一种可选实现,本发明实施例提供了一种电子设备,该电子设备包括如上任一实施例提供的芯片。
104.本发明实施例的电子设备包括但不仅限于移动通信设备、超移动个人计算机设备、便携式娱乐设备、服务器和其他具有数据交互功能的电子设备,其中,移动通信设备包括但不仅限于智能手机和多媒体手机,超移动个人计算机设备包括不仅限于平板电脑,便携式娱乐设备包括但不仅限于电子书和掌上游戏机,服务器包括但不仅限于计算机设备。
105.上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
106.虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
再多了解一些

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

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

相关文献