理解DDR Part 1

news2024/11/28 2:55:52

DDR x4 x8 x16

x4 x8 x16 指的上图黑色的chip输出的位宽,正常的DDR bus width 需要64bit,所以

chip width

x4

x8

x16

黑色chip数量

16

8

4

上图是最常见的x8,也就有8个黑色的chip颗粒。x16的性能和x8的性能相比怎么样呢?

更差,因为x16的bankgroup更少。

DDR4 x8 图自

DDR4 x16

DDR bank rank

DDR 正面就是一个rank,背面如果也有颗粒,那就又是一个rank。实物图中的8个颗粒组成了一个rank。

其中的一个颗粒的架构图如上面两个图所示,内部分成bankgroup,bankgroup内又分成bank。

我们每次发送的读写命令都是操作的各个颗粒里面同一个位置的bank。比如chip0的bank3,chip1的bank3,chip2的bank3…

DDR bankgroup

DDR的bankgroup可以理解为是将颗粒分成了group进行操作,也可以抽象成是把黑色颗粒chip内又独立成了各个单独的小颗粒,即各个bankgroup。

增加bank的数量就意味着可以增加各个bank之间pipeline操作,因此bank数量越多,吞吐率越大。

为什么有bankgroup?

DDR每更新一代,外面管脚pin的传输速度都翻倍。但是其实DDR内部真正memory的速度和latency是没有变化的,DDR通过预取完成这个假象。

DDR3 x8的预取的本质:

x8即每个颗粒输出8bit,DDR内部慢速的memory通过每次输出64bit,在外部快速的pin管教上连续输出,即可以得到8倍频。

如果xW W为每个颗粒的位宽,DDR memory和外部管脚的速度相差为M,那么每个颗粒预取WxN bit。

截自 1 Gig x 8的图,右侧的64即为预取的64bit。

DDR N

DDR

DDR2

DDR3

DDR4

DDR5

Prefetch

2

4

8

8

16

8倍频的DDR3的Prefetch 8,bus width 64bit,正好对应64B。

16倍频的DDR4如果继续prefetch16,那么就会对应128B,与cacheline的64byte对应不上,因此DDR4采用了上文说的bankgroup,在不同的bankgroup间切换输出,来避免连续的输出128Byte。

32倍频的DDR5 prefetch16,难道就不会有输出128B的问题了吗?

确实没有这个问题。如果想要继续使用bankgroup的方法,在多个bankgroup之间切换,也很难做到。因此DDR5的64bit bus切成了两半,32bit x 16 仍然是64B。

实际上64bit额外还有ECC bit,不过我们不必理解。

DDR Page Size

DDR Page Size实际上是每次激活DDR时,输出到row buffer中的数据大小,具体的计算方式是2^column_width * chip_width / 8 Byte.

如果DDR的column address 10 bit, 那么chip_width是4的 page size对应512B,chip_width是8的 page size对应1KB。

DDR Row Buffer

每次activation激活命令发送到DDR时,将DDR的一整行输出到row buffer中,如上图所示。row buffer中的一小部分当前请求的被预取的数据被输出到外部。

图自

如果我们下一次需要读取另一行,那么就需要先写回这一行,然后precharge bit line,再去打开新的一行,这样代价还是挺大的。

所以比较理想的情况是继续读取当前这一行的下一个部分数据,这样不需要写回,可以持续的从row buffer中读取。

上图中,row size即page size为2KB,本次预取chip3中的128b,如果下一次能继续读取后面的128b,那么只需要发送一个command命令就可以了。

我们借着这张图回顾一下上面介绍过的内容:

  • 每个chip位宽16bit,需要4个chip组成64bit

  • 外部时钟800Mhz,因为DDR double rate传输,所以实际上是1600Mhz,内部时钟200Mhz,时钟相差8倍。所以我们每次需要预取16x8=128bit.

  • 注意看上图中的每个chip都有一个红色的横条,也就是每次读取的时候都是不同chip的同一个位置的bank被读取。

  • 那么为什么Chip3中的不同的bank的红色横条的位置不一样?

DDR Bank Interleaving

DDR 同一个bank内不同的row之间切换需要上文说的 restore写回和precharge。

但是不同bank之间,共享命令地址数据总线,但是内部的memory是独立的,所以我们可以访问bank0的第1行之后,访问bank1的第7行,再访问bank3的第2行,bank之间的pipeline输出,最大程度的利用数据总线。

如下图所示,图自

DDR cell

上文说的DDR需要写回,是因为DDR是电容组成,存在泄露,除了写回,也需要定期刷新。上图中的Cs存储真正的memory。为了简单,我们将电压理解成0/1 V.

图自

  • 上一次操作结束后,会对DRAM precharge,将Cbl charge到0.5v的电位。

  • 我们如果发起读命令,activation操作,会激活一行,即拉高WL线,这时Cs的电位0/1 V和Cbl0.5v的电压会发生charge sharing

  • Sensing阶段会将电压差经过sense amplifier 存储这一行的数据到row buffer中

  • Read 命令会从row buffer中,预取对应长度的数据,输出到外侧

  • 在sense amplifier 完成工作后,会将Vdd的电压充至1V,即为restore,此时被破坏了的数据得到了恢复

  • 断开wordline,充电bitline至0.5v,即为precharge操作。

简单的说

  • Activate 激活对应行 word line,数据输出到row buffer

  • Read 列命令对应bitline从row buffer中读取数据

  • Precharge命令恢复bitline至一半电压

 

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

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

相关文章

html悬浮事件(表格th)

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <h4>一行三列:</h4> <table border"1"> <tbody class"fileLi…

UE5笔记【十三】蓝图系统-血量控制系统

上一篇我们讲解了&#xff0c;蓝图中的函数功能。可以将蓝图中重复的代码&#xff0c;再次利用。演示了Smasher的效果。 这一篇中&#xff0c;我们讲解Smasher造成伤害之后&#xff0c;如何保存和计算角色的血量状态。 我们的设计思路是&#xff1a;smasher每次碰到角色是&am…

GCSE英语语言考试-角色定位

What is characterisation? 什么是角色定位&#xff1f; Characterisation is the way writers create characters and make them believable. When writing about texts, it is easy to treat characters as real people. Try to remember that the author is creating chara…

大数据 finalshell免密登录

私有云 查看私有云创建的虚拟机 本机用FinalShell连接三个虚拟机 使用浮动IP地址创建连接 设置主机名 maser虚拟机 slave1虚拟机 slave2虚拟机 IP地址与主机名映射 master虚拟机 slave1虚拟机 slave2虚拟机 ##关闭防火墙 关闭防火墙&#xff1a;systemctl stop f…

LeaRun.net代码生成器 一键生成前后端代码

自动代码生成是指根据自然语言的功能描述来生成代码。在项目开发过程中&#xff0c;有很多业务模块的代码是具有一定规律性的&#xff0c;例如controller控制器、service接口、service实现类、mapper接口、model实体类等等&#xff0c;这部分代码可以使用代码生成器生成&#x…

一种通过刷写替换boot的方法

写在前面的废话 众所周知,ECU软件包括BOOT和APP两部分,一般来说,boot是固化的软件,改动可能性很小,一般用来更新APP,但是,如果有一天boot真的需要更新呢,而且是大批量的更新,真的需要一个个的开盖烧录吗,有没有一种便捷的方式去实现boot的替换呢?下面提供一种boot替…

手把手教你使用SpringBoot做一个员工管理系统【配置篇】

手把手教你使用SpringBoot做一个员工管理系统【配置篇】1.导入资源2.编写pojo层3.编写dao层4.首页实现5.页面国际化1.导入资源 导入前端文件&#xff1a; 管理系统前端源码下载地址 将下载的前端文件导入到SpringBoot资源目录&#xff1a; 导入Maven依赖&#xff1a;&#x…

iOS微信8.0.31更新,带来7个功能

近日&#xff0c;iOS微信更新了8.0.31正式版。经过几天的深入体验&#xff0c;我发现了7个新特性。如果你还没有升级&#xff0c;我们就往下看吧。 功能一&#xff1a;优化编辑按钮 微信发图片&#xff0c;发送前可以编辑&#xff0c;底部的编辑按钮变了。新版画笔工具变成了钢…

数据驱动测试-从方法探研到最佳实践

作者&#xff1a;刘红妍 导读 在自动化测试实践中&#xff0c;测试数据是制造测试场景的必要条件&#xff0c;本文主要讲述了在沟通自动化框架如何分层&#xff0c;数据如何存储&#xff0c;以及基于单元测试pytest下如何执行。并通过实践案例分享&#xff0c;提供数据驱动测…

qq录制视频保存到哪了?qq录制视频怎么没了?找回方法在这

相信很多小伙伴都跟小编一样&#xff0c;使用qq录屏录制好后&#xff0c;结果就怎么也找不到录屏的文件了。经过小编一番研究&#xff0c;终于找到了qq录屏后视频文件的所保存的文件路径了。qq录制视频保存到哪了&#xff1f;别担心&#xff0c;下面小编就带大家一起来找找看。…

VS代码片段(CodeSnippet)的制作以及常用代码片段记录

总目录 文章目录总目录前言一、代码片段是什么&#xff1f;1.了解2.查找代码片段文件夹二、编写代码片段1.认识代码片段2.编写自定义代码片段1、trycf (try,catch,finally)2、propp&#xff08;用于MVVMLight中&#xff09;3、ts &#xff08;创建一个test方法&#xff09;3.使…

零基础入门:实时音视频技术基础知识全面盘点

1、引言 随着移动网络速度越来越快、质量越来越来&#xff0c;实时音视频技术已经在各种应用场景下全面开花&#xff0c;语音通话、视频通话、视频会议、远程白板、远程监控等等。 实时音视频技术的开发也越来越受到重视&#xff0c;但是由于音视频开发涉及知识面比较广&…

可视化搭建,1天开发1款“智慧楼宇”应用

随着我国城市建设的飞速发展&#xff0c;现代建筑正朝着智能化和网络化不断前进。物联网技术、智能化技术使得建筑内众多公共资源具有语境感知能力&#xff0c;现代建筑进入了智慧楼宇阶段。 天翼物联推出智慧楼宇应用&#xff0c;为物业等管理单位提供安全监控、能源监控、智慧…

【DBN分类】基于哈里斯鹰算法优化深度置信网络HHO-DBN实现数据分类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

oracle学习篇(一)

oracle学习篇(一) 1 oracle属于大型数据库吗? 解答:是的,数据库按照负载量的规模可以分为一下几类 小型数据库:ACCESS 中型数据库:mysql 大型数据库(海量数据):oracle、db22 创建并使用户可用 2.0 前提 必须是要sys或者system这种需要有管理权限的才能进行用户的创建 普通…

链表反转,指定区间反转,k个一组反转---详解

牛客上的三道反转链表的题&#xff0c;入门题&#xff0c;反转链表有很多种做法&#xff0c;本来做第一题的时候是随便写了一种&#xff0c;然后后面发现我用的方法&#xff0c;在做第二题第三题的时候有点繁琐&#xff0c;所以就把三道题一起考虑了一下&#xff0c;选了一种相…

[附源码]Python计算机毕业设计二手图书回收销售网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

python3.9.0 windows环境搭建

第一步&#xff1a; 下载安装包&#xff1a;CNPM Binaries Mirror 执行exe安装。。。。。 第二步&#xff1a;升级pip 和 setuptools&#xff08;避免在每一个虚拟环境中都要升级&#xff09; python -m pip install --upgrade pip python -m pip install --upgrade setuptoo…

基于android音乐播放器的设计

本科毕业论文&#xff08;设计&#xff09;诚信声明 本人郑重声明&#xff1a;所呈交的毕业论文&#xff08;设计&#xff09;&#xff0c;题目《………基于android音乐播放器的设计……………………………》是本人在指导教师的指导下&#xff0c;进行研究工作所取得的成果。对…

ChatGPT写Flask-Demo——有体验地址

ChatGPT中API的试用 最近ChatGPT智能AI很火&#xff0c;可以写代码&#xff0c;DEBUG&#xff0c;写简历等等 上去查看了一下&#xff0c;是可以调用API的&#xff0c;本着学习的态度就是用这个款AI辅助我写了一个demo&#xff08;本人原来对flask只懂一点点&#xff09; 目录0…