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

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

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