SCSI总线阶段
. s! }. E# S+ k: M% @( ~
在SCSI总线上进行任何处理都需要8个总线阶段(phase)。每一个操作都从总线空闲阶段开始,并以总线空闲阶段结束。在总线空闲阶段,没有设备占用SCSI总线。
* O0 {+ [0 u' j/ W/ A 有三个阶段与总线协议相关。总线处于仲裁阶段表明有设备竞争总线控制权(或说成使用权)。这时,ID号最大的设备将获得对总线的控制权。如果启动器获得了总线控制权,将使总线进入选择阶段,以选择进行通信的目标。重新选择阶段由目标器选择与它中断联系的启动器,与它重新建立连接,继续由启动器已经启动但还没有完成的操作。
' Q+ X' O6 G' g
有四个阶段是为数据交换而设置的。命令阶段用来发送命令;数据阶段用于数据传输;消息阶段由目标器发送或接收与协议有关的消息;在执行SCSI命令结束之际目标器会使用状态阶段通知启动器,命令是否被成功执行。
O Y4 w+ a8 \7 {/ `3 J& ?5 P% M( U1 W
在任何时候,SCSI总线只能处于一个确定的总线阶段。阶段的迁移有严格的规定,即不能任意从一个阶段迁移到另一个阶段。图10.7所示是SCSI的阶段迁移图,箭头表示阶段允许迁移的方向。例如,命令和数据阶段只能在消息阶段之后产生。
* Z3 p" G3 M. Z. z* b7 A
/ e5 `) b# C+ l
Z' _; x5 `8 y9 q( A1 }5 T! c& x/ F, k2 L1 A+ y( {
' g3 g# V1 n+ U: a
: V x, v$ |' N+ N$ o 图10.7实际是给出了SCSI总线在发生阶段迁移时所必须遵循的规则。这里看一个具体例子,见表10.8。这是通过SCSI总线分析仪获取的“TEST UNIT READY”命令执行过程中的阶段迁移。该命令从空闲阶段开始,接下来是仲裁阶段、选择阶段、消息阶段(确认)和6个字节的命令阶段。由于该命令没有数据交换,所以最后是状态阶段和消息阶段,完成该命令的执行后释放总线,使总线重新回到总线空闲阶段。
% H4 ]- P. W0 _! S3 F! l/ ] p0 U Y0 }: @! E
2 ]+ B( f6 x' {! C) W; Z/ V! p, M3 Q
' |* q! d6 {: `0 m C9 d6 n
! {* y7 o8 C3 s0 b
1.总线空闲(BUS FREE phase)
, a. _' @; t! w
当SCSI总线上没有任何设备在使用时,总线就保持在总线空闲状态上。具体说,当总线忙信号BSY和选择信号SEL处于无效状态的连续时间超过400 ns时,表示所有SCSI设备已释放总线,总线此时进入空闲状态。每当刚刚接通电源或发生复位操作时,总线也进入该状态。在正常情况下能进入总线空闲阶段的有两种情况。第一种情况是,当一个命令执行完毕,“COMMAND COMPLETE”消息已经发送出去;第二种是当目标器释放总线并发送了“DICONNECT”消息之后。除此之外,目标器在接收到启动器发来的诸如ABORT、CLEAR QUEUE等消息之后,也会释放总线控制权,使总线进入空闲状态。
) j% B* x; g& F7 a+ z3 Q 2.仲裁阶段(ARBITRATION phase)
/ ^; k2 U2 S% N: Z& t) h" G
仲裁阶段用来决定空闲阶段之后哪一个SCSI设备获得总线的使用权(要想获取总线使用权的SCSI设备首先要等待总线空闲阶段出现)。如果一个设备希望获得总线控制权,必须置BSY信号有效,同时把代表设备SCSI.ID的相应位放到数据线上。例如,这时数据总线上的数据是COH(见表10.8阶段序号l中的数据),表示有SCSI-ID分别为7和6的两个设备竞争总线。进入仲裁阶段仲裁后,SCSI-ID为7的设备获得总线使用权。当一个设备获得总线使用权后(800 ns),其他参加竞争的设备必须撤消BSY信号,同时也要从数据线上撤消自己的ID位。接下来获得总线使用权的设备进入选择或重新选择阶段。
* n, Q$ v, s% d 3.选择阶段(SELECTION phase)
$ c3 s5 U; n. }2 i/ m2 A 当一个启动器经过仲裁获得总线使用权之后,就可以进入选择阶段。如果目标器获得总线控制权,则进入重新选择阶段。选择与重新选择阶段的差别之一是I/0信号的状态,重新选择阶段I/O信号被目标器激活,而选择阶段该信号无效。
& U+ n; d2 O8 Y" |
选择阶段被启动器用来与指定的目标器建立勾通。BSY、SEL和启动器的ID自仲裁以来一直保持有效状态,此时启动器将希望勾通的目标器ID送到数据总线上,同时置ATN信号有效,表示接下来是消息输出阶段,通知系统中的目标器接收数据总线上的数据。表10.8中,在选择阶段数据总线上的信号保持为8lH,表示ID编号为7的启动器希望与ID编号为0的目标建立连接。在延时一定时间后启动器释放BSY,然后等待目标器的响应。
; c0 e5 G- E& C/ a \: c 此时,所有的设备都会检测总线上的数据。如果一个设备发现自已的ID和数据总线上请求连接的ID相符,并且SEL有效,而BSY和I/O无效,则可断定自己就是启动器要选择的目标器,于是用BSY为真来响应选择。启动器检测到目标器发出的BSY后,使SEL无效。这样目标设备和启动设备就建立起联系。从这时起目标器就取得了总线的控制权,即由目标器决定是否接收启动器发来的消息、命令字节或数据,以及何时发送状态到启动器,目标器还决定是否取消联系以及什么时候重新建立联系。显然,启动器给目标器发送命令,而目标器则负责总线协议的执行。
o; [( d/ b" d* }
当SEL信号无效,标志选择阶段结束,接下来是消息输出阶段。在规定的时间内,如果目标器没有作出响应,启动器可以有两种方法返回到总线空闲阶段:第一种是使用RST信号,第二种方法是先释放数据总线,然后释放SEL和ATN信号线。图10.8所示是仲裁阶段和选择阶段的时序图。
5 t: t( \( |0 V5 `% n$ u1 ]. R l
/ C3 g1 a+ p' ~: W
7 C1 F( g! O+ s! ^
5 g& h" Z$ J& c! Q+ |7 q
5 A, g( q O* x7 B: K 4.重新选