專利名稱:用于通用串行總線(usb)命令排隊(duì)的方法和裝置的制作方法
用于通用串行總線(USB)命令排隊(duì)的方法和裝置領(lǐng)域本發(fā)明涉及通用串行總線(USB),具體涉及大容量存儲(chǔ)類USB設(shè)備。背景通用串行總線(USB)是支持主計(jì)算機(jī)與多個(gè)可同時(shí)訪問(wèn)的設(shè)備(諸如可在主計(jì)算 機(jī)外部的外圍設(shè)備)之間的數(shù)據(jù)交換的串行總線標(biāo)準(zhǔn)。USB設(shè)備包括人類接口設(shè)備,例如 鼠標(biāo)、鍵盤(pán)、圖形輸入板和游戲控制器;成像設(shè)備,例如掃描儀、打印機(jī)和照相機(jī);以及存儲(chǔ) 設(shè)備,例如緊致盤(pán)只讀存儲(chǔ)器(CD-ROM)、軟盤(pán)驅(qū)動(dòng)器和數(shù)字視頻盤(pán)(DVD)。USB主機(jī)經(jīng)由物理USB發(fā)起去往/來(lái)自可訪問(wèn)USB設(shè)備的所有數(shù)據(jù)傳輸。數(shù)據(jù)傳 輸(事務(wù))在主控制器發(fā)送標(biāo)識(shí)數(shù)據(jù)傳輸?shù)念愋秃头较颉SB設(shè)備的地址以及該設(shè)備中的 端點(diǎn)編號(hào)的USB分組時(shí)發(fā)起。端點(diǎn)是作為USB主機(jī)與USB設(shè)備之間的通信流的終點(diǎn)的USB 設(shè)備的唯一可標(biāo)識(shí)部分。端點(diǎn)方向可以是輸入(去往主機(jī))或輸出(來(lái)自主機(jī))。USB主機(jī)與USB設(shè)備之間的數(shù)據(jù)和控制交換被支持作為一組單向或雙向邏輯管 道。邏輯管道是USB主機(jī)與USB設(shè)備中的端點(diǎn)之間的邏輯抽象,用于在USB主機(jī)與USB設(shè)備 之間交換數(shù)據(jù)和控制分組。該USB設(shè)備可在多個(gè)邏輯管道(管道束)上向主機(jī)傳輸數(shù)據(jù), 例如可能存在用于向USB設(shè)備中的輸出端點(diǎn)傳輸數(shù)據(jù)的獨(dú)立的單向邏輯管道和用于從USB 設(shè)備中的輸入端點(diǎn)向USB主機(jī)傳輸數(shù)據(jù)的另一單向邏輯管道。來(lái)自現(xiàn)有工業(yè)標(biāo)準(zhǔn)存儲(chǔ)協(xié)議的命令集可用于在USB主機(jī)與大容量存儲(chǔ)類USB設(shè)備 之間通信,例如小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議。SCSI協(xié)議是用于在主機(jī)系統(tǒng)與諸如存 儲(chǔ)設(shè)備的設(shè)備之間傳輸數(shù)據(jù)的標(biāo)準(zhǔn)集。SCSI定義發(fā)起方(例如主機(jī))與目標(biāo)(例如設(shè)備) 之間的通信,其中發(fā)起方發(fā)送命令至目標(biāo)。按照命令描述符塊(CDB)編碼的SCSI命令從發(fā) 起方被發(fā)送至目標(biāo)。該CDB包括操作碼和命令專屬參數(shù)。SCSI命令包括讀取命令和寫(xiě)入命 令。在完成數(shù)據(jù)傳輸(例如向目標(biāo)傳輸寫(xiě)入數(shù)據(jù)和向發(fā)起方傳輸讀取數(shù)據(jù))之后,目標(biāo)返 回指示該命令是否成功完成的狀態(tài)碼。USB通過(guò)將SCSI命令封裝于USB分組的USB包裝(頭部)中來(lái)與大容量類USB設(shè) 備通信。例如,USB主機(jī)所使用的命令集可以是通過(guò)SCSI主命令-2(SPCD定義的命令集。一對(duì)單向邏輯管道被配置用于傳輸在主機(jī)與大容量類USB設(shè)備之間交換的SCSI ⑶B、SCSI狀態(tài)碼以及數(shù)據(jù)。輸入管道(在USB設(shè)備中的端點(diǎn)與USB主機(jī)之間)被配置成 將數(shù)據(jù)和命令傳輸至該設(shè)備。輸出管道(在USB設(shè)備中的端點(diǎn)與USB主機(jī)之間)被配置成 將數(shù)據(jù)和狀態(tài)從該設(shè)備傳輸至USB主機(jī)。每個(gè)邏輯管道與主機(jī)(發(fā)起方)中的用于存儲(chǔ)要 經(jīng)由USB傳輸?shù)臄?shù)據(jù)的邏輯緩沖器相關(guān)聯(lián)。
隨著以下詳細(xì)描述的進(jìn)行,并參考其中相同標(biāo)記描述相同部件的這些附圖,要求 保護(hù)的主題的實(shí)施例的特征將變得顯而易見(jiàn),在附圖中圖1是根據(jù)本發(fā)明原理的包括USB主機(jī)和大容量存儲(chǔ)類USB設(shè)備的系統(tǒng)的實(shí)施例 的框圖,該系統(tǒng)為該大容量存儲(chǔ)類USB設(shè)備中的命令排隊(duì)和/或無(wú)序命令處理提供支持;
圖2是圖1中所示的管道束中的標(biāo)準(zhǔn)批量管道的客戶機(jī)側(cè)的框圖;圖3是根據(jù)本發(fā)明的原理的流式批量管道的實(shí)施例的框圖;圖4是示出為流式批量管道服務(wù)的用于輸入或輸出流端點(diǎn)流的流協(xié)議狀態(tài)機(jī)的 實(shí)施例的狀態(tài)圖;圖5是包括經(jīng)由包括流管道的管道束IM通信的USB主機(jī)和大容量存儲(chǔ)類USB設(shè) 備的系統(tǒng)的實(shí)施例的框圖,該系統(tǒng)為該大容量存儲(chǔ)類USB設(shè)備中的命令排隊(duì)和/或無(wú)序命 令處理提供支持;圖6是示出在該設(shè)備中實(shí)現(xiàn)的用于在該設(shè)備與主機(jī)之間的邏輯管道上傳輸數(shù)據(jù) 的方法的實(shí)施例的流程圖;以及圖7是包括USB主機(jī)和USB設(shè)備的系統(tǒng)的框圖,該系統(tǒng)提供對(duì)USB設(shè)備中的命令 排隊(duì)和/或無(wú)序命令處理的支持。雖然將參考要求保護(hù)的主題的說(shuō)明性實(shí)施例繼續(xù)進(jìn)行以下詳細(xì)描述,但該主題的 替代物、修改以及變型對(duì)本領(lǐng)域技術(shù)人員而言將顯而易見(jiàn)。因此,要求保護(hù)的主題旨在被廣 義地理解,而且僅如所附權(quán)利要求中所陳述的那樣定義。
具體實(shí)施例方式大容量存儲(chǔ)類USB設(shè)備的示例是硬盤(pán)驅(qū)動(dòng)器(硬驅(qū)動(dòng)器、硬盤(pán)或固定盤(pán)驅(qū)動(dòng)器)。 硬盤(pán)驅(qū)動(dòng)器包括主軸,該主軸支持具有存儲(chǔ)經(jīng)數(shù)字編碼數(shù)據(jù)的磁表面的一個(gè)或多個(gè)平坦圓 盤(pán)(盤(pán)片)。當(dāng)盤(pán)片以例如每分鐘4200轉(zhuǎn)(RPM)、3600RPM、7200RPM或MOORPM的旋轉(zhuǎn)速度 旋轉(zhuǎn)時(shí),讀/寫(xiě)磁頭沿著盤(pán)片移動(dòng)以從盤(pán)片讀取數(shù)據(jù)或?qū)?shù)據(jù)寫(xiě)入盤(pán)片。硬盤(pán)驅(qū)動(dòng)器是將 數(shù)據(jù)按照一個(gè)或多個(gè)扇區(qū)分塊傳輸至盤(pán)片(存儲(chǔ)介質(zhì))或從盤(pán)片傳輸?shù)膲K存儲(chǔ)設(shè)備。扇區(qū) 存儲(chǔ)固定數(shù)量的字節(jié),例如512字節(jié)或IOM字節(jié)。存在許多串行的存儲(chǔ)協(xié)議套件,諸如串行附連SCSI(SAQ和串行高級(jí)技術(shù)附件 (SATA)。SATA協(xié)議的一個(gè)版本在由串行ATA工作組于2003年1月7日公布的“串行ATA 高 速串行化 AT 附件(Serial ATA High Speed Serialized AT Attachment),,修訂 1. Oa 中有 描述。SAS協(xié)議的一個(gè)版本在由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)于2003年9月18日公布的信息 技術(shù)標(biāo)準(zhǔn)國(guó)際委員會(huì)(INCITS)TIO技術(shù)委員會(huì)的工作草案美國(guó)國(guó)家標(biāo)準(zhǔn)項(xiàng)目T10/1562-D
修訂 1 中的“信息技術(shù)-串行附連SCSI-1. 1 (Information Technology-Serial Attached
SCSI-1. 1)”中有描述。典型地,諸如硬盤(pán)驅(qū)動(dòng)器的存儲(chǔ)設(shè)備支持硬盤(pán)驅(qū)動(dòng)器中的多個(gè)命令的排隊(duì)。當(dāng)從 主機(jī)接收的多個(gè)命令可能在該硬盤(pán)驅(qū)動(dòng)器中排隊(duì)時(shí),該硬盤(pán)驅(qū)動(dòng)器可對(duì)排隊(duì)命令的執(zhí)行重 新排序。例如,可按照與當(dāng)前讀/寫(xiě)頭位置的接近程度而不是按照命令接收的順序來(lái)對(duì)存 儲(chǔ)于命令隊(duì)列中的讀命令和寫(xiě)命令進(jìn)行服務(wù)。對(duì)硬盤(pán)驅(qū)動(dòng)器中的命令隊(duì)列中存儲(chǔ)的命令重 新排序的能力可導(dǎo)致平均訪問(wèn)時(shí)間的減少。一對(duì)單向邏輯管道與大容量存儲(chǔ)類USB設(shè)備相關(guān)聯(lián),即輸出邏輯管道以及輸入邏 輯管道。SCSI命令和寫(xiě)數(shù)據(jù)在輸出邏輯管道上從主機(jī)被發(fā)送至設(shè)備,而SCSI完成狀態(tài)和讀 取數(shù)據(jù)在輸入邏輯管道上從設(shè)備被發(fā)送至主機(jī)。每個(gè)邏輯管道與主控制器中的存儲(chǔ)器中的單個(gè)邏輯緩沖器相關(guān)聯(lián)。因此,USB主 機(jī)可能每次僅向硬盤(pán)驅(qū)動(dòng)器發(fā)出單個(gè)命令。因?yàn)槊看蝺H有一個(gè)命令未完成,所以不能在該硬盤(pán)驅(qū)動(dòng)器中使用存儲(chǔ)協(xié)議所支持的命令排隊(duì)和/或無(wú)序命令功能。在本發(fā)明的實(shí)施例中,主機(jī)計(jì)算機(jī)中的USB主控制器支持對(duì)每個(gè)邏輯管道的多個(gè) 邏輯緩沖器的管理,以允許可在USB物理總線上訪問(wèn)的大容量存儲(chǔ)類USB設(shè)備中的大容量 存儲(chǔ)設(shè)備命令排隊(duì)和/或無(wú)序命令處理。圖1是根據(jù)本發(fā)明原理的包括USB主機(jī)102和大容量存儲(chǔ)類USB設(shè)備104的系統(tǒng) 100的實(shí)施例的框圖,該系統(tǒng)100為該大容量存儲(chǔ)類USB設(shè)備104中的命令排隊(duì)和/或無(wú)序 命令處理提供支持。USB主機(jī)102包括USB主控制器106、USB系統(tǒng)108以及客戶機(jī)110。該USB設(shè)備 104包括USB總線接口 112、USB邏輯設(shè)備114和功能116。USB邏輯設(shè)備114包括一個(gè)或 多個(gè)USB端點(diǎn)。在一個(gè)實(shí)施例中,該USB設(shè)備104是大容量存儲(chǔ)類USB設(shè)備,例如盤(pán)驅(qū)動(dòng)器、數(shù)字 視頻盤(pán)(DVD)驅(qū)動(dòng)器、緊致盤(pán)(⑶)驅(qū)動(dòng)器、冗余獨(dú)立磁盤(pán)陣列(RAID)、帶驅(qū)動(dòng)器或其它大容 量存儲(chǔ)類存儲(chǔ)設(shè)備。USB主機(jī)102在USB物理總線1 上經(jīng)由也稱為管道束124的一組通信流(邏輯 管道)中的一個(gè)管道與USB設(shè)備104中的USB邏輯設(shè)備114通信。如之前所討論地,邏輯 管道是USB主機(jī)與USB設(shè)備中的端點(diǎn)之間的邏輯抽象,用于在USB主機(jī)與USB設(shè)備之間交 換數(shù)據(jù)和控制分組。USB物理總線1 上的通信的基本要素是包括開(kāi)頭、信息和結(jié)尾的USB分組。該分 組信息可包括1到1025個(gè)字節(jié),其中第一個(gè)字節(jié)存儲(chǔ)分組標(biāo)識(shí)符。存在通過(guò)該分組標(biāo)識(shí)符 所標(biāo)識(shí)的四種分組類別令牌、數(shù)據(jù)、握手以及特殊。令牌分組被用于建立通過(guò)握手分組確 認(rèn)的數(shù)據(jù)分組。握手分組指示數(shù)據(jù)事務(wù)的狀態(tài)。握手分組類型包括指示令牌或數(shù)據(jù)分組的 成功接收的ACK和指示接收器因?yàn)槔缃邮掌髅驔](méi)有處理該分組的資源而無(wú)法接受該 分組的NACK。USB邏輯設(shè)備114具有多個(gè)獨(dú)立端點(diǎn)。USB邏輯設(shè)備114中的端點(diǎn)是USB主機(jī)102 與USB設(shè)備104之間的通信流的終點(diǎn)。每個(gè)終點(diǎn)可具有一個(gè)數(shù)據(jù)流方向(即從設(shè)備到主機(jī) 的輸入或從主機(jī)到設(shè)備的輸出)。USB管道(邏輯管道)126是USB設(shè)備上的端點(diǎn)與USB主 機(jī)102中的客戶機(jī)110之間的關(guān)聯(lián)。邏輯管道1 表示在USB主機(jī)102中的客戶機(jī)110中 的緩沖器與USB設(shè)備104中的端點(diǎn)之間移動(dòng)數(shù)據(jù)的能力。USB主機(jī)102中的客戶機(jī)110包括存儲(chǔ)器,該存儲(chǔ)器的一部分被分配給每個(gè)端點(diǎn)以 提供用于存儲(chǔ)將傳輸至(移至或移出)USB設(shè)備104的數(shù)據(jù)的邏輯緩沖器。在邏輯緩沖器 與關(guān)聯(lián)于管道124的USB端點(diǎn)之間存在1 1映射。如圖1所示,系統(tǒng)100所執(zhí)行的功能可被分成多個(gè)層USB總線接口層122、USB設(shè) 備層120以及USB功能層118。該USB總線接口層122提供USB主機(jī)102與USB設(shè)備104之間的物理連接性。USB 設(shè)備層120執(zhí)行通用USB操作。該USB功能層118為USB主機(jī)102和USB設(shè)備104提供附 加功能。在功能層118處,USB在USB主機(jī)102中的客戶機(jī)110與USB設(shè)備104中的功能 116之間提供通信服務(wù)。客戶機(jī)110請(qǐng)求跨USB在該組邏輯管道(“管道束”)124中的一 個(gè)管道上移動(dòng)數(shù)據(jù)。數(shù)據(jù)由接口層122在物理USB總線1 上物理地傳輸。
6
在接口層122處,取決于傳輸方向,主控制器106或USB總線接口 112在跨USB物 理總線1 發(fā)送數(shù)據(jù)之前將其分組化。在本發(fā)明的實(shí)施例中,在邏輯層118,具有四個(gè)邏輯管道126的管道束IM被USB 設(shè)備104定義為在客戶機(jī)110與USB設(shè)備104中的功能114之間移動(dòng)SCSI命令、數(shù)據(jù)以及 狀態(tài)。管道束124中的每個(gè)邏輯管道被配置為“批量傳輸”型管道(批量管道),即能使 用任何可用帶寬的支持在可變時(shí)刻傳輸大量數(shù)據(jù)的管道。批量管道是單向流管道(輸入或 輸出)。標(biāo)準(zhǔn)的批量管道在USB 2. 0標(biāo)準(zhǔn)中有描述。流式批量管道將在稍后結(jié)合圖3進(jìn)行 描述。流式批量管道提供利用允許用于大容量存儲(chǔ)設(shè)備命令排隊(duì)的無(wú)序數(shù)據(jù)傳輸?shù)牧鲄f(xié)議 在主機(jī)與設(shè)備之間移動(dòng)數(shù)據(jù)流的能力。管道束IM中的四個(gè)邏輯管道1 如下定義(1)客戶機(jī)與標(biāo)準(zhǔn)大容量輸出端點(diǎn) 之間的邏輯管道,用于向大容量存儲(chǔ)類USB設(shè)備104發(fā)送命令;( 客戶機(jī)與流批量輸入端 點(diǎn)之間的邏輯管道,用于與從大容量存儲(chǔ)類USB設(shè)備104到USB主機(jī)102的讀命令相關(guān)聯(lián) 的數(shù)據(jù)傳輸;C3)客戶機(jī)與流批量輸出端點(diǎn)之間的邏輯管道,用于與從USB主機(jī)到大容量存 儲(chǔ)類USB設(shè)備的寫(xiě)命令相關(guān)聯(lián)的數(shù)據(jù)傳輸;以及(4)客戶機(jī)110與流批量輸入端點(diǎn)之間的 邏輯管道,用于與命令完成相關(guān)聯(lián)的傳輸。在一個(gè)實(shí)施例中,與命令完成相關(guān)聯(lián)的邏輯管道 是標(biāo)準(zhǔn)批量輸入管道。圖2是圖1中所示的管道束124中的標(biāo)準(zhǔn)批量管道200的客戶機(jī)110側(cè)的框圖。 設(shè)備104在主機(jī)102中見(jiàn)到單個(gè)邏輯緩沖器。緩沖器列表204允許邏輯緩沖器被定義為多 個(gè)物理緩沖器206。該標(biāo)準(zhǔn)批量管道200包括端點(diǎn)202,該端點(diǎn)202包括緩沖器列表204,該 緩沖器列表204在主機(jī)102中的存儲(chǔ)器中定義一組緩沖器206,在USB物理總線1 上傳輸 的數(shù)據(jù)被移入或移出該組緩沖器206。標(biāo)準(zhǔn)批量管道200被用于從USB主機(jī)102中的客戶 機(jī)110中的緩沖器列表204中的一個(gè)或多個(gè)緩沖器206向USB設(shè)備104中的標(biāo)準(zhǔn)端點(diǎn)202 傳輸數(shù)據(jù),或從USB設(shè)備104中的標(biāo)準(zhǔn)端點(diǎn)202向USB主機(jī)102中的客戶機(jī)110中的緩沖 器列表204中的一個(gè)或多個(gè)緩沖器206傳輸數(shù)據(jù)(即在它們之間傳輸數(shù)據(jù))。緩沖器列表 204提供指向被分配給標(biāo)準(zhǔn)批量管道200的每個(gè)緩沖器206的指針。存儲(chǔ)于由緩沖器列表 204引用的緩沖器206中的數(shù)據(jù)被按順序傳輸。標(biāo)準(zhǔn)批量管道200的傳輸方向被初始化為 輸入或輸出,且標(biāo)準(zhǔn)批量管道200使用緩沖器列表204在相應(yīng)方向上(即輸入或輸出)按 順序向/從主機(jī)102中的存儲(chǔ)器中的緩沖器206傳輸數(shù)據(jù)。在一個(gè)實(shí)施例中,標(biāo)準(zhǔn)批量管 道200被用于向大容量存儲(chǔ)類USB設(shè)備104傳輸SCSI命令。在另一個(gè)實(shí)施例中,標(biāo)準(zhǔn)批量 管道200被用于向大容量存儲(chǔ)類USB設(shè)備104傳輸高級(jí)技術(shù)附件(ATA)命令。在本發(fā)明的實(shí)施例中,除了為每個(gè)USB端點(diǎn)定義單個(gè)緩沖器列表204的標(biāo)準(zhǔn)批量 管道之外,可在USB設(shè)備104與USB主機(jī)102之間定義流式批量管道來(lái)為每個(gè)USB端點(diǎn)定 義多個(gè)緩沖器列表,這樣在USB設(shè)備104中實(shí)現(xiàn)無(wú)序命令處理。圖3是根據(jù)本發(fā)明的原理的流式批量管道300的實(shí)施例的框圖。該流式批量管道300包括流數(shù)組304和流端點(diǎn)302。該流數(shù)組304包括與流端點(diǎn) 302相關(guān)聯(lián)的一組緩沖器列表204。流定義USB數(shù)據(jù)傳輸與流數(shù)組304中的緩沖器列表204 之間的關(guān)聯(lián),且具有相關(guān)聯(lián)的流標(biāo)識(shí)符。參照?qǐng)D2,標(biāo)準(zhǔn)批量管道200與主機(jī)102中的存儲(chǔ)器中的單個(gè)緩沖器列表204相關(guān)聯(lián),即在標(biāo)準(zhǔn)批量管道200上傳輸?shù)乃袛?shù)據(jù)被移至或移出一組存儲(chǔ)器緩沖器。參照?qǐng)D3,與圖2所示的標(biāo)準(zhǔn)批量管道200對(duì)比,與流式批量管道300相關(guān)聯(lián)的流 數(shù)組304允許多個(gè)存儲(chǔ)器緩沖器列表204與單個(gè)流端點(diǎn)302相關(guān)聯(lián),從而允許USB設(shè)備將 數(shù)據(jù)路由至特定存儲(chǔ)器緩沖器列表204或從特定存儲(chǔ)器緩沖器列表204路由數(shù)據(jù)。流數(shù)組304中的每個(gè)緩沖器列表204通過(guò)唯一的流標(biāo)識(shí)符來(lái)標(biāo)識(shí)。該流標(biāo)識(shí)符允 許多個(gè)USB主機(jī)進(jìn)程訪問(wèn)同一 USB端點(diǎn),還允許主機(jī)102中的主控制器106和設(shè)備104中 的流端點(diǎn)114在它們各自的地址空間之間直接傳輸數(shù)據(jù)(端點(diǎn)至主機(jī)緩沖器或主機(jī)緩沖器 至端點(diǎn))O該流標(biāo)識(shí)符可存儲(chǔ)在USB分組頭部中的流標(biāo)識(shí)符SID)字段中,以區(qū)分與該USB分 組相關(guān)聯(lián)的流。該流標(biāo)識(shí)符還可用作用于從流數(shù)組304選擇一個(gè)緩沖器列表204的流數(shù)組 304的索引。流數(shù)組304中的一個(gè)條目針對(duì)流端點(diǎn)304所支持的每個(gè)流而設(shè)置。通過(guò)使用流管道和關(guān)聯(lián)的流標(biāo)識(shí)符,USB設(shè)備104能對(duì)命令有效地進(jìn)行重新排序, 因?yàn)閁SB設(shè)備能基于要傳輸出或傳輸入的特定流標(biāo)識(shí)符選擇與流端點(diǎn)相關(guān)聯(lián)的多個(gè)緩沖 器列表中的一個(gè)列表。在一實(shí)施例中,主機(jī)102和設(shè)備104兩者包括用于管理流管道中的 流端點(diǎn)的流協(xié)議狀態(tài)機(jī)(SPSM)。將結(jié)合圖4討論該流協(xié)議狀態(tài)機(jī)。圖4是示出為流式批量管道300服務(wù)的輸入或輸出流端點(diǎn)流的流協(xié)議狀態(tài)機(jī)400 的一實(shí)施例的狀態(tài)圖。如下文所討論地,輸入數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸方向是去往主機(jī)的,即主 機(jī)102中的存儲(chǔ)器中的物理緩沖器從設(shè)備104接收功能數(shù)據(jù),而輸出數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸 方向是從主機(jī)102發(fā)出。如之前所討論地,在主機(jī)102與設(shè)備104中的流端點(diǎn)之間傳輸?shù)臄?shù)據(jù)分組包括該 分組的頭部中的流標(biāo)識(shí)符字段,用于標(biāo)識(shí)與數(shù)據(jù)傳輸相關(guān)聯(lián)的流。此外,事務(wù)分組被定義 為在主機(jī)102與設(shè)備104之間傳遞流標(biāo)識(shí)符。在一個(gè)實(shí)施例中,提供了四種分組類型DP、 ACK、NRDY以及ERDY。對(duì)于輸入管道,主機(jī)產(chǎn)生ACK分組,且設(shè)備產(chǎn)生DP分組。對(duì)于輸出管 道,主機(jī)產(chǎn)生DP分組,且設(shè)備產(chǎn)生ACK分組。取決于該管道是輸入管道還是輸出管道,“主 機(jī)事務(wù)分組”分別指的是ACK或DP分組。取決于該管道是輸入管道還是輸出管道,“設(shè)備事 務(wù)分組”分別指的是DP或ACK分組?!癠SB分組”是任何分組類型的概括引用。如圖4所示,該狀態(tài)機(jī)具有如下標(biāo)記的五種狀態(tài)禁用、首要管道、空閑、開(kāi)始流以 及移動(dòng)數(shù)據(jù)。禁用狀態(tài)是流協(xié)議狀態(tài)機(jī)在設(shè)備104中的流端點(diǎn)已被主機(jī)102配置之后的初 始狀態(tài)。向另一狀態(tài)的轉(zhuǎn)換可由主機(jī)102或設(shè)備104通過(guò)使用USB分組來(lái)發(fā)起。首要管道狀態(tài)由主機(jī)102發(fā)起,以通知設(shè)備104緩沖器列表204已由主機(jī)102添 加或修改。在將緩沖器列表204遞送至流端點(diǎn)302之后,主機(jī)102發(fā)送主機(jī)事務(wù)分組,這導(dǎo) 致流協(xié)議狀態(tài)機(jī)400轉(zhuǎn)換至首要管道狀態(tài)。設(shè)備104以NRDY分組作出響應(yīng),這導(dǎo)致向空閑 狀態(tài)的轉(zhuǎn)換。當(dāng)流協(xié)議狀態(tài)機(jī)400處于空閑狀態(tài)時(shí),并未選擇流標(biāo)識(shí)符。在該空閑狀態(tài)下,流協(xié) 議狀態(tài)機(jī)400等待主機(jī)發(fā)起的向首要管道狀態(tài)或移動(dòng)數(shù)據(jù)狀態(tài)的轉(zhuǎn)換,或等待設(shè)備發(fā)起的 向開(kāi)始流狀態(tài)的轉(zhuǎn)換。如之前所討論地,主機(jī)發(fā)起和設(shè)備發(fā)起的轉(zhuǎn)換通過(guò)使用源自主機(jī)102 或設(shè)備104的事務(wù)分組來(lái)實(shí)現(xiàn)。主機(jī)和設(shè)備發(fā)起的轉(zhuǎn)換提供當(dāng)前流標(biāo)識(shí)符,以使流管道能 開(kāi)始向/從與流標(biāo)識(shí)符關(guān)聯(lián)的主機(jī)102中的存儲(chǔ)器中的物理緩沖器206移動(dòng)數(shù)據(jù)。當(dāng)前流 標(biāo)識(shí)符用于標(biāo)識(shí)主機(jī)用來(lái)移動(dòng)數(shù)據(jù)的緩沖器列表。因此,當(dāng)前流標(biāo)識(shí)符可由主機(jī)或設(shè)備取決于數(shù)據(jù)傳輸是由主機(jī)還是設(shè)備發(fā)起的來(lái)選擇。當(dāng)在空閑狀態(tài)下時(shí),設(shè)備104可發(fā)出ERDY分組,以使流協(xié)議狀態(tài)機(jī)轉(zhuǎn)換至開(kāi)始流 狀態(tài)。在ERDY分組中傳遞至主機(jī)的流標(biāo)識(shí)符由主機(jī)用于發(fā)起向/從與流標(biāo)識(shí)符相關(guān)聯(lián)的 緩沖器206的數(shù)據(jù)傳輸(輸入或輸出)。如果存在流標(biāo)識(shí)符的有效緩沖器列表204,則主機(jī) 102發(fā)起數(shù)據(jù)傳輸,且流協(xié)議狀態(tài)機(jī)400轉(zhuǎn)換至移動(dòng)數(shù)據(jù)狀態(tài)。如果不存在流標(biāo)識(shí)符的有效 緩沖器列表,則主機(jī)102向設(shè)備104發(fā)送事務(wù)分組,以指示數(shù)據(jù)傳輸已被拒絕,且流協(xié)議狀 態(tài)機(jī)返回至空閑狀態(tài)。如果設(shè)備104準(zhǔn)備好傳輸該流標(biāo)識(shí)符的數(shù)據(jù),則設(shè)備104用事務(wù)分 組確認(rèn)傳輸,且流協(xié)議狀態(tài)機(jī)400轉(zhuǎn)換至移動(dòng)數(shù)據(jù)狀態(tài)。在移動(dòng)數(shù)據(jù)狀態(tài)下,傳輸繼續(xù)直到 主機(jī)102用盡與該流標(biāo)識(shí)符相關(guān)聯(lián)的緩沖器列表204,或設(shè)備104完成與該流標(biāo)識(shí)符相關(guān)聯(lián) 的數(shù)據(jù)傳輸。在任一情況下,流協(xié)議狀態(tài)機(jī)400轉(zhuǎn)換至空閑狀態(tài)。與導(dǎo)致從空閑狀態(tài)轉(zhuǎn)換至移動(dòng)數(shù)據(jù)狀態(tài)的主機(jī)發(fā)起的數(shù)據(jù)傳輸對(duì)比,開(kāi)始流狀態(tài) 由設(shè)備104發(fā)起,以選擇流(與流端點(diǎn)相關(guān)聯(lián)的緩沖器列表)并開(kāi)始流傳輸。如果設(shè)備所選 擇的流被主機(jī)接受,則流協(xié)議狀態(tài)機(jī)轉(zhuǎn)換至移動(dòng)數(shù)據(jù)狀態(tài)以傳輸當(dāng)前流標(biāo)識(shí)符的數(shù)據(jù)。如 果設(shè)備所選擇的流被主機(jī)102拒絕,則流協(xié)議狀態(tài)機(jī)400返回至空閑狀態(tài)。在移動(dòng)數(shù)據(jù)狀態(tài)下,與設(shè)備104中的流端點(diǎn)302相關(guān)聯(lián)的特定流的數(shù)據(jù)在主機(jī)102 與設(shè)備104之間傳輸。用于選擇數(shù)據(jù)被移動(dòng)的流的當(dāng)前流標(biāo)識(shí)符由主機(jī)102和設(shè)備104 二 者保持。有效流標(biāo)識(shí)符值由主機(jī)102編碼并傳遞至設(shè)備104。這些值可通過(guò)帶外的設(shè)備類 別定義的方法被傳遞至主機(jī)。例如,利用在分配用于將SCSI命令發(fā)送至大容量存儲(chǔ)類設(shè)備 104的管道束124中的邏輯批量管道上發(fā)送的SCSI命令,有效的流標(biāo)識(shí)符值被傳遞至設(shè)備 104。這些值是帶外的,因?yàn)樗鼈儾辉诹魇脚抗艿郎蟼鬟f至該設(shè)備。在其它實(shí)施例中,流 標(biāo)識(shí)符可在輸出流式批量管道上被傳遞至該設(shè)備。該數(shù)據(jù)被傳輸至與流標(biāo)識(shí)符相關(guān)聯(lián)的緩沖器206。使用流標(biāo)識(shí)符允許以任何順序 傳輸流的數(shù)據(jù),因?yàn)槊總€(gè)流標(biāo)識(shí)符分配有單獨(dú)的緩沖器列表204。因此,可給兩個(gè)進(jìn)程A和 B各分配唯一的流標(biāo)識(shí)符,從而允許每個(gè)進(jìn)程的命令無(wú)序地完成。在移動(dòng)數(shù)據(jù)狀態(tài)下,與當(dāng)前選擇的流相關(guān)聯(lián)的數(shù)據(jù)被傳輸入或傳輸出。如果移動(dòng) 數(shù)據(jù)狀態(tài)通過(guò)主機(jī)發(fā)起的流選擇進(jìn)入,則該流由主機(jī)102選擇。如果該移動(dòng)狀態(tài)從開(kāi)始流 狀態(tài)進(jìn)入,則該流由設(shè)備104選擇。流協(xié)議狀態(tài)機(jī)400在該流的數(shù)據(jù)傳輸完成之后轉(zhuǎn)換回 空閑狀態(tài),或在主機(jī)102或設(shè)備104終止該流的數(shù)據(jù)傳輸時(shí)轉(zhuǎn)換回空閑狀態(tài)。向空閑狀態(tài) 的轉(zhuǎn)換使流式批量管道上的選擇用于數(shù)據(jù)傳輸?shù)牧鳠o(wú)效。流由存儲(chǔ)在流標(biāo)識(shí)符字段中的流標(biāo)識(shí)符值選擇。該流標(biāo)識(shí)符字段可被包括在數(shù)據(jù) 分組或帶內(nèi)控制分組中。例如,該流標(biāo)識(shí)符可被存儲(chǔ)在當(dāng)前未由USB 3.0協(xié)議使用的分組 頭部或擴(kuò)展事務(wù)格式USB 2.0分組中的字段(一個(gè)或多個(gè)比特)中。在一個(gè)實(shí)施例中,流 標(biāo)識(shí)符值與SCSI命令相關(guān)聯(lián)。發(fā)送至該設(shè)備的每個(gè)SCSI命令包括流標(biāo)識(shí)符,且該設(shè)備104 使用該流標(biāo)識(shí)符來(lái)標(biāo)識(shí)移入/移出與SCSI命令相關(guān)聯(lián)的主機(jī)102的數(shù)據(jù)分組和狀態(tài)分組。 在用于ATA存儲(chǔ)協(xié)議的實(shí)施例中,流標(biāo)識(shí)符與ATA命令相關(guān)聯(lián)。該流標(biāo)識(shí)符的保留值可指示該流標(biāo)識(shí)符無(wú)效,例如,首要標(biāo)識(shí)符被保留用于轉(zhuǎn)換 入和轉(zhuǎn)換出首要管道狀態(tài),或無(wú)流標(biāo)識(shí)符指示主機(jī)對(duì)設(shè)備發(fā)起的流選擇的拒絕。流協(xié)議狀態(tài)機(jī)400可在任何另一狀態(tài)中檢測(cè)到錯(cuò)誤時(shí)轉(zhuǎn)換至禁用狀態(tài)。該錯(cuò)誤狀 況可在轉(zhuǎn)換至另一狀態(tài)之前在禁用狀態(tài)中進(jìn)行處理。
圖5是包括經(jīng)由包括流管道的管道束IM通信的USB主機(jī)102和大容量存儲(chǔ)類 USB設(shè)備104的系統(tǒng)500的實(shí)施例的框圖,該系統(tǒng)500為該大容量存儲(chǔ)類USB設(shè)備104中的 命令排隊(duì)和/或無(wú)序命令處理提供支持。管道束IM包括在客戶機(jī)102與標(biāo)準(zhǔn)大容量輸出端點(diǎn)510之間的用于向大容量存 儲(chǔ)類USB設(shè)備104發(fā)送命令的標(biāo)準(zhǔn)批量管道(“命令輸出”)508。管道束IM還包括在客 戶機(jī)102與流式批量輸入端點(diǎn)512之間的第一流式批量管道(“數(shù)據(jù)輸入”)506-1,用于從 大容量存儲(chǔ)類USB設(shè)備向主機(jī)102傳輸與讀命令相關(guān)聯(lián)的數(shù)據(jù);在主機(jī)102與流式批量輸 出端點(diǎn)514之間的第二流式批量管道(“數(shù)據(jù)輸出”)506-2,用于從USB主機(jī)102向大容量 存儲(chǔ)類USB設(shè)備104傳輸與寫(xiě)命令相關(guān)聯(lián)的數(shù)據(jù)。管道束IM還包括在主機(jī)102與流式批 量輸入端點(diǎn)516之間的第三流式批量管道(“狀態(tài)輸入”)506-3,用于傳輸與命令完成相關(guān) 聯(lián)的響應(yīng)數(shù)據(jù)。各個(gè)流式批量管道506-1、506-2、506-3中的每一個(gè)具有在主機(jī)102中的存 儲(chǔ)器中的相應(yīng)流數(shù)組520-1、520-2以及520-3。一從主機(jī)進(jìn)程接收到讀取大容量存儲(chǔ)類USB設(shè)備104中存儲(chǔ)的數(shù)據(jù)的命令(例如 SCSI命令或ATA命令),主機(jī)102就向該命令分配流標(biāo)識(shí)符。該流標(biāo)識(shí)符用于標(biāo)識(shí)命令、以 及在主機(jī)102中的存儲(chǔ)器中為該命令分配的響應(yīng)(例如SCSI狀態(tài))和數(shù)據(jù)緩沖器。該命 令被存儲(chǔ)于與標(biāo)準(zhǔn)批量管道508相關(guān)聯(lián)的緩沖器列表518中的緩沖器中,該管道508被分 配用于將命令從主機(jī)102邏輯地傳輸至大容量存儲(chǔ)類USB設(shè)備104。取決于命令類型(即該命令是否導(dǎo)致數(shù)據(jù)傳入或傳出大容量存儲(chǔ)類USB設(shè)備 104),為與用于數(shù)據(jù)傳輸?shù)牧魇脚抗艿老嚓P(guān)聯(lián)的流數(shù)組520-1、520-2中的一個(gè)數(shù)組中的 命令分配關(guān)聯(lián)于與該流標(biāo)識(shí)符相對(duì)應(yīng)的條目的緩沖器列表。還為該命令分配與用于響應(yīng)的 流式批量管道506-3相關(guān)聯(lián)的流數(shù)組520-3中的條目。大容量存儲(chǔ)類USB設(shè)備104可將從主機(jī)102接收的命令排隊(duì),并可按照任何順序 處理所排隊(duì)的命令。當(dāng)大容量存儲(chǔ)類USB設(shè)備104準(zhǔn)備好在流式批量管道(“數(shù)據(jù)輸入,數(shù) 據(jù)輸出”)506-1、506-2中的一個(gè)上進(jìn)行數(shù)據(jù)傳輸(輸入或輸出)時(shí),該數(shù)據(jù)被傳入/傳出 基于特定命令所提供的流標(biāo)識(shí)符而為該特定命令分配的流數(shù)組中的數(shù)據(jù)緩沖器列表中的 數(shù)據(jù)緩沖器。流標(biāo)識(shí)符和流數(shù)組520-1、520-2、520_3的使用允許多個(gè)主機(jī)軟件進(jìn)程在同一流 式大容量端點(diǎn)中將命令排隊(duì),還允許主機(jī)102中的主機(jī)控制器106和設(shè)備104中的端點(diǎn)利 用它們各自地址空間之間的直接存儲(chǔ)器存取(DMA)來(lái)傳輸數(shù)據(jù)。此外,設(shè)備可發(fā)起用于數(shù) 據(jù)傳輸?shù)闹鳈C(jī)DMA操作而無(wú)需任何主機(jī)介入。例如,該設(shè)備可通過(guò)將具有流標(biāo)識(shí)符的事務(wù) 分組發(fā)送至主機(jī)來(lái)選擇DMA上下文(即緩沖器列表),以將狀態(tài)改變至開(kāi)始流狀態(tài)。該流標(biāo) 識(shí)符指定數(shù)據(jù)將被傳入/傳出主機(jī)中的位置?;谠摿鳂?biāo)識(shí)符值,主機(jī)控制器106將該流 數(shù)組中的適當(dāng)?shù)木彌_器列表指針(地址)裝載到主機(jī)中的DMA控制器中,從而DMA傳輸進(jìn) 行而無(wú)需任何處理器介入。該機(jī)制提供USB設(shè)備能有效地重新排序命令的手段,因?yàn)樗?基于流標(biāo)識(shí)符選擇將數(shù)據(jù)傳入主機(jī)中的特定緩沖器。例如,在用于支持ATA或SATA存儲(chǔ)協(xié) 議的大容量存儲(chǔ)類設(shè)備的實(shí)施例中,流標(biāo)識(shí)符提供對(duì)第一方直接存儲(chǔ)器存取(FPDMA)的支 持以允許該設(shè)備在該設(shè)備與主機(jī)中的緩沖器之間直接傳輸數(shù)據(jù)。除了允許支持大容量存儲(chǔ)類USB設(shè)備104中的命令排隊(duì)之外,流標(biāo)識(shí)符的使用還 允許具有多個(gè)芯的系統(tǒng)中的特定芯被選擇,用于處理該命令的完成。
本領(lǐng)域技術(shù)人員已知的各種主機(jī)和設(shè)備流服務(wù)算法可被用于選擇要服務(wù)的下一 流。這些方案超出了本發(fā)明的范圍。圖6是示出在該設(shè)備中實(shí)現(xiàn)的用于在設(shè)備104與主機(jī)102之間的邏輯管道上傳輸 數(shù)據(jù)的方法的實(shí)施例的流程圖。該數(shù)據(jù)傳輸可以在輸入管道或輸出管道上進(jìn)行。在輸入管 道中,主機(jī)中的端點(diǎn)緩沖器206從該設(shè)備接收數(shù)據(jù)。在輸出管道中,主機(jī)中的端點(diǎn)緩沖器 206存儲(chǔ)要傳輸至該設(shè)備的數(shù)據(jù)。在框600,設(shè)備104等待初始端點(diǎn)緩沖器由主機(jī)104中針對(duì)邏輯管道進(jìn)行配置(分 配)。在配置端點(diǎn)緩沖器之后,主機(jī)向設(shè)備104發(fā)出事務(wù)分組,且該主機(jī)事務(wù)分組中的流標(biāo) 識(shí)符被設(shè)置為“首要”以通知目標(biāo)已分配到端點(diǎn)緩沖器。在端點(diǎn)緩沖器由主機(jī)102第一次 分配給管道時(shí)發(fā)出“首要”主機(jī)事務(wù)分組。一接收到“首要”主機(jī)事務(wù)分組,處理繼續(xù)至框 602。在框602,響應(yīng)于接收指示端點(diǎn)緩沖器已由主機(jī)102分配的“首要”主機(jī)事務(wù)分組, 設(shè)備104向主機(jī)發(fā)送NRDY分組,其中流標(biāo)識(shí)符被設(shè)置為“首要”,表明它已記錄主機(jī)具有準(zhǔn) 備好傳輸數(shù)據(jù)的流。處理繼續(xù)至框604。在框604,如果設(shè)備104具有準(zhǔn)備好傳輸數(shù)據(jù)的流,則該設(shè)備104可提出流選擇,主 機(jī)102可為該流選擇發(fā)起數(shù)據(jù)傳輸。如果該流選擇由設(shè)備104發(fā)起,則處理繼續(xù)至框606。 如果不是,則處理繼續(xù)至框605。在框605,傳輸數(shù)據(jù)的流選擇可由主機(jī)102發(fā)起。為發(fā)起流選擇,主機(jī)102向設(shè)備 104發(fā)出主機(jī)事務(wù)分組,且流標(biāo)識(shí)符被設(shè)置為“流η”。如果分配到的端點(diǎn)緩沖器用于最后提 出的流標(biāo)識(shí)符,則主機(jī)102可發(fā)起流選擇,以例如恢復(fù)需要由主機(jī)102分配附加端點(diǎn)緩沖器 的流標(biāo)識(shí)符的數(shù)據(jù)傳輸。如果該流選擇由主機(jī)102發(fā)起,則處理繼續(xù)至框607。如果不是, 則處理繼續(xù)至框602。在框606,設(shè)備104請(qǐng)求其開(kāi)始向主機(jī)的流傳輸,或主機(jī)102開(kāi)始向設(shè)備的流傳輸。 為了請(qǐng)求流傳輸,設(shè)備104向主機(jī)發(fā)出ERDY分組,其中流標(biāo)識(shí)符被設(shè)置為“流η”(有效流) 且流編號(hào)大于0。處理繼續(xù)至框608。在框607,設(shè)備104確定主機(jī)所提出的流是否準(zhǔn)備好傳輸數(shù)據(jù)。如果該流就緒,則 處理繼續(xù)至框610。如果不是,則處理繼續(xù)至框602。在框608,設(shè)備104等待主機(jī)102接受或拒絕該設(shè)備所提出的流選擇。其流標(biāo)識(shí) 符被設(shè)置為“流η”的主機(jī)事務(wù)分組表明主機(jī)102已經(jīng)接受所提出的流。如果該流被接受, 則處理繼續(xù)至框610。如果該流未被接受,則設(shè)備104接收其中流標(biāo)識(shí)符字段被設(shè)置為“無(wú) 流”的主機(jī)事務(wù)分組。在一個(gè)實(shí)施例中,如果沒(méi)有端點(diǎn)緩沖器可用于設(shè)備選擇的流標(biāo)識(shí)符,則主機(jī)102 拒絕設(shè)備104的流選擇。主機(jī)102可在分配用于流標(biāo)識(shí)符的端點(diǎn)緩沖器之后發(fā)起之前提出 的流選擇。如果該流選擇被主機(jī)拒絕,則處理繼續(xù)至框602。在框610,在主機(jī)端和設(shè)備端上均設(shè)置該流標(biāo)識(shí)符,且數(shù)據(jù)從該設(shè)備移至主機(jī)上針 對(duì)該管道為該流分配的端點(diǎn)緩沖器,或從端點(diǎn)緩沖器移至該設(shè)備。當(dāng)端點(diǎn)緩沖器可用于主 機(jī)中的流時(shí)數(shù)據(jù)被移動(dòng),且設(shè)備具有要移動(dòng)至該主機(jī)的該流的數(shù)據(jù),或主機(jī)具有要移動(dòng)至 該設(shè)備的該流的數(shù)據(jù)?!翱臻e”循環(huán)由框602、604和605組成。在該循環(huán)中,設(shè)備檢查首要管道轉(zhuǎn)換602、
11設(shè)備發(fā)起傳輸605或主機(jī)發(fā)起傳輸605。圖7是包括USB主機(jī)710和USB設(shè)備104的系統(tǒng)的框圖,該系統(tǒng)提供對(duì)USB設(shè)備 104中的命令排隊(duì)和/或無(wú)序命令處理的支持。該USB設(shè)備104包括USB接口 730、存儲(chǔ)協(xié) 議功能732和存儲(chǔ)介質(zhì)734。在一個(gè)實(shí)施例中,存儲(chǔ)協(xié)議功能732執(zhí)行SATA協(xié)議相關(guān)存儲(chǔ) 功能。在另一個(gè)實(shí)施例中,存儲(chǔ)協(xié)議功能732執(zhí)行SCSI協(xié)議相關(guān)功能。存儲(chǔ)介質(zhì)734包括 用于存儲(chǔ)數(shù)據(jù)的一個(gè)或多個(gè)盤(pán)片(存儲(chǔ)介質(zhì))。系統(tǒng)700包括處理器701、存儲(chǔ)器控制器中樞(MCH) 702以及輸入/輸出(I/O)控 制器中樞(ICH)704。該MCH 702包括控制處理器701與存儲(chǔ)器708之間的通信的存儲(chǔ)器控 制器706。處理器701和MCH 702在系統(tǒng)總線716上通信。在替代實(shí)施例中,MCH 702中的 功能可被集成到處理器701中,且處理器701可直接耦合到ICH 704。處理器701可以是多種處理器中的任一種,諸如單核htel Pentium IV 處理 器、單核 htel Celeron 處理器 Jntel Xkale 處理器或諸如 htel Pentium DJntel Xeon 處理器、Intel Core Duo處理器或任何其它類型的處理器。處理器708可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、 同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)、雙倍數(shù)據(jù)率2(DDR2)RAM、Rambus動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 (RDRAM)或任何其它類型的存儲(chǔ)器。ICH 704可利用諸如直接介質(zhì)接口(DMI)的高速芯片-芯片互連714或任何其它 類型的芯片-芯片接口耦合至MCH 702。DMI支持經(jīng)由兩個(gè)單向道的2吉比特/秒的并發(fā) 傳輸速率。ICH 704可包括用于控制與耦合至ICH 704的至少一個(gè)USB大容量存儲(chǔ)類USB設(shè) 備712通信的通用串行總線(USB)主控制器710。ICH 704可利用諸如小型計(jì)算機(jī)系統(tǒng)接 口(SCSI)或ATA的存儲(chǔ)協(xié)議通過(guò)將SCSI/ΑΤΑ命令、數(shù)據(jù)以及SCSI/ΑΤΑ狀態(tài)封裝于USB封 裝中在USB物理總線718上與USB大容量存儲(chǔ)類USB設(shè)備712通信。已經(jīng)針對(duì)通用串行總線描述了本發(fā)明的實(shí)施例。然而,本發(fā)明不限于通用串行總 線;本發(fā)明的實(shí)施例可供支持命令排隊(duì)和無(wú)序完成的任何總線協(xié)議或支持從設(shè)備發(fā)起的主 機(jī)緩沖器列表/緩沖器選擇的任何主/從總線協(xié)議使用。本發(fā)明的實(shí)施例還可用于對(duì)完成中斷的核目標(biāo)確定。例如,在使用外圍部件互連 的系統(tǒng)的實(shí)施例中,可為每個(gè)緩沖器列表204分配中斷向量,并利用流標(biāo)識(shí)符選擇緩沖器 組。PCI MSI-X中斷向量可指定核和該核上的向量。在多核系統(tǒng)中,SCSI命令在特定核上被構(gòu)造,這意味著該核的高速緩沖存儲(chǔ)與特 定命令相關(guān)的信息。核目標(biāo)確定允許主控制器在命令完成時(shí)中斷發(fā)起該命令的核,從而存 儲(chǔ)在該核的高速緩存中的信息可被重新利用。如果完成被發(fā)送至另一核,則導(dǎo)致附加的系 統(tǒng)存儲(chǔ)器活動(dòng),而該“另一”核裝載與該命令有關(guān)的信息。核目標(biāo)確定降低存儲(chǔ)器和電源利 用率。本發(fā)明的替代實(shí)施例還包括機(jī)器可訪問(wèn)的介質(zhì),該介質(zhì)包含用于執(zhí)行本發(fā)明的操 作的指令。此類實(shí)施例可被稱為程序產(chǎn)品。此類機(jī)器可訪問(wèn)介質(zhì)可無(wú)限制地包括諸如軟 盤(pán)、硬盤(pán)、緊致盤(pán)只讀存儲(chǔ)器(CD-ROM)、只讀存儲(chǔ)器(ROM)和隨機(jī)存取存儲(chǔ)器(RAM)的存儲(chǔ) 介質(zhì),以及通過(guò)機(jī)器或設(shè)備制造或形成的其它有形粒子排列。指令還可用于分布式環(huán)境,且 可本地和/或遠(yuǎn)程存儲(chǔ)以供單處理器機(jī)器或多處理器機(jī)器使用。
雖然已經(jīng)參照本發(fā)明實(shí)施例具體示出和描述了本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理 解的是,可對(duì)本發(fā)明作出形式上和細(xì)節(jié)上的多種修改,而不背離如所附權(quán)利要求所包含的 本發(fā)明的實(shí)施例的范圍。
權(quán)利要求
1.一種方法,包括在主機(jī)中分配多個(gè)緩沖器列表以存儲(chǔ)將要在所述主機(jī)與設(shè)備之間的流式批量管道上 移動(dòng)的數(shù)據(jù),每個(gè)緩沖器列表與一流標(biāo)識(shí)符相關(guān)聯(lián);以及在所述設(shè)備與關(guān)聯(lián)于所述流標(biāo)識(shí)符的所述緩沖器列表之間的所述流式批量管道上啟 用數(shù)據(jù)傳輸。
2.如權(quán)利要求1所述的方法,其特征在于,還包括允許用于所述數(shù)據(jù)傳輸?shù)牧鳂?biāo)識(shí)符由所述主機(jī)或所述設(shè)備來(lái)選擇。
3.如權(quán)利要求2所述的方法,其特征在于,還包括在批量邏輯管道上從所述主機(jī)向所述設(shè)備傳輸命令;以及在狀態(tài)流式批量管道上從所述設(shè)備向所述主機(jī)傳輸狀態(tài)。
4.如權(quán)利要求3所述的方法,其特征在于,所述流式批量管道是用于從所述設(shè)備向所 述主機(jī)傳輸數(shù)據(jù)的數(shù)據(jù)輸入流式批量管道。
5.如權(quán)利要求3所述的方法,其特征在于,所述流式批量管道是用于從所述主機(jī)向所 述設(shè)備傳輸數(shù)據(jù)的數(shù)據(jù)輸出流式批量管道。
6.如權(quán)利要求1所述的方法,其特征在于,所述設(shè)備是大容量存儲(chǔ)類通用串行總線設(shè)備。
7.一種裝置,包括主機(jī)中的多個(gè)緩沖器列表,用于存儲(chǔ)將要在所述主機(jī)與設(shè)備之間的流式批量管道上移 動(dòng)的數(shù)據(jù),每個(gè)緩沖器列表與流標(biāo)識(shí)符相關(guān)聯(lián);以及控制邏輯,用于在所述設(shè)備與關(guān)聯(lián)于所述流標(biāo)識(shí)符的所述緩沖器列表之間的所述流式 批量管道上啟用數(shù)據(jù)傳輸。
8.如權(quán)利要求7所述的裝置,其特征在于,所述控制邏輯允許所述用于數(shù)據(jù)傳輸?shù)牧?標(biāo)識(shí)符由所述客戶機(jī)或所述設(shè)備來(lái)選擇。
9.如權(quán)利要求8所述的裝置,其特征在于,所述控制邏輯用于在標(biāo)準(zhǔn)批量邏輯管道上 從所述主機(jī)向所述設(shè)備傳輸命令,且用于在狀態(tài)流式批量管道上從所述設(shè)備接收狀態(tài)。
10.如權(quán)利要求7所述的裝置,其特征在于,所述流式批量管道是用于從所述設(shè)備向所 述主機(jī)傳輸數(shù)據(jù)的數(shù)據(jù)輸入流式批量管道。
11.如權(quán)利要求7所述的裝置,其特征在于,所述流式批量管道是用于從所述緩沖器向 所述設(shè)備傳輸數(shù)據(jù)的數(shù)據(jù)輸出流式批量管道。
12.如權(quán)利要求7所述的裝置,其特征在于,所述設(shè)備是大容量存儲(chǔ)類通用串行總線 (USB)設(shè)備。
13.一種系統(tǒng),包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器;主機(jī)中的多個(gè)緩沖器列表,用于存儲(chǔ)將要在所述主機(jī)與設(shè)備之間的流式批量管道上移 動(dòng)的數(shù)據(jù),每個(gè)緩沖器列表與流標(biāo)識(shí)符相關(guān)聯(lián);以及控制邏輯,用于在所述設(shè)備與關(guān)聯(lián)于所述流標(biāo)識(shí)符的所述緩沖器列表之間的所述流式 批量管道上啟用數(shù)據(jù)傳輸,且所述控制邏輯允許用于數(shù)據(jù)傳輸?shù)牧鳂?biāo)識(shí)符由所述主機(jī)或所 述設(shè)備來(lái)選擇。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述主機(jī)是通用串行總線(USB)主機(jī),且所述設(shè)備是大容量存儲(chǔ)類USB設(shè)備。
15.一種方法,包括在命令管道上從主機(jī)接收高級(jí)技術(shù)附件(ATA)命令,所述ATA命令被封裝于通用串行 總線協(xié)議分組中,所述通用串行總線協(xié)議分組包括標(biāo)識(shí)所述主機(jī)中被分配用于存儲(chǔ)與所述 ATA命令相關(guān)聯(lián)的數(shù)據(jù)的緩沖器列表的標(biāo)識(shí)符;存儲(chǔ)所述ATA命令和關(guān)聯(lián)標(biāo)識(shí)符;通過(guò)在所述設(shè)備中的存儲(chǔ)介質(zhì)與由所述設(shè)備或主機(jī)選擇的所述緩沖器列表之間的數(shù) 據(jù)流式批量管道上傳輸數(shù)據(jù)來(lái)處理所述ATA命令,所述緩沖器列表與所述流標(biāo)識(shí)符相關(guān) 聯(lián);以及在狀態(tài)流式批量管道上將封裝于通用串行總線協(xié)議分組中的ATA命令狀態(tài)和所述關(guān) 聯(lián)標(biāo)識(shí)符轉(zhuǎn)發(fā)至所述主機(jī)。
16.如權(quán)利要求15所述的方法,其特征在于,在處理所儲(chǔ)存的ATA命令之前處理所接收 的另一 ATA命令。
17.如權(quán)利要求15所述的方法,其特征在于,第一方直接存儲(chǔ)器存取被用于在所述數(shù) 據(jù)流式批量管道上傳輸所述數(shù)據(jù)。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述主機(jī)是通用串行總線(USB)主機(jī),且 所述設(shè)備是大容量存儲(chǔ)類USB設(shè)備。
19.一種方法,包括在命令管道上從主機(jī)接收小型計(jì)算機(jī)系統(tǒng)接口(SCSI)命令,所述SCSI命令被封裝于 通用串行總線協(xié)議分組中,所述通用串行總線協(xié)議分組包括標(biāo)識(shí)所述主機(jī)中被分配用于存 儲(chǔ)與所述SCSI命令相關(guān)聯(lián)的數(shù)據(jù)的緩沖器列表的標(biāo)識(shí)符;存儲(chǔ)所述SCSI命令和關(guān)聯(lián)標(biāo)識(shí)符;通過(guò)在所述設(shè)備中的存儲(chǔ)介質(zhì)與由所述設(shè)備或主機(jī)選擇的所述緩沖器列表之間的數(shù) 據(jù)流式批量管道上傳輸數(shù)據(jù)來(lái)處理所述SCSI命令,所述緩沖器列表與所述流標(biāo)識(shí)符相關(guān) 聯(lián);以及在狀態(tài)流式批量管道上將封裝于通用串行總線協(xié)議分組中的SCSI命令狀態(tài)和所述關(guān) 聯(lián)標(biāo)識(shí)符轉(zhuǎn)發(fā)至所述主機(jī)。
20.如權(quán)利要求19所述的方法,其特征在于,在處理所儲(chǔ)存的SCSI命令之前處理所接 收的另一 SCSI命令。
全文摘要
提出了一種用于提高經(jīng)由通用串行總線(USB)可訪問(wèn)的大容量存儲(chǔ)類設(shè)備的性能的方法和裝置。通過(guò)在USB主機(jī)中提供支持以允許在大容量存儲(chǔ)類設(shè)備中支持命令排隊(duì)和第一方DMA(FPDMA)來(lái)提高性能。
文檔編號(hào)G06F13/28GK102119381SQ200980131657
公開(kāi)日2011年7月6日 申請(qǐng)日期2009年7月8日 優(yōu)先權(quán)日2008年7月11日
發(fā)明者S·B·麥克高文 申請(qǐng)人:英特爾公司