4.4 数据训练
在DDR PHY和SDRAM成功初始化后,数据训练用于优化操作时序和性能。训练包括多个方面,如命令地址(CA)训练、写对齐、读取时DQS门控训练、写延迟调整、位偏移(bit deskew)以及读写数据眼训练。训练的目标是确保内存的时序优化,保证数据的稳定传输。
训练类型
- 命令地址(CA)训练:仅在LPDDR3中使用,目的是优化命令地址的时序。
- 写对齐(Write leveling):确保写数据的时序对齐,优化写操作的稳定性。
- 读取时的DQS门控训练:确保读取数据时,DQS信号的时序正确门控。
- 写延迟调整(Write latency adjustment):对写操作延迟进行精确调整,确保数据正确写入。
- 位偏移(Bit deskew):调整数据位之间的时序,避免信号偏移引发错误。
- 读写数据眼训练:调整数据采样窗口,以确保稳定的数据采样。
训练过程中的关键点:
- 最大训练加载次数:数据训练最多支持四个负载。在训练过程中,只有每个训练组中的第一个逻辑rank(logical rank)会被使用。比如,对于3DS堆栈0,始终会选中该堆栈,并使用每个训练组中的第一个物理rank(physical rank)进行训练。
- 逻辑rank与物理rank的映射:在数据训练过程中,逻辑rank首先会映射到物理rank,再将物理rank映射到训练rank。
物理rank到训练rank的映射(Table 4-4)
以下是物理rank(Physical Ranks)与训练rank(Trained Ranks)之间的映射关系:
物理rank | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
UDIMM 组件物理rank | 0 | 1 | 2 | 3 |
RDIMM 双rank物理rank | 0 | 1 | 2 | 3 |
RDIMM 四rank物理rank | 0 | 1 | 2 | 3 |
LRDIMM 双rank物理rank | 0 | 1 | 2 | 3 |
LRDIMM 四rank物理rank | 0 | 1 | 2 | 3 |
如表所示,UDIMM、RDIMM、LRDIMM等不同内存组件的物理rank和训练rank是有特定映射关系的。每种类型的内存模块都有不同的物理rank到训练rank的对应关系,确保内存的时序训练可以根据具体的硬件配置进行优化。
逻辑rank到训练rank的映射
这些表格展示了在不同物理rank配置下,逻辑rank(Logical Rank)是如何映射到训练rank(Trained Rank)的。映射关系取决于3DS堆栈的数量和物理rank的数量。下面是一些常见的映射:
Table 4-5:逻辑rank到训练rank映射 — UDIMM with 4 physical ranks
3DS数量 | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 0 | 1 | 2 | 3 |
4 | 0 | 1 | 2 | 3 |
Table 4-6:逻辑rank到训练rank映射 — UDIMM with 3 physical ranks
3DS数量 | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 0 | 1 | 2 | 3 |
4 | 0 | 1 | 2 | 3 |
Table 4-7:逻辑rank到训练rank映射 — UDIMM with 2 physical ranks
3DS数量 | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 0 | 1 | 2 | 3 |
4 | 0 | 1 | 2 | 3 |
8 | 0 | 1 | 2 | 3 |
Table 4-8:逻辑rank到训练rank映射 — UDIMM with 1 physical rank
3DS数量 | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 0 | 1 | 2 | 3 |
4 | 0 | 1 | 2 | 3 |
8 | 0 | 1 | 2 | 3 |
Table 4-9:逻辑rank到训练rank映射 — 双或四rankRDIMM with 4 physical ranks
3DS数量 | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 0 | 1 | 2 | 3 |
4 | 0 | 1 | 2 | 3 |
Table 4-10:逻辑rank到训练rank映射 — 双rankRDIMM with 2 physical ranks
3DS数量 | 训练rank 0 | 训练rank 1 | 训练rank 2 | 训练rank 3 |
---|---|---|---|---|
1 | 0 | 1 | 2 | 3 |
2 | 0 | 1 | 2 | 3 |
4 | 0 | 1 | 2 | 3 |
8 | 0 | 1 | 2 | 3 |
训练支持
大部分的训练例程(如写对齐、位偏移等)都支持离散组件、无缓冲DIMM和有缓冲DIMM。然而,当使用LRDIMM组件时,可能需要额外的软件支持来完成训练。有关LRDIMM初始化和训练的更多信息,可以参考文档中的相关章节。
总结
- 数据训练旨在通过调整时序和延迟来优化DDR内存的性能。训练包括写对齐、读写数据眼训练等多个方面。
- 物理rank和训练rank的映射非常关键,帮助确定如何将内存模块的物理rank映射到训练rank,从而确保数据训练的正确性和效率。
- 逻辑rank到训练rank的映射取决于内存模块的配置(如UDIMM、RDIMM、LRDIMM)和3DS堆栈的数量。通过这些映射,内存模块可以在训练过程中得到正确的配置。
本文链接: https://talent-tudou.github.io/2025/07/06/DDR/PUB Architecture-Data Training系列/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!