当前位置: 首页 > article >正文

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࿰

相关文章:

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

本文篇幅较长,涉及背景原理介绍方便大家理解其运作方式 以及 基于DDR5协议具体展开介绍。 背景原理介绍 上图参考:DDR 内存中的 ECC 写入操作时,On-die ECC的工作过程如下: SoC将需要写入到Memory中的数据发送给控制器控制器将需要写入的数据直接发送给DRAM芯片在DDR5 DR…...

Linux系统之gettext详解

gettext 是一个用于国际化(i18n)和本地化(l10n)的工具集,旨在帮助开发者创建多语言支持的应用程序。它主要通过提供一系列工具和库来简化文本翻译过程。 gettext 工作流程 标记源代码:在源代码中用 _() 函…...

基于Qt封装数据库基本增删改查操作,支持多线程,并实现SQLite数据库单例访问

抽出来的,直接用就行 头文件CPP文件使用示例 头文件 #ifndef DATABASECOMMON_H #define DATABASECOMMON_H/** 单例封装SQLite通用操作,支持多线程调用;可扩展兼容其他数据库,照着SysRunDatabase写,并且重载openDataba…...

EC800X QuecDuino开发板介绍

支持的模组列表 EG800KEC800MEC800GEC800E 功能列表 基本概述 EC800X QuecDuino EVB 搭载移远 EC800 系列模组。支持模组型号为: EC800M 系列、EC800K 系列、EG800K 系列、EC800E 系列等。 渲染图 开发板的主要组件、接口布局见下图 资料下载 EC800X-QuecDui…...

ARM P15协处理器指令详解:架构、编程与应用实践

ARM P15协处理器指令详解:架构、编程与应用实践 引言 在ARM处理器架构中,协处理器(Coprocessor)系统是扩展处理器功能的关键机制,其中CP15(即协处理器15)作为系统控制协处理器,承担着内存管理、缓存控制、系统配置等核心功能。本…...

PHP轻量级聊天室源码(源码下载)

最新版本:v2.1.2 (2024.08更新) 运行环境:PHP5.6(无需MySQL) 核心特性:手机电脑自适应、TXT数据存储、50条历史消息 适用场景:小型社区/企业内网/教育培训即时通讯 一、核心功能亮点(SEO关键词布…...

MySQL数据表添加字段(三种方式)

基本概念解析 数据表由行和列组成,专业术语中: 字段(Field):表的纵向列结构记录(Record):表的横向行数据 字段添加方法详解 MySQL支持三种字段添加位置,语法格式均通…...

leetcode hot100刷题日记——33.二叉树的层序遍历

解题总结二维vector的初始化方法 题目描述情况1:不确定行数和列数情况2:已知行数和列数情况3:已知行数但不知道列数情况4:已知列数但不知道行数 题目描述 解答:用队列 思路都差不多,我觉得对于我自己来说&a…...

2、PyTorch基础教程:从张量到神经网络训练

1、PyTorch基础 PyTorch 是一个开源的深度学习框架,以其灵活性和动态计算图而广受欢迎。 PyTorch 主要有以下几个基础概念:张量(Tensor)、自动求导(Autograd)、神经网络模块(nn.Module&#xf…...

《数据结构初阶》【番外篇:快速排序的前世今生】

【番外篇:快速排序的前世今生】目录 前言:---------------起源---------------一、诞生:二、突破:三、核心: ---------------发展---------------1. 早期版本:简单但不稳定1960 年:初始版本 2. …...

【笔记】基于 MSYS2(MINGW64)的 Poetry 虚拟环境创建指南

#工作记录 基于 MSYS2(MINGW64)的 Poetry 虚拟环境创建指南 一、背景说明 在基于 MSYS2(MINGW64)的环境中,使用 Poetry 创建虚拟环境是一种高效且灵活的方式来管理 Python 项目依赖。本指南将详细介绍如何在 PyChar…...

PINNs案例——二维磁场计算

基于物理信息的神经网络是一种解决偏微分方程计算问题的全新方法… 有关PINN基础详见:PINNs案例——中心热源温度场预测问题的torch代码 今日分享代码案例:二维带电流源磁场计算 该案例参考学习论文:[1]张宇娇,孙宏达&#xff0…...

Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法

一、排序与分发相关 BY 关键字 1. ORDER BY:全局统一排序 作用:对查询结果进行全局排序,确保最终结果集完全有序(仅允许单个 Reducer 处理数据)。 语法: SELECT * FROM table_name ORDER BY column1 [A…...

数据类型检测有哪些方式?

typeof 其中数组 对象 null都会判断为Object,其他正确 typeof 2 // number typeof true //bolean typeof str //string typeof [] //Object typeof function (){} // function typeof {} //object typeof undefined //undefined typeof null // nullinstanceof 判断…...

算法打开13天

41.前 K 个高频元素 (力扣347题) 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2: 输入: nums [1], k 1 输出: …...

Freeqwq 世界首个免费无限制 分布式 AI 算力平台 https://qwq.aigpu.cn/

官网:Free QWQ - 免费分布式 AI 算力平台 基于来自全国各地 50 台家用电脑的 3090、4080、4090 显卡分布式算力,我们为开发者提供完全免费、无限制的 QwQ 32B 大语言模型 API。无需注册,无需充值,立即获取 API Key 开始使用。 …...

广告拦截器:全方位拦截,畅享无广告体验

在数字时代,广告无处不在。无论是浏览网页、使用社交媒体,还是观看视频,广告的频繁弹出常常打断我们的体验,让人不胜其烦。更令人担忧的是,一些广告可能包含恶意软件,威胁我们的设备安全和个人隐私。AdGuar…...

.net Avalonia应用程序生命周期

.NET Avalonia 应用程序生命周期全解析 在 .NET 开发领域,Avalonia 作为一个跨平台的 UI 框架,为开发者提供了强大的功能和灵活性。了解 Avalonia 应用程序的生命周期,对于构建高效、稳定的应用至关重要。本文将深入探讨 Avalonia 应用程序生…...

主数据编码体系全景解析:从基础到高级的编码策略全指南

在数字化转型的浪潮中,主数据管理(MDM)已成为企业数字化转型的基石。而主数据编码作为MDM的核心环节,其设计质量直接关系到数据管理的效率、系统的可扩展性以及业务决策的准确性。本文将系统性地探讨主数据编码的七大核心策略&…...

Selenium操作指南(全)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 大家好,今天带大家一起系统的学习下模拟浏览器运行库Selenium,它是一个用于Web自动化测试及爬虫应用的重要工具。 Selenium测试直接运行在…...

Go语言中的数据类型转换

Go 语言中只有强制类型转换,没有隐式类型转换。 1. 数值类型之间的相互转换 1.1. 整型和整型之间的转换 package main import "fmt"func main() {var a int8 20var b int16 40fmt.Println(int16(a) b)// 60 }1.2. 浮点型和浮点型之间的转换 packag…...

35、请求处理-【源码分析】-自定义参数绑定原理

35、请求处理-【源码分析】-自定义参数绑定原理 自定义参数绑定原理主要涉及Spring Boot如何将HTTP请求中的参数自动绑定到控制器方法的自定义对象参数上。以下是详细的解析: ### 1. 参数解析器的选择 - **HandlerMethodArgumentResolverComposite**: - …...

智绅科技——科技赋能健康养老,构建智慧晚年新生态

当老龄化浪潮与数字技术深度碰撞,智绅科技以 “科技赋能健康,智慧守护晚年” 为核心理念,锚定数字健康与养老服务赛道,通过人工智能、物联网、大数据等技术集成,为亚健康群体与中老年人群构建 “监测 - 预防 - 辅助 - …...

STM32通过KEIL pack包轻松移植LVGL,并学会使用GUI guider

先展示最终实现的功能效果如下: 1.目的与意义 之前在学习STM32移植LVGL图形库的时候,搜到的很多教程都是在官网下载LVGL的文件包,然后一个个文件包含进去,还要添加路径,还要给文件改名字,最后才能修改程序…...

day43 python Grad-CAM

目录 一、为什么需要 Grad-CAM? 二、Grad-CAM 的原理 三、Grad-CAM 的实现 1. 模块钩子(Module Hooks) 2. Grad-CAM 的实现代码 四、学习总结 在深度学习领域,神经网络模型常常被视为“黑盒”,因为其复杂的内部结…...

在 Ubuntu 上挂载其他硬盘的步骤

一、查看当前磁盘信息 打开终端,执行: lsblk 这个命令会列出所有的块设备(包括硬盘和分区)。比如输出可能如下: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk └─sda1 8:1 0 …...

SQL的查询优化

1. 查询优化器 1.1. SQL语句执行需要经历的环节 解析阶段:语法分析和语义检查,确保语句正确;优化阶段:通过优化器生成查询计划;执行阶段:由执行器根据查询计划实际执行操作。 1.2. 查询优化器 查询优化器…...

MCU如何从向量表到中断服务

目录 1、中断向量表 2、编写中断服务例程 中断处理的核心是中断向量表(IVT),它是一个存储中断服务例程(ISR)地址的内存结构。当中断发生时,MCU通过IVT找到对应的ISR地址并跳转执行。本文将深入探讨MCU&am…...

物联网基础概念

入行物联网两年半,想写点东西记录踩过的坑,能让自己反省的同时,也希望能帮到其他小伙伴。 本人仍是小白,请看客朋友谨慎参考。另,本人主要从事智慧用电和智慧医疗行业,其他行业不一定有参考性。 以下所有内…...

Linux线程同步实战:多线程程序的同步与调度

个人主页:chian-ocean 文章专栏-Linux Linux线程同步实战:多线程程序的同步与调度 个人主页:chian-ocean文章专栏-Linux 前言:为什么要实现线程同步线程饥饿(Thread Starvation)示例:抢票问题 …...