CN117908959A - 用于执行原子操作的方法及其相关产品 - Google Patents
用于执行原子操作的方法及其相关产品 Download PDFInfo
- Publication number
- CN117908959A CN117908959A CN202211248376.5A CN202211248376A CN117908959A CN 117908959 A CN117908959 A CN 117908959A CN 202211248376 A CN202211248376 A CN 202211248376A CN 117908959 A CN117908959 A CN 117908959A
- Authority
- CN
- China
- Prior art keywords
- write command
- atomic write
- chip
- data
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 47
- 230000015654 memory Effects 0.000 claims description 105
- 230000004044 response Effects 0.000 claims description 62
- 239000000872 buffer Substances 0.000 claims description 26
- 230000009977 dual effect Effects 0.000 claims description 10
- 238000013473 artificial intelligence Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012790 confirmation Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- PSYGHMBJXWRQFD-UHFFFAOYSA-N 2-(2-sulfanylacetyl)oxyethyl 2-sulfanylacetate Chemical compound SCC(=O)OCCOC(=O)CS PSYGHMBJXWRQFD-UHFFFAOYSA-N 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种用于执行原子操作的方法及其相关产品,其中该相关产品包括设备和计算机可读存储介质。该设备可以包括在组合处理装置的计算处理装置中,该计算处理装置可以包括一个或多个数据处理装置。前述的组合处理装置还可以包括接口装置和其他处理装置。所述计算处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。通过本公开的方案,可以提升执行原子操作的效率并且降低片外的存储开销。
Description
技术领域
本公开一般地涉及计算机领域。更具体地,本公开涉及用于执行原子操作的方法、片上系统、计算装置、人工智能处理器芯片、板卡和计算机可读存储介质。
背景技术
原子操作(atomic operation)是指不可被线程调度机制中断的一个或一系列操作。目前很多指令集体系结构(Instruction-Set Architecture,ISA)中都有针对前述原子操作的指令,并且当前很多应用都依赖于这种原子操作。
在一种实现场景中,原子操作可以通过原子写命令(Atomic write)和原子读命令(Atomic read)而在片上系统和最后一级缓存(LLC,Last Level Cache)之间配合使用。具体来说,片上系统可以通过LLC向相关的外部存储装置发送原子写命令。当LLC从片上系统接收到原子写命令后,其先根据原子写命令中的目的地址获取原始数据并将原始数据存储在原子数据缓存器ADB(Atomic Data Buffer)中。此处,ADB是原子操作控制器AOC(AtomicOperation Controller)中缓存原子操作原始数据的缓存器,其位于LLC中。然后,LLC根据运算模式和操作数据对原始数据进行修改,最后存储运算结果并返回原始数据在ADB中的索引。片上系统在接收到原子写命令的返回索引后,会接着发送原子读命令。LLC接收到原子读命令后,会从ADB中获取原始数据作为返回数据,并释放缓存器中该原始数据的存储空间,至此一个完整的原子操作就完成了。
在上述现有技术中,若原子写命令为需要将原始数据读回的命令类型,则在接收到原子写命令后,需要在LLC的ADB中一直缓存相应的原始数据并且LLC为此需要保持对该ADB的维护,这显然不利于存储资源的优化配置。
发明内容
鉴于上文背景技术中所提及的技术问题,本公开提出一种通过应答信号返回原始数据的高效方案。基于本公开的方案,在执行原子写命令的相关操作时,无需在LLC中配置存储资源以维护原始数据,优化了存储资源的配置。为此,本公开在如下的多个方面提供方案。
在第一方面中,本公开提供了一种用于执行原子操作的方法,包括:从片上系统向与其关联的外部存储装置发送原子写命令,其中该原子写命令用于对存储于外部存储装置中的原始数据执行处理操作;以及在该片上系统处接收来自于该外部存储装置关于执行该原子写命令的应答信号,其中该应答信号包括与执行原子写命令相关的原始数据。
在第二方面中,本公开提供了一种用于执行原子操作的片上系统,包括:控制单元,其配置成生成原子写命令,其中该原子写命令用于对存储于外部存储装置中的原始数据执行处理操作;访存单元,其配置成:向该外部存储装置发送原子写命令;以及从该外部存储装置接收关于执行该原子写命令的应答信号,其中该应答信号包括与执行原子写命令相关的原始数据。
在第三方面中,本公开提供了一种计算装置,包括根据第二方面中的片上系统。
在第四方面中,本公开提供了一种人工智能处理器芯片,包括根据第三方面中的计算装置。
在第五方面中,本公开提供了一种设备,包括处理器;以及存储器,其上存储有用于执行原子操作的计算机程序指令,当该计算机程序指令由处理器执行时,实现根据第一方面中的方法。
在第六方面中,本公开提供了一种计算机可读存储介质,其上存储有用于执行原子操作的计算机程序指令,当该计算机程序指令由处理器执行时,实现根据第一方面中的方法。
利用本公开上述通过应答信号返回原始数据的方案,在片上系统向与其关联的外部存储装置发送原子写命令后,片上系统接收执行该原子写命令的应答信号。由于该应答信号中携带有与该原子写命令相关的原始数据,因此可以直接通过应答信号提取得到原始数据,而无需另外设置原子读命令来获取原始数据,从而简化了原子操作的执行逻辑。另外,由于无需在LLC中配置存储资源以维护相关的原始数据,从而本公开的方案也优化了存储资源的配置。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示意性示出根据本公开实施例的片上系统的简化框图;
图2是示意性示出使用根据本公开实施例的调度器来调度任务的方法的一个简化流程图;
图3是示意性示出根据本公开实施例的片上系统的详细结构框图;
图4是示意性示出使用根据本公开实施例的调度器来调度任务的方法的另一简化流程图;
图5是示意性示出根据本公开实施例的板卡的结构示意图;
图6是示意性示出根据本公开实施例的芯片中的组合处理装置的结构示意图;
图7是示意性示出根据本公开实施例的计算装置的内部结构示意图;
图8是示意性示出根据本公开实施例的处理器核的内部结构示意图;以及
图9是示意性示出根据本公开实施例的计算簇(或称“计算集群”)之间数据写入操作的示意图。
具体实施方式
下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施方式的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
如前文提到的,根据是否需要将原始数据读回来区分,本公开中的原子操作可以分为两类:Reduce指令(不用将原始数据读回来的指令)和非reduce指令(需要将原始数据读回的指令)。对于Reduce指令需要分别通原子写命令和原子读命令配合实现;并且,在相关的外部存储装置中,需要将读回的原始数据一直缓存至接收到片上系统发送的原子读命令,由此在一段时间里占据存储资源而无法释放。有鉴于此,本公开提出一种用于执行原子操作的方法,在片上系统向与其关联的外部存储装置发送原子写命令后,片上系统接收执行该原子写命令的应答信号。由于该应答信号中携带有与该原子写命令相关的原始数据,因此本公开的方案可以直接通过应答信号提取得到原始数据,从而无需另外设置原子读命令来获取原始数据,简化了原子操作的执行逻辑。另外,由于不需要在包括例如LLC的外部存储装置中配置存储资源以维护相关的原始数据,从而也优化了存储资源的配置。
下面结合附图来详细描述本公开的具体实施方式。
图1是示意性示出根据本公开实施例的片上系统100的简化框图。如前所述,本公开实施例中的片上系统100用于生成原子写命令,并且通过内部的访存单元将该原子写命令发送至外部存储装置,以执行相关操作。作为示例,本公开实施例中的片上系统100可以作为人工智能处理器芯片中的一个处理核布置于人工智能处理器芯片上。
如图1所示,本公开的片上系统100可以包括控制单元102和访存单元104。在一个实施例中,控制单元102可以配置成生成原子写命令,其中该原子写命令用于对存储于外部存储装置中的原始数据执行处理操作。进一步,访存单元104可以配置成向该外部存储装置发送原子写命令,并且从该外部存储装置接收关于执行该原子写命令的应答信号,其中该应答信号包括与执行原子写命令相关的原始数据。在一个实施场景中,此处的外部存储装置可以包括片外的动态随机存储器(DDR)或高速缓冲存储器(如L3高速缓冲存储器)。在另一个实施场景中,此处的控制单元可以是多个智能处理单元,或者其简化版本。根据应用的不同,智能处理单元可以执行常规计算和/或分布式集群通信的经典算法。
图2是示意性示出使用根据本公开实施例的片上系统来执行原子操作的方法200的简化流程图。可以理解的是,方法200可以由上述结合图1所描述的片上系统100来执行,因此上文关于片上系统100的描述也同样适用于下文结合图2的描述。
如图2中所示,在步骤S202中,片上系统生成原子写命令,其中该原子写命令用于对存储于外部存储装置中的原始数据执行处理操作。示例性地,本公开实施例中原子写命令的类型可以包括但不限于如下的一些命令,例如atomic_add\inc\dec\max\min\and\or\xor\exch\cas,这些命令可以涉及如加法、减法、最大值、最小值、与操作、或操作等各类算术或逻辑操作。
在本公开实施例中,原始数据指的是在执行原子写命令前存储于外部存储装置中的数据。在一个实施场景中,对于非reduce指令(即需要返回原始数据的原子操作),执行原子写命令所需要的部分或全部数据存储在外部存储装置中。由于执行原子写命令后,外部存储装置存储的相应数据可能会被更新,例如数据a(即原始数据)在执行原子写命令后,会被更新为数据A。因此,对于某些需要原始数据进行验证操作的指令需求,就需要将原始数据读回至片上系统。
进一步,对于非reduce指令,片上系统在对相关的外部储存装置下发原子写命令前,通常需要先检查相关的外部储存装置(如,LLC中的ADB)是否有足够的存储空间执行该原子写命令。因此,当存储空间不足时,则片上系统会处于等待状态,即不得不等待相关存储空间的内存释放,从而影响原子操作的执行效率。
鉴于此,在本公开的实施例中,片上系统的控制单元在生成原子写命令时,可以将该原子写命令配置成包括命令位域,该命令位域用于指示该外部存储装置在该应答信息中携带需要返回的原始数据。由于不需要占用外部存储装置的存储资源,因此在执行原子写命令时,本公开的片上系统可以不用等待外部储存装置释放内存,由此提高了原子操作的执行效率。
在步骤S204中,片上系统向与其关联的外部存储装置发送原子写命令。作为示例,与片上系统关联的外部存储装置可以是存储有执行该原子写命令所需要用到的数据的外部存储装置。接着,在步骤S206中,片上系统接收来自于外部存储装置关于执行原子写命令的应答信号,其中该应答信号包括与执行原子写命令相关的原始数据。
在一个实施场景中,外部存储装置执行原子写命令后会向片上系统返回应答信号(如,B应答),用于反馈原子写命令的执行情况。在本公开实施例中,借助于应答信号的反馈机制,可以通过应答信号携带原始数据的方式来返回至片上系统,从而无需另外设置原子读命令来获取原始数据,由此简化了原子操作的执行逻辑。进一步,由于无需在LLC中配置存储资源以维护相关的原始数据,本公开的方案也对存储资源的配置进行了有效的优化。
图3是示意性示出根据本公开实施例的片上系统100的详细结构框图。为了便于进一步阐述片上系统100的操作原理,图中还示出了片上系统100与片上网络(Network OnChip,NOC)以及LLC的连接关系。
如图3中所示,本公开实施例中的片上系统100通过NOC与LLC连接。其中,NOC是由多个处理核(一个处理核可以对应本公开实施例中的一个片上系统)上各自的通信节点之间的互联通路构成的网络,并且通过路由和分组技术实现多核之间的连接。如前所述,本公开实施例的原子写命令中携带有原子操作的目的地址,并且该原子写命令通过NOC路由至该目的地址对应的LLC。此后,再通过LLC完成对相应动态随机存储器DRAM的访问(即,从DRAM读取相应的数据至LLC中进行缓存,以便于执行原子写命令对应的运算)。
如图3中所示,片上系统100中还包括有系统内存管理单元(SMMU,System MemoryManagement Unit)106。在一个实施场景中,控制单元102所生成的原子写命令中携带的是虚拟目的地址,其可以利用系统内存管理单元106进行虚拟目的地址与物理目的地址的转换,以便于通过NOC路由至相应的LLC。
在一个实施场景中,原子写命令可以是针对多维数据操作的多维原子写命令。为了适配这种多维数据的应用场景,片上系统100中控制单元102可以进一步包括有第一控制子单元1022和第二控制子单元1024。在操作中,第一控制子单元1022配置成用于生成该多维原子写命令,并且第二控制子单元1024配置成根据预定的数据尺寸将该多维原子写命令拆分成多个一维原子写命令。作为示例,该预定的数据尺寸与向该片上系统传送该应答信号的通道大小相同。例如,假设该原子写命令为针对于三维数据的三维原子写命令,且应答信号的数据通道为8比特,则可以将该三维原子写命令拆分为3个8比特的一维原子写命令。即,该一维原子写命令所包含的数据信息(如,目的地址、运算模式和操作数据)通过8比特表示。再例如,假设三维原子写命令有24比特的数据位,如:“00000000,00000000,00000000”。其中,一个“0”代表一个比特位,每连续的8个“0”表示一个一维原子写命令,从而通过这8个比特位的数值表示相应的数据信息。对于具体哪几个比特位表示哪些信息,可以根据实际需求设定,本公开对此不作限定。
与上述多个一维原子写命令相对应的,片上系统100中访存单元104也进一步包括有第一访存子单元1041和其他访存子单元1042。其中,第一访存子单元1041用于根据预定的地址间隔并行地向该外部存储装置发送该多个一维原子写命令。示例性的,假设有两个一维原子写命令分别为:第一原子写命令和第二原子写命令,其分别对应第一目的地址和第二目的地址。为了提高原子写命令的发送效率,在实际应用中可以采用多个一维原子写命令并行发送的方式。为了实现前述的并行发送,系统中会设定一段地址间隔(如,512比特)。即,在一段连续的数据比特位中,为了并行发送第一原子写命令和第二原子写命令,第一目的地址和第二目的地址在该连续的数据比特位中间隔512比特设置。
在一个实施场景中,本公开提出在原子写命令中设置多种运算模式,如双地址模式和立即数模式。为此,原子写命令中包括有模式位域,用于表示当前原子写命令所属于的运算模式的类型。基于此,第二控制子单元1024还用于根据该模式位域从该访存单元的其他访存子单元中读取用于运算的操作数据,并且将读取的该操作数据发送到该第一访存子单元1022。示例性的,响应于该模式位域指示该双地址模式,第二控制子单元1024根据该一维原子写命令中的两个地址信息从该访存单元的对应访存子单元中读取用于该运算的两个操作数据,并且响应于该模式位域指示该立即数模式,第二控制子单元1024可以根据该一维原子写命令中的地址信息从该访存单元的对应访存子单元中读取用于该运算的立即数。
在一个实施场景中,片上系统100为了及时获知原子写命令的执行进度,在第二控制子单元1024中设置有第一计数器和第二计数器。其中,第一计数器配置成对从对应访存子单元中读取用于运算的操作数据的次数,第二计数器配置成对需从该外部存储装置接收的原始数据的次数进行累加计数。示例性的,对于任一次原子写命令对应的运算,所需要用到的操作数据和原始数据都是确定的,由此片上系统可以通过第一计数器和第二计数器分别对读取到的操作数据和原始数据的次数进行统计,从而即可获知当前进行相关运算的数据读取进度,进而对整个运算过程进行有效监控。
在一个实施场景中,第一访存子单元还包括寄存器和重排序缓冲器(ROB,ReorderOf Buffer)。在一个实施例中,前述寄存器可以配置成在该第一访存子单元向该外部存储装置发送原子写命令前,将对应于每个一维原子写命令的配置信息(如,基地址信息、步长信息和维度信息)进行注册保存。进一步,前重排序缓冲器可以配置成在从该应答信号中接收到该原始数据后,根据该配置信息将与该一维原子写命令关联的原始数据进行重排序缓冲,以便执行上报确认。另外,在接收到应答信号时,第一访存子单元1041可以根据应答信号中的索引信息从该指令表中获取该基地址信息和步长信息;根据该基地址信息、步长信息和该维度信息,确定该原始数据的存储地址,以及根据该存储地址,将从该应答信号中接收到的该原始数据存储到该访存单元的对应访存子单元中。
在一个实施场景中,为了提高原子写命令的下发效率,无论原子写命令还是其对应的应答信息,所占用的数据大小都是预先受到约束的。因此,在片上系统对外发送原子写命令时,可能不会将完整的目的地址携带在原子写命令中,而在接收到返回的应答信息时,又需要从应答信号中识别各个不同一维原子写命令对应的数据信息。为此,在向外部存储装置发送原子写命令前,本公开的方案提出对各个一维原子写命令的配置信息进行注册,如记录基地址信息(即,目的地址的首地址对应的比特位),在识别到当前应答消息对应的是哪一维的原子写命令后,可以基地址信息作为起始位,加上对应维度的间隔比特位和步长信息对应的间隔比特位,由此即可确定该原始数据对应的访存子单元的存储地址。示例性的,假设有两个一维原子写命令分别为:第一原子写命令和第二原子写命令;分别对应0维原子写命令和1维原子写命令。在向该外部存储装置发送第一原子写命令和第二原子写命令时,在第一访存子单元的寄存器中分别存储(0维基地址信息,0维步长信息)和(1维基地址信息,1维步长信息)。在一个实施场景中,其对应的指令符可以表示为:dst baseaddr/stride0/stride1。“dst”可以指代寄存器,“base addr”可以表示基地址信息,“stride0”可以表示0维步长信息。第一访存子单元将维度信息保序存储在ROB中,其对应的指令符为:dim0/1_end。其中,“dim0”表示0维。由于原子写命令的下发是顺序下发的,即先发0维,再发1维,以此类推。然而,具体接收的应答信息所对应的是哪一维的原子写命令,却不一定是按顺序接收到的。因此,片上系统当前接收到一个应答信息后,会在重排序缓冲器进行重排序(假设先接收到1维原子写命令对应的应答信息,则根据相应的存储顺序进行缓存),当接收到所有维度对应的应答消息之后,再按顺序进行上报,使得相应的原始数据能够准确的被识别。
图4是示意性示出使用根据本公开实施例的片上系统来执行原子操作的方法400的简化流程图。可以理解的是,方法400可以由上述结合图3所描述的片上系统100来执行,因此上文关于片上系统100的描述也同样适用于下文的描述。
如图4中所示,在步骤S402中,片上系统生成原子写命令,其中该原子写命令用于对存储于外部存储装置中的原始数据执行处理操作。在一个实施例中,该原子写命令可以包括命令位域以及模式位域。作为示例,该命令位域可以用于指示该外部存储装置在该应答信息中携带需要返回的原始数据,而该模式位域可以用于指示该原子写命令运算模式类型。
在步骤S404中,片上系统根据预定的数据尺寸将该多维原子写命令拆分成多个一维原子写命令。作为示例,若该原子写命令是针对多维数据操作的多维原子写命令,则可以根据预定的数据尺寸将该多维原子写命令拆分成多个一维原子写命令。该预定的数据尺寸与向该片上系统传送该应答信号的通道大小相同。如前所述,假设该原子写命令为针对于三维数据的三维原子写命令,且应答信号的数据通道为8比特,则可以将该三维原子写命令拆分为3个8比特的一维原子写命令。
在步骤S406中,片上系统根据模式位域从访存单元中读取用于运算的操作数据。在本公开的实施例中,原子写命令的运算模式可以包括双地址模式和立即数模式。由此,本公开的方案通过原子写命令中模式位域指示当前一维原子写命令所属于的运算模式的类型。若运算模式为双地址模式,则一维原子写命令中会包含两个地址信息,片上系统可以分别从这两个地址信息对应的访存子单元中读取用于运算的操作数据,并且将读取的该操作数据发送到该第一访存子单元。相对地,若运算模式为立即数模式,则片上系统可以根据一维原子写命令中的地址信息从该访存单元的对应访存子单元中读取用于该运算的立即数。可选地,每完成一次操作数据的读取,则可以设置前文所述的第一计数器加一,即该第一计数器可以用于从对应访存子单元中读取操作数据的次数进行计数。
在步骤S408中,片上系统将一维原子写命令中的虚拟目的地址转换为物理目的地址。作为示例,可以由第一访存子单元将虚拟目的地址发送至系统内存管理单元中。接着,系统内存管理单元可以在查找到虚拟目的地址与物理目的地址的映射关系后,将相应的物理目的地址返回至第一访存子单元。
在步骤S410中,片上系统对一维原子写命令的配置信息进行注册保存。如前所述,这里的配置信息可以包括:基地址信息、步长信息和维度信息。在本公开的实施例中,第一访存子单元还可以包括寄存器和重排序缓冲器。其中寄存器可以用于对每个一维原子写命令的基地址信息和步长信息进行注册保存,而重排序缓冲器可以用于对每个一维原子写命令的维度信息进行注册保存。
在一个实施场景中,如前所述,为了提高原子写命令的下发效率而克服原子写命令或其对应的应答信息的数据量大小受限问题,片上系统在对外发送原子写命令时,可能不会将完整的目的地址携带在原子写命令中。然而,在接收到返回的应答信息时,片上系统又需要从应答信号中识别各个不同一维原子写命令对应的数据信息。因此,本公开的方案提出在向外部存储装置发送原子写命令前,对各个一维原子写命令的配置信息进行注册,如记录基地址信息(即,目的地址的首地址对应的比特位)。基于此,在识别到当前应答消息对应的是哪一维的原子写命令后,可以基地址信息作为起始位,加上对应维度的间隔比特位和步长信息对应的间隔比特位,由此找到该原始数据对应的访存子单元的存储地址,从而实现数据的有效定位。
在步骤S412中,片上系统将一维原子写命令通过NOC路由至目的地址对应的LLC。在本公开的实施例中,如前所述,对于多个一维原子写命令,可以根据预定的地址间隔并行地向该外部存储装置进行发送。作为示例,假设存在第一原子写命令和第二原子写命令,其分别对应第一目的地址和第二目的地址。为了提高原子写命令的发送效率,在一个实施场景中,可以采用多个一维原子写命令并行发送的方式。为了实现并行发送,本公开的片上系统中会设定一段地址间隔(例如512比特),从而在并行发送第一原子写命令和第二原子写命令时,第一目的地址和第二目的地址在该连续的数据比特位中间隔512比特。在本公开的一个实施例中,当接收到前述的一维原子写命令后,LLC从DRAM读取相应的原始数据至LLC中进行缓存。
在步骤S414中,片上系统接收LLC反馈的关于执行原子写命令的应答信号。具体地,LLC获取到原始数据后,通过应答信号中的命令位置携带该原始数据,该应答信号通过NOC返回至片上系统。
在片上系统收到应答信号后,识别该应答信号对应的维度信息并提取相应的原始数据,通过重排序缓冲器根据该维度信息将与该一维原子写命令关联的原始数据进行重排序缓冲。当片上系统收到一个原始数据时,则前文所述的第二计数器加一,从而可以统计从该外部存储装置接收的原始数据的次数。当片上系统接收到所有维度对应的应答消息之后,通过重排序缓冲器完成所有原始数据的重排序,再按顺序进行相应的原始数据上报操作。
在本公开实施例中,对于多维的原子写命令,通过片上系统根据预定的数据尺寸将该多维原子写命令拆分成多个一维原子写命令,并根据预定的地址间隔并行地向该外部存储装置进行发送,提高了原子写命令的下发效率。进一步,本公开实施例设定了目的地址的读取机制,从而无需将完整的目的地址携带在原子写命令中,进而可以使用较小的数据格式下发原子写命令。
以上结合图3和图4对本公开的使用片上系统执行原子操作的方法进行了描述。可以理解的是,上述的描述仅仅是示例性的而非限制性的。本领域技术人员根据本公开的披露,也可以想到将其中的步骤进行结合或替换,以便实现对任务的有效调度并且节省调度资源。
图5示出本披露实施例的一种板卡500的结构示意图。如图5所示,板卡500包括芯片401,其是一种系统级芯片(System on Chip,SoC),或称片上系统(如上文本公开图1和图3所示出的片上系统),集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡400适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
芯片401通过对外接口装置402与外部设备403相连接。外部设备403例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备403通过对外接口装置402传递至芯片401。芯片401的计算结果可以经由对外接口装置402传送回外部设备403。根据不同的应用场景,对外接口装置402可以具有不同的接口形式,例如PCIe接口等。
板卡400还包括用于存储数据的存储器件4404,其包括一个或多个存储单元4405。存储器件404通过总线与控制器件406和芯片401进行连接和数据传输。板卡400中的控制器件406配置用于对芯片401的状态进行调控。为此,在一个应用场景中,控制器件406可以包括单片机(Micro Controller Unit,MCU)。
图6是示出此实施例的芯片401中的组合处理装置的结构图。如图6中所示,组合处理装置600包括计算装置501、接口装置502、处理装置503和DRAM504。
计算装置501配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置502与处理装置503进行交互,以共同完成用户指定的操作。
接口装置502用于在计算装置501与处理装置503间传输数据和控制指令。例如,计算装置5501可以经由接口装置502从处理装置503中获取输入数据,写入计算装置501片上的存储装置。进一步,计算装置501可以经由接口装置502从处理装置503中获取控制指令,写入计算装置501片上的控制缓存中。替代地或可选地,接口装置502也可以读取计算装置501的存储装置中的数据并传输给处理装置503。
处理装置503作为通用的处理装置,执行包括但不限于数据搬运、对计算装置501的开启和/或停止等基本控制。根据实现方式的不同,处理装置503可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置501而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置501和处理装置503整合共同考虑时,二者视为形成异构多核结构。
存储装置504用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。在本公开的上下文,这里的存储装置可以视为前述执行原子操作的方案的片外存储装置。
图7示出了计算装置501的内部结构示意图。计算装置501用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置501采用多核分层结构设计,计算装置501作为一个片上系统,其包括多个计算簇(cluster),每个计算簇又包括多个处理器核,换言之,计算装置501是以片上系统-计算簇-处理器核的层次所构成的。
以片上系统的层级来看,如图7所示,计算装置501包括外部存储控制器601、外设通信模块602、片上互联模块603、同步模块604以及多个计算簇605。尽管未示出,计算装置501中也可以包括本公开上下文的片上系统,以实现本公开中的原子操作,以便由计算簇605来执行。
外部存储控制器601可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图6中的DRAM 504,从而自片外读取数据或是将数据写入。外设通信模块602用以通过接口装置502接收来自处理装置503的控制信号,启动计算装置501执行任务。片上互联模块603将外部存储控制器601、外设通信模块602及多个计算簇605连接起来,用以在各个模块间传输数据和控制信号。同步模块604是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各计算簇的工作进度,确保信息的同步。多个计算簇605是计算装置501的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的计算装置501还可以包括8个、16个、64个、甚至更多的计算簇605。计算簇605用以高效地执行深度学习算法。
以计算簇的层级来看,如图7所示,每个计算簇605包括多个处理器核(IPU core)606及一个存储核(MEM core)607。
处理器核606在图中示例性地展示4个,本披露不限制处理器核606的数量。其内部架构如图5所示。每个处理器核606包括三大模块:控制模块71、运算模块72及存储模块73。
控制模块71用以协调并控制运算模块72和存储模块73的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)711及指令译码单元(instructiondecode unit,IDU)712。取指单元711用以获取来自处理装置503的指令,指令译码单元712则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块72和存储模块73。
运算模块72包括向量运算单元721及矩阵运算单元422。向量运算单元721用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元722负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块73用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)731、权值存储单元(weight RAM,WRAM)732、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)733、搬运直接内存访问模块(move direct memoryaccess,MVDMA)734。NRAM 731用以存储供处理器核606计算的输入、输出数据及中间结果;WRAM 732则用以存储深度学习网络的权值;IODMA 733通过广播总线609控制NRAM 731/WRAM 732与DRAM 504的访存;MVDMA 734则用以控制NRAM 731/WRAM 732与SRAM 708的访存。应当注意,此处的NRAM和WRAM可以是同一存储器在逻辑存储空间上划分形成的两个存储区域,也可以是两个独立的存储器,此处不做具体限定。
回到图7,存储核307主要用以存储和通信,即存储处理器核606间的共享数据或中间结果、以及执行计算簇605与DRAM 504之间的通信、计算簇605间彼此的通信、处理器核606间彼此的通信等。在其他实施例中,存储核607具有标量运算的能力,用以执行标量运算。
存储核607包括共享存储单元(SRAM)608、广播总线609、计算簇直接内存访问模块(cluster direct memory access,CDMA)610及全局直接内存访问模块(global directmemory access,GDMA)611。SRAM 608承担高性能数据中转站的角色,在同一个计算簇605内不同处理器核606之间所复用的数据不需要通过处理器核606各自向DRAM 504获得,而是经SRAM 608在处理器核606间中转,存储核607只需要将复用的数据从SRAM 608迅速分发给多个处理器核6606即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线609、CDMA 610及GDMA 611则分别用来执行处理器核606间的通信、计算簇605间的通信和计算簇605与DRAM 504的数据传输。以下将分别说明。
广播总线609用以完成计算簇605内各处理器核606间的高速通信,此实施例的广播总线609支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 608传输到特定几个处理器核606的通信方式,而广播则是将一份数据从SRAM 608传输到所有处理器核606的通信方式,属于多播的一种特例。
CDMA 610用以控制在同一个计算装置501内不同计算簇605间的SRAM 608的访存。图9示出当一个处理器核欲将数据写入至另一个计算簇的处理器核时的示意图,以说明CDMA 610的工作原理。在此应用场景中,同一个计算装置包括多个计算簇,为方便说明,图中仅展示计算簇0与计算簇1,计算簇0与计算簇1分别包括多个处理器核,同样为了说明方便,图中的计算簇0仅展示处理器核0,计算簇1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到计算簇1的SRAM 1中,接着从端发送写响应B作为回应,最后计算簇1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
回到图7,GDMA 611与外部存储控制器601协同,用以控制计算簇605的SRAM 608到DRAM 504的访存,或是将数据自DRAM 504读取至SRAM 608中。从前述可知,DRAM 504与NRAM731或WRAM 732间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 733直接联系DRAM 504与NRAM 731或WRAM 732;第二个渠道是先经由GDMA 611使得数据在DRAM 504与SRAM 6608间传输,再经过MVDMA 734使得数据在SRAM 608与NRAM 731或WRAM 732间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 504与NRAM 731或WRAM 732间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 611的功能和IODMA 733的功能可以整合在同一部件中。本披露为了方便描述,将GDMA 611和IODMA 733视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,GDMA 611的功能、IODMA 733的功能、CDMA 610的功能、MVDMA 734的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
以上结合图5-图9对本公开的软硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡(或者说人工智能设备)及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。
基于上文的描述,本领域技术人员可以理解本申请实际上也公开了一种设备,其包括处理器和存储器。具体地,存储器可以存储用于执行原子操作的程序指令,当所述程序指令由处理器执行时,实现本申请结合图2和图4所描述的操作步骤。另外,由于本申请的方案可以通过计算程序指令来实现,因此本申请也公开了一种计算机可读存储介质或计算机程序产品,其上存储有用于执行原子操作的计算机程序/指令,从而实现结合图2和图4所描述的操作步骤。
以上结合附图对本公开的方案进行了详细的描述。根据不同的应用场景,本披露的设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。
进一步,本披露的设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的功耗高的设备或装置可以应用于云端设备(例如云端服务器),而功耗小的设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(“Read Only Memory”,简写为ROM)、随机存取存储器(“Random Access Memory”,简写为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(“Resistive Random Access Memory”,简写为RRAM)、动态随机存取存储器(“DynamicRandom Access Memory”,简写为DRAM)、静态随机存取存储器(“Static Random AccessMemory”,简写为SRAM)、增强动态随机存取存储器(“Enhanced Dynamic Random AccessMemory”,简写为“EDRAM”)、高带宽存储器(“High Bandwidth Memory”,简写为“HBM”)、混合存储器立方体(“Hybrid Memory Cube”,简写为“HMC”)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1.一种用于执行原子操作的方法,包括:
从片上系统向与其关联的外部存储装置发送原子写命令,其中所述原子写命令用于对存储于外部存储装置中的原始数据执行处理操作;以及
在所述片上系统处接收来自于所述外部存储装置关于执行所述原子写命令的应答信号,其中所述应答信号包括与执行原子写命令相关的原始数据。
条款A2.根据条款A1所述的方法,其中所述原子写命令包括用于指示所述外部存储装置在所述应答信息中包括所述原始数据的命令位域。
条款A3.根据条款A1所述的方法,其中所述原子写命令是针对多维数据操作的多维原子写命令,所述方法还包括:
根据预定的数据尺寸将所述多维原子写命令拆分成多个一维原子写命令,其中所述预定的数据尺寸与向所述片上系统传送所述应答信号的通道大小相同。
条款A4.根据条款A3所述的方法,还包括:
根据预定的地址间隔并行地向所述外部存储装置发送所述多个一维原子写命令。
条款A5.根据条款A1所述的方法,其中所述原子写命令还包括用于指示多种运算模式之一的模式位域,所述方法还包括:
根据所述模式位域从所述片上系统的对应访存子单元中获取用于运算的操作数据。
条款A6.根据条款A5所述的方法,其中所述多种运算模式包括双地址模式和立即数模式,所述方法包括:
响应于所述模式位域指示所述双地址模式,根据所述一维原子写命令中的两个地址信息从所述片上系统的对应访存子单元中读取用于所述运算的两个操作数据;以及
响应于所述模式位域指示所述立即数模式,根据所述一维原子写命令中的地址信息从所述片上系统的对应访存子单元中读取用于所述运算的立即数。
条款A7.根据条款A5所述的方法,还包括:
对从所述片上系统的对应访存子单元中获取用于运算的操作数据的次数以及从所述外部存储装置接收的原始数据的次数进行累加计数。
条款A8.根据条款A3所述的方法,还包括:
在向所述外部存储装置发送原子写命令前,将对应于每个一维原子写命令的配置信息进行注册保存;以及
在从所述应答信号中接收到所述原始数据后,根据所述配置信息将与所述一维原子写命令关联的原始数据进行重排序缓冲,以便执行上报确认。
条款A9.根据条款A8所述的方法,其中所述配置信息包括所述原始数据的基地址信息、步长信息和维度信息,所述方法还包括:
将所述基地址信息和步长信息存储于指令表中;以及
将所述维度信息存储于重排序缓冲存储器中。
条款A10.根据条款A9所述的方法,还包括:
在从所述应答信号中接收到原始数据后,根据应答信号中的索引信息从所述指令表中获取所述基地址信息和步长信息;
根据所述基地址信息、步长信息和所述维度信息,确定所述原始数据的存储地址;以及
根据所述存储地址,将从所述应答信号中接收到的所述原始数据存储到所述片上系统的对应访存子单元中。
条款A11.一种用于执行原子操作的片上系统,包括:
控制单元,其配置成生成原子写命令,其中所述原子写命令用于对存储于外部存储装置中的原始数据执行处理操作;
访存单元,其配置成:
向所述外部存储装置发送原子写命令;以及
从所述外部存储装置接收关于执行所述原子写命令的应答信号,其中所述应答信号包括与执行原子写命令相关的原始数据。
条款A12.根据条款A11所述的片上系统,其中所述原子写命令包括用于指示所述外部存储装置在所述应答信息中包括所述原始数据的命令位域。
条款A13.根据条款A11所述的片上系统,其中所述原子写命令是针对多维数据操作的多维原子写命令,所述控制单元包括第一控制子单元和第二控制子单元,其中:
所述第一控制子单元配置成用于生成所述多维原子写命令;并且
所述第二控制子单元配置成根据预定的数据尺寸将所述多维原子写命
拆分成多个一维原子写命令,其中所述预定的数据尺寸与向所述片上系统传送所述应答信号的通道大小相同。
条款A14.根据条款A11所述的片上系统,其中所述访存单元包括多个访存子单元,其中第一访存子单元配置成:
根据预定的地址间隔并行地向所述外部存储装置发送所述多个一维原子写命令。
条款A15.根据条款A13所述的片上系统,其中所述原子写命令还包括用于指示多种运算模式之一的模式位域,所述第二控制子单元还配置成:
根据所述模式位域,从所述访存单元的其他访存子单元中读取用于运算的操作数据;以及
将读取的所述操作数据发送到所述第一访存子单元。
条款A16.根据条款A15所述的片上系统,其中所述多种运算模式包括双地址模式和立即数模式,所述第二控制子单元还配置成:
响应于所述模式位域指示所述双地址模式,根据所述一维原子写命令中的两个地址信息从所述访存单元的对应访存子单元中读取用于所述运算的两个操作数据;以及
响应于所述模式位域指示所述立即数模式,根据所述一维原子写命令中的地址信息从所述访存单元的对应访存子单元中读取用于所述运算的立即数。
条款A17.根据条款A15所述的片上系统,其中所述第二控制子单元还包括第一计数器和第二计数器,其中:
所述第一计数器配置成对从对应访存子单元中读取用于运算的操作数据的次数;并且
所述第二计数器配置成对需从所述外部存储装置接收的原始数据的次数进行累加计数。
条款A18.根据条款A13所述的片上系统,其中所述第一访存子单元还包括寄存器和重排序缓冲器,其中:
所述寄存器配置成在所述第一访存子单元向所述外部存储装置发送原子写命令前,将对应于每个一维原子写命令的配置信息进行注册保存;并且
所述重排序缓冲器配置成在从所述应答信号中接收到所述原始数据后,根据所述配置信息将与所述一维原子写命令关联的原始数据进行重排序缓冲,以便执行上报确认。
条款A19.根据条款A18所述的片上系统,其中所述配置信息包括所述原始数据的基地址信息、步长信息和维度信息,其中第一访存子单元配置成:
将所述基地址信息和步长信息存储于所述寄存器的指令表中;以及
将所述维度信息存储于所述重排序缓冲存储器中。
条款A20.根据条款A19所述的片上系统,其中所述第一访存子单元还配置成:
在从所述应答信号中接收到原始数据后,根据应答信号中的索引信息
所述指令表中获取所述基地址信息和步长信息;
根据所述基地址信息、步长信息和所述维度信息,确定所述原始数据的存储地址;以及
根据所述存储地址,将从所述应答信号中接收到的所述原始数据存储到所述访存单元的对应访存子单元中。
条款A21.一种计算装置,包括根据条款A11-A20的任意一项所述的片上系统。
条款A22.一种人工智能处理器芯片,包括根据条款A21所述的计算装置。
条款A23.一种板卡,包括条款A22所述的人工智能处理器芯片。
条款A24.一种设备,包括:
处理器;以及
存储器,其上存储有用于执行原子操作的计算机程序指令,当所述计算机程序指令由处理器执行时,实现根据条款A1-10的任意一项所述的方法。
条款A25.一种计算机可读存储介质,其上存储有用于执行原子操作的计算机程序指令,当所述计算机程序指令由处理器执行时,实现根据条款A1-10的任意一项所述的方法。
虽然本公开的实施方式如上,但所述内容只是为便于理解本公开而采用的实施例,并非用以限定本公开的范围和应用场景。任何本公开所述技术领域内的技术人员,在不脱离本公开所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本公开的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (25)
1.一种用于执行原子操作的方法,包括:
从片上系统向与其关联的外部存储装置发送原子写命令,其中所述原子写命令用于对存储于外部存储装置中的原始数据执行处理操作;以及
在所述片上系统处接收来自于所述外部存储装置关于执行所述原子写命令的应答信号,其中所述应答信号包括与执行原子写命令相关的原始数据。
2.根据权利要求1所述的方法,其中所述原子写命令包括用于指示所述外部存储装置在所述应答信息中包括所述原始数据的命令位域。
3.根据权利要求1所述的方法,其中所述原子写命令是针对多维数据操作的多维原子写命令,所述方法还包括:
根据预定的数据尺寸将所述多维原子写命令拆分成多个一维原子写命令,其中所述预定的数据尺寸与向所述片上系统传送所述应答信号的通道大小相同。
4.根据权利要求3所述的方法,还包括:
根据预定的地址间隔并行地向所述外部存储装置发送所述多个一维原子写命令。
5.根据权利要求1所述的方法,其中所述原子写命令还包括用于指示多种运算模式之一的模式位域,所述方法还包括:
根据所述模式位域从所述片上系统的对应访存子单元中获取用于运算的操作数据。
6.根据权利要求5所述的方法,其中所述多种运算模式包括双地址模式和立即数模式,所述方法包括:
响应于所述模式位域指示所述双地址模式,根据所述一维原子写命令中的两个地址信息从所述片上系统的对应访存子单元中读取用于所述运算的两个操作数据;以及
响应于所述模式位域指示所述立即数模式,根据所述一维原子写命令中的地址信息从所述片上系统的对应访存子单元中读取用于所述运算的立即数。
7.根据权利要求5所述的方法,还包括:
对从所述片上系统的对应访存子单元中获取用于运算的操作数据的次数以及从所述外部存储装置接收的原始数据的次数进行累加计数。
8.根据权利要求3所述的方法,还包括:
在向所述外部存储装置发送原子写命令前,将对应于每个一维原子写命令的配置信息进行注册保存;以及
在从所述应答信号中接收到所述原始数据后,根据所述配置信息将与所述一维原子写命令关联的原始数据进行重排序缓冲,以便执行上报确认。
9.根据权利要求8所述的方法,其中所述配置信息包括所述原始数据的基地址信息、步长信息和维度信息,所述方法还包括:
将所述基地址信息和步长信息存储于指令表中;以及
将所述维度信息存储于重排序缓冲存储器中。
10.根据权利要求9所述的方法,还包括:
在从所述应答信号中接收到原始数据后,根据应答信号中的索引信息从所述指令表中获取所述基地址信息和步长信息;
根据所述基地址信息、步长信息和所述维度信息,确定所述原始数据的存储地址;以及
根据所述存储地址,将从所述应答信号中接收到的所述原始数据存储到所述片上系统的对应访存子单元中。
11.一种用于执行原子操作的片上系统,包括:
控制单元,其配置成生成原子写命令,其中所述原子写命令用于对存储于外部存储装置中的原始数据执行处理操作;
访存单元,其配置成:
向所述外部存储装置发送原子写命令;以及
从所述外部存储装置接收关于执行所述原子写命令的应答信号,其中所述应答信号包括与执行原子写命令相关的原始数据。
12.根据权利要求11所述的片上系统,其中所述原子写命令包括用于指示所述外部存储装置在所述应答信息中包括所述原始数据的命令位域。
13.根据权利要求11所述的片上系统,其中所述原子写命令是针对多维数据操作的多维原子写命令,所述控制单元包括第一控制子单元和第二控制子单元,其中:
所述第一控制子单元配置成用于生成所述多维原子写命令;并且
所述第二控制子单元配置成根据预定的数据尺寸将所述多维原子写命令拆分成多个一维原子写命令,其中所述预定的数据尺寸与向所述片上系统传送所述应答信号的通道大小相同。
14.根据权利要求11所述的片上系统,其中所述访存单元包括多个访存子单元,其中第一访存子单元配置成:
根据预定的地址间隔并行地向所述外部存储装置发送所述多个一维原子写命令。
15.根据权利要求13所述的片上系统,其中所述原子写命令还包括用于指示多种运算模式之一的模式位域,所述第二控制子单元还配置成:
根据所述模式位域,从所述访存单元的其他访存子单元中读取用于运算的操作数据;以及
将读取的所述操作数据发送到所述第一访存子单元。
16.根据权利要求15所述的片上系统,其中所述多种运算模式包括双地址模式和立即数模式,所述第二控制子单元还配置成:
响应于所述模式位域指示所述双地址模式,根据所述一维原子写命令中的两个地址信息从所述访存单元的对应访存子单元中读取用于所述运算的两个操作数据;以及
响应于所述模式位域指示所述立即数模式,根据所述一维原子写命令中的地址信息从所述访存单元的对应访存子单元中读取用于所述运算的立即数。
17.根据权利要求15所述的片上系统,其中所述第二控制子单元还包括第一计数器和第二计数器,其中:
所述第一计数器配置成对从对应访存子单元中读取用于运算的操作数据的次数;并且
所述第二计数器配置成对需从所述外部存储装置接收的原始数据的次数进行累加计数。
18.根据权利要求13所述的片上系统,其中所述第一访存子单元还包括寄存器和重排序缓冲器,其中:
所述寄存器配置成在所述第一访存子单元向所述外部存储装置发送原子写命令前,将对应于每个一维原子写命令的配置信息进行注册保存;并且
所述重排序缓冲器配置成在从所述应答信号中接收到所述原始数据后,根据所述配置信息将与所述一维原子写命令关联的原始数据进行重排序缓冲,以便执行上报确认。
19.根据权利要求18所述的片上系统,其中所述配置信息包括所述原始数据的基地址信息、步长信息和维度信息,其中第一访存子单元配置成:
将所述基地址信息和步长信息存储于所述寄存器的指令表中;以及
将所述维度信息存储于所述重排序缓冲存储器中。
20.根据权利要求19所述的片上系统,其中所述第一访存子单元还配置成:
在从所述应答信号中接收到原始数据后,根据应答信号中的索引信息从所述指令表中获取所述基地址信息和步长信息;
根据所述基地址信息、步长信息和所述维度信息,确定所述原始数据的存储地址;以及
根据所述存储地址,将从所述应答信号中接收到的所述原始数据存储到所述访存单元的对应访存子单元中。
21.一种计算装置,包括根据权利要求11-20的任意一项所述的片上系统。
22.一种人工智能处理器芯片,包括根据权利要求21所述的计算装置。
23.一种板卡,包括权利要求22所述的人工智能处理器芯片。
24.一种设备,包括:
处理器;以及
存储器,其上存储有用于执行原子操作的计算机程序指令,当所述计算机程序指令由处理器执行时,实现根据权利要求1-10的任意一项所述的方法。
25.一种计算机可读存储介质,其上存储有用于执行原子操作的计算机程序指令,当所述计算机程序指令由处理器执行时,实现根据权利要求1-10的任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211248376.5A CN117908959A (zh) | 2022-10-12 | 2022-10-12 | 用于执行原子操作的方法及其相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211248376.5A CN117908959A (zh) | 2022-10-12 | 2022-10-12 | 用于执行原子操作的方法及其相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117908959A true CN117908959A (zh) | 2024-04-19 |
Family
ID=90693233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211248376.5A Pending CN117908959A (zh) | 2022-10-12 | 2022-10-12 | 用于执行原子操作的方法及其相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117908959A (zh) |
-
2022
- 2022-10-12 CN CN202211248376.5A patent/CN117908959A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11880330B2 (en) | Network-on-chip data processing method and device | |
WO2024045580A1 (zh) | 用于调度任务的方法及其相关产品 | |
CN111258769B (zh) | 数据传输装置和方法 | |
CN111061507A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN117908959A (zh) | 用于执行原子操作的方法及其相关产品 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN111209230B (zh) | 数据处理装置、方法及相关产品 | |
CN114281559A (zh) | 多核处理器、用于多核处理器的同步方法及相应产品 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111340202A (zh) | 运算方法、装置及相关产品 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
CN112396186B (zh) | 执行方法、装置及相关产品 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
CN113742266B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111275197B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112394985B (zh) | 执行方法、装置及相关产品 | |
WO2022001438A1 (zh) | 一种计算装置、集成电路芯片、板卡、设备和计算方法 | |
WO2022253287A1 (zh) | 用于生成随机数的方法及其相关产品 | |
WO2023016382A1 (zh) | 用于片上系统的方法及其相关产品 | |
CN117311812A (zh) | 用于重排序缓冲的方法及其相关产品 | |
CN117667198A (zh) | 指令同步控制方法、同步控制器、处理器、芯片和板卡 | |
CN117687935A (zh) | 指令控制方法、数据缓存方法及相关产品 | |
CN117667212A (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 |