CN110825436B - 应用于人工智能芯片的计算方法和人工智能芯片 - Google Patents
应用于人工智能芯片的计算方法和人工智能芯片 Download PDFInfo
- Publication number
- CN110825436B CN110825436B CN201810906485.9A CN201810906485A CN110825436B CN 110825436 B CN110825436 B CN 110825436B CN 201810906485 A CN201810906485 A CN 201810906485A CN 110825436 B CN110825436 B CN 110825436B
- Authority
- CN
- China
- Prior art keywords
- complex operation
- processor core
- complex
- instruction
- queue
- 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 abstract description 94
- 238000004364 calculation method Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000001133 acceleration Effects 0.000 claims description 71
- 230000015654 memory Effects 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 8
- 238000003491 array Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
Images
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例公开了应用于人工智能芯片的计算方法和人工智能芯片。该方法的一具体实施方式包括:目标处理器核响应于确定对待执行指令译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令,以及将所生成的复杂运算指令添加到复杂运算指令队列;运算加速部件从复杂运算指令队列中选取复杂运算指令,以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果,以及将得到的运算结果作为复杂运算结果写入复杂运算结果队列。该实施方式降低了人工智能芯片的面积开销和功耗开销。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及应用于人工智能芯片的计算方法和人工智能芯片。
背景技术
人工智能芯片,即AI(Artificial Intelligence)芯片,也被称为AI加速器或计算卡,是指专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。AI计算中运算的需求是巨大的,特别是复杂的运算需求对计算性能影响较大。复杂运算,虽然可以用基本运算指令来实现,但会降低复杂运算(如浮点开方运算、浮点求幂运算、三角函数运算等)执行效率。
发明内容
本申请实施例提出了应用于人工智能芯片的计算方法和人工智能芯片。
第一方面,本申请实施例提供了一种应用于人工智能芯片的计算方法,至少一个处理器核中的目标处理器核对待执行指令进行译码,得到运算标识和至少一个操作数;目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令;目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列;运算加速部件从复杂运算指令队列中选取复杂运算指令;运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果;运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列。
在一些实施例中,在至少一个处理器核中的目标处理器核对待执行指令进行译码之前,该方法还包括:响应于接收到待执行指令,在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。
在一些实施例中,复杂运算指令队列包括与至少一个处理器核中每个处理器核对应的复杂运算指令队列,复杂运算结果队列包括与至少一个处理器核中每个处理器核对应的复杂运算结果队列;以及目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列,包括:目标处理器核将所生成的复杂运算指令添加到与目标处理器核对应的复杂运算指令队列;以及运算加速部件从复杂运算指令队列中选取复杂运算指令,包括:运算加速部件从与至少一个处理器核中各个处理器核对应的复杂运算指令队列中选取复杂运算指令;以及运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列,包括:运算加速部件将所得到的运算结果作为复杂运算结果写入所选取的复杂运算指令所来自的复杂运算指令队列对应的处理器核对应的复杂运算结果队列。
在一些实施例中,在运算加速部件将所得到的运算结果作为复杂运算结果写入所选取的复杂运算指令所来自的复杂运算指令队列对应的处理器核对应的复杂运算结果队列之后,该方法还包括:目标处理器核从与目标处理器核对应的复杂运算结果队列中选取复杂运算结果写入目标处理器核中的结果寄存器和/或人工智能芯片的存储器中。
在一些实施例中,目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令,包括:目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数以及目标处理器核标识生成复杂运算指令;以及运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列,包括:运算加速部件将所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入复杂运算结果队列。
在一些实施例中,在运算加速部件将所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入复杂运算结果队列之后,该方法还包括:目标处理器核从复杂运算结果队列中选取处理器核标识为目标处理器核标识的复杂运算结果中的运算结果写入目标处理器核中的结果寄存器和/或人工智能芯片的存储器中。
在一些实施例中,运算加速部件包括以下至少一项:专用集成电路芯片和现场可编程门阵列。
在一些实施例中,复杂运算指令队列和复杂运算结果队列为先进先出队列。
在一些实施例中,复杂运算指令队列和复杂运算结果队列存储在缓存中。
在一些实施例中,运算加速部件包括至少一个运算单元;以及运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,包括:在运算加速部件中与所选取的复杂运算指令中的复杂运算标识对应的运算单元中,以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算。
在一些实施例中,预设复杂运算标识包括以下至少一项:求幂运算标识、开方运算标识和三角函数运算标识。
第二方面,本申请实施例提供了一种人工智能芯片,包括:至少一个处理器核;与至少一个处理器核中各个处理器核连接的运算加速部件;存储装置,其上存储有至少一个程序,当至少一个程序被人工智能芯片执行时,使得人工智能芯片实现如第一方面中任一实现方式描述的方法。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被人工智能芯片执行时实现如第一方面中任一实现方式描述的方法。
第四方面,本申请实施例提供了一种电子设备,包括:处理器、存储装置和至少一个如第二方面中描述的人工智能芯片。
本申请实施例提供的应用于人工智能芯片的计算方法,其中,人工智能芯片包括至少一个处理器核和与至少一个处理器核中各个处理器核连接的运算加速部件,该方法通过由目标处理器核响应于确定待执行指令所要执行的运算是预设复杂运算,对待执行指令进行译码,得到复杂运算标识和至少一个操作数,用复杂运算标识和至少一个操作数生成复杂运算指令以及将所生成的复杂运算指令添加到复杂运算指令队列,再由运算加速部件从复杂运算指令队列中选取复杂运算指令,以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果,以及将得到的运算结果作为复杂运算结果写入复杂运算结果队列。从而有效利用了运算加速部件进行复杂运算,其技术效果至少包括:
第一,引入运算加速部件执行复杂运算,提高了AI芯片处理复杂运算的能力和效率。
第二,由于实践中,复杂运算的执行频率没有简单运算执行频率高,因此由至少一个处理器核共享一个运算加速部件,而不是为每个处理器核配置一个运算加速部件,降低了AI芯片中复杂运算带来的面积开销和功耗开销。
第三,由于运算加速部件中有多个运算单元,多个运算单元并行执行复杂运算操作,因此,在无数据冒险的情况下,复杂运算的时间开销可以被后续指令所掩盖。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例可以应用于其中的示例性***架构图;
图2是根据本申请的应用于人工智能芯片的计算方法的一个实施例的流程图;
图3A是根据本申请的应用于人工智能芯片的计算方法的又一个实施例的流程图;
图3B是根据图3A的实施例的应用于人工智能芯片的计算方法的人工智能芯片的一个结构示意图;
图3C是根据图3A的实施例的复杂运算指令的示意图;
图3D是根据图3A的实施例的复杂运算结果的示意图;
图4A是根据本申请的应用于人工智能芯片的计算方法的另一个实施例的流程图;
图4B是根据图4A的实施例的应用于人工智能芯片的计算方法的人工智能芯片的一个结构示意图;
图4C是根据图4A的实施例的复杂运算指令的示意图;
图4D是根据图4A的实施例的复杂运算结果的示意图;
图5是适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的应用于人工智能芯片的计算方法的实施例的示例性***架构100。
如图1所示,***架构100可以包括CPU(Central Processing Unit,中央处理器)101,总线102和AI芯片103、104。总线102用以在CPU 101和AI芯片103、104之间提供通信链路的介质。总线102可以包括各种总线类型,例如AMBA(Advanced Microcontroller BusArchitecture)总线、OCP(Open Core Protocol)总线等等。
AI芯片103可以包括处理器核1031、1032、1033,有线1034和运算加速部件1035。有线1034用于在处理器核1031、1032、1033和运算加速部件1035之间提供通信链路的介质。有线1034可以包括各种有线类型,例如PCI总线、PCIE总线、支持片上互连(Network On Chip)协议的AMBA总线、OCP总线以及其他片上互连总线等等。
AI芯片104可以包括处理器核1041、1042、1043,有线1044和运算加速部件1045。有线1044用于在处理器核1041、1042、1043和运算加速部件1045之间提供通信链路的介质。有线1044可以包括各种有线类型,例如PCI总线、PCIE总线、支持片上互连(Network On Chip)协议的AMBA总线、OCP总线以及其他片上互连总线等等。
需要说明的是,本申请实施例所提供的应用于人工智能芯片的计算方法一般由AI芯片102、103执行。
应该理解,图1中的CPU、总线和AI芯片的数目仅仅是示意性的。根据实现需要,可以具有任意数目的CPU、总线和AI芯片。同理,AI芯片102、103中处理器核、有线和存储器的数目也仅仅是示意性的。根据实现需要,AI芯片102、103中可以具有任意数目的处理器核、有线和存储器。另外,根据实现需要,***架构100中还可以包括存储器、输入设备(比如鼠标、键盘等)、输出设备(比如显示器、扬声器等)、输入/输出接口等等。
继续参考图2,其示出了根据本申请的应用于人工智能芯片的计算方法的一个实施例的流程200。该应用于人工智能芯片的计算方法,包括以下步骤:
步骤201,至少一个处理器核中的目标处理器核对待执行指令进行译码,得到运算标识和至少一个操作数。
在本实施例中,应用于人工智能芯片的计算方法的执行主体(例如图1所示的AI芯片)可以包括至少一个处理器核和与至少一个处理器核中各个处理器核连接的运算加速部件。运算加速部件具有独立运算能力,相对于处理器核,运算加速部件更适用于做复杂运算,这里复杂运算是指相对于简单运算而言计算量较大的运算,简单运算可以指计算量较小的运算。例如,简单运算可以是加法运算、乘法运算或者可以加法运算和乘法运算的简单组合运算。由于,一般处理器核中都包括加法器和乘法器,因此,对于处理器核,更适合做简单运算。而复杂运算是指不能通过加法运算和乘法运算的简单组合而组成的运算,比如求幂运算、开方运算、三角函数运算等等。
在本实施例的一些可选的实现方式中,运算加速部件可以包括以下至少一项:专用集成电路(ASIC,Application Specific Integrated Circuit))芯片和现场可编程门阵列(FPGA,Field Programmable Gate Array)。
这里,上述执行主体可以在接收到待执行指令的情况下,在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。例如,可以根据每个处理器核的当前工作状态在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。又例如,也可以按照轮询的方式在至少一个处理器核中选取执行待执行指令的处理器核作为目标处理器核。
这样,目标处理器核可以在接收到待执行指令的情况下,对待执行指令进行译码,得到运算标识和至少一个操作数。这里,运算标识可以用于唯一标识处理器核可以执行的各种运算。运算标识可以包括以下至少一项:数字、字母和符号。
步骤202,目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令。
在本实施例中,目标处理器核可以在对待执行指令进行译码,得到运算标识和至少一个操作数之后,确定译码得到的运算标识是否为预设复杂运算标识。如果确定是预设复杂运算标识,则目标处理器核可以用译码得到的运算标识和至少一个操作数生成复杂运算指令。
具体地,这里,每个处理器核中可以预先存储有预设复杂运算标识集合,这样,目标处理器核可以确定译码得到的运算标识是否属于预设复杂运算标识集合,如果确定属于预设复杂运算标识集合,则可以确定译码得到的运算标识是预设复杂运算标识;如果确定不属于预设复杂运算标识集合,则可以确定译码得到的运算标识不是预设复杂运标识。
这里,复杂运算标识集合可以是由技术人员根据实际应用运算需求,对AI计算中常用运算中涉及的计算量较大的运算,将该运算的运算标识作为复杂运算标识形成的复杂运算标识集合。
在一些实施例中,预设复杂运算标识可以包括以下至少一项:求幂运算标识、开方运算标识和三角函数运算标识。
步骤203,目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列。
在本实施例中,目标处理器核可以将步骤202中所生成的复杂运算指令添加到复杂运算指令队列。这里,复杂运算指令队列中存储的是待执行的复杂运算指令。
在本实施例的一些可选的实现方式中,复杂运算指令队列可以是先进先出队列。
在本实施例的一些可选的实现方式中,复杂运算指令队列可以存储在缓存中,这里的缓存可以分别与目标处理器核和运算加速部件有线连接。这样,目标处理器核可以将所生成的复杂运算指令添加到复杂运算指令队列,并且,在后续步骤204中,运算加速部件也可以从复杂运算指令队列中选取复杂运算指令。
步骤204,运算加速部件从复杂运算指令队列中选取复杂运算指令。
在本实施例中,运算加速部件可以采用各种实现方式从复杂运算指令队列中选取复杂运算指令。例如,运算部件可以按照先进先出顺序从复杂运算指令队列中选取复杂运算指令。
步骤205,运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果。
在本实施例中,基于步骤204中所选取的复杂运算指令,运算加速部件可以以所选取的复杂运算指令中的至少一个操作数为输入参数,执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果。
在本实施例的一些可选的实现方式中,运算加速部件中可以包括至少一个运算单元。这样,步骤205可以如下进行:在运算加速部件中与所选取的复杂运算指令中的复杂运算标识对应的运算单元中,以所选取的复杂运算指令中的至少一个操作数为输入参数,执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算。
步骤206,运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列。
在本实施例中,运算加速部件将步骤205中执行复杂运算所得到的运算结果作为复杂运算结果写入复杂运算结果队列。
这里,复杂运算结果队列中存储的是运算加速部件执行复杂运算所得到的复杂运算结果。
在本实施例的一些可选的实现方式中,复杂运算结果队列可以是先进先出队列。
在本实施例的一些可选的实现方式中,复杂运算结果队列可以存储在缓存中,这里的缓存可以分别与目标处理器核和运算加速部件有线连接。这样,运算加速部件可以将复杂运算结果写入复杂运算结果队列。并且,在目标处理器核也可以从复杂运算结果队列中读取复杂运算结果。
本申请的上述实施例提供的方法通过由目标处理器核响应于确定待执行指令所要执行的运算是预设复杂运算,对待执行指令进行译码,得到复杂运算标识和至少一个操作数,用复杂运算标识和至少一个操作数生成复杂运算指令以及将所生成的复杂运算指令添加到复杂运算指令队列,再由运算加速部件从复杂运算指令队列中选取复杂运算指令,以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果,以及将得到的运算结果作为复杂运算结果写入复杂运算结果队列。从而有效利用了运算加速部件进行复杂运算,其技术效果至少包括:
第一,引入运算加速部件执行复杂运算,提高了AI芯片处理复杂运算的能力和效率。
第二,由于实践中,复杂运算的执行频率没有简单运算执行频率高,因此由至少一个处理器核共享一个运算加速部件,而不是为每个处理器核配置一个运算加速部件,降低了AI芯片中复杂运算带来的面积开销和功耗开销。
第三,由于运算加速部件中有多个运算单元,多个运算单元并行执行复杂运算操作,因此,在无数据冒险的情况下,复杂运算的时间开销可以被后续指令所掩盖。
进一步参考图3A,其示出了应用于人工智能芯片的计算方法的又一个实施例的流程300。该应用于人工智能芯片的计算方法的流程300,包括以下步骤:
步骤301,至少一个处理器核中的目标处理器核对待执行指令进行译码,得到运算标识和至少一个操作数。
在本实施例中,应用于人工智能芯片的计算方法的执行主体(例如图1所示的AI芯片)可以包括至少一个处理器核和与至少一个处理器核中各个处理器核连接的运算加速部件。运算加速部件具有独立运算能力,相对于处理器核,运算加速部件更适用于做复杂运算,这里复杂运算是指相对于简单运算而言计算量较大的运算,简单运算可以指计算量较小的运算。
步骤302,目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令。
在本实施例中,步骤301和步骤302的具体操作与图2所示的实施例中步骤201和步骤202的操作基本相同,在此不再赘述。
步骤303,目标处理器核将所生成的复杂运算指令添加到与目标处理器核对应的复杂运算指令队列。
在本实施例中,上述至少一个处理器核中每个处理器核均对应有复杂运算指令队列。每个处理器核可以通过对应的复杂运算指令队列与运算加速部件相连接。这样,目标处理器核可以将步骤402中所生成的复杂运算指令添加到与目标处理器核对应的复杂运算指令队列中。
步骤304,运算加速部件从与至少一个处理器核中各个处理器核对应的复杂运算指令队列中选取复杂运算指令。
在本实施例中,运算加速部件可以采用各种实现方式从与至少一个处理器核中各个处理器核对应的复杂运算指令队列中选取复杂运算指令。例如,运算加速部件可以在至少一个处理器核中各个处理器核对应的复杂运算指令队列中轮询,每次从一个处理器核对应的复杂运算指令队列中按照先进先出顺序选取预设数目条(例如一条)指令。
步骤305,运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果。
在本实施例中,步骤305的具体操作与图2所示的实施例中步骤205的操作基本相同,在此不再赘述。
步骤306,运算加速部件将所得到的运算结果作为复杂运算结果写入所选取的复杂运算指令所来自的复杂运算指令队列对应的处理器核对应的复杂运算结果队列。
在本实施例中,上述至少一个处理器核中每个处理器核均对应有复杂运算结果队列。每个处理器核可以通过对应的复杂运算结果队列与运算加速部件相连接。这样,运算加速部件将步骤305中所得到的运算结果作为复杂运算结果写入步骤304中所选取的复杂运算指令所来自的复杂运算指令队列对应的处理器核对应的复杂运算结果队列。
在本实施例的一些可选的实现方式中,上述应用于人工智能芯片的计算方法还可以包括以下步骤307:
步骤307,目标处理器核从与目标处理器核对应的复杂运算结果队列中选取复杂运算结果写入目标处理器核中的结果寄存器和/或人工智能芯片的存储器中。
这里,目标处理器核中可以设置有用于存储计算结果的结果寄存器。这样,在步骤306之后,目标处理器核可以从与目标处理器核对应的复杂运算结果队列中选取复杂运算结果写入目标处理器核中的结果寄存器和/或人工智能芯片的存储器中。
这里,人工智能芯片的存储器可以包括以下至少一项:静态随机存取存储器(SRAM,Static Random-Access Memory)、动态随机存取存储器(DRAM,Dynamic RandomAccess Memory)和Flash存储器(Flash Memory)。
继续参考图3B,图3B是根据本实施例的应用于人工智能芯片的计算方法的人工智能芯片的一个结构示意图。如图3B所示,人工智能芯片可以包括处理器核301’、302’、303’,复杂运算指令队列304’、305’、306’,运算加速部件307’,复杂运算结果队列308’、309’、310’和存储器311’。其中,处理器核301’、302’、303’分别与复杂运算指令队列304’、305’、306’有线连接,复杂运算指令队列304’、305’、306’分别与运算加速部件307’有线连接,运算加速部件307’与复杂运算结果队列308’、309’、310’有线连接,复杂运算结果队列308’、309’、310’分别与处理器核301’、302’、303’有线连接,处理器核301’、302’、303’分别与存储器311’有线连接。处理器核301’、302’、303’内部还可以分别设置有结果寄存器(图3B中未示出)。
这样,假设处理器核301’为目标处理器核,则处理器核301’可以在接收到待执行指令的情况下,首先对待执行指令进行译码,得到运算标识和至少一个操作数,然后确定译码得到的运算标识为三角函数运算标识,而三角函数运算标识为预设复杂运算标识,则可以用译码得到的运算标识,即三角函数运算标识,和至少一个操作数生成复杂运算指令。如图3C所示,图3C是一条复杂运算指令的示意图。接着,处理器核301’将所生成的复杂运算指令添加到与处理器核对应的复杂运算指令队列304’。而后,运算加速部件307’从复杂运算指令队列304’、305’、306’中选取复杂运算指令。之后,运算加速部件307’以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果。最后,运算加速部件307’将所得到的运算结果作为复杂运算结果写入复杂运算结果队列308’。如图3D所示,图3D是一条复杂运算结果的示意图。可选地,处理器核301’还可以从与处理器核301’对应的复杂运算结果队列304’中选取复杂运算结果写入处理器核301’中的结果寄存器和/或人工智能芯片的存储器311’中。
从图3A中可以看出,与图2对应的实施例相比,本实施例中的应用于人工智能芯片的计算方法的流程300中,为每个处理器核设置对应的复杂运算指令队列和复杂运算结果队列,由此,本实施例描述的方案提供了实现应用于人工智能芯片的计算的具体方案。
进一步参考图4A,其示出了应用于人工智能芯片的计算方法的另一个实施例的流程400。该应用于人工智能芯片的计算方法的流程400,包括以下步骤:
步骤401,至少一个处理器核中的目标处理器核对待执行指令进行译码,得到运算标识和至少一个操作数。
在本实施例中,应用于人工智能芯片的计算方法的执行主体(例如图1所示的AI芯片)可以包括至少一个处理器核和与至少一个处理器核中各个处理器核连接的运算加速部件。运算加速部件具有独立运算能力,相对于处理器核,运算加速部件更适用于做复杂运算,这里复杂运算是指相对于简单运算而言计算量较大的运算,简单运算可以指计算量较小的运算。
在本实施例中,步骤401的具体操作与图2所示的实施例中步骤201的操作基本相同,在此不再赘述。
步骤402,目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数以及目标处理器核标识生成复杂运算指令。
在本实施例中,目标处理器核可以在对待执行指令进行译码,得到运算标识和至少一个操作数之后,确定译码得到的运算标识是否为预设复杂运算标识。如果确定是预设复杂运算标识,则目标处理器核可以用译码得到的运算标识和至少一个操作数以及目标处理器核标识生成复杂运算指令。
步骤403,目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列。
步骤404,运算加速部件从复杂运算指令队列中选取复杂运算指令。
步骤405,运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果。
在本实施例中,步骤403、步骤404和步骤405的具体操作与图2所示的实施例中步骤203、步骤204和步骤205的操作基本相同,在此不再赘述。
步骤406,运算加速部件将所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入复杂运算结果队列。
在本实施例中,运算加速部件可以将步骤405中执行复杂运算所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入复杂运算结果队列。
这里,复杂运算结果队列中存储的是运算加速部件执行复杂运算所得到的复杂运算结果。
在本实施例的一些可选的实现方式中,上述应用于人工智能芯片的计算方法还可以包括以下步骤407:
步骤407,目标处理器核从复杂运算结果队列中选取处理器核标识为目标处理器核标识的复杂运算结果中的运算结果写入目标处理器核中的结果寄存器和/或人工智能芯片的存储器中。
这里,目标处理器核中可以设置有用于存储计算结果的结果寄存器。这样,在步骤406之后,目标处理器核可以从复杂运算结果队列中选取处理器核标识为目标处理器核标识的复杂运算结果中的运算结果写入目标处理器核中的结果寄存器和/或人工智能芯片的存储器中。
这里,人工智能芯片的存储器可以包括以下至少一项:静态随机存取存储器、动态随机存取存储器和Flash存储器。
继续参考图4B,图4B是根据本实施例的应用于人工智能芯片的计算方法的人工智能芯片的一个结构示意图。如图4B所示,人工智能芯片可以包括处理器核401’、402’、403’,复杂运算指令队列404’,运算加速部件405’,复杂运算结果队列406’和存储器407’。其中,处理器核401’、402’、403’分别与复杂运算指令队列404’有线连接,复杂运算指令队列404’与运算加速部件405’有线连接,运算加速部件405’与复杂运算结果队列406’有线连接,复杂运算结果队列406’与处理器核401’、402’、403’有线连接,处理器核401’、402’、403’分别与存储器407’有线连接。处理器核401’、402’、403’内部还可以分别设置有结果寄存器(图4B中未示出)。
这样,假设处理器核401’为目标处理器核,则处理器核401’可以在接收到待执行指令的情况下,首先对待执行指令进行译码,得到运算标识和至少一个操作数,然后确定译码得到的运算标识为三角函数运算标识,而三角函数运算标识为预设复杂运算标识,则可以用译码得到的运算标识,即三角函数运算标识,至少一个操作数以及处理器核401’的处理器核标识生成复杂运算指令。如图4C所示,图4C是一条复杂运算指令的示意图。接着,处理器核401’将所生成的复杂运算指令添加到复杂运算指令队列404’。而后,运算加速部件405’从复杂运算指令队列404’中选取复杂运算指令。之后,运算加速部件405’以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果。最后,运算加速部件405’将所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入复杂运算结果队列406’。如图4D所示,图4D是一条复杂运算结果的示意图。可选地,处理器核401’还可以从复杂运算结果队列中选取处理器核标识为处理器核401’的处理器核标识的复杂运算结果中的运算结果写入处理器核401’中的结果寄存器和/或人工智能芯片的存储器407’中。
从图4A中可以看出,与图3对应的实施例相比,本实施例中的应用于人工智能芯片的计算方法的流程400中,由至少一个处理器核共享一个复杂运算指令队列和复杂运算结果队列,由此,本实施例描述的方案相对于图3A对应的实施例,可以进一步降低AI芯片的面积开销和功耗开销。
下面参考图5,其示出了适于用来实现本申请实施例的电子设备的计算机***500的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括至少一个中央处理单元(CPU,CentralProcessing Unit)501,其可以根据存储在只读存储器(ROM,Read Only Memory)502中的程序或者从存储部分508加载到随机访问存储器(RAM,Random Access Memory)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501也可以通过至少一个人工智能芯片512进行数据的处理分析。CPU 501、ROM502、RAM 503以及人工智能芯片512通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,Liquid Crystal Display)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN(局域网,Local AreaNetwork)卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本申请还提供了一种计算机可读介质,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被人工智能芯片执行时,使得该人工智能芯片中:至少一个处理器核中的目标处理器核对待执行指令进行译码,得到运算标识和至少一个操作数;目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令;目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列;运算加速部件从复杂运算指令队列中选取复杂运算指令;运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果;运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (13)
1.一种应用于人工智能芯片的计算方法,其中,所述人工智能芯片包括至少一个处理器核和与所述至少一个处理器核中各个处理器核连接的运算加速部件,所述方法包括:
响应于接收到待执行指令,在所述至少一个处理器核中选取执行所述待执行指令的处理器核作为目标处理器核;
所述至少一个处理器核中的目标处理器核对待执行指令进行译码,得到运算标识和至少一个操作数;
所述目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令;
所述目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列;
所述运算加速部件从所述复杂运算指令队列中选取复杂运算指令;
所述运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,得到运算结果;
所述运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列。
2.根据权利要求1所述的方法,其中,所述复杂运算指令队列包括与所述至少一个处理器核中每个处理器核对应的复杂运算指令队列,所述复杂运算结果队列包括与所述至少一个处理器核中每个处理器核对应的复杂运算结果队列;以及
所述目标处理器核将所生成的复杂运算指令添加到复杂运算指令队列,包括:
所述目标处理器核将所生成的复杂运算指令添加到与所述目标处理器核对应的复杂运算指令队列;以及
所述运算加速部件从所述复杂运算指令队列中选取复杂运算指令,包括:
所述运算加速部件从与所述至少一个处理器核中各个处理器核对应的复杂运算指令队列中选取复杂运算指令;以及
所述运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列,包括:
所述运算加速部件将所得到的运算结果作为复杂运算结果写入所选取的复杂运算指令所来自的复杂运算指令队列对应的处理器核对应的复杂运算结果队列。
3.根据权利要求2所述的方法,其中,在所述运算加速部件将所得到的运算结果作为复杂运算结果写入所选取的复杂运算指令所来自的复杂运算指令队列对应的处理器核对应的复杂运算结果队列之后,所述方法还包括:
所述目标处理器核从与所述目标处理器核对应的复杂运算结果队列中选取复杂运算结果写入所述目标处理器核中的结果寄存器和/或所述人工智能芯片的存储器中。
4.根据权利要求1所述的方法,其中,所述目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数生成复杂运算指令,包括:
所述目标处理器核响应于确定译码得到的运算标识为预设复杂运算标识,用译码得到的运算标识和至少一个操作数以及所述目标处理器核标识生成复杂运算指令;以及
所述运算加速部件将得到的运算结果作为复杂运算结果写入复杂运算结果队列,包括:
所述运算加速部件将所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入所述复杂运算结果队列。
5.根据权利要求4所述的方法,其中,在所述运算加速部件将所得到的运算结果和所选取的复杂运算指令中的处理器核标识作为复杂运算结果写入所述复杂运算结果队列之后,所述方法还包括:
所述目标处理器核从所述复杂运算结果队列中选取处理器核标识为所述目标处理器核标识的复杂运算结果中的运算结果写入所述目标处理器核中的结果寄存器和/或所述人工智能芯片的存储器中。
6.根据权利要求1-5中任一所述的方法,其中,所述运算加速部件包括以下至少一项:专用集成电路芯片和现场可编程门阵列。
7.根据权利要求1-5中任一所述的方法,其中,所述复杂运算指令队列和所述复杂运算结果队列为先进先出队列。
8.根据权利要求1-5中任一所述的方法,其中,所述复杂运算指令队列和所述复杂运算结果队列存储在缓存中。
9.根据权利要求1-5中任一所述的方法,其中,所述运算加速部件包括至少一个运算单元;以及
所述运算加速部件以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算,包括:
在所述运算加速部件中与所选取的复杂运算指令中的复杂运算标识对应的运算单元中,以所选取的复杂运算指令中的至少一个操作数为输入参数执行所选取的复杂运算指令中的复杂运算标识所指示的复杂运算。
10.根据权利要求1-5中任一所述的方法,其中,所述预设复杂运算标识包括以下至少一项:求幂运算标识、开方运算标识和三角函数运算标识。
11.一种人工智能芯片,包括:
至少一个处理器核;
与所述至少一个处理器核中各个处理器核连接的运算加速部件;
存储装置,其上存储有至少一个程序,当所述至少一个程序被所述人工智能芯片执行时,使得所述人工智能芯片实现如权利要求1-10中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被人工智能芯片执行时实现如权利要求1-10中任一所述的方法。
13.一种电子设备,包括:处理器、存储装置和至少一个如权利要求11所述的人工智能芯片。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810906485.9A CN110825436B (zh) | 2018-08-10 | 2018-08-10 | 应用于人工智能芯片的计算方法和人工智能芯片 |
US16/506,099 US20200050481A1 (en) | 2018-08-10 | 2019-07-09 | Computing Method Applied to Artificial Intelligence Chip, and Artificial Intelligence Chip |
KR1020190083121A KR102371844B1 (ko) | 2018-08-10 | 2019-07-10 | 인공 지능 칩에 적용되는 산출 방법 및 인공 지능 칩 |
JP2019128286A JP7096213B2 (ja) | 2018-08-10 | 2019-07-10 | 人工知能チップに適用される算出方法および人工知能チップ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810906485.9A CN110825436B (zh) | 2018-08-10 | 2018-08-10 | 应用于人工智能芯片的计算方法和人工智能芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825436A CN110825436A (zh) | 2020-02-21 |
CN110825436B true CN110825436B (zh) | 2022-04-29 |
Family
ID=69405927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810906485.9A Active CN110825436B (zh) | 2018-08-10 | 2018-08-10 | 应用于人工智能芯片的计算方法和人工智能芯片 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200050481A1 (zh) |
JP (1) | JP7096213B2 (zh) |
KR (1) | KR102371844B1 (zh) |
CN (1) | CN110825436B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10981578B2 (en) * | 2018-08-02 | 2021-04-20 | GM Global Technology Operations LLC | System and method for hardware verification in an automotive vehicle |
US10708363B2 (en) * | 2018-08-10 | 2020-07-07 | Futurewei Technologies, Inc. | Artificial intelligence based hierarchical service awareness engine |
CN111782580B (zh) * | 2020-06-30 | 2024-03-01 | 北京百度网讯科技有限公司 | 复杂计算装置、方法、人工智能芯片和电子设备 |
CN112486575A (zh) * | 2020-12-07 | 2021-03-12 | 广西电网有限责任公司电力科学研究院 | 一种共享加速运算部件的电力人工智能芯片及应用方法 |
CN115454693B (zh) * | 2022-08-30 | 2023-11-14 | 昆仑芯(北京)科技有限公司 | 写后读异常的检测方法、装置、控制器、处理器及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6148395A (en) * | 1996-05-17 | 2000-11-14 | Texas Instruments Incorporated | Shared floating-point unit in a single chip multiprocessor |
CN1410885A (zh) * | 2001-09-27 | 2003-04-16 | 中国科学院计算技术研究所 | 基于操作队列复用的指令流水线***和方法 |
CN101196869A (zh) * | 2007-12-29 | 2008-06-11 | 中国科学院计算技术研究所 | 一种risc处理器及其寄存器标志位处理方法 |
CN101739237A (zh) * | 2009-12-21 | 2010-06-16 | 北京龙芯中科技术服务中心有限公司 | 微处理器功能性指令实现装置和方法 |
CN102103488A (zh) * | 2009-12-17 | 2011-06-22 | 英特尔公司 | 利用缓冲器进行高效加载处理的方法和设备 |
CN104572016A (zh) * | 2013-10-09 | 2015-04-29 | Arm有限公司 | 对应于多个微操作的复杂程序指令的译码 |
CN105302525A (zh) * | 2015-10-16 | 2016-02-03 | 上海交通大学 | 用于多层次异构结构的可重构处理器的并行处理方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04195251A (ja) * | 1990-10-03 | 1992-07-15 | Fujitsu Ltd | ニューラルネットの学習計算方法 |
WO1995016952A1 (en) * | 1993-12-15 | 1995-06-22 | Silicon Graphics Inc. | Superscalar microprocessor instruction pipeline including instruction dispatch and release control |
US6009511A (en) | 1997-06-11 | 1999-12-28 | Advanced Micro Devices, Inc. | Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers |
JP2006048661A (ja) | 2004-07-06 | 2006-02-16 | Matsushita Electric Ind Co Ltd | プロセッサとコプロセッサとの間でのデータ転送を制御する演算処理装置 |
US7725519B2 (en) * | 2005-10-05 | 2010-05-25 | Qualcom Incorporated | Floating-point processor with selectable subprecision |
JP2011138308A (ja) * | 2009-12-28 | 2011-07-14 | Sony Corp | プロセッサ、コプロセッサ、情報処理システムおよびそれらにおける制御方法 |
US8359453B2 (en) | 2010-09-13 | 2013-01-22 | International Business Machines Corporation | Real address accessing in a coprocessor executing on behalf of an unprivileged process |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US9691034B2 (en) * | 2013-05-14 | 2017-06-27 | The Trustees Of Princeton University | Machine-learning accelerator (MLA) integrated circuit for extracting features from signals and performing inference computations |
WO2015096167A1 (en) * | 2013-12-28 | 2015-07-02 | Intel Corporation | Rsa algorithm acceleration processors, methods, systems, and instructions |
US9652237B2 (en) * | 2014-12-23 | 2017-05-16 | Intel Corporation | Stateless capture of data linear addresses during precise event based sampling |
US10089500B2 (en) * | 2015-09-25 | 2018-10-02 | Intel Corporation | Secure modular exponentiation processors, methods, systems, and instructions |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
-
2018
- 2018-08-10 CN CN201810906485.9A patent/CN110825436B/zh active Active
-
2019
- 2019-07-09 US US16/506,099 patent/US20200050481A1/en active Pending
- 2019-07-10 JP JP2019128286A patent/JP7096213B2/ja active Active
- 2019-07-10 KR KR1020190083121A patent/KR102371844B1/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6148395A (en) * | 1996-05-17 | 2000-11-14 | Texas Instruments Incorporated | Shared floating-point unit in a single chip multiprocessor |
CN1410885A (zh) * | 2001-09-27 | 2003-04-16 | 中国科学院计算技术研究所 | 基于操作队列复用的指令流水线***和方法 |
CN101196869A (zh) * | 2007-12-29 | 2008-06-11 | 中国科学院计算技术研究所 | 一种risc处理器及其寄存器标志位处理方法 |
CN102103488A (zh) * | 2009-12-17 | 2011-06-22 | 英特尔公司 | 利用缓冲器进行高效加载处理的方法和设备 |
CN101739237A (zh) * | 2009-12-21 | 2010-06-16 | 北京龙芯中科技术服务中心有限公司 | 微处理器功能性指令实现装置和方法 |
CN104572016A (zh) * | 2013-10-09 | 2015-04-29 | Arm有限公司 | 对应于多个微操作的复杂程序指令的译码 |
CN105302525A (zh) * | 2015-10-16 | 2016-02-03 | 上海交通大学 | 用于多层次异构结构的可重构处理器的并行处理方法 |
Non-Patent Citations (1)
Title |
---|
***安全隔离技术研究综述;郑显义等;《计算机学报》;20161029;全文 * |
Also Published As
Publication number | Publication date |
---|---|
JP7096213B2 (ja) | 2022-07-05 |
US20200050481A1 (en) | 2020-02-13 |
KR20200018236A (ko) | 2020-02-19 |
JP2020042782A (ja) | 2020-03-19 |
CN110825436A (zh) | 2020-02-21 |
KR102371844B1 (ko) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825436B (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
EP3832499B1 (en) | Matrix computing device | |
CN111857820B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
EP3407182B1 (en) | Vector computing device | |
CN111651205B (zh) | 一种用于执行向量内积运算的装置和方法 | |
CN111651203B (zh) | 一种用于执行向量四则运算的装置和方法 | |
US20110161624A1 (en) | Floating Point Collect and Operate | |
CN110825435B (zh) | 用于处理数据的方法和装置 | |
JP2020027616A (ja) | コマンド実行方法及び装置 | |
CN111651206B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN107943756B (zh) | 一种计算方法及相关产品 | |
US11443173B2 (en) | Hardware-software co-design for accelerating deep learning inference | |
CN117217067A (zh) | 仿真装置、仿真***及其仿真方法、存储介质 | |
US11494326B1 (en) | Programmable computations in direct memory access engine | |
US11055100B2 (en) | Processor, and method for processing information applied to processor | |
CN116483584B (zh) | Gpu的任务处理方法、装置、电子设备和存储介质 | |
CN111651204A (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN112230994A (zh) | 一种计算方法及相关产品 | |
CN110825461A (zh) | 数据处理方法和装置 | |
CN115374052A (zh) | 用于可重构密码阵列的任务处理方法及装置 | |
CN115297169B (zh) | 数据处理方法、装置、电子设备及介质 | |
CN110825438B (zh) | 用于模拟人工智能芯片的数据处理的方法和装置 | |
CN117389512B (zh) | 一种算术逻辑单元alu***、电子设备和存储介质 | |
US11620132B2 (en) | Reusing an operand received from a first-in-first-out (FIFO) buffer according to an operand specifier value specified in a predefined field of an instruction | |
CN116107927A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210929 Address after: Baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing 100086 Applicant after: Kunlun core (Beijing) Technology Co.,Ltd. Address before: 2 / F, *** building, 10 Shangdi 10th Street, Haidian District, Beijing 100085 Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |