CN114281560A - 处理单元、用于处理单元的同步方法及相应产品 - Google Patents

处理单元、用于处理单元的同步方法及相应产品 Download PDF

Info

Publication number
CN114281560A
CN114281560A CN202011036272.9A CN202011036272A CN114281560A CN 114281560 A CN114281560 A CN 114281560A CN 202011036272 A CN202011036272 A CN 202011036272A CN 114281560 A CN114281560 A CN 114281560A
Authority
CN
China
Prior art keywords
core
synchronization
data
processing unit
synchronized
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
Application number
CN202011036272.9A
Other languages
English (en)
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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology Co 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202011036272.9A priority Critical patent/CN114281560A/zh
Publication of CN114281560A publication Critical patent/CN114281560A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本披露公开了一种处理单元、多核处理器、用于处理单元/多核处理单元的同步方法及相关产品。该处理单元可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供的处理单元,可以通过各种同步指令来有效实现多核之间的数据同步。

Description

处理单元、用于处理单元的同步方法及相应产品
技术领域
本披露涉及处理器领域,特别是涉及一种处理单元、多核处理器、用于处理单元/多核处理器的同步方法、芯片和板卡。
背景技术
随着计算机技术的发展,各种应用(诸如视频结构、广告推荐、智能翻译等)对机器的存储能力和计算能力要求越来越高。由于单核处理器已经不能满足应用的需求,出现了各种各样的多核处理器***。多核处理器***的一个关键问题是多个核之间的协同工作。因此,如何基于多核结构来实现核间的工作协同是急需解决的问题。
发明内容
为了解决如上所提到的一个或多个技术问题,本披露在多个方面中提供了一种处理单元、多核处理器以及用于处理单元/多核处理器的同步方法,其中通过所提供的同步方法,可以实现多核处理器架构中多个核之间的数据同步。
在第一方面中,本披露提供一种处理单元,至少包括一个第一核,其中:所述第一核配置用于:响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件;以及基于所述查询的结果,执行相应的同步操作。
在第二方面中,本披露提供一种处理单元,至少包括一个第二核,其中:所述第二核配置用于:响应于与第一核关联的第二同步指令,向所述第一核发送同步请求信号以指示待处理的同步事件;以及响应于接收到来自所述第一核的数据传送结束信号,获取所传送的待同步数据。
在第三方面中,本披露提供一种多核处理器,包括前述第一方面任一实施例的处理单元以及前述第二方面任一实施例的处理单元。
在第四方面中,本披露提供一种芯片,该芯片内封装有如前述第一方面任一实施例的处理单元,或前述第二方面任一实施例的处理单元,或前述第三方面任一实施例的多核处理器。
在第五方面中,本披露提供一种板卡,包括前述第四方面任一实施例的芯片。
在第六方面中,本披露提供一种用于处理单元的同步方法,所述处理单元至少包括一个第一核,所述方法包括:所述第一核响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件;以及所述第一核基于所述查询的结果,执行相应的同步操作。
在第七方面中,本披露提供一种用于处理单元的同步方法,所述处理单元至少包括一个第二核,所述方法包括:所述第二核响应于与第一核关联的第二同步指令,向所述第一核发送同步请求信号以指示待处理的同步事件;以及所述第二核响应于接收到来自所述第一核的数据传送结束信号,获取所传送的待同步数据。
在第八方面中,本披露提供一种用于多核处理器的同步方法,其中所述多核处理器包括第一处理单元和第二处理单元,所述方法包括:所述第一处理单元执行根据前述第六方面任一实施例的同步方法;以及所述第二处理单元执行根据前述第七方面任一实施例的同步方法。
通过如上所提供的处理单元、多核处理器、用于处理单元/多核处理器的同步方法、芯片和板卡,本披露实施例提供了一种在多核处理器架构下的两个核之间进行数据同步的方案,从而确保多核处理器架构中各个核之间的协同工作,有利于多核处理器任务的灵活调度,以及处理效率的提升。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出可以应用本披露实施例的多核处理器架构的示例性结构图;
图2示出处理器核的示例性内部架构图;
图3A-图3D示出根据本披露实施例的同步方法的示意性流程图;
图4A-图4B示出根据本披露实施例的数据存储空间的示意图;
图5示出根据本披露实施例的一种组合处理装置的结构图;以及
图6示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本公开的具体实施方式。
图1示出可以应用本披露实施例的多核处理器架构的示例性结构图。多核处理器100可以用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据。图1中的多核处理器100采用多核分层结构设计,多核处理器100可以作为一个片上***,其可以包括多个集群(Cluster),每个集群又包括多个核(Core)。换言之,多核处理器100是以片上***-集群-核的层次所构成的。
以片上***的层级来看,如图1所示,多核处理器100包括外部存储控制器111、外设通信模块112、片上互联模块113以及多个集群115。
外部存储控制器111可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备(例如DRAM),从而自片外读取数据或是将数据写入。外设通信模块112用以通过接口装置(未示出)接收来自处理装置(未示出)的控制信号,启动多核处理器100执行任务。片上互联模块113将外部存储控制器111、外设通信模块112及多个集群115连接起来,用以在各个模块间传输数据和控制信号。多个集群115是多核处理器100的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的多核处理器100还可以包括8个、16个、64个、甚至更多的集群115。集群115用以高效地执行深度学习算法。
以集群的层级来看,如图1所示,每个集群115包括多个处理器核(IPU core)121及一个存储核(MEM core)122。
处理器核121在图中示例性地展示4个,本披露不限制处理器核121的数量。
存储核122主要用以存储和通信,即存储处理器核121间的共享数据或中间结果、以及执行集群115与DRAM 127之间的通信、集群115间彼此的通信、处理器核121间彼此的通信等。在其他实施例中,存储核122具有标量运算的能力,用以执行标量运算。
存储核122包括共享存储单元(SMEM)124、广播总线123、集群直接内存访问模块(cluster direct memory access,CDMA)126及全局直接内存访问模块(global directmemory access,GDMA)125。SMEM 124承担高性能数据中转站的角色,在同一个集群115内不同处理器核121之间所复用的数据不需要通过处理器核121各自向DRAM 127获得,而是经SMEM 124在处理器核121间中转,存储核122只需要将复用的数据从SMEM 124迅速分发给多个处理器核121即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。广播总线123、CDMA 126及GDMA 125则分别用来执行处理器核121间的通信、集群115间的通信和集群115与DRAM 127的数据传输。以下将分别说明。
广播总线123用以完成集群115内各处理器核121间的高速通信,此实施例的广播总线123支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SMEM 124传输到特定几个处理器核121的通信方式,而广播则是将一份数据从SMEM 124传输到所有处理器核121的通信方式,属于多播的一种特例。
CDMA 126用以控制在同一个多核处理器100内不同集群115间的SMEM 124的访存。
GDMA 125与外部存储控制器111协同,用以控制集群115的SMEM 124到DRAM 127的访存,或是将数据自DRAM 127读取至SMEM 124中。
虽然图1以单个片上***的多核处理器100为例示例性描述了多核处理器架构,本领域技术人员可以理解,也可以通过多个单核或多核处理单元来构造多核处理器,本披露在此方面没有限制。
图2示出处理器核121的示例性内部架构图。如图2所示,处理器核121可以包括三大模块:控制模块21、运算模块22及存储模块23。
控制模块21用以协调并控制运算模块22和存储模块23的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)211及指令译码单元(instructiondecode unit,IDU)212。取指单元211用以获取来自处理装置(未示出)的指令,指令译码单元212则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块22和存储模块23。
运算模块22包括向量运算单元221及矩阵运算单元222。向量运算单元221用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元222负责深度学习算法的核心计算,例如矩阵乘和卷积。
存储模块23用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)231、权值存储单元(weight RAM,WRAM)232、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)233、搬运直接内存访问模块(move direct memoryaccess,MVDMA)234。NRAM 231用以存储供处理器核121计算的输入、输出数据及中间结果;WRAM 232则用以存储深度学习网络的权值;IODMA 233通过广播总线123(见图1)控制NRAM231/WRAM 232与DRAM 127的访存;MVDMA 234则用以控制NRAM 231/WRAM 232与SMEM 124的访存。
在一些实施例中,GDMA 125(见图1)的功能和IODMA 233(见图2)的功能可以整合在同一部件中。本披露为了方便描述,将GDMA 125和IODMA 233视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,GDMA 125的功能、IODMA 233的功能、CDMA 126的功能、MVDMA 234的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
在多核处理器架构中,多个进程可以在多个核上同时运行,并且一些进程之间可能存在一定的关联。多个进程可能为了完成同一个任务会需要进行数据同步。基于前述多核处理器架构,数据同步可以包括不同集群间的存储核之间的同步,以及同一集群内部的存储核与处理器核之间的同步。本披露实施例提供了一种用于多核处理器架构的同步机制,其可以应用于上述任一同步场景。
图3A示出根据本披露一个实施例的多核处理器架构下两个核之间的同步交互方法的示例性流程图。该多核处理器架构例如可以是前面参考图1-图2描述的示例性多核处理器架构。如图3A所示,同步交互方法至少涉及两个核:第一核310和第二核320,在第一核310与第二核320之间执行数据同步。第一核与第二核可以由不同的处理单元提供,也可以由相同的处理单元提供,本披露在此不做限制。为了便于描述,不妨假设第一核310是数据产生端,其生成需要同步的数据;第二核320是数据获取端,其获取第二核生成的数据以实现数据同步。
本领域技术人员可以理解,对于不同的同步场景,第一核和第二核可以代表不同的核。例如对于多核处理器的集群间同步,第一核与第二核可以分别是该多核处理器中不同集群的存储核(参见图1的存储核122)。又例如,对于多核处理器的集群内同步,第一核与第二核可以分别是该多核处理器中同一集群内的处理器核或存储核。具体地,第一核可以是处理器核,第二核是存储核;或者反过来,第一核是存储核,第二核是处理器核。
在多核处理模式下,每个核维护自己资源下的数据,不被其他核所见,也看不见其他核的数据。因此,在待同步的数据进行传输之前,需要进行同步,保证同步的两端都做好准备,然后才能进行数据传输。数据的产生端需要准备好相关的数据;数据的获取端需要准备好相应的存储空间,以便存储相关的数据。因此,在本披露的实施例中,提供了两种同步指令:第一同步指令和第二同步指令。
第一同步指令用于多核处理器中作为数据产生端的核,例如本实施例中的第一核310。第一同步指令可以是发送(Send)指令,用于指示相关同步事件的待同步数据的发送端已就绪,换言之,此时已经生成了待同步数据。
第一同步指令可以包含与该同步事件所涉及的待同步数据相关的信息、与同步对象相关的信息,等等。同步对象例如可以是多核处理器中作为数据获取端的核,例如本实施例中的第二核320。与同步对象相关的信息例如可以包括核的标识。在一些实施例中,与同步对象相关的信息还可以包括该同步对象的数据接收地址,也即该同步对象中用于初始存放由数据产生端传送的数据的预定地址。该地址可以是固定地址,也可以是可变地址,本披露在此方面没有限制。该地址也可以是预先设置的,从而无需包含在第一同步指令中。
第二同步指令用于多核处理器中作为数据获取端的核,例如本实施例中的第二核320。第二同步指令可以是接收(Receive)指令,用于指示相关同步事件的待同步数据的接收端已就绪,换言之,此时已经准备好了用于存储待同步数据的存储空间。该存储空间对应于前述同步对象的数据接收地址或预定地址。
第二同步指令可以包含与该同步事件所涉及的待同步数据相关的信息、与同步对象相关的信息,等等。同步对象例如可以是多核处理器中作为数据产生端的核,例如本实施例中的第一核310。与同步对象相关的信息例如可以包括核的标识。与待同步数据相关的信息可以用于确定数据获取端处用于最终存储待同步数据的目的地址。在一些实施例中,待同步数据是张量数据,第二同步指令包括张量数据的描述符。关于张量数据的描述符的具体内容将在稍后描述。
参见图3A,其示出了第一核310与第二核320之间用于数据同步的交互流程。第一核310和第二核320各自可以执行相应的指令,这些指令中可能包含同步指令,例如第一同步指令或第二同步指令,用于指示核间的数据同步事件。
在步骤S321,第二核在指令执行过程中可能遇到第二同步指令。如前面所描述的,第二同步指令意味着存在一个数据同步事件,并且第二核作为数据的获取端或接收端,其针对该同步事件已经准备就绪。也即,第二核已经准备好存储空间来接收数据。第二同步指令可以包含与该同步事件所涉及的待同步数据相关的信息、与同步对象相关的信息,等等。在此示例中,同步对象为第一核310。
接着,在步骤S322,第二核响应于该第二同步指令,向作为同步对象的第一核发送同步请求信号以指示该待处理的同步事件。同步请求信号无需携带待同步的数据信息,只需向第一核表明接收就绪这一状态。
然后,第二核可以进入等待状态,等待来自第一核的数据传送结束信号。
第一核可以与第二核并行地执行各自的指令,指令执行进度可以互不相同。图3A中示出了第一核310先接收到第二核320发送的同步请求信号,然后才执行到与第二核关联的第一同步指令。
如图3A所示,在步骤S311中,响应于接收到来自第二核的同步请求信号,记录相关的同步事件。该记录表明存在一个与第二核关联的待处理的数据同步事件。
在步骤S312,第一核在指令执行过程中可能遇到第一同步指令。如前面所描述的,第一同步指令意味着存在一个数据同步事件,并且第一核作为数据的产生端或发送端,其针对该同步事件已经准备就绪。也即,第一核已经生成或准备好待同步数据,可以向第二核发送。第一同步指令可以包含与该同步事件所涉及的待同步数据相关的信息、与同步对象相关的信息,等等。在此示例中,同步对象为第二核320。
接着,在步骤S313,第一核响应于第一同步指令,查询是否存在与第二核关联的未处理的同步事件。继而可以基于查询的结果,执行相应的同步操作。
在图3A所示的实施例中,示出了在执行第一同步指令之前已经收到第二核的同步请求信号的情形。因此,在此实施例中,步骤S313处的查询结果是存在未处理的同步事件。继而,流程可以前进到步骤S314。
当步骤S314处,将需要同步的数据传送到第二核320。数据的传送地址可以是固定的,也可以是可变的。该地址例如可以是如前所描述的在第一同步指令中指示,也可以是预先设置并且第二核已知晓的,从而无需在第一同步指令中额外指示。
在数据传送结束时,在步骤S315处,可以向第二核发送数据传送结束信号,以向第二核指示数据传送结束。
继而,在步骤S322处,第二核响应于接收到来自第一核的数据传送结束信号,获取所传送的数据。
在一些实施例中,第二核获取所传送的数据可以包括:基于第二同步指令确定待同步数据的目的地址;以及从数据的前述传送地址(例如,预先已知的固定地址)读取第一核已传送的数据并写入所确定的目的地址。第二核可以在执行第二同步指令时将其缓存起来,以在此时确定目的地址时使用。
进一步地,同步方法还可以包括步骤S323,第二核响应于接收到来自第一核的数据传送结束信号,向第一核发送应答信号以指示同步完成。继而,第二核在接收到该应答信号后,就可以结束同步操作。接收到应答信号可以视为二者之间的数据同步已完成,而无需等待第二核将数据全部写入目的地址,由此可以加速指令的执行。
可选地或附加地,在一些实施例中,当通过某种依赖关系数据结构来维护所处理的数据之间的依赖关系时,在同步完成之后可以相应地更新该依赖关系数据结构。在一些实现中,该数据结构可以表示为数据表、数据读/写计数器等,本披露在此方面没有限制。
可选地或附加地,在一些实施例中,第二核在获取数据之后,可以将接收到的数据总量与预期接收的数据总量进行比较。如果不匹配,则上报异常,存在多余数据的情况下则丢弃多余的数据。
承载第一核与第二核之间的数据传输的物理通路是保序传输的,从而确保数据正确。可以采用通信传输领域内的各种技术来确保物理通路的保序传输,本披露在此方面没有限制。
上面描述的第一核与第二核之间的各种信号传输可以采用各种方式来实现。这些信号传输例如包括同步请求信号、数据传送结束信号、应答信号等。在一些实施例中,可以以信号量的方式来实现这些信号的传输。
图3B示出根据本披露另一实施例的多核处理器的同步方法的示例性流程图。如前面所提到的,第一核可以与第二核并行地执行各自的指令,指令执行进度可以互不相同。图3B与图3A大体相同,不同之处在于:图3B中示出了第一核310先执行到与第二核关联的第一同步指令,过后才接收到第二核320发送的同步请求信号,也即,第一核310先于第二核320执行到同步指令。
如图3B所示,在步骤S312,第一核在指令执行过程中执行到第一同步指令。第一同步指令表明第一核已经生成或准备好待同步数据,可以向第二核发送。在此示例中,同步对象为第二核320。
接着,在步骤S313,第一核响应于第一同步指令,查询是否存在与第二核关联的未处理的同步事件。继而可以基于查询的结果,执行相应的同步操作。
在图3B所示的实施例中,示出了在执行第一同步指令之前尚未收到第二核的同步请求信号的情形。因此,在此实施例中,步骤S313处的查询结果是不存在未处理的同步事件。继而,流程可以等待来自第二核的同步请求信号。
在第一核的等待过程中,第二核可能执行到第二同步指令。如图3B所示,在步骤S321,第二核在指令执行过程中可能遇到第二同步指令。第二同步指令表明第二核已经准备好存储空间来接收数据。
接着,在步骤S322,第二核响应于该第二同步指令,向作为同步对象的第一核发送同步请求信号以指示该待处理的同步事件。同步请求信号无需携带待同步的数据信息,只需向第一核表明接收就绪这一状态。
然后,第二核可以进入等待状态,等待来自第一核的数据传送结束信号。
此时,第一核在等待过程中,响应于接收到来自第二核的同步请求信号,记录相关的同步事件,如步骤S311所示。该记录表明存在一个与第二核关联的待处理的数据同步事件。
继而,第一核可以在步骤S313的查询中,基于步骤S311中的记录,确定存在未处理的同步事件。因此,流程前进到步骤S314,进行同步数据的传输。后面的数据传输过程与图3A中的相同,此处不再赘述。
为了便于理解,图3A-图3B以交互的方式示出了本披露实施例提供的同步机制。然而,本领域技术人员可以理解,本披露实施例还相应地提供了用于同步过程中各个核的同步方法。
图3C示出了根据本披露实施例的用于处理单元的同步方法,该处理单元至少包括一个第一核。
如图3C所示,方法300C包括步骤S331,其中第一核响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件。在一些实现中,第一同步指令可以是发送(Send)指令,其指示相关同步事件的待同步数据的发送端已就绪。
接着,在步骤S332中,第一核基于查询的结果,执行相应的同步操作。
具体地,在一个实施例中,基于步骤S3321处的判断,方法300C可以进一步包括,当查询到存在未处理的同步事件时(S3321处的分支“是”),在步骤S3322,将需要同步的数据传送到第二核。在一些实现中,第一核可以将需要同步的数据传送到第二核的预定地址。该预定地址例如是第一同步指令中指定的,或者预先设置好的。
接着,可以判断数据是否已经传送结束(步骤S3323);以及在数据传送结束时,向第二核发送数据传送结束信号(步骤3324)。
在一些实现中,数据传送结束信号可以以信号量的方式发送。
在另一实施例中,基于步骤S3321处的判断,方法300C可以进一步包括,当未查询到未处理的同步事件时(S3321处的分支“否”),在步骤S3325,等待同步事件,也即等待来自第二核的同步请求信号。
等待期间,当接收到来自第二核的同步请求信号时(S3326的分支“是”),记录该同步事件(步骤S3327)。继而方法流程可以返回步骤S3321,判断是否存在未处理的同步事件。
可选地或附加地,在一些实施例中,方法300C还可以包括步骤S333,第一核响应于接收到来自第二核的指示同步完成的应答信号,结束同步操作。
图3D示出了根据本披露实施例的用于处理单元的同步方法,该处理单元至少包括一个第二核。
如图3D所示,方法300D包括步骤S341,响应于与第一核关联的第二同步指令,向第一核发送同步请求信号以指示待处理的同步事件;以及步骤S342,响应于接收到来自第一核的数据传送结束信号,获取所传送的待同步数据。在一些实现中,第二同步指令是接收(Receive)指令,其指示相关同步事件的待同步数据的接收端已就绪。在又一些实现中,以信号量的方式发送同步请求信号。
在一个实施例中,获取所传送的待同步数据可以具体实现为多个子步骤。例如,在步骤S3421,基于第二同步指令确定待同步数据的目的地址。在步骤S3422,从用于接收从第一核传送的待同步数据的预定地址读取已传送的待同步数据。最后,在步骤S3423,将读取的待同步数据写入步骤S3421中确定的目的地址。
在一些实现中,待同步数据是张量数据,并且第二同步指令包括该张量数据的描述符。因此,步骤S3421中可以基于第二同步指令中的描述符来确定该张量数据的目的地址。描述符至少可以包括张量数据的形状信息。
可选地或附加地,在一些实施例中,方法300D还可以包括步骤S343,其中第二核响应于接收到来自第一核的数据传送结束信号,向第一核发送应答信号以指示同步完成。
图3C和图3D中各个步骤的具体实现可以参考前面结合图3A和图3B的描述,此处不再赘述。
从图3A-图3D的方法流程图可以看出,本披露实施例提供了一种发送(Send)-接收(Receive)方式的同步机制,数据由一个核(源端)主动发送给另外一个核(目的端),两个核之间无需传递各自核内同步所涉及的数据信息。而且,在数据传递过程中,第一核(源端)和第二核(目的端)中都存在指令,且各自在核内维护顺序一致性,从而可以在两个核之间实现数据同步,又不影响各自的指令执行顺序。在一些实施例中,目的端的数据接收通道接收到数据,源端就可以认为两者之间的传输完成,而不需要等到目的端将数据真正写到目的地址,由此可以加快指令处理,提升处理器的效率。
上面已经参考流程图描述了本披露实施例的应用于多核处理器的同步机制。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3A和图3B的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3A和图3B中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
随着人工智能技术的发展,在诸如图像处理和模式识别等的任务中,面向的操作数往往是多维向量(即,张量数据)的数据类型,这些张量数据通常在本披露实施例的多核处理器上进行处理。因此,针对如何实现多核处理器的多个核之间的张量数据同步也是当前计算领域亟需解决的问题。
在本披露的实施例中,当待同步的数据是张量数据时,可以在同步指令中的操作数中包括描述符,通过该描述符可以快速获取与张量数据相关的信息。例如,第二同步指令中可以包括张量数据的描述符,继而第二核(目的端)可以基于该描述符来确定张量数据的目的地址。
具体地,描述符可以至少指示张量数据的形状信息。张量数据的形状信息可以用于确定与该操作数对应的张量数据在数据存储空间中的数据地址。
下面将结合附图详细描述张量数据的形状信息的各种可能实现方式。
张量可以包含多种形式的数据组成方式。张量可以是不同维度的,比如标量可以看作是0维张量,向量可以看作1维张量,而矩阵可以是2维或2维以上的张量。张量的形状包括张量的维度、张量各个维度的尺寸等信息。举例而言,对于三维张量:
x3=[[[1,2,3],[4,5,6]];[[7,8,9],[10,11,12]]]
该张量的形状或维度可以表示为X3=(2,2,3),也即通过三个参数表示该张量为三维张量,且该张量的第一维度的尺寸为2、第二维度的尺寸为2、而第三维度的尺寸为3。在存储器中存储张量数据时,根据其数据地址(或存储区域)无法确定张量数据的形状,进而也无法确定多个张量数据之间相互关系等相关信息,导致处理器对张量数据的存取效率较低。
在一种可能的实现方式中,可以用描述符指示N维的张量数据的形状,N为正整数,例如N=1、2或3,或者为零。上面示例中的三维张量用描述符可以表示为(2,2,3)。需要说明的是,本披露对于描述符指示张量形状的方式没有限制。
在一种可能的实现方式中,N的取值可以根据张量数据的维数(也称为阶数)来确定,也可以根据张量数据的使用需要进行设定。例如,在N的取值为3时,张量数据为三维的张量数据,描述符可用来指示该三维的张量数据在三个维度方向上的形状(例如偏移量、尺寸等)。应当理解,本领域技术人员可以根据实际需要对N的取值进行设置,本披露对此不作限制。
虽然张量数据可以是多维的,但是因为存储器的布局始终是一维的,因此张量与存储器上的存储之间存在对应关系。张量数据通常被分配在连续的存储空间中,也即可以将张量数据进行一维展开(例如,行优先方式),存储在存储器上。
张量与底层存储之间的这种关系可以通过维度的偏移量(offset)、维度的尺寸(size)、维度的步长(stride)等来表示。维度的偏移量是指在该维度上相对参考位置的偏移。维度的尺寸是指该维度的大小,也即该维度上元素的个数。维度的步长指的是在该维度下,相邻元素之间的间隔,例如上面三维张量的步长为(6,3,1),也即第一维的步长是6,第二维的步长是3,第三维的步长是1。
图4A示出根据本披露实施例的数据存储空间的示意图。如图4A所示,数据存储空间41采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间41的起始地址PA_start(基准地址)为第一个数据块42的物理地址。数据块43是数据存储空间41中的部分数据,其在X轴方向上的偏移量45表示为offset_x,在Y轴方向上的偏移量44表示为offset_y,在X轴方向上的尺寸表示为size_x,在Y轴方向上的尺寸表示为size_y。
在一种可能的实现方式中,使用描述符来定义数据块43时,描述符的数据基准点可以使用数据存储空间41的第一个数据块,可以约定描述符的基准地址为数据存储空间41的起始地址PA_start。然后可以结合数据存储空间41在X轴的尺寸ori_x、在Y轴上的尺寸ori_y,以及数据块43在Y轴方向的偏移量offset_y、X轴方向上的偏移量offset_x、X轴方向上的尺寸size_x以及Y轴方向上的尺寸size_y来确定数据块43的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
Figure BDA0002705173140000161
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可以约定描述符的数据基准点在数据存储空间中的基准地址,在基准地址的基础上,根据处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置,确定张量数据的描述符的内容。
举例来说,可以约定描述符的数据基准点在数据存储空间中的基准地址PA_base。例如,可以在数据存储空间41中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址PA_base。可以根据对角位置的两个顶点相对于数据基准点的位置,确定出图4A中数据块43的描述符的内容。首先,确定数据块43的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址PA_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块43的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容(基准地址为PA_base):
Figure BDA0002705173140000162
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据描述符的数据基准点在数据存储空间中的基准地址,以及描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
Figure BDA0002705173140000171
在一种可能的实现方式中,描述符还用于指示N维的张量数据的地址,其中,描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(4):
Figure BDA0002705173140000172
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。在对描述符进行解析时可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,张量数据的地址参数包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址,基准地址包括该数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(5):
Figure BDA0002705173140000173
其中PA_start为基准地址参数,不再赘述。
应当理解,本领域技术人员可以根据实际情况对数据描述位置与数据地址之间的映射关系进行设定,本披露对此不作限制。
在一种可能的实现方式中,可以在一个任务中设定约定的基准地址,此任务下指令中的描述符均使用此基准地址,描述符内容中可以包括基于此基准地址的形状参数。可以通过设定此任务的环境参数的方式确定此基准地址。基准地址的相关描述和使用方式可参见上述实施例。此种实现方式下,描述符的内容可以更快速地被映射为数据地址。
在一种可能的实现方式中,可以在各描述符的内容中包含基准地址,则各描述符的基准地址可不同。相对于利用环境参数设定共同的基准地址的方式,此种方式中的各描述符可以更加灵活地描述数据,并使用更大的数据地址空间。
在一种可能的实现方式中,可根据描述符的内容,确定与处理指令的操作数对应的数据在数据存储空间中的数据地址。其中,数据地址的计算由硬件自动完成,且描述符的内容的表示方式不同时,数据地址的计算方法也会不同。本披露对数据地址的具体计算方法不作限制。
例如,操作数中描述符的内容是使用公式(1)表示的,描述符所指示的张量数据在数据存储空间中的偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,那么,该描述符所指示的张量数据在数据存储空间中的起始数据地址PA1(x,y)可以使用下述公式(6)来确定:
PA1(x,y)=PA_start+(offset_y-1)*ori_x+offset_x (6)
根据上述公式(6)确定的数据起始地址PA1(x,y),结合偏移量offset_x和offset_y,以及存储区域的尺寸size_x和size_y,可确定出描述符所指示的张量数据在数据存储空间中的存储区域。
在一种可能的实现方式中,当操作数还包括针对描述符的数据描述位置时,可根据描述符的内容以及数据描述位置,确定操作数对应的数据在数据存储空间中的数据地址。通过这种方式,可以对描述符所指示的张量数据中的部分数据(例如一个或多个数据)进行处理。
例如,操作数中描述符的内容是使用公式(2)表示的,描述符所指示的张量数据在数据存储空间中偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,操作数中包括的针对描述符的数据描述位置为(xq,yq),那么,该描述符所指示的张量数据在数据存储空间中的数据地址PA2(x,y)可以使用下述公式(7)来确定:
PA2(x,y)=PA_start+(offset_y+yq-1)*ori_x+(offset_x+xq) (7)
在一种可能的实现方式中,描述符可以指示分块的数据。数据分块在很多应用中可以有效地加快运算速度,提高处理效率。例如,在图形处理中,卷积运算经常使用数据分块进行快速运算处理。
图4B示出根据本披露实施例的数据分块在数据存储空间中的示意图。如图4B所示,数据存储空间46同样采用行优先的方式存储二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出)。不同于图4A的张量数据,图4B中存储的张量数据包括多个数据分块。
在这种情况下,描述符需要更多的参数来表示这些数据分块。以X轴(X维度)为例,可以涉及如下参数:ori_x,x.tile.size(分块中的尺寸47),x.tile.stride(分块中的步长48,即第一个小块的第一个点与第二个小块的第一个点的距离),x.tile.num(分块数量,图4B中示出为3个分块),x.stride(整体的步长,即第一行的第一个点到第二行第一个点的距离)等。其他维度可以类似地包括对应的参数。
在一种可能的实现方式中,描述符可以包括描述符的标识和/或描述符的内容。其中,描述符的标识用于对描述符进行区分,例如描述符的标识可以为其编号;描述符的内容可以包括表示张量数据的形状的至少一个形状参数。例如,张量数据为3维数据,在该张量数据的三个维度中,其中两个维度的形状参数固定不变,其描述符的内容可包括表示该张量数据的另一个维度的形状参数。
在一种可能的实现方式中,与各描述符对应的数据存储空间的数据地址可以是固定地址。例如,可以为张量数据划分单独的数据存储空间,每个张量数据在数据存储空间的起始地址与描述符一一对应。在这种情况下,负责对计算指令进行解析的电路或模块(例如本披露计算装置外部的实体)可以根据描述符来确定与操作数对应的数据在数据存储空间中的数据地址。
在一种可能的实现方式中,在与描述符对应的数据存储空间的数据地址为可变地址时,描述符还可用于指示N维的张量数据的地址,其中,描述符的内容还可包括表示张量数据的地址的至少一个地址参数。例如,张量数据为3维数据,在描述符指向该张量数据的地址时,描述符的内容可包括表示该张量数据的地址的一个地址参数,例如张量数据的起始物理地址,也可以包括该张量数据的地址的多个地址参数,例如张量数据的起始地址+地址偏移量,或张量数据基于各维度的地址参数。本领域技术人员可以根据实际需要对地址参数进行设置,本披露对此不作限制。
在一种可能的实现方式中,张量数据的地址参数可以包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址。其中,基准地址可根据数据基准点的变化而不同。本披露对数据基准点的选取不作限制。
在一种可能的实现方式中,基准地址可以包括数据存储空间的起始地址。在描述符的数据基准点是数据存储空间的第一个数据块时,描述符的基准地址即为数据存储空间的起始地址。在描述符的数据基准点是数据存储空间中第一个数据块以外的其他数据时,描述符的基准地址即为该数据块在数据存储空间中的地址。
在一种可能的实现方式中,张量数据的形状参数包括以下至少一种:数据存储空间在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系。其中,数据描述位置是描述符所指示的张量数据中的点或区域的映射位置,例如,张量数据为3维数据时,描述符可使用三维坐标空间(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本披露对此不作限制。通过在数据存取过程中使用描述符,可建立数据之间的关联,从而降低数据存取的复杂度,提高指令处理效率。
图5是示出根据本披露实施例的一种组合处理装置500的结构图。如图5中所示,该组合处理装置500包括计算处理装置502、接口装置504、其他处理装置506和存储装置508。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置510,该计算装置可以配置成图1所示的多核处理器,用于在其上实施本文结合图3A-图3B所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图6中示出的芯片602)。在一种实现中,该芯片是一种***级芯片(System on Chip,SoC),并且集成有一个或多个如图5中所示的组合处理装置。该芯片可以通过对外接口装置(如图6中示出的对外接口装置606)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图6对该板卡进行详细地描述。
图6是示出根据本披露实施例的一种板卡600的结构示意图。如图6中所示,该板卡包括用于存储数据的存储器件604,其包括一个或多个存储单元610。该存储器件可以通过例如总线等方式与控制器件608和上文所述的芯片602进行连接和数据传输。进一步,该板卡还包括对外接口装置606,其配置用于芯片(或芯片封装结构中的芯片)与外部设备612(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图5和图6的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1.一种处理单元,至少包括一个第一核,其中:
所述第一核配置用于:
响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件;以及
基于所述查询的结果,执行相应的同步操作。
条款2.根据条款1所述的处理单元,其中,所述第一核进一步配置用于:
当查询到存在所述未处理的同步事件时,将需要同步的数据传送到所述第二核;以及
在所述数据传送结束时,向所述第二核发送所述数据传送结束信号。
条款3.根据条款2所述的处理单元,其中,所述第一核配置成以信号量的方式发送所述数据传送结束信号。
条款4.根据条款1-3任一所述的处理单元,其中,所述第一核进一步配置用于:
当未查询到所述未处理的同步事件时,等待来自所述第二核的同步请求信号;以及
响应于接收到来自所述第二核的所述同步请求信号,记录所述同步事件。
条款5.根据条款1-4任一所述的处理单元,其中,
所述第一核进一步配置成将需要同步的数据传送到所述第二核的预定地址。
条款6.根据条款1-5任一所述的处理单元,其中,
所述第一核进一步配置用于:响应于接收到来自所述第二核的指示同步完成的应答信号,结束所述同步操作。
条款7.根据条款1-6任一所述的处理单元,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款8.根据条款1-7任一所述的处理单元,其中,
所述第一同步指令是发送(Send)指令,其指示相关同步事件的待同步数据的发送端已就绪。
条款9.一种处理单元,至少包括一个第二核,其中:
所述第二核配置用于:
响应于与第一核关联的第二同步指令,向所述第一核发送同步请求信号以指示待处理的同步事件;以及
响应于接收到来自所述第一核的数据传送结束信号,获取所传送的待同步数据。
条款10.根据条款9所述的处理单元,其中所述第二核进一步配置用于:
响应于所述数据传送结束信号,基于所述第二同步指令确定待同步数据的目的地址;
从用于接收从所述第一核传送的待同步数据的预定地址读取已传送的待同步数据;以及
将读取的待同步数据写入所述目的地址。
条款11.根据条款9-10任一所述的处理单元,其中所述待同步数据是张量数据,所述第二同步指令包括所述张量数据的描述符,并且,
所述第二核配置用于基于所述描述符来确定所述目的地址。
条款12.根据条款11所述的处理单元,其中所述描述符至少包括所述张量数据的形状信息。
条款13.根据条款9-12任一所述的处理单元,其中所述第二核进一步配置用于:
响应于接收到来自所述第一核的数据传送结束信号,向所述第一核发送应答信号以指示同步完成。
条款14.根据条款9-13任一所述的处理单元,其中所述第二核配置成以信号量的方式发送所述同步请求信号。
条款15.根据条款9-14任一所述的处理单元,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款16.根据条款9-15任一所述的处理单元,其中,
所述第二同步指令是接收(Receive)指令,其指示相关同步事件的待同步数据的接收端已就绪。
条款17.一种多核处理器,其特征在于,包括如条款1-8任一所述的处理单元以及如条款9-16任一所述的处理单元。
条款18.一种芯片,其特征在于,所述芯片内封装有如条款1-8任一所述的处理单元,或如条款9-16任一所述的处理单元,或如条款17所述的多核处理器。
条款19.一种板卡,其特征在于,所述板卡包括条款18所述的芯片。
条款20.一种用于处理单元的同步方法,所述处理单元至少包括一个第一核,所述方法包括:
所述第一核响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件;以及
所述第一核基于所述查询的结果,执行相应的同步操作。
条款21.根据条款20所述的同步方法,其中,所述方法进一步包括:
当查询到存在所述未处理的同步事件时,将需要同步的数据传送到所述第二核;以及
在所述数据传送结束时,向所述第二核发送所述数据传送结束信号。
条款22.根据条款21所述的同步方法,其中,所述数据传送结束信号以信号量的方式发送。
条款23.根据条款20-22任一所述的同步方法,其中,所述方法进一步包括:
当未查询到所述未处理的同步事件时,等待来自所述第二核的同步请求信号;以及
响应于接收到来自所述第二核的所述同步请求信号,记录所述同步事件。
条款24.根据条款20-23任一所述的同步方法,其中所述方法进一步包括:
所述第一核将需要同步的数据传送到所述第二核的预定地址。
条款25.根据条款20-24任一所述的同步方法,其中所述方法进一步包括:
第一核响应于接收到来自所述第二核的指示同步完成的应答信号,结束所述同步操作。
条款26.根据条款20-25任一所述的同步方法,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款27.根据条款20-26任一所述的同步方法,其中,
所述第一同步指令是发送(Send)指令,其指示相关同步事件的待同步数据的发送端已就绪。
条款28.一种用于处理单元的同步方法,所述处理单元至少包括一个第二核,所述方法包括:
所述第二核响应于与第一核关联的第二同步指令,向所述第一核发送同步请求信号以指示待处理的同步事件;以及
所述第二核响应于接收到来自所述第一核的数据传送结束信号,获取所传送的待同步数据。
条款29.根据条款28所述的同步方法,其中所述方法进一步包括:
所述第二核响应于所述数据传送结束信号,基于所述第二同步指令确定待同步数据的目的地址;
所述第二核从用于接收从所述第一核传送的待同步数据的预定地址读取已传送的待同步数据;以及
所述第二核将读取的待同步数据写入所述目的地址。
条款30.根据条款28-29任一所述的同步方法,其中所述待同步数据是张量数据,所述第二同步指令包括所述张量数据的描述符,并且,
所述第二核确定目的地址包括基于所述描述符来确定所述目的地址。
条款31.根据条款30所述的同步方法,其中所述描述符至少包括所述张量数据的形状信息。
条款32.根据条款28-31任一所述的同步方法,其中所述方法还包括:
所述第二核响应于接收到来自所述第一核的数据传送结束信号,向所述第一核发送应答信号以指示同步完成。
条款33.根据条款28-32任一所述的同步方法,其中所述同步请求信号以信号量的方式发送。
条款34.根据条款28-33任一所述的同步方法,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款35.根据条款28-34任一所述的同步方法,其中,
所述第二同步指令是接收(Receive)指令,其指示相关同步事件的待同步数据的接收端已就绪。
条款36.一种用于多核处理器的同步方法,其中所述多核处理器包括第一处理单元和第二处理单元,所述方法包括:
所述第一处理单元执行根据条款20-27任一所述的同步方法;以及
所述第二处理单元执行根据条款28-35任一所述的同步方法。

Claims (36)

1.一种处理单元,至少包括一个第一核,其中:
所述第一核配置用于:
响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件;以及
基于所述查询的结果,执行相应的同步操作。
2.根据权利要求1所述的处理单元,其中,所述第一核进一步配置用于:
当查询到存在所述未处理的同步事件时,将需要同步的数据传送到所述第二核;以及
在所述数据传送结束时,向所述第二核发送所述数据传送结束信号。
3.根据权利要求2所述的处理单元,其中,所述第一核配置成以信号量的方式发送所述数据传送结束信号。
4.根据权利要求1-3任一所述的处理单元,其中,所述第一核进一步配置用于:
当未查询到所述未处理的同步事件时,等待来自所述第二核的同步请求信号;以及
响应于接收到来自所述第二核的所述同步请求信号,记录所述同步事件。
5.根据权利要求1-4任一所述的处理单元,其中,
所述第一核进一步配置成将需要同步的数据传送到所述第二核的预定地址。
6.根据权利要求1-5任一所述的处理单元,其中,
所述第一核进一步配置用于:响应于接收到来自所述第二核的指示同步完成的应答信号,结束所述同步操作。
7.根据权利要求1-6任一所述的处理单元,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
8.根据权利要求1-7任一所述的处理单元,其中,
所述第一同步指令是发送(Send)指令,其指示相关同步事件的待同步数据的发送端已就绪。
9.一种处理单元,至少包括一个第二核,其中:
所述第二核配置用于:
响应于与第一核关联的第二同步指令,向所述第一核发送同步请求信号以指示待处理的同步事件;以及
响应于接收到来自所述第一核的数据传送结束信号,获取所传送的待同步数据。
10.根据权利要求9所述的处理单元,其中所述第二核进一步配置用于:
响应于所述数据传送结束信号,基于所述第二同步指令确定待同步数据的目的地址;
从用于接收从所述第一核传送的待同步数据的预定地址读取已传送的待同步数据;以及
将读取的待同步数据写入所述目的地址。
11.根据权利要求9-10任一所述的处理单元,其中所述待同步数据是张量数据,所述第二同步指令包括所述张量数据的描述符,并且,
所述第二核配置用于基于所述描述符来确定所述目的地址。
12.根据权利要求11所述的处理单元,其中所述描述符至少包括所述张量数据的形状信息。
13.根据权利要求9-12任一所述的处理单元,其中所述第二核进一步配置用于:
响应于接收到来自所述第一核的数据传送结束信号,向所述第一核发送应答信号以指示同步完成。
14.根据权利要求9-13任一所述的处理单元,其中所述第二核配置成以信号量的方式发送所述同步请求信号。
15.根据权利要求9-14任一所述的处理单元,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
16.根据权利要求9-15任一所述的处理单元,其中,
所述第二同步指令是接收(Receive)指令,其指示相关同步事件的待同步数据的接收端已就绪。
17.一种多核处理器,其特征在于,包括如权利要求1-8任一所述的处理单元以及如权利要求9-16任一所述的处理单元。
18.一种芯片,其特征在于,所述芯片内封装有如权利要求1-8任一所述的处理单元,或如权利要求9-16任一所述的处理单元,或如权利要求17所述的多核处理器。
19.一种板卡,其特征在于,所述板卡包括权利要求18所述的芯片。
20.一种用于处理单元的同步方法,所述处理单元至少包括一个第一核,所述方法包括:
所述第一核响应于与第二核关联的第一同步指令,查询是否存在与所述第二核关联的未处理的同步事件;以及
所述第一核基于所述查询的结果,执行相应的同步操作。
21.根据权利要求20所述的同步方法,其中,所述方法进一步包括:
当查询到存在所述未处理的同步事件时,将需要同步的数据传送到所述第二核;以及
在所述数据传送结束时,向所述第二核发送所述数据传送结束信号。
22.根据权利要求21所述的同步方法,其中,所述数据传送结束信号以信号量的方式发送。
23.根据权利要求20-22任一所述的同步方法,其中,所述方法进一步包括:
当未查询到所述未处理的同步事件时,等待来自所述第二核的同步请求信号;以及
响应于接收到来自所述第二核的所述同步请求信号,记录所述同步事件。
24.根据权利要求20-23任一所述的同步方法,其中所述方法进一步包括:
所述第一核将需要同步的数据传送到所述第二核的预定地址。
25.根据权利要求20-24任一所述的同步方法,其中所述方法进一步包括:
第一核响应于接收到来自所述第二核的指示同步完成的应答信号,结束所述同步操作。
26.根据权利要求20-25任一所述的同步方法,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
27.根据权利要求20-26任一所述的同步方法,其中,
所述第一同步指令是发送(Send)指令,其指示相关同步事件的待同步数据的发送端已就绪。
28.一种用于处理单元的同步方法,所述处理单元至少包括一个第二核,所述方法包括:
所述第二核响应于与第一核关联的第二同步指令,向所述第一核发送同步请求信号以指示待处理的同步事件;以及
所述第二核响应于接收到来自所述第一核的数据传送结束信号,获取所传送的待同步数据。
29.根据权利要求28所述的同步方法,其中所述方法进一步包括:
所述第二核响应于所述数据传送结束信号,基于所述第二同步指令确定待同步数据的目的地址;
所述第二核从用于接收从所述第一核传送的待同步数据的预定地址读取已传送的待同步数据;以及
所述第二核将读取的待同步数据写入所述目的地址。
30.根据权利要求28-29任一所述的同步方法,其中所述待同步数据是张量数据,所述第二同步指令包括所述张量数据的描述符,并且,
所述第二核确定目的地址包括基于所述描述符来确定所述目的地址。
31.根据权利要求30所述的同步方法,其中所述描述符至少包括所述张量数据的形状信息。
32.根据权利要求28-31任一所述的同步方法,其中所述方法还包括:
所述第二核响应于接收到来自所述第一核的数据传送结束信号,向所述第一核发送应答信号以指示同步完成。
33.根据权利要求28-32任一所述的同步方法,其中所述同步请求信号以信号量的方式发送。
34.根据权利要求28-33任一所述的同步方法,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
35.根据权利要求28-34任一所述的同步方法,其中,
所述第二同步指令是接收(Receive)指令,其指示相关同步事件的待同步数据的接收端已就绪。
36.一种用于多核处理器的同步方法,其中所述多核处理器包括第一处理单元和第二处理单元,所述方法包括:
所述第一处理单元执行根据权利要求20-27任一所述的同步方法;以及
所述第二处理单元执行根据权利要求28-35任一所述的同步方法。
CN202011036272.9A 2020-09-27 2020-09-27 处理单元、用于处理单元的同步方法及相应产品 Pending CN114281560A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011036272.9A CN114281560A (zh) 2020-09-27 2020-09-27 处理单元、用于处理单元的同步方法及相应产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011036272.9A CN114281560A (zh) 2020-09-27 2020-09-27 处理单元、用于处理单元的同步方法及相应产品

Publications (1)

Publication Number Publication Date
CN114281560A true CN114281560A (zh) 2022-04-05

Family

ID=80867738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011036272.9A Pending CN114281560A (zh) 2020-09-27 2020-09-27 处理单元、用于处理单元的同步方法及相应产品

Country Status (1)

Country Link
CN (1) CN114281560A (zh)

Similar Documents

Publication Publication Date Title
WO2023045445A1 (zh) 数据处理装置、数据处理方法及相关产品
US20210150325A1 (en) Data processing method and apparatus, and related product
CN112799599B (zh) 一种数据存储方法、计算核、芯片和电子设备
CN112799598B (zh) 一种数据处理方法、处理器及电子设备
CN114580606A (zh) 数据处理方法、装置、计算机设备和存储介质
WO2023045446A1 (zh) 计算装置、数据处理方法及相关产品
WO2022134873A1 (zh) 数据处理装置、数据处理方法及相关产品
WO2024149112A1 (zh) 卷积算子的编译方法及相关产品
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
CN114281561A (zh) 处理单元、用于处理单元的同步方法及相应产品
CN114281560A (zh) 处理单元、用于处理单元的同步方法及相应产品
CN114281558A (zh) 多核处理器、用于多核处理器的方法及相应产品
CN114692844A (zh) 数据处理装置、数据处理方法及相关产品
CN114691353A (zh) 一种张量的读取方法、装置以及相关产品
CN117234408A (zh) 基于指令读取数据中的目标数据的方法及其设备
CN114489799A (zh) 处理方法、处理装置及相关产品
CN114692838A (zh) 数据处理装置、数据处理方法及相关产品
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN113867800A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2022134872A1 (zh) 数据处理装置、数据处理方法及相关产品
WO2022100286A1 (zh) 数据处理装置、数据处理方法及相关产品
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN114489802A (zh) 数据处理装置、数据处理方法及相关产品
WO2022257980A1 (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