SCSI 总线和协议
分类:Storage存储服务器磁盘任务应用服务器网络
I/O 技术实现在计算机和存储设备之间的数据交换。实现从CPU 到存储系统的I/O通路的一个中间就是SCSI(Small Computer System Interface).
一. I/O 通路
在计算机中,一个或多个CPU 处理在CPU缓存或主存储器(RAM:Random Access Memory)中的数据。 CPU缓存或主存储器是非常快的器件,但是断电就不能保存,价钱也比较昂贵。所以数据还需要放在存储设备上。
通常,数据从主存储器(RAM)通过系统总线,主机I/O 总线和 I/O 总线移动到磁盘或者磁带等存储设备。
1.1 系统总线
在计算机的核心部分,系统总线保证数据在CPU和主存储器之间进行快速的传递。系统总线必须使用非常高的时钟频率,使得它能够足够快的给CPU 提供数据。该总线的实现采用在主电路板上印制导线的形式。出于物理性能的原因,高的系统速度需要短的印制导线。因此,系统总线应该尽可能的短一些,并且只能连接CPU和主存储器。
1.2 主机I/O 总线
在现在计算机中,为了释放CPU 的应用处理负担,人们把尽可能多的任务移到诸如图像处理器这样的特别的处理器中。由于上述物理上的限制条件,这些器件不可以连接到系统总线。因此大多数计算机都实现了称作主机I/O总线的第二个总线。桥接芯片提供在系统总线和主机I/O总线之间的连接。 PCI (Peripheral Component Interconnection:外围互联设备)是当前最广泛使用的实现主机I/O 总线的技术。
1.3 I/O 总线
设备驱动器负责控制外围设备以及与外围设备的通信。针对存储设备的设备驱动器部分以软件形式存在,该软件由CPU处理。由于跟存储设备通信的部分设备驱动器几乎总是以固件的形式实现,该固件由特别的处理器
(ASIC:Application Specific Integration Circuit)处理。当前这些ASIC 有的集成到主电路板(如SCSI 控制器),也有的通过附加的PCI卡连接到主板。这些附加的卡通常被称作控制器。存储设备通过主机总线适配器(HBA:Host Bus Adapter)或者通过在板上的控制器连接到服务器。在控制器和外围设备之间的通信连接叫作I/O总线。
当前用户I/O 总线的最重要的技术是SCSI 和光纤通道。 SCSI 定义了一种总线,该总线能够连接16个设备(包括服务器和存储设备)。在另一方面,光
纤通道定义存储网络的不同拓扑结构,该存储网络可以连接数百万个设备(包括服务器和存储设备)。作为替代光纤通道的其他选择,工业界正在使用TCP/IP 和以太网(IP存储)实现存储网络。注意的是,这些新技术都是继续使用SCSI 协议在设备间通信。
二. 并行SCSI 总线
把磁盘和磁带设备连接到应用服务器或文件服务器,最常用的方法就是通过传统的 SCSI总线。尽管 SCSI主要是一个块协议,但这个术语也被用来指称运行该协议的并行线缆机制。
最初的 SCSI物理层传输介质是一种并行电缆,由 8根数据线和一些控制线构成。在每个发送时钟里传输 8 位数据,传输速率相对说来是比较高的;但是由于电气方面的问题,使得多数SCSI设备所允许的传输距离被限制在 15-25 m 左右。随着时间的推移,SCSI 并行总线的性能一直在提高,并通过提供更多的数据通路 (例如采用 16 位数据线和32位数据线)和更快的时钟,得到了更大的带宽。
并行总线存在的一个问题是飘移现象。如果把一组并行的多位数据同时发出,每条数据线上的传输延迟会出现差异,导致各个位不会在精确的同一时间到达目的地。所谓飘移指的是一个时间窗口,所有的数据位在这段分布的时间内都能到达目的地。各个传输线上传输延迟的差别越大,飘移窗口也就越大。根据传输线理论,总线中每条线路的传输阻抗 (包括容抗和感抗)跟它所处的位置有关,因此,传输延迟是位线所处的物理位置的函数。对于给定长度的线缆,要想增加时钟频率,就必须减小飘移窗口,从而最小化线路间的传输延迟差。显然在高频条件下,电缆越长,飘移窗口越大。
SCSI 规范的第 1 个版本发布于 1986 年。自那时以来,它被广泛应用于服务器和高档 PC 中,其速率由最初的4 MBps发展到现在的 320 MBps,而且还在提高着。
作为一种介质,SCSI定义了一个并行总线,用于数据传输和通信控制。总线本身可以是印制导线的形式,也可以是一根电缆。外部 SCSI设备使用电缆以菊花链的形式连接到服务器上的控制器。在菊花链中,每个设备都跟其他设备串接。由于这个原因,外部 SCSI设备典型地都有两个 SCSI连接器,可以分别连接到链中的前一个设备和后一个设备。现在的一个 SCSI 总线可以连接多至 16个设备。其中包括1 个SCSI控制器和 15个存储装置。
2.1 SCSI 类型
SCSI有三个基本规范:
SCSI-1:SCSI-1是在1986年开发的原始规范,现已不再使用。它规定总线宽度为8位,时钟速度为5MHz。
SCSI-2:1994年采用,此规范包括通用指令集(CCS)——支持任何SCSI设备所必需的18个命令。在此规范中,可以选择将时钟速度提高一倍,达到10MHz (Fast),将总线宽度增加为原来的两倍,即16位,将设备数增加为15个(Wide),
或者同时实现上述两种升级(Fast/Wide)。SCSI-2还增加了命令队列,允许设备存储命令,并从主机排列命令优先级。
SCSI-3:此规范于1995年正式出台,包括一系列较小范围的标准。涉及SCSI 并行接口(SPI)的一组标准在SCSI-3中得到了继续发展,SPI是SCSI设备之间的通信方式。大多数SCSI-3规范都以Ultra开头,如Ultra for SPI规范、Ultra2 for SPI-2规范和Ultra3 for SPI-3规范。名称中的Fast和Wide的含义与SCSI-2中的一样。SCSI-3是当前正在使用的标准。
双倍总线速度、双倍时钟速度和SCSI-3规范的不同组合,产生了许多不同的SCSI规范。下表对几种不同规范进行了比较。很多较慢的规范已不再使用——在此列出仅作比较之用。
名称规范设备数
量
总线宽度总线速度Mbps
异步SCSI SCSI-188位5MHz4Mbps
同步SCSI SCSI-188位5MHz5Mbps
Wide SCSI-21616位5MHz10Mbps
Fast SCSI-288位10MHz10Mbps
Fast/Wide SCSI-21616位10MHz20Mbps
Ultra SCSI-3SPI88位20MHz20Mbps
Ultra/Wide SCSI-3SPI816位20MHz40Mbps
Ultra2SCSI-3SPI-288位40MHz40Mbps
Ultra2/Wide SCSI-3SPI-21616位40MHz80Mbps
Ultra3SCSI-3SPI-31616位40MHz160Mbps
Ultra320SCSI-3SPI-41616位80MHz320Mbps
除了总线速度提高之外,Ultra320 SCSI还使用分组化数据传输,从而提高其效率。Ultra2也是最后一种具有“窄”(8位)总线宽度的规范。
所有这些SCSI类型都是并行的——数据通过总线同时传输,而不是一次传输一种数据。最新的SCSI类型称为串行连接SCSI(SAS:Serial Attached SCSI),这种连接使用SCSI命令,但以串行方式传输数据。SAS使用点对点串行连接,以3.0千兆位每秒的速度传输数据,每个SAS端口可以支持多达128个设备或扩展设备。
2.2 SCSI的控制器、设备和电缆
SCSI控制器在SCSI总线上的所有其他设备和计算机之间进行协调。SCSI控制器也称为主机适配器,控制器既可以是插入可用插槽的卡,也可以内置在主板上。SCSI BIOS(Basic Input output System)也在控制器上。它是一个小型ROM或闪存芯片,包含访问和控制总线上的设备所需的软件。