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.5SCSI总线信号
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设备。