CN111966306A - 指令处理方法、装置及相关产品 - Google Patents

指令处理方法、装置及相关产品 Download PDF

Info

Publication number
CN111966306A
CN111966306A CN201910420738.6A CN201910420738A CN111966306A CN 111966306 A CN111966306 A CN 111966306A CN 201910420738 A CN201910420738 A CN 201910420738A CN 111966306 A CN111966306 A CN 111966306A
Authority
CN
China
Prior art keywords
data
printed
instruction
printing
processing
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
CN201910420738.6A
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 CN201910420738.6A priority Critical patent/CN111966306A/zh
Publication of CN111966306A publication Critical patent/CN111966306A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • G06F3/1215Improving printing performance achieving increased printing speed, i.e. reducing the time between printing start and printing end
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/126Job scheduling, e.g. queuing, determine appropriate device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

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

Description

指令处理方法、装置及相关产品
技术领域
本公开涉及计算机技术领域,尤其涉及一种用于实现打印指令处理方法、装置及相关产品。
背景技术
随着科技的不断发展,人工智能学习算法的使用越来越广泛,在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。大数据运算及人工智能学习算法的广泛应用,使得数据的存储及运算均面临着较大的挑战。如何在人工智能处理器上执行打印指令成为研究热点。
发明内容
有鉴于此,本公开提出了一种用于实现打印指令处理方法、装置及相关产品。
为实现上述目的,本申请提供一种指令处理装置,所述装置包括:
控制模块,用于对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;
处理模块,用于根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。
可选地,所述操作域包括所述待打印数据的源操作数、目标操作数以及打印参数;其中,所述打印参数包括数据迁移方向和打印次数参数。
可选地,所述处理模块,还包括数据读写电路;
所述数据读写电路用于根据所述打印次数参数,至少执行一次数据迁移操作;其中,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数,将所述待打印数据搬运至所述目标操作数对应的设备内存缓存区中。
可选地,所述源操作数还包括单次待打印数据的源地址和单次待打印数据的数据迁移量;其中,所有的单次待打印数据的集合为待打印数据;
所述数据访存电路还用于:
根据所述单次待打印数据的源地址和所述单次待打印数据的数据迁移量,确定单次待打印数据;
按照所述数据迁移方向,将所述单次待打印数据搬运至所述目标操作数对应的目标存储空间中。
可选地,所述打印次数还包括待打印数据数量、源地址偏移量和目标地址偏移量;所述源操作数包括所述单次待打印数据的源地址,所述目标操作数包括所述单次待打印数据的目标地址;所述处理模块还包括:
计数器,用于根据所述待打印数据数量确定数据迁移次数和所述打印次数;
第一地址偏移电路,用于在确定当前单次待打印数据之后,根据所述单次待打印数据的源地址和所述源地址偏移量,更新下一次单次待打印数据的源地址,获得更新后的单次待打印数据的源地址;根据所述目标地址和所述目标地址偏移量,更新所述下一次单次待打印数据的目标地址,获得更新后的单次待打印数据的目标地址;
数据读写电路,用于根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,将当前的单次待打印数据迁移至设备内存的缓存区的目标区域内。
可选地,所述处理模块还包括:
第二地址偏移电路,用于根据所述打印次数、所述打印指令对应的人工智能学习任务的任务排序信息、单次待打印数据对应的空间确定单次待打印数据在设备内存的缓存区的地址偏移量。
可选地,所述处理模块进一步用于根据单次待打印数据在设备内存的缓存区的地址偏移量获得单次待打印数据。
可选地,所述待打印数据为标量数据或张量数据。
可选地,所述控制模块包括:
指令存储子模块,用于存储所述编译后的打印指令;
指令处理子模块,用于对所述编译后的打印指令进行解析,得到所述打印指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述编译后的打印指令。
可选地,所述操作域为立即数。
可选地,所述待打印数据为字符串常量。
可选地,所述待打印数据中各数据的数据类型不相同。
可选地,所述待打印数据的数据类型为int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、float、char、bool中的至少一种。
为实现上述目的,本申请还提供一种指令处理方法,所述方法包括:
对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;
根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。
可选地,所述操作域包括所述待打印数据的源操作数、目标操作数以及打印参数;其中,所述打印参数包括数据迁移方向和打印次数参数。
可选地,所述操作域为立即数。
为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质被一个或多个处理装置执行时,实现上述所述方法中的步骤。
本公开实施例所提供的指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块对编译后的打印指令进行解析,得到打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。从而实现人工智能处理在执行机器学习任务过程中的中间结果均传送至通用处理器,通过终端的显示屏显示出来。本申请实施例提供的指令处理方法、装置及相关产品对打印指令的处理效率高、处理速度高。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的指令处理装置的框图;
图2示出根据本公开一实施例的指令处理装置中的存储模块框图;
图3示出一种打印指令执行的流程示意图之一;
图4示出一种打印指令执行的流程示意图之二;
图5a-图5e示出根据本公开一实施例的指令处理装置的框图;
图6a、图6b示出根据本公开一实施例的组合处理装置的框图;
图7示出根据本公开一实施例的板卡的结构示意图;
图8示出根据本公开一实施例的指令处理方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本申请提供了一种用于实现打印指令以及用于执行该打印指令的指令处理装置。该指令处理装置可以用于执行打印指令等多种指令。其中,打印指令可以用于将将人工智能处理执行任务过程中的中间结果从片上存储空间搬运至设备内存的缓存区,并将中间结果发送至通用处理器。可选地,该打印指令可以包括操作码和操作域,该操作码可以用来表示指令用于执行何种操作,本申请实施例中,打印指令的操作码可以用于指示该打印指令是用以将待打印数据转换为设置的数据类型后再打印,进一步的,该操作码可以包括待打印数据的数据类型。该打印指令的操作域可以用来说明该指令作用的对象信息,具体地,该打印指令的操作域可以是立即数,表示待打印数据的数据内容。该打印指令的操作域还可以是目标张量信息,该目标张量信息可以包括目标张量的存储地址。例如,该操作域可以包括三个操作数,三个操作数分别为目标张量的存储地址、目标张量的打印次数和存储地址内存储的数据。该目标张量的存储地址指向的存储空间可以为指令处理装置的片上存储空间。可选地,该操作域可以占用至少一个操作数,本申请实施例中,操作域可以占用三个以上的操作数。其中,源操作数信息可以占用至少一个操作数,目标操作数可以占用至少一个操作数,打印次数也可以占用至少一个操作数。
进一步可选地,该源操作数信息可以占用两个操作数,其中一个操作数用以表示单次待打印数据在神经元存储器(NRAM)的源地址,该单次待打印数据在神经元存储器(NRAM)的源地址可以是该单次待打印数据的所占用的初始存储空间对应的起始地址。该源操作数信息的另一个操作数可以用于表示该单次待打印数据的数据迁移量,该数据迁移量可以采用字节(bytes)进行计算,例如,该数据迁移量可以是64字节,该数据迁移量还可以是128字节。具体的数据迁移量可以根据单次待打印数据的存储空间位置等具体场景进行确定,此处仅以举例说明,并不做具体限定。
可选地,目标操作数可以占用一个操作数,该目标操作数可以是指单次待打印数据在设备内存的缓存区的目标地址。进一步可选地,该目标地址可以是该单次待打印数据在设备内存的缓存区的所需占用的目标存储空间对应的起始地址。
在其他可选的实施例中,该源操作数信息可以占用两个以上的操作数,例如,待打印数据由多个单次待打印数据组成,单次待打印数据的源地址可以是多个,相应的,该目标地址也可以为多个,从而可以通过上述的打印指令在包含数据迁移指令的作用的基础上实现多个地址区间内的数据同时迁移至设备内存的缓存区,并将设备内存的缓存区内的数据发送至通用处理器上。
应当理解的是,本领域技术人员可以根据需要对打印指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
如图1和图2所示,本申请实施例提供了一种指令处理装置,该指令处理装置可以包括控制模块11、处理模块12和存储模块13,可选地,控制模块11和处理模块12可以集成于一处理器。如图2所示,该处理模块12可以包括至少一个计算核(计算核11~1Q,计算核21~2Q,计算核P1~PQ),一个以上的计算核可以形成一个运算核心簇(cluster)。其中,计算核可以为装置中用于实现计算的基本元件,该计算核可以包括至少一个片上存储以及用于进行数据运算的运算单元或模块等。本申请实施例中,计算核还可以用于实现上述的打印指令。进一步可选地,该处理器可以是人工智能处理器,该人工智能处理器的控制模块11和处理模块12的具体结构及工作流程可参见下文的描述。
该存储模块可以包括片上存储和片外存储。具体地,如图2所示,该存储模块可以与上述处理器连接。其中,处理器的每个计算核上可以设置有该计算核私有的片上存储。可选地,该片上存储可以是用于存储标量数据或向量数据的神经元存储器,该神经元存储器可以是随机存取存储器,简记为 NRAM(Neural Random Access Memory)。该片外存储可以是DDR (Double Data Rate SDRAM,双倍速率SDRAM)。该DDR的一部分存储空间作为通用存储器,通用存储器可以是各个计算核共用的存储器,该通用存储器可以简记为GDRAM。该DDR的另一部分存储空间可以作为各个计算核可以私有的存储器,计算核私有的存储器可以简记为LDRAM。
控制模块11用于对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据。其中,所述操作域包括所述待打印数据的源操作数、目标操作数以及打印参数;其中,所述打印参数包括数据迁移方向和打印次数参数。
进一步的,待打印数据的源操作数、目标操作数对应的地址均指向的存储空间可以为指令处理装置的片上存储空间。可选地,该目标张量的存储地址指向的存储空间为指令处理装置的片上NRAM。当然,在其他实施例中,该目标张量的存储空间还可以是其他片外存储空间,如LDRAM或GDRAM 等等。
处理模块12用于根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。具体地,处理模块12包括数据读写电路;所述数据读写电路用于根据所述打印次数参数,至少执行一次数据迁移操作;其中,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数,将所述待打印数据搬运至所述目标操作数对应的设备内存缓存区中。
可选地,该目标张量可以是神经网络数据,如神经网络的神经元数据或权值数据等等。目标张量是指0维以上的数据,其可以具有多个维度。特别的,0维张量数据即为标量数据,1维张量数据即为向量数据,2维张量数据可以为矩阵数据等。也就是说,本申请实施例中的打印指令既能实现标量数据的打印,也可以实现张量数据中部分元素的打印。
可选地,所述源操作数还包括单次待打印数据的源地址和单次待打印数据的数据迁移量;其中,所有的单次待打印数据的集合为待打印数据;所述数据访存电路还用于:
根据所述单次待打印数据的源地址和所述单次待打印数据的数据迁移量,确定单次待打印数据;
按照所述数据迁移方向,将所述单次待打印数据搬运至所述目标操作数对应的目标存储空间中。
可选地,所述打印次数还包括待打印数据数量、源地址偏移量和目标地址偏移量;所述源操作数包括所述单次待打印数据的源地址,所述目标操作数包括所述单次待打印数据的目标地址;所述处理模块还包括:
计数器,用于根据所述待打印数据数量确定数据迁移次数和所述打印次数;
第一地址偏移电路,用于在确定当前单次待打印数据之后,根据所述单次待打印数据的源地址和所述源地址偏移量,更新下一次单次待打印数据的源地址,获得更新后的单次待打印数据的源地址;根据所述目标地址和所述目标地址偏移量,更新所述下一次单次待打印数据的目标地址,获得更新后的单次待打印数据的目标地址;
数据读写电路,用于根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,将当前的单次待打印数据迁移至设备内存的缓存区的目标区域内。
可选地,所述处理模块还包括:
第二地址偏移电路,用于根据所述打印次数、所述打印指令对应的人工智能学习任务的任务排序信息、单次待打印数据对应的空间确定单次待打印数据在设备内存的缓存区的地址偏移量。
可选地,所述处理模块进一步用于根据单次待打印数据在设备内存的缓存区的地址偏移量获得单次待打印数据。
可选地,所述待打印数据为标量数据或张量数据。
另外,控制模块11解析的打印指令中的操作数为立即数时,所述待打印数据为字符串常量,所述待打印数据中各数据的数据类型不相同。所述待打印数据的数据类型为int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、 half、float、char、bool中的至少一种。
下面结合通用处理器(如CPU)与人工智能处理器交互的场景,详细描述打印指令的实现过程:
通用处理器与人工智能处理器可以通过总线连接。通用处理器可以包括主存储器,主存储器用于存储待打印数据,待打印数据为人工智能处理器传送至通用处理器的。人工智能处理器可以包括第二地址偏移电路、神经元存储器(NRAM)、权值存储器(WRAM)和设备内存;第二地址偏移电路用于计算当前子打印数据对应的地址偏移量,NRAM可以用于存储单次打印数据和时间戳,设备内存包括数据缓冲区,数据缓冲区用于存储待打印数据,硬件指令可以存储于NRAM中,也可以存储于设备内存中。在本申请实施例中,第一存储器为设备内存,第二存储器可以包括NRAM和WRAM。
基于上述计算机异构系统(包括通用处理器和人工智能处理器)的存储结构,本申请实施例的数据输出过程可以包括两部分,其中一部分是指人工智能处理器将待打印数据输出至CPU的过程,另一部分是CPU将待打印数据打印至显示器或预设文件夹中的过程。
请参阅图3,图3是本申请实施例提供的一种打印指令执行的流程示意图之一,该数据输出方法包括步骤301-305,具体如下:
301:所述通用处理器发送可执行文件至所述人工智能处理器,所述可执行文件包括硬件指令。
其中,在本申请实施例中,通用处理器可以是中央处理器(CPU),可执行文件可以是能够在人工智能处理器上运行的二进制文件,其具体可以是 ELF文件。
302:所述人工智能处理器接收能够在所述人工智能处理器上运行的所述可执行文件,所述可执行文件包括所述硬件指令,基于所述硬件指令在所述人工智能处理器的第一存储器中确定数据缓冲区。
在一个可能的示例中,人工智能处理器基于所述硬件指令在所述人工智能处理器的第一存储器中确定数据缓冲区之前,所述方法还包括:
人工智能处理器解析所述可执行文件,得到标志位;
人工智能处理器判断所述标志位是否满足预设条件;
若所述标志位满足所述预设条件,则人工智能处理器执行基于所述硬件指令在所述人工智能处理器的第一存储器中确定数据缓冲区的操作。
在实际应用中,若所述标志位不满足所述预设条件,则用户可以通过编写程序语句等手动方式,在第一存储器上分配输出数据空间,该输出数据空间用于存储待打印数据。人工智能处理器在硬件指令全部执行完成后,或在硬件指令执行指打印指令,将所述输出数据从输出数据空间传送至所述通用处理器。
其中,标志位的值可以采用0或1进行表示,通过标志位的值确定该标志位是否满足预设条件。例如,当标志位的值为1时,则可以认为标志位满足预设条件;当标志位的值为0时,则可以认为不满足预设条件。当然,在其他可选的实施例中,该标志位还可以采用不同的符号进行表示,此处仅用于举例说明,并不用于限定标志位的表示方式。进一步地,当标志位满足预设条件,表示用户使用自动确定待打印数据所需的数据缓冲区,并将待打印数据存储至数据缓冲区,进而将待打印数据从人工智能处理器的数据缓冲区传送至通用处理器的功能。当标志位不满足预设条件时,表示用户可能采用手动分配数据缓冲区的方式,人工智能处理器可以将待打印数据传送至通用处理器。
在一个可能的示例中,人工智能处理器基于所述硬件指令在所述人工智能处理器的第一存储器中确定数据缓冲区,包括:
人工智能处理器解析所述硬件指令,得到所述数据缓冲区的大小;
人工智能处理器从所述第一存储器的空闲存储区中选取目标存储区,将所述目标存储区作为所述数据缓冲区。
其中,目标存储区为第一存储器的空闲存储区中的任意一个与数据缓冲区的大小相同的存储区。
303:所述人工智能处理器将待打印数据存储至所述数据缓冲区。
具体地,该待打印数据存储于第二存储器中,人工智能处理器可以根据硬件指令,将待打印数据从第二存储器搬运至第一存储器的数据缓冲区中。可选地,第二存储器中存储有单次打印数据。
在一个可能的示例中,人工智能处理器将待打印数据存储至数据缓冲区之前,所述方法还包括:
人工智能处理器解析硬件指令,得到输入数据空间和运算指令;
人工智能处理器从输入数据空间中读取输入数据和N个权值,N为大于 1的整数;
人工智能处理器基于输入数据、N个权值和运算指令进行相应运算,得到(N-1)个中间结果数据;
人工智能处理器将(N-1)个中间结果数据作为待打印数据。
可选地,该输入数据空间可以是设备内存中的部分存储空间,输入数据空间与数据缓冲区没有交集,输入数据空间与输出数据空间没有交集。
在一个可能的示例中,待打印数据包括至少一个子打印数据,人工智能处理器将待打印数据存储至所述数据缓冲区,包括:
人工智能处理器获取每个子打印数据的数据大小;
人工智能处理器根据每个子打印数据的数据大小,确定每个子打印数据在所述数据缓冲区的目标存储位置;
人工智能处理器将每个子打印数据从第二存储器搬运至其对应的所述数据缓冲区的目标存储位置。
其中,一个中间结果数据为一个子打印数据,一个子打印数据对应至少一个打印次数。也就是说,待打印数据可以包括多个子打印数据,每个子打印数据需要至少一次打印。
在一个可能的示例中,人工智能处理器根据每个子打印数据的数据大小,确定每个子打印数据在数据缓冲区的目标存储位置之前,所述方法还包括:
人工智能处理器获取数据缓冲区的当前剩余内存空间的大小;
人工智能处理器判断数据缓冲区的当前剩余内存空间的大小,是否大于或等于子打印数据所需存储空间的大小;
若数据缓冲区的当前剩余内存空间的大小,小于子打印数据所需存储空间的大小,则人工智能处理器释放数据缓冲区的部分内存空间,得到释放后的数据缓冲区的剩余内存空间,部分内存空间的大小大于或等于子打印数据所需存储空间的大小与数据缓冲区的当前剩余内存空间的大小的差值,部分内存空间的起始地址与数据缓冲区的起始地址相同。
具体地,人工智能处理器将每个子打印数据从第二存储器搬运至其对应的数据缓冲区的目标存储位置的实施方式可以为:若子打印数据对应的打印次数为M,M为大于1的整数,则在第i(i为小于或等于M的正整数)次打印后,人工智能处理器将存储于第二存储器的第i次打印对应的打印数据搬运至该子打印数据对应的数据缓冲区的目标存储位置,第i次打印为M次打印中的任意一次。
在一个可能的示例中,人工智能处理器根据每个子打印数据的数据大小,确定每个子打印数据在所述数据缓冲区的目标存储位置,包括:
人工智能处理器解析所述硬件指令,得到每次打印所需的打印空间;
人工智能处理器基于当前子打印数据的数据大小和所述每次打印所需的打印空间确定所述当前子打印数据对应的打印次数;
人工智能处理器获取所述当前子打印数据的任务标识和所述当前子打印数据对应的时间戳;
人工智能处理器根据所述每次打印所需的打印空间、所述当前子打印数据的任务标识、所述当前子打印数据对应的打印次数以及所述当前子打印数据对应的时间戳,计算所述当前子打印数据对应的地址偏移量;
人工智能处理器基于所述当前子打印数据对应的地址偏移量,确定所述当前子打印数据在所述数据缓冲区的目标存储位置。
具体地,人工智能处理器基于当前子打印数据的数据大小和每次打印所需的打印空间确定当前子打印数据对应的打印次数的实施方式可以为:人工智能处理器确定当前子打印数据所需存储空间的大小与每次打印所需的打印空间的大小的比值;若当前子打印数据所需存储空间的大小与每次打印所需的打印空间的大小的比值为整数,则人工智能处理器将当前子打印数据所需存储空间的大小与每次打印所需的打印空间的大小的比值作为当前子打印数据对应的打印次数。或者,若当前子打印数据所需存储空间的大小与每次打印所需的打印空间的大小的比值为小数,则人工智能处理器将当前子打印数据所需存储空间的大小与每次打印所需的打印空间的大小的比值的整数部分加一作为当前子打印数据对应的打印次数。
其中,当前子打印数据的任务标识表示当前子打印数据为第几个子打印数据。
具体地,人工智能处理器获取当前子打印数据对应的时间戳的实施方式可以为:人工智能处理器解析硬件指令,得到时间戳空间,时间戳空间用于存储时间戳;人工智能处理器从时间戳空间中读取当前子打印数据对应的时间戳。可选地,该时间戳空间可以是第二存储器中的部分存储空间,进一步可选地,该时间戳空间可以是NRAM中的部分存储空间。
具体地,人工智能处理器根据每次打印所需的打印空间、当前子打印数据的任务标识、当前子打印数据对应的打印次数以及当前子打印数据对应的时间戳计算当前子打印数据对应的地址偏移量的实施方式可以为:人工智能处理器根据每次打印所需的打印空间、当前子打印数据的任务标识、当前子打印数据对应的打印次数、当前子打印数据对应的时间戳以及偏移量公式,计算当前子打印数据对应的地址偏移量。
其中,偏移量公式预先存储于人工智能处理器,偏移量公式具体可以为:
offset=sizeof(printf_record)*(num_records_per_task*taskid+timestamp),
offset为当前子打印数据对应的偏移量,sizeof(printf_record)为每次打印所需的打印空间,num_records_per_task为当前子打印数据对应的打印次数,taskid为当前子打印数据的任务标识,timestamp为当前子打印数据对应的时间戳。
具体地,人工智能处理器基于当前子打印数据对应的地址偏移量,确定当前子打印数据在数据缓冲区的目标存储位置的实施方式可以为:人工智能处理器获取数据缓冲区的首地址;人工智能处理器基于数据缓冲区的首地址和当前子打印数据对应的地址偏移量,确定当前子打印数据在数据缓冲区的起始地址和结束地址。人工智能处理器将当前子打印数据在数据缓冲区的起始地址和结束地址作为当前子打印数据在数据缓冲区的目标存储位置。
其中,在本申请实施例中,在每次打印后,将时间戳加一存储至时间戳空间。
304:所述人工智能处理器将所述待打印数据从所述数据缓冲区传送至所述通用处理器。
在一个可能的示例中,人工智能处理器将所述待打印数据从所述数据缓冲区传送至通用处理器,包括:
在所述硬件指令执行完成后,人工智能处理器将所述待打印数据从所述数据缓冲区传送至所述通用处理器;或者,
每当所述硬件指令执行至打印指令,则人工智能处理器将所述打印指令对应的子打印数据从所述数据缓冲区传送至所述通用处理器。即可以实现实时打印。
进一步可选地,用户可以通过设置预设打印模式实现不同打印方式的选择。例如,该硬件指令中标志位可以进一步包含打印模式标志位。当打印模式标志位为1时,人工智能处理器按照第一种方式进行打印,即在所述硬件指令执行完成后,人工智能处理器将所述待打印数据从所述数据缓冲区传送至所述通用处理器。当打印模式标志位位0时,人工智能处理器可以按照第二种方式进行实时打印,即每当所述硬件指令执行至打印指令,则人工智能处理器将所述打印指令对应的子打印数据从所述数据缓冲区传送至所述通用处理器。
在一个可能的示例中,人工智能处理器将所述待打印数据从所述数据缓冲区传送至通用处理器,包括:
每当所述硬件指令执行至打印指令,则人工智能处理器将所述打印指令对应的子打印数据转换为字符串,并将所述字符串从所述数据缓冲区传送至所述通用处理器。
305:所述通用处理器接收所述人工智能处理器传送的所述待打印数据,将所述待打印数据输出显示在显示屏上;或者,将所述待打印数据打印至预设文件夹中。
可以看出,在本申请实施例中,人工智能处理器接收通用处理器发送的能够在其上运行的可执行文件,可执行文件包括硬件指令,基于硬件指令在人工智能处理器的第一存储器中自动确定数据缓冲区,将打印数据存储至数据缓冲区,将待打印数据从数据缓冲区传送至通用处理器,从而可以通过通用处理器将待打印数据输出显示至与通用处理器连接的显示屏上。相较于手动在人工智能处理器的第一存储器中分配数据缓冲区,手动将存储于数据缓冲区的待打印数据拷贝至通用处理器,这样实现了人工智能处理器基于数据缓冲区的大小自动分配数据缓冲区,自动将待打印数据从人工智能处理器的数据缓冲区传送至通用处理器,进而使得通用处理器将待打印数据输出显示至与通用处理器连接的显示屏上,或将待打印数据打印至预设文件夹中。
在一个可能的示例中,通用处理器将待打印数据输出显示在显示屏上之前,所述方法还包括:
若待打印数据为字符串,则通用处理器基于字符串筛选规则对字符串进行筛选,得到筛选后的字符串;
通用处理器将筛选后的字符串输出显示在显示屏上。
其中,字符串筛选规则预先存储于通用处理器,字符串少选规则用于辅助筛选出合法字符。
与上述图3所示的实施例一致的,请参阅图4,图4是本申请实施例提供的另一种打印指令的执行方法的流程示意图,应用于人工智能处理器,该数据输出方法包括步骤401-404,具体如下:
401:人工智能处理器接收能够在人工智能处理器上运行的可执行文件,所述可执行文件包括硬件指令。
402:人工智能处理器基于所述硬件指令在所述人工智能处理器的第一存储器中确定数据缓冲区。
403:人工智能处理器将待打印数据存储至所述数据缓冲区。
404:人工智能处理器将所述待打印数据从所述数据缓冲区传送至通用处理器。
需要说明的是,图4所示的方法的各个步骤的具体实现过程可参见上述方法所述的具体实现过程,在此不再叙述。
本申请实施例中,指令处理装置可以直接对上述的打印指令进行解析获得操作码和操作域,处理模块可以根据操作码和操作域等信息将目标值作为打印对象发送至设备内存的缓存区上,触发打印指令,将设备内存的缓存区的待打印数据传送至通用处理器上。本申请实施例中的指令处理装置通过直接对相应存储空间进行写操作实现打印操作,相较于传统技术中人工智能处理器无法支持打印,本技术方案弥补这一缺憾,并且打印过程较为简单,提高了指令处理效率。
上述实施例中,编译后指令为处理器能够执行的硬件指令,该指令处理装置可以直接对编译后获得的硬件指令直接进行处理,以实现对指定的片上存储空间中目标张量的赋值。在一个可选的实施例中,控制模块所获取到的打印指令为未编译的、不能直接供硬件执行的软件指令,控制模块需先对打印指令(未编译)进行编译。在得到编译后的打印指令之后,才能对编译后的打印指令进行解析。之后,处理模块再根据该编译后的打印指令执行赋值操作。
在一个可选的实施例中,可选地,如图5a-图5e所示,控制模块11 可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。其中,指令存储子模块111用于存储编译后的打印指令。指令处理子模块112 用于对编译后的打印指令进行解析,得到打印指令的操作码和操作域。队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括编译后的打印指令。在该实现方式中,待执行指令还可以包括与打印相关或无关的计算指令,本公开对此不作限制。本申请实施例可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
进一步可选地,如图5a-图5e所示,控制模块11可以包括依赖关系处理子模块114。依赖关系处理子模块114用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块111中,在第零待执行指令执行完毕后,从指令存储子模块111中提取第一待执行指令发送至处理模块12。其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第一待执行指令之前的第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。通过这种方式,可以根据第一待执行指令与第一待执行指令之前的第零待执行指令之间的依赖关系,使得在先的第零待执行指令执行完毕之后,再执行在后的第一待执行指令,保证结果的准确性。
每个计算核可以包括主处理子模块和多个从处理子模块。如图 5a所示,处理模块12可以包括主处理子模块121和多个从处理子模块122。控制模块11,还用于解析编译后的指令得到多个运算指令,并将待迁移数据以及多个运算指令发送至主处理子模块121。
主处理子模块121,用于对待迁移数据执行前序处理,以及与多个从处理子模块122进行数据以及多个运算指令的传输。
多个从处理子模块122,用于根据从主处理子模块121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理子模块121。
主处理运算子模块121,还用于对多个中间结果执行后续处理,得到处理后的待迁移数据,将处理后的待迁移数据存入目标地址中。
需要说明的是,本领域技术人员可以根据实际需要对主处理子模块和多个从处理子模块之间的连接方式进行设置,以实现对处理模块的架构设置,例如,处理模块的架构可以是“H”型架构、阵列型架构、树型架构等,本公开对此不作限制。
图5b示出根据本公开一实施例的指令处理装置的框图。在一种可能的实现方式中,如图5b所示,处理模块12还可以包括一个或多个分支处理子模块123,该分支处理子模块123用于转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。其中,主处理子模块121与一个或多个分支处理子模块123连接。这样,处理模块中的主处理子模块、分支处理子模块和从处理子模块之间采用“H”型架构连接,通过分支处理子模块转发数据和/或运算指令,节省了对主处理子模块的资源占用,进而提高指令的处理速度。
图5c示出根据本公开一实施例的指令处理装置的框图。在一种可能的实现方式中,如图5c所示,多个从处理子模块122呈阵列分布。每个从处理子模块122与相邻的其他从处理子模块122连接,主处理子模块121连接多个从处理子模块122中的k个从处理子模块122,k个从处理子模块122 为:第1行的n个从处理子模块122、第m行的n个从处理子模块122以及第1列的m个从处理子模块122。
其中,如图5c所示,k个从处理子模块仅包括第1行的n个从处理子模块、第m行的n个从处理子模块以及第1列的m个从处理子模块,即该k 个从处理子模块为多个从处理子模块中直接与主处理子模块连接的从处理子模块。其中,k个从处理子模块,用于在主处理子模块以及多个从处理子模块之间的数据以及指令的转发。这样,多个从处理子模块呈阵列分布,可以提高主处理子模块向从处理子模块发送数据和/或运算指令速度,进而提高指令的处理速度。
图5d示出根据本公开一实施例的指令处理装置的框图。在一种可能的实现方式中,如图5d所示,处理模块还可以包括树型子模块124。该树型子模块124包括一个根端口401和多个支端口402。根端口401与主处理子模块121连接,多个支端口402与多个从处理子模块122分别连接。其中,树型子模块124具有收发功能,用于转发主处理子模块121和从处理子模块122 之间的数据和/或运算指令。这样,通过树型子模块的作用使得处理模块呈树型架构连接,并利用树型子模块的转发功能,可以提高主处理子模块向从处理子模块发送数据和/或运算指令速度,进而提高指令的处理速度。
在一种可能的实现方式中,树型子模块124可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备运算功能。最下层的节点与从处理子模块连接,以转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。
在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。举例来说,图5e示出根据本公开一实施例的指令处理装置的框图。如图5e所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从处理子模块122 连接,以转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2 的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本公开对此不作限制。
在本公开所提供的实施例中,应该理解到,所揭露的系统、装置,可通过其它的方式实现。例如,以上所描述的系统、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述指令处理装置,用于从其他处理装置中获取待迁移数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得内存赋值指令,并将执行结果通过I/O 接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上指令处理装置时,指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过 PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图6a示出根据本公开一实施例的组合处理装置的框图。如图6a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
图6b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图6b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和所述其他处理装置连接。存储装置用于保存在机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本公开提供一种板卡,图7示出根据本公开一实施例的板卡的结构示意图。如图7所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片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超仪和/或心电图仪。
图8示出根据本公开一实施例的指令处理方法的流程图。如图8所示,该方法可以应用于上述指令处理装置。上述指令处理方法包括如下操作:
S800、对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;
S810、根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
在一个实施例中,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质中设置存储有计算机程序,该计算机程序被一个或多个处理器执行时,具体实现上述方法中的步骤。具体地,该计算机程序被一个或多个处理器执行时,具体实现如下步骤:
对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;
根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。
上述实施例中各个步骤的具体实现与上述方法中的步骤的实现过程基本一致。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
根据以下条款可以更好地理解前述内容:
条款1:一种指令处理装置,所述装置包括:
控制模块,用于对编译后的内存赋值指令进行解析,得到所述内存赋值指令的操作码和操作域,并根据所述操作码和所述操作域获得目标张量的存储地址、所述目标张量中待赋值元素的数量以及目标值;其中,所述操作域包括目标张量的存储地址、所述目标张量中待赋值元素的数量和所述目标值;所述目标张量的存储地址指向的存储空间为所述指令处理装置的片上存储空间;
处理模块,用于根据所述目标张量的存储地址、所述目标张量中待赋值元素的数量和所述目标值,将所述目标值作为所述目标张量中待赋值元素的值。
条款2:根据条款1所述的装置,所述操作域包括所述待打印数据的源操作数、目标操作数以及打印参数;其中,所述打印参数包括数据迁移方向和打印次数参数。
条款3、根据条款2所述的装置,所述处理模块,还包括数据读写电路;
所述数据读写电路用于根据所述打印次数参数,至少执行一次数据迁移操作;其中,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数,将所述待打印数据搬运至所述目标操作数对应的设备内存缓存区中。
条款4、根据条款3所述的装置,所述源操作数还包括单次待打印数据的源地址和单次待打印数据的数据迁移量;其中,所有的单次待打印数据的集合为待打印数据;
所述数据访存电路还用于:
根据所述单次待打印数据的源地址和所述单次待打印数据的数据迁移量,确定单次待打印数据;
按照所述数据迁移方向,将所述单次待打印数据搬运至所述目标操作数对应的目标存储空间中。
条款5、根据条款4所述的装置,所述打印次数还包括待打印数据数量、源地址偏移量和目标地址偏移量;所述源操作数包括所述单次待打印数据的源地址,所述目标操作数包括所述单次待打印数据的目标地址;所述处理模块还包括:
计数器,用于根据所述待打印数据数量确定数据迁移次数和所述打印次数;
第一地址偏移电路,用于在确定当前单次待打印数据之后,根据所述单次待打印数据的源地址和所述源地址偏移量,更新下一次单次待打印数据的源地址,获得更新后的单次待打印数据的源地址;根据所述目标地址和所述目标地址偏移量,更新所述下一次单次待打印数据的目标地址,获得更新后的单次待打印数据的目标地址;
数据读写电路,用于根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,将当前的单次待打印数据迁移至设备内存的缓存区的目标区域内。
条款6、根据条款5所述的装置,所述处理模块还包括:
第二地址偏移电路,用于根据所述打印次数、所述打印指令对应的人工智能学习任务的任务排序信息、单次待打印数据对应的空间确定单次待打印数据在设备内存的缓存区的地址偏移量。
条款7.根据条款6所述的装置,所述处理模块进一步用于根据单次待打印数据在设备内存的缓存区的地址偏移量获得单次待打印数据。
条款8.根据条款1-条款6任一项所述的装置,所述待打印数据为标量数据或张量数据。
条款9.根据条款1-条款6任一项所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述编译后的打印指令;
指令处理子模块,用于对所述编译后的打印指令进行解析,得到所述打印指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述编译后的打印指令。
条款10.根据条款1所述的装置,所述操作域为立即数。
条款11.根据条款1-条款10所述的装置,所述待打印数据为字符串常量。
条款12.根据条款1-条款10所述的装置,所述待打印数据中各数据的数据类型不相同。
条款13.根据条款1-条款10所述的装置,所述待打印数据的数据类型为int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、half、float、char、bool 中的至少一种。
条款14、一种指令处理方法,所述方法包括:
对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;
根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。
条款15、根据条款14所述的方法,所述操作域包括所述待打印数据的源操作数、目标操作数以及打印参数;其中,所述打印参数包括数据迁移方向和打印次数参数。
条款16.根据条款14所述的方法,所述操作域为立即数。
条款17、一种计算机可读存储介质,所述计算机可读存储介质被一个或多个处理装置执行时,实现如条款14-条款16任一项所述方法中的步骤。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种指令处理装置,其特征在于,所述装置包括:
控制模块,用于对编译后的打印指令进行解析,得到所述打印指令的操作码和操作域,并根据所述操作码确定所述待打印数据的格式,根据所述操作域确定待打印数据;
处理模块,用于根据待打印数据的格式,对待打印数据进行格式处理,将格式处理后的待打印数据从设备内存的缓存区发送至通用处理器。
2.根据权利要求1所述的装置,其特征在于,所述操作域包括所述待打印数据的源操作数、目标操作数以及打印参数;其中,所述打印参数包括数据迁移方向和打印次数参数。
3.根据权利要求2所述的装置,其特征在于,所述处理模块,还包括数据读写电路;
所述数据读写电路用于根据所述打印次数参数,至少执行一次数据迁移操作;其中,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数,将所述待打印数据搬运至所述目标操作数对应的设备内存缓存区中。
4.根据权利要求3所述的装置,其特征在于,所述源操作数还包括单次待打印数据的源地址和单次待打印数据的数据迁移量;其中,所有的单次待打印数据的集合为待打印数据;
所述数据访存电路还用于:
根据所述单次待打印数据的源地址和所述单次待打印数据的数据迁移量,确定单次待打印数据;
按照所述数据迁移方向,将所述单次待打印数据搬运至所述目标操作数对应的目标存储空间中。
5.根据权利要求4所述的装置,其特征在于,所述打印次数参数还包括待打印数据数量、源地址偏移量和目标地址偏移量;所述源操作数包括所述单次待打印数据的源地址,所述目标操作数包括所述单次待打印数据的目标地址;所述处理模块还包括:
计数器,用于根据所述待打印数据数量确定数据迁移次数和所述打印次数;
第一地址偏移电路,用于在确定当前单次待打印数据之后,根据所述单次待打印数据的源地址和所述源地址偏移量,更新下一次单次待打印数据的源地址,获得更新后的单次待打印数据的源地址;根据所述目标地址和所述目标地址偏移量,更新所述下一次单次待打印数据的目标地址,获得更新后的单次待打印数据的目标地址;
数据读写电路,用于根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,将当前的单次待打印数据迁移至设备内存的缓存区的目标区域内。
6.根据权利要求5所述的装置,其特征在于,所述处理模块还包括:
第二地址偏移电路,用于根据所述打印次数、所述打印指令对应的人工智能学习任务的任务排序信息、单次待打印数据对应的空间确定单次待打印数据在设备内存的缓存区的地址偏移量。
7.根据权利要求6所述的装置,其特征在于,所述处理模块进一步用于根据单次待打印数据在设备内存的缓存区的地址偏移量获得单次待打印数据。
8.根据权利要求1-6任一项所述的装置,其特征在于,所述待打印数据为标量数据或张量数据。
9.根据权利要求1-6任一项所述的装置,其特征在于,所述控制模块包括:
指令存储子模块,用于存储所述编译后的打印指令;
指令处理子模块,用于对所述编译后的打印指令进行解析,得到所述打印指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述编译后的打印指令。
10.根据权利要求1所述的装置,其特征在于,所述操作域为立即数。
CN201910420738.6A 2019-05-20 2019-05-20 指令处理方法、装置及相关产品 Pending CN111966306A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910420738.6A CN111966306A (zh) 2019-05-20 2019-05-20 指令处理方法、装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910420738.6A CN111966306A (zh) 2019-05-20 2019-05-20 指令处理方法、装置及相关产品

Publications (1)

Publication Number Publication Date
CN111966306A true CN111966306A (zh) 2020-11-20

Family

ID=73357854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910420738.6A Pending CN111966306A (zh) 2019-05-20 2019-05-20 指令处理方法、装置及相关产品

Country Status (1)

Country Link
CN (1) CN111966306A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS648048A (en) * 1987-06-30 1989-01-12 Seiko Instr & Electronics Digital data processing method for false gradation
US5542060A (en) * 1991-01-21 1996-07-30 Mitsubishi Denki Kabushiki Kaisha Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes
US20040145769A1 (en) * 2003-01-23 2004-07-29 Collier Dan L. Processing a printer control command
JP2008198048A (ja) * 2007-02-15 2008-08-28 Seiko Epson Corp 印刷制御装置、印刷制御方法、印刷制御プログラム
US20120188598A1 (en) * 2011-01-25 2012-07-26 Canon Kabushiki Kaisha Information processing apparatus, control method, and computer-readable medium
US20180004562A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Aperture access processors, methods, systems, and instructions
CN107704267A (zh) * 2016-04-29 2018-02-16 北京中科寒武纪科技有限公司 一种卷积神经网络运算指令及其方法
CN109087381A (zh) * 2018-07-04 2018-12-25 西安邮电大学 一种基于双发射vliw的统一架构渲染着色器
CN109711539A (zh) * 2018-12-17 2019-05-03 北京中科寒武纪科技有限公司 运算方法、装置及相关产品

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS648048A (en) * 1987-06-30 1989-01-12 Seiko Instr & Electronics Digital data processing method for false gradation
US5542060A (en) * 1991-01-21 1996-07-30 Mitsubishi Denki Kabushiki Kaisha Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes
US20040145769A1 (en) * 2003-01-23 2004-07-29 Collier Dan L. Processing a printer control command
JP2008198048A (ja) * 2007-02-15 2008-08-28 Seiko Epson Corp 印刷制御装置、印刷制御方法、印刷制御プログラム
US20120188598A1 (en) * 2011-01-25 2012-07-26 Canon Kabushiki Kaisha Information processing apparatus, control method, and computer-readable medium
CN107704267A (zh) * 2016-04-29 2018-02-16 北京中科寒武纪科技有限公司 一种卷积神经网络运算指令及其方法
US20180004562A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Aperture access processors, methods, systems, and instructions
CN109087381A (zh) * 2018-07-04 2018-12-25 西安邮电大学 一种基于双发射vliw的统一架构渲染着色器
CN109711539A (zh) * 2018-12-17 2019-05-03 北京中科寒武纪科技有限公司 运算方法、装置及相关产品

Similar Documents

Publication Publication Date Title
CN114580606A (zh) 数据处理方法、装置、计算机设备和存储介质
CN111949317B (zh) 指令处理方法、装置及相关产品
CN111966306A (zh) 指令处理方法、装置及相关产品
CN111258641B (zh) 运算方法、装置及相关产品
CN111260070B (zh) 运算方法、装置及相关产品
CN111966400A (zh) 指令处理方法、装置及相关产品
CN111353595A (zh) 运算方法、装置及相关产品
CN111260046A (zh) 运算方法、装置及相关产品
CN111966399B (zh) 指令处理方法、装置及相关产品
CN111290789B (zh) 运算方法、装置、计算机设备和存储介质
CN111079914B (zh) 运算方法、系统及相关产品
CN112396186B (zh) 执行方法、装置及相关产品
CN111966398B (zh) 指令处理方法、装置及相关产品
CN111078125B (zh) 运算方法、装置及相关产品
CN111078285B (zh) 运算方法、系统及相关产品
CN112346707A (zh) 指令处理方法、装置及相关产品
CN111966399A (zh) 指令处理方法、装置及相关产品
CN111339060B (zh) 运算方法、装置、计算机设备和存储介质
CN111966398A (zh) 指令处理方法、装置及相关产品
CN111949318A (zh) 指令处理方法、装置及相关产品
CN112394990A (zh) 浮点转半精度浮点指令处理装置、方法及相关产品
CN112346781A (zh) 指令处理方法、装置及相关产品
CN112394986A (zh) 半精度浮点转浮点指令处理装置、方法及相关产品
CN111966403A (zh) 指令处理方法、装置及相关产品
CN112346784A (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