这是aigo国民好物与少数派联合推出的信息储存设备的科普系列文章。
我们希望通过最简洁通俗的描述,带领大家了解信息储存设备的基本原理,知道那些复杂的参数,如何挑选购买适合自己的存储设备,又是如何更好地使用,更安全稳定地保存我们的数据,以及未来我们能够用上什么技术。
恭喜你,看到这里你已经能够全面理解现在主流数字储存设备的结构原理了,除了机械硬盘和固态硬盘外,在数字储存世界还有很多我们日常见到,也比较常用的设备。比如我们电脑中不可或缺的部件——运行内存RAM也是一种数字储存设备;而U盘和移动硬盘则是大家非常熟悉,使用过无数次的日常随身必备物品,而小巧的内存卡,更是从几十年前的MP3到最新的数码相机都必不可少;最后我们更是不能忽略自己天天使用的手机里面,存放着系统和我们重要数据,24*7不间断为我们提供高速存取的储存芯片。
在本篇文章中,我就给大家来说说除了机械硬盘和固态硬盘之外,一些其他在数字储存世界中占据重要地位的设备,包括运行内存、U盘、内存卡、移动硬盘、手机储存芯片等。在前几章积累的知识上,带大家快速了解它们的结构和原理,并说说它们不同的一些规格参数都代表着什么。最后给大家讲讲这些设备在现在已经发展到了什么程度,相信大部分人看到自己曾经熟悉到不能再熟悉的设备,现在发展的水平,都会惊叹人类科技水平发展的速度之快。
我们常用的不同类型其他储存设备
运行内存RAM的结构原理参数
相信很多人都知道电脑里面有一种叫做内存条的东西,也知道它是电脑必不可少的部件,但它具体是什么,相关的参数怎么看大家就很少去了解了。
插在计算机上的内存条
电脑里面的内存条和手机里面的运行内存等等,只要是将储存设备里面的数据存入超高速缓冲区,以供处理器交换数据的部件,我们都可以将它称为运行内存RAM。但其实在上一章我们也学习到很久以前的固态存储设备同样是使用RAM来做存储介质的,就是断电会消失数据那种。
很多同学觉得RAM运行内存好像不算储存设备,但其实它也是一种储存器,只不过断电数据会消失而已。只要不让它断电,就和超高速的固态硬盘没有什么区别,还有专门的企业级内存盘,很多服务器都使用它来储存经常需要交互的数据,甚至我们自己也可以用软件来搭建一个内存盘,存放一些不重要但是经常交互的数据获得飞一般的体验(比如游戏)。
运行内存RAM的结构
由于现在运行内存的参数越来越高,性能越来越好,发热也逐渐增大,也让它成为了计算机里面即将需要独立散热的部件之一,所以我们现在购买的内存条通常都会被一层马甲所包裹用于散热,一般看不见里面的结构。
aigo的内存条马甲
如果我们把内存条的马甲拆开(通常别拆),就能看到一个经典的运行内存条结构:
运行内存结构
运行内存的结构也算是比较简单,底下就是接口,也就是说我们常说的金手指,接口类型通常是DIMM/SO-DIMM(这个我们下面会介绍),缺口两边的长度不一样长防止我们把内存条插反了,上面的两个缺口是用来给插槽上的卡口卡紧内存条的的。而剩下的主要就是用来储存数据的DRAM颗粒和一个储存这内存条信息的EEPROM了,这个EEPROM叫做SPD芯片,主要作用就是储存这个内存条的相关信息,比如品牌,频率,容量,时序电压等等,主板就是靠它来识别内存条。其它的还有时钟缓存之类的通常也会集成在一个地方。
在每个颗粒底下,我们还能看到一些小小的黑色芯片,这些也是缓存芯片,只不过作用是暂时缓存每个颗粒上读出来的数据。
DRAM颗粒底下的缓存芯片
而一些轻薄本或者手机之类的高级程度设备则会更进一步,直接把DRAM颗粒焊在主板上,之前我们还学到机械硬盘和固态硬盘都会自带一个控制器来控制数据的输入输出,而运行内存的内存控制器(MemoryController)则不是在内存条上,而是在之前的北桥或者现在的处理器内部。
Windows平板上的运行内存DRAM颗粒
静态随机储存器和动态随机储存器
我们都知道运行内存是一种易失性储存器(Volatilememory),但易失性储存器又有静态随机储存器(SRAM)和动态随机储存器(DRAM),我们常说的DDR内存条储存单元就是DRAM,CPU缓存则是SRAM。
无论是什么类型,易失性储存器只要断电数据都会很快丢失。所谓的静态和动态,区别就在于通电的时候数据能否一直保持。动态储存器里面储存的数据需要周期性地更新,不然就没办法保持数据完整,下面原理会介绍到为什么。
从结构上看SRAM和DRAM的区别是储存单元的不同,SRAM储存单元由6个晶体管组成,而DRAM储存单元由一个晶体管和一个电容组成。DRAM数据其实是储存在储存单元的电容中,电容的电会慢慢消失,所以需要周期性重新充电维持数据,而SRAM不需要这些结构,同时储存数据是利用正反器电路(一种可以保持稳态的电路,感兴趣的同学可以直接搜名字或者英文名Flip-flop,顺便说一下,这个英文名是人字拖的意思哈哈),没有给电容充电等过程,所以SRAM会比DRAM还要快很多。
典型的SRAM和DRAM的储存单元结构
Transistor就是晶体管,Capacitor就是电容,Wordline决定了对应储存单元的通断,Bitline是用于读取或者写入数据的通道。
但是SRAM储存1bit需要使用6个晶体管,这意味着会占用几倍的晶圆面积,所以SRAM造价非常高,通常只能做几十MB来当作CPU缓存之类的用途。而DRAM虽然数据需要周期性刷新,但它简单的结构让造价更加便宜,也可以做大容量,所以就用来做我们的内存条了。
内部储存器和外部储存器
另外我们说内存内存,其实就是内部储存器的缩写,而前面介绍的机械硬盘,固态硬盘等等则属于外部储存器。一般来讲能够直接与处理器交互的都称之为内部储存器,而数据需要通过高速缓冲区中转的设备一般叫做外部储存器。
但人们对这些称呼该怎么用其实还是蛮混乱的,比如我们都知道Android手机把手机自带的储存空间叫做InternalStorage,也就是内部储存(但其实按照前面的定义它也属于外部储存器),很多人就会把它和运行内存搞混,产生「我的手机有64G内存,你的才4G」这种误解。所以大家提起RAM时建议用运行内存或者运存来称呼,另外大家通常把SD卡叫做内存卡也是类似,其实按照分类SD卡应该是外部储存器,叫「外存卡」比较贴切一点。不过这些称呼已经约定俗成了,也没有一个比较统一的标准,所以还会继续混乱下去。
现在搜索一下还有很多相关问题和文章,购物软件数码产品相关的商品评论里面也经常会有类似的误解。
运行内存RAM的原理
其实通过前几章,我们学习到固态硬盘原理之后,运行内存的原理也就比较好理解了。
运行内存主要存储数据的是DRAM颗粒,而DRAM颗粒储存单元由一个晶体管(MOS)和一个电容组成。其实这个晶体管的结构就和上一章的浮栅晶体管差不多,只不过不需要永久保存数据,也就没有了中间浮栅的结构。
DRAM晶体管结构和它实际在电子显微镜下的样子,图片来源:三星Samsung半导体
它读取和储存数据的原理和方法就和我们学到浮栅晶体管差不多,只不过没有了浮栅去存储电子,而是把这部分转移到了电容上。这样做的好处是节省了量子隧穿效应改变电子量的时间,同时没有量子隧穿效应的磨损,也没有MLC/TLC等等这种复杂的判断,电容充电就是1,没有充电就是0。所以DRAM颗粒比起之前介绍的固态NAND颗粒速度能快上几十上百倍,读写寿命近乎无限。
我们上面提到DRAM需要动态刷新保持数据,按照JEDEC标准是每64ms刷新一次,那么一天就要刷新多万次,换成NAND颗粒早就挂了。
然后这些储存单元用并联的方式串在地址线数据线上,和我们前一章介绍到的NOR闪存类似,也是可以单独读写到每一个储存单元数据的。这样做的好处是优秀的随机读写能力,单个储存单元随机读写的优势在于,无论访问或者写入哪个物理储存单元的数据,用的时间都是一样的。既不像机械硬盘那样离磁头臂远的地方读写时间就长,也不像固态硬盘那样需要同时读写整个块,最后的结果就是CPU每个时钟周期内能获取执行的指令变多,更充分发挥CPU的性能,这也是我们要用越来越快的运行内存来做CPU和外部储存设备之间「中介」的主要原因。
很多个储存单元会按照横竖排列成一个Bank(内存银行),每个Bank最下方还有一排RowBuffer,用来缓存每一列的数据,接收到读取对应列上某个储存单元数据的指令,就把缓存里面的数据发出去。
DRAM颗粒的Bank结构,实际上会有好几十万排和列
现在还有3DDRAM技术,就是横竖排列基础上再加一个层数,每一层再有一个层数据缓存,也是类似的原理。现在很多密度大的DRAM颗粒还会有DRAMGroup技术,也就是将几个Bank分为一组。
很多个Bank层叠起来就成了Die,通常一个Die就是我们看到的一个DRAM颗粒。
DRAM颗粒和BankGroup的结构,很多层Bank组成DRAM颗粒
这样对比起来DRAM颗粒还是比闪存颗粒结构要简单,比起闪存颗粒动不动每块几十上百亿个晶体管,一根8GB的内存条上双面有16个DRAM颗粒,每个颗粒才MB,分8层的话每个Bank才64MB。
下面介绍会涉及到位宽,这里简单解释一下就是一个部件每个时钟周期在某个线路能发送的数据,比如CPU和运行内存之间的总线,在一个CPU时钟周期内能向运行内存发送或者接收64bit的数据,那么这个CPU的内存位宽就是64bit,我们常说的32位或者64位处理器指的就是一个CPU周期能够处理64bit的数据。
一根内存条上有很多个DRAM颗粒,这些颗粒合起来就是一个Rank(内存区块)。注意Rank并不是物理结构而是逻辑结构,由于现代的64位处理器每个内存时钟周期内会向运行内存发送或读取64bit的数据,而每个颗粒在这个时间段只能执行8/16/32bit的数据读写,所以就需要根据颗粒的位宽来把几个颗粒合并成一个64bit位宽的组同时读写,最大化利用上CPU的性能,同时增加单条运行内存条的容量。
刚才我们看到运行内存条一面都会有8个颗粒,它们就会按照位宽组成1-4个Rank。关于Rank的意义和实际作用我们会在下面相关参数部分讲。
运行内存的Rank划分
电脑主板上插运行内存条的地方叫做DIMM插槽,笔记本或者便携设备上小的那个叫做SO-DIMM,通常一个物理(记住这点)DIMM槽就是一个内存通道(Channel)。至于意义和实际作用,我们也会在下面相关参数那里再讲。
插运行内存条的DIMM插槽,主板正放的情况下一般都在CPU插槽的右边
其实除了内存条和手机等其他类似功能的部件,还有其他几种类型的RAM,比如我们现在的空气显卡里面就有专门优化用于交换图形数据的SGRAM/VRAM等等,基本原理都大同小异。
内存颗粒整个地球上目前基本只有4家厂商能够生产:三星、海力士、镁光、长鑫存储。
运行内存RAM的常见参数解读
了解了运行内存的基本结构和原理之后,我就开始来给大家解惑最想知道的各种参数了。下面介绍的大部分参数一般都会在商品详情或者包装盒上标注,也可以通过像是CPU-Z这样的软件来查看。
现代运行内存的本质:SDRAM/DDR
到这里我们已经提过几次DDR技术了,我们平常使用运行内存的时候也会看到像是DDR3/DDR4这类的字眼。
我们现在能买到的现代运行内存条,本质上不是DRAM而是SDRAM,不过因为不是SDRAM的颗粒太少所以大家通常都直接用DRAM来表示这个了。这个S是同步(synchronous)的意思,也就是说内存颗粒的读写访问可以通过控制器与CPU时钟对齐同步,不会出现CPU等运行内存执行指令或者运行内存等CPU发送指令的情况。
DDR(DoubleDataRate),从全写就可以看出来,它是可以让数据传输速率翻倍的技术。简单来讲就是原本SingleDataRate只是CPU每个时钟周期能读写一次运行内存的数据,而DDR能让每个时钟周期发送脉冲的上下沿都发送一次数据给CPU,这样就能让传输速率翻倍。
还有QDR一个时钟周期发送4次数据的技术
如果你还对时钟周期相关的概念比较模糊,可以去知乎搜索下这个名词,有很多答主给了一些很棒的比喻来解释。
DDR1到DDR4都是一个内存时钟周期发送两次数据,但不同的是每次发送的数据量变大了。因为CPU指令每个周期需要读写写入的数据量很少(64bit),而指令数据通常都在一块,所以可以通过预测算法预读取数据发送,比如DDR2一个时钟周期预读取4bit的数据,DDR3一个时钟周期预读取8bit,DDR4根据不同的Bank数量预读取8或16bit放到CPU的三级L3缓存。这样子就能节省很多个CPU周期的命令,节省下来的时间,就可以继续执行CPU给的更多命令,从而实现相同的核心频率实现好几倍的工作效率。
之所以DDR2开始一次预读取数据越来越大,是因为内存芯片会给更高的时钟频率,所以一个周期变短,同样时间内读取颗粒的次数变多,也就能读取更多的数据了。
另外DDR1到DDR4运行内存条本身都是不兼容的,它们的接口插槽和金手指形状都不一样,缺口位置也不一样,所以不能通用,也要对应的主板才可以。
电脑和笔记本上常见的SDRAM,DDR1-DDR4运行内存条金手指对比
容量
和其它储存设备一样,大部分用户看运行内存首先考虑的就是容量。而运行内存和普通储存设备的区别就在于它不用来实际长期储存数据,所以并不是买多大的容量就能用多少,毕竟好的运行内存条按照容量算比其它储存设备贵多了,买了用不上,还不如把这些钱花到其它地方。
在我们日常使用中,与运行内存最直接相关的就是能够在后台运行程序的数量,无论是电脑还是手机,运行内存越大能够在后台保留的程序就越多。随着应用游戏甚至系统的内存要求越来越大(比如Win11最低运行内存要求居然要4GB),我们对于主力设备运行内存容量的要求也越来越高,所以我们要根据自己的需求去配置运行内存容量。
现在常用的容量一般是16G,开多应用玩绝大部分游戏游戏都能满足
上面的运行内存使用情况是我在开着几个播放器、VSCode编辑文章、几十个页面的Chrome、AdobePS、AI等大型软件的时候截的,系统是Windows11。
另外如果你的运行内存容量实在太小,又或者运行一些超大型软件(视频剪辑,特效,3D等等),那么运行内存容量不足不仅会让后台运行程序数量变少,也会让前台运行程序和系统变卡。因为系统为了保证程序不崩溃,会把一些程序在运行内存里面的数据暂时放到储存盘上,等到运行内存有空间时再搬回来(在Windows上这个就是虚拟内存,Linux和手机上一般叫SWAP)。但无论是机械硬盘还是固态硬盘速度都比运行内存慢很多,所以一旦运行容量不足,部分程序就相当于运行在硬盘上,程序少的时候还好,但当虚拟内存越用越多,卡慢就是自然的了。
可以用AIDA64之类的软件看到虚拟内存的使用情况
另外一个比较吃运行内存容量的是浏览网页,特别是后台多标签的时候,有大量数据需要缓存在运存中,比如著名的Chrome吃内存梗。不过只要你不开一些大型软件,只是日常使用,即使是多开浏览器
转载请注明地址:http://www.abmjc.com/zcmbyf/4137.html