存储设备

早期CPU可以直接从硬盘上读取数据进行处理,随着CPU主频不断提升,从单核到双核再到多核,处理速度越来越快,而硬盘的读写速度远远跟不上CPU的读写速度,后来增加了读写速度相对较快的内存,而内存也从SDRAM到DDR、DDR2、DDR3。
但内存缓存速度还是跟不上CPU的运算处理速度,后来便在CPU中增加了快速缓存机制。

非易失性存储设备 Non-volatile Memory Device
断电数据不丢失,如Flash、ROM。
易失性存储设备 Volatile Memory Device
断电数据丢失,如内存。

ROM RAM

RAM和ROM相比,最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。

RAM Random Access Memory,随机存储器
与CPU直接交换数据的内部存储器,也叫主存(内存)。随时读写而且速度很快,作为操作系统或正在运行程序的临时数据存储媒介。
电源关闭时RAM不能保留数据。如果需要保存数据,需写入长期的存储设备中(如硬盘)。
DRAM (Dynamic RAM),动态随机存储器
SRAM (Static RAM),静态随机存储器

ROM Read Only Memory,只读存储器
所存数据是装机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变。
EPROM (Erasable Programmable Read-Only Memory) 电可擦可编程只读存储器
EROM (Erasable Read-Only Memory) 可擦写只读存储器
EEPROM (Electrically Erasable Programmable Read-Only Memory) 带电可擦可编程只读存储器

Cache

高速缓冲存储器,位于CPU和内存之间,规模较小但速度很高的存储器。主存采用DRAM技术,而cache使用昂贵但较快速的SRAM技术。
CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。
Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),L1Cache主要是集成在CPU内部,而L2Cache集成在主板上。

BIOS Basic Input Output System

基本输入输出系统,是用于计算机开机过程中各种硬件设备的初始化和检测的芯片,容量是1M或2M甚至8M。主板使用NOR Flash来作为BIOS的存储芯片。

内存

用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
计算机在运行时CPU会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
内存是由内存芯片、电路板、金手指等部分组成。

按内存技术标准可分为SDRAM、DDR、DDR2、DDR3、DDR4。
按工作原理可分为ROM、RAM、Cache。

固件 Firmware

写入EROMEEPROM中的程序。
固件担任着一个系统最基础最底层工作的软件。在硬件设备中,固件是硬件设备的灵魂,因为硬件设备除了固件以外没有其它软件组成,因此固件就决定硬件设备的功能及性能。
一般可由用户通过特定的刷新程序进行升级。一般担任最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基BIOS(Basic Input/output System),在以前叫它固件。

这种硬件内所保存的程序是无法被用户直接读出或修改的。
早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。即使固件内发现了严重的Bug也由专业人员带着写好程序的芯片把原来机器上的更换下来。

随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求。随着可重复写入的EPROM,EEPROM和flash可以重复刷写的出现,让固件得以修改和升级。

Flash Flash Memory

Flash发送擦除命令后,一次性将一个block全部擦除为1,擦除用时很短一闪而过,所以叫Flash Memory(闪存)。
Flash的擦除是以block为单位,读取/编程是以Page为单位,擦除是以Block为单位;擦除是将数据写入为1;写数据之前,要先擦除后写。
硬盘/内存的读取/写入/擦除是以Bit为单位;擦除是将数据写入为0;写入时直接写即可。

Flash分为NAND flashNOR flash

NAND和NOR的比较:
1.NOR的成本高,读写数据时不易出错。适合应用于存储少量的代码。
2.NAND的成本低,数据读写容易出错,一般需要有对应的软件或者硬件的数据校验算法(ECC)。
容量大、价格便宜,适合存储大量的数据。
其在嵌入式系统中的作用,相当于PC上的硬盘,用于存储大量数据。
常见的应用组合是,用小容量的NOR存储启动代码,如uboot,NAND存放Linux的内核镜像和根文件系统。
NOR有类似于dram之类的地址总线,因此可以直接和CPU相连,CPU可以直接通过地址总线对nor flash进行访问,
NAND没有这类的总线,只有IO接口,只能通过IO接口发送命令和地址,对nand flash内部数据进行访问。
相比之下,nor flash像是并行访问,nand flash是串行访问。

闪存标准
ONFI:以英特尔、美光、海力士为首的NAND厂商所主打制定的闪存接口标准
Toggle DDR:以三星和东芝阵营为首的NAND厂商当前所主打

SLC MLC TLC

Nand Flash按照内部存储数据单元的电压的不同层次,也就是单个内存单元中,是存储1位数据还是多位数据(闪存颗粒),分为SLC和MLC。
SLC寿命最长价格最贵,其次MLC,最后TLC。

识别SLC和MLC
Nand Flash设计中,有个命令叫做Read ID,意思是读取芯片的ID。
读取最少4个字节,解析出很多信息,如Nand Flash内部是几个芯片(chip)所组成,
每个chip包含了几片(Plane),每一片中的页大小,块大小等。
第3个字节中的Cell Type用来识别SLC/MLC。
SLC Single Level Cell

单个存储单元只存储一位数据,表示成1或0。

写入1,就是去充电,使得存储的电荷够多,超过阈值Vth表示1。
写入0,就是将其放电,电荷减少到小于Vth表示0。
Flash由于物理特性,使得内部存储的数据,只能从1变成0也就是释放电荷。
MLC Multi Level Cell

与SLC相对应,单个存储单元可以存储多个位,如2位,4位。

实现机制是通过控制内部电荷的多少,分成多个阈值,通过控制里面的电荷多少达到所需要的存储成不同的数据。
假设输入电压是Vin=4V,可以设计出2的2次方4个阈值,1/4的Vin=1V,2/4的Vin=2V,3/4的Vin=3V,Vin=4V,
分别表示2位数据00,01,10,11,对于写入数据就是充电,通过控制内部电荷的多少,对应表示不同的数据。
对于读取,是通过对应的内部电流(与Vth成反比),然后通过一系列解码电路完成读取,解析出所存储的数据。
这些具体的物理实现,都是有足够精确的设备和技术,才能实现精确的数据写入和读出的。
单个存储单元可以存储2位数据的,称作2的2次方=4 Level Cell (不是2 Level Cell),
同理对于单个存储单元可以存储4位数据的,称作2的4次方=16 Level Cell。
TLC Trinary Level Cell , 3bit/cell

Nand Flash物理存储单元的阵列组织结构
在这里插入图片描述

Nand Flash数据存储单元的整体架构
Nand Flash内部由芯片(chip)所组成,常见的nand flash内部只有一个chip,每个chip只有一个plane。
复杂的容量大的nand flash,内部有多个chip,每个chip有多个plane。这类的nand flash有更加高级的功能。

NAND Flash的数据是以bit的方式保存在memory cell,一般一个cell 中存储一个bit。
这些cell以8个或者16个为单位,连成bit line,形成byte(x8)/word(x16),这就是NAND Device的位宽。
这些Line会再组成Page。

块(block)是Nand Flash的擦除操作的最小单位。
页(page)是Nand Flash的读取和编程(写入)操作的最小单位。

块大小可以是128KB、256KB、512KB
每个块里面又包含了很多页。每个页的大小可以是256B\512B (small block),2KB\4KB(big block)

1 page = (8192+1024)byte
1 block = (1152)page
1 plane = (911+39)block
1 chip = 4plane

a device contains one or more targets.
A target is organized into one or more logical units(LUNs).
A logical unit (LUN) is the minimum unit that can independently execute commands and report status.
A LUN contains at least one page register and a Flash array. The number of page registers is dependent on the number of plane operations supported for the LUN. The Flash array contains a number of blocks.
word line: 操作单元
page register (页缓存) :这个数据缓存区,本质上就是一个buffer。用于存放将要写入到物理存储单元中去的或者刚从存储单元中读取出来的整页的数据。内存里面的数据,通过Nand Flash的FIFO只是写到了这个页缓存中,只有等你发了对应的编程第二阶段的确认命令0x10之后,实际的编程动作才开始,把页缓存中的数据,一点点写到物理存储单元中。

在这里插入图片描述

EDC(Error Detection Code)/ECC(Error Code Correction)
每个页有一块区域,空闲区域/冗余区域,用于放置数据的校验值。Linux系统中叫OOB(Out Of Band)。
基于Nand Flash的硬件特性,数据在读写时易错误,为了保证数据的正确性,须有对应的检测和纠错机制,
此机制被叫做EDC/ECC。

硬盘
机械硬盘(HDD)和固态硬盘(SSD)

机械硬盘靠马达、盘片、磁头摇臂等必需的机械部件,须在快速旋转的磁盘上移动至访问位置,至少95%的时间都消耗在机械部件的动作上。
固态硬盘由主控与闪存芯片组成,无需机械部件的移动,可以以更快速度和准确性访问驱动器到任何位置。

固态硬盘内部由NAND存储芯片构成,通过高低电平和改变晶体管开关状态,以此来存储数据。
机械硬盘是一种采用磁介质的数据存储设备,通过磁头改写盘片上的正负磁极来存储数据。

在这里插入图片描述

硬盘是一种采用磁介质的数据存储设备,硬盘是由多个盘片叠加在一起,互相之间由垫圈隔开。
数据存储在密封于洁净的硬盘驱动器内的若干个磁盘片上。

盘片(disk)
盘片的表面涂上磁性介质,表面被加工的相当平滑。
磁头(head)
每个盘片有两个磁头,两面一边一个。

磁道(track)
在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆被划分成磁道。
扇区(sector)
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,硬盘的读写以扇区为基本单位。

主引导扇区
硬盘的第一个扇区(0道0头1扇区)
主引导区内有两项内容:主引导记录和硬盘分区表。
主引导记录是一段程序代码,对硬盘上安装的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息。

计算机启动时将读取该扇区的数据,并对其合法性进行判断(扇区最后两个字节是否为0x55AA或0xAA55),
如合法则跳转执行该扇区的第一条指令。所以硬盘的主引导区常常成为病毒攻击的对象,从而被篡改甚至被破坏。
可引导标志:0x80为可引导分区类型标志;0表示未知;1为FAT12;4为FAT16;5为扩展分区等等。
固态硬盘
组成部件:主控芯片 闪存芯片 固件

固件用来驱动控制器,SSD需要FTL层和系统直接对话,因此固件的功能有Mapping, Trim, WL ,GC, ECC,
所以固件中的算法非常多。
固件让闪存和主控达到完美的兼容,需按照最新先进技术的主控还有闪存颗粒的更新而修改维护。
相同主控相同闪存颗粒的产品因为固件的不同,会有不一样的的寿命及读写性能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夏与冬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值