DDR5 ECC详细原理介绍与基于协议讲解

本文篇幅较长,涉及背景原理介绍方便大家理解其运作方式 以及 基于DDR5协议具体展开介绍。

背景原理介绍

上图参考:DDR 内存中的 ECC

写入操作时,On-die ECC的工作过程如下:

  1. SoC将需要写入到Memory中的数据发送给控制器
  2. 控制器将需要写入的数据直接发送给DRAM芯片
  3. 在DDR5 DRAM内部,根据写入的数据进行计算,生成对应的ECC码
  4. DRAM芯片将写入的数据和对应的ECC码保存在存储阵列中

读取操作基本上是写入过程的逆过程,On-die ECC的具体工作过程如下:

  1. DRAM芯片将数据和对应的ECC码读取出来
  2. DRAM根据读取出的数据进行计算,生成用于校验的ECC码
  3. DRAM将读取出的ECC码和上一步中计算生成的ECC码进行比较
  4. 若这两个ECC码相同,则表明读取出的数据没有发生错误,数据将直接传输给控制器;若这两个ECC码不同,则表明读取出的数据存在错误,将会对数据以单bit纠错的方式进行数据纠正

综上,On-die ECC的基本特征是ECC码的计算生成和比较都在DRAM芯片上进行。On-die ECC其实是一种较新应用在DRAM中的技术,随着DRAM芯片的不断微缩,到了DDR5技术代,BL和WL的间距和线宽不断减小,存储单元间发生串扰的可能性逐渐增加,因此误码率也在不断上升,需要通过On-die ECC来降低误码率。

Note:row hammer作为一种经典的内存硬件错误,即就是狂锤某一行,隔山打牛,让隔壁的行不寒而栗,在颤抖中改变立场。通俗一点的语言解释一下row hammer:DDR数据读取的过程,是通过ACT命令激活某一行row,读取到sense amp中,之后再写回到原来的cell。由于DDR芯片密度的增高,这种频繁的读写会对临近行产生影响,多次之后甚至会造成该cell的电量变化,进一步引起电平翻转

4.35 片上ECC -- 基于协议展开介绍

DDR5设备应实现内部单错误纠正(SEC:Single Error Correction)ECC以提高DRAM内部的数据完整性。DRAM将使用128个数据位来计算8个ECC校验位的ECC码。

对于x4 DDR5设备,即使x4是64位预取设备,内部预取用于片上ECC的是128位。对于x4设备的每个读或写事务,将内部访问DRAM阵列的额外部分,以提供用于128位ECC计算中所需的额外64位。换句话说,在x4设备中,每个8位ECC校验位字与DRAM的两个64位部分相连。对于x8设备,不需要额外的预取,因为预取与外部传输大小相同。对于x16设备,从不同的内部bank(相同的外部bank地址)中提取了两个128位数据字和它们对应的8个校验位。每个128位数据位和对应的8个校验位分别并行地进行检查。

在读取时,DRAM会在将数据返回给内存控制器之前纠正任何单比特错误。在读取周期中,DRAM不会将纠正后的数据写回阵列。

在写入时,DRAM会计算ECC并将数据和ECC位写入阵列。如果外部数据传输大小小于128个数据位编码字(对于x4设备),则DRAM将需要执行内部的“读-修改-写”操作。在合并传入的写入数据之前,DRAM会纠正因内部读取而产生的任何单比特错误,并重新计算8个ECC校验位,然后将数据和ECC位写入阵列。对于x8和x16 DDR5的情况,不需要进行内部读取操作。

对于x16设备,从两个内部bank(相同的外部bank地址)读取两个136位码字(two 136-bit code words࿰

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

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

相关文章

基于springboot的益智游戏系统的设计与实现

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xff0…

STM32软件spi和硬件spi

核心观点 本文主要介绍了SPI通信的两种实现方式:软件SPI和硬件SPI。详细阐述了SPI通信协议的基本概念、硬件电路连接方式、移位示意图、时序基本单元以及四种工作模式。同时,对W25Q64模块进行了详细介绍,包括其硬件电路、框图以及操作注意事…

NLP学习路线图(十五):TF-IDF(词频-逆文档频率)

在自然语言处理(NLP)的浩瀚宇宙中,TF-IDF(词频-逆文档频率) 犹如一颗恒星,虽古老却依然璀璨。当ChatGPT、BERT等大模型光芒四射时,TF-IDF作为传统方法的代表,其简洁性、高效性与可解…

爱其实很简单

初春时,元元买来两只芙蓉鸟。一只白色的,是雄鸟;另一只黄色的,是雌鸟。 每天清晨日出之前,雄鸟便开始“啁啾——啁啾”地啼鸣,鸣声清脆婉转,充满喜悦,仿佛在迎接日出,又…

CentOS 7 环境下部署 LAMP

在 CentOS 7 环境下部署 LAMP(Linux Apache MySQL 5.7 PHP 7.4) 环境的详细步骤如下: 1. 系统准备 1.1 更新系统 sudo yum update -y 1.2 安装依赖 sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel e…

如何查看电脑电池性能

检查电脑电池性能的方法如下: 按下winR键,输入cmd回车,进入命令行窗口 在命令行窗口输入powercfg /batteryreport 桌面双击此电脑,把刚刚复制的路径粘贴到文件路径栏,然后回车 回车后会自动用浏览器打开该报告 红…

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本,队列的返回元素是由是由插入顺序决定的,先进先出嘛,但是有时我们可能想要返回优先级较高的元素,比如最大值?这种场景下就由优先级队列登场。 优先级队列底层是由堆实…

在Windows本地部署Dify详细操作

Dify官网文档:产品简介 - Dify Docs 1.硬件要求 2.部署方式选择 本次我选择Docker Compose 部署,接下来我将根据官方文档指引,在windows电脑上完成dify本地部署 3.DockerCompose本地部署Dify 3.1 安装WSL2 官方安装WSL2的操作说明入口&…

Flutter 与 Android 原生布局组件对照表(完整版)

本对照表用于帮助 Android 开发者快速理解 Flutter 中的布局组件与原生布局的关系。 📘 Flutter ↔ Android 布局组件对照表 Flutter WidgetAndroid View/Layout说明ContainerFrameLayout / View通用容器,可设置背景、边距、对齐等RowLinearLayout (hor…

ps填充图层

在Photoshop(PS)中,填充图层是一种强大的工具,它允许用户在不破坏原始图像数据的情况下,快速为图像添加颜色、渐变或图案等填充效果。以下从填充图层的类型、创建方法、编辑与修改、应用场景等方面进行详细介绍。 填充…

网页前端开发(基础进阶1--盒子模型)

颜色表示方法3种: 1.关键字: color:green; gray red yellow 2.rgb表示法:红,绿,蓝三原色。rgb(r,g,b),r表示红色,g表示绿…

第10讲、Odoo 18框架设计原理全解析

前言 Odoo是一套开源的企业资源规划(ERP)系统,以其模块化、可扩展性和全面的业务应用套件而闻名。Odoo 18作为其最新版本,在架构设计、前端技术和后端实现上都有显著的创新和优化。本文将从前端的OWL组件化、模块化,到后端的ORM封装&#xf…

CSS3 渐变、阴影和遮罩的使用

全文目录: 开篇语**前言****1. CSS3 渐变 (Gradient)****1.1 线性渐变 (linear-gradient)****1.2 径向渐变 (radial-gradient)** **2. CSS3 阴影 (Shadow)****2.1 盒子阴影 (box-shadow)****2.2 文本阴影 (text-shadow)** **3. CSS3 遮罩 (Mask)****3.1 基本遮罩 (m…

[Linux]虚拟地址到物理地址的转化

[Linux]虚拟地址到物理地址的转化 水墨不写bug 文章目录 一、再次认识地址空间二、页表1、页表的结构设计2、页表节省了空间,省在哪里?3、页表的物理实现 一、再次认识地址空间 OS和磁盘交互的内存基本单位是4KB,这4KB通常被称为内存块。OS对…

Kubernetes(K8s)核心架构解析与实用命令大全

在容器化技术席卷全球的今天,Kubernetes(简称K8s,以“8”代替“ubernete”八个字母)已成为云原生应用部署和管理的核心基础设施。作为Google基于内部Borg系统开源打造的容器编排引擎,K8s不仅解决了大规模容器管理的难题…

基于微信小程序的scratch学习系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xff0…

postgresql 流复制中指定同步的用户

postgresql 流复制中指定同步的用户 在创建postgresql流复制的过程中,可以指定用户名。 主库pg_hba.conf配置 vi $PGDATA/pg_hba.conf host replication repl 192.168.56.12/32 md5 host all all 0.0.0.0/0 md5主库创建同步的用户 # 主库创建 replicator 流复制…

基于springboot的运动员健康管理系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xff0…

工具识别系统Python+深度学习+人工智能+卷积神经网络算法+TensorFlow+图像识别

一、介绍 工具识别系统,使用Python作为主要编程语言,基于TensorFlow搭建卷积神经网络算法,通过收集了8种常见的日常工具图片(“汽油罐(Gasoline Can)”, “锤子(Hammer)”, “钳子&…

2024 CKA模拟系统制作 | Step-By-Step | 8、题目搭建-创建 Ingress

目录 ​​​​​​免费获取题库配套 CKA_v1.31_模拟系统 一、题目 二、核心考点 Ingress 资源定义 Ingress Controller 依赖 服务暴露验证 网络层次关系 三、搭建模拟环境 1.创建命名空间 2.安装ingress ingress-nginx-controller 3.创建hello.yaml并部署 四、总结 …