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-1
|
8
|
8位
|
5MHz
|
4Mbps
|
同步SCSI
|
SCSI-1
|
8
|
8位
|
5MHz
|
5Mbps
|
Wide
|
SCSI-2
|
16
|
16位
|
5MHz
|
10Mbps
|
Fast
|
SCSI-2
|
8
|
8位
|
10MHz
|
10Mbps
|
Fast/Wide
|
SCSI-2
|
16
|
16位
|
10MHz
|
20Mbps
|
Ultra
|
SCSI-3SPI
|
8
|
8位
|
20MHz
|
20Mbps
|
Ultra/Wide
|
SCSI-3SPI
|
8
|
16位
|
20MHz
|
40Mbps
|
Ultra2
|
SCSI-3SPI-2
|
8
|
8位
|
40MHz
|
40Mbps
|
Ultra2/Wide
|
SCSI-3SPI-2
|
16
|
16位
|
40MHz
|
80Mbps
|
Ultra3
|
SCSI-3SPI-3
|
16
|
16位
|
40MHz
|
160Mbps
|
Ultra320
|
SCSI-3SPI-4
|
16
|
16位
|
80MHz
|
320Mbps
|
除了总线速度提高之外,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或闪存芯片,包含访问和控制总线上的设备所需的软件。
每个SCSI设备都必须具有唯一的标识符(ID)才能正常工作。例如,如果总线能够支持16个设备,通过硬件或软件设置指定的设备ID的范围为0-15。SCSI
控制器本身必须使用其中一个ID,通常是最高的那一个,而将其他ID留给总线上的其他15个设备使用。
内部设备通过带状电缆连接到SCSI控制器。外部SCSI设备使用一条粗的圆形电缆,以菊花链形式连接到控制器(串行连接SCSI设备使用SATA电缆)。在菊花链中,每个设备都依次连接到下一个设备。因此,外部SCSI设备通常具有两个SCSI连接器——分别连接前后两个设备。
电缆本身通常由三层构成:
(1)内层:保护性最好的层,包含实际发送的数据。
(2)介质层:包含向设备发送控制命令的线路。
(2)外层:包含传输奇偶校验信息的线路,这些信息可确保数据的正确性。
不同SCSI标准使用不同的连接器,这些连接器通常不兼容,通常使用50、68或80针。SAS使用较小的SATA兼容连接器。
一旦总线上的全部设备安装完毕,而且分配了各自的ID,则总线的每一端都必须闭合。下面介绍如何执行这一操作。
2.3
终接器
如果SCSI总线保持开放状态,沿总线发送的电信号会反射回来,从而干扰设备和SCSI控制器之间的通信。解决方法是终结总线,用电阻电路闭合每一端。如果总线同时支持内部和外部设备,则必须终结每个系列的最后一个设备。
SCSI
终结的类型主要可分为两类:被动(无源)和主动(有源)。
(1)被动(无源)终结通常用于在标准时钟速度下运行、且设备到控制器的距离小于1米的SCSI系统。
(2)主动(有源)终结用于Fast SCSI系统,或设备到SCSI控制器的距离大于1米的系统。
SCSI还使用三种不同类型的总线信令,这也会影响终结。电脉冲以信令的方式在线路上发送。
(1)单端(SE:Single-ended):控制器生成信号,并通过单条数据线将信号传送至总线上的所有设备。每个设备都会产生信号损失。因此,信号会很快开始衰减,由此SE SCSI的传输距离被限制为约3米以内。PC中普遍采用SE信令。
(2)高压差动(HVD:High-Voltage
Differential):HVD常用于服务器,它以串联方式发送信号,采用一条数据高压线和一条数据低压线。SCSI总线上的每个设备都有信号收发器。控制器与设备通信时,总线沿途的设备接收信号并转发信号,直至信号到达目标设备为止。这样,控制器和设备之间的允许距离可显著增加,可达25米。
(3)低压差动(LVD:Low-Voltage
Differential):LVD是HVD的同类技术,工作原理非常相似。两者之间的差异在于,LVD的收发器更小,并且内置于每个设备的SCSI适配器中。这使得LVD SCSI设备的价格更合理,并且LVD使用更少的电量就可以通信。缺点在于最大距离仅为HVD的一半——12米。
HVD和LVD通常都使用被动终结器,即使设备和控制器之间的距离远大于1米也是如此。这是因为收发器可以确保信号足够强,能从总线的一端传输到另一端。