CN110888824B - 多级存储器层级结构 - Google Patents

多级存储器层级结构 Download PDF

Info

Publication number
CN110888824B
CN110888824B CN201910840764.4A CN201910840764A CN110888824B CN 110888824 B CN110888824 B CN 110888824B CN 201910840764 A CN201910840764 A CN 201910840764A CN 110888824 B CN110888824 B CN 110888824B
Authority
CN
China
Prior art keywords
memory
stripes
data
buffer
dividing
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
CN201910840764.4A
Other languages
English (en)
Other versions
CN110888824A (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.)
Black Sesame Intelligent Technology Shanghai Co Ltd
Original Assignee
Black Sesame Intelligent Technology Shanghai 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 Black Sesame Intelligent Technology Shanghai Co Ltd filed Critical Black Sesame Intelligent Technology Shanghai Co Ltd
Publication of CN110888824A publication Critical patent/CN110888824A/zh
Application granted granted Critical
Publication of CN110888824B publication Critical patent/CN110888824B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection

Abstract

一种在卷积神经网络中分层构造多级存储器的方法,包括:将存储器划分为多个部分,将该多个部分划分为多个条带,在MAC阵列中利用来自所述多个条带的输入数据,将中间结果从MAC阵列输出到结果缓冲器的多个条带中的至少一个条带,将中间结果从结果缓冲器的多个条带中的至少一个条带回送到输入数据缓冲器的多个条带中的至少一个条带,并且将最终结果从结果缓冲器的多个条带中的至少一个条带输出到输出缓冲器的多个条带中的至少一个条带。

Description

多级存储器层级结构
技术领域
本公开涉及卷积神经网络,并且具体地提高了乘积累加的存储器存取效率。
背景技术
卷积神经网络的核心是频繁的数据操纵器和数据存取器。通过网络的数据在连续循环中被使用和再使用(reuse)。在乘积累加层附近,这种数据的循环经常重复。使用、寻址和存储,然后寻址和提取数据,并且再使用该相同的数据,代表了在当前系统中的低效率。所寻求的是一种更有效的存储器使用和再使用的方法。寻求一种根据存取频率、带宽、操作频率和通过距离将存储器划分为层级结构的方法。还寻求一种以使系统能够更快地存取数据的方式捕获和存储数据的方法。
发明内容
一种在卷积神经网络中分层构造多级存储器的第一示例方法,包括以下步骤中的至少一个步骤:将存储器划分为多个部分;将所述多个部分划分为多个条带;在乘积累加(MAC)阵列中利用来自所述多个条带的输入数据;将中间结果从MAC阵列输出到结果缓冲器的多个条带中的至少一个条带;将中间结果从结果缓冲器的多个条带中的至少一个条带回送(loopback)到输入数据缓冲器的多个条带中的至少一个条带;以及将最终结果从结果缓冲器的多个条带中的至少一个条带输出到输出缓冲器的多个条带中的至少一个条带。
在其中一个实施例中,所述方法还包括:划分出MAC权重缓冲器部分;划分出输入数据缓冲器部分;划分出结果缓冲器部分;划分出输出缓冲器部分;划分出共享数据缓冲器部分;划分出位测试权重存储器部分;划分出位测试数据存储器部分;和划分出外部随机存取存储器部分。
在其中一个实施例中,所述方法还包括:将所述输入数据缓冲器部分划分为多个输入缓冲数据条带;将所述结果缓冲器部分划分为多个结果缓冲器条带;将所述输出缓冲器部分划分为多个输出缓冲器条带;将所述共享数据缓冲器部分划分为多个共享数据条带;和将所述位测试数据存储器部分划分为多个位测试数据存储器条带。
在其中一个实施例中,所述方法还包括从所述外部随机存取存储器部分接收权重和输入数据;对来自所述位测试权重存储器部分的权重进行解压缩;和将解压缩的权重存储在所述MAC权重缓冲器部分中。
在其中一个实施例中,所述方法还包括:将输入数据从所述位测试数据存储器部分导入到所述共享数据缓冲器部分的所述多个条带中的至少一个条带;将所述输入数据从所述共享数据缓冲器部分的所述多个条带中的至少一个条带导入到所述输入数据缓冲器部分的所述多个条带中的至少一个条带;和在所述MAC阵列处从所述MAC权重缓冲器部分和所述输入数据缓冲器部分接收权重。
在其中一个实施例中,所述方法还包括:将所述最终结果从所述输出缓冲器部分的所述多个条带中的至少一个条带输出到所述共享数据缓冲器部分的所述多个条带中的至少一个条带;将所述最终结果从所述共享数据缓冲器部分的所述多个条带中的至少一个条带输出到所述位测试数据存储器部分的所述多个条带中的至少一个条带;和将所述最终结果从所述位测试数据存储器部分的所述多个条带中的至少一个条带输出到所述外部随机存取存储器部分。
在其中一个实施例中,所述方法还包括:将所述最终结果从所述输出缓冲器部分的所述多个条带中的至少一个条带输出到所述共享数据缓冲器部分的所述多个条带中的至少一个条带;将所述最终结果从所述共享数据缓冲器部分的所述多个条带中的至少一个条带输出到所述位测试数据存储器部分的所述多个条带中的至少一个条带;和将所述最终结果从所述位测试数据存储器部分的所述多个条带中的至少一个条带输出到所述外部随机存取存储器部分。
在其中一个实施例中,所述方法还包括:存储数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;存储所述数据集的高度分量,使得高度分量在所述存储器阵列中沿与所述第一地址方向正交的第二地址方向线性增加;和存储所述数据集的深度分量,使得深度分量在所述存储器阵列中沿与所述第一地址方向和所述第二地址方向对称的第三地址方向线性增加。
在其中一个实施例中,所述方法还包括:将所述多个输入缓冲数据条带划分为多个输入缓冲数据块;将所述多个结果缓冲器条带划分为多个结果缓冲器块;将所述多个输出缓冲器条带划分为多个输出缓冲器块;将所述多个输出缓冲器条带划分为多个共享数据块;和将所述多个输出缓冲器条带划分为多个位测试数据存储器块。
在其中一个实施例中,所述方法还包括:将输入数据从所述位测试数据存储器部分导入到所述共享数据缓冲器部分的所述多个块中的至少一个块;将所述输入数据从所述共享数据缓冲器部分的所述多个块中的至少一个块导入到所述输入数据缓冲器部分的所述多个块中的至少一个块;和在所述MAC阵列处从所述MAC权重缓冲器部分和所述输入数据缓冲器部分接收权重。
在其中一个实施例中,所述方法还包括:将所述最终结果从所述输出缓冲器部分的所述多个块中的至少一个块输出到所述共享数据缓冲器部分的所述多个块中的至少一个块;将所述最终结果从所述共享数据缓冲器部分的所述多个块中的至少一个块输出到所述位测试数据存储器部分的所述多个块中的至少一个块;和将所述最终结果从所述位测试数据存储器部分的所述多个块中的至少一个块输出到所述外部随机存取存储器部分。
在其中一个实施例中,所述方法还包括:存储数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;存储所述数据集的高度分量,使得高度分量在所述存储器阵列中沿与所述第一地址方向正交的第二地址方向线性增加;和存储所述数据集的深度分量,使得深度分量在所述存储器阵列中沿与所述第一地址方向和所述第二地址方向对称的第三地址方向线性增加。
在其中一个实施例中,所述方法还包括:存储数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;存储所述数据集的高度分量,使得高度分量在所述存储器阵列中沿与所述第一地址方向正交的第二地址方向线性增加;和存储所述数据集的深度分量,使得深度分量在所述存储器阵列中沿与所述第一地址方向和所述第二地址方向对称的第三地址方向线性增加。
在卷积神经网络中分层构造多级存储器的第二示例方法,包括以下步骤中的至少一个步骤:存储数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;存储数据集的高度分量,使得高度分量在存储器阵列中沿与第一地址方向正交的第二地址方向线性增加;以及存储数据集的深度分量,使得深度分量在存储器阵列中沿与第一地址方向和第二地址方向对称的第三地址方向线性增加。
在卷积神经网络中分层构造多级存储器的第三示例方法,包括以下步骤中的至少一个步骤:在第一存储器中存储三维数据集的宽度分量,使得宽度分量通过第一存储器地址空间线性增加;在第二存储器中存储三维数据集的高度分量,使得高度分量通过第二存储器地址空间线性增加;以及在第三存储器中存储三维数据集的深度分量,使得深度分量通过第三存储器地址空间线性增加。
附图说明
在附图中:
图1是根据本公开的一个实施例的第一示例系统图;
图2是根据本公开的一个实施例的第二示例系统图;
图3是根据本公开的一个实施例的示例自适应存储器层级结构;
图4是根据本公开的一个实施例的存储器条带和存储器块的第一示例;
图5是根据本公开的一个实施例的多存储器条带化的第二示例;
图6是根据本公开的一个实施例的存储器布局的第三示例;
图7是根据本公开的一个实施例的存储器布局的第四示例;
图8是根据本公开的一个实施例的形成存储器层级结构的第一示例方法;
图9是根据本公开的一个实施例的形成存储器层级结构的第二示例方法;以及
图10是根据本公开的一个实施例的形成存储器层级结构的第三示例方法。
具体实施方式
写出以下列出的实施例仅用于说明该装置和方法的应用,而不是限制范围。对该装置和方法的修改的等同形式应归入权利要求的范围内。
贯穿以下描述和权利要求使用某些术语来指代特定系统部件。如本领域技术人员将理解的,不同的公司可以以不同的名称来指代部件和/或方法。本文不打算区分名称不同但功能并非不同的部件和/或方法。
在下面的讨论和权利要求中,术语“包含(including)”和“包括(comprising)”以开放式的方式使用,并且因此可以被解释为意味着“包括,但不限于......”。此外,术语“耦合(couple)”或“耦合(第三人称)”旨在意味着间接或直接连接。因此,如果第一设备耦合至第二设备,则该连接可以是通过直接连接,或通过经由其它设备和连接件的间接连接。
图1描绘了示例混合计算系统100,其可以用于实施与过程800、900和1000的一个或多个部分或步骤的操作相关联的神经网。在该示例中,与混合系统相关联的处理器包括现场可编程门阵列(FPGA)122,图形处理器单元(GPU)120和中央处理单元(CPU)118。
处理单元118、120和122具有提供神经网的能力。CPU是可以执行许多不同功能的通用处理器,其通用性导致执行多个不同任务的能力,然而,其对多个数据流的处理是有限的并且其相对于神经网络的功能是非常有限的。GPU是具有许多能够依次处理并行任务的小处理核的一种图形处理器。FPGA是现场可编程器件,其具有被重新配置和以硬连线的电路的方式执行可编程到CPU或GPU中的任何功能的能力。由于FPGA的编程是以电路的形式,因此其速度比CPU快许多倍,并且明显快于GPU。
系统可以包含其他类型的处理器,例如加速处理单元(APU),其包括具有片上GPU元件的CPU和专用于执行高速数字数据处理的数字信号处理器(DSP)。专用集成电路(ASIC)也可以执行FPGA的硬连线功能,然而,设计和生产ASIC的前置时间大约是一年的若干个季度,而不是编程FPGA中可用的快速周转实现。
图形处理器单元120、中央处理单元118和现场可编程门阵列122彼此连接并且连接到存储器接口和控制器112。FPGA通过连接至存储器互连的可编程逻辑电路130而连接到存储器接口。由于FPGA以非常大的带宽工作的事实并且为了将FPGA中用来执行存储器任务的电子线路最小化,利用了这种附加的器件。存储器接口和控制器112被另外连接到持久性存储器磁盘110、系统存储器114和只读存储器(ROM)116。
可以利用图1的系统以对FPGA进行编程和训练。GPU可以很好地处理非结构化数据并且可以被利用以进行训练,一旦数据已经被训练,就可以找到确定性推理模型,并且CPU可以利用由GPU确定的模型数据对FPGA进行编程。
存储器接口和控制器连接到中央互连124,中央互连另外连接到GPU 120、CPU 118和FPGA 122。中央互连124另外连接到输入和输出接口128以及网络接口126。
图2描绘了可用于实施与过程600的一个或多个部分或步骤的操作相关联的神经网的第二示例混合计算系统200。在该示例中,与混合系统相关联的处理器包括现场可编程门阵列(FPGA)210和中央处理单元(CPU)220。
FPGA 210电连接到FPGA控制器212,FPGA控制器212与直接存储器存取(DMA)218接口连接。DMA连接到输入缓冲器214和输出缓冲器216,输入缓冲器214和输出缓冲器216两者都耦合到FPGA,以分别对进入FPGA和从FPGA出来的数据进行缓冲。DMA 218具有两个先进先出(FIFO)缓冲器,一个用于主CPU,另一个用于FPGA,DMA允许将数据写入适当的缓冲器以及从适当的缓冲器读取数据。
在DMA的CPU侧是主开关228,主开关228将数据和命令传送(shuttle)到DMA。DMA还连接到SDRAM控制器224,SDRAM控制器224允许将数据从CPU 220传送到FPGA和从FPGA传送到CPU 220,并且SDRAM控制器还连接到外部SDRAM 226和CPU 220。主开关228连接到外围设备接口230。闪存控制器222控制持久性存储器并且连接到CPU 220。
本公开讨论了可能的多级层级结构存储器系统。在图3所示的一个示例中,系统具有四个级别:外部随机存取存储器310,用于权重的片上共享随机存取存储器312和用于激活数据的片上共享随机存取存储器314,由多个阵列共享的共享缓冲器318,输出缓冲器320、输入数据缓冲器322和结果缓冲器324。该架构可以提供功耗和可持续存储器带宽之间的平衡。
存储器功耗与存取宽度、存取频率、操作频率、从存储器到计算元件的数据行进距离以及存储器位置成比例。片外随机存取存储器的存取的频率高并且功耗高。对大型片上共享存储器的宽数据访问是高度耗电的。
一种可能的解决方案是限制对本地随机存取存储器的高频率存取,并且将存储器与乘积累加阵列紧密耦合,以在实现高带宽的同时使功耗最小化。另一种可能的解决方案是利用智能调度来使对大存储器的存取最小化。
在图3中,元件348描绘了去往和来自外部随机存取存储器的数据通路。元件330、334和346描绘了权重读取路径。元件332、318和342描绘了激活数据输入路径。元件336、338、340和344描绘了将激活数据写回到位测试存储器(BTMEM)。
一种可能的存储器层级结构将数据/权重输入分解为多个逻辑分区以减少更昂贵的存储器存取,即随机存取存储器和/或BTMEM,并且以最小的存储器成本增加数据再使用。
网络被分为不同的部分:外部动态RAM 310、用于权重的位转移存储器(BTMEM_W)312、用于激活数据的位转移存储器(BTMEM_D)314、权重解压缩器316、共享数据缓冲器318、输出缓冲器320、输入数据缓冲器322、结果缓冲器324和乘积累加阵列328。
输入激活数据被划分为多个条带410(图4),使得条带化数据可以适合片上SRAM、位测试数据存储器(BTMEM_D)。用于条带的中间层的输出数据344被回送作为用于下一层的输入数据342,形成链接的处理顺序,这极大地减少了随机存取存储器存取。
每部分滤波器权重以高度压缩格式适配于位测试权重存储器(BTMEM_W),并且由权重解压缩器316解压缩并发送334至MAC权重缓冲器326。该部分中的条带再使用同一滤波器权重,这大大减少了外部RAM存取。
可以进一步将条带410(图4)划分为块(tile)412(图4)以增加局部累加并且削减执行延迟。在一个示例中,处理一个输入块的中间结果被保存在结果缓冲器324(图3)中,并且仅最终结果340(图3)在被写回到共享数据缓冲器318(图3)之前被发送至输出缓冲器320(图3)。
输入激活数据在一批内的每层是三维的。不同的引擎针对存储器的不同级别以及从不同的起始坐标以不同的顺序(例如深度到宽度到高度(D->W->H)或宽度到高度到深度(W->H->D))读取数据。
例如,在图5中的不同条带可以具有不同的起始坐标。图5说明了旋转偏移,示出了四个存储体。
为了支持非常高带宽的存取,示例存储器组织方案可以利用具有如图5所示的旋转偏移的多个堆积(banked)的存储器或具有如图6和图7所示的数据混合的多个堆积的存储器。
图6和7描绘了数据混合,该数据混合通过对于跨越存储体的不同地址,给予以Z->X->Y顺序读取的同一物理地址X->Y->Z,来支持不同的读取顺序。在图6和图7中示出了未对准的数据间距(data patch)。通过利用存储开销的小的存储百分比(在图6和7中被突出显示为“额外的”),实现了未对准的模式,使得通过向不同的存储体给予不同的地址来获得读取X-Y-Z、Y-X-Z或Z-X-Y顺序。
图8描绘了形成存储器层级结构的第一示例方法,包括将存储器划分810为多个部分(如图3所示):外部随机存取存储器310、用于权重的片上共享随机存取存储器312和用于激活数据的片上共享随机存取存储器314、由多个阵列共享的共享缓冲器318以及输出缓冲器320、输入数据缓冲器322和结果缓冲器324。该方法然后包括将所述多个部分划分812为多个条带410(图4),以及将所述多个条带划分814为多个块412(图4)。该方法然后包括在MAC阵列328(图3)中利用816来自所述多个块的输入数据,并将中间结果从MAC阵列输出818到结果缓冲器324(图3)的多个块中的至少一个块,以及将中间结果从所述结果缓冲器的多个块中的至少一个块回送820到输入数据缓冲器322(图3)的多个块中的至少一个块。该方法然后包括将最终结果从所述结果缓冲器的多个块中的至少一个块输出822到输出缓冲器320(图3)的多个块中的至少一个块。
图9描绘了形成如图5所示的存储器层级结构500的第二示例方法,包括:存储910数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;以及存储912数据集的高度分量,使得高度分量在存储器阵列中沿与第一地址方向正交的第二地址方向线性增加。该方法还包括存储914数据集的深度分量,使得深度分量在存储器阵列中沿与第一地址方向和第二地址方向对称的第三地址方向线性增加。
图10描绘了形成如图6和图7所示的存储器层级结构600,700的第三示例方法,包括:在第一存储器中存储1010三维数据集的宽度分量,使得宽度分量通过第一存储器地址空间线性增加;在第二存储器中存储1012三维数据集的高度分量,使得高度分量通过第二存储器地址空间线性增加;以及在第三存储器中存储1014三维数据集的深度分量,使得深度分量通过第三存储器地址空间线性增加。
本领域的技术人员将理解,本文中所描述的各种说明性的块、模块、元件、部件、方法和算法可被实施为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上面已经在功能方面对各种说明性的方框、模块、元件、部件、方法和算法进行了大致描述。将该功能实施为硬件还是软件取决于强加于整个系统的特定应用和设计约束。熟练的技术人员可以针对每个特定应用以不同方式实现所描述的功能。各种部件和块可以不同地布置(例如,以不同的顺序布置,或以不同的方式划分)而完全不脱离主题技术的范围。
应理解,所公开的过程中的步骤的特定顺序或层级是对示例方法的说明。基于设计偏好,可以理解的是,可以重新排列过程中的步骤的特定顺序或层级。一些步骤可以同时执行。所附方法权利要求以样本顺序呈现各个步骤的元素,并不意味着限制于所呈现的特定顺序或层级。
提供前面的描述是为了使本领域的技术人员能够实践本文中所描述的各个方面。前面的描述提供了主题技术的各种示例,并且主题技术不限于这些示例。对于本领域技术人员来说,对这些方面的各种修改是明显的,并且本文定义的一般原理可以应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是旨在使全部范围与权利要求的语言表述相一致,其中除非特别地如此说明,否则对单数元素的引用并非旨在表示“一个且仅一个”,而是表示“一个或多个”。除非另外特别说明,否则术语“一些”是指一个或多个。男性中的代词(例如,他的)包括女性和中性(例如,她的和它的),反之亦然。标题和副标题(如果有的话)仅用于方便而使用,并不限制本发明。谓词“被配置以”,“可操作以”和“被编程以”并不意味着对主语的任何特定的有形的或无形的修改,而是旨在可互换地使用。例如,被配置以监控和控制操作或部件的处理器,还可以意味着处理器被编程以监控和控制操作或处理器可操作以监控和控制操作。同样地,被配置以执行代码的处理器,可以被解释为被编程以执行代码或可操作以执行代码的处理器。
诸如“方面”之类的短语并不暗示这样的方面对于主题技术是必不可少的或者这样的方面适用于主题技术的所有配置。涉及一方面的公开可适用于所有配置或一个或多个配置。一个方面可提供一个或多个示例。诸如方面的短语可以指代一个或多个方面,反之亦然。诸如“实施例”之类的短语并不暗示这样的实施例对于主题技术是必不可少的或者这样的实施例适用于主题技术的所有配置。涉及一个实施例的公开可以适用于所有实施例或一个或多个实施例。实施例可以提供一个或多个示例。诸如“实施例”的短语可以指代一个或多个实施例,反之亦然。诸如“配置”之类的短语并不暗示这种配置对于主题技术是必不可少的或者这种配置适用于主题技术的所有配置。涉及一种配置的公开可以适用于所有配置或一个或多个配置。一种配置可以提供一个或多个示例。诸如“配置”的短语可以指代一个或多个配置,反之亦然。
本文使用“示例”一词来表示“用作示例或说明”。本文中描述为“示例”的任何方面或设计不必被解释为比其他方面或设计更优选或更具优势。
本领域普通技术人员已知或以后将知道的、贯穿本公开内容所描述的各个方面的元件的所有结构和功能等同物通过引用被明确地并入本文,并且旨在由权利要求所涵盖。此外,无论在权利要求中是否明确地叙述了这样的公开内容,本文所公开的内容都不旨在捐献于公众。除非使用短语“用于......的装置”明确地叙述该要素,或者在方法权利要求的情况下,使用短语“用于......的步骤”来叙述该要素,否则任何权利要求要素均不得根据35U.S.C.§112的规定进行解释。此外,关于在说明书或权利要求中使用术语“包括(include)”、“具有”或类似术语的含义,这样的术语旨在被包括在术语“包含”的方式内,类似于当“包括”在权利要求中被用作连接词时,对“包括”的解释那样。
对“一个实施例”、“实施例”、“一些实施例”、“各种实施例”或类似表述的引用指示特定元件或特性被包括在本发明的至少一个实施例中。尽管短语可能出现在各个地方,但短语不一定指的是同一实施例。结合本公开,本领域技术人员将能够设计和结合适合于实现上述功能的各种机制中的任何一种。
应当理解,本公开仅教导了说明性实施例的一个示例,并且本领域技术人员在阅读本公开之后可以容易地设计出本发明的许多变型,并且本发明的范围由以下权利要求确定。

Claims (11)

1.一种在卷积神经网络中分层构造多级存储器的方法,包括:
将存储器划分为多个部分;
将所述多个部分划分为多个条带;
在MAC阵列中利用来自所述多个条带的输入数据;
将中间结果从所述MAC阵列输出到结果缓冲器的所述多个条带中的至少一个条带;
将所述中间结果从所述结果缓冲器的所述多个条带中的至少一个条带回送到输入数据缓冲器的所述多个条带中的至少一个条带,形成链接的处理顺序;和
将最终结果从所述结果缓冲器的所述多个条带中的至少一个条带输出到输出缓冲器的所述多个条带中的至少一个条带。
2.根据权利要求1所述的分层构造多级存储器的方法,还包括:
划分出MAC权重缓冲器部分;
划分出输入数据缓冲器部分;
划分出结果缓冲器部分;
划分出输出缓冲器部分;
划分出共享数据缓冲器部分;
划分出位测试权重存储器部分;
划分出位测试数据存储器部分;和
划分出外部随机存取存储器部分。
3.根据权利要求2所述的分层构造多级存储器的方法,还包括:
将所述输入数据缓冲器部分划分为多个输入缓冲数据条带;
将所述结果缓冲器部分划分为多个结果缓冲器条带;
将所述输出缓冲器部分划分为多个输出缓冲器条带;
将所述共享数据缓冲器部分划分为多个共享数据条带;和
将所述位测试数据存储器部分划分为多个位测试数据存储器条带。
4.根据权利要求3所述的分层构造多级存储器的方法,还包括:
从所述外部随机存取存储器部分接收权重和输入数据;
对来自所述位测试权重存储器部分的权重进行解压缩;和
将解压缩的权重存储在所述MAC权重缓冲器部分中。
5.根据权利要求4所述的分层构造多级存储器的方法,还包括:
将输入数据从所述位测试数据存储器部分导入到所述共享数据缓冲器部分的所述多个条带中的至少一个条带;
将所述输入数据从所述共享数据缓冲器部分的所述多个条带中的至少一个条带导入到所述输入数据缓冲器部分的所述多个条带中的至少一个条带;和
在所述MAC阵列处从所述MAC权重缓冲器部分和所述输入数据缓冲器部分接收权重。
6.根据权利要求5所述的分层构造多级存储器的方法,还包括:
将所述最终结果从所述输出缓冲器部分的所述多个条带中的至少一个条带输出到所述共享数据缓冲器部分的所述多个条带中的至少一个条带;
将所述最终结果从所述共享数据缓冲器部分的所述多个条带中的至少一个条带输出到所述位测试数据存储器部分的所述多个条带中的至少一个条带;和
将所述最终结果从所述位测试数据存储器部分的所述多个条带中的至少一个条带输出到所述外部随机存取存储器部分。
7.根据权利要求6所述的分层构造多级存储器的方法,还包括:
存储数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;
存储所述数据集的高度分量,使得高度分量在所述存储器阵列中沿与所述第一地址方向正交的第二地址方向线性增加;和
存储所述数据集的深度分量,使得深度分量在所述存储器阵列中沿与所述第一地址方向和所述第二地址方向对称的第三地址方向线性增加。
8.根据权利要求3所述的分层构造多级存储器的方法,还包括:
将所述多个输入缓冲数据条带划分为多个输入缓冲数据块;
将所述多个结果缓冲器条带划分为多个结果缓冲器块;
将所述多个输出缓冲器条带划分为多个输出缓冲器块;
将所述多个输出缓冲器条带划分为多个共享数据块;和
将所述多个输出缓冲器条带划分为多个位测试数据存储器块。
9.根据权利要求8所述的分层构造多级存储器的方法,还包括:
将输入数据从所述位测试数据存储器部分导入到所述共享数据缓冲器部分的多个块中的至少一个块;
将所述输入数据从所述共享数据缓冲器部分的所述多个块中的至少一个块导入到所述输入数据缓冲器部分的所述多个块中的至少一个块;和
在所述MAC阵列处从所述MAC权重缓冲器部分和所述输入数据缓冲器部分接收权重。
10.根据权利要求9所述的分层构造多级存储器的方法,还包括:
将所述最终结果从所述输出缓冲器部分的所述多个块中的至少一个块输出到所述共享数据缓冲器部分的所述多个块中的至少一个块;
将所述最终结果从所述共享数据缓冲器部分的所述多个块中的至少一个块输出到所述位测试数据存储器部分的所述多个块中的至少一个块;和
将所述最终结果从所述位测试数据存储器部分的所述多个块中的至少一个块输出到所述外部随机存取存储器部分。
11.根据权利要求10所述的分层构造多级存储器的方法,还包括:
存储数据集的宽度分量,使得宽度分量在存储器阵列中沿第一地址方向线性增加;
存储所述数据集的高度分量,使得高度分量在所述存储器阵列中沿与所述第一地址方向正交的第二地址方向线性增加;和
存储所述数据集的深度分量,使得深度分量在所述存储器阵列中沿与所述第一地址方向和所述第二地址方向对称的第三地址方向线性增加。
CN201910840764.4A 2018-09-07 2019-09-06 多级存储器层级结构 Active CN110888824B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862728294P 2018-09-07 2018-09-07
US62/728,294 2018-09-07
US16/287,727 2019-02-27
US16/287,727 US11367498B2 (en) 2018-09-07 2019-02-27 Multi-level memory hierarchy

Publications (2)

Publication Number Publication Date
CN110888824A CN110888824A (zh) 2020-03-17
CN110888824B true CN110888824B (zh) 2022-04-22

Family

ID=69720002

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910840764.4A Active CN110888824B (zh) 2018-09-07 2019-09-06 多级存储器层级结构

Country Status (2)

Country Link
US (1) US11367498B2 (zh)
CN (1) CN110888824B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423284B2 (en) * 2018-09-07 2022-08-23 Black Sesame Technologies, Inc Subgraph tile fusion in a convolutional neural network
US11704150B2 (en) * 2020-05-27 2023-07-18 Acronis International Gmbh Systems and methods for dynamic job performance in secure multiparty computation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108133268A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为牺牲高速缓存或神经网络单元存储器操作的存储器阵列的处理器
CN108133269A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为高速缓存存储器或神经网络单元存储器操作的存储器阵列的处理器
US10049721B1 (en) * 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832297B2 (en) * 2001-08-09 2004-12-14 International Business Machines Corporation Method and apparatus for managing data in a distributed buffer system
US9535732B2 (en) * 2009-11-24 2017-01-03 Red Hat Israel, Ltd. Zero copy transmission in virtualization environment
KR20120121225A (ko) * 2011-04-26 2012-11-05 에스케이하이닉스 주식회사 반도체 칩을 멀티테스트하기 위한 장치 및 방법
US8645774B2 (en) * 2011-12-13 2014-02-04 International Business Machines Corporation Expedited memory drive self test
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
KR20180012439A (ko) * 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
US10949736B2 (en) * 2016-11-03 2021-03-16 Intel Corporation Flexible neural network accelerator and methods therefor
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10417560B2 (en) * 2016-12-01 2019-09-17 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs efficient 3-dimensional convolutions
WO2018121472A1 (zh) * 2016-12-28 2018-07-05 上海寒武纪信息科技有限公司 一种运算方法
US10417364B2 (en) * 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
CN107704922B (zh) * 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
CN108133270B (zh) * 2018-01-12 2020-08-04 清华大学 卷积神经网络加速方法及装置
CN108241890B (zh) * 2018-01-29 2021-11-23 清华大学 一种可重构神经网络加速方法及架构
US11487846B2 (en) * 2018-05-04 2022-11-01 Apple Inc. Performing multiply and accumulate operations in neural network processor
US10411709B1 (en) * 2018-07-25 2019-09-10 Xilinx, Inc. Circuit arrangements and methods for dividing a three-dimensional input feature map

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108133268A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为牺牲高速缓存或神经网络单元存储器操作的存储器阵列的处理器
CN108133269A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 具有可作为高速缓存存储器或神经网络单元存储器操作的存储器阵列的处理器
US10049721B1 (en) * 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations

Also Published As

Publication number Publication date
US11367498B2 (en) 2022-06-21
US20200082898A1 (en) 2020-03-12
CN110888824A (zh) 2020-03-17

Similar Documents

Publication Publication Date Title
US11694066B2 (en) Machine learning runtime library for neural network acceleration
US11947798B2 (en) Packet routing between memory devices and related apparatuses, methods, and memory systems
US10678479B1 (en) Registers for restricted memory
US10768856B1 (en) Memory access for multiple circuit components
US10515135B1 (en) Data format suitable for fast massively parallel general matrix multiplication in a programmable IC
EP3105761B1 (en) Memory physical layer interface logic for generating dynamic random access memory (dram) commands with programmable delays
CN110582745B (zh) 存储器装置及可促进张量存储器存取的方法
US20160105494A1 (en) Fast Fourier Transform Using a Distributed Computing System
CN110888824B (zh) 多级存储器层级结构
WO2020210329A1 (en) Domain assist processor-peer for coherent acceleration
EP3827356A1 (en) Unified address space for multiple hardware accelerators using dedicated low latency links
US20220092398A1 (en) Method and Apparatus for Offloading Tasks to Accelerator for Enhancing System Performance Using Configurable Devices
CN108491924B (zh) 一种面向人工智能计算的神经网络数据串行流水处理装置
CN108304926B (zh) 一种适用于神经网络的池化计算装置及方法
US9135984B2 (en) Apparatuses and methods for writing masked data to a buffer
CN117255987A (zh) 增加合成孔径雷达的高速缓存命中
CN111886605B (zh) 针对多个输入数据集的处理
CN101939733A (zh) 外部设备存取装置、其控制方法及系统大规模集成电路
RU2643622C1 (ru) Вычислительный модуль
EP4016300A1 (en) Low overhead memory content estimation
CN115563053A (zh) 高性能片上内存控制器及其执行的方法
US11704535B1 (en) Hardware architecture for a neural network accelerator
US10169271B1 (en) Direct memory access descriptor
JP7152343B2 (ja) 半導体装置
Ibrahim et al. Extending Data Flow Architectures for Convolutional Neural Networks to Multiple FPGAs

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