数据库管理-第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内存是如何实现校验纠错的。
老规矩,知道写了些啥。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【边缘计算网关教程】4.西门子PPI协议对接

前景回顾:【边缘计算网关教程】3.创建第二个流程-CSDN博客 目录 1. 硬件连接 2. PLC串口参数 2.1. 打开STEP7软件 2.2. 查看通信参数 3. 网关设置 3.1. PLC连接设置 3.2. 数据点位设置 3.3. 测试 西门子 PPI 协议 适配PLC:S7-200 西门子S7-200 PLC…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(七)-通过无人机实现无线接入的独立部署

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

FPGA入门-自用

写代码,并将引脚对应到板子相应的引脚上 下载程序到板子上 遇到错误了,不按想的来的了,进行仿真 查看网表图查看问题所在 简化了一些步骤:未使用引脚的设置,电压设置; 通过画网表结构图来构成电路 时钟 …

JVM系列 | 对象的创建与存储

JVM系列 | 对象的生命周期1 对象的创建与存储 文章目录 前言对象的创建过程内存空间的分配方式方式1 | 指针碰撞方式2 | 空闲列表 线程安全问题 | 避免空间冲突的方式方式1 | 同步处理(加锁)方式2 | 本地线程分配缓存 对象的内存布局Part1 | 对象头Mark Word类型指针…

SQl server 日期函数查询相关练习

练习1.按月份分析销售数据。 create database date_db; use date_db; CREATE TABLE SalesData ( SaleID INT PRIMARY KEY IDENTITY(1,1), ProductName NVARCHAR(100) NOT NULL, SaleAmount DECIMAL(10, 2) NOT NULL, SaleDate DATE NOT NULL ); INSERT INTO Sa…

mybatis语法进阶1

日志的使用 我们在使用MyBatis的时候, 其实MyBatis框架会打印一些必要的日志信息, 在开发阶段这些日志信息对我们分析问题,理解代码的执行是特别有帮助的; 包括项目上线之后,我们也可以收集项目的错误日志到文件里面去; 所以我们采用专门的日志系统来处理. 步骤 导入坐标拷贝…

算法类学习笔记 ———— 图像金字塔

文章目录 介绍分类高斯金字塔(向下采样)构建步骤差分高斯金字塔 拉普拉斯金字塔 介绍 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉…

如何在Mac上恢复已删除的存档文件?

在本文中,我们将分享在 macOS 或 OS X 上运行的 MacBook、iMac 或 Mac mini 上恢复已删除存档文件的不同方法。 下载免费试用的 Mac 数据恢复软件以在 Mac 上恢复已删除的存档文件。 macOS 可以选择压缩您的文件。您只需选择文件,按住 Control 键单击&a…

【排序 - 插入排序 和 希尔排序】

插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是逐步构建有序序列。在排序过程中,它将未排序的元素逐个插入到已排序的部分中,从而在每次插入时扩展已排序序列的长度。 原理介绍 插入排序的基本思…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法,但通过CPU软解码的方式不仅延时高且十分占用资源,本文提供了一种从网络摄像头RTSP硬解码的拉流的方法,并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

ArcGIS识别不GDB文件地理数据库显示为空?

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 我们经常会碰到拷贝的GDB文件ArcGIS无法识别,软件只是把他当做普通的文件夹去看待&am…

主机安全-进程、命令攻击与检测

目录 概述反弹shell原理nc/dev/xxx反弹shell下载不落地反弹Shell各种语言反弹shell linux提权sudosuid提权mysql提权 Dnslog参考 概述 本文更新通过在主机(不含容器)上直接执行命令或启动进程来攻击的场景。检测方面以字节跳动的开源HIDS elkeid举例。每…

滑块拼图验证码识别

通常滑块验证码都是横向滑动,今天看到一个比较特别的滑块拼图验证码,他不仅能在横向上滑动,还需要进行纵向滑动。如下图所示: 他的滑块在背景图片的左上角,需要鼠标拖动左上角的滑块,移动到背景图的缺口位置…

Apache Doris:下一代实时数据仓库

Apache Doris:下一代实时数据仓库 概念架构设计快速的原因——其性能的架构设计、特性和机制基于成本的优化器面向列的数据库的快速点查询数据摄取数据更新服务可用性和数据可靠性跨集群复制多租户管理便于使用半结构化数据分析据仓一体分层存储 词条诞生技术概述适…

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析:使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代,数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究,数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

html02-标签继续学习

1.列表标签 1.1 列表标签的使用场景 场景&#xff1a;在网页中按照 行 展示关联性的内容&#xff0c;如&#xff1a;新闻列表、排行榜、账单等 特点&#xff1a;按照行的方式&#xff0c;整齐显示内容 种类&#xff1a;无序列表、有序列表、自定义列表 1.2无序列表 <!--…

0.单片机工作原理

文章目录 最小系统 单片机芯片 时钟电路 复位电路 电源 最小系统 单片机芯片 本次51单片机的芯片为&#xff1a;STC89C52 Flash(闪存)程序存储器&#xff1a;存储程序的空间 SRAM&#xff1a;数据存储器&#xff0c;可用于存放程序执行的中间结果和过程数据 DPTR&#xff1a;…

中间件——Kafka

两个系统各自都有各自要去做的事&#xff0c;所以只能将消息放到一个中间平台&#xff08;中间件&#xff09; Kafka 分布式流媒体平台 程序发消息&#xff0c;程序接收消息 Producer&#xff1a;Producer即生产者&#xff0c;消息的产生者&#xff0c;是消息的入口。 Brok…

IDEA实现热部署

什么是热部署&#xff1f; 热部署&#xff08;Hot Deployment&#xff09;是指在应用程序运行过程中&#xff0c;无需停止整个应用程序或重新启动服务器&#xff0c;就能够部署新的代码、资源或配置文件&#xff0c;使其立即生效。这种部署方式有助于提高开发效率和系统的可用性…

【数据结构】顺序表的应用

目录 一.引言 二.顺序表概念 三.顺序表的实现 1.定义顺序表 2.顺序表初始化 ​编辑 3.检查空间&#xff0c;如果满了&#xff0c;进行增容 4.顺序表尾插 5.顺序表尾删 6.顺序表头插 7.顺序表头删 ​编辑 8.顺序表查找 9.顺序表在pos位置插入x 10.顺序表删…