微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SCSI总线和协议

SCSI总线和协议

时间:12-15 来源:互联网 点击:

7.控制码

它是所有CDB格式的最后一个字节。在其中有一些特殊的域,如已经定义的一个NACA位。在一些情况下,一个命令的执行会以“检查条件(CheckCondition)”状态中止,它表明在命令执行过程中出现了错误或异常。有些命令执行的错误或异常不会影响其他命令的执行,也不需要作善后的恢复处理,而另一些命令执行的错误或异常则可能导致命令组中的其他命令被异常中止,需要专门的命令对其做善后处理,并要求存储设各在完成善后处理工作之前不再处理该用户的其他命令。为了区分这两种不同的情况,也为了让应用客户能够事先声明哪些命令执行的错误或异常需要善后处理,SCSI允许应用客户在CDB的控制码中设置NACA位,请求存储设备在命令执行以“检查条件”状态中止时建立“自动跟随”条件(Condition),从而允许应用客户在随后的善后处理命令中把新(New)任务的属性设置成自动跟随(AutoContingentAllegiance,ACA)。

3.9SCSI的读操作和写操作过程

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连同其他一些参数,如数据的指针、数据的长度以及逻辑单元号等传递给SCSIAPI,并指示一个写操作。例如写6000字节到LUNO的逻辑块地址OOOl234AB。SCSI的API则具体发送一个写命令给LUNO,并将数据以存储设备认可的方式分批或一次性地传递到LUNO,直到数据全部传输完毕。之后,SCSIAPI返回,并指示任务完成。然后,文件系统通知应用程序任务完成。至此,一个文件的写操作完成。

当然,在数据写操作中,仍然需要具体运行SCSI的各个阶段,并需要发送SCSI信号以及SCSI命令,如写命令等。这些方面都与上面描述的读操作类似,此处不再赘述。

从上面的介绍可以看出,一个简单的数据读或写操作会涉及一系列的过程。实际上,在这些过程中,除了有应用程序(如字处理软件、数据库等)为用户提供的直接操作界面和操作系统给应用程序提供的通用的系统功能外,还有文件系统、SCSIAPI、SCSI设备命令、SCSI驱动程序、总线和存储设备等多种软硬件的参与。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top