数据库管理-第218期 服务器内存(20240711)

数据库管理218期 2024-07-11

  • 数据库管理-第218期 服务器内存(20240711)
    • 1 内存
    • 2 ECC内存
    • 3 原理
      • 3.1 多副本传输
      • 3.2 纠错码
      • 3.3 汉明码
    • 总结

数据库管理-第218期 服务器内存(20240711)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

之前对CPU、SSD和网络等服务器涉及的硬件进行过讲解,除开主板承载了前面说的这些组件以外,还有一个非常重要的组件,那就是内存,相较于一般桌面级(一般家用PC)内存,服务器内存一把自带纠错功能,我们也称之为ECC(Error Checking and Correcting)内存。
本期就简单针对ECC内存如何工作的进行简单讲解。

1 内存

内存(Memory)是计算机的重要部件,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。
内存的出现主要是为了弥补外部存储与CPU内建缓存(即L1、L2、L3)之间巨大的带宽与延迟差异,本质上也是一个相较于CPU内建缓存更大但是一般远小于外部存储的中间数据转存设备,提前将数据从速度较慢的外部存储提前加速准备,减少甚至消除CPU获取数据等待时间。
我们现在在服务器上主要使用的内存是DDR内存,具体什么是DDR这里就不做深入讲解了,主流的内存代数为DDR4和DDR5。除了一般内存以外,还有基于内存接口(或PCIe接口)的非易失性内存PMEM(以Intel傲腾为例),在内存和外部存储之间提供了一块更大且速度接近于内存的数据缓存区域。

2 ECC内存

一般来说,服务器是承载重要的业务系统的,在电子设备运行过程中是存在大量电磁干扰的,这些电磁干扰是可能造成内存与CPU数据交互过程中发生比特翻转(即0和1互换),这样数据执行就会发生错误,如果是一般PC的软件或程序运行可能即使报错或者闪退,但是如果是重要系统出现该问题则会造成比较严重的后果(毕竟银行不想你的资产平白无故多几个0,你也不希望自己资产变少吧)。
那么ECC内存就应运而生了,主动发现数据中出现的数据错误,并予以纠正。

3 原理

这里先介绍两种比较原始的解决方案:

3.1 多副本传输

即一段数据传输3份,如果某一份的任意位置出现问题了,可以纠正:
image.png
但是问题也出现了,虽然出现的概率很低,如果有两份数据在同一个位置都发生了比特翻转,那么这份数据校验纠错就会出现问题:
image.png
而使用这种方式最大的问题还是浪费IO带宽。

3.2 纠错码

这种方式数据的开头添加一个纠错码,即在每一段数据前添加一个纠错码,当数据中1的数量为偶数则纠错码为0,奇数则纠错码是1。
image.png
如果纠错码与1的数量不匹配则重新传输这份数据。
image.png
这里也造成了一个问题,每次校验只能判断整份数据是否正常,理论上没有做到纠错,重新传输会增大延迟。
同时如果同时出现两位数据错误,则依然无法达到校验的目的。

3.3 汉明码

汉明码是目前ECC内存使用的主要校验纠错方式。
这里循序渐进一下,把一个16bit的数据按照下面的方式排布,假设2号位负责对右边部分进行奇偶校验,那么这份数据两个1,则2号位为0。如果数据出现错误,奇偶校验判定右半区没有问题,那么问题就在左半区了,反之问题就在右边。
image.png
如下图,1号位对2、4列进行奇偶校验,那么1号位存储则为1。如果2、4列奇偶校验出现问题,那么问题就在2、4列,反之是1、3列出现问题。
image.png
上面两种配合起来就能很好确认那一列数据出现了问题:
image.png
接下来使用类似的方式,用4号位校验2、4行,8号为校验下半区,通过行分列、分区奇偶校验就可以找到错误的具体位置,执行纠错(翻转)即可。
image.png
但是上面的判断前提是默认数据出现了问题,用上面的方法判断完成之后,0号的数据位是没有纳入保护中的,他的错误与否,不影响上面奇偶校验的结果。因此我们将0号位用3.2中的方式来校验整块数据。
image.png
这种情况下如果有两个错误,会出现全盘奇偶校验和分列分区奇偶校验结果相冲突,无法判断错误位置,但是可以判定位整块数据出现异常。重新传输数据即可。
image.png
但是当数据错误出现到3个时,就无法判断了。
image.png
换一种方式,我们会发现,校验码的位置都是2的N次方:
image.png
校验码只需要放在2的N次方位置上,那么块越大,纠错码占用的内容就更少,但是出现多位翻转的概率也就越大。一般的ECC传输块大小是72bit,64bit是数据,8bit是纠错码。因此一般8G容量的内存仅需要8块1G的内存颗粒,而ECC内存要达到8G容量就需要9块1G的内存颗粒,多的1G用于存储多出来的纠错码所占容量。
但是计算机校验纠错肯定不会如我们一般的“傻乎乎”的方式去计算错误位置,这里可以利用二进制的魅力来实现,我们把位置用二进制来表示:
image.png
我们将所有为1的位置拿出来,做个竖向二进制抑或运算,就可以直接得出有问题的位置:
image.png

附:还有一种LDPC(Low Density Parity-Check Code),即低密度奇偶校验码,具体实现原理这里就不做解释了,这种方式可以判断多位翻转的问题,常用于SSD的校验纠错。由于内存的高速和实现成本的特性,因此还是使用汉明码来实现ECC。

总结

本期简单介绍了ECC内存是如何实现校验纠错的。
老规矩,知道写了些啥。

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

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

相关文章

利用OSMnx进行城市路网数据的速度与通行时间推算及分析

本文还是以广州市路网为例,通过osmmx调用ox.add_edge_speeds(G)时,该函数会遍历图G 中的每条边(即每条街道),并基于一些预设的规则或街道属性(如街道类型、是否为主要道路、是否有速度限制等)来…

Logistic回归算法原理详解及应用

目录 引言 基本原理 损失函数 参数估计 优缺点 应用 Logistic回归优化算法 具体案例 引言 逻辑回归(Logistic Regression)是一种广泛用于分类问题的统计方法,尤其是二分类问题。尽管名字中有“回归”二字,但它实际上是一…

Vue3总结汇总(不间断更新)

一、常用依赖插件汇总 1.1 依赖 UI组件库:1、AntDesignVue2、ElementPlus 网络请求:axios 组件通信:mitt ID生成:nanoid 路由:vue-router 三维:cesium 构建工具:Vite vite-plugin-vue-setup-extend:简化set…

编译打包自己的云手机(redroid)镜像

前言 香橙派上跑云手机可以看之前的文章: 香橙派5plus上跑云手机方案一 redroid(带硬件加速)香橙派5plus上跑云手机方案二 waydroid 还有一个cuttlefish方案没说,后面再研究,cuttlefish的优势在于可以自定义内核且selinux是开启的&#xf…

推荐5个实用的可视化工具

面对海量的数据,我们应该如何高效地提取其价值,让复杂的信息一目了然?这正是可视化工具大显身手的舞台。今天,我就来分享几款非常好用的数据可视化工具,它们不仅能够帮助你轻松驾驭数据,还能让你的工作汇报…

HCIE是什么等级的证书?

HCIE(华为认证互联网专家,Huawei Certified Internetwork Expert)是华为认证体系中的最高等级证书。它要求考生具备在复杂网络环境中规划、设计、部署、运维和优化网络的能力。HCIE认证是华为认证体系中最具挑战性和含金量的认证之一&#xf…

鸿蒙语言基础类库:【@ohos.application.testRunner (TestRunner)】 测试

TestRunner TestRunner模块提供了框架测试的能力。包括准备单元测试环境、运行测试用例。 如果您想实现自己的单元测试框架,您必须继承这个类并覆盖它的所有方法。 说明: 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏,其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考:浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

使用Apache服务部署静态网站

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、网站服务程序 ​二、配置服务文件参数 ​三、SELinux安全子系统 四、个人用户主页功能 ​五、虚拟网站主机功能 六、Apache的访问控制…

CSA笔记1-基础知识和目录管理命令

[litonglocalhost ~]$ 是终端提示符,类似于Windows下的cmd的命令行 litong 当前系统登录的用户名 分隔符 localhost 当前机器名称,本地主机 ~ 当前用户的家目录 $ 表示当前用户为普通用户若为#则表示当前用户为超级管理员 su root 切换root权限…

计算器原生js

目录 1.HTML 2.CSS 2.JS 4.资源 5.运行截图 6.下载连接 7.注意事项 1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

pytorch学习(六):卷积层的使用

卷积函数的概念 卷积核从输入特征图的左上角开始&#xff0c;按照设定的步长&#xff08;Stride&#xff09;滑动。步长决定了卷积核每次滑动的像素数&#xff0c;这里我们假设步长 s1。在每次滑动时&#xff0c;卷积核与输入特征图对应位置的元素相乘&#xff0c;然后将这些乘…

Linux C语言基础 day9

目录 思维导图 学习目标&#xff1a; 学习内容&#xff1a; 1. 值传递与地址传递&#xff08;非常重要&#xff09; 1.1 值传递 1.2 地址传递 2. 递归函数 2.1 递归的概念 2.2 递归条件 2.3 递归思想 3. 指针 3.1 指针相关概念 3.2 指针变量的定义 3.2.1. 定义格…

对于GPT-5在一年半后发布的期待!

首先&#xff0c;如果GPT-5真如OpenAI首席技术官米拉穆拉蒂&#xff08;Mira Murati&#xff09;在采访中所透露的那样&#xff0c;在一年半后发布&#xff0c;并在某些领域达到博士级的智能&#xff0c;这无疑将是一个令人振奋的消息。这一预测不仅反映了AI技术的快速发展&…

Raw Socket(二)循环队列收发数据

完整代码在&#xff1a; 添加链接描述 其中tcp_handshake文件夹是实现TCP三次握手的demo。 完整代码参考&#xff1a; https://github.com/praveenkmurthy/Raw-Sockets 代码实现基于raw socket的TCP协议&#xff0c;发送http请求包并接收回包&#xff0c;…

C# Winform布局控件的几种方式

在 C# WinForms 应用程序中&#xff0c;布局控件和布局管理器可以帮助开发者创建响应式的用户界面&#xff0c;即使在窗口大小改变时也能保持控件的正确位置和尺寸。 通常我们采用Panel和Dock&#xff0c;辅助Anchor实现类似如下的布局。 以下是几种常见的布局控件和方法&…

07:串口通信二

串口编程 1、与波特率之相关的寄存器2、PCON寄存器3、SCON寄存器4、配置的代码分析5、向PC发送一段字符串6、PC机向单片机发送字符控制LED1灯的亮灭 1、与波特率之相关的寄存器 如图&#xff0c;与串口通信相关的寄存器主要是SCON和PCON寄存器。 2、PCON寄存器 SMOD&#xff1…

普通人还有必要学习 Python 之类的编程语言吗?

在开始前分享一些编程的资料需要的同学评论888即可拿走 是我根据网友给的问题精心整理的对于编程的重要性&#xff0c;这里就不详谈了。 未来&#xff0c;我们和机器的交流会越来越多&#xff0c;编程可以简单看作是和机器对话并分发给机器任务。机器不仅越来越强大&#xff0…

java面向对象进阶篇--static

一、前言 java进阶篇已经开始了&#xff0c;先从面向对象开始&#xff0c;由于时间原因今天就只更新了static部分&#xff0c;内容上特别详细&#xff0c;一些特别的注意事项也在反复的提醒大家。 温馨提示一下&#xff0c;往后的java篇会越来越难&#xff0c;希望大家能够坚…

IOS上微信小程序密码框光标离开提示存储密码解决方案

问题&#xff1a; ios密码框输入密码光标离开之后会提示存储密码的弹窗 解决方案 1、在苹果手机上面把 “自动填充密码”关闭&#xff0c;但是苹果这个默认开启&#xff0c;而且大部分客户也不会去自己关闭。 2、欺骗苹果手机&#xff0c;代码实现。 先说解决思路&#xf…