CN111723920B - 人工智能计算装置及相关产品 - Google Patents

人工智能计算装置及相关产品 Download PDF

Info

Publication number
CN111723920B
CN111723920B CN201910226552.7A CN201910226552A CN111723920B CN 111723920 B CN111723920 B CN 111723920B CN 201910226552 A CN201910226552 A CN 201910226552A CN 111723920 B CN111723920 B CN 111723920B
Authority
CN
China
Prior art keywords
instruction
storage
preset
calculation
instruction information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910226552.7A
Other languages
English (en)
Other versions
CN111723920A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910226552.7A priority Critical patent/CN111723920B/zh
Priority to US17/440,529 priority patent/US11983535B2/en
Priority to PCT/CN2020/080447 priority patent/WO2020192587A1/zh
Publication of CN111723920A publication Critical patent/CN111723920A/zh
Application granted granted Critical
Publication of CN111723920B publication Critical patent/CN111723920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction 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)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (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、确定所述第一指令集与所述第二指令集之间是否构成循环体。
可选地,所述第一指令集包含第一运算任务的第一加载指令、第一计算指令和第一存储指令;所述第二指令集包含第二运算任务的第二加载指令、第二计算指令和第二存储指令;上述步骤202中,确定所述第一指令集与所述第二指令集之间是否构成循环体,可包括以下步骤:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
其中,预设指令信息中可包括以下至少一种信息:指令类型、剩余执行次数、是否奇偶性翻转。指令类型是指该指令为加载指令、计算指令或者存储指令,以及当指令为计算指令时,计算指令中包含的运算符类型,运算符类型可包括以下至少一种:加、减、乘、除、卷积、以及上述多种运算符之间的组合等等,剩余执行次数是指针对一个运算中需要执行多次的重复运算的剩余执行次数。
本申请实施例中,可将第一运算任务中的第一加载指令、第一计算指令和第一存储指令与第二运算任务的第二加载指令、第二计算指令和第二存储指令对应的预设指令信息进行比对确定第一指令集与第二指令集之间构成循环体,例如,在运算Yi=∑(wxi+b),i=1,2,3,...100时,假定Y1=wx1+b为第一运算任务,Y2=wx2+b为第二运算任务,Y1=wx1+b运算的第一加载指令、第一计算指令和第一存储指令对应第一指令集,Y2=wx2+b运算的第二加载指令、第二计算指令和第二存储指令对应第二指令集。其中,Y1=wx1+b运算对应的多个预设指令信息中,Y1=wx1+b运算对应的第一计算指令的剩余计算次数为99次,Y2=wx2+b运算对应的第二计算指令的剩余计算次数为98次,可见,第一运算任务对应的第一指令集与第二运算任务对应的第二指令集中的指令之间,第一加载指令与第二加载指令类型相同,剩余加载次数不同,第一存储指令与第二存储指令类型相同,剩余存储次数不同,第一计算指令与第二计算指令中的运算符类型都包括加法和乘法运算符,且运算顺序都相同,仅仅是剩余计算次数不同。因此,可确定第一指令集与第二指令集为循环体。
可选地,所述第一指令集包含第一运算任务的第一存储指令,第二运算任务的第二计算指令和第三运算任务的第三加载指令;所述第二指令集包含第二运算任务的第二存储指令,第三运算任务的第三计算指令和第四运算任务的第四加载指令;上述步骤202中,确定所述第一指令集与所述第二指令集之间是否构成循环体,可包括以下步骤:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;将所述第二计算指令对应的第七预设指令信息与所述第三计算指令对应的第八预设指令信息进行比对;将所述第三加载指令对应的第九预设指令信息与所述第四加载指令对应的第十预设指令信息进行比对;
若所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,所述第七预设指令信息与第八预设指令信息之间仅存在操作次数的差异,且所述第九预设指令信息与所述第十预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
本申请实施例中,可将神经网络的指令集中的指令按照树型结构进行排布,请参阅图2B,图2B为本申请实施例提供的一种将指令集中的指令按照树型结构进行排布的演示示意图,如图2B所示,树型结构中第一层数字用于表示芯片信息,例如,“1”表示第一个芯片,第二层数字用于表示时间片,例如“1”表示第一时间片,“2”表示第二时间片,以此类推,第三层字母表示每一时间片内的加载指令、计算指令、存储指令,其中,L代表加载指令、C代表计算指令、S代表存储指令,每一指令对应一个预设指令信息,例如,在运算Yi=∑(wxi+b),i=1,2,3,...100时,i的取值会从1变化到100,则该运算要重复执行Yi=wxi+b的总次数为100,第一时间片中,则该运算要重复执行Yi=wxi+b的总次数为100,每一次都要执行加法和乘法运算,因此,可确定该运算中100次Yi=wxi+b的运算为一个循环体。
其中,可预先对各个时间片的指令集对应的循环体进行解析,得到树型结构中每一节点的预设指令信息,针对紧邻的第一时间片和第二时间片,可判断第一时间片对应的第一指令集与第二时间片对应的第二指令集是否构成循环体,具体地,将第一运算任务的第一存储指令对应的第五预设指令信息与第二运算任务的第二存储指令对应的第六预设指令信息进行比对;将第二运算任务的第二计算指令对应的第七预设指令信息与第三运算任务的第三计算指令对应的第八预设指令信息进行比对;以及将第三运算任务的第三加载指令对应的第九预设指令信息与第四运算任务的第四加载指令对应的第十预设指令信息进行比对;若满足除了的剩余执行次数不同,且第二时间片对应的指令的剩余执行次数较小,其余信息完全相同,则可确定第二时间片对应的第二指令集合与第一时间片对应的第一指令集合构成循环体,例如,若第一时间片中包含加载指令、计算指令和存储指令,计算指令包括的运算符为加法和乘法,加载指令的剩余操作次数为5次,计算指令的剩余操作次数为9次,存储指令的剩余操作次数为3次,第二时间片中的第二指令集中也包含加载指令、计算指令和存储指令,计算指令包括的运算符为加法和乘法,加载指令的剩余操作次数为4次,计算指令的剩余操作次数为8次,存储指令的剩余操作次数为2次,可确定第一时间片对应的第一指令集与所述计算指令所属的第二时间片对应的第二指令集构成循环体。
进一步地,可确定连续的多个时间片对应的多个指令集是否构成循环体,若连续的多个时间片对应的多个指令集构成循环体,表明该连续多个时间片中类型相同的指令为重复执行的指令,在该循环体中,循环体的起点为剩余操作次数最大的节点所在的时间片,循环体的长度为满足循环条件的最远时间片与起始时间片的差值。
203、在所述第一指令集与所述第二指令集之间构成循环体时,根据所述第一指令集的指令信息执行所述第二指令集中的指令。
其中,上述指令信息可包括指令的操作码和操作域,具体实现中,若第一指令集与所述第二指令集之间构成循环体时,可将第一指令集中的指令的操作码和操作域进行存储,然后,在执行第二指令集中的指令时,直接跳转至第一指令集中与第二指令集中的指令相对应的指令的操作码,进而根据第一指令集的指令的操作码执行第二指令集中的指令。
例如,在运算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对应的第一加载指令,第二指令集包括Y2=wx2+b运算对应的第二存储指令、Y3=wx3+b对应的第二计算指令以及Y4=wx4+b运算对应的第二加载指令。其中,Y1=wx1+b运算对应的多个预设指令信息中,Y1=wx1+b运算对应的计算指令的剩余计算次数为99次;Y2=wx2+b运算对应的第一计算指令的剩余计算次数为98次,可见,第一时间片对应的第一指令集与第二时间片内的第二指令集中的指令之间,第一加载指令与第二加载指令类型相同,剩余加载次数不同,第一存储指令与第二存储指令类型相同,剩余存储次数不同,第一计算指令与第二计算指令中的运算符类型都包括加法和乘法运算符,且运算顺序都相同,仅仅是剩余计算次数不同。因此,可确定第一指令集与第二指令集为循环体。
可选地,上述步骤203中,根据所述第一指令集的指令信息执行所述第二指令集中的指令,可包括以下步骤:
根据跳转指令跳转至所述第一指令集中与所述第二指令集中的第二指令对应的第一指令的操作码存储区域,从所述操作码存储区域获取所述第一指令的操作码,将所述操作码作为所述第二指令的操作码,其中,所述操作码包括所述第一指令的标识。
可选地,本申请实施例中,还可包括以下步骤:
A1确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系;
A2、在所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系时,在第一时间片内并行执行所述第一存储指令、所述第二计算指令和所述第三加载指令。
本申请实施例中,加载指令与存储指令之间、加载指令与计算指令之间、存储指令与计算指令之间可以并行执行,加载指令与加载指令之间、计算指令与计算指令之间、存储指令与存储指令之间不可并行执行,需要串行执行。
其中,在执行指令的过程中,在两条指令之间,若执行一条指令需要用到另一条指令的数据,表明该两条指令之间存在关联关系,例如,若执行一条计算指令需要用到一条加载指令加载的数据,表明该计算指令需要在该加载指令执行完才能执行,可确定该加载指令与该计算指令具有关联关系,因此,可确定待执行的指令之间的关联关系,若确定待执行的多条指令不存在关联关系,则通过执行单元中的加载执行单元、计算执行单元和存储执行单元并行执行不存在关联关系的两条或者三条指令,本申请实施例中,可并行执行指令的情况包括以下几种:加载指令与存储指令之间可并行执行、加载指令与计算指令之间可并行执行、存储指令与计算指令之间可并行执行、加载指令计算指令与存储指令之间可并行执行。因此,本申请实施例中,可将神经网络的指令集中的多个指令按照流水线的方式进行排布,请参阅图2C,图2C为本申请实施例提供的一种并行执行神经网络的指令集中的指令的演示示意图,如图2C所示,L代表加载指令、C代表计算指令、S代表存储指令,其中,横向的每一行加载指令、计算指令和存储指令对应一个运算任务,可对输入数据进行加载、计算得到计算结果,将结果进行存储;纵向的每一列加载指令、计算指令和存储指令对应的一个时间片,表示将不存在关联关系的加载指令、计算指令和存储指令进行并行执行。可见,通过将不存在关联关系的指令进行并行执行,可以让不存在关联关系的多个运算任务并行执行,从而节省了计算时间,提高了计算效率。
可选地,上述步骤A1中,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系,可包括以下步骤:
A11、提取所述第一存储指令中所需数据的第一存储地址区间,提取所述第二计算指令中所需数据的第二存储地址区间,提取所述第三加载指令中所需数据的第三存储地址区间;
A12、若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系。
可选地,上述步骤A1中,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系,可包括以下步骤:
A13、提取所述第一存储指令对应的第一写入区域,提取所述第二计算指令对应的第二读取区域和第二写入区域,提取所述第三加载指令对应的第三读取区域;
A14、若所述第一写入区域、所述第二读取区域、所述第二写入区域和所述第三读取区域之间均不存在重叠区域,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系。
可选地,所述人工智能计算装置还包括存储单元,所述存储单元与外部存储装置连接;上述步骤A2中,在第一时间片内并行执行所述第一存储指令、所述第二计算指令和所述第三加载指令,可包括以下步骤:
B1、根据所述第一存储指令将所述第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置;
B2、根据所述第二计算指令对所述第二运算任务中第二输入数据进行计算,得到第二计算结果;
B3、根据所述第三加载指令将所述第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
可选地,所述存储单元包括第一存储区域和第二存储区域,上述步骤B3中,根据所述第三加载指令将所述第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元,可包括以下步骤:
在所述第一时间片内根据所述第三加载指令将所述第三运算任务中的第三输入数据进行乒乓操作,从所述外部存储装置传输至所述第一存储区域。
其中,可将存储单元划分为第一存储区域和第二存储区域,在执行神经网络的指令集中的加载指令时,可进行乒乓操作轮流将输入数据从外部存储装置传输到第一存储区域和第二存储区域进行存储,具体地,在第一时间片内,可根据第三加载指令将第三输入数据传存储至第一存储区域,在第二时间片内,可根据第四加载指令将第四输入数据存储至第二存储区域,此时可并行执行第三计算指令,根据第三计算指令从第一存储区域获取第三输入数据进行计算,得到计算结果,在下一时间片,可将下一输入数据存储至第一存储区域,且并行执行第四加载指令对应的下一计算指令,如此循环。从而,可以节省存储单元的存储空间。
可选地,所述第三输入数据包括多个第三输入子数据,将所述第三运算任务中的第三输入数据进行乒乓操作,从所述外部存储装置传输至所述第一存储区域,具体可包括以下步骤:
C1、预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
C2、按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至所述第一存储区域,并从所述第一存储区域的两端存储至中间
其中,将输入数据第一存储区域中,存储的位置越靠近中间,计算时读取输入数据所需要的时间越长,因此,可在存储上述多个第三输入子数据的过程中,先确定每一第三输入子数据的目标存储时长,然后按照存储时长从大到小的顺序从所述第一存储区域的两端存储至中间,如此,在获取第三输入数据进行计算的过程中,可减少较大的目标存储时长对应的第三输入子数据的读取时长,进而提高运算效率。
类似地,在将输入数据从外部存储装置传输至第二存储区域的过程中,也可按照存储时长从大到小的顺序从所述第二存储区域的两端存储至中间。
举例说明,执行运算Yi=∑(wxi+b)的过程中中,w和b为会重复读取操作的数据,可确定w和b对应的存储时长较长,可将w和b存储在第一存储区域或者第二存储区域的两端,将xi存储在第一存储区域或者第二存储区域的中间,从而,在从第一存储区域或者第二存储区域读取数据时,每次读取w和b的时长较小,从而可减少读取数据的耗时。
再举例说明,如图2C所示,横向的每一行加载指令、计算指令和存储指令对应一个运算任务,例如,第一个运算任务可包括第一加载指令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。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDRSDRAM(英文: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 (16)

1.一种人工智能计算装置,其特征在于,所述人工智能计算装置包括控制器单元和执行单元;其中,
所述控制器单元,用于获取待执行的第一指令集;以及,获取第二指令集;
所述控制器单元,还用于确定所述第一指令集与所述第二指令集之间是否构成循环体;
所述执行单元,用于在所述第一指令集与所述第二指令集之间构成循环体时,根据所述第一指令集的指令信息执行所述第二指令集中的指令;
所述第一指令集包含第一运算任务的第一加载指令、第一计算指令和第一存储指令;所述第二指令集包含第二运算任务的第二加载指令、第二计算指令和第二存储指令;在所述确定所述第一指令集与所述第二指令集之间是否构成循环体方面,所述控制器单元具体用于:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体;
或者,
所述第一指令集包含第一运算任务的第一存储指令,第二运算任务的第二计算指令和第三运算任务对应的第三加载指令;所述第二指令集包含第二运算任务的第二存储指令,第三运算任务的第三计算指令和第四运算任务的第四加载指令;在所述确定所述第一指令集与所述第二指令集之间是否构成循环体方面,所述控制器单元具体用于:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;将所述第二计算指令对应的第七预设指令信息与所述第三计算指令对应的第八预设指令信息进行比对;将所述第三加载指令对应的第九预设指令信息与所述第四加载指令对应的第十预设指令信息进行比对;
若所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,所述第七预设指令信息与第八预设指令信息之间仅存在操作次数的差异,且所述第九预设指令信息与所述第十预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
2.根据权利要求1所述的装置,其特征在于,在所述根据所述第一指令集的指令信息执行所述第二指令集中的指令方面,所述执行单元具体用于:
根据跳转指令跳转至所述第一指令集中与所述第二指令集中的第二指令对应的第一指令的操作码存储区域,从所述操作码存储区域获取所述第一指令的操作码,将所述操作码作为所述第二指令的操作码,其中,所述操作码包括所述第一指令的标识。
3.根据权利要求1所述的装置,其特征在于,所述控制器单元还用于:
确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系;
所述执行单元,还用于在所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系时,在第一时间片内并行执行所述第一存储指令、所述第二计算指令和所述第三加载指令。
4.根据权利要求3所述的装置,其特征在于,在所述确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系方面,所述控制器单元具体用于:
提取所述第一存储指令中所需数据的第一存储地址区间,提取所述第二计算指令中所需数据的第二存储地址区间,提取所述第三加载指令中所需数据的第三存储地址区间,若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系。
5.根据权利要求3所述的装置,其特征在于,在所述确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系方面,所述控制器单元具体用于:
提取所述第一存储指令对应的第一写入区域,提取所述第二计算指令对应的第二读取区域和第二写入区域,提取所述第三加载指令对应的第三读取区域;
若所述第一写入区域、所述第二读取区域、所述第二写入区域和所述第三读取区域之间均不存在重叠区域,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系。
6.根据权利要求3-5任一项所述的装置,其特征在于,所述人工智能计算装置还包括存储单元,所述存储单元与外部存储装置连接;所述执行单元包括加载执行单元、计算执行单元和存储执行单元;
在所述在第一时间片内并行执行所述第一存储指令、所述第二计算指令和所述第三加载指令方面,所述存储执行单元用于根据所述第一存储指令将所述第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置,所述计算执行单元用于根据所述第二计算指令对所述第二运算任务中第二输入数据进行计算,得到第二计算结果;所述加载执行单元用于根据所述第三加载指令将所述第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
7.根据权利要求6所述的装置,其特征在于,所述存储单元包括第一存储区域和第二存储区域,在所述根据所述第三加载指令将所述第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元方面,所述加载执行单元具体用于:
在所述第一时间片内根据所述第三加载指令将所述第三运算任务中的第三输入数据进行乒乓操作,从所述外部存储装置传输至所述第一存储区域。
8.根据权利要求7所述的装置,其特征在于,所述第三输入数据包括多个第三输入子数据,在将所述第三运算任务中的第三输入数据进行乒乓操作,从所述外部存储装置传输至所述第一存储区域方面,所述加载执行单元具体用于:
预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至所述第一存储区域,并从所述第一存储区域的两端存储至中间。
9.一种人工智能计算方法,其特征在于,应用于人工智能计算装置,所述方法包括:
获取待执行的第一指令集;以及,获取第二指令集;
确定所述第一指令集与所述第二指令集之间是否构成循环体;
在所述第一指令集与所述第二指令集之间构成循环体时,根据所述第一指令集的指令信息执行所述第二指令集中的指令;
所述第一指令集包含第一运算任务的第一加载指令、第一计算指令和第一存储指令;所述第二指令集包含第二运算任务的第二加载指令、第二计算指令和第二存储指令;所述确定所述第一指令集与所述第二指令集之间是否构成循环体,包括:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一加载指令对应的第一预设指令信息与所述第二加载指令对应的第二预设指令信息进行比对;将所述第一计算指令对应的第三预设指令信息与所述第二计算指令对应的第四预设指令信息进行比对;将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;
若所述第一预设指令信息与所述第二预设指令信息之间仅存在操作次数的差异,所述第三预设指令信息与第四预设指令信息之间仅存在操作次数的差异,且所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体;
或者,
所述第一指令集包含第一运算任务的第一存储指令,第二运算任务的第二计算指令和第三运算任务的第三加载指令;所述第二指令集包含第二运算任务的第二存储指令,第三运算任务的第三计算指令和第四运算任务的第四加载指令;所述确定所述第一指令集与所述第二指令集之间是否构成循环体,包括:
获取所述第一指令集和所述第二指令集中每一指令对应的预设指令信息,得到多个预设指令信息,所述预设指令信息包括以下至少一种:指令类型、剩余执行次数、是否奇偶性翻转;
将所述第一存储指令对应的第五预设指令信息与所述第二存储指令对应的第六预设指令信息进行比对;将所述第二计算指令对应的第七预设指令信息与所述第三计算指令对应的第八预设指令信息进行比对;将所述第三加载指令对应的第九预设指令信息与所述第四加载指令对应的第十预设指令信息进行比对;
若所述第五预设指令信息与所述第六预设指令信息之间仅存在操作次数的差异,所述第七预设指令信息与第八预设指令信息之间仅存在操作次数的差异,且所述第九预设指令信息与所述第十预设指令信息之间仅存在操作次数的差异,确定所述第一指令集与所述第二指令集之间构成循环体。
10.根据权利要求9所述的方法,其特征在于,所述根据所述第一指令集的指令信息执行所述第二指令集中的指令,包括:
根据跳转指令跳转至所述第一指令集中与所述第二指令集中的第二指令对应的第一指令的操作码存储区域,从所述操作码存储区域获取所述第一指令的操作码,将所述操作码作为所述第二指令的操作码,其中,所述操作码包括所述第一指令的标识。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系;
所述执行单元,还用于在所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系时,在第一时间片内并行执行所述第一存储指令、所述第二计算指令和所述第三加载指令。
12.根据权利要求11所述的方法,其特征在于,所述确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系,包括:
提取所述第一存储指令中所需数据的第一存储地址区间,提取所述第二计算指令中所需数据的第二存储地址区间,提取所述第三加载指令中所需数据的第三存储地址区间,若所述第一存储地址区间、所述第二存储地址区间和所述第三存储地址区间两两之间不具有重叠的区域,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系。
13.根据权利要求11所述的方法,其特征在于,所述确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间是否存在关联关系,包括:
提取所述第一存储指令对应的第一写入区域,提取所述第二计算指令对应的第二读取区域和第二写入区域,提取所述第三加载指令对应的第三读取区域;
若所述第一写入区域、所述第二读取区域、所述第二写入区域和所述第三读取区域之间均不存在重叠区域,确定所述第一存储指令、所述第二计算指令和所述第三加载指令之间不存在关联关系。
14.根据权利要求11-13任一项所述的方法,其特征在于,所述人工智能计算装置还包括存储单元,所述存储单元与外部存储装置连接;所述在第一时间片内并行执行所述第一存储指令、所述第二计算指令和所述第三加载指令,包括:
根据所述第一存储指令将所述第一运算任务中第一输入数据对应的第一计算结果从所述存储单元传输至所述外部存储装置;
根据所述第二计算指令对所述第二运算任务中第二输入数据进行计算,得到第二计算结果;
根据所述第三加载指令将所述第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元。
15.根据权利要求14所述的方法,其特征在于,所述存储单元包括第一存储区域和第二存储区域,所述根据所述第三加载指令将所述第三运算任务中的第三输入数据从所述外部存储装置传输至所述存储单元,包括:
在所述第一时间片内根据所述第三加载指令将所述第三运算任务中的第三输入数据进行乒乓操作,从所述外部存储装置传输至所述第一存储区域。
16.根据权利要求15所述的方法,其特征在于,所述第三输入数据包括多个第三输入子数据,所述将所述第三运算任务中的第三输入数据进行乒乓操作,从所述外部存储装置传输至所述第一存储区域,包括:
预估所述多个第三输入子数据中每一第三输入子数据在所述第一存储区域的目标存储时长,得到多个目标存储时长;
按照存储时长从大到小的顺序将所述多个目标存储时长对应的所述多个第三输入子数据传输至所述第一存储区域,并从所述第一存储区域的两端存储至中间。
CN201910226552.7A 2019-03-22 2019-03-22 人工智能计算装置及相关产品 Active CN111723920B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910226552.7A CN111723920B (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
CN201910226552.7A CN111723920B (zh) 2019-03-22 2019-03-22 人工智能计算装置及相关产品

Publications (2)

Publication Number Publication Date
CN111723920A CN111723920A (zh) 2020-09-29
CN111723920B true CN111723920B (zh) 2024-05-17

Family

ID=72563777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910226552.7A Active CN111723920B (zh) 2019-03-22 2019-03-22 人工智能计算装置及相关产品

Country Status (1)

Country Link
CN (1) CN111723920B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113900509A (zh) * 2021-09-03 2022-01-07 重庆科创职业学院 一种人工智能计算装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2950464A (en) * 1958-08-29 1960-08-23 Itt Error detection systems
US3401376A (en) * 1965-11-26 1968-09-10 Burroughs Corp Central processor
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
CN101078979A (zh) * 2007-06-29 2007-11-28 东南大学 具有多通道指令预取功能的存储控制电路
CN103957463A (zh) * 2014-05-28 2014-07-30 谭兆红 一种幼儿教育高清动漫播放***
CN104395876A (zh) * 2012-07-06 2015-03-04 皇家飞利浦有限公司 没有算术和逻辑单元的计算机处理器和***
US9443192B1 (en) * 2015-08-30 2016-09-13 Jasmin Cosic Universal artificial intelligence engine for autonomous computing devices and software applications
CN107608715A (zh) * 2017-07-20 2018-01-19 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法
CN108875926A (zh) * 2017-10-30 2018-11-23 上海寒武纪信息科技有限公司 语言翻译方法及相关产品
CN109062611A (zh) * 2018-02-05 2018-12-21 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量缩放指令的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8505002B2 (en) * 2006-09-29 2013-08-06 Arm Limited Translation of SIMD instructions in a data processing system
US20080162399A1 (en) * 2006-12-31 2008-07-03 Think Passenger, Inc. Consumer marketing platform
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US20120079303A1 (en) * 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US8479185B2 (en) * 2010-12-09 2013-07-02 Oracle International Corporation Method and system for utilizing parallelism across loops
US9898289B2 (en) * 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
US10762164B2 (en) * 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2950464A (en) * 1958-08-29 1960-08-23 Itt Error detection systems
US3401376A (en) * 1965-11-26 1968-09-10 Burroughs Corp Central processor
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
CN101078979A (zh) * 2007-06-29 2007-11-28 东南大学 具有多通道指令预取功能的存储控制电路
CN104395876A (zh) * 2012-07-06 2015-03-04 皇家飞利浦有限公司 没有算术和逻辑单元的计算机处理器和***
CN103957463A (zh) * 2014-05-28 2014-07-30 谭兆红 一种幼儿教育高清动漫播放***
US9443192B1 (en) * 2015-08-30 2016-09-13 Jasmin Cosic Universal artificial intelligence engine for autonomous computing devices and software applications
CN107608715A (zh) * 2017-07-20 2018-01-19 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN108875926A (zh) * 2017-10-30 2018-11-23 上海寒武纪信息科技有限公司 语言翻译方法及相关产品
CN109117947A (zh) * 2017-10-30 2019-01-01 上海寒武纪信息科技有限公司 轮廓检测方法及相关产品
CN109062611A (zh) * 2018-02-05 2018-12-21 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量缩放指令的方法

Also Published As

Publication number Publication date
CN111723920A (zh) 2020-09-29

Similar Documents

Publication Publication Date Title
CN109543832B (zh) 一种计算装置及板卡
CN109739703B (zh) 调错方法及相关产品
CN109670581B (zh) 一种计算装置及板卡
CN111767995B (zh) 运算方法、装置及相关产品
CN111209243B (zh) 数据处理装置、方法及相关产品
CN111723920B (zh) 人工智能计算装置及相关产品
CN111381882B (zh) 数据处理装置及相关产品
CN111209231B (zh) 数据处理方法、装置及相关产品
CN111723921B (zh) 人工智能计算装置及相关产品
CN111813449A (zh) 运算方法、装置及相关产品
CN109739514B (zh) 参数处理方法及相关产品
CN111382853B (zh) 数据处理装置、方法、芯片及电子设备
US11983535B2 (en) Artificial intelligence computing device and related product
CN111062469B (zh) 计算装置及相关产品
CN111382855B (zh) 数据处理装置、方法、芯片及电子设备
CN111339060B (zh) 运算方法、装置、计算机设备和存储介质
CN111047023B (zh) 一种计算装置及相关产品
CN111338694B (zh) 运算方法、装置、计算机设备和存储介质
CN111222632B (zh) 计算装置、计算方法及相关产品
CN111210011B (zh) 数据处理装置及相关产品
CN113033791B (zh) 用于保序的计算装置、集成电路装置、板卡及保序方法
CN111384944B (zh) 全加器、半加器、数据处理方法、芯片及电子设备
CN111078283B (zh) 运算方法、装置及相关产品
CN111078125B (zh) 运算方法、装置及相关产品
CN111047027A (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