CN114281561A - 处理单元、用于处理单元的同步方法及相应产品 - Google Patents
处理单元、用于处理单元的同步方法及相应产品 Download PDFInfo
- Publication number
- CN114281561A CN114281561A CN202011036274.8A CN202011036274A CN114281561A CN 114281561 A CN114281561 A CN 114281561A CN 202011036274 A CN202011036274 A CN 202011036274A CN 114281561 A CN114281561 A CN 114281561A
- Authority
- CN
- China
- Prior art keywords
- core
- data
- access
- synchronization
- processing unit
- 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
Landscapes
- Multi Processors (AREA)
Abstract
本披露公开了一种处理单元、多核处理器、用于处理单元/多核处理器的同步方法及相关产品。该处理单元可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供的处理单元,可以通过各种同步指令来有效实现多核之间的数据同步。
Description
技术领域
本披露涉及处理器领域,特别是涉及一种处理单元、多核处理器、用于处理单元/多核处理器的同步方法、芯片和板卡。
背景技术
随着计算机技术的发展,各种应用(诸如视频结构、广告推荐、智能翻译等)对机器的存储能力和计算能力要求越来越高。由于单核处理器已经不能满足应用的需求,出现了各种各样的多核处理器系统。多核处理器系统的一个关键问题是多个核之间的协同工作。因此,如何基于多核结构来实现核间的工作协同是急需解决的问题。
发明内容
为了解决如上所提到的一个或多个技术问题,本披露在多个方面中提供了一种处理单元、多核处理器以及用于处理单元/多核处理器的同步方法,其中通过所提供的同步方法,可以实现多核处理器架构中多个核之间的数据同步。
在第一方面中,本披露提供一种处理单元,至少包括一个第一核,其中:所述第一核配置用于:响应于与第二核关联的第一同步指令,向所述第二核发送访问允许信号,所述访问允许信号包括关于允许访问的数据的信息;接收来自所述第二核的对所述数据的访问操作信号;以及执行所述访问操作。
在第二方面中,本披露提供一种处理单元,至少包括一个第二核,其中:所述第二核配置用于:响应于接收到来自第一核的访问允许信号,基于所述访问允许信号中包括的关于允许访问的数据的信息,向所述第一核发送对所述数据的访问操作信号;以及响应于第二同步指令,向所述第一核发送释放信号,以解除对所述数据的访问。
在第三方面中,本披露提供一种多核处理器,包括前述第一方面任一实施例的处理单元以及前述第二方面任一实施例的处理单元。
在第四方面中,本披露提供一种芯片,该芯片内封装有如前述第一方面任一实施例的处理单元,或前述第二方面任一实施例的处理单元,或前述第三方面任一实施例的多核处理器。
在第五方面中,本披露提供一种板卡,包括前述第四方面任一实施例的芯片。
在第六方面中,本披露提供一种用于处理单元的同步方法,所述处理单元至少包括一个第一核,所述方法包括:所述第一核响应于与第二核关联的第一同步指令,向所述第二核发送访问允许信号,所述访问允许信号包括关于允许访问的数据的信息;所述第一核接收来自所述第二核的对所述数据的访问操作信号;以及所述第一核执行所述访问操作。
在第七方面中,本披露提供一种用于处理单元的同步方法,所述处理单元至少包括一个第二核,所述方法包括:所述第二核响应于接收到来自第一核的访问允许信号,基于所述访问允许信号中包括的关于允许访问的数据的信息,向所述第一核发送对所述数据的访问操作信号;以及所述第二核响应于第二同步指令,向所述第一核发送释放信号,以解除对所述数据的访问。
在第八方面中,本披露提供一种用于多核处理器的同步方法,其中所述多核处理器包括第一处理单元和第二处理单元,所述方法包括:所述第一处理单元执行根据前述第六方面任一实施例的同步方法;以及所述第二处理单元执行根据前述第七方面任一实施例的同步方法。
通过如上所提供的处理单元、多核处理器、用于处理单元/多核处理器的同步方法、芯片和板卡,本披露实施例提供了一种在多核处理器架构下的两个核之间进行数据同步的方案,从而确保多核处理器架构中各个核之间的协同工作,有利于多核处理器任务的灵活调度,以及处理效率的提升。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出可以应用本披露实施例的多核处理器架构的示例性结构图;
图2示出处理器核的示例性内部架构图;
图3A-图3C示出根据本披露实施例的同步方法的示意性流程图;
图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的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
在多核处理器架构中,多个进程可以在多个核上同时运行,并且一些进程之间可能存在一定的关联。多个进程可能为了完成同一个任务会需要进行数据同步。在多核处理模式下,每个核维护自己资源下的数据,不被其他核所见,也看不见其他核的数据。因此,在待同步的数据进行传输之前,需要进行同步,保证同步的两端都做好准备,然后才能进行数据传输。基于前述多核处理器架构,数据同步可以包括不同集群间的存储核之间的同步,以及同一集群内部的存储核与处理器核之间的同步。本披露实施例提供了一种用于多核处理器架构的同步机制,其可以应用于上述任一同步场景。
在本披露的实施例中,针对多核处理器架构提供了一种借出(Lend)/归还(Return)模式的同步机制,其中一个核(出借端)将自己核内的数据出借给另一核,从而另一核(借用端或使用端)可以直接访问该核内的数据。
为了便于理解本披露的示例实施方式,图3A示出根据本披露一个实施例的多核处理器架构下两个核之间的交互式同步方法的示例性流程图。该多核处理器架构例如可以是前面参考图1-图2描述的示例性多核处理器架构。如图3A所示,同步方法至少涉及两个核:第一核310和第二核320,在第一核310与第二核320之间执行数据同步。第一核与第二核可以由不同的处理单元提供,也可以由相同的处理单元提供,本披露在此不做限制。为了便于描述,不妨假设第一核310是出借端,其将自己核内的数据出借给另一核,也即其提供自己核内的数据访问信息;第二核320是使用端或借用端,其根据出借端提供的数据访问信息可以直接访问出借端的数据。
本领域技术人员可以理解,对于不同的同步场景,第一核和第二核可以代表不同的核。例如对于多核处理器的集群间同步,第一核与第二核可以分别是该多核处理器中不同集群的存储核(参见图1的存储核122)。又例如,对于多核处理器的集群内同步,第一核与第二核可以分别是该多核处理器中同一集群内的处理器核或存储核。具体地,第一核可以是处理器核,第二核是存储核;或者反过来,第一核是存储核,第二核是处理器核。
在本披露的实施例中,提供了两种同步指令:第一同步指令和第二同步指令。
第一同步指令用于多核处理器架构中作为数据出借端的核,例如本实施例中的第一核310。第一同步指令可以是借出(Lend)指令,用于指示在同步事件中将出借端的指定数据出借给另一核使用。
第一同步指令可以包含与同步事件所涉及的待同步数据相关的信息、与同步对象相关的信息,等等。同步对象例如可以是多核处理器中作为数据借用端的核,例如本实施例中的第二核320。在本披露的实施例中,由于采用借出(Lend)/归还(Return)模式的同步机制,因此出借端需要将自己核内的数据出借给另一核,也即,需要将访问自己核内数据的方式提供给另一核。就此而言,当待同步数据是张量数据时,可以在第一同步指令中包括张量数据的描述符,从而另一核(借用端或使用端)可以基于该描述符来直接访问出借端的数据。关于张量数据的描述符的具体内容将在稍后描述。此外,与同步对象相关的信息例如可以包括核的标识。
第二同步指令用于多核处理器架构中作为数据借用端或使用端的核,例如本实施例中的第二核320。第二同步指令可以是归还(Return)指令,用于指示相关第二核对所借用的数据已经使用完毕。
第二同步指令根据需要可以包含各种信息,例如相关同步事件的标识信息。从而,数据借用端可以基于同步事件的标识信息,确定同步事件所对应的同步对象(例如,数据出借端)和/或所借用的同步数据。继而,数据借用端可以向数据出借端归还所借用的数据。
参见图3A,其示出了第一核310与第二核320之间用于数据同步的交互流程。第一核310和第二核320各自可以执行相应的指令,这些指令中可能包含同步指令,例如第一同步指令或第二同步指令,用于指示核间的数据同步事件。
在步骤S311,第一核在指令执行过程中可能遇到第一同步指令。如前面所描述的,第一同步指令意味着存在一个数据同步事件,在该事件中,第一核作为数据出借端,需要将其核内的数据借给另一核使用。第一同步指令可以包含与该同步事件所涉及的待同步数据相关的信息、与同步对象相关的信息,等等。在此示例中,同步对象为第二核320,也即数据借用端或使用端。在一些实施例中,当待同步数据是张量数据时,待同步数据相关的信息是张量数据的描述符,至少用于描述张量数据的形状信息。
接着,在步骤S313,第一核响应于上述第一同步指令,向第一同步指令中所指示的同步对象(在本示例中为第二核320)发送访问允许信号,该访问允许信号包括关于允许访问的数据的信息。如前所描述的,当待同步数据是张量数据时,关于允许访问的数据的信息可以是张量数据的描述符。
此时,第一核已经准备好将自己核内的数据出借给第二核,因此,第一核可以等待来自第二核的访问操作。
在第二核320处,当第二核接收到来自第一核的访问允许信号时,可以基于访问允许信号中包括的关于允许访问的数据的信息,向第一核发送对该数据的访问操作信号(步骤S323)。
在一些实施例中,发送访问操作信号之前,第二核可以先对本地的指令进行融合处理和译码以生成访问操作(步骤S322)。
具体地,第二核响应于接收到来自第一核的访问允许信号,基于关于允许访问的数据的信息以及第二核中将要执行的与该数据相关的指令,生成融合指令。换言之,当第二核希望直接使用第一核上的数据时,其可以将本地指令流中与第一核上的数据相关的指令提取出来,根据所接收到的访问允许信号中提供的数据信息修改这些指令,使得修改后的指令是直接针对第一核上的数据的操作指令。在一些实现中,当数据是张量数据时,可以将访问允许信号中包含的张量数据的描述符信息提取出来,融合到本地指令流的相关指令中。
接着,可以将融合指令译码或解码成对数据的访问操作;以及向第一核发送包括访问操作的访问操作信号。
在本披露实施例提供的同步机制中,作为数据出借端的核仅需要提供所出借数据的访问信息以及被动地接受访问,对指令的译码和数据的处理完全由数据借用端或使用端来承担。
在一些实施例中,访问操作可以包括对数据的一个或多个访问操作。这些访问操作可以包括在一个访问操作信号中合并式地发给第一核,也可以通过多个访问操作信号逐个地发给第一核。本披露在此方面没有限制。
对数据的访问操作可以包括以下任一类型:读操作和写操作。访问操作包括相关的物理地址信息。例如,当访问操作是读操作时,其可以包括所要读取的数据的物理地址信息。又例如,当访问操作是写操作时,其可以包括要将数据写入其中的物理地址信息。对于张量数据,相关的物理地址信息可以是张量数据的描述符。第一核在指令这些访问操作时可以根据张量数据的描述符来确定对应的物理地址。
接着,方法可以流转至第一核310处。当第一核接收到来自第二核的对数据的访问操作信号时,其可以执行这些访问操作。
具体地,在步骤S314中,第一核可以将接收到的访问操作插入第一核的本地指令流中并相应地执行指令流。
在本地指令流的执行期间,第一核仍然维持指令流的依赖关系。也即,第一核将插入的第二核生成的访问操作视为自己本地的指令来执行,并且也对这些访问操作适用第一核本地所采用的指令保序方法。换言之,借出的数据依然在本地核内维护依赖关系。第一核可以采用本领域技术人员已知的各种指令保序方法,本披露对此没有限制,也因此省略其描述。
图3A中示例性示出了两个访问操作,例如步骤S315,执行读操作,将读取的数据传送给第二核;又例如步骤S316,执行写操作,将操作中指定的数据写入第一核中的可访问的数据地址。本领域技术人员可以理解,上述两个访问操作仅仅是示例性的,可以存在更多或更少的操作,并且操作顺序也可以不同,本披露在此方面没有限制。
当第二核对相关数据使用完毕之后,其可能执行到第二同步指令(步骤S324)。如前所述,第二同步指令可以是归还(Return)指令,用于指示第二核对所借用的数据已经使用完毕。第二同步指令中可以包含相关同步事件的标识信息。
从而,响应于第二同步指令,第二核可以在步骤S326,向第一核发送释放信号,以解除对所借出数据的访问。数据借用端可以基于同步事件的标识信息,确定同步事件所对应的同步对象(例如,数据出借端)和/或所借用的同步数据。继而,数据借用端可以向数据出借端归还所借用的数据。相应地,第一核可以根据接收到的释放信号,解除相关数据的出借状态(图中未示出)。
可选地或附加地,在一些实施例中,第二核在接收到来自第一核的访问允许信号时,可以记录相关的同步事件(步骤S321)。该记录表明存在一个与第一核关联的数据同步事件,并且在该事件中,第二核要借用第一核中的数据。在这些实施例中,当第二核执行到第二同步指令时,其可以查询是否存在关联的未处理的同步事件(步骤S325);以及在存在关联的未处理的同步事件时(“是”分支),发送释放信号(步骤S326),并核销该同步事件。否则(“否”分支),继续等待,直到接收到同步事件。
可选地或附加地,在一些实施例中,在第一核向第二核发送访问允许信号之前,方法还包括步骤S312,检查与将要借出的数据存在依赖关系的指令是否已完成。仅当存在依赖关系的指令完成之后(“是”分支)才向第二核发送访问允许信号。否则(“否”分支),需要等待这些指令的完成。通过这种方式,可以确保借出的数据在借出之前,已经处理好与其他指令之间的依赖关系,从而避免后期被第二核访问时出现错误。
本领域技术人员可以理解,由于第一核与第二核可以并行地执行各自的指令流,因此指令执行进度可以互不相同。图3A中示出了第一核310先于第二核320执行到同步指令的情况。本领域技术人员可以理解,当第二核320先于第一核310执行到同步指令时,可以类似地实现同步过程,此处不再赘述。
在第二核对第一核出借的数据执行操作期间,由于第一核仅提供出借的数据,不进行其他操作,因此执行过程中发生的所有异常都汇聚到借用端,也即第二核进行指令上报。因此,在一些实施例中,当借用端一侧发生异常,进入动态复位装备状态后,将借用的数据还给出借端(第一核),以避免出借端处所借出的数据无法释放,导致后续指令死锁。
上面描述的第一核与第二核之间的各种信号传输可以采用各种方式来实现。这些信号传输例如包括访问允许信号、释放信号等。在一些实施例中,可以以信号量的方式来实现这些信号的传输。
为了便于理解,图3A以交互的方式示出了本披露实施例提供的同步机制。然而,本领域技术人员可以理解,本披露实施例还相应地提供了用于同步过程中各个核的同步方法。
图3B示出了根据本披露实施例的用于处理单元的同步方法的示例性流程图,其中该处理单元至少包括一个第一核。
如图3B所示,方法300B包括步骤S331,第一核响应于与第二核关联的第一同步指令,向第二核发送访问允许信号,其中访问允许信号包括关于允许访问的数据的信息。第一同步指令例如是借出(Lend)指令,其指示将第一核中的数据出借给第二核使用。接着,在步骤S332中,第一核接收来自第二核的对该数据的访问操作信号。最后,在步骤S333中,执行接收到的访问操作。
在一些实施例中,步骤S333可以包括:步骤S3331,将访问操作插入第一核的本地指令流;以及步骤S3332,执行本地指令流并且在执行本地指令流期间,维持指令流之间的依赖关系。
访问操作可以包括对数据的一个或多个访问操作,并且访问操作可以包括以下任一操作类型:读操作和写操作。
可选地或附加地,在向第二核发送访问允许信号之前,方法300B还可以包括:检查与将要借出的数据存在依赖关系的指令是否已完成;以及仅当存在依赖关系的指令完成之后才向第二核发送访问允许信号。
在一些实施例中,将要借出的数据是张量数据,并且关于允许访问的数据的信息包括张量数据的描述符。描述符可以至少包括张量数据的形状信息。
在一些实施例中,访问允许信号是以信号量的方式发送的。
图3C示出根据本披露实施例的用于处理单元的同步方法的示例性流程图,其中该处理单元至少包括一个第二核。
如图3C所示,方法300C包括步骤S341,响应于接收到来自第一核的访问允许信号,基于访问允许信号中包括的关于允许访问的数据的信息,向第一核发送对该数据的访问操作信号。
具体地,在一些实施例中,发送访问操作信号之前,可以包括步骤S3411,第二核可以基于关于允许访问的数据的信息以及第二核中将要执行的与该数据相关的指令,生成融合指令。在一些实现中,当数据是张量数据时,可以将访问允许信号中包含的张量数据的描述符信息提取出来,融合到本地指令流的相关指令中。
接着,在步骤S3412,第二核可以将融合指令译码或解码成对数据的访问操作。最后,在步骤S3413,向第一核发送包括访问操作的访问操作信号。
在本披露实施例提供的同步机制中,作为数据出借端的核仅需要提供所出借数据的访问信息以及被动地接受访问,对指令的译码和数据的处理完全由数据借用端或使用端来承担。
在一些实施例中,访问操作可以包括对数据的一个或多个访问操作。这些访问操作可以包括在一个访问操作信号中合并式地发给第一核,也可以通过多个访问操作信号逐个地发给第一核。本披露在此方面没有限制。
对数据的访问操作可以包括以下任一类型:读操作和写操作。访问操作包括相关的物理地址信息。例如,当访问操作是读操作时,其可以包括所要读取的数据的物理地址信息。又例如,当访问操作是写操作时,其可以包括要将数据写入其中的物理地址信息。对于张量数据,相关的物理地址信息可以是张量数据的描述符。第一核在指令这些访问操作时可以根据张量数据的描述符来确定对应的物理地址。
当第二核对相关数据使用完毕之后,其可能执行到第二同步指令。如前所述,第二同步指令可以是归还(Return)指令,用于指示第二核对所借用的数据已经使用完毕。第二同步指令中可以包含相关同步事件的标识信息。
因此,在步骤S342处,响应于第二同步指令,第二核可以向第一核发送释放信号,以解除对所借出数据的访问。数据借用端可以基于同步事件的标识信息,确定同步事件所对应的同步对象(例如,数据出借端)和/或所借用的同步数据。继而,数据借用端可以向数据出借端归还所借用的数据。相应地,第一核可以根据接收到的释放信号,解除相关数据的出借状态。
可选地或附加地,在一些实施例中,第二核在接收到来自第一核的访问允许信号时,可以记录相关的同步事件(图3C未示出)。该记录表明存在一个与第一核关联的数据同步事件,并且在该事件中,第二核要借用第一核中的数据。在这些实施例中,当第二核执行到第二同步指令时,其可以查询是否存在关联的未处理的同步事件;以及在存在关联的未处理的同步事件时,发送释放信号,并核销该同步事件。否则,继续等待,直到接收到同步事件。
图3B和图3C中各个步骤的具体实现可以参考前面结合图3A的描述,此处不再赘述。
从图3A到图3C的方法流程图可以看出,本披露实施例提供了一种出借(Lend)/归还(Return)模式的同步机制,其中一个核(出借端)将自己核内的数据出借给另一核,从而另一核(借用端或使用端)可以直接访问该核内的数据。在出借的数据是张量数据的情况下,出借端需要将张量数据的描述符提供给借用端。借用端根据描述符来访问张量数据。
虽然在数据同步过程中,第一核(出借端)和第二核(借用端)中都存在指令,且各自在核内维护顺序一致性,但是第二核(借用端)占据主动权,也是实际执行者。例如,出借端仅提供将要出借的数据的访问信息和被动地接收访问,而借用端则承担了指令译码和数据处理等工作。在一些实现中,异常处理也在借用端实现。当在出借数据的执行期间出现异常时,第二核进入动态复位装备状态后,将借用的数据还给出借端(第一核),以避免出借端处所借出的数据无法释放,导致后续指令死锁。
上面已经参考流程图描述了本披露实施例的应用于多核处理器的同步机制。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3A-图3C的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3A-图3C中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
随着人工智能技术的发展,在诸如图像处理和模式识别等的任务中,面向的操作数往往是多维向量(即,张量数据)的数据类型,这些张量数据通常在本披露实施例的多核处理器上进行处理。因此,针对如何实现多核处理器的多个核之间的张量数据同步也是当前计算领域亟需解决的问题。
在本披露的实施例中,当待同步的数据是张量数据时,可以在同步指令中的操作数中包括描述符,通过该描述符可以快速获取与张量数据相关的信息。例如,第一同步指令中可以包括要借出的张量数据的描述符,并通过访问允许信号发送给第二核(借用端),继而第二核(借用端)可以基于该描述符来访问张量数据。
具体地,描述符可以至少指示以下信息:张量数据的形状信息。张量数据的形状信息可以用于确定与该操作数对应的张量数据在数据存储空间中的数据地址。
下面将结合附图详细描述张量数据的形状信息的各种可能实现方式。
张量可以包含多种形式的数据组成方式。张量可以是不同维度的,比如标量可以看作是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)来表示描述符的内容:
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可以约定描述符的数据基准点在数据存储空间中的基准地址,在基准地址的基础上,根据处于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):
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据描述符的数据基准点在数据存储空间中的基准地址,以及描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
在一种可能的实现方式中,描述符还用于指示N维的张量数据的地址,其中,描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(4):
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。在对描述符进行解析时可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,张量数据的地址参数包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址,基准地址包括该数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(5):
其中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.根据条款1-2任一所述的处理单元,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
条款4.根据条款1-3任一所述的处理单元,其中所述第一核进一步配置成:
在向所述第二核发送所述访问允许信号之前,检查与所述数据存在依赖关系的指令是否已完成;以及
仅当存在依赖关系的指令完成之后才向所述第二核发送访问允许信号。
条款5.根据条款1-4任一所述的处理单元,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
条款6.根据条款1-5任一所述的处理单元,其中,
所述第一核配置成以信号量的方式发送所述访问允许信号。
条款7.根据条款1-6任一所述的处理单元,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款8.根据条款1-7任一所述的处理单元,其中,
所述第一同步指令是借出(Lend)指令,其指示将所述第一核中的数据出借给第二核使用。
条款9.一种处理单元,至少包括一个第二核,其中:
所述第二核配置用于:
响应于接收到来自第一核的访问允许信号,基于所述访问允许信号中包括的关于允许访问的数据的信息,向所述第一核发送对所述数据的访问操作信号;以及
响应于第二同步指令,向所述第一核发送释放信号,以解除对所述数据的访问。
条款10.根据条款9所述的处理单元,其中所述第二核进一步配置用于:
响应于接收到来自所述第一核的所述访问允许信号,基于所述关于允许访问的数据的信息以及所述第二核中将要执行的与所述数据相关的指令,生成融合指令;
将所述融合指令译码成对所述数据的访问操作;以及
向所述第一核发送包括所述访问操作的访问操作信号。
条款11.根据条款10所述的处理单元,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
条款12.根据条款10-11任一所述的处理单元,其中所述访问操作包括相关的物理地址信息。
条款13.根据条款9-12任一所述的处理单元,其中所述第二核进一步配置成:
响应于接收到来自所述第一核的所述访问允许信号,记录同步事件;
响应于所述第二同步指令,查询是否存在关联的未处理的同步事件;以及
在存在关联的未处理的同步事件时,发送所述释放信号,并核销所述同步事件。
条款14.根据条款9-13任一所述的处理单元,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
条款15.根据条款9-14任一所述的处理单元,其中,
所述第二核配置成以信号量的方式发送所述释放信号。
条款16.根据条款9-15任一所述的处理单元,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款17.根据条款9-16任一所述的处理单元,其中,
所述第二同步指令是归还(Return)指令,其指示所述第二核对所述数据已使用完毕。
条款18.一种多核处理器,其特征在于,包括如条款1-8任一所述的处理单元以及如条款9-17任一所述的处理单元。
条款19.一种芯片,其特征在于,所述芯片内封装有如条款1-8任一所述的处理单元,或如条款9-17任一所述的处理单元,或如条款18所述的多核处理器。
条款20.一种板卡,其特征在于,所述板卡包括条款19所述的芯片。
条款21.一种用于处理单元的同步方法,所述处理单元至少包括一个第一核,所述方法包括:
所述第一核响应于与第二核关联的第一同步指令,向所述第二核发送访问允许信号,所述访问允许信号包括关于允许访问的数据的信息;
所述第一核接收来自所述第二核的对所述数据的访问操作信号;以及
所述第一核执行所述访问操作。
条款22.根据条款21所述的同步方法,其中所述方法进一步包括:
所述第一核将所述访问操作插入所述第一核的本地指令流;以及
在执行所述本地指令流期间,维持所述指令流的依赖关系。
条款23.根据条款21-22任一所述的同步方法,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
条款24.根据条款21-23任一所述的同步方法,其中所述方法进一步包括:
所述第一核在向所述第二核发送所述访问允许信号之前,检查与所述数据存在依赖关系的指令是否已完成;以及
仅当存在依赖关系的指令完成之后才向所述第二核发送访问允许信号。
条款25.根据条款21-24任一所述的同步方法,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
条款26.根据条款21-25任一所述的同步方法,其中,
所述访问允许信号以信号量的方式发送。
条款27.根据条款21-26任一所述的同步方法,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款28.根据条款21-27任一所述的同步方法,其中,
所述第一同步指令是借出(Lend)指令,其指示将所述第一核中的数据出借给第二核使用。
条款29.一种用于处理单元的同步方法,所述处理单元至少包括一个第二核,所述方法包括:
所述第二核响应于接收到来自第一核的访问允许信号,基于所述访问允许信号中包括的关于允许访问的数据的信息,向所述第一核发送对所述数据的访问操作信号;以及
所述第二核响应于第二同步指令,向所述第一核发送释放信号,以解除对所述数据的访问。
条款30.根据条款29所述的同步方法,其中所述方法进一步包括:
所述第二核响应于接收到来自所述第一核的所述访问允许信号,基于所述关于允许访问的数据的信息以及所述第二核中将要执行的与所述数据相关的指令,生成融合指令;
将所述融合指令译码成对所述数据的访问操作;以及
向所述第一核发送包括所述访问操作的访问操作信号。
条款31.根据条款30所述的同步方法,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
条款32.根据条款30-31任一所述的同步方法,其中所述访问操作包括相关的物理地址信息。
条款33.根据条款29-32任一所述的同步方法,其中所述方法进一步包括:
所述第二核响应于接收到来自所述第一核的所述访问允许信号,记录同步事件;
所述第二核响应于所述第二同步指令,查询是否存在关联的未处理的同步事件;以及
在存在关联的未处理的同步事件时,向所述第一核发送所述释放信号,并核销所述同步事件。
条款34.根据条款29-33任一所述的同步方法,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
条款35.根据条款29-34任一所述的同步方法,其中,
所述释放信号以信号量的方式发送。
条款36.根据条款29-35任一所述的同步,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
条款37.根据条款29-36任一所述的同步方法,其中,
所述第二同步指令是归还(Return)指令,其指示所述第二核对所述数据已使用完毕。
条款38.一种用于多核处理器的同步方法,其中所述多核处理器包括第一处理单元和第二处理单元,所述方法包括:
所述第一处理单元执行根据条款21-28任一所述的同步方法;以及
所述第二处理单元执行根据条款29-37任一所述的同步方法。
Claims (38)
1.一种处理单元,至少包括一个第一核,其中:
所述第一核配置用于:
响应于与第二核关联的第一同步指令,向所述第二核发送访问允许信号,所述访问允许信号包括关于允许访问的数据的信息;
接收来自所述第二核的对所述数据的访问操作信号;以及
执行所述访问操作。
2.根据权利要求1所述的处理单元,其中所述第一核进一步配置成:
将所述访问操作插入所述第一核的本地指令流;以及
在执行所述本地指令流期间,维持所述指令流的依赖关系。
3.根据权利要求1-2任一所述的处理单元,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
4.根据权利要求1-3任一所述的处理单元,其中所述第一核进一步配置成:
在向所述第二核发送所述访问允许信号之前,检查与所述数据存在依赖关系的指令是否已完成;以及
仅当存在依赖关系的指令完成之后才向所述第二核发送访问允许信号。
5.根据权利要求1-4任一所述的处理单元,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
6.根据权利要求1-5任一所述的处理单元,其中,
所述第一核配置成以信号量的方式发送所述访问允许信号。
7.根据权利要求1-6任一所述的处理单元,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
8.根据权利要求1-7任一所述的处理单元,其中,
所述第一同步指令是借出(Lend)指令,其指示将所述第一核中的数据出借给第二核使用。
9.一种处理单元,至少包括一个第二核,其中:
所述第二核配置用于:
响应于接收到来自第一核的访问允许信号,基于所述访问允许信号中包括的关于允许访问的数据的信息,向所述第一核发送对所述数据的访问操作信号;以及
响应于第二同步指令,向所述第一核发送释放信号,以解除对所述数据的访问。
10.根据权利要求9所述的处理单元,其中所述第二核进一步配置用于:
响应于接收到来自所述第一核的所述访问允许信号,基于所述关于允许访问的数据的信息以及所述第二核中将要执行的与所述数据相关的指令,生成融合指令;
将所述融合指令译码成对所述数据的访问操作;以及
向所述第一核发送包括所述访问操作的访问操作信号。
11.根据权利要求10所述的处理单元,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
12.根据权利要求10-11任一所述的处理单元,其中所述访问操作包括相关的物理地址信息。
13.根据权利要求9-12任一所述的处理单元,其中所述第二核进一步配置成:
响应于接收到来自所述第一核的所述访问允许信号,记录同步事件;
响应于所述第二同步指令,查询是否存在关联的未处理的同步事件;以及
在存在关联的未处理的同步事件时,发送所述释放信号,并核销所述同步事件。
14.根据权利要求9-13任一所述的处理单元,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
15.根据权利要求9-14任一所述的处理单元,其中,
所述第二核配置成以信号量的方式发送所述释放信号。
16.根据权利要求9-15任一所述的处理单元,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
17.根据权利要求9-16任一所述的处理单元,其中,
所述第二同步指令是归还(Return)指令,其指示所述第二核对所述数据已使用完毕。
18.一种多核处理器,其特征在于,包括如权利要求1-8任一所述的处理单元以及如权利要求9-17任一所述的处理单元。
19.一种芯片,其特征在于,所述芯片内封装有如权利要求1-8任一所述的处理单元,或如权利要求9-17任一所述的处理单元,或如权利要求18所述的多核处理器。
20.一种板卡,其特征在于,所述板卡包括权利要求19所述的芯片。
21.一种用于处理单元的同步方法,所述处理单元至少包括一个第一核,所述方法包括:
所述第一核响应于与第二核关联的第一同步指令,向所述第二核发送访问允许信号,所述访问允许信号包括关于允许访问的数据的信息;
所述第一核接收来自所述第二核的对所述数据的访问操作信号;以及
所述第一核执行所述访问操作。
22.根据权利要求21所述的同步方法,其中所述方法进一步包括:
所述第一核将所述访问操作插入所述第一核的本地指令流;以及
在执行所述本地指令流期间,维持所述指令流的依赖关系。
23.根据权利要求21-22任一所述的同步方法,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
24.根据权利要求21-23任一所述的同步方法,其中所述方法进一步包括:
所述第一核在向所述第二核发送所述访问允许信号之前,检查与所述数据存在依赖关系的指令是否已完成;以及
仅当存在依赖关系的指令完成之后才向所述第二核发送访问允许信号。
25.根据权利要求21-24任一所述的同步方法,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
26.根据权利要求21-25任一所述的同步方法,其中,
所述访问允许信号以信号量的方式发送。
27.根据权利要求21-26任一所述的同步方法,其中,
所述第一核与所述第二核分别是多核处理器架构中不同集群的存储核;或者
所述第一核与所述第二核分别是多核处理器架构中同一集群内的处理器核或存储核。
28.根据权利要求21-27任一所述的同步方法,其中,
所述第一同步指令是借出(Lend)指令,其指示将所述第一核中的数据出借给第二核使用。
29.一种用于处理单元的同步方法,所述处理单元至少包括一个第二核,所述方法包括:
所述第二核响应于接收到来自第一核的访问允许信号,基于所述访问允许信号中包括的关于允许访问的数据的信息,向所述第一核发送对所述数据的访问操作信号;以及
所述第二核响应于第二同步指令,向所述第一核发送释放信号,以解除对所述数据的访问。
30.根据权利要求29所述的同步方法,其中所述方法进一步包括:
所述第二核响应于接收到来自所述第一核的所述访问允许信号,基于所述关于允许访问的数据的信息以及所述第二核中将要执行的与所述数据相关的指令,生成融合指令;
将所述融合指令译码成对所述数据的访问操作;以及
向所述第一核发送包括所述访问操作的访问操作信号。
31.根据权利要求30所述的同步方法,其中,所述访问操作包括对所述数据的一个或多个访问操作,并且所述访问操作包括以下任一:读操作和写操作。
32.根据权利要求30-31任一所述的同步方法,其中所述访问操作包括相关的物理地址信息。
33.根据权利要求29-32任一所述的同步方法,其中所述方法进一步包括:
所述第二核响应于接收到来自所述第一核的所述访问允许信号,记录同步事件;
所述第二核响应于所述第二同步指令,查询是否存在关联的未处理的同步事件;以及
在存在关联的未处理的同步事件时,向所述第一核发送所述释放信号,并核销所述同步事件。
34.根据权利要求29-33任一所述的同步方法,其中,所述数据是张量数据,并且所述关于允许访问的数据的信息包括所述张量数据的描述符,所述描述符至少包括所述张量数据的形状信息。
35.根据权利要求29-34任一所述的同步方法,其中,
所述释放信号以信号量的方式发送。
36.根据权利要求29-35任一所述的同步,其中,
所述第二核与所述第一核分别是多核处理器架构中不同集群的存储核;或者
所述第二核与所述第一核分别是多核处理器架构中同一集群内的处理器核或存储核。
37.根据权利要求29-36任一所述的同步方法,其中,
所述第二同步指令是归还(Return)指令,其指示所述第二核对所述数据已使用完毕。
38.一种用于多核处理器的同步方法,其中所述多核处理器包括第一处理单元和第二处理单元,所述方法包括:
所述第一处理单元执行根据权利要求21-28任一所述的同步方法;以及
所述第二处理单元执行根据权利要求29-37任一所述的同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011036274.8A CN114281561A (zh) | 2020-09-27 | 2020-09-27 | 处理单元、用于处理单元的同步方法及相应产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011036274.8A CN114281561A (zh) | 2020-09-27 | 2020-09-27 | 处理单元、用于处理单元的同步方法及相应产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114281561A true CN114281561A (zh) | 2022-04-05 |
Family
ID=80867739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011036274.8A Pending CN114281561A (zh) | 2020-09-27 | 2020-09-27 | 处理单元、用于处理单元的同步方法及相应产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114281561A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706813A (zh) * | 2022-05-05 | 2022-07-05 | 上海壁仞智能科技有限公司 | 多核异构片上系统、非对称同步方法、计算设备和介质 |
-
2020
- 2020-09-27 CN CN202011036274.8A patent/CN114281561A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706813A (zh) * | 2022-05-05 | 2022-07-05 | 上海壁仞智能科技有限公司 | 多核异构片上系统、非对称同步方法、计算设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230367722A1 (en) | Data processing device and method, and related products | |
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
US20210150325A1 (en) | Data processing method and apparatus, and related product | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112070202B (zh) | 一种融合图的生成方法、生成装置和计算机可读存储介质 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
WO2024149112A1 (zh) | 卷积算子的编译方法及相关产品 | |
WO2022134873A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114489803A (zh) | 处理装置、处理方法及相关产品 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN115840894A (zh) | 一种用于处理多维张量数据的方法及其相关产品 | |
CN114691353A (zh) | 一种张量的读取方法、装置以及相关产品 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN114281560A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114281559A (zh) | 多核处理器、用于多核处理器的同步方法及相应产品 | |
CN114489799A (zh) | 处理方法、处理装置及相关产品 | |
CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113742266B (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 |