欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

串行高級(jí)技術(shù)附件(sata)和串行附加的小型計(jì)算機(jī)系統(tǒng)接口(scsi)(sas)橋接的制作方法

文檔序號(hào):6456858閱讀:355來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):串行高級(jí)技術(shù)附件(sata)和串行附加的小型計(jì)算機(jī)系統(tǒng)接口(scsi)(sas)橋接的制作方法
技術(shù)領(lǐng)域
一般來(lái)說(shuō),本發(fā)明涉及使主機(jī)按照串行高級(jí)技術(shù)附件 ATA(SATA)/高速串行化AT附件和/或串行附連小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)(SAS)標(biāo)準(zhǔn)與裝置進(jìn)行通信的大規(guī)模存儲(chǔ)器系統(tǒng),具體來(lái)說(shuō), 涉及橋接SAS和SATA連接。
背景技術(shù)
SATA協(xié)議積無(wú)述
隨著最近數(shù)十年對(duì)各種應(yīng)用的大規(guī)模存儲(chǔ)器系統(tǒng)的需要,出現(xiàn)對(duì) 于標(biāo)準(zhǔn)化與大規(guī)模系統(tǒng)的通信、以便增加其使用的靈活性的需要。
SATA是大容量存儲(chǔ)裝置的并行高級(jí)技術(shù)附件(ATA)附件的高速 串行鏈路替代。所采用的串行鏈路是點(diǎn)對(duì)點(diǎn)高速差分鏈路,它利用本 領(lǐng)域的技術(shù)人員已知的千兆位技術(shù)和8b/10b編碼。SATA協(xié)議基于與 開(kāi)放系統(tǒng)互連(OSI)參考模型相似的分層通信模型。下面提供概述。 要獲得更多詳細(xì)資料,讀者參閱SATA標(biāo)準(zhǔn)或規(guī)范,通過(guò)引用結(jié)合到 本文中,并且在以下發(fā)布中提供標(biāo)題為"串行ATA:高速串行化 ATA附件"或者"串行ATA國(guó)際組織串行ATA",修訂版2.5,日期 為2005年10月27日;以及標(biāo)題為"串行ATA II:串行ATA 1.0的擴(kuò) 充"修訂版2.5,日期為2002年10月6日,它們目前均可在串行ATA 工4乍纟且網(wǎng)3占www.serialata.org獲4尋。.
在SATA協(xié)議中,各協(xié)議層直接或間接地與其對(duì)等部分進(jìn)行通 信。串行ATA鏈路通過(guò)按照已知標(biāo)準(zhǔn)的協(xié)議來(lái)定義,其中具有四個(gè) 通信層,即,用于在物理級(jí)執(zhí)行通信的物理層、鏈路層、傳輸層和應(yīng)用層或者有時(shí)稱(chēng)作命令層。發(fā)射器和接收器不能直接與后者相互通 信,而是必須在到達(dá)另一個(gè)的對(duì)應(yīng)層之前經(jīng)過(guò)其系統(tǒng)的其它層。例如, 為了使發(fā)射器的物理層與接收器的傳輸層進(jìn)行通信,它必須首先經(jīng)過(guò)
發(fā)射器的鏈路、傳輸和應(yīng)用層,然后經(jīng)過(guò)串行ATA鏈路到達(dá)接收器 的應(yīng)用層,最后到達(dá)接收器的傳輸層。
通信或交換的基本單元是幀。幀由幀開(kāi)始(SOF)和幀結(jié)束(EOF) 組成,它們是根據(jù)SATA和SAS規(guī)范的不同定界符。在SATA中, STP包括幀信息結(jié)構(gòu)(FIS)、對(duì)FIS的內(nèi)容所計(jì)算的循環(huán)冗余校驗(yàn)和 (CRC)以及幀結(jié)束(EOF)原語(yǔ)。串行ATA組織已經(jīng)定義其中提供了幀 的定義以及預(yù)計(jì)在本文檔中使用的規(guī)范。原語(yǔ)是用于控制和提供串行 線路的狀態(tài)的雙字(Dword)實(shí)體。串行ATA組織已經(jīng)定義其中提供了 容許原語(yǔ)的定義以及預(yù)計(jì)在本文檔中使用的規(guī)范。
圖1示出幀30的示例。圖1中,幀以SOF原語(yǔ)30a開(kāi)始,之后 是第一FIS內(nèi)容30b,之后是指明發(fā)射器沒(méi)有可用數(shù)據(jù)的HOLD原語(yǔ) 30c,之后是第二FIS內(nèi)容30d,之后是被發(fā)送以便確認(rèn)接收到接收器 所發(fā)送的HOLD原語(yǔ)、指明接收器緩沖器處于'未就緒,狀況的 HOLDA原語(yǔ)30e,之后是CRC 30f和EOF原語(yǔ)30g。
圖1中,幀30包括用于流程控制的兩個(gè)原語(yǔ)HOLD和HOLDA 原語(yǔ)。HOLD原語(yǔ)指明不能夠發(fā)送或接收FIS內(nèi)容。發(fā)送HOLDA原 語(yǔ)以便確認(rèn)接收到HOLD原語(yǔ)。例如,當(dāng)接收節(jié)點(diǎn)檢測(cè)到它的緩沖 器接近全滿(mǎn)時(shí),它將向傳送節(jié)點(diǎn)發(fā)送HOLD原語(yǔ),請(qǐng)求發(fā)射器節(jié)點(diǎn) 停止,而當(dāng)緩沖器預(yù)備接收更多數(shù)據(jù)時(shí),接收節(jié)點(diǎn)將停止發(fā)送HOLD 原語(yǔ)。傳送節(jié)點(diǎn)發(fā)送HOLDA原語(yǔ)以便確認(rèn)接收到HOLD原語(yǔ)。直 至接收到HOLDA原語(yǔ),接收節(jié)點(diǎn)才繼續(xù)接收數(shù)據(jù)。為了防止緩沖器 溢出,SATA協(xié)議在節(jié)點(diǎn)發(fā)送HOLD原語(yǔ)與接收HOLDA原語(yǔ)之間要 求20個(gè)Dword的最大延遲。
存在許多不同的幀類(lèi)型。例如,為了經(jīng)由直接存儲(chǔ)器存取(DMA) 發(fā)送數(shù)據(jù),使用稱(chēng)作DMA建立FIS的幀,之后跟隨DMA數(shù)據(jù)FIS。一般存在三種類(lèi)型的FIS結(jié)構(gòu), 一種用于命令, 一種用于建立傳遞,
以及另一種用于與該傳遞相關(guān)的數(shù)據(jù)。各幀結(jié)構(gòu)用于不同目的。發(fā)送 命令類(lèi)型的幀來(lái)執(zhí)行命令,使用建立幀來(lái)準(zhǔn)備該命令的數(shù)據(jù)傳遞階 段,以及使用數(shù)據(jù)幀來(lái)傳遞數(shù)據(jù)。
本文所使用的"SATA驅(qū)動(dòng)器"表示符合從驅(qū)動(dòng)器或者向驅(qū)動(dòng)器傳 遞信息的SATA標(biāo)準(zhǔn)的介質(zhì)或磁盤(pán)驅(qū)動(dòng)器。驅(qū)動(dòng)器以及與其耦合的裝 置之間的接口由SATA標(biāo)準(zhǔn)來(lái)定義。"SATA端口 "是符合SATA標(biāo)準(zhǔn) 的端口。 "SATA驅(qū)動(dòng)器"是"SATA裝置"示例,而"SATA裝置"是"目 標(biāo)"的示例。"目標(biāo),,是接受命令以及響應(yīng)所接收命令的裝置。
需要一種用于橋接SATA與SAS裝置之間、例如SATA主機(jī)與 SATA裝置或者SAS主機(jī)與SATA裝置或者多個(gè)SAS裝置與SATA 裝置之間的通信的裝置或設(shè)備。
使用SAS作為鏈路,三種不同類(lèi)型的通信協(xié)議可用于開(kāi)啟連接。 它們是串行ATA隧道協(xié)議(STP)、 SSP和SMP。 STP用于SATA。 STP 用于允許在SATA標(biāo)準(zhǔn)中定義的SATA通信方法,SSP和SMP用于 允許在SAS標(biāo)準(zhǔn)中定義的小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)類(lèi)型的通信。
一旦'開(kāi)啟,STP通信, 一般遵照SATA協(xié)議。 一旦'開(kāi)啟,SMP連 接,遵照SMP協(xié)議。更具體來(lái)說(shuō),開(kāi)啟連接和建立連接,由始發(fā)器 發(fā)送請(qǐng)求幀,響應(yīng)幀由目標(biāo)發(fā)送,以及關(guān)閉連接。上述通信技術(shù)以及 與SAS有關(guān)的其它信息見(jiàn)于SAS標(biāo)準(zhǔn),參閱下列網(wǎng)站查找其副本 www.tl0.org。來(lái)自始發(fā)器的請(qǐng)求包括功能代碼,其中保留一個(gè)區(qū)域 作為廠商唯 一 區(qū)域,用于進(jìn) 一 步定義由例如目標(biāo)所執(zhí)行的功能。
本文所使用的"始發(fā)器,,表示發(fā)送命令并且能夠接收對(duì)所發(fā)送命 令的響應(yīng)的單元或裝置。本文所使用的"目標(biāo)"一般表示能夠接收命令 的單元或裝置。
目前不存在用于引起兩個(gè)或更多SAS端口與SATA裝置之間的 通信的單一裝置。此外,不存在如SAS標(biāo)準(zhǔn)中定義的、報(bào)告自身為 SAS標(biāo)準(zhǔn)中定義的STP目標(biāo)的終端裝置類(lèi)型。SAS端口是符合SAS標(biāo)準(zhǔn)的端口。此外,SATA裝置的操作速率經(jīng)常比也許為SAS主機(jī)要 慢,性能的這種差異目前擴(kuò)大到系統(tǒng)性能。因此,需要使SAS和SATA 裝置/主機(jī)的性能的速率的差異對(duì)系統(tǒng)性能是透明的,使得不存在較 慢的速率所引起的明顯延遲。
才艮據(jù)以上所述,出現(xiàn)對(duì)于允許SATA或SAS端口的不同拓樸結(jié) 構(gòu)與SATA裝置之間的通信的高性能裝置的需要。

發(fā)明內(nèi)容
簡(jiǎn)言之,本發(fā)明的一個(gè)實(shí)施例包括配置成符合SATA標(biāo)準(zhǔn)并且引 起一個(gè)或多個(gè)主機(jī)與SATA裝置之間的通信的通信系統(tǒng)。根據(jù)本發(fā)明 的一個(gè)實(shí)施例,通信系統(tǒng)包括多端口橋接裝置,它具有可響應(yīng)于來(lái)自 一個(gè)或多個(gè)主機(jī)的命令和狀態(tài)的命令狀態(tài)管理器(CSM)以及可響應(yīng) 于來(lái)自 一個(gè)或多個(gè)主機(jī)的數(shù)據(jù)的數(shù)據(jù)管理器(DM),用于基本上與命 令和狀態(tài)的分開(kāi)地緩沖數(shù)據(jù)。
通過(guò)以下參照若干附圖對(duì)優(yōu)選實(shí)施例的詳細(xì)描述,本發(fā)明的上述 及其它目的、特征和優(yōu)點(diǎn)將會(huì)非常明顯。


圖1示出現(xiàn)有技術(shù)SATA協(xié)議通信層。
圖2示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的通信系統(tǒng)10,它包括示 為與多端口橋接裝置16進(jìn)行通信的SAS端口 12和SAS端口 14,多 端口橋接裝置16示為與SATA端口 18耦合。
圖3示出根據(jù)本發(fā)明的一個(gè)備選實(shí)施例、與橋接裝置42耦合的 SAS端口 40,橋接裝置42示為與SATA端口 44耦合。
圖4示出根據(jù)本發(fā)明的一個(gè)實(shí)施例、與橋接裝置48進(jìn)行通信的 SAS端口46,橋接裝置48示為與端口 50進(jìn)行通信,其中端口50在 行為上是SATA類(lèi)型但不是SATA端口 。
圖5示出與橋接裝置54進(jìn)行通信的SATA端口 52,橋接裝置54示為與SATA端口進(jìn)行通信。
圖6示出與多端口橋接裝置62進(jìn)行通信的SATA端口 52和 SATA端口 60,多端口橋接裝置62示為與SATA端口 64進(jìn)行通信。
圖7示出一個(gè)備選實(shí)施例,其中,系統(tǒng)10包括與圖6相似的配 置,但是圖7中的多端口橋接裝置70還包括可響應(yīng)于端口 58和60 并且還與裝置62耦合的復(fù)用器78 。
圖8示出根據(jù)本發(fā)明的一個(gè)實(shí)施例、圖2的系統(tǒng)10的其它細(xì)節(jié)。
圖9示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的CSM94的其它細(xì)節(jié)。
圖10示出表116的內(nèi)容的示例。
圖10(a)示出根據(jù)本發(fā)明的一種方法的流程圖,它示出當(dāng)從SATA 裝置接收到狀態(tài)時(shí)由狀態(tài)機(jī)119所執(zhí)行的相關(guān)步驟。
圖11示出從SATA裝置所接收的狀態(tài)150并且在狀態(tài)中的示例。 圖12示出圖10(a)的映射的框圖。
圖13示出圖8的SAS端口 0或1之一中的SAS引擎160的其它細(xì)節(jié)。
圖14示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的數(shù)據(jù)管理器96的其它細(xì)節(jié)。
圖15示出SATA裝置相對(duì)于命令的數(shù)量的性能的圖表。
圖16示出從主機(jī)接收到命令時(shí)由CMS 94所執(zhí)行的步驟的流程圖。
圖17示出由(圖9的)CSM94的狀態(tài)機(jī)118所執(zhí)行的相關(guān)步驟。
圖18示出在圖17的步驟214確定所接收命令不是排隊(duì)命令之后 由狀態(tài)機(jī)118所執(zhí)行的相關(guān)步驟。
圖19-21示出當(dāng)SATA裝置或驅(qū)動(dòng)器向主機(jī)或始發(fā)器返回狀態(tài)時(shí) 所執(zhí)行的相關(guān)步驟。
圖22示出在增強(qiáng)上述公平性策略中由狀態(tài)管理器120或121所 執(zhí)行的相關(guān)步驟。
圖23示出當(dāng)SATA裝置響應(yīng)始發(fā)器的請(qǐng)求而返回狀態(tài)時(shí)的相關(guān)步驟。
圖24示出每個(gè)狀態(tài)寄存器120和121中包含的示范保持狀態(tài)寄 存器314。
圖25示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的存儲(chǔ)器系統(tǒng)1000,它包括 與一組擴(kuò)展器1400、 E0和E1耦合的一組始發(fā)器1200、 IO和Il,其 中擴(kuò)展器組與通信系統(tǒng)1600進(jìn)行通信。
具體實(shí)施例方式
在實(shí)施例的以下詳細(xì)描述中,參照形成實(shí)施例的 一部分的附圖, 附圖中通過(guò)舉例說(shuō)明的方式示出其中可實(shí)施本發(fā)明的具體實(shí)施例。大 家要理解,可采用其它實(shí)施例,因?yàn)榭蛇M(jìn)行結(jié)構(gòu)變更,而沒(méi)有背離本 發(fā)明的范圍。
在本發(fā)明的一個(gè)實(shí)施例中,通信系統(tǒng)配置成符合SATA標(biāo)準(zhǔn)并且 51起一個(gè)或多個(gè)主機(jī)與SATA裝置之間的通信。根據(jù)本發(fā)明的一個(gè)實(shí) 施例,通信系統(tǒng)包括多端口橋接裝置,它具有可響應(yīng)于來(lái)自一個(gè)或多
個(gè)或多個(gè)主機(jī)的數(shù)據(jù)、用于基本上與命令和狀態(tài)分開(kāi)地緩沖數(shù)據(jù)的數(shù) 據(jù)管理器(DM)。
在大規(guī)模存儲(chǔ)器系統(tǒng)、如獨(dú)立磁盤(pán)冗余陣列(RAID)中,多端口橋 接裝置用于在一個(gè)或多個(gè)始發(fā)器與目標(biāo)之間進(jìn)行通信。目標(biāo)可以是用 于存儲(chǔ)由始發(fā)器所提供并且由始發(fā)器來(lái)訪問(wèn)的磁盤(pán)驅(qū)動(dòng)器。主機(jī)和始 發(fā)器在本文中用于表示同 一個(gè)裝置。本行業(yè)已經(jīng)標(biāo)準(zhǔn)化符合SATA和 串行附連SCSI(SAS)標(biāo)準(zhǔn)的用于存儲(chǔ)的串行接口通信接口 ,這是本行 業(yè)眾所周知的。
通信橋接器用于允許一個(gè)或多個(gè)SAS端口或SATA端口與SATA 裝置或SATA類(lèi)型的裝置之間的通信。裝置的示例是磁盤(pán)驅(qū)動(dòng)器或 CD-ROM。
現(xiàn)在參照?qǐng)D2,示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的通信系統(tǒng)10,
16它包括示為與多端口橋接裝置16進(jìn)行通信的SAS端口 12和SAS端 口 14,多端口橋接裝置16示為與SATA端口 18耦合。在圖2的實(shí) 施例中,端口 12和14符合SAS標(biāo)準(zhǔn),以及端口 18符合SATA標(biāo)準(zhǔn)。 雖然圖2中未示出,但是,端口 18通過(guò)可稱(chēng)作SATA鏈路的連接24 與SATA裝置進(jìn)行通信,而每個(gè)端口 12和14分別通過(guò)連接20和22 與主機(jī)進(jìn)行通信。連接20和22均可稱(chēng)作SAS鏈路。
在本發(fā)明的一個(gè)實(shí)施例中,通信系統(tǒng)IO是存儲(chǔ)器或存儲(chǔ)裝置。 與主機(jī)18耦合的SATA裝置被認(rèn)為是目標(biāo),并且符合SATA標(biāo)準(zhǔn)。 裝置16將SAS協(xié)議轉(zhuǎn)換成SATA或者轉(zhuǎn)換成SATA類(lèi)型的行為。
現(xiàn)在參照本發(fā)明的各個(gè)實(shí)施例示出系統(tǒng)10的不同配置或拓樸結(jié) 構(gòu),但也預(yù)期了其它配置或拓樸結(jié)構(gòu)。在作為備選實(shí)施例的圖3中, SAS端口 40示為與橋接裝置42耦合,橋接裝置42示為與SATA端 口 44耦合。
圖4根據(jù)本發(fā)明的 一個(gè)備選實(shí)施例示出,SAS端口 46與橋接裝 置48進(jìn)行通信,橋接裝置48示為與端口 50進(jìn)行通信,其中端口50 在行為上是SATA類(lèi)型但不是SATA端口。圖5示出與橋接裝置54 進(jìn)行通信的SATA端口 52,橋接裝置54示為與SATA端口進(jìn)行通信。 圖6示出與多端口橋接裝置62進(jìn)行通信的SATA端口 58和SATA 端口 60,多端口橋接裝置62示為與SATA端口 64進(jìn)行通信。雖然 在以上圖中未示出,但是主機(jī)或始發(fā)器與SAS端口進(jìn)行通信。例如, 圖6中, 一主才幾可與端口 58耦合,而另一個(gè)主才幾可與端口 60耦合。 圖2與圖6的實(shí)施例之間的差別在于,在后者中,端口64的輸出示 為轉(zhuǎn)到SATA驅(qū)動(dòng)器,而橋接器62在圖6中示為與兩個(gè)SATA端口 58和60耦合,而不是圖2中的SAS端口。
在以上附圖的任一個(gè)的橋接裝置接收來(lái)自 一個(gè)以上的源的輸入 的情況下,它為多端口型,如圖2和圖6所示,而如果它的輸入來(lái)自 一個(gè)源,則不需要多端口型,如圖3、圖4和圖5所示。此外,在兩 個(gè)SAS或SATA端口示為與橋接裝置耦合的實(shí)施例中,更大數(shù)量的這類(lèi)端口可與其耦合。
圖7示出一個(gè)備選實(shí)施例,其中,系統(tǒng)10包括與圖6相似的配 置,但是圖7中的多端口橋接裝置70還包括可響應(yīng)于端口 58和60 并且還與裝置62耦合的復(fù)用器(mux) 78。在圖7的實(shí)施例中,復(fù) 用器78在兩個(gè)端口 58與60之間進(jìn)行選擇,j旦是它可被停用或未使 用(或者去除),以便允許兩個(gè)端口 58和60都與橋接器62耦合。
圖8示出根據(jù)本發(fā)明的一個(gè)實(shí)施例、圖2的系統(tǒng)10的其它細(xì)節(jié)。 圖8中,根據(jù)本發(fā)明的一個(gè)實(shí)施例,SAS-SATA轉(zhuǎn)換裝置80示為通 過(guò)總線84與輸入/輸出和外圍裝置82耦合。裝置80可以是前面附圖 所示的橋接裝置,例如裝置70或者裝置62或者裝置54、 48、 42或 16。
在本發(fā)明的一個(gè)實(shí)施例中,裝置80是終端裝置,它是用于控制 SATA裝置的STP目標(biāo)或SMP目標(biāo)。
系統(tǒng)10還示為包括通過(guò)總線84與裝置82和裝置80耦合的微處 理器IOO,并且微處理器IOO可以是例如控制器、狀態(tài)機(jī)等的任何種 類(lèi)的處理單元,以及還示為與存儲(chǔ)器102耦合。微處理器100的功能 是執(zhí)行各種系統(tǒng)功能,例如構(gòu)建幀、引導(dǎo)信息通信以及微處理器所執(zhí) 行的其它類(lèi)型的功能。存儲(chǔ)器102是可選的,并且可由例如但不限于 狀態(tài)機(jī)等的其它裝置替代。
裝置80示為包括SAS端口 86和88、連接協(xié)議管理器(CPM)O 90 和CPM 1 92、命令狀態(tài)管理器(CSM)94、數(shù)據(jù)管理器96以及驅(qū)動(dòng)管 理器(DRVM)98。端口 86示為與CPM 0 90耦合,而端口88示為與 CPM 1 92耦合。管理器98與SATA裝置、如SATA^F茲盤(pán)驅(qū)動(dòng)器進(jìn)行 通信,但是可采用其它類(lèi)型的SATA裝置。
端口 86示為與CPM0 90耦合,CPM0 90示為與CSM 94和DM 96耦合。端口 88示為與CPM 1 92耦合,CPM 1 92示為與DM 96和 CSM 94耦合。CSM 94和DM 96示相互耦合,而DRVM 98示為與 DM 96耦合。DRVM 98示為與CSM 94耦合。在參考標(biāo)號(hào)104下方,遵照SATA協(xié)議,而在參考標(biāo)號(hào)104的上 方,端口 86和88遵照SAS協(xié)議。CPM 0 90和CPM 1 92各確保符 合SATA協(xié)議。CPM 0 90和CPM 1 92各區(qū)分命令幀、數(shù)據(jù)幀和控制 幀,并且按照此向CSM 94傳送命令幀、向DM 96傳送數(shù)據(jù)幀以便 進(jìn)行處理。CSM 94向DRVM 98發(fā)出或傳送命令,DRVM 98使用這 個(gè)信息最終向SATA裝置發(fā)送命令,以及當(dāng)SATA裝置(未示出)回送 信息時(shí)(響應(yīng)于來(lái)自DRVM98的命令),后者向CSM94傳送或發(fā) 送相同信息。對(duì)其進(jìn)行響應(yīng),DRVM 98向CSM 94發(fā)送狀態(tài),以及 CSM 94向CPM 0 90和CPM 1 92的一個(gè)或兩個(gè)發(fā)送該信息。但是, 如果該響應(yīng)屬于數(shù)據(jù)或控制類(lèi)型,則DRVM 98向DM 96發(fā)送該信息, DM 96向CPM 0 90或CPM 1 92之一傳送數(shù)據(jù)。
示為與裝置80耦合的裝置82還示為包括通用輸入/輸出(GP10) 和外圍裝置,以及總線84與系統(tǒng)10的各個(gè)塊進(jìn)行通信,如前面所述。 總線84可稱(chēng)作微處理器總線。微處理器100配置GPIO,使得系統(tǒng) 10的其余部分^f吏用GPIO。
橋接功能由位于參考標(biāo)號(hào)104下方直至DRVM 98的塊來(lái)執(zhí)行。 DRVM 98用于遵照SATA協(xié)議,并且滿(mǎn)足SATA規(guī)范的要求。系統(tǒng) IO接受來(lái)自端口 86和88的任一個(gè)或兩個(gè)的命令,而無(wú)需任何復(fù)用 或選擇過(guò)程。也就是說(shuō),來(lái)自各端口的命令經(jīng)過(guò)系統(tǒng)10的塊的其余 部分并且由其處理。這樣,SMP用于參考標(biāo)號(hào)104之上的通信,而 STP用于參考標(biāo)號(hào)104之下的通信。此外,CSM 94接收來(lái)自端口 86 和88的命令,并且緩沖或存儲(chǔ)所接收命令。這樣,系統(tǒng)10接收來(lái)自 兩個(gè)端口的命令,而無(wú)需任何復(fù)用或選擇過(guò)程。
在僅使用 一個(gè)SAS端口的實(shí)施例中,端口 86或端口 88的任一 個(gè)將會(huì)不存在,并且它們相應(yīng)耦合的CPM 0或CPM 1也將會(huì)不存在。 端口 86和88各包括用于保存配置表的相應(yīng)SAS引擎(圖8中未示出)。 本文所使用的表可以是能夠更新的任何類(lèi)型的存儲(chǔ)位置。包含各端口 以及經(jīng)耦合以便與端口進(jìn)行通信的始發(fā)器的狀態(tài)信息的配置表在相應(yīng)SAS端口中保存。例如,與端口 86以及耦合(或者沒(méi)有耦合)到端 口 86的始發(fā)器的狀態(tài)有關(guān)的信息在端口 86的SAS引擎中保存,并 且作為配置表的一部分。類(lèi)似地,與端口 88以及耦合(或者沒(méi)有耦合) 到端口 88的始發(fā)器的狀態(tài)有關(guān)的信息在端口 88的SAS引擎中保存, 并且作為配置表的一部分。各SAS鏈路具有其為較大配置表的一部 分的配置表。較大配置表通過(guò)級(jí)聯(lián)來(lái)自各端口 86和88的表的部分來(lái) 形成?,F(xiàn)在參照以下附圖,論述圖8的相關(guān)塊的其它細(xì)節(jié)。
圖9示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的CSM 94的其它細(xì)節(jié)。圖9 中,根據(jù)本發(fā)明的一個(gè)實(shí)施例,CSM94示為包括入局緩沖器0 103、 入局緩沖器1 106、命令處理器狀態(tài)機(jī)108、命令緩沖器110、狀態(tài)0 管理器120、狀態(tài)1管理器121、命令掛起存儲(chǔ)位置114、命令屬性 表112、驅(qū)動(dòng)器隊(duì)列表116、命令發(fā)布狀態(tài)機(jī)118和入局狀態(tài)的狀態(tài) 機(jī)119。
緩沖器0 103和1 106示為與狀態(tài)機(jī)108耦合,狀態(tài)機(jī)108示為 與命令緩沖器110耦合,并且還示為與命令屬性表112和命令掛起存 儲(chǔ)位置114耦合。命令掛起存儲(chǔ)位置114示為與狀態(tài)機(jī)118耦合。狀 態(tài)機(jī)119示為與表116耦合,而表112示為與狀態(tài)機(jī)118耦合。搜索 引擎105示為與狀態(tài)0管理器120以及與狀態(tài)1管理器121耦合。
緩沖器0 103和1 106各通過(guò)其各自的CPM可響應(yīng)于來(lái)自相應(yīng)主 機(jī)的命令,并且相應(yīng)地示為與其各自的CPM耦合。例如,緩沖器0 103 接收來(lái)自CPM 0的命令,而緩沖器0 106接收來(lái)自CPM 1的命令。 緩沖器0 103和1 106各向狀態(tài)機(jī)108傳遞所接收命令以及與其相關(guān) 的信息以l更進(jìn)行處理。
本文所涉及的狀態(tài)機(jī)控制或者使過(guò)程進(jìn)行。例如,狀態(tài)機(jī)108使 命令被處理。命令緩沖器110示為與狀態(tài)機(jī)118耦合。
存儲(chǔ)位置114示為與命令發(fā)布狀態(tài)機(jī)118耦合,命令發(fā)布狀態(tài)才幾 118又與DRVM 98耦合。狀態(tài)機(jī)118示為與表116耦合。狀態(tài)0管 理器120和狀態(tài)1管理器121示為與狀態(tài)機(jī)119和命令屬性表112耦合,并且還與CPM 0 90和CPM 1 92耦合。狀態(tài)管理器120示為與 狀態(tài)機(jī)108 (如為狀態(tài)管理器121 )耦合。狀態(tài)管理器120和121還 示為與表116耦合,表116示為從數(shù)據(jù)管理器96接收信息以及向數(shù) 據(jù)管理器96傳送信息。
又如圖9所示,CSM94包括命令計(jì)數(shù)器91,與狀態(tài)機(jī)108耦 合;以及空閑隊(duì)列指針表93,與狀態(tài)機(jī)108、與狀態(tài)管理器120和 121、與狀態(tài)機(jī)119耦合。計(jì)數(shù)器91還示為與狀態(tài)管理器0 120和1 121 耦合。應(yīng)當(dāng)注意,計(jì)數(shù)器91包括與始發(fā)器或主機(jī)的數(shù)量同樣多的計(jì) 數(shù)器或者包括保持與始發(fā)器或主機(jī)的數(shù)量同樣多的計(jì)數(shù)的方法。
另外,CSM94示為包括搜索引擎105,它與微處理器IOO、與表 112以及與表116耦合。表93存儲(chǔ)由狀態(tài)機(jī)108用于分別將命令和 命令屬性存儲(chǔ)在緩沖器110和表112的空閑或可用指針。當(dāng)命令完成 服務(wù)時(shí),所服務(wù)的命令的指針可由狀態(tài)機(jī)119在表93中恢復(fù)為可用 指針。當(dāng)接收到命令時(shí),由狀態(tài)機(jī)108訪問(wèn)表93以便檢索空閑指針, 以及指針用于分別將命令和命令屬性存儲(chǔ)到緩沖器110和表112。類(lèi) 似地,各狀態(tài)管理器0 120和1 121可更新表93。
命令計(jì)數(shù)器91是可選的,但在使用時(shí)作為各始發(fā)器的計(jì)數(shù)器, 它作為命令處理器狀態(tài)機(jī)108的一部分,并且對(duì)于從始發(fā)器所接收的 命令計(jì)數(shù)。計(jì)數(shù)器91所保持的計(jì)數(shù)再次與表示分配給始發(fā)器的命令 的數(shù)量的預(yù)定值進(jìn)行比較,以及如果比較表明所分配的命令數(shù)量過(guò) 多,則由狀態(tài)機(jī)108向從其處接收該命令的狀態(tài)管理器報(bào)告錯(cuò)誤消 息。為了各種其它原因,可以可選地使用計(jì)數(shù)器91中的命令計(jì)數(shù)。 各始發(fā)器具有與其關(guān)聯(lián)的命令的唯一預(yù)定最大數(shù)量,為此,命令的每 個(gè)這種預(yù)定數(shù)量由計(jì)數(shù)器91中的各個(gè)計(jì)數(shù)器使用。在本發(fā)明的一個(gè) 實(shí)施例中,與始發(fā)器關(guān)聯(lián)的命令的預(yù)定最大數(shù)量存儲(chǔ)在配置表中。
搜索引擎105 (在微處理器100的指導(dǎo)下)具有搜索表116和/ 或表112的能力,因此可提供與命令、屬性等有關(guān)的有用信息??蛇x 地,搜索引擎105用于搜索狀態(tài)管理器0 120和1 121。存儲(chǔ)位置114保持跟蹤從始發(fā)器所接收的命令,而表116保持跟 蹤可實(shí)際離開(kāi)或傳送到SATA裝置的命令。兩種此類(lèi)位置的存在提供 了解決始發(fā)器的命令超過(guò)SATA裝置可服務(wù)的命令數(shù)量的情況。因 此,從始發(fā)器進(jìn)入的命令在存儲(chǔ)位置114中排隊(duì),而預(yù)備發(fā)送給SATA 裝置的命令在表116中排隊(duì)。這允許接受比SATA裝置能夠處理的更 多命令,并且在無(wú)需報(bào)告錯(cuò)誤的情況下進(jìn)行。在這方面,從始發(fā)器的 角度來(lái)看,這種情況無(wú)關(guān)緊要。
狀態(tài)機(jī)118確定存儲(chǔ)位置114中的命令是排隊(duì)還是非排隊(duì)命令, 并且根據(jù)命令類(lèi)型,它將確保命令類(lèi)型、即排隊(duì)和非排隊(duì),與SATA 裝置中的掛起命令相匹配。在非排隊(duì)命令的情況下,直到SATA裝置 不再具有掛起的命令才將命令發(fā)送給SATA裝置。在排隊(duì)命令的情況 下,如果SATA裝置可接受排隊(duì)命令或者它具有掛起的其它排隊(duì)命 令,則將該命令發(fā)送給SATA裝置。在始發(fā)器與(圖7的)系統(tǒng)10耦 合的情況下,狀態(tài)機(jī)118允許多個(gè)始發(fā)器甚至可在送往相同或不同的 端口的其它始發(fā)器命令完成之前向同 一個(gè)(SAS)端口或者通過(guò)SAS鏈 路86或88發(fā)送命令。
在操作中,命令由每個(gè)入局緩沖器0 104和1 106并行接收。隨 后,所接收命令由狀態(tài)機(jī)108來(lái)處理。應(yīng)當(dāng)注意,緩沖器0 104和1 106 所接收的命令遵照SATA協(xié)議。從空閑隊(duì)列指針表93檢索可用指針。 然后,狀態(tài)機(jī)108根據(jù)來(lái)自表93的指針的位置將已處理命令存儲(chǔ)在 緩沖器110中。來(lái)自表93、指向緩沖器110中的位置的指針用于存 儲(chǔ)命令,即,命令指針由狀態(tài)機(jī)108存儲(chǔ)在存儲(chǔ)位置114中。
存儲(chǔ)位置114是用于當(dāng)命令到達(dá)時(shí)對(duì)指向命令的指針進(jìn)行存儲(chǔ) 或排隊(duì)的隊(duì)列。在這方面,存儲(chǔ)位置114是基于先到先服務(wù)的鏈接列 表。備選地,優(yōu)先級(jí)列表用于根據(jù)優(yōu)先級(jí)對(duì)將被服務(wù)的命令確定優(yōu)先 順序。又備選地,采用兩個(gè)列表, 一個(gè)列表包括命令指針的鏈接列表, 而另一個(gè)列表、即優(yōu)先級(jí)列表包括可根據(jù)比其它入局命令更高的優(yōu)先 級(jí)而亂序服務(wù)的優(yōu)先命令的列表。在維護(hù)的命令的優(yōu)先級(jí)的變化對(duì)耦
22合到系統(tǒng)10的始發(fā)器保持為透明。
當(dāng)命令的指針使它到達(dá)位置114中的其它命令指針列表的前面 時(shí),該命令從緩沖器110存儲(chǔ)在狀態(tài)機(jī)118中,并且提供給DRVM 98, DRVM 98向裝置或磁盤(pán)驅(qū)動(dòng)器(或目標(biāo))發(fā)出該命令。狀態(tài)機(jī)118將命 令信息存儲(chǔ)到表116中,并且將它發(fā)送給DRVM 98。當(dāng)狀態(tài)片幾118 向驅(qū)動(dòng)器(SATA裝置)發(fā)送命令時(shí),它還向表116發(fā)送命令信息。
目標(biāo)最終向DRVM 98回送狀態(tài),DRVM 98將狀態(tài)存儲(chǔ)在狀態(tài) 機(jī)119中。狀態(tài)機(jī)119又將狀態(tài)提供給狀態(tài)管理器0 120或1 121的 一個(gè)或兩個(gè),無(wú)論哪一個(gè)狀態(tài)管理器接收到該狀態(tài)都將構(gòu)建包含從 DRVM 98所接收的狀態(tài)的幀。將符合SATA標(biāo)準(zhǔn)的已構(gòu)建幀傳送給 與構(gòu)建該幀的狀態(tài)管理器對(duì)應(yīng)的CPM0 90或CPM 1 92。換言之,如 果狀態(tài)管理器0 120構(gòu)建該幀,則將幀傳送給CPM0 90,而如果狀態(tài) 管理器192構(gòu)建該幀,則將幀傳送給CPM 1 92。通過(guò)狀態(tài)管理器接 收該幀的CPM最終通過(guò)其SAS端口或引擎將該幀傳送給耦合到系統(tǒng) 10的始發(fā)器(未示出)。從DRVM到SAS初始化的狀態(tài)的路徑稱(chēng)作"返 回狀態(tài)"。如前面所述,只有SATA幀才由CSM 94來(lái)處理和接收, 因?yàn)樗蠸AS協(xié)議在幀到達(dá)CSM 94之前從幀中剝離。
表116的內(nèi)容的示例如圖IO所示。表116的行稱(chēng)作索引,并且 存在標(biāo)記為索引0-31的32個(gè)索引。表116的列包括'有效,位列140、 指向命令緩沖器的指針列142、始發(fā)器編號(hào)列144和始發(fā)器標(biāo)簽列 146。列142存儲(chǔ)關(guān)聯(lián)索引的指針,各指針指向命令緩沖器110中的 位置和指向命令屬性表112中的位置。命令屬性表112包括與命令有 關(guān)的屬性,即命令的類(lèi)型、與命令關(guān)聯(lián)的可能的錯(cuò)誤等,并且它在命 令到達(dá)時(shí)由狀態(tài)機(jī)108來(lái)更新。表116由狀態(tài)機(jī)118或狀態(tài)管理器 119或者狀態(tài)管理器120或121來(lái)更新。
指針最終存儲(chǔ)在表93中,并且可用于其它命令。列144包括與 索引關(guān)聯(lián)的始發(fā)器編號(hào),所索引的行的命令來(lái)自其中,以及列140表 示與表116的關(guān)聯(lián)行的命令的有效性有關(guān)的信息。標(biāo)簽最初由始發(fā)器發(fā)送給系統(tǒng)10,并且它存儲(chǔ)在命令屬性表112中。然后,重新映射 已存儲(chǔ)標(biāo)簽,以便避免始發(fā)器已經(jīng)發(fā)送同一個(gè)標(biāo)簽的情況,因?yàn)槔?不能將兩個(gè)標(biāo)簽0發(fā)送給SATA裝置或驅(qū)動(dòng)器。標(biāo)簽的重新映射避免 這種情況,并且由狀態(tài)機(jī)118進(jìn)行。狀態(tài)機(jī)118搜索標(biāo)簽在其中可用 的表116的第一條目,并且使用找到的條目。
在其它實(shí)施例中,可找到與第一條目不同的條目,例如但不限于 最后一個(gè)條目或者隨機(jī)號(hào)條目。也就是說(shuō),表116用于查找下一個(gè)或 第一個(gè)有效索引。狀態(tài)機(jī)118查找表116中被指示為不是'有效,的第 一位置,并且使用其中的標(biāo)簽值作為新標(biāo)簽。列146則包括該標(biāo)簽, 其最終用于對(duì)于表116的各索引或行尋址SATA裝置。
表116中在關(guān)聯(lián)列140中具有值且設(shè)置成無(wú)效命令的行將在關(guān)聯(lián) 列146中具有能夠自由使用的(始發(fā)器)標(biāo)簽,因?yàn)閷?duì)于那個(gè)標(biāo)簽不存 在掛起命令。根據(jù)本發(fā)明的一個(gè)實(shí)施例,始發(fā)器標(biāo)簽到SATA裝置或 驅(qū)動(dòng)器或者反之的映射以非固定格式或者動(dòng)態(tài)地進(jìn)行。也就是說(shuō),標(biāo) 簽與始發(fā)器關(guān)聯(lián),而在現(xiàn)有技術(shù)系統(tǒng)中, 一組標(biāo)簽永久地分配到給定 始發(fā)器,并且另一組標(biāo)簽永久地分配到另一個(gè)始發(fā)器,其中始發(fā)器和 標(biāo)簽的關(guān)聯(lián)固定不變,而在本發(fā)明的一個(gè)實(shí)施例中,始發(fā)器標(biāo)簽動(dòng)態(tài) 地分配。也就是說(shuō),標(biāo)簽沒(méi)有永久地分配給始發(fā)器,而是狀態(tài)機(jī)118 將標(biāo)簽分配給始發(fā)器,該標(biāo)簽稍后可重新分配給另一個(gè)始發(fā)器。在一裝置。
列142允許命令易于位于命令緩沖器110或者在屬性表112中, 使得如果始發(fā)器希望重新訪問(wèn)命令,則這可易于使用指向命令緩沖器 的指針進(jìn)行。列144包括用于確定SATA裝置向其發(fā)送狀態(tài)的狀態(tài)管 理器0 120和1 121的哪一個(gè)或兩個(gè)的信息。在下列情況下將狀態(tài)提 供給兩個(gè)狀態(tài)管理器例如,當(dāng)SATA裝置提供狀態(tài)并且使?fàn)顟B(tài)提供 給兩個(gè)不同始發(fā)器時(shí),或者當(dāng)SATA裝置進(jìn)行響應(yīng)并且使響應(yīng)提供給 兩個(gè)不同始發(fā)器時(shí)。在表116中,在無(wú)論哪一個(gè)索引或行中,存在指明'未設(shè)置,的關(guān) 聯(lián)'有效,條目,與其關(guān)聯(lián)的標(biāo)簽可以使用。在圖10的示例中,由于 存在32個(gè)索引,所以可使用32個(gè)標(biāo)簽。如果表116全滿(mǎn),或者所有 32個(gè)索引都具有有效命令,則沒(méi)有命令可向SATA裝置發(fā)出。數(shù)量 32只是用作舉例,因此可采用其它數(shù)量的索引。
可將狀態(tài)返回給一個(gè)或多個(gè)始發(fā)器。因此,表116提供確定一個(gè) 或多個(gè)始發(fā)器是否已經(jīng)返回狀態(tài)以及哪些標(biāo)簽已經(jīng)分配給SATA驅(qū) 動(dòng)器的方式。
現(xiàn)在提供映射圖9和圖10的表116中的信息的方式的論述。圖 10(a)中,根據(jù)本發(fā)明的一種方法,示出當(dāng)從SATA裝置接收到狀態(tài) 時(shí)由狀態(tài)機(jī)119所執(zhí)行的相關(guān)步驟的流程圖。首先,在步驟189, DRVM 98向狀態(tài)才幾119提供狀態(tài)。然后,在步驟191,狀態(tài)機(jī)119 執(zhí)行組合解碼,然后在步驟193,將狀態(tài)提供給狀態(tài)管理器0 120和 1 121。在步驟191,把來(lái)自DRVM98的狀態(tài)組合地與表116中的信 息進(jìn)行比較,它以有效迅速的方式產(chǎn)生對(duì)始發(fā)器的狀態(tài)。備選地,可 采用與組合比較不同的方式。
圖11示出從SATA裝置所接收的狀態(tài)150并且在狀態(tài)中的示例。 在SATA規(guī)范中,狀態(tài)150稱(chēng)作SACTIVE寄存器。存在32位,其 中每個(gè)位用作表116的索引之一。每個(gè)標(biāo)簽有一位,標(biāo)簽的數(shù)量由狀 態(tài)150的寬度或位的數(shù)量來(lái)確定?,F(xiàn)在相對(duì)于圖11和圖12進(jìn)一步說(shuō) 明表116的內(nèi)容賦予的有益效果的一部分。
圖12中示出圖10(a)的映射的框圖。第一標(biāo)簽的示例用作對(duì)表116 的索引,以便快速檢索與始發(fā)器和標(biāo)簽有關(guān)的信息。也就是說(shuō),在步 驟152,狀態(tài)150中的位一的值被確定,并且在步驟154用于索引通 過(guò)表116中的索引1進(jìn)行索引的行。隨后,在步驟156,從表116檢 索與索引1關(guān)聯(lián)的列144中的始發(fā)器編號(hào)以及與索引1關(guān)聯(lián)的列146 的I標(biāo)簽。隨后,為下一個(gè)位或索引設(shè)置適當(dāng)?shù)奈?。?16的使用允 許使用組合邏輯或存儲(chǔ)器快速地檢索始發(fā)器編號(hào)和I標(biāo)簽(始發(fā)器標(biāo)簽),這都是眾所周知的。
防止始發(fā)器發(fā)出比未完成標(biāo)簽的數(shù)量更多的命令。也就是說(shuō),在
以上示例中,如果33個(gè)命令由始發(fā)器發(fā)出,而32個(gè)是未完成的,則 產(chǎn)生錯(cuò)誤。對(duì)于'非排隊(duì),命令,確定對(duì)于同一個(gè)始發(fā)器是否存在一個(gè) 以上非排隊(duì)命令,以及如果是的話(huà),則產(chǎn)生錯(cuò)誤。如前面所述的用于 處理命令的規(guī)則通過(guò)命令屬性表112來(lái)檢驗(yàn)。'排隊(duì),命令在如上文 引用的SATA標(biāo)準(zhǔn)中規(guī)定如。
圖13示出圖8的SAS端口 0或1之一中的SAS引擎160的其它 細(xì)節(jié)。圖13中,SAS引擎160示為包括連接狀態(tài)機(jī)162、從屬關(guān)系 表164、原語(yǔ)中斷處理器(primitive interrupt processor) 168、 SMP緩 沖器狀態(tài)機(jī)166,它們均示為與狀態(tài)機(jī)170耦合。表164是本文所述 的配置表的一部分。引擎160通過(guò)SAS鏈路來(lái)接收信息,SAS鏈路 可以是鏈路86或88,并且與CPM 0 90或CPM 1 92的任一個(gè)耦合。 在操作中,引擎160首先構(gòu)建開(kāi)啟幀,通過(guò)SAS鏈路將開(kāi)啟幀發(fā)送 給始發(fā)器,以及接收來(lái)自始發(fā)器的開(kāi)啟接受原語(yǔ)并且建立到始發(fā)器的 連接。CPM請(qǐng)求與始發(fā)器連接,然后狀態(tài)機(jī)162和166執(zhí)行將SAS 總線(或鏈路)與所請(qǐng)求始發(fā)器連接所需的步驟。
一旦建立連接并且傳遞數(shù)據(jù),則關(guān)閉連接。由于系統(tǒng)10的體系 結(jié)構(gòu),連接可編程為立即關(guān)閉或者在預(yù)定時(shí)間期之后關(guān)閉或者使用幀 類(lèi)型來(lái)關(guān)閉。后者的示例包括使用連接,即便是通過(guò)檢測(cè)已經(jīng)傳遞幀 的時(shí)間或者通過(guò)幀的狀態(tài)來(lái)保持其為開(kāi)啟。另 一個(gè)示例是通過(guò)了解幀 類(lèi)型,連接需要使用的時(shí)間量為已知,因此定時(shí)器可用于根據(jù)所檢測(cè) 幀類(lèi)型來(lái)跟蹤預(yù)定時(shí)間期,以及當(dāng)定時(shí)器達(dá)到預(yù)定時(shí)間期時(shí),可關(guān)閉 連接。由于數(shù)據(jù)/狀態(tài)/控制的緩沖,避免了等待接收來(lái)自驅(qū)動(dòng)器的信 息。也就是說(shuō),開(kāi)啟連接,緩沖數(shù)據(jù)幀,然后可關(guān)閉連接,以及此后 將數(shù)據(jù)發(fā)送給SATA裝置,因?yàn)橐呀?jīng)緩沖或存儲(chǔ)幀,并且無(wú)需等待連 接的關(guān)閉,這有助于提高系統(tǒng)的性能。在不允許與SATA裝置關(guān)聯(lián)的 任何延遲通過(guò)系統(tǒng)擴(kuò)大中,這也是重要的。此外,命令可從始發(fā)器實(shí)時(shí)接收,而沒(méi)有局限于SATA裝置的能力。
在始發(fā)器正向SATA裝置發(fā)送數(shù)據(jù)的情況下,數(shù)據(jù)在由系統(tǒng)10 接收時(shí)被緩沖,然后發(fā)送給SATA裝置,由此避免與SATA裝置接 受數(shù)據(jù)關(guān)聯(lián)的延遲。這有助于提高的系統(tǒng)效率和性能。
始發(fā)器開(kāi)啟SMP連接,并且執(zhí)行SMP功能。相對(duì)于引擎160進(jìn) 入和離開(kāi)的信息存儲(chǔ)在SMP緩沖器和狀態(tài)機(jī)166中。微處理器100 構(gòu)建將要轉(zhuǎn)到始發(fā)器的幀,并且將它存儲(chǔ)在SMP緩沖器和狀態(tài)機(jī)166
中,以便最終傳送給始發(fā)器。這樣,始發(fā)器可與SATA活動(dòng)無(wú)關(guān)地執(zhí) 行控制功能,這有助于提高的系統(tǒng)性能。
圖14示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的數(shù)據(jù)管理器96的其它細(xì) 節(jié)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,數(shù)據(jù)管理器96示為包括上游狀態(tài)機(jī) 176、數(shù)據(jù)緩沖器174、控制FIS緩沖器178、 FIS處理器狀態(tài)機(jī)182、 數(shù)據(jù)管理器控制狀態(tài)機(jī)172和下游狀態(tài)機(jī)180。狀態(tài)機(jī)180示為與 DRVM98耦合,而狀態(tài)機(jī)176示為與CPM 0和CPM 1耦合。狀態(tài)機(jī) 172示為與CSM 94耦合。狀態(tài)機(jī)176還示為與狀態(tài)機(jī)172、與緩沖 器178以及與數(shù)據(jù)緩沖器174耦合。
狀態(tài)機(jī)182示為與緩沖器178耦合,緩沖器178又示為與狀態(tài)機(jī) 180耦合。數(shù)據(jù)緩沖器174存儲(chǔ)一幀或多幀。圖14中,控制FIS由 緩沖器178來(lái)緩沖。信息流是從狀態(tài)機(jī)176到狀態(tài)機(jī)180或者反之。 在一個(gè)實(shí)施例中,狀態(tài)機(jī)172和182在物理上可以是同一個(gè)狀態(tài)機(jī)。
在操作中,當(dāng)控制FIS從SATA裝置接收時(shí),將它緩沖或存儲(chǔ)在 緩沖器178中。當(dāng)接收到控制FIS時(shí),狀態(tài)機(jī)182修改所接收的控制 FIS,并且通知狀態(tài)機(jī)172,狀態(tài)機(jī)172進(jìn)一步修改已修改的控制FIS, 并且通知狀態(tài)機(jī)176從緩沖器178發(fā)送數(shù)據(jù)。
從狀態(tài)機(jī)176下發(fā)信息時(shí),狀態(tài)機(jī)176向狀態(tài)機(jī)172提供信息, 它通知狀態(tài)機(jī)180發(fā)送該信息,以及在完成傳遞時(shí),狀態(tài)機(jī)172通知 狀態(tài)機(jī)180從緩沖器174刪除FIS。
關(guān)于數(shù)據(jù),當(dāng)它到達(dá)時(shí),在狀態(tài)機(jī)182的指導(dǎo)下,數(shù)據(jù)緩沖或存儲(chǔ)在數(shù)據(jù)緩沖器174中,并且稍后發(fā)送給狀態(tài)機(jī)180。當(dāng)數(shù)據(jù)預(yù)備發(fā) 送給對(duì)于SATA裝置的始發(fā)器時(shí),狀態(tài)機(jī)從緩沖器174檢索該數(shù)據(jù), 并且通知狀態(tài)機(jī)172,狀態(tài)機(jī)172則通知狀態(tài)機(jī)176,以及數(shù)據(jù)被發(fā) 送。當(dāng)數(shù)據(jù)從SATA裝置去始發(fā)器時(shí),在狀態(tài)機(jī)182的指導(dǎo)下,通知 狀態(tài)機(jī)172,數(shù)據(jù)存儲(chǔ)在緩沖器174中,以及狀態(tài)機(jī)172通知狀態(tài)機(jī) 176,并且將通過(guò)狀態(tài)機(jī)180提供的數(shù)據(jù)傳送給始發(fā)器。離開(kāi)系統(tǒng)IO 的數(shù)據(jù)幀的順序與到達(dá)的順序相同。
由于緩沖整個(gè)幀,因此,如果存在與SATA鏈路關(guān)聯(lián)的延遲,則 沒(méi)有阻礙SAS鏈路,這在很大程度上歸因于本發(fā)明的各個(gè)實(shí)施例的 緩沖。此外,SAS與SATA鏈路之間的不同數(shù)據(jù)速率被實(shí)現(xiàn),以及由 于幀緩沖而對(duì)于始發(fā)器將變成透明的,并且還允許關(guān)閉連接的有效方 法。作為一個(gè)示例,如果SAS鏈路以每秒6千兆位的速率傳遞信息, 而SATA驅(qū)動(dòng)器僅能夠以每秒3千兆位的速率接收信息,由于本發(fā)明 的各個(gè)實(shí)施例的緩沖,始發(fā)器沒(méi)有遇到延遲,而在現(xiàn)有技術(shù)中則遇到
延遲。本發(fā)明的實(shí)施例的系統(tǒng)IO基本上吸收任何這類(lèi)延遲。
如本發(fā)明的實(shí)施例所進(jìn)行的通過(guò)系統(tǒng)10的緩沖狀態(tài)、命令、控 制和數(shù)據(jù)通過(guò)釋放SAS鏈路以便允許另一個(gè)始發(fā)器使用它,使得系 統(tǒng)能夠改進(jìn)。通過(guò)如在數(shù)據(jù)管理中進(jìn)行的那樣緩沖整個(gè)幀,與SATA 裝置關(guān)聯(lián)的延遲保持為透明。
圖15示出SATA裝置相對(duì)于命令的數(shù)量的性能的圖表。也就是 說(shuō),在x軸上示出命令的數(shù)量,而在y軸上示出系統(tǒng)的性能。系統(tǒng)的 峰值性能在32個(gè)命令之前出現(xiàn),并且此后實(shí)際上減小,在32命令點(diǎn) 附近,性能保持恒定。命令的峰值性能數(shù)量被計(jì)算并且存儲(chǔ)在狀態(tài)機(jī) 118中。狀態(tài)機(jī)118在表116中僅搜索命令的峰值性能數(shù)量減1,通 過(guò)這種方式縮短與命令的搜索關(guān)聯(lián)的時(shí)間。在圖15的圖表中看到, 通過(guò)提高SATA裝置的性能,減少發(fā)送給SATA裝置的命令的數(shù)量 還提高系統(tǒng)性能。
圖16示出從主機(jī)接收到命令時(shí)由CMS 94所執(zhí)行的步驟的流程
28圖。首先,在步驟200,從空閑隊(duì)列指針表93檢索空閑或可用指針。 如果指針可用,則該過(guò)程進(jìn)入步驟202,但是,如果沒(méi)有空閑指針可 用,則在204存在故障,并且記錄錯(cuò)誤狀況。
在步驟202,檢查所接收命令本身,以便確定它是否為有效或理 解的命令,以及如果是,則該過(guò)程繼續(xù)進(jìn)行到206,而如果不是,則 該過(guò)程繼續(xù)進(jìn)行到204。在206,確定命令是否排隊(duì),以及如果是, 則該過(guò)程轉(zhuǎn)到步驟208,否則,該過(guò)程繼續(xù)進(jìn)行到210。在步驟210,
所接收命令存儲(chǔ)在命令緩沖器110中,并且例如始發(fā)器編號(hào)、排隊(duì)或 非排隊(duì)命令狀態(tài)等的所接收命令的屬性以及其它關(guān)聯(lián)屬性存儲(chǔ)在表
112中。在其它實(shí)施例中,命令屬性可以是與命令有關(guān)的其它信息。
在步驟208,通知狀態(tài)管理器120或121發(fā)送釋放,在釋放完成 時(shí),實(shí)際上釋放了或者空閑了狀態(tài)管理器通過(guò)CPM與其耦合并且其 曾正在接收該命令的鏈路。隨后,在步驟210,將所接收命令放入或 者存儲(chǔ)在位置114中。
圖17示出由(圖9的)CSM94的狀態(tài)機(jī)118所執(zhí)行的相關(guān)步驟。 在212,在位置114中存在尚未發(fā)送給驅(qū)動(dòng)器、因而處于隊(duì)列中(在位 置114)等待被服務(wù)的掛起命令。隨后,在步驟214,確定當(dāng)前(或掛 起)命令(或者隊(duì)列中下一個(gè)被服務(wù)的命令)是否為'排隊(duì),命令。如果確 定命令是排隊(duì)命令,則該過(guò)程進(jìn)入218,如果不是,則該過(guò)程繼續(xù)進(jìn) 行到216。
在218,狀態(tài)機(jī)118確定SATA裝置是否處于隊(duì)列模式,以及如 果是,則該過(guò)程繼續(xù)進(jìn)行到224,而如果不是,則該過(guò)程繼續(xù)進(jìn)行到 步驟220。狀態(tài)機(jī)118中的狀態(tài)位指示隊(duì)列/非隊(duì)列模式。隊(duì)列模式與 具有排隊(duì)命令相同,而非隊(duì)列模式與具有非排隊(duì)命令相同。隊(duì)列模式 允許向ATA裝置發(fā)送一個(gè)以上命令,而非隊(duì)列模式僅允許向其發(fā)送 一個(gè)命令。SATA標(biāo)準(zhǔn)定義隊(duì)列模式和非隊(duì)列模式。
在步驟220,花費(fèi)時(shí)間等待表116變空、即離開(kāi)隊(duì)列模式,類(lèi)似 地,花費(fèi)時(shí)間等待清空狀態(tài)管理器U8,并且當(dāng)這種情況發(fā)生時(shí),執(zhí)行步驟222,其中狀態(tài)機(jī)118中的狀態(tài)設(shè)置成隊(duì)列模式,以及過(guò)程進(jìn) 入218,其中確定狀態(tài)機(jī)118處于隊(duì)列模式。
隨后,在224,確定表116中的位置是否可用,以及如果是,則 過(guò)程轉(zhuǎn)到步驟226,而如果不是,則花費(fèi)時(shí)間等待位置在116中變?yōu)?可用。隨后,在步驟226,將要發(fā)送給SATA驅(qū)動(dòng)器或裝置的命令從 位置U4移到表116。隨后,在步驟228,將命令發(fā)送給SATA裝置, 以及該過(guò)程回到步驟212。
圖18中,示出在圖17的步驟214確定所接收命令不是排隊(duì)命令 之后由狀態(tài)機(jī)118所執(zhí)行的相關(guān)步驟。圖18中,在216之后,在230 確定狀態(tài)機(jī)118是否處于隊(duì)列模式,以及如果是,則該過(guò)程進(jìn)入步驟 232,其中花費(fèi)時(shí)間等待表116變空,并且當(dāng)它確實(shí)是時(shí),執(zhí)行下一 個(gè)步驟234。在步驟234,狀態(tài)機(jī)118設(shè)置為非隊(duì)列模式,以及該過(guò) 程繼續(xù)進(jìn)行到230。如果在230確定狀態(tài)機(jī)118處于隊(duì)列模式,則執(zhí) 行步驟236。在步驟236,經(jīng)歷時(shí)間等待表116變空。 一旦表116變 空,則將命令發(fā)送給SATA裝置,以及該過(guò)程返回到圖17的步驟212。
圖19-21示出當(dāng)SATA裝置或驅(qū)動(dòng)器向主機(jī)或始發(fā)器返回狀態(tài)時(shí) 所執(zhí)行的相關(guān)步驟。圖19中,在步驟240, SATA裝置或驅(qū)動(dòng)器向裝 置80返回或回送狀態(tài),裝置80由狀態(tài)機(jī)119管理。狀態(tài)機(jī)119確定 當(dāng)前模式是否為排隊(duì)模式。如果模式是隊(duì)列模式,則在步驟244,狀 態(tài)由狀態(tài)機(jī)119來(lái)解碼。隨后,在步驟246,狀態(tài)管理器120或121 的保持寄存器中的位按照解碼的狀態(tài)來(lái)設(shè)置,以便將狀態(tài)轉(zhuǎn)發(fā)給主 才幾,以及該過(guò)程繼續(xù)進(jìn)行到248。
如果在242確定模式不是隊(duì)列模式,則該過(guò)程繼續(xù)進(jìn)行到步驟 250,其中把從SATA裝置所接收的狀態(tài)信息發(fā)送給狀態(tài)管理器120 或121,以及該過(guò)程繼續(xù)進(jìn)行到248。
圖20中,在248之后,在252確定是否已經(jīng)進(jìn)行手動(dòng)狀態(tài)請(qǐng)求, 以及如果是,則該過(guò)程繼續(xù)進(jìn)行到步驟254,并且手動(dòng)發(fā)送SATA裝 置的狀態(tài)。如果在252的確定產(chǎn)生沒(méi)有發(fā)送手動(dòng)狀態(tài)請(qǐng)求,則該過(guò)程繼續(xù)進(jìn)行到256,其中進(jìn)行關(guān)于隊(duì)列模式的確定,以及如果確定當(dāng)前 模式是隊(duì)列模式,則該過(guò)程繼續(xù)進(jìn)行到258,然而,如果沒(méi)有檢測(cè)到 隊(duì)列模式,則該過(guò)程繼續(xù)進(jìn)行到260,其中進(jìn)行另一個(gè)確定。在260, 確定命令狀態(tài)是否可用,以及如果是,則該過(guò)程繼續(xù)進(jìn)行到步驟262, 而如果不是,則該過(guò)程回到252。
如果在260確定命令狀態(tài)可用,則在步驟262向主^L或始發(fā)器發(fā) 送命令狀態(tài)。隨后,在步驟264,如果可用,則更新表116以便反映 下一個(gè)掛起狀態(tài)。此外,在步驟266,更新表93以便使曾被使用的 指針再次可用。類(lèi)似地,在步驟268,更新表112。
在258之后,該過(guò)程繼續(xù)進(jìn)行到圖21中的270,其中由CSM94 確定命令狀態(tài)是否可用,以及如果確定命令狀態(tài)不可用,則該過(guò)程繼 續(xù)進(jìn)行到圖19中的步驟240,否則該過(guò)程繼續(xù)進(jìn)行到步驟272。在步 驟272,將最高優(yōu)先級(jí)狀態(tài)發(fā)送給始發(fā)器。在274,確定狀態(tài)是否成 功地發(fā)送給始發(fā)器,以及如果是,則該過(guò)程繼續(xù)進(jìn)行到步驟276,否 則該過(guò)程繼續(xù)進(jìn)行到步驟240。
在步驟276,根據(jù)在步驟272已經(jīng)發(fā)送的前一個(gè)最高優(yōu)先級(jí)狀態(tài) 來(lái)更新優(yōu)先級(jí)狀態(tài)。隨后,在步驟278,如果可用,則更新表116以 便反映下一個(gè)掛起狀態(tài)。此外,在步驟280更新表112,類(lèi)似地,在 步驟282更新表93,以便使指針可用。在步驟282,該過(guò)程回到步驟 240。
各狀態(tài)管理器120和121還跟蹤服務(wù)來(lái)自始發(fā)器的請(qǐng)求的公平 性,以便實(shí)現(xiàn)被服務(wù)的請(qǐng)求的公平性。這種公平性策略基于來(lái)自始發(fā) 器的最早請(qǐng)求首先被服務(wù),并且還基于關(guān)于是否為忙的始發(fā)器的狀 態(tài)。通過(guò)檢查圖13中的重試定時(shí)器171,狀態(tài)管理器知道始發(fā)器是 否為忙。當(dāng)確定始發(fā)器為忙時(shí),SAS引擎啟動(dòng)定時(shí)器171,以及當(dāng)定 時(shí)器171到期時(shí),SAS引擎清除由狀態(tài)管理器檢查以便確定始發(fā)器的 可用性的狀態(tài)位。
來(lái)自不忙的始發(fā)器的最早請(qǐng)求首先被服務(wù),之后是來(lái)自不忙的始發(fā)器的下一個(gè)最早請(qǐng)求,依此類(lèi)推。 一旦服務(wù)了來(lái)自始發(fā)器的請(qǐng)求, 則將該請(qǐng)求移到請(qǐng)求列表的底部。因此,在其中使用表或鏈接列表的 情況下,來(lái)自不忙的始發(fā)器的位于表或鏈接列表頂部的請(qǐng)求被服務(wù), 并且在其已經(jīng)被服務(wù)之后移到表或鏈接列表的底部。
圖22示出在增強(qiáng)上述公平性策略方面由狀態(tài)管理器120或121 所執(zhí)行的相關(guān)步驟。在步驟290,假定存在掛起狀態(tài)并且該狀態(tài)不為 空,則下一個(gè)步驟292將取對(duì)于始發(fā)器的掛起請(qǐng)求的頂部條目(在本 發(fā)明的一個(gè)實(shí)施例中,這些請(qǐng)求在表或鏈接列表中,如前面所述), 然后在294,確定在步驟292取其請(qǐng)求的始發(fā)器是否忙,以及如果是, 則不處理所取條目,而是在步驟296,從請(qǐng)求的表或鏈接列表的頂部 取下一個(gè)條目,并且在294檢查在步驟296取其條目的始發(fā)器的繁忙 性。當(dāng)檢測(cè)到始發(fā)器為忙時(shí),啟動(dòng)圖13的重試定時(shí)器171,以便允
許狀態(tài)管理器知道忽略這個(gè)條目并且將它保持在優(yōu)先級(jí)列表的頂部。
如果在294發(fā)現(xiàn)始發(fā)器不忙,則在步驟298響應(yīng)所取條目或請(qǐng)求 而向始發(fā)器發(fā)送狀態(tài)。隨后,在300,校驗(yàn)所發(fā)送狀態(tài)是否成功,以 及如果確定狀態(tài)未成功發(fā)送,則該過(guò)程回到步驟290,否則該過(guò)程繼 續(xù)進(jìn)行到步驟302。
在步驟302,不在請(qǐng)求的表中的來(lái)自始發(fā)器的新條目或請(qǐng)求被加 入表或列表的底部。也就是說(shuō),更新表以便包括附加請(qǐng)求,但是按照 公平性策略,將新請(qǐng)求加入表的底部。
隨后,在308確定是否存在掛起的始發(fā)器的更多狀態(tài),以及如果 是,則該過(guò)程繼續(xù)進(jìn)行到步驟306,否則該過(guò)程回到步驟290。在步 驟306,如果確定存在來(lái)自始發(fā)器的其它條目或請(qǐng)求,則附加請(qǐng)求/ 條目存儲(chǔ)在條目的列表或表的底部。
圖23示出當(dāng)SATA裝置響應(yīng)始發(fā)器的請(qǐng)求而返回狀態(tài)時(shí)的相關(guān) 步驟。首先,在步驟310,從DRVM 98返回SATA裝置的狀態(tài)。在 一個(gè)實(shí)施例中,這是32位的值,但是大家理解,該值的長(zhǎng)度以及格 式可以不同。隨后,執(zhí)行表116的映射,如上所述。隨后,在步驟312,將可能到達(dá)或離開(kāi)的當(dāng)前狀態(tài)與狀態(tài)管理器120或121中的存 儲(chǔ)的狀態(tài)進(jìn)行比較(由后者)。存儲(chǔ)的狀態(tài)位于保持狀態(tài)寄存器314 中。
圖24示出每個(gè)狀態(tài)寄存器120和121中包含的示范保持狀態(tài)寄 存器314。寄存器314比較進(jìn)入狀態(tài)管理器的狀態(tài),以及類(lèi)似地比較 離開(kāi)寄存器314的狀態(tài)。
現(xiàn)在參照?qǐng)D25,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的存儲(chǔ)器系統(tǒng) 1000,它包括與一組擴(kuò)展器1400、 E0和El耦合的一組始發(fā)器1200、 IO和Il,其中擴(kuò)展器組與通信系統(tǒng)1600進(jìn)行通信。大家要理解,雖 然示出兩個(gè)始發(fā)器和兩個(gè)擴(kuò)展器,但是可采用任何數(shù)量的始發(fā)器和擴(kuò) 展器。系統(tǒng)1600可被認(rèn)為是'目標(biāo)'。擴(kuò)展器EO和El用作交換機(jī), 并且通常具有與其連接的許多目標(biāo)和/或擴(kuò)展器的分級(jí)結(jié)構(gòu)??蛇x地, 沒(méi)有使用擴(kuò)展器,又可選地,始發(fā)器可位于擴(kuò)展器之內(nèi)。系統(tǒng)1000 的拓樸結(jié)構(gòu)總體上是靈活可變的。IO示為與E0和E1耦合,而I1示 為與E1、與EO耦合,以及E0和E1示為相互耦合。
系統(tǒng)1000示為與SATA磁盤(pán)驅(qū)動(dòng)器1800耦合。磁盤(pán)驅(qū)動(dòng)器1800 是SATA驅(qū)動(dòng)器,因此使用SATA標(biāo)準(zhǔn)與系統(tǒng)IOOO進(jìn)行通信。系統(tǒng) 1000示為包括兩個(gè)端口、即端口 2000和2200,用于引起使用SAS 接口與擴(kuò)展器EO和El進(jìn)行通信。系統(tǒng)1000使用第三端口 2400來(lái) 使用SATA標(biāo)準(zhǔn)協(xié)議與驅(qū)動(dòng)器1800進(jìn)行通信。驅(qū)動(dòng)器1800為雙端口 型,具有可同時(shí)為活動(dòng)的一個(gè)以上通信路徑。
雖然圖25中未示出,但是在實(shí)際應(yīng)用中,系統(tǒng)1000可包括與驅(qū) 動(dòng)器1800相似的、耦合到擴(kuò)展器的許多驅(qū)動(dòng)器。例如,擴(kuò)展器2600 可與許多驅(qū)動(dòng)器耦合,以及與擴(kuò)展器2600不同的其它擴(kuò)展器(未示出) 可用于還將其它驅(qū)動(dòng)器與系統(tǒng)耦合。在上述系統(tǒng)中,通常還存在許多 始發(fā)器。其本身作為系統(tǒng)10的示例應(yīng)用的圖25的系統(tǒng)1000的一些 示例應(yīng)用包括但不限于文檔存儲(chǔ)和檢索、照片存儲(chǔ)和檢索、會(huì)計(jì)軟件 存儲(chǔ)和檢索以及基本上使用RAID的任何其它應(yīng)用。由于所采用的大
33存儲(chǔ)容量,具有到裝置、如始發(fā)器的多個(gè)路徑非常合乎需要,如為與 狀態(tài)和錯(cuò)誤有關(guān)的各種信息。這顯然允許更大的靈活性、更好的性能 性能以及更低的成本以及其它有益效果。
驅(qū)動(dòng)器1800與RAID相似,^a它為雙端口型,并且由將驅(qū)動(dòng)器 用于存儲(chǔ)電子信息的始發(fā)器來(lái)訪問(wèn)。在存在所使用的一個(gè)以上始發(fā)器 的情況下,出現(xiàn)多個(gè)問(wèn)題,例如始發(fā)器都要求訪問(wèn)驅(qū)動(dòng)器,它們通過(guò) 本文所述的各個(gè)實(shí)施例和方法來(lái)解決。
雖然根據(jù)具體實(shí)施例來(lái)描述了本發(fā)明,但是預(yù)計(jì)本領(lǐng)域的技術(shù)人
員肯定非常清楚對(duì)它的變更和修改。因此,以下權(quán)利要求書(shū)預(yù)計(jì)被理 解為涵蓋落入本發(fā)明的精神和范圍之內(nèi)的所有這類(lèi)變更和修改。本領(lǐng) 域的技術(shù)人員清楚地知道將本發(fā)明與現(xiàn)有技術(shù)結(jié)合以便開(kāi)發(fā)執(zhí)行包 括本發(fā)明的理論的多個(gè)功能的裝置和方法。這類(lèi)裝置和方法落入本發(fā) 明的范圍之內(nèi)。
權(quán)利要求
1.一種配置成符合SATA標(biāo)準(zhǔn)并且引起一個(gè)或多個(gè)主機(jī)與SATA裝置之間的通信的通信系統(tǒng),包括多端口橋接裝置,包括可響應(yīng)于來(lái)自一個(gè)或多個(gè)主機(jī)的命令和狀態(tài)的命令狀態(tài)管理器(CSM);以及數(shù)據(jù)管理器(DM),可響應(yīng)于來(lái)自一個(gè)或多個(gè)主機(jī)的數(shù)據(jù),用于基本上與命令和狀態(tài)分開(kāi)地緩沖數(shù)據(jù)。
2. 如權(quán)利要求1所述的通信系統(tǒng),還包括第一連接協(xié)議管理 器(CPM),與所述CSM耦合并且可響應(yīng)于來(lái)自所述一個(gè)或多個(gè)主機(jī) 的第一主機(jī)的命令和狀態(tài);以及第二CPM,與所述CSM耦合并且可 響應(yīng)于來(lái)自所述一個(gè)或多個(gè)主機(jī)的第二主機(jī)的命令和狀態(tài)。
3. 如權(quán)利要求2所述的通信系統(tǒng),還包括第一SAS端口,耦 合在所述第一CPM與所述第一主機(jī)之間,用于接收命令、數(shù)據(jù)和狀 態(tài)。
4. 如權(quán)利要求3所述的通信系統(tǒng),還包括第二SAS端口,耦 合在所述第二CPM與所述第二主機(jī)之間,用于接收命令、數(shù)據(jù)和狀 態(tài)。
5. 如權(quán)利要求4所述的通信系統(tǒng),還包括驅(qū)動(dòng)管理器(DRVM), 與所述CSM和DM耦合,用于引起在SATA裝置與所述一個(gè)或多個(gè) 主機(jī)之間傳遞狀態(tài)、命令和數(shù)據(jù)。
6. 如權(quán)利要求5所述的通信系統(tǒng),其中,所述CSM還包括第一 入局緩沖器和第二入局緩沖器,所述第一緩沖器與所述第一 CPM耦 合,而所述第二入局緩沖器與所述第二CPM耦合。
7. 如權(quán)利要求6所述的通信系統(tǒng),其中,所述CSM還包括命令 處理狀態(tài)機(jī),與所述第一和第二入局緩沖器耦合,用于處理命令。
8. 如權(quán)利要求7所述的通信系統(tǒng),其中,所述CSM還包括命令緩沖器,與所述命令處理狀態(tài)機(jī)耦合,用于接收和存儲(chǔ)來(lái)自所述一個(gè) 或多個(gè)主機(jī)的命令。
9. 如權(quán)利要求8所述的通信系統(tǒng),其中,所述CSM還包括命令 屬性表,與所述命令處理狀態(tài)機(jī)耦合,用于接收和存儲(chǔ)與來(lái)自所述一 個(gè)或多個(gè)主機(jī)的命令關(guān)聯(lián)的屬性。
10. 如權(quán)利要求9所述的通信系統(tǒng),其中,所述CSM還包括由 所述命令處理狀態(tài)機(jī)所訪問(wèn)的命令掛起表,用于存儲(chǔ)從所述一個(gè)或多 個(gè)主機(jī)所接收的命令。
11. 如權(quán)利要求10所述的通信系統(tǒng),其中,所述命令掛起表是 用于當(dāng)從所述一個(gè)或多個(gè)主機(jī)所接收的命令到達(dá)時(shí)對(duì)指向所述命令 的指針進(jìn)行存儲(chǔ)或排隊(duì)的隊(duì)列。
12. 如權(quán)利要求10所述的通信系統(tǒng),其中,所述命令掛起表是 基于先到先服務(wù)的鏈接列表。
13. 如權(quán)利要求10所述的通信系統(tǒng),其中,所述命令掛起表是
14. 如權(quán)利要求10所述的通信系統(tǒng),其中,所述命令掛起表包 括具有命令指針的鏈接列表的第一列表以及作為優(yōu)先級(jí)列表并且包 括可根據(jù)比其它入局命令更高的優(yōu)先級(jí)而被亂序服務(wù)的優(yōu)先考慮命 令的列表的第二列表。
15. 如權(quán)利要求14所述的通信系統(tǒng),其中,所述第二列表使在 被服務(wù)的命令的優(yōu)先級(jí)的變化對(duì)于耦合到所述系統(tǒng)的主機(jī)保持為透 明。
16. 如權(quán)利要求IO所述的通信系統(tǒng),其中,所述CSM還包括命 令發(fā)布狀態(tài)機(jī),與所述命令掛起表耦合,用于引起從所述一個(gè)或多個(gè) 主機(jī)向所述SATA裝置發(fā)出命令。
17. 如權(quán)利要求10所述的通信系統(tǒng),其中,所述命令發(fā)布狀態(tài) 機(jī)引起多個(gè)始發(fā)器向SAS端口發(fā)送命令,其是在完成將其它始發(fā)器 命令送往同一或不同的SAS端口之前。
18. 如權(quán)利要求17所述的通信系統(tǒng),其中,所述命令發(fā)布狀態(tài) 機(jī)使用峰值性能命令數(shù)量作為發(fā)送給SATA裝置的命令的數(shù)量。
19. 如權(quán)利要求17所述的通信系統(tǒng),其中,所述CSM還包括驅(qū) 動(dòng)器隊(duì)列表,與所述命令發(fā)布狀態(tài)機(jī)耦合,用于將確定為由所述命令 發(fā)布狀態(tài)機(jī)向所述SATA驅(qū)動(dòng)器發(fā)出的命令進(jìn)行排隊(duì)。
20. 如權(quán)利要求17所述的通信系統(tǒng),其中,所述驅(qū)動(dòng)器隊(duì)列表 包括行和列,'有效,位列包括與關(guān)聯(lián)行的命令的有效性有關(guān)的信息, 指向命令緩沖器的指針列包括各指向所述命令緩沖器中的位置并且 指向所述命令屬性表中的位置的關(guān)聯(lián)索引的指針,始發(fā)器編號(hào)列包括 各與索引關(guān)聯(lián)的始發(fā)器編號(hào),以及始發(fā)器標(biāo)簽列包括最初由始發(fā)器發(fā) 送給所述系統(tǒng)的標(biāo)簽。
21. 如權(quán)利要求19所述的通信系統(tǒng),其中,所述CSM還包括與 所述第一CPM耦合的第一入局狀態(tài)管理器。
22. 如權(quán)利要求21所述的通信系統(tǒng),其中,所述CSM還包括與 所述第二 CPM耦合的第二入局狀態(tài)管理器。
23. 如權(quán)利要求22所述的通信系統(tǒng),其中,所述CSM還包4舌入 局狀態(tài)狀態(tài)機(jī),經(jīng)耦合以便從所述SATA裝置接收狀態(tài)并且向所述第 一或第二狀態(tài)管理器提供所接收的狀態(tài)。
24. 如權(quán)利要求23所述的通信系統(tǒng),其中,所述CSM還包括命 令計(jì)數(shù)器,與所述命令處理器狀態(tài)機(jī)耦合,用于對(duì)于從所述一個(gè)或多 個(gè)主機(jī)所接收的命令計(jì)數(shù)。
25. 如權(quán)利要求24所述的通信系統(tǒng),其中,所述CSM還包括空 閑隊(duì)列指針位置,與所述命令處理器狀態(tài)機(jī)和所述第一和第二狀態(tài)管 理器耦合,用于存儲(chǔ)與指向命令的指針的可用性有關(guān)的信息。
26. 如權(quán)利要求25所述的通信系統(tǒng),其中,所述CSM還包括搜 索引擎,與所述命令屬性表耦合,還與所述驅(qū)動(dòng)器隊(duì)列表耦合,并且 還與所述第一和第二入局狀態(tài)管理器耦合,用于對(duì)其進(jìn)行搜索。
27. 如權(quán)利要求5所述的通信系統(tǒng),其中,所述DM包括用于存儲(chǔ)至少 一個(gè)數(shù)據(jù)幀的數(shù)據(jù)緩沖器。
28. 如權(quán)利要求27所述的通信系統(tǒng),其中,所述DM包括用于 存儲(chǔ)從SATA裝置所接收的控制FIS的控制FIS緩沖器。
29. 如權(quán)利要求4所述的通信系統(tǒng),其中,所述一個(gè)或多個(gè)主才幾 是通過(guò)SAS鏈路與所述橋接裝置耦合的始發(fā)器。
30. 如權(quán)利要求5所述的通信系統(tǒng),其中,所述第一SAS端口包 括第一SAS引擎,可響應(yīng)于通過(guò)第一SAS鏈路來(lái)自和送往始發(fā)器的 信息,并且可操作以將信息從SATA驅(qū)動(dòng)器傳遞給所述始發(fā)器。
31. 如權(quán)利要求30所述的通信系統(tǒng),其中,所述第二SAS端口 包括第二SAS引擎,可響應(yīng)于通過(guò)第二SAS鏈路來(lái)自和送往始發(fā)器 的信息,并且可操作以將信息從SATA驅(qū)動(dòng)器傳遞給所述始發(fā)器。
32. 如權(quán)利要求31所述的通信系統(tǒng),其中,所述第一和第二SAS 引擎的每個(gè)包括SMP緩沖器和狀態(tài)機(jī),用于引起進(jìn)行到它們各自 SAS鏈路的連接。
33. 如權(quán)利要求32所述的通信系統(tǒng),還包括與所述裝置耦合 的微處理器,用于執(zhí)行各種任務(wù)。
34. 如權(quán)利要求33所述的通信系統(tǒng),還包括與所述裝置耦合 的通用輸入/輸出(GPK))。
35. 如權(quán)利要求1所述的通信系統(tǒng),其中,所述裝置是終端裝置, 它是用于控制SATA裝置的STP目標(biāo)或SMP目標(biāo)。
36. 如權(quán)利要求16所述的通信系統(tǒng),其中,所述命令發(fā)布狀態(tài) 才幾動(dòng)態(tài)地使標(biāo)簽從主才幾分配給所述裝置。
37. 如權(quán)利要求1所述的通信系統(tǒng),其中,發(fā)送給SATA裝置的 命令的數(shù)量限制到指示所述系統(tǒng)的峰值性能的閾值數(shù)量。
38. —種將掛起命令從始發(fā)器傳遞給SATA裝置的方法,包括 確定掛起命令是否為排隊(duì)命令;在確定所述掛起命令為排隊(duì)命令時(shí),確定所述SATA裝置是否處 于隊(duì)列模式;在確定所述掛起命令為排隊(duì)命令時(shí),確定驅(qū)動(dòng)器隊(duì)列表中的位置是否可用;如果確定所述表中的位置可用,則將所述排隊(duì)命令存儲(chǔ)到所述 表;以及將存儲(chǔ)的排隊(duì)命令傳遞給所述SATA裝置。
39. 如權(quán)利要求38所述的傳遞方法,其中,在確定所述掛起命 令為排隊(duì)命令時(shí),設(shè)置排隊(duì)模式。
40. 如權(quán)利要求38所述的傳遞方法,其中,在確定所述掛起命 令為非排隊(duì)命令時(shí),設(shè)置非排隊(duì)模式。
41. 一種從一個(gè)或多個(gè)始發(fā)器傳遞送往SATA裝置的命令的方 法,包括接收命令;確定用于指向其中可存儲(chǔ)所述命令的位置的空閑指針; 使用所述空閑指針來(lái)定位其中將存儲(chǔ)所述命令的存儲(chǔ)位置; 將所述命令存儲(chǔ)在所述指針?biāo)ㄎ坏乃龃鎯?chǔ)位置中; 優(yōu)先考慮用于傳遞給所述SATA裝置的所存儲(chǔ)的命令;以及 將所述優(yōu)先考慮的命令傳遞給所述SATA裝置。
42. —種將SATA驅(qū)動(dòng)器的狀態(tài)傳遞給主機(jī)的方法,包括 接收來(lái)自所述SATA驅(qū)動(dòng)器的狀態(tài);確定當(dāng)前模式是否為排隊(duì)模式;如果所述模式確定為排隊(duì)模式,則對(duì)所接收狀態(tài)進(jìn)行解碼,并且 按照所解碼的狀態(tài)來(lái)設(shè)置保持寄存器中的位,而如果確定所述模式不 是排隊(duì)模式,則發(fā)送所接收的狀態(tài);確定是否已經(jīng)進(jìn)行手動(dòng)狀態(tài)請(qǐng)求;如果確定已經(jīng)進(jìn)行手動(dòng)狀態(tài)請(qǐng)求,則手動(dòng)發(fā)送所接收的狀態(tài); 如果確定尚未進(jìn)行手動(dòng)狀態(tài)請(qǐng)求,則確定所述模式是否為隊(duì)列模式;如果確定所述模式不是隊(duì)列模式,則發(fā)送所接收的狀態(tài);更新驅(qū)動(dòng)器隊(duì)列表; 更新空閑隊(duì)列指針;以及 更新命令屬性表。
43. 如權(quán)利要求42所述的傳遞狀態(tài)的方法,還包括以下步驟 在確定尚未進(jìn)行手動(dòng)狀態(tài)請(qǐng)求并且所述模式為排隊(duì)時(shí),確定命令狀態(tài) 是否可用,以及如果確定所述命令狀態(tài)不可用,則繼續(xù)進(jìn)行到從所述 驅(qū)動(dòng)器接收狀態(tài)的步驟,而如果確定所述命令狀態(tài)可用,則向始發(fā)器 發(fā)送最高優(yōu)先級(jí)狀態(tài),并且如果可用,則更新驅(qū)動(dòng)器隊(duì)列表以便反映 下一個(gè)掛起狀態(tài)。
44. 如權(quán)利要求43所述的傳遞狀態(tài)的方法,還包括更新命令屬 性表并且更新空閑隊(duì)列表的步驟。
45. —種存儲(chǔ)器系統(tǒng),包括 多個(gè)始發(fā)器; SATA驅(qū)動(dòng)器;目標(biāo),耦合在所述始發(fā)器與所述SATA驅(qū)動(dòng)器之間,并且具有至 少兩個(gè)SAS端口 ,可操作以便在所述始發(fā)器與所述SATA驅(qū)動(dòng)器之 間基本上分開(kāi)地緩沖數(shù)據(jù)、命令和狀態(tài)流。
46. —種SAS-至-SATA轉(zhuǎn)換裝置,包括可響應(yīng)于來(lái)自一個(gè)或多個(gè)主機(jī)的命令和狀態(tài)的命令狀態(tài)管理器 (CSM);以及可響應(yīng)于來(lái)自一個(gè)或多個(gè)主機(jī)的數(shù)據(jù)的數(shù)據(jù)管理器(DM); 其中,單獨(dú)管理數(shù)據(jù)、命令和狀態(tài),以便相當(dāng)大地提高系統(tǒng)性能。
47. 如權(quán)利要求46所述的通信系統(tǒng),還包括第一連接協(xié)議管 理器(CPM),與所述CSM耦合并且可響應(yīng)于來(lái)自所述一個(gè)或多個(gè)主 機(jī)的第一主機(jī)的命令和狀態(tài);以及第二CPM,與所述CSM耦合并且 可響應(yīng)于來(lái)自所述一個(gè)或多個(gè)主^L的第二主^L的命令和狀態(tài)。
48. 如權(quán)利要求47所述的通信系統(tǒng),還包括第一SAS端口, 耦合在所述第一CPM與所述第一主機(jī)之間,用于接收命令、數(shù)據(jù)和狀態(tài)。
49. 如權(quán)利要求48所述的通信系統(tǒng),還包括第二 SAS端口 , 耦合在所述第二CPM與所述第二主機(jī)之間,用于接收命令、數(shù)據(jù)和狀態(tài)。
50. 如權(quán)利要求49所述的通信系統(tǒng),還包括驅(qū)動(dòng)管理器 (DRVM),與所述CSM和DM耦合,用于引起在SATA裝置與所述 一個(gè)或多個(gè)主機(jī)之間傳遞狀態(tài)、命令和數(shù)據(jù)。
51. 如權(quán)利要求50所述的通信系統(tǒng),其中,所述CSM還包括第 一入局緩沖器和第二入局緩沖器,所述第一緩沖器與所述第一 CPM 耦合,而所述第二入局緩沖器與所述第二CPM耦合。
52. 如權(quán)利要求51所述的通信系統(tǒng),其中,所述CSM還包括命 令處理狀態(tài)機(jī),與所迷第一和第二入局緩沖器耦合,用于處理命令。
53. 如權(quán)利要求52所述的通信系統(tǒng),其中,所述CSM還包括命 令緩沖器,與所述命令處理狀態(tài)機(jī)耦合,用于接收和存儲(chǔ)來(lái)自所述一 個(gè)或多個(gè)主才幾的命令。
54. 如權(quán)利要求53所述的通信系統(tǒng),其中,所述CSM還包括命 令屬性表,與所述命令處理狀態(tài)機(jī)耦合,用于接收和存儲(chǔ)與來(lái)自所述 一個(gè)或多個(gè)主機(jī)的命令關(guān)聯(lián)的屬性。
55. 如權(quán)利要求54所述的通信系統(tǒng),其中,所述CSM還包括由 所述命令處理狀態(tài)機(jī)所訪問(wèn)的命令掛起表,用于存儲(chǔ)從所述一個(gè)或多 個(gè)主機(jī)所接收的命令。
56. 如權(quán)利要求55所述的通信系統(tǒng),其中,所述命令掛起表是 用于當(dāng)從所述一個(gè)或多個(gè)主機(jī)所接收的命令到達(dá)時(shí)對(duì)指向所述命令 的指針進(jìn)行存儲(chǔ)或排隊(duì)的隊(duì)列。
57. 如權(quán)利要求56所述的通信系統(tǒng),其中,所述命令掛起表是 基于先到先服務(wù)的鏈接列表。
58. 如權(quán)利要求57所述的通信系統(tǒng),其中,所述命令掛起表是
59. 如權(quán)利要求58所述的通信系統(tǒng),其中,所述命令掛起表包 括具有命令指針的鏈接列表的第一列表以及作為優(yōu)先級(jí)列表并且包括可根據(jù)比其它入局命令更高的優(yōu)先級(jí)而被亂序服務(wù)的優(yōu)先考慮命 令的列表的第二列表。
60. 如權(quán)利要求59所述的通信系統(tǒng),其中,所述第二列表使在 被服務(wù)的命令的優(yōu)先級(jí)的變化對(duì)于耦合到所述系統(tǒng)的主機(jī)保持為透明。
61. 如權(quán)利要求60所述的通信系統(tǒng),其中,所述CSM還包括命 令發(fā)布狀態(tài)機(jī),與所述命令掛起表耦合,用于引起從所述一個(gè)或多個(gè) 主機(jī)向所述SATA裝置發(fā)出命令。
62. 如權(quán)利要求61所述的通信系統(tǒng),其中,所述命令發(fā)布狀態(tài) 機(jī)引起多個(gè)始發(fā)器向SAS端口發(fā)送命令,其在完成其它始發(fā)器命令 送往同一或不同SAS端口之前。
63. 如權(quán)利要求62所述的通信系統(tǒng),其中,所述命令發(fā)布狀態(tài) 機(jī)使用峰值性能命令數(shù)量作為發(fā)送給SATA裝置的命令的數(shù)量。
64. 如權(quán)利要求63所述的通信系統(tǒng),其中,所述CSM還包括驅(qū) 動(dòng)器隊(duì)列表,與所述命令發(fā)布狀態(tài)機(jī)耦合,用于將確定為由所述命令 發(fā)布狀態(tài)機(jī)向所述SATA驅(qū)動(dòng)器發(fā)出的命令進(jìn)行排隊(duì)。
65. 如權(quán)利要求64所述的通信系統(tǒng),其中,所述驅(qū)動(dòng)器隊(duì)列表 包括行和列,'有效,位列包括與關(guān)聯(lián)行的命令的有效性有關(guān)的信息, 指向命令緩沖器的指針列包括各指向所述命令緩沖器中的位置并且 指向所述命令屬性表中的位置的關(guān)聯(lián)索引的指針,始發(fā)器編號(hào)列包括 各與索引關(guān)聯(lián)的始發(fā)器編號(hào),以及始發(fā)器標(biāo)簽列包括最初由始發(fā)器發(fā) 送給所述系統(tǒng)的標(biāo)簽。
66. 如權(quán)利要求65所述的通信系統(tǒng),其中,所述CSM還包括與 所述第一 CPM耦合的第 一入局狀態(tài)管理器。
67. 如權(quán)利要求66所述的通信系統(tǒng),其中,所述CSM還包括與 所述第二CPM耦合的第二入局狀態(tài)管理器。
68. 如權(quán)利要求67所述的通信系統(tǒng),其中,所述CSM還包括入 局狀態(tài)狀態(tài)機(jī),經(jīng)耦合以便從所述SATA裝置接收狀態(tài)并且向所述第 一或第二狀態(tài)管理器提供所接收狀態(tài)。
69. 如權(quán)利要求68所述的通信系統(tǒng),其中,所述CSM還包括命 令計(jì)數(shù)器,與所述命令處理器狀態(tài)機(jī)耦合,用于對(duì)于從所述一個(gè)或多 個(gè)主機(jī)所接收的命令計(jì)數(shù)。
70. 如權(quán)利要求69所述的通信系統(tǒng),其中,所述CSM還包括空 閑隊(duì)列指針位置,與所述命令處理器狀態(tài)機(jī)和所述第一、第二狀態(tài)管 理器耦合,用于存儲(chǔ)與指向命令的指針的可用性有關(guān)的信息。
71. 如權(quán)利要求70所述的通信系統(tǒng),其中,所述CSM還包括搜 索引擎,與所述命令屬性表、與所述驅(qū)動(dòng)器隊(duì)列表并且與所述第一和 第二入局狀態(tài)管理器耦合,用于對(duì)它們進(jìn)行搜索。
72. 如權(quán)利要求50所述的通信系統(tǒng),其中,所述DM包括用于 存儲(chǔ)至少 一個(gè)數(shù)據(jù)幀的數(shù)據(jù)緩沖器。
73. 如權(quán)利要求72所述的通信系統(tǒng),其中,所述DM包括用于 存儲(chǔ)從SATA裝置所接收的控制FIS的控制FIS緩沖器。
74. 如權(quán)利要求73所述的通信系統(tǒng),其中,所述一個(gè)或多個(gè)主 機(jī)是通過(guò)SAS鏈路與所述橋接裝置耦合的始發(fā)器。
全文摘要
公開(kāi)本發(fā)明的一個(gè)實(shí)施例,它包括配置成符合SATA標(biāo)準(zhǔn)并且引起一個(gè)或多個(gè)主機(jī)與SATA裝置之間的通信的通信系統(tǒng)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,通信系統(tǒng)包括多端口橋接裝置,它具有可響應(yīng)來(lái)自一個(gè)或多個(gè)主機(jī)的命令和狀態(tài)的命令狀態(tài)管理器(CSM)以及可響應(yīng)來(lái)自一個(gè)或多個(gè)主機(jī)的數(shù)據(jù)、用于基本上與命令和狀態(tài)分開(kāi)地緩沖數(shù)據(jù)的數(shù)據(jù)管理器(DM)。
文檔編號(hào)G06F12/00GK101611383SQ200780047978
公開(kāi)日2009年12月23日 申請(qǐng)日期2007年9月18日 優(yōu)先權(quán)日2006年12月22日
發(fā)明者R·J·斯滕福特 申請(qǐng)人:Lsi公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
若羌县| 兰溪市| 绥中县| 沿河| 石首市| 巴中市| 佛冈县| 泸水县| 淅川县| 丰县| 兴安县| 大余县| 曲阳县| 海口市| 平罗县| 阜康市| 黄龙县| 凭祥市| 西贡区| 鹤壁市| 汤原县| 阜新市| 博客| 神农架林区| 遵义市| 正宁县| 合川市| 涞源县| 博兴县| 鄂托克旗| 西青区| 保德县| 宜黄县| 桃江县| 定边县| 云安县| 安乡县| 竹山县| 格尔木市| 招远市| 宁陵县|