CN112052042A - 一种数据流水线处理器系统 - Google Patents

一种数据流水线处理器系统 Download PDF

Info

Publication number
CN112052042A
CN112052042A CN202010967991.6A CN202010967991A CN112052042A CN 112052042 A CN112052042 A CN 112052042A CN 202010967991 A CN202010967991 A CN 202010967991A CN 112052042 A CN112052042 A CN 112052042A
Authority
CN
China
Prior art keywords
data
parameter
calculation
path
tree
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
CN202010967991.6A
Other languages
English (en)
Other versions
CN112052042B (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.)
Xiamen Yipu Intelligent Technology Co ltd
Original Assignee
Xiamen Yipu Intelligent 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 Xiamen Yipu Intelligent Technology Co ltd filed Critical Xiamen Yipu Intelligent Technology Co ltd
Priority to CN202010967991.6A priority Critical patent/CN112052042B/zh
Publication of CN112052042A publication Critical patent/CN112052042A/zh
Application granted granted Critical
Publication of CN112052042B publication Critical patent/CN112052042B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Advance Control (AREA)

Abstract

本发明涉及人工智能计算领域,更具体地,涉及一种数据流水线处理器系统,用于提高单位时钟周期内数据处理量以及计算资源的利用率从而提高计算效率。所述的数据流水线处理器系统包括至少两个数据流水线计算路径、参数路径、数据路径、配置控制器;所述数据路径以及参数路径为至少两个数据流水线计算路径分别提供数据和参数;至少两个数据流水线计算路径对数据路径以及参数路径分别提供的数据和参数进行运算后,输出最终计算结果;配置控制器与参数路径、数据路径以及数据流水线计算路径连接,用于获取配置信息后对树状参数路径、线性参数路径以及非线性参数路径、数据路径以及数据流水线计算路径进行配置。

Description

一种数据流水线处理器系统
技术领域
本发明涉及人工智能计算领域,更具体地,涉及一种数据流水线处理器系统。
背景技术
处理器技术是人类科技进步的重大体现之一。然而,处理器的抽象模型却十分简单:(1)处理器都由存储器、输入/输出接口、控制单元和计算单元组成;(2)处理器循环执行下列操作:“取指令/数据、执行指令、写数据”;(3)处理器的行为完全由指令和数据决定。无论处理器多复杂,无论是CPU、GPU或DSP,上述模型全部适用。这个处理器抽象模型就是著名的“冯诺依曼结构”,其核心是把用于控制的程序当作数据来存储,这种基于存储程序的计算模型一直沿用至今,无论半导体工艺多先进,处理器结构多复杂,存储程序型计算从未改变。
在存储程序计算中,指令和数据是所有操作的核心,直观的按照指令和数据来划分,传统计算体系结构可以分为四类:
1)SISD(单指令单数据):最早的计算体系结构,任何时刻,只有一条指令执行,处理一个数据。
2)SIMD(单指令多数据):一种并行计算体系,任何时刻,只有一条指令执行,处理多个数据。大多数现代处理器都拥有这类体系结构扩展(例如ARM NEON扩展指令和X86MMX/SSE扩展指令)。
3)MISD(多指令单数据):多条指令处理一个数据,目前未被普遍使用。
4)MIMD(多指令多数据):一种并行计算体系,多个核心(运行不同指令)处理多个数据,大多数MIMD体系实际由包含SIMD的多个核心组成。
然而,随着数据密集型任务的出现,数据并行成为计算性能的关键瓶颈。SIMD架构是用于增加数据并行的直观选择,然而,把多个数据同步打包成一个向量数据并用一条指令执行,这极大的限制了数据并行度的发掘。
对此,英伟达提出了SIMT(单指令多线程)架构。相比于SIMD,SIMT的数据由不同线程维护,数据之间是完全异步的关系,各自完全独立,可以实现大量异步数据的完全并行,也即线程级的数据并行。这样的架构极大的增加了数据的并行维度。典型的,1个16核现代先进CPU通常只能同时执行16或32个线程,而一个现代先进GPU同时执行的线程数高达几千个。
显而易见的,在存储程序计算中,提高计算性能就是提高指令和数据的执行性能。在过去的近50年发展历程中,以英特尔、英伟达为代表的美国企业引领了处理器技术的重要发展。根据计算任务的特点:指令密集型或数据密集型,处理器架构也按照指令优化和数据优化两大方向发展,并衍生出CPU、GPU两大处理器类型。CPU是最早的处理器,其技术发展主要面向指令执行效率的优化,包括更高的频率、更高效的指令集(RISC)、更多的指令级并行(超标量)、更多的任务级并行(超线程、多核)等。GPU是随着数据密集型任务的增多而逐渐发展起来的处理器,其技术发展主要面向数据执行效率的优化,包括更多核心数,更多线程(SIMT)、更高效的内存结构,更高效的编程模型等。
在通用并行计算这条路上,CPU\GPU架构探索了近50年,拥有一系列复杂的“组合拳”来完成多种粒度的并行计算,从而实现最高能效比的高性能计算,软硬件技术壁垒之高很难打破。
从一开始,计算机编程就存在两种模型,一种模拟人类行为结果,一种模拟人类大脑。
1)模拟人类行为结果的编程模型(称为传统编程模型),本质是基于人类认知的数学抽象进行编程。在该模型下,计算机的一切行为由人类的抽象思维决定,人类编写的程序代码变成确定的执行序列,并被特定的硬件使用。
2)模拟人类大脑的编程模型(称为神经网络编程模型),本质是基于人类大脑的生物抽象进行编程。在该模型下,计算机的一切行为由神经网络结构和知识参数决定,训练获得的知识通过数据的形式存储,并被特定硬件使用。
在过去的70年间,由于各种原因,模拟人类行为结果的编程模型得到蓬勃发展,并成为如今主流,目前几乎所有软件编程都属于此类。而模拟人类大脑的编程模型则历经几次浪潮与寒冬,进展缓慢,目前基于神经网络/深度学习技术的编程属于此类。
CPU/GPU是基于传统编程模型打造的处理器。CPU/GPU也可以运行神经网络算法,但这是通过把神经网络算法转换成传统编程模型后实现的。大量事实证明,神经网络编程模型十分重要,是下一代智能计算体系的核心关键。如此重要的体系需要一种比CPU、GPU更高效的架构来执行。
神经网络编程模型的本质是计算图模型,计算图的输入/输出是张量数据,计算图的类型代表操作类型。因此,直观的,最适合于神经网络编程模型的计算体系结构,是Graph/Tensor计算体系,其中,处理器的功能由计算图类型决定,而数据则是计算图的输入/输出张量。然而,计算图这一层级的粒度太粗,各类型间并没有太大的相关性,一个典型的神经网络计算由Convolution、Pooling、BN、Scale、RELU等组成,它们之间的行为差异巨大,如果处理器按照计算图操作的粒度去设计,这就意味着需要为每一个计算图操作(或某几个)设计专门的计算硬件(正如NVIDIA DLA那样,NVDLA为卷积、池化和BN专门设计了不同的计算电路),这样的代价是巨大的,而且也不具备可扩展性。
由于人工智能计算任务是数据密集型任务,传统处理器的指令流水线架构会引入过多的指令冗余,不利于计算效率的提高。因此,人工智能计算更适合于数据流水线架构。
而单线程的数据流水线系统在单位时钟周期内处理的数据有限,计算资源的利用率较低。
发明内容
本发明旨在克服上述现有技术的至少一种缺陷(不足),提供一种数据流水线处理器系统,用于提高单位时钟周期内数据处理量以及计算资源的利用率,从而提高计算效率。
本发明采取的技术方案是,提供一种数据流水线处理器系统,包括至少两个数据流水线计算路径、参数路径、数据路径、配置控制器;所述数据路径以及参数路径为至少两个数据流水线计算路径分别提供数据和参数;至少两个数据流水线计算路径对数据路径以及参数路径分别提供的数据和参数进行运算后,输出最终计算结果;配置控制器与参数路径、数据路径以及数据流水线计算路径连接,用于获取配置信息后对参数路径、数据路径以及数据流水线计算路径进行配置。
所述数据流水线处理器系统利用配置控制器对数据路径、参数路径进行数据和参数的配置,数据路径根据配置信息向数据流水线计算路径输入数据,参数路径根据配置信息向至少两个数据流水线计算路径输入参数,利用至少两个数据流水线计算路径实现多种计算方式,使得本发明更适合于数据密集型任务的人工智能计算,能够提高数据的处理效率,同时,数据流水线处理器系统根据配置控制器的配置信息即可完成数据以及参数的处理,不依赖于指令,是对于数据和/或参数的一种通用且直接的流水线处理架构,并在数据处理过程中能够完全去除指令所带来的性能损失,从而最大化提高计算资源的利用率。本发明的至少两个数据流水线计算路径能够对单位数量的数据进行并行处理,提高数据处理效率,当数据流水线计算路径为x个时,数据处理效率相较于数据流水线计算路径为一个时能够加快x倍(x≥2)。
进一步地,所述数据路径包括至少两个数据获取模块以及顺次连接的数据存储访问模块、数据紧耦合内存、数据分配器;至少两个数据获取模块分别与数据分配器连接,每个数据获取模块对应连接一个数据流水线计算路径;所述数据存储访问模块用于从外部设备获取计算所需数据;所述数据紧耦合内存用于存储数据存储访问模块所获得的计算所需数据并输入到数据分配器;所述数据分配器将计算所需数据分配为至少两个数据计算部分并以一一对应的方式输入到至少两个数据获取模块;至少两个数据获取模块获取到数据计算部分后分别输入到与之相连的数据流水线计算路径。
利用数据分配器将计算所需数据分配为多个计算部分并将其以一一对应的方式输入到至少两个数据获取模块,至少两个数据获取模块获取到数据计算部分后分别输入到与之相连的数据流水线计算路径,使得数据分配得到的多个数据计算部分能够同时在不同的数据流水线计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的数据,数据分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的数据计算部分。其中,C为通道,H为高,W为宽。
进一步地,所述参数路径包括均与各个数据流水线计算路径连接的树状参数路径、线性参数路径以及非线性参数路径。
参数路径提供了树状参数路径、线性参数路径以及非线性参数路径,可以为数据流水线计算路径提供三种不同的参数,为数据流水线计算路径实现多种计算方式提供支持。
进一步地,所述树状参数路径包括至少两个树状参数获取模块以及顺次连接的树状参数存储访问模块、树状参数紧耦合内存、树状参数分配器;至少两个树状参数获取模块分别与树状参数分配器连接,每个树状参数获取模块对应连接一个数据流水线计算路径;所述树状参数存储访问模块用于从外部设备获取计算所需参数;所述树状参数紧耦合内存用于存储树状参数存储访问模块所获得的计算所需参数并输入到树状参数分配器;所述树状参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个树状参数获取模块;至少两个树状参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径。
利用树状参数分配器将计算所需参数分配为多个参数计算部分并将其以一一对应的方式输入到至少两个数据获取模块,至少两个数据获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径,使得参数分配得到的多个树状参数计算部分能够同时在不同的计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的参数,树状参数分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的参数计算部分。其中,C为通道,H为高,W为宽。
进一步地,所述线性参数路径包括至少两个线性参数获取模块以及顺次连接的线性参数存储访问模块、线性参数紧耦合内存、线性参数分配器;至少两个线性参数获取模块分别与线性参数分配器连接,每个线性参数获取模块对应连接一个数据流水线计算路径;所述线性参数存储访问模块用于从外部设备获取计算所需参数;所述线性参数紧耦合内存用于存储线性参数存储访问模块所获得的计算所需参数并输入到线性参数分配器;所述线性参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个线性参数获取模块;至少两个线性参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径。
利用线性参数分配器将计算所需参数分配为多个线性参数计算部分并将其以一一对应的方式输入到至少两个数据获取模块,至少两个数据获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径,使得参数分配得到的多个线性参数计算部分能够同时在不同的计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的参数,线性参数分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的参数计算部分。其中,C为通道,H为高,W为宽。
进一步地,所述非线性参数路径包括至少两个非线性参数获取模块以及顺次连接的非线性参数存储访问模块、非线性参数紧耦合内存、非线性参数分配器;至少两个非线性参数获取模块分别与非线性参数分配器连接,每个非线性参数获取模块对应连接一个数据流水线计算路径;所述非线性参数存储访问模块用于从外部设备获取计算所需参数;所述非线性参数紧耦合内存用于存储非线性参数存储访问模块所获得的计算所需参数并输入到非线性参数分配器;所述非线性参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个非线性参数获取模块;至少两个非线性参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径。
利用非线性参数分配器将计算所需参数分配为多个非线性参数计算部分并将其以一一对应的方式输入到至少两个数据获取模块,至少两个数据获取模块获取到非线性参数计算部分后分别输入到与之相连的数据流水线计算路径,使得参数分配得到的多个非线性参数计算部分能够同时在不同的计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的参数,非线性参数分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的参数计算部分。其中,C为通道,H为高,W为宽。
进一步地,每个数据流水线计算路径包括顺次连接的并均与配置控制器连接的树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元;树状结构的乘法累加单元与数据路径、树状参数路径连接;线性结构的乘法累加单元与线性参数路径连接;非线性结构的乘法累加单元与非线性参数路径连接。所述的树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元都属于乘法累加器。
一个神经网络算法通常由多种不同类型的神经网络计算层组成,如卷积、池化、线性激活、非线性激活、全连接等。本发明所述的数据流水线计算路径结构提供了树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元,可以匹配大部分的神经网络计算层,如卷积、池化、线性激活、非线性激活、全连接等计算层,故而该数据流水线计算路径结构能够通用于神经网络算法计算。同时在一个数据流水线计算路径一体化集成了树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元,可以使得计算高效、简单,使得运行该数据流水线计算路径结构的计算电路可以运行在较高的频率,再配合高效的数据控制系统(包括高效的软件编译器系统),可以实现较高的乘法累加单元利用率。同时,多个数据流水线计算路径能够提高数据和参数的处理效率以及数据路径、树状参数路径、线性参数路径以及非线性参数路径的利用效率。
进一步地,所述树状结构的乘法累加单元包括均与配置控制器连接的m个乘法器和n个加法器,m>0,n>0;m个乘法器分别与树状参数路径、数据路径连接,分别将来自树状参数路径的参数计算部分的参数和来自数据路径的数据计算部分的数据相乘后输出结果到加法器;n个加法器用于并行和/或串行计算,将来自乘法器的输出结果累加并输出数据至位于同一个数据流水线计算路径的线性结构的乘法累加单元或非线性结构的乘法累加单元或作为处理后的最终计算结果输出。
所述树状结构的乘法累加单元可以将接收到的参数和/或者数据相乘后累加。因此,本发明可以用于例如神经网络计算中的平均池化层(平均池化层的主要作用是把临近数据乘法累加在一起后获得新结果)的计算。
进一步地,所述线性结构的乘法累加单元包括均与配置控制器连接的乘法器与加法器;所述乘法器分别与线性参数路径、位于同一个数据流水线计算路径的树状结构的乘法累加单元连接,将来自线性参数路径的一个参数和来自树状结构的乘法累加单元的一个数据相乘再输出结果到加法器中;加法器将接收乘法器的输出结果与来自参数路径的另一个参数相加后输出数据至位于同一个数据流水线计算路径的非线性结构的乘法累加单元或作为处理后的最终计算结果输出。
所述线性结构的乘法累加单元可以将一个参数或数据与另一个参数或数据相乘后再与第三个参数或数据相加。因此,乘法累加单元可以用于线性计算。
进一步地,所述非线性结构的乘法累加单元使用LUT查找表;非线性结构的乘法累加单元用于将来自非线性参数路径的参数存储在LUT查找表中;非线性结构的乘法累加单元还用于将接收的来自树状结构的乘法累加单元或者线性结构的乘法累加单元的数据作为地址输入LUT查找表后获得相应内容,所述相应内容作为处理后的最终计算结果输出。
非线性结构的乘法累加单元可以根据接收的数据作为地址输出所需数据,因此非线性结构的乘法累加单元具有非线性计算功能。
进一步地,还包括数据集中器,所述数据集中器分别与各个数据流水线计算路径连接,用于将各个数据流水线计算路径的最终输出结果集中缓存并重排后输出;或者还包括直接存储器写模块;所述直接存储器写模块分别与各个数据流水线计算路径连接,用于接收各个数据流水线计算路径的最终计算结果并输出。优选地,所述直接存储器写模块还可以与数据集中器相连接,所述数据集中器分别与各个数据流水线计算路径连接,用于将各个数据流水线计算路径的输出结果集中缓存并重排后输出至直接存储器写模块。
与现有技术相比,本发明的有益效果为:本发明能够更加高效地进行人工智能领域的数据密集型任务的计算并通过设置至少两个数据流水线计算路径提高计算资源利用率。
附图说明
图1为本发明的数据流水线处理器系统流程图。
图2为本发明的数据流水线计算路径结构图。
图3为本发明的树状结构的乘法累加单元结构图。
图4为本发明的线性结构的乘法累加单元结构图。
图5为本发明的非线性结构的乘法累加单元结构图。
图6为本发明的数据或参数以高H方向切分的示意图。
图7为本发明实施例2的神经网络算法及其计算流程图。
附图标记说明:
Data:数据;
Param:参数;
MAC Tree:树状结构的乘法累加单元;
MAC Linear:线性结构的乘法累加单元;
MAC Nolinear:非线性结构的乘法累加单元;
MUL:乘法器;
ADD:加法器;
LUT:LUT查找表;
DDMA:数据存储访问模块;
DTCM:数据紧耦合内存;
DSpread:数据分配器;
DFetch:数据获取模块;
TDMA:树状参数存储访问模块;
TTCM:树状参数紧耦合内存;
TSpread:树状参数分配器;
TFetch:树状参数获取模块;
LDMA:线性参数存储访问模块;
LTCM:线性参数紧耦合内存;
LSpread:线性参数分配器;
LFetch:线性参数获取模块;
NDMA:非线性参数存储访问模块;
NTCM:非线性参数紧耦合内存;
NSpread:非线性参数分配器;
NFetch:非线性参数获取模块;
Data Path:数据路径结构;
Tree Param Path:树状参数路径结构;
Linear Param Path:线性参数路径结构;
Nolinear Param Path:非线性参数路径结构;
Configuration controller:配置控制器;
WDMA:直接存储器写模块;
Config:配置信息;
Data collection:数据集中器;
Calculation Path:数据流水线计算路径。
具体实施方式
本发明附图仅用于示例性说明,不能理解为对本发明的限制。为了更好说明以下实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
实施例1
如图1所示,本实施例的技术方案是提供一种数据流水线处理器系统,包括至少两个数据流水线计算路径、参数路径、数据路径、配置控制器;所述数据路径以及参数路径为至少两个数据流水线计算路径分别提供数据和参数;至少两个数据流水线计算路径对数据路径以及参数路径分别提供的数据和参数进行运算后,输出最终计算结果数据;配置控制器与参数路径、数据路径以及数据流水线计算路径连接,用于获取配置信息后对参数路径、数据路径以及数据流水线计算路径进行配置。
在计算开始前配置控制器首先根据配置信息对数据路径、参数路径以及数据流水线计算路径进行配置操作。配置操作结束后开始进行计算操作,由数据路径提供的数据以及由参数路径提供的参数进入每一条数据流水线计算路径后,数据流水线计算路径再对接收到的所述数据以及参数进行计算并输出最终计算结果数据。
所述数据流水线处理器系统利用配置控制器对数据路径、参数路径进行数据和参数的配置,数据路径根据配置信息向数据流水线计算路径输入数据,参数路径根据配置信息向至少两个数据流水线计算路径输入参数,利用至少两个数据流水线计算路径实现多种计算方式,使得本发明更适合于数据密集型任务的人工智能计算,能够提高数据的处理效率,同时,数据流水线处理器系统根据配置控制器的配置信息即可完成数据以及参数的处理,不依赖于指令,是对于数据和/或参数的一种通用且直接的流水线处理架构,并在数据处理过程中能够完全去除指令所带来的性能损失,从而最大化提高计算资源的利用率。本发明的至少两个数据流水线计算路径能够对单位数量的数据进行并行处理,提高数据处理效率,当数据流水线计算路径为x个时,数据处理效率相较于数据流水线计算路径为一个时能够加快x倍(x≥2)。
在具体实施过程中,数据流水线计算路径可以根据实际需求设置多个,每个数据流水线计算路径都通过数据路径、参数路径分别提供所需计算的数据和参数。图1所示的系统中,数据流水线计算路径设置了4条:Calculation Path0、Calculation Path1、Calculation Path2、Calculation Path3。
进一步地,所述数据路径包括至少两个数据获取模块以及顺次连接的数据存储访问模块、数据紧耦合内存、数据分配器;至少两个数据获取模块分别与数据分配器连接,每个数据获取模块对应连接一个数据流水线计算路径;所述数据存储访问模块用于从外部设备获取计算所需数据;所述数据紧耦合内存用于存储数据存储访问模块所获得的计算所需数据并输入到数据分配器;所述数据分配器将计算所需数据分配为至少两个数据计算部分并以一一对应的方式输入到至少两个数据获取模块;至少两个数据获取模块获取到数据计算部分后分别输入到与之相连的数据流水线计算路径。利用数据分配器将计算所需数据分配为多个数据计算部分并将其以一一对应的方式输入到至少两个数据获取模块,至少两个数据获取模块获取到数据计算部分后分别输入到与之相连的数据流水线计算路径,使得数据分配得到的多个数据计算部分能够同时在不同的数据流水线计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。如图2所示,对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的数据,数据分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的数据计算部分。其中,C为通道,H为高,W为宽。
在此实施方式中,所述数据分配器根据数据获取模块的个数对所输入的数据进行分配,使其可以获得一个或多个(所述多个应当等于或者小于数据流水线计算路径的个数)可以单独进行并行计算的数据。数据获取模块与数据流水线计算路径一一对应,数量上应当一致,确保每条数据流水线计算路径都能够连接一个数据获取模块,都具有从数据获取模块中获取可单独进行并行计算的数据进行单独计算的功能。
在具体实施过程中,为了给数据流水线计算路径提供多种参数,使其支持多种计算模式,本实施例的所述参数路径包括均与各个数据流水线计算路径连接的树状参数路径、线性参数路径以及非线性参数路径。树状参数路径、线性参数路径以及非线性参数路径分别为数据流水线计算路径提供树状结构的计算参数、线性结构的计算参数、非线性结构的计算参数,从而使数据流水线计算路径可以实现树状、线性、非线性的计算功能。
进一步地,所述树状参数路径包括至少两个树状参数获取模块以及顺次连接的树状参数存储访问模块、树状参数紧耦合内存、树状参数分配器;至少两个树状参数获取模块分别与树状参数分配器连接,每个树状参数获取模块对应连接一个数据流水线计算路径;所述树状参数存储访问模块用于从外部设备获取计算所需参数;所述树状参数紧耦合内存用于存储树状参数存储访问模块所获得的计算所需参数并输入到树状参数分配器;所述树状参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个树状参数获取模块;至少两个树状参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径。利用树状参数分配器将计算所需参数分配为多个参数计算部分并将其以一一对应的方式输入到至少两个树状参数获取模块,至少两个树状参数获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径,使得参数切分得到的多个计算部分能够同时在不同的计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的参数,树状参数分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的参数计算部分。其中,C为通道,H为高,W为宽。
在此实施方式中,所述树状参数分配器根据树状参数获取模块的个数对所输入的参数进行分配,使其可以获得一个或多个(所述多个应当等于或者小于数据流水线计算路径的个数)可以单独进行并行计算的参数。树状参数获取模块与数据流水线计算路径一一对应,数量上应当一致,确保每条数据流水线计算路径都能够连接一个树状参数获取模块,都具有从树状参数获取模块中获取可单独进行并行计算的参数进行单独计算的功能。
进一步地,所述线性参数路径包括至少两个线性参数获取模块以及顺次连接的线性参数存储访问模块、线性参数紧耦合内存、线性参数分配器;至少两个线性参数获取模块分别与线性参数分配器连接,每个线性参数获取模块对应连接一个数据流水线计算路径;所述线性参数存储访问模块用于从外部设备获取计算所需参数;所述线性参数紧耦合内存用于存储线性参数存储访问模块所获得的计算所需参数并输入到线性参数分配器;所述线性参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个线性参数获取模块;至少两个线性参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径。利用线性参数分配器将计算所需参数分配为多个参数计算部分并将其以一一对应的方式输入到至少两个线性参数获取模块,至少两个线性参数获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径,使得参数分配得到的多个计算部分能够同时在不同的计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的参数,线性参数分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的参数计算部分。其中,C为通道,H为高,W为宽。
在此实施方式中,所述线性参数分配器根据线性参数获取模块的个数对所输入的参数进行分配,使其可以获得一个或多个(所述多个应当等于或者小于数据流水线计算路径的个数)可以单独进行并行计算的参数。线性参数获取模块与数据流水线计算路径一一对应,数量上应当一致,确保每条数据流水线计算路径都能够连接一个线性参数获取模块,都具有从线性参数获取模块中获取可单独进行并行计算的参数进行单独计算的功能。
进一步地,所述非线性参数路径包括至少两个非线性参数获取模块以及顺次连接的非线性参数存储访问模块、非线性参数紧耦合内存、非线性参数分配器;至少两个非线性参数获取模块分别与非线性参数分配器连接,每个非线性参数获取模块对应连接一个数据流水线计算路径;所述非线性参数存储访问模块用于从外部设备获取计算所需参数;所述非线性参数紧耦合内存用于存储非线性参数存储访问模块所获得的计算所需参数并输入到非线性参数分配器;所述非线性参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个非线性参数获取模块;至少两个非线性参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径。利用非线性参数分配器将计算所需参数分配为多个参数计算部分并将其以一一对应的方式输入到至少两个非线性参数获取模块,至少两个非线性参数获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径,使得参数分配得到的多个计算部分能够同时在不同的计算路径进行并行计算,大大提高数据计算的效率,同时能够提高数据路径的利用率。对于尺寸为[c,h,w](通道C为c,高H为h,宽W为w)的参数,非线性参数分配器可以按照C或H或W三个方向进行切分得到可以用于并行独立计算的参数计算部分。其中,C为通道,H为高,W为宽。
在此实施方式中,所述非线性参数分配器根据非线性参数获取模块的个数对所输入的参数进行分配,使其可以获得一个或多个(所述多个应当等于或者小于数据流水线计算路径的个数)可以单独进行并行计算的参数。非线性参数获取模块与数据流水线计算路径一一对应,数量上应当一致,确保每条数据流水线计算路径都能够连接一个非线性参数获取模块,都具有从非线性参数获取模块中获取可单独进行并行计算的参数进行单独计算的功能。
进一步地,如图3所示,每个数据流水线计算路径包括顺次连接的并均与配置控制器连接的树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元;树状结构的乘法累加单元与数据路径连接、树状参数路径连接;线性结构的乘法累加单元与线性参数路径连接;非线性结构的乘法累加单元与非线性参数路径连接。所述的树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元都属于乘法累加器。
来自数据获取模块的数据计算部分的数据和来自树状参数获取模块的参数计算部分的参数输入到同一数据流水线计算路径中的树状结构的乘法累加单元进行处理后再将处理后得到的数据输入至该数据流水线计算路径的线性结构的乘法累加单元或者非线性结构的乘法累加单元或者是作为最终计算结果数据输出该数据流水线计算路径外。该数据流水线计算路径的线性结构的乘法累加单元将接收到该数据流水线计算路径中的树状结构的乘法累加单元处理后得到的数据和来自线性参数路径的参数计算部分的参数进行处理后再将处理后得到的数据输入到非线性结构的乘法累加单元或者作为最终计算结果输出该数据流水线计算路径外。非线性结构的乘法累加单元将树状结构的乘法累加单元处理后得到的数据或线性结构的乘法累加单元处理后得到的数据进行处理后再作为最终计算结果输出该数据流水线计算路径外。
一个神经网络算法通常由多种不同类型的神经网络计算层组成,如卷积、池化、线性激活、非线性激活、全连接等。本发明所述的数据流水线处理器系统提供了树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元,可以匹配大部分的神经网络计算层,如卷积、池化、线性激活、非线性激活、全连接等计算层,故而该数据流水线计算路径能够通用于神经网络算法计算。同时所述数据流水线处理器系统一体化集成了树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元,可以使得计算高效、简单,使得运行该数据流水线处理器系统的计算电路可以运行在较高的频率,再配合高效的数据控制系统(包括高效的软件编译器系统),可以实现较高的乘法累加单元利用率。同时,本发明的多个数据流水线计算路径能够提高数据和参数的处理效率以及数据路径、树状参数路径、线性参数路径以及非线性参数路径的利用效率。
作为一种优选的实施方式,如图4所示,所述树状结构的乘法累加单元包括均与配置控制器连接的m个乘法器和n个加法器,m>0,n>0;m个乘法器分别与树状参数路径、数据路径连接,分别将来自树状参数路径的参数计算部分的参数和来自数据路径的数据计算部分的数据相乘后输出结果到加法器;n个加法器用于并行和/或串行计算,将来自乘法器的输出结果累加并输出数据至位于同一个数据流水线计算路径的线性结构的乘法累加单元或非线性结构的乘法累加单元或作为处理后的最终计算结果输出数据流水线计算路径。所述树状结构的乘法累加单元可以将接收到的参数和/或者数据相乘后累加。因此,本发明可以用于例如神经网络计算中的平均池化层(平均池化层的主要作用是把临近数据乘法累加在一起后获得新结果)的计算。
具体地,每一数据流水线计算路径的树状结构的乘法累加单元的m个乘法器分别接收到一个来自数据路径的数据计算部分的数据以及一个来自树状参数路径的参数计算部分的参数并进行相乘后得到的m个结果再将其输出至n个加法器中,加法器将m个结果进行累加后得到的数据结果输出到同一数据流水线计算路径的线性结构的乘法累加单元中或输出到同一数据流水线计算路径的非线性结构的乘法累加单元中或作为处理后的最终计算结果输出该数据流水线计算路径外。
优选地,当实际计算中不需要进行相乘后累加的计算时,树状结构的乘法累加单元可以利用配置控制器设置为旁路模式。在具体实施过程中,树状结构的乘法累加单元中的乘法器和加法器根据实际情况进行数量的设置。树状结构的乘法累加单元的旁路模式可以采用如下方式实现:配置乘法累加单元的m个乘法器的只有一个有效输入数据(如图3中左边第一路),该输入数据直接赋值给输出数据,而不经过树状结构内部的乘法器和加法器。
作为一种优选的实施方式,如图5所示,所述线性结构的乘法累加单元包括均与配置控制器连接的乘法器与加法器;所述乘法器分别与线性参数路径、位于同一个数据流水线计算路径的树状结构的乘法累加单元连接,将来自线性参数路径的参数计算部分的一个和来自树状结构的乘法累加单元的一个数据相乘再输出结果到加法器中;加法器将接收乘法器的输出结果与来自参数路径的另一个参数相加后输出数据至位于同一个数据流水线计算路径的非线性结构的乘法累加单元或作为处理后的最终计算结果输出该数据流水线计算路径外。所述线性结构的乘法累加单元可以将一个参数或数据与另一个参数或数据相乘后再与第三个参数或数据相加。因此,乘法累加单元可以用于线性计算。
同一数据流水线计算路径的线性结构的乘法累加单元的乘法器将接收到的来自同一数据流水线计算路径的树状结构的乘法累加单元的数据与一个来自线性参数路径的参数计算部分的参数相乘后所得到的数据输出到该线性结构的乘法累加单元的加法器中,该线性结构的乘法累加单元的加法器将来自同一线性结构的乘法累加单元的乘法器的数据和来自线性参数路径的参数计算部分的一个参数并进行相加后得到数据结果输出到同一数据流水线计算路径的非线性结构的乘法累加单元或作为处理后的最终计算结果输出该数据流水线计算路径外。
优选地,当实际计算中不需要进行线性计算时,线性结构的乘法累加单元可以通过配置控制器设置为旁路模式。
作为一种优选的实施方式如图6所示,所述非线性结构的乘法累加单元使用LUT查找表;非线性结构的乘法累加单元用于将来自非线性参数路径的参数计算部分的参数存储在LUT查找表中;非线性结构的乘法累加单元还用于将接收的来自树状结构的乘法累加单元或者线性结构的乘法累加单元的数据作为地址输入LUT查找表后获得相应内容,所述相应内容作为处理后的最终计算结果输出该数据流水线计算路径外。非线性结构的乘法累加单元可以根据接收的数据作为地址输出所需数据,因此非线性结构的乘法累加单元具有非线性计算功能。
同一数据流水线计算路径的非线性乘法累加单元的LUT查找表接收到来自同一数据流水线路径的树状结构的乘法累加单元的数据或来自同一数据流水线路径的线性结构的乘法累加单元的数据和来自非线性参数路径的参数计算部分的参数,来自非线性参数路径的参数计算部分的参数储存在LUT查找表中,来自同一数据流水线路径的树状结构的乘法累加单元的数据作为地址输入LUT查找表中后获得相应内容后作为处理后的最终数据流出数据流水线计算路径。
一种最优选的实施方式是,每一数据流水线计算路径的树状结构的乘法累加单元的m个乘法器分别接收到一个来自数据路径的数据计算部分的数据以及一个来自树状参数路径的参数计算部分的参数并进行相乘后得到的结果分别输出到(n-1)个加法器中,(n-1)个加法器将接收的m个结果相加后再输入到一个同一乘法累加单元的加法器中进行相加得到的数据再输出到同一数据流水线计算路径的线性结构的乘法累加单元的乘法器中或输出到同一数据流水线计算路径的非线性结构的乘法累加单元的LUT查找表中或作为处理后的最终计算结果输出该数据流水线计算路径外;同一数据流水线计算路径的线性结构的乘法累加单元的乘法器将接收到的来自同一数据流水线计算路径的树状结构的乘法累加单元的数据与一个来自线性参数路径的参数计算部分的参数相乘后所得到的数据输出到该线性结构的乘法累加单元的加法器中,该线性结构的乘法累加单元的加法器将来自同一线性结构的乘法累加单元的乘法器的数据和来自线性参数路径的参数计算部分的一个参数并进行相加后得到数据结果输出到同一数据流水线计算路径的非线性结构的乘法累加单元的LUT查找表或作为处理后的最终计算结果输出该数据流水线计算路径外;同一数据流水线计算路径的非线性乘法累加单元的LUT查找表接收到来自同一数据流水线路径的树状结构的乘法累加单元的数据或来自同一数据流水线路径的线性结构的乘法累加单元的数据和来自非线性参数路径的参数计算部分的参数,来自非线性参数路径的参数计算部分的参数储存在LUT查找表中,来自同一数据流水线路径的树状结构的乘法累加单元的数据作为地址输入LUT查找表中后获得相应内容后作为处理后的最终计算结果输出该数据流水线计算路径外。
在实际应用中,可以根据实际的计算需求,通过配置控制器将某一个或某两个乘法累加器设置为旁路模式,也就是在计算模式下设置为旁路模式的乘法累加单元不接收数据和参数,也不参与到当前的计算中。
在具体实施过程中,所述系统还包括数据集中器,所述数据集中器分别与各个数据流水线计算路径连接,用于将各个数据流水线计算路径的最终计算结果集中缓存并重排后输出;或者还包括直接存储器写模块;所述直接存储器写模块分别与各个数据流水线计算路径连接,用于接收各个数据流水线计算路径的最终计算结果并输出。优选地,所述直接存储器写模块还可以与数据集中器相连接,所述数据集中器分别与各个数据流水线计算路径连接,用于将各个数据流水线计算路径的最终计算结果集中缓存并重排后输出至直接存储器写模块。具体实施过程中,所述数据集中器还能够将来自数据流水线计算路径的数据集中缓存并进行重新排列后以预先设定的正确顺序输出。
实施例2
本实施例利用实施例1所述的数据流水线处理器系统进行一次神经网络算法计算。如图7所示,某个神经网络算法包括卷积计算层conv1、平均池化层pool1以及非线性激活函数mish1,本实施例主要是对于平均池化层pool1以及非线性激活函数mish1的计算,其中平均池化层pool1的作用是把临近数据乘法累加在一起从而获得新结果,故而适合于用树状结构的乘法累加单元进行计算。非线性激活函数mish1的数学表达为f(x)=x×sigmoid(βx),故而适合于用非线性结构的乘法累加单元进行计算。由于本实施例中对于平均池化层pool1以及非线性激活函数mish1的计算并没有用到线性计算功能,故而利用配置控制器将数据流水线计算路径结构中的线性结构的乘法累加单元设置为旁路模式,线性结构的乘法累加单元的旁路模式可以采用如下方式:将线性结构的乘法累加单元的输入数据直接赋值给输出数据,而不经过线性结构内部的乘法器和加法器。
外部的编译器根据数据流水线计算路径结构中的计算资源的可用情况,把上述多个不同类型的神经网络计算层(平均池化层pool1以及非线性激活函数mish1)整合(映射)到一次所述单线程数据流水线系统中。
如图7所示的数据流水线处理器系统的一次数据流计算包含配置和计算两部分操作,其中,首先进行配置操作。
配置控制器的配置操作如下:
S1.配置数据路径结构的数据存储访问模块和数据紧耦合内存,使其指向卷积计算层conv1计算输出数据的地址,并且配置数据存储访问模块和数据紧耦合内存进行数据获取以及存储操作。具体实施过程中,配置控制器还可以按照预先设置的正确的数据尺寸进一步配置数据存储访问模块和数据紧耦合内存的数据获取操作和存储操作。
S2.配置数据分配器和至少两个数据获取模块,配置数据分配器将来自数据紧耦合内存的数据以预先设置的方式进行分配得到至少两个可用于独立并行计算的数据计算部分,例如,如图2所示,在本实施例中所述来自数据紧耦合内存的数据将按照高H的方向进行分配得到至少两个可用于独立并行计算的数据计算部分。并配置至少两个数据获取模块分别获取一个数据计算部分并将其输入到不同的数据流水线计算路径中进行计算。
S3.配置树状参数存储访问模块和树状参数紧耦合内存,使其指向平均池化层pool1参数的地址,并配置树状参数存储访问模块和树状参数紧耦合内存进行参数获取以及存储操作。具体实施过程中,配置控制器还可以按照预先设置的正确的数据尺寸进一步配置树状参数存储访问模块和树状参数紧耦合内存的数据获取操作和存储操作。
S4.配置树状参数分配器和至少两个树状参数获取模块,配置树状参数分配器将来自树状参数紧耦合内存的参数以预先设置的方式进行分配得到至少两个可用于独立并行计算的参数计算部分,在本实施例中所述来自树状参数紧耦合内存的参数将按照高H的方向进行切分得到至少两个可用于独立并行计算的参数计算部分。并配置至少两个树状参数获取模块分别获取一个参数计算部分并将其输入到不同的数据流水线计算路径中进行计算。
S5.配置非线性参数存储访问模块和非线性参数紧耦合内存,使其指向非线性激活函数mish1的地址,并配置非线性参数存储访问模块和非线性参数紧耦合内存进行参数获取以及存储操作。具体实施过程中,配置控制器还可以按照预先设置的正确的数据尺寸进一步配置非线性参数存储访问模块和非线性参数紧耦合内存的数据获取操作和存储操作。
S6.配置非线性参数分配器和至少两个非线性参数获取模块,配置非线性参数分配器将来自非线性参数紧耦合内存的参数以预先设置的方式进行分配得到至少两个可用于独立并行计算的参数计算部分,在本实施例中所述来自非线性参数紧耦合内存的参数将按照高H的方向进行分配得到至少两个可用于独立并行计算的参数计算部分。并配置至少两个非线性参数获取模块分别获取一个参数计算部分并将其输入到不同的数据流水线计算路径中进行计算。
S7.配置树状结构的乘法累加单元为计算模式,使树状结构的乘法累加单元参与计算。
S8.配置线性结构的乘法累加单元为旁路(Bypass)模式,使线性结构的乘法累加单元不参与计算。
S9.配置非线性结构的乘法累加单元为计算模式,并配置数据流水线计算路径结构中非线性结构的乘法累加单元的LUT查找表的内容。
S10.配置直接存储器写模块,使其指向非线性激活函数mish1计算输出数据的地址,并且按照预先设置的正确的数据尺寸将计算结果输出。
配置操作结束后数据以及参数开始进入数据流水线处理器系统进行计算。
数据路径包括均与配置控制器连接的顺次连接的数据存储访问模块、数据紧耦合内存、数据分配器以及至少两个数据获取模块;至少两个数据获取模块分别与数据分配器连接,每个数据获取模块对应连接一个数据流水线计算路径;所述数据存储访问模块用于从外部设备获取计算所需数据;所述数据紧耦合内存用于存储数据存储访问模块所获得的计算所需数据并输入到数据分配器;所述数据分配器将计算所需数据分配为至少两个数据计算部分并以一一对应的方式输入到至少两个数据获取模块;至少两个数据获取模块获取到数据计算部分后分别输入到与之相连的数据流水线计算路径的树状结构的乘法累加单元的乘法器中。
树状参数路径包括顺次连接的树状参数存储访问模块、树状参数紧耦合内存、树状参数分配器以及至少两个树状参数获取模块;至少两个树状参数获取模块分别与树状参数分配器连接,每个树状参数获取模块对应连接一个数据流水线计算路径;所述树状参数存储访问模块用于从外部设备获取计算所需参数;所述树状参数紧耦合内存用于存储树状参数存储访问模块所获得的计算所需参数并输入到树状参数分配器;所述树状参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个树状参数获取模块;至少两个树状参数获取模块获取到参数后分别输入到与之相连的数据流水线计算路径的树状结构的乘法累加单元的乘法器以及加法器中。
非线性参数路径包括顺次连接的非线性参数存储访问模块、非线性参数紧耦合内存、非线性参数分配器以及至少两个非线性参数获取模块;至少两个非线性参数获取模块分别与非线性参数分配器连接,每个非线性参数获取模块对应连接一个数据流水线计算路径;所述非线性参数存储访问模块用于从外部设备获取计算所需参数;所述非线性参数紧耦合内存用于存储非线性参数存储访问模块所获得的计算所需参数并输入到非线性参数分配器;所述非线性参数分配器将计算所需参数分配为至少两个计算部分并以一一对应的方式输入到至少两个非线性参数获取模块;至少两个非线性参数获取模块获取到参数后分别存储到与之相连的数据流水线计算路径树状结构的乘法累加单元的LUT查找表中。
每一数据流水线计算路径的树状结构的乘法累加单元的m个乘法器分别接收到一个来自数据路径的数据计算部分的数据以及一个来自树状参数路径的参数计算部分的参数并进行相乘后得到的结果分别输出到n个加法器进行累加,累加后的数据再输出到同一数据流水线计算路径的非线性结构的乘法累加单元的LUT查找表中;同一数据流水线计算路径的非线性乘法累加单元的LUT查找表接收到来自同一数据流水线路径的树状结构的乘法累加单元的数据和来自非线性参数路径的参数计算部分的参数,来自非线性参数路径的参数计算部分的参数储存在LUT查找表中,来自同一数据流水线路径的树状结构的乘法累加单元的数据作为地址输入LUT查找表中后获得相应内容后作为处理后的最终数据流出数据流水线计算路径。如此,计算所需的参数以及数据流过了各个数据流水线计算路径。
在数据流水线计算路径结构之后可以连接直接存储器写模块,通过直接存储器写模块将数据流水线计算路径结构的最终计算结果输出至预先设置的非线性激活函数mish1计算输出数据的地址。
也可以在数据流水线计算路径结构之后连接数据集中器,通过数据集中器将接收到的数据流水线计算路径结构的最终计算结果输出。优选地,数据集中器可以将接收到的最终数据重新排列并以预先设置的一定的顺序输出至预先设置的非线性激活函数mish1计算输出数据的地址。
也可以在数据流水线计算路径结构之后连接数据集中器,在数据集中器后连接直接存储器写模块,数据集中器将接收到的数据流水线计算路径结构的最终计算结果输出至直接存储器写模块,直接存储器写模块再将接收到的来自数据集中器的数据输出至预先设置的非线性激活函数mish1计算输出数据的地址。
通过此方式可以完成神经网络的计算。本发明的数据流水线处理器系统通过配置控制器的配置,利用多条数据流水线计算路径的树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元实现较高的乘法累加单元利用率。
在计算操作过程中,再无任何指令输入或配置输入的过程,计算操作所需的数据由数据路径不断输入,计算操作所需参数由树状参数路径和非线性参数路径不断输入,数据之间的对其和同步由数据分配器和数据获取模块共同维护并自动协商。
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (11)

1.一种数据流水线处理器系统,其特征在于,包括至少两个数据流水线计算路径、参数路径、数据路径、配置控制器;
所述数据路径以及参数路径为至少两个数据流水线计算路径分别提供数据和参数;
至少两个数据流水线计算路径对数据路径以及参数路径分别提供的数据和参数进行运算后,输出最终计算结果数据;
配置控制器与参数路径、数据路径以及数据流水线计算路径连接,用于获取配置信息后对参数路径、数据路径以及数据流水线计算路径进行配置。
2.根据权利要求1所述的一种数据流水线处理器系统,其特征在于,所述数据路径包括至少两个数据获取模块以及顺次连接的数据存储访问模块、数据紧耦合内存、数据分配器;
至少两个数据获取模块分别与数据分配器连接,每个数据获取模块对应连接一个数据流水线计算路径;
所述数据存储访问模块用于从外部设备获取计算所需数据;
所述数据紧耦合内存用于存储数据存储访问模块所获得的计算所需数据并输入到数据分配器;
所述数据分配器将计算所需数据分配为至少两个数据计算部分并以一一对应的方式输入到至少两个数据获取模块;
至少两个数据获取模块获取到数据计算部分后分别输入到与之相连的数据流水线计算路径。
3.根据权利要求1所述的数据流水线处理器系统,其特征在于,所述参数路径包括均与各个数据流水线计算路径连接的树状参数路径、线性参数路径以及非线性参数路径。
4.根据权利要求3所述的数据流水线处理器系统,其特征在于,所述树状参数路径包括至少两个树状参数获取模块以及顺次连接的树状参数存储访问模块、树状参数紧耦合内存、树状参数分配器;
至少两个树状参数获取模块分别与树状参数分配器连接,每个树状参数获取模块对应连接一个数据流水线计算路径;
所述树状参数存储访问模块用于从外部设备获取计算所需参数;
所述树状参数紧耦合内存用于存储树状参数存储访问模块所获得的计算所需参数并输入到树状参数分配器;
所述树状参数分配器将计算所需参数分配为至少两个参数计算部分并以一一对应的方式输入到至少两个树状参数获取模块;
至少两个树状参数获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径。
5.根据权利要求3所述的数据流水线处理器系统,其特征在于,所述线性参数路径包括至少两个线性参数获取模块以及顺次连接的线性参数存储访问模块、线性参数紧耦合内存、线性参数分配器;
至少两个线性参数获取模块分别与线性参数分配器连接,每个线性参数获取模块对应连接一个数据流水线计算路径;
所述线性参数存储访问模块用于从外部设备获取计算所需参数;
所述线性参数紧耦合内存用于存储线性参数存储访问模块所获得的计算所需参数并输入到线性参数分配器;
所述线性参数分配器将计算所需参数分配为至少两个参数计算部分并以一一对应的方式输入到至少两个线性参数获取模块;
至少两个线性参数获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径。
6.根据权利要求3所述的数据流水线处理器系统,其特征在于,所述非线性参数路径包括至少两个非线性参数获取模块以及顺次连接的非线性参数存储访问模块、非线性参数紧耦合内存、非线性参数分配器;
至少两个非线性参数获取模块分别与非线性参数分配器连接,每个非线性参数获取模块对应连接一个数据流水线计算路径;
所述非线性参数存储访问模块用于从外部设备获取计算所需参数;
所述非线性参数紧耦合内存用于存储非线性参数存储访问模块所获得的计算所需参数并输入到非线性参数分配器;
所述非线性参数分配器将计算所需参数分配为至少两个参数计算部分并以一一对应的方式输入到至少两个非线性参数获取模块;
至少两个非线性参数获取模块获取到参数计算部分后分别输入到与之相连的数据流水线计算路径。
7.根据权利要求3到6任一项所述的数据流水线处理器系统,其特征在于,每个数据流水线计算路径包括顺次连接并均与配置控制器连接的树状结构的乘法累加单元、线性结构的乘法累加单元、非线性结构的乘法累加单元;
树状结构的乘法累加单元与数据路径、树状参数路径连接;
线性结构的乘法累加单元与线性参数路径连接;
非线性结构的乘法累加单元与非线性参数路径连接。
8.根据权利要求7所述的数据流水线处理器系统,其特征在于,所述树状结构的乘法累加单元包括均与配置控制器连接的m个乘法器和n个加法器,m>0,n>0;
m个乘法器分别与树状参数路径、数据路径连接,分别将来自树状参数路径的参数计算部分的一个参数和来自数据路径的数据计算部分的一个数据相乘后输出结果到加法器;
n个加法器用于并行和/或串行计算,将来自乘法器的输出结果累加并输出数据至位于同一个数据流水线计算路径的线性结构的乘法累加单元或非线性结构的乘法累加单元或作为处理后的最终计算结果输出。
9.根据权利要求7所述的数据流水线处理器系统,其特征在于,所述线性结构的乘法累加单元包括均与配置控制器连接的乘法器与加法器;
所述乘法器分别与线性参数路径、位于同一个数据流水线计算路径的树状结构的乘法累加单元连接,将来自线性参数路径的一个参数和来自树状结构的乘法累加单元的一个数据相乘再输出结果到加法器中;
加法器将接收乘法器的输出结果与来自参数路径的另一个参数相加后输出数据至位于同一个数据流水线计算路径的非线性结构的乘法累加单元或作为处理后的最终计算结果输出。
10.根据权利要求7所述的数据流水线处理器系统,其特征在于,所述非线性结构的乘法累加单元使用LUT查找表;
非线性结构的乘法累加单元用于将来自非线性参数路径的参数存储在LUT查找表中;
非线性结构的乘法累加单元还用于将接收的来自树状结构的乘法累加单元或者线性结构的乘法累加单元的数据作为地址输入LUT查找表后获得相应内容,所述相应内容作为处理后的最终计算结果输出。
11.根据权利要求1-6、8-10任一项所述的一种数据流水线处理器系统,其特征在于,还包括数据集中器,所述数据集中器分别与各个数据流水线计算路径连接,用于将各个数据流水线计算路径的最终输出结果集中缓存并重排后输出;
或者还包括直接存储器写模块;所述直接存储器写模块分别与各个数据流水线计算路径连接,用于接收各个数据流水线计算路径的最终计算结果并输出。
CN202010967991.6A 2020-09-15 2020-09-15 一种数据流水线处理器系统 Active CN112052042B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010967991.6A CN112052042B (zh) 2020-09-15 2020-09-15 一种数据流水线处理器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010967991.6A CN112052042B (zh) 2020-09-15 2020-09-15 一种数据流水线处理器系统

Publications (2)

Publication Number Publication Date
CN112052042A true CN112052042A (zh) 2020-12-08
CN112052042B CN112052042B (zh) 2023-08-15

Family

ID=73604001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010967991.6A Active CN112052042B (zh) 2020-09-15 2020-09-15 一种数据流水线处理器系统

Country Status (1)

Country Link
CN (1) CN112052042B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088800A (en) * 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US6230114B1 (en) * 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
CN101238455A (zh) * 2005-08-11 2008-08-06 科莱索尼克公司 包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器
CN105278920A (zh) * 2014-07-09 2016-01-27 英特尔公司 用于实现具有迭代依赖条件的迭代的向量环路的指令
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088800A (en) * 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US6230114B1 (en) * 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
CN101238455A (zh) * 2005-08-11 2008-08-06 科莱索尼克公司 包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器
CN105278920A (zh) * 2014-07-09 2016-01-27 英特尔公司 用于实现具有迭代依赖条件的迭代的向量环路的指令
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法

Also Published As

Publication number Publication date
CN112052042B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
JP6821002B2 (ja) 処理装置と処理方法
Yin et al. A high energy efficient reconfigurable hybrid neural network processor for deep learning applications
CN105528191B (zh) 数据累加装置、方法及数字信号处理装置
CN110276450A (zh) 基于多粒度的深度神经网络结构化稀疏系统和方法
CN105487838A (zh) 一种动态可重构处理器的任务级并行调度方法与系统
CN110163356A (zh) 一种计算装置及方法
CN110383300A (zh) 一种计算装置及方法
CN112580792B (zh) 一种神经网络多核张量处理器
CN112051981B (zh) 一种数据流水线计算路径结构及单线程数据流水线系统
Li et al. Research and implementation of parallel artificial fish swarm algorithm based on ternary optical computer
CN112052042B (zh) 一种数据流水线处理器系统
Shah et al. An efficient sparse matrix multiplication for skewed matrix on gpu
Lin et al. swFLOW: A dataflow deep learning framework on sunway taihulight supercomputer
CN111178492A (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
Garba et al. Asymptotic peak utilisation in heterogeneous parallel CPU/GPU pipelines: a decentralised queue monitoring strategy
Wang et al. A novel parallel algorithm for sparse tensor matrix chain multiplication via tcu-acceleration
CN114117896A (zh) 面向超长simd管线的二值规约优化实现方法及系统
Thuerck Supporting irregularity in throughput-oriented computing by SIMT-SIMD integration
CN111522776A (zh) 一种计算架构
Chen et al. Edge FPGA-based Onsite Neural Network Training
CN115857873B (zh) 乘法器、乘法计算方法、处理系统及存储介质
US11714649B2 (en) RISC-V-based 3D interconnected multi-core processor architecture and working method thereof
Lei et al. MIC-THPCM: MIC-based heterogeneous parallel optimization for axial compressor rotor
Miao A Review on Important Issues in GCN Accelerator Design
Chaudhary et al. FPGA-based Pipelined LSTM accelerator with Approximate matrix multiplication technique

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