CN110825312A - 数据处理装置、人工智能芯片及电子设备 - Google Patents
数据处理装置、人工智能芯片及电子设备 Download PDFInfo
- Publication number
- CN110825312A CN110825312A CN201810909301.4A CN201810909301A CN110825312A CN 110825312 A CN110825312 A CN 110825312A CN 201810909301 A CN201810909301 A CN 201810909301A CN 110825312 A CN110825312 A CN 110825312A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- output
- write
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 191
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 22
- 230000015654 memory Effects 0.000 claims abstract description 128
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims description 15
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000012546 transfer Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 17
- 230000017105 transposition Effects 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 101150005267 Add1 gene Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30098—Register arrangements
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Bus Control (AREA)
- Advance Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请实施例公开了数据处理装置、人工智能芯片及电子设备。数据处理装置的一具体实施方式包括:输入存储器,存储待处理数据;数据搬运部件,读取并解析外部处理指令以获取读数据地址、写数据地址以及操作命令,根据读数据地址读取待处理数据,根据操作命令对待处理数据进行处理,得到处理后的输出数据及写数据地址,并发出写数据请求;多路仲裁部件,响应于接收到至少一个数据搬运部件的写数据请求,从接收到的输出数据和写数据地址中选通其中一个数据搬运部件的输出数据及对应的写数据地址输出,并发送写使能信号;输出存储器,响应于接收到写使能信号,将从多路仲裁部件接收到的输出数据写入对应的写数据地址。该实施方式提升了数据处理效率。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及数据处理装置、人工智能芯片及电子设备。
背景技术
随着人工智能技术被应用在越来越多的领域,人工智能技术所处理的问题越来越复杂,其中涉及到的张量数据的计算的体量越来越大。目前人工智能技术中,采用通用处理器如CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Unit,图形处理单元)、DSP(Digital Signal Processing,数字信号处理)芯片,或基于ASIC(Application Specific Integrated Circuit,供专门应用的集成电路)、FPGA(Field-Programming Gate Array,现场可编程门阵列)等专用硬件设备来执行深度学习中的多维度张量的数据搬运和数据转置操作。
在基于通用处理器的数据处理中,数据访存通路较复杂,涉及外部存储器的访问和存储,访问带宽受到限制。基于ASIC、FPGA等专用硬件设备的数据处理方法,通常只定制地实现了特定维度的数据搬运和数据转置操作,灵活性有待提升。
发明内容
本申请实施例提出了数据处理装置、人工智能芯片及电子设备。
第一方面,本申请实施例提供了一种数据处理装置,包括:至少一个输入存储器,输入存储器存储待处理数据;至少一个数据搬运部件,数据搬运部件读取外部处理指令,解析处理指令以获取读数据地址、写数据地址以及操作命令,并根据读数据地址从输入存储器读取待处理数据,根据操作命令对待处理数据进行处理,得到多路处理后的输出数据及对应的写数据地址,并发出写数据请求;至少一个多路仲裁部件,多路仲裁部件响应于接收到至少一个数据搬运部件的写数据请求,接收数据搬运部件的输出数据及对应的写数据地址,从接收到的输出数据和写数据地址中选通其中一个数据搬运部件的输出数据及对应的写数据地址进行输出,并发送写使能信号;以及至少一个输出存储器,输出存储器响应于接收到多路仲裁部件发出的写使能信号,从多路仲裁部件接收输出数据及对应的写数据地址,并将接收到的输出数据写入对应的写数据地址。
在一些实施例中,数据搬运部件包括:前端译码部件,前端译码部件解析读取的处理指令,并执行如下解析操作:从处理指令中提取出读数据地址、写数据地址以及操作命令,向输入存储器发出读数据请求,将输入存储器响应于接收到读数据请求而发送的待处理数据缓存至数据队列中,将提取出的操作命令缓存至命令队列中;至少一个处理部件,每个处理部件根据命令队列的操作命令对数据队列中的待处理数据进行处理,得到一路输出数据。
在一些实施例中,前端译码部件执行的解析操作还包括:确定操作命令为数据搬运命令或数据转置命令,若操作命令是数据搬运命令,前端译码部件将输入存储器发送的待处理数据广播至各处理部件;若操作命令是数据转置命令,前端译码部件将输入存储器发送的待处理数据发送至对应的至少一个处理部件,其中,各处理部件预先配置了对应的读数据地址偏移。
在一些实施例中,前端译码部件在解析处理指令之后,判断读取的处理指令为单步执行指令或者批处理指令;若处理指令为单步执行指令,执行解析操作;若处理指令为批处理指令,重复执行预设数量次解析操作,在每次执行解析操作后按照预设的地址偏移步长调整读数据地址和写数据地址。
在一些实施例中,处理部件包括:数据寄存器,数据寄存器从数据队列读取待处理数据;命令寄存器,命令寄存器从命令队列读取操作命令;状态机,状态机根据命令寄存器的命令进行状态控制;多路选择器,多路选择器根据状态机的控制从数据寄存器中选择待处理数据进行输出。
在一些实施例中,状态机还从命令寄存器接收从处理指令中解析得到的写数据地址,根据接收到的写数据地址以及处理部件预先配置的写地址偏移计算输出数据的写数据地址,并向多路仲裁部件发送写数据请求和输出数据的写数据地址。
在一些实施例中,多路仲裁部件包括至少一个仲裁单元,每个仲裁单元包括仲裁器和选择器,仲裁器对各数据搬运部件中的一个处理部件的输出数据进行仲裁,根据仲裁结果控制选择器选择其中一个处理部件的输出数据和对应的写数据地址进行输出,并向输出存储器发送写使能信号。
在一些实施例中,输出存储器接收多路仲裁部件输出的写使能信号、输出数据及对应的写数据地址,在写使能信号的控制下将输出数据写入对应的写数据地址。
在一些实施例中,输入存储器和输出存储器为片上存储器。
第二方面,本申请实施例提供了一种人工智能芯片,包括第一方面提供的数据处理装置。
第三方面,本申请实施例提供了一种电子设备,包括中央处理单元以及第二方面提供的人工智能芯片。
本申请上述实施例的数据处理装置、人工智能芯片及电子设备,包括:至少一个输入存储器,输入存储器存储待处理数据;至少一个数据搬运部件,数据搬运部件读取外部处理指令,解析处理指令以获取读数据地址、写数据地址以及操作命令,并根据读数据地址从输入存储器读取待处理数据,根据操作命令对待处理数据进行处理,得到多路处理后的输出数据及对应的写数据地址,并发出写数据请求;至少一个多路仲裁部件,多路仲裁部件响应于接收到至少一个数据搬运部件的写数据请求,接收数据搬运部件的输出数据及对应的写数据地址,从接收到的输出数据和写数据地址中选通其中一个数据搬运部件的输出数据及对应的写数据地址进行输出,并发送写使能信号;至少一个输出存储器,输出存储器响应于接收到多路仲裁部件发出的写使能信号,从多路仲裁部件接收输出数据及对应的写数据地址,并将接收到的输出数据写入对应的写数据地址。上述数据处理装置、人工智能芯片及电子设备实现了基于软件指令的驱动,具有较高的灵活性,允许在不修改硬件的前提下灵活支持不同类型和规模的张量数据搬运和转置操作,同时由于数据吞吐量取决于匹配的输入存储器和输出存储器的带宽,能够有效地拓展带宽,降低访存延迟。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是根据本申请实施例的数据处理装置的一个结构示意图;
图2是根据本申请实施例的数据处理装置中的数据搬运部件的一个结构示意图;
图3是数据搬运部件中的前端译码部件执行操作的一个流程示意图;
图4是数据搬运部件中的处理部件的结构示意图;
图5是数据搬运部件中的处理部件执行的数据处理操作的流程示意图;
图6是根据本申请实施例的数据处理装置中的多路仲裁部件的一个结构示意图;
图7是适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了根据本申请实施例的数据处理装置的一个结构100。
如图1所示,本申请实施例的数据处理装置可以包括至少一个输入存储器11、至少一个数据搬运部件12、至少一个多路仲裁部件13以及至少一个输出存储器14。输入存储器11与数据搬运部件12连接,数据搬运部件12与多路仲裁部件13连接,多路仲裁部件13与输出存储器14连接。
输入存储器11存储待处理数据,这里的待处理数据可以是深度学习计算中的张量数据,例如可以是表征输入深度学习网络的图像的二维灰度值矩阵。待处理数据可以是由数据处理装置外部的处理单元(例如CPU)或其他定制装置写入输入存储器中的。输入存储器11可以是双端口的SRAM(Static Random Access memory,静态随机存取存储器),其位宽可例如为512比特(bit)。输入存储器中的数据的位宽可以为32bit,则每个输入存储器的一行可以存储16个数据。
可选地,本申请实施例的数据处理装置100可以包括至少两个输入存储器,至少两个数据搬运部件、至少两个多路仲裁部件以及至少两个输出存储器。其中,输入存储器、数据搬运部件、多路仲裁部件、输出存储器可以一一对应。且在一些实现方式中数据处理装置中的输入存储器、数据搬运部件、多路仲裁部件以及输出存储器的数量可以根据业务需求(例如访存速度、带宽需求)进行扩展或配置。当数据处理装置包含多个输入存储器时,多个输入存储器可以统一编址,即多个输入存储器之间可以连续编址。举例来说,对于二维数组D[][],第一个输入存储器的第一行可以存储D[0][0]、D[0][1]、D[0][2]、….、D[0][15],第二个输入存储器的第一行可以存储D[0][16]、D[0][17]、D[0][18]、….、D[0][31]。
输入存储器11可以接收与其连接的数据搬运部件12的发出的读数据请求,该读数据请求可以是读取指定的地址的数据的请求,输入存储器11可以向数据搬运部件12输出对应地址的数据。
数据搬运部件12可以读取外部的处理指令,解析处理指令以获取读数据地址、写数据地址以及操作命令,根据读数据地址从输入存储器读取待处理数据,根据操作命令对待处理数据进行处理,得到多路处理后的输出数据及对应的写数据地址,并向其连接的多路仲裁部件发出写数据请求。
在这里,数据搬运部件12可以具有指令入口,即指令接收端口,通过指令入口读取外部的处理指令,该处理指令可以用于指示对待处理数据的处理操作。数据搬运部件12从处理指令中解析得出的读数据地址可以是待处理数据在输入存储器11中的地址,或者可选地,该读数据地址为待处理数据在输入存储器11中的起始地址。写数据地址可以是处理后的数据写入至输出存储器14中的地址,或者可选地,该写数据地址可以是处理后的输出数据写入至输出存储器14中的起始地址。操作命令可以用于指示对待处理数据执行的操作,例如转置操作或搬运操作。在这里,转置操作可以是将张量数据中某一维度的数据转置到张量数据的另一个维度,搬运操作可以是对张量数据的传输操作。可选地,数据搬运部件12解析处理指令后还可以获取数据写入方式,数据写入方式用于指示将输出数据写入输出存储器14的方式,例如串行写入。
数据搬运部件12可以根据解析得到的读数据地址向输入存储器发出读数据请求,即发出包含读数据地址的读数据请求。输入存储器11在接收到该读数据请求后可以将存储在读数据地址的数据作为待处理数据传输至数据搬运部件12,这样,数据搬运部件12可以根据外部处理指令获取待处理数据。
数据搬运部件12可以对待处理数据按照上述操作命令进行处理得到输出数据,并且可以根据从外部处理指令解析出的写数据地址计算出各输出数据对应的写数据地址。例如可以将外部处理指令解析出的写数据地址作为初始写地址,按照输出数据的输出时序,将初始写地址依次向后迁移得到对应的输出数据的写数据地址。可以将输出数据和对应的写数据地址发送至多路仲裁部件13。在本实施例中,数据处理装置100中的多个数据搬运部件12可以将输出数据及对应的写数据地址发送至同一个多路仲裁部件13,每个数据搬运部件12也可以将输出数据和对应的写数据地址发送至至少两个多路仲裁部件13。可选地,各数据搬运部件12将输出数据及对应的写数据地址分别发送至各个多路仲裁器13。数据搬运部件12还可以向多路仲裁器13发出写数据请求。
多路仲裁器13可以接收至少一个数据搬运部件12的写数据请求,并响应于接收到的写数据请求,接收至少一个数据搬运部件13的输出数据及对应的写数据地址。多路仲裁器13可以对接收到的输出数据进行仲裁,从接收到的至少一个数据搬运部件13的输出数据和对应的写数据地址中选通其中一个数据搬运部件13的输出数据和对应的写数据地址进行输出,还可以向输出存储器14发送写使能信号,以使输出存储器14开启存储功能。
可选地,多路仲裁器13可以具有与数据搬运部件一一对应的多个输入端口,每个输入端口接收一个数据搬运部件12的输出数据和写数据地址。多路仲裁器13可以按照预设的仲裁策略中多个输入端口中选通其中一个输入端口,将被选通的输入端口接收到的数据搬运部件的输出数据和写数据地址输出。未被选通的输入端口接收到的输出数据和写数据地址可以通过其他多路仲裁部件输出,或者在重复请求后由多路仲裁部件输出。
输出存储器14可以响应于接收到多路仲裁部件13发出的写使能信号,从多路仲裁部件13接收输出数据及对应的写数据地址,并将接收到的输出数据写入对应的写数据地址。输出存储器14也可以是双端口的SRAM,其位宽可例如为32比特(bit)。各输出存储器14可以在数据位宽方向线性编址,以二维数组D[][]为例,第一个输出存储器的可以存储D[0][0]、D[1][0]、D[2][0]、….,第二个输出存储器可以存储D[0][1]、D[1][1]、D[2][1]、….,等等。
输出存储器14在将输出数据写入对应的写数据地址之后,多路仲裁部件13可以向数据搬运部件返回写响应信号。
本申请上述实施例的数据处理装置,包括至少一个输入存储器、至少一个数据搬运部件、至少一个多路仲裁部件以及至少一个输出存储器。其中输入存储器、数据搬运部件、多路仲裁部件和输出存储器的数量可以根据业务需求扩展或配置。例如在基于深度学习的神经网络训练过程中,需要进行大数据量的张量数据搬运或转置时,可以根据张量数据的位宽计算所需要的输入存储器、输出存储器的数量,进而配置相应数据的数据搬运部件、多路仲裁部件,能够在不修改硬件设备的前提下灵活地支持不同类型和规模的张量数据的搬运和转置操作。
上述数据处理装置的数据访存通路简单,其吞吐量取决于输入存储器和输出存储器的带宽,可以采用高带宽的存储器来拓展带宽,降低访存延迟。此外,上述数据处理装置通过指令入口接收外部处理指令,解析处理指令以获取数据地址和操作命令,实现了基于软件指令的驱动,具有较高的灵活性。
可选地,为了进一步提升数据访存速度,降低延迟,上述输入存储器和输出存储器可以采用片上存储器。
继续参考图2,其示出了根据本申请的实施例的数据处理装置中的数据搬运部件的一个结构示意图。如图2所示,数据搬运部件12可以包括前端译码部件121和至少一个处理部件122。前端译码部件121可以执行对处理指令的解析操作。解析操作可以包括:从处理指令中提取出读数据地址、写数据地址以及操作命令,之后向输入存储器发出读数据请求,将输入存储器响应于接收到读数据请求而发送的待处理数据缓存到数据队列中,并将提取出的操作命令缓存至命令队列中。每个处理部件122可以根据命令队列中的命令对数据队列中的待处理数据进行处理,得到一路输出数据。
可选地,在解析处理指令后还可以提取出写数据的写入方式,该写入方式可以是并行写入输出存储器的一行,或者可以是写入输出存储器的一列。
在本实施例中,数据搬运部件中的命令队列中的操作命令和数据队列中的对应的待处理数据可以被分发至各个处理部件122进行处理。每个处理部件122可以预先配置对应的读数据地址偏移和写数据地址偏移。在这里,读数据地址偏移可以表征该处理部件读取的待处理数据相对于被读取的第一个/第一组待处理数据的地址的偏移,写数据地址偏移可以表征该处理部件写入的输出数据相对于被写入的第一个/第一组待处理数据的地址的偏移。具体地,每个处理部件122可以具有独立的编码,该编码可以用于标识处理部件所对应的待处理数据的读数据地址偏移或输出数据的写数据地址偏移。例如,每个处理部件122可以只处理输入存储器的一列数据,编码为x1的处理部件可以对应处理输入存储器中第一列的数据,编码为x2的处理部件可以对应处理输入存储器中第二列的数据,等等。这样,根据待处理数据的读数据地址,可以将待处理数据分发至具有对应编码的处理部件122进行处理。具体的处理操作可以例如为数据转置操作或数据搬运操作。命令队列中的操作命令可以是与数据队列中的待处理数据一一对应的。处理部件122可以根据其编码从数据队列中读取待处理数据,并从命令队列中获取对应的操作命令,执行该操作命令得到输出数据。
可选地,上述解析操作还可以包括:确定操作命令是数据搬运命令或数据转置命令。
在这里,数据搬运命令可以是将输入存储器的数据搬运至输出存储器的命令。从处理指令中解析得出的写数据地址可以为写入输出存储器的第一个数据的地址。则在数据搬运过程中,可以根据预设的地址偏移步长计算出待处理数据的地址偏移,例如相对于第一个数据的地址“xxxxx”偏移2,进而确定出待处理数据对应的输出数据的写数据地址为将“xxxxx”偏移2个单位后的地址。在这里,数据搬运过程中不对数据进行变换,仅将待处理数据搬运至输出存储器。输入存储器发送的待处理数据可以是若干行数据,如果操作命令是数据搬运命令,则前端译码部件可以将输入存储器发送的待处理数据广播至各处理部件122,各处理部件122接收待处理数据中各自对应的一列数据进行搬运。
数据转置命令可以是对待处理数据进行转置操作的命令。解析处理指令得到的写数据地址可以是写入存储器的第一个数据或第一列数据的地址。在数据转置过程中,可以根据预设的地址偏移步长计算出每一列待处理数据的偏移,然后根据上述写数据地址计算出每一列待处理数据的存储地址。例如当地址偏移步长为2,解析得到的写数据地址为“yyyyy”时,第一列待处理数据转置后的存储地址为由“yyyyy”偏移2个单位后起始的地址。在这里,转置操作可以是将待处理数据中的每一列转置为输出数据中的各行的操作。输入存储器发送的待处理数据可以是若干列数据,如果操作命令是数据转置命令,则前端译码部件可以将输入存储器发送的待处理数据发发送至对应的至少一个处理部件。输入存储器发送的待处理数据可以是若干列数据,每个处理部件可以根据其编码确定出对应的一列数据,则在接收到数据转置命令后,可以将若干列数据中的每一列发送至该列数据对应的处理部件进行转置和对应的写地址的计算。
在本实施例的一些可选的实现方式中,在执行解析操作之前,上述前端译码部件还可以判断读取的处理指令为单步指令或批处理指令。请参考图3,其示出了数据搬运部件中的前端译码部件执行操作的一个流程示意图。
如图3所示,在前端译码执行操作的流程300中,首先在步骤301,解析处理指令,接着,在步骤301中,可以判断处理指令为单步执行指令或者批处理指令。单步执行指令可以是输入存储器中的一组待处理数据进行处理的指令,批处理指令可以是对输入存储器中的多组待处理数据进行处理的指令。
如果步骤301的判断结果为单步执行指令,则进入单步指令模式,执行如步骤301至步骤306所示的解析操作。具体地,在步骤301中,从处理指令中提取操作命令和读数据地址、写数据地址,将操作命令加入命令队列,向输入存储器发出读数据请求。输入存储器在接收到读数据请求后可以将待处理数据发送给数据搬运部件。接着,在步骤304中,可以判断操作命令为数据搬运命令或数据转置命令,如果是数据搬运命令,则执行步骤305,将待处理数据广播至各处理部件;如果是数据转置命令,则执行步骤306,将待处理数据单播至对应的处理部件。之后,可以返回步骤301,解析接收到的下一条处理指令。
如果步骤302的判断结果为处理指令是批处理指令,则可以重复执行预设数量次步骤303、步骤304以及步骤305或步骤306所示出的解析操作。在每一次执行完毕解析操作之后,可以按照预设的地址偏移步长调整读数据地址和写数据地址。即在对一组待处理数据解析完毕之后,可以根据预设的读地址偏移步长(例如为1),计算下一组待处理数据的读数据地址,然后读取下一组待处理数据进行解析,并按照预设的写地址偏移步长(例如为2),计算出写一组待处理数据对应的输出数据的写数据地址。这样,可以重复执行多次解析操作,每次解析操作完成后可以在步骤307中判断批处理是否完成,若未完成,则在步骤308中调整读数据地址和写数据地址之后,返回执行解析操作。若批处理完成,则返回解析指令入口接收到的下一条处理指令。
通过图3可以看出,前端译码部件可以灵活地解析外部处理指令,根据外部处理指令获取待处理数据、读数据地址和写数据地址,将待处理数据广播至对应的处理部件进行处理,使得包含该前端译码部件的数据搬运部件实现了基于软件指令的灵活驱动。
继续参考图4,其示出了本申请实施例的一种可选实现方式中,数据搬运部件中的处理部件的结构示意图。
如图4所示,处理部件122可以包括数据寄存器1221,命令寄存器1222,状态机1223以及多路选择器1224。数据寄存器1221从数据队列读取待处理数据,命令寄存器1222从命令队列读取操作命令,状态机1223可以根据命令寄存器的命令进行状态控制,多路选择器1224根据状态机1223的控制从数据寄存器1221中选择待处理数据进行输出。
数据寄存器1221可以将数据队列中的待处理数据依次传输至多路选择器1224,多路选择器1224可以缓存这些待处理数据。命令寄存器1222可以将命令队列中的命令依次传输至状态机。状态机1223可以解析命令寄存器传输的操作命令,并根据当前接收到的命令对多路选择器1224进行控制。具体来说,状态机可以根据当前操作命令选通多路选择器1224中缓存的其中一组或多组待处理数据进行输出。举例来说,当状态机1223当前接收到的操作命令是对数据A进行转置的命令时,可以向多路选择器1224输出控制信号,使多路选择器1224选通对应的数据A进行输出。状态机1223还可以计算当前接收到的操作命令对应的数据的写数据地址,具体可以从命令寄存器接收从处理指令中解析得到的写数据地址,根据接收到的写数据地址以及处理部件预先配置的写地址偏移计算输出数据的写数据地址,即根据处理部件的编码确定写数据地址偏移,将对状态机接收到的写数据地址按照写数据地址偏移后得出当前命令对应的写数据地址。或者,前端译码部件可以按照处理部件的编码对应的写数据地址偏移计算出当前命令对应的输出数据的写数据地址,状态机1223可以从命令寄存器接收前端译码部件计算出的当前命令对应的输出数据的写数据地址。状态机1223还可以向多路仲裁部件发出写数据请求,并将输出数据的写地址发送至多路仲裁部件。
请参考图5,其示出了数据搬运部件中的处理部件执行的数据处理操作的一个流程示意图。
如图5所示,处理部件执行的处理操作的流程500可以包括:在步骤501中,解析命令寄存器中的命令。具体地,状态机1223可以从命令寄存器中提取出操作命令,然后,在步骤502中,可以判断操作命令是数据搬运命令或数据转置命令。如果步骤502的判断结果是数据搬运命令,则执行步骤503,根据处理部件的编码选择对应偏移的数据输出,对输出存储器发出写请求;如果步骤502的判断结果是数据转置命令,则执行步骤504,根据数据转置命令依次输出数据,对输出存储器发出写请求。之后执行步骤505,判断是否写完数据转置命令所针对的数据。若步骤505的判断结果为已执行完数据转置命令所针对的数据,则可以返回步骤501,解析命令寄存器中的下一条命令。如果步骤505的判断结果为未执行完数据转置命令所针对的数据,则可以返回步骤504,根据数据转置命令依次输出数据,并对输出存储器发出写请求。
处理部件可以预先配置对应的写数据地址偏移,具体地,处理部件可以具有独立的编码,每个处理部件可以根据编码确定其处理的数据的地址相对于从指令入口读取的外部处理指令所指示的输入数据地址的偏移。在上述步骤503中,处理部件可以根据编码选择对应偏移的数据输出,例如处理部件编码为C1,其对应的偏移为4,则处理部件可以选择相对于输入数据地址的偏移为4的地址所存储的数据进行输出,这时处理部件输出的数据为相对于输入数据地址的偏移为4的地址所存储的数据。处理部件还可以对输出存储器发出写请求。
数据转置命令所针对的待处理数据为输入存储器中的一行数据,每个处理部件根据其编码对应处理输入存储器的一列数据,则在上述步骤504中,处理部件可以依次输出待处理数据中与其编码对应的列的数据,在步骤505中,可以判断是否完成对待处理的一行数据的转置,如果没有完成,则返回步骤504,数据搬运部件内的多个处理部件中的下一个处理部件接着对下一列的数据进行输出。这时,处理部件的输出数据为将输入存储器中的数据转置后得到的数据。在处理部件输出数据时,可以向多路仲裁部件发出写请求。
请参考图6,其示出了根据本申请实施例的一些可选实现方中,数据处理装置中的多路仲裁部件的一个结构示意图。
如图6所示,多路仲裁部件13可以包括至少一个仲裁单元130。在这里,仲裁单元130的数量可选地与数据搬运装置中的处理部件的数量相同。每个仲裁单元130可以包括仲裁器131和选择器132。仲裁器131可以对各数据搬运部件中的一个处理部件的输出数据进行仲裁,根据仲裁结果控制选择器132选择其中一个处理部件的输出数据和对应的写数据地址进行输出,并向输出存储器发送写使能信号。
在本实施例中,假设数据处理装置包括N(N为正整数)个数据搬运部件,每个仲裁单元130与N个数据搬运部件中每个数据搬运部件的一个处理部件连接,即每个仲裁单元接收N个处理部件的输出数据(图6所示“写数据”)及对应的写数据地址(图6所示“写地址”)。每个数据搬运部件中的多个处理部件向对应的多个仲裁单元传输输出数据和写数据地址。具体地,仲裁器可以根据连接的N个处理部件发出的写请求进行仲裁,根据仲裁结果控制选择器从输入的N个处理部件的输出数据中选择一个处理部件的输出数据以及对应的写数据地址传输至输出存储器。
在这里,输出数据的写数据地址可以是处理部件根据其编码对应的写数据地址偏移、以及从外部处理指令中解析得出的初始的写数据地址计算得出的。作为示例,可以预先设定写数据地址的偏移步长为2,第一个数据搬运部件中的第一个处理部件的编码为D1,处理指令中解析得出的写数据地址为Add1,则对应写数据地址偏移为2,该处理部件的输出数据的写数据地址为Add1+2后得到的地址。
在本实施例中,选择器可以从各数据搬运部件的处理部件中选择一个数据搬运部件的处理部件,将选中的处理部件的输出数据和写数据地址传输至输出存储器,并向输出存储器发送写使能信号。输出存储器接收多路仲裁部件输出的写使能信号、输出数据及对应的写数据地址,在写使能信号的控制下使能,将输出数据写入对应的写数据地址。
可选地,输出存储器还可以向多路仲裁部件返回写响应信号,多路仲裁部件可以将写响应信号反馈至数据搬运部件的状态机。状态机可以根据写响应信号将对应的命令寄存器中的命令的状态置为“已完成”,还可以将“已完成”状态的命令从命令寄存器中删除。对于命令寄存器中状态不是“已完成”的命令,状态机可以按预设的命令缓存周期重复地从命令寄存器读取命令,并控制多路选择器选通对应的待处理数据进行处理。
通过利用多路仲裁单元进行仲裁输出,可以保证数据转置和搬运过程中输出数据有序地写入存储器,同时保证数据写入的速度,提升数据处理装置的处理效率。
本申请实施例还提出了一种人工智能芯片。该人工智能芯片可以包括上述实施例描述的数据处理装置。数据处理装置包括:至少一个输入存储器,至少一个数据搬运部件,至少一个多路仲裁部件,以及至少一个输出存储器。数据处理装置中的各部件结构及工作原理可以参考对图1至图5所示的各实施例和可选实现方式的描述,在此不再赘述。
本实施例中的人工智能芯片,针对深度学习训练和预测,能够满足高密度的计算和访存需求。解决了CPU、GPU等通用处理器以及专用硬件设备的数据处理方法在深度学习场景下访存速度和灵活性的问题,能够提升数据处理效率。
下面参考图7,其示出了适于用来实现本申请实施例的电子设备的计算机***700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分705加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701也可以向人工智能芯片704发送指令和数据,来进行数据的处理分析。例如在深度学习任务中,CPU可以将加载到RAM 703中的待处理数据以及通过通信部分接收到的外部处理指令传输至人工智能芯片704来执行数据处理。CPU 701、ROM 702、RAM 703以及人工智能芯片704通过总线706彼此相连。输入/输出(I/O)端口707也连接至总线704。
特别地,根据本申请公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请公开的实施例可以包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序。该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可选地可以通过通信部分708从网络上被下载和安装,也可以被加载在人工智能芯片中。在该计算机程序被人工智能芯片704执行时,执行本申请的数据处理装置中输入存储器、数据搬运部件、处理部件以及输出存储器的上述功能。
可以理解的是,附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (11)
1.一种数据处理装置,包括:
至少一个输入存储器,所述输入存储器存储待处理数据;
至少一个数据搬运部件,所述数据搬运部件读取外部处理指令,解析所述处理指令以获取读数据地址、写数据地址以及操作命令,并根据所述读数据地址从所述输入存储器读取待处理数据,根据所述操作命令对所述待处理数据进行处理,得到多路处理后的输出数据及对应的写数据地址,并发出写数据请求;
至少一个多路仲裁部件,所述多路仲裁部件响应于接收到至少一个数据搬运部件的写数据请求,接收所述数据搬运部件的输出数据及对应的写数据地址,从接收到的输出数据和写数据地址中选通其中一个数据搬运部件的输出数据及对应的写数据地址进行输出,并发送写使能信号;
至少一个输出存储器,所述输出存储器响应于接收到所述多路仲裁部件发出的写使能信号,从所述多路仲裁部件接收输出数据及对应的写数据地址,并将接收到的所述输出数据写入对应的写数据地址。
2.根据权利要求1所述的装置,其中,所述数据搬运部件包括:
前端译码部件,所述前端译码部件解析读取的处理指令,并执行如下解析操作:从所述处理指令中提取出读数据地址、写数据地址以及操作命令,向所述输入存储器发出读数据请求,将所述输入存储器响应于接收到所述读数据请求而发送的待处理数据缓存至数据队列中,将提取出的所述操作命令缓存至命令队列中;
至少一个处理部件,每个所述处理部件根据所述命令队列的操作命令对所述数据队列中的待处理数据进行处理,得到一路输出数据。
3.根据权利要求2所述的装置,其中,所述前端译码部件执行的解析操作还包括:确定所述操作命令为数据搬运命令或数据转置命令,若所述操作命令是数据搬运命令,所述前端译码部件将所述输入存储器发送的待处理数据广播至各处理部件;若所述操作命令是数据转置命令,所述前端译码部件将所述输入存储器发送的待处理数据发送至对应的至少一个处理部件,其中,各处理部件预先配置了对应的读数据地址偏移。
4.根据权利要求3所述的装置,其中,所述前端译码部件在解析所述处理指令之后,判断读取的所述处理指令为单步执行指令或者批处理指令;
若所述处理指令为单步执行指令,执行所述解析操作;
若所述处理指令为批处理指令,重复执行预设数量次所述解析操作,在每次执行解析操作后按照预设的地址偏移步长调整读数据地址和写数据地址。
5.根据权利要求2所述的装置,其中,所述处理部件包括:
数据寄存器,所述数据寄存器从所述数据队列读取待处理数据;
命令寄存器,所述命令寄存器从所述命令队列读取操作命令;
状态机,所述状态机根据所述命令寄存器的命令进行状态控制;
多路选择器,所述多路选择器根据所述状态机的控制从所述数据寄存器中选择待处理数据进行输出。
6.根据权利要求5所述的装置,其中,所述状态机还从所述命令寄存器接收从所述处理指令中解析得到的写数据地址,根据接收到的写数据地址以及所述处理部件预先配置的写地址偏移计算输出数据的写数据地址,并向所述多路仲裁部件发送写数据请求和所述输出数据的写数据地址。
7.根据权利要求5所述的装置,其中,所述多路仲裁部件包括至少一个仲裁单元,每个仲裁单元包括仲裁器和选择器,所述仲裁器对各数据搬运部件中的一个处理部件的输出数据进行仲裁,根据仲裁结果控制所述选择器选择其中一个处理部件的输出数据和对应的写数据地址进行输出,并向所述输出存储器发送写使能信号。
8.根据权利要求7所述的装置,其中,所述输出存储器接收所述多路仲裁部件输出的写使能信号、输出数据及对应的写数据地址,在所述写使能信号的控制下将所述输出数据写入对应的写数据地址。
9.根据权利要求1-8任一项所述的装置,其中,所述输入存储器和所述输出存储器为片上存储器。
10.一种人工智能芯片,包括如权利要求1-9任一项所述的数据处理装置。
11.一种电子设备,包括中央处理单元以及如权利要求10所述的人工智能芯片。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810909301.4A CN110825312B (zh) | 2018-08-10 | 2018-08-10 | 数据处理装置、人工智能芯片及电子设备 |
JP2019125660A JP6833916B2 (ja) | 2018-08-10 | 2019-07-05 | データ処理装置、人工知能チップ及び電子機器 |
US16/506,151 US11023391B2 (en) | 2018-08-10 | 2019-07-09 | Apparatus for data processing, artificial intelligence chip and electronic device |
KR1020190082973A KR102247369B1 (ko) | 2018-08-10 | 2019-07-10 | 데이터 처리 장치, 인공 지능 칩 및 전자 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810909301.4A CN110825312B (zh) | 2018-08-10 | 2018-08-10 | 数据处理装置、人工智能芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825312A true CN110825312A (zh) | 2020-02-21 |
CN110825312B CN110825312B (zh) | 2023-06-23 |
Family
ID=69405954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810909301.4A Active CN110825312B (zh) | 2018-08-10 | 2018-08-10 | 数据处理装置、人工智能芯片及电子设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11023391B2 (zh) |
JP (1) | JP6833916B2 (zh) |
KR (1) | KR102247369B1 (zh) |
CN (1) | CN110825312B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782580A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 复杂计算装置、方法、人工智能芯片和电子设备 |
CN113138802A (zh) * | 2021-04-29 | 2021-07-20 | 上海阵量智能科技有限公司 | 命令分发装置、方法、芯片、计算机设备及存储介质 |
CN116775542A (zh) * | 2023-08-22 | 2023-09-19 | 成都芯脉微电子有限责任公司 | 一种ai芯片、***及数据处理方法 |
CN116804915A (zh) * | 2023-08-28 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
CN116860185A (zh) * | 2023-09-05 | 2023-10-10 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、***、方法、设备、芯片和介质 |
CN118093021A (zh) * | 2024-04-26 | 2024-05-28 | 北京壁仞科技开发有限公司 | 执行转置计算的方法、计算核、装置、介质和程序产品 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3951666A4 (en) | 2019-04-04 | 2022-12-21 | Cambricon Technologies Corporation Limited | DATA PROCESSING DEVICE AND ASSOCIATED PRODUCT |
US20220171645A1 (en) * | 2020-11-30 | 2022-06-02 | Red Hat, Inc. | Efficient out of order request completion |
CN115902595B (zh) * | 2023-02-20 | 2023-07-14 | 之江实验室 | 一种芯片测试***以及芯片测试方法 |
CN117435252B (zh) * | 2023-12-19 | 2024-03-15 | 苏州元脑智能科技有限公司 | 一种互斥锁的硬件实现装置、***及应用方法 |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4873626A (en) * | 1986-12-17 | 1989-10-10 | Massachusetts Institute Of Technology | Parallel processing system with processor array having memory system included in system memory |
US4967398A (en) * | 1989-08-09 | 1990-10-30 | Ford Motor Company | Read/write random access memory with data prefetch |
JP2001022581A (ja) * | 1999-07-06 | 2001-01-26 | Canon Inc | データ処理装置及びコンピュータ読み取り可能な記憶媒体 |
US6182192B1 (en) * | 1999-01-11 | 2001-01-30 | Stmicroelectronics Limited | Memory interface device and method for accessing memories |
US6421751B1 (en) * | 1998-11-23 | 2002-07-16 | Advanced Micro Devices, Inc. | Detecting a no-tags-free condition in a computer system having multiple outstanding transactions |
JP2003150403A (ja) * | 2001-11-06 | 2003-05-23 | Arc Internatl (Uk) Ltd | データプロセッサの観測方法及び装置 |
CN1474296A (zh) * | 2003-04-11 | 2004-02-11 | 大唐移动通信设备有限公司 | 一种基于共享存储器的多处理器间数据交互方法及装置 |
JP2004220432A (ja) * | 2003-01-16 | 2004-08-05 | Canon Inc | データ処理装置 |
JP2006202271A (ja) * | 2004-12-22 | 2006-08-03 | Nec Electronics Corp | ストリームプロセッサ及び情報処理装置 |
US20070016732A1 (en) * | 2005-05-12 | 2007-01-18 | Sony Computer Entertainment Inc. | Data transfer arbitration apparatus and data transfer arbitration method |
CN101145140A (zh) * | 2007-07-11 | 2008-03-19 | 南京大学 | 基于片上多处理器***的动态自适应总线仲裁器 |
JP2010218170A (ja) * | 2009-03-16 | 2010-09-30 | Ricoh Co Ltd | データ転送装置、情報処理装置、アービトレーション方法及び画像形成システム |
US20110145456A1 (en) * | 2009-12-14 | 2011-06-16 | Fuji Xerox Co., Ltd. | Arbitration device, arbitration method, image processing device, and image forming system |
US20110179200A1 (en) * | 2010-01-18 | 2011-07-21 | Xelerated Ab | Access buffer |
JP2011192305A (ja) * | 2011-06-01 | 2011-09-29 | Renesas Electronics Corp | 半導体信号処理装置 |
US20140156929A1 (en) * | 2012-12-04 | 2014-06-05 | Ecole Polytechnique Federale De Lausanne (Epfl) | Network-on-chip using request and reply trees for low-latency processor-memory communication |
US20140223077A1 (en) * | 2013-02-07 | 2014-08-07 | Kabushiki Kaisha Toshiba | Memory system |
CN104919439A (zh) * | 2013-01-17 | 2015-09-16 | 高通股份有限公司 | 用于支持基于处理器的***中的异构存储器存取请求的异构存储器***以及相关方法和计算机可读媒体 |
CN105681404A (zh) * | 2016-01-04 | 2016-06-15 | 北京百度网讯科技有限公司 | 用于分布式缓存***的元数据节点管理方法和装置 |
US20170031619A1 (en) * | 2015-07-28 | 2017-02-02 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US20170278559A1 (en) * | 2016-03-28 | 2017-09-28 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US20170308383A1 (en) * | 2014-09-25 | 2017-10-26 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
CN107851063A (zh) * | 2015-07-28 | 2018-03-27 | 华为技术有限公司 | 智能编码存储器***的动态编码算法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4752068A (en) * | 1985-11-07 | 1988-06-21 | Namco Ltd. | Video game machine for business use |
JPH0390942A (ja) * | 1989-09-01 | 1991-04-16 | Oki Electric Ind Co Ltd | 主記憶装置の制御方式 |
US5282274A (en) * | 1990-05-24 | 1994-01-25 | International Business Machines Corporation | Translation of multiple virtual pages upon a TLB miss |
US5200564A (en) * | 1990-06-29 | 1993-04-06 | Casio Computer Co., Ltd. | Digital information processing apparatus with multiple CPUs |
US5802560A (en) * | 1995-08-30 | 1998-09-01 | Ramton International Corporation | Multibus cached memory system |
JPH10143431A (ja) * | 1996-10-29 | 1998-05-29 | Texas Instr Inc <Ti> | マイクロプロセッサおよびコンピュータシステムにおけるデータのキャッシング方法 |
US5884055A (en) * | 1996-11-27 | 1999-03-16 | Emc Corporation | Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource |
US6052738A (en) * | 1997-06-30 | 2000-04-18 | Sun Microsystems, Inc. | Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory |
US20030221089A1 (en) * | 2002-05-23 | 2003-11-27 | Sun Microsystems, Inc. | Microprocessor data manipulation matrix module |
WO2004079583A1 (ja) * | 2003-03-05 | 2004-09-16 | Fujitsu Limited | データ転送制御装置およびdmaデータ転送制御方法 |
US20050033875A1 (en) * | 2003-06-30 | 2005-02-10 | Cheung Frank Nam Go | System and method for selectively affecting data flow to or from a memory device |
US9158672B1 (en) * | 2011-10-17 | 2015-10-13 | Rambus Inc. | Dynamic deterministic address translation for shuffled memory spaces |
JP2018022339A (ja) * | 2016-08-03 | 2018-02-08 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10929296B2 (en) * | 2017-10-12 | 2021-02-23 | Texas Instruments Incorporated | Zero latency prefetching in caches |
-
2018
- 2018-08-10 CN CN201810909301.4A patent/CN110825312B/zh active Active
-
2019
- 2019-07-05 JP JP2019125660A patent/JP6833916B2/ja active Active
- 2019-07-09 US US16/506,151 patent/US11023391B2/en active Active
- 2019-07-10 KR KR1020190082973A patent/KR102247369B1/ko active IP Right Grant
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4873626A (en) * | 1986-12-17 | 1989-10-10 | Massachusetts Institute Of Technology | Parallel processing system with processor array having memory system included in system memory |
US4967398A (en) * | 1989-08-09 | 1990-10-30 | Ford Motor Company | Read/write random access memory with data prefetch |
US6421751B1 (en) * | 1998-11-23 | 2002-07-16 | Advanced Micro Devices, Inc. | Detecting a no-tags-free condition in a computer system having multiple outstanding transactions |
US6182192B1 (en) * | 1999-01-11 | 2001-01-30 | Stmicroelectronics Limited | Memory interface device and method for accessing memories |
JP2001022581A (ja) * | 1999-07-06 | 2001-01-26 | Canon Inc | データ処理装置及びコンピュータ読み取り可能な記憶媒体 |
JP2003150403A (ja) * | 2001-11-06 | 2003-05-23 | Arc Internatl (Uk) Ltd | データプロセッサの観測方法及び装置 |
JP2004220432A (ja) * | 2003-01-16 | 2004-08-05 | Canon Inc | データ処理装置 |
CN1474296A (zh) * | 2003-04-11 | 2004-02-11 | 大唐移动通信设备有限公司 | 一种基于共享存储器的多处理器间数据交互方法及装置 |
JP2006202271A (ja) * | 2004-12-22 | 2006-08-03 | Nec Electronics Corp | ストリームプロセッサ及び情報処理装置 |
US20070016732A1 (en) * | 2005-05-12 | 2007-01-18 | Sony Computer Entertainment Inc. | Data transfer arbitration apparatus and data transfer arbitration method |
CN101145140A (zh) * | 2007-07-11 | 2008-03-19 | 南京大学 | 基于片上多处理器***的动态自适应总线仲裁器 |
JP2010218170A (ja) * | 2009-03-16 | 2010-09-30 | Ricoh Co Ltd | データ転送装置、情報処理装置、アービトレーション方法及び画像形成システム |
US20110145456A1 (en) * | 2009-12-14 | 2011-06-16 | Fuji Xerox Co., Ltd. | Arbitration device, arbitration method, image processing device, and image forming system |
US20110179200A1 (en) * | 2010-01-18 | 2011-07-21 | Xelerated Ab | Access buffer |
JP2011192305A (ja) * | 2011-06-01 | 2011-09-29 | Renesas Electronics Corp | 半導体信号処理装置 |
US20140156929A1 (en) * | 2012-12-04 | 2014-06-05 | Ecole Polytechnique Federale De Lausanne (Epfl) | Network-on-chip using request and reply trees for low-latency processor-memory communication |
CN104919439A (zh) * | 2013-01-17 | 2015-09-16 | 高通股份有限公司 | 用于支持基于处理器的***中的异构存储器存取请求的异构存储器***以及相关方法和计算机可读媒体 |
US20140223077A1 (en) * | 2013-02-07 | 2014-08-07 | Kabushiki Kaisha Toshiba | Memory system |
US20170308383A1 (en) * | 2014-09-25 | 2017-10-26 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
US20170031619A1 (en) * | 2015-07-28 | 2017-02-02 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
CN107851063A (zh) * | 2015-07-28 | 2018-03-27 | 华为技术有限公司 | 智能编码存储器***的动态编码算法 |
CN105681404A (zh) * | 2016-01-04 | 2016-06-15 | 北京百度网讯科技有限公司 | 用于分布式缓存***的元数据节点管理方法和装置 |
US20170278559A1 (en) * | 2016-03-28 | 2017-09-28 | Micron Technology, Inc. | Apparatuses and methods for data movement |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782580A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 复杂计算装置、方法、人工智能芯片和电子设备 |
CN111782580B (zh) * | 2020-06-30 | 2024-03-01 | 北京百度网讯科技有限公司 | 复杂计算装置、方法、人工智能芯片和电子设备 |
CN113138802A (zh) * | 2021-04-29 | 2021-07-20 | 上海阵量智能科技有限公司 | 命令分发装置、方法、芯片、计算机设备及存储介质 |
CN113138802B (zh) * | 2021-04-29 | 2024-03-05 | 上海阵量智能科技有限公司 | 命令分发装置、方法、芯片、计算机设备及存储介质 |
CN116775542A (zh) * | 2023-08-22 | 2023-09-19 | 成都芯脉微电子有限责任公司 | 一种ai芯片、***及数据处理方法 |
CN116775542B (zh) * | 2023-08-22 | 2023-11-03 | 成都芯脉微电子有限责任公司 | 一种ai芯片、***及数据处理方法 |
CN116804915A (zh) * | 2023-08-28 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
CN116804915B (zh) * | 2023-08-28 | 2023-12-15 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
CN116860185A (zh) * | 2023-09-05 | 2023-10-10 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、***、方法、设备、芯片和介质 |
CN116860185B (zh) * | 2023-09-05 | 2024-06-07 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、***、方法、设备、芯片和介质 |
CN118093021A (zh) * | 2024-04-26 | 2024-05-28 | 北京壁仞科技开发有限公司 | 执行转置计算的方法、计算核、装置、介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
KR20200018235A (ko) | 2020-02-19 |
CN110825312B (zh) | 2023-06-23 |
US11023391B2 (en) | 2021-06-01 |
JP6833916B2 (ja) | 2021-02-24 |
KR102247369B1 (ko) | 2021-04-30 |
JP2020027612A (ja) | 2020-02-20 |
US20200050557A1 (en) | 2020-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825312B (zh) | 数据处理装置、人工智能芯片及电子设备 | |
EP3460676B1 (en) | Method and apparatus for loading a matrix into an accelerator | |
CN112005214B (zh) | 具有包括多端口存储器的向量寄存器文件的矩阵向量乘法器 | |
US20210065005A1 (en) | Systems and methods for providing vector-wise sparsity in a neural network | |
US20150067273A1 (en) | Computation hardware with high-bandwidth memory interface | |
CN110796235B (zh) | 卷积神经网络Valid卷积的向量化实现方法 | |
US20110264723A1 (en) | System and method for successive matrix transposes | |
CN108388527B (zh) | 直接存储器存取引擎及其方法 | |
CN110807170B (zh) | 多样本多通道卷积神经网络Same卷积向量化实现方法 | |
CN111400212B (zh) | 一种基于远程直接数据存取的传输方法、设备 | |
US11580397B2 (en) | Tensor dropout using a mask having a different ordering than the tensor | |
CN114138231B (zh) | 执行矩阵乘法运算的方法、电路及soc | |
US11587600B2 (en) | Address/command chip controlled data chip address sequencing for a distributed memory buffer system | |
WO2020052265A1 (en) | System and method for cascaded dynamic max pooling in neural networks | |
US10747442B2 (en) | Host controlled data chip address sequencing for a distributed memory buffer system | |
US11328209B1 (en) | Dual cycle tensor dropout in a neural network | |
CN111814675B (zh) | 基于fpga支持动态分辨率的卷积神经网络特征图组装*** | |
KR20210108487A (ko) | 저장 디바이스 동작 오케스트레이션 | |
CN112149049A (zh) | 用于变换矩阵的装置和方法、数据处理*** | |
RU2795887C2 (ru) | Матрично-векторный умножитель с набором регистров для хранения векторов, содержащим многопортовую память | |
US11972263B2 (en) | Cooperative instruction prefetch on multicore system | |
CN109445852B (zh) | 一种在多核处理器中提升内存访问效率的方法及*** | |
CN110825665B (zh) | 数据获取单元和应用于控制器的数据获取方法 | |
RU2134448C1 (ru) | Однородная вычислительная среда с двуслойной программируемой структурой | |
CN113360253A (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: 20210930 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 |