亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

智能可縮放存儲(chǔ)切換架構(gòu)的制作方法

文檔序號(hào):6523781閱讀:266來(lái)源:國(guó)知局
智能可縮放存儲(chǔ)切換架構(gòu)的制作方法
【專利摘要】本發(fā)明提供了一種利用商品、用戶級(jí)別的存儲(chǔ)設(shè)備來(lái)提供高級(jí)存儲(chǔ)特征的系統(tǒng)和方法。高級(jí)存儲(chǔ)系統(tǒng)是一種連接在計(jì)算機(jī)系統(tǒng)與一個(gè)或多個(gè)物理磁盤(pán)驅(qū)動(dòng)器之間的元件。高級(jí)存儲(chǔ)系統(tǒng)的主機(jī)接口將它自身作為虛擬磁盤(pán)驅(qū)動(dòng)器呈現(xiàn)給計(jì)算機(jī)系統(tǒng),它執(zhí)行用戶級(jí)別的存儲(chǔ)硬件的命令,該用戶級(jí)別的存儲(chǔ)硬件為計(jì)算機(jī)系統(tǒng)的主機(jī)控制器所熟知。同樣地,高級(jí)存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備將它自身驅(qū)動(dòng)器作為用戶級(jí)別的主機(jī)控制器呈現(xiàn)給一個(gè)或多個(gè)磁盤(pán)驅(qū)動(dòng),而不管與它相連的物理存儲(chǔ)設(shè)備的實(shí)際拓?fù)浣Y(jié)構(gòu)是什么。該系統(tǒng)為用戶提供了一種簡(jiǎn)單的方法來(lái)組合低成本、用戶級(jí)別的硬件,用以向計(jì)算機(jī)系統(tǒng)添加附加的高級(jí)存儲(chǔ)特征。
【專利說(shuō)明】智能可縮放存儲(chǔ)切換架構(gòu)
[0001]本申請(qǐng)是PCT國(guó)際申請(qǐng)?zhí)枮镻CT / US2006 / 032454、國(guó)際申請(qǐng)日為2006年8月24日、中國(guó)國(guó)家申請(qǐng)?zhí)枮?00680030571.3、題為“智能可縮放存儲(chǔ)切換架構(gòu)”的申請(qǐng)的分案申請(qǐng)。
[0002]相關(guān)申請(qǐng)的交叉引用
[0003]本申請(qǐng)要求2005年8月25日提交的、發(fā)明名稱為“ SMART SCALABLE STORAGESWITCH ARCHITECTURE”、申請(qǐng)?zhí)枮?60 / 711,863 (律師案號(hào) 59472-8092.US00)的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán),在此引用其作為參考。
[0004]背景
[0005]存儲(chǔ)系統(tǒng)經(jīng)常使用多個(gè)磁盤(pán)驅(qū)動(dòng)器來(lái)提供例如容錯(cuò)、增加的吞吐量、增加的存儲(chǔ)量和可擴(kuò)展性的特征。例如,鏡像使用了兩個(gè)或多個(gè)驅(qū)動(dòng)器來(lái)存儲(chǔ)數(shù)據(jù)的復(fù)制副本,從而在其中一個(gè)驅(qū)動(dòng)器出現(xiàn)故障時(shí)仍然可以從另一個(gè)驅(qū)動(dòng)器中讀取數(shù)據(jù)。條帶化允許將數(shù)據(jù)劃分成可同時(shí)并行寫(xiě)入(讀出)兩個(gè)或多個(gè)驅(qū)動(dòng)器的部分,以提供增加的吞吐量。級(jí)聯(lián)組合了兩個(gè)或多個(gè)驅(qū)動(dòng)器,從而允許比可從單個(gè)磁盤(pán)驅(qū)動(dòng)器中獲得的更高的存儲(chǔ)量。雖然這種特征已變?yōu)樵谄髽I(yè)類存儲(chǔ)解決方案中是通用的,但是這些特征在用戶系統(tǒng)中仍然是罕見(jiàn)的。組裝這種系統(tǒng)的成本和復(fù)雜性阻止了許多用戶利用這些高級(jí)存儲(chǔ)特征。
[0006]對(duì)商品、用戶級(jí)別的存儲(chǔ)硬件的設(shè)計(jì)限制還防止用戶從這些高級(jí)存儲(chǔ)特征中獲益。例如,許多計(jì)算機(jī)系統(tǒng)限制了可由單個(gè)主機(jī)尋址的磁盤(pán)驅(qū)動(dòng)器數(shù)量。串行高級(jí)技術(shù)附加裝置(SATA) 1.0規(guī)范(可從www.serialata.0rg網(wǎng)頁(yè)中獲得)僅支持將單個(gè)磁盤(pán)驅(qū)動(dòng)器連接到主機(jī)。隨后添加了附加尋址方案,即SATA II端口乘法規(guī)范(可從www.serialata.0rg網(wǎng)頁(yè)中獲得),它允許主機(jī)對(duì)15個(gè)物理磁盤(pán)驅(qū)動(dòng)器進(jìn)行尋址,但并非所有主機(jī)都支持該最新規(guī)范,而該主機(jī)計(jì)算機(jī)系統(tǒng)管理多個(gè)驅(qū)動(dòng)器涉及對(duì)許多用戶很困難的附加復(fù)雜性和配置。該最終結(jié)果就是用戶無(wú)法獲得易于使用、低成本且能夠提供對(duì)企業(yè)類計(jì)算機(jī)系統(tǒng)有效的高端存儲(chǔ)特征的硬件。
[0007]概述
[0008]提供了一種利用商品、用戶級(jí)別的存儲(chǔ)設(shè)備來(lái)提供高級(jí)存儲(chǔ)特征的系統(tǒng)和方法。高級(jí)存儲(chǔ)系統(tǒng)是一種連接在計(jì)算機(jī)系統(tǒng)與一個(gè)或多個(gè)物理磁盤(pán)驅(qū)動(dòng)器之間的元件。高級(jí)存儲(chǔ)系統(tǒng)的主機(jī)接口將它自身作為虛擬磁盤(pán)驅(qū)動(dòng)器呈現(xiàn)給計(jì)算機(jī)系統(tǒng),它執(zhí)行用戶級(jí)別的存儲(chǔ)硬件的命令,該用戶級(jí)別的存儲(chǔ)硬件為計(jì)算機(jī)系統(tǒng)的主機(jī)控制器所熟知。同樣地,高級(jí)存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備將它自身驅(qū)動(dòng)器作為用戶級(jí)別的主機(jī)控制器呈現(xiàn)給一個(gè)或多個(gè)磁盤(pán)驅(qū)動(dòng),而不管與它相連的物理存儲(chǔ)設(shè)備的實(shí)際拓?fù)浣Y(jié)構(gòu)是什么。首先,高級(jí)存儲(chǔ)系統(tǒng)接收從計(jì)算機(jī)系統(tǒng)到虛擬設(shè)備的命令,并將該命令映射成一個(gè)或多個(gè)物理命令。接下來(lái),將映射的物理命令發(fā)送到物理磁盤(pán)驅(qū)動(dòng)器來(lái)執(zhí)行命令實(shí)體。最后,組合來(lái)自于物理磁盤(pán)驅(qū)動(dòng)器的應(yīng)答,并把對(duì)虛擬命令的單個(gè)應(yīng)答發(fā)送回計(jì)算機(jī)系統(tǒng)。該系統(tǒng)為用戶提供了一種簡(jiǎn)單的方法來(lái)組合低成本、用戶級(jí)別的硬件,以向計(jì)算機(jī)系統(tǒng)添加高級(jí)存儲(chǔ)特征。
[0009]提供此概述是為了以簡(jiǎn)化方式介紹將在以下詳細(xì)說(shuō)明中進(jìn)一步描述的的概念的選擇。此概述并不旨在標(biāo)識(shí)請(qǐng)求保護(hù)的主題的關(guān)鍵特征或基本特征,也不旨在用來(lái)限制請(qǐng)求保護(hù)的主題的范圍。
[0010]附圖概述
[0011]圖1是示出一個(gè)實(shí)施例中的高級(jí)存儲(chǔ)系統(tǒng)的元件的框圖;
[0012]圖2示出一個(gè)實(shí)施例中的級(jí)聯(lián)的高級(jí)存儲(chǔ)系統(tǒng)設(shè)備的拓?fù)浣Y(jié)構(gòu);
[0013]圖3是示出一個(gè)實(shí)施例中的對(duì)系統(tǒng)元件進(jìn)行虛擬到物理映射的處理流程圖;
[0014]圖4是示出一個(gè)實(shí)施例中的對(duì)元件進(jìn)行虛擬到物理映射以生成虛擬響應(yīng)的處理流程圖;
[0015]圖5示出一個(gè)實(shí)施例中的各種存儲(chǔ)架構(gòu);
[0016]圖6示出一個(gè)實(shí)施例中的SteelVine結(jié)構(gòu)的各種應(yīng)用;
[0017]圖7示出一個(gè)實(shí)施例中的策略與機(jī)制的分離;
[0018]圖8示出一個(gè)實(shí)施例中的虛擬命令向物理命令的轉(zhuǎn)換;
[0019]圖9示出一個(gè)實(shí)施例中的SteelVine元件的邏輯層;
[0020]圖10示出一個(gè)實(shí)施例中的物理磁盤(pán)區(qū)域向虛擬驅(qū)動(dòng)器的轉(zhuǎn)換;
[0021]圖11示出一個(gè)實(shí)施例中的通過(guò)級(jí)聯(lián)物理磁盤(pán)區(qū)域來(lái)創(chuàng)建虛擬驅(qū)動(dòng)器;
[0022]圖12示出一個(gè)實(shí)施例中的存儲(chǔ)子系統(tǒng)軟件元件的高級(jí)視圖。
[0023]詳細(xì)說(shuō)明
[0024]提供一種利用商品、用戶級(jí)別的存儲(chǔ)設(shè)備來(lái)提供高級(jí)存儲(chǔ)特征的方法和系統(tǒng)。例如,高級(jí)存儲(chǔ)系統(tǒng)允許使用多個(gè)現(xiàn)行的硬盤(pán)驅(qū)動(dòng)器來(lái)提供容錯(cuò)存儲(chǔ)系統(tǒng)。該高級(jí)存儲(chǔ)系統(tǒng)是一種連接在計(jì)算機(jī)系統(tǒng)與一個(gè)或多個(gè)物理磁盤(pán)驅(qū)動(dòng)器之間的元件。高級(jí)存儲(chǔ)系統(tǒng)的主機(jī)接口將它自身作為虛擬磁盤(pán)驅(qū)動(dòng)器呈現(xiàn)給計(jì)算機(jī)系統(tǒng),該虛擬磁盤(pán)驅(qū)動(dòng)器執(zhí)行用戶級(jí)別的存儲(chǔ)硬件的命令,該命令為計(jì)算機(jī)系統(tǒng)的主機(jī)控制器所熟知。例如,高級(jí)存儲(chǔ)系統(tǒng)可作為單個(gè)硬盤(pán)驅(qū)動(dòng)器向計(jì)算機(jī)系統(tǒng)顯現(xiàn)。同樣地,高級(jí)存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備接口將它自身驅(qū)動(dòng)器作為用戶級(jí)別的主機(jī)控制器呈現(xiàn)給一個(gè)或多個(gè)磁盤(pán)驅(qū)動(dòng),而不管所連接的物理存儲(chǔ)設(shè)備的實(shí)際拓?fù)浣Y(jié)構(gòu)是什么。例如,高級(jí)存儲(chǔ)系統(tǒng)可以連接到兩個(gè)物理驅(qū)動(dòng)器,這兩個(gè)物理驅(qū)動(dòng)器作為單個(gè)虛擬磁盤(pán)驅(qū)動(dòng)器向計(jì)算機(jī)系統(tǒng)顯現(xiàn),而且每一個(gè)磁盤(pán)驅(qū)動(dòng)器會(huì)相信其為連接到該系統(tǒng)的唯一驅(qū)動(dòng)器。計(jì)算機(jī)系統(tǒng)、高級(jí)存儲(chǔ)系統(tǒng)和磁盤(pán)驅(qū)動(dòng)器之間的每一個(gè)連接都形成一個(gè)數(shù)據(jù)通道。首先,高級(jí)存儲(chǔ)系統(tǒng)接收從計(jì)算機(jī)系統(tǒng)去往虛擬驅(qū)動(dòng)器的命令,并把該命令映射成一個(gè)或多個(gè)物理命令。例如,該存儲(chǔ)系統(tǒng)可接收從虛擬驅(qū)動(dòng)器上的一個(gè)位置中讀取一兆字節(jié)數(shù)據(jù)的命令,該虛擬驅(qū)動(dòng)器實(shí)際上存儲(chǔ)在兩個(gè)不同的物理驅(qū)動(dòng)器。接下來(lái),將映射的物理命令發(fā)送到物理磁盤(pán)驅(qū)動(dòng)器以執(zhí)行命令實(shí)質(zhì)。例如,可以將虛擬讀取命令分成兩個(gè)單獨(dú)的讀取命令,這兩個(gè)單獨(dú)的讀取命令被發(fā)送到各個(gè)物理磁盤(pán)驅(qū)動(dòng)器驅(qū)動(dòng)器以使其讀取該數(shù)據(jù)的不同部分。最后,組合來(lái)自該物理磁盤(pán)驅(qū)動(dòng)器的應(yīng)答,并把對(duì)該虛擬命令的單個(gè)應(yīng)答發(fā)送回計(jì)算機(jī)系統(tǒng)。例如,可以把從兩個(gè)單獨(dú)的磁盤(pán)驅(qū)動(dòng)器中讀取的數(shù)據(jù)組合成單個(gè)應(yīng)答,就像是從單個(gè)磁盤(pán)驅(qū)動(dòng)器中接收了該數(shù)據(jù)一樣。為了降低成本,可以在單個(gè)芯片上提供高級(jí)存儲(chǔ)系統(tǒng)。該系統(tǒng)為用戶提供了一種簡(jiǎn)單的方法來(lái)組合低成本、用戶級(jí)別的硬件以向計(jì)算機(jī)系統(tǒng)添加高級(jí)存儲(chǔ)特征。
[0025]在某些實(shí)施例中,在制造過(guò)程中高級(jí)存儲(chǔ)系統(tǒng)被配置成提供特定的特征,以致于無(wú)需用戶配置。例如,高級(jí)存儲(chǔ)系統(tǒng)可被配置成級(jí)聯(lián)與之相連的附加磁盤(pán)驅(qū)動(dòng)器。用戶購(gòu)買(mǎi)該高級(jí)存儲(chǔ)系統(tǒng)和幾個(gè)硬盤(pán)驅(qū)動(dòng)器。計(jì)算機(jī)系統(tǒng)知道隨著在高級(jí)存儲(chǔ)系統(tǒng)上連接每一個(gè)新的驅(qū)動(dòng)器,單個(gè)虛擬驅(qū)動(dòng)器的容量增加。用戶甚至能夠在稍后購(gòu)買(mǎi)附加的驅(qū)動(dòng)器來(lái)添加更大的存儲(chǔ)容量,而無(wú)需重新配置主機(jī)系統(tǒng)。還可以將高級(jí)存儲(chǔ)系統(tǒng)配置成提供鏡像以防止丟失數(shù)據(jù)。當(dāng)用戶連接附加的硬盤(pán)驅(qū)動(dòng)器時(shí),每一個(gè)硬盤(pán)驅(qū)動(dòng)器上的數(shù)據(jù)被鏡像到其他驅(qū)動(dòng)器上,從而在一個(gè)驅(qū)動(dòng)器出現(xiàn)故障時(shí),可以在另一個(gè)磁盤(pán)驅(qū)動(dòng)器上存取(例如,讀出、寫(xiě)入等)數(shù)據(jù)??梢酝ㄟ^(guò)一系列的硬件管腳或跳線,或者在制造過(guò)程中使特定的固件圖像閃存到系統(tǒng),來(lái)配置高級(jí)存儲(chǔ)系統(tǒng)。例如,系統(tǒng)可使用策略表來(lái)以性能指示的方式指定配置信息。當(dāng)設(shè)備內(nèi)的控制邏輯達(dá)到判定點(diǎn)且必須從多種可能性中選擇一種做法時(shí),參考該表并執(zhí)行由該表指定的動(dòng)作。這允許僅通過(guò)修改策略表的內(nèi)容來(lái)使用相同的硬件以暴露不同的特征。還可提供硬件管腳來(lái)超馳策略表內(nèi)特定的策略以允許附加的可配置性,而無(wú)需修改該策略表。
[0026]在某些實(shí)施例中,可以級(jí)聯(lián)高級(jí)存儲(chǔ)系統(tǒng)與其他這種系統(tǒng)來(lái)提供附加的存儲(chǔ)特征。例如,高級(jí)存儲(chǔ)系統(tǒng)的一個(gè)實(shí)例可被連接到主機(jī)計(jì)算機(jī)系統(tǒng),而高級(jí)存儲(chǔ)系統(tǒng)的另一個(gè)實(shí)例可被連接到該第一實(shí)例。這樣,就可由普通用戶輕易地組合復(fù)雜的存儲(chǔ)拓?fù)浣Y(jié)構(gòu)。例如,高級(jí)存儲(chǔ)系統(tǒng)的配置成級(jí)聯(lián)與之相連的設(shè)備的實(shí)例可被連接到主機(jī)控制器,而其他被配置成對(duì)相連的驅(qū)動(dòng)器提供鏡像的實(shí)例可被連接到該第一實(shí)例,以便于創(chuàng)建大容量、鏡像的虛擬存儲(chǔ)設(shè)備。主機(jī)系統(tǒng)還可以只看到單個(gè)大的磁盤(pán)驅(qū)動(dòng)器,但可使用標(biāo)準(zhǔn)的磁盤(pán)驅(qū)動(dòng)器命令來(lái)與相連的存儲(chǔ)設(shè)備通信。高級(jí)存儲(chǔ)系統(tǒng)的每一實(shí)例都把在主機(jī)接口上接收的虛擬命令轉(zhuǎn)換成物理命令,其中該物理命令被發(fā)送到存儲(chǔ)接口上的各個(gè)相連驅(qū)動(dòng)器(級(jí)聯(lián)的高級(jí)存儲(chǔ)系統(tǒng)實(shí)例又可將此物理命令視為虛擬命令)。
[0027]在某些實(shí)施例中,高級(jí)存儲(chǔ)系統(tǒng)分離主機(jī)與高級(jí)存儲(chǔ)系統(tǒng)之間的確認(rèn)周期和高級(jí)存儲(chǔ)系統(tǒng)與相連設(shè)備之間的確認(rèn)周期。例如,高級(jí)存儲(chǔ)系統(tǒng)可以投機(jī)性地確認(rèn)已經(jīng)響應(yīng)在主機(jī)接口上接收的虛擬命令而寫(xiě)入了數(shù)據(jù),這甚至是在執(zhí)行該命令的物理驅(qū)動(dòng)器確認(rèn)該操作的成與敗之前。在其中利用了高級(jí)存儲(chǔ)系統(tǒng)來(lái)級(jí)聯(lián)多個(gè)物理驅(qū)動(dòng)器的拓?fù)浣Y(jié)構(gòu)中,投機(jī)性的確認(rèn)通過(guò)減少由每一層在命令接收時(shí)與命令完成和確認(rèn)時(shí)之間的延遲而導(dǎo)致的等待時(shí)間來(lái)提高性能。該系統(tǒng)還可以通過(guò)對(duì)指示成功的請(qǐng)求作出響應(yīng)來(lái)隱藏對(duì)失敗于主機(jī)計(jì)算機(jī)系統(tǒng)的物理命令的重新嘗試,然后重新嘗試該物理命令直至它成功。在一些情形中分片段執(zhí)行整個(gè)存儲(chǔ)操作,例如分塊寫(xiě)入大量數(shù)據(jù),從而在高級(jí)存儲(chǔ)系統(tǒng)投機(jī)性地確認(rèn)一個(gè)塊的成功寫(xiě)入最終失敗時(shí),該系統(tǒng)可以報(bào)告整個(gè)存儲(chǔ)操作失敗。這允許系統(tǒng)獲得附加的性能,同時(shí)保持了主機(jī)系統(tǒng)對(duì)操作的成功或失敗的看法的統(tǒng)一性。
[0028]在某些實(shí)施例中,高級(jí)存儲(chǔ)系統(tǒng)將幾個(gè)緩慢的數(shù)據(jù)通道合并成一個(gè)快速的數(shù)據(jù)通道。例如,如果高級(jí)存儲(chǔ)系統(tǒng)連接到兩個(gè)執(zhí)行SATA I規(guī)范的物理磁盤(pán)驅(qū)動(dòng)器,其數(shù)據(jù)傳輸率為1.5吉比特每秒(Gbps),則高級(jí)存儲(chǔ)系統(tǒng)可向計(jì)算機(jī)系統(tǒng)提供SATA II規(guī)范的主機(jī)接口,其數(shù)據(jù)傳輸率為3.0Gbps。高級(jí)存儲(chǔ)系統(tǒng)對(duì)磁盤(pán)驅(qū)動(dòng)器進(jìn)行并行讀寫(xiě),而且計(jì)算機(jī)系統(tǒng)從兩個(gè)驅(qū)動(dòng)器合并的吞吐量中受益。
[0029]在某些實(shí)施例中,高級(jí)存儲(chǔ)系統(tǒng)自動(dòng)選擇用于在多個(gè)驅(qū)動(dòng)器和級(jí)聯(lián)的高級(jí)存儲(chǔ)系統(tǒng)元件當(dāng)中發(fā)送存儲(chǔ)命令的路線。高級(jí)存儲(chǔ)系統(tǒng)可以利用網(wǎng)格拓?fù)浣Y(jié)構(gòu)來(lái)以通過(guò)最小化驅(qū)動(dòng)與主機(jī)計(jì)算機(jī)系統(tǒng)之間的跳躍次數(shù)減少等待時(shí)間的方式對(duì)每一個(gè)驅(qū)動(dòng)器進(jìn)行存取驅(qū)動(dòng)器。例如,可以連接多個(gè)高級(jí)存儲(chǔ)系統(tǒng)元件來(lái)形成網(wǎng)格。可以在該網(wǎng)格內(nèi)以多種不同的方式來(lái)路由命令。例如,可以通過(guò)一連串10個(gè)高級(jí)存儲(chǔ)系統(tǒng)元件來(lái)向驅(qū)動(dòng)器發(fā)送命令,但這會(huì)導(dǎo)致完成該命令要非常高的等待時(shí)間。相反,高級(jí)存儲(chǔ)系統(tǒng)元件將彼此通信以選擇去往級(jí)聯(lián)的磁盤(pán)驅(qū)動(dòng)器的最快路徑。
[0030]在某些實(shí)施例中,高級(jí)存儲(chǔ)系統(tǒng)在附連了新的驅(qū)動(dòng)器時(shí)自動(dòng)對(duì)其進(jìn)行重新配置。例如,當(dāng)用戶把第四個(gè)驅(qū)動(dòng)器附連到系統(tǒng)上時(shí),高級(jí)存儲(chǔ)系統(tǒng)就會(huì)自動(dòng)級(jí)聯(lián)該驅(qū)動(dòng)器與其他驅(qū)動(dòng)器以增加現(xiàn)有虛擬卷的大小。同樣地,高級(jí)存儲(chǔ)系統(tǒng)會(huì)自動(dòng)使用該新的驅(qū)動(dòng)器作為對(duì)其他卷的鏡像。該判定可以基于多個(gè)因素,例如對(duì)高級(jí)存儲(chǔ)系統(tǒng)的配置、現(xiàn)有的和新的驅(qū)動(dòng)器的大小以及驅(qū)動(dòng)器速度。例如,如果該配置指示應(yīng)當(dāng)執(zhí)行鏡像,則高級(jí)存儲(chǔ)系統(tǒng)就可以使用單個(gè)相連的75吉比特(GB)磁盤(pán)驅(qū)動(dòng)器來(lái)鏡像其他三個(gè)相連的25GB驅(qū)動(dòng)器。同樣地,如果已經(jīng)連接了兩個(gè)1.5Gbps驅(qū)動(dòng)器,則該系統(tǒng)就會(huì)配置新的3.0Gbps驅(qū)動(dòng)器作為鏡像,這是因?yàn)樗梢酝瑫r(shí)寫(xiě)入兩個(gè)原始驅(qū)動(dòng)器的同一時(shí)間量?jī)?nèi)進(jìn)行寫(xiě)入。因?yàn)樵撓到y(tǒng)不需要外部配置,所以它可用在其中不能有其他存儲(chǔ)系統(tǒng)的情況下。例如,機(jī)頂盒、個(gè)人錄像機(jī)、MP3播放和其他嵌入式設(shè)備都可從附加存儲(chǔ)和諸如容錯(cuò)那樣的高級(jí)特征中受益,但是沒(méi)有配置用戶接口、或在一些情形中甚至是其他存儲(chǔ)系統(tǒng)會(huì)需要的用于顯示一配置用戶接口的硬件。
[0031]在某些實(shí)施例中,高級(jí)存儲(chǔ)系統(tǒng)在虛擬到物理轉(zhuǎn)換狀態(tài)信息中記錄所附連的物理驅(qū)動(dòng)器的序列號(hào)。對(duì)驅(qū)動(dòng)器的標(biāo)識(shí)允許更多響應(yīng)于外部事件而篡改的策略,例如附連新的或之前見(jiàn)過(guò)的驅(qū)動(dòng)器。當(dāng)插入驅(qū)動(dòng)器時(shí),將其與已知物理驅(qū)動(dòng)器的列表進(jìn)行比較。如果識(shí)別了該新附連的驅(qū)動(dòng)器,而該驅(qū)動(dòng)器附連到不同的物理接口,則自動(dòng)更新轉(zhuǎn)換信息來(lái)說(shuō)明該再定位。如果沒(méi)有識(shí)別該驅(qū)動(dòng)器,則某些高級(jí)存儲(chǔ)系統(tǒng)的實(shí)施例將更新轉(zhuǎn)換信息來(lái)以任何可行的增強(qiáng)存取模式(例如,鏡像、條帶、級(jí)聯(lián))添加新的驅(qū)動(dòng)器(或其部分)。在某些高級(jí)存儲(chǔ)系統(tǒng)的實(shí)施例中,不對(duì)該轉(zhuǎn)換添加新的物理驅(qū)動(dòng)器,從而防止對(duì)其進(jìn)行存取直至采取另外的用戶動(dòng)作。高級(jí)存儲(chǔ)系統(tǒng)可提供各種驅(qū)動(dòng)器鎖定特征來(lái)保護(hù)對(duì)物理驅(qū)動(dòng)器的存取?,F(xiàn)代SATA磁盤(pán)驅(qū)動(dòng)器支持來(lái)自主機(jī)、用以鎖定和解鎖驅(qū)動(dòng)器并在該驅(qū)動(dòng)器本身內(nèi)存儲(chǔ)口令的命令。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器存取命令的虛擬到物理轉(zhuǎn)換包括對(duì)這種驅(qū)動(dòng)器鎖定命令的支持。例如,當(dāng)接收來(lái)自主機(jī)的對(duì)鎖定(或解鎖)驅(qū)動(dòng)器的請(qǐng)求時(shí),向適當(dāng)?shù)囊唤M物理驅(qū)動(dòng)器轉(zhuǎn)發(fā)該命令。這種實(shí)施例允許主機(jī)設(shè)備本身綁定虛擬驅(qū)動(dòng)器,從而表現(xiàn)出該虛擬驅(qū)動(dòng)器中的所有物理驅(qū)動(dòng)元件對(duì)其他任何主機(jī)設(shè)備都是不可存取的(無(wú)適當(dāng)?shù)目诹?驅(qū)動(dòng)器。在某些實(shí)施例中,高級(jí)存儲(chǔ)系統(tǒng)在內(nèi)部執(zhí)行所有驅(qū)動(dòng)器鎖定任務(wù)。當(dāng)附連新的物理驅(qū)動(dòng)器時(shí),向該驅(qū)動(dòng)器發(fā)送驅(qū)動(dòng)器鎖定請(qǐng)求,并在虛擬到物理轉(zhuǎn)換狀態(tài)信息中存儲(chǔ)口令。隨后,當(dāng)在主機(jī)接口上接收對(duì)虛擬驅(qū)動(dòng)器的存取請(qǐng)求時(shí),將其轉(zhuǎn)換成一組對(duì)適當(dāng)驅(qū)動(dòng)器的存取,每一個(gè)存取都優(yōu)先于使用先前存儲(chǔ)口令的驅(qū)動(dòng)器解鎖請(qǐng)求。這將物理驅(qū)動(dòng)綁定到特定的高級(jí)存儲(chǔ)系統(tǒng)實(shí)例驅(qū)動(dòng)器,從而表現(xiàn)出它們無(wú)法為其他任何主機(jī)設(shè)備所存取(無(wú)適當(dāng)?shù)目诹?。
[0032]圖1是示出一個(gè)實(shí)施例中的高級(jí)存儲(chǔ)系統(tǒng)元件的框圖。主機(jī)計(jì)算機(jī)系統(tǒng)100被連接到高級(jí)存儲(chǔ)系統(tǒng)150,而高級(jí)存儲(chǔ)系統(tǒng)150被連接到一個(gè)或多個(gè)磁盤(pán)驅(qū)動(dòng)器(例如,180和190)。主機(jī)計(jì)算機(jī)100包括與諸如磁盤(pán)驅(qū)動(dòng)或高級(jí)存儲(chǔ)系統(tǒng)150的存儲(chǔ)設(shè)備通信的主機(jī)控制器105驅(qū)動(dòng)器。高級(jí)存儲(chǔ)系統(tǒng)150包括主機(jī)接口元件155、配置元件160、虛擬到物理映射元件165和設(shè)備接口元件170。主機(jī)接口元件155與主機(jī)控制器105通信以執(zhí)行存儲(chǔ)命令。從主機(jī)控制器105接收的存儲(chǔ)命令被視為對(duì)由高級(jí)存儲(chǔ)系統(tǒng)150呈現(xiàn)給主機(jī)計(jì)算機(jī)系統(tǒng)100的虛擬驅(qū)動(dòng)器的虛擬命令。配置元件160存儲(chǔ)關(guān)于高級(jí)存儲(chǔ)系統(tǒng)150的配置信息,例如連接多少個(gè)驅(qū)動(dòng)器以及正在使用每一個(gè)驅(qū)動(dòng)器來(lái)提供哪些存儲(chǔ)特征(例如,條帶化、鏡像或級(jí)聯(lián))。虛擬到物理映射元件165基于配置元件160存儲(chǔ)的配置將從主機(jī)接口155接收的虛擬命令映射成向設(shè)備接口 170發(fā)出的物理命令。虛擬到物理映射元件165還將從設(shè)備接口元件170接收的物理響應(yīng)映射成通過(guò)主機(jī)接口 155發(fā)送到主機(jī)計(jì)算機(jī)100的虛擬響應(yīng)。設(shè)備接口元件170與一個(gè)或多個(gè)物理磁盤(pán)驅(qū)動(dòng)器(或附加的高級(jí)存儲(chǔ)系統(tǒng))通信以執(zhí)行存儲(chǔ)命令。
[0033]在其上實(shí)現(xiàn)該系統(tǒng)的計(jì)算設(shè)備可包括中央處理單元、存儲(chǔ)器、輸入設(shè)備(例如,鍵盤(pán)和定位設(shè)備)、輸出設(shè)備(例如,顯示設(shè)備)和存儲(chǔ)設(shè)備(例如,磁盤(pán)驅(qū)動(dòng)器)。存儲(chǔ)器和存儲(chǔ)設(shè)備是計(jì)算機(jī)可讀介質(zhì),它可包含實(shí)現(xiàn)該系統(tǒng)的指令。另外,可以通過(guò)數(shù)據(jù)傳輸介質(zhì)存儲(chǔ)或發(fā)送數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu),該數(shù)據(jù)傳輸介質(zhì)諸如通信鏈路上的信號(hào)??梢允褂酶鞣N通信鏈路,例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)、點(diǎn)對(duì)點(diǎn)撥號(hào)連接、手機(jī)網(wǎng)等。
[0034]可以在各種運(yùn)行環(huán)境中實(shí)現(xiàn)該系統(tǒng)的實(shí)施例,包括個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于多處理器的系統(tǒng)、可編程用戶電子設(shè)備、數(shù)碼相機(jī)、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等。計(jì)算機(jī)系統(tǒng)可以是手機(jī)、個(gè)人數(shù)字助理、智能電話、個(gè)人計(jì)算機(jī)、可編程用戶電子設(shè)備、數(shù)碼相機(jī)等。
[0035]可在由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備來(lái)執(zhí)行的諸如程序塊的計(jì)算機(jī)可執(zhí)行指令的通用上下文來(lái)描述該系統(tǒng)。通常,程序塊包括執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、元件、數(shù)據(jù)結(jié)構(gòu)等。通常,可以在各種環(huán)境中根據(jù)需要組合或分布程序塊的功能塊。
[0036]圖2示出一個(gè)實(shí)施例中的級(jí)聯(lián)高級(jí)存儲(chǔ)系統(tǒng)設(shè)備的拓?fù)浣Y(jié)構(gòu)。主機(jī)計(jì)算機(jī)205連接到高級(jí)存儲(chǔ)系統(tǒng)元件210。高級(jí)存儲(chǔ)系統(tǒng)元件210對(duì)主機(jī)計(jì)算機(jī)205顯現(xiàn)為單個(gè)標(biāo)準(zhǔn)的磁盤(pán)驅(qū)動(dòng)器270。高級(jí)存儲(chǔ)系統(tǒng)元件210連接到第一磁盤(pán)驅(qū)動(dòng)器215、第二磁盤(pán)驅(qū)動(dòng)器220和另一高級(jí)存儲(chǔ)系統(tǒng)元件225。高級(jí)存儲(chǔ)系統(tǒng)元件225與相關(guān)聯(lián)的磁盤(pán)驅(qū)動(dòng)器230和240可對(duì)第一高級(jí)存儲(chǔ)元件210顯現(xiàn)為該實(shí)施例中的另一磁盤(pán)驅(qū)動(dòng)器250,或者兩個(gè)元件可以包括專用通信通道(例如獨(dú)立連接或在數(shù)據(jù)通道上發(fā)送的定制協(xié)議),這允許這兩個(gè)元件相互了解并交換配置信息。第二高級(jí)存儲(chǔ)系統(tǒng)元件225連接到第一磁盤(pán)驅(qū)動(dòng)器230和第二磁盤(pán)驅(qū)動(dòng)器240??梢园凑斩喾N方式來(lái)配置該系統(tǒng)。例如,第一高級(jí)存儲(chǔ)系統(tǒng)元件210可被配置成提供兩個(gè)驅(qū)動(dòng)器215與220的級(jí)聯(lián),并且第二高級(jí)存儲(chǔ)系統(tǒng)225可被配置成利用另一對(duì)磁盤(pán)驅(qū)動(dòng)器230和240來(lái)提供級(jí)聯(lián)的磁盤(pán)驅(qū)動(dòng)器215與220的鏡像。
[0037]圖3是示出一個(gè)實(shí)施例中的對(duì)系統(tǒng)虛擬到物理映射元件的處理過(guò)程的流程圖。當(dāng)接收來(lái)自高級(jí)存儲(chǔ)系統(tǒng)的主機(jī)接口的命令時(shí),調(diào)用該元件。在框310,該元件接收導(dǎo)向高級(jí)存儲(chǔ)系統(tǒng)所提供的虛擬磁盤(pán)驅(qū)動(dòng)器的命令。在框320,該元件將虛擬命令映射成一個(gè)或多個(gè)物理命令。在框330,該元件獲得通過(guò)映射產(chǎn)生的下一個(gè)物理命令。在框340,該元件向適當(dāng)?shù)奈锢碓O(shè)備發(fā)送該物理命令。在框350,該元件接收來(lái)自物理設(shè)備的對(duì)該命令的應(yīng)答。在某些實(shí)施例中,該元件可以不等待該來(lái)自物理設(shè)備的應(yīng)答。例如,該元件可以假設(shè)命令將會(huì)成功并在接收到所有物理應(yīng)答之前對(duì)該虛擬命令作出響應(yīng),或者該元件可以在檢查物理響應(yīng)之前等待直至發(fā)送所有物理命令。在判定框360,如果存在多個(gè)通過(guò)映射產(chǎn)生的物理命令,則該元件返回框330以獲得下一個(gè)物理命令,否則該元件就繼續(xù)進(jìn)行到框370。在框370,該元件就基于所接收的物理響應(yīng)(如果有的話)生成虛擬響應(yīng)。在框380,該元件向計(jì)算機(jī)系統(tǒng)或設(shè)備發(fā)送該虛擬響應(yīng),其中該元件從該計(jì)算機(jī)系統(tǒng)或設(shè)備中接收虛擬命令。然后該兀件結(jié)束。
[0038]圖4是示出一個(gè)實(shí)施例中的處理虛擬到物理映射元件以生成虛擬響應(yīng)的流程圖。在框410,該元件等待對(duì)物理命令的物理響應(yīng),其中該物理命令向磁盤(pán)驅(qū)動(dòng)器或其他設(shè)備發(fā)出。在判定框420,如果物理命令成功,則該元件繼續(xù)進(jìn)行到框430,否則該元件繼續(xù)進(jìn)行到框460。在框430,該元件向虛擬響應(yīng)添加來(lái)自于物理響應(yīng)、應(yīng)當(dāng)包含在該虛擬響應(yīng)中的所有數(shù)據(jù)(諸如,如果物理命令從磁盤(pán)驅(qū)動(dòng)器中讀取數(shù)據(jù))。判決框440,如果存在更多發(fā)出的物理命令,則該元件返回框410以等待下一個(gè)物理響應(yīng),否則該元件繼續(xù)進(jìn)行到框450。在框450,該元件通過(guò)發(fā)送成功響應(yīng)和所有所包含的數(shù)據(jù)來(lái)報(bào)告該虛擬命令的成功。在框460,如果該命令失敗,則該元件發(fā)送指示該虛擬命令沒(méi)有成功的失敗響應(yīng)。在成功或失敗響應(yīng)發(fā)送之后,該元件結(jié)束。
[0039]其他實(shí)施例
[0040]現(xiàn)在將描述高級(jí)存儲(chǔ)系統(tǒng)的其他幾個(gè)實(shí)施例。第一個(gè)實(shí)施例描述了一種稱為SteelVine的高級(jí)存儲(chǔ)系統(tǒng)架構(gòu)。其他諸如Polaris、Pico和Milkyway那樣的實(shí)施例描述了該SteelVine架構(gòu)的硬件實(shí)施例,即在芯片解決方案上提供了完整的存儲(chǔ)系統(tǒng),使高級(jí)存儲(chǔ)特征進(jìn)入用戶市場(chǎng)。
[0041]SteelVine架構(gòu)建立于最近定義的SATA存儲(chǔ)接口標(biāo)準(zhǔn)以創(chuàng)建一種全新的產(chǎn)品類型:即,芯片上存儲(chǔ)子系統(tǒng)(SSoC)?;赟teelVine架構(gòu)的SSoC符合所有的SATA規(guī)范,并以全新且新穎的方式來(lái)解釋和使用它們。該架構(gòu)利用新的SATA標(biāo)準(zhǔn)來(lái)將之前僅在高端、企業(yè)級(jí)存儲(chǔ)子系統(tǒng)中可用的功能帶入用量龐大、低成本、基于商品的計(jì)算競(jìng)技場(chǎng)。
[0042]SteelVine元件將標(biāo)準(zhǔn)的端口倍增器概念擴(kuò)展為包含高級(jí)企業(yè)存儲(chǔ)性能,諸如靈活地虛擬化一組物理驅(qū)動(dòng)器的能力、對(duì)原生命令隊(duì)列(NCQ)的支持和RAID(-1、0、1和10)性能。為此,我們認(rèn)為首先是SteelVine產(chǎn)品提供了 “增強(qiáng)的”端口倍增器功能。
[0043]在某些實(shí)施例中,這些產(chǎn)品被實(shí)現(xiàn)為支持大量硬件、微碼密集的芯片上存儲(chǔ)子系統(tǒng)(SSoC)。在標(biāo)準(zhǔn)的SATA主機(jī)適配器和磁盤(pán)驅(qū)動(dòng)器看來(lái),這些產(chǎn)品表現(xiàn)為“SATA電纜內(nèi)的凸起部分”,即,它們表現(xiàn)為對(duì)主機(jī)的目標(biāo),反之亦然。為了創(chuàng)建其屬性不同于可用的物理驅(qū)動(dòng)器的屬性的虛擬驅(qū)動(dòng)器的幻像,將主機(jī)生成的并導(dǎo)向虛擬驅(qū)動(dòng)器的命令包轉(zhuǎn)換成新的指向所附連的物理驅(qū)動(dòng)器的命令包。由SSoC進(jìn)行的轉(zhuǎn)換以線速基于包含在該元件內(nèi)的配置數(shù)據(jù)進(jìn)行。該轉(zhuǎn)換還包括響應(yīng)于單個(gè)傳入的虛擬命令(例如,在鏡像的虛擬驅(qū)動(dòng)器上進(jìn)行多次寫(xiě)入,進(jìn)行跨越多個(gè)級(jí)聯(lián)驅(qū)動(dòng)器的讀取等)而生成多個(gè)物理驅(qū)動(dòng)器命令。
[0044]重要的是要注意,盡管在高級(jí)描述中相類似,但SteelVine SSoC還是在架構(gòu)和功能上與標(biāo)準(zhǔn)的外部RAID控制器有很大的區(qū)別。特別是,SteelVine元件并不被實(shí)現(xiàn)為通用處理器硬件之上的軟件。這意味著SteelVine SSoC可以低得多的成本和復(fù)雜性按單個(gè)低成本單芯片啞元端口倍增器元件的規(guī)模來(lái)實(shí)現(xiàn)線速性能。通過(guò)將單個(gè)的強(qiáng)制解決方案應(yīng)用于許多問(wèn)題來(lái)降低復(fù)雜性和消除管理成本。例如,使用單個(gè)鏡像來(lái)提供增強(qiáng)的可靠性。該解決方案相對(duì)于傳統(tǒng)奇偶RAID解決方案在處理式和存儲(chǔ)器資源方面需求更小,并通過(guò)使用低(甚至是降低的)成本磁盤(pán)驅(qū)動(dòng)器來(lái)實(shí)現(xiàn)其可靠性。
[0045]在某些實(shí)施例中,SteelVine架構(gòu)通過(guò)應(yīng)用模型來(lái)遞送存儲(chǔ)。用戶不必了解(或甚至知道)任何有關(guān)其如何運(yùn)行的內(nèi)容,它們僅僅是在它們?cè)敢庖詫?duì)該提供的業(yè)務(wù)支付的成本獲得就它們的理解而言(例如、大的、快速的、可靠的等)、它們需要的功能。該基于應(yīng)用的解決方案有助于銷售用量龐大的產(chǎn)品。不能期望該用量龐大類型的用戶知道RAID意味著什么,更不必說(shuō)了解它如何運(yùn)行正常足以判斷哪些配置方案適合于它們。此外,該應(yīng)用解決方案最小化存儲(chǔ)服務(wù)與主機(jī)計(jì)算機(jī)之間的接口。這是對(duì)用戶的主要優(yōu)點(diǎn),因?yàn)樗馕吨梢詿o(wú)需改變或配置主機(jī)而獲得需要的存儲(chǔ)服務(wù)。在主機(jī)硬件、BIOS、OS和應(yīng)用看來(lái)就像是物理磁盤(pán)的存儲(chǔ)設(shè)備可遞送高級(jí)功能而無(wú)需對(duì)主機(jī)進(jìn)行任何修改或添加任何東西。
[0046]通過(guò)策略與機(jī)制的仔細(xì)分離,SteelVine架構(gòu)有可能在廣泛的不同使用場(chǎng)景內(nèi)將SSoC應(yīng)用于高可縮放性、高觸摸性的RAID陣列,該廣泛的不同使用場(chǎng)景包括從源自工廠設(shè)置的固定配置到無(wú)需用戶設(shè)置要求而進(jìn)行任何動(dòng)作(例如,看起來(lái)像是單個(gè)驅(qū)動(dòng)器的多驅(qū)動(dòng)器單元,即,雙工驅(qū)動(dòng)器,或在3.5英寸封套內(nèi)的4個(gè)2.5英寸驅(qū)動(dòng)器,該3.5英寸封套包括單個(gè)電源接頭和主機(jī)端口),該RAID陣列允許用戶定義策略,且該陣列的每一個(gè)動(dòng)作都受到仔細(xì)監(jiān)控和登記。
[0047]以下章節(jié)定義了系統(tǒng)上下文,其中以SteelVine架構(gòu)為基礎(chǔ)的產(chǎn)品在該系統(tǒng)上下文中運(yùn)行,描述由該架構(gòu)提供的關(guān)鍵特征,并提供了對(duì)主要實(shí)現(xiàn)問(wèn)題的概述,其中該主要實(shí)現(xiàn)問(wèn)題圍繞著使用Polaris和Milkyway硬件的存儲(chǔ)子系統(tǒng)。
[0048]SteelVine存儲(chǔ)子系統(tǒng)概述
[0049]SATA被設(shè)計(jì)成主機(jī)總線適配器(HBA)與磁盤(pán)驅(qū)動(dòng)器之間的點(diǎn)對(duì)點(diǎn)連接。由于SATA鏈路的帶寬(即,1.5Gbps、3Gbps或6Gbps)超過(guò)當(dāng)前硬盤(pán)驅(qū)動(dòng)器的帶寬,所以有可能將多個(gè)驅(qū)動(dòng)器連接到單個(gè)SATA(主機(jī))端口而不超出即使是最慢的SATA鏈路的帶寬性能。為此,定義了 SATA端口倍增器(PM)規(guī)范,它允許在單個(gè)主機(jī)端口上附連多個(gè)驅(qū)動(dòng)器。雖然SATAPM規(guī)范定義了單個(gè)的多工或網(wǎng)絡(luò)集線器類型設(shè)備,但是硅圖像擴(kuò)展了該規(guī)范來(lái)創(chuàng)建一種新型設(shè)備,即增強(qiáng)的端口倍增器(EPM)。EPM是芯片上存儲(chǔ)子系統(tǒng)(SSoC),它提供除了 PM的基本網(wǎng)絡(luò)集線器類型功能之外通常與大的、昂貴的、復(fù)雜的存儲(chǔ)陣列控制器相關(guān)聯(lián)的功能。
[0050]SteelVine元件把物理驅(qū)動(dòng)器的集合轉(zhuǎn)換成某個(gè)數(shù)量的虛擬驅(qū)動(dòng)器,其中每一個(gè)虛擬驅(qū)動(dòng)器的屬性都可增強(qiáng)超過(guò)物理驅(qū)動(dòng)器的屬性(例如,更大、更快或更可靠),其中虛擬驅(qū)動(dòng)器根據(jù)物理驅(qū)動(dòng)器的屬性而創(chuàng)建。另外,更多的高級(jí)SteelVine元件(例如,Milyway)包括添加的網(wǎng)格路由性能,該網(wǎng)格路由性能通過(guò)允許在結(jié)構(gòu)內(nèi)連接元件來(lái)提供可縮放性。這允許將潛在的大量物理驅(qū)動(dòng)器映射到一組虛擬驅(qū)動(dòng)器上,這些虛擬驅(qū)動(dòng)器對(duì)潛在的大量主機(jī)可用。
[0051]SteelVine系列元件的一個(gè)設(shè)計(jì)目的是以對(duì)主機(jī)完全透明的方式執(zhí)行所有要求的物理驅(qū)動(dòng)器增強(qiáng)。實(shí)際上,SteelVine元件在線路看來(lái)就像是“凸起部分”;它在主機(jī)看來(lái)就像是PM,且在驅(qū)動(dòng)器看來(lái)就像是HBA。在主機(jī)看來(lái),實(shí)際上不可能在SteelVine元件提供的虛擬驅(qū)動(dòng)器與具有相同屬性(例如,大小、速度或可靠性)的物理驅(qū)動(dòng)器之間進(jìn)行區(qū)分。這確保了與多種主機(jī)系統(tǒng)之間的互用性,而且消除了對(duì)開(kāi)發(fā)、安裝和支持大套的定制主機(jī)側(cè)軟件(應(yīng)用程序、驅(qū)動(dòng)器、BIOS等)的需求。
[0052]將SteelVine系列中的最初產(chǎn)品(S卩,獨(dú)立PM和EPM(Polaris)以及可縮放的EPM(Milkyway))設(shè)計(jì)成在單個(gè)高度集成的芯片上存儲(chǔ)子系統(tǒng)(SSoC)內(nèi)遞送完整的存儲(chǔ)子系統(tǒng)性能。雖然SteelVine元件(及其相關(guān)的芯片上嵌入軟件)確實(shí)提供了幾乎是完整的存儲(chǔ)子系統(tǒng)功能,可能需要少量附加的元件(例如,外部EEPROM、LED、LM87環(huán)境控制元件等)來(lái)創(chuàng)建完整的存儲(chǔ)子系統(tǒng)。以下描述為完整的子系統(tǒng)所需的元件以及包括完整的基于Polaris的存儲(chǔ)子系統(tǒng)的所有主要實(shí)體。
[0053]SteelVine架構(gòu)的應(yīng)用
[0054]以下段落提供這樣一種描述,其中=SteelVine架構(gòu)適應(yīng)于存儲(chǔ)接口體系,該架構(gòu)如何與當(dāng)今現(xiàn)有的其他架構(gòu)相關(guān),且基于該架構(gòu)的產(chǎn)品會(huì)如何顯現(xiàn)。
[0055]SteelVine架構(gòu)是以創(chuàng)建具有在物理驅(qū)動(dòng)器之上增強(qiáng)的屬性的虛擬驅(qū)動(dòng)器的概念為基礎(chǔ)的,其中物理驅(qū)動(dòng)器根據(jù)其屬性而組成。在該架構(gòu)中,提供了這些增強(qiáng),同時(shí)向主機(jī)呈現(xiàn)物理驅(qū)動(dòng)器將擁有的相同接口。結(jié)果,SteelVine架構(gòu)可以向所有支持SATA存儲(chǔ)的系統(tǒng)提供益處,而無(wú)需對(duì)現(xiàn)有的主機(jī)軟件進(jìn)行添加或修改。這使SteelVine架構(gòu)獨(dú)立于BIOS、設(shè)備驅(qū)動(dòng)器、文件系統(tǒng)、OS或應(yīng)用程序,而且能夠在無(wú)一般的大量兼容測(cè)試需求負(fù)擔(dān)的情況下被引入。它還消除了高級(jí)存儲(chǔ)功能與主機(jī)系統(tǒng)之間無(wú)法預(yù)料和不合乎要求的所有類型的交互作用的機(jī)會(huì),這一般與RAID硬件的使用有關(guān)聯(lián)。
[0056]以低級(jí)抽象來(lái)引入存儲(chǔ)功能增強(qiáng)的能力提供了廣泛的益處。SteelVine架構(gòu)以其中一個(gè)最低級(jí)存儲(chǔ)接口體系為中心:即塊存取接口。對(duì)給定類型的驅(qū)動(dòng)器而言低于該級(jí)別的只有類型物理、鏈路和傳輸接口層。在驅(qū)動(dòng)器協(xié)議系列內(nèi)(例如,SCSI)可以存在許多不同的子協(xié)議(例如,Ultra320)以及許多不同類型的物理、鏈路和傳輸接口(例如,SAS、光/銅FC等)。雖然在不同類型的磁盤(pán)驅(qū)動(dòng)器所提供的本地接口內(nèi)存在許多差異(而且驅(qū)動(dòng)器的塊級(jí)別協(xié)議規(guī)范還可在它們的規(guī)范當(dāng)中存在極大的不同),由現(xiàn)代磁盤(pán)驅(qū)動(dòng)器提供的塊存取的通用抽象保存了在所有類型的驅(qū)動(dòng)器當(dāng)中的通用性。
[0057]在最常見(jiàn)的概念中,如今流行的所有磁盤(pán)驅(qū)動(dòng)器提供了一組通用的讀/寫(xiě)塊語(yǔ)義,它們遵循了以下原則:
[0058]發(fā)起者(例如,主機(jī))向選定的目標(biāo)設(shè)備(例如,物理驅(qū)動(dòng)器)發(fā)出命令;
[0059]該命令包括指示了將執(zhí)行的命令類型(例如,讀、寫(xiě)等)的操作碼,還包括啟始?jí)K地址和對(duì)啟動(dòng)后將影響多少塊進(jìn)行的計(jì)數(shù);
[0060]如果該命令是讀取命令,則目標(biāo)設(shè)備以要求數(shù)量的塊作出響應(yīng),從開(kāi)始于所給定的塊地址的驅(qū)動(dòng)器中進(jìn)行讀取;
[0061]如果該命令是寫(xiě)入命令,則由遵循該命令的發(fā)起者提供將寫(xiě)入該驅(qū)動(dòng)器(開(kāi)始于給定的塊地址)的指定數(shù)量的塊。
[0062]雖然細(xì)節(jié)和術(shù)語(yǔ)改變了,但是塊級(jí)別接口的通用性質(zhì)是相同的,不管包含的是何種類型的驅(qū)動(dòng)器。如今最通用的驅(qū)動(dòng)器協(xié)議稱為SCSI和ΑΤΑ。這些協(xié)議各自具有不同的涉及目標(biāo)設(shè)備(例如,目標(biāo)端口地址對(duì)邏輯單元編號(hào)(LUN))和存儲(chǔ)位置(例如,邏輯塊地址對(duì)塊編號(hào))的方式。然而,SCSI和ATA根本上主要以相同的方式操作;它們基于設(shè)定的開(kāi)始地址提供對(duì)給定數(shù)量的固定大小單元(即,塊或扇區(qū))進(jìn)行讀和寫(xiě)操作。
[0063]對(duì)比SteelVine與其他存儲(chǔ)子系統(tǒng)架構(gòu)
[0064]為了幫助理解SteelVine架構(gòu),對(duì)如今主導(dǎo)的存儲(chǔ)架構(gòu)進(jìn)行研究。最簡(jiǎn)單和最通用的存儲(chǔ)架構(gòu)類型稱為直接附連存儲(chǔ)(DAS)。在DAS中,經(jīng)由HBA將磁盤(pán)驅(qū)動(dòng)器附連到專用主機(jī)。雖然存在幾種該方案的變形(例如,包括多點(diǎn)總線或網(wǎng)絡(luò)集線器/多路復(fù)用器/交換機(jī)),它們?cè)试S將多個(gè)驅(qū)動(dòng)器連接到單個(gè)HBA端口,但通常隨時(shí)將每一個(gè)驅(qū)動(dòng)器連接到單個(gè)主機(jī)。DAS模型向主機(jī)提供了低成本和復(fù)雜性的存儲(chǔ),其中成本因變于連接到主機(jī)的驅(qū)動(dòng)器、電纜和HBA的數(shù)量,而復(fù)雜性涉及安裝HBA(及其必要的驅(qū)動(dòng)器和支持軟件)以及在HBA的存儲(chǔ)端口上附連驅(qū)動(dòng)器。在包括一個(gè)以上主機(jī)的系統(tǒng)中,該方案具有低利用率的缺陷,這是因?yàn)榇鎯?chǔ)資源被分割且每一個(gè)驅(qū)動(dòng)器被綁定到單個(gè)主機(jī)。在這種情況下,有可能某些主機(jī)具有過(guò)多的能力,而其他主機(jī)的能力太低。唯一的解決方案是添加附加的驅(qū)動(dòng)器。然而,在DAS架構(gòu)中添加或移動(dòng)驅(qū)動(dòng)器會(huì)是復(fù)雜和昂貴(就時(shí)間和精力而言)的實(shí)踐,這是因?yàn)橐砑踊蛞瞥?qū)動(dòng)器就必須頻繁地切斷主機(jī)。除此之外,DAS子系統(tǒng)的可靠性和可用性傾向于比需要的略少。這歸因于這樣一種事實(shí):即,任何主機(jī)、驅(qū)動(dòng)器或電纜連接裝置的故障都導(dǎo)致在受影響的驅(qū)動(dòng)器上丟失對(duì)數(shù)據(jù)的存取。
[0065]開(kāi)發(fā)存儲(chǔ)區(qū)網(wǎng)絡(luò)(SAN)來(lái)解決DAS架構(gòu)的關(guān)于大型企業(yè)系統(tǒng)的缺陷。在該架構(gòu)方案中定義了專業(yè)化存儲(chǔ)網(wǎng)絡(luò)(即,光纖通道(FC)),它允許以(不同程度上)靈活的方式將驅(qū)動(dòng)器集合連接到一組主機(jī)。在SAN中,有可能細(xì)分驅(qū)動(dòng)器并將它們的各個(gè)部分分配到指定主機(jī)。如果特定主機(jī)失效,備選主機(jī)還可能接管一組驅(qū)動(dòng)器。該架構(gòu)的優(yōu)勢(shì)在于允許(稍微動(dòng)態(tài)地)靈活地對(duì)主機(jī)重新分配驅(qū)動(dòng)器(及其部分),從而產(chǎn)生可能相對(duì)于DAS架構(gòu)更大的數(shù)據(jù)可用性和對(duì)驅(qū)動(dòng)器更高的利用率。然而,SAN架構(gòu)就存儲(chǔ)(包括驅(qū)動(dòng)器、電纜和控制器)的價(jià)格與對(duì)于設(shè)置和管理該存儲(chǔ)子系統(tǒng)的復(fù)雜性而言成本相當(dāng)高。
[0066]DAS和SAN架構(gòu)都是運(yùn)行在塊級(jí)別上的存儲(chǔ)子系統(tǒng)。然而,稱為網(wǎng)絡(luò)附連存儲(chǔ)(NAS)的下一級(jí)架構(gòu)運(yùn)行在文件抽象級(jí)別上。NAS架構(gòu)包括充當(dāng)文件服務(wù)器的主機(jī),它連接到驅(qū)動(dòng)器集合(通常經(jīng)由DAS架構(gòu))并在網(wǎng)絡(luò)(一般是局域網(wǎng))上遞送對(duì)其他主機(jī)的文件存取。因?yàn)镹AS架構(gòu)運(yùn)行在不同的抽象級(jí)別,所以不可能在其特性(例如,價(jià)格、性能、復(fù)雜性)與此處所述其他架構(gòu)的那些特性之間進(jìn)行直接對(duì)比。
[0067]最后,在圖5中示出該SteelVine架構(gòu),它與DAS和SAN架構(gòu)共享特性。在某種意義上,SteelVine架構(gòu)提供了一種“盒內(nèi)SAN”,其中由驅(qū)動(dòng)器陣列表示的存儲(chǔ)性能可以按照直接且經(jīng)濟(jì)合算的方式與一組主機(jī)相關(guān)聯(lián)。SteelVine架構(gòu)在DAS架構(gòu)的成本級(jí)別和簡(jiǎn)單性上遞送SAN架構(gòu)的靈活性和有效性。另外,SteelVine架構(gòu)對(duì)存儲(chǔ)體系的塊級(jí)別尋址,而且同樣地,對(duì)NAS架構(gòu)內(nèi)文件服務(wù)器元件提供益處。
[0068]在此應(yīng)當(dāng)注意的是不對(duì)不同的RAID級(jí)別尋址。它們并不表現(xiàn)出存儲(chǔ)架構(gòu),而是一系列存儲(chǔ)子系統(tǒng)實(shí)現(xiàn)技術(shù),用于提供增強(qiáng)級(jí)別的存儲(chǔ)功能。在某些SteelVine架構(gòu)的實(shí)施例中,借助于簡(jiǎn)單強(qiáng)制手段(例如,鏡像,相對(duì)于奇偶RAID)來(lái)創(chuàng)建所需級(jí)別的性能和可靠性,用以實(shí)現(xiàn)價(jià)格/性能目標(biāo)并滿足為最初的SteelVine產(chǎn)品選擇的用量龐大、對(duì)成本敏感的目標(biāo)市場(chǎng)的必要條件。本領(lǐng)域的普通技術(shù)人員將理解還可以使用其他通用的方法來(lái)實(shí)現(xiàn)RAID功能(例如,奇偶RAID)。
[0069]SteelVine架構(gòu)的示例實(shí)施例
[0070]可在多種不同場(chǎng)景中應(yīng)用SteelVine架構(gòu)以其不同的(或增強(qiáng)的)特性來(lái)創(chuàng)建虛擬驅(qū)動(dòng)器的能力,這些特性超出了創(chuàng)建虛擬驅(qū)動(dòng)器所依據(jù)的物理驅(qū)動(dòng)器的那些特征,其中這些不同的場(chǎng)景是從連接到單個(gè)主機(jī)的少量驅(qū)動(dòng)器到較大的充當(dāng)大主機(jī)集合的驅(qū)動(dòng)器陣列。在該范圍的低端,可組合幾個(gè)(例如,2個(gè)至4個(gè))2.5英寸驅(qū)動(dòng)器與單個(gè)SteelVineSSoC來(lái)創(chuàng)建適合于規(guī)范3.5英寸驅(qū)動(dòng)器封裝內(nèi)的塊,而且該塊包括單個(gè)SATA端口和單個(gè)電源接頭。雖然在物理上表現(xiàn)為單個(gè)3.5英寸驅(qū)動(dòng)器,但是這種單元可以提供大量不同的特征,包括高度可靠的(即,透明鏡像的)驅(qū)動(dòng)器或多個(gè)虛擬驅(qū)動(dòng)器(每一個(gè)都包括它們自己的關(guān)于大小、性能和可靠性的專門(mén)特性)。同樣地,可以把多個(gè)(例如,2個(gè)至4個(gè))3.5英寸驅(qū)動(dòng)器組合到一個(gè)構(gòu)建塊(Brick)內(nèi),而且它們也具有單個(gè)SATA和電源接頭。
[0071]可以將構(gòu)建塊用作構(gòu)建各種不同類型存儲(chǔ)陣列時(shí)的基本構(gòu)件。圖6示出了某些可以利用構(gòu)建塊來(lái)創(chuàng)建的不同類型的架構(gòu)。在圖6a中,將四個(gè)驅(qū)動(dòng)器的構(gòu)建塊用作標(biāo)準(zhǔn)桌面?zhèn)萈C塔內(nèi)的單個(gè)存儲(chǔ)單元。在該應(yīng)用中,構(gòu)建塊僅占用連接到主板的單個(gè)SATA連接,而不管它呈現(xiàn)出的虛擬驅(qū)動(dòng)器的數(shù)量。其優(yōu)點(diǎn)在于SATA端口以有限的數(shù)量可用。圖6b示出獨(dú)立的外部配置中的相同基本構(gòu)建塊。在該應(yīng)用中,構(gòu)建塊具有它自己的封裝和電源,并經(jīng)由外部SATA(eSATA)連接來(lái)與主機(jī)相連。獨(dú)立的構(gòu)建塊還可以包括一個(gè)附加的接口(例如,RS232、USB、以太網(wǎng)等)以供對(duì)該陣列的頻帶外監(jiān)控或控制。構(gòu)建塊還可包括存儲(chǔ)器-設(shè)備端口(例如,緊湊型閃存)來(lái)允許向構(gòu)建塊的SteelVine SSoC中加載配置信息或從中存出配置信息。
[0072]利用SteelVine架構(gòu)的可縮放特征,可如圖6c所示地將幾個(gè)構(gòu)建塊組合到基于機(jī)架的存儲(chǔ)陣列中(稱為架位(Shelf))。在該示例中,四個(gè)構(gòu)建塊共享一對(duì)冗余的電源供給,而且每一個(gè)構(gòu)建塊都連接到中央控制器,該中央控制器可提供附加的功能(例如,奇偶RAID,轉(zhuǎn)換成諸如FC或SCSI的另一存儲(chǔ)接口,等等)。架位的驅(qū)動(dòng)器都可通過(guò)SteelVineSSoC相連,而且它們可經(jīng)由eSATA連接與一個(gè)或多個(gè)主機(jī)或控制器相連。
[0073]最后,圖6d示出這樣一個(gè)示例,其中多個(gè)架位彼此相連以創(chuàng)建存儲(chǔ)機(jī)架。可以按照多種不同的拓?fù)浣Y(jié)構(gòu)來(lái)配置這種存儲(chǔ)機(jī)架,這取決于每一個(gè)架位內(nèi)的驅(qū)動(dòng)器如何連接到SteelVine元件以及該架位內(nèi)的元件如何互連。在一種極端情況下,整個(gè)機(jī)架可以通過(guò)單個(gè)SATA連接來(lái)與主機(jī)相連。
[0074]存儲(chǔ)陣列控制器元件
[0075]典型的基于Polaris的存儲(chǔ)子系統(tǒng)由三個(gè)頂層類實(shí)體組成,即如圖12所示的主機(jī)、存儲(chǔ)陣列控制器和驅(qū)動(dòng)器。該圖還示出從事制造基于SteelVine的存儲(chǔ)子系統(tǒng)的頂層硬件和軟件元件。如圖所示,主機(jī)硬件包括某種形式的主機(jī)總線適配器(HBA),它連接主機(jī)的內(nèi)部I / O總線與存儲(chǔ)互連鏈路,其中該存儲(chǔ)互連鏈路與存儲(chǔ)陣列控制器相連。
[0076]某些存儲(chǔ)陣列控制器支持除了其主要存儲(chǔ)互連鏈路之外的連接。這些鏈路可以僅旨在供偶爾使用(例如,在工廠中,現(xiàn)場(chǎng)重新配置等),或者它們可以提供“長(zhǎng)期的”附連,該“長(zhǎng)期的”附連允許對(duì)存儲(chǔ)陣列控制器進(jìn)行動(dòng)態(tài)存取(例如監(jiān)控、代碼更新、策略輸入等)。我們稱這些“頻帶外的”機(jī)制為追加的互連鏈路??梢岳酶鞣N不同的通信技術(shù)(例如,以太網(wǎng)、USB、RS232、WiFi等)來(lái)實(shí)現(xiàn)這些頻帶外的通信信道,而且這些通信信道可以包括在其上分層放置廣泛的不同通信協(xié)議(例如,HTTP、TCP / IP、專有協(xié)議等)。還可通過(guò)“頻帶內(nèi)的”通信信道來(lái)提供與頻帶外的信道所提供功能相同的功能,即,通過(guò)在主要存儲(chǔ)互連鏈路內(nèi)創(chuàng)建子信道(例如,SATA)。
[0077]除了追加的通信鏈路之外,存儲(chǔ)子系統(tǒng)還可提供一組外部可存取的I / O設(shè)備,在此稱其為“面板”。該面板可將任何來(lái)自單個(gè)LED和開(kāi)關(guān)I / O的動(dòng)作提供給非常精心制作的帶有音頻輸出端的彩色觸摸屏LCD。就像頻帶外的信道那樣,面板可向用戶呈現(xiàn)關(guān)于存儲(chǔ)子系統(tǒng)的狀態(tài)信息,而且可采用來(lái)自用戶的輸入用以配置和管理目的。面板還可向用戶提供可移動(dòng)形式的非易失性存儲(chǔ)接口(例如,USB、緊湊型閃存等),它可以用來(lái)備份和恢復(fù)存儲(chǔ)陣列控制器的配置和狀態(tài)信息。[0078]為了支持各種各樣的頻帶外的口和廣泛的不同類型的面板,可把當(dāng)前一代的SteelVine SSoC設(shè)計(jì)成包括對(duì)外部微控制器的單個(gè)接口??蛇x擇適當(dāng)?shù)奈⒖刂破鱽?lái)處理所需的頻帶外通信鏈路以及所需形式的面板。外部微控制器輕易地通過(guò)外部控制接口與SSoC接口。正如稍后所述,還可使用這類外部微控制器來(lái)實(shí)現(xiàn)對(duì)于給定的存儲(chǔ)子系統(tǒng)的策略。
[0079]值得注意的是,可通過(guò)分離的微處理器來(lái)處理后面的這些功能中的每一個(gè)功能,或者可將幾個(gè)(或甚至是全部)這些功能組合到一個(gè)公共微處理器內(nèi)。為簡(jiǎn)單起見(jiàn),在該討論中,我們描述了一種單獨(dú)的外部微處理器,它處理所有所需功能。該文件中的示例使用了單個(gè)SSoC ;然而,SteelVine架構(gòu)允許將多個(gè)SSoC組合到單個(gè)邏輯實(shí)體內(nèi),且在具有集合的資源之和的情況下具有與單個(gè)SSoC幾乎相同的性能和功能。因此,可以把單個(gè)SSoC用作對(duì)可縮放元件集合的簡(jiǎn)化表示(例如,Milkyway)。
[0080]硬件元件
[0081]存儲(chǔ)陣列控制器硬件通常包括對(duì)多個(gè)驅(qū)動(dòng)器與主機(jī)的存儲(chǔ)鏈路之間的互連進(jìn)行管理的元件,以及其他對(duì)分選的動(dòng)作進(jìn)行管理的硬件單元,其中這些硬件單元與所組裝的驅(qū)動(dòng)器集合的物理封裝有關(guān)。這些與物理驅(qū)動(dòng)器封裝有關(guān)的動(dòng)作通稱為機(jī)架管理(EM),并且包括如下功能:控制LED和監(jiān)控電源、風(fēng)扇、溫度等?;赟teelVine的存儲(chǔ)陣列控制器硬件主要包括(一個(gè)或多個(gè))SteelVine SSoC,而且經(jīng)常包括附加的微控制器來(lái)處理機(jī)架管理、主機(jī)與存儲(chǔ)陣列控制器之間的頻帶外通信以及用于SteelVine SSoC的外部策略邏輯。
[0082]在Polaris SSoC內(nèi),嵌有硅圖像所有權(quán)的微控制器(內(nèi)部稱為Pico)執(zhí)行所有初始化、控制面、虛擬化和外部接口功能。Pico CPU是一種高性能、低成本、內(nèi)嵌32比特RISC的處理器,它具有Harvard存儲(chǔ)架構(gòu)(即,分離的指令和數(shù)據(jù)存儲(chǔ)器)。指令存儲(chǔ)器由64KB的片上SRAM組成,數(shù)據(jù)存儲(chǔ)器由16KB的片上SRAM組成。使用一個(gè)分離的控制寄存器地址空間來(lái)與Polaris芯片上的各個(gè)功能單元通信。
[0083]Milkyway SSoC提供了 Polaris特征的超集,它包括添加用于內(nèi)部互連的一組內(nèi)部交換鏈路(ISL)連接、硬件支持路由層、增強(qiáng)的嵌入式處理器(即,Pico II)和交叉開(kāi)關(guān)(相對(duì)于總線)。內(nèi)部交換鏈路(ISL)端口和路由硬件允許把Milkyway SSoC組合到一種結(jié)構(gòu)內(nèi),它允許縮放Polaris的功能以在公共存儲(chǔ)子系統(tǒng)內(nèi)包括大量主機(jī)和驅(qū)動(dòng)器端口。在稍后的小節(jié)中將提供對(duì)ISL鏈路及其創(chuàng)建可縮放的存儲(chǔ)陣列控制器的用途的進(jìn)一步描述。
[0084]Pico II是為SteelVine系列SSoC設(shè)計(jì)的第二代嵌入式控制器,并結(jié)合在Polaris內(nèi)發(fā)現(xiàn)的優(yōu)于Pico I芯片的大量改善。包含在Pico II內(nèi)的優(yōu)于Pico I的增強(qiáng)為:增加四個(gè)地址斷點(diǎn)寄存器和單步調(diào)試方式(均用于支持基于gdb的調(diào)試),放寬分支指令校準(zhǔn)限制,以及刪除未使用(加載和旋轉(zhuǎn))的指令。不管它們有何差異,相同的工具鏈支持Pico I和 Pico II。
[0085]軟件元件
[0086]除了以上定義的硬件元件之外,基于Polaris的存儲(chǔ)子系統(tǒng)包括各種不同的軟件元件。在頂層上,在這類系統(tǒng)中有幾種不同類型的軟件,每一個(gè)軟件根據(jù)系統(tǒng)內(nèi)該軟件所存在的層、該軟件在其內(nèi)執(zhí)行的環(huán)境的限制、以及該軟件本身的特性(例如,并發(fā)程度、實(shí)時(shí)等)來(lái)區(qū)分??梢园阎鳈C(jī)內(nèi)的軟件類型分成以下類型:設(shè)備驅(qū)動(dòng)器、系統(tǒng)軟件和應(yīng)用程序軟件。
[0087]設(shè)備驅(qū)動(dòng)器是這樣一種代碼,它借助于HBA硬件來(lái)管理存儲(chǔ)鏈接并向主機(jī)內(nèi)更高層的軟件提供對(duì)存儲(chǔ)子系統(tǒng)的特征和性能的存取。雖然該代碼應(yīng)當(dāng)在很大程度上不知道Polaris與標(biāo)準(zhǔn)PM的任何不同,但是存在大量供應(yīng)商指定的對(duì)PM規(guī)范的寄存器集合的擴(kuò)展,即設(shè)備驅(qū)動(dòng)器會(huì)了解以便于充分利用Polaris設(shè)備。另外,設(shè)備驅(qū)動(dòng)器應(yīng)當(dāng)支持傳送子系統(tǒng)生成事件的基于非輪詢方式。這意味著為了允許主機(jī)軟件逐漸察覺(jué)存儲(chǔ)子系統(tǒng)內(nèi)顯著的狀態(tài)變化(例如,驅(qū)動(dòng)器上線/離線、EM事件等),必須支持某種回調(diào)或阻止輸入輸出控制(ioctl)類型的機(jī)制。同樣地,如果有必要通過(guò)頻帶內(nèi)的通信(即,利用SATA鏈路)來(lái)與Polaris子系統(tǒng)通信,則設(shè)備驅(qū)動(dòng)器應(yīng)當(dāng)提供對(duì)此的支持(或至少是不阻止其發(fā)生)。這(一般)是核心層代碼,即高度0S(以及版本)專用的,需要深入地理解內(nèi)核編程以及大量系統(tǒng)硬件詳盡知識(shí)(包括主機(jī)、HBA、Polaris、EM和驅(qū)動(dòng)器的相關(guān)知識(shí))。其效果反應(yīng)在整體系統(tǒng)層性能中。
[0088]系統(tǒng)軟件包括低層系統(tǒng)代碼,該低層系統(tǒng)代碼與設(shè)備驅(qū)動(dòng)器交互并執(zhí)行不涉及直接的用戶交互的功能。例如,監(jiān)控存儲(chǔ)子系統(tǒng)并報(bào)告所有的異常情況(例如,驅(qū)動(dòng)器故障、溫度或電壓偏移等)的后臺(tái)程序可在后臺(tái)運(yùn)行,注冊(cè)其對(duì)設(shè)備驅(qū)動(dòng)器的興趣,并在其任一監(jiān)控事件發(fā)生時(shí)獲得通知。同樣,后臺(tái)程序可存在以處理策略事件(例如,驅(qū)動(dòng)器上線/離線轉(zhuǎn)變),并響應(yīng)于某種預(yù)定義策略邏輯的執(zhí)行而執(zhí)行對(duì)SSoC狀態(tài)的更新(例如,在添加新的驅(qū)動(dòng)器時(shí),將其級(jí)聯(lián)到給定邏輯驅(qū)動(dòng)器的末端,或者啟動(dòng)關(guān)于鏡像集的重建操作)。這類代碼需要了解系統(tǒng)層(但不必是核心層的)編程,而且適度地深入了解基于SteelVine子系統(tǒng)的特征和功能。這并不傾向于成為高性能或資源約束的代碼。
[0089]應(yīng)用程序軟件作為標(biāo)準(zhǔn)應(yīng)用程序而運(yùn)行在OS頂層,而且通常執(zhí)行涉及直接用戶交互的功能,例如提供對(duì)存儲(chǔ)子系統(tǒng)所提供特征的用戶存取的圖形用戶接口(GUI)或命令行接口(CLI)代碼。這類代碼要求強(qiáng)調(diào)人為因素方面更甚于存儲(chǔ)子系統(tǒng)的任一特定技術(shù)細(xì)節(jié),而且應(yīng)該集中在如何抽象并向用戶提供底層性能。該代碼在資源豐富的環(huán)境中允許,其中唯一的性能問(wèn)題傾向于人成為與交互相關(guān)聯(lián)的問(wèn)題。
[0090]存儲(chǔ)子系統(tǒng)內(nèi)存在的軟件分為兩大類:固件和微碼。
[0091]固件是在存儲(chǔ)子系統(tǒng)內(nèi)的支持微控制器上運(yùn)行的代碼。該代碼執(zhí)行諸如EM、外部通信和SteelVine策略功能等的事情,并旨在在與主機(jī)軟件相比資源限制更多且性能敏感的環(huán)境內(nèi)運(yùn)行。否則,該代碼在本質(zhì)上類似于上述有關(guān)主機(jī)的系統(tǒng)軟件。該代碼可以在標(biāo)準(zhǔn)實(shí)時(shí)操作系統(tǒng)(RTOS)或定制的運(yùn)行時(shí)操作系統(tǒng)之上運(yùn)行。在很大程度上,固件將在存儲(chǔ)子系統(tǒng)內(nèi)執(zhí)行低層的硬件操縱。極端地,該固件可以提供相當(dāng)高級(jí)的功能,例如通過(guò)以太網(wǎng)連接提供對(duì)子系統(tǒng)的外部(頻帶外)存取的網(wǎng)絡(luò)服務(wù)器。然而,事實(shí)是它必須在低成本/性能的微型控制器上運(yùn)行,該微型控制器要求寫(xiě)入不同于類似基于主機(jī)版本的代碼。
[0092]微碼是在SteelVine元件上運(yùn)行以實(shí)現(xiàn)SSoC本身功能的特定類型代碼。SteelVine元件包括娃元件(即,Polaris)和微碼元件。微碼密切參與SSoC的操作,因此微碼需要深度了解芯片本身的最詳細(xì)細(xì)節(jié)。它在高度資源約束和性能敏感的環(huán)境內(nèi)運(yùn)行。它涉及較高的并發(fā)程度,并要求遵守特定的編碼因素以符合所有約束條件。經(jīng)常對(duì)此代碼提供某種形式的定制運(yùn)行環(huán)境,這是因?yàn)闃?biāo)準(zhǔn)的RTOS通常不能在此使用。
[0093]內(nèi)部交換鏈路(ISL)互連結(jié)構(gòu)
[0094]不是以樹(shù)就是以網(wǎng)格拓?fù)浣Y(jié)構(gòu)的方式連接在一起的(即,級(jí)聯(lián)的)高級(jí)存儲(chǔ)設(shè)備可確定它們與類似的高級(jí)存儲(chǔ)設(shè)備互連。該確定可根據(jù)特定端口、開(kāi)關(guān)設(shè)備、協(xié)議信號(hào)等的使用來(lái)進(jìn)行。一旦被確定,該元件就可使用通信方法而非標(biāo)準(zhǔn)的磁盤(pán)接口協(xié)議(例如,SATA)。這樣一種通信方法是內(nèi)部交換鏈路(ISL)協(xié)議。在ISL的一個(gè)實(shí)施例中,當(dāng)發(fā)送與接收設(shè)備之間存在一個(gè)以上的路徑時(shí),實(shí)現(xiàn)ISL的高級(jí)存儲(chǔ)設(shè)備將利用最有效的路徑來(lái)通過(guò)網(wǎng)格路由消息。ISL協(xié)議在任意互連拓?fù)浣Y(jié)構(gòu)內(nèi)提供了有效的基于消息的通信。在ISL網(wǎng)絡(luò)內(nèi),每一個(gè)高級(jí)存儲(chǔ)設(shè)備被視為是該網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn),并被賦予唯一的節(jié)點(diǎn)ID。ISL把每一個(gè)消息分成小單元,稱為流控制單元(或微片),它們?cè)诠?jié)點(diǎn)之間運(yùn)送信息。每一個(gè)微片以一個(gè)單元發(fā)送,但消息中的后續(xù)微片會(huì)因?yàn)榻邮展?jié)點(diǎn)中的擁塞而被阻塞。每一 ISL鏈路都是全雙工的,而且每一個(gè)方向被邏輯地劃分成兩個(gè)或多個(gè)虛擬信道(VC)。消息的所有微片都將使用任一給定鏈路的單個(gè)VC。雖然由于流控制而阻擋了一個(gè)VC上的消息,但是不同的消息可利用另一個(gè)VC而在鏈路上繼續(xù)前行。在一實(shí)施例中,其中一個(gè)VC專供短消息之用。在初始時(shí)和當(dāng)為網(wǎng)絡(luò)添加節(jié)點(diǎn)或從網(wǎng)絡(luò)移除節(jié)點(diǎn)時(shí),ISL節(jié)點(diǎn)交換“洪水演算”(floodrouting)消息。這些消息包含始發(fā)節(jié)點(diǎn)的ID和該消息跨越的“中轉(zhuǎn)”(或中介)節(jié)點(diǎn)的數(shù)量。通過(guò)存儲(chǔ)消息到達(dá)的鏈路和對(duì)每個(gè)其它節(jié)點(diǎn)的最小跳躍計(jì)數(shù),節(jié)點(diǎn)就可確定用于向網(wǎng)絡(luò)中每個(gè)其它節(jié)點(diǎn)發(fā)送消息的最佳輸出鏈路。該信息存儲(chǔ)在路由表中。丟棄且不轉(zhuǎn)送來(lái)自給定節(jié)點(diǎn)的后來(lái)洪流演算消息,它包括比已知差的跳躍計(jì)數(shù)。這確保路由處理快速終止。如果到另一個(gè)節(jié)點(diǎn)的距離(即,跳躍計(jì)數(shù))在一個(gè)以上的鏈路上相同,就可在任一這些鏈路上發(fā)送消息。這用來(lái)實(shí)現(xiàn)鏈路中的負(fù)載共享。每個(gè)消息的第一微片包括期望目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)量。當(dāng)消息的第一個(gè)微片到達(dá)節(jié)點(diǎn)時(shí),檢驗(yàn)該微片以確定該消息要求的目的地。如果該目的地是接收節(jié)點(diǎn),則該消息(包括第一微片和在同一鏈路的同一VC上的一個(gè)或多個(gè)后續(xù)微片)被該節(jié)點(diǎn)所接受,并被引導(dǎo)到其中指定的虛擬驅(qū)動(dòng)器。否則,查閱路由表以確定用于向目的的節(jié)點(diǎn)轉(zhuǎn)發(fā)該消息的最佳輸出鏈路。如果一個(gè)以上鏈路可用,就向還未使用的鏈路提供優(yōu)于已經(jīng)使用的鏈路的優(yōu)先權(quán),或者向最近較少使用的鏈路提供優(yōu)于最近較多使用的鏈路的優(yōu)先權(quán)。
[0095]平衡的可縮放元件設(shè)計(jì)
[0096]平衡的子系統(tǒng)被定義為按照確保在通常的使用過(guò)程中無(wú)單獨(dú)的資源成為“瓶頸”的方式提供。SteelVine架構(gòu)解決的主要難題在于允許通過(guò)使用單個(gè)元件并保持平衡來(lái)創(chuàng)建廣泛范圍的子系統(tǒng)尺寸。SteelVine SSoC的籠統(tǒng)抽象模型具有針對(duì)不同類型鏈路(例如,主機(jī)SATA、驅(qū)動(dòng)器SATA和ISL)的未定義數(shù)量的端口。然而,對(duì)特定數(shù)量的每一類鏈路的選擇是在SteelVine元件設(shè)計(jì)中的重要問(wèn)題。除了選擇每一類端口的數(shù)量之外,專用于實(shí)現(xiàn)SteelVine功能(例如,虛擬化、增強(qiáng)等)的資源的數(shù)量是所得SSoC的成本與性能的主要決定因素。SteelVine架構(gòu)被定義成使擴(kuò)展主機(jī)與驅(qū)動(dòng)器連接的數(shù)量能僅利用少量(理想地,一種)元件類型跨寬泛范圍地(獨(dú)立地)縮放。
[0097]為了支持利用單個(gè)、低成本元件的較高的可縮放程度,就必須創(chuàng)建可構(gòu)建成較大子系統(tǒng)的原子單元。該原子單元充當(dāng)公共構(gòu)件以利用廣泛范圍的不同數(shù)量的主機(jī)和驅(qū)動(dòng)器端口來(lái)創(chuàng)建存儲(chǔ)開(kāi)關(guān)。該解決方案優(yōu)于不是招致有關(guān)包括未使用端口的開(kāi)關(guān)的額外費(fèi)用、就是招致針對(duì)每一種不同大小開(kāi)關(guān)實(shí)例的分離的NRE電荷的備選方案。此外,適當(dāng)定義的構(gòu)建塊單元將包含實(shí)現(xiàn)最小子系統(tǒng)的所有基層功能所需的最小資源數(shù)量,同時(shí)包括足夠的資源以確保所得的子系統(tǒng)保持平衡(即,沒(méi)有因任何給定類的資源類型數(shù)量不足而出現(xiàn)瓶頸),這是因?yàn)榻M合了更多的單元來(lái)創(chuàng)建不斷增大的子系統(tǒng)。[0098]通過(guò)一種結(jié)構(gòu)來(lái)實(shí)現(xiàn)可縮放性,并通過(guò)組合包括在原子構(gòu)建塊內(nèi)資源的定義與這些塊組合在其中的拓?fù)浣Y(jié)構(gòu)來(lái)實(shí)現(xiàn)平衡。超立方體的維度限定了可能的可縮放程度。根據(jù)靈活的路由結(jié)構(gòu),該互連拓?fù)浣Y(jié)構(gòu)可以是任意的,其中某些將比其他的更好。等待時(shí)間和帶寬是圍繞著開(kāi)關(guān)可縮放性的主要問(wèn)題。跳躍計(jì)數(shù)限定了等待時(shí)間。維度和拓?fù)浣Y(jié)構(gòu)限定了帶寬。N維超立方體是理想的拓?fù)浣Y(jié)構(gòu),這是因?yàn)樗钚』骄奶S長(zhǎng)度并提供統(tǒng)一的二等分帶寬(即,獲得相等的集合帶寬,而不管你從哪里對(duì)該架構(gòu)進(jìn)行二等分)。ISL端口的數(shù)量限定了該超立方體的維度。在最糟的情況下,所有主機(jī)都試圖存取距離主機(jī)節(jié)點(diǎn)最遠(yuǎn)的驅(qū)動(dòng)器,從而每一個(gè)節(jié)點(diǎn)都必須支持通過(guò)通信量,以及來(lái)自該節(jié)點(diǎn)的本地主機(jī)的通信量(前往遠(yuǎn)程節(jié)點(diǎn))和來(lái)自本地驅(qū)動(dòng)器的通信量(前往遠(yuǎn)程節(jié)點(diǎn)/主機(jī))。
[0099]為了實(shí)現(xiàn)較高的可縮放程度和優(yōu)化它們的價(jià)格/性能特征,利用大量“平衡的”的主機(jī)、驅(qū)動(dòng)器和交換機(jī)間鏈路與相關(guān)資源來(lái)構(gòu)造SteelVine元件。在此將平衡的元件設(shè)計(jì)定義成其中單個(gè)芯片具有足夠(帶寬和計(jì)算)資源來(lái)支持主機(jī)/驅(qū)動(dòng)器交互的元件,而且當(dāng)添加了附加的芯片時(shí),每一個(gè)附加的芯片提供了為確保整個(gè)子系統(tǒng)保持平衡所需的資源。
_0] 策略與機(jī)制的分離
[0101]在這種系統(tǒng)的設(shè)計(jì)中,經(jīng)常有較好的設(shè)計(jì)實(shí)踐來(lái)分離策略(即,應(yīng)該做什么)與機(jī)制(即,如何進(jìn)行)。已經(jīng)利用腦海里的這些原則設(shè)計(jì)了 SteelVine SSoC,從而產(chǎn)生了幾種不同的設(shè)計(jì)方案,以下描述主要的類型。
[0102]在基于SteelVine的產(chǎn)品中,微碼的主要功能是實(shí)現(xiàn)提供了基本功能SSoC(即,SATA PM功能,添加了虛擬化和RAID特征)的機(jī)制,連同一組其他的低層機(jī)制(例如,從磁盤(pán)到磁盤(pán)的復(fù)制、外部通信、遠(yuǎn)程存取等)。該代碼執(zhí)行子系統(tǒng)要求的所有“恒穩(wěn)態(tài)”操作。然而,當(dāng)某些“異常”事件發(fā)生時(shí)(例如,驅(qū)動(dòng)器故障、新的驅(qū)動(dòng)器上線、驅(qū)動(dòng)器離線等),就必須對(duì)如何響應(yīng)該事件做出判決。把“策略”元件定義成處理這些事件并確定響應(yīng)于它們中的每一個(gè)而要采取的適當(dāng)動(dòng)作。該邏輯以稱為策略模塊的代碼來(lái)實(shí)現(xiàn),其中可以在幾個(gè)不同的位置上執(zhí)行該代碼(如圖7所示)。
[0103]嵌入式策略
[0104]在第一個(gè)示例方案中(即,圖7a),把策略模塊嵌入SSoC本身內(nèi)。當(dāng)策略事件發(fā)生時(shí),調(diào)用策略模塊,而且芯片判定它自己需要做什么而無(wú)需參考任何外部實(shí)體。該策略判定處理的唯一外部輸入來(lái)自經(jīng)由芯片上的通用輸入管腳來(lái)遞送的短接選擇。根據(jù)這些短接選擇管腳的設(shè)置,可以從相同的策略塊中引出不同的性能,或替換地,可以選擇完全不同的嵌入式策略。
[0105]該策略邏輯與SSoC微碼中的機(jī)制分離,而且在策略模塊與核心機(jī)制之間存在明確定義的接口??梢酝鵖SoC內(nèi)加載任意的策略模塊(只要芯片的代碼與數(shù)據(jù)空間允許)。策略模塊的執(zhí)行通常不是時(shí)間嚴(yán)格的,所以性能相關(guān)因素很小(而且應(yīng)該在SSoC內(nèi)適當(dāng)降低的優(yōu)先級(jí)上執(zhí)行策略模塊)。
[0106]因?yàn)檫@類嵌入式策略可以僅依賴于相當(dāng)穩(wěn)定的信息,基于該信息可將如何對(duì)不同事件作出反應(yīng)作為判定基礎(chǔ),所以可使用這類嵌入式策略來(lái)實(shí)現(xiàn)相當(dāng)簡(jiǎn)單的策略。性能約束條件以及代碼和數(shù)據(jù)大小限制將禁止實(shí)現(xiàn)要求過(guò)度復(fù)雜計(jì)算的策略。在SSoC的EEPROM中存儲(chǔ)與實(shí)行中的策略有關(guān)的回歸狀態(tài)信息,其中該SSoC的EEPROM空間非常有限。[0107]對(duì)于大多數(shù)成本敏感的應(yīng)用程序來(lái)說(shuō),使用嵌入式策略最好被限制為僅僅是最簡(jiǎn)單和通用的策略。這是因?yàn)榧词篂榱巳菀椎靥砑雍鸵瞥K化該策略模塊,也必須在每次策略模塊改變時(shí)重新使SSoC完全生效(因?yàn)樗硎静煌奈⒋a)。此外,如果可能的話,很有可能不以嵌入的方式來(lái)實(shí)現(xiàn)任何將需要參考外部實(shí)體或用戶的策略。
[0108]本地外部策略
[0109]在圖7b中例示了第二種用于運(yùn)行策略模塊的方案,其中在SSoC本身的外部(或本地)的微型控制器內(nèi)實(shí)現(xiàn)該策略模塊??衫酶臃艑挼?盡管仍然不是完全無(wú)約束的)資源約束來(lái)實(shí)現(xiàn)更復(fù)雜的策略。由于非常低成本的單芯片微控制器(例如,PIC)的存在,所以該解決方案的附加成本可以非常低。該解決方案允許產(chǎn)生和確認(rèn)策略自由的(即,純粹機(jī)制的)SSoC,其中可以通過(guò)添加一個(gè)小元件(等效于基于12C的EEPROM)來(lái)添加定制的策略。替換地,可使用更高功能的微型控制器,該微型控制器還可以提供對(duì)存儲(chǔ)子系統(tǒng)的外部(頻帶外的)接口的支持,例如,以太網(wǎng)、USB或RS232鏈路、緊湊型閃存或PCMCIA卡接口、IS07816智能卡接口,或者802.*或藍(lán)牙無(wú)線鏈路。
[0110]可以通過(guò)外部接口來(lái)選擇或配置策略。該解決方案具有附加的益處,它允許在存儲(chǔ)子系統(tǒng)之外存儲(chǔ)與策略模塊相關(guān)的狀態(tài)信息。外部處理器(尤其是具有外部通信鏈路或固態(tài)存儲(chǔ)設(shè)備接口的處理器)可以提供一種將臨界狀態(tài)備份到“離站/遠(yuǎn)程”位置的手段。這防止驅(qū)動(dòng)器在策略處理器被替換時(shí)而變得無(wú)法存取。
[0111]以這種方式來(lái)配置外部策略控制器使得所有可能的事件能在無(wú)需用戶干預(yù)的情況下處理,即,做正確的事情而無(wú)需請(qǐng)求用戶輸入。這意味著對(duì)于許多事件而言,可以采取一種簡(jiǎn)化的、強(qiáng)制或最糟情況類型的動(dòng)作。例如,必須以簡(jiǎn)單的響應(yīng)來(lái)回答對(duì)新的驅(qū)動(dòng)器出現(xiàn)在系統(tǒng)內(nèi)時(shí)應(yīng)當(dāng)做什么的問(wèn)題,該簡(jiǎn)單響應(yīng)總是正確地運(yùn)行而不管情形如何,例如,總是以確定性的方式把新的驅(qū)動(dòng)器分配給預(yù)定義的邏輯驅(qū)動(dòng)器,對(duì)“空閑池”分配新的驅(qū)動(dòng)器,并等待用戶指引的配置等。
[0112]基于主機(jī)的策略
[0113]最后,圖7c所示的方案表示了在主機(jī)上實(shí)現(xiàn)策略模塊的情況。可以利用該解決方案來(lái)實(shí)現(xiàn)任意復(fù)雜的(且規(guī)定的)策略,而且該策略要求人工介入。
[0114]該方案有可能與以上定義的本地外部策略示例相同,其中主機(jī)執(zhí)行策略模塊而非本地微控制器。在該情形中,可把基于主機(jī)的策略模塊稱為“后臺(tái)”處理,即,應(yīng)用程序可以運(yùn)行在主機(jī)上而無(wú)需任何用戶可見(jiàn)的表現(xiàn)形式。在本地外部策略的情況下,主機(jī)可代替策略處理器,并運(yùn)行相同的策略計(jì)算作為主機(jī)后臺(tái)程序。后臺(tái)程序可以設(shè)置在主機(jī)上并安靜地運(yùn)行,對(duì)來(lái)自存儲(chǔ)子系統(tǒng)的事件作出響應(yīng),并向SSoC狀態(tài)發(fā)送更新。有可能包括完全預(yù)定義的策略模塊,它運(yùn)行在主機(jī)上作為后臺(tái)程序而無(wú)需任何用戶輸入,或者有可能包括根據(jù)用戶定義的配置文件、CLI或GUI配置和驅(qū)動(dòng)的策略模塊。
[0115]在為了確定響應(yīng)來(lái)自存儲(chǔ)子系統(tǒng)的事件所要采取的適當(dāng)動(dòng)作而應(yīng)當(dāng)參考用戶時(shí),存在許多情況。除上述后臺(tái)程序解決方案之外(不涉及任何以恒穩(wěn)態(tài)操作與用戶的交互),有可能包括在策略判定處理中涉及用戶的策略。可以創(chuàng)建基于CLI和GUI的應(yīng)用程序來(lái)運(yùn)行人在回路中的策略模塊。這些應(yīng)用程序處理來(lái)自于存儲(chǔ)子系統(tǒng)的事件,產(chǎn)生與用戶的交互(例如,通過(guò)彈出窗口),并更新存儲(chǔ)子系統(tǒng)的狀態(tài)。
[0116]可經(jīng)由頻帶內(nèi)(即,利用SATA鏈路)或頻帶外(即,利用某種諸如以太網(wǎng)、USB、RS232、WiF1、藍(lán)牙那樣的輔助連接)通信鏈路來(lái)執(zhí)行存儲(chǔ)子系統(tǒng)與其基于主機(jī)的策略模塊之間的互連。在以下章節(jié)中將更詳細(xì)地描述用來(lái)與外部策略模塊通信的協(xié)議和對(duì)頻帶內(nèi)相對(duì)頻帶外通信鏈路的使用。
[0117]策略實(shí)現(xiàn)詵擇
[0118]無(wú)論使用以上哪一種方案來(lái)實(shí)現(xiàn)策略,SteelVine SSoC機(jī)制與其策略模塊之間的接口都在邏輯上保持一致。由SSoC機(jī)制生成的事件(一般涉及驅(qū)動(dòng)器的加入和離開(kāi))去到策略模塊。然后,該策略模塊運(yùn)行某個(gè)邏輯來(lái)判斷作為響應(yīng)應(yīng)該執(zhí)行什么動(dòng)作(一般包括更新SSoC的虛擬表)。利用更新機(jī)制將這些動(dòng)作應(yīng)用到SteelVine SSoC0
[0119]還值得注意的是,除了上述三種方案之外,還存在各種混合方案用以實(shí)現(xiàn)基于SteelVine的存儲(chǔ)系統(tǒng)的策略模塊。例如,可以使用不是主機(jī)的非本地微控制器。在較大的系統(tǒng)中可以存在多個(gè)主機(jī),其中該較大的系統(tǒng)包括SteelVine存儲(chǔ),而且可以假設(shè)單個(gè)主機(jī)執(zhí)行對(duì)于較大系統(tǒng)中每一個(gè)SSoC的策略功能。
[0120]以上定義的每一種方案(以及各種混合選擇)都具有不同的益處、成本、性能和限制。第一種方案(嵌入式策略)具有與單芯片解決方案相關(guān)的簡(jiǎn)單性和低成本優(yōu)勢(shì)。雖然可能利用該解決方案來(lái)實(shí)現(xiàn)許多有用的策略,但它是最受限制的方案。第二種方案(本地外部策略)在相當(dāng)大范圍的不同成本上提供廣泛的性能,其中該大范圍的不同成本是從略高于單芯片解決方案到略低于基于主機(jī)的解決方案。事實(shí)是可以把外部策略模塊“機(jī)載”到用于其他功能的微控制器上(例如,機(jī)架管理和外部接口處理器),使該解決方案成為合乎需要的方案。雖然可以認(rèn)為第三種方案是最具成本效率的(利用主機(jī)內(nèi)現(xiàn)有的資源),但是該方案具有顯著的缺陷。基于主機(jī)的策略解決方案運(yùn)行計(jì)數(shù)器來(lái)達(dá)到創(chuàng)建存儲(chǔ)子系統(tǒng)的目的,其表現(xiàn)為使用簡(jiǎn)單的電子設(shè)備,它對(duì)任何主機(jī)起作用且無(wú)需用戶干預(yù)來(lái)執(zhí)行它們定義的功能?;谥鳈C(jī)的解決方案要求在主機(jī)上安裝軟件,其中必須創(chuàng)建該軟件并確認(rèn)供具有許多版本的OS使用。該解決方案還耗費(fèi)主機(jī)資源,傾向于每單元要比較小的嵌入式控制器昂貴得多。此外,如果主機(jī)的置換導(dǎo)致了策略/配置信息的損失,就會(huì)折衷對(duì)數(shù)據(jù)的存取。
[0121]SteelVine SSOC 的特征
[0122]SteelVine架構(gòu)可以存在許多不同的實(shí)現(xiàn)方式,但位于該架構(gòu)核心的元件都共享一個(gè)通用特征集并導(dǎo)致一個(gè)通用特性集。在本小節(jié)中定義了整個(gè)SteelVine SSoC系列的通用特性集,并在以下小節(jié)中描述由特定實(shí)現(xiàn)來(lái)實(shí)施的特征子集(基于Polaris和Milkyway硬件)。
[0123]在主機(jī)看來(lái),SteelVine元件表現(xiàn)為標(biāo)準(zhǔn)端口倍增器背后的一個(gè)物理驅(qū)動(dòng)器集。這些呈現(xiàn)在主機(jī)面前的驅(qū)動(dòng)器不是(必然為)實(shí)際的物理驅(qū)動(dòng)器,它們實(shí)際上是虛擬驅(qū)動(dòng)器。它們對(duì)主機(jī)顯現(xiàn)為其附加的(有利的)特性(例如,大小、速度和可靠性)不同于物理驅(qū)動(dòng)器的那些特性的驅(qū)動(dòng)器,其中根據(jù)物理驅(qū)動(dòng)器的那些特性來(lái)創(chuàng)建該虛擬驅(qū)動(dòng)器。SteelVine元件的主要功能是遵循一套明確定義的規(guī)則以及某種(固定或動(dòng)態(tài)可變的)配置數(shù)據(jù),以該SteelVine元件的有效物理驅(qū)動(dòng)器集為基礎(chǔ)創(chuàng)建和保持虛擬驅(qū)動(dòng)器。
[0124]主機(jī)應(yīng)該無(wú)法(在理論上)檢測(cè)到呈現(xiàn)在它面前的虛擬驅(qū)動(dòng)器不是實(shí)際的物理驅(qū)動(dòng)器(利用所定義的附加特性)??沙鲇诟鞣N實(shí)際目的將此幻像撇開(kāi)一邊,然而出于所有的意圖和目的卻難以區(qū)分SteelVine SSoC所創(chuàng)建的虛擬驅(qū)動(dòng)器與物理驅(qū)動(dòng)器。同樣地,在極度退化的情況下,可以配置SteelVine元件以提供與標(biāo)準(zhǔn)的、啞元的SATA端口倍增器的功能相同的功能。
[0125]通過(guò)對(duì)主機(jī)生成的SATA命令流執(zhí)行轉(zhuǎn)換來(lái)創(chuàng)建虛擬驅(qū)動(dòng)器的抽象。在很大程度上可以通過(guò)簡(jiǎn)單的表格查詢操作來(lái)實(shí)現(xiàn)這些轉(zhuǎn)換,其中可以快速且輕易地把導(dǎo)向虛擬驅(qū)動(dòng)器的命令(即,虛擬命令)轉(zhuǎn)換成一個(gè)或多個(gè)物理驅(qū)動(dòng)器上的(可能多個(gè))命令(即,物理命令)。在一些情形中,可以通過(guò)替換命令中的值來(lái)輕易地進(jìn)行轉(zhuǎn)換(例如,目標(biāo)驅(qū)動(dòng)器和起始扇區(qū))。其他情況要求響應(yīng)于單個(gè)虛擬命令而生成多個(gè)物理命令,例如,跨越級(jí)聯(lián)的物理驅(qū)動(dòng)器,復(fù)制對(duì)鏡像集的寫(xiě)入等。在前一情況下,可使用簡(jiǎn)單的表格查詢功能來(lái)執(zhí)行從虛擬到物理命令的轉(zhuǎn)換。在后一種情況下,必須存在某種為了執(zhí)行所需的分岔/聯(lián)合類型操作和處理各種異常情況(例如,驅(qū)動(dòng)器故障、命令重試等)而執(zhí)行的附加邏輯。
[0126]可以利用端口倍增器規(guī)范所提供的尋址機(jī)制來(lái)完成對(duì)多個(gè)虛擬驅(qū)動(dòng)器的支持。在非常高層的視圖看來(lái),由主機(jī)發(fā)布的SATA命令包括數(shù)據(jù)包,該數(shù)據(jù)包定義了將要執(zhí)行的操作類型,加上執(zhí)行給定操作所需的自變量。雖然存在許多不同類型的命令,但是關(guān)鍵的感興趣的那些命令是對(duì)一系列磁盤(pán)存儲(chǔ)塊(還稱為扇區(qū))執(zhí)行讀取或?qū)懭氩僮鞯拿?。一般的讀取操作具有這樣的自變量:讀取起始?jí)K地址(通常稱為邏輯塊地址(LBA)的48比特值)和要讀取的塊的編號(hào)。主機(jī)向驅(qū)動(dòng)器發(fā)送該命令(從磁盤(pán)中的給定位置),并返回所需數(shù)據(jù)塊。同樣地,寫(xiě)入命令具有相同的地址和計(jì)數(shù)自變量,而且還包括要寫(xiě)入該磁盤(pán)(在給定的位置上)的數(shù)據(jù)塊。除此之外,SATA端口倍增器規(guī)范允許包含附加的自變量,即從最多達(dá)14個(gè)不同的物理驅(qū)動(dòng)器中選擇哪一個(gè)作為給定命令的目標(biāo)。為了創(chuàng)建虛擬驅(qū)動(dòng)器,SteelVine元件使用目標(biāo)驅(qū)動(dòng)器編號(hào)來(lái)選擇轉(zhuǎn)換信息,其中該轉(zhuǎn)換信息定義了給定的虛擬驅(qū)動(dòng)器,并以該信息為基礎(chǔ)生成一個(gè)或多個(gè)物理命令,其中這些物理命令包括適當(dāng)?shù)奈锢鞮BA和塊編號(hào)。該讀取/寫(xiě)入數(shù)據(jù)并不被修改為這些轉(zhuǎn)換中的一部分。在圖8中顯示了從虛擬到物理的命令轉(zhuǎn)換示例。目標(biāo)ID選擇使用哪一個(gè)表格,并且起始LBA和塊計(jì)數(shù)自變量定義將使用哪一個(gè)表格條目來(lái)虛擬化特定命令。
[0127]組合 SteelVine 7Π件
[0128]SteelVine架構(gòu)提供了“級(jí)聯(lián)” SteelVine設(shè)備以允許從單個(gè)主機(jī)端口存取大量物理設(shè)備的能力。
[0129]SATA II端口倍增器規(guī)范提供了 4比特的目標(biāo)尋址,這允許存取最多達(dá)15個(gè)物理磁盤(pán)驅(qū)動(dòng)器。該規(guī)范明確規(guī)定了不能級(jí)聯(lián)端口倍增器。該約束的基本原理是不存在用于將磁盤(pán)尋址延伸至低層處理器的機(jī)制。然而,可以利用SteelVine的虛擬化能力來(lái)克服該限制。例如,主機(jī)不能連接到簡(jiǎn)單的端口倍增器(根據(jù)SATA II規(guī)范實(shí)現(xiàn)),其中在端口倍增器上的每一個(gè)驅(qū)動(dòng)器端口都被連接到實(shí)現(xiàn)單個(gè)虛擬磁盤(pán)的SteelVine設(shè)備。在該SteelVine設(shè)備以下可以是幾個(gè)虛擬化后(例如,級(jí)聯(lián)、條帶化等)向端口倍增器提供單個(gè)虛擬驅(qū)動(dòng)器的物理驅(qū)動(dòng)器。這樣,克服了對(duì)端口倍增器規(guī)范的單層限制。
[0130]注意,反而是以上示例中處于低層的SteelVine設(shè)備可以連接到附加SteelVine設(shè)備,該SteelVine設(shè)備又虛擬化幾個(gè)更多的物理驅(qū)動(dòng)器,再次向以上設(shè)備呈現(xiàn)單個(gè)虛擬驅(qū)動(dòng)器。在某種意義上,上面的SteelVine設(shè)備創(chuàng)建了新的虛擬驅(qū)動(dòng)器,它包括其他由低層SteelVine設(shè)備提供的虛擬驅(qū)動(dòng)器。很明顯實(shí)際上對(duì)按照該方式來(lái)級(jí)聯(lián)的SteelVine設(shè)備的層數(shù)沒(méi)有限制。注意,對(duì)于無(wú)法與簡(jiǎn)單端口倍增器(即,非可察覺(jué)的端口倍增器)通信的主機(jī)而言,頂層設(shè)備相反可以是向相連主機(jī)提供單個(gè)虛擬驅(qū)動(dòng)器視圖的SteelVine設(shè)備,即,可以使用頂層簡(jiǎn)單端口倍增器,但這在該場(chǎng)景中并不如此要求。
[0131]由于SteelVine設(shè)備的每一層都按指數(shù)規(guī)律遞增可以存取的物理驅(qū)動(dòng)器的數(shù)量,因此實(shí)際上不可能限制能夠與主機(jī)相連的物理驅(qū)動(dòng)器的數(shù)量。然而,存在對(duì)可用的級(jí)聯(lián)深度的實(shí)際限制。例如,將預(yù)料每一層因附加的等待時(shí)間而稍微降低整體性能。
[0132]當(dāng)虛擬化一組物理驅(qū)動(dòng)器時(shí),所執(zhí)行轉(zhuǎn)換的本質(zhì)是利用發(fā)往虛擬驅(qū)動(dòng)器的命令中邏輯塊地址(LBA)的一部分來(lái)選擇數(shù)據(jù)開(kāi)始的低層或構(gòu)成的驅(qū)動(dòng)器(物理驅(qū)動(dòng)器或級(jí)聯(lián)的虛擬驅(qū)動(dòng)器),并用LBA的余下部分來(lái)選擇元件設(shè)備內(nèi)的地址。也就是說(shuō),虛擬化允許部分LBA提供附加的比特用于磁盤(pán)尋址。也就是說(shuō),級(jí)聯(lián)如何克服SATA II端口倍增器規(guī)范內(nèi)固有的4比特地址限制。
[0133]功能邏輯層
[0134]SteelVine架構(gòu)提供除了根據(jù)一組物理驅(qū)動(dòng)器創(chuàng)建虛擬驅(qū)動(dòng)器之外相當(dāng)多的功能。除了基本的SATA端口倍增器類功能和以上定義的簡(jiǎn)單虛擬化之外,提供了產(chǎn)生增強(qiáng)的虛擬驅(qū)動(dòng)器功能(例如,提高的速度和可靠度)所需的特征以及為了將驅(qū)動(dòng)器和主機(jī)的數(shù)量縮放成超過(guò)單個(gè)SSoC所提供的數(shù)量所需的那些特征。圖9示出規(guī)范的SteelVine SSoC,它的外部接口包括某數(shù)目的與(一個(gè)或多個(gè))主機(jī)相連的高速端口、幾個(gè)驅(qū)動(dòng)器和其他可能的這種SSoC(為了容許縮放到超過(guò)單個(gè)芯片所支持的主機(jī)和驅(qū)動(dòng)器數(shù)量)。
[0135]以下把SteelViine架構(gòu)中整組特性定義為一組在邏輯上獨(dú)立的層。圖9所示的功能邏輯層出現(xiàn)在提出了功能的用途分級(jí)結(jié)構(gòu)和抽象的各功能存在的相關(guān)層的組織當(dāng)中。(這些層未必是必須被實(shí)現(xiàn)為獨(dú)立的功能,此外,并非所有的這些特征都必須出現(xiàn)在特定產(chǎn)品當(dāng)中)。
[0136]以下的小節(jié)描述了規(guī)范SteelVine元件的不同邏輯功能。這些功能包括:支持SATA驅(qū)動(dòng)器所需的機(jī)制、允許存取大量遠(yuǎn)程驅(qū)動(dòng)器的特性(通過(guò)由SteelVine元件集合構(gòu)成的結(jié)構(gòu))、基本的從虛擬到物理轉(zhuǎn)換的邏輯(即,在物理驅(qū)動(dòng)器的區(qū)域之外創(chuàng)建虛擬驅(qū)動(dòng)器)、提供虛擬驅(qū)動(dòng)器特性的附加增強(qiáng)的機(jī)制(例如,速度或可靠性)、用于把虛擬驅(qū)動(dòng)器映射到特定目標(biāo)ID的機(jī)制(對(duì)于給定主機(jī))以及允許把SATA協(xié)議轉(zhuǎn)換成其他(可能是更高層的)協(xié)議的特性。
[0137]SATA 層
[0138]在某些實(shí)施例中,SteelVine SSoC的主要外部接口連接(S卩,主機(jī)和驅(qū)動(dòng)器端口)全都是SATA接口,為此SteelVine元件架構(gòu)中的第一邏輯層涉及支持SATA接口。除了由SATA I規(guī)范的SATA物理、鏈路和傳輸層定義的基本能力之外,該層還提供對(duì)在SATA II規(guī)范中定義的原生命令隊(duì)列(NCQ)和在SATA端口倍增器規(guī)范中定義的特性的支持。
[0139]在SteelVine元件上有兩種SATA接口,即目標(biāo)(即,主機(jī))端口和啟動(dòng)器(即,驅(qū)動(dòng)器)端口。如上所述,SteelVine架構(gòu)力求在對(duì)元件內(nèi)將包含的每一種鏈路的數(shù)量的選擇上獲得平衡。除此之外,在SteelVine SSoC內(nèi)的SATA端口之間不存在其它差異,每一種SATA端口將具有相同的功能,而且在特定類型的端口的各個(gè)實(shí)例之間不應(yīng)當(dāng)存在特殊化或差異。特別是,即使SATA端口倍增器規(guī)范要求特別處理物理驅(qū)動(dòng)器端口 0(為了支持遺留的啟動(dòng)操作),在SteelVine元件上的物理驅(qū)動(dòng)器端口之間也不應(yīng)該存在差異。這是必要的,因?yàn)?以下所述的)虛擬化和映射功能允許使用任何物理驅(qū)動(dòng)器來(lái)創(chuàng)建虛擬驅(qū)動(dòng)器O。
[0140]物理、鏈路和傳輸子層[0141]針對(duì)SteelVine元件而作出的硬件/軟件實(shí)現(xiàn)折衷受到優(yōu)良策略/機(jī)制分離原則的嚴(yán)重影響。這些方針提出了一種方法,其中由在某類處理器上運(yùn)行的軟件控制數(shù)據(jù)包,但數(shù)據(jù)本身通過(guò)專門(mén)的硬件流動(dòng)。該方法分離數(shù)據(jù)面(即,高性能、低層的數(shù)據(jù)移動(dòng)機(jī)制)與控制面(即,具有更長(zhǎng)時(shí)間常量的高層、面向控制邏輯,從而性能約束不那么嚴(yán)格)。在此所采用的硬件/軟件折衷方法提出應(yīng)當(dāng)在此提供硬件機(jī)制來(lái)實(shí)現(xiàn)SATA物理、鏈路和傳輸層的所有標(biāo)準(zhǔn)化特性。
[0142]這意味著硬件機(jī)制最大可能地實(shí)現(xiàn)在SATA規(guī)范中定義的邏輯(即,狀態(tài)機(jī))以允許主機(jī)和驅(qū)動(dòng)器端口以標(biāo)準(zhǔn)方式起作用。然而,應(yīng)當(dāng)存在“勾連”(hook)以允許將不同的策略應(yīng)用到這些機(jī)制。各個(gè)SATA端口應(yīng)當(dāng)有可能自動(dòng)生成對(duì)各種標(biāo)準(zhǔn)SATA事件(例如,初始化、空閑、電源管理、仲裁等)的響應(yīng),而同時(shí)由微碼定義的軟件策略邏輯以與給定策略一致的方式檢測(cè)、響應(yīng)并生成事件。例如,雖然硬件提供自動(dòng)檢測(cè)SATA數(shù)據(jù)包內(nèi)CRC差錯(cuò)(即,F(xiàn)IS)的機(jī)制是適當(dāng)?shù)模菍?duì)響應(yīng)于這一事件應(yīng)采取什么動(dòng)作(例如,立即發(fā)送差錯(cuò)元,記錄該事件并傳遞FIS等)的判定,應(yīng)當(dāng)歸該實(shí)現(xiàn)的策略部分負(fù)責(zé)。
[0143]這不意味著應(yīng)當(dāng)在這一低層抽象上設(shè)計(jì)機(jī)制,S卩,每當(dāng)事件發(fā)生時(shí),它們簡(jiǎn)單地生成一個(gè)信號(hào),并留待軟件來(lái)處理它。相反,適當(dāng)?shù)挠布?軟件折衷允許該軟件為公用策略情況選擇某些預(yù)定的(標(biāo)準(zhǔn))性能,并放入對(duì)非標(biāo)準(zhǔn)情況的軟件定義邏輯,即,何時(shí)要實(shí)現(xiàn)不符合在SATA規(guī)范中定義的性能的策略。良好的機(jī)制設(shè)計(jì)不會(huì)把策略選擇限制為僅僅是那些已經(jīng)先驗(yàn)的,而將允許在一組功能構(gòu)件之外構(gòu)造廣泛的不同性能。這一設(shè)計(jì)方法的目的是將此定義機(jī)制的抽象層提升到最高的可能的層,而無(wú)需占用策略判定,即,試圖包含硬件內(nèi)盡可能多的功能特性直至硬件將限制該機(jī)制使用范圍的點(diǎn)。
[0144]與這些設(shè)計(jì)原則相一致地,多路分解在硬件機(jī)制中將要處理的傳入FIS是完全適當(dāng)?shù)?,例如,分離導(dǎo)向虛擬驅(qū)動(dòng)器的FIS與發(fā)送到端口倍增器控制端口或存儲(chǔ)機(jī)架管理橋的那些FIS。同樣地,應(yīng)在硬件中處理低層鏈路功能是適當(dāng)?shù)?例如,自動(dòng)協(xié)商鏈路速度、空閑生成、鏈路仲裁、電源管理),而軟件具有超馳“標(biāo)準(zhǔn)”性能的能力,例如,允許強(qiáng)制鏈路速度達(dá)到給定速率,而不管自動(dòng)協(xié)商階段所產(chǎn)生的結(jié)果是什么。對(duì)硬件機(jī)制而言實(shí)現(xiàn)影子寄存器并支持驅(qū)動(dòng)器端口的邏輯也是適當(dāng)?shù)摹?br> [0145]SATA機(jī)制允許不同的策略應(yīng)用于何處的一個(gè)示例是如何處理鏈路層確認(rèn)。雖然SATA端口倍增器規(guī)范聲明鏈路層確認(rèn)必須由驅(qū)動(dòng)器進(jìn)行并通過(guò)PM透明地傳遞,但是可以通過(guò)主機(jī)數(shù)據(jù)包的投機(jī)性確認(rèn)來(lái)實(shí)現(xiàn)性能優(yōu)化(有良好的CRC)??梢栽谔囟ㄇ闆r下應(yīng)用該優(yōu)化,而且確定何時(shí)適于優(yōu)化和何時(shí)不應(yīng)進(jìn)行優(yōu)化歸策略邏輯負(fù)責(zé)。
[0146]另一個(gè)示例涉及應(yīng)用到主機(jī)與驅(qū)動(dòng)器之間數(shù)據(jù)包的排隊(duì)或緩沖的策略。假設(shè)主機(jī)鏈路可能能夠以高于驅(qū)動(dòng)器可支持的速度運(yùn)行,則如果在驅(qū)動(dòng)器和主機(jī)之間進(jìn)行直接連接的話,主機(jī)鏈路的利用率就會(huì)受到損失。主機(jī)鏈路會(huì)以1.5Gbps的有效速率取代它能夠進(jìn)行的3Gbps運(yùn)行。一種可選的將提高主機(jī)鏈路的利用率的方法(它在基于SteelVine的系統(tǒng)內(nèi)可能是關(guān)鍵的、性能受到限制的量度)將涉及對(duì)來(lái)自于驅(qū)動(dòng)器的FIS進(jìn)行緩沖,并將它們?nèi)侔l(fā)向主機(jī)。雖然該技術(shù)將在某些情況下(即,當(dāng)在同一主機(jī)鏈路之上存取一個(gè)以上驅(qū)動(dòng)器時(shí))增加主機(jī)鏈路的吞吐量,但這是以增加等待時(shí)間為代價(jià)來(lái)進(jìn)行的(當(dāng)存取僅單個(gè)的驅(qū)動(dòng)器時(shí)導(dǎo)致吞吐量受損)。因此,當(dāng)(或如果)應(yīng)進(jìn)行緩沖時(shí),它變成一種策略判定。底層硬件機(jī)制支持由策略模塊在給定的時(shí)間點(diǎn)進(jìn)行任何選擇。[0147]端口倍增器
[0148]SATA II端口倍增器(PM)規(guī)范定義了一種簡(jiǎn)單的尋址方案,它允許把一個(gè)以上的目標(biāo)設(shè)備連接到單個(gè)啟動(dòng)器的鏈路。這傾向于使多個(gè)驅(qū)動(dòng)器能連接到單個(gè)主機(jī)端口,而且合理地給出3Gbps的SATA II帶寬和當(dāng)前(卷)驅(qū)動(dòng)器的帶寬(它的讀取頭信道提供了顯著小于700Mbps的恒定帶寬)。
[0149]PM規(guī)范在FIS報(bào)頭中定義了四個(gè)針對(duì)地址的保留比特(稱為目標(biāo)ID),其中該保留比特用來(lái)按照一類標(biāo)準(zhǔn)的集線器或多路復(fù)用器來(lái)選擇特定驅(qū)動(dòng)器。利用該目標(biāo)ID字段來(lái)從多達(dá)16個(gè)不同的目標(biāo)中選擇一個(gè)目標(biāo)。把PM定義成包括單個(gè)主機(jī)端口和多達(dá)14個(gè)驅(qū)動(dòng)器端口——從O至N-1來(lái)對(duì)其進(jìn)行(連續(xù)地)編號(hào),其中N是由PM實(shí)例提供的端口總數(shù)。目標(biāo)IDO是特有的,即它用于實(shí)現(xiàn)遺留的兼容性。這意味著連接到端口 O的驅(qū)動(dòng)器將加快旋轉(zhuǎn),而且即使在主機(jī)控制器不為PM所察覺(jué)時(shí)(即,不知道FIS報(bào)頭中的目標(biāo)ID或無(wú)法選擇FIS報(bào)頭中的目標(biāo)ID)也是可啟動(dòng)的。將目標(biāo)ID15定義成用來(lái)與PM本身交談的端口。該端口提供了對(duì)一組(規(guī)范的和由供應(yīng)商定義的)可尋址并讀取/寫(xiě)入為32比特值的寄存器的存取。
[0150]可以在一旁再設(shè)置一個(gè)目標(biāo)ID以用作存儲(chǔ)機(jī)架管理橋(SEMB)功能的地址。該地址通常比PM所支持的最大數(shù)量物理驅(qū)動(dòng)器的地址大I ( S卩,目標(biāo)ID N+1)。該功能起橋的作用,從而在主機(jī)與連接到該P(yáng)M的存儲(chǔ)機(jī)架處理器(SEP)之間透明地轉(zhuǎn)發(fā)命令和響應(yīng)。
[0151]SATA主機(jī)控制器要么為PM所察覺(jué)(意味著它們可以生成并響應(yīng)于FIS報(bào)頭中的非零目標(biāo)ID字段),要么就不為PM所察覺(jué)(意味著它們?cè)贔IS目標(biāo)ID字段內(nèi)插入零,否則就略去該字段)。SATA主機(jī)控制器還可支持基于命令的交換或基于FIS的交換?;诿畹慕粨Q涉及每次僅向給定目標(biāo)設(shè)備發(fā)出單個(gè)命令。只有在命令已經(jīng)完成之后,主機(jī)才可以向另一目標(biāo)發(fā)出新命令。雖然該方法價(jià)格比較低廉(因?yàn)樗?jiǎn)單而需要更少的資源來(lái)實(shí)現(xiàn)),但是它限制了可以實(shí)現(xiàn)的并發(fā)量,因而限制了存儲(chǔ)子系統(tǒng)的性能。利用基于FIS的命令,主機(jī)可具有多個(gè)發(fā)向不同目標(biāo)的未完成命令,并處理這樣一個(gè)事實(shí),即響應(yīng)FIS可來(lái)自于所有未完成命令包含于其上的目標(biāo)。這可通過(guò)對(duì)每一個(gè)未完成命令保存分離的上下文并使響應(yīng)與適當(dāng)?shù)纳舷挛南嚓P(guān)聯(lián)(通過(guò)“標(biāo)記”機(jī)制)來(lái)實(shí)現(xiàn)。該方法以附加的硬件成本價(jià)格和主機(jī)控制器內(nèi)的復(fù)雜性來(lái)產(chǎn)生更高的系統(tǒng)性能。主機(jī)控制器是實(shí)現(xiàn)基于命令的交換還是基于FIS的交換對(duì)于PM兼容設(shè)備是相當(dāng)透明的。在以下關(guān)于NCQ的章節(jié)中進(jìn)一步描述了上下文和標(biāo)記的概念。
[0152]應(yīng)當(dāng)注意,SteelVine元件使用PM規(guī)范的尋址特性來(lái)選擇虛擬驅(qū)動(dòng)器。SteelVine還可使用(目標(biāo)ID15)供應(yīng)商定義的寄存器和SEMB功能。利用這些PM特性來(lái)保持與PM規(guī)范的文字相一致(如果不是精神上的),并提供對(duì)SteelVine SSoC的獨(dú)特特性的支持。
[0153]原牛命今隊(duì)列(NCQ)
[0154]SATA規(guī)范的對(duì)任一基于SATA的系統(tǒng)的性能具有顯著影響的另一特性稱為本機(jī)命令隊(duì)列(NCQ)。該特性在其他存儲(chǔ)接口(例如,SCSI)中發(fā)現(xiàn),并涉及允許每次在給定驅(qū)動(dòng)器上有多個(gè)未完成的命令。這意味著由驅(qū)動(dòng)器進(jìn)行的命令執(zhí)行無(wú)需嚴(yán)格同步;主機(jī)可以在之前發(fā)出的命令已經(jīng)完成之前向驅(qū)動(dòng)器發(fā)出附加的命令。NCQ暗示可以按照與在驅(qū)動(dòng)器上接收命令的順序不同的順序來(lái)執(zhí)行該命令。NCQ的益處是大量的,而且包括通過(guò)使命令發(fā)出與命令響應(yīng)交迭來(lái)提高的性能,從而允許隱藏等待時(shí)間(結(jié)果增加繁忙的存儲(chǔ)子系統(tǒng)的整體吞吐量)。另外,關(guān)于驅(qū)動(dòng)器如今一次可以存取一個(gè)以上命令的事實(shí)意味著它們可以以增加的該磁盤(pán)中有關(guān)所請(qǐng)求尋道操作的當(dāng)前旋轉(zhuǎn)位置的知識(shí)為基礎(chǔ),進(jìn)行更有效的磁頭調(diào)度。
[0155]當(dāng)請(qǐng)求在該線路的主機(jī)和目標(biāo)終端(以及它們之間的任何東西)上都創(chuàng)建多個(gè)“上下文”時(shí)支持NCQ是非常資源集中的。每個(gè)上下文都保存未完成事務(wù)的狀態(tài)(可包括未完成FIS的副本、DMA狀態(tài)、差錯(cuò)狀態(tài)等)。為此,主機(jī)控制器和支持SATA NCQ協(xié)議的驅(qū)動(dòng)器都不是廣泛可用的,而且當(dāng)NCQ變得可用時(shí),它將會(huì)(至少是一開(kāi)始)是可用的SATA HBA和驅(qū)動(dòng)器的子集內(nèi)的成本增加的特性。盡管如此,有可能使用該協(xié)議來(lái)提高基于SteelVine的存儲(chǔ)子系統(tǒng)所提供的性能。SteelVine設(shè)備允許主機(jī)在同一目標(biāo)設(shè)備上具有多個(gè)未完成的命令,即使物理驅(qū)動(dòng)器并不提供對(duì)NCQ協(xié)議的支持。這通過(guò)支持流水線操作來(lái)提高性能,它允許通過(guò)覆蓋命令發(fā)布和運(yùn)行來(lái)隱藏等待時(shí)間。
[0156]NCQ協(xié)議允許向每個(gè)目標(biāo)設(shè)備發(fā)布多達(dá)31個(gè)未完成的命令。端口倍增器允許每個(gè)HBA端口存在多達(dá)14個(gè)目標(biāo)。因此,SATA主機(jī)控制器有可能在每個(gè)主機(jī)端口上包括多達(dá)(14*31=)434個(gè)未完成的任務(wù)。這表示每個(gè)主機(jī)控制器包括(抑制性的)大量上下文。如果SteelVine SSoC要支持該最大數(shù)量的未完成命令,它同樣必須要支持非常大量的上下文。幸運(yùn)的是,模擬已經(jīng)顯示響應(yīng)于在每個(gè)目標(biāo)上支持4個(gè)以上的未完成任務(wù)存在收益遞減,而且NCQ協(xié)議允許進(jìn)程中的未完成命令少于該最大數(shù)量的未完成命令。
[0157]SteelVine SSoC可經(jīng)它們輸出的每個(gè)虛擬驅(qū)動(dòng)器提供某固定數(shù)量的未完成命令,而且該數(shù)量可以顯著小于該最大指定極限434。實(shí)際上,SSoC可經(jīng)虛擬驅(qū)動(dòng)器支持?jǐn)?shù)量動(dòng)態(tài)可變的多個(gè)未完成命令。這可以通過(guò)以下操作進(jìn)行:在每一個(gè)排隊(duì)命令到達(dá)SSoC時(shí)從公共池中分配上下文,向主機(jī)返回帶有清空忙碌位(BSY)的FIS直至不存在空閑的上下文。此時(shí),SteelVine元件可以僅僅是等待,直至在為等待中的虛擬驅(qū)動(dòng)器清空BSY比特之前上下文變?yōu)榭臻e的為止。由于獨(dú)立的ATA寄存器組存在于每一個(gè)目標(biāo)ID(因而,每一個(gè)虛擬驅(qū)動(dòng)器)的HBA上,所以該活動(dòng)具有獨(dú)立地對(duì)每一個(gè)虛擬驅(qū)動(dòng)器進(jìn)行命令發(fā)布速率的“流控制”效果。
[0158]應(yīng)當(dāng)注意,NCQ協(xié)議獨(dú)立于對(duì)PM的支持(盡管在SteelVine架構(gòu)中支持所有的特性),而且NCQ可與為PM所察覺(jué)或不為PM所察覺(jué)的主機(jī)控制器一起使用。
[0159]虛擬化層
[0160]虛擬化層負(fù)責(zé)在一個(gè)或多個(gè)(本地或遠(yuǎn)程的)物理驅(qū)動(dòng)器之外創(chuàng)建虛擬驅(qū)動(dòng)器。虛擬化可以僅包括把虛擬驅(qū)動(dòng)器定義為物理驅(qū)動(dòng)器上塊的(可能是適當(dāng)?shù)?子集。在此情況下,所需的全部是把LBA從虛擬驅(qū)動(dòng)器的地址空間轉(zhuǎn)換成物理驅(qū)動(dòng)器上的適當(dāng)?shù)刂贰L摂M化還允許創(chuàng)建由多個(gè)物理驅(qū)動(dòng)器中相鄰構(gòu)件組成的虛擬驅(qū)動(dòng)器。在此情況下,給定的虛擬命令可定義影響多個(gè)物理驅(qū)動(dòng)器(即,跨越兩個(gè)物理驅(qū)動(dòng)器之間邊界的讀/寫(xiě)操作)的操作,因此,必須生成多個(gè)物理命令。該虛擬化層負(fù)責(zé)把虛擬命令分成特定數(shù)量的物理命令(各自包含適當(dāng)字段值),并將來(lái)自這些物理命令的結(jié)果組合成組合虛擬響應(yīng)。
[0161]在某些實(shí)施例中,利用查詢表(LUT)與一組狀態(tài)機(jī)的組合來(lái)實(shí)現(xiàn)虛擬化層。在這一實(shí)現(xiàn)過(guò)程中,LUT負(fù)責(zé)把虛擬命令的起始LBA和塊計(jì)數(shù)字段轉(zhuǎn)換成它們的物理值,并有可能生成多個(gè)物理命令的字段。狀態(tài)機(jī)負(fù)責(zé)把多個(gè)物理命令分叉/聯(lián)合成單個(gè)虛擬響應(yīng),并處理可能從這些操作中產(chǎn)生的所有異常條件。就像多個(gè)物理響應(yīng)被組合成響應(yīng)于虛擬命令返回到主機(jī)的虛擬響應(yīng)一樣,由于發(fā)布多個(gè)物理命令引起的異常在遞送到主機(jī)之前被組合成虛擬的異常(而且有可能是受抑制的)。
[0162]讀/寫(xiě)虛擬命令的起始LBA和塊計(jì)數(shù)字段被分解成一個(gè)或多個(gè)部分,然后被轉(zhuǎn)換以將其映射到給定物理驅(qū)動(dòng)器的適當(dāng)部分。然而,不管因該虛擬化動(dòng)作所產(chǎn)生的物理命令的數(shù)量有多少,總是保持一不變——即所有物理命令的塊計(jì)數(shù)字段之和等于虛擬命令的塊計(jì)數(shù)字段之和。虛擬化層轉(zhuǎn)換地址,并且有時(shí)發(fā)布它們作為多個(gè)子參考,但精確地產(chǎn)生了與主機(jī)請(qǐng)求的讀/寫(xiě)數(shù)據(jù)一樣多的讀/寫(xiě)數(shù)據(jù)。
[0163]虛擬化層所操作的基本單元是連續(xù)范圍的磁盤(pán)塊,在此稱為區(qū)域。可由該層組合一個(gè)或多個(gè)物理驅(qū)動(dòng)器區(qū)域來(lái)創(chuàng)建虛擬驅(qū)動(dòng)器。在該文件中,來(lái)自多個(gè)驅(qū)動(dòng)器的區(qū)域的組合稱為級(jí)聯(lián)或RAID-US卩,獨(dú)立/廉價(jià)的磁盤(pán)陣列的特性,與條帶化(RAIDO)相比它甚至更少與冗余相關(guān))。在以下小節(jié)中描述了區(qū)域的概念和它們?cè)诩?jí)聯(lián)中的使用。
[0164]物理磁盤(pán)區(qū)域
[0165]在該文件中,區(qū)域被定義成單個(gè)物理驅(qū)動(dòng)器中連續(xù)范圍的塊(范圍從I到全部)。有可能定義重疊區(qū)域,而且可以把單個(gè)區(qū)域定義成包括整個(gè)驅(qū)動(dòng)器,但一個(gè)區(qū)域無(wú)法跨越多個(gè)物理驅(qū)動(dòng)器。
[0166]在圖10中,根據(jù)由單個(gè)物理驅(qū)動(dòng)器的一小部分組成的單個(gè)區(qū)域來(lái)創(chuàng)建虛擬驅(qū)動(dòng)器(Vi)。所示的物理驅(qū)動(dòng)器(Pj)包括塊地址空間,其范圍從0(該驅(qū)動(dòng)器上的第一個(gè)塊)到Mj(該驅(qū)動(dòng)器上最后一個(gè)塊的LBA)。該示例中使用的注釋把區(qū)域(Rtl)表示為多元組(P」,Stl, Ctl),它包括該物理驅(qū)動(dòng)器的標(biāo)識(shí)符,其中在該物理驅(qū)動(dòng)器上定義區(qū)域(Pj)和該區(qū)域的起始?jí)K地址(Stl)和塊計(jì)數(shù)((U。該給定物理驅(qū)動(dòng)器中定義的區(qū)域可向主機(jī)呈現(xiàn)為虛擬驅(qū)動(dòng)器V”由表示該區(qū)域的多元組來(lái)定義這一虛擬驅(qū)動(dòng)器,該多元組以(凡)、它的起始LBA(O)和它的最大LBA(Mi,在此情況下等于(Ctl-1))為基礎(chǔ)。
[0167]在所示的示例中,把在該區(qū)域上發(fā)布的讀/寫(xiě)存取命令表示為另一個(gè)三元組,它定義了受到給定虛擬命令影響的區(qū)域Ri的子集。該三元組根據(jù)其起始LBA(Sv)和塊計(jì)數(shù)(Cv)來(lái)描述虛擬命令。該示例還顯示由虛擬化產(chǎn)生的物理命令,它由包括該事務(wù)的起始(物理)地址(Sfsv)和塊計(jì)數(shù)(Cv)的三元組組成。注意,在此簡(jiǎn)單的情況下,命令類型保留了相同的內(nèi)容,而且該塊計(jì)數(shù)字段并未變?yōu)樘摂M化處理的一部分。
[0168]這示出了虛擬化層的最基本的目的一即,為了把虛擬驅(qū)動(dòng)器的塊地址空間轉(zhuǎn)換到區(qū)域的塊地址空間之上。由于這兩個(gè)地址空間之間存在簡(jiǎn)單的線性關(guān)系,因此可輕易地以類LUT實(shí)現(xiàn)進(jìn)行轉(zhuǎn)換,而無(wú)需附加的邏輯。該虛擬化層的應(yīng)用示例包括:在單個(gè)較大的物理驅(qū)動(dòng)器之外創(chuàng)建多個(gè)較小的虛擬驅(qū)動(dòng)器;在多個(gè)較小的物理驅(qū)動(dòng)器之外創(chuàng)建單個(gè)較大的虛擬驅(qū)動(dòng)器;以及在多個(gè)物理驅(qū)動(dòng)器的快速區(qū)域之外創(chuàng)建較大的、比均值更快的虛擬驅(qū)動(dòng)器。
[0169]級(jí)聯(lián)(RAID-1)
[0170]虛擬化層的區(qū)域抽象的擴(kuò)展即是主張級(jí)聯(lián)——即,創(chuàng)建由一個(gè)以上區(qū)域的線性組合構(gòu)成的虛擬驅(qū)動(dòng)器。該特性可用于在一組兩個(gè)或更多較小區(qū)域(來(lái)自于不同或相同的驅(qū)動(dòng)器)之外創(chuàng)建單個(gè)較大的虛擬驅(qū)動(dòng)器。該特性最簡(jiǎn)單的用法是利用該組中全部物理驅(qū)動(dòng)器的組合能力來(lái)把多個(gè)完整的物理驅(qū)動(dòng)器組合成單個(gè)虛擬驅(qū)動(dòng)器。
[0171]圖11提供把兩個(gè)來(lái)自不同物理驅(qū)動(dòng)器的區(qū)域級(jí)聯(lián)成單個(gè)虛擬驅(qū)動(dòng)器的示例。在該示例中,可由包含區(qū)域列表的三元組(Ly(^Mi)來(lái)表示虛擬驅(qū)動(dòng)器(Vi),該區(qū)域列表包括Vi (按照它們出現(xiàn)在虛擬地址空間中的順序)、起始?jí)K地址(O)和最大有效塊地址(Mi,它等于組合區(qū)域大小之和減1,即(Ci(l+Cn-1))。
[0172]不存在對(duì)區(qū)域選擇的限制,這些區(qū)域可參與創(chuàng)建級(jí)聯(lián)的虛擬驅(qū)動(dòng)器(除了那些應(yīng)用到區(qū)域本身的,例如,非重疊的連續(xù)塊組等)。
[0173]增強(qiáng)層
[0174]虛擬化層涉及創(chuàng)建僅是在大小上有所不同的虛擬驅(qū)動(dòng)器,否則虛擬驅(qū)動(dòng)器就與物理驅(qū)動(dòng)器共享所有相同的特性,其中根據(jù)這些特性構(gòu)建虛擬驅(qū)動(dòng)器。根據(jù)虛擬化層所提供的基本功能構(gòu)建后,增強(qiáng)層以(有可能是級(jí)聯(lián)的)區(qū)域集合開(kāi)始并對(duì)其應(yīng)用小附加功能集,以便于創(chuàng)建具有優(yōu)于其組成物理驅(qū)動(dòng)器的增強(qiáng)特性的虛擬驅(qū)動(dòng)器。
[0175]增強(qiáng)層按照增強(qiáng)底層物理驅(qū)動(dòng)器的性能和可靠性的各種方式來(lái)組合多個(gè)區(qū)域。雖然這些特性在很多方面與系統(tǒng)內(nèi)發(fā)現(xiàn)的提供各種不同RAID功能的特性相似,但是增強(qiáng)層在幾個(gè)重要方面有所不同。把該層的特性定義成能夠輕易且低廉地集成到單個(gè)低成本SSoC中,而且仍然能夠以“線速”(即,按照與HBA與驅(qū)動(dòng)器之間直接連接的性能級(jí)別相等的性能級(jí)別)進(jìn)行操作的功能。這意味著由這部分SteelVine架構(gòu)提供的機(jī)制往往實(shí)現(xiàn)起來(lái)很容易和廉價(jià),而且使用了簡(jiǎn)單的強(qiáng)制技術(shù)。例如,用簡(jiǎn)單的鏡像(RAIDl)來(lái)代替奇偶RAID (例如,RAID5)以允許簡(jiǎn)單的低成本實(shí)現(xiàn),而無(wú)需相當(dāng)多數(shù)量的處理功率和存儲(chǔ)器。 [0176]增強(qiáng)層的關(guān)鍵技術(shù)包括條帶化(RAIDO)、鏡像(RAIDl)以及它們的組合(例如,RAIDlO和RAID01)。這些特性被加于虛擬化層所定義的那些特性之上,在以下小節(jié)中將對(duì)其進(jìn)行更詳細(xì)的描述。
[0177]備帶化(RAIDO)
[0178]如果存取模式是隨機(jī)的(例如,在某種服務(wù)器或多用戶系統(tǒng)上),則獲得多個(gè)報(bào)頭并發(fā)移動(dòng)的益處,條帶應(yīng)當(dāng)足夠大,從而單獨(dú)的讀/寫(xiě)事務(wù)并不經(jīng)??缭綏l帶邊界,而是不會(huì)太大以致于無(wú)法獲得具有并發(fā)尋道的統(tǒng)計(jì)益處。如果存在任何類型的位置,或存在多個(gè)較大的連續(xù)讀取操作,就不會(huì)產(chǎn)生所要求的性能,但是使用對(duì)多用戶系統(tǒng)上文件系統(tǒng)的特有類隨機(jī)存取,這變得非常好使。條帶化的目的是使報(bào)頭加倍且更多的吞吐量——粗粒并行性。
[0179]鏡像(RAIDl)
[0180]該架構(gòu)允許多個(gè)鏡像的驅(qū)動(dòng)器,然而Polaris和Milkyway包括兩路和四路鏡像約束。如果任何物理命令失敗(將使驅(qū)動(dòng)器不相容),該架構(gòu)就復(fù)制寫(xiě)入操作并使虛擬命令失敗。該架構(gòu)還處理故障異常,并交替進(jìn)行讀取操作以共享加載/耗損。該架構(gòu)使用起始LBA(中間字比特)作為選擇器,而且在其一開(kāi)始讀取設(shè)備時(shí)并不切換。該架構(gòu)還跟蹤驅(qū)動(dòng)器序列號(hào)以判斷是否換出驅(qū)動(dòng)器(其中鏡像集將會(huì)是不相容的)。
[0181]在某些實(shí)施例中,所有的寫(xiě)入操作都送往該鏡像集的所有成員。讀取操作來(lái)自該集內(nèi)的僅一個(gè)驅(qū)動(dòng)器,但通常從同一驅(qū)動(dòng)器中讀取出扇區(qū)。該架構(gòu)利用簡(jiǎn)單的確定性方案來(lái)在該集中選擇從哪一個(gè)驅(qū)動(dòng)器讀出。為了確保優(yōu)良的連續(xù)讀取性能(> 100MB)而將大塊置于較大的邊界上,并允許尋道重疊以提高關(guān)于隨機(jī)讀取操作的性能。
[0182]無(wú)論何時(shí)確定鏡像集不相容都必須進(jìn)行重建操作。在非易失性存儲(chǔ)器上標(biāo)記該重建,從而該架構(gòu)將繼續(xù)嘗試重建直至鏡像都同步為止。當(dāng)嘗試同步磁盤(pán)時(shí),該架構(gòu)跟蹤“指針”在哪里,即,該分界線在復(fù)制的與未復(fù)制的驅(qū)動(dòng)器區(qū)域之間的何處。復(fù)制對(duì)指針后面的塊的寫(xiě)入操作(即,寫(xiě)入與其同步的區(qū)域內(nèi)),同時(shí)僅對(duì)同步的驅(qū)動(dòng)器進(jìn)行在指針之前的寫(xiě)入操作。
[0183]在某些實(shí)施例中,該架構(gòu)保持非易失性存儲(chǔ)內(nèi)的指針,從而如果電源斷開(kāi),就可以在電源恢復(fù)時(shí)在其斷開(kāi)的位置獲得重建。在每次遞增指針就對(duì)非易失性存儲(chǔ)器進(jìn)行寫(xiě)入操作過(guò)于昂貴時(shí)(即,寫(xiě)入塊),該架構(gòu)僅在規(guī)則的檢查點(diǎn)更新非易失性存儲(chǔ)器,這減少了在重啟時(shí)執(zhí)行的重復(fù)工作量。
[0184]SteelVine實(shí)現(xiàn)使用公平共享的調(diào)度程序來(lái)實(shí)現(xiàn)重建功能。這允許重建活動(dòng)消耗除了主機(jī)所使用資源之外的全部有效資源,并在主機(jī)希望消耗全部資源時(shí),為重建所使用的資源量提供下限。這意味著如果主機(jī)不施加負(fù)載,則重建活動(dòng)將獲得全部資源,而且該重建將在最短的時(shí)間量?jī)?nèi)完成。如果主機(jī)施加百分之一負(fù)載,則重建活動(dòng)將獲得受保障的最少量資源(例如,百分之二十),以使該重建將在有限的時(shí)間周期內(nèi)完成。這意味著當(dāng)主機(jī)試圖把重建活動(dòng)壓榨至小于最低量時(shí),主機(jī)獲得截止該點(diǎn)它想要的全部周期,然后將主機(jī)固定在該層。
[0185]映射層
[0186]SteelVine架構(gòu)中的下一層稱為映射層。它在主機(jī)FIS內(nèi)目標(biāo)ID字段與前面的層定義的虛擬驅(qū)動(dòng)器之間提供了一種簡(jiǎn)單水平的間接尋址。該映射提供了對(duì)基于LUT的實(shí)現(xiàn)的操作,其中以傳入FIS目標(biāo)ID字段內(nèi)的值為基礎(chǔ)來(lái)執(zhí)行對(duì)映射表內(nèi)的哪一個(gè)“頁(yè)面”的選擇。
[0187]此功能略微變得更有趣的就是在把物理驅(qū)動(dòng)器“標(biāo)識(shí)映射”到虛擬驅(qū)動(dòng)器時(shí)。這意味著虛擬化層把虛擬驅(qū)動(dòng)器定義成由完整的物理驅(qū)動(dòng)器構(gòu)成的區(qū)域,而且對(duì)該虛擬驅(qū)動(dòng)器不進(jìn)行增強(qiáng)。以這種操作模式,SteelVine SSoC動(dòng)作相當(dāng)像端口倍增器,且僅僅是把針對(duì)給定目標(biāo)ID(S卩,虛擬驅(qū)動(dòng)器)的所有命令直接傳送到期望的物理驅(qū)動(dòng)器。然而,映射層允許重新映射物理驅(qū)動(dòng)器端口,即,目標(biāo)IDO不必映射到物理驅(qū)動(dòng)器端口 0,而可以映射到任一個(gè)物理驅(qū)動(dòng)器端口。該特性提供了優(yōu)于簡(jiǎn)單端口倍增器所提供靈活度的提高的靈活度,而且可用于重新分配物理端口(例如,出于布局或封裝便利性的原因)。
[0188]除此之外,映射層允許創(chuàng)建多個(gè)“視圖”,即取決于使用哪一個(gè)目標(biāo)ID可按照各種不同的方式來(lái)存取給定的物理驅(qū)動(dòng)器。例如,可以級(jí)聯(lián)一個(gè)構(gòu)建塊中的四個(gè)驅(qū)動(dòng)器,并向主機(jī)呈現(xiàn)為虛擬驅(qū)動(dòng)器編號(hào)O。同時(shí),SteelVine SSoC可被配置成允許利用從I到4的目標(biāo)ID編號(hào)來(lái)對(duì)作為單個(gè)(標(biāo)識(shí)映射的)驅(qū)動(dòng)器的要存取的驅(qū)動(dòng)器作出相同的許可。這可用來(lái)允許對(duì)虛擬驅(qū)動(dòng)器中各個(gè)組成驅(qū)動(dòng)器的管理性存取,例如,用以支持修復(fù)或監(jiān)視動(dòng)作。
[0189]轉(zhuǎn)換層
[0190]雖然SteelVine架構(gòu)以SATA存儲(chǔ)鏈路協(xié)議為基礎(chǔ),但是存在有大量其他抽象的高層存儲(chǔ)協(xié)議(例如SCS1、iSCS1、CIFS、NFS等)。SteelVine架構(gòu)中的頂層稱為轉(zhuǎn)換層,而且它是在此可以把主機(jī)存取協(xié)議從本地SATA協(xié)議轉(zhuǎn)換成實(shí)質(zhì)上任何所需主機(jī)接口協(xié)議的點(diǎn)。此外,這是其中可以把SteelVine架構(gòu)提供的基本面向塊業(yè)務(wù)轉(zhuǎn)換成文件級(jí)別業(yè)務(wù)的地方。
[0191]標(biāo)準(zhǔn)的SATA特征
[0192]SteelVine架構(gòu)SSoC已被定義成順應(yīng)各種SATA規(guī)范。然而,已經(jīng)以使用規(guī)范特性的方式(同時(shí)仍然保留在該規(guī)范所設(shè)定的邊界內(nèi))采取重要的特權(quán)。例如,ATA規(guī)范提供了一種適當(dāng)靈活的機(jī)制來(lái)聲明和啟用由設(shè)備提供的功能和特性,而且SteelVine元件采用了該規(guī)范的這方面。ATA規(guī)范定義了一種數(shù)據(jù)結(jié)構(gòu)(即,IDENT)和協(xié)議(利用標(biāo)識(shí)命令),它們?cè)试S設(shè)備聲明它所支持的(預(yù)定義的)特性。此外,SATA允許主機(jī)在設(shè)備所提供的那些特性(例如,DMA模式、在多塊操作中要轉(zhuǎn)換的塊的編號(hào)等)當(dāng)中選擇(或啟用)特定的特性。SteelVine元件為它所提供的每一個(gè)虛擬驅(qū)動(dòng)器合成適當(dāng)?shù)腎DENT數(shù)據(jù)結(jié)構(gòu),并指示該元件支持的特定特性。
[0193]SATA被定義成與PATA設(shè)備撰寫(xiě)的軟件(包括設(shè)備驅(qū)動(dòng)器、OS和應(yīng)用程序代碼)向后兼容。主機(jī)軟件與PATA和SATA硬件之間的主要接口是一組稱為T(mén)askfile (任務(wù)文件)的寄存器。ATA寄存器集(或Taskfile)原先由8個(gè)單字節(jié)寄存器組成,其定義為:數(shù)據(jù)、誤差/特性、扇區(qū)計(jì)數(shù)、扇區(qū)編號(hào)、柱面低、柱面高、設(shè)備頭和狀態(tài)/命令寄存器。
[0194]開(kāi)始時(shí)通過(guò)設(shè)備的物理屬性對(duì)設(shè)備尋址,S卩,柱面、頭和扇區(qū)。然而,隨著時(shí)間的流逝,用一種稱為邏輯塊地址(LBA)的擴(kuò)展和簡(jiǎn)化的線性尋址方式來(lái)代替該尋址方式(稱為C / H / S)。為了保持向后兼容性,該初始寄存器集定義用于新的尋址方式(即,扇區(qū)編號(hào)寄存器用于LBA[7:0],柱面低用于LBA[15:8],柱面高用于LBA[23:16]和部分設(shè)備頭驅(qū)動(dòng)器用于LBA[27:24])。這供28比特塊尋址方案使用,它(在使用典型的512字節(jié)塊大小時(shí))產(chǎn)生128GB的最大可尋址范圍——該大小很快被有效的驅(qū)動(dòng)器大小超越。響應(yīng)于此,ATA標(biāo)準(zhǔn)創(chuàng)建“擴(kuò)展的寄存器”。可以向每一個(gè)LBA和扇區(qū)計(jì)數(shù)寄存器按順序?qū)懭雰勺止?jié),從而按照與遺留軟件向后兼容的方式將它們擴(kuò)展成16比特值,其中該遺留軟件僅處理8比特寄存器。該擴(kuò)展容許48比特的LBA空間,它產(chǎn)生128PB的最大可尋址驅(qū)動(dòng)器大小——即應(yīng)該是持續(xù)至少幾年的大小,禁止在基本存儲(chǔ)技術(shù)中任何類型的突破。
[0195]HBA與設(shè)備之間的ATA事務(wù)包括并不涉及數(shù)據(jù)傳輸?shù)拿?S卩,非數(shù)據(jù)命令)和數(shù)據(jù)傳輸命令。對(duì)于涉及數(shù)據(jù)移動(dòng)的命令而言,該ATA規(guī)范定義了多個(gè)不同的數(shù)據(jù)傳輸模式,每一個(gè)都相繼地提供更高級(jí)的性能。這兩種主要的數(shù)據(jù)傳輸模式稱為編程I / O(PIO)和直接存儲(chǔ)器存取(DAM)。ATA寄存器集還包括其中稱為控制塊的一對(duì)寄存器(除了前述統(tǒng)稱為命令塊的8個(gè)寄存器)。該控制塊寄存器包括可選的狀態(tài)/設(shè)備控制寄存器和驅(qū)動(dòng)器地址寄存器。
[0196]SATA 規(guī)范
[0197]SATA I規(guī)范定義第一代SATA,它包括1.5Gbps SATA PHY、鏈路、傳輸和協(xié)議的全部基本特性。SATA II規(guī)范提供對(duì)SATA I規(guī)范的增強(qiáng),它在該規(guī)范的所有層上提供附加的特性和能力。在PHY層,新的規(guī)范提供對(duì)底板互連和異步信號(hào)恢復(fù)的準(zhǔn)則,以及為定義更高速的鏈路速度(即,3Gbps)和自動(dòng)協(xié)商過(guò)程所必需的信息,該自動(dòng)協(xié)商過(guò)程使主機(jī)與設(shè)備能達(dá)到最高通用鏈路速度設(shè)置。
[0198]在協(xié)議層上,為支持新的命令排隊(duì)特性而對(duì)設(shè)備命令協(xié)議作出改變。原生命令隊(duì)列(NCQ)是該新協(xié)議的名稱,它容許在給定設(shè)備上發(fā)布多個(gè)未完成的命令,并允許以不同于發(fā)布順序的順序來(lái)返回這些命令。NCQ支持通過(guò)聚集中斷而不是對(duì)每個(gè)命令進(jìn)行中斷來(lái)提高系統(tǒng)性能,這在大量命令運(yùn)行時(shí)會(huì)變得昂貴。而且,在主機(jī)控制器內(nèi)的多個(gè)上下文允許在驅(qū)動(dòng)器需要的任何時(shí)候就返回空轉(zhuǎn)狀態(tài),這還提高了性能。
[0199]對(duì)SATA II的另一個(gè)補(bǔ)充提供稱為端口倍增器(PM)能力的特性。該特性允許將單個(gè)SATA主機(jī)端口連接到多達(dá)15個(gè)驅(qū)動(dòng)器。該規(guī)范允許創(chuàng)建簡(jiǎn)單的、單層的類似集線器的設(shè)備,它以對(duì)主機(jī)和設(shè)備透明的方式將單個(gè)主機(jī)端口扇出到多個(gè)驅(qū)動(dòng)器端口。該規(guī)范明確地禁止級(jí)聯(lián)PM設(shè)備。
[0200]PM規(guī)范利用FIS報(bào)頭中4個(gè)未使用的比特來(lái)提供對(duì)目標(biāo)驅(qū)動(dòng)器端口的尋址。這些比特形成稱為目標(biāo)端口字段的字段,其中多路復(fù)用設(shè)備使用該字段來(lái)選擇要使用的目的地(驅(qū)動(dòng)器)端口。在正常操作中,HBA對(duì)它發(fā)送到PM的每一個(gè)FIS報(bào)頭添加一地址。一旦接收來(lái)自該主機(jī)的FIS,PM設(shè)備就檢查FIS報(bào)頭內(nèi)的地址字段,清空目標(biāo)端口字段,并向選定的目標(biāo)端口發(fā)送該FIS。同樣地,修改來(lái)自驅(qū)動(dòng)器端口的FIS以在該FIS的報(bào)頭中包括它們的傳入端口地址,更新該FIS的CRC以反映報(bào)頭內(nèi)的變化,并向主機(jī)端口轉(zhuǎn)發(fā)該FIS。如果傳入的FIS的CRC驗(yàn)證失敗,PM設(shè)備就必須廣播劣質(zhì)的CRC,而且不往該FIS內(nèi)寫(xiě)入優(yōu)質(zhì)的(重新生成的)CRC來(lái)對(duì)其進(jìn)行掩碼。
[0201]基于Polaris的存儲(chǔ)子系統(tǒng).[0202]作為要實(shí)現(xiàn)的SteelVine系列SSoC中的第一個(gè),Polaris提供該架構(gòu)中定義功能的子集。Milkyway是對(duì)完整的SteelVine架構(gòu)的第一次全面實(shí)現(xiàn)。Polaris被固定為單個(gè)主機(jī)、5個(gè)驅(qū)動(dòng)器的獨(dú)立產(chǎn)品,而Milkyway允許用多個(gè)主機(jī)端口和大量驅(qū)動(dòng)器端口來(lái)構(gòu)建子系統(tǒng)。可以利用基于Polaris的硬件來(lái)構(gòu)建廣泛的感興趣的存儲(chǔ)子系統(tǒng)。以下小節(jié)研究利用(增強(qiáng)的)Polaris的端口倍增器功能及其相關(guān)聯(lián)微碼參與存儲(chǔ)陣列控制器的創(chuàng)建的硬件和軟件。
[0203]Polaris SSoC的主要外部接口由一個(gè)SATA II主機(jī)端口和5個(gè)SATA II驅(qū)動(dòng)器端口組成。另外,Polaris SSoC具有各種輔助I / O接口,包括:LED驅(qū)動(dòng)器、I2C總線和幾個(gè)GPIO線路。這些外部接口必需且足以支持基本的5個(gè)驅(qū)動(dòng)器到I個(gè)主機(jī)的SATA多路復(fù)用器功能以及所有對(duì)Polaris定義的“增強(qiáng)”功能。
[0204]在內(nèi)部,該硬件由嵌入式處理器、數(shù)據(jù)移動(dòng)引擎、各個(gè)SATA端口的資源(B卩,PHY、鏈路和傳輸邏輯,以及一組充當(dāng)該鏈路的FIFO緩沖器的寄存器)和各種支持功能的邏輯。每個(gè)端口 FIFO中的每 一個(gè)一端連接到鏈路,而另一端連接到公共內(nèi)部總線。該數(shù)據(jù)移動(dòng)功能單元可被引導(dǎo)成在所定義的FIFO緩沖器集之間移動(dòng)數(shù)據(jù)。它允許進(jìn)行驅(qū)動(dòng)器到主機(jī)和主機(jī)到驅(qū)動(dòng)器的傳輸加上驅(qū)動(dòng)器向驅(qū)動(dòng)器的傳輸。
[0205]該嵌入式處理器通過(guò)加載和存儲(chǔ)來(lái)存取該內(nèi)部資源(例如,每個(gè)端口邏輯、FIFO、數(shù)據(jù)移動(dòng)器和其他VO接口邏輯),其中通過(guò)該嵌入式處理器的特定控制寄存器地址空間(包括在系統(tǒng)控制處理器(SCP)寄存器空間內(nèi)定義的16個(gè)寄存器的16個(gè)庫(kù))來(lái)進(jìn)行該加載和存儲(chǔ)。這些寄存器的一部分(例如,那些控制SATA PHY、EEPROM寫(xiě)入操作、軟件復(fù)位等的寄存器)被保護(hù)以防止意外存取。
[0206]Polaris SSoC利用外部的連接I2C的EEPROM來(lái)包含微碼、配置狀態(tài)和策略相關(guān)狀態(tài)。在通電時(shí),微碼被自動(dòng)讀入微微(Pico)指令存儲(chǔ)內(nèi),并利用簡(jiǎn)單硬件校驗(yàn)和機(jī)制來(lái)驗(yàn)證。
[0207]該P(yáng)olaris硬件包括對(duì)微微(Pico)處理器進(jìn)行重置的軟件重置寄存器,但它并不強(qiáng)迫重載微碼。當(dāng)主機(jī)端口上出現(xiàn)C0M-RESET頻帶外信號(hào)時(shí),生成不可掩碼的中斷(NMI),它導(dǎo)致硬重置(強(qiáng)迫重載微碼)。微碼加載和驗(yàn)證被設(shè)計(jì)成在少于I秒的實(shí)際時(shí)間內(nèi)完成。
[0208]系統(tǒng)控制處理器(SCP)[0209]在Polaris的設(shè)計(jì)中,嘗試在硬件中實(shí)現(xiàn)該設(shè)計(jì)的數(shù)據(jù)面部分,并通過(guò)在系統(tǒng)控制處理器(SCP)(稱為Pico)上執(zhí)行微碼來(lái)僅執(zhí)行更高級(jí)別的控制面功能。對(duì)于每一個(gè)鏈路而言,在硬件中實(shí)現(xiàn)完整的SATA物理、鏈路和傳輸層。大多數(shù)輔助接口功能(例如,I2C、EEPROM和LED)都包括某一程度上的硬件支持,并由專用的硬件功能單元執(zhí)行大多數(shù)成批的數(shù)據(jù)移動(dòng)。Pico微碼負(fù)責(zé)實(shí)現(xiàn)大多數(shù)由SSoC提供的功能,包括:初始化、虛擬化、鏡像、條帶化、端口之間的FIS移動(dòng)、對(duì)異常情況的處理、機(jī)架管理功能等。
[0210]由于它實(shí)現(xiàn)成批的SSoC功能,因此Pico處理器的性能就影響基于Polaris的系統(tǒng)的整體性能。Pico是具有雙發(fā)布、類似RISC的指令集的簡(jiǎn)單的、嵌入式的32比特控制處理器,它具有32個(gè)寄存器、7級(jí)管線和Harvard存儲(chǔ)器架構(gòu),。Pico I支持計(jì)數(shù)器-定時(shí)器和外部中斷,但是并不提供對(duì)乘法或除法運(yùn)算的硬件支持。用于Polaris中的Pico I處理器不支持浮點(diǎn),無(wú)MMU,無(wú)高速緩存,而且不進(jìn)行無(wú)次序的運(yùn)行。它在150MHz上運(yùn)行,具有針對(duì)指令存儲(chǔ)的64K SRAM和針對(duì)數(shù)據(jù)存儲(chǔ)器的16KB SRAM。
[0211]除下述硬件資源之外,還存在附加的寄存器庫(kù),它提供對(duì)SCP的基本支持。這些統(tǒng)稱為CPU寄存器,并包括處理器狀態(tài)(PS)、中斷掩碼、中斷未決、異常程序計(jì)數(shù)器和計(jì)數(shù)器/定時(shí)器寄存器。
[0212]已經(jīng)為Pico開(kāi)發(fā)了一種以Gnu編譯器程序組為基礎(chǔ)的完整工具鏈。該P(yáng)ico工具鏈包括編譯器(gcc)、匯編器(gas)、調(diào)試器(gdb)以及Gnu 二元實(shí)用程序(bintools)。
[0213]分割-合并引擎(SME)
[0214]內(nèi)部的數(shù)據(jù)移動(dòng)器功能(稱為分割-合并引擎(SME))實(shí)質(zhì)上是一種智能的片上DMA控制器,它在SCP寄存器地址空間內(nèi)的位置之間(即,在寄存器、FIFO和存儲(chǔ)之間)移動(dòng)雙字。SME負(fù)責(zé)SATA端口之間所有的數(shù)據(jù)移動(dòng)活動(dòng),而且還能夠執(zhí)行復(fù)雜的分散-集中操作以支持驅(qū)動(dòng)器虛擬化功能,包括條帶化和鏡像。
[0215]SME還支持驅(qū)動(dòng)器到驅(qū)動(dòng)器的復(fù)制。這在進(jìn)行諸如鏡像集重建操作、備份等操作時(shí)提供系統(tǒng)層性能。該特性不僅減少Polaris主機(jī)鏈路上的負(fù)載,還減少這些帶寬密集的數(shù)據(jù)復(fù)制操作對(duì)主機(jī)的影響。這意味著這些復(fù)制操作在相當(dāng)大量的處理周期、存儲(chǔ)器和I /O帶寬方面并不對(duì)主機(jī)施加負(fù)載,而且不損耗Polaris主機(jī)鏈路。
[0216]豐機(jī)SATA 端口
[0217]主機(jī)端口在主機(jī)與Polaris之間實(shí)現(xiàn)SATA連接的目標(biāo)終端。與主機(jī)端口相關(guān)聯(lián)的資源包括為實(shí)現(xiàn)SATA協(xié)議的PHY、鏈路和傳輸層而必需的邏輯、一組用來(lái)控制該連接的控制與狀態(tài)寄存器,以及一組充當(dāng)傳入或輸出FIS報(bào)頭的緩沖器的寄存器。
[0218]主機(jī)端口的邏輯處理所有必要的通電和低層同步動(dòng)作,以及SATA鏈路元的鏈路層握手與交換。自動(dòng)處理該SATA協(xié)議處理的某些方面(例如,生成ALIGN、CONT, SOF /EOF、X-RDY, HOLD、R_IP、WTRM等元)。然而,由該鏈路上特定元的接收而產(chǎn)生的中斷,并生成其他鏈路元(例如,R_0K、R_ERR、P_SYNC等)歸Polaris微碼負(fù)責(zé)。這通過(guò)操縱主機(jī)端口的控制與狀態(tài)寄存器來(lái)進(jìn)行。主機(jī)端口邏輯校驗(yàn)傳入FIS上的CRC,并在控制與狀態(tài)寄存器中指示校驗(yàn)結(jié)果。同樣地,該邏輯生成針對(duì)傳出FIS的CRC。已經(jīng)作出特定的調(diào)整以允許故意在傳出FIS上生成劣質(zhì)的CRC。該部分邏輯通過(guò)FIS目標(biāo)ID字段來(lái)對(duì)傳入FIS進(jìn)行某種低層多路分解。該端口邏輯標(biāo)識(shí)目的地為地址15的FIS(即,PM15)以及被尋址到該SEMB邏輯的FIS( S卩,PM N+1,其中通過(guò)設(shè)置主機(jī)端口控制與狀態(tài)寄存器中的值來(lái)定義N),并對(duì)每一種情況生成適當(dāng)?shù)闹袛?。中斷在主機(jī)端口上出現(xiàn)其他事件時(shí)生成,而且可以通過(guò)對(duì)適當(dāng)?shù)亩丝诳刂萍拇嫫鬟M(jìn)行寫(xiě)入來(lái)清空所有中斷。
[0219]傳入FIS的報(bào)頭被自動(dòng)存放在緩沖寄存器內(nèi),同時(shí)通過(guò)SME把FIS的主體(或有效載荷)直接轉(zhuǎn)送至目標(biāo)設(shè)備。向緩沖寄存器內(nèi)寫(xiě)入傳出FIS的報(bào)頭的動(dòng)作觸發(fā)該端口將FIS發(fā)送回主機(jī)。就像端口的控制與狀態(tài)寄存器一樣,該緩沖寄存器存在于SCP寄存器地址空間內(nèi),且被讀取寫(xiě)入為雙字(即,32比特)值。
[0220]驅(qū)動(dòng)器SATA端口
[0221]Polaris上的5個(gè)驅(qū)動(dòng)器端口充當(dāng)Polaris與其驅(qū)動(dòng)器之間的SATA連接的啟動(dòng)器端。所有的驅(qū)動(dòng)器端口大多數(shù)彼此相同,而且大多數(shù)在對(duì)主機(jī)端口的功能和實(shí)現(xiàn)上是相同的。驅(qū)動(dòng)器端口與主機(jī)端口的不同之處在于其控制與狀態(tài)寄存器內(nèi)包含一些附加字段,例如,啟用對(duì)端口的旁路和直穿操作的比特,用于操縱端口內(nèi)SStatus影子寄存器中X比特的比特,以及與連接到每一個(gè)驅(qū)動(dòng)器端口的FIOF相關(guān)聯(lián)的字段。
[0222]除具有主機(jī)端口的控制與狀態(tài)寄存器字段的超集之外,每一個(gè)驅(qū)動(dòng)器端口包括對(duì)SRAM值得的全FIS (即,8KB),其中該FIS作為FIFO進(jìn)行管理。利用該SRAM來(lái)緩沖移入或移出每一個(gè)端口驅(qū)動(dòng)器的FIS。驅(qū)動(dòng)器端口的FIFO可以充當(dāng)在SME控制下的FIS傳送的源或目的地。該設(shè)計(jì)期待由SME引擎將FIS送入和送出驅(qū)動(dòng)器端口 FIFO,但是還允許SCP (在DWORD邊界上)直接讀寫(xiě)該FIFO。
[0223]在Polaris內(nèi)包括特定的硬件特性來(lái)支持實(shí)現(xiàn)對(duì)FIS的“直穿”路由,用以允許在接收到所有字節(jié)之前,向FIS的目的地端口傳送該FIS。對(duì)該特性的支持有助于實(shí)現(xiàn)峰性能級(jí)別,否則當(dāng)設(shè)備執(zhí)行“存儲(chǔ)和轉(zhuǎn)發(fā)”類操作時(shí)將會(huì)為每一事務(wù)添加大量等待時(shí)間(引入相當(dāng)大的等待時(shí)間懲罰,但是可以對(duì)設(shè)備關(guān)于吞吐量的性能有可以忽略的影響)。主機(jī)和驅(qū)動(dòng)器端口邏輯內(nèi)的特定特性允許通過(guò)操縱相應(yīng)端口的控制寄存器來(lái)激活該特性。
[0224]而且,在主機(jī)和驅(qū)動(dòng)器端口內(nèi)都存在控制寄存器,該主機(jī)和驅(qū)動(dòng)器端口允許對(duì)物理層的SATA接口邏輯進(jìn)行配置。
[0225]機(jī)架管理支持功能
[0226]Polaris SSoC支持標(biāo)準(zhǔn)的SATA機(jī)制來(lái)與標(biāo)準(zhǔn)規(guī)范的存儲(chǔ)機(jī)架處理器(SEP)通過(guò)接口相連。如上所述,SATA存儲(chǔ)機(jī)架管理橋(SEMB)特性允許Polaris元件通過(guò)SAF-TE協(xié)議或通過(guò)SES協(xié)議充當(dāng)HBA與SEP之間的橋。
[0227]SEP可以跨越大范圍的成本、大小和復(fù)雜性,但一般來(lái)說(shuō),SEP傾向于比Polaris元件花費(fèi)得更多且更大,而且比SteelVine SSoC包括更多的主機(jī)軟件。為了啟用為簡(jiǎn)單的機(jī)架管理業(yè)務(wù)所必需的基本特性,在成本和復(fù)雜性與SteelVine元件中的那些一致的更多的層面上,Polaris可支持使用更簡(jiǎn)單的低成本環(huán)境監(jiān)控芯片(例如,國(guó)家半導(dǎo)體的LM87)。用微碼實(shí)現(xiàn)對(duì)低成本EM元件的支持,并通過(guò)對(duì)標(biāo)準(zhǔn)SEMB協(xié)議的SIMG專有擴(kuò)展來(lái)提供對(duì)低成本EM元件的支持。
[0228]LM87是一串8比特范圍寄存器,可以對(duì)它們進(jìn)行讀取/寫(xiě)入以提供狀態(tài)和設(shè)置
值。LM87事務(wù)是真正簡(jiǎn)單的-讀取分組(i2c addr、reg addr),根據(jù)響應(yīng)獲得數(shù)據(jù)字節(jié),
寫(xiě)入分組(i2c addr、reg addr、數(shù)據(jù)字節(jié))。
[0229]雖然可通過(guò)簡(jiǎn)單的I2C總線接口來(lái)供應(yīng)SEMB的基本功能,但是Polaris提供專用硬件以支持這些SEMB功能。除了可主/從的IC總線之外,還存在專用的存儲(chǔ)器塊(IKB)和像DMA單元那樣發(fā)揮作用的邏輯,而且該邏輯可用來(lái)在EM IC總線上、在SEMB存儲(chǔ)器和設(shè)備之間傳送數(shù)據(jù)塊。可用兩個(gè)不同的I2C目標(biāo)地址來(lái)對(duì)EM I2C總線進(jìn)行編程。
[0230]因?yàn)槊鞔_定義且高度樣式化SEMB I2C事務(wù),所以Polaris SEMB邏輯提供對(duì)這些事務(wù)的支持。具體地說(shuō),SEMB邏輯自動(dòng)接收出個(gè)或7個(gè)字節(jié)的)SEMB分組報(bào)頭,并生成對(duì)Polaris微碼的中斷,該P(yáng)olaris微碼處理對(duì)傳入分組的部署。
[0231]可以將SEMB邏輯設(shè)置成自動(dòng)在每一個(gè)分組的末端添加校驗(yàn)和,并生成傳入分組的校驗(yàn)和(以由微碼根據(jù)在每一個(gè)分組的末端處接收的值來(lái)校驗(yàn))。
[0232]SEMB邏輯在SEMB存儲(chǔ)器與EM I2C總線之間移動(dòng)數(shù)據(jù),而且利用SME在主機(jī)與SEMB存儲(chǔ)器之間移動(dòng)數(shù)據(jù)(以與在FIFO與主機(jī)之間移動(dòng)數(shù)據(jù)FIS相同的方式)。
[0233]SEMB邏輯可以部分地解析并分解傳入SEP分組報(bào)頭(提取s印Stat字段、CRC等),它可包括僅有報(bào)頭的分組(即,沒(méi)有數(shù)據(jù)),或者報(bào)頭和數(shù)據(jù)分組。
[0234]可以將EM I2C上Tx數(shù)據(jù)率設(shè)置成N種選擇中的一種??梢酝ㄟ^(guò)微碼來(lái)設(shè)置針對(duì)SEMB邏輯的獨(dú)立的重置信號(hào)。微碼在重置時(shí)發(fā)送探針?lè)纸M以查看EM I2C上是否存在SEMB,并注意此以便在主機(jī)請(qǐng)求返回對(duì)PM N+1端口的簽名時(shí),它可以適當(dāng)?shù)刈鞒鲰憫?yīng)。
[0235]可以在由SCP存取的雙字中讀/寫(xiě)該SEMB存儲(chǔ)器。SEMB邏輯包括允許超時(shí)中斷的定時(shí)器,從而可以檢測(cè)懸置的EM12C事務(wù)。
[0236]LED控制邏輯
[0237]SteelVine元件的另一個(gè)特性是通過(guò)LED來(lái)判斷物理驅(qū)動(dòng)器狀態(tài)的能力。不同的存儲(chǔ)應(yīng)用程序要求不同類型的外部標(biāo)記,因此SteelVine元件必須支持不同的LED特性。例如,企業(yè)產(chǎn)品要求除那些指示故障的標(biāo)記之外不提供LED標(biāo)記,而用戶產(chǎn)品要求驅(qū)動(dòng)器動(dòng)作和電源標(biāo)記。
[0238]Polaris具有對(duì)閃爍的LED標(biāo)記以及允許自動(dòng)顯示驅(qū)動(dòng)器動(dòng)作的硬件支持。重要的是提供對(duì)這些功能的硬件支持,因?yàn)橐晕⒋a來(lái)執(zhí)行這些功能的開(kāi)銷將會(huì)是昂貴的。Polaris在每個(gè)驅(qū)動(dòng)器端口上包括兩個(gè)LED,對(duì)主機(jī)端口有兩個(gè)LED和四個(gè)系統(tǒng)LED。每個(gè)端口的LED對(duì)可以八種不同模式中的一種來(lái)進(jìn)行操作,其中這八種不同的操作模式表示根據(jù)LED狀態(tài)的不同情況??砷_(kāi)關(guān)每一個(gè)LED或使其閃爍。它們?nèi)Q于是否處于企業(yè)模式而不同地動(dòng)作。可編程每個(gè)端口 LED對(duì)之一以響應(yīng)于該動(dòng)作而觸發(fā)(打開(kāi)或關(guān)閉數(shù)十毫秒)。該自動(dòng)閃爍促使選定的LED以大約I秒的循環(huán)時(shí)間觸發(fā)狀態(tài)。
[0239]系統(tǒng)LED可由微碼直接控制且無(wú)任何硬件支持(除打開(kāi)或關(guān)閉它們之外)。
[0240]在Polaris中,還提供對(duì)外部EEPROM的存取的支持,該外部EEPROM用于存儲(chǔ)所有異常微碼、虛擬化狀態(tài)和其他關(guān)于該設(shè)備的配置信息。
[0241]Polaris 軟件概述
[0242]如圖12所示,基于Polaris的存儲(chǔ)子系統(tǒng)的軟件元件由三種不同類型的軟件構(gòu)成。這三個(gè)部分存在于三個(gè)不同的位置:在SSoC上、在對(duì)該SSoC的本地的板上和在主機(jī)上。以該P(yáng)olaris SSoC為基礎(chǔ)的不同存儲(chǔ)產(chǎn)品僅僅在類型規(guī)范和為傳遞期望功能所需軟件的數(shù)量上不同。該不同數(shù)量的資源可用于略有不同地實(shí)現(xiàn)的這些不同類型軟件要求中的每一個(gè)。要將軟件工程內(nèi)相同的最佳實(shí)踐應(yīng)用到對(duì)該軟件的開(kāi)發(fā)中,而不管討論中的軟件類型為何。
[0243]在以下小節(jié)中(高層次地)描述用于基于Polaris的存儲(chǔ)子系統(tǒng)的這三類不同軟件的每一種,從主機(jī)軟件開(kāi)始,移至本地控制器上的軟件,并以專門(mén)的Polaris SSoC上的軟件結(jié)束。除此之外,還描述存儲(chǔ)子系統(tǒng)內(nèi)軟件之間的各個(gè)關(guān)鍵接口。這包括用于定義和實(shí)現(xiàn)策略模塊、監(jiān)控子系統(tǒng)的操作并更新該P(yáng)olaris SSoC內(nèi)微碼的接口。
[0244]豐機(jī)軟件
[0245]運(yùn)行在主機(jī)側(cè)的軟件由系統(tǒng)層軟件和在標(biāo)準(zhǔn)的、資源豐富的主機(jī)環(huán)境內(nèi)運(yùn)行的應(yīng)用層軟件構(gòu)成,幾乎不具有約束。最小化為給定的基于Polaris的存儲(chǔ)產(chǎn)品所需的系統(tǒng)層軟件的量是合乎需求的。這是因?yàn)榕c為每一個(gè)新的OS和平臺(tái)版本對(duì)驅(qū)動(dòng)器進(jìn)行連續(xù)傳入端口和兼容測(cè)試有關(guān)的高成本??梢砸栽跓o(wú)人工介入的情況下運(yùn)行的后臺(tái)程序的形式遞送某種系統(tǒng)軟件,諸如將存儲(chǔ)子系統(tǒng)的特性映射到現(xiàn)有系統(tǒng)管理控制臺(tái)中的策略或適配器。
[0246]設(shè)備驅(qū)動(dòng)器
[0247]在最低層上,存在在設(shè)備驅(qū)動(dòng)器內(nèi)實(shí)現(xiàn)的功能。這可包括各種各樣的低層特性,例如產(chǎn)生回調(diào)(至ioctl)作為進(jìn)行對(duì)來(lái)自存儲(chǔ)子系統(tǒng)中感興趣事件的異步通知的結(jié)果,并允許(ioctl等)訪問(wèn)Polaris硬件的低層特性。SteelVine架構(gòu)的目的之一是允許添加對(duì)主機(jī)透明的功能。這意味著必然有可能用Polaris硬件來(lái)構(gòu)建存儲(chǔ)子系統(tǒng),其中該P(yáng)olaris硬件適當(dāng)?shù)赜矛F(xiàn)有(遺留的)設(shè)備驅(qū)動(dòng)器來(lái)操作。給定子系統(tǒng)的特定特性可僅通過(guò)特定設(shè)備驅(qū)動(dòng)器訪問(wèn),但通過(guò)標(biāo)準(zhǔn)發(fā)行的設(shè)備驅(qū)動(dòng)器來(lái)推導(dǎo)子系統(tǒng)的大多數(shù)值是合乎需求的。
[0248]應(yīng)用
[0249]在頂層是人工交互應(yīng)用程序,例如與用戶交互的CLI和⑶I。CLI可以啟用腳本或其他管理功能。⑶I可以簡(jiǎn)化通過(guò)抽象的操作。
[0250]外部梓口 API /庫(kù)
[0251]該架構(gòu)可提供一種外部接口程序庫(kù)來(lái)存取該系統(tǒng)的特性。這樣,可以除去如何與子系統(tǒng)通信的細(xì)節(jié)并對(duì)子系統(tǒng)的不同元件獨(dú)立地作出改變。所有主機(jī)sw(除設(shè)備驅(qū)動(dòng)器之外)可以使用公共庫(kù)來(lái)確保統(tǒng)一地存取特性并提高便攜性。
[0252]外部控制器固件
[0253]在基于Polaris的存儲(chǔ)子系統(tǒng)中發(fā)現(xiàn)幾種不同的嵌入式控制器,包括用于機(jī)架管理、外部接口處理和實(shí)現(xiàn)外部策略的處理器。雖然可通過(guò)單獨(dú)的處理器來(lái)處理功能,或者可以將功能一起集聚在公共處理器上,但是在這些處理器上執(zhí)行的軟件類型在本質(zhì)上是相似的,而且在此稱為固件。固件具有與主機(jī)軟件和微碼一樣的特性。然而,固件執(zhí)行環(huán)境一般具有相比于一般的主機(jī)環(huán)境較少的相關(guān)資源,但比對(duì)Polaris微碼可用的資源多不少。運(yùn)行時(shí)環(huán)境可以和用于微碼或商業(yè)RTOS甚至是Unix衍生版(Kn0ppiX、eC0S等)的環(huán)境相同。接口封裝是用來(lái)提供期望外部接口(例如,網(wǎng)絡(luò)服務(wù)器、協(xié)議、鏈路接口等)、HTTP、TCP /IP、USB等的固件模塊,這取決于要向存儲(chǔ)子系統(tǒng)提供哪種外部接口。例如,Polaris可以提供串行或USB端口來(lái)運(yùn)行CLI以進(jìn)行配置、監(jiān)控或更新,或者還能夠運(yùn)行網(wǎng)絡(luò)服務(wù)器和連接以太網(wǎng)來(lái)允許來(lái)自網(wǎng)絡(luò)瀏覽器的控制/監(jiān)控。
[0254]SSoC 微碼
[0255]在Polaris SSoC上運(yùn)行的代碼通常稱為微碼,并由幾個(gè)關(guān)鍵部分組成,包括公共業(yè)務(wù)部分、應(yīng)用程序特有部分和(可任選地)嵌入策略模塊。由于對(duì)不同的產(chǎn)品定義不同的特性集,因此對(duì)微碼的改變應(yīng)該囿于該策略模塊。
[0256]存在廣泛范圍的不同的使用模型,其范圍從非接觸裝置到高接觸管理系統(tǒng)。根據(jù)該部件所使用的模式,可要求從無(wú)附加軟件到龐大數(shù)量的軟件。
[0257]結(jié)論
[0258]根據(jù)前述內(nèi)容,可以理解在此為了其例示的目的而描述高級(jí)存儲(chǔ)系統(tǒng)的特定實(shí)施例,但是可在不脫離本發(fā)明精神和范圍的情況下作出各種修改。例如,盡管存儲(chǔ)設(shè)備在以上一般指的是磁盤(pán)驅(qū)動(dòng)器形式,但是可以使用大量不同的不是以磁盤(pán)為基礎(chǔ)的存儲(chǔ)設(shè)備,例如閃存設(shè)備、磁帶機(jī)和其他存儲(chǔ)技術(shù)。同樣地,盡管以SATA接口的形式描述存儲(chǔ)接口,但是其他存儲(chǔ)接口也可用于高級(jí)存儲(chǔ)系統(tǒng),例如并行高級(jí)技術(shù)附加(PATA)、通用串行總線(USB)、固件和光纖通道。還可以用諸如在定制ASIC上的硬件或軟件方式或者通過(guò)使用通用計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)高級(jí)存儲(chǔ)系統(tǒng)。因此,除所附權(quán)利要求之外,本發(fā)明并不受限。
【權(quán)利要求】
1.一種系統(tǒng),包括: 開(kāi)關(guān)存儲(chǔ)系統(tǒng),其被中間地耦合在計(jì)算機(jī)系統(tǒng)與物理存儲(chǔ)介質(zhì)之間,以使得所述計(jì)算機(jī)系統(tǒng)將所述物理存儲(chǔ)介質(zhì)識(shí)別為一個(gè)或多個(gè)虛擬存儲(chǔ)介質(zhì),每個(gè)虛擬存儲(chǔ)介質(zhì)用于包含一組物理存儲(chǔ)介質(zhì)且每個(gè)虛擬存儲(chǔ)介質(zhì)用于實(shí)現(xiàn)存儲(chǔ)硬件的命令; 所述物理存儲(chǔ)介質(zhì)用于將所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)識(shí)別為與所述物理存儲(chǔ)介質(zhì)的拓?fù)浣Y(jié)構(gòu)無(wú)關(guān)的主機(jī)控制器;以及 所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于接收來(lái)自所述計(jì)算機(jī)系統(tǒng)的虛擬命令并將所述虛擬命令映射成一個(gè)或多個(gè)物理命令,以及將所述物理命令傳達(dá)給所述物理存儲(chǔ)介質(zhì),所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于響應(yīng)于所述物理命令的執(zhí)行接收來(lái)自所述物理存儲(chǔ)介質(zhì)的應(yīng)答,以及將所述應(yīng)答作為單個(gè)虛擬應(yīng)答傳達(dá)給所述計(jì)算機(jī)系統(tǒng), 其中所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)將所述應(yīng)答作為單個(gè)虛擬應(yīng)答來(lái)傳達(dá)把所述主機(jī)與所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)之間的確認(rèn)周期同所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)與所連接的設(shè)備之間的確認(rèn)周期分隔開(kāi)。
2.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)通過(guò)對(duì)指示成功的請(qǐng)求作出響應(yīng)隱藏對(duì)失敗于所述主機(jī)計(jì)算機(jī)系統(tǒng)的物理命令的重新嘗試,然后重試所述物理命令。
3.如權(quán)利要求3所述的系統(tǒng),其特征在于,重試所述物理命令失敗,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)報(bào)告整個(gè)存儲(chǔ)操作失敗。
4.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于從所述計(jì)算機(jī)系統(tǒng)接收一個(gè)以上未完成虛擬命令——即使所述物理存儲(chǔ)介質(zhì)不能。
5.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于提供固定數(shù)目的未完成虛擬命令,其被動(dòng)態(tài)分配給每虛擬存儲(chǔ)介質(zhì)的可變數(shù)目的未完成命令。
6.如權(quán)利要求2所述的系統(tǒng)`,其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于將相同物理存儲(chǔ)介質(zhì)映射成多個(gè)虛擬存儲(chǔ)介質(zhì)。
7.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于為所述虛擬存儲(chǔ)介質(zhì)中的每一個(gè)合成恰當(dāng)?shù)臉?biāo)識(shí)結(jié)構(gòu)。
8.一種系統(tǒng),包括: 開(kāi)關(guān)存儲(chǔ)系統(tǒng),其被中間地耦合在計(jì)算機(jī)系統(tǒng)與一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)之間,以使得所述計(jì)算機(jī)系統(tǒng)將所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)識(shí)別單個(gè)虛擬存儲(chǔ)介質(zhì),所述單個(gè)虛擬存儲(chǔ)介質(zhì)實(shí)現(xiàn)存儲(chǔ)硬件的命令; 所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)用于將所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)識(shí)別為與所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)的拓?fù)浣Y(jié)構(gòu)無(wú)關(guān)的主機(jī)控制器; 所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)被配置成接收來(lái)自所述計(jì)算機(jī)系統(tǒng)的虛擬命令并將所述虛擬命令映射成一個(gè)或多個(gè)物理命令,所述一個(gè)或多個(gè)物理命令中的第一物理命令被尋址到所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)中的第一個(gè),并且將所述第一物理命令傳達(dá)給所述第一物理存儲(chǔ)介質(zhì); 所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于響應(yīng)于所述一個(gè)或多個(gè)物理命令的執(zhí)行接收來(lái)自所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)的一個(gè)或多個(gè)物理應(yīng)答,所述一個(gè)或多個(gè)物理應(yīng)答中的第一物理應(yīng)答來(lái)自所述第一物理存儲(chǔ)介質(zhì),以及將所述物理應(yīng)答作為單個(gè)虛擬應(yīng)答傳達(dá)給所述計(jì)算機(jī)系統(tǒng);以及所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于將第二物理存儲(chǔ)介質(zhì)整合到所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì), 其中所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)整合所述第二物理存儲(chǔ)介質(zhì)把自身自動(dòng)重新配置成改變虛擬命令至一個(gè)或多個(gè)物理命令的映射,以使得所述計(jì)算機(jī)系統(tǒng)將所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)識(shí)別為單個(gè)虛擬存儲(chǔ)介質(zhì),所述單個(gè)虛擬存儲(chǔ)介質(zhì)實(shí)現(xiàn)存儲(chǔ)硬件的命令。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于記錄所述一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)的序列號(hào)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述第二物理存儲(chǔ)介質(zhì)被識(shí)別,但被再定位至不同的物理接口,虛擬命令至一個(gè)或多個(gè)物理命令的映射被自動(dòng)更新以計(jì)及所述再定位。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)整合所述第二物理存儲(chǔ)介質(zhì)防止對(duì)所述第二物理存儲(chǔ)介質(zhì)的存取直至采取另外的用戶動(dòng)作。
12.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)自動(dòng)重新配置自身遵循基于在制造期間提供特定 的特征的指令。
13.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)把將多個(gè)一個(gè)或多個(gè)物理存儲(chǔ)介質(zhì)連接至所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)的一個(gè)或多個(gè)數(shù)據(jù)通道合并成快速虛擬通道。
14.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述第二物理存儲(chǔ)介質(zhì)被整合到多個(gè)物理存儲(chǔ)介質(zhì)的鏡像集合。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述鏡像集合在被確定為不一致時(shí)進(jìn)行重建,所述重建的進(jìn)程由指針來(lái)描述。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,指針后面的寫(xiě)入操作被重復(fù)。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,僅對(duì)所述多個(gè)物理存儲(chǔ)介質(zhì)中的同步的物理存儲(chǔ)介質(zhì)進(jìn)行在指針之前的寫(xiě)入操作。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述指針被保持在非易失性存儲(chǔ)器中。
19.一種裝置,包括: 開(kāi)關(guān)存儲(chǔ)系統(tǒng),其被中間地耦合在計(jì)算機(jī)系統(tǒng)與物理存儲(chǔ)介質(zhì)之間,以使得所述計(jì)算機(jī)系統(tǒng)將所述物理存儲(chǔ)介質(zhì)識(shí)別為一個(gè)或多個(gè)虛擬存儲(chǔ)介質(zhì),每個(gè)虛擬存儲(chǔ)介質(zhì)用于包含一組物理存儲(chǔ)介質(zhì)且每個(gè)虛擬存儲(chǔ)介質(zhì)用于實(shí)現(xiàn)存儲(chǔ)硬件的命令; 所述物理存儲(chǔ)介質(zhì)用于將所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)識(shí)別為與所述物理存儲(chǔ)介質(zhì)的拓?fù)浣Y(jié)構(gòu)無(wú)關(guān)的主機(jī)控制器;以及 所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于接收來(lái)自所述計(jì)算機(jī)系統(tǒng)的虛擬命令并將所述虛擬命令映射成一個(gè)或多個(gè)物理命令,以及將所述物理命令傳達(dá)給所述物理存儲(chǔ)介質(zhì),所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于響應(yīng)于所述物理命令的執(zhí)行接收來(lái)自所述物理存儲(chǔ)介質(zhì)的應(yīng)答,以及將所述應(yīng)答作為單個(gè)虛擬應(yīng)答傳達(dá)給所述計(jì)算機(jī)系統(tǒng), 其中所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)將所述應(yīng)答作為單個(gè)虛擬應(yīng)答來(lái)傳達(dá)把所述主機(jī)與所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)之間的確認(rèn)周期同所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)與所連接的設(shè)備之間的確認(rèn)周期分隔開(kāi)。
20.—種方法,包括: 經(jīng)由開(kāi)關(guān)存儲(chǔ)系統(tǒng)建立計(jì)算機(jī)系統(tǒng)與物理存儲(chǔ)介質(zhì)之間的通信,以使得所述計(jì)算機(jī)系統(tǒng)將所述物理存儲(chǔ)介質(zhì)識(shí)別為一個(gè)或多個(gè)虛擬存儲(chǔ)介質(zhì),每個(gè)虛擬存儲(chǔ)介質(zhì)用于包含一組物理存儲(chǔ)介質(zhì)且每個(gè)虛擬存儲(chǔ)介質(zhì)用于實(shí)現(xiàn)存儲(chǔ)硬件的命令,其中所述建立通信包括: 經(jīng)由所述物理存儲(chǔ)介質(zhì)將所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)識(shí)別為與所述物理存儲(chǔ)介質(zhì)的拓?fù)浣Y(jié)構(gòu)無(wú)關(guān)的主機(jī)控制器;以及 經(jīng)由所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)接收來(lái)自所述計(jì)算機(jī)系統(tǒng)的虛擬命令并將所述虛擬命令映射成一個(gè)或多個(gè)物理命令,以及將所述物理命令傳達(dá)給所述物理存儲(chǔ)介質(zhì),所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)用于響應(yīng)于所述物理命令的執(zhí)行接收來(lái)自所述物理存儲(chǔ)介質(zhì)的應(yīng)答,以及將所述應(yīng)答作為單個(gè)虛擬應(yīng)答傳達(dá)給所述計(jì)算機(jī)系統(tǒng), 其中所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)將所述應(yīng)答作為單個(gè)虛擬應(yīng)答來(lái)傳達(dá)把所述主機(jī)與所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)之間的確認(rèn)周期同所述開(kāi)關(guān)存儲(chǔ)系統(tǒng)與所連接的設(shè)備之間的確認(rèn)周期分隔開(kāi)。
【文檔編號(hào)】G06F12/02GK103744790SQ201310687215
【公開(kāi)日】2014年4月23日 申請(qǐng)日期:2006年8月24日 優(yōu)先權(quán)日:2005年8月25日
【發(fā)明者】J·D·諾斯科特, J·G·漢科, B·K·舒米特 申請(qǐng)人:晶像股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1