CN114626541A - 命令下发方法、装置、处理设备、计算机设备及存储介质 - Google Patents
命令下发方法、装置、处理设备、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114626541A CN114626541A CN202011459860.3A CN202011459860A CN114626541A CN 114626541 A CN114626541 A CN 114626541A CN 202011459860 A CN202011459860 A CN 202011459860A CN 114626541 A CN114626541 A CN 114626541A
- Authority
- CN
- China
- Prior art keywords
- command
- buffer
- stream
- processing device
- host
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
本公开提供一种命令下发方法、装置、处理设备、计算机设备及存储介质,其中方法包括:根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令;将所述至少一个命令流插入到缓冲器中;通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。以减轻主机与处理设备之间的通信开销,提高主机的调度效率。
Description
技术领域
本公开涉及计算机技术领域,具体涉及一种命令下发方法、装置、处理设备、计算机设备及存储介质。
背景技术
在深度学习领域,AI芯片如同GPU一样,通常作为主机/CPU的加速卡。其中,AI芯片或GPU可称为处理设备,由主机进行调度和控制。
随着人工智能(AI)的广泛使用,深度学习的模型和数据量不断增大。主机对处理设备进行调度和控制时,不仅需要传输大量的数据,还需要频繁下发操作命令。这使得主机与处理设备之间的通信链路经常触及通信瓶颈,通信链路的通信开销过大,导致主机调度效率低下。
发明内容
本公开提供了一种命令下发方法、装置、处理设备、计算机设备及存储介质。
根据本公开实施例的第一方面,提供一种命令下发方法,所述方法包括:根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令;将所述至少一个命令流插入到缓冲器中;通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。
在一些可选实施例中,所述通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备,包括:在所述缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,将所述至少两个命令流传输至所述处理设备。
在一些可选实施例中,所述将所述至少一个命令流插入到缓冲器中之后,还包括:更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;通过所述通信链路,将更新后的写指针的指针信息发送至所述处理设备,以由所述处理设备更新处理设备侧的写指针副本。
在一些可选实施例中,所述将所述至少一个命令流插入到缓冲器中之后,还包括:更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;在所述缓冲器的写指针更新次数达到预设次数的情况下,通过所述通信链路,将最后更新的写指针的指针信息发送至所述处理设备,以由所述处理设备更新处理设备侧的写指针副本。
在一些可选实施例中,所述方法还包括:接收所述处理设备通过所述通信链路发送的读指针的指针信息,所述读指针用于表示对所述缓冲器进行读操作的当前位置;根据所述读指针的指针信息,更新主机侧的读指针副本。
在一些可选实施例中,所述通信链路是高速串行计算机扩展总线标准PCI-Express链路。
根据本公开实施例的第二方面,提供另一种命令下发方法,所述方法包括:通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流;将拉取的所述至少一个命令流读取到本地的流队列中,所述流队列用于存储待执行的命令流。
在一些可选实施例中,所述通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流,包括:在所述主机侧的缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,从所述主机侧的缓冲器中拉取所述至少两个命令流。
在一些可选实施例中,所述将拉取的所述至少一个命令流读取到本地的流队列中,包括:在从所述主机侧的缓冲器中拉取多个命令流的情况下,将所述多个命令流分别读取到本地不同的流队列中;所述方法还包括:并行执行所述本地不同的流队列中的命令流。
在一些可选实施例中,所述方法还包括:接收主机通过所述通信链路发送的写指针的指针信息;根据所述写指针的指针信息,更新处理设备侧的写指针副本。
在一些可选实施例中,所述从主机侧的缓冲器中拉取至少一个命令流,包括:根据本地的读指针和写指针副本的指针信息,确定所述缓冲器中待下发的命令流的数量;在所述缓冲器中包括至少一个待下发的命令流的情况下,从所述缓冲器中拉取至少一个命令流。
在一些可选实施例中,所述将拉取的所述至少一个命令流读取到本地的流队列中,包括:每次将一个命令流读取到所述本地的流队列中之后,更新本地的读指针;将更新后的所述读指针的指针信息,发送至所述主机,以由所述主机更新主机侧的读指针副本。
在一些可选实施例中,所述通信链路是PCI-Express链路。
根据本公开实施例的第三方面,提供一种命令下发装置,所述装置包括:命令流生成模块,用于根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令;插入模块,用于将所述至少一个命令流插入到缓冲器中;传输模块,用于通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。
在一些可选实施例中,所述传输模块,在用于通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备时,包括:在所述缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,将所述至少两个命令流传输至所述处理设备。
在一些可选实施例中,所述装置还包括:第一写指针更新模块,用于更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;第一指针信息发送模块,用于通过所述通信链路,将更新后的写指针的指针信息发送至所述处理设备,以由所述处理设备更新处理设备侧的写指针副本。
在一些可选实施例中,所述装置还包括:第二写指针更新模块,用于更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;第二指针信息发送模块,用于在所述缓冲器的写指针更新次数达到预设次数的情况下,将最后更新的写指针的指针信息发送至所述处理设备。
在一些可选实施例中,所述装置还包括:指针信息接收模块,用于接收所述处理设备通过所述通信链路发送的读指针的指针信息,所述读指针用于表示对所述缓冲器进行读操作的当前位置;读指针副本更新模块,用于根据所述读指针的指针信息,更新主机侧的读指针副本。
在一些可选实施例中,所述通信链路是PCI-Express链路。
根据本公开实施例的第四方面,提供一种处理设备,所述处理设备包括:队列存储器,用于存储流队列;微处理器,用于通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流;并将拉取的所述至少一个命令流读取到本地的流队列中,所述流队列用于存储待执行的命令流。
在一些可选实施例中,所述微处理器,在用于通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流时,包括:在所述主机侧的缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,从所述主机侧的缓冲器中拉取所述至少两个命令流。
在一些可选实施例中,所述微处理器,在用于将拉取的所述至少一个命令流读取到本地的流队列中时,包括:在从所述主机侧的缓冲器中拉取多个命令流的情况下,将所述多个命令流分别读取到本地不同的流队列中;所述处理设备还包括:并行调度模块,用于并行调度相应的计算模块以并行执行所述本地不同的流队列中的命令流。
在一些可选实施例中,所述微处理器,还用于接收主机通过所述通信链路发送的写指针的指针信息;根据所述写指针的指针信息,更新处理设备侧的写指针副本。
在一些可选实施例中,所述微处理器,在用于从主机侧的缓冲器中拉取至少一个命令流时,包括:根据本地的读指针和写指针副本的指针信息,确定所述缓冲器中待下发的命令流的数量;在所述缓冲器中包括至少一个待下发的命令流的情况下,从所述缓冲器中拉取至少一个命令流。
在一些可选实施例中,所述微处理器,在用于将拉取的所述至少一个命令流读取到本地的流队列中时,包括:每次将一个命令流读取到所述本地的流队列中之后,更新本地的读指针;将更新后的所述读指针的指针信息,发送至所述主机,以由所述主机更新主机侧的读指针副本。
在一些可选实施例中,所述处理设备是AI芯片或者GPU。
在一些可选实施例中,所述通信链路是PCI-Express链路。
根据本公开实施例的第五方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面或第二方面中任一项所述的命令下发方法。
根据本公开实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面或第二方面中任一所述的命令下发方法。
根据本公开实施例的第七方面,提供一种计算机程序产品,包括计算机程序,所述程序被处理器执行时实现第一方面或第二方面中任一所述的命令下发方法。
本公开实施例中,可以根据待下发到处理设备的多个命令,将多个命令生成一个命令流,以命令流的方式向处理设备下发命令。这种命令下发方式中,一次命令流的下发可以实现多个命令的下发,通过通信链路的一次通信即可下发多个命令。有效减少了主机与处理设备的通信次数,减轻了主机与处理设备之间的通信开销,提高了主机的调度效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种命令下发方法流程图;
图2是根据一示例性实施例示出的另一种命令下发方法流程图;
图3是根据一示例性实施例示出的一种命令下发方法交互流程图;
图4是根据一示例性实施例示出的一种命令下发装置示意图;
图5是根据一示例性实施例示出的另一种命令下发装置示意图;
图6是根据一示例性实施例示出的又一种命令下发装置示意图;
图7是根据一示例性实施例示出的又一种命令下发装置示意图;
图8是根据一示例性实施例示出的一种处理设备示意图;
图9是根据一示例性实施例示出的另一种处理设备示意图;
图10是根据一示例性实施例示出的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的具体方式并不代表与本公开相一致的所有方案。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
随着人工智能的广泛使用,深度学习的模型和数据量不断增大。主机对处理设备进行调度和控制时,主机与处理设备之间的通信链路(如PCI-Express链路)需要传输大量的数据和模型代码,并且还需要频繁下发操作命令,导致通信链路的通信开销过大,主机调度效率低下。
基于以上,本公开提供了一种命令下发方法:主机根据待下发到处理设备的多个命令,生成至少一个命令流;将至少一个命令流插入到缓冲器中,并通过通信链路将缓冲器中的命令流传输至处理设备。
采用命令流下发命令的方式,一个命令流的下发即可向处理设备下发多个命令,减少了通信链路的通信次数。减轻了主机与处理设备之间通信链路的通信开销,提高了主机的调度效率。
为了使本公开提供的命令下发方法更加清楚,下面结合附图和具体实施例对本公开提供的方案执行过程进行详细描述。
参见图1,图1是本公开提供的实施例示出的一种命令下发方法流程图。该方法应用于主机。如图1所示,该流程包括:
步骤101,根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令。
本实施例中,用来生成命令流的命令,是主机生成的需要下发到处理设备进行处理的命令。
例如,可以是应用层包括的多个进程产生的多个命令。
假设应用层包括用于支付的应用“支付×”、包括用于美颜的应用“美图××”。在使用以上两个应用的过程中,由“支付×”进程或“美图××”进程产生的命令,需要下发到处理设备(如AI芯片)进行处理。其中,由“支付×”进程或“美图××”进程产生的命令,即待下发到处理设备进行处理的命令。
例如,在深度学习领域,将AI芯片作为处理设备的情况下,命令流中的命令可以包括:深度学习模型的各种算子(kernel)、数据搬移(memcpy)命令、event同步命令。
本步骤可以根据待下发的多个命令,生成至少一个命令流。其中,一个命令流中可以包括一个命令,也可以包括多个命令。同一个命令流中的命令需要依次执行,不同命令流之间可以并行执行。
这里的命令流类似于CUDA(Compute Unified Device Architecture,是显卡厂商NVIDIA推出的运算平台)中的“stream”。
例如,假设待下发的命令中包括:命令1、命令2、命令3、命令A、命令B和命令C。
如果命令1、命令2和命令3需要依次执行,则本步骤可以将命令1、命令2和命令3生成一个命令流1。其中,命令流1中包括:命令1、命令2和命令3。
同理,如果命令A和命令B需要依次执行,则本步骤可以将命令A和命令B生成一个命令流A。其中,命令流A中包括:命令A和命令B。
如果命令C和其他命令的执行无关,则本步骤可以将命令C生成一个命令流C。
在生成命令流1、命令流A和命令流C的情况下,各个命令流的执行互不影响。例如,可以并行执行三个命令流。
步骤102,将所述至少一个命令流插入到缓冲器中。
示例性的,本实施例中的缓冲器可以是环形缓冲器(Ring Buffer)。可以理解的是,凡是能够满足本步骤使用需求的缓冲器,均可以看作本实施例的缓冲器,并不仅局限于环形缓冲器。
环形缓冲器是一种典型的“生·产者-消费者”模型。本实施例中,主机是生产者,可以将命令流插入到环形缓冲器中;处理设备是消费者,可以从环形缓冲器中将命令流下拉到本地的流队列(Stream Queue)。
以环形缓冲器为例,本步骤可以将一个或多个命令流插入到环形缓冲器中。
例如,驱动可以为各个命令流创建不同的命令流缓冲(Stream Buffer),将每个Stream Buffer通过锁方式,插入到Ring Buffer。每个Stream Buffer对应Ring Buffer的一个Entry。
步骤103,通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。
示例性的,本实施例中主机与处理设备(如AI芯片)间的通信链路,可以是PCI-Express(peripheral component interconnect express,一种高速串行计算机扩展总线标准)。可以理解的是,除PCI-Express之外,主机与处理设备之间还可以包括其他类型的通信链路,本公开并不对此限制。
以PCI-Express链路为例,本步骤可以通过PCI-Express链路将缓冲器中的命令流传输至处理设备。其中,通过PCI-Express的一次通信,可以将一个命令流传输至处理设备。或者,通过PCI-Express的一次通信,可以将多个命令流传输至处理设备。
本实施例中,将缓冲器中的命令流传输至处理设备的过程,可以是主机主动将命令流下发到处理设备中,也可以由处理设备主动从缓冲器中拉取命令流。缓冲器中命令流传输至处理设备的具体方式还包括多种形式,本实施例并不对此限制。
主机可以根据缓冲器中待下发命令流的数量,主动将缓冲器中一定数量的命令流下发到处理设备,由处理设备对下发的命令流进行进一步处理。例如,主机可以在缓冲器中命令流数量达到一定预设数量的情况下,可以将一定预设数量的命令流,通过PCI-Express链路一次性下发到处理设备。
处理设备也可以主动从缓冲器中,拉取一定数量的命令流。
例如,处理设备可以通过轮询主机侧缓冲器的指针信息,在缓冲器中存在待下发的命令流的情况下,处理设备可以通过PCI-Express链路,一次性从主机侧的环形缓冲器中,拉取一个命令流到本地的流队列。或者,处理设备可以通过PCI-Express链路,一次性从主机侧的环形缓冲器中,拉取多个命令流到本地的流队列。
本实施例中,主机可以根据多个待下发到处理设备的命令,生成一个命令流,以命令流的方式向处理设备下发命令,一次命令流的下发可以实现多个命令的下发,减少了主机与处理设备的通信次数,减轻了主机与处理设备之间的通信开销,提高了主机的调度效率。
另外,随着人工智能领域的发展,AI芯片的计算能力(简称算力)节节攀高,算力甚至达到256/512Tops。在调度效率低下的情况下,主机将不能及时将操作命令下发到处理设备进行调度和控制,处理设备的算力不能被充分利用,浪费计算资源。
本实施例的命令下发方法,由于提高了主机的调度效率,所以可以更加充分的利用处理设备的算力。
在一些可选实施例中,步骤103中,通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备,可以包括:在所述缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,将所述至少两个命令流传输至所述处理设备。
上述实施例中,在缓冲器中已经插入多个命令流的情况下,主机可以通过通信链路的一次通信,一次性的将缓冲器中的多个命令流批量的传输至处理设备。在一种可能的实现方式中,在缓冲器中已经插入多个命令流的情况下,主机可以通过通信链路的一次通信,将该缓冲器中所有的命令流批量的传输至处理设备。在另一种可能的实现方式中,在缓冲器中已经插入多个命令流的情况下,主机可以通过通信链路的一次通信,将该缓冲器中所有命令流中的部分命令流(多于一个命令流)批量传输至处理设备。
上述实施例中,主机通过将多个命令流插入到缓冲器中,通过通信链路可以一次将多个命令流传输至处理设备,进一步减少了主机与处理设备的通信次数。减轻了主机与处理设备之间的通信开销,提高了主机的调度效率。
参见图2,图2是本公开提供的实施例示出的另一种命令下发方法流程图。该方法应用于处理设备。如图2所示,该流程包括:
步骤201,通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流。
由于主机将待下发到处理设备进行处理的命令,生成了命令流,并将命令流缓存在缓冲器中。例如,主机可以将待下发的命令以命令流的形式,缓存在环形缓冲器中。
处理设备可以通过与主机间的通信链路,从缓冲器中一次性拉取一个命令流,或者一次性批量拉取多个命令流。其中,处理设备一次从缓冲器中拉取待下发的命令流的数量,需要根据缓冲器中待下发的命令流的数量,与处理设备本地闲置的流队列的数量,综合确定。
例如,在缓冲器中存在一个待下发的命令流的情况下,处理设备可以确定本地存在至少一个空闲的流队列。则,处理设备可以从缓冲器中拉取这一个待下发的命令流,并将该一个命令流读取到对应空闲的流队列。即,完成了将这一个命令流中包括的多个命令从主机侧到处理设备侧的下发。
例如,在缓冲器中存在多个待下发的命令流的情况下,处理设备可以确定本地存在足够多的空闲的流队列。则,处理设备可以从缓冲器中一次批量拉取该多个命令流,并将该多个命令流分别读取到不同的流队列。即,完成了将该多个命令流中包括的多个命令从主机侧到处理设备侧的下发。
本实施中,处理设备需要确定主机侧缓冲器中待下发的命令流的数量。在缓冲器中存在待下发的命令流的情况下,且处理设备本地存在闲置的流队列,处理设备才从缓冲器中拉取一定数量的命令流。
其中,处理设备在确定主机侧缓冲器中待下发的命令流的数量时,处理设备可以通过与主机间的通信链路,轮询主机侧缓冲器的读写指针,根据缓冲器的读写指针判断缓冲器中是否存在待下发的命令流。
步骤202,将拉取的所述至少一个命令流读取到本地的流队列中,所述流队列用于存储待执行的命令流。
本实施中,处理设备可以包括用于存储待执行的命令流的流队列。处理设备可以将从缓冲器中拉取的多个命令流,分别读取到不同的流队列。从而,处理设备可以利用命令分发器,将流队列中的命令分发到不同的运算单元进行计算。
在一些可选实施例中,在从缓冲器中拉取多个命令流的情况下,处理设备可以将该多个命令流分别读取到本地不同的流队列中;并行执行不同的流队列中的命令流。提高了处理设备对命令的执行效率。
本实施例中,处理设备可以通过与主机的通信链路,一次性从主机侧的缓冲器中拉取一个命令流。这种以命令流形式从主机侧拉取命令的方式,拉取一个命令流可以实现多个命令的下发,减少了主机与处理设备的通信次数。减轻了主机与处理设备间通信链路的通信开销,提高了主机的调度效率。处理设备的算力也可以得到更加充分的利用。
在一些可选实施例中,步骤201中,通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流,包括:在所述主机侧的缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,从所述主机侧的缓冲器中拉取所述至少两个命令流。
在上述实施例中,在主机侧的缓冲器中包括多个可以被拉取的命令流的情况下,处理设备可以通过通信链路的一次通信,一次性从主机侧的缓冲器中批量拉取多个命令流。在一种可能的实现方式中,在主机侧的缓冲器中包括多个命令流的情况下,处理设备可以通过通信链路的一次通信,一次性从主机侧的缓冲器中批量拉取其中所有的命令流。在另一种可能的实现方式中,在主机侧的缓冲器中包括多个命令流的情况下,处理设备可以通过通信链路的一次通信,一次性从主机侧的缓冲器中所有的命令流中批量拉取其中的部分命令流(多余一个命令流)。
上述实施例中,处理设备可以一次性从主机侧的缓冲器中拉取多个命令流,进一步减少了主机与处理设备的通信次数。从而,大大减轻了主机与处理设备间通信链路的通信开销,提高了主机的调度效率。处理设备的算力也可以得到更加充分的利用。
在步骤201中,处理设备需要确定主机侧缓冲器中待下发的命令流的数量。在缓冲器中存在待下发的命令流,且处理设备本地存在闲置的流队列的情况下,处理设备才从缓冲器中拉取命令流。
处理设备若要确定缓冲器中待下发命令流的数量,需要获取缓冲器的读、写指针。在相关的处理设备获取缓冲器的读、写指针的方式中,需要处理设备通过与主机间的通信链路,轮询主机侧缓冲器的读、写指针。这种“轮询”获取缓冲器读、写指针的方式,需要处理设备通过通信链路大量访问主机,无疑给通信链路造成了通信开销。
为此,本公开提供一种新的指针获取方式,以更少的通信次数使处理设备获取主机侧缓冲器的读、写指针。
对应主机侧缓冲器的读、写指针,在处理设备侧本地设置对应的读、写指针,并按照一定规则同步更新两侧的读、写指针。
例如,可以将主机侧缓冲器的读、写指针存储在本地的主存储中;对应的设置在处理设备侧的读、写指针存储在本地的寄存器上,并按照一定规则同步两侧存储的读、写指针。
该方式中,由于处理设备侧对应设置了缓冲器的读、写指针,所以处理设备不需要访问主机侧,只需要轮询本地的读、写指针,即可根据读、写指针确定主机侧缓冲器中待下发的命令流的数量,大大减少了通过通信链路的通信次数。
以上提供处理设备获取缓冲器读、写指针的方式,仅是进行原理性说明。下面结合本公开提供的命令下发方法,对本公开提供的新的指针获取方式进行详细说明。
本实施例中,可以将缓冲器中的读写指针采用主副本方式进行设置。在主机侧,写指针write-pointer是主,读指针read-pointer是副本;在处理设备侧,写指针write-pointer是副本,读指针read-pointer是主。
为区别两侧的读、写指针方便,可以将主机侧的write-pointer称为写指针,read-pointer称为读指针副本;将处理设备侧的write-pointer称为写指针副本,read-pointer称为读指针。
在步骤102中,主机将至少一个命令流插入到缓冲器中之后,还包括:
主机更新缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;通过所述通信链路,将更新后的写指针的指针信息发送至所述处理设备。
其中,主机向处理设备发送更新后的写指针的指针信息的时机,可以包括多种。
例如,主机每次在缓冲器中插入一个命令流并更新写指针后,将该次更新的写指针的指针信息发送至处理设备。即,主机每更新一次写指针,则通过通信链路向处理设备发送一次更新后的写指针的指针信息。
这种写指针更新方式,可以实时同步两侧的写指针,以便于处理设备能够更加及时的获取主机侧缓冲器的写指针的最新信息。相比于处理设备轮询主机侧的写指针,这种方式只在缓冲器的写指针更新的情况下利用通信链路发送写指针的指针信息,减少了通信次数。
在一种可能地实现方式中,主机将更新后的写指针的指针信息发送至处理设备的时机,可以在缓冲器的写指针更新多次后,将最新的写指针的指针信息发送至处理设备。
上述实现方式中,可以预先设置缓冲器写指针的更新次数。比如,预设缓冲器写指针的更新次数为8次,则在缓冲器中插入8个命令流且写指针更新8次后,才将第8次更新的写指针的指针信息发送至处理设备。
这种写指针的更新方式中,在主机侧缓冲器的写指针累计更新多次后,才利用通信链路将最后更新的写指针的指针信息发送至处理设备。进一步的减少了利用通信链路的通信次数,降低了通信链路的通信开销。
处理设备通过通信链路接收到写指针的指针信息后,可以根据写指针的指针信息更新存储在本地对应的写指针副本。
在步骤202中,处理设备每次将一个命令流读取到流队列中之后,更新本地的读指针;将更新后的所述读指针的指针信息,发送至所述主机。
主机接收所述处理设备通过所述通信链路发送的读指针的指针信息,所述读指针用于表示对所述缓冲器进行读操作的当前位置;根据所述读指针的指针信息,更新主机侧的读指针副本。
主机在根据处理设备发送的读指针的指针信息,更新主机侧的读指针副本后,可以根据读指针副本释放对应的处理设备已经读取到流队列的命令流,从而释放缓冲器的缓存空间。
以上在主机和处理设备两侧,以主副本方式设置两套读写指针,并且可以按照上述实施例的方式对两侧存储的读写指针进行更新。
处理设备不需要通过通信链路访问主机进行指针轮询,只需要轮询本地的读指针和写指针副本,基于本地的读指针和写指针副本,即可确定缓冲器中是否存在待下发的命令流、确定待下发命令流的数量。
从而,在确定本地存在至少一个闲置的流队列的情况下,处理设备可以从缓冲器中拉取一个或者多个命令流。在拉取多个命令流时,将多个命令流分别读取到不同的流队列中进行处理。
由于处理设备只需要轮询本地存储的读写指针,不需要频繁访问主机去轮询缓冲器的读写指针,大大减少了处理设备通过通信链路访问主机的通信次数,可以有效缓解主机与处理设备之间的通信开销,提高主机的调度效率。
参照图3所示的命令下发方法交互流程图。以下实施例中,以主机与处理设备交互的形式,对命令下发方法进行说明。
步骤301,根据待下发到处理设备进行处理的多个命令,生成至少一个命令流。
主机可以根据待下发的多个命令,生成至少一个命令流。例如,可以将需要依次执行的多个命令生成为一个完整的命令流;或者,可以将需要单独执行的一个命令生成为一个完整的命令流。
步骤302,将至少一个命令流插入到缓冲器中。
主机生成命令流后,需要将生成的命令流插入到缓冲器中进行缓存。缓冲器可以起到对命令流进行临时缓存的作用,以方便在需要下发命令时,可以一次性批量将缓冲器中临时缓存的多个命令流下发到处理设备。
步骤303,更新缓冲器的写指针。
在主机将命令流插入到缓冲器中之后,需要对应的更新缓冲器的写指针。主机可以依据不断更新的写指针的指针信息,多次进行写操作,将命令流插入到缓冲器中。
步骤304,将更新后的写指针的指针信息发送至处理设备。
本公开实施例中,由于将缓冲器中的读写指针采用主副本方式进行设置,所以在主机侧的缓冲器更新了写指针之后,需要将写指针的指针信息发送至处理设备,以对应更新处理设备侧设置的写指针副本。
在一种可能的实现方式中,可以在主机侧每次更新写指针后,向处理设备发送更新后的写指针的指针信息。在另一种可能的实现方式中,可以在主机侧多次更新写指针后,将多次更新后最终的写指针的指针信息发送至处理设备。可以进一步的减少主机向处理设备发送指针信息的次数,减少了两者间通信链路的通信开销。
步骤305,更新处理设备侧的写指针副本。
处理设备在接收到主机发送的写指针的指针信息后,需要根据接收的指针信息,对应更新本地的写指针副本。
步骤306,根据本地的读指针和写指针副本的指针信息,确定缓冲器中待下发的命令流的数量。
本公开实施例中,由于将缓冲器中的读写指针采用主副本方式进行设置,两侧指针可以按照一定规则进行指针信息的同步更新。所以,处理设备可以直接访问本地的指针信息,即可确定主机侧缓冲器中待下发的命令流的数量。由于处理设备不需要访问主机侧的指针,相比于处理设备轮询主机侧缓冲器的指针,大大减少了通信链路的通信次数,降低了通信链路的通信开销。
步骤307,将缓冲器中的至少一个命令流传输至处理设备。
在一种可能的实现方式中,处理设备在确定主机侧缓冲器中待下发的命令流的数量后,可以主动从主机侧的缓冲器中拉取一定数量的命令流。例如,可以一次性将缓冲器中所有的命令流拉取到处理设备。这样通过通信链路的一次通信,即可实现多个命令流的批量下发,减少通信链路的通信开销。
步骤308,将至少一个命令流读取到本地的流队列中。
处理设备在拉取到命令流后,需要将命令流读取到本地的流队列中,以存储待拉取的命令流。从而,处理设备可以利用命令分发器,将流队列中的命令分发到不同的运算单元进行计算。
步骤309,每次将一个命令流读取到本地的流队列中之后,更新本地的读指针。
步骤310,将更新后的读指针的指针信息,发送至主机。
步骤311,主机更新主机侧的读指针副本。
处理设备将拉取的命令流读取到本地的流队列中之后,此时主机侧的缓冲器中对应的缓存位置可以释放。本公开实施例中,在每次将命令流读取到本地的流队列中之后,即更新本地对应的读指针,并将更新后的读指针的指针信息发送至主机。主机接收到指针信息后,对应的更新本地的读指针副本。主机可以根据读指针副本的更新,将主机侧缓冲器中对应位置进行缓存释放。
上述实施例中,以主机与处理设备双方交互的方式,对命令下发方法的实现过程进行了完整描述。该命令下发方法,可以以命令流的方式进行命令下发,一次命令流下发实现多个命令的下发,减少了通信链路的通信开销。另外,该方法可以一次通信,将多个命令流同时下发到处理设备,进一步减少了通信链路的通信开销,提高了主机的调度效率。
图4所示,本公开提供了一种命令下发装置,该装置可以执行本公开任一实施例的命令下发方法。该装置可以包括命令流生成模块401、插入模块402和传输模块403。其中:
命令流生成模块401,用于根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令;
插入模块402,用于将所述至少一个命令流插入到缓冲器中;
传输模块403,用于通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。
可选的,所述传输模块403,在用于通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备时,包括:在所述缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,将所述至少两个命令流传输至所述处理设备。
可选的,如图5所示,所述装置还包括:
第一写指针更新模块501,用于更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;
第一指针信息发送模块502,用于通过所述通信链路,将更新后的写指针的指针信息发送至所述处理设备,以由所述处理设备更新处理设备侧的写指针副本。
可选的,如图6所示,所述装置还包括:
第二写指针更新模块601,用于更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;
第二指针信息发送模块602,用于在所述缓冲器的写指针更新次数达到预设次数的情况下,将最后更新的写指针的指针信息发送至所述处理设备。
可选的,如图7所示,所述装置还包括:
指针信息接收模块701,用于接收所述处理设备通过所述通信链路发送的读指针的指针信息,所述读指针用于表示对所述缓冲器进行读操作的当前位置;
读指针副本更新模块702,用于根据所述读指针的指针信息,更新主机侧的读指针副本。
可选的,所述通信链路是PCI-Express链路。
图8所示,本公开提供了一种处理设备,该处理设备可以执行本公开任一实施例的命令下发方法。该处理设备可以包括队列存储器801和微处理器802。其中:
队列存储器801,用于存储流队列;
微处理器802,用于通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流;并将拉取的所述至少一个命令流读取到本地的流队列中,所述流队列用于存储待执行的命令流。
可选的,所述微处理器,在用于通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流时,包括:在所述主机侧的缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,从所述主机侧的缓冲器中拉取所述至少两个命令流。
可选的,如图9所示,所述微处理器,在用于将拉取的所述至少一个命令流读取到本地的流队列中时,包括:在从所述主机侧的缓冲器中拉取多个命令流的情况下,将所述多个命令流分别读取到本地不同的流队列中;所述处理设备还包括:并行调度模块901,用于并行调度相应的计算模块以并行执行所述本地不同的流队列中的命令流。
可选的,所述微处理器,还用于接收主机通过所述通信链路发送的写指针的指针信息;根据所述写指针的指针信息,更新处理设备侧的写指针副本。
可选的,所述微处理器,在用于从主机侧的缓冲器中拉取至少一个命令流时,包括:根据本地的读指针和写指针副本的指针信息,确定所述缓冲器中待下发的命令流的数量;在所述缓冲器中包括至少一个待下发的命令流的情况下,从所述缓冲器中拉取至少一个命令流。
可选的,所述微处理器,在用于将拉取的所述至少一个命令流读取到本地的流队列中时,包括:每次将一个命令流读取到所述本地的流队列中之后,更新本地的读指针;将更新后的所述读指针的指针信息,发送至所述主机,以由所述主机更新主机侧的读指针副本。
可选的,所述处理设备是AI芯片或者GPU。
可选的,所述通信链路是PCI-Express链路。
对于装置实施例或处理设备实施例而言,由于基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例或处理设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开至少一个实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时能够实现本公开任一实施例的命令下发方法。
图10示出了本公开实施例所提供的一种更为具体的计算机设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时能够实现本公开任一实施例的命令下发方法。
其中,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等,本申请并不对此进行限制。
在一些可选实施例中,本公开实施例提供了一种计算机程序产品,包括计算机可读代码,当计算机可读代码在设备上运行时,设备中的处理器执行用于实现如上任一实施例提供的命令下发方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
以上所述仅为本公开的较佳实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
Claims (20)
1.一种命令下发方法,其特征在于,所述方法包括:
根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令;
将所述至少一个命令流插入到缓冲器中;
通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。
2.根据权利要求1所述的方法,其特征在于,所述通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备,包括:
在所述缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,将所述至少两个命令流传输至所述处理设备。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述至少一个命令流插入到缓冲器中之后,还包括:
更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;
通过所述通信链路,将更新后的写指针的指针信息发送至所述处理设备,以由所述处理设备更新处理设备侧的写指针副本。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述至少一个命令流插入到缓冲器中之后,还包括:
更新所述缓冲器的写指针,所述写指针用于表示对所述缓冲器进行写操作的当前位置;
在所述缓冲器的写指针更新次数达到预设次数的情况下,通过所述通信链路,将最后更新的写指针的指针信息发送至所述处理设备,以由所述处理设备更新处理设备侧的写指针副本。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
接收所述处理设备通过所述通信链路发送的读指针的指针信息,所述读指针用于表示对所述缓冲器进行读操作的当前位置;
根据所述读指针的指针信息,更新主机侧的读指针副本。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述通信链路是高速串行计算机扩展总线标准PCI-Express链路。
7.一种命令下发方法,其特征在于,所述方法包括:
通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流;
将拉取的所述至少一个命令流读取到本地的流队列中,所述流队列用于存储待执行的命令流。
8.根据权利要求7所述的方法,其特征在于,所述通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流,包括:
在所述主机侧的缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,从所述主机侧的缓冲器中拉取所述至少两个命令流。
9.根据权利要求7或8所述的方法,其特征在于,所述将拉取的所述至少一个命令流读取到本地的流队列中,包括:
在从所述主机侧的缓冲器中拉取多个命令流的情况下,将所述多个命令流分别读取到本地不同的流队列中;
所述方法还包括:并行执行所述本地不同的流队列中的命令流。
10.根据权利要求7至9中任一项所述的方法,其特征在于,所述方法还包括:
接收主机通过所述通信链路发送的写指针的指针信息;
根据所述写指针的指针信息,更新处理设备侧的写指针副本。
11.根据权利要求7至10中任一项所述的方法,其特征在于,所述从主机侧的缓冲器中拉取至少一个命令流,包括:
根据本地的读指针和写指针副本的指针信息,确定所述缓冲器中待下发的命令流的数量;
在所述缓冲器中包括至少一个待下发的命令流的情况下,从所述缓冲器中拉取至少一个命令流。
12.根据权利要求7至11中任一项所述的方法,其特征在于,所述将拉取的所述至少一个命令流读取到本地的流队列中,包括:
每次将一个命令流读取到所述本地的流队列中之后,更新本地的读指针;
将更新后的所述读指针的指针信息,发送至所述主机,以由所述主机更新主机侧的读指针副本。
13.根据权利要求7至12中任一项所述的方法,其特征在于,所述通信链路是PCI-Express链路。
14.一种命令下发装置,其特征在于,所述装置包括:
命令流生成模块,用于根据待下发到处理设备进行处理的多个命令,生成至少一个命令流;其中,每个所述命令流中包括至少一个命令;
插入模块,用于将所述至少一个命令流插入到缓冲器中;
传输模块,用于通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备。
15.根据权利要求14所述的装置,其特征在于,所述传输模块,在用于通过与所述处理设备间的通信链路,将所述缓冲器中的至少一个命令流传输至所述处理设备时,包括:
在所述缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,将所述至少两个命令流传输至所述处理设备。
16.一种处理设备,其特征在于,所述处理设备包括:
队列存储器,用于存储流队列;
微处理器,用于通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流;并将拉取的所述至少一个命令流读取到本地的流队列中,所述流队列用于存储待执行的命令流。
17.根据权利要求16所述的处理设备,其特征在于,所述微处理器,在用于通过与主机间的通信链路,从主机侧的缓冲器中拉取至少一个命令流时,包括:
在所述主机侧的缓冲器中包括至少两个命令流的情况下,通过所述通信链路的一次通信,从所述主机侧的缓冲器中拉取所述至少两个命令流。
18.根据权利要求16或17所述的处理设备,其特征在于,所述微处理器,在用于将拉取的所述至少一个命令流读取到本地的流队列中时,包括:
在从所述主机侧的缓冲器中拉取多个命令流的情况下,将所述多个命令流分别读取到本地不同的流队列中;
所述处理设备还包括:
并行调度模块,用于并行调度相应的计算模块以并行执行所述本地不同的流队列中的命令流。
19.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一所述的方法,或者实现权利要求7-13任一所述的方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1-6任一所述的方法,或者实现权利要求7-13任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459860.3A CN114626541A (zh) | 2020-12-11 | 2020-12-11 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
PCT/CN2021/102943 WO2022121287A1 (zh) | 2020-12-11 | 2021-06-29 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459860.3A CN114626541A (zh) | 2020-12-11 | 2020-12-11 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114626541A true CN114626541A (zh) | 2022-06-14 |
Family
ID=81895512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011459860.3A Pending CN114626541A (zh) | 2020-12-11 | 2020-12-11 | 命令下发方法、装置、处理设备、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114626541A (zh) |
WO (1) | WO2022121287A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772311B2 (en) * | 2002-06-24 | 2004-08-03 | Texas Instruments Incorporated | ATAPI device unaligned and aligned parallel I/O data transfer controller |
US10061590B2 (en) * | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
CN111124993B (zh) * | 2018-10-31 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 减小i/o处理时缓存数据镜像时延的方法、设备和程序产品 |
US11061591B2 (en) * | 2018-11-02 | 2021-07-13 | Samsung Electronics Co., Ltd. | Storage device processing stream data, system including the same, and operation method thereof |
-
2020
- 2020-12-11 CN CN202011459860.3A patent/CN114626541A/zh active Pending
-
2021
- 2021-06-29 WO PCT/CN2021/102943 patent/WO2022121287A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022121287A1 (zh) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10078882B2 (en) | Priority-based command execution | |
US10133597B2 (en) | Intelligent GPU scheduling in a virtualization environment | |
US6725457B1 (en) | Semaphore enhancement to improve system performance | |
US10970129B2 (en) | Intelligent GPU scheduling in a virtualization environment | |
US8448172B2 (en) | Controlling parallel execution of plural simulation programs | |
US9418181B2 (en) | Simulated input/output devices | |
CN107729050A (zh) | 基于let编程模型的实时系统及任务构建方法 | |
CN114168200B (zh) | 多核处理器访存一致性的验证系统及方法 | |
KR101704751B1 (ko) | 모듈 간의 타이밍 정보를 이용하는 멀티코어 시스템의 시뮬레이터, 및 그 시뮬레이션 방법 | |
WO2006123547A1 (ja) | 情報処理装置、システム、方法およびプロセッサ | |
US8972693B2 (en) | Hardware managed allocation and deallocation evaluation circuit | |
CN115017030A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN114626541A (zh) | 命令下发方法、装置、处理设备、计算机设备及存储介质 | |
CN110321092B (zh) | 向单个显示频率同步视频输出 | |
US11942962B2 (en) | Methods and apparatus to write data to registers | |
JP2012203451A (ja) | 半導体集積回路シミュレーション装置及び半導体集積回路のシミュレーション方法 | |
US10162913B2 (en) | Simulation device and simulation method therefor | |
US11416167B2 (en) | System, control method thereof, and storage medium | |
CN115168256A (zh) | 中断控制方法、中断控制器、电子设备、介质和芯片 | |
JP2009252113A (ja) | 情報処理装置、その制御方法及びコンピュータプログラム | |
CN116711279A (zh) | 用于多个虚拟ecu的模拟和测试的系统和方法 | |
CN104050131A (zh) | 片上系统及其操作方法 | |
JP4802266B2 (ja) | コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法 | |
US20140112346A1 (en) | System and method providing forward compatibility between a driver module and a network interface | |
CN103729216A (zh) | 一种arinc429板卡数据输入输出方法 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40067407 Country of ref document: HK |