CN117501254A - 使用近存储器计算为复杂操作提供原子性 - Google Patents

使用近存储器计算为复杂操作提供原子性 Download PDF

Info

Publication number
CN117501254A
CN117501254A CN202280043434.2A CN202280043434A CN117501254A CN 117501254 A CN117501254 A CN 117501254A CN 202280043434 A CN202280043434 A CN 202280043434A CN 117501254 A CN117501254 A CN 117501254A
Authority
CN
China
Prior art keywords
memory
operations
sequential operations
complex
computing unit
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
CN202280043434.2A
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN117501254A publication Critical patent/CN117501254A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

公开了使用近存储器计算为复杂操作提供原子性。在具体实施中,复杂原子操作被分解成存储在近存储器指令存储装置中的一组顺序操作。存储器控制器从主机执行引擎接收发出该复杂原子操作的请求,并且启动在近存储器计算单元上执行所存储的一组顺序操作。该复杂原子操作可以是用户定义的复杂原子操作。

Description

使用近存储器计算为复杂操作提供原子性
背景技术
计算系统通常包括多个处理资源(例如,一个或多个处理器),该多个处理资源可检索并执行指令并且将所执行的指令的结果存储到合适的位置。处理资源(例如,中央处理单元(CPU)或图形处理单元(GPU))可包括多个功能单元,诸如例如算术逻辑单元(ALU)电路、浮点单元(FPU)电路和/或组合逻辑块,该多个功能单元可用于通过对数据执行算术运算来执行指令。例如,功能单元电路可用于对操作数执行算术运算,诸如加法、减法、乘法和/或除法。通常,处理资源(例如,处理器和/或相关联的功能单元电路)可在存储器设备外部,并且经由处理资源和存储器设备之间的总线或互连访问数据以执行一组指令。为了减少获取或存储存储器设备中的数据的访问量,计算系统可采用临时存储最近访问或修改的数据以供处理资源或处理资源群组使用的高速缓存分级结构。然而,可通过将某些操作卸载到基于存储器的执行设备来进一步改善处理性能,其中处理资源在存储器内部和/或存储器附近实施,使得更靠近存储数据的存储器位置而不是使数据更靠近处理资源来执行数据处理。近存储器计算设备或存储器内计算设备可以通过减少外部通信(即,主机到存储器设备的通信)来节省时间,并且还可以节省功率。
附图说明
图1阐述了根据本公开的一些具体实施的用于使用近存储器计算为复杂操作提供原子性的示例性系统的框图。
图2阐述了根据本公开的一些具体实施的用于使用近存储器计算为复杂操作提供原子性的另一示例性系统的框图。
图3阐述了根据本公开的一些具体实施的用于使用近存储器计算为复杂操作提供原子性的另一示例性系统的框图。
图4阐述了示出根据本公开的一些具体实施的使用近存储器计算为复杂操作提供原子性的另一示例性方法的流程图。
图5阐述了示出根据本公开的一些具体实施的使用近存储器计算为复杂操作提供原子性的另一示例性方法的流程图。
图6阐述了示出根据本公开的一些具体实施的使用近存储器计算为复杂操作提供原子性的另一示例性方法的流程图。
图7阐述了示出根据本公开的一些具体实施的使用近存储器计算为复杂操作提供原子性的另一示例性方法的流程图。
图8阐述了示出根据本公开的一些具体实施的使用近存储器计算为复杂操作提供原子性的另一示例性方法的流程图。
具体实施方式
多个线程更新同一存储器位置是许多应用领域(图形处理、机器学习推荐系统、科学仿真等)中的共同主题,其通常需要线程间同步。从多个并行线程对存储器内数据结构进行的不定期更新需要避免由于对相同数据项的冲突并发更新而导致的不正确结果的技术。基于软件的技术可用于确保这些更新的正确性,但此类基于软件的解决方案导致高开销。另外,对硬件中的原子操作的支持通常限于同步原语(例如,锁),并且不扩展到对批量数据进行用户定义的或复杂的原子操作的原子应用。
如上所述,软件解决方案可用于为并发更新提供正确性。例如,软件可用于提供线程之间的显式同步(例如,获取锁)。然而,这导致同步操作本身(例如,获取和释放锁)的开销以及过度同步,因为许多数据元素通常经由细粒度数据结构中的单个同步变量来保护。软件还可用于通过一系列不定期更新影响的数据项的索引来对该更新进行排序。一旦被排序,对同一数据元素的多个更新被检测到(因为它们在排序列表中是相邻的)并被处理。然而,这导致对该系列更新进行排序的开销,该开销在感兴趣应用中通常是大量数据。软件还可用于执行冗余计算,使得对给定数据元素的所有更新由一个线程执行(从而避免同步的需要)。然而,这增加了计算的数量,并且并非所有算法都服从于该方法。可用于提供正确性的另一技术是无锁数据结构。这些避免了对显式同步的需要,但是大大增加了软件复杂度,除了同步开销之外还可能比它们的传统对应技术更慢,并且不适用于所有情况。
此外,在使存储器中的简单原子操作(例如,原子相加)可用的情况下,此类操作缺乏需要一系列算术运算来完成的复杂的、用户定义的原子操作的能力。例如,原子相加(或“获取和相加”)操作限于从存储器中的单个位置读取值,将单个操作数值加到读取的值,并且将结果存储到存储器中的同一位置。
根据本公开的具体实施涉及使用近存储器计算为复杂操作提供原子性。具体实施提供使得存储器控制器能够利用近存储器计算单元或存储器内计算单元来原子地执行用户定义的复杂操作以避免显式线程级同步的困难和开销的机制。具体实施还提供在没有软件同步和其他软件技术的开销的情况下将用户定义的复杂原子操作应用于批量数据的灵活性。具体实施进一步支持用户可编程性以启用任意原子操作。具体而言,具体实施解决了在细粒度无序调度器(诸如存储器控制器)的上下文中对原子性的需要。
一种具体实施涉及一种使用近存储器计算为复杂操作提供原子性的方法,该方法包括将一组顺序操作存储在近存储器指令存储装置中,其中这些顺序操作是复杂原子操作的组成操作(component operation)。该方法还包括接收发出复杂原子操作的请求。该方法还包括启动在近存储器计算单元上执行所存储的一组顺序操作。在一些具体实施中,该方法包括接收存储对应于复杂原子操作的该组顺序操作的请求,其中复杂原子操作是用户定义的复杂原子操作。在这些具体实施中的一些具体实施中,经由来自主机系统软件或主机应用的应用编程接口(API)调用来接收存储针对用户定义的复杂原子操作的该组顺序操作的请求。在一些情况下,该组顺序操作包括一个或多个算术运算。在一些具体实施中,存储器控制器在调度另一存储器访问之前等待,直到已经启动该组顺序操作中的所有操作。
在一些具体实施中,将一组顺序操作存储在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作,该存储动作包括:存储分别对应于多个复杂原子操作的多组顺序操作;以及存储将特定复杂原子操作映射到近存储器指令存储装置中的对应一组顺序操作的位置的表。
在一些具体实施中,启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器从近存储器指令存储装置读取该组顺序操作中的每个操作,其中该近存储器指令存储装置耦接到存储器控制器。此类具体实施还包括由存储器控制器向近存储器计算单元发出每个操作。
在一些具体实施中,启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器向存储器设备发出执行该组顺序操作的命令,其中该近存储器指令存储装置耦接到存储器设备。在这些具体实施中的一些具体实施中,存储器控制器通过一系列触发来协调在近存储器计算单元上执行组成操作。在一些具体实施中,近存储器指令存储装置和近存储器计算单元紧密地耦接到与存储器设备介接的存储器控制器。
另一具体实施涉及用于使用近存储器计算为复杂操作提供原子性的计算设备。计算设备被配置为将一组顺序操作存储在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作。计算设备还被配置为接收发出复杂原子操作的请求。该计算设备被进一步配置为启动在近存储器计算单元上执行所存储的一组顺序操作。在一些具体实施中,计算设备被进一步配置为接收存储对应于复杂原子操作的该组顺序操作的请求,其中复杂原子操作是用户定义的复杂原子操作。在一个示例中,经由来自主机系统软件或主机应用的API调用来接收存储针对用户定义的复杂原子操作的该组顺序操作的请求。
在一些具体实施中,将一组顺序操作存储在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作,该存储动作包括:存储分别对应于多个复杂原子操作的多组顺序操作;以及存储将特定复杂原子操作映射到近存储器指令存储装置中的对应一组顺序操作的位置的表。
在一些具体实施中,启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器从近存储器指令存储装置读取该组顺序操作中的每个操作,其中该近存储器指令存储装置耦接到存储器控制器。此类具体实施还包括由存储器控制器向近存储器计算单元发出每个操作。
在一些具体实施中,启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器向存储器设备发出执行该组顺序操作的命令,其中该近存储器指令存储装置耦接到存储器设备。在这些具体实施中的一些具体实施中,存储器控制器通过一系列触发来协调在近存储器计算单元上执行组成操作。在一些具体实施中,近存储器指令存储装置和近存储器计算单元紧密地耦接到与存储器设备介接的存储器控制器。
又一具体实施涉及用于使用近存储器计算为复杂操作提供原子性的系统。该系统包括存储器设备、耦接到存储器设备的近存储器存储器计算单元、以及存储一组顺序操作的近存储器指令存储装置,其中这些顺序操作是复杂原子操作的组成操作。该系统还包括存储器控制器,该存储器控制器被配置为接收发出复杂原子操作的请求并且启动在近存储器计算单元上执行所存储的一组顺序操作。
在一些具体实施中,在近存储器指令存储装置耦接到存储器控制器的情况下,启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器从近存储器指令存储装置读取该组顺序操作中的每个操作以及由存储器控制器向近存储器计算单元发出每个操作。
在一些具体实施中,其中近存储器指令存储装置耦接到存储器设备,启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器向存储器设备发出执行该组顺序操作的命令。在这些具体实施中的一些具体实施中,存储器控制器通过一系列触发来协调在近存储器计算单元上执行组成操作。
将从图1开始更详细地描述根据本公开的具体实施。贯穿本说明书和附图,相同的附图标记指代相同的元件。图1阐述了根据本公开的一些具体实施的用于使用近存储器计算为复杂操作提供原子性的示例性系统100的框图。图1的示例性系统100包括主机设备130(例如,片上系统(SoC)设备或系统级封装(SiP)设备),该主机设备包括至少一个主机执行引擎102。尽管未描绘,但是主机设备130可以包括多个主机执行引擎,该多个主机执行引擎包括多个不同类型的主机执行引擎。在各种示例中,主机执行引擎102是中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、专用处理器、可配置处理器、或能够支持多个并发计算序列的其他此类计算引擎。在一些具体实施中,主机计算引擎包括多个物理核心或其他形式的独立执行单元。主机设备130在主机执行引擎102上托管一个或多个应用。托管的应用例如是单线程应用或多线程应用,使得主机执行引擎102执行应用或多个并发应用的多个并发线程,并且/或者多个执行引擎102并发地执行同一应用或多个应用的线程。
系统100还包括由主机执行引擎102使用来通过主机到存储器接口180(例如,总线或互连)访问存储器设备108的至少一个存储器控制器106。在一些示例中,存储器控制器106由多个主机执行引擎102共享。虽然图1的示例描绘了单个存储器控制器106和单个存储器设备108,但是系统100可以包括多个存储器控制器,该多个存储器控制器中的每个存储器控制器对应于一个或多个存储器设备的存储器通道。存储器控制器106包括未决请求队列116,用于缓冲从主机执行引擎102或系统100中的其他请求者接收的存储器请求。例如,未决请求队列116保持从在一个托管执行引擎上执行的多个线程接收的存储器请求或从分别在多个主机执行引擎上执行的线程接收的存储器请求。虽然示出了单个未决请求队列116,但是一些具体实施包括多个未决请求队列。存储器控制器106还包括调度器118,该调度器确定服务未决请求队列116中未决的存储器请求的顺序,并且向存储器设备108发出存储器请求。尽管在图1中描绘为主机设备130的组件,但存储器控制器106也可与主机设备分离。
在一些示例中,存储器设备108是存储器控制器106向其发出存储器请求的DRAM设备。在各种示例中,存储器设备108是高带宽存储器(HBM)、双列直插式存储器模块(DIMM)或其芯片或裸片。在图1的示例中,存储器设备108包括服务于从存储器控制器106接收的存储器请求的至少一个DRAM存储体128。
在一些具体实施中,存储器控制器106在裸片(例如,输入/输出裸片)上实施并且主机执行引擎102在一个或多个不同裸片上实现。例如,主机执行引擎102可由各自对应于处理器核心(例如,CPU核心或GPU核心)或其他独立处理单元的多个裸片来实现。在一些示例中,存储器控制器106和包括主机执行引擎102的主机设备130在同一芯片上(例如,在SoC架构中)实现。在一些示例中,存储器设备108、存储器控制器106和包括一个或多个主机执行引擎102的主机设备130在同一芯片上(例如,在SoC架构中)实现。在一些示例中,存储器设备108、存储器控制器106和包括主机执行引擎102的主机设备130在同一封装中(例如,在SiP架构中)实现。
示例性系统100还包括紧密耦接到存储器控制器106并且与该存储器控制器介接(即,在主机到存储器接口180的主机侧上)的近存储器指令存储装置132。在一些示例中,近存储器指令存储装置132是位于与存储器控制器106相同的裸片或相同的芯片上的缓冲器或其他存储设备。近存储器指令存储装置132被配置为存储对应于复杂原子操作的一组顺序操作134。也就是说,该组顺序操作134是复杂原子操作的组成操作。当顺序地执行时,该组顺序操作134(即,诸如加载和存储的存储器操作以及计算操作)完成复杂原子操作。在该上下文中,复杂原子操作是在没有对由复杂原子操作访问的相同存储器位置的介入访问的情况下完成的操作。在一些示例中,近存储器指令存储装置132存储对应于多个复杂原子操作的多个不同组的顺序操作。在一些具体实施中,对应于特定复杂原子操作的特定一组顺序操作由该组顺序操作的初始操作的近存储器指令存储装置132中的存储器位置(例如,地址)识别。
当由存储器控制器106接收时,对复杂原子操作的请求被存储在未决请求队列116中,并且随后由调度器118选择以便按照由存储器控制器106实现的调度策略来服务。对复杂原子操作的请求可包括诸如主机执行引擎寄存器值或存储器地址的操作数。一旦复杂原子操作被调度用于服务,对应的一组顺序操作134从近存储器指令存储装置132读取并由存储器控制器106协调直至完成,然后再从未决请求队列选择任何其他操作用于服务(即,保持原子性)。当发出组成操作时,存储器控制器基于在复杂原子操作请求中供应的操作数在组成操作中插入操作数的值。
当近存储器指令存储装置132存储对应于多个复杂原子操作的多组顺序操作时,发送到存储器控制器106的复杂原子操作请求包括该请求所对应的复杂原子操作的指示。在一些示例中,每个复杂原子操作具有唯一操作码,该唯一操作码可用作对应于该复杂原子操作的该组顺序操作134的复杂原子操作标识符。在其他示例中,一个操作码用于指示请求是复杂原子操作请求,而复杂原子操作标识符作为自变量与请求一起传递以标识特定复杂原子操作和对应的一组顺序操作。在一个示例中,查找表将复杂原子操作标识符映射到近存储器指令存储装置132中包含该组顺序操作中的第一操作的存储器位置。
在一些示例中,复杂原子操作是用户定义的原子操作。例如,基于由应用开发者提供的原子操作的表示,由开发者(例如,通过编写自定义代码序列)或由软件工具(例如,编译器或汇编器)将用户定义的复杂原子操作分解成其组成操作。近存储器指令存储装置132由主机执行引擎102例如在系统启动、应用启动或应用运行时用该组顺序操作134来初始化。在一些示例中,存储该组顺序操作134由系统软件组件执行。在一个示例中,该系统软件在应用启动时将近存储器指令存储装置132的区域分配给该应用,并且应用代码执行将该组顺序操作134存储在近存储器指令存储装置132中。可经由存储器映射写入或经由特定应用编程接口(API)调用来实现将针对复杂原子操作的该组顺序操作134写入到近存储器指令存储装置中的特定操作。因此,主机执行引擎102与近存储器指令存储装置132介接以提供该组顺序操作134。然而,近存储器指令存储装置132与主机执行引擎102所利用的其他高速缓存和缓冲器的区别在于,近存储器指令存储装置132不是主机执行引擎102的组件。相反,近存储器指令存储装置132与存储器控制器紧密相关联(即,在主机执行引擎102与存储器控制器106之间的接口的存储器控制器侧上)。
在图1的示例性系统100中,存储器设备108包括近存储器计算单元142。在一些示例中,近存储器计算单元142包括算术逻辑单元(ALU)、寄存器、控制逻辑部件以及执行基本算术运算并执行加载和存储指令的其他组件。在一些情况下,近存储器计算单元142是作为存储器设备108的组件的存储器内处理(PIM)单元。尽管未描绘,但近存储器计算单元142可在DRAM存储体128内实现或在耦接到一个或多个存储器核心裸片的存储器逻辑裸片中实现。在其他示例中,尽管未描绘,但近存储器计算单元142为与存储器设备108分离但紧密耦接到该存储器设备的处理单元,诸如专用处理器或可配置处理器。
当存储器控制器106调度复杂原子操作以向存储器设备108发出时,存储器控制器从近存储器指令存储装置132读取该组顺序操作134并且将该操作作为命令向近存储器计算单元142发出。近存储器计算单元142从存储器控制器106接收针对该组顺序操作134中的操作的命令并且执行复杂原子操作。也就是说,近存储器计算单元142在没有该组顺序操作134中不包括的操作的任何介入访问的情况下在目标存储器位置执行该组顺序操作134中的每个操作(例如,加载、存储、相加、相乘)。
当存储器控制器106接收到存储器请求时,存储器控制器106确定该存储器请求是否是复杂原子操作请求。例如,特殊操作码或命令指示存储器请求是复杂原子操作请求。如果请求是针对复杂原子操作,则从近存储器指令存储装置132获取该组顺序操作134并将该组顺序操作向近存储器计算单元142发出以供执行。在由存储器控制器106接收的复杂原子操作请求中直接地(例如,通过在近存储器指令存储装置132中的位置)或间接地(例如,经由包括的复杂原子操作标识符的表查找)指示近存储器指令存储装置132中的组成操作的起始点。经由编码在原子操作请求中的组成操作的数量、嵌入在存储在近存储器指令存储装置132中的指令流中的标记、通过来自近存储器计算单元142的确认或通过另一合适技术来指示复杂原子操作的完成。例如,组成操作的数量可包括在识别该组顺序操作134的起始点的查找表中。
为了进一步解释,图2阐述了根据本公开的一些具体实施的用于使用近存储器计算来为复杂操作提供原子性的另选示例性系统200的框图。示例性系统200类似于图1的示例性系统100,除了近存储器指令存储装置232紧密耦接到存储器设备108(即,在主机到存储器接口180的存储器侧上)而不是存储器控制器106。在一些示例中,如图2中所示,近存储器指令存储装置232是存储器设备108的组件。在这些示例中,近存储器指令存储装置232是存储器设备的缓冲器或其他独立存储组件,或者可以是DRAM存储装置(例如,DRAM存储体128)的分配用作近存储器指令存储装置232的部分。在其他示例中,近存储器指令存储装置232在存储器设备108外部但紧密耦接到存储器设备。如上所述,在系统或应用启动时或在应用运行时,由主机执行引擎102通过存储器控制器106将该组顺序操作234存储在近存储器指令存储装置232中。
在图2的示例中,存储器控制器106不需要响应于接收到复杂原子操作请求而从近存储器指令存储装置232读取该组顺序操作234。相反,存储器控制器106可以启动在近存储器计算单元142上执行该组顺序操作234。在一些具体实施中,存储器控制器106向存储器设备108发出指示复杂原子操作的发出的单个命令,使得近存储器计算单元142从近存储器指令存储装置232读取该组顺序操作。在这种情况下,由存储器控制器106直接或间接(例如,经由复杂原子操作标识符的表查找)接收的复杂原子操作请求包括对该组顺序操作234的持续时间(例如,以时钟周期为单位)或者要针对复杂原子操作执行的组成操作的数量的指示。该信息由存储器控制器106使用以确定何时可将随后的命令发送到存储器设备108,同时确保原子性。在其他具体实施中,复杂原子操作请求包括存储器控制器106必须向存储器设备108发送以协调复杂原子操作的组成操作的一系列触发。在一个此类具体实施中,触发包括一系列加载和存储操作(或其变型),该系列加载和存储操作将由存储器设备108解释以协调存储在与存储器设备相关联的近存储器指令存储装置232中的顺序操作。此类具体实施的示例为由存储器控制器106作为复杂原子操作请求的一部分接收的位向量或阵列,该位向量或阵列经由特定值指示加载并且经由另选的特定值指示存储。这些加载和存储可以由主机执行引擎102利用与复杂原子操作相关联的一个或多个存储器地址来发出(最简单的情况是所有此类操作都利用作为复杂原子操作请求的一部分发送到存储器控制器106的单个地址来发出)。在任何其他未决请求由存储器控制器服务之前,将与复杂原子操作相关联的所有此类触发发送到存储器设备108以确保原子性。
为了进一步解释,图3阐述了根据本公开的一些具体实施的用于使用近存储器计算来为复杂操作提供原子性的另选示例性系统300的框图。示例性系统300类似于图1的示例性系统100,除了近存储器计算单元342紧密耦接到存储器控制器106(即,在主机到存储器接口180的主机侧上)而不是存储器设备108。在图3的示例性系统300的一些具体实施中,存储器控制器106响应于接收到对复杂原子操作的请求而从近存储器指令存储装置132读取该组顺序操作134中的操作,并且向近存储器计算单元342发出每个组成操作,如以上参考图1的示例性系统100所描述的。在其他具体实施中,存储器控制器106向近存储器计算单元342发出单个命令,该命令提示近存储器计算单元342从近存储器指令存储装置132读取该组顺序操作134中的操作。例如,该命令可包括复杂原子操作标识符或近存储器指令存储装置132中的位置。在该示例性系统中,该组顺序操作134的执行启动通过主机到存储器接口180从存储器设备108的读取和写入以用于访问复杂原子操作所必需的存储器数据。在一些示例中,命令还指示操作的数量,或者在该组顺序操作134中包括标记以指示序列的结束。在一些具体实施中,近存储器计算单元342向存储器控制器106发信号通知该组顺序操作134已经完成,使得存储器控制器106可以继续服务未决请求队列116中的下一个请求,同时保持原子性。在这些示例中,由于近存储器计算单元342位于主机到存储器接口的主机侧上,因此此类信令不在存储器接口上产生附加流量。
为了进一步解释,图4阐述了示出根据本公开的一些具体实施的使用近存储器计算来为复杂操作提供原子性的示例性方法的流程图。该方法包括将一组顺序操作存储402在近存储器指令存储装置中,其中该顺序操作是复杂原子操作的组成操作。在一些示例中,复杂原子操作是以一个或多个存储器位置为目标的一组顺序操作,该组顺序操作必须在没有对那些一个或多个存储器位置的介入访问的情况下完成。在一些示例中,将一组顺序操作存储402在近存储器指令存储装置中是通过将对应于复杂原子操作的此类组成操作存储在近存储器指令存储装置(例如,图1和图3的近存储器指令存储装置132或图3的近存储器指令存储装置232)中来执行的。在一些具体实施中,将一组顺序操作存储402在近存储器指令存储装置中是由主机执行引擎(例如,图1至图3的主机执行引擎102)将该组顺序操作的操作写入近存储器指令存储装置来执行的。在其他具体实施中,将一组顺序操作存储402在近存储器指令存储装置中是通过存储器控制器(例如,图1至图3的存储器控制器106)将该组顺序操作的操作写入到近存储器指令存储装置来执行的。
复杂原子操作包括在没有对存储在由该复杂原子操作访问的存储器位置处的数据的介入修改的情况下执行的一系列组成操作。例如,对特定存储器位置处的数据执行复杂原子操作的第一线程被保证在复杂原子操作完成之前没有其他线程将访问该存储器位置。为了提供并非硬件特定的(即,特定于近存储器计算具体实施、存储器供应商等)复杂原子操作,并且为了提供用户定义的复杂原子操作,复杂原子操作的组成操作被存储在近存储器指令存储装置中。这允许处理器为复杂原子操作分派单个指令,该复杂原子操作可包括比简单原子操作(例如,“获取和相加”)更多的组成操作。考虑用户定义的复杂操作的非限制性示例,该用户定义的复杂操作是采用两个存储器位置和标量值作为自变量的“获取-获取-相加-和相乘”原子操作。在该示例性复杂原子操作中,从第一存储器位置加载第一值并且从第二存储器位置加载第二值,将第二值加到第一值,将该结果乘以标量值,并且将最终结果写入到第一存储器位置。以伪代码编写,示例性复杂原子操作FetchFetchAddMult(mem_location1,mem_location2,value1)可以包括以下组成操作序列:
load reg1,[mem_location1]//load the value at mem_location1 into reg1
load reg2,[mem_location2]//load the value at mem_location2 into reg2
add reg1,reg1,reg2//add the values in reg1 and reg2 and store theresult in reg1
mult reg1,reg1,value1//multiply the value in reg1 by value1 and storethe result in reg1
store mem_location1,reg1//store the value in reg1 at mem_location1
在没有其他线程对mem_location1和mem_location2的介入访问的情况下执行复杂原子操作并存储结果。存储器控制器将不分派其他排队的存储器请求,直到复杂原子操作的所有组成操作已被分派。
图4的示例性方法还包括接收404发出复杂原子操作的请求。在一些示例中,接收404发出复杂原子操作的请求是由接收包括对复杂原子操作的请求的存储器请求的存储器控制器(例如,图1至图3的存储器控制器106)执行的。例如,从主机执行引擎(例如,图1至图3的主机执行引擎102)接收存储器请求。在一些具体实施方案中,对复杂原子操作的请求由请求中的特殊指令或操作码或由标志或自变量指示。在一些具体实施中,接收404发出复杂原子操作的请求包括基于请求中的特殊指令、操作码、标志、自变量或元数据来确定该请求是复杂原子操作请求。在一些示例中,用于请求的元数据指示在该组顺序操作中包括多少个组成操作或者完成复杂原子操作所需的持续时间。在一些具体实施中,接收404发出复杂原子操作的请求还包括将该请求与包括不是复杂原子操作请求的存储器请求的其他存储器请求一起插入未决请求队列(例如,图1至图3的未决请求队列116)中。
图4的示例性方法还包括启动406在近存储器计算单元上执行所存储的一组顺序操作。在一些示例中,通过存储器控制器(例如,图1至图3的存储器控制器106)的调度器(例如,图1至图3的调度器118)调度用于向近存储器计算单元(例如,图1和图2的近存储器计算单元142或图3的近存储器计算单元342)发出的复杂原子操作请求来执行启动406在近存储器计算单元上执行所存储的一组顺序操作。在一些具体实施中,启动406在近存储器计算单元上执行所存储的一组顺序操作包括从近存储器指令存储装置读取对应于复杂原子操作的该组顺序操作并且向近存储器计算单元发出每个操作以供执行,如将在下文更详细地解释的。在其他具体实施中,启动406在近存储器计算单元上执行所存储的一组顺序操作包括向近存储器计算单元发送命令以从近存储器指令存储装置读取该组顺序操作并且执行这些指令,如将在下文更详细地解释的。
为了进一步解释,图5阐述了示出根据本公开的一些具体实施的使用近存储器计算来为复杂操作提供原子性的另一个示例性方法的流程图。类似于图4的示例,图5的示例性方法包括:将一组顺序操作存储402在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作;接收404发出复杂原子操作的请求;以及启动406在近存储器计算单元上执行所存储的一组顺序操作。
图5的示例性方法还包括接收502存储对应于复杂原子操作的该组顺序操作的请求,其中该复杂原子操作是用户定义的复杂原子操作。在一些示例中,接收502存储对应于复杂原子操作的该组顺序操作的请求(其中复杂原子操作是用户定义的复杂原子操作)由执行表示存储已经从用户定义的复杂原子操作分解的一组顺序操作的请求的指令的主机执行引擎(例如,图1至图3的主机执行引擎102)来执行。在各种示例中,将用户定义的复杂原子操作分解成组成操作由开发者(例如,通过编写自定义代码序列)、由软件工具(例如,编译器或汇编器)基于由应用开发者提供的复杂原子操作的表示、或通过源代码的某种其他注释来执行。在系统启动时间、应用启动时间或在应用运行时期间接收存储该组顺序操作的请求。在一些示例中,存储该组顺序操作的请求由系统软件组件发出。在一些示例中,系统软件在应用启动时将近存储器指令存储装置的区域分配给该应用,并且由用户应用代码发出将该组顺序操作存储到近存储器指令存储装置的该区域的请求。在各种具体实施中,在近存储器指令存储装置中写入组成操作的特定请求经由存储器映射写入或经由特定API调用来实现。
为了进一步解释,图6阐述了示出根据本公开的一些具体实施的使用近存储器计算来为复杂操作提供原子性的另一个示例性方法的流程图。类似于图4的示例,图6的示例性方法包括:将一组顺序操作存储402在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作;接收404发出复杂原子操作的请求;以及启动406在近存储器计算单元上执行所存储的一组顺序操作。
在图6的示例性方法中,将一组顺序操作存储402在近存储器指令存储装置中包括存储602分别对应于多个复杂原子操作的多组顺序操作,其中顺序操作是复杂原子操作的组成操作。在一些示例中,存储602分别对应于多个复杂原子操作的多组顺序操作是通过以下动作来执行的:将针对特定复杂原子操作的特定一组顺序操作连续地存储在近存储器指令存储装置的一个存储器区域中;将针对不同复杂原子操作的特定的另一组顺序操作连续地存储在近存储器指令存储装置的另一存储器区域中等。例如,复杂原子操作的一组顺序操作可由该组顺序操作中的第一操作的存储器位置(例如,地址、行、偏移等)识别。考虑一个示例,其中复杂原子操作1占用近存储器指令存储装置的行0-15,复杂原子操作2占用近存储器指令存储装置的行16-31,等等。在此类示例中,复杂原子操作1可由行0标识,并且复杂原子操作2可由行16标识。在一些示例中,标记用于指示序列的结束。使用上述示例,行15和31可以是指示该组顺序操作中的序列的结束的空行。
在图6的示例性方法中,将一组顺序操作存储402在近存储器指令存储装置中还包括存储604将特定复杂原子操作映射到近存储器指令存储装置中的对应一组顺序操作的位置的表,其中顺序操作是复杂原子操作的组成操作。在一些示例中,存储604将特定复杂原子操作映射到近存储器指令存储装置中的对应一组顺序操作的位置的表通过实施将复杂原子操作标识符映射到近存储器指令存储装置中的识别对应一组顺序操作的特定位置的查找表来执行。使用上述示例,查找表可将复杂原子操作2映射到近存储器指令存储装置的行16。在一些具体实施中,查找表指示在序列中包括多少个组成操作,或者指示一旦该组顺序操作开始向近存储器计算单元发出则完成该组顺序操作所需的持续时间。
为了进一步解释,图7阐述了示出根据本公开的一些具体实施的使用近存储器计算来为复杂操作提供原子性的另一个示例性方法的流程图。类似于图4的示例,图7的示例性方法包括:将一组顺序操作存储402在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作;接收404发出复杂原子操作的请求;以及启动406在近存储器计算单元上执行所存储的一组顺序操作。
在图7的示例中,启动406在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器从近存储器指令存储装置读取702该组顺序操作中的每个操作,其中该近存储器指令存储装置耦接到存储器控制器。在图7的示例中,近存储器指令存储装置(例如,图1和图3的近存储器指令存储装置132)耦接到存储器控制器(例如,图1和图3的存储器控制器106),因为近存储器指令存储装置在主机到存储器接口(例如,图1至图3的主机到存储器接口180)的存储器控制器侧上实现。在一些示例中,由存储器控制器从近存储器指令存储器装置读取702该组顺序操作中的每个操作通过识别存储在近存储器指令存储装置中的该组顺序操作中的初始操作来执行,其中近存储器指令存储装置耦接到存储器控制器。在其中近存储器指令存储装置包括对应于多个复杂原子操作的多组顺序操作的具体实施中,由存储器控制器从近存储器指令存储装置读取702该组顺序操作中的每个操作包括识别复杂原子操作标识符以及从将复杂原子操作标识符映射到近存储器指令存储装置中的存储器位置的表确定该组顺序操作中的初始操作的位置。
一旦该组顺序操作中的初始操作已被识别并向该近存储器计算单元或包括该近存储器计算单元的存储器设备发出,该组顺序操作中的下一操作就通过将该位置递增某个值(例如,行号、偏移、地址范围)来识别。存储器控制器可利用计数器来迭代地确定序列中的每个操作的位置。在一些示例中,由存储器控制器从近存储器指令存储装置读取702该组顺序操作中的每个操作还包括从将复杂原子操作标识符映射到对应于复杂原子操作的该组顺序操作中包括的操作的数量的表来确定该组顺序操作中的操作的数量。在一些具体实施中,该组顺序操作中的标记指示序列的结束。
在图7的示例中,启动406在近存储器计算单元上执行所存储的一组顺序操作还包括由存储器控制器向近存储器计算单元发出704每个操作。在一些示例中,由存储器控制器向近存储器计算单元发出704每个操作包括将一个或多个操作数插入到从近存储器指令存储装置读取的该组顺序操作中的一个或多个操作中。例如,复杂原子操作请求可包括操作数值,诸如由主机执行引擎计算的存储器地址或寄存器值。在该示例中,插入那些值作为从近存储器指令存储装置读取的组成操作的操作数。在一些具体实施中,复杂原子操作请求包括可以被映射到该组顺序操作中的操作数的向量或阵列。在一些示例中,由存储器控制器向近存储器计算单元发出704每个操作是由存储器控制器(例如,图1和图3的存储器控制器106)向近存储器计算单元(例如,图1的近存储器计算单元142或图3的近存储器计算单元342)发出针对操作序列中的每个组成操作的命令来执行的。
虽然上文已将由存储器控制器从近存储器指令存储装置读取702该组顺序操作中的每个操作并且由存储器控制器向近存储器计算单元发出704每个操作描述为迭代过程(其中从近存储器指令存储装置中读取每个操作,并且在读取下一操作之前调度该操作以向近存储器计算单元发出),但进一步设想可从近存储器指令存储装置分批读取顺序操作。例如,存储器控制器将组的多个操作或甚至所有操作读取到存储器控制器中的缓冲器或队列中,并且在将该批次读取到存储器控制器中之后,开始发出针对该批次中的每个操作的命令。此外,应当理解,存储器控制器不调度来自未决请求队列的任何其他存储器请求用于发出,直到针对复杂原子操作的该组顺序操作中的所有操作已向近存储器计算单元发出,因此保持复杂原子操作的原子性。
为了进一步解释,图8阐述了示出根据本公开的一些具体实施的使用近存储器计算来为复杂操作提供原子性的另一个示例性方法的流程图。类似于图4的示例,图8的示例性方法包括:将一组顺序操作存储402在近存储器指令存储装置中,其中顺序操作是复杂原子操作的组成操作;接收404发出复杂原子操作的请求;以及启动406在近存储器计算单元上执行所存储的一组顺序操作。
在图8的示例中,启动406在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器向存储器设备发出802命令以在近存储器计算单元上执行该组顺序操作,其中近存储器指令存储装置与存储器设备相关联。在图8的示例中,近存储器指令存储装置(例如,图2的近存储器指令存储装置232)与存储器设备(例如,图1和图3的存储器设备108)相关联,因为近存储器指令存储装置在主机到存储器接口(例如,图1至图3的主机到存储器接口180)的存储器设备侧上实现。在一些示例中,近存储器计算指令存储装置在存储器设备内实现或耦接到该存储器设备,例如实现为DRAM的分配部分、存储器核心裸片中的缓冲器、耦接到一个或多个存储器核心裸片的存储器逻辑裸片中的缓冲器(例如,在存储器设备是HBM堆叠的情况下)等等。在一些具体实施中,近存储器计算单元是存储器设备的PIM单元。在其他示例中,近存储器存储装置被实现为例如在存储器加速器中耦接到近存储器计算单元的缓冲器。在这些示例中,此类存储器加速器在与存储器裸片(即,存储器设备)相同的芯片上或相同的封装中实现并且经由直接高速接口耦接到存储器裸片。
在图8的示例中,由存储器控制器向存储器设备发出802命令以在近存储器计算单元上执行该组顺序操作可由存储器控制器(例如,图2的存储器控制器106)向近存储器计算单元(例如,图2的近存储器计算单元142)或向耦接到近存储器计算单元的存储器设备发出存储器命令来执行。在一些具体实施中,该命令提供复杂原子操作标识符,该复杂原子操作标识符被近存储器计算单元用来标识近存储器指令存储装置中的对应一组顺序操作。该表还可以指示要针对复杂原子操作执行的组成操作的持续时间或数量。在一些具体实施中,由存储器控制器接收的复杂原子操作请求直接指示要针对复杂原子操作执行的组成操作的持续时间或数量。存储器控制器使用组成操作的执行持续时间来决定何时调度随后的存储器操作。通过在发出另一个存储器访问命令之前等待该持续时间,为复杂原子操作保持原子性。在一些示例中,向近存储器计算单元发出的命令包括由复杂原子操作作为目标的操作数值或存储器地址。在一个示例中,该命令包括操作数和/或存储器地址的向量或阵列。
在一些示例中,存储器控制器通过一系列触发来协调在近存储器计算单元上执行组成操作。例如,存储器控制器发出对应于组成操作的数量的多个命令,其中每个命令是用于近存储器计算单元执行近存储器指令存储装置中的下一个组成操作的触发。在一个示例中,近存储器计算单元接收包括复杂原子操作标识符的命令。然后,近存储器计算单元识别近存储器指令存储装置的区域中的对应于复杂原子操作的该组顺序操作中的第一操作的位置。响应于接收到触发,近存储器计算单元递增近存储器指令存储装置的区域中的位置,读取下一组成操作,并且执行该组成操作。
鉴于前述内容,本领域技术人员将认识到本公开的若干优点。通过在存储器附近提供用户定义的和/或复杂的原子计算,可以在没有显式同步的开销或替换软件技术的开销的情况下执行对存储器的多个并发更新。用户可定义的复杂原子操作被编码在从计算引擎发送到存储器控制器的单个请求中。存储器控制器可以接收对复杂原子操作的单个请求,并且向一个或多个存储器内计算单元或近存储器计算单元生成一系列用户定义的命令以协调复杂操作,并且可以原子地这样做(即,没有来自系统内的任何其他请求者的其他介入操作)。
具体实施可以是系统、装置、方法和/或逻辑电路。本公开中的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任何组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的常规过程编程语言。在一些具体实施中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令。
本公开的各方面在此参考根据本公开的一些具体实施的方法、装置(系统)和逻辑电路的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可通过逻辑电路来实现。
逻辑电路可在处理器、其他可编程数据处理装置或其他设备中实现,导致在处理器、其他可编程装置或其他设备上执行一系列操作步骤以得到计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本公开的各种具体实施的系统、方法和逻辑电路的可能具体实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可以不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
虽然已经参考本公开的具体实施具体地示出和描述了本公开,但是应当理解,在不脱离以下权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。因此,本文所述的具体实施应当被认为仅是描述性意义的,而不是出于限制性目的。本公开不是由详细描述而是由所附权利要求限定的,并且在该范围内的所有差异将被解释为包括在本公开中。

Claims (20)

1.一种使用近存储器计算为复杂操作提供原子性的方法,所述方法包括:
将一组顺序操作存储在近存储器指令存储装置中,其中所述顺序操作是复杂原子操作的组成操作;
接收发出所述复杂原子操作的请求;以及
启动在近存储器计算单元上执行所存储的一组顺序操作。
2.根据权利要求1所述的方法,还包括接收存储对应于所述复杂原子操作的所述一组顺序操作的请求,其中所述复杂原子操作是用户定义的复杂原子操作。
3.根据权利要求2所述的方法,其中经由来自主机系统软件或主机应用的应用编程接口(API)调用来接收存储针对所述用户定义的复杂原子操作的所述一组顺序操作的所述请求。
4.根据权利要求1所述的方法,其中将一组顺序操作存储在近存储器指令存储装置中,其中所述顺序操作是复杂原子操作的组成操作,所述存储动作包括:
存储分别对应于多个复杂原子操作的多组顺序操作;以及
存储将特定复杂原子操作映射到所述近存储器指令存储装置中的对应一组顺序操作的位置的表。
5.根据权利要求1所述的方法,其中启动在近存储器计算单元上执行所述一组顺序操作包括:
由存储器控制器从所述近存储器指令存储装置读取所述一组顺序操作中的每个操作,其中所述近存储器指令存储装置耦接到所述存储器控制器;以及
由所述存储器控制器向所述近存储器计算单元发出每个操作。
6.根据权利要求1所述的方法,其中启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器向存储器设备发出执行所述一组顺序操作的命令,其中所述近存储器指令存储装置耦接到所述存储器设备。
7.根据权利要求6所述的方法,其中所述存储器控制器通过一系列触发来协调在所述近存储器计算单元上执行所述组成操作。
8.根据权利要求1所述的方法,其中所述近存储器指令存储装置和所述近存储器计算单元紧密地耦接到与存储器设备介接的存储器控制器。
9.根据权利要求1所述的方法,其中所述一组顺序操作包括一个或多个算术运算。
10.根据权利要求1所述的方法,其中存储器控制器在调度另一存储器访问之前等待,直到已经启动所述一组顺序操作中的所有操作。
11.一种用于使用近存储器计算为复杂操作提供原子性的计算设备,所述计算设备包括逻辑部件,所述逻辑部件被配置为:
将一组顺序操作存储在近存储器指令存储装置中,其中所述顺序操作是复杂原子操作的组成操作;
接收发出所述复杂原子操作的请求;以及
启动在近存储器计算单元上执行所存储的一组顺序操作。
12.根据权利要求11所述的计算设备,其中所述计算设备还包括逻辑部件,所述逻辑部件被配置为接收存储对应于所述复杂原子操作的所述一组顺序操作的请求,其中所述复杂原子操作是用户定义的复杂原子操作。
13.根据权利要求12所述的计算设备,其中经由来自主机系统软件或主机应用的应用编程接口(API)调用来接收存储针对所述用户定义的复杂原子操作的所述一组顺序操作的所述请求。
14.根据权利要求11所述的计算设备,其中将一组顺序操作存储在近存储器指令存储装置中,其中所述顺序操作是复杂原子操作的组成操作,所述存储动作包括:
存储分别对应于多个复杂原子操作的多组顺序操作;以及
存储将特定复杂原子操作映射到所述近存储器指令存储装置中的对应一组顺序操作的位置的表。
15.根据权利要求11所述的计算设备,其中启动在近存储器计算单元上执行所存储的一组顺序操作包括:
由存储器控制器从所述近存储器指令存储装置读取所述一组顺序操作中的每个操作,其中所述近存储器指令存储装置耦接到所述存储器控制器;以及
由所述存储器控制器向所述近存储器计算单元发出每个操作。
16.根据权利要求11所述的计算设备,其中启动在近存储器计算单元上执行所存储的一组顺序操作包括由存储器控制器向存储器设备发出执行所述一组顺序操作的命令,其中所述近存储器指令存储装置耦接到所述存储器设备。
17.根据权利要求11所述的计算设备,其中所述近存储器指令存储装置和所述近存储器计算单元紧密地耦接到与存储器设备介接的存储器控制器。
18.一种用于使用近存储器计算为复杂操作提供原子性的系统,所述系统包括:
存储器设备;
近存储器计算单元,所述近存储器计算单元耦接到所述存储器设备;
近存储器指令存储装置,所述近存储器指令存储装置存储一组顺序操作,其中所述顺序操作是复杂原子操作的组成操作;和
存储器控制器,所述存储器控制器被配置为:
接收发出所述复杂原子操作的请求;以及
启动在所述近存储器计算单元上执行所存储的一组顺序操作。
19.根据权利要求18所述的系统,其中启动在所述近存储器计算单元上执行所存储的一组顺序操作包括:
由存储器控制器从所述近存储器指令存储装置读取所述一组顺序操作中的每个操作,其中所述近存储器指令存储装置耦接到存储器控制器;以及
由所述存储器控制器向所述近存储器计算单元发出每个操作。
20.根据权利要求18所述的系统,其中启动在近存储器计算单元上执行所存储的一组顺序操作包括:
由存储器控制器向所述存储器设备发出执行所存储的一组顺序操作的命令,其中所述近存储器指令存储装置耦接到所述存储器设备,并且其中所述存储器控制器通过一系列触发来协调在所述近存储器计算单元上执行所述组成操作。
CN202280043434.2A 2021-06-28 2022-06-27 使用近存储器计算为复杂操作提供原子性 Pending CN117501254A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/360,949 2021-06-28
US17/360,949 US20220413849A1 (en) 2021-06-28 2021-06-28 Providing atomicity for complex operations using near-memory computing
PCT/US2022/035118 WO2023278323A1 (en) 2021-06-28 2022-06-27 Providing atomicity for complex operations using near-memory computing

Publications (1)

Publication Number Publication Date
CN117501254A true CN117501254A (zh) 2024-02-02

Family

ID=82656448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280043434.2A Pending CN117501254A (zh) 2021-06-28 2022-06-27 使用近存储器计算为复杂操作提供原子性

Country Status (5)

Country Link
US (1) US20220413849A1 (zh)
EP (1) EP4363991A1 (zh)
KR (1) KR20240025019A (zh)
CN (1) CN117501254A (zh)
WO (1) WO2023278323A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922068B2 (en) * 2021-12-10 2024-03-05 Samsung Electronics Co., Ltd. Near memory processing (NMP) dual in-line memory module (DIMM)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658659B2 (en) * 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
GB2399899B (en) * 2003-03-27 2005-06-22 Micron Technology Inc Active memory command engine and method
US20070150671A1 (en) * 2005-12-23 2007-06-28 Boston Circuits, Inc. Supporting macro memory instructions
US8583898B2 (en) * 2009-06-12 2013-11-12 Cray Inc. System and method for managing processor-in-memory (PIM) operations
US8572573B2 (en) * 2012-03-09 2013-10-29 Nvidia Corporation Methods and apparatus for interactive debugging on a non-preemptible graphics processing unit
US9218204B2 (en) * 2012-12-21 2015-12-22 Advanced Micro Devices, Inc. Processing engine for complex atomic operations
KR102402672B1 (ko) * 2015-09-01 2022-05-26 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
US10642617B2 (en) * 2015-12-08 2020-05-05 Via Alliance Semiconductor Co., Ltd. Processor with an expandable instruction set architecture for dynamically configuring execution resources
GB2553102B (en) * 2016-08-19 2020-05-20 Advanced Risc Mach Ltd A memory unit and method of operation of a memory unit to handle operation requests
US10599441B2 (en) * 2017-09-04 2020-03-24 Mellanox Technologies, Ltd. Code sequencer that, in response to a primary processing unit encountering a trigger instruction, receives a thread identifier, executes predefined instruction sequences, and offloads computations to at least one accelerator
US10713046B2 (en) * 2017-12-20 2020-07-14 Exten Technologies, Inc. System memory controller with atomic operations
US11119766B2 (en) * 2018-12-06 2021-09-14 International Business Machines Corporation Hardware accelerator with locally stored macros
US11620358B2 (en) * 2019-05-14 2023-04-04 Intel Corporation Technologies for performing macro operations in memory

Also Published As

Publication number Publication date
WO2023278323A1 (en) 2023-01-05
KR20240025019A (ko) 2024-02-26
EP4363991A1 (en) 2024-05-08
US20220413849A1 (en) 2022-12-29

Similar Documents

Publication Publication Date Title
US11494194B2 (en) Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9830158B2 (en) Speculative execution and rollback
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
US8291431B2 (en) Dependent instruction thread scheduling
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
JP2012514254A (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
US9886278B2 (en) Computing architecture and method for processing data
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
CN114610394B (zh) 指令调度的方法、处理电路和电子设备
US11934698B2 (en) Process isolation for a processor-in-memory (“PIM”) device
US20230195645A1 (en) Virtual partitioning a processor-in-memory ("pim")
CN117501254A (zh) 使用近存储器计算为复杂操作提供原子性
KR20160113677A (ko) 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법
TW202109286A (zh) 純函數語言神經網路加速器系統及結構
US9268601B2 (en) API for launching work on a processor
CN114514505A (zh) 退役队列压缩
CN114035847B (zh) 用于并行执行核心程序的方法和装置
CN114930292A (zh) 协作式工作窃取调度器
US6711655B1 (en) Finding available memory space by finding its associated memory transfer controller
US11847462B2 (en) Software-based instruction scoreboard for arithmetic logic units
US20230393849A1 (en) Method and apparatus to expedite system services using processing-in-memory (pim)
CN112732416A (zh) 有效消除数据访问延迟的并行数据处理方法及并行处理器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication