《大话存储》第3章-磁盘原理与技术详解(3)

3.6 磁盘控制器、驱动器控制电路和磁盘控制器驱动程序

3.6.1 磁盘控制器

  • 磁盘的接口包括物理接口,即硬盘接入到磁盘控制器上需要用的接口,具体的针数、某个针的作用等。除了物理接口规范之外,还定义了一套指令系统,叫做逻辑接口。指令集定义了“怎样向磁盘发送数据和从磁盘读取数据以及怎样控制其他行为,比如SCSI和ATA指令”。
  • 逻辑接口,也就是SCSI或者ATA的指令集部分,指令实体内容是需要由运行于操作系统内核的驱动程序来生成的,而物理接口的连接,就是磁盘控制器芯片需要负责的,比如ATA控制器或SCSI控制器。
  • 磁盘控制器的作用是参与底层的总线初始化、仲裁等过程以及指令传输过程、指令传输状态机、重传、ACK确认等,将这些太过底层的机制过滤掉,从而向驱动程序提供一种简洁的接口。驱动程序只要将要读写的设备号、起始地址等信息,也就是指令描述块(Command Description Block,CDB)传递给控制器即可,控制器接收指令并做相应动作,将执行后的结果信号返回给驱动程序。

3.6.2 驱动器控制电路

  • 应将磁盘控制器和驱动控制电路区分开来,二者是作用于不同物理位置的。磁盘驱动器控制电路位于磁盘驱动器上,专门负责直接驱动磁头臂做运动来读写数据。由磁盘控制器对磁盘驱动器发出指令,进而操作磁盘,CPU做的仅仅是操作控制器就可以了。CPU通过主板上的导线发送SCSI或ATA指令(CDB)给同样处于主板上的磁盘控制器,控制器通过线缆将指令发送给磁盘驱动器并维护底层指令交互状态机,由磁盘驱动器解析收到的指令从而根据指令的要求来控制磁头臂。
  • SCSI或者ATA指令CDB是由OS内核的磁盘控制器驱动程序生成并发送的。CPU通过执行磁盘控制器驱动程序,生成指令发送给磁盘控制器,控制器收到这些CDB后,会做一定程度的翻译映射工作,生成最底层的磁盘可接受的纯SCSI指令,然后通过底层的物理操作,比如总线仲裁,然后编码,再在线缆上将指令发给对应的磁盘。

3.6.3 磁盘控制器驱动程序

  • 那么机器刚通电,操作系统还没有启动起来并加载磁盘控制器驱动的时候,是怎么访问磁盘的呢?CPU必须执行磁盘通道控制器驱动程序才能与控制器交互,读写数据。所以,系统BIOS中存放了初始化系统所必需的基本代码。系统BIOS初始化过程中有这么一步,就是去发现并执行磁盘控制器的Optional ROM(保存在磁盘通道控制器中或单独的Flash芯片内),该ROM内包含了该控制器的最原始的、可在主BIOS下执行的驱动程序,主BIOS载入并执行该ROM,从而加载了其驱动程序,也就可以与控制器进行交互了。最后主BIOS通过执行驱动程序而使得CPU可以发送对应的读指令,提取磁盘的0磁道的第一个扇区中的代码载入内存执行,从而加载OS。
  • 系统BIOS(主BIOS)中是包含常用的磁盘控制器驱动程序的,但是对于一些不太常用的较高端的板载控制器或者PCIE卡形式的控制卡,主BIOS一般不包含其驱动,所以必须主动加载其Option ROM才能在主BIOS下驱动。在OS内核启动过程中,会用高性能的驱动程序来接管BIOS中驻留的驱动程序。当然,BIOS中也要包含键盘驱动,如果支持USD移动设备启动,还要有USB驱动。
    在这里插入图片描述
  • 安装操作系统时,安装程序要求必须加载完整的磁盘控制器驱动程序之后才可以识别到控制器后面的磁盘从而才可以继续安装。此时虽然系统BIOS里的解百纳简化驱动已经可以向磁盘进行读写操作,但是其性能是很差的,基本都是Int13调用方式;而现代操作系统都抛弃了这种方式,所以安装操作系统过程中必须加载完整驱动才可以获得较高的性能。至于系统安装后的启动过程,一开始必须由BIOS来将磁盘的O磁道代码读出执行以便加载操作系统,使用的是简化驱动,启动过程中,OS的完整驱动会替代掉BIOS的简化驱动被加载。

3.7 内部传输速率和外部传输速率

3.7.1 内部传输速率

  • 磁盘的内部传输速率指的是磁头读写磁盘时的最高速率。这个速率不包括寻道以及等待扇区旋转到磁头下所耗费时间的影响。是一种理想情况,假设只在一个磁道上连续地循环读写这个磁道的所有扇区时的速率。
  • 通常,每秒10000转的SCSI硬盘的内部传输速率的数量级在1000MB/s左右。但是为何实际使用硬盘的时候,比如复制一个文件,其传输速率充其量只是每秒几十兆字节?原因就是磁头需要不断换道。磁头滑过盘片一圈,只需要很短的时间,而换道所需的时间远远比盘片旋转一圈耗费的时间多,所以造成磁盘整体外部传输速率显著下降。换道是无法避免的,总则几十上百兆、甚至上GB的文件,一个磁道是放不下的。
  • 实际中一块10000转的SCSI硬盘的实际外部传输速率也只有80MB/s左右(最新的15000转的SAS硬盘外部传输速率最大已经可以达到200MB/s)。为了避免磁头被不断打断的问题,发明了RAID技术,让一个硬盘的磁头在换道时,另一个磁盘的磁头在读写。如果很多磁盘联合起来,同一时刻总是有某块磁盘的磁头在读写状态而不是都在换道状态,这就相当于一个大虚拟磁盘的磁头总是处于读写状态,所以RAID可以显著提升传输速率。不仅如此,如果将RAID阵列再次进行联合,就能将速率在RAID提速的基础上,再次成倍地增加。这种工作,就需要大型磁盘阵列设备来做了。

3.7.2 外部传输速率

  • 磁头从盘片上将数据读出,然后存放到硬盘驱动器电路板上的缓存芯片内,再将数据从缓存内取出,通过外部接口传送给主板上的硬盘控制器。从外部接口传送到硬盘控制器时的传输速率,就是硬盘的外部传输速率。这个动作是由硬盘的接口电路来发起和控制的。
  • 接口电路和磁头控制电路是不同的部分,磁头电路部分是超精密高成本的部件,可以保证磁头读写时的高速率。但是因为磁头要被不断地打断,所以外部接口传输速率无需和磁头传输速率一样,只要满足最终的实际速率即可。外部接口的速率通常大于实际使用中磁头读写数据的速率(计入换道的损失)。

3.8 并行传输和串行传输

3.8.1 并行传输

  • 并行传输要求通信双方之间的距离足够短,距离过长,会受导线电阻不均衡以及其他各种原因的影响,最终到达对方的速度就会显现出差距,从而造成接收方必须等所有线路的数据都到达之后,才能发起下一轮传送。
  • 并行传输应用到长距离的连接上就无优点可言了。首先,在长距离上使用多条线路比使用一条单独线路昂贵;其次,长距离的传输要求较粗的导线,以便降低信号的衰减,这是要把它们捆到一条单独电缆里相当困难。IDE硬盘使用的40或者80芯电缆就是典型的并行传输。40芯中32芯是数据线,8芯是承载其他控制信号用的。所以,这种接口一次可以同时传输32b的数据,也就是4B。

3.8.2 串行传输

  • 串行传输在效率上,显然比并行传输低得多。但也有其优势,凭借这种优势使得硬盘的外部接口已经彻底被串行传输所占领。USB接口、IEEE 1394接口和COM接口,这些都是串行传输的计算机外部接口。
  • 并行传输表面上看起来比串行传输效率高很多倍,但是并行传输有不可逾越的技术困难,就是他的传输频率不可太高。由于在电路高速振荡的时候,数据线之间会产生很大的干扰,造成数据出错,所以必须增加屏蔽线。即使加了屏蔽线,也不能保证屏蔽掉更高的频率干扰。所以并行传输效率高但是速度慢。而串行传输则刚好相反,效率是最低的,每次只能传输一位,但是它的速度非常高,现在已经可以达到10GB/s的传输速率,但传输导线不能太多。
  • 这样算来,串行传输反而比并行传输的总体速率更快。串行传输不仅仅用于远距离通信,现在就连PCI接口都转向了串行传输方式。PCIE接口就是典型的串行传输,其单条线路传输速率最高2.5GB/s,还可以在每个接口上将多条线路并行,从而将速率翻倍,比如4X的PCIE最高可到16X,也就是说将16条2.5GB/s的线路并行连接到对方。这仿佛又回到了并行时代,但是也只有在短距离传输上,比如主板上的各个部件之间,才能承受如此高速的并行连接,远距离传输是达不到的。

3.9 磁盘的IOPS和传输带宽(吞吐量)

3.9.1 IOPS

  • 磁盘的IOPS,也就是每秒能进行多少次IO,每次IO根据写入数据的大小,这个值也不是固定的。IOPS随着上层应用的不同而有很大变化。
    • 如果在不频繁换道的情况下,每次IO都写入很大的一块连续数据,则此时每秒所做的IO次数是比较低的;
    • 如果磁头频繁换道,每次写入数据还比较大的话,此时IOPS应该是这块硬盘的最低数值了;
    • 如果在不频繁换道的条件下,每次写入最小的数据块,比如512B,那么此时的IOPS将是最高的;
    • 如果使IO的payload长度为0,不包含开销,这样形成的IOPS则为理论最大极限值。
  • 对于磁盘来说,每次IO就是指一次SCSI指令交互回合。一个回合中可能包含了若干个SCSI指令,而这一个回合里却只能完成一次IO,比如”读取从LBA10000开始后128个扇区“。
  • 例如,写入10 000个大小为1KB的文件到系统上,耗费的时间要比写入一个10MB大小的文件大得多,虽然数据总量否是10MB。因为写入10 000个文件时,根据文件分布情况和大小情况,可能需要做好几万甚至十几万次IO才能实现。而写入一个10MB的大文件,如果这个文件在磁盘上时连续存放的,那么只需要几十个IO就可以实现。
  • 对于写入10 000个小文件的情况,因为每秒需要的IO非常高,此时如果用具有较高IOPS的磁盘,将会提速不少。而写入一个10MB文件的情况,就算用了有较高IOPS的硬盘来做,也不会有提升,因为只需要很少的IO就可以完成了,只有换具有较大传输带宽的硬盘,才能体现出优势。
  • 同一块磁盘在读写小数据的时候速度是比较高的;而读写大数据的时候速度比较低,因为读写花费的时间变长了。15000转的硬盘比10000转的硬盘性能要高。
    在这里插入图片描述

3.9.2 传输带宽

  • 传输带宽指的是硬盘或设备在传输数据的时候数据流的速度。如果写入10 000个1KB的文件需要10s,此时的传输带宽还能达到每秒10MB;而写入一个10MB的文件用了0.1s,此时的传输带看就是100MB/s。所以,即使同一块硬盘在写入不同大小的数据时,表现出来的带宽也是不同的。具有高带宽规格的硬盘在传输大块连续数据时具有优势,而具有高IOPS的硬盘在传输小块不连续的数据时具有优势
  • 同样,对于一些磁盘阵列来说,也有这两个规格。一些高端产品同时具备较高的IOPS和带宽,这样就可以保证在任何应用下都能表现出高性能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值