CN110399219A - 内存访问方法、dmc及存储介质 - Google Patents
内存访问方法、dmc及存储介质 Download PDFInfo
- Publication number
- CN110399219A CN110399219A CN201910651861.9A CN201910651861A CN110399219A CN 110399219 A CN110399219 A CN 110399219A CN 201910651861 A CN201910651861 A CN 201910651861A CN 110399219 A CN110399219 A CN 110399219A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- dmc
- order
- internal storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Abstract
本申请实施例公开了一种内存访问方法、DMC及存储介质,该方法包括:DMC获取内存中的已激活内存页;DMC确定M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为已激活内存页的目标内存访问命令;M个缓存队列中的内存访问命令为多个IP核发往DMC的用于对内存进行访问的命令;若是,DMC将目标内存访问命令输出至调度器的缓存队列中。本申请实施例可以提高内存的利用率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种内存访问方法、DMC及存储介质。
背景技术
片上系统(System on a Chip,SOC)是将内存、处理器、控制器等关键部件集成在一块芯片上的系统。SOC具有功耗低、速度快、体积小等优点,广泛应用于各种集成电路系统。在SOC中,内存带宽是关键瓶颈。由于工艺的限制,内存频率会受到限制,如何在有限的频率上提高内存的利用率是很多SOC都面临的问题。
由于SOC的快速发展,目前的SOC越来越复杂,SOC上的知识产权(IntellectualProperty core,IP)核的数量非常的多,这些IP核发送给内存的命令(比如,读命令或写命令)都是随机的,当控制器同时接收到多个命令之后,由于多个命令需要访问的内存的页面不同,控制器需要频繁的切换内存页面,内存页面的激活和关闭都需要时间,频繁的切换内存页面会导致内存的利用率下降。
发明内容
本申请实施例提供了一种内存访问方法、DMC及存储介质,可以提高内存的利用率。
第一方面,本申请实施例提供一种内存访问方法,所述方法应用于片上系统,所述片上系统包括多个IP核、M个输入缓存、内存、DMC,所述DMC包括调度器,所述方法包括:
所述DMC获取所述内存中的已激活内存页;
所述DMC确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令;所述M个缓存队列中的内存访问命令为所述多个IP核发往所述DMC的用于对所述内存进行访问的命令;M为正整数;
若是,所述DMC将所述目标内存访问命令输出至所述调度器的待处理队列中。
可选的,所述方法还包括:
若所述M个输入缓存中维持的M个缓存队列中不存在所访问的内存页为所述已激活内存页的目标内存访问命令,所述DMC激活所述待处理队列中预设数量的内存访问命令所访问的内存页。
第二方面,本申请实施例提供了一种DMC,所述DMC应用于片上系统,所述DMC包括调度器,所述片上系统包括所述DMC,所述片上系统还包括多个IP核、M个输入缓存、内存,所述DMC包括:
获取单元,用于获取所述内存中的已激活内存页;
确定单元,用于确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令;所述M个缓存队列中的内存访问命令为所述多个IP核发往所述DMC的用于对所述内存进行访问的命令;M为正整数;
仲裁单元,用于当所述确定单元确定所述M个输入缓存中维持的M个缓存队列中存在所访问的内存页为所述已激活内存页的目标内存访问命令时,将所述目标内存访问命令输出至所述调度器的待处理队列中。
第三方面,本申请实施例提供一种DMC,包括处理单元、存储单元、调度器和内存访问单元,所述存储单元用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理单元执行,上述程序包括用于执行本申请实施例第一方面中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中所描述的内存访问方法,该方法应用于片上系统,片上系统包括多个IP核、M个输入缓存、内存和DMC,DMC包括调度器,该方法包括:DMC获取内存中的已激活内存页;DMC确定M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为已激活内存页的目标内存访问命令;M个缓存队列中的内存访问命令为多个IP核发往DMC的用于对内存进行访问的命令;M为正整数;若是,DMC将目标内存访问命令输出至调度器的待处理队列中。本申请实施例中,当内存中有已激活内存页时,DMC可以让未进入调度器的待处理队列中的所访问的内存页为该已激活内存页的内存访问命令优先进入该待处理队列,优先对所访问的内存页为该已激活内存页的内存访问命令进行处理,避免该已激活内存页被频繁激活,从而提高内存的利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例公开的一种片上系统的结构示意图;
图2是本申请实施例公开的一种内存访问方法的流程示意图;
图3是本申请实施例公开的另一种内存访问方法的流程示意图;
图4是本申请实施例公开的一种内存页的激活示意图;
图5是本申请实施例公开的一种DMC的结构示意图;
图6是本申请实施例公开的另一种DMC的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的片上系统中的设备可以是服务器、虚拟机、物理机、云端服务器等等。
下面对本申请实施例进行详细介绍。
为了更好理解本申请的内存访问方法,首先公开一种片上系统。请参阅图1是本申请实施例公开的一种片上系统的结构示意图,如图1所示,该片上系统包括多个IP(Intellectual Property core,知识产权)核11、M个输入缓存12、内存13和DMC(Dynamicmemory controller,动态内存控制器)14。其中,IP核是用于ASIC(Application SpecificIntegrated Circuit,专用集成电路)或FPGA(Field-Programmable Gate Array,现场可编程逻辑门阵列)中的预先设计好的具有某种特定功能的集成电路功能模块。比如,CPU(Central Processing Unit,中央处理器)、DSP(digital signal processor,数字信号处理器)、存储器、通信接口模块、射频前端模块等。
IP核11可以向DMC14发送内存访问命令,用于访问内存13。其中,内存访问命令可以包括读命令或写命令,用于对内存进行读操作或写操作。
每个输入缓存12可以维持一个缓存队列,该缓存队列中的内存访问命令需要等待DMC14进行处理。当缓存队列中的内存访问命令进入DMC14的待处理队列后,DMC14才可以进行处理。输入缓存12的数量可以有多个,M为正整数,比如,M可以等于4。
内存13可以是动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取内存(synchronous dynamic random-access memory,SDRAM)、双倍速率同步动态随机存取内存(double data rate SDRAM,双倍速率SDRAM)中的任一种。内存13可以包括多个内存库(bank),每个内存库又可以包括多个内存页(page)。比如,对于2GB的内存而言,其可以包括4个512MB的bank,每个bank可以包括512个page,每个page大小为1MB。需要说明的是,在同一时间段,一个bank内只能有一个page被激活,其他page都处于关闭状态。
DMC14内部会维持一个待处理队列,DMC14只能对待处理队列中的命令进行处理。待处理队列的长度可以为预设长度(比如,64、32等)。举例来说,如果待处理队列的长度为64,则该待处理队列最多可以容纳64条命令。DMC14在处理该待处理队列中的命令时,可以逐条处理,也可以将其中同种类型的可以同时处理的命令一起处理。
其中,DMC14可以包括调度器141,该调度器141内可以用来维持待处理队列,待处理队列可以容纳一定数量的命令。DMC14还可以包括内存访问单元142,内存访问单元142用于实现对内存13的访问操作(比如,读操作或写操作)。例如,DMC14对调度器中的待处理队列的内存访问命令(比如,读命令或写命令)进行处理时,可以通过内存访问单元142对内存13进行读操作或写操作。其中,调度器141还可以对输入缓存12中的缓存队列中的待处理的内存访问命令进行仲裁。具体的,调度器141可以根据缓存队列中的内存访问命令的优先级大小,将优先级最大的待处理的内存访问命令从缓存队列中出队,进入调度器141的待处理队列中。输入缓存12中的缓存队列原本遵循先入先出(First Input First Output,FIFO)的策略,本申请中的调度器141可以对输入缓存12中的缓存队列的内存访问命令的优先级进行判断,将优先级高的命令优先输出至调度器141的待处理队列中,以便对优先级高的内存访问命令优先处理。
其中,调度器还可以称为DMC调度器。
本申请实施例可以提高内存的利用率。
基于图1所示的片上系统,本申请实施例公开一种内存访问方法,请参阅图2,图2是本申请实施例公开的一种内存访问方法的流程示意图,如图2所示,该内存访问方法包括如下步骤。
201,DMC14获取内存中的已激活内存页。
本申请实施例中,内存中的内存页存在两种可能状态:激活状态和关闭状态。当内存页处于激活状态时,调度器141的待处理队列中对该内存页进行访问的内存访问命令可以直接对该内存页进行访问;当该内存页处于关闭状态时,如果调度器141的待处理队列中的内存访问命令对该内存页进行访问,则需要提前激活该内存页,在该内存页被激活之后,再对该内存页进行访问。
内存13中的已激活内存页的数量可以有一个或多个,数量最多为内存13的内存库(bank)的数量。比如,内存有4个bank,则内存中已激活的内存页的数量最多有4个。
202,DMC确定M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为上述已激活内存页的目标内存访问命令;M个缓存队列中的内存访问命令为多个IP核发往DMC的用于对内存进行访问的命令;M为正整数。若是,则执行步骤203。
本申请实施例中,当DMC确定内存中存在已激活内存页后,DMC可以从M个输入缓存中维持的M个缓存队列中查找是否存在所访问的内存页为上述已激活内存页的目标内存访问命令。
其中,M个输入缓存中维持的M个缓存队列中的待处理的内存访问命令是由多个IP核发往DMC的用于对内存进行访问的命令。一个输入缓存可以接收一个或多个IP核发送的命令,M个缓存队列都可以遵循先入先出的策略。
如果M个输入缓存中维持的M个缓存队列中存在所访问的内存页为上述已激活内存页的目标内存访问命令,则执行步骤203。
可选的,步骤202具体可以包括如下步骤:
(11)DMC获取M个输入缓存中维持的M个缓存队列中的N条内存访问命令的命令信息,命令信息包括所访问的内存地址;N为正整数;
(12)DMC基于N条内存访问命令的命令信息确定N条内存访问命令中是否存在所访问的内存地址位于已激活内存页的目标内存访问命令。
本申请实施例中,M个缓存队列中的N条内存访问命令都会携带命令信息,DMC可以直接获取该N条内存访问命令的命令信息,命令信息可以包括命令类型(比如,读命令、写命令等)、所访问的内存地址。
由于已激活的内存页占据一定的内存空间,内存访问命令一般会对内存页的一段内存进行访问。如果内存访问命令所访问的内存地址位于已激活的内存页中,则表明该内存访问命令为目标内存访问命令。
举例来说,如果已激活的内存页占据的内存地址为0000-00FF,内存访问命令所访问的内存地址为0036-0043,则确定该内存访问命令所访问的内存地址位于已激活的内存页中,则表明该内存访问命令为目标内存访问命令。
本申请实施例可以根据内存访问命令写的命令信息包括的所访问的内存地址来确定内存访问命令所访问的内存地址是否位于已激活内存页中,进而可以快速确定M个缓存队列中的N条内存访问命令是否存在所访问的内存页为已激活内存页的目标内存访问命令。
可选的,步骤202具体可以包括如下步骤:
(21)DMC获取M个输入缓存中维持的M个缓存队列中的N条内存访问命令的命令信息,命令信息包括所访问的内存页的标识;N为正整数;
(22)DMC确定N条内存访问命令中是否存在所访问的内存页的标识为已激活内存页的页标识的目标内存访问命令。
本申请实施例中,M个输入缓存中维持的M个缓存队列中的N条内存访问命令的命令信息可以包括所访问的内存页的标识,DMC可以直接获取该N条内存访问命令所访问的内存页的标识,进而快速确定N条内存访问命令中的目标内存访问命令。
203,DMC将目标内存访问命令输出至调度器的待处理队列中。
可选的,执行步骤203之后还可以执行如下步骤:
DMC执行待处理队列中所访问的内存页为上述已激活内存页的内存访问命令,对上述已激活内存页进行内存访问。
本申请实施例中,如果M个输入缓存中维持的M个缓存队列中存在所访问的内存页为上述已激活内存页的目标内存访问命令,DMC将目标内存访问命令输出至调度器的待处理队列中,DMC可以将M个输入缓存中维持的M个缓存队列中所访问的内存页为上述已激活内存页的内存访问命令从M个缓存队列中输出至调度器的待处理队列中。本申请实施例可以优先对M个缓存队列中所访问的内存页为上述已激活内存页的内存访问命令进行处理,避免该已激活内存页被频繁激活,从而提高内存的利用率。
举例来说,如果M等于4,4个输入缓存中维持的4个缓存队列(第一缓存队列、第二缓存队列、第三缓存队列和第四缓存队列)中,每个缓存队列的长度为1024,每个待处理队列的长度为64,内存的bank数量为4个。DMC对待处理队列中的内存访问命令进行处理时,如果已经激活的内存页为第一内存页和第二内存页。如果DMC查询到4个缓存队列中存在第一内存访问命令、第二内存访问命令所访问的内存页为第一内存页,查询到4个缓存队列中存在第三内存访问命令、第四内存访问命令所访问的内存页为第二内存页。举例来说,第一内存访问命令来自第一缓存队列,第二内存访问命令来自第二缓存队列,第三内存访问命令来自第三缓存队列,第四内存访问命令来自第四缓存队列。
如果第一内存访问命令处于第一缓存队列的队头,则DMC可以直接将第一内存访问命令从第一缓存队列中出队,将第一内存访问命令放入调度器的待处理队列中,以便DMC执行该第一内存访问命令,对上述第一内存页进行内存访问;如果第一内存访问命令不处于第一缓存队列的队头,则DMC可以先将第一内存访问命令插入第一缓存队列的队头,然后将第一内存访问命令从第一缓存队列中出队,将第一内存访问命令放入调度器的待处理队列中,以便DMC执行该第一内存访问命令,对上述第一内存页进行内存访问。
如果第二内存访问命令处于第二缓存队列的队头,则DMC可以直接将第二内存访问命令从第二缓存队列中出队,将第二内存访问命令放入调度器的待处理队列中,以便DMC执行该第二内存访问命令,对上述第一内存页进行内存访问;如果第二内存访问命令不处于第二缓存队列的队头,则DMC可以先将第二内存访问命令插入第二缓存队列的队头,然后将第二内存访问命令从第二缓存队列中出队,将第二内存访问命令放入调度器的待处理队列中,以便DMC执行该第二内存访问命令,对上述第一内存页进行内存访问。
如果第三内存访问命令处于第三缓存队列的队头,则DMC可以直接将第三内存访问命令从第三缓存队列中出队,将第三内存访问命令放入调度器的待处理队列中,以便DMC执行该第三内存访问命令,对上述第二内存页进行内存访问;如果第三内存访问命令不处于第三缓存队列的队头,则DMC可以先将第三内存访问命令插入第三缓存队列的队头,然后将第三内存访问命令从第三缓存队列中出队,将第三内存访问命令放入调度器的待处理队列中,以便DMC执行该第三内存访问命令,对上述第二内存页进行内存访问。
如果第四内存访问命令处于第四缓存队列的队头,则DMC可以直接将第四内存访问命令从第四缓存队列中出队,将第四内存访问命令放入调度器的待处理队列中,以便DMC执行该第四内存访问命令,对上述第二内存页进行内存访问;如果第四内存访问命令不处于第四缓存队列的队头,则DMC可以先将第四内存访问命令插入第四缓存队列的队头,然后将第四内存访问命令从第四缓存队列中出队,将第四内存访问命令放入调度器的待处理队列中,以便DMC执行该第四内存访问命令,对上述第二内存页进行内存访问。
可选的,在执行步骤201之后,执行步骤202之前,还可以执行如下步骤:
DMC确定调度器的待处理队列中是否存在所访问的内存页为已激活内存页的内存访问命令;
若不存在,则执行步骤202。
本申请实施例中,当内存页被激活后,DMC可以检测调度器的待处理队列中是否存在所访问的内存页为已激活内存页的内存访问命令,如果不存在,则检测M个缓存队列中是否存在所访问的内存页为已激活内存页的目标内存访问命令。本申请实施例对进入待处理队列的目标内存访问命令,优先进行处理,无需与M个输入缓存中维持的M个缓存队列中的目标内存访问命令同时进行处理,可以提高待处理队列中的内存访问命令的处理效率。
可选的,图2所示的方法还可以包括如下步骤:
若所述调度器的待处理队列中存在所访问的内存页为所述已激活内存页的内存访问命令,则所述DMC执行所述待处理队列中所访问的内存页为所述已激活内存页的内存访问命令,对所述已激活内存页进行内存访问。
本申请实施例中,DMC可以优先对调度器的待处理队列中所访问的内存页为已激活内存页的内存访问命令进行处理,处理完毕之后,再对M个输入缓存中维持的M个缓存队列中的目标内存访问命令进行处理。对先进入待处理队列的目标内存访问命令,优先进行处理,无需与M个输入缓存中维持的M个缓存队列中的目标内存访问命令同时进行处理,可以提高待处理队列中的内存访问命令的处理效率。
本申请实施例中,如果调度器的待处理队列中的目标内存访问命令都被处理之后,则这些被处理的目标内存访问命令都会从该调度器的待处理队列中清除,该调度器的待处理队列中不会显示已经处理之后的目标内存访问命令。
本申请实施例可以在缓存队列中遵循先入先出的策略的基础上,对缓存队列中所访问的内存页为已激活的内存页的待处理的内存访问命令进行插队处理,以便其快速从缓存队列中出队,进入调度器的待处理队列中,便于DMC进行处理。本申请实施例中可以批量对所访问的内存页为同一内存页的内存访问命令进行处理,避免了内存页被频繁激活,从而提高内存的利用率。
请参阅图3,图3是本申请实施例公开的另一种内存访问方法的流程示意图,图3是在图2的基础上进一步优化得到的。如图3所示,该内存访问方法包括如下步骤。
301,DMC获取内存中的已激活内存页。
302,DMC获取上述已激活内存页的持续空闲时长。
本申请实施例中,当上述已激活内存页被内存访问命令访问时,表明该已激活内存页正在工作,当上述已激活内存页没有被内存访问命令访问时,表明该已激活内存页正在空闲。本申请实施例可以设置该已激活内存页的空闲时长上限减去第一时长阈值为预设时长阈值。该第一时长为所述DMC执行将目标内存访问命令输出至调度器中缓存队列中的步骤的预期时长。该第一时长阈值与M成正比,如果M的数量越多,该第一时长阈值越大。本申请实施例可以避免在执行步骤303和步骤304后该已激活内存页变为关闭状态,提高内存处理效率。如果上述已激活内存页的持续空闲时长大于或等于预设时长阈值,则DMC关闭上述已激活内存页,将上述已激活内存页从激活状态变为关闭状态。DMC可以把长时间不用的激活页关闭,可以节省内存功耗。
303,若上述已激活内存页的持续空闲时长小于预设时长阈值,DMC确定M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为上述已激活内存页的目标内存访问命令;M个缓存队列中的内存访问命令为多个IP核发往DMC的用于对内存进行访问的命令;M为正整数。若是,则执行步骤304;若否,则执行步骤305。
304,DMC将目标内存访问命令输出至调度器的待处理队列中,DMC执行待处理队列中所访问的内存页为上述已激活内存页的内存访问命令,对上述已激活内存页进行内存访问。
305,DMC激活待处理队列中预设数量的内存访问命令所访问的内存页。
本申请实施例中,如果M个输入缓存中维持的M个缓存队列中不存在所访问的内存页为上述已激活内存页的目标内存访问命令,则DMC可以重新对其他内存访问命令进行处理。本申请实施例可以在M个缓存队列不存在目标内存访问命令之后,DMC直接激活待处理队列中预设数量的内存访问命令所访问的内存页,激活新的内存页,继续进行内存访问。
其中,预设数量可以根据调度器的待处理队列中内存访问命令所访问的内存页的数量以及所访问的内存页所属的bank来确定,在同一时间段,一个bank内允许一个内存页被激活。举例来说,请参阅图4,图4是本申请实施例公开的一种内存页的激活示意图。从图4可以看出,调度器的待处理队列中内存访问命令包括第一内存访问命令(CM0)、第二内存访问命令(CM1)、第三内存访问命令(CM2)、第四内存访问命令(CM3)、第五内存访问命令(CM4)、第六内存访问命令(CM5)、第七内存访问命令(CM6)、第八内存访问命令(CM7)、第九内存访问命令(CM8)、第十内存访问命令(CM9)。其中,第一内存访问命令(CM0)、第二内存访问命令(CM1)、第三内存访问命令(CM2)均属于page0;第四内存访问命令(CM3)、第五内存访问命令(CM4)、第六内存访问命令(CM5)、第七内存访问命令(CM6)均属于page1;第八内存访问命令(CM7)、第九内存访问命令(CM8)均属于page2;第十内存访问命令(CM9)属于page3。如果page0、page1属于bank0,page2属于bank1、page3属于bank2,则DMC可以激活page0、page2、page3(如图4所示),或者激活page1、page2、page3。
本申请实施例中,当内存中有已激活内存页时,DMC可以让未进入调度器的待处理队列中的所访问的内存页为该已激活内存页的内存访问命令优先进入该待处理队列,优先对所访问的内存页为该已激活内存页的内存访问命令进行处理,避免该已激活内存页被频繁激活,从而提高内存的利用率。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图5,图5是本申请实施例公开的一种DMC的结构示意图。该DMC应用于图1的片上系统,DMC 500包括调度器50和内存访问单元504,如图5所示,该调度器50包括获取单元501、确定单元502和仲裁单元503,其中:
所述获取单元501,用于获取所述内存中的已激活内存页;
所述确定单元502,用于确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令;所述M个缓存队列中的内存访问命令为所述多个IP核发往所述动态内存控制器DMC的用于对所述内存进行访问的命令;M为正整数;
所述仲裁单元503,用于当所述确定单元502确定所述M个输入缓存中维持的M个缓存队列中存在所访问的内存页为所述已激活内存页的目标内存访问命令时,将所述目标内存访问命令输出至所述调度器的待处理队列中。
可选的,所述内存访问单元504,用于在所述仲裁单元503将所述目标内存访问命令输出至所述调度器的待处理队列中之后,执行所述待处理队列中所访问的内存页为所述已激活内存页的内存访问命令,对所述已激活内存页进行内存访问。
可选的,所述确定单元502确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令,具体为:获取所述M个输入缓存中维持的M个缓存队列中的N条内存访问命令的命令信息,所述命令信息包括所访问的内存地址;N为正整数;确定所述N条内存访问命令中是否存在所访问的内存地址位于所述已激活内存页的目标内存访问命令。
可选的,所述确定单元502确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令,具体为:所述M个输入缓存中维持的M个缓存队列中的N条内存访问命令的命令信息,所述命令信息包括所访问的内存页的标识;N为正整数;确定所述N条内存访问命令中是否存在所访问的内存页的标识为所述已激活内存页的页标识的目标内存访问命令。
可选的,所述获取单元501,还用于在获取所述内存中的已激活内存页之后,获取所述已激活内存页的持续空闲时长;
所述确定单元502,还用于在所述已激活内存页的持续空闲时长小于预设时长阈值的情况下,确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令,所述预设时长阈值为所述已激活内存页的空闲时长上限减去第一时长,所述第一时长为所述仲裁单元503执行将所述目标内存访问命令输出至所述调度器的待处理队列中的步骤的预期时长。
可选的,该调度器50还包括关闭单元505。
所述关闭单元505,用于在所述已激活内存页的持续空闲时长大于或等于所述预设时长阈值的情况下,关闭所述已激活内存页,将所述已激活内存页从激活状态变为关闭状态。
可选的,所述确定单元502,还用于在所述获取单元501获取所述内存中的已激活内存页之后,确定所述调度器的待处理队列中是否存在所访问的内存页为所述已激活内存页的内存访问命令;
所述确定单元502,还用于在所述调度器的待处理队列中不存在所访问的内存页为所述已激活内存页的内存访问命令的情况下,确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令。可选的,所述内存访问单元504,还用于在所述确定单元502确定所述调度器的待处理队列中存在所访问的内存页为所述已激活内存页的内存访问命令的情况下,执行所述待处理队列中所访问的内存页为所述已激活内存页的内存访问命令,对所述已激活内存页进行内存访问。
可选的,该调度器50还包括激活单元506。
所述激活单元506,用于在所述确定单元502确定所述M个输入缓存中维持的M个缓存队列中不存在所访问的内存页为所述已激活内存页的目标内存访问命令的情况下,激活所述待处理队列中预设数量的内存访问命令所访问的内存页。
可以理解,在其它实施方式中DMC 500可以包括调度器50、获取单元501、确定单元502、仲裁单元503、内存访问单元504、关闭单元505和激活单元506。图5中,以调度器50包括获取单元501、确定单元502、仲裁单元503、关闭单元505和激活单元506进行示例。
实施图5所示的动态内存控制器,当内存中有已激活内存页时,DMC可以让未进入调度器的待处理队列中的所访问的内存页为该已激活内存页的内存访问命令优先进入该待处理队列,优先对所访问的内存页为该已激活内存页的内存访问命令进行处理,避免该已激活内存页被频繁激活,从而提高内存的利用率。
请参阅图6,图6是本申请实施例公开的另一种DMC的结构示意图。如图6所示,该DMC600包括处理单元601、存储单元602、调度器603和内存访问单元604,其中,DMC600还可以包括总线605,处理单元601、存储单元602、调度器603和内存访问单元604可以通过总线605相互连接,总线605可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。总线605可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储单元602用于存储包含指令的一个或多个程序;处理单元601用于调用存储在存储单元602中的指令执行上述图2至图3中的部分或全部方法步骤。
其中,处理单元601和存储单元602可以独立的器件,也可以集成到调度器603内,本申请实施例不做限定。图6以处理单元601和存储单元602为独立的器件进行示例。
实施图6所示的动态内存控制器,当内存中有已激活内存页时,DMC可以让未进入调度器的待处理队列中的所访问的内存页为该已激活内存页的内存访问命令优先进入该待处理队列,优先对所访问的内存页为该已激活内存页的内存访问命令进行处理,避免该已激活内存页被频繁激活,从而提高内存的利用率。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种内存访问方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种内存访问方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种内存访问方法,其特征在于,所述方法应用于片上系统,所述片上系统包括多个IP核、M个输入缓存、内存、DMC,所述DMC包括调度器,所述方法包括:
所述DMC获取所述内存中的已激活内存页;
所述DMC确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令;所述M个缓存队列中的内存访问命令为所述多个IP核发往所述DMC的用于对所述内存进行访问的命令;M为正整数;
若是,所述DMC将所述目标内存访问命令输出至所述调度器的待处理队列中。
2.根据权利要求1所述的方法,其特征在于,所述DMC确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令,包括:
所述DMC获取所述M个输入缓存中维持的M个缓存队列中的N条内存访问命令的命令信息,所述命令信息包括所访问的内存地址;N为正整数;
所述DMC确定所述N条内存访问命令中是否存在所访问的内存地址位于所述已激活内存页的目标内存访问命令。
3.根据权利要求1或2所述的方法,其特征在于,所述DMC将所述目标内存访问命令输出至所述调度器的待处理队列中之后,所述方法还包括:
所述DMC执行所述待处理队列中所访问的内存页为所述已激活内存页的内存访问命令,对所述已激活内存页进行内存访问。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述DMC获取所述内存中的已激活内存页之后,所述方法还包括:
所述DMC获取所述已激活内存页的持续空闲时长;
若所述已激活内存页的持续空闲时长小于预设时长阈值,所述DMC执行所述确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令的步骤,所述预设时长阈值为所述已激活内存页的空闲时长上限减去第一时长,所述第一时长为所述DMC执行将所述目标内存访问命令输出至所述调度器的待处理队列中的步骤的预期时长。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述已激活内存页的持续空闲时长大于或等于所述预设时长阈值,所述DMC关闭所述已激活内存页,将所述已激活内存页从激活状态变为关闭状态。
6.根据权利要求1~3任一项所述的方法,其特征在于,所述DMC获取所述内存中的已激活内存页之后,所述DMC确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令之前,所述方法还包括:
所述DMC确定所述调度器的待处理队列中是否存在所访问的内存页为所述已激活内存页的内存访问命令;
若不存在,则所述DMC执行所述确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令的步骤。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述调度器的待处理队列中存在所访问的内存页为所述已激活内存页的内存访问命令,则所述DMC执行所述待处理队列中所访问的内存页为所述已激活内存页的内存访问命令,对所述已激活内存页进行内存访问。
8.一种DMC,其特征在于,所述DMC应用于片上系统,所述DMC包括调度器,所述片上系统包括所述DMC,所述片上系统还包括多个IP核、M个输入缓存、内存,所述DMC包括:
获取单元,用于获取所述内存中的已激活内存页;
确定单元,用于确定所述M个输入缓存中维持的M个缓存队列中是否存在所访问的内存页为所述已激活内存页的目标内存访问命令;所述M个缓存队列中的内存访问命令为所述多个IP核发往所述DMC的用于对所述内存进行访问的命令;M为正整数;
仲裁单元,用于当所述确定单元确定所述M个输入缓存中维持的M个缓存队列中存在所访问的内存页为所述已激活内存页的目标内存访问命令时,将所述目标内存访问命令输出至所述调度器的待处理队列中。
9.一种DMC,其特征在于,包括处理单元和存储单元,所述存储单元用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理单元执行,所述程序包括用于执行如权利要求1~7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910651861.9A CN110399219B (zh) | 2019-07-18 | 2019-07-18 | 内存访问方法、dmc及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910651861.9A CN110399219B (zh) | 2019-07-18 | 2019-07-18 | 内存访问方法、dmc及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399219A true CN110399219A (zh) | 2019-11-01 |
CN110399219B CN110399219B (zh) | 2022-05-17 |
Family
ID=68324685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910651861.9A Active CN110399219B (zh) | 2019-07-18 | 2019-07-18 | 内存访问方法、dmc及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399219B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486681A (zh) * | 2020-11-26 | 2021-03-12 | 迈普通信技术股份有限公司 | 通信方法及网络设备 |
CN115292054A (zh) * | 2022-10-08 | 2022-11-04 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916227A (zh) * | 2010-08-13 | 2010-12-15 | 中兴通讯股份有限公司 | 一种rldram sio存储器访问控制方法和装置 |
US20120036509A1 (en) * | 2010-08-06 | 2012-02-09 | Sonics, Inc | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN102855195A (zh) * | 2011-06-30 | 2013-01-02 | 重庆重邮信科通信技术有限公司 | 第二代低功耗双倍速率存储控制器及访问命令处理方法 |
CN103150216A (zh) * | 2013-02-27 | 2013-06-12 | 东南大学 | 一种SoC集成的多端口DDR2/3调度器及调度方法 |
US20130318308A1 (en) * | 2012-05-24 | 2013-11-28 | Sonics, Inc. | Scalable cache coherence for a network on a chip |
US8656093B1 (en) * | 2008-12-01 | 2014-02-18 | Nvidia Corporation | Supporting late DRAM bank hits |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
US20150100723A1 (en) * | 2013-10-08 | 2015-04-09 | Advanced Micro Devices, Inc. | Data processor with memory controller for high reliability operation and method |
CN108027727A (zh) * | 2016-05-25 | 2018-05-11 | 华为技术有限公司 | 内存访问指令的调度方法、装置及计算机系统 |
CN109491785A (zh) * | 2018-10-24 | 2019-03-19 | 龙芯中科技术有限公司 | 内存访问调度方法、装置及设备 |
-
2019
- 2019-07-18 CN CN201910651861.9A patent/CN110399219B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656093B1 (en) * | 2008-12-01 | 2014-02-18 | Nvidia Corporation | Supporting late DRAM bank hits |
US20120036509A1 (en) * | 2010-08-06 | 2012-02-09 | Sonics, Inc | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN101916227A (zh) * | 2010-08-13 | 2010-12-15 | 中兴通讯股份有限公司 | 一种rldram sio存储器访问控制方法和装置 |
CN102855195A (zh) * | 2011-06-30 | 2013-01-02 | 重庆重邮信科通信技术有限公司 | 第二代低功耗双倍速率存储控制器及访问命令处理方法 |
US20130318308A1 (en) * | 2012-05-24 | 2013-11-28 | Sonics, Inc. | Scalable cache coherence for a network on a chip |
CN103150216A (zh) * | 2013-02-27 | 2013-06-12 | 东南大学 | 一种SoC集成的多端口DDR2/3调度器及调度方法 |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
US20150100723A1 (en) * | 2013-10-08 | 2015-04-09 | Advanced Micro Devices, Inc. | Data processor with memory controller for high reliability operation and method |
CN108027727A (zh) * | 2016-05-25 | 2018-05-11 | 华为技术有限公司 | 内存访问指令的调度方法、装置及计算机系统 |
CN109491785A (zh) * | 2018-10-24 | 2019-03-19 | 龙芯中科技术有限公司 | 内存访问调度方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
高迪: "《高等教育应用型本科人才培养系列教材 计算机系统结构》", 31 October 2018, 哈尔滨工程大学出版社 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486681A (zh) * | 2020-11-26 | 2021-03-12 | 迈普通信技术股份有限公司 | 通信方法及网络设备 |
CN115292054A (zh) * | 2022-10-08 | 2022-11-04 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
CN115292054B (zh) * | 2022-10-08 | 2022-12-06 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110399219B (zh) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1540485B1 (en) | Out of order dram sequencer | |
CN108701081A (zh) | 用于同时存取非易失性存储器的多个分区的设备和方法 | |
CN109522248A (zh) | 存储控制器的操作方法及储存设备的操作方法 | |
US8996818B2 (en) | Bypassing memory requests to a main memory | |
EP3657337B1 (en) | Method, apparatus, device and storage medium for accessing static random access memory | |
CN102810050A (zh) | 日志数据写入方法和日志系统 | |
CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
CN102362464A (zh) | 内存访问监测方法和装置 | |
CN104375895B (zh) | 用于多种存储器间的数据存储调度方法以及装置 | |
CN110399219A (zh) | 内存访问方法、dmc及存储介质 | |
WO2010000101A1 (zh) | 用于嵌入式系统扩展存储空间的装置和方法 | |
CN109359729B (zh) | 一种在fpga上实现缓存数据的系统及方法 | |
CN112948293A (zh) | 一种多用户接口的ddr仲裁器及ddr控制器芯片 | |
CN106681660A (zh) | Io调度方法及io调度装置 | |
CN109426623A (zh) | 一种读取数据的方法及装置 | |
CN105701029B (zh) | 一种异构存储优化方法及装置 | |
CN108958848A (zh) | 近存储器计算体系结构 | |
CN101866277A (zh) | 数据排序方法和装置 | |
CN103488582B (zh) | 写高速缓冲存储器的方法及装置 | |
CN106959936A (zh) | 一种fft的硬件加速实现装置及方法 | |
CN105074677B (zh) | 用于加速器将数据存储在缓冲器中的方法的方法和系统 | |
CN103019657B (zh) | 支持数据预取与重用的可重构系统 | |
CN110515872A (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算系统 | |
CN105612505B (zh) | Cpu调度的方法和装置 | |
CN108572930A (zh) | 缓存控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |