CN117667198A - 指令同步控制方法、同步控制器、处理器、芯片和板卡 - Google Patents

指令同步控制方法、同步控制器、处理器、芯片和板卡 Download PDF

Info

Publication number
CN117667198A
CN117667198A CN202211037572.8A CN202211037572A CN117667198A CN 117667198 A CN117667198 A CN 117667198A CN 202211037572 A CN202211037572 A CN 202211037572A CN 117667198 A CN117667198 A CN 117667198A
Authority
CN
China
Prior art keywords
instruction
synchronization
instructions
synchronous
consumer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211037572.8A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202211037572.8A priority Critical patent/CN117667198A/zh
Publication of CN117667198A publication Critical patent/CN117667198A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Abstract

本披露公开了一种指令同步控制方法、同步控制器、处理器、芯片和板卡。该处理器可以作为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了指令同步控制方法,其可以避免不必要的等待时间,提高处理效率。

Description

指令同步控制方法、同步控制器、处理器、芯片和板卡
技术领域
本披露一般涉及处理器领域。更具体地,本披露涉及一种指令同步控制方法、同步控制器、处理器、芯片和板卡。
背景技术
指令系统是计算机软件和硬件交互的接口,是计算机系统结构中一个非常重要的部分。随着人工智能技术的不断发展,智能应用有两个显著的特性:低延迟和高能效比。指令级并行可以有效提高处理速度。
然而,在指令级并行中,指令之间的依赖可能会导致程序执行结果出错。为了保证程序执行的正确性,需要使用同步指令来确保相关指令之间的执行顺序。同步指令的引入确保了整个程序执行的正确性,但也相应地增加了指令处理的延迟。
有鉴于此,亟需提供一种优化的指令同步方案,以尽可能减少处理延迟。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了指令同步方案。通过本披露的指令同步方案,可以尽可能地减少由于同步指令而引入的不必要的等待延迟,从而提高处理速度。
在第一方面中,本披露提供一种同步控制器,配置用于:响应于同步指令,针对同步指令中的单个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖;以及基于所述依赖关系,对所述同步指令之后的对应消费端的指令进行同步管控。
在第二方面中,本披露提供一种指令同步控制方法,包括:响应于同步指令,针对同步指令中的每个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖;以及基于所述依赖关系,对所述同步指令之后的对应消费端的指令进行同步管控。
在第三方面中,本披露提供一种处理器,包括前述第一方面的同步控制器。
在第四方面中,本披露提供一种芯片,包括前述第三方面的处理器。
在第五方面中,本披露提供一种板卡,包括前述第四方面的芯片。
通过如上所提供的同步控制器、指令同步控制方法、处理器、芯片和板卡,本披露实施例通过针对同步指令中的单个消费端独立地维护依赖关系,能够缩短由于同步指令引入的等待延迟,从而提升处理速度。进一步,在一些实施例中,通过释放消费端对其自身的依赖,可以进一步缩短处理延迟。更进一步地,在一些实施例中,还可以针对指令所使用的不同存储空间,分别维护依赖关系,由此减少可能的延迟。上述指令同步方案可以应用于单个处理核内不同指令队列之间的同步管控,也可以应用于多个处理核的指令序列之间的同步管控。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核计算装置的处理器核的内部结构示意图;
图4示出本披露实施例的多核计算装置的内部结构简化示意图;
图5a-图5b示出已知的指令同步控制方案的简化性能模型;
图6示出了根据本披露实施例的指令同步控制方法的示例性流程图;
图7a-图7b示出根据本披露实施例的指令同步控制方案的简化性能模型。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本披露的具体实施方式。
示例性硬件环境
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了图2中的计算装置201为单核装置时处理核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31(也称为控制器)、运算模块32(也称为运算器)及存储模块33(也称为存储器)。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、权值存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。应当注意,此处的NRAM和WRAM可以是同一存储器在逻辑存储空间上划分形成的两个存储区域,也可以是两个独立的存储器,此处不做具体限定。
图4示出了图2中的计算装置201为多核时的内部结构简化示意图。多核计算装置可以用层次化硬件模型来进行抽象。如图所示,多核计算装置400作为一个片上系统,其包括至少一个计算簇(cluster),每个计算簇又包括多个处理器核,换言之,多核计算装置400是以片上系统-计算簇-处理器核的层次所构成的。
以片上系统的层级来看,如图所示,多核计算装置400包括外部存储控制器41、外设通信模块42、片上互联模块43、全局同步模块44以及多个计算簇45。
外部存储控制器41可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备(例如图2中的DRAM 204),从而自片外读取数据或是将数据写入。外设通信模块42用以通过接口装置(图2的202)接收来自处理装置(图2的203)的控制信号,启动计算装置(图2的201)执行任务。片上互联模块43将外部存储控制器41、外设通信模块42及多个计算簇45连接起来,用以在各个模块间传输数据和控制信号。全局同步模块44例如是一种全局同步屏障控制器(globalbarriercontroller,GBC),用以协调各计算簇的工作进度,确保信息的同步。多个计算簇45是多核计算装置400的计算核心,在图中示例性地展示每个裸片上4个,随着硬件的发展,本披露的多核计算装置400还可以包括8个、16个、64个、甚至更多的计算簇45。计算簇45用以高效地执行深度学习算法。
以计算簇的层级来看,如图所示,每个计算簇45包括多个处理器核406作为控制和计算单元,另外还有共享存储核407作为存储单元。进一步地,每个计算簇内还可以包括本地同步模块412,用以协调计算簇内各个处理器核的工作进度,确保信息的同步。处理器核406在图中示例性地展示4个,本披露不限制处理器核406的数量。
存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行计算簇45与DRAM 204之间的通信、计算簇45间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
存储核407包括共享存储单元(SMEM)408、广播总线409、计算簇直接内存访问模块(cluster direct memory access,CDMA)410及全局直接内存访问模块(global directmemory access,GDMA)411。SMEM 408承担高性能数据中转站的角色,在同一个计算簇45内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SMEM 408在处理器核406间中转,存储核407只需要将复用的数据从SMEM 408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、计算簇45间的通信和计算簇45与DRAM 204的数据传输。
以处理器核的层级来看,单个处理器核的结构可以类似于图3所示的单核计算装置的结构图,此处不再详述。
同步指令
如背景技术中所提到的,同步指令的引入虽然确保了整个程序执行的正确性,但也相应地增加了指令处理的延迟。
在单个处理核中执行指令序列时,通常将指令按照类型分别缓存到不同的指令队列以待发射。每个指令队列内部的指令是顺序发射、顺序执行的。多个指令队列中的指令可以并行发射,因此从整体上看指令是乱序发射的。不同指令队列之间的依赖关系需要通过同步指令来保证。
在数据同步上,一个经典问题是生产者消费者问题,其中生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生成数据,而消费者取走数据。在指令流同步事件中,类似于数据同步事件,也可以引入生产者消费者模型,只不过不涉及数据传输,而是指令的执行。具体而言,指令流同步事件的生产端要先执行完一些指令,指令流同步事件的消费端在生产端未执行完那些指令之前不能执行后续的指令。
同步指令中会携带生产端和消费端的标识。当执行到该同步指令时,需要等待该同步指令所指示的生产端处的在先指令执行结束,才能释放消费端处的后续指令。当一条同步指令中涉及多个生产端和消费端时,需要等待所有生产端的在先指令执行结束,才能释放所有消费端的后续指令。这种限制增加了不必要的等待时间。下面结合附图示例来详细阐述这种增加的等待时间。
图5a-图5b示出了已知的指令同步控制方案的简化性能模型。在此图示中,假设采用软件乒乓方式来实现包括数据的加载(L)、计算(C)和回存(S)的LCS流水。在乒乓方式中,存储空间可以配置有至少两个缓冲区,用以支持在其中一个缓冲区与外部存储电路之间进行数据访存的同时,在另一缓冲区与处理电路之间进行数据访存。这两个缓冲区可以称为乒缓冲空间与乓缓冲空间,也即称为乒乓(pingpong)流水。
具体地,在处理电路针对存储电路的乒存储空间上的数据执行计算时,存储电路向其乓存储空间上加载下一次的计算数据。从前面的硬件架构描述可知,存储电路与其他存储电路之间的访存接口不同于存储电路与处理电路之间的访存接口,因此,可以支持上述并行方式,从而构成流水线处理。
在图5a和图5b的示例中,整个指令序列需要执行的操作是交替地从乒存储空间和乓存储空间加载数据,由处理电路执行运算处理。假设将指令分为访存(IO)和运算(Compute)两类,则指令相应地被分配到访存指令队列和运算指令队列。对于访存指令队列中的访存指令流,其执行顺序为:ping空间的数据加载(io00指令),pong空间的数据加载(io10指令),ping空间的下一数据加载(io01指令)和pong空间的下一数据加载(io11指令),依此循环。对于运算指令队列中的运算指令流,其执行顺序为:ping空间的数据运算(stream00指令)、pong空间的数据运算(stream10指令)、ping空间的下一数据运算(stream01指令),依此循环。可以理解,运算指令与对应的访存指令之间存在依赖关系,因此需要在二者之间插入同步指令。例如,在io00指令和stream00指令之间、io10指令和stream10指令之间、io01指令和stream01指令之间等等,插入同步指令。在一些场景中,访存指令也会依赖于运算指令,例如存在存储空间依赖等。也即,访存指令与运算指令相互之间可能存在依赖关系。在此示例中,假设访存指令也依赖于运算指令,例如io01指令依赖于stream00指令,io11指令依赖于stream10指令,等等。
图5a和图5b以单核处理器内的指令队列之间的同步为例,同步指令例如是sync指令。根据访存指令与运算指令之间的依赖性,在访存指令队列与运算指令队列之间插入了同步指令。例如,对于首个同步指令sync1,其例如为sync.Producer(io).Consumer(compute);而对于后续的同步指令sync2、sync3…,其例如为sync.Producer(io,compute).Consumer(io,compute)。
图中分别示出了访存、控制和运算三条时间线。对所有指令,考虑启动和结束的开销,即指令从控制单元发射后经过一定延时开始执行,执行结束后经过一定延时提交到控制单元,不同指令流之间的同步在控制单元进行。
在整个指令序列的执行过程中,每两次同步指令之间的时间称为一个时间片。一般来说,在流水线处理中,每个时间片内访存(IO)和运算(compute)各自的执行时间是不变的。如果时间片内访存指令的执行时间大于运算指令,如图5a所示,则整个流水线的时间由每个时间片访存指令执行的时间和时间片之间访存指令切换的开销决定,称为IO瓶颈。
具体地,如图5a所示,控制单元首先发射io00指令给访存单元,并根据同步指令sync1阻塞stream00指令的发射。访存单元执行io00指令,执行完后提交给控制单元。图中表示io00指令的梯形的两条斜边分别示出了io00指令的发射和提交的时间开销。
控制单元接收到io00指令的提交后,释放stream00指令对io00指令的依赖,发射stream00指令给运算单元。运算单元执行stream00指令,执行完后提交给控制单元。图中表示stream00指令的梯形的两条斜边分别示出了stream00指令的发射和提交的时间开销。
控制单元接收到io00指令的提交后,还会同时发射io10指令给访存单元,访存单元执行io10指令,执行完后提交给控制单元。
根据同步指令sync2,当控制单元接收到所有生产端(此处即为访存指令队列和运算指令队列)的在先指令(此处分别为io10指令和stream00指令)的提交后,才能释放所有消费端的后续指令。因此,当控制单元接收到io10指令和stream00指令的提交后,发射stream10指令给运算单元,同时发射io01指令给访存单元,如此循环。在此示例中,由于访存时间比运算时间长,存在IO瓶颈,因此必须等io10指令提交完成之后,才能发射后续的stream10指令和io01指令。也即,整个流水线的时间由每个时间片访存指令执行的时间和时间片之间访存指令切换的开销决定。
另一方面,如果时间片内运算指令的执行时间大于访存指令,如图5b所示,则整个流水线的时间由每个时间片内运算指令执行的时间和时间片之间运算指令切换的开销决定,称为计算瓶颈。
具体地,参见图5b所示,指令的流水过程与图5a类似,此处不详细展开,区别在于在每个时间片内,运算指令执行的时间大于访存指令的执行时间,必须等到运算指令提交完成之后,才能发射后续的访存指令和运算指令。例如,在图5b的同步指令sync2处,当控制单元接收到所有生产端(访存指令队列和运算指令队列)的在先指令(io10指令和stream00指令)的提交后,才能释放所有消费端的后续指令。在此示例中,由于运算时间比访存时间长,存在运算瓶颈,因此必须等stream00指令提交完成之后,才能发射后续的stream10指令和io01指令。
从上面结合附图描述的指令流水过程可以看出,每次同步指令之前都要等所有生产端的上一条指令提交才能释放依赖,而同步指令之后都要等消费端的下一条指令发射才能执行,这两部分的延时会暴露在总的执行中间造成性能浪费。具体地,如图5a所示,对于IO瓶颈而言,从访存时间线上可以看出时间的浪费,也即访存时间线上相邻梯形直边之间的间隙,其中501表示等待指令提交的时间,502表示等待指令发射的时间。又例如,如图5b所示,对于计算瓶颈而言,从运算时间线上可以看出时间的浪费,也即运算时间线上相邻梯形直边之间的间隙,其中503表示等待指令提交的时间,504表示等待指令发射的时间。
由此可见,在上述指令流水过程中,存在不必要的时间开销,限制了处理效率的提升。发明人还注意到,这种不必要的时间开销主要是由于现有的同步指令在涉及多个生产端和消费端时,需要等待所有生产端的在先指令执行结束,才能释放所有消费端的后续指令。也即,在生产端与消费端之间建立了一种全连接式的依赖关系,然而这些依赖关系中有些并不是实质上的依赖。因此,这些非实质的依赖关系增加了不必要的等待时间,妨碍了后续指令的尽早启动。
指令同步控制方案
有鉴于此,本披露实施例提供了一种指令同步控制方法,其通过为同步指令中的单个消费端,独立地维护其与生成端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖,从而可以避免不必要的等待。
图6示出了根据本披露实施例的指令同步控制方法的示例性流程图。
如图所示,在步骤610中,响应于同步指令,针对同步指令中的单个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖。
如前面所提到的,现有的同步指令在存在多个消费端和/或多个生产端时,会在消费端与生产端之间建立全连接式的依赖关系。在这种全连接式的依赖关系下,当任一消费端执行到该同步指令时,在此同步事件中需要等待所有生产端的前序指令执行结束,同时还需要阻塞其所处指令流中的后续指令的发射。例如,假设同步指令为sync.Producer(io1,compute).Consumer(io2,compute),则根据现有的同步指令,其依赖关系包括io2对io1的依赖,io2对compute的依赖,compute对compute自身的依赖,以及compute对io1的依赖。此时,io2作为消费端,其既需要等待compute的前序指令执行结束,又需要等待io1的前序指令执行结束,才能发射其指令流中的后续指令。于此同时,compute作为消费端,也需要等待io1的前序指令执行结束,同时还需要等待compute自身的前序指令执行结束,才能发射其指令流中的后续指令。但是实际上io2可能对io1并无实质上的数据依赖,这种相互等待导致了额外的延时,加长了处理时间。
因此,在本披露实施例中,针对同步指令中的单个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上存在数据依赖的生产端之间的依赖。由此,可以解绑由于现有同步指令中的全连接式依赖关系而带来的非实质上的依赖。例如,在上述示例中,通过针对单个消费端独立地维护依赖关系,可以将同步指令sync.Producer(io1,compute).Consumer(io2,compute)拆解为两个同步指令:sync.Producer(io1,compute).Consumer(compute)和sync.Producer(compute).Consumer(io2),由此避免了io2对io1的前序指令的不必要的等待。
在一些实施例中,针对单个消费端维护其与生产端之间的依赖关系可以进一步包括:释放消费端对其自身的依赖。可以理解,消费端对其自身的依赖是一种资源依赖,也即同一指令队列内部的依赖,例如作为消费的同一运算电路需要执行完前一条指令,才能执行下一条指令。针对资源依赖,可以将其交由消费端自身解决,而无需在控制单元处进行管控,由此可以尽早进行指令的译码,当消费端处的前一条指令执行完成后可以立刻开始后一条指令的执行,从而尽可能减少等待时间。
例如,假设同步指令为sync.Producer(io,compute).Consumer(io,compute),则可以将该同步指令拆解为两个同步指令:sync.Producer(io).Consumer(compute)和sync.Producer(compute).Consumer(io),忽略sync.Producer(io).Consumer(io)和sync.Producer(compute).Consumer(compute),从而作为消费端的io无需等待其自身前序指令的提交即可开始指令流中下一指令的译码,而作为消费端的compute也无需等待其自身前序指令的提交即可提前开始下一指令的译码,由此进一步减少处理时间。
可选地或附加地,在一些实施例中,当采用乒乓流水方式实现指令流水时,指令队列可以包括根据乒乓流水方式划分的两个访存指令队列,例如io0和io1。此时,针对单个消费端维护其与生产端之间的依赖关系可以包括:释放这两个访存指令队列之间的依赖。也即,在io0和io1这两个流之间的依赖关系可以忽略。
继续图6,接着,在步骤620中,基于前面维护的依赖关系,对同步指令之后的对应消费端的指令进行同步管控。
在一些实施例中,同步管控可以包括:响应于依赖关系所指示的任一生产端尚未就绪,阻塞该同步指令之后的对应消费端的指令;和/或响应于依赖关系所指示的所有生产端均已就绪,解除对该同步指令之后的对应消费端的指令的阻塞。
在现有的单处理核内的硬件同步中,每个指令流都有一个指令队列,sync同步指令会下发到所有相关的指令队列,然后由控制单元处一个统一的同步表(sync table)模块来处理sync指令。每个指令队列在遇到当前流的sync.producer指令时,会等待前一条指令提交之后,向sync table发送ready就绪信号,不会阻塞后续指令的执行。在遇到当前流的sync.consumer指令时,阻塞后续指令的执行直到收到sync table发送go发射信号。当synctable收到所有生产端的ready信号之后,向所有的消费端发送go信号。
在本披露实施例中,由于针对单个消费端独立地维护依赖关系,因此在进行同步管控的时候,对每个消费端的go信号有独立的判断条件,也即根据独立的依赖关系进行判断。
例如,在释放了消费端对其自身的依赖的实现中,在进行同步管控判断时,在除消费端自身之外的所有生产端的ready信号全部送达后可以发送go信号。
又例如,在释放了乒乓两个访存指令队列之间的依赖的实现中,在进行同步管控判断时,io0作为消费端不需要等待来自io1的生产端ready就绪信号,反之亦然。
可选地或附加地,在一些实施例中,还可以针对指令所使用的不同存储空间,分别维护上述依赖关系,由此尽可能提前处理可能并无依赖的指令。
具体地,响应于依赖关系所指示的所有生产端的该同步指令之前的前序指令对某一存储空间的访问全部完成,解除对消费端的该同步指令之后的只访问该存储空间的后续指令的阻塞。此处的存储空间例如可以是图3中的NRAM、WRAM,也可以是图4中的SRAM、DRAM等,其可以推广到任意存储空间。
例如,当生产端同步指令之前访问NRAM全部完成时,消费端对NRAM的依赖就可以释放,也就是同步指令之后的只访问NRAM的指令就可以执行了。
在一些实施例中,上述指令同步控制方法可以在单核处理器或单个处理器核内执行。在这种场景下,同步指令例如是sync指令,用于同一处理核内不同指令队列之间的同步管控,此时同步指令中指示的消费端和生产端分别对应一个或多个指令队列。例如,同步指令可以表示为:sync.Producer(io,compute).Consumer(io,compute),其中生产端和消费端均来自于io指令队列(访存指令队列)和compute指令队列(运算指令队列)。上述指令同步控制方法可以由同步控制器来执行,此时同步控制器可以是单个处理核内的指令译码单元(例如图3的指令译码单元312)。
在另一些实施例中,上述指令同步控制方法可以在多核处理器或多个处理器核之间执行。在这种场景下,同步指令例如是barrier指令或信号量(semaphore),用于不同处理核的指令流之间的同步管控,此时同步指令中指示的消费端和生产端分别对应一个或多个处理核。例如,同步指令可以表示为:barrier.
Producer(core0,core1).Consumer(core0,core1),其中生产端和消费端均包括两个处理核core0和core1。上述指令同步控制方法可以由同步控制器来执行,取决于需要同步的多个处理核所处的位置,同步控制器可以是多核处理器中的本地同步控制器(例如图4的本地同步模块412),用于协调同一计算簇内的不同处理核之间的同步;同步控制器也可以是多核处理器中的全局同步控制器(例如图4的全局同步模块44),用于协调不同计算簇的处理核之间的同步。
图7a-图7b示出了应用本披露实施例的指令同步控制方案后的简化性能模型。图7a-图7b的示例场景分别对应图5a-图5b的场景,也即,采用软件乒乓方式来实现包括LCS流水,整个指令序列需要执行的操作是交替地从乒存储空间和乓存储空间加载数据,由处理电路执行运算处理。
图7a和图7b中的sync同步指令针对单个消费端独立地维护依赖关系,忽略同一消费端内部的依赖关系,由此图中将sync指令根据消费端进行了拆分。例如,原来的sync2变为sync21和sync22,也即由sync2.Producer(io,compute).Consumer(io,compute)变为sync21.Producer(io).Consumer(compute)和sync22.Producer(compute).Consumer(io)。sync3指令也类似拆分。
图中同样示出了访存、控制和运算三条时间线。对所有指令,考虑启动和结束的开销,即指令从控制单元发射后经过一定延时开始执行,执行结束后经过一定延时提交到控制单元,不同指令流之间的同步在控制单元进行。
如图7a所示,控制单元首先发射io00指令给访存单元,并根据同步指令sync1阻塞stream00指令的发射。访存单元执行io00指令,执行完后提交给控制单元。由于忽略同一消费端内部的依赖关系,因此访存指令队列中的下一访存指令io10指令也可以在适当的时间发射,而无需等待io00指令的提交。例如,控制单元可以根据io00指令执行所需的大致时间,考虑发射延时,适当地提前发射io10指令,以便io10指令在到达访存单元后,可以在io00指令执行完成后立即开始执行。由此,隐藏了io指令提交和io10指令发射的时间,也即消除了访存时间线上io00和io10之间的时间间隙。
控制单元接收到io00指令的提交后,释放stream00指令对io00指令的依赖,发射stream00指令给运算单元。运算单元执行stream00指令,执行完后提交给控制单元。
由于访存时间大于运算时间,因此尽管访存指令io10提前发射并执行,但是控制单元也可能先接收到运算指令stream00的提交。此时,根据同步指令sync22.Producer(compute).Consumer(io),作为消费端的io指令队列,其只需要等待单个生产端(compute)的在先指令的提交,即可释放依赖关系。因此,当控制单元接收到stream00指令的提交后,发射io01指令给访存单元。由此,对于访存瓶颈这种情况,一旦运算指令提前执行完成并提交,就可以提前开始访存指令,例如io01指令的译码,而无需等待io10指令的提交。
接着,控制单元接收到io10指令的提交后,根据同步指令sync21.Producer(io).Consumer(compute),释放stream10指令对io10指令的依赖,发射stream10指令给运算单元。运算单元执行stream10指令,执行完后提交给控制单元。
如此反复,可以尽可能地将访存指令的处理提前,降低访存瓶颈带来的影响,减少整体处理时间。
图7b对应计算瓶颈的场景。如图7b所示,控制单元首先发射io00指令给访存单元,并根据同步指令sync1阻塞stream00指令的发射。访存单元执行io00指令,执行完后提交给控制单元。由于忽略同一消费端内部的依赖关系,因此访存指令队列中的下一访存指令io10指令也可以在适当的时间发射,而无需等待io00指令的提交。不过在计算瓶颈的场景中,由于运算时间占主导,因此此处访存的提前对整体时间并无影响,被运算时间掩盖。图7b中未示出访存指令io10的提前发射,而是仍然等io00指令提交后再发射。
由于运算时间大于访存时间,因此控制单元会先接收到访存指令io10的提交。此时,根据同步指令sync21.Producer(io).Consumer(compute),作为消费端的compute指令队列,其只需要等待单个生产端(io)的在先指令的提交,即可释放依赖关系。因此,当控制单元接收到io10指令的提交后,可以提前开始stream10指令的译码并发射,以便在运算单元处的前一条指令执行完成后能够立刻开始后一条指令的执行。例如,控制单元可以根据stream00指令执行所需的大致时间,考虑发射延时,适当地提前发射stream10指令,以便stream10指令在到达运算单元后,可以在stream00指令执行完成后立即开始执行。由此,隐藏了stream00指令提交和stream10指令发射的时间,也即消除了运算时间线上stream00和stream10之间的时间间隙。
接着,控制单元接收到stream00指令的提交后,根据同步指令sync22.Producer(compute).Consumer(io),释放io01指令对stream00指令的依赖,发射io01指令给访存单元。访存单元执行io01指令,执行完后提交给控制单元。
如此反复,可以尽可能地将运算指令的处理提前,降低运算瓶颈带来的影响,减少整体处理时间。
综上,通过为单个消费端独立地维护依赖关系,可以减少不必要的等待时间,尽可能隐藏同步过程所引入的指令切换延时,提升处理效率。
本披露实施例还提供了一种处理器,包括前述用于执行指令同步控制方法的同步控制器。本披露实施例还提供一种芯片,其可以包括前面结合附图描述的任一实施例的处理器。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、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、根据条款4所述的同步控制器,进一步配置用于:响应于所述依赖关系所指示的所有生产端的所述同步指令之前的前序指令对所述存储空间的访问全部完成,解除对所述消费端的所述同步指令之后的只访问所述存储空间的后续指令的阻塞。
条款6、根据条款1-5任一所述的同步控制器,其中所述同步控制器是单个处理核内的指令译码单元,用于同一处理核内不同指令队列之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述指令队列。
条款7、根据条款6所述的同步控制器,其中所述指令队列至少包括访存指令队列和运算指令队列。
条款8、根据条款7所述的同步控制器,其中所述指令队列包括根据乒乓流水方式划分的两个访存指令队列,并且所述同步控制器进一步配置用于按如下针对单个消费端维护其与生产端之间的依赖关系:释放所述两个访存指令队列之间的依赖。
条款9、根据条款1-5任一所述的同步控制器,其中所述同步控制器是多核处理器中的本地同步控制器或全局同步控制器,用于不同处理核的指令序列之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述处理核。
条款10、一种指令同步控制方法,包括:响应于同步指令,针对同步指令中的单个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖;以及基于所述依赖关系,对所述同步指令之后的对应消费端的指令进行同步管控。
条款11、根据条款10所述的方法,其中,针对单个消费端维护其与生产端之间的依赖关系包括:释放所述消费端对其自身的依赖。
条款12、根据条款10-11任一所述的方法,其中进行所述同步管控包括:响应于所述依赖关系所指示的任一生产端尚未就绪,阻塞所述同步指令之后的对应消费端的指令;和/或响应于所述依赖关系所指示的所有生产端均已就绪,解除对所述同步指令之后的对应消费端的指令的阻塞。
条款13、根据条款10-12任一所述的方法,进一步包括:针对指令所使用的不同存储空间,分别维护所述依赖关系。
条款14、根据条款13所述的方法,进一步包括:响应于所述依赖关系所指示的所有生产端的所述同步指令之前的前序指令对所述存储空间的访问全部完成,解除对所述消费端的所述同步指令之后的只访问所述存储空间的后续指令的阻塞。
条款15、根据条款10-14任一所述的方法,其中所述同步指令用于同一处理核内不同指令队列之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述指令队列。
条款16、根据条款15所述的方法,其中所述指令队列至少包括访存指令队列和运算指令队列。
条款17、根据条款16所述的方法,其中所述指令队列包括根据乒乓流水方式划分的两个访存指令队列,并且维护所述依赖关系包括:释放所述两个访存指令队列之间的依赖。
条款18、根据条款10-14任一所述的方法,其中所述同步指令用于不同处理核的指令流之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述处理核。
条款19、一种处理器,包括根据条款1-9任一所述的同步控制器。
条款20、一种芯片,包括根据条款19所述的处理器。
条款21、一种板卡,包括根据条款20所述的芯片。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (21)

1.一种同步控制器,配置用于:
响应于同步指令,针对同步指令中的单个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖;以及
基于所述依赖关系,对所述同步指令之后的对应消费端的指令进行同步管控。
2.根据权利要求1所述的同步控制器,进一步配置用于按如下针对单个消费端维护其与生产端之间的依赖关系:
释放所述消费端对其自身的依赖。
3.根据权利要求1-2任一所述的同步控制器,进一步配置用于按如下进行同步管控:
响应于所述依赖关系所指示的任一生产端尚未就绪,阻塞所述同步指令之后的对应消费端的指令;和/或
响应于所述依赖关系所指示的所有生产端均已就绪,解除对所述同步指令之后的对应消费端的指令的阻塞。
4.根据权利要求1-3任一所述的同步控制器,进一步配置用于:
针对指令所使用的不同存储空间,分别维护所述依赖关系。
5.根据权利要求4所述的同步控制器,进一步配置用于:
响应于所述依赖关系所指示的所有生产端的所述同步指令之前的前序指令对所述存储空间的访问全部完成,解除对所述消费端的所述同步指令之后的只访问所述存储空间的后续指令的阻塞。
6.根据权利要求1-5任一所述的同步控制器,其中所述同步控制器是单个处理核内的指令译码单元,用于同一处理核内不同指令队列之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述指令队列。
7.根据权利要求6所述的同步控制器,其中所述指令队列至少包括访存指令队列和运算指令队列。
8.根据权利要求7所述的同步控制器,其中所述指令队列包括根据乒乓流水方式划分的两个访存指令队列,并且所述同步控制器进一步配置用于按如下针对单个消费端维护其与生产端之间的依赖关系:
释放所述两个访存指令队列之间的依赖。
9.根据权利要求1-5任一所述的同步控制器,其中所述同步控制器是多核处理器中的本地同步控制器或全局同步控制器,用于不同处理核的指令序列之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述处理核。
10.一种指令同步控制方法,包括:
响应于同步指令,针对同步指令中的单个消费端,独立地维护其与生产端之间的依赖关系,使得仅保留其与实质上依赖的生产端之间的依赖;以及
基于所述依赖关系,对所述同步指令之后的对应消费端的指令进行同步管控。
11.根据权利要求10所述的方法,其中,针对单个消费端维护其与生产端之间的依赖关系包括:
释放所述消费端对其自身的依赖。
12.根据权利要求10-11任一所述的方法,其中进行所述同步管控包括:
响应于所述依赖关系所指示的任一生产端尚未就绪,阻塞所述同步指令之后的对应消费端的指令;和/或
响应于所述依赖关系所指示的所有生产端均已就绪,解除对所述同步指令之后的对应消费端的指令的阻塞。
13.根据权利要求10-12任一所述的方法,进一步包括:
针对指令所使用的不同存储空间,分别维护所述依赖关系。
14.根据权利要求13所述的方法,进一步包括:
响应于所述依赖关系所指示的所有生产端的所述同步指令之前的前序指令对所述存储空间的访问全部完成,解除对所述消费端的所述同步指令之后的只访问所述存储空间的后续指令的阻塞。
15.根据权利要求10-14任一所述的方法,其中所述同步指令用于同一处理核内不同指令队列之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述指令队列。
16.根据权利要求15所述的方法,其中所述指令队列至少包括访存指令队列和运算指令队列。
17.根据权利要求16所述的方法,其中所述指令队列包括根据乒乓流水方式划分的两个访存指令队列,并且维护所述依赖关系包括:
释放所述两个访存指令队列之间的依赖。
18.根据权利要求10-14任一所述的方法,其中所述同步指令用于不同处理核的指令流之间的同步管控,并且所述消费端和生产端分别对应一个或多个所述处理核。
19.一种处理器,包括根据权利要求1-9任一所述的同步控制器。
20.一种芯片,包括根据权利要求19所述的处理器。
21.一种板卡,包括根据权利要求20所述的芯片。
CN202211037572.8A 2022-08-26 2022-08-26 指令同步控制方法、同步控制器、处理器、芯片和板卡 Pending CN117667198A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211037572.8A CN117667198A (zh) 2022-08-26 2022-08-26 指令同步控制方法、同步控制器、处理器、芯片和板卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211037572.8A CN117667198A (zh) 2022-08-26 2022-08-26 指令同步控制方法、同步控制器、处理器、芯片和板卡

Publications (1)

Publication Number Publication Date
CN117667198A true CN117667198A (zh) 2024-03-08

Family

ID=90084930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211037572.8A Pending CN117667198A (zh) 2022-08-26 2022-08-26 指令同步控制方法、同步控制器、处理器、芯片和板卡

Country Status (1)

Country Link
CN (1) CN117667198A (zh)

Similar Documents

Publication Publication Date Title
CN112799726B (zh) 数据处理装置、方法及相关产品
CN111258935B (zh) 数据传输装置和方法
CN110059797B (zh) 一种计算装置及相关产品
CN116185942A (zh) 数据处理方法、装置、存储介质以及电子设备
CN111767995A (zh) 运算方法、装置及相关产品
CN111258769B (zh) 数据传输装置和方法
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
CN117667198A (zh) 指令同步控制方法、同步控制器、处理器、芯片和板卡
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN117687935A (zh) 指令控制方法、数据缓存方法及相关产品
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113469328B (zh) 执行转数穿过的装置、板卡、方法及可读存储介质
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113469327B (zh) 执行转数提前的集成电路装置
CN117667211A (zh) 指令同步控制方法、同步控制器、处理器、芯片和板卡
CN114281559A (zh) 多核处理器、用于多核处理器的同步方法及相应产品
CN117311813A (zh) 用于重排序缓冲的方法及其相关产品
WO2023236479A1 (zh) 用于执行任务调度的方法及其相关产品
WO2022253287A1 (zh) 用于生成随机数的方法及其相关产品
WO2023016382A1 (zh) 用于片上系统的方法及其相关产品
WO2023241478A1 (zh) 人工智能加速器流水线性能分析方法及设备
CN117908959A (zh) 用于执行原子操作的方法及其相关产品
CN117667212A (zh) 指令控制装置、方法、处理器、芯片和板卡
CN117311812A (zh) 用于重排序缓冲的方法及其相关产品
CN118277305A (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