CN113010213B - 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 - Google Patents

基于阻变忆阻器的精简指令集存算一体神经网络协处理器 Download PDF

Info

Publication number
CN113010213B
CN113010213B CN202110406885.5A CN202110406885A CN113010213B CN 113010213 B CN113010213 B CN 113010213B CN 202110406885 A CN202110406885 A CN 202110406885A CN 113010213 B CN113010213 B CN 113010213B
Authority
CN
China
Prior art keywords
module
instruction
data
submodule
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110406885.5A
Other languages
English (en)
Other versions
CN113010213A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202110406885.5A priority Critical patent/CN113010213B/zh
Publication of CN113010213A publication Critical patent/CN113010213A/zh
Application granted granted Critical
Publication of CN113010213B publication Critical patent/CN113010213B/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/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/30098Register arrangements
    • 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
    • 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

Abstract

本发明提出一种基于阻变忆阻器的精简指令集存算一体神经网络协处理器,属于计算机处理器领域。该协处理器包括:指令存储模块、数据存储模块、取指模块、执行模块、XB模块、算术逻辑模块、访存模块。所述XB模块中包括由ReRAM器件构成的阵列Crossbar。其中,指令存储模块、数据存储模块和取指模块分别与上位机CPU连接,指令存储模块连接取指模块,取指模块连接执行模块,执行模块分别连接访存模块和算术逻辑模块,访存模块分别连接数据存储模块和XB模块。该协处理器的指令为固定长度为32位的精简指令集。本发明根据指令调度的方式辅助CPU实现加速神经网络计算,具有低功耗、计算速度快、硬件开销小等优势。

Description

基于阻变忆阻器的精简指令集存算一体神经网络协处理器
技术领域
本发明属于计算机处理器领域,具体涉及一种基于阻变忆阻器的精简指令集存算一体神经网络协处理器。
背景技术
当前,人工智能(Artificial Intelligence,AI)领域迎来了飞速发展的浪潮,在图像识别、语音识别等领域取得了巨大的成就。人工智能本质基于深度学习(Deeplearing)的运算,需要数据、算法以及算力的支持。随着人工智能领域对医疗、教育、金融各个领域的不断深入,国际上面也掀起了研究针对神经网络计算芯片的热潮,用以提升当前硬件处理器的算力。谷歌(Google)的张量处理芯片(Tensoe Processing Unit,TPU),国内寒武纪公司提出的MLU系列芯片等,都是为了加速神经网络计算而设计的协处理芯片,这些又被称作为神经网络芯片((Neural-network Processing Unit,NPU),NPU作为协处理器辅助CPU完成神经网络计算加速工作。在NPU的设计中,关键是加速深度神经网络计算中普遍存在的大量乘累加(Multiplication Accmulation,MAC)操作,一般来说,当前主要的NPU技术思路主要有:通过近内存计算来降低访存功耗,提高带宽,降低计算功耗;通过大量片内堆叠并行,使用可复用的算子单元来提升处理器性能。但是该技术路径的进一步发展逐渐面临着严峻的挑战,主要有以下原因;
1.神经网络规模逐渐增大,带来了模型参数规模的激增,随之带来的是硬件资源开销越来越大。
2.目前的计算机架构基于上个世纪提出的冯诺依曼架构,其主要特征是存储设备和处理器相互分离,因此计算机在处理任务时候,需要实现大量的存储设备和处理器之间的数据搬运---一方面需要将任务需要的数据信息从存储器中搬运到处理器进行计算,另外一方面也需要把经过处理器处理完成的数据信息搬运到存储设备,来来回回的访存操作极大地加大了计算机的功耗,降低了其能效。针对神经网络运算这种处理数据为中心的时候,将带来巨大的功耗问题,使得能效极低。
3.硬件处理器的计算性能提升也存在瓶颈。一方面,随着半导体工艺进入7nm节点,摩尔定律逐渐失效,制造工艺发展逐渐缓慢,成本升高。另一方面,在摩尔定律下,芯片的集成度越来越高,热消耗会给芯片带来巨大的限制。
由于上述的技术限制,当前人工智能加速芯片很难取得进一步的突破,迫切需要技术革新来实现新的技术思路。
近年来,仿生学的兴起让科学家将解决问题思路转移到模拟人脑的计算中。不同于传统的处理器,人脑仅仅只需要20瓦功耗就可以出色地实现日常生活各个场景下的智能任务处理。研究表明人脑具有高并行度的存算一体系统,不同于冯诺依曼架构的存储单元和计算单元的分离,人脑实现了存储功能和计算功能的融合,在任务处理中,不需要大量数据的搬运。类脑运算成为了突破冯诺依曼“存储墙”瓶颈有效途径。
忆阻器件是类突触结构,可以根据施加在其上的激励信号,实现电导数值的调节变化。阻变忆阻器(Resistive Random Access Memory,ReRAM)作为忆阻器中研究较为广泛的一种,可以根据其上下两级施加的不同电压可以变换其电导值,根据这个特性,ReRAM可以作为实现存储器和处理器一体化“存算一体”芯片的基本单元。
ReRAM器件实现存算一体计算的原理如图1所示。将ReRAM器件按照交叉阵列(Crossbar)形式组织在一起,将向量编码为对应的读电压或者脉冲个数施加到Crossbar阵列不同的列上,这样就将矩阵中对应的元素值一一对应编码为Crossbar中对应ReRAM器件的电导值。由欧姆定律可以得到,此时器件输出的电流值就是电压值和电导值的乘积计算结果;又根据基尔霍夫定律,则各行的总的输出电流就应该等于该行中每一个器件电流之和,即完成了卷积运算。成累加计算公式如式(1-1)可以看到,整个计算过程不需要数据的搬移,在电导和电压施加的一个瞬间就可以完成卷积运算。极大降低了传统矩阵运算的复杂度,降低了系统的功耗。
Figure BDA0003022645500000021
发明内容
本发明的目的是为克服当前NPU协处理器发展中硬件开销大、“存储墙”瓶颈、集成难度高等问题,提出一种基于阻变忆阻器的精简指令集存算一体神经网络协处理器。本发明根据指令调度的方式辅助CPU实现加速神经网络计算,具有低功耗、计算速度快、硬件开销小等优势。
本发明提出一种基于阻变忆阻器的精简指令集存算一体神经网络协处理器,其特征在于,包括:指令存储模块、数据存储模块、取指模块、执行模块、XB模块、算术逻辑模块、访存模块;其中,指令存储模块、数据存储模块和取指模块分别与上位机CPU连接,指令存储模块连接取指模块,取指模块连接执行模块,执行模块分别连接访存模块和算术逻辑模块,访存模块分别连接数据存储模块和XB模块;所述XB模块包括:由阻变忆阻器ReRAM构成的阵列Crossbar、地址选择子模块、电压子模块、电流子模块、数/模转换子模块;
所述指令存储模块用于存储来自上位机CPU的指令,然后供取指模块从中取出指令;
所述数据存储模块被上位机CPU和访存模块读写,上位机CPU将协处理器计算需要的数据存储到数据存储模块中或者读取数据模块存储的协处理器计算的结果;执行模块通过访存模块取出数据存储模块中的计算需要的数据或者将计算结果通过访存模块存储到数据存储模块中;
所述取指模块接收来自上位机CPU的使能信号,在使能时候根据执行模块中程序计数器指定的指令地址,从指令存储模块中不断取出相应的指令然后发送给执行模块,然后执行模块修改程序计数器的值,让其指向下一条指令的地址,取指模块根据程序计数器指向的地址取下一条指令;
所述访存模块,用于执行对数据存储模块和XB模块的访问和存储的任务,访存模块根据执行模块的指令访问数据存储模块读取计算需要的数据,访存模块从执行模块获取计算结果并通过访问数据存储模块将该结果存储在数据存储模块上供CPU读取;访存模块还用于从执行模块获取卷积运算任务的数据并将该数据发送到XB模块上,访存模块通过访问XB模块读取XB模块执行卷积运算任务的结果然后发送给执行模块;
所述执行模块用于将从取指模块获取指令,将指令内容发送给访存模块并从访存模块获取该指令对应的数据,然后执行模块对获取的数据进行处理并将计算结果发送给访存模块,通过访存模块将该结果存储在数据存储模块上;其中,若指令内容为逻辑计算任务,则执行模块将该指令对应的数据发送给算术逻辑模块并从算术逻辑模块获取对应的计算结果;若指令内容为卷积运算任务,则执行模块通过访存模块访问XB模块将该任务对应的数据发送到XB模块上,然后执行模块通过访存模块读取该任务的计算结果;
所述算术逻辑模块用以从执行模块接收逻辑计算任务的数据并将计算结果发送给执行模块;
所述XB模块用于通过访存模块的访问配置执行模块发送的卷积运算任务的数据,进行卷积运算后,访存模块从XB模块读取运算结果然后发送给执行模块。
本发明的特点及有益效果在于:
通过本发明实现的精简指令集协处理器,可以借助上位机CPU的指令调控,实现协处理中的各种算子操作。同时,借助ReRAM阵列,借助欧姆定律和基尔霍夫电流定律实现矩阵乘累加,在存储器中实现快速而准确的卷积运算,用于加速神经网络中存在的大量乘累加计算,减少了数据搬运带来了功耗和时间开销,节省了硬件消耗。
附图说明
图1为阻变忆阻器实现存算一体计算原理图。
图2为本发明的基于阻变忆阻器的精简指令集存算一体神经网络协处理器的结构示意图。
图3为本发明中XB模块的结构示意图。
具体实施方式
本发明提出一种基于阻变忆阻器的精简指令集存算一体神经网络协处理器,结构如图2所示,所述协处理器包括:指令存储模块、数据存储模块、取指模块、执行模块、XB模块、算术逻辑模块、访存模块。其中,指令存储模块、数据存储模块和取指模块分别与上位机CPU连接,指令存储模块连接取指模块,取指模块连接执行模块,执行模块分别连接访存模块和算术逻辑模块,
其中,所述指令存储模块包含有P个存储单元,每个存储单元可以存储8位数据,每1个存储单元对应一个地址。指令存储模块用于存储来自上位机CPU的指令,然后供取指模块从中取出指令。
数据存储模块包括Q个存储单元,每个存储单元可以存储8位数据,每1个存储单元对应一个地址。数据存储模块可以被上位机CPU和访存模块读写,上位机CPU可以将NPU计算需要的数据存储到数据存储模块中或者读取数据模块存储的NPU计算的结果;执行模块可以通过访存模块取出数据存储模块中的计算需要的数据或者将计算结果通过访存模块存储到数据存储模块中,以便给上位机CPU提取。
P、Q皆为大于等于4的整数,一般都为4的倍数,具体大小视情况而定,一般来说P<Q;
所述取指模块接收来自上位机(CPU)的使能信号,在使能时候根据执行模块中程序计数器指定的指令地址,从指令存储模块中不断取出相应的指令然后发送给执行模块,然后执行模块修改程序计数器的值,让其指向下一条指令的地址,取指模块根据程序计数器指向的地址取下一条指令。
所述访存模块,用于执行对数据存储模块和XB模块的访问和存储的任务,访存模块根据执行模块的指令访问数据存储模块读取来自CPU的计算所需数据,访存模块从执行模块获取计算结果并通过访问数据存储模块将该结果存储在数据存储模块上供CPU读取。访存模块还用于从执行模块获取卷积运算任务的数据并将该数据发送到XB模块上,访存模块通过访问XB模块读取XB模块执行卷积运算任务的结果然后发送给执行模块。该访存模块可以借助于向量寄存器实现向量指令操作,即用一条指令,实现对多条数据的读和写,极大加快的访存的效率,让处理器的效率大大提高。
所述执行模块用于将从取指模块获取指令,将指令内容发送给访存模块并从访存模块获取该指令对应的数据,然后执行模块对获取的数据进行处理并将计算结果发送给访存模块,通过访存模块将该结果存储在数据存储模块上;其中,若指令内容为逻辑计算任务,则执行模块将该任务对应的数据发送给算术逻辑模块并从算术逻辑模块获取该任务的计算结果;若指令内容为卷积运算任务,则执行模块通过访存模块访问XB模块将该任务对应的数据发送到XB模块上,然后执行模块通过访存模块读取该任务的计算结果。
所述算术逻辑模块是协处理器中执行非乘累加操作的算子模块,用以从执行模块接收逻辑计算任务的数据并将计算结果发送给执行模块。该算术逻辑模块实现协处理器的逻辑计算任务,既包括常见的与或非、异或操作,也包含加法模块、减法模块,还包括更加复杂的激活函数算子,池化算子,归一化算子。
所述XB模块用于通过访存模块的访问存储执行模块发送的卷积运算任务的数据,进行卷积运算后,访存模块从XB模块读取运算结果然后发送给执行模块。XB模块是NPU中最为核心的模块,它主要组成部分是ReRAM器件构成的阵列Crossbar,Crossbar可以根据访存模块给它传输的数据,配置Crossbar中ReRAM器件的电导,同样可以根据访存模块给它传输的数据,给特定的列上加一定电压,然后通过欧姆定律和基尔霍夫电流定律实现卷积运算。卷积运算公式见(1-1),实现卷积运算原理图如图1所示。
进一步地,所述执行模块包含有32个通用寄存器,执行模块对接收的指令进行译码,翻译指令所指示的具体任务,得到指令需要的操作数寄存器索引,根据该索引从寄存器数组中将操作数读出,将其分发到不同的任务单元(所述任务单元就是指的具体执行任务的模块,其中大部分不在执行模块中,例如在执行寄存器操作时候,因为寄存器就在执行模块里面,所以这个时候任务单元就是指的是执行模块,但是执行访存任务时候,任务单元指的是访存模块,执行一些特殊的算子时候,任务单元指的是算术逻辑模块)中去。执行模块中0号寄存器为32位程序计数器PC寄存器,用以记录下一条待执行指令的片内地址;1号寄存器是专用于表明此时XB模块中Crossbar配置的kernel矩阵的大小的32位寄存器,此寄存器中数据随着往Crossbar中配置的权重矩阵大小而变化,其中[31:16]指示了配置权重kernel矩阵的行数,[15:0]指示了配置权重kernel矩阵的列数。1-23号寄存器均为32位标量寄存器,用以存储中间数据变量;24-27号寄存器均为32位标量寄存器,和28-31号向量寄存器一一对应,分别为该向量寄存器的矩阵大小寄存器,其中[31:16]为规定了该向量寄存器需要读写的对应存储器(包括数据存储模块和XB模块)的行数,[15:0]为规定了该向量寄存器需要读写的对应存储器的列数;28-30号寄存器均为长度为M,宽度为32的向量寄存器,用以实现NPU中的向量指令。31号寄存器为均为长度为S,宽度为8的专用于实现卷积神经网络计算的向量寄存器。M、S均为大于等于4的整数,一般是4的倍数。
XB模块包括由多个ReRAM器件构成的阵列Crossbar、地址选择子模块、电压子模块、电流子模块、数/模转换子模块,结构如图3所示。所述Crossbar分别连接地址选择子模块、电压子模块和电流子模块,电压子模块和电流子模块还分别连接数/模转换子模块。其中Crossbar包括W个ReRAM器件,每个ReRAM器件可以根据其电导值对应的模拟信号值存储8位的数据,每个ReRAM器件对应一个8位存储单元,一个地址单元。在Crossbar中,W个ReRAM器件按照交叉阵列(Crossbar)形式组织成J×K的矩阵形式,其中W=J×K。每一列的ReRAM器件的电压端被来自电压子模块的同一条电压线连接起来,另一端接地;每一行的ReRAM器件都被来自电流子模块的同一条电流线连接起来。根据欧姆定律,每个ReRAM器件的电流值就是其两端电压值和电导值的乘积,根据基尔霍夫电流定律,每一行的电流值就是该行所有器件电流值的累加,综合起来,即实现了卷积运算。地址选择子模块用于控制特定ReRAM器件的行列选择线J×K(行列选择的意思是地址选择子模块选择从哪一行(有J行)、哪一列(有K列)使能,以实现从ReRAM器件的矩阵中选取特定的一个器件使能)根据地址译码,只有被选中的ReRAM器件能够跟电压线连接,使得每个ReRAM器件都可以被灵活调整到合适的电导值;其中,电压子模块负责给每一列的电压线施加不同的电压或者电压脉冲,用以调节每列的电压和每个ReRAM器件的权重值。电流子模块用以接收每一行的电流值,即为卷积运算的结果然后发送给数模转换子模块。数模转换子模块为XB模块跟其他模块的交互单元,该子模块将执行模块通过访存模块存储的任务数据数字信号值转化为模拟信号值,将XB模块卷积运算结果的模拟信号值转化为数字信号值然后供访存模块读取。其中,在具体实际电路中,配置Crossbar权重,即改变Crossbar中ReRAM器件的电导值是一个需要花费大量时间的过程,往往我们在需要进行卷积计算时候,需要先将卷积计算的权重kernel矩阵的参数配置进入Crossbar中,即表现为对应的ReRAM器件的电导值。在进行卷积计算的时候,再将输入矩阵的元素按照一定的次序写入到Crossbar中,表现为Crossbar中每一列上面的电压参数,通过基尔霍夫电流定律和欧姆定律得到对应权重的行电流,即为卷积运算的结果。
进一步地,运行于该协处理器的指令为固定长度为32位的精简指令集,包括基本整数指令模块(用字母I表示)、单精度浮点指令模块(用字母F表示)和双精度浮点指令模块(用字母D表示),协处理器根据自己的应用场景,可以选择用的指令模块用以实现其功能。
其中,指令分为七种指令类型,分别为实现寄存器操作的R型指令、实现读存储的I型指令、实现写存储器的S型指令、实现长立即数操作的U型指令、实现矩阵运算的C型指令、实现神经网络映射的N型指令、实现跳转的J型指令。其中,R型指令包括了加法指令、无符号数比较指令、有符号数比较指令、与指令、或指令、异或指令、右移指令、左移指令;I型指令包括读数据标量指令、立即数加指令、立即数与指令、立即数或指令、立即数异或指令、读取矩阵运算结果标量指令、读取矩阵运算结果向量指令、读数据向量指令。S型指令包括写数据标量指令、写电压参数标量指令、存储器清空指令、写数据向量指令、写电压参数向量指令。U型指令包括寄存器写入指令。C型指令包括卷积运算指令。N型指令包括池化指令、激活函数指令、归一化指令。J型指令包括无条件跳转指令。
更进一步,指令的标准格式为前5位为操作码,规定了指令的基本类型,操作码全部为0表示无效指令。每条指令最多包含三个操作寄存器索引,因为寄存器个数为32个,所以设置寄存器索引位数为5位。一般来说为两个源寄存器,一个目的寄存器,但是针对卷积神经网络运算,包含三个源寄存器。具体操作编码规定了具体指令的操作类型,立即数可以直接参与运算。整个指令中每种类型指令的格式被尽量对齐,方便译码操作。
通过本发明实现的精简指令集协处理器,可以借助CPU的指令调控,实现协处理中的各种算子操作。同时,借助ReRAM阵列,借助欧姆定律和基尔霍夫电流定律实现矩阵乘累加,在存储器中实现快速而准确的卷积运算,用于加速神经网络中存在的大量乘累加计算,减少了数据搬运带来了功耗和时间开销,节省了硬件消耗。
下面展示固定长度为32位基本整数指令模块所含的指令:
表1 R型指令
Figure BDA0003022645500000071
Figure BDA0003022645500000081
表2 I型指令
Figure BDA0003022645500000082
Figure BDA0003022645500000091
表3 S型指令
Figure BDA0003022645500000092
Figure BDA0003022645500000101
表4 C型指令
Figure BDA0003022645500000102
表5 N型指令
Figure BDA0003022645500000103
Figure BDA0003022645500000111
表6 J型指令
Figure BDA0003022645500000112
表7 U型指令
Figure BDA0003022645500000113
以上指令的指令编码如下表所示,在下表中,前5位恒为操作码opcode,规定了指令的类型,其中操作码opcode为00000代表无效指令。rs代表源操作寄存器索引,rd代表目的操作数寄存器,func代表具体操作编码,定义了具体执行的任务。imm代表立即数,是放在指令中能够直接参与计算的数据。
表8 R型指令编码
Figure BDA0003022645500000114
Figure BDA0003022645500000121
表9 I型指令编码
Figure BDA0003022645500000122
表10 S型指令编码
Figure BDA0003022645500000123
表11 C型指令编码
Figure BDA0003022645500000124
表12 N型指令编码
Figure BDA0003022645500000131
表13 J型指令编码
Figure BDA0003022645500000132
表14 U型指令编码
Figure BDA0003022645500000133
为了更好地理解本发明的协处理器在具体指令时候的处理方式,下面根据两个示例进一步说明如下。
实例1:利用向量指令方式,从起始地址开始向XB模块中的Crossbar中配置m×n的权重矩阵,即存储m×n个存储单元。
利用指令vsw可以实现利用向量指令方式,从起始地址开始向XB模块中的中配置m×n的权重矩阵。本实例为了更好说明,规定指令编码为:
表15本发明实施例1的指令编码
imm[11:5] rs2 rs1 func[4:0] imm[4:0] opcode
0000000 11100 00010 00010 00000 00011
取指模块从指令存储模块取到到该指令后,当检测到执行模块处于空闲状态时候,将指令送给执行模块,根据执行模块中程序计数器PC的值开始取下一条指令。执行模块经过译码识别该指令为vsw指令,其中rs1表示的寄存器索引为00010,即标量寄存器2号,rs2表示的寄存器索引为11100,即向量寄存器28号,对应的矩阵大小寄存器为24号寄存器,立即数为12位0,经过扩展(高位补零,不进行符号位扩展)变成32位的0;
执行模块开始执行任务,首先取出标量寄存器2号中存储的32位数据和32位0相加得到起始地址addr;然后取得对应的矩阵大小寄存器24中的32位数据,其中高16位的值为二进制表示的m,低16位值为二进制表示的n,即向量寄存器需要向XB模块中的Crossbar中写入m×n个8位数据。由于每个ReRAM存储单元的宽度为8位,总线宽度为32位,即每次向Crossbar中写入4个存储单元的数据,列地址加4,如果n不是4的倍数,高位补零。每一行写完之后跳转到下一行和初始地址同一列的位置,即行地址加1,列地址恢复为初始地址,重复上述操作直到写完规定大小的数据为止。
实例2:利用卷积运算指令,实现一个j×k输入矩阵,卷积核为m×n矩阵,步长为1的卷积运算。
利用指令vconv可以实现一个j×k输入矩阵,卷积核为m×n矩阵,步长为1的卷积运算。本实例为了更好地说明,规定指令编码为:
表16本发明实施例2的指令编码
padding[2:0] stride[3:0] rs1 rs2 func[4:0] rd 00100
000 0001 00010 11111 00000 11110
取指模块从指令存储模块取到到该指令后,当检测到执行模块处于空闲状态时候,将指令送给执行模块,取指模块根据执行模块汇总程序计数器PC的值开始取下一条指令。执行模块经过译码识别该指令为vconv指令,rs1表示的寄存器索引为00001,即标量寄存器2号;rs2表示寄存器索引为11111,即向量寄存器31号,对应着输入参数矩阵的值,对应的向量矩阵大小寄存器为标量寄存器27号,规定了输入矩阵的大小;rd表示的寄存器索引为11110,即向量寄存器30号,对应着卷积运算输出矩阵,对应的向量矩阵大小寄存器为标量寄存器27号,规定了输出矩阵的大小。立即数为7位0,经过扩展(高位补零,不进行符号位扩展)为32位0。
执行模块开始执行任务,首先取出标量寄存器2号中存储的32位数据和32位0相加得到起始地址addr。其addr低16位表示XB模块中Crossbar输入矩阵输入的起始列数,高16位表示卷积操作的卷积核对应的行数。然后取得输入参数矩阵对应的矩阵大小寄存器27中的32位数据,其中高16位的值为二进制表示的j,低16位值为二进制表示的k,即该卷积运算输入矩阵大小为j×k,读出1号寄存器,即指示卷积核矩阵大小寄存器的值,高16位表示卷积核的行大小,此处记为m,低16位表示卷积核的列大小,此处记为n,即该卷积运算输入矩阵大小为m×n。
根据卷积操作指令中的padding方式和stride长度,计算出目的寄存器30号寄存器的大小,记为p×q,将其写入30寄存器对应的27号寄存器中;根据矩阵卷积运算和ReRAM阵列计算的基本原理,把卷积输入数据矩阵中的参数按照下图表17-19示例所示的方式依次写入到Crossbar中,表现为每列上面的电压值,然后从addr指示的对应行中读出电流值,即为一次卷积运算的值,写入目的寄存器rd中。根据27寄存器指示的目的寄存器的大小,重复p×q次该过程,完成一次完整的卷积操作。其中,Wmn指的是卷积核矩阵中的数据,Amn指的是输入矩阵中的数据,Um指的是加到Crossbar第m列的电压,I指的是Crossbar中该行的总电流。按照表19的顺序,依次将输入矩阵的数据配置成加到Crossbar中每列的电压(一次只能加一行,所以必须进行多次这样的操作,每次配置一行。如第一次配置A11A11A12A13A21.......A33(表19第一行),第二次配置A12A13.A14.......A34(表19第二航天)。这样每次都会在配置卷积核矩阵的那一行得到一个总电流,这就是一次卷积运算的值,最后汇总每次得到的电流值,即拼接为两个矩阵卷积运算之后的矩阵。
表17 3×3卷积核矩阵
W<sub>11</sub> W<sub>12</sub> W<sub>13</sub>
W<sub>21</sub> W<sub>22</sub> W<sub>23</sub>
W<sub>31</sub> W<sub>32</sub> W<sub>33</sub>
表18 5×5输入参数矩阵
A<sub>11</sub> A<sub>12</sub> A<sub>13</sub> A<sub>14</sub> A<sub>15</sub>
A<sub>21</sub> A<sub>22</sub> A<sub>23</sub> A<sub>24</sub> A<sub>25</sub>
A<sub>31</sub> A<sub>32</sub> A<sub>33</sub> A<sub>34</sub> A<sub>35</sub>
A<sub>41</sub> A<sub>42</sub> A<sub>43</sub> A<sub>44</sub> A<sub>45</sub>
A<sub>51</sub> A<sub>52</sub> A<sub>53</sub> A<sub>54</sub> A<sub>55</sub>
表19卷积操作中输入ReRAM阵列元素分布
Figure BDA0003022645500000151

Claims (5)

1.一种基于阻变忆阻器的精简指令集存算一体神经网络协处理器,其特征在于,包括:指令存储模块、数据存储模块、取指模块、执行模块、XB模块、算术逻辑模块、访存模块;其中,指令存储模块、数据存储模块和取指模块分别与上位机CPU连接,指令存储模块连接取指模块,取指模块连接执行模块,执行模块分别连接访存模块和算术逻辑模块,访存模块分别连接数据存储模块和XB模块;所述XB模块包括:由阻变忆阻器ReRAM构成的阵列Crossbar、地址选择子模块、电压子模块、电流子模块、数/模转换子模块;
所述指令存储模块用于存储来自上位机CPU的指令,然后供取指模块从中取出指令;
所述数据存储模块被上位机CPU和访存模块读写,上位机CPU将协处理器计算需要的数据存储到数据存储模块中或者读取数据模块存储的协处理器计算的结果;执行模块通过访存模块取出数据存储模块中的计算需要的数据或者将计算结果通过访存模块存储到数据存储模块中;
所述取指模块接收来自上位机CPU的使能信号,在使能时候根据执行模块中程序计数器指定的指令地址,从指令存储模块中不断取出相应的指令然后发送给执行模块,然后执行模块修改程序计数器的值,让其指向下一条指令的地址,取指模块根据程序计数器指向的地址取下一条指令;
所述访存模块,用于执行对数据存储模块和XB模块的访问和存储的任务,访存模块根据执行模块的指令访问数据存储模块读取计算需要的数据,访存模块从执行模块获取计算结果并通过访问数据存储模块将该结果存储在数据存储模块上供CPU读取;访存模块还用于从执行模块获取卷积运算任务的数据并将该数据发送到XB模块上,访存模块通过访问XB模块读取XB模块执行卷积运算任务的结果然后发送给执行模块;
所述执行模块用于将从取指模块获取指令,将指令内容发送给访存模块并从访存模块获取该指令对应的数据,然后执行模块对获取的数据进行处理并将计算结果发送给访存模块,通过访存模块将该结果存储在数据存储模块上;其中,若指令内容为逻辑计算任务,则执行模块将该指令对应的数据发送给算术逻辑模块并从算术逻辑模块获取对应的计算结果;若指令内容为卷积运算任务,则执行模块通过访存模块访问XB模块将该任务对应的数据发送到XB模块上,然后执行模块通过访存模块读取该任务的计算结果;
所述算术逻辑模块用以从执行模块接收逻辑计算任务的数据并将计算结果发送给执行模块;
所述XB模块用于通过访存模块的访问配置执行模块发送的卷积运算任务的数据,进行卷积运算后,访存模块从XB模块读取运算结果然后发送给执行模块。
2.如权利要求1所述的神经网络协处理器,其特征在于,所述指令存储模块和数据存储模块各包含有多个存储单元,每个存储单元存储8位数据,每个存储单元对应一个地址。
3.如权利要求1所述的神经网络协处理器,其特征在于,所述XB模块包括:由阻变忆阻器ReRAM构成的阵列Crossbar、地址选择子模块、电压子模块、电流子模块、数/模转换子模块;所述Crossbar分别连接地址选择子模块、电压子模块和电流子模块,电压子模块和电流子模块还分别连接数/模转换子模块;其中Crossbar包括W个ReRAM器件,每个ReRAM器件根据其电导值对应的模拟信号值存储8位的数据,每个ReRAM器件对应一个8位存储单元,一个地址单元;在Crossbar中,W个ReRAM器件按照交叉阵列形式组织成J×K的矩阵形式,其中W=J×K;每一列的ReRAM器件的电压端被来自电压子模块的同一条电压线连接起来,另一端接地;每一行的ReRAM器件都被来自电流子模块的同一条电流线连接起来;每个ReRAM器件的电流值是其两端电压值和电导值的乘积,每一行的电流值是该行所有ReRAM器件电流值的累加即为卷积运算结果;地址选择子模块用于控制选定的ReRAM器件的行列选择线,根据地址译码,只有被选中的ReRAM器件跟电压线连接,使得每个ReRAM器件被调整到设定的电导值;电压子模块用于负责给每一列的电压线施加不同的电压或者电压脉冲,以调节每列的电压和每个ReRAM器件的权重值;电流子模块用以接收每一行的电流值,即为卷积运算的结果然后发送给数模转换子模块;数模转换子模块将执行模块通过访存模块存储的任务数据的数字信号值转化为模拟信号值,并将卷积运算结果的模拟信号值转化为数字信号值然后供访存模块读取。
4.如权利要求1-3中任一项所述的神经网络协处理器,其特征在于,该协处理器的指令为固定长度为32位的精简指令集,指令分为七种指令类型,分别为:实现寄存器操作的R型指令、实现读存储的I型指令、实现写存储器的S型指令、实现长立即数操作的U型指令、实现矩阵运算的C型指令、实现神经网络映射的N型指令、实现跳转的J型指令;其中,R型指令包括了加法指令、无符号数比较指令、有符号数比较指令、与指令、或指令、异或指令、右移指令、左移指令;I型指令包括读数据标量指令、立即数加指令、立即数与指令、立即数或指令、立即数异或指令、读取矩阵运算结果标量指令、读取矩阵运算结果向量指令、读数据向量指令;S型指令包括写数据标量指令、写电压参数标量指令、存储器清空指令、写数据向量指令、写电压参数向量指令;U型指令包括寄存器写入指令;C型指令包括卷积运算指令;N型指令包括池化指令、激活函数指令、归一化指令;J型指令包括无条件跳转指令。
5.如权利要求4所述的神经网络协处理器,其特征在于,所述协处理器的指令前5位为操作码opcode,规定指令的类型,其中opcode为00000代表无效指令。
CN202110406885.5A 2021-04-15 2021-04-15 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 Active CN113010213B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110406885.5A CN113010213B (zh) 2021-04-15 2021-04-15 基于阻变忆阻器的精简指令集存算一体神经网络协处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110406885.5A CN113010213B (zh) 2021-04-15 2021-04-15 基于阻变忆阻器的精简指令集存算一体神经网络协处理器

Publications (2)

Publication Number Publication Date
CN113010213A CN113010213A (zh) 2021-06-22
CN113010213B true CN113010213B (zh) 2022-12-09

Family

ID=76389313

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110406885.5A Active CN113010213B (zh) 2021-04-15 2021-04-15 基于阻变忆阻器的精简指令集存算一体神经网络协处理器

Country Status (1)

Country Link
CN (1) CN113010213B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113869504B (zh) * 2021-12-02 2022-08-05 之江实验室 一种基于忆阻器可编程神经网络加速器
CN114399034B (zh) * 2021-12-30 2023-05-02 北京奕斯伟计算技术股份有限公司 用于直接存储器访问装置的数据搬运方法
CN115906735B (zh) * 2023-01-06 2023-05-05 上海后摩智能科技有限公司 基于模拟信号的多比特数存算一体电路、芯片及计算装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582364A (zh) * 2018-10-29 2019-04-05 华中科技大学 基于忆阻器的精简指令集处理器
CN111027690A (zh) * 2019-11-26 2020-04-17 陈子祺 执行确定性推理的组合处理装置、芯片和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582364A (zh) * 2018-10-29 2019-04-05 华中科技大学 基于忆阻器的精简指令集处理器
CN111027690A (zh) * 2019-11-26 2020-04-17 陈子祺 执行确定性推理的组合处理装置、芯片和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于可编程逻辑器件的卷积神经网络协处理器设计;杨一晨等;《西安交通大学学报》;20180710(第07期);全文 *

Also Published As

Publication number Publication date
CN113010213A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN113010213B (zh) 基于阻变忆阻器的精简指令集存算一体神经网络协处理器
US11308398B2 (en) Computation method
US20240118892A1 (en) Apparatuses, methods, and systems for neural networks
CN108427990B (zh) 神经网络计算系统和方法
WO2018192500A1 (zh) 处理装置和处理方法
US11614947B2 (en) Computational memory
KR102486029B1 (ko) 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치
US20210216318A1 (en) Vector Processor Architectures
JP6905573B2 (ja) 計算装置と計算方法
CN112612521A (zh) 一种用于执行矩阵乘运算的装置和方法
US20110029471A1 (en) Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN111582451B (zh) 图像识别层间并行流水线型二值化卷积神经网络阵列架构
US11921814B2 (en) Method and device for matrix multiplication optimization using vector registers
US20200226201A1 (en) Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations
US20200104669A1 (en) Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations
Lou et al. RV-CNN: Flexible and efficient instruction set for CNNs based on RISC-V processors
Geng et al. CQNN: a CGRA-based QNN framework
CN113490914A (zh) 数据处理
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
US20230012127A1 (en) Neural network acceleration
CN113240074B (zh) 一种可重构神经网络处理器
US11941405B2 (en) Computational memory
Hanif et al. Energy-efficient design of advanced machine learning hardware
TW201937490A (zh) 計算記憶體
CN112632464B (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
GR01 Patent grant
GR01 Patent grant