新聞中心

SCSI總線和協(xié)議

作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
三.SCSI協(xié)議

在SNIA共享存儲(chǔ)模型中,SCSI負(fù)責(zé)從上層接收請求并轉(zhuǎn)發(fā),或者從并行設(shè)備獲取數(shù)據(jù)并轉(zhuǎn)發(fā)。

本文引用地址:http://m.butianyuan.cn/article/201612/330386.htm

例如:有一個(gè)應(yīng)用程序向操作系統(tǒng)發(fā)出對磁盤設(shè)備的寫請求。在SCSI協(xié)議層,這個(gè)寫請求被看成是特定數(shù)量的數(shù)據(jù)塊以協(xié)議的形式傳遞到指定位置的命令。作為操作系統(tǒng)和存儲(chǔ)設(shè)備之間的一個(gè)中介,SCSI協(xié)議既不規(guī)定數(shù)據(jù)塊如何組織,也不規(guī)定怎樣把數(shù)據(jù)塊放到磁盤上。在SCSI把數(shù)據(jù)塊發(fā)送到目的地時(shí),目標(biāo)方可能是單個(gè)物理磁盤,也可能是把數(shù)據(jù)塊在多個(gè)物理盤上分條存放的RAID控制器。SCSI協(xié)議的責(zé)任,就是在確認(rèn)寫操作已經(jīng)正確完成后向操作系統(tǒng)報(bào)告成功,而不管在磁盤上物理存儲(chǔ)是如何配置以及寫操作是如何執(zhí)行的。

3.1SCSI

SCSI設(shè)備是在一定的環(huán)境中運(yùn)行的。通常需要有多個(gè)SCSI設(shè)備才能形成這樣的環(huán)境。SCSI設(shè)備間的運(yùn)行環(huán)境也稱為SCSI域。在這個(gè)域內(nèi),生成和發(fā)送SCSI命令和任務(wù)管理請求的SCSI端口稱為SCSI發(fā)起方,接收和處理SCSI命令,根據(jù)請求執(zhí)行任務(wù)管理的端口稱為SCSI目標(biāo)方。

SCSI域的組成包括SCSI設(shè)備,設(shè)備內(nèi)的SCSI發(fā)起方和目標(biāo)方以及提供數(shù)據(jù)交接的總線。SCSI總線連接了掛在它上面的所有SCSI設(shè)備。我們可以把一個(gè)實(shí)際的SCSI應(yīng)用系統(tǒng)抽象為一個(gè)SCSI域,域中有多個(gè)SCSI設(shè)備,而且?guī)CSI驅(qū)動(dòng)器的計(jì)算機(jī)也可以被看成是一個(gè)SCSI設(shè)備。

盡管可以允許有多個(gè)SCSI設(shè)備接在同一條總線上,SCSI協(xié)議實(shí)際定義的是設(shè)備間一對一的數(shù)據(jù)交換,即同一時(shí)刻在SCSI總線上只允許有兩個(gè)設(shè)備互相交換數(shù)據(jù)。因?yàn)?,SCSI上的各個(gè)設(shè)備是以分時(shí)共享的方式使用總線的。

在一個(gè)實(shí)際的SCSI域中,必須至少有一個(gè)發(fā)起方和1個(gè)目標(biāo)方,考慮到主機(jī)對數(shù)據(jù)存儲(chǔ)的需求,配置了SCSI控制器的主機(jī)至少有1個(gè)SCSI發(fā)起方。而磁盤設(shè)備主要是提供存儲(chǔ)和數(shù)據(jù)服務(wù),一般都有目標(biāo)發(fā)。

3.2SCSI協(xié)議模型

為了便于實(shí)現(xiàn)和理解SCSI的各個(gè)協(xié)議,SCSI采取了分層結(jié)構(gòu)。SCSI大致可分為三層,即SCSI應(yīng)用層,SCSI傳輸層和SCSI互連層。SCSI中的各個(gè)具體協(xié)議一般都位于其中的某一層,可以可能跨越兩層。

在應(yīng)用層,SCSI體系結(jié)構(gòu)把發(fā)起方(主機(jī))和目標(biāo)方(如磁盤)的通信定義為客戶/服務(wù)器交換。SCSI客戶位于主機(jī)中,代表上層應(yīng)用程序,文件系統(tǒng)和操作系統(tǒng)I/O請求。SCSI設(shè)備服務(wù)器位于目標(biāo)設(shè)備中,對請求做出響應(yīng)。客戶/服務(wù)器請求和響應(yīng)通過某種形式的底層協(xié)議進(jìn)行傳輸。

在傳輸協(xié)議層,SCSI設(shè)備之間通過一系列的命令實(shí)現(xiàn)數(shù)據(jù)的傳送,大致分成三個(gè)階段:命令的執(zhí)行,數(shù)據(jù)的傳送和命令的確認(rèn)。

SCSI互聯(lián)層完成SCSI設(shè)備對總線的連接以及發(fā)送方和目標(biāo)方的選擇等功能。

3.3尋址機(jī)制

為了對連接在總線上的設(shè)備尋址,SCSI協(xié)議引入了SCSI設(shè)備ID和邏輯單元號(hào)LUN.在SCSI總線上的每個(gè)設(shè)備都必須有一個(gè)唯一的ID,其中包括服務(wù)器中的主機(jī)總線適配器也擁有設(shè)備ID.取決域SCSI標(biāo)準(zhǔn)的版本,每條總線最多可允許有8個(gè)或者16個(gè)設(shè)備ID。

諸如RAID磁盤子系統(tǒng)和磁帶庫這樣的存儲(chǔ)設(shè)備可能包括若干個(gè)子設(shè)備,如虛擬磁盤,磁帶驅(qū)動(dòng)器和介質(zhì)更換器等。因此SCSI引入了邏輯單元號(hào),以便于對大的設(shè)備中的子設(shè)備進(jìn)行尋址。另外一個(gè)服務(wù)器可能配置了多個(gè)SCSI控制器,從而就可能有多條SCSI總線。因此,操作系統(tǒng)用一個(gè)三元描述標(biāo)識(shí)一個(gè)SCSI目標(biāo):總線/目標(biāo)設(shè)備/邏輯單元號(hào)

傳統(tǒng)的SCSI適配卡連接單個(gè)總線,相應(yīng)的只具有一個(gè)總線號(hào)。在引入存儲(chǔ)網(wǎng)絡(luò)之后,每個(gè)光纖通道HBA(Host Bus Adapter)或iSCSI(Internet SCSI)網(wǎng)卡也都連接一條總線,分配一個(gè)總線號(hào),在他們之間依靠不同的總線號(hào)加以區(qū)分。

目標(biāo)設(shè)備標(biāo)識(shí)在一條總線菊花鏈上的單個(gè)設(shè)備,邏輯單元號(hào)則表示一個(gè)目標(biāo)設(shè)備中的一個(gè)子設(shè)備。通常,單個(gè)物理磁盤只具有一個(gè)邏輯單元號(hào),而RAID磁盤陣列雖然也只有一個(gè)目標(biāo)設(shè)備,但卻有多個(gè)邏輯單元號(hào)。

在一條總線上各個(gè)設(shè)備具有不同的優(yōu)先級(jí)。起初的SCSI協(xié)議只允許有8個(gè)目標(biāo)設(shè)備ID,規(guī)定ID7具有最高權(quán)限。后來版本的SCSI協(xié)議允許有16個(gè)不同的目標(biāo)設(shè)備ID。出于兼容性的考慮,從7到0的目標(biāo)設(shè)備依然具有高優(yōu)先級(jí),而從15到8的設(shè)備ID具有較低優(yōu)先級(jí)。

設(shè)備(服務(wù)器和存儲(chǔ)設(shè)備)在可以通過SCSI總線發(fā)送數(shù)據(jù)之前必須預(yù)定總線(仲裁)。在總線的仲裁期間,具有最高優(yōu)先權(quán)的目標(biāo)設(shè)備總能獲勝。在總線負(fù)載重的情況下,這可能導(dǎo)致具有較低優(yōu)先級(jí)的設(shè)備總是不被允許發(fā)送數(shù)據(jù),因此,SCSI的仲裁過程是不平等的。

出于配置和管理的需要,操作系統(tǒng)使用總線號(hào)/目標(biāo)設(shè)備ID/邏輯單元號(hào)三元組來標(biāo)識(shí)一個(gè)SCSI目標(biāo),然而用戶和應(yīng)用程序所看到的只是一個(gè)邏輯標(biāo)識(shí)符,如D盤。因此在總線號(hào)/目標(biāo)設(shè)備ID/邏輯單元號(hào)和邏輯盤符之間存在著一個(gè)映射,提供在物理設(shè)備和上層文件系統(tǒng)之間不同表示形式的轉(zhuǎn)換。

3.4交互方式

SCSI協(xié)議把發(fā)起方(主機(jī))和目標(biāo)方(例如磁盤)之間的交互定義為客戶/服務(wù)器方式。應(yīng)用客戶位于主機(jī)中,代表上層應(yīng)用程序、文件系統(tǒng)和操作系統(tǒng)的I/0請求。設(shè)備服務(wù)器位于目標(biāo)設(shè)備中,它響應(yīng)客戶的請求。請求和響應(yīng)通過某種形式的下層分布設(shè)施進(jìn)行傳輸,該分布設(shè)施稱作分布子系統(tǒng),可以是并行電纜,也可以是光纖通道協(xié)議或iSCSI。

一個(gè)發(fā)起方可能會(huì)有多個(gè)請求同時(shí)發(fā)給目標(biāo)方。多個(gè)請求產(chǎn)生應(yīng)用客戶的多個(gè)實(shí)例,從而在設(shè)備服務(wù)器上產(chǎn)生多個(gè)事務(wù)。

發(fā)起方在其發(fā)往一個(gè)或多個(gè)目標(biāo)的多個(gè)請求正在被相關(guān)的設(shè)備服務(wù)器處理的時(shí)候,需要能夠執(zhí)行上下文交換(ContextSwitching),即具有從一個(gè)任務(wù)快速切換到另一個(gè)任務(wù)的能力。例如,作為一個(gè)發(fā)起方的文件服務(wù)器可以向一個(gè)目標(biāo)方發(fā)送一個(gè)寫請求。‘當(dāng)該文件服務(wù)器在等待這個(gè)目標(biāo)方準(zhǔn)備好緩沖區(qū)以接收數(shù)據(jù)的那段時(shí)間內(nèi),可以切換到另一個(gè)掛起的任務(wù),例如處理已經(jīng)到達(dá)的對先前的另一個(gè)請求的響應(yīng),從而提高運(yùn)行效率,最大化吞吐量。如果SCSI任務(wù)只能依次串行地執(zhí)行,那么等待每個(gè)寫或讀請求完成的時(shí)間就都被白白地浪費(fèi)了。一般來說,上下文交換是由主機(jī)適配卡完成的,可以是并行SCSI,也可以是光纖通道或iSCSI。

由于SCSI體系結(jié)構(gòu)模型是層次化的,因此它對主機(jī)I/0請求的處理可以獨(dú)立于底層的分發(fā)子系統(tǒng)。一個(gè)應(yīng)用客戶主機(jī)可以處理涉及不同種類的目標(biāo)設(shè)備的I/0操作,例如一個(gè)應(yīng)用服務(wù)器可以有直接附接的SCSI目標(biāo)方,也可以有通過千兆位速率接口連接的串行SCSI目標(biāo)方。

在SCSI發(fā)起方和目標(biāo)方之間讀寫數(shù)據(jù)是通過SCSI命令、分發(fā)請求、分發(fā)操作和響應(yīng)來完成的。SCSI命令和參數(shù)在CDB(CommandDescriptorBlock,命令描述塊)中指定。作為交互示例,在執(zhí)行對磁盤的SCSI寫過程時(shí),在發(fā)起方(例如主機(jī)總線適配器)創(chuàng)建一個(gè)應(yīng)用客戶,該客戶發(fā)送SCSI命令請求給目標(biāo)方,令其準(zhǔn)備緩沖區(qū)以接收數(shù)據(jù)。目標(biāo)設(shè)備服務(wù)器在其緩沖區(qū)準(zhǔn)備好之后,發(fā)送一個(gè)數(shù)據(jù)分發(fā)操作請求進(jìn)行響應(yīng)。接著,發(fā)送方就執(zhí)行分發(fā)操作,開始發(fā)送數(shù)據(jù)塊。依賴于底層的分發(fā)子系統(tǒng),數(shù)據(jù)塊可能按字節(jié)并行傳輸(例如并行SCSI總線),也可能以分段成幀的形式串行傳輸(例如光纖通道或iSCSI)。

從應(yīng)用程序或操作系統(tǒng)的角度看,寫操作只是一個(gè)事務(wù)。但實(shí)際上,對應(yīng)一個(gè)寫操作,發(fā)送方和目標(biāo)方可能要進(jìn)行多次的分發(fā)請求和分發(fā)操作的交互,才能把命令請求的所有數(shù)據(jù)都發(fā)送給目標(biāo)方。

在一次讀操作中,SCSI命令塊遵循相反的數(shù)據(jù)分發(fā)請求和確認(rèn)序列,然而由于是發(fā)起方發(fā)出讀命令,所以命令就假定自己已經(jīng)準(zhǔn)備好了緩沖區(qū)以接收第1批數(shù)據(jù)塊。在讀寫事務(wù)的每個(gè)階段所發(fā)送的數(shù)據(jù)塊數(shù)量,由發(fā)起方和目標(biāo)方根據(jù)對方的緩沖區(qū)容量協(xié)商決定。例如,高性能磁盤陣列一般都能提供較大的緩沖區(qū),可以完成大規(guī)模的數(shù)據(jù)傳送,從而提高了產(chǎn)品性能。

3.5SCSI總線信號(hào)

SCSI在物理信號(hào)的基礎(chǔ)上定義了一組總線信號(hào)。這些信號(hào)可劃分為數(shù)據(jù)信號(hào)和控制信號(hào)兩類。它們都是二進(jìn)制信號(hào),并且只有“真”和“偽”兩個(gè)穩(wěn)定狀態(tài)。其中有指示總線已經(jīng)被占用的“BSY”信號(hào),有清除并重新設(shè)置SCSI總線的“RST”信號(hào)等。

下面對這些信號(hào)的名稱和功能逐一進(jìn)行介紹。

1.BSY(Busy,忙)信號(hào)

該信號(hào)是“或態(tài)”信號(hào),表示已經(jīng)有設(shè)備占用總線。

2.SEL(Select,選擇)信號(hào)

該信號(hào)是“或態(tài)”信號(hào),由發(fā)起方用以選擇目標(biāo)方,或者由目標(biāo)方用以重新選擇發(fā)起方。

3.C/D(Control/Data,控制/數(shù)據(jù))信號(hào)

該信號(hào)由目標(biāo)方驅(qū)動(dòng),表示在數(shù)據(jù)總線上傳送的是數(shù)據(jù)信號(hào)還是控制信號(hào)。該信號(hào)處于真狀態(tài)時(shí)表示控制信號(hào)。

4.I/O(Input/Output,輸入輸出)信號(hào)

該信號(hào)由目標(biāo)方驅(qū)動(dòng),控制數(shù)據(jù)在數(shù)據(jù)總線上的移動(dòng)方向。當(dāng)I/0信號(hào)為“真”時(shí)表示是對發(fā)起方的輸入,數(shù)據(jù)由目標(biāo)方向發(fā)起方傳送;若I/0信號(hào)為“偽”,則表示數(shù)據(jù)由發(fā)起方向目標(biāo)方傳送。該信號(hào)也被用來區(qū)分選擇和重選階段。

5.MSG(Message,通信)信號(hào)

該信號(hào)由目標(biāo)方驅(qū)動(dòng),表示總線處于信息傳送的通信階段。

6.REQ(Request,請求)信號(hào)

該信號(hào)由目標(biāo)方驅(qū)動(dòng),表示有信息傳輸請求,請求一個(gè)REQ/ACK數(shù)據(jù)傳送握手過程。

7.ACK(Acknowledge,應(yīng)答)信號(hào)

該信號(hào)由發(fā)起方驅(qū)動(dòng),表示對REQ信號(hào)的應(yīng)答。

8.ATN(Attention,提醒)信號(hào)

該信號(hào)由發(fā)起方驅(qū)動(dòng),指示一個(gè)提醒信息,表明發(fā)起方有一個(gè)消息要給目標(biāo)方發(fā)送。

9.RST(Reset,重置)信號(hào)

該信號(hào)是“或態(tài)”信號(hào),表示一個(gè)硬件重置狀態(tài),指示總線進(jìn)入重新設(shè)置階段,清除所有使用總線的SCSI設(shè)備。

10.DB(DataBus,數(shù)據(jù)總線)信號(hào)

DB信號(hào)有兩種,分別是用于8位數(shù)據(jù)總線的DB(7-0,P)和用于16位數(shù)據(jù)總線的DB(l5~O,P)。這些信號(hào)都用于傳送信息的值,它們包括數(shù)據(jù)比特信號(hào),加上奇偶檢驗(yàn)比特信號(hào)。

由于在SCSI總線上掛有多個(gè)設(shè)備,一些控制信號(hào)可能同時(shí)被多個(gè)SCSI設(shè)備驅(qū)動(dòng)。這些信號(hào)被稱作“或態(tài)”信號(hào)。對于“或態(tài)”信號(hào),SCSI設(shè)備不會(huì)主動(dòng)將其驅(qū)動(dòng)成“偽”,而是依賴總線終接器,在總線上的所有設(shè)備都沒有驅(qū)動(dòng)該信號(hào)時(shí)將其設(shè)置成“偽。”只要有1個(gè)或多個(gè)設(shè)備驅(qū)動(dòng)該信號(hào),該信號(hào)就是“真”。與“或態(tài)”信號(hào)相對照的是“非或態(tài)”信號(hào)。對于“非或態(tài)”信號(hào),SCSI設(shè)備可以將其驅(qū)動(dòng)成“偽”。

3.6SCSI總線的使用階段

根據(jù)對總線不同的使用,可以把SCSI總線狀態(tài)劃分成8個(gè)不同的階段:空閑階段,仲裁階段,選擇階段,重選階段,命令階段,數(shù)據(jù)階段,狀態(tài)階段和通信階段。

其中命令階段,數(shù)據(jù)階段,狀態(tài)階段和通信階段都設(shè)計(jì)信息在總線的傳送,所以又稱為:信息傳送階段。

除了空閑階段外,其他階段的總線都被SCSI設(shè)備占用。

3.6.1.總線空閑階段

總線空閑表明沒有一個(gè)設(shè)備在使用SCSI總線,也表示在此狀態(tài)下,SCSI設(shè)備如果需要,可以使用總線。SCSI設(shè)備需要在總線上的SEL信號(hào)和BSY信號(hào)都是“偽”之后,才可以檢測總線是否處于空閑狀態(tài)。

作為例子,SCSI總線可能在下列情況下進(jìn)入空閑狀態(tài):

1.RST信號(hào)被設(shè)置;

2.不成功的總線選擇或重選;

3.目標(biāo)設(shè)備解除連接;

4.目標(biāo)設(shè)備命令完成。

一旦一個(gè)SCSI設(shè)備確定總線處于空閑階段,它就可以申請總線仲裁,從而進(jìn)入仲裁階段。

3.6.2.總線仲裁階段

SCSI總線上的設(shè)備必須先獲得總線連接權(quán),然后才可以進(jìn)行其他的操作。在默認(rèn)條件下,看似掛在總線上的設(shè)備在邏輯上是與總線斷開的,沒有參與總線上的活動(dòng)。SCSI設(shè)備只有在需要進(jìn)行數(shù)據(jù)傳輸和設(shè)備狀態(tài)報(bào)告時(shí)才會(huì)申請總線連接權(quán)。SCSI設(shè)備一旦得到了總線連接權(quán),就將在發(fā)起方和目標(biāo)方之間形成一個(gè)物理連接的通道,然后就可以進(jìn)行數(shù)據(jù)傳輸。

一般情況下,總線的獲取與對目標(biāo)方的選擇都由發(fā)起方完成。為了更加高效地使用總線,在某些情況下,例如在有較長時(shí)間的CPU處理等待或設(shè)備存取等待時(shí),需要釋放總線以供其他設(shè)備使用。在等待的相關(guān)任務(wù)完成后,再重新進(jìn)行總線仲裁和連接權(quán)獲取操作,以繼續(xù)進(jìn)行暫停的工作。因此,有時(shí)目標(biāo)方也可以執(zhí)行總線操作和連接權(quán)獲取操作,準(zhǔn)確地講,是再獲取操作。

SCSI總線上的設(shè)備的優(yōu)先級(jí)是由它的地址即SCSI ID決定的。在窄SCSI中的ID范圍是0-7,對應(yīng)的優(yōu)先級(jí)是從18。在寬SCSI中的ID范圍是O~l5,其中對應(yīng)IDO~7的優(yōu)先級(jí)是從9到16遞增,而對應(yīng)ID8~l5的優(yōu)先級(jí)是從18遞增。在這里,我們用較大的數(shù)值表示較高的優(yōu)先級(jí),因此,ID7具有最高優(yōu)先級(jí)。在窄SCSI中,ID 0具有最低優(yōu)先級(jí);在寬SCSI中,ID8具有最低優(yōu)先級(jí)。

SCSI總線上的ID數(shù)目是與SCSI數(shù)據(jù)總線寬度一致的,因此,窄SCSI有8個(gè)ID,寬SCSI有16個(gè)ID。在窄SCSI中的8根數(shù)據(jù)線的編號(hào)是從0到7,在寬SCSI中的16根數(shù)據(jù)線的編號(hào)是從0到15。有趣的是,具有某個(gè)編號(hào)的數(shù)據(jù)線上的信號(hào),還被用來表示具有對應(yīng)號(hào)碼IDSCSI設(shè)備是否在執(zhí)行選擇或相關(guān)操作。例如當(dāng)數(shù)據(jù)總線中的數(shù)據(jù)線DB(2)在某個(gè)特定的階段被驅(qū)動(dòng)成真時(shí),就可以表示其ID為2的設(shè)備已經(jīng)在總線上執(zhí)行了選擇或相關(guān)操作。

在SCSI域中,主機(jī)是存儲(chǔ)設(shè)備的主要使用者,且對存儲(chǔ)的響應(yīng)要求較高,因此通常主機(jī)的優(yōu)先級(jí)最高,其分配的ID值也最大,在窄SCSI中是ID7,在寬SCSI中是IDl5。

總線仲裁就是在可能同時(shí)有多個(gè)設(shè)備請求的情況下,最終只給予其中的一個(gè)SCSI設(shè)備總線控制權(quán)的過程。SCSI設(shè)備在檢測到“總線空閑”并等待一個(gè)時(shí)延后即可以把總線置成BSY,并把與它的SCSIID對應(yīng)的數(shù)據(jù)線信號(hào)置為“真”,開始總線仲裁申請。

在等待1個(gè)時(shí)延后,該SCSI設(shè)備需檢測在數(shù)據(jù)總線上是否有更高優(yōu)先級(jí)的SCSIID也為“真”。如果總線上確有更高優(yōu)先級(jí)的設(shè)備在進(jìn)行總線申請,則該SCSI設(shè)備不再置BSY和對應(yīng)的數(shù)據(jù)線為“真”。放棄總線仲裁申請,直到下一次“總線空閑”;否則,該設(shè)備就獲得了總線控制權(quán),并由該設(shè)備把SEL信號(hào)置為“真”。同時(shí),總線上的其他SCSI設(shè)備則檢測到SEL信號(hào)為“真”后,不再置BSY信號(hào)和對應(yīng)的數(shù)據(jù)線為“真”,放棄總線仲裁申請。為了保證確實(shí)已經(jīng)獲得了總線控制權(quán),該設(shè)備在置SEL信號(hào)為“真”后、傳送其他信號(hào)前,需要有一定的時(shí)延。

在總線仲裁階段結(jié)束時(shí),總線上有BSY、SEL和與獲得總線的SCSI設(shè)備的ID,其對應(yīng)的數(shù)據(jù)線的信號(hào)為“真”。

3.6.3.選擇階段

在選擇階段,得到總線使用權(quán)的SCSI設(shè)備在總線上選擇目標(biāo)設(shè)備,以便隨后可以向該目標(biāo)設(shè)各發(fā)送諸如讀和寫這樣的命令。這個(gè)階段主要是完成對具有特定SCSIID的設(shè)備的選擇,其相關(guān)協(xié)議的定義主要是在SCSI體系結(jié)構(gòu)的互連層。需要注意的是,邏輯單元號(hào)LUN的尋址是邏輯單元通過SCSI傳輸層協(xié)議完成的,不在互連層。與LUN編址相關(guān)的協(xié)議在傳輸協(xié)議層描述。

贏得仲裁的SCSI設(shè)備在把BSY和SEL信號(hào)置成“真”,經(jīng)過一小段時(shí)延后,即可進(jìn)入選擇階段。作為發(fā)起方,贏得仲裁的SCSI設(shè)備不可以把1/0信號(hào)置成“真”。在此階段,發(fā)起方需要把與自己的SCSIID對應(yīng)的數(shù)據(jù)線的信號(hào)和對應(yīng)所要選擇的目標(biāo)設(shè)備的SCSIID的數(shù)據(jù)線的信號(hào)置成“真”,經(jīng)過一小段時(shí)延,再把BSY信號(hào)置成“偽”,然后等待目標(biāo)方的響應(yīng)。

例如,SCSI ID為6的主機(jī)把對應(yīng)自己的ID的數(shù)據(jù)線DB(6)和對應(yīng)目標(biāo)設(shè)備的ID(=6)的數(shù)據(jù)線DB(0)置成“真”后,數(shù)據(jù)總線上信號(hào)值的狀態(tài)將如下所示。

DS(0)DS(1)DS(2)DS(3)DS(4)DS(5)DS(6)DS(7)

10000010

此時(shí),只有兩個(gè)數(shù)據(jù)線的信號(hào)值是“真”。如果有多于兩個(gè)的數(shù)據(jù)線為“真”,則目標(biāo)方認(rèn)為有誤。目標(biāo)方在SEL和對應(yīng)它的ID的數(shù)據(jù)線的信號(hào)為“真”并且BSY和I/0信號(hào)為“偽”的情況下,就可以確定它自己已經(jīng)被選為目標(biāo)設(shè)備。此時(shí),目標(biāo)方設(shè)備應(yīng)該重新把BSY信號(hào)置成“真”。發(fā)起方在檢測到BSY為“真”的信號(hào)后,就把SEL信號(hào)置成“偽”。特別需要注意的是,在該階段結(jié)束時(shí),BSY信號(hào)是由目標(biāo)方置位的。

3.6.4.重選階段

SCSI目標(biāo)設(shè)備忙于處理其內(nèi)部事務(wù)(通常是對于執(zhí)行對存儲(chǔ)數(shù)據(jù)的讀或?qū)懖僮?期間,它可以在等待操作(比如把存儲(chǔ)在設(shè)備中的數(shù)據(jù)讀入緩沖區(qū)或把暫存在緩沖區(qū)的數(shù)據(jù)寫入緩沖區(qū))完成時(shí)釋放總線供其他設(shè)備使用,并在操作完成后重新申請對總線的使用權(quán)。因此,重選階段也發(fā)生在“總線仲裁階段”之后。但與選擇階段不同,重選階段由目標(biāo)方啟動(dòng),重新建立由發(fā)送方啟動(dòng)成功但被目標(biāo)方掛斷的連接。

在目標(biāo)設(shè)備釋放了總線之后,BSY和SEL信號(hào)處于被置成“真”的狀態(tài)。此時(shí)日標(biāo)設(shè)備通過把I/0信號(hào)置成“真”使自己成為贏得對總線使用權(quán)的一方。在重選階段,目標(biāo)方也需要把與自已的SCSIID對應(yīng)的數(shù)據(jù)線的信號(hào)和對應(yīng)發(fā)送方設(shè)備的SCSIID的數(shù)據(jù)線的信號(hào)置成“真”,經(jīng)過一段短的時(shí)延,再把BSY信號(hào)置成“偽”,然后等待發(fā)起方的響應(yīng)。

發(fā)起方在SEL、I/0和對應(yīng)它的ID的數(shù)據(jù)線的信號(hào)為“真”并且BSY為“偽”的情況下,就可以確定它自己已經(jīng)被重選。被重選的發(fā)起方可以通過查看數(shù)據(jù)總線來驗(yàn)證重迭的目標(biāo)方的SCSIID。然后,發(fā)起方設(shè)各重新把BSY信號(hào)置成“真”。目標(biāo)方在檢測到BSY為“真”的信號(hào)后,它也執(zhí)行把BSY驅(qū)動(dòng)成“真”的操作,并把SEL信號(hào)置成“偽”。

被重選的發(fā)起方在檢測到SEL信號(hào)為“偽”后,它就把BSY置成“偽”,而目標(biāo)設(shè)備則繼續(xù)把BSY設(shè)置成“真”,直到它放棄對總線的使用權(quán)為止。這樣,在該階段結(jié)束時(shí),信號(hào)的狀態(tài)與選擇階段一樣,也是由目標(biāo)方設(shè)置的BSY信號(hào)。


上一頁 1 2 下一頁

關(guān)鍵詞: SCSI總線和協(xié)

評(píng)論


技術(shù)專區(qū)

關(guān)閉