用于通过存储器接口的合并多播数据传输的系统和方法与流程-尊龙凯时官方app下载

文档序号:36175650发布日期:2023-11-25 01:35阅读:85来源:国知局
用于通过存储器接口的合并多播数据传输的系统和方法与流程
用于通过存储器接口的合并多播数据传输的系统和方法


背景技术:

1.高速缓存存储器通常被组织成高速缓存行,在其中存储从主存储器读取的信息或待写入主存储器的信息

在利用高速缓存存储器中的信息时,无论是从高速缓存存储器读取
(
或加载
)
数据还是将数据写入
(
或存储
)
到主存储器,存储器接口都被设计成一次读取或写入信息的整个高速缓存行,即使仅需要信息的整个高速缓存行的一部分或仅需要在主存储器中更新信息的整个高速缓存行的一部分

因此,当执行窄数据字访问时,通常存在相比于将所请求的信息读取到高速缓存或将信息写入主存储器所需要的更多的存储器事务

过量的存储器事务不仅因为增加开销而消耗功率,而且还降低性能并且导致存储器的降级

2.一些常规的存储器模块通常使用
64
字节的高速缓存行大小,使得至存储器和
/
或从存储器的每一次数据传输以存储器总线上的高速缓存行大小的突发的形式发生

图1中示出了简化的示例,该示例是实施从单个存储器组的广泛访问的现有系统的逻辑表示

通常,存储器模块
100
具有主机接口
102
,该主机接口经由特定宽度
(
在这种情况下为
256
位或
32
字节
)
的存储器总线或存储器通道
108
与主机处理器
104(
也称为协调在存储器模块
100
的加载和存储操作中执行的计算的主处理器
)
的存储器接口
106
耦合

因此,在一些示例中,存储器模块
100
可以仅支持用于任何加载或存储操作的单个粗粒度访问
(
即,
32
字节
)。
存储器模块
100
包括多个存储器组或子模块
112、114、116

118(
在该示例中具有
16
个子模块
)
,每个存储器组或子模块经由另一存储器通道
110(
在该示例中具有
256
位的通道宽度
)
与主机接口
102
可操作地耦合

每个存储器子模块可包括:存储器地址寄存器
(mar)
,用于存储由加载或存储操作访问的存储器位置的地址;以及存储器数据寄存器
(mdr)
,用于存储正在被执行操作的数据

为了简单起见,此类寄存器未在图中示出

3.当需要从某些存储器子模块加载存储器数据或将数据存储到存储器子模块中时,主机处理器
104
发出加载或存储请求

当在主机处理器
104
和存储器模块
100
之间存在数据传输时,诸如主机处理器
104
请求将来自指定子模块
(
在该示例中为子模块
114)
的某些数据位发送到主机处理器
104
时,执行广泛的访问并且将包括所请求数据位的连续数据的整个高速缓存行从单个指定子模块传输到主机接口
102。
对于稀疏地
(
例如,以
16
位粒度
)
访问数据的工作负载,这可导致大量的带宽浪费,因为每当跨存储器接口传输数据时,仅访问其中的一小部分

4.一些常规的计算系统使用软件来静态地标识高速缓存重用可能性较低的此类短访问,以试图解决子高速缓存行存储器访问的低效率问题

这些方法中的一些方法涉及子分级,即,将双列直插式存储器模块
(dimm)

ram
棒的多个存储器芯片分组为子集,以允许每个子集提供小于原始传输的大小的数据块

然而,子分级需要针对每个子分级的单独的命令,因此由于对共享命令总线的较高需求而导致性能降低,或者由于每个子分级需要专用命令路径而导致硬件成本增加

当每个数据访问由单个存储器模块提供时,子分级也是不切实际的

一些方法涉及降低
dram
组的高度和
/
或宽度,但此类方法涉及改变核心
dram
阵列设计,开销很高

5.其他方法涉及矩阵-向量乘法

稀疏矩阵代数

图形分析和稀疏机器学习,这些方
法都属于软件可以经常预测高速缓存重用或者不需要此操作的领域

然而,现代存储器系统仍无法利用此类信息来优化存储器带宽利用,因此在存储器效率和针对稀疏工作负载的有效带宽方面仍然存在改进空间

6.因此,在存储器模块和主机处理器之间具有改进的数据传输以便允许从存储器子模块传输较小的数据宽度而不执行过量的存储器事务将是非常有利的

附图说明
7.当结合以下附图时,鉴于以下描述,将更容易理解具体实施,其中相同的附图标记表示相同的元件,并且附图中:
8.图1是示出系统的存储器模块和主机处理器的一个示例的现有技术框图,其中在主机处理器发出加载或存储请求时在存储器模块和主机处理器之间传输连续数据的整个高速缓存行;
9.图2是示出根据本公开中阐述的实施方案的被配置为执行多播存储器合并操作的系统的存储器模块和主机处理器的一个示例的框图;
10.图3是示出作为由图2中所示的系统执行的多播存储器合并操作的结果而形成的多播合并块数据的一个示例的框图;
11.图4是示出根据图2的系统的一个示例的图,该系统具有与主机处理器耦合的多个存储器模块;
12.图5是示出根据本公开中阐述的一个示例的用于执行多播存储器合并操作的方法的一个示例的流程图;
13.图6是示出根据本公开中阐述的一个示出的用于在促进多播存储器合并操作和促进连续块数据传输之间切换的方法的一个示例的流程图;
14.图7是示出根据本公开中阐述的一个示例的从存储器子模块加载数据的方法的一个示例的流程图;
15.图8是示出根据本公开中阐述的一个示例的在存储器子模块中存储数据的方法的一个示例的流程图;
16.图9是示出根据本公开中阐述的一个示例的系统的一个示例的图;
17.图
10
是示出根据本公开中阐述的一个示例的存储器模块的一个示例的图;
18.图
11
是示出根据本公开中阐述的一个示例的系统的一个示例的图;
19.图
12
是示出根据本公开中阐述的一个示例的系统的一个示例的图;
20.图
13
是示出根据本公开中阐述的一个示例的系统的一个示例的图;并且
21.图
14
是示出根据本公开中阐述的一个示例的系统的一个示例的图

具体实施方式
22.简而言之,系统和方法通过合并或聚合来自多个不同存储器子模块的短数据字并且在单个块数据传输中同时通过存储器通道传输或传送合并数据
(
本文中称为多播合并块数据
)
来帮助减少数据传输开销并且促进细粒度数据传输

在一些具体实施中,在单个块数据传输内在唯一位置处,将短数据字从分区存储器子模块的集合中的每一个分区存储器子模块返回或加载到主机处理器

在一些具体实施中,在单个块数据传输内在唯一位置处,将
短数据字从主机处理器写入或存储到分区存储器子模块的集合中的每一个分区存储器子模块中

在一些示出中,存储器子模块具有与其相关联的寄存器,其中寄存器存储来自对应的子模块的短数据字直到执行多播存储器合并操作,或者存储从接收自处理器的多播合并块数据提取的短数据字

在一些示例中,寄存器可被实施为近存储器
(near-memory)
或存储器内
(in-memory)
处理技术的一部分

23.根据某些具体实施,一种用于控制经由存储器模块和处理器之间的存储器通道的数字数据传输的方法,该方法由存储器模块或处理器中的至少一者执行,将多个短数据字合并成包括用于经由存储器通道传输的单个数据块的多播合并块数据

多个短数据字中的每一个短数据字属于存储器模块中的至少两个分区存储器子模块中的一个分区存储器子模块

多播合并块数据通过存储器通道传送

24.在一些示例中,该方法包括处理器检测指示短数据字合并的可能性的条件,并且响应于所检测到的条件而在促进多播合并块数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换

25.在一些示例中,该方法包括:处理器向存储器模块发送合并的加载命令,以使存储器模块从存储器子模块检索短数据字并且执行多播存储器合并操作以将短数据字合并成多播合并块数据;以及响应于接收到多播合并块数据,从多播合并块数据提取短数据字中的每一个短数据字

在某些示例中,该方法包括处理器向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块从存储器子模块内的所标识的位置检索短数据字

在一些示例中,该方法包括处理器发送一个位置标识符,使得存储器模块从多个存储器子模块内的相同位置
(
例如,地址偏移量或近内存寄存器
id)
检索短数据字,并且将所检索到的短数据字合并成单个数据块作为多播合并块数据

在一些示出中,多个位置与多个位置标识符相关联或由多个位置标识符标识

26.在一些实施方案中,该方法包括处理器配置与存储器子模块中的每一个存储器子模块相关联的至少一个寄存器以存储可由处理器访问的将合并成多播合并块数据的短数据字

在一些示出中,该方法包括处理器生成待传输到存储器模块的多播合并块数据并且将合并的存储命令发送到存储器模块

合并的存储命令使存储器模块执行多播存储器提取操作以从多播合并块数据提取短数据字,将短数据字分发到存储器子模块,以及将短数据字存储在存储器子模块内

在某些示例中,该方法包括处理器向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块将短数据字存储在存储器子模块内的所标识的位置处

在另一示例中,该方法包括处理器发送一个位置标识符,使得存储器模块将合并数据块中的短数据字存储到多个存储器子模块内的相同位置
(
地址偏移量或近存储器寄存器
id)。
27.在一些示例中,该方法包括处理器生成待传输到存储器模块的多播合并块数据并且配置与存储器子模块相关联的至少一个寄存器,以使存储器模块从多播合并块数据提取短数据字并且将短数据字存储在至少一个寄存器中

在一些示例中,该方法包括处理器生成待传输到存储器模块的多播合并块数据,以及将存储器模块配置为使存储器模块基于由处理器提供的多播合并块数据或存储在存储器模块中的信息来确定标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符

28.根据某些具体实施,处理器包括经由存储器通道和多播合并逻辑与存储器模块通
信的存储器接口

多播合并逻辑通过使多个短数据字在传输之前合并成包括单个数据块的多播合并块数据,并且通过存储器通道传送多播合并块数据,经由存储器通道执行处理器和存储器模块之间的数据传输

多个短数据字中的每一个短数据字属于至少两个分区存储器子模块中的一个分区存储器子模块

29.在一些示出中,多播合并逻辑配置与存储器子模块相关联的存储器控制器,以使存储器控制器检测在促进多播合并块数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换的条件,该条件指示短数据字合并的可能性

30.在一些示例中,多播合并逻辑向存储器模块发送合并的加载命令,以使存储器模块从存储器子模块检索短数据字并且执行多播存储器合并操作以将短数据字合并成多播合并块数据;以及响应于接收到多播合并块数据,从多播合并块数据提取短数据字中的每一个短数据字

在某些示例中,多播合并逻辑还向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块从存储器子模块内的所标识的位置检索短数据字

31.在一些示出中,多播合并逻辑配置与存储器子模块相关联的至少一个寄存器以使存储器模块从存储器子模块读取短数据字并且执行多播存储器合并操作,以将来自寄存器的短数据字合并成多播合并块数据

在一些示例中,寄存器可以为每子模块近存储器寄存器或每子模块存储器内寄存器,并且在执行多播存储器合并操作时,检索来自先前的存储器内或近存储器操作的存储在寄存器中的短数据字并且将其合并成单个数据块

32.在一些示例中,多播合并逻辑生成待传输到存储器模块的多播合并块数据,并且向存储器模块发送合并的存储命令以使存储器模块执行多播存储器提取操作,以从多播合并块数据提取短数据字,将短数据字分发到存储器子模块,以及将短数据字存储在存储器子模块内

在某些示例中,多播合并逻辑还向存储器模块发送标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,以使存储器模块将短数据字存储在存储器子模块内的所标识的位置处

33.在一些示例中,多播合并逻辑生成待传输到存储器模块的多播合并块数据并且配置与存储器子模块相关联的至少一个寄存器,以使存储器模块从多播合并块数据提取短数据字并且将短数据字存储在寄存器中

寄存器可以是每子模块近存储器寄存器或每子模块存储器内寄存器

34.根据某些具体实施,存储器模块包括经由存储器通道与处理器通信的处理器接口

多个分区存储器子模块,以及多播合并逻辑

多播合并逻辑通过使多个短数据字在传输之前合并成包括单个数据块的合并块数据,并且通过存储器通道传送多播合并块数据,经由存储器通道执行处理器和存储器模块之间的数据传输

多个短数据字中的每一个短数据字属于存储器子模块中的一个存储器子模块

35.在一些示例中,存储器模块包括模式选择部件,包括但不限于三态门或复用器,该模式选择部件在促进多播合并数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换

在某些示例中,存储器模块还包括与存储器子模块相关联的存储器控制器,该存储器控制器检测指示短数据字合并的条件以在第一模式和第二模式之间切换

36.在一些示例中,存储器模块包括至少一个近存储器或存储器内处理逻辑,该至少一个近存储器或存储器内处理逻辑基于由处理器提供的多播合并块数据或存储在存储器模块中的信息来确定标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符

37.在一些示例中,存储器模块的多播合并逻辑包括与存储器子模块耦合的多个移位器逻辑部件

移位器逻辑部件中的每一个移位器逻辑部件基于存储器子模块的地址偏移量来移位短数据字的位置

来自移位器逻辑部件的短数据字被级联以形成多播合并块数据

在某些示例中,多播合并逻辑响应于从处理器接收合并的加载命令,从存储器子模块检索短数据字,并且通过使用移位器逻辑部件移位短数据字的位置并且将短数据字合并成多播合并块数据来执行多播存储器合并操作

在某些示例中,多播合并逻辑从处理器接收标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,使得从存储器子模块内的所标识的位置检索短数据字

38.在一些示例中,多播合并逻辑还包括多个选择器逻辑部件

选择器逻辑部件中的每一个选择器逻辑部件基于来自存储器子模块的地址偏移量从自存储器子模块中的一个存储器子模块检索的数据的一部分中选择短数据字

来自选择器逻辑部件的短数据字被级联以形成多播合并块数据

39.在一些示例中,存储器模块包括与存储器子模块相关联的至少一个寄存器

寄存器存储与对应的存储器子模块相关联的短数据字,直到执行多播存储器合并操作以将来自寄存器的短数据字合并成多播合并块数据

在一些示例中,短数据字中的每一个短数据字可先前已经从对应的存储器子模块加载,或者可已经由存储器内或近存储器处理逻辑基于存储在子模块中的数据计算

40.在一些示例中,存储器模块的多播合并逻辑包括与存储器子模块耦合的多个子集分发逻辑部件

子集驱动器逻辑部件中的每一个子集驱动器逻辑部件从多播合并块数据中提取短数据字中的一个短数据字,并且将所提取的短数据字分发到存储器子模块中的一个存储器子模块

在某些示例中,存储器模块的多播合并逻辑响应于从处理器接收到合并的存储命令而执行多播存储器提取操作,以将由子集分发逻辑部件分发到存储器子模块的短数据字存储在存储器子模块内

在某些示例中,多播合并逻辑还从处理器接收标识存储器子模块内与短数据字相关联的多个位置的一个或多个位置标识符,使得短数据字被存储在存储器子模块内的所标识的位置处

41.在一些示例中,存储器模块包括与存储器子模块相关联的至少一个寄存器

寄存器存储从接收自处理器的多播合并块数据提取的短数据字

在一些示例中,后续存储器命令可以使用寄存器中的短数据字和
/
或相关联的存储器子模块中的短数据字来执行存储器操作

在一些示例中,多播合并逻辑执行多播存储器提取操作以从寄存器提取短数据字并且将其分发到存储器子模块,并且将短数据字存储在存储器子模块内

42.根据一些具体实施,一种用于控制数字数据传输的系统包括处理器

包括多个分区存储器子模块的存储器模块

处理器和存储器模块之间的存储器通道,以及多播合并逻辑

多播合并逻辑通过使多个短数据字在传输之前合并成包括单个数据块的多播合并块数据,并且通过存储器通道传送多播合并块数据,经由存储器通道执行处理器和存储器模块之间的数据传输

多个短数据字中的每一个短数据字属于存储器子模块中的一个存储器子
模块

在某些示例中,系统还包括模式选择部件和与存储器子模块相关联的存储器控制器,该模式选择部件在促进多播合并数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换

存储器控制器检测指示短数据字合并的可能性的条件,并且基于所检测到的条件来控制模式选择部件在第一模式和第二模式之间切换

43.在以下描述中,阐述了许多具体细节以提供对本文呈现的方法和机制的透彻理解

然而,本领域普通技术人员应当认识到,可以在没有这些具体细节的情况下实践各种实施方案

在一些情况下,未详细示出众所周知的结构

部件

信号

计算机程序指令和技术,以避免模糊本文描述的方法

应当了解,为了简单和清楚说明,附图中所示的元件不一定按比例绘制

例如,这些元件中的一些元件的尺寸可相对于其他元件被放大

44.图2示出了系统

或更具体地计算系统
(
诸如硬件服务器

智能电话

可穿戴设备

打印机

膝上型电脑

台式机或利用存储器模块
100
和主机处理器
104
之间的数据传输的任何其他合适的计算设备的一部分
)
的一个示例的逻辑表示

为了简单起见,示出了单个存储器模块和单个存储器通道,但应当理解,本公开也适用于具有多个存储器模块和通道的系统

在该示例中,存储器模块
100
可以为主机处理器
104
的主存储器,该主机处理器可以为中央处理单元
(cpu)、
图形处理单元
(gpu)、
加速处理单元
(apu)、
专用集成电路
(asic)
,或执行计算并且向存储器模块
100
发出存储器请求的任何其他合适的集成电路

高速缓存存储装置还可存在于主机处理器

存储器模块或两者上

应当理解,任何数量的存储器模块可以与主机处理器
104
耦合,如图4所示,并且系统还可以实施可操作地耦合在一起的多个主机处理器
104。
45.存储器子模块在本文中也可以被称为存储器组

存储器子模块
112、114、116

118
是不同的,并且经由用于短数据字传输的多个存储器通道或数据链路
200、202、204

206
与主机接口
102
可操作地耦合

在存在
16
个子模块的示例中,可存在
16
个短数据字链路,其中每个短数据字链路促进例如
16
位的短数据字传输,并且每个存储器链路独立于其他链路进行操作

链路可各自占据共享存储器通道,诸如共享存储器数据总线
207
的子部分

数据链路
200、202、204

206
具有比存储器通道
108
小的通道宽度,使得所有数据链路
200、202、204

206
的总组合宽度等于存储器通道
108
的宽度

46.在所示出的示例中,存储器模块
100
包括
16
个短字链接,每个短字链接具有
16
位的宽度,总共
256
位,这等于存储器通道
108
的宽度

应当理解,可存在其他链路来将存储器子模块与主机接口
102
耦合

例如,每个子模块还可经由如图1中所示的存储器通道
110
与主机接口
102
可操作地耦合,在这种情况下,具有比数据链路
200、202、204

206
中的任一者大的通道宽度的存储器通道
110
用于连续块数据传输而不是多播合并块数据传输,本文中进一步公开了相关细节

47.如本文所公开的系统和方法是在存储器子模块共享对存储器通道的访问以从主机处理器接收广播指令流的上下文中描述的

然而,对于本领域的技术人员而言应当显而易见的是,如本文所公开的技术还可以扩展到接收广播指令的其他形式的存储器子模块分组

48.图3示出了将经由存储器通道
110
在存储器模块
100
和主机处理器
104
之间传输的多播合并块数据
300
的一个示例

块数据
300
包括数据段
302、304、306

310
,使得每个数据
段属于单独的存储器子模块或与单独的存储器子模块相关联

即,在加载命令的情况下,每个数据段是从存储器子模块中的一个存储器子模块以一对一相关的方式检索的短数据字,即,每个存储器子模块可以向块数据
300
贡献不超过一个短数据字

在存储命令的情况下,每个数据段是将以一对一相关的方式存储在存储器子模块中的一个存储器子模块内的位置中的短数据字,即,每个存储器子模块可以从将存储在其中的块数据
300
接收不多于一个短数据字

每个短数据字可具有任何合适的字大小,例如8位
、16

、32

、64
位等,这小于通道宽度和高速缓存行宽度,具体取决于存储器模块中的存储器子模块的数量

49.在图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
也被称为多播合并块数据,并且当经由存储器通道发送多播合并块数据时,在单个块数据传输中同时传输单独的短数据字

50.图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
命令广播到与单个存储器通道相关联的所有存储器组

此外,本文所述的具体实施还适用于可以由以各种配置互连的多个主机处理器和存储器模块组成的其他系统配置

51.在某些实施方案中,非暂态存储介质诸如存储器包括可执行指令,这些可执行指令在由一个或多个处理器,诸如主机处理器
104
或具有数据处理能力的存储器模块
100
执行时,使一个或多个处理器执行如图5至图8所公开的用于控制经由存储器通道的数字数据传输的方法

52.图5示出了执行合并块数据传输的方法
500
,如由主机处理器
104
执行的,或者由存储器模块
100
执行的,该存储器模块具有带有由
pnm
提供的内置计算能力的逻辑管芯或带有

pim
提供的内置计算能力的存储器管芯,其中每个存储器管芯具有其自身的独立计算能力

在步骤
502
中,处理器或存储器模块将多个短数据字合并成多播合并块数据

多播合并块数据包括用于经由存储器通道传输的单个数据块,其中短数据字中的每一个短数据字属于存储器模块中的至少两个分区存储器子模块中的一个分区存储器子模块

在一些示例中,短数据字与存储器子模块的子集相关联,使得短数据字从存储器子模块内的特定位置被加载或者被存储在存储器子模块内的特定位置中

在步骤
504
中,在单个数据传输中经由存储器通道传输包含多个短数据字的单个数据块

传输可以是从处理器到存储器模块或者从存储器模块到处理器

53.图6示出了在系统中的不同模式之间切换的方法
600
,其中一种模式如方法
500
中所解释的促进在处理器和存储器子模块中的至少两个存储器子模块之间的多播合并块数据的形成和传输,并且另一模式促进在处理器和单个存储器子模块之间的连续块数据传输

在步骤
602
中,处理器检测指示短数据字合并的可能性的条件

在步骤
604
中,响应于所检测到的条件,存储器模块或处理器在促进多播合并块数据的传输的第一模式与促进处理器和存储器子模块中的一个存储器子模块之间的连续块数据传输的第二模式之间切换

54.在一些具体实施中,检测条件并且发出在第一模式和第二模式之间切换的命令的过程完全在主机侧上在主机处理器的存储器接口处发生

尽管用于合并与多个存储器子模块相关联的短数据字的多播存储器合并操作可在存储器侧上在存储器模块的主机接口处发生
(
即,当由处理器发出合并的加载命令时
)
,但主机处理器负责检测条件并且向存储器模块发出多播合并请求,该多播合并请求可作为合并的加载命令的一部分发出

55.在一些具体实施中,条件由在处理器上运行的应用程序或由该应用程序发出的指令显式地触发
(
例如,

开始合并

的特殊存储器命令,或由应用程序发出的触发合并的显式合并的存储器命令
)。
在一些具体实施中,条件包括存储器接口处的稀疏存储器访问操作的指示

稀疏存储器访问被定义为在存储器子模块中的两个或更多个存储器子模块处稀疏地访问较小数量的数据位
(
例如,短数据字
)
,这与在单个存储器子模块处访问较大数量的数据位的单个连续部分
(
例如,整个高速缓存行或数据块
)
的连续存储器访问不同

例如,存储器接口可包括存储器控制器,该存储器控制器将来自处理器的存储器命令序列存储到队列中,使得对于每个存储器子模块存在单独的队列

存储器控制器可以检测每个队列前端处的命令由稀疏位或短数据字的存储器命令组成的提示或指示,并且响应于该检测,来自队列的稀疏位或短数据字被级联或合并成多播合并块数据

56.在一些具体实施中,存储器控制器可以将存储器命令序列存储到单个存储器队列中

在这种情况下,可以通过周期性地搜索队列以查找映射到不同存储器子模块的短数据字的存储器命令来检测该条件

另外或另选地,在插入对短数据字的存储器命令时可以搜索队列以查找可以与该存储器命令合并的对不同子模块中的短数据字的相同或类似类型的其他命令

可合并命令的数量阈值可被实施为触发条件

如果合并限于共享一些地址偏移量位的短数据字
(
例如,短数据字落入相同的
dram
列索引中
)
,则在搜索合并机会时还对地址位进行比较

在此类具体实施中,队列条目还可包含关于相关联的存储器命令是否以短数据字为目标的信息

关于多个短数据字是否已经合并到队列条目中的信息,以及关于作为队列条目的目标的短数据字的偏移量信息

57.图7示出了由处理器执行合并的存储器加载操作的方法
700。
在步骤
702
中,处理器
向存储器模块发送合并的加载命令

该命令使存储器模块从存储器子模块检索短数据字,并且执行多播存储器合并操作以将短数据字合并成合并块数据

在步骤
704
中,处理器确定合并的命令是否直接以存储器子模块为目标,或者命令是否以存储器内或近存储器寄存器为目标

在一些示例中,正在被合并的命令的类型指定是以存储器子模块为目标还是以存储器内寄存器或近存储器寄存器为目标

58.如果合并的命令以存储器子模块为目标,则在步骤
706
中,处理器将一个或多个位置标识符传送到存储器模块

一个或多个位置标识符标识存储器子模块内与短数据字相关联的多个位置

处理器可以使存储器模块从存储器子模块内的所标识的位置检索短数据字

短数据字在作为单个数据块经由存储器通道传输之前被合并成多播合并块数据

随后,在步骤
708
中,处理器响应于接收到多播合并块数据而从多播合并块数据提取
(
或接合并
)
短数据字中的每一个短数据字

59.如果合并的存储器命令以存储器内或近存储器的寄存器为目标,则在步骤
710
中,处理器配置与存储器子模块中的每一个存储器子模相关联的至少一个寄存器,以使存储器模块存储待合并成合并块数据的短数据字

在一些实施方案中,为每个存储器子模块实施寄存器并且可以直接访问寄存器

如果对于每个存储器子模块访问相同的寄存器和该寄存器内的相同偏移量,则根据一些示例,可能不必为短数据字中的每一个短数据字提供位置信息

在一些示例中,可以由处理器通过执行来自存储器子模块的存储器本地加载命令来提前协调将短数据字放置在寄存器中

在一些示例中,可通过使用存储器模块的近存储器或存储器内处理能力处理短数据字中的每一个短数据字
(
例如,对短数据字执行计算
)
来协调短数据字在寄存器中的放置

在步骤
712
中,在进行到步骤
708
之前,由处理器执行多播存储器合并操作以从寄存器读取短数据字并且形成多播合并块数据

60.图8示出了由处理器执行合并的存储器存储操作的方法
800。
在步骤
802
中,处理器生成待传输到存储器模块的多播合并块数据

在步骤
804
中,处理器确定合并的命令是否直接以存储器子模块为目标,或者命令是否以存储器内或近存储器的寄存器为目标

61.如果合并的存储器命令以存储器子模块为目标,则在步骤
806
中,处理器向存储器模块发送一个或多个位置标识符

位置标识符标识存储器子模块内与短数据字相关联的位置,这使存储器模块将短数据字存储在存储器子模块内的所标识的位置处

在步骤
808
中,处理器向存储器模块发送合并的存储命令

该命令使存储器模块执行多播存储器提取操作以从多播合并块数据提取短数据字,将短数据字分发到存储器子模块,并且将短数据字存储在存储器子模块内的所标识的位置处

步骤
806
和步骤
808
可以顺序地执行或同时执行

在一些示例中,位置标识符可以由存储器内或近存储器处理逻辑部件基于存储在每子模块寄存器或存储器子模块中的数据来生成或计算

62.如果合并的存储器命令以存储器内或近存储器的寄存器为目标,则处理器进行到步骤
810
以配置与存储器子模块相关联的至少一个寄存器,以使存储器模块从多播合并块数据提取短数据字并且将短数据字存储在至少一个寄存器中

例如,在短数据字被存储到存储器子模块本地的寄存器之后,存储器子模块的近存储器或存储器内计算部件可以访问寄存器以用于进一步计算和
/
或数据移动

63.在方法
700
和方法
800
中,可通过使用合并的加载
/
存储命令和
/
或数据总线中的数字位来传送位置标识符以传输每子模块位置位

另选地,位置标识符可以通过计算每子模
块的位置信息来获得,例如通过加载位置标识符和
/
或计算近存储器的位置标识符并且随后将其存储在近存储器寄存器中来获得

在一些示例中,静态的或对所有存储器子模块共同的位置信息可能不需要被单独传输

例如,可以将附加的每子模块位置位添加到共同的基地址,并且如果合并的命令以每个存储器子模块或近存储器寄存器中的相同偏移量处的短数据字为目标,则可以不提供附加的位置信息

64.如本文所公开的逻辑部件中的任一者,诸如图9至图
14
中所示的那些可被实施为离散逻辑

一个或多个状态机

现场可编程门阵列
(fpga)
,或执行指令的处理器
/
处理逻辑部件和其他硬件的任何合适的组合

根据实施方案,逻辑设备或部件包括能够执行逻辑运算的设备或部件,例如能够执行布尔逻辑运算的装置

应当认识到,示出了功能块并且可以根据需要组合或分开各种操作

还将认识到,并非在所有具体实施中都需要所有功能块

图中示出的箭头定义了在指定的加载或存储操作期间部件之间的数据传输的方向,这可以使用任何合适的数据路径来实施,诸如经由硬连线或数据通道诸如数据总线

一些具体实施还可涉及传输
/
操作的流水线化,其中在一个或多个寄存器中缓冲数据

此外,为简单起见,本文所述的实施方案涉及作为高带宽存储器
(hbm)
的存储器模块
100
,其中从单个存储器模块提供数据访问的整个高速缓存行

65.应当理解,本公开适用于其中多个存储器模块有助于单个数据访问的其他类型的存储器

在此类情况下,将多个短数据元素
(
即,短数据字
)
合并成单个数据块可在每个参与的存储器模块内发生

此外,应当理解,尽管附图是在具有
16
个存储器组或子模块以及数据宽度为
256

(
即,随着每个加载或存储操作传输到通道的数据的大小
)
的用于经由单个通道进行块数据传输的存储器通道接口的示例性系统的上下文中呈现的,但具有不同参数,诸如更多或更少的存储器子模块和
/
或更宽或更窄的存储器通道等的系统的其他具体实施也是可能的

66.图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
来传输

67.仅出于说明的目的,将接收自处理逻辑
902
或发送到该处理逻辑的短字数据可占据数据通道
934
的位0至
15
,将接收自处理逻辑
904
或发送到该处理逻辑的短字数据可占据数据通道
934
的位
16

31
,将接收自处理逻辑
906
或发送到该处理逻辑的短字数据可占据数据通道
934
的位
32

47
,等等,直到将接收自处理逻辑
908
或发送到该处理逻辑的短字数据可占据数据通道
934
的位
240

255。
在一些实施方案中,处理逻辑
902、904、906、908
可包括足够的处理能力以支持合并的加载
(cld)
和合并的存储
(cst)
操作,并且可以专用于仅支持此类操作

68.存储器模块
100
还包括模式选择器
922、
可实施为例如三态门或复用器的模式选择部件

模式选择器
922
作为促进多播合并块数据的传输的第一模式和促进连续块数据传输的第二模式之间的切换器来操作,如所解释的

模式选择器
922
可被实施为可编程逻辑设
备,使得利用控制位来激活切换

模式选择器
922
被配置为当处于第一模式时通过数据通道
934
传输数据,并且当处于第二模式时将数据传输到存储器子模块选择器
924
以及从该存储器子模块选择器传输数据

存储器子模块选择器
924
由所有存储器子模块共享,并且被配置为当模式选择器
922
在第二模式中操作时,基于所提供的存储器子模块标识符
(id)910
来选择要访问哪个子模块

根据一些实施方案,模式选择器
922
和子模块选择器
924
中的每一者可被实施为单个中心位置中的单个逻辑部件
(
如图所示
)。
另选地,在一些实施方案中,模式选择器
922
和子模块选择器
924
中的一者或两者可以分布式方式实施,使得模式选择器
922

/
或子模块选择器
924
包括多个分开运行的逻辑部件,其中至少一个逻辑部件设置在存储器子模块中的每一个存储器子模块附近,以控制存储器子模块对单个共享数据通道或数据总线的访问

在一些示例中,逻辑部件可包括但不限于复用器或三态门

69.主机处理器
104
还包括与存储器模块
100
的多播合并逻辑
900
分开的多播合并逻辑
926
,并且因此具有不同的功能性

考虑到上述部件,下文详细描述了执行多播合并块数据传输的示例

70.在
cld
操作的一些具体实施中,对于
pim
实施的系统,利用
pim
支持,为与每个存储器组或子模块相关联的
pim
单元指定
pim
寄存器标识符
。pim
单元中的每一个
pim
单元将所标识的寄存器的短数据字
(
例如,
16

)
贡献给合并的输出

在寄存器比短数据字的长度要宽的情况下,一些实施方案可以返回寄存器的低
16
位或寄存器的某一其他固定偏移量

在其他实施方案中,
cld
操作可具有允许主机上的软件指定每个
pim
单元应当返回寄存器的哪
16
位的参数

在其他实施方案中,在发出
cld
操作之前可在
pim
单元处提前对寄存器进行编程

71.在一些其他具体实施中,
cld
操作可指定每个存储器组或子模块内的存储器地址,使得每个存储器子模块读取存储在指定存储器位置处的短字数据
(
例如,
16

)
并且将其返回

在一个实施方案中,这通过每个存储器模块接收广播模块内存储器地址作为
cld
操作的一部分并且返回每个存储器子模块中的该位置处的数据来实现

在其他实施方案中,这利用了对于将附加的地址信息传送到每个存储器子模块的支持

这可以经由组本地地址生成或通过增强命令接口
(
例如,通过使用数据总线来发送命令信息
)
或另选地通过合并共享目标地址位的命令来实现

72.在
cld
操作中,响应于向存储器子模块的集合广播的命令,存储器子模块各自向请求主机返回在存储器接口的宽加载数据返回内在固定的

唯一位置处的数据组块或数据块

当每个存储器子模块返回在返回到主机的数据内在特定且唯一的位置中的数据时,所有参与的存储器子模块在单个块数据传输中通过存储器数据总线或通道返回它们的数据

73.具体地,在根据一些示例的
cld
操作期间,主机处理器
104
指定与待访问的存储器子模块
112、114、116、118
相关联的子模块专用寄存器
912、914、916、918。
存储器内或近存储器处理逻辑部件
902、904、906、908
中的每一者促成如存储在对应的寄存器中的预先确定的字长
(
例如,在例示的示例中为
16

)
的短数据字将经由数据通道
934
和数据通道
936
输出到主机接口
102。
74.在寄存器
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
之间传输块数据

75.在一些示例中,在寄存器
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
所确定的

76.响应于经由存储器通道
108
接收到多播合并块数据,主机处理器
104
经由内部数据通道
938
将块数据传输到多播合并逻辑
926
以相应地从块数据提取短数据字以进行处理

因此,多播合并逻辑
926
还能够作为提取器或去合并部件来操作,并且存储器模块
100
中的多播合并逻辑
900
还能够执行这样的操作,如本文中关于合并的存储操作进一步解释的

77.在
cst
操作的一些具体实施中,对于
pim
实施的系统,利用
pim
支持,为与每个存储器组或子模块相关联的
pim
单元指定
pim
寄存器标识符
。pim
单元中的每一个
pim
单元将从合并的输入接收的短数据字写入到所标识的寄存器

在寄存器比短数据字的长度
(
例如,
16

)
宽的情况下,一些实施方案可以对低
16
位中的数据进行存储或执行
pim
操作,并且例如经由掩蔽将剩余位归零

其他实施方案可以对
16
位短数据字进行符号扩展,并且对以指定
pim
寄存器为目标的扩展数据进行存储或执行
pim
操作

在其他实施方案中,
cst
操作可具有允许主机上的软件指定每个
pim
单元要将对应的数据写入寄存器的哪
16
位的参数

在其他实施方案中,在发出
cst
操作之前可在
pim
单元处提前对寄存器进行编程

78.在一些其他具体实施中,
cst
操作可指定每个存储器组或子模块内的存储器地址,使得每个存储器子模块将短字数据
(
例如,
16

)
写入到指定的存储器位置

在一个实施方案中,这通过每个存储器模块接收广播模块内存储器地址作为
cst
操作的一部分并且将数据存储在每个存储器子模块中的该位置处来实现

在其他实施方案中,这利用了对于将附加的地址信息传送到每个存储器子模块的支持

这可以经由组本地地址生成或通过增强命令接口
(
例如,通过使用数据总线来发送命令信息
)
或另选地通过合并共享目标地址位的命令来实现

79.具体地,在一些示例中,主机处理器
104
在与
cld
操作相反的方向上传输数据,使得多播合并逻辑
926
执行将作为单个数据块传输到存储器模块
100
的多个短数据字的合并
(
或单个写入操作
)
,在此之后,提取短数据字并且跨越存储器子模块
112、114、116、118
分发短数据字

作为例示性示例,可以如下执行数据分发:主机提供的多播合并块数据的位0至
15
的数据被发送到子模块
112
,主机提供的多播合并块数据的位
16

31
的数据被发送到子模块
114
,主机提供的多播合并块数据的位
32

47
的数据被发送到子模块
116
,等等,直到主机提供的多播合并块数据的位
240

255
的数据被发送到子模块
118。
80.在一些实施方案中,
cst
操作指定与子模块
112、114、116、118
相关联的寄存器
912、914、916、918
,并且对应的处理逻辑
902、904、906、908
将从待存储到寄存器
912、914、916、
198
中的多播合并块数据中提取的短数据字
(
例如,
16

)
写入

81.在寄存器
912、914、916、918
比短数据字的字长宽的情况下,在一些实施方案中,可以将短数据字存储在低
16

(
或者属于短数据字的长度的位的数量
)
中,同时将剩余位保持为
0。
在一些实施方案中,在存储短数据字或由处理器执行处理操作之前,对短数据字执行符号扩展操作以扩展其数据长度,其中扩展的数据以指定寄存器
912、914、916、918
为目标

在其他实施方案中,
cst
操作可具有允许主机指定存储在寄存器
912、914、916、918
中的哪些位应当由处理逻辑
902、904、906、908
写入对应的存储器子模块
112、114、116、118
中的参数

82.在
cld

cst
操作两者中,主机处理器
104
可提供关于模式选择器
922
和子模块选择器
924
的操作的指令

例如,当经由命令通道或命令总线
928
提供
cld

cst
操作时,多播合并逻辑
926
可以发起命令或指令
940
以将模式选择器
922
从促进连续块数据传输的第二模式切换到促进多播合并块数据传输的第一模式

切换到第一模式的指令可以与激活模式选择器
922
中的控制位一样简单,使得例如当控制位为1时激活第一模式,并且当控制位为0时激活第二模式

否则,如果主机处理器
104
旨在将模式选择器
922
切换回第二模式
(
例如,在完成多播合并块数据传输之后
)
,则这可以通过切换控制位来实现

83.在一些实施方案中,近存储器或存储器内处理逻辑部件
902、904、906、908
能够基于由主机处理器
104
提供的多播合并块数据或存储在存储器模块
100

(
例如,存储在寄存器
912、914、916、918

)
的信息来确定标识存储器子模块
112、114、116、118
内与短数据字相关联的特定位置的一个或多个位置标识符
(
例如,地址位,诸如存储器阵列的列索引
)。
此外,尽管图9示出了与其自身的近存储器或存储器内处理器相关联的每个存储器子模块,但在一些实施方案中,单个近存储器或存储器内处理器的处理能力可以在多个存储器子模块之间共享

84.在一些实施方案中,在两个前述模式之间切换的指令可由近存储器或存储器内处理器提供,如通过从近存储器存储装置
(
例如,从处理逻辑部件
902、904、906、908
中的任一者
)
传输合并配置位
944
所示

每当确定在合并模式与连续模式之间切换的条件时,处理器可以更新其近存储器存储值

例如,处理器可能能够检测指示多播合并块数据传输的可能性的条件,诸如本文先前所解释的那些

此外,一些具体实施还可涉及传输
/
操作的流水线化,其中在一个或多个中间缓冲寄存器中缓冲数据,例如图
11
至图
14
中所示的块数据寄存器
1102
,该块数据寄存器可被设置在模式选择器
922
和多播合并逻辑
900
之间

85.图
10
示出了可以由处理逻辑部件
902、904、906、908
用作多播合并逻辑
900
的部分的不同类型的寄存器

在一些实施方案中,可以实施偏移寄存器
1000、1002、1004、1006
以存储用于从对应的子模块加载或将被存储在对应的子模块中的短数据字的偏移量信息

例如,在
cld
操作中,偏移寄存器
1000、1002、1004、1006
可在短数据字与其他短数据字合并成多播合并块数据时存储用于短数据字的特定地址偏移量
(
诸如来自存储器子模块
112
的短数据字占据位0至
15
,来自存储器子模块
114
的短数据字占据位
16

31
,等等
)。
每个地址偏移量对于对应的存储器子模块而言是不同的且唯一的,以避免由于所占据的位的意外重叠而导致一个短数据字条目覆写另一个短数据字条目

86.此外,在
cst
操作中,地址偏移量可以帮助处理逻辑
902、904、906、908
标识从多播合并块数据的哪些位检索短数据字,以便将所检索的短数据字存储在对应的存储器子模块
112、114、116、118


在一些实施方案中,偏移寄存器
1000、1002、1004、1006
包含多个偏移
量信息,使得当处理器提供基地址时,处理逻辑
902、904、906、908
可基于所存储的偏移量信息和所提供的基地址来计算与多个存储器子模块中的每一个存储器子模块相关联的唯一位置信息

在主机处理器
104
发出
cld

cst
操作之前可以提前对存储在寄存器中的偏移值进行编程或存储

87.在一些实施方案中,合并配置寄存器
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(
或一个或多个每子模块近存储器寄存器
)
读取以获得短数据字,在这种情况下,作为先前的近存储器处理操作的结果,短数据字已经被存储在寄存器中

因此,在发出操作之前,短数据字可被提前存储在这些短数据寄存器中

88.图
11
示出了利用存储器模块
100
和主机处理器
104
之间的数据传输的计算系统的一个示例

在该示例中,主机处理器
104
提供操作模式选择器
922
的指令

短数据字中的每一个短数据字的地址偏移量,以及存储器子模块
112、114、116、118
中的每一者的位置地址

地址偏移量和位置地址作为指令命令
1100
分别从主机处理器
104
被发送到多播合并逻辑
900
和存储器子模块,该多播合并逻辑与块数据寄存器
1102
耦合以存储多播合并块数据

地址偏移量定义了短数据字的位置在多播合并操作期间移动了多少,并且位置地址定义了针对
cld

cst
操作将被访问的指定存储器子模块内的特定位置
(
例如,存储器子模块内的存储器阵列的列索引
)。
在一些示例中,可以实施近存储器整数加法器来生成存储器子模块的位置地址


12
和图
14
示出了在
cld
操作期间的图
11
所示的系统内的数据流,并且图
13
示出了在
cst
操作期间的系统内的数据流

89.图
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
中之前将短数据字移位地址偏移量

90.如果选择器逻辑
(1)
被实施,则使用预先确定的地址偏移量来选择短数据字,而不执行地址移位

如果移位器逻辑
(2)
被使用,则使用相应的偏移量将短数据字分别移位第一预先确定的数量的位,并且从第一位开始选择预先确定的数量的位以获得短数据字

使用级联逻辑
1200
来合并所存储的短数据字,该级联逻辑执行字符串级联以端到端地连接短数据字

91.尽管未示出,但移位器
/
选择器逻辑
1202、1204、1206、1208
可包括被配置为存储位置地址
(
以确定连续块数据内的哪些位或位置应被选择为短数据字
)

/
或地址偏移量值
(
以确定在合并之前将对短数据字执行的移位量
)
的寄存器

92.短数据字提取逻辑
1210
可以在主机处理器
104
中实施,以在单个块数据传输中经
由存储器通道
108
接收多播合并块数据之后从多播合并块数据提取单独的短数据字

每个移位器
/
选择器逻辑
1202、1204、1206、1208
可接收由主机处理器
104
提供的指令命令
1100
中的地址偏移量信息,其中地址偏移量信息定义来自每个存储器子模块的短数据字将在多播合并块数据中所处的位置

每个存储器子模块
112、114、116、118
可以接收指令命令
1100
中的位置地址信息,以将从中检索短数据字的位置存储在存储器地址寄存器中

93.图
13
示出了运行
cst
操作的系统的一个示例,其中主机处理器
1300
包括级联逻辑
1300
以形成包括将存储在多个存储器子模块
112、114、116、118
中的短数据字的多播合并块数据

在这种情况下,多播合并逻辑
900
经由解合并路径接收多播合并块数据,该多播合并逻辑包括子集分发逻辑
1302、1304、1306、1308
以按照主机处理器
104
所预期的那样将短数据字分发到它们相应的存储器子模块

在一些示例中,子集分发日志进一步实施从多播合并逻辑传送到存储器子模块的附加的地址偏移量位,以指示需要写入哪个或哪些短数据字,以及防止写入存储器阵列的列索引中的其他位

94.块数据寄存器
1102
存储从主机处理器
104
接收的多播合并块数据,并且所存储的数据经由数据通道
1310、1312、1314、1316
传输到每个子集分发逻辑
1302、1304、1306、1038。
每个子集分发逻辑可接收由主机处理器
104
提供的指令命令
1100
中的地址偏移量信息,其中地址偏移量信息定义了将多播合并块数据内的哪些位分发到哪个存储器子模块

在一些示例中,可以利用每个子集分发逻辑来驱动存储在块数据寄存器
1102
中的数据的子集

每个存储器子模块
112、114、116、118
可以接收指令命令
1100
中的位置地址信息,以将待存储短数据字的位置存储在存储器地址寄存器中

95.图
14
示出了运行
cld
操作的系统的一个示例,其中来自图
12
的移位器
/
选择器逻辑
1202、1204、1206、1208
被排除在多播合并逻辑
900
之外

相反,来自块数据寄存器
1102
内的对应的存储器子模块
112、114、116、118
的短数据字的地址偏移量是可提前配置的或预先确定的

即,短数据字的偏移量可以是静态偏移量,在这种情况下,与块数据寄存器
1102
内的适当位的数据连接可以是硬连线的
(
因此形成地址移位部件
)
,使得来自每个存储器子模块的短数据字的地址位被自动移位以被存储在块数据寄存器
1102
内的某些预先确定的或预先配置的位中

96.此外,级联逻辑
1200
也被排除在多播合并逻辑
900
之外

代替如图
12
那样使用级联逻辑
1200
来控制将短数据字合并成待存储在块数据寄存器
1102
中的单个数据块,通过将来自这些存储器子模块的线材直接连接到数据总线中以将短数据字的位传输到块数据寄存器
1102
,将来自存储器子模块
112、114、116、118
的经位置移位的短数据字级联在一起

97.在一些实施方案中,可以通过经由数据总线而不是命令总线传送部分命令信息来执行
cld

cst
操作

例如,在涉及如图9所示的具有
pnm

pim
能力的存储器模块
100

cld
操作中,组合的短数据字可占据多播合并块数据的一部分,使得块数据的剩余部分用于存储其他信息,诸如短数据字中的每一个短数据字的地址位

类似地,在
cst
操作中,短数据字中的每一个短数据字的地址位可以在多播合并块数据的未被待存储在存储器子模块中的短数据字占据的部分中实施

98.在某些实施方案中,非暂态存储介质诸如存储器包括可执行指令

命令或地址信息,这些在由一个或多个处理器诸如主机处理器
104

pnm/pim
设备执行时使一个或多个处理器放置短数据字,使得可经由
cld

cst
操作来协调对与每个存储器子模块内的对应的位
置相关联的短数据字的稀疏访问

这可以应用于具有确定性稀疏访问模式的情况,诸如沿多维矩阵或张量的辅助轴的访问,或者其中跨存储器子模块分离大的表条目以实现
pnm

pim
操作的高效使用,包括但不限于涉及基于机器学习的推荐系统的应用

在一些实施方案中,可经由软件具体实施来显式地执行合并,用于该软件具体实施的可执行指令被存储在非暂态存储介质中

例如,运行软件的处理器可以发送绕过高速缓存的预先合并的请求,并且该请求在存储器控制器处被处理,而不需要用于合并的任何附加的硬件

99.在一些实施方案中,可执行指令在由一个或多个处理器执行时使一个或多个处理器发送独立的细粒度稀疏访问,然后经由硬件诸如离散逻辑

状态机
、fpga
或执行指令的处理器的任何合适的组合来合并这些独立的细粒度稀疏访问

主机处理器
104
可能能够基于监测以独立且并发访问为目标的数据通道和存储器子模块来动态地检测合并机会

主机处理器或
pnm/pim
设备还可能能够归并或合并独立请求
(
即,请求访问存储器子模块的
cld

cst
命令
)
并且在
cld

cst
操作期间分离响应

100.根据一些示例,如果稀疏命令能够遍历高速缓存层级结构,则可能需要区分稀疏访问和非稀疏数据访问,诸如涉及单个存储器子模块的连续块数据访问,因为这些请求将由高速缓存控制器不同地处理

在这种情况下,例如可以通过在命令中实施附加的位或操作码来促进区分

在一些实施方案中,稀疏访问的处理方式与非稀疏数据访问不同,因为稀疏访问不访问数据的完整高速缓存行

由此,根据一些示例,稀疏访问可以简单地绕过高速缓存
(
例如,使用对未高速缓存的地址范围的现有支持
)。
另选地,根据一些示例,稀疏访问可以遍历高速缓存,但可以防止在未命中时分配或填充高速缓存块

在一些实施方案中,用扇区掩码来增强高速缓存,该扇区掩码以稀疏访问的粒度跟踪状态信息,从而允许高速缓存存储部分有效的高速缓存块

101.对于利用寄存器偏移量信息
(

pnm/pim
寄存器被实施时
)
或地址偏移量信息的多播存储器合并操作,与非稀疏访问相比,来自主机处理器的命令可能需要附加的地址信息

这可以通过将请求分离成更多的分组,使用位掩码或字节掩码来指示稀疏命令访问高速缓存行中的哪些字节,或者沿专用数据路径诸如命令总线
928
发送请求中的一些或全部来实施

102.对于其中主机处理器能够动态地检测合并机会的系统,处理器可以用用于合并和
/
或分离与稀疏存储器访问相关联的请求和响应的装置来实施

在一些实施方案中,合并操作在存储器控制器中发生,其中请求已经基于目标存储器子模块被分类到不同的队列中

如果检测到多个存储器子模块队列前端处的稀疏存储器访问,则存储器控制器将请求合并在一起并且发出包括与存储器子模块相关联的所有请求的单个
cld

cst
操作

在一些实施方案中,当稀疏存储器访问到达存储体队列的前端时,搜索其他队列中的元素
(
或其他队列中的元素的子集
)
以查找可以与原始稀疏存储器访问合并成单个存储器请求的稀疏存储器访问

在一些实施方案中,稀疏存储器访问请求被放置在单独的队列中,当达到对不同子模块的可合并的稀疏存储器访问的阈值时,或者当超过定时阈值时,稀疏存储器访问请求从单独的队列与密集存储器访问请求
(
即,访问来自单个存储器子模块的连续数据块的请求
)
交织

103.当发送对
cld

cst
操作中所涉及的请求的响应时,存储器控制器可以分离该响应并且将单独的稀疏存储器访问响应
(
可能通过高速缓存层级结构
)
返回到发出请求的处理


这可通过将所有未决稀疏存储器访问的响应元数据
(
例如,请求器
id、
稀疏地址偏移量,或访问粒度
)
存储在存储器控制器中的小结构中来实施

当从存储器模块返回稀疏存储器访问响应时,存储器控制器可基于稀疏粒度将其数据内容分离成多个响应分组,从而将所存储的元数据附加到这些分组

如果稀疏存储器访问响应通过高速缓存层级结构被返回到请求方,则在有效状态跟踪的粒度大于稀疏粒度时,高速缓存可以不为该数据分配空间

104.实施具有执行如本文所公开的多播存储器合并
/
提取操作的能力的系统的优点包括:提高了在单个加载操作中从与存储器通道相关联的
pnm/pim
设备的集合读取
/
加载元数据
(
例如,参与每个
pnm/pim
设备处的不规则计算的数据元素的数量
)
到主机处理器的效率

此外,元数据
(
例如,不同的循环迭代计数
)
可以在单个存储操作中被有效地写入
/
存储到与存储器通道相关联的
pnm/pim
设备的集合

可以在单个存储操作中从与存储器通道相关联的
pnm/pim
设备的集合中的每一个
pnm/pim
设备高效地读取或加载条件代码
(
例如,哪些
pnm/pim
设备具有满足动态计算的数据相关条件的数据
)。
105.此外,跨与存储器通道耦合的存储器组或子模块的集合分发的短数据字可以被有效地加载或存储,而不需要浪费地从存储器子模块中的每一个存储器子模块传输完整高速缓存行的数据

这提高了许多应用领域诸如科学计算
(
例如,高性能计算或
hpc)
和图形分析中的性能,并且提高了实施广泛使用的数据结构诸如哈希表和集合成员资格数据结构的性能

本文所公开的系统和方法还提供了提高近存储器或存储器内处理技术的性能的能力,近存储器或存储器内处理技术经常将短数据字传输到与存储器组或子模块相关联的多个近存储器或存储器内处理单元,或者从与存储器组或子模块相关联的多个近存储器或存储器内处理单元传输短数据字

另外,对于需要从不同的存储器子模块加载短数据字并且将它们与所提供的操作数组合的加载操作
(
例如,对于高吞吐量细粒度的原子访问
)
,可以同时向多个存储器子模块高效地提供细粒度操作数

如本文所公开的多播存储器合并操作在针对稀疏存储器访问模式
(
诸如存在于图形分析

稀疏矩阵代数

稀疏机器学习模型等中的那些
)
提高存储器模块的效率
(
例如,
dram
效率
)
方面也是有效的

106.尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用

本文在一些具体实施中描述的设备通过使用结合在非暂态计算机可读存储介质中的计算机程序

软件或固件来制造,以供通用计算机或处理器执行

计算机可读存储介质的示例包括只读存储器
(rom)、
随机存取存储器
(ram)、
寄存器

高速缓存存储器

半导体存储器设备

磁性介质
(
诸如内部硬盘和可移动磁盘
)、
磁光介质和光学介质
(
诸如
cd-rom
磁盘
)
以及数字多功能磁盘
(dvd)。
107.在前面对各种实施方案的详细描述中,已参考构成其一部分的附图,并且在附图中以示例的方式示出了可在其中实践本发明的特定优选实施方案

足够详细地描述了这些实施方案以使本领域的技术人员能够实践本发明,并且应当理解,可利用其他实施方案,并且可在不脱离本发明的范围的情况下做出逻辑

机械和电气改变

为了避免使本领域技术人员能够实践本发明所不必要的细节,该描述可省略本领域技术人员已知的某些信息

此外,本领域的技术人员可很容易构造结合本公开的教导的许多其他变化的实施方案

因此,本发明并非旨在限于本文所阐述的具体形式,相反,本发明旨在涵盖可合理地包括在本发明的范围内的此类替代方案

修改方案和等效方案

因此,前面的详细描述不应被视为限制
性的,并且本发明的范围仅由所附权利要求限定

以上对实施方案和其中描述的示例的详细描述仅出于说明和描述的目的而非限制的目的给出

例如,所描述的操作以任何合适的顺序或方式完成

因此,可以预期,本发明涵盖落入上文公开和本文要求保护的基本基础原理范围内的任何和所有修改

变化或等效物

108.如前所述,如本文所公开的系统和方法通过合并或聚合来自多个不同存储器子模块的短数据字并且在单个块数据传输中同时通过存储器通道传输或传送多播合并块数据来帮助减少数据传输开销

在单个块数据传输内在唯一位置处,将短数据字从分区存储器子模块的集合中的每一个分区存储器子模块返回或加载到主机处理器,或者在单个块数据传输内在唯一位置处,从主机处理器写入或存储到分区存储器子模块的集合中的每一个分区存储器子模块中

此外,在执行单元与存储器组相关联的一些
pim
架构中,可能有必要在
pim
单元和主
(
或主机
)
处理器之间读取或写入少量数据,例如以向主机处理器报告数据相关条件或状态,或者写入可在
pim
单元之间变化的循环迭代计数

在此类示例中,如本文所公开的系统和方法有利于减少窄数据访问的开销

109.以上详细描述和其中描述的示例仅出于说明和描述的目的而非限制的目的给出

当前第1页1  
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图