欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

全面优化ATA磁盘性能

程序员文章站 2022-03-17 19:01:35
全面优化ATA磁盘性能  流行的ATA/66(即Ultra DMA/66或UDMA/66)以及ATA/100(即Ultra DMA/100或UDMA/100)标准分别支持66MBps和100MBps的最大传输速率,最新的SerialATA标准更让传输速率达到了150Mbps... 09-04-21...
  流行的ata/66(即ultra dma/66或udma/66)以及ata/100(即ultra dma/100或udma/100)标准分别支持66mbps和100mbps的最大传输速率,最新的serialata标准更让传输速率达到了150mbps以上。在典型的单个磁盘驱动器的环境中,上述最大传输速率在实际使用中一般是不可达到的,限制来自多方面,包括ata芯片的限制、系统总线体系等。
尽管如此,主要是由于scsi设备价格一直居高不下的原因,ata仍然是当前普通工作站的主流选择。另一方面,如何让ata磁盘发挥出最大的性能,却不象装上一个新驱动器然后连接电缆那么简单。

  为了及时跟进ata存储技术的不断发展,microsoft不断发行各种补丁来改进windows对ata的支持。要让ata设备在windows 2000下以最佳的状态运行,掌握一些基础知识是必不可少的,包括ata接口、必需的硬件、相关的软件(例如,win2k的补丁,内建和第三方的驱动程序)。

一、硬件需求

  首先,系统必须有一个支持硬盘驱动器高级ata模式的控制器。当前的驱动器支持的最常见的标准包括ata/33、ata/66和ata/100。几乎所有的ata控制器都向后兼容,例如ata/100控制器一般支持那些使用ata/33甚至更早的ide或eide标准的磁盘。

  在大多数系统上,控制器支持属于主板ata芯片组的任务之一,但也有一些系统的控制器是外插的pci卡,如ata raid控制器。intel占据ata芯片组的大部分市场,但也有其他芯片组厂商提供ata控制器芯片组,如威盛(www.viatech.com.cn)。

  芯片组是ata系统中最重要的一部分,它以及它的驱动程序决定了连接到控制器的设备可以使用哪些功能。因此,了解ata系统的第一步是了解主板上的芯片组或控制卡的功能。如果ata控制芯片是嵌入到主板的,还要检查一下bios是否支持想要使用的ata模式。可能会出现这样的情况,虽然控制芯片支持某种ata模式,但bios却不支持。如果这样,你就必须更新主板的bios。

  接下来要保证采用了适当的连接方式,尽量把不同的磁盘连接到不同的传输通道(电缆)上。这一点很重要,因为ata通道默认以当前通道上最慢设备的速率工作。如果一个ata/33和一个ata/100磁盘连接在同一个通道上,该通道的最大传输速率将是ata/33。因此,必须把低速的ata设备(例如cd-rom、cd-r、cd-rw、zip或老式硬盘)接入一个通道,高速的ata硬盘接入另一个通道。

  另外还要注意连接的电缆。ata/33、ata/66、ata/100规范要求使用专用的80线电缆,而早期ata硬盘使用的通常是40线的电缆。额外增加的电缆线主要起接地的作用,能够有效地降低电缆传输的信噪比。

二、windows的ata支持

  早期的ide/ata规范使用一种叫做programmed i/o(pio)的数据传输方法,这种传输方法在很大程度上依赖于cpu把数据从硬盘的缓冲内存转移到系统内存。早期的pio模式(0、1和2)建立在最初的ata标准上,后来ata-2规范(即eide或fast ata)包含了两种新的pio模式(3和4),同时引入了两种直接内存访问(dma)模式。dma是一种对cpu依赖程度不高的传输方式,有效地降低了pio加给系统cpu的压力。为了提高数据传输性能,dma允许ide控制器直接访问系统内存(其他设备控制器,包括scsi和以太网适配器,也都使用了这种技术)。后来,dma发展成了ultra dma,即ultra ata或ata/33、dma-33标准,它支持新的模式dma mode 3。当然,为了向后兼容,现在的绝大多数硬盘支持所有较老的数据传输模式——包括pio和dma。

  早期的udma磁盘和控制器能够达到33mhz的速度,即其理论最大传输速率是33mbps。随着技术的进步,新版本的udma支持dma mode 4的66mbps,以及dma mode 5的100 mbps。今天使用的大多数ata硬盘都是ata/66或ata/100,提供了原先只有scsi硬盘才能提供的存储速率,缩小了ata和scsi在性能上的差距。

  尽管ata技术在pc领域占据了统治地位,但nt和win 2k在优化ata磁盘性能方面却不那么出色。在nt下,这个问题的根源在于ata磁盘驱动程序的实现方式,它用一个伪scsi微端口(miniport driver)驱动程序atapi.sys结合scsiport.sys,构成一个伪scsi驱动程序,实现对所有ata设备的支持。对于早期的ide控制器和设备,这种一步到位的配置相当有效,没有出现任何明显的性能问题。但是,atapi.sys驱动程序常常拖了新式控制器和设备的后腿,因为atapi.sys不能支持新设备的高级pio和dma操作 模式。虽然一些nt的service pack为atapi.sys增加了对这些新操作模式的支持,但有时要有第三方的驱动程序才能发挥出最优的性能。

  win2k修改了原来的ata驱动模式,把atapi.sys改成了和scsiport.sys一样的全功能端口驱动程序,厂商们可以在一个特殊的miniide驱动程序中实现各种新功能,包括dma和busmastering等,使得操作系统能够发挥出控制器的特殊功能。尽管如此,在ata支持方面还有不少问题存在,特别是对新的dma mode 4和5(ata/66和ata/100)数据传输模式的支持。
 最初发行的win2k支持的速度最高的传输模式是udma/66,这是当前应用最广泛的传输模式之一。然后,在一些基于intel ata芯片的系统上,windows默认不启用最快的传输模式udma/66。显然,这么做一定有它的理由。但是,注意到这种情况的人并不多。microsoft发布的《howto: 如何在intel芯片上启用udm/66模式》http://support.microsoft.com/default.aspx?scid=kb;en-us;q247951)提出了这个问题。这篇文章说明了如何通过修改注册表启用udm66,主要步骤如下(适用于win 2k专业版、服务器版、高级服务器版):


确保所有硬件支持udma66,使用80线的硬盘电缆。

启动注册表编辑器regedt32.exe,找到

hkey_local_machine\system\currentcontrolset\control\class\{4d36e96a-

e325-11ce-bfc1-08002be10318}\0000。

选择菜单“编辑->添加数值”:


数值名称:enableudma66

数据类型:reg_dword

值:1


关闭注册表编辑器,重新启动机器。

  令人遗憾的是,这篇文章没有说明哪些win 2k的service pack、intel芯片和磁盘受到这个默认配置的影响,也没有说明与udma/100或非intel芯片有关的设置。另一篇与ata有关的文章《windows 2000对ata 100(mode 5)的支持》http://support.microsoft.com/default.aspx?scid=kb;en-us;q260233)指出,win2k的sp2解决了对ata/100(即dma mode 5)的支持问题。但是,这篇文章同样没有提供一些重要的信息,例如哪些ata芯片受到该问题的影响(intel芯片,还是非intel芯片?),该问题与以前的ata/66支持问题有何关系?等等。如果你的系统恰好就是microsoft在这些文章中所指的系统,那么按照推荐的方法修改注册表并安装sp2以上的版本,一般会解决所有的ata模式支持问题。否则,最好寻求第三方驱动程序的支持。

三、第三方驱动程序

  所有上述文章都没有提及这类ata支持问题实际上与默认的atapi.sys驱动程序有关,也没有指出如果使用专门针对系统所用芯片设计的第三方驱动程序可以获得更好的效果。实际上,第三方驱动程序往往能够解决大多数前面提到的问题,充分发挥芯片的能力。大多数情况下,第三方驱动程序会自动配置系统(包括所有必要的注册表设置),正确启用芯片能够支持的最快的ata模式。遗憾的是,虽然大多数系统和ata芯片组的厂商为ata控制器提供了驱动程序,许多用户根本不知道这回事,或者根本没有想到要安装它们。

  例如,就intel芯片组而言,它提供的第三方驱动程序叫做application accelerator(取代以前的ultra ata storage driver),可以http://support.intel.com/support/chipsets/iaa/下载。该网站不仅提供了支持所有ata数据传输模式的ultra ata驱动程序,还有一个芯片组配置工具帮助你检查windows 2k是否正确地识别出了系统的ata芯片组。其他芯片组厂商,例如www.viatech.com.cn,也提供相应的驱动程序。使用第三方驱动程序还有一个好处,一些程序的软件包不仅包含正确识别和启用高速ata传输模式的工具,而且还有报告各个ata通道和设备正在使用的pio或dma模式的工具。windows 2000本身也能够提供类似的信息(打开设备管理器,选择ata通道浏览其“属性”,查看“高级设置”),然而,windows 2000报告的信息不够详细,有时甚至是错误的,例如《设备管理器错误地把ata-100设备显示成使用pio而不是udma》http://support.microsoft.com/default.aspx?scid=kb;en-us;q269555)。

  总而言之,要让win2k下的ata设备具有最好的稳定性、可管理性和性能,深入了解相关知识以及查阅资料是必不可少的。记住,每一个系统是不同的,包括控制器、芯片组、磁盘生产商、支持的传输模式、驱动程序等,应当让这一切处于最协调、稳定的状态,必要时使用第三方驱动程序。