CN106484531A - 内存访问仲裁方法、电路及装置 - Google Patents
内存访问仲裁方法、电路及装置 Download PDFInfo
- Publication number
- CN106484531A CN106484531A CN201610826959.XA CN201610826959A CN106484531A CN 106484531 A CN106484531 A CN 106484531A CN 201610826959 A CN201610826959 A CN 201610826959A CN 106484531 A CN106484531 A CN 106484531A
- Authority
- CN
- China
- Prior art keywords
- access request
- memory access
- message queue
- arbitration circuit
- com1
- 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
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种内存访问仲裁方法、电路及装置,该方法包括:获取应用程序通过通信端口发送的内存访问请求,所述内存访问请求中包括所述通信端口的标识;将所述内存访问请求缓存至所述通信端口的标识对应的消息队列中;在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理。用于提高内存访问效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种内存访问仲裁方法、电路及装置。
背景技术
目前,计算机中可以安装多种应用程序,各应用程序均可以对计算机的内存进行访问(对内存进行读/写操作),为了避免多个应用程序在进行内存访问时发生冲突,通常采用仲裁电路调节应用程序对内存的访问顺序。
在现有技术中,每一个应用程序和仲裁电路之间设置有通信端口,当应用程序需要访问内存时,应用程序通过与仲裁电路之间的通信端口发送内存访问请求,并将内存访问请求缓存在该通信端口中。仲裁电路轮询各个通信端口,并依次对各个通信端口中访问时刻最早的内存访问请求进行处理,以使相应的应用程序可以对内存进行访问,这样会使得同一应用程序连续发送的内存访问请求被打散,导致访问内存的应用程序频繁发生变化。例如,假设通信端口1中包括连续的内存访问请求req1(1)和req1(2),通信端口2中包括连续的内存访问请求req2(1)和req2(2),通信端口3中包括连续的内存访问请求req3(1)和req3(2),则仲裁电路对通信端口1-通信端口3进行轮询,确定对各内存访问请求进行的处理顺序为:req1(1)、req2(1)、req3(1)、req1(2)、req2(2)和req3(2),使得各个应用程序发送的连续内存访问请求被打散。
然而,在现有技术中,应用程序需要通过内存行对内存进行访问,不同应用程序对应的内存行不同,当访问内存的应用程序发生变化时,则需要进行内存行切换,而内存行切换需要耗费较多时长,进而导致内存访问效率低下。
发明内容
本发明实施例提供一种内存访问仲裁方法、电路及装置,用于提高内存访问效率。
第一方面,本发明实施例提供一种内存访问仲裁方法,包括:
获取应用程序通过通信端口发送的内存访问请求,所述内存访问请求中包括所述通信端口的标识;
将所述内存访问请求缓存至所述通信端口的标识对应的消息队列中;
在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理。
在一种可能的实施方式中,所述获取应用程序发送的内存访问请求,包括:
查询所述通信端口;
在确定所述通信端口存在所述内存访问请求时,在所述通信端口获取所述内存访问请求。
在另一种可能的实施方式中,在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理,包括:
若所述消息队列中的内存访问请求的个数大于预设阈值,或者,所述消息队列中最后一个内存访问请求的类型的终止访问类型,或者,所述消息队列中存在大于预设时延的内存访问请求时,则确定所述消息队列中的内存访问请求满足预设处理条件;
按照所述消息队列中内存访问请求的排列顺序,依次授权所述消息队列中的各内存访问请求对内存进行访问。
在另一种可能的实施方式中,所述依次对所述消息队列中的所有内存访问请求进行处理,包括:
获取所述消息队列中包括的内存访问请求的个数;
将所述消息队列中包括的内存访问请求的个数确定为连续处理个数;
对所述消息队列中位于队首的内存访问请求进行处理,将所述位于队首的内存访问请求移出所述消息队列,将所述连续处理个数减一,直至所述连续处理个数为零。
在另一种可能的实施方式中,在获取应用程序通过通信端口发送的内存访问请求之后,还包括:
判断所述内存访问请求是否为紧急内存访问请求;
若是,则通过紧急访问通道对所述内存访问请求进行处理。
第二方面,本发明实施例提供一种内存访问仲裁电路,包括第一仲裁电路和第二仲裁电路,所述第一仲裁电路的输入端与各应用程序对应的通信端口耦接,所述第一仲裁电路的输出端与消息缓存区耦接,所述第二仲裁电路的输入端与所述消息缓存区耦接,所述第二仲裁电路的输出端与内存访问总线耦接,其中,
所述第一仲裁电路用于,在各所述通信端口获取内存访问请求,并将所述内存访问请求缓存至所述消息缓存区中、所述通信端口对应消息队列中;
所述第二仲裁电路用于,在所述消息缓存区中第一消息队列中的内存访问请求满足预设处理条件时,依次对所述第一消息队列中的所有内存访问请求进行处理,所述第一消息队列为所述消息缓存区中的任意一个消息队列。
在一种可能的实施方式中,所述第二仲裁电路具体用于:
分别判断所述消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件;
在确定所述第一消息队列中的内存访问请求满足预设处理条件时,依次对所述第一消息队列中的所有内存访问请求进行处理。
在另一种可能的实施方式中,所述第一仲裁线路还用于:
在所述第一仲裁电路将内存访问请求缓存至第一消息队列中之后,判断所述第一消息队列中的内存访问请求是否满足预设处理条件;
在确定所述第一消息队列中的内存访问请求满足预设处理条件时,向所述第二仲裁电路发送处理通知,所述处理通知中包括所述第一消息队列的标识;
相应的,所述第二仲裁电路具体用于:
接收所述第一仲裁电路发送的所述处理通知,并根据所述处理通知依次对所述第一消息队列中的所有内存访问请求进行处理,所述第一消息队列为所述消息缓存区中的任意一个消息队列。
在另一种可能的实施方式中,所述内存访问仲裁电路还包括判断电路,所述判断电路与所述消息缓存区和所述第二仲裁电路耦接,其中,
所述判断电路用于分别判断所述消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件;
在所述判断电路确定所述第一消息队列中的内存访问请求满足预设处理条件时,向所述第二仲裁电路发送处理通知,所述处理通知中包括所述第一消息队列的标识;
相应的,所述第二仲裁电路具体用于:
接收所述判断电路发送的所述处理通知,并根据所述处理通知依次对所述第一消息队列中的所有内存访问请求进行处理,所述第一消息队列为所述消息缓存区中的任意一个消息队列。
在另一种可能的实施方式中,所述内存访问仲裁电路还包括紧急访问通道,所述紧急访问通道的一端与所述第一仲裁电路的输入端连接,所述紧急访问通道的另一端与所述内存访问总线连接,其中,
所述紧急访问通道用于,在所述第一仲裁电路获取到紧急内存访问请求时,向所述内存访问总线传输所述紧急内存访问请求。
在另一种可能的实施方式中,所述第一仲裁电路具体用于:
按照轮询方式依次查询各所述通信端口,并分别获取各所述通信端口中访问时刻最早的内存访问请求;
确定各所述通信端口对应的消息队列;
分别将各所述访问时刻最早的内存访问请求缓存至对应的消息队列中。
在另一种可能的实施方式中,所述预设处理条件为如下条件中的任意一种:
所述消息队列中的内存访问请求的个数大于预设阈值;
所述消息队列中最后一个内存访问请求的类型的终止访问类型;
所述消息队列中存在大于预设时延的内存访问请求。
第三方面,本发明实施例提供一种内存访问仲裁装置,包括:
获取模块,用于获取应用程序通过通信端口发送的内存访问请求,所述内存访问请求中包括所述通信端口的标识;
缓存模块,用于将所述内存访问请求缓存至所述通信端口的标识对应的消息队列中;
处理模块,用于在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理。
在一种可能的实施方式中,所述获取模块具体用于:
查询所述通信端口;
在确定所述通信端口存在所述内存访问请求时,在所述通信端口获取所述内存访问请求。
在另一种可能的实施方式中,所述处理模块具体用于:
若所述消息队列中的内存访问请求的个数大于预设阈值,或者,所述消息队列中最后一个内存访问请求的类型的终止访问类型,或者,所述消息队列中存在大于预设时延的内存访问请求时,则确定所述消息队列中的内存访问请求满足预设处理条件;
按照所述消息队列中内存访问请求的排列顺序,依次授权所述消息队列中的各内存访问请求对内存进行访问。
在另一种可能的实施方式中,所述处理模块具体用于:
获取所述消息队列中包括的内存访问请求的个数;
将所述消息队列中包括的内存访问请求的个数确定为连续处理个数;
对所述消息队列中位于队首的内存访问请求进行处理,将所述位于队首的内存访问请求移出所述消息队列,将所述连续处理个数减一,直至所述连续处理个数为零。
在另一种可能的实施方式中,所述装置还包括判断模块,其中,
所述判断模块用于,在所述获取模块获取应用程序通过通信端口发送的内存访问请求之后,判断所述内存访问请求是否为紧急内存访问请求;
相应的,所述处理模块用于,在所述判断模块判断所述内存访问请求为紧急内存访问请求时,通过紧急访问通道对所述内存访问请求进行处理。
本发明实施例提供的内存访问仲裁方法、电路及装置,在仲裁装置获取得到应用程序通过通信端口发送的内存访问请求之后,仲裁装置将内存访问请求缓存至通信端口的标识对应的消息队列中,并在确定消息队列中的内存访问请求满足预设处理条件时,依次对消息队列中的所有内存访问请求进行处理。在上述过程中,在消息队列中的内存访问请求满足预设处理条件时,仲裁装置可以集中对一个消息队列中的内存访问请求进行处理,进而使得应用程序可以连续对内存进行访问,减少内存访问过程中内存行的切换次数,进而提高内存的访问效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的内存访问仲裁方法的应用场景示意图;
图2为本发明提供的内存访问仲裁方法的流程示意图;
图3为本发明提供的对内存访问请求进行处理方法的流程示意图;
图4为本发明提供的内存访问仲裁电路的结构示意图一;
图5为本发明提供的内存访问仲裁电路的结构示意图二;
图6为本发明提供的内存访问仲裁装置的结构示意图一;
图7为本发明提供的内存访问仲裁装置的结构示意图二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的内存访问仲裁方法的应用场景示意图,请参见图1,包括多个应用程序(101-1至101-N)、内存访问仲裁装置102及内存103。其中,每一个应用程序和内存访问仲裁装置102之间设置至少一个通信端口,内存访问仲裁装置102和内存103之间设置有内存访问总线。
当应用程序需要访问内存103时,应用程序通过对应的通信端口发送内存访问请求,内存访问请求被缓存至对应的通信端口。内存访问仲裁装置102周期性轮询各个通信端口,并在各个通信端口获取内存访问请求,并对获取到的内存访问请求进行整合处理,将同一端口对应的内存访问请求缓存至同一个消息队列,并在消息队列中的内存访问请求满足预设处理条件时,集中对一个消息队列中的内存访问请求进行处理,进而使得应用程序可以连续对内存进行访问,减少内存访问过程中内存行的切换次数,进而提高内存的访问效率。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本发明提供的内存访问仲裁方法的流程示意图,请参见图2,该方法可以包括:
S201、获取应用程序通过通信端口发送的内存访问请求,内存访问请求中包括通信端口的标识;
S202、将内存访问请求缓存至通信端口的标识对应的消息队列中;
S203、在确定消息队列中的内存访问请求满足预设处理条件时,依次对消息队列中的所有内存访问请求进行处理。
本发明实施例的执行主体可以为内存访问仲裁装置(下文简称仲裁装置)。可选的,该仲裁装置可以通过软件和/或硬件实现。
在本发明实施例中,仲裁装置可以周期性(例如一个时钟)的轮询每一个通信端口,并对通信端口中存在的内存访问请求进行处理。仲裁装置对每一个内存访问请求的处理过程相同,下面,以仲裁装置对任意一个端口中的任意一个内存访问请求的处理过程为例,对内存访问仲裁方法进行详细说明。
在实际应用过程中,仲裁装置查询各个通信端口,并判断该通信端口中是否存在内存访问请求,若是,则在该通信端口中获取内存访问请求,若否,则仲裁装置继续判断下一个通信端口是否存在内存访问请求,依次类推,直到仲裁装置获取得到内存访问请求。
在仲裁装置获取得到内存访问请求之后,根据内存访问请求中包括的通信端口的标识,确定通信端口的标识对应的消息队列,并将该内存访问请求缓存至该消息队列中。其中,每一个通信端口均对应一个消息队列,该消息队列用于缓存通过该通信端口发送的内存访问请求。本领域技术人员可以理解的是,队列具有先进先出的特性,因此,在仲裁装置向消息队列中缓存内存访问请求时,将内存访问请求存放至消息队列队尾。
与此同时,仲裁装置还实时或周期性对各个消息队列中的内存访问请求进行检测,判断各个消息队列中的内存访问请求是否满足预设处理条件,当仲裁装置判断某消息队列中的内存访问请求满足预设条件时,则按照消息队列中内存访问请求的排列顺序,依次对该消息队列中的所有内存访问请求进行处理。可选的,仲裁装置可以对需要处理的内存访问请求消息进行授权,以使发送该内存访问请求消息的应用程序可以根据该内存访问请求对内存进行访问,对内存进行的访问包括对内存的读/写操作。可选的,仲裁装置只要判断消息队列中的内存访问请求满足如下条件中的任意一个,则可以确定消息队列中的内存访问请求满足预设条件:
条件一、消息队列中的内存访问请求的个数大于预设阈值;
条件二、消息队列中最后一个内存访问请求的类型的终止访问类型;
条件三、消息队列中存在大于预设时延的内存访问请求。
在条件一中,当消息队列中的内存访问请求的个数大于预设阈值时,仲裁装置确定该消息队列中的内存访问请求满足预设处理条件,并对该消息队列中的内存访问请求进行处理。可选的,该预设阈值可以为3个、5个等,在实际应用过程中,可以根据实际需要设置该预设阈值。在消息队列中的内存访问请求满足该条件一时对消息队列中的内存访问请求进行处理,可以实现连续对一个应用程序发送的内存访问请求消息进行处理,减少内存行的切换次数,进而提高内存的访问效率。
在条件二中,终止访问类型的内存访问请求是指应用程序发送的最后一个内存访问请求,在应用程序发送完终止访问类型的内存访问请求之后,应用程序可能在预设时段之内不会发送内存访问请求。可选的,为了便于仲裁装置确定内存访问请求的类型,在应用程序发送内存访问请求时,应用程序可以在内存访问请求中携带该内存访问请求的类型。在消息队列中的内存访问请求满足该条件二时对消息队列中的内存访问请求进行处理,可以避免消息队列中的内存访问请求由于不满足条件一而长时间不被处理的问题。
在条件三中,针对每一个消息队列,仲裁装置判断获取消息队列中各内存访问请求的时延,并判断各内存访问请求的时延是否大于预设时延,若是,则确定该消息队列中的内存访问请求满足条件三。可选的,该预设时延可以为30秒等,在实际应用过程中,可以根据实际需要设置该预设时长。在消息队列中的内存访问请求满足该条件三时对消息队列中的内存访问请求进行处理,可以减少对内存访问请求的处理时延,进而提高内存访问效率。
需要说明的是,在实际应用过程中,当仲裁装置判断消息队列中的内存访问请求满足上述三个条件中的任意一个时,仲裁装置可以直接确定消息队列中的内存访问请求满足预设处理条件,并不再继续判断内存访问请求是否还满足其它两个条件。
还需要说明的是,预设处理条件还可以包括其它条件,可以根据实际需要设置预设处理条件,本发明对此不作具体限定。
下面,通过具体示例,对图2实施例所示的方法进行详细说明。
示例性的,假设终端设备中包括三个应用程序,分别记为应用程序1-应用程序3,该三个应用程序与仲裁装置之间分别设置有一个通信端口,分别记为通信端口1-通信端口3。再假设在当前各通信端口缓存的内存访问请求如表1所示:
表1
通信端口的标识 | 内存访问请求 |
通信端口1 | req1(1)、req1(2)、req1(3)、req1(4)、req1(5) |
通信端口2 | req2(1)、req2(2)、req2(3)、req2(4)、req2(5) |
通信端口3 | req3(1)、req3(2)、req3(3)、req3(4)、req3(5) |
仲裁装置对通信端口1-通信端口3进行轮询,依次获取各个通信端口中的内存访问请求,其中,仲裁装置按照轮询方式获取得到的内存访问请求的顺序如下:
req1(1)、req2(1)、req3(1)、req1(2)、req2(2)、req3(2)、req1(3)、req2(3)、req3(3)、req1(4)、req2(4)、req3(4)、req1(5)、req2(5)、req3(5)。
仲裁装置在获取的每一个内存访问请求之后,均将该内存访问请求缓存在对应的消息队列中,具体的,在仲裁装置对各个内存访问请求存放至对应的消息队列中之后,各个消息队列中的内存访问请求可以如表2所示:
表2
消息队列 | 内存访问请求 |
消息队列1 | req1(1)、req1(2)、req1(3)、req1(4)、req1(5) |
消息队列2 | req2(1)、req2(2)、req2(3)、req2(4)、req2(5) |
消息队列3 | req3(1)、req3(2)、req3(3)、req3(4)、req3(5) |
仲裁装置还实时判断各消息队列中的内存访问请求是否满足预设处理条件,若是,则集中对一个消息队列中的内存访问请求进行处理,以使得应用程序可以连续对内存进行访问。
本发明实施例提供的内存访问仲裁方法,在仲裁装置获取得到应用程序通过通信端口发送的内存访问请求之后,仲裁装置将内存访问请求缓存至通信端口的标识对应的消息队列中,并在确定消息队列中的内存访问请求满足预设处理条件时,依次对消息队列中的所有内存访问请求进行处理。在上述过程中,在消息队列中的内存访问请求满足预设处理条件时,仲裁装置可以集中对一个消息队列中的内存访问请求进行处理,进而使得应用程序可以连续对内存进行访问,减少内存访问过程中内存行的切换次数,进而提高内存的访问效率。
在图2所示实施例的基础上,可选的,仲裁装置可以通过如下可行的实现方式依次对消息队列中的所有内存访问请求进行处理(图2所示实施例中的S203),具体的,请参见图3所示的实施例。
图3为本发明提供的对内存访问请求进行处理方法的流程示意图,请参见图3,该方法可以包括:
S301、获取消息队列中包括的内存访问请求的个数;
S302、将消息队列中包括的内存访问请求的个数确定为连续处理个数;
S303、对消息队列中位于队首的内存访问请求进行处理,将位于队首的内存访问请求移出消息队列,将连续处理个数减一,直至连续处理个数为零。
在图3所示的实施例中,当仲裁装置需要对一个消息队列中的内存访问请求进行处理时,仲裁装置先获取消息队列中包括的内存访问请求的个数,并将消息队列中包括的内存访问请求的个数确定为连续处理个数。
仲裁装置对消息队列中位于队首的内存访问请求进行处理,并将位于对队首的内存访问请求移出消息队列,并将连续处理个数减一,重复该过程,直至连续处理个数为零。
下面,通过具体示例,对图3实施例所示的方法进行详细说明。
示例性的,假设当消息队列中的内存访问请求个数达到3个时,则集中对消息队列中的内存访问请求消息进行处理。假设消息队列1中的内存访问请求如表3所示:
表3
内存访问请求3 | 内存访问请求2 | 内存访问请求1 |
在表3所示的消息队列1中,右侧为队首,左侧为队尾。在仲裁装置判断消息队列1中的内存访问请求个数等于3时,仲裁装置开始对消息队列1中内存访问请求进行处理。具体的:
仲裁装置获取消息队列1中的内存访问请求个数3,并确定连续处理个数count=3,仲裁装置对位于队首的内存访问请求1进行处理,使得应用程序可以根据内存访问请求1对内存进行访问,并将位于队首的内存访问请求移出消息队列1,并将连续处理个数count减一,此时,count=2,消息队列1如表4所示:
表4
内存访问请求3 | 内存访问请求2 |
仲裁装置判断连续处理个数count=2(不等于零),则仲裁装置继续对位于队首的内存访问请求2进行处理,使得应用程序可以根据内存访问请求2对内存进行访问,并将内存访问请求2移出消息队列1,并将连续处理个数count减一,此时,count=1。再假设仲裁装置对内存访问请求2进行处理的过程中,消息队列1中又新增了新的内存访问请求4,则消息队列1如表5所示:
表5
内存访问请求4 | 内存访问请求3 |
仲裁装置判断连续处理个数count=1(不等于零),则仲裁装置继续对位于队首的内存访问请求3进行处理,使得应用程序可以根据内存访问请求3对内存进行访问,并将内存访问请求3移出消息队列1,并将连续处理个数count减一,此时,count=0,消息队列1如表6所示:
表6
内存访问请求4 |
仲裁装置判断连续处理个数count=0,则仲裁装置停止对消息队列1中的内存访问请求进行处理。
在图3所示的实施例中,由于消息队列中随时会增加新的内存访问请求,通过上述方法可以保证对正确的内存访问处理请求进行处理。
在上述任意一个实施例的基础上,可选的,在仲裁装置和内存访问总线之间还可以设置紧急访问通道,相应的,在仲裁装置获取到内存访问请求之后,仲裁装置可以判断该内存访问请求是否为紧急内存访问请求,若是,则通过紧急访问通道对内存访问请求进行处理。可选的,仲裁装置可以直接将该紧急内存访问请求发送至内存访问总线中,以使紧急内存访问请求对应的应用程序可以直接根据该紧急内存访问请求对内存进行访问,这样,无需对该紧急内存访问请求进行多次缓存,减少了对紧急内存访问请求的处理时延。
图4为本发明提供的内存访问仲裁电路的结构示意图一,请参见图4,该内存访问仲裁电路可以包括第一仲裁电路401和第二仲裁电路402,第一仲裁电路401的输入端与各应用程序对应的通信端口耦接,第一仲裁电路401的输出端与消息缓存区耦接,第二仲裁电路402的输入端与消息缓存区耦接,第二仲裁电路402的输出端与内存访问总线耦接,其中,
第一仲裁电路401用于,在各通信端口获取内存访问请求,并将内存访问请求缓存至消息缓存区中、通信端口对应消息队列中;
第二仲裁电路402用于,在消息缓存区中第一消息队列中的内存访问请求满足预设处理条件时,依次对第一消息队列中的所有内存访问请求进行处理,第一消息队列为消息缓存区中的任意一个消息队列。
在图4所示的实施例中,耦接是指两个设备之间通过有线连接、或者两个设置可以通过预设指令进行相互访问。可选的,消息缓存区可以为计算机中的一个存储区域,在消息缓存区中包括各通信端口对应的消息队列。需要说明的是,本发明实施例所示的预设处理条件和图2实施例中所示的预设处理条件相同,此处不再进行赘述。
在实际应用过程中,第一仲裁电路的输入端与各个通信端口耦接,第一仲裁电路可以对各个通信端口进行轮询,以判断各个通信端口是否存在内存访问请求,若是,可以分别获取各通信端口中访问时刻最早的内存访问请求,确定各通信端口对应的消息队列,分别将各访问时刻最早的内存访问请求缓存至对应的消息队列中。。需要说明的是,第一仲裁电路获取内存访问请求、及将内存访问请求缓存至消息队列的过程,与图2所示实施例中仲裁装置获取内存访问请求、及将内存访问请求缓存至消息队列的过程相同,此处不再进行赘述。
第二仲裁电路的输入端与与消息缓存区耦接,在消息缓存区中的第一消息队列中的内存访问请求满足预设处理条件时,依次对第一消息队列中的所有内存访问请求进行处理。具体的,第二仲裁电路依次将第一消息队列中的所有内存访问请求发送至内存访问总线,以使应用程序可以根据第一消息队列中的各个内存访问请求对内存进行访问。需要说明的是,第二仲裁电路对第一消息队列中的内存访问请求进行处理的过程,与图2所示实施例中仲裁装置对消息队列中的内存访问请求进行处理的过程相同,此处不再进行赘述。
本发明实施例提供的内存访问仲裁电路,第一仲裁电路可以在各通信端口获取内存访问请求,并将内存访问请求缓存至消息缓存区中、通信端口对应消息队列中,第二仲裁电路可以在消息缓存区中第一消息队列中的内存访问请求满足预设处理条件时,依次对第一消息队列中的所有内存访问请求进行处理,第一消息队列为消息缓存区中的任意一个消息队列。在上述过程中,在消息队列中的内存访问请求满足预设处理条件时,仲裁装置可以集中对一个消息队列中的内存访问请求进行处理,进而使得应用程序可以连续对内存进行访问,减少内存访问过程中内存行的切换次数,进而提高内存的访问效率。
在图4所示实施例的基础上,可选的,可以由第二仲裁电路判断消息队列中的内存访问请求是否满足预设处理条件,也可以由第一仲裁电路判断消息队列中的内存访问请求是否满足预设处理条件,还可以在内存访问仲裁电路中设置专门的判断电路,并由判断电路判断消息队列中的内存访问请求是否满足预设处理条件。当判断消息队列中的内存访问请求是否满足预设处理条件的执行主体不同时,第一仲裁电路和第二仲裁电路的具体处理过程也不同,具体的,请参见如下三种可行的实现方式:
一种可行的实现方式:第二仲裁电路判断消息队列中的内存访问请求是否满足预设处理条件。
在该种可行的实现方式中,第二仲裁电路分别判断消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件,并在确定第一消息队列中的内存访问请求满足预设处理条件时,依次对第一消息队列中的所有内存访问请求进行处理。可选的,第二仲裁电路可以周期性的判断消息队列中的内存访问请求是否满足预设处理条件,可以根据实际需要设置该周期。
在上述过程中,将判断消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件的功能模块集成于第二仲裁电路,可以简化电路的设计。
另一种可行的实现方式:第一仲裁电路判断消息队列中的内存访问请求是否满足预设处理条件。
在该种可行的实现方式中,第一仲裁电路和第二仲裁电路连接,在第一仲裁电路将内存访问请求缓存至第一消息队列中之后,判断第一消息队列中的内存访问请求是否满足预设处理条件;在确定第一消息队列中的内存访问请求满足预设处理条件时,向第二仲裁电路发送处理通知,处理通知中包括第一消息队列的标识;相应的,第二仲裁电路具体用于:接收第一仲裁电路发送的处理通知,并根据处理通知依次对第一消息队列中的所有内存访问请求进行处理,第一消息队列为消息缓存区中的任意一个消息队列。
在上述过程中,将判断消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件的功能模块集成于第一仲裁电路,可以简化电路的设计;进一步的,在第一仲裁电路将内存访问请求缓存至第一消息队列中之后,第一仲裁电路再判断第一消息队列中的内存访问请求是否满足预设处理条件,这样,第一仲裁电路执行的每一次判断操作均为必要的判断操作,进而可以避免执行不必要的判断操作。
再一种可行的实现方式:判断电路判断消息队列中的内存访问请求是否满足预设处理条件。
在该种可行的实现方式中,还需要在内存访问仲裁电路中设置判断电路,具体的,请参见图5所示实施。
图5为本发明提供的内存访问仲裁电路的结构示意图二,在图4所示实施例的基础上,请参见图5,该内存访问仲裁电路还包括判断电路403,判断电路403与消息缓存区和第二仲裁电路耦接。
具体的,判断电路403分别判断消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件,在判断电路确定第一消息队列中的内存访问请求满足预设处理条件时,向第二仲裁电路发送处理通知,处理通知中包括第一消息队列的标识;相应的,第二仲裁电路402具体用于:接收判断电路发送的处理通知,并根据处理通知依次对第一消息队列中的所有内存访问请求进行处理,第一消息队列为消息缓存区中的任意一个消息队列。
在上述过程中,通过在内存访问仲裁电路中设置判断电路,以使该判断电路判断消息队列中的内存访问请求是否满足预设处理条件,对具有不同功能的电路进行单独设置,有利于电路的布局和实现。
在图5所示实施例的基础上,进一步的,内存访问仲裁电路还包括紧急访问通道,紧急访问通道的一端与第一仲裁电路的输入端连接,紧急访问通道的另一端与内存访问总线连接,其中,紧急访问通道用于,在第一仲裁电路获取到紧急内存访问请求时,向内存访问总线传输紧急内存访问请求,这样,无需对该紧急内存访问请求进行多次缓存,减少了对紧急内存访问请求的处理时延。
图6为本发明提供的内存访问仲裁装置的结构示意图一,请参见图6,该装置可以包括:
获取模块601,用于获取应用程序通过通信端口发送的内存访问请求,所述内存访问请求中包括所述通信端口的标识;
缓存模块602,用于将所述内存访问请求缓存至所述通信端口的标识对应的消息队列中;
处理模块603,用于在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理。
本发明实施例所示的内存访问仲裁装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述获取模块601具体用于:
查询所述通信端口;
在确定所述通信端口存在所述内存访问请求时,在所述通信端口获取所述内存访问请求。
在另一种可能的实施方式中,所述处理模块603具体用于:
若所述消息队列中的内存访问请求的个数大于预设阈值,或者,所述消息队列中最后一个内存访问请求的类型的终止访问类型,或者,所述消息队列中存在大于预设时延的内存访问请求时,则确定所述消息队列中的内存访问请求满足预设处理条件;
按照所述消息队列中内存访问请求的排列顺序,依次授权所述消息队列中的各内存访问请求对内存进行访问。
在另一种可能的实施方式中,所述处理模块603具体用于:
获取所述消息队列中包括的内存访问请求的个数;
将所述消息队列中包括的内存访问请求的个数确定为连续处理个数;
对所述消息队列中位于队首的内存访问请求进行处理,将所述位于队首的内存访问请求移出所述消息队列,将所述连续处理个数减一,直至所述连续处理个数为零。
图7为本发明提供的内存访问仲裁装置的结构示意图二,在图6所示实施例的基础上,请参见图7,所述装置还包括判断模块604,其中,
所述判断模块604用于,在所述获取模块获取应用程序通过通信端口发送的内存访问请求之后,判断所述内存访问请求是否为紧急内存访问请求;
相应的,所述处理模块603用于,在所述判断模块604判断所述内存访问请求为紧急内存访问请求时,通过紧急访问通道对所述内存访问请求进行处理。
本发明实施例所示的内存访问仲裁装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (11)
1.一种内存访问仲裁方法,其特征在于,包括:
获取应用程序通过通信端口发送的内存访问请求,所述内存访问请求中包括所述通信端口的标识;
将所述内存访问请求缓存至所述通信端口的标识对应的消息队列中;
在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理。
2.根据权利要求1所述的方法,其特征在于,在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理,包括:
若所述消息队列中的内存访问请求的个数大于预设阈值,或者,所述消息队列中最后一个内存访问请求的类型的终止访问类型,或者,所述消息队列中存在大于预设时延的内存访问请求时,则确定所述消息队列中的内存访问请求满足预设处理条件;
按照所述消息队列中内存访问请求的排列顺序,依次授权所述消息队列中的各内存访问请求对内存进行访问。
3.根据权利要求1或2所述的方法,其特征在于,所述依次对所述消息队列中的所有内存访问请求进行处理,包括:
获取所述消息队列中包括的内存访问请求的个数;
将所述消息队列中包括的内存访问请求的个数确定为连续处理个数;
对所述消息队列中位于队首的内存访问请求进行处理,将所述位于队首的内存访问请求移出所述消息队列,将所述连续处理个数减一,直至所述连续处理个数为零。
4.根据权利要求1或2所述的方法,其特征在于,在获取应用程序通过通信端口发送的内存访问请求之后,还包括:
判断所述内存访问请求是否为紧急内存访问请求;
若是,则通过紧急访问通道对所述内存访问请求进行处理。
5.一种内存访问仲裁电路,其特征在于,包括第一仲裁电路和第二仲裁电路,所述第一仲裁电路的输入端与各应用程序对应的通信端口耦接,所述第一仲裁电路的输出端与消息缓存区耦接,所述第二仲裁电路的输入端与所述消息缓存区耦接,所述第二仲裁电路的输出端与内存访问总线耦接,其中,
所述第一仲裁电路用于,在各所述通信端口获取内存访问请求,并将所述内存访问请求缓存至所述消息缓存区中、所述通信端口对应消息队列中;
所述第二仲裁电路用于,在所述消息缓存区中第一消息队列中的内存访问请求满足预设处理条件时,依次对所述第一消息队列中的所有内存访问请求进行处理,所述第一消息队列为所述消息缓存区中的任意一个消息队列。
6.根据权利要求5所述的电路,其特征在于,所述第二仲裁电路具体用于:
分别判断所述消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件;
在确定所述第一消息队列中的内存访问请求满足预设处理条件时,依次对所述第一消息队列中的所有内存访问请求进行处理。
7.根据权利要求5所述的电路,其特征在于,所述第一仲裁线路还用于:
在所述第一仲裁电路将内存访问请求缓存至第一消息队列中之后,判断所述第一消息队列中的内存访问请求是否满足预设处理条件;
在确定所述第一消息队列中的内存访问请求满足预设处理条件时,向所述第二仲裁电路发送处理通知,所述处理通知中包括所述第一消息队列的标识;
相应的,所述第二仲裁电路具体用于:
接收所述第一仲裁电路发送的所述处理通知,并根据所述处理通知依次对所述第一消息队列中的所有内存访问请求进行处理,所述第一消息队列为所述消息缓存区中的任意一个消息队列。
8.根据权利要求5所述的电路,其特征在于,所述内存访问仲裁电路还包括判断电路,所述判断电路与所述消息缓存区和所述第二仲裁电路耦接,其中,
所述判断电路用于分别判断所述消息缓存区中各消息队列中的内存访问请求是否满足预设处理条件;
在所述判断电路确定所述第一消息队列中的内存访问请求满足预设处理条件时,向所述第二仲裁电路发送处理通知,所述处理通知中包括所述第一消息队列的标识;
相应的,所述第二仲裁电路具体用于:
接收所述判断电路发送的所述处理通知,并根据所述处理通知依次对所述第一消息队列中的所有内存访问请求进行处理,所述第一消息队列为所述消息缓存区中的任意一个消息队列。
9.根据权利要求5-8任一项所述的电路,其特征在于,所述内存访问仲裁电路还包括紧急访问通道,所述紧急访问通道的一端与所述第一仲裁电路的输入端连接,所述紧急访问通道的另一端与所述内存访问总线连接,其中,
所述紧急访问通道用于,在所述第一仲裁电路获取到紧急内存访问请求时,向所述内存访问总线传输所述紧急内存访问请求。
10.根据权利要求5-8任一项所述的电路,其特征在于,所述预设处理条件为如下条件中的任意一种:
所述消息队列中的内存访问请求的个数大于预设阈值;
所述消息队列中最后一个内存访问请求的类型的终止访问类型;
所述消息队列中存在大于预设时延的内存访问请求。
11.一种内存访问仲裁装置,其特征在于,包括:
获取模块,用于获取应用程序通过通信端口发送的内存访问请求,所述内存访问请求中包括所述通信端口的标识;
缓存模块,用于将所述内存访问请求缓存至所述通信端口的标识对应的消息队列中;
处理模块,用于在确定所述消息队列中的内存访问请求满足预设处理条件时,依次对所述消息队列中的所有内存访问请求进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610826959.XA CN106484531B (zh) | 2016-09-18 | 2016-09-18 | 内存访问仲裁方法、电路及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610826959.XA CN106484531B (zh) | 2016-09-18 | 2016-09-18 | 内存访问仲裁方法、电路及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484531A true CN106484531A (zh) | 2017-03-08 |
CN106484531B CN106484531B (zh) | 2019-12-24 |
Family
ID=58267338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610826959.XA Active CN106484531B (zh) | 2016-09-18 | 2016-09-18 | 内存访问仲裁方法、电路及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484531B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343961A (zh) * | 2018-10-12 | 2019-02-15 | Oppo广东移动通信有限公司 | 内存信息的处理方法、装置、存储介质及终端 |
CN109491785A (zh) * | 2018-10-24 | 2019-03-19 | 龙芯中科技术有限公司 | 内存访问调度方法、装置及设备 |
WO2022021446A1 (zh) * | 2020-07-31 | 2022-02-03 | 华为技术有限公司 | 一种内存保护方法及保护代理控制装置 |
CN115269467A (zh) * | 2022-09-29 | 2022-11-01 | 沐曦科技(成都)有限公司 | 一种总线仲裁的方法、装置、存储介质及电子设备 |
CN116719755A (zh) * | 2023-08-10 | 2023-09-08 | 浪潮电子信息产业股份有限公司 | 一种多应用内存访问的方法、装置、设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344871A (zh) * | 2008-08-20 | 2009-01-14 | 北京中星微电子有限公司 | 一种保证访问先后顺序的总线仲裁单元及其实现方法 |
CN102236622A (zh) * | 2010-04-30 | 2011-11-09 | 中兴通讯股份有限公司 | 提高动态存储器带宽利用率的动态存储器控制器及方法 |
CN102402422A (zh) * | 2010-09-10 | 2012-04-04 | 北京中星微电子有限公司 | 处理器组件及该组件内存共享的方法 |
CN102521049A (zh) * | 2011-11-18 | 2012-06-27 | 清华大学 | 多核间内存调度方法 |
CN104252422A (zh) * | 2013-06-26 | 2014-12-31 | 华为技术有限公司 | 内存访问方法和内存控制器 |
CN105260331A (zh) * | 2015-10-09 | 2016-01-20 | 天津国芯科技有限公司 | 一种双总线内存控制器 |
-
2016
- 2016-09-18 CN CN201610826959.XA patent/CN106484531B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344871A (zh) * | 2008-08-20 | 2009-01-14 | 北京中星微电子有限公司 | 一种保证访问先后顺序的总线仲裁单元及其实现方法 |
CN102236622A (zh) * | 2010-04-30 | 2011-11-09 | 中兴通讯股份有限公司 | 提高动态存储器带宽利用率的动态存储器控制器及方法 |
CN102402422A (zh) * | 2010-09-10 | 2012-04-04 | 北京中星微电子有限公司 | 处理器组件及该组件内存共享的方法 |
CN102521049A (zh) * | 2011-11-18 | 2012-06-27 | 清华大学 | 多核间内存调度方法 |
CN104252422A (zh) * | 2013-06-26 | 2014-12-31 | 华为技术有限公司 | 内存访问方法和内存控制器 |
CN105260331A (zh) * | 2015-10-09 | 2016-01-20 | 天津国芯科技有限公司 | 一种双总线内存控制器 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343961A (zh) * | 2018-10-12 | 2019-02-15 | Oppo广东移动通信有限公司 | 内存信息的处理方法、装置、存储介质及终端 |
CN109343961B (zh) * | 2018-10-12 | 2021-07-09 | Oppo广东移动通信有限公司 | 内存信息的处理方法、装置、存储介质及终端 |
CN109491785A (zh) * | 2018-10-24 | 2019-03-19 | 龙芯中科技术有限公司 | 内存访问调度方法、装置及设备 |
CN109491785B (zh) * | 2018-10-24 | 2021-01-26 | 龙芯中科技术股份有限公司 | 内存访问调度方法、装置及设备 |
WO2022021446A1 (zh) * | 2020-07-31 | 2022-02-03 | 华为技术有限公司 | 一种内存保护方法及保护代理控制装置 |
CN115269467A (zh) * | 2022-09-29 | 2022-11-01 | 沐曦科技(成都)有限公司 | 一种总线仲裁的方法、装置、存储介质及电子设备 |
CN115269467B (zh) * | 2022-09-29 | 2023-01-10 | 沐曦科技(成都)有限公司 | 一种总线仲裁的方法、装置、存储介质及电子设备 |
CN116719755A (zh) * | 2023-08-10 | 2023-09-08 | 浪潮电子信息产业股份有限公司 | 一种多应用内存访问的方法、装置、设备 |
CN116719755B (zh) * | 2023-08-10 | 2023-11-07 | 浪潮电子信息产业股份有限公司 | 一种多应用内存访问的方法、装置、设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106484531B (zh) | 2019-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484531A (zh) | 内存访问仲裁方法、电路及装置 | |
CN102282546B (zh) | 资源控制 | |
CN105706403B (zh) | 片上网络与片上网络中发送数据的方法 | |
CN105095109B (zh) | 缓存访问方法、缓存访问路由器和计算机系统 | |
CN101604295A (zh) | 优化基于目录的一致性协议中的并发访问 | |
US20140173221A1 (en) | Cache management | |
US9208085B2 (en) | Method and apparatus for storing data | |
CN106155814A (zh) | 一种支持多种工作模式的可重构运算单元及其工作方式 | |
CN101669096A (zh) | 存储器访问控制装置 | |
CN110474842A (zh) | 一种通信方法、客户终端设备及传输网络 | |
CN104765701B (zh) | 数据访问方法及设备 | |
KR20160099722A (ko) | 캐시-코히어런시를 갖춘 집적 회로들 | |
US20120089759A1 (en) | Arbitrating Stream Transactions Based on Information Related to the Stream Transaction(s) | |
CN104461957A (zh) | 一种异构多核cpu共享片上高速缓存的方法及装置 | |
CN102866923A (zh) | 对称多核的高效一致性侦听过滤装置 | |
CN105824604B (zh) | 多输入多输出处理器流水线数据同步装置及方法 | |
JP4846482B2 (ja) | バスアービトレーション装置 | |
US10917198B2 (en) | Transfer protocol in a data processing network | |
CN104991745B (zh) | 一种存储系统数据写入方法和系统 | |
CN106293500A (zh) | 一种写操作控制方法、装置及系统 | |
CN104488198B (zh) | 用于确定表征备用位置的数目的参数的方法和设备 | |
CN107667357B (zh) | 用于分离突发带宽仲裁的方法及设备 | |
US9665518B2 (en) | Methods and systems for controlling ordered write transactions to multiple devices using switch point networks | |
KR100837712B1 (ko) | 요청 송신 제어 장치 및 요청 송신 제어 방법 | |
CN117980889A (zh) | 用于管理预取事务的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |