CN114691312A - 片间通信的电路、方法和系统 - Google Patents
片间通信的电路、方法和系统 Download PDFInfo
- Publication number
- CN114691312A CN114691312A CN202011624931.0A CN202011624931A CN114691312A CN 114691312 A CN114691312 A CN 114691312A CN 202011624931 A CN202011624931 A CN 202011624931A CN 114691312 A CN114691312 A CN 114691312A
- Authority
- CN
- China
- Prior art keywords
- task
- unit
- response
- arithmetic unit
- execution
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multi Processors (AREA)
Abstract
本公开提供一种片间通信的电路、方法和系统,该方法可以实现在计算装置中,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。
Description
技术领域
本公开涉及人工智能领域,更具体地,涉及多处理器的片间通信领域。
背景技术
在神经网络的训练中,如果单机训练规模为X的神经网络耗时T,那么当有N台相同机器训练该神经网络时,理想状态下,训练耗时应该为T/N,这也被称为理想线性加速比。但是,理想线性加速是不现实的,因为引入了通信开销。虽然计算部分是可以线性加速的;但是通信部分(如AllReduce算法)是客观存在且无法消除的。
因此,为了提升芯片的算力和运行效率,需要提升片间通信的效率。
此外,在现有技术中,只有当前任务内核kernel执行结束后,当前任务才会释放运算单元的使用权,存在运算单元的运算资源被浪费的问题。
发明内容
根据本公开的第一方面,提供一种在片间通信电路中进行任务调度的方法,所述片间通信电路包括第一调度单元和第一运算单元,所述方法包括:通过所述第一运算单元从所述第一调度单元接收第一任务描述信息,并根据所述第一任务描述信息来执行第一任务;在所述第一运算单元处,响应于第一特定事件的产生而挂起第一任务的执行;在所述第一运算单元处,响应于挂起第一任务的执行而执行第二任务。
根据本公开的第二方面,提供一种在片间通信电路中进行任务调度的方法,所述片间通信电路包括第二调度单元、第二运算单元和第二存储单元,所述方法包括:通过所述第二运算单元从所述第二调度单元接收第三任务描述信息;通过所述第二运算单元从所述第二存储单元提取待处理数据,并根据所述第三任务描述信息对所述待处理数据执行第三任务;在所述第二运算单元处,响应于第二特定事件的产生而挂起第三任务的执行;在所述第二运算单元处,响应于所述挂起第三任务的执行而执行第四任务。
根据本公开的第三方面,提供一种用于片间通信的电路,包括第一调度单元和第一运算单元,其中所述第一运算单元配置为:从所述第一调度单元接收第一任务描述信息,并根据所述第一任务描述信息来执行第一任务;响应于第一特定事件的产生而挂起第一任务的执行;响应于挂起第一任务的执行而执行第二任务。
根据本公开的第四方面,提供一种用于片间通信的电路,包括第二调度单元、第二运算单元和第二存储单元,其中,所述第二运算单元配置为,从所述第二调度单元接收第三任务描述信息;从所述第二存储单元提取待处理数据,并根据所述第三任务描述信息对所述待处理数据执行第三任务;响应于第二特定事件的产生而挂起第三任务的执行;响应于所述挂起第三任务的执行而执行第四任务。
根据本公开的第五方面,提供一种芯片,包括如上所述的电路。
根据本公开的第六方面,提供一种用于片间通信的系统,包括第一芯片和第二芯片。
根据本公开的第七方面,提供一种电子设备,包括如上所述的芯片或系统。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出了根据本公开一个实施方式的片间通信的系统示意图;
图2示出了根据本公开另一个实施方式的用于片间通信的电路的示意图;
图3示出了根据本公开另一个实施方式的用于片间通信的电路的示意图;
图4示出了根据本公开的另一个实施方式的用于片间通信的电路的示意图;
图5示出了根据本公开另一个实施方式的进行片间通信的系统的示意图;
图6示出了根据本公开的一个实施方式的一种用于进行片间通信的方法;
图7示出了一种组合处理装置;
图8提供了一种示例性的板卡;
图9a和图9b示出了根据本公开一个实施方式的在片间通信电路中进行片间通信的方法;
图10a和图10b示出了根据本公开另一个实施方式的在片间通信电路中进行片间通信的方法;
图11示出了本公开中将执行中的任务休眠(挂起)-唤醒的一种应用场景。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
图1示出了根据本公开一个实施方式的片间通信的系统示意图。
如图1所示,该系统包括了芯片1和芯片2,其中芯片1包括第一调度单元JS(JobScheduler)1,第一运算单元TC1,发送单元TX,第一内存管理子单元SMMU(MemoryManagement Unit)11,第二内存管理子单元SMMU12以及第一存储单元LLC/HBM1;芯片2包括第二调度单元JS2,第二运算单元TC2,接收单元RX,第三内存管理子单元SMMU21,第四内存管理子单元SMMU22以及第二存储单元LLC/HBM2。
运算单元TC1和TC2可以是各种类型的处理内核,例如IPU(图像处理单元)等。
如图1所示,第一调度单元JS1从主机1接收任务描述信息(例如任务描述符),该任务描述信息包括了任务ID、任务的类别、数据尺寸、数据地址、参数尺寸、处理内核(例如第一运算单元)配置信息、处理内核的地址信息以及任务的拆分信息等等。需要理解的是,在从主机首次接收信息的时候,还包括了从主机接收待要处理的数据。而在运行过程中,则数据可以在芯片之间传送,第一调度单元JS1仅接收任务描述信息,而无需每次都接收待要处理的数据。
第一调度单元JS1将接收到的任务描述信息加载到第一运算单元TC1,第一运算单元TC1在接收到加载的任务描述符之后向第一调度单元JS1反馈应答消息,以表示接收成功。
第一运算单元TC1可以根据任务描述信息将任务拆分为多个子任务(job),并以所拆分出来的子任务的颗粒度来将任务调度分发至所述第一运算单元的至少一个处理器核上,以使得该第一运算单元的至少一个处理核能够并行地处理该任务。
第一运算单元TC1在对接收到的数据进行处理之后,还可以通过通信总线将处理后数据存在到第一存储单元LLC(Last Level Cache,最后一级缓存)/HBM1(高带宽存储器,High Bandwidth Memory)中。第一内存管理子单元SMMU11负责实现第一存储单元LLC/HBM1中的内存分配、地址转换等功能。
接下来,发送单元Tx通过第二内存管理单元SMMU12从第一存储单元LLC/HBM1中获取处理后数据,并在第一调度单元JS1的触发下,基于从主机1接收到的第一片间通信描述信息1,将处理后数据传送到芯片2中。其中,该片间通信描述信息1用以描述芯片间的通信任务。
芯片2中的接收单元Rx基于从主机接收的第二片间通信描述信息2从芯片1的发送单元接收处理后数据,并将接收到的处理后数据通过第三内存管理子单元SMMU21,经由通信总线存储到芯片2的第二存储单元LLC/HBM2中。
当接收单元完成处理后数据的接收之后,通知第二调度单元JS2。第二调度单元JS2从主机2接收与主机1发送的第二片间通信描述信息相关联的任务描述模板,并根据该第二片间通信描述信息和所述任务描述模板确定通信任务。
第二处理单元TC2通过第四内存管理单元SMMU22从第二存储单元LLC/HBM2中获取所存储的处理后数据,并进行处理。
在图1所示的方案中,发送单元Tx相对于第一运算单元TC1而言处于主控的角色,其负责了将数据从第一存储单元LLC/HBM1中的提取,以及数据向片外的发送,而并不受到第一运算单元TC1的控制。
在图1所示的方案中,数据需要在芯片内部进行缓存和读取,然后再进行发送和处理,这种缓存的读取的时间将容易导致通信时间的延长,并进而导致多芯片系统处理能力的下降。
此外,如果芯片1中由于从第一存储单元LLC/HBM1中读取数据时产生故障或者时间过程,那么将会影响发送单元Tx将数据从芯片1发送到芯片2,这将导致芯片2长时间的等待。
图2示出了根据本公开另一个实施方式的用于片间通信的电路的示意图。如图2所示,该电路包括:第一调度单元211、第一运算单元212和发送单元213,其中,所述第一调度单元211配置为接收第一任务描述信息;所述第一运算单元212配置为从所述第一调度单元211接收所述第一任务描述信息,并根据所述第一任务描述信息对第一数据进行处理,以得到第一处理数据;所述第一运算单元212进一步配置为将所述第一处理数据传送到所述发送单元213;所述发送单元213配置为向片外发送所述第一处理数据。
如图1所示的系统不同之处在于,在图2所示的系统中,第一调度单元211仅仅负责向第一运算单元212传送第一任务描述信息,而无需对发送单元213进行调度和控制。
第一运算单元212接收第一任务描述信息并根据第一任务描述信息来对第一数据进行处理。处理后第一数据可以直接发送给发送单元213,而发送单元213无需从存储单元中获取处理后数据。
在本实施方式中,发送单元213并不作为主控制方,而是在第一运算单元212的控制之下进行数据的发送。在另一个实施方式中,发送单元213在第一运算单元212的控制下,响应于接收到所述第一处理数据而发送所述第一处理数据。在本实施方式中,发送单元的职责较为单一,从而发送单元213的功能和/或结构也能得到简化。
进一步地,在如图1所示的实施方式中,主机直接将片间通信描述信息下发给发送单元213,发送单元213根据从主机接收到的片间通信描述信息系来与其他芯片上的收发单元进行交互。而在如图2所示的实施方式中,是通过第一运算单元212直接对发送单元213的通信进行控制,换言之第一运算单元212中可以包括片间通信描述信息,从而便于对发送单元213与外部的通信进行控制。
上述的第一数据可以来自于主机,也可以来自于其他芯片处理后生成的数据。
图3示出了根据本公开另一个实施方式的用于片间通信的电路的示意图。
如图3所示,本公开的电路进一步包括第一存储单元214,所述第一运算单元212进一步配置为将所述第一处理数据传送到所述第一存储单元214以便于缓存所述第一处理数据。
在本公开的上述技术方案中,第一运算单元212除了将第一处理数据发送到发送单元213之外,还将第一处理数据发送到第一存储单元214进行存储,以便于对第一处理数据的进一步使用。
根据本公开的一个实施方式,所述第一存储单元可以包括第一内存管理子单元2141和第一缓存子单元2142,所述第一内存管理子单元2141配置为管理所述第一处理数据在所述第一缓存子单元2142上的存储。第一内存管理子单元2141负责实现存储单元中的内存分配、地址转换等功能,第一缓存子单元2142可以是片上缓存器,其负责将第一运算单元212经过处理的数据进行缓存。
可以看出的是,与图1所示的实施方式相比,在图3所示的实施方式中,发送单元213未从第一缓存子单元2142中读取数据,而是直接将从第一运算单元212处接收的第一处理数据发送到其他芯片。
这样的方式减少或消除了发送单元213从第一缓存子单元2142中读取数据产生的时间开销,提升了通信的效率。
此外,发送单元213无需从第一缓存子单元2142中获取数据,因此也无需再调用一个新的内存管理子单元,这与图1中所示的利用两个内存管理子单元进行数据的存储和读取具有显著的区别。
图4示出了根据本公开的另一个实施方式的用于片间通信的电路的示意图。
如图4所示,该电路可以包括:第二调度单元421、第二运算单元422、接收单元423和第二存储单元424。
接收单元423可以接收从该电路外部接收数据,并将数据发送到第二存储单元424进行缓存。同时,接收单元423还可以将接收到数据这样的事件通知给第二调度单元421,从而第二调度单元421知晓数据已进入到该电路(芯片)中。
第二调度单元421可以接收第二任务描述信息,指示所述第二运算单元422对所述接收单元423所接收的数据进行处理。第二任务描述信息可以从主机接收,并将接收到的第二任务描述信息加载到第二运算单元422中。
第二任务描述信息可以独立于上文中描述的第一任务描述信息,也可以与第一任务描述信息相关联,例如第一任务描述信息和第二任务描述信息可以是一个任务描述信息的两个不同部分。
所述第二运算单元422可以配置为从所述第二存储单元424中获取由接收单元423接收并存储在第二存储单元424中的数据,并从所述第二调度单元421处接收所述第二任务描述信息;在接收到第二任务描述信息和数据之后,可以根据所述第二任务描述信息对所述第一处理数据进行处理,以得到第二处理数据。
与图1所示的实施方式不同之处在于,在图1所示的实施方式中,主机需要向接收单元Rx发送片间通信描述信息,以控制接收单元Rx对数据的接收和转发;而在如图4所示的实施方式中,接收单元423将无需从主机中接收片间通信描述信息,而只是将接收数据通知给第二调度单元421。
更进一步地,在图1所示的实施方式中,接收单元Rx作为从属方接受主机的控制;而在图4所示的实施方式中,接收单元423作为主控方来进行数据的接收、通知和存储等操作。
根据本公开的一个实施方式,第二存储单元424可以包括第二内存管理子单元4241、第三内存管理子单元4242和第二缓存子单元4243。
在图4中,第二内存管理子单元4241可以管理来自于接收单元423的数据到第二缓存子单元4243上的存储。
而第三内存管理子单元4242可以管理来自于第二缓存子单元4243的数据到第二运算单元422的传送。
图2-图4所示的电路可以形成在芯片中,也可以形成在其他设备中。
图5示出了根据本公开另一个实施方式的进行片间通信的系统的示意图。
如图5所示,本公开的片间通信系统可以包括第一芯片510和第二芯片520,其中,所述第一芯片510可以包括第一调度单元511、第一运算单元512和发送单元513;第二芯片520可以包括第二调度单元521、第二运算单元522、接收单元523和第二存储单元524。
在图5所示的系统中,第一调度单元511接收第一任务描述信息,例如可以从第一主机中接收该第一任务描述信息。
第一运算单元512可以从所述第一调度单元511接收该第一任务描述信息,并根据所述第一任务描述信息对第一数据进行处理,以得到第一处理数据。
在图5中,第一数据可以是第一调度单元511从第一主机中接收的,也可以是从其他芯片直接或间接接收的,本公开并不限制第一数据的来源。例如在该系统首次启动或者初始化时,第一调度单元511可以随同第一任务描述信息一起从第一主机接收第一数据。当第一数据进入如图5所示的系统之后,则可以在各个芯片之间进行处理。
第一运算单元512在根据第一任务描述信息对该第一数据进行处理之后,可以生成第一处理数据。然后,第一运算单元512可以将所生成的第一处理数据直接发送到发送单元513以便于向第二芯片520发送该第一处理数据。
可选地,所述第一芯片510还可以包括第一存储单元514,其中第一运算单元512进一步配置为将所述第一处理数据传送到所述第一存储单元514以便于缓存所述第一处理数据。
第一处理数据在由第一运算单元512发送给发送单元513的之前,同时或者之后,还可以将该第一处理数据通过通信总线缓存到第一存储单元514中以便于后续的使用。如果未来需要调用第一处理数据,则可以从该第一存储单元514中读取相应的数据,而无需再从第一主机中接收。
第一存储单元514可以包括第一内存管理子单元5141和第一缓存子单元5142,第一存储单元510可以通过所述第一内存管理子单元5141来管理所述第一处理数据在所述第一缓存子单元5142上的存储。
发送单元513在接收到该第一处理数据之后,可以将该第一处理数据发送到第二芯片520。与图1所示的实施方式不同的是,在图1所示的实施方式中,发送单元Tx起到主控作用,而在本实施方式中,发送单元513受控于第一运算单元512,而不起到主控作用。
第二芯片520中的接收单元523可以从第一芯片510(具体而言是第一芯片510中的发送单元513)接收第一处理数据。
在接收到该第一处理数据之后,则将该第一处理数据发送到第二存储单元524,并且将接收到所述第一处理器数据的消息通知给所述第二调度单元521。
第二调度单元521接收第二任务描述信息。第二任务描述信息与第一任务描述信息可以说独立,也可以是相互关联的,例如可以是同一个总体任务中不同的分任务。
接下来,第二调度单元521可以根据该第二任务描述信息指示第二运算单元522对该第一处理数据进行另外的处理。需要理解的是,这里所述的“指示第二运算单元522对该第一处理数据进行处理”意味着第二调度单元521向第二处理单元522发送开始处理的指令,而不是必须向该第二处理单元522发送第一处理数据本身。
第二运算单元522可以从第二调度单元521接收第二任务描述信息,并从第二存储单元524中获取第一处理数据,并根据所述第二任务描述信息对所述第一处理数据进行处理,以得到第二处理数据。
第二存储单元524可以包括第二内存管理子单元5241、第三内存管理子单元5242和第二缓存子单元5243。第二内存管理子单元5241可以管理来自于接收单元523的第一处理数据到第二缓存子单元5243上的存储,而第三内存管理子单元5242可以管理来自于第二缓存子单元5243的数据到第二运算单元522的传送。
在图5所示的系统中,接收单元523无需再从第二主机中接收通信任务描述信息,而可以直接从第一芯片510中接收第一处理数据。
需要理解的是,上文中为了清楚起见,第一芯片510仅作为数据发送角色时,其包括了发送单元513,而第二芯片520仅作为数据接收角色时,其包括了接收单元523,但在实际的应用和产品中,发送单元513和接收单元523通常结合为一个收发单元,既负责接收,也负责发送,因此发送单元513和接收单元523在本文中虽然表现为两个不同的实体,但在实际的应用和产品中本质上为同一个实体。
此外,第一运算单元512与第二运算单元522可以是同一个运算单元,第一调度单元511与第二调度单元521可以是同一个调度单元,第一存储单元514与第二存储单元524可以是同一个存储单元,他们只是在所处的芯片作为数据发送角色和数据接收角色时表现有所不同。例如,第一存储单元514实际上可以与第二存储单元524具有相同的内部结构,换言之,第一芯片510和第二芯片520具有相同的结构,二者在批量生产时在结构上并无不同。
图6示出了根据本公开的一个实施方式的一种用于进行片间通信的方法,包括:在操作S610,通过第一调度单元接收第一任务描述信息;在操作S620,通过第一运算单元来根据所述第一任务描述信息对第一数据进行处理,以得到第一处理数据;在操作S630,通过第一运算单元将所述第一处理数据传送到发送单元;以及在操作S640,通过所述发送单元向片外发送所述第一处理数据。
图9a示出了根据本公开另一个实施方式的在片间通信电路中进行任务调度的方法。下面结合图2-图3来详细描述图9a-图9b所述的方法。
如图9a所示,所述片间通信电路可以包括第一调度单元211和第一运算单元212(如图2和图3所示),所述方法包括:在操作S910,通过所述第一运算单元212从所述第一调度单元211接收第一任务描述信息,并根据所述第一任务描述信息来执行第一任务;在操作S920,在所述第一运算单元212处,响应于第一特定事件的产生而挂起第一任务的执行;在操作S930,通过所述第一运算单元212响应于挂起第一任务的执行而执行第二任务。
通常,第一运算单元212可以从第一调度单元211中接收一个任务描述信息,并执行该第一任务描述信息所描述的任务,例如进行通信、运算、任务加载等等。
第一运算单元212在执行第一任务时,可能会由于特定的事件而引起任务执行的中断,从而第一运算单元212将发生中断的任务挂起,并将该任务发生中断的点记录在第一运算单元212本地。此外,还在第一调度单元212处记录该任务发生中断的点,从而第一运算单元212和第一调度单元212均可以知晓任务发生中断的位置。
在现有技术中,如果某个任务发生中断,则该第一运算单元212可能会停止处理并等待任务的恢复。例如,第一运算单元212只有在一个任务内核(kernel)执行结束之后,才会交出第一运算单元212对该任务内核的使用权,而在该任务内核尚未完全结束时,一直处于等待状态。显然,这会导致第一运算单元212的运算资源的浪费。
而在本公开的技术方案中,第一运算单元212在挂起前一个任务之后,无需停止工作,而可以开始执行新的任务。
新的任务可以预先已存储在第一运算单元212处,从而第一运算单元212在挂起前一个任务后,即从本地获取新的任务并执行。新的任务也可以由第一调度单元211来调度。
需要理解的是,第一调度单元211向第一运算单元212调度新的任务与第一运算单元212是否挂起前一个任务并不存在必然的依赖关系。例如,在第一运算单元212挂起前一个任务之前,第一调度单元211可以先向第一运算单元212发送一个新的任务描述信息,一旦第一运算单元212挂起了前一个任务,则可以马上开始执行新调度的任务。
在另一个实施方式中,在第一运算单元212在挂起之前的一个时间段内,可以通知第一调度单元211其将要在特定时间段内挂起当前的任务;由此,第一调度单元211接收到该通知后,可以在该时间段内向第一运算单元212发送一个新的任务描述信息,一旦第一运算单元212挂起了前一个任务,则可以马上开始执行新调度的任务。
在另一个实施方式中,如图9b所示。在该实施方式中,操作S930可以包括:在操作S931,在所述第一调度单元211处,响应于所述第一运算单元212挂起第一任务的执行,向所述第一运算单元212发送第二任务描述信息;在操作S933,在所述第一运算单元212处,响应于接收到所述第二任务描述信息,执行所述第二任务。
在该实施方式中,第一调度单元211可以监测第一运算单元212是否要挂起一个任务,一旦该第一调度单元211监测到第一运算单元212挂起了一个任务,则为了避免第一运算单元212由于停止工作而浪费运算资源,可以向该第一运算单元212调度新的任务信息,以便于第一运算单元212在挂起一个任务后,可以开始执行另一个任务,从而提升运算效率。
需要理解的是,图9b中的虚线表示“挂起”的通知可以存在,也可以不存在,即第一调度单元调度新的任务并不必然取决于第一运算单元211是否挂起了任务。此外,在上述操作中,并不必然是如标号所示的顺序,而是可以根据实际情况有所变化。例如,如果第一调度单元211需要对第一运算单元212挂起第一任务的执行做出响应之后再向第一运算单元212发送第二任务描述信息,那么操作S931处于操作S920之后,但如果第一调度单元211向第一运算单元212发送第二任务描述信息无需依赖于第一运算单元212是否挂起,那么操作S931可以处于操作S920之前,同时或者之后。
进一步如图2和图3所示,所述片间通信电路可以进一步包括发送单元213,在所述发送单元213处,从所述第一运算单元接收已处理数据,并向片外发送所述已处理数据,其中,响应于第一特定事件的产生而挂起第一任务的执行包括:响应于所述发送单元对所述已处理数据的发送被阻塞而挂起第一任务的执行。
发送单元213负责从一个芯片向另外一个芯片发送数据和消息,而发送单元213在发送数据时可能会出现数据反压,这将导致第一运算单元212停止对数据进行处理。数据反压的情况包括多种,例如,通往下游芯片的通道出现拥塞而使得数据或消息无法正常发送;下游芯片的存储能力不足而不能再接收新的数据或消息;或者下游芯片的处理能力不足而不能再进一步处理所接收的数据或消息。在现有技术中,一旦出现数据反压,则第一运算单元212将暂时停止工作,并等待数据反压的结束;当数据反压的情况结束时,则该第一运算单元重新开始处理当前的任务,显然这样的工作过程容易造成处理能力的浪费。而在本公开的技术方案中,当发送单元213处出现数据反压时,则第一调度单元211指示第一运算单元212挂起当前的任务,记录挂起的位置,并指示第一运算单元212执行新的任务。这将显著地提升第一运算单元212的效率。
进一步如图3所示,所述片间通信电路可以进一步包括第一存储单元214,所述第一存储单元214配置为从所述第一运算单元212接收已处理数据以对所述已处理数据进行缓存,其中,响应于第一特定事件的产生而挂起第一任务的执行包括:响应于所述第一存储单元214对所述已处理数据缓存失败而挂起第一任务的执行。
如上文结合图3所描述的那样,第一运算单元212的第一处理数据除了会发送给发送单元213以便于向其他芯片发送时,还会发送到第一存储单元214进行存储,以便于后续的进一步使用。
第一存储单元214可能由于各种原因而不能对数据进行进一步的存储,例如某个任务的数据量过大,导致第一存储单元214无法容纳大量的数据。在此情况下,第一运算单元212可能会暂停工作以等待第一存储单元214中的数据被转移到其他位置,并且在第一存储单元214可用的时候重新开始工作在同一个任务上。在第一运算单元212中出现不必要的空闲时间明显是不期望的。
根据本公开的一个实施方式,如图3所示,所述第一存储单元214可以包括第一内存管理子单元2141和第一缓存子单元2142,所述第一内存管理子单元2141可以配置为管理所述已处理数据在所述第一缓存子单元上2142的存储;其中响应于所述第一内存管理子单元2141和所述第一缓存子单元2142中至少一个对所述已处理数据缓存失败而挂起第一任务的执行。
对第一运算单元212的已处理数据进行缓存失败还可能是第一内存管理子单元2141与第一缓存子单元2142中某一者或二者发生故障而引起的。
上文中描述了第一运算单元212之外的其他资源由于不能很好地对已处理数据进行传输或者存储而引起第一运算单元212挂起当前执行的任务,但第一运算单元212挂起当前执行的任务并不完全由其自身之外的原因造成。
根据本公开的一个实施方式,响应于第一特定事件的产生而挂起第一任务的执行包括:响应于第一任务中包括挂起指令而挂起所述第一任务的执行。
根据上述实施方式,在某些情况下,第一运算单元212所执行的任务本身(例如一个任务内核kernel)可能会存在主动指示第一运算单元212挂起的指令,从而当该任务执行到该指令时,则第一运算单元212可以根据该指令停止工作并挂起当前任务。在现有技术中,如上文所述,只有当所有该kernel被执行完毕之后才执行新的任务,但在本公开的实施方式中,第一调度单元211监测到该第一运算单元212停止运算或者被挂起时,则重新为第一运算单元212调度新的任务,以充分利用第一运算单元212的运算能力。
为了便于恢复被挂起的任务,根据本公开的一个实施方式,可以在所述第一运算单元和第一调度单元处建立任务执行列表,所述任务执行列表至少包括第一任务被挂起的位置。
每当一个任务被挂起,则任务中会产生任务执行的断点,每当一个任务被挂起,则可以在第一运算单元212和/或第一调度单元211中存储该任务被挂起的位置。例如,可以通过索引来指向被挂起任务将要执行时所需的信息,包括但不限于任务的id、任务将要执行的地址、继续执行任务时需要的数据等等。如果被挂起的任务为多个,则可以形成列表,列表中的条目可以存储每个被挂起任务将执行时所需的上述信息。每当一个被挂起的任务被恢复,则可以根据该任务被挂起的位置来恢复对该被挂起任务的执行。恢复被挂起任务的执行可以包括根据被挂起任务的id,从将要执行的地址开始,读取继续执行任务所需的数据等等。
可以根据所述第一特定事件的结束来根据被挂起的位置来恢复对所述第一任务的执行。如上文所述,第一特定事件可以包括多种情形,例如发送单元213对已处理数据的发送被阻塞则会使得第一运算单元212将任务挂起,那么如果发送数据的阻塞已经消除,则可以恢复被挂起的任务;在另外一种情形下,第一存储单元对已处理数据的存储失败也会导致第一任务被挂起,那么在此情形下,如果对已处理数据的存储恢复正常,可以恢复该挂起的任务;在又一种情形下,第一任务中包括的挂断指令指示挂断的期限已经到期,那么根据第一任务的指示,可以重新恢复对第一任务的执行。
而当被挂起的任务为多个时,可以根据多种顺序或方式来恢复被挂起任务的执行。例如可以随机地恢复对所述多个任务中一个的执行;或者可以根据多个任务的优先级来首先恢复具有最高优先级的任务的执行。
还可以根据被挂起任务的等待时间来确定优先被恢复的任务。优选地,为了避免某些任务被挂起的时间太长,可以首先恢复那些被挂起时间最长的任务;或者,可以为每个挂起的任务设置定时器,一旦定时器到期,则挂起当前的任务,而恢复定时器到期的任务。
上文中以一个作为发送角色的电路为例描述了本公开进行片间通信的方法,下面结合图4和图5来描述作为接收角色的电路中进行任务调度的方法。
图10a示出了根据本公开另一个实施方式的在片间通信电路中进行片间通信的方法。
结合图4和图5,如图10a所示,所述片间通信电路可以包括第二调度单元421、第二运算单元422和第二存储单元424,所述方法包括:在操作S1010,所述第二运算单元422从所述第二调度单元421接收第三任务描述信息。
操作S1010与图9a和图9b中的操作S910是相同的,即第二调度单元421向第二运算单元422发送一个任务描述符,以使得第二运算单元422可以根据接收到的任务描述符执行相应的任务。
在操作S1020,所述第二运算单元422从所述第二存储单元424提取待处理数据,并根据所述第三任务描述信息对所述待处理数据执行第三任务。
作为接收方的片间通信电路,第二运算单元422执行第三任务所需的数据可以从第二存储单元424中提取。第二存储单元424中的数据可以是从接收单元423中接收的。
以图5为例,尽管在本文中编号并不相同,但图5中的第二运算单元522可以从第二存储单元523中提取所需的数据,而第二存储单元523中的数据可以由接收单元523从另外一个芯片的发送单元513处接收。
由此,根据本公开的一个实施方式,所述片间通信电路进一步包括接收单元423,在所述接收单元处,从片外接收待处理数据,并发送到第二存储单元进行存储。接收单元423在接收到数据之后,可以通知第二调度单元421,从而第二调度单元421可以向第二运算单元422发送能够对接收的数据进行处理的第三任务描述信息。
接下来,在操作S1030,在所述第二运算单元422处,响应于第二特定事件的产生而挂起第三任务的执行。
第二特定事件可以包括多种情形,例如当接收单元423处没有用于第三任务的可接收数据时,则第二运算单元422可以挂起第三任务的执行,以避免第二运算单元422进入空闲状态而浪费算力。
在操作S1040,可以通过第二运算单元处响应于所述挂起第三任务的执行而执行第四任务。
如上文所述,在现有技术中,如果某个任务被挂起,则该第二运算单元422可能会停止处理并等待任务的恢复。例如,第二运算单元422只有在一个任务内核(kernel)执行结束之后,才会交出第二运算单元422对该任务内核的使用权,而在该任务内核尚未完全结束时,一直处于等待状态。显然,这会导致第二运算单元422的运算资源的浪费。
而在本公开的技术方案中,第二运算单元422在挂起前一个任务之后,无需停止工作,而可以开始执行新的任务。
新的任务可以预先已存储在第二运算单元422处,从而第二运算单元422在挂起前一个任务后,即从本地获取新的任务并执行。新的任务也可以由第二调度单元421来调度。
需要理解的是,第二调度单元421向第二运算单元422调度新的任务与第二运算单元422是否挂起前一个任务并不存在必然的依赖关系。例如,在第二运算单元422挂起前一个任务之前,第二调度单元421可以先向第二运算单元422发送一个新的任务描述信息,一旦第二运算单元422挂起了前一个任务,则可以马上开始执行新调度的任务。
在另一个实施方式中,在第二运算单元422在挂起之前的一个时间段内,可以通知第二调度单元421其将要在特定时间段内挂起当前的任务;由此,第二调度单元421接收到该通知后,可以在该时间段内向第二运算单元422发送一个新的任务描述信息,一旦第二运算单元422挂起了前一个任务,则可以马上开始执行新调度的任务。
在另一个实施方式中,如图10b所示,在该实施方式中,操作S1040可以包括:在操作S1041,在所述第二调度单元处,可以向所述第二运算单元发送第四任务描述信息;以及在操作S1043,在所述第二运算单元处,响应于接收到第四任务描述信息,执行所述第四任务描述信息所描述的第四任务。
在该实施方式中,第二调度单元421可以监测第二运算单元422是否要挂起一个任务,一旦该第二调度单元421监测到第二运算单元422挂起了一个任务,则为了避免第二运算单元422由于停止工作而浪费运算资源,可以向该第二运算单元422调度新的任务信息,以便于第二运算单元422在挂起一个任务后,可以开始执行另一个任务,从而提升运算效率。
与图9b相同的是,图10b中的虚线同样表示“挂起”的通知可以存在,也可以不存在。此外,在上述操作中,并不必然是如标号所示的顺序,而是可以根据实际情况有所变化。例如,如果第二调度单元421需要对第二运算单元422挂起第三任务的执行做出响应之后再向第二运算单元422发送第四任务描述信息,那么操作S1041处于操作S1030之后,但如果第二调度单元421向第二运算单元422发送第四任务描述信息无需依赖于第二运算单元422是否挂起,那么操作S1041可以处于操作S1030之前,同时或者之后。
除了响应于所述接收单元423没有可接收数据而挂起第三任务的执行之外,还可以存在其他第二特定事件。
例如,根据本公开的一个实施方式,可以响应于从所述第二存储单元424中提取待处理数据失败而挂起第三任务的执行。
从上文的描述中可以看出,第二运算单元422执行一个任务时通常需要从第二存储单元424中提取执行任务所需的数据,但是,第二存储单元424可能会存在故障,或者从第二存储单元424中提取数据经由的网络被阻塞而无法提取数据。在此情况下,第二运算单元422可以将当前执行的任务挂起,第二调度单元421接收到第二运算单元422挂起的消息后向该第二运算单元422发送新的任务,从而避免第二运算单元422由于挂起任务而处于空闲状态。
第二存储单元424可以包括第二内存管理子单元4241、第三内存管理子单元4242和第二缓存子单元4243;可以通过所述第二内存管理子单元4241管理待处理数据从所述接收单元423到所述第二缓存子单元4243上的存储;可以通过第三内存管理子单元4242管理所述待处理数据从所述第二缓存子单元4243到所述第二运算单元的传送。
对于第二存储单元424而言,可能存在多种原因导致该第二存储单元424在进行数据存储或者数据提取时发生失败。例如第二内存管理子单元4241可能发生故障,导致无法管理对第二缓存子单元4243的存储;而第三内存管理子单元4242可能发生故障,导致无法管理对第二缓存子单元4243的数据提取;或者第二缓存子单元4243可能发生故障,导致数据存储和数据提取均无法实现。
根据本公开的一个实施方式,响应于第二特定事件的产生而挂起第三任务的执行还可以包括:响应于第三任务中包括挂起指令而挂起所述第三任务的执行。
与上文中结合图9a和图9b描述的实施方式相同,在某些情况下,第二运算单元422所执行的任务本身(例如一个任务内核kernel)可能会存在主动指示第二运算单元422挂起的指令,从而当该任务执行到该指令时,则第二运算单元422根据该指令停止工作并挂起当前任务。在现有技术中,如上文所述,只有当所有该kernel被执行完毕之后才执行新的任务,但在本公开的实施方式中,第二调度单元421监测到该第二运算单元422停止运算或者被挂起时,则重新为第二运算单元422调度新的任务,以充分利用第二运算单元422的运算能力。
为了便于恢复被挂起的任务,根据本公开的一个实施方式,可以在所述第二运算单元422和第二调度单元421处建立任务执行列表,所述任务执行列表可以至少包括第三任务被挂起的位置。
每当一个任务被挂起,则任务中会产生任务执行的断点;每当一个任务被挂起,则可以在第二运算单元422和/或第二调度单元421中存储该任务被挂起的位置。例如,可以保存被挂起任务将要执行时所需的信息,包括但不限于任务的id、任务将要执行的地址、继续执行任务时需要的数据等等。如果被挂起的任务为多个,则可以形成列表,列表中的条目可以存储每个被挂起任务将执行时所需的上述信息。每当一个被挂起的任务被恢复,则可以根据该任务被挂起的位置来恢复对该被挂起任务的执行。恢复被挂起任务的执行可以包括根据被挂起任务的id,从将要执行的地址开始,读取继续执行任务所需的数据等等。
可以根据所述第二特定事件的结束来根据被挂起的位置来恢复对所述第三任务的执行。如上文所述,第二特定事件可以包括多种情形,例如接收单元413由于没有可接收数据而挂起第三任务的执行,那么如果出现了可接收数据,则可以恢复被挂起的第三任务;在另外一种情形下,从所述第二存储单元中提取待处理数据失败也会挂起第三任务的执行,那么在此情形下,如果对如果能够正常地提取待处理数据,那么可以恢复该挂起的第三任务;在又一种情形下,第三任务中包括的挂断指令指示挂断的期限已经到期,那么根据第三任务的指示,可以重新恢复对第三任务的执行。
而当被挂起的任务为多个时,可以根据多种顺序或方式来恢复被挂起任务的执行。例如可以随机地恢复对所述多个任务中一个的执行;或者可以根据多个任务的优先级来首先恢复具有最高优先级的任务的执行。
还可以根据被挂起任务的等待时间来确定优先被恢复的任务。优选地,为了避免某些任务被挂起的时间太长,可以首先恢复那些被挂起时间最长的任务;或者,可以为每个挂起的任务设置定时器,一旦定时器到期,则挂起当前的任务,而恢复定时器到期的任务。
本公开还提供一种用于片间通信的电路,包括第一调度单元和第一运算单元,其中所述第一运算单元配置为:从所述第一调度单元接收第一任务描述信息,并根据所述第一任务描述信息来执行第一任务;响应于第一特定事件的产生而挂起第一任务的执行;响应于挂起第一任务的执行而执行第二任务。
根据本公开的一个实施方式,所述第一调度单元配置为,响应于所述第一运算单元挂起第一任务的执行,向所述第一运算单元发送第二任务描述信息;以及所述第一运算单元进一步配置为,响应于接收到所述第二任务描述信息,执行所述第二任务。
本公开还提供一种用于片间通信的电路,包括第二调度单元、第二运算单元和第二存储单元,其中,所述第二运算单元配置为,从所述第二调度单元接收第三任务描述信息;从所述第二存储单元提取待处理数据,并根据所述第三任务描述信息对所述待处理数据执行第三任务;响应于第二特定事件的产生而挂起第三任务的执行;响应于所述挂起第三任务的执行而执行第四任务。
根据本公开的一个实施方式,所述第二调度单元配置为:响应于所述第二运算单元挂起第三任务的执行,向所述第二运算单元发送第四任务描述信息;以及所述第二运算单元进一步配置为,响应于接收到所述第四任务描述信息,执行所述第四任务。
本公开还提供一种芯片,包括如上所述的电路。
本公开还一种用于片间通信的系统,包括第一芯片和第二芯片。
本公开还提供一种电子设备,包括如上所述的芯片或如上所述的系统。
图11示出了本公开中将执行中的任务休眠(挂起)-唤醒的一种应用场景。
如图11所示,运算单元20和调度单元10之间可以互相通信,并且二者的主控角色也在发生变化。需要理解的是,图11中的运算单元可以与上文中的TC1,TC2(如图1所示)、第一运算单元212和512以及第二运算单元422和522相对应,而调度单元10可以与上文中的JS1,JS2(如图1所示),第一调度单元211和511以及第二调度单元421和521相对应。
如图11所示,当运算单元20在处理任务时,其处于主控状态。当由于特定事件的发生而导致运算单元20需要将任务挂起时,其向调度单元10发送“休眠”通知,以告知调度单元10该运算单元20将要把任务挂起,使得该任务将处于休眠。此时,运算单元20将任务被挂起时的断点保存起来,并将该断点信息同步给调度单元10。
此时,调度单元10进入主控状态,在此状态下,调度单元10将调度新的任务给运算单元20,以使得运算单元20在将上一任务挂起之后开始执行新的任务,从而运算单元20再次进入主控状态。当该上述被挂起的任务的中断事件结束之后,调度单元10可以唤醒该被挂起的任务。
因此可以看出,在本公开的技术方案中,运算单元20不会因为特定事件的发生而被总是挂起,而是经常或总是处于运行和处理状态,这能够提升运算单元20的利用率,并进一步提升整个系统的运算能力。
本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图7示出了一种组合处理装置700,其包括上述的计算装置702,通用互联接口704,和其他处理装置706。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图7为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置708,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图8,其提供了一种示例性的板卡,上述板卡除了包括上述芯片802以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件804、接口装置806和控制器件808。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元810。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备812(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (25)
1.一种在片间通信电路中进行任务调度的方法,所述片间通信电路包括第一调度单元和第一运算单元,所述方法包括:
通过所述第一运算单元从所述第一调度单元接收第一任务描述信息,并根据所述第一任务描述信息来执行第一任务;
在所述第一运算单元处,响应于第一特定事件的产生而挂起第一任务的执行;
通过所述第一运算单元处响应于挂起第一任务的执行而执行第二任务。
2.根据权利要求1所述的方法,其中,响应于挂起第一任务的执行而执行第二任务,包括:
在所述第一调度单元处,响应于所述第一运算单元挂起第一任务的执行,向所述第一运算单元发送第二任务描述信息;
在所述第一运算单元处,响应于接收到所述第二任务描述信息,执行所述第二任务。
3.根据权利要求1或2所述的方法,其中,所述片间通信电路进一步包括发送单元,在所述发送单元处,从所述第一运算单元接收已处理数据,并向片外发送所述已处理数据,其中,响应于第一特定事件的产生而挂起第一任务的执行包括:
响应于所述发送单元对所述已处理数据的发送被阻塞而挂起第一任务的执行。
4.根据权利要求1-3中任意一项所述的方法,其中,所述片间通信电路进一步包括第一存储单元,所述第一存储单元配置为从所述第一运算单元接收已处理数据以对所述已处理数据进行缓存,其中,响应于第一特定事件的产生而挂起第一任务的执行包括:
响应于所述第一存储单元对所述已处理数据缓存失败而挂起第一任务的执行。
5.根据权利要求4所述的方法,其中,所述第一存储单元包括第一内存管理子单元和第一缓存子单元,所述第一内存管理子单元配置为管理所述已处理数据在所述第一缓存子单元上的存储;其中
响应于所述第一内存管理子单元和所述第一缓存子单元中至少一个对所述已处理数据缓存失败而挂起第一任务的执行。
6.根据权利要求1-5中任意一项所述的方法,其中,响应于第一特定事件的产生而挂起第一任务的执行包括:
响应于第一任务中包括挂起指令而挂起所述第一任务的执行。
7.根据权利要求1-6中任意一项所述的方法,进一步包括:在所述第一运算单元和第一调度单元处建立任务执行列表,所述任务执行列表至少包括第一任务被挂起的位置。
8.根据权利要求7所述的方法,进一步包括:在所述第一运算单元处,响应于所述第一特定事件的结束,根据被挂起的位置来恢复对所述第一任务的执行。
9.根据权利要求7所述的方法,其中,被挂起的任务为多个时,
随机地恢复对所述多个任务中一个的执行;
根据多个任务的优先级来恢复具有高优先级的任务的执行。
10.一种在片间通信电路中进行任务调度的方法,所述片间通信电路包括第二调度单元、第二运算单元和第二存储单元,所述方法包括:
通过所述第二运算单元从所述第二调度单元接收第三任务描述信息;
通过所述第二运算单元从所述第二存储单元提取待处理数据,并根据所述第三任务描述信息对所述待处理数据执行第三任务;
在所述第二运算单元处,响应于第二特定事件的产生而挂起第三任务的执行;
通过所述第二运算单元处响应于所述挂起第三任务的执行而执行第四任务。
11.根据权利要求10所述的方法,其中,在所述第二运算单元处,响应于所述挂起第三任务的执行而执行第四任务包括:
在所述第二调度单元处,响应于所述第二运算单元挂起第三任务的执行,向所述第二运算单元发送第四任务描述信息;
在所述第二运算单元处,响应于接收到所述第四任务描述信息,执行所述第四任务。
12.根据权利要求10或11所述的方法,其中,所述片间通信电路进一步包括接收单元,在所述接收单元处,从片外接收待处理数据,并发送到第二存储单元进行存储;其中,响应于第二特定事件的产生而挂起第三任务的执行:
响应于所述接收单元没有可接收数据而挂起第三任务的执行。
13.根据权利要求12所述的方法,其中,所述第二存储单元包括第二内存管理子单元、第三内存管理子单元和第二缓存子单元;
通过所述第二内存管理子单元管理待处理数据从所述接收单元到所述第二缓存子单元上的存储;
通过第三内存管理子单元管理所述待处理数据从所述第一缓存子单元到所述第二运算单元的传送。
14.根据权利要求10-13中任意一项所述的方法,其中,响应于第二特定事件的产生而挂起第三任务的执行包括:
响应于从所述第二存储单元中提取待处理数据失败而挂起第三任务的执行。
15.根据权利要求10-14中任意一项所述的方法,其中,响应于第二特定事件的产生而挂起第三任务的执行包括:
响应于第三任务中包括挂起指令而挂起所述第三任务的执行。
16.根据权利要求10-15中任意一项所述的方法,进一步包括:在所述第二运算单元和第二调度单元处建立任务执行列表,所述任务执行列表至少包括第三任务被挂起的位置。
17.根据权利要求16所述的方法,进一步包括:在所述第二运算单元处,响应于所述第二特定事件的结束,根据被挂起的位置来恢复对所述第三任务的执行。
18.根据权利要求17所述的方法,其中,被挂起的任务为多个时,随机地恢复对所述多个任务中一个的执行;或
根据多个任务的优先级来恢复具有高优先级的任务的执行。
19.一种用于片间通信的电路,包括第一调度单元和第一运算单元,其中
所述第一运算单元配置为:
从所述第一调度单元接收第一任务描述信息,并根据所述第一任务描述信息来执行第一任务;
响应于第一特定事件的产生而挂起第一任务的执行;
响应于挂起第一任务的执行而执行第二任务。
20.根据权利要求19所述的电路,其中,
所述第一调度单元配置为,响应于所述第一运算单元挂起第一任务的执行,向所述第一运算单元发送第二任务描述信息;以及
所述第一运算单元进一步配置为,响应于接收到所述第二任务描述信息,执行所述第二任务。
21.一种用于片间通信的电路,包括第二调度单元、第二运算单元和第二存储单元,其中,
所述第二运算单元配置为,
从所述第二调度单元接收第三任务描述信息;
从所述第二存储单元提取待处理数据,并根据所述第三任务描述信息对所述待处理数据执行第三任务;
响应于第二特定事件的产生而挂起第三任务的执行;
响应于所述挂起第三任务的执行而执行第四任务。
22.根据权利要求21所述的电路,其中,
所述第二调度单元配置为:响应于所述第二运算单元挂起第三任务的执行,向所述第二运算单元发送第四任务描述信息;以及
所述第二运算单元进一步配置为,响应于接收到所述第四任务描述信息,执行所述第四任务。
23.一种芯片,包括如权利要求19-22中任意一项所述的电路。
24.一种用于片间通信的系统,包括第一芯片和第二芯片,所述第一芯片包括如权利要求19或20所述的电路,所述第二芯片包括如权利要求21或22所述的电路。
25.一种电子设备,包括如权利要求23所述的芯片或权利要求24所述的系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011624931.0A CN114691312A (zh) | 2020-12-31 | 2020-12-31 | 片间通信的电路、方法和系统 |
PCT/CN2021/143162 WO2022143917A1 (zh) | 2020-12-31 | 2021-12-30 | 片间通信的电路、方法和系统 |
US18/259,684 US20240054012A1 (en) | 2020-12-31 | 2021-12-30 | Inter-chip communication circuit, method and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011624931.0A CN114691312A (zh) | 2020-12-31 | 2020-12-31 | 片间通信的电路、方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691312A true CN114691312A (zh) | 2022-07-01 |
Family
ID=82134510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011624931.0A Pending CN114691312A (zh) | 2020-12-31 | 2020-12-31 | 片间通信的电路、方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691312A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024119869A1 (zh) * | 2022-12-09 | 2024-06-13 | 上海寒武纪信息科技有限公司 | 一种执行片间通信任务的方法和相关产品 |
-
2020
- 2020-12-31 CN CN202011624931.0A patent/CN114691312A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024119869A1 (zh) * | 2022-12-09 | 2024-06-13 | 上海寒武纪信息科技有限公司 | 一种执行片间通信任务的方法和相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884786B2 (en) | Switch device, switching method, and computer program product | |
US20160378570A1 (en) | Techniques for Offloading Computational Tasks between Nodes | |
KR101565865B1 (ko) | 멀티 프로세서 코어 시스템 내의 프로세서 코어를 스케줄링 하기 위한 방법, 장치, 및 시스템 | |
CN104252390B (zh) | 资源调度方法、装置和系统 | |
US8352710B2 (en) | Off-loading of processing from a processor blade to storage blades | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
CN110489213A (zh) | 一种任务处理方法及处理装置、计算机系统 | |
JP2008129846A (ja) | データ処理装置、データ処理方法およびプログラム | |
TW201205441A (en) | Multi-CPU domain mobile electronic device and operation method thereof | |
TW201238295A (en) | A method and system for improved multi-cell support on a single modem board | |
US20150178229A1 (en) | Computer system and control method thereof | |
US10505757B2 (en) | Network interface module and a method of changing network configuration parameters within a network device | |
CN103218329A (zh) | 数字信号处理数据传输 | |
CN104102548A (zh) | 任务资源调度处理方法和系统 | |
WO2024119823A1 (zh) | Gpu计算资源的管理方法、装置、电子设备及可读存储介质 | |
CN114691312A (zh) | 片间通信的电路、方法和系统 | |
CN103197954B (zh) | 信息处理装置和控制信息处理装置的方法 | |
US9317098B2 (en) | Server, power management system, power management method, and program | |
CN111684391B (zh) | 全系统低功率管理 | |
US20140245050A1 (en) | Power management for host with devices assigned to virtual machines | |
CN103823712A (zh) | 一种多cpu虚拟机系统的数据流处理方法和装置 | |
CN116089049B (zh) | 基于异步并行i/o请求的进程同步调度方法、装置以及设备 | |
CN114691590B (zh) | 一种用于数据传送的方法和相关产品 | |
EP2164204A1 (en) | Energy efficient inter-subsystem communication | |
US8869171B2 (en) | Low-latency communications |
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 |