概览
总线是计算机与存储系统间通讯的主要通道,是源设备到目标设备的传输路径。
SCSI接口是一种用于计算机与周边设备通讯的接口。如上图,SCSI总线上数据操作和管理都是由SCSI的控制器进行控制,SCSI控制器可以看作是一块小型CPU,它有自己的命令集和缓存。上图的SCSI结构可以对计算机中连接到SCSI总线上的多个设备动态分工操作,灵活分配资源。
SCSI协议
不再赘述,百度直接搜。都是理论。直接看表格
SCSI通讯过程
1、检测状态:总线在开始通讯之前,总线必须处于空闲状态。发起连接的设备通讯之前首先会发起一个测试信号来确认总线是否空闲。
2、寻址:通过发送方地址和接收方地址来确认通讯源和目标。
3、协商:正式通讯前需要双方协商数据包大小、发送速度和一些其他参数
4、连接:正式建立连接,通讯发包
5、断开连接:数据传输完成,释放总线
断开重连技术
只有在第一次建立连接才经历协商步骤,之后相同的两个设备通讯不在经历协商步骤
标签指令队列技术
原有通讯方式是发送方和接收方只要数据没通讯完毕就一直占用总线资源,别的人进不来。利用上述技术,通讯过程有所变化。
发送方建立连接之后,一次发送多个数据包,目标接收器只要收到包就立即释放总线资源。然后自己慢慢处理这些收到的包,处理完之后,继续与发送方通讯(发送方再发N个包,接收到接到之后再释放总线自己慢慢处理.......循环)。这种方式通讯比较高效率。
SCSI数据传输原理
例如现在B设备给D设备发送数据,过程如下:
信号从B发出到了总线分2股,一股左一股右。每次到分界点时信号都会分成两股,这样最后接收到信号的有:
适配器、终结器::收到信号会吸收,防止信号反射回去
设备A、设备C:收到信号并丢弃,因为不是发给自己的(信号数据头中有源和目标地址)
设备D:接收信号
SCSI数据传输方式
异步传输
两组数据传输之间没有固定的时间间隔。
同步传输
数据包会按照定时器设定好的时间间隔进行传输。
SCSI ID
用于标识总线上的设备,是唯一的。同时也代表了各个设备的优先级。当一个设备需要发送数据的时候,首先会探测总线是否在忙。如果在忙(有其他设备发送数据中)就需要等待一定的时间再次尝试发送。这个等待时间的长短就是有SCSI ID决定的。优先级越高,等待时间越短,反之等待时间越长。举个例子:
设备1等待时间为:2s
设备2等待时间为:10s
设备1每隔2S就尝试发送数据,设备2则每隔10s尝试发送数据。很明显设备1(优先级高的设备)获得发送数据的概率高!
注意SCSI ID虽然是总线上设备的唯一标识,但是仅仅依靠SCSI ID并不能寻址。
SCSI协议寻址
需要3个元素来寻址
总线号(BUS ID):用于区分每一条总线,多个SCSI控制器需要用总线号来确定是哪一个控制器。
设备号(SCSI ID):用于识别某一总线上的每一个存储设备。
逻辑单元号(LUN ID):识别某存储设备上的每一个子设备。子设备包括虚拟磁盘、磁带驱动器等。利用逻辑单元号可以对存储设备中的每一个子设备进行寻址。
SCSI协议模型
命令层:也称应用层,包括设备专用的通用指令。
传输层:定义了设备互联的标准规则。保证计算机生成的SCSI指令都能成功的传送到目标端。
物理层:也称互连层。定义了电信号传输方法、数据传输模式之类的接口细节。
SCSI读写操作过程
1、上层API接口将用户的请求翻译成SCSI指令
2、发起方申请SCSI总线使用权,通过经历空闲阶段、总线仲裁阶段和选择阶段
3、发送SCSI指令给目标方
4、目标方接收指令,执行指令操作
5、由于是读取操作,返回数据给发送方
6、数据传输完毕,目标方发送命令完成的报告
7、接收方收到指令完成响应,总线恢复到空闲阶段