内存条的构造、原理及性能参数
内存条的构造、原理及性能参数
- 一、内存条的构造
- 1.1 外观结构
- 1.1.1 芯片:大脑
- 1.1.2 PCB板:骨架
- 1.1.3 金手指:接口
- 1.1.4 电容电阻:稳压、稳流
- 1.1.5 防呆缺口:防错
- 1.2 内部层次结构
- 二、内存条的工作原理
- 2.1 数据的“搬家”过程
- 2.2 内存的“寻址”机制
- 2.3 内存的“读写”操作
- 三、内存条的性能参数
- 3.1 容量
- 3.2 频率
- 3.3 带宽
- 3.4 时序
- 3.5 双通道与多通道技术
- 四、内存条的发展趋势
内存条是电脑中用来暂时存储和访问数据的部件。它就像是一个“飞毛腿快递小哥”,快速、准确地把数据从大仓库“硬盘”送到用户"CPU"手中。假如没有内存,就算CPU跑冒烟,电脑也快不起来。
现在的内存条,容量普遍比较大,动不动十好几G,所以被诅咒的时候少了。想当年,在那个256MB、512MB的年代,打开个大一点儿的程序经常会卡得你痛不欲生。
今天就说说内存条的构造和原理。
一、内存条的构造
1.1 外观结构
1.1.1 芯片:大脑
内存条的核心就是存储芯片(Chip),也就是我们常说的“内存颗粒”,它们是真正保存数据的地方。
内存条的性能、速度和容量都是由内存芯片决定的。
这些芯片一般采用TSOP(Thin Small Outline Package,薄型小尺寸封装)或BGA(Ball Grid Array,球栅阵列)封装,不同封装的内存条在性能和安装方式上也有所不同。
每个芯片内部包含多个Bank(存储单元),每个Bank又细分为许多Row(行)和Column(列),形成二维矩阵式的排列方式。
1.1.2 PCB板:骨架
PCB板(印制电路板,Printed Circuit Board)就是内存条的电路板,像“骨架”一样承载所有组件,并连接着各个芯片,确保数据能够在芯片之间流畅传输。
PCB板多数都是绿色的,也就是复合树脂板,采用了多层设计,一般为四层或六层。
PCB板上布满了错综复杂的线路和元件,这些线路和元件的设计都经过精心计算,以确保数据传输的准确性和稳定性。
1.1.3 金手指:接口
金手指,就是内存条边上一排金色手指形的触点,直接与主板上的插槽连接。金手指一般采用镀金工艺,以提高导电性能和抗氧化能力。
当内存条插入主板插槽时,金手指与插槽内的触点紧密接触,实现数据的传输和交换。
1.1.4 电容电阻:稳压、稳流
在内存条上有许多附加的电容和电阻,采用的是贴片元件,以C代表电容,R代表电阻。
电容作为电源滤波器,能够稳定内存模块的电压和电流。一般来说,电容越大,则内存模块的电压波动越小,内存稳定性就会更好。但是,电容越大也会导致内存访问时延加大,降低内存条带宽。
电阻主要起限流和稳压作用。当内存条工作时,电流会在电路中产生波动,这时电阻就能够限制电流的大小,避免电路中的元器件受到过大的冲击而损坏。同时,电阻还能稳定电压,确保内存条在稳定的工作环境下运行。
1.1.5 防呆缺口:防错
防呆缺口就是防止内存条插反的小缺口,有了它,插反了插不进去。
1.2 内部层次结构
内存条内部遵循着严格的分层架构:Channel(内存通道) -> DIMM(内存条) -> Rank(面) -> Chip(内存颗粒) -> Bank(颗粒层) -> Cell(存储单元,row/column由行列两个数值决定)
这一序列反映了从宏观到微观的数据组织形式,具体说明如下:
- Channel(内存通道):指的是CPU与内存之间的数据传输通道(参见《跑道加一条,速度翻一倍:内存通道的提速秘密》);
- DIMM(内存条):代表物理内存条本身;
- Rank(面):表示内存条的两个面,即正面、反面,两面都分布有存储芯片;
- Chip(内存颗粒):即前文提到的存储芯片;
- Bank(颗粒层):是每个芯片内部分割出来的逻辑分区,它是分片的;
- Cell(存储单元):最后到达的具体存储单元,由行列地址定位。
二、内存条的工作原理
内存条的工作原理,简单来说,就是把数据从一个地方“搬”到另一个地方。但这个“搬”的过程,可远比我们想象中的复杂得多。
2.1 数据的“搬家”过程
当你打开一个程序或文件时,数据会从硬盘这个“大仓库”里被读取出来,然后通过内存条这个“中转站”被传输到CPU这个“处理中心”进行处理。处理完成后,数据再被传回内存条或硬盘进行存储。在这个过程中,内存条就像是一个“高速通道”,让数据能够迅速地在硬盘、CPU之间传输。
2.2 内存的“寻址”机制
要想让数据在内存条里“找到家”,就得靠内存的“寻址”机制。每个存储在内存条里的数据都有一个唯一的地址,就像是我们每个人的身份证号码一样。
当CPU需要访问某个数据时,会通过地址总线把数据的地址发送给内存控制器(Memory Controller),后者会通过内部的“寻址电路”找到对应的数据,然后通过数据总线把数据发送给CPU。
具体的寻址过程是,内存控制器根据地址将命令转发给相应的DIMM。接着,DIMM内部的Rank会选择合适的Chip,进而激活对应的Bank,最终完成对特定Row和Column组合所指向的Cell(存储单元)的操作。
为了准确无误地找到所需信息,内存采用了复杂的寻址机制:
- Rank选择:通过寻址信号确定哪个面;
- Bank地址:BA0-BAx决定具体在哪一层;
- 行选(RAS#):表示接收的是行地址;
- 列选(CAS#):表示接收的是列地址;
- 地址线A0-Ax:用于指定确切的行列坐标;
- 数据总线DQ0-DQ63:负责实际的数据传输,一次最多可携带64bit的数据量。
需要注意的是,由于电脑的内存条都是用电容来存储数据,而电容存在漏电现象,为了保持数据完整性,必须定期进行刷新操作(也就是要给电容充电)。
2.3 内存的“读写”操作
内存的“读写”操作,就像是我们在图书馆里借书和还书一样。当我们需要读取某个数据时,内存条就会像图书馆管理员一样,根据我们提供的地址找到对应的数据并“借”给我们(读取操作)。当我们处理完数据后,再把数据“还”给内存条(写入操作)。内存的读写速度非常快,一般都是以纳秒(ns)为单位来衡量的。
三、内存条的性能参数
了解了内存条的构造和工作原理后,我们再来看看它的性能参数。这些参数就像是内存条的“成绩单”,能够直观地反映出它的性能优劣。
3.1 容量
内存容量(Capacity),顾名思义,就是内存条能够存储的数据量。一般来说,内存容量越大,电脑的运行速度就越快,因为可以同时处理的数据就越多。但是,并不是说内存容量越大就一定越好,因为还需要考虑其他因素,比如内存的频率、时序等。
3.2 频率
内存频率(Memory Frequency),指内存所能达到的最高工作频率。频率越高,数据传输速度就越快。常见的内存频率有100MHz、133MHz、150MHz、166MHz、200MHz、233MHz、266MHz等。一般来说,相同容量的内存条,频率越高价格就越贵。
关于内存频率,里面是有猫腻的,比如DDR4 2400,频率难不成是2400MHz?其实根本没有那么大,真实的频率只有150MHz。关于这个问题老金后面会专门写篇文章。
3.3 带宽
内存带宽(Memory Bandwidth)就是内存条每秒钟能够传输的最大数据量。带宽越大,数据传输的速度就越快。
内存频率和带宽都是反映存取数据快慢的指标。内存带宽的计算公式是:带宽=频率×位宽/8。
位宽是一个时钟周期内所能传送数据的位数,以bit为单位,所以需要除以8转换成字节。因此,在选择内存条时,除了考虑频率外,还需要关注它的位宽。
还是以DDR4 2400为例,频率为150MHz,位宽为1024bit,则带宽为:
150 M H z × 1024 b i t 8 = 19.2 G B \frac{150MHz\times1024bit}{8}=19.2GB 8150MHz×1024bit=19.2GB
这个19.2GB就是你能查到的DDR4 2400的带宽。
实际上这个带宽也有水分,因为频率单位的换算关系是1000,而字节的换算单位是1024,上面的19.2GB是实际上是用1000作为换算单位的,即它的计算过程是这样的:
150 M H z × 1024 b i t 8 = 150 × 1 0 6 H z × 1024 b i t 8 B = 150 × 1 0 6 H z × 1024 b i t 8 × 1 0 9 G B = 19.2 G B \begin{align*} \frac{150MHz\times1024bit}{8}&=\frac{150\times10^6Hz\times1024bit}{8} B\\ &=\frac{150\times10^6Hz\times1024bit}{8\times10^9} GB\\ &=19.2GB \end{align*} 8150MHz×1024bit=8150×106Hz×1024bitB=8×109150×106Hz×1024bitGB=19.2GB
严格来讲应该这样算:
150 M H z × 1024 b i t 8 = 150 × 1 0 6 H z × 1024 b i t 8 B = 150 × 1 0 6 H z × 1024 b i t 8 × 102 4 3 G B = 17.9 G B \begin{align*} \frac{150MHz\times1024bit}{8}&=\frac{150\times10^6Hz\times1024bit}{8} B\\ &=\frac{150\times10^6Hz\times1024bit}{8\times1024^3} GB\\ &=17.9GB \end{align*} 8150MHz×1024bit=8150×106Hz×1024bitB=8×10243150×106Hz×1024bitGB=17.9GB
3.4 时序
内存时序(Memory Timings),是内存条的一个重要参数,它表示内存条在接收到读写指令后到完成读写操作所需要的时间。时序越小,内存的响应时间就越短,性能也就越好。但是,时序的降低往往会带来功耗的增加和稳定性的下降,所以需要在性能和稳定性之间找到一个平衡点。
3.5 双通道与多通道技术
为了进一步提高带宽利用率,现代主板普遍支持双通道乃至四通道模式。在这种情况下,每一对DIMM都可以被视为一个独立的传输通道,从而显著增强了系统的吞吐能力。此外,某些高端服务器还会配备ECC校验功能,有效降低了数据传输错误的概率。
四、内存条的发展趋势
近年来,随着硬件制造工艺不断进步,内存领域也涌现出一批令人瞩目的新技术:
- HBM(High Bandwidth Memory):高带宽内存直接安装在GPU旁边,大幅缩短了二者之间的物理距离,实现了前所未有的数据传输速率。
- GDDR(Graphics Double Data Rate):专为图形渲染设计的高性能显存,拥有更高的频率和更低的延迟,广泛应用于游戏显卡和专业工作站。
- 3D XPoint:英特尔推出的非易失性存储介质,结合了闪存和传统DRAM的优点,提供了接近DRAM的速度和持久化特性。
附:内存相关文章
内存泄漏简介:不断消耗资源的吞噬者
不堪回首的“内存”
内存原理:计算机存储的核心奥秘
内存的升级换代之路
跑道加一条,速度翻一倍:内存通道的提速秘密
相关文章:

内存条的构造、原理及性能参数
内存条的构造、原理及性能参数 一、内存条的构造1.1 外观结构1.1.1 芯片:大脑1.1.2 PCB板:骨架1.1.3 金手指:接口1.1.4 电容电阻:稳压、稳流1.1.5 防呆缺口:防错 1.2 内部层次结构 二、内存条的工作原理2.1 数据的“搬…...

鸿蒙模块概念和应用启动相关类(HAP、HAR、HSP、AbilityStage、UIAbility、WindowStage、window)
目录 鸿蒙模块概念 HAP entry feature har shared 使用场景 HAP、HAR、HSP介绍 HAP、HAR、HSP开发 应用的启动 AbilityStage UIAbility WindowStage Window 拉起应用到显示到前台流程 鸿蒙模块概念 HAP hap包是手机安装的最小单元,1个app包含一个或…...

SQLark 百灵连接工具便捷功能之生成数据库测试数据
参考此文: SQLark百灵连接工具--数据生成...

ChirpIoT技术的优势以及局限性
ChirpIoT是一种由上海磐启微电子开发的国产无线射频通讯技术,ChirpIoT技术基于磐启多年对雷达等线性扩频信号的深入研究,并在此基础上对线性扩频信号的变化进行了改进,实现了远距离传输的一种无线通信技术。相关产品型号有E29-400T22D、E290-…...

Jetpack架构组件学习——使用Glance实现桌面小组件
基本使用 1.添加依赖 添加Glance依赖: // For AppWidgets supportimplementation "androidx.glance:glance-appwidget:1.1.0"// For interop APIs with Material 3implementation "androidx.glance:glance-material3:1.1.0"// For interop APIs with Mater…...

C++函数——fill
在C中,std::fill 是标准库提供的一个算法适用于几乎所有类型的容器,只要这些容器支持迭代器操作。具体来说,std::fill 的适用性取决于容器是否提供了满足其要求的迭代器类型,用于将指定范围内的所有元素设置为某个特定值。它是一个…...

二叉树(了解)c++
二叉树是一种特殊的树型结构,它的特点是: 每个结点至多只有2棵子树(即二叉树中不存在度大于2的结点) 并且二叉树的子树有左右之分,其次序不能任意颠倒,因此是一颗有序树 以A结点为例,左边的B是它的左孩子,右边的C是…...

备赛蓝桥杯之第十五届职业院校组省赛第三题:产品360度展示
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题࿰…...

业余无线电 对讲机常用频率使用
我自己的总结是,基本可以无忧使用: 144.035-145.800 146.000-148.000 430.000-431.900 432.240-435.000 438.000-439.000 50Mhz一般手台不支持,暂不记录。 以下为附录可以自行阅读,本文内容如有错误请留言指正。 特定波段…...

个性化的语言模型构建思路
将开源模型(如Llama3、Qwen、Falcon3 … 等)转变为个人专属的大语言模型,通常涉及知识库的构建、微调(fine-tuning)和模型定制等步骤。下面提供一个详细的技术解决方案,涵盖了如何利用现有的资料(如文档、PDF、Excel、PPT、图片、语音、视频等)将开源模型转换为个人专属…...

QT开发技术【QFileDialog卡顿问题】
一、直接用QFileDialog 在window 一般卡顿7秒 qDebug() << "begin:" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");QDateTime sTime QDateTime::currentDateTime();QString str QFileDialog::getOpenFileName(null…...

关于为什么java中nextInt()和nextLine()不能混用 | nextInt()和nextInt()之类的可以一起用
键盘录入的区别: 第一套体系:遇到空格、制表符、回车都结束,并且都不接收 nextInt()、nextDouble()、next() 遇到空格、制表符、回车就结束,只接收其之前的数据,空格以及空格之后的数据都在缓冲区内,如果…...

Android OpenGL(六) 纹理
纹理 纹理是一个2D图片(甚至也有1D和3D的纹理), 它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的 房子上,这样你的房子看起来就像有砖墙外表了 纹理环绕方式 纹理坐…...

git和idea重新安装后提交异常
场景:我重装了系统,idea装了2024.3版本的,git也重新装了,但是项目中还是有.git文件夹的,下载了idea的码云插件后,提交报错如下: 异常:Error updating changes: detected dubious ow…...

leetcode刷题记录(八十一)——236. 二叉树的最近公共祖先
(一)问题描述 236. 二叉树的最近公共祖先 - 力扣(LeetCode)236. 二叉树的最近公共祖先 - 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科 [https://baike.baidu.com/item/%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B…...

STM32-CAN总线
1.CAN总线简介 CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线 2.CAN总线特征 两根通信线(CAN_H、CAN_L),线路少,无需共地差分信号通信(相对的是单端信号)&#…...

node.js 07.npm下包慢的问题与nrm的使用
一.npm下包慢 因为npm i 默认从npm官网服务器进行下包,但是npm官网服务器是海外服务器所以响应很慢. 于是我们通过npm下包的时候通常用淘宝镜像进行下包,下面是切换到淘宝镜像地址下包的操作. 二.nrm的使用 nrm是一个管理切换npm下包地址的工具,可以快速切换下包的地址. 安…...

ubuntu改变swap存储空间,遇到 fallocate 失败: 文本文件忙
ubuntu改变swap存储空间,遇到 fallocate 失败: 文本文件忙 sudo fallocate -l 16G /swapfile fallocate: fallocate 失败: 文本文件忙这种情况是swap空间正在使用,需要先关闭swap分区: sudo swapoff /swapfile sudo fallocate -l 16G /swap…...

20250122-正则表达式
1. 正则标记 表示一位字符:\\ 表示指定的一位字符:x 表示任意的一位字符:. 表示任意一位数字:\d 表示任意一位非数字:\D 表示任意一个字母:[a-zA-Z](大写或小写) 表示任意一个…...

QT之CMAKE教程
介绍 CMake 是一个跨平台的自动化构建系统,它使用配置文件(称为 CMakeLists.txt)来生成标准的构建文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程文件。CMake 能够支持多种编程语言,尤其是 C 和 C&#…...

网络安全 | 0day漏洞介绍
关注:CodingTechWork 引言 在网络安全领域,0day漏洞(Zero-day Vulnerability)是指一个尚未被厂商、开发者或安全人员发现、修复或发布修补程序的安全漏洞。0day漏洞是黑客利用的一个重要攻击工具,因其未被披露或未被修…...

关于WPF中ComboBox文本查询功能
一种方法是使用事件(包括MVVM的绑定) <ComboBox TextBoxBase.TextChanged"ComboBox_TextChanged" /> 然而运行时就会发现,这个事件在疯狂的触发,很频繁 在实际应用中,如果关联查询数据库࿰…...

07_游戏加载窗口
隐藏动态提示窗口 创建空节点 命名为 LoadingWnd 意为加载窗口 并设置全屏 在子级下创建Image作为加载背景 也设置成全屏 将以下资源放进Art文件夹中 设置好精灵模式后拖拽至 Image的Source Image框选 创建文本作为提示内容 增加描边组件OutLine可以美化字体 创建Image作为加载…...

awk命令进阶
1.连接文件 awk NRFNR{a[$1]$0;next} NR!FNR{ if(($5) in a) print a[$1],$0 } file1 file2 命令详解: 这个命令的目的是将 file1 和 file2 基于某个共同字段进行连接(类似于 SQL 中的 JOIN 操作)。下面我们逐步解析它的工作原理。 1. NRF…...

解锁Java中的国密算法:安全保障的密钥
一、引言 在数字化浪潮席卷全球的当下,信息安全已然成为国家、企业乃至个人无法忽视的重要议题。国密算法,作为我国自主研发的密码算法体系,宛如坚固的盾牌,为国家信息安全筑起了一道坚不可摧的防线。它的诞生,不仅承载…...

基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测
完整源码项目包获取→点击文章末尾名片! 番石榴病害数据集 背景描述 番石榴 (Psidium guajava) 是南亚的主要作物,尤其是在孟加拉国。它富含维生素 C 和纤维,支持区域经济和营养。不幸的是,番石榴生产受到降…...

在现有 Docker Desktop 环境下安装与配置独立 Kubernetes环境(Mac)
在现有 Docker Desktop 环境下安装与配置独立 Kubernetes 集群环境 目标 在已安装Docker Desktop自带Kubernetes的情况下,搭建一个独立 Kubernetes 集群环境。配置独立的 kubectl 工具,使其默认管理独立的 Kubernetes 集群。保留 Docker Desktop 的 Ku…...

Linux探秘坊-------3.开发工具详解(1)
1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim (因为不支持鼠标,通常 使用键盘上的箭…...

Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解
本文将详细介绍如何在Spring Boot项目中整合Thymeleaf模板引擎、JDBC Template和MyBatis,涵盖YAML配置、依赖版本匹配、项目结构设计及代码示例。 一、版本兼容性说明 Spring Boot版本与Java版本对应关系 Spring Boot 2.x:支持Java 8、11(推…...

白玉微瑕:闲谈 SwiftUI 过渡(Transition)动画的“口是心非”(下)
概述 秃头小码农们都知道,SwiftUI 不仅仅是一个静态 UI 构建框架那么简单,辅以海量默认或自定义的动画和过渡(Transition)特效,我们可以将 App 界面的绚丽升华到极致。 不过,目前 SwiftUI 中的过渡&#x…...