CN113495861A - 用于计算的系统和方法 - Google Patents

用于计算的系统和方法 Download PDF

Info

Publication number
CN113495861A
CN113495861A CN202110347014.0A CN202110347014A CN113495861A CN 113495861 A CN113495861 A CN 113495861A CN 202110347014 A CN202110347014 A CN 202110347014A CN 113495861 A CN113495861 A CN 113495861A
Authority
CN
China
Prior art keywords
memory
interface
circuit
memory function
circuits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110347014.0A
Other languages
English (en)
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 CN113495861A publication Critical patent/CN113495861A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/1016Performance improvement
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

公开一种用于计算的系统和方法。在一些实施例中,所述系统包括:存储器,所述存储器包括一个或多个存储器内功能电路;以及高速缓存一致性协议接口电路,具有第一接口和第二接口。所述一个或多个存储器内功能电路中的存储器内功能电路可被配置为:对包括从存储器获取的第一操作数的操作数执行运算以形成结果。第一接口可连接到存储器,并且第二接口可被配置为总线接口上的高速缓存一致性协议接口。

Description

用于计算的系统和方法
技术领域
根据本公开的实施例的一个或多个方面涉及存储器内功能计算(function-in-memory computation),更具体地讲,涉及一种使用高速缓存一致性协议接口执行存储器内功能计算的系统和方法。
背景技术
在本部分中提供的背景技术被包括以仅设置上下文。本部分的内容不被认是现有技术。存储器内功能计算可具有优于其他计算配置的优点,在于存储器与多个存储器内功能电路(function-in-memory circuit)之间的数据路径的总带宽可显著大于存储器与中央处理器(CPU)或图形处理器(GPU)之间的数据路径的带宽。然而,实现存储器内功能计算可能是具有挑战性的,部分是因为存储器内功能电路对操作的执行会影响存储器的操作的延时。
因此,需要用于执行存储器内功能计算的改进的系统和方法。
发明内容
根据本发明的实施例,提供一种用于计算的系统,所述系统包括:存储器,存储器包括一个或多个存储器内功能电路;以及高速缓存一致性协议接口电路,具有第一接口和第二接口,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:对包括从存储器获取的第一操作数的操作数执行运算以形成结果,第一接口连接到存储器,并且第二接口被配置为总线接口上的高速缓存一致性协议接口。
在一些实施例中,存储器内功能电路以单指令多数据配置来布置;或者存储器内功能电路以脉动配置来布置。
在一些实施例中,高速缓存一致性协议接口电路是计算快速链接(CXL)接口电路,并且总线接口是外围组件互连快速(PCIe)端点接口。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路位于具有动态随机存取存储器的半导体芯片上。
在一些实施例中,第一接口被配置为根据从由DDR2、DDR3、DDR4和DDR5组成的组选择的协议进行操作。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路包括:多个寄存器、多个复用器、以及算术逻辑单元。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:执行从由加法、减法、乘法和除法组成的组选择的算术运算。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:执行从由浮点加法、浮点减法、浮点乘法和浮点除法组成的组选择的算术运算。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:执行从由逐位与、逐位或、逐位异或和逐位求补码组成的组选择的逻辑运算。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:在第一状态下将所述结果存储在存储器中,在第二状态下将所述结果发送到高速缓存一致性协议接口电路。
在一些实施例中,所述系统还包括连接到第二接口的主机处理电路。
在一些实施例中,主机处理电路包括PCIe根复合体,具有连接到第二接口的根端口。
根据本发明的实施例,提供一种用于计算的系统,所述系统包括:存储器;以及高速缓存一致性协议接口电路,具有第一接口和第二接口,高速缓存一致性协议接口电路被配置为:对存储在存储器中的数据执行算术运算,第一接口连接到存储器,并且第二接口被配置为总线接口上的高速缓存一致性协议接口。
在一些实施例中,存储器包括一个或多个存储器内功能电路,并且所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:对包括从存储器获取的第一操作数的操作数执行运算以形成结果。
在一些实施例中,存储器内功能电路以单指令多数据配置来布置;或者存储器内功能电路以脉动配置来布置。
在一些实施例中,高速缓存一致性协议接口电路是计算快速链接(CXL)接口电路,并且总线接口是外围组件互连快速(PCIe)端点接口。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路位于具有动态随机存取存储器的半导体芯片上。
在一些实施例中,第一接口被配置为:根据从由DDR2、DDR3、DDR4、DDR5、GDDR、HBM和LPDDR组成的组选择的协议进行操作。
在一些实施例中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:在第一状态下将所述结果存储在存储器中,在第二状态下将所述结果发送到高速缓存一致性协议接口电路。
根据本发明的实施例,提供一种用于计算的方法,所述方法包括:通过主机处理电路向CXL接口电路发送一个或多个CXL包;响应于接收到CXL包,通过CXL接口电路向连接到CXL接口电路的存储器中的存储器内功能电路发送指令;以及通过存储器内功能电路根据指令对包括从存储器获取的第一操作数的操作数执行运算以形成结果。
附图说明
附图被包括以仅提供示例,并且不应被理解为限制发明的范围。参照说明书、权利要求书和附图,将领会和理解本公开的这些和其他特征和优点,在附图中:
图1A是根据本公开的实施例的包括多个存储体组的存储器的框图,每个存储体组包括多个存储体,存储器还包括多个存储器内功能电路;
图1B是根据本公开的实施例的具有多个感测放大器、全局输入输出寄存器和存储器内功能电路的存储体的框图;
图1C是根据本公开的实施例的用于存储器内功能电路执行的指令的表;
图2A是根据本公开的实施例的使用多个标准的动态随机存取存储器(DRAM)模块的存储器内功能配置的框图,每个DRAM模块连接到存储器内功能电路,多个DRAM模块共享至主机处理电路的通道;
图2B是根据本公开的实施例的使用布置成多个排的多个标准的DRAM模块的存储器内功能配置的框图,每个排连接到存储器内功能电路;
图2C是根据本公开的实施例的使用多个修改的DRAM芯片的存储器内功能配置的框图,每个芯片包括存储器内功能电路;图2D是根据本公开的实施例的使用多个修改的DRAM芯片的存储器内功能配置的框图,每个芯片包括多个DRAM存储体和用于每个存储体的存储器内功能电路;
图3A是根据本公开的实施例的存储器内功能配置,其中,多个存储器内功能电路被布置为单指令多数据处理器;
图3B是根据本公开的实施例的存储器内功能配置,其中,多个存储器内功能电路以脉动阵列布置;
图4A是根据本公开的实施例的用于计算的系统的框图;
图4B是用于执行存储器内功能计算的系统的框图;以及
图5是根据本公开的实施例的用于计算的方法的流程图。
具体实施方式
下面结合附图阐述的具体实施方式意在作为对根据本公开提供的用于执行存储器内功能计算的系统和方法的示例性实施例的描述,而不意在表示可构造或利用本公开的唯一形式。该描述结合示出的实施例阐述了本公开的特征。然而,应理解,相同或等同的功能和结构可通过意在包括在公开的范围内的不同的实施例来实现。如在此其他地方所表示的,相同的元件编号意在指示相同的元件或特征。
在一些实施例中,存储器内功能电路是与存储器电路集成的处理电路,或者是比例如通过标准存储器总线连接到存储器的CPU或GPU更靠近存储器的处理电路。因此,多个存储器内功能电路与存储器之间的总带宽可显著大于存储器总线的总带宽,潜在地实现更大的处理吞吐量。
如果包括存储器内功能电路的存储器使用一些接口(诸如,双倍数据速率2(DDR2)、DDR3等)连接到CPU或GPU,则在一些情况下,包括存储器内功能电路的存储器可能无法正确地操作。会发生这种情况部分是因为由存储器内功能电路产生的响应的延时可违反存储器控制器依赖于保持高速缓存一致性(最终存储在多个本地高速缓存中的共享资源数据的一致性)的延时假设。
在一些实施例中,可使用高速缓存一致性计算机协议(或“高速缓存一致性协议”)(诸如,计算快速链接(CXL)接口)将存储器连接到CPU或GPU来减轻或解决这个问题。尽管在此将一些实施例描述为使用CXL协议,但是发明不限于这样的实施例。例如,可采用适合于保持高速缓存一致性的任何其他协议(在此可被称为“高速缓存一致性协议”)来代替CXL。
参照图1A,在一些实施例中,存储器(例如,高带宽存储器(HBM)或双列直插式存储器模块(DIMM))可被布置为多个存储体组(BG0、BG1、BG2、BG3),每个存储体组包括多个存储体105(例如,BG0包括被标记为A、B、C和D的存储体105,BG1包括被标记为E至H的存储体105,BG2包括被标记为I至L的存储体105,BG3包括被标记为M至P的存储体105)。图1A的一些特征(诸如,硅通孔(TSV))是HBM特有的;然而,其他形式的存储器(例如,DIMM)可以以类似的方式进行操作。DRAM存储器可被组织成排(rank)、芯片和存储体105。“排”可以是具有共享的片选引脚的存储器的一部分。每个排可包括八个芯片,并且每个芯片可包括16个存储体105。芯片的存储体105可被组织成“兆存储体”,使得例如由来自排中的八个芯片中的每个芯片的存储体组BG0组成的存储体105的集合可以是兆存储体0(未示出)。芯片可被并行读取到256位(256b)宽的总线上,其中,八个芯片中的每个芯片提供256位数据中的32位(32B)。在图1A中,WRIO可指示写入/读取输入输出,tCCDL可与列访问时序有关。
存储器可连接到主机处理电路205(例如,CPU或GPU,或者具有附加元件(诸如,存储器控制器(MC))的CPU或GPU),并为主机处理电路205提供存储。在一些实施例中,主机处理电路205在网络路径的主机侧(例如,它是主机服务器)。在存储器内计算(IMC)系统中,每个存储体105可包括输入/输出感测放大器112(IOSA)和存储器内功能(FIM)电路110(也可被称为“存储器内计算电路”或“存储器内处理电路”)。如在此所使用的,存储器内功能电路是能够执行算术运算或逻辑运算的处理电路,并且比主机处理电路205更直接地连接到存储器(并且也比加速器更直接地连接到存储器)。例如,在存储器通过DDR总线连接到主机处理电路205的系统中,在DDR总线的存储器侧的处理电路可被认为是存储器内功能电路,而在DDR总线的主机处理电路侧的处理电路(例如,DDR总线的主机处理电路侧的加速器,主机处理电路205可向其委派计算任务)不被认为是存储器内功能电路。图1B示出一些实施例中的这样的存储体105的结构,图1C是示出可由存储器内功能电路110执行的操作的列表的表。在一些实施例中,主机处理电路205向存储器内功能电路110发送数字(例如,与图1C的表的一行对应的0与9之间的数字),然后存储器内功能电路110执行对应的操作。指令(或等效地,标识指令的数字)可由主机处理电路205通过保留供将来使用(RFU)位(例如,DDR接口的RFU位)发送到存储器内功能电路110。
如图1B中所示,存储器内功能电路110可包括寄存器115(例如,Rop和Rz)、算术逻辑单元(ALU)120和复用器125(在图1B中均被标记为“MUX”),它们可一起用于执行指令(例如,图1C的表中列出的指令)。存储器内功能电路110还可包括FIM逻辑220、控制器210和存储器映射寄存器225(下面进一步详细讨论)。如图1C的表中所示,指令可使存储器内功能电路110将一个寄存器的内容复制到另一个寄存器中(例如,指令0-5和指令9)或对两个寄存器的内容执行运算(“op”)并将结果存储在第三寄存器中(在图1C的表的指令集的情况下,结果存储在在寄存器Rz中)。运算可以是算术运算(例如,根据例如IEEE-754执行的+、-、×或/)或逻辑运算(例如,逐位&(与,AND)、逐位|(或,OR)、逐位^(异或)或逐位~(求补码))。当指令是图1C的表中的指令6、7和8中的一个时,寄存器(例如,存储器映射寄存器225中的一个)可指定将执行的运算(例如,特定的算术运算或逻辑运算)。返回到图1B,算术逻辑单元120可包括16通道、16位浮点(FP-16)向量单元或者8通道、32位浮点(FP-32)向量单元,使得各种运算成为可能。在一个示例中,存储器内功能电路110可执行浮点加法、浮点减法、浮点乘法和浮点除法中的至少一个。非限制性示例可包括张量运算(例如,点积、外积、ReLU(整流器或修正线性单元)、vsSqr(对向量的元素求平方)和vsSQrt(取向量的每个元素的平方根))。为了有效地使用存储器内功能电路110,数据可被布置在存储器中,使得多个操作数在打开的行中同时可用。如在此所使用的,“打开的行”表示感测放大器112中的数据(在行激活被发出之后)。打开的行可例如包括8192位数据,ALU能够从8192位数据读取多个操作数(例如,32位操作数)。在图1B中,WIO可指示写入输入输出,RIO可指示读取输入输出。
主机处理电路205的存储器控制器206(MC)可以是遵循由电子设备工程联合委员会(JEDEC)颁布的DRAM接口标准和主机处理电路205的BIOS的存储器控制器;在这种情况下,存储器控制器206可实现无高速缓存或有限的高速缓存。在一些实施例中,存储器控制器206可实现可能不遵循JEDEC的不同通信协议(例如,时序约束可以是不同的,或者数据总线或地址和控制总线或两者可被分成两个或更多个部分以提供多个宽度减小的总线)。在一些实施例中,存储器控制器206是事务性的,即,不是保证任何存储器访问的结果将在特定时间返回,而是主机处理电路205可等待直到存储器控制器206指示所请求的数据准备就绪。代替高速缓存层级结构,主机处理电路205可仅具有暂存器(暂存器可不需要高速缓存一致性)。在一些实施例中,主机处理电路205连接到多于一个存储器(例如,连接到包括存储器内功能电路110并且不存在高速缓存的第一存储器,以及缺少存储器内功能电路并且存在高速缓存的第二存储器)。
在操作中,主机处理电路205可首先将操作数值写入存储器。如图1A中所示,这可涉及将值广播到多个存储体(例如,存储体105)。当操作数被重复使用多次(例如,在矩阵乘法中,第一矩阵的每个行可乘以第二矩阵的每个列)时,这样的广播可减少所使用的写入循环的数量。然后,主机处理电路205可通过将操作数的地址发送到存储器(使得寻址的存储器位置的内容被读入全局输入输出(全局IO,GIO)寄存器)并将指令(例如,标识图1C的表中的指令之一的0与9之间的数字)发送到存储器内功能电路110来使得处理在存储器中被执行。
例如,如下所述,存储器内功能电路110可执行第一操作数和第二操作数的乘法,并将乘积返回到主机处理电路205。主机处理电路205可将第一操作数的地址发送到存储器(使得第一操作数被读取到全局IO寄存器中),并将数字0(标识图1C的表中的指令0)发送到存储器内功能电路110。然后,存储器内功能电路110可在接收到指令0时将第一操作数存储在Rop寄存器中(例如,将第一操作数从全局IO寄存器复制到Rop寄存器)。然后,主机处理电路205可将第二操作数的地址发送到存储器(使得第二操作数被读取到全局IO寄存器中),并将数字6(标识图1C的表中的指令6)发送到存储器内功能电路110。然后,存储器内功能电路110可在接收到指令6时,计算两个操作数(第一操作数在Rop寄存器中,第二操作数在全局IO寄存器中)的乘积(在这种情况下,“op”是乘法),并将乘积存储在寄存器Rz中。最后,主机处理电路205可将数字5(标识图1C的表中的指令5)发送到存储器内功能电路110,使得(存储在Rz寄存器中的)乘积被写入到DQ输出(即,返回到主机处理电路205)。
作为另一示例,存储器内功能电路110可执行第一操作数和第二操作数的乘法,并且通过遵循相同的步骤序列将乘积存储在存储器中,除了最终指令可以是指令数字3(标识图1C的表中的指令3),使得乘积被写回到存储器中的由主机处理电路205同时发送到存储器的地址指定的位置处(而不是返回到主机处理电路205)。
图2A和图2B示出使用标准的动态随机存取存储器(DRAM)芯片(即,不修改DRAM芯片以与存储器内功能电路110一起使用)来实现存储器内功能电路110的两种配置。尽管在一些上下文中,诸如此的配置可被称为“近存储器功能(function near memory)”,但是如在此所使用的,术语“存储器内功能”包括存储器内功能电路110位于与存储器分离的半导体芯片上的配置(诸如,图2A和2B的配置)。在图2A的实施例中,多个(例如,两个)DIMM模块共享至主机处理电路205(主机处理电路205包括CPU和存储器控制器(MC))的通道。每个DIMM模块包括存储器内功能电路110(或“FIM模块”)。DIMM模块可以是低负载DIMM(LR-DIMM)模块,以便于共享通道。在图2B的实施例中,存储器模块的多个排中的每个排与相应的存储器内功能电路110相关联。图2A和图2B中的每个FIM模块可包括控制器210、中间缓冲器215(图1B的Rop寄存器可以是中间缓冲器215的示例)、FIM逻辑220和存储器映射寄存器225。图2B的存储器可以是M.2或DIMM形状因子。在图2B的配置中,存储器内功能电路110可被制造在缓冲器芯片上,该缓冲器芯片在没有存储器内功能电路的DIMM中可以是主要执行重定时的芯片。
图2C和图2D示出两种不同的配置,在这两种不同的配置中的每个中,存储器内功能电路110与DRAM位于同一芯片上(例如,在同一硅芯片上制造)。在图2C的实施例中,每个芯片230包括存储器内功能电路110。图2C的配置不影响DRAM核,并且部分地由于这个原因,图2C的配置可比图2D的配置更容易实现。此外,在图2C的配置中,布线(在图2D的配置中使用有限数量的金属层来实现布线可能是具有挑战性的)可能更简单。图2C的配置在逻辑上类似于图2B的配置,就这两种配置中的每个意义而言,多个DRAM存储体连接到存储器内功能电路110并且由存储器内功能电路110使用。(与存储器内功能电路110被制造在缓冲器芯片上的配置相比)图2C和图2D的配置可降低缓冲器芯片的复杂性。在图2C和图2D的实施例中,每个芯片230可仅略大于标准的存储器芯片,并且因为没有用于存储器内功能电路110的单独芯片,所以与图2A和图2B的存储器内功能电路110位于与DRAM分离的芯片上的实施例相比,芯片230可更容易地被容纳在标准形状因子中(例如,在DIMM上),因此,芯片(DRAM芯片和包括存储器内功能电路110的芯片)可占据更多的板空间。在图2C的实施例中,每个存储器内功能电路110仅访问一个存储器芯片,并且高速缓存行可完全在一个芯片230内(即,数据可不跨多个芯片230条带化,这种条带化将使得存储器内功能电路110难以执行有用的操作)。如在此所使用的,“高速缓存行”表示主机处理电路205访问存储器(即,从存储器读取和向存储器写入)的粒度(granularity)。例如,对于CPU,高速缓存行可以是64字节,对于GPU,高速缓存行可以是128字节。
在图2D的实施例中,每个存储体105具有与其相关联的存储器内功能电路110,使得每个芯片230包括多个(例如,16个)存储器内功能电路110。图2D的实施例可包括比图2C的实施例更多数量的存储器内功能电路110,因此可表现出比图2C的实施例更好的性能。对每个存储体的IO路径的改变(如图1B中所示,图1B也示出了存储器的每个存储体具有一个存储器内功能电路110的配置)可消耗比例如图2C的实施例的芯片面积更多的芯片面积,并且设计的复杂性可大于例如图2C的实施例的设计的复杂性,部分是因为使用有限数量的金属层来完成信号路由的挑战。在图2D的实施例中,因为太少的DRAM控制位可用于使独立地址选择可行,所以每个存储体105中的存储器内功能电路110可在任何时间在相同的地址进行操作。
存储器内功能电路110之间的数据流可以以各种方式发生。在一些实施例中,如图3A中所示,存储器内功能电路110及其相关联的存储器部分可被配置为单指令多数据(SIMD)并行处理器。存储器内功能电路110中的每个者可在任何时间使用一个或多个不同的操作数执行与其他存储器内功能电路110相同的指令。在每个操作之后,如以上在图1B的上下文中所讨论的,操作的结果可被返回到主机处理电路205或被保存在存储器中。
在一些实施例中,如图3B中所示,存储器内功能电路110a、110b、110c(统称为存储器内功能电路110)及其相关联的存储器部分可被配置为脉动阵列,脉动阵列可表示紧密结合的数据处理电路的同构网络。在这样的实施例中,第一存储器内功能电路110a的每个操作的结果可作为随后的操作的自变量被传递到网络中的随后的第二存储器内功能电路110b。在一些实施例中,如图3B中所示,每个存储体组可连接到存储器内功能电路110的相应链,并且多个链之间没有连接。尽管用于在连接的多个存储器内功能电路110之间通信的逻辑可能不存在,但是每个存储体组内的存储体105之间的数据路径可已经存在于标准存储器架构(例如,DIMM或HBM)中;如果要使用图3B的配置,则可添加这样的逻辑。逻辑可包括连接的存储器内功能电路110之间的附加导体,可例如通过第一存储器内功能电路110a采用附加导体以向其下游邻居(第二存储器内功能电路110b)通知公共总线上的数据用于下游邻居。存储器内功能电路110可连接到公共总线,并且每次仅有一个存储器内功能电路110可驱动总线。这样,可使用合适的逻辑和仲裁来实现存储器内功能电路110之间的通信,同时避免总线争用。图3B的实施例可能不太适合于一些计算。然而,对于图3B的实施例所适合的计算,图3B的实施例可具有以下优点:主机处理电路205不负担中间结果,而如果用图3A的实施例替代地执行类似的计算,则主机处理电路205将负担中间结果。在一些实施例中,可采用根据图3A或根据图3B的系统来执行基本线性代数子程序(BLAS)第1级(BLAS1)或第2级(BLAS2)或通用矩阵乘法(GEMM)(GEMM可以是BLAS3的一部分),或执行基本线性代数子程序(BLAS)第1级(BLAS1)或第2级(BLAS2)或通用矩阵乘法(GEMM)的一部分。为了执行GEMM计算,系统可选择被执行的循环的顺序,以使并行性最大化。根据图3A或根据图3B的系统还可以能够对转置操作数执行操作(例如,它可以能够计算矩阵乘积AB、ATB或ABT),而无需主机处理电路205首先对存储器中的数据进行重新排序。
图4A示出一些实施例中的用于计算的系统。用于计算的系统包括CPU405(它可作为主机处理电路进行操作),CPU 405通过交换机410连接到多个(例如,两个)硬件加速器415和用于执行存储器内功能计算的系统420。硬件加速器415中的每个连接到相应的存储器425(例如,低功耗DDR5存储器),并且可包括GPU、CPU、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。每个硬件加速器415可被配置为从CPU 405接收由CPU 405委派给它的计算任务,执行委派的计算任务,并且(i)将结果返回给CPU 405或(ii)存储结果,以用于附加的后续处理或供CPU 405稍后进行获取(retrieval)。类似地,用于执行存储器内功能计算的系统420(下面在图4B的上下文中进一步详细讨论)可被配置为从CPU 405接收由CPU 405委派给它的计算任务,执行委派的计算任务,并且(i)将结果返回给CPU 405或(ii)存储结果,以用于附加的后续处理或供CPU 405稍后进行获取。如在此所使用的,“计算任务”是将由计算机执行的操作的任何集合;这样,计算任务可由多个较小的计算任务组成或包括多个较小的计算任务。
用于计算的系统可包括连接到CPU 405的网络接口卡(NIC)445,使得由例如另一处理系统通过远程过程调用(RPC)将计算任务委派给用于计算的系统成为可能。CPU 405可包括各自连接到相应的存储器(例如,DDR5存储器)435的一个或多个(例如,两个)存储器控制器430。CPU 405还可包括PCIe根复合体(root complex)440(例如,如所示出的PCIe 5根复合体),并且PCIe根复合体440的根端口可连接到交换机410。交换机410可被配置为交换PCIe包(packet),并且交换机410可知道CXL,以便能够处理CXL的包大小和格式(这可与传统PCIe不同),并且使得交换机410可基于64字节包执行路由和转发。交换机410可与CPU405的PCIe根复合体440所使用的PCIe版本(例如,PCIe5)兼容。
CPU 405通过交换机410与硬件加速器415以及与用于执行存储器内功能计算的系统420进行的通信可遵循计算快速链接(CXL)协议。CXL是用于高速CPU至装置和CPU至存储器的开放互连标准。CXL是PCIe协议上的层,即CXL包可以是PCIe包。在一些实施例中,CXL是覆盖在PCIe电气PHY层之上的事务协议。使用CXL接口(通过交换机410)将硬件加速器415和用于执行存储器内功能计算的系统420连接到CPU 405可具有以下优点:CPU 405可保持CXL装置中的存储器区域的高速缓存副本,从而实现CPU 405与加速器415之间的细粒度共享。另一方面,加速器还可访问主机高速缓存区域,帮助加速器更快地完成处理。PCIe具有可变延时,因此这个概念有助于具有不确定延时的存储器加速,同时确保CPU 405仍然可将存储器加速器415用作传统存储器装置。此外,通过CPU 405将计算任务委派给硬件加速器415以及用于执行存储器内功能计算的系统420,高速缓存一致性可不受影响。
图4B示出一些实施例中的用于执行存储器内功能计算的系统420。用于执行存储器内功能计算的系统420可包括近数据加速器或“CXL接口电路”445,以及包括存储器内功能电路110的存储器模块450(例如,根据图2A至图2D中所示的实施例之一)。CXL接口电路445可具有用于与存储器模块450通信的第一接口455(例如,DDR2、DDR3、DDR4、DDR5、GDDR、HBM或LPDDR接口)、以及用于与CPU 405通信(例如,通过交换机410)的第二接口(例如,总线接口上的CXL接口(诸如,PCIe端点接口))460。
CXL接口电路445可用作CXL接口460与第一接口455之间的接口适配器电路,使得CPU 405能够将计算任务委派给存储器模块450的存储器内功能电路110。在一些实施例中,可首先执行控制流。指令流可被写入到存储器的连续部分和开始指针,然后大小可被写入到寄存器,并且门铃可被敲响(即,设置中断寄存器)。装置识别指令流,并在使用CRC确保数据完整性后进行确认。然后,装置可对指令和存储器区域进行操作,同时继续针对常规存储器指令提供处理器响应。处理引擎470提供所有辅助功能(诸如,DMA、电源管理、JTAG和驱动器API)。DMA使得装置能够与系统中的其他IO装置(诸如,网卡或GPU或另一存储器内处理装置)通信。一旦完成了操作,就(使用中断或轮询)设置CPU正在等待的门铃寄存器。然后,CPU读回结果并确认接收。来自CPU的连续指令流被流水线化,并且具有附加到它们的优先级,以帮助在存储器内处理单元上的有效执行。
CXL接口电路445还可用作加速器(例如,在由CPU 405委派给它的计算任务的一部分(由CPU 405或由CXL接口电路445)被进一步委派给存储器模块450的存储器内功能电路110的情况下执行计算任务(例如,算术运算),或者在由CPU 405委派给它的计算任务的一部分(由CPU 405或由CXL接口电路445)未被进一步委派给存储器模块450的存储器内功能电路110的情况下执行计算任务(例如,算术运算))。为了实现这样的操作,CXL接口电路445还可包括处理核465和处理引擎470,处理核465和处理引擎470可被设计为执行可能非常适合于由CPU 405委派的特定计算任务(例如,BLAS1或BLAS2操作)(例如,因为CPU可能相对不太适合于执行BLAS1或BLAS2操作)。高速互连475可将处理核465和处理引擎470连接到主机管理器480、SRAM控制器485(连接到静态随机存取存储器(SRAM)模块486)和DRAM控制器490。SRAM控制器也可被修改为向主机发出高速缓存监听请求(这是CXL启用的)。它还可响应主机监听(即,来自CPU的使行无效的请求,使得主机必须将行迁移到其自身并进行修改,即M状态或S状态)。主机管理器480可实现CXL栈(包括PCIe栈)。在一些实施例中,CXL栈负责解码CXL类型2或类型3存储器和加速器事务请求。在链接层,它实现链接保护和流控制。在PHY层,它类似于PCIe 5.0。在一些实施例中,能够使CXL接口电路445用作加速器的电路不存在,并且能够使CXL接口电路445用作加速器的电路仅用作至存储器模块450和存储器模块450所包括的存储器内功能电路110的接口电路。
图5示出一些实施例中的用于计算的方法的流程图。该方法包括:在510,通过主机处理电路向CXL接口电路发送多个CXL包;在520,响应于接收到CXL包,通过CXL接口电路向(连接到CXL接口电路的存储器中的)存储器内功能电路发送指令。该方法还包括:在530,通过存储器内功能电路根据指令对操作数执行操作以形成结果,操作数包括从存储器获取的第一操作数。
如在此所使用的,术语“或”应被解释为“和/或”,使得例如“A或B”表示“A”或“B”或者“A和B”中的任何一个。将理解,尽管在此可使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离发明构思的精神和范围的情况下,在此讨论的第一元件、第一组件、第一区域、第一层或第一部分可被称为第二元件、第二组件、第二区域、第二层或第二部分。
(例如,在在此包括的任何系统图中)描述的任何组件或组件的任何组合可用于执行在此包括的任何流程图的操作中的一个或多个。此外,(i)操作是示例操作,并且可涉及未明确包括的各种附加步骤,并且(ii)操作的时间顺序可被改变。
在此使用的术语仅用于描述特定实施例的目的,而不意在限制发明构思。如在此所使用的,术语“基本上”、“大约”和类似术语用作近似术语而不用作程度术语,并且意在考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。
如在此所使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,说明存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在此所使用的,术语“和/或”包括相关联的所列项中的一个或多个的任何组合和所有组合。当诸如“……中的至少一个”的表达在一列元素之后时修饰整列元素,而不修饰列的单个元素。此外,在描述发明构思的实施例时使用“可”表示“本公开的一个或多个实施例”。此外,术语“示例性”意在表示示例或说明。如在此所使用的,术语“使用”及其变型可被认为与术语“利用”及其变型同义。
将理解,当元件或层被称为“在”另一元件或层“上”、“连接到”、“结合到”或“邻近于”另一元件或层时,所述元件或层可直接在另一元件或层上、连接到、结合到或邻近于所述另一元件或层,或者可存在一个或多个中间元件或层。相反,当元件或层被称为“直接在”另一元件或层“上”、“直接连接到”、“直接结合到”或“紧邻”另一元件或层时,不存在中间元件或层。
在此列举的任何数值范围意在包含包括在所列举的范围内的相同数值精度的所有子范围。例如,“1.0至10.0”或“1.0与10.0之间”的范围意在包括所列举的最小值1.0与所列举的最大值10.0之间(并且包括所列举的最小值1.0和所列举的最大值10.0)的所有子范围(即,具有等于或大于1.0的最小值和等于或小于10.0的最大值,例如,2.4至7.6)。在此所列举的任何最大数值限制意在包含包括在其中的所有较低数值限制,并且本说明书中所列举的任何最小数值限制意在包含包括在其中的所有较高数值限制。
术语“处理电路”在此用于表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可包括例如专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理器(GPU)、以及可编程逻辑器件(诸如,现场可编程门阵列(FPGA))。在处理电路中,如在此所使用的,每个功能由被配置(即,硬连线)为执行所述功能的硬件执行,或由被配置为执行存储在非暂时性存储介质中的指令的更通用的硬件(诸如,CPU)执行。处理电路可被制造在单个印刷电路板(PCB)上或者分布在多个互连的PCB上。处理电路可包含其他处理电路,例如,处理电路可包括在PCB上互连的两个处理电路(FPGA和CPU)。
尽管在此已经具体描述和示出了用于执行存储器内功能计算的系统和方法的示例性实施例,但是对于本领域技术人员来说,许多修改和变化将是清楚的。因此,将理解,根据本公开的原理构造的用于执行存储器内功能计算的系统和方法可以以不同于在此具体描述的方式来体现。发明还在权利要求及其等同物中限定。

Claims (20)

1.一种用于计算的系统,所述系统包括:
存储器,存储器包括一个或多个存储器内功能电路;以及
高速缓存一致性协议接口电路,具有第一接口和第二接口,
所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:对包括从存储器获取的第一操作数的操作数执行运算以形成结果,
第一接口连接到存储器,并且
第二接口被配置为总线接口上的高速缓存一致性协议接口。
2.根据权利要求1所述的系统,其中,
存储器内功能电路以单指令多数据配置来布置;或者
存储器内功能电路以脉动配置来布置。
3.根据权利要求1所述的系统,其中,
高速缓存一致性协议接口电路是计算快速链接CXL接口电路,并且
总线接口是外围组件互连快速PCIe端点接口。
4.根据权利要求1所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路位于具有动态随机存取存储器的半导体芯片上。
5.根据权利要求1所述的系统,其中,第一接口被配置为:根据从由DDR2、DDR3、DDR4和DDR5组成的组选择的协议进行操作。
6.根据权利要求1至权利要求5中的任意一项所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路包括:
多个寄存器,
多个复用器,以及
算术逻辑单元。
7.根据权利要求1至权利要求5中的任意一项所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:执行从由加法、减法、乘法和除法组成的组选择的算术运算。
8.根据权利要求1至权利要求5中的任意一项所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:执行从由浮点加法、浮点减法、浮点乘法和浮点除法组成的组选择的算术运算。
9.根据权利要求1至权利要求5中的任意一项所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:执行从由逐位与、逐位或、逐位异或和逐位求补码组成的组选择的逻辑运算。
10.根据权利要求1至权利要求5中的任意一项所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:在第一状态下将所述结果存储在存储器中,在第二状态下将所述结果发送到高速缓存一致性协议接口电路。
11.根据权利要求1至权利要求5中的任意一项所述的系统,还包括:主机处理电路,连接到第二接口。
12.根据权利要求11所述的系统,其中,主机处理电路包括:PCIe根复合体,具有连接到第二接口的根端口。
13.一种用于计算的系统,所述系统包括:
存储器;以及
高速缓存一致性协议接口电路,具有第一接口和第二接口,
高速缓存一致性协议接口电路被配置为:对存储在存储器中的数据执行算术运算,
第一接口连接到存储器,并且
第二接口被配置为总线接口上的高速缓存一致性协议接口。
14.根据权利要求13所述的系统,其中,
存储器包括一个或多个存储器内功能电路,并且
所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:对包括从存储器获取的第一操作数的操作数执行运算以形成结果。
15.根据权利要求14所述的系统,其中,
存储器内功能电路以单指令多数据配置来布置;或者
存储器内功能电路以脉动配置来布置。
16.根据权利要求14所述的系统,其中,
高速缓存一致性协议接口电路是计算快速链接CXL接口电路,并且
总线接口是外围组件互连快速PCIe端点接口。
17.根据权利要求14所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路位于具有动态随机存取存储器的半导体芯片上。
18.根据权利要求14至权利要求17中的任意一项所述的系统,其中,第一接口被配置为:根据从由DDR2、DDR3、DDR4、DDR5、GDDR、HBM和LPDDR组成的组选择的协议进行操作。
19.根据权利要求14至权利要求17中的任意一项所述的系统,其中,所述一个或多个存储器内功能电路中的存储器内功能电路被配置为:在第一状态下将所述结果存储在存储器中,在第二状态下将所述结果发送到高速缓存一致性协议接口电路。
20.一种用于计算的方法,所述方法包括:
通过主机处理电路向计算快速链接CXL接口电路发送一个或多个CXL包;
响应于接收到所述一个或多个CXL包,通过CXL接口电路向连接到CXL接口电路的存储器中的存储器内功能电路发送指令;以及
通过存储器内功能电路根据指令对包括从存储器获取的第一操作数的操作数执行运算以形成结果。
CN202110347014.0A 2020-04-01 2021-03-31 用于计算的系统和方法 Pending CN113495861A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063003701P 2020-04-01 2020-04-01
US63/003,701 2020-04-01
US16/914,129 US11467834B2 (en) 2020-04-01 2020-06-26 In-memory computing with cache coherent protocol
US16/914,129 2020-06-26

Publications (1)

Publication Number Publication Date
CN113495861A true CN113495861A (zh) 2021-10-12

Family

ID=75302416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110347014.0A Pending CN113495861A (zh) 2020-04-01 2021-03-31 用于计算的系统和方法

Country Status (5)

Country Link
US (2) US11467834B2 (zh)
EP (1) EP3896574B1 (zh)
KR (1) KR20210122667A (zh)
CN (1) CN113495861A (zh)
TW (1) TW202207046A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114049905A (zh) * 2021-12-16 2022-02-15 西安紫光国芯半导体有限公司 非易失三维存储单元、存储方法、芯片组件和电子设备

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202203000A (zh) * 2020-03-06 2022-01-16 南韓商三星電子股份有限公司 用於記憶體內計算的方法及用於計算的系統
US11360701B1 (en) * 2020-05-04 2022-06-14 Meta Platforms, Inc. Memory and storage controller with integrated memory coherency interconnect
TWI778363B (zh) * 2020-05-29 2022-09-21 慧榮科技股份有限公司 採多級架構控制器的資料儲存裝置
US11561915B2 (en) * 2020-09-30 2023-01-24 EMC IP Holding Company LLC Remote sharing of directly connected storage
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
US11947472B2 (en) 2021-07-18 2024-04-02 Avago Technologies International Sales Pte. Limited Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch SoC
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
KR20230095775A (ko) 2021-12-22 2023-06-29 에스케이하이닉스 주식회사 Ndp 기능을 포함하는 메모리 확장 장치 및 이를 포함하는 가속기 시스템
US20230281128A1 (en) * 2022-03-03 2023-09-07 Samsung Electronics Co., Ltd. Cache-coherent interconnect based near-data-processing accelerator

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115402A1 (en) 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
EP1710703A1 (fr) 2005-04-04 2006-10-11 Stmicroelectronics Sa Cohérence de cache dans un système multiprocesseurs à mémoire partagée
US20080005484A1 (en) * 2006-06-30 2008-01-03 Joshi Chandra P Cache coherency controller management
US7827343B2 (en) * 2007-09-20 2010-11-02 International Business Machines Corporation Method and apparatus for providing accelerator support in a bus protocol
US8200992B2 (en) 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US20130311753A1 (en) * 2012-05-19 2013-11-21 Venu Kandadai Method and device (universal multifunction accelerator) for accelerating computations by parallel computations of middle stratum operations
US9740741B2 (en) * 2013-04-11 2017-08-22 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh Aggregate query-caching in databases architectures with a differential buffer and a main store
US9218291B2 (en) * 2013-07-25 2015-12-22 International Business Machines Corporation Implementing selective cache injection
EP3087492B1 (en) 2013-12-26 2018-11-21 Intel Corporation Pci express enhancements
KR101928529B1 (ko) * 2015-06-10 2018-12-13 울산과학기술원 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법
US20160378465A1 (en) 2015-06-23 2016-12-29 Intel Corporation Efficient sparse array handling in a processor
US10503641B2 (en) * 2016-05-31 2019-12-10 Advanced Micro Devices, Inc. Cache coherence for processing in memory
US10083722B2 (en) * 2016-06-08 2018-09-25 Samsung Electronics Co., Ltd. Memory device for performing internal process and operating method thereof
WO2018067537A1 (en) * 2016-10-07 2018-04-12 Pq Bypass Inc. Systems and methods for delivering stent grafts
US10346092B2 (en) * 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US11669446B2 (en) * 2018-06-18 2023-06-06 The Trustees Of Princeton University Configurable in memory computing engine, platform, bit cells and layouts therefore
US10915470B2 (en) * 2018-07-23 2021-02-09 SK Hynix Inc. Memory system
US11157213B2 (en) * 2018-10-12 2021-10-26 Micron Technology, Inc. Parallel memory access and computation in memory devices
DE102020105628A1 (de) * 2019-03-11 2020-09-17 Samsung Electronics Co., Ltd. Verfahren zur Durchführung interner Verarbeitungsvorgänge mit vordefinierter Protokollschnittstelle einer Speichervorrichtung
US10534747B2 (en) * 2019-03-29 2020-01-14 Intel Corporation Technologies for providing a scalable architecture for performing compute operations in memory
CN111984558A (zh) * 2019-05-22 2020-11-24 澜起科技股份有限公司 数据转换控制装置、存储设备以及存储器系统
US11094376B2 (en) * 2019-06-06 2021-08-17 Stmicroelectronics International N.V. In-memory compute array with integrated bias elements
US11237903B2 (en) * 2019-06-25 2022-02-01 Intel Corporation Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations
US11216404B2 (en) * 2019-08-05 2022-01-04 Intel Corporation Mechanism for device interoperability of switches in computer buses
US20200328879A1 (en) * 2019-08-13 2020-10-15 Intel Corporation Secure communications over computer buses
US11789878B2 (en) * 2019-12-19 2023-10-17 Intel Corporation Adaptive fabric allocation for local and remote emerging memories based prediction schemes
US11714875B2 (en) * 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
WO2021158994A1 (en) * 2020-02-07 2021-08-12 Sunrise Memory Corporation Quasi-volatile system-level memory
US11586630B2 (en) * 2020-02-27 2023-02-21 Sap Se Near-memory acceleration for database operations
US11126548B1 (en) * 2020-03-19 2021-09-21 Micron Technology, Inc. Accelerated in-memory cache with memory array sections having different configurations
US11934798B2 (en) * 2020-03-31 2024-03-19 Micron Technology, Inc. Counter-based multiplication using processing in memory
US20210335393A1 (en) * 2021-07-09 2021-10-28 Intel Corporation Stacked memory chip solution with reduced package inputs/outputs (i/os)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114049905A (zh) * 2021-12-16 2022-02-15 西安紫光国芯半导体有限公司 非易失三维存储单元、存储方法、芯片组件和电子设备
CN114049905B (zh) * 2021-12-16 2024-04-09 西安紫光国芯半导体有限公司 非易失三维存储单元、存储方法、芯片组件和电子设备

Also Published As

Publication number Publication date
EP3896574B1 (en) 2023-12-13
US11467834B2 (en) 2022-10-11
US20210311739A1 (en) 2021-10-07
TW202207046A (zh) 2022-02-16
EP3896574A1 (en) 2021-10-20
KR20210122667A (ko) 2021-10-12
US20230069786A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
EP3896574B1 (en) System and method for computing
US11733870B2 (en) Near-memory compute module
CN111506534B (zh) 具有非阻塞高性能事务信用系统的多核总线架构
US20210201439A1 (en) Low power and low latency gpu coprocessor for persistent computing
JP4128956B2 (ja) デュアル・インライン・メモリモジュール・フォーマットにおいて一連のマルチアダプティブプロセッサを採用したクラスタ型コンピュータ用スイッチ/ネットワークアダプタポート
US8612684B2 (en) Memory controller connection to RAM using buffer interface
TWI243989B (en) System having a configurable cache/SRAM memory
CN114902198B (zh) 用于异构存储器系统的信令
EP4235441A1 (en) System, method and apparatus for peer-to-peer communication
US20240086292A1 (en) System and method for in-memory computation
US20180336034A1 (en) Near memory computing architecture
US7774513B2 (en) DMA circuit and computer system
CN114945984A (zh) 扩展存储器通信
EP4152167A1 (en) Scalable address decoding scheme for cxl type-2 devices with programmable interleave granularity
US10346328B2 (en) Method and apparatus for indicating interrupts
WO2001025941A1 (en) Multiprocessor computer systems with command fifo buffer at each target device
US11625341B2 (en) Narrow DRAM channel systems and methods
US11995351B2 (en) DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine
US20230132931A1 (en) Hardware management of direct memory access commands
JPH0646413B2 (ja) デ−タ処理プロセッサ
JPH06301641A (ja) 電子計算機
KR100252508B1 (ko) 통신처리시스템의 프로세서 보드에서 롬 인터페이스장치
Tanabe et al. Acceleration for MPI derived datatypes using an enhancer of memory and network
CN114970844A (zh) 一种通用神经网络张量处理器
JPH11283362A (ja) FiFoメモリ制御回路及びこの制御回路を使用したマイクロプロセッサ制御回路

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