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

3.4 磁盘接口技术

  • 硬盘制造是一项复杂的技术,到目前为止也只有欧洲、美国等发达国家和地区掌握了关键技术。但不管硬盘内部多么复杂,它必定要给使用者一个简单的接口,用来对其访问读取数据,而不必关心这串数据到底改什么时候写入,写入到哪个盘片,用哪个磁头,等等。
  • 下文所说的接口是包括物理、逻辑在内的抽象出来的接口。也就是说,一个事物面向外部的时候,为达到被人使用的目的而向外提供的一种打开的、抽象的协议,类似于说明书。

3.4.1 IDE硬盘接口

  • IDE:Integrated Drive Electronics,电子集成驱动器,本意是指把控制电路和盘片、磁头等放在一个容器中的硬盘驱动器。1)减少硬盘接口的电缆数目和长度,数据传输的可靠性得到增强。2)硬盘制造起来更加容易,不再担心自己的硬盘是否与其他厂商生产的控制器兼容。3)对用户而言,硬盘安装也更加方便。IDE这一接口技术从诞生至今就一直在不断发展,性能也不断提高;其拥有价格低廉、兼容性强的特点,至今仍然有很多用户,但是正在不短减少。
  • IDE接口,也成为PATA接口,即Parallel ATA(并行传输ATA)。ATA,Advanced Technology Attachment,即高级技术附加。最早1986年开发,最初使用40芯电缆与主板上的ATA接口连接;最后一代的ATA规范使用80芯的线缆,其中一部分是屏蔽线,屏蔽其他数据线间的相互干扰,不传输数据。

1. 7种ATA物理接口规范

  • ATA-1:主板上有一个插口,支持一个主设备和一个从设备,每个设备最大容量504MB,支持的PIO-0模式传输速率只有3.3MB/s。硬盘大小为5英寸。还支持PIO-1、PIO-2,另外支持4中DMA模式(未实际应用)。
  • ATA-2:对ATA1的扩展,也称为EIDE(Enhanced IED)或Fast ATA。增加了两种PIO和两种DMA模式,将最高传输速率提升到16.6MB/s,引进了LBA地址转换方式,容量最高达8.1GB。1个IDE有2个EIDE,一个EIDE接两块盘,最大支持4个EIDE设备。
  • ATA-3:传输速度仍为16.6MB/s。修改了电源管理方案,引入了简单的密码保护安全方案。同时引入了一项划时代的技术,S.M.A.R.T(Self-Monitoring Analysis and Reporting Technology,自监测、分析和报告技术),可以对磁头、盘片、电机、电路等硬盘部件进行监测,通过检测电路和主机的监测软件对磁盘进行检测,把其运行状况和历史记录同预设的安全值进行比较分析。超出安全值范围时,自动向用户发送警告,进而对硬盘潜在故障做出有效预测,提高了数据存储的安全性。
  • ATA-4:开始正式支持Ultra DMA数据传输模式,也称为Ultra DMA 33 或ATA33,数据传输速率为33MB/s。并首次在ATA接口中采用了Double Data Rate(双倍数据传输)技术,让接口在一个时钟周期内传输数据两次。还引入了冗余校验技术(CRC)。该技术的设计原理是系统与硬盘在进行传输的过程中,随数据一起发送循环的冗余校验码,对方在收取的时候对该校验码进行校验,只有在校验完全正确的情况下才接收并处理得到的数据,这对于高速传输数据的安全性提供了极其有利的保障。
  • ATA-5:也称为Ultra DMA 66 或ATA66,在ATA33的基础上将接口传输电路的频率提高为原来的两倍,所以收发数据的速率达到66.6MB/s。在工作频率提升的同时,电磁干扰问题开始出现,为保障数据传输的准确性,防止电磁干扰,开始使用40针脚80芯的线缆。
  • ATA-6:ATA100,线缆与ATA66一样,将电路的频率又提升了一个等级,可以让硬盘的外部传输速率达到100MB/s。提高了硬盘数据的完整性和数据传输速率,对桌面系统的磁盘子系统性能有较大的提升作用,而CRC技术更有效保证了在高速传输中数据的完整性和可靠性。
  • ATA-7:ATA接口的最后一个版本,也称为ATA133,是第一种在接口速度上超过了100MB/s的IDE硬盘,迈拓是目前唯一一家推出这种接口标准硬盘的制造商。由于并行传输随着电路频率的提升,传输线缆上的信号干扰问题越来越难以解决,已经达到了当前技术的瓶颈,所以其他IDE硬盘厂商停止了对IDE接口的开发,转而生产Serial ATA接口标准的硬盘。

2. IDE数据传输模式

  • PIO模式:Programming Input/Output,一种通过CPU执行I/O端口指令来进行数据读写的数据交换模式,是最早的硬盘数据传输模式。数据传输速率低下,CPU占用率也很高,传输大量数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其他的操作。在PIO模式下,硬盘控制器接收到硬盘驱动器传来的数据之后,必须由CPU发送信号将这些数据复制到内存中,这就是高CPU占用率的原因。受限于传输速率低下和极高的CPU占用率,这种数据传输模式很快就被淘汰了。
  • DMA模式:Direct Memory Access,直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。CPU只需向DMA控制器下达指令,让DMA控制器来处理数据的传送。DMA控制器直接将数据复制到内存的相应地址上,数据传输完毕后再把信息反馈给CPU,很大程度上减轻了CPU资源的占用率。分为单字节DMA和多字节DMA。DMA所能达到的最大传输速率也只有16.6MB/s,和PIO差异不大。
  • Ultra DMA模式UDMA,高级直接内存访问。采用16-bit Mutli-Word DMA(16位多字节DMA)模式为基准,在包含了DMA模式的优点的基础上,又增加了CRC(Cyclic Redundancy Check,循环冗余码校验)技术,提高了数据传输过程中的准备性,保障数据传输的安全性。在以往的硬盘数据传输模式下,一个时钟周期只传输一次数据,而在UDMA模式中组建应用了Double Data rate(双倍数据传输)技术,数据传输速率有了极大的提高。就是在时钟的上升期和下降期各自进行一次数据的传输。
  • 小结:在UDMA模式发展到UDMA133之后,受限于IDE接口的技术规范,无论是连接器、连接电缆还是信号协议都表现了很大的技术瓶颈,而且其支持的最高传输速率也有限。在IDE接口传输速率提高的同时,也就是工作频率提供的同时,IDE接口交叉干扰、地线增多、信号混乱等缺陷也给其发展带来了很大的制约,被新一代的SATA接口取代也就在所难免了。

3.4.2 SATA硬盘接口

SATA的全称是Serial ATA,即串行传输ATA。相对于PATA模式的IDE接口来说,SATA是用串行线路传输数据,但是指令集不变,仍然是ATA指令集。SATA标准是由Intel、IBM、Dell、APT、Maxtor和Seagte公司共同提出的硬盘接口规范。SATA与IDE结构在硬件上有着本质区别,其数据接口、电源接口以及接口实物图下:
在这里插入图片描述

1. SATA规范的发展历程

  • SATA技术是Intel公司在IDF 2000大会上推出的,其最大的优势是传输速率高。工作原理非常简单:采用连续串行的方式来实现数据传输从而获得较高的传输速率。2003年发布的SATA 1.0规范提供的传输速率已经达到了150MB/s,超过了IDE最高传输速率133MB/s。
  • SATA在数据可靠性方面有了大幅度提高。可同时对指令及数据封包进行循环冗余校验(CRC),不仅可以检测出所有单比特和双比特的错误,而且根据统计学的原理还能够检测出99.998%可能出现的错误。相比之下,PATA只能对来回传输的数据进行校验,加上高频率下干扰甚大,因此数据传输稳定性很差。
  • 除了传输速率更高、数据传输更可靠外,节省空间是SATA最具吸引力的地方。线缆精简更有利于机箱内部的散热,线缆间的串扰也得到了有效地限制。不过SATA 1.0规范存在不少缺点,特别是缺乏对于服务器和网络存储应用所需的一些先进特性的支持。比如多任务、多请求的典型服务器环境里面,硬盘性能大幅度下降,还有可维护性不强、可连续性不好等缺点。这时,SATA 2.0的出现使这方面得到了很好的补充。

2. SATA 2.0规范中的新特性

  • 新特性:
    • 3GB/s的传输速率:在SATA 2.0扩展规范中,3GB/s的速率是最大的亮点。由于SATA使用8bit/10bit编码,所以3GB/s等同于300MB/s的接口速率。不过,从性能角度看,3GB/s并不能带来多大的提升,即便是RAID应用的场合,性能提升也没有想象中大。因为硬盘内部传输速率还达不到与接口速率等同的程度。在大多数应用中,硬盘是将更多的时间花在了寻道上,而不是传输。接口速率的提高直接影响的是从缓存进行读写的操作,理论上大缓存的产品会从3GB/s的传输速率中得到更大的好处。
    • 支持NCQ技术:Native Command Queuing,自身命令队列。硬盘是机电设备,容易受内部机械部件惯性的影响,其中旋转等待时间和寻道等待时间就大大限制了硬盘对数据访问和检索的效率。
  • 如果对磁头寻道这个机械动作的执行过程实施智能化的内部管理,就可以大大地提高整个工作流程的效率。即取出队列中的命令,重新排序,以便有效地获取和发送主机请求的数据。有效地排序算法既要考虑目标数据的线性位置,又要考虑其角度位置,并进行优化,以使总线的服务时间最小,这个过程也称做“基于寻道和旋转优化的命令重新排序”。
  • 台式SATA硬盘队列一直被严格地限制深度不得超过32级。如果增加队列深度,可能会起到反作用——增加命令堆积的风险。通常SATA硬盘接收命令时有两种选择,立即执行命令或延迟执行。对于后者,硬盘必须通过设置注意标志和Service位来通知主机何时开始执行命令。然而硬盘不能主动与主机通信,这就需要主机定期轮回查询,发现Service位后将发出一条Service命令,然后才能从硬盘处获得将执行哪一条待执行命令的信息。而且Service位不包含任何对即将执行命令的识别信息,所必须的命令识别信息是以标记值的形式与数据请求一同传输的,并仅供主机用于设置DMA引擎和接收数据缓冲区。这样主机就不能预先掌握硬盘所设置的辅助位是哪条命令设置的,数据传输周期开始前也无法设置DMA引擎,这最终导致了SATA硬盘效率低下。
  • NCQ包含如下两部分内容:
    • 1、硬盘本身必须有能力针对实体数据的扇区分布对命令缓冲区中的读写命令进行排序。同时硬盘内部队列中的命令可以随着必要的跟踪机制动态地重新调整或排序,其中跟踪机制用于掌握待执行和已完成作业的情况,而命令排队功能还可以使主机在设备对命令进行排队的时候,断开与硬盘间的连接已释放总线。一旦硬盘准备就绪,就重新连接到主机,尽可能以最快的速率传输数据,从而消除占用总线的现象。
    • 2、通信协议的支持也相当重要。以前的PATA硬盘在传输数据时很容易造成中断,这会降低主控器的效率,所以NCQ规范中定义了中断聚集机制。相当于一次执行完数个命令后,再对主控器回传执行完毕的信息,改善处理队列命令的效能。
  • 目前NCQ对个人桌面应用并没有带来多大的性能提升,在某些情况下还会引起副作用。而且不同硬盘厂商的NCQ方案存在差异,带来的效果也不同。
    • 端口选择器(Port Selector):一种数据冗余保护方案,可增加冗余度,具有Port Selector功能的的SATA硬盘,外部有两个SATA接口,同时连接这两个接口道控制器上,一旦某个接口坏掉或连线故障,立即切换到另一个接口,不会影响数据传输。
    • 端口复用器(Port Multiplier):SATA 1.0的缺点就是可连接性不好,即连接多个硬盘的扩展性不好,因为一个SATA接口只能连接一个设备。SATA 2.0中引入了Port Multiplier的概念,是一种可在一个控制器上扩展多个SATA设备的技术,它采用4位(bit)宽度的Port Multiplier端口字段,其中控制器端口占用一个字节,最多支持15个设备连接,这与并行SCSI相当。上行端口只有一个,在带宽为150MB/s的时候容易成为瓶颈,如果上行端口执行300MS/s的带宽,就与Ultra320 SCSI的320MB/s十分接近了。该技术对需要多硬盘的客户很有用,不过目前能提供这种功能的芯片组极少。
    • 服务器特性:比如防止开机时多硬盘同时启动带来太大电流负荷的交错启动功能;强大的温度控制、风扇控制和环境管理;背板互联和热插拔功能等。这些功能更侧重于低端服务器方面的发展。
    • 接口和连线的强化:作为一个还在不断添加内容的标准集合,SATA 2.0最新的热点是eSATA,即外置设备的SATA接口标准,采用了屏蔽性能更好的2m长连接线,目标是最终取代USB和IEEE 1394。在内部接口方面,Click Connect加强了连接的可靠性,在接上时有提示声,拔下时需要先按下卡口。

3.5 SCSI硬盘接口

  • SCSI与ATA是目前现行的两大主机与外设通信的协议规范,而且它们各自都有自己的物理接口定义,分别是SCSI接口、IDE接口。凡是作为一个通信协议,就可以按照OSI模型划分层次,尽管有些层次可能是合并的或者是确实的。划分了层次之后,就可以把这个协议进行分解,提取每个层次的功能和各个层次之间的接口,从而可以把这个协议融合到其他协议之中,形成一种“杂交”协议来适应各种不同的环境。
  • SCSI:Small Computer System Interface,小型计算机系统接口,是一种较为特殊的接口总线,具备与多种类型的外设进行通信的能力,如硬盘、CD-ROM、磁带机和扫描仪等。SCSI采用ASPI(高级SCSI编程接口)的标准软件接口使驱动器和计算机内部安装的SCSI适配器进行通信。SCSI接口是一种广泛应用于小型机上的高速数据传输技术,具有应用范围广、多任务、带宽大、CPU占用率低以及热插拔等优点。
  • SCSI接口为存储产品提供了强大、灵活的连接方式,以及很高的性能,可以有8个或更多(最多16个)的SCSI设备连接在一个SCSI通道上,其缺点是价格过于昂贵。一般需要配合价格不菲的SCSI卡一起使用,而且SCSI接口的设备在安装、设置时比较麻烦,所以远远不如IDE设备使用广泛。虽然从2007年开始,IDE硬盘就被SATA硬盘彻底逐出了市场。
  • 在系统中应用SCSI必须要有专门的SCSI控制器。上面的CPU芯片对SCSI设备就行控制,能处理大部分的工作,减少了CPU占用率。在同时期的硬盘中,SCSI硬盘的转速、缓存容量、数据传输速率都高于IDE硬盘,因此更多应用于商业领域。
  • LVD传输模式:Low Voltage Differential,低电平微分。可以使用更低的电压,因此可以将差动驱动程序和接收程序集成到硬盘的板载SXSI控制器中,不再需要单独的高成本外部高电压差动组件。LVD硬盘带宽的增加对于服务器环境来说意味着更理想的性能,服务器环境都有快速响应、必须能够进行随机访问和大工作量的队列操作等要求。
  • 其他关键技术:双转换时钟控制、循环冗余码校验、域名确认,同步、异步、调步传输模式(320MB/s)。

1. SCSI协议的物理层

  • SCSI接口的各个规范,全部限于物理电气层,即描述传输速率、电气技术性能等。

2. SCSI协议的链路层

  • OSI模型中链路层的功能就是用来将数据帧成功地发送到这条线路的对端。SCSI协议中,利用CRC检验码来校验每个指令或者数据的帧,如果发现不一样,就丢弃这个帧,发送方便会重传这个帧。

3. SCSI协议的网络层

  • 1) SCSI总线编址机制
    • OSI模型中网络层的功能就是用来寻址的,SCSI协议利用SCSI ID来区分每个节点。在Ultra 320 SCSI协议中,一条SCSI总线上可以利用16个节点,其中SCSI控制器占用一个,SCSI ID被恒定设置为7。其他15个节点的SCSI ID可以随便设置但不能重复,7占有最高的优先级。
    • 总线是一种共享的线路,其上的每个节点都会同时感应到这条线路上的电位信号,同一时刻只能由一个节点向这条总线上放数据,也就是给这条线路加一个高电位或低电位。其他所有节点都能感知到这个电位的增降,但是只有接收方节点才会将感知到的电位增降信号保存到自己的缓存中,这些保存下来的信号就是数据。
      在这里插入图片描述
    • 了解当前线路上是不是自己在通信,或想争夺线路的使用权而通告其他节点,这个过程叫做仲裁。有总线的地方就有仲裁,因为总线是共享的,各个节点都有申请使用,必须有一个仲裁机制。SCSI接口并不是只有8或16条数据总线,还有很多控制信号线。
    • SCSI卡一端接入主机的PCI总线,另一端用一个SCSI控制器接入SCSI总线。卡上有自己的CPU(频率很低,一般为RISC架构),通过执行ROM中的代码来控制整个SCSI卡的工作。经过这样的架构,SCSI卡将SCSI总线上的所有设备经过PCI总线传递给内存中运行着的SCSI卡的驱动程序,这样操作系统便会指导SCSI总线上的所有设备了。一块卡可能不止一个SCSI控制器。
      在这里插入图片描述
  • 2) SCSI总线寻址机制和几个阶段
    • (1)空闲阶段
      总线一开始是处于一种空闲状态,没有节点要发起通信。总线空闲的时候,BSY和SEL这两条控制信号线都为False状态(用一个持续的电位表示),任何节点都可以发起通信。
    • (2)仲裁阶段
      • 节点都是通过在8或16条数据总线上提升自己对应那条线的电位来申请总线使用权的,同时也提升BSY线路的电位。SCSI设备上都有跳线来设置这个设备的ID号。如果同时有多个节点提升了各自线路上的电位,那么所有发起申请的节点均判断总线上的这些信号,如果自己是最高优先级的,即持续保留这个信号,否则立即撤销自身的信号,回到初始状态等待下轮仲裁。最高优先级的ID就在这轮仲裁中获胜,取得总线的使用权,同时将SEL信号线提升电位。
      • SCSI总线的寻址方式,按照控制器-通道-SCSI ID-LUN ID来寻址。(LUN,Logical Unit Number)
        在这里插入图片描述
      • SCSI ID并不是SCSI总线网格中的最后一层地址,还有一个LUN ID,再划分就是逻辑层面了。每个SCSI ID下面可以再区分出来若干个LUN ID。控制器初始化时,对每个SCSI ID上的设备发出一条Report LUN指令,用来收集LUN信息。如果一个物理设备上没有再划分的逻辑单元,就必须向控制器报告一个LUN0,代表物理设备本身。
    • (3)选择阶段
      • 仲裁阶段之后,获胜的节点会将BSY和SEL信号线置位,然后将自身ID对应的线路和对应它要通信的目标ID的线路的电位提升,这样目的节点就能感知到它自己的线路上来了信号,开始做接收准备。
  • 总线上最常发生的是控制器向其他节点发送和接收数据,而除控制器之外的其他节点之间交互数据,一般是不会发生的。如果要从总线上的一块硬盘复制数据到另一块硬盘,也必须先将数据发送到控制器,控制器再复制到内存,经过CPU运算后再次发给控制器,然后控制器再发给另外一块硬盘。经过这么长的路径而不直接让这两块硬盘建立通信。是因为硬盘本身是不能感知文件这个感念的,硬盘只能理解SCSI语言,而SCSI语言是处理硬盘LBA块的,即告诉硬盘读/写某些LBA地址上的扇区/块,而不能告诉硬盘读写某个文件。文件这个层次的功能是由运行在主机上的文件系统代码实现的,所以硬盘必须将数据先传送到主机内存由文件系统处理,然后再发向另外的硬盘。
  • 这就是SCSI的网络层,每个节点都在有条不紊地和控制器交互着数据。

4. SCSI协议的传输层

  • OSI模型中的传输层的功能就是保障此端的数据成功地传送到彼端。与链路层不同的是,链路层只是保障线路两端数据的传送,而且一旦某个帧出错,链路层本身不会重新传送这个帧。所以,需要有一个端到端的机制来保障传输,这个机制运行在通信双方最终的两端,而不是某个链路的两端。
    在这里插入图片描述
  • 发起方在获得总线仲裁之后,会发送一个SCSI Commond写命令帧,其中包含对应的LUN号以及LBA地址段。接收端接收后,就知道下一步对方要传输数据了,做好准备后,向发起方发送一个XFER_RDY帧,表示已经做好接收准备,可以随时发送数据。
  • 发送方收到XFER_RDY帧之后,会立即发送数据。每发送一帧数据,接收方就回送一个XFER_RDY帧,表示上一帧成功收到且无错误,可以立即发送下一帧,直到数据发送结束。
    在这里插入图片描述
  • 发起方在获得总线仲裁之后,会发送一个SCSI Commond读命令帧。接收端接收后,立即将该命令中给出的LUN以及LBA地址段的所有扇区的数据读出,传送给发起端。
  • 所有数据传输结束后,目标端发送一个RESPONSE帧来表示这条SCSI命令执行完毕。
  • SCSI协议语言就是利用这种两端节点之间相互传送一些控制帧,来达到保障数据成功传输的目的。

5. SCSI协议的会话层、表示层和应用层

  • 会话层、表示层和应用层是OSI模型的最上面的三层,是与底层网络通信语言无关的,底层语言没有必要了解上层语言的含义。有没有会话层,完全取决于利用这个协议进行通信的应用程序。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值