多協(xié)議存儲控制器的制造方法
【專利說明】多協(xié)議存儲控制器
[0001]相關(guān)申請的交叉引用
[0002]本申請要求美國臨時專利申請N0.61/862361(申請日2013年8月5日,“多協(xié)議存儲控制器(Multiprotocol Storage Controller)”)的優(yōu)先權(quán),該申請在此引為參考。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及存儲控制器的領(lǐng)域。
【背景技術(shù)】
[0004]存在眾多的存儲設(shè)備接口,這些存儲設(shè)備接口不斷地向存儲域提出挑戰(zhàn)。例如,基于快捷外部組件互連協(xié)議(PCIe)的存儲設(shè)備現(xiàn)在與串行連接小型計算機(jī)系統(tǒng)接口(SAS)存儲域結(jié)合使用。并且在一些情況下,代替SAS存儲設(shè)備,PCIe存儲設(shè)備被“熱插拔(hot-swapped) ”。然而,PCIe是一種基于分組的無連接傳輸協(xié)議,而SAS是端到端的基于連接的協(xié)議,它不提供無連接傳輸,從而使互操作性尤其有挑戰(zhàn)性。然而更特別地的是,當(dāng)被熱插拔到存儲域中時,采用一種協(xié)議的存儲控制器不能檢測另一種協(xié)議的存儲設(shè)備。
【發(fā)明內(nèi)容】
[0005]這里介紹的系統(tǒng)和方法為把存儲控制器耦接到多種不同種類的存儲設(shè)備創(chuàng)造條件。在一個實(shí)施例中,存儲控制器包括可通信耦接到存儲設(shè)備的接口。存儲控制器還包括處理器,該處理器可操作地在存儲設(shè)備的硬件協(xié)議檢測和存儲設(shè)備的固件協(xié)議檢測之間進(jìn)行選擇,并且當(dāng)存儲設(shè)備通信耦接到所述接口時,按照選擇的協(xié)議檢測,檢測存儲設(shè)備的協(xié)議。存儲控制器隨后根據(jù)檢測的存儲設(shè)備的協(xié)議,選擇協(xié)議來處理來自主機(jī)的輸入/輸出請求。
[0006]作為設(shè)計選擇,可以各種方式實(shí)現(xiàn)這里公開的各個實(shí)施例。例如,實(shí)施例可以采取計算機(jī)硬件、軟件、固件或者它們的組合的形式。下面說明其它的例證實(shí)施例。
【附圖說明】
[0007]現(xiàn)在參考附圖,舉例說明本發(fā)明的一些實(shí)施例。附圖中,相同的附圖標(biāo)記代表相同的元件或者相同類型的元件。
[0008]圖1是可以和不同協(xié)議的設(shè)備一起工作的例證存儲控制器的方框圖。
[0009]圖2是圖1的存儲控制器的例證處理的流程圖。
[0010]圖3是另一個例證存儲控制器的方框圖。
[0011 ] 圖4是圖3的存儲控制器的例證處理的流程圖。
[0012]圖5是圖1和3的存儲控制器的例證硬件協(xié)議檢測方案的示圖。
[0013]圖6是圖3的存儲控制器的另一個例證處理的流程圖。
[0014]圖7是其中計算機(jī)可讀介質(zhì)提供進(jìn)行這里的方法的指令的例證計算系統(tǒng)的方框圖。
【具體實(shí)施方式】
[0015]附圖和下面的說明舉例說明本發(fā)明的具體例證實(shí)施例。從而應(yīng)理解,本領(lǐng)域的技術(shù)人員能夠設(shè)計出各種方案,盡管未在這里被明確說明或表示,不過這些方案具體體現(xiàn)本發(fā)明的原理,從而包含在本發(fā)明的范圍之內(nèi)。此外,這里說明的任何例子是用來幫助理解本發(fā)明的原理,不應(yīng)被解釋成局限于具體記載的例子和條件。從而,本發(fā)明并不局限于下面說明的具體實(shí)施例或例子。
[0016]圖1是可以和不同協(xié)議的設(shè)備一起工作的例證存儲控制器104的方框圖。存儲控制器104可操作地處理主機(jī)系統(tǒng)105的I/O請求,并按照這些I/O請求各自的存儲協(xié)議,把它們引導(dǎo)到各個目標(biāo)設(shè)備110、111和112。例如,在本實(shí)施例中,目標(biāo)設(shè)備110是SAS存儲設(shè)備,目標(biāo)設(shè)備111是PCIe存儲設(shè)備,目標(biāo)設(shè)備112是利用某種其它協(xié)議(例如,串行高級技術(shù)附件(SATA)協(xié)議、基于IP協(xié)議的光纖通道協(xié)議、企業(yè)系統(tǒng)連接、光纖通道協(xié)議、通用串行總線(USB)協(xié)議、因特網(wǎng)串行連接小型計算機(jī)系統(tǒng)接口(ISCSI)協(xié)議等)的存儲設(shè)備。當(dāng)目標(biāo)設(shè)備110、111、112之一耦接到存儲控制器104時,存儲控制器104可操作地借助硬件和/或固件,發(fā)現(xiàn)它所連接的存儲設(shè)備的種類。一旦已發(fā)現(xiàn),存儲控制器104就可借助目標(biāo)設(shè)備110、111、112各自的存儲協(xié)議,處理從主機(jī)系統(tǒng)105到目標(biāo)設(shè)備110、111、112的1/0請求。
[0017]目標(biāo)設(shè)備110、111、112可直接連接存儲控制器104,或者它們可通過存儲系統(tǒng)擴(kuò)展組件,比如擴(kuò)展器103被耦接。例如,一個或多個擴(kuò)展器可操作地直接連接到其它目標(biāo)設(shè)備110、111、112,以及其它擴(kuò)展器,以提供把I/O請求交換到由存儲控制器104確定的適當(dāng)設(shè)備的“交換結(jié)構(gòu)”。擴(kuò)展器103的例子包括可依據(jù)多種協(xié)議比如提及的那些協(xié)議(例如SAS、PCIe, USB、SATA等)工作的寬端口擴(kuò)展器。
[0018]目標(biāo)設(shè)備110、111、112的例子包括存儲設(shè)備,比如磁盤驅(qū)動器和固態(tài)驅(qū)動器(SSD)。在這點(diǎn)上,目標(biāo)設(shè)備110、111、112可代表主機(jī)系統(tǒng)105提供數(shù)據(jù)存儲。主機(jī)系統(tǒng)105可配置對關(guān)于目標(biāo)設(shè)備110、111、112任意之一的輸入/輸出(I/O)操作的讀/寫請求。主機(jī)系統(tǒng)105可以是能夠進(jìn)行I/O操作的任何適當(dāng)?shù)挠嬎阍O(shè)備或系統(tǒng),例如,服務(wù)器、工作站、個人計算機(jī)等。
[0019]存儲控制器104是能夠進(jìn)行設(shè)備發(fā)現(xiàn)、管理對目標(biāo)設(shè)備110、111、112的I/O請求和處理針對目標(biāo)設(shè)備110、111、112的數(shù)據(jù)的I/O命令的任何設(shè)備、系統(tǒng)、軟件,或者它們的組合。例如,存儲控制器104可被實(shí)現(xiàn)成定制電路,實(shí)現(xiàn)成執(zhí)行保存在關(guān)聯(lián)的程序存儲器中的程序指令的專用或通用處理器,或者它們的某種組合。存儲控制器104可以是獨(dú)立的SAS設(shè)備、主機(jī)的主總線適配器(HBA)、或者主機(jī)系統(tǒng)105的集成組件。
[0020]存儲控制器104包括適合于耦接到主機(jī)系統(tǒng)105,并且接收主機(jī)系統(tǒng)105的I/O請求的前端接口。存儲控制器104還包括適合于耦接到并支持PCIe設(shè)備(例如,兼容PCIe的擴(kuò)展器、PCIe交換機(jī)和PCIe目標(biāo)設(shè)備111)、SAS設(shè)備(例如,SAS目標(biāo)設(shè)備110和SAS擴(kuò)展器)、及其它的后端接口(下面更詳細(xì)的表示和說明)。
[0021]擴(kuò)展器103是借助于與多個存儲設(shè)備的可能連接,可操作地擴(kuò)展存儲系統(tǒng)的任何設(shè)備、系統(tǒng)、軟件,或者它們的組合。在這點(diǎn)上,擴(kuò)展器203可通過多個物理收發(fā)器,連接到SAS組件,比如SAS目標(biāo)設(shè)備110和其它擴(kuò)展器。更特別地,擴(kuò)展器103可借助許多不同的協(xié)議,比如上述那些協(xié)議(例如,SAS、PCIe、USB、SATA等),直接連接到多個目標(biāo)設(shè)備,并且可以利用存在于存儲控制器104中的協(xié)議檢測方法。
[0022]盡管關(guān)于一定數(shù)目的擴(kuò)展器和目標(biāo)設(shè)備進(jìn)行了表示和說明,不過本發(fā)明并不意圖局限于任何特定數(shù)目的組件或者它們的例示連接。下面參考圖2的流程圖,說明存儲控制器104的一些操作細(xì)節(jié)。
[0023]圖2是圖1的存儲控制器104的例證處理200的流程圖。當(dāng)在處理單元201,存儲控制器104通信耦接到存儲設(shè)備時,開始處理200。例如,當(dāng)目標(biāo)設(shè)備110、111、112之一直接或間接(例如,通過擴(kuò)展器103)耦接到存儲控制器104時,存儲控制器104開始目標(biāo)設(shè)備的硬件發(fā)現(xiàn)和/或固件發(fā)現(xiàn)。在這點(diǎn)上,在處理單元202,存儲控制器104在存儲設(shè)備的硬件協(xié)議檢測和存儲設(shè)備的固件協(xié)議檢測之間進(jìn)行選擇。
[0024]—旦選擇了檢測方案,在處理單元203,存儲控制器就自動開始檢測存儲設(shè)備的協(xié)議。例如,當(dāng)存儲設(shè)備通過硬件信令和/或時域反射器,耦接到存儲控制器的接口時,存儲控制器104可采用硬件檢測方案來確定存儲設(shè)備的協(xié)議。如果存儲設(shè)備借助硬件協(xié)議檢測方案未被檢測到,存儲控制器104可失效轉(zhuǎn)移到固件檢測方案,通過借助各種協(xié)議嘗試鏈路建立,直到存儲設(shè)備作出反應(yīng)為止。然而,存儲控制器104也可被配置成從固件協(xié)議檢測方案開始,然后失效轉(zhuǎn)移到硬件協(xié)議檢測方案,或者甚至可被配置成只利用一種或另一種檢測方案檢測附接的存儲設(shè)備的協(xié)議。
[0025]一旦檢測了存儲設(shè)備的協(xié)議,在處理單元204,存儲控制器104就可選擇協(xié)議,以處理來自主機(jī)系統(tǒng)105的I/O請求。例如,存儲控制器104可配置有各種協(xié)議棧。一旦存儲設(shè)備的協(xié)議被檢測到,存儲控制器104就可通過適當(dāng)?shù)膮f(xié)議棧,處理來自主機(jī)系統(tǒng)105的I/O請求。
[0026]圖3是另一個例證的存儲控制器104的方框圖。在本實(shí)施例中,存儲控制器104配置有系統(tǒng)接口 301,系統(tǒng)接口 301可操作地通信和物理地耦接存儲控制器104和主機(jī)系統(tǒng)105的物理接口,并按照PCIe和SAS/SATA協(xié)議棧處理I/O請求。PCIe棧包含PCIe上層302、PCIe 鏈路層和 PCIe 物理層 306。SAS/SATA 棧包含 SAS/SATA 上層 303、SAS/SATA 鏈路層305和SAS/SATA物理層307。
[0027]存儲控制器104還包含當(dāng)檢測到存儲設(shè)備的協(xié)議時,可操作地選擇適當(dāng)?shù)膮f(xié)議棧的協(xié)議選擇邏輯308。協(xié)議復(fù)用器309與協(xié)議選擇邏輯308通信耦接,以控制當(dāng)檢測到存儲設(shè)備的協(xié)議時,將使用協(xié)議棧中的哪個協(xié)議棧。
[0028]協(xié)議選擇邏輯308和相關(guān)的協(xié)議復(fù)用器309 —起工作,以選擇存儲設(shè)備的物理接口是連接到PCIe協(xié)議棧還是SAS/SATA協(xié)議棧。串行/解串器(SerDes) 310可操作地進(jìn)行附接的存儲設(shè)備的硬件協(xié)議檢測。從PCIe鏈路層304和SAS/SATA鏈路層307傳送成功的鏈路建立的指示,以確保當(dāng)獲得成功時,協(xié)議復(fù)用器309仍然固定在當(dāng)前選擇的協(xié)議。在一些實(shí)施例中,當(dāng)協(xié)議復(fù)用器309當(dāng)前選擇特定的協(xié)議時,該協(xié)議的鏈路層和物理層(例如,PCIe鏈路層304、PCIe物理層306、SAS/SATA鏈路層305、SAS/SATA物理層307)被啟用,以使電力消耗降至最小。例如,通過使存儲控