答avan的“一个关于硬盘接口的问题”
0赞今天偶然在avan老哥的博客里看到了这样一篇文章:一个关于硬盘接口的问题。这个问题前些天我也碰到过,在学习IDE协议时也看到过相关问题的说明,只是每次看到的时候都因为“更重要”的问题而把它忽略了。看到avan老哥能够不耻下问,我也按捺不住,决定一探究竟,消除这个知识盲点。
查看了ATA-5文档中的相关章节,获得了如下几点认识:
在80线的电缆上,可能有三个连接端,依次是:主机端(蓝色,在连接端子的侧面有一个缺口,可以看到里面的金属)、从设备端(黑色)、主设备端(黑色);在40线的电缆上,这三个连接端的顺序是:主机端、主设备端、从设备端。
引入80线电缆的原因是为了支持UDMA传输方式,所以主机必须区分是何种电缆才能确定采用哪种传输方式。
40线电缆和80线电缆的连接端子是相同的(兼容性的考虑,余出来的40根电缆连接到Ground上),主机通过34脚(CBLID-: PDIAG-)输入的高低电平来判断是哪种电缆。判断的依据来自线缆本身,80线电缆的34脚在主机端是连接到Ground上的。
40线电缆上,主、从设备端34脚和主机端34脚是直接连通的;80线电缆上,主、从设备上的34脚是通过电缆连通的,主机端的34脚连出来的线缆却不连接到任何一个设备端上,而是连接到Ground线上(这是线缆本身的连接方式,不是主板的连接方式)。同一根线,在线缆的不同段落上有不同的连接方式。
需要注意的是:80线电缆上,34脚在主机端的定义和在设备端的定义是不同的。在主机端34脚被叫做CBLID-,供主机判断电缆的类型;在设备端被叫做PDIAG-,是主设备在上电自检时用来判断从设备是否完成自检的信号。80线电缆上,34脚在主机端是输入引脚(直连到地),在主设备端是输入引脚(连到从设备端),在从设备端是输出引脚(连到主设备端)。如下图所示。
所以,avan老哥说的对调电缆造成传输速度下降的现象就好解释了。对调前,主机端的CBLID-信号通过80线电缆的主机端34脚连接到Ground线上,主机查询一下就知道是低电平,从而做出正确判断;对调后,主机端的CBLID-信号通过80线电缆的主设备端34脚连接到从设备端34脚上(很有可能悬空),主机查询不到一个确定是低电平的引脚,从而判断电缆为40线,在传输过程中就会采用速度低于UDMA的方式(PIO或MDMA)。
IDE接口中还有一个CSEL(Cable Select)信号(28脚),它不是用来判断电缆类型的,而是用来配置电缆上的设备是否是主设备的。这个信号在主机端(主板上)连接到Ground上,通过线缆连接到主设备端上,设备通过这个低电平信号知道自己被配置成主设备;电缆上的从设备连接端子在28脚上是和电缆断开的,连接到这个端子上的设备就会认为自己是从设备。这就是为什么两块硬盘都配置成CS方式后,可以连接到同一根电缆上的原因——不同的连接位置决定了设备的主从关系。
ATA接口发展了这么多年(ATA-8),为了保证向下兼容,产生了许多构思巧妙的设计。这些设计既要利用已有的形式,又要添加新的功能,真是难为了协议制定者。今天看来,ATA接口差不多发展到了头,能用于开发新功能和提升性能的物理形式都用上了。这可能就是并行总线在功能演进上的劣势:空间上的有限性限制了进一步发展的灵活性。而串行协议由于不具备空间上的扩展性,就充分发挥了时间上的可扩展性,在提高速度的同时还可以使功能定义具备极大的灵活性。
SATA取代PATA应该是历史的必然。
相关链接:http://www.t13.org/Documents/Default.aspx?DocumentType=4
http://www.interfacebus.com/Design_Connector_IDE.html#top