CN105637475B - 并行访问方法及系统 - Google Patents
并行访问方法及系统 Download PDFInfo
- Publication number
- CN105637475B CN105637475B CN201480022122.9A CN201480022122A CN105637475B CN 105637475 B CN105637475 B CN 105637475B CN 201480022122 A CN201480022122 A CN 201480022122A CN 105637475 B CN105637475 B CN 105637475B
- Authority
- CN
- China
- Prior art keywords
- buffer queue
- scheduling
- component
- weight
- write access
- 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.)
- Active
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种并行访问方法及系统,适用于多部件并发处理场景,该系统包括:对于多部件中的每一部件,用于通过其对应的访问接口执行对高速模块的写访问操作,部件与访问接口是一一对应的,多个访问接口间并行设置,高速模块为多部件的共享资源;调度组件,用于根据预设的调度方式,将各访问接口所接收的写访问操作调度给高速模块处理。本发明实施例通过并行设置多个访问接口,使访问接口与部件之间一一对应,部件将写访问操作通知给其对应的访问接口后即可执行其他操作,从而无需等待,提升了多核处理器的核资源利用率;有效避免了多部件因抢锁导致的时间浪费,从而提高了单核的数据处理能力,进而提高多核处理器的处理效率。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种并行访问方法及系统。
背景技术
随着技术革新的发展,处理器的应用渗透到现代社会的各个层面。在单核处理器时代,由于只有一个核(core),处理器内部所有的资源,包括各种接口、内部的加速器等,都等待这一个核的操作,在该核不操作此资源时,该资源闲置。
引入多核处理器后,处理器内部所有资源都为多核共享。通常对处理能力要求不高的资源,仅规划一个固定的核访问;或,采用锁操作(lock)将此资源锁定,等某个核操作完该资源后,释放锁(unlock),下一个等待的核才可获取到该资源。而对于多核处理器内的高速模块的访问,如果仍采用锁操作,会使得大量的核处于等待状态,导致核的浪费;另外,操作锁资源,包括对资源的锁定及解锁本身会浪费较多的时间,从而降低了单个核的数据处理能力。
发明内容
本发明实施例提供一种并行访问方法及系统,以提升多核处理器的核资源利用率,并提高单核的数据处理能力。
一方面,本发明实施例提供一种并行访问系统,适用于多部件并发处理场景,所述系统包括:
所述多部件中的每一部件,用于发起写访问操作;
调度组件,用于通过各部件对应的访问接口,接收所述部件发起写访问操作,所述部件与所述访问接口是一一对应的,多个所述访问接口间并行设置;及,根据预设的调度方式,将所述写访问操作调度给所述高速模块处理,所述高速模块为所述多部件的共享资源。
在第一方面的第一种可能的实现方式中,所述系统还包括:
存储器,用于存储缓存队列,所述缓存队列用于存储所述写访问操作,每一访问接口对应一缓存队列;
所述访问接口,还用于检测各所述缓存队列是否已满,若确定所述缓存队列已满,则对所述部件实施反压操作,所述反压操作用于指示所述部件在等待预设周期后再执行写访问操作;否则,待所述写访问操作写入完成后,将所述写访问操作存储到所述缓存队列。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述预设的调度方式为优先级调度,所述调度组件具体用于:
所述调度组件根据各所述缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述预设的调度方式为轮询权重调度,所述调度组件具体用于:
所述调度组件根据各所述缓存队列的权重,按公平调度方式顺序调度所述缓存队列,所述权重为其对应缓存队列的长度;
对每一缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该缓存队列对应的权重减一,至权重减到零后,停止对此缓存队列的调度;
当所述调度组件确定所有缓存队列的写访问操作全部调度出去或所有缓存队列的权重归零,恢复各缓存队列的权重并开始下一轮调度。
结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述预设的调度方式为优先级调度和轮询权重调度的混合,所有缓存队列中部分缓存队列配置为优先级缓存队列,剩余部分的混存序列配置为轮询权重缓存队列,所述调度组件具体用于:
对各所述优先级缓存队列,所述调度组件根据所述优先级缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始;
对各所述轮询权重缓存队列,所述调度组件根据所述轮询权重缓存队列的权重,按公平调度方式顺序调度所述轮询权重缓存队列,所述权重为其对应缓存队列中的长度;对每一轮询权重缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该轮询权重缓存队列对应的权重减一,至权重减到零后,停止对此轮询权重缓存队列的调度;当所述调度组件确定所有轮询权重缓存队列的写访问操作全部调度出去或所有轮询权重缓存队列的权重归零,恢复各轮询权重缓存队列的权重并开始下一轮调度。
结合第一方面的第二种可能的实现方式,在第一方面的第五种可能的实现方式中,所述存储器还用于存储保序队列,所述预设的调度方式为保序调度,所述调度组件具体用于:
所述调度组件根据各所述缓存队列中各所述写访问操作的写入顺序,将所述写访问操作调度给所述高速模块处理,其中,所述各所述缓存队列中各所述写访问操作的写入顺序存储在所述保序队列中,所述保序队列的长度大于或等于所有缓存队列长度的总和。
第二方面,本发明实施例提供一种并行访问方法,适用于多部件并发处理场景,所述方法包括:
对于所述多部件中的每一部件,调度组件通过该部件对应的访问接口,接收所述部件发起的写访问操作,所述部件与所述访问接口是一一对应的,多个所述访问接口间并行设置;
所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,所述高速模块为所述多部件的共享资源。
在第二方面的第一种可能的实现方式中,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理之前,所述方法还包括:
所述访问接口检测存储器中其对应的缓存队列是否已满,若确定所述缓存队列已满,则对所述部件实施反压操作,所述反压操作用于指示所述部件在等待预设周期后再执行写访问操作;否则,待所述写访问操作写入完成后,将所述写访问操作存储到所述缓存队列,所述访问接口与所述缓存队列之间一一对应。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述预设的调度方式为优先级调度,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
所述调度组件根据各所述缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述预设的调度方式为轮询权重调度,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
所述调度组件根据各所述缓存队列的权重,按公平调度方式顺序调度所述缓存队列,所述权重为其对应缓存队列的长度;
对每一缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该缓存队列对应的权重减一,至权重减到零后,停止对此缓存队列的调度;
当所述调度组件确定所有缓存队列的写访问操作全部调度出去或所有缓存队列的权重归零,恢复各缓存队列的权重并开始下一轮调度。
结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述预设的调度方式为优先级调度和轮询权重调度的混合,所有缓存队列中部分缓存队列配置为优先级缓存队列,剩余部分的混存序列配置为轮询权重缓存队列,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
对各所述优先级缓存队列,所述调度组件根据所述优先级缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始;
对各所述轮询权重缓存队列,所述调度组件根据所述轮询权重缓存队列的权重,按公平调度方式顺序调度所述轮询权重缓存队列,所述权重为其对应缓存队列中的长度;对每一轮询权重缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该轮询权重缓存队列对应的权重减一,至权重减到零后,停止对此轮询权重缓存队列的调度;当所述调度组件确定所有轮询权重缓存队列的写访问操作全部调度出去或所有轮询权重缓存队列的权重归零,恢复各轮询权重缓存队列的权重并开始下一轮调度。
结合第二方面的第二种可能的实现方式,在第二方面的第五种可能的实现方式中,所述预设的调度方式为保序调度,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
所述调度组件根据各所述缓存队列中各所述写访问操作的写入顺序,将所述写访问操作调度给所述高速模块处理,其中,所述各所述缓存队列中各所述写访问操作的写入顺序存储在保序队列中,所述保序队列的长度大于或等于所有缓存队列长度的总和,所述保序队列存储在所述存储器中。
本发明实施例通过并行设置多个访问接口,使访问接口与部件之间一一对应,部件将写访问操作通知给其对应的访问接口后即可执行其他操作,从而无需等待其余部件对共享资源的访问结束后再执行对该共享资源的写访问操作,提升了多核处理器的核资源利用率;另外,该并行访问方法还有效避免了多部件因抢锁导致的时间浪费,从而提高了单核的数据处理能力,进而提高多核处理器的处理效率。且,软件基于该并行访问方法的实现编码简洁高效。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为多核发送报文的场景示意图;
图2为本发明并行访问系统实施例一的结构示意图;
图3为本发明并行访问方法实施例一的流程示意图;
图4为本发明访问接口示例图;
图5为本发明并行访问方法实施例二的流程示意图;
图6为环形队列示例图;
图7为本发明缓存队列示例图;
图8为本发明保序队列示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解,图1示出了多核发送报文的场景示意图,其中,流量管理(Trafficmanagement,简称:TM)为报文调度组件,所有核要发送的报文均通过TM调度出去,P0、P1和P2为高速端口,对接器件为局域网交换机(Local Area Network Switch,简称:LSW)。
在图1所示场景中,核要发送报文,都需要将报文描述写入流量管理的发送接口,该发送接口则成为临界资源,所有的核共享该发送接口,通常报文描述符为16字节(Byte,简称:B)甚至更长,原子操作要求在4B以内才能完成,多个核对流量管理发送接口的16B写操作如果没有互斥的访问机制势必会造成写数据的混乱。
现有技术中采用锁操作以避免上述问题,但采用锁操作会使得大量的核处于等待状态,导致多核处理器性能下降。为保证多核处理器的数据处理能力,本发明实施例提供一种并行访问方法及系统。
需说明的是,本发明实施例提供的并行访问方法及系统适用于所有需多执行部件并发处理的场景,包括但不限于多核在芯片中的并发,还可用于软件多进程或者多线程的并发。
图2为本发明并行访问系统实施例一的结构示意图。本发明实施例提供一种并行访问系统,适用于多部件并发处理场景,该系统可以为多核处理器等包含多个执行部件的器件或系统,在此不一一列举。如图2所示,以四个部件为例进行说明,该并行访问系统包括:部件21、部件22、部件23、部件24、访问接口I1、访问接口I2、访问接口I3、访问接口I4、高速模块26和调度组件25。其中,图2中带箭头的指向用于表示数据流方向。
其中,多部件中的每一部件,即部件21、部件22、部件23和部件24,用于发起写访问操作;调度组件25用于通过各部件对应的访问接口,接收所述部件发起的写访问操作,其中,部件与访问接口是一一对应的,多个访问接口间并行设置;及,根据预设的调度方式,将所述写访问操作调度给高速模块26处理,高速模块26为所述多部件的共享资源。
本发明实施例的并行访问系统,可以用于执行如图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述基础上,所述系统还可以包括:存储器27,用于存储缓存队列,所述缓存队列用于存储所述写访问操作,每一访问接口对应一缓存队列。访问接口还可以用于检测缓存队列是否已满,若确定缓存队列已满,则对部件实施反压操作,反压操作用于指示部件在等待预设周期后再执行写访问操作;否则,待写访问操作写入完成后,将写访问操作存储到缓存队列。其中,缓存队列可以分别对应到存储器27的一段存储空间。该实施例中,存储器的个数为一个,可选地,还可以每一访问接口分别对应一独立的存储器,本发明不对其进行限制。
一种实现方式中,预设的调度方式为优先级调度,调度组件25可以具体用于:调度组件25根据各所述缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给高速模块26处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始。
另一种实现方式中,所述预设的调度方式为轮询权重调度,调度组件25可以具体用于:调度组件25根据各所述缓存队列的权重,按公平调度方式顺序调度所述缓存队列,所述权重为其对应缓存队列的长度;对每一缓存队列,调度组件25每调度出一个写访问操作给高速模块26处理,执行该缓存队列对应的权重减一,至权重减到零后,停止对此缓存队列的调度;当调度组件25确定所有缓存队列的写访问操作全部调度出去或所有缓存队列的权重归零,恢复各缓存队列的权重并开始下一轮调度。
又一种实现方式中,所述预设的调度方式为优先级调度和轮询权重调度的混合,所有缓存队列中部分缓存队列配置为优先级缓存队列,剩余部分的混存序列配置为轮询权重缓存队列,调度组件25可以具体用于:对各所述优先级缓存队列,调度组件25可以根据所述优先级缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给高速模块26处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始;对各所述轮询权重缓存队列,调度组件25可以根据所述轮询权重缓存队列的权重,按公平调度方式顺序调度所述轮询权重缓存队列,所述权重为其对应缓存队列中的长度;对每一轮询权重缓存队列,调度组件25每调度出一个写访问操作给高速模块26处理,执行该轮询权重缓存队列对应的权重减一,至权重减到零后,停止对此轮询权重缓存队列的调度;当调度组件25确定所有轮询权重缓存队列的写访问操作全部调度出去或所有轮询权重缓存队列的权重归零,恢复各轮询权重缓存队列的权重并开始下一轮调度。
再一种实现方式中,存储器27还可以用于存储保序队列,所述预设的调度方式为保序调度,调度组件25可具体用于:调度组件25可根据各所述缓存队列中各所述写访问操作的写入顺序,将所述写访问操作调度给高速模块26处理,其中,所述各所述缓存队列中各所述写访问操作的写入顺序存储在保序队列中,所述保序队列的长度大于或等于所有缓存队列长度的总和。
在本发明实施例中,当部件的写入能力大于高速模块的处理能力,或者部件写入能力出现抖动时,需要设置一定的缓冲避免在入口处拥塞,为每个访问接口设置对应的缓存队列,确保写入的无阻塞及高速模块不断流。
图3为本发明并行访问方法实施例一的流程示意图。本发明实施例提供一种并行访问方法,该方法可以由并行访问系统执行,该系统可以为多核处理器等包含多个执行部件的器件或系统,在此不一一列举。如图3所示,该并行访问方法包括:
S301、对于多部件中的每一部件,调度组件通过该部件对应的访问接口,接收所述部件发起的写访问操作,部件与访问接口是一一对应的,多个访问接口间并行设置。
其中,多部件例如可以为多个核,或多个加速器,或多个线程等,这些处理资源需要能得到并发的高速执行,以避免多资源间采用原子锁(Spinlock)操作的方式共享资源。每一个核或加速器对应一套读/写访问接口,通过一对一的访问,达成并发目的。对于高速模块,本领域技术人员可以理解为具有高速处理能力的模块,通常一个芯片系统中会有多个高速模块,例如,内存管理模块、调度中心模块、报文输出模块等。
一种具体的实现方式中,如图4所示,访问接口可以对应到芯片内部的一段寄存器空间,每一部件对应一个访问接口,图4中的addr x,其中,x取值为0,1,2,…,N,N为访问接口个数减一所得到的数值,n取值为4的正整数次幂,标识了每个访问接口的访问入口。根据高速模块所要求接口宽度的不同,访问接口的宽度可定义为4字节、8字节、16字节或32字节等,如图3中所示出的流量管理,用16字节的接口即可。
具体地,部件对其对应的访问接口执行写访问操作时,通常是以4B为单位写入,还是可以以8B或16B或32B等为单位写入;该访问接口检测到最后一个单位写入完成,则表明该写访问操作写入完成。
S302、调度组件根据预设的调度方式,将写访问操作调度给高速模块处理,高速模块为多部件的共享资源。
其中,预设的调度方式可包括保序调度和乱序调度,乱序调度包括但不限于优先级调度和轮询权重调度。该预设的调度方式用于保证上述多个部件通过各自访问接口执行的写访问操作传输至高速模块,以使高速模块进行处理。
本发明实施例通过并行设置多个访问接口,使访问接口与部件之间一一对应,部件将写访问操作通知给其对应的访问接口后即可执行其他操作,从而无需等待其余部件对共享资源的访问结束后再执行对该共享资源的写访问操作,提升了多核处理器的核资源利用率;另外,该并行访问方法还有效避免了多部件因抢锁导致的时间浪费,从而提高了单核的数据处理能力,进而提高多核处理器的处理效率。且,软件基于该并行访问方法的实现编码简洁高效。
图5为本发明并行访问方法实施例二的流程示意图。该实施例在如图3所示实施例的基础上进行改进。如图5所示,该方法可以包括:
S501、对于多部件中的每一部件,调度组件通过该部件对应的访问接口,接收所述部件发起的写访问操作,部件与访问接口是一一对应的,多个访问接口间并行设置。
该步骤同S301,此处不再赘述。
S502、访问接口检测存储器中其对应的缓存队列是否已满。
其中,访问接口与缓存队列之间一一对应。若访问接口确定缓存队列已满,则执行S503;否则,执行S504。
其中,缓存队列可以对应到芯片内部的一段存储器空间。可选地,缓存队列采用环形队列形式,环形队列如图6所示,每个缓存队列设置一个头部指针和一个尾部指针。访问接口确定缓存队列已满,具体为:每次入队一个CMD(命令描述),即写访问操作,尾部指针加一,如果头尾指针重合,说明缓存队列已满。头部指针用于调度组件访问,每次调出一个CMD头部指针加一,若头部指针和尾部指针重合,说明CMD已被调度完。
通常情况下,芯片系统内部会设置一个指示标识,以用于指示缓存队列是否已满。当缓存队列中有一写访问操作加入后,头尾指针重合时,将该指示标识标志置“1”;当调度组件将写访问操作从缓存队列中取出后,将该指示标识置“0”。访问接口检测到有写访问操作写入时,查询上述指示标识,如果已经置“1”,则对该访问接口对应的部件实施反压。
补充说明的是,头尾指针在移动后都要根据队列长度取模,由此形成环形队列,否则指针改变后会超出队列长度范围。
S503、访问接口对部件实施反压操作,该反压操作用于指示部件在等待预设周期后再执行写访问操作。
具体地,访问接口确定其对应的缓存队列已满,则对部件实施反压,部件需要等待预设周期(例如1至N个时钟周期)后再写入,预设周期的长度根据需求预先配置。
S504、访问接口待写访问操作写入完成后,将写访问操作存储到缓存队列。
S505、调度组件根据预设的调度方式,将写访问操作调度给高速模块处理,高速模块为多部件的共享资源。
该步骤同S202,此处不再赘述。
在本发明实施例中,当部件的写入能力大于高速模块的处理能力,或者部件写入能力出现抖动时,需要设置一定的缓冲避免在入口处拥塞,为每个访问接口设置对应的缓存队列,确保写入的无阻塞及高速模块不断流。
以下通过几种具体的方式详细说明调度组件如何根据预设的调度方式,将各访问接口所接收的写访问操作调度给高速模块处理。
一种具体的实现方式中,上述预设的调度方式为优先级调度。
调度组件根据预设的调度方式,访问接口所接收的所述写访问操作调度给高速模块处理,可以包括:调度组件根据各缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始。
该实现方式中,每个缓存队列预先配置一个优先级,优先级分为1至M,M为访问接口个数,通常与核数或线程数保持一致,从低到高排列,调度组件根据缓存队列的优先级顺序,执行调度。
另一种具体的实现方式中,上述预设的调度方式为轮询权重调度。
调度组件根据预设的调度方式,将各访问接口所接收的写访问操作调度给高速模块处理,可以包括:调度组件根据各缓存队列的权重,按公平调度方式顺序调度缓存队列,权重为其对应缓存队列的长度;对每一缓存队列,调度组件每调度出一个写访问操作给高速模块处理,执行该缓存队列对应的权重减一,至权重减到零后,停止对此缓存队列的调度;当调度组件确定所有缓存队列的写访问操作全部调度出去或所有缓存队列的权重归零,恢复各缓存队列的权重并开始下一轮调度。
该实现方式中,每个缓存队列预先配置一个权重,避免了根据优先级调度时,由于高优先级缓存队列一直存在CMD而导致最低优先级的缓存队列不被调度的情况。
又一种具体的实现方式中,上述预设的调度方式为优先级调度和轮询权重调度的混合,所有缓存队列中部分缓存队列配置为优先级缓存队列,剩余部分的混存序列配置为轮询权重缓存队列。
调度组件根据预设的调度方式,将各访问接口所接收的写访问操作调度给高速模块处理,可以包括:对各优先级缓存队列,调度组件根据优先级缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始;对各所述轮询权重缓存队列,调度组件根据所述轮询权重缓存队列的权重,按公平调度方式顺序调度所述轮询权重缓存队列;对每一轮询权重缓存队列,调度组件每调度出一个写访问操作给高速模块处理,执行该轮询权重缓存队列对应的权重减一,至权重减到零后,停止对此轮询权重缓存队列的调度;当调度组件确定所有轮询权重缓存队列的写访问操作全部调度出去或所有轮询权重缓存队列的权重归零,恢复各轮询权重缓存队列的权重并开始下一轮调度。
基于上述三种方式的调度为乱序调度。乱序调度是指写访问操作调出缓存队列的顺序与写入缓存队列的顺序不一致。以下说明保序调度,即调度组件要按照写访问操作写入缓存队列的顺序,调出给高速模块,而不依赖于单个缓存队列的写访问操作顺序。
再一种具体的实现方式中,上述预设的调度方式为保序调度。
调度组件根据预设的调度方式,将各访问接口所接收的写访问操作调度给高速模块处理,可以包括:调度组件根据各缓存队列中各写访问操作的写入顺序,将写访问操作调度给高速模块处理,其中,各缓存队列中各写访问操作的写入顺序存储在保序队列中,该保序队列的长度大于或等于所有缓存队列长度的总和,保序队列存储在存储器中。
保序调度的原理见图7和图8所示,其中,队列号QA、QB、QC和QD分别标识不同的缓存队列,这里以4个缓存队列(对应4个核)进行说明,C0、C1和C2为单个缓存队列中写访问操作(CMD)入队列的顺序,①②③④等为部件(多核)CMD输入的顺序。
部件向某个缓存队列入队一个CMD,该队列号即被加入到保序队列中,这样保序队列的队列号排列顺序即为执行部件CMD入队顺序。
调度模块按照保序队列中的队列号顺序访问相应的缓存队列,从该缓存队列的头部指针所指向的地址取出CMD并送给高速模块。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种并行访问系统,其特征在于,适用于多部件并发处理场景,所述系统包括:
所述多部件中的每一部件,用于发起写访问操作;
调度组件,用于通过各部件对应的访问接口,接收所述部件发起写访问操作,所述部件与所述访问接口是一一对应的,多个所述访问接口间并行设置;及,根据预设的调度方式,将所述写访问操作调度给高速模块处理,所述高速模块为所述多部件的共享资源;
所述系统还包括:
存储器,用于存储缓存队列,所述缓存队列用于存储所述写访问操作,每一访问接口对应一缓存队列;
所述访问接口,还用于检测各所述缓存队列是否已满,若确定所述缓存队列已满,则对所述部件实施反压操作,所述反压操作用于指示所述部件在等待预设周期后再执行写访问操作;否则,待所述写访问操作写入完成后,将所述写访问操作存储到所述缓存队列。
2.根据权利要求1所述的系统,其特征在于,所述预设的调度方式为优先级调度,所述调度组件具体用于:
所述调度组件根据各所述缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始。
3.根据权利要求1所述的系统,其特征在于,所述预设的调度方式为轮询权重调度,所述调度组件具体用于:
所述调度组件根据各所述缓存队列的权重,按公平调度方式顺序调度所述缓存队列,所述权重为其对应缓存队列的长度;
对每一缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该缓存队列对应的权重减一,至权重减到零后,停止对此缓存队列的调度;
当所述调度组件确定所有缓存队列的写访问操作全部调度出去或所有缓存队列的权重归零,恢复各缓存队列的权重并开始下一轮调度。
4.根据权利要求1所述的系统,其特征在于,所述预设的调度方式为优先级调度和轮询权重调度的混合,所有缓存队列中部分缓存队列配置为优先级缓存队列,剩余部分的混存序列配置为轮询权重缓存队列,所述调度组件具体用于:
对各所述优先级缓存队列,所述调度组件根据所述优先级缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始;
对各所述轮询权重缓存队列,所述调度组件根据所述轮询权重缓存队列的权重,按公平调度方式顺序调度所述轮询权重缓存队列,所述权重为其对应缓存队列中的长度;对每一轮询权重缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该轮询权重缓存队列对应的权重减一,至权重减到零后,停止对此轮询权重缓存队列的调度;当所述调度组件确定所有轮询权重缓存队列的写访问操作全部调度出去或所有轮询权重缓存队列的权重归零,恢复各轮询权重缓存队列的权重并开始下一轮调度。
5.根据权利要求1所述的系统,其特征在于,所述存储器还用于存储保序队列,所述预设的调度方式为保序调度,所述调度组件具体用于:
所述调度组件根据各所述缓存队列中各所述写访问操作的写入顺序,将所述写访问操作调度给所述高速模块处理,其中,所述各所述缓存队列中各所述写访问操作的写入顺序存储在所述保序队列中,所述保序队列的长度大于或等于所有缓存队列长度的总和。
6.一种并行访问方法,其特征在于,适用于多部件并发处理场景,所述方法包括:
对于所述多部件中的每一部件,调度组件通过该部件对应的访问接口,接收所述部件发起的写访问操作,所述部件与所述访问接口是一一对应的,多个所述访问接口间并行设置;
所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给高速模块处理,所述高速模块为所述多部件的共享资源;
其中,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理之前,所述方法还包括:
所述访问接口检测存储器中其对应的缓存队列是否已满,若确定所述缓存队列已满,则对所述部件实施反压操作,所述反压操作用于指示所述部件在等待预设周期后再执行写访问操作;否则,待所述写访问操作写入完成后,将所述写访问操作存储到所述缓存队列,所述访问接口与所述缓存队列之间一一对应。
7.根据权利要求6所述的方法,其特征在于,所述预设的调度方式为优先级调度,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
所述调度组件根据各所述缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始。
8.根据权利要求6所述的方法,其特征在于,所述预设的调度方式为轮询权重调度,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
所述调度组件根据各所述缓存队列的权重,按公平调度方式顺序调度所述缓存队列,所述权重为其对应缓存队列的长度;
对每一缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该缓存队列对应的权重减一,至权重减到零后,停止对此缓存队列的调度;
当所述调度组件确定所有缓存队列的写访问操作全部调度出去或所有缓存队列的权重归零,恢复各缓存队列的权重并开始下一轮调度。
9.根据权利要求6所述的方法,其特征在于,所述预设的调度方式为优先级调度和轮询权重调度的混合,所有缓存队列中部分缓存队列配置为优先级缓存队列,剩余部分的混存序列配置为轮询权重缓存队列,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
对各所述优先级缓存队列,所述调度组件根据所述优先级缓存队列的优先级顺序,优先调度高优先级缓存队列中写访问操作给所述高速模块处理,直到高优先级缓存队列中的写访问操作调度完,才开始调度下一级优先级缓存队列,每次调度均从最高优先级缓存队列开始;
对各所述轮询权重缓存队列,所述调度组件根据所述轮询权重缓存队列的权重,按公平调度方式顺序调度所述轮询权重缓存队列,所述权重为其对应缓存队列中的长度;对每一轮询权重缓存队列,所述调度组件每调度出一个写访问操作给所述高速模块处理,执行该轮询权重缓存队列对应的权重减一,至权重减到零后,停止对此轮询权重缓存队列的调度;当所述调度组件确定所有轮询权重缓存队列的写访问操作全部调度出去或所有轮询权重缓存队列的权重归零,恢复各轮询权重缓存队列的权重并开始下一轮调度。
10.根据权利要求6所述的方法,其特征在于,所述预设的调度方式为保序调度,所述调度组件根据预设的调度方式,将各所述访问接口所接收的所述写访问操作调度给所述高速模块处理,包括:
所述调度组件根据各所述缓存队列中各所述写访问操作的写入顺序,将所述写访问操作调度给所述高速模块处理,其中,所述各所述缓存队列中各所述写访问操作的写入顺序存储在保序队列中,所述保序队列的长度大于或等于所有缓存队列长度的总和,所述保序队列存储在所述存储器中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/086638 WO2016041150A1 (zh) | 2014-09-16 | 2014-09-16 | 并行访问方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105637475A CN105637475A (zh) | 2016-06-01 |
CN105637475B true CN105637475B (zh) | 2019-08-20 |
Family
ID=55532439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480022122.9A Active CN105637475B (zh) | 2014-09-16 | 2014-09-16 | 并行访问方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105637475B (zh) |
WO (1) | WO2016041150A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113227984B (zh) * | 2018-12-22 | 2023-12-15 | 华为技术有限公司 | 一种处理芯片、方法及相关设备 |
CN113495669B (zh) * | 2020-03-19 | 2023-07-18 | 华为技术有限公司 | 一种解压装置、加速器、和用于解压装置的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606301A (zh) * | 2004-07-09 | 2005-04-13 | 清华大学 | 一种共享资源访问的调度控制方法及装置 |
WO2007132424A2 (en) * | 2006-05-17 | 2007-11-22 | Nxp B.V. | Multi-processing system and a method of executing a plurality of data processing tasks |
CN101276294A (zh) * | 2008-05-16 | 2008-10-01 | 杭州华三通信技术有限公司 | 异态性数据的并行处理方法和处理装置 |
CN102609312A (zh) * | 2012-01-10 | 2012-07-25 | 中国科学技术大学苏州研究院 | 基于公平性考虑的短作业优先内存请求调度方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9305263D0 (en) * | 1993-03-15 | 1993-05-05 | Univ Westminster | Parrallel computation |
KR100784385B1 (ko) * | 2005-08-10 | 2007-12-11 | 삼성전자주식회사 | 공유 자원에 대한 접근 요청을 중재하는 시스템 및 방법 |
CN100471176C (zh) * | 2006-09-12 | 2009-03-18 | 华为技术有限公司 | 队列调度方法及装置 |
CN101610552A (zh) * | 2009-08-04 | 2009-12-23 | 杭州华三通信技术有限公司 | 共用资源的调度方法和装置 |
-
2014
- 2014-09-16 CN CN201480022122.9A patent/CN105637475B/zh active Active
- 2014-09-16 WO PCT/CN2014/086638 patent/WO2016041150A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606301A (zh) * | 2004-07-09 | 2005-04-13 | 清华大学 | 一种共享资源访问的调度控制方法及装置 |
WO2007132424A2 (en) * | 2006-05-17 | 2007-11-22 | Nxp B.V. | Multi-processing system and a method of executing a plurality of data processing tasks |
CN101276294A (zh) * | 2008-05-16 | 2008-10-01 | 杭州华三通信技术有限公司 | 异态性数据的并行处理方法和处理装置 |
CN102609312A (zh) * | 2012-01-10 | 2012-07-25 | 中国科学技术大学苏州研究院 | 基于公平性考虑的短作业优先内存请求调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105637475A (zh) | 2016-06-01 |
WO2016041150A1 (zh) | 2016-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103999051B (zh) | 用于着色器核心中着色器资源分配的策略 | |
US8108571B1 (en) | Multithreaded DMA controller | |
GB2569844A (en) | Sending data off-chip | |
US8806498B2 (en) | Method and system for resolving dependency among the enqueued works and/or finished works and scheduling the dependency-resolved works | |
CA2536037A1 (en) | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment | |
US8655962B2 (en) | Shared address collectives using counter mechanisms | |
CN102437929B (zh) | 队列管理中的数据出队方法及装置 | |
CN101211321B (zh) | 分层存储器读取/写入微指令调度器 | |
US8576864B2 (en) | Host ethernet adapter for handling both endpoint and network node communications | |
CN105337896A (zh) | 报文处理方法和装置 | |
CN1327349C (zh) | 一种微内核嵌入式实时操作系统的任务级资源管理方法 | |
CN102298539A (zh) | 一种用于分布式并行处理的共享资源调度方法及系统 | |
CN103946803A (zh) | 具有高效工作排队的处理器 | |
CN103262002A (zh) | 优化系统调用请求通信 | |
US10331500B2 (en) | Managing fairness for lock and unlock operations using operation prioritization | |
US20110179199A1 (en) | Support for non-locking parallel reception of packets belonging to the same reception fifo | |
JPS62284452A (ja) | 情報転送方式 | |
CN111432899B (zh) | 用于管理对共享端口的多核访问的系统和方法 | |
CN109144749A (zh) | 一种使用处理器实现多处理器间通信的方法 | |
IL264794B2 (en) | Scheduling of tasks on a multi-processor device | |
CN105637475B (zh) | 并行访问方法及系统 | |
CN101189579B (zh) | 用于多线程处理的使用信号量的方法和装置 | |
CN103227755B (zh) | 使用推测技术的处理器到基于消息的网络的接口 | |
CN103631665B (zh) | 一种基于消息队列的线程间通信的方法和系统 | |
US9384047B2 (en) | Event-driven computation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |