專(zhuān)利名稱(chēng):磁盤(pán)接口處理器以及磁盤(pán)操作命令的處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)和控制領(lǐng)域,尤指一種磁盤(pán)接口處理器以及磁盤(pán)操作命令的處理方法。
背景技術(shù):
隨著網(wǎng)絡(luò)的發(fā)展和計(jì)算機(jī)的普及應(yīng)用,人們對(duì)數(shù)據(jù)存儲(chǔ)的性能要求越來(lái)越高,這種高要求尤其體現(xiàn)在關(guān)鍵事務(wù)的應(yīng)用上。廉價(jià)冗余磁盤(pán)陣列(RAID,Redundant Array of Independent Disks)采用分條和冗余的方法提高磁盤(pán)存儲(chǔ)系統(tǒng)的容量、速度和可靠性,成為高性能數(shù)據(jù)存儲(chǔ)的首選結(jié)構(gòu)。
在RAID中,磁盤(pán)陣列控制器是一個(gè)核心部件,用于完成緩存預(yù)取、緩存置換、磁盤(pán)聚合寫(xiě)、數(shù)據(jù)冗余計(jì)算、數(shù)據(jù)備份與重建等操作。實(shí)際應(yīng)用中,磁盤(pán)陣列控制器由大容量緩存和幾個(gè)具有特殊功能的處理器組成,比如主機(jī)接口處理器、磁盤(pán)接口處理器、命令處理器以及緩存管理器等,這些處理器協(xié)同工作,可以提高RAID的性能。
其中,磁盤(pán)接口處理器用于執(zhí)行讀寫(xiě)磁盤(pán)操作,并對(duì)磁盤(pán)組進(jìn)行管理。如果磁盤(pán)接口處理器的吞吐率較高,就可以提高緩存的命中率,降低RAID的平均訪(fǎng)問(wèn)時(shí)間,使得復(fù)雜的預(yù)取和置換算法能夠方便、有效地應(yīng)用于RAID,從而提高RAID的整體性能。
一般情況下,磁盤(pán)接口處理器可以簡(jiǎn)單地采用通用處理器實(shí)現(xiàn)。如圖1所示,該磁盤(pán)存儲(chǔ)系統(tǒng)包括磁盤(pán)接口處理器101、處理器存儲(chǔ)單元102、共享緩存單元103和磁盤(pán)組104。所述磁盤(pán)接口處理器101進(jìn)一步劃分為取命令單元105和命令分析執(zhí)行單元106。其中,取命令單元105可以采用軟件或硬件模塊實(shí)現(xiàn),用于對(duì)處理器存儲(chǔ)單元102的命令池進(jìn)行訪(fǎng)問(wèn),從中取出來(lái)自其他處理器的磁盤(pán)操作命令,交由命令分析執(zhí)行單元106處理。命令分析執(zhí)行單元106主要用于分析各條命令,并按照不同的命令要求順序執(zhí)行該命令的各步操作?,F(xiàn)有技術(shù)中,所述磁盤(pán)操作命令包括磁盤(pán)尋址、磁盤(pán)通道協(xié)議轉(zhuǎn)換、異或計(jì)算和共享存儲(chǔ)器等。
基于圖1所示的磁盤(pán)存儲(chǔ)系統(tǒng),現(xiàn)有磁盤(pán)操作命令的處理過(guò)程如圖2所示,包括以下步驟步驟201取命令單元判斷命令池是否為空,即命令池中是否存在待處理的磁盤(pán)操作命令,如果命令池不為空,則執(zhí)行步驟203,否則執(zhí)行步驟202。
步驟202磁盤(pán)接口處理器進(jìn)入等待狀態(tài),并返回執(zhí)行步驟201。
步驟203取命令單元順序取出命令池中的一條命令,交給命令分析執(zhí)行單元。
步驟204命令分析執(zhí)行單元對(duì)接收到的命令進(jìn)行分析處理。
步驟205判斷該命令是否處理完畢,如果是,命令分析執(zhí)行單元通知取命令單元該命令執(zhí)行完畢,取命令單元就會(huì)返回執(zhí)行步驟201,從命令池中取出下一條命令執(zhí)行;否則返回執(zhí)行步驟204。
循環(huán)執(zhí)行上述過(guò)程,就能實(shí)現(xiàn)命令池中保存的所有磁盤(pán)操作命令。
但是,將通用處理器作為磁盤(pán)接口處理器使用,存在以下缺點(diǎn)一、磁盤(pán)操作命令只能順序執(zhí)行,即每條磁盤(pán)操作命令必須在前一條磁盤(pán)操作命令執(zhí)行完畢才能啟動(dòng)處理;二、某些需要占用大量時(shí)間的操作,比如異或操作等,也由通用處理器承擔(dān),這使得磁盤(pán)操作命令的平均處理時(shí)間較長(zhǎng)。由于存在以上缺點(diǎn),這種磁盤(pán)接口處理器的平均磁盤(pán)訪(fǎng)問(wèn)時(shí)間長(zhǎng),吞吐率低。
為克服上述問(wèn)題,可以將通用處理器和異或?qū)S眉呻娐?ASIC,Application-Specific Integrated Circuit)構(gòu)成較復(fù)雜的磁盤(pán)接口處理器,具體結(jié)構(gòu)見(jiàn)圖3。該磁盤(pán)接口處理器將異或操作從磁盤(pán)操作命令中獨(dú)立出來(lái),由異或?qū)S肁SIC 307專(zhuān)門(mén)完成,通用處理器只負(fù)責(zé)處理異或操作之外的其余操作。
采用圖3所示的磁盤(pán)接口處理器,處理磁盤(pán)操作命令的過(guò)程如圖4所示,包括以下步驟步驟401~404與圖2中的步驟201~204相同,此處不再贅述。
步驟405判斷所述命令是否需要進(jìn)行異或計(jì)算,如果需要?jiǎng)t執(zhí)行步驟406,否則執(zhí)行步驟407。
步驟406將命令送至異或?qū)S肁SIC進(jìn)行異或計(jì)算。
步驟407將命令送至通用處理器執(zhí)行,該通用處理器負(fù)責(zé)完成異或操作之外的所有其它操作。
步驟408判斷該命令是否執(zhí)行完畢,如果沒(méi)有則返回執(zhí)行步驟406,如果執(zhí)行完畢則返回步驟401,取下一條命令,開(kāi)始下一個(gè)處理過(guò)程。
該方法采用異或?qū)S肁SIC分擔(dān)磁盤(pán)操作命令中的異或操作,對(duì)于需要執(zhí)行異或操作的磁盤(pán)操作命令而言,比如降級(jí)模式的讀/寫(xiě)磁盤(pán)命令,可以降低磁盤(pán)訪(fǎng)問(wèn)時(shí)間。但是,該方法沿襲了圖2所示方法的缺點(diǎn),即每條磁盤(pán)操作命令必須在前一條命令完成之后才會(huì)被執(zhí)行,這在很大程度上限制了磁盤(pán)接口處理器的吞吐率。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種磁盤(pán)接口處理器,在該處理器中設(shè)置多個(gè)處理模塊,負(fù)責(zé)處理磁盤(pán)操作命令的不同子任務(wù),使得多條磁盤(pán)操作命令能夠同時(shí)得到處理,從而降低磁盤(pán)訪(fǎng)問(wèn)時(shí)間,提高磁盤(pán)接口處理器的吞吐率。
本發(fā)明的又一目的在于提供一種磁盤(pán)操作命令的處理方法,采用命令處理流水線(xiàn)分步執(zhí)行磁盤(pán)操作命令,以提高磁盤(pán)接口處理器的吞吐率。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種磁盤(pán)接口處理器,應(yīng)用于包含處理器存儲(chǔ)單元、共享緩存單元和磁盤(pán)組的磁盤(pán)存儲(chǔ)系統(tǒng)中,所述磁盤(pán)接口處理器包括取命令單元和命令分析執(zhí)行單元;所述命令分析執(zhí)行單元包含一個(gè)以上處理模塊,磁盤(pán)操作命令被分解為順序執(zhí)行的一個(gè)以上子任務(wù),每個(gè)處理模塊對(duì)應(yīng)于該磁盤(pán)操作命令的一個(gè)子任務(wù),上述一個(gè)以上處理模塊按照自身對(duì)應(yīng)的子任務(wù)的執(zhí)行順序,逐級(jí)連接形成命令處理流水線(xiàn);每個(gè)處理模塊設(shè)置有緩沖隊(duì)列,用于保存上一級(jí)模塊送至的磁盤(pán)操作命令;上述每個(gè)處理模塊根據(jù)自身的空閑情況,從緩沖隊(duì)列中順序獲取磁盤(pán)操作命令執(zhí)行,并在處理完畢后,將經(jīng)過(guò)自身處理的磁盤(pán)操作命令送至下一級(jí)模塊。
所述命令分析執(zhí)行單元?jiǎng)澐譃楣蚕砭彺娌僮髂K、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊,上述四個(gè)處理模塊兩兩相連;取命令單元從處理器存儲(chǔ)單元獲得磁盤(pán)操作命令,送至共享緩存操作模塊或地址映射模塊;共享緩存操作模塊根據(jù)接收到的磁盤(pán)操作命令,從共享緩存單元讀取待操作的數(shù)據(jù)塊,并將該磁盤(pán)操作命令送至地址映射模塊;或者,將接收到的數(shù)據(jù)塊保存到共享緩存單元;地址映射模塊為待操作的數(shù)據(jù)塊計(jì)算出磁盤(pán)物理地址;異或計(jì)算模塊對(duì)待操作的數(shù)據(jù)塊進(jìn)行異或計(jì)算,并由磁盤(pán)操作模塊將該數(shù)據(jù)塊保存到磁盤(pán)組中;或者,磁盤(pán)操作模塊根據(jù)所述磁盤(pán)物理地址從磁盤(pán)組獲取上述待操作的數(shù)據(jù)塊,再由異或計(jì)算模塊進(jìn)行異或計(jì)算后,送至共享緩存操作模塊。
一種磁盤(pán)操作命令的處理方法,應(yīng)用于磁盤(pán)存儲(chǔ)系統(tǒng),該方法包括將磁盤(pán)操作命令分解為順序執(zhí)行的一個(gè)以上子任務(wù),并預(yù)先為每個(gè)子任務(wù)設(shè)置一個(gè)對(duì)應(yīng)的處理模塊,形成命令處理流水線(xiàn),逐級(jí)處理該磁盤(pán)操作命令;流水線(xiàn)上的每個(gè)處理模塊中設(shè)置的緩沖隊(duì)列用于保存上一級(jí)模塊送至的磁盤(pán)操作命令;上述每個(gè)處理模塊根據(jù)自身的空閑情況,從緩沖隊(duì)列中順序獲取磁盤(pán)操作命令執(zhí)行,并在處理完畢后,將經(jīng)過(guò)自身處理的磁盤(pán)操作命令送至下一級(jí)模塊。
所述將磁盤(pán)操作命令分解為順序執(zhí)行的一個(gè)以上子任務(wù)并預(yù)先為每個(gè)子任務(wù)設(shè)置一個(gè)對(duì)應(yīng)的處理模塊的方法具體為將磁盤(pán)操作命令分解為四個(gè)子任務(wù),并分別設(shè)置共享緩存操作模塊、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊處理對(duì)應(yīng)的子任務(wù),形成四級(jí)的命令處理流水線(xiàn)。
所述磁盤(pán)操作命令為讀磁盤(pán)命令時(shí),取命令單元將讀磁盤(pán)命令送至地址映射模塊;則所述命令處理流水線(xiàn)處理磁盤(pán)操作命令的方法具體為a1、地址映射模塊根據(jù)該讀磁盤(pán)命令中攜帶的待操作數(shù)據(jù)塊的起始地址和待操作數(shù)據(jù)塊的單元數(shù)量,計(jì)算出待操作數(shù)據(jù)塊的磁盤(pán)物理地址,并將該讀磁盤(pán)命令送至磁盤(pán)操作模塊;a2、磁盤(pán)操作模塊根據(jù)所述磁盤(pán)物理地址從磁盤(pán)組的對(duì)應(yīng)位置讀取待操作的數(shù)據(jù)塊,并將該數(shù)據(jù)塊送至共享緩存操作模塊,由共享緩存操作模塊將所述數(shù)據(jù)塊寫(xiě)入共享緩存單元。
步驟a2中,磁盤(pán)操作模塊讀取數(shù)據(jù)塊之后,該方法進(jìn)一步包括a21、判斷所述讀磁盤(pán)命令的模式,如果為正常模式則將數(shù)據(jù)塊送至共享緩存操作模塊,如果為非正常模式則執(zhí)行步驟a22;a22、將數(shù)據(jù)塊送至異或計(jì)算模塊進(jìn)行異或計(jì)算,并將經(jīng)過(guò)異或計(jì)算的數(shù)據(jù)塊送至共享緩存操作模塊。
所述非正常模式包括重建模式和降級(jí)模式。
所述磁盤(pán)操作命令為寫(xiě)磁盤(pán)命令時(shí),取命令單元將寫(xiě)磁盤(pán)命令送至共享緩存操作模塊;則所述命令處理流水線(xiàn)處理磁盤(pán)操作命令的方法具體為b1、共享緩存操作模塊從共享緩存單元讀取與該寫(xiě)磁盤(pán)命令對(duì)應(yīng)的數(shù)據(jù)塊,送至異或計(jì)算模塊;b2、異或計(jì)算模塊對(duì)接收到的數(shù)據(jù)塊進(jìn)行異或計(jì)算,并將該寫(xiě)磁盤(pán)命令送至地址映射模塊;b3、地址映射模塊為待操作的數(shù)據(jù)塊計(jì)算出磁盤(pán)物理地址,并由磁盤(pán)操作模塊根據(jù)所述磁盤(pán)物理地址,將該數(shù)據(jù)塊保存到磁盤(pán)組中。
步驟b1中,共享緩存操作模塊讀取數(shù)據(jù)塊之后,該方法進(jìn)一步包括
b11、判斷寫(xiě)磁盤(pán)命令的類(lèi)型,如果為整個(gè)分條寫(xiě)則將該數(shù)據(jù)塊送至異或計(jì)算模塊,如果為部分分條寫(xiě)則執(zhí)行步驟b12;b12、地址映射模塊計(jì)算與該數(shù)據(jù)塊位于同一分條的其它分條單元的磁盤(pán)物理地址,并由磁盤(pán)操作模塊從磁盤(pán)組讀取其它分條單元的數(shù)據(jù)塊,再將整個(gè)分條送至異或計(jì)算模塊。
所述每個(gè)處理模塊保存上一級(jí)模塊送至的磁盤(pán)操作命令的方法具體為每個(gè)處理模塊都設(shè)置有讀緩沖隊(duì)列和寫(xiě)緩沖隊(duì)列;當(dāng)接收到上一級(jí)模塊發(fā)送的磁盤(pán)操作命令后,判斷所述磁盤(pán)操作命令為讀磁盤(pán)命令或?qū)懘疟P(pán)命令,如果為讀磁盤(pán)命令則保存在讀緩沖隊(duì)列;如果為寫(xiě)磁盤(pán)命令則保存在寫(xiě)緩沖隊(duì)列。
該方法進(jìn)一步包括取命令單元從處理器存儲(chǔ)單元獲取磁盤(pán)操作命令后,為每個(gè)磁盤(pán)操作命令生成控制信息塊,并將控制信息塊送至命令處理流水線(xiàn)進(jìn)行處理。
所述控制信息塊記錄有磁盤(pán)操作方向、待操作數(shù)據(jù)塊的起始地址和待操作數(shù)據(jù)塊的單元數(shù)量。
由上述技術(shù)方案可見(jiàn),本發(fā)明的這種磁盤(pán)接口處理器和磁盤(pán)操作命令的處理方法,將磁盤(pán)操作命令分解為順序執(zhí)行的子任務(wù),再將命令分析處理單元?jiǎng)澐譃楣蚕砭彺娌僮髂K、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊,每個(gè)子任務(wù)送至對(duì)應(yīng)的模塊進(jìn)行處理,形成一條四級(jí)流水線(xiàn),屬于不同磁盤(pán)操作命令的子任務(wù)可在該四級(jí)流水線(xiàn)上并行處理。
在磁盤(pán)接口處理器的流水線(xiàn)中,每個(gè)模塊獨(dú)立執(zhí)行磁盤(pán)操作命令的某個(gè)子任務(wù),每條磁盤(pán)操作命令不是在前一條命令執(zhí)行完畢才啟動(dòng),而是在負(fù)責(zé)執(zhí)行該命令的第一個(gè)模塊空閑時(shí)就會(huì)啟動(dòng)。在任務(wù)繁忙時(shí),多條磁盤(pán)操作命令能夠在磁盤(pán)接口處理器中同時(shí)運(yùn)行、并行處理,故該方法提高了磁盤(pán)接口的吞吐率、降低平均訪(fǎng)問(wèn)時(shí)間,使得復(fù)雜的預(yù)取和置換算法更好地應(yīng)用于磁盤(pán)陣列,提高磁盤(pán)存儲(chǔ)系統(tǒng)的整體性能。
圖1為現(xiàn)有技術(shù)中一種磁盤(pán)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖;圖2為現(xiàn)有技術(shù)中基于圖1的磁盤(pán)操作命令的處理流程;圖3為現(xiàn)有技術(shù)中另一種磁盤(pán)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖;圖4為現(xiàn)有技術(shù)中基于圖3的磁盤(pán)操作命令的處理流程;圖5為本發(fā)明一個(gè)較佳實(shí)施例中磁盤(pán)接口處理器的結(jié)構(gòu)圖;圖6為本發(fā)明一個(gè)較佳實(shí)施例中讀磁盤(pán)命令的處理流程;圖7為本發(fā)明一個(gè)較佳實(shí)施例中寫(xiě)磁盤(pán)命令的處理流程;圖8為本發(fā)明一個(gè)較佳實(shí)施例中多個(gè)磁盤(pán)操作命令的處理時(shí)序圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
流水線(xiàn)技術(shù)是計(jì)算機(jī)應(yīng)用中一種具備空間和時(shí)間并行性的技術(shù),該技術(shù)的基本原理是將順序處理的過(guò)程分解成若干個(gè)子處理過(guò)程,每個(gè)子處理過(guò)程由專(zhuān)用模塊完成,一個(gè)專(zhuān)用模塊的輸入即為另一個(gè)專(zhuān)用模塊的輸出。
基于上述技術(shù),本發(fā)明將磁盤(pán)操作命令分解為順序執(zhí)行的一個(gè)以上子任務(wù),并為每個(gè)子任務(wù)設(shè)置一個(gè)處理模塊,上述處理模塊逐級(jí)連接形成命令處理流水線(xiàn)。每個(gè)處理模塊設(shè)置有緩沖隊(duì)列,用于保存上一級(jí)模塊送至的磁盤(pán)操作命令;上述每個(gè)處理模塊根據(jù)自身的空閑情況,從緩沖隊(duì)列中順序獲取磁盤(pán)操作命令執(zhí)行,并在處理完畢后,將經(jīng)過(guò)自身處理的磁盤(pán)操作命令送至下一級(jí)模塊。
在本發(fā)明一個(gè)較佳實(shí)施例中,磁盤(pán)接口處理器的結(jié)構(gòu)如圖5所示,包括共享緩存操作模塊501、地址映射模塊502、異或計(jì)算模塊503和磁盤(pán)操作模塊504。這四個(gè)模塊兩兩相連,可以集成在同一芯片上,也可以用單獨(dú)的芯片分別實(shí)現(xiàn)。
圖5中,取命令單元105從處理器存儲(chǔ)單元102獲得磁盤(pán)操作命令后,將其送至共享緩存操作模塊501或地址映射模塊502。
所述共享緩存操作模塊501根據(jù)接收到的磁盤(pán)操作命令,從共享緩存單元103讀取待操作的數(shù)據(jù)塊,并將該磁盤(pán)操作命令送至地址映射模塊502;或者,將接收到的數(shù)據(jù)塊保存到共享緩存單元103。
所述地址映射模塊502負(fù)責(zé)為待操作的數(shù)據(jù)塊計(jì)算出磁盤(pán)物理地址,具體為將磁盤(pán)操作命令中攜帶的主機(jī)訪(fǎng)問(wèn)地址轉(zhuǎn)換為磁盤(pán)組的實(shí)際地址。比如,將邏輯塊地址LBA、邏輯單元號(hào)LUN分別轉(zhuǎn)換為磁盤(pán)號(hào)、柱面號(hào)、磁道號(hào)和扇區(qū)號(hào)等。
異或計(jì)算模塊503對(duì)待操作的數(shù)據(jù)塊進(jìn)行異或計(jì)算,并由磁盤(pán)操作模塊504將該數(shù)據(jù)塊保存到磁盤(pán)組104中;或者,磁盤(pán)操作模塊504根據(jù)所述磁盤(pán)物理地址從磁盤(pán)組104獲取上述待操作的數(shù)據(jù)塊,再由異或計(jì)算模塊503進(jìn)行異或計(jì)算后,送至共享緩存操作模塊501。
本發(fā)明中,處理磁盤(pán)操作命令的過(guò)程可以分解為一個(gè)以上子任務(wù)。較佳地,根據(jù)圖5所示的磁盤(pán)接口處理器,可以將磁盤(pán)操作命令分解為四個(gè)子任務(wù),并分別用共享緩存操作模塊、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊處理對(duì)應(yīng)的子任務(wù),形成四級(jí)的命令處理流水線(xiàn)。
對(duì)于不同類(lèi)型的磁盤(pán)操作命令,其子任務(wù)的執(zhí)行順序是不同的,則處理模塊之間的逐級(jí)連接關(guān)系也不相同。以下將磁盤(pán)操作命令分為讀磁盤(pán)命令和寫(xiě)磁盤(pán)命令這兩大類(lèi),并對(duì)其處理過(guò)程分別加以描述。
讀磁盤(pán)命令的執(zhí)行過(guò)程如圖6所示,包括以下步驟步驟601取命令單元接收到讀磁盤(pán)命令后,將其送至地址映射模塊進(jìn)行磁盤(pán)物理地址計(jì)算。
步驟602磁盤(pán)操作模塊根據(jù)地址映射模塊算出的磁盤(pán)物理地址,從磁盤(pán)組讀取待操作的數(shù)據(jù)塊。
步驟603判斷所述讀磁盤(pán)命令的模式,如果是非正常模式則執(zhí)行步驟604,如果是正常模式則執(zhí)行步驟605。
所述非正常模式包括降級(jí)模式和重建模式等。
步驟604將磁盤(pán)組讀取的數(shù)據(jù)塊送至異或計(jì)算模塊進(jìn)行異或計(jì)算。
步驟605將待操作的數(shù)據(jù)塊送至共享緩存操作模塊,由共享緩存操作模塊將接收到的數(shù)據(jù)塊寫(xiě)入共享緩存單元。
上述過(guò)程中,異或計(jì)算模塊的上一級(jí)模塊為磁盤(pán)操作模塊,下一級(jí)模塊為共享緩存操作模塊。
寫(xiě)磁盤(pán)命令的執(zhí)行過(guò)程如圖7所示,包括以下步驟步驟701取命令單元接收到寫(xiě)磁盤(pán)命令后,觸發(fā)共享緩存操作模塊從共享緩存單元讀取待操作的數(shù)據(jù)塊。
步驟702判斷所述寫(xiě)磁盤(pán)命令的類(lèi)型,如果為部分分條寫(xiě)則執(zhí)行步驟703,如果為整個(gè)分條寫(xiě)則將待操作的數(shù)據(jù)塊送至異或計(jì)算模塊,并執(zhí)行步驟705。
步驟703~704地址映射模塊進(jìn)行磁盤(pán)物理地址計(jì)算,并將上述地址送至磁盤(pán)操作模塊,由磁盤(pán)操作模塊從磁盤(pán)組讀取相應(yīng)的數(shù)據(jù)塊。
步驟705異或計(jì)算模塊對(duì)接收到的數(shù)據(jù)塊執(zhí)行異或計(jì)算。
步驟706~707地址映射模塊進(jìn)行磁盤(pán)物理地址計(jì)算,再由磁盤(pán)操作模塊根據(jù)計(jì)算出的磁盤(pán)物理地址將該數(shù)據(jù)塊保存到磁盤(pán)組。
上述過(guò)程中,共享緩存操作模塊、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊以磁盤(pán)接口處理器的時(shí)鐘周期為節(jié)拍執(zhí)行操作。下面以執(zhí)行整個(gè)分條寫(xiě)磁盤(pán)命令為例,具體說(shuō)明磁盤(pán)接口處理器同時(shí)執(zhí)行多條磁盤(pán)操作命令的過(guò)程。假設(shè)命令池中順序保存有A、B和C這三條整個(gè)分條寫(xiě)磁盤(pán)命令,則本實(shí)施例的處理時(shí)序見(jiàn)圖8,灰色方塊表明對(duì)應(yīng)模塊在對(duì)應(yīng)周期內(nèi)處于空閑狀態(tài)。
在第一個(gè)周期T1,共享緩存操作模塊啟動(dòng)工作,從自身的緩沖隊(duì)列獲得命令A(yù),執(zhí)行讀共享緩存操作。該周期中,其它模塊都不啟動(dòng)。
在第二個(gè)周期T2,共享緩存操作模塊執(zhí)行命令B的讀共享緩存操作;同時(shí),命令A(yù)從共享緩存操作模塊送至異或計(jì)算模塊的緩沖隊(duì)列進(jìn)行異或計(jì)算,以生成待操作數(shù)據(jù)塊的校驗(yàn)塊。在此期間,地址映射模塊和磁盤(pán)操作模塊不啟動(dòng)。
在第三個(gè)周期T3,執(zhí)行命令A(yù)的磁盤(pán)地址計(jì)算,執(zhí)行命令B的異或計(jì)算,同時(shí)執(zhí)行命令C的讀共享緩存操作。也就是說(shuō),磁盤(pán)接口處理器在該周期同時(shí)處理A、B和C三條命令,故該方法實(shí)現(xiàn)了磁盤(pán)操作命令的并行處理。
在第四個(gè)周期T4,對(duì)于共享緩存操作模塊而言,命令池中的所有命令都已經(jīng)執(zhí)行完畢,故該模塊停止工作,進(jìn)入空閑態(tài)。此時(shí),命令A(yù)被送至磁盤(pán)操作模塊進(jìn)行寫(xiě)磁盤(pán)操作。命令B被送至地址映射模塊進(jìn)行磁盤(pán)地址計(jì)算,命令C被送至異或計(jì)算模塊進(jìn)行異或計(jì)算。
以后的時(shí)鐘周期與前面四個(gè)周期的處理過(guò)程類(lèi)似,命令池中的命令按照子任務(wù)的執(zhí)行順序在流水線(xiàn)上得到處理,直至所有的命令都執(zhí)行完畢。這樣,磁盤(pán)接口處理器能夠并行處理多個(gè)磁盤(pán)操作命令,從而減少不必要的等待時(shí)間,提高磁盤(pán)接口處理器的吞吐率。
此外,取命令單元從命令池獲得磁盤(pán)操作命令后,可以為每條磁盤(pán)操作命令生成對(duì)應(yīng)的控制信息塊,并將該控制信息塊發(fā)送給命令處理流水線(xiàn)。所述控制信息塊采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),記錄以下內(nèi)容磁盤(pán)操作方向、待操作的分條單元(stripe unit)起始地址和待操作的分條單元數(shù)量。這樣,磁盤(pán)接口處理器的四個(gè)處理模塊就能夠根據(jù)控制信息塊執(zhí)行相應(yīng)操作。比如,地址映射模塊根據(jù)待操作的分條單元起始地址和待操作的分條單元數(shù)量,計(jì)算出待操作數(shù)據(jù)塊的磁盤(pán)物理地址。再比如,每個(gè)處理模塊都能夠根據(jù)磁盤(pán)操作方向,將自身處理后的控制信息塊正確地傳遞給下一級(jí)模塊。
磁盤(pán)接口處理器中,對(duì)命令分析執(zhí)行單元的處理模塊的劃分不限于圖5所示的方式。比如,可以將地址映射模塊和磁盤(pán)操作模塊合并成一個(gè)模塊。這樣,命令分析執(zhí)行單元中包括三個(gè)模塊,即共享緩存操作模塊、異或計(jì)算模塊,以及同時(shí)具有地址映射模塊和磁盤(pán)操作模塊這兩個(gè)模塊功能的磁盤(pán)處理模塊,形成三級(jí)的命令處理流水線(xiàn)。對(duì)應(yīng)地,在磁盤(pán)操作命令的處理流程中,磁盤(pán)地址計(jì)算和讀/寫(xiě)磁盤(pán)的操作也都由磁盤(pán)處理模塊完成,此處不再贅述。
此外,為了保證磁盤(pán)接口處理器能夠同時(shí)處理讀磁盤(pán)命令和寫(xiě)磁盤(pán)命令,還可以為每個(gè)模塊設(shè)置兩個(gè)緩沖隊(duì)列,分別是讀緩沖隊(duì)列和寫(xiě)緩沖隊(duì)列,形成單流水線(xiàn)雙數(shù)據(jù)流的磁盤(pán)接口處理器。其中,讀緩沖隊(duì)列保存的是磁盤(pán)操作方向?yàn)樽x方向的控制信息塊,寫(xiě)緩沖隊(duì)列保存的是磁盤(pán)操作方向?yàn)閷?xiě)方向的控制信息塊,這兩個(gè)隊(duì)列的長(zhǎng)度都是可變的。
進(jìn)一步地,還可以在磁盤(pán)存儲(chǔ)系統(tǒng)中設(shè)置兩條獨(dú)立的流水線(xiàn),將讀磁盤(pán)命令和寫(xiě)磁盤(pán)命令分開(kāi)執(zhí)行,這兩條流水線(xiàn)上的數(shù)據(jù)流方向相反,此處不再贅述。
由上述的實(shí)施例可見(jiàn),本發(fā)明的這種磁盤(pán)接口處理器和磁盤(pán)操作命令的處理方法,將磁盤(pán)操作命令分解為順序執(zhí)行的子任務(wù),設(shè)置對(duì)應(yīng)的處理模塊獨(dú)立執(zhí)行每個(gè)子任務(wù),每條磁盤(pán)操作命令不是在前一條命令執(zhí)行完畢才啟動(dòng),而是在負(fù)責(zé)執(zhí)行該命令的第一個(gè)模塊空閑時(shí)就會(huì)啟動(dòng)。這樣,多條磁盤(pán)操作命令能夠在磁盤(pán)接口處理器中同時(shí)運(yùn)行、并行處理,故該方法提高了磁盤(pán)接口的吞吐率、降低平均訪(fǎng)問(wèn)時(shí)間,提高磁盤(pán)存儲(chǔ)系統(tǒng)的整體性能。
權(quán)利要求
1.一種磁盤(pán)接口處理器,應(yīng)用于包含處理器存儲(chǔ)單元、共享緩存單元和磁盤(pán)組的磁盤(pán)存儲(chǔ)系統(tǒng)中,所述磁盤(pán)接口處理器包括取命令單元和命令分析執(zhí)行單元;其特征在于,所述命令分析執(zhí)行單元包含一個(gè)以上處理模塊,磁盤(pán)操作命令被分解為順序執(zhí)行的一個(gè)以上子任務(wù),每個(gè)處理模塊對(duì)應(yīng)于該磁盤(pán)操作命令的一個(gè)子任務(wù),上述一個(gè)以上處理模塊按照自身對(duì)應(yīng)的子任務(wù)的執(zhí)行順序,逐級(jí)連接形成命令處理流水線(xiàn);每個(gè)處理模塊設(shè)置有緩沖隊(duì)列,用于保存上一級(jí)模塊送至的磁盤(pán)操作命令;上述每個(gè)處理模塊根據(jù)自身的空閑情況,從緩沖隊(duì)列中順序獲取磁盤(pán)操作命令執(zhí)行,并在處理完畢后,將經(jīng)過(guò)自身處理的磁盤(pán)操作命令送至下一級(jí)模塊。
2.根據(jù)權(quán)利要求1所述的處理器,其特征在于,所述命令分析執(zhí)行單元?jiǎng)澐譃楣蚕砭彺娌僮髂K、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊,上述四個(gè)處理模塊兩兩相連;取命令單元從處理器存儲(chǔ)單元獲得磁盤(pán)操作命令,送至共享緩存操作模塊或地址映射模塊;共享緩存操作模塊根據(jù)接收到的磁盤(pán)操作命令,從共享緩存單元讀取待操作的數(shù)據(jù)塊,并將該磁盤(pán)操作命令送至地址映射模塊;或者,將接收到的數(shù)據(jù)塊保存到共享緩存單元;地址映射模塊為待操作的數(shù)據(jù)塊計(jì)算出磁盤(pán)物理地址;異或計(jì)算模塊對(duì)待操作的數(shù)據(jù)塊進(jìn)行異或計(jì)算,并由磁盤(pán)操作模塊將該數(shù)據(jù)塊保存到磁盤(pán)組中;或者,磁盤(pán)操作模塊根據(jù)所述磁盤(pán)物理地址從磁盤(pán)組獲取上述待操作的數(shù)據(jù)塊,再由異或計(jì)算模塊進(jìn)行異或計(jì)算后,送至共享緩存操作模塊。
3.一種磁盤(pán)操作命令的處理方法,應(yīng)用于磁盤(pán)存儲(chǔ)系統(tǒng),其特征在于,該方法包括將磁盤(pán)操作命令分解為順序執(zhí)行的一個(gè)以上子任務(wù),并預(yù)先為每個(gè)子任務(wù)設(shè)置一個(gè)對(duì)應(yīng)的處理模塊,形成命令處理流水線(xiàn),逐級(jí)處理該磁盤(pán)操作命令;流水線(xiàn)上的每個(gè)處理模塊中設(shè)置的緩沖隊(duì)列用于保存上一級(jí)模塊送至的磁盤(pán)操作命令;上述每個(gè)處理模塊根據(jù)自身的空閑情況,從緩沖隊(duì)列中順序獲取磁盤(pán)操作命令執(zhí)行,并在處理完畢后,將經(jīng)過(guò)自身處理的磁盤(pán)操作命令送至下一級(jí)模塊。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將磁盤(pán)操作命令分解為順序執(zhí)行的一個(gè)以上子任務(wù)并預(yù)先為每個(gè)子任務(wù)設(shè)置一個(gè)對(duì)應(yīng)的處理模塊的方法具體為將磁盤(pán)操作命令分解為四個(gè)子任務(wù),并分別設(shè)置共享緩存操作模塊、地址映射模塊、異或計(jì)算模塊和磁盤(pán)操作模塊處理對(duì)應(yīng)的子任務(wù),形成四級(jí)的命令處理流水線(xiàn)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述磁盤(pán)操作命令為讀磁盤(pán)命令時(shí),取命令單元將讀磁盤(pán)命令送至地址映射模塊;則所述命令處理流水線(xiàn)處理磁盤(pán)操作命令的方法具體為a1、地址映射模塊根據(jù)該讀磁盤(pán)命令中攜帶的待操作數(shù)據(jù)塊的起始地址和待操作數(shù)據(jù)塊的單元數(shù)量,計(jì)算出待操作數(shù)據(jù)塊的磁盤(pán)物理地址,并將該讀磁盤(pán)命令送至磁盤(pán)操作模塊;a2、磁盤(pán)操作模塊根據(jù)所述磁盤(pán)物理地址從磁盤(pán)組的對(duì)應(yīng)位置讀取待操作的數(shù)據(jù)塊,并將該數(shù)據(jù)塊送至共享緩存操作模塊,由共享緩存操作模塊將所述數(shù)據(jù)塊寫(xiě)入共享緩存單元。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟a2中,磁盤(pán)操作模塊讀取數(shù)據(jù)塊之后,該方法進(jìn)一步包括a21、判斷所述讀磁盤(pán)命令的模式,如果為正常模式則將數(shù)據(jù)塊送至共享緩存操作模塊,如果為非正常模式則執(zhí)行步驟a22;a22、將數(shù)據(jù)塊送至異或計(jì)算模塊進(jìn)行異或計(jì)算,并將經(jīng)過(guò)異或計(jì)算的數(shù)據(jù)塊送至共享緩存操作模塊。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述非正常模式包括重建模式和降級(jí)模式。
8.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述磁盤(pán)操作命令為寫(xiě)磁盤(pán)命令時(shí),取命令單元將寫(xiě)磁盤(pán)命令送至共享緩存操作模塊;則所述命令處理流水線(xiàn)處理磁盤(pán)操作命令的方法具體為b1、共享緩存操作模塊從共享緩存單元讀取與該寫(xiě)磁盤(pán)命令對(duì)應(yīng)的數(shù)據(jù)塊,送至異或計(jì)算模塊;b2、異或計(jì)算模塊對(duì)接收到的數(shù)據(jù)塊進(jìn)行異或計(jì)算,并將該寫(xiě)磁盤(pán)命令送至地址映射模塊;b3、地址映射模塊為待操作的數(shù)據(jù)塊計(jì)算出磁盤(pán)物理地址,并由磁盤(pán)操作模塊根據(jù)所述磁盤(pán)物理地址,將該數(shù)據(jù)塊保存到磁盤(pán)組中。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,步驟b1中,共享緩存操作模塊讀取數(shù)據(jù)塊之后,該方法進(jìn)一步包括b11、判斷寫(xiě)磁盤(pán)命令的類(lèi)型,如果為整個(gè)分條寫(xiě)則將該數(shù)據(jù)塊送至異或計(jì)算模塊,如果為部分分條寫(xiě)則執(zhí)行步驟b12;b12、地址映射模塊計(jì)算與該數(shù)據(jù)塊位于同一分條的其它分條單元的磁盤(pán)物理地址,并由磁盤(pán)操作模塊從磁盤(pán)組讀取其它分條單元的數(shù)據(jù)塊,再將整個(gè)分條送至異或計(jì)算模塊。
10.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述每個(gè)處理模塊保存上一級(jí)模塊送至的磁盤(pán)操作命令的方法具體為每個(gè)處理模塊都設(shè)置有讀緩沖隊(duì)列和寫(xiě)緩沖隊(duì)列;當(dāng)接收到上一級(jí)模塊發(fā)送的磁盤(pán)操作命令后,判斷所述磁盤(pán)操作命令為讀磁盤(pán)命令或?qū)懘疟P(pán)命令,如果為讀磁盤(pán)命令則保存在讀緩沖隊(duì)列;如果為寫(xiě)磁盤(pán)命令則保存在寫(xiě)緩沖隊(duì)列。
11.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法進(jìn)一步包括取命令單元從處理器存儲(chǔ)單元獲取磁盤(pán)操作命令后,為每個(gè)磁盤(pán)操作命令生成控制信息塊,并將控制信息塊送至命令處理流水線(xiàn)進(jìn)行處理。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述控制信息塊記錄有磁盤(pán)操作方向、待操作數(shù)據(jù)塊的起始地址和待操作數(shù)據(jù)塊的單元數(shù)量。
全文摘要
本發(fā)明公開(kāi)了一種磁盤(pán)接口處理器和磁盤(pán)操作命令的處理方法。該裝置和方法應(yīng)用于磁盤(pán)存儲(chǔ)系統(tǒng)中,具體為命令分析執(zhí)行單元包含一個(gè)以上處理模塊,磁盤(pán)操作命令被分解為順序執(zhí)行的一個(gè)以上子任務(wù),每個(gè)處理模塊對(duì)應(yīng)于該磁盤(pán)操作命令的一個(gè)子任務(wù),上述處理模塊按照子任務(wù)的執(zhí)行順序,逐級(jí)連接形成命令處理流水線(xiàn);每個(gè)處理模塊設(shè)置有緩沖隊(duì)列,用于保存上一級(jí)模塊送至的磁盤(pán)操作命令;上述每個(gè)處理模塊根據(jù)自身的空閑情況,從緩沖隊(duì)列中順序獲取磁盤(pán)操作命令執(zhí)行,并在處理完畢后,將經(jīng)過(guò)自身處理的磁盤(pán)操作命令送至下一級(jí)模塊。本發(fā)明的這種裝置和方法能夠提高磁盤(pán)接口的吞吐率、降低平均訪(fǎng)問(wèn)時(shí)間,從而提高磁盤(pán)存儲(chǔ)系統(tǒng)的整體性能。
文檔編號(hào)G06F12/08GK101046724SQ200610078539
公開(kāi)日2007年10月3日 申請(qǐng)日期2006年5月10日 優(yōu)先權(quán)日2006年5月10日
發(fā)明者王玉林, 吳小軍, 李廣軍, 林水生 申請(qǐng)人:華為技術(shù)有限公司, 電子科技大學(xué)