一種存儲(chǔ)控制器及其使用方法
【專利摘要】本發(fā)明提供了一種存儲(chǔ)控制器及其使用方法,包括各處理器發(fā)出存儲(chǔ)指令,處理器控制器接收處理器發(fā)送的存儲(chǔ)指令,并將其發(fā)送至交換器,由交換器逐一發(fā)送至硬盤控制器,硬盤控制器按照存儲(chǔ)指令中指示存儲(chǔ)的地址空間發(fā)送至硬盤,其中,所指示的地址空間是分配給發(fā)出存儲(chǔ)指令的處理器的地址空間。采用本發(fā)明的技術(shù)方案,能夠?qū)崿F(xiàn)在分時(shí)機(jī)制下保證多個(gè)處理器存儲(chǔ)指令復(fù)用同一實(shí)體存儲(chǔ)空間,從而實(shí)現(xiàn)了通過(guò)硬件方式實(shí)現(xiàn)多顆處理器共享同一實(shí)體存儲(chǔ)空間的目的。
【專利說(shuō)明】一種存儲(chǔ)控制器及其使用方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種存儲(chǔ)控制器及其使用方法。
【背景技術(shù)】
[0002] 隨著云計(jì)算技術(shù)的發(fā)展,虛擬化技術(shù)作為支撐云計(jì)算的核心技術(shù),其應(yīng)用模式已 經(jīng)從最初的服務(wù)器整合虛擬化,轉(zhuǎn)變到現(xiàn)在的桌面虛擬化,網(wǎng)絡(luò)虛擬化,存儲(chǔ)虛擬化等等。 虛擬化技術(shù)在云計(jì)算領(lǐng)域的技術(shù)價(jià)值與應(yīng)用空間正在不斷擴(kuò)展。
[0003] 目前現(xiàn)有技術(shù)中,是通過(guò)軟件的方式,將存儲(chǔ)空間進(jìn)行邏輯的分隔,組成不同的邏 輯存儲(chǔ)空間。
[0004] 現(xiàn)有技術(shù)的不足在于:需要對(duì)操作系統(tǒng)以及軟件做改動(dòng)才能實(shí)現(xiàn)為不同的處理器 分配不同的地址空間。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供了一種存儲(chǔ)控制器及其使用方法,用以通過(guò)硬件方式實(shí)現(xiàn)多個(gè)處理器 存儲(chǔ)指令復(fù)用同一實(shí)體存儲(chǔ)空間。
[0006] 本發(fā)明提供了一種存儲(chǔ)控制器,包括:至少一個(gè)處理器控制器、交換器、以及硬盤 控制器;其中:
[0007] 各處理器控制器,用于分別與其相對(duì)應(yīng)的處理器相連,接收處理器發(fā)送的存儲(chǔ)指 令,并將其發(fā)送至交換器;
[0008] 交換器一端與各處理器控制器相連,另一端與硬盤控制器相連,用于將處理器控 制器發(fā)來(lái)的存儲(chǔ)指令逐一發(fā)送至硬盤控制器,以及將硬盤控制器發(fā)來(lái)的的響應(yīng)結(jié)果發(fā)送至 相應(yīng)的處理器控制器;
[0009] 硬盤控制器,用于與硬盤相連,接收交換器發(fā)來(lái)的存儲(chǔ)指令并發(fā)送至硬盤后接收 硬盤的響應(yīng)結(jié)果。
[0010] 本發(fā)明還提供了一種存儲(chǔ)控制器的使用方法,包括:
[0011] 處理器控制器接收其對(duì)應(yīng)的處理器發(fā)送的存儲(chǔ)指令,并將該存儲(chǔ)指令發(fā)送至交換 器;
[0012] 交換器將處理器控制器發(fā)來(lái)的存儲(chǔ)指令逐一發(fā)送至硬盤控制器;
[0013] 硬盤控制器在接收到交換器發(fā)來(lái)的存儲(chǔ)指令時(shí),在存儲(chǔ)指令中指示存儲(chǔ)的地址空 間后發(fā)送至硬盤,其中,所指示的地址空間是分配給發(fā)出存儲(chǔ)指令的處理器的地址空間。
[0014] 本發(fā)明的有益效果是:
[0015] 本發(fā)明實(shí)施例提供的技術(shù)方案中,對(duì)于各處理器發(fā)出的存儲(chǔ)指令,由交換器逐一 發(fā)送至硬盤控制器,而硬盤控制器在存儲(chǔ)指令中指示存儲(chǔ)的地址空間后發(fā)送至硬盤,其中, 所指示的地址空間是分配給發(fā)出存儲(chǔ)指令的處理器的地址空間。由于該地址空間是由硬盤 控制器預(yù)先為各處理器在實(shí)體存儲(chǔ)空間上分配的,這樣,相應(yīng)的存儲(chǔ)指令實(shí)質(zhì)上是在專屬 于發(fā)出存儲(chǔ)指令的該處理器的地址空間上執(zhí)行的,而硬盤控制器處理的存儲(chǔ)指令是經(jīng)交換 器對(duì)各存儲(chǔ)指令的仲裁協(xié)調(diào)控制后逐一發(fā)出的,這樣,在分時(shí)機(jī)制下保證了多個(gè)處理器存 儲(chǔ)指令復(fù)用同一實(shí)體存儲(chǔ)空間,從而實(shí)現(xiàn)了通過(guò)硬件方式實(shí)現(xiàn)多顆處理器共享同一實(shí)體存 儲(chǔ)空間的目的。
【專利附圖】
【附圖說(shuō)明】
[0016] 下面將參照附圖描述本發(fā)明的具體實(shí)施例,其中:
[0017] 圖1為本發(fā)明實(shí)施例中存儲(chǔ)控制器的實(shí)施結(jié)構(gòu)示意圖。
[0018] 圖2為本發(fā)明實(shí)施例中存儲(chǔ)控制器的使用流程示意圖。
【具體實(shí)施方式】
[0019] 為了使本發(fā)明的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明的示例性 實(shí)施例進(jìn)行進(jìn)一步詳細(xì)的說(shuō)明,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是 所有實(shí)施例的窮舉。
[0020] 發(fā)明人在發(fā)明過(guò)程中注意到:
[0021]目前現(xiàn)有技術(shù)中,如果要實(shí)現(xiàn)共享同一實(shí)體存儲(chǔ)空間,即為不同的處理器分配不 同的地址空間,通常是通過(guò)軟件的方式,將存儲(chǔ)空間進(jìn)行邏輯的分隔,組成不同的邏輯存儲(chǔ) 空間。這樣的方式需要對(duì)操作系統(tǒng)以及軟件做一些改動(dòng)。
[0022] 這種方案的不足在于:對(duì)操作系統(tǒng)及軟件的改變,必然會(huì)帶來(lái)一些兼容性、穩(wěn)定性 的問(wèn)題,后期維護(hù)及升級(jí)也需投入較大的人力成本。現(xiàn)有技術(shù)中尚未有利用硬件的方式實(shí) 現(xiàn)共享同一實(shí)體存儲(chǔ)空間的方案。
[0023] 針對(duì)上述不足,本發(fā)明實(shí)施例中提供了一種存儲(chǔ)控制器及其使用方法,下面進(jìn)行 說(shuō)明。
[0024] 圖1為本發(fā)明實(shí)施例中存儲(chǔ)控制器的實(shí)施結(jié)構(gòu)示意圖,如圖所示,可以包括至少 一個(gè)處理器控制器1011、交換器102、以及硬盤控制器103 ;其中:
[0025] 各處理器控制器1011,用于分別與其相對(duì)應(yīng)的處理器相連,接收處理器發(fā)送的存 儲(chǔ)指令,并將其發(fā)送至交換器102 ;
[0026] 交換器102 -端與各處理器控制器1011相連,另一端與硬盤控制器103相連,用 于將處理器控制器1011發(fā)來(lái)的存儲(chǔ)指令逐一發(fā)送至硬盤控制器103 ;
[0027] 硬盤控制器103,用于與硬盤相連,在接收到交換器102發(fā)來(lái)的存儲(chǔ)指令時(shí),在存 儲(chǔ)指令中指示存儲(chǔ)的地址空間后發(fā)送至硬盤,其中,所指示的地址空間是分配給發(fā)出存儲(chǔ) 指令的處理器的地址空間。
[0028] 具體實(shí)施中,硬盤控制器103可以預(yù)先為各處理器在實(shí)體存儲(chǔ)空間上分配地址空 間,這樣,相應(yīng)的存儲(chǔ)指令實(shí)質(zhì)上是在專屬于發(fā)出存儲(chǔ)指令的該處理器的地址空間上執(zhí)行 的。
[0029] 實(shí)施中,處理器控制器1011還可以用于在接收到處理器發(fā)送的存儲(chǔ)指令時(shí),將存 儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至交換器102。
[0030] 具體實(shí)施中,按照協(xié)議規(guī)范,處理器和硬盤之間是串行進(jìn)行數(shù)據(jù)交互的。串行的數(shù) 據(jù)一來(lái)頻率太高無(wú)法處理,再有就是都經(jīng)過(guò)了編碼和加擾操作,所以從處理器接收到的存 儲(chǔ)指令可能無(wú)法直接進(jìn)行處理,因此,需對(duì)接收到的存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,將串行數(shù)據(jù)變 為并行數(shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及解擾操作,這樣才能得到可處理的存儲(chǔ)指令,然 后將其發(fā)送至交換器102。
[0031] 實(shí)施中,處理器控制器1011還可以用于對(duì)處理器發(fā)送的存儲(chǔ)指令進(jìn)行標(biāo)識(shí):
[0032] 具體實(shí)施中,處理器控制器1011可以對(duì)接收到的存儲(chǔ)指令通過(guò)打包的方式來(lái)進(jìn) 行標(biāo)識(shí),其目的是是為了標(biāo)記是由哪個(gè)處理器發(fā)送的指令。
[0033] 實(shí)施中,硬盤控制器103還可以用于根據(jù)標(biāo)識(shí)確定發(fā)出存儲(chǔ)指令的處理器的地址 空間。
[0034] 具體實(shí)施中,標(biāo)識(shí)過(guò)的存儲(chǔ)指令傳送到硬盤控制器103后,硬盤控制器103就可以 知道是哪個(gè)處理器的存儲(chǔ)指令,及對(duì)應(yīng)哪個(gè)地址空間。
[0035] 實(shí)施中,處理器控制器1011還可以用于在硬盤控制器103不空閑時(shí),暫存存儲(chǔ)指 令,在硬盤控制器103空閑時(shí)將其發(fā)送至交換器102。
[0036] 具體實(shí)施中,處理器控制器1011可能并不是接收到存儲(chǔ)指令立馬發(fā)送給交換器 102,而要進(jìn)行暫存。暫存的作用是等待硬盤控制器103空閑時(shí),將暫存的存儲(chǔ)指令發(fā)往交 換器102。
[0037] 實(shí)施中,硬盤控制器103還可以用于通過(guò)修改存儲(chǔ)指令的地址域,將其映射到分 配給該處理器的地址空間的方式來(lái)在存儲(chǔ)指令中指示存儲(chǔ)的地址空間。
[0038] 實(shí)施中,硬盤控制器103還可以用于在接收到交換器102發(fā)來(lái)的存儲(chǔ)指令時(shí),將存 儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/ 10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至硬盤。
[0039] 具體實(shí)施中,如前所述,按照協(xié)議規(guī)范,處理器和硬盤之間是串行進(jìn)行數(shù)據(jù)交互 的,因此,可以將存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn) 換以及加擾操作,這樣得到硬盤可處理的存儲(chǔ)指令,然后發(fā)送至硬盤。
[0040] 實(shí)施中,硬盤控制器103還可以用于在接收到硬盤發(fā)來(lái)的響應(yīng)結(jié)果時(shí),將響應(yīng)結(jié) 果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至交換器102。
[0041] 具體實(shí)施中,按照協(xié)議規(guī)范,處理器和硬盤之間是串行進(jìn)行數(shù)據(jù)交互的。串行的數(shù) 據(jù)一來(lái)頻率太高無(wú)法處理,再有就是都經(jīng)過(guò)了編碼和加擾操作,所以從硬盤接收到的響應(yīng) 結(jié)果可能無(wú)法直接進(jìn)行處理,因此,需對(duì)接收到的響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,將串行數(shù)據(jù)變?yōu)?并行數(shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及解擾操作,這樣才能得到可處理的響應(yīng)結(jié)果,然后 將其發(fā)送至交換器102。
[0042] 實(shí)施中,硬盤控制器103還可以用于通過(guò)修改響應(yīng)結(jié)果的地址域,將其反映射到 分配給該處理器的地址空間的方式來(lái)在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
[0043] 具體實(shí)施中,硬盤控制器103將接收到的存儲(chǔ)指令中的地址域進(jìn)行地址映射后發(fā) 送給硬盤,硬盤本身會(huì)將響應(yīng)結(jié)果傳回給硬盤控制器103,然后硬盤控制器103在對(duì)這個(gè)響 應(yīng)結(jié)果中的地址域修改后進(jìn)行地址反映射,再傳給交換器102。其中,地址映射與地址反映 射是一個(gè)互為相反的過(guò)程,可以都在硬盤控制器103上完成。
[0044] 實(shí)施中,硬盤控制器103還可以用于在處理器控制器1011不空閑時(shí),暫存響應(yīng)結(jié) 果,在處理器控制器1011空閑時(shí)將其發(fā)送至交換器102。
[0045] 實(shí)施中,硬盤控制器103還可以用于對(duì)硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識(shí);交換器102 還可以用于根據(jù)標(biāo)識(shí)確定接收響應(yīng)結(jié)果的處理器控制器1011。
[0046] 具體實(shí)施中,每個(gè)處理器控制器1011對(duì)發(fā)送給交換器102的存儲(chǔ)指令都會(huì)進(jìn)行標(biāo) 識(shí),使硬盤控制器103得知是哪個(gè)處理器的指令,硬盤控制器103根據(jù)這個(gè)標(biāo)識(shí)除了進(jìn)行地 址映射與地址反映射外,還會(huì)根據(jù)這個(gè)標(biāo)識(shí),將修改后的響應(yīng)結(jié)果通過(guò)交換器102發(fā)送給 對(duì)應(yīng)的處理器。
[0047] 實(shí)施中,處理器控制器1011還可以用于在接收到交換器102發(fā)送的響應(yīng)結(jié)果時(shí), 將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送至處理器。
[0048] 實(shí)施中,交換器102可以根據(jù)存儲(chǔ)指令和Matrix Arbiter算法對(duì)存儲(chǔ)指令進(jìn)行仲 裁,按照該仲裁結(jié)果逐一發(fā)送至硬盤控制器103。
[0049] 具體實(shí)施中,交換器102可以進(jìn)一步包括更新單元、讀取單元、判斷單元、第一執(zhí) 行單元、第二執(zhí)行單元、以及第三執(zhí)行單元,其中 :
[0050] 更新單元,用于更新Matrix Arbiter算法中的仲裁矩陣;
[0051] 讀取單元,用于讀取處理器控制器1011發(fā)來(lái)的第一幀;
[0052] 判斷單元,用于判斷第一巾貞是否為PIO Data In指令,若為PIO Data In指令在轉(zhuǎn)發(fā) 完畢后進(jìn)入PIOSetupFIS狀態(tài),若為其他指令,則進(jìn)入RegFIS狀態(tài);
[0053] 第一執(zhí)行單元,用于對(duì)進(jìn)入RegFIS狀態(tài)的存儲(chǔ)指令,等待Register FIS-Device to Host幀,當(dāng)收到該幀并接收完畢后,返回初始狀態(tài)。
[0054] 第二執(zhí)行單元,用于對(duì)進(jìn)入PIOSetupFIS狀態(tài)的存儲(chǔ)指令,接收最后一幀,且在該 幀E_STATUS域中BSY和DRQ位均為0時(shí),進(jìn)入DataFIS狀態(tài);
[0055] 第三執(zhí)行單元,用于對(duì)進(jìn)入DataFIS狀態(tài)的存儲(chǔ)指令,接收最后一幀完畢后,返回 初始狀態(tài);其中,在返回初始狀態(tài)時(shí),交換器開(kāi)始接收多個(gè)處理器發(fā)送的SATA指令,并進(jìn)行 下一次仲裁。
[0056] 具體實(shí)施中,根據(jù)存儲(chǔ)指令和Matrix Arbiter算法對(duì)各存儲(chǔ)指令進(jìn)行仲裁,仲裁 后監(jiān)控存儲(chǔ)指令的發(fā)送和響應(yīng)過(guò)程。保證了在分時(shí)機(jī)制下不同處理器的存儲(chǔ)指令復(fù)用同一 實(shí)體存儲(chǔ)空間,避免了不同處理器的指令同時(shí)發(fā)往同一塊硬盤而帶來(lái)的不可預(yù)知的錯(cuò)誤。
[0057] 為了描述的方便,以上所述存儲(chǔ)控制器的各部分以功能分為各種部件或單元分別 描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各部件或單元的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí) 現(xiàn)。
[0058] 下面結(jié)合一個(gè)具體的實(shí)施示例來(lái)進(jìn)行說(shuō)明。
[0059] 硬盤控制器103預(yù)先為各處理器在實(shí)體存儲(chǔ)空間上分配地址空間。存儲(chǔ)控制器包 含多個(gè)處理器控制器,各處理器控制器與其對(duì)應(yīng)的處理器相連,當(dāng)處理器控制器1011、處理 器控制器1012、處理器控制器1013……處理器控制器101N接收到其對(duì)應(yīng)處理器發(fā)來(lái)的存 儲(chǔ)指令時(shí),首先將存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作,得到可處理的存 儲(chǔ)指令;然后通過(guò)打包的方式對(duì)存儲(chǔ)指令進(jìn)行標(biāo)識(shí),來(lái)標(biāo)記是由哪個(gè)處理器發(fā)送的存儲(chǔ)指 令;其次當(dāng)硬盤控制器103不空閑時(shí),暫存存儲(chǔ)指令;當(dāng)硬盤控制器103空閑時(shí),將該存儲(chǔ) 指令發(fā)送至交換器102 ;接著,交換器102根據(jù)存儲(chǔ)指令和Matrix Arbiter算法對(duì)處理器控 制器1011、處理器控制器1012、處理器控制器1013……處理器控制器101N發(fā)來(lái)的存儲(chǔ)指令 進(jìn)行仲裁,按照該仲裁結(jié)果逐一發(fā)送至硬盤控制器103 ;然后硬盤控制器103根據(jù)標(biāo)識(shí)確定 發(fā)出存儲(chǔ)指令的處理器的地址空間;通過(guò)修改存儲(chǔ)指令的地址域,將其映射到分配給該處 理器的地址空間的方式來(lái)在存儲(chǔ)指令中指示存儲(chǔ)的地址空間;找到存儲(chǔ)的地址空間后,將 存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后發(fā)送至硬盤。
[0060] 硬盤接收到存儲(chǔ)指令后,返回一個(gè)響應(yīng)結(jié)果。首先,硬盤控制器103在接收到硬 盤發(fā)來(lái)的響應(yīng)結(jié)果時(shí),將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作,變?yōu)榭?處理的響應(yīng)結(jié)果;然后通過(guò)對(duì)這個(gè)響應(yīng)結(jié)果中的地址域修改后進(jìn)行地址反映射,其中,地址 映射與地址反映射是一個(gè)互為相反的過(guò)程;其次對(duì)硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識(shí),交換器 102根據(jù)標(biāo)識(shí)確定接收響應(yīng)結(jié)果的處理器控制器1011 ;接著,在處理器控制器1011或處理 器控制器1012或處理器控制器1013……或處理器控制器101N不空閑時(shí),暫存響應(yīng)結(jié)果, 在其空閑時(shí)將其發(fā)送至交換器102 ;處理器控制器1011、處理器控制器1012、處理器控制器 1013……處理器控制器101N在接收到交換器102發(fā)送的響應(yīng)結(jié)果時(shí),將響應(yīng)結(jié)果進(jìn)行串并 轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送至對(duì)應(yīng)的處理器。至此完成一次完整的交 互。
[0061] 基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種存儲(chǔ)控制器的使用方法,由于 該使用方法的原理與一種存儲(chǔ)控制器相似,因此該方法的實(shí)施可以參見(jiàn)存儲(chǔ)控制器的實(shí) 施,重復(fù)之處不再贅述。
[0062] 圖2為本發(fā)明實(shí)施例中存儲(chǔ)控制器的使用流程示意圖,如圖所示,可以包括如下 步驟:
[0063] 步驟201、處理器控制器1011接收其對(duì)應(yīng)的處理器發(fā)送的存儲(chǔ)指令,并將該存儲(chǔ) 指令發(fā)送至交換器102 ;
[0064] 步驟202、交換器102將處理器控制器1011發(fā)來(lái)的存儲(chǔ)指令逐一發(fā)送至硬盤控制 器 103 ;
[0065] 步驟203、硬盤控制器103在接收到交換器102發(fā)來(lái)的存儲(chǔ)指令時(shí),在存儲(chǔ)指令中 指示存儲(chǔ)的地址空間后發(fā)送至硬盤,其中,所指示的地址空間是分配給發(fā)出存儲(chǔ)指令的處 理器的地址空間。
[0066] 進(jìn)一步的,在處理器控制器1011接收到處理器發(fā)送的存儲(chǔ)指令時(shí),可以將存儲(chǔ)指 令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至交換器102。
[0067] 進(jìn)一步的,在處理器控制器1011接收到處理器發(fā)送的存儲(chǔ)指令時(shí),可以對(duì)處理器 發(fā)送的存儲(chǔ)指令進(jìn)行標(biāo)識(shí);
[0068] 在硬盤控制器103接收到硬盤發(fā)送的響應(yīng)結(jié)果時(shí),根據(jù)所述標(biāo)識(shí)確定發(fā)出存儲(chǔ)指 令的處理器的地址空間。
[0069] 進(jìn)一步的,在處理器控制器1011接收到處理器發(fā)送的存儲(chǔ)指令時(shí),可以在硬盤控 制器103不空閑時(shí),暫存存儲(chǔ)指令,在硬盤控制器103空閑時(shí)將其發(fā)送至交換器102。
[0070] 進(jìn)一步的,在硬盤控制器103在接收到交換器102發(fā)來(lái)的存儲(chǔ)指令時(shí),可以通過(guò)修 改存儲(chǔ)指令的地址域的方式來(lái)在存儲(chǔ)指令中指示存儲(chǔ)的地址空間,將存儲(chǔ)指令映射到分配 給該處理器的地址空間。
[0071] 進(jìn)一步的,在硬盤控制器103接收到交換器102發(fā)來(lái)的存儲(chǔ)指令時(shí),可以將存儲(chǔ)指 令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至硬盤。
[0072] 進(jìn)一步的,在硬盤控制器103將存儲(chǔ)指令發(fā)送至硬盤后,接收硬盤發(fā)來(lái)的響應(yīng)結(jié) 果,可以將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至交換器102。
[0073] 進(jìn)一步的,在硬盤控制器103接收到硬盤發(fā)來(lái)的響應(yīng)結(jié)果時(shí),可以通過(guò)修改響應(yīng) 結(jié)果的地址域,將其反映射到分配給該處理器的地址空間的方式來(lái)在響應(yīng)結(jié)果中指示響應(yīng) 的地址空間。
[0074] 進(jìn)一步的,在硬盤控制器103接收到硬盤發(fā)來(lái)的響應(yīng)結(jié)果時(shí),可以在處理器控制 器1011不空閑時(shí),暫存響應(yīng)結(jié)果,在處理器控制器1011空閑時(shí)將其發(fā)送至交換器102。
[0075] 進(jìn)一步的,在硬盤控制器103接收到硬盤發(fā)來(lái)的響應(yīng)結(jié)果時(shí),可以對(duì)硬盤發(fā)送的 響應(yīng)結(jié)果進(jìn)行標(biāo)識(shí);
[0076] 在處理器控制器1011接收交換器102發(fā)送的響應(yīng)結(jié)果時(shí),可以根據(jù)標(biāo)識(shí)確定接收 響應(yīng)結(jié)果的處理器控制器1011。
[0077] 進(jìn)一步的,在處理器控制器1011接收到交換器102發(fā)送的響應(yīng)結(jié)果時(shí),可以將響 應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/ 10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送至處理器。
[0078] 進(jìn)一步的,在交換器102將存儲(chǔ)指令逐一發(fā)送至硬盤控制器103時(shí),可以根據(jù)存儲(chǔ) 指令和Matrix Arbiter算法對(duì)存儲(chǔ)指令進(jìn)行仲裁,按照該仲裁結(jié)果逐一發(fā)送至硬盤控制器 103。
[0079] 進(jìn)一步的,在交換器對(duì)存儲(chǔ)指令進(jìn)行仲裁后,可以進(jìn)行以下步驟:
[0080] 更新Matrix Arbiter算法中的仲裁矩陣;
[0081] 讀取處理器控制器1011發(fā)來(lái)的第一幀;
[0082] 判斷第一幀是否為PIO Data In指令,若為PIO Data In指令,在轉(zhuǎn)發(fā)完畢后進(jìn)入 PIOSetupFIS狀態(tài),若為其他指令,則進(jìn)入RegFIS狀態(tài);
[0083] 對(duì)進(jìn)入RegFIS狀態(tài)的存儲(chǔ)指令,等待Register FIS-Device to Host巾貞,當(dāng)收到該 幀并接收完畢后,返回初始狀態(tài);
[0084] 對(duì)進(jìn)入PIOSetupFIS狀態(tài)的存儲(chǔ)指令,接收完最后一幀,且在該幀E_STATUS域中 BSY和DRQ位均為0時(shí),進(jìn)入DataFIS狀態(tài);
[0085] 對(duì)進(jìn)入DataFIS狀態(tài)的存儲(chǔ)指令,接收最后一個(gè)數(shù)據(jù)幀完畢后,返回初始狀態(tài);其 中,在返回初始狀態(tài)時(shí),開(kāi)始接收多個(gè)處理器發(fā)送的SATA指令,并進(jìn)行下一次仲裁。
[0086] 實(shí)施中,存儲(chǔ)指令和響應(yīng)結(jié)果都可以是以幀的形式存在。
[0087] 進(jìn)一步的,在物理層對(duì)存儲(chǔ)指令或響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/ 10b編碼轉(zhuǎn)換。
[0088] 進(jìn)一步的,在鏈路層對(duì)存儲(chǔ)指令或響應(yīng)結(jié)果進(jìn)行加解擾操作。
[0089] 進(jìn)一步的,在鏈路層對(duì)存儲(chǔ)指令進(jìn)行CRC校驗(yàn)。
[0090] 進(jìn)一步的,在鏈路層對(duì)存儲(chǔ)指令的發(fā)送及接收進(jìn)行流控。
[0091] 進(jìn)一步的,在傳輸層上,接收到從鏈路層發(fā)來(lái)的幀;檢查幀頭以及長(zhǎng)度,若丟棄錯(cuò) 誤的巾貞時(shí),告知鏈路層。
[0092] 進(jìn)一步的,在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來(lái)的幀;檢查幀頭以及長(zhǎng)度,若丟棄錯(cuò) 誤的幀時(shí),告知網(wǎng)絡(luò)層。
[0093] 進(jìn)一步的,在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來(lái)的存儲(chǔ)指令;
[0094] 將存儲(chǔ)指令按照指令中指示存儲(chǔ)的地址空間,映射到分配給該處理器的地址空 間。
[0095] 進(jìn)一步的,在傳輸層上,接收到從鏈路層發(fā)來(lái)的響應(yīng)結(jié)果;
[0096] 將響應(yīng)結(jié)果按照地址空間的標(biāo)識(shí),映射到發(fā)出響應(yīng)結(jié)果的硬盤對(duì)應(yīng)的處理器的地 址空間。
[0097] 進(jìn)一步的,在網(wǎng)絡(luò)層上,對(duì)傳輸層接收到的存儲(chǔ)指令進(jìn)行標(biāo)識(shí);發(fā)送至交換器 102。
[0098] 進(jìn)一步的,在網(wǎng)絡(luò)層上,接收到從交換器102發(fā)來(lái)的響應(yīng)結(jié)果;發(fā)送至傳輸層。
[0099] 本發(fā)明實(shí)施例提供的存儲(chǔ)控制器及其使用方法,通過(guò)由硬盤控制器預(yù)先為各處理 器在實(shí)體上分配存儲(chǔ)空間,交換器按排序等方式逐一發(fā)送存儲(chǔ)指令至硬盤控制器,在分時(shí) 機(jī)制下保證了多個(gè)處理器存儲(chǔ)指令復(fù)用同一實(shí)體存儲(chǔ)空間,從而實(shí)現(xiàn)了通過(guò)硬件方式實(shí)現(xiàn) 多顆處理器共享同一實(shí)體存儲(chǔ)空間的目的。
[0100] 以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其進(jìn)行限制。因此,在不背離本 發(fā)明的精神及其實(shí)質(zhì)的情況下,本領(lǐng)域技術(shù)人員可作出各種改變、替換和變型。很顯然,但 這些改變、替換和變型都應(yīng)涵蓋于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種存儲(chǔ)控制器,其特征在于,所述存儲(chǔ)控制器包括:至少一個(gè)處理器控制器、交換 器、以及硬盤控制器;其中: 各處理器控制器,用于分別與其相對(duì)應(yīng)的處理器相連,接收處理器發(fā)送的存儲(chǔ)指令,并 將其發(fā)送至交換器; 交換器一端與各處理器控制器相連,另一端與硬盤控制器相連,用于將處理器控制器 發(fā)來(lái)的存儲(chǔ)指令逐一發(fā)送至硬盤控制器; 硬盤控制器,用于與硬盤相連,在接收到交換器發(fā)來(lái)的存儲(chǔ)指令時(shí),在存儲(chǔ)指令中指示 存儲(chǔ)的地址空間后發(fā)送至硬盤,其中,所指示的地址空間是分配給發(fā)出存儲(chǔ)指令的處理器 的地址空間。
2. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述處理器控制器進(jìn)一步用于在接 收到處理器發(fā)送的存儲(chǔ)指令時(shí),將存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作 后,將其發(fā)送至交換器。
3. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述處理器控制器進(jìn)一步用于對(duì)處 理器發(fā)送的存儲(chǔ)指令進(jìn)行標(biāo)識(shí); 所述硬盤控制器進(jìn)一步用于根據(jù)所述標(biāo)識(shí)確定發(fā)出存儲(chǔ)指令的處理器的地址空間。
4. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述處理器控制器進(jìn)一步用于在硬 盤控制器不空閑時(shí),暫存存儲(chǔ)指令,在硬盤控制器空閑時(shí)將其發(fā)送至交換器。
5. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述硬盤控制器進(jìn)一步用于通過(guò)修 改存儲(chǔ)指令的地址域,將其映射到分配給該處理器的地址空間的方式來(lái)在存儲(chǔ)指令中指示 存儲(chǔ)的地址空間。
6. 如權(quán)利要求5所述的存儲(chǔ)控制器,其特征在于,所述硬盤控制器進(jìn)一步用于在接收 到交換器發(fā)來(lái)的存儲(chǔ)指令時(shí),將存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后, 發(fā)送至硬盤。
7. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述硬盤控制器進(jìn)一步用于在接收 到硬盤發(fā)來(lái)的響應(yīng)結(jié)果時(shí),將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā) 送至交換器。
8. 如權(quán)利要求7所述的存儲(chǔ)控制器,其特征在于,所述硬盤控制器進(jìn)一步用于通過(guò)修 改響應(yīng)結(jié)果的地址域,將其反映射到分配給該處理器的地址空間的方式來(lái)在響應(yīng)結(jié)果中指 示響應(yīng)的地址空間。
9. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述硬盤控制器進(jìn)一步用于在處理 器控制器不空閑時(shí),暫存響應(yīng)結(jié)果,在處理器控制器空閑時(shí)將其發(fā)送至交換器。
10. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述硬盤控制器進(jìn)一步用于對(duì)硬盤 發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識(shí); 所述交換器進(jìn)一步用于根據(jù)所述標(biāo)識(shí)確定接收響應(yīng)結(jié)果的處理器控制器。
11. 如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述處理器控制器進(jìn)一步用于在接 收到交換器發(fā)送的響應(yīng)結(jié)果時(shí),將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作 后,將其發(fā)送至處理器。
12. 如權(quán)利要求1至11任一所述的存儲(chǔ)控制器,其特征在于,所述交換器根據(jù)存儲(chǔ)指令 和Matrix Arbiter算法對(duì)存儲(chǔ)指令進(jìn)行仲裁,按照該仲裁結(jié)果逐一發(fā)送至硬盤控制器。
13. 如權(quán)利要求12所述的存儲(chǔ)控制器,其特征在于,所述交換器進(jìn)一步包括更新單元、 讀取單元、判斷單元、第一執(zhí)行單元、第二執(zhí)行單元、以及第三執(zhí)行單元,其中: 更新單元,用于更新Matrix Arbiter算法中的仲裁矩陣; 讀取單元,用于讀取處理器控制器發(fā)來(lái)的第一幀; 判斷單元,用于判斷第一幀是否為PIO Data In指令,若為PIO Data In指令在轉(zhuǎn)發(fā)完畢 后進(jìn)入PIOSetupFIS狀態(tài),若為其他指令,則進(jìn)入RegFIS狀態(tài); 第一執(zhí)行單元,用于對(duì)進(jìn)入RegFIS狀態(tài)的存儲(chǔ)指令,等待Register FIS-Device to Host幀,當(dāng)收到該幀并接收完畢后,返回初始狀態(tài)。 第二執(zhí)行單元,用于對(duì)進(jìn)入PIOSetupFIS狀態(tài)的存儲(chǔ)指令,接收最后一幀,且在該幀E_ STATUS域中BSY和DRQ位均為0時(shí),進(jìn)入DataFIS狀態(tài); 第三執(zhí)行單元,用于對(duì)進(jìn)入DataFIS狀態(tài)的存儲(chǔ)指令,接收最后一幀完畢后,返回初始 狀態(tài); 其中,在返回初始狀態(tài)時(shí),交換器開(kāi)始接收多個(gè)處理器發(fā)送的SATA指令,并進(jìn)行下一 次仲裁。
14. 如權(quán)利要求1至13任一所述的存儲(chǔ)控制器的使用方法,其特征在于,所述方法包括 步驟: 處理器控制器接收其對(duì)應(yīng)的處理器發(fā)送的存儲(chǔ)指令,并將該存儲(chǔ)指令發(fā)送至交換器; 交換器將處理器控制器發(fā)來(lái)的存儲(chǔ)指令逐一發(fā)送至硬盤控制器; 硬盤控制器在接收到交換器發(fā)來(lái)的存儲(chǔ)指令時(shí),在存儲(chǔ)指令中指示存儲(chǔ)的地址空間后 發(fā)送至硬盤,其中,所指示的地址空間是分配給發(fā)出存儲(chǔ)指令的處理器的地址空間。
15. 如權(quán)利要求14所述的使用方法,其特征在于,在處理器控制器接收到處理器發(fā)送 的存儲(chǔ)指令時(shí),進(jìn)一步包括,將存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后, 將其發(fā)送至交換器。
16. 如權(quán)利要求14所述的使用方法,其特征在于,在處理器控制器接收到處理器發(fā)送 的存儲(chǔ)指令時(shí),進(jìn)一步包括,對(duì)處理器發(fā)送的存儲(chǔ)指令進(jìn)行標(biāo)識(shí); 在硬盤控制器接收到硬盤發(fā)送的響應(yīng)結(jié)果時(shí),進(jìn)一步包括,根據(jù)所述標(biāo)識(shí)確定發(fā)出存 儲(chǔ)指令的處理器的地址空間。
17. 如權(quán)利要求14所述的使用方法,其特征在于,在處理器控制器接收到處理器發(fā)送 的存儲(chǔ)指令時(shí),進(jìn)一步包括,在硬盤控制器不空閑時(shí),暫存存儲(chǔ)指令,在硬盤控制器空閑時(shí) 將其發(fā)送至交換器。
18. 如權(quán)利要求14所述的使用方法,其特征在于,在硬盤控制器在接收到交換器發(fā)來(lái) 的存儲(chǔ)指令時(shí),進(jìn)一步包括,通過(guò)修改存儲(chǔ)指令的地址域的方式來(lái)在存儲(chǔ)指令中指示存儲(chǔ) 的地址空間,將存儲(chǔ)指令映射到分配給該處理器的地址空間。
19. 如權(quán)利要求18所述的使用方法,其特征在于,在硬盤控制器接收到交換器發(fā)來(lái)的 存儲(chǔ)指令時(shí),進(jìn)一步包括,將存儲(chǔ)指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā) 送至硬盤。
20. 如權(quán)利要求14所述的使用方法,其特征在于,在硬盤控制器將存儲(chǔ)指令發(fā)送至硬 盤后,進(jìn)一步包括,接收硬盤發(fā)來(lái)的響應(yīng)結(jié)果,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換 以及解擾操作后,發(fā)送至交換器。
21. 如權(quán)利要求20所述的使用方法,其特征在于,在硬盤控制器接收到硬盤發(fā)來(lái)的響 應(yīng)結(jié)果時(shí),進(jìn)一步包括,通過(guò)修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該處理器的地址 空間的方式來(lái)在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
22. 如權(quán)利要求20所述的使用方法,其特征在于,在硬盤控制器接收到硬盤發(fā)來(lái)的響 應(yīng)結(jié)果時(shí),進(jìn)一步包括,在處理器控制器不空閑時(shí),暫存響應(yīng)結(jié)果,在處理器控制器空閑時(shí) 將其發(fā)送至交換器。
23. 如權(quán)利要求20所述的使用方法,其特征在于,在硬盤控制器接收到硬盤發(fā)來(lái)的響 應(yīng)結(jié)果時(shí),進(jìn)一步包括,對(duì)硬盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識(shí); 在處理器控制器接收交換器發(fā)送的響應(yīng)結(jié)果時(shí),進(jìn)一步包括,根據(jù)所述標(biāo)識(shí)確定接收 響應(yīng)結(jié)果的處理器控制器。
24. 如權(quán)利要求20所述的使用方法,其特征在于,在處理器控制器接收到交換器發(fā)送 的響應(yīng)結(jié)果時(shí),進(jìn)一步包括,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后, 將其發(fā)送至處理器。
25. 如權(quán)利要求14至24任一所述的使用方法,其特征在于,在交換器將存儲(chǔ)指令逐一 發(fā)送至硬盤控制器時(shí),根據(jù)存儲(chǔ)指令和Matrix Arbiter算法對(duì)存儲(chǔ)指令進(jìn)行仲裁,按照該 仲裁結(jié)果逐一發(fā)送至硬盤控制器。
26. 如權(quán)利要求25所述的使用方法,其特征在于,在交換器對(duì)存儲(chǔ)指令進(jìn)行仲裁后,進(jìn) 一步包括: 更新Matrix Arbiter算法中的仲裁矩陣; 讀取處理器控制器發(fā)來(lái)的第一幀; 判斷第一幀是否為PIO Data In指令,若為PIO Data In指令,在轉(zhuǎn)發(fā)完畢后進(jìn)入 PIOSetupFIS狀態(tài),若為其他指令,則進(jìn)入RegFIS狀態(tài); 對(duì)進(jìn)入RegFIS狀態(tài)的存儲(chǔ)指令,等待Register FIS-Device to Host巾貞,當(dāng)收到該巾貞并 接收完畢后,返回初始狀態(tài); 對(duì)進(jìn)入PIOSetupFIS狀態(tài)的存儲(chǔ)指令,接收完最后一幀,且在該幀E_STATUS域中BSY 和DRQ位均為0時(shí),進(jìn)入DataFIS狀態(tài); 對(duì)進(jìn)入DataFIS狀態(tài)的存儲(chǔ)指令,接收最后一個(gè)數(shù)據(jù)幀完畢后,返回初始狀態(tài); 其中,在返回初始狀態(tài)時(shí),開(kāi)始接收多個(gè)處理器發(fā)送的SATA指令,并進(jìn)行下一次仲裁。
27. 如權(quán)利要求14所述的使用方法,其特征在于,在物理層對(duì)存儲(chǔ)指令或響應(yīng)結(jié)果進(jìn) 行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換。
28. 如權(quán)利要求14所述的使用方法,其特征在于,在鏈路層對(duì)存儲(chǔ)指令或響應(yīng)結(jié)果進(jìn) 行加解擾操作。
29. 如權(quán)利要求28所述的使用方法,其特征在于,在鏈路層對(duì)存儲(chǔ)指令進(jìn)行CRC校驗(yàn)。
30. 如權(quán)利要求29所述的使用方法,其特征在于,在鏈路層對(duì)存儲(chǔ)指令的發(fā)送及接收 進(jìn)行流控。
31. 如權(quán)利要求14所述的使用方法,其特征在于, 在傳輸層上,接收到從鏈路層發(fā)來(lái)的幀; 檢查幀頭以及長(zhǎng)度,若丟棄錯(cuò)誤的幀時(shí),告知鏈路層。
32. 如權(quán)利要求31所述的使用方法,其特征在于, 在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來(lái)的幀; 檢查幀頭以及長(zhǎng)度,若丟棄錯(cuò)誤的幀時(shí),告知網(wǎng)絡(luò)層。
33. 如權(quán)利要求31所述的使用方法,其特征在于, 在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來(lái)的存儲(chǔ)指令; 將存儲(chǔ)指令按照指令中指示存儲(chǔ)的地址空間,映射到分配給該處理器的地址空間。
34. 如權(quán)利要求33所述的使用方法,其特征在于, 在傳輸層上,接收到從鏈路層發(fā)來(lái)的響應(yīng)結(jié)果; 將響應(yīng)結(jié)果按照地址空間的標(biāo)識(shí),映射到發(fā)出響應(yīng)結(jié)果的硬盤對(duì)應(yīng)的處理器的地址空 間。
35. 如權(quán)利要求14所述的使用方法,其特征在于, 在網(wǎng)絡(luò)層上,對(duì)傳輸層接收到的存儲(chǔ)指令進(jìn)行標(biāo)識(shí); 發(fā)送至交換器。
36. 如權(quán)利要求35所述的使用方法,其特征在于, 在網(wǎng)絡(luò)層上,接收到從交換器發(fā)來(lái)的響應(yīng)結(jié)果; 發(fā)送至傳輸層。
【文檔編號(hào)】G06F13/16GK104050115SQ201410304951
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2014年6月30日 優(yōu)先權(quán)日:2014年6月30日
【發(fā)明者】聶華, 楊曉君, 倪亞路 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司