<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          SCSI總線和協(xié)議

          作者: 時間:2016-12-15 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201612/330386.htm

          3.6.5.信號傳送階段

          命令階段、數(shù)據(jù)階段、狀態(tài)階段和通信階段被組合在一起作為信息傳送階段,因?yàn)樗鼈兌急挥脕硗ㄟ^數(shù)據(jù)總線傳送數(shù)據(jù)或控制信息。SCSI使用C/D、I/0MSG信號區(qū)分不同的信息傳送階段以及對應(yīng)的信息傳輸方向。目標(biāo)方驅(qū)動這3個信號,控制從一個階段到另一個階段的轉(zhuǎn)變。發(fā)起方可以通過把ATN信號置成“真”請求一個“通信出”階段,而目標(biāo)方可以通過釋放MSG、C/D、I/0BSY信號引入總線空閑階段。信息傳送階段使用一個或多個REQ/ACK握手過程控制信息傳送。每個REQ/ACK握手過程允許傳送1個或多個字節(jié)的信息。因?yàn)樾畔魉碗A段一定是在選擇階段或重選階段之后,所以不改變BSY和SEL信號。事實(shí)上,在該階段,BSY持續(xù)為“真”,SEL信號持續(xù)為“偽”。

          表2-2示出了MSG、C/D和I/0信號值與階段名及信息傳輸方向之間的關(guān)系。其中的“出”和“入”是相對子發(fā)送方設(shè)備而言的,且數(shù)據(jù)傳輸方向由I/0信號確定。

          2-2MSG、C/D和1/0信號值與階段名及信息傳輸方向之間的關(guān)系

          MSG

          CID

          1/0

          階段

          具體階段

          傳輸方向

          1

          0

          0

          *(未用)

          1

          0

          1

          *(末用)

          1

          1

          0

          通信

          通信出

          從發(fā)送方到目標(biāo)方

          1

          1

          1

          通信

          通信入

          從目標(biāo)方到發(fā)送方

          0

          0

          0

          數(shù)據(jù)

          數(shù)據(jù)出

          從發(fā)送方到目標(biāo)方

          0

          0

          1

          數(shù)據(jù)

          數(shù)據(jù)入

          從目標(biāo)方到發(fā)送方

          0

          1

          0

          命令

          從發(fā)送方到目標(biāo)方

          0

          1

          1

          狀態(tài)

          從目標(biāo)方到發(fā)送方

          注釋:0=偽,1=真,*=保留未來定義

          命令階段允許目標(biāo)方請求發(fā)起方傳送命令信息。在命令階段的REQ/ACK握手過程中,目標(biāo)方把C/D信號置成“真”,把I/0信號和MSG信號置成“偽”。

          數(shù)據(jù)階段包括“數(shù)據(jù)入”階段和“數(shù)據(jù)出”階段。

          (1)“數(shù)據(jù)入”階段允許目標(biāo)方請求把數(shù)據(jù)從目標(biāo)方傳送給發(fā)起方。在“數(shù)據(jù)入”階段的REQ/ACK握手過程中,目標(biāo)方把I/0信號置成“真”,把C/D信號和MSG信號置成“偽”。

          (2)“數(shù)據(jù)出”階段允許目標(biāo)方請求把數(shù)據(jù)從發(fā)起方傳送到目標(biāo)方。在“數(shù)據(jù)出”階段的REQ/ACK握手過程中,目標(biāo)方把C/D信號、I/0信號和MSG信號都置成“真”。

          狀態(tài)階段允許目標(biāo)方請求把狀態(tài)信息從目標(biāo)方傳送給發(fā)起方。在狀態(tài)階段的REQ/ACK握手過程中,目標(biāo)方把C/D信號和I/0信號置成“真”,把MSG信號置成“偽”。

          通信階段可以是“通信入”階段或“通信出”階段。無論是在“通信入”階段,還是在“通信出”階段,都可以傳送多條消息。傳送的第一個字節(jié)可以是單字節(jié)消息,也可以是多字節(jié)消息的首字節(jié)。在1個通信階段可以傳送多個多字節(jié)消息。

          “通信入”階段允許目標(biāo)方請求把消息從目標(biāo)方發(fā)送給發(fā)起方。在“通信入”階段的REQ/ACK握手過程中,目標(biāo)方把C/D信號、I/0信號和MSG信號都置成“真”。

          “通信出”階段允許目標(biāo)方請求把消息從發(fā)起方傳送到目標(biāo)方。目標(biāo)方在響應(yīng)發(fā)起方建立的提醒條件時調(diào)用“通信出”階段。在“通信出”階段的REQ/ACK握手過程中,目標(biāo)方把C/D信號和MSG信號置成“真”,把I/0信號置成“偽”。

          3.7異步傳輸和同步傳輸

          與傳統(tǒng)網(wǎng)絡(luò)的數(shù)據(jù)包傳送方式不同,SCSI基于REQ/ACK信號控制數(shù)據(jù)傳輸?shù)倪^程。根據(jù)REQ和ACK信號控制與數(shù)據(jù)總線置位時間的差別,信息傳輸又可分為異步傳輸和同步傳輸兩個列別。而且,無論傳輸?shù)姆较蛉绾危畔⒌膫鬏敹际怯蒖EQ信號開始,并且REQ信號都是由目標(biāo)方控制和發(fā)送的。

          1.異步信息傳輸

          異步傳輸方式可用于數(shù)據(jù)階段的數(shù)據(jù)傳輸,也可用于命令、狀態(tài)和通信階段的信息傳輸。首先,信息傳輸?shù)姆较蚴怯?wbr />I/O信號決定的。如果I/O信號為“真”,那么信息是由目標(biāo)方向發(fā)起方傳輸。在此情況下,為了傳送信息,目標(biāo)方先把數(shù)據(jù)線DB(7/15-0,P)信號置成對應(yīng)想要傳送的二進(jìn)制數(shù)位序列的值,然后把REQ信號置成“真”。發(fā)起方在檢測到REQ為“真”時,讀取數(shù)據(jù)總線的值,然后把ACK信號置成“真”。當(dāng)目標(biāo)方檢測到ACK為“真”時,它就可以改變或取消放置在數(shù)據(jù)總線上的值,并把REQ置成“偽”。發(fā)起方在檢測到REQ置成“偽”時把ACK也置成“偽”。當(dāng)目標(biāo)方檢測到ACK為“偽”時,總線上就完成了一次數(shù)據(jù)傳輸,并可進(jìn)行下一次數(shù)據(jù)傳輸。

          在異步傳輸方式中,每個REQ/ACK握手過程傳送1個(對于窄SCSI)或2個字節(jié)(對于寬SCSI)的信息。特別需要注意的是,在此方式中,目標(biāo)方在置REQ信號后,必須持續(xù)地把數(shù)據(jù)線DB(7/l5~O,P)置成對應(yīng)所要傳送的二進(jìn)制數(shù)位序列的值,直到它檢測到ACK為真為止。

          如果I/O信號為“偽”,那么信息是由發(fā)起方向目標(biāo)方傳輸。在此情況下,目標(biāo)方通過把REQ置成“真”來請求信息。發(fā)起方驅(qū)動DB(7/l5~O,P)到它需要發(fā)送的二進(jìn)制數(shù)位序列的值,然后把ACK置成“真”。此后,繼續(xù)把DB(7/l5~O,P)信號置成這個二進(jìn)制數(shù)位序列的值,直到REQ變成“偽”為止。目標(biāo)方則是在檢測到ACK變成“真”時,讀DB(7/l5~O,P)的值,然后把REQ置成“偽”。發(fā)起方在檢測到REQ變成“偽”時,它可以改變或取消放置在數(shù)據(jù)總線上的值,并把ACK置成“偽”。

          此后,目標(biāo)方可以通過把REQ置成“真”,繼續(xù)請求信息。

          2.同步數(shù)據(jù)傳輸

          同步數(shù)據(jù)傳輸只在數(shù)據(jù)階段使用,并且是在目標(biāo)方和發(fā)起方之間建立同步數(shù)據(jù)傳輸協(xié)定之后使用。

          與異步傳輸中的規(guī)則相同,當(dāng)I/0信號為“真”時,數(shù)據(jù)是由目標(biāo)方向發(fā)起方傳輸。目標(biāo)方先把數(shù)據(jù)放置到數(shù)據(jù)總線上,即置DB(7/l5~O,P)對應(yīng)的線路,然后把REQ置成“真”。在同步數(shù)據(jù)傳輸中,目標(biāo)方在把REQ置成“真”后,需要把放置在DB(7/l5~O,P)上的二進(jìn)制數(shù)位序列的值保持一個指定長度的時間,但不必維持到對ACK信號變“真”的接收。這是與異步傳輸不同的一個地方。在指定長度的時間期滿后,目標(biāo)方就可以把REQ置成“偽”,并且可以改變或取消放置在數(shù)據(jù)總線上的值,然后準(zhǔn)備發(fā)送下一個數(shù)據(jù)。發(fā)起方在檢測到REQ變“真”之后一個指定長度的時間內(nèi)讀DB(7/l5~O,P)上的值,然后把ACK置成“真”作為對目標(biāo)方的響應(yīng)。

          與異步傳輸一樣,在同步數(shù)據(jù)傳輸中,發(fā)起方也在接收到一個REQ并讀取了數(shù)據(jù)總線上的值之后就發(fā)送一個ACK信號。但與異步傳輸不同的是,目標(biāo)方在接收到對一個數(shù)據(jù)的ACK之前可以發(fā)送多個REQ信號。SCSI為同步數(shù)據(jù)傳輸?shù)腞EQ/ACK握手過程定義了一個稱作REQ/ACK飽和值的參數(shù),它表示在接收到ACK信號前可以發(fā)送的最大REQ信號數(shù)。如果發(fā)送的REQ數(shù)日多于接收到的ACK數(shù)目,并達(dá)到了定義的REQ/ACK飽和值,那么目標(biāo)方暫停發(fā)送REQ信號和數(shù)據(jù),直到接收到下一個ACK為止。這在原理上與傳統(tǒng)網(wǎng)絡(luò)中的流控制類似。

          當(dāng)I/O信號為“偽”時,數(shù)據(jù)是由發(fā)起方向目標(biāo)方傳輸。發(fā)起方每次接收到一個REQ信號就發(fā)送一次數(shù)據(jù)。目標(biāo)方先把REQ置成“真”。發(fā)起方檢測到REQ變“真”后把要發(fā)送的數(shù)據(jù)放置到數(shù)據(jù)總線上,即置DB(7/l5~O,P)對應(yīng)的線路,然后把ACK置成“真”。接著發(fā)送方需要在一個指定長度的時間內(nèi)保持在總線上放置的數(shù)據(jù)不變,并繼續(xù)把ACK置成“真”。在指定的時間期滿后,發(fā)起方可以把ACK置成“偽”,并且可以改變或取消放置在數(shù)據(jù)總線上的值。目標(biāo)方在檢測到ACK信號變“真”后,在指定的ACK保持為“真”的時間內(nèi)讀取數(shù)據(jù)總線上的數(shù)據(jù),并把REQ置成“偽”。

          此后,目標(biāo)方可以通過把REQ再置成“真”繼續(xù)請求信息。

          3.8SCSI命令描述塊

          在互連層完成SCSI設(shè)備對總線的連接,以及發(fā)送方和目標(biāo)方的選擇的基礎(chǔ)上,傳輸層協(xié)議執(zhí)行實(shí)際的數(shù)據(jù)傳輸。傳輸層提供了兩類服務(wù),一是命令的執(zhí)行和確認(rèn);二是數(shù)據(jù)的傳送。命令的執(zhí)行是在總線進(jìn)入命令階段后,發(fā)起方通過命令描述塊(command description block,CDB)向目標(biāo)方發(fā)送具體的命令。命令的確認(rèn)是在總線進(jìn)入通信(Message)階段后,發(fā)起方接收由目標(biāo)方發(fā)送的命令執(zhí)行確認(rèn)信息。數(shù)據(jù)的傳送則是在數(shù)據(jù)階段(數(shù)據(jù)出或數(shù)據(jù)入)進(jìn)行的。傳輸協(xié)議的運(yùn)行過程包括發(fā)送命令、傳輸數(shù)據(jù)和對命令執(zhí)行的確認(rèn)。SCSI基礎(chǔ)命令規(guī)范SPC(SCSIPrimaryCommands,SCSI基礎(chǔ)命令)定義了CDB的標(biāo)準(zhǔn)。

          除了基本命令外,SPC還定義了所有類型的SCSI目標(biāo)方設(shè)各都可以使用的管理參數(shù),如診斷參數(shù)和日志參數(shù)等。

          發(fā)起方對存儲設(shè)備的實(shí)際操作是通過向目標(biāo)方發(fā)送一個命令描述塊來完成的。在一些情況下,在一個命令描述塊之后可能還有一些參數(shù)要傳給目標(biāo)方,按照具體的協(xié)定,這些更多的參數(shù)是在命令描述塊后的“數(shù)據(jù)出”階段發(fā)送的。命令描述塊有定長和不定長兩種格式,而定長格式的命令描述塊又有6、10、12或16字節(jié)不同的長度規(guī)定。

          命令描述塊由編號從0~56個字節(jié)組成。下面介紹其中各個段的內(nèi)容。

          1.操作碼

          操作碼是所有命令描述塊都有的,它總是被放在命令描述塊的開頭一個字節(jié)。正如其名字所言,操作碼定義CDB的具體操作。8比特在理論上共有256個可能的操作碼。實(shí)際上其中有一些是保留碼,日前尚未定義。操作碼的8個二進(jìn)制位又分為兩部分:5-7位是組代碼,指示該命令具體屬于哪個命令組,它決定CDB的長度,如“000”為組“0”,表示6個字節(jié)的CDB命令組,0-4位則是具體的命令代碼。

          2.混雜CDB信息

          該參數(shù)表示與具體的CDB相關(guān)的信息,其中一個例子是表示邏輯設(shè)備號,尋址在SCSI目標(biāo)設(shè)備中的一個邏輯單元。對應(yīng)一個SCSIID的設(shè)備可以有多個邏輯單元,所以邏輯單元擴(kuò)展了SCSI總線可訪問的設(shè)備數(shù)目,使得目標(biāo)方設(shè)各上可以有多個可被訪問的設(shè)備而只占用一個有效的SCSIID。對一個邏輯單元的實(shí)際訪問是通過該邏輯單元的一個特定的編號,即邏輯單元號實(shí)現(xiàn)的。

          3.邏輯塊地址

          該地址是邏輯單元(比如磁盤)中的起始操作塊的位置。在6字節(jié)的CDB中,有21位的邏輯塊地址。SCSI把邏輯單元、卷或分區(qū)抽象成塊的數(shù)組,每一塊都有一個邏輯地址,編號從0開始。對SCSI存儲設(shè)備的每一次讀/寫操作都是針對一組連續(xù)的邏輯塊進(jìn)行的,因而需要指出起始塊的邏輯地址。

          4.傳送長度

          該長度表示命令所請求的傳送量,通常是塊數(shù)。在有些類別的CDB中也可能是字節(jié)數(shù)。0表示不需要傳送數(shù)據(jù)。

          5.參數(shù)表長度

          有些命令還需要更多的參數(shù),這些參數(shù)由客戶提供,定義在“數(shù)據(jù)出”緩沖區(qū)中。參數(shù)表長度就表示需要傳送到存儲設(shè)備的這類參數(shù)的長度,0表示不需要傳遞參數(shù)。

          6.分配長度

          分配長度表示應(yīng)用客戶為“數(shù)據(jù)入”緩沖區(qū)分配的最大長度,根據(jù)具體的CDB類別,可能是字節(jié)數(shù),也可能是塊數(shù)。應(yīng)用客戶通常使用該“數(shù)據(jù)入”緩沖區(qū)接收特殊信息,如日志數(shù)據(jù)、診斷數(shù)據(jù)等。如果傳送的信息量超過了分配長度表示的最大值,則相關(guān)設(shè)備不應(yīng)再傳,并使用狀態(tài)階段返回特定的狀態(tài)信息。

          7.控制碼

          它是所有CDB格式的最后一個字節(jié)。在其中有一些特殊的域,如已經(jīng)定義的一個NACA位。在一些情況下,一個命令的執(zhí)行會以“檢查條件(CheckCondition)”狀態(tài)中止,它表明在命令執(zhí)行過程中出現(xiàn)了錯誤或異常。有些命令執(zhí)行的錯誤或異常不會影響其他命令的執(zhí)行,也不需要作善后的恢復(fù)處理,而另一些命令執(zhí)行的錯誤或異常則可能導(dǎo)致命令組中的其他命令被異常中止,需要專門的命令對其做善后處理,并要求存儲設(shè)各在完成善后處理工作之前不再處理該用戶的其他命令。為了區(qū)分這兩種不同的情況,也為了讓應(yīng)用客戶能夠事先聲明哪些命令執(zhí)行的錯誤或異常需要善后處理,SCSI允許應(yīng)用客戶在CDB的控制碼中設(shè)置NACA位,請求存儲設(shè)備在命令執(zhí)行以“檢查條件”狀態(tài)中止時建立“自動跟隨”條件(Condition),從而允許應(yīng)用客戶在隨后的善后處理命令中把新(New)任務(wù)的屬性設(shè)置成自動跟隨(AutoContingentAllegiance,ACA)。

          3.9SCSI的讀操作和寫操作過程

          1. SCSI的讀操作過程

          如果計算機(jī)要從存儲設(shè)備上讀取文件或數(shù)據(jù),那么無論數(shù)據(jù)的大小如何,都至少要經(jīng)歷一個SCSI的讀操作過程。當(dāng)然,操作系統(tǒng)需首先將用戶的讀取操作通過SCSII/0的應(yīng)用程序編程接口(ApplicationProgrammingInterface,API)轉(zhuǎn)化為SCSI的讀操作,并在操作完成后通過相應(yīng)的API返回響應(yīng)的值。

          在SCSI域內(nèi),這個操作在傳輸層被簡單地描述成5個主要過程:

          (1)發(fā)起方通過CDB發(fā)送SCSI的讀命令。

          (2)目標(biāo)方接收到該命令,通過設(shè)備管理器在指定的邏輯單元中執(zhí)行該命令請求的操作。

          (3)目標(biāo)方以字節(jié)為單位向發(fā)起方傳送數(shù)據(jù)。

          (4)在數(shù)據(jù)傳輸完畢后,目標(biāo)方向發(fā)起方發(fā)送命令完成的報告。

          (5)發(fā)起方接收到命令完成的響應(yīng)。

          當(dāng)然,這些過程是建立在SCSI互連層的基礎(chǔ)上的。在第一個過程之前,SCSI總線由空閑階段進(jìn)入總線仲裁和選擇階段,完成發(fā)起方對總線使用權(quán)的獲得以及對目標(biāo)方的選擇和尋址。

          在第一個過程中,目標(biāo)方發(fā)送REQ信號,請求信息傳輸,控制總線進(jìn)入信息傳送的命令階段。目標(biāo)方通過發(fā)送方傳送的CDB獲取“讀”命令。在其后的第2個和第3個過程中,目標(biāo)方從它控制的外圍設(shè)備中讀取數(shù)據(jù)并發(fā)送到發(fā)起方。如目標(biāo)方準(zhǔn)備數(shù)據(jù)需要較長的時間,則可能有多個總線釋放、進(jìn)入空閑和重選階段的輪回。目標(biāo)方在每次完成數(shù)據(jù)傳送后,都控制總線進(jìn)入狀態(tài)階段并返回一個狀態(tài)信息。為進(jìn)一步表示讀命令的全部完成,在第四個過程中,總線進(jìn)入信息傳送的通信階段,目標(biāo)方發(fā)送“命令完成”信息,并可釋放SCSI總線的BSY信號。在第五個過程中,發(fā)起方接收到日標(biāo)方命令完成的響應(yīng),總線可恢復(fù)到空閑階段。

          2. SCSI的寫操作過程

          SCSI的寫操作過程與讀操作過程類似,但數(shù)據(jù)傳送的方向不同,它把數(shù)據(jù)從發(fā)送方向目標(biāo)方傳送。在發(fā)送方系統(tǒng)中有對文件做寫操作的用戶請求時,它先通過文件系統(tǒng)查找該文件在存儲設(shè)備(如磁盤)上的邏輯塊地址(LogicalBlockAddress,LBA),接著文件系統(tǒng)把該LBA連同其他一些參數(shù),如數(shù)據(jù)的指針、數(shù)據(jù)的長度以及邏輯單元號等傳遞給SCSIAPI,并指示一個寫操作。例如寫6000字節(jié)到LUNO的邏輯塊地址OOOl234AB。SCSI的API則具體發(fā)送一個寫命令給LUNO,并將數(shù)據(jù)以存儲設(shè)備認(rèn)可的方式分批或一次性地傳遞到LUNO,直到數(shù)據(jù)全部傳輸完畢。之后,SCSIAPI返回,并指示任務(wù)完成。然后,文件系統(tǒng)通知應(yīng)用程序任務(wù)完成。至此,一個文件的寫操作完成。

          當(dāng)然,在數(shù)據(jù)寫操作中,仍然需要具體運(yùn)行SCSI的各個階段,并需要發(fā)送SCSI信號以及SCSI命令,如寫命令等。這些方面都與上面描述的讀操作類似,此處不再贅述。

          從上面的介紹可以看出,一個簡單的數(shù)據(jù)讀或?qū)懖僮鲿婕耙幌盗械倪^程。實(shí)際上,在這些過程中,除了有應(yīng)用程序(如字處理軟件、數(shù)據(jù)庫等)為用戶提供的直接操作界面和操作系統(tǒng)給應(yīng)用程序提供的通用的系統(tǒng)功能外,還有文件系統(tǒng)、SCSIAPI、SCSI設(shè)備命令、SCSI驅(qū)動程序、總線和存儲設(shè)備等多種軟硬件的參與。


          上一頁 1 2 下一頁

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

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();