CN111723921B - 人工智能计算装置及相关产品 - Google Patents
人工智能计算装置及相关产品 Download PDFInfo
- Publication number
- CN111723921B CN111723921B CN201910226678.4A CN201910226678A CN111723921B CN 111723921 B CN111723921 B CN 111723921B CN 201910226678 A CN201910226678 A CN 201910226678A CN 111723921 B CN111723921 B CN 111723921B
- Authority
- CN
- China
- Prior art keywords
- instruction
- storage
- loading
- preset
- computing
- 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.)
- Active
Links
- 238000013473 artificial intelligence Methods 0.000 title claims description 30
- 238000004364 calculation method Methods 0.000 claims abstract description 117
- 230000015654 memory Effects 0.000 claims description 34
- 238000010801 machine learning Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 10
- 230000009191 jumping Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 41
- 238000013528 artificial neural network Methods 0.000 description 20
- 238000012546 transfer Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 238000004806 packaging method and process Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
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)
- Advance Control (AREA)
Abstract
本申请提供了一种人工智能计算装置及相关产品,该人工智能计算装置用于用于执行机器学习计算,本申请实施例通过将不具有关联关系的指令进行并行执行,可减少因串行执行指令集中的指令消耗的时间,提高计算装置的计算效率,通过将针对重复的指令使用操作码存储区域的同一操作码,节省操作码的存储空间,可缩减第二时间片中的指令集中各指令的代码量,也可节省指令存储空间,提高运算效率。
Description
技术领域
本申请涉及信息处理技术领域,具体涉及一种人工智能计算装置及相关产品。
背景技术
人工神经网络是一种功能强大的算法,近年来被应用于图像、语言等各种领域。而人工智能计算装置的出现可以使神经网络得到硬件的支持,更高效地进行计算。人工智能计算装置一般有自己的指令集,指令集中会包含较多的待执行指令,执行指令集中的所有指令耗时较长,效率受到影响,也会包含重复执行的指令,例如,在进行数据加载的过程中,若数据规模较大,则需要多次搬运才能完成地址空间转换,又例如,模板运算中重复的加法乘法运算等,从而导致计算效率降低。
发明内容
本申请实施例提供了一种人工智能计算装置及相关产品,可提升指令的执行速率,提高计算效率。
第一方面,提供一种人工智能计算装置,所述人工智能计算装置包括控制器单元、存储单元和执行单元;所述存储单元连接外部存储装置,所述执行单元包括加载执行单元、计算执行单元和存储执行单元;
所述控制器单元,用于获取待执行的第一指令集,所述第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,若所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系,将所述第一加载指令、所述第一计算指令和所述第一存储指令发送至所述执行单元;
所述执行单元,用于在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令;其中,所述存储执行单元用于根据所述第一存储指令将第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置,所述计算执行单元用于根据所述第一计算指令对第二运算任务中第二输入数据进行计算,得到第二计算结果;所述加载执行单元用于根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
第二方面,本申请实施例提供了一种人工智能计算方法,应用于人工智能计算装置,所述人工智能计算装置包括控制器单元、存储单元和执行单元;所述存储单元连接外部存储装置,所述执行单元包括加载执行单元、计算执行单元和存储执行单元;所述方法包括:
所述控制器单元获取待执行的第一指令集,所述第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,若所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系,将所述第一加载指令、所述第一计算指令和所述第一存储指令发送至所述执行单元;
所述执行单元在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令;其中,所述存储执行单元根据所述第一存储指令将第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置,所述计算执行单元根据所述第一计算指令对第二运算任务中第二输入数据进行计算,得到第二计算结果;所述加载执行单元根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
第三方面,本申请实施例提供了一种机器学习运算装置,该机器学习运算装置包括一个或者多个第一方面所述的人工智能计算装置。该机器学习运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给外围设备;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行链接并传输数据;
其中,多个所述计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第四方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的机器学习运算装置、通用互联接口,和其他处理装置。该机器学习运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
第五方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第三方面所述的机器学习运算装置或者上述第四方面所述的组合处理装置。
第六方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;
第七方面,本申请实施例提供了一种板卡,该板卡包括上述第六方面所述的神经网络芯片封装结构。
第八方面,本申请实施例提供了一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如第二方面所述的方法步骤。
第九方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如第二方面所述的方法步骤。
第十方面,本申请实施例提供了一种电子装置,该电子装置包括上述第五方面所述的神经网络芯片或者上述第七方面所述的板卡。
在一些实施例中,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
可以看出,在本申请实施例的方案中,该计算装置通过控制器单元获取待执行的第一指令集,第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定第一加载指令、第一计算指令和第一存储指令之间是否存在关联关系,若第一加载指令、第一计算指令和第一存储指令之间不存在关联关系,将第一加载指令、第一计算指令和第一存储指令发送至执行单元,执行单元在第一时间片内并行执行第一加载指令、第一计算指令和第一存储指令,本申请实施例通过将不具有关联关系的指令进行并行执行,可减少因串行执行指令集中的指令消耗的时间,提高计算装置的计算效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种人工智能计算装置的结构示意图;
图2A是本申请实施例提供的一种人工智能计算方法的流程示意图;
图2B是本申请实施例提供的一种并行执行神经网络的指令集中的指令的演示示意图;
图2C是本申请实施例提供的一种将指令集中的指令按照树型结构进行排布的演示示意图;
图3是本申请实施例提供的一种组合处理装置的结构图;
图4是本申请实施例提供的另一种组合处理装置的结构图;
图5为本申请实施例提供的一种板卡的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先介绍本申请使用的计算装置。参阅图1,提供了一种人工智能计算装置,该人工智能计算装置用于执行机器学习计算,该计算装置包括:控制器单元11、存储单元10和执行单元12,其中,所述存储单元10连接外部存储装置,所述执行单元12包括加载执行单元121、计算执行单元122和存储执行单元123;其中,
所述控制器单元,用于获取待执行的第一指令集,所述第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,若所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系,将所述第一加载指令、所述第一计算指令和所述第一存储指令发送至所述执行单元;
所述执行单元,用于在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令。
在一个可能的实施例中,在所述确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系方面,所述控制器单元具体用于:
依据所述第一加载指令提取所述第一加载指令中所需数据的第一存储地址区间,依据所述第一计算指令提取所述第一计算指令中所需数据的第二存储地址区间,依据所述第一存储指令提取所述第一存储指令中所需数据的第三存储地址区间,若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
在一个可能的实施例中,在所述确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系方面,所述控制器单元具体用于:
依据所述第一加载指令提取所述第一加载指令对应的第一写入区域,依据所述第一计算指令提取所述第一计算指令对应的第一读取区域和第二写入区域,依据所述第一存储指令提取所述第一存储指令对应的第二读取区域;
若所述第一写入区域、所述第一读取区域、所述第二写入区域和所述第二读取区域之间均不存在重叠区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
在一个可能的实施例中,所述人工智能计算装置还包括存储单元,所述存储单元连接外部存储装置,所述执行单元包括加载执行单元、计算执行单元和存储执行单元,在所述在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令方面,所述存储执行单元用于根据所述第一存储指令将第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置,所述计算执行单元用于根据所述第一计算指令对第二运算任务中第二输入数据进行计算,得到第二计算结果;所述加载执行单元用于根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
在一个可能的实施例中,所述存储单元包括第一存储区域和第二存储区域,在所述根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元方面,所述加载执行单元具体用于:
在所述第一时间片内根据所述第一加载指令将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域;
所述执行单元在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令后,所述控制器单元还用于:
获取第二指令集,所述第二指令集包含第二加载指令、第二计算指令和第二存储指令,所述第二存储指令为用于将所述第二计算结果从所述存储单元传输至所述外部存储装置的指令,所述第二计算指令为用于对所述第三运算任务中的所述第三输入数据进行计算并得到第三计算结果的指令,所述第二加载指令为将第四运算任务中的第四输入数据从所述外部存储装置传输至所述存储单元的指令;
所述执行单元,还用于在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令,所述第二时间片晚于所述第一时间片;
其中,所述存储执行单元用于根据所述第二存储指令将所述第二计算结果从所述存储单元传输至所述外部存储装置;所述计算执行单元用于在所述第二时间片内根据所述第二计算指令从所述第一存储区域获取所述第三输入数据,并根据所述第三输入数据进行计算,得到所述第三计算结果;所述加载执行单元用于在所述第二时间片内根据所述第二加载指令将所述第四输入数据进行乒乓操作从所述外部存储装置传输至所述第二存储区域。
在一个可能的实施例中,所述第三输入数据包括多个第三输入子数据,在将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域方面,所述加载执行单元具体用于:
预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至第一存储区域,并从所述第一存储区域的两端存储至中间。
在一个可能的实施例中,在所述控制器单元获取第二加载指令、第二计算指令和第二存储指令之后,所述执行单元在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令之前,所述控制器单元还用于:
确定所述第一指令集与所述第二指令集之间是否构成循环体;
若所述第一指令集与所述第二指令集之间构成循环体,根据跳转指令跳转至所述第一指令集对应的指令的操作码存储区域,从所述操作码存储区域获取所述第一加载指令的操作码,将所述操作码作为所述第二加载指令的操作码,并获取所述第二加载指令对应的操作域,其中,所述操作码包括所述第一计算指令的标识;所述操作域包括所述第四输入数据的存储地址。
在一个可能的实施例中,在所述确定所述第一指令集与所述第二指令集之间是否构成循环体方面,所述控制器单元具体用于:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
如图2A所示,图2A为本申请实施例提供的一种人工智能计算方法的流程示意图,应用于人工智能计算装置,所述人工智能计算装置包括控制器单元、存储单元和执行单元;所述存储单元连接外部存储装置,所述执行单元包括加载执行单元、计算执行单元和存储执行单元;所述方法包括:
201、获取待执行的第一指令集,所述第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,若所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系,将所述第一加载指令、所述第一计算指令和所述第一存储指令发送至所述执行单元;
202、在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令。
本申请实施例中,可将神经网络的指令集中的多个指令划分为输入输出指令和计算指令,输入输出指令可划分为加载指令和存储指令,其中,人工智能计算装置的执行单元用于根据加载指令将输入数据从外部存储装置传输到人工智能计算装置上的存储单元,然后根据计算指令从存储单元直接获取输入数据,并根据输入数据进行计算,得到计算结果,将计算结果缓存至存储单元,最后根据存储指令将计算结果从存储单元传输到外部存储装置。
其中,加载指令与存储指令之间、加载指令与计算指令之间、存储指令与计算指令之间可以并行执行,加载指令与加载指令之间、计算指令与计算指令之间、存储指令与存储指令之间不可并行执行,需要串行执行。
其中,在执行指令的过程中,在两条指令之间,若执行一条指令需要用到另一条指令的数据,表明该两条指令之间存在关联关系,例如,若执行一条计算指令需要用到一条加载指令加载的数据,表明该计算指令需要在该加载指令执行完才能执行,可确定该加载指令与该计算指令具有关联关系,因此,可确定待执行的指令之间的关联关系,若确定待执行的多条指令不存在关联关系,则通过执行单元中的加载执行单元、计算执行单元和存储执行单元并行执行不存在关联关系的两条或者三条指令,本申请实施例中,可并行执行指令的情况包括以下几种:加载指令与存储指令之间可并行执行、加载指令与计算指令之间可并行执行、存储指令与计算指令之间可并行执行、加载指令计算指令与存储指令之间可并行执行。因此,本申请实施例中,可将神经网络的指令集中的多个指令按照流水线的方式进行排布,请参阅图2B,图2B为本申请实施例提供的一种并行执行神经网络的指令集中的指令的演示示意图,如图2B所示,L代表加载指令、C代表计算指令、S代表存储指令,其中,横向的每一行加载指令、计算指令和存储指令对应一个运算任务,可对输入数据进行加载、计算得到计算结果,将结果进行存储;纵向的每一列加载指令、计算指令和存储指令对应的一个时间片,表示将不存在关联关系的加载指令、计算指令和存储指令进行并行执行。可见,通过将不存在关联关系的指令进行并行执行,可以让不存在关联关系的多个运算任务并行执行,从而节省了计算时间,提高了计算效率。
其中,神经网络的指令集的划分可以不局限于加载指令、计算指令和存储指令三个阶段的划分,还可以其他标准划分指令,本申请实施例不做限定。
可选地,上述步骤201中,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,可包括以下步骤:
11、所述控制器单元依据所述第一加载指令提取所述第一加载指令中所需数据的第一存储地址区间,依据所述第一计算指令提取所述第一计算指令中所需数据的第二存储地址区间,依据所述第一存储指令提取所述第一存储指令中所需数据的第三存储地址区间;
12、若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
可选地,上述步骤201中,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,可包括以下步骤:
13、所述控制器单元依据所述第一加载指令提取所述第一加载指令对应的第一写入区域,依据所述第一计算指令提取所述第一计算指令对应的第一读取区域和第二写入区域,依据所述第一存储指令提取所述第一存储指令对应的第二读取区域;
14、若所述第一写入区域、所述第一读取区域、所述第二写入区域和所述第二读取区域之间均不存在重叠区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
可选地,所述人工智能计算装置包括存储单元,所述存储单元连接外部存储装置,上述步骤202中,在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令,可包括以下步骤:
21、根据所述第一存储指令将第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置;
根据所述第一计算指令对第二运算任务中第二输入数据进行计算,得到第二计算结果;
22、根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
可选地,所述存储单元包括第一存储区域和第二存储区域,上述步骤22中,所述根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元,可包括以下步骤:
A1、在所述第一时间片内根据所述第一加载指令将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域;
在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令后,所述方法还包括:
A2、获取第二指令集,所述第二指令集包含第二加载指令、第二计算指令和第二存储指令,所述第二存储指令为用于将所述第二计算结果从所述存储单元传输至所述外部存储装置的指令,所述第二计算指令为用于对所述第三运算任务中的所述第三输入数据进行计算并得到第三计算结果的指令,所述第二加载指令为将第四运算任务中的第四输入数据从所述外部存储装置传输至所述存储单元的指令;
A3、在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令,所述第二时间片晚于所述第一时间片;其中,所述存储执行单元用于根据所述第二存储指令将所述第二计算结果从所述存储单元传输至所述外部存储装置;所述计算执行单元用于在所述第二时间片内根据所述第二计算指令从所述第一存储区域获取所述第三输入数据,并根据所述第三输入数据进行计算,得到所述第三计算结果;所述加载执行单元用于在所述第二时间片内根据所述第二加载指令将所述第四输入数据进行乒乓操作从所述外部存储装置传输至所述第二存储区域。
其中,可将存储单元划分为第一存储区域和第二存储区域,在执行神经网络的指令集中的加载指令时,可进行乒乓操作轮流将输入数据从外部存储装置传输到第一存储区域和第二存储区域进行存储,具体地,在第一时间片内,可根据第一加载指令将第三输入数据传存储至第一存储单元,在第二时间片内,可根据第二加载指令将第四输入数据存储至第二存储区域,此时可并行执行第二计算指令,根据第二计算指令从第一存储区域获取第三输入数据进行计算,得到计算结果,在下一时间片,可将下一输入数据存储至第一存储区域,且并行执行第二操作指令对应的下一计算指令,如此循环。从而,可以节省存储单元的存储空间。
可选地,上述步骤A1中,所述第三输入数据包括多个第三输入子数据,将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域,可包括以下步骤:
A11、所述加载执行单元预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
A12、按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至第一存储区域,并从所述第一存储区域的两端存储至中间。
其中,将输入数据第一存储区域中,存储的位置越靠近中间,计算时读取输入数据所需要的时间越长,因此,可在存储上述多个第三输入子数据的过程中,先确定每一第三输入子数据的目标存储时长,然后按照存储时长从大到小的顺序从所述第一存储区域的两端存储至中间,如此,在获取第三输入数据进行计算的过程中,可减少较大的目标存储时长对应的第三输入子数据的读取时长,进而提高运算效率。
类似地,在将输入数据从外部存储装置传输至第二存储区域的过程中,也可按照存储时长从大到小的顺序从所述第二存储区域的两端存储至中间。
举例说明,执行运算Yi=∑(wxi+b)的过程中中,w和b为会重复读取操作的数据,可确定w和b对应的存储时长较长,可将w和b存储在第一存储区域或者第二存储区域的两端,将xi存储在第一存储区域或者第二存储区域的中间,从而,在从第一存储区域或者第二存储区域读取数据时,每次读取w和b的时长较小,从而可减少读取数据的耗时。
可选地,在所述控制器单元获取第二加载指令、第二计算指令和第二存储指令之后,所述执行单元在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令之前,还可包括以下步骤:
B1、确定所述第一指令集与所述第二指令集之间是否构成循环体;
B2、若所述所述第一指令集与所述第二指令集之间构成循环体,根据跳转指令跳转至所述第一指令集对应的指令的操作码存储区域,从所述操作码存储区域获取所述第一加载指令的操作码,将所述操作码作为所述第二加载指令的操作码,并获取所述第二加载指令对应的操作域,其中,所述操作码包括所述第一计算指令的标识;所述操作域包括所述第四输入数据的存储地址。
本申请实施例中,可将神经网络的指令集中的指令按照树型结构进行排布,请参阅图2C,图2C为本申请实施例提供的一种将指令集中的指令按照树型结构进行排布的演示示意图,如图2C所示,树型结构中第一层数字用于表示芯片信息,例如,“1”表示第一个芯片,第二层数字用于表示时间片,例如“1”表示第一时间片,“2”表示第二时间片,以此类推,第三层字母表示每一时间片内的加载指令、计算指令、存储指令,其中,每一指令对应一个预设指令信息,预设指令信息中可包括以下至少一种信息:指令类型、剩余执行次数、是否奇偶性翻转,其中,指令类型是指该指令为加载指令、计算指令或者存储指令,以及当指令为计算指令时,计算指令中包含的运算符类型,运算符类型可包括以下至少一种:加、减、乘、除、卷积、以及上述多种运算符之间的组合等等,剩余执行次数是指针对一个运算中需要执行多次的重复运算的剩余执行次数。例如,在运算Yi=∑(wxi+b),i=1,2,3,...100时,i的取值会从1变化到100,则该运算要重复执行Yi=wxi+b的总次数为100,第一时间片中,则该运算要重复执行Yi=wxi+b的总次数为100,每一次都要执行加法和乘法运算,因此,可确定该运算中100次Yi=wxi+b的运算为一个循环体,本申请实施例中,可将第一时间片对应的第一计算指令对应的操作码存储在操作码存储区域,无需重复存储100次Yi=wxi+b运算对应的多个指令的操作码,在执行第二时间片的过程中,可通过跳转指令,跳转至操作码存储区域,获取第二指令集对应的指令的操作码,从而可重复使用操作码存储区域的操作码,节省操作码的存储空间,可缩减第二时间片中的指令集中各指令的代码量,也可节省指令存储空间,提高运算效率。
本申请实施例中,假定Y1=wx1+b为第一运算任务,Y2=wx2+b为第二运算任务,Y3=wx3+b为第三运算任务,Y1=wx1+b运算对应的第一存储指令,Y2=wx2+b运算对应的第一计算指令和Y3=wx3+b对应的第一加载指令之间不存在关联关系,可在第一时间片内并行执行第一加载指令、所述第一计算指令和所述第一存储指令,其中,Y1=wx1+b运算对应的多个预设指令信息中,Y1=wx1+b运算对应的计算指令的剩余计算次数为99次。进一步地,在第二时间片内,可并行执行不存在关联关系的Y2=wx2+b运算对应的第二存储指令、Y3=wx3+b对应的第二计算指令以及Y4=wx4+b运算对应的第二加载指令,其中,Y2=wx2+b运算对应的第一计算指令的剩余计算次数为98次。可见,第一时间片对应的第一指令集与第二时间片内的第二指令集中的指令之间,第一加载指令与第二加载指令类型相同,剩余加载次数不同,第一存储指令与第二存储指令类型相同,剩余存储次数不同,第一计算指令与第二计算指令中的运算符类型都包括加法和乘法运算符,且运算顺序都相同,仅仅是剩余计算次数不同。因此,可确定第一指令集与第二指令集为循环体。
可选地,上述步骤B1中,确定所述第一指令集与所述第二指令集之间是否构成循环体,可包括以下步骤:
C1、获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
C2、将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;以及将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
C3、若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
本申请实施例中,可预先对各个时间片的指令集对应的循环体进行解析,得到树型结构中每一节点的预设指令信息,针对紧邻的第一时间片和第二时间片,可判断第一时间片对应的第一指令集与第二时间片对应的第二指令集是否构成循环体,具体地,将第一加载指令对应的第一预设指令信息与第二加载指令对应的第二预设指令信息进行比对;将第一计算指令对应的第三预设指令信息与第二计算指令对应的第四预设指令信息进行比对;以及将第一存储指令对应的第五预设指令信息与第二存储指令对应的第六预设指令信息进行比对;若满足除了的剩余执行次数不同,且第二时间片对应的指令的剩余执行次数较小,其余信息完全相同,则可确定第二时间片对应的第二指令集合与第一时间片对应的第一指令集合构成循环体,例如,若第一时间片中包含加载指令、计算指令和存储指令,计算指令包括的运算符为加法和乘法,加载指令的剩余操作次数为5次,计算指令的剩余操作次数为9次,存储指令的剩余操作次数为3次,第二时间片中的第二指令集中也包含加载指令、计算指令和存储指令,计算指令包括的运算符为加法和乘法,加载指令的剩余操作次数为4次,计算指令的剩余操作次数为8次,存储指令的剩余操作次数为2次,可确定第一时间片对应的第一指令集与所述计算指令所属的第二时间片对应的第二指令集构成循环体,从而,可确定连续的多个时间片对应的多个指令集是否构成循环体,若连续的多个时间片对应的多个指令集构成循环体,表明该连续多个时间片中类型相同的指令为重复执行的指令,在该循环体中,循环体的起点为剩余操作次数最大的节点所在的时间片,循环体的长度为满足循环条件的最远时间片与起始时间片的差值。
再举例说明,如图2B所示,横向的每一行加载指令、计算指令和存储指令对应一个运算任务,例如,第一个运算任务可包括加载指令La、计算指令Ca和存储指令Sa,可通过加载指令La从外部存储装置将输入数据加载到人工智能计算装置上存储单元的a1区域;然后通过计算指令Ca从a1区域读取输入数据,对输入数据进行计算,得到计算结果,将计算结果存储在人工智能计算装置上存储单元的a2区域;最后,通过存储指令Sa从a2区域读取计算结果,并将计算结果从存储单元的a2区域传输至外部存储装置,类似地,第二个运算任务可包括加载指令Lb、计算指令Cb和存储指令Sb,第三个运算任务可包括加载指令Lc、计算指令Cc和存储指令Sc,第四个运算任务可包括加载指令Ld、计算指令Cd和存储指令Sd。可以看出,在第一时间片内,若第一运算任务的存储指令Sa、第二运算任务的计算指令Cb和第三运算任务的加载指令Lc之间不存在关联关系,可在第一时间片内并行执行存储指令Sa、计算指令Cb以及加载指令Lc,此外,若第二运算任务、第三运算任务与第四运算任务之间不具有关联关系,还可在第二时间片内并行执行第二运算任务的存储指令Sb、第三个运算任务的计算指令Cc以及第四个运算任务的加载指令Ld。
进一步地,若第一时间片内并行执行的存储指令Sa、计算指令Cb以及加载指令Lc构成的第一指令集与第二时间片内并行执行的存储指令Sb、计算指令Cc、加载指令Ld构成的第二指令集构成循环体,可在执行第二时间片对应的指令集中的指令时,根据跳转指令跳转至第一指令集对应的指令的操作码存储区域,具体地,从操作码存储区域获取加载指令Lc的第一操作码、计算指令Cb的第二操作码、存储指令Sa的第三操作码;然后,将第一操作码作为加载指令Ld的操作码,将第二操作码作为计算指令Cc的操作码,将第三操作码作为存储指令Sb的操作码;此外,可获取加载指令Ld对应的第一操作域,计算指令Cc对应的第二操作域,存储指令Sb对应的第三操作域。
本申请提供的技术方案通过将不具有关联关系的指令进行并行执行,减少了指令执行时间,提高了神经网络的运算效率,对神经网络的指令集中重复的指令进行折叠,通过跳转指令执行重复的指令,减少了重复指令展开的代码量,通过将神经网络中的数据存储在划分的不同区域,提高了获取数据的效率,从而提高了神经网络的运算效率。
本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的人工智能计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上人工智能计算装置时,人工智能计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图3为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图4所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还公开了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。参阅图5,图5提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE3.0X16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种人工智能计算装置,其特征在于,所述人工智能计算装置包括控制器单元和执行单元;其中,
所述控制器单元,用于获取待执行的第一指令集,所述第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,若所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系,将所述第一加载指令、所述第一计算指令和所述第一存储指令发送至所述执行单元;
所述执行单元,用于在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令;
所述人工智能计算装置还包括存储单元,所述存储单元连接外部存储装置,所述执行单元包括加载执行单元、计算执行单元和存储执行单元,在所述在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令方面,
所述存储执行单元用于根据所述第一存储指令将第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置,所述计算执行单元用于根据所述第一计算指令对第二运算任务中第二输入数据进行计算,得到第二计算结果;所述加载执行单元用于根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元;
所述存储单元包括第一存储区域和第二存储区域,在所述根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元方面,所述加载执行单元具体用于:
在所述第一时间片内根据所述第一加载指令将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域;
所述执行单元在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令后,所述控制器单元还用于:
获取第二指令集,所述第二指令集包含第二加载指令、第二计算指令和第二存储指令,所述第二存储指令为用于将所述第二计算结果从所述存储单元传输至所述外部存储装置的指令,所述第二计算指令为用于对所述第三运算任务中的所述第三输入数据进行计算并得到第三计算结果的指令,所述第二加载指令为将第四运算任务中的第四输入数据从所述外部存储装置传输至所述存储单元的指令;
所述执行单元,还用于在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令,所述第二时间片晚于所述第一时间片;
其中,所述存储执行单元用于根据所述第二存储指令将所述第二计算结果从所述存储单元传输至所述外部存储装置;所述计算执行单元用于在所述第二时间片内根据所述第二计算指令从所述第一存储区域获取所述第三输入数据,并根据所述第三输入数据进行计算,得到所述第三计算结果;所述加载执行单元用于在所述第二时间片内根据所述第二加载指令将所述第四输入数据进行乒乓操作从所述外部存储装置传输至所述第二存储区域。
2.根据权利要求1所述的装置,其特征在于,在所述确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系方面,所述控制器单元具体用于:
依据所述第一加载指令提取所述第一加载指令中所需数据的第一存储地址区间,依据所述第一计算指令提取所述第一计算指令中所需数据的第二存储地址区间,依据所述第一存储指令提取所述第一存储指令中所需数据的第三存储地址区间,若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
3.根据权利要求1所述的装置,其特征在于,在所述确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系方面,所述控制器单元具体用于:
依据所述第一加载指令提取所述第一加载指令对应的第一写入区域,依据所述第一计算指令提取所述第一计算指令对应的第一读取区域和第二写入区域,依据所述第一存储指令提取所述第一存储指令对应的第二读取区域;
若所述第一写入区域、所述第一读取区域、所述第二写入区域和所述第二读取区域之间均不存在重叠区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
4.根据权利要求1所述的装置,其特征在于,所述第三输入数据包括多个第三输入子数据,在将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域方面,所述加载执行单元具体用于:
预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至第一存储区域,并从所述第一存储区域的两端存储至中间。
5.根据权利要求1或4所述的装置,其特征在于,在所述控制器单元获取第二加载指令、第二计算指令和第二存储指令之后,所述执行单元在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令之前,所述控制器单元还用于:
确定所述第一指令集与所述第二指令集之间是否构成循环体;
若所述第一指令集与所述第二指令集之间构成循环体,根据跳转指令跳转至所述第一指令集对应的指令的操作码存储区域,从所述操作码存储区域获取所述第一加载指令的操作码,将所述操作码作为所述第二加载指令的操作码,并获取所述第二加载指令对应的操作域,其中,所述操作码包括所述第一计算指令的标识;所述操作域包括所述第四输入数据的存储地址。
6.根据权利要求5所述的装置,其特征在于,在所述确定所述第一指令集与所述第二指令集之间是否构成循环体方面,所述控制器单元具体用于:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
7.一种人工智能计算方法,其特征在于,应用于人工智能计算装置,所述方法包括:
获取待执行的第一指令集,所述第一指令集包含第一加载指令、第一计算指令和第一存储指令;确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,若所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系,将所述第一加载指令、所述第一计算指令和所述第一存储指令发送至所述执行单元;
在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令;
所述人工智能计算装置包括存储单元,所述存储单元连接外部存储装置,所述在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令,包括:
根据所述第一存储指令将第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置;
根据所述第一计算指令对第二运算任务中第二输入数据进行计算,得到第二计算结果;
根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元;
所述存储单元包括第一存储区域和第二存储区域,所述根据所述第一加载指令将第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元,包括:
在所述第一时间片内根据所述第一加载指令将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域;
在第一时间片内并行执行所述第一加载指令、所述第一计算指令和所述第一存储指令后,所述方法还包括:
获取第二指令集,所述第二指令集包含第二加载指令、第二计算指令和第二存储指令,所述第二存储指令为用于将所述第二计算结果从所述存储单元传输至所述外部存储装置的指令,所述第二计算指令为用于对所述第三运算任务中的所述第三输入数据进行计算并得到第三计算结果的指令,所述第二加载指令为将第四运算任务中的第四输入数据从所述外部存储装置传输至所述存储单元的指令;
在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令,所述第二时间片晚于所述第一时间片;其中,所述存储执行单元用于根据所述第二存储指令将所述第二计算结果从所述存储单元传输至所述外部存储装置;所述计算执行单元用于在所述第二时间片内根据所述第二计算指令从所述第一存储区域获取所述第三输入数据,并根据所述第三输入数据进行计算,得到所述第三计算结果;所述加载执行单元用于在所述第二时间片内根据所述第二加载指令将所述第四输入数据进行乒乓操作从所述外部存储装置传输至所述第二存储区域。
8.根据权利要求7所述的方法,其特征在于,所述确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,包括:
依据所述第一加载指令提取所述第一加载指令中所需数据的第一存储地址区间,依据所述第一计算指令提取所述第一计算指令中所需数据的第二存储地址区间,依据所述第一存储指令提取所述第一存储指令中所需数据的第三存储地址区间;
若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
9.根据权利要求7所述的方法,其特征在于,所述确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间是否存在关联关系,包括:
依据所述第一加载指令提取所述第一加载指令对应的第一写入区域,依据所述第一计算指令提取所述第一计算指令对应的第一读取区域和第二写入区域,依据所述第一存储指令提取所述第一存储指令对应的第二读取区域;
若所述第一写入区域、所述第一读取区域、所述第二写入区域和所述第二读取区域之间均不存在重叠区域,确定所述第一加载指令、所述第一计算指令和所述第一存储指令之间不存在关联关系。
10.根据权利要求7所述的方法,其特征在于,所述第三输入数据包括多个第三输入子数据,所述将所述第三运算任务中的第三输入数据进行乒乓操作从所述外部存储装置传输至所述第一存储区域,包括:
预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至第一存储区域,并从所述第一存储区域的两端存储至中间。
11.根据权利要求7或10所述的方法,其特征在于,在所述控制器单元获取第二加载指令、第二计算指令和第二存储指令之后,所述执行单元在第二时间片内并行执行所述第二加载指令、所述第二计算指令和所述第二存储指令之前,所述方法还包括:
确定所述第一指令集与所述第二指令集之间是否构成循环体;
若所述所述第一指令集与所述第二指令集之间构成循环体,根据跳转指令跳转至所述第一指令集对应的指令的操作码存储区域,从所述操作码存储区域获取所述第一加载指令的操作码,将所述操作码作为所述第二加载指令的操作码,并获取所述第二加载指令对应的操作域,其中,所述操作码包括所述第一计算指令的标识;所述操作域包括所述第四输入数据的存储地址。
12.根据权利要求11所述的方法,其特征在于,所述确定所述第一指令集与所述第二指令集之间是否构成循环体,包括:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;以及将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
13.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求7-12任一项所述的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如权利要求7-12任一项所述的方法。
15.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或者多个如权利要求1-6任意一项所述的人工智能计算装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910226678.4A CN111723921B (zh) | 2019-03-22 | 2019-03-22 | 人工智能计算装置及相关产品 |
US17/440,529 US11983535B2 (en) | 2019-03-22 | 2020-03-20 | Artificial intelligence computing device and related product |
PCT/CN2020/080447 WO2020192587A1 (zh) | 2019-03-22 | 2020-03-20 | 人工智能计算装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910226678.4A CN111723921B (zh) | 2019-03-22 | 2019-03-22 | 人工智能计算装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723921A CN111723921A (zh) | 2020-09-29 |
CN111723921B true CN111723921B (zh) | 2024-05-14 |
Family
ID=72563779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910226678.4A Active CN111723921B (zh) | 2019-03-22 | 2019-03-22 | 人工智能计算装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723921B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1133452A (zh) * | 1994-10-13 | 1996-10-16 | 北京多思科技工业园股份有限公司 | 宏指令集对称式并行体系结构微处理器 |
WO1999019795A1 (en) * | 1997-10-13 | 1999-04-22 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for optimizing execution of load and store instructions |
US5903749A (en) * | 1996-07-02 | 1999-05-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs |
US6631460B1 (en) * | 2000-04-27 | 2003-10-07 | Institute For The Development Of Emerging Architectures, L.L.C. | Advanced load address table entry invalidation based on register address wraparound |
JP2011192305A (ja) * | 2011-06-01 | 2011-09-29 | Renesas Electronics Corp | 半導体信号処理装置 |
CN109117184A (zh) * | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行平面旋转指令的方法 |
CN109284823A (zh) * | 2017-04-20 | 2019-01-29 | 上海寒武纪信息科技有限公司 | 一种运算装置及相关产品 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2797234A1 (en) * | 2010-05-01 | 2011-11-10 | Core Technology Limited | Process execution components |
KR102152735B1 (ko) * | 2013-09-27 | 2020-09-21 | 삼성전자주식회사 | 그래픽 처리 장치 및 이의 동작 방법 |
US10409614B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
-
2019
- 2019-03-22 CN CN201910226678.4A patent/CN111723921B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1133452A (zh) * | 1994-10-13 | 1996-10-16 | 北京多思科技工业园股份有限公司 | 宏指令集对称式并行体系结构微处理器 |
US5903749A (en) * | 1996-07-02 | 1999-05-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs |
WO1999019795A1 (en) * | 1997-10-13 | 1999-04-22 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for optimizing execution of load and store instructions |
US6631460B1 (en) * | 2000-04-27 | 2003-10-07 | Institute For The Development Of Emerging Architectures, L.L.C. | Advanced load address table entry invalidation based on register address wraparound |
JP2011192305A (ja) * | 2011-06-01 | 2011-09-29 | Renesas Electronics Corp | 半導体信号処理装置 |
CN109284823A (zh) * | 2017-04-20 | 2019-01-29 | 上海寒武纪信息科技有限公司 | 一种运算装置及相关产品 |
CN109117184A (zh) * | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行平面旋转指令的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111723921A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN110119807B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111047022B (zh) | 一种计算装置及相关产品 | |
CN109739703B (zh) | 调错方法及相关产品 | |
CN109670581B (zh) | 一种计算装置及板卡 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN111209243B (zh) | 数据处理装置、方法及相关产品 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN111723920B (zh) | 人工智能计算装置及相关产品 | |
CN111381882B (zh) | 数据处理装置及相关产品 | |
CN111047021B (zh) | 一种计算装置及相关产品 | |
CN111723921B (zh) | 人工智能计算装置及相关产品 | |
WO2020192587A1 (zh) | 人工智能计算装置及相关产品 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111275197B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111062469B (zh) | 计算装置及相关产品 | |
CN111339060B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111382855B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN111338694B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
CN111222632B (zh) | 计算装置、计算方法及相关产品 | |
CN112396169B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111384944B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |