CN114638352A - 一种处理器架构、处理器及电子设备 - Google Patents

一种处理器架构、处理器及电子设备 Download PDF

Info

Publication number
CN114638352A
CN114638352A CN202210536417.4A CN202210536417A CN114638352A CN 114638352 A CN114638352 A CN 114638352A CN 202210536417 A CN202210536417 A CN 202210536417A CN 114638352 A CN114638352 A CN 114638352A
Authority
CN
China
Prior art keywords
data
processing
module
cache region
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210536417.4A
Other languages
English (en)
Other versions
CN114638352B (zh
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 Denglin Technology Co ltd
Chengdu Denglin Technology Co ltd
Original Assignee
Shanghai Denglin Technology Co ltd
Chengdu Denglin 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 Denglin Technology Co ltd, Chengdu Denglin Technology Co ltd filed Critical Shanghai Denglin Technology Co ltd
Priority to CN202210536417.4A priority Critical patent/CN114638352B/zh
Publication of CN114638352A publication Critical patent/CN114638352A/zh
Application granted granted Critical
Publication of CN114638352B publication Critical patent/CN114638352B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及一种处理器架构、处理器及电子设备,属于计算机技术领域。该处理器架构,包括:缓存区、输入模块、可编程处理模块、输出模块。输入模块用于从外部存储单元读取完成任务所需的数据,并存储到缓存区中;可编程处理模块用于读取存储于缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回缓存区的处理结果写回缓存区;输出模块用于将存储于缓存区中的最终处理结果存储到外部存储单元。该处理器架构在进行诸如神经网络模型中涉及的各种运算时,其中间结果不需要来回在外部存储单元和运算单元之间进行搬运,大大节省了带宽,提高了运算单元的利用率,从而提高了处理器架构的运算性能。

Description

一种处理器架构、处理器及电子设备
技术领域
本申请属于计算机技术领域,具体涉及一种处理器架构、处理器及电子设备。
背景技术
近年来,人工智能(Artificial Intelligence,AI)技术得到了迅猛的发展,也取得了显著的成果,特别是在图像检测和识别以及语言识别等方向上,人工智能的识别率已经超过了人类。神经网络处理是实现人工智能的重要处理技术。
在深度神经网络中,卷积节点之后会存在很多对卷积后的张量结果进行进一步操作的非卷积节点,例如,激活函数,池化层(pool),向量加,归一化(normalization),分类(softmax)等。
当前常见的实现方式是:将卷积的张量结果输出到外部存储单元,然后再从外部存储单元里重新加载到运算单元中进行计算,之后再把计算结果输出到外部存储单元。由于每一个节点在进行相应的数据计算时,都需要在外部存储单元和运算单元之间进行数据搬运,这样会消耗大量的存储带宽,会降低处理器的运算性能。
发明内容
鉴于此,本申请的目的在于提供一种处理器架构、处理器及电子设备,以改善现有实现方式需要在外部存储单元和运算单元之间不停的进行数据搬运,导致会消耗大量的存储带宽以及降低处理器的运算性能的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种处理器架构,包括:缓存区、输入模块、可编程处理模块、输出模块;输入模块,用于从外部存储单元读取完成任务所需的数据,并存储到所述缓存区中;可编程处理模块,用于读取存储于所述缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回所述缓存区的处理结果写回所述缓存区;输出模块,用于将存储于所述缓存区中的最终处理结果存储到所述外部存储单元。
本申请实施例中,通过设计包含缓存区、输入模块、可编程处理模块、输出模块的处理器架构,使得可编程处理模块在对输入模块输入的数据进行处理时,需要存储的中间结果可直接存储至缓存区,不需要再将其经输出模块输出至外部存储单元,这样使得中间结果不需要来回在外部存储单元和运算单元之间进行搬运,大大节省了带宽,提高了运算单元的利用率,从而提高了处理器架构的运算性能;同时,良好的可编程性,使得该处理器架构可根据实际需要进行可编程配置,以支持各种组合运算,使得各种操作能在一个任务内完成,增加了硬件资源的使用灵活性,同时也进一步减少了数据在外部存储单元和运算单元之间进行搬运的次数,进一步优化了处理器架构的性能。
结合第一方面实施例的一种可能的实施方式,所述处理器架构还包括:卷积模块,用于从外部存储单元处获取卷积计算所需的数据,对获取到的数据进行卷积处理,并将卷积处理结果存储到所述缓存区。
本申请实施例中,由于神经网络中通常都会涉及卷积计算,因此通过单独设置一个卷积模块来处理卷积计算,不仅可以减少可编程处理模块的负担,有利于可编程配置,而且使得卷积模块与可编程处理模块还可以并行运行,有利于提高运算效率。
结合第一方面实施例的一种可能的实施方式,所述处理器架构还包括:控制模块,用于控制所述可编程处理模块的执行逻辑、所述输出模块的执行逻辑、所述输入模块的执行逻辑。
本申请实施例中,通过设置控制模块来对诸如输入模块、输出模块、可编程处理模块等的执行逻辑进行控制,确保各个模块相互协调工作,确保任务能正确地完成,从而可以降低处理器架构中各模块与外部处理器的交互,这样能进一步提高效率。
结合第一方面实施例的一种可能的实施方式,所述控制模块还用于:根据完成目标任务所需的输入张量的大小和所述缓存区的大小,将所述目标任务切分为多个子任务,每个子任务对应所述输入张量的一部分,且每个子任务对应的数据量小于所述缓存区的存储量;相应的,所述输入模块在从外部存储单元读取完成任务所需的数据时,具体为读取完成子任务所需的数据。
本申请实施例中,通过将目标任务切分为多个子任务,每个子任务对应输入张量的一部分,使得每次对子任务进行处理时,仅处理输入张量中的一部分,这样便能实现对数据量大于缓存区的大小的数据的处理,确保各种组合运算能在一个子任务中完成。
结合第一方面实施例的一种可能的实施方式,所述可编程处理模块被配置为执行神经网络模型中的各种数据运算。
本申请实施例中,通过将可编程处理模块配置为执行神经网络模型中的各种数据运算,使得处理器架构能支持各种的深度学习神经网络模型的加速运算,对未来网络的发展有良好的适应性。
结合第一方面实施例的一种可能的实施方式,所述缓存区为一个二维的存储阵列,神经网络模型中涉及的多维张量的各个维度可灵活的映射到该存储阵列的两个维度上。
本申请实施例中,通过将神经网络模型中涉及的多维张量的各个维度灵活的映射到该存储阵列的两个维度上,使得在切分子任务时,切分方式更灵活。
第二方面,本申请实施例还提供了一种处理器架构,包括:缓存区、控制模块、输入模块、可编程处理模块、输出模块;控制模块,用于从外部存储单元获取完成目标任务所需的输入张量的大小以及获取完成所述目标任务的指令流,并根据所述输入张量的大小和所述缓存区的大小,将所述目标任务切分为多个子任务,其中,每个子任务对应所述输入张量的一部分,且每个子任务对应的数据量小于所述缓存区的存储量;输入模块,用于在所述控制模块根据所述目标任务的指令流发送的控制命令下,从外部存储单元读取完成每个子任务所需的数据,并存储到所述缓存区中;可编程处理模块,用于在所述控制模块根据所述目标任务的指令流发送的控制命令下,读取存储于所述缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回所述缓存区的处理结果写回所述缓存区;输出模块,用于在所述控制模块根据所述目标任务的指令流发送的控制命令下,将存储于所述缓存区中的最终处理结果存储到所述外部存储单元。
结合第二方面实施例的一种可能的实施方式,所述缓存区被划分为多个区域,所述多个区域用于存储完成一个子任务所需的数据,或者,所述多个区域用于存储完成并行的多个子任务所需的数据。本申请实施例中,将缓存区划分为多个区域,通过对多个区域进行配合访问读写,可完成一个子任务或并行的多个子任务。其中,可以根据完成目标任务的指令流和/或完成目标任务所需的数据,将缓存区划分为至少两个区域。
结合第二方面实施例的一种可能的实施方式,所述处理器架构还包括卷积模块,用于在所述控制模块的控制下,从外部存储单元处获取卷积计算所需的数据,对获取到的数据进行卷积处理,并将卷积处理结果存储到所述缓存区。
结合第二方面实施例的一种可能的实施方式,所述目标任务包括依次对目标数据进行卷积处理、激活函数处理、向量加操作处理和池化处理;所述控制模块,具体用于:控制所述卷积模块从外部存储单元处获取卷积计算所需的目标数据,对获取到的目标数据进行卷积处理,并将卷积处理结果数据存储到所述缓存区的第一区域;控制所述输入模块从外部存储单元读取完成向量加操作所需的数据,并存储到所述缓存区中的第二区域;控制所述可编程处理模块读取存储于所述第一区域中的卷积处理结果数据,并对其进行激活函数处理,并将激活处理结果数据写回所述第一区域;控制所述可编程处理模块将存储于所述第一区域中的激活处理结果数据与存储于所述第二区域中的数据进行向量加操作,并将向量加操作结果数据写回所述第一区域;控制所述可编程处理模块存储于所述第一区域中的向量加操作结果数据进行池化处理,并将池化处理结果数据写回所述第一区域;控制所述输出模块将存储于所述第一区域的池化处理结果数据存储到所述外部存储单元。
第三方面,本申请实施例还提供了一种处理器,包括:本体和如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的处理器架构,或者,如上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的处理器架构。
第四方面,本申请实施例还提供了一种电子设备,包括:外部存储单元和上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的处理器架构,或者,如上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的处理器架构。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的第一种处理器架构的结构示意图。
图2示出了本申请实施例提供的第二种处理器架构的结构示意图。
图3示出了本申请实施例提供的第三种处理器架构的结构示意图。
图4示出了本申请实施例提供的一种目标任务的处理逻辑示意图。
图5示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
鉴于当前对神经网络中卷积后的张量(tensor)结果进行进一步操作时,如,进行激活函数、池化层(pool)、向量操作(例如逐元素操作element-wise operation)、归一化(normalization)、分类(softmax)等操作时,每次操作的结果(包括中间结果及最终结果),都需要存储到外部存储单元,这就导致需要在外部存储单元和运算单元之间不停进行数据搬运,例如,在进行激活函数处理时,需要从外部存储单元中获取相应的数据进行激活函数处理,对于一些比较复杂的激活函数,这期间会涉及多个中间结果,这些中间结果均需要存储到外部存储单元,使得需要在外部存储单元和运算单元之间不停的进行数据搬运;若之后还需要进行池化处理,则又需要从外部存储单元获取对应的激活处理结果数据进行池化处理,之后再将处理结果存储到外部存储单元。这样会消耗大量的存储带宽,会降低处理器的运算性能。需要说明的是,对于需要依次进行激活函数处理及池化处理的任务来说,激活函数处理的最终结果也为中间结果。
基于此,本申请实施例提供了一种处理器架构,该处理器架构在进行诸如神经网络模型中涉及的各种运算(如卷积处理、激活函数处理、池化处理、向量加操作处理、归一化处理、分类处理中的各种组合运算)时,其中间结果不需要来回在外部存储单元和运算单元之间进行搬运,大大节省了带宽,提高了运算单元的利用率,也提高了处理器的运算性能。
需要说明的是,本申请实施例所提供的处理器架构,其应用场景并不限于对神经网络模型中涉及的各种运算进行处理,其可以应用于各种涉及数据运行的场景。鉴于神经网络模型中涉及的运算较多,因此本实施例中特以对神经网络模型中涉及的各种运算进行说明,是为了更好地介绍本申请所提供的处理器架构的优势,以及更好地说明其良好的可编程性。因此,不能将此处示例的神经网络模型的应用场景理解成是对本申请应用场景的限制。下面将结合图1,对本申请实施例提供的处理器架构进行说明。该处理器架构包括:缓存区、输入模块、可编程处理模块、输出模块。其中,输入模块、输出模块和可编程处理模块均与缓存区电连接。
缓存区用于存储数据,可选地,该缓存区为一个二维的存储阵列,神经网络模型中涉及的多维张量的各个维度可灵活的映射到该存储阵列的两个维度上,这样提高了任务划分的灵活度,使得该处理器架构可以适用于各种运算场景。该缓存区的大小可以根据需要进行设定,例如,大小可以为2048行*256列。假设输入张量的维度为NHWC,其大小为1*256*256*256,缓存区的2048行可以用于存储张量的NHW维,256列用于存储张量的C维。其中,N代表数量如表示这批图像有几张; C代表通道数(channel);H代表高度,例如表示图像在竖直方向有多少像素;W代表宽度,例如表示图像在水平方向有多少像素。又例如,输入张量的维度为NC,其大小为1024*1000,则可以将输入张量的N维存储在缓存区的行向量,将输入张量的C维存储在缓存区的列向量上。又例如,输入张量的维度为NWC,其大小为64*128*768,则可以将输入张量的C维存储在缓存区的行、列向量上,如用3行* 256列来存储一组C,将输入张量的NW维存储在缓存区的列向量上。
可以根据需要,如根据完成任务所需的数据需要,对缓存区进行进一步划分,如缓存区被划分为多个区域(小缓存区),多个区域用于存储完成一个子任务所需的数据,或者,多个区域用于存储完成并行的多个子任务所需的数据。通过对多个区域进行配合访问读写,从而完成一个子任务或并行的多个子任务这种场景或情况。假设完成某个子任务需要涉及两种数据,则可以将缓存区划分为2个区域,每个区域用于存储不同的数据;又例如,为了能并行同时对多个子任务进行处理,则在划分缓存区时,还需要考虑并行执行的子任务的数量,假设,完成某个子任务需要涉及两种数据,两个子任务并行执行,则可以将缓存区划分为4个区域,其中,每2个区域对应并行的两个子任务中的一个子任务,用于存储完成该子任务所需的数据。更多的划分情况可以根据具体的任务场景来确定,此处不再一一示例。
在划分缓存区时,可以是由人工进行划分,也可以是由具备控制能力的如控制模块之类的器件来进行划分。
输入模块,用于从外部存储单元读取完成任务所需的数据,并存储到缓存区中,以便于可编程处理模块进行后续处理。其中,输入模块可以是在外部处理器的控制下,从外部存储单元读取完成任务所需的数据,并存储到缓存区中,以便于可编程处理模块进行后续处理。不同的任务所需的数据不同,例如,完成激活任务与池化任务所需的数据可能不同。
其中,外部存储单元的存储能力大于缓存区的存储大小,能存储完成任务所需的完整数据。外部存储单元可以是磁盘,或者诸如随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等存储器。外部存储单元的具体介质形态不应理解为对本申请的限制。
可编程处理模块,用于读取存储于缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回缓存区的处理结果写回缓存区。可编程处理模块,可以是在外部处理器的控制下读取存储于缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回缓存区的处理结果写回缓存区。
该可编程处理模块可以根据实际需要进行可编程配置,例如,被配置为执行神经网络模型中的各种数据运算。可选地,各种数据运算包括:激活函数处理、池化处理、向量加操作处理、归一化处理、分类处理中的至少一种及其组合。可以理解的是,神经网络模型中的各种数据运算并不限于上述的激活函数处理、池化处理、向量加操作处理、归一化处理、分类处理,例如,还可以包括求和、求均值、期限、标准差等处理。
该可编程处理模块具备良好的可编程性,可以根据实际需要进行可编程配置,以支持各种组合运算,使得神经网络模型中的各种操作能在一个任务内完成,增加了硬件资源的使用灵活性。该可编程处理模块能支持各种的深度学习神经网络模型(如CNN(Convolutional Neural Network,卷积神经网络)、RNN(Recurrent Neural Network,循环神经网络)、GNN(Graph Neural Network,图神经网络)、BERT(Bidirectional EncoderRepresentations from Transformers,基于转换器的双向编码表征)等)的加速运算,对未来网络的发展有良好的适应性。
其中,组合运算越多所节约的带宽也越多,例如,依次对目标数据进行卷积处理、激活函数处理、向量加操作处理和池化处理时,对于最终处理结果(此时为池化处理结果)来说,卷积处理结果、激活函数处理结果、向量加操作处理处理结果都为中间结果,而采用本申请所示的处理器架构来处理这些组合运算时,这些中间结果都不需要存储到外部存储单元。
输出模块,用于将存储于缓存区中的最终处理结果存储到外部存储单元。输出模块可以是在外部处理器的控制下将存储于缓存区中的最终处理结果存储到外部存储单元。
本申请实施例提供的处理器架构能够有效减少数据在外部存储单元和运算单元(此时为可编程处理模块)之间进行搬运。为了更好地理解,下面举例进行说明。假设任务包括依次对目标数据进行激活函数处理、池化处理。在本申请之前,在对目标数据进行激活函数处理时,需要从外部存储单元中获取相应的目标数据进行激活函数处理,对于一些比较复杂的激活函数,这期间会涉及多个中间结果,这些中间结果需要来回在外部存储单元和运算单元之间进行搬运,直至完成激活函数处理,之后又会将激活函数处理结果存储到外部存储单元;在进行池化处理时,又从外部存储单元读取激活函数处理结果进行池化处理。而采用本申请实施例所示的处理器架构后,在对目标数据进行激活函数处理时,期间涉及到的多个中间结果只需要回写缓存区即可,以及激活函数处理结果(对于整个任务来说,激活函数处理结果也为中间结果)也只需要回写缓存区即可,在进行池化处理时,直接从缓存区读取激活函数处理结果进行池化处理结果即可,这样一次性就可以完成多种运算。
为了更好的控制上述各个模块(如输入模块、输出模块、可编程处理模块)的执行逻辑,降低处理器架构中各模块与外部处理器的交互,一种可选实施方式下,如图2所示,该处理器架构还包括:控制模块。
控制模块用于控制可编程处理模块的执行逻辑、输出模块的执行逻辑、输入模块的执行逻辑,以确保各个模块相互协调工作,确保能任务正确地完成。例如,控制模块根据完成目标任务的指令流来控制输入模块、可编程处理模块、输出模块。
由于完成目标任务所需的输入张量的大小可能会大于缓存区的大小,因此,需要对目标任务进行切分,将其分为多个子任务,每个子任务对应输入张量的一部分,且每个子任务对应的数据量小于缓存区的存储量。通过将完整的输入张量拆分为多个小数据,每次仅处理其中的一部分,这样便能实现对数据量大于缓存区的大小的数据的处理。可选地,可以是控制模块来对目标任务进行切分,将其分为多个子任务。例如,控制模块,根据完成目标任务所需的输入张量的大小和缓存区的大小,将目标任务切分为多个子任务,每个子任务对应输入张量的一部分,且每个子任务对应的数据量小于缓存区的存储量。例如,控制模块先根据缓存区的大小确定每个子任务能处理的输入数据量的大小,然后再根据完成目标任务所需的输入张量的大小和每个子任务能处理的输入数据量的大小,得到所需的子任务的数量,即子任务的数量=完成目标任务所需的输入张量的大小/每个子任务能处理的输入数据量的大小。
当然,在划分子任务,还可以考虑子任务的并行度,也即考虑同时可以并行处理的子任务的数量。
控制模块在将目标任务切分为多个子任务后,将每个子任务分发给不同的指令执行模块(如上述的输入模块、输出模块、可编程处理模块)进行执行。同一个子任务是按指令顺序串行,不同子任务在不同的指令执行模块里可以并行执行。并行执行的子任务的最大数量为:缓存区的大小/每个子任务所使用的缓存区的大小。所有的子任务执行完后,目标任务完成。
一种可选实施方式下,控制模块,用于从外部存储单元获取完成目标任务所需的输入张量的大小以及获取完成目标任务的指令流,并根据输入张量的大小和缓存区的大小,将目标任务切分为多个子任务,其中,每个子任务对应输入张量的一部分,且每个子任务对应的数据量小于缓存区的存储量。
控制模块根据目标任务的指令流发送控制命令来控制输入模块,以使输入模块在控制模块根据目标任务的指令流发送的控制命令下,从外部存储单元读取完成每个子任务所需的数据,并存储到缓存区中。
控制模块根据目标任务的指令流发送控制命令来控制可编程处理模块,以使可编程处理模块在控制模块根据目标任务的指令流发送的控制命令下,读取存储于缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回缓存区的处理结果写回缓存区。
控制模块根据目标任务的指令流发送控制命令来控制输出模块,以使输出模块在控制模块根据目标任务的指令流发送的控制命令下,将存储于缓存区中的最终处理结果存储到外部存储单元。
鉴于各种神经网络模型中都会涉及卷积处理,因此,一种实施方式下,该处理器架构还包括:卷积模块,如图3所示。需要说明的是,控制模块和卷积模块可以不同时存在,因此,不能将图3所示的同时包括控制模块和卷积模块的情形,理解成对本申请处理器架构的限制。
卷积模块用于从外部存储单元处获取卷积计算所需的数据,对获取到的数据进行卷积处理,并将卷积处理结果存储到缓存区。通过单独设置一个卷积模块来处理卷积计算,以减少可编程处理模块的负担,有利于可编程配置。
该处理器架构使得神经网络模型中的卷积层和后续处理卷积层的节点(如激活函数、池化层、向量操作、归一化或分类),可以在一次任务内完成,不需要每完成一个节点向外部存储单元返回一次数据,从而节约了带宽。可编程处理模块可以通过不同的指令组合完成很多不同节点处理。
此时,控制模块,还用于控制卷积模块的执行逻辑,例如,卷积模块在控制模块的控制下,从外部存储单元处获取卷积计算所需的数据,对获取到的数据进行卷积处理,并将卷积处理结果存储到缓存区。
为了更好的理解上述所描述的处理器架构的逻辑,下面结合一个示例进行说明,假设目标任务包括依次对目标数据进行卷积处理、激活函数Relu处理、向量加操作处理和池化处理,其中,目标任务的处理逻辑如图4所示。对应的指令流可以是:
Conv buffA //对目标数据进行卷积,卷积后写入buffA;
Relu buffA,buffA //将buffA的数据做完激活后再次存入buffA;
Load buffB //将目标数据加载至buffB中;
Add buffA ,buffA ,buffB,//将buffA中的与buffB中的数据进行向量加后再存入buffA中;
Pool buffA,buffA //将buffA的数据做完池化再写入buffA;
Store buffA//存储buffA的数据,也即将buffA的数据存储到外部存储单元。
此时,控制模块具体用于:
S1:从外部存储单元获取完成目标任务所需的输入张量的大小以及获取完成目标任务的指令流,并根据输入张量的大小和缓存区的大小,将目标任务切分为多个子任务。
假设输入张量的维度为NHWC,其中,N代表数量如表示这批图像有几张; C代表通道数(channel);H代表高度;如表示图像在竖直方向有多少像素;W代表宽度,如表示表示图像在水平方向有多少像素。假设输入张量的大小为1*256*256*256,缓存区的大小为2048行*256列,2048行存储张量的NHW维,256列用于存储张量的C维。由于上述任务中涉及向量加操作,因此,每个子任务需要用到bufferA和bufferB两部分缓存区,假设能同时并行执行2个子任务。那么每个子任务所占用的缓存区为2048/(2(表示并行的子任务数量) * 2(表示每个子任务需要用到缓存区的两个区域))=512行存储单元,一行存储单元对应输入张量的一个元素的256C,因此,每个子任务可以处理的张量为1*32*16*256,总共可以将目标任务划分为(1*256*256*256)/(1*32*16*256)=128个子任务。
需要说明的是,不能将上述示例中的每个子任务处理的张量为1*32*16*256,理解成是对本申请的限制,只要HW的乘积为512即可,因此,H并不限于上述的32,W并不限于16,例如,每个子任务处理的张量还可为1*16*32*256、1*8*64*256、1*64*8*256等。此外,上述示例中,在划分子任务时,考虑了子任务的并行度。若不考虑子任务并行,则每个子任务所占用的缓存区为2048/2(表示每个子任务需要用到缓存区的两个区域)=1048行,则每个子任务可以处理的张量为1*32*32*256,则总共可以将目标任务划分为(1*256*256*256)/(1*32*32*256)=64个子任务。
S2:控制模块按照指令流,如按照指令流中的第一条指令控制卷积模块,以使卷积模块从外部存储单元处获取完成子任务的卷积计算所需的目标数据,对获取到的目标数据进行卷积处理,并将卷积处理结果数据存储到缓存区的第一区域(如bufferA)。
S3:卷积模块处理完成后,会回复控制模块卷积处理完成,之后,控制模块按照指令流中的下一条指令(如第二条指令)控制可编程处理模块,以使可编程处理模块读取存储于第一区域中的卷积处理结果数据,并对其进行激活函数处理,并将激活处理结果数据写回第一区域。以及控制模块按照指令流中的下一条指令(如第三条指令)控制输入模块,以使输入模块从外部存储单元读取完成向量加操作所需的数据,并存储到缓存区中的第二区域(如bufferB)。
S4:可编程处理模块完成激活函数处理后,会回复控制模块激活函数处理完成,以及输入模块在完成数据输入后,会回复控制模块数据输入完成。控制模块在接收到可编程处理模块在完成激活函数处理后回复的信息,以及接收到输入模块在完成数据输入后回复的信息后,控制模块按照指令流中的下一条指令(如第四条指令)控制可编程处理模块,以使可编程处理模块将存储于第一区域中的激活处理结果数据与存储于第二区域中的数据进行向量加操作,并将向量加操作结果数据写回第一区域。
S5:可编程处理模块完成向量加操作后,会回复控制模块向量加操作处理完成,之后,控制模块按照指令流中的下一条指令(如第五条指令)控制可编程处理模块,以使可编程处理模块将存储于第一区域中的向量加操作结果数据进行池化处理,并将池化处理结果数据写回第一区域。
S6:可编程处理模块完成池化处理后,会回复控制模池化处理完成,之后,之后,控制模块按照指令流中的下一条指令(如第六条指令)控制输出模块以使输出模块将存储于第一区域的池化处理结果数据存储到外部存储单元。
每个子任务按照上述S2-S6所示的过程操作,直至所有子任务完成。
从上述的示例可以看出,通过组合多条指令,可以将4个节点(卷积层、激活函数、向量加、池化层)的操作在一个任务内完成。由于可编程处理模块具有良好的可编程性,可以通过搭配不同的指令流来满足不断发展的神经网络的处理需求。例如,对于swish激活函数,则对应的指令流可以为:
Load buffA //将数据x加载至buffA中;
Sigmoid buffB, buffA//对buffA中存储的数据x进行Sigmoid激活,之后将Sigmoid(x)数据存储buffB中;
Mul buffA, buffA, buffB//将buffA中的数据x与buffB中Sigmoid(x)相乘,之后将结果又存储到buffA;
Store buffA//存储buffA中的数据,也即将其存储至外部存储单元。
对于其他复杂的节点,例如分类网络中的softmax节点,其softmax函数如下:
Figure F_220513135112469_469604002
,则对应指令流可以是:
Load buffA //将数据xi加载至buffA;
Reduce.max s0, buffA //针对buffA里的每一列,将该列中的所有数据进行比较,得到该列的最大值,之后将其存放s0的对应列里,其中,s0是一维行向量的存储变量;
Add buffA, buffA, -s0 //将buffA里的每一列中的每个数据都减去s0的对应列的同一个值,之后将结果存储到buffA;
exp buffA, buffA//对buffA里的数据(xi-xmax)进行e这个常数的(xi-xmax)次方指数计算,之后将结果存储到buffA;
Reduce.sum s1, buffA //将buffA里的每一列所有数据求和,得到每一列的和,之后将其存放在s1的对应列中,其中,s1是一维行向量的存储变量;
Rcp s1, s1 //对s1中的数据求倒数,并将结果存储到s1,即 s1 = 1/s1
Mul buffA, buffA, s1 // 将buffA里的每一列的每个数据都乘以s1的对应列的同一个值,之后将结果存储到buffA;
Store buffA//存储buffA中的数据,也即将buffA中的数据存储至外部存储单元。
其中,对于分类网络中的softmax 节点,其输入张量是二维的NC,从上述的指令流中可以看到,求和、取最大值均发生在缓存区的列上,因此在子任务划分时,可将输入张量NC中的N维存储在缓存区的行向量上,C维存储在缓存区的列向量上。例如,输入张量NC的大小为1024*1000,缓存区的大小为2048*256,一个子任务所占用的缓存区大小为1000*256缓存区,也即一个子任务处理1000C*256N,则需要4个子任务才能完成输入张量的处理。
同理,通过搭配不同的指令流使得该处理器架构可以适用于自然语言处理网络BERT中的LayerNorm节点。LayerNorm节点就是对某一层的所有神经元的输入进行归一化,其归一化的公式为:
Figure F_220513135112741_741097003
对于指令中涉及的常数,如求取均值E[x]所需的数据总数n,公式中的常数epsilon,可提前存入可编程处理模块。
则对应的指令流可以为:
Load betaBuff //将向量常数beta加载至betaBuff;
Load gammaBuff//将向量常数gamma加载至gammaBuff;
Load buffA //将输入张量x加载至buffA;
//算出平均值
Reduce.sum s0, buffA //对buffA中的每一列求和,得到一个行向量s0;
Reduce.sum.interlane.broadcast s0//对行向量s0求和,得到所有数据的和,之后存放在行向量s0的每个元素里;
Div s0, s0, n //将行向量s0中的每个元素除以n,得到x的均值E[x],并存储到s0;
//算出标准差
Mul buffB, buffA, buffA // 将buffA中的对应数据与buffA中的对应数据相乘,之后存储到buffB;
Reduce.sum s1, buffB//对buffB中的每一列求和,得到一个行向量s1;
Reduce.sum.interlane.broadcast s1//对行向量求和,得到所有数据的和,之后存放在行向量s1的每个元素里;
Div s1, s1, n //将行向量s1中的每个元素除以n,得到x*x的均值E[x*x];
Mul s2, s0, s0// 将s0中的对应数据与s0中的对应数据相乘,即计算均值的平方(E[x]* E[x]),将结果存储到行向量s2;
Add s2, s1, -s2 //将行向量s1与行向量s2相减,得到标准差Var[x] =E[x*x] –E[x] * E[x],将结果存储到行向量s2;
Add s2, s2, epsilon//将行向量s2与常数epsilon相加,将结果存储到行向量s2;
Rsqrt s2, s2 //求取行向量s2中每个元素的平方根的倒数,将结果存储到行向量s2;
Add buffA, buffA, -s0 // 将buffA与s0相减,得到x - E[x],之后存储到buffA;
Mul buffA, buffA, s2 //,将buffA 与s2中对应元素相乘,得到(x - E[x]) *s2,之后存储到buffA;
Madd buffA, buffA, gammaBuff, betaBuff //进行乘加运算,buffA = buffA *gamma+ beta;
Store buffA//存储buffA。
假设BERT网络的输入张量为NWC三维张量,beta、gamma是C维的向量。假设WC为128*768,N为64,缓存区大小2048*256。从上述指令流中可以看出,此次是对每个缓存区的行、列所有元素进行求和、计算均值和方差,因此,在子任务划分时,将输入张量的C维存储到缓存区的列、行向量上。每个子任务需要同时用到4部分(gammaBuff、betaBuff、buffA、buffB)缓存区,因此,每个子任务所占用缓存区的大小可以为3*256*4=768(一组C)*4,则一个子任务处理的输入数据量大小为1*1*768,需要64*128个子任务才能完成对输入张量的处理。
基于同样的发明构思,本申请实施例还提供了一种处理器,该处理器包括本体和上述处理器架构。本体包括壳体及其他构成处理器所需的要素,如软件层。其中,处理器架构作为处理器的硬件架构,处理器要能正常运行,除了包含硬件架构外,还需要包含软件层面的指令集,指令集定义了如何去实现处理器的功能,该部分内容已经为本领域所熟知,在此不再介绍。
可以通过对目前市面上常使用的通用处理器进行改进,或者,直接进行全新设计,从而得到包括上述通用处理器架构的处理器。该处理器在进行神经网络模型中涉及的各种运算(如卷积处理、激活函数处理、池化处理、向量加操作处理、归一化处理、分类处理中的各种组合运算)时,其中间结果不需要来回在外部存储单元和运算单元之间进行搬运,大大节省了带宽,同时也提高了处理器的运算性能。
该处理器可以是对目前市面上常使用的通用处理器进行改进后得到,通用处理器包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;此外,通用处理器还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件。通用处理器也可以是微处理器或者任何常规的处理器等。
处理器实施例中的处理器架构,其实现原理及产生的技术效果和前述处理器架构实施例相同,为简要描述,处理器实施例部分未提及之处,可参考前述处理器架构实施例中相应内容。
基于同样的发明构思,本申请实施例还提供了一种电子设备,该电子设备包括外部存储单元和上述的处理器架构,其示意图如图5所示。该电子设备可以是任何包括外部存储单元和上述处理器架构的电子产品或电子器件,例如,可以是手机、平板、计算机或者服务器等电子产品。
电子设备实施例中的处理器架构,其实现原理及产生的技术效果和前述处理器架构实施例相同,为简要描述,电子设备实施例部分未提及之处,可参考前述处理器架构实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (11)

1.一种处理器架构,其特征在于,包括:
缓存区;
输入模块,用于从外部存储单元读取完成任务所需的数据,并存储到所述缓存区中;
可编程处理模块,用于读取存储于所述缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回所述缓存区的处理结果写回所述缓存区;
输出模块,用于将存储于所述缓存区中的最终处理结果存储到所述外部存储单元。
2.根据权利要求1所述的处理器架构,其特征在于,所述处理器架构还包括:
卷积模块,用于从外部存储单元处获取卷积计算所需的数据,对获取到的数据进行卷积处理,并将卷积处理结果存储到所述缓存区。
3.根据权利要求1所述的处理器架构,其特征在于,所述处理器架构还包括:
控制模块,用于控制所述可编程处理模块的执行逻辑、所述输出模块的执行逻辑、所述输入模块的执行逻辑。
4.根据权利要求3所述的处理器架构,其特征在于,所述控制模块还用于:
根据完成目标任务所需的输入张量的大小和所述缓存区的大小,将所述目标任务切分为多个子任务,每个子任务对应所述输入张量的一部分,且每个子任务对应的数据量小于所述缓存区的存储量;相应的,
所述输入模块在从外部存储单元读取完成任务所需的数据时,具体为读取完成子任务所需的数据。
5.根据权利要求1-4中任一项所述的处理器架构,其特征在于,所述可编程处理模块被配置为执行神经网络模型中的各种数据运算。
6.一种处理器架构,其特征在于,包括:
缓存区;
控制模块,用于从外部存储单元获取完成目标任务所需的输入张量的大小以及获取完成所述目标任务的指令流,并根据所述输入张量的大小和所述缓存区的大小,将所述目标任务切分为多个子任务,其中,每个子任务对应所述输入张量的一部分,且每个子任务对应的数据量小于所述缓存区的存储量;
输入模块,用于在所述控制模块根据所述目标任务的指令流发送的控制命令下,从外部存储单元读取完成每个子任务所需的数据,并存储到所述缓存区中;
可编程处理模块,用于在所述控制模块根据所述目标任务的指令流发送的控制命令下,读取存储于所述缓存区中的完成该任务所需的数据,并按照预设处理逻辑对读取的数据进行处理,每次处理后将需要写回所述缓存区的处理结果写回所述缓存区;
输出模块,用于在所述控制模块根据所述目标任务的指令流发送的控制命令下,将存储于所述缓存区中的最终处理结果存储到所述外部存储单元。
7.根据权利要求6所述的处理器架构,其特征在于,所述缓存区被划分为多个区域,所述多个区域用于存储完成一个子任务所需的数据,或者,所述多个区域用于存储完成并行的多个子任务所需的数据。
8.根据权利要求6或7所述的处理器架构,其特征在于,所述处理器架构还包括卷积模块,用于在所述控制模块的控制下,从外部存储单元处获取卷积计算所需的数据,对获取到的数据进行卷积处理,并将卷积处理结果存储到所述缓存区。
9.根据权利要求8所述的处理器架构,其特征在于,所述目标任务包括依次对目标数据进行卷积处理、激活函数处理、向量加操作处理和池化处理;所述控制模块,具体用于:
控制所述卷积模块从外部存储单元处获取卷积计算所需的目标数据,对获取到的目标数据进行卷积处理,并将卷积处理结果数据存储到所述缓存区的第一区域;
控制所述输入模块从外部存储单元读取完成向量加操作所需的数据,并存储到所述缓存区中的第二区域;
控制所述可编程处理模块读取存储于所述第一区域中的卷积处理结果数据,并对其进行激活函数处理,并将激活处理结果数据写回所述第一区域;
控制所述可编程处理模块将存储于所述第一区域中的激活处理结果数据与存储于所述第二区域中的数据进行向量加操作,并将向量加操作结果数据写回所述第一区域;
控制所述可编程处理模块存储于所述第一区域中的向量加操作结果数据进行池化处理,并将池化处理结果数据写回所述第一区域;
控制所述输出模块将存储于所述第一区域的池化处理结果数据存储到所述外部存储单元。
10.一种处理器,其特征在于,包括:本体和如权利要求1-9任一项所述的处理器架构。
11.一种电子设备,其特征在于,包括:外部存储单元和如权利要求1-9任一项所述的处理器架构。
CN202210536417.4A 2022-05-18 2022-05-18 一种处理器架构、处理器及电子设备 Active CN114638352B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210536417.4A CN114638352B (zh) 2022-05-18 2022-05-18 一种处理器架构、处理器及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210536417.4A CN114638352B (zh) 2022-05-18 2022-05-18 一种处理器架构、处理器及电子设备

Publications (2)

Publication Number Publication Date
CN114638352A true CN114638352A (zh) 2022-06-17
CN114638352B CN114638352B (zh) 2023-05-30

Family

ID=81952995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210536417.4A Active CN114638352B (zh) 2022-05-18 2022-05-18 一种处理器架构、处理器及电子设备

Country Status (1)

Country Link
CN (1) CN114638352B (zh)

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4079452A (en) * 1976-06-15 1978-03-14 Bunker Ramo Corporation Programmable controller with modular firmware for communication control
US4679164A (en) * 1984-12-17 1987-07-07 The United States Of America As Represented By The Secretary Of The Army Digital high speed programmable convolver
CN107679620A (zh) * 2017-04-19 2018-02-09 北京深鉴科技有限公司 人工神经网络处理装置
CN107704922A (zh) * 2017-04-19 2018-02-16 北京深鉴科技有限公司 人工神经网络处理装置
CN108805272A (zh) * 2018-05-03 2018-11-13 东南大学 一种基于fpga的通用卷积神经网络加速器
CN110135554A (zh) * 2019-03-25 2019-08-16 电子科技大学 一种基于fpga的卷积神经网络硬件加速架构
CN110163790A (zh) * 2018-06-11 2019-08-23 腾讯科技(深圳)有限公司 图像处理方法、装置、系统、存储介质和计算机设备
CN110796236A (zh) * 2019-10-21 2020-02-14 中国人民解放军国防科技大学 多样本多通道卷积神经网络池化的向量化实现方法
US20200160182A1 (en) * 2018-05-31 2020-05-21 Neuralmagic Inc. System and method of executing neural networks
US20200293379A1 (en) * 2018-03-27 2020-09-17 Tencent Technology (Shenzhen) Company Limited Convolutional computing accelerator, convolutional computing method, and computer-readable storage medium
CN111931918A (zh) * 2020-09-24 2020-11-13 深圳佑驾创新科技有限公司 神经网络加速器
US20210200455A1 (en) * 2018-06-29 2021-07-01 Sony Corporation Information processing apparatus, information processing method, and program
WO2021261667A1 (ko) * 2020-06-22 2021-12-30 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서
CN113947200A (zh) * 2021-12-21 2022-01-18 珠海普林芯驰科技有限公司 神经网络的加速计算方法及加速器、计算机可读存储介质
CN114004351A (zh) * 2021-11-22 2022-02-01 浙江大学 一种卷积神经网络硬件加速平台
CN114169514A (zh) * 2022-02-14 2022-03-11 浙江芯昇电子技术有限公司 一种卷积硬件加速方法及卷积硬件加速电路
CN114219080A (zh) * 2021-12-31 2022-03-22 浪潮(北京)电子信息产业有限公司 一种神经网络加速处理方法及相关装置

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4079452A (en) * 1976-06-15 1978-03-14 Bunker Ramo Corporation Programmable controller with modular firmware for communication control
US4679164A (en) * 1984-12-17 1987-07-07 The United States Of America As Represented By The Secretary Of The Army Digital high speed programmable convolver
CN107679620A (zh) * 2017-04-19 2018-02-09 北京深鉴科技有限公司 人工神经网络处理装置
CN107704922A (zh) * 2017-04-19 2018-02-16 北京深鉴科技有限公司 人工神经网络处理装置
US20200293379A1 (en) * 2018-03-27 2020-09-17 Tencent Technology (Shenzhen) Company Limited Convolutional computing accelerator, convolutional computing method, and computer-readable storage medium
CN108805272A (zh) * 2018-05-03 2018-11-13 东南大学 一种基于fpga的通用卷积神经网络加速器
US20200160182A1 (en) * 2018-05-31 2020-05-21 Neuralmagic Inc. System and method of executing neural networks
CN110163790A (zh) * 2018-06-11 2019-08-23 腾讯科技(深圳)有限公司 图像处理方法、装置、系统、存储介质和计算机设备
US20210200455A1 (en) * 2018-06-29 2021-07-01 Sony Corporation Information processing apparatus, information processing method, and program
CN110135554A (zh) * 2019-03-25 2019-08-16 电子科技大学 一种基于fpga的卷积神经网络硬件加速架构
CN110796236A (zh) * 2019-10-21 2020-02-14 中国人民解放军国防科技大学 多样本多通道卷积神经网络池化的向量化实现方法
WO2021261667A1 (ko) * 2020-06-22 2021-12-30 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서
CN111931918A (zh) * 2020-09-24 2020-11-13 深圳佑驾创新科技有限公司 神经网络加速器
CN114004351A (zh) * 2021-11-22 2022-02-01 浙江大学 一种卷积神经网络硬件加速平台
CN113947200A (zh) * 2021-12-21 2022-01-18 珠海普林芯驰科技有限公司 神经网络的加速计算方法及加速器、计算机可读存储介质
CN114219080A (zh) * 2021-12-31 2022-03-22 浪潮(北京)电子信息产业有限公司 一种神经网络加速处理方法及相关装置
CN114169514A (zh) * 2022-02-14 2022-03-11 浙江芯昇电子技术有限公司 一种卷积硬件加速方法及卷积硬件加速电路

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
YUFENG HAO 等: "A General Neural Network Hardware Architecture on FPGA" *
侯昉 等: "多维数据的Z-Ordering存储映射算法及其缓存调度优化" *
王建庄: "基于FPGA的高速图像处理算法研究及系统实现" *
范家赫: "面向SAR舰船检测的深度学习算法轻量化及FPGA加速器设计", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》 *

Also Published As

Publication number Publication date
CN114638352B (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
US11922132B2 (en) Information processing method and terminal device
CN112840356B (zh) 运算加速器、处理方法及相关设备
Yepez et al. Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks
CN107578098B (zh) 基于脉动阵列的神经网络处理器
US11593658B2 (en) Processing method and device
CN109543832B (zh) 一种计算装置及板卡
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
CN109121435A (zh) 处理装置和处理方法
US20230026006A1 (en) Convolution computation engine, artificial intelligence chip, and data processing method
CN109634904B (zh) Slam运算装置和方法
CN111338695B (zh) 基于流水线技术的数据处理方法及相关产品
CN117933314A (zh) 处理装置、处理方法、芯片及电子装置
US20210133854A1 (en) Information processing method and terminal device
CN112799599B (zh) 一种数据存储方法、计算核、芯片和电子设备
WO2023065983A1 (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
CN110909872B (zh) 集成电路芯片装置及相关产品
CN115310037A (zh) 矩阵乘法计算单元、加速单元、计算系统和相关方法
CN113837922A (zh) 计算装置、数据处理方法及相关产品
CN114638352B (zh) 一种处理器架构、处理器及电子设备
CN111652349A (zh) 一种神经网络的处理方法及相关设备
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
US11687831B1 (en) Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
US11086634B2 (en) Data processing apparatus and method
CN113627587A (zh) 一种多通道式卷积神经网络加速方法及装置
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant