CN117099086A - 用于通过存储器接口的合并多播数据传输的系统和方法 - Google Patents

用于通过存储器接口的合并多播数据传输的系统和方法 Download PDF

Info

Publication number
CN117099086A
CN117099086A CN202280025718.9A CN202280025718A CN117099086A CN 117099086 A CN117099086 A CN 117099086A CN 202280025718 A CN202280025718 A CN 202280025718A CN 117099086 A CN117099086 A CN 117099086A
Authority
CN
China
Prior art keywords
memory
multicast
module
data
processor
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
CN202280025718.9A
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 CN117099086A publication Critical patent/CN117099086A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Abstract

本发明公开了用于控制存储器模块和处理器之间的经由存储器通道的数字数据传输的方法和装置。该存储器模块或该处理器中的至少一者将多个短数据字合并成包括用于经由该存储器通道传输的单个数据块的多播合并块数据。该多个短数据字中的每一个短数据字属于该存储器模块中的至少两个分区存储器子模块中的一个分区存储器子模块。该多播合并块数据通过该存储器通道传送。

Description

用于通过存储器接口的合并多播数据传输的系统和方法
背景技术
高速缓存存储器通常被组织成高速缓存行,在其中存储从主存储器读取的信息或待写入主存储器的信息。在利用高速缓存存储器中的信息时,无论是从高速缓存存储器读取(或加载)数据还是将数据写入(或存储)到主存储器,存储器接口都被设计成一次读取或写入信息的整个高速缓存行,即使仅需要信息的整个高速缓存行的一部分或仅需要在主存储器中更新信息的整个高速缓存行的一部分。因此,当执行窄数据字访问时,通常存在相比于将所请求的信息读取到高速缓存或将信息写入主存储器所需要的更多的存储器事务。过量的存储器事务不仅因为增加开销而消耗功率,而且还降低性能并且导致存储器的降级。
一些常规的存储器模块通常使用64字节的高速缓存行大小,使得至存储器和/或从存储器的每一次数据传输以存储器总线上的高速缓存行大小的突发的形式发生。图1中示出了简化的示例,该示例是实施从单个存储器组的广泛访问的现有系统的逻辑表示。通常,存储器模块100具有主机接口102,该主机接口经由特定宽度(在这种情况下为256位或32字节)的存储器总线或存储器通道108与主机处理器104(也称为协调在存储器模块100的加载和存储操作中执行的计算的主处理器)的存储器接口106耦合。因此,在一些示例中,存储器模块100可以仅支持用于任何加载或存储操作的单个粗粒度访问(即,32字节)。存储器模块100包括多个存储器组或子模块112、114、116和118(在该示例中具有16个子模块),每个存储器组或子模块经由另一存储器通道110(在该示例中具有256位的通道宽度)与主机接口102可操作地耦合。每个存储器子模块可包括:存储器地址寄存器(MAR),用于存储由加载或存储操作访问的存储器位置的地址;以及存储器数据寄存器(MDR),用于存储正在被执行操作的数据。为了简单起见,此类寄存器未在图中示出。
当需要从某些存储器子模块加载存储器数据或将数据存储到存储器子模块中时,主机处理器104发出加载或存储请求。当在主机处理器104和存储器模块100之间存在数据传输时,诸如主机处理器104请求将来自指定子模块(在该示例中为子模块114)的某些数据位发送到主机处理器104时,执行广泛的访问并且将包括所请求数据位的连续数据的整个高速缓存行从单个指定子模块传输到主机接口102。对于稀疏地(例如,以16位粒度)访问数据的工作负载,这可导致大量的带宽浪费,因为每当跨存储器接口传输数据时,仅访问其中的一小部分。
一些常规的计算系统使用软件来静态地标识高速缓存重用可能性较低的此类短访问,以试图解决子高速缓存行存储器访问的低效率问题。这些方法中的一些方法涉及子分级,即,将双列直插式存储器模块(DIMM)或RAM棒的多个存储器芯片分组为子集,以允许每个子集提供小于原始传输的大小的数据块。然而,子分级需要针对每个子分级的单独的命令,因此由于对共享命令总线的较高需求而导致性能降低,或者由于每个子分级需要专用命令路径而导致硬件成本增加。当每个数据访问由单个存储器模块提供时,子分级也是不切实际的。一些方法涉及降低DRAM组的高度和/或宽度,但此类方法涉及改变核心DRAM阵列设计,开销很高。
其他方法涉及矩阵-向量乘法、稀疏矩阵代数、图形分析和稀疏机器学习,这些方法都属于软件可以经常预测高速缓存重用或者不需要此操作的领域。然而,现代存储器系统仍无法利用此类信息来优化存储器带宽利用,因此在存储器效率和针对稀疏工作负载的有效带宽方面仍然存在改进空间。
因此,在存储器模块和主机处理器之间具有改进的数据传输以便允许从存储器子模块传输较小的数据宽度而不执行过量的存储器事务将是非常有利的。
附图说明
当结合以下附图时,鉴于以下描述,将更容易理解具体实施,其中相同的附图标记表示相同的元件,并且附图中:
图1是示出系统的存储器模块和主机处理器的一个示例的现有技术框图,其中在主机处理器发出加载或存储请求时在存储器模块和主机处理器之间传输连续数据的整个高速缓存行;
图2是示出根据本公开中阐述的实施方案的被配置为执行多播存储器合并操作的系统的存储器模块和主机处理器的一个示例的框图;
图3是示出作为由图2中所示的系统执行的多播存储器合并操作的结果而形成的多播合并块数据的一个示例的框图;
图4是示出根据图2的系统的一个示例的图,该系统具有与主机处理器耦合的多个存储器模块;
图5是示出根据本公开中阐述的一个示例的用于执行多播存储器合并操作的方法的一个示例的流程图;
图6是示出根据本公开中阐述的一个示出的用于在促进多播存储器合并操作和促进连续块数据传输之间切换的方法的一个示例的流程图;
图7是示出根据本公开中阐述的一个示例的从存储器子模块加载数据的方法的一个示例的流程图;
图8是示出根据本公开中阐述的一个示例的在存储器子模块中存储数据的方法的一个示例的流程图;
图9是示出根据本公开中阐述的一个示例的系统的一个示例的图;
图10是示出根据本公开中阐述的一个示例的存储器模块的一个示例的图;
图11是示出根据本公开中阐述的一个示例的系统的一个示例的图;
图12是示出根据本公开中阐述的一个示例的系统的一个示例的图;
图13是示出根据本公开中阐述的一个示例的系统的一个示例的图;并且
图14是示出根据本公开中阐述的一个示例的系统的一个示例的图。
具体实施方式
简而言之,系统和方法通过合并或聚合来自多个不同存储器子模块的短数据字并且在单个块数据传输中同时通过存储器通道传输或传送合并数据(本文中称为多播合并块数据)来帮助减少数据传输开销并且促进细粒度数据传输。在一些具体实施中,在单个块数据传输内在唯一位置处,将短数据字从分区存储器子模块的集合中的每一个分区存储器子模块返回或加载到主机处理器。在一些具体实施中,在单个块数据传输内在唯一位置处,将短数据字从主机处理器写入或存储到分区存储器子模块的集合中的每一个分区存储器子模块中。在一些示出中,存储器子模块具有与其相关联的寄存器,其中寄存器存储来自对应的子模块的短数据字直到执行多播存储器合并操作,或者存储从接收自处理器的多播合并块数据提取的短数据字。在一些示例中,寄存器可被实施为近存储器(near-memory)或存储器内(in-memory)处理技术的一部分。
根据某些具体实施,一种用于控制经由存储器模块和处理器之间的存储器通道的数字数据传输的方法,该方法由存储器模块或处理器中的至少一者执行,将多个短数据字合并成包括用于经由存储器通道传输的单个数据块的多播合并块数据。多个短数据字中的每一个短数据字属于存储器模块中的至少两个分区存储器子模块中的一个分区存储器子模块。多播合并块数据通过存储器通道传送。
在一些示例中,该方法包括处理器检测指示短数据字合并的可能性的条件,并且响应于所检测到的条件而在促进多播合并块数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换。
在一些示例中,该方法包括:处理器向存储器模块发送合并的加载命令,以使存储器模块从存储器子模块检索短数据字并且执行多播存储器合并操作以将短数据字合并成多播合并块数据;以及响应于接收到多播合并块数据,从多播合并块数据提取短数据字中的每一个短数据字。在某些示例中,该方法包括处理器向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块从存储器子模块内的所标识的位置检索短数据字。在一些示例中,该方法包括处理器发送一个位置标识符,使得存储器模块从多个存储器子模块内的相同位置(例如,地址偏移量或近内存寄存器ID)检索短数据字,并且将所检索到的短数据字合并成单个数据块作为多播合并块数据。在一些示出中,多个位置与多个位置标识符相关联或由多个位置标识符标识。
在一些实施方案中,该方法包括处理器配置与存储器子模块中的每一个存储器子模块相关联的至少一个寄存器以存储可由处理器访问的将合并成多播合并块数据的短数据字。在一些示出中,该方法包括处理器生成待传输到存储器模块的多播合并块数据并且将合并的存储命令发送到存储器模块。合并的存储命令使存储器模块执行多播存储器提取操作以从多播合并块数据提取短数据字,将短数据字分发到存储器子模块,以及将短数据字存储在存储器子模块内。在某些示例中,该方法包括处理器向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块将短数据字存储在存储器子模块内的所标识的位置处。在另一示例中,该方法包括处理器发送一个位置标识符,使得存储器模块将合并数据块中的短数据字存储到多个存储器子模块内的相同位置(地址偏移量或近存储器寄存器ID)。
在一些示例中,该方法包括处理器生成待传输到存储器模块的多播合并块数据并且配置与存储器子模块相关联的至少一个寄存器,以使存储器模块从多播合并块数据提取短数据字并且将短数据字存储在至少一个寄存器中。在一些示例中,该方法包括处理器生成待传输到存储器模块的多播合并块数据,以及将存储器模块配置为使存储器模块基于由处理器提供的多播合并块数据或存储在存储器模块中的信息来确定标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符。
根据某些具体实施,处理器包括经由存储器通道和多播合并逻辑与存储器模块通信的存储器接口。多播合并逻辑通过使多个短数据字在传输之前合并成包括单个数据块的多播合并块数据,并且通过存储器通道传送多播合并块数据,经由存储器通道执行处理器和存储器模块之间的数据传输。多个短数据字中的每一个短数据字属于至少两个分区存储器子模块中的一个分区存储器子模块。
在一些示出中,多播合并逻辑配置与存储器子模块相关联的存储器控制器,以使存储器控制器检测在促进多播合并块数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换的条件,该条件指示短数据字合并的可能性。
在一些示例中,多播合并逻辑向存储器模块发送合并的加载命令,以使存储器模块从存储器子模块检索短数据字并且执行多播存储器合并操作以将短数据字合并成多播合并块数据;以及响应于接收到多播合并块数据,从多播合并块数据提取短数据字中的每一个短数据字。在某些示例中,多播合并逻辑还向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块从存储器子模块内的所标识的位置检索短数据字。
在一些示出中,多播合并逻辑配置与存储器子模块相关联的至少一个寄存器以使存储器模块从存储器子模块读取短数据字并且执行多播存储器合并操作,以将来自寄存器的短数据字合并成多播合并块数据。在一些示例中,寄存器可以为每子模块近存储器寄存器或每子模块存储器内寄存器,并且在执行多播存储器合并操作时,检索来自先前的存储器内或近存储器操作的存储在寄存器中的短数据字并且将其合并成单个数据块。
在一些示例中,多播合并逻辑生成待传输到存储器模块的多播合并块数据,并且向存储器模块发送合并的存储命令以使存储器模块执行多播存储器提取操作,以从多播合并块数据提取短数据字,将短数据字分发到存储器子模块,以及将短数据字存储在存储器子模块内。在某些示例中,多播合并逻辑还向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块将短数据字存储在存储器子模块内的所标识的位置处。
在一些示例中,多播合并逻辑生成待传输到存储器模块的多播合并块数据并且配置与存储器子模块相关联的至少一个寄存器,以使存储器模块从多播合并块数据提取短数据字并且将短数据字存储在寄存器中。寄存器可以是每子模块近存储器寄存器或每子模块存储器内寄存器。
根据某些具体实施,存储器模块包括经由存储器通道与处理器通信的处理器接口、多个分区存储器子模块,以及多播合并逻辑。多播合并逻辑通过使多个短数据字在传输之前合并成包括单个数据块的合并块数据,并且通过存储器通道传送多播合并块数据,经由存储器通道执行处理器和存储器模块之间的数据传输。多个短数据字中的每一个短数据字属于存储器子模块中的一个存储器子模块。
在一些示例中,存储器模块包括模式选择部件,包括但不限于三态门或复用器,该模式选择部件在促进多播合并数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换。在某些示例中,存储器模块还包括与存储器子模块相关联的存储器控制器,该存储器控制器检测指示短数据字合并的条件以在第一模式和第二模式之间切换。
在一些示例中,存储器模块包括至少一个近存储器或存储器内处理逻辑,该至少一个近存储器或存储器内处理逻辑基于由处理器提供的多播合并块数据或存储在存储器模块中的信息来确定标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符。
在一些示例中,存储器模块的多播合并逻辑包括与存储器子模块耦合的多个移位器逻辑部件。移位器逻辑部件中的每一个移位器逻辑部件基于存储器子模块的地址偏移量来移位短数据字的位置。来自移位器逻辑部件的短数据字被级联以形成多播合并块数据。在某些示例中,多播合并逻辑响应于从处理器接收合并的加载命令,从存储器子模块检索短数据字,并且通过使用移位器逻辑部件移位短数据字的位置并且将短数据字合并成多播合并块数据来执行多播存储器合并操作。在某些示例中,多播合并逻辑从处理器接收标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,使得从存储器子模块内的所标识的位置检索短数据字。
在一些示例中,多播合并逻辑还包括多个选择器逻辑部件。选择器逻辑部件中的每一个选择器逻辑部件基于来自存储器子模块的地址偏移量从自存储器子模块中的一个存储器子模块检索的数据的一部分中选择短数据字。来自选择器逻辑部件的短数据字被级联以形成多播合并块数据。
在一些示例中,存储器模块包括与存储器子模块相关联的至少一个寄存器。寄存器存储与对应的存储器子模块相关联的短数据字,直到执行多播存储器合并操作以将来自寄存器的短数据字合并成多播合并块数据。在一些示例中,短数据字中的每一个短数据字可先前已经从对应的存储器子模块加载,或者可已经由存储器内或近存储器处理逻辑基于存储在子模块中的数据计算。
在一些示例中,存储器模块的多播合并逻辑包括与存储器子模块耦合的多个子集分发逻辑部件。子集驱动器逻辑部件中的每一个子集驱动器逻辑部件从多播合并块数据中提取短数据字中的一个短数据字,并且将所提取的短数据字分发到存储器子模块中的一个存储器子模块。在某些示例中,存储器模块的多播合并逻辑响应于从处理器接收到合并的存储命令而执行多播存储器提取操作,以将由子集分发逻辑部件分发到存储器子模块的短数据字存储在存储器子模块内。在某些示例中,多播合并逻辑还从处理器接收标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,使得短数据字被存储在存储器子模块内的所标识的位置处。
在一些示例中,存储器模块包括与存储器子模块相关联的至少一个寄存器。寄存器存储从接收自处理器的多播合并块数据提取的短数据字。在一些示例中,后续存储器命令可以使用寄存器中的短数据字和/或相关联的存储器子模块中的短数据字来执行存储器操作。在一些示例中,多播合并逻辑执行多播存储器提取操作以从寄存器提取短数据字并且将其分发到存储器子模块,并且将短数据字存储在存储器子模块内。
根据一些具体实施,一种用于控制数字数据传输的系统包括处理器、包括多个分区存储器子模块的存储器模块、处理器和存储器模块之间的存储器通道,以及多播合并逻辑。多播合并逻辑通过使多个短数据字在传输之前合并成包括单个数据块的多播合并块数据,并且通过存储器通道传送多播合并块数据,经由存储器通道执行处理器和存储器模块之间的数据传输。多个短数据字中的每一个短数据字属于存储器子模块中的一个存储器子模块。在某些示例中,系统还包括模式选择部件和与存储器子模块相关联的存储器控制器,该模式选择部件在促进多播合并数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换。存储器控制器检测指示短数据字合并的可能性的条件,并且基于所检测到的条件来控制模式选择部件在第一模式和第二模式之间切换。
在以下描述中,阐述了许多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应当认识到,可以在没有这些具体细节的情况下实践各种实施方案。在一些情况下,未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免模糊本文描述的方法。应当了解,为了简单和清楚说明,附图中所示的元件不一定按比例绘制。例如,这些元件中的一些元件的尺寸可相对于其他元件被放大。
图2示出了系统、或更具体地计算系统(诸如硬件服务器、智能电话、可穿戴设备、打印机、膝上型电脑、台式机或利用存储器模块100和主机处理器104之间的数据传输的任何其他合适的计算设备的一部分)的一个示例的逻辑表示。为了简单起见,示出了单个存储器模块和单个存储器通道,但应当理解,本公开也适用于具有多个存储器模块和通道的系统。在该示例中,存储器模块100可以为主机处理器104的主存储器,该主机处理器可以为中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、专用集成电路(ASIC),或执行计算并且向存储器模块100发出存储器请求的任何其他合适的集成电路。高速缓存存储装置还可存在于主机处理器、存储器模块或两者上。应当理解,任何数量的存储器模块可以与主机处理器104耦合,如图4所示,并且系统还可以实施可操作地耦合在一起的多个主机处理器104。
存储器子模块在本文中也可以被称为存储器组。存储器子模块112、114、116和118是不同的,并且经由用于短数据字传输的多个存储器通道或数据链路200、202、204和206与主机接口102可操作地耦合。在存在16个子模块的示例中,可存在16个短数据字链路,其中每个短数据字链路促进例如16位的短数据字传输,并且每个存储器链路独立于其他链路进行操作。链路可各自占据共享存储器通道,诸如共享存储器数据总线207的子部分。数据链路200、202、204和206具有比存储器通道108小的通道宽度,使得所有数据链路200、202、204和206的总组合宽度等于存储器通道108的宽度。
在所示出的示例中,存储器模块100包括16个短字链接,每个短字链接具有16位的宽度,总共256位,这等于存储器通道108的宽度。应当理解,可存在其他链路来将存储器子模块与主机接口102耦合。例如,每个子模块还可经由如图1中所示的存储器通道110与主机接口102可操作地耦合,在这种情况下,具有比数据链路200、202、204和206中的任一者大的通道宽度的存储器通道110用于连续块数据传输而不是多播合并块数据传输,本文中进一步公开了相关细节。
如本文所公开的系统和方法是在存储器子模块共享对存储器通道的访问以从主机处理器接收广播指令流的上下文中描述的。然而,对于本领域的技术人员而言应当显而易见的是,如本文所公开的技术还可以扩展到接收广播指令的其他形式的存储器子模块分组。
图3示出了将经由存储器通道110在存储器模块100和主机处理器104之间传输的多播合并块数据300的一个示例。块数据300包括数据段302、304、306和310,使得每个数据段属于单独的存储器子模块或与单独的存储器子模块相关联。即,在加载命令的情况下,每个数据段是从存储器子模块中的一个存储器子模块以一对一相关的方式检索的短数据字,即,每个存储器子模块可以向块数据300贡献不超过一个短数据字。在存储命令的情况下,每个数据段是将以一对一相关的方式存储在存储器子模块中的一个存储器子模块内的位置中的短数据字,即,每个存储器子模块可以从将存储在其中的块数据300接收不多于一个短数据字。每个短数据字可具有任何合适的字大小,例如8位、16位、32位、64位等,这小于通道宽度和高速缓存行宽度,具体取决于存储器模块中的存储器子模块的数量。
在图2所示的示例性系统中,待传输的块数据300包括16个数据段,每个数据段具有16位,并且每个数据段被分配给不多于一个存储器子模块。例如,数据段302可以被分配给存储器子模块112,数据段304可以被分配给存储器子模块114,数据段306可以被分配给存储器子模块116,数据段308可以被分配给存储器子模块118,等等。仅出于说明的目的,当CLD促进每个存储器子模块(在一些示例中可包括PIM单元)返回16位数据时,通过将256位(单个通道的存储器接口的数据传输宽度)除以16个存储器子模块来计算。因此,来自存储器子模块112的数据可占据块数据300的位0至15,来自存储器子模块114的数据可占据块数据300的位16至31,来自存储器子模块116的数据可占据块数据300的位32至47,等等,直到来自存储器子模块118的数据可占据块数据300的位240至255。块数据300然后在单个块数据传输中在存储器模块100和主机处理器104之间在存储器通道108上传输或传送。由于块数据的包括寻址到多个单独且独立运行的存储器子模块的多个单独的短数据字的性质,块数据300也被称为多播合并块数据,并且当经由存储器通道发送多播合并块数据时,在单个块数据传输中同时传输单独的短数据字。
图4示出了具有多个存储器模块100、400、402和404的系统的一个示例,存储器模块中的每一个存储器模块经由存储器通道108与主机处理器104可操作地耦合。每个存储器模块可包括具有由近存储器处理(PNM)技术提供的内置计算能力的一个或多个存储器管芯和一个或多个逻辑管芯。例如,存储器模块100的计算能力可以在与存储器管芯3D堆叠的单独的逻辑管芯406上实施,并且存储器管芯可以与存储器子模块112、114、116和118一起实施。在一些示例中,存储器子模块112、114、116和118(也称为存储器组)可以是动态随机存取存储器(DRAM)设备。其他存储器模块400、402和404中的每一者可以类似地构造。本文所述的具体实施还适用于计算能力(即,计算单元)并入每个存储器组或存储器模块处的情况,如在组级存储器内处理(PIM)系统中。例如,计算单元可以直接在存储器管芯上而不是在单独的逻辑管芯上实施。为了克服主机和PIM单元之间的命令带宽限制,命令流可以被广播到存储器模块内的多个PIM单元。这样的组织的示例性具体实施是将每个PIM命令广播到与单个存储器通道相关联的所有存储器组。此外,本文所述的具体实施还适用于可以由以各种配置互连的多个主机处理器和存储器模块组成的其他系统配置。
在某些实施方案中,非暂态存储介质诸如存储器包括可执行指令,这些可执行指令在由一个或多个处理器,诸如主机处理器104或具有数据处理能力的存储器模块100执行时,使一个或多个处理器执行如图5至图8所公开的用于控制经由存储器通道的数字数据传输的方法。
图5示出了执行合并块数据传输的方法500,如由主机处理器104执行的,或者由存储器模块100执行的,该存储器模块具有带有由PNM提供的内置计算能力的逻辑管芯或带有由PIM提供的内置计算能力的存储器管芯,其中每个存储器管芯具有其自身的独立计算能力。在步骤502中,处理器或存储器模块将多个短数据字合并成多播合并块数据。多播合并块数据包括用于经由存储器通道传输的单个数据块,其中短数据字中的每一个短数据字属于存储器模块中的至少两个分区存储器子模块中的一个分区存储器子模块。在一些示例中,短数据字与存储器子模块的子集相关联,使得短数据字从存储器子模块内的特定位置被加载或者被存储在存储器子模块内的特定位置中。在步骤504中,在单个数据传输中经由存储器通道传输包含多个短数据字的单个数据块。传输可以是从处理器到存储器模块或者从存储器模块到处理器。
图6示出了在系统中的不同模式之间切换的方法600,其中一种模式如方法500中所解释的促进在处理器和存储器子模块中的至少两个存储器子模块之间的多播合并块数据的形成和传输,并且另一模式促进在处理器和单个存储器子模块之间的连续块数据传输。在步骤602中,处理器检测指示短数据字合并的可能性的条件。在步骤604中,响应于所检测到的条件,存储器模块或处理器在促进多播合并块数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换。
在一些具体实施中,检测条件并且发出在第一模式和第二模式之间切换的命令的过程完全在主机侧上在主机处理器的存储器接口处发生。尽管用于合并与多个存储器子模块相关联的短数据字的多播存储器合并操作可在存储器侧上在存储器模块的主机接口处发生(即,当由处理器发出合并的加载命令时),但主机处理器负责检测条件并且向存储器模块发出多播合并请求,该多播合并请求可作为合并的加载命令的一部分发出。
在一些具体实施中,条件由在处理器上运行的应用程序或由该应用程序发出的指令显式地触发(例如,″开始合并″的特殊存储器命令,或由应用程序发出的触发合并的显式合并的存储器命令)。在一些具体实施中,条件包括存储器接口处的稀疏存储器访问操作的指示。稀疏存储器访问被定义为在存储器子模块中的两个或更多个存储器子模块处稀疏地访问较小数量的数据位(例如,短数据字),这与在单个存储器子模块处访问较大数量的数据位的单个连续部分(例如,整个高速缓存行或数据块)的连续存储器访问不同。例如,存储器接口可包括存储器控制器,该存储器控制器将来自处理器的存储器命令序列存储到队列中,使得对于每个存储器子模块存在单独的队列。存储器控制器可以检测每个队列前端处的命令由稀疏位或短数据字的存储器命令组成的提示或指示,并且响应于该检测,来自队列的稀疏位或短数据字被级联或合并成多播合并块数据。
在一些具体实施中,存储器控制器可以将存储器命令序列存储到单个存储器队列中。在这种情况下,可以通过周期性地搜索队列以查找映射到不同存储器子模块的短数据字的存储器命令来检测该条件。另外或另选地,在插入对短数据字的存储器命令时可以搜索队列以查找可以与该存储器命令合并的对不同子模块中的短数据字的相同或类似类型的其他命令。可合并命令的数量阈值可被实施为触发条件。如果合并限于共享一些地址偏移量位的短数据字(例如,短数据字落入相同的DRAM列索引中),则在搜索合并机会时还对地址位进行比较。在此类具体实施中,队列条目还可包含关于相关联的存储器命令是否以短数据字为目标的信息、关于多个短数据字是否已经合并到队列条目中的信息,以及关于作为队列条目的目标的短数据字的偏移量信息。
图7示出了由处理器执行合并的存储器加载操作的方法700。在步骤702中,处理器向存储器模块发送合并的加载命令。该命令使存储器模块从存储器子模块检索短数据字,并且执行多播存储器合并操作以将短数据字合并成合并块数据。在步骤704中,处理器确定合并的命令是否直接以存储器子模块为目标,或者命令是否以存储器内或近存储器寄存器为目标。在一些示例中,正在被合并的命令的类型指定是以存储器子模块为目标还是以存储器内寄存器或近存储器寄存器为目标。
如果合并的命令以存储器子模块为目标,则在步骤706中,处理器将一个或多个位置标识符传送到存储器模块。一个或多个位置标识符标识存储器子模块内与短数据字相关联的多个位置。处理器可以使存储器模块从存储器子模块内的所标识的位置检索短数据字。短数据字在作为单个数据块经由存储器通道传输之前被合并成多播合并块数据。随后,在步骤708中,处理器响应于接收到多播合并块数据而从多播合并块数据提取(或接合并)短数据字中的每一个短数据字。
如果合并的存储器命令以存储器内或近存储器的寄存器为目标,则在步骤710中,处理器配置与存储器子模块中的每一个存储器子模相关联的至少一个寄存器,以使存储器模块存储待合并成合并块数据的短数据字。在一些实施方案中,为每个存储器子模块实施寄存器并且可以直接访问寄存器。如果对于每个存储器子模块访问相同的寄存器和该寄存器内的相同偏移量,则根据一些示例,可能不必为短数据字中的每一个短数据字提供位置信息。在一些示例中,可以由处理器通过执行来自存储器子模块的存储器本地加载命令来提前协调将短数据字放置在寄存器中。在一些示例中,可通过使用存储器模块的近存储器或存储器内处理能力处理短数据字中的每一个短数据字(例如,对短数据字执行计算)来协调短数据字在寄存器中的放置。在步骤712中,在进行到步骤708之前,由处理器执行多播存储器合并操作以从寄存器读取短数据字并且形成多播合并块数据。
图8示出了由处理器执行合并的存储器存储操作的方法800。在步骤802中,处理器生成待传输到存储器模块的多播合并块数据。在步骤804中,处理器确定合并的命令是否直接以存储器子模块为目标,或者命令是否以存储器内或近存储器的寄存器为目标。
如果合并的存储器命令以存储器子模块为目标,则在步骤806中,处理器向存储器模块发送一个或多个位置标识符。位置标识符标识存储器子模块内与短数据字相关联的位置,这使存储器模块将短数据字存储在存储器子模块内的所标识的位置处。在步骤808中,处理器向存储器模块发送合并的存储命令。该命令使存储器模块执行多播存储器提取操作以从多播合并块数据提取短数据字,将短数据字分发到存储器子模块,并且将短数据字存储在存储器子模块内的所标识的位置处。步骤806和步骤808可以顺序地执行或同时执行。在一些示例中,位置标识符可以由存储器内或近存储器处理逻辑部件基于存储在每子模块寄存器或存储器子模块中的数据来生成或计算。
如果合并的存储器命令以存储器内或近存储器的寄存器为目标,则处理器进行到步骤810以配置与存储器子模块相关联的至少一个寄存器,以使存储器模块从多播合并块数据提取短数据字并且将短数据字存储在至少一个寄存器中。例如,在短数据字被存储到存储器子模块本地的寄存器之后,存储器子模块的近存储器或存储器内计算部件可以访问寄存器以用于进一步计算和/或数据移动。
在方法700和方法800中,可通过使用合并的加载/存储命令和/或数据总线中的数字位来传送位置标识符以传输每子模块位置位。另选地,位置标识符可以通过计算每子模块的位置信息来获得,例如通过加载位置标识符和/或计算近存储器的位置标识符并且随后将其存储在近存储器寄存器中来获得。在一些示例中,静态的或对所有存储器子模块共同的位置信息可能不需要被单独传输。例如,可以将附加的每子模块位置位添加到共同的基地址,并且如果合并的命令以每个存储器子模块或近存储器寄存器中的相同偏移量处的短数据字为目标,则可以不提供附加的位置信息。
如本文所公开的逻辑部件中的任一者,诸如图9至图14中所示的那些可被实施为离散逻辑、一个或多个状态机、现场可编程门阵列(FPGA),或执行指令的处理器/处理逻辑部件和其他硬件的任何合适的组合。根据实施方案,逻辑设备或部件包括能够执行逻辑运算的设备或部件,例如能够执行布尔逻辑运算的装置。应当认识到,示出了功能块并且可以根据需要组合或分开各种操作。还将认识到,并非在所有具体实施中都需要所有功能块。图中示出的箭头定义了在指定的加载或存储操作期间部件之间的数据传输的方向,这可以使用任何合适的数据路径来实施,诸如经由硬连线或数据通道诸如数据总线。一些具体实施还可涉及传输/操作的流水线化,其中在一个或多个寄存器中缓冲数据。此外,为简单起见,本文所述的实施方案涉及作为高带宽存储器(HBM)的存储器模块100,其中从单个存储器模块提供数据访问的整个高速缓存行。
应当理解,本公开适用于其中多个存储器模块有助于单个数据访问的其他类型的存储器。在此类情况下,将多个短数据元素(即,短数据字)合并成单个数据块可在每个参与的存储器模块内发生。此外,应当理解,尽管附图是在具有16个存储器组或子模块以及数据宽度为256位(即,随着每个加载或存储操作传输到通道的数据的大小)的用于经由单个通道进行块数据传输的存储器通道接口的示例性系统的上下文中呈现的,但具有不同参数,诸如更多或更少的存储器子模块和/或更宽或更窄的存储器通道等的系统的其他具体实施也是可能的。
图9示出了系统,或更具体地利用存储器模块100和主机处理器104之间的数据传输的计算系统的一个示例。在该示例中,存储器模块100包括多播合并逻辑900,该多播合并逻辑包括具有多个寄存器912、914、916、918的多个处理逻辑部件902、904、906、908,其中每个处理器和寄存器与存储器子模块112、114、116、118中的一个存储器子模块相关联。处理逻辑902、904、906、908是被配置为向存储器子模块提供计算能力的近存储器或存储器内计算部件。多播合并逻辑900与数据链路200、202、204、206耦合,使得短数据字经由数据链路200、202、204、206通过共享数据总线或数据通道934来传输。
仅出于说明的目的,将接收自处理逻辑902或发送到该处理逻辑的短字数据可占据数据通道934的位0至15,将接收自处理逻辑904或发送到该处理逻辑的短字数据可占据数据通道934的位16至31,将接收自处理逻辑906或发送到该处理逻辑的短字数据可占据数据通道934的位32至47,等等,直到将接收自处理逻辑908或发送到该处理逻辑的短字数据可占据数据通道934的位240至255。在一些实施方案中,处理逻辑902、904、906、908可包括足够的处理能力以支持合并的加载(CLD)和合并的存储(CST)操作,并且可以专用于仅支持此类操作。
存储器模块100还包括模式选择器922、可实施为例如三态门或复用器的模式选择部件。模式选择器922作为促进多播合并块数据的传输的第一模式和促进连续块数据传输的第二模式之间的切换器来操作,如所解释的。模式选择器922可被实施为可编程逻辑设备,使得利用控制位来激活切换。模式选择器922被配置为当处于第一模式时通过数据通道934传输数据,并且当处于第二模式时将数据传输到存储器子模块选择器924以及从该存储器子模块选择器传输数据。存储器子模块选择器924由所有存储器子模块共享,并且被配置为当模式选择器922在第二模式中操作时,基于所提供的存储器子模块标识符(ID)910来选择要访问哪个子模块。根据一些实施方案,模式选择器922和子模块选择器924中的每一者可被实施为单个中心位置中的单个逻辑部件(如图所示)。另选地,在一些实施方案中,模式选择器922和子模块选择器924中的一者或两者可以分布式方式实施,使得模式选择器922和/或子模块选择器924包括多个分开运行的逻辑部件,其中至少一个逻辑部件设置在存储器子模块中的每一个存储器子模块附近,以控制存储器子模块对单个共享数据通道或数据总线的访问。在一些示例中,逻辑部件可包括但不限于复用器或三态门。
主机处理器104还包括与存储器模块100的多播合并逻辑900分开的多播合并逻辑926,并且因此具有不同的功能性。考虑到上述部件,下文详细描述了执行多播合并块数据传输的示例。
在CLD操作的一些具体实施中,对于PIM实施的系统,利用PIM支持,为与每个存储器组或子模块相关联的PIM单元指定PIM寄存器标识符。PIM单元中的每一个PIM单元将所标识的寄存器的短数据字(例如,16位)贡献给合并的输出。在寄存器比短数据字的长度要宽的情况下,一些实施方案可以返回寄存器的低16位或寄存器的某一其他固定偏移量。在其他实施方案中,CLD操作可具有允许主机上的软件指定每个PIM单元应当返回寄存器的哪16位的参数。在其他实施方案中,在发出CLD操作之前可在PIM单元处提前对寄存器进行编程。
在一些其他具体实施中,CLD操作可指定每个存储器组或子模块内的存储器地址,使得每个存储器子模块读取存储在指定存储器位置处的短字数据(例如,16位)并且将其返回。在一个实施方案中,这通过每个存储器模块接收广播模块内存储器地址作为CLD操作的一部分并且返回每个存储器子模块中的该位置处的数据来实现。在其他实施方案中,这利用了对于将附加的地址信息传送到每个存储器子模块的支持。这可以经由组本地地址生成或通过增强命令接口(例如,通过使用数据总线来发送命令信息)或另选地通过合并共享目标地址位的命令来实现。
在CLD操作中,响应于向存储器子模块的集合广播的命令,存储器子模块各自向请求主机返回在存储器接口的宽加载数据返回内在固定的、唯一位置处的数据组块或数据块。当每个存储器子模块返回在返回到主机的数据内在特定且唯一的位置中的数据时,所有参与的存储器子模块在单个块数据传输中通过存储器数据总线或通道返回它们的数据。
具体地,在根据一些示例的CLD操作期间,主机处理器104指定与待访问的存储器子模块112、114、116、118相关联的子模块专用寄存器912、914、916、918。存储器内或近存储器处理逻辑部件902、904、906、908中的每一者促成如存储在对应的寄存器中的预先确定的字长(例如,在例示的示例中为16位)的短数据字将经由数据通道934和数据通道936输出到主机接口102。
在寄存器912、914、916、918比短数据字的字长宽的情况下,在一些实施方案中,返回低16位(或属于短数据字的长度的位的数量),或者另选地,可以采用其他偏移量来从寄存器中的不同位置检索短数据字。在一些实施方案中,在起始CLD操作时,主机处理器104可发出指定处理逻辑902、904、906、908中的每一者应返回寄存器的哪些位的命令。在一些实施方案中,在主机处理器104发出CLD操作之前,通过提前经由存储器通道930检索短数据字,寄存器912、914、916、918可以由对应的处理逻辑902、904、906、908填充有短数据字。如图所示,存储器通道930比数据链路200、202、204、206宽(例如,256位),因为相同的通道也可以用于在子模块112、114、116、118和存储器组选择器924之间传输块数据。
在一些示例中,在寄存器912、914、916、918填充有来自其对应的存储器子模块112、114、116、118的短数据字之后,处理逻辑902、904、906、908经由数据通道934将短数据字作为多播合并块数据传输。当模式选择器922切换到促进多播合并块数据传输的第一模式时,主机处理器104可以经由数据通道934检索块数据。否则,当模式选择器922切换到促进连续块数据传输的第二模式时,主机处理器104可经由另一数据通道932从存储器子模块112、114、116、118中的一个存储器子模块检索连续块数据,如由主机处理器104提供的子模块ID 910所确定的。
响应于经由存储器通道108接收到多播合并块数据,主机处理器104经由内部数据通道938将块数据传输到多播合并逻辑926以相应地从块数据提取短数据字以进行处理。因此,多播合并逻辑926还能够作为提取器或去合并部件来操作,并且存储器模块100中的多播合并逻辑900还能够执行这样的操作,如本文中关于合并的存储操作进一步解释的。
在CST操作的一些具体实施中,对于PIM实施的系统,利用PIM支持,为与每个存储器组或子模块相关联的PIM单元指定PIM寄存器标识符。PIM单元中的每一个PIM单元将从合并的输入接收的短数据字写入到所标识的寄存器。在寄存器比短数据字的长度(例如,16位)宽的情况下,一些实施方案可以对低16位中的数据进行存储或执行PIM操作,并且例如经由掩蔽将剩余位归零。其他实施方案可以对16位短数据字进行符号扩展,并且对以指定PIM寄存器为目标的扩展数据进行存储或执行PIM操作。在其他实施方案中,CST操作可具有允许主机上的软件指定每个PIM单元要将对应的数据写入寄存器的哪16位的参数。在其他实施方案中,在发出CST操作之前可在PIM单元处提前对寄存器进行编程。
在一些其他具体实施中,CST操作可指定每个存储器组或子模块内的存储器地址,使得每个存储器子模块将短字数据(例如,16位)写入到指定的存储器位置。在一个实施方案中,这通过每个存储器模块接收广播模块内存储器地址作为CST操作的一部分并且将数据存储在每个存储器子模块中的该位置处来实现。在其他实施方案中,这利用了对于将附加的地址信息传送到每个存储器子模块的支持。这可以经由组本地地址生成或通过增强命令接口(例如,通过使用数据总线来发送命令信息)或另选地通过合并共享目标地址位的命令来实现。
具体地,在一些示例中,主机处理器104在与CLD操作相反的方向上传输数据,使得多播合并逻辑926执行将作为单个数据块传输到存储器模块100的多个短数据字的合并(或单个写入操作),在此之后,提取短数据字并且跨越存储器子模块112、114、116、118分发短数据字。作为例示性示例,可以如下执行数据分发:主机提供的多播合并块数据的位0至15的数据被发送到子模块112,主机提供的多播合并块数据的位16至31的数据被发送到子模块114,主机提供的多播合并块数据的位32至47的数据被发送到子模块116,等等,直到主机提供的多播合并块数据的位240至255的数据被发送到子模块118。
在一些实施方案中,CST操作指定与子模块112、114、116、118相关联的寄存器912、914、916、918,并且对应的处理逻辑902、904、906、908将从待存储到寄存器912、914、916、198中的多播合并块数据中提取的短数据字(例如,16位)写入。
在寄存器912、914、916、918比短数据字的字长宽的情况下,在一些实施方案中,可以将短数据字存储在低16位(或者属于短数据字的长度的位的数量)中,同时将剩余位保持为0。在一些实施方案中,在存储短数据字或由处理器执行处理操作之前,对短数据字执行符号扩展操作以扩展其数据长度,其中扩展的数据以指定寄存器912、914、916、918为目标。在其他实施方案中,CST操作可具有允许主机指定存储在寄存器912、914、916、918中的哪些位应当由处理逻辑902、904、906、908写入对应的存储器子模块112、114、116、118中的参数。
在CLD和CST操作两者中,主机处理器104可提供关于模式选择器922和子模块选择器924的操作的指令。例如,当经由命令通道或命令总线928提供CLD或CST操作时,多播合并逻辑926可以发起命令或指令940以将模式选择器922从促进连续块数据传输的第二模式切换到促进多播合并块数据传输的第一模式。切换到第一模式的指令可以与激活模式选择器922中的控制位一样简单,使得例如当控制位为1时激活第一模式,并且当控制位为0时激活第二模式。否则,如果主机处理器104旨在将模式选择器922切换回第二模式(例如,在完成多播合并块数据传输之后),则这可以通过切换控制位来实现。
在一些实施方案中,近存储器或存储器内处理逻辑部件902、904、906、908能够基于由主机处理器104提供的多播合并块数据或存储在存储器模块100中(例如,存储在寄存器912、914、916、918中)的信息来确定标识存储器子模块112、114、116、118内与短数据字相关联的特定位置的一个或多个位置标识符(例如,地址位,诸如存储器阵列的列索引)。此外,尽管图9示出了与其自身的近存储器或存储器内处理器相关联的每个存储器子模块,但在一些实施方案中,单个近存储器或存储器内处理器的处理能力可以在多个存储器子模块之间共享。
在一些实施方案中,在两个前述模式之间切换的指令可由近存储器或存储器内处理器提供,如通过从近存储器存储装置(例如,从处理逻辑部件902、904、906、908中的任一者)传输合并配置位944所示。每当确定在合并模式与连续模式之间切换的条件时,处理器可以更新其近存储器存储值。例如,处理器可能能够检测指示多播合并块数据传输的可能性的条件,诸如本文先前所解释的那些。此外,一些具体实施还可涉及传输/操作的流水线化,其中在一个或多个中间缓冲寄存器中缓冲数据,例如图11至图14中所示的块数据寄存器1102,该块数据寄存器可被设置在模式选择器922和多播合并逻辑900之间。
图10示出了可以由处理逻辑部件902、904、906、908用作多播合并逻辑900的部分的不同类型的寄存器。在一些实施方案中,可以实施偏移寄存器1000、1002、1004、1006以存储用于从对应的子模块加载或将被存储在对应的子模块中的短数据字的偏移量信息。例如,在CLD操作中,偏移寄存器1000、1002、1004、1006可在短数据字与其他短数据字合并成多播合并块数据时存储用于短数据字的特定地址偏移量(诸如来自存储器子模块112的短数据字占据位0至15,来自存储器子模块114的短数据字占据位16至31,等等)。每个地址偏移量对于对应的存储器子模块而言是不同的且唯一的,以避免由于所占据的位的意外重叠而导致一个短数据字条目覆写另一个短数据字条目。
此外,在CST操作中,地址偏移量可以帮助处理逻辑902、904、906、908标识从多播合并块数据的哪些位检索短数据字,以便将所检索的短数据字存储在对应的存储器子模块112、114、116、118中。在一些实施方案中,偏移寄存器1000、1002、1004、1006包含多个偏移量信息,使得当处理器提供基地址时,处理逻辑902、904、906、908可基于所存储的偏移量信息和所提供的基地址来计算与多个存储器子模块中的每一个存储器子模块相关联的唯一位置信息。在主机处理器104发出CLD或CST操作之前可以提前对存储在寄存器中的偏移值进行编程或存储。
在一些实施方案中,合并配置寄存器1008、1010、1012、1014可被实施以存储关于将由模式选择器922选择的模式的数据,如由处理逻辑部件902、904、906、908响应于检测到指示多播合并块数据传输的条件而确定的。寄存器可以指示单个位,其中当该位为1时激活第一模式,并且当该位为0时激活第二模式。短数据寄存器1016、1018、1020、1022是存储短数据字的寄存器,该短数据字在CLD操作期间将被合并成多播合并块数据,或者在CST操作期间将被存储在对应的存储器子模块112、114、116、118中。在一些示例中,CLD操作从短数据寄存器1016、1018、1020、1022(或一个或多个每子模块近存储器寄存器)读取以获得短数据字,在这种情况下,作为先前的近存储器处理操作的结果,短数据字已经被存储在寄存器中。因此,在发出操作之前,短数据字可被提前存储在这些短数据寄存器中。
图11示出了利用存储器模块100和主机处理器104之间的数据传输的计算系统的一个示例。在该示例中,主机处理器104提供操作模式选择器922的指令、短数据字中的每一个短数据字的地址偏移量,以及存储器子模块112、114、116、118中的每一者的位置地址。地址偏移量和位置地址作为指令命令1100分别从主机处理器104被发送到多播合并逻辑900和存储器子模块,该多播合并逻辑与块数据寄存器1102耦合以存储多播合并块数据。地址偏移量定义了短数据字的位置在多播合并操作期间移动了多少,并且位置地址定义了针对CLD或CST操作将被访问的指定存储器子模块内的特定位置(例如,存储器子模块内的存储器阵列的列索引)。在一些示例中,可以实施近存储器整数加法器来生成存储器子模块的位置地址。图12和图14示出了在CLD操作期间的图11所示的系统内的数据流,并且图13示出了在CST操作期间的系统内的数据流。
图12示出了运行CLD操作的系统的一个示例,其中多播合并逻辑900包括与地址移位部件耦合的级联逻辑1200,该级联逻辑在该示例中是可以为可编程的、被配置为接收将从存储器子模块112、114、116、118加载的数据的移位器/选择器逻辑1202、1204、1206、1208。移位器/选择器逻辑1202、1204、1206、1208被配置为从对应的存储器子模块112、114、116、118接收连续块数据。移位器/选择器逻辑1202、1204、1206、1208然后被配置为(1)从连续块数据选择短数据字以存储在块数据寄存器1102中,或者(2)在将短数据字存储在块数据寄存器1102中之前将短数据字移位地址偏移量。
如果选择器逻辑(1)被实施,则使用预先确定的地址偏移量来选择短数据字,而不执行地址移位。如果移位器逻辑(2)被使用,则使用相应的偏移量将短数据字分别移位第一预先确定的数量的位,并且从第一位开始选择预先确定的数量的位以获得短数据字。使用级联逻辑1200来合并所存储的短数据字,该级联逻辑执行字符串级联以端到端地连接短数据字。
尽管未示出,但移位器/选择器逻辑1202、1204、1206、1208可包括被配置为存储位置地址(以确定连续块数据内的哪些位或位置应被选择为短数据字)和/或地址偏移量值(以确定在合并之前将对短数据字执行的移位量)的寄存器。
短数据字提取逻辑1210可以在主机处理器104中实施,以在单个块数据传输中经由存储器通道108接收多播合并块数据之后从多播合并块数据提取单独的短数据字。每个移位器/选择器逻辑1202、1204、1206、1208可接收由主机处理器104提供的指令命令1100中的地址偏移量信息,其中地址偏移量信息定义来自每个存储器子模块的短数据字将在多播合并块数据中所处的位置。每个存储器子模块112、114、116、118可以接收指令命令1100中的位置地址信息,以将从中检索短数据字的位置存储在存储器地址寄存器中。
图13示出了运行CST操作的系统的一个示例,其中主机处理器1300包括级联逻辑1300以形成包括将存储在多个存储器子模块112、114、116、118中的短数据字的多播合并块数据。在这种情况下,多播合并逻辑900经由解合并路径接收多播合并块数据,该多播合并逻辑包括子集分发逻辑1302、1304、1306、1308以按照主机处理器104所预期的那样将短数据字分发到它们相应的存储器子模块。在一些示例中,子集分发日志进一步实施从多播合并逻辑传送到存储器子模块的附加的地址偏移量位,以指示需要写入哪个或哪些短数据字,以及防止写入存储器阵列的列索引中的其他位。
块数据寄存器1102存储从主机处理器104接收的多播合并块数据,并且所存储的数据经由数据通道1310、1312、1314、1316传输到每个子集分发逻辑1302、1304、1306、1038。每个子集分发逻辑可接收由主机处理器104提供的指令命令1100中的地址偏移量信息,其中地址偏移量信息定义了将多播合并块数据内的哪些位分发到哪个存储器子模块。在一些示例中,可以利用每个子集分发逻辑来驱动存储在块数据寄存器1102中的数据的子集。每个存储器子模块112、114、116、118可以接收指令命令1100中的位置地址信息,以将待存储短数据字的位置存储在存储器地址寄存器中。
图14示出了运行CLD操作的系统的一个示例,其中来自图12的移位器/选择器逻辑1202、1204、1206、1208被排除在多播合并逻辑900之外。相反,来自块数据寄存器1102内的对应的存储器子模块112、114、116、118的短数据字的地址偏移量是可提前配置的或预先确定的。即,短数据字的偏移量可以是静态偏移量,在这种情况下,与块数据寄存器1102内的适当位的数据连接可以是硬连线的(因此形成地址移位部件),使得来自每个存储器子模块的短数据字的地址位被自动移位以被存储在块数据寄存器1102内的某些预先确定的或预先配置的位中。
此外,级联逻辑1200也被排除在多播合并逻辑900之外。代替如图12那样使用级联逻辑1200来控制将短数据字合并成待存储在块数据寄存器1102中的单个数据块,通过将来自这些存储器子模块的线材直接连接到数据总线中以将短数据字的位传输到块数据寄存器1102,将来自存储器子模块112、114、116、118的经位置移位的短数据字级联在一起。
在一些实施方案中,可以通过经由数据总线而不是命令总线传送部分命令信息来执行CLD和CST操作。例如,在涉及如图9所示的具有PNM或PIM能力的存储器模块100的CLD操作中,组合的短数据字可占据多播合并块数据的一部分,使得块数据的剩余部分用于存储其他信息,诸如短数据字中的每一个短数据字的地址位。类似地,在CST操作中,短数据字中的每一个短数据字的地址位可以在多播合并块数据的未被待存储在存储器子模块中的短数据字占据的部分中实施。
在某些实施方案中,非暂态存储介质诸如存储器包括可执行指令、命令或地址信息,这些在由一个或多个处理器诸如主机处理器104或PNM/PIM设备执行时使一个或多个处理器放置短数据字,使得可经由CLD和CST操作来协调对与每个存储器子模块内的对应的位置相关联的短数据字的稀疏访问。这可以应用于具有确定性稀疏访问模式的情况,诸如沿多维矩阵或张量的辅助轴的访问,或者其中跨存储器子模块分离大的表条目以实现PNM或PIM操作的高效使用,包括但不限于涉及基于机器学习的推荐系统的应用。在一些实施方案中,可经由软件具体实施来显式地执行合并,用于该软件具体实施的可执行指令被存储在非暂态存储介质中。例如,运行软件的处理器可以发送绕过高速缓存的预先合并的请求,并且该请求在存储器控制器处被处理,而不需要用于合并的任何附加的硬件。
在一些实施方案中,可执行指令在由一个或多个处理器执行时使一个或多个处理器发送独立的细粒度稀疏访问,然后经由硬件诸如离散逻辑、状态机、FPGA或执行指令的处理器的任何合适的组合来合并这些独立的细粒度稀疏访问。主机处理器104可能能够基于监测以独立且并发访问为目标的数据通道和存储器子模块来动态地检测合并机会。主机处理器或PNM/PIM设备还可能能够归并或合并独立请求(即,请求访问存储器子模块的CLD或CST命令)并且在CLD或CST操作期间分离响应。
根据一些示例,如果稀疏命令能够遍历高速缓存层级结构,则可能需要区分稀疏访问和非稀疏数据访问,诸如涉及单个存储器子模块的连续块数据访问,因为这些请求将由高速缓存控制器不同地处理。在这种情况下,例如可以通过在命令中实施附加的位或操作码来促进区分。在一些实施方案中,稀疏访问的处理方式与非稀疏数据访问不同,因为稀疏访问不访问数据的完整高速缓存行。由此,根据一些示例,稀疏访问可以简单地绕过高速缓存(例如,使用对未高速缓存的地址范围的现有支持)。另选地,根据一些示例,稀疏访问可以遍历高速缓存,但可以防止在未命中时分配或填充高速缓存块。在一些实施方案中,用扇区掩码来增强高速缓存,该扇区掩码以稀疏访问的粒度跟踪状态信息,从而允许高速缓存存储部分有效的高速缓存块。
对于利用寄存器偏移量信息(当PNM/PIM寄存器被实施时)或地址偏移量信息的多播存储器合并操作,与非稀疏访问相比,来自主机处理器的命令可能需要附加的地址信息。这可以通过将请求分离成更多的分组,使用位掩码或字节掩码来指示稀疏命令访问高速缓存行中的哪些字节,或者沿专用数据路径诸如命令总线928发送请求中的一些或全部来实施。
对于其中主机处理器能够动态地检测合并机会的系统,处理器可以用用于合并和/或分离与稀疏存储器访问相关联的请求和响应的装置来实施。在一些实施方案中,合并操作在存储器控制器中发生,其中请求已经基于目标存储器子模块被分类到不同的队列中。如果检测到多个存储器子模块队列前端处的稀疏存储器访问,则存储器控制器将请求合并在一起并且发出包括与存储器子模块相关联的所有请求的单个CLD或CST操作。在一些实施方案中,当稀疏存储器访问到达存储体队列的前端时,搜索其他队列中的元素(或其他队列中的元素的子集)以查找可以与原始稀疏存储器访问合并成单个存储器请求的稀疏存储器访问。在一些实施方案中,稀疏存储器访问请求被放置在单独的队列中,当达到对不同子模块的可合并的稀疏存储器访问的阈值时,或者当超过定时阈值时,稀疏存储器访问请求从单独的队列与密集存储器访问请求(即,访问来自单个存储器子模块的连续数据块的请求)交织。
当发送对CLD或CST操作中所涉及的请求的响应时,存储器控制器可以分离该响应并且将单独的稀疏存储器访问响应(可能通过高速缓存层级结构)返回到发出请求的处理器。这可通过将所有未决稀疏存储器访问的响应元数据(例如,请求器ID、稀疏地址偏移量,或访问粒度)存储在存储器控制器中的小结构中来实施。当从存储器模块返回稀疏存储器访问响应时,存储器控制器可基于稀疏粒度将其数据内容分离成多个响应分组,从而将所存储的元数据附加到这些分组。如果稀疏存储器访问响应通过高速缓存层级结构被返回到请求方,则在有效状态跟踪的粒度大于稀疏粒度时,高速缓存可以不为该数据分配空间。
实施具有执行如本文所公开的多播存储器合并/提取操作的能力的系统的优点包括:提高了在单个加载操作中从与存储器通道相关联的PNM/PIM设备的集合读取/加载元数据(例如,参与每个PNM/PIM设备处的不规则计算的数据元素的数量)到主机处理器的效率。此外,元数据(例如,不同的循环迭代计数)可以在单个存储操作中被有效地写入/存储到与存储器通道相关联的PNM/PIM设备的集合。可以在单个存储操作中从与存储器通道相关联的PNM/PIM设备的集合中的每一个PNM/PIM设备高效地读取或加载条件代码(例如,哪些PNM/PIM设备具有满足动态计算的数据相关条件的数据)。
此外,跨与存储器通道耦合的存储器组或子模块的集合分发的短数据字可以被有效地加载或存储,而不需要浪费地从存储器子模块中的每一个存储器子模块传输完整高速缓存行的数据。这提高了许多应用领域诸如科学计算(例如,高性能计算或HPC)和图形分析中的性能,并且提高了实施广泛使用的数据结构诸如哈希表和集合成员资格数据结构的性能。本文所公开的系统和方法还提供了提高近存储器或存储器内处理技术的性能的能力,近存储器或存储器内处理技术经常将短数据字传输到与存储器组或子模块相关联的多个近存储器或存储器内处理单元,或者从与存储器组或子模块相关联的多个近存储器或存储器内处理单元传输短数据字。另外,对于需要从不同的存储器子模块加载短数据字并且将它们与所提供的操作数组合的加载操作(例如,对于高吞吐量细粒度的原子访问),可以同时向多个存储器子模块高效地提供细粒度操作数。如本文所公开的多播存储器合并操作在针对稀疏存储器访问模式(诸如存在于图形分析、稀疏矩阵代数、稀疏机器学习模型等中的那些)提高存储器模块的效率(例如,DRAM效率)方面也是有效的。
尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。本文在一些具体实施中描述的设备通过使用结合在非暂态计算机可读存储介质中的计算机程序、软件或固件来制造,以供通用计算机或处理器执行。计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
在前面对各种实施方案的详细描述中,已参考构成其一部分的附图,并且在附图中以示例的方式示出了可在其中实践本发明的特定优选实施方案。足够详细地描述了这些实施方案以使本领域的技术人员能够实践本发明,并且应当理解,可利用其他实施方案,并且可在不脱离本发明的范围的情况下做出逻辑、机械和电气改变。为了避免使本领域技术人员能够实践本发明所不必要的细节,该描述可省略本领域技术人员已知的某些信息。此外,本领域的技术人员可很容易构造结合本公开的教导的许多其他变化的实施方案。因此,本发明并非旨在限于本文所阐述的具体形式,相反,本发明旨在涵盖可合理地包括在本发明的范围内的此类替代方案、修改方案和等效方案。因此,前面的详细描述不应被视为限制性的,并且本发明的范围仅由所附权利要求限定。以上对实施方案和其中描述的示例的详细描述仅出于说明和描述的目的而非限制的目的给出。例如,所描述的操作以任何合适的顺序或方式完成。因此,可以预期,本发明涵盖落入上文公开和本文要求保护的基本基础原理范围内的任何和所有修改、变化或等效物。
如前所述,如本文所公开的系统和方法通过合并或聚合来自多个不同存储器子模块的短数据字并且在单个块数据传输中同时通过存储器通道传输或传送多播合并块数据来帮助减少数据传输开销。在单个块数据传输内在唯一位置处,将短数据字从分区存储器子模块的集合中的每一个分区存储器子模块返回或加载到主机处理器,或者在单个块数据传输内在唯一位置处,从主机处理器写入或存储到分区存储器子模块的集合中的每一个分区存储器子模块中。此外,在执行单元与存储器组相关联的一些PIM架构中,可能有必要在PIM单元和主(或主机)处理器之间读取或写入少量数据,例如以向主机处理器报告数据相关条件或状态,或者写入可在PIM单元之间变化的循环迭代计数。在此类示例中,如本文所公开的系统和方法有利于减少窄数据访问的开销。
以上详细描述和其中描述的示例仅出于说明和描述的目的而非限制的目的给出。

Claims (32)

1.一种用于控制在存储器模块和处理器之间经由存储器通道的数字数据传输的方法,所述方法包括:
由所述存储器模块或所述处理器中的至少一者将多个短数据字合并成多播合并块数据,所述多播合并块数据包括用于经由所述存储器通道传输的单个数据块,所述多个短数据字中的每一个短数据字属于所述存储器模块中的至少两个分区存储器子模块中的一个分区存储器子模块;以及
通过所述存储器通道传送所述多播合并块数据。
2.根据权利要求1所述的方法,所述方法还包括:
由所述处理器检测指示短数据字传输的条件;以及
响应于所检测到的条件,由所述存储器模块或所述处理器中的至少一者在促进所述多播合并块数据的所述传输的第一模式与促进所述处理器和所述存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换。
3.根据权利要求1所述的方法,所述方法还包括:
由所述处理器向所述存储器模块发送合并的加载命令,以使所述存储器模块从所述存储器子模块检索所述短数据字并且执行多播存储器合并操作以将所述短数据字合并成所述多播合并块数据;以及
响应于接收到所述多播合并块数据,由所述处理器从所述多播合并块数据提取所述短数据字中的每一个短数据字。
4.根据权利要求3所述的方法,还包括:
由所述处理器向所述存储器模块发送标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符,以使所述存储器模块从所述存储器子模块内的所标识的位置检索所述短数据字。
5.根据权利要求1所述的方法,所述方法还包括:
由所述处理器配置与所述存储器子模块中的每一个存储器子模块相关联的至少一个寄存器,以存储能够由所述处理器访问的待合并成所述多播合并块数据的所述短数据字。
6.根据权利要求1所述的方法,所述方法还包括:
由所述处理器生成待传输到所述存储器模块的所述多播合并块数据;以及
由所述处理器向所述存储器模块发送合并的存储命令以使所述存储器模块执行多播存储器提取操作,以从所述多播合并块数据提取所述短数据字,将所述短数据字分发到所述存储器子模块,并且将所述短数据字存储在所述存储器子模块内。
7.根据权利要求6所述的方法,还包括:
由所述处理器向所述存储器模块发送标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符,以使所述存储器模块将所述短数据字存储在所述存储器子模块内的所标识的位置处。
8.根据权利要求1所述的处理器,还包括:
由所述处理器生成待传输到所述存储器模块的所述多播合并块数据;以及
由所述处理器配置与所述存储器子模块相关联的至少一个寄存器,以使所述存储器模块从所述多播合并块数据提取所述短数据字并且将所述短数据字存储在所述至少一个寄存器中。
9.根据权利要求1所述的处理器,还包括:
由所述处理器生成待传输到所述存储器模块的所述多播合并块数据;以及
由所述处理器配置所述存储器模块,以使所述存储器模块基于由所述处理器提供的所述多播合并块数据或存储在所述存储器模块中的信息来确定标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符。
10.一种处理器,包括:
存储器接口,所述存储器接口被配置为经由存储器通道与存储器模块通信;以及
多播合并逻辑,所述多播合并逻辑被配置为:
通过以下方式经由所述存储器通道在所述处理器和所述存储器模块之间执行数据传输:在所述传输之前使多个短数据字合并成包括单个数据块的多播合并块数据,其中所述多个短数据字中的每一个短数据字属于至少两个分区存储器子模块中的一个分区存储器子模块,以及
通过所述存储器通道传送所述多播合并块数据。
11.根据权利要求10所述的处理器,所述多播合并逻辑被进一步配置为:
配置与所述存储器子模块相关联的存储器控制器,以使所述存储器控制器检测在促进所述多播合并块数据的所述传输的第一模式与促进所述处理器和所述存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换的条件,所述条件指示短数据字传输。
12.根据权利要求10所述的处理器,所述多播合并逻辑被进一步配置为:
向所述存储器模块发送合并的加载命令,以使所述存储器模块从所述存储器子模块检索所述短数据字并且执行多播存储器合并操作以将所述短数据字合并成所述多播合并块数据;以及
响应于接收到所述多播合并块数据,从所述多播合并块数据提取所述短数据字中的每一个短数据字。
13.根据权利要求12所述的处理器,所述多播合并逻辑被进一步配置为:
向所述存储器模块发送标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符,以使所述存储器模块从所述存储器子模块内的所标识的位置检索所述短数据字。
14.根据权利要求10所述的处理器,所述多播合并逻辑被进一步配置为:
配置与所述存储器子模块相关联的至少一个寄存器以使所述存储器模块从所述存储器子模块读取所述短数据字,并且执行多播存储器合并操作以将来自所述寄存器的所述短数据字合并成所述多播合并块数据。
15.根据权利要求10所述的处理器,所述多播合并逻辑被进一步配置为:
生成待传输到所述存储器模块的所述多播合并块数据;以及
向所述存储器模块发送合并的存储命令以使所述存储器模块执行多播存储器提取操作,以从所述多播合并块数据提取所述短数据字,将所述短数据字分发到所述存储器子模块,并且将所述短数据字存储在所述存储器子模块内。
16.根据权利要求15所述的处理器,所述多播合并逻辑被进一步配置为:
向所述存储器模块发送标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符,以使所述存储器模块将所述短数据字存储在所述存储器子模块内的所标识的位置处。
17.根据权利要求10所述的处理器,所述多播合并逻辑被进一步配置为:
生成待传输到所述存储器模块的所述多播合并块数据;以及
配置与所述存储器子模块相关联的至少一个寄存器,以使所述存储器模块从所述多播合并块数据提取所述短数据字并且将所述短数据字存储在所述寄存器中。
18.一种存储器模块,包括:
处理器接口,所述处理器接口被配置为经由存储器通道与处理器通信;
多个分区存储器子模块;以及
多播合并逻辑,所述多播合并逻辑被配置为:
通过以下方式经由所述存储器通道在所述处理器和所述存储器模块之间执行数据传输:在所述传输之前使多个短数据字合并成包括单个数据块的合并块数据,所述多个短数据字中的每一个短数据字属于所述存储器子模块中的一个存储器子模块,以及
通过所述存储器通道传送所述多播合并块数据。
19.根据权利要求18所述的存储器模块,还包括:
模式选择部件,所述模式选择部件被配置为在促进所述多播合并数据的所述传输的第一模式与促进所述处理器和所述存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换。
20.根据权利要求19所述的存储器模块,还包括:
存储器控制器,所述存储器控制器与所述存储器子模块相关联,所述存储器控制器被配置为检测指示短数据字传输的条件,以在所述第一模式和所述第二模式之间切换。
21.根据权利要求18所述的存储器模块,还包括:
至少一个近存储器或存储器内处理器,所述至少一个近存储器或存储器内处理器被配置为基于由所述处理器提供的所述多播合并块数据或存储在所述存储器模块中的信息来确定标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符。
22.根据权利要求18所述的存储器模块,所述多播合并逻辑还包括:
多个移位器逻辑部件,所述多个移位器逻辑部件与所述存储器子模块耦合,所述移位器逻辑部件中的每一个移位器逻辑部件被配置为基于所述存储器子模块的地址偏移量来移位所述短数据字的位置,其中来自所述移位器逻辑部件的所述短数据字被级联以形成所述多播合并块数据。
23.根据权利要求22所述的存储器模块,所述多播合并逻辑被配置为:
响应于从所述处理器接收合并的加载命令,从所述存储器子模块检索所述短数据字,并且通过使用移位器-选择器逻辑部件移位所述短数据字的所述位置并且将所述短数据字合并成所述多播合并块数据来执行多播存储器合并操作。
24.根据权利要求23所述的存储器模块,所述多播合并逻辑被配置为:
从所述处理器接收标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符,使得从所述存储器子模块内的所标识的位置检索所述短数据字。
25.根据权利要求18所述的存储器模块,所述多播合并逻辑还包括:
多个选择器逻辑部件,所述选择器逻辑部件中的每一个选择器逻辑部件被配置为基于所述存储器子模块的所述地址偏移量从自所述存储器子模块中的一个存储器子模块检索的数据的一部分中选择所述短数据字,其中来自所述选择器逻辑部件的所述短数据字被级联以形成所述多播合并块数据。
26.根据权利要求18所述的存储器模块,还包括:
与所述存储器子模块相关联的至少一个寄存器,所述寄存器被配置为存储与对应的存储器子模块相关联的所述短数据字,直到执行多播存储器合并操作以将来自所述寄存器的所述短数据字合并成所述多播合并块数据。
27.根据权利要求18所述的存储器模块,所述多播合并逻辑还包括:
与所述存储器子模块耦合的多个子集分发逻辑部件,所述子集驱动器逻辑部件中的每一个子集驱动器逻辑部件被配置为从所述多播合并块数据提取所述短数据字中的一个短数据字并且将所提取的短数据字分发到所述存储器子模块中的一个存储器子模块。
28.根据权利要求27所述的存储器模块,所述多播合并逻辑被配置为:
响应于从所述处理器接收到合并的存储命令,执行多播存储器提取操作,以将由所述子集分发逻辑部件分发到所述存储器子模块的所述短数据字存储在所述存储器子模块内。
29.根据权利要求28所述的存储器模块,所述多播合并逻辑被进一步配置为:
从所述处理器接收标识所述存储器子模块内与所述短数据字相关联的多个位置的一个或多个位置标识符,使得所述短数据字被存储在所述存储器子模块内的所标识的位置处。
30.根据权利要求18所述的存储器模块,还包括:
与所述存储器子模块相关联的至少一个寄存器,所述寄存器被配置为存储从接收自所述处理器的所述多播合并块数据提取的所述短数据字,
所述多播合并逻辑被配置为执行多播存储器提取操作,以从所述寄存器提取所述短数据字并且将其分发到所述存储器子模块,并且将所述短数据字存储在所述存储器子模块内。
31.一种用于控制数字数据传输的系统,包括:
处理器;
存储器模块,所述存储器模块包括多个分区存储器子模块;
存储器通道,所述存储器通道被配置在所述处理器和所述存储器模块之间;以及
多播合并逻辑,所述多播合并逻辑被配置为:
通过以下方式经由所述存储器通道在所述处理器和所述存储器模块之间执行数据传输:在所述传输之前使多个短数据字合并成包括单个数据块的多播合并块数据,其中所述多个短数据字中的每一个短数据字属于所述存储器子模块中的一个存储器子模块,以及
通过所述存储器通道传送所述多播合并块数据。
32.根据权利要求31所述的系统,还包括:
模式选择部件,所述模式选择部件被配置为在促进所述多播合并数据的所述传输的第一模式与促进所述处理器和所述存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换;以及
存储器控制器,所述存储器控制器与所述存储器子模块相关联,所述存储器控制器被配置为检测指示短数据字传输的条件并且基于所检测到的条件来控制所述模式选择部件在所述第一模式和所述第二模式之间切换。
CN202280025718.9A 2021-03-31 2022-03-23 用于通过存储器接口的合并多播数据传输的系统和方法 Pending CN117099086A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,700 2021-03-31
US17/218,700 US11803311B2 (en) 2021-03-31 2021-03-31 System and method for coalesced multicast data transfers over memory interfaces
PCT/US2022/021529 WO2022212145A1 (en) 2021-03-31 2022-03-23 System and method for coalesced multicast data transfers over memory interfaces

Publications (1)

Publication Number Publication Date
CN117099086A true CN117099086A (zh) 2023-11-21

Family

ID=81308359

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280025718.9A Pending CN117099086A (zh) 2021-03-31 2022-03-23 用于通过存储器接口的合并多播数据传输的系统和方法

Country Status (6)

Country Link
US (2) US11803311B2 (zh)
EP (1) EP4315078A1 (zh)
JP (1) JP2024512086A (zh)
KR (1) KR20230162012A (zh)
CN (1) CN117099086A (zh)
WO (1) WO2022212145A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230195317A1 (en) * 2021-12-21 2023-06-22 Micron Technology, Inc. I/o expanders for supporting peak power management

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549014B1 (en) * 2005-04-22 2009-06-16 Network Appliance, Inc. Method and apparatus for coalesced multi-block read
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US9137780B1 (en) * 2010-07-29 2015-09-15 Crimson Corporation Synchronizing multicast data distribution on a computing device
US8601214B1 (en) * 2011-01-06 2013-12-03 Netapp, Inc. System and method for write-back cache in sparse volumes
US8839057B2 (en) 2011-02-03 2014-09-16 Arm Limited Integrated circuit and method for testing memory on the integrated circuit
WO2014120193A1 (en) 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L. P. Non-volatile multi-level-cell memory with decoupled bits for higher performance and energy efficiency
US20150363312A1 (en) * 2014-06-12 2015-12-17 Samsung Electronics Co., Ltd. Electronic system with memory control mechanism and method of operation thereof
US10742703B2 (en) * 2015-03-20 2020-08-11 Comcast Cable Communications, Llc Data publication and distribution
US10866897B2 (en) 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
EP3367251B1 (en) * 2016-12-29 2023-06-21 Huawei Technologies Co., Ltd. Storage system and solid state hard disk
US11119920B2 (en) * 2018-04-19 2021-09-14 Eta Scale Ab Systems and methods for non-speculative store coalescing and generating atomic write sets using address subsets
US10938709B2 (en) * 2018-12-18 2021-03-02 Advanced Micro Devices, Inc. Mechanism for dynamic latency-bandwidth trade-off for efficient broadcasts/multicasts
US11237905B2 (en) * 2019-05-24 2022-02-01 Texas Instruments Incorporated Pipelined read-modify-write operations in cache memory
US11636040B2 (en) * 2019-05-24 2023-04-25 Texas Instruments Incorporated Methods and apparatus for inflight data forwarding and invalidation of pending writes in store queue
US10970808B2 (en) * 2019-06-24 2021-04-06 Intel Corporation Shared local memory read merge and multicast return
US11681465B2 (en) * 2020-06-12 2023-06-20 Advanced Micro Devices, Inc. Dynamic multi-bank memory command coalescing

Also Published As

Publication number Publication date
KR20230162012A (ko) 2023-11-28
EP4315078A1 (en) 2024-02-07
US20220317876A1 (en) 2022-10-06
WO2022212145A1 (en) 2022-10-06
JP2024512086A (ja) 2024-03-18
US20240045606A1 (en) 2024-02-08
US11803311B2 (en) 2023-10-31

Similar Documents

Publication Publication Date Title
CN108604169B (zh) 用于经分割并行数据移动的设备和方法
US4493026A (en) Set associative sector cache
US6427188B1 (en) Method and system for early tag accesses for lower-level caches in parallel with first-level cache
JP3425158B2 (ja) マルチバッファデータキャッシュを具えているコンピュータシステム
WO2018156410A1 (en) Apparatuses and methods for in-memory operations
US9612975B2 (en) Page cache device and method for efficient mapping
WO2015066489A2 (en) Efficient implementations for mapreduce systems
US11093410B2 (en) Cache management method, storage system and computer program product
US10452598B2 (en) Apparatuses and methods for an operating system cache in a solid state device
CN112506823B (zh) 一种fpga数据读写方法、装置、设备及可读存储介质
US20240045606A1 (en) System and method for coalesced multicast data transfers over memory interfaces
CN115080455B (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
KR20230028145A (ko) 상호 연결된 장치들 간의 데이터 전송을 위한 시스템, 방법 및 장치
KR20120097878A (ko) 다중 포트 캐시 메모리 장치 및 그 구동 방법
US10915470B2 (en) Memory system
US10140057B2 (en) Apparatuses and methods for multiple address registers for a solid state device
CN101221539B (zh) 提高缓存性能的方法及缓存系统
US10579519B2 (en) Interleaved access of memory
CN103295627A (zh) 相变存储器、数据并行写入方法及数据读取方法
CN111949567A (zh) 存储器侧事务背景存储器接口系统及方法
CN115328821B (zh) 基于GPU的可重构Cache系统、访存系统及访存方法
CN103064638A (zh) 一种处理数据的方法、装置及系统
CN116775560B (zh) 写分配方法、缓存系统、片上系统、电子组件及电子设备
US10216454B1 (en) Method and apparatus of performing a memory operation in a hierarchical memory assembly
US11847074B2 (en) Input/output device operational modes for a system with memory pools

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