从零开始讲DDR(3)——DDRC与DDRPYH

一、DDR的使用

        在之前的文章中我们介绍了DDR的基本概念,但是DDR内存的操作不仅仅是简单的数据读取和写入,它包括许多时序要求和信号调度。为了让DDR内存有效运作,系统需要在逻辑层和物理层之间进行大量的协作。我们拿出一张DDR的操作简化状态图来看:

        显然对于一个DDR的使用者来说,我们不想应付这么复杂的初始化过程,这会大大增加我们的开发周期和难度,因此,最好有人可以给我们提供一个封装好的DDR操作接口,让我们只需要处理一些读写相关信号即可,芯片制造商也是这么想的,因此不同的厂商也会提供自己的解决方案,总体上,大家把DDR的操作最终设计了下图的样子:

  • MASTER(主机):其实就是我们这样的DDR使用者,我们在整个过程中扮演了对DDR内存进行操作的主设备。
  • DDRC(DDR控制器):负责处理内存访问的逻辑,管理数据的流入和流出,处理数据缓存、行开/关(Row Open/Close)、命令调度等高层逻辑操作。
  • DDRPHY(DDR物理层):则处理低层次的电信号转换和传输,确保信号在内存控制器和DDR芯片之间以高速度和稳定性传输。它还负责处理时钟、信号完整性和电源管理等。
  • DRAM:被操作的DDR内存

        其中DDRC(Dynamic Data Rate Controller)和 DDRPYH(DDR Physical Layer)通常作为一个整体的设计方案出现,它并不是由 DDR内存厂商(如三星、海力士、美光等)提供的,而是由 芯片制造商(如高通、联发科、英特尔、AMD等)在设计 SoC(片上系统) 时集成的。DDR厂商负责制造和提供DDR内存芯片本身,而 DDRC 是集成在主控芯片或处理器中的,用来管理和调节DDR内存的工作频率和带宽,DDRPHY通常由处理器或SoC制造商提供,和DDR控制器(DDRC)一起工作。DDRC负责逻辑控制和协议处理,而DDRPHY则负责底层的电信号传输。

  • DDR厂商:提供物理内存芯片,负责存储数据。
  • SoC或处理器厂商:提供DDRC,负责根据系统需求动态调整DDR内存的运行频率和性能。

        之所以要把DDRC和DDRPYH分开,主要是为了实现功能分离,提高性能和灵活性。将内存操作分为控制器和物理层有助于提高系统的整体效率和灵活性:DDRC和DDRPHY各自专注于不同层面的优化。控制器可以进行复杂的调度和内存管理策略,而物理层则可以专注于处理信号传输的速度和稳定性。这种分工让每个模块可以独立优化,从而提升整个系统的性能。另一方面,将逻辑控制和物理传输分开,允许不同厂商设计出不同的物理层和控制器,以适应不同类型的DDR内存(如DDR3、DDR4、DDR5)。通过这种模块化设计,系统设计者可以更容易地更换内存类型,保持兼容性和扩展性。

二、DDRC

        DDRC(Dynamic Data Rate Controller),主要就是起到一个对于DDR的控制的作用,负责把MASTER发送过来的命令,转换成DDR认识的命令。通俗点说,就是起到了一个翻译的作用。

        我们找两个DDRC的设计方案:

        上面的一张图中,只包含DDRC,下面的图中,左侧是DDRC,右侧是DDRPHY。我们暂时只关注DDRC的部分,可以看到,对于DDRC与MASTER之间的接口支持的是AXI接口,这对于开发者来说就非常友好了。对于DDRC与后级(也就是DDRPYH)的接口,这里用到的是DFI。其实对于使用者来说,我们也不关心这个DFI了,我们在文章的最后简单介绍一下它,这里就暂时跳过了。

        回到我们的DDRC上,这么看DDRC的功能就很清楚了,就是实现了DDR的访问通路,把用户的AXI总线信息转换成DFI给到DDRPHY,DDRPHY在给到DDR就行了。这是从宏观的角度对于DDRC功能的认知,这一个看似简单的事情又可以细分成很多的部分:

2.1 内存读写管理

        DDRC 的核心任务是管理和调度处理器对 DDR 内存的读写请求。它确保处理器发送的内存访问请求能够按照 DDR 内存的协议正确执行。

  • 读操作:DDRC 接收处理器的读取请求,调度 DDR 内存的相关行和列地址,读取数据并返回给处理器。
  • 写操作:处理器通过 DDRC 发出写入请求,DDRC 将数据写入指定的内存地址。

2.2 内存时序管理

        DDR 内存具有复杂的时序要求,例如激活(ACT)、读取(READ)、写入(WRITE)等操作都有严格的时序限制。DDRC 负责控制内存操作的时序,确保不同命令的发出、执行以及数据传输之间的延时符合内存的时序要求。

2.3 地址和数据调度

        DDR 内存控制器需要处理大量来自处理器的读写请求,并将这些逻辑地址映射到物理内存的行、列和银行地址。为了最大化内存的利用率,DDRC 会对这些请求进行调度和优化,以减少行开关和bank冲突,提高内存的访问速度。

2.4 刷新管理

        DDR 内存是基于电容存储数据的,电容会随时间流失电荷,导致数据丢失。因此,DDRC 必须定期刷新内存中的数据,以确保数据的正确性。刷新操作需要遵循一定的时序要求,同时要尽量避免影响正常的读写操作。

2.5 低功耗管理

        为了应对现代设备的功耗要求,DDRC 支持多种低功耗模式,通过动态调整内存的工作状态来降低功耗。这对于移动设备和嵌入式系统尤为重要。

2.6 错误检测与纠正(ECC)

        在一些高可靠性应用(如服务器、数据中心)中,DDRC 通常会支持 ECC(Error-Correcting Code)。这种机制能够检测和纠正内存中的单比特错误,从而提高系统的可靠性。

2.7 多通道和多端口支持

        现代系统中,内存控制器通常支持 多通道多端口,以提高内存带宽并支持多任务操作。DDRC 通过分配多个内存通道并行处理数据读写请求,提升系统的整体性能。

  • 多通道:多个内存通道可以同时处理多个数据流,从而大幅提高内存带宽。
  • 多端口:多个外设或处理器核可以同时通过 DDRC 访问内存,提升并行处理能力。

2.8 仲裁机制

        在多核处理器或多任务系统中,多个处理器核或外设会同时发出内存访问请求。DDRC 具有仲裁机制,用于合理分配资源,确保每个请求能够在公平的条件下得到处理,同时最大化带宽利用。

2.9 扩展性

        随着 DDR 技术的进步,DDRC 需要支持不同代的 DDR 标准(如 DDR3、DDR4、DDR5)以及 LPDDR(低功耗 DDR)。每代 DDR 内存的时序、命令集和数据传输速率有所不同,DDRC 通过适应这些标准,确保系统可以使用最新的内存技术。

三、DDRPHY

        我们已经知道了DDRC会把主机的AXI协议的DDR操作指令转换成DFI给到DDRPYH,那接下来就是DDRPYH的舞台了。

        DDRPHY(DDR物理层)是内存系统中的关键模块,负责在 DDR内存控制器(DDRC)与 DDR内存芯片 之间进行物理信号传输。它的主要功能包括将控制器发出的读写命令和数据转换为内存芯片能够理解的电信号,同时接收并恢复内存芯片返回的数据。此外,DDRPHY 通过 时钟同步 确保数据传输的时序准确,管理信号的完整性以减少干扰和噪声,提供 校准和训练机制 以优化数据传输延迟,确保在高频条件下系统的稳定运行。它还支持多种 低功耗模式,如自刷新和深度休眠,适用于移动设备和嵌入式系统,提升系统的功耗效率。同时,DDRPHY 能够兼容不同代的 DDR 标准,如 DDR3、DDR4、DDR5,实现对高速、高带宽内存系统的支持。

        DDRPHY 一般由多个子模块组成,它们共同完成数据的传输和校准工作。其结构通常包括:

  • 发射器(Transmitter):将来自 DDRC 的信号转化为内存芯片可识别的物理电信号,负责将命令、地址和数据发送到内存芯片。
  • 接收器(Receiver):从内存芯片中接收数据,恢复信号并传输回内存控制器。
  • 数据选通单元(Data Strobe Unit):用于生成和校准 DQS 信号,以保证数据传输的时钟同步。
  • 校准单元(Calibration Unit):负责在系统启动时对信号的时序进行校准,确保信号传输的可靠性和时序正确性。
  • 功耗管理单元(Power Management Unit):负责处理内存的低功耗模式,管理自刷新、深度睡眠等操作。

四、DFI

        DFIDDR PHY Interface)是一个标准化的接口,用于连接 DDR 内存控制器(DDRC)DDR PHY(物理层)。该接口由 DFI 协会制定,目的是为了简化和标准化内存控制器和物理层之间的通信,确保不同厂商设计的控制器和物理层可以无缝协同工作。通过 DFI,DDR 控制器和 PHY 层可以高效、灵活地协同操作,从而实现高性能的内存访问。

4.1 DFI 的主要目的和优势

  • 标准化接口:DFI 作为控制器和物理层之间的通信桥梁,确保了不同厂商设计的控制器和 PHY 模块可以互操作。这种标准化有助于减少设计复杂性,并提高不同内存解决方案的兼容性。

  • 高效数据传输:DFI 确保控制器和 PHY 层能够高效地交换数据和命令,同时处理高速时钟信号的同步。它支持 DDR2、DDR3、DDR4 和 LPDDR 等多种内存类型。

  • 低功耗设计支持:DFI 支持低功耗模式,通过该接口,控制器可以命令 PHY 进入低功耗状态,如自刷新模式或深度休眠模式。

  • 可扩展性:DFI 是可扩展的,支持最新的 DDR 内存标准(如 DDR4 和 DDR5),并为未来的内存技术提供扩展能力。

4.2 DFI 的关键模块和信号

        DFI 接口由多个模块和信号组成,涵盖了控制器与 PHY 之间的主要交互。以下是一些 DFI 的关键模块和信号:

  1. DFI 命令通道(Command Channel)

    • 控制器通过命令通道向 PHY 发送内存操作命令,如读取、写入、刷新等。
    • 命令信号包括 RAS(行选通信号)、CAS(列选通信号)、WE(写使能信号)等。
  2. DFI 地址通道(Address Channel)

    • 控制器通过地址通道向 PHY 发送内存地址信息,用于确定内存操作的目标地址。
    • 地址信号包括行地址、列地址和银行地址。
  3. DFI 数据通道(Data Channel)

    • 数据通道用于传输数据,支持读写数据操作。
    • PHY 会根据控制器的指令,从 DDR 内存中读取数据或向 DDR 内存写入数据。
  4. DFI 时钟和控制信号(Clock and Control Signals)

    • DFI 提供时钟信号和控制信号,用于控制时钟的相位对齐和命令的同步,确保控制器和 PHY 之间的操作在高频率下同步进行。
    • 包括时钟、复位等信号。
  5. 低功耗控制信号(Low Power Control Signals)

    • 该信号通道允许控制器通过 DFI 命令 PHY 进入低功耗状态,如自刷新模式或暂停模式,帮助系统降低功耗。

4.3 DFI 的工作原理

        DFI 通过定义控制器与物理层之间的标准化信号和接口规范,使 DDR 控制器与 PHY 层能够无缝协同工作。其基本工作原理如下:

  1. 控制器发送命令和地址:DDR 控制器通过 DFI 接口将内存操作命令(如读取、写入、刷新)以及相应的地址信息发送给 PHY 层。

  2. PHY 处理命令:PHY 层接收到命令后,执行相应的电信号操作,将命令转换为物理信号,完成对 DDR 内存芯片的实际读写操作。

  3. 数据传输:在读写操作中,数据通过 DFI 接口从 DDR 内存传回控制器或从控制器写入到内存。DFI 确保了数据通道的高速传输和同步。

  4. 时钟同步:DFI 还提供了时钟同步功能,确保控制器和 PHY 之间的时钟信号相位对齐,从而在高频率下维持高性能。

  5. 低功耗操作:通过 DFI 的低功耗通道,控制器可以命令 PHY 进入低功耗模式,当系统空闲时降低功耗。PHY 则根据控制器的命令进入或退出低功耗模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rfid超高频手持移动终端的性能特点

超高频手持移动终端的工作频率范围通常在860 MHz至960 MHz之间,具体频段根据不同的地区和国家有所不同,下面我们就一起来了解一下,超高频手持移动终端的性能特点。 超高频手持移动终端的性能特点 高效率与高速度:超高频手持移动…

付费计量应用过程(Payment Metering Application process)

The Payment Metering Application process is the combination of the business and support processes as the resultant interactions between the business and support functions, which thus describes the dynamic behavior of the system as a whole. 付费计量…

C++ std::any升级为SafeAny

std::any测试 #include <any>class A { public:int8_t a; };int main(int argc, char* argv[]) {std::any num((int8_t)42);auto a std::any_cast<A>(num);return 0; }异常&#xff1a; 0x00007FFA9385CD29 处(位于 test.exe 中)有未经处理的异常: Microsoft C 异…

Unity中Rigidbody 刚体组件和Rigidbody类是什么?

Rigidbody 刚体组件 Rigidbody 是 Unity 中的一个组件&#xff0c;它可以让你的游戏对象像真实世界中的物体一样移动和碰撞。想象一下&#xff0c;你有一个小球&#xff0c;你希望它像真实世界中的球一样滚动、弹跳和碰撞&#xff0c;那么你就可以给这个小球添加一个 Rigidbod…

国产SSL证书品牌怎么选择?

有人在歪曲大型央国企“信创化”与数字化转型建设思路&#xff0c;为了自身的利益开始造谣一些虚假传播信息国外SSL证书不安全问题&#xff0c;然而国外的SSL证书每个上网用户都在使用&#xff0c;然而发布虚假广告的一些人实际上是换了个马甲贴个名字就叫国产SSL证书了&#x…

【农信网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

无线安全(WiFi)

免责声明:本文仅做分享!!! 目录 WEP简介 WPA简介 安全类型 密钥交换 PMK PTK 4次握手 WPA攻击原理 网卡选购 攻击姿态 1-暴力破解 脚本工具 字典 2-Airgeddon 破解 3-KRACK漏洞 4-Rough AP 攻击 5-wifi钓鱼 6-wifite 其他 WEP简介 WEP是WiredEquivalentPri…

反编译 AndroidManifest.xml文件-android反编译技术

一、安卓打包后目录 想要查看原来版本配置和关联信息&#xff0c;被打包了&#xff0c;这时候需要工具 AXMLPrinter2.jar 二、反编译环境要求 序号软件说明1java电脑得有java环境2AXMLPrinter2.jarapk中xml解析文件 三、反编译指令 java -jar AXMLPrinter2.jar "C:\Us…

【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式

前言&#xff1a; 前三篇如下&#xff1a; 【速成Redis】01 Redis简介及windows上如何安装redis-CSDN博客 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客 【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、…

【计算机组成原理】实验一:运算器输入锁存器数据写实验

目录 实验要求 实验目的 主要集成电路芯片及其逻辑功能 实验原理 实验内容及步骤 实验内容 思考题 实验要求 利用CP226实验箱上的K16&#xff5e;K23二进制拨动开关作为DBUS数据输入端&#xff0c;其它开关作为控制信号的输入端&#xff0c;将通过K16&#xff5e;K23设定…

C++速通LeetCode中等第3题-盛最多水的容器

双指针法&#xff1a;两个指针分别指向左右边界&#xff0c;记录最大面积&#xff0c;由于面积由短板决定&#xff0c;两个指针中较短的短指针向内移动一格&#xff0c;再次记录最大面积&#xff0c; 直到两指针相遇&#xff0c;得出答案。 class Solution { public:int maxAr…

安卓13设置动态修改设置显示版本号 版本号增加信息显示 android13增加序列号

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号 在这里显示了系统的一些信息,但是这里面的信息并不包含序列号之类的信息,我们修改下系统设置,在这里增加上相关的序列号。 2.问题分析…

打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台

前言 以太坊客户端收集大量数据&#xff0c;这些数据可以按时间顺序数据库的形式读取。为了简化监控&#xff0c;这些数据可以输入到数据可视化软件中。在此页面上&#xff0c;将配置 Geth 客户端以将数据推送到 InfluxDB 数据库&#xff0c;并使用 Grafana 来可视化数据。 一…

多比特AI事业部VP程伟光受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 武汉市多比特信息科技有限公司AI事业部VP程伟光先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“AI对于项目经理工作的影响和变化解析”。大会将于10月26-27日在北京举办&am…

深度学习02-pytorch-04-张量的运算函数

在 PyTorch 中&#xff0c;张量&#xff08;tensor&#xff09;运算是核心操作之一&#xff0c;PyTorch 提供了丰富的函数来进行张量运算&#xff0c;包括数学运算、线性代数、索引操作等。以下是常见的张量运算函数及其用途&#xff1a; 1. 基本数学运算 加法运算&#xff1a…

计算机组成体系与组成结构错题解析【软考】

目录 前言进制转换码制补码 CPU的组成输入/输出技术中断相关概念输入/输出技术的三种方式比较周期相关知识 主存编址计算流水线技术层次化存储体系可靠性 前言 本文专门用来记录本人在做软考中有关计算机上组成体系与组成结构的错题&#xff0c;我始终认为教学相长是最快提高的…

如何利用 opencv 进行 ROI(感兴趣)获取和实现 VR(虚拟现实) 演播室的播放

我是从事医疗软件的开发的。 经常需要从拍摄的医疗视频中获取出病理区域。并计算病理区域的周长和面积。 用 opencv 的术语,这就是感兴趣区域的获取。 (因为都是实时视频,所以速度很关键。代码效率很重要) 有时,需要标注出病理区域,并将非病理区域从视频中去除掉。 如果将…

[教程]如何在iPhone上启用中国移动/联通/电信RCS消息

目前 苹果已经在 iOS 18 中带来 RCS 富媒体消息的支持&#xff0c;该消息基于网络传递&#xff0c;用户可以通过 RCS 免费将消息发送到其他 iPhone 或 Android 设备。在苹果面向测试版用户推出的 iOS 18.1 Beta 版中&#xff0c;中国网络运营商包括中国移动、中国联通、中国电信…

STL-常用算法 遍历/查找/排序/拷贝和替换/算数生成/集合算法

STL常用算法 常用的遍历算法 for_each #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include<vector> #include<algorithm>void myPrint(int v) {cout << v << " "; }class MyPrint { public:void op…

产品经理需要了解的AI模型

随着人工智能技术的迅猛发展&#xff0c;AI已经成为各行各业不可或缺的一部分。对于产品经理而言&#xff0c;了解AI模型不仅能促进产品的创新&#xff0c;还能帮助我们更好地理解用户需求&#xff0c;提升产品价值。 下面我将详细介绍四类重要的AI模型——自然语言处理&#…