CN112394985A - 执行方法、装置及相关产品 - Google Patents

执行方法、装置及相关产品 Download PDF

Info

Publication number
CN112394985A
CN112394985A CN201910741591.0A CN201910741591A CN112394985A CN 112394985 A CN112394985 A CN 112394985A CN 201910741591 A CN201910741591 A CN 201910741591A CN 112394985 A CN112394985 A CN 112394985A
Authority
CN
China
Prior art keywords
data
execution
instruction
executed
address
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
CN201910741591.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 CN201910741591.0A priority Critical patent/CN112394985A/zh
Publication of CN112394985A publication Critical patent/CN112394985A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开涉及一种执行方法、装置及相关产品。机器学习装置包括一个或多个指令处理装置,用于从其他处理装置中获取待执行数据和控制信息,并执行指定的机器学习执行,将执行结果通过I/O接口传递给其他处理装置;当机器学习执行装置包含多个指令处理装置时,多个指令处理装置间可以通过特定的结构进行连接并传输数据。其中,多个指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个指令处理装置共享同一控制***或拥有各自的控制***、且共享内存或者拥有各自的内存;多个指令处理装置的互联方式是任意互联拓扑。本公开实施例所提供的执行方法、装置及相关产品的适用范围广,对收集指令的处理效率高、处理速度快。

Description

执行方法、装置及相关产品
技术领域
本公开涉及计算机技术领域,尤其涉及一种执行方法、装置及相关产品。
背景技术
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据执行种类和数量不断增大。相关技术中,在对数据进行收集执行的效率低、速度慢。
发明内容
有鉴于此,本公开提出了一种执行方法、装置及相关产品,以提高对数据进行收集执行的效率和速度。
根据本公开的第一方面,提供了一种收集指令处理装置,所述装置包括:
编译模块,用于对获取到的收集指令进行编译,得到编译后的收集指令;
控制模块,用于对编译后的收集指令进行解析,得到所述收集指令的操作码和操作域,并根据所述操作码和所述操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址;
执行模块,用于根据所述索引数据从待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中,
其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
根据本公开的第二方面,提供了一种机器学习执行装置,所述装置包括:一个或多个上述第一方面所述的收集指令处理装置,用于从其他处理装置中获取待执行数据和控制信息,并执行指定的机器学习执行,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习执行装置包含多个所述收集指令处理装置时,所述多个所述收集指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述收集指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的执行;多个所述收集指令处理装置共享同一控制***或拥有各自的控制***;多个所述收集指令处理装置共享内存或者拥有各自的内存;多个所述收集指令处理装置的互联方式是任意互联拓扑。
根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:
上述第二方面所述的机器学习执行装置、通用互联接口和其他处理装置;
所述机器学习执行装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络执行装置或上述第三方面所述的组合处理装置。
根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。
根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。
根据本公开的第八方面,提供了一种收集指令处理方法,所述方法应用于收集指令处理装置,所述方法包括:
对获取到收集指令进行编译,得到编译后的收集指令;
对所述编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据所述操作码和所述操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址;
根据所述索引数据从所述待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中;
其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例所提供的收集指令处理方法、装置及相关产品,该装置包括控制模块和执行模块。编译模块,用于对获取到的收集指令进行编译,得到编译后的收集指令,控制模块用于对编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据操作码和操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址。执行模块用于根据所述索引数据从待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中。本公开实施例所提供的收集指令处理方法、装置及相关产品的适用范围广,对收集指令的处理效率高、处理速度快。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的收集指令处理装置的框图;
图2示出根据本公开以实施例的收集指令处理装置的框图;
图2a-图2e示出根据本公开一实施例的收集指令处理装置的框图;
图3示出根据本公开一实施例的收集指令处理装置的应用场景的示意图;
图4a、图4b示出根据本公开一实施例的组合处理装置的框图;
图5示出根据本公开一实施例的板卡的结构示意图;
图6示出根据本公开一实施例的收集指令处理方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的收集指令处理装置的框图。如图1所示,该装置包括编译模块10、控制模块11和执行模块12。
编译模块10,用于对获取到的收集指令进行编译,得到编译后的收集指令;
控制模块11,对编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据操作码和操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址。其中,操作码用于指示收集指令对数据所进行的执行为收集执行,操作域包括待执行数据地址、索引数据地址和目标地址。
执行模块12,用于根据所述索引数据从待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中。其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
在本实施例中,编译模块所获取到的收集指令为未编译的、不能直接供硬件执行的软件指令,编译模块需先对收集指令(未编译)进行编译。控制模块在得到编译后的收集指令之后,才能对编译后的收集指令进行解析。编译后的收集指令为能够直接供硬件执行的硬件指令。控制模块可以从待执行数据地址和索引数据地址中分别获取至少一个待执行数据和至少一个索引数据。控制模块可以通过数据输入输出单元获得收集指令、多个待执行数据和多个索引数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括参数数据、待执行数据、对应的执行方法,或者存储参数数据、待执行数据、对应的执行方法的地址等等。对于一个收集指令其必须包括操作码和操作域,其中操作域至少包括待执行数据地址、索引数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对收集指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
可选地,如图2所述,所述执行模块包括一个或多个比较器、选择器以及计数器。其中,一个或多个比较器用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;该一个或多个选择器,用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据。计数器,用于确定所述选定数据的数目。
可选地,该预设条件可以是索引数据不为零。
在该实现方式中,在索引数据不为零时,将所述不为零的索引数据的数目和与该不为零的索引数据相对应的待执行数据顺序存储至目标地址的第一地址和第二地址。预设条件还可以是索引数据不为指定数值,指定数值可以是1等数值。本领域技术人员可以根据实际需要对预设条件进行设置,本公开对此不作限制。
在该实现方式中,可以根据需要预设条件或者索引数据进行设置,以将待执行数据中所需要的数据存储至目标地址。例如,为按照不同的收集需要对待执行数据进行收集,可以设置不同的预设条件,或者,设置不同的索引数据来实现对待执行数据的不同收集。
可选地,所述待执行数据可以为张量数据,所述索引数据为与所述待执行数据相对应的张量数据,索引数据的数目可以大于或等于待执行数据的数目。此时,索引数据和待执行数据之间存在预设的映射关系,从而执行模块可以根据该索引数据及预设的映射关系,从待执行数据中选择出选定数据。具体地,索引数据的数目可以等于待执行数据的数目,索引数据与待执行数据一一对应设置,此时,当索引数据满足预设条件时,该索引数据对应的待执行数据可以作为选定数据。
其中,该张量数据可以是神经网络数据,如神经网络的神经元数据或权值数据等等。张量数据是指0维以上的数据,其可以具有多个维度。特别的,0维张量数据即为标量数据,1维张量数据即为向量数据,2维张量数据可以为矩阵数据等。在其他实施例中,该索引数据和待执行数据还可以是标量数据等等,此处不做具体限定。
进一步可选地,所述索引数据的值为比特值。例如,所述索引数据的值为0或1。可选地,当索引数据的值为0时,则该索引数据对应的待执行数据被舍弃,当索引数据的值为1时,则该索引数据对应的待执行数据作为选定数据。
可选地,该指令操作域中的目标地址可以是起始地址,所述起始地址分为第一地址和第二地址,所述第一地址指向的存储空间用于存储所述选定数据的数目,所述第二地址指向的存储空间用于存储所述选定数据。进一步可选的,执行模块可以根据该起始地址和执行结果的大小确定执行结果所需的存储空间大小,并将该执行结果存储至该确定的存储空间中。
可选地,该目标地址包括用于存储所述选定数据的数目的第一地址和用于存储所述选定数据的第二地址;其中,所述第一地址指向的地址空间的大小小于或等于所述第二地址指向的地址空间的大小。例如,所述目标地址可以包括多行地址,其中,第一行地址指向的存储空间用于存储所述选定数据的数目,其他行地址指向的存储空间用于存储选定数据。
可选地,操作域中的待执行数据的源地址和目标地址可以是一个或多个,每个源地址对应一个目标地址。所述目标地址包括用于存储所述选定数据的数目的第一地址和用于存储所述选定数据的第二地址,其中,所述第一地址指向的地址空间的大小小于或等于所述第二地址指向的地址空间的大小。可选地,操作域中的待执行数据的源地址和目标地址可以是一个或多个,每个源地址对应一个目标地址。该待执行数据可以是一个或多个。也就是说,在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个执行模块,可以根据实际需要对控制模块和执行模块的数量进行设置,本公开对此不作限制。
在其他可选的实施例中,该执行结果也可以只包括选定数据,相应地,该目标地址用于指向所述选定数据地存储空间的地址。进一步可选地,所述索引数据的值为比特值。例如,所述索引数据的值为0或1。可选地,当索引数据的值为0时,则该索引数据对应的待执行数据被舍弃,当索引数据的值为1时,则该索引数据对应的待执行数据作为选定数据。
本公开实施例所提供的收集指令处理装置,该装置包括编译模块、控制模块和执行模块。编译模块用于对获取到的收集指令进行编译,得到编译后的收集指令;控制模块用于对编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据操作码和操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址。执行模块用于根据所述索引数据从待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中。所述执行模块包括一个或多个比较器,用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;一个或多个选择器,用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据。
在一个可能的实现方式中,该装置还包括存储模块,用于存储所述至少一个索引数据、至少一个待运算数据以及所述预设条件。
本公开实施例所提供的收集指令处理装置的适用范围广,对收集指令的处理效率高、处理速度快。
图2a示出根据本公开一实施例的收集指令处理装置的框图。在一种可能的实现方式中,如图2a所示,执行模块12可以包括主执行子模块121和至少一个从执行子模块122,其中,所述主执行模块包括计数器,所述至少一个从执行子模块包括比较器和选择器。进一步地,该执行模块还可以包含数据访存电路,该数据访存电路可以从存储模块获得待执行数据,该数据访存电路还可以将执行结果存储至存储模块中。可选地,该数据访存电路可以是直接内存访问模块。
控制模块11,还用于解析编译后的收集指令得到至少一个执行指令,并将至少一个索引数据、至少一个待执行数据以及至少一个执行指令发送至从执行子模块122。
所述从执行子模块122的比较器用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件。从执行子模块的选择器用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据发送至所述主执行子模块。
主执行子模块121,模块的计数器用于根据至少一个从执行子模块121传送的选定数据,确定所述选定数据的数目,并将所述选定数据的数目和所述选定数据存入所述目标地址。
可选地,该目标地址可以包括第一地址和第二地址,其中,第一地址指向的存储空间用于存储选定数据的数目,第二地址指向的存储空间用于存储选定数据,第一地址执行的存储空间小于第二地址指向的存储空间。
图2b示出根据本公开一实施例的收集指令处理装置的框图。在一种可能的实现方式中,如图2b所示,执行模块12还可以包括一个或多个分支执行子模块123,该分支执行子模块123用于转发主执行子模块121和从执行子模块122之间的数据和/或执行指令。其中,主执行子模块121与一个或多个分支执行子模块123连接。
图2c示出根据本公开一实施例的收集指令处理装置的框图。在一种可能的实现方式中,如图2c所示,至少一个从执行子模块122呈阵列分布。
每个从执行子模块122与相邻的其他从执行子模块122连接,主执行子模块121连接多个从执行子模块122中的k个从执行子模块122,k个从执行子模块122为:第1行的n个从执行子模块122、第m行的n个从执行子模块122以及第1列的m个从执行子模块122。
其中,如图2c所示,k个从执行子模块仅包括第1行的n个从执行子模块、第m行的n个从执行子模块以及第1列的m个从执行子模块,即该k个从执行子模块为多个从执行子模块中直接与主执行子模块连接的从执行子模块。其中,k个从执行子模块,用于在主执行子模块以及多个从执行子模块之间的数据以及指令的转发。
图2d示出根据本公开一实施例的收集指令处理装置的框图。在一种可能的实现方式中,如图2d所示,执行模块还可以包括树型子模块124。该树型子模块124包括一个根端口401和多个支端口402。根端口401与主执行子模块121连接,多个支端口402与多个从执行子模块122分别连接。
其中,树型子模块124具有收发功能,用于转发主执行子模块121和从执行子模块122之间的数据和/或执行指令。
在一种可能的实现方式中,树型子模块124可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备执行功能。最下层的节点与从执行子模块连接,以转发主执行子模块121和从执行子模块122之间的数据和/或执行指令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。
在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。
举例来说,图2e示出根据本公开一实施例的收集指令处理装置的框图。如图2e所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从执行子模块122连接,以转发主执行子模块121和从执行子模块122之间的数据和/或执行指令。
在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本公开对此不作限制。
在该实现方式中,可以根据所需进行的比较执行的数据量的大小、对比较执行的处理速度、效率等要求对从执行子模块中比较器和选择器等的数量进行设置,本公开对此不作限制。例如,以预设条件为“索引数据不为0”为例,比较器可以对索引数据和0进行比较,获得比较结果。进而从执行子模块的选择器可以根据比较结果将与不为0的索引数据相对应的待执行数据确定为选定数据,并将选定数据传给主执行子模块。主执行模块可以确定所述选定数据的数目,将所述选定数据的数目和所述选定数据顺序存入目标地址的第一地址和第二地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块11,还用于获取读入量,并按照读入量获取至少一个待执行数据。其中,至少一个待执行数据的数据量小于或等于读入量,读入量小于或等于至少一个索引数据的数据量。
在该实现方式中,读入量可以是所获取的至少一个待执行数据的数据量,可以是所获取的待执行数据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取至少一个待执行数据。所获取的至少一个待执行数据的数据量小于或等于默认读入量,默认读入量小于或等于至少一个索引数据的数据量。
在该实现方式中,至少一个待执行数据的数据量、至少一个索引数据的数据量以及目标地址能够进行数据存储的数据量,三者可以是相同的,可以都等于读入量或默认读入量。这样,执行模块可以将与满足预设条件的索引数据相对应的待执行数据顺序存入目标地址中,可以避免出现目标地址不够用、目标地址浪费等问题。
在一种可能的实现方式中,如图2a-图2e所示,该装置还可以包括存储模块13。存储模块13用于存储至少一个索引数据、至少一个待执行数据以及预设条件。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将至少一个索引数据、至少一个待执行数据以及预设条件在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图2a-图2e所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。
指令存储子模块111用于存储编译后的收集指令。
指令处理子模块112用于对编译后的收集指令进行解析,得到收集指令的操作码和操作域。
队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个编译后的收集指令。
在该实现方式中,可以根据编译后的收集指令的接收时间、优先级别等对多个编译后的收集指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个编译后的收集指令。
在一种可能的实现方式中,如图2a-图2e所示,执行模块12可以包括依赖关系处理子模块122。
依赖关系处理子模块122,用于在确定编译后的第一收集指令与编译后的第一收集指令之前的编译后的第零收集指令存在关联关系时,将编译后的第一收集指令缓存在指令存储子模块111中,在编译后的第零收集指令执行完毕后,从指令存储子模块111中提取编译后的第一收集指令发送至执行模块12。其中,编译后的第一收集指令和第零收集指令是多个编译后的收集指令中的指令。
其中,编译后的第一收集指令与编译后的第一收集指令之前的编译后的第零收集指令存在关联关系包括:存储编译后的第一收集指令所需数据的第一存储地址区间与存储编译后的第零收集指令所需数据的第零存储地址区间具有重叠的区域。反之,编译后的第一收集指令与编译后的第零收集指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据编译后的收集指令之间的依赖关系,使得在先的编译后的收集指令执行完毕之后,再执行在后的编译后的收集指令,保证执行结果的准确性。
在一种可能的实现方式中,控制模块11还可以用于根据收集指令生成汇编文件,并将汇编文件翻译成二进制文件,其中,二进制文件为编译后的收集指令。
在一种可能的实现方式中,收集指令的指令格式可以是:
collect dst,src0,src1,size
其中,collect是收集指令的操作码,dst、src0、src1、size是收集指令的操作域。dst是目标地址,其中,dst包括第一地址和第二地址两部分,src0是待执行数据地址,src1是索引数据地址,size是读入量。执行模块可以根据编译及解析后的指令,从存储模块中获取size大小的索引数据和待执行数据,并在所述索引数据满足预设条件时,将满足预设条件的索引数据对应的待执行数据作为选定数据。执行模块还可以进一步确定选定数据的数目,并将该选定数据及其数目存储至目标地址指向的存储空间中。可选地,该索引数据的值还可以是0或1表示的比特值。
在待执行数据为多个时,src0可以包括一个src00或多个待执行数据地址src00,src01,src02…,src0n,所述一个待执行数据地址可以包括一个待执行数据,也可以一个待执行数据地址包括一组待执行数据,本公开对此不作限制。在所述待执行数据为多个时,所述索引数据可以为一个或多个,所述索引数据可以是与所述待执行数据的数据类型相同的数据,此时,src1可以包括多个索引数据地址src10,src11,src12…,src1n。所述索引数据的值还可以是比特值,此时src1所表示的比特值的位数不小于所述待执行数据的数目,本公开对此不作限制。
其中,在待执行数据为多个时,指令格式中可以包括多个待执行数据地址和一个或多个索引数据地址,以下以包括两个待执行数据为例,收集指令的指令格式可以是:
collect,dst,src00,src01,src1,size
收集指令的指令格式还可以是:
collect,dst,src00,src01,src10,src11,size
应当理解的是,本领域技术人员可以根据需要对收集指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了收集指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用收集指令处理装置进行数据收集”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解收集指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图3示出根据本公开一实施例的收集指令处理装置的应用场景的示意图。如图3所示,收集指令处理装置对收集指令进行处理的过程如下:
编译模块10对获取到的收集指令1进行编译,得到编译后的收集指令1。控制模块11对编译后的收集指令1(如收集指令1为@collect#500#100#200#5)进行解析,得到收集指令1的操作码和操作域。其中,收集指令1的操作码为collect,目标地址为500,其中所述目标地址包括第一地址和第二地址,待执行数据地址为100,索引数据地址为200,读入量为5。控制模块11分别从待执行数据地址100和索引数据地址200中获取读入量为5的多个待执行数据和多个索引数据。假定获得的多个待执行数据包括1、5、6、7、3。多个索引数据包括1、8、0、6和9。预设条件为索引数据不为0。
执行模块12的比较器判断多个索引数据是否为0,执行模块12的选择器在索引数据不为0时,将与不为0的索引数据相对应的待执行数据顺序存入目标地址500中。具体地,执行模块12的比较器判断多个索引数据“1、8、0、6、9”是否不为0,由于第三个索引数据为0,则选择器将多个待执行数据中的“1、5、7、3”确定为满足预设条件的选定数据,并将选定数据依次存入目标地址500的第二地址中。所述执行模块12的计数器根据所述存入第二地址的选定数据确定所述选定数据的数目为4,并将所述选定数据的数目存入所述目标地址500的第一地址中。以上各模块的工作过程可参考上文的相关描述。如图3所示,第一地址可以是目标地址的第一行所指向的存储空间,第二地址可以是目标地址的其他行所指向的存储空间。
在一个可能的实现方式中,上述获得的索引数据可以为比特值11011,所述比特值的每一位对应一个待执行数据,预设条件为所述待执行数据对应的索引数据的比特位的值不为0。
执行模块12的比较器判断所述索引数据的比特位是否为0,执行模块的选择器可以在索引数据比特位不为0时,将与不为0的索引数据的比特位相对应的待执行数据顺序存入目标地址500中。具体地,执行模块12的比较器判断索引数据“1、1、0、1、1”是否不为0,由于索引数据的第三个比特位为0,则选择器可以将多个待执行数据中的“1、5、7、3”确定为满足预设条件的选定数据,并将该选定数据依次存入目标地址500的第二地址中。所述执行模块12的计数器根据所述存入第二地址的选定数据确定所述选定数据的数目为4,并将选定数据的数目存入所述目标地址500的第一地址中。如图3所示,第一地址可以是目标地址的第一行所指向的存储空间,第二地址可以是目标地址的其他行所指向的存储空间。
这样,收集指令处理装置可以高效、快速地对收集指令进行处理。
本公开提供一种机器学习执行装置,该机器学习执行装置可以包括一个或多个上述收集指令处理装置,用于从其他处理装置中获取待执行数据和控制信息,执行指定的机器学习执行。该机器学习执行装置可以从其他机器学习执行装置或非机器学习执行装置中获得收集指令,并将执行结果通过I/O接口传递给***设备(也可称其他处理装置)。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上收集指令处理装置时,收集指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的执行。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习执行装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图4a示出根据本公开一实施例的组合处理装置的框图。如图4a所示,该组合处理装置包括上述机器学习执行装置、通用互联接口和其他处理装置。机器学习执行装置与其他处理装置进行交互,共同完成用户指定的操作。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习执行装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习执行装置的开启、停止等基本控制;其他处理装置也可以和机器学习执行装置协作共同完成执行任务。
通用互联接口,用于在机器学习执行装置与其他处理装置间传输数据和控制指令。该机器学习执行装置从其他处理装置中获取所需的输入数据,写入机器学习执行装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习执行装置片上的控制缓存;也可以读取机器学习执行装置的存储模块中的数据并传输给其他处理装置。
图4b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图4b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习执行装置和所述其他处理装置连接。存储装置用于保存在机器学习执行装置和所述其他处理装置的数据,尤其适用于所需要执行的数据在本机器学习执行装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本公开提供一种机器学习芯片,该芯片包括上述机器学习执行装置或组合处理装置。
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本公开提供一种板卡,图5示出根据本公开一实施例的板卡的结构示意图。如图5所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片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超仪和/或心电图仪。
图6示出根据本公开一实施例的收集指令处理方法的流程图。如图6所示,该方法应用于上述收集指令处理装置,该方法包括步骤S51和步骤S52。
在步骤S51中,对获取到收集指令进行编译,得到编译后的收集指令,对编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据操作码和操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址。其中,操作码用于指示收集指令对数据所进行的执行为收集执行,操作域包括待执行数据地址、索引数据地址和目标地址。
在步骤S52中,根据所述索引数据从待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中。
在一种可能的实现方式中,该方法还可以包括:解析编译后的收集指令得到多个执行指令。
其中,步骤S52可以包括:
一个或多个比较器将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;
一个或多个选择器在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据存储在目标地址。
在一种可能的实现方式中,步骤S52可以包括:利用计数器确定所述选定数据的数目并存储在所述目标地址。
在一种可能的实现方式中,所述执行目标地址包括用于存储所述选定数据的数目的第一地址和用于存储所述选定数据的第二地址;
其中,所述第一地址指向的地址空间的大小小于或等于所述第二地址指向的地址空间的大小。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址,步骤S51可以包括:获取读入量,并按照读入量获取至少一个待执行数据。其中,至少一个待执行数据的数据量小于或等于读入量,读入量小于或等于至少一个索引数据的数据量。
在一种可能的实现方式中,该方法还可以包括:存储至少一个索引数据、至少一个待执行数据以及预设条件。
在一种可能的实现方式中,所述待执行数据为张量数据,所述索引数据为与所述待执行数据相对应的张量数据,所述索引数据的数目大于或等于所述待执行数据的数目。
在一种可能的实现方式中,所述索引数据的值为比特值。
在一种可能的实现方式中,所述执行模块包括主执行子模块和至少一个从执行子模块,所述主执行子模块包括计数器,所述至少一个从执行子模块包括比较器和选择器;
所述控制模块解析所述编译后的收集指令得到至少一个执行指令,并将所述至少一个索引数据、所述至少一个待执行数据以及所述至少一个执行指令发送至所述从执行子模块;
所述从执行子模块中的比较器将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;所述从执行子模块中的选择器在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据发送至所述主执行子模块;
所述主执行子模块的计数器根据至少一个所述从执行子模块传送的选定数据,确定所述选定数据的数目,并将所述选定数据的数目和所述选定数据存入所述目标地址。
在一种可能的实现方式中,步骤S51可以包括:
存储编译后的收集指令;
对编译后的收集指令进行解析,得到收集指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个编译后的收集指令。
在一种可能的实现方式中,该方法还可以包括:
在确定编译后的第一收集指令与编译后的第一收集指令之前的编译后的第零收集指令存在关联关系时,缓存编译后的第一收集指令,在编译后的第零收集指令执行完毕后,执行编译后的第一收集指令,
其中,编译后的第一收集指令与编译后的第一收集指令之前的编译后的第零收集指令存在关联关系包括:
存储编译后的第一收集指令所需数据的第一存储地址区间与存储编译后的第零收集指令所需数据的第零存储地址区间具有重叠的区域。
在一种可能的实现方式中,对获取到的收集指令进行编译,得到编译后的收集指令,包括:
根据收集指令生成汇编文件,并将汇编文件翻译成二进制文件。其中,二进制文件为编译后的收集指令。
在一种可能的实现方式中,预设条件可以包括索引数据不为零。
需要说明的是,尽管以上述实施例作为示例介绍了收集指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的收集指令处理方法的适用范围广,对收集指令的处理效率高、处理速度快。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的实施例中,应该理解到,所揭露的***、装置,可通过其它的方式实现。例如,以上所描述的***、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要收集其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
根据以下条款可以更好地理解前述内容:
条款1:一种收集指令处理装置,所述装置包括:
编译模块,用于对获取到的收集指令进行编译,得到编译后的收集指令;
控制模块,用于对编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据所述操作码和所述操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址;
执行模块,用于根据所述索引数据从待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中;
其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
条款2:根据条款1所述的装置,所述执行模块包括:
一个或多个比较器,用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;
一个或多个选择器,用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据;以及计数器,用于确定所述选定数据的数目。
条款3:根据条款1或2所述的装置,所述待执行数据为张量数据,所述索引数据为与所述待执行数据相对应的张量数据,所述索引数据的数目大于或等于所述待执行数据的数目。
条款4;根据条款3所述的装置,所述索引数据的值为比特数值。
条款5:根据条款1或2所述的装置,所述目标地址包括用于存储所述选定数据的数目的第一地址和用于存储所述选定数据的第二地址;
其中,所述第一地址指向的地址空间的大小小于或等于所述第二地址指向的地址空间的大小。
条款6:根据条款1-5任一项所述的装置,所述执行模块包括主执行子模块和至少一个从执行子模块,所述主执行子模块包括所述计数器,所述至少一个从执行子模块包括所述比较器和选择器;
所述控制模块,还用于解析所述编译后的收集指令得到至少一个执行指令,并将所述至少一个索引数据、所述至少一个待执行数据以及所述至少一个执行指令发送至所述从执行子模块;
所述从执行子模块的一个或多个比较器用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件,所述选择器用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据发送至所述主执行子模块;
所述主执行子模块的计数器用于确定所述选定数据的数目,并将所述选定数据的数目和所述选定数据存入所述目标地址的第一地址和第二地址。。
条款7:根据条款1-6任一项所述的装置,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述至少一个待执行数据,
其中,所述至少一个待执行数据的数据量小于或等于所述读入量,所述读入量小于或等于所述至少一个索引数据的数据量。
条款8:根据条款1-7任一项所述的装置,所述装置还包括:
存储模块,用于存储所述多个索引数据、所述多个待执行数据以及所述预设条件的至少一种。
条款9:根据条款1-8任一项所述装置,所述控制模块包括:
指令存储子模块,存储所述收集指令;
指令处理子模块,对所述收集指令进行解析,得到所述收集指令的操作码和操作域;队列存储子模块,存储指令队列,所述指令队列包括按照执行顺序依次排列的多个收集指令。
条款10:根据条款1-9任一项所述的装置,所述控制模块还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述执行模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款11:根据条款1至10任一项所述的装置,所述预设条件包括索引数据不为零。
条款12:一种收集指令处理方法,所述方法应用于收集指令处理装置,所述方法包括:
对获取到收集指令进行编译,得到编译后的收集指令;
对所述编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据所述操作码和所述操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址;
根据所述索引数据从所述待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中;
其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
条款13:根据条款12所述的方法,所述根据所述索引数据从所述待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中,包括:
一个或多个比较器将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;
一个或多个选择器在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据存入所述目标地址中;
计数器确定所述选定数据的数目,并将所述选定数据的数目存入所述目标地址中。
条款14:根据条款12或13所述的方法,所述待执行数据为张量数据,所述索引数据为与所述待执行数据相对应的张量数据,所述索引数据的数目大于或等于所述待执行数据的数目。
条款15:根据条款14所述方法,所述索引数据的值为比特数值。
条款16:根据条款13或14所述的方法,所述目标地址包括用于存储所述选定数据的数目的第一地址和用于存储所述选定数据的第二地址;
其中,所述第一地址指向的地址空间的大小小于或等于所述第二地址指向的地址空间的大小。
条款17:根据条款13所述的方法,所述执行模块包括主执行子模块和至少一个从执行子模块,所述主执行子模块包括所述计数器,所述至少一个从执行子模块包括所述比较器和选择器;
所述控制模块解析所述编译后的收集指令得到至少一个执行指令,并将所述至少一个索引数据、所述至少一个待执行数据以及所述至少一个执行指令发送至所述从执行子模块;
所述从执行子模块的比较器将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;
所述从执行子模块的选择器在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据发送至所述主执行子模块;
所述主执行子模块的计数器用于确定所述选定数据的数目,并将所述选定数据的数目和所述选定数据存入所述目标地址的第一地址和第二地址。
条款18:根据条款12所述的方法,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块获取所述读入量,并按照所述读入量获取所述至少一个待执行数据,
其中,所述至少一个待执行数据的数据量小于或等于所述读入量,所述读入量小于或等于所述至少一个索引数据的数据量。
条款19:根据条款12所述的方法,所述方法还包括:
存储模块存储所述多个索引数据、所述多个待执行数据以及所述预设条件的至少一种。
条款20:根据条款12所述方法,所述对所述编译后的收集指令进行解析,得到收集指令的操作码和操作域,包括:
指令存储子模块存储所述收集指令;
指令处理子模块对所述收集指令进行解析,得到所述收集指令的操作码和操作域;
队列存储子模块存储指令队列,所述指令队列包括按照执行顺序依次排列的多个收集指令。
条款21:根据条款12-20任一项所述的方法,所述方法还包括:
依赖关系处理子模块在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述执行模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款22:根据条款12至21任一项所述的方法,所述预设条件包括索引数据不为零。
条款22:一种计算机可读介质,其特征在于,所述计算机可读介质中存储有计算机程序,所述计算机程序被一个或多个处理装置执行时,实现如条款12-21所述方法的步骤。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种收集指令处理装置,其特征在于,所述装置包括:
编译模块,用于对获取到的收集指令进行编译,得到编译后的收集指令;
控制模块,对编译后的收集指令进行解析,得到收集指令的操作码和操作域,并根据所述操作码和所述操作域获取执行收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址;
执行模块,用于根据所述索引数据从所述待执行数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中;
其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
2.根据权利要求1所述的装置,其特征在于,所述执行模块包括:
一个或多个比较器,用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;
一个或多个选择器,用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据;以及
计数器,用于确定所述选定数据的数目。
3.根据权利要求1或2所述的装置,其特征在于,所述待执行数据为张量数据,所述索引数据为与所述待执行数据相对应的张量数据,所述索引数据的数目大于或等于所述待执行数据的数目。
4.根据权利要求3所述的装置,其特征在于,所述索引数据的值为比特值。
5.根据权利要求1或2所述的装置,其特征在于,所述执行目标地址包括用于存储所述选定数据的数目的第一地址和用于存储所述选定数据的第二地址;
其中,所述第一地址指向的地址空间的大小小于或等于所述第二地址指向的地址空间的大小。
6.根据权利要求1所述的装置,其特征在于,所述执行模块包括主执行子模块和至少一个从执行子模块,所述主执行子模块包括计数器,所述至少一个从执行子模块包括比较器和选择器;
所述控制模块,还用于解析所述编译后的收集指令得到至少一个执行指令,并将所述至少一个索引数据、所述至少一个待执行数据以及所述至少一个执行指令发送至所述从执行子模块;
所述从执行子模块中的比较器用于将所述索引数据和预设条件进行比较,确定所述索引数据是否满足所述预设条件;所述从执行子模块中的选择器,用于在所述索引数据满足所述预设条件时,将满足所述预设条件的索引数据对应的待执行数据作为所述选定数据,并将所述选定数据发送至所述主执行子模块;
所述主执行子模块的计数器用于根据至少一个所述从执行子模块传送的选定数据,确定所述选定数据的数目,并将所述选定数据的数目和所述选定数据存入所述目标地址。
7.根据权利要求1所述的装置,其特征在于,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述至少一个待执行数据,
其中,所述至少一个待执行数据的数据量小于或等于所述读入量,所述读入量小于或等于所述至少一个索引数据的数据量。
8.根据权利要求1至7任一项所述的装置,其特征在于,所述预设条件包括索引数据不为零。
9.一种收集指令处理方法,其特征在于,所述方法包括:
对获取到收集指令进行编译,得到编译后的收集指令;
对所述编译后的收集指令进行解析,得到所述收集指令的操作码和操作域,并根据所述操作码和所述操作域获取所述收集指令所需的至少一个索引数据、至少一个待执行数据和目标地址;
根据所述索引数据从所述待运算数据中确定选定数据,并将所述选定数据以及所述选定数据的数目作为所述收集指令的执行结果存入所述目标地址中;
其中,所述操作码用于指示所述收集指令对数据所进行的执行为收集执行,所述操作域包括待执行数据地址、索引数据地址和所述目标地址。
10.一种计算机可读介质,其特征在于,所述计算机可读介质中存储有计算机程序,所述计算机程序被一个或多个处理装置时,实现如权利要求9所述方法的步骤。
CN201910741591.0A 2019-08-12 2019-08-12 执行方法、装置及相关产品 Pending CN112394985A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910741591.0A CN112394985A (zh) 2019-08-12 2019-08-12 执行方法、装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910741591.0A CN112394985A (zh) 2019-08-12 2019-08-12 执行方法、装置及相关产品

Publications (1)

Publication Number Publication Date
CN112394985A true CN112394985A (zh) 2021-02-23

Family

ID=74602358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910741591.0A Pending CN112394985A (zh) 2019-08-12 2019-08-12 执行方法、装置及相关产品

Country Status (1)

Country Link
CN (1) CN112394985A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140095779A1 (en) * 2012-09-28 2014-04-03 Andrew T. Forsyth Processing memory access instructions that have duplicate memory indices
CN104040489A (zh) * 2011-12-23 2014-09-10 英特尔公司 多寄存器收集指令
US20180329868A1 (en) * 2016-01-20 2018-11-15 Cambricon Technologies Corporation Limited Vector and Matrix Computing Device
CN109032670A (zh) * 2018-08-08 2018-12-18 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量复制指令的方法
CN109328341A (zh) * 2016-07-01 2019-02-12 英特尔公司 识别引起远程事务执行中止的存储的处理器、方法和***
CN109416640A (zh) * 2016-07-01 2019-03-01 英特尔公司 孔径访问处理器、方法、***和指令
CN109791486A (zh) * 2016-09-22 2019-05-21 英特尔公司 用于具有紧凑指令编码的指令的处理器、方法、***和指令转换模块
CN110096309A (zh) * 2018-11-14 2019-08-06 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104040489A (zh) * 2011-12-23 2014-09-10 英特尔公司 多寄存器收集指令
US20140095779A1 (en) * 2012-09-28 2014-04-03 Andrew T. Forsyth Processing memory access instructions that have duplicate memory indices
US20180329868A1 (en) * 2016-01-20 2018-11-15 Cambricon Technologies Corporation Limited Vector and Matrix Computing Device
CN109328341A (zh) * 2016-07-01 2019-02-12 英特尔公司 识别引起远程事务执行中止的存储的处理器、方法和***
CN109416640A (zh) * 2016-07-01 2019-03-01 英特尔公司 孔径访问处理器、方法、***和指令
CN109791486A (zh) * 2016-09-22 2019-05-21 英特尔公司 用于具有紧凑指令编码的指令的处理器、方法、***和指令转换模块
CN109032670A (zh) * 2018-08-08 2018-12-18 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量复制指令的方法
CN110096309A (zh) * 2018-11-14 2019-08-06 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
盛羽;余进;陈松乔;王建新;: "基于CPU仿真器的汇编语言学习***设计与实现", 中南大学学报(自然科学版), no. 06, 26 December 2010 (2010-12-26) *
高亚虎;单征;石强;王军;: "动态二进制翻译中的API优化", 信息工程大学学报, no. 03, 15 June 2019 (2019-06-15) *

Similar Documents

Publication Publication Date Title
CN111079909B (zh) 运算方法、***及相关产品
CN112396186B (zh) 执行方法、装置及相关产品
CN112394985A (zh) 执行方法、装置及相关产品
CN112395003A (zh) 运算方法、装置及相关产品
CN111026440B (zh) 运算方法、装置、计算机设备和存储介质
CN111078285B (zh) 运算方法、***及相关产品
CN111124497B (zh) 运算方法、装置、计算机设备和存储介质
CN111079914B (zh) 运算方法、***及相关产品
CN111400341B (zh) 标量查找指令处理方法、装置及相关产品
CN111078125B (zh) 运算方法、装置及相关产品
CN111290789B (zh) 运算方法、装置、计算机设备和存储介质
CN111079911B (zh) 运算方法、***及相关产品
CN111338694B (zh) 运算方法、装置、计算机设备和存储介质
CN111079915B (zh) 运算方法、装置及相关产品
CN111079912B (zh) 运算方法、***及相关产品
CN111079913B (zh) 运算方法、装置及相关产品
CN111966401A (zh) 指令处理方法、装置及相关产品
CN112346707A (zh) 指令处理方法、装置及相关产品
CN112394990A (zh) 浮点转半精度浮点指令处理装置、方法及相关产品
CN111966403A (zh) 指令处理方法、装置及相关产品
CN111966402A (zh) 指令处理方法、装置及相关产品
CN111222633A (zh) 运算方法、装置及相关产品
CN112346781A (zh) 指令处理方法、装置及相关产品
CN112394902A (zh) 半精度浮点转浮点指令处理装置、方法及相关产品
CN112394998A (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