CN111400341B - 标量查找指令处理方法、装置及相关产品 - Google Patents
标量查找指令处理方法、装置及相关产品 Download PDFInfo
- Publication number
- CN111400341B CN111400341B CN201910001865.2A CN201910001865A CN111400341B CN 111400341 B CN111400341 B CN 111400341B CN 201910001865 A CN201910001865 A CN 201910001865A CN 111400341 B CN111400341 B CN 111400341B
- Authority
- CN
- China
- Prior art keywords
- scalar
- instruction
- executed
- searched
- numbers
- 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
Images
Landscapes
- Advance Control (AREA)
Abstract
本公开涉及一种运算方法、装置及相关产品。机器学习装置包括一个或多个指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;当机器学习运算装置包含多个指令处理装置时,多个指令处理装置间可以通过特定的结构进行连接并传输数据。其中,多个指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个指令处理装置共享同一控制***或拥有各自的控制***、且共享内存或者拥有各自的内存;多个指令处理装置的互联方式是任意互联拓扑。本公开实施例所提供的运算方法、装置及相关产品的适用范围广,对指令的处理效率高、处理速度快。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种标量查找指令处理方法、装置及相关产品。
背景技术
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大。相关技术中,在对标量数据进行查找运算的效率低、速度慢。
发明内容
有鉴于此,本公开提出了一种标量查找指令处理方法、装置及相关产品,以提高对标量进行查找运算的效率和速度。
根据本公开的第一方面,提供了一种标量查找指令处理装置,所述装置包括:
控制模块,用于对接收到的标量查找指令进行解析,获得所述标量查找指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址;
运算模块,用于依次确定表示所述待查找标量的多个待查数的数值是否等于所述指定值,并将数值等于所述指定值、且排序为所述指定排序的待查数确定为目标数,将所述目标数的存储地址作为查找结果存入所述目标地址,其中,所述操作码用于指示所述标量查找指令对标量数据所进行的运算为查找运算,所述操作域包括所述待查找标量地址和所述目标地址。
根据本公开的第二方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述第一方面所述的标量查找指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量查找指令处理装置时,所述多个所述标量查找指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量查找指令处理装置通过快速外部设备互连总线PCIE 总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量查找指令处理装置共享同一控制***或拥有各自的控制***;多个所述标量查找指令处理装置共享内存或者拥有各自的内存;多个所述标量查找指令处理装置的互联方式是任意互联拓扑。
根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:
上述第二方面所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。
根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。
根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。
根据本公开的第八方面,提供了一种标量查找指令处理方法,所述方法应用于标量查找指令处理装置,所述方法包括:
对接收到的标量查找指令进行解析,获得所述标量查找指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址;
依次确定表示所述待查找标量的多个待查数的数值是否等于所述指定值,并将数值等于所述指定值、且排序为所述指定排序的待查数确定为目标数,将所述目标数的存储地址作为查找结果存入所述目标地址,
其中,所述操作码用于指示所述标量查找指令对标量数据所进行的运算为查找运算,所述操作域包括所述待查找标量地址和所述目标地址。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例所提供的标量查找指令处理方法、装置及相关产品,该装置包括控制模块和运算模块。控制模块用于对接收到的标量查找指令进行解析,获得标量查找指令的操作码和操作域,并根据操作码和操作域确定执行标量查找指令所需的待查找标量、指定值、指定排序和目标地址。运算模块用于依次确定表示待查找标量的多个待查数的数值是否等于指定值,并将数值等于指定值、且排序为指定排序的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址。本公开实施例所提供的标量查找指令处理方法、装置及相关产品的适用范围广,对标量查找指令的处理效率高、处理速度快。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的标量查找指令处理装置的框图。
图2示出根据本公开一实施例的标量查找指令处理装置的框图。
图3a-图3c示出根据本公开一实施例的标量查找指令处理装置的应用场景的示意图。
图4a、图4b示出根据本公开一实施例的组合处理装置的框图。
图5示出根据本公开一实施例的板卡的结构示意图。
图6示出根据本公开一实施例的标量查找指令处理方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的标量查找指令处理装置的框图。如图1所示,该装置包括控制模块11和运算模块12。
控制模块11,用于对接收到的标量查找指令进行解析,获得标量查找指令的操作码和操作域,并根据操作码和操作域确定执行标量查找指令所需的待查找标量、指定值、指定排序和目标地址。其中,操作码用于指示标量查找指令对数据所进行的运算为查找运算,操作域包括待查找标量地址和目标地址。
运算模块12,用于依次确定表示待查找标量的多个待查数的数值是否等于指定值,并将数值等于指定值、且排序为指定排序的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址。
在本实施例中,待查找标量可以是二进制、十六进制等的字符串。例如,待查找标量87的二进制表示为“01010111”,待查找标量87的多个待查数即为“0”、“1”、“0”、“1”、“0”、“1”、“1”和“1”。控制模块可以从待查找标量地址中获取待查找标量。待查找标量地址可以是存储待查找标量的首地址等。控制模块可以通过数据输入输出单元获得标量查找指令、待查找标量,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括参数数据、待查找标量、对应的运算方法,或者存储参数数据、待查找标量、对应的运算方法的地址等等。对于一个标量查找指令其必须包括操作码和操作域,其中操作域至少包括待查找标量地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对标量查找指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的标量查找指令处理装置,该装置包括控制模块和运算模块。控制模块用于对接收到的标量查找指令进行解析,获得标量查找指令的操作码和操作域,并根据操作码和操作域确定执行标量查找指令所需的待查找标量、指定值、指定排序和目标地址。运算模块用于依次确定表示待查找标量的多个待查数的数值是否等于指定值,并将数值等于指定值、且排序为指定排序的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址。本公开实施例所提供的标量查找指令处理装置的适用范围广,对标量查找指令的处理效率高、处理速度快。
在一种可能的实现方式中,指定排序可以包括以下至少一种:待查数的排序为等于指定值的待查数中的第n个,n为大于或等于1的正整数;待查数的排序为等于指定值的待查数中的倒数第m个,m为大于或等于1的正整数。其中,m、n小于或等于待查找标量中待查数的数量。
在该实现方式中,可以通过对“待查数的排序为等于指定值的待查数中的第n个”、“待查数的排序为等于指定值的待查数中的倒数第m个”设置不同表达方式等,来区分倒数和正数的指定排序。可以设定指定排序中“待查数的排序为等于指定值的待查数中的第n个”在标量查找指令中的表达方式为“0n”,设定指定排序中“待查数的排序为等于指定值的待查数中的倒数第m 个”在标量查找指令中的表达方式为“m0”。本领域技术人员可以根据实际需要对指定排序的表达方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,指定值可以是0、1、2、3等数值。
举例来说,若待查找标量为十六进制字符串,指定值可以是0-9、A-F。若待查找标量为二进制字符串,指定值可以是0或1。标量查找指令所查找到的目标数可以是待查找标量的多个待查数中的第一个1、最后一个1等。
在一种可能的实现方式中,操作域还可以包括输入长度。控制模块11,还用于根据输入长度,从待查找标量地址中获取待查找标量。
在该实现方式中,根据输入长度从待查找标量地址中获取待查找标量的长度需等于输入长度,或者需小于输入长度。
在一种可能的实现方式中,在操作域中不包括输入长度时,可以根据预先设置的默认输入长度获取待查找标量。还可以获取待查找标量地址中全部数据作为待查找标量。
在一种可能的实现方式中,操作域还可以包括待查数宽度。运算模块12,还用于根据待查数宽度,从待查找标量中确定出多个待查数。
在该实现方式中,在操作域中包括待查数宽度时,可以从待查找标量中确定出、宽度为待查数宽度的多个待查数。
在该实现方式中,在操作域不包括待查数宽度(可以是指在标量查找指令中待查数宽度所对应的位置为空,或者不存在待查数宽度),或者待查数宽度为1时,待查找标量的多个待查数是字符串中的多个字符。例如,待查找标量n为“01010111”,待查数宽度为1时待查找标量n的多个待查数即为“0”、“1”、“0”、“1”、“0”、“1”、“1”和“1”。
在该实现方式中,在操作域包括待查数宽度、且待查数宽度大于1时,待查找标量的多个待查数是具有待查数宽度多个二进制数字串,每一个待查数宽度的二进制数字串表示一个待查数。例如,若待查数宽度为3,待查找标量m为“101110100”,待查找标量m的多个待查数为“101”、“110”和“100”。
在一种可能的实现方式中,操作域还可以包括指定值和指定排序。控制模块11,还用于根据操作域,确定指定值和指定排序。
在该实现方式中,在操作域中包括指定值和指定排序时,可以直接获取操作域中的指定值和指定排序。
在一种可能的实现方式中,控制模块11,还用于根据操作码,确定指定值和指定排序。其中,操作码还用于指示标量查找指令的指定值和指定排序。
在该实现方式中,可以设置不同的操作码来表示不同的指定值和指定排序。特殊地,还可以根据操作码或者默认宽度确定待查数宽度。
举例来说,可以设置操作码“Find_bfirst”为找到待查找标量的多个待查数中的第一个1(待查数的宽度为1,指定值为1,指定排序为待查数的排序为等于指定值的待查数中的第1个)。操作码“Find_blast”为找到待查找标量的多个待查数中的最后一个1(待查数的宽度为1,指定值为1,指定排序为待查数的排序为等于指定值的待查数中的倒数第1个)。在操作码为“Find_bfirst”和“Find_blast”时,可以进一步根据操作码确定待查数宽度为1,进而获取待查找标量的、宽度为1的多个待查数。
图2示出根据本公开一实施例的标量查找指令处理装置的框图。在一种可能的实现方式中,如图2所示,运算模块12可以包括至少一个比较器121,用于对多个待查数的数值和指定值进行比较,获得比较结果,以便于根据比较结果确定待查数的数值与指定值是否相等。
举例来说,以指定值为“1”、指定排序为“待查数的排序为等于指定值的待查数中的第1个”为例,比较器可以依次将待查找标量的多个待查数的数值与指定值“1”进行比较,获得比较结果。进而使得运算模块可以根据比较结果确定待查数的数值与指定值“1”是否相等,并将数值等于指定值“1”、且排序为等于指定值的待查数中的第1个待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址。可以根据所需进行比较的数据量的大小、对比较的处理速度、效率等要求对比较器的数量进行设置,本公开对此不作限制。
在一种可能的实现方式中,如图2所示,该装置还可以包括存储模块13。存储模块13用于存储待查找标量。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待查找标量在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图2所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。
指令存储子模块111用于存储标量查找指令。
指令处理子模块112用于对标量查找指令进行解析,得到标量查找指令的操作码和操作域。
队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量查找指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图2所示,控制模块11还可以包括依赖关系处理子模块114。
依赖关系处理子模块114,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112中,在第零待执行指令执行完毕后,从指令存储子模块112中提取第一待执行指令发送至运算模块12。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行指令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在一种可能的实现方式中,标量查找指令的指令格式可以如下表1所示,可以对操作码和操作码的位置进行设置。并在表2中给出了常规的标量查找指令(Find),利用该常规标量查找指令可以查找待查找标量中的任意数;以及在表2中给出了四个特殊的标量查找指令,并定义了两个特殊类型的标量查找指令(Find_bfirst、Find_blast)所需包括的操作码和操作域。利用特殊类型的标量查找指令对待查找标量进行查找,可以简化指令处理过程、节省查找的时间。
表1指令格式
表2标量查找指令示例
其中,操作码“Find_bfirst”的标量查找指令,其所对应的指定值为1,指定排序为待查数的排序为等于指定值的待查数中的第1个,待查数的宽度为1。
操作码为“Find_blast”的标量查找指令,其所对应的待查数宽度为1,指定值为1,指定排序为待查数的排序为等于指定值的待查数中的倒数第1个。
应当理解的是,本领域技术人员可以根据需要对标量查找指令的操作码、指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics ProcessingUnit,简称GPU)、中央处理器(Central Processing Unit,简称CPU) 和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了标量查找指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用标量查找指令处理装置对待查找标量进行查找”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解标量查找指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图3a-图3c示出根据本公开一实施例的标量查找指令处理装置的应用场景的示意图。如图3a-图3c所示,标量查找指令处理装置对标量查找指令进行处理的过程如下。
首先,假定待查找标量a为“010110110001”。待查找标量a在十进制中的一个数,也即在十进制中待查找标量a为1457。为便于区分不同标量查找指令假定在不同的标量查找指令中待查找标量a的存储地址不同。
装置所需处理的标量查找指令包括:
标量查找指令1:@Find#1#100#12#200#01#4
标量查找指令4:@Find_bfirst#103#12#203
标量查找指令5:@Find_blast#104#12#204
示例1
如图3a所示,控制模块11在接收到标量查找指令1时,对标量查找指令1 进行解析,获得标量查找指令1的操作码为Find,以及根据操作域确定标量查找指令1的指定值为“1”、待查找标量地址为“100”、输入长度为“12”、目标地址为“200”、指定排序为“待查数的排序为等于指定值的待查数中的第1个”、待查数宽度为“4”。进而控制模块11从待查找标量地址200中获取输入长度为12的上述待查找标量a“010110110001”。
运算模块12根据待查数宽度为“4”,从待查找标量a中依次得到多个待查数,并依次确定多个待查数的数值是否等于指定值“1”,并将数值等于指定值“1”、且排序为等于指定值“1”的待查数中的第1个的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址200中。
在该示例中,运算模块12首先从待查找标量a中获得宽度为4的第一个待查数“0101”,并判断待查数“0101”的数值是否等于指定值“1”。由于待查数“0101”的数值不为1,运算模块12继续从待查找标量a中获取下一个待查数“1011”,并判断待查数“1011”的数值是否等于指定值“1”。由于待查数“1011”的数值不为1,运算模块12继续从待查找标量a中获取下一个待查数“0001”,并判断待查数“0001”的数值是否等于指定值“1”。由于待查数“0001”的数值等于1、且其排序为指定排序(即待查数的排序为等于指定值的待查数中的第1个),则将待查数“0001”确定为目标数,将待查数“0001”的存储地址500作为查找结果存入目标地址200中。
示例2
如图3b所示,控制模块11在接收到标量查找指令4时,对标量查找指令4 进行解析,获得标量查找指令4的操作码为Find_bfirst,以及根据操作域确定标量查找指令4的待查找标量地址为“103”、输入长度为“12”、目标地址为“203”。并且,根据操作码Find_bfirst确定标量查找指令4的指定值为“1”、指定排序为“待查数的排序为等于指定值的待查数中的第1个”。进而控制模块11从待查找标量地址203中获取输入长度为12的上述待查找标量a“010110110001”。
运算模块12从待查找标量a中依次得到多个待查数,并依次确定多个待查数的数值是否等于指定值“1”,并将数值等于指定值“1”、且排序为等于指定值“1”的待查数中的第1个的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址203中。
在该示例中,运算模块12首先从待查找标量a中获得第一个待查数“0”,并判断待查数“0”的数值是否等于指定值“1”。由于待查数“0”的数值不为1,运算模块12继续从待查找标量a中获取下一个待查数“1”,并判断待查数“1”的数值是否等于指定值“1”。由于待查数“1”的数值等于1、且其排序为指定排序(即待查数的排序为等于指定值的待查数中的第1个),则将待查数“1”确定为目标数,将待查数“1”的存储地址503作为查找结果存入目标地址203中。
示例3
如图3c所示,控制模块11在接收到标量查找指令5时,对标量查找指令5 进行解析,获得标量查找指令4的操作码为Find_blast,以及根据操作域确定标量查找指令5的待查找标量地址为“104”、输入长度为“12”、目标地址为“204”。并且,根据操作码Find_blast确定标量查找指令5的指定值为“1”、指定排序为“待查数的排序为等于指定值的待查数中的倒数第1个”。进而控制模块11从待查找标量地址204中获取输入长度为12的上述待查找标量a “010110110001”。
运算模块12从待查找标量a中依次得到多个待查数,并依次确定多个待查数的数值是否等于指定值“1”,并将数值等于指定值“1”、且排序为等于指定值“1”的待查数中的倒数第1个的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址204中。
在该示例中,运算模块12首先从待查找标量a中获得第一个待查数“1”,并判断待查数“1”的数值是否等于指定值“1”。由于待查数“1”的数值等于1、且其排序为指定排序(即待查数的排序为等于指定值的待查数中的倒数第1个),则将待查数“1”确定为目标数,将待查数“1”的存储地址504 作为查找结果存入目标地址204中。
这样,标量查找指令处理装置可以快速、高效地标量查找指令进行处理。
本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述标量查找指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得标量查找指令,并将执行结果通过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中,依次确定表示待查找标量的多个待查数的数值是否等于指定值,并将数值等于指定值、且排序为指定排序的待查数确定为目标数,将目标数的存储地址作为查找结果存入目标地址。
在一种可能的实现方式中,操作域还可以包括输入长度。其中,根据操作码和操作域确定执行标量查找指令所需的待查找标量、指定值、指定排序和目标地址,可以包括:根据输入长度,从待查找标量地址中获取待查找标量。
在一种可能的实现方式中,操作域还可以包括指定值和指定排序。其中,根据操作码和操作域确定执行标量查找指令所需的待查找标量、指定值、指定排序和目标地址,可以包括:根据操作域,确定指定值和指定排序。
在一种可能的实现方式中,根据操作码和操作域确定执行标量查找指令所需的待查找标量、指定值、指定排序和目标地址,可以包括:
根据操作码,确定指定值和指定排序,操作码还用于指示标量查找指令的指定值和指定排序。
在一种可能的实现方式中,依次确定表示待查找标量的多个待查数的数值是否等于指定值,可以包括:
利用至少一个比较器对多个待查数的数值和指定值进行比较,获得比较结果,以便于根据比较结果确定待查数的数值与指定值是否相等。
在一种可能的实现方式中,指定排序可以包括以下至少一种:
待查数的排序为等于指定值的待查数中的第n个,n为大于或等于1的正整数;待查数的排序为等于指定值的待查数中的倒数第m个,m为大于或等于1的正整数。其中,m、n小于或等于待查找标量中待查数的数量。
在一种可能的实现方式中,该方法还可以包括:存储待查找标量。
在一种可能的实现方式中,对接收到的标量查找指令进行解析,获得标量查找指令的操作码和操作域,可以包括:
存储标量查找指令;
对标量查找指令进行解析,得到标量查找指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量查找指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了标量查找指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的标量查找指令处理方法的适用范围广,对标量查找指令的处理效率高、处理速度快。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的实施例中,应该理解到,所揭露的***、装置,可通过其它的方式实现。例如,以上所描述的***、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (17)
1.一种标量查找指令处理装置,其特征在于,所述装置包括:
控制模块,用于对接收到的标量查找指令进行解析,获得所述标量查找指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址;
运算模块,用于依次确定表示所述待查找标量的多个待查数的数值是否等于所述指定值,并将数值等于所述指定值、且排序为所述指定排序的待查数确定为目标数,将所述目标数的存储地址作为查找结果存入所述目标地址,
其中,所述操作码用于指示所述标量查找指令对标量数据所进行的运算为查找运算,所述操作域包括所述待查找标量地址和所述目标地址;
所述操作域还包括待查数宽度,所述运算模块还用于根据所述待查数宽度从所述待查找标量中确定出所述多个待查数;
所述指定排序包括以下至少一种:
所述待查数的排序为等于所述指定值的待查数中的第n个,所述n为大于或等于1的正整数;
所述待查数的排序为等于所述指定值的待查数中的倒数第m个,所述m为大于或等于1的正整数,
其中,m、n小于或等于所述待查找标量中待查数的数量。
2.根据权利要求1所述的装置,其特征在于,所述操作域还包括输入长度,
所述控制模块,还用于根据所述输入长度,从所述待查找标量地址中获取所述待查找标量。
3.根据权利要求1所述的装置,其特征在于,所述操作域还包括指定值和指定排序,
所述控制模块,还用于根据所述操作域,确定所述指定值和所述指定排序。
4.根据权利要求1所述的装置,其特征在于,
所述控制模块,还用于根据所述操作码,确定所述指定值和所述指定排序,其中,所述操作码还用于指示所述标量查找指令的指定值和指定排序。
5.根据权利要求1所述的装置,其特征在于,所述运算模块,包括:
至少一个比较器,用于对所述多个待查数的数值和所述指定值进行比较,获得比较结果,以便于根据所述比较结果确定待查数的数值与所述指定值是否相等。
6.根据权利要求1所述的装置,其特征在于,
所述装置还包括:存储模块,用于存储所述待查找标量;
其中,所述控制模块,包括:
指令存储子模块,用于存储所述标量查找指令;
指令处理子模块,用于对所述标量查找指令进行解析,得到所述标量查找指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量查找指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
7.一种机器学习运算装置,其特征在于,所述装置包括:
一个或多个如权利要求1-6任一项所述的标量查找指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量查找指令处理装置时,所述多个所述标量查找指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量查找指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量查找指令处理装置共享同一控制***或拥有各自的控制***;多个所述标量查找指令处理装置共享内存或者拥有各自的内存;多个所述标量查找指令处理装置的互联方式是任意互联拓扑。
8.一种组合处理装置,其特征在于,所述组合处理装置包括:
如权利要求7所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
9.一种机器学习芯片,其特征在于,所述机器学习芯片包括:
如权利要求7所述的机器学习运算装置或如权利要求8所述的组合处理装置。
10.一种电子设备,其特征在于,所述电子设备包括:
如权利要求9所述的机器学习芯片。
11.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求9所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
12.一种标量查找指令处理方法,其特征在于,所述方法应用于标量查找指令处理装置,所述方法包括:
对接收到的标量查找指令进行解析,获得所述标量查找指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址;
依次确定表示所述待查找标量的多个待查数的数值是否等于所述指定值,并将数值等于所述指定值、且排序为所述指定排序的待查数确定为目标数,将所述目标数的存储地址作为查找结果存入所述目标地址,
其中,所述操作码用于指示所述标量查找指令对数据所进行的运算为查找运算,所述操作域包括所述待查找标量地址和所述目标地址;
所述操作域还包括待查数宽度,所述方法还包括根据所述待查数宽度从所述待查找标量中确定出所述多个待查数;
所述指定排序包括以下至少一种:
所述待查数的排序为等于所述指定值的待查数中的第n个,所述n为大于或等于1的正整数;
所述待查数的排序为等于所述指定值的待查数中的倒数第m个,所述m为大于或等于1的正整数,
其中,m、n小于或等于所述待查找标量中待查数的数量。
13.根据权利要求12所述的方法,其特征在于,所述操作域还包括输入长度,
其中,根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址,包括:
根据所述输入长度,从所述待查找标量地址中获取所述待查找标量。
14.根据权利要求12所述的方法,其特征在于,所述操作域还包括指定值和指定排序,
其中,根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址,包括:
根据所述操作域,确定所述指定值和所述指定排序。
15.根据权利要求12所述的方法,其特征在于,根据所述操作码和所述操作域确定执行所述标量查找指令所需的待查找标量、指定值、指定排序和目标地址,包括:
根据所述操作码,确定所述指定值和所述指定排序,所述操作码还用于指示所述标量查找指令的指定值和指定排序。
16.根据权利要求12所述的方法,其特征在于,依次确定表示所述待查找标量的多个待查数的数值是否等于所述指定值,包括:
利用至少一个比较器对所述多个待查数的数值和所述指定值进行比较,获得比较结果,以便于根据所述比较结果确定待查数的数值与所述指定值是否相等。
17.根据权利要求12所述的方法,其特征在于,
所述方法还包括:存储所述待查找标量,
其中,对接收到的标量查找指令进行解析,获得所述标量查找指令的操作码和操作域,包括:
存储所述标量查找指令;
对所述标量查找指令进行解析,得到所述标量查找指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量查找指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910001865.2A CN111400341B (zh) | 2019-01-02 | 2019-01-02 | 标量查找指令处理方法、装置及相关产品 |
PCT/CN2019/120893 WO2020108471A1 (zh) | 2018-11-30 | 2019-11-26 | 运算方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910001865.2A CN111400341B (zh) | 2019-01-02 | 2019-01-02 | 标量查找指令处理方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400341A CN111400341A (zh) | 2020-07-10 |
CN111400341B true CN111400341B (zh) | 2022-12-09 |
Family
ID=71433881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910001865.2A Active CN111400341B (zh) | 2018-11-30 | 2019-01-02 | 标量查找指令处理方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400341B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8787376B1 (en) * | 2008-03-17 | 2014-07-22 | Juniper Networks, Inc. | Systems and methods for accessing a multi-bank SRAM |
GB201217531D0 (en) * | 2012-10-01 | 2012-11-14 | Advanced Risc Mach Ltd | ARMv7-M Asset Protection Proposal |
CN103207772B (zh) * | 2013-04-07 | 2016-01-13 | 北京航空航天大学 | 一种优化实时任务wcet的指令预取内容选取方法 |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
-
2019
- 2019-01-02 CN CN201910001865.2A patent/CN111400341B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111400341A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400341B (zh) | 标量查找指令处理方法、装置及相关产品 | |
CN111399905B (zh) | 运算方法、装置及相关产品 | |
CN111381873A (zh) | 运算方法、装置及相关产品 | |
CN111381872A (zh) | 运算方法、装置及相关产品 | |
CN111382851A (zh) | 运算方法、装置及相关产品 | |
CN112395003A (zh) | 运算方法、装置及相关产品 | |
CN111325331B (zh) | 运算方法、装置及相关产品 | |
CN111382850A (zh) | 运算方法、装置及相关产品 | |
CN111401536A (zh) | 运算方法、装置及相关产品 | |
CN111353595A (zh) | 运算方法、装置及相关产品 | |
CN111382390B (zh) | 运算方法、装置及相关产品 | |
CN111079913B (zh) | 运算方法、装置及相关产品 | |
CN111078125B (zh) | 运算方法、装置及相关产品 | |
CN111290789B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111079911B (zh) | 运算方法、***及相关产品 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111078280B (zh) | 运算方法、装置及相关产品 | |
CN111079914B (zh) | 运算方法、***及相关产品 | |
CN111079910B (zh) | 运算方法、装置及相关产品 | |
CN111338694B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111079915B (zh) | 运算方法、装置及相关产品 | |
CN111078281B (zh) | 运算方法、***及相关产品 | |
CN111078285B (zh) | 运算方法、***及相关产品 | |
CN111079907B (zh) | 运算方法、装置及相关产品 | |
CN112396186A (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 |