CN108010551A - 用于dpu运算的软件栈和编程 - Google Patents

用于dpu运算的软件栈和编程 Download PDF

Info

Publication number
CN108010551A
CN108010551A CN201710684841.2A CN201710684841A CN108010551A CN 108010551 A CN108010551 A CN 108010551A CN 201710684841 A CN201710684841 A CN 201710684841A CN 108010551 A CN108010551 A CN 108010551A
Authority
CN
China
Prior art keywords
row
dram
dpu
computing
random
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
CN201710684841.2A
Other languages
English (en)
Other versions
CN108010551B (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.)
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 CN108010551A publication Critical patent/CN108010551A/zh
Application granted granted Critical
Publication of CN108010551B publication Critical patent/CN108010551B/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/402Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration individual to each memory cell, i.e. internal refresh
    • G11C11/4023Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration individual to each memory cell, i.e. internal refresh using field effect transistors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/403Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration common to a multiplicity of memory cells, i.e. external refresh
    • G11C11/405Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells with charge regeneration common to a multiplicity of memory cells, i.e. external refresh with three charge-transfer gates, e.g. MOS transistors, per cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4091Sense or sense/refresh amplifiers, or associated sense circuitry, e.g. for coupled bit-line precharging, equalising or isolating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4094Bit-line management or control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4097Bit-line organisation, e.g. bit-line layout, folded bit lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)

Abstract

一种用于DPU运算的软件栈和编程。一种包括库、编译器、驱动器和至少一个动态随机存取存储器(DRAM)处理单元(DPU)的系统。所述库可确定与接收到的命令相应的至少一个DPU运算。所述编译器可以形成用于所述DPU运算的至少一个DPU指令。所述驱动器可将所述至少一个DPU指令发送到至少一个DPU。所述DPU可包括至少一个计算单元阵列,所述至少一个计算单元阵列可包括按照具有至少一个列的阵列被布置的多个基于DRAM的计算单元,其中,所述至少一个列可包括至少三个行的基于DRAM的计算单元,所述至少三个行的基于DRAM的计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的逻辑功能,并被配置为将所述逻辑功能的结果存储在所述至少三个行中的第三行中。

Description

用于DPU运算的软件栈和编程
本专利申请要求于2016年10月27日提交的第62/413,973号美国临时专利申请以及于2017年2月6日提交的第15/426,015号美国专利申请的优先权权益,所述两个专利申请的公开通过引用全部合并于此。
技术领域
本申请涉及一种软件栈和编程,更为具体地讲,涉及一种用于DPU的软件栈和编程。
背景技术
图形处理单元(GPU)和Tensor处理单元(TPU)通常被用于深度学习处理。深度学习处理包括由GPU或TPU不能有效执行的高度并行处理。
发明内容
示例实施例提供了一种可包括用于接收命令的接口、库、编译器、驱动器和动态随机存取存储器(DRAM)处理单元(DPU)的系统。库可以确定与由接口接收的命令相应的至少一个DPU运算。编译器可形成用于所确定的与接收到的命令相应的至少一个DPU运算的至少一个DPU指令。驱动器可以将所述至少一个DPU指令发送到至少一个DPU。所述DPU可包括至少一个计算单元阵列,所述至少一个计算单元阵列包括按照具有至少一个列的阵列被布置的多个基于DRAM的计算单元,其中,所述至少一个列可包括至少三个行的基于DRAM的计算单元,所述至少三个行的基于DRAM的计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的逻辑功能,并被配置为将所述逻辑功能的结果存储在所述至少三个行中的第三行中。在一个实施例中,所述至少一个列的基于DRAM的计算单元均可包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元,所述至少一个列的基于DRAM的计算单元可提供或非逻辑功能。在一个实施例中,所述DPU还可包括按照具有至少一个列的阵列被布置的多个基于DRAM的随机计算单元,其中,所述至少一个列可包括至少三个行的基于DRAM的随机计算单元,所述至少三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机逻辑功能的结果存储在所述至少三个行的第三行中。在一个实施例中,所述至少一列的基于DRAM的随机计算单元均可包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。在一个实施例中,所述至少一个DPU运算可以包括随机计算运算。
示例实施例提供了一种可包括至少一个动态随机存取存储器(DRAM)处理单元(DPU)的系统,其中,每一个DPU可包括:至少一个计算单元阵列,可包括按照具有至少一个列的阵列被布置的多个基于DRAM的计算单元,其中,所述至少一个列可包括至少三个行的基于DRAM的计算单元,所述至少三个行的基于DRAM的计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的逻辑功能,并被配置为将所述逻辑功能的结果存储在所述至少三个行中的第三行中;按照具有至少一个列的阵列被布置的多个基于DRAM的随机计算单元,其中,所述至少一个列可包括至少三个行的基于DRAM的随机计算单元,所述三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机辑功能的结果存储在所述至少三个行中的第三行中;接口,用于接收命令;库,用于确定与所接收的命令相应的至少一个DPU运算;驱动器,用于将与接收到的命令相应的所述至少一个DPU指令发送到所述至少一个DPU。在一个实施例中,所述至少一个列的基于DRAM的计算单元均可包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元,所述至少一个列的基于DRAM的随机计算单元均可包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。在一个实施例中,所述至少一个列的基于DRAM的计算单元提供或非逻辑功能。在一个实施例中,所述至少一个DPU运算可包括随机计算运算。
示例实施例提供了一种可包括至少一个动态随机存取存储器(DRAM)处理单元(DPU)的系统,所述DPU可包括包含按照具有至少一个列的阵列被布置的多个基于DRAM的随机计算单元的至少一个随机计算单元阵列,其中,所述至少一列可包括至少三个行的基于DRAM的随机计算单元,所述至少三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机逻辑功能的结果存储在所述至少三个行中的第三行中;库,用于确定与接收的命令相应的至少一个随机DPU运算;驱动器,用于将与所接收的命令相应的至少一个随机DPU指令发送到包含所述多个基于DRAM的随机计算单元的至少一个随机DPU。在一个实施例中,所述至少一个列的基于DRAM的随机计算单元均可包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。
附图说明
在下面的部分中,将参照附图中示出的示例性实施例对本文公开的主题事项的各方面进行描述,其中:
图1示出了根据本文公开的主题的基于动态随机存取存储器(DRAM)的处理单元(DPU)的示例实施例的框图;
图2A示出了可用于计算单元阵列中的计算单元的三个晶体管-一个电容器DRAM计算单元布局的示例实施例;
图2B示出了可用于计算单元阵列中的计算单元的一个晶体管-一个电容器DRAM计算单元布图的替代示例实施例;
图3示出了根据本文公开的主题的垫内移位(intra-mat shift)阵列的示例实施例;
图4A示出了根据本文公开的主题的垫间移位(inter-mat shift)阵列的实施例;
图4B概念性地示出了根据本文公开的主题的用于左垫间移位的相邻计算单元列中的相同位置处的两个计算单元之间的垫间移位互连配置;
图4C概念性地示出了根据本文公开的主题的用于左垫间移位的相邻计算单元列中的不同位置处的两个计算单元之间的垫间移位互连配置;
图5示出了根据本文公开的主题的垫间转发阵列的实施例;
图6A至图6G示出了根据本文公开的主题的可由DPU提供的基于或非逻辑的运算;
图7示出了根据本文公开的主题的包括随机数据区域的DPU的示例实施例的框图;
图8A和图8B分别示出了用于可被转换为复用运算的加法运算以及可被转换为与逻辑运算的乘法运算的随机计算运算;以及
图9示出了根据本文公开的主题的包括DPU的系统架构。
具体实施方式
在下面的详细描述中,为了提供对本公开的透彻理解,对许多具体细节进行了阐述。然而,本领域的技术人员将理解,可在没有这些具体细节的情况下,对所公开的方面进行实践。在其他情况下,未对公知的方法、处理、组件和电路进行详细描述以不模糊本文公开的主题。
贯穿本说明书,参照“一个实施例”或“实施例”意味着与所述实施例有关的描述的特定特征、结构或特性可被包括在本文公开的至少一个实施例中。因此,贯穿本说明书,在各个地方出现的短语“在一个实施例中”或“在实施例中”或者“根据一个实施例”(或具有相似含义的其他短语)可无需均指代相同的实施例。此外,所述特定特征、结构或特性可以以任何合适的方式被组合在一个或更多个实施例中。就这一点而言,如本文所使用的,词语“示例性”是指“用作示例、实例或例证”。本文中被描述为“示例性”的任何实施例不被解释为必需比其他实施例优选或有益。此外,根据本文讨论的上下文,单数术语可包括相应的复数形式以及复数术语可包括相应的单数形式。还应注意,本文示出和讨论的各种附图(包括组件示图)仅为了说明的目的,并不是按比例绘制。类似地,仅是为了说明的目的而示出了各种波形和时序图。例如,为了清楚起见,一些元件的尺寸可相对于其他元件被夸大。此外,如果认为适当,则参考标号可在附图中被重复以指示相应的和/或相似的元件。
本文使用的术语仅是为了描述特定示例性实施例的目的,且不意图限制所要求保护的主题事项。如本文所使用的,除非上下文另有明确指示,否则单数形式“一个”和“所述”也意图包括复数形式。还将理解,当在本说明书中被使用时,术语“包括”和/或“包括……的”指明陈述的特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或更多个其它特征、整体、步骤、操作、元件、组件和/或其组合的存在或添加。如本文所使用的术语“第一”、“第二”等被用作它们领先的名词的标签,但是不意味着任何类型的排序(例如,空间、时间、逻辑等),除非像这样被明确地定义。此外,在两个或更多个附图中可以使用相同的参考标号来表示具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这样的用法仅是为了简化说明和易于讨论;这不意味着这样的组件或单元的结构或架构细节在所有实施例中是相同的,或者这样的被共同参照的部件/模块是实施本文公开的特定实施例的教导的唯一方式。
除非另有定义,否则本文使用的所有术语(包括技术和科学术语)具有与本主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,像在常用词典中定义的那些词语应当被解释为具有与相关领域的上下文中的含义一致的含义,并且不以理想化或过于形式的含义被解释,除本文这样明确地定义。
本文公开的主题提供了一种基于动态随机存取存储器(DRAM)的处理单元(DPU),所述DPU对于不同的运算(诸如但不限于加法、乘法、移位、最大/最小以及比较)是可编程的且可重构的。在一个实施例中,DPU基于三个晶体管-一个电容器(3T1C)DRAM工艺和结构。在另一实施例中,DPU基于具有小的修改的一个晶体管-一个电容器(1T1C)DRAM工艺和结构。因此,DPU不包含特定的计算逻辑电路(像,加法器),而是使用利用高度并行操作的存储器单元来提供计算。在一个实施例中,DPU可包括随机计算阵列,其中,加法可被转换为复用运算以及乘法可被转换为与逻辑运算。
本文公开的主题还提供了一种包括具有框架扩展、库、驱动器、编译器的环境(生态系统)的系统架构以及指令集架构(ISA)来对DPU进行编程和重新配置。
此外,本文公开的主题提供了一种系统架构,所述系统架构适用于数据中心和/或移动应用并为用于二进制和固定点计算二者的机器学习应用提供处理器存储器(PIM)方案,所述PIM方案是GPU/ASIC(TPU)/FPGA机器学习应用的替代物。在一个实施例中,本文公开的主题提供了一种提供用于例如二进制权重神经网络的加速深度学习的高性能、高能量效率且低成本系统。
本文公开的主题涉及一种可使用动态随机存取存储器(DRAM)技术来形成并且是可重新配置且可编程的基于DRAM的处理单元(DPU)。在一个实施例中,DPU可包括基于DRAM的存储器单元阵列和可被配置为执行不同运算(诸如,加法、乘法、分类等)的基于DRAM的计算单元阵列。
DPU的内部架构可以包括连接到子阵列的多个存储体的系统总线。在一个实施例中,系统总线可被配置为提供子阵列的H树连接的存储体。每个子阵列可包括本地控制器,并且每个单独的子阵列可被分别或同时激活。在一个实施例中,基于DRAM的单元可以被划分为两个阵列-数据单元阵列和计算单元阵列。在一个实施例中,计算单元阵列可由基于DRAM的存储器单元来实施。在另一实施例中,计算单元阵列可由具有逻辑电路的基于DRAM的存储器单元来实施。DPU内部架构还可以包括数据移位和数据移动电路。在一些实施例中,存在可被配置用于随机数据计算(stochastic data computations)的第三基于DRAM的单元阵列。
图1示出了根据本文公开的主题的DPU 100的示例实施例的框图。DPU100可包括一个或更多个存储体101a-101m,图1中仅示出了其中的存储体101a和101b。每个存储体101可包括一个或更多个子阵列102a-102n,图1中仅示出了其中的子阵列102a和102b。每个存储体101还可包括缓冲器103。缓冲器103可连接到各个子阵列102和系统总线104。缓冲器103可以读取存储体101中的整个行,然后将所述行写回到同一存储体或另一存储体。缓冲器103还可将所述行数据的副本广播到子阵列102中的多个垫(mat)105a-105n。在一个实施例中,存储体101和系统总线104可被配置为提供H树连接的存储体。
每个子阵列102可包括一个或更多个垫(或线路(lane))105,图1中示出了其中的子阵列102a的垫105a-105n。每个垫105是可包括数据单元阵列106、计算单元阵列107和垫内移位阵列108的DPU 100的区域。在图1中,示例垫105被示出为由虚线109包围。每个垫105可与相邻的垫共享数据单元阵列解码器110、计算单元阵列解码器111、垫间移位阵列112和垫间转发阵列113。在一个实施例中,数据单元阵列解码器110、计算单元阵列解码器111和垫间移位阵列112可与子阵列控制器114被交替物理地布置在相邻的垫105之间。在一个实施例中,解码器110和111可作为传统DRAM类型存储解码器来操作。
在一个实施例中,每个垫105可通信地连接到子阵列控制器114。每个子阵列控制器114可被配置为独立于其他子阵列控制器114。子阵列控制器114可从DRAM地址总线接收作为地址(addr)的指令。响应于所述地址(即,地址信号),子阵列控制器114可将解码的地址作为输出而提供给数据单元阵列106和计算单元阵列107中的一个或两者。也就是说,子阵列控制器114可针对相关联的数据单元阵列106输出由数据单元阵列解码器110解码的源/目的(src/dst)地址,在计算单元阵列107的情况下,子阵列控制器114可输出由计算单元阵列解码器111解码的运算/计算(op/calc)地址。子阵列控制器114还可从DRAM总线接收引起两个或更多个子阵列控制器114以协调的方式操作的作为地址的指令。子阵列控制器114还可以控制数据移动电路,诸如控制垫内移位阵列108、垫间移位阵列112和垫间转发阵列113。
每个数据单元阵列106可包括被布置在至少一个列和至少一个行中的一个或更多个动态随机存取存储器(DRAM)单元。在一个实施例中,数据单元阵列106可被配置为传统DRAM单元阵列。在一个实施例中,数据单元阵列106可包括2000个列和16个行。在另一实施例中,数据单元阵列106可包括小于或大于2000个的列和/或小于少或大于16个的行。
每个计算单元阵列107可包括被布置在至少一个列和至少一个行中的一个或更多个计算单元。计算单元阵列107中的列的数量与数据单元阵列106中的列的数量相同。在一个实施例中,计算单元阵列107可包括2000个列和16个行。在另一实施例中,计算单元阵列107可包括小于或大于2000个的列和/或小于或大于16个的行。
图2A示出了可用于计算单元阵列107中的计算单元的三个晶体管-一个电容器(3T1C)DRAM计算单元布局201的示例实施例。如图2A所示,行X中的3T1C计算单元包括第一晶体管T1,所述第一晶体管T1具有电连接到写位线(写BL)的源极端子、电连接到电容器C1的第一端子以及第二晶体管T2的栅极端子二者的漏极端子和电连接到写使能(WEN)线的栅极端子。电容器C1的第二端子电连接到地线。第二晶体管T2包括电连接到地线的源极端子和电连接到第三晶体管T3的源极端子的漏极端子。第三晶体管T3包括电连接到字线(WL)的栅极端子和电连接到读位线(读BL)的漏极端子。3T1C计算单元布局201包括具有电连接到读BL的输入和电连接到写BL的输出的感测放大器SA。
行Y中的计算单元和行R中的计算单元也都还可以包括类似于行X中的计算单元的布置按照3T1C DRAM配置布置的三个晶体管T1-T3和一个电容器C。图2A中示出的示例三个计算单元和感测放大器SA被配置为提供或非逻辑运算(即X或非Y逻辑运算),其中,结果被存储在行R中。尽管在图2A中仅明确示出了3T1C DRAM计算单元的一个列,但是,应当理解,在另一实施例中,3T1C计算单元可被配置为多个列(即,2000个列)。还应当理解,在另一实施例中,可提供多于三个的行。此外,尽管图2A中示出的3T1C DRAM计算单元配置提供或非逻辑运算,但是,应当理解,可利用3T1C DRAM计算单元布局201的或非逻辑运算来提供功能运算,诸如但不限于异或非(XNOR)、加法(ADD)、选择(SET)、最大值(MAX)、符号(SIGN)、复用(MUX)、条件-求和加法逻辑(CSA)、乘法、弹出计数(POPCOUNT)和比较(COMPARE)。移位阵列108和112还提供移位功能。
图2B示出了可用于图1的计算单元阵列107中的计算单元的一个晶体管-一个电容器(1T1C)DRAM计算单元布局202的替代示例实施例。如图2B所示,1T1C DRAM计算单元包括晶体管T4,所述晶体管T4具有电连接到电容器C2的第一端子的源极端子、电连接到位线(BL)的漏极端子以及电连接到字线(WL)的栅极端子。电容器C2的第二端子电连接到地线。位线BL电连接到感测放大器SA的输入。感测放大器SA的输出电连接到复用器MUX的第一输入、晶体管T5的漏极端子和运算逻辑单元(ALU)的输入。复用器MUX的输出电连接到锁存器(LATCH)的输入。晶体管T5的源极端子电连接到锁存器LATCH的输出。运算逻辑单元ALU的输出电连接到复用器MUX的第二输入。图2B中的晶体管T5、复用器MUX、锁存器LATCH和运算逻辑单元ALU各自分别从控制器114接收控制信号CNTL1-CNTL4。在一个实施例中,运算逻辑单元ALU可被配置为提供或非(NOR)功能。尽管图2B中的电连接到位线BL的逻辑电路提供或非逻辑运算,但是,应当理解,电连接到位线BL的逻辑电路(即,逻辑运算单元ALU)可提供其他函数运算,诸如但不限于异或非(XNOR)、加法(ADD)、选择(SET)、最大值(MAX)、符号(SIGN)、复用(MUX)、条件和加法逻辑(CSA)、乘法、弹出计数(POPCOUNT)和比较(COMPARE)。移位阵列108和112还提供移位功能。应当理解,图2B中仅示出了一个1T1C计算单元,并且可以提供多个列和行的1T1C计算单元。
从图2A和图2B中可以看出,DPU的计算单元不包括特定的、复杂的计算逻辑,而是取而代之地包括提供执行多个、不同类型的计算的能力的具有可再编程性质的相对简单的布局。此外,DPU的布局可被布置为具有存储器结构内在的大量并行性的优点来更快更有效地执行更多的计算。
图3示出了根据本文公开的主题的垫内移位阵列108的示例实施例。为了简化垫内移位阵列108的描述,诸如图3中所示,考虑四个列的计算单元107的宽度的垫105。垫内移位阵列108包括按照阵列布置的多个晶体管T6(图3中仅示出了其中的一个晶体管T6)、2n个移位线SL(其中,n是垫105中的计算单元的列的数量)、n+2个移位左控制线SLcL、2个移位右控制线SRcL和n个移位掩模线SML。垫内移位阵列108的晶体管T6中的一些晶体管T6电连接在写BL和2n个移位线SL之间,并且垫内移位阵列108的其它晶体管T6连接在读BL和2n个移位线SL之间。这些晶体管T6的栅极电连接到n+2个移位左控制线SLcL和2个移位右控制线SRcL。垫内移位阵列108的其他晶体管T6电连接在n个移位掩模线SML和2n个移位线SL之间。垫内移位阵列108的控制线被电连接到与垫105相关联的子阵列控制器114。
垫内移位阵列108可通过控制线SLcL和SRcL上的合适信号来在垫105内将数据向左或向右移位。对于向左移位,数据可用符号位来填充,并且每个操作移位1位或(n-1)位,其中,n是每个垫105列的数量。对于向右移位,数据可根据指令的控制而用0或1来填充,并移位20、21、...、2k-1、2k直到每个MAT的列的数量,其中,2k是列的数量。
图4A示出了根据本文公开的主题的垫间移位阵列112的实施例。为了简化垫间移位阵列112的描述,诸如图4A-图4C中所示,考虑垫105为两个列的计算单元107的宽度的配置。也就是说,每个垫105包括第一列的计算单元107a和第二列的计算单元107b。垫间移位阵列112包括晶体管T112a和T112b、晶体管T112c和T112d、数据移位线112e和112f以及垫间移位控制线ISLcL。在垫之内,晶体管T112a包括电连接到第一列的计算单元107a的读BL的源极端子、电连接到数据移位线112e的漏极端子。晶体管T112b包括电连接到第二列的计算单元107b的读BL的源极端子、电连接到数据移位线112f的漏极端子。数据移位线112e和112f被电连接到缓冲器103(未在图4A中示出)。在不同的垫之间,晶体管T112c包括分别电连接到相邻垫中的数据移位线112e的源极端子和漏极端子。晶体管T112d包括分别电连接到相邻垫中的数据移位线112f的源极端子和漏极端子。晶体管T112c和T112d的栅极分别电连接到各自不同的垫间移位控制线ISLcL。垫间移位阵列112可通过垫间移位控制线ISLcL上的合适的信号,使数据在不同的垫之间向左或向右移位。垫间移位阵列112的控制线电连接到与垫105相关联的子阵列控制器114。
图4B概念性地示出了根据本文公开的主题的用于左垫间移位的相邻计算单元列105a和105b中的两个相同位置处的计算单元之间的垫间移位互连配置。图4B的互连配置可通过强调的可操作的互连节点来被概念性地示出。例如,晶体管T112c和T112d被激活,使得在每个晶体管之间存在导电通路,从而在计算单元列105a(在左边)和105b(在右边)之间连接数据移位线112e和112f。晶体管T112c和T112d的栅极端子电连接到有源垫间移位控制线ISLcL。垫105b中的晶体管T112a和T112b被激活,使得垫105b中的计算单元107a的读BL电连接到垫105b的左边的垫105a中的计算单元107a的写BL,以及使得垫105b中的计算单元107b的读BL电连接到垫105b的左边的垫105a中的计算单元107b的写BL。
图4C概念性地示出了根据本文公开的主题的用于左垫间移位的相邻计算单元列105a和105b中的两个不同位置处的计算单元之间的垫间移位互连配置。通过强调的可操作的互连节点概念性的示出了图4C的互连配置。例如,晶体管T112c和T112d被激活,使得在每个晶体管之间存在导电通路,从而在计算单元列105a(在左边)和105b(在右边)之间连接数据移位线112e和112f。晶体管T112c和T112d的栅极端子电连接到有源垫间移位控制线ISLcL。垫105a中的晶体管T112a和T112b被激活,使得垫105a中的计算单元107a的读BL电连接到垫105a的右边的垫105b中的计算单元107a的写BL,并使得垫105a中的计算单元107b的读BL电连接到垫105a的右边的垫105b中的计算单元107b的写BL。
图5示出了根据本文公开的主题的垫间转发阵列113的实施例。为了简化垫间转发阵列113的描述,诸如图5所示,考虑垫105是两个列的计算单元107的宽度的配置。也就是说,每个垫105包括第一列的计算单元107a和第二列的计算单元107b。在垫105之内,垫间转发阵列113包括晶体管T113a和T113b、晶体管T113c和T113d以及晶体管T113e和T113f、2n个数据转发线FDL(其中,n是垫中的计算单元列的数量)、转发控制线FCL以及2m个转发部分(section)线FSL(其中,m是部分的数量)。晶体管T113a和T113b的源极端子分别电连接到第一列的计算单元107a的写BL和读BL。晶体管T113a和T113b的漏极端子电连接到第一数据转发线FDL 113g。晶体管T113c和T113d的源极端子分别电连接到第二列的计算单元107b的写BL和读BL。晶体管T113c和T113d的漏极端子电连接到第二数据转发线FDL 113h。晶体管T113e和T113f的源极端子分别电连接到晶体管T113a和T113b的栅极端子。晶体管T113e和T113f的漏极端子二者连接到相同的转发部分线FSL。晶体管T113e和T113f的栅极端子分别连接到不同的转发控制线FCL。垫间转发阵列113可通过转发控制线FCL上的合适的信号在垫之间转发数据。垫间转发阵列113的控制线电连接到与在其之间数据将被转发的垫105相关联的子阵列控制器114。
图6A至图6G示出了根据本文公开的主题的可由DPU提供的基于或非逻辑的运算。在图6A至图6G中,第一操作数可被存储在行X中,并且第二操作数可被存储在行Y或行W中。图6A至图6G中的箭头表示用于计算单元的整个行的或非逻辑运算的输入和输出流。例如,图6A中的行X可以表示存储在行X的计算单元中的整个行的操作数。针对存储在行X中的操作数和存储在行Y中的操作数的或非逻辑运算的结果被存储在结果行R中。在一个实施例中,行X和行Y中的操作数可包括例如100个列(即,x1、x2、...、x100和y1、y2、...、y100),并且结果可被存储在行R中(即,r1、r2、...、r100)。也就是说,xi或非yi=ri,其中,i是列索引。在另一实施例中,行X可仅表示行中的计算单元的被选择的组。
图6B示出了基于前缀Kogge-Stone加法器的用于N位数的示例全加器运算。如图6B中,第一N位操作数被存储在行X中,以及第二N位操作数被存储在行Y中。对于图6B中示出的示例加法运算,中间项G0、P0、G1、P1、G2、P2、...、GlogN+1和PlogN+1被计算。图6B的最上面的块表示使用来自行X和Y的输入操作数来确定G0和P0的五个独立的运算。在第一运算中,最上面的块确定行X的逆(即,~X),~X被存储在行1中。第二运算确定行Y的逆(即,~Y),~Y被存储在行2中。第三运算确定运算行X或非行Y,行X或非行Y被存储在行3中。第四运算确定运算G0=行1或非行2,G0=行1或非行2被存储在行4中。第五运算确定P0=行3或非行4,P0=行3或非行4被存储在行5中。
在图6B的中间块中,来自最上面的块的中间结果G0和P0被用于确定中间结果Gi+1和Pi+1,其中,i是列索引。也就是说,在图6B的最上面的块中确定的中间结果G0和P0被用于确定中间结果G1和P1。中间结果G1和P1被用于确定中间结果G2和P2,以此类推,以确定中间结果GlogN+1和PlogN+1。在图6B的最下面的块中,结果行R1和R2分别存储用于全加器运算的进位结果以及和结果。
图6C示出了可由3T1C DRAM计算单元布局201提供的示例选择器运算。行1存储行X的逆(即,~X)的中间结果。行2存储行Y的逆(即,~Y)的中间结果。行3存储行S的逆(即,~S)的中间结果。行4存储行1或非行3的中间结果。行5存储行2或非行S的中间结果。行6存储行4或非行5的中间结果。行R存储行6的逆的结果,即S?X:Y。
图6D示出了可由3T1C DRAM计算单元布局201提供的替代示例选择器运算。行1存储行X的逆(即,~X)的中间结果。行2存储行S的逆(即,~S)的中间结果。行3存储行1或非行S的中间结果。行4存储行X的逆(即,~X)的中间结果。行R存储行3或非行4的结果,即S?X:~X。
图6E示出了可由3T1C DRAM计算单元布局201提供的示例MAX/MIN运算。行1存储行Y的逆(即,~Y)的中间结果。行2存储行X+(~Y+1)的中间结果。行3存储Cout>>n的中间结果。行4存储Cout?X:Y的中间结果。行R存储MAX(X:Y)的结果。
图6F示出了可以由3T1C DRAM计算单元布局201提供的示例1位乘法运算。行1存储行X或非行W的中间结果。行2存储行X或非行1的中间结果。行3存储行W或非行1的中间结果。结果行R存储行2或非行3的结果,即,行X异或非行W的结果。
图6G示出了可由3T1C DRAM计算单元布局201提供的示例多位乘法运算。在图6G的上面的块中,行1存储行W的逆(即,~W)的中间结果。行2存储向左移位2i次的行X的逆(即,~W<<2i)的中间结果,其中,i为索引。行3存储行1或非行2的中间结果,也就是说,PPi=~W或非~X<<2i。在图6G的下面的块中,行1存储行PP0SUM行PPi(即,ΣPPi)的中间结果。行2存储行2或非行Wsign的中间结果。行R存储X*W的结果。
图7示出了根据本文公开的主题的包括随机数据区域715的DPU 700的示例实施例的框图。具有与图1所示的DPU 100的组件相同的参考指示符的DPU 700的各种组件是相似的,并且这里已经省略了对这样的相似组件的描述。DPU 700的子阵列102包括随机数据阵列715和转换器到随机阵列716以及(实数)数据单元阵列106、计算单元阵列107和垫内移位阵列108。
每个随机数据阵列715可包括按照至少一个列和至少一个行布置的一个或更多个随机计算单元。在一个实施例中,随机数据阵列715可包括2000个列和16个行。随机数据阵列715中的列的数量与数据单元阵列106和计算单元阵列107中的列的数量相同。在另一实施例中,随机数据阵列715可包括小于或大于2000个的列和/或小于或大于16个的行。在随机数据阵列715中,使用存在“1”的概率,并且使用2n位来表示n位值。转换器到随机阵列716中的随机数发生器可用于将实数转换为随机数。弹出计数(popcount)运算可被用于将随机数转换回实数。
通过使用随机计算方法,可将加法转换为复用运算,并可将乘法转换为与逻辑运算。例如,图8A示出了提供随机加法运算作为复用运算的电路,图8B示出了提供随机乘法运算作为与逻辑运算的电路。用于随机计算的传统技术需要巨大的存储器容量;然而,因为基于DRAM的DPU能够执行大的并行性AND和MUX运算,本文公开的主题可被用于提供高效率的随机计算。使用本文公开的DPU的随机计算也使得加快复杂运算(深度学习是其典型应用)是可能的。
图9示出了根据本文公开的主题的包括DPU的系统架构900。系统架构900可包括硬件层910、库和驱动器层920、框架层930和应用层940。
硬件层910可包括具有嵌入式DPU(诸如,本文示出的DPU)的硬件装置和/或组件。这种装置和/或组件的一个实施例可以是可包括一个或更多个嵌入式DPU的外围组件互连快速(PCIe)装置911。这种装置和/或组件的另一实施例可以是可包括一个或更多个嵌入式DPU的双列直插存储器模块(DIMM)912。应当理解,系统架构900的硬件层910不限于PCIe装置和/或DIMM,而是可包括片上系统(SOC)装置或可包含DPU的其他存储器类型装置。可在硬件级910嵌入到装置和/或组件中的DPU可被配置为与图1中的DPU 100和/或图7中的DPU700相似。在任何一个实施例中,DPU的特定计算单元阵列可被配置为包括3T1C计算单元布局201(图2A)或1T1C计算单元布局202(图2B)。
系统架构900的库和驱动器层920可包括DPU库921、DPU驱动器922和DPU编译器923。DPU库921可被配置为针对可在应用层940操作的不同的应用提供对于硬件层910中的DPU中的每个子阵列的最佳映射功能、资源分配功能和调度功能。
在一个实施例中,DPU库921可提供针对可包括诸如移动、加、乘等的运算的框架层930的高级应用编程接口(API)。例如,DPU库921还可包括对于标准类型例程的实现,诸如但不限于可适用于加速深度学习处理的前向和后向卷积、汇集、归一化和激活层。在一个实施例中,DPU库921可包括映射对于卷积神经网络(CNN)的整个卷积层的计算的类API功能。另外,DPU库921可包括用于对卷积层计算至DPU上的映射进行优化的类API功能。
DPU库921还可包括用于通过将任务(批处理、输出通道、像素、输入通道、卷积内核)内的任何单个或多个并行性在芯片、组、子阵列和/或垫级映射到相应的DPU并行性来优化资源分配的类API功能。此外,DPU库921可包括在初始化和/或运行时提供将性能(即,数据移动流)和功耗进行折中的最优的DPU配置的类API功能。由DPU库921提供的其他类API功能可包括设计旋钮类型功能,诸如设置每个组的有源子阵列的数量、每个有源子阵列的输入特征映射的数量、特征映射的分割和/或卷积内核的回用方案。尽管如此,其他类API功能可通过为每个子阵列分配特定任务来提供额外的资源分配优化,诸如卷积计算、信道求和以及/或数据分派。如果要在整数和随机数之间对操作数进行转换,则DPU库921包括在满足精度限制的同时最小化开销的类API功能。在所述精度低于预期的情况下,DPU库921可包括再次使用用于随机表示的额外的位来计算所述值或者将所述任务卸载到诸如CPU的其他硬件的类API功能。
DPU库921还可包括类API功能,所述类API功能同时调度DPU中的激活的子阵列并调度数据移动,使得它被计算操作隐藏。
DPU库921的另一方面包括用于进一步的DPU开发的扩展接口。在一个实施例中,DPU库921可提供接口以使用或非和移位逻辑来直接对功能进行编程,使得可提供除标准类型运算(即,加、乘、MAX/MIN等)之外的运算。所述扩展接口还可提供接口,使得DPU库921不特别支持的运算可在库和驱动器层920处卸载到SoC控制器(未示出)、中央处理单元/图形处理单元(CPU/GPU)组件和/或CPU/Tensor处理单元(CPU/TPU)组件。DPU库921的另一方面提供用于在DPU存储器未被用于计算时将DPU存储器用作存储器的扩展的类API功能。
DPU驱动器922可被配置为提供硬件层910的DPU、DPU库921和更高层的操作系统(OS)之间的接口连接,以将所述DPU硬件层集成到系统中。也就是说,DPU驱动器922将DPU暴露给系统OS和DPU库921。在一个实施例中,DPU驱动器922可在初始化时提供DPU控制。在一个实施例中,DPU驱动器922可以以DRAM类型地址或DRAM类型地址序列的形式向DPU发送指令,并且可控制数据移入和移出DPU。DPU驱动器922可以提供多DPU通信以及处理DPU-CPU和/或DPU-GPU通信。
DPU编译器923可以按照由DPU驱动器922使用以控制DPU的存储器地址的形式将来自DPU库921的DPU代码编译为DPU指令。由DPU编译器923产生的DPU指令可以是针对DPU中的一个行和/或两个行进行操作的单个指令;向量指令和/或收集的向量、读针对操作指令。
框架层930可被配置为将用户友好的接口提供给库和驱动器层920以及硬件层910。在一个实施例中,框架层930可以提供与在应用层940处的应用的宽范围兼容并使得DPU硬件层910对用户透明的用户友好的接口。在另一实施例中,框架层930可包括将定量功能添加到现有的、传统的方法(诸如,但不限于Torch7类型应用和Tensor流类型应用)的框架扩展。在一个实施例中,框架层930可包括将定量功能添加到训练算法。在另一实施例中,框架层930可将存在的除法、乘法以及平方根的分批归一化方法覆盖为除法、乘法以及平方根的移位近似的方法。在另一实施例中,框架层930可提供允许用户设置用于计算的位数的扩展。在另一实施例中,框架层930提供将多DPU API从DPU库和驱动器层920卷绕(wrap)到框架层930的能力,使得用户可在硬件层类似于使用多个GPU来使用多个DPU。框架层930的另一特征允许用户将功能分配给硬件层910的DPU或GPU。
应用层940可包括宽范围的应用,诸如但不限于图像标签处理、自驾驶/领航车辆、阿尔法狗类型深层应用和/或言语研究。
如本领域技术人员将认识到的,本文描述的创新性构思可以在宽范围的应用中被修改和改变。因此,所要求保护的主题的范围不应被限于上面讨论的特定示例性教导中的任何一个,而是由所附权利要求来进行限定。

Claims (20)

1.一种系统,包括:
接口,用于接收命令;
库,用于确定与所接收到的命令相应的至少一个动态随机存取存储器(DRAM)处理单元(DPU)运算;
编译器,用于形成与接收到的命令相应的用于所确定的至少一个DPU运算的至少一个DPU指令;以及
驱动器,用于将所述至少一个DPU指令发送到至少一个DPU,所述DPU包括包含按照具有至少一个列的阵列被布置的多个基于DRAM的计算单元的至少一个计算单元阵列,所述至少一个列包括至少三个行的基于DRAM的计算单元,所述至少三个行的基于DRAM的计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的逻辑功能,并被配置为将所述逻辑功能的结果存储在所述至少三个行中的第三行中。
2.如权利要求1所述的系统,其中,所述至少一个列的基于DRAM的计算单元均包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元,以及
其中,所述至少一个列的基于DRAM的计算单元提供或非逻辑功能。
3.如权利要求2所述的系统,其中,所述DPU还包括按照具有至少一个列的阵列被布置的多个基于DRAM的随机计算单元,所述至少一个列包括至少三个行的基于DRAM的随机计算单元,所述至少三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机逻辑功能的结果存储在所述至少三个行中的第三行中。
4.如权利要求3所述的系统,其中,所述至少一个列的基于DRAM的随机计算单元均包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。
5.如权利要求4所述的系统,其中,所述至少一个DPU运算包括随机计算运算。
6.如权利要求1所述的系统,其中,所述DPU还包括按照具有至少一个列的阵列被布置的多个基于DRAM的随机计算单元,所述至少一个列包括至少三个行的基于DRAM的随机计算单元,所述至少三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机逻辑功能的结果存储在所述至少三个行中的第三行中。
7.如权利要求1所述的系统,其中,所述库还将响应于所接收到的命令来确定整个卷积层的映射。
8.如权利要求1所述的系统,其中,所述库还将确定所述至少一个DPU运算内的多个并行性,所述至少一个DPU运算将多个DPU进行映射以执行与所接收到的命令相应的所述至少一个DPU运算。
9.如权利要求1所述的系统,其中,所述驱动器还将基于所接收到的命令控制进出DPU的数据移动。
10.如权利要求1所述的系统,其中,所述编译器还将形成与所接收到的命令相应的单个DPU指令,所述单个DPU指令针对所述至少一个DPU中的至少一行进行运算。
11.一种系统,包括:
至少一个动态随机存取存储器(DRAM)处理单元(DPU),每个DPU包括:
至少一个计算单元阵列,包括按照具有至少一个列的阵列被布置的多个基于DRAM的计算单元,所述至少一个列包括至少三个行的基于DRAM的计算单元,所述至少三个行的基于DRAM的计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的逻辑功能,并被配置为将所述逻辑功能的结果存储在所述至少三个行中的第三行中;以及
多个基于DRAM的随机计算单元,按照具有至少一个列的阵列被布置,所述至少一个列包括至少三个行的基于DRAM的随机计算单元,所述至少三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机逻辑功能的结果存储在所述至少三个行中的第三行中;
接口,用于接收命令;
库,用于确定与所接收到的命令相应的至少一个DPU运算;以及
驱动器,用于将与所接收到的命令相应的所述至少一个DPU指令发送到所述至少一个DPU。
12.如权利要求11所述的系统,其中,所述至少一个列的基于DRAM的计算单元均包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元,以及
其中,所述至少一个列的基于DRAM的随机计算单元均包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。
13.如权利要求12所述的系统,其中,所述至少一个列的基于DRAM的计算单元提供或非逻辑功能。
14.如权利要求11所述的系统,其中,所述至少一个DPU运算包括随机计算运算。
15.如权利要求11所述的系统,其中,所述编译器还将形成与所接收到的命令相应的单个DPU指令,所述单个DPU指令针对DPU中的至少一行进行运算。
16.一种系统,包括:
至少一个动态随机存取存储器(DRAM)处理单元(DPU),包括包含按照具有至少一个列的阵列被布置的多个基于DRAM的随机计算单元的至少一个随机计算单元阵列,所述至少一个列包括至少三个行的基于DRAM的随机计算单元,所述至少三个行的基于DRAM的随机计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的随机逻辑功能,并被配置为将所述随机逻辑功能的结果存储在所述三个行中的第三行中;
库,用于确定与所接收到的命令相应的至少一个随机DPU运算;以及
驱动器,用于将与所接收到的命令相应的至少一个随机DPU指令发送到包括所述多个基于DRAM的随机计算单元的所述至少一个DPU。
17.如权利要求16所述的系统,其中,所述至少一个列的基于DRAM的随机计算单元均包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。
18.如权利要求16所述的系统,其中,所述驱动器还将基于所接收到的命令控制进出包括所述多个基于DRAM的随机计算单元的所述DPU的数据移动。
19.如权利要求16所述的系统,还包括:
至少一个计算单元阵列,包括按照具有至少一个列的阵列被布置的多个基于DRAM的计算单元,所述至少一个列包括至少三个行的基于DRAM的计算单元,所述至少三个行的基于DRAM的计算单元被配置为提供针对所述至少三个行中的第一行和第二行进行运算的逻辑功能,并被配置为将所述逻辑功能的结果存储在所述至少三个行中的第三行中,
其中,所述库还将确定与第二个接收到的命令相应的用于所述至少一个计算单元阵列的至少一个DPU运算;以及
驱动器,用于将与所述第二个接收到的命令相应的至少一个DPU指令发送到包括所述多个基于DRAM的计算单元的所述至少一个计算单元阵列。
20.如权利要求19所述的系统,其中,所述至少一个列的基于DRAM的随机计算单元均包括三个晶体管-一个电容器(3T1C)DRAM存储器单元或一个晶体管-一个电容器(1T1C)DRAM存储器单元。
CN201710684841.2A 2016-10-27 2017-08-11 用于dpu运算的软件栈和编程 Active CN108010551B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662413973P 2016-10-27 2016-10-27
US62/413,973 2016-10-27
US15/426,015 US10180808B2 (en) 2016-10-27 2017-02-06 Software stack and programming for DPU operations
US15/426,015 2017-02-06

Publications (2)

Publication Number Publication Date
CN108010551A true CN108010551A (zh) 2018-05-08
CN108010551B CN108010551B (zh) 2023-05-02

Family

ID=62021467

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710684841.2A Active CN108010551B (zh) 2016-10-27 2017-08-11 用于dpu运算的软件栈和编程

Country Status (5)

Country Link
US (1) US10180808B2 (zh)
JP (1) JP6920169B2 (zh)
KR (1) KR102268179B1 (zh)
CN (1) CN108010551B (zh)
TW (1) TWI718336B (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 (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10249362B2 (en) 2016-12-06 2019-04-02 Gsi Technology, Inc. Computational memory cell and processing array device using the memory cells for XOR and XNOR computations
US10860320B1 (en) 2016-12-06 2020-12-08 Gsi Technology, Inc. Orthogonal data transposition system and method during data transfers to/from a processing array
KR20200057475A (ko) 2018-11-16 2020-05-26 삼성전자주식회사 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템
US11157692B2 (en) * 2019-03-29 2021-10-26 Western Digital Technologies, Inc. Neural networks using data processing units
US10949214B2 (en) * 2019-03-29 2021-03-16 Intel Corporation Technologies for efficient exit from hyper dimensional space in the presence of errors
US11074008B2 (en) * 2019-03-29 2021-07-27 Intel Corporation Technologies for providing stochastic key-value storage
CN110275498A (zh) * 2019-06-28 2019-09-24 泉州信息工程学院 一种基于互联网与深度学习的智能制造方法和系统及设备
US20220058471A1 (en) * 2020-08-19 2022-02-24 Micron Technology, Inc. Neuron using posits
CN114201421B (zh) * 2022-02-17 2022-05-10 苏州浪潮智能科技有限公司 一种数据流处理方法、存储控制节点及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11338767A (ja) * 1998-05-22 1999-12-10 Mitsubishi Heavy Ind Ltd 画像処理用機能メモリ装置
US20100164972A1 (en) * 2008-04-02 2010-07-01 Avidan Akerib System, method and apparatus for memory with embedded associative section for computations
CN103907157A (zh) * 2011-10-28 2014-07-02 惠普发展公司,有限责任合伙企业 进行行移位的可移位存储器
US20150357020A1 (en) * 2014-06-05 2015-12-10 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US20160232951A1 (en) * 2015-02-05 2016-08-11 The Board Of Trustees Of The University Of Illinois Compute memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3922653B2 (ja) * 1993-03-17 2007-05-30 ゲイトフィールド・コーポレイション ランダムアクセスメモリ(ram)ベースのコンフィギュラブルアレイ
US5847577A (en) * 1995-02-24 1998-12-08 Xilinx, Inc. DRAM memory cell for programmable logic devices
US6745219B1 (en) 2000-06-05 2004-06-01 Boris Zelkin Arithmetic unit using stochastic data processing
US9552047B2 (en) * 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US6507530B1 (en) * 2001-09-28 2003-01-14 Intel Corporation Weighted throttling mechanism with rank based throttling for a memory system
US8127075B2 (en) 2007-07-20 2012-02-28 Seagate Technology Llc Non-linear stochastic processing storage device
EP2260421A2 (en) 2008-03-04 2010-12-15 Massachusetts Institute of Technology Combinational stochastic logic
US8103598B2 (en) 2008-06-20 2012-01-24 Microsoft Corporation Compiler for probabilistic programs
US20140223439A1 (en) 2010-02-22 2014-08-07 Analog Devices, Inc. Superscalar control for a probability computer
US8645286B2 (en) 2010-02-23 2014-02-04 Prior Knowledge, Inc. Configurable circuitry for solving stochastic problems
US9251467B2 (en) 2013-03-03 2016-02-02 Microsoft Technology Licensing, Llc Probabilistic parsing
KR102168652B1 (ko) * 2013-12-16 2020-10-23 삼성전자주식회사 감지 증폭기, 그것을 포함하는 반도체 메모리 장치 및 그것의 읽기 방법
US9954533B2 (en) * 2014-12-16 2018-04-24 Samsung Electronics Co., Ltd. DRAM-based reconfigurable logic
US9922696B1 (en) * 2016-10-28 2018-03-20 Samsung Electronics Co., Ltd. Circuits and micro-architecture for a DRAM-based processing unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11338767A (ja) * 1998-05-22 1999-12-10 Mitsubishi Heavy Ind Ltd 画像処理用機能メモリ装置
US20100164972A1 (en) * 2008-04-02 2010-07-01 Avidan Akerib System, method and apparatus for memory with embedded associative section for computations
CN103907157A (zh) * 2011-10-28 2014-07-02 惠普发展公司,有限责任合伙企业 进行行移位的可移位存储器
US20150357020A1 (en) * 2014-06-05 2015-12-10 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US20160232951A1 (en) * 2015-02-05 2016-08-11 The Board Of Trustees Of The University Of Illinois Compute memory

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
JP6920169B2 (ja) 2021-08-18
JP2018073413A (ja) 2018-05-10
KR20180046346A (ko) 2018-05-08
TWI718336B (zh) 2021-02-11
US10180808B2 (en) 2019-01-15
CN108010551B (zh) 2023-05-02
KR102268179B1 (ko) 2021-06-23
TW201816619A (zh) 2018-05-01
US20180121130A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
CN108010551A (zh) 用于dpu运算的软件栈和编程
JP6799520B2 (ja) Dram基盤プロセシングユニット
CN108022615A (zh) 动态随机存取存储器处理单元
He et al. Newton: A DRAM-maker’s accelerator-in-memory (AiM) architecture for machine learning
Angizi et al. AlignS: A processing-in-memory accelerator for DNA short read alignment leveraging SOT-MRAM
CN105612582B (zh) 可独立寻址的存储器阵列地址空间
Angizi et al. Redram: A reconfigurable processing-in-dram platform for accelerating bulk bit-wise operations
TW202024898A (zh) 用於記憶體內乘法及累加運算的電路及其方法
Kim et al. An overview of processing-in-memory circuits for artificial intelligence and machine learning
CN107408405A (zh) 用于并行写入到多个存储器装置位置的设备及方法
JPH04182984A (ja) 半導体集積回路装置
CN109003640A (zh) 存储器中子阵列之间的数据传送
US20050024983A1 (en) Providing a register file memory with local addressing in a SIMD parallel processor
Jaiswal et al. I-SRAM: Interleaved wordlines for vector Boolean operations using SRAMs
Ollivier et al. CORUSCANT: Fast efficient processing-in-racetrack memories
Zhang et al. Aligner-d: Leveraging in-dram computing to accelerate dna short read alignment
Zhou et al. Flexidram: A flexible in-dram framework to enable parallel general-purpose computation
Liu et al. Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity
CN110574013A (zh) 存储器形状
Yavits et al. PRINS: resistive CAM processing in storage
US20230343373A1 (en) Memory devices including processing-in-memory architecture configured to provide accumulation dispatching and hybrid partitioning
Kim et al. DRAM-Based Processing-in-Memory
Chen et al. PipeCIM: A High-Throughput Computing-In-Memory Microprocessor With Nested Pipeline and RISC-V Extended Instructions
Ali mustafa_ali_dissertation. pdf

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