CN113867686A - 运算方法、装置及相关产品 - Google Patents

运算方法、装置及相关产品 Download PDF

Info

Publication number
CN113867686A
CN113867686A CN202010622096.0A CN202010622096A CN113867686A CN 113867686 A CN113867686 A CN 113867686A CN 202010622096 A CN202010622096 A CN 202010622096A CN 113867686 A CN113867686 A CN 113867686A
Authority
CN
China
Prior art keywords
processing
data
multiply
fine
instruction
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
CN202010622096.0A
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202010622096.0A priority Critical patent/CN113867686A/zh
Publication of CN113867686A publication Critical patent/CN113867686A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)

Abstract

本公开涉及一种运算方法、装置及相关产品。板卡包括:存储器件、接口装置和控制器件以及机器学习芯片;其中,机器学习芯片与存储器件、控制器件以及接口装置分别连接;存储器件用于存储数据;接口装置用于实现机器学习芯片与外部设备之间的数据传输;控制器件用于对机器学习芯片的状态进行监控。

Description

运算方法、装置及相关产品
技术领域
本公开涉及计算机技术领域,尤其涉及一种乘加指令处理装置、方法及相关产品。
背景技术
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大。相关技术中,在对数据进行乘加运算处理的效率低、速度慢。
发明内容
有鉴于此,本公开提出了一种乘加指令处理装置、方法及相关产品。
根据本公开的第一方面,提供了一种乘加指令处理装置,所述装置包括:
控制模块,用于对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
处理模块,用于根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域、以及所述第四存储区域。
根据本公开的第二方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述第一方面所述的乘加指令处理装置,用于从其他处理装置中获取待处理张量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述乘加指令处理装置时,所述多个所述乘加指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述乘加指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘加指令处理装置共享同一控制***或拥有各自的控制***;多个所述乘加指令处理装置共享内存或者拥有各自的内存;多个所述乘加指令处理装置的互联方式是任意互联拓扑。
根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:
上述第二方面所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。
根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。
根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。
根据本公开的第八方面,提供了一种乘加指令处理方法,所述方法包括:
对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域、以及所述第四存储区域。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例所提供的乘加指令处理装置、方法及相关产品,该装置包括:控制模块,用于对接收到的乘加指令进行解析,获得乘加指令的操作码和操作域,并根据操作码确定乘加指令所对应的乘加运算处理、以及根据操作域获取执行乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略。处理模块,用于根据乘加运算策略对第一数据、第二数据和第三数据进行乘加运算处理,得到运算结果,并将运算结果存入第四存储区域中。其中,操作码用于指示乘加指令对数据所进行的处理为乘加运算处理,操作域包括存储第一数据的第一存储区域、存储第二数据的第二存储区域和存储第三数据的第三存储区域、以及第四存储区域。本公开所提供的乘加指令处理装置、方法及相关产品,通过一条乘加指令就可以实现多个数据之间的乘加运算处理,与相关技术中需要通过至少两条指令实现数据的乘加运算处理的过程相比,对数据进行乘加运算的处理效率高、处理速度快、且适用范围广。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1a、图1b示出根据本公开一实施例的组合处理装置的框图。
图2示出根据本公开一实施例的板卡的结构示意图。
图3示出根据本公开一实施例的乘加指令处理装置的框图。
图4示出根据本公开一实施例的乘加指令处理装置的框图。
图5示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。
图6a和图6b示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。
图7a和图7b示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。
图8a和图8b示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。
图9示出根据本公开实施例的乘加指令处理装置的循环缓冲存储区域的示意图。
图10示出根据本公开一实施例的乘加指令处理方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
由于神经网络算法在图像识别、语音识别、自然语言处理等领域中的使用越来越广泛,使得神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大。其中,乘加运算是指对数据进行乘和加两种运算,例如,示例1,对某两个数据进行乘法运算,得到乘法运算结果,而后将乘法运算结果与另一数据相加,得到最终运算结果。相关技术中,实现上述示例1的乘加运算过程中,需通过乘法指令、加法指令两条指令实现其运算过程。且在运算过程中,需要将乘法指令的运算结果写回到存储器中,而后执行加法指令的过程中,从存储器中读出乘法指令的运算结果进行加法运算。在整个乘加运算过程中,乘法指令的运算结果为中间临时数据,因而,针对该临时数据的读写操作不仅降低了整体的执行时间,还带来了额外的功耗开销。并且,在此过程中,由于存在数据依赖,加法指令也会被乘法指令所阻塞,会影响了整体的指令执行效率,降低乘加运算过程的执行速度。
本公开提供一种机器学习运算装置,该机器学习运算装置可以进行神经网络算法的相关运算,该机器学习运算装置可以包括一个或多个用于根据接收到的乘加指令对数据进行乘加运算处理的乘加指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得乘加指令,并将执行结果通过I/O接口传递给***设备(也可称其他处理装置)。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上乘加指令处理装置时,乘加指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图1a示出根据本公开一实施例的组合处理装置的框图。如图1a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
图1b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图1b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和其他处理装置连接。存储装置用于保存在机器学习运算装置和其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本公开提供一种板卡,图2示出根据本公开一实施例的板卡的结构示意图。如图2所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392。
存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。
在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个DDR4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组存储单元393中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制DDR的控制器,用于对每个存储单元393的数据传输与数据存储的控制。
接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置391可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至机器学习芯片289,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置391还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过SPI接口电连接。控制器件392可以包括单片机(Micro Controller Unit,MCU)。如机器学习芯片389可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
本公开提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。
电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、B超仪和/或心电图仪。
图3示出根据本公开一实施例的乘加指令处理装置的框图。如图3所示,该装置包括控制模块11和处理模块12。
控制模块11,用于对接收到的乘加指令进行解析,获得乘加指令的操作码和操作域,并根据操作码确定乘加指令所对应的乘加运算处理、以及根据操作域获取执行乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略。
处理模块12,用于根据乘加运算策略对第一数据、第二数据和第三数据进行乘加运算处理,得到运算结果,并将运算结果存入第四存储区域中。
其中,操作码用于指示乘加指令对数据所进行的处理为乘加运算处理,操作域包括存储第一数据的第一存储区域、存储第二数据的第二存储区域和存储第三数据的第三存储区域以及第四存储区域。
在本实施例中,第一数据、第二数据、第三数据可以是标量、向量、矩阵、张量等类型的数据,本公开对此不作限制。乘加运算处理包括对数据仅乘法运算处理和加法运算处理两个数据过程,可以先进行加法运算处理再进行乘法运算处理,也可以先进行乘法运算处理再进行加法运算处理,本公开对此不作限制。
在本实施例中,乘加运算策略用于指示乘加运算处理中加法运算处理、乘法运算处理的先后顺序、以及进行加法运算处理、乘法运算处理所对应的数据。第一数据、第二数据、第三数据分别包括至少一个数据。在第一数据、第二数据、第三数据中的至少一个包括多个数据时,乘加运算策略还可以指示数据之间进行运算的运算对应关系,以描述第一数据、第二数据、第三数据之间进行运算时,所获取的数据的顺序。例如,正序取数对应运算、倒序取数对应运算等。以保证数据之间可以执行对应的加法运算处理、乘法运算处理。
在本实施例中,控制模块可以从第一存储区域、第二存储区域和第三存储区域中获取到其分别对应的第一数据、第二数据和第三数据。第一存储区域、第二存储区域、第三存储区域和目的存储区域可以是进行数据存储的首地址等物理地址,也可以是逻辑地址、线性地址,本公开对此不作限制。控制模块可以通过数据输入输出单元获得乘加指令、第一数据、第二数据、第三数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。本领域技术人员可以根据实际需要对存储区域的表示方式进行设置,本公开对此不作限制。
在本实施例中,对于一个乘加指令可以包括操作码和操作域。其中操作码可以是预先配置的指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。而操作域可以包括执行对应的指令所需的所有数据(包括第一数据、第二数据、第三数据)和参数(对应的乘加运算策略、第四存储区域)的来源,如数据、乘加运算策略的存储区域、第四存储区域等等。比如,操作域可以包括第一存储区域、第二存储区域、第三存储区域和第四存储区域。
应当理解的是,本领域技术人员可以根据需要对乘加指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收乘加指令,并控制一个或多个处理模块进行乘加运算处理。在装置包括多个控制模块时,多个控制模块可以分别接收乘加指令,并控制对应的一个或多个处理模块进行乘加运算处理。
本公开实施例所提供的乘加指令处理装置,该装置包括:控制模块,用于对接收到的乘加指令进行解析,获得乘加指令的操作码和操作域,并根据操作码确定乘加指令所对应的乘加运算处理、以及根据操作域获取执行乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略。处理模块,用于根据乘加运算策略对第一数据、第二数据和第三数据进行乘加运算处理,得到运算结果,并将运算结果存入第四存储区域中。其中,操作码用于指示乘加指令对数据所进行的处理为乘加运算处理,操作域包括存储第一数据的第一存储区域、存储第二数据的第二存储区域和存储第三数据的第三存储区域、以及第四存储区域。本公开所提供的乘加指令处理装置,通过一条乘加指令就可以实现多个数据之间的乘加运算处理,与相关技术中需要通过至少两条指令实现数据的乘加运算处理的过程相比,对数据进行乘加运算的处理效率高、处理速度快、且适用范围广。
在一种可能的实现方式中,根据乘加运算策略对第一数据、第二数据和第三数据进行乘加运算处理,得到运算结果,包括:
根据乘加运算策略从第一数据、第二数据和第三数据中确定出先运算数据、后运算数据、运算处理顺序和运算对应关系;
根据运算对应关系和运算处理顺序对先运算数据进行第一运算处理,得到中间结果;
根据运算对应关系和运算处理顺序对中间结果与后运算数据进行第二运算处理,得到运算结果,
其中,第一运算处理为乘法运算处理或加法运算处理,第二运算处理为乘法运算处理或加法运算处理,第一运算处理与第二运算处理不同。
在该实现方式中,根据运算处理顺序可以确定第一运算处理和第二运算处理所对应的是乘法运算处理还是加法运算处理。例如,在运算处理顺序为“先乘法运算”时,则第一运算处理为乘法运算处理、第二运算处理为加法运算处理。在运算处理顺序为“先加法运算”时,则第一运算处理为加法运算处理、第二运算处理为乘法运算处理。先运算数据可以是指第一数据、第二数据和第三数据中先进行第一运算处理的数据,如,第一数据和第二数据。后运算数据可以是指第一数据、第二数据和第三数据中与中间结果一起进行第二运算处理的数据(也即除先运算数据之外的数据),如第三数据。如表1中示例所示,根据运算对应关系“全正序”可以确定将第一数据中的a1与第二数据b1相乘后,将得到的中间结果与第三数据中的c1相加得到运算结果。也即,根据运算对应关系“全正序”按照第一数据、第二数据和第三数据中各个数据的顺序,从前到后,依次对第一数据、第二数据和第三数据中排序为第一个、第二个、…、第n个的数据进行乘加运算,得到对应的运算结果。可以预先为不同的乘加运算策略设置对应的代码,以便于将其添加至乘加指令中。为便于说明执行乘加指令的过程及其对应的代码,下面通过表1来举例说明。
表1乘加指令运算示例
Figure BDA0002563382420000071
在一种可能的实现方式中,操作域中可以包括乘加运算策略。
在一种可能的实现方式中,操作码还用于指示乘加运算策略。
在一种可能的实现方式中,还可以预先设置默认乘加运算策略,在根据乘加指令无法确定乘加运算策略时,可以将默认乘加运算策略确定为当前乘加指令的乘加运算策略。默认乘加运算策略可以设置为:第一数据和第二数据为先运算数据、第三数据为后运算数据,第一运算处理为乘法运算处理、第二运算处理为加法运算处理(运算处理顺序),运算对应关系为全正序。本领域技术人员可以根据实际需要对默认乘加运算策略进行设置,本公开对此不作限制。
在一种可能的实现方式中,处理模块12可以包括至少一个加法器和至少一个乘法器。其中,每个乘法器用于执行乘加运算处理中的乘法运算处理。每个加法器用于执行乘加运算处理中的加法运算处理。
在该实现方式中,可以根据处理需要对处理模块中乘法器和加法器的数量进行设置,加法器和乘法器的数量越多,处理模块进行乘加运算处理的速度越快、处理效率越高。
在一种可能的实现方式中,操作码中可以包含先处理标识,或者操作域中可以包括先处理标识。
其中,控制模块11,还用于确定与先处理标识相对应的处理操作和对应的待处理数据,待处理数据包括第一数据、第二数据和第三数据中的至少一个。
处理模块12,还用于在对第一数据、第二数据和第三数据进行乘加运算处理之前,根据与先处理标识相对应的处理操作对对应的待处理数据进行先处理。
在该实现方式中,处理操作包括对待处理数据进行算术运算处理、逻辑运算处理、数据格式转换处理等处理,本公开对此不作限制。
在一种可能的实现方式中,处理操作可以包括以下至少一种:数据格式转换处理和数据运算处理。数据格式转换处理可以包括以下至少一种:浮点数转换处理、定点数转换处理、浮定点数转换处理。数据运算处理可以包括以下至少一种:三角函数运算处理、反三角函数运算处理、取对数运算处理、取指数运算处理、取最大值运算处理、取最小值运算处理、卷积运算处理、池化运算处理、全连接运算处理和激活运算处理。
在该实现方式中,数据格式转换处理可以是将待处理数据的数据格式进行数据格式转换。数据格式包括数据类型和数据长度。其中,数据类型包括浮点数数据类型、定点数数据类型、浮点数数据类型等数据类型。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X7X6X5X4X3X2X1X0,其中X7为符号位,X6为指数位。X5X4X3X2X1X0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·basep+e+1=±1.d·base2p+e+1 公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*24+1+1=1.0101*22*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高数据运算的精度。
在该实现方式中,浮点数转换处理可以指将待处理数据转换为指定长度的浮点数。定点数转换处理可以是指将待处理数据转换为指定长度的定点数。浮定点数转换处理可以是指将待处理数据转换为指定长度的浮定点数。指定长度可以包括8位、16位、32位等。
在该实现方式中,对待处理数据进行数据运算处理可以包括对待处理数据进行算术运算、逻辑运算等运算处理。
在一种可能的实现方式中,三角函数运算处理可以是指对待处理数据进行如正弦、余弦、正切、余切等运算处理。反三角函数运算处理可以是指对待处理数据进行如反正弦、反余弦、反正切、反余切等运算处理。取对数运算处理可以是指对待处理数据进行对数运算。取指数运算处理可以是指对待处理数据进行指数运算。取最大值运算处理可以是指在待处理数据为多个数据时,对待处理数据进行取最大值运算,取到的最大值作为对应的第一数据、第二数据或第三数据,例如,待处理数据为包括1、2、4第一数据,则进行取最大值运算后将数据4作为第一数据进行后续乘加运算。
取最小值运算处理可以是指在待处理数据为多个数据时,对待处理数据进行取最小值运算,取到的最小值作为对应的第一数据、第二数据或第三数据,例如,待处理数据为包括1、2、4第一数据,则进行取最小值运算后将数据1作为第一数据进行后续乘加运算。卷积运算处理,池化运算处理可以包括最大池化、平均池化等池化运算。激活运算处理所使用的激活函数包括线性整流函数(Rectified Linear Unit,ReLU,也可称ReLU函数)、exp函数(以自然数e为底的指数函数)等指数函数(exponential function)、S型生长曲线函数(Sigmoid function,也可称Sigmoid函数)等线性函数。
在该实现方式中,可以预先设置不同的先处理和后处理所对应的标识,以保证装置可以根据乘加指令的中先处理标识和/或后处理标识确定对应的处理操作。例如,假定先处理为将待处理数据所进行的处理操作为“浮定点数转换处理”,待处理数据为第一数据、第二数据和第三数据,可以将该所对应的先处理标识设置为“ffABC”,其中,“ff”表示处理操作为浮定点数转换处理,ABC中的A、B、C分别表示待处理数据为第一数据、第二数据和第三数据。假定后处理为对运算结果进行relu运算,可以将后处理标识设置为“relu”。
需要说明的是,上述数据运算处理仅是本公开提供的示例,实际上本领域技术人员可以根据实际需要对数据运算处理以及其对应的标识进行设置,本公开对此不作限制。
在一种可能的实现方式中,操作码中可以包含后处理标识,或者操作域中可以包括后处理标识。
其中,控制模块,还用于确定与后处理标识相对应的处理操作;
处理模块,还用于根据与后处理标识相对应的处理操作对运算结果进行后处理,并将后处理后的运算结果存入第四存储区域。
其中,对运算结果进行后处理的过程可以参见上文描述对待运算数据进行先处理的过程,不再赘述。
图4示出根据本公开一实施例的乘加指令处理装置的框图。在一种可能的实现方式中,如图4所示,该装置还可以包括存储模块13。存储模块13用于存储第一数据、第二数据和第三数据。
在该实现方式中,存储模块可以包括内存,如缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将第一数据、第二数据和第三数据在存储模块中的缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图4所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。
指令存储子模块111用于存储乘加指令。
指令处理子模块112用于对乘加指令进行解析,得到乘加指令的操作码和操作域。
队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括乘加指令。多个待执行指令可以包括还可以包括与乘加指令相关的其他计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图4所示,控制模块11还可以包括依赖关系处理子模块114。
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在依赖关系时,依赖关系处理子模块114可以将第一待执行指令缓存在指令存储子模块112中,在第零待执行指令执行完毕后,从指令存储子模块112中提取第一待执行指令发送至处理模块12。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在依赖关系包括:存储第一待执行指令所需数据的存储区域与存储第零待执行指令所需数据的存储区域之间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有依赖关系可以是二者所对应的存储区域之间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在一种可能的实现方式中,乘加指令的指令格式可以为:
MLUTADD addr1 addrA addrB addrC type sign0 sign1
其中,MLUTADD为操作码,addr1、addrA、addrB、addrC、type、sign0、sign1为操作域。MLUTADD用于指示该指令为乘加指令。addr1为第四存储区域。addrA为第一存储区域。addrB为第二存储区域。addrC为第三存储区域。Type为乘加运算策略。sign0为先处理标识。sign1为后处理标识。
在一种可能的实现方式中,乘加指令的指令格式还可以为:
MLUTADD.type.sign0.sign1addr1 addrAaddrB addrC
其中,MLUTADD.type.sign0.sign1为操作码,MLUTADD用于指示该指令为乘加指令。Type为乘加运算策略。sign0为先处理标识。sign1为后处理标识。
或者,乘加指令的指令格式还可以为:
MLUTADD.type addr1 addrA addrB addrC sign0 sign1,
MLUTADD.type.sign0 addr1 addrA addrB addrC sign1,
MLUTADD.type.sign1 addr1 addrA addrB addrC sign0等等。
以表中示例1为例,其对应的指令可以为MLUTADD 500 101 102 103 01ffABCrelu,装置获取到该指令之后,从101、102、103处分别获取到第一数据(a1、a2)、第二数据(b1)和第三数据(c1、c2)。进行先处理,将第一数据(a1、a2)、第二数据(b1)和第三数据(c1、c2)的数据格式转换为浮定点数数据格式,转换后进行乘加运算,得到运算结果a1·b1+c1、a2·b1+c2。而后进行后处理,对运算结果分别进行relu运算,得到relu运算后的运算结果。
应当理解的是,本领域技术人员可以根据需要对乘加指令的操作码、指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics ProcessingUnit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
请参阅图5,图5示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。其中,控制模块11和处理模块12可以是处理器100,处理器可以是通用处理器(例如中央处理器CPU、图形处理器GPU),也可以是专用处理器(例如人工智能处理器、科学计算处理器或数字信号处理器等),本公开对处理器的类型不作限制。存储设备200包括至少一个目标存储区域210,其中,目标存储区域210可以是数据的存储区域,如第一存储区域、第二存储区域、第三存储区域、第四存储区域等。可以理解,控制模块和/或处理模块可以通过执行读操作或者执行写操作来实现对某个目标存储区域210的访问,控制模块和/或处理模块执行针对某个目标存储区域210的读操作,可以是指控制模块和/或处理模块获取该目标存储区域210中的第一数据、第二数据、第三数据、第四数据、中间结果等数据。而控制模块和/或处理模块执行针对某个目标存储区域210的写操作,可以是指控制模块和/或处理模块将第四数据、中间结果等数据写入该目标存储区域210中。在相关技术中,由于控制模块可以并行执行多个操作,为了避免冲突,当操作判断子模块确定出控制模块和/或处理模块并行执行的多个操作都是针对某个目标存储区域210的操作时,操作判断子模块控制控制模块和/或处理模块将只执行该多个操作中的一个,同时阻塞其他操作,从而会导致控制模块和/或处理模块的效率降低。本公开提供的方法将目标存储区域210进一步划分为多个细粒度区域211,当操作判断子模块确定出控制模块和/或处理模块并行执行的多个操作都是针对某个目标存储区域210的操作时,操作判断子模块可以判断该多个操作针对的细粒度区域211是否重叠,如果各个操作针对的细粒度区域211不重叠,操作判断子模块就可控制控制模块和/或处理模块并行执行该多个操作,因此,大大提高了控制模块和/或处理模块的效率。需要说明的是,存储设备200可以设置在控制模块和/或处理模块内部(例如片上缓存或寄存器等),也可以设置在控制模块和/或处理模块的外部且可以与控制模块和/或处理模块进行数据通信(例如片下存储器等)。本公开对存储设备的类型不做限定。本公开所涉及的操作,可以是控制模块和/或处理模块硬件支持的基本操作,也可以是将该基本操作进行解析后的微指令(例如请求信号等)。本公开对操作的具体类型不做限定。本公开控制模块和/或处理模块可以并行执行两个操作,也可以并行执行两个以上的操作,本公开对并行执行的操作的数量不做限定。
在一种可能的实现方式中,控制模块11还可以包括操作判断子模块。
操作判断子模块,用于在所述控制模块或所述处理模块执行第一操作之前,判断是否存在针对所述第一操作所对应的目标存储区域的第二操作;
在存在所述第二操作时,判断所述第一操作当前所针对的目标存储区域中的第一细粒度区域与所述第二操作所针对的所述目标存储区域中的第二细粒度区域之间是否存在重叠;
在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,控制所述控制模块或所述处理模块执行所述第一操作,
其中,所述第一操作包括以下至少一项:从所述第一存储区域中读取第一数据、从所述第二存储区域中读取所述第二数据、从所述第三存储区域中读取第三数据、向所述第四存储区域中存储所述运算结果。
第一操作、第二操作可以是针对第一数据、第二数据、第三数据、第四数据、中间结果等数据的读操作或者写操作。目标存储区域可以是第一存储区域、第二存储区域、第三存储区域、第四存储区域等用存储方法中所涉及的数据的区域,本公开对此不作限制。
在一种可能的实现方式中,目标存储区域可包括至少一个细粒度区域。其中,细粒度区域的尺寸和/或数量的确定方式,可以包括根据硬件设计确定的方式、根据乘加运算策略、根据操作中相关参数进行定义的方式中的其中一种或任意组合。例如,根据硬件设计确定的方式,即在硬件设计时确定细粒度区域的尺寸,譬如确定目标存储区域的一行或多行为一个细粒度区域。根据乘加运算策略,例如第四数据为一个二维矩阵数据,其规模为M*Q(M,Q均为正整数),表示存储所占字节数,即一行M字节,共有Q行,可以确定M字节为一个细粒度区域,目标存储区域也即第四存储区域包括Q个细粒度区域。根据操作中相关参数进行定义的方式,包括根据操作中携带的细粒度的尺寸和/或数量,将目标存储区域划分为多个细粒度区域。需要说明的是,多个细粒度区域的尺寸可以相同,也可以不同。例如,各细粒度区域的数据位数可以分别为64位、256位、512位等。可以根据需求确定各细粒度区域的尺寸和/或数量。本公开对此不做限定。
在一种可能的实现方式中,可通过根据该目标存储区域的占用状态来判断是否存在正在进行的针对目标存储区域的第二操作。例如,可以通过查询占用状态列表来判断目标存储区域是否被占用,如被占用,则判断结果为存在正在进行的针对目标存储区域的第二操作。其中,该占用状态列表可以是预先设置并存储在存储设备上,也可以是在处理模块和控制模块开始执行某个任务之前生成,并在该任务完成之后注销。当各存储区域的占用状态发生变化时,处理模块和控制模块更新该占用状态列表的内容以记录各存储区域的占用状态。
在一种可能的实现方式中,可以通过查询各操作的执行状态来判断是否存在正在进行的针对目标存储区域的第二操作。例如,可以记录各操作的操作域所对应的存储区域,并记录各操作的执行状态。若针对目标存储区域的操作的执行状态为未完成,则判断结果为存在正在进行的针对目标操作区域的第二操作。还可以通过判断操作域的占用状态,来确定操作域对应的目标存储区域是否被占用,从而确定是否存在正在进行的针对目标存储区域的第二操作。本公开对判断是否存在正在进行的针对目标存储区域的第二操作的判断依据不做限定。
在一种可能的实现方式中,第二操作可以是针对数据的操作,第二操作所针对的数据可以与第一操作所针对的数据一致,则第二操作所针对的数据的存储区域与目标存储区域一致,当第二操作未完成时,存在针对目标存储区域的第二操作;或第二操作所针对的数据的存储区域与目标存储区域有重叠区域,当第二操作针对重叠区域进行操作时,则存在针对目标存储区域的第二操作。
在一种可能的实现方式中,在第一操作针对目标存储区域执行操作前,可判断是否存在正在进行的针对目标存储区域的第二操作。
在一种可能的实现方式中,在第一操作针对目标存储区域的执行过程中,也可以判断是否存在正在进行的针对目标存储区域的第二操作。
第一细粒度区域和第二细粒度区域可以为目标存储区域中多个细粒度区域中的任意细粒度区域。可以是将目标存储区域所在的整体存储区域进行细粒度的划分,则针对整体存储区域的各操作所针对的细粒度区域的尺寸一致。
也可以是各操作将所针对的存储区域按照各操作中携带的细粒度划分信息进行细粒度划分,则针对相同存储区域,不同的操作可以进行不同粒度的细粒度划分。第一细粒度区域可以是第一操作将目标存储区域划分为多个细粒度区域中的任意细粒度区域,第二细粒度区域可以是第二操作将其操作数所在的存储区域进行细粒度划分后得到的任意细粒度区域。第一细粒度区域与第二细粒度区域的尺寸可以不同。
例如,第一操作可以携带第一细粒度的尺寸(各细粒度区域的数据位数),并可以将该第一细粒度的尺寸设置为64位,而第二操作可以携带第二细粒度尺寸(例如各细粒度区域的数据位数),并可以将该第二细粒度的尺寸设置为256位。即在执行第一操作时,将每64位作为一个细粒度区域,而在执行第二操作时,每256位作为一个细粒度区域。又如,第一操作和第二操作所携带的细粒度尺寸(例如各细粒度区域的数据位数)均为512位。同样的,第一操作也可以携带第一细粒度的数量(例如设置为4个),而第二操作携带第二细粒度的数量(例如设置为8个)。即在执行第一操作时,将目标存储区域划分为4个细粒度区域,而在执行第二操作时,将目标存储区域划分为8个细粒度区域。可以理解,操作中还可以同时携带细粒度的尺寸、数量这两个参数。可以根据需求确定各细粒度区域的尺寸和/或数量,本公开对此不做限定。
可以理解的是,针对目标存储区域的操作,即为针对目标存储区域中各细粒度区域的操作。例如,目标存储区域A为第1行至第10行,每1行为一个细粒度区域,目标存储区域A包括10个细粒度区域。针对目标存储区域A的写操作可以看做针对此10个细粒度区域的写操作。其执行过程可以为,写第1个细粒度区域(第1行),第1个细粒度区域写完后写第2个细粒度区域(第2行),第2个细粒度区域写完后写第3个细粒度区域(第3行),以此类推,直至写完第10个细粒度区域(第10行),完成目标存储区域A的写操作。
当有针对目标存储区域的操作时,随着操作的执行,目标存储区域中的细粒度区域的状态,可以包括已***作完成状态、正在进行操作状态和未***作状态。操作当前所针对的细粒度区域的状态为正在进行操作状态。由此,当存在针对目标存储区域的操作时,可以认为是存在针对目标存储区域中的一个细粒度区域的操作,正在***作的细粒度区域,即为操作当前所针对的细粒度区域。
在一种可能的实现方式中,第一操作当前所针对的目标存储区域中的第一细粒度区域,可以包括将要执行的第一操作所针对的目标存储区域中的细粒度区域,通常为第一个细粒度区域。也可以包括正在执行的第一操作当前所针对的目标存储区域中的细粒度区域,可以为任意一个细粒度区域。第二操作当前所针对的目标存储区域中的第二细粒度区域,可以为正在执行的第二操作当前所针对的目标存储区域中的细粒度区域,可以为任意一个细粒度区域。
在一种可能的实现方式中,可根据物理地址、指针位置、细粒度区域标识等,来判断第一操作当前所针对的目标存储区域中的第一细粒度区域与第二操作当前所针对的目标存储区域中的第二细粒度区域之间是否重叠。例如,可记录各操作当前的物理地址,根据第一操作当前的物理地址以及第二操作当前的物理地址,以及物理地址与细粒度区域之间的对应关系,分别确定第一操作当前所针对的目标存储区域中的第一细粒度区域以及第二操作当前所针对的目标存储区域中的第二细粒度区域,进而判断第一细粒度区域与第二细粒度区域是否重叠。物理地址可以包括细粒度区域的起始地址、终止地址、设定位置的地址或实时操作地址中的一种或任意组合。再例如,可为各操作设置指针,指针指向操作当前所针对的细粒度区域。根据第一操作的指针位置和第二操作的指针位置,分别确定第一操作当前所针对的目标存储区域中的第一细粒度区域以及第二操作当前所针对的目标存储区域中的第二细粒度区域,进而判断第一细粒度区域与第二细粒度区域是否重叠。再例如,还可以为各细粒度区域设置标识,通过记录操作当前所针对的细粒度区域的标识来判断第一细粒度区域与第二细粒度区域是否重叠。标识可以包括字母、数字或符号的任意组合。还可以通过其他方式判断第一细粒度区域与第二细粒度区域是否重叠,本公开对第一细粒度区域与第二细粒度区域之间是否重叠的判断依据不作限制。
在一种可能的实现方式中,如果第一操作当前所针对的目标存储区域中的第一细粒度区域与第二操作当前所针对的目标存储区域中的第二细粒度区域不重叠,可以是第一细粒度区域是第二操作已经操作完成的细粒度区域,也可以是第二操作不需要进行操作的细粒度区域,此时执行第一操作不会对第二操作的操作过程及操作结果产生影响,可以执行第一操作。
根据本实施例,能够在存在针对第一操作所对应的目标存储区域的第二操作时,判断第一操作当前所针对的目标存储区域中的第一细粒度区域与第二操作当前针对的目标存储区域中的第二细粒度区域之间是否有重叠,在两者无重叠时,执行第一操作。这样,第一操作和第二操作当前操作的细粒度区域无重叠即可执行,使得第一操作和第二操作可以同时对目标存储区域进行操作,提高了处理器的处理效率。
在一种可能的实现方式中,所述方法还可包括:在所述第一细粒度区域与所述第二细粒度区域有重叠时,阻塞所述第一操作。
在一种可能的实现方式中,第一细粒度区域与第二细粒度区域有重叠,包括第一细粒度区域与第二细粒度区域完全重叠或部分重叠。第一细粒度区域与第二细粒度区域有重叠时,若执行第一操作,则第一操作针对重叠部分区域的操作,可以影响第二操作的执行导致第二操作的操作结果不准确,也可以影响第一操作的执行导致第一操作的操作结果不准确。此时,可阻塞第一操作,即暂停第一操作的执行,可以在第二操作对当前所针对的目标存储区域中的第二细粒度区域操作完成后,执行第一操作。即第一细粒度区域与第二细粒度区域不重叠时,执行第一操作。
在本实施例中,在第一细粒度区域与第二细粒度区域有重叠时,阻塞第一操作,能够避免由于各操作的细粒度区域的重叠而导致的操作错误、操作结果不准确,保证各操作的正确性。
图6a和图6b示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。如图6a和图6b所示,整体存储区域20中包括目标存储区域21,其中,目标存储区域21被划分为4个细粒度区域,依次为细粒度区域22、细粒度区域23、细粒度区域24和细粒度区域25。
如图6a所示,当前仅包括写操作,用写指针wp表示写操作当前所针对的目标存储区域21中的细粒度区域。在写操作刚开始时,写指针wp指向细粒度区域22,可首先判断是否存在正在进行的针对目标存储区域21的第二操作,如果判断结果为不存在第二操作,则开始对细粒度区域22进行写操作;当完成对细粒度区域22的写操作后,写指针wp增加,即wp++,并指向下一个细粒度区域23,进行同样的判断后,开始对细粒度区域23进行写操作;当完成对细粒度区域23的写操作后,写指针wp增加,指向下一个细粒度区域24,进行同样的判断后,开始对细粒度区域24进行写操作。
又如图6b所示,当前包括两个操作,读操作和写操作,其中读操作为第一操作,写操作为第二操作。并且使用写操作的写指针wp和读操作的读指针rp分别表示写操作和读操作当前所针对的细粒度区域。
在执行读操作(第一操作)时,判断是否存在正在进行的针对目标存储区域21的第二操作。经判断,当前存在正在进行的针对目标存储区域21的第二操作写操作,进一步判断读操作(第一操作)当前所针对的目标存储区域21中的第一细粒度区域(图6b中的细粒度区域22)与写操作(第二操作)当前所针对的目标存储区域21中的第二细粒度区域(图6b中的细粒度区域24)之间是否重叠,例如可根据细粒度区域的编号(22和24),或根据rp与wp之间的关系(rp=0,wp=2,rp<wp),确定出第一细粒度区域与第二细粒度区域之间不重叠,然后,可执行读操作(第一操作)。
当完成对细粒度区域22的读操作后,rp增加,即rp++,并指向下一个细粒度区域23,进行同样的判断后,第一操作开始对细粒度区域23进行操作;当完成对细粒度区域23的读操作后,rp增加并指向下一个细粒度区域24。在该情况下,继续判断第一细粒度区域与第二细粒度区域之间是否重叠,如果细粒度区域编号相同或指针rp=wp,即可判断第一操作当前所针对的目标存储区域21中的第一细粒度区域与第二操作当前所针对的目标存储区域21中的第二细粒度区域重叠,则第一操作不可执行,阻塞第一操作。当第二操作完成对细粒度区域24的操作后,wp增加,并指向下一个细粒度区域25时,细粒度区域的编号不同(24和25)或者指针rp<wp,可执行第一操作。
在一种可能的实现方式中,所述第一操作和所述第二操作中可至少一个操作为写操作。即,当对操作数的操作为写后读(第二操作为写操作,第一操作为读操作)、读后写(第二操作为读操作,第一操作为写操作)或者写后写(第二操作和第一操作均为写操作)时,可采用本公开实施例中的方法。
例如,如果第一操作为读操作,第二操作为写操作,第一操作需要读取的数据需要是第二操作写操作后的数据,第二操作所针对的目标存储区域中的第二细粒度区域的编号为8,则第一操作仅能够读取编号在8之前的细粒度区域的数据。也就是说,如果第一操作当前所针对的目标存储区域中的第一细粒度区域为编号1~7的细粒度区域中的任意一个,则可以执行第一操作。
在一种可能的实现方式中,如果第一操作和第二操作均为读操作,则第一操作和第二操作的细粒度区域之间的关系不会影响操作结果,可以采用本公开实施例中的方法,也可直接执行第一操作而不进行细粒度区域的判断。
在本实施例中,当第一操作和第二操作中的至少一个操作为写操作时,通过使用本公开实施例中的方法,通过将目标存储区域划分为一个或多个细粒度区域,并以细粒度区域为单位执行操作,可以使得读后写、写后读、写后写等操作既能够正确的执行,得到准确的执行结果,又可以减少操作之间的等待时间,提高处理器的执行效率。
在一种可能的实现方式中,所述细粒度区域的尺寸和/或数量可以是根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种确定的。
可以理解,确定所述细粒度区域的尺寸和/或数量可以是在操作生成前预先设定好的,也可以是每条操作生成时实时确定的。其中,在操作前预先设定好细粒度区域的尺寸和/或数量,可以包括根据预先设定好的预设长度的数据所在区域、预先设定好的预设维度的数据所在区域中的至少一种,确定细粒度区域的尺寸和/或数量。而预先设定好的设定长度的数据和预先设定好的预设维度的数据可以与各操作的操作数无关,也可以预先根据各操作的操作数综合确定,可以根据需求确定。而在每条操作生成时实时确定细粒度区域的尺寸和/或数量,可以包括根据各操作的操作数,确定设定长度的数据或设定维度的数据,即,可以根据各操作的操作数的不同,实时确定设定长度的数据所在区域、设定维数的数据所在区域中的至少一种,确定细粒度区域的尺寸和/或数量。
举例来说,可根据设定长度的数据所在区域的大小,确定细粒度区域的尺寸和/或数量。例如,可根据设定长度的数据所在目标存储区域的尺寸,来设定细粒度区域的尺寸,该区域可以为固定的位宽。例如,数据B是20*10*5的三维数据,其在目标存储区域的存储方式为40*25(即每行40位数据,共25行),则可将设定长度设定为40位,将目标存储区域的每1行设为一个细粒度区域;数据B的目标存储区域可划分为25个细粒度区域;也可将目标存储区域的每5行设为一个细粒度区域,数据B的目标存储区域可划分为5个细粒度区域。本公开对此不作限制。
可以理解的是,根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种,可以在目标存储区域中确定细粒度区域的尺寸和/或数量,也可以在目标存储区域所在的整体存储区域中确定细粒度区域的尺寸和/或数量,以及在整体存储区域中的其他区域确定细粒度区域的尺寸和/或数量。上述示例仅给出其中一种情况,本公开不限定根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种,确定细粒度区域的尺寸和/或数量的适用划分范围。
在一种可能的实现方式中,还可根据设定维数的数据所在区域的大小,确定细粒度区域的尺寸和/或数量。例如,数据C是20*10的二维数据,可根据设定维数为1维、长度为20的数据,将数据C的目标存储区域划分为10个细粒度区域。
此外,还可同时根据数据的目标存储区域中的设定长度的数据所在区域的大小和设定维度的数据所在区域的大小,确定细粒度区域的尺寸和/或数量。例如,针对数据C,可根据设定维数为2维、尺寸为4*2的数据来划分细粒度区域,从而将数据C的目标存储区域划分为25个细粒度区域。
应当理解,本领域技术人员可根据实际情况设定划分细粒度区域的尺寸和/或数量,本公开对此不作限制。
在本实施例中,通过根据设定长度的数据所在区域的大小和/或设定维度的数据所在区域的大小,来确定所述细粒度区域的尺寸和/或数量,可针对数据特性来完成对细粒度区域的划分,能够提高细粒度区域划分的灵活性,从而提高多操作的执行的效率,也可以使得细粒度区域的划分结果能够更加符合不同操作数的特性,从而适应不同类型操作数的处理需求,进一步提高多操作的整体执行效率。
在一种可能的实现方式中,所述细粒度区域的尺寸和/或数量可以是根据硬件计算能力、硬件带宽中的至少一种确定的。
其中,硬件计算能力可以是硬件在一个计算周期内并行处理的数据量,硬件带宽可以是数据传输能力,例如单位时间内传输的数据量。
举例来说,应用该处理器操作方法的处理器,其硬件计算能力为一个计算周期内并行处理100位数据,硬件带宽为单位时间内传输200位数据,对于大小为1000位的目标存储区域,可根据硬件计算能力将该目标存储区域划分为10个细粒度区域,其中,每个细粒度区域包括100位数据;也可根据硬件带宽将该目标存储区域划分为5个细粒度区域,其中,每个细粒度区域包括200位数据。
应该理解,硬件计算能力、硬件带宽可根据处理器硬件的不同而不同,本公开对硬件计算能力、硬件带宽不作限制。
可以理解的是,根据硬件计算能力、硬件带宽中的至少一种,可以在目标存储区域中确定细粒度区域的尺寸和/或数量,也可以在目标存储区域所在的整体存储区域中确定细粒度区域的尺寸和/或数量,以及在整体存储区域中的其他区域确定细粒度区域的尺寸和/或数量。上述示例仅给出其中一种情况,本公开不限定根据硬件计算能力、硬件带宽中的至少一种,确定细粒度区域的尺寸和/或数量的适用划分范围。
通过这种方式,可根据处理器的处理能力(硬件计算能力和/或硬件带宽)来确定所述细粒度区域的尺寸和/或数量,使得细粒度区域的划分结果更加符合不同硬件使用环境的需求,使得根据细粒度区域执行的操作与处理器的处理能力趋于同步,能够尽可能地发挥硬件的执行效率,从而提高处理器的处理效率。
在一种可能的实现方式中,所述第一操作可以为第一待执行指令中的操作,所述第二操作可以为第二待执行指令中的操作,所述第二待执行指令为指令队列中在所述第一待执行指令之前的待执行指令。
在本实施例中,第一操作和第二操作可以是不同指令中的操作,利用本公开实施例中的方法,可以提高指令执行效率。
在一种可能的实现方式中,第一操作和第二操作也可以为同一待执行指令(如乘加指令)中的两个操作,第二操作可以与第一操作无关,或者第二操作可以基于第一操作的结果。
在一种可能的实现方式中,目标存储区域中可包括一个或多个非可操作区域、也可包括连续或不连续的非可操作区域。
在一种可能的实现方式中,目标存储区域中可包括一个或多个可操作区域、也可包括连续或不连续的可操作区域。本公开对此不做限定。
在一种可能的实现方式中,在第一操作所对应的目标存储区域,然后判断是否存在正在进行的针对目标存储区域的第二操作;当存在第二操作时,判断第一操作所针对的目标存储区域中的第一细粒度区域是否位于可操作区域内;当存在第二操作,且第一操作所针对的目标存储区域中的第一细粒度区域位于可操作区域内时,然后再判断第一操作所针对的目标存储区域中的第一细粒度区域与第二操作所针对的目标存储区域中的第二细粒度区域之间是否有重叠;当第一细粒度区域与第二细粒度区域之间没有重叠时,执行第一操作。
在一种可能的实现方式中,所述非可操作区域可以包括禁止操作区域和非禁止操作区域。如果第一操作为写操作,当第一操作所对应的数据中的部分数据不可修改时,可将该部分数据所在的存储区域设定为禁止操作区域,以避免误修改该部分数据;如果正在进行的第二操作为读取第一操作之前的数据的读操作(读后写),则可将第二操作所在的一个或多个细粒度区域设定为非禁止操作区域,当第二操作完成对非禁止操作区域的读取后,可将该非禁止操作区域变更为可操作区域。本公开对非可操作区域的分类及划分方式不作限制。
在本实施例中,可先判断第一操作的细粒度区域是否可操作,再判断不同操作的细粒度区域之间的关系,一方面提高了判断的效率,另一方面可以对指定数据进行保护以防止有误操作发生,也可以对指定的空间禁止读写,从而预留出该空间,用于执行其他操作,进一步提高了处理器在执行细粒度同步时的灵活性。
在一种可能的实现方式中,所述非可操作区域可以为包括所述第二细粒度区域在内的多个细粒度区域,且所述第二细粒度区域在所述非可操作区域内的位置随所述第二操作的操作位置更新,所述方法还可包括:当所述第二操作所针对的所述目标存储区域中的第二细粒度区域移出所述非可操作区域后,更新所述非可操作区域的位置。
也就是说,包括第二细粒度区域在内的多个细粒度区域的非可操作区域,可以不随第二操作所针对的目标存储区域中的第二细粒度区域的更新而更新,当第二操作所针对的目标存储区域中的第二细粒度区域移出非可操作区域后,更新非可操作区域的位置。例如,非可操作区域可以为包括所述第二细粒度区域在内的R个细粒度区域(R为大于1的整数),当前的非可操作区域包括第2至第2+R-1个细粒度区域。当第二操作在非可操作区域内执行完R个细粒度区域后,移出非可操作区域,则非可操作区域的位置随着第二操作所针对的细粒度区域的位置进行更新,更新后的非可操作区域包括第2+R个至2+R+R-1个细粒度区域。其中,R的大小可以根据需求任意确定。
图7a和图7b示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。如图7a所示,目标存储区域30包括8个细粒度区域,其中,可操作区域包括5个细粒度区域(细粒度区域31、细粒度区域35、细粒度区域36、细粒度区域37和细粒度区域38),非可操作区域M0包括3个细粒度区域(细粒度区域32、细粒度区域33和细粒度区域34)。其中,第二操作当前所针对的目标存储区域30中的第二细粒度区域为细粒度区域32。
当第二操作执行完对细粒度区域32的操作后,第二操作当前所针对的目标存储区域30中的第二细粒度区域为细粒度区域33,此时,第二操作当前所针对的目标存储区域30中的第二细粒度区域(细粒度区域33)未移出非可操作区域,不更新非可操作区域的位置;当第二操作执行完对细粒度区域33的操作后,第二操作当前所针对的目标存储区域30中的第二细粒度区域为细粒度区域34,此时,第二操作当前所针对的目标存储区域30中的第二细粒度区域(细粒度区域34)还未移出非可操作区域,不更新非可操作区域的位置;当第二操作执行完对细粒度区域34的操作后,第二操作当前所针对的目标存储区域30中的第二细粒度区域为细粒度区域35,此时,第二操作当前所针对的目标存储区域30中的第二细粒度区域(细粒度区域35)已移出非可操作区域,更新非可操作区域的位置到细粒度区域35、36和37)。需要说明的是,本公开对非可操作区域的大小不做限定。
如图7b所示,更新非可操作区域的位置后,在目标存储区域30中,可操作区域包括5个细粒度区域(细粒度区域31、细粒度区域32、细粒度区域33、细粒度区域34和细粒度区域38),非可操作区域M0包括3个细粒度区域(细粒度区域35、细粒度区域36和细粒度区域37)。
通过这种方式,不需要实时更新非可操作区域的位置,能够降低更新非可操作区域所产生的开销。
在一种可能的实现方式中,所述非可操作区域可以为包括所述第二细粒度区域在内的多个细粒度区域,且所述第二细粒度区域位于所述非可操作区域内的设定位置,所述非可操作区域的位置随所述第二操作的操作位置更新。
也就是说,当非可操作区域为包括所述第二细粒度区域在内的多个细粒度区域时,可以设定第二细粒度区域在非可操作区域中的位置(例如中间位置、最后位置等),非可操作区域的位置随第二操作的操作位置而更新。例如,非可操作区域可以为包括所述第二细粒度区域在内的R个细粒度区域,当前的非可操作区域包括第2至第2+R-1个细粒度区域,第二细粒度区域在非可操作区域内的设定位置为第S个(其中S≤R)。当第二操作执行完成对当前所针对的细粒度区域的操作后,第二操作开始执行针对下一个细粒度区域的操作,此时,非可操作区域的位置随第二操作的操作位置而更新,更新后的非可操作区域包括第2+1至第2+R个细粒度区域。其中,R的大小及S的取值可根据需求确定。本公开对非可操作区域包括的细粒度区域的数量、第二细粒度区域位于非可操作区域内的位置均不作限制。
图8a和图8b示出根据本公开实施例的乘加指令处理装置的应用场景的示意图。如图8a所示,目标存储区域40中包括8个细粒度区域,其中,可操作区域包括5个细粒度区域(细粒度区域41、细粒度区域45、细粒度区域46、细粒度区域47和细粒度区域48),非可操作区域M1包括3个细粒度区域(细粒度区域42、细粒度区域43和细粒度区域44)。其中,第二操作当前所针对的目标存储区域40中的第二细粒度区域设定为位于非可操作区域M1的第二个细粒度区域,即细粒度区域43。
当第二操作执行完对细粒度区域43的操作后,第二操作当前所针对的目标存储区域40中的第二细粒度区域为细粒度区域44,此时,非可操作区域的位置随第二操作的操作位置而更新,以使第二操作当前所针对的目标存储区域40中的第二细粒度区域位于非可操作区域M1的第二个细粒度区域。
如图8b所示,更新非可操作区域的位置后,在目标存储区域40中,可操作区域包括5个细粒度区域(细粒度区域41、细粒度区域42、细粒度区域46、细粒度区域47和细粒度区域48),非可操作区域M1包括3个细粒度区域(细粒度区域43、细粒度区域44和细粒度区域45)。
通过这种方式,能够实时更新非可操作区域的位置,提高细粒度处理的同步程度,从而进一步提高数据同步处理的效率。
在一种可能的实现方式中,所述目标存储区域可包括:循环缓冲存储区域。所述循环缓冲存储区域可用于循环存储数据。
图9示出根据本公开实施例的乘加指令处理装置的循环缓冲存储区域的示意图。如图9所示,目标存储区域50中包括循环缓冲存储区域51,其地址为start_addr~end_addr。
例如,第二操作为写操作,可将操作数写入循环缓冲存储区域51,其地址指针point从start_addr开始,依次向下存储数据,直到end_addr,即占满循环缓冲存储区域51的存储空间,此时,地址指针point跳回到start_addr,判断该地址是否被所需同步的第一操作使用完毕,如果使用完毕,则将数据存储到该地址,覆盖原有数据,之后地址指针point依次向下移动,直到end_addr,此时,可重新覆盖数据,循环上述过程。
在本实施例中,采用循环缓冲存储区域来存储数据,既可节省数据存储空间,也可提高存储空间利用率。
在一种可能的实现方式中,可将循环缓冲存储区域划分为多个细粒度区域。对于每个细粒度区域,可通过列表或标志位或其他方式来对细粒度区域中的数据是否可覆盖进行管理,例如,可设置覆盖标志位来表示细粒度区域中的数据是否可覆盖。
举例来说,第一操作为读操作,第二操作为写操作,即先写后读,可使用写指针wp和读指针rp分别表示第二操作和第一操作当前所针对的细粒度区域。在第二操作当前所针对的第二细粒度区域的覆盖标志位为可覆盖时,可执行第二操作,写入数据,数据写入完成后,将该第二细粒度区域的覆盖标志位设为不可覆盖,wp++,第二操作当前所针对的第二细粒度区域为下一个细粒度区域,如果wp>end_addr,则wp=start_addr;在第一操作当前所针对的第一细粒度区域与第二细粒度区域之间不重叠,且第一细粒度区域的覆盖标志位为不可覆盖时,可执行第一操作,读取数据,数据读取完成后,将该第一细粒度区域的覆盖标志位设为可覆盖,rp++,第一操作当前所针对的第一细粒度区域为下一个细粒度区域,如果rp>end_addr,则rp=start_addr;在第一细粒度区域与第二细粒度区域有重叠,即rp=wp时,则不可执行第一操作,需等待第二操作完成对当前所针对的第二细粒度区域的操作后,可执行第一操作。
在本实施例中,将循环缓冲存取区域划分为多个细粒度区域,使得多个操作可同时对循环缓冲存储区域进行操作,从而提高处理效率。
在一种可能的实现方式中,所述细粒度区域可包括状态标识,所述状态标识可包括操作所述细粒度区域的操作已完成状态或操作未完成状态。其中,在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,判断所述第一细粒度区域的状态标识是否为操作已完成状态;若是,则执行所述第一操作。
在一种可能的实现方式中,细粒度区域可包括状态标识,状态标识可包括操作细粒度区域的操作已完成状态或操作未完成状态。例如,状态标识可使用0和1来表示,其中,0表示操作细粒度区域的操作未完成状态,1表示操作细粒度区域的操作已完成状态,或者0表示操作细粒度区域的操作已完成状态,1表示操作细粒度区域的操作未完成状态。本公开对状态标识的表示方式不作限制。
在一种可能的实现方式中,第二操作可将目标存储区域中已操作完成的细粒度区域的状态标识设置为操作已完成状态,未操作或正在操作的细粒度区域的状态标识设置为操作未完成状态。也可将已操作完成的细粒度区域中的部分细粒度区域的状态标识设置为操作已完成状态,其他细粒度区域设置为操作未完成状态。例如,第二操作已操作完成5个细粒度区域,可将前3个细粒度区域的状态标识设置为操作已完成状态,其他细粒度区域设置为操作未完成状态。
在一种可能的实现方式中,在存在正在进行的针对目标存储区域的第二操作时,对于第一操作当前所针对的第一细粒度区域与第二操作当前所针对的第二细粒度区域,可在确定第一细粒度区域与第二细粒度区域之间不重叠后,判断第一细粒度区域的状态标识是否为操作已完成状态;如果第一细粒度区域的状态标识为操作已完成状态,可执行第一操作。
在本实施例中,细粒度区域包括状态标识,在第一细粒度区域与第二细粒度区域之间不重叠时,根据第一细粒度区域的状态标识,确定第一操作是否可执行,可在提高处理效率的同时,提高数据处理的正确性。
在一种可能的实现方式中,所述细粒度区域可包括状态标识,所述状态标识可包括操作所述细粒度区域的操作已完成状态或操作未完成状态。其中,判断所述第一细粒度区域的状态标识是否为操作已完成状态;若是,则在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,执行所述第一操作。
也就是说,在存在正在进行的针对目标存储区域的第二操作时,对于第一操作当前所针对的第一细粒度区域与第二操作当前所针对的第二细粒度区域,可在确定第一细粒度区域的状态标识为操作已完成状态后,根据第一细粒度区域与第二细粒度区域之间重叠关系,确定第一操作是否可执行。在第一细粒度区域与第二细粒度区域之间不重叠时,可执行第一操作。
在本实施例中,细粒度区域包括状态标识,可在确定第一细粒度区域的状态标识为操作已完成状态后,根据第一细粒度区域与第二细粒度区域之间重叠关系,确定第一操作是否可执行,可在提高数据处理的正确性同时,提高处理器的处理效率。
在一种可能的实现方式中,所述第二操作和所述第一操作为针对同一数据的操作。也就是说,第二操作和第一操作的存储区域均为目标存储区域,完全重叠。可将数据的目标存储区域划分为多个细粒度区域后,根据本公开实施例中的方法,可以使得操作相同数据的两个操作并行执行而不影响各操作的执行结果。
在一种可能的实现方式中,所述方法还可包括:将目标存储区域所在的整体存储区域划分为多个细粒度区域。
在一种可能的实现方式中,目标存储区域可以为存储装置的整体存储区域中的部分存储区域或全部存储区域,所述整体存储区域包括预设的多个细粒度区域。
例如目标存储区域所在的整体存储区域为RAM1,RAM1可以包括预先设定m个细粒度区域(m为正整数)。目标存储区域在RAM1中可以占据RAM1中的n个细粒度区域(n为正整数,且n<=m)。需要说明的是,目标存储区域也可以包括某细粒度区域中的部分区域。在如上示例的RAM1中,假设每个细粒度区域为整体存储区域RAM1中的一行,每行为100比特。目标存储区域可以包括前面(n-1)个完整的细粒度区域,并且又包括最后一个细粒度区域的部分区域,例如为RAM1中第n行(第n个细粒度区域)中的前80个比特。
在一种可能的实现方式中,当将存储装置的整体存储区域划分为多个细粒度区域时,针对整体存储区域中任意目标存储区域的任意操作,且无论是第一操作所针对的数据的目标存储区域,还是第二操作的存储区域与目标存储区域的重叠区域,都可以根据整体存储区域的细粒度划分结果,确定目标存储区域或重叠区域中的细粒度区域。任意操作的任意操作数在整体存储区域的中存储区域,具有相同尺寸的细粒度区域。
在一种可能的实现方式中,可以根据存储装置的硬件特性,确定整体存储区域的细粒度区域的尺寸和/或数量,即可以根据存储装置的硬件计算能力、硬件带宽中的至少一种,确定整体存储区域的细粒度区域的尺寸和/或数量。
在本实施例中,将目标存储区域所在的整体存储区域划分为多个细粒度区域,针对整体存储区域中任意目标存储区域的任意操作,都可以按照相同的细粒度尺寸执行,不同操作按照本公开实施例中的方法并行时,可以更加方便地同步,提高操作并行度,进而提高处理器的处理效率。
在一种可能的实现方式中,所述方法还可包括:
根据第一操作中携带的第一细粒度划分信息,将所述目标存储区域划分为多个细粒度区域,及
根据第二操作中携带的第二细粒度划分信息,将所述第二操作的操作数的存储区域划分为多个细粒度区域。
在一种可能的实现方式中,可以在操作中携带细粒度划分信息,细粒度划分信息可以包括细粒度的尺寸和/或数量。不同的操作可以携带不同的细粒度划分信息。相同类型的操作可携带相同的细粒度划分信息。可在操作中操作数的设定位置携带细粒度划分信息,也可在操作码或操作数中携带是否进行细粒度划分的标识信息。本公开对细粒度划分信息中的内容及表现方式不做限定。
在一种可能的实现方式中,根据第一操作中携带的第一细粒度划分信息,将目标存储区域划分为多个第一细粒度区域。第一操作所针对的数据所在的整体存储区域中的其他区域,可不进行细粒度的划分,也可按照其他操作携带的细粒度划分信息,进行细粒度的划分。本公开对此不做限定。
可以理解的是,第一细粒度划分信息和第二细粒度划分信息可以一致,也可以不一致。当第一细粒度划分信息和第二细粒度划分信息不一致时,目标存储区域可同时按照第二细粒度划分信息进行细粒度划分。即,针对目标存储区域,不同的操作可以将其划分为不同尺寸或数量的多个细粒度区域。此时,可根据第一操作当前所针对的目标存储区域中的第一细粒度区域的物理地址,以及第二操作当前所述针对的目标存储区域中的第二细粒度区域之间的物理地址,判断第一细粒度区域与第二细粒度区域是否重叠,并根据判断结果进行第一操作和第二操作的并行执行。
在一种可能的实现方式中,各操作中携带的细粒度划分信息,可包括根据设定长度的操作数据所在区域、设定维数的操作数所在区域中的至少一种,确定出的所述细粒度区域的尺寸和/或数量,使得细粒度的划分结果更加符合操作中操作数的类型或属性。
在本实施例中,根据第一操作中携带的第一细粒度划分信息,将目标存储区域划分为多个细粒度区域,及根据第二操作中携带的第二细粒度划分信息,将第二操作的的存储区域划分为多个细粒度区域。根据操作中携带的细粒度划分信息进行细粒度的划分,可使得细粒度的划分结果,更加符合各操作的处理需求,操作并行更加灵活。
应当理解,本领域技术人员可以根据实际情况将目标存储区域进行细粒度区域的划分与设置,本公开对此不作限制。
需要说明的是,尽管以上述实施例作为示例介绍了乘加指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图10示出根据本公开一实施例的乘加指令处理方法的流程图。如图10所示,该方法应用于上述乘加指令处理装置,该方法包括步骤S51和步骤S52。
在步骤S51中,对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
在步骤S52中,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域以及所述第四存储区域。
在一种可能的实现方式中,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,包括:
根据所述乘加运算策略从所述第一数据、所述第二数据和所述第三数据中确定出先运算数据、后运算数据、运算处理顺序和运算对应关系;
根据所述运算对应关系和运算处理顺序对所述先运算数据进行第一运算处理,得到中间结果;
根据所述运算对应关系和运算处理顺序对所述中间结果与所述后运算数据进行第二运算处理,得到所述运算结果,
其中,所述第一运算处理为乘法运算处理或加法运算处理,所述第二运算处理为所述乘法运算处理或加法运算处理,所述第一运算处理与所述第二运算处理不同。
在一种可能的实现方式中,所述操作域中包括所述乘加运算策略。
在一种可能的实现方式中,所述操作码还用于指示所述乘加运算策略。
在一种可能的实现方式中,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,包括:
利用至少一个乘法器执行所述乘加运算处理中的乘法运算处理;
利用至少一个加法器执行所述乘加运算处理中的加法运算处理。
在一种可能的实现方式中,所述操作码中包含先处理标识,或者所述操作域中包括所述先处理标识,所述方法还包括:
确定与所述先处理标识相对应的处理操作和对应的待处理数据,待处理数据包括所述第一数据、所述第二数据和所述第三数据中的至少一个;
在对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理之前,根据与所述先处理标识相对应的处理操作对对应的待处理数据进行先处理。
在一种可能的实现方式中,所述操作码中包含后处理标识,或者所述操作域中包括所述后处理标识,所述方法还包括:
确定与所述后处理标识相对应的处理操作;
根据与所述后处理标识相对应的处理操作对运算结果进行后处理,并将后处理后的运算结果存入所述第四存储区域。
在一种可能的实现方式中,处理操作包括以下至少一种:数据格式转换处理和数据运算处理,
所述数据格式转换处理包括以下至少一种:浮点数转换处理、定点数转换处理、浮定点数转换处理,
所述数据运算处理包括以下至少一种:三角函数运算处理、反三角函数运算处理、取对数运算处理、取指数运算处理、取最大值运算处理、取最小值运算处理、卷积运算处理、池化运算处理、全连接运算处理和激活运算处理。
在一种可能的实现方式中,所述方法还包括:
在第一操作之前,判断是否存在针对所述第一操作所对应的目标存储区域的第二操作;
在存在所述第二操作时,判断所述第一操作当前所针对的目标存储区域中的第一细粒度区域与所述第二操作所针对的所述目标存储区域中的第二细粒度区域之间是否存在重叠;
在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,控制执行所述第一操作,
其中,所述第一操作包括以下至少一项:从所述第一存储区域中读取第一数据、从所述第二存储区域中读取所述第二数据、从所述第三存储区域中读取第三数据、向所述第四存储区域中存储所述运算结果。
在一种可能的实现方式中,所述方法还包括:
在所述第一细粒度区域与所述第二细粒度区域之间有重叠时,阻塞所述第一操作。
在一种可能的实现方式中,所述第一操作和所述第二操作中的至少一个操作为写操作。
在一种可能的实现方式中,所述细粒度区域的尺寸和/或数量是根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种确定的。
在一种可能的实现方式中,所述细粒度区域的尺寸和/或数量是根据硬件计算能力、硬件带宽中的至少一种确定的。
在一种可能的实现方式中,所述方法还包括:
存储所述第一数据、所述第二数据和所述第三数据。
在一种可能的实现方式中,对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,包括:
存储所述乘加指令;
对所述乘加指令进行解析,得到所述乘加指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述乘加指令。
在一种可能的实现方式中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在依赖关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在依赖关系包括:
存储所述第一待执行指令所需数据的存储区域与存储所述第零待执行指令所需数据的存储区域之间具有重叠的区域。
本公开实施例所提供的乘加指令处理方法,通过一条乘加指令就可以实现多个数据之间的乘加运算处理,与相关技术中需要通过至少两条指令实现数据的乘加运算处理的过程相比,对数据进行乘加运算的处理效率高、处理速度快、且适用范围广。
需要说明的是,尽管以上述实施例作为示例介绍了乘加指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
本公开实施例所提供的乘加指令处理方法,通过一条乘加指令就可以实现多个数据之间的乘加运算处理,与相关技术中需要通过至少两条指令实现数据的乘加运算处理的过程相比,对数据进行乘加运算的处理效率高、处理速度快、且适用范围广。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的实施例中,应该理解到,所揭露的***、装置,可通过其它的方式实现。例如,以上所描述的***、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
为便于理解本公开的技术方案提供以下条款:
条款A1、一种乘加指令处理装置,所述装置包括:
控制模块,用于对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
处理模块,用于根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域以及所述第四存储区域。
条款A2、根据条款A1所述的装置,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,包括:
根据所述乘加运算策略从所述第一数据、所述第二数据和所述第三数据中确定出先运算数据、后运算数据、运算处理顺序和运算对应关系;
根据所述运算对应关系和运算处理顺序对所述先运算数据进行第一运算处理,得到中间结果;
根据所述运算对应关系和运算处理顺序对所述中间结果与所述后运算数据进行第二运算处理,得到所述运算结果,
其中,所述第一运算处理为乘法运算处理或加法运算处理,所述第二运算处理为所述乘法运算处理或加法运算处理,所述第一运算处理与所述第二运算处理不同。
条款A3、根据条款A1所述的装置,所述操作域中包括所述乘加运算策略。
条款A4、根据条款A1所述的装置,所述操作码还用于指示所述乘加运算策略。
条款A5、根据条款A1所述的装置,所述处理模块包括至少一个加法器和至少一个乘法器,
其中,每个乘法器,用于执行所述乘加运算处理中的乘法运算处理;
每个加法器,用于执行所述乘加运算处理中的加法运算处理。
条款A6、根据条款A1所述的装置,所述操作码中包含先处理标识,或者所述操作域中包括所述先处理标识,
其中,所述控制模块,还用于确定与所述先处理标识相对应的处理操作和对应的待处理数据,待处理数据包括所述第一数据、所述第二数据和所述第三数据中的至少一个;
所述处理模块,还用于在对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理之前,根据与所述先处理标识相对应的处理操作对对应的待处理数据进行先处理。
条款A7、根据条款A1所述的装置,所述操作码中包含后处理标识,或者所述操作域中包括所述后处理标识,
其中,所述控制模块,还用于确定与所述后处理标识相对应的处理操作;
所述处理模块,还用于根据与所述后处理标识相对应的处理操作对运算结果进行后处理,并将后处理后的运算结果存入所述第四存储区域。
条款A8、根据条款A6或条款A7所述的装置,处理操作包括以下至少一种:数据格式转换处理和数据运算处理,
所述数据格式转换处理包括以下至少一种:浮点数转换处理、定点数转换处理、浮定点数转换处理,
所述数据运算处理包括以下至少一种:三角函数运算处理、反三角函数运算处理、取对数运算处理、取指数运算处理、取最大值运算处理、取最小值运算处理、卷积运算处理、池化运算处理、全连接运算处理和激活运算处理。
条款A9、根据条款A1所述的装置,所述控制模块,包括:
操作判断子模块,用于在所述控制模块或所述处理模块执行第一操作之前,判断是否存在针对所述第一操作所对应的目标存储区域的第二操作;
在存在所述第二操作时,判断所述第一操作当前所针对的目标存储区域中的第一细粒度区域与所述第二操作所针对的所述目标存储区域中的第二细粒度区域之间是否存在重叠;
在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,控制所述控制模块或所述处理模块执行所述第一操作,
其中,所述第一操作包括以下至少一项:从所述第一存储区域中读取第一数据、从所述第二存储区域中读取所述第二数据、从所述第三存储区域中读取第三数据、向所述第四存储区域中存储所述运算结果。
条款A10、根据条款A9所述的装置,
所述操作判断子模块,还用于在所述第一细粒度区域与所述第二细粒度区域之间有重叠时,阻塞所述第一操作。
条款A11、根据条款A9所述的装置,所述第一操作和所述第二操作中的至少一个操作为写操作。
条款A12、根据条款A9所述的装置,所述细粒度区域的尺寸和/或数量是根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种确定的。
条款A13、根据条款A9所述的装置,所述细粒度区域的尺寸和/或数量是根据硬件计算能力、硬件带宽中的至少一种确定的。
条款A14、根据条款A1所述的装置,所述装置还包括:
存储模块,用于存储所述第一数据、所述第二数据和所述第三数据。
条款A15、根据条款A1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述乘加指令;
指令处理子模块,用于对所述乘加指令进行解析,得到所述乘加指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述乘加指令,
其中,所述控制模块,还包括:
第一依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的存储区域与存储所述第零待执行指令所需数据的存储区域之间具有重叠的区域。
条款A16、一种机器学习运算装置,所述装置包括:
一个或多个如条款A1-条款A15任一项所述的乘加指令处理装置,用于从其他处理装置中获取待处理张量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述乘加指令处理装置时,所述多个所述乘加指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述乘加指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘加指令处理装置共享同一控制***或拥有各自的控制***;多个所述乘加指令处理装置共享内存或者拥有各自的内存;多个所述乘加指令处理装置的互联方式是任意互联拓扑。
条款A17、一种组合处理装置,所述组合处理装置包括:
如条款A16所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款A18、一种机器学习芯片,所述机器学习芯片包括:
如条款A16所述的机器学习运算装置或如条款A13所述的组合处理装置。
条款A19、一种电子设备,所述电子设备包括:
如条款A18所述的机器学习芯片。
条款A20、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A18所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款A21、一种乘加指令处理方法,所述方法包括:
对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域以及所述第四存储区域。
条款A22、根据条款A21所述的方法,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,包括:
根据所述乘加运算策略从所述第一数据、所述第二数据和所述第三数据中确定出先运算数据、后运算数据、运算处理顺序和运算对应关系;
根据所述运算对应关系和运算处理顺序对所述先运算数据进行第一运算处理,得到中间结果;
根据所述运算对应关系和运算处理顺序对所述中间结果与所述后运算数据进行第二运算处理,得到所述运算结果,
其中,所述第一运算处理为乘法运算处理或加法运算处理,所述第二运算处理为所述乘法运算处理或加法运算处理,所述第一运算处理与所述第二运算处理不同。
条款A23、根据条款A21所述的方法,所述操作域中包括所述乘加运算策略。
条款A24、根据条款A21述的方法,所述操作码还用于指示所述乘加运算策略。
条款A25、根据条款A21所述的方法,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,包括:
利用至少一个乘法器执行所述乘加运算处理中的乘法运算处理;
利用至少一个加法器执行所述乘加运算处理中的加法运算处理。
条款A26、根据条款A21所述的方法,所述操作码中包含先处理标识,或者所述操作域中包括所述先处理标识,所述方法还包括:
确定与所述先处理标识相对应的处理操作和对应的待处理数据,待处理数据包括所述第一数据、所述第二数据和所述第三数据中的至少一个;
在对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理之前,根据与所述先处理标识相对应的处理操作对对应的待处理数据进行先处理。
条款A27、根据条款A21所述的方法,所述操作码中包含后处理标识,或者所述操作域中包括所述后处理标识,所述方法还包括:
确定与所述后处理标识相对应的处理操作;
根据与所述后处理标识相对应的处理操作对运算结果进行后处理,并将后处理后的运算结果存入所述第四存储区域。
条款A28、根据条款A26或条款A 27所述的方法,处理操作包括以下至少一种:数据格式转换处理和数据运算处理,
所述数据格式转换处理包括以下至少一种:浮点数转换处理、定点数转换处理、浮定点数转换处理,
所述数据运算处理包括以下至少一种:三角函数运算处理、反三角函数运算处理、取对数运算处理、取指数运算处理、取最大值运算处理、取最小值运算处理、卷积运算处理、池化运算处理、全连接运算处理和激活运算处理。
条款A29、根据条款A21所述的方法,所述方法还包括:
在第一操作之前,判断是否存在针对所述第一操作所对应的目标存储区域的第二操作;
在存在所述第二操作时,判断所述第一操作当前所针对的目标存储区域中的第一细粒度区域与所述第二操作所针对的所述目标存储区域中的第二细粒度区域之间是否存在重叠;
在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,控制执行所述第一操作,
其中,所述第一操作包括以下至少一项:从所述第一存储区域中读取第一数据、从所述第二存储区域中读取所述第二数据、从所述第三存储区域中读取第三数据、向所述第四存储区域中存储所述运算结果。
条款A30、根据条款A29所述的方法,所述方法还包括:
在所述第一细粒度区域与所述第二细粒度区域之间有重叠时,阻塞所述第一操作。
条款A 31、根据条款A29所述的方法,所述第一操作和所述第二操作中的至少一个操作为写操作。
条款A32、根据条款A29所述的方法,所述细粒度区域的尺寸和/或数量是根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种确定的。
条款A 33、根据条款A29所述的方法,所述细粒度区域的尺寸和/或数量是根据硬件计算能力、硬件带宽中的至少一种确定的。
条款A 34、根据条款A21所述的方法,所述方法还包括:
存储所述第一数据、所述第二数据和所述第三数据。
条款A 35、根据条款A21所述的方法,对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,包括:
存储所述乘加指令;
对所述乘加指令进行解析,得到所述乘加指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述乘加指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在依赖关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在依赖关系包括:
存储所述第一待执行指令所需数据的存储区域与存储所述第零待执行指令所需数据的存储区域之间具有重叠的区域。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (35)

1.一种乘加指令处理装置,其特征在于,所述装置包括:
控制模块,用于对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
处理模块,用于根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域以及所述第四存储区域。
2.根据权利要求1所述的装置,其特征在于,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,包括:
根据所述乘加运算策略从所述第一数据、所述第二数据和所述第三数据中确定出先运算数据、后运算数据、运算处理顺序和运算对应关系;
根据所述运算对应关系和运算处理顺序对所述先运算数据进行第一运算处理,得到中间结果;
根据所述运算对应关系和运算处理顺序对所述中间结果与所述后运算数据进行第二运算处理,得到所述运算结果,
其中,所述第一运算处理为乘法运算处理或加法运算处理,所述第二运算处理为所述乘法运算处理或加法运算处理,所述第一运算处理与所述第二运算处理不同。
3.根据权利要求1所述的装置,其特征在于,所述操作域中包括所述乘加运算策略。
4.根据权利要求1所述的装置,其特征在于,所述操作码还用于指示所述乘加运算策略。
5.根据权利要求1所述的装置,其特征在于,所述处理模块包括至少一个加法器和至少一个乘法器,
其中,每个乘法器,用于执行所述乘加运算处理中的乘法运算处理;
每个加法器,用于执行所述乘加运算处理中的加法运算处理。
6.根据权利要求1所述的装置,其特征在于,所述操作码中包含先处理标识,或者所述操作域中包括所述先处理标识,
其中,所述控制模块,还用于确定与所述先处理标识相对应的处理操作和对应的待处理数据,待处理数据包括所述第一数据、所述第二数据和所述第三数据中的至少一个;
所述处理模块,还用于在对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理之前,根据与所述先处理标识相对应的处理操作对对应的待处理数据进行先处理。
7.根据权利要求1所述的装置,其特征在于,所述操作码中包含后处理标识,或者所述操作域中包括所述后处理标识,
其中,所述控制模块,还用于确定与所述后处理标识相对应的处理操作;
所述处理模块,还用于根据与所述后处理标识相对应的处理操作对运算结果进行后处理,并将后处理后的运算结果存入所述第四存储区域。
8.根据权利要求6或7所述的装置,其特征在于,处理操作包括以下至少一种:数据格式转换处理和数据运算处理,
所述数据格式转换处理包括以下至少一种:浮点数转换处理、定点数转换处理、浮定点数转换处理,
所述数据运算处理包括以下至少一种:三角函数运算处理、反三角函数运算处理、取对数运算处理、取指数运算处理、取最大值运算处理、取最小值运算处理、卷积运算处理、池化运算处理、全连接运算处理和激活运算处理。
9.根据权利要求1所述的装置,其特征在于,所述控制模块,包括:
操作判断子模块,用于在所述控制模块或所述处理模块执行第一操作之前,判断是否存在针对所述第一操作所对应的目标存储区域的第二操作;
在存在所述第二操作时,判断所述第一操作当前所针对的目标存储区域中的第一细粒度区域与所述第二操作所针对的所述目标存储区域中的第二细粒度区域之间是否存在重叠;
在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,控制所述控制模块或所述处理模块执行所述第一操作,
其中,所述第一操作包括以下至少一项:从所述第一存储区域中读取第一数据、从所述第二存储区域中读取所述第二数据、从所述第三存储区域中读取第三数据、向所述第四存储区域中存储所述运算结果。
10.根据权利要求9所述的装置,其特征在于,
所述操作判断子模块,还用于在所述第一细粒度区域与所述第二细粒度区域之间有重叠时,阻塞所述第一操作。
11.根据权利要求9所述的装置,其特征在于,所述第一操作和所述第二操作中的至少一个操作为写操作。
12.根据权利要求9所述的装置,其特征在于,所述细粒度区域的尺寸和/或数量是根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种确定的。
13.根据权利要求9所述的装置,其特征在于,所述细粒度区域的尺寸和/或数量是根据硬件计算能力、硬件带宽中的至少一种确定的。
14.根据权利要求1所述的装置,其特征在于,所述装置还包括:
存储模块,用于存储所述第一数据、所述第二数据和所述第三数据。
15.根据权利要求1所述的装置,其特征在于,所述控制模块,包括:
指令存储子模块,用于存储所述乘加指令;
指令处理子模块,用于对所述乘加指令进行解析,得到所述乘加指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述乘加指令,
其中,所述控制模块,还包括:
第一依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的存储区域与存储所述第零待执行指令所需数据的存储区域之间具有重叠的区域。
16.一种机器学习运算装置,其特征在于,所述装置包括:
一个或多个如权利要求1-15任一项所述的乘加指令处理装置,用于从其他处理装置中获取待处理张量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述乘加指令处理装置时,所述多个所述乘加指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述乘加指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述乘加指令处理装置共享同一控制***或拥有各自的控制***;多个所述乘加指令处理装置共享内存或者拥有各自的内存;多个所述乘加指令处理装置的互联方式是任意互联拓扑。
17.一种组合处理装置,其特征在于,所述组合处理装置包括:
如权利要求16所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
18.一种机器学习芯片,其特征在于,所述机器学习芯片包括:
如权利要求16所述的机器学习运算装置或如权利要求13所述的组合处理装置。
19.一种电子设备,其特征在于,所述电子设备包括:
如权利要求18所述的机器学习芯片。
20.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求18所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
21.一种乘加指令处理方法,其特征在于,所述方法包括:
对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,并根据所述操作码确定所述乘加指令所对应的乘加运算处理、以及根据所述操作域获取执行所述乘加指令所需的第一数据、第二数据、第三数据和第四存储区域,以及确定乘加运算策略;
根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,并将所述运算结果存入所述第四存储区域中,
其中,所述操作码用于指示所述乘加指令对数据所进行的处理为乘加运算处理,所述操作域包括存储所述第一数据的第一存储区域、存储所述第二数据的第二存储区域和存储所述第三数据的第三存储区域以及所述第四存储区域。
22.根据权利要求21所述的方法,其特征在于,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,得到运算结果,包括:
根据所述乘加运算策略从所述第一数据、所述第二数据和所述第三数据中确定出先运算数据、后运算数据、运算处理顺序和运算对应关系;
根据所述运算对应关系和运算处理顺序对所述先运算数据进行第一运算处理,得到中间结果;
根据所述运算对应关系和运算处理顺序对所述中间结果与所述后运算数据进行第二运算处理,得到所述运算结果,
其中,所述第一运算处理为乘法运算处理或加法运算处理,所述第二运算处理为所述乘法运算处理或加法运算处理,所述第一运算处理与所述第二运算处理不同。
23.根据权利要求21所述的方法,其特征在于,所述操作域中包括所述乘加运算策略。
24.根据权利要求21述的方法,其特征在于,所述操作码还用于指示所述乘加运算策略。
25.根据权利要求21所述的方法,其特征在于,根据所述乘加运算策略对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理,包括:
利用至少一个乘法器执行所述乘加运算处理中的乘法运算处理;
利用至少一个加法器执行所述乘加运算处理中的加法运算处理。
26.根据权利要求21所述的方法,其特征在于,所述操作码中包含先处理标识,或者所述操作域中包括所述先处理标识,所述方法还包括:
确定与所述先处理标识相对应的处理操作和对应的待处理数据,待处理数据包括所述第一数据、所述第二数据和所述第三数据中的至少一个;
在对所述第一数据、所述第二数据和所述第三数据进行乘加运算处理之前,根据与所述先处理标识相对应的处理操作对对应的待处理数据进行先处理。
27.根据权利要求21所述的方法,其特征在于,所述操作码中包含后处理标识,或者所述操作域中包括所述后处理标识,所述方法还包括:
确定与所述后处理标识相对应的处理操作;
根据与所述后处理标识相对应的处理操作对运算结果进行后处理,并将后处理后的运算结果存入所述第四存储区域。
28.根据权利要求26或27所述的方法,其特征在于,处理操作包括以下至少一种:数据格式转换处理和数据运算处理,
所述数据格式转换处理包括以下至少一种:浮点数转换处理、定点数转换处理、浮定点数转换处理,
所述数据运算处理包括以下至少一种:三角函数运算处理、反三角函数运算处理、取对数运算处理、取指数运算处理、取最大值运算处理、取最小值运算处理、卷积运算处理、池化运算处理、全连接运算处理和激活运算处理。
29.根据权利要求21所述的方法,其特征在于,所述方法还包括:
在第一操作之前,判断是否存在针对所述第一操作所对应的目标存储区域的第二操作;
在存在所述第二操作时,判断所述第一操作当前所针对的目标存储区域中的第一细粒度区域与所述第二操作所针对的所述目标存储区域中的第二细粒度区域之间是否存在重叠;
在所述第一细粒度区域与所述第二细粒度区域之间不重叠时,控制执行所述第一操作,
其中,所述第一操作包括以下至少一项:从所述第一存储区域中读取第一数据、从所述第二存储区域中读取所述第二数据、从所述第三存储区域中读取第三数据、向所述第四存储区域中存储所述运算结果。
30.根据权利要求29所述的方法,其特征在于,所述方法还包括:
在所述第一细粒度区域与所述第二细粒度区域之间有重叠时,阻塞所述第一操作。
31.根据权利要求29所述的方法,其特征在于,所述第一操作和所述第二操作中的至少一个操作为写操作。
32.根据权利要求29所述的方法,其特征在于,所述细粒度区域的尺寸和/或数量是根据设定长度的数据所在区域、设定维数的数据所在区域中的至少一种确定的。
33.根据权利要求29所述的方法,其特征在于,所述细粒度区域的尺寸和/或数量是根据硬件计算能力、硬件带宽中的至少一种确定的。
34.根据权利要求21所述的方法,其特征在于,所述方法还包括:
存储所述第一数据、所述第二数据和所述第三数据。
35.根据权利要求21所述的方法,其特征在于,对接收到的乘加指令进行解析,获得所述乘加指令的操作码和操作域,包括:
存储所述乘加指令;
对所述乘加指令进行解析,得到所述乘加指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述乘加指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在依赖关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在依赖关系包括:
存储所述第一待执行指令所需数据的存储区域与存储所述第零待执行指令所需数据的存储区域之间具有重叠的区域。
CN202010622096.0A 2020-06-30 2020-06-30 运算方法、装置及相关产品 Pending CN113867686A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010622096.0A CN113867686A (zh) 2020-06-30 2020-06-30 运算方法、装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010622096.0A CN113867686A (zh) 2020-06-30 2020-06-30 运算方法、装置及相关产品

Publications (1)

Publication Number Publication Date
CN113867686A true CN113867686A (zh) 2021-12-31

Family

ID=78981920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010622096.0A Pending CN113867686A (zh) 2020-06-30 2020-06-30 运算方法、装置及相关产品

Country Status (1)

Country Link
CN (1) CN113867686A (zh)

Similar Documents

Publication Publication Date Title
CN110096309B (zh) 运算方法、装置、计算机设备和存储介质
CN110597559B (zh) 计算装置以及计算方法
CN111381871B (zh) 运算方法、装置及相关产品
CN110119807B (zh) 运算方法、装置、计算机设备和存储介质
CN111857828B (zh) 处理器操作方法及装置以及相关产品
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
CN111353124A (zh) 运算方法、装置、计算机设备和存储介质
CN109542837B (zh) 运算方法、装置及相关产品
CN109558565B (zh) 运算方法、装置及相关产品
CN113867686A (zh) 运算方法、装置及相关产品
CN109543835B (zh) 运算方法、装置及相关产品
CN111401536A (zh) 运算方法、装置及相关产品
CN111382850A (zh) 运算方法、装置及相关产品
CN111381872A (zh) 运算方法、装置及相关产品
CN113867799A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN111723920A (zh) 人工智能计算装置及相关产品
CN111290788B (zh) 运算方法、装置、计算机设备和存储介质
CN109543834B (zh) 运算方法、装置及相关产品
CN111382390B (zh) 运算方法、装置及相关产品
CN111381873A (zh) 运算方法、装置及相关产品
CN109558943B (zh) 运算方法、装置及相关产品
CN109543833B (zh) 运算方法、装置及相关产品
CN109583580B (zh) 运算方法、装置及相关产品
CN109543836B (zh) 运算方法、装置及相关产品
CN109558564B (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