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

news2024/12/28 20:38:31

一、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.coloradmin.cn/o/2151342.html

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

相关文章

MySQL程序

目录 MySQL程序 常用的MySQL的程序 mysqld程序 mysql客户端 客户端命令的常用的选项 配置文件 配置文件语法 MySQL客户端命令 ​编辑 .sql 文件中执行SQL语句 mysqlcheck (表维护程序) Mysqldump(数据库备份程序) mysql…

单片机项目合集列表——Excel合集列表目录查阅(持续更新)

阿齐Archie《单片机项目合集》专栏项目 为方便查找本专栏的项目,特整理Excel合集列表供查阅(可搜索或按系列查找) 持续更新链接如下: 阿齐单片机项目合集 (kdocs.cn)https://www.kdocs.cn/l/cmrxCxJN05YN 打开链接如下Exce表所…

【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)

本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

代码随想录Day50|图论Part01,leetcode题目:98. 所有可达路径

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 图论理论基础Part01图的基本概念图的种类 连通性连通图强连通图连通分量强连通分量 图的构造邻接矩阵邻接表 图的遍历方式 深度优先搜索理论基础DFS 与 BFS 区别dfs 搜索过程代码框架深搜三部曲为…

Superset 使用指南之优化数据可视化性能与扩展

1. Superset 概述 什么是 Apache Superset? Apache Superset 是一个开源、现代化的数据可视化和数据探索平台。它通过提供直观的用户界面,使用户能够轻松创建复杂的图表和仪表板,探索海量数据,同时避免传统商业智能(…

Apache James配置连接达梦数据库

项目场景: Apache James配置连接达梦数据库,其他配置中不存在的数据库也可参考此方案。 配置步骤 1、把需要的jar包导入到James 把DmJdbcDriver18.jar复制到下面lib目录下 james-2.3.2\lib 2、 修改连接配置 james-2.3.2\apps\james\SAR-INF\confi…

k8s部署jenkins集群时,使用ThinBackup进行定期备份

一、背景 使用k8s部署jenkins集群的时候,一般会把$JENKSIN_HOME(默认是/var/jenkins_home)进行持久化。 volumeMounts:- name: jenkins-homemountPath: /var/jenkins_home这样,机器重启,保证不会丢失文件。 本文要讲…

杀死端口占用的进程

1、查看端口的进程,以9023为例 (1)方法1 netstat -tunpl|grep 9023 (2)方法2 ss -tulpan |grep 9023 (3)方法3 netstat -ntlp |grep 9023 (4)方法4 lsof -i:9023 …

Linux:虚拟文件系统/proc和self进程

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 /proc目录 在Linux操作系统中,目录/proc是一个虚拟文件系统,称为procfc,用于访问内核和系统的实时状态信息。这个文件系统不同于常规…

下载 B 站封面的正确方式

B 友们经常用一些很好看的图片作为视频封面,但是大部分都不会指出图片来源,为此我们可以下载封面原图,用于保存或者搜索源出处。 这里介绍几个我知道的方法,欢迎补充🤔 ‍ 使用相关客户端 上一篇博客介绍了很多的能…

基于微型5G网关的酒店服务机器人应用

智能机器人在酒店中已经越来越常见,并且也是提升客户体验、提高服务效率的重要工具。然而,尽管这些机器人在自动化服务方面可以发挥着重要作用,但它们仍然面临着一些通信、组网和在线管理方面的痛点。 针对这些难题,可以通过部署微…

【数据结构入门】排序算法之三路划分与非比较排序

文章目录 前言 一、三路划分优化 1.1. 基本思想 1.2. 实现步骤 1.3. 优点 1.4 代码实现 二、非比较排序 2.1 计数排序 2.1.1基本思想 2.1.2具体步骤 2.1.3算法特性 2.1.4算法实现 2.2 基数排序 2.2.1基本思想 2.2.2具体步骤 2.2.3 基数排序的方法 2.2.4算法特…

【高等代数笔记】线性空间(五-九)

3. 线性空间 主线任务:研究线性空间和它的子空间的结构 研究平面 π \pi π上向量共线与不共线的问题: c ⃗ \vec{c} c 与 a ⃗ ≠ 0 \vec{a}\ne\boldsymbol{0} a 0共线 c ⃗ λ a ⃗ ⇔ λ ∈ R ⇔ − λ a ⃗ 1 c ⃗ 0 ⃗ \vec{c}\lambda\vec{…

【白皮书下载】分布式功能安全的创新与突破

近日,Imagination 推出全新性能最高且具有高等级功能安全性的汽车 GPU IP——Imagination DXS GPU,并且是Imagination 第一款带有“分布式安全机制”的处理器。 下载白皮书,获取完整分布式安全机制解决方案 根据 ISO 26262 汽车安全完整性等级…

STL 源码剖析 | 第1章:概论

STL 是一套程序库 1、STL 概论 1、从子程序、程序、函数、类别,到函数库、类别库、各种组件,从结构化设计、模块化设计、面向对象设计,到模式的归纳整理 为的就是 复用性 的提升 复用性 必须建立在某种标准之上 —— 不论是 语言层次的标…

关于MATLAB计算3维图的向量夹角总是不正确的问题记录

文章目录 问题描述解决方法完整代码 问题描述 因为最近在做无人机的一个项目,所以需要画出无人机的轨迹,然后再提取特征值,我这里在计算夹角的时候发现为什么在视觉上明明看的是钝角但是实际计算出来却是锐角的角度。 如下图所示&#xff0c…

大觅网之环境部署(Environment Deployment of Da Mi Network)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

数据保护从现在开始:如何抵御 .[RestoreBackup@cock.li].SRC 勒索病毒

导言 勒索病毒是一种不断演变的网络威胁,.[RestoreBackupcock.li].SRC、[chewbaccacock.li].SRC勒索病毒便是其中一种新型的攻击手段。该病毒通过加密用户文件并要求支付赎金来恢复访问,给个人和企业带来了严重的安全风险和经济损失。本文91数据恢复将探…

uniapp使用uview2上传图片功能

官网地址Upload 上传 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 前提&#xff0c;需要下载vuew2插件 <view class"upload"><view class"u-demo-block__content"><view class"u-page__upload-item"&…

进程状态的优先级

1.进程的状态&#xff08;所有系统&#xff09; 因为是对于所有系统的&#xff0c;所以描述会很抽象。 补充知识&#xff1a; 并行和并发 并行&#xff1a;多个进程再多个cpu下分别同时运行并发&#xff1a;多个进程在一个cpu下采取进程切换的方式&#xff0c;在一段时间内&…