CN114691590B - 一种用于数据传送的方法和相关产品 - Google Patents

一种用于数据传送的方法和相关产品 Download PDF

Info

Publication number
CN114691590B
CN114691590B CN202011624932.5A CN202011624932A CN114691590B CN 114691590 B CN114691590 B CN 114691590B CN 202011624932 A CN202011624932 A CN 202011624932A CN 114691590 B CN114691590 B CN 114691590B
Authority
CN
China
Prior art keywords
unit
data
task
transmitting
signal
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
Application number
CN202011624932.5A
Other languages
English (en)
Other versions
CN114691590A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202011624932.5A priority Critical patent/CN114691590B/zh
Priority to US18/259,684 priority patent/US20240054012A1/en
Priority to PCT/CN2021/143162 priority patent/WO2022143917A1/zh
Publication of CN114691590A publication Critical patent/CN114691590A/zh
Application granted granted Critical
Publication of CN114691590B publication Critical patent/CN114691590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Hardware Redundancy (AREA)

Abstract

本公开提供一种传送数据的电路、方法和系统,该方法可以实现在计算装置中,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。

Description

一种用于数据传送的方法和相关产品
技术领域
本公开涉及芯片领域,更具体地,涉及芯片中的数据传送领域。
背景技术
在常规的芯片中,芯片中多个部件之间会进行数据传输。一般地,只有在接收部件接收到数据时,才能释放发送部件的资源。但是,在数据传输量比较大时,传输延迟有时较大,在传输延迟较大的情况下,发送部件在发送完处理后数据之后并不能及时地接收到回传的反馈,从而可能一直会处于等待状态而无法进行下一任务的处理。这将使得芯片的吞吐量受到影响并由此降低芯片的处理能力。
发明内容
本公开的一个目的在于克服现有技术中网络延迟较大引起的芯片吞吐量受限的问题。
根据本公开的第一方面,提供一种用于数据传送的方法,包括:根据从第一运算单元到发送单元的数据传送,向第一调度单元发送第一指示信号,以便于释放第一运算单元的运算资源;根据所述发送单元针对所述数据传送的反馈信号,向所述第一调度单元发送第二指示信号,以便于释放所述第一运算单元的任务资源。
根据本公开的第二方面,提供一种用于数据传送的电路,包括:第一指示发送单元,配置为:根据从第一运算单元到发送单元的数据传送,向第一调度单元发送第一指示信号,以便于释放第一运算单元的运算资源;第二指示发送单元:配置为:根据所述发送单元针对所述数据传送的反馈信号,向所述第一调度单元发送第二指示信号,以便于释放所述第一运算单元的任务资源。
根据本公开的第三方面,提供一种用于数据传送的系统,包括:第一调度单元、第一运算单元、发送单元和监视单元,其中,所述第一运算单元配置为向所述发送单元传送数据;所述监视单元配置为监视从第一运算单元到发送单元的数据传送,并根据从第一运算单元到发送单元的数据传送向第一调度单元发送第一指示信号;所述第一调度单元配置为根据所述第一指示信号,指示所述第一运算单元释放运算资源;所述发送单元配置为接收从第一运算单元传送的数据,并响应于接收到所述数据而发送反馈信号;所述监视单元进一步配置为根据所述反馈信号,向所述第一调度单元发送第二指示信号;所述第一调度单元进一步配置为根据所述第二指示信号,指示所述第一运算单元释放任务资源。
根据本公开的第四方面,提供一种用于数据传送的方法,包括:通过所述第一运算单元向发送单元传送数据;监视从第一运算单元到发送单元的数据传送,并根据从第一运算单元到发送单元的数据传送向第一调度单元发送第一指示信号;通过所述第一调度单元,根据所述第一指示信号,指示所述第一运算单元释放运算资源;通过所述发送单元接收从第一运算单元传送的数据,并响应于接收到所述数据而发送反馈信号;根据所述反馈信号,向所述第一调度单元发送第二指示信号;通过所述第一调度单元,根据所述第二指示信号,指示所述第一运算单元释放任务资源。
根据本公开的第五方面,提供一种芯片,包括如上所述的电路或如上所述的系统。
根据本公开的第六方面,提供一种电子设备,包括如上所述的芯片。
根据本公开的第七方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开的第八方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的有益效果之一在于,能够即使在出现网络拥塞的情况下也能快速地释放处理核的运算资源,以便于其他数据的运算。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出了根据本公开一个实施方式的片间通信的系统示意图;
图2示出了根据本公开另一个实施方式的用于片间通信的电路的示意图;
图3示出了根据本公开另一个实施方式的用于片间通信的电路的示意图;
图4示出了根据本公开的另一个实施方式的用于片间通信的电路的示意图;
图5示出了根据本公开另一个实施方式的进行片间通信的系统的示意图;
图6示出了根据本公开的一个实施方式的一种用于进行片间通信的方法;
图7示出了一种组合处理装置;
图8提供了一种示例性的板卡;
图9a和图9b示出了根据本公开一个实施方式的在片间通信电路中进行片间通信的方法;
图10a和图10b示出了根据本公开另一个实施方式的在片间通信电路中进行片间通信的方法;
图11示出了本公开中将执行中的任务休眠(挂起)-唤醒的一种应用场景;
图12示出了根据本公开一个实施方式的用于数据传送的系统示意图;
图13示出了根据本公开一个实施方式的用于数据传送的方法流程图;
图14示出了根据本公开一个实施方式的一种用于数据传送的方法的流程图;以及
图15示出了根据本公开一个实施方式的用于数据传送的电路的示意图
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
图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来详细描述图9所述的方法。
如图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与图9中的操作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的利用率,并进一步提升整个系统的运算能力。
本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图12示出了根据本公开一个实施方式的用于数据传送的系统示意图;如图12所示,该系统包括第一调度单元1211、第一运算单元1212、发送单元1213和监视单元1219。
在该系统中,所述第一运算单元1212配置为向所述发送单元1213传送数据。在本公开中,监视单元1219可以监视第一运算单元1212到发送单元1213的整个数据传送过程,并且根据数据传送的情况来向第一调度单元1211发送相应的指示信号。
本公开的一个实施例方法,监视单元1219在监视到第一运算单元1212已经将数据发送至发送单元1213时,则监视单元1219可以向第一运算单元发送提前反馈信号(earlyresponse),该第一运算单元1212在接收到该提前反馈信号后,则认为当然任务已经处理完成,可以开始处理新的任务。此时,第一运算单元1212可以向监视单元发送用于指示当前任务处理完成的完成信号,监视单元1219可以根据该完成信号向第一调度单元1211发送相应的指示信号,如第一指示信号。第一调度单元1211可以根据该第一指示信号释放第一运算单元的运算资源,使得该第一运算单元能够处理新的任务。但由于此时并不知晓发送单元是否正确的接收到第一运算单元发送的数据,所以第一调度单元仍需保留当前任务的任务资源。
本公开的一个实施例中,发送单元1213在接收到第一运算单元传送的数据时,可以向该第一运算单元发送反馈信号,第一运算单元可以根据该反馈信号向监视单元发送用于指示当前任务处理完成的完成信号,监视单元1219可以根据该完成信号向第一调度单元1211发送相应的指示信号,如第二指示信号。第一调度单元1211可以根据该第二指示信号释放当前任务的任务资源。
图13示出了根据本公开一个实施方式的用于数据传送的方法流程图。如图13所示,本公开的方法包括:在操作S1310,通过所述第一运算单元1212向发送单元1213传送数据。
这里所述的数据可以是经过第一运算单元1212处理和运算过后的数据,有时也称为处理后数据。当然,这里所述的数据也可以是第一运算单元从主机或外部存储器中直接获得的数据。传统上,发送单元1213接收到来自于第一运算单元1212的数据之后,通常会向该第一运算单元1212发送一个反馈信号以表明该发送单元1213已接收到该数据。第一运算单元1212将一直处于等待状态,直到其接收到该反馈信号之后,表明当前任务处理完成,当然任务才会释放其第一运算单元的占用,之后第一运算单元再开始处理新的任务。这样在第一运算单元1212和发送单元1213之间传输延迟时,将使得第一运算单元在一段时间内处于空闲状态,造成芯片上计算资源的浪费,降低芯片的处理效率。
在本公开的方案中,所述监视单元1219可以配置为监视从第一运算单元1212到发送单元1213的数据传送,并根据从第一运算单元1212到发送单元1213的数据传送向第一调度单元1211发送第一指示信号,以及时地释放当前任务对第一运算单元的占用。如图13所示,本公开的方法包括在操作S1320,监视单元监视从第一运算单元到发送单元的数据传送,并根据从第一运算单元到发送单元的数据传送向第一调度单元发送第一指示信号。
根据本公开的一个实施方式,其中,所述第一调度单元1211可以配置为根据所述第一指示信号,指示所述第一运算单元1212释放运算资源;如图13所示,本公开的方法包括:在操作S1330,通过所述第一调度单元1211,根据所述第一指示信号,释放所述第一运算单元1212的运算资源。
在释放第一运算单元1212的运算资源之后,第一调度单元1211可以从主机接收任务描述信息(例如任务描述符)并将该任务描述信息发送给第一运算单元1212,以便使得第一运算单元1212执行任务描述信息所描述的任务。该任务描述信息包括了任务ID、任务的类别、数据尺寸、数据地址、参数尺寸、处理内核(例如第一运算单元)配置信息、处理内核的地址信息以及任务的拆分信息等等。
优选地,监视单元1219可以在监视到数据传送结束后(例如监视到传送数据的结束(end)符号)向第一调度单元1211发送第一指示信号。其中,此时的数据传送结束可以是条件结束,该传送数据的结束符号可以是监视单元根据其接收到第一运算单元的数据发送完成生成的。相应地,第一指示信号可以是一个条件完成(conditional finish,简称CF)信号,该条件完成信号表明监视单元1219已监视到数据从第一运算单元1212到发送单元1213的单向数据传送结束,而并不考虑发送单元1213是否确实接收到这些数据,或者也不考虑发送单元1213是否正确地接收到这些数据。
根据本公开的一个实施方式,所述第一运算单元1212可以进一步配置为,在数据传送结束后发送第一完成信号;所述监视单元1219进一步配置为,响应于监视到所述数据传送结束的第一完成信号,向所述第一调度单元1211发送第一指示信号;所述第一调度单元1211进一步配置为,根据所述第一指示信号,指示所述第一运算单元1212释放运算资源。
在该实施方式中,为了方便监视单元1219确定第一运算单元1212上的当前任务是否处理完成,可以由第一运算单元1212在当然任务处理完成之后发出一个完成(finish)信号,该完成信号表明第一运算单元1212已经将数据发送完毕,并已经接收到相应的反馈信号(如监视单元发送的提前反馈信号)。监视单元1219在监视到该第一运算单元传送的完成信号之后,则认为第一运算单元已经处理完成当前任务。接下来,监视单元1219向第一调度单元1211发送一个条件完成CF信号。第一调度单元1211在接收到该CF信号时,可以指示第一运算单元1212释放运算资源。释放的运算资源可以由所述第一运算单元1212用于处理其他数据。
需要理解的是,在本文中,第一调度单元1211可以向第一运算单元1212发送任务描述信息,从而为第一运算单元1212调度各种类型的任务,这些任务可以是Task ID的形式存放在第一运算单元1212处,每执行一个任务,则可以根据该任务的Task ID来调动第一运算单元1212的运算资源(例如IPU的运算能力),从而最终完成一个任务。在本文中,当第一调度单元1211接收到CF信号时,仅指示第一运算单元1212释放运算资源,从而可以处理其他任务的数据,但此时并不释放任务资源。具体而言,第一运算单元1211中的Task ID不可修改,也不允许被覆盖或删除。Task ID的这种特性,保证了该任务资源仍然可以被重新调用和执行。
在现有技术中,第一运算单元1212在发送数据完毕之后,需要一直等待发送单元1213的反馈信号,如果由于网络的拥塞而使得发送单元1213的反馈信号延迟,则第一运算单元1212中的运算单元一直被占用而无法对其他数据进行运算,这显然没有充分发挥第一运算单元的效率。
接下来,发送单元1213配置为接收从第一运算单元1212传送的数据,并响应于接收到所述数据而发送反馈信号。如图13所示,本公开的方法还包括,在操作S1340,通过所述发送单元1213接收从第一运算单元1212传送的数据,并响应于接收到所述数据而发送反馈信号。
在该实施方式中,发送单元1213在接收到数据之后将发送一个反馈信号,以表明其成功地接收到该数据。发送单元1213发送反馈信号表明数据从第一运算单元到发送单元1213的数据传送全部完成。第一运算单元1212可以根据该反馈信号确定当前任务处理完成。
所述监视单元进一步配置为根据所述反馈信号,向所述第一调度单元发送第二指示信号;在图13中,本公开的方法包括,在操作S1350,根据所述反馈信号,向所述第一调度单元1211发送第二指示信号。
需要理解的是,这里所述的根据反馈信号来向第一调度单元1211发送第二指示信号可以包括多种情形。
一种情形是,监视单元1219直接监视从所述发送单元1213向所述第一运算单元1212发送的反馈信号;并且根据监视到从所述发送单元1213发送的所述反馈信号,向所述第一调度单元1211发送第二指示信号。
当监视单元1219监视到该反馈信号时,可以向第一调度单元1211发送一个第二指示信号,这里称为真正完成(Real finish,简称RF)信号。当监视单元1219监视到发送单元1213发送的反馈信号RF时,表明数据从第一运算单元1212到发送单元1213的发送-反馈过程全部完成,换言之,该数据所对应的任务已经全部完成,因此,该监视单元1219可以向第一调度单元1211发送RF信号,以通知第一调度单元1211第一运算单元1212中的任务已经完成,并释放任务资源。
另一种情形是,监视单元1219并不直接监视来自于发送单元1213的反馈信号,而是可以以如下方式来进行:首先,第一运算单元1212进一步配置为:响应于接收到所述反馈信号而向监视单元1219发送第二完成信号;然后,监视单元1219监视从第一运算单元1212发送的第二完成信号,如果监视到从第一运算单元1212发出第二完成信号(例如一个finish信号),则表明该第一运算单元1212接收到了来自于发送单元1213的反馈信号,这进一步表明发送单元1213成功地接收到了第一运算单元1212发送的数据,即第一运算单元1212与发送单元1213之间的发送-反馈动作已经完成,以通知第一调度单元1211第一运算单元1212中的任务已经完成,并释放任务资源。
最后,所述第一调度单元1211进一步配置为根据所述第二指示信号,指示所述第一运算单元1212释放任务资源;如图13所示,本公开的方法进一步包括:在操作S1360,通过所述第一调度单元1211,根据所述第二指示信号,指示所述第一运算单元1212释放任务资源。
任务资源被释放之后,该任务资源的Task ID等将可以被删除、覆盖、更新等等,以便于新的任务资源能够被第一运算资源1212使用。例如,如果第一运算单元1212能够处理包括8个任务的队列,并且队列中包括了8个任务,在所有任务资源未被释放的情况下,则第一调度单元1211无法向第一运算单元1212发送新的任务;而如果8个任务中的某一个任务资源已被释放,则第一调度单元1211可以发送新的任务,以替代该释放的任务资源,从而该第一运算单元能够接收新的任务并进一步执行该新的任务。
更进一步地,根据本公开的另一个实施方式,响应于在预定时间内未接收到所述反馈信号,或者响应于接收到错误的反馈信号,可以向所述第一调度单元发送第三指示信号,以指示所述第一运算单元1212:对所述数据进行重传;和/或回收释放的运算资源,以便于对所述数据进行重新运算。
在上文中描述了发送单元1213能够准确地发送反馈信号的情况,但在某些情形下,例如网络过度拥塞而导致发送单元1213无法在预定时间内接收到数据;或者网络过度拥塞而导致发送单元1213发送的反馈信号无法被监视单元1219及时地监视到,那么监视单元1219可以向第一调度单元1211发送另外一个指示信号,以指示第一运算单元1212对之前发送的数据进行重传操作。在此情况下,第一运算单元1212运算得到的数据需要重新从第一运算单元1212传送到发送单元1213。
在另一个实施方式中,发送单元1213可能发送了一个否定的反馈信号,或者发送单元1213接收到了错误的数据从而导致发送了一个否定的反馈信号,那么监视单元1219同样可以发送另外一个指示信号,以指示第一运算单元1212重新进行数据传送,即第一运算单元1212可以再次将该数据发送给发送单元1213。由于此时仅仅是运算资源被释放而任务资源未被释放,因此第一运算单元1212可以根据该未释放的任务资源继续执行任务,重新将该任务涉及的数据发送给发送单元1213。
图14示出了根据本公开一个实施方式的一种用于数据传送的方法的流程图;图15示出了根据本公开一个实施方式的用于数据传送的电路的示意图。图14所示的流程图的步骤和操作可以在监视单元1219或图15所示的电路中执行。
如图14所示,用于数据传送的方法可以包括:在操作S1410,根据从第一运算单元1212到发送单元1213的数据传送,向第一调度单元1211发送第一指示信号,以便于释放第一运算单元1212的运算资源;以及在操作S1420,根据所述发送单元1213针对所述数据传送的反馈信号,向所述第一调度单元1211发送第二指示信号,以便于释放所述第一运算单元1212的任务资源。
如图15所示,本公开提供的监视单元可以包括:第一指示发送单元1219-1,配置为:根据从第一运算单元1212到发送单元的数据传送,向第一调度单元1211发送第一指示信号,以便于释放第一运算单元1212的运算资源;第二指示发送单元1219-2:配置为:根据所述发送单元1213针对所述数据传送的反馈信号,向所述第一调度单元1211发送第二指示信号,以便于释放所述第一运算单元1212的任务资源。
可选地,本公开的监视单元还可以包括一判断单元,以判断其监视到的第一运算单元传送的完成信号是第一完成信号还是第二完成信号,其中,该第一完成信号可以是基于提前反馈信号生成的,该第二完成信号可以是基于发送单元传送的反馈信号生成的。进一步地,当该完成信号为第一完成信号时,则传送至第一指示发送单元1219-1。当该完成信号为第二完成信号时,则传送至第二指示发送单元1219-2。
需要理解的是,尽管在图15中将第一指示发送单元1219-1和第二指示发送单元1219-2表示为两个不同的单元或模块,但二者可以实现为一个模块,而在不同的时刻或情况下发挥不同的作用。
根据本公开的一个实施方式,根据从第一运算单元1212到发送单元1213的数据传送,向第一调度单元1211发送第一指示信号,以便于释放第一运算单元1212的运算资源包括:响应于监视到所述数据传送结束的第一完成信号,向所述第一调度单元1211发送第一指示信号;所述第一调度单元1211根据所述第一指示信号,指示所述第一运算单元1212释放运算资源。
根据本公开的一个实施方式,其中,根据所述发送单元1213针对所述数据传送的反馈信号,向所述第一调度单元1211发送第二指示信号,以便于释放所述第一运算单元1212的任务资源包括:所述发送单元1213响应于接收到所述数据,向所述第一运算单元1212发送反馈信号;根据监视到所述反馈信号,向所述第一调度单元1211发送第二指示信号;所述第一调度单元1211根据所述第二指示信号,指示所述第一运算单元1212释放任务资源。
根据本公开的一个实施方式,其中,根据监视到所述反馈信号,向所述第一调度单元1211发送第二指示信号包括:监视从所述发送单元1213向所述第一运算单元1212发送的反馈信号;根据监视到的来自于所述发送单元1213的所述反馈信号,向所述第一调度单元1211发送第二指示信号。
根据本公开的一个实施方式,其中,根据监视到所述反馈信号,向所述第一调度单元1211发送第二指示信号包括:通过所述发送单元向所述第一运算单元1212发送反馈信号;所述第一运算单元1212根据所述反馈信号发送第二完成信号;根据监视到从所述第一运算单元1212发送的第二完成信号,向所述第一调度单元1211发送第二指示信号。
根据本公开的一个实施方式,其中,第一运算单元1212释放运算资源以便于所述第一运算单元1212能够处理其他数据。
根据本公开的一个实施方式,其中,第一运算单元1212释放任务资源以便于所释放的任务资源能够被删除或替代。
根据本公开的一个实施方式,其中,响应于在预定时间内未接收到所述反馈信号,或者响应于接收到错误的反馈信号,向所述第一调度单元1211发送第三指示信号,以指示所述第一运算单元1212:对所述数据进行重传;和/或回收释放的运算资源,以便于对所述数据进行重新运算。
本公开还提供一种芯片,包括如图15所示的电路或如图12所示的系统。
本公开还提供一种电子设备,包括如上所述的芯片。
本公开还提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如图13或图14所述的方法。
本公开还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如图13或图14所述的方法。
通过本公开的技术方案,第一运算单元1212无需等待真正的反馈信号即可释放其运算资源以用于对其他数据进行处理,者减少了传统方案中必须等待反馈信号才能释放运算资源的缺陷,提高了处理单元的利用率,总由此提升了系统的整体性能。
图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.根据权利要求2所述的方法,其中,根据监视到所述反馈信号,向所述第一调度单元发送第二指示信号包括:
监视从所述发送单元向所述第一运算单元发送的反馈信号;
根据监视到的来自于所述发送单元的所述反馈信号,向所述第一调度单元发送第二指示信号。
4.根据权利要求2所述的方法,其中,根据监视到所述反馈信号,向所述第一调度单元发送第二指示信号包括:
通过所述发送单元向所述第一运算单元发送反馈信号;
所述第一运算单元根据所述反馈信号发送第二完成信号;
根据监视到从所述第一运算单元发送的第二完成信号,向所述第一调度单元发送第二指示信号。
5.根据权利要求1所述的方法,其中,第一运算单元释放运算资源以便于所述第一运算单元能够处理其他数据。
6.根据权利要求1所述的方法,其中,第一运算单元释放任务资源以便于所释放的任务资源能够被删除或替代。
7.根据权利要求1所述的方法,其中,响应于在预定时间内未接收到所述反馈信号,或者响应于接收到错误的反馈信号,向所述第一调度单元发送第三指示信号,以指示所述第一运算单元:
对所述数据进行重传;和/或
回收释放的运算资源,以便于对所述数据进行重新运算。
8.根据权利要求1-7中任意一项所述的方法,进一步包括:在所述第一调度单元处,监视针对任务资源的未返回的反馈信号。
9.一种用于数据传送的系统,包括:第一调度单元、第一运算单元、发送单元和监视单元,其中,
所述第一运算单元配置为向所述发送单元传送数据,在数据传送结束后发送第一完成信号;
所述监视单元配置为监视从第一运算单元到发送单元的数据传送,并根据从第一运算单元到发送单元的数据传送,响应于监视到所述数据传送结束的第一完成信号,向第一调度单元发送第一指示信号;
所述第一调度单元配置为根据所述第一指示信号,指示所述第一运算单元释放运算资源;
根据所述发送单元针对所述数据传送的反馈信号,向所述第一调度单元发送第二指示信号,以便于释放所述第一运算单元的任务资源;其中所述第二指示信号表明数据所对应的任务已经完成。
10.根据权利要求9所述的系统,其中,
所述发送单元配置为接收从第一运算单元传送的数据,并响应于接收到所述数据而发送反馈信号;
所述监视单元进一步配置为根据所述反馈信号,向所述第一调度单元发送第二指示信号;
所述第一调度单元进一步配置为根据所述第二指示信号,指示所述第一运算单元释放任务资源。
11.根据权利要求10所述的系统,其中,所述监视单元进一步配置为根据所述反馈信号,向所述第一调度单元发送第二指示信号包括:
监视从所述发送单元向所述第一运算单元发送的反馈信号;
根据监视到从所述发送单元发送的所述反馈信号,向所述第一调度单元发送第二指示信号。
12.根据权利要求10所述的系统,其中,所述发送单元进一步配置为:响应于接收到所述反馈信号而发送第二完成信号;并且其中,所述监视单元进一步配置为根据所述反馈信号,向所述第一调度单元发送第二指示信号包括:
根据监视到从所述第一运算单元发送的第二完成信号,向所述第一调度单元发送第二指示信号。
13.根据权利要求9所述的系统,其中,所述第一运算单元进一步配置为释放运算资源以便于所述第一运算单元能够处理其他数据。
14.根据权利要求9所述的系统,其中,第一运算单元进一步配置为释放任务资源以便于所释放的任务资源能够被删除或替代。
15.根据权利要求9-14中任意一项所述的系统,其中所述监视单元进一步配置为:
响应于在预定时间内未接收到所述反馈信号,或者响应于接收到错误的反馈信号,向所述第一调度单元发送第三指示信号,以指示所述第一运算单元:
对所述数据进行重传;和/或
回收释放的运算资源,以便于对所述数据进行重新运算。
16.一种用于数据传送的方法,包括:
通过第一运算单元向发送单元传送数据,在数据传送结束后发送第一完成信号;
监视从第一运算单元到发送单元的数据传送,并根据从第一运算单元到发送单元的数据传送,响应于监视到所述数据传送结束的第一完成信号,向第一调度单元发送第一指示信号;
通过所述第一调度单元,根据所述第一指示信号,指示所述第一运算单元释放运算资源;
根据所述发送单元针对所述数据传送的反馈信号,向所述第一调度单元发送第二指示信号,以便于释放所述第一运算单元的任务资源;其中所述第二指示信号表明数据所对应的任务已经完成。
17.根据权利要求16所述的方法,其中,
通过所述发送单元接收从第一运算单元传送的数据,并响应于接收到所述数据而发送反馈信号;
根据所述反馈信号,向所述第一调度单元发送第二指示信号;
通过所述第一调度单元,根据所述第二指示信号,指示所述第一运算单元释放任务资源。
18.根据权利要求17所述的方法,其中,根据所述反馈信号,向所述第一调度单元发送第二指示信号包括:
监视从所述发送单元向所述第一运算单元发送的反馈信号;
根据监视到从所述发送单元发送的所述反馈信号,向所述第一调度单元发送第二指示信号。
19.根据权利要求18所述的方法,其中,通过所述发送单元,响应于接收到所述反馈信号而发送第二完成信号;并且其中,根据所述反馈信号,向所述第一调度单元发送第二指示信号包括:
根据监视到从所述第一运算单元发送的第二完成信号,向所述第一调度单元发送第二指示信号。
20.根据权利要求16所述的方法,其中,释放运算资源以便于所述第一运算单元能够处理其他数据。
21.根据权利要求17所述的方法,其中,释放任务资源以便于所释放的任务资源能够被删除或替代。
22.根据权利要求16-21中任意一项所述的方法,进一步包括:
响应于在预定时间内未接收到所述反馈信号,或者响应于接收到错误的反馈信号,向所述第一调度单元发送第三指示信号,以指示所述第一运算单元:
对所述数据进行重传;和/或
回收释放的运算资源,以便于对所述数据进行重新运算。
23.一种芯片,包括如权利要求9-15中任意一项所述的系统。
24.一种电子设备,包括如权利要求23所述的芯片。
25.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-8或16-22中任意一项所述的方法。
CN202011624932.5A 2020-12-31 2020-12-31 一种用于数据传送的方法和相关产品 Active CN114691590B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202011624932.5A CN114691590B (zh) 2020-12-31 2020-12-31 一种用于数据传送的方法和相关产品
US18/259,684 US20240054012A1 (en) 2020-12-31 2021-12-30 Inter-chip communication circuit, method and system
PCT/CN2021/143162 WO2022143917A1 (zh) 2020-12-31 2021-12-30 片间通信的电路、方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011624932.5A CN114691590B (zh) 2020-12-31 2020-12-31 一种用于数据传送的方法和相关产品

Publications (2)

Publication Number Publication Date
CN114691590A CN114691590A (zh) 2022-07-01
CN114691590B true CN114691590B (zh) 2024-04-05

Family

ID=82134898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011624932.5A Active CN114691590B (zh) 2020-12-31 2020-12-31 一种用于数据传送的方法和相关产品

Country Status (1)

Country Link
CN (1) CN114691590B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105930598A (zh) * 2016-04-27 2016-09-07 南京大学 一种基于控制器流水架构的层次化信息处理方法及电路
CN108287759A (zh) * 2017-01-10 2018-07-17 阿里巴巴集团控股有限公司 处理数据过程中的调度方法、装置和系统
CN109302349A (zh) * 2018-09-29 2019-02-01 迈普通信技术股份有限公司 一种报文转发方法及路由设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105930598A (zh) * 2016-04-27 2016-09-07 南京大学 一种基于控制器流水架构的层次化信息处理方法及电路
CN108287759A (zh) * 2017-01-10 2018-07-17 阿里巴巴集团控股有限公司 处理数据过程中的调度方法、装置和系统
CN109302349A (zh) * 2018-09-29 2019-02-01 迈普通信技术股份有限公司 一种报文转发方法及路由设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵伟华等.计算机操作系统.西安:西安电子科技大学出版社,2018,第51-52页. *

Also Published As

Publication number Publication date
CN114691590A (zh) 2022-07-01

Similar Documents

Publication Publication Date Title
KR101565865B1 (ko) 멀티 프로세서 코어 시스템 내의 프로세서 코어를 스케줄링 하기 위한 방법, 장치, 및 시스템
US10884786B2 (en) Switch device, switching method, and computer program product
US10412017B2 (en) Transfer device, transfer method, and computer program product
US9513953B2 (en) Reducing virtual machine suspension time in checkpoint system
US9535864B2 (en) Computer system and control method thereof
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
WO2017156676A1 (zh) 一种针对应用的处理方法、装置及智能终端
CN115361451B (zh) 一种网络通信并行处理方法及系统
US8631086B2 (en) Preventing messaging queue deadlocks in a DMA environment
CN105373453A (zh) 数据备份方法及系统
CN103197954B (zh) 信息处理装置和控制信息处理装置的方法
CN114691590B (zh) 一种用于数据传送的方法和相关产品
US9436505B2 (en) Power management for host with devices assigned to virtual machines
Golchin et al. Tuned pipes: end-to-end throughput and delay guarantees for USB devices
TW201516650A (zh) 用於減少電力消耗之並行網路應用程式排程技術
WO2022143917A1 (zh) 片间通信的电路、方法和系统
CN115981893A (zh) 消息队列任务处理方法、装置、服务器及存储介质
CN114691312A (zh) 片间通信的电路、方法和系统
US8869171B2 (en) Low-latency communications
CN106371966B (zh) 收集与数据处理系统的操作相关的监视数据
JP2010049314A (ja) タスクスケジューリング装置およびタスクスケジューリング方法
US20220138009A1 (en) Information processing apparatus, method of controlling information processing apparatus, and program for controlling information processing apparatus
WO2023218596A1 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
CN115934845A (zh) 一种自适应的数据同步系统、方法及存储介质
CN116982030A (zh) 服务器内延迟控制装置、服务器内延迟控制方法和程序

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant