CN110058802A - 存储装置及控制存储器装置的方法 - Google Patents

存储装置及控制存储器装置的方法 Download PDF

Info

Publication number
CN110058802A
CN110058802A CN201811532772.4A CN201811532772A CN110058802A CN 110058802 A CN110058802 A CN 110058802A CN 201811532772 A CN201811532772 A CN 201811532772A CN 110058802 A CN110058802 A CN 110058802A
Authority
CN
China
Prior art keywords
value
feature vector
input feature
row
look
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811532772.4A
Other languages
English (en)
Other versions
CN110058802B (zh
Inventor
谷芃
克里希纳·T·马拉迪
郑宏忠
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110058802A publication Critical patent/CN110058802A/zh
Application granted granted Critical
Publication of CN110058802B publication Critical patent/CN110058802B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/064Management of blocks
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/023Free address space 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0673Single storage device
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开一种存储装置及一种控制存储器装置的方法。所述存储装置包括主机、逻辑裸片及包括存储裸片的高带宽存储器堆叠。在所述存储裸片的存储阵列上存储有计算查找表。所述主机发送命令来利用内核及多个输入特征图执行运算,所述运算包括找到所述内核的权重与多个输入特征图的值的乘积。所述计算查找表包括与所述内核的权重对应的行及与所述输入特征图的值对应的列。存储在与一行及一列对应的位置处的结果值是与所述行对应的权重和与所述列对应的值的乘积。

Description

存储装置及控制存储器装置的方法
技术领域
本公开涉及存储器,且更具体来说,涉及用于深度学习加速器的高带宽存储器。
[本公开的目标]
根据本公开的各个方面,提供一种存储装置。
背景技术
包括深度神经网络的机器学习应用可涉及具有显著的计算或存储要求的大量运算。因此,机器学习应用可能需要大量资源来对不同的数据集进行训练并准确地学习。包括图形算法的其他计算应用提出了更高的计算及存储要求。已使用在存储器中进行的处理以通过在存储块中而非在中央处理器(Central Processing Unit,CPU)中执行计算来解决这些关切问题中的一些关切问题。
发明内容
根据本公开的各个方面,提供一种存储装置。所述存储装置包括:主机,发送命令来利用内核及多个输入特征图执行运算。所述内核包括多个权重,且所述输入特征图包括多个值。所述运算包括确定所述内核的第一权重与所述多个输入特征图中的两个或更多个输入特征图中的每一者的所述多个值中的第一值的乘积。所述存储装置包括逻辑裸片,所述逻辑裸片耦合到所述主机且被配置成接收所述命令。所述存储装置还包括高带宽存储器(high bandwidth memory,HBM)堆叠,所述高带宽存储器堆叠包括存储裸片,所述存储裸片耦合到所述逻辑裸片且包括存储阵列。所述内核及所述多个输入特征图存储在所述存储阵列中。在所述存储阵列中存储有计算查找表,所述计算查找表具有多个行,所述多个行中的一行对应于所述内核的所述多个权重中的一者,所述计算查找表具有多个列,所述多个列中的一列对应于所述多个输入特征图的所述值中的一者。在所述计算查找表中的一位置处存储有结果值,所述位置对应于所述多个行中的一行及所述多个列中的一列,所述结果值是与所述一行对应的权重和与所述一列对应的值的乘积。
在一些实施例中,所述存储装置包括:第一行解码器,其中所述存储裸片将所述第一权重输入到所述第一行解码器中以将所述计算查找表的与所述第一权重对应的所述行加载到行缓冲器中;及第二行解码器,其中所述存储裸片将所述第一权重输入到所述第二行解码器中以将所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值加载到中间缓冲器中。
在一些实施例中,所述存储装置包括列存取排程器及列解码器,其中所述列存取排程器被配置成从所述中间缓冲器接收所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值,且针对所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的每一个第一值,控制所述列解码器存取所述行缓冲器中与和所述第一值对应的所述列对应的位置处的所述结果值,并将所述结果值输出到读取缓冲器。
在一些实施例中,所述逻辑裸片包括处理元件,其中所述读取缓冲器在接收到所述中间缓冲器中每一第一值的所述结果值时,将每一个第一值的所述结果值输出到所述逻辑裸片,且所述处理元件被配置成处理每一个第一值的所述结果值。
在一些实施例中,所述处理元件被配置成接收与和第一输入特征图对应的所述第一值对应的所述结果值,且被配置成将所接收的所述结果值与所述第一输入特征图的其他所接收的结果值进行组合以产生所述第一输入特征图的输出值。
在一些实施例中,所述主机发送第二命令来利用第二内核及第二多个输入特征图执行第二运算,在所述存储阵列中存储有第二计算查找表,所述第二计算查找表具有多个行,所述第二计算查找表的所述多个行中的一行对应于所述第二内核的所述多个权重中的一者,所述第二计算查找表具有多个列,所述第二计算查找表的所述多个列中的一列对应于所述第二多个输入特征图的所述值中的一者,且在所述第二计算查找表中的位置处存储有结果值,所述位置对应于所述第二计算查找表的所述多个行中的一行及所述第二计算查找表的所述多个列中的一列,所述结果值是与所述行对应的所述权重和与所述列对应的所述值的乘积。
在一些实施例中,所述第二命令是执行卷积运算,将所述第二内核与所述第二多个输入特征图中的两个或更多个输入特征图进行卷积。
在一些实施例中,所述命令是执行矩阵乘法运算,将所述内核与所述多个输入特征图中的所述两个或更多个输入特征图相乘。
在一些实施例中,所述存储装置被配置成基于所述命令而将所述内核、所述多个输入特征图及所述计算查找表存储在所述存储阵列中。
在一些实施例中,所述存储阵列的被分配给所述计算查找表的百分比是基于由所述命令所标识的所述运算。
根据本公开的另一个方面,提供一种控制存储器装置的方法。所述方法包括:向逻辑裸片发送命令来利用内核及多个输入特征图执行运算,所述内核包括多个权重,所述输入特征图包括多个值,所述运算包括确定所述内核的第一权重与所述多个输入特征图中的两个或更多个输入特征图的所述多个值中的第一值的乘积;将所述内核及所述多个输入特征图存储在存储阵列中;将计算查找表存储在所述存储阵列中,所述计算查找表具有多个行,所述多个行中的一行对应于所述内核的所述多个权重中的一者,所述计算查找表具有多个列,所述多个列中的一列对应于所述多个输入特征图的所述值中的一者,其中在所述计算查找表中的一位置处存储有结果值,所述位置对应于所述多个行中的一行及所述多个列中的一列,所述结果值是与所述行对应的所述权重与和所述列对应的所述值的乘积。
在一些实施例中,所述方法包括:将所述第一权重输入到第一行解码器中以将所述计算查找表的与所述第一权重对应的所述行加载到行缓冲器中,以及将所述第一权重输入到第二行解码器中以将所述多个输入特征图中的所述两个或更多个输入特征图的所述第一值加载到中间缓冲器中。
在一些实施例中,所述方法包括从所述中间缓冲器接收所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值,针对所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的每一个第一值,存取所述行缓冲器中与和所述第一值对应的所述列对应的位置处的所述结果值,以及将所述结果值输出到读取缓冲器。
在一些实施例中,所述方法包括:在接收到所述中间缓冲器中所述第一值中的每一者的所述结果值时,将每一个第一值的所述结果值输出到所述逻辑裸片;以及由处理元件处理每一个第一值的所述结果值。
在一些实施例中,由所述处理元件进行的处理是:接收与和第一输入特征图对应的所述第一值对应的所述结果值,并将所接收的所述结果值与第一输入特征图的其他所接收的结果值进行组合以产生所述第一输入特征图的输出值。
在一些实施例中,所述方法包括:向所述逻辑裸片发送第二命令来利用第二内核及第二多个输入特征图执行第二运算;以及将第二计算查找表存储在所述存储阵列中,所述第二计算查找表具有多个行,所述第二计算查找表的所述多个行中的一行对应于所述第二内核的所述多个权重中的一者,所述第二计算查找表具有多个列,所述第二计算查找表的所述多个列中的一列对应于所述第二多个输入特征图的所述值中的一者,其中在所述第二计算查找表中的一位置处存储有第二结果值,所述位置对应于所述第二计算查找表的所述多个行中的一行及所述第二计算查找表的所述多个列中的一列,所述结果值是与所述行对应的所述权重和与所述列对应的所述值的乘积。
在一些实施例中,所述第二命令是执行卷积运算,将所述第二内核与所述第二多个输入特征图中的两个或更多个输入特征图进行卷积。
在一些实施例中,所述命令是执行矩阵乘法运算,将所述内核与所述多个输入特征图中的所述两个或更多个输入特征图相乘。
在一些实施例中,所述方法包括:基于所述命令而将所述内核、所述多个输入特征图及所述计算查找表存储在所述存储阵列中。
在一些实施例中,所述存储阵列的被分配给所述计算查找表的百分比是基于由所述命令所标识的所述运算。
通过参照附图阅读示例性实施例的以下详细说明,对所述领域中的技术人员而言,本公开的以上及其他方面将变得更显而易见。
[本发明的有益效果]
根据本公开的各个方面,在动态随机存取存储器(dynamic random accessmemory,DRAM)裸片上进行的存储查找计算以及在逻辑裸片中进行的累加运算可完全重叠以使得硬件处于完全利用状态且可得到高的总体吞吐量。
附图说明
图1示出根据本公开实施例的加速器卡100。
图2是绘示加速器卡100的侧视图的方块图。
图3是根据本公开实施例的DRAM裸片121及逻辑裸片123的方块图。
图4是根据本公开实施例的处理块320的实施例。
图5示出根据本公开实施例的批量卷积运算。
图6示出图5所示批量卷积运算的输出。
图7示出根据本公开实施例的批量矩阵乘法运算。
图8是示出根据本公开实施例的逐点运算的方块图。
[符号的说明]
100:加速器卡;
110:主机;
120:DRAM堆叠;
120A、120B、120C、120D:存储器堆叠/DRAM堆叠;
121:DRAM裸片;
121A、121B、121C、121D:存储裸片;
123、850:逻辑裸片;
125:加速器裸片;
130:中间层;
140:封装衬底;
210:模型参数/模型参数阵列/模型参数存储阵列;
220:中间结果/中间结果阵列/中间结果存储阵列;
230:计算查找表/第一计算查找表/第二计算查找表;
240:写入缓冲器;
250:排程器;
260:请求/响应队列;
270:读取缓冲器;
310:输出缓冲器;
320、320A、320B:处理块;
321:输入缓冲器;
323:输出缓冲器;
325:分派程序;
327A、327B、327C、327D:处理元件;
330:命令队列;
340:输入缓冲器;
360:排程器;
370:控制器;
510、710:输入特征图;
520、720:内核;
610:输出矩阵;
712:输入行;
722:列;
810:输入特征图表;
820:计算查找表;
I1_P1_w1、I1_P2_w1、I1_P3_w1、I2_P1_w1、I2_P2_w1、I2_P3_w1、I3_P1_w1、I3_P2_w1、I3_P3_w1:值;
k1_w1:权重/第一权重;
P1、P2、P3:输出值。
具体实施方式
在以下详细说明中,仅以例示方式示出并阐述本发明的某些示例性实施例。如所属领域中的技术人员将了解,本发明可被实施为许多不同形式且不应被视为仅限于本文所述实施例。对每一个示例性实施例内的特征或方面的说明通常应被视为可用于其他示例性实施例的其他相似的特征或方面。相同的参考编号在本说明书通篇中表示相同的元件。
图1示出根据本公开实施例的加速器卡100(例如,图形卡)。加速器卡100可利用高带宽存储器(“HBM”)架构,例如第二代HBM(HBM2)架构。加速器卡100包括主机110及多个存储器堆叠120A到120D(在下文中称为“动态随机存取存储器堆叠(DRAM stack)”)。图2是绘示加速器卡100的侧视图的方块图。图2所示方块图包括DRAM堆叠120中的一者。DRAM堆叠120包括多个存储裸片121A到121D(在下文中称为“DRAM裸片”)及逻辑裸片123。在一些实施例中,DRAM堆叠120可包括加速器裸片125,且加速器裸片125可与逻辑裸片123合作执行运算或代替逻辑裸片123执行运算。
主机110通过中间层(interposer)130连接到逻辑裸片123。中间层130可被设计成使主机110利用HBM架构与所述多个DRAM堆叠120A到120D进行通信。中间层130连接到可在主机110与外部***之间提供接口的封装衬底140(例如,封装衬底140可包括***组件互连快速(Peripheral component interconnect express,PCIe)连接件)。
图3是根据本公开实施例的DRAM裸片121及逻辑裸片123的方块图。DRAM裸片121包括写入缓冲器240、排程器250、请求/响应队列260及读取缓冲器270。DRAM裸片121在一个或多个存储阵列中可包括模型参数210、中间结果220及一个或多个计算查找表230。写入缓冲器240及读取缓冲器270用作DRAM裸片121的输入点及输出点,且排程器250及请求/响应队列260控制DRAM裸片121上的数据流。
逻辑裸片123包括输出缓冲器310、一个或多个处理块320A到320B、命令队列330、输入缓冲器340、排程器360及控制器370。图4是根据本公开实施例的处理块320的实施例。参照图4,处理块320具有用于临时存储输入值(例如,逐点乘法结果或者卷积运算或矩阵乘法运算的部分结果)的输入缓冲器321以及用于临时存储计算结果的输出缓冲器310。处理块320包括分派程序(dispatcher)325及多个处理元件327A到327D。分派程序325负责将输入缓冲器321中的数据传输到处理元件327A到327D中并将数据从处理元件327A到327D传输到输出缓冲器323。
再次参照图3,逻辑裸片123的输入缓冲器340及输出缓冲器310存储用于逻辑裸片123的数据。控制器370负责与主机110进行通信,且排程器360负责对计算任务进行排程。
控制器370从主机110接收命令。响应于命令,控制器370可基于命令的内容来指示排程器360对任务进行排程。排程器360可请求命令队列330将预计算数据发送到DRAM裸片121。在一些实施例中,预计算数据可与命令一起从主机110接收。在一些实施例中,预计算数据由逻辑裸片123计算,例如由控制器370基于来自主机110的命令计算。预计算数据可包括一个或多个内核的权重、一个或多个输入特征图和/或一个或多个计算查找表的值。DRAM裸片121可将预计算数据从输出缓冲器310临时读取到写入缓冲器240,且排程器250可将预计算数据存储在模型参数阵列210或中间结果阵列220中。所述一个或多个内核的权重可存储在模型参数阵列210中,且所述多个输入特征图可存储在中间结果阵列220中。
在计算查找表230中,值存储在与行及列对应的位置中。行与列的每一组合构成一位置,在此位置处存储有值。在一些实施例中,主机110可对计算查找表230的内容进行计算并将所述内容发送到加速器卡100。在一些实施例中,计算查找表可从主机存储器加载。在一些实施例中,主机110可启动逻辑裸片123上的程序,因此逻辑裸片123将计算计算查找表的内容。
计算查找表230可被配置成支持预配置值的逐位处理,例如逐位乘法。计算查找表230可包括与第一组预配置值(例如,内核的权重)的每一个可能值对应的一行,且可包括与第二组预配置值(例如,输入特征图中的值)的每一个可能值对应的一列。存储在每一个位置处的值是与这一位置的行相关联的值和与这一位置的列相关联的值的乘积。为将第一组预配置值中的一者乘以第二组预配置值中的一者,DRAM裸片121可对计算查找表230执行查找运算以找到与所述第一组预配置值中的所述一者的值对应的行并将这一行数据移动到行缓冲器。DRAM裸片121可接着对行缓冲器中的行数据执行列查找运算来找到与第二组预配置值中的一者的值对应的列的项,且可将这一运算处的值输出到读取缓冲器270。
应注意,尽管以上使用逐点乘法作为说明性实例,然而,本公开并非仅限于此,且其他逐点运算也处于本公开的范围内。所述运算可包括算术(例如,指数)运算和/或逻辑(例如,异或)运算。在一些实施例中,DRAM裸片121包括与不同的逐点运算对应的多个计算查找表230(或者在一个计算查找表230中针对每一个值包括多个行,其中每一个逐点运算一个行)。举例来说,在第一计算查找表230中,每一个位置处的值可对应于和这一位置的行及列对应的值的乘积,且在第二计算查找表230中,每一个位置处的值可对应于和这一位置的行及列对应的值的商。排程器250可通过对计算查找表230中与这一逐点运算对应的行和/或列存取运算进行排程来确定要执行哪一个逐点运算。
读取缓冲器270的内容被串流输出到逻辑裸片123的输入缓冲器340。排程器360可将数据从输入缓冲器340复制到处理块320的输入缓冲器321,且处理块320的处理元件327A到327D可对数据执行附加处理并将所述数据输出到处理块的输出缓冲器323。
在DRAM裸片121上进行的存储查找计算以及在逻辑裸片123中进行的累加运算可完全重叠以使得硬件处于完全利用状态且可得到高的总体吞吐量。
在一些实施例中,被配置为计算查找表230的存储阵列或子阵列的数目可基于从主机110接收的命令类型。对具有高计算对存储比率(compute-to-memory ratio)的命令来说,可将较多子阵列配置成计算查找表,且对具有低计算对存储比率的命令来说,可将较少的子阵列配置成计算查找表。内核的计算对存储比率可指从计算查找表存取的每一个元素的运算(例如,逐点运算)数目。包含计算查找表数据的存储子阵列的比率可为OPA*M/N,其中OPA是针对所存取的每一个元素执行的逐点运算的数目,M是每一个存储子阵列在每一个循环可提供的元素的数目,且N是每一个计算查找表在每一个循环可提供的逐点运算的数目。
图5示出根据本公开实施例的批量卷积运算。图6示出图5所示批量卷积运算的输出。参照图5及图6,批量卷积运算可由上述DRAM堆叠120执行。主机110可将命令发送到控制器370,从而指示控制器370利用多个输入特征图510以及一个或多个内核520执行批量卷积运算。所述多个输入特征图510可存储在中间结果存储阵列220中,且所述一个或多个内核520可存储在模型参数阵列210中。可将批次大小理解为输入特征图510的数目。每一个输入特征图510可为具有宽度、高度及深度的值的三维阵列,且可将输入信道理解为深度。内核520可为内核高度小于输入特征映射高度、内核宽度小于输入特征映射宽度且深度等于输入特征映射深度(即,等于输入信道)的值的三维阵列。
内核520是例如以重复的网格图案形式应用在整个输入特征图510中的多个位置处。在每一个位置处,将内核520中的权重乘以输入特征图510的对应值。将给定位置处的每一个权重与输入特征图510的对应值的乘积加在一起以得到这一输入特征图中的这一位置的输出值P1、P2、P3,且对给定输入特征图510中的每一个位置的值进行组合以形成这一输入特征图与内核组合的输出矩阵610。对每一个内核及对每一个输入特征图重复进行所述过程。
内核的权重可被称为kj_wi,其中j标识内核且i是这一权重在内核内的具***置,且输入特征图的值可被称为Ix_Py_wz,其中x标识输入特征图,y是输入特征图上内核的位置,且z是输入特征图中值的具***置(其直接对应于内核的i)。如图5中所示,权重k1_w1对应于第一内核中的所示位置。为产生图6所示输出,将权重k1_w1乘以值I1_P1_w1、I1_P2_w1、I1_P3_w1、I2_P1_w1、I2_P2_w1、I2_P3_w1中的每一者、以及每一个输入特征图510中的每一位置中的相似值。
图7示出根据本公开实施例的批量矩阵乘法运算。批量矩阵乘法运算可由上述DRAM堆叠120执行。主机110可将命令发送到控制器370,从而指示控制器370利用多个输入特征图710以及一个或多个内核720执行批量矩阵乘法运算。所述多个输入特征图710可存储在中间结果存储阵列220中,且所述一个或多个内核720可存储在模型参数存储阵列210中。可将批次大小理解为输入特征图710的数目。每一个输入特征图710可为具有宽度及高度的值的二维矩阵,且可在高度方向上被划分成输入行712。内核720可为具有宽度及高度的权重的二维阵列,且可在宽度方向上被划分成列722。输入特征图710的高度(且因此行的数目)可等于内核720的宽度(且因此列的数目)。为产生内核720的输出,可将内核720的一列中的每一个权重乘以每一个输入特征图710的每一个行中的对应值。举例来说,内核的权重可被称为kj_wi,其中j是权重的列且i是权重在列中的位置,且输入特征图的值可被称为Ix_Py_wz,其中x标识输入特征图,y是值的行,且z是值在行中的位置。如图7中所示,为成批地产生每一个输入特征图710的输出,将权重k1_w1乘以值I1_P1_w1、I1_P2_w1、I1_P3_w1、I2_P1_w1、I2_P2_w1、I3_P1_w1、I3_P2_w1、I3_P3_w1中的每一者、以及每一个输入特征图710的每一个行中的每一位置中的相似值。
图8是示出根据本公开实施例的存储器操作中的处理的方块图。在图8所示操作中,对内核与一批输入特征图执行运算。举例来说,在一些实施例中,输入特征图是值的三维阵列,内核是高度及宽度比输入特征图小但深度相同的权重的三维阵列,且所述运算是将内核与所述一批输入特征图进行卷积。在一些实施例中,输入特征图是值的二维矩阵,内核是权重的二维矩阵,且所述运算是将内核矩阵乘以输入特征图矩阵中的每一者。
图8包括输入特征图表810及计算查找表820。计算查找表820可包含与内核的每一个可能的权重对应的行,且可包括与输入特征图中的每一个可能的值对应的列。存储在每一个位置处的值是与这一位置的行相关联的权重和与这一位置的列相关联的值的乘积。输入特征图表810包括所述一批输入特征图的值。与需要和内核中的同一权重位置逐点相乘的输入特征图位置相关联的每一个值可存储在以内核中的权重位置的值为索引的相同行中。
逻辑裸片850被示出为具有命令队列、输入缓冲器及输出缓冲器以及几个加法器ADD及寄存器。这可为简化图以易于解释,且逻辑裸片850可包括其他元件,或所示元件可比图中所绘示更复杂。举例来说,输入缓冲器、输出缓冲器、加法器ADD及寄存器可用于逻辑裸片850的单个处理元件,且逻辑裸片850可包括几个处理元件和/或单独的输入/输出缓冲器来将信息传送到所绘示的输入缓冲器或从所绘示的输出缓冲器传送信息。
逻辑裸片850的命令队列发送请求来请求得到与内核中给定权重对应的结果值—例如,如图8所示,第一权重k1_w1。如进一步将解释,内核中给定权重的结果值是通过将权重乘以不同的输入特征图和/或一个输入特征图中的不同位置而产生的值。作为响应,请求队列对请求得到与第一权重对应的行的查找请求进行排队。一旦行存取排程器指示应执行请求得到与第一权重对应的行的查找请求,第一权重(或与第一权重对应的行的值)便被传递到用于输入特征图表810的第一行解码器及用于计算查找表820的第二行解码器。第一行解码器将输入特征图表810的行输出到中间缓冲器。输入特征图表的与第一权重对应的行中的值是从应与第一权重相乘的输入特征图中的各个位置提取的值。举例来说,当权重是k1_w1时,值可为I1_P1_w1、I1_P2_w1、I1_P3_w1。第二行解码器将计算查找表820的行输出到行缓冲器。计算查找表的行中与第一权重对应的值是第一权重与输入特征图表的值的所有可能的乘积。
列存取排程器接收输入缓冲器中的每一个值。输入缓冲器中的每一个值对应于计算查找表820中的列。针对输入缓冲器中的每一个值,列存取排程器与列解码器进行通信,以将存储在行缓冲器中的与这一值对应的列的值(即,结果值)输出到输出缓冲器。在一些实施例中,列存取排程器与多个列解码器进行通信以并行地执行运算。由于存储在行缓冲器中的结果值是第一权重与各个输入特征图值的乘积,因此所述值在行缓冲器中的列对应于输入特征图值,且中间缓冲器中的值是输入特征图值,且被输出到输出缓冲器的结果值是第一权重与输入特征图值的乘积,且所述结果值已在存储器中确定而无需利用例如处理器资源。
存储在中间缓冲器中的值各自需要乘以第一权重。由于行缓冲器已包含第一权重的行值,因此只需要执行列查找运算来得到输入缓冲器中的每一个值的结果值即可;不需要单独的行查找运算。因此,存储查找可具有高缓冲器命中率(或者可不对第一权重值执行附加行查找运算),此可显著降低运算的延迟。
在一些实施例中,输出缓冲器可存储每一个结果值直到输出缓冲器接收到中间缓冲器中的每一个值的结果值为止,此时输出缓冲器可将所存储的结果值传送到逻辑裸片850的输入缓冲器。在一些其他实施例中,输出缓冲器可将较小的结果值集合发送到逻辑裸片850的输入缓冲器,或者可将结果值连续地串流输出到逻辑裸片850的输入缓冲器。
逻辑裸片850可对结果值进行进一步处理以产生每一个输入特征图的输出以用于运算。举例来说,输入缓冲器可针对输入特征图中的给定行选取每一个结果值(其中输入特征图是矩阵),或者针对输入特征图中的给定位置选取每一个结果值(其中输入特征图是三维阵列),并将这些结果值传递到单独的加法器ADD。加法器可相应地增大存储在寄存器中的值。一旦已相对于内核中相应的权重对输入特征图的每一个值进行了处理,寄存器便可包含对于计算每一个输入特征图的输出而言所需的值,例如输入特征图的输出矩阵的一个项的值。寄存器可输出这一值,且逻辑裸片和/或主机可对来自每一个寄存器的输出进行组合或对来自每一个寄存器的输出进行进一步处理以产生每一个输入特征图的输出值。
在图式中,为清晰起见,可夸大和/或简化各元件、各层及各区的相对大小。为易于解释,本文中可使用例如“在…之下(beneath)”、“在…下面(below)”、“下部的(lower)”、“在…下方(under)”、“在…上方(above)”、“上部的(upper)”等空间相对性用语来阐述图中所示一个元件或特征与另一(其他)元件或特征的关系,例如描述某些显示行位于一行“上方”或“下面”,或者某些像素位于其他像素“左侧”或“右侧”。应理解,空间相对性用语旨在除图中所绘示的取向外还囊括装置在使用或操作中的不同取向。举例来说,如果图中所示装置被翻转,则被阐述为位于其他元件或特征“下面”或“之下”或者“下方”的元件此时将被取向为位于所述其他元件或特征“上方”。因此,示例性用语“在…下面”及“在…下方”可囊括“上方”及“下面”两种取向。装置可具有其他取向(例如,旋转90度或处于其他取向)且本文中使用的空间相对性描述语应相应地进行解释。
应理解,尽管在本文中可使用“第一”、“第二”、“第三”等用语来阐述各个元件、组件、区、层和/或区段,然而这些元件、组件、区、层和/或区段不应受限于这些用语。这些用语用于区分各个元件、组件、区、层或区段。因此,以下阐述的第一元件、组件、区、层或区段也可被称为第二元件、组件、区、层或区段,此并不背离本发明的精神及范围。
本文所用术语是用于阐述特定实施例的目的,而不旨在对本发明进行限制。除非上下文中清楚地另外指明,否则本文所用单数形式“一(a及an)”旨在也包含复数形式。还应理解,当在本说明书中使用用语“包括(comprises、comprising、includes、including)”时,是指明所陈述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。本文所用用语“和/或”包含相关列出项中的一个或多个项的任意及所有组合。当例如“...中的至少一者(at least one of)”等表达出现在一系列元件之后时是修饰整个系列的元件而并非修饰所述系列中的个别元件。
本文中在阐述本发明的实施例时使用“可(may)”是指代“本发明的一个或多个实施例”。本文所用用语“使用(use)”、“正使用(using)”及“被使用(used)”可被视为分别与用语“利用(utilize)”、“正利用(utilizing)”及“被利用(utilized)”同义。另外,用语“示例性(exemplary)”旨在指实例或例示。
根据本文所述本发明的实施例的电子装置或电装置和/或任何其他相关装置或组件(例如,源装置(source device)和/或显示装置)可利用任何适合的硬件、固件(例如,应用专用集成电路(application-specific integrated circuit))、软件、或软件、固件、及硬件的组合来实施。举例来说,可将这些装置的各种组件形成在一个集成电路(integratedcircuit,IC)芯片上或分别形成在单独的集成电路芯片上。此外,可将这些装置的各种组件实施在柔性印刷电路膜(flexible printed circuit film)、载带封装(tape carrierpackage,TCP)、印刷电路板(printed circuit board,PCB)上、或形成在一个衬底上。此外,这些装置的各种组件可为在一个或多个计算装置中由一个或多个处理器运行、执行计算机程序指令并与用于执行本文所述各种功能性的其他***组件进行交互的过程或线程(thread)。计算机程序指令存储在存储器中,所述存储器可使用例如(举例来说)随机存取存储器(random access memory,RAM)等标准存储器装置在计算装置中实施。计算机程序指令也可存储在例如(举例来说)压缩盘只读存储器(compact disc read only memory,CD-ROM)、闪存驱动器(flash drive)或类似元件等其他非暂时性计算机可读介质中。另外,所属领域中的技术人员应知,在不背离本发明示例性实施例的精神及范围的条件下,可将各种计算装置的功能性组合或整合成单一的计算装置,或者可使一特定计算装置的功能性分别在一个或多个其他计算装置中。
除非另外定义,否则本文所用所有用语(包括技术及科学用语)的含义均与本发明所属领域中的普通技术人员所通常理解的含义相同。还应理解,用语(例如在常用词典中所定义的用语)应被解释为具有与其在相关技术的上下文和/或本说明书中的含义一致的含义,且除非在本文中明确定义,否则不应将其解释为具有理想化或过于正式的意义。

Claims (20)

1.一种存储装置,包括:
主机,发送命令来利用内核及多个输入特征图执行运算,所述内核包括多个权重,所述输入特征图包括多个值,所述运算包括确定所述内核的第一权重与所述多个输入特征图中的两个或更多个输入特征图中的每一者的所述多个值中的第一值的乘积;
逻辑裸片,耦合到所述主机且被配置成接收所述命令;以及
高带宽存储器堆叠,包括存储裸片,所述存储裸片耦合到所述逻辑裸片且包括存储阵列,其中:
所述内核及所述多个输入特征图存储在所述存储阵列中,
在所述存储阵列中存储有计算查找表,所述计算查找表具有多个行及多个列,所述多个行中的第一行对应于所述内核的所述多个权重中的一者,所述多个列中的第一列对应于所述多个输入特征图的所述值中的一者,且
在所述计算查找表中的第一位置处存储有第一结果值,所述第一位置对应于所述第一行及所述第一列,所述第一结果值是所述多个权重中与所述第一行对应的所述一者和所述值中的与所述第一列对应的所述一者的乘积。
2.根据权利要求1所述的存储装置,还包括:
第一行解码器及第二行解码器,且
其中所述存储裸片将所述第一权重输入到所述第一行解码器中以将所述计算查找表的与所述第一权重对应的所述第一行加载到行缓冲器中,
其中所述存储裸片将所述第一权重输入到所述第二行解码器中以将所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值加载到中间缓冲器中。
3.根据权利要求2所述的存储装置,还包括:
列存取排程器及列解码器,其中所述列存取排程器被配置成从所述中间缓冲器接收所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值,且针对所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值,控制所述列解码器存取所述行缓冲器中与和所述第一值对应的列对应的位置处的所述第一结果值,并将所述第一结果值输出到读取缓冲器。
4.根据权利要求3所述的存储装置,其中所述逻辑裸片包括处理元件,其中所述读取缓冲器在接收到所述中间缓冲器中每一第一值的所述第一结果值时,将所述第一值的所述第一结果值输出到所述逻辑裸片,且所述处理元件被配置成处理所述第一值的所述第一结果值。
5.根据权利要求4所述的存储装置,其中所述处理元件被配置成接收与和第一输入特征图对应的所述第一值对应的所述第一结果值,并将所接收的所述第一结果值与所述第一输入特征图的其他所接收的结果值进行组合以产生所述第一输入特征图的输出值。
6.根据权利要求1所述的存储装置,其中,
所述主机发送第二命令来利用第二内核及第二多个输入特征图执行第二运算,
在所述存储阵列中存储有第二计算查找表,所述第二计算查找表具有多个行,所述第二计算查找表的所述多个行中的第二行对应于所述第二内核的多个权重中的一者,所述第二计算查找表具有多个列,所述第二计算查找表的所述多个列中的第二列对应于所述第二多个输入特征图的值中的一者,且
在所述第二计算查找表中的第二位置处存储有第二结果值,所述第二位置对应于所述第二计算查找表的所述多个行中的所述第二行及所述第二计算查找表的所述多个列中的所述第二列,所述第二结果值是与所述第二行对应的所述权重和与所述第二列对应的所述值的乘积。
7.根据权利要求6所述的存储装置,其中所述第二命令是执行卷积运算,将所述第二内核与所述第二多个输入特征图中的两个或更多个输入特征图进行卷积。
8.根据权利要求1所述的存储装置,其中所述命令是执行矩阵乘法运算,将所述内核与所述多个输入特征图中的所述两个或更多个输入特征图相乘。
9.根据权利要求1所述的存储装置,其中所述存储装置被配置成基于所述命令而将所述内核、所述多个输入特征图及所述计算查找表存储在所述存储阵列中。
10.根据权利要求9所述的存储装置,其中所述存储阵列的被分配给所述计算查找表的百分比是基于由所述命令所标识的所述运算。
11.一种控制存储器装置的方法,所述方法包括:
向逻辑裸片发送命令来利用内核及多个输入特征图执行运算,所述内核包括多个权重,所述多个输入特征图包括多个值,所述运算包括确定所述内核的第一权重与所述多个输入特征图中的两个或更多个输入特征图的所述多个值中的第一值的乘积;
将所述内核及所述多个输入特征图存储在存储阵列中,
将计算查找表存储在所述存储阵列中,所述计算查找表具有多个行及多个列,所述多个行中的第一行对应于所述内核的所述多个权重中的一者,所述多个列中的第一列对应于所述多个输入特征图的所述值中的一者,
其中在所述计算查找表中的第一位置处存储有第一结果值,所述第一位置对应于所述第一行及所述第一列,所述第一结果值是与所述第一行对应的权重和与所述第一列对应的值的乘积。
12.根据权利要求11所述的方法,还包括:
将所述第一权重输入到第一行解码器中以将所述计算查找表的与所述第一权重对应的所述第一行加载到行缓冲器中,以及
将所述第一权重输入到第二行解码器中以将所述多个输入特征图中的所述两个或更多个输入特征图的所述第一值加载到中间缓冲器中。
13.根据权利要求12所述的方法,还包括:
从所述中间缓冲器接收所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值,
针对所述多个输入特征图中的所述两个或更多个输入特征图中的每一者的所述第一值,存取所述行缓冲器中与和所述第一值对应的所述第一列对应的位置处的所述第一结果值,以及
将所述第一结果值输出到读取缓冲器。
14.根据权利要求13所述的方法,还包括:
在接收到所述中间缓冲器中所述第一值的所述第一结果值时,将所述第一值的所述第一结果值输出到所述逻辑裸片,以及
由处理元件处理每一第一值的所述第一结果值。
15.根据权利要求14所述的方法,其中由所述处理元件进行的处理是:接收与和第一输入特征图对应的所述第一值对应的所述第一结果值,并将所接收的所述第一结果值与所述第一输入特征图的其他所接收的结果值进行组合以产生所述第一输入特征图的输出值。
16.根据权利要求11所述的方法,其中还包括:
向所述逻辑裸片发送第二命令来利用第二内核及第二多个输入特征图执行第二运算,以及
将第二计算查找表存储在所述存储阵列中,所述第二计算查找表具有多个行及多个列,所述第二计算查找表的所述多个行中的第二行对应于所述第二内核的多个权重中的一者,所述第二计算查找表的所述多个列中的第二列对应于所述第二多个输入特征图的值中的一者,
其中在所述第二计算查找表中的第二位置处存储有第二结果值,所述第二位置对应于所述第二计算查找表的所述第二行及所述第二计算查找表的所述第二列,所述第二结果值是与所述第二行对应的所述权重和与所述第二列对应的所述值的乘积。
17.根据权利要求16所述的方法,其中所述第二命令是执行卷积运算,将所述第二内核与所述第二多个输入特征图中的两个或更多个输入特征图进行卷积。
18.根据权利要求11所述的方法,其中所述命令是执行矩阵乘法运算,将所述内核与所述多个输入特征图中的所述两个或更多个输入特征图相乘。
19.根据权利要求11所述的方法,还包括:基于所述命令而将所述内核、所述多个输入特征图及所述计算查找表存储在所述存储阵列中。
20.根据权利要求19所述的方法,其中所述存储阵列的被分配给所述计算查找表的百分比是基于由所述命令所标识的所述运算。
CN201811532772.4A 2017-12-15 2018-12-14 存储装置及控制存储器装置的方法 Active CN110058802B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762599534P 2017-12-15 2017-12-15
US62/599,534 2017-12-15
US15/916,228 2018-03-08
US15/916,228 US11119677B2 (en) 2017-12-15 2018-03-08 HBM based memory lookup engine for deep learning accelerator

Publications (2)

Publication Number Publication Date
CN110058802A true CN110058802A (zh) 2019-07-26
CN110058802B CN110058802B (zh) 2024-03-15

Family

ID=66815998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811532772.4A Active CN110058802B (zh) 2017-12-15 2018-12-14 存储装置及控制存储器装置的方法

Country Status (5)

Country Link
US (3) US11119677B2 (zh)
JP (1) JP7232633B2 (zh)
KR (2) KR102672941B1 (zh)
CN (1) CN110058802B (zh)
TW (1) TWI739029B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112684977A (zh) * 2019-10-18 2021-04-20 旺宏电子股份有限公司 存储器装置及其存储器内计算方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687759B2 (en) * 2018-05-01 2023-06-27 Semiconductor Components Industries, Llc Neural network accelerator
JP6970827B2 (ja) * 2018-06-25 2021-11-24 オリンパス株式会社 演算処理装置
US11139270B2 (en) 2019-03-18 2021-10-05 Kepler Computing Inc. Artificial intelligence processor with three-dimensional stacked memory
US11836102B1 (en) * 2019-03-20 2023-12-05 Kepler Computing Inc. Low latency and high bandwidth artificial intelligence processor
US20200356836A1 (en) * 2019-05-07 2020-11-12 Apple Inc. Fast deep learning fully-connected column-major implementation
US11844223B1 (en) 2019-05-31 2023-12-12 Kepler Computing Inc. Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging
US11152343B1 (en) 2019-05-31 2021-10-19 Kepler Computing, Inc. 3D integrated ultra high-bandwidth multi-stacked memory
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
TWI722797B (zh) * 2020-02-17 2021-03-21 財團法人工業技術研究院 記憶體內運算器及其運算方法
KR20220034542A (ko) 2020-09-11 2022-03-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102430982B1 (ko) * 2021-06-10 2022-08-11 삼성전자주식회사 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법
CN115469800A (zh) 2021-06-10 2022-12-13 三星电子株式会社 数据处理***以及用于访问异构存储器***的方法
US11791233B1 (en) 2021-08-06 2023-10-17 Kepler Computing Inc. Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging
CN113408713B (zh) * 2021-08-18 2021-11-16 成都时识科技有限公司 消除数据副本的方法、神经网络处理器及电子产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US8890215B2 (en) * 1997-10-08 2014-11-18 Pact Xpp Technologies Ag Reconfigurable elements
US9053951B2 (en) * 2009-05-06 2015-06-09 Majid Bemanian Massively parallel interconnect fabric for complex semiconductor devices
US9577644B2 (en) * 2014-12-16 2017-02-21 Samsung Electronics Co., Ltd. Reconfigurable logic architecture
US9727113B2 (en) * 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083388A (ja) * 1996-05-20 1998-03-31 Matsushita Electric Ind Co Ltd 直交変換装置
US8885890B2 (en) * 2010-05-07 2014-11-11 Microsoft Corporation Depth map confidence filtering
US8405214B2 (en) 2011-08-12 2013-03-26 Nanya Technology Corp. Semiconductor package structure with common gold plated metal conductor on die and substrate
US9836277B2 (en) 2014-10-01 2017-12-05 Samsung Electronics Co., Ltd. In-memory popcount support for real time analytics
US10540588B2 (en) 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
JP6658033B2 (ja) 2016-02-05 2020-03-04 富士通株式会社 演算処理回路、および情報処理装置
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8890215B2 (en) * 1997-10-08 2014-11-18 Pact Xpp Technologies Ag Reconfigurable elements
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US9053951B2 (en) * 2009-05-06 2015-06-09 Majid Bemanian Massively parallel interconnect fabric for complex semiconductor devices
US9727113B2 (en) * 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US9577644B2 (en) * 2014-12-16 2017-02-21 Samsung Electronics Co., Ltd. Reconfigurable logic architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112684977A (zh) * 2019-10-18 2021-04-20 旺宏电子股份有限公司 存储器装置及其存储器内计算方法
CN112684977B (zh) * 2019-10-18 2024-05-28 旺宏电子股份有限公司 存储器装置及其存储器内计算方法

Also Published As

Publication number Publication date
TWI739029B (zh) 2021-09-11
TW201931124A (zh) 2019-08-01
US20210405877A1 (en) 2021-12-30
US20230289081A1 (en) 2023-09-14
US20190187898A1 (en) 2019-06-20
KR20240083094A (ko) 2024-06-11
US11119677B2 (en) 2021-09-14
CN110058802B (zh) 2024-03-15
KR102672941B1 (ko) 2024-06-07
KR20190072404A (ko) 2019-06-25
JP7232633B2 (ja) 2023-03-03
US11681451B2 (en) 2023-06-20
JP2019109886A (ja) 2019-07-04

Similar Documents

Publication Publication Date Title
CN110058802A (zh) 存储装置及控制存储器装置的方法
JP7286829B2 (ja) ニューラルネットワークプロセッサにおけるバッチ処理
US11620513B2 (en) Computing convolutions using a neural network processor
JP2022037022A (ja) ハードウェアにおけるカーネルストライドの実行
WO2016186826A1 (en) Rotating data for neural network computations
CN112200300B (zh) 卷积神经网络运算方法及装置
TW202123093A (zh) 實行卷積運算的系統及方法
CN103955446B (zh) 基于dsp芯片的可变长度fft计算方法
CN111353575A (zh) 用于卷积神经网络的图块化格式
CN105518625A (zh) 具有高带宽存储器接口的计算硬件
JP2023052555A5 (zh)
KR20210014561A (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
KR102653014B1 (ko) 인-메모리-컴퓨팅에 대한 데이터 배치를 위한 방법 및 상기 방법이 적용된 메모리 모듈
KR20220028899A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
US11636569B1 (en) Matrix transpose hardware acceleration
KR102518066B1 (ko) 라운드 로빈 데이터 전달 방식의 뉴럴 네트워크 회로
CN111338974A (zh) 用于矩阵数学指令集的图块化算法
TWI798591B (zh) 卷積神經網路運算方法及裝置
Lin et al. A Graph Signal Processing Based Strategy for Deep Neural Network Inference
US9740663B2 (en) Processing device and method for performing a stage of a Fast Fourier Transform
CN116484157A (zh) 矩阵乘计算核选取方法和矩阵乘运算的确定方法
KR20230164944A (ko) 프로세싱 장치 및 이의 동작 방법과 이를 포함하는 전자 장치
CN115906963A (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