早期的计算机系统中并没有设置独立的接口部件,对外设的控制与管理完全由CPU直接承担。这在当时的外设品种少、操作简单的情况下是可行的,在嵌入式领域流行的单片机现在仍然保持着这种简单而集约的风格。然而,由于信息技术的飞速发展,计算机的应用越来越广泛,外设门类品种大大增加,且性能各异,操作复杂。因此,不设置专用接口已经无法满足工作需要。因为,CPU要向外设发送控制信号,包括设备的选定、设备启动、信息的转换、数据的装配与拆卸、地址的改变,以及检测和判断信息是否结束等,这些操作都由CPU按程序进行,而且每交换一次信息就需要按上述过程循环一次,直到所交换的信息完成之后,CPU才能做下一步的工作,效率非常低。其次,由于外设种类繁多,且每种外设提供的信息格式、电平高低、逻辑关系各不相同,因此主机对每一种外设都要配置一套相应的控制和逻辑电路,使得主机对外设的控制电路非常复杂,并且不易扩充和改变,这种结构极大地阻碍了计算机的发展。
为了解决上述矛盾,人们开始在CPU和外设之间设置简单的接口电路,后来又逐步发展成为独立的接口和设备控制器,把对外设的控制任务交给接口完成,这样就大大减轻了主机的负担,简化了CPU对外设的控制和管理。同时,有了接口之后,研制CPU时无须考虑外设的结构和特性。同样,研制外设时也不需要考虑它是同哪种CPU进行连接。这样,CPU与外设按各自的规律更新,促进了计算机技术的快速发展。
本章主要关注存储器与主机之间的接口,即主板和某类外设存储器之间的适配电路,其功能是解决主板和外设之间在电压等级、信号形式和速度上的匹配问题,不同类型的存储器需要不同的接口。在整个系统中,存储器接口的优劣直接影响着程序运行的快慢和系统性能的好坏;而协议定义了通信主体间的通信规则。在计算机系统中常用的存储器物理协议和接口包括以下几种。
1)IDE协议及接口:承载ATA协议。面向消费级,属于并行总线接口,最多连接两个设备。物理层速率比同时代的SCSI接口低,其定义了传输层到物理层。
2)SCSI协议及接口:承载SCSI协议,属于并行总线接口。在通常的理解中,SCSI是一种上层协议;但SCSI标准早期把上层协议一直到底层传输协议、网络层、物理层全给定义了。
3)SATA协议及接口:承载ATA协议。属于串行总线接口,每个通道只能接入一个设备,采用特殊的Mux可以复用多个设备。其定义了传输层到物理层。
4)PCI-E协议及接口:承载PCI-E传输协议,定义了传输层到物理层。用于存储系统时,一般直接承载NVMe协议,也可以承载SCSI协议。目前PCI-E设备侧连接器形态主要是标准插槽或者SFF8639(U.2)。
5)FC协议及接口:理论上可以承载任何上层协议,用于存储系统时则承载SCSI协议。分为FCAL和FC Fabric两种网络层拓扑,磁盘接入的是FCAL拓扑。为了满足企业级对可用性的要求,FC盘被作为双数据接口,接入两个成环器再各自上联到FC控制器上。其定义了传输层到物理层。
6)SAS协议及接口:承载SCSI协议,属于并行总线接口。目前速率为12Gbit/s,支持交换式组网、电路交换,不能成环。其定义了传输层到物理层。SAS和SATA的连接器看上去差不多,仔细观察会发现SATA连接器中间的缺口在SAS上是被补平的,其反面其实还有7根数据线,这就是企业级冗余所要求的双端口,这第二个数据口接入到第二个SAS控制器或者扩展器(Expander)上。
7)USB协议及接口:承载USB协议,属于串行总线接口,定义了传输层到物理层。支持级联连接,主要用来连接计算机与外围可插拔装置,其即插即用(Plug and Play)的功能使得不须经过繁复的安装程序便可任意将外围装置进行连接、配置、使用及移除。由于USB的弹性与容易使用,使得支持USB的外围装置包括鼠标、键盘、喇叭、调制解调器、扫描仪等各种不同的产品逐年增加,时至今日,USB接口已成为自COM port(串行端口)以后,计算机上最成功的外围连接接口。
8)eMMC协议及接口:没有连接器,直接从Flash颗粒管脚以贴片的方式与eMMC控制器的管脚相连,承载eMMC上层协议(与ATA/SCSI/NVMe处于同一个阶层)。底层物理层采用并行总线。eMMC与早期SCSI的做法类似,从顶层协议到底层物理层全都定义了一套自己的标准。其定义了表示层到物理层。
9)SDIO协议及接口:SDIO接口是由SD存储卡的接口信号——SD总线发展而来的,它在机械、电路、功耗、信号与软件上与SD存储卡完全兼容,但SDIO接口可扩展性更强,传输速度更快。
本章对前6种协议和接口进行介绍,后3种由于与Flash存储器件紧密相关则留在后面介绍。