CN113407352A - 用于处理任务的方法、处理器、设备和可读存储介质 - Google Patents
用于处理任务的方法、处理器、设备和可读存储介质 Download PDFInfo
- Publication number
- CN113407352A CN113407352A CN202110821443.7A CN202110821443A CN113407352A CN 113407352 A CN113407352 A CN 113407352A CN 202110821443 A CN202110821443 A CN 202110821443A CN 113407352 A CN113407352 A CN 113407352A
- Authority
- CN
- China
- Prior art keywords
- core
- general purpose
- purpose processing
- instruction
- processor
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 260
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000003860 storage Methods 0.000 title claims abstract description 29
- 230000001133 acceleration Effects 0.000 claims abstract description 73
- 239000004744 fabric Substances 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 48
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000013135 deep learning Methods 0.000 abstract description 2
- 238000013528 artificial neural network Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000009826 distribution Methods 0.000 description 11
- 238000013473 artificial intelligence Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 101150043088 DMA1 gene Proteins 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100282455 Arabidopsis thaliana AMP1 gene Proteins 0.000 description 1
- 102000015347 COP1 Human genes 0.000 description 1
- 108060001826 COP1 Proteins 0.000 description 1
- 101100218464 Haloarcula sp. (strain arg-2 / Andes heights) cop2 gene Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了用于处理任务的方法、处理器、设备和可读存储介质,涉及计算机技术领域,尤其涉及芯片和深度学习领域。具体实现方案为:针对预定类型的计算任务,将计算任务中的多个指令块分配给通用处理核和专用加速核;专用加速核中的控制单元将与其耦合的预定的协处理单元的指令完成指示通过信号通路传送给通用处理核的至少一个处理单元,信号通路被配置为将至少一个通用处理单元耦合到控制单元;以及如果确定接收到指令完成指示,通用处理核通过数据通路获取专用加速核中的第一片内缓存中的数据以用于完成计算任务,数据通路被配置为将通用处理核耦合到第一片内缓存。通过该方法,避免了计算任务切换开销,改进了存储资源和计算资源的利用率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及芯片和深度学习领域的用于处理任务的方法、处理器、设备和可读存储介质。
背景技术
人工智能(Artificial Intelligence,AI)算法被广泛应用在很多重要的互联网应用,如语音识别,图像识别,自然语言处理等,相较于传统手段,AI算法往往能取得更佳的精度和效果。深度神经网络是AI算法中使用最广泛的一种,应用这种算法时,需要对大量数据进行大规模的乘加计算,是典型的计算密集型应用,鉴于其数据计算量极大,使用GPU、FPGA和NPU等硬件加速器进行加速是一种常见做法。
近二十年来,由于半导体工艺、散热等方面的制约,单纯通过提升主频来提升处理器性能的方法已经难以实现,大多数处理器转而采用多核技术来提升处理器的计算性能。所谓多核技术,就是在处理器内部集成多个相同或不同的处理器核,在处理任务时,通过调度,将计算任务分发给多个处理核共同完成,通过处理核的并行计算来提升整个处理器的计算性能。在采用多核处理器来处理AI算法的过程中还存在许多需要解决的问题。
发明内容
本公开提供了一种处理任务的方法、处理器、设备和可读存储介质。
根据本公开的第一方面,提供了一种用于由异构多核处理器处理计算任务的方法,所述异构多核处理器包括通用处理核和专用加速核。该方法包括:针对预定类型的计算任务,将所述计算任务中的多个指令块分配给所述通用处理核和所述专用加速核;所述专用加速核中的控制单元将与其耦合的预定的协处理单元的指令完成指示通过信号通路传送给所述通用处理核的至少一个处理单元,所述信号通路被配置为将所述至少一个通用处理单元耦合到所述控制单元;以及如果确定接收到所述指令完成指示,所述通用处理核通过数据通路获取所述专用加速核中的第一片内缓存中的数据以用于完成所述计算任务,所述数据通路被配置为将所述通用处理核耦合到所述第一片内缓存。
根据本公开的第二方面,提供了一种异构多核处理器。该异构多核处理器包括:专用加速核,包括第一片内缓存和耦合到所述第一片内缓存的控制单元;通用处理核,包括路由结构组件和耦合到所述路由结构组件的至少一个通用处理单元;数据通路,被配置为将所述路由结构组件耦合到所述第一片内缓存以使得所述至少一个通用处理单元能够访问所述第一片内缓存;信号通路,被配置为将所述至少一个通用处理单元耦合到所述控制单元以用于传输与所述访问有关的指令完成指示。
根据本公开的第三方面,提供了一种电子设备。该电子设备包括至少一个根据本公开的第二方面的异构多核处理器;以及与所述至少一个异构多核处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个异构多核处理器执行,以使至少一个异构多核处理器能够执行根据本公开的第一方面的方法。
根据本公开的第四方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行根据本公开的第一方面的方法。
根据本公开的第五方面,提供一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开的第三方面的方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示出了本公开的多个实施例能够在其中实现的异构多核处理器100的示意图;
图2示出了根据本公开的一些实施例的处于通用处理核视角的通用处理核和专用加速核的示例200的示意图;
图3示出了根据本公开的一些实施例的处于专用加速核视角的通用处理核和专用加速核的示例300的示意图;
图4示出了根据本公开的一些实施例的用于处理任务的方法400的流程图;
图5示出了根据本公开的一些实施例的用于处理任务的方法500的流程图;
图6示出了能够实施本公开的多个实施例的设备600的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
硬件加速器依据计算资源种类可以划分为同构多核处理器和异构多核处理器。同构多核处理器中集成有多个相同的处理核,所有核都可以承担相同的计算任务;异构多核处理器中,集成有多种不同结构的处理核,每个核适合处理的计算任务不同。
当前,AI技术高速发展,算法迭代迅速,神经网络加速器既需要很高的计算效率,又需要具有较强地灵活性,来兼容未来出现的网络结构计算。
一种异构多核神经网络加速器的结构是,同时集成了专用加速核和通用处理核。专用加速核,内部集成有大量的乘加器等处理单元,并且布置了专门的计算流水线,能高效地完成卷积、矩阵乘法、向量计算等典型的基础AI神经网络结构的计算;通用处理核,编程方便、用法灵活,能够实现各种计算功能,能适应AI算法的不断更新。在计算中,神经网络加速器使用专用加速核处理典型的卷积、矩阵乘法等高计算密度算子,来达到较高的处理性能;使用通用处理核处理无法被专用加速器处理的算子,避免遇到无法加速的算子需要传回主机而由带宽瓶颈导致处理性能下降。
实际计算中,神经网络加速器根据计算任务的特点和所集成的处理核结构,将不同的计算任务分别下发给各个处理核,依次完成计算。但是,由于数据依赖性的制约,计算往往只能串行在神经网络加速器上执行,难以充分利用神经网络加速器的算力;同时,切换执行计算的处理核时,还会带来数据迁移的开销以及相应的切换延迟。
当前已有的异构多核神经网络加速器中,一般通过调度控制器选择给处理核下发计算任务时机的方式,来完成处理核间的同步,采用这种方式会带来子计算任务切换时的固定开销,从而影响多核神经网络加速器的整体性能。例如调度控制器收到两条有依赖关系的子计算任务,分别为第一子计算任务和第二子计算任务。为了提升计算吞吐,处理核内部采用流水计算的方式进行数据处理。该模式下,计算过程可分为进流水、流水处理和出流水三个阶段,而只有在流水处理阶段,计算核的全部计算资源处于工作状态,达到最高的计算吞吐。在子计算任务进行切换时,由于引入了调度控制器的同步,流水线被打断,从而在第一子计算任务和第二子计算任务间出现计算资源空闲。由于这部分时间基本是固定的,随着神经网络加速器算力的提升,计算总耗时降低,这部分固定开销在整个计算任务中的占比会越来越明显。
采用这种方式的另一个问题是总体访存带宽对计算性能的影响较大。当代处理器的时钟频率和性能以超乎想象的速度增长,但是存储器的访问速度的增长却要缓慢的多;虽然Cache和预取能够对减少平均访存时间有所帮助,但仍然不能从根本上解决问题,处理器和存储器之间的鸿沟越来越大。异构多核架构中,各个处理核内部一般集成有各自的片内存储,能够比较高效的实现内部数据的访问,但处理核之间的数据交换一般需要通过统一的片外存储器或者片上缓存来完成。所以,子计算任务间的数据交换往往需要经过统一的片上互联结构、片上缓存或片外存储器。然而由于带宽有限,延时较大,考虑到神经网络计算任务往往具有较大的数据量,使得数据访问经常成为系统瓶颈,影响整体计算性能的发挥。
采用这种方式,还有一个问题,就是不同处理核之间的计算和存储资源难以复用。不同的处理核在计算任务中由于数据依赖的制约,难以同时工作;即使考虑到通过多线程的方式来降低数据依赖的影响,由于不同处理核在计算任务中耗时所占比例不同,即便十分仔细安排任务流水线,仍然有部分处理核会处于空闲状态,造成算力资源的浪费。
为了至少解决上述问题,根据本公开的实施例,提出一种用于由异构多核处理器处理计算任务改进方案。在该方案中针对预定类型的计算任务,将计算任务中的多个指令块分配给通用处理核和专用加速核。然后专用加速核中的控制单元将与其耦合的预定的协处理单元的指令完成指示通过信号通路传送给通用处理核的至少一个处理单元。如果通用处理核接收到指令完成指示,通用处理核通过数据通路获取专用加速核中的第一片内缓存中的数据以用于完成计算任务。通过该方法,避免了计算任务切换开销,减少了对网络带宽和存储带宽的依赖性,改进了存储资源和计算资源的利用率,并且最大限度地利用加速器的计算性能。
在本公开中,术语“通用处理核”是指不针对特定计算任务设计的、能完成各种计算任务的处理核,一般采用类CPU架构设计,具有较强的灵活性。术语“专用加速核”是指针对特定任务进行专门优化设计的特殊处理核,能够高效处理相应的各种计算任务,但无法完成其他类型的计算任务。专用加速核内部集成直接存储器存取(Direct Memory Access,DMA)单元及多种协处理单元,可以分别完成数据存取以及各种专门优化的计算任务,协处理单元间通过异步协同指令维护各自的执行顺序,从而在计算中以流水的方式完成各个计算步骤,专用加速核内部的协处理单元间通过其内部的片内缓存完成数据传递。
图1示出了本公开的多个实施例能够在其中实现的异构多核处理器100的示意图。处理器100包括调度控制器101、通用处理核105、专用加速核106以及片上缓存103,上述各部件通过片上互联结构104进行通信。处理器100还包括片外存储器接口102与片外存储器连接。片外存储器可以为各种合适的存储器或者与处理器100封装在一起的存储模块,以用于处理器100与外部装置交换数据。
处理器100中的调度控制器101用于为控制处理器100内的计算任务的处理,并且用于向通用处理核105和专用加速核分配计算任务。在执行计算任务时,调度控制器获取要处理的计算任务。如果确定计算任务的类型为预定类型,例如协同处理任务类型,调度控制器从处理器100内获取包括可用的专用加速核和可用的通用处理核的核组。然后调度控制器将将核组中的核的工作模式配置为预定模式,诸如协同模式,以使得该核组协同处理计算任务。通过该方式,可以协同处理不同的计算任务,减少了处理任务的时间,节省了存储资源和计算资源。
将计算任务的多个指令块分配给可用的专用加速核和所述可用的通用处理核以用于处理计算任务。
片上缓存103用于存储由通用处理核105和专用加速核106访问的数据。通过设置片上缓存103可以加快处理器100内数据的处理,尤其是核间数据的处理。
通用处理核105包括至少一个通用处理单元107、路由结构组件108和片内缓存109。该至少一个通用处理单元107耦合到路由结构组件108。路由结构组件108耦合到片内缓存109。
为了实现通用处理该105对专用加速核106内的片内缓存112的访问,在路由结构组件108和片内缓存112之间设置数据通路。在一些实施例中,该数据通路被设置为AXI总线。在一些实施例中,该数据总线设置为APB总线。在一些实施例中,可以依据需要来设置自定义的总线结构。上述示例仅是用于描述本公,而非对本公开的具体限定。
在设置了数据通路后,路由结构组件108还与片内缓存112耦合,其根据从通用处理单元107中接收的访问指令中存储地址来确定是访问片内缓存109还是片内缓存112。为了描述方便,片内缓存112被称为第一片内缓存,片内缓存109被称为第二片内缓存。通过该方式,可以使得依据需要访问不同的核上的缓存,加快了数据的处理。
通用处理核105内还设置有汇总分发组件110。汇总分发组件110连接通用处理核内部的各个处理单元。汇总分发组件还通过信号通路连接专用加速核106内控制单元,以用于向专用加速核内的协处理单元发送指令完成指示或者从控制单元接收预定协处理单元的指令完成指示。通过该方式,可以加快指令在两个处理核间的传递。在一些实施例中,该信号通路AXI总线。在一些实施例中,该信号通路为由用户设置的通信线路,例如包括一个有效位线和八位数字线的通信线路。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在工作时,其他协处理单元通过信号通路发来指令完成指示时,汇总分发组件110将该指示复制多份,分发给通用处理核105的所有通用处理单元;当通用处理单元生成指令完成指示时,汇总分发组件110从每个处理单元收集指令完成指示,汇总后发送给控制单元118,然后由控制单元118发送到对应的协处理单元。
为了实现上述操作,在公开中对于通用处理核105增加异步协同指令。异步协同指令包括两条指令,分别为等待指令和完成指令。等待指令包括2个主要字段,字段1用来指示指令的类型为等待指令,字段2用来指示指令等待的完成信号来自哪些协处理单元;当通用处理核执行到该条指令时,需要等待指令中指定的若干个协处理单元均发出完成信号,才能继续执行后面的工作。完成指令包括2个主要字段,字段1用来指示指令的类型为完成指令,字段2用来指示需要向哪些协处理单元发出完成信号。当通用处理核执行到该条指令时,需要向指令中指示的各个协处理单元发出完成信号。通过上述指令,可以实现在不同结构的核之间的任务协同处理。
在图1中专用加速核包括四个协处理单元111、114、115和117和两个DMA单元113和116。其仅是示例,而非对本公开的具体限定,专用加速核可以包括任意合适数量的协处理单元和任意数量的DMA单元,例如至少一个个协处理单元和至少一个DMA单元。通过该方式,可以使得处理核满足不同的需求。
专用加速核106内的控单元110用于向协处理单元分配针对所述计算任务的指令块,并且可以将协处理单元的完成指令指示发送到汇总分发组件,并将从汇总分发组件接收的指令完成指示发送到预定的协处理单元来实现任务的协同处理。因此专用加速核被配置为如果确定完成协处理单元中的指令块的执行,向通用处理核发送指令完成指示;以及从所述通用处理核接收指令完成指示,所述指令完成指示包括向所述专用加速核内的哪些协处理核发送指令完成指示。通过该方式,可以实现任务的协同处理。
由片内缓存112通过数据通路连接到路由结构组件,专用加速核106的内部片内缓存112增加一个访问接口以用于形成上述数据通道。此接口暴露给通用处理核105,连接增加的访问通路。
为了实现专用加速核的控制单元118与汇总分发组件110之间的信号通道,在控制单元118处增加一个协处理单元仲裁接口。利用该接口连接到通用处理核或其内部的汇总分发模块,通过该接口调度模块可以向通用处理核接收和发送完成信号,从而控制指令执行的先后顺序。
图1中示出了与至少一个通用处理单元107与汇总分发组件110相连,其仅是示例。在一些实施例中,至少一个通用处理单元107为一个通用处理单元时,通用处理核105内可以不设置汇总分发组件。
图1示出了一个通用处理核105和一个专用加速核106,其仅是示例,而非对本公开的具体限定。在处理器100内可以包括任意合适数量的通用处理核和专用加速核。
为通用处理核增加一条访问专用加速核片内存储的数据访问通路。该通路将专用加速核内部的存储空间暴露给通用处理核,从而允许通用处理核以特殊的指令或地址空间的方式实现数据访问;
通用处理核增加异步协同指令。所述异步协同指令包括两条指令,分别为等待指令和完成指令。所述等待指令包括2个主要字段,字段1用来指示指令的类型为等待指令,字段2用来指示指令所述等待的完成信号来自哪些协处理单元;当通用处理核执行到该条指令时,需要等待指令中指定的若干个协处理单元,均发出完成信号,才能继续执行后面的工作。所述完成指令包括2个主要字段,字段1用来指示指令的类型为完成指令,字段2用来指示需要向哪些协处理单元发出完成信号;当处理核执行到该条指令时,需要向指令中指示的各个协处理单元发出完成信号;
如果通用处理核本身是一个多核结构,则需要额外增加一个汇总分发模块。汇总分发模块一边连接通用处理核内部的各个处理核,另一边连接其他协处理单元。工作时,其他协处理单元发来完成信号时,汇总分发模块将该信号复制多份,分发给通用处理核的所有处理核;当通用处理核发来完成信号时,汇总分发模块从每个处理核收集完成信号,汇总后发送给对应的协处理单元。
专用加速核的内部片上缓存增加一个访问接口。此接口暴露给通用处理核,连接增加的访问通路;
专用加速核的调度单元增加一个协处理单元仲裁接口。此接口连接到通用处理核或其内部的汇总分发模块,通过该接口调度模块可以向通用处理核接收和发送完成信号,从而控制指令执行的先后顺序。
通过该方法,避免了计算任务切换开销,减少了对网络带宽和存储带宽的依赖性,改进了存储资源和计算资源的利用率,并且最大限度地利用加速器的计算性能。
上面结合图1描述了本公开的多个实施例能够在其中实现的异构多核处理器100的示意图。下面结合图2和图3描述从通用处理核视角和专用加速核视角的示例。其中图2描述根据本公开的一些实施例的通用处理核视角的专用加速核和加速处理核的示例200的示意图;图3描述了根据本公开的一些实施例的处于专用加速理核视角的专用加速核和加速处理核的示例300的示意图。
图2中包括互相耦合的通用处理核201和专用加速核202。通用处理核包括至少一个通用处理单元203、路由结构组件204、片内缓存205和汇总分发组件206;专用加速核202包括片内缓存207和控制单元208。上述部件的功能与图1中对应的部件的功能相同。
在通用处理核视角下,通用处理核210增加了一块存储空间,该空间访问性能低于其自身片内缓存205,但高于异构多核处理器的片外存储器和片上缓存。编写程序时,如果源数据来自专用加速核202,则首先增加一条等待指令,指示通用处理核201在指明的协处理单元工作完成后开始工作;如果计算结果由专用加速核的协处理单元使用,则在计算指令后增加一条完成指令,指示对应的协处理单元可以开始工作。
图3中专用加速核302包括四个协处理单元303、304、305和309、控制单元310以及两个DMA单元。专用加速核视角下,通用处理核被整体作为专用加速核的一个协处理单元使用。通用处理核内部的资源不独立接受专用加速核的调度模块控制,通用处理核301与其他协处理单元之间通过专用加速核302内部的片上缓存交换数据。
通过该方法,避免了计算任务切换开销,减少了对网络带宽和存储带宽的依赖性,改进了存储资源和计算资源的利用率,并且最大限度地利用加速器的计算性能。
上面结合图2和图3描述了不同视角下的专用加速核和通用处理核。下面结合图4描述根据本公开的一些实施例的用于任务的方法400的流程图。图4中的方法400可以由图1中的处理器100或任意合适的处理器执行。
图4中的方法由异构多核处理器执行,异构多核处理器包括通用处理核和专用加速核。
在框402处,针对预定类型的计算任务,将所述计算任务中的多个指令块分配给所述通用处理核和专用加速核。例如,将任务分配给通用处理核105和专用加速核106。
在一些实施例中,处理核内的调度控制器在接收到计算任务时,会判定计算任务是否为协同处理类型的计算任务。如果是协同类型的计算任务,则会在处理核内的通用处理核或专用加速核中找出可以组成一组的通用处理核和加速专用核来执行该计算任务。并且将该一组核标识为预定工作模式,例如,协同式作模式。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在一些实施例中,基于核标识,将所述多个指令块分配给所述通用处理核和所述专用加速核。通过该方式,可以快速准确的为处理核分配指令。
在框404处,所述专用加速核中的控制单元将与其耦合的预定的协处理单元的指令完成指示通过信号通路传送给所述通用处理核的至少一个处理单元,所述信号通路被配置为将所述至少一个通用处理单元耦合到所述控制单元。
在一些实施例中,在通用处理核内,所述通用处理核内的汇总分发组件对所述指令完成指示进行复制,然后发送到所述至少一个通用处理单元。通过该方式,可以使得每个处理单元均获得指令完成指示。
在一些实施例中,如果所述至少一个通用处理单元为一个通用处理单元,可以利用信号通路将通用处理单元直接耦合到控制单元。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在框406处,如果确定接收到所述指令完成指示,所述通用处理核通过数据通路获取所述专用加速核中的第一片内缓存中的数据以用于完成所述计算任务,所述数据通路被配置为将所述通用处理核耦合到所述第一片内缓存。
在一些实施例中,通用处理单元将针对所述数据的访问地址发送到所述通用处理核内的路由结构组件。然后所述路由结构组件基于所述访问地址来确定对所述通用处理核内的第二片内缓存或所述第一片内缓存的访问。如果根据所述地址信息确定访问所述第一片内缓存,则从所述第一缓存内的所述访问地址获取所述数据。通过该方式,可以准确地访问第一片内缓存。
在一些实施例中,响应于所述至少一个通用处理单元完成指令块操作,向所述汇总分发组件发送指令完成指示。由所述汇总分发组件对所述指令完成指示进行汇总以发送给预定的协处理单元。通过该方式,可以实现指令的正确传送。
通过该方法,避免了计算任务切换开销,减少了对网络带宽和存储带宽的依赖性,改进了存储资源和计算资源的利用率,并且最大限度地利用加速器的计算性能
上面结合图4描述了根据本公开的一些实施例的用于任务的方法400的流程图。下面结合图5描述根据本公开的一些实施例的用于任务的方法500的流程图。图5中的方法500可以由图1中的包括处理器100的计算设备或任意合适的计算设备执行。
在框501处,该方法500开始。在框502处,用户编写程序,在一个子计算任务中,可以同时使用多种处理核,并通过异步协同指令指示顺序执行。传统模式下,每个子计算任务只能使用一种处理核;协同工作模式下,在一个子计算任务中,可以同时使用多种处理核,不同处理核的工作顺序通过异步协同指令指示。
在框503处,使用软件工具链完成编译,对使用协同工作方法的子计算任务进行标记。对于使用了多种处理核的子计算任务,将编译好的指令标记为协同模式计算任务。在框504处,通过驱动和运行时程序下发编译好的程序和数据到异构多核神经网络加速器,并配置调度控制器开始执行计算。在框505处,调度控制器根据标记判断待下发的子计算任务种类是否为协同计算任务;若不是,进入框506,否则,进入框507。
在框506处,调度控制器选择所需同种处理核,下发计算任务;在框509,调度控制器搜索空闲的成组存在的处理核,并将其锁定。在框508,将被锁定的处理核的工作模式配置为协同工作模式。接下来进入框509,依次为锁定的每个处理核下发计算任务。接着进行框510,处理核根据标标记来区分自身需要执行的指令,并在完成计算任务后返回中断给调度控制器。
然后,在框512,调度控制器收集中断,当该子计算任务调用的所有处理核均完成计算,则将该子计算任务记为完成。接在在框513,调度控制器判断是否完成所有计算任务,即判断是否还有未执行完的计算任务,如果有,则进入框505。如果为是,在框514处,调度控制器返回中断给主机,完成计算。
通过该方法,避免了计算任务切换开销,减少了对网络带宽和存储带宽的依赖性,改进了存储资源和计算资源的利用率,并且最大限度地利用加速器的计算性能。
下面结合一段示例伪代码来描述利用通用处理核和专用加速核进行云计算任务处理的示例。其中wait_core为等待指令,signal_core为完成指令,xx_run为对应协处理单元上执行的计算程序;这段代码构造了一条DMA0->COP0->COP1->GENERAL_CORE->COP2->DMA1的计算流水线。其中DMA0、DMA1为专用加速核中的直接存储器访问单元,COP0、COP1、COP2为专用加速核上的协处理单元,而GENERAL_CORE为通用处理核。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备600可以为包括异构多核处理器的计算设备。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以为异构多核处理器,并且还可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线804。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用加速组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如方法400和500。例如,在一些实施例中,方法400和500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的方法400和500的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法400和500。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (16)
1.一种用于由异构多核处理器处理计算任务的方法,所述异构多核处理器包括通用处理核和专用加速核,所述方法包括:
针对预定类型的计算任务,将所述计算任务中的多个指令块分配给所述通用处理核和所述专用加速核;
所述专用加速核中的控制单元将与其耦合的预定的协处理单元的指令完成指示通过信号通路传送给所述通用处理核的至少一个处理单元,所述信号通路被配置为将所述至少一个通用处理单元耦合到所述控制单元;以及
如果确定接收到所述指令完成指示,所述通用处理核通过数据通路获取所述专用加速核中的第一片内缓存中的数据以用于完成所述计算任务,所述数据通路被配置为将所述通用处理核耦合到所述第一片内缓存。
2.根据权利要求1所述的方法,其中将所述多个指令块分配给所述通用处理核和所述专用加速核包括:
基于核标识,将所述多个指令块分配给所述通用处理核和所述专用加速核。
3.根据权利要求1所述的方法,其中将指令完成指示传送给所述通用处理核包括:
将所述指令完成指示由所述通用处理核内的汇总分发组件进行复制以发送到所述至少一个通用处理单元。
4.根据权利要求1所述的方法,其中获取所述数据包括:
将针对所述数据的访问地址发送到所述通用处理核内的路由结构组件;
所述路由结构组件基于所述访问地址来确定对所述通用处理核内的第二片内缓存或所述第一片内缓存的访问;以及
如果确定访问所述第一片内缓存,从所述第一缓存内的所述访问地址获取所述数据。
5.根据权利要求1所述的方法,还包括:
响应于所述至少一个通用处理单元完成指令块操作,向所述汇总分发组件发送指令完成指示;以及
由所述汇总分发组件对所述指令完成指示进行汇总以发送给预定的协处理单元。
6.一种异构多核处理器,包括:
专用加速核,包括第一片内缓存和耦合到所述第一片内缓存的控制单元;
通用处理核,包括路由结构组件和耦合到所述路由结构组件的至少一个通用处理单元;
数据通路,被配置为将所述路由结构组件耦合到所述第一片内缓存以使得所述至少一个通用处理单元能够访问所述第一片内缓存;
信号通路,被配置为将所述至少一个通用处理单元耦合到所述控制单元以用于传输与所述访问有关的指令完成指示。
7.根据权利要求6所述的处理器,所述通用处理核还包括:
汇总分发组件,被配置为将从所述至少一个通用处理单元接收的指令完成指示进行汇总以发送到所述控制单元,或者将接收到的来自预定协处理单元的指令完成指示分发到所述至少一个通用处理单元。
8.根据权利要求6所述的处理器,所述通用处理核还包括:第二片内缓存,被耦合到所述路由结构组件,所述路由结构组件被配置为基于接收到的地址信息来访问所述第一片内缓存或所述第二片内缓存。
9.根据权利要求6所述的处理器,所述专用加速核还包括:
至少一个协处理单元;以及
至少一个直接存储器访问单元。
10.根据权利要求6所述的处理器,还包括:
调度器,所述调度器被配置为:
获取要处理的计算任务;
如果确定所述计算任务的类型为预定类型,确定包括可用的专用加速核和可用的通用处理核的核组;
将所述核组中的核的工作模式配置为预定模式;
将所述计算任务的多个指令块分配给所述可用的专用加速核和所述可用的通用处理核以用于处理所述计算任务。
11.根据权利要求10所述的处理器,其中所述可用的通用处理核被配置为:
等待来自所述专用加速核中的预定协处理单元的指令完成信号;
响应于接收到所述预定协处理单元的指令完成信号,执行分配给所述通用处理核的指令块。
12.根据权利要求11所述的处理器,其中所述通用处理核还被配置为:
如果确定完成所述通用处理核内的指令块的执行,向所述专用加速核中的目标协处理单元发送指令完成信号。
13.根据权利要求10所述的处理器,其中所述专用加速核被配置为:
如果确定完成协处理单元中的指令块的执行,向所述通用处理核发送指令完成指示;以及
从所述通用处理核接收指令完成指示,所述指令完成指示包括向所述专用加速核内的哪些协处理核发送指令完成指示。
14.一种电子设备,包括:
至少一个根据权利要求6所述的异构多核处理器;以及
与所述至少一个异构多核处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个异构多核处理器执行,以使所述至少一个异构多核处理器能够执行权利要求1-5中任一项所述的方法。
15.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-5中任一项所述的方法。
16.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-5中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110821443.7A CN113407352B (zh) | 2021-07-20 | 2021-07-20 | 用于处理任务的方法、处理器、设备和可读存储介质 |
US17/812,004 US20220342712A1 (en) | 2021-07-20 | 2022-07-12 | Method for Processing Task, Processor, Device and Readable Storage Medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110821443.7A CN113407352B (zh) | 2021-07-20 | 2021-07-20 | 用于处理任务的方法、处理器、设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113407352A true CN113407352A (zh) | 2021-09-17 |
CN113407352B CN113407352B (zh) | 2024-08-16 |
Family
ID=77687120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110821443.7A Active CN113407352B (zh) | 2021-07-20 | 2021-07-20 | 用于处理任务的方法、处理器、设备和可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220342712A1 (zh) |
CN (1) | CN113407352B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028418A (zh) * | 2023-02-13 | 2023-04-28 | 中国人民解放军国防科技大学 | 基于gpdsp的可扩展多核处理器、加速卡及计算机 |
CN117171075A (zh) * | 2023-10-27 | 2023-12-05 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
WO2023231768A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种多核处理器及相关核间通信方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089356B (zh) * | 2023-04-11 | 2023-06-27 | 北京红山微电子技术有限公司 | 近存计算装置、近存计算方法、集成电路及存储介质 |
CN116483013B (zh) * | 2023-06-19 | 2023-09-05 | 成都实时技术股份有限公司 | 一种基于多通道采集器的高速信号采集系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073543A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 通用处理器与图形处理器融合系统及其融合方法 |
CN104794100A (zh) * | 2015-05-06 | 2015-07-22 | 西安电子科技大学 | 基于片上网络的异构多核处理系统 |
CN107122162A (zh) * | 2016-02-25 | 2017-09-01 | 深圳市知穹科技有限公司 | 基于cpu和gpu的异构千核高通量处理系统及其修改方法 |
CN112418389A (zh) * | 2019-08-23 | 2021-02-26 | 北京希姆计算科技有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
-
2021
- 2021-07-20 CN CN202110821443.7A patent/CN113407352B/zh active Active
-
2022
- 2022-07-12 US US17/812,004 patent/US20220342712A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073543A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 通用处理器与图形处理器融合系统及其融合方法 |
CN104794100A (zh) * | 2015-05-06 | 2015-07-22 | 西安电子科技大学 | 基于片上网络的异构多核处理系统 |
CN107122162A (zh) * | 2016-02-25 | 2017-09-01 | 深圳市知穹科技有限公司 | 基于cpu和gpu的异构千核高通量处理系统及其修改方法 |
CN112418389A (zh) * | 2019-08-23 | 2021-02-26 | 北京希姆计算科技有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231768A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种多核处理器及相关核间通信方法 |
CN116028418A (zh) * | 2023-02-13 | 2023-04-28 | 中国人民解放军国防科技大学 | 基于gpdsp的可扩展多核处理器、加速卡及计算机 |
CN117171075A (zh) * | 2023-10-27 | 2023-12-05 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
CN117171075B (zh) * | 2023-10-27 | 2024-02-06 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113407352B (zh) | 2024-08-16 |
US20220342712A1 (en) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113407352B (zh) | 用于处理任务的方法、处理器、设备和可读存储介质 | |
US10768989B2 (en) | Virtual vector processing | |
CN112199173B (zh) | 双核cpu实时操作系统数据处理方法 | |
CN102640131A (zh) | 并行线程处理器中的一致分支指令 | |
JP7012689B2 (ja) | コマンド実行方法及び装置 | |
US11403104B2 (en) | Neural network processor, chip and electronic device | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
US20220043770A1 (en) | Neural network processor, chip and electronic device | |
CN111782580B (zh) | 复杂计算装置、方法、人工智能芯片和电子设备 | |
CN106874158A (zh) | 一种异构系统全程序功耗计量方法 | |
US7831803B2 (en) | Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine | |
CN104598304A (zh) | 用于作业执行中的调度的方法和装置 | |
Klenk et al. | Analyzing put/get apis for thread-collaborative processors | |
JP5708003B2 (ja) | 演算処理装置、計算ノード、並列計算機システム、演算処理方法および演算処理プログラム | |
US9015719B2 (en) | Scheduling of tasks to be performed by a non-coherent device | |
Yu et al. | TwinPilots: A New Computing Paradigm for GPU-CPU Parallel LLM Inference | |
US11941722B2 (en) | Kernel optimization and delayed execution | |
Zhan et al. | NeuralScale: A RISC-V Based Neural Processor Boosting AI Inference in Clouds | |
TWI742437B (zh) | 序列式計算晶片運作方法與計算系統 | |
US20240311163A1 (en) | Hardware-driven call stack attribution | |
Wen et al. | Design Exploration of An Energy-Efficient Acceleration System for CNNs on Low-Cost Resource-Constraint SoC-FPGAs | |
CN118409802A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
KR101814988B1 (ko) | 동시 이기종 컴퓨팅 환경에서의 동적 시스템 상태 조절 방법 및 장치 | |
KR20240041159A (ko) | Cpu-gpu 협업 시스템 및 방법 | |
WO2021056277A1 (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211110 Address after: Baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing 100086 Applicant after: Kunlun core (Beijing) Technology Co.,Ltd. Address before: 100094 floor 2, baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |