CN111542826A - 支持模拟协处理器的数字架构 - Google Patents

支持模拟协处理器的数字架构 Download PDF

Info

Publication number
CN111542826A
CN111542826A CN201880084392.0A CN201880084392A CN111542826A CN 111542826 A CN111542826 A CN 111542826A CN 201880084392 A CN201880084392 A CN 201880084392A CN 111542826 A CN111542826 A CN 111542826A
Authority
CN
China
Prior art keywords
vmm
memristor
processor
matrix
data
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
CN201880084392.0A
Other languages
English (en)
Inventor
J·古帕塔
N·阿斯雷亚斯
A·马修
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.)
Spero Devices Inc
Original Assignee
Spero Devices Inc
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 Spero Devices Inc filed Critical Spero Devices Inc
Publication of CN111542826A publication Critical patent/CN111542826A/zh
Pending legal-status Critical Current

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
    • G06N3/065Analogue means
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/13Differential equations
    • 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/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • 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
    • 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/30018Bit or string 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Geometry (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Discrete Mathematics (AREA)
  • Operations Research (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

一种协处理器被配置用于执行向量矩阵乘法(VMM)以求解诸如偏微分方程(PDE)的计算问题。可以通过使用模拟纵横阵列调用输入信号与傅里叶基函数的VMM来实现模拟离散傅里叶变换(DFT)。可以通过实现频谱PDE求解方法作为大规模离散化有限差分方法的替代,同时利用通过纵横阵列实现的固有并行性来求解线性和非线性PDE。数字控制器与纵横阵列对接,以将写操作和读操作定向到该纵横阵列。

Description

支持模拟协处理器的数字架构
相关申请
本申请要求于2017年12月29日提交的美国临时申请No.62/611,870的权益。上述申请的全部教导通过引用并入本文。
背景技术
忆阻器是一种充当能够基于施加的电压和电流的历史记录保持内部电阻状态的电阻开关的器件。忆阻器可以存储和处理信息,并提供一些超越常规集成电路技术的性能特征。重要的一类忆阻器件是基于离子运动的双端电阻开关,它是由简单的导体-绝缘体-导体薄膜叠层构造而成的。针对大规模应用,忆阻器器件可以以纵横(crossbar)阵列的形式使用。
发明内容
在示例实施方式中,一种电路包括向量矩阵乘法(VMM)处理器和控制器。所述VMM处理器可以被配置为执行浮点VMM运算,各个浮点VMM处理器包括至少一个忆阻器网络,所述至少一个忆阻器网络具有以纵横结构布置的模拟忆阻器器件的阵列。所述控制器与所述VMM处理器对接并且可以被配置为:a)从存储器取回读取数据;b)基于所述读取数据,确定将被执行的矩阵乘法的类型;c)生成具有特定于将被执行的矩阵乘法的所述类型的格式的输入矩阵;d)确定所述浮点VMM运算的计算精度,并且根据输入矩阵的浮点元素解析符号数据字段、指数数据字段和尾数数据字段,以及e)将输入矩阵数据发送给所述VMM处理器。
响应于所述类型是通用矩阵-矩阵(GEMM)乘法,所述控制器还可以被配置为:1)根据所述读取数据的逐行顺序来生成所述输入矩阵,以及2)将所述输入矩阵施加到所述VMM处理器的输入端,其中,所述VMM处理器还被配置为将所述输入矩阵施加到所述至少一个忆阻器网络。所述VMM处理器的所述输入端可以包括VMM信号处理链,所述链包括数字逻辑块,所述数字逻辑块执行一组顺序功能以准备用于VMM的浮点数据,所述功能包括数据格式化、指数归一化/去归一化以及忆阻器网络映射/逆映射中的至少一者。响应于所述类型是二维(2D)卷积和相关,所述控制器还可以被配置为:1)按照所述读取数据的交叠顺序生成所述输入矩阵,所述交叠顺序表示卷积运算的移位,以及2)将所述输入矩阵施加到所述VMM处理器的输入端,其中,所述VMM处理器还被配置为将所述输入矩阵施加到所述至少一个忆阻器网络。
所述控制器还可以被配置为:a)识别从所述读取数据取回的浮点数的极值的指数;b)根据所述指数确定所述浮点数的其它值的归一化指数,所述其它值是除所述极值以外的值;c)通过用相应归一化指数取代相应指数来修改所述其它值;以及d)基于所述归一化指数,通过去归一化处理将来自所述至少一个忆阻器网络的结果数据转换为浮点值。
所述控制器还可以被配置为:a)识别将被存储到至少一个忆阻器网络中的矩阵;b)基于1)所述至少一个忆阻器网络的高电导状态和低电导状态以及2)所述矩阵的最高值和最低值来限定所述矩阵的映射系数;c)基于所述映射系数,限定将所述矩阵的元素与所述至少一个忆阻器网络的电导值相关的映射;d)使所述VMM处理器根据所述映射将所述矩阵存储到所述至少一个忆阻器网络;以及e)基于所述映射,通过逆映射处理,将来自所述至少一个忆阻器网络的结果数据转换为数值矩阵值。
所述控制器还可以被配置为:a)基于将被执行的所述VMM运算,从主机处理器的指令高速缓存器接收多个指令,所述多个指令中的各个指令指定所述至少一个忆阻器网络的单个行的配置;并且b)使所述VMM处理器经由所述至少一个忆阻器网络并行执行所述多个指令。所述控制器还可以被配置为将所述多个指令作为超长指令字(VLIW)指令转发给所述VMM处理器。
所述控制器还可以被配置为:a)从所述读取数据中识别将被写到所述至少一个忆阻器网络的列向量;b)针对所述列向量中的各个列向量,1)生成表示所述至少一个忆阻器网络的层级的层的标识符,以及2)生成指示是否更新与所述列向量相对应的值的标志位;以及c)将所述列向量以及相应的标识符和标志位存储到所述存储器中。
所述控制器还可以被配置为:a)从所述读取数据中识别将被写到所述至少一个忆阻器网络的矩阵列向量;b)按照以下方式对所述矩阵列向量执行聚集(Gather)操作:i.在SRAM存储器的子库的集合中存储矩阵列向量,并且ii.矩阵列向量从SRAM存储器读取到请求队列中,通过子库地址/数据纵横路由到指定的聚集寄存器,并最终由VMM处理器从关联的聚集寄存器进行访问;c)将聚集寄存器中包含的所述矩阵列向量映射到所述VMM处理器的所述至少一个忆阻器网络的纵横的电导值;以及d)基于所述映射,确定忆阻器权重值,以对所述VMM处理器的所述至少一个忆阻器网络进行编程。所述控制器还可以被配置为:a)从所述纵横读取电压输出;b)将所述电压输出映射到数字矩阵值;以及c)按照以下方式通过分散(Scatter)操作将所述数字矩阵值存储到存储器中:i.VMM处理器将所述值写到关联的分散寄存器中,然后通过子库地址/数据纵横将这些值路由到指定的请求队列,并且最终将数据写到SRAM存储器的预期子库中,ii.能够通过DMA访问将输出写到DRAM存储器。
所述控制器还可以被配置为:a)从所述读取数据中取回将被写到所述至少一个忆阻器网络的向量输入数据值;b)按照以下方式对所述向量输入数据执行聚集操作(Gatheroperation):i.在SRAM存储器的子库的集合中存储向量输入数据,并且ii.向量输入数据从SRAM存储器读取到请求队列中,然后通过子库地址/数据纵横路由到指定的聚集寄存器,并最终由VMM处理器从关联的聚集寄存器进行访问;c)将所述向量输入数据值映射到所述VMM处理器中的所述至少一个忆阻器网络的纵横;以及d)基于所述映射,确定忆阻器电压,以对所述VMM处理器的所述至少一个忆阻器网络进行编程。
所述控制器还可以被配置为:a)从所述读取数据中识别定制(custom)指令,所述定制指令限定与VMM相关联的操作;以及b)使所述VMM处理器根据所述定制指令配置所述至少一个忆阻器网络。所述定制指令可以包括:
a)用于以下项的加载/存储指令:1)将输入值编程到忆阻器纵横阵列的行中,以及将乘法权重值编程到所述VMM处理器内的所述至少一个忆阻器网络中,以及2)将来自所述VMM处理器内的所述至少一个忆阻器网络的VMM输出值存储到存储器中;
b)用于以下项的VMM指令:1)限定包括VMM浮点精度的参数,2)将VMM数据格式化并将所述VMM数据映射到所述VMM处理器内的所述至少一个忆阻器网络中,以及3)通过利用VLIW处理分摊每操作的控制开销来方便获得更大的I/O带宽;
c)位操纵指令,所述位操纵指令对所述VMM处理器的浮点寄存器内的各个位的提取、***、移位、旋转和测试中的至少一项进行限定,其中,用于操纵尾数、指数和符号位的指令是在VMM信号处理链的较大处理中执行的;和/或
d)事务存储器指令,所述事务存储器指令限定I/O效率和分散/聚集指令,并且还限定所述定制指令的原子操作,以方便协调从所述VMM处理器的所述至少一个忆阻器网络读取值/将值写到所述VMM处理器的所述至少一个忆阻器网络。
所述控制器还可以被配置为与神经网络片上***(SoC)对接,所述控制器被配置为:a)包括一对数字信号处理器,使得:i.一个数字信号处理器仅用于所述VMM处理器的所述至少一个忆阻器网络的I/O输入和输出,以及ii.第二数字信号处理器用于数字架构功能,诸如所述VMM信号处理链、存储器管理、非线性运算、定制指令处理和校准/补偿算法;b)对接至所述神经网络片上***,使得:i.所述SoC的任务是由神经网络模型描述符限定的神经网络推理工作载荷,并且包含将在VMM处理器上运行的一组核函数,以及ii.所述模型描述符的核函数被编译成定制指令,所述定制指令将由所述神经网络片上***通过高速互连传递到一组数字信号处理器,以及c)通过所述一组数字信号处理器接收和处理指令,以使所述VMM处理器执行VMM函数。
所述VMM处理器和控制器可以被配置在片上***中,所述片上***具有多个2D集成电路(IC)层的多层堆叠,所述多个层中的各个层包括所述至少一个忆阻器网络的子集,所述多个层中的各个层通过硅通孔(TSV)链接。
在另一实施方式中,一种电路可以包括协处理器电路,所述协处理器电路包括被配置为执行VMM运算的一个或更多个VMM核心并且支持电路。所述VMM核心中的各个VMM核心可以包括:a)VMM电路的至少一个阵列,所述VMM电路中的各个VMM电路被配置为针对所述VMM运算计算总共N位中的T位子集的相应乘积,所述VMM电路中的各个VMM电路包括:i)信号生成器,所述信号生成器被配置为基于所述VMM运算的至少一个系数来生成编程信号;ii)忆阻器网络,所述忆阻器网络具有以纵横结构布置的模拟忆阻器器件的阵列;iii)读/写控制电路,所述读/写控制电路被配置为在所述忆阻器网络处选择性地启用读操作和写操作;iv)忆阻器控制电路,所述忆阻器控制电路被配置为选择性地启用所述模拟忆阻器器件的选择,所述忆阻器控制电路包括列开关复用器、行开关复用器和地址编码器;v)写电路,所述写电路被配置为基于所述编程信号设置所述网络内的至少一个电阻值,所述写电路包括电压驱动器;vi)读输入电路,所述读输入电路被配置为将至少一个输入信号施加到所述忆阻器网络,所述输入信号与向量对应,所述读输入电路包括电压驱动器;以及vii)读出电路,所述读出电路被配置为读取所述忆阻器网络处的至少一个电流值并基于所述至少一个电流值生成输出信号。读电路阵列可以被配置为将至少一个输入向量转换为将被施加到所述忆阻器网络的模拟信号。写电路阵列可以基于乘法系数将至少一个设置信号转换为将被施加到所述忆阻器网络的模拟设置信号。ADC阵列可以将来自所述忆阻器网络的至少一个VMM模拟输出转换为数字值。移位寄存器阵列可以被配置为将所述ADC阵列的所述数字值格式化。加法器阵列可以被配置为将来自所述忆阻器网络阵列的输出相加,所述加法器中的各个加法器执行与所述乘法系数相关联的VMM运算的子集。组合器可以被配置为将所述加法器阵列中的各个加法器阵列的所述输出信号组合以生成组合的输出信号,各个加法器阵列的所述输出信号表示所述相应乘积中的一个,所述组合器被配置为将所述相应乘积汇集为组合的输出,所述组合的输出表示所述VMM运算的浮点精度的解。
在另一实施方式中,一种电路经由向量矩阵乘法(VMM)提供模拟协处理。所述电路可以包括信号生成器、忆阻器网络和支持输入/输出(I/O)电路。所述信号生成器基于VMM的至少一个系数来生成编程信号。所述忆阻器网络包括忆阻器阵列。读/写控制电路可以被配置为在所述忆阻器网络处选择性地启用读操作和写操作。忆阻器控制电路可以被配置为选择性地启用所述忆阻器的选择,其中所述忆阻器控制电路可以包括列开关复用器、行开关复用器和地址编码器中的一者或更多者。写电路可以被配置为基于所述编程信号设置所述网络内的至少一个电阻值,其中所述写电路可以包括电压转换器/驱动器。读输入电路可以被配置为将至少一个输入信号施加到所述忆阻器网络,所述输入信号与向量相对应,其中所述读输入电路可以包括电压转换器/驱动器。读出电路可以被配置为读取在所述忆阻器网络处的至少一个电流值并基于所述至少一个电流值生成输出信号。
在另外的实施方式中,所述忆阻器网络可以包括按照分压器结构布置的多个忆阻器。所述忆阻器网络还可以包括电路元件的阵列,所述电路元件中的各个电路元件包括与晶体管串联的忆阻器,所述晶体管被配置为选择性地允许电流通过相应忆阻器。
在又一实施方式中,所述编程信号可以基于至少一个离散傅里叶变换(DFT)系数。所述忆阻器网络包括忆阻器的多个子阵列,所述多个子阵列中的第一子阵列被应用于所述DFT系数的实部,并且所述多个子阵列中的第二子阵列被应用于所述DFT子阵列的虚部。所述输入信号可以具有电压值,所述电压值是预期用于乘法的所述输入向量的函数。所述读出电路还可以被配置为生成输出信号,所述输出信号作为所述向量与所述忆阻器网络的编程的电阻值的VMM函数的结果。
在再一实施方式中,所述读出电路还可以被配置为检测所述忆阻器网络的多个节点处的电流,其中所述输出信号是所述电流的函数。所述读出电路还可以包括被配置为输出表示所述输出信号的数字值的模数转换器(ADC)。所述写电路还可以被配置为基于所述编程信号来生成基于乘法系数的至少一个模拟设置信号以设置所述至少一个电阻值,其中所述至少一个模拟信号被施加到所述忆阻器网络。数模转换器(DAC)可以被配置为基于所述编程信号生成所述至少一个模拟设置信号。
在又一实施方式中,数模转换器(DAC)可以被配置为基于所述向量来生成所述至少一个输入信号。所述读出电路还可以包括被配置为将所述输出电流转换为电压值的跨阻放大器,所述输出信号包括所述电压值。所述读电路还可以被配置为生成至少一个模拟输入信号以与所述忆阻器网络的至少一个电阻值相乘,所述至少一个模拟输入信号被施加到所述忆阻器网络。
另外的实施方式包括一种协处理器电路,其包括向量矩阵乘法(VMM)电路的阵列以及支持I/O电路。VMM电路的所述阵列可以包括上述特征中的一个或更多个特征,包括被配置为基于VMM的至少一个系数生成编程信号的信号生成器以及忆阻器网络。此外,读DAC阵列可以被配置为将至少一个输入向量转换为将被施加到所述忆阻器网络的模拟信号。写DAC阵列可以被配置为基于乘法系数将至少一个设置信号转换为将被施加到所述忆阻器网络的模拟设置信号。ADC阵列可以被配置为将来自所述忆阻器网络的至少一个VMM模拟输出转换为数字值。移位寄存器阵列可以被配置为将所述ADC阵列的所述数字值格式化。加法器阵列可以被配置为将来自所述忆阻器网络阵列的输出相加,所述加法器中的各个加法器执行与所述系数相关联的VMM运算的子集。组合器可以被配置为将所述加法器阵列中的各个加法器阵列的输出信号组合以生成组合的输出信号。
在另外的实施方式中,处理器可以被配置为基于数学运算为所述VMM电路中的各个VMM电路生成所述编程信号。所述数学运算可以包括求解至少一个偏微分方程(PDE)的运算。所述数学运算还可以包括至少一个N位定点计算,所述VMM电路配置多个相应忆阻器以表示总共N位中的T位子集。所述数学运算还可以包括至少一个N位浮点计算,所述VMM电路配置多个相应忆阻器以表示总共N位中的T位子集。
在另外的实施方式中,VMM的所述至少一个系数可以对应于离散傅里叶变换(DFT)。所述阵列可以被配置为通过将与第一1D DFT相对应的VMM的所述至少一个系数应用于所述阵列的第一子集,并且将所述第一子集的输出作为第二1D DFT的输入应用于所述阵列的第二子集,处理2D DFT。VMM的所述至少一个系数可以对应于离散傅里叶变换(DFT)以通过频谱方法求解偏微分方程。此外,VMM的所述至少一个系数可以对应于离散傅里叶变换(DFT)以执行距离-多普勒信号处理。
在又一实施方式中,VMM的所述至少一个系数可以对应于卷积系数以在卷积神经网络中执行推理。VMM的所述至少一个系数可以对应于格林函数表示以求解偏微分方程。所述组合器还可以被配置为与***组件互连快速(PCIe)主机处理器对接。
在又一实施方式中,VMM的所述至少一个系数可以对应于网格格林函数表示以求解偏微分方程。VMM的所述至少一个系数可以对应于通过共轭梯度法求解的能量最小化优化问题。共轭梯度法可以被配置为求解偏微分方程。共轭梯度法可以被配置为在神经网络内执行反向传播算法。
另外的实施方式可以包括一种执行VMM运算的方法。可以基于VMM的至少一个系数生成编程信号。在具有忆阻器的阵列的忆阻器网络处选择性地启用读操作和写操作。选择性地启用所述忆阻器的选择。可以基于所述编程信号设置所述网络内的至少一个电阻值。至少一个输入信号可以被施加到所述忆阻器网络,所述输入信号与向量相对应。可以读取所述忆阻器网络处的至少一个电流值并且可以基于所述至少一个电流值生成输出信号。
示例实施方式提供被配置用于求解偏微分方程(PDE)的模拟协处理器。此外,可以通过利用模拟纵横阵列调用输入信号与傅里叶基函数的向量矩阵乘法(VMM)来实现模拟离散傅里叶变换(DFT)。可以通过实现频谱PDE求解方法作为大规模离散化有限差分方法的替代,同时利用通过纵横阵列实现的固有并行性来求解线性和非线性PDE。所述模拟纵横阵列可以在CMOS和忆阻器或者包括CMOS和忆阻器的组合的混合解决方案中实现。
附图说明
根据下文对附图所例示的示例实施方式进行的更具体的描述,前述内容将变得显而易见,在附图中,贯穿不同视图,相似的附图标记指代相同的部分。附图不一定按比例绘制,而是将重点放在例示实施方式上。
图1是可以在一个实施方式中实现的晶体管/忆阻器纵横阵列的电路图。
图2是忆阻器阵列的电路图。
图3是包括一个实施方式中的协处理器的***的框图。
图4是可以在图3的协处理器中实现的向量矩阵乘法(VMM)引擎的阵列的框图。
图5是一个实施方式中的VMM引擎的框图。
图6是可以实现实施方式的***组件互连快速(PCIe)架构的框图。
图7是一个实施方式中的H树架构的框图。
图8A至图8B是一个实施方式中的计算***的框图。
图9是另一实施方式中的计算***的框图。
图10是例示了一个实施方式中的线程化处理的流程图。
图11是一个实施方式中的与矩阵列向量相关联的数据表示的框图。
图12是一个实施方式中的与联网设备对接的计算***的框图。
图13A至图13D是例示了示例实施方式中的以堆叠结构构造的***的框图。
具体实施方式
以下是示例实施方式的描述。
图1是可以在一个实施方式中实现的晶体管/忆阻器纵横网络100的电路图。网络100包括晶体管/忆阻器阵列150(也称为纵横或纵横阵列),其包括布置成行和列的多个单元(也称为器件),该多个单元包括单元140。该单元包括与晶体管142串联连接的忆阻器144,其中晶体管142选择性地使电流流过相应忆阻器144。晶体管142的栅极可以连接至用于控制所述电流的晶体管控制电路125。此外,行选择电路110和列选择电路112选择性地使电流流过给定行和给定列的单元。晶体管控制电路125、行选择电路110和列选择电路112一起使得能够将电流施加到阵列150中的所选择的一个或更多个单元,同时防止电流施加到未选择的单元。
忆阻器纵横阵列(诸如网络100的阵列150)可以提供多个有益的特征,诸如高可扩展性、快切换速度、非易失性、大电阻比、非破坏性读取、3D可堆叠性、高CMOS兼容性和可制造性。然而,该架构也可能具有几个与应用有关的挑战。特别是关于向量矩阵乘法(VMM),在纵横阵列中实现高器件隔离并获得可接受的模拟行为是实质问题。
忆阻器纵横阵列中的各个忆阻器器件的操作都会影响附近的其它器件的操作。例如,纵横阵列可能表现出一种称为“潜行路径电流”的现象,该“潜行路径电流”是流经未选择的忆阻器器件的电流之和。通过使用选择器件减少这种现象,该选择器件可以连接至纵横阵列的各列或各行以驱动忆阻开关。选择器件可以驱动的总电流可以由其沟道宽度确定。然而,端子选择器件的电流-电压关系可能具有高非线性。这种效应违背了欧姆定律,因此尽管晶体管尺寸限制了可实现的忆阻器纵横密度,但是可以使用三端子选择器(例如,晶体管142)来缓解潜行路径电流问题并提供可接受的模拟行为。如图1所示,在各个交叉点处晶体管与忆阻器器件串联可以称为1T1M(或1T1R)架构。通过在接通开关期间控制忆阻器的电流合规性(current compliance),可以将阵列150的各个单元140的电阻值设置为高电阻状态(HRS)到低电阻状态(LRS)之间的任何目标值,这称为模拟行为。在1T1M结构中,通过按不同电平设置晶体管的栅极电压,可以容易地实现对电流合规性的控制。这使得能够对忆阻器144中的模拟值进行编程。
图2是忆阻器阵列250的电路图,该忆阻器阵列250可以包括上述网络100的一个或更多个特征。具体地,阵列250可以包括多个行(V1 1-VN 1)和多个列(V1 0-VM 0)的忆阻器(例如,忆阻器244)。各个忆阻器还可以配置有选择器件(例如,晶体管)以形成诸如上述单元140的单元。
忆阻器纵横阵列(诸如阵列250)可以实现与矩阵有关的计算,并且由于高并行的计算模型、电信号的高效使用以及硬件实现中的物理定律,所以与图形处理单元(“GPU”)或其它加速器相比,可以实现计算速度的超过100倍的提高。忆阻器器件的低工作能量(<pJ)进一步降低了功耗。向量和矩阵计算通过忆阻器纵横阵列执行。如图2所示,沿着已根据N×M矩阵输入210进行了编程的N×M阵列的行施加与输入向量相对应的输入电压VI。通过测量输出电压VO在每一列中收集输出电流。在各列处,通过对应忆阻器电阻(1/Gi,j)对每一个输入电压加权,并且在输出电压处出现加权总和。因此,输入电压与输出电压之间的关系可以以向量矩阵乘法形式VO=-VIGRs(运算放大器的负反馈)表示,其中G是由忆阻器纵横阵列的电导确定的N×M矩阵。
通过采用优质的开关材料(诸如TaOx和HfOx)和制造工艺,可以减少器件的可变性。反馈电路很容易用于VMM应用,以将单元切换至目标值。为了提供VMM运算,可以在阵列250的行上施加小的电压作为输入,并且可以测量列上的输出电流或电压。例如,各列处的输出电流可以被转换器电路220读取并且被转换成对应电压。施加的电压可以保持低于忆阻器器件的有效开关阈值电压,因此,不会在相邻的忆阻器器件中引起任何明显的电阻变化。该操作可以称为“忆阻器读取”,该操作可以以无限的耐久周期和低错误率或低不精确度重复进行。更具挑战性但频度较低的VMM运算是在忆阻器纵横阵列上映射矩阵,这需要将电阻值编程(写入)到纵横阵列的忆阻器器件中。
科学计算中的许多应用(包括偏微分方程(PDE)的求解)都使用浮点计算。在下面描述的实施方式中,除了在引言和背景技术章节中描述的定点式计算之外,模拟协处理器还支持浮点格式的向量矩阵乘法。浮点表示在范围与精度之间进行权衡的实数。在浮点表示中,数由固定的有效数字数(称为有效位数)表示并使用某一固定基数中的指数进行扩展。一般表示为:有效位数×基数指数。这些年来,已经使用了各种浮点表示,但是自20年代90年代以来,最常用的浮点表示是由IEEE754标准定义的。
16位浮点的指数是从0至31的5位无符号整数。实际使用的指数值是减去了偏差的指数值。16位浮点表示的偏差值为15。因此,指数的有效值从-15变化至16。真实有效位数包括具有隐藏前导位的二进制点右边的10个小数位。仅10个小数位存储在存储器中,但总精度为11位。这对应于3.311十进制数。
32位浮点的指数是从0至255的8位无符号整数。实际使用的指数值是减去了偏差的指数值。32位浮点表示的偏差值为127。因此,指数的有效值从-127变化至128。真实有效位包括具有隐藏前导位的二进制点右边的23个小数位。仅23个小数位存储在存储器中,但总精度为24位。这对应于7.22十进制数。
16位浮点数的二进制表示可以由下式给出:
Figure BDA0002557813360000111
该式产生的十进制值为:
Figure BDA0002557813360000112
可以使用16位浮点表示表示的最小归一化正值是2-14=6.1×10-5,并且最大值是(2-2-10)×215=65504。可以使用32位浮点表示表示的最小归一化正值是2-126=1.18×10-38
关于浮点加法,两个浮点数X和Y可以相加。X和Y的有效位数分别表示为Xs和Ys,并且X和Y的指数部分分别表示为Xe和Ye。可以如下相加浮点数:(a)通过明确表示“1”将两个数转换为科学计数法。(b)为了将这些数相加,指数应相同。通过移动尾数的小数点来完成该步骤。(c)将两个尾数相加。(d)调整结果并将其表示为浮点数。
关于浮点乘法,可以将两个浮点数X和Y相乘。X和Y的有效位数分别表示为Xs和Ys,并且X和Y的指数部分分别表示为Xe和Ye。X和Y的乘积则由下式给出:
Figure BDA0002557813360000113
在下面描述的实施方式中,可以通过对指数进行归一化(通过将尾数对齐而将该指数转换成定点值)来处理浮点数。对指数进行归一化需要位移位和填充,这是正被处理的最大指数值与最小指数值之间的差的直接函数。在一些应用中,针对单精度浮点计算,该值可以高达278位。为了规避该问题,可以将VMM阵列的各列的元素对齐。这种布置利用了以下事实:相邻元素的指数之间的差明显小于极值。针对用于与矩阵值相乘的向量输入,可以遵循相同的归一化过程。可以存储纵横阵列的各列的归一化指数值,以在将相乘和累加的结果转换回浮点精度的去归一化处理期间使用。
图3是一个实施方式中的协处理器300的框图,该协处理器可以应用于执行诸如N位浮点计算的计算。协处理器300可以称为模拟协处理器,因为其实现了执行如下所述的计算的模拟电路(例如,一个或更多个忆阻器网络)。计算所需的数据可以从数字数据总线(例如,PCIe总线)接收到用于指数的归一化块305,该归一化块305通过使数据块的指数相同来归一化该数据块。这些归一化的值可以存储到片上数字存储器306,处理器310通过N通道总线来访问该片上数字存储器306。处理器310与VMM核心320对接。VMM核心320可以作为协处理器的计算核心工作,并且可以由P×P VMM引擎的阵列组成。为了清楚起见,示出了这种阵列的两个通道322a、322n。给定通道322n可以包括写数模转换器(DAC)330和读DAC 340、P×P VMM引擎阵列350、模数转换器(ADC)阵列360、移位寄存器阵列362以及加法器阵列364。各个VMM引擎(例如,VMM引擎阵列350的引擎)可以包括M×M忆阻器纵横阵列(例如,如上所述的阵列150、250),以及相应读和写电路以及行和列复用器,其用于寻址忆阻器以进行读和写操作。下面参照图5更详细地描述示例VMM引擎。
图4是可以在图3的协处理器300的VMM核心320中实现的向量矩阵乘法(VMM)引擎(例如,VMM引擎470)的阵列420的框图。VMM引擎470中的各个VMM引擎可以连接至相应DAC和ADC以形成阵列的各个单元460a至460n。
图5是VMM引擎500的框图。VMM引擎500可以实现为图3的协处理器300的VMM核心320的VMM引擎阵列350的引擎,并且可以实现为图4的阵列420的VMM引擎460。VMM引擎500可以包括忆阻器网络500,该忆阻器网络500具有包括串联连接的开关和忆阻器的忆阻器单元的阵列(1,1-M,M),并且VMM引擎500可以包括上文参照图1描述的忆阻器网络100和参照图2描述的阵列的一个或更多个特征。VMM引擎还包括用于通过设置网络550中的忆阻器的电阻值来对忆阻器网络550进行编程(也称为“写操作”)的电路,以及用于将输入信号施加到编程的忆阻器网络550并检测所得的电流和/或电压(也称为“读操作”)的电路。
具体地,读/写控制电路510可以选择性地启用读操作和写操作。针对写操作,电压转换器/驱动器512可以接收编程信号(“写信号”)并生成用于对忆阻器网络550的电阻值进行设置的对应信号(例如,电压值)。列开关复用器516和行开关复用器518使得能够选择阵列550的忆阻器单元中的一个或更多个忆阻器单元。编码器电路515将地址信号转换为指示用于通过复用器516、518选择的忆阻器单元的子集的信号。针对读操作,电压转换器/驱动器570可以接收指示向量的“读信号”,并将对应输入信号集施加到忆阻器网络550。读出电路580然后可以通过忆阻器网络550接收并组合所得电流,并且跨阻放大器590可以接收所得电流并生成具有基于该电流的电压值的输出信号。
下文参照图3至图5描述示例实施方式中的协处理器和相应VMM引擎的操作。
写操作
再次参照图3,为了使协处理器300能够执行计算,相应VMM引擎可以进行写操作,该写操作可以设置VMM引擎的忆阻器的电阻值。具体地,写DAC阵列330可以将矩阵值写到VMM引擎阵列350的忆阻器中。由于各个VMM引擎500的大小为M×M,所以每VMM引擎的写DAC的数量也可以为M。各个写DAC 330将T位写到各个忆阻器中,并且可以在单个时钟周期中写入一整行。写DAC阵列330可以利用各个VMM引擎500(图5)的写电路来写入引擎忆阻器阵列550的忆阻器中。
因为指数已被归一化(例如,通过归一化框305),所以可能仅尾数需要由协处理器300处理。N位浮点数具有M个尾数位。因此,可能需要各行中的P个VMM引擎以每单元T位处理该M位。例如,VMM引擎“1”(例如,引擎500)的第一忆阻器可以存储T个MSB位,并且VMM引擎“P”的第一忆阻器存储T个LSB位。VMM引擎的其它(P-1)行可以具有正写入其中的相同值。各个写DAC 330可以具有来自处理器310的各个通道的T位输入。该T位数字数据可以被转换成单个模拟值,该单个模拟值被存储为忆阻器电导状态。VMM引擎500的各行可以在单个时钟周期中被写入。例如,给定忆阻器写时间为4ns,则M×M纵横可能需要M*4ns来写入所有值。可以将写操作视为开销,因为VMM运算无法开始直到所有忆阻器都已被写入为止。为了避免这种开销,可以使用交织方法,其中两个VMM核心将以交织方式工作。
读操作
一旦网络550的所有忆阻器已被写入,则可以使用VMM核心320的VMM引擎来执行读操作(VMM运算)。如图3所示,各个VMM引擎阵列350具有其自己的读DAC阵列340。阵列340的各个DAC的宽度可以是T位,并且将T位值输入到忆阻器纵横阵列的各行中。由于VMM引擎的大小为M×M,因此各个阵列中的读DAC的数量也为M。读操作和写操作可以是顺序的,因此,相同的M个通道可以用于读操作和写操作这两者。读DAC 340可以用于将向量输入到VMM引擎阵列350的忆阻器纵横阵列中。读DAC可以提供输入向量以与存储在忆阻器纵横阵列中的矩阵值相乘。由于输入向量也是N位浮点数,因此尾数宽度是M位。如图所示,各个DAC 340具有T位输入。因此,计算需要VMM引擎的[P=(M/T)]列来处理M个尾数位。T位数字数据可以被转换成单个模拟值。VMM引擎的各列可以通过读电路570(图5)接收相同的输入向量。沿各列的所得VMM输出可以使用读出电路580读出。
如图3所示,可以使用列并行ADC 360来将各个VMM引擎500的模拟输出数字化。各个ADC的宽度可以是T位,并且各个VMM引擎500可以具有M个ADC。模拟协处理器300可以处理N位浮点数的M位尾数,但是各个忆阻器仅可以存储T位信息。因此,可以将M位尾数分解为M/T个T位数。在执行VMM运算并将输出数字化之后,可以将这些位移位到其正确的位位置。为此目的,可以在各个ADC 360的输出处实现移位寄存器362。各个移位寄存器阵列362可以具有不同的位移位设置。在位已经移位之后,可以通过加法器阵列364将VMM引擎500的各列的输出与对应列相加。阵列364的各个加法器可以具有来自各行中的P个VMM列的P个输入。类似地,也可以使用阵列364的加法器将其它VMM引擎的列相加在一起。VMM核心320的各行可以具有加法器阵列364的一组P个加法器。加法器364的输出(其长度为T位)可以使用组合器370进行组合以形成M位尾数输出。这些输出可以存储到片上数字存储器306,并且在数字总线上发送。
图6是可以实现实施方式的***组件互连快速(PCIe)架构的框图。PCIe是串行点对点互连拓扑,其用于连接计算和通信平台中的***设备。PCIe“通道”包括两个PCIe设备之间的两个单工互连链路,各个单工互连链路的方向相反。PCIe标准提供了通过在设备之间添加通道来增加吞吐量的灵活性。例如,PCIe版本3.0允许以1、2、4、8、12、16和32的增量添加单工通道。通道数量(用“L”表示)可能影响与PCIe架构下的设备对接的协处理器的尺寸和性能。
如图6所例示的,CPU芯片集640和PCIe处理器主机650经由PCIe总线690在通信上联接。PCIe主机处理器650继而可以与协处理器620通信,该协处理器620可以包括与上文描述的协处理器300的特征相当的特征。在操作中,CPU芯片集640可能正在向协处理器620进行发送。数据有效载荷可以在芯片集640的设备核心处创建并被发送给附加有开销的三个层(事务层、数据链路层和物理层)以确保按正确的顺序将分组可靠地传送到PCIe处理器650中的对应层。然后,可以将构造的分组呈现给芯片集640的存储器控制器,该存储器控制器组物理地连接至PCIe总线690并确定分组***的通道。当分组在PCIe控制器650中从物理层流向事务层时,各个层都剥离了其开销,并且可靠的数据有效载荷以正确的顺序传送到了设备核心。PCIe处理器650主机对分组进行解构,并将有效载荷传送给协处理器620。
类似地,PCIe处理器主机从由协处理器620创建的数据有效载荷构造分组,并且可靠地并以正确的顺序将该分组发送给CPU芯片集640中的设备核心。PCIe处理器的功能可以例如被实现在Xilinx FPGA中,该Xilinx FPGA与CPU芯片集640通信并控制和编程协处理器620。PCIe协议的规定可以实现为控制和编程协处理器620。另外,协处理器620的“带外”控制以及编程可以在驻留在例如主机工作站中的诸如MATLAB的软件程序中执行。
图7是一个实施方式中的H树架构700的框图。如上所述,M×M纵横的P×P并行阵列可以执行浮点运算。针对单精度计算,P为6并且M为32。这样的构造(针对32位浮点,36组4位/单元的32×32纵横,或者针对16位浮点,4组5位/单元的32×32纵横)可以称为“纵横核心”或“浮点核心”。使用具有32个通道的接口(诸如PCIe 4.0接口)使得能够以64GB/s的双向带宽将32元素输入向量完全输入到协处理器的浮点核心。PCIe值可以作为输入向量被聚合,并映射到特定纵横以进行计算,这可以在FPGA上完成。
H-树架构700可以包括以H-树构造连接至公共接口的多个纵横核心720a至720n。使用流传输缓存器790以64GB/s的H-树带宽馈送8个这样的核心的H-树网络会产生1PB/s(250TFLOP单精度)的VMM计算(16GT/s的32位输入*8个浮点核心*每核心2016浮点计算)。然后,可以将浮点核心的输出逆映射回其对应输入向量分量并作为输出向量被聚合以返回给发送设备,这也可以在FPGA上完成。H树架构700的纵横核心720a至720n可以被配置成直接与PCIe总线对接,从而避免了试图以TB/s标度创建内部设备带宽的存储器内置处理器架构中可能出现的带宽不对称性。
上述示例实施方式提供了一种用于需要高计算速度和低功耗的应用的模拟协处理器。协处理器能够求解复杂***的科学模拟中产生的偏微分方程。由于与离散变量编码和串行处理相关联的局限性,科学模拟中的当前PDE求解方法效率低下且通常难以处理。上述实施方式通过使用CMOS-忆阻器纵横阵列的模拟行为调用输入信号与乘法系数的向量矩阵乘法来实现一组PDE求解过程。
示例实施方式可以通过实现频谱和格林函数求解方法作为大规模离散化有限差分方法的替代,同时利用通过纵横阵列实现的固有并行性来求解线性和非线性PDE。在频谱方法中,可以使用模拟纵横架构将PDE转换到傅里叶域中。一旦表示在傅立叶域中,就可以使用纵横来执行VMM和积分以通过利用逆离散傅里叶变换(IDFT)和卷积定理来得到PDE的解。因此,可以将感兴趣的偏微分方程映射到模拟纵横离散傅里叶变换(“DFT”)架构,从而得到简单得多的傅里叶表达,其将PDE求解计算的速度提高到远超先前方法。以这种方式求解具有深远适用性的线性PDE(诸如波和热方程)。通过线性化求解非线性PDE然后傅里叶域表示以及不可压缩流体流的纳维-斯托克斯(Navier-Stokes)方程是示例应用。
求解PDE的另一方法是格林函数方法。格林函数方法可能不适用于在传统计算机上求解PDE。然而,实现诸如忆阻器-CMOS纵横的电路的上述实施方式为PDE求解提供了手段。PDE具有涉及格林函数的正式数学解:
T(x)=∫ΩG(x,x′)S(x′)dx′
其中G(x,x')是格林函数。每一个PDE具有特定格林函数。如果域上的积分在每元素N个网格单元的离散网格上近似,则在一个单元中计算解T(x)需要在所有(N-1)个其它单元上求和并且求解(所有单元中的)所有未知解需要阶N2运算。这种运算在计算上昂贵,因为可以在O(N)时间内找到该问题的解。因此,在先前方法中格林函数很少用作求解PDE的主要求解技术。
还可以根据线性代数和矩阵来理解计算成本。一旦离散化,PDE生成矩阵问题Ax=b,其中A是仅具有O(N)非零条目的N×N稀疏矩阵,b是N个已知值的源向量,并且x是未知解向量(具有N个条目)。格林函数G(x,x')等同于矩阵逆。它是完整矩阵并且需要N2运算以乘以源并经由x=A-1b获得解。
上述示例实施方式使得格林函数方法再次可行,因为其在模拟域中执行矩阵乘法运算。结果,向量乘以全矩阵乘法(VMM)的所有N2运算可以在忆阻器纵横阵列上在单个循环中执行。
这些实施方式也适用于基于卷积神经网络(CNN)的图像识别和多普勒滤波。CNN是用于对象检测和识别任务的越来越流行的机器学***台的尺寸、重量和功率(SWaP)显著减小。通过利用诸如模拟纵横VMM的特征,上述示例实施方式可以在上述约束下实现这些应用。
示例实施方式可以经由CMOS以及诸如忆阻器的新兴纳米技术或者由CMOS和忆阻器二者组成的混合技术来实现。这种实现方式在模拟DFT实现方面提供了许多优点,因为如上所述的模拟纵横处理器可以对DFT系数进行编程并执行与输入信号的向量矩阵乘法。具体地,如上所述的模拟处理器可以利用基本尺寸纵横阵列的足够并行化实现超过1024个点的模拟离散傅里叶变换,与数字***相比在计算速度和功耗方面改进了2至3个数量级。
并入有协处理器的计算***
图8A是一个实施方式中的计算***800的框图,该计算***800可以应用于执行诸如N位浮点计算的计算。***800包括具有VMM引擎820的VMM处理器,该VMM引擎820可以被配置成包括一个或更多个VMM引擎(诸如上文参照图5描述的VMM引擎500)。VMM引擎820可以以上文所述的各种架构中的一种或更多种配置,诸如图4的阵列420或图7的H-树架构700。VMM引擎820也可以被配置成包括VMM引擎的结构化阵列并支持电路的VMM核心(诸如图3的VMM核心320)。在上述配置的任何配置中,VMM引擎820可以称为VMM处理器。VMM引擎820与数字控制器830对接。
图8B更详细地例示了数字控制器830。数字控制器830可以包括可以并入有上文参照图3描述的组件305、306、310的特征的互连805、存储器806和处理器810。因此,数字控制器830和VMM引擎820可以被配置成诸如上文参照图3描述的协处理器300的协处理器。为了执行诸如N位浮点计算的计算,所需数据可以从数字数据总线(例如,如图6所示的经由PCIe处理器650的PCIe总线690)接收到互连805,该互连805将数据转发给处理器810。处理器810可以将数据块归一化,以生成归一化的值。这些归一化的值可以被存储到由处理器810访问的存储器806。处理器810与VMM引擎820对接,从而控制VMM引擎820执行如上文参照图5描述的读操作和写操作。遵循这些操作的计算结果可以由数字控制器830处理,并报告给请求结果的主机设备(未示出)(诸如图6的CPU芯片集640)。
因此,***800可以提供使用VMM引擎820在模拟域中执行计算密集型运算(诸如VMM运算、乘法累加集合(MAC)运算)。***800还可以通过指令集架构(ISA)提供用于处理数据VMM引擎820、启用浮点计算的VMM信号处理链,以及对去往和来自存储器806的数据移动的管理、命令和控制技术。例如,这些解决方案可以在控制器830的固件842中实现为对RISC-V开源ISA的扩展。控制器830可以将针对VMM引擎820的计算指令从函数调用调动(translate)至软件应用编程接口(API)844(包括与Matlab、OpenCL、SuiteSparse和/或其它软件应用的兼容性)。
图9更详细地并且以联接至主机处理器990的构造例示了计算***800。互连805可以经由***总线(例如,PCIe总线)在通信上联接至主机处理器990,并且从主机处理器990接收指令集970。控制器830可以实现VMM信号处理链以处理指令970并生成用于写到VMM引擎820(例如,VMM引擎822a至822b)以及从该VMM引擎读的对应命令。控制器830的VMM信号处理链可以包括数据格式化块830、纵横映射/逆映射块832、归一化/去归一化块834、存储器管理单元(MMU)836和特殊功能单元((SFU)838。下面更详细地描述这些框中的每一者。
数字控制器830可以实现用于与主机处理器990和VMM引擎820对接的包括以下项的多个特征:
a)存储器806可以管理流入和流出VMM引擎820的纵横架构的数据流,以最大化到协处理器的I/O带宽。
b)数字控制器830可以处理完整的VMM信号处理链(包括浮点计算)。该链可以包括用于数据格式化的专用数字块,以启用模拟域中的通用矩阵-矩阵乘法、向量-矩阵乘法和2D卷积/相关运算的计算,以及在纵横阵列上执行数据的映射/逆映射,以及与浮点计算相关联的指数的归一化/去归一化。
c)ISA扩展可以被优化以在忆阻器纵横阵列中执行VMM,并集成到主机处理器990中。
d)数字控制器830还可以执行(b)中所描述的计算之外的附加计算,以使存储器访问最少并提高计算效率。数字计算的类型由模拟协处理器中实现的各种应用确定,并且可以归类为特殊功能,以由数字引擎中的特殊功能单元处理。
VMM信号处理链
控制器830可以实现VMM信号处理链以支持VMM引擎820的忆阻器-CMOS纵横阵列加速用于各种应用的VMM运算。该链可以包括以下块:
数据格式化块830:将在计算***800上运行的许多应用执行通用矩阵-矩阵乘法运算或2D卷积/相关运算。在矩阵-矩阵乘法的情况下,控制器830可以使VMM引擎820将矩阵中的一个矩阵写入其忆阻器-CMOS纵横阵列作为对应电导值,并且另一矩阵使用所写的忆阻器-CMOS纵横阵列逐行相乘,使得各个矩阵行都是向量-矩阵乘法的输入向量。在2D卷积的情况下,可能需要附加的移位和加法运算以及矩阵乘法。这里,处理器806可以使用处理器以交叠的顺序从存储器806中读出第二矩阵,以表示在被应用于VMM引擎820的忆阻器纵横阵列之前卷积运算所需的移位。然后,可以将VMM引擎820的各个忆阻器纵横阵列列的末端处的VMM输出求和以获得最终的2D卷积结果。可以由处理器810或另一组件实现的应用层可以区分模拟协处理器在给定实例中将处理两个主要类别的矩阵乘法运算中的哪一者。
归一化和去归一化框834:由***800实现的不同应用可能需要不同级别的精度和动态范围。为了适应这一点,可以使用浮点格式。***800可以用升到幂(指数)的具有一个前导符号位的数(尾数)来表示浮点值。***800可以通过对指数进行归一化并对齐尾数来处理浮点数。该归一化在对一组值执行时可能更有效。
为了执行该归一化和对齐,控制器830可以首先识别极值的指数‘Emax’。然后可以通过将其它值位移位因子(Emax-E-偏差)来对所述其它值进行归一化,以使其具有相同的指数Emax,其中E是各个单独值的指数,并且‘偏差’项是特定位精度的常数(例如,针对32位浮点数,偏差为127)。在最坏的情况下,针对单精度浮点计算,归一化因子可能会大到278位。为了规避该问题,控制器830可以使VMM引擎820的各个单元内的元素对齐。该解决方案利用了以下事实:相邻元素的指数之间的差明显小于极值。模拟协处理器的各个单元的归一化的指数值可以存储到存储器806,以在将相乘和累加的结果转换回浮点精度的去归一化处理期间使用。控制器830可以实现作为VMM信号处理链的一部分的数字逻辑块,以执行处理浮点数所需的归一化和去归一化过程。
映射和逆映射块832:执行VMM运算的第一步是将矩阵值作为忆阻器的电导存储在忆阻器纵横阵列中。忆阻器具有高电导状态(Ymax)和低电导状态(Ymin)。令将被映射到忆阻器纵横阵列中的矩阵为A。首先将矩阵的最高值和最低值标识为Amax和Amin。然后将两个线性映射系数限定为:
Figure BDA0002557813360000191
并且b=Ymax-a(Amax)
使用这两个系数,将矩阵A的元素映射到作为Y=a.A+b的忆阻器电导值。该映射也适用于负数。在将矩阵的元素转换成忆阻器电导值之后,这些值将进一步转换成忆阻器的写入电压。这些写入电压用于将电导值存储在忆阻器中。输入向量值也线性映射到忆阻器读取电压。在VMM引擎820完成VMM运算之后,必须将输出电压逆映射到实际值。针对输入向量x和输出向量V,逆映射运算实现为:
Figure BDA0002557813360000201
映射和逆映射块832可以作为VMM信号处理链的一部分执行上述映射和逆映射过程。
存储器管理
***800可以实现多种解决方案来管理存储器806,从而确保足够的存储器带宽以完成VMM运算。***可以实现的解决方案包括以下项:
积分线程化(integral threading):图10是例示了与在图形处理单元(GPU)中实现的线程化处理相当的线程化处理1000的流程图。如图所示,流传输多处理器(SP)指令调度器1012将线程块分组为“warp”,其中各个指令被调度用于流传输多处理器上的执行。
再次参照图9,***800可以通过启用基于每纵横行/列的并发处理来提供“积分线程化”。模拟协处理器可以将矩阵的各行分配给浮点引擎中的一组纵横行/列,类似于CPU中的各个核心为各行分配单独的线程的方式。例如,指令970的子集(I14,I60,I4)可以分别分配给VMM引擎822a的相应行,而另一指令子集(I15,I61,I5)可以分别分配给VMM引擎822b的相应行,如图9所示。矩阵行可以由引擎822a至822b中的所有纵横并行操作,这类似于GPU中各个流传输多处理器使用一个SIMD(单指令多数据)单元执行在各行上工作的方式。可以按照以下方式在VMM引擎820的纵横阵列上执行程序:VMM计算可以在纵横阵列内并发执行,而无需仅通过使用指令级并行性来显式使用线程。相对于这些数字***中执行的解决方案,该解决方案简化了线程管理并简化了VMM处理。可以不需要多线程(MT)发布单元,并且指令和数据高速缓存器可以驻留在主机处理器990上,其中主机处理器922与***800之间具有高速率互连。因此,在将对应忆阻器纵横阵列列设置为期望的相乘权重值之后,***800可以通过物理计算通过将向量输入应用于VMM引擎820内的忆阻器纵横阵列行来并行执行指令970。各组指令可以捆绑成一个超长指令字(VLIW)指令,以进行更有效的处理。
用于方便VMM更新的数据表示:图11例示了可以由***800实现以表示数据的数据结构1100。***800加速VMM运算,并且可能需要高数据吞吐量来将VMM引擎820的纵横核心的使用最大化。数据结构1100可以方便更新以保持高吞吐量,同时将针对纵横核心的昂贵的写操作最小化。为了实现该目标,可以对列向量进行编码,并以包括标志位1102和唯一标识符1104的格式存储在存储器806中。在该数据结构1100中,数据表示可以对与例如“没有更新,列1-单元1-核心1-浮点引擎1”相对应的值进行编码。如果列向量已改变并且需要被更新,则其标志位1102可以被设置,并且中断将被触发给主机处理器990以将新值写到对应浮点引擎822a的纵横核心中。
分散/聚集向量支持:主机处理器990可以在异构计算环境中用作***800的伴侣,其特征是具有分散/聚集事务支持以提高吞吐量。分散/聚集向量事务可以用于I/O到VMM引擎820内的纵横阵列,其中将值发送给纵横阵列DAC。与常规存储器访问方法相比,分散/聚集向量事务可以通过更有效地访问存储器806的非连续位置来提高吞吐量。在聚集操作中,可以通过DRAM的DMA访问将矩阵列向量存储在SRAM存储器的子库的整个集合中。矩阵列向量从SRAM存储器中读取到请求队列中,然后通过子库地址/数据纵横路由到指定的聚集寄存器,最后由VMM核心从关联的聚集寄存器进行访问。在分散操作中,VMM核心将这些值写到关联的分散寄存器中,然后通过子库地址/数据纵横将这些值路由到指定的请求队列,最后将数据写到SRAM存储器的预期子库中。可以通过DMA访问将输出写到DRAM存储器中。
下表总结了纵横列向量(用于VMM的忆阻器乘法权重)和向量输入数据两者的示例写过程和读过程。
Figure BDA0002557813360000221
指令集架构与集成
用于VMM的定制指令:随着数字块的制造,可以通过创建源自主机设备的CPU并在模拟协处理器上运行的用户限定的指令来扩展数据格式化处理。矩阵运算的各个主要类别都可以具有将定向到模拟协处理器的定制用户指令。定制指令可以作为对现有指令集的扩展发布,具有在主机设备上运行的能力。这允许内部功能IP块的定制配置。
用于在模拟协处理器中执行VMM的一组代表性定制指令包括:
(a)加载/存储定制:定制加载指令用于将输入值编程到忆阻器纵横阵列行中,并将相乘权重值编程到模拟协处理器单元内的忆阻器纵横阵列列中。定制存储指令用于将来自模拟协处理器单元内的忆阻器纵横阵列列的VMM输出值存储在存储器中。定制加载和存储指令在一组用于VMM的专用寄存器与存储器(VMM指令和数据高速缓存器与共享存储器空间)之间运行。
(b)向量矩阵乘法:按不同的精度级别(例如32、64和128位整数乘法以及16、32、64和128位浮点计算)限定用于整数和浮点精度的独立指令。模拟协处理器架构着重于浮点计算,并且浮点引擎中的核心和单元的特定配置限定该引擎的计算精度,如先前在背景技术章节中所描述的。因此,特定乘法类型和精度的指令必须仅定向到支持该计算的浮点引擎。向量矩阵乘法(与传统乘法相反)指令通过分摊每运算的控制开销来方便获得进入模拟协处理器单元内的忆阻器纵横阵列的更大的I/O带宽。
(c)位操纵指令:模拟协处理器通过乘以其单元的忆阻器纵横阵列内的浮点尾数同时将浮点指数归一化并调整浮点符号位来执行VMM。这需要能够对模拟协处理器的浮点寄存器内的各个位进行提取、***、移位、旋转和测试的指令。在VMM信号处理链的较大处理中执行用于操纵尾数、指数和符号位的指令。
(d)事务存储器:事务存储器指令允许加载和存储指令以原子方式运行。当模拟协处理器加载和存储用于VMM处理的值时,该模拟协处理器通常在并行运行的许多单元之间执行共享数据的并发读和写。这需要纵横阵列单元之间的广泛协调,这通过原子加载和存储来促进。
作为例示性示例,以下伪代码限定了VMM信号处理链中的指令处理顺序,其中指令从伪代码y=Ax转换而来:
a)Data_Format(R0):用于将运算类型标识为矩阵乘法或2D卷积/相关运算的定制指令。通过对应标志(例如,1,以指示矩阵乘法)来更新寄存器RO。
b)加载(R1,A):将矩阵A的内容加载到寄存器R1中。根据最大寄存器尺寸,这可以按照加载顺序执行。
c)加载(R2,x):将向量x的内容加载到寄存器R2中。再一次地,根据最大寄存器尺寸,这可以按照加载顺序执行。
d)归一化(R3,R4,R1,R2):用于将寄存器R1和R2的内容归一化并将值分别返回到寄存器R3和R4的定制指令。该高级指令由诸如比较和位移位运算的较低级指令的子集组成。
e)映射矩阵(R5,R3):用于将寄存器R3的内容映射到电导值并将其存储在寄存器R5中的定制指令。该高级指令由诸如乘法和除法的较低级指令的子集组成。
f)映射向量(R6,R4):用于将寄存器R4的内容映射到输入向量值并将其存储在寄存器R6中的定制指令。该高级指令由诸如乘法和除法的较低级指令的子集组成。
g)加载定制({Engine1–Core1–Cell1},R5):用于将R5的电导值写到特定浮点引擎单元Engine1–Core1–Cell1的定制指令。根据最大寄存器尺寸,这可以按照加载定制的顺序执行。
h)VMM({Engine1–Core1–Cell1},R5):用于执行将R6的电压值与Engine 1–Core1–Cell 1的电导值相乘的定制指令。
i)存储定制(R7,{Engine1–Core1–Cell1}):用于存储VMM运算的输出的定制指令。在用于逆映射和去归一化的对应指令之后,输出最终返回到调用程序。
主机设备集成:图12是计算***800可以与主机设备1220集成的***1200的框图。***800可以集成在主机设备1220内(例如,集成到公共片上***(SoC)中),以形成端到端解决方案,其中VMM加速函数限定在软件核1242中,并最终在计算***800上运行。在该示例中,联网***1200被配置为神经网络应用。
主机(边缘)设备1220可以包含任务是执行神经网络推理、接收已在云/数据中心1210中训练的神经网络模型描述符1208的应用栈。可以使用定制的神经网络编译器将该神经网络描述符1208编译为标准语言(诸如C/C++),然后进一步编译成指令,以在运行实时操作***(RTOS)和神经网络运行时间环境的主数字信号处理器(DSP)上运行。绑定到神经网络函数库的软件核1242可以限定将在包含DSP的边缘设备上加速的一组VMM函数。与这些加速函数相关联的VMM数据可以直接从集成DMA访问。来自主DSP的定制指令可以传递到***800的浮点引擎(统称为模拟矩阵乘法单元(MMU)),以执行向量-矩阵乘法。这些指令可以通过专用的互连在***总线上从主DSP传递到与模拟MMU位于同一处的DSP,该DSP的任务仅是利用I/O输入和输出模拟MMU纵横阵列(I/O DSP)。如前所述,忆阻器写更新和存储器管理任务可以由单独的基本DSP发起。该基本DSP可以通过定制RTL以及校准和补偿算法以及支持神经网络推理的非线性运算来实现VMM信号处理链逻辑块。
由于***800充当存储器内置处理设备从而将相乘权重直接存储在忆阻器设备中,因此存储器与发生VMM的纵横阵列之间的数据移动被最小化。一个目标是使用于包含VMM的MAC运算的输入数据输入到***800的纵横阵列和从所述***800的纵横阵列输出,并且该任务由专用I/O处理器管理,该专用I/O处理器可以是可配置的DSP。I/O处理器可以支持先前限定的定制指令集(包括定制加载和存储指令),以将数据移入和移出模拟矩阵乘法单元。它还可能具有高吞吐量接口(例如高速队列),以为模拟矩阵乘法单元提供足够的I/O带宽,以利用其计算能力。
具有I/O和基本处理器的3D模具堆叠:图13A至图13D是例示了在示例实施方式中以堆叠结构构造的***的框图。边缘计算设备内的关键考虑因素是空间效率,因为集成电路(IC)的占用空间应保持尽可能小。3D片上***(SoC)提供了一种减少IC占用空间并使SoC上的计算单元与存储器单元之间的吞吐量最大化的手段。
***800可以以多种不同的配置在3D SoC中实现。如在图13A至图13D中的各个示例结构中所示出的,可以使用硅通孔形成并连接单个2D IC层的3D堆叠,各个层包含I/O和基本处理器以及许多模拟引擎(例如,4个),该模拟引擎中包含给定尺寸(例如,128×128、256×256、512×512)的忆阻器纵横阵列。这些通孔用于将各个层彼此连接并连接至主DSP。堆叠中各个2D层的代表性尺寸可以是6mm×6.25mm,并且这些层的3D堆叠可以由多个(例如,4个)2D层形成。
尽管具体示出和描述了示例实施方式,但是本领域技术人员将理解,在不脱离由所附权利要求涵盖的实施方式的范围的情况下,可以对其进行形式和细节上的各种改变。

Claims (19)

1.一种电路,所述电路包括:
向量矩阵乘法(VMM)处理器,VMM处理器被配置为执行浮点VMM运算,各个浮点VMM处理器包括至少一个忆阻器网络,所述至少一个忆阻器网络具有以纵横结构布置的模拟忆阻器器件的阵列;以及
控制器,所述控制器被配置为与所述VMM处理器对接,所述控制器被配置为:
a)从存储器取回读取数据;
b)基于所述读取数据确定将被执行的矩阵乘法的类型;
c)生成具有特定于将被执行的矩阵乘法的所述类型的格式的输入矩阵;
d)确定所述浮点VMM运算的计算精度,并且根据输入矩阵的浮点元素解析符号数据字段、指数数据字段和尾数数据字段,以及
e)将输入矩阵数据发送给所述VMM处理器。
2.根据权利要求1所述的电路,其中,响应于所述类型是通用矩阵-矩阵(GEMM)乘法,所述控制器还被配置为:1)根据所述读取数据的逐行顺序来生成所述输入矩阵,以及2)将所述输入矩阵施加到所述VMM处理器的输入端,其中,所述VMM处理器还被配置为将所述输入矩阵施加到所述至少一个忆阻器网络。
3.根据权利要求2所述的电路,其中,所述VMM处理器的所述输入端包括VMM信号处理链,所述链包括数字逻辑块,所述数字逻辑块执行一组顺序功能以准备用于VMM的浮点数据,所述功能包括数据格式化、指数归一化/去归一化以及忆阻器网络映射/逆映射中的至少一者。
4.根据权利要求1所述的电路,其中,响应于所述类型是二维(2D)卷积和相关,所述控制器还被配置为:1)按照所述读取数据的交叠顺序生成所述输入矩阵,所述交叠顺序表示卷积运算的移位,以及2)将所述输入矩阵施加到所述VMM处理器的输入端,其中,所述VMM处理器还被配置为将所述输入矩阵施加到所述至少一个忆阻器网络。
5.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)识别从所述读取数据取回的浮点数的极值的指数;
b)根据所述指数确定所述浮点数的其它值的归一化指数,所述其它值是除所述极值以外的值;
c)通过用相应归一化指数取代相应指数来修改所述其它值;以及
d)基于所述归一化指数通过去归一化处理将来自所述至少一个忆阻器网络的结果数据转换为浮点值。
6.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)识别将被存储到至少一个忆阻器网络中的矩阵;
b)基于1)所述至少一个忆阻器网络的高电导状态和低电导状态以及2)所述矩阵的最高值和最低值来限定所述矩阵的映射系数;
c)基于所述映射系数限定将所述矩阵的元素与所述至少一个忆阻器网络的电导值相关的映射;
d)使所述VMM处理器根据所述映射将所述矩阵存储到所述至少一个忆阻器网络;以及
e)基于所述映射通过逆映射处理将来自所述至少一个忆阻器网络的结果数据转换为数值矩阵值。
7.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)基于将被执行的所述VMM运算,从主机处理器的指令高速缓存器接收多个指令,所述多个指令中的各个指令指定所述至少一个忆阻器网络的单个行的配置;并且
b)使所述VMM处理器经由所述至少一个忆阻器网络并行执行所述多个指令。
8.根据权利要求7所述的电路,其中,所述控制器还被配置为将所述多个指令作为超长指令字(VLIW)指令转发给所述VMM处理器。
9.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)从所述读取数据中识别将被写到所述至少一个忆阻器网络的列向量;
b)针对所述列向量中的各个列向量,1)生成表示所述至少一个忆阻器网络的层级的层的标识符,以及2)生成指示是否更新与该列向量相对应的值的标志位;并且
c)将所述列向量以及相应的标识符和标志位存储到所述存储器中。
10.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)从所述读取数据中识别将被写到所述至少一个忆阻器网络的矩阵列向量;
b)按照以下方式对所述矩阵列向量执行聚集操作:
i.在SRAM存储器的子库的集合中存储矩阵列向量,并且
ii.将矩阵列向量从SRAM存储器读取到请求队列中,通过子库地址/数据纵横路由到指定的聚集寄存器,并由VMM处理器从关联的聚集寄存器进行访问;
c)将聚集寄存器中包括的所述矩阵列向量映射到所述VMM处理器的所述至少一个忆阻器网络的纵横的电导值;以及
d)基于所述映射确定忆阻器权重值,以对所述VMM处理器的所述至少一个忆阻器网络进行编程。
11.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)从所述纵横读取电压输出;
b)将所述电压输出映射到数字矩阵值;以及
c)按照以下方式通过分散操作将所述数字矩阵值存储到存储器中:
i.所述VMM处理器将所述值写到关联的分散寄存器中,然后通过子库地址/数据纵横将这些值路由到指定的请求队列,并且将数据写到SRAM存储器的预期子库中,
ii.能够通过DMA访问将输出写到DRAM存储器。
12.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)从所述读取数据中取回将被写到所述至少一个忆阻器网络的向量输入数据值;
b)按照以下方式对所述向量输入数据执行聚集操作:
i.在SRAM存储器的子库的集合中存储向量输入数据,并且
ii.向量输入数据从SRAM存储器读取到请求队列中,然后通过子库地址/数据纵横路由到指定的聚集寄存器,并最终由VMM处理器从关联的聚集寄存器进行访问;
c)将所述向量输入数据值映射到所述VMM处理器中的所述至少一个忆阻器网络的纵横;以及
d)基于所述映射确定忆阻器电压,以对所述VMM处理器的所述至少一个忆阻器网络进行编程。
13.根据权利要求1所述的电路,其中,所述控制器还被配置为:
a)从所述读取数据中识别定制指令,所述定制指令限定与VMM相关联的操作;以及
b)使所述VMM处理器根据所述定制指令配置所述至少一个忆阻器网络。
14.根据权利要求13所述的电路,其中,所述定制指令包括用于以下项的加载/存储指令:1)将输入值编程到忆阻器纵横阵列行中,并且将乘法权重值编程到所述VMM处理器内的所述至少一个忆阻器网络中,以及2)将来自所述VMM处理器内的所述至少一个忆阻器网络的VMM输出值存储到存储器中。
15.根据权利要求13所述的电路,其中,所述定制指令包括用于以下项的VMM指令:1)限定包括VMM浮点精度的参数,2)将VMM数据格式化并将所述VMM数据映射到所述VMM处理器内的所述至少一个忆阻器网络中,以及3)通过利用VLIW处理分摊每操作的控制开销来方便获得更大的I/O带宽。
16.根据权利要求13所述的电路,其中,所述定制指令包括位操纵指令,所述位操纵指令对所述VMM处理器的浮点寄存器内的各个位的提取、***、移位、旋转和测试中的至少一项进行限定,其中,用于操纵尾数、指数和符号位的指令是在VMM信号处理链的较大处理内执行的。
17.根据权利要求13所述的电路,其中,所述定制指令包括事务存储器指令,所述事务存储器指令限定I/O效率和分散/聚集指令,并且所述定制指令还限定所述定制指令的原子操作,以方便协调从所述VMM处理器的所述至少一个忆阻器网络读取值/将值写到所述VMM处理器的所述至少一个忆阻器网络。
18.根据权利要求1所述的电路,其中,所述控制器还被配置为与神经网络片上***(SoC)对接,所述控制器被配置为:
a)包括一对数字信号处理器,使得:
i.一个数字信号处理器仅用于所述VMM处理器的所述至少一个忆阻器网络的I/O,
ii.第二数字信号处理器用于数字架构功能,诸如所述VMM信号处理链、存储器管理、非线性运算、定制指令处理和校准/补偿算法,
b)对接至所述神经网络片上***,使得:
i.所述SoC的任务是由神经网络模型描述符限定的神经网络推理工作载荷,并且包括将在VMM处理器上运行的一组核函数,
ii.所述模型描述符的核函数被编译成定制指令,所述定制指令将由所述神经网络片上***通过高速互连传递到所述一组数字信号处理器,
c)通过所述一组数字信号处理器接收和处理指令,以使所述VMM处理器执行VMM函数。
19.根据权利要求1所述的电路,其中,所述VMM处理器和所述控制器被配置在片上***中,所述片上***具有多个2D集成电路(IC)层的多层堆叠,所述多个层中的各个层包括所述至少一个忆阻器网络的子集,所述多个层中的各个层通过硅通孔(TSV)链接。
CN201880084392.0A 2017-12-29 2018-12-28 支持模拟协处理器的数字架构 Pending CN111542826A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762611870P 2017-12-29 2017-12-29
US62/611,870 2017-12-29
PCT/US2018/067889 WO2019133829A1 (en) 2017-12-29 2018-12-28 Digital architecture supporting analog co-processor

Publications (1)

Publication Number Publication Date
CN111542826A true CN111542826A (zh) 2020-08-14

Family

ID=67058373

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880084392.0A Pending CN111542826A (zh) 2017-12-29 2018-12-28 支持模拟协处理器的数字架构

Country Status (3)

Country Link
US (1) US10867239B2 (zh)
CN (1) CN111542826A (zh)
WO (1) WO2019133829A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506468A (zh) * 2020-12-09 2021-03-16 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器
CN114282164A (zh) * 2021-12-01 2022-04-05 北京大学 一种模拟计算矩阵乘法电路及其在dft/idft中的应用
CN114840809A (zh) * 2022-05-24 2022-08-02 深圳市畅娱时空网络科技有限公司 一种基于定点数的精确物理***同步方法
CN115454507A (zh) * 2022-11-10 2022-12-09 统信软件技术有限公司 多任务并行执行的方法、装置、计算设备及可读存储介质
CN115617717A (zh) * 2022-11-21 2023-01-17 上海亿铸智能科技有限公司 一种基于忆阻器的协处理器设计方法
CN115905791A (zh) * 2022-11-25 2023-04-04 湖南胜云光电科技有限公司 一种数字信号的处理***

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US11875245B1 (en) * 2018-02-22 2024-01-16 United States Of America As Represented By The Secretary Of The Air Force System, apparatus and method for spiking neural network
US10622087B2 (en) * 2018-03-01 2020-04-14 Hewlett Packard Enterprise Development Lp Integrated characterization vehicles for non-volatile memory cells
US10496374B2 (en) * 2018-03-22 2019-12-03 Hewlett Packard Enterprise Development Lp Crossbar array operations using ALU modified signals
EP3557485B1 (en) * 2018-04-19 2021-05-26 Aimotive Kft. Method for accelerating operations and accelerator apparatus
US11861429B2 (en) * 2018-04-30 2024-01-02 Hewlett Packard Enterprise Development Lp Resistive and digital processing cores
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10929778B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10440341B1 (en) * 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10528643B1 (en) * 2018-08-01 2020-01-07 Sandisk Technologies Llc Vector-matrix multiplication using non-volatile memory cells
CN108763163B (zh) * 2018-08-02 2023-10-20 北京知存科技有限公司 模拟向量-矩阵乘法运算电路
US10489483B1 (en) * 2018-09-21 2019-11-26 National Technology & Engineering Solutions Of Sandia, Llc Circuit arrangement and technique for setting matrix values in three-terminal memory cells
US11494625B2 (en) * 2018-10-03 2022-11-08 Maxim Integrated Products, Inc. Systems and methods for energy-efficient analog matrix multiplication for machine learning processes
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US10802994B1 (en) * 2019-01-08 2020-10-13 Tetramem Inc. Caliberating a plurality of conductances of columns in memristor crossbar based computing
US11256778B2 (en) 2019-02-14 2022-02-22 Micron Technology, Inc. Methods and apparatus for checking the results of characterized memory searches
US11042715B2 (en) * 2019-04-11 2021-06-22 International Business Machines Corporation Electronic system for performing a multiplication of a matrix and vector
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11449577B2 (en) * 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
CN111125616B (zh) * 2019-12-09 2021-11-19 华中科技大学 一种二维离散傅里叶变换运算电路及运算方法
CN111242293B (zh) * 2020-01-13 2023-07-18 腾讯科技(深圳)有限公司 一种处理部件、数据处理的方法以及电子设备
WO2021150952A1 (en) * 2020-01-23 2021-07-29 Spero Devices, Inc. Data flow architecture for processing with memory computation modules
US11539370B2 (en) * 2020-02-23 2022-12-27 Tetramem Inc. Analog to analog quantizer in crossbar array circuits for in-memory computing
CN113497763B (zh) * 2020-03-19 2024-06-07 华为技术有限公司 一种路由查找装置、方法和数据转发设备
US11604913B2 (en) * 2020-04-13 2023-03-14 Sync Computing Corp. Optimization processing unit having subunits that are programmably and partially connected
US11520855B2 (en) 2020-05-15 2022-12-06 International Business Machines Corportation Matrix sketching using analog crossbar architectures
US11562240B2 (en) 2020-05-27 2023-01-24 International Business Machines Corporation Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
KR20210154502A (ko) * 2020-06-12 2021-12-21 삼성전자주식회사 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
CN113867788A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
US20220012586A1 (en) * 2020-07-13 2022-01-13 Macronix International Co., Ltd. Input mapping to reduce non-ideal effect of compute-in-memory
US11966785B2 (en) * 2020-07-30 2024-04-23 Arm Limited Hardware resource configuration for processing system
US11200948B1 (en) * 2020-08-27 2021-12-14 Hewlett Packard Enterprise Development Lp System for a flexible conductance crossbar
US11790033B2 (en) 2020-09-16 2023-10-17 International Business Machines Corporation Accelerated Quasi-Newton methods on analog crossbar hardware
KR20220045357A (ko) * 2020-10-05 2022-04-12 삼성전자주식회사 전자 장치 및 이의 제어 방법
US11599360B2 (en) 2020-12-14 2023-03-07 Cognitive Science & Solutions, Inc. AI synaptic coprocessor
CN113449256B (zh) * 2021-07-13 2023-08-18 湖南大学 基于忆阻器的可编程fft方法及其电路结构
US20230031841A1 (en) * 2021-08-02 2023-02-02 Qualcomm Incorporated Folding column adder architecture for digital compute in memory
CN115840527A (zh) * 2021-09-22 2023-03-24 河北大学 应用于忆阻器阵列权重调制和图像识别的电路***
WO2023102722A1 (en) * 2021-12-07 2023-06-15 Intel Corporation Interleaved data loading system to overlap computation and data storing for operations
US20240169023A1 (en) * 2022-11-21 2024-05-23 Nvidia Corporation Application programming interface to indicate matrix multiply-accumulate

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929842A (zh) * 2012-10-23 2013-02-13 南京航空航天大学 基于fpaa的可重构矢量-矩阵乘法器设计方法
US20170052857A1 (en) * 2015-08-20 2017-02-23 Qsigma, Inc. Simultaneous Multi-Processor Apparatus Applicable to Acheiving Exascale Performance for Algorithms and Program Systems

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100919236B1 (ko) * 2007-05-22 2009-09-30 한국전자통신연구원 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법
US8352847B2 (en) * 2009-12-02 2013-01-08 Lsi Corporation Matrix vector multiplication for error-correction encoding and the like
US9152827B2 (en) 2012-12-19 2015-10-06 The United States Of America As Represented By The Secretary Of The Air Force Apparatus for performing matrix vector multiplication approximation using crossbar arrays of resistive memory devices
US9754203B2 (en) 2013-03-24 2017-09-05 Technion Research And Development Foundation Ltd. Analog multiplier using a memristive device and method for implemening Hebbian learning rules using memrisor arrays
US9715655B2 (en) 2013-12-18 2017-07-25 The United States Of America As Represented By The Secretary Of The Air Force Method and apparatus for performing close-loop programming of resistive memory devices in crossbar array based hardware circuits and systems
US10262733B2 (en) * 2014-10-29 2019-04-16 Hewlett Packard Enterprise Development Lp Memristive dot product engine for vector processing
KR20170078633A (ko) * 2014-10-30 2017-07-07 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 벡터 처리를 위한 더블 바이어스 멤리스티브 내적 엔진
US10996959B2 (en) 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
EP3268969B1 (en) * 2015-04-16 2019-06-05 Hewlett-Packard Enterprise Development LP Resistive memory arrays for performing multiply-accumulate operations
US9824753B2 (en) 2015-10-21 2017-11-21 Technische Universiteit Delft Computing device for “big data” applications using memristors
US10901939B2 (en) 2015-10-30 2021-01-26 International Business Machines Corporation Computer architecture with resistive processing units
US10061748B2 (en) * 2015-12-11 2018-08-28 Sap Se Adaptive tile matrix representation and multiplication
WO2017105460A1 (en) * 2015-12-17 2017-06-22 Hewlett Packard Enterprise Development Lp Improved computational accuracy in a crossbar array
US11579677B2 (en) * 2015-12-18 2023-02-14 Hewlett Packard Enterprise Development Lp Memristor crossbar arrays to activate processors
US10496855B2 (en) * 2016-01-21 2019-12-03 Hewlett Packard Enterprise Development Lp Analog sub-matrix computing from input matrixes
US10706922B2 (en) * 2016-01-26 2020-07-07 Hewlett Packard Enterprise Development Lp Memristive arrays with offset elements
WO2017131653A1 (en) * 2016-01-27 2017-08-03 Hewlett Packard Enterprise Development Lp In situ transposition
WO2017139342A1 (en) 2016-02-08 2017-08-17 Spero Devices, Inc. Analog co-processor
US9785615B1 (en) * 2016-06-24 2017-10-10 Hewlett Packard Enterprise Development Lp Memristive computation of a vector cross product
US20180341642A1 (en) * 2016-07-17 2018-11-29 Gsi Technology Inc. Natural language processing with knn
US9646243B1 (en) * 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
US10346347B2 (en) * 2016-10-03 2019-07-09 The Regents Of The University Of Michigan Field-programmable crossbar array for reconfigurable computing
US10241971B2 (en) * 2016-12-15 2019-03-26 Hewlett Packard Enterprise Development Lp Hierarchical computations on sparse matrix rows via a memristor array
US11157801B2 (en) * 2017-02-28 2021-10-26 Microsoft Technology Licensing, Llc Neural network processing with the neural network model pinned to on-chip memories of hardware nodes
US10171084B2 (en) * 2017-04-24 2019-01-01 The Regents Of The University Of Michigan Sparse coding with Memristor networks
US10055383B1 (en) * 2017-04-28 2018-08-21 Hewlett Packard Enterprise Development Lp Matrix circuits
US10496335B2 (en) * 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US10482929B2 (en) * 2017-07-13 2019-11-19 Qualcomm Incorporated Non-volative (NV) memory (NVM) matrix circuits employing NVM matrix circuits for performing matrix computations
US10460817B2 (en) * 2017-07-13 2019-10-29 Qualcomm Incorporated Multiple (multi-) level cell (MLC) non-volatile (NV) memory (NVM) matrix circuits for performing matrix computations with multi-bit input vectors
US10210138B2 (en) * 2017-07-19 2019-02-19 International Business Machines Corporation Higher accuracy of non-volatile memory-based vector multiplication
US10127494B1 (en) * 2017-08-02 2018-11-13 Google Llc Neural network crossbar stack
US10949766B2 (en) * 2017-10-15 2021-03-16 Gsi Technology Inc. Precise exponent and exact softmax computation
US10372787B2 (en) * 2017-12-12 2019-08-06 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations
US10283190B1 (en) * 2017-12-18 2019-05-07 Qualcomm Incorporated Transpose non-volatile (NV) memory (NVM) bit cells and related data arrays configured for row and column, transpose access operations
US10242737B1 (en) * 2018-02-13 2019-03-26 Macronix International Co., Ltd. Device structure for neuromorphic computing system
US10929503B2 (en) * 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929842A (zh) * 2012-10-23 2013-02-13 南京航空航天大学 基于fpaa的可重构矢量-矩阵乘法器设计方法
US20170052857A1 (en) * 2015-08-20 2017-02-23 Qsigma, Inc. Simultaneous Multi-Processor Apparatus Applicable to Acheiving Exascale Performance for Algorithms and Program Systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡海兵;吕征宇;钱照明;: "浮点协处理器设计及其在电力电子数字控制平台中的应用", 中国电机工程学报, no. 03 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506468A (zh) * 2020-12-09 2021-03-16 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器
CN114282164A (zh) * 2021-12-01 2022-04-05 北京大学 一种模拟计算矩阵乘法电路及其在dft/idft中的应用
CN114840809A (zh) * 2022-05-24 2022-08-02 深圳市畅娱时空网络科技有限公司 一种基于定点数的精确物理***同步方法
CN115454507A (zh) * 2022-11-10 2022-12-09 统信软件技术有限公司 多任务并行执行的方法、装置、计算设备及可读存储介质
CN115454507B (zh) * 2022-11-10 2023-03-24 统信软件技术有限公司 多任务并行执行的方法、装置、计算设备及可读存储介质
CN115617717A (zh) * 2022-11-21 2023-01-17 上海亿铸智能科技有限公司 一种基于忆阻器的协处理器设计方法
CN115617717B (zh) * 2022-11-21 2023-05-12 苏州亿铸智能科技有限公司 一种基于忆阻器的协处理器设计方法
CN115905791A (zh) * 2022-11-25 2023-04-04 湖南胜云光电科技有限公司 一种数字信号的处理***
CN115905791B (zh) * 2022-11-25 2023-08-04 湖南胜云光电科技有限公司 一种数字信号的处理***

Also Published As

Publication number Publication date
WO2019133829A1 (en) 2019-07-04
US10867239B2 (en) 2020-12-15
US20190205741A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
CN111542826A (zh) 支持模拟协处理器的数字架构
CN108780492B (zh) 模拟协处理器
EP3754561A1 (en) Reconfigurable memory compression techniques for deep neural networks
KR20220054357A (ko) 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템
WO2018106526A1 (en) Block floating point for neural network implementations
US20160196488A1 (en) Neural network computing device, system and method
Ranjan et al. X-mann: A crossbar based architecture for memory augmented neural networks
US20210397932A1 (en) Methods of performing processing-in-memory operations, and related devices and systems
Jain et al. Neural network accelerator design with resistive crossbars: Opportunities and challenges
JP4477959B2 (ja) ブロードキャスト型並列処理のための演算処理装置
US20170168775A1 (en) Methods and Apparatuses for Performing Multiplication
Sridharan et al. X-former: In-memory acceleration of transformers
US11429310B2 (en) Adjustable function-in-memory computation system
Liu et al. A simulation framework for memristor-based heterogeneous computing architectures
US11941371B2 (en) Bit string accumulation
US11443014B1 (en) Sparse matrix multiplier in hardware and a reconfigurable data processor including same
US20230289398A1 (en) Efficient Matrix Multiply and Add with a Group of Warps
US20210255861A1 (en) Arithmetic logic unit
US11537859B2 (en) Flexible precision neural inference processing unit
Liu et al. FPRA: A fine-grained parallel RRAM architecture
Lei et al. FPGA implementation of an exact dot product and its application in variable-precision floating-point arithmetic
Dey et al. An application specific processor architecture with 3D integration for recurrent neural networks
US20240143541A1 (en) Compute in-memory architecture for continuous on-chip learning
Xie Pin: A general-purpose computer architecture based on memristive devices
Kim et al. Cache Register Sharing Structure for Channel-level Near-memory Processing in NAND Flash Memory

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