一些关于DDR-T更多的信息在论文Characterizing the Performance of Intel Optane Persistent Memory——A Close Look at its On-DIMM Buffering有被讨论。
内存条组成
搬运和修改自内存条的组成、编址、寻址和读写方式
- DIMM是英文Dual In-line Memory Module的缩写,意思是双列直插内存模块。DIMM模块有一个小的印刷电路板,上面焊接有一系列的内存芯片,并在电路板的两侧有一排金属接触针,可以直插在主板的内存插槽上。
- CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。因此,必须把多个颗粒并联起来,组成一个位宽为64bit的数据集合,才可以和CPU互连。生产商把64bit集合称为一个RANK或Physical RANK。
- Chip(Memory)存储芯片,又叫内存颗粒。真正提供存储的器件。
- Bank:Chip里包含多个Bank。一个Bank就是一个存储矩阵库。由Chip的BA线的位宽决定个数。
- Channel在计算机系统架构中指的是内存通道(Memory Channel)。内存通道的数量决定了CPU能够同时访问内存的带宽。双通道(Dual Channel)则有两个通道同时工作,可以同时读取两个内存模块的数据。
bank再往下分就是实际存储单位元的电路,一般来说横向选择排数的线路称为row(row enable, row select, word line),纵向负责传送信号的线路称为column(bitline),每组bank的下方还会有个row buffer(sense amplifer),负责将读出的row内容暂存。
物理地址要包含行地址、列地址,bank地址、rank信息等,直到定位到cell。
CXL3.0
大部分内容来自这篇文章,作者是Debendra Das Sharma博士Intel院士兼I/O技术和标准总监;Ishwar Agarwal首席硬件工程师兼微软Azure硬件架构联合主席……
Compute Express Link™是一种开放式行业标准互连协议,可在主机处理器和加速器、内存缓冲区和智能I/O设备等设备之间提供高带宽、低延迟连接。它旨在通过支持异构处理和内存系统以及人工智能、机器学习、分析、云基础设施、网络和边缘云化、通信系统和高性能计算等领域的应用来解决不断增长的高性能计算工作负载。基于PCI Express®的I/O语义之上的一致性和内存语义,可在不断发展的使用模型中优化性能。这一点变得越来越重要,因为在这些新兴应用中处理数据需要在CPU、GPU、FPGA、智能NIC和其他加速器中部署标量、矢量、矩阵和空间架构的多样化组合。
CXL1.0于2019年3月首次推出,支持一组丰富的协议之间的动态复用,包括I/O(CXL.io基于PCIe)、缓存(CXL.cache)和内存(CXL.memory)语义。CXL在主机处理器和连接的CXL设备上的任何内存之间维护统一、一致的内存空间。这允许CPU和设备共享资源并在同一内存区域上运行,以提高性能、减少数据移动并降低软件堆栈复杂性(比如GPU和CPU用内存就挺麻烦的)。
基于CXL的行业成功和接受度(180多家成员公司的积极参与证明),CXL2.0于2020年11月发布,支持更多使用模型,同时保持与CXL1.1和CXL1.0的完全向后兼容性。CXL2.0在三大方面增强了CXL1.1的体验:支持单级交换机、支持持久化内存、内存池和安全性。这些功能使平台中的许多设备能够迁移到CXL,同时保持与PCIe5.0的兼容性以及CXL的低延迟特性。
CXL3.0基于PCIe6.0技术,将传输速率提高一倍至64GT/s,且与前代产品相比没有额外的延迟。这使得3.0版本产生了更多用例:
- 内存池和共享:CXL3.0对CXL2.0中首次引入的内存池进行了重大增强。内存池能够将CXL附加内存视为可替代资源,可以根据需要灵活地分配和释放到不同的服务器(也称为节点或主机)。这使得系统设计人员无需过度配置机架中的每台服务器,同时获得最佳性能。图3显示了CXL2.0内存池的示例。在CXL3.0中,除了内存池之外,我们还引入了内存共享的概念。内存共享是使用硬件一致性在主机之间一致共享CXL连接内存的能力。因此,与内存池不同,内存共享允许给定的内存区域可由多个主机同时访问,并且仍然保证每个主机都能看到该位置的最新数据,而不需要软件管理的协调。这使得系统设计能够构建机器集群,通过共享内存结构来解决大型问题。图4显示了共享和池化内存拓扑的示例。
- Fabric:CXL3.0首次引入了Fabric功能,超越了PCIe和前几代CXL传统的基于树的架构结构。图5显示了CXL结构的非树形拓扑示例。CXL结构最多可支持4096个节点,这些节点可以使用称为基于端口的路由(PBR)的新的可扩展寻址机制相互通信。这里,节点可以是CPU主机、带或不带内存的CXL加速器、PCIe设备或Global Fabric Attached Memory(GFAM)设备。GFAM设备类似于传统的CXL Type-3设备,不同之处在于它可以使用基于端口的路由以灵活的方式被多个节点(最多4095个)访问。这种架构为构建强大的系统开辟了可能性,该系统由计算和内存元素组成,以满足特定工作负载的需求。图6显示了CXL Fabrics的几个示例用例。
这个实验室还讲这个原型与只使用DRAM扩展内存做了一系列比较:A Technology Brief by CAMEL KAIST(但是个人觉得他对实验结果解释那部分不够详细,有的点不太懂)
DDR(双数据速率)
DDR是一种用于系统内存(RAM)的接口和技术。它允许CPU(中央处理器)与系统内存之间进行高速数据传输。DDR标准有多个版本,例如DDR3、DDR4和DDR5,每个版本都有不同的数据传输速率和技术规格。DDR主要用于存储和读取计算机内存中的数据,以供CPU使用。CPU通过DDR接口来访问内存中的程序和数据。DDR内存通常以多通道方式工作,其中每个通道可以连接一个或多个DRAM(Dynamic Random Access Memory)内存条。在这样的配置中,数据可以在不同的内存条之间分散存放,这被称为多通道内存架构,总带宽就是各通道带宽的总和。
DDR-T
Intel Optane Persistent Memory使用DDR-T与CPU传输数据。特别设计用于大型数据中心和需要大量内存的高性能计算环境。DDR-T内存模块通常具有非常高的存储容量,通常以TB(Terabytes,千兆字节)为单位来衡量,因此得名为”Terabyte”。这使得DDR-T非常适合大规模数据分析、虚拟化、人工智能和其他内存密集型应用。
PCIe(Peripheral Component Interconnect Express)
PCIe是一种用于连接各种外部设备和扩展卡的高速总线标准。它通常用于连接图形卡、网络适配器、存储控制器、声卡等外部硬件设备。PCIe提供了高带宽和低延迟的数据传输通道,使外部设备能够与CPU和系统内存进行快速通信。PCIe通常不用于内存访问,而是用于连接外部设备,以扩展计算机的功能。
UPI
跨NUMA节点间数据的传输。
ISA
X86体系结构下有ISA总线.
ZONE_DMA:用于那些无法对全部物理内存进行寻址的硬件设备,进行DMA时的内存分配。例如前边介绍的ISA设备只能对物理内存的前16M进行寻址。该区域的长度依赖于具体的处理器类型。
内核态虚拟内存空间的前896M区域是直接映射到物理内存中的前896M区域中的,直接映射区中的映射关系是一比一映射。映射关系是固定的不会改变。直接映射区的前16M专门让内核用来为DMA分配内存,这块16M大小的内存区域我们称之为ZONE_DMA。 X86体系结构下ISA总线的直接内存存取控制器叫DMA。16M到896M(不包含896M)这段区域,我们称之为 ZONE_NORMAL。
DMA
这个和ZONE_DMA没有直接关系的!DMA(Direct Memory Access直接内存访问)技术
允许外围设备在不涉及中央处理器(CPU)的情况下将数据传输到系统内存或从系统内存传输数据。DMA是一种通用的机制,可以在各种数据传输场景中使用,包括文件拷贝。
如下图,一般文件读写在page cache使用buffer IO如果不命中有2次上下文切换和3次拷贝。
部分应用使用direct IO可以减少拷贝。这取决于你的程序是否存在局部性原理可以充分利用page cache.
DAX
允许应用程序直接将数据从内存传输到存储设备。绕过传统的文件系统栈,允许应用程序通过Direct Memory Access (DMA)直接与存储设备进行交互,特别是与非易失性内存(NVM)设备一起使用。