Discuz!NT|BBS|论坛

注册

 

发新话题 回复该主题

硬盘AHCI技术介绍[ZT] [复制链接]

1#
一、什么是AHCI技术,优势何在?
AHCI技术的全称是Serial ATA Advanced Host ControllerInterface(即串行ATA主机控制接口技术),它是由Intel、AMD、戴尔、Marvell、迈拓、微软、RedHat、希捷和StorageGear等多家企业联合开发的一种高级主机控制器接口,它允许存储驱动程序启用高级串行 ATA功能,而我们这里提到的高级功能主要是指NCQ(全速命令队列)和热插拔技术。
相信没有几个普通玩家会闲得无事成天热插拔硬盘玩,所以这里主要介绍一下AHCI技术带来的性能优势
排除噪音干扰因素之外,为什么追求极致性能的硬件发烧友们如此推崇SCSI硬盘,经常把它用来当作系统盘或者是BT下载盘呢?其根本原因在于SCSI硬盘除了拥有惊人的接口速度之外,在指令排序功能指引下,其多任务响应速度也远远快于普通的IDE或者SATA硬盘。AHCI技术其实主要是在系统内存和串行ATA设备之间扮演一个接口的角色。

二、支持AHCI技术的硬件
从硬件基本层面而言,AHCI技术的打开需要硬盘和主板两方面的支持。硬盘部分,目前暂时还没有哪个型号产品可以声称完整支持AHCI,不过型号较新的产品已经基本支持NCQ功能,所以大家选购型号较新的硬盘产品即可。不过即使是在主板和硬盘都支持NCQ功能的情况下,也可能出现无法打开AHCI技术的情况,因为这还需要主板芯片组支持。芯片组方面,Intel的ICH系列南桥芯片组中ICH6R、ICH6M、ICH7R、ICH7DH、ICH7M、ICH8R以及P35系列采用ICH9系列芯片组都支持AHCI技术。而之前的ICH5、ICH5R、ICH6、ICH7和ICH8则不能直接支持AHCI,需要通过主板上的板载芯片来实现。值得注意的是,Intel的ICH8南桥应用范围很广,相当多的P965系列芯片组都是采用这一型号芯片。AMD芯片组方面,采用SB600南桥芯片的主板,如690G系列已经直接提供了对AHCI技术的支持。

一个简单的判断方法吧。进入主板BIOS,查看“Integrated Peripherals”中的“OnChip Serial ATADevice”这一项。如果主板芯片组支持AHCI的话,那么这里就应该有个AHCI的选项,否则就只有“IDE”和“RAID”两项。不过需要注意一下,某些主板的BIOS比较特别,SATA工作模式和AHCI功能是独立的两个选项,当SATA模式设置为RAID时,AHCI自动处于“Enable”状态;而当SATA硬盘工作在模拟IDE模式时,AHCI选项就有“支持”或“不支持”两种。根据前面我们已经介绍过AHCI与NCQ之间的关系,这里的BIOS设置就非常明确了,而要实现NCQ功能,BIOS中的SATA 模式显然必须设为AHCI。

三、NCQ技术
SATA规范支持许多新的功能,其中之一就是NCQ(Native CommandQueuing全速命令排队)技术。它是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约。NCQ技术是SATAⅡ规范中的重要组成部分,也是SATAⅡ规范唯一与硬盘性能相关的技术。
首先让我们来看一下硬盘是怎样读写信息的。硬盘通过将信息写入磁盘磁道上的特定位置进行信息
存储硬盘访问磁盘上信息的过程如下:
● 寻找存储数据的目标磁碟(platter),访问该磁碟。
● 寻找磁碟上存储数据的目标磁道(track),访问磁道。
● 寻找磁道上存储数据的目标簇(cluster),访问簇。
● 寻找簇上存书数据的目标扇区(sector),访问扇区。
● 寻找目标数据,读取数据。
通过上面的步骤,硬盘即可获取所需要的数据信息。硬盘写入数据的步骤也是如此,区别仅仅在于读操作变为写操作。大多数情况下数据存入硬盘并非是顺序存入,而是随机存入,甚至有可能一个文件被分配在不同盘片上。对于不支持NCQ的硬盘来说,大量的数据读写需要反复重复上面的步骤,而对于不同位置的数据存取,磁头需要更多的操作,降低了存取效率。支持NCQ技术的硬盘对接收到的指令按照他们访问的地址的距离进行了重排列,这样对硬盘机械动作的执行过程实施智能化的内部管理,大大地提高整个工作流程的效率:即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。

如上图所示,如果新的命令恰好是处理起来机械效率最高的,那么它就是队列中要处理的下一个命令。举个例子:比如向硬盘下达一组数据传送指令,由于数据在磁盘上分布位不同,磁头可能会先读取260扇区,再读取7660扇区,然后又读取261扇区……如果我们对指令进行优化排列,可以先读260扇区,接着依次读261扇区,最后读取7660扇区……显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。并且有效的排序算法除了考虑目标数据的线性位置,也会考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称做“基于寻道和旋转优化的命令重新排序”。


分享 转发
TOP
发新话题 回复该主题