从零开始讲DDR(1)——DDR简介

一、DDR简介

        DDR SDRAM(Double Data Rate Synchronous  DYNAMIC RAM)中文名是:双倍数据速率同步动态随机存储器。

        传统的SDRAM只在时钟信号的上升沿传输数据,而DDR可以同时在时钟的上升沿和下降沿传输数据,因此在同样的时钟频率下,DDR内存的传输速率是SDRAM的两倍。这就是“Double Data Rate”(双倍数据速率)的含义。所谓同步指的是DDR是同步内存的一种,同步内存与系统时钟信号保持同步。动态是指DDR中的数据断电后无法存储,且需要周期性刷新。所谓随机存取,代表用户可以随机操作任意地址的数据。

版本发行年份电压 (V)数据速率 (MHz)带宽 (MB/s)引脚数量 (DIMM)特点
DDR120002.5200 - 4001600 - 3200184DDR1是第一代双倍数据速率内存。它通过双边缘的数据传输,提供了比传统SDRAM快一倍的传输速率。
DDR220031.8400 - 8003200 - 6400240DDR2进一步提高了数据速率,优化了信号传输,支持更高的时钟频率,并通过降低电压实现了更好的功耗控制。
DDR320071.5800 - 16006400 - 12800240DDR3提供了更高的频率和带宽,并支持更大的内存模块容量。与DDR2相比,DDR3在性能和能效上都有显著提升。
DDR420141.21600 - 320012800 - 25600288DDR4在能效、数据速率和容量方面有显著提高,能够支持更大的内存模块。它的时钟频率更高,延迟优化,满足了当代计算机和服务器对高带宽的需求。
DDR520201.13200 - 640025600 - 51200288DDR5在数据速率、带宽和效率上都有极大的提升,尤其适合高性能计算、AI、大数据等对内存有极高需求的应用。DDR5还引入了更智能的电源管理和更高的能效优化。

二、内存原理

        对于一块内存条来说,它是由很多部分构成的,其中最重要的部分就是内存颗粒。

        从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:channel>DIMM>rank>chip>bank>row/column,如下图:

        我们举一个现实的例子来介绍这部分内容, 一个i7 CPU支持两个Channel(双通道),每个Channel上可以插俩个DIMM(这里可以直接理解成内存条),而每个DIMM由两个Rank(Physical Bank)构成,8个chip组成一个Rank。由于现在多数内存颗粒的位宽是8bit,而CPU带宽是64bit,所以经常是8个颗粒可以组成一个Rank。

 

 

        这是个DDR3一个Rank的示意图。我们把左边128MB Chip拆开来看,它是由8个Bank组成,每个Bank核心是个一个存储矩阵,就像一个大方格子阵。这个格子阵有很多列(Column)和很多行(Row),这样我们想存取某个格子,只需要告知是哪一行哪一列就行了,这也是为什么内存可以随机存取而硬盘等则是按块存取的原因。

        实际上每个格子的存储宽度是内存颗粒(Chip)的位宽,在这里由8个Chip组成一个Rank,而CPU寻址宽度是64bit,所以64/8=8bit,即每个格子是1个字节。

三、DDR原理

3.1 Bank、Row、Column

        在这里我们暂时不关心cpu与DDR之间的联系了,我们聚焦于DDR内存芯片本身,对于一个完整的DDR芯片,我们把它考虑成一个chip的概念。因此,我们现在的讨论重点就落到了chip>bank>row/column。

        chip不必多说,bank代表的就是区域,如果把DDR理解成一组存放了不同数据的表格,那么Bank(简写B)就是用来区分不同表格的,而row(简写R)表示行地址,Column(简写C)表示列地址。

        有了这三个基本概念,我们就可以计算一块DDR chip的存储区域大小了。例如bank地址线位宽为3,行地址线位宽为13,列地址线位宽为10。那么其对应的空间应该是2^3 * 2^13 * 2^10 = 2^26 =64Mb。在考虑上每个空间可以存储的数据位宽(数据线位宽),那么其总容量是64Mb * 16 =128M Byte = 1G bit。

3.2 内部结构

        了解了描述DDR的几个基本概念,接下来我们来了解一下DDR的内部结构,下图给出了一个DDR的内部结构示意图:

         我们忽略一部分电源信号、配置信号和时钟信号,把关注的重点放在控制信号、地址信号和数据信号上。

        对于控制信号,主要包含以下的几个(其中的CKE为时钟使能,CK,CK#为时钟信号,这里不做讨论):

 

信号名输入/输出描述
RESET#inputDDR的复位信号,低电平有效
A12input这是一个多功能引脚,通常表示地址引脚(A12),但在特定情况下也可以作为突发截断(Burst Chop, BC#)信号。A12的功能取决于是否在模式寄存器 (MR) 中启用了该功能。 模式寄存器用于配置存储器的工作模式,包括突发长度(Burst Length, BL)等。
CS#inputDDR芯片使能,用于多个RANK时的RANK组选择。

RAS#

input行地址选通
CAS#input列地址选通
WE#input写使能信号

        接下来我们介绍一下地址信号,对于我们这次展示的这块DDR来说,地址相关的信号总控有18位,其中3为用来表示bank地址线(BA[2:0])。行地址和列地址在内存访问过程中不是同时给出的,而是按顺序提供的,通常遵循以下步骤:

1. 行地址(Row Address)优先:在内存访问时,首先执行的是 ACTIVATE 命令。该命令会提供 行地址,用来选择内存阵列中的特定行。行地址通过地址引脚传输,并且内存控制器会激活对应的行。这一过程将选定行加载到行缓冲区,准备后续的读写操作。

2. 列地址(Column Address)接着提供:行激活完成后,接下来是 READ/WRITE 命令,这时会给出 列地址,用于选择激活行中的特定列,定位到要读写的具体存储单元。列地址通过相同的地址引脚传输,并结合已经激活的行,确定最终的存储位置。

3. 预充电(Precharge):在完成读写操作后,可以通过 PRECHARGE 命令关闭当前激活的行,使其返回到非激活状态,为下一个行访问做好准备。

         从图中我们可以获知:行地址使用了15位(A[14:0]),列地址使用了10位(A[9:0])。

        最后,我们来关注一下这块DDR的数据信号:

信号名输入/输出描述
DQ[7:0]inout数据信号,这里的位宽为8
TDQS#
outputTDQS(Termination Data Strobe) 被启用时,数据掩码信号 DM 会被禁用。
DQS/DQS#inout作为数据传输的参考时钟,确保数据的采样和发送与时钟同步。“选通”指的是控制信号的开启或关闭,即 DQS 信号控制了数据的传输窗口。它类似于一扇门,当 DQS 信号处于高电平时,数据传输被允许,当信号处于低电平时,数据传输停止。读操作:数据选通信号(DQS)与读数据边沿对齐写操作:数据选通信号(DQS)与写数据中心对齐,确保数据的稳定传输。

        除此以外,在有的DDR中还会涉及到数据掩码,这部分我们会在后续的内容中继续深入学习。

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

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

相关文章

零信任安全架构--持续验证

随着网络安全威胁的不断演变,传统的“信任但验证”安全模式已无法应对现代复杂的攻击。零信任安全架构(Zero Trust Architecture, ZTA)应运而生,作为一种全新的安全理念,它彻底改变了企业的网络安全防护方式。核心思想…

windows查找端口号被占用

在很多开发的时候,可能端口号有被占用的情况,导致项目打不开。 用下面这个命令即可: 比如我的3000端口被占用,我找找哪个进程在占用我的3000端口号

JAVA惊喜连连无限可能沉浸式盲盒商城系统小程序源码

🎁惊喜连连,无限可能!沉浸式盲盒商城系统,等你来探索🔍 🎉【开篇:盲盒热潮,席卷而来】🎉 在这个充满未知与惊喜的时代,盲盒文化正以前所未有的速度席卷全球…

Vue学习记录之五(组件/生命周期)

一、组件 在每一个.vue文件可以看作是一个组件,组件是可以复用的,每个应用可以看作是一棵嵌套的组件树。 在Vue3中,组件导入以后即可直接使用。 二、组件的生命周期 生命周期就是从诞生(创建)到死亡(销毁) 的过程。 Vue3 组合式API中(se…

Rocky 8.7 操作系统 安装部署 MySQL 5.7.32 验证测试

一、安装部署 主从服务器都需提前安装部署MySQL 5.7.32 数据库软件,本次选择采用二进制安装。 配置主从,要注意调整主备库server_id不能保持一致。 主库修改/etc/my.cnf文件,添加 server-id1log-binmysql-binbinlog-do-dbmsdbbinlog-ign…

java se 快速入门

文章目录 java se 快速入门Java 简介Java的优点jdk 和 jre安装jdk配置环境变量Java 语法快速入门程序入口文件名类规范 基本语法注释变量和常量输入输出条件语句循环语句 基本数据类型Java字符串常用方法字符串拼接java字节数组和字符串相互转化java字符数组和字符串相互转换ja…

传输层协议 —— TCP协议(上篇)

目录 1.认识TCP 2.TCP协议段格式 3.可靠性保证的机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 1.认识TCP 在网络通信模型中,传输层有两个经典的协议,分别是UDP协议和TCP协议。其中TCP协议全称为传输控制协议(Tra…

torch.embedding 报错 IndexError: index out of range in self

文章目录 1. 报错2. 原因3. 解决方法 1. 报错 torch.embedding 报错: IndexError: index out of range in self2. 原因 首先看下正常情况: import torch import torch.nn.functional as Finputs torch.tensor([[1, 2, 4, 5], [4, 3, 2, 9]]) embedd…

游戏如何检测加速外挂

在游戏面临的众多外挂风险中,除了常见的内存修改挂、注入挂等作弊手段,黑灰产还常用「加速」手段实现作弊。 游戏安全风险分布占比图 「加速」顾名思义是指改变游戏内的速度。游戏在运行中需要以帧为单位播放画面,而计算每帧动画播放所需时间…

代码随想录算法训练营第3天|链表理论基础、203. 移除链表元素、 707.设计链表、 206.反转链表

目录 链表理论基础203. 移除链表元素1、题目描述2、思路3、code4、复杂度分析 707. 设计链表1、题目描述2、思路3、code 206. 反转链表1、题目描述2、思路3、code4、复杂度分析 链表理论基础 ❤️链表增删的时间复杂度都是 O ( 1 ) O(1) O(1),适合动态增删&#xf…

C语言进阶【4】---数据在内存中的存储【1】(你不想知道数据是怎样存储的吗?)

本章概述 整数在内存中的存储大小端字节序和字节序判断练习1练习2练习3练习4练习5练习6 彩蛋时刻!!! 整数在内存中的存储 回忆知识:在讲操作符的那章节中,对于整数而言咱们讲过原码,反码和补码。整数分为有…

【初阶数据结构】一文讲清楚 “堆” 和 “堆排序” -- 树和二叉树(二)(内含TOP-K问题)

文章目录 前言1. 堆1.1 堆的概念1.2 堆的分类 2. 堆的实现2.1 堆的结构体设置2.2 堆的初始化2.3 堆的销毁2.4 添加数据到堆2.4.1 "向上调整"算法 2.5 从堆中删除数据2.5.1 “向下调整”算法 2.6 堆的其它各种方法接口函数 3. 堆排序3.1 堆排序的代码实现 4. TOP-K问题…

CWFED:自然灾害检测数据集(猫脸码客 第192期)

Cyclone Wildfire Flood Earthquake Database 在自然灾害频发的今天,准确、及时地获取并分析相关数据对于灾害预防、预警及响应至关重要。为此,Cyclone Wildfire Flood Earthquake Database(以下简称CWFE Database)应运而生&…

PostgreSQL 的log_hostname 参数测试

PostgreSQL 的log_hostname 参数测试 log_hostname 是 PostgreSQL 配置文件 (postgresql.conf) 中的一个参数,用于控制是否在日志条目中记录客户端主机名。默认情况下,PostgreSQL 只记录客户端的IP地址,而 log_hostname 参数允许数据库管理员…

使用FLBOOK快速制作3D电子版翻页产品册

​随着数字化时代的到来,传统纸质产品册已逐渐无法满足人们快节奏、便捷的生活方式。而FLBOOK,一款强大的3D电子版翻页产品册制作工具,凭借其简洁的操作界面、丰富的功能和出色的展示效果,已成为越来越多企业的首选。 1.要制作电子…

1:java的介绍与基础1:变量,数据类型与数学运算符

1.1Java的开始 从今天开始,我将更新一下关于学习Java的笔记,文章,希望大家支持。这个Java吧,感觉本质上逻辑始于python很类似,但是吧它的表达更加繁琐难懂,所以我还是喜欢python,比较简介明了。…

获取java jdk包的方式记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、OpenLogic方式二、华为源下载 前言 记录一下获取java jdk的方式方法。 一、OpenLogic方式 网址:https://www.openlogic.com/openjdk-download…

OCR两篇革命之作

DocOwl2 参考 阿里8B模型拿下多页文档理解新SOTA,324个视觉token表示一页,缩减80% mPLUG-DocOwl 2聚焦多页文档理解,兼顾效果和效率,在大幅缩减单页视觉token的前提下实现了多页文档理解的SOTA效果。 仅用324个token表示文档图…

相亲交易系统源码详解与开发指南

随着互联网技术的发展,越来越多的传统行业开始寻求线上转型,其中就包括婚恋服务。传统的相亲方式已经不能满足现代人快节奏的生活需求,因此,开发一款基于Web的相亲交易系统显得尤为重要开发者h17711347205。本文将详细介绍如何使用…

API接口在不同编程语言中是如何实现的?

API接口是现代软件开发中的关键技术,它允许不同的软件系统相互通信和交换数据。在不同的编程语言中,API接口的实现方式可能会有所不同,但它们的核心概念是一致的:提供一组预定义的方法和协议,使得开发者可以访问特定的…