本發(fā)明的實(shí)施方式一般涉及數(shù)據(jù)存儲系統(tǒng)。更特別地,本發(fā)明的實(shí)施方式涉及使用作為控制模塊之間的傳輸層的共享存儲模塊提供對存儲系統(tǒng)的訪問。
背景技術(shù):
系統(tǒng)能夠?qū)?shù)據(jù)寫入到持久存儲和從持久存儲讀取數(shù)據(jù)的速度通常是該系統(tǒng)總體性能的關(guān)鍵因素。向和從持久存儲系統(tǒng)傳輸數(shù)據(jù)的傳統(tǒng)方式需要在客戶端系統(tǒng)和持久存儲系統(tǒng)上的軟件、固件和硬件的多個(gè)層的處理。此外,典型地?cái)?shù)據(jù)在其在這些層之間移動時(shí)被復(fù)制。結(jié)果是,在讀取或?qū)懭朐撓旅娴奈锢泶鎯橘|(zhì)所需的等待時(shí)間之外導(dǎo)致額外的等待時(shí)間,且該等待時(shí)間降低系統(tǒng)的總體性能。
在一些情形中,多個(gè)處理器或系統(tǒng)被提供給客戶端用于訪問存儲在存儲系統(tǒng)中的數(shù)據(jù),可能地用于性能增強(qiáng)或冗余的目的。為了兩個(gè)這樣的系統(tǒng)進(jìn)行通信,系統(tǒng)的每一個(gè)需要包括足夠的硬件和/或軟件來使得這兩個(gè)系統(tǒng)對接。用于這兩個(gè)系統(tǒng)或處理器彼此通信的常規(guī)方法包括相對慢或被設(shè)計(jì)用于低等待時(shí)間而不是高帶寬的網(wǎng)絡(luò)連接或處理器間鏈路。
附圖說明
在附圖中通過示例且非限制的方式示出了本發(fā)明的實(shí)施方式,其中相同的附圖標(biāo)記表示相似的元件。
圖1是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲系統(tǒng)的框圖;
圖2a是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲系統(tǒng)的讀取過程的框 圖;
圖2b是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲系統(tǒng)的寫入過程的框圖;
圖3是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在存儲系統(tǒng)中讀取數(shù)據(jù)的過程的流程圖;
圖4是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式在存儲系統(tǒng)中寫入數(shù)據(jù)的過程的流程圖;
圖5a-5d是示出根據(jù)本發(fā)明的某些實(shí)施方式的存儲設(shè)施的示例的框圖;
圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的通信架構(gòu)的示例的框圖;
圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲模塊的示例的框圖。
具體實(shí)施方式
將參考下面描述的細(xì)節(jié)來描述本發(fā)明的各種實(shí)施方式和方面,且附圖將示出各種實(shí)施方式。下面的描述和附圖是示出本發(fā)明且不視為限制本發(fā)明。許多特定細(xì)節(jié)被描述以提供對本發(fā)明的各種實(shí)施方式的全面理解。但是,在某些情況中,公知或常規(guī)的細(xì)節(jié)沒有被描述以提供對本發(fā)明的實(shí)施方式的簡潔描述。
在說明書中對“一個(gè)實(shí)施方式”或“一實(shí)施方式”的引用意思是與該實(shí)施方式相結(jié)合所描述的特定特征、結(jié)構(gòu)或特性能夠包括在本發(fā)明的至少一個(gè)實(shí)施方式中。在本說明書中不同位置出現(xiàn)的短語“在一個(gè)實(shí)施方式中”不必都指同一個(gè)實(shí)施方式。
根據(jù)一些實(shí)施方式,存儲系統(tǒng)包括經(jīng)由通信架構(gòu)(例如高速通信架構(gòu))通信耦合或連接一個(gè)或多個(gè)存儲模塊的一個(gè)或多個(gè)客戶端??蛻舳私?jīng)由多個(gè)控制模塊訪問存儲在存儲模塊的存儲設(shè)備的任意中的數(shù)據(jù),該多個(gè)控制模塊包括第一控制模塊和第二控制模塊??刂颇K經(jīng)由通信架構(gòu)耦合到客戶端和 存儲模塊。第一控制模塊經(jīng)由處理器間鏈路(也稱為處理器互連)耦合到第二控制模塊,該處理器間鏈路與通信架構(gòu)相比可以具有更低的速度或容量??蛻舳四軌蚪?jīng)由第一控制模塊(例如主路徑)和/或第二控制模塊(例如輔助路徑)訪問存儲在存儲模塊中的數(shù)據(jù)。當(dāng)路徑之一不可用時(shí),客戶端能夠使用與另一路徑相關(guān)聯(lián)的控制模塊經(jīng)由該另一路徑訪問(例如讀取,寫入)數(shù)據(jù)??刂颇K經(jīng)由處理器間鏈路彼此通信以使得數(shù)據(jù)在在兩個(gè)控制模塊之間共享的存儲模塊中被訪問。
在一個(gè)實(shí)施方式中,當(dāng)?shù)谝豢刂颇K(cm)從客戶端設(shè)備接收到讀取請求以從與第二cm相關(guān)聯(lián)的存儲位置讀取數(shù)據(jù)時(shí),第一cm經(jīng)由處理器間鏈路傳送控制信號給第二cm以請求該數(shù)據(jù)。響應(yīng)于該控制信號,第二cm從存儲模塊的該存儲位置獲取被請求的數(shù)據(jù)并使得該被請求的數(shù)據(jù)在由第一cm可訪問的存儲模塊的存儲器區(qū)中可得。第二cm然后經(jīng)由處理器間鏈路傳送針對該控制信號的響應(yīng)或應(yīng)答給第一cm,該響應(yīng)或應(yīng)答指示被請求的數(shù)據(jù)在該存儲器區(qū)中可得。響應(yīng)于該響應(yīng)或應(yīng)答,第一cm從該存儲器區(qū)獲取該數(shù)據(jù)并將該數(shù)據(jù)返回給客戶端。在一個(gè)實(shí)施方式中,第一cm發(fā)起數(shù)據(jù)事務(wù)(例如直接存儲器訪問或dma會話)以將被請求的數(shù)據(jù)從該存儲器區(qū)移到與客戶端設(shè)備相關(guān)聯(lián)的客戶端存儲器,例如經(jīng)由高速通信架構(gòu)而不必經(jīng)過第二cm。結(jié)果是,即使從客戶端設(shè)備到第二cm的路徑故障,客戶端設(shè)備仍然能夠通過高速通信架構(gòu)使用共享的存儲模塊經(jīng)由第一cm訪問該數(shù)據(jù)。
在另一實(shí)施方式中,當(dāng)?shù)谝籧m從客戶端設(shè)備接收到用于將數(shù)據(jù)寫入到與第二cm相關(guān)聯(lián)的存儲位置的寫入請求時(shí),第一cm發(fā)起數(shù)據(jù)事務(wù)(例如dma事務(wù))以將該數(shù)據(jù)從客戶端設(shè)備的客戶端存儲器移到與第一cm相關(guān)聯(lián)的存儲模塊的存儲器區(qū)(例如通過高速通信架構(gòu))??商鎿Q地,客戶端發(fā)起該數(shù)據(jù)事務(wù)。第一cm然后經(jīng)由處理器間鏈路傳送控制信號給第二cm, 指示在該存儲器區(qū)中可得的該數(shù)據(jù)要被寫入到與第二cm相關(guān)聯(lián)的持久存儲設(shè)備的目標(biāo)存儲位置。響應(yīng)于該控制信號,第二cm使得該數(shù)據(jù)從與第一cm相關(guān)聯(lián)的存儲器區(qū)被復(fù)制到或移到存儲模塊的目標(biāo)存儲位置。在特定實(shí)施方式中,數(shù)據(jù)還可以被復(fù)制到與第二cm相關(guān)聯(lián)或第二cm內(nèi)的存儲器,以允許第二cm對該數(shù)據(jù)執(zhí)行某些操作,例如奇偶構(gòu)建。之后,第二cm經(jīng)由處理器間鏈路返回指示該數(shù)據(jù)已經(jīng)成功被寫入的響應(yīng)給第一cm。結(jié)果是,即使從客戶端設(shè)備到第二cm的路徑故障,客戶端設(shè)備仍然能夠通過高速通信架構(gòu)使用共享存儲模塊經(jīng)由第一cm寫入該數(shù)據(jù)。
圖1是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲系統(tǒng)的框圖。存儲系統(tǒng)100可以代表任意存儲服務(wù)器,例如云存儲服務(wù)器、內(nèi)容服務(wù)器等。參考圖1,存儲系統(tǒng)100包括經(jīng)由一個(gè)或多個(gè)集線器或交換設(shè)備104a-104b通信耦合到控制模塊102a-102b和一個(gè)或多個(gè)存儲模塊110的一個(gè)或多個(gè)客戶端設(shè)備101(也簡單稱為客戶端)。雖然示出了僅一個(gè)客戶端101,但是能夠使用多個(gè)客戶端。類似地,雖然示出僅一個(gè)存儲模塊110,但也能夠使用多個(gè)存儲模塊且除了cm102a-102b之外還能使用更多cm,這依據(jù)特定配置或要求。此外,cm102a-102b的每一個(gè)可以包括處理器和本地存儲器,例如cm存儲器設(shè)備105a-105b(統(tǒng)稱為cm存儲器設(shè)備105)。cm存儲器設(shè)備105可以是任意種易失性存儲器設(shè)備,例如動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram或ddrsdram。注意到cm能夠是多處理器系統(tǒng)中單個(gè)處理器。在其他配置中,cm能夠被實(shí)施為獨(dú)立的服務(wù)器,具有其自己的存儲器和本地存儲。cm能夠是在相同或不同機(jī)架(chassis)中的獨(dú)立的服務(wù)器。
在一個(gè)實(shí)施方式中,客戶端101經(jīng)由通信架構(gòu)耦合到cm102a-102b和存儲模塊110,而cm102a和cm102b經(jīng)由處理器間鏈路(也稱為處理器互連)彼此耦合。在該示例中,為了示出的目的,通信架構(gòu)由組件101-104b 和110之間的實(shí)線或連接表示,而處理器間鏈路106由虛線或虛線連接表示。注意到處理器間鏈路能夠是互連、總線、網(wǎng)絡(luò)或這些的組合。在該示例中實(shí)線和集線器/交換設(shè)備104a-104b表示的通信架構(gòu)可以是全網(wǎng)通信架構(gòu),其允許組件101-104b和110的每一個(gè)彼此通信并彼此訪問資源(例如存儲器、處理資源)。
在一個(gè)實(shí)施方式中,存儲系統(tǒng)100可以是服務(wù)器或服務(wù)器簇的部分,用于通過網(wǎng)絡(luò)(例如因特網(wǎng))提供數(shù)據(jù)存儲或內(nèi)容服務(wù)給遠(yuǎn)程設(shè)備。例如,客戶端設(shè)備101可以是耦合到cm102a-102b和存儲模塊110表示的后端存儲設(shè)施的前端服務(wù)器組件(例如網(wǎng)頁服務(wù)器、內(nèi)容服務(wù)器或云服務(wù)器)。在這樣的配置中,客戶端101操作作為用于通過因特網(wǎng)提供服務(wù)給遠(yuǎn)程設(shè)備的服務(wù)器,同時(shí)客戶端101通過通信架構(gòu)操作作為cm102a-102b和存儲模塊110表示的存儲設(shè)施的客戶端。cm102a-102b也統(tǒng)稱為cm102,可以操作為存儲設(shè)施的存儲控制器或服務(wù)器組件。
在一個(gè)實(shí)施方式中,存儲系統(tǒng)100可以在電子機(jī)柜內(nèi)被設(shè)施。例如,客戶端101可以被實(shí)施為插入到代表通信架構(gòu)(其由實(shí)線連接和集線器/交換設(shè)備104a-104b表示)的背板的客戶端刀片(blade)或面板(plane)的部分。cm102a-102b可以被實(shí)施為插入到該背板的一個(gè)或多個(gè)控制刀片或控制面板的部分。存儲模塊110可以被實(shí)施為插入到背板的存儲刀片(或存儲面板或數(shù)據(jù)面板)的部分。因此,所有這些刀片使用各種合適的通信協(xié)議經(jīng)由通信架構(gòu)彼此耦合,而cm102a-102b經(jīng)由控制刀片內(nèi)的處理器間鏈路106彼此耦合。還可以存在其他配置。
在一個(gè)實(shí)施方式中,存儲模塊110包括一個(gè)或多個(gè)隨機(jī)存取存儲器(ram)設(shè)備和一個(gè)或多個(gè)持久存儲設(shè)備(未示出),其可以由存儲模塊控制器120控制或管理。存儲模塊110的ram設(shè)備和持久存儲設(shè)備可以在邏輯或物理上被劃分成存儲分區(qū)125a-125b(統(tǒng)稱為存儲分區(qū)125)。存儲分區(qū) 125a-125b可以分別被分配用于cm102a-102b。存儲分區(qū)125a-125b的每一個(gè)包括相應(yīng)的ram區(qū),例如ram區(qū)121a-121b(統(tǒng)稱為ram121)。ram設(shè)備可以是任意類型的易失性存儲器設(shè)備,例如動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram或ddrsdram。類似地,存儲分區(qū)125a-125b的每一個(gè)包括相應(yīng)的持久存儲器或存儲區(qū),例如持久存儲器區(qū)122a-122b(統(tǒng)稱為持久存儲器區(qū)122)。持久存儲器區(qū)122能夠是任意種類的非易失性存儲設(shè)備,例如固態(tài)存儲器設(shè)備(例如閃存設(shè)備)。cm102a-102b可以通過通信架構(gòu)與存儲模塊控制器120通信以訪問存儲分區(qū)125的存儲位置。
在一個(gè)實(shí)施方式中,存儲模塊控制器120被配置成接收從cm102a-102b讀取數(shù)據(jù)和/或?qū)?shù)據(jù)寫入到cm102a-102b的請求。此外,存儲模塊控制器120被配置成使用存儲分區(qū)125a-125b服務(wù)該讀取請求和寫入請求。此外,存儲模塊控制器120可以包括用于在存儲分區(qū)125、cm存儲器設(shè)備105和客戶端101的客戶端存儲器(未示出)之間移動或復(fù)制數(shù)據(jù)的直接存儲器訪問(dma)引擎。
在一個(gè)實(shí)施方式中,通信架構(gòu)可以是任意種類的高速通信架構(gòu),例如pcie、以太網(wǎng)、光纖信道或infinibandtm架構(gòu)。處理器間鏈路106可以是因特爾quickpathtm互連或其他點(diǎn)對點(diǎn)通信鏈路。
客戶端101可以是包括用于發(fā)送讀取請求給存儲設(shè)施和/或發(fā)送寫入請求給存儲設(shè)施的功能的任意系統(tǒng)??蛻舳?01可以包括客戶端處理器和客戶端存儲器(未示出)。在一個(gè)實(shí)施方式中,客戶端101被配置成使用各種通信協(xié)議與存儲設(shè)施(由控制模塊102a-102b和存儲模塊110的一個(gè)或多個(gè)表示)通信,該通信協(xié)議例如是外圍組件接口(pci)、高速pci(pcie)、擴(kuò)展pci(pci-x)、高速非易失性存儲器(nvme)、通過pcie架構(gòu)的高速非易失性存儲器(nvme)、通過以太網(wǎng)架構(gòu)的高速非易失性存儲器(nvme) 以及通過infiniband架構(gòu)的高速非易失性存儲器(nvme)。
在一個(gè)實(shí)施方式中,在客戶端101、cm102a-102b和存儲模塊110之間交換的命令和響應(yīng)/應(yīng)答可以經(jīng)由保存在與這些組件相關(guān)聯(lián)的各種存儲器中的相應(yīng)提交隊(duì)列和完成隊(duì)列被交換。例如,cm存儲器105a-105b的每一個(gè)可以包含用于客戶端101和存儲模塊110的單獨(dú)或分開的提交隊(duì)列和完成隊(duì)列。類似地,客戶端101的客戶端存儲器可以為cm102a-102b的每一個(gè)保存提交隊(duì)列和完成隊(duì)列。端點(diǎn)使用提交隊(duì)列來通過通信架構(gòu)提交命令給另一端點(diǎn)用于特定操作。端點(diǎn)使用完成隊(duì)列設(shè)置針對之前經(jīng)由提交隊(duì)列提交的命令的應(yīng)答或響應(yīng)以用信號通知另一端點(diǎn)該命令已完成。
例如,當(dāng)客戶端101向cm102a發(fā)起讀取請求時(shí),客戶端101在存儲器105a中保存的與cm102a相關(guān)聯(lián)的提交隊(duì)列中設(shè)置讀取請求命令。通過在提交隊(duì)列中設(shè)置命令,cm102a可以例如經(jīng)由中斷(例如門鈴中斷)被通知。類似地,當(dāng)cm102a完成從客戶端101發(fā)送的命令時(shí),cm102a可以在與客戶端101相關(guān)聯(lián)的完成隊(duì)列中設(shè)置指示符(例如應(yīng)答、響應(yīng))以用信號通知客戶端101該命令已經(jīng)完成。與客戶端101相關(guān)聯(lián)的完成隊(duì)列可以被保存在客戶端101的客戶端存儲器中。關(guān)于客戶端101、cm102a-102b和存儲模塊110以及通信架構(gòu)的進(jìn)一步的信息將在下面參考圖5a-5d和6-7進(jìn)一步詳細(xì)描述。
在一個(gè)實(shí)施方式中,cm102a可以具有針對其存儲分區(qū)125a的讀取和寫入訪問權(quán)利或特權(quán),和針對存儲分區(qū)125b的僅讀取訪問權(quán)利或特權(quán)。類似地,cm102b可以具有針對存儲分區(qū)125b的讀取和寫入訪問權(quán)利,且針對存儲分區(qū)125a具有僅讀取訪問權(quán)利??商鎿Q地,cm102a-102b都可以具有針對所有存儲器區(qū)和存儲區(qū)的讀取和寫入訪問權(quán)利,只要存儲模塊控制器120能夠管理或控制訪問爭用和/或沖突/相干。在另一實(shí)施方式中,cm102a-102b能夠直接控制和管理它們各自的存儲模塊110的存儲區(qū)和存儲器 區(qū)。在這樣的配置中,存儲模塊控制器120可以是可選的。
典型地,客戶端101能夠經(jīng)由通過cm102a的第一通信路徑訪問存儲在與cm102a相關(guān)聯(lián)的存儲區(qū)中的數(shù)據(jù)。同樣地,客戶端101能夠經(jīng)由通過cm102b的第二通信路徑訪問存儲在與cm102b相關(guān)聯(lián)的存儲區(qū)中的數(shù)據(jù)。這兩個(gè)路徑同時(shí)可用于客戶端101以為了更好帶寬??商鎿Q地,一條路徑可以是另一條路徑的冗余路徑。當(dāng)一條路徑(例如通過cm102b的路徑)不可用(例如故障)時(shí),客戶端101可以經(jīng)過另一條路徑(例如通過cm102a的路徑)來從與不可用路徑相關(guān)聯(lián)的存儲區(qū)讀取數(shù)據(jù)或向其寫入數(shù)據(jù)。當(dāng)使用該備選路線時(shí),常規(guī)系統(tǒng)可能必須使用處理器間鏈路106來將數(shù)據(jù)從一個(gè)cm傳輸?shù)搅硪粋€(gè)cm。但是,與通信架構(gòu)相比,處理器間鏈路106通常是比較慢或具有較低帶寬容量。由于cm102a-102b都經(jīng)由高速通信架構(gòu)耦合到存儲模塊110,因此存儲模塊110可以用作cm102a-102b之間的傳輸路徑以使客戶端101避免故障的路徑并使用其他可用路徑來實(shí)現(xiàn)相同的目的,而不必使用處理器間鏈路106來攜帶或傳輸數(shù)據(jù)。
根據(jù)一個(gè)實(shí)施方式,當(dāng)?shù)谝籧m(例如cm102a)從客戶端101接收到用于從與第二cm(例如cm102b)相關(guān)聯(lián)的存儲位置讀取數(shù)據(jù)的請求時(shí),第一cm經(jīng)由處理器間鏈路106傳送控制信號給第二cm以從第二cm請求數(shù)據(jù)。響應(yīng)于該控制信號,第二cm與存儲模塊控制器120通信以從該存儲位置獲取被請求的數(shù)據(jù)并使得該被請求的數(shù)據(jù)在與第一cm相關(guān)聯(lián)的存儲器區(qū)中可得。第二cm經(jīng)由處理器間鏈路106發(fā)送響應(yīng)給第一cm,指示被請求的數(shù)據(jù)可得。響應(yīng)于該響應(yīng),第一cm發(fā)起數(shù)據(jù)事務(wù)(例如dma會話)以通過通信架構(gòu)將被請求的數(shù)據(jù)移到客戶端101客戶端存儲器(例如未示出),而不必經(jīng)過第二cm和處理器間鏈路106。
根據(jù)另一個(gè)實(shí)施方式,當(dāng)?shù)谝籧m(例如cm102a)從客戶端101接收到用于向與第二cm(例如cm102b)相關(guān)聯(lián)的存儲位置寫入數(shù)據(jù)的請求時(shí), 該第一cm發(fā)起數(shù)據(jù)事務(wù)(例如dma會話)以通過通信架構(gòu)將被請求的數(shù)據(jù)從客戶端101的客戶端存儲器(例如未示出)移到或復(fù)制到與第一cm相關(guān)聯(lián)的存儲器位置。第一cm然后經(jīng)由處理器間鏈路106傳送控制信號給第二cm,指示該數(shù)據(jù)在該存儲器位置處可得。響應(yīng)于該控制信號,第二cm從該第一cm的該存儲器位置獲取該數(shù)據(jù)并將該數(shù)據(jù)寫入到目的地。因此,處理器間鏈路106被用作控制路徑,而通信架構(gòu)被用作用于訪問數(shù)據(jù)的數(shù)據(jù)路徑。注意到術(shù)語“存儲器位置”是指易失性存儲器(例如ram區(qū)121a-121b、cm存儲器105a-105b)內(nèi)的位置。術(shù)語“存儲位置”是指非易失性或持久存儲器或存儲設(shè)備(例如持久存儲器區(qū)122a-122b)內(nèi)的位置。
圖2a是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲系統(tǒng)的讀取過程的框圖。參考圖2a,系統(tǒng)200可以被實(shí)施為圖1的系統(tǒng)100的部分。在一個(gè)實(shí)施方式中,假定從客戶端101到cm102b的路徑故障,這可以是連接201-203的任意。在該示例中,客戶端101經(jīng)由可選集線器/交換設(shè)備104a經(jīng)由路徑211(其是通信架構(gòu)的部分)傳送讀取請求給cm102a。該讀取請求用于讀取存儲在與cm102b相關(guān)聯(lián)的存儲模塊110的持久存儲設(shè)備的存儲區(qū)中的數(shù)據(jù),在該示例中是存儲分區(qū)125b的存儲設(shè)備122b。
響應(yīng)于該讀取請求,cm102a經(jīng)由處理器間鏈路傳送控制信號給cm102b(由操作212表示)??刂菩盘柨梢园?biāo)識被請求的數(shù)據(jù)的標(biāo)識符、要被讀取的數(shù)據(jù)的尺寸和/或目標(biāo)存儲位置(例如持久存儲器區(qū)122b的存儲位置)。響應(yīng)于該控制信號,cm102b經(jīng)由路徑213與存儲模塊控制器120通信以從來自持久存儲設(shè)備122b的目標(biāo)存儲位置獲取被請求的數(shù)據(jù)并將該數(shù)據(jù)置于與cm102a相關(guān)聯(lián)的存儲器區(qū)121a的預(yù)定存儲器位置。該預(yù)定存儲器位置可以是預(yù)先協(xié)定好的或在控制信號中被指定的存儲器位置。一旦被請求的數(shù)據(jù)已經(jīng)被放置在存儲器區(qū)121a中,cm102b經(jīng)由處理器間鏈路傳送針對控制信號的響應(yīng)給cm102a(由操作214表示)。響應(yīng)于該響應(yīng),cm 102a發(fā)起數(shù)據(jù)事務(wù)(例如dma事務(wù))以通過通信架構(gòu)經(jīng)由經(jīng)過可選集線器/交換設(shè)備104a的路徑215(a)和215(b)將數(shù)據(jù)從存儲器區(qū)121a移到或復(fù)制到客戶端101的客戶端存儲器(未示出)。
根據(jù)另一實(shí)施方式,被請求的數(shù)據(jù)可以從與cm102b相關(guān)聯(lián)的持久存儲設(shè)備122b的目標(biāo)存儲位置被復(fù)制到存儲器區(qū)121b。cm102b然后經(jīng)由處理器間鏈路傳送響應(yīng)給cm102a。作為響應(yīng),在發(fā)起從存儲器區(qū)121a到客戶端101的客戶端存儲器的數(shù)據(jù)事務(wù)之前,cm102a將數(shù)據(jù)從存儲器區(qū)121b復(fù)制到或移到(例如經(jīng)由存儲模塊控制器120)存儲器區(qū)121a。在一個(gè)實(shí)施方式中,cm102a可以指令存儲模塊控制器120編碼或配置存儲模塊控制器120內(nèi)的dma引擎(未示出)??商鎿Q地,cm102a可以與集線器/交換設(shè)備104a內(nèi)的dma引擎通信以將數(shù)據(jù)從存儲器區(qū)121a移到客戶端101的客戶端存儲器。此外,cm102a可以與客戶端101通信以指令客戶端101編碼或配置客戶端101內(nèi)的dma引擎從而將數(shù)據(jù)從存儲器區(qū)121a移到客戶端101的客戶端存儲器。
根據(jù)進(jìn)一步實(shí)施方式,存儲分區(qū)125a-125b的任意可以被配置成可由cm102a-102b的任意訪問。cm102a-102b還可以控制和/或管理存儲模塊110的存儲資源而不用涉及存儲模塊控制器120。在這樣的配置中,響應(yīng)于讀取請求,cm102b能夠訪問存儲分區(qū)125b中存儲被請求的數(shù)據(jù)的存儲位置以使得被請求的數(shù)據(jù)在存儲器區(qū)121a或存儲器區(qū)121b中可得。例如,cm102b能夠基于控制信號定位存儲在持久存儲器區(qū)122b中的被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)加載或復(fù)制在存儲器區(qū)121a或121b中。cm102a然后能夠發(fā)起數(shù)據(jù)事務(wù)以將數(shù)據(jù)從存儲器區(qū)121a或存儲器區(qū)121b移到客戶端101的客戶端存儲器。這樣的配置能夠消除對在存儲器區(qū)121b與存儲器區(qū)121a之間復(fù)制數(shù)據(jù)的需要。
根據(jù)另一實(shí)施方式,cm102a能夠預(yù)留ram區(qū)121a中的預(yù)定存儲器 位置。響應(yīng)于從cm102a接收的控制信號,cm102b從持久存儲器區(qū)122b獲取被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)加載到ram區(qū)121a的預(yù)定的存儲器位置。cm102a然后將被請求的數(shù)據(jù)從ram區(qū)121a傳輸?shù)娇蛻舳?01。
圖2b是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲系統(tǒng)的讀取過程的框圖。參考圖2b,系統(tǒng)200可以被實(shí)施為圖1的系統(tǒng)100的部分。在一個(gè)實(shí)施方式中,假定從客戶端101到cm102b的路徑故障,這可以是連接201-202或集線器/交換設(shè)備104b與存儲模塊110之間的連接(例如圖2a的路徑203)的任意。在該示例中,客戶端101經(jīng)由可選集線器/交換設(shè)備104a經(jīng)由路徑251(其是通信架構(gòu)的部分)傳送寫入請求給cm102a。該寫入請求用于將數(shù)據(jù)寫入到存儲模塊110的持久存儲設(shè)備的存儲位置或區(qū),在該示例中是存儲設(shè)備122b,其中目標(biāo)存儲區(qū)與cm102b相關(guān)聯(lián)。響應(yīng)于該寫入請求,要被寫入的數(shù)據(jù)經(jīng)由路徑252被傳送。例如,數(shù)據(jù)可以經(jīng)由數(shù)據(jù)事務(wù)(例如dma事務(wù))從客戶端設(shè)備101的客戶端存儲器被傳送到ram區(qū)121a的存儲器位置。數(shù)據(jù)事務(wù)可以由客戶端101、集線器/交換設(shè)備104a、cm102a或存儲模塊控制器120內(nèi)的dma引擎發(fā)起。
一旦數(shù)據(jù)已經(jīng)被存儲在存儲器區(qū)121a中,cm102a通過處理器間鏈路經(jīng)由路徑253傳送控制信號給cm102b??刂菩盘柨梢园ㄖ甘敬鎯ζ鲄^(qū)121a中存儲該數(shù)據(jù)的存儲位置、數(shù)據(jù)尺寸以及持久存儲區(qū)122b的目標(biāo)存儲位置的信息。響應(yīng)于該控制信號,cm102b將數(shù)據(jù)從存儲器區(qū)121a復(fù)制到或移到存儲器121b。cm102b可以與存儲模塊控制器120通信以將數(shù)據(jù)從存儲器區(qū)121a復(fù)制到或移到存儲器區(qū)121b。數(shù)據(jù)然后從存儲器區(qū)121b存儲到持久存儲區(qū)122b的目標(biāo)存儲位置。此外,cm102b可以經(jīng)由用于其他操作(例如奇偶計(jì)算)的路徑254將數(shù)據(jù)上傳到其本地存儲器105b。
cm102b然后通過處理器間鏈路經(jīng)由路徑255傳送響應(yīng)或應(yīng)答給cm102a以應(yīng)答寫入信號。cm102a然后經(jīng)由路徑256返回寫入操作的狀態(tài)給 客戶端101??商鎿Q地,根據(jù)一個(gè)實(shí)施方式,一旦數(shù)據(jù)已經(jīng)從客戶端101的客戶端存儲器被傳送到存儲器區(qū)121a,cm102a能夠返回該狀態(tài)或應(yīng)答寫入操作給客戶端101,而不必等待cm102b將數(shù)據(jù)從存儲器區(qū)121a復(fù)制到持久存儲區(qū)122b的目標(biāo)存儲位置。因此,由于cm102a-102b經(jīng)由通信架構(gòu)耦合到存儲模塊110,存儲模塊110能夠用作用于傳輸數(shù)據(jù)的傳輸層作為數(shù)據(jù)路徑,而處理器間鏈路用作控制路徑用于交換控制信號。
根據(jù)進(jìn)一步實(shí)施方式,如上所述,存儲分區(qū)125a-125b的任意可以被配置成可由cm102a-102b的任意訪問。cm102a-102b還可以控制和/或管理存儲模塊110的存儲資源,而不涉及存儲模塊控制器120。在這樣的配置中,響應(yīng)于寫入請求,cm102a能夠存儲或使得被請求的數(shù)據(jù)被存儲在存儲器區(qū)121a或存儲器區(qū)121b中。cm102a然后經(jīng)由處理器間鏈路106傳送控制信號給cm102b,其中控制信號標(biāo)識被請求的數(shù)據(jù)被存儲在哪。cm102b然后能夠基于控制信號從存儲器區(qū)121a或存儲器區(qū)121b獲取被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)存儲在持久存儲器區(qū)122b的目標(biāo)存儲位置中。這樣的配置能夠消除對在存儲器區(qū)121a與存儲器區(qū)121b之間復(fù)制數(shù)據(jù)的需要。
圖3是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在存儲系統(tǒng)中讀取數(shù)據(jù)的過程的流程圖。過程300可以由處理邏輯執(zhí)行,該處理邏輯包括硬件(例如電路、專用邏輯等)、軟件(例如包含在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)上),或硬件和軟件的組合。例如,過程300可以由圖1的系統(tǒng)100執(zhí)行。參考圖3,在框301,第一cm從客戶端設(shè)備接收用于從與第二cm相關(guān)聯(lián)的第二存儲位置讀取數(shù)據(jù)的讀取請求。該讀取請求可以指定或標(biāo)識數(shù)據(jù)和存儲該數(shù)據(jù)的存儲位置。響應(yīng)于該讀取請求,在框302,第一cm經(jīng)由處理器間鏈路傳送控制信號給第二cm以請求讀取被請求的數(shù)據(jù)。響應(yīng)于該控制信號,在框303,第二cm使得被請求的數(shù)據(jù)為第一cm可得。在一個(gè)實(shí)施方式中,第二cm使得被請求的數(shù)據(jù)從第二存儲位置被復(fù)制到或移到與第一cm相關(guān)聯(lián)的第一存儲器 位置。在框304,第二cm通過處理器間鏈路傳送針對控制信號的響應(yīng)或應(yīng)答給第一cm。在框305,第一cm使得被請求的數(shù)據(jù)從第一存儲器位置被傳送(例如經(jīng)由dma)到客戶端。
可替換地,存儲分區(qū)的任意非持久資源可以被配置成可由第一cm和第二cm的任意訪問。第一cm和第二cm還可以控制和/或管理存儲模塊110的存儲資源,而不涉及存儲模塊控制器。在這樣的配置中,響應(yīng)于讀取請求,第一cm能夠通過處理器間鏈路經(jīng)由控制信號與第二cm通信。響應(yīng)于該控制信號,第二cm能夠訪問目標(biāo)存儲分區(qū)中存儲被請求的數(shù)據(jù)的存儲位置以使得該被請求的數(shù)據(jù)在與第一cm相關(guān)聯(lián)的第一存儲器區(qū)中或與第二cm相關(guān)聯(lián)的第二存儲器區(qū)中可得。第一cm然后能夠發(fā)起數(shù)據(jù)事務(wù)以將數(shù)據(jù)從第一存儲器區(qū)或第二存儲器區(qū)移到客戶端的客戶端存儲器。這樣的配置能夠消除對在第二存儲器與域第一存儲器區(qū)之間復(fù)制數(shù)據(jù)的需要。
圖4是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的在存儲系統(tǒng)中寫入數(shù)據(jù)的過程的流程圖。過程400可以由處理邏輯執(zhí)行,該處理邏輯包括硬件(例如電路、專用邏輯等)、軟件(例如包含在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)上),或硬件和軟件的組合。例如,過程400可以由圖1的系統(tǒng)100執(zhí)行。參考圖4,在框401,第一cm從客戶端接收用于將數(shù)據(jù)寫入到與第二cm相關(guān)聯(lián)的存儲模塊的第二存儲位置的寫入請求。響應(yīng)于該寫入請求,第一cm使得(例如經(jīng)由dma)被請求的數(shù)據(jù)從客戶端被傳送并存儲在與第一cm相關(guān)聯(lián)的存儲模塊的第一存儲器位置中。在框403,第一cm通過處理器間鏈路傳送控制信號給第二cm以指示數(shù)據(jù)準(zhǔn)備好。響應(yīng)于該控制信號,在框404,第二cm使得被請求的數(shù)據(jù)從第一存儲器位置被復(fù)制到或移到存儲模塊的第二存儲位置。在框405,第二cm通過處理器間鏈路傳送響應(yīng)給第一cm以應(yīng)答數(shù)據(jù)已經(jīng)被寫入。響應(yīng)于該響應(yīng),在框406,第一cm返回狀態(tài)給客戶端。
根據(jù)進(jìn)一步實(shí)施方式,如上所述,存儲分區(qū)的任意可以被配置成可由第 一cm和第二cm的任意來訪問。在這樣的配置中,響應(yīng)于寫入請求,第一cm能夠存儲或使得被請求的數(shù)據(jù)被存儲在與第一cm相關(guān)聯(lián)的第一存儲器區(qū)或與第二cm相關(guān)聯(lián)的第二存儲器區(qū)中。第一cm然后經(jīng)由處理器間鏈路傳送控制信號給第二cm,其中控制信號標(biāo)識被請求的數(shù)據(jù)被存儲在哪里。第二cm然后能夠基于該控制信號從第一存儲器區(qū)或第二存儲器區(qū)獲取被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)存儲在與第二cm相關(guān)聯(lián)的持久存儲器區(qū)的目標(biāo)存儲位置。這樣的配置能夠消除對在第一存儲器區(qū)和第二存儲器區(qū)之間復(fù)制數(shù)據(jù)的需要。
圖5a-5d是示出根據(jù)本發(fā)明的某些實(shí)施方式的存儲設(shè)施的示例的框圖。存儲設(shè)施可以代表上述的存儲設(shè)施。參考圖5a,存儲設(shè)施包括控制模塊1200和存儲模塊群組1202??刂颇K1200可以代表上述的控制模塊的任意。在一個(gè)實(shí)施方式中,控制模塊1200被配置成管理來自一個(gè)或多個(gè)客戶端或客戶端設(shè)備1380的讀取和寫入請求的服務(wù)。這里的客戶端可以代表上述的客戶端或客戶端設(shè)備的任意。在一個(gè)實(shí)施方式中,控制模塊1200被配置成經(jīng)由通信架構(gòu)1350從一個(gè)或多個(gè)客戶端1380接收請求,處理該請求(其可以包括發(fā)送該請求給存儲模塊),以及在請求已經(jīng)被服務(wù)之后提供響應(yīng)給客戶端1380。
在一個(gè)實(shí)施方式中,控制模塊1200包括輸入/輸出模塊(iom)1204、交換架構(gòu)1206、處理器1208、存儲器1210以及可選地場可編程門陣列(fpga)1212。在一個(gè)實(shí)施方式中,iom1204是客戶端與存儲設(shè)施中的其他組件之間的物理接口。iom1204支持各種通信協(xié)議,例如pci、pcie、pci-x、以太網(wǎng)(包括但不限于ieee802.3a-802.3bj下定義的各種標(biāo)準(zhǔn))、infiniband和通過聚合以太網(wǎng)(roce)的遠(yuǎn)程直接存儲器存取(rdma)。
在一個(gè)實(shí)施方式中,交換架構(gòu)1206包括一個(gè)或多個(gè)互連的交換機(jī)。如果交換架構(gòu)1206包括多個(gè)交換機(jī)時(shí),每個(gè)交換機(jī)可以連接到每個(gè)其他交換 機(jī),可以連接到交換架構(gòu)中的交換機(jī)子集,或可以僅連接到交換架構(gòu)中的一個(gè)其他交換機(jī)。在一個(gè)實(shí)施方式中,交換架構(gòu)1206中的交換機(jī)的每一個(gè)是硬件和邏輯的組合(例如使用集成電路實(shí)施)(如交換架構(gòu)實(shí)施的協(xié)議定義的),其被配置成在存儲設(shè)施中將各種組件連接一起并在各種連接的組件之間(使用邏輯進(jìn)行)路由分組。在一個(gè)實(shí)施方式中,交換架構(gòu)1206物理連接到iom1204、處理器1208、存儲模塊組1202,以及fpga1212(如果有的話)。在一個(gè)實(shí)施方式中,控制模塊1200中的所有組件間的通信(除了處理器1208與存儲器1210之間的通信)經(jīng)過交換架構(gòu)1206。此外,控制模塊1200與存儲模塊組1202之間的所有通信經(jīng)過交換架構(gòu)1206。在一個(gè)實(shí)施方式中,使用pci協(xié)議(例如pci、pcie、pci-x或另一pci協(xié)議)來實(shí)施交換架構(gòu)1206。在這樣的實(shí)施方式中,經(jīng)過交換架構(gòu)1206的所有通信使用相應(yīng)的pci協(xié)議。
在一個(gè)實(shí)施方式中,如果交換架構(gòu)1206實(shí)施pci協(xié)議,交換架構(gòu)1206包括用于處理器的端口(或更具體地,用于在處理器1208中集成的根復(fù)合體(rootcomplex)的端口或用于連接到處理器的根復(fù)合體的端口)、用于存儲模塊組1202中的存儲模塊1214a至1214n的一個(gè)或多個(gè)端口、用于fpga1212(如果有的話)的端口、以及用于iom1204的端口。存儲模塊1214a-1214n的每一個(gè)可以代表上述的存儲模塊的任意。在一個(gè)實(shí)施方式中,上述的端口的每一個(gè)可以被配置為透明橋或非透明橋。本領(lǐng)域技術(shù)人員可以理解雖然已經(jīng)關(guān)于pci實(shí)施描述交換架構(gòu)1206,但是交換架構(gòu)1206可以使用其他協(xié)議被實(shí)施而不偏離本發(fā)明的實(shí)施方式。
在一個(gè)實(shí)施方式中,交換架構(gòu)1206中至少一個(gè)交換機(jī)被配置成實(shí)施組播。更具體地,在一個(gè)實(shí)施方式中,處理器1208被配置成生成組播群組,其中該組播群組包括兩個(gè)或更多個(gè)成員,每個(gè)成員指定存儲器1210和/或存儲模塊1214a-1214n中的地址。當(dāng)組播群組被創(chuàng)建時(shí),該組播群組與組播地 址相關(guān)聯(lián)。為了實(shí)施該組播,交換架構(gòu)中的至少一個(gè)交換機(jī)被配置成當(dāng)接收到將組播地址指定為目的地地址的寫入時(shí),該交換機(jī)被配置成為該組播群組中的每個(gè)成員生成新寫入并將該寫入發(fā)送給存儲設(shè)施中的合適地址。在一個(gè)實(shí)施方式中,用于該交換機(jī)生成的每個(gè)寫入的地址通過給組播地址添加特定偏移來確定。
處理器1208可以是具有單核或多核的電子電路群組,被配置成執(zhí)行指令。在一個(gè)實(shí)施方式中,處理器1208可以使用復(fù)雜指令集(cisc)架構(gòu)或精簡指令集(risc)架構(gòu)來實(shí)施。在一個(gè)實(shí)施方式中,處理器1208包括根復(fù)合體(如pcie協(xié)議定義的)。在一個(gè)實(shí)施方式中,如果控制模塊1200包括根復(fù)合體(其可以集成到處理器1208),則存儲器1210經(jīng)由該根復(fù)合體耦合到處理器1208??商鎿Q地,存儲器1210使用點(diǎn)對點(diǎn)連接機(jī)制直接連接到處理器1208。在一個(gè)實(shí)施方式中,存儲器1210可以是任意易失性存儲器,包括但不限于動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram和ddrsdram。
在一個(gè)實(shí)施方式中,處理器1208被配置成創(chuàng)建并更新存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)(未示出),其中存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)被存儲在存儲器1210在。在一個(gè)實(shí)施方式中,存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)包括存儲模塊的集合中的邏輯地址和物理存儲地址之間的映射(直接或間接)。在一個(gè)實(shí)施方式中,邏輯地址是從客戶端的角度數(shù)據(jù)看起來位于的地址。在一個(gè)實(shí)施方式中,邏輯地址是(或包括)通過將哈希函數(shù)(例如sha-1、md-5等)應(yīng)用于n元組而生成的哈希值。在一個(gè)實(shí)施方式中,n元組是<對象id,偏移id>,其中對象id定義文件且偏移id定義相對于文件的開始地址的位置。在該技術(shù)的另一實(shí)施方式中,該n元組是<對象id,偏移id,生成時(shí)間>,其中生成時(shí)間對應(yīng)于創(chuàng)建(使用對象id標(biāo)識的)文件的時(shí)間。可替換地,邏輯地址可以包括邏輯對象id和邏輯字節(jié)地址,或邏輯對象id和邏輯地址偏移。在該技術(shù)的另一實(shí)施方式 中,邏輯地址包括對象id和偏移id。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解多個(gè)邏輯地址可以被映射到單個(gè)物理地址且該邏輯地址不限于以上的實(shí)施方式。
在一個(gè)實(shí)施方式中,物理地址可以對應(yīng)于(i)存儲器1210中的位置,(ii)圓頂存儲器中的位置,或(iii)固態(tài)存儲器模塊中的位置。在一個(gè)實(shí)施方式中,如果在存儲設(shè)施中有數(shù)據(jù)的多個(gè)副本,則存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)可以將單個(gè)哈希值映射到多個(gè)物理地址。
在一個(gè)實(shí)施方式中,存儲器1210包括以下的一個(gè)或多個(gè):用于處理器1208的提交隊(duì)列、用于處理器1208的完成隊(duì)列、用于存儲設(shè)施中的存儲模塊1214a-1214n的每一個(gè)的提交隊(duì)列、以及用于存儲設(shè)施中的存儲模塊1214a-1214n的每一個(gè)的完成隊(duì)列。在一個(gè)實(shí)施方式中,用于處理器1208的提交隊(duì)列用于發(fā)送命令(例如讀取請求,寫入請求)到處理器1208。在一個(gè)實(shí)施方式中,用于處理器1208的完成隊(duì)列用于用信號通知處理器1208其發(fā)送到另一實(shí)體的命令已經(jīng)被完成。用于存儲模塊的提交隊(duì)列和完成隊(duì)列以相似方式發(fā)揮功能。
在一個(gè)實(shí)施方式中,處理器1208(經(jīng)由交換架構(gòu))被配置成將各種類型的處理卸載到fpga1212。在一個(gè)實(shí)施方式中,fpga1212包括用于計(jì)算被寫入到存儲模塊的數(shù)據(jù)和/或從存儲模塊讀取的數(shù)據(jù)的校驗(yàn)和的功能。此外,fpga1212可以包括用于計(jì)算p和/或q奇偶信息的功能,用于使用raid方案(例如raid2-raid6)在存儲模塊中存儲數(shù)據(jù),和/或用于執(zhí)行恢復(fù)使用raid方案(例如raid2-raid6)存儲的毀壞的數(shù)據(jù)所需的各種計(jì)算的功能。在一個(gè)實(shí)施方式中,存儲模塊組1202包括一個(gè)或多個(gè)存儲模塊(1213a-1214n),每一個(gè)被配置成存儲數(shù)據(jù)。
在一個(gè)實(shí)施方式中,處理器1208被配置成編程系統(tǒng)中的一個(gè)或多個(gè)dma引擎。例如,處理器1208被配置成編程客戶端交換機(jī)中的dma引擎。處理器1208還可以被配置成編程存儲模塊中的dma引擎。在一個(gè)實(shí)施方 式中,編程客戶端交換機(jī)中的dma引擎可以包括創(chuàng)建組播群組并生成用于該組播群組中的成員的每一個(gè)的描述符。
在一個(gè)實(shí)施方式中,通信架構(gòu)1350能夠是高速通信架構(gòu)的任意者,例如pcte、以太網(wǎng)、光纖信道或infinibandtm架構(gòu)??蛻舳?380可以是包括發(fā)送讀取請求給存儲設(shè)施和/或發(fā)送寫入請求給存儲設(shè)施的功能的任意系統(tǒng)??蛻舳?380可以包括客戶端處理器1381和客戶端存儲器1382。在一個(gè)實(shí)施方式中,客戶端1380被配置成使用各種通信協(xié)議與存儲設(shè)施1355通信,該通信協(xié)議例如外圍組件互連(pci)、pci高速(pcie)、pci擴(kuò)展(pci-x)、非易失性存儲器高速(nvme)、通過pci高速架構(gòu)的非易失性存儲器高速(nvme)、通過以太網(wǎng)架構(gòu)的非易失性存儲器高速(nvme)以及通過infiniband架構(gòu)的非易失性存儲器高速(nvme)。
在一個(gè)實(shí)施方式中,如果客戶端1380實(shí)施pci、pci高速或nvme,客戶端1380可以包括根復(fù)合體(未示出)。根復(fù)合體是將客戶端1380(包括其客戶端處理器和客戶端存儲器)連接到pcie架構(gòu)的設(shè)備。在一個(gè)實(shí)施方式中,pcie架構(gòu)包括根復(fù)合體和端點(diǎn),其經(jīng)由交換機(jī)連接。端點(diǎn)是除根復(fù)合體以外的設(shè)備或能夠發(fā)起pci事務(wù)(例如讀取請求、寫入請求)或是pci事務(wù)的目標(biāo)的交換機(jī)。一個(gè)或多個(gè)客戶端和一個(gè)或多個(gè)存儲設(shè)施可以被集成作為pcie架構(gòu)的部分。此外,如果存儲設(shè)施內(nèi)的單獨(dú)組件使用pcie通信且客戶端1380中的單獨(dú)組件使用pcie通信,則存儲設(shè)施和客戶端1380中的所有組件可以被認(rèn)為是單個(gè)pcie架構(gòu)的部分。
客戶端存儲器1382可以包括用于客戶端處理器的提交隊(duì)列(sq)和用于客戶端處理器的完成隊(duì)列(cq)。在本發(fā)明的一個(gè)實(shí)施方式中,存儲設(shè)施存儲器,例如存儲器設(shè)備1210,包括通過通信架構(gòu)對客戶端可見的用于客戶端處理器的一個(gè)或多個(gè)提交隊(duì)列??蛻舳舜鎯ζ?382包括通過通信架構(gòu)對存儲設(shè)施可見的用于客戶端處理器的一個(gè)或多個(gè)完成隊(duì)列。用于客戶端處理 器的提交隊(duì)列用于發(fā)送命令(例如讀取請求、寫入請求)給客戶端處理器。用于客戶端處理器的完成隊(duì)列用于用信號向客戶端處理器通知其發(fā)送給另一實(shí)體的命令已經(jīng)完成。
客戶端1380還可以包括用于將客戶端1380耦合到通信架構(gòu)的客戶端交換機(jī),其中客戶端交換機(jī)可以包括一個(gè)或多個(gè)交換設(shè)備。如果客戶端交換機(jī)包括多個(gè)交換機(jī),每個(gè)交換機(jī)可以連接到每個(gè)其他交換機(jī),可以連接到交換架構(gòu)中的交換機(jī)的子集,或可以僅連接到一個(gè)其他交換機(jī)。在本發(fā)明的一個(gè)實(shí)施方式中,客戶端交換機(jī)中的交換機(jī)的每一個(gè)是硬件和邏輯的組合,被配置成允許數(shù)據(jù)和消息在客戶端1380與存儲設(shè)施1355之間交換。
在這樣的實(shí)施方式中,客戶端交換機(jī)可以包括一個(gè)或多個(gè)端口,其中每個(gè)端口可以被配置為透明橋或不透明橋。實(shí)施為透明橋的端口允許根復(fù)合體繼續(xù)發(fā)現(xiàn)(直接或間接)連接到該端口的設(shè)備(其可以是其他根復(fù)合體、交換機(jī)、pci橋或端點(diǎn))。相反,當(dāng)根復(fù)合體遇到實(shí)施為不透明橋的端口時(shí),該根復(fù)合體不能繼續(xù)連接到該端口的設(shè)備的發(fā)現(xiàn),而是根復(fù)合體將端口視為端點(diǎn)。
當(dāng)端口被實(shí)施為不透明橋時(shí),不透明橋的任一側(cè)的設(shè)備可以僅適用郵箱系統(tǒng)和門鈴中斷(由客戶端交換機(jī)實(shí)施)通信。門鈴中斷允許不透明橋的一側(cè)的處理器發(fā)送中斷給不透明橋的另一側(cè)的處理器。此外,郵箱系統(tǒng)包括交換架構(gòu)的一側(cè)的處理器可讀取和可寫入的一個(gè)或多個(gè)寄存器。上述寄存器使得客戶端交換機(jī)的任一側(cè)的處理器能夠經(jīng)由不透明橋傳遞控制和狀態(tài)信息。
為了從不透明橋的一側(cè)的設(shè)備發(fā)送pci事務(wù)給不透明橋的另一側(cè)的設(shè)備,pci事務(wù)必須被尋址到實(shí)施不透明橋的端口。在接收到pci事務(wù)時(shí),客戶端交換機(jī)執(zhí)行地址轉(zhuǎn)換(使用直接地址轉(zhuǎn)換機(jī)制或基于查找表的轉(zhuǎn)換機(jī)制)。得到的地址然后用于將分組路由到不透明橋的另一側(cè)的合適設(shè)備。
客戶端交換機(jī)被配置以使得客戶端存儲器的至少一部分對存儲設(shè)施直 接可訪問。也就是說,客戶端交換機(jī)的一側(cè)的存儲設(shè)施可以經(jīng)由客戶端交換機(jī)直接訪問客戶端交換機(jī)另一側(cè)的客戶端存儲器。客戶端交換機(jī)可以包括由連接到客戶端交換機(jī)的存儲設(shè)施或客戶端處理器編程的dma引擎。dma引擎可以被編程用于從對存儲設(shè)施可訪問的客戶端存儲器的部分中的地址讀取數(shù)據(jù)并將該數(shù)據(jù)的副本直接寫入到存儲設(shè)施或存儲模塊中的存儲器。此外,dma引擎可以被編程用于從存儲設(shè)施讀取數(shù)據(jù)并將該數(shù)據(jù)的副本直接寫入到對存儲設(shè)施可訪問的客戶端存儲器的部分中的地址。
在本發(fā)明的一個(gè)實(shí)施方式中,dma引擎支持組播。在這樣的實(shí)施方式中,存儲設(shè)施中的處理器可以創(chuàng)建組播群組,其中組播群組的每個(gè)成員對應(yīng)于存儲設(shè)施的存儲器中的唯一目的地址。組播群組的每個(gè)成員與描述符相關(guān)聯(lián),該描述符指定:(i)目的地址;(ii)源地址;(iii)傳輸尺寸字段;以及(iv)控制字段。用于描述符的每一個(gè)的源地址保持不變而目的地址針對每個(gè)描述符改變。一旦創(chuàng)建了組播群組,通過以組播群組地址為目標(biāo)的交換機(jī)的任意數(shù)據(jù)傳輸(包括dma引擎發(fā)起的傳輸)在與組播群組相關(guān)聯(lián)的目的端口的所有中放置數(shù)據(jù)的相同副本。該交換機(jī)并行處理組播群組描述符的所有。
現(xiàn)在參考圖5b,根據(jù)另一實(shí)施方式,存儲設(shè)施包括控制模塊1216和至少兩個(gè)存儲模塊組1236和1238??刂颇K1216包括交換架構(gòu)1234,其直接連接到ioma1218、iomb1220、處理器a1222、處理器b1224、fpgaa1230(如果有的話)、fpgab1232(如果有的話)、存儲模塊組a1236中的存儲模塊1236a-1236n以及存儲模塊組b1238中的存儲模塊1238a-1238n。上述組件之間的所有通信(除了處理器a1222與處理器b1224之間的通信)經(jīng)過交換架構(gòu)1234。在該技術(shù)的一個(gè)實(shí)施方式中,控制模塊1216內(nèi)的處理器1222和1224能夠使用例如點(diǎn)對點(diǎn)互連(例如因特爾quickpath互連)進(jìn)行直接通信。
在一個(gè)實(shí)施方式中,控制模塊1216中的兩個(gè)iom1218和1220使得用于控制模塊1216的i/o帶寬(在具有單個(gè)iom的控制模塊的i/o帶寬之上)加倍。此外,第二iom(或另外iom)的添加增加了可連接到給定控制模塊的客戶端的數(shù)量,且通過擴(kuò)展,增加了能夠連接到存儲設(shè)施的客戶端數(shù)量。在一個(gè)實(shí)施方式中,使用交換架構(gòu)1234處理各種連接的組件(上述的)之間的通信,以允許處理器1222和1224的每一個(gè)直接訪問(經(jīng)由交換架構(gòu)1234)連接到交換架構(gòu)1234的所有fpga1230和1232和所有存儲模塊(1236a-1236n、1238a-1238n)。
參考圖5c,根據(jù)另一實(shí)施方式,存儲設(shè)施包括(經(jīng)由交換架構(gòu)1246)連接到存儲模塊組(1256、1258、1260、1262)中的多個(gè)存儲模塊(未示出)的控制模塊1240??刂颇K1240包括兩個(gè)iom(1242、1244)、兩個(gè)處理器(1248、1250)和存儲器(1252、1254)。在一個(gè)實(shí)施方式中,控制模塊1240中的所有組件經(jīng)由交換架構(gòu)1246通信。這些組件的操作與上述的操作類似。
在一個(gè)實(shí)施方式中,處理器a1248被配置成主要處理與來自存儲模塊組a和b(1256、1258)的數(shù)據(jù)的存儲和獲取有關(guān)的請求,而處理器b1250被配置成主要處理與來自存儲模塊組c和d(1260、1262)的數(shù)據(jù)的存儲和獲取有關(guān)的請求。但是,處理器(1248、1250)被配置成(經(jīng)由交換架構(gòu)1246)與存儲模塊組(1256、1258、1260、1262)的全部進(jìn)行通信。該配置使得控制模塊1240能夠在處理器之間傳播i/o請求的處理和/或提供內(nèi)置冗余以處理處理器之一故障的情形。
參考圖5d,根據(jù)另一實(shí)施方式,存儲設(shè)施包括兩個(gè)控制模塊(1264、1266)。每個(gè)控制模塊包括iom(1296、1298、1300、1302)、處理器(1268、1270、1272、1274)、存儲器(1276、1278、1280、1282)以及fpga(如果有的話)(1288、1290、1292、1294)??刂颇K(1264、1266)的每一個(gè) 包括交換架構(gòu)(1284、1286),控制模塊內(nèi)的組件通過該交換架構(gòu)通信。
在一個(gè)實(shí)施方式中,控制模塊內(nèi)的處理器(1268、1270、1272、1274)可以例如使用點(diǎn)對點(diǎn)互連(例如因特爾quickpath互連)彼此通信。此外,控制模塊a中的處理器(1268、1270)可以經(jīng)由到控制模塊b中的交換架構(gòu)(1286)的直接連接與控制模塊b中的組件通信。類似地,控制模塊b中的處理器(1272、1274)可以經(jīng)由到控制模塊a中的交換架構(gòu)(1284)的直接連接與控制模塊a中的組件通信。
在一個(gè)實(shí)施方式中,控制模塊的每一個(gè)連接到各種存儲模塊(由存儲模塊組(1304、1306、1308、1310)表示)。每個(gè)控制模塊可以與連接到控制模塊中的交換架構(gòu)的存儲模塊通信。此外,控制模塊a(1264)中的處理器可以使用交換架構(gòu)b(1286)與連接到控制模塊b(1266)的存儲模塊通信。類似地,控制模塊b(1266)中的處理器可以使用交換架構(gòu)a(1284)與連接到控制模塊a(1264)的存儲模塊通信。
控制模塊之間的互連允許存儲控制以在存儲設(shè)施間分配i/o負(fù)載,不管哪個(gè)控制模塊接收i/o請求。此外,控制模塊的互連使得存儲設(shè)施能夠處理更大數(shù)量的i/o請求。此外,控制模塊的互連在控制模塊(或其中的一個(gè)或多個(gè)組件)故障的情況下提供內(nèi)置冗余。
在一個(gè)實(shí)施方式中,存儲器中數(shù)據(jù)結(jié)構(gòu)在控制模塊中的存儲器間被鏡像。在這樣的情況中,控制模塊中的處理器發(fā)送必要命令以更新存儲設(shè)施內(nèi)的所有存儲器,由此存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)在所有存儲器間被鏡像。以這種方式,任意處理器可以使用其自己的存儲器確定存儲設(shè)施中的數(shù)據(jù)的位置(如上述的n元組定義)。該功能允許任意處理器服務(wù)關(guān)于存儲模塊內(nèi)的數(shù)據(jù)的位置的任意i/o請求。此外,通過鏡像存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu),存儲設(shè)施可以在存儲器之一故障時(shí)繼續(xù)操作。
根據(jù)一些實(shí)施方式,上述的組件的一些,例如控制模塊和/或存儲模塊 可以集成在通信架構(gòu)內(nèi),例如pcie架構(gòu)。
圖6是示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有通信架構(gòu)的系統(tǒng)的框圖。在該示例中,pcie架構(gòu)用作用于示例目的的通信架構(gòu)的示例。但是,可以理解其他類型的通信架構(gòu)也能夠應(yīng)用。在一個(gè)實(shí)施方式中,pcie架構(gòu)(2100)由兩個(gè)或更多片(2104a、2104b)組成,其中該片的每一個(gè)耦合到處理器(2112a、2112b)和一個(gè)或多個(gè)客戶端(2102a-2102b)??蛻舳?102a-2102b可以代表上述客戶端的任意。
在一個(gè)實(shí)施方式中,每個(gè)客戶端(2102a-2102b)是物理設(shè)備,其包括處理器(或另一類型的處理組件)、存儲器和使其能夠連接到pcie架構(gòu)(2100)的物理接口。此外,每個(gè)客戶端包括用于實(shí)施本發(fā)明的一個(gè)或多個(gè)實(shí)施方式所需的pcie標(biāo)準(zhǔn)(或其一部分)的功能??蛻舳?102a-2102b還包括用于發(fā)送和/或接收事務(wù)層分組(transactionlayerpacket,tlp)的功能。tlp對應(yīng)于根據(jù)pcie標(biāo)準(zhǔn)定義的分組類型。在本發(fā)明的一個(gè)實(shí)施方式中,tlp使得客戶端能夠從pcie架構(gòu)讀取數(shù)據(jù)并將該數(shù)據(jù)寫入到pcie架構(gòu)。換句話說,tlp使得客戶端能夠傳輸往來pcie架構(gòu)中的位置的數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施方式中,客戶端的一個(gè)或多個(gè)操作作為pcie端點(diǎn),即發(fā)起事務(wù)的設(shè)備和/或是事務(wù)的目標(biāo)的設(shè)備??蛻舳说拿恳粋€(gè)可以經(jīng)由鏈路(即客戶端與pcie架構(gòu)之間的物理連接)連接到pcie架構(gòu)。
每個(gè)片(2104a、2104b)包括輸入/輸出(1o)級交換機(jī)(its)(2108a、2108b)、集線器級交換機(jī)(hts)(2106a、2106b)、以及一個(gè)或多個(gè)持久存儲模塊(psm)2110a-2110b。關(guān)于its,每個(gè)its是連接到一個(gè)或多個(gè)客戶端(2102a-2102b)的物理pcie交換機(jī)。每個(gè)its還耦合到its位于的相同片中的hts。此外,每個(gè)its可以耦合到與its位于的片不同的片中的一個(gè)或多個(gè)hts。在本發(fā)明的一個(gè)實(shí)施方式中,每個(gè)its連接到pci架構(gòu)中的每一個(gè)hts,產(chǎn)生pcie架構(gòu)的級之間的完全連接的網(wǎng)格網(wǎng)。本發(fā)明的實(shí) 施方式可以在沒有級之間的完全連接的網(wǎng)格網(wǎng)的情況下被實(shí)施,不偏離本發(fā)明。
在本發(fā)明的一個(gè)實(shí)施方式中,每個(gè)its被配置成:(i)從其連接的客戶端接收tlp并使用地址路由(例如存儲器地址路由)將該tlp路由到its上的合適的出口端口(下游端口中一者或上游端口),以及(ii)從its連接的一個(gè)或多個(gè)hts接收tlp,并使用地址路由將tlp路由到該its上的合適的出口端口(典型地下游端口)。
每個(gè)hts是耦合到一個(gè)或多個(gè)its(2108a-2108b)和一個(gè)或多個(gè)持久存儲模塊(psm(2110a-2110b))的物理pcie交換機(jī)。每個(gè)hts耦合到hts位于的相同片中的its。此外,每個(gè)hts可以連接到在與hts位于的片中不同的片中的零個(gè)或更多個(gè)its。在本發(fā)明的一個(gè)實(shí)施方式中,每個(gè)hts連接到pcie架構(gòu)中的每一個(gè)其他its,產(chǎn)生pcie架構(gòu)中的級之間的完全連接的網(wǎng)格網(wǎng)。每個(gè)hts還可以經(jīng)由其根端口(未示出)連接到處理器。本發(fā)明的實(shí)施方式可以在沒有級之間的完全連接的網(wǎng)格網(wǎng)的情況下被實(shí)施,而不偏離本發(fā)明。
在一個(gè)實(shí)施方式中,每個(gè)hts被配置成:(i)從其連接的持久存儲模塊(psm)接收tlp并使用地址路由將該tlp路由到hts上的合適出口端口(典型地下游端口)以及(ii)從hts連接到的一個(gè)或多個(gè)its接收tlp并使用地址路由將該tlp路由到hts上的合適出口端口(下游端口的一個(gè)或多個(gè)和/或上游端口)。
在一個(gè)實(shí)施方式中,存儲模塊(2100a-2110b)的每一個(gè)包括持久存儲(未示出)且可選地易失性存儲器(未示出)(例如,動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram和ddrsdram)。持久存儲可以包括但不限于nand閃存、nor閃存、磁性ram存儲器(m-ram)、自旋扭矩磁性ram存儲器(st-mram)、相變存儲器(pcm)、憶阻存儲器、 定義為非易失性存儲級存儲器(scm)的任意其他存儲器、磁盤和光盤。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解本發(fā)明的實(shí)施方式不限于存儲級存儲器。在本發(fā)明的一個(gè)實(shí)施方式中,psm的每一個(gè)是僅一個(gè)片的部分。
處理器2112a-2112b的每一個(gè)可以是具有被配置成執(zhí)行指令的單核或被配置成執(zhí)行指令的多核的電子電路的組。處理器可以使用復(fù)雜指令集(cisc)架構(gòu)或精簡指令集(risc)架構(gòu)被實(shí)施。在本發(fā)明的一個(gè)或多個(gè)實(shí)施方式中,處理器包括根復(fù)合體(如pcie標(biāo)準(zhǔn)定義)(未示出)。該根復(fù)合體將處理器連接到至少一個(gè)片和存儲器(114a、114b)(例如動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram和ddrsdram),其經(jīng)由pcie架構(gòu)可訪問但是不是pcie架構(gòu)中的任意片的部分。
在一個(gè)實(shí)施方式中,pcie架構(gòu)2100內(nèi)的處理器(2112a、2112b)能夠例如使用處理器互連(2116)(例如因特爾quickpath互連、因特爾前側(cè)總線或amd超傳輸)通信。本領(lǐng)域技術(shù)人員可以理解其他點(diǎn)對點(diǎn)通信機(jī)制可以被使用以允許處理器(2112a、2112b)之間的直接通信,而不偏離本發(fā)明的實(shí)施方式。雖然客戶端被耦合到its且psm被耦合到hts,客戶端還可以耦合到hts且psm連接到its。
在另一實(shí)施方式中,pcie架構(gòu)可以被實(shí)施,由此其不包括psm2110a-2110b;而是its和hts被連接到客戶端的分開的集合,其中pcie架構(gòu)促進(jìn)客戶端之間的通信。此外,雖然示出的pcie架構(gòu)僅包括兩個(gè)片、兩個(gè)處理器和四個(gè)psm,但是pcie架構(gòu)2100可以被實(shí)施具有更少或更多數(shù)量的上述組件的每一個(gè)而不偏離本發(fā)明。此外,雖然pcie架構(gòu)2100連接到四個(gè)客戶端和兩個(gè)存儲器,本發(fā)明的實(shí)施方式可以被實(shí)施以使得pcie架構(gòu)能夠與更少或更多數(shù)量的客戶端和/或存儲器連接。
此外,雖然本發(fā)明的實(shí)施方式參考包括存儲(例如psm2110a-2110b)的pcie架構(gòu)被描述,但是本發(fā)明的實(shí)施方式可以被實(shí)施以使得任意兩個(gè)設(shè) 備能夠使用pcie架構(gòu)進(jìn)行通信。例如,在本發(fā)明的一個(gè)實(shí)施方式中,客戶端可以是刀片服務(wù)器,其中刀片服務(wù)器不包括任意物理nic卡且psm可以被網(wǎng)絡(luò)端點(diǎn)設(shè)備替換。
在該示例中,網(wǎng)絡(luò)端點(diǎn)設(shè)備是被配置成使用聯(lián)網(wǎng)協(xié)議與網(wǎng)絡(luò)(即有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)或其組合)對接和經(jīng)由pcie與pcie架構(gòu)對接的設(shè)備。網(wǎng)絡(luò)端點(diǎn)設(shè)備的示例是picenic卡。網(wǎng)路端點(diǎn)設(shè)備的每一個(gè)可以包括持久存儲(如上面關(guān)于psm描述的)和存儲端點(diǎn)設(shè)備存儲器(例如動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram、ddrsdram、或任意其他類型的易失性存儲器)的組合。
在另一示例中,在本發(fā)明的一個(gè)或多個(gè)實(shí)施方式中,psm2110a-2110b可以被存儲端點(diǎn)設(shè)備(即,包括用于存儲數(shù)據(jù)和服務(wù)來自客戶端的讀取和寫入請求的功能的設(shè)備)替換。存儲端點(diǎn)設(shè)備每一個(gè)可以包括持久存儲(如以上關(guān)于psm所描述)和存儲端點(diǎn)設(shè)備存儲器(例如動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram、ddrsdram、或任意其他類型的易失性存儲器)的組合。存儲端點(diǎn)設(shè)備的示例是存儲設(shè)施。本發(fā)明不限于該示例。
此外,本發(fā)明的實(shí)施方式可以被擴(kuò)展為包含經(jīng)由pcie架構(gòu)通信的兩個(gè)或更多個(gè)設(shè)備。在一般情況中,psm2110a-2110b可以一般化為目標(biāo)設(shè)備,其中目標(biāo)設(shè)備可以包括psm、網(wǎng)絡(luò)端點(diǎn)設(shè)備、存儲端點(diǎn)設(shè)備、或能夠使用pcie通信的任意其他設(shè)備。雖然pcie架構(gòu)2100被示出為包括psm(或更一般化的目的設(shè)備),pcie架構(gòu)2100可以被實(shí)施為其不包括目的設(shè)備;而是pcie架構(gòu)2100僅包括用于連接到目的設(shè)備的必要物理組件。
圖7是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的存儲模塊的示例的框圖。存儲模塊2320包括存儲模塊控制器(2322)、存儲器(2324)和一個(gè)或多個(gè)持久存儲器模塊(2330a-2330n)。持久存儲器模塊2330a-2330n可以是固態(tài) 存儲器設(shè)備,例如閃存設(shè)備。在一個(gè)實(shí)施方式中,存儲模塊控制器(2322)被配置成接收從一個(gè)或多個(gè)控制模塊讀取和/或向一個(gè)或多個(gè)控制模塊寫入數(shù)據(jù)的請求。此外,存儲模塊控制器(2322)被配置成使用存儲器(2324)和/或持久存儲器模塊(2330a-2330n)服務(wù)該讀取和寫入請求。存儲模塊控制器(2322)可以包括dma引擎,其中dma引擎被配置成從存儲器(2324)或從持久存儲器模塊(2330a-2330n)的一個(gè)讀取數(shù)據(jù)并將該數(shù)據(jù)的副本寫入到客戶端存儲器中的物理地址。此外,dma引擎可以被配置成將來自存儲器(2324)的數(shù)據(jù)寫入到持久存儲器模塊的一個(gè)或多個(gè)。在本發(fā)明的一個(gè)實(shí)施方式中,dma引擎被配置成由處理器編程。
存儲器(2324)可以是任意易失性存儲器,包括但不限于動態(tài)隨機(jī)存取存儲器(dram)、同步dram、sdrsdram以及ddrsdram。存儲器(2324)可以邏輯上或物理上被劃分為圓頂存儲器(2326)和緩存(2328)。在在存儲模塊中通知供電故障的情況下(或在存儲模塊可以丟失供電的另一情況下)存儲模塊控制器(2322)被配置成將圓頂存儲器(2326)的整個(gè)內(nèi)容寫入到持久存儲器模塊(2330a-2330n)的一個(gè)或多個(gè)。在本發(fā)明的一個(gè)實(shí)施方式中,存儲模塊控制器(2322)被配置成在供電故障通知到存儲模塊的供電實(shí)際丟失之間的時(shí)間將圓頂存儲器(2326)的整個(gè)內(nèi)容寫入到持久存儲器模塊(2330a-2330n)的一個(gè)或多個(gè)。相反,緩存(2328)的內(nèi)容在供電故障的情況下(或存儲模塊可以丟失供電的另一情況下)丟失。
持久存儲器模塊可以是使用固態(tài)存儲器存儲持久數(shù)據(jù)的任意數(shù)據(jù)存儲設(shè)備。在本發(fā)明的一個(gè)實(shí)施方式中,固態(tài)存儲器可以包括但不限于nand閃存、nor閃存、磁性ram存儲器(m-ram)、自旋扭矩磁性ram存儲器(st-mram)、相變存儲器(pcm)、憶阻存儲器、或定義為非易失性存儲級存儲器(scm)的任意其他存儲器。本領(lǐng)域技術(shù)人員可以理解本發(fā)明的實(shí)施方式不限于存儲級存儲器。
在一個(gè)實(shí)施方式中,以下的存儲位置是統(tǒng)一地址空間的部分:(i)經(jīng)由客戶端交換機(jī)可訪問的客戶端存儲器的部分,(ii)控制模塊中的存儲器,(iii)存儲模塊中的存儲器,以及(iv)固態(tài)存儲器模塊。因此,從存儲設(shè)施中的處理器角度來看,上述的存儲位置(當(dāng)物理上分開時(shí))表現(xiàn)為物理地址的單個(gè)池。換句話說,處理器可以發(fā)送用于存儲在統(tǒng)一地址空間中的物理地址的任意的數(shù)據(jù)的讀取和/或?qū)懭胝埱蟆I鲜龃鎯ξ恢每梢苑Q為存儲架構(gòu),其使用統(tǒng)一地址空間可訪問。統(tǒng)一地址空間部分由客戶端交換機(jī)中的不透明橋創(chuàng)建,其允許控制模塊中的處理器“看到”客戶端存儲器的部分。因此,控制模塊中的處理器可以在其能夠“看到”的客戶端存儲器的部分執(zhí)行讀取和/或?qū)懭胝埱蟆?/p>
之前詳細(xì)描述的一些部分已經(jīng)就計(jì)算機(jī)存儲器內(nèi)的數(shù)據(jù)比特的操作的算法和符號表述方面被描述。這些算法描述和表述是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員使用的方式,以最有效向其他領(lǐng)域技術(shù)人員表達(dá)其工作的實(shí)質(zhì)。這里算法一般地被認(rèn)為是導(dǎo)致期望結(jié)果的操作的自相一致的序列。該操作是需要物理量的物理操作。
但是應(yīng)當(dāng)知道,這些和類似術(shù)語的全部是與合適的物理量相關(guān)聯(lián)且僅是應(yīng)用于這些量的方便標(biāo)簽。除非從以上描述明顯另有指明,否則可以理解本說明書中,使用諸如權(quán)利要求中提出的這些術(shù)語的描述涉及計(jì)算機(jī)系統(tǒng)或類似的電子計(jì)算設(shè)備的動作和過程,其將計(jì)算機(jī)系統(tǒng)的寄存器和存儲器內(nèi)的物理(電子)量表述的數(shù)據(jù)處理并轉(zhuǎn)換成計(jì)算機(jī)系統(tǒng)存儲器或寄存器或其他該信息存儲、傳輸或顯示設(shè)備內(nèi)的物理量類似表述的其他數(shù)據(jù)。
本發(fā)明的實(shí)施方式還涉及用于執(zhí)行這里的操作的裝置。這樣的計(jì)算機(jī)程序被存儲在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)中。機(jī)器可讀介質(zhì)包括用于以機(jī)器(例如計(jì)算機(jī))可讀的形式存儲信息的任意機(jī)制。例如,機(jī)器可讀(例如計(jì)算機(jī)可讀)介質(zhì)包括機(jī)器(例如計(jì)算機(jī))可讀存儲介質(zhì)(例如只讀存儲器(“rom”)、 隨機(jī)存取存儲器(“ram”)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存設(shè)備)。
之前圖中示出的過程或方法可以由處理邏輯執(zhí)行,其包括硬件(例如電路、專用邏輯等)、(例如包含在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)中的)軟件或其組合。雖然以上以一些有序操作的方式描述過程或方法,應(yīng)當(dāng)理解描述的操作的一些可以以不同順序被執(zhí)行。此外,可以并行而不是按順序執(zhí)行一些操作。
本發(fā)明的實(shí)施方式?jīng)]有參考任意特定編程語言描述,可以理解各種編程語言可以用于實(shí)施這里描述的本發(fā)明的實(shí)施方式的教示。
在上面的說明書中,本發(fā)明的實(shí)施方式參考其特定示意性實(shí)施方式被描述。明顯的是可以對其進(jìn)行各種修改而不偏離權(quán)利要求書提出的本發(fā)明的更寬實(shí)質(zhì)和范圍。因此,說明書和附圖被視為示意性而非限制性。