ATA协议的新发展——ATA体系结构模型和一些想法
0赞“穿新鞋,走老路”似乎是含有贬义的,但是ATA协议在发展过程中,因为脱掉了“旧鞋”,不但“老路”越走越宽了,甚至可能走上新路。
在ATA-7协议之前,ATA协议等同于PATA协议;从ATA-7开始,到去年年底发布的ATA-8协议,ATA协议中加入了SATA这一新的协议实现形式。现在的ATA协议是由PATA协议和SATA协议共同构成的:ATA-8协议的第一卷给出了ATA协议的基本内容,第二卷给出了PATA协议的实现规范,第三卷给出了SATA协议的实现规范。在ATA-7之前的ATA协议中,第一卷和第二卷的内容是合并在一起的,第三卷的内容是没有的。
随着ATA-8协议的正式发布,经过了两年的反复修订,作为ATA-8协议一部分的《ATA体系结构模型》也浮出了水面。在这一文档中,明确区分了“ATA体系结构模型”、“ATA实现标准”和“ATA具体实现”的概念。这一文档给出了现有ATA协议实现方式中共同遵循的抽象结构,并指明,各种实现方式只要兼容这一标准,可以采用各种形式。由此一来,只要提出新的实现标准,ATA协议就可以实现新的兼容形式。ATA的路越走越宽了。
在这一体系结构模型中,提出了ATA协议的分层结构,提出了ATA协议的“客户端-服务器”模型。设备作为“服务器”,具有了和主机同等的地位和层次结构。ATA协议在主机端和设备端都获得了巨大的发展空间。
纵观ATA协议的发展历史,通过从ATA协议中抽象出“ATA体系结构模型”(AAM),PATA和ATA终于分清了形式和内容的关系——PATA和SATA一样,都是ATA协议的特例,是ATA协议具体的实现方式,各自遵循特定的实现标准。这就好比一个人穿着一双旧鞋(PATA)走了很久的路,却一直没有意识到脚上穿着鞋,直到有人建议他换双新鞋(SATA)试试,他才意识到脚(ATA)是可以和鞋(PATA)分开的,自己是可以脱掉旧鞋,换双新鞋的。换上新鞋,老路越走越轻快。可以设想,从此以后这个人还会尝试不同形式的鞋(XATA),甚至走上完全不同的路。
横观SCSI协议的发展历史,通过抽象出“SCSI体系结构模型”(SAM),出现了SCSI协议的各种实现形式:并行SCSI、串行SCSI、iSCSI、光纤通道、IEEE1394。可以预见,ATA协议也必将经历这样一个百花齐放的发展历程。
在学习计算机接口技术时,我读到过各种协议演进和消亡的历程,有的轰轰烈烈,有的悄无声息。作为一个年轻的工程师,我常常以为这些都是“故事”,是我不可能亲身经历的历史。但是现在,看到ATA协议在几个月之前刚刚完成了脱胎换骨的发展阶段,走上一条崭新的宽广大路,我的心情不能平静:历史正在我的身边发生。世界不再是一幅静止的、可以任我从不同角度和高度徐徐观察的画卷,我正置身于不断演进和发展的世界之中,仅需一瞥,就会看到新的可能,新的发展——我感到了一种真实的存在感。
题外话:
在代码开发中,也存在着这种先设计后认识的过程。我们详细阅读设计规范,提出概要设计、详细设计,在自以为无法不着手编码的阶段开始了编码,历经几周甚至几个月的编码和调试终于得到了可以工作的代码,这时再审视我们的设计,我们往往会有新的认识,会提出对现有代码结构和实现方式的改进。如果加以时日,我们的设计经过实用的考验,通过修改各种bug,我们又会提出新的看法。这一过程常常令我惊奇:我设计的代码为何连自己都没有认识清楚?
实践—〉 认识—〉再实践—〉再认识,这是辩证唯物主义的认识观。
问题域和解决域之间的映射关系是客观的,需要我们去认识和发现,认识的唯一途径就是实践。这就解释了我上面的疑问:我们在开始编码以前对于映射关系的认识往往是不全面的,随着不断地实践,我们的认识也逐渐地深入起来,这时就会对先前的映射实现产生新的见解。换句话说,在编码之前,我们要假定已经存在着这样一种映射关系和实现这种映射关系较好的方式;我们必须把编码的过程看作是“发现”,而不是“发明”的过程;代码不光是我们对映射关系认识的成果,更是我们认识映射关系的工具。
为了提高“实践—〉认识”这一螺旋上升过程的效率,我们必须注重每一个阶段的质量:制定尽可能详细的设计,开发风格尽可能良好、结构尽可能清晰的代码,执行尽可能全面和深入的测试。目标只有一个:以最少的迭代,逼近最佳的映射实现。