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-25m左右。跟着时刻的推移,SCSI并行总线的功用一直在进步,并经过供给更多的数据通路(例如选用16位数据线和32位数据线)和更快的时钟,得到了更大的带宽。
并行总线存在的一个问题是飘移现象。假如把一组并行的多位数据一起宣布,每条数据线上的传输推迟会呈现差异,导致各个位不会在精确的同一时刻抵达目的地。所谓飘移指的是一个时刻窗口,一切的数据位在这段散布的时刻内都能抵达目的地。各个传输线上传输推迟的不同越大,飘移窗口也就越大。依据传输线理论,总线中每条线路的传输阻抗(包含容抗和感抗)跟它所在的方位有关,因此,传输推迟是位线所在的物理方位的函数。关于给定长度的线缆,要想添加时钟频率,就有必要减小飘移窗口,然后最小化线路间的传输推迟差。显然在高频条件下,电缆越长,飘移窗口越大。
SCSI规范的第1个版别发布于1986年。自那时以来,它被广泛运用于服务器和高级PC中,其速率由开端的4MBps开展到现在的320MBps,而且还在进步着。
作为一种介质,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米也是如此。这是由于收发器能够确保信号满足强,能从总线的一端传输到另一端。
三. SCSI 协议
在SNIA 同享存储模型中,SCSI 担任从上层接纳恳求并转发,或许从并行设备获取数据并转发。
例如:有一个运用程序向操作体系宣布对磁盘设备的写恳求。 在SCSI协议层,这个写恳求被看成是特定数量的数据块以协议的方法传递到指定方位的指令。作为操作体系和存储设备之间的一个中介,SCSI 协议既不规矩数据块怎么安排,也不规矩怎样把数据块放到磁盘上。 在SCSI把数据块发送到目的地时,方针方或许是单个物理磁盘,也或许是把数据块在多个物理盘上分条寄存的RAID 操控器。 SCSI 协议的职责,便是在承认写操作现已正确完结后向操作体系陈述成功,而不论在磁盘上物理存储是怎么装备以及写操作是怎么履行的。
3.1 SCSI 域
SCSI 设备是在必定的环境中运转的。 一般需求有多个SCSI设备才干构成这样的环境。 SCSI 设备间的运转环境也称为SCSI域。在这个域内,生成和发送SCSI指令和使命办理恳求的SCSI端口称为SCSI建议方,接纳和处理SCSI指令,依据恳求履行使命办理的端口称为SCSI方针方。
SCSI 域的组成包含SCSI设备,设备内的SCSI 建议方和方针方以及供给数据交代的总线。 SCSI总线衔接了挂在它上面的一切SCSI设备。咱们能够把一个实践的SCSI运用体系笼统为一个SCSI域,域中有多个SCSI设备,而且带SCSI驱动器的计算机也能够被看成是一个SCSI设备。
尽管能够答应有多个SCSI设备接在同一条总线上,SCSI协议实践界说的是设备间1对1的数据交流,即同一时刻在SCSI总线上只答应有两个设备相互交流数据。由于,SCSI上的各个设备是以分时同享的方法运用总线的。
在一个实践的SCSI域中,有必要至少有一个建议方和1个方针方,考虑到主机对数据存储的需求,装备了SCSI操控器的主机至少有1个SCSI建议方。而磁盘设备首要是供给存储和数据服务,一般都有方针发。
3.2 SCSI 协议模型
为了便于完结和了解SCSI的各个协议,SCSI 采取了分层结构。 SCSI 大致可分为三层,即SCSI运用层,SCSI 传输层和SCSI 互连层。 SCSI中的各个详细协议一般都坐落其间的某一层,能够或许跨过两层。
在运用层,SCSI 体系结构把建议方(主机)和方针方(如磁盘)的通讯界说为客户/服务器交流。SCSI 客户坐落主机中,代表上层运用程序,文件体系和操作体系I/O恳求。 SCSI 设备服务器坐落方针设备中,对恳求做出呼应。 客户/服务器恳求和呼应经过某种方法的底层协议进行传输。
在传输协议层,SCSI 设备之间经过一系列的指令完结数据的传送,大致分红三个阶段:指令的履行,数据的传送和指令的承认。
SCSI 互联层完结SCSI设备对总线的衔接以及发送方和方针方的挑选等功用。
3.3 寻址机制
为了对衔接在总线上的设备寻址,SCSI 协议引进了SCSI设备ID 和逻辑单元号LUN. 在SCSI 总线上的每个设备都有必要有一个仅有的ID,其间包含服务器中的主机总线适配器也具有设备ID. 取决域SCSI规范的版别,每条总线最多可答应有8个或许16个设备ID。
比方RAID 磁盘子体系和磁带库这样的存储设备或许包含若干个子设备,如虚拟磁盘,磁带驱动器和介质更换器等。 因此SCSI 引进了逻辑单元号,以便于对大的设备中的子设备进行寻址。 别的一个服务器或许装备了多个SCSI操控器,然后就或许有多条SCSI总线。 因此,操作体系用一个三元描绘标识一个SCSI方针: 总线/方针设备/逻辑单元号
传统的SCSI 适配卡衔接单个总线,相应的只具有一个总线号。 在引进存储网络之后,每个光纤通道HBA(Host Bus Adapter)或iSCSI(Internet SCSI)网卡也都衔接一条总线,分配一个总线号,在他们之间依托不同的总线号加以区别。
方针设备标识在一条总线菊花链上的单个设备,逻辑单元号则标明一个方针设备中的一个子设备。 一般,单个物理磁盘只具有一个逻辑单元号,而RAID磁盘阵列尽管也只需一个方针设备,但却有多个逻辑单元号。
在一条总线上各个设备具有不同的优先级。起先的SCSI 协议只答应有8个方针设备ID,规矩ID7 具有最高权限。后来版别的SCSI 协议答应有16个不同的方针设备ID。出于兼容性的考虑,从7到0的方针设备依然具有高优先级,而从15到8的设备ID具有较低优先级。
设备(服务器和存储设备)在能够经过SCSI 总线发送数据之前有必要预订总线(裁定)。 在总线的裁定期间,具有最高优先权的方针设备总能取胜。 在总线负载重的状况下,这或许导致具有较低优先级的设备总是不被答应发送数据,因此,SCSI的裁定进程是不平等的。
出于装备和办理的需求,操作体系运用总线号/方针设备ID/逻辑单元号三元组来标识一个SCSI方针,但是用户和运用程序所看到的仅仅一个逻辑标识符,如D盘。 因此在总线号/方针设备ID/逻辑单元号和逻辑盘符之间存在着一个映射,供给在物理设备和上层文件体系之间不同标明方法的转化。
3.4 交互方法
SCSI协议把建议方(主机)和方针方(例如磁盘)之间的交互界说为客户/服务器方法。运用客户坐落主机中,代表上层运用程序、文件体系和操作体系的I/0恳求。设备服务器坐落方针设备中,它呼应客户的恳求。恳求和呼应经过某种方法的基层散布设备进行传输,该散布设备称作散布子体系,能够是并行电缆,也能够是光纤通道协议或iSCSI。
一个建议方或许会有多个恳求一起发给方针方。多个恳求发生运用客户的多个实例,然后在设备服务器上发生多个业务。
建议方在其发往一个或多个方针的多个恳求正在被相关的设备服务器处理的时分,需求能够履行上下文交流 (ContextSwitching),即具有从一个使命快速切换到另一个使命的才能。例如,作为一个建议方的文件服务器能够向一个方针方发送一个写恳求。‘当该文件服务器在等候这个方针方预备好缓冲区以接纳数据的那段时刻内,能够切换到另一个挂起的使命,例如处理现已抵达的对从前的另一个恳求的呼应,然后进步运转功率,最大化吞吐量。假如SCSI使命只能顺次串行地履行,那么等候每个写或读恳求完结的时刻就都被白白地浪费了。一般来说,上下文交流是由主机适配卡完结的,能够是并行SCSI,也能够是光纤通道或iSCSI。
由于SCSI体系结构模型是层次化的,因此它对主机I/0恳求的处理能够独立于底层的分发子体系。一个运用客户主机能够处理触及不同品种的方针设备的I/0操作,例如一个运用服务器能够有直接附接的SCSI方针方,也能够有经过千兆位速率接口衔接的串行SCSI方针方。
在SCSI建议方和方针方之间读写数据是经过SCSI指令、分发恳求、分发操作和呼应来完结的。SCSI指令和参数在CDB(CommandDescriptorBlock,指令描绘块)中指定。作为交互示例,在履行对磁盘的SCSI写进程时,在建议方(例如主机总线适配器)创立一个运用客户,该客户发送SCSI指令恳求给方针方,令其预备缓冲区以接纳数据。方针设备服务器在其缓冲区预备好之后,发送一个数据分发操作恳求进行呼应。接着,发送方就履行分发操作,开端发送数据块。依靠于底层的分发子体系,数据块或许按字节并行传输(例如并行SCSI总线),也或许以分段成帧的方法串行传输(例如光纤通道或iSCSI)。
从运用程序或操作体系的视点看,写操作仅仅一个业务。但实践上,对应一个写操作,发送方和方针方或许要进行屡次的分发恳求和分发操作的交互,才干把指令恳求的一切数据都发送给方针方。
在一次读操作中,SCSI指令块遵从相反的数据分发恳求和承认序列,但是由于是建议方宣布读指令,所以指令就假定自己现已预备好了缓冲区以接纳第1批数据块。在读写业务的每个阶段所发送的数据块数量,由建议方和方针方依据对方的缓冲区容量洽谈决议。例如,高功用磁盘阵列一般都能供给较大的缓冲区,能够完结大规模的数据传送,然后进步了产品功用。
3.5 SCSI总线信号
SCSI在物理信号的根底上界说了一组总线信号。这些信号可划分为数据信号和操控信号两类。它们都是二进制信号,而且只需“真”和“伪”两个安稳状况。其间有指示总线现已被占用的“BSY”信号,有铲除偏从头设置SCSI总线的“RST”信号等。
下面临这些信号的称号和功用逐个进行介绍。
1.BSY(Busy,忙)信号
该信号是“或态”信号,标明现已有设备占用总线。
2.SEL(Select,挑选)信号
该信号是“或态”信号,由建议方用以挑选方针方,或许由方针方用以从头挑选建议方。
3.C/D(Control/Data,操控/数据)信号
该信号由方针方驱动,标明在数据总线上传送的是数据信号仍是操控信号。该信号处于真状况时标明操控信号。
4.I/O(Input/Output,输入输出)信号
该信号由方针方驱动,操控数据在数据总线上的移动方向。当I/0信号为“真”时标明是对建议方的输入,数据由方针方向建议方传送;若I/0信号为“伪”,则标明数据由建议方向方针方传送。该信号也被用来区别挑选和重选阶段。
5.MSG(Message,通讯)信号
该信号由方针方驱动,标明总线处于信息传送的通讯阶段。
6.REQ(Request,恳求)信号
该信号由方针方驱动,标明有信息传输恳求,恳求一个REQ/ACK数据传送握手进程。
7.ACK(Acknowledge,应对)信号
该信号由建议方驱动,标明对REQ信号的应对。
8.ATN(Attention,提示)信号
该信号由建议方驱动,指示一个提示信息,标明建议方有一个音讯要给方针方发送。
9.RST(Reset,重置)信号
该信号是“或态”信号,标明一个硬件重置状况,指示总线进入从头设置阶段,铲除一切运用总线的SCSI设备。
10.DB(DataBus,数据总线)信号
DB信号有两种,别离是用于8位数据总线的DB(7-0,P)和用于16位数据总线的DB(l5~O,P)。这些信号都用于传送信息的值,它们包含数据比特信号,加上奇偶查验比特信号。
由于在SCSI总线上挂有多个设备,一些操控信号或许一起被多个SCSI设备驱动。这些信号被称作“或态”信号。关于“或态”信号,SCSI设备不会主动将其驱动成“伪”,而是依靠总线终接器,在总线上的一切设备都没有驱动该信号时将其设置成“伪。”只需有1个或多个设备驱动该信号,该信号便是“真”。与“或态”信号相对照的是“非或态”信号。关于“非或态”信号,SCSI设备能够将其驱动成“伪”。
3.6 SCSI 总线的运用阶段
依据对总线不同的运用,能够把SCSI总线状况划分红8个不同的阶段:闲暇阶段,裁定阶段,挑选阶段,重选阶段,指令阶段,数据阶段,状况阶段和通讯阶段。
其间指令阶段,数据阶段,状况阶段和通讯阶段都规划信息在总线的传送,所以又称为:信息传送阶段。
除了闲暇阶段外,其他阶段的总线都被SCSI设备占用。
3.6.1. 总线闲暇阶段
总线闲暇标明没有一个设备在运用SCSI总线,也标明在此状况下,SCSI设备假如需求,能够运用总线。SCSI设备需求在总线上的SEL信号和BSY信号都是“伪”之后,才干够检测总线是否处于闲暇状况。
作为比方,SCSI总线或许在下列状况下进入闲暇状况:
1.RST信号被设置;
2.不成功的总线挑选或重选;
3.方针设备免除衔接;
4.方针设备指令完结。
一旦一个SCSI设备承认总线处于闲暇阶段,它就能够恳求总线裁定,然后进入裁定阶段。
3.6.2. 总线裁定阶段
在SCSI总线上的设备有必要先取得总线衔接权,然后才干够进行其他的操作。在默许条件下,看似挂在总线上的设备在逻辑上是与总线断开的,没有参加总线上的活动。SCSI设备只需在需求进行数据传输和设备状况陈述时才会恳求总线衔接权。SCSI设备一旦得到了总线衔接权,就将在建议方和方针方之间构成一个物理衔接的通道,然后就能够进行数据传输。
一般状况下,总线的获取与对方针方的挑选都由建议方完结。为了愈加高效地运用总线,在某些状况下,例如在有较长时刻的CPU处理等候或设备存取等候时,需求开释总线以供其他设备运用。在等候的相关使命完结后,再从头进行总线裁定和衔接权获取操作,以持续进行暂停的作业。因此,有时方针方也能够履行总线操作和衔接权获取操作,精确地讲,是再获取操作。
SCSI总线上的设备的优先级是由它的地址即SCSI ID决议的。在窄SCSI中的ID规模是0-7,对应的优先级是从1到8。在宽SCSI中的ID规模是O~l5,其间对应IDO~7的优先级是从9到16递加,而对应ID8~l5的优先级是从1到8递加。在这里,咱们用较大的数值标明较高的优先级,因此,ID7具有最高优先级。在窄SCSI中,ID 0具有最低优先级;在宽SCSI中,ID8具有最低优先级。
SCSI总线上的ID数目是与SCSI数据总线宽度共同的,因此,窄SCSI有8个ID,宽SCSI有16个ID。在窄 SCSI中的8根数据线的编号是从0到7,在宽SCSI中的16根数据线的编号是从0到15。风趣的是,具有某个编号的数据线上的信号,还被用来标明具有对应号码ID的SCSI设备是否在履行挑选或相关操作。例如当数据总线中的数据线DB(2)在某个特定的阶段被驱动成真时,就能够标明其ID为2的设备现已在总线上履行了挑选或相关操作。
在SCSI域中,主机是存储设备的首要运用者,且对存储的呼应要求较高,因此一般主机的优先级最高,其分配的ID值也最大,在窄SCSI中是ID7,在宽SCSI中是IDl5。
总线裁定便是在或许一起有多个设备恳求的状况下,终究只给予其间的一个SCSI设备总线操控权的进程。SCSI设备在检测到“总线闲暇”并等候一个时拖延即能够把总线置成BSY,并把与它的SCSIID对应的数据线信号置为“真”,开端总线裁定恳求。
在等候1个时拖延,该SCSI设备需检测在数据总线上是否有更高优先级的SCSIID也为“真”。假如总线上确有更高优先级的设备在进行总线恳求,则该SCSI设备不再置BSY和对应的数据线为“真”。抛弃总线裁定恳求,直到下一次“总线闲暇”;不然,该设备就取得了总线操控权,并由该设备把SEL信号置为“真”。一起,总线上的其他SCSI设备则检测到SEL信号为“真”后,不再置BSY信号和对应的数据线为“真”,抛弃总线裁定恳求。为了确保确完结已取得了总线操控权,该设备在置SEL信号为“真”后、传送其他信号前,需求有必定的时延。
在总线裁定阶段结束时,总线上有BSY、SEL和与取得总线的SCSI设备的ID,其对应的数据线的信号为“真”。
3.6.3. 挑选阶段
在挑选阶段,得到总线运用权的SCSI设备在总线上挑选方针设备,以便随后能够向该方针设各发送比方读和写这样的指令。这个阶段首要是完结对具有特定SCSIID的设备的挑选,其相关协议的界说首要是在SCSI体系结构的互连层。需求留意的是,逻辑单元号LUN的寻址是逻辑单元经过SCSI传输层协议完结的,不在互连层。与LUN编址相关的协议在传输协议层描绘。
赢得裁定的SCSI设备在把BSY和SEL信号置成“真”,经过一小段时拖延,即可进入挑选阶段。作为建议方,赢得裁定的SCSI设备不能够把1/0信号置成“真”。在此阶段,建议方需求把与自己的SCSIID对应的数据线的信号和对应所要挑选的方针设备的SCSIID的数据线的信号置成“真”,经过一小段时延,再把BSY信号置成“伪”,然后等候方针方的呼应。
例如,SCSI ID为6的主机把对应自己的ID的数据线DB(6)和对应方针设备的ID(=6)的数据线DB(0)置成“真”后,数据总线上信号值的状况将如下所示。
DS(0)DS(1)DS(2)DS(3)DS(4)DS(5)DS(6)DS(7)
10 0 0 0 0 10
此刻,只需两个数据线的信号值是“真”。假如有多于两个的数据线为“真”,则方针方以为有误。方针方在SEL和对应它的ID的数据线的信号为“真”而且BSY和I/0信号为“伪”的状况下,就能够承认它自己现已被选为方针设备。此刻,方针方设备应该从头把BSY信号置成“真”。建议方在检测到BSY为“真”的信号后,就把SEL信号置成“伪”。特别需求留意的是,在该阶段结束时,BSY信号是由方针方置位的。
3.6.4. 重选阶段
在SCSI方针设备忙于处理其内部业务(一般是关于履行对存储数据的读或写操作)期间,它能够在等候操作(比方把存储在设备中的数据读入缓冲区或把暂存在缓冲区的数据写入缓冲区)完结时开释总线供其他设备运用,并在操作完结后从头恳求对总线的运用权。因此,重选阶段也发生在“总线裁定阶段”之后。但与挑选阶段不同,重选阶段由方针方发动,从头树立由发送方发动成功但被方针方挂断的衔接。
在方针设备开释了总线之后,BSY和SEL信号处于被置成“真”的状况。此刻日标设备经过把I/0信号置成“真”使自己成为赢得对总线运用权的一方。在重选阶段,方针方也需求把与自已的SCSIID对应的数据线的信号和对应发送方设备的SCSIID的数据线的信号置成“真”,经过一段短的时延,再把BSY信号置成“伪”,然后等候建议方的呼应。
建议方在SEL、I/0和对应它的ID的数据线的信号为“真”而且BSY为“伪”的状况下,就能够承认它自己现已被重选。被重选的建议方能够经过查看数据总线来验证重迭的方针方的SCSIID。然后,建议方设各从头把BSY信号置成“真”。方针方在检测到BSY为“真”的信号后,它也履行把BSY驱动成“真”的操作,并把SEL信号置成“伪”。
被重选的建议方在检测到SEL信号为“伪”后,它就把BSY置成“伪”,而方针设备则持续把BSY设置成“真”,直到它抛弃对总线的运用权停止。这样,在该阶段结束时,信号的状况与挑选阶段相同,也是由方针方设置的BSY信号。
3.6.5. 信号传送阶段
指令阶段、数据阶段、状况阶段和通讯阶段被组合在一起作为信息传送阶段,由于它们都被用来经过数据总线传送数据或操控信息。SCSI运用C/D、I/0和MSG信号区别不同的信息传送阶段以及对应的信息传输方向。方针方驱动这3个信号,操控从一个阶段到另一个阶段的改动。建议方能够经过把ATN信号置成“真”恳求一个“通讯出”阶段,而方针方能够经过开释MSG、C/D、I/0和BSY信号引进总线闲暇阶段。信息传送阶段运用一个或多个REQ/ACK握手进程操控信息传送。每个REQ/ACK握手进程答应传送1个或多个字节的信息。由于信息传送阶段必定是在挑选阶段或重选阶段之后,所以不改动BSY和SEL信号。事实上,在该阶段,BSY持续为“真”,SEL信号持续为“伪”。
表2-2示出了MSG、C/D和I/0信号值与阶段名及信息传输方向之间的联系。其间的“出”和“入”是相对子发送方设备而言的,且数据传输方向由I/0信号承认。
表2-2MSG、C/D和1/0信号值与阶段名及信息传输方向之间的联系
MSG |
CID |
1/0 |
阶段 |
详细阶段 |
传输方向 |
|||
1 |
0 |
0 |
*(未用) |
|||||
1 |
0 |
1 |
*(末用) |
|||||
1 |
1 |
0 |
通讯 |
通讯出 |
从发送方到方针方 |
|||
1 |
1 |
1 |
通讯 |
通讯入 |
从方针方到发送方 |
|||
0 |
0 |
0 |
数据 |
数据出 |
从发送方到方针方 |
|||
0 |
0 |
1 |
数据 |
数据入 |
从方针方到发送方 |
|||
0 |
1 |
0 |
指令 |
从发送方到方针方 |
||||
0 |
1 |
1 |
状况 |
从方针方到发送方 |
||||
注释:0=伪,1=真,*=保存未来界说
指令阶段答应方针方恳求建议方传送指令信息。在指令阶段的REQ/ACK握手进程中,方针方把C/D信号置成“真”,把I/0信号和MSG信号置成“伪”。
数据阶段包含“数据入”阶段和“数据出”阶段。
(1)“数据入”阶段答应方针方恳求把数据从方针方传送给建议方。在“数据入”阶段的REQ/ACK握手进程中,方针方把I/0信号置成“真”,把C/D信号和MSG信号置成“伪”。
(2)“数据出”阶段答应方针方恳求把数据从建议方传送到方针方。在“数据出”阶段的REQ/ACK握手进程中,方针方把C/D信号、I/0信号和MSG信号都置成“真”。
状况阶段答应方针方恳求把状况信息从方针方传送给建议方。在状况阶段的REQ/ACK握手进程中,方针方把C/D信号和I/0信号置成“真”,把MSG信号置成“伪”。
通讯阶段能够是“通讯入”阶段或“通讯出”阶段。不管是在“通讯入”阶段,仍是在“通讯出”阶段,都能够传送多条音讯。传送的第一个字节能够是单字节音讯,也能够是多字节音讯的首字节。在1个通讯阶段能够传送多个多字节音讯。
“通讯入”阶段答应方针方恳求把音讯从方针方发送给建议方。在“通讯入”阶段的REQ/ACK握手进程中,方针方把C/D信号、I/0信号和MSG信号都置成“真”。
“通讯出”阶段答应方针方恳求把音讯从建议方传送到方针方。方针方在呼应建议方树立的提示条件时调用“通讯出”阶段。在“通讯出”阶段的REQ/ACK握手进程中,方针方把C/D信号和MSG信号置成“真”,把I/0信号置成“伪”。
3.7 异步传输和同步传输
与传统网络的数据包传送方法不同,SCSI 依据REQ/ACK 信号操控数据传输的进程。 依据REQ和ACK信号操控与数据总线置位时刻的不同,信息传输又可分为异步传输和同步传输两个列别。 而且,不管传输的方向怎么,信息的传输都是由REQ信号开端,而且REQ信号都是由方针方操控和发送的。
1. 异步信息传输
异步传输方法可用于数据阶段的数据传输,也可用于指令、状况和通讯阶段的信息传输。首要,信息传输的方向是由I/O信号决议的。假如I/O信号为“真”,那么信息是由方针方向建议方传输。在此状况下,为了传送信息,方针方先把数据线DB(7/15-0,P)信号置成对应想要传送的二进制数位序列的值,然后把REQ信号置成“真”。建议方在检测到REQ为“真”时,读取数据总线的值,然后把ACK信号置成“真”。当方针方检测到ACK为“真”时,它就能够改动或撤销放置在数据总线上的值,并把REQ置成“伪”。建议方在检测到REQ置成“伪”时把ACK也置成“伪”。当方针方检测到ACK为“伪”时,总线上就完结了一次数据传输,并可进行下一次数据传输。
在异步传输方法中,每个REQ/ACK握手进程传送1个(关于窄SCSI)或2个字节(关于宽SCSI)的信息。特别需求留意的是,在此方法中,方针方在置REQ信号后,有必要持续地把数据线DB(7/l5~O,P)置成对应所要传送的二进制数位序列的值,直到它检测到ACK为真停止。
假如I/O信号为“伪”,那么信息是由建议方向方针方传输。在此状况下,方针方经过把REQ置成“真”来恳求信息。建议方驱动DB(7/l5~O,P)到它需求发送的二进制数位序列的值,然后把ACK置成“真”。尔后,持续把DB(7/l5~O,P)信号置成这个二进制数位序列的值,直到REQ变成“伪”停止。方针方则是在检测到ACK变成“真”时,读DB(7/l5~O,P)的值,然后把REQ置成“伪”。建议方在检测到REQ变成“伪”时,它能够改动或撤销放置在数据总线上的值,并把ACK置成“伪”。
尔后,方针方能够经过把REQ置成“真”,持续恳求信息。
2. 同步数据传输
同步数据传输只在数据阶段运用,而且是在方针方和建议方之间树立同步数据传输协议之后运用。
与异步传输中的规矩相同,当I/0信号为“真”时,数据是由方针方向建议方传输。方针方先把数据放置到数据总线上,即置DB(7/l5~O,P)对应的线路,然后把REQ置成“真”。在同步数据传输中,方针方在把REQ置成“真”后,需求把放置在DB(7/l5~O,P)上的二进制数位序列的值坚持一个指定长度的时刻,但不用坚持到对ACK信号变“真”的接纳。这是与异步传输不同的一个当地。在指定长度的时刻期满后,方针方就能够把REQ置成“伪”,而且能够改动或撤销放置在数据总线上的值,然后预备发送下一个数据。建议方在检测到REQ变“真”之后一个指定长度的时刻内读DB(7/l5~O,P)上的值,然后把ACK置成“真”作为对方针方的呼应。
与异步传输相同,在同步数据传输中,建议方也在接纳到一个REQ并读取了数据总线上的值之后就发送一个ACK信号。但与异步传输不同的是,方针方在接纳到对一个数据的ACK之前能够发送多个REQ信号。SCSI为同步数据传输的REQ/ACK握手进程界说了一个称作REQ/ACK饱满值的参数,它标明在接纳到ACK信号前能够发送的最大REQ信号数。假如发送的REQ数日多于接纳到的ACK数目,并抵达了界说的REQ/ACK饱满值,那么方针方暂停发送REQ信号和数据,直到接纳到下一个ACK停止。这在原理上与传统网络中的流操控相似。
当I/O信号为“伪”时,数据是由建议方向方针方传输。建议方每次接纳到一个REQ信号就发送一次数据。方针方先把REQ置成“真”。建议方检测到REQ变“真”后把要发送的数据放置到数据总线上,即置DB(7/l5~O,P)对应的线路,然后把ACK置成“真”。接着发送方需求在一个指定长度的时刻内坚持在总线上放置的数据不变,并持续把ACK置成“真”。在指定的时刻期满后,建议方能够把ACK置成“伪”,而且能够改动或撤销放置在数据总线上的值。方针方在检测到ACK信号变“真”后,在指定的ACK坚持为“真”的时刻内读取数据总线上的数据,并把REQ置成“伪”。
尔后,方针方能够经过把REQ再置成“真”持续恳求信息。
3.8 SCSI 指令描绘块
在互连层完结SCSI设备对总线的衔接,以及发送方和方针方的挑选的根底上,传输层协议履行实践的数据传输。传输层供给了两类服务,一是指令的履行和承认;二是数据的传送。指令的履行是在总线进入指令阶段后,建议方经过指令描绘块(command description block,CDB)向方针方发送详细的指令。指令的承认是在总线进入通讯 (Message)阶段后,建议方接纳由方针方发送的指令履行承认信息。数据的传送则是在数据阶段(数据出或数据入)进行的。传输协议的运转进程包含发送指令、传输数据和对指令履行的承认。SCSI根底指令规范 SPC(SCSIPrimaryCommands,SCSI根底指令)界说了CDB的规范。
除了根本指令外,SPC还界说了一切类型的SCSI方针方设各都能够运用的办理参数,如确诊参数和日志参数等。
建议方对存储设备的实践操作是经过向方针方发送一个指令描绘块来完结的。在一些状况下,在一个指令描绘块之后或许还有一些参数要传给方针方,依照详细的协议,这些更多的参数是在指令描绘块后的“数据出”阶段发送的。指令描绘块有定长和不定长两种格局,而定长格局的指令描绘块又有6、10、12或16字节不同的长度规矩。
指令描绘块由编号从0~5的6个字节组成。下面介绍其间各个段的内容。
1.操作码
操作码是一切指令描绘块都有的,它总是被放在指令描绘块的最初一个字节。正如其姓名所言,操作码界说CDB的详细操作。8比特在理论上共有256个或许的操作码。实践上其间有一些是保存码,日前没有界说。操作码的8个二进制位又分为两部分:5-7位是组代码,指示该指令详细归于哪个指令组,它决议CDB的长度,如“000”为组“0”,标明6个字节的CDB指令组,0-4位则是详细的指令代码。
2.稠浊CDB信息
该参数标明与详细的CDB相关的信息,其间一个比方是标明逻辑设备号,寻址在SCSI方针设备中的一个逻辑单元。对应一个SCSIID的设备能够有多个逻辑单元,所以逻辑单元扩展了SCSI总线可拜访的设备数目,使得方针方设各上能够有多个可被拜访的设备而只占用一个有用的SCSIID。对一个逻辑单元的实践拜访是经过该逻辑单元的一个特定的编号,即逻辑单元号完结的。
3.逻辑块地址
该地址是逻辑单元(比方磁盘)中的开端操作块的方位。在6字节的CDB中,有21位的逻辑块地址。SCSI把逻辑单元、卷或分区笼统成块的数组,每一块都有一个逻辑地址,编号从0开端。对SCSI存储设备的每一次读/写操作都是针对一组接连的逻辑块进行的,因此需求指出开端块的逻辑地址。
4.传送长度
该长度标明指令所恳求的传送量,一般是块数。在有些类别的CDB中也或许是字节数。0标明不需求传送数据。
5.参数表长度
有些指令还需求更多的参数,这些参数由客户供给,界说在“数据出”缓冲区中。参数表长度就标明需求传送到存储设备的这类参数的长度,0标明不需求传递参数。
6.分配长度
分配长度标明运用客户为“数据入”缓冲区别配的最大长度,依据详细的CDB类别,或许是字节数,也或许是块数。运用客户一般运用该“数据入”缓冲区接纳特别信息,如日志数据、确诊数据等。假如传送的信息量超过了分配长度标明的最大值,则相关设备不该再传,并运用状况阶段回来特定的状况信息。
7.操控码
它是一切CDB格局的终究一个字节。在其间有一些特别的域,如现已界说的一个NACA位。在一些状况下,一个指令的履行会以“查看条件(CheckCondition)”状况间断,它标明在指令履行进程中呈现了过错或反常。 有些指令履行的过错或反常不会影响其他指令的履行,也不需求作善后的康复处理,而另一些指令履行的过错或反常则或许导致指令组中的其他指令被反常间断,需求专门的指令对其做善后处理,并要求存储设各在完结善后处理作业之前不再处理该用户的其他指令。为了区别这两种不同的状况,也为了让运用客户能够事前声明哪些指令履行的过错或反常需求善后处理,SCSI答应运用客户在CDB的操控码中设置NACA位,恳求存储设备在指令履行以“查看条件”状况间断时树立“主动跟从”条件(Condition),然后答应运用客户在随后的善后处理指令中把新(New)使命的特点设置成主动跟从(AutoContingentAllegiance,ACA)。
3.9 SCSI 的读操作和写操作进程
1. SCSI的读操作进程
假如计算机要从存储设备上读取文件或数据,那么不管数据的巨细怎么,都至少要阅历一个SCSI的读操作进程。当然,操作体系需首要将用户的读取操作经过SCSII/0的运用程序编程接口(ApplicationProgrammingInterface,API)转化为SCSI的读操作,并在操作完结后经过相应的API回来呼应的值。
在SCSI域内,这个操作在传输层被简略地描绘成5个首要进程:
(1)建议方经过CDB发送SCSI的读指令。
(2)方针方接纳到该指令,经过设备办理器在指定的逻辑单元中履行该指令恳求的操作。
(3)方针方以字节为单位向建议方传送数据。
(4)在数据传输结束后,方针方向建议方发送指令完结的陈述。
(5)建议方接纳到指令完结的呼应。
当然,这些进程是树立在SCSI互连层的根底上的。在第一个进程之前,SCSI总线由闲暇阶段进入总线裁定和挑选阶段,完结建议方对总线运用权的取得以及对方针方的挑选和寻址。
在第一个进程中,方针方发送REQ信号,恳求信息传输,操控总线进入信息传送的指令阶段。方针方经过发送方传送的CDB获取“读”指令。在这以后的第2个和第3个进程中,方针方从它操控的外围设备中读取数据并发送到建议方。如方针方预备数据需求较长的时刻,则或许有多个总线开释、进入闲暇和重选阶段的轮回。方针方在每次完结数据传送后,都操控总线进入状况阶段并回来一个状况信息。为进一步标明读指令的悉数完结,在第四个进程中,总线进入信息传送的通讯阶段,方针方发送“指令完结”信息,并可开释SCSI总线的BSY信号。在第五个进程中,建议方接纳到日标方指令完结的呼应,总线可康复到闲暇阶段。
2. SCSI的写操作进程
SCSI的写操作进程与读操作进程相似,但数据传送的方向不同,它把数据从发送方向方针方传送。在发送方体系中有对文件做写操作的用户恳求时,它先经过文件体系查找该文件在存储设备(如磁盘)上的逻辑块地址 (LogicalBlockAddress,LBA),接着文件体系把该LBA连同其他一些参数,如数据的指针、数据的长度以及逻辑单元号等传递给SCSI的API,并指示一个写操作。例如写6000字节到LUNO的逻辑块地址OOOl234AB。SCSI的API则详细发送一个写指令给LUNO,并将数据以存储设备认可的方法分批或一次性地传递到LUNO,直到数据悉数传输结束。之后,SCSI的API回来,并指示使命完结。然后,文件体系告诉运用程序使命完结。至此,一个文件的写操作完结。
当然,在数据写操作中,依然需求详细运转SCSI的各个阶段,并需求发送SCSI信号以及SCSI指令,如写指令等。这些方面都与上面描绘的读操作相似,此处不再赘述。
从上面的介绍能够看出,一个简略的数据读或写操作会触及一系列的进程。实践上,在这些进程中,除了有运用程序(如字处理软件、数据库等)为用户供给的直接操作界面和操作体系给运用程序供给的通用的体系功用外,还有文件体系、SCSIAPI、SCSI设备指令、SCSI驱动程序、总线和存储设备等多种软硬件的参加。