随着科技的发展,现如今手机的推广和普及率已掩盖了电脑时代的辉煌,很多新生代的用户对手机的存储很茫然,于是我们经常会遇到“Q:你的手机内存多大?A:128GB”这样的笑话,实际上我们也相信提问者就是想知道手机存储容量的大小,而回答者也已经按照约定俗成的方式回答了问题。那么内存和硬盘的区别是什么呢!一起来看看本文的内容吧!
这才是内存和硬盘的区别 终于搞懂了(图1)
于计算机组成原理来分析:手机和电脑并没有本质的区别,主体结构依然为输入设备、存储器、运算器、控制器和输出设备,至于外围的存储设备实际上只是一个辅助,所以称之为辅助存储器,只是因为人们对于结果的更多需求,所以它又成为人们似乎“看得着、摸得见”的最重要组成部分--存储。
计算机的组成原理里面这样介绍计算机的存储器:存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器,而诸如硬盘、SSD等都为辅助存储器。
这才是内存和硬盘的区别 终于搞懂了(图2)
套用网络上这样一个关于内存和硬盘的定义,大家可能再也不会弄混淆了:你嘴里吃花生就像CPU在处理数据,硬盘容量大小就是你的口袋大小(能放多少花生),内存大小就是你手的大小(一次能抓多少出来)。
现如今,无论是手机还是电脑内存都使用了DRAM存储技术。DRAM(Dynamic Random Access Memory),即动态随机存取存储器,最为常见的系统内存。DRAM只能将数据保持很短的时间,为了保持数据DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新存储的信息就会丢失。
这才是内存和硬盘的区别 终于搞懂了(图3)
至于存储方面,现如今主要包含两大类技术:HDD(Hard Disc Drive)和NAND Flash,关于HDD在这里就不做过多介绍。NAND Flash全名为Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),Flash的内部存储是MOSFET,里面有个悬浮门(Floating Gate)是真正存储数据的单元。
数据在Flash内存单元中是以电荷(electrical charge) 形式存储的。存储电荷的多少取决于图中的外部门(external gate)所被施加的电压,其控制是向存储单元中冲入电荷还是使其释放电荷。而数据的表示以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
对于数据的表示,单个存储单元中内部所存储电荷的电压和某个特定的阈值电压Vth相比,如果大于此Vth值就是表示1,反之,小于Vth就表示0;对于nand Flash的数据的写入1,就是控制External Gate去充电使得存储的电荷够多,超过阈值Vth就表示1了。而对于写入0就是将其放电,电荷减少到小于Vth就表示0了。
DRAM和NAND的单位
从上面的存储原理可以看出,DRAM和NAND的存储单位实际为b,那么为什么存储产品的容量一般都用B来标注呢?而存储产品的颗粒容量又以b来标注呢?以DRAM内存颗粒为例,其存储组织结构为深度(Depth)加上位宽(Width),下面我们以美光官方的一份内存颗粒文档为大家解析,例如编号为MT40A1G16HBA-083E的内存颗粒,其深度(Depth)和位宽(Width)分别为1Gb和16,容量显然为16Gb,关于内存颗粒的容量我们这样解释下大家可能会更好理解一些。
这才是内存和硬盘的区别 终于搞懂了(图4)
我们把MT40A1G16HBA-083E比作一个国家,这个国家有16个城市,每个城市有1024x1024x1024(1G=1024M,1M=1024K,1K=1024)个家庭,那么这个国家总共就会有16x1024x1024x1024个家庭。又假如每个城市都设置一个城门,每次只能放行一个家庭,那么这个国家每次都多只能放行16个家庭。
而现在无论是桌面PC还是手机基本已经进入了64bit时代,处理器每次吞吐数据的单位为64,也就是说处理器一次需要抽调64个家庭,那么怎么办呢?于是我们就将多个国家联合起来,对于一个拥有16个城市的国家而言,那么只需要4个国家就可以满足处理器的需求。不过如果对于一些小国只有4个或者8个城市的,那么一次就需要16个国家联合起来或者8个国家联合起来才能够满足需求。
这才是内存和硬盘的区别 终于搞懂了(图5)
现在再来说说为什么DRAM或者NAND存储颗粒不适用B而是用b来标注呢?实际上稍微了解计算机原理的用户应该知道,现存的计算机体系结构B(Byte)表示一个字节,而b(bit)表示1个位。对于单纯1个bit的0或者1来说计算机的识别就是“是”或者“非”,无数个0或者1组织起来计算机并不会知道这代表着什么?而数据应该怎么和计算机的0或者1对应起来呢?于是就有了ACSII编码,每一个字母或者符号都对应一个ACSII编码,这样现实世界的语言就和计算机就完全对接上了。
这才是内存和硬盘的区别 终于搞懂了(图6)
ACSII编码规定每一个符号占用的大小为8bit,简称一个字节(Byte),于存储而言1个字节才算基本的单位,所以文件的存储就以Byte为最小单位。不过无论是DRAM还是NAND由于对接的计算机甚至是非计算机设备,其产品的存储单位属性并不一定是Byte,所以依然为bit标注。
另外在数据流,例如网络带宽、USB带宽、PCI-E带宽,我们又会发现以b为单位,这是因为对于数据传输而言,都是以通道流形式,就像上面的例子一样一次只能放行一个家庭。而在数据传输过程中为了确保数据的安全还会加入一些校验数据在其中例如USB 3.0就采用了8b/10b的编码方式(每传输8bit数据就需要加入2bit校验数据),这个时候如果再使用Byte作为单位显然乱了章法,不合时宜。
SLC、MLC、TLC NAND的区别
对于基于NAND存储技术的设备而言,无论是U盘还是SSD,甚至是SD卡,都会涉及到一个问题成本,于是产品设计从SLC转变到MLC,再到TLC,甚至QLC也将在后续问世,那么SLC、MLC、TLC究竟对用户有什么影响呢?
这才是内存和硬盘的区别 终于搞懂了(图7)
SLC--SLC英文全称(Single Level Cell——SLC)即单层式储存
SLC技术特点是在浮置闸极与源极之中的氧化薄膜更薄,在写入数据时通过对浮置闸极的电荷加电压,然后透过源极,即可将所储存的电荷消除,通过这样的方式,便可储存1个信息单元,这种技术能提供快速的程序编程与读取,不过此技术受限于Silicon efficiency的问题,必须要由较先进的流程强化技术(Process enhancements),才能向上提升SLC制程技术。
MLC--MLC英文全称(Multi Level Cell——MLC)即多层式储存
英特尔(Intel)在1997年9月最先开发成功MLC,其作用是将两个单位的信息存入一个Floating
Gate(闪存存储单元中存放电荷的部分),然后利用不同电位(Level)的电荷,通过内存储存的电压控制精准读写。MLC通过使用大量的电压等级,每 个单元储存两位数据,数据密度比较大。SLC架构是0和1两个值,而MLC架构可以一次储存4个以上的值,因此,MLC架构可以有比较好的储存密度。
TLC--TLC英文全称(Trinary-Level Cell)即三层式储存
TLC即3bit per cell,每个单元可以存放比MLC多1/2的数据,共八个充电值,所需访问时间更长,因此传输速度更慢。TLC优势价格便宜,每百万字节生产成本是最低的,但是寿命短,只有约1000次擦写寿命。
这才是内存和硬盘的区别 终于搞懂了(图8)
正如上面的介绍,从SLC到MLC再到TLC,cell对于电压的精确控制更高,这直接导致TLC的寿命下降到只有1000次PE,而对应的SLC和MLC分别为10000+和3000,相对来说TLC的耐久度显著下降。TLC的另外一个劣势就是数据的读写效率,在SLC时代,1个cell一次只需要读取/写入1个bit,到MLC时代每次需要读取/写入2bit,而到TLC时代则上升到3bit,很显然其性能受到电压控制的程序复杂度会变慢,当然由于工艺和主控的不断升级,目前TLC已经可以追平MLC产品。不过TLC耐久的硬伤短时间内并无法得到有效解决,当然TLC的耐久可以通过存储设备的容量加大而均衡磨损,变相演唱了产品的使用寿命。