CN109726806A - 信息处理方法及终端设备 - Google Patents

信息处理方法及终端设备 Download PDF

Info

Publication number
CN109726806A
CN109726806A CN201711036374.9A CN201711036374A CN109726806A CN 109726806 A CN109726806 A CN 109726806A CN 201711036374 A CN201711036374 A CN 201711036374A CN 109726806 A CN109726806 A CN 109726806A
Authority
CN
China
Prior art keywords
data
instruction
information
unit
matrix
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
CN201711036374.9A
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 CN201711212123.1A priority Critical patent/CN107993206A/zh
Priority to CN201711212991.XA priority patent/CN107992486A/zh
Priority to CN201810849483.0A priority patent/CN109062606B/zh
Priority to CN201810849497.2A priority patent/CN109086074B/zh
Priority to CN201810849484.5A priority patent/CN109117183B/zh
Priority to CN201711212125.0A priority patent/CN107832804A/zh
Priority to CN201810799988.0A priority patent/CN109003132B/zh
Priority to CN201810849485.XA priority patent/CN108874444A/zh
Priority to CN201711212994.3A priority patent/CN107832844A/zh
Priority to CN201810801238.2A priority patent/CN109003603A/zh
Priority to CN201810799954.1A priority patent/CN108986022A/zh
Priority to CN201711036374.9A priority patent/CN109726806A/zh
Priority to CN201811440484.6A priority patent/CN109522254B/zh
Priority to CN201711212995.8A priority patent/CN107832845A/zh
Priority to CN201810849491.5A priority patent/CN109063831A/zh
Priority to CN201810849486.4A priority patent/CN109062539A/zh
Priority to CN201810800665.9A priority patent/CN108898554A/zh
Priority to CN201711212656.XA priority patent/CN107832843B/zh
Priority to CN201810800001.2A priority patent/CN108875926A/zh
Priority to CN201810849496.8A priority patent/CN109062607B/zh
Priority to CN201810849509.1A priority patent/CN109117184A/zh
Priority to CN201711244020.3A priority patent/CN109725936B/zh
Priority to CN201711212660.6A priority patent/CN107895191B/zh
Priority to CN201810799987.6A priority patent/CN109117947A/zh
Priority to CN201711211933.5A priority patent/CN107844832A/zh
Priority to CN201810800664.4A priority patent/CN109064384A/zh
Priority to CN201810849492.XA priority patent/CN108874445A/zh
Priority to CN201810849480.7A priority patent/CN108984211B/zh
Priority to CN201811440571.1A priority patent/CN109542515B/zh
Priority to CN201810849498.7A priority patent/CN108958801B/zh
Priority to CN201810801236.3A priority patent/CN109117948B/zh
Priority to CN201810849499.1A priority patent/CN109086075B/zh
Priority to CN201811436410.5A priority patent/CN109542514B/zh
Priority to CN201810801239.7A priority patent/CN109034382A/zh
Priority to CN201810849488.3A priority patent/CN109034383B/zh
Priority to CN201810849479.4A priority patent/CN109063830A/zh
Priority to CN201711212122.7A priority patent/CN107833176A/zh
Priority to CN202010336354.9A priority patent/CN111310910B/zh
Priority to CN201910067288.7A priority patent/CN109523020A/zh
Priority to CN201910070501.XA priority patent/CN110084361B/zh
Priority to CN201911062123.7A priority patent/CN110610236B/zh
Priority to CN202010189354.0A priority patent/CN111178521A/zh
Priority to PCT/CN2018/105463 priority patent/WO2019085655A1/zh
Priority to CN201911058839.XA priority patent/CN110689125A/zh
Priority to US16/760,235 priority patent/US20210182077A1/en
Priority to CN202010309559.8A priority patent/CN111291880B/zh
Priority to CN201880002336.8A priority patent/CN109997154A/zh
Priority to CN202010190142.4A priority patent/CN111160548B/zh
Priority to CN201911058910.4A priority patent/CN110689126B/zh
Priority to CN202010190143.9A priority patent/CN111160549A/zh
Priority to EP18873474.3A priority patent/EP3709224A4/en
Publication of CN109726806A publication Critical patent/CN109726806A/zh
Priority to US17/119,234 priority patent/US20210158484A1/en
Priority to US17/119,029 priority patent/US12050887B2/en
Priority to US17/119,309 priority patent/US11762631B2/en
Priority to US17/119,148 priority patent/US11922132B2/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/263Language identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/58Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0282Rating or review of business operators or products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4046Scaling of whole images or parts thereof, e.g. expanding or contracting using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4053Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/42Data-driven translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/07Target detection
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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 Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Accounting & Taxation (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • General Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Neurology (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Entrepreneurship & Innovation (AREA)

Abstract

本披露实施例披露了一种信息处理方法及终端设备,其中方法包括:获取第一信息,所述第一信息为终端设备待处理的信息;在计算装置中调用运算指令对所述第一信息进行计算,得到第二信息;输出所述第二信息。采用本披露实施例,能够利用终端设备的计算装置调用运算指令对第一信息进行处理,以输出用户想要的目标的第二信息,提高信息处理效率。

Description

信息处理方法及终端设备
技术领域
本披露涉及信息处理技术领域,尤其涉及信息处理方法及终端设备。
背景技术
随着信息技术的不断发展和人们日益增长的需求,人们对信息的及时性要 求也越来越高了。目前,终端设备对信息的获取均是基于通用处理器获得的, 例如在通用处理器运行设定应用程序以获知物体当前的位置,或者在通用处理 器上运行设定应用程序获知用户当前场景(如室内或室外)等等。但是,这种 基于通用处理器运行软件程序来获知信息的方式,受限于通用处理器的运行速 率,特别是在通用处理器负荷较大的情况下,信息获取效率较低、时延较长。
披露内容
本披露实施例提供信息处理方法及终端设备,可利用终端设备中的计算装 置智能地对第一信息进行处理,以输出用户想要的目标信息,从而提升了信息 处理效率。
第一方面,本披露实施例提供了一种信息处理方法,应用于设置有计算装 置的终端设备中,所述计算装置中存储有包括至少一项运算指令在内的指令集, 所述方法包括:
获取第一信息,所述第一信息为终端设备待处理的信息;
在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二 信息;
输出所述第二信息。
在一些可能的实施例中,所述获取第一信息包括:对获取的原始信息进行 预处理,从而获得所述第一信息,所述第一信息为具备预设格式的信息,所述 预处理包括以下中的至少一项:数据去重处理、数据编码处理、数据转换处理、 归一化处理。
在一些可能的实施例中,所述运算指令包括以下中的至少一项:矩阵乘向 量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、 矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
在一些可能的实施例中,当所述第一信息为语音信息时,在所述计算装置 中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用语音识别算法,对所述语音信息进行语音识别,从而获 得第二信息;
其中,所述第二信息为文本信息,所述语音识别算法包括用于语音识别的 至少一个运算指令。
在一些可能的实施例中,当所述第一信息为影像信息时,在所述计算装置 中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用影像风格转换算法,对所述影像信息的风格进行转换处 理,从而获得第二信息;
其中,所述第二信息与所述第一信息的风格不同,所述影像风格转换算法 包括用于影像画风或风格转换的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为影像信息,所述影像信息包括 至少一个待识别的物体时,在所述计算装置中调用运算指令对所述第一信息进 行处理,从而获得第二信息包括:
在计算装置中调用物体检测算法,对所述影像信息进行物体检测,从而获 得第二信息;其中,所述第二信息至少包括物体位置,所述物体检测算法包括 用于物体检测的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为待翻译的语言信息时,在所述 计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用语言翻译算法,对所述语言信息进行翻译处理,从而获 得第二信息;
其中,所述第一信息和第二信息不同,所述语言翻译算法包括用于语言翻 译的至少一个运算指令。
在一些可能的实施例中,当所述第一信息为一句对话内容时,在所述计算 装置中调用运算指令对所述第一信息进行处理,获得第二信息包括:对该句对 话内容的回应,该回应要求与第一信息的内容逻辑上相关联,两条信息可以组 成逻辑通顺的对话。该实施例中,多条第一信息与第二信息的时间序列上的组 合为一段有意义的聊天对话,即聊天机器人。
在一些可能的实施例中,当所述第一信息为某一用户的历史记录,包括商 品浏览记录,个人基本信息(年龄、性别等),在所述计算装置中调用运算指令 对所述第一信息进行处理,获得第二信息包括:推荐给该用户的商品/服务的信 息,例如衣服、电影、服务等。
本披露提供一种互连电路的数据处理装置,为所述互联电路中用于将一个 或多个事务数据源连接到一个或多个事务数据目的地的互连节点,所述数据处 理装置包括:至少一个输入端和至少一个输出端,每个所述输入端包含多个输 入端口、输出端口、至少两个复用器、和至少一个缓冲存储器;连接于所述复 用器的缓冲存储分配电路,用于控制所述复用器为输入的事务数据根据所述缓 冲存储器的当前状态分配临时存储位置;连接于所述缓冲存储器的路由选择电 路,用于为缓冲队列的事务数据选择输出端;仲裁电路,用于裁决出具有优先 传输权的所述缓冲队列,并使竞争同一输出端的多个事务数据传输按照预设的 仲裁策略依次获得输出通路占用权;多路选择器电路,连接所述输出端口和所述输出端,用于中转所述互连电路中的数据传输。
本披露的互连电路的数据处理装置,其中,
所述缓冲存储器,包括多个存储位置,每个存储位置与每个所述输入端口 相关联,使事务数据在到达所述输入端口且转发到相应的输出端口前,临时存 放在相应的存储位置。
本披露的互连电路的数据处理装置,其中,
所述路由选择电路,根据所述存储位置中待发送事务数据的地址信息,判 断与目的源相关联的输出端。
本披露的互连电路的数据处理装置,其中,
所述存储位置包含至少一个存储部分,由所述缓冲存储分配电路分配事务 数据的所述存储位置。
本披露的互连电路的数据处理装置,其中,
所述多路选择器电路,将所述存储部分与输出端相连,为获得输出通路占 用权的事务数据建立传输通路。
本披露的互连电路的数据处理装置,其中,
所述仲裁电路还包括优先权寄存器,所述优先权寄存器存储有获得所述优 先传输权的缓冲队列标号;
所述仲裁电路检查所述优先权寄存器,判决所述缓冲队列是否获得所述输 出通路占用权。
本披露的互连电路的数据处理装置,其中,
所述仲裁电路允许所述事务数据获得所述输出通路占用权后,查询所述输 出端是否正在被占用,并在所述输出端空闲时让获得所述通路占用权的事务数 据完成传输。
另外,本披露还提供一种互连电路的数据处理方法,使用上述的互连电路 的数据处理装置进行数据处理,所述数据处理方法包括如下步骤:
步骤1,多路选择器电路接收事务数据;
步骤2,缓冲存储分配电路为所述事务数据分配临时存储位置;
步骤3,路由选择电路为所述事务数据选择输出端;
步骤4,仲裁电路根据所述事务数据的传送请求裁决出具有优先传输权的缓 冲队列,并使竞争同一输出端口的多个事务数据传输按照预设的仲裁策略依次 获得输出通路占用权;
步骤5,多路选择器电路为获得数据通路的占用权的事务数据分配传输通路, 并将事务数据传入所述互联电路的下游节点。
本披露的互连电路的数据处理方法,其中,所述步骤4进一步包括如下步 骤,
步骤41,仲裁电路按照轮询的方式在各周期分别使不同的缓冲队列获得所 述优先传输权,或者,在一缓冲队列全部传输完成后再让另一缓冲队列获得所 述优先传输权。
本披露的互连电路的数据处理方法,其中,所述步骤4还包括:
步骤42,仲裁电路判断获得所述优先传输权的事务数据所请求的输出端是 否被占用,若是,则等待下一个周期的仲裁处理,若否,则仲裁电路根据所述 事务数据的传输请求,检查是否存在多个事务数据请求争用同一输出端,若是, 则仲裁电路使竞争同一传输通路的多个事务数据依次获得所述出通路占用权, 若否,则执行所述步骤5。
本披露的效果如下:
(1)在每个输入端设置多个缓冲区,可根据不同的输入数据灵活地分配存 储位置,每个缓冲区可灵活地配置为与不同输出端口相关联,由存储分配电路 控制;
(2)不用为预测数据预留空间,而是动态分配缓冲存储,节省了存储和功 耗开销;
(3)在用于连接数量众多的事务数据源、目的地的情况下,在输入端缓冲 区的设置上不用为每个输出端口单独设置一个缓冲区,只需少量的缓冲区甚至 两个即可,这样,尤其在少量数据通信的互连电路中,既能满足数据传输需求 又节省了存储和功耗开销;
(3)对每个输入端的待发事务数据有统一的仲裁,通过仲裁电路来综合考 虑各个输入端的数据传输请求,提高数据通路的利用率。
因此,本披露能够对到达互连电路中会聚节点中的多个事务数据根据其目 的地选择相应的传输通路,同时对同一时刻竞争同一传输通路的数据传输请求 进行仲裁,从而,提升互联电路的事务数据的处理速度,实现良好的数据流量 控制,提升互连电路内数据吞吐率的数据处理装置。
第二方面,本披露实施例提供了一种终端设备,该终端设备包括用于执行 上述第一方面的方法的功能单元。
第三方面,本披露实施例提供了另一种终端设备,该终端设备包括:存储器、 处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述 处理器执行所述计算机程序时实现如上第一方面任一项的方法。
第四方面,本披露提供了一种计算机可读存储介质,所述计算机可读存储 介质存储了计算设备所执行的程序代码。所述程序代码包括用于执行如上第一 方面中任一项的方法的指令。
第五方面,本披露提供了一种包括指令的计算机程序产品,当其在计算机 上运行时,使得计算机执行上述第一方面中任一项的方法。
一种矩阵运算装置,用于根据矩阵运算指令执行矩阵运算,包括:
存储单元,用于存储矩阵;
寄存器单元,用于存储矩阵地址,其中,所述矩阵地址为矩阵在所述存储 单元中存储的地址;
矩阵运算单元,用于获取矩阵运算指令,根据矩阵运算指令在所述寄存器 单元中获取矩阵地址,然后,根据该矩阵地址在存储单元中获取相应的矩阵, 接着,根据获取的矩阵进行矩阵运算,得到矩阵运算结果。
可选的,还包括:
指令缓存单元,用于存储待执行的矩阵运算指令。
可选的,还包括:
指令处理单元,用于从所述指令缓存单元获取矩阵运算指令,并对该矩阵 运算指令进行处理后,提供给所述矩阵运算单元。
可选的,所述指令处理单元包括:
取指模块,用于从所述指令缓存单元中获取矩阵运算指令;
译码模块,用于对获取的矩阵运算指令进行译码;
指令队列,用于对译码后的矩阵运算指令进行顺序存储。
可选的,还包括:
依赖关系处理单元,用于在所述矩阵运算单元获取矩阵运算指令前,判断 该矩阵运算指令与前一矩阵运算指令是否访问相同的矩阵,若是,则等待前一 矩阵运算指令执行完毕后,将该矩阵运算指令提供给所述矩阵运算单元;否则, 直接将该矩阵运算指令提供给所述矩阵运算单元。
可选的,当该矩阵运算指令与前一矩阵运算指令访问相同的矩阵时,所述 依赖关系处理单元将该矩阵运算指令存储在一存储队列中,待前一矩阵运算指 令执行完毕后,将存储队列中的该矩阵运算指令提供给所述矩阵运算单元。
可选的,所述存储单元还用于存储所述矩阵运算结果。
可选的,还包括:
输入输出单元,用于将矩阵存储于所述存储单元,或者,从所述存储单元 中获取矩阵运算结果。
可选的,所述存储单元为高速暂存存储器。
可选的,所述矩阵运算指令包括一操作码和至少一操作域,其中,所述操 作码用于指示该矩阵运算指令的功能,操作域用于指示该矩阵运算指令的数据 信息。
可选的,所述矩阵运算单元包含包括矩阵加法部件、矩阵乘法部件、矩阵 标量乘法部件和非线性运算部件。
可选的,所述矩阵运算单元为多流水级结构,其中,所述矩阵乘法部件和 矩阵标量乘法部件处于第一流水级,矩阵加法部件处于第二流水级,非线性运 算部件处于第三流水级。
一种用于执行卷积神经网络正向运算的装置,包括指令存储单元、控制器 单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:
指令存储单元通过数据访问单元读入指令并存储读入的指令;
控制器单元从指令存储单元中读取指令,将指令译成控制其他模块行为的 控制信号,所述其他模块包括数据访问单元、主运算模块和所述多个从运算模 块;
数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;
从运算模块用于实现卷积神经网络算法中的输入数据和卷积核的卷积运算;
互连模块用于所述主运算模块和所述从运算模块之间的数据传输,在神经 网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到 每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运 算模块的输出标量拼成中间向量,输送回主运算模块;
主运算模块将所有输入数据的中间向量拼接成中间结果,并对所述中间结 果执行后续运算。
可选的,其中主运算模块将中间结果与偏置数据相加,然后执行激活操作。
可选的,多个从运算模块利用相同的输入数据和各自的卷积核,并行地计 算出各自的输出标量。
可选的,主运算模块使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。
可选的,互连模块构成主运算模块和所述多个从运算模块之间的连续或离 散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网 格状结构、分级互连、总线结构。
可选的,主运算模块包括第一存储单元、第一运算单元、第一数据依赖关 系判定单元和第一存储单元,其中:
第一存储单元用于缓存主运算模块在计算过程中用到的输入数据和输出数 据;
第一运算单元完成主运算模块的各种运算功能;
数据依赖关系判定单元是第一运算单元读写第一存储单元的端口,保证对 第一存储单元的数据读写不存在一致性冲突,并且负责从第一存储单元读取输 入的神经元向量,并通过互连模块发送给从运算模块;以及
来自互连模块的中间结果向量被发送到第一运算单元。
可选的,每个从运算模块包括第二运算单元、第二数据依赖关系判定单元、 第二存储单元和第三存储单元,其中:
第二运算单元接收控制器单元发出的控制信号并进行算数逻辑运算;
第二数据依赖关系判定单元负责计算过程中对第二存储单元和第三存储单 元的读写操作,保证对第二存储单元和第三存储单元的读写不存在一致性冲突;
第二存储单元缓存输入数据以及该从运算模块计算得到的输出标量;以及
第三存储单元缓存该从运算模块在计算过程中需要的卷积核。
可选的,第一和第二数据依赖关系判定单元通过以下方式保证读写不存在 一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之 间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等 到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被 发射。
可选的,数据访问单元从外部地址空间读入以下中的至少一个:输入数据、 偏置数据、或卷积核。
一种用于执行单层卷积神经网络正向运算的方法,包括:
在步骤S1,在指令存储单元的首地址处预先存入一条IO指令;
在步骤S2,运算开始,控制器单元从指令存储单元的首地址读取该条IO指 令,根据译出的控制信号,数据访问单元从外部地址空间读取相应的所有卷积 神经网络运算指令,并将其缓存在指令存储单元中;
在步骤S3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出 的控制信号,数据访问单元从外部地址空间读取主运算模块需要的所有数据至 主运算模块的第一存储单元;
在步骤S4,控制器单元接着从指令存储单元读入下一条IO指令,根据译出 的控制信号,数据访问单元从外部地址空间读取从运算模块需要的卷积核数据;
在步骤S5,控制器单元接着从指令存储单元读入下一条CONFIG指令,根 据译出的控制信号,装置配置该层神经网络计算需要的各种常数;
在步骤S6,控制器单元接着从指令存储单元读入下一条COMPUTE指令, 根据译出的控制信号,主运算模块首先通过互连模块将卷积窗口内的输入数据 发给各从运算模块,保存至从运算模块的第二存储单元,之后,在依据指令移 动卷积窗口;
在步骤S7,根据COMPUTE指令译出的控制信号,从运算模块的运算单元 从第三存储单元读取卷积核,从第二存储单元读取输入数据,完成输入数据和 卷积核的卷积运算,将得到的输出标量通过互连模块返回;
在步骤S8,在互连模块中,各从运算模块返回的输出标量被逐级拼成完整 的中间向量;
在步骤S9,主运算模块得到互连模块返回的中间向量,卷积窗口遍历所有 输入数据,主运算模块将所有返回向量拼接成中间结果,根据COMPUTE指令 译出的控制信号,从第一存储单元读取偏置数据,与中间结果通过向量加单元 相加得到偏置结果,然后激活单元对偏置结果做激活,并将最后的输出数据写 回至第一存储单元中;
在步骤S10,控制器单元接着从指令存储单元读入下一条IO指令,根据译 出的控制信号,数据访问单元将第一存储单元中的输出数据存至外部地址空间 指定地址,运算结束。
一种用于执行多层卷积神经网络正向运算的方法,包括:
对每一层执行根据权利要求10所述的方法,当上一层卷积神经网络执行完 毕后,本层的运算指令将主运算单元中存储的上一层的输出数据地址作为本层 的输入数据地址,并且指令中的卷积核和偏置数据地址变更至本层对应的地址。
一种用于执行人工神经网络全连接层正向运算的装置,包括指令存储单元、 控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块, 其中:
指令存储单元通过数据访问单元读入指令并存储读入的指令;
控制器单元从指令存储单元中读取指令,将指令译成控制其他模块行为的 控制信号,所述其他模块包括数据访问单元、主运算模块和所述多个从运算模 块;
数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;
互连模块用于连接主运算模块和从运算模块;
主运算模块用于实现人工神经网络全连接层算法中的函数激活运算;
从运算模块用于实现人工神经网络全连接层算法中的输入神经元和权值参 数的乘法和加法运算;
互连模块用于所述主运算模块和所述从运算模块之间的数据传输,在神经 网络全连接层正向运算开始之前,主运算模块通过互连模块将输入神经元向量 输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将 各从运算模块的输出神经元值拼成中间结果向量,输送回主运算模块,用于后 续计算。
可选的,多个从运算模块利用相同的输入神经元向量和各自的权值向量, 并行地计算出各自的输出神经元值,每个从运算模块的权值向量是权值矩阵中 与该从运算模块相对应的行向量。
可选的,主运算模块使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。
可选的,主运算模块对中间结果向量加偏置,然后执行激活操作。
可选的,互连模块构成主运算模块和所述多个从运算模块之间的连续或离 散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网 格状结构、分级互连、总线结构。
可选的,主运算模块包括第一存储单元、第一运算单元、第一数据依赖关 系判定单元和第一存储单元,其中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的输入数据和输出 数据;
第一运算单元完成主运算模块的各种运算功能;
数据依赖关系判定单元是第一运算单元读写第一存储单元的端口,保证对 第一存储单元的数据读写不存在一致性冲突,并且负责从第一存储单元读取输 入的神经元向量,并通过互连模块发送给从运算模块;以及
来自互连模块的中间结果向量被发送到第一运算单元。
可选的,每个从运算模块包括第二运算单元、第二数据依赖关系判定单元、 第二存储单元和第三存储单元,其中:
第二运算单元接收控制器单元发出的控制信号并进行算数逻辑运算;
第二数据依赖关系判定单元负责计算过程中对第二存储单元和第三存储单 元的读写操作,保证对第二存储单元和第三存储单元的读写不存在一致性冲突;
第二存储单元缓存输入神经元向量的数据以及该从运算模块计算得到的输 出神经元值;以及
第三存储单元缓存该从运算模块在计算过程中需要的权值向量。
可选的,第一和第二数据依赖关系判定单元通过以下方式保证读写不存在 一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之 间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等 到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被 发射。
一种使用执行人工神经网络全连接层正向运算的装置执行单层人工神经网 络全连接层正向运算的方法,包括:
步骤S1.1,将初始指令存放到指令存储单元;
步骤S1.2,从指令存储单元中读取一条指令;
步骤S1.3,对读取的指令进行译码;
步骤S1.4,根据译码得到的控制信号,进行相应操作;
步骤S1.5,将操作结果写回到相应存储单元中。
一种执行人工神经网络全连接层正向运算的装置执行单层人工神经网络全 连接层正向运算的方法,包括:
在步骤S2.1,在指令存储单元处预先存入一条IO指令;
在步骤S2.2,运算开始,控制器单元从指令存储单元读取该条IO指令,根 据译出的控制信号,数据访问单元从外部地址空间读取相应的所有人工神经网 络全连接层运算指令,并将其存储在指令存储单元中;
在步骤S2.3,控制器单元接着从指令存储单元读入下一条IO指令,根据译 出的控制信号,数据访问单元从外部地址空间读取主运算模块需要的所有数据 至主运算模块的第一存储单元;
在步骤S2.4,控制器单元接着从指令存储单元读入下一条IO指令,根据译 出的控制信号,数据访问单元从外部地址空间读取从运算模块需要的权值矩阵 数据;
在步骤S2.6,控制器单元接着从指令存储单元读入下一条COMPUTE指令, 根据译出的控制信号,主运算模块首先通过互连模块将输入神经元向量发给各 从运算模块,保存至从运算模块的第二存储单元;
在步骤S2.7,根据COMPUTE指令译出的控制信号,从运算模块的第二运 算单元从第三存储单元读取权值向量,从第二存储单元读取输入神经元向量,完 成权值向量和输入神经元向量的点积运算,将中间结果通过互连模块返回;
在步骤S2.8,在互连模块中,各从运算模块返回的中间结果被逐级拼成完 整的中间结果向量;
在步骤S2.9,主运算模块得到互连模块的返回值,根据COMPUTE指令译 出的控制信号,从第一存储单元读取偏置向量,与互连模块返回的向量通过向 量加单元相加,然后激活单元对相加结果做激活,并将最后的输出神经元向量 写回至第一存储单元中;
在步骤S2.10,控制器单元接着从指令存储单元读入下一条IO指令,根据 译出的控制信号,数据访问单元将存储单元中的输出神经元向量存至外部地址 空间指定地址,运算结束。
在步骤S2.4和步骤S2.6之间执行:
步骤S2.5,控制器单元接着从指令存储单元读入下一条CONFIG指令,根 据译出的控制信号,配置该层神经网络计算需要的各种常数。
一种执行多层人工神经网络全连接层正向运算的方法,包括:
对于每一层人工神经网络全连接层,执行如权利要求10所述的方法,其中, 当上一层人工神经网络全连接层执行完毕后,下一层的运算指令将主运算模块 中存储的上一层的输出神经元地址作为本层的输入神经元地址,并将指令中的 权值地址和/或偏置地址变更至本层对应的地址。
一种执行pooling运算的装置,该装置包括指令存储单元、控制器单元、数 据访问单元和运算模块,其中,
所述指令存储单元通过数据访问单元读入指令并缓存读入的指令;
所述控制器单元从指令存储单元中读取指令,将指令译码成控制运算模块 行为的控制信号,然后将控制信号分发至运算模块;
数据访问单元用于访问外部地址空间,完成数据的加载和存储;
所述运算模块用于完成maxpooling运算的求最大值运算,或用于完成avgpooling运算的累加和乘法运算。
所述运算模块包括运算单元、数据依赖关系判断单元和神经元存储单元,
所述神经元存储单元用于缓存运算模块在计算过程中用到的输入数据和输 出数据;
所述运算单元用于完成运算模块的各种运算功能;
所述数据依赖关系判断单元是运算单元读写神经元存储单元的端口,同时 用于保证对神经元存储单元中数据的读写不存在一致性冲突。
对于maxpooling,在正向运算时,运算模块依次完成比较每一个输入向量 大小,取最大值的操作,得到输出向量。
对于maxpooling,在正向运算时,运算模块循环读取pooling核kernel的输 入向量,做上述比较大小的运算操作,得到新的kernel的输出向量同时保存每 一个输出向量对应的索引向量,直至本层pooling运算结束。
对于maxpooling,在反向训练时,运算模块根据正向运算时保存的索引向 量,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出 梯度向量。
对于avgpooling,在正向运算时,运算模块4依次完成累加每一个输入向量; 然后在运算模块4中完成乘以1/kernel_size运算,得到输出向量,kernel_size表 示pooling核kernel的大小;循环读取新的kernel的输入向量,做上述累加、乘 法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。
对于avgpooling,在反向训练时,运算模块将输入梯度向量乘以1/kernel_size,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度 向量。
执行pooling运算的装置,所述数据依赖关系判断单元用于判断尚未执行的 控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不 存在,允许该组控制信号立即发射,否则需要等到该条控制信号所依赖的所有 控制信号全部执行完成后该组控制信号才允许被发射。
一种执行单层人工神经网络pooling运算的方法,包括如下步骤:
读入指令并缓存读入的指令;
将指令译码成控制信号,然后将控制信号分发至执行pooling运算的运算模 块;
运算模块进行maxpooling运算的求最大值运算,或者进行avgpooling运算 的累加和乘法运算。
对于maxpooling,在正向运算时,运算模块依次完成比较每一个输入向量 大小,取最大值的操作,得到输出向量。
对于maxpooling,在正向运算时,运算模块循环读取pooling核kernel的输 入向量,做上述比较大小的运算操作,得到新的kernel的输出向量同时保存每 一个输出向量对应的索引向量,直至本层pooling运算结束。
对于maxpooling,在反向训练时,运算模块根据正向运算时保存的索引向 量,通过数据访问单元将输入梯度向量对应输出至相应的存储位置,得到输出 梯度向量。
对于avgpooling,在正向运算时,使运算模块依次完成累加每一个输入向量; 然后在运算模块中完成乘以1/kernel_size运算,得到输出向量,kernel_size表示 pooling核kernel的大小;循环读取新的kernel的输入向量,做上述累加、乘法 运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。
对于avgpooling,在反向训练时,使运算模块将输入梯度向量乘以 1/kernel_size,通过数据访问单元将输入梯度向量对应输出至相应的存储位置, 得到输出梯度向量。
一种执行多层人工神经网络pooling运算的方法,其特征在于,
当所述多层人工神经网络中的上一层执行完毕后,下一层的运算指令将运 算模块中计算出的输出神经元向量或输出梯度向量作为下一层训练的输入神经 元向量或输入梯度向量进行如权利要求9至14中任一项所述的方法进行计算。
一种用于执行batch normalization运算的装置,包括指令存储单元、控制器 单元、数据访问单元和运算模块,其中,
所述指令存储单元通过数据访问单元读入指令并缓存读入的指令;
所述控制器单元从指令存储单元中读取指令,将指令译码成控制其他单元 或模块行为的微指令,然后将各自的微指令分发至各个单元或模块;
所述数据访问单元用于访问外部地址空间,完成数据的加载和存储;
所述运算模块用于batch normalization运算的正向过程或反向过程。
所述运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和 中间值缓存单元,其中,
所述运算单元用于接收控制器单元发出的微指令并进行算数逻辑运算;
所述数据依赖关系判断单元用于对神经元缓存单元进行读写操作,保证指 令之间所用的数据不存在读写一致性冲突;
所述神经元缓存单元用于缓存输入神经元数据和输出神经元数据;
所述中间值缓存单元用于缓存所述运算模块计算过程中需要的中间值数据。
所述运算单元在batch normailizaiton运算的正向过程进行以下计算过程:
y=f(x)=alpha*(x-E[x])/sqrt(var(x)+eps)+beta,其中,x为输入神经元数据,y 为输出神经元数据,alpha、beta为学习参数,其在反向训练过程中不断更新, 用于之后计算输出神经元数据y的公式中;极小常数eps,均值E[x]代表输入数 据的神经元数据x以batch大小为一个总量所求出的均值,var[x]表示相应的输 入神经元数据x以batch大小为一个总量所求出的方差。
所述运算单元在batch normailizaiton运算的反向过程进行以下计算过程:
假设一个像素点传入的梯度为dl/dY,反向传出的梯度是dl/dx,正向过程输 出为Y,其余参数表示含义与正向过程相同,则经过batch normalization反向传 播出的梯度dl/dx=(alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y), 其中mean是取均值操作,学习参数alpha的梯度为:dl/dalpha=(Σdl/dY)*Y,学 习参数beta的梯度为:dl/dbeta=Σdl/dY,通过这两个梯度更新学习参数的数值。
一种用于执行batch normalization运算的方法,包括如下步骤:
采用一指令存储单元读入指令并缓存读入的指令;
将所述指令译码成控制一运算模块的微指令;
利用所述运算模块进行batch normalization运算的正向过程或反向过程。
所述运算模块利用一神经元缓存单元缓存输入神经元数据和输出神经元数 据,且利用一中间值缓存单元缓存计算过程中需要的中间值数据。
所述运算单元在batch normailizaiton运算的正向过程进行以下计算过程:
所述运算单元在batch normailizaiton运算的正向过程进行以下计算过程:
y=f(x)=alpha*(x-E[x])/sqrt(var(x)+eps)+beta,其中,x为输入神经元数据,y 为输出神经元数据,alpha、beta为学习参数,其在反向训练过程中不断更新, 用于之后计算输出神经元数据y的公式中;极小常数eps,均值E[x]代表输入数 据的神经元数据x以batch大小为一个总量所求出的均值,var[x]表示相应的输 入神经元数据x以batch大小为一个总量所求出的方差。
假设一个像素点传入的梯度为dl/dY,反向传出的梯度是dl/dx,正向过程输 出为Y,其余参数表示含义与正向过程相同,则经过batch normalization反向传 播出的梯度dl/dx=(alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y), 其中mean是取均值操作,学习参数alpha的梯度为:dl/dalpha=(Σdl/dY)*Y,学 习参数beta的梯度为:dl/dbeta=Σdl/dY,通过这两个梯度更新学习参数的数值。
一种用于执行神经网络运算以及矩阵/向量运算的装置,包括存储单元、寄 存器单元、控制单元、运算单元和高速暂存存储器,其中:
存储单元,用于存储神经元/矩阵/向量;
寄存器单元,用于存储神经元地址/矩阵地址/向量地址,其中所述神经元地 址为神经元在所述存储单元中存储的地址,所述矩阵地址为矩阵在所述存储单 元中存储的地址,所述向量地址为向量在所述存储单元中存储的地址;
控制单元,用于执行译码操作,根据读取指令控制各个单元模块;
运算单元,用于根据指令从所述寄存器单元中获取神经元地址/矩阵地址/向 量地址,根据所述神经元地址/矩阵地址/向量地址在所述存储单元中获取相应的 神经元/矩阵/向量,以及根据由此获取的神经元/矩阵/向量和/或指令中携带的数 据进行运算,得到运算结果;
其特征在于,将参与所述运算单元计算的神经元/矩阵/向量数据暂存在高速 暂存存储器上,当需要时所述运算单元从所述高速暂存存储器上读取。
所述高速暂存存储器能够支持不同大小的神经元/矩阵/向量数据。
所述寄存器单元为标量寄存器堆,提供运算过程中所需的标量寄存器。
所述运算单元包括向量乘法部件、累加部件和标量乘法部件;以及
所述运算单元负责装置的神经网络/矩阵/向量运算,包括卷积神经网络正向 运算操作、卷积神经网络训练操作、神经网络Pooling运算操作、full connection 神经网络正向运算操作、full connection神经网络训练操作、batch normalization 运算操作、RBM神经网络运算操作、矩阵-向量乘运算操作、矩阵-矩阵加/减运 算操作、向量外积运算操作、向量内积运算操作、向量四则运算操作、向量逻 辑运算操作、向量超越函数运算操作、向量比较运算操作、求向量最大/最小值 运算操作、向量循环移位运算操作、生成服从一定分布的随机向量运算操作。
所述装置还包括指令缓存单元,用于存储待执行的运算指令;所述指令缓 存单元优选为重排序缓存;以及
所述装置还包括指令队列,用于顺序缓存译码后的指令,送往依赖关系处 理单元。
所述装置还包括依赖关系处理单元和存储队列,所述依赖关系处理单元用 于在运算单元获取指令前,判断所述运算指令与前一运算指令是否访问相同的 神经元/矩阵/向量存储地址,若是,将所述运算指令存储在所述存储队列中;否 则,直接将该运算指令提供给所述运算单元,待前一运算指令执行完毕后,将 存储队列中的所述运算指令提供给所述运算单元;所述存储队列用于存储与之 前指令在数据上有依赖关系的指令,并在依赖关系消除之后,提交所述指令。
所述装置的指令集采用Load/Store结构,所述运算单元不对内存中的数据 进行操作;以及
所述装置的指令集优选采用超长指令字架构,同时优选采用定长指令。
所述运算单元执行的运算指令包括至少一操作码和至少3个操作数;其中, 所述操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码 进行不同的运算;所述操作数用于指示所述运算指令的数据信息,其中,所述 数据信息为立即数或寄存器号。
作为优选,当所述运算指令为神经网络运算指令时,所述神经网络运算指 令包括至少一操作码和16个操作数;
作为优选,当所述运算指令为矩阵-矩阵运算指令时,所述矩阵-矩阵运算指 令包括至少一操作码和至少4个操作数;
作为优选,当所述运算指令为向量运算指令时,所述向量运算指令包括至 少一操作码和至少3个操作数;
作为优选,当所述运算指令为矩阵-向量运算指令时,所述矩阵-向量运算指 令包括至少一操作码和至少6个操作数。
一种用于执行神经网络运算以及矩阵/向量运算的装置,包括:
取指模块,用于从指令序列中取出下一条将要执行的指令,并将该指令传 给译码模块;
译码模块,用于对所述指令进行译码,并将译码后的指令传给指令队列;
指令队列,用于顺序缓存所述译码模块译码后的指令,并送往依赖关系处 理单元;
标量寄存器堆,用于提供标量寄存器供运算使用;
依赖关系处理单元,用于判断当前指令与前一条指令是否存在数据依赖关 系,如果存在则将所述当前指令存储于存储队列;
存储队列,用于缓存与前一条指令存在数据依赖关系的当前指令,当所述 当前指令与前一条指令存在的依赖关系消除之后发射所述当前指令;
重排序缓存,用于在指令执行时将其缓存,并在执行完之后判断所述指令 是否是所述重排序缓存中未被提交指令中最早的一条指令,如果是则将所述指 令提交;
运算单元,用于执行所有神经网络运算和矩阵/向量运算操作;
高速暂存存储器,用于暂存参与所述运算单元计算的神经元/矩阵/向量数据, 当需要时所述运算单元从所述高速暂存存储器上读取;所述高速暂存存储器优 选能够支持不同大小的数据;
IO内存存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂 存存储器中读取或写入数据。
一种执行神经网络运算以及矩阵/向量指令的方法,包括以下步骤:
步骤S1,取指模块取出一条神经网络运算以及矩阵/向量指令,并将所述指 令送往译码模块;
步骤S2,译码模块对所述指令译码,并将所述指令送往指令队列;
步骤S3,在译码模块中,所述指令被送往指令接受模块;
步骤S4,指令接受模块将所述指令发送到微指令译码模块,进行微指令译 码;
步骤S5,微指令译码模块从标量寄存器堆里获取所述指令的神经网络运算 操作码和神经网络运算操作数,同时将所述指令译码成控制各个功能部件的微 指令,送往微指令发射队列;
步骤S6,在取得需要的数据后,所述指令被送往依赖关系处理单元;依赖 关系处理单元分析所述指令与之前尚未执行完的指令在数据上是否存在依赖关 系,如果存在,则所述指令需要在存储队列中等待至其与之前未执行完的指令 在数据上不再存在依赖关系为止;
步骤S7,将所述指令对应的微指令送往运算单元;
步骤S8,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需 要的数据,然后在运算单元中完成所述指令对应的神经网络运算和/或矩阵/向量 运算。
一种基于分形树网络结构的数据发布装置,包括:
一中心节点,其为所述片上网络的通信数据中心,用于向多个叶子节点进 行通信数据的广播或多播;
多个叶子节点,其为所述片上网络的通信数据节点,用于向所述中心叶子 节点进行通信数据的传递;
转发器模块,用于连接所述中心节点与所述多个叶子节点,通信数据通过 所述转发模块进行转发;
将所述多个叶子节点分为N组,每组中叶子节点的个数相同,所述中心节 点通过所述转发器模块单独与每一组叶子节点进行通信连接,每组叶子节点构 成的通信结构具有自相似性,所述多个叶子节点与所述中心节点通过多层所述 转发器模块以完全多叉树方式进行通信连接。
包括每个节点包括本地高速缓存结构,用于存储所述中心节点发布数据的 子集;
每个叶子节点均有id标识,且所述id标识从完全多叉树的拓扑一侧按序依 次增加序号;
所述数据发布装置共享一个时钟信号。
所述转发器模块包括本地高速缓存结构,用于存储数据。
一种利用所述数据发布装置的数据发布方法,通过所述中心节点将通信数 据向所述多个叶子节点进行发布,其中,数据发送方准备好发送数据后,发送 数据有效信号,并将数据置于总线;数据接收方准备好接收数据后,发送数据 准备接收信号;当所述数据有效信号与所述数据准备接收信号双方检测到后, 数据发送方认为数据已经发出,且被数据接收方接收。
当从所述中心节点将通信数据向所述多个叶子节点之间进行广播时,首先 数据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器 模块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发模块 局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由 转发器模块分别发布给与其相连的一组叶子节点。
如果下一时钟节拍数据发送方与数据接收方握手协议成功,则数据以流水 方式进入数据接收方的局部缓存中存储;如果握手协议不成功,则数据在当前 层的局部缓存中保存,且使得当前层作为上一层的数据接收方,并停止发送数 据准备接收信号,使得当前层的局部缓存中的数据停止更新,数据一直保存在 当前层,直到握手协议成功。
当所述中心节点将通信数据向所述多个叶子节点之间进行多播时,首先数 据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器模 块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发器模块 局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由 转发器模块分别发布给与其相连的一组叶子节点。
在接收的数据时,所述叶子节点根据与其相对应的id标识选取预设带宽的 数据。
一种用于稀疏连接的人工神经网络计算装置,包括:
映射单元,用于将输入数据转换成输入神经元和权值一一对应的存储方式, 并存储在存储装置和/或缓存中;
存储装置,用于存储数据和指令;
运算单元,用于根据所述存储装置中存储的指令对所述数据执行相应的运 算;所述运算单元主要执行三步运算,第一步是将所述输入神经元和权值数据 相乘;第二步执行加法树运算,用于将第一步处理后的加权输出神经元通过加 法树逐级相加,或者将输出神经元通过和偏置相加得到加偏置输出神经元;第 三步执行激活函数运算,得到最终输出神经元。
所述映射单元中的一一对应关系如下表示:
第一种情形:
采用1表示有连接,0表示无连接,每个输出与所有输入的连接状态组成一 个0和1的字符串来表示该输出的连接关系;或者
采用1表示有连接,0表示无连接,每个输入与所有输出的连接状态组成一 个0和1的字符串来表示该输入的连接关系;
第二种情形:
将一输出第一个连接所在的位置距离第一个输入神经元的距离、所述输出 第二个输入神经元距离上一个输入神经元的距离,所述输出第三个输入神经元 距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输 入,来表示所述输出的连接关系。
所述人工神经网络计算装置还包括DMA,用于在所述存储装置和缓存中进 行数据或者指令读写。
所述人工神经网络计算装置还包括:
指令缓存,用于存储专用指令;以及
控制单元,用于从所述指令缓存中读取专用指令,并将其译码成各运算单 元指令。
所述人工神经网络计算装置还包括:
输入神经元缓存,用于缓存输入到所述运算单元的输入神经元数据;以及
权值缓存,用于缓存权值数据。
所述人工神经网络计算装置还包括:
输出神经元缓存,用于缓存所述运算单元输出的输出神经元。
所述映射单元用于将输入数据转换成输入神经元和权值一一对应的存储方 式,并输出到所述运算单元,而不是存储在存储装置中。
所述人工神经网络计算装置还包括输入神经元缓存和/或权值缓存,所述输 入神经元缓存用于缓存输入到所述运算单元的输入神经元数据,所述权值缓存 用于缓存权值数据,所述映射单元用于将输入数据转换成输入神经元和权值一 一对应的存储方式,并输出到所述输入神经元缓存和/或权值缓存。
所述运算单元在第三步执行的激活函数为sigmoid函数、tanh函数或ReLU 函数。
一种用于稀疏连接的人工神经网络的计算方法,包括以下步骤:
步骤1,将输入数据转换成输入神经元和权值一一对应的存储方式;其中, 所述对应关系表示为:
第一种情形:
采用1表示有连接,0表示无连接,每个输出与所有输入的连接状态组成一 个0和1的字符串来表示该输出的连接关系;或者
采用1表示有连接,0表示无连接,每个输入与所有输出的连接状态组成一 个0和1的字符串来表示该输入的连接关系;
第二种情形:
将一输出第一个连接所在的位置距离第一个输入神经元的距离、所述输出 第二个输入神经元距离上一个输入神经元的距离,所述输出第三个输入神经元 距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输 入,来表示所述输出的连接关系
步骤2,将输入的神经元和权值数据相乘;
步骤3,执行加法树运算,将第一步处理后的加权输出神经元通过加法树逐 级相加,或者将输出神经元通过和偏置相加得到加偏置输出神经元;
步骤4,执行激活函数运算,得到最终输出神经元;其中,所述激活函数为 sigmoid函数、tanh函数或ReLU函数。
一种神经网络的处理系统,包括:
至少一片上存储介质、用于存储由神经网络处理系统外部传来的数据或用 于存储处理过程中产生的数据;
至少一片内地址索引模块、用于执行运算时根据输入的索引映射至正确的 存储地址;
由多个核心处理模块组成的多核心处理模块,用于执行神经网络运算中的 向量乘加操作;
至少一ALU模块,用于从所述多核心处理模块或所述片上存储介质获取输 入数据执行所述多核心处理模块无法完成的非线性运算,
其中,所述多个核心处理模块共享所述片上存储介质以及ALU模块,或者 所述多个核心处理模块具有独立的所述片上存储介质以及ALU模块。
所述处理过程中产生的数据包括处理结果或中间结算结果。
所述神经网络的处理系统进行处理时,将同一输入神经元分别发送至所述 多个核心处理模块,将不同的输入权值分配至不同的核心处理模块,所述多个 核心处理模块分别将所述输入神经元和输入权值进行向量内积操作后得到不同 的输出神经元。
所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别 发送至所述多个核心处理模块,所述多个核心处理模块分别处理一层输出特征 图。
所述神经网络的处理系统在执行二维或者多维运算时,将输入特征图分别 发送至所述多个核心处理模块,所述多个核心处理模块分别处理同一输出特征 图的不同区域。
所述多个核心处理模块均分别完成当前输出特征图的处理后,所述多核心 处理模块再执行新的输出特征图处理。
所述神经网络的处理系统在执行一维运算时,将同一输入分别发送至所述 多个核心处理模块,所述多个核心处理模块分别处理不同的输出神经元,所述 多个核心处理模块均分别完成当前输出神经元的处理后,所述多核心处理模块 再执行新的输入的处理。
所述多核心处理模块的多个核心处理模块之间为同构设计或异构设计。
一种神经网络的处理方法,所述方法包括:
片内地址索引模块根据输入的索引映射至正确的存储地址;
根据所述存储地址从片上存储介质中获取输入数据;
将所述输入数据发送至多核心处理模块或所述ALU模块;
所述多核心处理模块执行神经网络运算中的向量乘加操作,所述ALU模块 根据所述多核心处理模块的处理结果或者从所述片上存储介质中获取的输入数 据执行所述多核心处理模块无法完成的非线性运算;
将处理过程中产生的数据缓存至所述片上存储介质。
所述方法还包括:
将同一输入神经元分别发送至所述多个核心处理模块,将不同的输入权值 分配至不同的核心处理模块,所述多个核心处理模块分别将所述输入神经元和 输入权值进行向量内积操作后得到不同的输出神经元。
一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括指 令缓存单元、控制器单元、数据访问单元、互联模块、主运算模块、多个从运 算模块,其中:
指令缓存单元用于通过数据访问单元读入指令并缓存读入的指令;
控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制互联模 块、主运算模块、以及从运算模块行为的微指令;
数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数 据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间 读离散数据或连续数据;
每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从 运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程 完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中 间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算 模块针对不同离散数据采取预先设置的相应计算方式;
主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据 与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应 计算方式。
离散数据表示指用特定的离散数字代替真实的连续数据的表示方式。
多个从运算模块利用相同的离散或连续的输入神经元向量和各自不同的离 散或连续的权值向量,并行地计算出各自的离散或连续输出神经元值。
主运算模块对中间结果向量执行以下任一项操作:
加偏置操作,在中间结果向量上加上偏置;
对中间结果向量进行激活,激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;
采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机 数则输出0;或者
池化操作,包括最大值池化或平均值池化。
从运算模块包括输入神经元缓存单元,用于缓存离散或者连续的输入神经 元向量。
互联模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据 的数据通路,互
主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其 中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的离散或连续表示 的输入数据和输出数据;
运算单元完成主运算模块的各种运算功能,当输入数据是离散数据与连续 数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;
数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神 经元缓存单元中连续数据或离散数据读写不存在一致性冲突,并且负责从神经 元缓存单元读取输入离散或连续的神经元向量,并通过互联模块发送给从运算 模块;以及
来自互联模块的中间结果向量被发送到运算单元。
每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元 和权值缓存单元,其中:
运算单元接收控制器单元发出的微指令并进行算数逻辑运算,当输入数据 是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应 计算方式;
数据依赖关系判断单元负责计算过程中对支持离散数据表示的神经元缓存 单元和支持离散数据表示的权值缓存单元的读写操作,保证对支持离散数据表 示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写不存在一致性 冲突;
神经元缓存单元缓存输入神经元向量的数据以及该从运算模块计算得到的 输出神经元值;以及
权值缓存单元缓存该从运算模块在计算过程中需要的离散或连续表示的权 值向量。
数据依赖关系判断单元通过以下方式保证读写不存在一致性冲突:判断尚 未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如 果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有 微指令全部执行完成后该条微指令才允许被发射。
主运算模块或从运算模块中的运算单元包括运算决定单元和混合数据运算 单元,当输入数据是混合数据时,运算决定单元根据其中的离散数据决定应对 该混合数据执行何种操作,然后,混合数据运算单元根据运算决定单元的决定 结果,执行相应操作。
主运算模块或从运算模块中的所述运算单元还包括离散数据运算单元和连 续数据运算单元中的至少一个,以及数据类型判断单元,当输入数据全是离散 数据时,由离散数据运算单元根据输入的离散数据通过查表执行相应操作,当 输入数据全是连续数据时,由连续数据运算单元执行相应操作。
还包括连续离散转换单元,连续离散转换单元包括预处理模块、距离计算 模块、和判断模块,假设使用M个离散数据,M=2m,m≥1,令这些离散数 据分别对应于预定区间[-zone,zone]内的M个数值,其中:
预处理模块对于输入的连续数据x使用clip(-zone,zone)运算进行预处理,得 到区间[-zone,zone]内的预处理数据y,其中,如果x≤-zone则y=-zone,如果 x≥zone则y=zone,如果-zone<x<zone,则预处理数据y=x;
距离计算模块计算预处理数据y与上述各数值之间的距离;以及
判断模块基于该距离计算并输出离散数据。
还包括以下任意一项或多项:
预定区间[-zone,zone]是[-1,1]或[-2,2];
M个数值的绝对值是2的幂的倒数;或者
判断模块执行:
输出与该预处理数据y距离最近的数值所对应的离散数据,如果有两个数 值与该预处理数据距离相等,则输出二者中任一个所对应的离散数据;或者
计算预处理数据y分别到距离最近的两个数值中任一个的归一化概率,将 这两个数值中任一个所对应的归一化概率与随机数生成模块生成的(0,1)之间的 随机数z比较,如果该z小于该概率则输出该离散数据,否则输出另一离散数据。
一种使用正向运算的装置执行单层人工神经网络正向运算的方法,包括:
数据访问单元从外部地址空间读取与该层人工神经网络正向运算有关的所 有人工神经网络运算指令,并将其缓存在指令缓存单元中;
连续离散转换模块从外部地址空间读取该层神经网络需要转换的连续数据 转换为离散数据后存储回外部地址空间;
数据访问单元从外部地址空间读取主运算模块需要的与该层人工神经网络 正向运算有关的所有离散或连续数据至主运算模块的神经元缓存单元;
数据访问单元从外部地址空间读取从运算模块需要的离散表示或连续表示 的权值矩阵数据;
配置该层神经网络正向运算需要的各种离散或连续表示的常数;
主运算模块首先通过互联模块将输入神经元向量发给各从运算模块,保存 至从运算模块的支持离散数据表示的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从从运算模块的神经 元缓存单元读取输入神经元向量,对于向量中没有离散数据表示的完成权值向 量和输入神经元向量的点积运算,对于向量中有离散数据表示的,通过离散数 据运算模块,根据离散数据的值判断相应的位操作代替点积运算,将得到的神 经元值通过互联模块返回;
在互联模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果 向量;
主运算模块从主运算模块的神经元缓存单元读取离散表示或连续表示的偏 置向量,与互联模块返回的中间结果向量相加,然后再对相加结果做激活,得 到输出神经元向量写回至主运算模块的神经元缓存单元;以及
数据访问单元将主运算模块的神经元缓存单元中的输出神经元向量存至外 部地址空间指定地址。
一种使用正向运算的装置执行批归一化运算的方法:
数据访问单元从外部地址空间读取与该批归一化正向运算有关的所有人工 神经网络运算指令,并将其缓存在指令缓存单元中;
连续离散转换模块从外部地址空间读取该层神经网络需要转换的连续数据 转换为离散数据后存储回外部地址空间。
数据访问单元从外部地址空间读取主运算模块需要的与该层批归一化正向 运算有关的所有离散或连续数据至主运算模块的神经元缓存单元;
配置该层批归一化正向运算需要的各种离散或连续表示的常数;
主运算模块首先通过互联模块将输入神经元向量发给各从运算模块,保存 至从运算模块的支持离散数据表示的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从从运算模块的神经 元缓存单元读取输入神经元向量,对于输入向量计算在每一个批的尺度下的均 值和标准差,将得到的神经元值通过互联模块返回;
在互联模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果 向量;
主运算模块从主运算模块的神经元缓存单元读取离散表示或连续表示输入 神经元向量,与互联模块返回的均值结果向量相减,然后再对减结果和标准差 结果相除,得到输出神经元向量写回至主运算模块的神经元缓存单元;
数据访问单元将主运算模块的神经元缓存单元中的输出神经元向量存至外 部地址空间指定地址。
一种执行多层人工神经网络正向运算的方法,包括:
针对每一层,执行根据单层人工神经网络正向运算的方法或批归一化运算 的方法,其中:
当针对上一层人工神经网络执行完毕后,将主运算模块中存储的上一层的 输出神经元地址作为本层的输入神经元地址,针对所述本层再次执行单层人工 神经网络正向运算的方法或批归一化运算的方法。
一种神经网络运算装置,包括:
第一幂次转换单元,用于将神经网络输入数据中的非幂次数据转换为幂次 数据;
运算单元,用于接收神经网络运算的数据和指令并根据运算指令对其接收 的神经元数据及权值数据执行神经网络运算;其中,所述运算单元接收的所述 数据包括经第一幂次转换单元转换的幂次数据。
还包括:存储单元,用于存储数据和指令;其中,该存储单元与所述第一 幂次转换单元连接以接收所述幂次数据。
还包括:控制单元及输出神经元缓存单元;其中
所述控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接 收该存储单元发送的数据和指令,并将指令译码成运算指令;
所述运算单元,与所述控制单元连接,接收该控制单元发送的数据和运算 指令,并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算; 以及
所述输出神经元缓存单元,与所述运算单元连接,用于接收运算单元输出 的神经元数据并发送至所述控制单元作为下一层神经网络运算的输入数据。
所述控制单元,包括:
数据控制模块,与所述存储单元连接,用于实现存储单元和各缓存模块之 间的数据和指令交互;
指令缓存模块,与所述数据控制模块连接,用于接收该数据控制模块发送 的指令;
译码模块,与所述指令缓存模块连接,用于从指令缓存模块中读取指令, 并将其译码成运算指令;
输入神经元缓存模块,与所述数据控制模块连接,用于从该数据控制模块 获取相应的输入神经元数据;
权值缓存模块,与所述数据控制模块连接,用于从数据控制模块获取相应 的权值数据;其中,
所述运算单元,分别与所述译码模块、输入神经元缓存模块及权值缓存模 块连接,接收各运算指令、神经元数据及权值数据,根据运算指令对其接收的 神经元数据和权值数据执行相应的神经网络运算。
所述第一幂次转换单元用于将神经网络输入数据中的非幂次权值数据转换 为幂次权值数据。
还包括:第二幂次转换单元;其中,
所述第一幂次转换单元用于将神经网络输入数据中的非幂次神经元数据及 非幂次权值数据分别转换为幂次神经元数据及幂次权值数据,并发送至所述存 储单元;
所述第二幂次转换单元与所述输出神经元缓存单元单元连接,用于将其接 收的神经元数据转换为幂次神经元数据并发送至所述控制单元作为下一层神经 网络运算的输入数据。
若神经网络输入数据为幂次数据则直接存入神经网络运算装置。
幂次数据包括幂次神经元数据、幂次权值数据;其中,
所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,其 中,所述幂次神经元数据包括符号位和幂次位,符号位采用一位或多位比特位 表示神经元数据的符号,幂次位采用m位比特位表示神经元数据的幂次位数据, m为大于1的正整数;
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,其中, 所述幂次权值数据包括符号位和幂次位,符号位采用一位或多位比特位表示权 值数据的符号,幂次位采用m位比特位表示权值数据的幂次位数据,m为大于 1的正整数。
该神经网络运算装置的存储单元预存有编码表,用于提供幂次神经元数据 及幂次权值数据的每个幂次位数据对应的指数数值。
所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂 次神经元数据及幂次权值数据为0。
一种处理方法,其中包括:
使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;
对神经网络进行训练,训练过程中已经被置为零的权值保持为零。
使用滑动窗口选取神经网络的一组权值的条件为:
将组内所有权值绝对值的算术平均值作为该组的第一代表权值,第一代表 权值小于第一阈值;
或者将组内所有权值绝对值的几何平均值作为该组的第二代表权值,第二 代表权值小于第二阈值;
或者将组内所有权值绝对值的最大值作为该组的第三代表权值,第三代表 权值小于第三阈值。
还包括:重复进行对神经网络进行剪枝以及将剪枝后的神经网络进行训练, 直至保证精度不损失设定精度的前提下没有权值能被置为零。
所述设定精度为x%,其中x介于0至5之间。
对神经网络进行剪枝包括:对神经网络的全连接层、卷积层或LSTM层的 权值进行剪枝。
对神经网络的全连接层进行剪枝包括:
所述全连接层的权值是一个二维矩阵(Nin,Nout),其中Nin是输入神经元 的个数,Nout是输出神经元的个数,共有Nin*Nout个权值,设定一个大小为 Bin*Bout的滑动窗口,其中Bin为大于等于1小于等于Nin正整数,Bout为大 于等于1小于等于Nout的正整数;
使滑动窗口能够沿着Bin的方向按照Sin的步长进行滑动,也可以沿着Bout 方向按照Sout的步长进行滑动,其中Sin为大于等于1小于等于Bin的正整数, Sout为大于等于1小于等于Bout的正整数;
当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bin*Bout 个权值将同时置为零。
对神经网络的卷积层进行剪枝包括:
所述卷积层的权值是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入 特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,共 有Nfin*Nfout*Kx*Ky个权值,设定一个大小为Bfin*Bfout*Bx*By的四维滑动 窗口,其中Bfin为大于等于1小于等于Nfin的正整数,Bfout为大于等于1小 于等于Nfout的正整数,Bx为大于等于1小于等于Kx的正整数,By为大于等 于1小于等于Ky的正整数;
使滑动窗口沿着Bfin的方向按照Sfin的步长(stride)进行滑动,或者沿着 Bfout方向按照Sfout的步长进行滑动,或者沿着Bx方向按照Sx的步长进行滑 动,或沿着By方向按照Sy的步长进行滑动,其中Sfin为大于等于1小于等于 Bfin的正整数,Sfout为大于等于1小于等于Bfout的正整数,Sx为大于等于1 小于等于Bx的正整数,Sy为大于等于1小于等于By的正整数;
当某个滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即 Bfin*Bfout*Bx*By个权值将同时置为零。
对神经网络的LSTM层进行剪枝具体包括:
设定LSTM层的权值由m个全连接层权值组成,其中m为大于0的正整数, 第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0小于等于m的正整数, Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权 值输出神经元个数;
还设定一个大小为Bin_i*Bout_i的滑动窗口,其中Bin_i为大于等于1小于 等于Nin_i的正整数,Bout_i为大于等于1小于等于Nout_i的正整数;
使滑动窗口沿着Bin_i的方向按照Sin_i的步长进行滑动,或沿着Bout_i方 向按照Sout_i的步长进行滑动,其中Sin_i为大于等于1小于等于Bin_i的正整 数,Sout_i为大于等于1小于等于Bout_i的正整数;
当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即 Bin_i*Bout_i个权值将同时置为零。
采用将剪枝后的神经网络进行训练具体为:通过使用反向传播算法进行重 新训练。
在剪枝和重训练之间还包括量化和/或降低权值比特数操作。
一种加速装置,包括:
存储器:用于存储可执行指令;
处理器:用于执行存储单元中的可执行指令,在执行指令时依照权利要求 1-10任一所述方法进行操作。
一种芯片,所述芯片包括所述的加速装置。
一种芯片封装结构,所述芯片封装结构包括所述的芯片。
一种板卡,所述板卡包括所述的芯片封装结构。
一种电子装置,所述电子装置包括板卡。
一种电子装置,所述电子装置包括数据处理装置、机器人、电脑、打印机、 扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、 云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交 通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、 微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗 设备包括核磁共振仪、B超仪和/或心电图仪。
一种用于执行人工神经网络正向运算的装置,包括浮点数据统计模块、浮 点数据转换单元和浮点数据运算模块,
所述浮点数据统计模块用于对所述人工神经网络正向运算所需的各个类型 的数据进行统计分析,得到指数位偏移量offset及指数位的长度EL;
所述浮点数据转换单元用于根据所述浮点数据统计模块得到的所述指数位 偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据 类型的转换;
所述浮点数据运算模块用于在所述浮点数据转换单元将所有所述人工神经 网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表 示之后,对所述短位数浮点数据进行人工神经网络正向运算。
所述浮点数据统计模块包括数据提取单元、统计单元和分析单元,其中, 所述数据提取单元用于提取基于长位数浮点数据的正向运算中各不同类型的数 据;所述统计单元用于统计同一类型数据的数据范围及各数据段的数据分布情 况;所述分析单元根据统计单元统计的结果,得出用短位数浮点表示各个类型 数据应当设定的指数位长度EL及指数位偏移offset。
所述用于执行人工神经网络正向运算的装置还包括舍入单元,所述舍入单 元用于在运算结束后,对超出短位数浮点精度范围的数据进行舍入操作。
所述舍入单元选自随机舍入单元、四舍五入单元、向上舍入单元、向下舍 入单元、截断舍入单元中的任一种;
其中,所述随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的长位浮点数 据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)表示对原数据x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍
入获得的数据y为的概率为,为的概率为;
所述四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数 据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据 表示格式所能表示的最小正整数,即2offset-(X-1-EL)
所述向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据 表示格式所能表示的最小正整数,即2offset-(X-1-EL)
所述截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数 据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
所述浮点数据转换单元先通过所述舍入单元对待处理的数据进行舍入操作, 再根据浮点数据统计模块得到的指数位偏移量offset及指数位的长度EL来实现 长位数浮点数据类型向短位数浮点数据类型的转换。
所述用于执行人工神经网络正向运算的装置还包括运算缓存单元,所述运 算缓存单元采用长位数浮点数据类型存储正向运算中加法和乘法的中间运算结 果。
一种执行人工神经网络正向运算的方法,包括以下步骤:
获取所述人工神经网络各个层的长位数浮点数据,包括每一层的权值、偏 置和/或输入输出值;
对获得的所述长位数浮点数据进行分析,获得存储所述长位数浮点数据所 需的指数位偏移量offset及指数位的长度EL;
根据所述指数位偏移量offset及指数位的长度EL,将所有所述长位数浮点 数据采用短位数浮点数据类型表示;
对所述短位数浮点数据执行人工神经网络正向运算。
所述对获得的长位数浮点数据进行分析的步骤中,对所述人工神经网络不 同层、不同类型的数据分别进行分析,获得相对于所述人工神经网络不同类型 的数据的指数位偏移量offset及指数位的长度EL。
所述对短位数浮点数据执行人工神经网络正向运算的步骤中,对于正向运 算中的加法运算和乘法运算,将其中间计算结果采用长位数浮点数据形式存储。
在执行完所述人工神经网络正向运算之后,将参与反向运算的权值和偏置 数据采用在正向运算时保留的长位数浮点数据表示的副本、其余数据采用由短 位数浮点数据转换成的长位数浮点数据后再进行反向运算。
一种用于执行人工神经网络正向运算的装置,包括浮点数据统计模块、数 据转换单元和定点数据运算模块,
所述浮点数据统计模块用于对所述人工神经网络正向运算所需的各个类型 的数据进行统计分析,得到小数点位置Point location;
所述数据转换单元用于根据所述浮点数据统计模块得到的所述小数点位置Point location来实现长位数浮点数据类型向短位数定点数据类型的转换;
所述定点数据运算模块用于在所述数据转换单元将所有所述人工神经网络 正向运算中所需的输入、权值和/或偏置数据均采用短位数定点数据类型表示之 后,对所述短位数定点数据进行人工神经网络正向运算。
所述浮点数据统计模块包括数据提取单元、统计单元和分析单元,其中, 所述数据提取单元用于提取基于长位数浮点数据的正向运算中各种不同类型的 数据;所述统计单元用于统计同一类型数据的数据范围及各数据段的数据分布 情况;所述分析单元根据统计单元统计的结果,得出用短位数定点表示各个类 型数据应当设定的小数点位置Pointlocation。
所述用于执行人工神经网络正向运算的装置还包括舍入单元,所述舍入单 元用于在运算结束后,对超出短位数定点精度范围的数据进行舍入操作。
所述舍入单元选自随机舍入单元、四舍五入单元、向上舍入单元、向下舍 入单元、截断舍入单元中的任一种;
其中,所述随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位定点数据,x表示随机舍入前的长位浮点数 据,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2-Point_loctaion表示对原数据x直接截得短位数定点数据所得的数,w.p.表示概率,即随机舍
入获得的数据y为的概率为,为的概率为;
所述四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位定点数据,x表示四舍五入前的长位浮点数 据,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2-Point_loctaion为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数定点数据 表示格式所能表示的最小正整数,即2-Point_loctaion
所述向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数定点数据 表示格式所能表示的最小正整数,即2-Point_loctaion
所述截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位定点数据,x表示截断舍入前的长位浮点数 据,[x]表示对原数据x直接截得短位数定点数据所得的数。
所述数据转换单元先通过所述舍入单元对待处理的数据进行舍入操作,再 根据浮点数据统计模块得到的小数点位置Point location来实现长位数浮点数据 类型向短位数定点数据类型的转换。
所述用于执行人工神经网络正向运算的装置还包括运算缓存单元,所述运 算缓存单元采用长位数浮点数据类型存储正向运算中加法和乘法的中间运算结 果。
一种执行人工神经网络正向运算的方法,包括以下步骤:
步骤1,获取所述人工神经网络各个层的长位数浮点数据,包括每一层的权 值、偏置和/或输入输出值;
步骤2,对获取的所述长位数浮点数据,统计落在一列逐渐缩小的区间: [-2X-1-i,2X-1-i-2-i]i=0,1,...,N中的比例,其中X是短位数定点数据类型的 总位数;得到的相应的比例记为:p0,p1,...,pN,其中N是预先设定的一个 正整数;
步骤3,对于所述长位数浮点数据,预先设定一个溢出率EPL,取小数点位 置Pointlocation为:max{i|pi≥1-EPL,i∈{0,1,...,N}};即在0,1,...,N中取 最大的i,使得pi≥1-EPL;
步骤4,根据所述小数点位置Point location,将所有所述长位数浮点数据采 用短位数定点数据类型表示;
步骤5,对所述短位数定点数据执行人工神经网络正向运算。
在所述执行人工神经网络正向运算的方法中,对所述人工神经网络不同层、 不同类型的数据分别进行统计分析,获得相对于所述人工神经网络不同类型的 数据的小数点位置Point location,并分别进行计算。
所述对短位数定点数据执行人工神经网络正向运算的步骤中,对于正向运 算中的加法运算和乘法运算,将其中间计算结果采用长位数浮点数据形式存储。
一种片上数据划分读写方法,包括:
数据划分步骤,根据数据划分策略将片上数据存储在不同区域,分别存储 在片内存储介质和片外存储介质;
预先操作步骤,在进行数据拼接时预先对片内存储数据的片内地址索引进 行操作处理;
数据拼接步骤,根据数据拼接策略将所述片内存储数据和片外输入数据拼 接得到原始数据表示。
还包括:
数据存储步骤,存储搬运所述片内存储介质的所述片内存储数据和来自所 述片外存储介质的所述片外输入数据;
所述存储步骤中读写端口分离,数据的读出和写入相互独立;
所述预先操作步骤还包括:
运算处理所述片内存储数据;
运算处理外部输入数据处理;
所述外部输入数据包括所述片外输入数据、所述读写端口直接读入的数据。
所述数据存储步骤还包括:
根据片内地址索引来索引所述片内存储数据;
已索引到的数据的输出出口;
将要存储的数据根据写入地址写入相应存储位置。
所述数据划分步骤还包括:
地址空间划分成为片外数据空间和片内数据空间;
根据数据替换策略在所述片内存储介质和片外存储介质之间进行数据替换; 所述数据替换策略包括顺序替换、逆序替换以及随机替换;
所述数据划分策略包括定点数划分、浮点数划分;
所述数据拼接步骤还包括:
片内片外数据传输的形式从所述原始数据表示转为全部或者部分的数据索 引,拼接全部或者部分的片上的所述数据索引的结果获得所述原始数据表示;
所述数据拼接步骤通过片内片外数据通路或片内数据通路进行,所述片内 片外数据通路包括PCI、PCIE、HT互联技术,所述片内数据通路包括FAT-TREE、 H-TREE互联技术,片内片外数据连接方式包括多芯片互联结构;
所述片内存储介质或所述片外存储介质中的数据可以被一次或者多次读写, 所述数据可以被读至一个或者多个片上运算单元;所述片内存储介质或所述片 外存储介质可以被一次或者多从外部进行读写,介质可以被一次或者多次从内 部读写。
一种片上数据划分读写系统,包括:
数据划分模块,用于根据数据划分策略将片内存储数据划分在不同区域, 分别存储在片内存储介质和片外存储介质;
预先操作模块,用于在进行数据拼接时预先对片内存储数据的片内地址索 引进行操作处理;
数据拼接模块,用于根据数据拼接策略将片内存储数据和片外输入数据拼 接得到所述原始数据表示。
还包括:
存储模块,用于存储搬运所述片内存储介质的所述片内存储数据和来自所 述片外存储介质的所述片外输入数据;
所述存储模块采用读写端口分离,数据的读出和写入相互独立;
所述预先处理模块还包括:
片上处理子模块,用于运算处理所述片内存储数据;
片外处理子模块,用于运算处理外部输入数据处理;
所述外部输入数据包括所述片外输入数据、所述读写端口直接读入的数据。
所述存储模块还包括:
地址索引接口,用于根据片内地址索引来索引所述片内存储数据;
数据读出接口,用于已索引到的所述片内存储数据的输出出口;
数据写入接口,用于将要存储的数据根据写入地址写入相应存储位置。
所述数据划分模块还包括:
地址划分子模块,用于地址空间划分成为片外数据空间和片内数据空间;
数据替换子模块,用于根据数据替换策略在所述片内存储介质和片外存储 介质之间进行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随机 替换;
所述数据划分策略包括定点数划分、浮点数划分;所述数据划分模块基于 芯片中的一个或多个片上计算单元实现,所述片上计算单元发起读写请求并处 理拼接得到的原始数据;
所述数据拼接模块还包括:
索引拼接子模块,用于片内片外数据传输的形式从原始数据表示转为全部 或者部分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得所 述原始数据表示;
所述数据拼接模块读写通过片内片外数据通路或片内数据通路进行,所述 片内片外数据通路包括PCI、PCIE、HT互联技术,所述片内数据通路包括FAT-TREE、H-TREE互联技术,片内片外数据连接方式包括多芯片互联结构;
所述片内存储介质或所述片外存储介质中的数据被一次或者多次读写,所 述数据被读至一个或者多个片上运算单元;所述片内存储介质或所述片外存储 介质被一次或者多从外部进行读写,所述片内存储介质被一次或者多次从内部 读写。
一种片上读写装置,包括根据所述片上数据划分读写系统。
所述片上读写装置包括静态随机存储器、动态随机存储器、增强动态随机 存取存储器、寄存器堆以及非易失存储器或者3D存储器件。
一种用于执行人工神经网络正向运算的装置,包括指令缓存单元、控制器 单元、直接内存访问单元、H树模块、主运算模块、以及多个从运算模块,指 令缓存单元用于通过直接内存访问单元读入指令并缓存读入的指令;
控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制H树模 块、主运算模块、以及从运算模块行为的微指令;
直接内存访问单元用于从外部地址空间向主运算模块和各从运算模块的相 应数据缓存单元中写数据或从所述数据缓存单元向外部地址空间读数据;
H树模块用于,在每层神经网络反向训练开始计算的阶段,主运算模块通 过H树模块向所有的从运算模块传输本层的输入神经元向量,在从计算模块的 计算过程完成后,H树模块逐级将各从计算模块的输出神经元值拼成中间结果 向量;
主运算模块用于利用中间结果向量完成后续计算。
多个从运算模块利用相同的输入神经元向量和各自不同的权值向量,并行 地计算出各自的输出神经元值。
主运算模块对中间结果向量执行以下任一项操作:
对加偏置操作,在中间结果向量上加上偏置;
对中间结果向量进行激活,激活函数active是sigmoid,tanh,relu,softmax 中的任一个;
采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机 数则输出0;或者
池化操作,包括最大值池化或平均值池化(AVGPOOLING)。
从运算模块包括输入神经元缓存单元,用于缓存输入神经元数据。
H树模块构成主运算模块和所述多个从运算模块之间的数据通路,并具有H 树型的结构,H树是由多个节点构成的二叉树通路,每个节点将上游的数据同 样地发给下游的两个节点,将下游的两个节点返回的数据合并,并返回给上游 的节点。
主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其 中:
神经元缓存单元用于缓存主运算模块在计算过程中用到的输入数据和输出 数据;
运算单元完成主运算模块的各种运算功能;
数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神 经元缓存单元中数据读写不存在一致性冲突,并且负责从神经元缓存单元读取 输入神经元向量通过H树模块发送给从运算模块;以及
来自H树模块的中间结果向量被发送到运算单元。
每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元 和权值缓存单元,其中:
运算单元接收控制器单元发出的微指令并进行算数逻辑运算;
数据依赖关系判断单元负责计算过程中对神经元缓存单元和权值缓存单元 的读写操作,保证对神经元缓存单元和权值缓存单元的读写不存在一致性冲突;
神经元缓存单元缓存输入神经元向量数据以及该从运算模块计算得到的输 出神经元值;以及
权值缓存单元缓存该从运算模块在计算过程中需要的权值向量。
通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在 执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微 指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后 该条微指令才允许被发射。
一种使用用于执行人工神经网络正向运算的装置执行单层人工神经网络正 向运算的方法,包括:
直接内存访问单元从外部地址空间读取与该层人工神经网络正向运算有关 的所有人工神经网络运算指令,并将其缓存在指令缓存单元中;
直接内存访问单元从外部地址空间读取主运算模块需要的与该层人工神经 网络正向运算有关的所有数据至主运算模块的神经元缓存单元;
直接内存访问单元从外部地址空间读取从运算模块需要的权值矩阵数据;
配置该层神经网络正向运算需要的各种常数;
主运算模块首先通过H树模块将输入神经元向量发给各从运算模块,保存 至从运算模块的神经元缓存单元;
从运算模块的运算单元从权值缓存单元读取权值向量,从神经元缓存单元读 取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将得到的神 经元值通过H树模块返回;
在H树模块中,各从运算模块返回的神经元值被逐级拼成完整的中间结果 向量;
主运算模块从神经元缓存单元读取偏置向量,与H树模块返回的中间结果 向量相加,然后再对相加结果做激活,得到输出神经元向量写回至神经元缓存 单元;以及
直接内存访问单元将神经元缓存单元中的输出神经元向量存至外部地址空 间指定地址。
一种执行多层人工神经网络正向运算的方法,包括:
针对每一层,执行根据使用用于执行人工神经网络正向运算的装置执行单 层人工神经网络正向运算的方法,其中:
当针对上一层人工神经网络执行完毕后,将主运算模块中存储的上一层的 输出神经元地址作为本层的输入神经元地址,针对所述本层再次执行使用用于 执行人工神经网络正向运算的装置执行单层人工神经网络正向运算的方法。
一种非线性函数的运算装置,包括:
定义域转换部,用于将输入的自变量转换成查表范围内的对应值;
查表部,用于根据输入的自变量或由所述定义域转换部处理后的自变量, 查找对应的分段线性拟合的斜率和截距;
所述的非线性函数的运算装置,其中,所述查表部包括:
斜率数组存储单元,用于存储所述查表部中的斜率数据;
截距数组存储单元,用于存储所处查表部中的截距数据;
索引生成单元,用于根据输入自变量的值计算出对应的斜率和截距的索引;
索引单元,用于根据索引生成单元生成的索引在斜率和截距数组存储单元 中读取出对应的值,并输出。
以及线性拟合部,用于根据所述查表部查表得到的斜率和截距通过线性拟 合的方法得到最后结果。
所述的非线性函数的运算装置,其中,所述定义域转换部包括:
第一乘法器,用于对输入的自变量进行缩放;
第一加法器,用于对缩放后的自变量进行偏移。
所述的非线性函数的运算装置,其中,所述查表部包括:
斜率数组存储单元,用于存储所述查表部中的斜率数据;
截距数组存储单元,用于存储所处查表部中的截距数据;
索引生成单元,用于根据输入自变量的值计算出对应的斜率和截距的索引;
索引单元,用于根据索引生成单元生成的索引在斜率和截距数组存储单元 中读取出对应的值,并输出。
所述的非线性函数的运算装置,其中,所述线性拟合部包括:
第二乘法器,用于根据斜率与输入的自变量或由所述定义域转换部处理后 的自变量进行乘法运算,得到运算结果;
第二加法器,用于根据所述运算结果以及截距进行加法运算,得到所述最 后结果。
所述的非线性函数的运算装置,其中,进一步包括:
第一自变量选择器,用于选择所述查表部进行处理时所使用的自变量。
所述的非线性函数的运算装置,其中,进一步包括:
第二自变量选择器,用于选择所述第二乘法器进行乘法运算时所使用的自 变量。
为了实现上述目的,本披露还提供了一种非线性函数的运算方法,包括:
步骤一,将输入的自变量转换成查表范围内的对应值;
步骤二,根据所述自变量或由所述定义域转换部处理后的自变量,查找对 应的分段线性拟合的斜率和截距;以及
步骤三,根据所述查表部查表得到的斜率和截距通过线性拟合的方法得到 最后结果。
所述的非线性函数的运算方法,其中,所述步骤一中,包括:
对输入的自变量进行缩放;
对缩放后的自变量进行偏移。
所述的非线性函数的运算方法,其中,所述步骤二中,包括:
通过设置第一自变量选择器选择所述查表部进行处理时所使用的自变量。
所述的非线性函数的运算方法,其中,所述步骤三中,包括:
根据斜率与输入的自变量或由所述定义域转换部处理后的自变量进行乘法 运算,得到运算结果;
根据所述运算结果以及截距进行加法运算,得到所述最后结果。
所述的非线性函数的运算方法,其中,所述步骤三中,包括:
通过设置第二自变量选择器选择进行乘法运算时所使用的自变量。
本披露实施例中终端设备可获取第一信息,所述第一信息为终端设备待处 理的信息,所述终端设备设置有计算装置;在所述计算装置中调用运算指令对 所述第一信息进行计算,得到第二信息;输出所述第二信息;这样提升了信息 处理效率。
附图说明
为了更清楚地说明本披露实施例技术方案,下面将对实施例描述中所需要 使用的附图作简单地介绍,显而易见地,下面描述中的附图是本披露的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
图1是本披露实施例提供的计算装置的结构示意图。
图1A是本披露实施例提供的矩阵计算单元的结构示意图。
图1B是本披露实施例提供的流水级的结构示意图。
图1C是本披露实施例披露的一种矩阵计算方法的流程示意图。
图1D是本披露实施例提供的正向和反向运算示意图。
图1E是本披露实施例提供的指令集的格式示意图。
图1F是本披露实施例提供的另一种计算装置的结构示意图。
图1G是本披露实施例提供的计算装置执行矩阵乘向量指令的流程图。
图2A是本披露实施例提供的一种计算装置的示意性框图。
图2B是本披露实施例提供的互联模块的示意框图。
图2C是本披露实施例提供的用于执行卷积神经网络正向运算的装置中主运 算模块的示意框图。
图2D是本披露实施例提供的用于执行卷积神经网络正向运算的装置中从 运算模块的示意框图。
图2E是本发明实施例提供的流执行方法的示意流程图。
图2F是本发明实施例提供的流执行装置的示意流程图。
图2G是本发明实施例提供的流执行装置的示意流程图。
图2H是本披露实施例提供的一种终端的结构示意图。
图2I是本披露实施例提供的一种信息处理方法的示意流程图。
图3是本披露实施例提供的一种基于所述计算装置的信息处理方法的流程 示意图。
图3A是本披露实施例提供的又一种基于所述计算装置的信息处理方法的 流程示意图。
图3B是本披露实施例提供的又一种基于所述计算装置的信息处理方法的流 程示意图。
图3C是本披露实施例提供基于所述计算装置的信息处理方法的流程图。
图3D是本披露实施例提供的基于所述计算装置的信息处理方法的流程图。
图3E提供了一种基于所述计算装置的信息处理方法流程示意图。
图3F提供了一种基于所述计算装置的信息处理方法的流程示意图。
图4是本披露实施例运算指令调取示意图。
图5是本披露实施例另一运算指令调取示意图。
图5A示出稀疏用户数据的示意图。
图5B所示的神经网络进行特征提取示意图。
图6A本披露实施例提供的一种终端设备的示意性框图。
图6B是本披露实施例提供的卷积计算指令的流程示意图。
图6C是本披露实施例提供的全连接层正向运算指令的流程示意图。
图6D是本披露实施例提供的池化运算正向运算流程图。
图6E是本披露实施例提供的池化运算反向运算流程图。
图6F是本披露实施例提供的批归一化正向运算流程图。
图7A是本披露的指令集的格式示意图;
图7B是本披露的神经网络运算指令的格式示意图;
图7C是本披露的矩阵运算指令的格式示意图;
图7D是本披露的向量运算指令的格式示意图;
图7E是本披露的矩阵-向量运算指令的格式示意图;
图7F为本披露的hub_one_to_two结构示意图;
图8为本披露的hub_one_to_two与数据接收方握手的行为示意图;
图9为本披露的一个实施例中使用h-tree连接的16+1个核的片上多核结构 示意图;
图10为本披露的另一个实施例中数据在hub中传输的行为示意图;
图11为本披露的h-tree结构的展开成完全二叉树拓扑的结构示意图;
图12为本披露的另一个实施例中在h-tree上,全带宽的数据与对应每个leaftile的数据段的示意图。
图13为本披露的一个实施例中使用x-tree连接的64+1个核的片上多核结构 示意图;
图14为本披露的另一个实施例中数据在hub中传输的行为示意图;
图15为本披露的x-tree结构的完全四叉树拓扑的结构示意图;
图16为本披露的另一个实施例中,在x-tree上,全带宽的数据与对应每个 leaftile的数据段的示意图;
图17是作为本披露一实施例的总体结构的示意性框图;
图18是作为本披露一实施例的一稀疏连接的神经网络的节点结构示意图;
图19是图4的神经网络的连接关系示意图;
图20是作为本披露又一实施例的一稀疏连接的神经网络的连接关系示意图;
图21是作为本披露一实施例的一卷积操作的示意图;
图22是卷积神经网络变得稀疏时输入、输出和权值的变化图;
图23是作为本披露一实施例的稀疏连接的人工神经网络运算装置的结构示 意图;
图24是作为本披露一实施例的映射单元的结构示意图;
图25是作为本披露一实施例的稀疏连接的人工神经网络运算过程的流程图;
图26是作为本披露另一实施例的稀疏连接的人工神经网络运算装置的结构 示意图;
图27是作为本披露另一实施例的映射单元的结构示意图;
图28是作为本披露再一实施例的稀疏连接的人工神经网络运算装置的结构 示意图;
图29是作为本披露再一实施例的映射单元的结构示意图;
图30是作为本披露还一实施例的稀疏连接的人工神经网络运算装置的结构 示意图;
图31是作为本披露还一实施例的映射单元的结构示意图;
图32是本披露神经网络的处理系统的一种实施例的结构框图;
图33是本披露神经网络的处理系统的另一实施例的结构框图;
图34是本披露一种实施例中神经网络划分的示意图;
图35是本披露另一实施例中神经网络划分的示意图;
图36是本披露又一实施例中神经网络划分的示意图;
图37是本披露神经网络的处理方法的流程图;
图38示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网 络正向运算的装置的整体结构的示例框图。
图39示意性示出了根据本披露实施例的用于执行支持离散数据表示的人工 神经网络正向运算的装置中H树模块(互联模块的一种实施方式)的结构。
图40示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网 络正向运算的装置中主运算模块结构的示例框图。
图41示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网 络正向运算的装置中从运算模块结构的示例框图。
图42示出了根据本披露实施例的神经网络正向运算过程的示例框图。
图43示出了根据本披露实施例的支持离散数据表示的神经网络反向训练过 程的示例框图。
图44示出了根据本披露实施例的单层人工神经网络运算的流程图。
图45示出了根据本披露实施例的运算单元示例结构。
图46示出了根据本披露实施例的连续数据和离散数据转化的连续离散转化 模块的示例结构;
图47为依据本披露的神经网络运算装置的结构示意图。
图48为依据本披露的神经网络运算装置的结构示意图。
图49为依据本披露的神经网络运算方法流程图。
图49.1为依据本披露的编码表的示意图。
图49.2为依据本披露的编码表的另一示意图。
图49.3为依据本披露的编码表的另一示意图。
图49.4为依据本披露的编码表的另一示意图。
图49.5为依据本披露的幂次数据的表示方法示意图。
图49.6为依据本披露的神经元与幂次权值的乘法操作示意图。
图49.7为依据本披露的神经元与幂次权值的乘法操作示意图。
图50为依据本披露的神经网络运算方法流程图。
图50.1为依据本披露的编码表的示意图。
图50.2为依据本披露的编码表的另一示意图。
图50.3为依据本披露的编码表的另一示意图。
图50.4为依据本披露的编码表的另一示意图。
图50.5为依据本披露的幂次数据的表示方法示意图。
图50.6为依据本披露的幂次神经元与幂次权值的乘法操作示意图;
图51是本披露实施例的处理方法的流程图。
图52是本披露实施例的处理方法的另一流程图。
图53是本披露实施例神经网络的全连接层的剪枝方法。
图54是本披露实施例神经网络的卷积层粗粒度剪枝方法。
图55是本披露实施例的处理装置的结构示意图。
图56是本披露实施例的加速装置的结构示意图。
图57是本披露实施例的另一种加速装置的结构示意图。
图58是本披露以处理方法的一具体实施例;
图59为根据本披露一实施例的用于存储数据的短位数浮点数据结构的具体 表示方法;
图60为根据本披露一实施例的用于执行人工神经网络正向运算的装置中浮 点数据统计模块的示例框图;
图61为根据本披露一实施例的用于执行人工神经网络正向运算的装置中正 向运算模块的短位数浮点计算部分的示例框图;
图62为根据本披露一实施例的神经网络正向运算过程的示例框图;
图63示意性示出了根据本披露一实施例的用于执行人工神经网络正向运算 装置的运算流程示例框图;
图64为根据本披露一实施例的用于存储数据的定点数据结构的具体表示方 法;
图65为根据本披露一实施例的用于执行人工神经网络正向运算的装置中浮 点数据统计模块的示例框图;
图66为根据本披露一实施例的用于执行人工神经网络正向运算的装置中正 向运算模块的短位数定点计算部分示例框图;
图67为根据本披露一实施例的神经网络正向运算过程的示例框图;
图68示意性示出了根据本披露一实施例的用于执行人工神经网路正向运算 装置的运算流程示例框图;
图69为根据本披露一实施例的算法实施总体流程图;
图70是本披露片上重复寻址的装置的优选实施例的总体结构的示例的框图;
图71是本披露片上重复寻址的方法的优选实施例的数据地址划分图;
图72是本披露片上重复寻址的方法的优选实施例的数据划分示意图之一;
图73是本披露片上重复寻址的方法的优选实施例的数据划分示意图之二;
图74是本披露片上重复寻址的方法的优选实施例的替换策略示意图;
图75是本披露片上重复寻址的方法的一种具体实施例的流程图;
图76是本披露片上重复寻址的方法的片上重复索引优选实施例示意图;
图77是本披露所述片上数据划分读写系统的结构示意图;
图78是本披露优选实施例的所述片上数据划分读写系统的结构示意图;
图79A是本披露所述片上数据划分策略的实现示意图之一;
图79B是本披露所述片上数据划分策略的实现示意图之二;
图80是本披露根据本披露所述片上数据划分读写系统的片上数据索引实施 例示意图;
图81是本披露根据本披露所述片上数据划分读写方法的物理框架示意图;
图82是本披露根据本披露所述片上数据划分读写方法一个实施例数据拼接 操作的物理设计框架图;
图83是本披露中所述片上数据划分读写方法流程示意图;
图84是本披露中所述片上数据划分读写方法一个具体实施例流程示意图;
图85示出了根据本披露实施例的神经网络计算系统的结构示意图。
图86(a)示意性示出了根据本披露实施例的多处理器的一种实施例示意图。
图86(b)示意性示出了根据本披露实施例的多处理器的另一种实施例示意 图。
图87示出了根据本披露实施例的用于训练和推理的神经网络计算系统结构 示意图。
图88示出了根据本披露实施例的计算处理器共享存储单元的计算系统结构 示意图。
图89示出了根据本披露实施例的计算处理器,控制处理器共享存储单元的 神经网络计算系统的结构示意图。
图90示出了根据本披露实施例的用于复杂神经网络任务的系统的示例框图。
图91示意示出了包括数据处理装置的互连电路。
图92是根据本披露的一个实施例的数据处理装置的框图,更详细示出图10 的数据处理装置。
图93是本披露的互连电路的数据处理的流程图。
图94是根据本披露的一个实施例示出的事务数据从到达数据处理装置到获 得传输通道占用权并输出至下游节点的流程图。
图95是本披露的激活函数的运算装置结构图。
图96是本披露的定义域转换部件的内部结构图。
图97是本披露的查表部件的内部结构图。
图98是本披露的线性拟合部件的内部结构图。
图99是本披露的激活函数的运算的第一实施例。
图100是本披露的激活函数的运算的第二实施例。
图101是本披露的激活函数的运算的第三实施例。
图102是本披露的激活函数的运算的第四实施例。
图103是本披露的激活函数的运算的第五实施例。
图103A为根据本发明一实施例的用于分段插值的装置的整体结构示例框 图;
图103B为根据本发明一实施例的分段插值的方法流程图;
图103C为根据本发明一实施例的用于分段插值的硬件基本电路及数据传输 示意图;
图103D为根据本发明一实施例的对指数函数exp(x)在固定区间上进行线 性分段插值的插值效果示意图;
图104A是本发明实施例提供的非线性函数运算装置的结构图;
图104B是本发明实施例提供的非线性函数运算装置的内部结构图;
图104C是本发明实施例中线性拟合部的内部结构图;
图104D是本发明实施例的非线性函数运算的原理图;
图104E示出了本披露的概要构成图;
图105示出了本披露的编码器模块的概要构成图;
图105A示出了本披露编码过程的流程图;
图106示出了本披露的解码器模块的概要构成图;
图107示出了本披露解码过程的流程图;
图108是本披露提供的运算装置的结构示意图;
图109是本披露中指令模块的结构示意图;
图110是本披露中数据模块的结构示意图;
图111是本披露中运算模块的结构示意图;
图112是本披露中支持不同长度运算数据的指令的方法流程图;
图113是本披露实施例提供的不同长度运算向量进行运算时,循环读取较 短向量进行运算的运算关系示意图;
图113A是现有技术中串行进位加法树的结构示意图;
图114是现有技术中华莱士树的结构示意图;
图115是本披露提供的执行多个浮点数相加的装置的示意图;
图116是本披露中指数位两两比较的示意图;
图117是本披露中选择最大指数位的示意图;
图118是本披露中计算移位模块的示意图;
图119是本披露提供的用于执行神经网络运算的装置的结构示意图;
图120是本披露中神经网络处理模块的结构示意图;
图121是本披露中外部存储模块的结构示意图;
图122是本披露中神经网络处理单元的结构示意图;
图123是本披露中片上互联单元的结构示意图;
图124是本披露执行一层全连接层运算实施例的流程图;
图125是本披露提供的运算装置的结构示意图;
图126是本披露提供的运算单元的结构示意图;
图127为本披露采用一条指令的方式执行运算的指令格式示意图;
图128是本披露的神经网络运算指令的格式示意图;
图129是本披露的矩阵-矩阵运算指令的格式示意图;
图130是本披露的向量-向量运算指令的格式示意图;
图131是本披露的矩阵-向量运算指令的格式示意图;
图132是本披露实施例的运算装置的结构示意图;
图133是本披露实施例中译码模块的结构示意图;
图134是本披露实施例的运算装置采用一条指令的方式执行运算的流程图;
图135是本披露采用两条指令的方式执行运算中位宽配置指令的格式示意 图;
图136是本披露采用两条指令的方式执行运算中运算指令的格式示意图;
图137是本披露的神经网络位宽配置指令的格式示意图;
图138是本披露的神经网络运算指令的格式示意图;
图139是本披露的矩阵-矩阵位宽配置指令的格式示意图;
图140是本披露的矩阵-矩阵运算指令的格式示意图;
图141是本披露的向量-向量位宽配置指令的格式示意图;
图142是本披露的向量-向量运算指令的格式示意图;
图143是本披露的矩阵-向量位宽配置指令的格式示意图;
图144是本披露的矩阵-向量运算指令的格式示意图;
图145是本披露实施例的运算装置采用两条指令的方式执行运算的流程图;
图146是本披露实施例提供的一种计算装置示意图;
图147是本披露实施例提供的运算单元的结构示意图;
图148是本披露实施例提供的一种扩展计算指令的实现方法;
图149示意性示出了本披露实施例的装置结构示意图;
图150示意性示出了本披露一优选实施例的具体结构示意图;
图151为本披露实施例的步骤流程图;
图152示意性示出了本披露实施例的指令集的格式示意图;
图153示意性示出了本披露实施例的DMA控制模块执行2D DMA命令的 流水线时空图。
图10-图13附图标记说明
11、12、13 输入端
1050、1100、1150 输出端
51、52、53 输入端的输入端口
54、55、56 输入端的输出端口
23、25、27 缓冲存储分配电路
41、42、43 路由选择电路
22、24、26、28、30、32 缓冲存储器
30、35、40、45、50、60 复用器
36 冲裁电路
38 多路选择电路
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部 的实施例。基于本披露中的实施例,本领域普通技术人员在没有做出创造性劳 动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含” 指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个 或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施 例的目的而并不意在限制本披露。如在本披露说明书和所附权利要求书中所使 用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该” 意在包括复数形式。
还应当进一步理解,在本披露说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包 括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下 文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语 “如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指 “一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测 到[所描述条件或事件]”。
本披露中,所述终端设备设置有计算装置,所述计算装置可提供用于执行 各种计算方法(简称算法)的运算指令,所述计算方法包括但不限于神经网络 算法、语音识别算法、场景识别算法等等,具体在下文中详述。下面对本披露 中计算装置所涉及的一些实施例进行阐述。
本披露具体实施方式提供一种矩阵计算方法,该矩阵计算方法在如图1所 示的计算装置内完成,如图1所示,该计算装置包括:
存储介质201、用于存储矩阵。优选的该存储介质可以是高速暂存存储器, 能够支持不同长度的矩阵数据;本披露将必要的计算数据暂存在高速暂存存储 器上(ScratchpadMemory),使本运算装置在进行矩阵运算过程中可以更加灵活 有效地支持不同长度的数据。上述存储介质还可以为片外数据库、数据库或其 他的能够存储的介质等等。
寄存器单元202,用于存储标量数据,其中,该标量数据包括但不限于:矩 阵数据在存储介质201的地址以及矩阵与标量运算时的标量。在一种实施方式 中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标 量寄存器不只存放矩阵地址,还存放有标量数据。当涉及到矩阵与标量的运算 时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取 相应的标量。
运算单元203,用于获取并执行第一运算指令。如图1A所示,该运算单元 包括多个运算器,该运算器包括但不限于:矩阵加法运算器231、矩阵乘法运算 器232、大小比较运算器233、非线性运算运算器234和矩阵标量乘法运算器235。
该方法如图1C所示,包括如下步骤:
步骤S301、运算单元203获取第一运算指令,所述第一运算指令包括:执 行该指令所需的矩阵读取指示。
在步骤S301中,上述执行该指令所需的矩阵读取指示具体可以为多种,例 如,在本披露一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可 以为所需矩阵的存储地址。又如,在本披露另一个可选的技术方案中,上述执 行该指令所需的矩阵读取指示可以为所需矩阵的标识,该标识的表现形式可以 为多种,例如,矩阵的名称,又如,矩阵的识别号,再如该矩阵在寄存器单元 的寄存器号或地址,。
下面通过一个实际的例子来说明上述第一运算指令包含的执行该指令所需 的矩阵读取指示,这里假设该矩阵运算公式为f(x)=A+B,其中,A、B均为矩阵。 那么在第一运算指令中除了携带该矩阵运算公式外,还可以携带该矩阵运算公 式所需矩阵的存储地址,具体的,例如A的存储地址为0000-0FFF,B的存储地 址为1000-1FFF。又如,可以携带A以及B的标识,例如A的标识为0101,B 的标识为1010。
步骤S302、运算单元203依据该矩阵读取指示向所述存储介质201发送读 取命令。
上述步骤S302的实现方法具体可以为:
如该矩阵读取指示可以为所需矩阵的存储地址,运算单元203向该存储介 质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
又如该矩阵读取指示可以为所需矩阵的标识时,运算单元203依据该标识 从寄存器单元处采用单位读取方式读取该标识对应的存储地址,然后运算单元 203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获 取对应的矩阵。
上述单个读取方式具体可以为,每次读取均为单位的数据,即1bit数据。 此时设置单位读取方式即1位读取方式的原因为,对于标量数据来说,其占用 的容量非常小,如果采用批量数据读取方式,那么读取的数据量容易大于所需 的数据的容量,这样会导致带宽的浪费,所以对于标量的数据这里采用单位读 取方式来读取以减少带宽的浪费。
步骤S303、运算单元203采用批量读取方式读取该指示对应的矩阵,对该 矩阵执行所述第一运算指令。
上述步骤S303中批量读取方式具体可以为,每次读取均为多位的数据,例 如每次读取的数据位数为16bit、32bit或64bit,即无论其所需的数据量是多少, 其每次读取的均为固定多位数的数据,此批量读取的数据方式非常适合大数据 的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其 读取的速度会非常慢,所以这里采用批量读取方式来获取多位的数据从而快速 读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。
本披露提供的技术方案的计算装置设置有寄存器单元了存储介质,其分别 存储标量数据以及矩阵数据,并且本披露为两种存储器分配了单位读取方式以 及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能 够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于 寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提 高了带宽的利用率,所以本披露提供的技术方案能够很好的利用带宽,避免带 宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
可选的,上述对该矩阵执行所述第一运算指令具体可以为:
对该矩阵执行第一流水级的计算得到第一结果,(可选的)将第一结果输入 到第二流水级执行第二流水级的计算得到第二结果,(可选的)将第二结果输入 到第三流水级执行第三流水级计算得到第三结果,(可选的)将第三结果存储至 存储介质201。上述流水级的操作流程图如图1B所示。
上述第一流水级包括但不限于:矩阵加法计算器、矩阵乘法计算器等等。
上述第二流水级包括但不限于:大小比较计算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法器等等。
上述三种流水级根据不同的运算指令可以进行调整,例如,在仅仅执行向 量运算或矩阵运算时,由于没有比较运算以及非线性运算,所以只需要执行第 一流水级即可,当然在实际应用中,也可以仅仅保留第一流水级以及第二流水 级,本披露的三个流水级并不表示所有的运算指令均需要,厂家或用户可以根 据实际的运算自行调整。将矩阵分三个流水级运算主要是为了提高运算的速度, 对于矩阵的计算来说,例如采用现有的通用处理器在计算时,其运算的步骤具 体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存 中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结 果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果, 然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进 行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计 算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读 取多次数据,对于本披露的技术方案来说,第一流水级计算的第一结果直接进 入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进 行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先 其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了 带宽的利用率,进一步提高了计算效率。
在本披露另一实施例中,可以自由组合各流水部件或者采取一级流水级。 例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水 线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负 责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组 合。
可选的,上述计算装置还可以包括:缓存单元204,用于缓存第一运算指令。 指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后, 如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令 将背提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在 一种实施方式中,指令缓存单元可以是重排序缓存。
可选的,上述方法在步骤S301之前还可以包括:
确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关 系,如第一运算指令与第一运算指令之前的第二运算指令存在关联关系,则在 第二运算指令执行完毕以后,从缓存单元中提取出该第一运算指令传递至运算 单元203。如第一运算指令与该第一运算指令之前的指令无关联关系,则直接将 第一运算指令传递至运算单元。
上述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关 联关系的具体实现方法可以为:
依据该第一运算指令提取该第一运算指令中所需矩阵的第一存储地址区间, 依据该第二运算指令提取该第二运算指令中所需矩阵的第二存储地址区间,如 第一存储地址区间与第二存储地址区间具有重叠的区域,则确定第一运算指令 与第二运算指令具有关联关系。如第一存储地址区间与第二存储地址区间无重 叠的区域,则确定第一运算指令与第二运算指令不具有关联关系。
此存储地区区间中有重叠区域出现说明第一运算指令与第二运算指令访问 了相同的矩阵,对于矩阵来说,由于其存储的空间比较大,比如采用相同的存 储区域作为判断是否为关联关系的条件,可能出现的情况是,第二运算指令访 问的存储区域包含了第一运算指令访问的存储区域,例如,第二运算指令访问A 矩阵存储区域、B矩阵存储区域和C矩阵存储区域,如果A、B存储区域相邻 或A、C存储区域相邻,则第二运算指令访问的存储区域为,A、B存储区域以 及C存储区域,或A、C存储区域以及B存储区域。这种情况下,如果第一运算指令访问的为A矩阵与D矩阵的存储区域,那么第一运算指令访问的矩阵的 存储区域无法与第二运算指令范文的矩阵的存储区域相同,如果采用相同的判 断条件,则确定第一运算指令与第二运算指令不关联,但是实践证明,此时第 一运算指令与第二运算指令属于关联关系,所以本披露通过是否有重叠区域来 判断是否为关联关系的条件,能够避免上述情况的误判。
下面以一个实际的例子来说明何种情况属于关联关系,何种情况属于非关 联关系。这里假设第一运算指令所需的矩阵为A矩阵和D矩阵,其中A矩阵的 存储区域为【0001,0FFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运 算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001, 0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存 储区域为:【0001,0FFF】、【A000,AFFF】,对于第二运算指令来说,其对应的 存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与 第一运算指令的存储区域具有重叠区域【0001,0FFF】,所以第一运算指令与第 二运算指令具有关联关系。
这里假设第一运算指令所需的矩阵为E矩阵和D矩阵,其中A矩阵的存储 区域为【C000,CFFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算 指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001, 0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存 储区域为:【C000,CFFF】、【A000,AFFF】,对于第二运算指令来说,其对应 的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域 与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指 令无关联关系。
使用人工神经网络运算装置(即如图1所示计算装置、如图1F所示的计算 装置,如图2A所示的计算装置中的任意一种)实现神经网络训练的方法;具体 来说,包括以下主要内容:
神经网络训练的步骤:是对一个(多层)神经网络中的各层依次执行正向 运算,然后按照相反的层的顺序依次执行反向运算,最后用计算得到的权值的 梯度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复 执行这个过程多次;
层的反向运算:每一层的反向运算需要执行两部分运算:一部分是使用输 出神经元梯度和输入神经元计算出权值的梯度(用于在“权值更新”步骤更新本层 的权值),另一部分是使用输出神经元梯度和权值,计算出输入神经元梯度(用 于作为反向运算中下一层的输出神经元梯度以供其进行反向运算);
权值更新:在执行完神经网络的反向运算之后,就计算出了各层的权值的 梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储 本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;
人工神经网络运算装置具体为稀疏神经网络运算装置的时候,即装置中多 一个映射单元,处理的神经网络为稀疏神经网络:
使用稀疏神经网络运算装置实现神经网络训练的方法;具体来说,包括以 下三个主要内容:
神经网络训练的步骤是对一个(多层)神经网络中的各层依次执行正向运 算,然后按照相反的层的顺序依次执行反向运算,最后用计算得到的权值的梯 度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复执 行这个过程多次;
层的反向运算每一层的反向运算需要执行两部分运算:一部分是使用可能 是稀疏表示的输出神经元梯度和可能是稀疏表示的输入神经元计算出权值的梯 度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示 的输出神经元梯度和可能是稀疏表示的权值,计算出输入神经元梯度(用于作 为反向运算中下一层的输出神经元梯度以供其进行反向运算);
权值更新在执行完神经网络的反向运算之后,就计算出了各层的权值的梯 度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本 层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新。本 披露中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经 元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下 层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神 经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于 第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入 神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层 外,每一层都可以作为输入层,其下一层为对应的输出层。
上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其 实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的 运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运 算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时, 将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向 运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作 为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操 作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。具体如 图1D所示,图1D中虚线的箭头表示反向运算,实现的箭头表示正向运算。
本披露中,如图1E是本披露提供的矩阵操作指令的指令集的格式示意图, 如图1E所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示 该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作 域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号, 例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始 地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址 存放的矩阵。
指令集包含有不同功能的运算指令:
矩阵乘向量指令(MMV),根据该指令,装置从存储器(优选的高速暂存 存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据和向量数据, 在运算单元中进行矩阵乘向量的乘法运算,并将结果写回。优选的,并将计算 结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址; 值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于 存储器(优选的高速暂存存储器或者标量寄存器堆)中。
向量乘矩阵指令(VMM),根据该指令,装置从存储器(优选的高速暂存 存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据和矩阵数据, 在运算单元中进行向量乘矩阵的乘法运算,并将结果写回。优选的,并将计算 结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址; 值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于 存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵乘标量指令(VMS),根据该指令,装置存储器(优选的高速暂存存储 器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,从标量寄存器堆 的指定地址中取出指定大小的矩阵数据,在运算单元中进行标量乘矩阵的乘法 运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址,需要说明的是,标量寄存器堆不 仅存储有矩阵的地址,还存储有标量数据。
张量运算指令(TENS),根据该指令,装置从存储器(优选的高速暂存存 储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数 据,在运算单元中对两矩阵数据进行张量运算,并将计算结果写回。优选的, 并将计算结果写回至存储器(优选的存储器(优选的高速暂存存储器或者标量 寄存器堆)的指定地址。
矩阵加法指令(MA),根据该指令,装置从存储器(优选的高速暂存存储 器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据, 在运算单元中对两矩阵进行加法运算,并将计算结果写回。优选的,并将计算 结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵减法指令(MS),根据该指令,装置从存储器(优选的高速暂存存储 器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据, 在运算单元中对两矩阵进行减法运算,并将计算结果写回。优选的,并将计算 结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵检索指令(MR),根据该指令,装置从存储器(优选的高速暂存存储 器或者标量寄存器堆)的指定地址取出设定长度的向量数据,从存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的矩阵数据, 在运算单元中,该向量是索引向量,输出的向量中的第i个元素是以索引向量的 第i个元素作为索引,在矩阵的第i列中找到的数,该输出向量写回至存储器(优 选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵加载指令(ML),根据该指令,装置从指定外部源地址载入设定长度 的数据至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵存储指令(MS),根据该指令,装置将存储器(优选的高速暂存存储 器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至外部目的地址处。
矩阵搬运指令(MMOVE),根据该指令,装置将存储器(优选的高速暂存 存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至存储器(优 选的高速暂存存储器或者标量寄存器堆)的另一指定地址处。
上述指令中的设定长度可以由用户自行设定,在一个可选的实施方案中, 用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设 置长度设置为多个值。本披露具体实施方式并不限定该设定长度的具体值以及 个数。为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施 例,并参照附图,对本披露进一步详细说明。
参阅图1F,图1F为本披露具体实施方式提供的另一种计算装置50。图1F 所示,计算装置50包括:存储介质501、标量数据存储单元单元502(优选的 为标量寄存器单元)、矩阵计算单元503和控制单元504;
存储介质501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述 矩阵在所述存储介质内的存储地址;
控制单元504,用于控制所述矩阵计算单元获取第一运算指令,所述第一运 算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储介质发送读取命令; 依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述 第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述 指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采 用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储 介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于对该矩阵执行第一流水级的计算得到第一 结果,将第一结果输入到第二流水级执行第二流水级得到第二结果,将所述第 二结果输入到第三流水级执行第三流水级得到第三结果,将所述第三结果输入 到所述矩阵存储器进行存储。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之 前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指 令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二 运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算 单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关 联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址 区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地 址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域, 则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储 地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指 令与所述第二运算指令不具有关联关系。
可选的,上述控制单元503,可以用于从指令缓存单元获取运算指令,并对 该运算指令进行处理后,提供给所述运算单元。其中,控制单元503可以划分 为三个模块,分别为:取指模块5031、译码模块5032和指令队列模块5033,
取指模5031,用于从指令缓存单元中获取运算指令;
译码模块5032,用于对获取的运算指令进行译码;
指令队列5033,用于对译码后的运算指令进行顺序存储,考虑到不同指令 在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系 被满足之后发射指令。
参阅图1D,图1D是本披露实施例提供的计算装置执行矩阵乘向量指令的 流程图,如图1D所示,该计算装置的硬件结构参阅图1C所示的结构,如图1C 所示的存储介质以高速暂存存储器为例,执行矩阵乘向量指令的过程包括:
步骤S601,计算装置控制取指模块取出矩阵乘向量指令,并将该矩阵乘向 量指令送往译码模块。
步骤S602,译码模块对该矩阵乘向量指令译码,并将该矩阵乘向量指令送 往指令队列。
步骤S603,在指令队列中,该矩阵乘向量指令需要从标量寄存器堆中获取 指令中五个操作域所对应的标量寄存器里的数据,该数据包括输入向量地址、 输入向量长度、输入矩阵地址、输出向量地址和输出向量长度。
步骤S604,控制单元确定所述矩阵乘向量指令与矩阵乘向量指令之前的运 算指令是否存在关联关系,如存在关联关系,将矩阵乘向量指令存入到缓存单 元,如不存在关联管理,将该矩阵乘向量指令传输至运算单元。
步骤S605,运算单元根据五个操作域所对应的标量寄存器里的数据从高速 暂存器中取出需要的矩阵和向量数据,然后在运算单元中完成乘法运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存 储器或者标量寄存器堆)的指定地址,重排序缓存中的该矩阵乘向量指令被提 交。
上述图1C中的矩阵计算指令以矩阵乘向量指令为例,在实际应用中,如图 1C所示实施例中的矩阵乘向量指令可以用向量乘矩阵指令、矩阵乘标量指令、 张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、 矩阵存储指令或矩阵搬运指令替换,这里不一一赘述。
参阅图2A,图2A提供了又一种计算装置,该计算装置包括:存储介质111 (可选的)、寄存器单元112、互联模块113、运算单元114、控制器单元115和 数据访问单元116;
其中,运算单元114可以包括:加法计算器、乘法计算器、比较器、激活 运算器中至少二种。
互联模块113,用于控制运算单元114中计算器的连接关系使得该至少二种 计算器组成不同的计算拓扑结构。
寄存器单元112,用于存储运算指令、数据块的在存储介质的地址、运算指 令对应的计算拓扑结构。
该运算指令可以包括:操作域以及操作码,以卷积运算指令为例,如表1 所示,其中,寄存器堆0、寄存器堆1、寄存器堆2、寄存器堆3、寄存器堆4 可以为操作域。
存储介质111可以为片外存储器,当然在实际应用中,也可以为片内存储 器,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数, 例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3 或3以上时,为多维数据。
控制器单元115,用于从寄存器单元112内提取运算指令、该运算指令对应 的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行 指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访 问单元116,将该计算拓扑结构传输至互联模块113。
数据访问单元116,用于从存储介质111中提取该操作域对应的数据块,并 将该数据块传输至运算单元114。
互联模块113、用于依据控制运算单元114中计算器的连接关系形成第一计 算拓扑结构。
运算单元114,用于按第一计算拓扑结构以及该执行指令调用计算器对该数 据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存 储介质内。
本披露提供的计算装置设置了互联模块,此互联模块能够根据运算指令的 需要将运算单元内的计算器组合连接得到与该运算指令对应的计算拓扑结构, 进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此 结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结 果的优点,提高了计算效率。
运算指令可以存储在存储介质内,上述执行运算指令可以由运算单元来执 行。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法, 这里的运算指令以卷积运算指令为例,该卷积运算指令可以应用在神经网络中, 所以该卷积运算指令也可以称为卷积神经网络。对于卷积运算指令来说,其实 际需要执行的公式可以s=s(∑wxi+b)为:,其中,即将卷积核w(可包括 多个数据)乘以输入数据Xi,进行求和,然后可选地可加上偏置b,然后可选 地还可做激活运算s(h),以得到最终的输出结果S。依据该公式即可以得到该计 算拓扑结构为,乘法运算器-加法运算器-激活运算器。
上述卷积运算指令可以包括指令集,该指令集包含有不同功能的卷积神经 网络COMPUTE指令以及CONFIG指令、IO指令、NOP指令、JUMP指令和 MOVE指令。在一种实施例中,COMPUTE指令包括:
卷积神经网络sigmoid指令,根据该指令,装置分别从高速暂存存储器(优 选的)的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷 积操作,然后将输出结果做sigmoid激活;上述设定大小可以由厂家或用户自行 定义。
卷积神经网络TanH指令,根据该指令,装置分别从高速暂存存储器的指定 地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后 将输出结果做TanH激活;
卷积神经网络ReLU指令,根据该指令,装置分别从高速暂存存储器的指 定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然 后将输出结果做ReLU激活;
卷积神经网络group指令,根据该指令,装置分别从高速暂存存储器的指定 地址取出设定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做 卷积操作,然后将输出结果做激活。
卷积运算指令,可根据该指令,装置分别从存储器(优选的,为高速暂存 存储器)的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做 卷积操作。上述设定大小即用户或厂家可以自行设定的大小,例如,在第一厂 家的计算装置中,可以将设定大小设定为Abit数据,在第二厂家的计算装置中, 可以将设定大小设定为B bit数据,上述Abite数据与B bit数据大小不同。
COMPUTE指令也可以包括其他的运算指令,进行非线性激活和线性激活 操作。
图2B示意性示出了互连模块113的一种实施方式:H树模块。互连模块113 构成主运算模块5和多个从运算模块6之间的数据通路,是由多个节点构成的 二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两 个节点返回的数据进行合并,并返回给上游的节点。例如,在卷积神经网络开 始计算阶段,主运算模块5内的神经元数据通过互连模块4发送给各个从运算 模块6;当从运算模块6的计算过程完成后,当从运算模块的计算过程完成后, 每个从运算模块输出的神经元的值会在互连模块中逐级拼成一个完整的由神经 元组成的向量。举例说明,假设装置中共有N个从运算模块,则输入数据xi被发送到N个从运算模块,每个从运算模块将输入数据xi与该从运算模块相应的 卷积核做卷积运算,得到一标量数据,各从运算模块的标量数据被互连模块4 合并成一个含有N个元素的中间向量。假设卷积窗口总共遍历得到A*B个(X 方向为A个,Y方向为B个,X、Y为三维正交坐标系的坐标轴)输入数据xi, 则对A*B个xi执行上述卷积操作,得到的所有向量在主运算模块中合并得到 A*B*N的三维中间结果。
图2C示出了根据本披露实施例的用于执行卷积神经网络正向运算的装置中 主运算模块5的结构的示例框图。如图2C所示,主运算模块5包括第一运算单 元51、第一数据依赖关系判定单元52和第一存储单元53。
其中,第一运算单元51包括向量加法单元511以及激活单元512。第一运 算单元51接收来自控制器单元的控制信号,完成主运算模块5的各种运算功能, 向量加法单元511用于实现卷积神经网络正向计算中的加偏置操作,该部件将 偏置数据与所述中间结果对位相加得到偏置结果,激活运算单元512对偏置结 果执行激活函数操作。所述偏置数据可以是从外部地址空间读入的,也可以是 存储在本地的。
第一数据依赖关系判定单元52是第一运算单元51读写第一存储单元53的 端口,保证第一存储单元53中数据的读写一致性。同时,第一数据依赖关系判 定单元52也负责将从第一存储单元53读取的数据通过互连模块4发送给从运 算模块,而从运算模块6的输出数据通过互连模块4直接发送给第一运算单元 51。控制器单元2输出的指令发送给计算单元51和第一数据依赖关系判定单元 52,来控制其行为。
存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数 据。
图2D示出了根据本披露实施例的用于执行卷积神经网络正向运算的装置 中从运算模块6的结构的示例框图。如图2B所示,每个从运算模块6包括第二 运算单元61、数据依赖关系判定单元62、第二存储单元63和第三存储单元64。
第二运算单元61接收控制器单元2发出的控制信号并进行卷积运算。第二 运算单元包括向量乘单元611和累加单元612,分别负责卷积运算中的向量乘运 算和累加运算。
第二数据依赖关系判定单元62负责计算过程中对第二存储单元63的读写 操作。第二数据依赖关系判定单元62执行读写操作之前会首先保证指令之间所 用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的控制 信号都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令 的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该 指令必须等到所依赖的写指令被执行后才能够执行。
第二存储单元63缓存该从运算模块6的输入数据和输出标量数据。
第三存储单元64缓存该从运算模块6在计算过程中需要的卷积核数据。
本披露实施例提供了一种流执行方法,可应用于语音识别、图像处理、数 据分析、广告推荐系统、汽车自动驾驶等神经网络所涉及的方面中,对神经网 络运算中执行运算的指令描述符流进行简化,可减少多余的运算操作,从而提 高了神经网络处理器的运算速度。
本披露实施例提供的流执行方法可以由如图2A所示的计算装置来执行,如 图2A所示的计算装置可以执行卷积运算指令的流执行方法。当然上述流执行方 法还可以通过如图1F所示的计算装置来执行,如图1F所示的计算可以执行数 据块与标量的流执行方法,当然实际应用中,上述流执行方法还可以通过如图1 所示的计算装置来执行,如图1所示的计算装置可以执行矩阵操作指令或向量 运算的流执行方法。本披露实施例提供流执行的方法在需要根据神经网络结构 生成多条指令的运算装置中,需要针对某种特定的神经网络结构生成完整的指 令流,以调用神经网络处理器进行运算。根据特定的神经网络结构生成指令流 的过程,可使用流执行的方法进行优化,以获得更为适合网络结构,运算更快 的指令流。上述流执行的方法可以在能够处理多条指令的计算装置或执行多条 运算指令的方法,该多条运算指令包括但不限于:神经网络运算指令、矩阵运 算指令,向量运算指令等等。上述多条指令的计算装置包括但不限于:正向运 算装置、反向运算装置、包含多流水级的运算单元的装置等等。当然上述流执 行的方法也可以在多核处理设备或多个处理器协同的技术方案实现,例如,包 括一个或多个中心节点以及一个或多个叶子节点的数据发布装置。当然上述说 明仅仅是为了举例说明,本披露实施例中的流执行的方法并不局限上述的装置、 结构、方法的结合。
请参照图2E,图2E为本披露实施例提供的一种流执行方法的示意图。如 图2E所示,本实施例中的流执行方法包括以下步骤:
S101:根据神经网络结构对应的基本操作序列获取第一指令描述符流。
其中,每一神经网络结构对应一个基本操作序列,即通过解析神经网络结 构获取描述神经网络结构运算的数据结构。例如,神经网络结构A的基本输入 大小为260*260,则该神经网络结构A原始输入的图像尺寸为260*260;当神经 网络结构A和神经网络结构B的基本输入大小相同,但是层次数量或者某一层 的类型有所不同,对应的基本操作序列也不同。
第一指令描述符流即用于生成指令的指令描述符序列,包括至少一个指令 描述符。从外部存储空间中获取以网络结构协议形式表示的基本操作序列;根 据基本操作序列获取第一指令描述符流,并将第一指令描述符流存储于内部存 储空间。
本披露对于基本操作序列和指令描述符之间的解析规则不作限定。根据基 本操作序列和指令描述符之间的解析规则获取神经网络结构对应的第一指令描 述符流。
本披露对于第一指令描述符流中每一指令描述符流的预设格式也不作限定。 根据预设格式的网络结构可生成第一指令描述符流对应的指令。上述指令包括 cambricon指令集中的所有指令,例如矩阵运算指令、卷积运算指令、全连接层 正向运算指令、池化运算指令、归一化指令、向量运算指令以及标量运算指令。
S102:对所述第一指令描述符流进行简化,得到第二指令描述符流。
对第一指令描述符流进行简化,即针对第一指令描述符流对神经网络结构 中具体的运算操作进行简化。对于简化第一指令描述符流的具体方法不作限定, 可以去除冗余操作对应的指令描述符和/或合并指令描述符对应的层,从而缩短 了指令描述符流对应的指令流的长度,便于提高运算效率。
可选的,遍历所述第一指令描述符流中的指令描述符,得到多个指令描述 符;查找所述多个指令描述符中的冗余操作;删除所述冗余操作对应的指令描 述符,得到所述第二指令描述符流。对于单个指令描述符来说,每个操作都是 必要的,然而将指令描述符集成为指令描述符流时,可能出现冗余操作,即上 一个指令描述符对应的操作为下一个或下N个指令描述符对应的操作为相反的 操作。当去除其中的冗余操作时,减少了指令描述符的数量,则减少了指令的 数量,从而提高了神经网络处理器的运算速度。
举例来说,假设存在卷积层(Convolution Layer)C和卷积层D,其中,卷 积层C包含的指令描述符为:第一读取指令描述符、第一拆分指令描述符、第 一卷积指令描述符和第一合并指令描述符,卷积层D包含的指令描述符为:第 二读取指令描述符、第二拆分指令描述符、第二卷积指令描述符和第二合并指 令描述符,并且卷积层C和卷积层D中的拆分指令描述符对应的分组参数group 为2。当卷积层C的输出为卷积层D的输入时,判断卷积层C中的第一合并指 令描述符和卷积层D中的第二拆分指令描述符为冗余操作,即卷积层C和卷积 层D简化之后的指令描述符为第一读取指令描述符、第一拆分指令描述符、第 一卷积指令描述符、第二读取指令描述符、第二卷积指令描述符和第二合并指 令描述符,从而简化了第一指令描述符流,缩短了第二指令描述符流对应的指 令流的长度,便于提高运算效率。
可选的,所述遍历所述第一指令描述符流中的指令描述符,得到多个指令 描述符,包括:根据预设优化规则对所述第一指令描述符流中的指令描述符流 进行重排序,得到所述多个指令描述符。
其中,预设优化规则用于对第一指令描述符流中的指令描述符进行重排序。 也就是说,可通过重新排序的方式对指令描述符的解析进行并行处理,从而减 少生成的指令的时间,提高运算效率。
可选的,遍历所述第一指令描述符流中的指令描述符,得到多个指令描述 符对应的多个层;查找所述多个层中的融合层;将根据所述融合层对应的指令 描述符进行融合,得到所述第二指令描述符流。
对于单个层来说,每个层至少包括一个指令描述符,每个指令描述符都是 必要的,而指令描述符流对应神经网络结构中的不同的层,即连续运算的层可 能出现融合层,即上一个层中的指令描述符对应的操作为下一个层或下N个层 中的指令描述符对应的操作为相同或近似的操作。当融合层中的指令描述符进 行融合时,减少了指令描述符的数量,则减少了指令的数量,增大了数据吞服 量,从而提高了神经网络处理器的运算速度。
举例来说,假设存在卷积层,归一化层(Batch NormLayer),激活层(ActiveLayer)。当卷积层的输出为归一化层的输入,归一化层的输出为激活层 的输入时,判断到这三层可以进行融合,则对指令描述符序列进行处理,融合 相关的指令描述符,即用一条指令描述符表示这样的三层网络结构,从而提高 了神经网络处理器的运算速度。
S103:根据所述第二指令描述符流获取指令流。
本披露中,指令流即用于执行的指令序列。通过对第一指令描述符流的简 化消除了第一指令描述符流中多余的指令描述符,从而缩短了指令流。根据第 二指令描述符流获取可被神经网络处理器执行的指令流,根据指令和输入数据 运算得到输出数据,克服了用卷积、池化、激活等细粒度的原子操作组成的完 整神经网络进行运算时产生的冗余的输入、输出或其他操作,从而提高了神经 网络处理器的运算速度。
本披露的另一实施例提供了一种流执行装置,如图2F所示,包括:第一获 取模块201、简化模块202以及第二获取模块203。
第一获取模块201,用于根据神经网络结构对应的基本操作序列获取第一指 令描述符流。
简化模块202,用于对所述第一指令描述符流进行简化,得到第二指令描述 符流。
可选的,如图2G所示,所述简化模块202包括:
遍历单元2021,用于遍历所述第一指令描述符流中的指令描述符,得到多 个指令描述符;
查找单元2022,用于查找所述多个指令描述符中的冗余操作;
处理单元2023,用于删除所述冗余操作对应的指令描述符,得到所述第二 指令描述符流。
可选的,所述遍历单元2021具体用于根据预设优化规则对所述第一指令描 述符流中的指令描述符流进行重排序,得到所述多个指令描述符。
可选的,所述遍历单元2021,还用于遍历所述第一指令描述符流中的指令 描述符,得到多个指令描述符对应的多个层;
所述查找单元2022,还用于查找所述多个层中的融合层;
所述处理单元2023,还用于将根据所述融合层对应的指令描述符进行融合, 得到所述第二指令描述符流。
在本披露实施例中,第二获取模块203,用于根据所述第二指令描述符流获 取指令流。
在图2F所示的流执行装置中,根据N个神经网络结构中每一神经网络结构 对应的基本操作序列获取第一指令描述符流,对第一指令描述符流进行简化得 到第二指令描述符流,通过对第一指令描述符流的简化消除了第一指令描述符 流中多余的指令描述符,则根据第二指令描述符流获取可被神经网络处理器执 行的指令流,根据指令和输入数据运算得到输出数据,克服了用卷积、池化、 激活等细粒度的原子操作组成的完整神经网络进行运算时产生的冗余的输入、 输出或其他操作,从而提高了神经网络处理器的运算速度。
请参见图2H,图2H是本披露实施例提供的一种终端的结构示意图。如图 2H所示,本实施例中的终端可以包括:一个或多个处理器301;一个或多个输 入设备302,一个或多个输出设备303和存储器304。上述处理器301、输入设 备302、输出设备303和存储器304通过总线305连接。存储器302用于存储指 令,处理器301用于执行存储器302存储的指令。其中,处理器301用于:根 据神经网络结构对应的基本操作序列获取第一指令描述符流;对所述第一指令 描述符流进行简化,得到第二指令描述符流;根据所述第二指令描述符流获取指令流。
具体实现中,本披露实施例中所描述的处理器301、输入设备302、输出设 备303可执行本披露实施例提供的流执行方法的第一实施例中所描述的实现方 式,也可执行本披露实施例所描述的流执行装置的实现方式,在此不再赘述。
如图2A所示的计算装置执行卷积运算指令的方法具体可以为:
控制器单元115从寄存处单元112内提取卷积运算指令、卷积运算指令对 应的操作域以及卷积运算指令对应的第一计算拓扑结构(乘法运算器-加法运算 器-加法运算器-激活运算器),控制器单元将该操作域传输至数据访问单元,将 该第一计算拓扑结构传输至互联模块。
数据访问单元提取存储介质内该操作域对应的卷积核w和偏执b,将卷积 核w和偏执b传输至计算单元。
互联模块将乘法运算器与加法运算器连接,将加法运算器与激活运算器连 接。
计算单元的乘法运算器将卷积核w与输入数据Xi执行乘法运算以后得到第 一结果(可包括多个乘法运算的结果),将第一结果输入到加法运算器执行加法 运算得到第二结果,将第二结果和偏执b执行加法运算得到第三结果,将第三 结果输入到激活运算器执行激活运算得到输出结果S,将输出结果S传输至数据 访问单元,数据访问单元将该输出结果S存储至存储介质内。
本披露提供的技术方案通过一个指令即卷积运算指令即实现了卷积的计算, 在卷积计算的中间数据(例如第一结果、第二结果、第三结果)均无需存储或 提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤, 提高卷积的计算效果的优点。
在可选实施例中,所述计算装置包括但不限于处理器、控制器及物理芯片 等器件,例如神经网络芯片等。
基于前述终端设备的结构,参见图2G,是本披露实施例提供一种信息处理 方法的示意流程图,如图2G所示的方法可包括如下实施步骤:
步骤S102、终端设备获取第一信息,所述第一消息为所述终端设备待处理 的信息。
终端设备可在不同应用场景下可处理不同类型的信息,所述信息(具体为 所述第一信息)包括但不限于文本信息、语音信息、影像信息(即图片或视频 信息)、图片信息、视频信息、悬浮窗口等。例如,在语音识别场景中,所述第 一信息即为语音信息。
步骤S104、所述终端设备在所述计算装置中调用运算指令对所述第一信息 进行处理,从而获得第二信息。
步骤S106、所述终端设备输出所述第二信息。
所述终端设备可利用计算装置来处理,具体的在所述计算装置中可调用相 关的运算指令(上述运算指令可以包含本披露中的任意一个指令或任意多个指 令的组合)来对所述第一信息进行处理,从而获得并输出所述第二信息,关于 所述第一信息的处理将在下文中进行详述。所述第二信息与所述第一信息的类 型可以相同,也可不同,例如所述第一信息和所述第二信息均可为图片信息, 或者所述第一信息可为语音信息,所述第二信息可为文本信息等,本披露不做 限定。
下面介绍本披露实施例步骤S102和S104对应涉及的一些具体实施例。
第一种实施方式中:
步骤S102中,终端设备可获取第一信息。所述第一信息的具体获取方式, 本披露不做限定,例如所述第一信息可为其他终端设备或服务器侧发送过来的。 相应地,本披露对所述第一信息的格式并不做限定,即所述第一信息的格式可 以是任意的。
相应地,在步骤S104中,终端设备获取第一信息后,可调用计算装置对所 述第一信息进行处理。具体的,所述计算装置首先可对所述第一信息进行预处 理,将所述第一信息转换为具备预设格式的第一信息。然后所述计算装置调用 运算指令对所述具备预设格式的第一信息进行计算,从而获得第二信息。不同 应用场景中,所述计算装置可调用不同的运算指令对该第一信息进行不同的运 算处理,具体在下文中阐述。
第二种实施方式中:
在步骤S102中,终端设备获取原始信息,关于所述原始信息的具体获取方 式本披露不做限定。接着,所述终端设备可对所述原始信息进行预处理,从而 获得所述第一信息。这里的所述第一信息为具备预设格式的信息,所述预处理 包括但不限于以下中的任一项或多项:数据格式转换处理(如归一化处理、整 型数据转换等)、数据去重处理、数据异常处理、数据缺失填补处理等等。
相应地,在步骤S104中,所述终端设备获取所述第一信息后,可启用所述 计算装置,通过所述计算装置调用相关的运算指令来对所述第一信进行处理, 以获得并输出所述第二信息。关于所述第一信息的具体处理,不同应用场景下, 所述计算装置调用的运算指令可不同,且具体处理方式可不同,具体在下文中 详细阐述。
所述预处理包括但不限于数据格式转换,如本披露所描述的连续数据与离 散数据的互换、幂次转换,具体将神经网络输入数据中非幂次权值数据转换为 幂次权值数据、浮点数据统计,具体为统计获得人工神经网络正向运算中存储 各个类型数据所需的指数位偏移及指数位所需的比特位数、浮点数据转换,具 体为短位数浮点数据类型与长位数浮点数据类型等等,本披露不做限定。
在可选实施例中,所述预设格式包括但不限于浮点数、幂次数、离散数、 整数型、十进制格式、十六进制格式、二级制格式等等,本披露不做限定。
在可选实施例中,所述运算指令包括但不限于以下中的任一项或多项:矩 阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法 指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬 运指令。
即在本披露的实施例中,如图2A所示的计算装置可以执行上述运算指令。 具体的,如图2A所示的计算装置的运算单元可以执行矩阵乘向量指令、向量乘 矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、 矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令中一个或任意组 合的运算。
下面基于不同应用场景分别对本披露进行详细阐述。
第一,以场景识别为例。终端设备可获取环境图像信息(即第一信息),所 述环境照片信息可为用户当前所处环境的照片信息、或为其他待处理/识别的照 片信息。可选地,所述终端设备可在所述计算装置内或所述计算装置外对所述 环境图像信息进行格式转换,将其转换为具备设定格式的环境影像信息。环境 影像信息可用RGB、CMYK、HSB等颜色模式表示,以工业界的一种颜色标准 RGB为例,所述备设定格式的环境影像信息可表示为RGB三维矩阵。其中, RGB三维矩阵仅为示例并不构成限定,所述环境影像信息可转换为不同格式的 矩阵,且所述矩阵具体可以为m*n矩阵、1*n矩阵或m*1矩阵,其中m、n为 大于等于2的整数。当矩阵为1*n矩阵或m*1矩阵时,也可以称为向量,下述 矩阵均可以为上述三种类型矩阵中的任意一种,下面不在赘述。
相应地,所述终端设备利用计算装置(如神经网络芯片或如图2A所示的计 算装置)调用场景识别算法对所述环境影像信息(具体为m*n的矩阵,m,n 不能同时为1)进行识别,计算出对应的第二信息,所述第二信息可为所述环境 影像信息对应所归属的目标场景分类,或者为所述环境影像信息对应在预设场 景分类中的量化数值,所述量化数值用于表征所述环境影像信息与所述预设场 景分类的相似度。所述第二信息用于指示所述环境影像信息对应归属的目标场 景分类,所述目标场景分类属于所述预设场景分类。所述预设场景分类可为用 户侧或终端设备侧自主设置的,所述预设场景分类包括但不限于室内环境、室 外环境、沙滩、海洋等等。
所述场景识别算法是由至少一个运算指令构成的,所述场景识别算法用于 对所述环境影像信息进行特征提取,识别所述环境影像信息对应场景类型。所 述运算指令包括但不限于:归一化指令、非线性激活指令、池化指令、全连接 层指令等,所述运算指令的具体实现方式将在下文中进行详细阐述。
具体的,如图2A所示的计算装置的控制器单元可以从寄存器单元内调用归 一化指令、非线性激活指令、池化指令、全连接层指令的一个或任意组合发送 至运算单元实现场景识别算法得到第二信息。需要说明的是,如果上述场景识 别算法需要执行多个运算指令时,其对应的计算拓扑结构也可以由控制器单元 从寄存器单元来调取给互联模块,互联模块控制运算单元内的计算器来实现上 述计算拓扑结构。
第二,以物体识别为例。与前述第一实施例类似,终端设备获取图像信息 (即第一信息),这里的图像信息可为具备预设格式的图像信息。所述图像信息 包括有一个或多个物体,例如包括有一盒牛奶和一个水杯的图像信息。同样地, 终端设备可以多维矩阵的形式来表示该图像信息。所述终端设备可利用计算装 置内控制单元调用及存储器单元的物体识别算法(具体为一些运算指令)发送 至运算单元对所述图像信息进行计算,得到第二信息,所述第二信息用于表征 所述图像信息所包括的物体的信息,所述信息可为位置信息、类别信息(如物 体名称、物体类型)等。所述第二信息可为多维矩阵,其可具体表示图像信息 中各物体的坐标位置、各物体的类型或名称等信息。
第三,以语音识别为例。终端设备获取用户输入的语音信息(即第一信息)。 所述语音信息可为在所述计算装置内或计算装置外被处理成具备预设格式的语 音信息。同样地,所述语音信息可被终端设备处理表示为多维矩阵。所述终端 设备可利用计算装置来对所述语音信息进行语音识别处理。具体的,所述计算 装置的控制器单元可调用寄存器单元内存储的语音识别算法(具体为一些运算 指令)发送给运算单元对所述语音信息进行语音识别处理,得到第二信息。这 里的第二信息可为文字/文本信息。所述语音识别算法是由一个或多个运算指令 组成的,所述运算指令包括但不限于标量运算指令、矩阵向量运算指令、排序 指令、卷积层指令、全连接层指令、池化层指令以及批处理规范指令的一个或 任意组合。
第四,以影像画风转换为例。终端设备获取待转风格的影像信息(可为图 片信息或视频信息,即第一信息)。进一步地,终端设备利用计算装置对影像信 息进行风格转换。同样地,在具体处理过程中,终端设备可将影像信息表示为 多维矩阵,利用计算装置的控制器单元调用寄存器单元的影像风格转换算法发 送至运算单元,运算单元将所述影像信息的风格转换为目标风格,并输出具备 目标风格的影像信息(即第二信息)。所述影像风格转换算法可由一个或多个运 算指令构成,所述运算指令可以为本披露中任意一个运算指令或任意组合,这 里不再赘述。
第五,以轮廓检测为例。终端设备获取图像信息(即第一信息)。所述图像 信息可为在所述计算装置内或计算装置外被处理成具备预设格式的图像信息。 同样地,所述图像信息可被终端设备处理表示为多维矩阵。所述终端设备可利 用计算装置来对所述图像信息进行轮廓检测处理。具体的,所述计算装置的控 制器单元可调用寄存器单元的轮廓检测算法(具体为一些运算指令)至运算单 元对所述图像信息进行轮廓检测和识别处理,得到第二信息。所述第二信息用 于表征所述图像信息中各物体所对应的像素点,即这里的轮廓检测是指对图像 信息中各物体的轮廓(像素点)进行区分,所述第二信息即为轮廓区分结果信 息,各物体各自所包括的轮廓(即多个像素点)。所述轮廓检测算法可由一个或 多个运算指令构成,所述运算指令可以为本披露中任意一个运算指令或任意组 合,这里不再赘述。
需要说明的是,上述场景识别算法、物体识别算法、语音识别算法、影像 画风转换算法及轮廓检测算法为用于执行不同功能操作的算法。其组成各算法 的运算指令可以相同,也可不同,本披露不做限定。
上述仅以五种应用场景对本披露实施例进行阐述,但本披露包括但不限于 基于计算装置对上述五种应用场景的处理,例如还可包括超分辨率影像重建(由 低分辨率影像转换为高分辨率影像)、影像美化(改变影像风格、色彩等)、语 言翻译(语音之间的相互转换,如中文翻译为英文)、商品/广告推荐(如网站商 品信息的推荐)、物体检测(检测物体的位置)、聊天机器人(对话沟通)等应 用场景的处理等,本披露实施例不做限定。
需要说明的,基于图2A示出的计算装置中,组成各种算法的运算指令可不 同,也可相同。当组成算法的运算指令有多个时,可通过计算装置的互联模块 来识别并获知构成该算法所需调用运算单元中的哪些计算器、以及计算器调用 个数、调用顺序等,也即是所述计算装置的互联模块将根据每个算法各自对应 的计算拓扑结构,来调用所述运算单元完成该算法对应的计算功能,本披露不 做限定。
在可选实施例中,所述终端设备可以包括用户设备(User Equipment,UE)、 服务器、智能手机(如Android手机、IOS手机等)、个人电脑、掌上电脑、移 动互联网设备(MID,Mobile Internet Devices)或穿戴式智能设备等互联网设备, 本披露实施例不作限定。
通过实施本披露实施例,能够利用计算装置进行各种信息的处理,提升信 息处理效率。
基于前述实施,下面具体介绍不同应用场景下基于所述计算装置的信息处 理方法的一些具体实施例。
以物体检测的应用场景为例,请参见图3,是本披露实施例提供的一种基于 所述计算装置的信息处理方法。如图3所示的方法包括如下实施步骤:
步骤S302、获取物体影像,所述物体影像包括待识别的至少一个物体。
本披露中,所述物体影像包括但不限于一个或多个关键特征的图片或视频, 所述关键特征为待识别物体的特征,例如物体名称、物体形状等等。
在实际应用中,所述物体影像可支持或具备不同的数据格式,例如十进制、 或八机制等等,也可表示为是由组成所述物体影像中的像素点所转换而得的多 维矩阵,本披露不做限定。
可选实施例中,所述物体影像可以为预处理后的影像数据,也可以是未处 理输入的原始数据。当所述物体影像为原始数据时,终端设备还可进一步对所 述物体影像进行预处理,如归一化处理、数据格式转换处理等等,具体可利用 前述图2A所示的计算装置对其进行预处理,以得到相应输入格式的物体影像, 例如可处理为多维矩阵,以便步骤S304对该处理后的物体影像进行特征提取。
可选实施例中,所述物体影像的预处理可以在所述终端设备的计算装置内 部或者外部处理的,本披露不做限定。
步骤S304、利用计算装置中的运算指令对所述物体影像进行特征提取,得 到中间数据。
步骤S306、利用所述计算装置对所述中间数据进行计算,从而获得所述物 体影像中待识别的物体的位置。可选地,还可获得所述待识别的物体的分类。
步骤S308、输出所述待识别的物体的位置。
下面介绍步骤S304至步骤S308涉及的一些具体实施例。
具体的,在步骤S304中,计算装置在接收到所述物体影像(具体可为多维 矩阵数据)后,可调用相应地第一运算指令,即与物体检测算法对应网络计算 拓扑结构相关的运算指令,来对所述物体影像进行特征提取,以得到中间数据。 相应地,所述中间数据也可为多维的矩阵数据。
关于步骤S304的具体实施方式有多种,下面简单介绍其中涉及的三种。
第一种实施方式中,所述终端设备可调用该实施例中的相关运算指令对所 述物体影像特征进行特征提取,以获得中间数据。所述运算指令包括但不限于 神经网络运算指令、矩阵/向量运算指令等等,上述运算指令可以为本披露中任 意一种运算指令或运算指令的任意组合。
第二种实施方式中,计算装置可调用一个或多个运算指令对所述物体影像 进行特征提取,以获得中间数据。所述多个运算指令包括但不限于卷积指令、 归一化指令,非线性激活指令,池化指令等,且各运算指令的具体调用顺序、 实施步骤是可以任意的,不做限定。下面示例性地给出一种运算指令的调用方 式,以提取物体影像的特征,具体如图4所示。
如图4可知,计算装置可顺序调用卷积运算指令、归一化指令、非线性激 活指令以及池化指令来依次对获取的物体影像进行处理,从而实现所述物体影 像的特征提取,获得中间数据。
具体的,控制器单元可以从寄存器单元中提取卷积运算指令发送至运算单 元对获取的物体影响进行处理,然后,控制器单元可以从寄存器单元中提取归 一化指令发送至运算单元对获取的物体影响进行处理,然后,控制器单元可以 从寄存器单元中提取非线性激活指令发送至运算单元对获取的物体影响进行处 理,然后,控制器单元可以从寄存器单元中提取池化指令发送至运算单元对获 取的物体影像进行处理。
第三种实施方式中,如上图4可知第二种实施方式中各运算指令的执行顺 序是顺序的,一条线程(流水线)操作的,但本披露不做限定。本披露中关于 特征提取的实现操作可以是分线程(即分流)和合并的。所述分线程的实现方 式包括但不限于数据的拷贝、数据的分组等方式,所述分线程合并的实现方式 包括但不限于数据的相加减、数据的相乘、数据的组合摆放等方式。同样地, 其中涉及的操作步骤及顺序也是可以有任意多种组合的。引用图4的例子,参 见图5示出一种运算指令调用的示意图。
如图5可知,计算装置可同时进行两个线程的数据操作,且每个线程中所 需使用的运算指令可以相同,也可不同,且各运算指令的调用顺序及调用数量 也不做限定。如图5,其中一个线程同时会执行两次图4的运算指令;另一线程 会执行一次图4的运算指令。
需要说明的是,本披露涉及多线程的数据操作时,其特征提取后的中间数 据可由各线程处理后的结果数据汇聚而成。即所述中间数据可包括但不限于多 个相同维度的矩阵数据,或者多个不同维度的矩阵数据,本披露不做限定。
可选地,上述仅示出步骤S304的三个实施方式,还可有其他具体实施方式 例如采用HOG(方向梯度直方图)、SIFT特征提取算法等算法实现图像特征提 取等等,这里不做详述。
相应地步骤S306中,计算装置可对所述中间数据进行分析,获知到所述物 体影像中各个待识别的物体的位置以及分类等等。
具体的,计算装置可调用第二运算指令对所述中间数据进行处理,类似于 步骤S304的处理过程,最终获得所述物体影像中各个待识别的物体的位置信息、 类别(分类)信息、以及该物体影像中各位置处可能存在有物体的评估分值等 等信息,本披露不做限定。
所述位置或位置信息可利用最小包围矩阵的位置来表示,例如,以最小包 围矩阵的左上角像素坐标和宽度高度表示,以最小包围矩阵的中心坐标和宽度 高度表示,以最小包围矩阵的左上角和右下角像素坐标表示等等。举例来说, 如果物体影像中包含有一盒牛奶的图像,则所述最小包围矩阵即为包括牛奶影 像在内的最小框形成的矩阵,该矩阵可被描述为以牛奶影像的中心坐标、高度 和宽度表示。
在可选实施例中,计算装置对所述中间数据处理后可得到结果数据,所述 结果数据包括有上述各物体的位置信息、类别(分类)信息、以及该物体影像 中各位置处可能存在有物体的评估分值等等信息。参见前述实施例中的相关描 述可知,所述结果数据可包括但不限于一个或多个多维的矩阵数据,该多维的 矩阵数据可以相同,也可不同,不做限定。
当计算得到多个多维的矩阵数据时,计算装置还可调用相关运算指令(如 全连接层运算指令)对其进行计算,从而得到一个多维的矩阵数据,此时得到 的矩阵数据还是包括上述各物体的位置信息、类别(分类)信息、以及该物体 影像中各位置处可能存在有物体的评估分值等等信息。
在可选实施例中,计算装置还可调用图4实施例中指令集中的相关指令(如 向量运算指令)实现非极大值抑制NMS,以对预测的最小包围矩阵进行筛选, 从而筛选出可能存在有物体的最小包围矩阵,本披露不做限定。
所述第一运算指令和所述第二运算指令可为相同的或者不同的运算指令, 所述运算指令包括但不限于标量运算指令、矩阵向量运算指令、排序指令、卷 积层指令、全连接层指令、池化层指令以及批处理规范指令等,上述第一运算 指令以及第二运算指令也可以为本披露其他的任意运算指令或任意运算指令的 组合。
通过实施本披露实施例,能够准确、快速、全面地对物体影像中待识别的 物体进行检测,相比于现有技术利用通用处理器检测,功耗更低,速度更快。
以超分辨率为例,请参见图3A是本披露实施例提供的一种基于所述计算装 置的信息处理方法。如图3A所示的方法包括如下实施步骤:
步骤S3A2、获取待处理的第一影像,所述第一影像具备第一等级的分辨率。
步骤S3A4、利用计算装置中的运算指令对所述第一影像进行分辨率转换处 理,以得到第二影像,其中,所述第二影像具备第二等级的分辨率,所述第一 等级低于所述第二等级。
步骤S3A6、输出所述第二影像。
下面介绍本披露中涉及的一些具体实施例和可选实施例。
步骤S3A2中,所述第一影像可以是图像,也可是视频,且所述第一影像的 数量并不做限定。即输入的第一影像可以是一个或多个图片,一段或者多段视 频,本披露不限定。
实际应用中,所述第一影像可以支持/具备不同的数据格式,例如十进制、 或八机制等等,也可表示为是由组成所述第一影像中的像素点所转换而得的多 维矩阵,本披露不做限定。
可选实施例中,所述第一影像可以为预处理后的影像数据,也可以是未处 理输入的原始数据。当所述物体影像为原始数据时,终端设备还可进一步对所 述物体影像进行预处理,如归一化处理、数据格式转换处理等等,具体可利用 前述图2A所示的计算装置对其进行预处理,以得到相应输入格式的物体影像, 例如可处理为多维矩阵,以便步骤S3A4对该处理后的物体影像进行分辨率转换 处理。
可选实施例中,所述第一影像的预处理可以在所述终端设备的计算装置内 部或者外部处理的,本披露不做限定。
步骤S3A4中,计算装置接收到所述第一影像(具体可为多维矩阵数据)后, 可调用与该超分辨率算法对应的网络计算拓扑结构相关的运输指令,对所述第 一影像进行分辨率转换处理,从而获得具备第二优先级的第二影像。其具体实 现方式可参见前述图3所述实施例中的相关描述,这里不再赘述。
在可选实施例中,所述分辨率转换处理可由多个处理模块分别执行的,每 个处理模块的处理结果(即输出的多维矩阵)可以合并,也可不做合并;且所 述多个处理结果的形式并不做限定,例如可以是多个不同维度的多维矩阵,或 者也可为多个相同维度不同尺寸大小的多维矩阵等,本披露不限定。
步骤S3A6中,终端设备可将所述分辨率处理后的处理结果直接输出;或者, 还可对所述分辨率处理后的处理结果进行诸如平移,伸缩变化,以及非线性运 算等变换处理,使得将计算装置(人工神经网络芯片)处理后的处理结果对应 映射为影像中的像素点,从而得到所述第二影像。
通过实施本披露实施例,能够提升/改善影像的分辨率,相比于现有技术利 用通用处理器加软件实现的方式,功耗更低,速度更快。
以图像美化为例,请参见图3B是本披露实施例提供的一种基于所述计算装 置的信息处理方法。如图3B所示的方法包括如下实施步骤:
步骤S3B2、获取待处理的第一影像。关于所述第一影像的相关阐述可参见 前述图3A所述实施例中的相关阐述,这里不再赘述。
步骤S3B4、利用计算装置中的运算指令对所述第一影像进行美化处理,以 得到第二影像。
步骤S3B6、输出所述第二影像。
下面介绍本披露中涉及的一些具体实施例和可选实施例。
步骤S3B2中,所述第一影像还可携带有美化选项。该美化选项可以是用户 侧或设备侧输入的,例如通过应用程序输入的等,所述美化选项包括但不限于: 美白、祛痘、瘦脸、瘦身、亮度、对比度等用于图像处理或效果提升的功能选 项。
关于步骤S3B2-步骤S3B6的具体实施方式可参见前述图3和图3A所述实 施例中的相关阐述,这里不再赘述。
在可选实施例中,利用计算装置(具体为人工神经网络)对第一影像进行 美化处理时,可使用一套或多套网络模型;当使用一套网络模型时,该网络模 型的输入数据(即第一影像)需包含用于标识美化选项或美化选项类型的参数; 当使用多套网络模型时,可为不同美化影像的美化效果提出对应的网络模型, 利用该网络模型来实现影像的美化处理。
通过实施本披露实施例,能够实现影像的美化,相比于现有技术利用通用 处理器加软件实现的方式,功耗更低,速度更快。
以语言翻译为例,请参见图3C,是本披露实施例提供的一种基于所述计算 装置的信息处理方法。如图3C所示的方法包括如下实施步骤:
步骤S402、获取待翻译的语言信息。
本披露中,所述待翻译的语言信息可为待翻译的自然语言,本披露并不限 定所述自然语言的形式,例如所述自然语言可以短信、语音、字幕、图片等形 式体现等等。
步骤S404、利用计算装置中的运算指令对所述语言信息进行翻译处理,得 到目标语言。
步骤S406、输出所述目标语言。
下面介绍步骤S404涉及的一些具体实施例。应理解的,步骤S404属于终 端设备对待翻译的语言信息进行的中间处理过程。
具体的,计算装置可利用编码器对S402语言信息进行编码,得到固定长度 的向量。然后,将编码后的固定长度的向量输入至解码器,解码产生出目标翻 译语言词库中,每个单词的概率。最后,将解码后的信息输入至语言模型进行 分析,从而得到并输出翻译后的目标语言,该目标语言也可用文字形式表示。 下面分别进行详细阐述。
首先,计算装置可将待翻译的语言信息首先通过编码器转换为固定长度的 向量。该编码器可以是由卷积层、全连接层、池化层、批处理规范层(batch norm 层)等组成的神经网络模型。所述神经网络模型包括但不限于以下中的任一项 或多项的组合:深度神经网络DNN、卷积神经网络CNN、循环神经网络RNN、 时间递归神经网络LSTM等等。具体实现中,所述终端设备可使用如图2A所示 计算装置,如人工神经网络芯片中的计算单元执行相应的卷积层指令、全连接 层指令、池化层指令、batch norm层指令完成相应的神经网络算法。
其次,将编码器产生的固定长度的向量进入解码器解码产生目的翻译语言 词库中,每个单词的概率。该编码器可以是由卷积层、全连接层、池化层、batch norm层等组成的神经网络模型。关于所述神经网络模型这里不再赘述。
可选实施例中,在神经网络模型中加入attention机制(或attention模型) 能对生僻字进行单独编码,以提升语言翻译的精准性。下面进行详细阐述。 Attention模型能够支持实现某些生僻字的翻译对应关系。具体的,该实现可以 通过全连接层神经网络、回归softmax层神经网络、矩阵乘法、矩阵加法完成。
在一具体实施例中,将上述编码器编码之后得到的固定长度的向量与预先 获得的位置信息矩阵进行第一指定运算,例如做矩阵乘法等等。然后再通过训 练好的全连接层神经网络以及softmax层神经网络后与之前的神经网络进行第 二指定运算,例如进行矩阵加法,从而获得结果矩阵(即翻译后的由多个单词 的概率组成的概率矩阵)。
在又一具体实施例中,将上述具体实施例中的一系列运算操作,定义为attention模型;相应地,可以多个attention按照以下排列组合方式中的任一种或 多种的组合形成新的attention模型:相互串连、并联、跳跃式串连等排列组合 方式。
在又一具体实施例中,在上述第一种具体实施例的基础上,通过改变每个 运算操作的先后顺序,从而能够组合成新的attention模型。更具体的,可使用 人工神经网络芯片(计算装置)中的计算单元执行相应的卷积层指令、池化层 指令、全连接层指令、batchnorm指令、矩阵乘法指令、矩阵加法指令等实现 attentio模型。
最后,将解码器解码后得到的各单词的概率输入至语言模型,进行数据处 理(如迭代处理)等等,生成结果翻译后的目标语言。其中,语言模型可预先 存储有,例如A*算法等排序算法,以结合一起用于生成翻译结果(即目标语言)。 具体的,通过语言模型可迭代产生出所有待选文字的分数,在每一次迭代中产 生所有待选文字新的分数,由此迭代完成后会生成一个时间序列上的所有文字 的搜索空间,在该空间中应用解码器算法的到最终唯一的语言识别输出结果。 其中,该解码器算法可以是由卷积层、全连接层、池化层、批处理规范层(batch norm层)等组成的神经网络模型。所述神经网络模型包括但不限于以下中的任 一项或多项的组合:深度神经网络DNN、卷积神经网络CNN、循环神经网络 RNN、时间递归神经网络LSTM等等。具体实现中,所述终端设备可使用计算 装置,如人工神经网络芯片中的计算单元执行相应的卷积层指令、全连接层指 令、池化层指令、batch norm层指令完成相应的神经网络算法,解码器的作用为 讲固定长度的向量与各个单词的概率数字相关连。
在实际应用中,所述语言模型包括但不限于WFST或者n-gram等算法模型, 用于对各个单词的概率进行统计,以输出相应地翻译结果。具体实现中,本披 露中可使用计算装置,如人工神经网络芯片中的计算单元执行相应的向量乘法 指令、向量加法指令、标量数字逻辑指令等功能指令中的任一项或多项的组合, 以配合完成WFST、N-gram、束搜索等算法的功能实现。
在可选实施例中,步骤S402获取的待翻译的语言信息可被存储在存储介质 中。计算装置在实现上述步骤S404过程中,会利用调用存储介质中的相关运算 指令对所述语言信息执行相应地的运算。
下面介绍本披露中语言翻译涉及的一些具体实施方式。
步骤1,输入数据经预处理模块或者直接传入存储单元;
步骤2,DMA将其分批传入相应的片上缓存(即指令缓存,输入神经元缓 存,权值缓存)中;
步骤3,控制单元从指令缓存中读取指令,将其译码后传入运算单元;
步骤4,根据指令,运算单元执行相应的运算:在神经网络的各个层中,运 算主要分为两步:步骤4.1,使用人工神经网络芯片中的矩阵乘法模块或者向量 乘法模块人工神经网络芯片指令完成卷积层卷积层(a3)和全连接层全连接层(a4) 的运算;步骤4.2,对步骤4.1得到的结果执行激活函数运算,得到输出神经元, 并将其传入输出神经元缓存中。在非神经网络方法中,运算主要分为一步:步 骤4.3,使用人工神经网络芯片中的标量运算指令、矩阵向量运算指令、排序指 令等完成束搜索等非神经网络算法。
步骤5,重复步骤2到步骤4,直到所有数据运算完毕,即得到功能需求的 最终结果。其中所述最终结果由神经网络最后一层的输出神经元得到,从运算 单元输出到输出神经元缓存中,然后经DMA返回存储单元。
在实际应用中,机器人聊天与语言翻译类似,均属于深度学习在自然语言 处理中的应用,其算法过程、执行过程均较为相似。下面示例性给出机器人聊 天的具体实施方式。
以聊天机器人为例,输入:输入数据为待回复的自然语言,该自然语言可 以是文字形式或语音形式等。
优选地,还包括中间处理过程,具体如下。
中间处理:中间处理过程优选的包括编码器或解码器或语言模型或attention 模型,优选的,这些模型可以由DNN或CNN或LSTM或RNN等神经网络方 法实现或者WFST、N-gram等非传统方法实现。
优选的,输入的待回复的语言文字首先通过编码器转换为固定长度的向量。 优选的,该编码器可以是由卷积层、全连接层、池化层、batch norm层等组成的 DNN或者CNN或者LSTM或者RNN,更具体的,本装置使用所述人工神经网 络芯片中的计算单元执行相应的卷积层指令、全连接层指令、池化层指令、batch norm层指令完成相应的神经网络算法。
优选的,编码器产生的固定长度的向量进入解码器解码产生目的回复语言 词库中,每个单词的概率。优选的,该编码器可以是由卷积层、全连接层、池 化层、batch norm层等组成的DNN或者CNN或者LSTM或者RNN,更具体的, 本装置使用所述人工神经网络芯片中的计算单元执行相应的卷积层指令、全连 接层指令、池化层指令、batch norm层指令完成相应的神经网络算法。
优选的,attention模型对于较少出现的聊天语句进行单独编码。attention模 型实现具体某些的较少出现聊天语句的对应关系,具体的,该实现可以通过全 连接层神经网络、softmax层神经网络、矩阵乘法、矩阵加法完成。实施例之一, 编码器编码之后的固定长度向量与预先获得的位置信息矩阵做矩阵乘法,之后 通过训练好的全连接层神经网络,在经过softmax层神经网络后与之前的神经网 络计算结果矩阵加法。实施例之二,将上述系列操作定义为attention,可以多个 attention相互串连、并联、跳跃式串连等排列组合方式为新的attention。实施例 之三,在实施例一的基础上改变每个操作的先后顺序组成新的attention模型。 更具体的,本装置使用人工神经网络芯片中的计算单元执行相应的卷积层指令、 池化层指令、全连接层指令、batch norm指令、矩阵乘法指令、矩阵加法指令、向量四则运算指令等实现attentio模型。
优选的,语言模型存储先验知识与束搜索、A*算法等排序算法结合生成目 标回复结果。通过语言模型迭代的产生所有待选文字的分数,在每一次迭代中 产生所有待选文字新的分数,由此迭代完成后会生成一个时间序列上的所有文 字的搜索空间,在该空间中应用解码器算法的到最终唯一的语音识别输出结果。 具体的,可以由WFST或者n-gram算法实现语言模型,本装置使用人工神经网 络芯片中的计算单元执行相应的向量乘法指令、向量加法指令、标量数字逻辑 指令完成WFST、N-gram、束搜索的算法。
输出:回复的自然语言,用文字等方式输出出来。
通过实施本披露实施例,能够准确、快速、全面地对待翻译的语言信息进 行翻译,相比于现有技术利用通用处理器检测,功耗更低,速度更快。
以广告推荐为例,请参见图3D,是本披露实施例提供的一种基于所述计算 装置的信息处理方法。该计算装置的结构如图2A所示,如图3D所示的运算指 令可以由控制器单元从寄存器单元中提取发送至运算单元,由运算单元执行该 运算指令的运算,如上述运算需要执行多层运算,则由控制器单元从寄存器单 元中提取运算对应的计算拓扑结构,将该计算拓扑结构发送至互联模块,由互 联模块控制运算单元内的计算器的连接关系以实现上述计算拓扑结构的运算。 如图5B所示的方法包括如下实施步骤:
步骤S502、获取用户数据,所述用户数据用于表征用户对商品感兴趣的程 度。
本披露中,所述用户数据包括但不限于用户的历史数据,例如包括购买商 品记录以及浏览商品记录等;可选地,还可包括用户的个人信息数据,例如包 括用户的年龄、地域、受教育情况等信息;可选地,还可包括用户所在的群体 数据,例如包括群体中的地域、浏览记录等数据,优选的还可包括时间信息等, 本披露不做限定。
步骤S504、利用计算装置中的运算指令对所述用户数据进行深度学习处理, 得到推荐商品信息。
步骤S506、输出所述推荐商品信息。
其中,步骤S504为终端设备利用计算装置对所述用户数据进行特征提取以 获知用户感兴趣的推荐商品信息的中间处理过程,下面进行具体阐述。
具体的,计算装置可利用深度神经网络的特征提取功能,将用户数据中的 特征提取出来,并在此基础上对每样商品进行打分。所述神经网络层可包括但 不限于卷积层,全连接层,池化层,非线性激活层,规则化层等。
下面以全连接层为例,介绍在该层中数据处理的实施例。具体地,全连接 层可接收N个长度为L的向量作为输入数据,其中N为批处理的样本数量,使 用输出数据outnum个长度为L的向量作为权值进行计算。对于N个批处理样本 中的每一个样本,计算过程是使用每个权值向量与在输入数据向量进行内积计 算。在N>1的情况下,对每个样本进行同样的计算处理。更具体的,本披露使 用人工神经网络芯片(计算装置)中的计算装置执行相应的全连接层指令完成 相应的神经网络算法。
可选实施例中,用户数据与商品数据嵌入连接,这一过程可使用全连接层 (MLP)、卷积神经网络(CONV)、受限玻尔兹曼机(RBM)等神经网络层。 嵌入连接之后的数据经过全连接层以及激活层,然后再与未嵌入连接之前的数 据做矩阵乘法操作(Cross Product)。更具体的,本披露使用计算装置(如人工 神经网络芯片)中的计算单元执行相应的全连接层指令、卷积指令、矩阵乘法 指令完成相应算法。
可选实施例中,对于稀疏用户数据,例如某些用户信息收集不全的情况, 并且由于用户信息包含地域等等各种信息,用户信息维度较高,需要将高维数 据映射到低维数据。同样可采用神经网络方法完成对稀疏用户数据的特征提取 到低维数据的过程。如图5A示出稀疏用户数据的示意图。
由图5A可知,存在不同等级用户,如图示给出A、B、C等用户所在群体 对不同的电影进行打分的数据,但数据存在较多缺失信息(用0表示),针对如 图5A的稀疏用户信息,本披露使用如图5B所示的神经网络进行特征提取。如 图5B,该神经网络包括全连接层、激活层(CTR)。更具体的,本披露使用所述 人工神经网络芯片中的计算单元执行相应的全连接层指令、激活指令完成相应 的神经网络算法。
具体的,在推荐系统的最上层,经过激活层、softmax操作生成商品目录中 每一件商品的分数,对该分数排序,将分数最高的n件商品输出给用户,即得 到的所述推荐商品信息为这n件商品。更具体的,本披露使用计算装置(人工 神经网络芯片)中的运算单元执行相应的激活指令、排序指令、标量比较指令 完成这些操作。
通过实施本披露实施例,能够准确、快速、全面地对用户数据进行特征提 取以推荐用户相关的商品信息,相比于现有技术利用通用处理器分析推荐,功 耗更低,速度更快。
以影像画风(即影像风格)转换为例,请参见图3E,是本披露实施例提供 的一种基于所述计算装置的信息处理方法。如图3E所示的方法包括如下实施步 骤:
步骤S802、获取第一影像和第二影像,其中所述第一影像为待转画风的影 像,所述第二影像为待转画风的目标风格的参考影像。
本披露中,所述第一影像可为待转画风的影像,或者为待转风格的影像。 所述第二影像为需将所述第一影像转换至某个目标风格的参考影像。所述第二 影像可为用户侧或终端设备侧自定义指定/配置的,例如指定山水风格、田园风 格的参考影像为第二影像等等。关于所述第一影像和所述第二影像的格式,本 披露并不做限定。例如,所述第一影像或第二影像可包括但不限于一段视频或 一组图片。其具体输入至所述终端设备中的格式,本披露也不做限定,如支持 十进制、十六进制等等格式。
在可选实施例中,所述终端设备支持输入的所述第一影像或第二影像的格 式为矩阵格式。即对于输入的一张待转风格的图片而言,可将其转换为一个矩 阵,其尺寸/维度为C*H*W。其中,C表示图片的颜色通道数,例如对于灰度图 片而言,C=1;对于彩色图片而言,C=3等。H为图片的高度,W为图片的宽度, 它们各自的单位都可为像素点。
应理解的,当所述待转画风的影像(即第一影像)为一段视频时,则可以 帧的方式对该视频进行抽取,从而得到每一帧的图像。然后,再将一帧图像作 为一张图片进行后续的画风转换处理。假设待转换风格的图片或者视频中的一 帧图像为X,目标风格的参考图像为Y。所述目标风格的参考图像Y可为用户 侧或所述终端设备侧自主设置的,本披露不做限定。
步骤S804、利用计算装置中的第一运算指令对所述第二影像进行特征提取, 得到特征数据。
步骤S806、利用计算装置中的第二运算指令对所述特征数据和所述第一影 像进行风格转换处理,从而获得画风转换后的目标影像。
步骤S808、输出所述目标影像。
步骤S804和S806为计算装置对待转画风的影像信息进行目标风格的转换 处理中间处理过程,引用S802的例子,下面进行详细阐述。
计算装置可使用多个神经网络层对参考图像Y(具体可为一个C*H*W的矩 阵)进行计算,从而获得参考图像Y的特征。然后,利用该特征和待渲染图像 X(步骤S802输入的所述第一影像或所述第一影像中的一帧图像)进行相应的 矩阵运算,从而得到渲染后的图像。最后,对于视频流数据而言,可将渲染后 的图像使用图像处理技术(例如motivationestimation技术)来预测新的图像, 并进行插帧处理后,可最终获得/生成所述目标影像。
具体实现中,计算装置可利用神经网络模型对参考图像Y进行特征提取, 所述神经网络模型包括但不限于Alexnet、VGG、ResNet等神经网络模型,这些 神经网络层可以包括卷积层,全连接层,池化层,非线性激活层,规则化层等。
下面以卷积层和全连接层为例,对帧图像数据的处理进行具体阐述。
第一,卷积层可接收一个维度为N*C*H*W的四维数据块,即四维的矩阵 数据作为输入数据。其中,N为批处理的样本数量,使用outnum个维度为 C*Kh*Kw的三维卷积核作为权值进行计算。对于N个批处理样本中的每一个样 本,计算过程是使用每个卷积核在输入数据的H和W维度进行滑动,并且在滑 动到的每一处位置使用每个卷积核与其对应的位置的输入数据进行内积计算。 将输入数据按照卷积核滑动的每一个位置对应的C*Kh*Kw个数据抽取出来重新 排列,假设共有Kernum个卷积核滑动位置,则卷积层对一个批处理样本的计算。 在N>1的情况下,对每个样本进行同样的计算处理。更具体地,本披露使用计 算装置,如人工神经网络芯片中的计算单元执行相应的卷积层指令完成相应的 神经网络算法。
第二,全连接层可接收N个长度为L的向量作为输入数据,其中N为批处 理的样本数量,使用outnum个长度为L的向量作为权值进行计算。对于N个批 处理样本中的每一个样本,计算过程是使用每个权值向量与在输入数据向量进 行内积计算。在N>1的情况下,对每个样本进行同样的计算处理。本披露使用 计算装置(人工神经网络芯片)中的运算单元执行相应的全连接层指令完成相 应的神经网络算法。
在本披露的一个具体实施例中,使用上述神经网络层(具体包括卷积层和 全连接层)可组成VGG神经网络,假设生成具备目标风格的目标图像Z、待转 换图像X、目标风格图像Y,可得到如下公式:
其中,该公式反应了具备目标风格的目标图像Z与原来待转图像X的差异。 F、P分别为需要转化的图像X和Z经过VGG时的中间层,其定义的Gram矩 阵如下:
其中,i和j为某一层不同的特征映射(feature map)。利用上述公式和Gram 矩阵,可得到如下的纹理定义公式:
其中,该公式反映了目标图像Z与风格图像Y的差异,G和A分别为图像 Y和目标图像Z的Gram矩阵。其中,目标函数为使得损失函数 L=aLcontent+bLtexture最小。具体实现,可通过对目标图像Z求导数,并更新Z 的值,即为输出结果信息(目标风格的目标影像)。更具体地,本披露使用计算 装置(人工神经网络芯片)中的计算单元执行相应的矩阵乘法指令、矩阵加法 指令、标量逻辑算数运算指令完成上述公式的运算。
优选的,本披露使用图像处理技术可加速视频流转画风算法的实现。对于 视频流在上述过程产生转画风图像帧之后,运用运动估计算法进行运动补偿产 生新的目标图像Z的初始状态而不是一般的目标图像Z时使用的随机图像,能 提高视频准确度。具体的,将活动图像分成若干块或宏块,并设法搜索出每个 块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量, 得到的相对偏移量就是通常所指的运动矢量,按照运动矢量指明的位置,从邻 近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在 当前帧中的位置。利用运动补偿后的帧作为上文中的初始目标图像Z放于上文中的算法中,以最终计算出转画风之后的目标影像Z。更具体的,本披露使用计 算装置(人工神经网络芯片)中的计算单元执行相应的矩阵乘法指令、矩阵加 法指令、标量逻辑算数运算指令完成该过程。
通过实施本披露实施例,能够准确、快速、全面地对待转风格的影像信息 进行目标风格的转换以得到具备目标风格的目标影像,相比于现有技术利用通 用处理器的处理,功耗更低,速度更快。
以语音识别为例,请参见图3F,是本披露实施例提供的一种基于所述计算 装置的信息处理方法。该计算装置的结构如图2A所示,如图3F所示的运算指 令可以由控制器单元从寄存器单元中提取发送至运算单元,由运算单元执行该 运算指令的运算,如上述运算需要执行多层运算,则由控制器单元从寄存器单 元中提取运算对应的计算拓扑结构,将该计算拓扑结构发送至互联模块,由互 联模块控制运算单元内的计算器的连接关系以实现上述计算拓扑结构的运算。 如图3F所示的方法包括如下实施步骤:
步骤S902、获取待识别的语音信息。
本披露中,所述语音信息可为一段待识别的语音数据文件,本披露并不限 定所述语音信息的格式,例如所述语音信息的格式包括但不限于mp3、wav、ogg、 wma、cd等音频数据格式。
步骤S904、利用计算装置中的运算指令对所述语音信息进行语音识别处理, 得到语音识别后的目标信息,所述目标信息可为文字信息。
步骤S906、输出所述目标信息。
步骤S904为计算装置对语音信息进行语音识别的中间处理过程,下面进行 详细阐述。
所述中间处理过程包括但不限于预处理,优选的还可包括以下中的任一项 或多项处理:语音模型处理、语言模型处理、解码器解码处理。下面进行分别 阐述。
第一,系统中的预处理过程。通常预处理过程可能会涉及的算法包括以下 中的任一项或多项:FFT(快速傅里叶变换)、矩形窗、汉明窗、神经网络算法 等。更具体地,本披露将使用计算装置(人工神经网络芯片)中的计算单元执 行矩阵乘法指令、矩阵加法指令、标量乘法指令、标量加法指令等功能完成所 述FFT、矩形窗、汉明窗等算法。本披露使用计算装置,如人工神经网络芯片 中的计算单元执行神经网络卷积层指令、全连接层指令、pooling(池化)层指 令等功能指令完成神经网络方法。
对于各个应用场景的算法中涉及到池化(pooling)正向计算以及pooling反 向训练的部分,通过采用用于执行pooling运算的装置和指令集,解决了CPU 和GPU运算性能不足,前端译码开销大的问题。通过采用针对pooling运算的 专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内 存读取这些数据,降低了内存访问带宽,避免了内存带宽成为pooling运算正向 运算及反向训练性能瓶颈的问题。
各个应用场景中,只要运行的算法包含pooling层的运算,都可以使用,达 到上述的有益效果。
第二,系统中的语言模型和语音模型的处理。语音模型也可称为声学模型, 其包括但不限于马尔科夫模型或者神经网络模型、或者n-gram等,隐马尔可夫 以及n-gram的包括公式为:P(w)=P(w1)P(w2|w1)P(w3|w1,w2)P(w4|w2, w3)…P(wn|wn-1,wn-2),对于其中的每一项条件概率都可以用贝叶斯公式求出。 更具体地,本披露中使用计算装置,如人工神经网络芯片中的计算单元执行矩 阵乘法指令、矩阵加法指令、标量乘法指令、标量加法指令等功能指令完成所 述n-gram、隐马尔科夫链等算法。本披露使用计算装置中的计算单元执行神经 网络卷积层指令、全连接层指令、pooling(池化)层指令完成神经网络方法。
第三,系统中的解码器的处理。针对系统中的解码器算法,通常可包括但 不限于维特比算法、束搜索算法(beam search)、A*算法、WFST等算法。其核 心是对排序算法的支持,更具体地,本披露使用计算装置,如人工神经网络芯 片中的计算单元执行向量排序指令、标量加法指令、标量减法指令等功能指令 以完成维特比算法、束搜索算法、A*算法、WFST。
具体的,计算装置可利用上述预处理、可选地还包括其他算法模型对输入 的语音信息进行语音识别,以输出识别结果后的目标信息。关于所述目标信息 的输出形式本披露并不做限定,例如以文字等形式输出。
在可选实施例中,计算装置(如人工神经网络芯片)获得识别结果(即所 述目标信息)的具体实施方式可以为:通过迭代算法,迭代产生所有待选文字 的分数,在每一次迭代中产生所有待选文字新的分数,由此迭代完成后会生成 一个时间序列上的所有文字的搜索空间,在该空间中应用解码器算法得到最终 唯一的语音识别输出结果,即目标信息。关于迭代算法及目标信息本披露不做 详述。
通过实施本披露实施例,能够准确、快速、全面地识别出待识别的语音信 息,相比于现有技术利用通用处理器的处理,功耗更低,速度更快。
需要说明的是,上述示出的基于计算装置分别在5个应用场景下的信息处 理具体实施方式,仅为示例并不构成限定。按照上述实施原理,同理还可适用 于基于计算装置在其他不同场景下的信息处理的具体实施,例如物体识别、图 像美化、图像分辨率重建等等应用场景下,本披露不做限定。
需要说明的是,图3A-图3F分别所示应用场景中,均可将获取待处理的信 息(如待识别的影像信息、语音信息等)存放在图2A所示计算装置的存储介质 中,以便计算装置在控制器单元的控制下从中获取相关运算指令对待处理的信 息进行相关处理,从而得到并输出相关的结果信息,这里不在赘述。
基于上述同一披露构思,请参见图6A,是本披露实施例提供的一种终端设 备的结构示意图。如图6A所示的本实施例中的终端设备可以包括:存储介质 311(可选的)、寄存器单元312、互联模块313、运算单元314、控制器单元315、 数据访问单元316和通信单元317;其中,所述通信单元317用于支持所述终端 设备与其他终端设备或服务器进行通信,例如所述通信单元317用于与其他终 端设备进行通信,接收其他设备发送的第一信息(即步骤S102)。
所述控制器单元315,用于所述终端设备的动作进行控制管理,例如所述控 制器单元315执行前述所述实施例中的相关技术描述。其中,本披露中所述控 制器单元315可用于:
获取第一信息,所述第一信息为终端设备待处理的信息,所述终端设备设 置有计算装置;
在所述计算装置中调用运算指令对所述第一信息进行计算,得到第二信息;
输出所述第二信息。
在一些可能的实施例中,所述获取第一信息包括:
对获取的原始信息进行预处理,得到所述第一信息,所述第一信息为具备 预设格式的信息,所述预处理包括以下中的至少一项:数据去重处理、数据编 码处理、数据转换处理、归一化处理。
在一些可能的实施例中,所述运算指令包括以下中的至少一项:矩阵乘向 量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、 矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
在一些可能的实施例中,当所述第一信息为语音信息时,在所述计算装置 中调用运算指令对所述第一信息进行计算,得到第二信息包括:
在计算装置中调用语音识别算法,对所述语音信息进行语音识别,得到第 二信息,所述第二信息为文本信息,所述语音识别算法是由语音识别指令构成 的,所述语音识别指令包括运算指令。
在一些可能的实施例中,当所述第一信息为影像信息时,在所述计算装置 中调用运算指令对所述第一信息进行计算,得到第二信息包括:
在计算装置中调用影像风格转换算法,对所述影像信息的风格进行转换, 得到第二信息,所述第二信息与所述第一信息的风格不同,所述影像风格转换 算法是由影像风格转换指令构成的,所述影像风格转换指令包括运算指令。
本披露实施例中未示出的内容,请参见前述相关实施例中的描述,这里不 再赘述。
其中,控制器单元315可以是处理器或控制器,例如可以是中央处理器(英 文:Central Processing Unit,CPU),通用处理器,数字信号处理器(英文:Digital SignalProcessor,DSP),专用集成电路(英文:Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(英文:Field Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可 以实现或执行结合本披露内容所描述的各种示例性的逻辑方框,模块和电路。 所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合, DSP和微处理器的组合等等。通信单元314以是通信接口、收发器、收发电路 等,其中,通信接口是统称,可以包括一个或多个接口,例如发件客户端和发 件服务器之间的接口。存储介质311可以是存储单元或存储器。
具体实现中,本披露实施例中所描述的相关功能单元可执行本披露实施例 提供的所述方法实施例中所描述的实现方式,也可执行本披露实施例所描述的 终端设备的实现方式,在此不再赘述。
下面介绍本披露提供的所述方法实施例所适用的一些运算指令以及执行这 些运算指令对应的装置,即使用哪些装置来调用执行这些运算指令,以完成本 披露所提供的方法。
具体的,以所述运算指令为卷积计算指令为例,具体如图6B示出卷积计算 指令的具体处理流程。又如图6C至图6F分别示出全连接层正向运算指令、池 化运算正向运算指令、池化运算反向运算指令以及批归一化正向运算指令各自 在相应装置中的相关具体处理流程,本披露不做限定。
图6B是本披露实施例提供的卷积神经网络运算装置执行卷积神经网络的流 程图,如图6B所示,执行卷积神经网络指令的过程包括:
在步骤S6B1,在指令存储单元的首地址处预先存入一条IO指令。
在步骤S6B2,控制器单元从指令存储单元的首地址读取该条IO指令,根 据译出的控制信号,数据访问单元从存储介质读取相应的所有卷积神经网络运 算指令,并将其缓存在指令存储单元中。
在步骤S6B3,控制器单元接着从指令存储单元读入下一条IO指令,根据 译出的控制信号,数据访问单元从存储介质读取运算单元需要的所有数据块(例 如,包括输入数据、用于作快速的激活函数运算的插值表、用于配置运算器件 参数的常数表、偏置数据等)。
在步骤S6B4,控制器单元接着从指令存储单元读入下一条CONFIG指令, 根据译出的控制信号,装置配置该层神经网络计算需要的各种常数。例如,运 算单元根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激 活函数需要的数据。
在步骤S6B5,控制器单元接着从指令存储单元读入下一条COMPUTE指令, 根据译出的控制信号,互连模块将卷积窗口内的输入数据发给计算单元内的各 计算器。
在步骤S6B6,根据COMPUTE指令译出的控制信号,互联模块将乘法计算 器、加法计算器和激活计算器连接形成第一计算拓扑结构。
在步骤S6B7,乘法运算器将卷积核w与输入数据Xi执行乘法运算以后得 到第一结果,将第一结果输入到加法运算器执行加法运算得到第二结果,将第 二结果和偏置b执行加法运算得到第三结果,将第三结果输入到激活运算器执 行激活运算得到输出结果s,将输出结果s传输至数据访问单元存储至存储介 质内。其中,将第二结果和偏置b执行加法运算得到第三结果这一步骤可选, 即当b为0时,不需要这个步骤。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法, 这里的运算指令以全连接层正向运算指令为例,该全连接层正向运算指令可以 应用在神经网络中。对于全连接层正向运算指令来说,其实际需要运算的公式 可以为:out=f(w1*in+b),其中,out输出神经元向量、in是输入神经元向量、 b是偏置向量,w1是权值,f是激活函数。依据该实际运算即可以得到该计算拓 扑结构为,乘法运算器-加法运算器-激活运算器。在实际应用中,上述偏置b也 可以为0,其偏置b的具体值可以由全连接层正向运算指令来确定。
人工神经网络全连接层正向运算的指令集。指令集中包括CONFIG指令、 COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等,其中这些 指令将在下文中进行详细阐述。
如图2A所示的计算装置执行全连接层正向运算指令的方法具体可以为:
控制单元615从寄存处单元612内提取全连接层正向运算指令、全连接层 正向运算指令对应的操作域以及全连接层正向运算指令对应的第二计算拓扑结 构(乘法运算器-加法运算器-(可选的)激活运算器),控制单元将该操作域传 输至数据访问单元,将该第二计算拓扑结构传输至互联模块。
数据访问单元存储介质内提取该操作域对应的权值W1和偏置b,将权值 W1和偏置b传输至计算单元。
计算单元的乘法运算器将权值W1与输入数据in执行乘法运算以后得到第 一结果,将第一结果和偏置输入到加法运算器执行加法运算得到第二结果,将 第二结果输入到激活运算器执行激活运算得到输出结果,将输出结果传输至数 据访问单元存储至存储介质内。其中,每个步骤后都可以直接输出结果传输到 数据访问存储至存储介质内,无需下面的步骤。另外,如果偏置b为0时候, 就不需要将第一结果和偏置输入到加法运算器执行加法运算得到第二结果这一 步骤。
另外,加法运算和乘法运算的顺序可以调换。
图6C示出单层人工神经网络全连接层正向运算的另一种更详细的实施方法。
在步骤S2.1,在指令存储单元处预先存入一条IO指令。
在步骤S2.2,控制器单元从指令存储单元读取该条IO指令,根据译出的控 制信号,数据访问单元从存储介质读取相应的所有人工神经网络全连接层运算 指令,并将其存储在指令存储单元中。
在步骤S2.3,控制器单元接着从指令存储单元读入下一条IO指令,根据译 出的控制信号,数据访问单元从存储介质读取主运算单元(即激活运算器)需 要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主 运算单元的第一存储单元。
在步骤S2.4,控制器单元接着从指令存储单元读入下一条IO指令,根据译 出的控制信号,数据访问单元从存储介质读取从运算单元(加法计算器或乘法 计算器)需要的权值矩阵数据。
在步骤S2.5(可选的),控制器单元接着从指令存储单元读入下一条CONFIG 指令,根据译出的控制信号,配置该层神经网络计算需要的各种常数。
在步骤S2.6,控制器单元接着从指令存储单元读入下一条全连接层正向运 算指令,根据译出的控制信号,主运算单元首先通过互连模块将输入神经元向 量发给各从运算单元,保存至从运算单元的第二存储单元。
在步骤S2.7,根据COMPUTE指令译出的控制信号,从运算单元的第二运 算单元从第三存储单元读取权值,从第二存储单元读取输入神经元向量,完成权 值和输入神经元向量的点积运算,将中间结果通过互连模块返回。
在步骤S2.8,在互连模块中,各从运算单元返回的中间结果被逐级拼成完 整的中间结果向量。
在步骤S2.9,主运算单元得到互连模块的返回值,根据COMPUTE指令译 出的控制信号,从第一存储单元读取偏置向量,与互连模块返回的向量通过向 量加单元相加,然后激活单元对相加结果做激活,并将最后的输出神经元向量 写回至第一存储单中。
在步骤S2.10,控制器单元接着从指令存储单元读入下一条IO指令,根据 译出的控制信号,数据访问单元将输出神经元向量存至存储介质指定地址,运 算结束。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法, 这里的运算指令以池化(pooling)运算指令为例,该pooling运算指令可以应用 在神经网络中。pooling运算是指在神经网络的特征层中,进行局部特征的降采 样运算,减少特征层的维度。pooling运算包括但不仅限于三种:maxpooling是 指在kernel内,取最大值作为结果;avgpooling是指在kernel内,取平均值作为 结果。minpooling是在kernel内,取最小值作为结果。指此处的kernel即pooling 核,大小是参数指定的,并根据步长stride在特征层上进行滑动,进行pooling 运算,得到结果。”对于pooling运算指令来说,其实际需要运算的公式可以为: out=avg(in)=Σin*1/kernel_area,其中,out输出神经元向量、in是每个kernel 里的所有输入神经元向量、kernel_area为pooling核kernel的面积(kernel里的数的总数),上述pooling根据实际的算法的需求可以为average pooling,当然在 实际应用中,还可以为max pooling,min pooling,或其他形式的pooling。依据该 实际运算即可以得到该计算拓扑结构为,(可选的)乘法运算器-加法运算器/比 较运算器-(可选的),激活运算器。
pooling指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指 令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种 常数;例如1/kernel_area可以使用config指令配置得到。
COMPUTE指令包括pooling运算指令,其包括:
Maxpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling 运算部件中做Maxpooling正向运算操作,然后将输出结果写回到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
Maxpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling 运算部件中做maxpooling反向训练操作,然后将输出结果写回到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
Avgpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling 运算部件中做Avgpooling正向运算操作,然后将输出结果写回到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
Avgpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling 运算部件中做Avgpooling反向训练操作,然后将输出结果写回到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
Minpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling 运算部件中做Minpooling正向运算操作,然后将输出结果写回到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
Minpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速 暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling 运算部件中做Minpooling反向训练操作,然后将输出结果写回到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
IO指令实现从存储介质读入计算需要的输入数据以及在计算完成后将数据 存回至外部空间;
NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证 NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转, 用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址 空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资 源。
本披露的执行pooling运算的方法包括如下几个阶段,
对于maxpooling(或者minpooling)正向运算指令,在运算单元进行正向运 算之前,数据访问单元可以依据指令存储单元内存储的kernel_area的值从存储 器内提取出in(kernel里的所有数),,然后将1/kernel_area和ina传输至运算单 元进行正向运算,由运算单元依次完成比较每一个输入向量大小,取最大值(或 者最小值)的操作,得到输出向量。对于maxpooling(或者minpooling)反向训 练指令,则同时保存对应的索引向量;循环读取新的pooling核kernel的输入向 量,做上述比较大小的运算操作,得到新的kernel的输出向量,直至本层pooling 运算结束。反向训练时,运算单元根据正向运算时保存的索引向量,通过数据 访问单元将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。或 者对于avgpooling正向运算指令,数据访问单元可以依据指令存储单元内存储 的kernel_area从存储器内提取出in(kernel里的所有数),,然后将该1/kernel_area 和in传输至运算单元进行正向运算,由运算模块4依次完成累加每一个输入向 量;然后在运算模块4中完成乘以1/kernel_area运算,得到输出向量;循环读 取新的kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输 出向量,直至本层pooling运算结束;或者对于avgpooling反向训练指令,运算 模块4将输入梯度向量乘以1/kernel_area,通过数据访问单元3将输入梯度向量 对应输出至相应的存储位置,得到输出梯度向量。
控制单元615从寄存处单元612内提取pooling运算指令、pooling运算指令 对应的操作域以及pooling运算指令对应的第三计算拓扑结构((可选的)乘法 运算器-加法运算器/比较运算器-(可选的),激活运算器),控制单元将该操作 域传输至数据访问单元,将该第三计算拓扑结构传输至互联模块。
数据访问单元存储介质内提取该操作域对应的in和1/kernel_area,将in和 1/kernel_area传输至计算单元。
计算单元接收数据,执行pooling指令。
举例说明对于avgpooling正向运算指令,计算单元的乘法运算器将输入数据 in与1/kernel_area进行乘法运算后得到第一结果,将第一结果输入到加法器执 行加法运算得到第二结果,(优选的),再将第二结果输入到激活运算器里进行 激活运算。其他的指令不再赘述。
需要说明的是,上述加法运算(或者比较运算)和乘法运算的顺序可以调 换。
kernel_area图6D示出根据一个实施例的pooling运算正向运算流程图。该 流程图描述利用本披露的装置和指令集实现的一种pooling运算正向运算的过程。
在步骤S1,在指令存储单元的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制单元从指令存储单元的首地址读取该条IO指令, 根据译出的微指令,数据访问单元从存储介质读取相应的所有pooling运算指令, 并将其缓存在存储器中。
在步骤S3,控制单元接着从指令存储单元读入下一条IO指令,根据译出的 微指令,数据访问单元从存储介质读取运算单元需要的所有数据(例如,包括 输入神经元向量、插值表、常数表等)至运算单元的存储器。
在步骤S4,控制器单元接着从指令存储单元读入下一条CONFIG指令,根 据译出的微指令,装置配置该层pooling运算需要的各种常数。例如,运算单元 根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的 精度设置、激活函数的数据(例如本层计算的精度位,avgpooling时pooling 核大小的倒数1/kernel_area等)
在步骤S5,根据COMPUTE指令译出的微指令,运算单元的加法运算器从 神经元存储单元读取输入神经元向量和中间结果向量,完成对输入神经元向量 的运算(avgpooling中是累加输入神经元向量,然后与1/kernel_area相乘, maxpooling是比较大小,求得最大值),并将最后的输出神经元向量写回至神经 元存储单元。
在步骤S6,控制单元接着从指令存储单元读入下一条IO指令,根据译出的 微指令,数据访问单元将神经元存储单元中的输出神经元向量存至存储介质指 定地址,运算结束。
图6E是示出根据一个实施例的pooling运算反向训练流程图。该流程图描 述利用本披露的装置和指令集实现一种pooling运算反向训练的过程。
在步骤T1,在指令存储单元的首地址处预先存入一条IO指令。
在步骤T2,运算开始,控制器单元从指令存储单元的首地址读取该条IO 指令,根据译出的微指令,数据访问单元从存储介质读取与该pooling运算反向 训练有关的所有指令,并将其缓存在指令存储单元中。
在步骤T3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出 的微指令,数据访问单元从存储介质读取运算单元需要的所有数据至运算单元 的神经元存储单元,所述数据包括输入梯度向量和maxpooling时需要的索引向 量index。
在步骤T4,控制器单元接着从指令存储单元读入下一条CONFIG指令,运 算单元根据译出的微指令里的参数配置运算单元内部寄存器的值,包括该层 pooling运算需要的各种常数,avgpooling时pooling核大小的倒数1/kernel_area、 本层计算的精度设置、更新权值时的学习率等。
在步骤T5,根据COMPUTE指令译出的微指令,运算单元的加法计算器从 神经元存储单元读取输入梯度向量和maxpooling时需要的索引向量index,完成 乘法运算(avgpooling中是与1/kernel_area相乘,maxpooling是与索引向量index 相乘),传递输出梯度向量,得到下一层反向训练的输入梯度向量,将其写回至 神经元存储单元。
在步骤T6,控制器单元接着从指令存储单元读入下一条IO指令,根据译出 的微指令,数据访问单元将神经元存储单元中的输出梯度向量存至存储介质指 定地址,运算结束。
对于多层人工神经网络的pooling运算,其实现过程与单层神经网络的 pooling运算类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将 运算单元中计算出的输出神经元向量或输出梯度向量作为下一层训练的输入神 经元向量或输入梯度向量进行如上的计算过程,指令中的权值地址和权值梯度 地址也会变更至本层对应的地址。
通过采用用于执行pooling运算的装置和指令集,解决了CPU和GPU运算 性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络pooling运 算的支持。
对于各个应用场景的算法中涉及到池化(pooling)正向计算以及pooling反 向训练的部分,通过采用用于执行pooling运算的装置和指令集,解决了CPU 和GPU运算性能不足,前端译码开销大的问题。通过采用针对pooling运算的 专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内 存读取这些数据,降低了内存访问带宽,避免了内存带宽成为pooling运算正向 运算及反向训练性能瓶颈的问题。
各个应用场景中,只要运行的算法包含pooling层的运算,都可以使用,达 到上述的有益效果。
通过采用针对pooling运算的专用片上缓存,充分挖掘了输入神经元和权值 数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免 了内存带宽成为pooling运算正向运算及反向训练性能瓶颈的问题。
下面通过不同的运算指令来说明如图2A所示的计算装置的具体计算方法, 这里的运算指令以批归一化(batch normalization)运算指令为例,该batch normalization运算指令可以应用在神经网络中。对于batch normalization运算指 令来说,其实际需要运算的公式可以为:out=(in-middle1)/middle2,其中,out 输出神经元向量、in是输入神经元向量、middle1,middle2是运算过程中的中间 值,middle1,middle2的值可以相同也可以不同。依据该实际运算即可以得到该 计算拓扑结构为,加法运算器-乘法运算器。或者实际需要运算的公式可以为:out=(in/middle2-middle1/middle2,这种情况下,可以得到该计算拓扑结构为乘法 运算器-加法运算器
batch normalization指令集中包括CONFIG指令、batch normalization指令、 IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在batch normalization计算开始前配置当前层计算需要的各种 常数;
batch normalization指令完成batch normalization的计算;
关于其它指令可参见前述实施例中的相关阐述,这里不再赘述。
如图2A所示的计算装置执行batch normalization的具体方法可以包括:
控制单元615从寄存处单元612内提取batch normalization运算指令、batchnormalization运算指令对应的操作域以及batch normalization运算指令对应的第 四计算拓扑结构(乘法运算器-加法运算器),控制单元将该操作域传输至数据访 问单元,将该第四计算拓扑结构传输至互联模块。
数据访问单元存储介质内提取该操作域对应的-middle1和1/middle2,将 middle传输至计算单元。
计算单元执行batch normalization运算指令得到输出结果,将输出结果传输 至数据访问单元存储至存储介质内。
具体的,计算单元执行batch normalization运算指令得到输出结果的方法可 以包括:计算单元的加法运算器将输入数据in与-middle1执行加法运算以后得 到第一结果,将第一结果和1/middle2输入到乘法运算器执行乘法运算得到输出 结果。
另外,加法运算和乘法运算的顺序可以调换。
图6F示出根据一个实施例的训练过程中的batch normalization正向运算流 程图。该流程图描述利用如图2A的装置和指令集实现batch normalization运算 的正向运算的过程。
在步骤F1,在指令存储单元的首地址处预先存入一条IO指令。
在步骤F2,运算开始,控制器单元从指令存储单元的首地址读取该条IO指 令,根据译出的微指令,数据访问单元从外部地址空间读取相应的所有batch normalization正向运算指令,并将其缓存在指令存储单元中。
在步骤F3,控制器单元接着从指令存储单元读入下一条IO指令,根据译出 的微指令,数据访问单元从外部地址空间读取运算单元需要的所有数据(例如, 包括输入神经元向量、batch大小、学习参数alpha、beta、极小值eps、均值、 方差等)至运算单元的神经元缓存单元。
在步骤F4,控制器单元接着从指令存储单元读入下一条CONFIG指令,根 据译出的微指令,装置配置batch normalization运算。例如,本次正向运算过程 是使用计算好的均值方差,还是根据输入计算均值方差。
在步骤F5,控制器单元接着从指令存储单元读入下一条COMPUTE指令, 根据译出的微指令,运算单元从神经元缓存单元读取输入神经元向量,计算输 入神经元的均值和方差存入中间值缓存单元中。
在步骤F6,运算单元根据COMPUTE指令译出的微指令将输入神经元缓存 单元和中间值缓存单元中的数据完成减去均值后除以方差与极小量eps和的平 方根操作,将结果存回中间值缓存单元。
在步骤F7,运算单元根据COMPUTE指令译出的微指令,从神经元缓存单 元读取学习参数alpha,与中间值相乘后加上学习参数beta返回至神经元缓存。
在步骤F8,控制器单元接着从指令存储单元读入下一条IO指令,根据译出 的微指令,数据访问单元将神经元缓存单元中的输出神经元向量存至外部地址 空间指定地址,运算结束。
对于使用过程中的batch normalizaiton运算的正向过程与训练过程中的 batchnormalization运算的正向过程区别在于步骤F4中配置使用常数均值和方差, 不需要每次动态计算,也就是去掉了步骤F5。其他与图2F相同。
对于batch normalization运算的反向过程与上述的正向过程类似。区别在于 操作的数据不同。假设一个像素点传入的梯度为dl/dY,反向传出的梯度是dl/dx, 正向过程输出为Y,其余参数表示含义与正向过程相同,则经过batch normalization反向传播出的梯度 dl/dx=(alpha/sqrt(var(x)+eps))*(dl/dY-mean(dl/dY)-mean(dl/dY*Y)*Y),其中mean 是取均值操作。学习参数的alpha的梯度:dl/dalpha=(Σdl/dY)*Y,学习参数beta的梯度:dl/dbeta=Σdl/dY,通过这两个梯度更新学习参数的数值。batch normalization的反向过程通过运算单元归一化运算梯度数据例如取均值、方差等。 之后运算单元并行的完成公式中其余操作。
通过采用用于执行batch normalization运算的装置和指令集,解决了CPU 和GPU运算性能不足,前端译码开销大的问题。有效提高了对batch normalization 正反向运算的支持。
通过采用针对batch normalization运算的专用片上缓存,充分挖掘了输入神 经元和中间数据的重用性,避免了反复向内存读取这些数据,降低了内存访问 带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
通过采用针对batch normalization运算的专用运算单元较好的平衡了并行和串行之间的关系。避免了CPU架构只是串行运算,数据规模较大时速度较慢, GPU架构只是并行运算,处理不好归一化运算的弱点。本披露中数据存储单元 和运算单元相配合可以较好的平衡归一化串行运算和并行运算。
本披露执行的batch normalization操作能够应用在神经网络算法中,也可以 使用在神经网络领域的计算装置内,例如如图1、图1A、图6A所示的计算装 置,人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置以 及其他的神经网络领域的计算装置、芯片或处理器内。当然在实际应用中,还 可以应用在中都被使用,本披露执行的batch normalization操作可以提高算法或 计算装置识别精度与算法鲁棒性。
需要说明的是,上述计算装置的计算指令可以为一个或多个,即该计算装 置可以执行一个或多个上述的计算指令,该计算指令包括但不限于上述的卷积 指令、全连接指令、batch normalization指令或pooling指令,上述指令的具体结 构以及如何应用可以参见如图2A、图6B、图6C、图6D、图6E和图6F实施 例描述,可选的,除了上述指令,该计算装置能够执行的计算指令具体可以包 括:
向量内积指令(VP)。根据该指令,装置分别从存储器(优选的高速暂存存 储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量计算单 元中将两向量进行内积(张量)运算,并将结果写回。优选的,结果写会至存 储器(优选的高速暂存存储器或者标量寄存器堆)得指定地址。
向量外积指令(TENS)。根据该指令,装置分别从存储器(优选的高速暂 存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量计 算单元中将两向量进行外积运算,并将结果写回。优选的,并将结果写回至存 储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;
向量四则运算,包括:向量加标量指令(VAS),根据该指令,装置从存储 器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向 量数据,从存储器标量寄存器堆的指定地址取出标量数据,在标量运算单元中 将向量的每一个元素加上该标量值,并将结果写回并将结果写回。优选的,并 将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;
标量减向量指令(SSV)。根据该指令,装置从存储器(优选的高速暂存存 储器或者标量寄存器堆)标量寄存器堆的指定地址取出标量数据,从存储器(优 选的高速暂存存储器或者标量寄存器堆)的指定地址取出向量数据,在向量计 算单元中用该标量减去向量中的相应元素,并将结果写回并将结果写回。优选 的,并将结果写回存储器(优选的高速暂存存储器或者标量寄存器堆)的指定 地址;
向量除法指令(VD)。根据该指令,装置从存储器(优选的高速暂存存储 器或者标量寄存器堆)的指定地址取出分别取出指定大小的向量数据,在向量 运算单元中将两向量对位相除,并将结果写回并将结果写回。优选的,并将结 果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)高速暂存存储器 的指定地址;
标量除向量指令(SDV)。根据该指令,装置从存储器(优选的高速暂存存 储器或者标量寄存器堆)标量寄存器堆的指定位置取出标量数据,从存储器(优 选的高速暂存存储器)的指定位置取出指定大小的向量数据,在向量计算单元 中用标量分别除以向量中的相应元素,并将结果写回并将结果写回。优选的, 并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定位 置;
向量逻辑指令,包括:
向量间与指令(VAV)。根据该指令,装置从存储器(优选的高速暂存存储 器或者标量寄存器堆)的指定地址取出分别取出指定大小的向量数据,在向量 运算单元中将两向量对位相与,并将结果写回并将结果写回。优选的,并将结 果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;
向量内与指令(VAND)。根据该指令,装置从存储器(优选的高速暂存存 储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量运算单 元中向量中每一位相与,并将结果写回并将结果写回。优选的,并将结果写回 至存储器(优选的高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定地 址;
向量间或指令(VOV)。根据该指令,装置从存储器(优选的,高速暂存存 储器)的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两 向量对位相或,并将结果写回并将结果写回。优选的,并将结果写回至存储器 (优选的,高速暂存存储器或者标量寄存器堆)的指定地址;
向量内或指令(VOR)。根据该指令,装置从存储器(优选的,高速暂存存 储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量运算单 元中向量中每一位相或,并将结果写回并将结果写回。优选的,并将结果写回 至存储器(优选的,高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定 地址;
超越函数指令,根据该指令,装置从存储器(优选的,高速暂存存储器或 者标量寄存器堆)的指定地址取出指定大小的向量数据,在运算单元中对向量 数据做超越函数运算,并将结果写回并将结果写回。优选的,并将结果写回至 存储器(优选的高速暂存存储器或者标量寄存器堆)存储单元的指定地址。优 选的,将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)的 指定地址。
向量比较运算指令,包括
大于等于运算指令(GE),根据该指令,装置可以直接从指令中或者通过访 问指令提供的寄存器存储器(优选的,高速暂存存储器或者标量寄存器堆)的 编号号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量 的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置 上的元素进行比较,若某位置行前一向量的值大于等于后一向量的值,则将比 较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回至存储器 (优选的,高速暂存存储器或者标量寄存器堆)的指定存储地址。
小于等于运算指令(LE),根据该指令,装置可以直接从指令中或者通过访 问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄 存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量 的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置 上的元素进行比较,若某位置行前一向量的值小于等于后一向量的值,则将比 较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回到存储器(优选的,高速暂存存储器或者标量寄存器堆)值的指定存储地址。
大于运算指令(GT),根据该指令,装置可以直接从指令中或者通过访问指 令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄存器 号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存 储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的 元素进行比较,若某位置行前一向量的值大于后一向量的值,则将比较结果向 量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选 的高速暂存存储器或者标量寄存器堆)的指定存储地址。
小于运算指令(LT),根据该指令,装置可以直接从指令中或者通过访问指 令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄存器 号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存 储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的 元素进行比较,若某位置行前一向量的值小于后一向量的值,则将比较结果向 量在该位置上的值置为1,否则置为0。最后将比较结果写回到存储器(优选的, 高速暂存存储器或者标量寄存器堆)值的指定存储地址。
等于运算指令(EQ),根据该指令,装置可以直接从指令中或者通过访问指 令提供的存储器(优选的高速暂存存储器或者标量寄存器堆)的编号寄存器号 来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储 地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元 素进行比较,若某位置行前一向量的值等于后一向量的值,则将比较结果向量 在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的, 高速暂存存储器或者标量寄存器堆)的编号的指定存储地址。
不等于运算指令(UEQ),根据该指令,装置可以直接从指令中或者通过访 问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄 存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量 的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置 上的元素进行比较,若某位置行前一向量的值不等于后一向量的值,则将比较 结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器 (优选的,高速暂存存储器或者标量寄存器堆)的指定存储地址。
向量最大值指令(VMAX)。根据该指令,装置从存储器(优选的,高速暂 存存储器或者标量寄存器堆)高速暂存存储器的指定地址取出指定大小的向量 数据,从中选出最大的元素作为结果,并将结果写回并将结果写回。优选的, 并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)标量寄 存器堆的指定地址;
向量最小值指令(VMIN)。根据该指令,装置从存储器(优选的,高速暂 存存储器或者标量寄存器堆)高速暂存存储器的指定地址取出指定大小的向量 数据,从中选出最小的元素作为结果,并将结果写回并将结果写回。优选的, 并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)标量寄 存器堆的指定地址;
循环移位运算指令:根据该指令,装置可以直接从指令中或者通过访问指 令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编寄存器号 来获得指令的参数,然后在向量移位单元(可以是独立的向量移位单元也可以 是使用计算计算单元)中进行循环移位移位,并将移位后的结果写回至存储器 (优选的,高速暂存存储器或者标量寄存器堆)高速暂存存储器的指定存储地 址。循环移位运算指令格式如图3所示,包含四个操作域,向量的起始地址和 长度,移位步长,以及输出向量的存储地址,
随机向量生成指令,根据该指令,装置从指令或从存储器(优选的,高速 暂存存储器或者标量寄存器堆)寄存器堆中读取一个或多个随机分布参数,以 及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从 随机分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的, 高速暂存存储器或者标量寄存器堆)的存储地址。
随机向量生成指令具体可以为:
均匀分布指令(UNIF),根据该指令,装置从指令或从存储器(优选的,高 速暂存存储器或者标量寄存器堆)寄存器堆中读取均匀分布的上界参数和下界 参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中 生成服从该均匀分布的随机向量,并将生成的随机向量结果写回至指定的存储 器(优选的,高速暂存存储器或者标量寄存器堆)的存储地址。
高斯分布指令(GAUS),根据该指令,装置从指令或从寄存器存储器(优 选的,高速暂存存储器或者标量寄存器堆)堆中读取高斯分布的均值参数和方 差参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元 中生成服从该高斯分布的随机向量,并将生成的随机向量结果写回至指定的存 储器(优选的,高速暂存存储器或者标量寄存器堆)的存储地址。
上述指令的格式示意图如图7A所示,神经网络运算指令的格式示意图如 7B所示,矩阵运算指令的格式示意图如图7C所示;向量运算指令的格式示意
本披露实施例还提供一种计算机存储介质,其中,该计算机存储介质存储 用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实 施例中记载的任何一种矩阵计算方法的部分或全部步骤。
本披露实施例还提供一种计算机程序产品,所述计算机程序产品包括存储 了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计 算机执行如上述方法实施例中记载的任何一种矩阵计算方法的部分或全部步骤。
其中,上述实施例中人工神经网络运算装置可以通用的集成有DMA、控制 单元的计算器件。人工神经网络运算装置还可以包括通用计算器件,例如通用 的处理器,上述存储介质的具体实现形式可以是存储装置、片上存储介质、内 存或存储单元等;指令存储单元的具体实现形式可以是DMA等;运算单元的具 体实现形式可以是主运算模块、从运算模块、离散数据运算单元或连续数据运 算单元等;缓存单元的具体实现形式可以是指令缓存、输入神经元缓存、权值 缓存、输出神经元缓存、指令缓存单元、支持离散数据表示的神经元缓存单元 或支持离散数据表示的权值缓存单元等;本披露实施例不作限制。
本披露提出一种数据发布装置,包括:
一个或多个中心节点,其为所述片上网络的通信数据中心,用于向所述多 个叶子节点进行通信数据的广播或多播;
多个叶子节点,其为所述片上网络的通信数据节点,用于向所述中心叶子 节点进行通信数据的传递;
转发器模块,用于连接所述中心节点与所述多个叶子节点,通信数据通过 所述转发器模块进行转发;
将所述多个叶子节点分为N组,所述中心节点通过所述转发器模块单独与 每一组叶子节点进行通信连接。
可选的,每组中叶子节点的个数相同。一般技术人员也可以理解每组中叶 子节点的个数也可以不同。
可选的,每组叶子节点构成的通信结构具有自相似性。这种情况下,数据 发布装置具有分形树网络结构。一般技术人员也可以理解,每组叶子节点构成 的通信结构有其他的结构,即不局限在自相似性的结构
可选的,所述多个叶子节点与所述中心节点通过多层所述转发器模块以完 全多叉树方式进行通信连接。
在本披露的一个实施例方式中是,上述中心节点或叶子节点具体可以包括 如图2A中的计算装置、如图1所示的计算装置或如图6A所示的计算装置,当 然在实际应用中,上述中心节点或叶子节点还可以包含神经网络领域的其他类 型的计算设备或芯片,例如不同位宽的处理器或包含传输装置的计算芯片、稀 疏连接的人工神经网络计算装置或计算装置等等。当然在其他技术场景中,上 述中心节点或叶子节点也可以称为计算单元。上述中心节点与叶子节点可以通 过互联电路的数据处理装置连接。
每个节点包括本地高速缓存结构,用于存储所述中心节点发布数据的子集;
每个叶子节点均有id标识,且所述id标识从完全多叉树的拓扑一侧按序依 次增加序号。
所述数据发布装置共享一个时钟信号。
所述转发器模块包括本地高速缓存结构,用于存储数据。
本披露还提出一种利用所述数据发布装置的数据发布方法,通过所述中心 节点将通信数据向所述多个叶子节点进行发布,其中,数据发送方准备好发送 数据后,发送数据有效信号,并将数据置于总线;数据接收方准备好接收数据 后,发送数据准备接收信号;当所述数据有效信号与所述数据准备接收信号双 方检测到后,数据发送方认为数据已经发出,且被数据接收方接收。
当从所述中心节点将通信数据向所述多个叶子节点之间进行广播时,首先 数据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器 模块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发器模 块局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并 由转发器模块分别发布给与其相连的一组叶子节点。
如果下一时钟节拍数据发送方与数据接收方握手协议成功,则数据以流水 方式进入数据接收方的局部缓存中存储;如果握手协议不成功,则数据在当前 层的局部缓存中保存,且使得当前层作为上一层的数据接收方,并停止发送数 据准备接收信号,使得当前层的局部缓存中的数据停止更新,数据一直保存在 当前层,直到握手协议成功。
当所述中心节点将通信数据向所述多个叶子节点之间进行多播时,首先数 据通过握手协议从所述中心节点进入与所述中心节点直接相连的所述转发器模 块的局部缓存中暂时存储,每次握手协议成功后,进入下一层中间转发器模块 局部缓存中暂时存储,最后输入与所述叶子节点直接相连的转发器模块,并由 转发器模块分别发布给与其相连的一组叶子节点。
在接收的数据时,所述叶子节点根据与其相对应的id标识选取预设带宽的 数据。
本披露还提出一种包含所述数据发布装置的控制装置。
本披露还提出一种包含所述控制装置的智能芯片。
下面结合附图对本披露做进一步的详细说明,以令本领域技术人员参照说 明书文字能够据以实施。
附图7F为本披露的一个实施例中使用h-tree连接的16+1个核的片上多核 结构示意图,其中16和1只是作为举例,没有进行特别限定。一般人也可以理 解是2n+m个核,或者yn+m个核。h树的根节点为central tile,其为数据发布 的起点;h树的叶子节点为leaftile,其为数据发布的终点;其余的中间节点为 hub,用于传输并分发数据;
将图中16个leaf tiles分为8组,每组中leaf tile的个数均为2,所述hub通 过所述转发器模块单独与每一组leaf tile进行通信连接,每组leaf tile构成的通 信结构具有自相似性,所述多个leaf tile与所述central tile通过多层所述转发器 模块以完全二叉树方式进行连接;此设备实现了从一个数据中心以广播或者多 播的方式向处理单元发布数据的情况。
附图8表示了hub结构示意图,hub由hub_one_to_two模块构成, hub_one_to_two将一组全带宽的输入数据20分成两组全带宽的数据21和22输 出,用于从central tile到leaf tile的传输。
如图9所示,当标记为310的hub_one_to_two模块已经将数据与数据有效 信号发至总线上,且标记为320的数据接收方0与标记为330的数据接收方1 已经将数据准备接收信号发至总线时,此时握手协议才算成功:此拍310认为 数据接收方,即320和330,已经接收数据,而下一拍320和330将此拍总线上 的数据存入自己的缓冲区。
如图7F所示,标记410的central tile广播数据来初始化全部的leaf tile,此 时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均为高,此时与 410直接相连的标记为420的hub0_0其数据准备接收信号同样为高。在第一拍 时,410准备好数据,将其和数据有效信号置高,由于标记420的hub0_0此时 的数据准备接收信号为高,410与420握手成功,在第二拍时,420将数据从总 线存入其局部缓存中暂时存储,由于第二拍时,420的局部缓存中已经存有数据, 它将数据及其有效信号发送至向下一级430与431方向的总线上,而此时标记 为430的hub1_0与标记为431的hub1_1的数据准备接收信号也为高,当拍420 与下一层的430和431握手成功,在第三拍时,430与431将数据从总线存入其 局部缓存中暂时存储,依次执行,数据每一拍都从上一层向下一层行进一步。 在此实例中,以430的hub1_0至标记为460的leaf tile0分支为例,在第四拍时, 数据流入标记为440的hub2_0的局部缓存中暂时存储;在第五拍时,数据流入 标记为450的hub3_0的局部缓存中暂时存储;在第六拍是,450通过两个输入 端口在握手协议成功后分别将全带宽的数据存储到与其相连的一组leaf tile的局 部缓存中,此时数据到达标记为460的leaf tile0。由此,在数据通路顺畅的情况 下,数据的按层级流水传输得以保证。
如图10所示,此一实例以hub1_0作例,当如下情况发生时,数据将滞留 在hub中,在第一拍时,标记为520的hub1_0收到来自标记为510的hub0_0 的数据,此时,520将数据与其数据有效信号置于向下一层530与531方向的总 线上。现设置情景如下,此时标记为530的hub2_0与标记为531的hub2_1此 时并未发出数据准备信号,并在之后时间内一直保持这样的状况,此时由于520 与下一层的530和531握手不成功,520的数据无法传输给下一级530与531, 并滞留于520的局部缓存中,此时520无法发送数据准备接收信号,在之后的 时间内,由于510的局部缓存为空,其又可以接收新的数据,但由于520并未 发送数据准备接收信号,导致520与510握手不成功,即510的数据无法发送 至520,保证了520的局部缓存中的数据的安全性,从而,使得数据传输的可靠 性得以实现。
如图10所示,此一实例以hub1_0作例,当如下情况发生时,hub将可以流 水传输数据,在第一拍时,标记为520的hub1_0收到来自标记为510的hub0_0 的数据,此时,520将数据与其数据有效信号置于向下一层530与531方向的总 线上。现设置情景如下,此时标记为530的hub2_0与标记为531的hub2_1此 时发出数据准备信号,并在之后时间内一直保持这样的状况,此时由于520与 下一层的530和531握手成功,520的数据传输给下一级530与531,此时520 已经可以发送数据准备接收信号,若此时510的局部缓存已经准备好新的数据, 并将数据与与其数据有效信号置于向520方向的总线上,在当拍,由于520发 送数据准备接收信号,520与510握手成功,在第二拍,520将510传输过来的 数据存于局部缓存中,并将数据及其有效信号置于向下一层530与531方向的 总线上,由此,可见,hub在数据通路舒畅即数据源充足的情况下,可以进行流 水传输数据。
如图11所示,假设有16个leaf tile,将h树以完全二叉树的拓扑展开,hub 为非叶节点,而leaf tile为叶节点,将在树中高度相同的节点都从左到右依次增 序,hub以其层数与序号相结合命名,如标记610为hub0_0,即第一层的0号 节点,标记620为hub1_0,即第二层的0号节点,标记621为hub1_1,即第二 层的1号节点。
如图11所示,在一实施例中,标记60的central tile多播数据来初始化全部 的leaf tile,此时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均 为高,即数据通路顺畅,按数据流水传输,在第一拍时,60与610握手成功, 在第二拍时,610将数据从总线存入其局部缓存中暂时存储,当拍610与下一层 的620和621握手成功,在第三拍时,620与621将数据从总线存入其局部缓存 中暂时存储,当拍620与下一层的630和631握手成功,621与下一层的632和 633握手成功,在第四拍时,630,631,632,633将数据从总线存入其局部缓 存中暂时存储,630与下一层的640和641握手成功,631与下一层的642和643 握手成功,632与下一层的644和645握手成功,633与下一层的646和647握 手成功,在第五拍时,640,641,642,643,644,645,646,647将数据从总 线存入其局部缓存中暂时存储,640与下一层的650和651握手成功,641与下 一层的652和653握手成功,642与下一层的654和655握手成功,643与下一 层的656和657握手成功,644与下一层的658和659握手成功,645与下一层 的65a和65b握手成功,646与下一层的65c和65d握手成功,647与下一层的 65e和65f握手成功,在第六拍时,数据同时存储至所有leaf tile,650,651,652, 653,654,655,656,657,658,659,65a,65b,65c,65e,65f的局部缓存中, 由此可见,数据从中心向叶子节点广播的数据在数据通路顺畅的情况下可以同 时到达,数据的同步性得以实现。
在上一实例中,数据到达每个leaf tile时都是全带宽的,假设如图12所示, 每个leaf tile的预设带宽均为16位数据,则其可以按照其id序号从全带宽的数 据中取得对自己多播的数据,数据在全带宽中的位置为[id*16:id*16+15]。如id 序号为15的数据D0,位于data[255:240],而id序号为0的数据D0,位于data[15:0]。
图13为本披露的一个实施例中使用x-tree连接的64+1个核的片上多核结构 示意图,x树的根节点为central tile,其为数据发布的起点;x树的叶子节点为 leaf tile,其为数据发布的终点;其余的中间节点为hub,用于传输并分发数据; 将图中64个leaf tiles分为16组,每组中leaf tile的个数均为4,所述hub通过 所述转发器模块单独与每一组leaf tile进行通信连接,每组leaf tile构成的通信 结构具有自相似性,所述多个leaftile与所述central tile通过多层所述转发器模 块以完全四叉树方式进行连接;此设备实现了从一个数据中心以广播或者多播 的方式向处理单元发布数据的情况。
图14表示了hub结构示意图,hub由hub_one_to_four模块构成, hub_one_to_four将一组全带宽的输入数据800分成四组全带宽的数据801、802、 803和804输出,用于从central tile到leaf tile的传输。
如图15所示,标记A10的central tile广播数据来初始化全部的leaf tile,此 时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均为高,此时与 A10直接相连的标记为A20的hub0_0其数据准备接收信号同样为高。在第一拍 时,A10准备好数据,将其和数据有效信号置高,由于标记A20的hub0_0此时 的数据准备接收信号为高,A10与A20握手成功,在第二拍时,A20将数据从 总线存入其局部缓存中暂时存储,由于第二拍时,A20的局部缓存中已经存有 数据,它将数据及其有效信号发送至向下一级A30、A31、A32、A33方向的总 线上,而此时标记为A30的hub1_0、标记为A31的hub1_1、标记为A32的hub1_2、 标记为A33的hub1_3的数据准备接收信号也为高,当拍A20与下一层的A30、 A31、A32、A33握手成功,在第三拍时,A30、A31、A32、A33将数据从总线 存入其局部缓存中暂时存储,依次执行,数据每一拍都从上一层向下一层行进 一步。在此实例中,以A33的hub1_3至标记为A50的leaf tile48分支为例:在 第四拍时,数据流入标记为A40的hub2_12的局部缓存中暂时存储;在第五拍 时,A40通过四个输入端口在握手协议成功后分别将全带宽的数据存储到与其 相连的一组,即4个leaf tile的局部缓存中,包括A50、A51、A52、A53;此时 数据到达标记为A50的leaf tile48。由此,在数据通路顺畅的情况下,数据的按 层级流水传输得以保证。
如图13所示,假设有64个leaf tile与一个central tile,通过x树以完全四 叉树为拓扑连接,hub为非叶节点,而leaf tile为叶节点,将在树中高度相同的 节点都逆时针依次增序,hub以其层数与序号相结合命名,如标记910为hub0_0, 即第一层的0号节点,标记920为hub1_0,即第二层的0号节点,标记921为 hub1_1,即第二层的1号节点。
如图13所示,在一实施例中,标记90的central tile多播数据来初始化全部 的leaf tile,此时所有hub和leaf tile的局部缓存均为空,其数据准备接收信号均 为高,即数据通路顺畅,按数据流水传输,在第一拍时,90与910握手成功; 在第二拍时,910将数据从总线存入其局部缓存中暂时存储,当拍910与下一层 的920、921、922和923握手成功;在第三拍时,920、921、922和923将数据 从总线存入其局部缓存中暂时存储,当拍920与下一层的930、931、932和933 握手成功,921与下一层的934、935、936和937握手成功,922与下一层的938、 939、93a和93b握手成功,923与下一层的93c、93d、93e和93f握手成功;在 第四拍时,930,931,932,933,934、935、936、937、938、939、93a、93b、 93c、93d、93e和93f将数据从总线存入其局部缓存中暂时存储,930与下一层 的940、941、942和943握手成功,931与下一层的944、945、946和947握手 成功,932与下一层的948、949、950和951握手成功,933与下一层的952、 953、954和955握手成功,934与下一层的956、957、958和959握手成功, 935与下一层的960、961、962和963握手成功,936与下一层的964、965、966 和967握手成功,937与下一层的968、969、970和971握手成功,938与下一 层的972、973、974和975握手成功,939与下一层的976、977、978和979握 手成功,93a与下一层的980、981、982和983握手成功,93b与下一层的984、 985、986和988握手成功,93c与下一层的988、989、990和991握手成功,93d与下一层的992、993、994和995握手成功,93e与下一层的996、997、998 和999握手成功,93f与下一层的9a0、9a1、9a2和9a3握手成功;在第五拍时, 数据同时存储至所有leaf tile,940~9a3的局部缓存中,由此可见,数据从中心 向叶子节点广播的数据在数据通路顺畅的情况下可以同时到达,数据的同步性 得以实现。
在上一实例中,数据到达每个leaf tile时都是全带宽的,假设如图16所示, 每个leaf tile的预设带宽均为16位数据,则其可以按照其id序号从全带宽的数 据中取得对自己多播的数据,数据在全带宽中的位置为[id*16:id*16+15]。如id 序号为63的数据D0,位于data[1023:1008],而id序号为0的数据D0,位于 data[15:0]。
需要说明的是,本披露提出基于分形树结构的数据发布相关实施例,能够 应用到上述提供的方法实施例中,以便实现片上或片间数据的获取、分发以及 处理等操作。
本披露提出基于分形树结构的数据发布能够高效地将单核智能芯片扩展至 多核,以满足更大运算量和更大规模神经网络的处理能力需求。相比于现有技 术,本披露能够以同步的、流水的、可靠的方式在片上网络上实现广播和多播 等操作,提高广播通讯和多播通讯的效率,使得通信的吞吐率大大提高,并在 通信协议的保证下,使得数据传输得以安全地传输给各分支节点,做到数据的 一致性和无差错,从而获得比现有技术更好的通讯效果。
本披露还披露了一种用于稀疏连接的人工神经网络计算装置,上述稀疏连 接的人工神经网络计算装置为多个时,可以通过互联电路的数据处理装置连接, 包括:
映射单元,用于将输入数据转换成输入神经元、权值和连接数据,依据连 接数据对该输入神经元的筛选得到计算神经元,将该计算神经元并存储在存储 装置或者缓存中;
存储装置,用于存储计算神经元、权值和计算指令;
运算单元,用于根据所述存储装置中存储的计算指令对所述计算神经元以 及权值执行相应的运算;所述运算单元主要执行三步运算,第一步是将计算神 经元和权值数据相乘得到第一结果;第二步执行加法树运算得到第二结果,具 体的,用于将第一步处理后的第一结果通过加法树逐级相加得到第二结果,或 者将第一结果通过和偏置相加得到第二结果;第三步对第二结果执行激活函数 运算,得到最终输出神经元。
上述运算单元具体可以包括:加法计算器、乘法计算器和激活计算器,其 连接的关系如图2B所示,每个计算器对应一个流水级,此计算方式能够节省运 算时间,加快运算。在另一种可选的实施例可以自由组合各流水部件或者采取 一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以 及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如, 第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵 标量乘法等组合。
上述计算器的流水级对不同的计算指令可能有所不同,例如仅仅执行向量 或矩阵运算时,即无需第二流水级以及第三流水级,当然在实际应用中,也可 以根据实际的计算指令对流水级进行调整。
其中,所述连接数据表示如下:第一种情形:
采用1表示有连接,0表示无连接,每个输出神经元与所有输入神经元的连 接状态组成一个0和1的字符串来表示该输出神经元的连接关系;或者
采用1表示有连接,0表示无连接,每个输入神经元与所有输出神经元的连 接状态组成一个0和1的字符串来表示该输入神经元的连接关系;
第二种情形:
将一输出神经元第一个连接所在的位置距离第一个输入神经元的距离、所 述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经 元第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷 举所述输出神经元的所有输入神经元,来表示所述输出神经元的连接关系。
作为优选,所述人工神经网络计算装置还包括DMA(可以被传输装置替代, 例如图149的传输装置),用于在所述存储装置和缓存中进行数据或者指令读写。
作为优选,所述人工神经网络计算装置还包括:
指令缓存,用于存储专用指令;以及
控制单元,用于从所述指令缓存中读取专用指令,并将其译码成各运算单 元指令。
作为优选,所述人工神经网络计算装置还包括:
输入神经元缓存,用于缓存输入神经元到所述运算单元的输入神经元数据; 以及
权值缓存,用于缓存权值数据。
作为优选,所述人工神经网络计算装置还包括:
输出神经元缓存,用于缓存所述运算单元输出的输出神经元。
作为优选,所述映射单元用于将输入数据转换成输入神经元和权值一一对 应的存储方式,并输出神经元到所述运算单元,而不是存储在存储装置中。
作为优选,所述人工神经网络计算装置还包括输入神经元缓存和/或权值缓 存,所述输入神经元缓存用于缓存输入神经元到所述运算单元的输入神经元数 据,所述权值缓存用于缓存权值数据,所述映射单元用于将输入数据转换成输 入神经元和权值一一对应的存储方式,并输出神经元到所述输入神经元缓存和/ 或权值缓存。
作为优选,所述运算单元在第三步执行的激活函数为sigmoid函数、tanh函 数或ReLU函数。
本披露还披露了一种用于稀疏连接的人工神经网络的计算方法,该计算方 法在如图26,图28或图30所示的装置中实现,包括以下步骤:
步骤1,将输入数据转换成输入神经元、权值和连接数据;其中,所述连接 数据表示为:
第一种情形:
采用1表示有连接,0表示无连接,每个输出神经元与所有输入神经元的连 接状态组成一个0和1的字符串来表示该输出神经元的连接关系;或者
采用1表示有连接,0表示无连接,每个输入神经元与所有输出神经元的连 接状态组成一个0和1的字符串来表示该输入神经元的连接关系;
第二种情形:
将一输出神经元第一个连接所在的位置距离第一个输入神经元的距离、所 述输出神经元第二个输入神经元距离上一个输入神经元的距离,所述输出神经 元第三个输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷 举所述输出神经元的所有输入,来表示所述输出神经元的连接关系。
步骤2,依据连接数据将输入神经元进行筛选得到计算神经元,将计算神经 元和权值数据相乘得到第一结果;
上述输入数据包括:输入神经元、权值和连接数据,直接包含在输入数据 内,直接从输入数据内提取该输入神经元、权值以及连接数据即可。上述计算 神经元可以依据连接数据将输入神经元进行筛选得到计算神经元。
上述筛选的实现方案具体可以为,例如假设输入神经元为4个,连接数据 为1时表示连接,如果连接数据为如图18所示的1011,该输入神经元为i1、i2、 i3和i4,则将无连接关系的第二神经元i2删除得到计算神经元数据为:i1、i3 和i4。当然上述连接数据中的1也可以表示不连接,如果1表示不连接,那么 无连接关系的i1、i3和i4删除得到计算神经元数据为:i2。
步骤3,将第一结果执行加法树运算得到第二结果。
具体的实现方法由多种,例如,将第一结果执行加法树逐级相加得到第二 结果。又如将第二结果加偏置得到第二结果;
步骤4,对第二结果执行激活函数运算,得到最终输出神经元;其中,所述 激活函数为sigmoid函数、tanh函数或ReLU函数。
下面结合附图和具体实施例对本披露的技术方案进行进一步的阐释说明。
图17是根据本披露一个实施例的总体结构的示意性框图。
I/O接口1,用于I/O数据需要经过中央处理器CPU 3发给稀疏的多层人工 神经网络运算装置,然后由稀疏的多层人工神经网络运算装置4写入存储装置2, 稀疏的多层人工神经网络运算装置4需要的专用程序也是由CPU 3传输到稀疏 的多层人工神经网络运算装置4。
存储装置2,用于暂存稀疏的多层人工神经网络模型和神经元数据,特别是 当全部模型无法在稀疏的多层人工神经网络运算装置4上的缓存中放下时。
CPU 3,用于进行数据搬运以及稀疏的多层人工神经网络运算装置4启动停 止等基本控制,作为稀疏的多层人工神经网络运算装置4与外部控制的接口。
稀疏的人工神经网络运算装置4,用于执行稀疏的多层人工神经网络运算单 元,接受来自CPU3的数据和程序,执行上述稀疏的多层人工神经网络运算算 法,稀疏的人工神经网络运算装置4的执行结果将传输回CPU 3。
通用系统结构:将稀疏的人工神经网络运算装置4作为CPU 3或者GPU的 协处理器来执行稀疏的多层人工神经网络运算算法。
多个稀疏的人工神经网络运算装置互联的系统结构:多个稀疏的人工神经 网络运算装置4可以通过PCIE总线互联,以支持更大规模的稀疏的多层人工神 经网络运算,可以共用同一个宿主CPU或者分别有自己的宿主CPU,可以共享 内存也可以每个处理器有各自的内存。此外其互联方式可以是任意互联拓扑。
对于一个稀疏连接的神经网络如图18所示,有4个输入神经元:i1,i2,i3, i4,有2个输出神经元:o1,o2。其中,o1和i1,i3,i4有连接,把连接的权值 分别表示为w11,w31,w41;o2和i2,i3有连接,把连接的权值分别表示为 w22,w32。
有两种方法可以表示上面稀疏神经网络的连接关系,一种是每个输入神经 元与输出神经元之间都用一位表示是否有连接,另一种是用连接之间的距离来 表示每个连接的位置。
第一种连接表示:
对于图18中的神经网络,如图19所示,输出神经元o1的连接关系为:1011, 每一位表示是否与输入神经元有连接,1表示有连接,0表示无连接,输出神经 元o2的连接关系为0110。在运算时,连接关系为0所对应的输入神经元会筛选 删除,即不会进行运算,具体的对于输出神经元o1,其i2会被筛选删除,对于 o2,其i1、i4会被筛选删除,这样在计算时无需对筛选的输入神经元进行计算。
在存储连接关系时,可以按照优先输入神经元或者输出神经元的顺序对连 接关系进行存储。具体存储格式有以下几种:
格式一:将每个输出神经元的所有输入神经元依次摆放完,上面的例子摆 放的顺序为10110110。
格式二:将每个输入神经元的所有的输出神经元依次摆放完,上面的例子 摆放的顺序为10011110。
第二种连接表示:
比如对于图20中的神经网络,输出神经元o1与输入神经元i1,i3,i4相连 接,那么连接关系为0,2,1。0表示第一个连接所在的位置距离第一个输入神 经元的距离为0,即第一个输入神经元,2表示第二个输入神经元距离上一个输 入神经元的距离为2,即表示第三个输入神经元,1表示第三个输入神经元距离 上一个输入神经元的距离为1,即表示第四个输入神经元。同理,o2的连接关 系为1,1。
本披露的映射单元包括但不限于以上的连接关系。
卷积神经网络是人工神经网络的一种,卷积层包含多个滤波器,也就是卷 积核,这些卷积核重复的作用于所有输入图像上,提取局部特征。不同的卷积 核能够提取出不同种类的局部特征,一副输入图像在经过卷积层之后就变成一 些能够被更好理解的抽象特征。
自然图像有其固有特性,也就是说,图像的一部分的统计特性与其他部分 是一样的。这也意味着在这一部分学习的特征也能用在另一部分上,所以对于 这个图像上的所有位置,都能使用同样的学习特征。当从一个大尺寸图像中随 机选取一小块,比如说8*8作为样本,并且从这个小块样本中学习到了一些特 征,这时可以把从这个8*8样本中学习到的特征作为探测器,应用到这个图像 的任意地方中去。特别是,可以用从8*8样本中学习到的特征跟原本的大尺寸 图像做卷积,从而对这个大尺寸图像上的任意位置获得一个不同特征的激活值。 这个8*8的样本特征被称作卷积核。上述卷积的计算可以参见如图6B实施例中 的描述,这里不在赘述。
如图21是一个卷积操作的例子。卷积核是一个2*2的矩阵,卷积核在输入 图像上滑动。
假设每次滑动一个像素点,则总共会有四次卷积操作。对于每次卷积操作, 卷积核矩阵与对应的输入图像数据做乘加操作。
假设卷积核的权值变得稀疏,由之前的2*2,变成只有两个参数,如图22 所示。则对于输出神经元o0来说,需要的输入神经元为i0,i1,i3,i4,输入权 值为:w0,w3,连接关系为1001或者0,2;
对于输出神经元o3来说,需要的输入神经元为i3,i5,i7,i8,输入权值为: w0,w3,连接关系为1001或者0,2。
由此可见,对于同个输出神经元特征图上的不同的输出神经元,所需要的 输入神经元不同,权值和连接关系是相同的。
可执行稀疏连接的人工神经网络运算装置可以处理各种稀疏连接表示的稀 疏连接的人工神经网络,可执行稀疏连接的人工神经网络运算装置中有一个专 门用于处理稀疏连接的单元,在这里称为映射单元,对于不同的稀疏连接关系 和处理方法,稀疏连接的人工神经网络运算装置结构会略有不同,下面将分别 描述不同的结构和方法。
结构和方法一:
如图23所示,映射单元1,用来将输入数据转换成输入神经元、权值和连 接数据。
存储装置2,用来存储数据和指令,尤其是神经网络规模很大的时候,指令 缓存4、输入神经元缓存6、输出神经元缓存9、权值缓存8放不下这么多数据, 只能将数据临时存放在存储装置2。
DMA3,用来将存储装置中的数据或者指令搬到各个缓存中。
指令缓存4,用来存储专用指令。
控制单元5,从指令缓存4中读取专用指令,并将其译码成各运算单元指令。
输入神经元缓存6,用来存储运算的输入神经元数据。
运算单元7,用于执行具体的运算。运算单元主要被分为三个阶段,第一阶 段执行乘法运算,用于将输入的神经元和权值数据相乘。第二阶段执行加法树 运算,第一、二两阶段合起来完成了向量内积运算。第三阶段执行激活函数运 算,激活函数可以是sigmoid函数、tanh函数等。第三阶段得到输出神经元,写 回到输出神经元缓存。
权值缓存8,用来存储权值数据。
输出神经元缓存9,用来存储运算的输出神经元。
映射单元的结构如图24所示。
以上面稀疏连接的神经网络为例,连接关系可以是上述的两种稀疏表示之 一,映射单元会根据连接关系,将输入神经元和输入权值按照连接关系输出映 射后的神经元和权值,映射后的神经元和权值可以在运算时被直接使用而不需 要考虑连接关系,对于输出神经元o1映射的具体过程如下:
输入神经元为:i1,i2,i3,i4,输入权值为:w11,w31,w41,连接关系 可以为:1011,或0,2,1。映射单元根据连接关系,将输入神经元和权值变成 相对应的关系,输出有两种情况:一种是去除掉没有连接的输入神经元,则映 射后的神经元为i1,i3,i4,映射后的权值为w11,w31,w41;另一种是权值 在没有连接的地方补成0,则映射后的神经元为i1,i2,i3,i4,映射后的权值 为w11,0,w31,w41。
运算单元可以包括三个部分,第一部分乘法器,第二部分加法树,第三部 分为激活函数单元。第一部分将输入神经元(in)通过和权值(w)相乘得到加 权输出神经元(out),过程为:out=w*in;第二部分将加权输出神经元通过加法 树逐级相加,另外还可以将输出神经元(in)通过和偏置(b)相加得到加偏置 输出神经元(out),过程为:out=in+b;第三部分将输出神经元(in)通过激活 函数(active)运算得到激活输出神经元(out),过程为:out=active(in),激活函 数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分 可以实现其他的非线性函数,可将将输入神经元(in)通过运算(f)得到输出 神经元(out),过程为:out=f(in)。
运算过程如图25所示。
结构和方法二:
如图26所示,存储装置1,用来存储数据和指令,尤其是神经网络规模很 大的时候,指令缓存3、输入神经元缓存6、输出神经元缓存9、权值缓存8放 不下这么多数据,只能将数据临时存放在存储装置1。
DMA2,用来将存储装置中的数据或者指令搬到各个缓存中。
指令缓存3,用来存储专用指令。
控制单元4,从指令缓存3中读取专用指令,并将其译码成各运算单元指令。
映射单元5,用来将输入数据转换成输入神经元和权值一一对应的存储方式。
输入神经元缓存6,用来存储运算的输入神经元数据。
运算单元7,用于执行具体的运算。运算单元主要被分为三个阶段,第一阶 段执行乘法运算,用于将输入的神经元和权值数据相乘。第二阶段执行加法树 运算,第一、二两阶段合起来完成了向量内积运算。第三阶段执行激活函数运 算,激活函数可以是sigmoid函数、tanh函数等。第三阶段得到输出神经元,写 回到输出神经元缓存。
权值缓存8,用来存储权值数据。
输出神经元缓存9,用来存储运算的输出神经元。
映射单元的结构如图27所示。
以上述稀疏连接的神经网络为例,连接关系可以是上述的两种稀疏表示之 一,映射单元会根据连接关系,将输入神经元和输入权值按照连接关系输出映 射后的神经元和权值,映射后的神经元和权值可以在运算时被直接使用而不需 要考虑连接关系,对于输出神经元o1映射的具体过程如下:
输入神经元为:i1,i2,i3,i4,输入权值为:w11,w31,w41,连接关系 可以为:1011,或0,2,1。映射单元根据连接关系,将输入神经元和权值变成 相对应的关系,输出有两种情况:一种是去除掉没有连接的输入神经元,则映 射后的神经元为i1,i3,i4,映射后的权值为w11,w31,w41;另一种是权值 在没有连接的地方补成0,则映射后的神经元为i1,i2,i3,i4,映射后的权值 为w11,0,w31,w41。
结构和方法一和结构方法二中的映射单元的主要区别是结构和方法一中的 映射单元是在计算之前事先把输入神经元和权值映射好后存储在存储装置中, 结构和方法二是在计算中进行映射,将映射好的数据直接给运算单元进行运算。
结构和方法三:
基于结构和方法二稍作修改可以改成如图28所示的结构,映射单元只对输 入神经元进行映射。
此时,映射单元的结构图如图29所示。
对于输出神经元o1映射的具体过程如下:
输入神经元为:i1,i2,i3,i4,连接关系可以为:1011,或者:0,2,1。 映射单元根据连接关系,将输入神经元和权值变成相对应的关系,去除掉没有 连接的输入神经元,则映射后的神经元为i1,i3,i4。
结构和方法四:
基于结构和方法二稍作修改可以改成如图30所示的结构,映射单元只对输 入权值进行映射。
此时,映射单元的结构图如图31所示。
对于输出神经元o1映射的具体过程如下:
输入权值为:w11,w31,w41,连接关系可以为:1011,或者:0,2,1。 映射单元根据连接关系,将输入神经元和权值变成相对应的关系,映射后的权 值为w11,0,w31,w41。
需要说明的是,本披露提出基于稀疏的人工神经网络运算实施例可被应用 到上述提供的方法实施例中,具体的在运算单元中调用相关计算器(如加法计 算器、乘法计算器和激活计算器)来实现指令的运行,每个计算器对应一个流 水级,在指令执行时可调用多个流水级组合的方式来实现,以节省运算时间, 加快运算速率。
本披露通过采用针对稀疏人工神经网络运算的专用SIMD指令和定制的运 算单元,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提 高了对人工神经网络运算算法的支持;通过采用针对人工神经网络运算算法的 专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内 存读取这些数据,降低了内存访问带宽,避免了内存带宽成为人工神经网络运 算及其训练算法性能瓶颈的问题。
通过采用针对稀疏人工神经网络运算的专用SIMD指令和定制的运算单元, 解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对人 工神经网络运算算法的支持;通过采用针对人工神经网络运算算法的专用片上 缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这 些数据,降低了内存访问带宽,避免了内存带宽成为人工神经网络运算及其训 练算法性能瓶颈的问题。
如图32所示,本披露还提供了一种神经网络的处理系统100,在一种可选 的实施方案中,该神经网络的处理系统100具体可以为如图2A所示的计算装置 或者该计算装置的集合,当然也可以为如图1或如图6A所示的计算装置或者集 合,当然还可以为用于稀疏连接的人工神经网络计算装置或正向运算的装置的 集合,当然在实际应用中,还可以是多种神经网络领域的计算装置的集合,本 神经网络的处理系统100并不限制包含的计算装置、计算芯片、处理设备、处 理器的种类或表现形式,相对于如图2A所示的计算装置,增加了一个或者多个 算数逻辑单元,该多个算数逻辑单元,用于执行非线性运算,在一种可选实施例中,如图2A所示的计算装置还可以扩展如图32所示的神经网络的处理系统 中的单元或模块。在另一种实施例中,该系统包括至少一片上存储介质10、至 少一片内地址索引模块20、多核心处理模块30以及一个或者多个算数逻辑单元 (Arithmetic Logic Unit,ALU)模块40。多核心处理模块30包括多个核心处理 子模块31。其中片内地址索引模块20与片上存储介质10连接,片内地址索引 模块20、多核心处理模块30以及ALU模块40分别相互连接。多核心处理模块 30用于执行神经网络运算中的向量乘加操作,多个ALU模块40用于从多核心处理模块30或片上存储介质10获取输入数据执行多核心处理模块30无法完成 的非线性运算,在本实施例中,多个核心处理子模块31共享片上存储介质10 以及ALU模块40。
片上存储介质10,用于存储神经网络处理系统外部传来的数据或用于存储 处理过程中产生的数据。该处理过程中产生的数据包括处理过程中产生的处理 结果或中间结果。这些结果可能来自处理器的片内核心运算模块,也可能来自 其他运算部件,如本披露中ALU模块40。该片上存储介质10可以是静态随机 存储器(Static Random AccessMemory,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,e-DRAM),寄存器堆(Registerfile,RF)等常见存储 介质,也可以是新型的存储器件,如非易失存储器(Non-VolatileMemory,NVM) 或者3D存储器件等等。
片内地址索引模块20,用于在执行运算时候根据输入的索引映射至正确的 存储地址以将正确的数据送至多核心处理模块30进行处理。从而使得数据和片 上存储介质可以正确的交互。这里的地址映射过程包括直接映射,算术变换等。 该索引模块可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路 ASIC、模拟电路和忆阻器等)实现。
多核心处理模块30包括多个核心处理子模块31,用于执行神经网络运算中 的向量乘加操作。具体的,多核心处理模块30完成神经网络算法中的大部分运 算,均为线性运算,即乘加操作。每个核心处理模块31的结构可以多种,例如 一维处理单元(processingelement,PE)实现方式,二维PE或者多维实现方式。 单个核心处理模块31本身不局限于特定实施原则,包括不同的实现方法,如 systolic方案,矩阵向量乘加操作符。且多核心处理模块30的多个核心处理子模 块31之间可以为同构设计或异构设计。该处理模块可以通过硬件电路(包括但 不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
ALU模块40,用于从多核心处理模块30或片上存储介质获取输入数据执 行核心处理模块无法完成的非线性运算。该模块可以通过硬件电路(包括但不 限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。在本 披露中,多核心处理模块30、ALU模块40与片上存储介质10的数据通路包括 但不局限于H-TREE,或者FAT-TREE等互联技术。
在本披露中,多个核心处理子模块31共同复用部分输入以减少带宽需求, 所述神经网络的处理系统100进行处理时,将同一输入神经元分别发送至多核 心处理模块30的多个核心处理子模块31,而将不同的输入权值分配至不同的核 心处理模块31,多个核心处理子模块31分别将输入神经元和输入权值进行向量 内积(乘加和)操作后得到不同的输出神经元。不同的输出神经元对应不同的 权值,也即对于处理不同的输出神经元,输入神经元是相同的,权值则不同。 在本披露中,权值大部分情况下不可被多个核心复用,然而在某些情况下,如 多个核心共同处理同一个特征图时,权值也可以被复用。
本披露针对神经网络处理系统的核心处理部分通过提升片上核心处理模块 的数目从而提升神经网络算法中的核心运算部分处理速度,使得处理器获得更 高的性能。核心处理指的是神经网络算法中占据大部分处理时间的向量乘加操 作。从而本披露能够提升神经网络处理系统的运算速度,使得神经网络处理系 统性能更高,更加高效。
图33是本披露一种神经网络的处理系统的另一实施例的结构框图,其与图 1中神经网络的处理系统的区别是,图32中神经网络的处理系统是采用松耦合 设计,而图33中神经网络的处理系统采用紧耦合设计。在图33中,神经网络 的处理系统200包括多个片上存储介质201,多个片内地址索引模块202,多个 核心处理模块203以及多个ALU模块204,其中每个核心处理模块203具有单 独的输入接口和输入结构,其中ALU模块204也被划分可以存在于每个核心中。
在图32中,多个核心处理子模块31只完成特定的核心操作,本身不具有 更多的功能,多核处理核心共享片上存储介质10和ALU模块40。与之相比, 在图2的紧耦合设计中,每个核心处理模块203具有自己独立的片上存储介质 201和ALU模块204。在图32所示的松耦合设计中多个核心可以协同处理,更 易实现更高的性能需求,然而每个核缺少灵活性;在如图33所示的紧耦合设计 中每个核心具有一定的灵活性,然而由于每个核的独立性也使得多核协同的复 杂度更高,使得控制的复杂度增加。松耦合多适用多核同构的设计,紧耦合则 多使用于多核异构的设计。
在本披露中,神经网络可以根据多核处理模式设计进行神经网络的划分, 其中包括从输入神经元进行划分,输出神经元划分和权值连接进行划分。神经 网络的划分是对于神经网络处理模式的分解,并不是将神经网络划分成为独立 的子网,也即划分是算法层面的划分,是软件或者编译器完成的操作,其目的 是将处理划分成为可以在多个核心处理的多个部分。
图34是本披露一种实施例中神经网络划分的示意图;图35是本披露另一 实施例中神经网络划分的示意图;图36是本披露又一实施例中神经网络划分的 示意图。
在神经网络的处理中,卷积层是按照特征图进行组织,也即输入是多个图, 输出是多个图。在图34中,对于二维或者多维运算,从输出角度可按照每个核 处理一层输出特征图进行神经网络划分。图34中包括输入特征图1、输入特征 图2、核心处理模块1、核心处理模块2、输出特征图1、输入特征图2,每个特 征图为二维矩阵。在进行处理时,将输入特征图1、2分别发送至核心处理模块 1、2,核心处理模块1处理输出特征图1,核心处理模块处理输出特征图2,核 心处理模块1和核心处理模块2分别处理一层输出特征图。也即,在进行二维 或多维处理时,将输入特征图分别发送至多个核心处理模块,多个核心处理模 块分别处理一层输出特征图。多个核心处理模块均分别完成当前输出特征图的 处理后,多核心处理模块再执行新的输出特征图处理,也即只有当所有的核完 成当前的输出特征图处理后才会进行新的特征图处理。
在实际应用中,输入特征图、核心处理模块、输出处理模块均可以有多个。 下面以2个核(核#1、核#2)、4个输出特征图(输出特征图#1、#2、#3、#4)、 4个输入特征图(输入特征图#1、#2、#3、#4)为例说明多核心处理模块的处理 方式:处理开始后,核#1负责处理输出特征图#1,核#2负责处理输出特征图#2, 输入特征图#1被送入核#1和核#2(也即共享输入特征图#1),同时相应的权值 也被送入核#1和核#2进行处理;当输入特征图#1处理完成后,输入特征图#2 被从片上存储读取,送入核#1和核#2进行处理(同样读取权值);当核#1和核 #2完成输出特征图#1和#2的处理后,核#1和核#2则开始处理输出特征图#3和 #4,也即重复以上的操作过程。
如图35所示,对于二维或者多维运算,从输出角度也可按照每个核处理一 层输出特征图进行神经网络划分。不同的核负责处理同一特征图的不同区域, 而输入相应的则被送至每一个核中,权值则根据相应的连接进行读取,这里权 值有可能存在复用,如卷积神经网中的卷积层。只有当所有的核完成当前的输 出特征图处理后才会进行新的特征图处理。在图35中,输入特征图1、和输入 特征图2均送入核心处理模块1和核心处理模块2,核心处理模块1负责处理输 出特征图1的区域1和输出特征图2的区域1,核心处理模块2负责处理输出特 征图1的区域2和输出特征图2的区域2。从而,在执行二维或者多维运算时, 将输入特征图分别发送至多个核心处理模块,多个核心处理模块分别处理同一 输出特征图的不同区域,多个核心处理模块均分别完成当前输出特征图的处理 后,多核心处理模块再执行新的输出特征图处理。
如图36所示,对于一维运算,从输出角度按照每个核心处理模块处理输出 的一部分进行神经网络划分。每个核负责处理不同的神经元,这里的划分方式 则可以多种多样,并不局限于图36所示的划分方法。输入被送至每一个核心处 理模块中,权值则根据相应的连接进行读取,只有当所有的核心处理模块完成 当前的输出特征图处理后才会进行新的特征图处理。也即神经网络处理系统在 执行一维运算时,将同一输入分别发送至多个核心处理模块,多个核心处理模 块分别处理不同的输出神经元,多个核心处理模块均分别完成当前输出神经元 的处理后,再执行新的输入的处理。
神经网络划分包括从输入神经元进行划分,输出神经元划分和权值连接进 行划分。本披露按照输出神经元进行划分,输出神经元需要多个甚至全部输入 神经元参与处理,而输出神经元的处理多数情况下彼此独立。按照输出神经元 划分可以复用输入神经元,降低带宽需求,从而使得处理器更加高效。
图37是本披露一种神经网络的处理方法的流程图,该方法在如图2、图5 或图2A所示的计算装置中实现,此时该计算装置中包括多个ALU,包括:
步骤S601,片内地址索引模块根据输入的索引映射至正确的存储地址;
步骤S602,根据存储地址从片上存储介质中获取输入数据;
步骤S603,将输入数据发送至多核心处理模块或所述ALU模块;
步骤S604,多核心处理模块执行神经网络运算中的向量乘加操作,ALU 模块根据多核心处理模块的处理结果或者从片上存储介质中获取的输入数据执 行多核心处理模块无法完成的非线性运算;
步骤S605,将处理过程中产生的数据缓存至片上存储介质。
优选的是,所述方法还包括:将同一输入神经元分别发送至多个核心处理 模块,将不同的输入权值分配至不同的核心处理模块,多个核心处理模块分别 将输入神经元和输入权值进行向量内积操作后得到不同的输出神经元。
综上所述,本披露针对神经网络处理系统的核心处理部分通过提升片上核 心处理模块的数目从而提升神经网络算法中的核心运算部分处理速度,使得处 理器获得更高的性能。核心处理指的是神经网络算法中占据大部分处理时间的 向量乘加操作。从而本披露能够提升神经网络处理系统的运算速度,使得神经 网络处理系统性能更高,更加高效。
需要说明的是,本披露提供的算术逻辑单元可用于对数据进行非线性运算, 并应用到上述提供的方法实施例中,以提高数据运算速度。
通过实施本披露实施例,能够提升片上核心处理模块(计算装置)的数目, 从而提升神经网络算法中的核心运算部分处理速度,使得在各个应用场景下, 加速器更快的接收数据、完成相应的运算处理并提供反馈信息,满足该应用场 景的计算需求。此外还提供了多种神经网络划分方式,根据不同应用场景的数 据选择不同的划分方式,如果有多种方式可以满足,那么本披露还能支持多种 格式的数据运算,具有一定的灵活性。
根据本披露实施例的支持离散数据表示的多层人工神经网络的正向运算, 包括两层或者两层以上的多个神经元。对于每一层来说,输入神经元向量首先 和权值向量进行点积运算,结果经过激活函数得到输出神经元。其中激活函数 可以是sigmoid函数,tanh、relu、softmax函数等,支持将激活后的输出神经元 离散化表示或连续化表示。
对于离散数据表示的输入神经元向量或离散数据表示的权值向量的点积运 算,本装置支持将点积运算转换为数据的移位、取非、异或等位运算。对于数 据的表示方式,本装置支持数据离散表示或非离散表示,用户可以自定义哪一 个层的哪些数据采用离散表示形式或非离散表示,并且可以根据具体需要自定 义离散数据的位数,从而代替表示的真实数据的个数,例如设定为1比特、2比 特、3比特等位数的离散数据,分别可以表示2个、4个、8个真实数据。
图38示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网 络正向运算的装置的整体结构的示例框图。人工神经网络正向运算的装置可以 设置在神经网络的处理系统内。如图38所示,该装置在一种可选实施例中,可 以为如图2A所示的计算装置,如图1所示的计算装置、如图6A所示的计算装 置,可选的,在如图2A所示的计算装置(也可以添加在如图1或如图6A所示 的计算装置内或用于稀疏连接的人工神经网络计算装置)内还可以添加连续离 散转换模块,用于将连续数据与离散数据的互换,其与数据访问单元连接实现 数据互通,在一种可选实施例中,如图2A所示的计算装置还可以扩展或增加如图38所示的装置的模块或单元。在另一种可选实施例中,该装置包括指令缓存 单元1、控制器单元2、数据访问单元3、互联模块4、主运算模块5和多个从 运算模块6,可选地还包括连续离散转换模块7。指令缓存单元1、控制器单元2、数据访问单元3、互联模块4、主运算模块5和从运算模块6、连续离散转换 模块7均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路 ASIC、模拟电路和忆阻器等)实现。特别的,本装置可以对离散数据提供存储和运算支持。
指令缓存单元1通过数据访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行 为的微指令,所述其他模块例如数据访问单元3、主运算模块5和从运算模块6 等。
数据访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元 读写数据,完成数据的加载和存储。该数据是离散表示的或非离散表示的。该 单元用来设计可以读取离散表示的数据。
互联模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓 扑(如树状结构、环状结构、网格状结构、分级互连、总线结构等)
图39示意性示出了互联模块4的一种实施方式:H树模块。H树模块4构 成主运算模块5和多个从运算模块6之间的数据通路,并具有H树的结构。H 树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的 两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例 如,在每层人工神经网络开始计算阶段,主运算模块5内的神经元数据该数据 可以是离散表示或非离散表示的通过H树模块4发送给各个从运算模块6;当 从运算模块6的计算过程完成后,每个从运算模块输出的神经元的值会在H树中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。针对于离散 数据表示的运算,我们特别提到了在主从运算模块内部的专用于离散数据运算 的运算模块见图44。以神经网络全连接层进行说明,假设装置中共有N个从运 算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算 每段中的第i个元素。N个元素经过H树模块拼成长度为N的向量并返回给主 运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单 个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。H树模块在存储和传输数据的过程中均支持离散数据表示。
图40示出了根据本披露实施例的用于执行人工神经网络正向运算的装置中 主运算模块5的结构的示例框图。如图40所示,主运算模块5包括运算单元51、 数据依赖关系判断单元52和支持离散数据表示的神经元缓存单元53。
支持离散数据表示的神经元缓存单元53用于缓存主运算模块5在计算过程 中用到的输入数据和输出数据。
运算单元51完成主运算模块5的各种运算功能。对于运算因子全是离散数 据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位 的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。 对于每种加减乘除运算的操作,可以制作并维护该4*4的索引表,通过索引表 找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据, 为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2 的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如, 对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相 应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散 数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续 数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直 接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引 这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数 据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据 为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数 表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于 除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据 -2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16 的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表 示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作 为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离 散数据表示的真实数据的相加或者相减操作。
依赖关系判断单元52是运算单元51读写神经元缓存单元53的端口,同时 能够保证神经元缓存单元中数据的读写一致性。同时,数据依赖关系判断单元 52也负责将读取数据通过互联模块4发送给从运算模块,而从运算模块6的输 出数据通过互联模块4直接发送给运算单元51。控制器单元2输出的指令发送 给计算单元51和数据依赖关系判断单元52,来控制其行为。
图41示出了根据本披露实施例的用于执行支持离散数据表示的人工神经网 络正向运算的装置中从运算模块6的结构的示例框图。如图41所示,每个从运 算模块6包括运算单元61、数据依赖关系判定单元62、支持离散数据表示的神 经元缓存单元63和支持离散数据表示的权值缓存单元64。
运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。对于运 算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘 除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据 共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该4*4的 索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据, 为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2 的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如, 对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相 应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散 数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续 数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直 接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引 这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数 据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据 为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数 表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于 除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据 -2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16 的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表 示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作 为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离 散数据表示的真实数据的相加或者相减操作。
数据依赖关系判断单元62负责计算过程中对神经元缓存单元的读写操作。 数据依赖关系判断单元62执行读写操作之前会首先保证指令之间所用的数据不 存在读写一致性冲突。例如,所有发往数据依赖关系单元62的微指令都会被存 入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的 范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到 所依赖的写指令被执行后才能够执行。
支持离散数据表示的神经元缓存单元63缓存该从运算模块6的输入神经元 向量数据和输出神经元值数据。该数据可以以离散数据的形式存储和传输。
支持离散数据表示的权值缓存单元64缓存该从运算模块6在计算过程中需 要的权值数据。该数据根据用户定义可以是离散表示的或不是。对于每一个从 运算模块6,都只会存储全部输入神经元与部分输出神经元之间的权值。以全连 接层为例,输出神经元按照从运算单元的个数N进行分段,每段的第n个输出 神经元对应的权值存放在第n个从运算单元中。
从运算模块6实现每层人工神经网络正向运算过程中可以并行的前半部分。 该模块中的数据存储以及运算都支持离散数据表示。以人工神经网络全连接层 (MLP)为例,过程为y=f(wx+b),其中权值矩阵w和输入神经元向量x的乘 法可以划分为不相关的并行计算子任务,out与in是列向量,每个从运算模块6 只计算in中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输 出向量都是最终结果的一个待累加的部分和,这些部分和在互联模块4中逐级 两两相加得到最后的结果。这个结果可以是离散数据表示的。所以计算过程变 成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出 输出神经元值,所有的输出神经元值在互联模块4中拼成得到中间结果向量。 每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元 值即可。互联模块4对所有从运算模块6输出的神经元值求和,得到最终的中 间结果向量y。主运算模块5基于中间结果向量y进行后续计算,比如加偏置、 池化(例如最大值池化(MAXPOOLING)或平均值池化(AVGPOOLING)等)、 做激活和做采样等。
图45示出了运算单元的结构框图,其可用于主运算模块中的运算单元51 或从运算模块中的运算单元61。运算过程中输入数据可以是离散数据或连续数 据。数据类型判断单元71判断输入数据全是连续数据、全是离散数据或是既包 含连续数据又包含离散数据的混合数据。当输入数据全是连续数据时,连续数 据运算单元72执行相应运算。
当输入数据全是离散数据时,离散数据运算单元73执行相应运算。对于运 算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘 除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据 共有4*4=16种组合。对于每种加减乘除运算的操作,我们制作并维护该4*4的 索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
当输入数据是混合数据时,运算决定单元74根据其中的离散数据决定应对 其执行何种操作。可以针对不同的离散数据分别预先设置相应操作。然后,混 合数据运算单元75根据运算决定单元74的决定结果,执行相应操作。对于运 算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、 乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位 次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘 法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操 作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表 示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与 离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘 法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一 种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示 方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。 运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示 00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二 进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8 位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为 -8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一 个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数 据表示的真实数据的相加或者相减操作。
图46示出了连续离散转换单元。用户可以定义采用该模块将连续数据转换 为离散数据或不采用。输入连续数据,输出离散数据。该单元包括随机数产生 模块、判断模块、运算模块。对于输入的连续数据通过运算模块得到运算后的 结果,经由判断模块用随机数与运算后的结果比较,判断随机数落在哪一个区 间,从而决定出输出的离散数据的具体值。例如用户定义产生二元离散数据。 对于输入的任意连续数据x。经由运算模块计算出结果y=abs(clip(-1,1))。之后通 过判断模块,如果随机数大于y,则输出的离散数据是1,反之输出的离散数据 是0。离散数据1和0分别代表了连续数据的-1和+1。将得到的离散数据存储回 内存中。等待主从运算模块中的运算单元使用,产生相应的操作。
正向过程中的权值数据、输出输入数据可以采用离散数据表示或不采用。 对于连续数据的乘法操作,可以通过基于离散数据的异或、取非、位移等方式 代替连续数据的乘法操作。例如权值用1比特离散数据表示,0代表+1,1代表-1, 通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。
根据本披露实施例,还提供了在前述装置上执行人工神经网络正向运算的 指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、 JUMP指令和MOVE指令等,其中,这些指令的具体阐述可参见前述实施例中 的相关介绍,这里不再赘述。
图42示出了根据本披露实施例的神经网络正向运算过程的示例框图。在不 同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点 积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量, 该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神 经元向量,公式描述为out=f(w*in+b),其中out输出神经元向量、in是输入神 经元向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从运算模块6的 权值向量是权值矩阵中与该从运算模块6相对应的列向量。互联模块将输入神 经元向量[in0,…,inN]发送给所有的从运算单元,暂存在神经元缓存单元中。对 于第i个从运算单元,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量 的点积。从运算单元输出的结果经过互联模块拼成完整的输出向量并返回给主 运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量 [out0,out1,out2,…,outN]。
图43是示出根据一个实施例的单层支持离散数据表示的人工神经网络正向 计算的一种实施方法。该流程图描述利用本披露的装置和指令集实现图5所示 的一种单层离散数据表示的人工神经网络正向运算过程。该计算方法在如图2、 图5或图2A所示的计算装置中实现。
步骤S1.1,将初始指令存放到指令存储单元1中;
步骤S1.2,从指令存储单元1中读取一条指令;
步骤S1.3,对上述指令进行译码;
步骤S1.4,根据译码得到的控制信号,进行相应操作;
步骤S1.5,将操作结果写回到相应存储中。
在步骤S1.1中,可以存入初始化IO指令,用于搬运后续指令。
在步骤S1.2中,可读取的指令包括但不限于CONFIG指令、COMPUTE指 令、IO指令、NOP指令、JUMP指令和MOVE指令等。
在步骤S1.3中,根据指令的操作类型(CONFIG,COMPUTE,IO,NOP, JUMP,MOVE等)译码得到相应模块的控制信号。对于CONFIG指令,译码 得到配置其余模块的配置信息。对于COMPUTE指令,译码得到主从运算模块 的控制信号,控制不同离散数据采取的对应操作。对于IO指令,译码得到数据 访问模块的控制信号。对于NOP指令,不产生实际控制信号,只用于清空当前 装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部执行完毕。对于JUMP指令,得到跳转指令流的控制信号。对于MOVE指 令,得到在装置内部搬运数据的控制信号。
在步骤S1.4中,上述模块2-6根据控制信号执行相应操作。以执行支持离 散数据表示的神经网络正向的COMPUTE指令为例,互连模块将输入神经元向 量[in0,…,inN]发送给所有的从运算模块,暂存在神经元缓存单元中。对于第i 个从运算模块,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。 从运算模块输出的结果经过互连模块拼成完整的输出向量并返回给主运算模块, 在主运算模块中进行激活运算,得到最后的输出神经元向量 [out0,out1,out2,…,outN]。
在步骤S1.5中,各个模块将操作结果写回到相应缓存中。以执行离散数据 表示的神经网络正向的运算为例,主运算模块得到的输出神经元向量被写回到 存储单元。
图44是示出根据一个实施例的单层人工神经网络正向运算的另一种更详细 的实施方法。该流程图描述利用本披露的装置和指令集实现图4所示的一种单 层神经网络正向运算的过程。
在步骤S1,在指令缓存单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令缓存单元1的首地址读取该条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取相应的所有 人工神经网络运算指令,并将其缓存在指令缓存单元1中。
在步骤S3,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译 出的微指令,数据访问单元3从外部地址空间读取主运算模块5需要的所有数 据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5 的神经元缓存单元53,该数据支持离散表示,可以是全部离散或部分离散。
在步骤S4,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译 出的微指令,数据访问单元3从外部地址空间读取从运算模块6需要的权值矩 阵数据,该数据支持离散表示,可以是全部离散或部分离散。
在步骤S5,控制器单元2接着从指令缓存单元读入下一条CONFIG指令, 根据译出的微指令,装置配置该层神经网络计算需要的各种常数。例如,运算 单元51、61根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括 本层计算的精度设置、激活函数的数据(例如本层计算的精度位,Lrn层算法的 rang参数,AveragePooling层算法窗口大小的倒数等)。
在步骤S6,控制器单元2接着从指令缓存单元读入下一条COMPUTE指令, 根据译出的微指令,主运算模块5首先通过互联模块4将输入神经元向量发给 各从运算模块6,保存至从运算模块6的神经元缓存单元63。
在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元 61从权值缓存单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向 量),从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量 的点积运算,将中间结果通过互联返回,对于离散数据,自定义采用异或等位 运算代替点积运算或不采用。例如对于1比特的离散数据表示,0代表+1,1代表 -1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。。
在步骤S8,在互联模块4中,各从运算模块6返回的中间结果被逐级拼成 完整的中间结果向量。
在步骤S9,主运算模块5得到互联模块4的返回值,根据COMPUTE指令 译出的微指令,从神经元缓存单元53读取偏置向量,与互联模块4返回的向量 相加,然后再对相加结果做激活,该装置支持用户自定义是否将激活后的结果 离散化表示。并将最后的输出神经元向量写回至神经元缓存单元53。
在步骤S10,控制器单元接着从指令缓存单元读入下一条IO指令,根据译 出的微指令,数据访问单元3将神经元缓存单元53中的输出神经元向量存至外 部地址空间指定地址,运算结束。
对于人工神经网络批归一化运算(Batch Normalization)运算步骤与上述过程相仿。通过提供的指令集,控制器完成以下过程。控制器控制数据访问单元读 入输入的数据,之后控制主从运算模块根据batch大小求出各自位置的均值以及 方差或使用设定好的均值方差。之后控制器控制对应位置的输入数据减去均值 除以方差。最后控制器控制用处理后的数据与学习参数相乘后加上另一个学习 参数。
对于多层人工神经网络,其实现过程与单层神经网络类似,当上一层人工 神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输 出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置 地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络正向运算的装置和指令集,解决了CPU和 GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络 正向运算的支持。
通过采用针对多层人工神经网络正向运算的专用片上缓存,充分挖掘了输 入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存 访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
通过采用离散数据表示的方法,相较于浮点数、定点数等表示方法,大大 较少了装置的存储能耗等开销。可以再有限的面积上优化结构布局,提高运算 速度或性能能耗比等指标。
需要说明的是,本披露提出的连续离散转换模块可实现连续数据与离散数 据之间的相互转换,且应用到上述提供的方法实施例中。这样在识别精度不损 失的条件下极大减少了深度神经网络的计算量,从而提高运算速度,降低功耗。
本披露还提供了一种神经网络运算装置。图47为依据本实施例神经网络运 算装置的示意图。在一种可选实施例中,该神经网络运算装置可以为如图2A所 示的计算装置,在如图2A所示的计算装置内,可以添加在幂次转换单元,上述 幂次转换单元也可以添加在如图1或如图6A所示的计算装置内,当然在实际应 用中,还可以添加在用于稀疏连接的人工神经网络计算装置或人工神经网络正 向运算的装置内,本披露并不限制幂次转换单元添加在何种神经网络领域的计 算芯片、处理器或计算装置内。该幂次转换单元与存储介质连接,用于将神经 网络输入数据中非幂次权值数据转换为幂次权值数据。可选的,上述计算装置 还可以包括:控制单元以及运算单元等等,控制单元以及运算单元的具体描述 可以参见如图2A所示实施例的描述,这里不再赘述,另外,上述如图2A所示 的计算装置还可以增加或扩展如图47所示的神经网络运算装置。另一种可选实 施例中,神经网络运算装置的结构如图47,,包括:
存储单元1,用于存储数据和指令;
控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接收该 存储单元发送的数据和指令,并将指令译码成运算指令;
运算单元7,与所述控制单元连接,接收该控制单元发送的数据和运算指令, 并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;
输出神经元缓存单元8,与所述运算单元连接,用于接收运算单元输出的神 经元数据;并将其发送至所述控制单元。由此可作为下一层神经网络运算的输 入数据;以及
幂次转换单元9,其与所述存储单元连接,用于将神经网络输入数据中非幂 次权值数据转换为幂次权值数据,并发送至所述存储单元。而对于神经网络输 入数据中的幂次权值数据,则直接存入存储单元。
具体的,所述控制单元包括:
数据控制模块2,与所述存储单元连接,用于存储单元和各缓存模块之间的 数据和指令交互;
指令缓存模块3,与所述数据控制模块连接,用于接收数据控制模块发送的 指令;
译码模块4,与所述指令缓存模块连接,用于从指令缓存模块中读取指令, 并将其译码成各运算指令;
输入神经元缓存模块5,与所述数据控制模块连接,用于接收数据控制模块 发送的神经元数据;
权值缓存模块6,与所述数据控制模块连接,用于接收从数据控制模块发送 的权值数据。
进一步的,所述运算单元7,分别与所述译码模块、输入神经元缓存模块及 权值缓存模块连接,接收各运算指令、神经元数据及权值数据,用于根据各运 算指令对其接收的神经元数据和权值数据执行相应的运算。所述输出神经元缓 存单元8,与所述运算单元连接,用于接收运算单元输出的神经元数据;并将其 发送至所述控制单元的数据控制模块2。由此可作为下一层神经网络运算的输入 数据
其中,存储单元从外部地址空间接收数据和指令,该数据包括神经网络权 值数据、神经网络输入数据等。
进一步的,幂次转换操作有多种可选方式。下面列举本实施例所采用的三 种幂次转换操作:
第一种幂次转换方法:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分, din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取 下整操作。
第二种幂次转换方法:
sout=sin
sout=sin
其中,
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分, din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取 上整操作。
第三种幂次转换方法:
sout=sin
dout+=[log2(din+)]
sout=sin
其中,
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分, din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四 舍五入操作。
本披露还提供了另一种神经网络运算装置。图48为依据本实施例神经网络 运算装置的示意图。请参照图48,本实施例神经网络运算装置,包括:
存储单元101,用于存储数据和指令;该存储单元从外部地址空间接收数据 和指令,该数据包括神经网络权值数据、神经网络输入数据等。
控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接收该 存储单元发送的数据和指令,并将指令译码成运算指令;
运算单元107,与所述控制单元连接,接收该控制单元发送的数据和运算指 令,并根据运算指令对其接收的权值数据和神经元数据执行神经网络运算;
输出神经元缓存单元108,与所述运算单元连接,用于接收运算单元输出的 神经元数据,并将其发送至所述控制单元;
幂次转换单元109,其与所述存储单元连接,用于将神经网络输入数据中非 幂次神经元数据及非幂次权值数据分别转换为幂次神经元数据及幂次权值数据, 并发送至所述存储单元。而对于神经网络输入数据中的幂次神经元数据及幂次 权值数据,则直接存入存储单元;以及
幂次转换单元110,其与所述输出神经元缓存单元108连接,用于将神经网 络运算后的神经元数据转换为幂次神经元数据,并发送至所述控制单元。
进一步的,所述控制单元包括:
数据控制模块102,与所述存储单元连接,用于存储单元和各缓存模块之间 的数据和指令交互;
指令缓存模块103,与所述数据控制模块连接,用于接收数据控制模块发送 的指令;
译码模块104,与所述指令缓存模块连接,用于从指令缓存模块中读取指令, 并将其译码成各运算指令;
输入神经元缓存模块105,与所述数据控制模块连接,用于接收数据控制模 块发送的神经元数据;
权值缓存模块106,与所述数据控制模块连接,用于接收从数据控制模块发 送的权值数据。
具体的,所述运算单元107,分别与所述译码模块、输入神经元缓存模块及 权值缓存模块连接,接收各运算指令、神经元数据及权值数据,用于根据各运 算指令对其接收的神经元数据和权值数据执行相应的运算。
所述幂次转换单元110,与所述数据控制模块连接,用于将神经网络运算后 的神经元数据转换为幂次神经元数据,并发送至所述控制单元的数据控制模块 102。通过幂次转换单元110获得的幂次神经元数据可作为神经网络运算下一层 的输入神经元。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。 利用幂次数据表示方法存储神经元数据及权值数据,减小存储网络数据所需的 存储空间,降低了对终端设备存储能力的要求,同时,该数据表示方法简化了 神经元与权值数据的乘法操作,降低了对终端设备运算能力的要求,提高了终 端设备的处理速度。将运算后得到的神经元数据转换为幂次表示的神经元数据, 减小了神经网络存储资源和计算资源的开销,有利于提高终端设备的处理速度。 对于非幂次神经元数据及非幂次权值数据在输入到神经网络运算装置前可先经 过幂次转换,再输入神经网络运算装置,进一步减小了神经网络存储资源和计 算资源的开销,提高了终端设备的处理速度。
另外,本披露实施例还提供了一种神经网络运算方法,图49为本实施例神 经网络运算方法的流程图。具体而言,本披露实施例的神经网络为多层神经网 络,对于每层神经网络可按图49所示的运算方法进行运算,其中,神经网络第 一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的权 值数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转 换为幂次权值数据。请参照图49,本实施例单层神经网络运算方法,包括:
步骤S1,获取指令、神经元数据及幂次权值数据。
其中,所述步骤S1包括以下子步骤:
S11,将指令、神经元数据及权值数据输入存储单元;其中,对幂次权值数 据直接输入存储单元,对非幂次权值数据经过幂次转换单元转换后输入存储单 元;
S12,数据控制模块接收该存储单元发送的指令、神经元数据及幂次权值数 据;
S13,指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收所述数 据控制模块发送的指令、神经元数据及幂次权值数据并分发给译码模块或运算 单元。
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,具体为, 幂次权值数据包括符号位和幂次位,符号位用一位或多位比特位表示权值数据 的符号,幂次位用m位比特位表示权值数据的幂次位数据,m为大于1的正整 数。存储单元预存有编码表,提供幂次权值数据的每个幂次位数据对应的指数 数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应 的幂次权值数据为0。也就是说,当幂次权值数据的幂次位数据是编码表里的置 零幂次位数据时候,表示该幂次权值数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图49.1所示一种m为5的编码 表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为 00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。 幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应 幂次权值数据为0。
编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个 正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位 数据对应幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下, 最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次权值数据为0, 最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数 据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示 范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神 经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来 做调整。
在一种实施方式中,y为1,x的数值等于-2m-1。由此幂次权值数据所表示 的数值的指数范围为-2m-1~2m-1-1
在一种实施方式中,如图49.2所示,一种m为5,x为0,y为1的编码表 的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001 的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次 位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次 权值数据为0。如图49.3所示,另一种m为5,x为0,y为2的编码表的部分 内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时 候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次权值 数据为0。
编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正 整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数 据对应幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下, 最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次权值数据为0, 最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数 据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范 围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经 网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施方式中,y为1,x的数值等于2m-1。由此幂次权值数据所表示 的数值的指数范围为-2m-1-1~2m-1
如图49.4所示,一种m为5的编码表的部分内容,幂次位数据为11111的 时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数 据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值 为3。幂次位数据为00000的时候对应幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他 m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次权值数据为0;当 幂次位数据最高位为1时,对应幂次权值数据不为0。反之亦可,即当幂次位数 据最高位为1时,对应幂次权值数据为0;当幂次位数据最高位为0时,对应幂 次权值数据不为0。用另一种语言来描述,即幂次权值数据的幂次位被分出一个 比特来指示幂次权值数据是否为0。
在一个具体实例图49.5所示,符号位为1位,幂次位数据位为7位,即m 为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数 据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符 号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次权值数据 符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮 点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储权值数据所需的存储空间。在本实 施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定 不变的,在不同场合下,根据数据权值的数据范围采用不同的数据长度。
步骤S2,根据运算指令对神经元数据及幂次权值数据进行神经网络运算。 其中,所述步骤S2包括以下子步骤:
S21,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S22,运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模 块发送的运算指令、幂次权值数据以及神经元数据,并根据运算指令对神经元 数据及幂次表示的权值数据进行神经网络运算。
所述神经元与幂次权值乘法操作具体为,神经元数据符号位与幂次权值数 据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次 权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编 码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,编 码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次权值 数据幂次位对应的指数数值;将指数数值与神经元数据幂次位做加法操作,神 经元数据有效位保持不变。
具体实例一如图49.6所示,神经元数据为16位浮点数据,符号位为0,幂 次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次 权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数 据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位 数据对应相应的二进制补码。幂次权值为000110,则其表示的实际数值为64, 即26。幂次权值的幂次位加上神经元的幂次位结果为11011,则结果的实际数值 为1.40625*212,即为神经元与幂次权值的乘积结果。通过该运算操作,使得乘 法操作变为加法操作,减小计算所需的运算量。
具体实例二如图49.7所示,神经元数据为32位浮点数据,符号位为1,幂 次位为10000011,有效位为10010010000000000000000,则其表示的实际数值 为-1.5703125*24。幂次权值数据符号位为1位,幂次位数据位为5位,即m为 5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为 其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则 其表示的实际数值为-2-4。(神经元的幂次位加上幂次权值的幂次位结果为 01111111,则结果的实际数值为1.5703125*20,即为神经元与幂次权值的乘积结 果。
可选的,还包括步骤S3,将神经网络运算后的神经元数据输出并作为下一 层神经网络运算的输入数据。
其中,所述步骤S3可包括以下子步骤:
S31,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的 神经元数据。
S32,将输出神经元缓存单元接收的神经元数据传输给数据控制模块,通过 输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经 元,再重复步骤S1至步骤S3直到神经网络最后一层运算结束。
另外,通过幂次转换单元获得的幂次神经元数据可作为神经网络运算下一 层的输入幂次神经元,再重复步骤1至步骤3直到神经网络最后一层运算结束。 通过改变存储单元预存的整数值x和正整数值y,可以调整神经网络运算装置所 能表示的幂次神经元数据范围。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
另外,本披露实施例还提供了另一种神经网络运算方法,图50为本实施例 神经网络运算方法的流程图。
具体而言,本披露实施例的神经网络为多层神经网络,对于每层神经网络 可按图50所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据 可通过存储单元从外部地址读入,若外部地址读入的数据已经为幂次权值数据 则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据;而神经 网络第一层输入幂次神经元数据可通过存储单元从外部地址读入,若外部地址 读入的数据已经为幂次数据则直接传入存储单元,否则先通过幂次转换单元转 换为幂次神经元数据,此后各层神经网络的输入神经元数据可由在该层之前的 一层或多层神经网络的输出幂次神经元数据提供。请参照图50,本实施例单层 神经网络运算方法,包括:
步骤S4,获取指令、幂次神经元数据及幂次权值数据。
其中,所述步骤S4包括以下子步骤:
S41,将指令、神经元数据及权值数据输入存储单元;其中,对幂次神经元 数据及幂次权值数据直接输入存储单元,对非幂次神经元数据及非幂次权值数 据则经过所述第一幂次转换单元转换为幂次神经元数据及幂次权值数据后输入 存储单元;
S42,数据控制模块接收该存储单元发送的指令、幂次神经元数据及幂次权 值数据;
S43,指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收所述数 据控制模块发送的指令、幂次神经元数据及幂次权值数据并分发给译码模块或 运算单元。
所述幂次神经元数据及幂次权值数据表示神经元数据及权值数据的数值采 用其幂指数值形式表示,具体为,幂次神经元数据及幂次权值数据均包括符号 位和幂次位,符号位用一位或多位比特位表示神经元数据及权值数据的符号, 幂次位用m位比特位表示神经元数据及权值数据的幂次位数据,m为大于1的 正整数。存储单元的存储单元预存有编码表,提供幂次神经元数据及幂次权值 数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据 (即置零幂次位数据)为指定对应的幂次神经元数据及幂次权值数据为0。也就 是说,当幂次神经元数据及幂次权值数据的幂次位数据是编码表里的置零幂次 位数据时候,表示该幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图50.1所示一种m为5的编码 表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为 00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。 幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应 幂次神经元数据及幂次权值数据为0。
编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个 正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位 数据对应幂次神经元数据及幂次权值数据为0。x表示偏置值,y表示步长。在 一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对 应幂次神经元数据及幂次权值数据为0,最小和最大的幂次位数据之外的其他的 幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以 及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数 值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛, 使用更加灵活可变,可根据用户需求来做调整。
在一种实施例方式中,y为1,x的数值等于-2m-1。由此幂次神经元数据及 幂次权值数据所表示的数值的指数范围为-2m-1~2m-1-1
在一种实施例方式中,如图50.2所示一种m为5,x为0,y为1的编码表 的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001 的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次 位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次 神经元数据及幂次权值数据为0。如图50.3所示另一种m为5,x为0,y为2 的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数 据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时 候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正 整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数 据对应幂次神经元数据及幂次权值数据为0。x表示偏置值,y表示步长。在一 种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应 幂次神经元数据及幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂 次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通 过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范 围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例方式中,y为1,x的数值等于2m-1。由此幂次神经元数据及 幂次权值数据所表示的数值的指数范围为-2m-1-1~2m-1
如图50.4所示一种m为5的编码表的部分内容,幂次位数据为11111的时 候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据 为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为 3。幂次位数据为00000的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次神经元数据及幂次 权值数据为0;当幂次位数据最高位为1时,对应幂次神经元数据及幂次权值数 据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次神经元数据及幂 次权值数据为0;当幂次位数据最高位为0时,对应幂次神经元数据及幂次权值 数据不为0。用另一种语言来描述,即幂次神经元数据及幂次权值数据的幂次位 被分出一个比特来指示幂次神经元数据及幂次权值数据是否为0。
在一个具体实例方式中,如图50.5所示,符号位为1位,幂次位数据位为 7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据 及幂次权值数据为0,幂次位数据为其他数值的时候幂次神经元数据及幂次权值 数据对应相应的二进制补码。当幂次神经元数据及幂次权值数据符号位为0,幂 次位为0001001,则其表示具体数值为29,即512;幂次神经元数据及幂次权值 数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对 于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储 空间。
通过幂次数据表示方法,可以减小存储神经元数据及权值数据所需的存储 空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据 长度不是固定不变的,在不同场合下,根据神经元数据及权值数据的数据范围 采用不同的数据长度。
.利用幂次数据表示方法存储神经元数据及权值数据,减小存储网络数据所 需的存储空间,降低了对终端设备存储能力的要求,同时,该数据表示方法简 化了神经元与权值数据的乘法操作,降低了对终端设备运算能力的要求,提高 了终端设备的处理速度。将运算后得到的神经元数据转换为幂次表示的神经元 数据,减小了神经网络存储资源和计算资源的开销,有利于提高终端设备的处 理速度。对于非幂次神经元数据及非幂次权值数据在输入到神经网络运算装置 前可先经过幂次转换,再输入神经网络运算装置,进一步减小了神经网络存储 资源和计算资源的开销,提高了终端设备的处理速度。
步骤S5,根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运 算。其中,所述步骤S5包括以下子步骤:
S51,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S52,运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模 块发送的运算指令、幂次神经元数据及幂次权值数据,并根据运算指令对幂次 神经元数据及幂次权值数据进行神经网络运算。
所述幂次神经元与幂次权值乘法操作具体为,幂次神经元数据符号位与幂 次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表 找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,编码表的对应关 系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元数 据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况 下记录编码表的最大值并做减法找出幂次神经元书记及幂次权值数据幂次位对 应的指数数值;将幂次神经元数据对应的指数数值与幂次权值数据对应的指数 数值做加法操作。
具体实例一如图50.6所示,幂次神经元数据和幂次权值数据符号位为1位, 幂次位数据位为4位,即m为4。编码表为幂次位数据为1111的时候对应幂次 权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。 幂次神经元数据为00010,则其表示的实际数值为22。幂次权值为00110,则其 表示的实际数值为64,即26。幂次神经元数据和幂次权值数据的乘积为01000, 其表示的实际数值为28。
可以看到,幂次神经元数据和幂次权值的乘法运算相比于浮点数据的乘法 以及浮点数据和幂次数据的乘法都更加的简单方便。
本实施例方法还可进一步包括,步骤S6,将神经网络运算后的神经元数据 输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S6包括以下子步骤:
S61,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的 神经元数据。
S62,将输出神经元缓存单元接收的神经元数据传输给数据控制模块,通过 输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经 元,再重复步骤S4至步骤S6直到神经网络最后一层运算结束。
由于神经网络运算后得到的神经元数据也为幂次数据,将其传输给数据控 制模块所需带宽相比于浮点数据所需带宽大大减少,因此进一步减小了神经网 络存储资源和计算资源的开销,提高了神经网络的运算速度。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
所披露的实施例的所有的模块都可以是硬件结构,硬件结构的物理实现包 括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算 机。
需要说明的是,本披露提出的幂次转换单元可用于将神经网络输入数据中 非幂次权值数据转换为幂次权值数据,并实施应用到本披露提供的方法实施例 中。
通过实施本披露实施例,能够获得以下有益效果:
(1)、利用幂次数据表示方法存储神经元数据及权值数据,减小存储网络 数据所需的存储空间,降低了对终端设备存储能力的要求,同时,该数据表示 方法简化了神经元与权值数据的乘法操作,降低了对终端设备运算能力的要求, 提高了终端设备的处理速度。
(2)、将运算后得到的神经元数据转换为幂次表示的神经元数据,减小了 神经网络存储资源和计算资源的开销,有利于提高终端设备的处理速度。
(3)、对于非幂次神经元数据及非幂次权值数据在输入到神经网络运算装 置前可先经过幂次转换,再输入神经网络运算装置,进一步减小了神经网络存 储资源和计算资源的开销,提高了终端设备的处理速度。
图51是本披露实施例的处理方法的流程图。在本披露一些实施例中,提供 了一种处理方法,用于神经网络的稀疏化,如图51所示,处理方法在如图1、 图6A或图2A所示的计算装置中实现,上述方法也可以在任意的人工神经网络 计算装置实现,更具体的,可以在本披露所披露的各种人工神经网络芯片、计 算装置或处理器上实现,包括:
S101:使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;
S102:对神经网络进行训练,训练过程中已经被置为零的权值保持为零。
步骤S101实际为对神经网路进行剪枝的过程;步骤S1022中是将剪枝后的 神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被 置为0的权值将一直保持0。
其中,选取神经网络的一组权值的方法可以有以下几种,组内所有权值绝 对值的算术平均值小于第一阈值;或者组内所有权值绝对值的几何平均值小于 第二阈值;或者组内所有权值绝对值的最大值小于第三阈值。上述第一阈值、 第二阈值和第三阈值中各自的选择可以本领域技术人员可以根据情况进行预先 设定,本披露并不以此为限。
图52是本披露实施例的处理方法的另一流程图。除包括与步骤S1和S2对 于的步骤S201和S202外,还可以包括步骤S203:不断重复S201和S202直至 在保证精度不损失x%的前提下没有权值能被置为0,x为大于0小于100的数, x根据不同的神经网络以及不同的应用可以有不同的选择。在一个实施例里,x 的值为0-5。
本披露实施例中,对神经网络进行剪枝可包括:对神经网络的全连接层、 卷积层或LSTM层的权值进行剪枝。
图53是本披露实施例神经网络的全连接层的剪枝方法。如图3所示,神经 网络的全连接层可以看成是一个二维矩阵(Nin,Nout),其中Nin表示输入神经 元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。在粗粒度剪枝 时,我们先设定一个大小为Bin*Bout的滑动窗口,其中Bin为大于等于1小于 等于Nin正整数,Bout为大于等于1小于等于Nout的正整数。滑动窗口可以沿 着Bin的方向按照Sin的步长(stride)进行滑动,也可以沿着Bout方向按照Sout 的步长进行滑动,其中Sin为大于等于1小于等于Bin的正整数,Sout为大于等 于1小于等于Bout的正整数。当滑动窗口内的一组权值被选取时,这组权值将 全部被置为0,即Bin*Bout个权值将同时置为0。
图54是本披露实施例神经网络的卷积层粗粒度剪枝方法。如图4所示,神 经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin表 示输入特征图像(feature map)数量,Nout表示输出特征图像数量,(Kx,Ky)表示 卷积核(kernel)的大小。在粗粒度剪枝时,我们先设定一个大小为 Bfin*Bfout*Bx*By的滑动窗口,其中Bfin为大于等于1小于等于Nfin的正整数, Bfout为大于等于1小于等于Nfout的正整数,Bx为大于等于1小于等于Kx的 正整数,By为大于等于1小于等于Ky的正整数。滑动窗口可以沿着Bfin的方向按照Sfin的步长(stride)进行滑动,或者沿着Bfout方向按照Sfout的步长进行 滑动,或者沿着Bx方向按照Sx的步长进行滑动,或沿着By方向按照Sy的步 长进行滑动,其中Sfin为大于等于1小于等于Bfin的正整数,Sfout为大于等于 1小于等于Bfout的正整数,Sx为大于等于1小于等于Bx的正整数,Sy为大于 等于1小于等于By的正整数。当某个滑动窗口内的一组权值被选取时,这组权 值将全部被置为0,即Bfin*Bfout*Bx*By个权值将同时置为0。
LSTM层的权值由多个全连接层权值组成,假设LSTM层的权值由m个全 连接层权值组成,其中m为大于0的正整数。第i个全连接层权值为(Nin_i, Nout_i,),其中i是大于0小于等于m的正整数,Nin_i表示第i个全连接层权 值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数,在粗粒度 剪枝时,对于第i个全连接层,我们先设定一个大小为Bin_i*Bout_i的滑动窗口, 其中Bin_i为大于等于1小于等于Nin_i的正整数,Bout_i为大于等于1小于等 于Nout_i的正整数。滑动窗口可以沿着Bin_i的方向按照Sin_i的步长进行滑动, 也可以沿着Bout_i方向按照Sout_i的步长进行滑动,其中Sin_i为大于等于1 小于等于Bin_i的正整数,Sout_i为大于等于1小于等于Bout_i的正整数。当滑 动窗口内的一组权值被选取时,这组权值将全部被置为0,即Bin_i*Bout_i个权 值将同时置为0。
本披露实施例还提供一种处理装置,在一种可选实施例中,该处理装置可 以为图2A所示的计算装置,需要说明的是,上述如图2A所示的计算装置可以 添加粗粒度剪枝单元和神经网络训练单元,在实际应用中,上述如图2A所示的 计算装置也可以添加或扩展如图55所示的处理装置的模块或单元。在另一种可 选实施例中,该处理装置如图55所示,用于对神经网络进行
粗粒度剪枝包括存储器:用于存储可执行指令;包括存储器:用于存储可 执行指令;减少运算时间。
粗粒度剪枝单元:用于对神经网络进行剪枝,包括使用滑动窗口从神经网 络选取出一组权值,将选取的权值都置为零;
神经网络训练单元:用于将剪枝后的神经网络进行训练:训练过程中已经 被置为零的权值保持为零。
训练单元集成了神经网络反向训练算法,接收粗粒度剪枝后的神经网络, 采用反向训练算法进行训练,在训练过程中被剪枝的权值始终保持为0。训练单 元将训练后的神经网络或者传输给粗粒度剪枝单元进行进一步剪枝操作,或者 直接输出。
进一步的,粗粒度剪枝单元还包括全连接层粗粒度剪枝单元,实现对神经 网络的全连接层进行粗粒度剪枝操作。
进一步的,粗粒度剪枝单元还包括卷积层粗粒度剪枝单元,实现对神经网 络的卷积层进行粗粒度剪枝操作。
进一步的,粗粒度剪枝单元还包括LSTM层粗粒度剪枝单元,实现对神经 网络的LSTM层进行粗粒度剪枝操作。
本披露提供了一处理装置,该加速装置可以添加在如图2A所示计算装置内。 图56是本披露实施例的处理装置的结构示意图。如图56所示的处理装置,能 够处理粗粒度稀疏后的神经网络,充分挖掘粗粒度稀疏的特性,减少访存同时 减少运算量,从而减少运算时间并降低能耗。
处理装置包括存储单元,指令控制单元,粗粒度选数单元和运算单元。处 理装置可以是用于神经网络处理。
存储单元可用来存储神经网络的神经元,权值以及指令。
指令控制单元用于接收存储部分中的指令,经过译码后生成控制信息控制 粗粒度选数单元进行选数操作和运算单元进行计算操作
综上所述,本披露中的运算单元,可以用于执行神经网络专用指令。本披 露中的神经网络专用指令,包括但不限于所有专用于完成人工神经网络运算的 指令。神经网络专用指令包括但不限于控制指令,数据传输指令,运算指令和 逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储 介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令 完成神经网络的算术运算,包括但不仅限于矩阵运算指令,向量运算指令,标量 运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运 算指令,RBM神经网络运算指令,LRN神经网络运算指令,LCN神经网络运算指令,LSTM神经网络运算指令,RNN神经网络运算指令,RELU神经网络 运算指令,PRELU神经网络运算指令,SIGMOID神经网络运算指令,TANH神 经网络运算指令,MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑 运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现Restricted Boltzmann Machine(RBM) 神经网络运算。
其中,LRN神经网络运算指令用于实现Local Response Normalization(LRN) 神经网络运算。
其中,LSTM神经网络运算指令用于实现Long Short-Term Memory(LSTM) 神经网络运算。
其中,RNN神经网络运算指令用于实现Recurrent Neural Networks(RNN) 神经网络运算。
其中,RELU神经网络运算指令用于实现Rectified linear unit(RELU)神经网 络运算。
神经网络运算指令用于实现S型生长曲线(SIGMOID)神经网络运算。 y=sigmoid(x)=1/1+e-x,其中x,y是实数。
其中,TANH神经网络运算指令用于实现双曲正切函数(TANH)神经网络运 算。
其中,MAXOUT神经网络运算指令用于实现(MAXOUT)神经网络运算使 用maxout激活函数输出一个节点的表达式为maxouti(x)=maxj∈ [1,k](xTW…ij+bij)
其中,W为权重,b为偏置。
更具体的,它包括Cambricon指令集。
所述Cambricon指令集的特征在于,指令集中每一条指令长度为设定长度 (例如64bit或128bit),指令由操作码和操作数组成。指令集包含四种类型的指 令,分别是控制指令(control instructions),数据传输指令(data transfer instructions), 运算指令(computational instructions),逻辑指令(logical instructions)。
进一步的,控制指令用于控制执行过程。控制指令包括跳转(jump)指令和条 件分支(conditional branch)指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输。数据传 输指令包括加载(load)指令,存储(store)指令,搬运(move)指令。load指令用于将 数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用 于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传 输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
进一步的,运算指令用于完成神经网络算术运算。运算指令包括矩阵运算 指令,向量运算指令和标量运算指令。
更进一步的,矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrix multiply vector),向量乘矩阵(vector multiply matrix),矩阵乘标量(matrixmultiply scalar),外积(outer product),矩阵加矩阵(matrix add matrix),矩阵减矩阵(matrix subtract matrix)。
更进一步的,向量运算指令完成神经网络中的向量运算,包括向量基本运 算(vector elementary arithmetics),向量超越函数运算(vector transcendentalfunctions),内积(dot product),向量随机生成(random vector generator),向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加,减, 乘,除(add,subtract,multiply,divide),向量超越函数是指那些不满足任何以多项 式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函 数,反三角函数。
更进一步的,标量运算指令完成神经网络中的标量运算,包括标量基本运 算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendentalfunctions)。其中标量基本运算包括标量加,减,乘,除(add,subtract,multiply,divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数, 包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
进一步的,逻辑指令用于神经网络的逻辑运算。逻辑运算包括向量逻辑运 算指令和标量逻辑运算指令。
更进一步的,向量逻辑运算指令包括向量比较(vector compare),向量逻辑运 算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但大于,小于,等于,大于等于,小于等于和不等于。向量逻辑运 算包括与,或,非。
更进一步的,标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但大于,小于,等于,大于等于, 小于等于和不等于。标量逻辑运算包括与,或,非。
粗粒度选数单元用于接收输入神经元和非零权值位置信息,使用滑动窗口 选取神经网络的一组权值,将选取的权值都置为零,并选取出非零权值对应的 神经元。
运算单元用于接收输入被选择的神经元和非零权值,通过乘加运算单元完 成神经网络运算并将输出神经元重新传输给存储部分。
更进一步的,存储单元存放权值时只存放非零权值以及非零权值的位置信 息。
更进一步的,粗粒度选数单元只会选择出非零权值对应的神经元并传输给 运算单元。
更进一步的,加速装置还可包括预处理模块。如图57所示,该模块对原始 数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。
更进一步的,加速装置还可包括直接数据存取单元DMA(direct memory access)。
更进一步的,加速装置还可包括指令缓存,输入神经元缓存,非零权值缓 存,非零权值位置缓存,输出神经元缓存。
特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中 存放权值时只存放非零权值以及非零权值的位置信息。
特别的,DMA用于在所述存储单元、指令缓存、非零权值缓存、非零权值 位置缓存,输入神经元缓存和输出神经元缓存中进行数据或者指令读写。
指令缓存,用于存储专用指令;
非零权值缓存,用于缓存非零权值数据;
非零权值位置缓存,用于缓存非零权值位置数据;
非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经 元。
一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示 无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输 出的连接关系。另一种情形下非零权值位置缓存一一对应的方法为采用1表示 有连接,0表示无连接,每组输入与所有输出的连接状态组成一个0和1的字符 串来表示该输入的连接关系。另一种情形下非零权值位置缓存一一对应的方法 为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、 所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输 入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出 的所有输入,来表示所述输出的连接关系。
输入神经元缓存单元,用于缓存输入到粗粒度选数单元的输入神经元;
输出神经元缓存单元,用于缓存运算单元输出的输出神经元。
控制单元,用于接收指令缓存中的指令,经过译码后生成控制信息控制运 算单元进行计算操作。
粗粒度选数单元,用于接收输入神经元和非零权值位置信息,选择出需要 进行运算的神经元。粗粒度选数单元只会选择出非零权值对应的神经元并传输 给运算单元。
运算单元,用于根据存储单元中存储的指令对所述数据执行相应运算。
运算单元包括但不仅限于三个部分,第一部分一个或多个乘法器,第二部 分一个或多个加法器,优选的,第二部分包括多个加法器,多个加法器组成加 法树。第三部分为激活函数单元。第一部分将第一输入数据(in1)和第二输入 数据(in2)相乘得到相乘之后的输出(out1),过程为:out=in1*in2;第二部分 将第三输入数据in3通过加法树逐级相加得到第二输出数据(out2),其中in3是 一个长度为N的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/ 或将第三输入数据(in3)通过加法数累加之后和第四输入数据(in4)相加得到 第二输出数据(out2),过程为:out=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输 入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为:out2=in3+in4;第三部分将第五输入数据(in5)通过激活函数(active)运算得 到激活输出数据(out),过程为:out3=active(in5),激活函数active可以是sigmoid、 tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数, 可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
运算单元还可以包池化单元,池化单元将输入数据(in)通过池化运算得到 池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作, 池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是 和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括几个部分,第一部分是将所述第一输入数据和 第二输入数据相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将 第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入 数据相加得到输出数据;第三部分执行激活函数运算,对第五输入数据通过激 活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而 实现各种不同功能的运算。
以下,列举神经网络处理器实施例,对本披露的处理方法进行具体说明, 但应理解的是其并非因此限制本披露,凡是利用本具体实施例所作的等效结构 或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本 披露的保护范围内。
图58是本披露以处理方法的一具体实施例。如图8所示,其是神经网络的 一个全连接层经过粗粒度剪枝后的结果,全连接层共有8个输入神经元为n1~n8 和3个输出神经元为o1~o3。其中n3,n4,n7,n8四个输入神经元与o1,o2, o3三个输出神经元之间的权值通过粗粒度稀疏被置为零;n1与o1,o2,o3之 间通过s11,s12,s13三个权值连接,n2与o1,o2,o3之间通过s21,s22,s23 三个权值连接,n5与o1,o2,o3之间通过s31,s32,s33三个权值连接,n6与 o1,o2,o3之间通过s41,s42,s43三个权值连接;我们用11001100这个比特 串表示输入神经元与输出神经元之间的连接情况,即第一种表示非零权值位置 信息的情况,1表示输入神经元与三个输出神经元都连接,0表示输入神经元与 三个输出神经元都不连接。表1描述了实施例中神经元与权值的信息,公式1 描述了o1,o2,o3三个输出神经元的运算公式。从公式1中可以看出o1,o2, o3将接收到相同的神经元进行运算。
表1
公式1--输出神经元运算公式:
o1=n1*s11+n2*s12+n5*s13+n6*s14
o2=n1*s21+n2*s22+n5*s23+n6*s24
o3=n1*s31+n7*s32+n5*s33+n6*s34
在处理装置进行运算时,8个输入神经元,12个权值和8比特的位置信息 以及相应的指令被传输到存储单元。粗粒度选数单元接收8个输入神经元和非 零权值位置,选出n1,n2,n5,n6四个需要参与运算的神经元。运算单元接收 四个被选择的神经元与权值,通过公式1完成输出神经元的运算,然后将输出 神经元传输回存储部分。
应该理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如, 以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅 仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或 组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
通过本披露的实施例,提供了神经网络的粗粒度稀疏化的处理方法和对应 的处理装置,以及芯片、芯片封装结构、板卡和电子装置。其中,粗粒度稀疏 化处理方法能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少 非零权值位置的存储空间。神经网络处理器能够充分挖掘粗粒度稀疏的特性, 减少访存同时减少运算量,从而获得加速比并降低能耗。
需要说明的是,本披露中提供的神经网络的粗粒度稀疏化的处理实施例, 可应用到上述提供的方法实施例中,实现稀疏神经网络更加规则化,减少访存 的同时减少运算量,从而获得加速比并降低能耗。
本披露还披露了一种用于执行人工神经网络正向运算的装置,在一种可选 的实施方案中,该用于执行人工神经网络正向运算的装置可以设置如图2A所示 的计算装置、如图1或如图6A所示的计算装置内,当然在实际应用中,上述执 行人工神经网络正向运算的装置还可以设置在用于稀疏连接的人工神经网络计 算装置,上述设置有用于执行人工神经网络正向运算的装置的计算装置或计算 芯片还可以组成神经网络的处理系统,当然在实际应用中,上述用于执行人工 神经网络正向运算的装置还可以设置在神经网络领域的其他芯片、计算装置或 处理器内,该计算装置还可以包括定点数据转换模块及相应的定点数据运算模 块,所述定点数据转换模块包括浮点数据统计模块和数据转换单元;上述如图2A所示的计算装置还可以添加如图59或图60所示的单元或模块。其中,浮点 数据统计模块用于统计及计算获得人工神经网络正向运算中存储各个类型数据 所需的指数位偏移及指数位所需的比特位数;浮点数据转换单元用于实现短位 数浮点数据类型与长位数浮点数据类型,例如32位浮点数据类型的转换;浮点 运算模块用于完成针对于短位数浮点数据所需的各类运算。
其中,“长位数浮点数据”表示原来的浮点数据,例如32位浮点数据,也可 以是针对标准的64位或者16位浮点数等,这里只是以32位为具体实施例进行 说明;“较少位数浮点数据”,又名“短位数浮点数据”,表示相对于原来的浮点数 据来说,采用更少的位数来表示的浮点数据。
根据本披露实施例的多层人工神经网络的正向运算,包括两层或者两层以 上的多个神经元。对于正向运算中所需的输入、权值、偏置等数据,均采用短 位数浮点数据类型表示,并用短位数浮点数据类型参与各个层之间的运算。
图59示出了根据本披露一实施例的用于存储数据的短位数浮点数据结构的 具体表示方法。其中,1位bit位用于表示符号,M位用于表示指数部分,N位 用于表示有效位部分,由于浮点表示法要求第一位有效数字不能为0,对于二进 制来说,只能为1,因此有效位的最高位1可以作为隐藏位,不写入内存,所以 实际表示的浮点数有效位数为(N+1)位;相比于32位浮点数据表示形式,本 披露采用的短位浮点数据表示形式除了占用比特位数更少外,对于神经网络中 同一层、同一类型的数据,如第一个卷积层的所有权值数据,还另外设置了两 个标志位,其中标志位offset用于记录指数位的初始偏移,实际指数位表示=指数位表示数据+偏移量(offset),标志位EL用于记录指数位所占用的bit数M, 则有效位所占bit数N=X-1-M。
图60示出了浮点数据统计模块的示例框图。包括数据提取单元21、统计单 元22和分析单元23。该模块的目的是,通过提取采用32位浮点数据类型的神 经网络中的所有32位浮点数据,并通过分析这些数据得到神经网络中用短位数 浮点描述各个不同类型数据所需的指数位偏移(offset)及指数位长度(EL), 以便在之后的短位数浮点正向运算中有更好的效果。其中,数据提取单元用于 提取32位浮点正向训练中各个不同类型的数据;统计单元用于统计同一类型数 据的数据范围及各个数据段的数据分布情况;分析单元根据统计单元统计的结 果,得出用短位数浮点表示各个类型数据应当设定的指数位长度(EL)及指数 位偏移(offset),指数位长度(EL)的设定使得可表示的数据范围尽可能包含 该类型的所有数据。
图61示出了正向运算模块的短位数浮点计算部分的示例框图。包括运算缓 存单元31、数据转换单元32、舍入单元33。其中:运算缓存单元用精度较高的 数据类型存储正向运算的中间结果,这是由于在正向运算时,加法或者乘法运 算可能会导致数据范围扩大;运算结束后,对超出短位数浮点精度范围的数据, 进行舍入操作,接着通过数据转换单元32将缓存区的数据转换为短位数浮点数 据。
舍入单元33可以完成对超出短位浮点精度范围的数据进行舍入操作,该单 元可以为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断 舍入单元等,通过不同的舍入单元可以实现对超出短位数浮点精度范围数据进 行不同的舍入操作。
随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的32位浮点 数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)表示对原数据x直接截得短位数浮点数据所得的数(类似于对小数做向下取 整操作),w.p.表示概率,即随机舍入获得的数据y为的概率为
的概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数 据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数 据表示格式所能表示的最小正整数,即2offset-(X-1-EL)
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数 据表示格式所能表示的最小正整数,即2offset-(X-1-EL)
截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数 据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
本披露还披露了一种执行人工神经网络正向运算的方法,具体实施步骤为:
通过已训练好的神经网络32位浮点模型获取神经网络各个层的32位浮点 模型数据,包括每一层的权值、偏置、输入输出值及其它数据参数。
对不同层,不同类型数据单独进行分析,获得各类型用短位浮点类型表示 所需要的各个参数,包括需要多少位作为指数位,多少位作为有效位数,以及 指数位所需表示的范围等。
对统计得到的短位浮点表示方式用于神经网络正向运算,即神经网络正向 运算中所有数据用短位浮点格式表示,同时,对神经网络的权值和偏置数据保 留一份32位浮点数据表示的副本,然后做正向训练。对于正向运算中,某些运 算会导致数据范围扩大,如加法、乘法等,需要用缓存空间存储中间计算结果, 中间结果用32位浮点形式存储,计算完后再转回相应的短位浮点格式。32位浮 点转短位浮点过程需要用舍入方式,其中包括随机舍入、四舍五入舍入等,分 别表示如下:
随机舍入的具体操作如下式所示:
其中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的32位浮点 数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)表示对原数据x直接截得短位数浮点数据所得的数(类似于对小数做向下取 整操作),w.p.表示概率,即随机舍入获得的数据y为的概率为,的概率为
四舍五入的具体操作如下式所示:
其中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数 据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)为ε的整数倍,其值为小于或等于x的最大数。
向上舍入的具体操作如下式所示:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数 据表示格式所能表示的最小正整数,即2offset-(X-1-EL)
向下舍入的具体操作如下式所示:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数 据表示格式所能表示的最小正整数,即2offset-(X-1-EL)
截断舍入的具体操作如下式所示:
y=[x];
其中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数 据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
正向运算结束后,做反向运算时,需要通过短位浮点转32位浮点数据转换 单元将正向运算中的数据转换为32位浮点参与反向运算,其中,参与反向运算 的权值和偏置数据用正向运算中保留的32位浮点数据表示的副本,反向运算结 束后,在通过32位浮点转短位浮点数据转换单元转为短位浮点参与之后的正向 运算,同时,仍对神经网络的权值和偏置数据保留32位浮点数据表示的副本, 转换过程中需要做舍入操作,操作同正向运算中的舍入操作。
重复进行如上所述的正向及反向运算直到神经网络训练完成。
图62为根据本披露一实施例的单层人工神经网络正向运算流程图。该流程 图描述利用本披露的装置和指令集实现的一种单层神经网络正向运算的过程。 该运算过程在如图2、图5或图2A所示的计算装置中实现。对于每一层来说, 首先对输入神经元向量进行加权求和计算出本层的中间结果向量。该中间结果 向量加偏置并激活得到输出神经元向量。将输出神经元向量作为下一层的输入 神经元向量。
图63示意性示出了根据本披露一实施例的运算流程示例框图。其中,正向 运算模块51包含了图61所示的短位数浮点计算模块,正向运算得到的除权值、 偏置外的参数在进行反向传播时要先通过短位数-32位浮点转换单元53转换成 32位浮点数进行反向传播运算,反向运算模块53进行的反向传播运算结束后, 需要通过32位-短位数浮点转换单元54转换成短位数浮点数据,在转换过程中, 需对超出短位数浮点精度范围的数据进行舍入操作,此处舍入操作由舍入单元 55完成,同图61中的舍入操作。
通过将正向运算的数据用短位数浮点表示,充分利用了短位数浮点数据格 式的数据范围空间,相对于32位浮点数据表示,极大地减少了存储网络参数所 需的空间,优化了硬件的面积功耗比。
需要说明的是,本披露提出的基于人工神经网络正向运算中浮点数据的相 关处理实施例,可应用到上述提供的方法实施例(即各个应用场景的相关实施 例中),以实现浮点数据的统计、浮点数据的转换以及运算等处理。
通过实施例本披露实施例,能够获得以下有益效果:
(1)、利用短位浮点形式实现神经网络正向运算,极大减少存储网络参数 所需的空间,减低对终端设备存储能力的要求,同时,减少终端设备的硬件面 积开销,优化硬件的面积功耗比。
(2)、基于短位浮点形式的神经网络模型数据可用于专用神经网络加速器, 在神经网络运算过程中,降级了对专用神经网络加速器传输带宽的要求,同时, 减少计算带来的功耗。
本披露了一种用于执行神经网络正向运算的装置,该用于执行神经网络正 向运算的装置在一种可选的技术方案中,可以设置在如图2A所示的计算装置、 如图1或如图6A所示的计算装置内,当然在实际应用中,上述执行人工神经网 络正向运算的装置还可以设置在用于稀疏连接的人工神经网络计算装置,上述 设置有用于执行人工神经网络正向运算的装置的计算装置或计算芯片还可以组 成神经网络的处理系统,当然在实际应用中,上述用于执行人工神经网络正向 运算的装置还可以设置在神经网络领域的其他芯片、计算装置或处理器内该计 算装置可以包括定点数据转换模块及相应的定点数据运算模块,所述定点数据 转换模块包括浮点数据统计模块和数据转换单元;如图2A所示的计算装置还可 以包括如图64、65、66所示装置的模块或单元。其中,浮点数据统计模块用于 统计及计算获得人工神经网络正向运算中存储各个类型数据的合适的定点位置; 数据转换单元用于实现短位数定点数据类型与长位数浮点数据类型的转换;定 点运算模块用于完成针对于短位数定点数据所需的各类正向运算。
其中,“长位数浮点数据”表示原来的浮点数据,例如32位浮点数据,也可 以是针对标准的64位或者16位浮点数等,这里只是以32位为具体实施例进行 说明;“较少位数定点数据”,又名“短位数定点数据”,表示相对于原来的浮点数 据来说,采用更少的位数来表示的定点数据。
根据本披露实施例的多层人工神经网络的正向运算,包括两层或者两层以 上的多个神经元。对于正向运算中所需的输入、权值、偏置等数据,均采用短 位数定点数据类型表示,并用短位数定点数据类型参与各个层之间的运算。
图64示出了根据本披露实施例的用于存储数据的短位数定点数据结构的具 体表示方法。其中,1bit位用于表示符号,M位用于表示整数部分,N位用于表 示小数部分;相比于32位浮点数据表示形式,本披露采用的短位定点数据表示 形式除了占用比特位数更少外,对于神经网络中同一层、同一类型的数据,如 第一个卷积层的所有权值数据,还另外设置了一个标志位Point location记录小 数点的位置,这样可以根据实际数据的分布调整数据表示的精度与可表示数据 范围。
图65示出了浮点数据统计模块的示例框图。包括数据提取单元21、统计单 元22和分析单元23。该模块的目的是,通过提取采用32位浮点数据类型的神 经网络中的所有32位浮点数据,并通过分析这些数据得到神经网络中用短位数 定点描述各个不同类型数据所需的小数点位置Point location,以便在之后的短位 数定点正向运算中有更好的效果。其中,数据提取单元用于提取32位浮点正向 训练中各个不同类型的数据;统计单元用于统计同一类型数据的数据范围及各 个数据段的数据分布情况;分析单元根据统计单元统计的结果,得出用短位数 定点表示各个类型数据应当设定的小数点位置Point location。
图66示出了正向运算模块的短位数定点计算部分的示例框图。包括运算缓 存单元31、数据转换单元32、舍入单元33。其中:运算缓存单元用精度较高的 数据类型存储正向运算的中间结果,这是由于在正向运算时,加法或者乘法运 算可能会导致数据范围扩大;运算结束后,对超出短位数定点精度范围的数据, 进行舍入操作,接着通过数据转换单元32将缓存区的数据转换为短位数定点数 据。
舍入单元33可以完成对超出短位定点精度范围的数据进行舍入操作,该单 元可以为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断 舍入单元等,通过不同的舍入单元可以实现对超出短位数定点精度范围数据进 行不同的舍入操作。
随机舍入单元执行如下操作:
其中,ε为当前短位数定点数据表示格式所能表示的最小正数,即 2-Point_location表示对原数据x直接截得短位数定点数据所得的数(类似于对 小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为的概率为
的概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位定点数据,x表示四舍五入前的长位浮点数 据,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2-Point_location为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数定点数 据表示格式所能表示的最小正整数,即2-Point_loctaion
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数定点数 据表示格式所能表示的最小正整数,即2-Point_loctaion
截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位定点数据,x表示截断舍入前的长位浮点数 据,[x]表示对原数据x直接截得短位数定点数据所得的数。
本披露还披露了一种执行人工神经网络正向运算的方法,具体实施步骤为:
通过已训练好的神经网络32位浮点模型获取神经网络各个层的32位浮点 模型数据,包括每一层的权值、偏置、输入输出值及其它数据参数。
对不同层,对于每一种类型的数据,统计落在一列逐渐缩小的区间: [-2X-1-i,2X -1-i-2-i]i=0,1,...,N中的比例(X是短位数定点数据类型的总位 数);得到的相应的比例记为:p0,p1,...,pN,其中N是预先设定的一个正整数;
对于每一种类型的数据,预先设定一个溢出率EPL,取小数点位置Point location为:max{i|pi≥1-EPL,i∈{0,1,...,N}};即在0,1,...,N中取最大的i,使得 pi≥1-EPL;
根据所述小数点位置Point location,将所有所述长位数浮点数据采用短位数定点数据类型表示。
对统计得到的短位定点表示方式用于神经网络正向运算,即神经网络正向 运算中所有数据用短位定点格式表示,同时,对神经网络的权值和偏置数据保 留一份32位浮点数据表示的副本,然后做正向训练。对于正向运算中,某些运 算会导致数据范围扩大,如加法、乘法等,需要用缓存空间存储中间计算结果, 中间结果用32位浮点形式存储,计算完后再转回相应的短位定点格式。32位浮 点转短位定点过程需要用舍入方式,其中包括随机舍入、四舍五入舍入等,分 别表示如下:
随机舍入单元执行如下操作:
其中,ε为当前短位数定点数据表示格式所能表示的最小正数,即 2-Point_loctaion表示对原数据x直接截得短位数定点数据所得的数(类似于 对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为的概率 为的概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位定点数据,x表示四舍五入前的长位浮点数 据,ε为当前短位数定点数据表示格式所能表示的最小正整数,即2-Point_loctaion为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数定点数 据表示格式所能表示的最小正整数,即2-Point_location
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位定点数据,x表示向上舍入前的长位浮点数 据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数定点数 据表示格式所能表示的最小正整数,即2-Point_location
截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位定点数据,x表示截断舍入前的长位浮点数 据,[x]表示对原数据x直接截得短位数定点数据所得的数。
正向运算结束后,做反向运算时,需要通过短位定点转32位浮点数据转换 单元将正向运算中的数据转换为32位浮点参与反向运算,其中,参与反向运算 的权值和偏置数据用正向运算中保留的32位浮点数据表示的副本,反向运算结 束后,在通过32位浮点转短位定点数据转换单元转为短位定点参与之后的正向 运算,同时,仍对神经网络的权值和偏置数据保留32位定点数据表示的副本, 转换过程中需要做舍入操作,操作同正向运算中的舍入操作。
重复进行如上所述的正向及反向运算直到神经网络训练完成。
图67是示出根据一个实施例的单层人工神经网络正向运算流程图。该运算 过程在如图2、图5或图2A所示的计算装置中实现。该流程图描述利用本披露 的装置和指令集实现的一种单层神经网络正向运算的过程。对于每一层来说, 首先对输入神经元向量进行加权求和计算出本层的中间结果向量。该中间结果 向量加偏置并激活得到输出神经元向量。将输出神经元向量作为下一层的输入 神经元向量。
图68示意性示出了根据本披露一实施例的运算流程示例框图。该运算过程 在如图2、图5或图2A所示的计算装置中实现。其中,正向运算模块51包含 了图66所示的短位数定点计算模块,正向运算得到的除权值、偏置外的参数在 进行反向传播时要先通过X位-32位浮点转换单元53转换成32位浮点数进行反 向传播运算,反向运算模块53进行的反向传播运算结束后,需要通过32位浮 点-X位转换单元54转换成短位数定点数据,在转换过程中,需对超出短位数定 点精度范围的数据进行同图3中的舍入操作,此处舍入操作由随机舍入单元55 完成。
图69示出了根据本披露实施例的算法实施总体流程图。该运算过程在如图 2、图5或图2A所示的计算装置中实现。细节操作在对图64到图68的说明中 已经给出,详细步骤和披露内容中的具体实施步骤完全相同,这里不作赘述。
通过将正向运算的数据用短位数定点表示,充分利用了短位数定点数据格 式的数据范围空间,相对于32位浮点数据表示,极大地减少了存储网络参数所 需的空间,优化了硬件的面积功耗比。
需要说明的是,本披露提出的基于人工神经网络正向运算中浮点数据的相 关处理实施例,可应用到上述提供的方法实施例(即各个应用场景的相关实施 例中),以实现浮点数据的统计、浮点数据的转换以及运算等处理。
通过实施例本披露实施例,能够获得以下有益效果:
(1)、利用短位浮点形式实现神经网络正向运算,极大减少存储网络参数 所需的空间,减低对终端设备存储能力的要求,同时,减少终端设备的硬件面 积开销,优化硬件的面积功耗比。
(2)、基于短位浮点形式的神经网络模型数据可用于专用神经网络加速器, 在神经网络运算过程中,降级了对专用神经网络加速器传输带宽的要求,同时, 减少计算带来的功耗。
本披露包括用于片上重复数据寻址的装置及该装置的调度使用方法,在如 图2A所示的计算装置内,如该存储介质为存储器时,数据访问单元与存储器之 间的数据调用方法可以采用片上重复数据寻址的装置及该装置的调度使用方法, 上述方法还可以应用在如图1或如图6A所示的计算装置内,其可以应用在计算 装置内部的数据访问单元与存储器之间的数据调度,当然其还可以应用在神经 网络的处理系统中的多个计算装置之间的数据的调度,当然还可以应用在该方 法还可以应用在如图26,图28,图30所示的用于稀疏连接的人工神经网络计算 装置或人工神经网络正向运算的装置执行数据调度内。所示的装置内该方法针 对重复数据高效地进行读写,可以有效的实现片上重复寻址,同时支持片上片 外数据交换,通过数据和地址划分,片上数据重复寻址空间可以被扩展到片外 地址空间。本披露能够降低访存带宽需求,同时提供良好的灵活性,从而降低 片上存储开销,而且能够适用于不同场景,并不仅仅局限于机器学习类处理器。
本披露同时可通过合理调度数据,缩减片上缓存开销,从而可提供更加高 效的处理器设计支持。合理调度数据不仅仅指数据替换策略,也包括对于计算 的划分,重新安排计算顺序,使得集中访问的数据可被安排在相同的数据块中。 本披露为异构环境下利用片上重复寻址用于降低访存带宽,涉及存储单元、寻 址单元的实施和调度。
图70是优选实施例的总体结构的示例框图。如图70所示的实施例,在实 际应用中,还可以包括如图2A所示的互联模块以及运算单元,该运算单元包括 多个计算器。对于如图70所示的总体结构,举例说明,对于异构平台来说,处 理器的片上存储介质20能够存储的数据十分有限,通常来讲片上有限的资源限 制了将所有数据放置在片上的可能性,所以将大存储介质(廉价,速度稍慢) 放在片外,小存储介质(昂贵,速度快)集成在片上,需要将所有的数据划分 成为大小可以存储在片上存储介质20的数据块,通过存储容量大的片外存储介 质10和存储容量小的片上存储介质20上的数据交互将所需数据块读入或者写出。其间,片内地址索引单元40将片内数据地址按需提供给片上处理单元30。 本披露的存储介质并不限定,可以是静态随机存储器(Static Random Access Memory,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM), 增强动态随机存取存储器(EnhancedDynamic Random Access Memory,eDRAM), 寄存器堆(Register file,RF)等常见存储介质,也可是新型的存储器件,如非 易失存储器(Non-Volatile Memory,NVM)或3D存储器件等。
本披露提供一种片上重复寻址的方法,是一种当总数据过大,大于片上存 储介质20的存储容量时所使用的数据管理策略,从而可以把片外的数据读取至 片内进行快速重复寻址,当然,也可以实现片外重复寻址,然而高效的做法是 将集中访问的数据放在一起,一次搬至片内,然后直接在片内快速寻址。该方 法包括:
数据划分步骤,根据预定的数据划分原则将片上存储介质和/或片外存储介 质的数据划分为不同的数据块,所述数据划分原则包括将重用距离低于预定距 离阈值的数据划分在同一个数据块。重用距离指的是一个数据两次使用的距离, 距离是指访存次数,重用距离近的数据在运行短期内就会被访问,也即就有很 强的时间上的相关性。这些数据划分在同一数据块上可以一次载入片内存储然 后使用尽可能多的次数,从而访存更加高效。在每个数据块中,数据则按照预 定的规则存储介质内,例如,顺序存储。
数据索引步骤,根据预定的替换策略的顺序关系,依次载入不同的所述数 据块到至少一个片上处理单元,被载入的所述数据块中的重复数据在片内重复 寻址。该数据块里的数据可在片内直接重复寻址,避免从片外存储或IO多次读 写(速度慢,功耗高)。采用有效的数据划分原则,从而使得上述替换发生次数 尽可能的少(有效的数据划分原则可减少替换次数,有效的数据替换策略在此 基础上可进一步减少替换次数)。优选的是,图71所示即为数据地址划分图, 所述数据的索引地址50包括数据块地址51与块内地址52;即每个数据的地址 为当前数据块地址51与块内地址52拼接而成。将数据划分成为合理的数据块后,通过将地址划分成为片内和片外使得片内重复寻址更加高效。地址索引所 采用的技术并不局限于简单的数据索引,也包括codebook(码本)等划分实施 方案。
所述数据索引步骤包括:根据所述替换策略的顺序关系和数据块地址51, 依次载入不同的所述数据块到至少一个片上处理单元30,被载入的所述数据块 中的重复数据在片内重复寻址,当所述数据块的块内地址52全部索引完成后才 替换新的数据块,直至没有数据块被需要载入为止。在数据块内进行索引时, 只有数据的块内地址52有用,则索引的硬件单元不需要使用数据块地址51,然 而数据块地址51仍然需要记录从而可以被后续使用。
优选的是,片上存储介质20与片上处理单元30通过片内数据通路进行数 据交换;片上存储介质20与片外存储介质10通过片内外数据通路进行数据交 换,片上存储介质20或片外存储介质10至少一次从内部或外部进行读写;所 述数据以数据块为单位在片上存储介质20、片外存储介质10和/或片上处理单 元30两两之间搬运。
优选的是,所述数据块的数据量小于片上存储介质20的容量,优选能够被 其整除。
优选的是,片上存储介质20采用读写端口分离设计,从而使得数据的读出 和写入相互独立,可以同时进行。
优选的是,所述方法应用于学习类处理器。
优选的是,所述方法应用于异构环境。
优选的是,片上处理单元30为片上运算模块,所述根据预定条件选取数据, 满足所述预定条件的所述数据被划分在相同的所述数据块中。具体的是,所述 预定条件包括简单划分条件、平均为预定数目的数据块条件、与不同输出神经 元相关条件或者满足预定数学关系条件。这些是针对不同情况下具体的数据划 分准则,仍在数据划分原则限定的范围内。
如图72所示为一个优选实施例的数据划分示意图。以常见的神经网络为例 (向量运算),不同输出神经元所需的权值数据存储在不同的数据块,运算时, 需要在不同的时刻载入不同的数据块进行索引。输入神经元的值是被复用,计 算两个输出神经元用的是同样的输入。在计算输出神经元的时候需要载入相关 的权值,计算完成后则这部分权值完全不需要了;计算输出神经元时,需要载 入相关的权值。其中相同输入神经元的值只存了一份,也即计算时需要重复寻 址。相同的权值也只存了一份,也需要重复寻址获得。
如图73所示为一个优选实施例的数据划分示意图。同样以常见的神经网络 为例(向量运算),满足指定条件的权值连接被划分存储在同样的数据块中,如 实线权值连接和虚线权值连接。在不同的时刻,不同数据块被载入,运算单元 根据指定条件选取数据,如所有的输出神经元先计算与实线权值连接的相关计 算,在数据块替换后再计算与虚线权值连接的相关计算。
优选的是,所述替换策略包括顺序替换、逆序替换或者乱序替换;图74所 示即为一个优选实施例的替换策略示意图,数据被划分成为不同的数据块,在 不同时刻,根据不同的替换策略载入不同的数据块。如顺序替换,数据块按照 #1、#2、#3以此类推的顺序载入;逆序替换,数据块按照#N、#(N-1)、#(N-2) 的顺序载入;乱序替换,则根据指定的顺序读入数据块。或者,所述替换策略 包括数据写回,在数据处理完成后将最终结果或中间结果写回所述片上存储介 质、所述片外存储介质和/或所述片上处理单元。不同的替换策略应当考虑到数 据的一致性。
本披露相应提供一种实现片上重复寻址的方法的装置,该装置包括:
数据划分模块,用于根据预定的数据划分原则将片上存储介质和/或片外存 储介质的数据划分为不同的数据块,所述数据划分原则包括将重用距离低于预 定距离阈值的数据划分在同一个数据块;
数据索引模块,用于根据预定的替换策略的顺序关系,依次载入不同的所 述数据块到至少一个片上处理单元,被载入的所述数据块中的重复数据在片内 重复寻址。
优选的是,所述数据的索引地址包括数据块地址与块内地址;
所述数据索引模块用于根据所述替换策略的顺序关系和所述数据块地址, 依次载入不同的所述数据块到至少一个所述片上处理单元,被载入的所述数据 块中的重复数据在片内重复寻址,当所述数据块的所述块内地址全部索引完成 后才替换新的数据块,直至没有数据块被需要载入为止。
优选的是,所述片上存储介质与所述片上处理单元通过片内数据通路进行 数据交换;
所述片上存储介质与所述片外存储介质通过片内外数据通路进行数据交换, 所述片上存储介质或所述片外存储介质至少一次从内部或外部进行读写;所述 数据以数据块为单位在所述片上存储介质、所述片外存储介质和/或所述片上处 理单元两两之间搬运。
优选的是,所述数据块的数据量小于所述片上存储介质的容量。
优选的是,所述片上存储介质采用读写端口分离设计。
优选的是,所述装置应用于学习类处理器。
优选的是,所述装置应用于异构环境。
优选的是,所述片上处理单元为片上运算模块,所述根据预定条件选取数 据,满足所述预定条件的所述数据被划分在相同的所述数据块中。
优选的是,所述预定条件包括简单划分条件、平均为预定数目的数据块条 件、与不同输出神经元相关条件或者满足预定数学关系条件。
优选的是,所述替换策略包括顺序替换、逆序替换或者乱序替换;或者
所述替换策略包括数据写回,在数据处理完成后将最终结果或中间结果写 回所述片上存储介质、所述片外存储介质和/或所述片上处理单元。
图75所示即为一个优选实施例的利用片上数据重复寻址降低访存带宽需求 装置使用的流程图。开始计算后,
步骤S101,数据按照数据划分原则划分成为不同的数据块。
步骤S102,将数据块载入片上存储介质20。在某一时刻,只有一块数据块 被载入片上存储介质20用于片上计算,根据不同的替换策略,不同的数据块按 不同的顺序被载入用于运算。
步骤S103,对获取的数据进行片上计算。
步骤S104,判断是否所有的计算完毕没有数据块需要再次载入,如果是则 全部计算结束,否则,回到步骤S102。
图76所示即为一个优选实施例的计算单元根据地址进行重复寻址的框图。 根据地址索引,存储于地址DA的数据被计算单元#0、#2、#4所需要,则实施 例索引至地址DA,并将DA中的数据传播给所需的计算单元,即#0、#2和#4。 这个例子中,三个计算单元所需要的数据因为是一样的,所以在片上只存储了 一份,也即同一个数据要被重复寻址三次。图76中数据传递给片上计算单元的 方式并不局限于BUS总线的连接方式,也包括Crossbar结构、FAT-TREE、 H-TREE等其他连接方式。
综上所述,本披露将重用距离小于预定的距离阈值的数据划分在同一个数 据块,重用距离指的是一个数据两次使用的距离,距离是指访存次数,重用距 离近的数据在运行短期内就会被访问,也即就有很强的时间上的相关性。这些 数据划分在同一数据块上可以一次载入片内存储然后使用尽可能多的次数,从 而访存更加高效。本披露旨在利用片上的重复寻址用于降低访存带宽。本披露 的装置及其相关使用方法可以有效的提供数据的复用性和其灵活寻址的需求, 能够适用于不同场景,并不仅仅局限于机器学习类处理器。
需要说明的是,本披露提出的片上重复数据寻址的实施例,可应用到上述 提供的方法实施例中(即各个应用场景下的方法实施例),能够降低访存带宽需 求,同时提供良好的灵活性,从而降低片上存储开销。
通过实施本披露实施例,可获得如下有益效果:终端设备获取的相关数据、 运算的结果,均可以根据其重用距离对数据进行划分,然后以划分后的数据块 为一个整体进行相应的处理和保存。这样可以一次载入片内存储然后使用尽可 能多的次数。对于应用到各个应用场景中,能够简化指令的操作,从而访存更 加高效。
现有异构平台,处理器的片上能够存储的数据十分有限,需要将所有的数 据划分成为大小可以存储在片上的数据块,通过片外大存储介质和片内小存储 介质上的数据交互将所需数据块读入或者写出。
为了实现上述目的,图77示出了本披露提供一种片上数据划分读写系统100, 如图77所示的片上数据划分读写系统可以应用到如图2A、图1、图6A、图26, 图28,图30所示的装置内,当然其还可以应用到人工神经网络正向运算的装置 或用于稀疏连接的人工神经网络计算装置等等神经网络领域的其他计算装置内, 如图2A所示的计算装置的存储介质如为片外存储系统,则如图2A所示的计算 中可以包括如图77所示的片上数据划分读写系统。该系统包括:
数据划分模块10,用于根据数据划分策略将片内存储数据划分在不同区域, 分别存储在片内存储介质和片外存储介质;
预先操作模块20,用于在进行数据拼接时预先对片内存储数据的片内地址 索引进行操作处理;
数据拼接模块30,用于根据数据拼接策略将片内存储数据和片外输入数据 拼接得到所述原始数据表示。
对于异构平台来说,处理器的片上能够存储的数据十分有限,需要将所有 的数据划分成为大小可以存储在片上的数据块,通过片外大存储介质和片内小 存储介质上的数据交互将所需数据块读入或者写出。其间,片内数据地址通过 片内地址索引按需提供给片上计算单元(如图2A所示的运算单元),物理框架 如图81所示;图78和图79A、图79B所示的实施例划分只为本披露所涉及的 典型情况,本披露并不局限于特定的数据划分,极端情况如数据全部被在片上, 或者数据全部被划分在片外,也在本披露的实现范围之内。
进一步地,本披露所述片上数据划分读写系统100,还包括:
存储模块40,用于存储搬运所述片内存储介质的所述片内存储数据和来自 所述片外存储介质的所述片外输入数据;
所述存储模块40采用读写端口分离,数据的读出和写入相互独立;
所述预先处理模块20还包括:
片上处理子模块21,用于运算处理所述片内存储数据;
片外处理子模块22,用于运算处理外部输入数据处理,所述外部输入数据 包括所述片外输入数据、所述读写端口直接读入的数据。
进一步地,存储模块40还包括:
地址索引接口41,用于根据片内地址索引来索引所述片内存储数据;
数据读出接口42,用于已索引到所述片内存储数据的输出出口;
数据写入接口43,用于将要存储的数据根据写入地址写入相应存储位置。
所述片上数据划分读写系统100,优选的是数据划分模块10还包括:
地址划分子模块11,用于地址空间划分成为片外数据空间和片内数据空间;
数据替换子模块12,用于根据数据替换策略在所述片内存储介质和片外存 储介质之间进行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随 机替换;
所述数据划分策略包括定点数划分、浮点数划分;作为典型,如图79A所 示即为一个定点数实施例的数据划分,这种划分将定点数据换分成为整数部分 和小数部分,图79B所示一个浮点数实施例的数据划分。这种划分将浮点数划 分成为指数部分和小数部分。图79A和图79B所示的实施例划分只为本披露所 涉及的典型情况,本披露并不局限于特定的数据划分,极端情况,如数据全部 被在片上,或者数据全部被划分在片外,片上的缓存结构包括对输入数据的缓 存,也在本披露的设计范围之内,地址划分子模块11将索引的地址空间划分对 应到片外数据空间和片内数据空间,有需要的时候通过数据替换子模块12进行交换,将需要加速数据处理的转移到片内。数据划分模块10基于芯片中的一个 或多个片上计算单元实现,所述片上计算单元发起读写请求并处理拼接得到的 原始数据。
所述数据拼接模块30还包括:
索引拼接子模块31,用于片内片外数据传输的形式从原始数据表示转为全 部或者部分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得 所述原始数据表示;
所述数据拼接模块30读写通过片内片外数据通路或片内数据通路进行,所 述片内片外数据通路包括PCI(Peripheral Component Interconnect,外部控制器 接口)、PCIE(总线和接口标准,Peripheral Component Interface Express)、HT 互联技术(HyperTransport,超传输,是一种全新的具有可升级性的新型、高速、 高性能的端到端集成电路互联总线技术),所述片内数据通路包括FAT-TREE、 H-TREE互联技术(hierarchy tree,层次树),片内片外数据连接方式包括多芯片 互联结构;图1所示的片内片外数据连接并不局限于PCIE总线连接,也包涵多 芯片互联结构如片上网络。图1所示的片上计算单元与片内存储介质的数据通 路不局限于H-TREE,或者FAT-TREE等互联技术,通过片内片外数据通路可以 在片外寻址,从而所述片上数据划分读写系统100可以对准确无误地将各种需 要拼接的数据还原成原始数据,可以有效的支持不同的数据划分策略,从而减 少片内片外数据交换。
所述片内存储介质或所述片外存储介质中的所述数据被一次或者多次读写, 所述数据被读至一个或者多个片上运算单元;所述片内存储介质或所述片外存 储介质被一次或者多从外部进行读写,所述片内存储介质被一次或者多次从内 部读写。
图80是本披露所述片上数据划分读写方法的一个具体实施例的流程图,其 可通过本披露所述片上数据划分读写系统100实现,如图83,所述片上数据划 分读写方法包括:
步骤S701,数据划分步骤,根据数据划分策略将片上数据存储在不同区域, 分别存储在片内存储介质和片外存储介质;
步骤S702,预先操作步骤,在进行数据拼接时预先对片内存储数据的片内 地址索引进行操作处理;
步骤S703,数据拼接步骤,根据数据拼接策略将所述片内存储数据和片外 输入数据拼接得到原始数据表示。
分别通过数据划分模块10、预先操作模块20和数据拼接模块30实现,将 原始数据在片内进行无损恢复。
其中优选的,本披露所述片上数据划分读写方法需要实现对于存储的管理, 实现拼接过程需要存储模块40的支持,所述数据划分读写方法还包括:
数据存储步骤,存储搬运所述片内存储介质的所述片内存储数据和来自所 述片外存储介质的所述片外输入数据;所述存储步骤中读写端口分离,数据的 读出和写入相互独立;具体地,所述数据存储步骤还包括:
第一、根据片内地址索引来索引所述片内存储数据;
第二、将已索引到数据的输出出口;
第三、将要存储的数据根据写入地址写入相应存储位置;
读写时分别由地址索引接口41、数据读出接口42、数据写入接口43提供 支持,与片内片外数据通路和片内数据通路配合实现模块内外的数据通信,独 立的读写接口可以实现同时读写。片上数据根据片内地址索引,该片内地址索 引有可能经过预先操作模块30一定的操作(如地址偏移计算),检索片内存储 得到片内存储数据,结合外部输入至片内的数据,经过拼接操作,得到最后的 完整数据。
在一个具体实施例中,优选的本披露所述片上数据划分读写方法的一个优 选实施例的流程图,如图84所示,所述片上数据划分读写方法步骤包括:
步骤S801,地址空间划分成为片外数据空间和片内数据空间;
步骤S802,根据数据替换策略在所述片内存储介质和片外存储介质之间进 行数据替换;所述数据替换策略包括顺序替换、逆序替换以及随机替换;所述 数据划分策略包括定点数划分、浮点数划分;
步骤S803,运算处理所述片内存储数据;
步骤S804,运算处理外部输入数据处理,所述外部输入数据包括所述片外 输入数据、所述读写端口直接读入的数据。
步骤S805,片内片外数据传输的形式从所述原始数据表示转为全部或者部 分的数据索引,拼接全部或者部分的片上的所述数据索引的结果获得所述原始 数据表示。
经过处理过后的片内存储数据和片外输入数据拼接在一起,然后才能交由 后续的模块进行原始数据的处理,实现处理器的功能。
进一步地,为便于理解,下面以图80~图82所示的一个具体实施例的物理 设计框架图进行说明。
对于异构平台来说,处理器的片上能够存储的数据十分有限,需要将所有 的数据划分成为大小可以存储在片上的数据块,通过片外大存储介质(即片外 存储介质)和片内小存储介质(即片内存储介质)上的数据交互将所需数据块 读入或者写出,在数据块大小上有区分,因而划分并存储在不同区域,根据容 量需求不同增设所述片外存储介质。其间,片内数据地址通过片内地址索引按 需提供给片上计算单元,如图82通过片内地址索引接口41获取索引以及得到 索引对应的数据,图80所示即为一个实施例的片上数据索引过程,装置根据8-bit 地址索引256个存储位置,得到32-bit的数据,并不局限于图示的地址索引位宽 和片上数据存储位宽。流程的实现在硬件上还依赖于片内存储介质、片外存储 介质、片内片外数据通路以及片内数据通路之间的相互通信。
如图82所示即为一个实施例的数据拼接操作过程,片内存储数据,图示为 32bit位宽,经过片上数据处理子模块31处理,图示为32bit位宽。片上数据处 理子模块31并不局限于寻址操作,也包括其他运算,如算术计算。片外输入数 据,图示为32bit位宽,经过片外数据处理子模块32处理,图示为32bit位宽。 处理过后的片内存储数据和片外输入数据拼接在一起,图示为64bit位宽,输送 给后续模块处理,如片上计算单元,经过处理的片内存储数据和片外输入数据 并不局限于图示的位宽,数据块并不局限于特定的数据位宽,数据处理并不局 限于特定的操作,而可能包涵复杂的操作,不仅是简单的拼接,而包涵其他操作处理。
具体地,所述数据拼接步骤通过片内片外数据通路或片内数据通路进行, 尤其所述片内片外数据通路包括PCI、PCIE、HT互联技术,实现内部与片外之 间的数据流,所述片内数据通路包括FAT-TREE、H-TREE互联技术,片内片外 数据连接方式包括多芯片互联结构,如片上网络。
所述片内存储介质或所述片外存储介质中的所述数据可以被一次或者多次 读写,所述数据可以被读至一个或者多个片上运算单元;所述片内存储介质或 所述片外存储介质可以被一次或者多从外部进行读写,介质可以被一次或者多 次从内部读写。
本披露提供一种片上读写装置,包括所述片上数据划分读写系统100,所述 片上读写装置包括片内存储介质、片外存储介质、片内片外数据通路和片内数 据通路,所述片上读写装置优选的是,还包括了静态随机存储器(Static Random Access Memory,SRAM),动态随机存储器(Dynamic Random Access Memory, DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory, eDRAM),寄存器堆(Registerfile,RF)等常见存储介质,也可以是新型的存储 器件,如非易失存储器(Non-Volatile Memory,NVM)或者3D存储器件等等。
本披露将数据表示转换到索引,可以高效的进行片上地址空间内的重复寻 址,也可以进行片外地址寻址;异构环境下片上重复寻址的装置及其使用策略, 不同于直接对数据本身缓存进行加速,硬件支持需要包含片内存储介质,片外 存储介质,地址索引器件,片内片外数据通路,片内数据通路。
最后,本披露旨在用于不同的数据划分的策略、装置和方法,根据不同的 划分策略,数据被划分成为不同的部分,本披露中的装置支持不同划分策略的 装置。
综上所述,本披露的装置及其相关使用方法可以有效的提供数据的复用性 和其灵活寻址的需求,有效的降低访存带宽需求,能够适用于不同场景,并不 仅仅局限于机器学习类处理器。本披露同时可以通过合理调度数据,缩减片上 缓存开销,从而可以提供更加高效的处理器设计支持。
需要说明的是,本披露提供的片上数据划分读写的相关实施例,可应用到 上述提供的方法实施例中(即各个应用场景所对应的方法实施例)。在本披露中, 终端设备获取数据后,可根据数据划分策略将数据进行划分,并相应的保存在 片内、片外存储介质。然后在每次写入数据,都完成相应的数据划分操作;在 读取数据时,通过预先操作步骤和数据拼接步骤得到原始数据表示,从而重复 数据高效地进行读写,降低了访存带宽需求,同时提供良好的灵活性,从而降 低片上存储开销。
参阅图85,图85提供了一种基于多处理器协同的用于神经网络算法的推理 和训练的运算系统,该系统可以包括n个处理器(n大于等于2的整数),互联 装置,以及存储模块。其中,n个处理器分别可以是神经网络处理器、GPU、CPU、 FPGA、DSP等任意具备计算部分神经网络算法的设备,当然在实际应用中,上 述神经网络处理器还可以为本披露中的专用处理器(如图人工神经网络正向运 算的装置或用于稀疏连接的人工神经网络计算装置等等)、计算装置(如图1、2A或6A所示的计算装置)等等,互联装置或互联电路的数据处理装置用于连 接各处理器,负责各个处理器之间的通信以及数据传输,其连接方式可以是通 过各种片上互连技术(如总线,光互连等),也可以是通过SoC集成的方式连接 等;存储模块是用于储存神经网络的输入,输出数据,以及训练的模型参数, 以及运算过程中产生的各种中间数据,以及各处理器所需的计算指令。
互联模块可以使用但不限于环状,树状,交叉开关(crossbar),mesh,或者 torus等拓扑结构。
不同处理器之间的连接方式,以及存储方式不局限于一种,即系统中可能 存在大于一种的互连装置或存储装置。
参阅图85,图85中的处理器可以为一种用于执行人工神经网络正向运算的 装置,该执行人工神经网络正向运算的装置的具体结构可以为如图2A所示的计 算装置的结构,当然在实际应用中,该装置还可以包括指令缓存单元、控制器 单元、直接内存访问单元、H树模块、主运算模块、以及多个从运算模块,其 中:指令缓存单元用于通过直接内存访问单元读入指令并缓存读入的指训练令; 控制器单元用于从指令缓存单元读取指令,并将该指令译码成控制H树模块、 主运算模块、以及从运算模块行为的微指令;直接内存访问单元用于从外部地 址空间向主运算模块和各从运算模块的相应数据缓存单元中写数据或从所述数 据缓存单元向外部地址空间读数据;H树模块用于,在每层神经网络反向开始 计算的阶段,主运算模块通过H树模块向所有的从运算模块传输本层的输入神 经元向量,在从计算模块的计算过程完成后,H树模块逐级将各从计算模块的 输出神经元值拼成中间结果向量;主运算模块用于利用中间结果向量完成后续 计算。
该人工神经网络正向运算装置作为一种计算型处理器,可以和其他类型的 处理器(如GPU,CPU)结合在一起组成一种新的神经网络任务处理系统。
图86(a)、86(b)显示了一种可能的实施方案。图86(a)中,包含三个模块: 控制模块,包含了如CPU的控制处理器,用于进行逻辑控制,生成指令,以及 调用其他的处理器;其次,正向处理模块,包含n个(n大于等于1)正向计算 模块(人工神经网络专用正向计算装置),用于神经网络正向的计算;以及,m 个(n大于等于1)个反向计算模块(使用通用处理器,比如GPU/DSP/FPGA 等)用于进行神经网络的反向计算。控制模块和计算模块之间通过互联装置1 进行连接和通信,正向处理模块和反向处理模块之间通过互联装置2进行连接和通信。
或者正向计算模块和反向计算模块使用人工神经网络专业处理器,权值更 新使用通用处理器,比如GPU、DSP或FPGA。
图86(b)中展示了一种当n=1,m=1时的多处理器协同装置,其中包括了 CPU,神经网络处理器,以及GPU三个处理器。该装置可以用于进行神经网络 的推理和训练。
图87为一种更具体的,用于神经网络的训练和推理的多处理器协同装置。 其中,1为控制模块,即用于控制整个执行过程的控制,包含控制处理器,常见 情况下是CPU;3为正向处理模块,其中包含了n个用于进行正向计算的正向 处理模块,用于进行训练和推理过程中的正向神经元的计算,常见情况下为人 工神经网络正向运算装置;2为反向处理模块,包含m个反向计算模块,包括 了反向处理器,常见情况下为GPU/FPGA/DSP,用于进行训练过程中的反向梯 度传递,和权值更新的操作;5为存储单元,正向处理模块从存储单元1中获取 数据,包括神经元,权值等,控制处理器从存储单元3中获得数据,包括指令, 网路模型等,反向处理器从存储单元2中获得数据,包括目标标签,权值,梯 度等。
正向计算模块之间通过互联模块1进行连接,反向计算模块之间通过互连 模块2进行连接。控制模块则通过互联模块3连接正向处理模块和反向处理模 块进行通信。
图88是图87装置的变换。由于神经网络算法中,反向计算中需要用到的 神经元,突触,偏置数据是正向过程计算出来的,如果将正向数据和反向数据 分开存储会导致额外的数据传输开销,即反向计算开始之前,数据要从正向处 理模块传输到反向处理模块可以访问的存储单元中,导致整体处理速度下降, 功率增加。因此,我们设计一种正向处理模块和反向处理模块共享同一存储单 元的装置。其中,正向处理模块和反向处理模块在运算过程中所需要的数据(包 括输入原始数据,神经元,突触,梯度,标签等)都存放在存储单元1中。存 储单元1的介质可以是之前所述的类型。
图89是另一种存储单元组织结构。其中,控制模块,正向处理模块和反向 处理模块共享同一个存储单元1。这样的好处是,省去了从控制处理器(CPU) 存储器移动数据到其他处理器存储器的过程。
图89示出本披露中提出的人工神经网络正向处理模块的整体结构的示例框 图。如图89所示,该装置包括指令缓存单元1、控制器单元2、直接内存访问 单元3、H树模块4、主运算模块5和多个从运算模块6。指令缓存单元1、控 制器单元2、直接内存访问单元3、H树模块4、主运算模块5和从运算模块6 均可以通过硬件电路(例如专用集成电路ASIC)实现。
指令缓存单元1通过直接内存访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行 为的微指令,所述其他模块例如直接内存访问单元3、主运算模块5和从运算模 块6等。
直接内存访问单元3能够访存外部地址空间,直接向装置内部的各个缓存 单元读写数据,完成数据的加载和存储。
如图90所示的系统可以包括:控制模块1,存储单元模块2,互联模块3, 神经网络计算模块4。控制模块一般为CPU,存储单元1是其内存;神经网络 计算模块为若干神经网络处理器组成的计算模块,用于处理任务中的神经网络 算法的计算,如卷积,pooling或上述神经网络专用指令中的一种或多种等。控 制处理器和神经网络计算模块的连接和通信通过互连模块2实现;神经网路计 算模块中各处理器之间通过互连模块1进行连接和通信;神经网络计算模块从 存储单元2中读取计算所需要的数据(权值,输入数据等)
本披露通过将设置多种类,多个处理器,保证神经网络处理装置的灵活性, 高效性,以及可扩展性。即可以高效完成朴素的神经网络算法,通过多处理器 的写作,也可以完成复杂的如目标识别这类任务。通过将不同特点的计算任务 划分给不同的处理器,可以在让神经网络处理器发挥出其最大效率的同时,保 证装置的可扩展性,兼容性,以及保证计算精度,和计算效率。上述如图85、 图86(a)、图86(b)、图87、图88、图89、图90的结构可以应用到任何的神 经网络计算指令的计算中或神经网络应用中。本披露并不限制该图85、图86、 图87、图88、图89结构的应用场景,另外,对于不同的神经网络计算指令的 执行可能需要添加或扩展其他的功能模块,本披露也不限于添加或扩展的其他 的功能模块的具体形式,例如,扩展的功能模块可以为如图2A中的模块或单元。
需要说明的是,本披露提出的多处理器协同处理架构,可以进行各类神经 网络算法的计算,如训练和预测的卷积,池化等算法,同时可能包括的GPU和 CPU可保证支持各种类的深度学习算法,其当然可应用到上述提供的方法实施 例中(即各个应用场景下所对应的方法实施例)。
通过实施本披露实施例,可获得以下有益效果:
(1)、本披露中设置多种类、多个处理器,保证神经网络处理装置的灵活 性、高效性以及可扩展性。即可以高效完成朴素的神经网络算法,通过多处理 器的协作,也可以完成复杂任务如目标识别(此处的任务可以替换成任意场景)。
(2)、通过将不同特点的计算任务划分给不同的处理器,可以在让神经网 络处理器发挥出其最大效率的同时,保证装置的可扩展性、兼容性以及保证计 算精度,和计算效率。
(3)、针对目标任务的训练过程,可以在正向采用神经网络加速器,反向 计算采用GPU,这样既保证了本系统的灵活性和完备性(系统中的CPU和GPU 可以进行任意种类的计算),也保证了运算速度(使用神经网络加速器作为正向 加速器)。
本披露提供的互连电路的数据处理装置,上述互联电路的数据处理装置可 以连接多个如图2A所示的计算装置,当然在实际应用中,其也可以连接如图1 所示、如图1A所示以及如图6A所示的装置,在实际应用中,如果神经网络领 域的处理器或计算装置具有多个时,也可以通过上述互连电路的数据处理装置, 例如应用到连接基于多处理器协同的用于神经网络算法的推理和训练的运算系 统的多个处理器之间的连接,又如应用到如图32所示的神经网络的处理系统的 多个计算装置的连接,用于具有一个或多个事务数据源、以及一个或多个事务 数据目的地的互连电路中,并作为所述互连电路的汇聚节点,图91示意性地表 示出了包括事务数据源和事务数据目的地以及数据处理装置10、11的集成电路 2。应该理解,本披露的实施例可用于多事务数据源和目的的多路互连中的任何 位置,并且互连拓扑结构将比图91中示出的复杂得多。其中,如图91中事务 数据源或事务数据目的地4、5、6、7可以是神经网络芯片(此时所述装置可为 片间数据路由装置)、如本披露所述的各种计算装置(如图1、图2A或如图6A 所示的计算装置)或是运算单元(此时所述装置为片上数据路由装置)。图91 示例的互连电路包括两个数据处理装置10、11,这两个数据处理装置直接相连, 可相互发送事务数据,互为对方的上、下游节点,其中数据处理装置10与既是 事务数据源也是事务数据目的地的4、6相连,而数据处理装置11与既是事务 数据源也是事务数据目的地的5、7相连。
需要说明的是,一个数据处理装置的上、下游可以是数据源或目的地,也 可以是另一个数据处理装置,图91仅显示了两个数据处理装置和4个数据源/ 目的,在实际应用中可被扩展至n个数据处理装置和m个数据源/目的,并且还 可扩展至任意的n对n拓扑,本披露不做限定。
又如图91所示,事务数据节点4、6相互通信时,均只需经过作为会聚节 点的数据处理装置10,由其转发数据,5、7之间的相互传输数据也需要由数据 处理装置11转发,而事务数据节点4、6中任意一个节点向5、7节点中任意一 个节点发送数据时,均需首先发给数据处理装置10,在数据处理装置10内部建 立传输通路,由其转发给数据处理装置11,然后再转发给目的节点5或7。
本披露提供的互连电路的数据处理装置,具备:缓冲存储器,用于临时存 储经由所述装置的事务数据,优选包括多个静态RAM存储电路,每个静态RAM 存储电路包括多个存储体;缓冲存储分配器电路,用于为进入所述装置的事务 数据分配临时存储的具体位置,以达到流量控制的目的;路由选择电路,用于 执行在进入所述装置的事务数据根据其目的地选择输出的数据通路;仲裁电路, 用于执行在通过所述装置的多个数据传送请求之间的仲裁操作,使多个竞争同 一传输通路的多个数据传输按照预设的仲裁方法依次获得通路的占用权;多路 选择器电路,连接多个事务数据源和事务数据目的地,用于中转互连电路中的 数据传输。其中,图92即为所述装置的微体系结构,其中,该装置包括以下三 个部件:缓冲存储、多路选择电路和仲裁电路。可选地,还可包括其他部分, 例如路由选择电路、缓冲存储分配器电路、多个静态RAM存储电路等。图92 仅为本披露的一种具体实现方式,而实际不应局限于此,比如缓冲存储不一定 存在于每个输入处理模块,可以是多个输入处理模块共享一个缓冲存储,也可 以是每个输入处理模块中有n个缓冲存储。因此该微体系结构可被扩展成任意 个缓冲存储。而仲裁电路和多路选择电路可各有一个即可。
本披露的数据处理装置有多个输入输出端,其中每个输入端对应一个事务 数据源,也可以是事务数据在互连电路中由源到目的传输过程中途径该数据处 理装置的上游节点,且每个输入端包含多个输入端口、输出端口、至少两个复 用器、和至少两个缓冲存储器。而每个输出端对应一个事务数据目的地,也可 以事务数据传输的下游节点。上游节点在一个实施例中可同时作为事务数据的 下游节点,即与所述数据处理装置连接的所有节点均可与该装置采用全双工数 据传输。其中,可选地所述输入端可设计为输入处理模块。
到达数据处理装置的任意一个事务数据仅与一个数据输入端相关联,当事 务数据到达时,将被缓冲存储分配器电路根据该输入端的数据缓冲存储装置的 状态,为该事务数据分配一个存储位置,临时存放数据,同时也将所有到达该 输入端的数据按照先后顺序形成一个或多个等待队列,等待分配相应的数据通 路。
每个输入端相关联的存储部分中,所有事务数据根据到达的先后顺序形成 一个队列,所述路由选择电路会在每个时钟周期对每个队首的事务数据进行路 由选择,确定一个输出端,该输出端的标号将临时存储在所对应存储队列的相 关端口标识寄存器中,标识该存储队列的数据均从该端输出。当存储队列中原 有的事务数据全部发送完成后,端口标识寄存器即被清空,直到新的事务数据 到达后被更新。
所述仲裁电路在每个周期检查所有通道的传输情况和处理各个存储位置的 数据传输请求,以根据预设的顺序控制各输入端处事务数据的传输。所述仲裁 电路决定所述装置中n个缓冲存储中的待发数据的输出先后顺序,即在某个时 刻,缓冲存储中哪些数据允许被发送至输出端。
所述多路选择器电路,将所有的输入端的存储部分与所有的输出端相连, 当其中的一个或多个存储部分即缓冲存储队列中的事务数据获得通道占用权时, 多路选择器电路将在这些存储队列与其所请求的输出端间建立传输通道,使事 务数据得以从所处数据处理装置传输至互连电路的下游节点中。
作为本披露的互连电路的数据处理装置的一个实施例,图92更详细且示意 性地示出了数据处理装置10。该数据处理装置包含三个输入端11、12、13和三 个输出端1050、1100、1150,三个输入端各包含输入端口51、52、53、输出端 口54、55、56、两个复用器30、35、40、45、50、60和两个缓冲存储22、24、 26、28、30、32。其中,复用器30、40、50分别将由各自输入端口到达数据处 理装置的事务数据根据缓冲存储的当前状态存储到分配的存储部分中,其分配 过程由与复用器相关联的缓冲存储分配器电路23、25、27分别对复用器进行控制。如缓冲存储分配器电路23根据缓冲存储22、24的存储状态为当前到达数 据处理装置的事务数据分配存储位置,若缓冲存储22为空则将到达数据存至其 中,并将标识该存储器中数据目的地的寄存器置为该事务数据的目的地;若缓 冲存储22不为空则查询其数据目的地寄存器,若与到达数据的相同则将该数据 存至此,若不同则用同样的方式对缓冲存储24进行操作。
又如图92所所示,路由选择电路41、42、43分别与复用器35、45、60以 及多个缓冲存储器22、24、26、28、30、32相关联,为每个缓冲存储的队首数 据分配一个输出端(若缓冲队列中没有数据则不分配),并将各个缓冲队列中事 务数据请求传输的输出端标识写入到相应输出端标识寄存器中。仲裁电路36与 三个输入端以及路由选择电路相关联,在每个周期会对三个输入端处的缓冲存 储进行仲裁,决定哪个缓冲存储队列具有优先传输权,如缓冲存储22、24中均 为非空,则仲裁电路36按照预设的规则决定其中一个缓冲存储可以优先传输, 并将该缓冲存储标号写入优先传输标识寄存器内,若只有一个缓冲存储中有数 据则其为优先传输。类似的,缓冲存储26、28和缓冲存储30、32也采用同样 的方式仲裁出优先传输的缓冲存储部分。然后,仲裁电路检查各个优先传输的 缓冲存储相关联的输出端标识寄存器,并同时检查输出端105、110、115的状 态,若缓冲存储中待传输的事务数据请求的各输出端标号不冲突,且所有被请 求的端均空闲,则仲裁电路允许所有的事务数据传输;若部分输出端被其他缓 冲存储的事务数据所占用,则仲裁电路将请求该端的事务数据延后发送;若多 个事务数据请求同一个输出端,则仲裁电路采用预设的仲裁方式使这些事务数 据分不同的时钟周期先后发送。
又如图92所示,多路选择器电路38与复用器35、45、55以及输出端105、 110、115相连。当仲裁电路36为部分缓冲存储队列分配输出端占用权后,各存 储队列中的事务数据由复用器途径多路选择器电路38传输至相应的输出端上, 进而传输到互联电路的下游节点中。
此外,本披露还提供一种互连电路的数据处理方法,如图93所示,使用上 述的互连电路的数据处理装置进行数据处理,包括如下步骤:
S1,多路选择器模块接收新的事务数据;
S2,缓冲存储分配器模块为事务数据分配临时存储位置;
S3,路由选择模块为事务数据选择输出的数据通路;
S4,仲裁模块根据事务数据的多个数据传送请求执行仲裁操作,使竞争同 一传输通路的多个事务数据的传输按照预设的仲裁方法依次获得数据通路的占 用权;
S5,多路选择器模块为获得数据通路的占用权的事务数据分配传输通路, 并将事务数据传如互联电路的下游节点。
其中,所述步骤S4进一步包括:
步骤41,仲裁电路按照轮询的方式在各周期分别使不同的缓冲队列获得所 述优先传输权,或者,在一缓冲队列全部传输完成后再让另一缓冲队列获得所 述优先传输权。
所述步骤4还包括:
步骤42,仲裁电路判断获得所述优先传输权的事务数据所请求的输出端是 否被占用,若是,则等待下一个周期的仲裁处理,若否,则仲裁电路根据所述 事务数据的传输请求,检查是否存在多个事务数据请求争用同一输出端,若是, 则仲裁电路使竞争同一传输通路的多个事务数据依次获得所述出通路占用权, 若否,则执行上述步骤5。
图94是作为本披露的一个实施例,示意性地示出事务数据从到达数据处理 装置到获得传输通道占用权并输出至下游节点的流程图。如图94,其中,本披 露中步骤64、66、68、78以及80是必须的,其他剩余步骤应为本披露中的可 选步骤。具体的,在步骤62处,输入端接收新的事务数据。在步骤64处,缓 冲存储分配器电路基于新到达的事务数据的目的地为其分配缓冲存储。在步骤 66处,路由选择电路为步骤64存储进缓冲队列的队首数据选择输出端并保存在 相应寄存器中。在步骤68处,仲裁电路分别对每个输入端对应的缓冲存储仲裁 出获得优先传输权的缓冲队列。在步骤70处,仲裁电路判断获得优先传输前的 事务数据所请求的输出端是否被其他存储部分的数据传输所占用,若是则进入 步骤72,等待下一个周期的仲裁处理,若没被占用则进入步骤74。在步骤74 处,仲裁电路根据所有的事务数据传输请求,检查是否存在多个数据传输请求 争用同一输出端的情况,若存在则进入步骤76,通过仲裁电路决定哪一个传输 请求获得通道占用权,并在步骤78为获得通道占用权的数据分配传输通路,而 未获得占用权的则返回步骤74。对于不存在输出端争用的数据则直接进入步骤 78。在步骤78处,多路选择器电路为获得输出通路占用权的事务数据建立由缓 冲存储到输出端的数据通路,并在步骤80处将事务数据传入互连电路的下游节 点。
采用本披露实施例,能够将该装置作为一个数据的会聚节点,支持一个或 多个事务数据源和一个或多个事务数据目的地之间的数据传输。其主要功能在 于该装置(会聚节点)所连接的多个节点同时发出密集的数据传输请求时,采 用合理的仲裁逻辑分配总线的占用权。
本披露可用于众多通用或专用的计算系统环境或配置中。例如:个人计算 机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基 于微处理器的系统、置顶合、可编程的消费电子设备、网络PC、小型计算机、 大型计算机、包括以上任何系统或设备的分布式计算环境等等。
需要说明的是,本披露提供的数据处理相关实施例,可应用到上述提供的 方法实施例中,用以实现源节点和目的节点之间的数据传输。
通过实施本披露实施例,可获得以下有益效果:本披露提出的数据处理装 置可作为一个数据的会聚节点,支持一个或多个事务数据源和一个或多个事务 数据目的地之间的数据传输。其主要功能在于该装置(会聚节点)所连接的多 个节点同时发出密集的数据传输请求时,采用合理的仲裁逻辑分配总线的占用 权。
如图95所示,是本披露非线性函数的运算装置结构图。本装置主要针对定 点数据进行处理,本装置主要包括三个部分:第一部分、第二部分、第三部分。 上述非线性函数运算装置可以添加在如图1、图1A以及图6A所示的运算单元 内,当然在实际应用中,也可以添加到神经网络处理芯片的运算单元内,对于 运算单元包含非线性函数运算时,均可以将该非线性函数运算装置加载在芯片 或处理器内运算单元内,该非线性函数运算装置主要针对定点数据的处理。
其中,第一部分用于定义域变换,由定义域转换部10来实现,定义域转换 部10包括乘法器1和加法器2,用于将输入的自变量转换成查表范围内的对应 值;第二部分是查表,由查表部20来实现,查表部20包括斜率数组存储单元3, 截距数组存储单元4,索引生成单元5,索引单元6,查表部20用于根据由第一 部分输入的自变量的值,查找到对应的分段线性拟合的斜率和截距;第三部分 是线性拟合,由线性拟合部30来实现,线性拟合部30包括乘法器7和加法器8, 用于根据第二部分查表得到的斜率和截距通过线性拟合的方法得到最后结果。
乘法器1,用于输入定义域的伸缩。
加法器2,用于输入定义域的偏移。
斜率数组存储单元3,用于存储分段线性拟合的斜率数据。
截距数组存储单元4,用于存储分段线性拟合的截距数据。
索引生成单元5,用于根据输入值计算出查表的索引值。
索引单元6,用于根据索引值输出对应的斜率和截距。
乘法器7,用于计算k*x。
加法器8,用于计算k*x+b。
非线性函数的运算,可分如下情况进行:
(1)定义域需要转换,并且分段线性拟合的输入定义域是第一部分的输入 数据。
(2)定义域需要转换,并且分段线性拟合的输入定义域是第一部分的输出 数据。
(3)不需要对定义域做变换。
(4)定义域需要转变,线性拟合可以选择定义域转换之前或者之后的定义 域的值。
(5)可以选择是否进行定义域转换,线性拟合可以选择定义域转换之前或 者之后的定义域的值。
如图96所示,是本披露的定义域转换部件的内部结构。定义域转换部件的 结构如下:
如图所示,定义域转换部10是定义域转换的部件,有三个输入x,i,j,x是 非线性函数的自变量,i和j是和非线性函数的定义域范围相关的两个常数, new_x是变换定义域后的输出结果。上述部件实现的运算是:new_x=x*i+j, 做定义域变换的目的是为了便于接下来的查表操作。
对于不需要定义域做变换的请情况,即new_x=x*i+j中的i=1,j=0,此 种方式无需对输入变量进行变换,直接作为乘法器7的kx的输入变量即可。
如图97所示,是本披露的查表部件的内部结构图。查表部件结构如下:
如图所示,查表部20的输入是非线性函数的自变量,或者将非线性函数的 第一自变量经过定义域转变后的第二自变量。
斜率数组存储单元和截距数组存储单元,里面分别存储了非线性函数分段 线性拟合的直线斜率(即K)和截距(即b),在开始计算之前,斜率数组存储单 元和截距数组存储单元都应该已经存储了斜率和截距的有效数据。
上述斜率和截距的有效数据可以通过对非线性函数的最小二乘法进行线性 拟合的方式来实现。当然在本披露具体实施方式中还可以采用其他的方式来获 取上述斜率和截距的有效数据。
索引生成单元根据输入x的值,计算出索引值。索引单元根据索引值从斜 率数组存储单元和截距数组存储单元查询出该索引值对应的斜率和截距,输出 对应的斜率和截距。
如图98所示,是本披露的线性拟合部件的内部结构图。线性拟合部件结构 如下:
如图所示,线性拟合部30这个模块有三个输入,x表示自变量,可能是转 换后的也可能是没转换的(即该X可以为非线性函数的第一自变量或将第一自 变量通过该定义域转换以后的第二自变量),k和b分别是查表得到的截距和斜 率,输出是最终的结果f(x),线性拟合部30实现的运算是:f(x)=k*x+b。
如图99所示,是本披露的非线性函数的运算的第一实施例。
在本实施例中,查表部20的输入是自变量x,查找部件20根据x的值找到 对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x,并将结果和 b输出,在加法器8中计算k*x+b,计算得到最终的结果。
如图100所示,是本披露的非线性函数的运算的第二实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对x进行偏 移,查表部20的输入是加法器2的输出,查找部件20根据加法器2的输出值 找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*new_x,并 将结果和b输出,在加法器8中计算k*new_x+b,计算得到最终的结果。
如图101所示,是本披露的非线性函数的运算的第三实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对x的进行 偏移,查表部20的输入是加法器2的输出,查找部件20根据加法器2的输出 值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x,并将 结果和b输出,在加法器8中计算k*x+b,计算得到最终的结果。
如图102所示,是本披露的非线性函数的运算的第四实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对自变量x 进行偏移,查表部20的输入是加法器2的输出,查找部件20根据加法器2的 输出值找到对应的斜率k和截距b,并将k和b输出,在乘法器7中计算k*x或 者k*new_x,并将结果和b输出,在加法器8中计算k*x+b或者k*new_x+b,计 算得到最终的结果。
在本实施例中,设置自变量选择器(MUX)来选择乘法器7进行运算所需 的自变量为输入的自变量x或是经过加法器2处理后输出的自变量new_x。具体 的,如果自变量选择器闭合,即乘法器7中的x的取值可以为将非线性函数的 第一自变量经过定义域转换后的第二自变量;如自变量选择器断开,即乘法器7 中的x的取值可以为非线性函数的第一自变量。
如图103所示,是本披露的非线性函数的运算的第五实施例。
在本实施例中,乘法器1对输入自变量x进行缩放,加法器2对x进行偏 移,查表部20的输入可以选择原始输入x或者经过定义域转换的new_x,查找 部20根据输入输出值找到对应的斜率k和截距b,并将k和b输出,在乘法器 7中计算k*x或者k*new_x,并将结果和b输出,在加法器8中计算k*x+b或者 k*new_x+b,计算得到最终的结果。
在本实施例中,设置自变量选择器(MUX)来选择查表部20的输入是输入 的自变量x或是经过加法器2处理后输出的自变量new_x,并设置自变量选择器 (MUX)来选择乘法器7进行运算所需的自变量为输入的自变量x或是经过加 法器2处理后输出的自变量new_x。
下面通过一具体的例子来进一步说明本案的功效。
其定义域为:(-∞,+∞),值域为:(-1,1)。这个函数也被称为Sigmoid函数。
由如上所述,可知本披露在计算上面非线性函数,所需要的计算步骤包括 查表、乘法、加法。
在FPU中需要的运算步骤是:
1、取反:x=-x。
2、计算log2x。
3、计算log2e。
4、除法运算:第2步的结果除以第3步的结果。
5、1加上第4步的结果。
6、1除以第5步的结果。
参见Sigmoid函数的曲线,对于f(-7.75)=0.00043,f(7.75)=0.99957。
则插值范围可以设定为[-7.75,7.75],因为f(x)在这个区间外的值基本接近0 和1,设这个区间为[-a,a],即a=7.75。
假设非线性函数装置总共可以存储64组k和b,这个变量被定义为N。在 实际应用中,为了计算的准确性,也可以存储128组K和b,对于函数计算来 说,K和b的取值越多,其计算的准确率越高。
根据a和N可以得到插值区间的划分:
线段1:(-∞,7)
线段2~线段63:将(-7.75,7.75等比例划分为62个区间,也就是x每隔 0.25划分为一段(7.75*2/62=0.25)。
线段64:(7.75,+∞)。
得到64组线段斜率和截距的方法。
根据x分好的64段区间,分别采用最小二乘法进行线性拟合得到64组K 和b。
具体的,对于第0条线:k:3.56478084049e-05,b:0.000464867209246;对于 第63条线:k:0.000380432718501b:0.996623118445。由于K和b对应的值较 多,这里以第0条线以及第63条线为例。
也就是我们采用64条直线分段去拟合f(x)。
f(x)采用64条直线表示之后可以认为是一个分段函数。
得到64组k和b之后,在使用运算装置之前,需要将k和b的值存储到运 算装置的寄存器中,即将64个k值以及对应的索引值的映射关系存在斜率数组 存储单元内,将64个b值以及对应的索引值的映射关系存在截距数组存储单元 内。
上面的工作做完之后,运算装置就可以进行f(x)的近似计算,对此此计算, 无需进行定义域的转换,即x=new x。
运算装置接收一个输入x,假设x是一个32位定点数,32位定点的格式为:
1符号位 2-16整数位 17-32小数位
因为查表部件查找的范围是[-7.75,7.75],对应x的位数是符号位1和14-18 位,查表部件根据这几位的值确定index。
符号位1 14-18位 Index
1 00000 0
1 00001 1
1 11111 31
0 00000 32
0 00001 33
0 00010 34
0 11111 63
具体地,假设输入的x是-8,则x的定点二进制表示为:1111 1111 1111 1000 00000000 0000 0000。符号位是1,14-18位为00000,通过查表可得x为-8时的 index为0。因此可以得到k为3.56478084049e-05,b为0.00046。最后装置的乘 法器和加法器进行k*x+b的运算得到f(x)的值为: 3.56478084049e-05*8+0.00046=0.0001748。
由以上的运算可以看出本披露的优势:
(1)加快了计算过程,对于本披露的计算方法来说,其需要经过索引值确 定、查表获取k、b,执行乘法运算以及加法运算,其计算过程比现有的计算过 程简单,并且计算量也会小很多。
(2)避免了复杂的硬件设计,例如log2x的运算部件,降低了芯片面积和功 耗。
本披露提供一种非线性函数运算装置及方法,该装置包括控制器,查表部 和线性拟合部;上述非线性函数运算装置可以添加在如图1、图1A以及图6A 所示的运算单元内,当然在实际应用中,也可以添加到神经网络处理芯片的运 算单元内,对于运算单元包含非线性函数运算时,均可以将该非线性函数运算 装置加载在芯片或处理器内运算单元内,该非线性函数运算装置主要针对浮点 数据的处理。
控制器用于控制查表部和线性拟合部的操作,数据传输等行为。查表部为 存储器,用于存储多个线性函数的斜率值和截距值,并根据浮点数获取相应的 斜率值k和截距值b;线性拟合部根据查表得到的斜率值k和截距值b,得到相 应的线性函数y=k×x+b,并将浮点数代入线性函数,得到线性函数的函数值, 以作为浮点数在非线性函数中的函数值。本披露将非线性函数拟合为多个线性 函数,只需针对不同的自变量选择相应的线性函数,故在运算时只需要进行简 单的加法和乘法运算,因此简化硬件设计,并提高运算速度,同时降低芯片功 耗和面积。
本披露提供一种非线性函数运算装置,用于根据一输入的浮点数计算非线 性函数的函数值,装置包括:
控制器,用于对查表部,线性拟合部进行控制。控制器可以是本装置专有 的模块;当本装置作为其他装置的一部分(即作为子模块)的时候,控制器也 可以是其他装置的控制器的一部分,即通过父模块的控制器对查表部,线性拟 合部进行控制。
查表部,其中包含斜率截距存储部,以及选择部。斜率截距存储部中,存 储有多个线性函数的斜率值和截距值,其中,多个线性函数由非线性函数分段 线性拟合而得到。选择部根据浮点数获取相应的斜率值k和截距值b的存储位 置,以此获得相应的斜率和截距;由于通过一组斜率值和截距值可以确定一个 线性函数,因此,斜率值和截距值在存储时要有对应关系;
线性拟合部,用于根据从查表部输出的斜率,截距位置,从斜率截距存储 部中取得的斜率值k和截距值b,用于计算线性函数y=k×x+b,其中x为装置 的输入浮点数,即自变量,y为装置的输出。线性拟合部中包含乘法器和加法器, 用于计算上述线性函数。本披露的原理是,将复杂的非线性函数拟合为多段线 性函数,应该可知,分段的区间越小,线性函数与非线性函数的函数值越接近, 亦即精度越高。确定输入的浮点数落入分段中的哪一段,由此确定出此段对应 的线性函数,并将浮点数代入线性函数中,得到相应的函数值。
根据本披露的一种实施方式,查表部包括斜率截距存储部和选择部,其中, 斜率截距存储部用于存储多个线性函数所对应的斜率值和截距值,选择部用于 根据浮点数,计算出应该选择的斜率k和截距b在斜率截距存储部中所在的位 置。选择部中包含配置部,用于配置选择过程中所需要的参数,包括斜率,截 距,以及其他参数。配置部中还包括一个参数存储部,用于存放除斜率,截距 之外的其他参数。
配置部所配置的其他参数包括:
N:区间数,用于将非线性函数的自变量分段为N个区间,在每个区间内, 将非线性函数拟合为一个线性函数,分别得到N个线性函数,并获取N个线性 函数的斜率值和截距值,其中,将N个线性函数的斜率值和截距值存储于斜率 截距存储部,每组斜率值和截距值一一对应于N个区间中一个区间的序号index, 并将序号index存储于选择部,其中,序号index的取值范围为[0,N-1]。因此, 选择部根据浮点数落入哪个区间,获取相应的区间的序号index,并根据序号 index在斜率截距存储部得到相应的斜率值k和截距值b。
r:自变量的取值范围。,当参数配置为r时,非线性函数自变量取值范围为 (-r,r),并将边界值r的指数部分作为一偏移值bias输入至选择部,所述选择部 根据浮点数及偏移值bias,确定序号index,并根据所述序号index得到对应的 斜率值和截距值。需要说明的是,线性函数不可能覆盖所有非线性函数的取值, 故可设定非线性函数自变量取值范围为(-r,r),以是的在(-r,r)中进行线性拟合。 在设定好后,输入的浮点数落入(-r,r)中,这样只需根据浮点数所在区间就可得 到相应的序号index,
bias:偏移值。用于处理当输入不落入自变量取值范围的情况。,具体包括:
在选择部进行选择之前,配置部将从外部传入数据存储到配置部中的参数 存储部,以及斜率截距存储部。此数据的来源可以是寄存器,片上存储器,片 外存储器等,此数据传输由控制器进行控制。
选择部的具体执行过程如下,其中,所有数据,如bias,exp存放选择部内 部的存储单元中(如:寄存器),计算操作通过选择部中的运算单元进行。
当bias-exp<0时,在所述浮点数为正数情况下,index取N-1,在所述浮点 数为负数情况下序号index取0,其中,exp为所述浮点数的指数部分;
当0≤bias-exp<W-1时,
index=2W-1+2W-1-m-1+frac[F-1∶F-(W-1-m-1)+1]
其中,frac为浮点数的尾数部分,W为序号index的位宽,并且,W= log2N,m=bias–exp,F为所述浮点数的尾数的位宽,然后将index的每一位和 所述浮点数的符号位进行异或运算;
当bias-exp≥W-1,index最高位为浮点数的符号位取反,低W-1位均为浮 点数的符号位。
根据本披露的一种实施方式,线性拟合部包括乘法器和加法器,其中,乘 法器用于将查表部输出的斜率值k与浮点数相乘,得到相乘结果,加法器用于 将乘法器得到相乘结果与查表部输出的截距值b相加,得到最后的函数值y。
本披露提供还一种非线性函数运算方法,用于根据一输入的浮点数计算非 线性函数的函数值,方法包括:
S0,控制器控制配置部对装置进行配置,包括前述的各种参数,不同线性 函数的斜率和截距。
S1,控制器控制选择部根据输入的浮点数,计算出对应的序号index,用于 选择出相应的斜率值k和截距值b,其中,这些斜率和截距为预先准备好的,根 据需要拟合的非线性函数进行分段插值计算出来的,并预先存储在与本装置相 连接的外部存储器上;
S2,根据S1得到的斜率值k和截距值b,控制器控制线性拟合部,进行线 性函数y=k×x+b的计算。
上述步骤具体而言:
S0中配置部的配置方法,具体还包括:
配置部通过配置参数N,将所述非线性函数的自变量分段为N个区间,在 每个区间内,选择部根据所述配置的参数bias,N,计算出输入浮点数对应的区 间序号,根据此序号,找到斜率截距存储部中相应的斜率和截距,线性拟合部 将斜率和输入浮点数相乘,其结果和截距相加,即得到最后的输出结果(非线 性函数的拟合结果)。本装置将非线性函数拟合为一个线性函数,分别得到N个 线性函数,并获取所述N个线性函数的斜率值和截距值,其中,每组斜率值和 截距值一一对应于N个区间中一个区间的序号index,序号index的取值范围为 [0,N-1]。
步骤S0还包括,配置部配置参数r,设定非线性函数自变量取值范围为(-r,r),并将边界值r的指数部分作为一偏移值bias;此步骤还包括,根据浮点数及 所述偏移值bias,确定序号index,并根据序号index得到对应的斜率值和截距 值。
上述步骤S1中,选择部根据浮点数及所述配置部中的参数偏移值bias,确 定序号index,包括:
当bias-exp<0时,在输入浮点数为正数情况下,index取N-1,在所述浮点 数为负数情况下序号index取0,其中,exp为所述浮点数的指数部分;
当0≤bias-exp<W-1时,
index=2W-1+2w-1-m-1+frac[F-1:F-(W-1-m-1)+1]
其中,frac为所述浮点数的尾数部分,W为序号index的位宽,并且,W= log2N,m=bias–exp,F为浮点数的尾数的位宽,然后将index的每一位和所述 浮点数的符号位进行异或运算;
当bias-exp≥W-1,index最高位为浮点数的符号位取反,低W-1位均为浮 点数的符号位。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例, 并参照附图,对本披露进一步详细说明。
图103A是本披露实施例提供的非线性函数运算装置的结构图,如图103A 所示,装置包括查表部5和线性拟合部6,其中,查表部5用于根据由输入的自 变量的值x,以及外部配置进来的偏移量bias,查找到对应的分段线性拟合的斜 率和截距。
查表部5包括序号选择部1和斜率截距存储部2,序号选择部1用于根据输 入的自变量值x和配置的偏移量bias计算出index,斜率截距存储部2用于根据 序号选择部1计算出的index,选出斜率及截距。
线性拟合部6用于根据查表部5得到的斜率和截距通过线性拟合的方法得 到最后结果。线性拟合部6包括乘法器3和加法器4,其中,乘法器3用于计算 k*x,加法器4用于计算k*x+b。
图103B是本披露实施例提供的非线性函数运算装置的内部结构图,如图 103B所示,查表部5的输入值是非线性函数的自变量,以及偏移值。序号选择 部1根据所述自变量x和偏移量计算出index。
斜率截距存储部2中,Table_k和Table_b里存储了非线性函数分段线性拟 合的直线斜率和截距,Table_k和Table_b里的值是可以配置的,在开始计算之 前,它们的值应该已完成配置。根据以上所述算出的index,可以选出要使用的 斜率Table_k[index],和截距Table_b[index]。
图103C是本披露实施例中线性拟合部的内部结构图,如图103C所示,线 性拟合部6有三个输入,x表示自变量,即外部输入需要进行非线性变换的值, k和b是查表得到的截距和斜率,输出是最终的结果f(x),线性拟合部6实现的 运算是:f(x)=k*x+b。
图103D是本披露实施例的非线性函数运算的原理图,如图103D所示,查 表部3的输入是自变量x,查找部件3根据x的值找到对应的斜率k和截距b, 并将k和b输出,在乘法器4中计算k*x,并将结果和b输出,在加法器5中计 算k*x+b,计算得到最终的结果。
以下通过计算非线性函数以进一步解释本披露,将非线性函数的自 变量分段为N=64个区间,取值范围r设为7.75,即取值区间为(-7.75,7.75),通 过线性拟合以上函数所得到的插值表为:
table_k=[0,0.00048656316525353121,0.00061973162484223741,0.00078928936655365655,0.0010051440297105911,0.0012798783909594086,0.0016294587358847128,0.0020741221116775564,0.0026394821537513336,0.0033578984220486922,0.0042701575375603202,0.0054275134806431417,0.0068941251757849761,0.0087499054356052815,0.011093746329263701,0.014046996903534316,0.017756918346970331,0.022399600632704755,0.028181459980468879,0.035337917880121604,0.044127182785956003,0.054816271160400852,0.067655703617413618,0.082839110694275894,0.10044501610076587,0.12036137423557895,0.14220006304664759,0.16521866898611015,0.18827848066541336,0.20987496057486665,0.22827132183028082,0.24173985504038351,0.24887167444405783,0.24887167444405978,0.24173985504038323,0.22827132183028037,0.20987496057486754,0.18827848066541422,0.16521866898610904,0.14220006304664773,0.1203613742355779,0.10044501610076662,0.082839110694276047,0.067655703617414242,0.054816271160399312,0.044127182785955642,0.035337917880122131,0.028181459980469011,0.022399600632704762,0.017756918346970005,0.014046996903534123,0.011093746329263798,0.0087499054356035919,0.0068941251757841807,0.0054275134806434523,0.0042701575375596592,0.0033578984220488948,0.0026394821537508726,0.002074122111678265,0.0016294587358859139,0.0012798783909593549,0.001005144029710878,0.00078928936655333173,0.00061973162484123137,0.00048656316525207165,0]
table_b=[0,0.0041993251816466815,0.0051986385576176901,0.0064299574345850303,0.0079452052890187242,0.009807238238936004,0.012091883136726765,0.01489024369806616,0.018311254971669941,0.022484429652995856,0.027562682295467392,0.033725030746198308,0.041178847029904868,0.050161149061534412,0.060938175678893231,0.073802158887859029,0.089063797665378613,0.10703847125951904,0.12802378192384653,0.15226575415464311,0.17991125218316206,0.21094542275377304,0.24511595347355658,0.28185147996324666,0.32019008490568668,0.35874483153772002,0.39574347031640295,0.42918193126900617,0.45711585573612518,0.47807264767380625,0.4915012059787659,0.49811232472098371,0.49994440545964863,0.50005559454035076,0.50188767527901634,0.50849879402123443,0.52192735232619281,0.54288414426387344,0.57081806873099528,0.60425652968359678,0.6412551684622817,0.67980991509431143,0.71814852003675334,0.75488404652644192,0.78905457724623107,0.82008874781683905,0.84773424584535517,0.87197621807615311,0.8929615287404804,0.9109362023346228,0.92619784111214154,0.93906182432110619,0.94983885093847398,0.95882115297009929,0.96627496925379974,0.97243731770453612,0.97751557034700309,0.98168874502833281,0.98510975630192921,0.98790811686326541,0.99019276176106386,0.9920547947109799,0.99357004256541748,0.99480136144239018,0.99580067481836443,1]
令输入自变量x为16位浮点小数0.25,其指数exp为13,尾数frac为 b’0000000000,bias为17,m为bias–exp=4,落入0≤bias-exp<W-1区间,可 得index为26-1+26 -1-4-1+frac[16-1:16-(6-1-4-1)+1],即 25+20+0=33。
根据index从上述插值表中选出斜率k为k[33]=0.248871674444,截距b为 b[33]=0.50005559454,k×x+b的值为0.562273513151,而根据函数采用线性拟 合方式算出的结果为0.562176500886,误差为-9.7012265e-05。
综上所述,本披露通过采用线性拟合方式,避免了复杂运算,如对数计算, 通过采用乘法,加法这类速度更快的运算操作,提高计算速度,同时,避免了 复杂的硬件设计,例如log2x的运算部件,降低了芯片面积和功耗。
根据本发明实施例的一方面,提供一种获取函数值的装置,可以将复杂的 函数按照数据范围,分段拟合为简单的线性函数。求函数值时,查找模块加载 存储模块中的插值表,根据自变量值的范围,查找出相应的斜率和截距,并做 基础运算(也即加法和乘法运算)。根据自变量落在第几个大区间内,循环进行 上述过程,最终得到插值结果,即近似得到函数值。因此该披露简化了硬件设 计,提高了运算速度,并且降低了芯片的面积功耗比。
上述获取函数值的装置可以添加在如图1、图1A以及图6A所示的运算单 元内,当然在实际应用中,也可以添加到神经网络处理芯片的运算单元内,对 于运算单元包含非线性函数运算时,均可以将获取函数值的装置加载在芯片或 处理器内运算单元内,该获取函数值的装置主要针对浮点数据以及定点数据的 处理。
图104A为根据本披露一实施例的用于线性分段插值的装置的整体结构示 例框图。如图104A所示,该装置包括I/O模块A、查找模块C、存储模块B和 计算模块D。所有模块均可通过硬件电路实现,如图36所示。
I/O模块A,即输入输出模块,该模块用于输入数据(自变量)x1并将其传 递给查找模块C,以及用于从计算模块D中接收最终计算结果y并将其输出。 这里提一下,x1可以直接是原始数据,也可以是原始数据x0经过预处理后的数 据,为了叙述简明,不提及预处理过程。
存储模块B中,存放计算过程需要的插值函数f1,f2,...,fN,fp对应第p段 插值函数。数据范围预先被分为N个大区间A1,A2,...,AN,大区间Ap的左、右 端点分别用infAp、supAp表示。每个大区间Ap又分为M个小区间 fp的定义如下:
该模块存放所有的斜率和截距M的值要根据数据精度来定,M越大,精度越高,即由插值结果近似得到的函数 值越接近真实值。
查找模块C中,数据范围预先被分为N个大区间A1,A2,...,AN,首先得到 i,使得自变量x1落在Ai中。之后,依次加载(load)存储模块中的第p段插值 表,1≤p≤i-1,对用于第p次查找的自变量xp,查找相应的斜率和截距并与自变量xp一起传入计算模块D中。而后该模块接收从计算模块D得到的计 算结果xp+1当作自变量,做第p+1次的查找。最后,load存储模块中的第i段 插值表,做最后一次查找。
计算模块D中,接收从查找模块中得到的自变量xp、斜率和截距计算若1≤p≤i-1,将计算结果xp+1传递给查找模 块C做下一次的查找;若p=i,将计算结果xi+1传递给I/O模块当作最终输出结 果y,即y=xi+1
根据本披露实施例的又一方面,提供一种进行函数值获取的方法流程图。 图104B为根据本披露一实施例的进行分段插值流程图。该方法可应用于以上所 述的装置。其中,具体数据传输流程如图104C所示。
S1,I/O模块A将数据x1(自变量)输入,并将其传递给查找模块C,转步 骤S2;
S2,查找模块C中,首先得到i,使得自变量x1落在大区间Ai中。初始化 一个循环标志变量p,p=0。转步骤S3;
S3,存储模块B中存放着N段插值表。查找模块C load存储模块B中的第 p段插值表进行查找,并将查找结果,即函数插值表中对应的斜率和截距 和自变量xp一起传递给计算模块D,转步骤S4;
S4,计算模块D算出相应的插值函数值:
循环标志变量p=p+1,判断p的值——如果p<i,转步骤S5;否则,转 步骤S6;
S5,将计算结果xp+1传递给查找模块C(此时该结果作为自变量参与之后的 查找和计算),转步骤S3;
S6,将计算结果xi+1传递给I/O模块A,转步骤S7;
S7,I/O模块A输出结果y=xi+1
当然,上述方法中插值函数不仅限于线性函数,还可以是多项式进行插值, 只要是将复杂的函数通过插值方式转化为简单运算的函数,包括但不限于线性 函数和多项式函数。
以下列举具体的实施例进行说明:
实施例1
对函数F(x)=exp(x)在[0,18]上面进行线性分段插值:
首先,数据范围分为3个大区间(即N=3),A1=[0,10),A2=[10,15),A3= [15,18)。需要指出的是,这里并没有均匀地去分3个大区间。因为自变量值越 大曲线的导函数也越大,或者说曲线越陡,为了保证近似的精细,在曲线陡峭 的地方区间分小一点,而曲线平缓的地方区间没必要那么小。每个大区间再均 匀地分为10个小区间:例如
然后,给出插值函数f1(x),f2(x),f3(x)的定义:
其中,斜率和截距的取值规则为:在区间的左右端点上,fp(x) 的值与F(x)=exp(x)的值相等。例如,在大区间A2上的插值效果如图104D所 示。
最后,对于给定的自变量x1,按照图104B所示及上述的方法步骤依次进行。
实施例2
对应用于图像分类的神经网络,对激活函数F(x)=sigmoid(x)在[0,255](图 像灰度范围)上面进行线性分段插值:
首先,数据范围分为8个大区间(即N=8),A1=[0,31),A2=[32,63),A3= [64,95),…,A8=[224,255]。需要指出的是,这里并没有均匀地去分8个大区间。 因为自变量值越大曲线的导函数也越大,或者说曲线越陡,为了保证近似的精 细,在曲线陡峭的地方区间分小一点,而曲线平缓的地方区间没必要那么小。 每个大区间可以再均匀地分为32个或64个小区间(根据所需的精度来确定, 还可以是其它数量的小区间)插值函数与实施例1类似,其中,斜率和截距 的取值规则为:在区间的左右端点上,fp(x)的值与F(x)=sigmoid(x)的 值相等。
最后,对于给定的自变量x1,按照上述的方法步骤依次进行。
基于同一披露构思,本披露还提供一种专用的神经网络装置,利用分段插 值在人工神经网络的前馈运算中,计算以神经元输入值和权重值的内积作为自 变量的激活函数。
图104E为根据本披露一实施例的神经网络装置结构框图。所述神经网络装 置100,利用分段插值计算以神经元输入值和权重值的内积作为自变量的激活函 数值,包括:
存储器101,用于存储可执行指令;
处理器102,用于执行存储器中存储的可执行指令,以执行如下操作步骤:
一,输入数据作为自变量,转步骤二;
二,自变量的取值范围预先被分为N个大区间:A1,A2,...,AN,每个大区 间又均分为M个小区间,N和M为自然数,自变量落在大区间Ai中,得到i, 初始化一个循环标志变量p,p=0,转步骤三;
三,根据存放在存储器的N段插值表,加载第p段插值表进行查找,根据 自变量查找出函数插值表中对应的参数值,转步骤四;
四,根据参数值和自变量计算出相应的插值函数值,循环标志变量p=p+1, 判断p的值——如果p<i,转步骤三;否则,转步骤五;
五,输出插值函数值。
所述处理器可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专 用微处理器(例如,专用集成电路(ASIC))。处理器还可以包括用于缓存用途 的板载存储器。优选的,采用专用的神经网络处理器。
处理器用于执行本实施例描述的流程的不同动作的单一处理单元(例如C PU或者GPU)或者多个处理单元。
对于执行的操作步骤来说,可参照图35所述的分段插值的方法流程图进行。 其中,所述激活函数为双曲正切函数或者Sigmoid函数。
本实施例的装置也可以包括输入输出单元103,用以输入原始或者经预处理 后的数据,并输出经插值运算后的函数值。
本披露提出一种用于自动校正访问存储装置数据的装置,上述存储装置具 体可以为如图1或如图6A所示的算装置的存储介质,当然在实际应用中还可以 为如图1F所示的计算装置的存储介质,当然存储装置还可以为如图2A所示的 存储介质,该用于自动校正访问存储装置数据的装置还可以应用在神经网络领 域的其他计算装置内,例如人工神经网络正向运算的装置或用于稀疏连接的人 工神经网络计算装置内等等,该用于自动校正访问存储装置数据的装置包括:
存储装置模块,用于存储数据,其中所述存储装置模块包括用于存储数据 的区域与用于存储监督位的区域;
编码器模块,用于获取数据,并根据所述数据生成对应的监督位;
解码器模块,用于当所述存储装置模块读取所述数据时,所述解码器模块 根据所述监督位检验所述数据的正确性,当发现所述数据中存在错误数据时, 发送错误信号,同时将所述错误数据进行校正,并将校正后的数据发送给读写 单元,读写单元将校正后数据重新写回存储装置,以避免数据错误增加。
还包括读写单元模块,用于读写数据及读写与所述数据相对应的监督位。
所述编码器模块包括监督位生成模块与合并模块;其中所述监督位生成模 块用于根据所述数据生成监督位;所述合并模块用于将所述数据与所述监督位 按特定顺序合并到一起,并将合并的数据输出。
所述解码器模块包括校验子生成模块、数据解析模块、纠错码生成模块、 数据纠错模块;其中所述校验子生成模块用于根据所述数据与所述监督位生成 校验子,校验子用于生成纠错码;所述数据解析模块用于将所述数据与所述监 督位分离,输出待校验数据;所述纠错码生成模块用于根据所述校验子生成纠 错码与错误信息;所述数据纠错模块用于根据所述纠错码对所述待校验数据进 行纠错。
本披露还提出一种用于自动校正访问存储装置数据的方法,包括:
步骤1,获取数据,并根据所述数据生成对应的监督位;
步骤2,当所述存储装置读取所述数据时,所述解码器根据所述监督位检验 所述数据的正确性,当发现所述数据中存在错误数据时,发送错误信号,同时 将所述错误数据进行校正,并将校正后的数据发送给读写单元,读写单元将校 正后数据重新写回存储装置,以避免数据错误增加。
还包括读写数据及读写与所述数据相对应的监督位。
所述步骤1包括根据所述数据生成监督位;将所述数据与所述监督位按特 定顺序合并到一起,并将合并的数据输出。
所述步骤2包括根据所述数据与所述监督位生成校验子,校验子用于生成 纠错码;将所述数据与所述监督位分离,输出待校验数据;根据所述校验子生 成纠错码与错误信息;根据所述纠错码对所述待校验数据进行纠错。
以下为本披露实施例,如下所示:
本披露提供一种访问数据中监督位生成的方法并且在出现无法纠正的错误 时返回错误信号并进行校正后重新写回存储装置,当出现可校正的错误时,将 校正后的数据重新写回存储装置,达到自动校正的目的。
本披露的具体技术如下:
在使用ECC算法解码的过程中,同时生成错误信号,标志着数据中错误的 个数和错误是否可修复信号,当出现可校正的错误时,则将校正后的数据重新 写回存储装置。
本披露的原理是:在ECC解码的过程中,利用纠错码去检查是否出现了不 可校正的错误。如果出现了不可校正的错误,ECC解码模块则输出一个错误信 号,当出现可校正的错误时,则将校正后的数据重新写回存储装置。
通过本披露提供的监督位生成方法,使得在解码的过程中的发生的不可校 正的数据错误可以及时的表现出来,并且当出现可校正的错误时,将校正后的 数据重新写回存储装置,实现自动校正数据,避免了数据错误的增加最后导致 校正失败的情况。
如图104E为本披露的结构图,在写数据时,ECC编码器根据写数据生成 监督位,并将数据和监督位一同发送给读写单元;读写单元将数据和监督位一 起写入到存储装置。在读数据时,读写单元将数据和监督位一起从存储装置读 出并且发送给ECC解码器,ECC解码器根据数据监督位判断有没有出现错误, 如果错误可校正,将校正后的数据和错误信号输出,如果错误不可校正,输出 一个不可校正的错误信号,当出现可校正的错误时,则将校正后的数据发送给 ECC编码器,ECC编码器将校正后的数据重新编码后,由读写单元重新写回到 存储装置。
如图105本披露中ECC编码器结构图和功能:
ECC编码器根据输入数据生成带监督位的输出数据,监督位生成模块根据 输入数据生成监督位,合并模块将输入数据和监督按照特定顺序合并到一起, 并将合并的数据输出。
ECC编码器子模块的功能:
1.监督位生成模块:根据输入数据生成监督位;
2.合并模块:合并模块将输入数据和监督位按特定顺序组合到一起。
如图105A本披露ECC编码流程图,步骤101,ECC编码器获得输入数据; 步骤102,ECC编码器根据输入数据计算得到监督位;步骤103,ECC编码器将 监督位和数据按照特定顺序组合;104,ECC编码器将组合后的数据和监督位输 出到读写模块。
如图106,ECC解码器结构图和各个模块的功能:
ECC解码器根据输入的数据和监督位,对数据进行校正,各个模块的功能:
1.校验子生成模块:根据输入数据和监督位生成校验子,校验子用来生成 纠错码。
2.数据解析模块:将输入的数据和监督位分离,输出待校验数据。
3.纠错码生成模块:根据校验子生成纠错码和错误信息。
4.数据纠错模块:根据纠错码对待校验数据进行纠正。
如图107,ECC解码流程,具体流程为:ECC解码器获得输入数据和监督 位,ECC解码器根据数据和监督位生成校验子,同时ECC解码器根据数据和监 督位生成待校验数据;ECC解码器根据校验子生成纠错码;ECC解码器根据纠 错码校正待校验数据;ECC解码器输出错误信息和校正后的数据。
以8比特数据,检测2处随机错误,并校正一处错误为例,则由上面描述 可知,随机错误p=2,校正错误数量q=1,ECC监督位m=2*p+q=5。
下面操作的符号说明:
^:异或操作
!:取反操作
|:或操作
&:与操作
<<:左移操作
编码:
在ECC编码器中,监督位生成模块根据输入数据d[8]生成5位的监督码c[5], 生成规则如下:
c[0]=d[0]^d[1]^d[3]^d[4]^d[6];
c[1]=d[0]^d[2]^d[3]^d[5]^d[6];
c[2]=d[1]^d[2]^d[3]^d[7];
c[3]=d[4]^d[5]^d[6]^d[7];
c[4]=d[0]^d[1]^d[2]^d[4]^d[5]^d[7];
在ECC的合并模块中,合并模块将数据和监督位按照特定顺序组合到一起, 按照上面的例子,组合之后的结果为:
c[0],c[1],d[0],[c2],d[1],d[2],d[3],c[7],d[4],d[5],d[6],d[7],[c4]
组合之后的结果会被存入到存储装置中,组合后的数据用e[13]表示。
解码:
校验子生成模块:校验子生成模块会根据13位带监督位的数据e[13]生成5 位校验子s[5],规则如下:
s[0]=e[0]^e[2]^e[4]^e[6]^e[8]^e[10];
s[1]=e[1]^e[2]^e[5]^e[6]^e[9]^e[10];
s[2]=e[3]^e[4]^e[5]^e[6]^e[11]^0;
s[3]=e[7]^e[8]^e[9]^e[10]^e[11]^0;
s[4]=e[0]^e[1]^e[2]^e[3]^e[4]^e[5]^
e[6]^e[7]^e[8]^e[9]^e[10]^e[11]^e[12];
数据解析模块按照ECC编码器合并模块的规则,将对应的待校正数据解析 出来。
纠错码生成模块根据校验子生成错误信息和出错数据的位置。
出错位置为location=(!s[4])<<4+s[3:0];
不可校正的错误标志fatal=(|s[3:0])&!s[4];
对于数据出错标志error,如果错误位置是在待校验数据的位置则返回1, 否则0;
数据纠错模块根据纠错码生成的出错位置对数据进行校正,即根据出错位 置对相应的数据取反:
d[location]=!d[location];
到此解码结束,如果数据出错标志为1,则出现了可以校正的错误,ECC 解码器将校正后的数据发送给ECC编码器,然后重新编码后写回到存储装置。
图108是本披露提供的运算装置的结构示意图,上述运算装置内的指令可 以是本披露提供的任何指令或任何指令的任意组合,包括但不限于:向量指令、 矩阵指令、非线性运算指令等等。如图108所示,装置包括指令模块10、数据 模块20和运算模块30。指令模块10用于缓存指令,并向数据模块20及运算模 块30提供指令。指令模块10中的指令控制数据模块20的数据流的方向,数据 模块20的数据会影响指令模块10中对依赖关系的处理,同时,指令模块10中 的指令控制运算模块30的具体运算,运算模块30的运算是否完成会控制指令 模块10是否读取新的指令;数据模块20为运算模块30提供具体的运算数据, 运算模块30会将运算结果送回数据模块20进行保存。
图109是本披露提供的装置的指令模块的示意图。如图109所示,指令模 块10包括指令缓存单元11、指令处理单元12、依赖关系处理单元13和存储队 列单元14。其中,指令处理单元12又分为三个部分:取指部分121、译码部分 122和指令队列部分123。指令缓存单元11用于在指令执行过程中缓存该指令, 当一条指令执行完之后,如果该指令同时也是指令缓存单元11中未被提交指令 中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置 状态的改变将无法撤销。取指部分121用于从指令缓存单元11中取出下一条将 要执行的指令,并将该指令传给译码部分122;译码部分122用于对指令进行译 码,并将译码后指令传给指令队列123;考虑到不同指令在包含的标量寄存器 124上有可能存在依赖关系,设置指令队列123用于缓存译码后的指令,当依赖 关系被满足之后发射指令。标量寄存器堆124,提供装置在运算过程中所需的标 量寄存器。
依赖关系处理单元13用于处理当前指令与前一条指令可能存在的数据依赖 关系,例如,在从数据模块20中访问数据时,前后指令可能会访问同一块存储 空间中的数据,如果前一条指令未执行完毕,就对该数据进行操作的话,会影 响该数据的一致性,从而导致运算结果的正确性。因此,当前指令如果被依赖 关系处理单元13检测到与之前的指令的数据存在依赖关系,该指令必须在存储 队列单元14内等待至依赖关系被消除,其中,存储队列单元14是一个有序队 列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至依赖关系被 消除。
图110是本披露中数据模块的结构示意图。如图3所示,数据模块20包括, 数据I/O单元21、数据暂存单元22。优选的,还包括数据处理单元23。数据I/O 单元21用于与内存进行交互,即能够直接从内存中读取数据或直接将数据写入 内存中。数据暂存单元22可以通过各种不同存储器件(SRAM、eDRAM、DRAM、 忆阻器、3D-DRAM或非易失存储等)实现。数据暂存单元22能够存储任意规 模的运算数据,如不同长度的向量数据。数据I/O单元21根据指令将必要的运 算数据读取出来,并暂存在数据暂存单元22上,由于采用高速暂存存储器,从 而使得可以存储不同/相同长度的运算数据,同时,在运算过程中,数据暂存单 元22将数据送入数据处理单元23,数据处理单元根据指令处理待运算数据,包 括切分处理、循环处理等,而后提供至运算模块30。
具体地,当参与运算的两个运算数据长度均小于等于运算模块的运算规模 时,数据暂存单元22将待运算数据输入至数据处理单元23,数据处理单元23 根据指令得到待运算数据的规模不大于运算模块一次性可处理的数据规模,于 是直接将该运算数据提供至运算模块30。举例来说,运算单元30是的运算规模 是一次性处理两组向量的运算,每组向量包括4个元素,如(A1,A2,A3,A4) 和(B1,B2,B3,B4)之间的运算是该运算单元30的运算规模;两个运算数 据均是小于4个元素的向量,如(A1,A2,A3)和(B1,B2),此时,可直接 将(A1,A2,A3)和(B1,B2)提供至运算模块30进行运算。
当参与运算的两个运算数据长度均大于运算模块的运算规模时,数据暂存 单元22将待运算数据输入至数据处理单元23,数据处理单元23根据指令得到 待运算数据的规模大于运算模块一次性可处理的数据规模,于是将每个运算数 据进行拆分处理,拆分为多个长度均小于等于运算规模的子运算数据,并控制 该子运算数据依次输送至运算模块进行运算。举例来说,运算单元30的运算规 模是一次性可处理两组向量运算的运算规模,其中每组向量包括4个元素,如 (A1,A2,A3,A4)和(B1,B2,B3,B4)之间的运算是该运算单元30的 运算规模;两个运算数据均大于运算规模,如(A1,A2,A3,A4,A5)和(B1, B2,B3,B4,B5),此时,可将(A1,A2,A3,A4,A5)拆分为D1(A1, A2,A3,A4)和D2(A5),将(B1,B2,B3,B4,B5)拆分为d1(B1,B2, B3,B4)和d2(B5),然后分两次提供至运算单元30中,其中,第一次提供 D1(A1,A2,A3,A4)和d1(B1,B2,B3,B4)进行运算,第二次提供D2 (A5)和d2(B5)。上述例子是将大于运算规模的运算数据均拆分为2段,每 次提供相应段的子运算数据。在两个运算数据的拆分的段数不一致时,例如, 第一个运算数据拆分为3段,表示为D1、D2、D3,第二个运算数据拆分为2 段,表示为d1和d2,则分3次向运算单元提供第一个运算数据D1、D2、D3, 并且这3次需要循环提供第二个运算数据d1和d2,即第一次提供D1和d1,第 二次提供D2和d2,第三次提供D3和d1,又比如,第一个运算数据拆分为5 段,表示为D1、D2、D3、D4、D5,第二个运算数据拆分为3段,表示为d1、 d2和d3,则分5次向运算单元提供运算数据,即第一次提供D1和d1,第二次 提供D2和d2,第三次提供D3和d3,第四次提供D4和d1,第五次提供D5和 d2。
当参与运算的两个运算数据中,一个运算数据长度大于运算模块的运算规 模,另一个运算数据长度小于等于运算模块的运算规模时,将长度大于运算规 模的运算数据进行拆分处理,拆分为多个长度均小于等于运算规模的子运算数 据,并将该多个子运算数据和长度小于等于运算规模的运算数据进行循环处理, 即循环将数据提供至所述运算模块。简要举例来说,第一个运算数据长度大于 运算规模,拆分为3段D1、D2和D3,第二个运算数据小于等于运算规模,无 需拆分,表示为d,则循环读取,分3次向运算单元提供第一、第二运算数据, 即第一次提供D1和d,第二次提供D2和d,第三次提供D3和d。
总的来说,数据处理单元23对运算数据的调整是指,当运算数据长度不大 于运算单元的运算规模时,可以通过该存储器直接将待运算的数据送入运算单 元30中;否则,每一次运算,将符合运算单元30运算规模的数据送入运算单 元30中,运算完毕或者该批数据进入下一级流水线之后,该存储器向运算单元 30中送入新一批符合运算单元30运算规模的数据进行运算。另外,当两个待运 算的数据长度相同时,则直接或拆分后送入运算单元30中进行运算;否则,长 度较大的数据分段后按顺序读取,长度较小的数据分段后循环读取,直至运算 结束。
图111是本披露提供的装置的运算模块的结构示意图。如图4所示,运算 模块由若干种不同的运算部件组成,如向量加法部件、向量减法部件、向量逻 辑与部件、向量点积部件等等。每种部件有若干个。利用这些运算部件,运算 模块能够支持多种向量运算。
图112是本披露中支持不同长度运算数据的指令的方法流程图。执行该指 令的过程包括:
S1,指令处理单元12中的取指部分121从指令缓存单元11中取出一条向 量运算指令,并将该指令送往指令处理单元中的译码部分122。
S2,译码部分122对指令进行译码,将指令根据自定义的指令规则拆分为 操作码和各个不同的操作域。这里采用的自定义的指令规则是指令包含操作码 和至少一个操作域,操作码定义向量运算的类型,操作域中保存待运算的数据 值、数据存储的地址、数据的长度或是运算结果保存地址等,具体操作域的含 义根据操作码的不同而不同。而后,将该运算指令送往指令队列部分123。
S3,在指令队列部分123中,根据该指令的操作码和操作域获取待运算的 数据,送往依赖关系处理单元13对数据依赖关系进行分析和判断。
S4,在依赖关系处理单元14中,分析该指令与前面的尚未执行结束的指令 在数据上是否存在依赖关系。若无依赖关系,则无需等待,否则将该条指令存 储在存储队列单元中,等待至其与前面的未执行结束的指令在数据上不再存在 依赖关系为止。将指令送往运算单元30。
S5,当指令送往运算单元30准备运算时,数据模块20中的数据暂存单元22根据数据的长度和运算单元30的规模对数据进行调整,即当向量长度不大于 运算单元30的运算规模时,可以直接将待运算的向量送入运算单元30中;否 则,每一次运算,将符合运算单元30运算规模的数据送入运算单元30中,运 算完毕后,向运算单元30中送入新一批符合运算规模的数据进行运算,直至运 算结束。当两个待运算的向量长度相同时,则直接送入运算单元中进行运算; 否则,长度较大的向量按顺序读取,长度较小的向量循环读取,直至运算结束。 若待运算的向量同时需要根据运算单元规模进行调整,又需要对长度进行调整, 则保证长度较大的向量按顺序读取,长度较小的向量循环读取的顺序,依次读 取符合运算规模的数据即可。
S6,运算完成后,将结果写回至数据暂存单元22中的指定地址,同时提交 指令缓存单元11中的该指令。
为使该过程更加清楚明白,以下提供一具体实施例,并参照附图113,对本 流程进一步详细说明。
实施例一
本实施例描述了采用运算装置进行向量间与运算的具体过程,首先,本实 施例中向量间与运算指令格式为:
假定寄存器每个地址能够存储16位数据,运算单元内包含4个间与运算器, 每个运算器可以同时执行16位数据的间与运算。以运算指令VAV 00001 01000 01001 0100010001为例,该指令表示向量0和向量1执行VAV运算,即向量间 与运算。具体的,向量间与运算的过程包括:
S1,指令处理单元11中的取指部分121从指令缓存单元11中取出一条向 量运算指令,即VAV 00001 01000 01001 01000 10001,并将该指令送往指令处理 单元12中的译码部分122。
S2,译码部分122对指令进行译码,得到该指令操作码VAV,表示执行向 量间与运算,有五个操作域,分别表示待运算向量vin0的起始地址和长度,向 量vin1的起始地址和长度、运算结果的存储地址,将该运算指令送往指令队列 部分123。
S3,在指令队列部分123中,根据该指令的操作码和操作域获取待运算的 数据。该指令操作码为VAV,即执行向量间与逻辑运算,由操作域1、2、3、4 处获得待运算的数据地址和数据长度,即向量vin0的起始地址00001、向量vin0 的长度01000、向量vin1的起始地址01001、向量vin1的长度01000。即向量 vin0从地址为00001处开始,读取长度为8个地址长度的数据,即地址为 00001~01000的数据;向量vin1从地址为01001处开始,同样,也读取长度为8 个地址长度的数据。而后,送往依赖关系处理单元13对数据依赖关系进行分析 和判断。
S4,在依赖关系处理单元123中,分析该指令与前面的尚未执行结束的指 令在数据上是否存在依赖关系。若无依赖关系,则无需等待,否则将该条指令 存储在存储队列单元14中,等待至其与前面的未执行结束的指令在数据上不再 存在依赖关系为止。将指令送往运算单元30。
S5,数据模块20中数据I/O单元21事先从外部的内存中获取数据,并将获 取的数据存储于数据暂存单元22。当指令送往运算单元30准备运算时,数据暂 存单元22根据指令所指示的数据地址,找到相应的数据并提供至运算单元30, 在提供前,数据暂存单元22可将数据送入数据处理单元23,数据处理单元23 可根据数据的长度和运算单元30的运算规模对数据进行调整,而后提供至运算 模块30。这里,运算单元30一次只能够处理4组16位向量的间与运算,所以, 第一次送入运算单元30的数据为vin0所指的前4个地址长度的数据和vin1所 指的前4个地址长度的数据,即地址为00001~00100和01001~01100的数据进行运算。待运算完毕,载入vin0和vin1各自的后4个地址长度的数据进行运算, 即地址为00101~01000和01101~10000的数据进行间与运算。
S6,运算完成后,将结果写回至数据暂存单元22中的指定地址10001处, 同时提交指令缓存单元中的该向量间与逻辑指令。
这个例子里的间与指令可以替换成神经网络专用指令的任意具有两个或以 上相同长度或不同长度的运算数的逻辑指令
实施例二
本实施例描述了采用运算装置进行向量加法运算的具体过程,首先,本实 施例,定义向量加法运算指令格式为:
假定寄存器每个地址能够存储16位数据,运算单元内包含4个加法运算器, 每个运算器可以同时执行16位数据的加法运算。VA 00001 01000 01001 00010 10001为例,该指令表示向量0和向量1执行VA运算,即向量加法运算。运算 装置执行该向量加法指令的过程包括:
S1,指令处理单元12中的取指部分121从指令缓存单元11中取出一条向 量运算指令,即VA 00001 01000 01001 00010 10001,并将该指令送往指令处理 单元中的译码部分12。
S2,译码部分12对指令进行译码,得到该指令操作码VA,表示执行向量 加法运算,有五个操作域,分别表示待运算向量vin0的起始地址和长度,向量 vin1的起始地址和长度、运算结果的存储地址,将该运算指令送往指令队列部 分123。
S3,在指令队列部分123中,根据该指令的操作码和操作域获取待运算的 数据。该指令操作码为VA,即执行向量加法运算,由操作域1、2、3、4处获 得待运算的数据地址和数据长度,即向量vin0的起始地址00001、向量vin0的 长度01000、向量vin1的起始地址01001、向量vin1的长度00010。即向量vin0 从地址为00001处开始,读取长度为8个地址长度的数据,即地址为00001~01000 的数据;向量vin1从地址为01001处开始,读取长度为2个地址长度的数据。 而后,送往依赖关系处理单元13对数据依赖关系进行分析和判断。
S4,在依赖关系处理单元13中,分析该指令与前面的尚未执行结束的指令 在数据上是否存在依赖关系。若无依赖关系,则无需等待,否则将该条指令存 储在存储队列单元中,等待至其与前面的未执行结束的指令在数据上不再存在 依赖关系为止。将指令送往运算单元。
S5,依赖关系不存在后,该条向量加法指令被送往运算单元30。运算单元 30根据所需数据的地址和长度从数据暂存单元22中取出需要的向量,然后在运 算单元中完成加法运算。这里,因为运算单元30一次只能够处理4组16位向 量的加法运算,所以不能一次将所有数据全部发送至运算单元进行运算,而是 需要分多次进行。又因为vin0和vin1长度不同,vin1长度较短,故运算时,需 要循环读取vin1的数据。如图6所示,第一次送入运算单元30的数据为vin0 所指的前4个地址长度的数据和vin1所指的2个地址长度的数据,即发送的数 据为地址为00001~00100和01001~01010的数据,其中进行运算的数据的对应 关系为:地址为00001处的数据与地址为01001处的数据进行加法运算、地址 为00010处的数据与地址为01010处的数据进行加法运算、地址为00011处的 数据与地址为01001处的数据进行加法运算、地址为00100处的数据与地址为 01010处的数据进行加法运算。待运算完毕,第二次送入运算单元30的数据为 vin0所指的后4个地址长度的数据和vin1所指的2个地址长度的数据,即地址 为00101~01000和01001~01010的数据进行加法运算,运算时的对应关系为地 址为00101处的数据与地址为01001处数据进行加法运算、地址为00110处的 数据与地址为01010处的数据进行加法运算、地址为00111处内的数据与地址 为01001处的数据进行加法运算、地址为01000处的数据与地址为01010处的 数据进行加法运算。
S6,运算完成后,将结果写回至数据暂存单元22中的指定地址10001处, 同时提交指令缓存单元11中的该向量加法指令。
这个例子里的加法指令可以替换成神经网络专用指令的任意具有两个或以 上相同长度或不同长度运算数的运算指令”
上述运算装置处理的一条指令可以处理长度相同或不同的数据,从而有效 提高了指令的灵活性,减少运行时的指令条数(一个操作由一条指令完成即可), 挖掘指令执行时的数据的相关性,从而优化数据的调用方式(如无需反复读取、 调用较短长度的数据),提高了数据的使用效率等。
图113A示出了串行进位加法树的结构,即采用二叉树的结构,对待运算的 操作数两两相加,而后向上传递,直至得到最终结果。显然,该结构支持多浮 点数并行相加,加速了加法运算,但是在进位传播时,需要消耗大量的时钟延 迟,而且,运算结果和操作数的顺序也有一定的关系,运算结果的精度损失较 大。
图114示出了进位保存加法树的结构,即利用华莱士树的结构,将由每一 级全加器的进位生成的部分连接到下一级的高位,通过连线实现进位传递,避 免复杂的进位传递逻辑,降低了进位传递的延迟。然而,这种方法并不能直接 用于浮点数的加法,并且,操作数的顺序不同,也可能带来计算误差。
如图115是本披露提供的执行多个浮点数相加的装置的示意图,如图115 所示,装置包括预处理模块、加法运算模块和规格化处理模块,预处理模块包 括比较选择模块和计算移位模块,加法运算模块包括华莱士树模块、最终结果 累加模块和前导零预测模块。多个浮点数相加的装置可以设置在如图1、图2A 或图6A所示的计算装置内,当然在实际应用中,也可以设置在人工神经网络正 向运算的装置、用于稀疏连接的人工神经网络计算装置或其他的神经网络领域 的计算装置、芯片或处理装置内。
现有x个相同标准的y位浮点数进行相加,第i个浮点数用fi表示,其中, x、y和i均为正整数,且1≤i≤x。
在预处理模块中,将每个浮点数fi,拆分为符号位部分si,指数位部分ei 和尾数位部分mi,即fi=(si,ei,mi)。通过比较选择模块进行两两选择比较操作, 如图116所示,即若ea>eb,则选择a,否则选择b。而后,如图117所示,利用二 叉树结构,依次选择出具有最大指数位的浮点数fmax,其符号位、指数位、尾数 位分别为smax,emax,mmax。
图118是本披露中计算移位模块的示意图,即分别求得每个浮点数fi与最 大指数位的浮点数fmax的指数的差值Δe。若fmax为规格化浮点数,fi为非规 格化浮点数,那么对fi的尾数部分进行逻辑移位的位数n=Δe-1;否则,n=Δe。 而后相应地对每个浮点数fi的尾数部分mi进行逻辑移位。移位操作结束后,相 当于该x个浮点数的指数位相同,尾数位可以直接进行运算。具体操作是,首 先将尾数位mi的最高位前补上1个隐藏位,当该浮点数fi为规格化浮点数时, 隐藏位的值为1;当该浮点数fi为非规格化浮点数时,隐藏位为0。尾数位最低 位后增添k个“0”作为有效位。此时,尾数位总位数等于移位后总位数,即原尾 数位数+隐藏位位数+新增有效数字位数。而后,根据之前求得的待逻辑移位的 位数n对每个浮点数fi进行移位,这里先右移n位,以舍弃尾数位最低的n位; 再将移位后的尾数位的最低位作为粘滞位,与舍弃的n位作“或”运算,运算结果 更新为粘滞位的值即得到所需的移位后尾数位的最终结果。最后,判断每个浮 点数fi的符号位部分si与最大指数位的浮点数fmax的符号位部分smax是否相 同,相同则无需任何操作,不同则将尾数部分取其补码,便于后面运用加法器 直接进行运算。
在加法运算模块中,利用如图114所示的华莱士树结构,对移位后的各个 浮点数的尾数相加,直到归约为两个数,记为sum1和carry1,输出至最终结果 累加模块和前导零预测模块。华莱士树结构用简单的硬件快速将处理后的多个 浮点数相加归约成两个数相加,即每次利用i个全加器,把j个i位的数相加转 换成2*j/3个i+1位的数相加,再用一层全加器转换成4*j/9个数相加,直到转 换成2个数。
最终结果累加模块利用双通路计算出运算结果,该结构如图119所示。一 条通路对sum1和carry1直接进行相加,另一条通路对二者的反码进行相加,最 后根据第一条通路的所得结果的最高位,若最高位的值为0,则选择第一条通路 的结果作为累加部分的最终结果tmp_sum并输出,否则,选择第二条通路的结 果作为累加部分的最终结果tmp_sum并输出。前导零预测模块,利用前导零预 测(leading zero anticipator,LZA)方法,首先对输入的sum1和carry1按位求得 其传播函数生成函数G=sum1·carry1,杀死函数 Z=(sum1·carry1)’的值;而后,求得每一位的指示符的值,第i位用fi表示,由 下列公式得到最后,设定参 数,那么就可以得到位置参数为第一个不为0的位置参数 的下角标的值即为我们所求的累加部分的最终结果tmp_sum的第一个有效数字 位的位置num_shift,将其以二进制的形式输出即可。
在规格化处理模块中,根据前导零预测模块分的第一个有效数字位的位置 num_shift对最终结果tmp_sum进行逻辑移位,移动位数为num_shift,而后进行 规格化,分别得到最终结果的符号位sresult、指数位eresult和尾数位mresult,, 组合得到最终结果sumresult={sresult,eresult,mresult}。
本披露提供一实施例,是4个16位浮点数相加,即x=4,y=16。其中,浮 点数标准采用IEEE754的half类型浮点数标准,即每个浮点数由1位符号位,5 位指数位和10位尾数位组成。
在如图115所示的装置中,输入4个浮点数并用二进制表示为 f1=0001001010000001,f2=0001110011110000,f3=00011001011111111,f4=0010010011011001,拆分为符号位、指数位、尾数位的格式,即{s,e,m},用二进制表示得到 f1={0,00100,1010000001},f2={0,00111,0011110000},f3={0,00110, 01011111111},f4={0,01001,0011011001}。利用如图116所示装置,分别比较f1、f2的指数位e1=00100、e2=00111,选出较大的指数值emax(e1,e2)=00111,和比较 f3、f4的指数位e3=00110、e4=01001,选出较大的指数值emax(e3,e4)=01001, 而后利用如图43所示的树状结构,比较emax(e1,e2)=00111和emax(e3,e4)=01001, 选择出较大的指数位emax=01001,该浮点数用fmax=f4=0010010011011001表 示,符号位和尾数位分别为smax=0和mmax=0011011001。
而后,分别求得f1、f2、f3、f4的指数位e1、e2、e3、e4与emax的差值, Δe1=5、Δe2=2、Δe3=3、Δe4=0。由于f1、f2、f3、f4均为规格化浮点数,故待 移位的位数n=Δe,即n1=Δe1=5、n2=Δe2=2、n3=Δe3=3、n4=Δe4=0。这里为了 降低运算过程中的精度损失,增加三位有效数字位,即k=3,并令最低位为粘滞 位。移位时,由于该实施例采用IEEE754标准,故首先fmax、f1、f2、f3、f4的 尾数位部分的最高位前补上1位隐藏位,并判断它们是否为规格化浮点数。由 于f1、f2、f3、f4均为规格化浮点数,也就是令fmax、f1、f2、f3、f4的隐藏位 的值为1。而后,将尾数位的最低位后面补上3个“0”,即达到了预设的总位数: 原尾数位数+隐藏位位数+新增有效数字位数=10+1+3=14位,接着,根据指数差 n进行右移,舍弃最低的n位;将舍弃的n位的数值与最后一位粘滞位进行“或” 运算,用运算结果更新粘滞位的值,得到所需的移位后尾数位的最终结果。以 f1为例,由上面可得其尾数部分为1010000001,最高位增加一位隐藏位,由于 f1为规格化浮点数,故该隐藏位的值为1,得到11010000001;在最低位后面补 3个0,并定义最低位为粘滞位,得到11010000001000。由于n1=5,所以我们 需要移动5位,故最右面的5位01000均需要舍弃,得到00000110100000;将 该被舍弃的5位数字01000与粘滞位0进行“或”运算,得到1,用该结果更新粘 滞位,即粘滞位的值为1得到移位后的结果为00000110100001。又以f2为例, 由上面可得其尾数部分为0011110000,最高位增加一位隐藏位,由于f2为规格 化浮点数,故该隐藏位的值为1,在最低位后面补3个0,并定义最低位为粘滞 位,得到10011110000000。由于n2=2,所以我们需要移动2位,故最右面的2 位00均需要舍弃,得到00100111100000;将该被舍弃的2位数字00与粘滞位0 进行“或”运算,得到0,用该结果更新粘滞位,即粘滞位的值为0,得到移位后 的结果为00100111100000。最后,对浮点数f1、f2、f3、f4的符号位s1、s2、s3、 s4与smax进行比较,结果均为0,即均为正数,故无需对其尾数部分再进行取 补的操作。
如图115所示,将预处理的结果输入到加法运算模块。利用图114示出的 华莱士树结构,对四个14位预处理后的尾数进行处理。这里,本披露考虑使用 两级华莱士树结构,首先通过一级4-2华莱士树结构部分,进行相加,而后将结 果分别输入到第二级3-2华莱士树结构部分和前导零预测部分进行运算。3-2华 莱士树将运算结果最终归约为两个数,即sum1=11011000000100和 carry1=110100010,输出至最终结果累加部分。在该部分中,利用双通路计算出 运算结果,一条通路对sum1和carry1直接进行相加,另一条通路对二者先取反 码,而后进行相加。由于第一条通路所得结果的最高位为0,故选择得到第一条 通路的结果作为累加部分的最终结果,即tmp_sum=0011100101001000,输出至 第三模块。前导零预测部分是将第一级4-2华莱士树的输出结果利用前导零预测 算法(LZA算法)计算得到累加部分的最终结果规格化待移动的位数用二进制 表示为num_shift=10,输出至第三模块。其中,前导零预测部分和第二级华莱士 树部分是并行执行的。
如图115所示,规格化处理模块利用LZA算法,根据tmp_sum和第一模块 得到的fmax进行逻辑操作,得到最终结果的符号位sresult=0;根据第一模块得 到的fmax、第二模块累加部分得到的tmp_sum和前导零预测部分的输出结果 num_shift进行逻辑操作,得到最终结果的指数位eresult=01001;根据前导零预 测部分的输出结果num_shift、第一模块得到的fmax对第二模块得到的tmp_sum 进行移位并规格化得到最终结果的尾数位mresult=11001100101001。最后,将三 者组合得到最终结果 sumresult={sresult,eresult,mresult}={0,01001,11001100101001}=001001110011001 01001。
综上所述,能够快速高效的完成多个相同标准的浮点数的加法操作,增加 了一次运算支持的操作数数量,降低了运算延迟,加速了运算过程,降低了运 算结果的精度损失。
图119是本披露提供的用于执行神经网络运算的装置的结构示意图,如图 119所示,装置包括多个神经网络处理模块10及一个片上互联模块20,多个神 经网络处理模块10与该片上互联单元20通信连接,上述神经网络处理单元具 体可以为如图2A所示的运算单元,当然在实际应用中,也可以为如图1A所示 的运算单元或如图1B或如图6A所示的运算单元或能支持不同位宽运算数据的 运算单元,当然在实际应用中,用于执行神经网络运算的装置还可以设置在人 工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置或其他的 神经网络领域的计算装置、芯片或处理器内,其中:
神经网络处理模块10能够通过片上互联模块30从其它神经网络处理模块 10中读写数据,还可从本地读写数据。当要执行神经网络运算时,每个神经网 络处理模块10作为一个核执行相应的运算,其运算所需的数据可直接从本地直 接获取,也可通过片上互联模块20与其他神经网络处理模块10通信,以从其 他神经网络处理模块10处读取运算所需的数据。各个神经网络处理模块10读 取运算所需的数据后,执行相应的运算,得到各自的运算结果数据,在单层神 经网络运算中,各个神经网络处理模块10可将各自的运算结果数据汇总至一个 神经网络处理模块10中进行累加,以得到最终结果数据。在多层神经网络运算中,当层各个神经网络处理模块10计算得到运算结果数据,可能在下一层作为 运算所需的数据被其他神经网络处理模块10使用,这样在当层神经网络运算完 毕后,各个神经网络处理模块10会进行数据交互,以准备进行下一层神经网络 运算。
图120是本披露中神经网络处理模块的结构示意图,如图60所示,神经网 络处理模块10包括神经网络处理单元11和存储单元12(具体的可以为高速存 储单元,例如高速暂存存储器);神经网络处理模块10在进行神经网络运算时, 神经网络处理单元11直接从与其对应的高速储存单元12中读取数据,和/或通 过片上互联单元20从其它神经网络处理模块10中的神经网络处理单元11中读 取数据,和/或通过片上互联单元20从其它神经网络处理模块10中的高速存储 单元12中读取数据;每个神经网络处理模块10中的神经网络处理单元11根据 读取的数据进行神经网络运算,得到各自的运算结果数据;在完成运算后,神经网络处理单元11将运算结果数据直接写入至与其对应的高速储存单元12中, 和/或通过片上互联单元20将运算结果数据写入至其它神经网络处理模块10中 的神经网络处理单元11中,和/或通过片上互联单元20将运算结果数据写入至 其它神经网络处理模块10中的高速存储单元12中。总之,神经网络处理单元 11可直接从其对应的高速储存单元获取数据,也可以通过片上互联模块20获取 其它位置的数据,这样避免了反复向内存读取数据,降低了内存访问带宽。
如图121所示,本披露提供的用于执行神经网络运算的装置还包括外部存 储模块30,其与片上互联单元20通信连接,神经网络处理模块10还能够通过 片上互联单元从外部存储模块中读写数据,利用外部存储模块30,可以从外界 向装置中导入新的数据,装置执行的最终执行结果数据也可以写入至外部存储 模块30,以供外部导出。其中,外部存储模块30可以通过硬件来实现(包括但 不限于FPGA、CGRA、专用集成电路ASIC、模拟电路或忆阻器等)。
图122是本披露中神经网络处理单元11的结构示意图,如图122所示,神 经网络处理单元11包括指令队列111、神经网络运算单元112、IO读取单元113、 高速缓存单元114和同步关系单元115。指令队列111存储有多种类型的指令, 神经网络处理单元11根据不同的指令执行不同的操作。下表为各类指令的描述:
指令名称 操作码1 操作码2 操作码3 操作码4 操作码5 ……
ACK 0/1 0/1 0/1 0/1 0/1 ……
FENCE 0/1 0/1 0/1 0/1 0/1 ……
SYNC 0/1 0/1 0/1 0/1 0/1 ……
COMPUTE MLP addr1 size1 addr2 size2 ……
IO src dest size
指令包括指令名称以及多个操作码:
数据送达指令,指令名称为ACK,其中各个操作码分别表示是否向该神经 网络处理单元11发送数据送达信号(ACK信号),神经网络处理单元11向其他 神经网络处理单元11写入数据后,执行数据送达指令以发送数据送达信号给对 应的神经网络处理单元11,以表明数据已经传输到位;
数据依赖指令,指令名称为FENCE,其中各个操作码表示是否检查来自该 神经网络处理单元11的ACK信号;神经网络处理单元11执行数据依赖指令以 检测其所有依赖的数据是否已经到达本神经网络处理单元。
数据同步指令,指令名称为SYNC,其中各个操作码表示该神经网络处理单 元是否参与同步操作,神经网络处理单元11执行数据同步指令用以强制多个神 经网络处理单元11做同步操作,即当多个神经网络都执行到当前指令后,这些 神经网络处理单元才可以执行之后的指令;
COMPUTE(运算指令),其中第一个操作码表示具体的计算任务,如MLP, CONV,POOL等,其余操作码用来表示输入输出数据的地址和大小,以及神经 网络计算指令的配置信息。该COMPUTE指令也可以包括其他的运算指令,进 行非线性激活和线性激活操作。当然在实际应用中,也可以是其他的神经网络 的指令,例如,向量指令或矩阵指令,本发明并不限制上述COMPUTE指令具 体包含的指令的具体表现形式。
输入输出指令,指令名称为IO,其中的操作码分别表示搬运数据的起始地 址,结束地址以及数据大小的信息,神经网络处理单元11执行输入输出指令以 与其余模块之间进行通信数据。
IO读取单元根据113根据指令队列111中的运算指令从该神经网络处理单 元11的外部(如高速存储单元12、其他神经网络处理单元11等)读取数据, 并将读取的数据缓存至高速缓存单元114中,神经网络运算单元112根据该运 算指令从高速缓存单元114中读取所缓存的数据,并执行神经网络运算,得到 相应的运算结果数据;
神经网络运算单元112将运算结果数据写入至高速缓存单元114中,当需 要将运算结果数据发送中外部(其他神经网络处理单元11等)时,IO读取单元 113从高速缓存单元114中读取运算结果数据,并将运算结果数据写入到该神经 网络处理单元11的外部。
图123是本披露中片上互联单元的结构示意图。其中,所述片上互联单元 包括相互级联的N级互联模块组成,且每一级互联模块的个数并不做限定。具 体的,如图123仅示出由一个一级互联模块和多个二级互联模块互联的片上互 联模块。如图123所示,片上互联模块20包括一级互联模块21和与该一级互 联模块通信连接的多个二级互联模块22,一级互联模块21还与外部存储模块 30通信连接,多个二级互联模块22与多个神经网络处理模块10一一对应,其 中,每个二级互联模块22分别与相应神经网络处理模块中的神经网络处理单元 11和高速存储单元12通信连接。具体的,二级的互联模块22一个端口连接神 经网络处理单元11,一个端口连接该神经网络处理单元对应的高速存储单元12, 另一个端口连接一级互联模块21,一级互联模块21将多个二级互联模块22和 外部存储模块30连接,用以保证这些模块之间的数据通路。这样,可以在保证 各个神经网络处理单元11以及高速存储单元12和外部存储模块30之间相互通 信,并且占用较小的面积开销。
采用本披露以上所描述的装置,可执行单层神经网络运算,包括:
S1,每个神经网络处理模块10根据其自身指令队列11中存储的计算指令, 根据指令中操作码所指示的地址,直接从本地读取数据,和/或通过片上互联模 块20从其它神经网络处理模块10中读取数据;
S2,每个神经网络处理模块10根据读取的数据进行单层神经网络的部分运 算,得到各自的运算结果数据;
S3,每个神经网络处理模块10将各自的运算结果数据进行本地存储和/或通 过片上互联模块20将各自的运算结果数据写入至其他神经网络处理模块10中。
对于多层神经网络运算,其实现过程与单层神经网络类似,当上一层人工 神经网络执行完毕后,在下一层运算时,每个神经网络处理模块10根据新的运 算指令从新的地址读取新的数据进行计算,并且依据新的指令在多核(即多个 神经网络处理模块10)之间分配计算任务。对于每一层神经网络运算,执行上 述步骤S1-S3,并将该层各神经网络处理模块10得到的运算结果数据用于下一 层神经网络运算。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例, 并参照附图,对本披露进一步详细说明。
图124是本披露执行一层全连接层运算实施例的流程图,其执行过程如图 64所示:
步骤1:依据全连接运算指令,每个神经网络处理单元11从对应的高速存 储单元12中读取数据,分别计算得到全连接层的部分运算结果数据。
在每个神经网络处理单元11中,指令队列111将运算指令COMPUTE发送 至神经网络运算单元112和IO读取单元113,神经网络运算单元112根据全连 接运算指令的第一操作码确定全连接运算操作,确定将要执行一层全连接层运 算,具体的,IO读取单元113根据运算指令COMPUTE中的地址从其对应的高 速存储单元12中读取运算所需数据,并将读取的数据存储于高速缓存单元114 中,神经网络运算单元112从高速缓存单元114中读取相应的数据,然后根据 读取的数据全连接运算操作,以进行全连接层的部分运算,得到全连接层的部 分运算结果数据作为输出数据。
步骤2:依据输入输出指令IO,每个神经网络处理单元11将自己计算的到 的部分运算结果数据通过片上互联模块20发送给相应的神经网络处理单元11。 由于每个神经网络处理单元11只计算出部分运算结果数据,因此其需要将该部 分输出数据发送给相应的神经网络处理单元11进行加和运算。
具体的,步骤1中神经网络运算单元112将计算得到的部分运算结果数据 存储于高速缓存单元114中,指令队列111将输入输出指令IO发送给IO读取 单元113后,IO读取单元113执行输出指令IO,以将存储于高速缓存单元114 中的部分运算结果数据读取,并发送至外部的相应的神经网络处理单元11。这 里需要说明的是,每个神经网络处理单元11可能会将部分运算结果数据发送至 一个对应的神经网络处理单元11中,也可能发送至多个对应的神经网络处理单 元11中,也就是说,每个神经网络处理单元11也可能收到一个神经网络处理 单元11发送的部分运算结果数据,也可能收到多个神经网络处理单元11发送 的部分运算结果数据。
步骤3:每个神经网络处理单元11将自己计算的到的部分运算结果数据发 送给相应的神经网络处理单元11后,需要执行数据送达指令ACK,以向对应的 神经网络处理单元11发送数据送达信号。每个神经网络处理单元11需要向接 受其发送数据的神经网络处理单元11发送数据送达信号,用以表明其数据依赖 关系。
步骤4:依据数据依赖指令FENCE,每个神经网络处理单元11检测其发送 数据送达信号是否到达相应的神经网络处理单元11,如果没有到达,则等待对 应的数据送达信号到达相应的神经网络处理单元11。对于每个将要进行加和运 算神经网络处理单元11,只有其收到所有其他神经网络处理单元11所发送的数 据送达信号时,才表明其所需要的输入数据全部到达,从而执行加和运算。
步骤5:依据运算指令COMPUTE,每个的神经网络处理单元11汇集其他 神经网络处理单元11的部分运算结果数据后,联合上自身运算所得的部分运算 结果数据进行加和运算,得到最终的运算结果数据。
步骤6:依据输入输出指令IO,每个神经网络处理单元11将计算得到的最 终的运算结果数据作为输出数据写入外部存储模块30中。在每个神经网络处理 单元11中,将最终的运算结果数据写入外部存储模块30中的执行过程与步骤2 类似,在此就不再赘述。
综上所述,本披露提供的装置和指令集,解决了CPU和GPU运算性能不 足、前端译码开销大的问题,能有效支持多层人工神经网络运算,同时,针对 多核多层人工神经网络运算采用专用片上存储,充分挖掘了神经元和权值数据 的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内 存带宽成为多层人工神经网络全连接层正向运算性能瓶颈的问题。
由于采用多核神经网络处理模块,允许单层的神经网络将任务划分,在多 个神经网络处理模块上执行,并且采用了专用指令,允许在执行多层神经网络 的时候,可以在多个神经网络处理器之间相互传输计算得到的数据,故能实现 多层多核的神经网络运算。
由于采用多核神经网络处理模块,解决了在执行多核多层神经网络处理运 算的时候,单个处理器处理性能不足的问题,具有显著加速多核多层神经网络 运算的效果。
由于采用了专用的数据指令,有效的解决了在执行多核多层神经网络时, 其多个处理器之间需要交互大量数据的问题,具有显著加速多核多层神经网络 运算的效果。
在不同的技术场景中,其可以达到不同的技术效果,具体包括:
场景识别
在场景识别中,由于需要对场景中的信息,诸如图像等进行纹理、轮廓、 色调等一些特征信息进行识别,然后以这些特征为依据,得到场景的信息。因 此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以 加速提取特征,甚至于做到实时提取特征。
超分辨率
在超分辨率中,由于需要对图像进行纹理、轮廓、色调等一些特征信息进 行识别,同时,以这些提取到的特征,在之后的网络中,对这些特征进行填补 操作,从而得到超分辨率图像。因此,可以通过对比图像进行切割,放到不同 的处理单元中进行处理,从而可以加速提取特征。,甚至于做到实时提取特征, 在之后的网络中,进行下一步的图像超分辨率操作。
图像美化
在图像美化中,由于需要对图像进行纹理、轮廓、色调等一些特征信息进 行识别,同时,对这些特征进行一定程度的修改,因此,可以通过对比图像进 行切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做 到实时提取特征,然后利用得到的特征,在之后的网络中,进行下一步的图像 修饰操作。
转画风
在转画风中,由于需要对图像进行纹理、轮廓、色调等一些特征信息进行 识别,同时,对这些特征进行一定程度的修改,因此,可以通过对比图像进行 切割,放到不同的处理单元中进行处理,从而可以加速提取特征。,甚至于做到 实时提取特征,然后利用得到的特征,在之后的网络中,进行下一步的转画风 操作。
语音识别
在语音识别中,可以将音频切分成多个段,放到不同的处理单元进行处理, 加速特征提取,甚至于做到实时提取特征,进行特征提取,从而得到横跨时间 尺度和频谱尺度的综合特征,利用这些特征,可以有效的提高神经网络的语音 识别准确读。
翻译
在翻译中,可以将文本切分成多个段,放到不同的处理单元进行处理,加 速特征提取,甚至于做到实时提取特征,进行特征提取,从而得到横跨上下文 尺度的综合特征,利用这些特征,可以有效的提高神经网络的翻译准确读。
物体识别
在物体识别中,由于需要对物体中的信息,诸如图像等进行纹理、轮廓、 色调等一些特征信息进行识别,然后以这些特征为依据,得到物体的信息。因 此,可以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以 加速提取特征。,甚至于做到实时提取特征,然后利用得到的特征,在之后的网 络中,进行下一步的物体识别操作。
物体检测
在物体检测中,由于需要对场景中的信息,诸如图像等进行纹理、轮廓、 色调等一些特征信息进行识别,然后以这些特征为依据,得到场景中存在的物 体的信息。并且,在检测到存在的物体后,需要对物体做精细识别。因此,可 以通过对比图像进行切割,放到不同的处理单元中进行处理,从而可以加速提 取特征。,甚至于做到实时提取特征,然后利用得到的特征,在之后的网络中, 进行物体检测,并且再次利用神经网络进行精细识别。
轮廓检测
在轮廓检测中,由于需要对场景中的信息,诸如图像等进行纹理、轮廓、 色调等一些特征信息进行识别,然后以这些特征为依据,得到场景中存在的物 体的信息。并且,在检测到存在的物体后,需要对物体做精细识别,得到物体 的轮廓。因此,可以通过对比图像进行切割,放到不同的处理单元中进行处理, 从而可以加速提取特征,甚至于做到实时提取特征,然后利用得到的特征,在 之后的网络中,进行物体检测,并且再次利用神经网络进行精细识别。
广告推荐
由于广告推荐算法中,会综合用到物体识别和场景识别以及文本识别,因 此需要神经网络做支持。尤其是文本识别,需要神经网络对编码后的一段文本 进行特征提取,可以将文本切分成多个段,放到不同的处理单元进行处理,加 速特征提取,甚至于做到实时提取特征,得到跨越上下文的文本信息。
聊天机器人
聊天机器人需要综合使用物体检测,物体识别,场景识别,语音识别,翻 译,轮廓识别,文本识别等技术,因此特别需要这种多个处理单元的神经网络 处理模块。
本披露了一种能支持不同位宽运算数据的运算单元、运算方法及运算装置, 通过配置指令中的位宽域来配置参与运算的运算数据位宽,在根据指令执行运 算时,首先判断是否存在与运算数据位宽相同的运算器,如果是,将该运算数 据直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策 略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算 数据的位宽,并将该运算数据传给该新的运算器;再令获得该运算数据的运算 器执行神经网络运算/矩阵运算/向量运算。本披露能够支持不同位宽运算数据的 运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器 的数量,减少硬件面积。能支持不同位宽运算数据的运算单元可以设置在如图1、图2A或如图6A所示的计算装置内,当然在实际应用中,上述能支持不同位宽 运算数据的运算单元也可以设置在如图38所示的人工神经网络正向运算的装置 或用于稀疏连接的人工神经网络计算装置以及其他的神经网络领域的计算装置、 芯片或处理器内。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例, 并参照附图,对本披露进一步详细说明。
图125是本披露提供的运算装置的结构示意图,如图125所示,该运算装 置包括:
存储单元,用于存储神经元/矩阵/向量,在一实施方式中,该存储单元可以 是高速暂存存储器(Scratchpad Memory),能够支持不同长度和不同位宽的神经 元/矩阵/向量数据,将必要的运算数据暂存在高速暂存存储器上,使本运算装置 在进行神经网络运算以及矩阵/向量运算过程中可以更加灵活有效地支持不同长 度和不同位宽的数据。高速暂存存储器可以通过各种不同存储器件(SRAM、 eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
寄存器单元,用于存储神经元/矩阵/向量地址,其中:神经元地址为神经元 在存储单元中存储的地址、矩阵地址为矩阵在存储单元中存储的地址、向量地 址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标 量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放神经元/ 矩阵/向量地址,还存放有标量数据。当涉及到矩阵/向量与标量的运算时,运算 单元不仅要从寄存器单元中获取矩阵/向量地址,还要从寄存器单元中获取相应 的标量。
控制单元,用于控制装置中各个模块的行为。在一实施方式中,控制单元 读取准备好的指令,进行译码生成多条微指令,发送给装置中的其他模块,其 他模块根据得到的微指令执行相应的操作。
运算单元,用于获取指令,根据指令在寄存器单元中获取神经元/矩阵/向量 地址,然后,根据该神经元/矩阵/向量地址在存储单元中获取相应的神经元/矩阵 /向量,从而对该运算数据(神经元/矩阵/向量)执行运算。运算单元执行的运算 包括但不限于:上述的神经网络专用指令的本披露的运算指令里所讨论的运算 操作。
运算单元在执行运算的过程中,根据指令中操作数所指示的运算数据的位 宽,选择相应的一个或多个运算器以执行运算,其中,一个或多个运算器具有 不同的位宽,例如,有的运算器支持16位的数据运算,有的运算器支持32位 的数据运算,运算器实质上可以是向量乘法部件、累加部件和标量乘法部件等。 如图126所示,运算单元包括判断子模块、运算器合并子模块和运算子模块;
判断子模块用于判断是否存在与该操作数所指示的运算数据位宽相同的运 算器,如果是,将该操作数传给相应的运算器,否则,将运算器合并策略及该 操作数传递给运算器合并子模块;
运算器合并子模块用于根据运算器合并策略将多个运算器合并成一个新的 运算器,以使该新的运算器的位宽符合该操作数的位宽,并将该操作数传给该 新的运算器。具体的,运算器合并策略是指优先选用较大位宽的运算器进行组 合。当存在与所需位宽相同的运算器时,直接使用对应的运算器;若不存在, 则选用比所需运算器位宽小且最为接近的可用的运算器进行组合。例如,可用 的用于组合的运算器位宽分别为8位、16位、32位时,当所需的运算器的位宽 为32位时,直接使用32位运算器;当所需的运算器的位宽为64位时,使用两 个32位运算器进行合并;当所需的运算器的位宽为48位时,使用一个32位运 算器和一个16位运算器进行合并;当所需的运算器的位宽为40位时,则选用 一个32位运算器和一个8位运算器进行合并。
运算子模块用于令获得该操作数的运算器执行运算。
本披露的指令采用了两种方式进行实现:一种为直接采用一条指令的方式, 该指令中同时包括操作数和位宽域,运算单元能够直接根据该指令获取操作数 和相应位宽的运算器,以执行相应的运算;另一种为采用两条指令的方式,运 算单元先根据位宽配置指令获取或构造相应位宽的运算器,再根据运算指令获 取操作数以执行相应的运算。
需要说明的是,本披露指令集采用Load/Store结构,运算单元不会对内存 中的数据进行操作。本指令集采用超长指令字架构,通过对指令进行不同的配 置可以完成复杂的神经网络运算,也可以完成简单的矩阵/向量运算。另外,本 指令集同时采用定长指令。
图127示出了本披露采用一条指令的方式执行运算的指令格式示意图,如 图127所示,指令包括至少一操作码和至少3个操作数和至少2个位宽域,其 中,位宽域与在运算器中运算时操作数的种类数量相同;其中,操作码用于指 示该运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的运算, 操作数用于指示该运算指令的数据信息,位宽域用于指明对应操作数的位宽; 其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄 存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始 地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
图128是本披露的神经网络运算指令的格式示意图,其为图127指令的实 例化指令,如图128所示,神经网络运算指令包括至少一操作码和16个操作数 和4个位宽域,其中,操作码用于指示该神经网络运算指令的功能,运算单元 通过识别一个或多个操作码可进行不同的神经网络运算,操作数用于指示该神 经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽 域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中 所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图129是本披露的矩阵-矩阵运算指令的格式示意图,其为图127指令的实 例化指令,如图129所示,矩阵-矩阵运算指令包括至少一操作码和至少4个操 作数和2个位宽域,其中,操作码用于指示该矩阵-矩阵运算指令的功能,运算 单元通过识别一个或多个操作码可进行不同的矩阵运算,操作数用于指示该矩 阵-矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽 域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中 所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图130是本披露的向量-向量运算指令的格式示意图,其为图127指令的实 例化指令,如图130所示,向量-向量运算指令包括至少一操作码和至少3个操 作数和至少2个位宽域,其中,操作码用于指示该向量-向量运算指令的功能, 运算单元通过识别一个或多个操作码可进行不同的向量运算,操作数用于指示 该向量-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号, 位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过 程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图131是本披露的矩阵-向量运算指令的格式示意图,其为图127指令的实 例化指令,如图131所示,矩阵-向量运算指令包括至少一操作码和至少6个操 作数和至少3个位宽域,其中,操作码用于指示该矩阵-向量运算指令的功能, 运算单元通过识别一个或多个操作码可进行不同的矩阵和向量运算,操作数用 于指示该矩阵-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存 器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明 运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽 运算器。
图132是本披露一优选实施例的运算装置的结构示意图,如图132所示, 该装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单 元、存储队列、重排序缓存、运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该 指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列; 如图73所示,该译码模块包括:指令接受模块、微指令生成模块、微指令队列、 微指令发射模块;其中,指令接受模块负责接受从取指模块取得的指令;微指 令译码模块将指令接受模块获得的指令译码成控制各个功能部件的微指令;微 指令队列用于存放从微指令译码模块发送的微指令;微指令发射模块负责将微 指令发射到各个功能部件;
指令队列,用于顺序缓存译码后的指令,送往依赖关系处理单元;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;
依赖关系处理单元,该模块处理指令与前一条指令可能存在的存储依赖关 系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空 间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的 数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指 令被存储在该队列内,直至依赖关系消除之后,提交指令。
重排序缓存,指令在执行过程中,同时也被缓存在该模块中,当一条指令 执行完之后,如果该指令同时也是重排序缓存中未被提交指令中最早的一条指 令,该指令将被提交。一旦提交,该条指令进行的操作对装置状态的改变将无 法撤销;该重排序缓存里的指令起到占位的作用,当它包含的第一条指令存在 数据依赖时,那么该指令就不会提交(释放);尽管后面会有很多指令不断进入, 但是只能接受部分指令(受重排序缓存大小控制),直到第一条指令被提交,整 个运算过程才会顺利进行。
运算单元,该模块负责装置的所有的神经网络运算和矩阵/向量运算操作, 包括但不限于:卷积神经网络正向运算操作、卷积神经网络训练操作、神经网 络Pooling运算操作、full connection神经网络正向运算操作、full connection神 经网络训练操作、batchnormalization运算操作、RBM神经网络运算操作、矩阵 -向量乘运算操作、矩阵-矩阵加/减运算操作、向量外积(张量)运算操作、向 量内积运算操作、向量四则运算操作、向量逻辑运算操作、向量超越函数运算 操作、向量比较运算操作、求向量最大/最小值运算操作、向量循环移位运算操 作、生成服从一定分布的随机向量运算操作。运算指令被送往该运算单元执行, 首先,运算单元判断是否有与指令中操作数对应的位宽域长度相同的运算器, 如果有,选用对应的运算器,如果没有,通过多个低位宽的运算器合并的方式 构成所需位宽的运算器,然后,根据指令中操作码对运算数用选择的运算器进 行对应的运算,得出相应的结果;
高速暂存存储器,该模块是数据专用的暂存存储装置,能够支持不同长度 和不同位宽的数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存 存储器中读取数据或写入数据。
图134是本披露实施例的运算装置采用一条指令的方式执行运算的流程图。 如图134所示,过程包括:
S1,取指模块取出指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
其中,S2可以包括:S2.1,在译码模块中,指令被送往指令接受模块。
S2.2,指令接受模块将指令发送到微指令生成模块,进行微指令生成。
S2.3,微指令生成模块从标量寄存器堆里获取指令的神经网络运算操作码和 神经网络运算操作数,同时将指令译码成控制各个功能部件的微指令,送往微 指令发射队列;微指令又可称为含参机器码,指硬件能识别的一系列01编码, 包括指令被译码后的结果。
S3,在取得需要的数据后,该指令被送往依赖关系处理单元。依赖关系处 理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。 该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再 存在依赖关系为止。
S4,依赖关系不存在后,该条神经网络运算以及矩阵/向量指令对应的微指 令被送往运算单元等功能部件。
S5,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的 数据,然后判断是否有与指令中位宽域相同的运算器,如果有,则选用匹配的 运算器完成指令对应的运算,如果没有,则通过将低位宽的运算器合并的方式 组成一个所需位宽的运算器来完成指令对应的运算。
S6,运算完成后,将输出数据写回至高速暂存存储器的指定地址,同时重 排序缓存中的该指令被提交。
图135和图136示出了本披露采用两条指令的方式执行运算的指令格式示 意图,其中,图135是位宽配置指令的格式示意图,位宽配置指令包括至少一 操作码至少2个位宽域,用于指明下条运算指令所使用的运算器的位宽。图136 是运算指令的格式示意图,运算指令包括至少一操作码至少3个操作数,其中, 操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码可进 行不同的运算,操作数用于指示该运算指令的数据信息,其中,数据信息可以 是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的 寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存 储单元中获取相应地址存放的矩阵。
图137~138是图135~136的实例化,其分别为神经网络位宽配置指令和神 经网络运算指令的格式示意图,如图137~138所示,位宽配置指令包括至少一 操作码至少4个位宽域,用于指明下条神经网络运算指令所使用的运算器的位 宽。配置指令包括至少一操作码和16个操作数,其中,操作码用于指示该神经 网络运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的神经 网络运算,操作数用于指示该神经网络运算指令的数据信息,其中,数据信息 可以是立即数或寄存器号。
图139~140是图135~136的实例化,其分别为矩阵-矩阵位宽配置指令和矩 阵-矩阵运算指令的格式示意图,如图139~140所示,位宽配置指令包括至少一 操作码至少2个位宽域,用于指明下条矩阵-矩阵运算指令所使用的运算器的位 宽。矩阵-矩阵运算指令包括至少一操作码和至少4个操作数。其中,操作码用 于指示该矩阵-矩阵运算指令的功能,运算单元通过识别一个或多个操作码可进 行不同的矩阵运算,操作数用于指示该矩阵-矩阵运算指令的数据信息,其中, 数据信息可以是立即数或寄存器号。
图141~142是图135~136的实例化,其分别为向量-向量位宽配置指令和向 量-向量运算指令的格式示意图,如图141~142所示,位宽配置指令包括至少一 操作码至少2个位宽域,用于指明下条向量-向量运算指令所使用的运算器的位 宽。向量-向量运算指令包括至少一操作码和至少3个操作数,其中,操作码用 于指示该向量-向量运算指令的功能,运算单元通过识别一个或多个操作码可进 行不同的向量运算,操作数用于指示该向量-向量运算指令的数据信息,其中, 数据信息可以是立即数或寄存器号。
图143~144是图135~136的实例化,其分别为矩阵-向量位宽配置指令和矩 阵-向量运算指令的格式示意图,如图143~144所示,位宽配置指令包括至少一 操作码至少3个位宽域,用于指明下条向量-向量运算指令所使用的运算器的位 宽。矩阵-向量运算指令包括至少一操作码和至少6个操作数,其中,操作码用 于指示该矩阵-向量运算指令的功能,运算单元通过识别一个或多个操作码可进 行不同的矩阵和向量运算,操作数用于指示该矩阵-向量运算指令的数据信息, 其中,数据信息可以是立即数或寄存器号。
图145是本披露实施例的运算装置采用两条指令的方式执行运算的流程图。 如图145所示,过程包括:
步骤S1,取指模块取出一条位宽配置指令,并将指令送往译码模块;
步骤S2,译码模块对所述指令译码,并将所述指令送往指令队列;
其中,S2可以包括步骤S2.1,在译码模块,所述指令被送往指令接受模块;
步骤S2.2,指令接收模块将所述指令发送到微指令译码模块,进行微指令 译码;
步骤S2.3,微指令译码模块将指令译码成控制运算单元选定指定位宽的运 算器的微指令,发送到微指令发射队列;
步骤S3,取指模块取出一条神经网络运算以及矩阵/向量指令,并将所述指 令送往译码模块;
步骤S4,译码模块对所述指令译码,并将所述指令送往指令队列;
其中S4可以包括:步骤S4.1,在译码模块中,所述指令被送往指令接受模 块;
步骤S4.2,指令接受模块将所述指令发送到微指令译码模块,进行微指令 译码;
步骤S4.3,微指令译码模块从标量寄存器堆里获取所述指令的神经网络运 算操作码和神经网络运算操作数,同时将所述指令译码成控制各个功能部件的 微指令,送往微指令发射队列;
步骤S5,在取得需要的数据后,所述指令被送往依赖关系处理单元;依赖 关系处理单元分析所述指令与之前尚未执行完的指令在数据上是否存在依赖关 系,如果存在,则所述指令需要在存储队列中等待至其与之前未执行完的指令 在数据上不再存在依赖关系为止;
步骤S6,将所述指令对应的微指令以及之前的指定运算器位宽的微指令送 往运算单元;
步骤S7,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需 要的数据;然后判断是否有与位宽指定指令中位宽域相同的运算器,如果有,则 选用匹配的运算器完成所述指令对应的神经网络运算和/或矩阵/向量运算,如果 没有,则通过将低位宽的运算器合并的方式组成一个所需位宽的运算器来完成 所述指令对应的神经网络运算和/或矩阵/向量运算;
S8,运算完成后,将输出数据写回至高速暂存存储器的指定地址,同时重 排序缓存中的该指令被提交。
本披露一种运算器位宽可配置的用于执行神经网络运算以及矩阵/向量运算 的装置和方法能够应用在神经网络的其他运算方法或计算装置内,本披露并不 限制上述方法或装置的应用场景。
综上所述,本披露了一种运算器位宽可配置的用于执行神经网络运算以及 矩阵/向量运算的装置和方法,配合相应的指令,能够很好地解决当前计算机领 域神经网络算法和大量矩阵/向量运算的问题,相比于已有的传统解决方案,本 披露可以具有指令可配置、使用方便、运算器的位宽可以选择,多个运算器可 以合并,并通过专用位宽配置指令和在运算指令上指定位宽域两种方式来实现 运算器位宽的配置,支持的神经网络规模和矩阵/向量位宽和规模灵活、片上缓 存充足,运算器可合并等优点。通过指令中的位宽域来指定运算数据的位宽, 使得运算数据的位宽能够根据需要任意配置,针对某一位宽的运算数据,如果 存在与该位宽符合的运算器,可直接调用该运算器执行运算,如果该运算数据 的位宽过大,没有符合该位宽的运算器,可对多个较低位宽的运算器进行合并, 以构造新的运算器,并利用新的运算器执行运算,能够支持不同位宽运算数据 的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算 器的数量,减少硬件面积。采用高速暂存存储器,其能够实现对不同长度和不 同位宽的运算数据(如:神经元、向量、矩阵)的存储。
如图146所示,该计算装置包括:存储介质611(可选的)、寄存器单元612、 互联模块613、运算单元614、控制单元615和数据访问单元616;
其中,运算单元614如图147所示:包括:加法计算器、乘法计算器、复数 加法运算器(可选的)、复数乘法运算器(可选的),对于运算单元,其包括:加法 计算器和乘法计算器,复数乘法运算器、复数加法运算器或非线性运算器等等 可以依据具体的非线性运算公式来确定是否设置到运算单元内。
具体的如图147所示,第一流水级包括但不限于:矩阵加法计算器、矩阵 乘法计算器等等。
第二流水级包括但不限于:大小比较计算器(例如比较器)等等。
第三流水级包括但不限于:非线性运算器(例如激活运算器)等等。
互联模块613,用于控制运算单元614中计算器的连接关系使得至少二种计 算器组成不同的计算拓扑结构。
指令存储单元(可以是寄存器单元,指令缓存,高速暂存存储器)612,用 于存储该运算指令、数据块的在存储介质的地址、运算指令对应的计算拓扑结 构。
存储介质611可以为片外存储器,当然在实际应用中,也可以为片内存储 器,用于存储数据块,该数据块可以为不连续的数据块。
控制单元615,用于从寄存器单元612内提取运算指令、该运算指令对应的 操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指 令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访问 单元616,将该计算拓扑结构传输至互联模块613。
数据访问单元616,用于随机访问存储介质611,从存储介质611中提取该 操作域对应的多个数据,并将该多个数据组合成数据块传输至互联模块613。
互联模块613、用于接收第一计算拓扑结构和数据块。一个实施例里,互联 模块613还根据第一计算拓扑结构对数据块重新摆放。
运算单元614,用于该执行指令调用运算单元614的计算器对该数据块执行 运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储介质内。 一个实施例里,运算单元614,用于按第一计算拓扑结构以及该执行指令调用计 算器对重新摆放的数据块执行运算操作得到运算结果,将该运算结果传输至数 据访问单元存储在存储介质内。
另一个实施例里,互联模块613、用于依据控制运算单元614中计算器的连 接关系形成第一计算拓扑结构。
本披露提供的计算装置设置了互联模块,此互联模块能够根据运算指令的 需要将运算单元内的计算器组合连接得到与该运算指令对应的计算拓扑结构, 进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此 结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结 果的优点,提高了计算效率。
本披露还提供一种扩展计算指令,该操作码和操作域,所述操作码包括: 识别第一运算指令的标识(例如ROT);所述操作域包括:第一计算指令的输入 数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指 令的输入数据、数据类型以及数据长度N。
可选的,上述扩展指令具体还可以包括:第三计算指令以及第三计算指令 的输入数据。
需要说明的是,上述计算指令可以为向量指令或矩阵指令,本披露具体实 施方式并不限制上述计算指令的具体表现形式。
参阅图148,图148提供了一种扩展计算指令的实现方法,该方法中的扩展 计算指令可以包括:操作码和操作域,所述操作码包括:识别第一运算指令的 标识(例如ROT);所述操作域包括:第一计算指令的输入数据地址、第一计算 指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据 类型以及数据长度N(其为用户自行设定值,本披露并不限制N的具体形式); 该方法由计算装置或计算芯片执行,该计算装置如图1A所示。该方法如图1所 示,包括如下步骤:
步骤S101、计算装置获取扩展计算指令,解析该扩展计算指令得到第一计 算指令以及第二计算指令;
步骤S102、计算装置依据第一计算指令以及第二计算指令确定计算顺序, 按所述计算顺序执行第一计算指令以及第二计算指令得到该扩展计算指令的结 果。
本披露提供的技术方案提供了扩展计算指令的实现方法,使得计算装置能 够对该扩展计算指令执行两个计算指令的计算,使得单个扩展计算指令能够实 现两种类型的计算,减少了计算的开销,降低了功耗。
可选的,上述计算顺序具体可以包括:无序计算、正序计算或倒序计算中 的任意一种,无序计算时,即第一计算指令与第二计算指令没有相应的顺序的 要求,正序计算时即先执行第一计算指令,后执行第二计算指令,倒序计算时 即先执行第二计算指令,后执行第一计算指令。
上述计算装置依据第一计算指令以及第二计算指令确定计算顺序的具体实 现方式可以为,计算装置识别第一计算指令的输出数据与第二计算指令的输入 数据是否相同,如相同,确定计算顺序为正序计算,反之计算装置识别第一计 算指令的输入数据与第二计算指令的输出数据是否相同,如相同,确定计算顺 序为倒序计算,计算装置识别第一计算指令的输入数据与第二计算指令的输出 数据是否关联,如不关联,确定计算顺序为无序计算。
具体的以一个实际的例子来说明,如F=A*B+C,第一计算指令为矩阵乘法 指令,第二计算指令为矩阵加法指令,由于第二计算指令的矩阵加法指令需要 应用到第一计算指令的结果即输出数据,所以确定该计算顺序为正序计算。又 如,F=OP(A)*OP(B),其中,第一运算指令为矩阵乘法指令,第二运算指 令为变换,例如转置或共轭,则由于第一运算指令使用了第二运算指令的输出, 所以其运算顺序为倒序计算。如没有相应关联,即第一计算指令的输出数据与 第二计算指令的输入数据不相同且第一计算指令的输入数据与第二计算指令的 输入数据也不相同,确定不关联。
本披露提供的向量指令的扩展,强化了指令的功能,用一条指令代替了原 来的多条指令。这样减少了复杂向量、矩阵操作所需的指令数量,简化了向量 指令的使用;与多条指令相比,不需要存储中间结果,既节约了存储空间,又 避免了额外的读写开销。
如第一计算指令为向量指令,对于向量指令中的输入向量或矩阵,指令增 加对其进行缩放的功能即在操作域增加表示缩放系数的操作数,在读入该向量 时首先按照缩放系数对其进行缩放(即第二计算指令为缩放指令)。如果向量指 令中有多个输入向量或矩阵相乘的操作,则这些输入向量或矩阵对应的缩放系 数可以合并成一个。
如第一计算指令为向量指令,对于向量指令中的输入矩阵,指令增加对其 进行转置的功能(即第二计算指令为转置指令)。在指令中增加表示是否对其进 行转置的操作数,代表在运算前是否对该矩阵进行转置。
如第一计算指令为向量指令,对于向量指令中的输出向量或矩阵,指令增 加与原始的输出向量或矩阵相加的功能(即第二计算指令为加法指令)。在指令 中增加表示对原始的输出向量或矩阵进行缩放的系数(即添加第三计算指令, 第三计算指令可以为缩放指令),指令表示在进行完向量或矩阵操作后,把结果 与缩放后的原始输出相加,作为新的输出。
如第一计算指令为向量指令,对于向量指令中的输入向量,指令增加按照 固定步长读取的功能。在指令中增加表示输入向量读取步长的操作数(即第二 计算指令为按固定步长读取向量),表示向量中相邻两个元素的地址之差。
如第一计算指令为向量指令,对于向量指令中的结果向量,指令增加按照 固定步长写入结果的功能(即第二计算指令按固定步长写入向量)。在指令中增 加表示结果向量读取步长的操作数,表示向量中相邻两个元素的地址之差。如 果一个向量既是输入又作为结果,则该向量作为输入和作为结果时使用同一个 步长。
如第一计算指令为向量指令,对于向量指令中的输入矩阵,指令增加按照 固定步长读取行或列向量的功能(即第二计算指令为按固定步长读取多个向量)。 在指令中增加表示矩阵读取步长的操作数,表示矩阵行或列向量之间的首地址 之差。
如第一计算指令为向量指令,对于向量指令中的结果矩阵,指令增加按照 固定步长读取行或列向量的功能(即第二计算指令为按固定步长写入多个向量)。 在指令中增加表示矩阵读取步长的操作数,表示矩阵行或列向量之间的首地址 之差。如果一个矩阵既是输入又是结果矩阵,则作为输入和作为结果使用同一 个步长。
下面以一些实际的计算指令来说明上述扩展计算指令的实际结构。
功能描述:
平面旋转,进行多个点在平面内的旋转坐标变换。给定两个向量x和y,向 量的每个元素按照下面的公式进行变换:
xi=c*xi+s*yi
yi=c*yi-s*xi
指令格式如表1-1所示
表1-1:
如表1-1所示的指令格式中的向量的长度可变,可以减少指令数量,简化指 令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执 行开销和存储中间结果的空间占用。支持复数的运算,扩充了指令功能。
吉文斯(Givens)旋转
进行多个点在平面内的吉文斯旋转操作
功能描述:
给定两个向量x和y,向量的每个元素按照下面的公式进行变换:
其中H是给定的吉文斯变换矩阵,其元素由指令参数给定。
指令格式如表1-2所示
表1-2
如表1-2所示的指令格式中的向量的长度可变,可以减少指令数量,简化指 令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执 行开销和存储中间结果的空间占用。区分了吉文斯旋转的普遍形式和各类特殊 形式,既保证了通用性,又方便对特殊情况进行优化。
向量交换
交换两个向量的元素
功能描述:
给定两个向量x和y,指令交换向量中的元素。
指令格式如表1-3:
表1-3:
如表1-3所示的指令格式中的向量的长度可变,可以减少指令数量,简化指 令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执 行开销和存储中间结果的空间占用。
向量缩放
计算向量乘以一个标量的结果
功能描述:
给定向量x和标量a,指令计算向量乘标量的结果
x=a*x
指令格式如表1-4所示:
表1-4
如表1-4所示的指令格式中向量的长度可变,可以减少指令数量,简化指令 的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行 开销和存储中间结果的空间占用。
向量复制
把一个向量复制到另外一个向量
功能描述:
给定向量x和y,将x复制到y
指令格式如表1-5所示:
表1-5
如表1-5所示的指令格式中向量的长度可变,可以减少指令数量,简化指令 的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行 开销和存储中间结果的空间占用。
向量乘加
计算向量与标量的积并把结果加到另外一个向量
功能描述:
给定向量x,y和标量a,进行如下的向量-向量操作
y:=a*x+y
指令格式如表1-6所示:
表1-6:
如表1-6所示的指令格式中向量的长度可变,可以减少指令数量,简化指令 的使用。
支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销 和存储中间结果的空间占用。
向量点积
计算向量与向量的点积
功能描述:给定长为n的向量x,y和标量r,进行如下的向量-向量操作
指令格式如表1-7所示:
表1-7:
如表1-7所示的指令格式中向量的长度可变,可以减少指令数量,简化指令 的使用。
支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销 和存储中间结果的空间占用。
向量范数
计算向量的欧几里得范数
功能描述:
该指令进行如下的向量规约操作:
指令格式如表1-8所示:
表1-8
如表1-8所示的指令格式中向量的长度可变,可以减少指令数量,简化指令 的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行 开销和存储中间结果的空间占用。
向量加和
计算向量的所有元素的相加的和
功能描述:
该指令进行如下的向量规约操作:
指令格式如表1-9所示:
表1-9:
如表1-9所示的指令格式中向量的长度可变,可以减少指令数量,简化指令 的使用。
支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销 和存储中间结果的空间占用。
向量最大值
计算向量的所有元素中最大元素的位置
功能描述:
对于长度为n的向量x,该指令将向量中最大元素的位置写入标量i中
指令格式如表1-10所示:
表1=10:
如表1-10所示的指令格式中向量的长度可变,可以减少指令数量,简化指 令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执 行开销和存储中间结果的空间占用。
向量最小值
计算向量的所有元素中最小元素的位置
功能描述:
对于长度为n的向量x,该指令将向量中最小元素的位置写入标量i中
指令格式如表1-11所示:
表1-11
如表1-11所示的指令格式中向量的长度可变,可以减少指令数量,简化指 令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执 行开销和存储中间结果的空间占用。
矩阵向量乘
计算矩阵与向量的乘积
功能描述:
该指令进行如下的矩阵向量乘操作
指令格式如表1-12所示:
表1-12:
如表1-12所示的指令格式中标量alpha和beta可对矩阵和向量进行缩放, 增加了指令的灵活性,避免了利用缩放指令进行缩放的额外开销。向量和矩阵 的规模可变,可以减少指令数量,简化指令的使用。可以处理不同存储格式(行 主序和列主序)的矩阵,避免了对矩阵进行变换的开销。可以实现对矩阵的转 置和求共轭等变换,避免了单独进行矩阵变换所带来的额外的开销。支持按一 定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结 果的空间占用。支持按照一定间隔存储的矩阵格式,避免了对矩阵存储格式进 行变换的执行开销和存储中间结果的空间占用。
向量外积
计算两个向量的张量积(外积)
功能描述:
该指令进行如下的矩阵向量操作
A:=α*x*yT+A
指令格式如表1-13所示:
表1-13
如表1-13所示的指令格式中标量alpha对结果矩阵进行缩放,增加了指令 的灵活性,避免了利用缩放指令进行缩放的额外开销。向量和矩阵的规模可变, 可以减少指令数量,简化指令的使用。可以处理不同存储格式(行主序和列主 序)的矩阵,避免了对矩阵进行变换的开销。支持按一定间隔存储的向量格式, 避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。
矩阵相乘
计算矩阵相乘
功能描述:
该指令进行标量-矩阵-矩阵相乘并将结果与一个标量-矩阵的积相加,其操 作定义如下
C:=α*op(A)*op(B)+β*C
其中op(A)和op(B)分别表示对A和B进行转置、求共轭等操作之后的结果。
指令格式如表1-14所示:
表1-14:
如表1-13所示的指令格式中标量alpha和beta对矩阵进行缩放,增加了指 令的灵活性,避免了利用缩放指令进行缩放的额外开销。矩阵的规模可变,可 以减少指令数量,简化指令的使用。可以实现对矩阵的转置和求共轭等变换, 避免了单独进行矩阵变换所带来的额外的开销。可以处理不同存储格式(行主 序和列主序)的矩阵,避免了对矩阵进行变换的开销。支持按照一定间隔存储 的矩阵格式,避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空 间占用。
需要说明的是,上述任意一个表中的同一条指令中的向量或矩阵可以是不 同的数据类型,包括浮点定点,位宽,复数等。指令中的变换除了转置和复数 求共轭外,还可以包含其它的操作如求逆矩阵等,而且这些变换可以相互组合。 对于向量操作可把运算符换成其它的操作类型,例如向量加换成乘、除等,求 MAX换成求中间值等等。
对于如图1所示的计算装置,其实现扩展计算指令运算时计算出该扩展指 令的具体结构,即通过一个扩展计算指令执行实现多条计算指令执行的组合, 需要说明的是,对于计算装置执行该扩展指令时并未将该扩展指令拆分成多条 计算指令。
本披露提供了一种数据传输装置,解决现有技术中存在的二维数据传送效 率低下、多组数据交替传送时缺失过多的问题,从而使得2D DMA更广泛、高 效地应用在图像、视频等应用中。上述数据传输装置可以更换运算装置或处理 装置内的DMA模块以达到传输二维数据的有益效果,当然在实际应用中,也可 以通过数据传输装置传输普通的数据。即该数据传输装置可以是包含DMA模块 的所有功能的装置。需要说明的是,在神经网络领域的芯片、运算装置、处理 器或计算器中,只要其包含了DMA,即都能够使用数据传输装置来替换该DMA, 例如,可以添加在如图1、图2A或如图6所示的计算装置内,当然还可以添加 人工神经网络正向运算的装置或用于稀疏连接的人工神经网络计算装置内。在 本披露并不限制上述DMA加载在何种硬件内以及加载的形式。当然在实际应用 中,上述数据传输装置也可以称为DMA,当其称为DMA时,其具体的结构可 以如图149所示。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例, 并参照附图,对本披露作进一步的详细说明。
参见图149,图149为本披露实施例提供的一种数据传输装置的结构示意图。 如图149所示,该数据传输装置包括寄存器模块和DMA控制模块,
其中,上述寄存器模块,用于存储二维数据的源地址、二维数据的目的地 址和每次传输二维数据的数据量等参数。
其中,上述二维数据可为图像数据或者视频数据。
具体地,上述二维数据的源地址为该二维数据在源存储器的中的存储地址, 上述二维数据的目的地址为指示该二维数据被传输至的存储空间对应的地址。 上述二维数据的传输量为上述数据传输装置传输上述二维数据时每次传输的数 据量。
需要说明的是,上述源存储器为上述二维数据的存储空间,上述目的存储 器用于存储传输后的二维数据。上述源存储器可为内寄存器或者外部寄存器, 上述目的存储器可为内寄存器或者外部寄存器,且该源存储器和目的存储器可 为同一存储空间,也可为不同的存储空间。
上述寄存器模块包括:
标量寄存器堆包括提供二维数据传输过程中所需的地址寄存器、存储二维 数据规模的寄存器和存储数据量等参数的寄存器。标量寄存器堆可以用于存储 二维数据地址、二维数据规模等信息。
其中,二维数据地址为数据在内存或外存储器中存储的地址,即上述二维 数据的源地址和目的地址;二维数据规模为二维数据在内存或外存储器中存储 的行、列大小;还可为上述二维数据在计算机中存储的字节数、比特数等。
需要说明的是,上述二维数据为图像数据或者视频数据,但是最终以图像 数据的形式存储于源存储器中。图像数据存储于源存储器中的最小单位为图像 数据的一个像素点,以RGB的形式。对于图像数据,可以看成M行N列的像 素点。
上述DMA控制模块,用于接收DMA指令,并根据DMA指令,从上述寄 存器模块中获取二维数据的源地址,目的地址和每次传输二维数据的数据量; 或者从上述DMA指令中获取上述二维数据的源地址,目的地址和每次传输二维 数据的数据量;
根据上述二维数据的源地址,从上述源存储器中获取上述二维数据;
根据上述每次传输二维数据的数据量将上述二维数据传输至目的存储器中 上述目的地址对应存储空间。
如图150所示,上述DMA控制模块包括:
指令单元,用于处理原始DMA指令,得到处理后的DMA指令;
加法单元,用于根据上述处理后的DMA指令,计算得到二维数据的源地址 和二维数据的目的地址;
读写单元,用于根据所述源地址从上述源存储器中读取上述二维数据,并 根据上述二维数据的目的地址将上述二维数据写入上述目的存储器中。
进一步地,上述读取单元根据处理后的DMA指令从上述寄存器模块中获取 每次传输二维数据的数据量,并根据该每次传输二维数据的数据量分多次将上 述二维数据传输至上述目的存储器中。
其中,上述加法单元和上述读写单元为多流水级结构,且上述加法单元处 于第一流水级,上述读写单元在第二流水级。当连续串行的多条DMA指令到达 时,可以更加高效地实现这一连串DMA指令所要求的操作。DMA控制模块负 责上述数据传输装置的所有DMA操作,包括但不限于一维读取操作、一维写入 操作、二维读取操作和二维写入操作。
进一步地,指令单元包括:
指令展开单元,用于将原始DMA指令展开为系统DMA指令,该系统DMA 指令是DMA控制模块的控制指令。
当需要DMA传送二维数据时,则上述DMA控制模块收到DMA指令命令, 该DMA指令表明所需二维数据的源地址、二维数据的目的地址和大小。其中, 该源地址和目的地址还需要标记所属的存储空间,是内存还是外存储器,如果 是外存储器,还需要标记所属的流。这里的“流”即前述多组数据交替传送时的分 组,处理器对全部数据的需求可能是不连续的,但对某个特定的流来说,很可 能是连续的。
指令缓存单元,用于存储系统DMA指令,即在执行DMA指令过程中,同 时也被缓存在指令缓存单元中。当一条指令执行完之后,如果该指令同时也是 指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交, 该条指令进行的操作对装置状态的改变将无法撤销。
在一种实施方式中,上述指令缓存单元可以是重排序缓存,也可以是其他 缓存单元。
指令处理单元,用于处理指令缓存单元中的系统DMA指令。
其中,指令处理单元可以包括:
取指单元,用于从指令缓存单元中获取系统DMA指令;
译码单元,用于对系统DMA指令进行译码;
指令队列,用于对译码后的系统直接内存访问指令进行顺序存储。
此外,DMA控制模块还可以用于根据DMA指令,从处理器模块中的原始 数据中获取二维数据传送至存储器模块中未存储该二维数据的位置,或者从处 理器模块中的处理数据中获取二维数据并传输至存储器模块。
需要说明的是,上述处理器模块可为源存储器,上述存储器模块中未存储 该二维数据的位置为目的存储器或者上述存储器模块为目的存储器。
上述数据传输装置还可以包括数据缓存单元,用于与源地址存储空间的内 存及DMA控制模块进行数据传输,数据缓存单元可以为高速暂存存储器,可支 持不同大小数据的传输,将待写入的数据暂存在高速暂存存储器中,稍后用于 真正地写入存储器模块中。
上述数据传输装置还可以包括数据转换单元,用于对从源存储器中取出的 数据作数据转换,其中数据转换包括但不限于数据精度转化、定浮点相互转换、 数据排列方式转换、数据量大小转换。
在一种可行的实施例中,上述读写单元获取上述二维数据和该二维数据的 目的地址后,直接根据二维数据的目的地址将二维数据写入目的存储器中。
在一种可行的实施例中,上述读写单元获取上述二维数据和该二维数据的 目的地址后,将该二维数据及其目的地址传输至上述数据转换单元,该数据转 换单元将该二维数据进行处理后,直接根据二维数据的目的地址将二维数据写 入目的存储器中。
在一种可行的实施例中,上述读写单元获取上述二维数据和该二维数据的 目的地址后,将该二维数据及其目的地址传输至上述数据转换单元,该数据转 换单元将该二维数据进行处理后,将转换后的二维数据及其目的地址存储在上 述数据缓存单元中。该数据缓存单元根据二维数据的目的地址将二维数据写入 目的存储器中。
上述数据传输装置还可以包括地址映射单元,用于当源地址为虚拟地址时, 对源地址作地址映射,将源地址转换为源地址对应的物理地址;当目的地址为 虚拟地址时,对目的地址作地址映射,将目的地址转换为目的地址对应的物理 地址。
本披露实施例提供的装置的DMA指令集采用载入/存储(Load/Store)结构, 读写单元不会对内存中的数据进行操作。优选的,DMA指令集采用定长指令。
本披露实施例的另一方面,还提供了一种数据传输方法,用于DMA控制模 块获取并存储二维数据,图151为本披露实施例的步骤流程图,如图151所示, 包括步骤:
S301、数据传输装置根据接收到的DMA指令获取二维数据的源地址和目的 地址。
具体地,上述数据传输装置接收DMA指令,根据该DMA指令从寄存器模 块获取上述的二维数据的源地址和目的地址,或者从DMA指令中获取该二维数 据的源地址和目的地址。
需要说明的是,上述数据传输方法可以应用到神经网络的其他计算方法或 计算装置内,本披露并不限制上述方法的具体表现形式。上述寄存器模块存储 有上述二维数据存储的源地址、目的地址及每次传输二维数据的数据量。
可选地,上述数据传输装置根据上述DMA指令从上述寄存器模块中获取每 次传输二维数据的数据量。
S302、数据传输装置根据所述二维数据的源地址获取所述二维数据。
具体地,所有的数据预先存储在特定的源存储器中,该源存储器可以包括 芯片内部的各个存储模块和外部的存储模块。上述数据传输装置根据获取到的 二维数据的源地址,从上述源存储器中获取所述二维数据。
在一种可行的实施例中,在根据所述二维数据的源地址获取所述二维数据 之前,当确定上述二维数据的源地址为虚拟地址时,上述数据传输装置对该二 维数据的源地址进行地址映射,得到上述源地址的物理地址。上述数据传输装 置根据上述源地址的物理地址从上述源存储器中获取上述二维数据。
S303、数据传输装置根据二维数据的目的地址将所述二维数据传输至目的 存储器。
具体地,上述数据传输装置从寄存器模块或从DMA指令的字段中获取二维 数据的目的地址后,根据二维数据的目的地址将上述二维数据传输至目的存储 器。其中,该目的存储器可以包括芯片内部的各个存储模块和外部的存储模块。
其中,上述源存储器和上述目的存储器不为同一寄存器。
在一种可行的实施例中,上述数据传输装置根据上述每次传输二维数据的 数据量分多次将上述二维数据传输至上述目的存储器中上述目的地址对应的存 储空间中。
在一种可行的实施例中,在根据二维数据的目的地址将所述二维数据传输 至目的存储器之前,确定上述二维数据的目的地址为虚拟地址时,上述数据传 输装置对上述目的地址进行地址映射,将该目的地址转换成该目的地址对应的 物理地址。上述数据传输装置根据上述目的地址对应的物理地址将上述二维数 据传输至上述目的存储器中。
在一种可行的实施中,上述数据传输装置根据上述每次传输二维数据的数 据量分多次将上述二维数据传输至上述目的存储器中上述目的地址对应的物理 地址对应的存储空间中。
图152示意性示出了本披露实施例的指令集的格式示意图,如图152所示, 每条指令包括一个操作码和五个操作域,其中,操作码用于指示该指令的功能, DMA控制模块通过识别该操作码可进行相应的操作,操作域用于指示该指令的 数据地址信息。指令集包含有不同功能的DMA指令:
DTT指令:根据该指令,读写单元从源地址读出一个字,写入目的地址, 同时也写入数据缓存单元。数据传送指令包括五个操作域,分别为第一操作域、 第二操作域、第三操作域、第四操作域和第五操作域。其中,上述第一操作域 用于指示二维数据的源地址所属的存储空间,上述第二操作域用于指示二维数 据的源地址,上述第三操作域用于指示二维数据的目的地址所属的存储空间, 上述第四操作域用于指示二维数据的目的地址,上述第五操作域用于指示二维 数据的每次传输二维数据的数据量。每条指令完成一个字大小的数据的传送。
ADJ指令:根据该指令,上述加法单元将上述寄存器模块中的任两个寄存 器(包括一个地址寄存器和一个跳转值寄存器)中的值相加,然后写回到其中 一个上述地址寄存器中,从而完成2D DMA任务中的换行操作。
上述地址寄存器用于存储所述源地址,上述跳转值寄存器用于存储源地址 的跳转值。
上述ADJ指令包括两个操作域,,分别为第六操作域和第七操作域。其中, 第六操作域用于指示地址寄存器的编号,第七操作域用于指示第跳转值寄存器 的编号。上述ADJ指令将地址寄存器中的值加上跳转值寄存器中的值后,并将 结果写回上述地址寄存器中。
图153示意性示出了本披露实施例的DMA控制模块执行2D DMA命令的 流水线时空图,如图151所示,假设该2D DMA命令需要传送一块大小为3×3 的数据,则整个过程一共需要9拍。也就是说,若该2D DMA命令传送的数据 块大小为m×n,其中,m,n均为正整数,此时,本披露实施例的数据传输过程 一共需要m×n拍。
需要说明的是,上述一拍为上述数据传输装置的一个时钟周期。
需要说明的是,本披露公开的任意一种方法均可以应用在本披露公开的另 外一种方法内,本披露公开的任意一种装置、设备、单元、模块也可以设置在 本披露公开的另一种装置、设备、单元或模块内。本披露公开的任意一种方法 也可以通过本披露的任意一种装置、设备、单元、模块实现。
在本披露的另一实施例中提供一种计算机可读存储介质,所述计算机可读 存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方 法实施例所描述的方法步骤。
所述计算机可读存储介质可以是前述任一实施例所述的终端设备的内部存 储单元,例如终端设备的硬盘或内存。所述计算机可读存储介质也可以是所述 终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储 卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端设备的 内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计 算机程序以及所述终端设备所需的其他程序和数据。所述计算机可读存储介质 还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所披露的实施例描述的各示 例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现, 为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地 描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决 于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用 来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本披露的范 围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描 述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程, 在此不再赘述。
在本披露所提供的几个实施例中,应该理解到,所揭露的终端设备和方法, 可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的, 例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的 划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些 特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合 或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以 是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为 单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者 也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部 单元来实现本披露实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单 元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元 的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或 使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本披露 的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部 或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介 质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述 的存储介质包括:只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-onlyMemory, PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory, OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-OnlyMemory,EEPROM)、只读光盘(Compact Disc Read-Only Memory, CD-ROM)、U盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。 应理解的,将软件产品存储在只读存储器ROM中可以降低装置的功耗,加快处 理速度;而且无需使用者编程,降低使用者的门槛,适合于普通用户(普通消 费者,即2C)。
以上所述,仅为本披露的具体实施方式,但本披露的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本披露揭露的技术范围内,可轻易想到 各种等效的修改或替换,这些修改或替换都应涵盖在本披露的保护范围之内。 因此,本披露的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种信息处理方法,其特征在于,应用于设置有计算装置的终端设备中,所述计算装置中存储有包括至少一项运算指令在内的指令集,所述方法包括:
获取第一信息,所述第一信息为终端设备待处理的信息;
在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息;
输出所述第二信息。
2.根据权利要求1所述的方法,其特征在于,所述获取第一信息包括:
对获取的原始信息进行预处理,从而获得所述第一信息,所述第一信息为具备预设格式的信息,所述预处理包括以下中的至少一项:数据去重处理、数据编码处理、数据转换处理、归一化处理。
3.根据权利要求1或2所述的方法,其特征在于,所述运算指令包括以下中的至少一项:矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令及矩阵搬运指令。
4.根据权利要求1所述的方法,其特征在于,当所述第一信息为语音信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用语音识别算法,对所述语音信息进行语音识别,从而获得第二信息;
其中,所述第二信息为文本信息,所述语音识别算法包括用于语音识别的至少一个运算指令。
5.根据权利要求1所述的方法,其特征在于,当所述第一信息为影像信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用影像风格转换算法,对所述影像信息的风格进行转换处理,从而获得第二信息;
其中,所述第二信息与所述第一信息的风格不同,所述影像风格转换算法包括用于影像画风或风格转换的至少一个运算指令。
6.根据权利要求1所述的方法,其特征在于,当所述第一信息为影像信息,所述影像信息包括至少一个待识别的物体时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用物体检测算法,对所述影像信息进行物体检测,从而获得第二信息;其中,所述第二信息至少包括物体位置,所述物体检测算法包括用于物体检测的至少一个运算指令。
7.根据权利要求1所述的方法,其特征在于,当所述第一信息为待翻译的语言信息时,在所述计算装置中调用运算指令对所述第一信息进行处理,从而获得第二信息包括:
在计算装置中调用语言翻译算法,对所述语言信息进行翻译处理,从而获得第二信息;
其中,所述第一信息和第二信息不同,所述语言翻译算法包括用于语言翻译的至少一个运算指令。
8.一种终端设备,其特征在于,包括用于执行如上权利要求1至7任一项所述方法的功能单元。
9.一种终端设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法。
CN201711036374.9A 2017-10-30 2017-10-30 信息处理方法及终端设备 Pending CN109726806A (zh)

Priority Applications (55)

Application Number Priority Date Filing Date Title
CN201711212123.1A CN107993206A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711212991.XA CN107992486A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849483.0A CN109062606B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量缩放指令的方法
CN201810849497.2A CN109086074B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量复制指令的方法
CN201810849484.5A CN109117183B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量交换指令的方法
CN201711212125.0A CN107832804A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810799988.0A CN109003132B (zh) 2017-10-30 2017-10-30 广告推荐方法及相关产品
CN201810849485.XA CN108874444A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量外积指令的方法
CN201711212994.3A CN107832844A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810801238.2A CN109003603A (zh) 2017-10-30 2017-10-30 语音识别方法及相关产品
CN201810799954.1A CN108986022A (zh) 2017-10-30 2017-10-30 图像美化方法及相关产品
CN201711036374.9A CN109726806A (zh) 2017-10-30 2017-10-30 信息处理方法及终端设备
CN201811440484.6A CN109522254B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201711212995.8A CN107832845A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849491.5A CN109063831A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量加和指令的方法
CN201810849486.4A CN109062539A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量乘加指令的方法
CN201810800665.9A CN108898554A (zh) 2017-10-30 2017-10-30 提高图像分辨率的方法及相关产品
CN201711212656.XA CN107832843B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810800001.2A CN108875926A (zh) 2017-10-30 2017-10-30 语言翻译方法及相关产品
CN201810849496.8A CN109062607B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量最小值指令的方法
CN201810849509.1A CN109117184A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行平面旋转指令的方法
CN201711244020.3A CN109725936B (zh) 2017-10-30 2017-10-30 扩展计算指令的实现方法以及相关产品
CN201711212660.6A CN107895191B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810799987.6A CN109117947A (zh) 2017-10-30 2017-10-30 轮廓检测方法及相关产品
CN201711211933.5A CN107844832A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810800664.4A CN109064384A (zh) 2017-10-30 2017-10-30 物体检测方法及相关产品
CN201810849492.XA CN108874445A (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量点积指令的方法
CN201810849480.7A CN108984211B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行吉文斯旋转指令的方法
CN201811440571.1A CN109542515B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201810849498.7A CN108958801B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量最大值指令的方法
CN201810801236.3A CN109117948B (zh) 2017-10-30 2017-10-30 画风转换方法及相关产品
CN201810849499.1A CN109086075B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行矩阵乘向量指令的方法
CN201811436410.5A CN109542514B (zh) 2017-10-30 2017-10-30 运算指令的实现方法以及相关产品
CN201810801239.7A CN109034382A (zh) 2017-10-30 2017-10-30 场景或物体的识别方法及相关产品
CN201810849488.3A CN109034383B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行矩阵相乘指令的方法
CN201810849479.4A CN109063830A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量范数指令的方法
CN201711212122.7A CN107833176A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN202010336354.9A CN111310910B (zh) 2017-10-30 2018-09-13 一种计算装置及方法
CN201910067288.7A CN109523020A (zh) 2017-10-30 2018-09-13 一种运算装置和方法
CN201910070501.XA CN110084361B (zh) 2017-10-30 2018-09-13 一种运算装置和方法
CN201911062123.7A CN110610236B (zh) 2017-10-30 2018-09-13 一种用于执行神经网络运算的装置及方法
CN202010189354.0A CN111178521A (zh) 2017-10-30 2018-09-13 计算装置以及方法
PCT/CN2018/105463 WO2019085655A1 (zh) 2017-10-30 2018-09-13 信息处理方法及终端设备
CN201911058839.XA CN110689125A (zh) 2017-10-30 2018-09-13 计算装置
US16/760,235 US20210182077A1 (en) 2017-10-30 2018-09-13 Information processing method and terminal device
CN202010309559.8A CN111291880B (zh) 2017-10-30 2018-09-13 计算装置以及计算方法
CN201880002336.8A CN109997154A (zh) 2017-10-30 2018-09-13 信息处理方法及终端设备
CN202010190142.4A CN111160548B (zh) 2017-10-30 2018-09-13 计算装置以及计算方法
CN201911058910.4A CN110689126B (zh) 2017-10-30 2018-09-13 一种用于执行神经网络运算的装置
CN202010190143.9A CN111160549A (zh) 2017-10-30 2018-09-13 互连电路的数据处理装置以及方法
EP18873474.3A EP3709224A4 (en) 2017-10-30 2018-09-13 INFORMATION PROCESSING METHODS AND TERMINAL DEVICE
US17/119,234 US20210158484A1 (en) 2017-10-30 2020-12-11 Information processing method and terminal device
US17/119,029 US12050887B2 (en) 2017-10-30 2020-12-11 Information processing method and terminal device
US17/119,309 US11762631B2 (en) 2017-10-30 2020-12-11 Information processing method and terminal device
US17/119,148 US11922132B2 (en) 2017-10-30 2020-12-11 Information processing method and terminal device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711036374.9A CN109726806A (zh) 2017-10-30 2017-10-30 信息处理方法及终端设备

Related Child Applications (36)

Application Number Title Priority Date Filing Date
CN201810849485.XA Division CN108874444A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量外积指令的方法
CN201811436410.5A Division CN109542514B (zh) 2017-10-30 2017-10-30 运算指令的实现方法以及相关产品
CN201811440571.1A Division CN109542515B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201711211933.5A Division CN107844832A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810800664.4A Division CN109064384A (zh) 2017-10-30 2017-10-30 物体检测方法及相关产品
CN201810801239.7A Division CN109034382A (zh) 2017-10-30 2017-10-30 场景或物体的识别方法及相关产品
CN201811440484.6A Division CN109522254B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201810849496.8A Division CN109062607B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量最小值指令的方法
CN201711212656.XA Division CN107832843B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711212994.3A Division CN107832844A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849483.0A Division CN109062606B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量缩放指令的方法
CN201711212660.6A Division CN107895191B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810800001.2A Division CN108875926A (zh) 2017-10-30 2017-10-30 语言翻译方法及相关产品
CN201810799987.6A Division CN109117947A (zh) 2017-10-30 2017-10-30 轮廓检测方法及相关产品
CN201810849497.2A Division CN109086074B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量复制指令的方法
CN201810849492.XA Division CN108874445A (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量点积指令的方法
CN201810849484.5A Division CN109117183B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量交换指令的方法
CN201711212995.8A Division CN107832845A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849498.7A Division CN108958801B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量最大值指令的方法
CN201810800665.9A Division CN108898554A (zh) 2017-10-30 2017-10-30 提高图像分辨率的方法及相关产品
CN201810849488.3A Division CN109034383B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行矩阵相乘指令的方法
CN201810801236.3A Division CN109117948B (zh) 2017-10-30 2017-10-30 画风转换方法及相关产品
CN201810799988.0A Division CN109003132B (zh) 2017-10-30 2017-10-30 广告推荐方法及相关产品
CN201711212123.1A Division CN107993206A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849486.4A Division CN109062539A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量乘加指令的方法
CN201711212991.XA Division CN107992486A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849499.1A Division CN109086075B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行矩阵乘向量指令的方法
CN201810849479.4A Division CN109063830A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量范数指令的方法
CN201810849509.1A Division CN109117184A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行平面旋转指令的方法
CN201810849491.5A Division CN109063831A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量加和指令的方法
CN201711212125.0A Division CN107832804A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849480.7A Division CN108984211B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行吉文斯旋转指令的方法
CN201810801238.2A Division CN109003603A (zh) 2017-10-30 2017-10-30 语音识别方法及相关产品
CN201711212122.7A Division CN107833176A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711244020.3A Division CN109725936B (zh) 2017-10-30 2017-10-30 扩展计算指令的实现方法以及相关产品
CN201810799954.1A Division CN108986022A (zh) 2017-10-30 2017-10-30 图像美化方法及相关产品

Publications (1)

Publication Number Publication Date
CN109726806A true CN109726806A (zh) 2019-05-07

Family

ID=61645528

Family Applications (48)

Application Number Title Priority Date Filing Date
CN201810849498.7A Active CN108958801B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量最大值指令的方法
CN201810801239.7A Pending CN109034382A (zh) 2017-10-30 2017-10-30 场景或物体的识别方法及相关产品
CN201711211933.5A Pending CN107844832A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810800001.2A Pending CN108875926A (zh) 2017-10-30 2017-10-30 语言翻译方法及相关产品
CN201810849486.4A Pending CN109062539A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量乘加指令的方法
CN201811440571.1A Active CN109542515B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201810799988.0A Active CN109003132B (zh) 2017-10-30 2017-10-30 广告推荐方法及相关产品
CN201810849496.8A Active CN109062607B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量最小值指令的方法
CN201810849491.5A Pending CN109063831A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量加和指令的方法
CN201810849509.1A Pending CN109117184A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行平面旋转指令的方法
CN201810849483.0A Active CN109062606B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量缩放指令的方法
CN201711212995.8A Pending CN107832845A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849497.2A Active CN109086074B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量复制指令的方法
CN201810800664.4A Pending CN109064384A (zh) 2017-10-30 2017-10-30 物体检测方法及相关产品
CN201810849484.5A Active CN109117183B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量交换指令的方法
CN201711212125.0A Pending CN107832804A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810801238.2A Pending CN109003603A (zh) 2017-10-30 2017-10-30 语音识别方法及相关产品
CN201810849485.XA Pending CN108874444A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量外积指令的方法
CN201811440484.6A Active CN109522254B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201810849492.XA Pending CN108874445A (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量点积指令的方法
CN201810799954.1A Pending CN108986022A (zh) 2017-10-30 2017-10-30 图像美化方法及相关产品
CN201810849479.4A Pending CN109063830A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量范数指令的方法
CN201810800665.9A Pending CN108898554A (zh) 2017-10-30 2017-10-30 提高图像分辨率的方法及相关产品
CN201810849480.7A Active CN108984211B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行吉文斯旋转指令的方法
CN201711212660.6A Active CN107895191B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810799987.6A Pending CN109117947A (zh) 2017-10-30 2017-10-30 轮廓检测方法及相关产品
CN201711212122.7A Pending CN107833176A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201811436410.5A Active CN109542514B (zh) 2017-10-30 2017-10-30 运算指令的实现方法以及相关产品
CN201711212991.XA Pending CN107992486A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849499.1A Active CN109086075B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行矩阵乘向量指令的方法
CN201711212123.1A Pending CN107993206A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711212656.XA Active CN107832843B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711212994.3A Pending CN107832844A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711244020.3A Active CN109725936B (zh) 2017-10-30 2017-10-30 扩展计算指令的实现方法以及相关产品
CN201711036374.9A Pending CN109726806A (zh) 2017-10-30 2017-10-30 信息处理方法及终端设备
CN201810849488.3A Active CN109034383B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行矩阵相乘指令的方法
CN201810801236.3A Active CN109117948B (zh) 2017-10-30 2017-10-30 画风转换方法及相关产品
CN201911062123.7A Active CN110610236B (zh) 2017-10-30 2018-09-13 一种用于执行神经网络运算的装置及方法
CN201880002336.8A Pending CN109997154A (zh) 2017-10-30 2018-09-13 信息处理方法及终端设备
CN201910070501.XA Active CN110084361B (zh) 2017-10-30 2018-09-13 一种运算装置和方法
CN201911058910.4A Active CN110689126B (zh) 2017-10-30 2018-09-13 一种用于执行神经网络运算的装置
CN202010190143.9A Pending CN111160549A (zh) 2017-10-30 2018-09-13 互连电路的数据处理装置以及方法
CN202010189354.0A Pending CN111178521A (zh) 2017-10-30 2018-09-13 计算装置以及方法
CN202010190142.4A Active CN111160548B (zh) 2017-10-30 2018-09-13 计算装置以及计算方法
CN202010336354.9A Active CN111310910B (zh) 2017-10-30 2018-09-13 一种计算装置及方法
CN201910067288.7A Pending CN109523020A (zh) 2017-10-30 2018-09-13 一种运算装置和方法
CN201911058839.XA Pending CN110689125A (zh) 2017-10-30 2018-09-13 计算装置
CN202010309559.8A Active CN111291880B (zh) 2017-10-30 2018-09-13 计算装置以及计算方法

Family Applications Before (34)

Application Number Title Priority Date Filing Date
CN201810849498.7A Active CN108958801B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量最大值指令的方法
CN201810801239.7A Pending CN109034382A (zh) 2017-10-30 2017-10-30 场景或物体的识别方法及相关产品
CN201711211933.5A Pending CN107844832A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810800001.2A Pending CN108875926A (zh) 2017-10-30 2017-10-30 语言翻译方法及相关产品
CN201810849486.4A Pending CN109062539A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量乘加指令的方法
CN201811440571.1A Active CN109542515B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201810799988.0A Active CN109003132B (zh) 2017-10-30 2017-10-30 广告推荐方法及相关产品
CN201810849496.8A Active CN109062607B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量最小值指令的方法
CN201810849491.5A Pending CN109063831A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量加和指令的方法
CN201810849509.1A Pending CN109117184A (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行平面旋转指令的方法
CN201810849483.0A Active CN109062606B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量缩放指令的方法
CN201711212995.8A Pending CN107832845A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849497.2A Active CN109086074B (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量复制指令的方法
CN201810800664.4A Pending CN109064384A (zh) 2017-10-30 2017-10-30 物体检测方法及相关产品
CN201810849484.5A Active CN109117183B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行向量交换指令的方法
CN201711212125.0A Pending CN107832804A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810801238.2A Pending CN109003603A (zh) 2017-10-30 2017-10-30 语音识别方法及相关产品
CN201810849485.XA Pending CN108874444A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量外积指令的方法
CN201811440484.6A Active CN109522254B (zh) 2017-10-30 2017-10-30 运算装置及方法
CN201810849492.XA Pending CN108874445A (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行向量点积指令的方法
CN201810799954.1A Pending CN108986022A (zh) 2017-10-30 2017-10-30 图像美化方法及相关产品
CN201810849479.4A Pending CN109063830A (zh) 2017-10-30 2017-10-30 机器学习处理器及使用处理器执行向量范数指令的方法
CN201810800665.9A Pending CN108898554A (zh) 2017-10-30 2017-10-30 提高图像分辨率的方法及相关产品
CN201810849480.7A Active CN108984211B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行吉文斯旋转指令的方法
CN201711212660.6A Active CN107895191B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810799987.6A Pending CN109117947A (zh) 2017-10-30 2017-10-30 轮廓检测方法及相关产品
CN201711212122.7A Pending CN107833176A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201811436410.5A Active CN109542514B (zh) 2017-10-30 2017-10-30 运算指令的实现方法以及相关产品
CN201711212991.XA Pending CN107992486A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201810849499.1A Active CN109086075B (zh) 2017-10-30 2017-10-30 人工智能处理器及使用处理器执行矩阵乘向量指令的方法
CN201711212123.1A Pending CN107993206A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711212656.XA Active CN107832843B (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711212994.3A Pending CN107832844A (zh) 2017-10-30 2017-10-30 一种信息处理方法及相关产品
CN201711244020.3A Active CN109725936B (zh) 2017-10-30 2017-10-30 扩展计算指令的实现方法以及相关产品

Family Applications After (13)

Application Number Title Priority Date Filing Date
CN201810849488.3A Active CN109034383B (zh) 2017-10-30 2017-10-30 神经网络处理器及使用处理器执行矩阵相乘指令的方法
CN201810801236.3A Active CN109117948B (zh) 2017-10-30 2017-10-30 画风转换方法及相关产品
CN201911062123.7A Active CN110610236B (zh) 2017-10-30 2018-09-13 一种用于执行神经网络运算的装置及方法
CN201880002336.8A Pending CN109997154A (zh) 2017-10-30 2018-09-13 信息处理方法及终端设备
CN201910070501.XA Active CN110084361B (zh) 2017-10-30 2018-09-13 一种运算装置和方法
CN201911058910.4A Active CN110689126B (zh) 2017-10-30 2018-09-13 一种用于执行神经网络运算的装置
CN202010190143.9A Pending CN111160549A (zh) 2017-10-30 2018-09-13 互连电路的数据处理装置以及方法
CN202010189354.0A Pending CN111178521A (zh) 2017-10-30 2018-09-13 计算装置以及方法
CN202010190142.4A Active CN111160548B (zh) 2017-10-30 2018-09-13 计算装置以及计算方法
CN202010336354.9A Active CN111310910B (zh) 2017-10-30 2018-09-13 一种计算装置及方法
CN201910067288.7A Pending CN109523020A (zh) 2017-10-30 2018-09-13 一种运算装置和方法
CN201911058839.XA Pending CN110689125A (zh) 2017-10-30 2018-09-13 计算装置
CN202010309559.8A Active CN111291880B (zh) 2017-10-30 2018-09-13 计算装置以及计算方法

Country Status (4)

Country Link
US (5) US20210182077A1 (zh)
EP (1) EP3709224A4 (zh)
CN (48) CN108958801B (zh)
WO (1) WO2019085655A1 (zh)

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109165728A (zh) * 2018-08-06 2019-01-08 济南浪潮高新科技投资发展有限公司 一种卷积神经网络的基本计算单元及计算方法
CN110198164A (zh) * 2019-05-17 2019-09-03 山东科技大学 一种绝对值流控忆阻器模拟电路
CN110210612A (zh) * 2019-05-14 2019-09-06 北京中科汇成科技有限公司 一种基于自适应分段线性逼近曲线的集成电路加速方法及系统
CN110277100A (zh) * 2019-06-19 2019-09-24 南京邮电大学 基于Alexnet改进的声纹识别方法、存储介质和终端
CN110532205A (zh) * 2019-07-17 2019-12-03 浙江大华技术股份有限公司 数据传输方法、装置、计算机设备和计算机可读存储介质
CN110673823A (zh) * 2019-09-30 2020-01-10 上海寒武纪信息科技有限公司 乘法器、数据处理方法及芯片
CN110807522A (zh) * 2019-10-31 2020-02-18 合肥工业大学 一种神经网络加速器的通用计算电路
CN110996171A (zh) * 2019-12-12 2020-04-10 北京金山云网络技术有限公司 视频类任务的训练数据生成方法、装置及服务器
CN111026445A (zh) * 2019-12-17 2020-04-17 湖南长城银河科技有限公司 一种智能识别方法及芯片
CN111144556A (zh) * 2019-12-31 2020-05-12 中国人民解放军国防科技大学 面向深度神经网络训练和推理的范围批处理归一化算法的硬件电路
CN111176725A (zh) * 2019-12-27 2020-05-19 北京市商汤科技开发有限公司 数据处理方法、装置、设备和存储介质
CN111241204A (zh) * 2020-02-14 2020-06-05 苏州浪潮智能科技有限公司 一种梯度数据的同步方法、装置、设备及存储介质
CN111488969A (zh) * 2020-04-03 2020-08-04 北京思朗科技有限责任公司 基于神经网络加速器的执行优化方法及装置
CN111522776A (zh) * 2020-04-27 2020-08-11 西安交通大学 一种计算架构
US20200257752A1 (en) * 2017-12-14 2020-08-13 Cambricon Technologies Corporation Limited Integrated circuit chip apparatus
CN111565180A (zh) * 2020-04-28 2020-08-21 广州锦行网络科技有限公司 一种虚拟端口的保护系统及方法
CN111831582A (zh) * 2020-07-16 2020-10-27 中国科学院计算技术研究所 用于智能处理器的内存管理装置、方法及电子设备
CN111857834A (zh) * 2020-07-16 2020-10-30 中国科学院计算技术研究所 分形计算智能处理器、分形计算智能处理方法
CN111857833A (zh) * 2020-07-16 2020-10-30 中国科学院计算技术研究所 并行计算智能处理器及并行计算智能处理方法
CN111913744A (zh) * 2020-07-15 2020-11-10 博流智能科技(南京)有限公司 Ai深度学习数据处理方法及系统
CN111930681A (zh) * 2019-05-13 2020-11-13 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN112052149A (zh) * 2020-09-06 2020-12-08 厦门理工学院 一种大数据信息采集系统及使用方法
CN112149793A (zh) * 2019-06-27 2020-12-29 三星电子株式会社 人工神经网络模型和包括人工神经网络模型的电子设备
CN112333222A (zh) * 2019-08-05 2021-02-05 中润普达(深圳)大数据技术有限公司 一种基于大数据的云计算服务系统
CN112394887A (zh) * 2019-08-17 2021-02-23 森大(深圳)技术有限公司 Onepass打印数据高效率处理方法、装置、设备及存储介质
CN112394903A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 短整形转半精度浮点指令处理装置、方法及相关产品
CN112394991A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 浮点转半精度浮点指令处理装置、方法及相关产品
CN112445523A (zh) * 2019-09-02 2021-03-05 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
CN112580485A (zh) * 2020-12-14 2021-03-30 珠海零边界集成电路有限公司 图像的读写方法和装置、电子设备和存储介质
WO2021057085A1 (zh) * 2019-09-27 2021-04-01 东南大学 一种基于混合精度存储的深度神经网络加速器
WO2021077283A1 (zh) * 2019-10-22 2021-04-29 深圳鲲云信息科技有限公司 神经网络计算压缩方法、系统及存储介质
CN112967188A (zh) * 2021-03-04 2021-06-15 中国科学技术大学 结合结构化语义码流的空间自适应图像超分辨重建方法
CN112991358A (zh) * 2020-09-30 2021-06-18 北京字节跳动网络技术有限公司 风格图像生成方法、模型训练方法、装置、设备和介质
WO2021147602A1 (zh) * 2020-01-21 2021-07-29 上海商汤智能科技有限公司 数据处理装置、人工智能芯片
WO2021189294A1 (zh) * 2020-03-25 2021-09-30 华为技术有限公司 卷积运算系统和卷积运算方法
CN113485951A (zh) * 2021-07-31 2021-10-08 郑州信大捷安信息技术股份有限公司 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统
CN113626759A (zh) * 2020-05-07 2021-11-09 脸谱公司 使用低位宽点积引擎对高位宽数求和
CN113791889A (zh) * 2021-11-18 2021-12-14 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN114070563A (zh) * 2020-07-31 2022-02-18 中移(苏州)软件技术有限公司 一种数据处理方法、装置、终端及存储介质
CN114172936A (zh) * 2021-12-08 2022-03-11 长讯通信服务有限公司 一种应用于物联网设备通信可信的方法
CN114217710A (zh) * 2021-12-20 2022-03-22 平安付科技服务有限公司 弹框控制方法、装置、存储介质及系统
CN114359683A (zh) * 2021-12-31 2022-04-15 电子科技大学 一种面向文本定位的单内核hog高效异构加速方法
CN114356235A (zh) * 2021-12-31 2022-04-15 Oppo广东移动通信有限公司 一种数据标准化处理方法、装置、电子设备及存储介质
WO2022088417A1 (zh) * 2020-10-29 2022-05-05 深圳大学 一种基于异质特征深度残差网络的内容推荐方法
CN114491396A (zh) * 2022-01-20 2022-05-13 重庆邮电大学 一种idma系统发送信号均值计算方法及系统
CN114546914A (zh) * 2022-02-23 2022-05-27 北京奕斯伟计算技术有限公司 用于对多个通道信息执行数据处理的处理装置及系统
CN114615207A (zh) * 2022-03-10 2022-06-10 四川三思德科技有限公司 推流前的数据定向化处理方法及装置
WO2022141344A1 (zh) * 2020-12-31 2022-07-07 北京希姆计算科技有限公司 执行程序的编译方法、芯片、电子设备及计算机可读存储介质
CN116450086A (zh) * 2022-01-05 2023-07-18 腾讯科技(深圳)有限公司 包括乘累加器的芯片、终端和控制方法
CN116679988A (zh) * 2023-08-02 2023-09-01 武汉芯必达微电子有限公司 硬件加速单元、硬件加速方法、芯片及存储介质
WO2023165268A1 (zh) * 2022-03-04 2023-09-07 支付宝(杭州)信息技术有限公司 数据处理
CN117372495A (zh) * 2023-09-15 2024-01-09 进迭时空(杭州)科技有限公司 一种加速数字图像处理中不同位宽点积的计算方法
CN117725468A (zh) * 2024-02-06 2024-03-19 四川鸿霖科技有限公司 一种智能医用电保障方法及系统
CN118095351A (zh) * 2024-04-12 2024-05-28 清华大学 层归一化计算的协同处理装置及方法
CN118535124A (zh) * 2024-05-27 2024-08-23 北京航空航天大学合肥创新研究院 移位加法器树结构、计算核架构、执行计算的方法及芯片

Families Citing this family (238)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190392297A1 (en) * 2016-12-30 2019-12-26 Intel Corporation Deep learning hardware
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
WO2018192500A1 (zh) * 2017-04-19 2018-10-25 上海寒武纪信息科技有限公司 处理装置和处理方法
WO2018214913A1 (zh) * 2017-05-23 2018-11-29 上海寒武纪信息科技有限公司 处理方法及加速装置
CN108958801B (zh) 2017-10-30 2021-06-25 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行向量最大值指令的方法
JP6454397B1 (ja) * 2017-12-20 2019-01-16 Nttエレクトロニクス株式会社 誤り訂正装置、誤り訂正方法及び光通信システム
US11636327B2 (en) * 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US20190244080A1 (en) * 2018-02-02 2019-08-08 Wisconsin Alumni Research Foundation Neural Network Processor with On-Chip Convolution Kernel Storage
CN108388446A (zh) 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
CN110222833B (zh) * 2018-03-01 2023-12-19 华为技术有限公司 一种用于神经网络的数据处理电路
CN108470211B (zh) * 2018-04-09 2022-07-12 郑州云海信息技术有限公司 一种卷积计算的实现方法、设备和计算机存储介质
CN110399976B (zh) * 2018-04-25 2022-04-05 华为技术有限公司 计算装置和计算方法
CN108629409B (zh) * 2018-04-28 2020-04-10 中国科学院计算技术研究所 一种基于主成分分析减少io开销的神经网络处理系统
CN110472734B (zh) * 2018-05-11 2024-03-29 上海寒武纪信息科技有限公司 一种计算装置及相关产品
CN108804223A (zh) * 2018-05-16 2018-11-13 努比亚技术有限公司 内存优化方法、移动终端及计算机可读存储介质
CN108831475B (zh) * 2018-05-24 2020-09-29 广州市千钧网络科技有限公司 一种文本消息提取方法及系统
WO2019227322A1 (zh) * 2018-05-30 2019-12-05 深圳市大疆创新科技有限公司 池化装置和池化方法
US11880762B2 (en) * 2018-06-26 2024-01-23 International Business Machines Corporation Choosing execution mode of a neural network based on total memory usage
CN110647356A (zh) * 2018-06-27 2020-01-03 北京中科寒武纪科技有限公司 运算装置及相关产品
CN110647973A (zh) * 2018-06-27 2020-01-03 北京中科寒武纪科技有限公司 运算方法及相关方法和产品
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
CN112437930A (zh) * 2018-07-12 2021-03-02 华为技术有限公司 以熟练的推理速度和功耗,生成神经网络的压缩表示
CN110874343B (zh) * 2018-08-10 2023-04-21 北京百度网讯科技有限公司 基于深度学习芯片进行语音处理的方法和深度学习芯片
US20200104716A1 (en) * 2018-08-23 2020-04-02 Samsung Electronics Co., Ltd. Method and system with deep learning model generation
CN110865792B (zh) * 2018-08-28 2021-03-19 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN110874605B (zh) * 2018-08-31 2024-05-03 嘉楠明芯(北京)科技有限公司 图像识别处理方法和装置
CN110874632B (zh) * 2018-08-31 2024-05-03 嘉楠明芯(北京)科技有限公司 图像识别处理方法和装置
CN109242091B (zh) * 2018-09-03 2022-03-22 郑州云海信息技术有限公司 图像识别方法、装置、设备及可读存储介质
CN109065076B (zh) * 2018-09-05 2020-11-27 深圳追一科技有限公司 音频标签的设置方法、装置、设备和存储介质
US12094456B2 (en) 2018-09-13 2024-09-17 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and system
CN110897626A (zh) * 2018-09-14 2020-03-24 杭州脉流科技有限公司 基于深度神经网络的心电图分析方法、装置、计算机设备和系统
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN110969246A (zh) * 2018-09-28 2020-04-07 上海寒武纪信息科技有限公司 信号处理装置及相关产品
CN110968285A (zh) * 2018-09-28 2020-04-07 上海寒武纪信息科技有限公司 信号处理装置及相关产品
CN110969222A (zh) * 2018-09-29 2020-04-07 西门子股份公司 信息提供方法和系统
WO2020070916A1 (ja) * 2018-10-02 2020-04-09 日本電信電話株式会社 算出装置、算出方法及び算出プログラム
CN111047005A (zh) * 2018-10-11 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353125B (zh) * 2018-12-20 2022-04-22 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353124A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111338694B (zh) * 2018-12-19 2022-05-31 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111222633A (zh) * 2018-11-23 2020-06-02 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111290788B (zh) * 2018-12-07 2022-05-31 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111047027A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN110096309B (zh) * 2018-11-14 2020-04-14 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111275197B (zh) * 2018-12-05 2023-11-10 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111339060B (zh) * 2018-12-19 2024-03-12 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111045728B (zh) * 2018-10-12 2022-04-12 上海寒武纪信息科技有限公司 一种计算装置及相关产品
CN111047022B (zh) * 2018-10-12 2023-11-24 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN111047024B (zh) * 2018-10-12 2023-05-23 上海寒武纪信息科技有限公司 一种计算装置及相关产品
CN111047021B (zh) * 2018-10-12 2023-11-24 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN111079911B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079907B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
US11294985B2 (en) * 2018-10-30 2022-04-05 Intel Corporation Efficient analog in-memory matrix multiplication processor
US11526759B2 (en) * 2018-11-05 2022-12-13 International Business Machines Corporation Large model support in deep learning
KR102462910B1 (ko) * 2018-11-12 2022-11-04 한국전자통신연구원 배치 정규화 레이어의 웨이트들에 대한 양자화 방법 및 그 장치
CN109491938A (zh) * 2018-11-27 2019-03-19 济南浪潮高新科技投资发展有限公司 一种面向卷积神经网络加速的多通道dma控制器和卷积神经网络加速方法
US11520561B1 (en) 2018-11-28 2022-12-06 Amazon Technologies, Inc. Neural network accelerator with compact instruct set
CN109543825B (zh) * 2018-11-30 2020-12-01 安徽寒武纪信息科技有限公司 神经网络模型算法编译方法、装置及相关产品
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381871B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111382390B (zh) * 2018-12-28 2022-08-12 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111258641B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109543833B (zh) * 2018-11-30 2021-08-03 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109583579B (zh) * 2018-11-30 2021-04-09 上海寒武纪信息科技有限公司 计算装置及相关产品
CN109685201B (zh) * 2018-12-14 2020-10-30 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111383638A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111193916B (zh) * 2018-12-29 2022-03-29 中科寒武纪科技股份有限公司 运算方法
CN109635937B (zh) * 2018-12-30 2023-07-11 南京大学 一种面向低位宽卷积神经网络的低功耗系统
WO2020142973A1 (en) * 2019-01-10 2020-07-16 Alibaba Group Holding Limited Matrix-based instruction set architecture for neural network
CN111488759A (zh) * 2019-01-25 2020-08-04 北京字节跳动网络技术有限公司 动物脸部的图像处理方法和装置
US11475285B2 (en) * 2019-01-28 2022-10-18 Samsung Electronics Co., Ltd. Neural network accelerator and operating method thereof
JP7353772B2 (ja) * 2019-03-07 2023-10-02 キヤノン株式会社 データ処理装置及びその方法、プログラム
CN110049200A (zh) * 2019-03-07 2019-07-23 永德利硅橡胶科技(深圳)有限公司 基于会议的语言翻译方法及相关产品
CN109902201A (zh) * 2019-03-08 2019-06-18 天津理工大学 一种基于cnn和bp神经网络的推荐方法
CN111723920B (zh) * 2019-03-22 2024-05-17 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN111723921B (zh) * 2019-03-22 2024-05-14 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN111738021B (zh) * 2019-03-25 2023-10-31 株式会社理光 神经机器翻译模型的词向量处理方法、装置及存储介质
FR3094516A1 (fr) * 2019-03-25 2020-10-02 Proton World International N.V. Système électronique
US11704573B2 (en) * 2019-03-25 2023-07-18 Here Global B.V. Method, apparatus, and computer program product for identifying and compensating content contributors
CN110009021B (zh) * 2019-03-26 2021-06-15 深兰科技(上海)有限公司 一种目标识别方法及设备
CN109919312B (zh) * 2019-03-29 2021-04-23 北京智芯微电子科技有限公司 卷积神经网络的运算方法、装置及dpu
CN111782577B (zh) 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN110135462B (zh) * 2019-04-18 2022-12-20 南开大学 一种基于上下文信息的艺术画风格分类方法
EP3948590A4 (en) * 2019-05-01 2022-11-16 Microsoft Technology Licensing, LLC METHOD AND SYSTEM FOR USING UNSUPERVISED LEARNING TO IMPROVE CONTENT TEXT SUGGESTIONS
EP3963474A4 (en) * 2019-05-01 2022-12-14 Microsoft Technology Licensing, LLC METHOD AND SYSTEM FOR USING UNSUPERVISED LEARNING TO IMPROVE TEXT ON SUGGESTED CONTENT
US11216687B2 (en) * 2019-05-15 2022-01-04 Getac Technology Corporation Image detection scanning method for object surface defects and image detection scanning system thereof
CN111966325A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN112346781A (zh) * 2019-08-07 2021-02-09 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966403A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966398B (zh) * 2019-05-20 2024-06-07 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111966400B (zh) * 2019-05-20 2024-07-19 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN110298441B (zh) * 2019-05-24 2022-01-11 深圳云天励飞技术有限公司 一种数据处理方法、电子装置及计算机可读存储介质
CN110390626A (zh) * 2019-07-02 2019-10-29 深兰科技(上海)有限公司 一种卷积神经网络的图像处理方法及装置
KR20210004702A (ko) 2019-07-05 2021-01-13 삼성전자주식회사 Ai 프로세서 및 이의 신경망 연산 수행 방법
CN110427578B (zh) * 2019-07-16 2020-06-02 盐城师范学院 一种基于深度机器学习的数字内容投放方法
CN112308198A (zh) * 2019-07-26 2021-02-02 中科寒武纪科技股份有限公司 循环神经网络的计算方法及相关产品
US11870804B2 (en) * 2019-08-01 2024-01-09 Akamai Technologies, Inc. Automated learning and detection of web bot transactions using deep learning
CN110598858A (zh) * 2019-08-02 2019-12-20 北京航空航天大学 基于非易失性存内计算实现二值神经网络的芯片和方法
CN110489356B (zh) * 2019-08-06 2022-02-22 上海商汤智能科技有限公司 信息处理方法、装置、电子设备及存储介质
US12061971B2 (en) 2019-08-12 2024-08-13 Micron Technology, Inc. Predictive maintenance of automotive engines
CN110569275A (zh) * 2019-08-14 2019-12-13 清华大学山西清洁能源研究院 支持相似性检索的高纬缺失时间序列的压缩方法及装置
CN112434781B (zh) * 2019-08-26 2024-09-10 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
CN110780921B (zh) * 2019-08-30 2023-09-26 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
US11409654B2 (en) * 2019-09-05 2022-08-09 Micron Technology, Inc. Intelligent optimization of caching operations in a data storage device
CN110426965A (zh) * 2019-09-17 2019-11-08 苏州百宝箱科技有限公司 一种基于云平台的智能家居远程控制方法
CN110647718B (zh) * 2019-09-26 2023-07-25 中昊芯英(杭州)科技有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN112579042B (zh) * 2019-09-29 2024-04-19 广州希姆半导体科技有限公司 计算装置及方法、芯片、电子设备及计算机可读存储介质
CN110837483B (zh) * 2019-09-30 2021-07-23 厦门星宸科技有限公司 张量维度变换的方法以及装置
CN112712172B (zh) * 2019-10-25 2023-12-26 安徽寒武纪信息科技有限公司 用于神经网络运算的计算装置、方法、集成电路和设备
WO2021081739A1 (en) * 2019-10-29 2021-05-06 Intel Corporation Device capability aware technology to execute deep learning computation graphs in web applications
CN110796246A (zh) * 2019-10-29 2020-02-14 南京宁麒智能计算芯片研究院有限公司 一种基于线性分段的激活函数的硬件实现电路和方法
US11475311B2 (en) 2019-10-30 2022-10-18 Raytheon Company Neural network instruction streaming
CN112784207B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算方法及相关产品
CN112817638A (zh) * 2019-11-18 2021-05-18 北京希姆计算科技有限公司 一种数据处理装置及方法
CN111027690B (zh) * 2019-11-26 2023-08-04 陈子祺 执行确定性推理的组合处理装置、芯片和方法
US11610102B1 (en) * 2019-11-27 2023-03-21 Amazon Technologies, Inc. Time-based memory allocation for neural network inference
US12099930B2 (en) * 2019-12-12 2024-09-24 Texas Instruments Incorporated Parametric power-of-2 clipping activations for quantization for convolutional neural networks
CN111178087B (zh) * 2019-12-20 2023-05-09 沈阳雅译网络技术有限公司 一种基于离散型注意力机制的神经机器翻译解码加速方法
CN111125617A (zh) * 2019-12-23 2020-05-08 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
US11755683B2 (en) 2019-12-23 2023-09-12 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors (FAST) in machine learning
CN113128673B (zh) * 2019-12-31 2023-08-11 Oppo广东移动通信有限公司 数据处理方法、存储介质、神经网络处理器及电子设备
CN111240747B (zh) * 2020-01-13 2022-05-06 Oppo广东移动通信有限公司 指令生成方法、装置、测试架构和电子设备
CN111242293B (zh) * 2020-01-13 2023-07-18 腾讯科技(深圳)有限公司 一种处理部件、数据处理的方法以及电子设备
US12093562B2 (en) * 2020-01-20 2024-09-17 SK Hynix Inc. Controller with smart scheduling and method of operating the controller
CN113220270A (zh) * 2020-01-21 2021-08-06 华为技术有限公司 一种生成向量化程序的方法及装置
TWI727641B (zh) * 2020-02-03 2021-05-11 華邦電子股份有限公司 記憶體裝置及其操作方法
US20210256384A1 (en) * 2020-02-14 2021-08-19 Northeastern University Computer-implemented methods and systems for achieving real-time dnn execution on mobile devices with pattern-based weight pruning
KR20210105053A (ko) * 2020-02-18 2021-08-26 에스케이하이닉스 주식회사 연산 회로 및 그것을 포함하는 딥 러닝 시스템
US20210256092A1 (en) * 2020-02-19 2021-08-19 Nvidia Corporation Application programming interface to accelerate matrix operations
US11562235B2 (en) 2020-02-21 2023-01-24 International Business Machines Corporation Activation function computation for neural networks
US11727270B2 (en) 2020-02-24 2023-08-15 Microsoft Technology Licensing, Llc Cross data set knowledge distillation for training machine learning models
EP3872710A1 (en) * 2020-02-27 2021-09-01 Aptiv Technologies Limited Method and system for determining information on an expected trajectory of an object
CN111311707B (zh) * 2020-03-05 2023-05-05 云知声智能科技股份有限公司 一种作画方法及装置
US20210287074A1 (en) * 2020-03-12 2021-09-16 Semiconductor Components Industries, Llc Neural network weight encoding
US11526743B2 (en) * 2020-03-13 2022-12-13 Arm Limited Artificial neural network optical hardware accelerator
US12039432B2 (en) * 2020-03-18 2024-07-16 Infineon Technologies Ag Artificial neural network activation function
US11797830B2 (en) * 2020-03-25 2023-10-24 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
CN111522657B (zh) * 2020-04-14 2022-07-22 北京航空航天大学 一种分散设备协同深度学习推理方法
US11748623B2 (en) * 2020-04-15 2023-09-05 Mipsology SAS Modifying structure of artificial neural networks by collocating parameters
CN111539462B (zh) * 2020-04-15 2023-09-19 苏州万高电脑科技有限公司 模仿生物视觉神经元的图像分类方法、系统、装置及介质
CN113537205A (zh) * 2020-04-21 2021-10-22 中兴通讯股份有限公司 图像识别方法、系统、终端、服务器及存储介质
CN111581593B (zh) * 2020-04-21 2023-09-05 天津大学 可配置重用的分段式查找表激活函数实现装置
CN111563898B (zh) * 2020-04-29 2023-05-16 万翼科技有限公司 图像分割方法、电子设备及相关产品
US11604976B2 (en) * 2020-04-29 2023-03-14 International Business Machines Corporation Crossbar arrays for computations in memory-augmented neural networks
US11527089B2 (en) * 2020-04-29 2022-12-13 Conduent Business Services, Llc Building light-weight single shot refinement neural network for vehicle passenger detection system
CN111553466B (zh) * 2020-04-30 2024-03-22 上海商汤智能科技有限公司 信息处理方法、装置及设备
CN113626080B (zh) * 2020-05-08 2023-10-03 安徽寒武纪信息科技有限公司 数据处理装置以及相关产品
CN111525921B (zh) * 2020-05-15 2023-09-08 矽力杰半导体技术(杭州)有限公司 用于神经网络中信号转换的系统和方法
CN111598227B (zh) * 2020-05-20 2023-11-03 字节跳动有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN111914612B (zh) * 2020-05-21 2024-03-01 淮阴工学院 一种基于改进的卷积神经网络的施工图图元自适应识别方法
JP7488696B2 (ja) * 2020-06-04 2024-05-22 株式会社東海理化電機製作所 処理装置、プログラム、およびシステム
US11782685B2 (en) * 2020-06-17 2023-10-10 Bank Of America Corporation Software code vectorization converter
CN113835850A (zh) * 2020-06-24 2021-12-24 上海寒武纪信息科技有限公司 任务处理方法、系统及存储介质
US11435941B1 (en) * 2020-06-24 2022-09-06 Amazon Technologies, Inc. Matrix transpose hardware acceleration
CN111832718B (zh) * 2020-06-24 2021-08-03 上海西井信息科技有限公司 芯片架构
US11720328B2 (en) * 2020-06-26 2023-08-08 Advanced Micro Devices, Inc. Processing unit with small footprint arithmetic logic unit
CN113867792A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN111767508B (zh) * 2020-07-09 2024-02-23 地平线(上海)人工智能技术有限公司 计算机实现张量数据计算的方法、装置、介质和设备
KR20220009126A (ko) 2020-07-15 2022-01-24 삼성전자주식회사 뉴럴 네트워크 연산 처리 장치 및 방법
CN111984189B (zh) * 2020-07-22 2022-05-17 深圳云天励飞技术股份有限公司 神经网络计算装置和数据读取、数据存储方法及相关设备
CN111860818B (zh) * 2020-07-23 2022-11-08 哈尔滨工业大学(威海) 基于智能芯片的som神经网络算法处理方法
US11163571B1 (en) * 2020-07-29 2021-11-02 International Business Machines Corporation Fusion to enhance early address generation of load instructions in a microprocessor
CN112102816A (zh) * 2020-08-17 2020-12-18 北京百度网讯科技有限公司 语音识别方法、装置、系统、电子设备和存储介质
JP7524667B2 (ja) * 2020-08-19 2024-07-30 富士通株式会社 情報処理装置、機械学習方法及び機械学習プログラム
TWI746126B (zh) * 2020-08-25 2021-11-11 創鑫智慧股份有限公司 矩陣乘法裝置及其操作方法
CN112200299B (zh) * 2020-09-09 2024-04-12 星宸科技股份有限公司 神经网络计算装置、数据处理方法及装置
KR102466257B1 (ko) * 2020-09-10 2022-11-14 주식회사 더웨이브톡 다중 광원을 활용한 분광 장치
US20220092408A1 (en) * 2020-09-23 2022-03-24 Facebook, Inc. Neural network weight distribution using a tree direct-memory access (dma) bus
CN112181492A (zh) * 2020-09-23 2021-01-05 北京奕斯伟计算技术有限公司 一种指令处理方法、指令处理装置和芯片
CN111931937B (zh) * 2020-09-30 2021-01-01 深圳云天励飞技术股份有限公司 图像处理模型的梯度更新方法、装置及系统
CN112200305A (zh) * 2020-09-30 2021-01-08 中国电力科学研究院有限公司 一种神经网络加速协处理器、处理系统及处理方法
US11620818B2 (en) * 2020-10-01 2023-04-04 Intel Corporation Spatially sparse neural network accelerator for multi-dimension visual analytics
TWI748679B (zh) * 2020-10-08 2021-12-01 大陸商星宸科技股份有限公司 神經網路計算裝置、資料處理方法及裝置
CN112256801B (zh) * 2020-10-10 2024-04-09 深圳力维智联技术有限公司 抽取实体关系图中关键实体的方法、系统和存储介质
CN112232486A (zh) * 2020-10-19 2021-01-15 南京宁麒智能计算芯片研究院有限公司 一种yolo脉冲神经网络的优化方法
CN112540996B (zh) * 2020-11-12 2023-11-24 Oppo(重庆)智能科技有限公司 一种业务数据的校验方法、装置、电子设备及存储介质
US12112112B2 (en) * 2020-11-12 2024-10-08 Samsung Electronics Co., Ltd. Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor
CN114519167A (zh) * 2020-11-19 2022-05-20 华为技术有限公司 一种算子计算方法、装置、设备及系统
KR20220073306A (ko) * 2020-11-26 2022-06-03 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN112306500B (zh) * 2020-11-30 2022-06-07 上海交通大学 一种针对粗粒度可重构结构的降低多类访存冲突编译方法
CN112666860A (zh) * 2020-12-15 2021-04-16 合肥中感微电子有限公司 数字信号的扩展处理系统、其处理方法和处理器
CN112488908B (zh) * 2020-12-18 2021-08-27 时擎智能科技(上海)有限公司 一种计算装置、计算方法、存储介质及终端
CN112631955B (zh) * 2020-12-18 2024-01-19 北京地平线机器人技术研发有限公司 数据处理方法、装置、电子设备以及介质
US12001385B2 (en) * 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
CN112633505B (zh) 2020-12-24 2022-05-27 苏州浪潮智能科技有限公司 一种基于risc-v的人工智能推理方法和系统
CN112528224B (zh) * 2020-12-28 2022-09-13 上海微波技术研究所(中国电子科技集团公司第五十研究所) 一种矩阵特征值分解分组循环迭代流水实现方法及系统
CN112784970B (zh) * 2020-12-31 2023-08-15 深圳大普微电子科技有限公司 一种硬件加速器、数据处理方法、系统级芯片及介质
CN112328511B (zh) * 2021-01-04 2021-05-04 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN112766477B (zh) * 2021-01-13 2023-05-30 天津智模科技有限公司 神经网络运算电路
CN112905591B (zh) * 2021-02-04 2022-08-26 成都信息工程大学 一种基于机器学习的数据表连接顺序选择方法
CN114944155B (zh) * 2021-02-14 2024-06-04 成都启英泰伦科技有限公司 一种终端硬件和算法软件处理相结合的离线语音识别方法
CN112836513B (zh) * 2021-02-20 2024-07-12 广联达科技股份有限公司 一种命名实体的链接方法、装置、设备及可读存储介质
CN112835842B (zh) * 2021-03-05 2024-04-30 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端
US20220300816A1 (en) * 2021-03-19 2022-09-22 Rebellions Inc. Neural processing device and method for pruning thereof
CN113138804B (zh) * 2021-04-20 2022-10-04 清华大学 在传输过程中提取流数据特征的流处理器及其实现方法
CN113284512B (zh) * 2021-05-25 2022-05-27 重庆大学 一种基于深度稀疏迁移学习的帕金森语音分类方法
CN113256497B (zh) * 2021-06-21 2021-09-24 中南大学 图像重建方法及系统
CN113254648B (zh) * 2021-06-22 2021-10-22 暨南大学 一种基于多层次图池化的文本情感分析方法
CN115600659A (zh) * 2021-07-08 2023-01-13 北京嘉楠捷思信息技术有限公司(Cn) 一种神经网络运算的硬件加速装置和加速方法
CN113407351B (zh) * 2021-07-20 2024-08-23 昆仑芯(北京)科技有限公司 执行运算的方法、装置、芯片、设备、介质和程序产品
CN113724127B (zh) * 2021-08-02 2023-05-05 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质
CN113688352B (zh) * 2021-08-20 2023-08-04 上海思朗科技有限公司 一种数据处理系统、方法及装置
CN113709495B (zh) * 2021-08-24 2023-11-24 天津津航计算技术研究所 一种基于pcie缓冲机制的同步解码方法
CN113704689B (zh) * 2021-08-25 2022-11-11 北京大学 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置
CN113489619B (zh) * 2021-09-06 2021-11-19 中国人民解放军国防科技大学 一种基于时间序列分析的网络拓扑推断方法及装置
US12050858B2 (en) * 2021-09-21 2024-07-30 Bank Of America Corporation Personal data discovery
CN113869495B (zh) * 2021-09-30 2024-02-06 苏州浪潮智能科技有限公司 神经网络卷积权重layout优化的方法、装置、设备及可读介质
CN113988280B (zh) * 2021-10-26 2023-05-05 电子科技大学 一种基于二值化神经网络的阵列计算加速器架构
CN113918883B (zh) * 2021-11-03 2022-05-27 海光信息技术股份有限公司 数据处理方法、装置以及设备和计算机可读存储介质
CN114116547B (zh) * 2021-11-12 2024-03-26 成都立思方信息技术有限公司 一种可重构的电子对抗设备模拟器架构
CN114281874A (zh) * 2021-11-19 2022-04-05 北京大学 一种基于昇腾ai处理器的索引转换方法及装置
CN114065095B (zh) * 2021-11-30 2024-08-27 中国电信股份有限公司 网络节点加速方法、装置、计算机可读介质及电子设备
CN114372012B (zh) * 2021-12-21 2024-02-20 中国科学院深圳先进技术研究院 一种通用、可配置的高能效池化计算单行输出系统和方法
CN114340097B (zh) * 2021-12-30 2024-07-30 合肥市芯海电子科技有限公司 一种控制灯带的方法、装置、芯片和电子设备
CN114567596B (zh) * 2022-01-24 2024-04-05 浙江数秦科技有限公司 一种用于区块链的数据快速交换方法
CN114567670B (zh) * 2022-01-25 2024-04-05 浙江数秦科技有限公司 一种区块链网络数据传输方法
CN114168522B (zh) * 2022-02-14 2022-04-29 北京微核芯科技有限公司 一种数据传输方法、装置及传输部件
CN114595173A (zh) * 2022-03-18 2022-06-07 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、系统及计算机可读存储介质
TWI795254B (zh) * 2022-03-30 2023-03-01 天擎積體電路股份有限公司 支持廣播的模組系統、模組單元與廣播方法
CN114969029B (zh) * 2022-04-22 2024-07-23 南京航空航天大学 一种基于泰勒展开的多维插值及其维间点取值方法
WO2024004221A1 (ja) * 2022-07-01 2024-01-04 日本電信電話株式会社 演算処理装置、演算処理方法、及び演算処理プログラム
CN115190220B (zh) * 2022-07-07 2024-10-01 中国科学院半导体研究所 基于动态视觉和灰度脉冲传感器的片上脉冲图像处理系统
WO2024049568A1 (en) * 2022-08-31 2024-03-07 Microsoft Technology Licensing, Llc Increased computation efficiency with multi-stage 8-bit floating point matrix multiplication with format conversion
CN115412758B (zh) * 2022-09-01 2023-11-14 北京奇艺世纪科技有限公司 一种视频处理方法及相关装置
CN115248701B (zh) * 2022-09-21 2022-12-20 进迭时空(杭州)科技有限公司 一种处理器寄存器堆之间的零拷贝数据传输装置及方法
CN115269205B (zh) * 2022-09-27 2022-12-27 之江实验室 一种面向神经网络计算的内存优化方法和装置
CN115629579B (zh) * 2022-10-13 2023-11-07 南京天洑软件有限公司 一种cstr系统的控制方法及装置
CN115640493B (zh) * 2022-10-28 2024-07-30 成都医学院 基于fpga的分段线性分数阶运算ip核
CN115638833B (zh) * 2022-12-23 2023-03-31 保定网城软件股份有限公司 一种监控数据处理方法及系统
CN116188247B (zh) * 2023-02-06 2024-04-12 格兰菲智能科技有限公司 寄存器信息处理方法、装置、计算机设备、存储介质
WO2024176926A1 (ja) * 2023-02-22 2024-08-29 株式会社デンソー 演算処理装置
CN116720554B (zh) * 2023-08-11 2023-11-14 南京师范大学 一种基于fpga技术的多段线性拟合的神经元电路实现方法
CN117235519B (zh) * 2023-09-13 2024-09-24 港华数智能源科技(深圳)有限公司 能源数据处理方法、装置及存储介质
CN117202242B (zh) * 2023-11-08 2024-02-06 南京邮电大学 一种基于粒子滤波模型的车联网中节点失效检测方法
CN117313803B (zh) * 2023-11-28 2024-02-02 进迭时空(杭州)科技有限公司 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法
CN117707468B (zh) * 2023-12-07 2024-09-20 沐曦科技(北京)有限公司 一种用于部分写入的数据处理系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834747A (zh) * 2015-05-25 2015-08-12 中国科学院自动化研究所 基于卷积神经网络的短文本分类方法
CN105787557A (zh) * 2016-02-23 2016-07-20 北京工业大学 一种计算机智能识别的深层神经网络结构设计方法
CN105895082A (zh) * 2016-05-30 2016-08-24 乐视控股(北京)有限公司 声学模型训练方法、语音识别方法及装置
US20160293167A1 (en) * 2013-10-10 2016-10-06 Google Inc. Speaker recognition using neural networks
CN106408595A (zh) * 2016-08-31 2017-02-15 上海交通大学 一种基于神经网络画风学习的图像渲染方法
CN106844368A (zh) * 2015-12-03 2017-06-13 华为技术有限公司 用于人机对话的方法、神经网络系统和用户设备
WO2017116924A1 (en) * 2015-12-31 2017-07-06 Microsoft Technology Licensing, Llc Neural network training performance optimization framework
CN107193773A (zh) * 2017-04-20 2017-09-22 北京安云世纪科技有限公司 一种数据处理方法、装置及移动终端

Family Cites Families (291)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3382796T2 (de) * 1982-06-11 1996-03-28 Mitsubishi Electric Corp Vorrichtung zur Zwischenbildkodierung.
EP0184791A1 (en) * 1984-12-07 1986-06-18 Nec Corporation Information processing device capable of rapidly processing instructions of different groups
US5047954A (en) * 1986-01-17 1991-09-10 International Business Machines Corporation Graphics vector generator setup technique
JP2785155B2 (ja) * 1990-09-10 1998-08-13 富士通株式会社 ニューロコンピュータの非同期制御方式
JPH04195251A (ja) * 1990-10-03 1992-07-15 Fujitsu Ltd ニューラルネットの学習計算方法
US5283839A (en) * 1990-12-31 1994-02-01 Neurosciences Research Foundation, Inc. Apparatus capable of figure-ground segregation
FR2694430B1 (fr) * 1992-07-31 1994-09-09 Centre Nat Rech Scient Dispositif électronique pour l'analyse d'image et la vision artificielle.
JPH0633237U (ja) * 1992-09-29 1994-04-28 紀北電子株式会社 計測データの実時間演算機能を有する演算装置
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
JP3398673B2 (ja) * 1994-08-31 2003-04-21 エヌイーシーコンピュータテクノ株式会社 ベクトルデータ処理装置
US6047081A (en) 1997-10-24 2000-04-04 Imation Corp. Image processing software system having configurable communication pipelines
US7085710B1 (en) * 1998-01-07 2006-08-01 Microsoft Corporation Vehicle computer system audio entertainment system
US6477555B1 (en) * 1999-07-07 2002-11-05 Lucent Technologies Inc. Method and apparatus for performing rapid convolution
DE19948373A1 (de) * 1999-10-06 2001-05-17 Infineon Technologies Ag Verfahren zur Kanalentzerrung
EP1160794B1 (en) * 2000-05-31 2008-07-23 STMicroelectronics S.r.l. Circuit structure for programming data in reference cells of a multibit non-volatile memory device
GB2382887B (en) * 2001-10-31 2005-09-28 Alphamosaic Ltd Instruction execution in a processor
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
US6889216B2 (en) * 2002-03-12 2005-05-03 Knowm Tech, Llc Physical neural network design incorporating nanotechnology
US6670895B2 (en) * 2002-05-01 2003-12-30 Analog Devices, Inc. Method and apparatus for swapping the contents of address registers
US7065545B2 (en) * 2002-05-07 2006-06-20 Quintero-De-La-Garza Raul Gera Computer methods of vector operation for reducing computation time
US7475101B2 (en) * 2003-09-29 2009-01-06 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using streaming
US7680208B2 (en) * 2004-02-25 2010-03-16 Nokia Corporation Multiscale wireless communication
US20050268195A1 (en) * 2004-04-29 2005-12-01 Lund Morten W Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
JP4586443B2 (ja) * 2004-07-16 2010-11-24 トヨタ自動車株式会社 情報提供装置
US7519207B2 (en) 2004-11-19 2009-04-14 Carestream Health, Inc. Detection and correction method for radiograph orientation
EP3693889A3 (en) * 2005-01-07 2020-10-28 QUALCOMM Incorporated Detecting and tracking objects in images
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US20070005248A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Data reconstruction in link-based interconnects
US20070156685A1 (en) * 2005-12-28 2007-07-05 Hiroshi Inoue Method for sorting data using SIMD instructions
US8327115B2 (en) * 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US7574534B2 (en) * 2006-05-23 2009-08-11 International Business Machines Corporation Method for using device enumeration information to identify an operating system running on a computer system
JP4934356B2 (ja) * 2006-06-20 2012-05-16 株式会社日立製作所 映像処理エンジンおよびそれを含む映像処理システム
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8340795B2 (en) * 2007-03-26 2012-12-25 Google Inc. Small removable audio player that attaches to a host media player
US20080201234A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Live entities internet store service
JP4791984B2 (ja) 2007-02-27 2011-10-12 株式会社東芝 入力された音声を処理する装置、方法およびプログラム
CN100588172C (zh) * 2007-04-28 2010-02-03 腾讯科技(深圳)有限公司 一种实现网络预订存储的系统和方法
US8644151B2 (en) * 2007-05-22 2014-02-04 Cisco Technology, Inc. Processing packet flows
JP4325708B2 (ja) * 2007-07-05 2009-09-02 ソニー株式会社 データ処理装置、データ処理方法およびデータ処理プログラム、符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラム
CN101369233A (zh) * 2007-08-14 2009-02-18 国际商业机器公司 程序编译方法和编译器
CN101217628A (zh) * 2008-01-08 2008-07-09 北京航空航天大学 一种多天线地面数字电视接收机的分集合并装置和其方法
JP2009200713A (ja) * 2008-02-20 2009-09-03 Sony Corp 画像処理装置、画像処理方法、プログラム
CN101315770B (zh) * 2008-05-27 2012-01-25 北京承芯卓越科技有限公司 语音识别片上系统及采用其的语音识别方法
CN101295405A (zh) * 2008-06-13 2008-10-29 西北工业大学 人像与车辆识别报警跟踪方法
US8553983B2 (en) 2008-07-10 2013-10-08 Nec Corporation Personal authentication system and personal authentication method
EP2313847A4 (en) * 2008-08-19 2015-12-09 Digimarc Corp METHODS AND SYSTEMS FOR PROCESSING CONTENT
CN101685388B (zh) * 2008-09-28 2013-08-07 北京大学深圳研究生院 执行比较运算的方法和装置
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
CN101782893B (zh) * 2009-01-21 2014-12-24 上海芯豪微电子有限公司 可重构数据处理平台
CN101556565B (zh) * 2009-01-22 2010-09-29 杭州中天微系统有限公司 嵌入式处理器的片上高性能dma
CN101819570B (zh) * 2009-02-27 2012-08-15 国际商业机器公司 网络环境中的用户信息处理和资源推荐的方法和系统
US8331168B2 (en) * 2009-04-30 2012-12-11 International Business Machines Corporation Increased capacity heterogeneous storage elements
CN101620524B (zh) * 2009-07-03 2011-08-10 中国人民解放军国防科学技术大学 支持矩阵整体读写操作的矩阵寄存器文件
CN101615113A (zh) * 2009-07-31 2009-12-30 清华大学 一条指令完成一次蝶形运算的微处理器实现方法
US8577950B2 (en) 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
CN101710272B (zh) * 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
US20110112981A1 (en) 2009-11-09 2011-05-12 Seung-Taek Park Feature-Based Method and System for Cold-Start Recommendation of Online Ads
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US8984043B2 (en) 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices
CN102014475B (zh) * 2010-01-08 2012-01-04 华为技术有限公司 资源映射、码分复用方法及装置
JP5110098B2 (ja) 2010-02-08 2012-12-26 カシオ計算機株式会社 表示処理装置、及び、プログラム
CN101794239B (zh) * 2010-03-16 2012-11-14 浙江大学 一种基于数据流模型的多处理器任务调度管理方法
CN101833441B (zh) * 2010-04-28 2013-02-13 中国科学院自动化研究所 并行向量处理引擎结构
CN101833468B (zh) * 2010-04-28 2013-05-08 中国科学院自动化研究所 在高性能计算系统中生成向量处理指令集结构的方法
CN101876892B (zh) * 2010-05-20 2013-07-31 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
JP5408037B2 (ja) 2010-05-28 2014-02-05 カシオ計算機株式会社 画像処理装置及び方法、並びにプログラム
CN102346894B (zh) * 2010-08-03 2017-03-01 阿里巴巴集团控股有限公司 推荐信息的输出方法、系统及服务器
JP2012073998A (ja) * 2010-08-31 2012-04-12 Casio Comput Co Ltd 画像配信システム、画像表示装置、画像配信サーバー、及びプログラム
GB2483903A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Instruction which specifies the type of the next instruction to be executed
CN102012893B (zh) * 2010-11-25 2012-07-18 中国人民解放军国防科学技术大学 一种可扩展向量运算装置
CN102005743A (zh) * 2010-11-25 2011-04-06 沈阳工业大学 基于径向基神经网络的自适应继电保护装置
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
CN102541814B (zh) * 2010-12-27 2015-10-14 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
CN102098623B (zh) * 2011-01-27 2013-06-12 大唐移动通信设备有限公司 一种mbsfn操作域动态生成方法和mce
US8892788B2 (en) * 2011-02-22 2014-11-18 Red Hat Israel, Ltd. Exposing a DMA engine to guests in a virtual machine system
CN102103479B (zh) * 2011-03-02 2015-06-10 中兴通讯股份有限公司 浮点运算器及浮点运算的处理方法
PL3422178T3 (pl) * 2011-04-01 2023-06-26 Intel Corporation Przyjazny dla wektorów format instrukcji i jego wykonanie
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
US8620853B2 (en) * 2011-07-19 2013-12-31 Smartsignal Corporation Monitoring method using kernel regression modeling with pattern sequences
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法
CN102360344B (zh) * 2011-10-10 2014-03-12 西安交通大学 矩阵处理器及其指令集和嵌入式系统
CN202281998U (zh) * 2011-10-18 2012-06-20 苏州科雷芯电子科技有限公司 一种标量浮点运算加速器
CN102375805B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN102508643A (zh) * 2011-11-16 2012-06-20 刘大可 一种多核并行数字信号处理器及并行指令集的运行方法
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
CN104126174B (zh) * 2011-12-22 2017-06-06 英特尔公司 执行groestl散列的指令
US20140207838A1 (en) * 2011-12-22 2014-07-24 Klaus Danne Method, apparatus and system for execution of a vector calculation instruction
US9960917B2 (en) * 2011-12-22 2018-05-01 Intel Corporation Matrix multiply accumulate instruction
CN104011649B (zh) * 2011-12-23 2018-10-09 英特尔公司 用于在simd/向量执行中传播有条件估算值的装置和方法
US9632980B2 (en) * 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
CN104081337B (zh) * 2011-12-23 2017-11-07 英特尔公司 用于响应于单个指令来执行横向部分求和的系统、装置和方法
CN103999037B (zh) * 2011-12-23 2020-03-06 英特尔公司 用于响应于单个指令来执行横向相加或相减的系统、装置和方法
CN104040482B (zh) * 2011-12-28 2018-02-16 英特尔公司 用于在打包数据元素上执行增量解码的系统、装置和方法
KR20130090147A (ko) * 2012-02-03 2013-08-13 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
US8706971B1 (en) * 2012-03-14 2014-04-22 Netapp, Inc. Caching and deduplication of data blocks in cache memory
US9575753B2 (en) * 2012-03-15 2017-02-21 International Business Machines Corporation SIMD compare instruction using permute logic for distributed register files
US9715383B2 (en) * 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
CN102629913B (zh) * 2012-04-11 2014-12-24 浙江大学 适用于全局异步局部同步片上互连网络的路由器装置
US9091145B2 (en) * 2012-05-31 2015-07-28 Landmark Graphics Corporation Systems and methods for optimal positioning of drilling pads
CN102750127B (zh) * 2012-06-12 2015-06-24 清华大学 一种协处理器
CN102724482B (zh) * 2012-06-18 2015-08-26 西安电子科技大学 基于gps和gis的智能视觉传感网络运动目标接力跟踪系统
US10095516B2 (en) * 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
US9342479B2 (en) * 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
CN102880341B (zh) * 2012-08-29 2015-08-05 北京集创北方科技有限公司 触摸屏数据处理系统、方法及专用alu
CN103699360B (zh) * 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
US9480439B2 (en) 2012-11-01 2016-11-01 Virginia Commonwealth University Segmentation and fracture detection in CT images
CN103064086B (zh) * 2012-11-04 2014-09-17 北京工业大学 一种基于深度信息的车辆跟踪方法
CN103002147A (zh) * 2012-11-29 2013-03-27 广东欧珀移动通信有限公司 一种移动终端自动应答方法和装置
US9405538B2 (en) * 2012-12-28 2016-08-02 Intel Corporation Functional unit having tree structure to support vector sorting algorithm and other algorithms
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9804840B2 (en) * 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9513906B2 (en) * 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9231898B2 (en) * 2013-02-08 2016-01-05 Machine Zone, Inc. Systems and methods for multi-user multi-lingual communications
US9430164B1 (en) * 2013-02-08 2016-08-30 Emc Corporation Memory efficient sanitization of a deduplicated storage system
JP5852601B2 (ja) * 2013-02-26 2016-02-03 日本電信電話株式会社 ネットワーク設計装置およびネットワーク設計プログラム
US9349386B2 (en) * 2013-03-07 2016-05-24 Analog Device Global System and method for processor wake-up based on sensor data
US9542933B2 (en) 2013-03-08 2017-01-10 Analog Devices Global Microphone circuit assembly and system with speech recognition
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
US9094576B1 (en) * 2013-03-12 2015-07-28 Amazon Technologies, Inc. Rendered audiovisual communication
US9417880B2 (en) * 2013-03-15 2016-08-16 Intel Corporation Instruction for performing an overload check
US20140317333A1 (en) * 2013-04-17 2014-10-23 Microchip Technology Incorporated Direct Memory Access Controller with Hybrid Scatter-Gather Functionality
CN104123250B (zh) * 2013-04-25 2019-02-01 上海联影医疗科技有限公司 基于dma的数据传输方法
CN103294648B (zh) * 2013-05-08 2016-06-01 中国人民解放军国防科学技术大学 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法
WO2014188446A2 (en) 2013-05-09 2014-11-27 Tata Consultancy Services Limited Method and apparatus for image matching
CN104157285B (zh) * 2013-05-14 2016-01-20 腾讯科技(深圳)有限公司 语音识别方法、装置及电子设备
CN103368701B (zh) * 2013-07-12 2016-06-08 中国科学技术大学 一种基于吉文斯旋转的物理层多播多流数据传输方法
CN104376842A (zh) * 2013-08-12 2015-02-25 清华大学 神经网络语言模型的训练方法、装置以及语音识别方法
US9405728B2 (en) * 2013-09-05 2016-08-02 Altera Corporation Floating-point adder circuitry
US9542626B2 (en) * 2013-09-06 2017-01-10 Toyota Jidosha Kabushiki Kaisha Augmenting layer-based object detection with deep convolutional neural networks
CN104461970B (zh) * 2013-09-18 2019-06-11 中兴通讯股份有限公司 Dma控制器、移动终端以及数据搬运方法
EP2851786A1 (en) * 2013-09-23 2015-03-25 Telefonaktiebolaget L M Ericsson (publ) Instruction class for digital signal processors
CN103530276B (zh) * 2013-09-25 2016-06-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法
KR102120864B1 (ko) 2013-11-06 2020-06-10 삼성전자주식회사 영상 처리 방법 및 장치
CN103646007A (zh) 2013-12-18 2014-03-19 北京经纬恒润科技有限公司 数据处理方法、装置及系统
US11132328B2 (en) * 2013-12-20 2021-09-28 Rambus, Inc. High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory
US9507595B2 (en) * 2014-02-28 2016-11-29 International Business Machines Corporation Execution of multi-byte memory access instruction specifying endian mode that overrides current global endian mode
US9740659B2 (en) * 2014-03-19 2017-08-22 International Business Machines Corporation Merging and sorting arrays on an SIMD processor
CN103856727B (zh) * 2014-03-24 2017-01-25 北京工业大学 一种多路实时视频拼接处理系统
CN105446970A (zh) * 2014-06-10 2016-03-30 华为技术有限公司 推荐项目的方法和装置
CN104158753B (zh) * 2014-06-12 2017-10-24 南京工程学院 基于软件定义网络的动态流调度方法及系统
CN104077138B (zh) * 2014-06-27 2017-08-29 中国科学院计算技术研究所 一种集成网络路由器的众核处理器系统及其集成方法和实现方法
CN106126189B (zh) * 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 微处理器中的方法
KR101844932B1 (ko) * 2014-09-16 2018-04-03 한국전자통신연구원 신호처리 알고리즘이 통합된 심층 신경망 기반의 음성인식 장치 및 이의 학습방법
US10061746B2 (en) * 2014-09-26 2018-08-28 Intel Corporation Instruction and logic for a vector format for processing computations
CN104219505A (zh) * 2014-09-29 2014-12-17 济南中维世纪科技有限公司 一种基于PCIe的多路高清模拟音视频采集系统
CN104376326B (zh) * 2014-11-02 2017-06-16 吉林大学 一种用于图像场景识别的特征提取方法
US9824684B2 (en) 2014-11-13 2017-11-21 Microsoft Technology Licensing, Llc Prediction-based sequence recognition
US20160139921A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Vector instruction to compute coordiante of next point in a z-order curve
CN105703978A (zh) * 2014-11-24 2016-06-22 武汉物联远科技有限公司 智能家居控制系统和方法
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US9851970B2 (en) * 2014-12-23 2017-12-26 Intel Corporation Method and apparatus for performing reduction operations on a set of vector elements
CN105787888A (zh) * 2014-12-23 2016-07-20 联芯科技有限公司 人脸图像美化方法
US10671679B2 (en) 2014-12-30 2020-06-02 Oath Inc. Method and system for enhanced content recommendation
CN104537630A (zh) * 2015-01-22 2015-04-22 厦门美图之家科技有限公司 一种基于年龄估计的图像美颜方法和装置
WO2016145379A1 (en) 2015-03-12 2016-09-15 William Marsh Rice University Automated Compilation of Probabilistic Task Description into Executable Neural Network Specification
CN106034145B (zh) * 2015-03-12 2019-08-09 阿里巴巴集团控股有限公司 数据处理的方法和系统
CN106302837B (zh) * 2015-05-12 2019-08-06 青岛海信宽带多媒体技术有限公司 一种光网络单元的mac地址表管理方法及装置
CN104850845B (zh) * 2015-05-30 2017-12-26 大连理工大学 一种基于非对称卷积神经网络的交通标志识别方法
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
KR102371188B1 (ko) * 2015-06-30 2022-03-04 삼성전자주식회사 음성 인식 장치 및 방법과 전자 장치
CN105068998B (zh) * 2015-07-29 2017-12-15 百度在线网络技术(北京)有限公司 基于神经网络模型的翻译方法及装置
DE102015009981A1 (de) * 2015-07-31 2017-02-02 Eberhard Karls Universität Tübingen Verfahren und Vorrichtung zur Bildsynthese
US10198872B2 (en) * 2015-08-10 2019-02-05 The Board Of Trustees Of The Leland Stanford Junior University 3D reconstruction and registration of endoscopic data
CN105069304B (zh) * 2015-08-18 2019-04-05 广东顺德中山大学卡内基梅隆大学国际联合研究院 一种基于机器学习的评估预测asd的装置
CN106484682B (zh) * 2015-08-25 2019-06-25 阿里巴巴集团控股有限公司 基于统计的机器翻译方法、装置及电子设备
CN105160340A (zh) * 2015-08-31 2015-12-16 桂林电子科技大学 一种车辆品牌识别系统及方法
CN105184366B (zh) * 2015-09-15 2018-01-09 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
EP3350690B1 (en) * 2015-09-19 2022-11-09 Microsoft Technology Licensing, LLC Implicit program order
US10789525B2 (en) * 2015-10-02 2020-09-29 Adobe Inc. Modifying at least one attribute of an image with at least one attribute extracted from another image
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
CN105405443A (zh) * 2015-10-23 2016-03-16 福州瑞芯微电子股份有限公司 基于ape格式的音频信号压缩处理系统及方法
WO2017077121A1 (en) * 2015-11-06 2017-05-11 Thomson Licensing Method for transfer of a style of a reference visual object to another visual object, and corresponding electronic device, computer readable program products and computer readable storage medium
US10691456B2 (en) * 2015-11-13 2020-06-23 International Business Machines Corporation Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing
CN105468546B (zh) 2015-11-17 2017-04-12 中国科学院计算技术研究所 互连电路的数据处理装置和方法
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105468335B (zh) * 2015-11-24 2017-04-12 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
CN105354006B (zh) * 2015-11-27 2017-11-21 中国科学院计算技术研究所 一种非线性函数的快速运算装置及其方法
CN105512676A (zh) * 2015-11-30 2016-04-20 华南理工大学 一种智能终端上的食物识别方法
CN108511027A (zh) * 2015-12-18 2018-09-07 中国科学院计算技术研究所 一种用于自动校正访问存储装置数据的装置及方法
US20170177348A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instruction and Logic for Compression and Rotation
US10467201B1 (en) * 2015-12-23 2019-11-05 Massachusetts Mutual Life Insurance Company Systems and methods for integration and analysis of data records
US10032463B1 (en) 2015-12-29 2018-07-24 Amazon Technologies, Inc. Speech processing with learned representation of user interaction history
US20170193397A1 (en) * 2015-12-30 2017-07-06 Accenture Global Solutions Limited Real time organization pulse gathering and analysis using machine learning and artificial intelligence
US10482380B2 (en) * 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
US9760807B2 (en) 2016-01-08 2017-09-12 Siemens Healthcare Gmbh Deep image-to-image network learning for medical image analysis
CN105721354B (zh) * 2016-01-18 2019-06-14 云南磊奥明科技有限公司 片上网络互联方法及装置
CN106991477B (zh) * 2016-01-20 2020-08-14 中科寒武纪科技股份有限公司 一种人工神经网络压缩编码装置和方法
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站
CN110135581B (zh) * 2016-01-20 2020-11-06 中科寒武纪科技股份有限公司 用于执行人工神经网络反向运算的装置和方法
CN107704433A (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种矩阵运算指令及其方法
CN105512723B (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN109242094B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN106990940B (zh) * 2016-01-20 2020-05-22 中科寒武纪科技股份有限公司 一种向量计算装置及运算方法
KR101784944B1 (ko) * 2016-02-26 2017-10-12 삼성중공업 주식회사 과전압 억제필터의 구성방법
CN105719327B (zh) * 2016-02-29 2018-09-07 北京中邮云天科技有限公司 一种艺术风格化图像处理方法
US10824858B2 (en) 2016-03-14 2020-11-03 Nec Corporation Object management device
CN205582481U (zh) * 2016-03-16 2016-09-14 中航华东光电(上海)有限公司 可加载个性化特征模型的语音识别系统
CN107203775B (zh) * 2016-03-18 2021-07-27 斑马智行网络(香港)有限公司 一种图像分类的方法、装置和设备
CN105844330B (zh) * 2016-03-22 2019-06-28 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
CN105869117B (zh) * 2016-03-28 2021-04-02 上海交通大学 一种针对深度学习超分辨率技术的gpu加速方法
CN105892989B (zh) * 2016-03-28 2017-04-12 中国科学院计算技术研究所 一种神经网络加速器及其运算方法
CN105912476A (zh) * 2016-04-06 2016-08-31 中国科学院计算技术研究所 片上重复寻址的方法及装置
CN105912667A (zh) * 2016-04-12 2016-08-31 玉环看知信息科技有限公司 一种信息推荐方法、装置及移动终端
CN109358900B (zh) * 2016-04-15 2020-07-03 中科寒武纪科技股份有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
US20190138922A1 (en) * 2016-04-15 2019-05-09 Cambricon Technologies Corporation Limited Apparatus and methods for forward propagation in neural networks supporting discrete data
CN107301454B (zh) * 2016-04-15 2021-01-22 中科寒武纪科技股份有限公司 支持离散数据表示的人工神经网络反向训练装置和方法
CN108416436B (zh) * 2016-04-18 2021-06-01 中国科学院计算技术研究所 使用多核心处理模块进行神经网络划分的方法及其系统
CN107305484B (zh) * 2016-04-19 2021-11-05 中科寒武纪科技股份有限公司 一种非线性函数运算装置及方法
CN105869024A (zh) * 2016-04-20 2016-08-17 北京小米移动软件有限公司 商品的推荐方法及装置
CN105956608A (zh) * 2016-04-21 2016-09-21 恩泊泰(天津)科技有限公司 一种基于深度学习的目标定位、分类算法
CN105913039B (zh) * 2016-04-26 2020-08-18 北京光年无限科技有限公司 基于视觉和语音的对话数据交互处理方法及装置
CN106022468B (zh) * 2016-05-17 2018-06-01 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
US10049425B2 (en) 2016-05-23 2018-08-14 Google Llc Merging filters for a graphic processing unit
CN106067031B (zh) * 2016-05-26 2019-05-24 北京新长征天高智机科技有限公司 基于人工纠错机制与深度学习网络协作机器视觉识别系统
CN106095834A (zh) * 2016-06-01 2016-11-09 竹间智能科技(上海)有限公司 基于话题的智能对话方法及系统
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN106096542B (zh) * 2016-06-08 2020-02-11 中国科学院上海高等研究院 基于距离预测信息的图像视频场景识别方法
CN106127672B (zh) * 2016-06-21 2019-03-12 南京信息工程大学 基于fpga的图像纹理特征提取算法
CN106126507B (zh) * 2016-06-22 2019-08-09 哈尔滨工业大学深圳研究生院 一种基于字符编码的深度神经翻译方法及系统
CN106227507B (zh) * 2016-07-11 2019-10-18 北京深鉴智能科技有限公司 计算系统及其控制器
CN106228512A (zh) * 2016-07-19 2016-12-14 北京工业大学 基于学习率自适应的卷积神经网络图像超分辨率重建方法
CN106228162B (zh) 2016-07-22 2019-05-17 王威 一种基于深度学习的移动机器人快速物体识别方法
CN106296667A (zh) * 2016-08-01 2017-01-04 乐视控股(北京)有限公司 手形检测方法和系统
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的系统
US9864933B1 (en) 2016-08-23 2018-01-09 Jasmin Cosic Artificially intelligent systems, devices, and methods for learning and/or using visual surrounding for autonomous object operation
WO2018042388A1 (en) 2016-09-02 2018-03-08 Artomatix Ltd. Systems and methods for providing convolutional neural network based image synthesis using stable and controllable parametric models, a multiscale synthesis framework and novel network architectures
CN106408086A (zh) * 2016-09-12 2017-02-15 上海影城有限公司 用于图像优化的深度学习神经网络处理方法及系统
CN106503055B (zh) * 2016-09-27 2019-06-04 天津大学 一种从结构化文本到图像描述的生成方法
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
WO2018058509A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Dynamic neural network surgery
WO2018075927A1 (en) 2016-10-21 2018-04-26 Google Llc Stylizing input images
CN106447034B (zh) * 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106548208B (zh) * 2016-10-28 2019-05-28 杭州米绘科技有限公司 一种照片图像快速智能风格化方法
CN106778472A (zh) * 2016-11-17 2017-05-31 成都通甲优博科技有限责任公司 基于深度学习的输电走廊常见侵入物目标检测与识别方法
US10157045B2 (en) 2016-11-17 2018-12-18 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
CN106780367B (zh) * 2016-11-28 2019-11-15 上海大学 基于字典学习的hdr照片风格转移方法
US10916001B2 (en) * 2016-11-28 2021-02-09 Adobe Inc. Facilitating sketch to painting transformations
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
CN106778928B (zh) * 2016-12-21 2020-08-04 广州华多网络科技有限公司 图像处理方法及装置
CN106815321A (zh) * 2016-12-27 2017-06-09 深圳前海勇艺达机器人有限公司 基于智能聊天机器人的聊天方法及装置
CN106782501B (zh) * 2016-12-28 2020-07-24 百度在线网络技术(北京)有限公司 基于人工智能的语音特征提取方法和装置
CN106604216A (zh) * 2016-12-31 2017-04-26 广州博冠光电技术有限公司 一种双向语音与操作控制数据的传输控制方法及系统
US10262218B2 (en) 2017-01-03 2019-04-16 Qualcomm Incorporated Simultaneous object detection and rigid transform estimation using neural network
CN106775599B (zh) * 2017-01-09 2019-03-01 南京工业大学 递归神经网络的多计算单元粗粒度可重构系统及方法
CN106898350A (zh) * 2017-01-16 2017-06-27 华南理工大学 一种基于深度学习的智能工业机器人语音交互与控制方法
CN106844627B (zh) * 2017-01-20 2020-06-19 竹间智能科技(上海)有限公司 基于对话系统的在线学习方法及装置
CN106845549B (zh) * 2017-01-22 2020-08-21 珠海习悦信息技术有限公司 一种基于多任务学习的场景与目标识别的方法及装置
CN106709532B (zh) * 2017-01-25 2020-03-10 京东方科技集团股份有限公司 图像处理方法和装置
CN106952235B (zh) * 2017-02-10 2019-07-26 维沃移动通信有限公司 一种图像处理方法和移动终端
CN108460454B (zh) 2017-02-21 2022-07-26 京东方科技集团股份有限公司 卷积神经网络和用于其的处理方法、装置、系统
US10482639B2 (en) 2017-02-21 2019-11-19 Adobe Inc. Deep high-resolution style synthesis
CN106951961B (zh) * 2017-02-24 2019-11-26 清华大学 一种粗粒度可重构的卷积神经网络加速器及系统
CN107066239A (zh) * 2017-03-01 2017-08-18 智擎信息系统(上海)有限公司 一种实现卷积神经网络前向计算的硬件结构
CN106850673A (zh) * 2017-03-09 2017-06-13 福建省汽车工业集团云度新能源汽车股份有限公司 基于声纹识别的汽车用户登入方法及装置
CN107038159B (zh) * 2017-03-09 2019-07-12 清华大学 一种基于无监督领域自适应的神经网络机器翻译方法
CN106920545B (zh) * 2017-03-21 2020-07-28 百度在线网络技术(北京)有限公司 基于人工智能的语音特征提取方法和装置
CN106887225B (zh) * 2017-03-21 2020-04-07 百度在线网络技术(北京)有限公司 基于卷积神经网络的声学特征提取方法、装置和终端设备
CN106898353A (zh) * 2017-03-23 2017-06-27 东华理工大学 一种智能家居语音控制系统及其语音识别方法
CN107169503B (zh) * 2017-03-27 2020-05-22 中国科学院深圳先进技术研究院 一种室内场景的分类方法及装置
CN106970896B (zh) * 2017-03-30 2020-05-12 中国人民解放军国防科学技术大学 面向向量处理器的二维矩阵卷积的向量化实现方法
CN106952224B (zh) * 2017-03-30 2019-08-13 电子科技大学 一种基于卷积神经网络的图像风格转移方法
US10152768B2 (en) 2017-04-14 2018-12-11 Facebook, Inc. Artifact reduction for image style transfer
CN107133222A (zh) * 2017-04-17 2017-09-05 中译语通科技(北京)有限公司 一种基于异质架构的实时语言转换装置及转换方法
CN107194938A (zh) * 2017-04-17 2017-09-22 上海大学 基于深度卷积神经网络的图像轮廓检测方法
CN107092883A (zh) 2017-04-20 2017-08-25 上海极链网络科技有限公司 物体识别追踪方法
CN107067825A (zh) * 2017-04-27 2017-08-18 四川九洲空管科技有限责任公司 一种机载防撞系统的语音告警系统及其语音告警方法
CN107171932B (zh) * 2017-04-27 2021-06-08 腾讯科技(深圳)有限公司 一种图片风格转换方法、装置及系统
CN107124609A (zh) 2017-04-27 2017-09-01 京东方科技集团股份有限公司 一种视频图像的处理系统、其处理方法及显示装置
WO2018197019A1 (en) * 2017-04-28 2018-11-01 Toyota Motor Europe System and method for detecting objects in a digital image, and system and method for rescoring object detections.
CN107145467A (zh) * 2017-05-13 2017-09-08 贾宏博 一种分布式实时计算硬件系统
US11694072B2 (en) 2017-05-19 2023-07-04 Nvidia Corporation Machine learning technique for automatic modeling of multiple-valued outputs
CN107291704B (zh) * 2017-05-26 2020-12-11 北京搜狗科技发展有限公司 处理方法和装置、用于处理的装置
CN107247930A (zh) * 2017-05-26 2017-10-13 西安电子科技大学 基于cnn和选择性注意机制的sar图像目标检测方法
US10504267B2 (en) 2017-06-06 2019-12-10 Adobe Inc. Generating a stylized image or stylized animation by matching semantic features via an appearance guide, a segmentation guide, and/or a temporal guide
CN107301383B (zh) * 2017-06-07 2020-11-24 华南理工大学 一种基于Fast R-CNN的路面交通标志识别方法
CN109036446B (zh) * 2017-06-08 2022-03-04 腾讯科技(深圳)有限公司 一种音频数据处理方法以及相关设备
CN107240185B (zh) * 2017-06-23 2019-09-20 深圳怡化电脑股份有限公司 一种冠字号识别方法、装置、设备及存储介质
US10956816B2 (en) 2017-06-28 2021-03-23 International Business Machines Corporation Enhancing rating prediction using reviews
US9959272B1 (en) * 2017-07-21 2018-05-01 Memsource a.s. Automatic classification and translation of written segments
US11227108B2 (en) * 2017-09-11 2022-01-18 Nec Corporation Convolutional neural network architecture with adaptive filters
US10909657B1 (en) 2017-09-11 2021-02-02 Apple Inc. Flexible resolution support for image and video style transfer
CN113837939A (zh) 2017-10-09 2021-12-24 华为技术有限公司 一种图像处理方法及设备
EP3660628B1 (en) * 2017-10-20 2023-12-06 Shanghai Cambricon Information Technology Co., Ltd Dynamic voltage frequency scaling device and method
CN108958801B (zh) 2017-10-30 2021-06-25 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行向量最大值指令的方法
CN107730474B (zh) 2017-11-09 2022-02-22 京东方科技集团股份有限公司 图像处理方法、处理装置和处理设备
CN107977704B (zh) * 2017-11-10 2020-07-31 中国科学院计算技术研究所 权重数据存储方法和基于该方法的神经网络处理器
US11501153B2 (en) * 2017-12-28 2022-11-15 Intel Corporation Methods and apparatus for training a neural network
US12094456B2 (en) 2018-09-13 2024-09-17 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and system
US11113578B1 (en) * 2020-04-13 2021-09-07 Adobe, Inc. Learned model-based image rendering

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160293167A1 (en) * 2013-10-10 2016-10-06 Google Inc. Speaker recognition using neural networks
CN104834747A (zh) * 2015-05-25 2015-08-12 中国科学院自动化研究所 基于卷积神经网络的短文本分类方法
CN106844368A (zh) * 2015-12-03 2017-06-13 华为技术有限公司 用于人机对话的方法、神经网络系统和用户设备
WO2017116924A1 (en) * 2015-12-31 2017-07-06 Microsoft Technology Licensing, Llc Neural network training performance optimization framework
CN105787557A (zh) * 2016-02-23 2016-07-20 北京工业大学 一种计算机智能识别的深层神经网络结构设计方法
CN105895082A (zh) * 2016-05-30 2016-08-24 乐视控股(北京)有限公司 声学模型训练方法、语音识别方法及装置
CN106408595A (zh) * 2016-08-31 2017-02-15 上海交通大学 一种基于神经网络画风学习的图像渲染方法
CN107193773A (zh) * 2017-04-20 2017-09-22 北京安云世纪科技有限公司 一种数据处理方法、装置及移动终端

Cited By (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200257752A1 (en) * 2017-12-14 2020-08-13 Cambricon Technologies Corporation Limited Integrated circuit chip apparatus
US11507810B2 (en) * 2017-12-14 2022-11-22 Cambricon Technologies Corporation Limited Integrated circuit chip apparatus
CN109165728B (zh) * 2018-08-06 2020-12-18 浪潮集团有限公司 一种卷积神经网络的基本计算单元及计算方法
CN109165728A (zh) * 2018-08-06 2019-01-08 济南浪潮高新科技投资发展有限公司 一种卷积神经网络的基本计算单元及计算方法
CN111930681A (zh) * 2019-05-13 2020-11-13 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN111930681B (zh) * 2019-05-13 2023-10-10 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN110210612B (zh) * 2019-05-14 2021-04-16 北京中科汇成科技有限公司 基于自适应分段线性逼近曲线的集成电路加速方法及系统
CN110210612A (zh) * 2019-05-14 2019-09-06 北京中科汇成科技有限公司 一种基于自适应分段线性逼近曲线的集成电路加速方法及系统
CN110198164A (zh) * 2019-05-17 2019-09-03 山东科技大学 一种绝对值流控忆阻器模拟电路
CN110198164B (zh) * 2019-05-17 2023-04-04 山东科技大学 一种绝对值流控忆阻器模拟电路
CN110277100A (zh) * 2019-06-19 2019-09-24 南京邮电大学 基于Alexnet改进的声纹识别方法、存储介质和终端
CN112149793A (zh) * 2019-06-27 2020-12-29 三星电子株式会社 人工神经网络模型和包括人工神经网络模型的电子设备
CN110532205B (zh) * 2019-07-17 2021-04-06 浙江大华技术股份有限公司 数据传输方法、装置、计算机设备和计算机可读存储介质
CN110532205A (zh) * 2019-07-17 2019-12-03 浙江大华技术股份有限公司 数据传输方法、装置、计算机设备和计算机可读存储介质
CN112333222A (zh) * 2019-08-05 2021-02-05 中润普达(深圳)大数据技术有限公司 一种基于大数据的云计算服务系统
CN112394991A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 浮点转半精度浮点指令处理装置、方法及相关产品
CN112394903A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 短整形转半精度浮点指令处理装置、方法及相关产品
CN112394887A (zh) * 2019-08-17 2021-02-23 森大(深圳)技术有限公司 Onepass打印数据高效率处理方法、装置、设备及存储介质
CN112445523A (zh) * 2019-09-02 2021-03-05 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
WO2021057085A1 (zh) * 2019-09-27 2021-04-01 东南大学 一种基于混合精度存储的深度神经网络加速器
CN110673823A (zh) * 2019-09-30 2020-01-10 上海寒武纪信息科技有限公司 乘法器、数据处理方法及芯片
WO2021077283A1 (zh) * 2019-10-22 2021-04-29 深圳鲲云信息科技有限公司 神经网络计算压缩方法、系统及存储介质
CN110807522B (zh) * 2019-10-31 2022-05-06 合肥工业大学 一种神经网络加速器的通用计算电路
CN110807522A (zh) * 2019-10-31 2020-02-18 合肥工业大学 一种神经网络加速器的通用计算电路
CN110996171B (zh) * 2019-12-12 2021-11-26 北京金山云网络技术有限公司 视频类任务的训练数据生成方法、装置及服务器
CN110996171A (zh) * 2019-12-12 2020-04-10 北京金山云网络技术有限公司 视频类任务的训练数据生成方法、装置及服务器
CN111026445A (zh) * 2019-12-17 2020-04-17 湖南长城银河科技有限公司 一种智能识别方法及芯片
CN111176725A (zh) * 2019-12-27 2020-05-19 北京市商汤科技开发有限公司 数据处理方法、装置、设备和存储介质
CN111176725B (zh) * 2019-12-27 2022-05-06 北京市商汤科技开发有限公司 数据处理方法、装置、设备和存储介质
CN111144556A (zh) * 2019-12-31 2020-05-12 中国人民解放军国防科技大学 面向深度神经网络训练和推理的范围批处理归一化算法的硬件电路
WO2021147602A1 (zh) * 2020-01-21 2021-07-29 上海商汤智能科技有限公司 数据处理装置、人工智能芯片
CN113222126A (zh) * 2020-01-21 2021-08-06 上海商汤智能科技有限公司 数据处理装置、人工智能芯片
CN111241204A (zh) * 2020-02-14 2020-06-05 苏州浪潮智能科技有限公司 一种梯度数据的同步方法、装置、设备及存储介质
CN111241204B (zh) * 2020-02-14 2023-01-10 苏州浪潮智能科技有限公司 一种梯度数据的同步方法、装置、设备及存储介质
WO2021189294A1 (zh) * 2020-03-25 2021-09-30 华为技术有限公司 卷积运算系统和卷积运算方法
CN111488969B (zh) * 2020-04-03 2024-01-19 北京集朗半导体科技有限公司 基于神经网络加速器的执行优化方法及装置
CN111488969A (zh) * 2020-04-03 2020-08-04 北京思朗科技有限责任公司 基于神经网络加速器的执行优化方法及装置
CN111522776A (zh) * 2020-04-27 2020-08-11 西安交通大学 一种计算架构
CN111565180A (zh) * 2020-04-28 2020-08-21 广州锦行网络科技有限公司 一种虚拟端口的保护系统及方法
CN113626759A (zh) * 2020-05-07 2021-11-09 脸谱公司 使用低位宽点积引擎对高位宽数求和
CN111913744B (zh) * 2020-07-15 2024-07-19 博流智能科技(南京)有限公司 Ai深度学习数据处理方法及系统
CN111913744A (zh) * 2020-07-15 2020-11-10 博流智能科技(南京)有限公司 Ai深度学习数据处理方法及系统
CN111831582A (zh) * 2020-07-16 2020-10-27 中国科学院计算技术研究所 用于智能处理器的内存管理装置、方法及电子设备
CN111831582B (zh) * 2020-07-16 2024-03-29 中国科学院计算技术研究所 用于智能处理器的内存管理装置、方法及电子设备
CN111857834A (zh) * 2020-07-16 2020-10-30 中国科学院计算技术研究所 分形计算智能处理器、分形计算智能处理方法
CN111857833A (zh) * 2020-07-16 2020-10-30 中国科学院计算技术研究所 并行计算智能处理器及并行计算智能处理方法
CN114070563A (zh) * 2020-07-31 2022-02-18 中移(苏州)软件技术有限公司 一种数据处理方法、装置、终端及存储介质
CN114070563B (zh) * 2020-07-31 2023-09-05 中移(苏州)软件技术有限公司 一种数据处理方法、装置、终端及存储介质
CN112052149A (zh) * 2020-09-06 2020-12-08 厦门理工学院 一种大数据信息采集系统及使用方法
CN112052149B (zh) * 2020-09-06 2022-02-22 厦门理工学院 一种大数据信息采集系统及使用方法
CN112991358A (zh) * 2020-09-30 2021-06-18 北京字节跳动网络技术有限公司 风格图像生成方法、模型训练方法、装置、设备和介质
WO2022088417A1 (zh) * 2020-10-29 2022-05-05 深圳大学 一种基于异质特征深度残差网络的内容推荐方法
CN112580485A (zh) * 2020-12-14 2021-03-30 珠海零边界集成电路有限公司 图像的读写方法和装置、电子设备和存储介质
WO2022141344A1 (zh) * 2020-12-31 2022-07-07 北京希姆计算科技有限公司 执行程序的编译方法、芯片、电子设备及计算机可读存储介质
CN116710930A (zh) * 2020-12-31 2023-09-05 北京希姆计算科技有限公司 执行程序的编译方法、芯片、电子设备及计算机可读存储介质
CN112967188B (zh) * 2021-03-04 2024-04-02 中国科学技术大学 结合结构化语义码流的空间自适应图像超分辨重建方法
CN112967188A (zh) * 2021-03-04 2021-06-15 中国科学技术大学 结合结构化语义码流的空间自适应图像超分辨重建方法
CN113485951B (zh) * 2021-07-31 2022-02-11 郑州信大捷安信息技术股份有限公司 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统
CN113485951A (zh) * 2021-07-31 2021-10-08 郑州信大捷安信息技术股份有限公司 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统
CN113791889A (zh) * 2021-11-18 2021-12-14 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN113791889B (zh) * 2021-11-18 2022-03-11 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN114172936A (zh) * 2021-12-08 2022-03-11 长讯通信服务有限公司 一种应用于物联网设备通信可信的方法
CN114217710A (zh) * 2021-12-20 2022-03-22 平安付科技服务有限公司 弹框控制方法、装置、存储介质及系统
CN114217710B (zh) * 2021-12-20 2023-07-21 平安付科技服务有限公司 弹框控制方法、装置、存储介质及系统
CN114359683A (zh) * 2021-12-31 2022-04-15 电子科技大学 一种面向文本定位的单内核hog高效异构加速方法
CN114356235A (zh) * 2021-12-31 2022-04-15 Oppo广东移动通信有限公司 一种数据标准化处理方法、装置、电子设备及存储介质
CN114359683B (zh) * 2021-12-31 2023-10-20 电子科技大学 一种面向文本定位的单内核hog高效异构加速方法
CN116450086A (zh) * 2022-01-05 2023-07-18 腾讯科技(深圳)有限公司 包括乘累加器的芯片、终端和控制方法
CN116450086B (zh) * 2022-01-05 2024-07-05 腾讯科技(深圳)有限公司 包括乘累加器的芯片、终端和控制方法
CN114491396A (zh) * 2022-01-20 2022-05-13 重庆邮电大学 一种idma系统发送信号均值计算方法及系统
CN114546914A (zh) * 2022-02-23 2022-05-27 北京奕斯伟计算技术有限公司 用于对多个通道信息执行数据处理的处理装置及系统
CN114546914B (zh) * 2022-02-23 2024-04-26 北京奕斯伟计算技术股份有限公司 用于对多个通道信息执行数据处理的处理装置及系统
WO2023165268A1 (zh) * 2022-03-04 2023-09-07 支付宝(杭州)信息技术有限公司 数据处理
CN114615207A (zh) * 2022-03-10 2022-06-10 四川三思德科技有限公司 推流前的数据定向化处理方法及装置
CN114615207B (zh) * 2022-03-10 2022-11-25 四川三思德科技有限公司 推流前的数据定向化处理方法及装置
CN116679988A (zh) * 2023-08-02 2023-09-01 武汉芯必达微电子有限公司 硬件加速单元、硬件加速方法、芯片及存储介质
CN116679988B (zh) * 2023-08-02 2023-10-27 武汉芯必达微电子有限公司 硬件加速单元、硬件加速方法、芯片及存储介质
CN117372495A (zh) * 2023-09-15 2024-01-09 进迭时空(杭州)科技有限公司 一种加速数字图像处理中不同位宽点积的计算方法
CN117372495B (zh) * 2023-09-15 2024-08-06 进迭时空(杭州)科技有限公司 一种加速数字图像处理中不同位宽点积的计算方法
CN117725468A (zh) * 2024-02-06 2024-03-19 四川鸿霖科技有限公司 一种智能医用电保障方法及系统
CN117725468B (zh) * 2024-02-06 2024-04-26 四川鸿霖科技有限公司 一种智能医用电保障方法及系统
CN118095351A (zh) * 2024-04-12 2024-05-28 清华大学 层归一化计算的协同处理装置及方法
CN118095351B (zh) * 2024-04-12 2024-07-02 清华大学 层归一化计算的协同处理装置及方法
CN118535124A (zh) * 2024-05-27 2024-08-23 北京航空航天大学合肥创新研究院 移位加法器树结构、计算核架构、执行计算的方法及芯片

Also Published As

Publication number Publication date
CN110689126B (zh) 2023-04-07
CN108874445A (zh) 2018-11-23
CN111160548A (zh) 2020-05-15
US12050887B2 (en) 2024-07-30
CN109117183A (zh) 2019-01-01
CN108898554A (zh) 2018-11-27
CN110689126A (zh) 2020-01-14
CN108984211B (zh) 2021-01-05
CN110610236B (zh) 2022-05-31
CN107895191A (zh) 2018-04-10
CN108875926A (zh) 2018-11-23
CN107832844A (zh) 2018-03-23
US20210157992A1 (en) 2021-05-27
CN111291880A (zh) 2020-06-16
CN107844832A (zh) 2018-03-27
CN111291880B (zh) 2024-05-14
CN111310910B (zh) 2023-06-30
CN108958801B (zh) 2021-06-25
CN109542514A (zh) 2019-03-29
CN109086075B (zh) 2021-06-08
CN111160548B (zh) 2024-01-12
CN109064384A (zh) 2018-12-21
EP3709224A4 (en) 2021-10-06
CN111178521A (zh) 2020-05-19
US20210192245A1 (en) 2021-06-24
CN109063830A (zh) 2018-12-21
CN109062607B (zh) 2021-09-21
CN107832843B (zh) 2021-09-21
CN109063831A (zh) 2018-12-21
CN109086074A (zh) 2018-12-25
CN109086074B (zh) 2021-01-05
CN109086075A (zh) 2018-12-25
CN109062539A (zh) 2018-12-21
CN107832843A (zh) 2018-03-23
CN107833176A (zh) 2018-03-23
CN107992486A (zh) 2018-05-04
CN108986022A (zh) 2018-12-11
CN109117947A (zh) 2019-01-01
CN107993206A (zh) 2018-05-04
CN110084361A (zh) 2019-08-02
US11922132B2 (en) 2024-03-05
CN111310910A (zh) 2020-06-19
CN109997154A (zh) 2019-07-09
CN108958801A (zh) 2018-12-07
CN107832845A (zh) 2018-03-23
CN110610236A (zh) 2019-12-24
CN110689125A (zh) 2020-01-14
CN107895191B (zh) 2022-02-22
US20210182077A1 (en) 2021-06-17
CN108874444A (zh) 2018-11-23
CN109062606B (zh) 2021-09-21
CN109725936A (zh) 2019-05-07
CN109003132B (zh) 2021-12-14
CN109117948A (zh) 2019-01-01
CN109003603A (zh) 2018-12-14
EP3709224A1 (en) 2020-09-16
US20210158484A1 (en) 2021-05-27
CN109117184A (zh) 2019-01-01
CN109062607A (zh) 2018-12-21
CN109542515A (zh) 2019-03-29
CN109062606A (zh) 2018-12-21
CN109034383B (zh) 2021-09-21
CN109522254B (zh) 2022-04-12
US11762631B2 (en) 2023-09-19
CN108984211A (zh) 2018-12-11
CN109034382A (zh) 2018-12-18
CN109542514B (zh) 2021-01-05
CN109034383A (zh) 2018-12-18
CN109542515B (zh) 2021-06-25
CN109522254A (zh) 2019-03-26
US20210150685A1 (en) 2021-05-20
WO2019085655A1 (zh) 2019-05-09
CN109117948B (zh) 2021-10-19
CN111160549A (zh) 2020-05-15
CN109117183B (zh) 2021-10-19
CN109523020A (zh) 2019-03-26
CN109725936B (zh) 2022-08-26
CN110084361B (zh) 2021-03-23
CN107832804A (zh) 2018-03-23
CN109003132A (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
CN109726806A (zh) 信息处理方法及终端设备
CN107992329B (zh) 一种计算方法及相关产品
CN109284823B (zh) 一种运算装置及相关产品
CN109219821B (zh) 运算装置和方法
CN110163357B (zh) 一种计算装置及方法
TWI795519B (zh) 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法
US20190004802A1 (en) Predictor for hard-to-predict branches
CN110163334B (zh) 集成电路芯片装置及相关产品
CN111626413A (zh) 一种计算装置及方法
CN111045728B (zh) 一种计算装置及相关产品
CN111353598A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111930681A (zh) 一种计算装置及相关产品
WO2017177446A1 (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
CN111382835A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111198714A (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