计算机组成原理之存储(六)

前言

  1. 为什么CPU与内存之间的速度差距如此大呢?
  2. 有什么方法可以解决这两者之间速度的差距么?
  3. 了解了计算机各存储原理对编程有什么帮助呢?
  4. 为什么传统的HDD难以提升其性能?
  5. 为什么SDD访问性能会比HDD好如此多?
  6. SDD性能比机械硬盘好那么多,价格算亲民,市面为何还是存在如些多的HDD?

一、存储器的层次结构

直观感受计算机的层次结构如下图所示:

存储器的层次关系图
存储器的层次关系图

Register

寄存器可以说是CPU自带的一种存储器,只能存放极其有限的信息,但是速度非常快,和 CPU 同步。

CPU Cache

  • 1. 用的是一种叫作 SRAM(Static Random-Access Memory,静态随机存取存储器)的芯片。
  • 2. SRAM 之所以被称为“静态”存储器,是因为只要处在通电状态,里面的数据就可以保持存在。
  • 3. 在 SRAM 里面,一个比特的数据,需要 6~8 个晶体管。所以 SRAM 的存储密度不高。
  • 4. 同样的物理空间下,能够存储的数据有限。不过,因为 SRAM 的电路简单,所以访问速度非常快。
  • 5. 在 CPU 里,通常会有 L1、L2、L3 这样三层高速缓存。每个 CPU 核心都有一块属于自己的 L1 高速缓存,通常分成指令缓存和数据缓存,分开存放 CPU 使用的指令和数据。

DRAM

  • 1. 内存用的芯片和 Cache 有所不同,它用的是一种叫作 DRAM(Dynamic Random Access Memory,动态随机存取存储器)的芯片。
  • 2. DRAM 被称为“动态”存储器,是因为 DRAM 需要靠不断地“刷新”,才能保持数据被存储起来。
  • 3. DRAM 的一个比特,只需要一个晶体管和一个电容就能存储。数据是存储在电容里的,电容会不断漏电,所以需要定时刷新充电,才能保持数据不丢失。
  • 4. DRAM 的数据访问电路和刷新电路都比 SRAM 更复杂,所以访问延时也就更长。

二、HDD

HDD(Hard Disk Drive)也就是机械硬盘。通常硬盘衡量其性能是用IOPS。

IOPS(Input/Output Operations Per Second)每秒的读写次数;通常硬盘的为100左右。

机械硬盘的组成

如上图,一块机械硬盘是由盘面、磁头和悬臂三个部件组成的

  • 盘面(Disk Platter)

其实就是我们实际存储数据的盘片。

通常我们电脑硬盘的转速,也就是指盘面中间电机控制的转轴的旋转速度,英文单位叫 RPM,也就是每分钟的旋转圈数(Rotations Per Minute)。

  • 磁头(Drive Head)

数据并不能直接从盘面传输到总线上,而是通过磁头,从盘面上读取到,然后再通过电路信号传输给控制电路、接口,再到总线上的。

  • 悬臂(Actutor Arm)

链接在磁头上,把磁头定位到盘面的某个特定的磁道(Track)上。

 

机械硬盘的读取

硬盘上随机读取的时间主要是由寻道时间旋转延迟数据传输时间三部分构成。

      寻道时间 

读写磁头移动至正确的磁道上所需要的时间。 HDD 硬盘的平均寻道时间一般在 4-10ms。

      旋转延迟

 盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。

        旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。

        比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms。

      数据传输时间

        完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。

       目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分时间,因此计算IOPS时可以将其忽略。

        一台转速7200的硬盘理论IOPS:1000/(4.17+4) = 125 或 1000/(4.17+10) = 70

那怕是20000转的最高IOPS其实也是很小的,1000/(60*1000/20000/2 + 4) = 181

这些还是理想状态上的值,事实可能比这个还要小。

那么有没有什么方法可以提升硬盘的IOPS呢?

其实通过上述的描述,我们知道IOPS由寻道时间+旋转延迟决定的。

那么要提升IOPS无非就是缩短这两个因素,而对于旋转延迟可以看到从7200转到20000转,IOPS的提升也没有那么明显。那么也就只能是提升寻道时间了。

而到底该如何提升呢?

思路是缩短寻道的距离,在不改变工艺的情况下,比较方便的是减少磁头转动的面,也就是只在盘面存储二分之一或更少的数据,也就是通常说的以空间换取效率的思想。

如7200转只存取1/4硬盘,IOPS: 1000/(4.17+4/4) = 193。发现其性能优过2W转的了。有一个很显的弊端就是存储的数据量变少了很多,但要知道2W转的硬盘可比7200转的贵不只四倍。


三、SSD

  固态硬盘存储原理

   记录一个比特很容易理解。给电容里面充上电有电压的时候就是 1,给电容放电里面没有电就是 0。采用这样方式存储数据的 SSD 硬盘,我们一般称之为使用了 SLC 的颗粒,全称是 Single-Level Cell,也就是一个存储单元中只有一位数据。逻辑结构如下图所示:

  但如上图如里用SLC方式那么存储的容易会跟CPU那样存储空间上不去,因此硬件科学家利用上了电压,也就是利用工艺技术给电容中充入不同的电压,以便可以表示更多的数据,这么做读取数据或存储数据需要更加精细,因此速度会有所降低,逻辑结构如下图:

说明:只有一个电容,我们怎么能够表示更多的比特呢?

别忘了,这里还有一个电压计。4 个比特一共可以从 0000-1111 表示 16 个不同的数。

那么,如果能往电容里面充电的时候,充上 15 个不同的电压,并且电压计能够区分出这 15 个不同的电压。

加上电容被放空代表的 0,就能够代表从 0000-1111 这样 4 个比特了。

总的一句话: SSD 的物理原理,也就是“电容 + 电压计”的组合。

 

适用场景

   SSD 硬盘的寿命取决于单个存储块的擦除次数。

   总的来说SSD 硬盘,特别适合读多写少的应用。

   在日常应用里面,我们的系统盘适合用 SSD。但是,如果用 SSD 做专门的下载盘,一直下载各种影音数据,然后刻盘备份就不太好了,特别是现在 QLC 颗粒的 SSD,它只有几千次可擦写的寿命啊。

   在数据中心里面,SSD 的应用场景也是适合读多写少的场景。我们拿 SSD 硬盘用来做数据库,存放电商网站的商品信息很合适。但是,用来作为 Hadoop 这样的 Map-Reduce 应用的数据盘就不行了。因为 Map-Reduce 任务会大量在任务中间向硬盘写入中间数据再删除掉,这样用不了多久,SSD 硬盘的寿命就会到了。

 

SSD之IOPS

笔者测试自己电脑效率如下

  • 说明:
  1.        2048K-ok代表4K已经对齐。
  2.       Seq测试性能是顺序读写测试。
  3.       4K表示随机读写小文件的处理性能。通俗地说就是去随机读取磁盘上某一个 4KB 大小的数据,一秒之内可以读取到多少数据。笔者用的是SATA 3.0 的接口,理论带宽是 6Gb/s,相当于每秒可以传输 768MB 的数据。
  4.      如果要SSD硬盘更快就得换PCI Express 接口,这个的峰值基本可以上到1G以上。

    拿这个 35MB/s 和一次读取 4KB 的数据算一下。

        35MB / 4KB = 9000

   如果是写入的话呢,会更多一些,

       79MB /4KB = 20000

   也就是说,一秒之内,这块 SSD 硬盘可以随机读取 9000次的 4KB 的数据,可以随机写入 20000 次的 4KB 的数据。也就是IOPS可以轻易达到万次的级别。

 

小结:

  芯片造得越大,总有部分离 CPU 的距离会变远。电信号的传输速度又受物理原理的限制,没法超过光速。

  这里有个很形象的表示上述几者的关系,如下图所示:

SSD与HDD的区别: 

SSD与HDD的对比

SSD与HDD的对比 :

机械硬盘要远强于 SSD,那就是耐用性。

如果我们需要频繁地重复写入删除数据,那么机械硬盘要比 SSD 性价比高很多。

SSD 硬盘,特别适合读多写少的应用。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值