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

用于提供存儲系統(tǒng)的訪問的方法和系統(tǒng)與流程

文檔序號:12824296閱讀:193來源:國知局
用于提供存儲系統(tǒng)的訪問的方法和系統(tǒng)與流程

本發(fā)明的實施方式一般涉及數(shù)據(jù)存儲系統(tǒng)。更特別地,本發(fā)明的實施方式涉及使用作為控制模塊之間的傳輸層的共享存儲模塊提供對存儲系統(tǒng)的訪問。



背景技術:

系統(tǒng)能夠將數(shù)據(jù)寫入到持久存儲和從持久存儲讀取數(shù)據(jù)的速度通常是該系統(tǒng)總體性能的關鍵因素。向和從持久存儲系統(tǒng)傳輸數(shù)據(jù)的傳統(tǒng)方式需要在客戶端系統(tǒng)和持久存儲系統(tǒng)上的軟件、固件和硬件的多個層的處理。此外,典型地數(shù)據(jù)在其在這些層之間移動時被復制。結果是,在讀取或寫入該下面的物理存儲介質所需的等待時間之外導致額外的等待時間,且該等待時間降低系統(tǒng)的總體性能。

在一些情形中,多個處理器或系統(tǒng)被提供給客戶端用于訪問存儲在存儲系統(tǒng)中的數(shù)據(jù),可能地用于性能增強或冗余的目的。為了兩個這樣的系統(tǒng)進行通信,系統(tǒng)的每一個需要包括足夠的硬件和/或軟件來使得這兩個系統(tǒng)對接。用于這兩個系統(tǒng)或處理器彼此通信的常規(guī)方法包括相對慢或被設計用于低等待時間而不是高帶寬的網絡連接或處理器間鏈路。

附圖說明

在附圖中通過示例且非限制的方式示出了本發(fā)明的實施方式,其中相同的附圖標記表示相似的元件。

圖1是示出根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)的框圖;

圖2a是示出根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)的讀取過程的框 圖;

圖2b是示出根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)的寫入過程的框圖;

圖3是示出根據(jù)本發(fā)明的一個實施方式的在存儲系統(tǒng)中讀取數(shù)據(jù)的過程的流程圖;

圖4是示出根據(jù)本發(fā)明的一個實施方式在存儲系統(tǒng)中寫入數(shù)據(jù)的過程的流程圖;

圖5a-5d是示出根據(jù)本發(fā)明的某些實施方式的存儲設施的示例的框圖;

圖6是根據(jù)本發(fā)明的一個實施方式的通信架構的示例的框圖;

圖7是根據(jù)本發(fā)明的一個實施方式的存儲模塊的示例的框圖。

具體實施方式

將參考下面描述的細節(jié)來描述本發(fā)明的各種實施方式和方面,且附圖將示出各種實施方式。下面的描述和附圖是示出本發(fā)明且不視為限制本發(fā)明。許多特定細節(jié)被描述以提供對本發(fā)明的各種實施方式的全面理解。但是,在某些情況中,公知或常規(guī)的細節(jié)沒有被描述以提供對本發(fā)明的實施方式的簡潔描述。

在說明書中對“一個實施方式”或“一實施方式”的引用意思是與該實施方式相結合所描述的特定特征、結構或特性能夠包括在本發(fā)明的至少一個實施方式中。在本說明書中不同位置出現(xiàn)的短語“在一個實施方式中”不必都指同一個實施方式。

根據(jù)一些實施方式,存儲系統(tǒng)包括經由通信架構(例如高速通信架構)通信耦合或連接一個或多個存儲模塊的一個或多個客戶端??蛻舳私浻啥鄠€控制模塊訪問存儲在存儲模塊的存儲設備的任意中的數(shù)據(jù),該多個控制模塊包括第一控制模塊和第二控制模塊??刂颇K經由通信架構耦合到客戶端和 存儲模塊。第一控制模塊經由處理器間鏈路(也稱為處理器互連)耦合到第二控制模塊,該處理器間鏈路與通信架構相比可以具有更低的速度或容量??蛻舳四軌蚪浻傻谝豢刂颇K(例如主路徑)和/或第二控制模塊(例如輔助路徑)訪問存儲在存儲模塊中的數(shù)據(jù)。當路徑之一不可用時,客戶端能夠使用與另一路徑相關聯(lián)的控制模塊經由該另一路徑訪問(例如讀取,寫入)數(shù)據(jù)。控制模塊經由處理器間鏈路彼此通信以使得數(shù)據(jù)在在兩個控制模塊之間共享的存儲模塊中被訪問。

在一個實施方式中,當?shù)谝豢刂颇K(cm)從客戶端設備接收到讀取請求以從與第二cm相關聯(lián)的存儲位置讀取數(shù)據(jù)時,第一cm經由處理器間鏈路傳送控制信號給第二cm以請求該數(shù)據(jù)。響應于該控制信號,第二cm從存儲模塊的該存儲位置獲取被請求的數(shù)據(jù)并使得該被請求的數(shù)據(jù)在由第一cm可訪問的存儲模塊的存儲器區(qū)中可得。第二cm然后經由處理器間鏈路傳送針對該控制信號的響應或應答給第一cm,該響應或應答指示被請求的數(shù)據(jù)在該存儲器區(qū)中可得。響應于該響應或應答,第一cm從該存儲器區(qū)獲取該數(shù)據(jù)并將該數(shù)據(jù)返回給客戶端。在一個實施方式中,第一cm發(fā)起數(shù)據(jù)事務(例如直接存儲器訪問或dma會話)以將被請求的數(shù)據(jù)從該存儲器區(qū)移到與客戶端設備相關聯(lián)的客戶端存儲器,例如經由高速通信架構而不必經過第二cm。結果是,即使從客戶端設備到第二cm的路徑故障,客戶端設備仍然能夠通過高速通信架構使用共享的存儲模塊經由第一cm訪問該數(shù)據(jù)。

在另一實施方式中,當?shù)谝籧m從客戶端設備接收到用于將數(shù)據(jù)寫入到與第二cm相關聯(lián)的存儲位置的寫入請求時,第一cm發(fā)起數(shù)據(jù)事務(例如dma事務)以將該數(shù)據(jù)從客戶端設備的客戶端存儲器移到與第一cm相關聯(lián)的存儲模塊的存儲器區(qū)(例如通過高速通信架構)。可替換地,客戶端發(fā)起該數(shù)據(jù)事務。第一cm然后經由處理器間鏈路傳送控制信號給第二cm, 指示在該存儲器區(qū)中可得的該數(shù)據(jù)要被寫入到與第二cm相關聯(lián)的持久存儲設備的目標存儲位置。響應于該控制信號,第二cm使得該數(shù)據(jù)從與第一cm相關聯(lián)的存儲器區(qū)被復制到或移到存儲模塊的目標存儲位置。在特定實施方式中,數(shù)據(jù)還可以被復制到與第二cm相關聯(lián)或第二cm內的存儲器,以允許第二cm對該數(shù)據(jù)執(zhí)行某些操作,例如奇偶構建。之后,第二cm經由處理器間鏈路返回指示該數(shù)據(jù)已經成功被寫入的響應給第一cm。結果是,即使從客戶端設備到第二cm的路徑故障,客戶端設備仍然能夠通過高速通信架構使用共享存儲模塊經由第一cm寫入該數(shù)據(jù)。

圖1是示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)的框圖。存儲系統(tǒng)100可以代表任意存儲服務器,例如云存儲服務器、內容服務器等。參考圖1,存儲系統(tǒng)100包括經由一個或多個集線器或交換設備104a-104b通信耦合到控制模塊102a-102b和一個或多個存儲模塊110的一個或多個客戶端設備101(也簡單稱為客戶端)。雖然示出了僅一個客戶端101,但是能夠使用多個客戶端。類似地,雖然示出僅一個存儲模塊110,但也能夠使用多個存儲模塊且除了cm102a-102b之外還能使用更多cm,這依據(jù)特定配置或要求。此外,cm102a-102b的每一個可以包括處理器和本地存儲器,例如cm存儲器設備105a-105b(統(tǒng)稱為cm存儲器設備105)。cm存儲器設備105可以是任意種易失性存儲器設備,例如動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram或ddrsdram。注意到cm能夠是多處理器系統(tǒng)中單個處理器。在其他配置中,cm能夠被實施為獨立的服務器,具有其自己的存儲器和本地存儲。cm能夠是在相同或不同機架(chassis)中的獨立的服務器。

在一個實施方式中,客戶端101經由通信架構耦合到cm102a-102b和存儲模塊110,而cm102a和cm102b經由處理器間鏈路(也稱為處理器互連)彼此耦合。在該示例中,為了示出的目的,通信架構由組件101-104b 和110之間的實線或連接表示,而處理器間鏈路106由虛線或虛線連接表示。注意到處理器間鏈路能夠是互連、總線、網絡或這些的組合。在該示例中實線和集線器/交換設備104a-104b表示的通信架構可以是全網通信架構,其允許組件101-104b和110的每一個彼此通信并彼此訪問資源(例如存儲器、處理資源)。

在一個實施方式中,存儲系統(tǒng)100可以是服務器或服務器簇的部分,用于通過網絡(例如因特網)提供數(shù)據(jù)存儲或內容服務給遠程設備。例如,客戶端設備101可以是耦合到cm102a-102b和存儲模塊110表示的后端存儲設施的前端服務器組件(例如網頁服務器、內容服務器或云服務器)。在這樣的配置中,客戶端101操作作為用于通過因特網提供服務給遠程設備的服務器,同時客戶端101通過通信架構操作作為cm102a-102b和存儲模塊110表示的存儲設施的客戶端。cm102a-102b也統(tǒng)稱為cm102,可以操作為存儲設施的存儲控制器或服務器組件。

在一個實施方式中,存儲系統(tǒng)100可以在電子機柜內被設施。例如,客戶端101可以被實施為插入到代表通信架構(其由實線連接和集線器/交換設備104a-104b表示)的背板的客戶端刀片(blade)或面板(plane)的部分。cm102a-102b可以被實施為插入到該背板的一個或多個控制刀片或控制面板的部分。存儲模塊110可以被實施為插入到背板的存儲刀片(或存儲面板或數(shù)據(jù)面板)的部分。因此,所有這些刀片使用各種合適的通信協(xié)議經由通信架構彼此耦合,而cm102a-102b經由控制刀片內的處理器間鏈路106彼此耦合。還可以存在其他配置。

在一個實施方式中,存儲模塊110包括一個或多個隨機存取存儲器(ram)設備和一個或多個持久存儲設備(未示出),其可以由存儲模塊控制器120控制或管理。存儲模塊110的ram設備和持久存儲設備可以在邏輯或物理上被劃分成存儲分區(qū)125a-125b(統(tǒng)稱為存儲分區(qū)125)。存儲分區(qū) 125a-125b可以分別被分配用于cm102a-102b。存儲分區(qū)125a-125b的每一個包括相應的ram區(qū),例如ram區(qū)121a-121b(統(tǒng)稱為ram121)。ram設備可以是任意類型的易失性存儲器設備,例如動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram或ddrsdram。類似地,存儲分區(qū)125a-125b的每一個包括相應的持久存儲器或存儲區(qū),例如持久存儲器區(qū)122a-122b(統(tǒng)稱為持久存儲器區(qū)122)。持久存儲器區(qū)122能夠是任意種類的非易失性存儲設備,例如固態(tài)存儲器設備(例如閃存設備)。cm102a-102b可以通過通信架構與存儲模塊控制器120通信以訪問存儲分區(qū)125的存儲位置。

在一個實施方式中,存儲模塊控制器120被配置成接收從cm102a-102b讀取數(shù)據(jù)和/或將數(shù)據(jù)寫入到cm102a-102b的請求。此外,存儲模塊控制器120被配置成使用存儲分區(qū)125a-125b服務該讀取請求和寫入請求。此外,存儲模塊控制器120可以包括用于在存儲分區(qū)125、cm存儲器設備105和客戶端101的客戶端存儲器(未示出)之間移動或復制數(shù)據(jù)的直接存儲器訪問(dma)引擎。

在一個實施方式中,通信架構可以是任意種類的高速通信架構,例如pcie、以太網、光纖信道或infinibandtm架構。處理器間鏈路106可以是因特爾quickpathtm互連或其他點對點通信鏈路。

客戶端101可以是包括用于發(fā)送讀取請求給存儲設施和/或發(fā)送寫入請求給存儲設施的功能的任意系統(tǒng)??蛻舳?01可以包括客戶端處理器和客戶端存儲器(未示出)。在一個實施方式中,客戶端101被配置成使用各種通信協(xié)議與存儲設施(由控制模塊102a-102b和存儲模塊110的一個或多個表示)通信,該通信協(xié)議例如是外圍組件接口(pci)、高速pci(pcie)、擴展pci(pci-x)、高速非易失性存儲器(nvme)、通過pcie架構的高速非易失性存儲器(nvme)、通過以太網架構的高速非易失性存儲器(nvme) 以及通過infiniband架構的高速非易失性存儲器(nvme)。

在一個實施方式中,在客戶端101、cm102a-102b和存儲模塊110之間交換的命令和響應/應答可以經由保存在與這些組件相關聯(lián)的各種存儲器中的相應提交隊列和完成隊列被交換。例如,cm存儲器105a-105b的每一個可以包含用于客戶端101和存儲模塊110的單獨或分開的提交隊列和完成隊列。類似地,客戶端101的客戶端存儲器可以為cm102a-102b的每一個保存提交隊列和完成隊列。端點使用提交隊列來通過通信架構提交命令給另一端點用于特定操作。端點使用完成隊列設置針對之前經由提交隊列提交的命令的應答或響應以用信號通知另一端點該命令已完成。

例如,當客戶端101向cm102a發(fā)起讀取請求時,客戶端101在存儲器105a中保存的與cm102a相關聯(lián)的提交隊列中設置讀取請求命令。通過在提交隊列中設置命令,cm102a可以例如經由中斷(例如門鈴中斷)被通知。類似地,當cm102a完成從客戶端101發(fā)送的命令時,cm102a可以在與客戶端101相關聯(lián)的完成隊列中設置指示符(例如應答、響應)以用信號通知客戶端101該命令已經完成。與客戶端101相關聯(lián)的完成隊列可以被保存在客戶端101的客戶端存儲器中。關于客戶端101、cm102a-102b和存儲模塊110以及通信架構的進一步的信息將在下面參考圖5a-5d和6-7進一步詳細描述。

在一個實施方式中,cm102a可以具有針對其存儲分區(qū)125a的讀取和寫入訪問權利或特權,和針對存儲分區(qū)125b的僅讀取訪問權利或特權。類似地,cm102b可以具有針對存儲分區(qū)125b的讀取和寫入訪問權利,且針對存儲分區(qū)125a具有僅讀取訪問權利。可替換地,cm102a-102b都可以具有針對所有存儲器區(qū)和存儲區(qū)的讀取和寫入訪問權利,只要存儲模塊控制器120能夠管理或控制訪問爭用和/或沖突/相干。在另一實施方式中,cm102a-102b能夠直接控制和管理它們各自的存儲模塊110的存儲區(qū)和存儲器 區(qū)。在這樣的配置中,存儲模塊控制器120可以是可選的。

典型地,客戶端101能夠經由通過cm102a的第一通信路徑訪問存儲在與cm102a相關聯(lián)的存儲區(qū)中的數(shù)據(jù)。同樣地,客戶端101能夠經由通過cm102b的第二通信路徑訪問存儲在與cm102b相關聯(lián)的存儲區(qū)中的數(shù)據(jù)。這兩個路徑同時可用于客戶端101以為了更好帶寬。可替換地,一條路徑可以是另一條路徑的冗余路徑。當一條路徑(例如通過cm102b的路徑)不可用(例如故障)時,客戶端101可以經過另一條路徑(例如通過cm102a的路徑)來從與不可用路徑相關聯(lián)的存儲區(qū)讀取數(shù)據(jù)或向其寫入數(shù)據(jù)。當使用該備選路線時,常規(guī)系統(tǒng)可能必須使用處理器間鏈路106來將數(shù)據(jù)從一個cm傳輸?shù)搅硪粋€cm。但是,與通信架構相比,處理器間鏈路106通常是比較慢或具有較低帶寬容量。由于cm102a-102b都經由高速通信架構耦合到存儲模塊110,因此存儲模塊110可以用作cm102a-102b之間的傳輸路徑以使客戶端101避免故障的路徑并使用其他可用路徑來實現(xiàn)相同的目的,而不必使用處理器間鏈路106來攜帶或傳輸數(shù)據(jù)。

根據(jù)一個實施方式,當?shù)谝籧m(例如cm102a)從客戶端101接收到用于從與第二cm(例如cm102b)相關聯(lián)的存儲位置讀取數(shù)據(jù)的請求時,第一cm經由處理器間鏈路106傳送控制信號給第二cm以從第二cm請求數(shù)據(jù)。響應于該控制信號,第二cm與存儲模塊控制器120通信以從該存儲位置獲取被請求的數(shù)據(jù)并使得該被請求的數(shù)據(jù)在與第一cm相關聯(lián)的存儲器區(qū)中可得。第二cm經由處理器間鏈路106發(fā)送響應給第一cm,指示被請求的數(shù)據(jù)可得。響應于該響應,第一cm發(fā)起數(shù)據(jù)事務(例如dma會話)以通過通信架構將被請求的數(shù)據(jù)移到客戶端101客戶端存儲器(例如未示出),而不必經過第二cm和處理器間鏈路106。

根據(jù)另一個實施方式,當?shù)谝籧m(例如cm102a)從客戶端101接收到用于向與第二cm(例如cm102b)相關聯(lián)的存儲位置寫入數(shù)據(jù)的請求時, 該第一cm發(fā)起數(shù)據(jù)事務(例如dma會話)以通過通信架構將被請求的數(shù)據(jù)從客戶端101的客戶端存儲器(例如未示出)移到或復制到與第一cm相關聯(lián)的存儲器位置。第一cm然后經由處理器間鏈路106傳送控制信號給第二cm,指示該數(shù)據(jù)在該存儲器位置處可得。響應于該控制信號,第二cm從該第一cm的該存儲器位置獲取該數(shù)據(jù)并將該數(shù)據(jù)寫入到目的地。因此,處理器間鏈路106被用作控制路徑,而通信架構被用作用于訪問數(shù)據(jù)的數(shù)據(jù)路徑。注意到術語“存儲器位置”是指易失性存儲器(例如ram區(qū)121a-121b、cm存儲器105a-105b)內的位置。術語“存儲位置”是指非易失性或持久存儲器或存儲設備(例如持久存儲器區(qū)122a-122b)內的位置。

圖2a是示出根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)的讀取過程的框圖。參考圖2a,系統(tǒng)200可以被實施為圖1的系統(tǒng)100的部分。在一個實施方式中,假定從客戶端101到cm102b的路徑故障,這可以是連接201-203的任意。在該示例中,客戶端101經由可選集線器/交換設備104a經由路徑211(其是通信架構的部分)傳送讀取請求給cm102a。該讀取請求用于讀取存儲在與cm102b相關聯(lián)的存儲模塊110的持久存儲設備的存儲區(qū)中的數(shù)據(jù),在該示例中是存儲分區(qū)125b的存儲設備122b。

響應于該讀取請求,cm102a經由處理器間鏈路傳送控制信號給cm102b(由操作212表示)??刂菩盘柨梢园俗R被請求的數(shù)據(jù)的標識符、要被讀取的數(shù)據(jù)的尺寸和/或目標存儲位置(例如持久存儲器區(qū)122b的存儲位置)。響應于該控制信號,cm102b經由路徑213與存儲模塊控制器120通信以從來自持久存儲設備122b的目標存儲位置獲取被請求的數(shù)據(jù)并將該數(shù)據(jù)置于與cm102a相關聯(lián)的存儲器區(qū)121a的預定存儲器位置。該預定存儲器位置可以是預先協(xié)定好的或在控制信號中被指定的存儲器位置。一旦被請求的數(shù)據(jù)已經被放置在存儲器區(qū)121a中,cm102b經由處理器間鏈路傳送針對控制信號的響應給cm102a(由操作214表示)。響應于該響應,cm 102a發(fā)起數(shù)據(jù)事務(例如dma事務)以通過通信架構經由經過可選集線器/交換設備104a的路徑215(a)和215(b)將數(shù)據(jù)從存儲器區(qū)121a移到或復制到客戶端101的客戶端存儲器(未示出)。

根據(jù)另一實施方式,被請求的數(shù)據(jù)可以從與cm102b相關聯(lián)的持久存儲設備122b的目標存儲位置被復制到存儲器區(qū)121b。cm102b然后經由處理器間鏈路傳送響應給cm102a。作為響應,在發(fā)起從存儲器區(qū)121a到客戶端101的客戶端存儲器的數(shù)據(jù)事務之前,cm102a將數(shù)據(jù)從存儲器區(qū)121b復制到或移到(例如經由存儲模塊控制器120)存儲器區(qū)121a。在一個實施方式中,cm102a可以指令存儲模塊控制器120編碼或配置存儲模塊控制器120內的dma引擎(未示出)??商鎿Q地,cm102a可以與集線器/交換設備104a內的dma引擎通信以將數(shù)據(jù)從存儲器區(qū)121a移到客戶端101的客戶端存儲器。此外,cm102a可以與客戶端101通信以指令客戶端101編碼或配置客戶端101內的dma引擎從而將數(shù)據(jù)從存儲器區(qū)121a移到客戶端101的客戶端存儲器。

根據(jù)進一步實施方式,存儲分區(qū)125a-125b的任意可以被配置成可由cm102a-102b的任意訪問。cm102a-102b還可以控制和/或管理存儲模塊110的存儲資源而不用涉及存儲模塊控制器120。在這樣的配置中,響應于讀取請求,cm102b能夠訪問存儲分區(qū)125b中存儲被請求的數(shù)據(jù)的存儲位置以使得被請求的數(shù)據(jù)在存儲器區(qū)121a或存儲器區(qū)121b中可得。例如,cm102b能夠基于控制信號定位存儲在持久存儲器區(qū)122b中的被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)加載或復制在存儲器區(qū)121a或121b中。cm102a然后能夠發(fā)起數(shù)據(jù)事務以將數(shù)據(jù)從存儲器區(qū)121a或存儲器區(qū)121b移到客戶端101的客戶端存儲器。這樣的配置能夠消除對在存儲器區(qū)121b與存儲器區(qū)121a之間復制數(shù)據(jù)的需要。

根據(jù)另一實施方式,cm102a能夠預留ram區(qū)121a中的預定存儲器 位置。響應于從cm102a接收的控制信號,cm102b從持久存儲器區(qū)122b獲取被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)加載到ram區(qū)121a的預定的存儲器位置。cm102a然后將被請求的數(shù)據(jù)從ram區(qū)121a傳輸?shù)娇蛻舳?01。

圖2b是示出根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)的讀取過程的框圖。參考圖2b,系統(tǒng)200可以被實施為圖1的系統(tǒng)100的部分。在一個實施方式中,假定從客戶端101到cm102b的路徑故障,這可以是連接201-202或集線器/交換設備104b與存儲模塊110之間的連接(例如圖2a的路徑203)的任意。在該示例中,客戶端101經由可選集線器/交換設備104a經由路徑251(其是通信架構的部分)傳送寫入請求給cm102a。該寫入請求用于將數(shù)據(jù)寫入到存儲模塊110的持久存儲設備的存儲位置或區(qū),在該示例中是存儲設備122b,其中目標存儲區(qū)與cm102b相關聯(lián)。響應于該寫入請求,要被寫入的數(shù)據(jù)經由路徑252被傳送。例如,數(shù)據(jù)可以經由數(shù)據(jù)事務(例如dma事務)從客戶端設備101的客戶端存儲器被傳送到ram區(qū)121a的存儲器位置。數(shù)據(jù)事務可以由客戶端101、集線器/交換設備104a、cm102a或存儲模塊控制器120內的dma引擎發(fā)起。

一旦數(shù)據(jù)已經被存儲在存儲器區(qū)121a中,cm102a通過處理器間鏈路經由路徑253傳送控制信號給cm102b??刂菩盘柨梢园ㄖ甘敬鎯ζ鲄^(qū)121a中存儲該數(shù)據(jù)的存儲位置、數(shù)據(jù)尺寸以及持久存儲區(qū)122b的目標存儲位置的信息。響應于該控制信號,cm102b將數(shù)據(jù)從存儲器區(qū)121a復制到或移到存儲器121b。cm102b可以與存儲模塊控制器120通信以將數(shù)據(jù)從存儲器區(qū)121a復制到或移到存儲器區(qū)121b。數(shù)據(jù)然后從存儲器區(qū)121b存儲到持久存儲區(qū)122b的目標存儲位置。此外,cm102b可以經由用于其他操作(例如奇偶計算)的路徑254將數(shù)據(jù)上傳到其本地存儲器105b。

cm102b然后通過處理器間鏈路經由路徑255傳送響應或應答給cm102a以應答寫入信號。cm102a然后經由路徑256返回寫入操作的狀態(tài)給 客戶端101。可替換地,根據(jù)一個實施方式,一旦數(shù)據(jù)已經從客戶端101的客戶端存儲器被傳送到存儲器區(qū)121a,cm102a能夠返回該狀態(tài)或應答寫入操作給客戶端101,而不必等待cm102b將數(shù)據(jù)從存儲器區(qū)121a復制到持久存儲區(qū)122b的目標存儲位置。因此,由于cm102a-102b經由通信架構耦合到存儲模塊110,存儲模塊110能夠用作用于傳輸數(shù)據(jù)的傳輸層作為數(shù)據(jù)路徑,而處理器間鏈路用作控制路徑用于交換控制信號。

根據(jù)進一步實施方式,如上所述,存儲分區(qū)125a-125b的任意可以被配置成可由cm102a-102b的任意訪問。cm102a-102b還可以控制和/或管理存儲模塊110的存儲資源,而不涉及存儲模塊控制器120。在這樣的配置中,響應于寫入請求,cm102a能夠存儲或使得被請求的數(shù)據(jù)被存儲在存儲器區(qū)121a或存儲器區(qū)121b中。cm102a然后經由處理器間鏈路106傳送控制信號給cm102b,其中控制信號標識被請求的數(shù)據(jù)被存儲在哪。cm102b然后能夠基于控制信號從存儲器區(qū)121a或存儲器區(qū)121b獲取被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)存儲在持久存儲器區(qū)122b的目標存儲位置中。這樣的配置能夠消除對在存儲器區(qū)121a與存儲器區(qū)121b之間復制數(shù)據(jù)的需要。

圖3是示出根據(jù)本發(fā)明的一個實施方式的在存儲系統(tǒng)中讀取數(shù)據(jù)的過程的流程圖。過程300可以由處理邏輯執(zhí)行,該處理邏輯包括硬件(例如電路、專用邏輯等)、軟件(例如包含在非暫態(tài)計算機可讀介質上),或硬件和軟件的組合。例如,過程300可以由圖1的系統(tǒng)100執(zhí)行。參考圖3,在框301,第一cm從客戶端設備接收用于從與第二cm相關聯(lián)的第二存儲位置讀取數(shù)據(jù)的讀取請求。該讀取請求可以指定或標識數(shù)據(jù)和存儲該數(shù)據(jù)的存儲位置。響應于該讀取請求,在框302,第一cm經由處理器間鏈路傳送控制信號給第二cm以請求讀取被請求的數(shù)據(jù)。響應于該控制信號,在框303,第二cm使得被請求的數(shù)據(jù)為第一cm可得。在一個實施方式中,第二cm使得被請求的數(shù)據(jù)從第二存儲位置被復制到或移到與第一cm相關聯(lián)的第一存儲器 位置。在框304,第二cm通過處理器間鏈路傳送針對控制信號的響應或應答給第一cm。在框305,第一cm使得被請求的數(shù)據(jù)從第一存儲器位置被傳送(例如經由dma)到客戶端。

可替換地,存儲分區(qū)的任意非持久資源可以被配置成可由第一cm和第二cm的任意訪問。第一cm和第二cm還可以控制和/或管理存儲模塊110的存儲資源,而不涉及存儲模塊控制器。在這樣的配置中,響應于讀取請求,第一cm能夠通過處理器間鏈路經由控制信號與第二cm通信。響應于該控制信號,第二cm能夠訪問目標存儲分區(qū)中存儲被請求的數(shù)據(jù)的存儲位置以使得該被請求的數(shù)據(jù)在與第一cm相關聯(lián)的第一存儲器區(qū)中或與第二cm相關聯(lián)的第二存儲器區(qū)中可得。第一cm然后能夠發(fā)起數(shù)據(jù)事務以將數(shù)據(jù)從第一存儲器區(qū)或第二存儲器區(qū)移到客戶端的客戶端存儲器。這樣的配置能夠消除對在第二存儲器與域第一存儲器區(qū)之間復制數(shù)據(jù)的需要。

圖4是示出根據(jù)本發(fā)明的一個實施方式的在存儲系統(tǒng)中寫入數(shù)據(jù)的過程的流程圖。過程400可以由處理邏輯執(zhí)行,該處理邏輯包括硬件(例如電路、專用邏輯等)、軟件(例如包含在非暫態(tài)計算機可讀介質上),或硬件和軟件的組合。例如,過程400可以由圖1的系統(tǒng)100執(zhí)行。參考圖4,在框401,第一cm從客戶端接收用于將數(shù)據(jù)寫入到與第二cm相關聯(lián)的存儲模塊的第二存儲位置的寫入請求。響應于該寫入請求,第一cm使得(例如經由dma)被請求的數(shù)據(jù)從客戶端被傳送并存儲在與第一cm相關聯(lián)的存儲模塊的第一存儲器位置中。在框403,第一cm通過處理器間鏈路傳送控制信號給第二cm以指示數(shù)據(jù)準備好。響應于該控制信號,在框404,第二cm使得被請求的數(shù)據(jù)從第一存儲器位置被復制到或移到存儲模塊的第二存儲位置。在框405,第二cm通過處理器間鏈路傳送響應給第一cm以應答數(shù)據(jù)已經被寫入。響應于該響應,在框406,第一cm返回狀態(tài)給客戶端。

根據(jù)進一步實施方式,如上所述,存儲分區(qū)的任意可以被配置成可由第 一cm和第二cm的任意來訪問。在這樣的配置中,響應于寫入請求,第一cm能夠存儲或使得被請求的數(shù)據(jù)被存儲在與第一cm相關聯(lián)的第一存儲器區(qū)或與第二cm相關聯(lián)的第二存儲器區(qū)中。第一cm然后經由處理器間鏈路傳送控制信號給第二cm,其中控制信號標識被請求的數(shù)據(jù)被存儲在哪里。第二cm然后能夠基于該控制信號從第一存儲器區(qū)或第二存儲器區(qū)獲取被請求的數(shù)據(jù)并將該被請求的數(shù)據(jù)存儲在與第二cm相關聯(lián)的持久存儲器區(qū)的目標存儲位置。這樣的配置能夠消除對在第一存儲器區(qū)和第二存儲器區(qū)之間復制數(shù)據(jù)的需要。

圖5a-5d是示出根據(jù)本發(fā)明的某些實施方式的存儲設施的示例的框圖。存儲設施可以代表上述的存儲設施。參考圖5a,存儲設施包括控制模塊1200和存儲模塊群組1202??刂颇K1200可以代表上述的控制模塊的任意。在一個實施方式中,控制模塊1200被配置成管理來自一個或多個客戶端或客戶端設備1380的讀取和寫入請求的服務。這里的客戶端可以代表上述的客戶端或客戶端設備的任意。在一個實施方式中,控制模塊1200被配置成經由通信架構1350從一個或多個客戶端1380接收請求,處理該請求(其可以包括發(fā)送該請求給存儲模塊),以及在請求已經被服務之后提供響應給客戶端1380。

在一個實施方式中,控制模塊1200包括輸入/輸出模塊(iom)1204、交換架構1206、處理器1208、存儲器1210以及可選地場可編程門陣列(fpga)1212。在一個實施方式中,iom1204是客戶端與存儲設施中的其他組件之間的物理接口。iom1204支持各種通信協(xié)議,例如pci、pcie、pci-x、以太網(包括但不限于ieee802.3a-802.3bj下定義的各種標準)、infiniband和通過聚合以太網(roce)的遠程直接存儲器存取(rdma)。

在一個實施方式中,交換架構1206包括一個或多個互連的交換機。如果交換架構1206包括多個交換機時,每個交換機可以連接到每個其他交換 機,可以連接到交換架構中的交換機子集,或可以僅連接到交換架構中的一個其他交換機。在一個實施方式中,交換架構1206中的交換機的每一個是硬件和邏輯的組合(例如使用集成電路實施)(如交換架構實施的協(xié)議定義的),其被配置成在存儲設施中將各種組件連接一起并在各種連接的組件之間(使用邏輯進行)路由分組。在一個實施方式中,交換架構1206物理連接到iom1204、處理器1208、存儲模塊組1202,以及fpga1212(如果有的話)。在一個實施方式中,控制模塊1200中的所有組件間的通信(除了處理器1208與存儲器1210之間的通信)經過交換架構1206。此外,控制模塊1200與存儲模塊組1202之間的所有通信經過交換架構1206。在一個實施方式中,使用pci協(xié)議(例如pci、pcie、pci-x或另一pci協(xié)議)來實施交換架構1206。在這樣的實施方式中,經過交換架構1206的所有通信使用相應的pci協(xié)議。

在一個實施方式中,如果交換架構1206實施pci協(xié)議,交換架構1206包括用于處理器的端口(或更具體地,用于在處理器1208中集成的根復合體(rootcomplex)的端口或用于連接到處理器的根復合體的端口)、用于存儲模塊組1202中的存儲模塊1214a至1214n的一個或多個端口、用于fpga1212(如果有的話)的端口、以及用于iom1204的端口。存儲模塊1214a-1214n的每一個可以代表上述的存儲模塊的任意。在一個實施方式中,上述的端口的每一個可以被配置為透明橋或非透明橋。本領域技術人員可以理解雖然已經關于pci實施描述交換架構1206,但是交換架構1206可以使用其他協(xié)議被實施而不偏離本發(fā)明的實施方式。

在一個實施方式中,交換架構1206中至少一個交換機被配置成實施組播。更具體地,在一個實施方式中,處理器1208被配置成生成組播群組,其中該組播群組包括兩個或更多個成員,每個成員指定存儲器1210和/或存儲模塊1214a-1214n中的地址。當組播群組被創(chuàng)建時,該組播群組與組播地 址相關聯(lián)。為了實施該組播,交換架構中的至少一個交換機被配置成當接收到將組播地址指定為目的地地址的寫入時,該交換機被配置成為該組播群組中的每個成員生成新寫入并將該寫入發(fā)送給存儲設施中的合適地址。在一個實施方式中,用于該交換機生成的每個寫入的地址通過給組播地址添加特定偏移來確定。

處理器1208可以是具有單核或多核的電子電路群組,被配置成執(zhí)行指令。在一個實施方式中,處理器1208可以使用復雜指令集(cisc)架構或精簡指令集(risc)架構來實施。在一個實施方式中,處理器1208包括根復合體(如pcie協(xié)議定義的)。在一個實施方式中,如果控制模塊1200包括根復合體(其可以集成到處理器1208),則存儲器1210經由該根復合體耦合到處理器1208??商鎿Q地,存儲器1210使用點對點連接機制直接連接到處理器1208。在一個實施方式中,存儲器1210可以是任意易失性存儲器,包括但不限于動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram和ddrsdram。

在一個實施方式中,處理器1208被配置成創(chuàng)建并更新存儲器內數(shù)據(jù)結構(未示出),其中存儲器內數(shù)據(jù)結構被存儲在存儲器1210在。在一個實施方式中,存儲器內數(shù)據(jù)結構包括存儲模塊的集合中的邏輯地址和物理存儲地址之間的映射(直接或間接)。在一個實施方式中,邏輯地址是從客戶端的角度數(shù)據(jù)看起來位于的地址。在一個實施方式中,邏輯地址是(或包括)通過將哈希函數(shù)(例如sha-1、md-5等)應用于n元組而生成的哈希值。在一個實施方式中,n元組是<對象id,偏移id>,其中對象id定義文件且偏移id定義相對于文件的開始地址的位置。在該技術的另一實施方式中,該n元組是<對象id,偏移id,生成時間>,其中生成時間對應于創(chuàng)建(使用對象id標識的)文件的時間??商鎿Q地,邏輯地址可以包括邏輯對象id和邏輯字節(jié)地址,或邏輯對象id和邏輯地址偏移。在該技術的另一實施方式 中,邏輯地址包括對象id和偏移id。本領域技術人員應當理解多個邏輯地址可以被映射到單個物理地址且該邏輯地址不限于以上的實施方式。

在一個實施方式中,物理地址可以對應于(i)存儲器1210中的位置,(ii)圓頂存儲器中的位置,或(iii)固態(tài)存儲器模塊中的位置。在一個實施方式中,如果在存儲設施中有數(shù)據(jù)的多個副本,則存儲器內數(shù)據(jù)結構可以將單個哈希值映射到多個物理地址。

在一個實施方式中,存儲器1210包括以下的一個或多個:用于處理器1208的提交隊列、用于處理器1208的完成隊列、用于存儲設施中的存儲模塊1214a-1214n的每一個的提交隊列、以及用于存儲設施中的存儲模塊1214a-1214n的每一個的完成隊列。在一個實施方式中,用于處理器1208的提交隊列用于發(fā)送命令(例如讀取請求,寫入請求)到處理器1208。在一個實施方式中,用于處理器1208的完成隊列用于用信號通知處理器1208其發(fā)送到另一實體的命令已經被完成。用于存儲模塊的提交隊列和完成隊列以相似方式發(fā)揮功能。

在一個實施方式中,處理器1208(經由交換架構)被配置成將各種類型的處理卸載到fpga1212。在一個實施方式中,fpga1212包括用于計算被寫入到存儲模塊的數(shù)據(jù)和/或從存儲模塊讀取的數(shù)據(jù)的校驗和的功能。此外,fpga1212可以包括用于計算p和/或q奇偶信息的功能,用于使用raid方案(例如raid2-raid6)在存儲模塊中存儲數(shù)據(jù),和/或用于執(zhí)行恢復使用raid方案(例如raid2-raid6)存儲的毀壞的數(shù)據(jù)所需的各種計算的功能。在一個實施方式中,存儲模塊組1202包括一個或多個存儲模塊(1213a-1214n),每一個被配置成存儲數(shù)據(jù)。

在一個實施方式中,處理器1208被配置成編程系統(tǒng)中的一個或多個dma引擎。例如,處理器1208被配置成編程客戶端交換機中的dma引擎。處理器1208還可以被配置成編程存儲模塊中的dma引擎。在一個實施方 式中,編程客戶端交換機中的dma引擎可以包括創(chuàng)建組播群組并生成用于該組播群組中的成員的每一個的描述符。

在一個實施方式中,通信架構1350能夠是高速通信架構的任意者,例如pcte、以太網、光纖信道或infinibandtm架構。客戶端1380可以是包括發(fā)送讀取請求給存儲設施和/或發(fā)送寫入請求給存儲設施的功能的任意系統(tǒng)。客戶端1380可以包括客戶端處理器1381和客戶端存儲器1382。在一個實施方式中,客戶端1380被配置成使用各種通信協(xié)議與存儲設施1355通信,該通信協(xié)議例如外圍組件互連(pci)、pci高速(pcie)、pci擴展(pci-x)、非易失性存儲器高速(nvme)、通過pci高速架構的非易失性存儲器高速(nvme)、通過以太網架構的非易失性存儲器高速(nvme)以及通過infiniband架構的非易失性存儲器高速(nvme)。

在一個實施方式中,如果客戶端1380實施pci、pci高速或nvme,客戶端1380可以包括根復合體(未示出)。根復合體是將客戶端1380(包括其客戶端處理器和客戶端存儲器)連接到pcie架構的設備。在一個實施方式中,pcie架構包括根復合體和端點,其經由交換機連接。端點是除根復合體以外的設備或能夠發(fā)起pci事務(例如讀取請求、寫入請求)或是pci事務的目標的交換機。一個或多個客戶端和一個或多個存儲設施可以被集成作為pcie架構的部分。此外,如果存儲設施內的單獨組件使用pcie通信且客戶端1380中的單獨組件使用pcie通信,則存儲設施和客戶端1380中的所有組件可以被認為是單個pcie架構的部分。

客戶端存儲器1382可以包括用于客戶端處理器的提交隊列(sq)和用于客戶端處理器的完成隊列(cq)。在本發(fā)明的一個實施方式中,存儲設施存儲器,例如存儲器設備1210,包括通過通信架構對客戶端可見的用于客戶端處理器的一個或多個提交隊列??蛻舳舜鎯ζ?382包括通過通信架構對存儲設施可見的用于客戶端處理器的一個或多個完成隊列。用于客戶端處理 器的提交隊列用于發(fā)送命令(例如讀取請求、寫入請求)給客戶端處理器。用于客戶端處理器的完成隊列用于用信號向客戶端處理器通知其發(fā)送給另一實體的命令已經完成。

客戶端1380還可以包括用于將客戶端1380耦合到通信架構的客戶端交換機,其中客戶端交換機可以包括一個或多個交換設備。如果客戶端交換機包括多個交換機,每個交換機可以連接到每個其他交換機,可以連接到交換架構中的交換機的子集,或可以僅連接到一個其他交換機。在本發(fā)明的一個實施方式中,客戶端交換機中的交換機的每一個是硬件和邏輯的組合,被配置成允許數(shù)據(jù)和消息在客戶端1380與存儲設施1355之間交換。

在這樣的實施方式中,客戶端交換機可以包括一個或多個端口,其中每個端口可以被配置為透明橋或不透明橋。實施為透明橋的端口允許根復合體繼續(xù)發(fā)現(xiàn)(直接或間接)連接到該端口的設備(其可以是其他根復合體、交換機、pci橋或端點)。相反,當根復合體遇到實施為不透明橋的端口時,該根復合體不能繼續(xù)連接到該端口的設備的發(fā)現(xiàn),而是根復合體將端口視為端點。

當端口被實施為不透明橋時,不透明橋的任一側的設備可以僅適用郵箱系統(tǒng)和門鈴中斷(由客戶端交換機實施)通信。門鈴中斷允許不透明橋的一側的處理器發(fā)送中斷給不透明橋的另一側的處理器。此外,郵箱系統(tǒng)包括交換架構的一側的處理器可讀取和可寫入的一個或多個寄存器。上述寄存器使得客戶端交換機的任一側的處理器能夠經由不透明橋傳遞控制和狀態(tài)信息。

為了從不透明橋的一側的設備發(fā)送pci事務給不透明橋的另一側的設備,pci事務必須被尋址到實施不透明橋的端口。在接收到pci事務時,客戶端交換機執(zhí)行地址轉換(使用直接地址轉換機制或基于查找表的轉換機制)。得到的地址然后用于將分組路由到不透明橋的另一側的合適設備。

客戶端交換機被配置以使得客戶端存儲器的至少一部分對存儲設施直 接可訪問。也就是說,客戶端交換機的一側的存儲設施可以經由客戶端交換機直接訪問客戶端交換機另一側的客戶端存儲器??蛻舳私粨Q機可以包括由連接到客戶端交換機的存儲設施或客戶端處理器編程的dma引擎。dma引擎可以被編程用于從對存儲設施可訪問的客戶端存儲器的部分中的地址讀取數(shù)據(jù)并將該數(shù)據(jù)的副本直接寫入到存儲設施或存儲模塊中的存儲器。此外,dma引擎可以被編程用于從存儲設施讀取數(shù)據(jù)并將該數(shù)據(jù)的副本直接寫入到對存儲設施可訪問的客戶端存儲器的部分中的地址。

在本發(fā)明的一個實施方式中,dma引擎支持組播。在這樣的實施方式中,存儲設施中的處理器可以創(chuàng)建組播群組,其中組播群組的每個成員對應于存儲設施的存儲器中的唯一目的地址。組播群組的每個成員與描述符相關聯(lián),該描述符指定:(i)目的地址;(ii)源地址;(iii)傳輸尺寸字段;以及(iv)控制字段。用于描述符的每一個的源地址保持不變而目的地址針對每個描述符改變。一旦創(chuàng)建了組播群組,通過以組播群組地址為目標的交換機的任意數(shù)據(jù)傳輸(包括dma引擎發(fā)起的傳輸)在與組播群組相關聯(lián)的目的端口的所有中放置數(shù)據(jù)的相同副本。該交換機并行處理組播群組描述符的所有。

現(xiàn)在參考圖5b,根據(jù)另一實施方式,存儲設施包括控制模塊1216和至少兩個存儲模塊組1236和1238。控制模塊1216包括交換架構1234,其直接連接到ioma1218、iomb1220、處理器a1222、處理器b1224、fpgaa1230(如果有的話)、fpgab1232(如果有的話)、存儲模塊組a1236中的存儲模塊1236a-1236n以及存儲模塊組b1238中的存儲模塊1238a-1238n。上述組件之間的所有通信(除了處理器a1222與處理器b1224之間的通信)經過交換架構1234。在該技術的一個實施方式中,控制模塊1216內的處理器1222和1224能夠使用例如點對點互連(例如因特爾quickpath互連)進行直接通信。

在一個實施方式中,控制模塊1216中的兩個iom1218和1220使得用于控制模塊1216的i/o帶寬(在具有單個iom的控制模塊的i/o帶寬之上)加倍。此外,第二iom(或另外iom)的添加增加了可連接到給定控制模塊的客戶端的數(shù)量,且通過擴展,增加了能夠連接到存儲設施的客戶端數(shù)量。在一個實施方式中,使用交換架構1234處理各種連接的組件(上述的)之間的通信,以允許處理器1222和1224的每一個直接訪問(經由交換架構1234)連接到交換架構1234的所有fpga1230和1232和所有存儲模塊(1236a-1236n、1238a-1238n)。

參考圖5c,根據(jù)另一實施方式,存儲設施包括(經由交換架構1246)連接到存儲模塊組(1256、1258、1260、1262)中的多個存儲模塊(未示出)的控制模塊1240??刂颇K1240包括兩個iom(1242、1244)、兩個處理器(1248、1250)和存儲器(1252、1254)。在一個實施方式中,控制模塊1240中的所有組件經由交換架構1246通信。這些組件的操作與上述的操作類似。

在一個實施方式中,處理器a1248被配置成主要處理與來自存儲模塊組a和b(1256、1258)的數(shù)據(jù)的存儲和獲取有關的請求,而處理器b1250被配置成主要處理與來自存儲模塊組c和d(1260、1262)的數(shù)據(jù)的存儲和獲取有關的請求。但是,處理器(1248、1250)被配置成(經由交換架構1246)與存儲模塊組(1256、1258、1260、1262)的全部進行通信。該配置使得控制模塊1240能夠在處理器之間傳播i/o請求的處理和/或提供內置冗余以處理處理器之一故障的情形。

參考圖5d,根據(jù)另一實施方式,存儲設施包括兩個控制模塊(1264、1266)。每個控制模塊包括iom(1296、1298、1300、1302)、處理器(1268、1270、1272、1274)、存儲器(1276、1278、1280、1282)以及fpga(如果有的話)(1288、1290、1292、1294)??刂颇K(1264、1266)的每一個 包括交換架構(1284、1286),控制模塊內的組件通過該交換架構通信。

在一個實施方式中,控制模塊內的處理器(1268、1270、1272、1274)可以例如使用點對點互連(例如因特爾quickpath互連)彼此通信。此外,控制模塊a中的處理器(1268、1270)可以經由到控制模塊b中的交換架構(1286)的直接連接與控制模塊b中的組件通信。類似地,控制模塊b中的處理器(1272、1274)可以經由到控制模塊a中的交換架構(1284)的直接連接與控制模塊a中的組件通信。

在一個實施方式中,控制模塊的每一個連接到各種存儲模塊(由存儲模塊組(1304、1306、1308、1310)表示)。每個控制模塊可以與連接到控制模塊中的交換架構的存儲模塊通信。此外,控制模塊a(1264)中的處理器可以使用交換架構b(1286)與連接到控制模塊b(1266)的存儲模塊通信。類似地,控制模塊b(1266)中的處理器可以使用交換架構a(1284)與連接到控制模塊a(1264)的存儲模塊通信。

控制模塊之間的互連允許存儲控制以在存儲設施間分配i/o負載,不管哪個控制模塊接收i/o請求。此外,控制模塊的互連使得存儲設施能夠處理更大數(shù)量的i/o請求。此外,控制模塊的互連在控制模塊(或其中的一個或多個組件)故障的情況下提供內置冗余。

在一個實施方式中,存儲器中數(shù)據(jù)結構在控制模塊中的存儲器間被鏡像。在這樣的情況中,控制模塊中的處理器發(fā)送必要命令以更新存儲設施內的所有存儲器,由此存儲器內數(shù)據(jù)結構在所有存儲器間被鏡像。以這種方式,任意處理器可以使用其自己的存儲器確定存儲設施中的數(shù)據(jù)的位置(如上述的n元組定義)。該功能允許任意處理器服務關于存儲模塊內的數(shù)據(jù)的位置的任意i/o請求。此外,通過鏡像存儲器內數(shù)據(jù)結構,存儲設施可以在存儲器之一故障時繼續(xù)操作。

根據(jù)一些實施方式,上述的組件的一些,例如控制模塊和/或存儲模塊 可以集成在通信架構內,例如pcie架構。

圖6是示出根據(jù)本發(fā)明的一個實施方式的具有通信架構的系統(tǒng)的框圖。在該示例中,pcie架構用作用于示例目的的通信架構的示例。但是,可以理解其他類型的通信架構也能夠應用。在一個實施方式中,pcie架構(2100)由兩個或更多片(2104a、2104b)組成,其中該片的每一個耦合到處理器(2112a、2112b)和一個或多個客戶端(2102a-2102b)??蛻舳?102a-2102b可以代表上述客戶端的任意。

在一個實施方式中,每個客戶端(2102a-2102b)是物理設備,其包括處理器(或另一類型的處理組件)、存儲器和使其能夠連接到pcie架構(2100)的物理接口。此外,每個客戶端包括用于實施本發(fā)明的一個或多個實施方式所需的pcie標準(或其一部分)的功能??蛻舳?102a-2102b還包括用于發(fā)送和/或接收事務層分組(transactionlayerpacket,tlp)的功能。tlp對應于根據(jù)pcie標準定義的分組類型。在本發(fā)明的一個實施方式中,tlp使得客戶端能夠從pcie架構讀取數(shù)據(jù)并將該數(shù)據(jù)寫入到pcie架構。換句話說,tlp使得客戶端能夠傳輸往來pcie架構中的位置的數(shù)據(jù)。在本發(fā)明的一個實施方式中,客戶端的一個或多個操作作為pcie端點,即發(fā)起事務的設備和/或是事務的目標的設備。客戶端的每一個可以經由鏈路(即客戶端與pcie架構之間的物理連接)連接到pcie架構。

每個片(2104a、2104b)包括輸入/輸出(1o)級交換機(its)(2108a、2108b)、集線器級交換機(hts)(2106a、2106b)、以及一個或多個持久存儲模塊(psm)2110a-2110b。關于its,每個its是連接到一個或多個客戶端(2102a-2102b)的物理pcie交換機。每個its還耦合到its位于的相同片中的hts。此外,每個its可以耦合到與its位于的片不同的片中的一個或多個hts。在本發(fā)明的一個實施方式中,每個its連接到pci架構中的每一個hts,產生pcie架構的級之間的完全連接的網格網。本發(fā)明的實 施方式可以在沒有級之間的完全連接的網格網的情況下被實施,不偏離本發(fā)明。

在本發(fā)明的一個實施方式中,每個its被配置成:(i)從其連接的客戶端接收tlp并使用地址路由(例如存儲器地址路由)將該tlp路由到its上的合適的出口端口(下游端口中一者或上游端口),以及(ii)從its連接的一個或多個hts接收tlp,并使用地址路由將tlp路由到該its上的合適的出口端口(典型地下游端口)。

每個hts是耦合到一個或多個its(2108a-2108b)和一個或多個持久存儲模塊(psm(2110a-2110b))的物理pcie交換機。每個hts耦合到hts位于的相同片中的its。此外,每個hts可以連接到在與hts位于的片中不同的片中的零個或更多個its。在本發(fā)明的一個實施方式中,每個hts連接到pcie架構中的每一個其他its,產生pcie架構中的級之間的完全連接的網格網。每個hts還可以經由其根端口(未示出)連接到處理器。本發(fā)明的實施方式可以在沒有級之間的完全連接的網格網的情況下被實施,而不偏離本發(fā)明。

在一個實施方式中,每個hts被配置成:(i)從其連接的持久存儲模塊(psm)接收tlp并使用地址路由將該tlp路由到hts上的合適出口端口(典型地下游端口)以及(ii)從hts連接到的一個或多個its接收tlp并使用地址路由將該tlp路由到hts上的合適出口端口(下游端口的一個或多個和/或上游端口)。

在一個實施方式中,存儲模塊(2100a-2110b)的每一個包括持久存儲(未示出)且可選地易失性存儲器(未示出)(例如,動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram和ddrsdram)。持久存儲可以包括但不限于nand閃存、nor閃存、磁性ram存儲器(m-ram)、自旋扭矩磁性ram存儲器(st-mram)、相變存儲器(pcm)、憶阻存儲器、 定義為非易失性存儲級存儲器(scm)的任意其他存儲器、磁盤和光盤。本領域技術人員應當理解本發(fā)明的實施方式不限于存儲級存儲器。在本發(fā)明的一個實施方式中,psm的每一個是僅一個片的部分。

處理器2112a-2112b的每一個可以是具有被配置成執(zhí)行指令的單核或被配置成執(zhí)行指令的多核的電子電路的組。處理器可以使用復雜指令集(cisc)架構或精簡指令集(risc)架構被實施。在本發(fā)明的一個或多個實施方式中,處理器包括根復合體(如pcie標準定義)(未示出)。該根復合體將處理器連接到至少一個片和存儲器(114a、114b)(例如動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram和ddrsdram),其經由pcie架構可訪問但是不是pcie架構中的任意片的部分。

在一個實施方式中,pcie架構2100內的處理器(2112a、2112b)能夠例如使用處理器互連(2116)(例如因特爾quickpath互連、因特爾前側總線或amd超傳輸)通信。本領域技術人員可以理解其他點對點通信機制可以被使用以允許處理器(2112a、2112b)之間的直接通信,而不偏離本發(fā)明的實施方式。雖然客戶端被耦合到its且psm被耦合到hts,客戶端還可以耦合到hts且psm連接到its。

在另一實施方式中,pcie架構可以被實施,由此其不包括psm2110a-2110b;而是its和hts被連接到客戶端的分開的集合,其中pcie架構促進客戶端之間的通信。此外,雖然示出的pcie架構僅包括兩個片、兩個處理器和四個psm,但是pcie架構2100可以被實施具有更少或更多數(shù)量的上述組件的每一個而不偏離本發(fā)明。此外,雖然pcie架構2100連接到四個客戶端和兩個存儲器,本發(fā)明的實施方式可以被實施以使得pcie架構能夠與更少或更多數(shù)量的客戶端和/或存儲器連接。

此外,雖然本發(fā)明的實施方式參考包括存儲(例如psm2110a-2110b)的pcie架構被描述,但是本發(fā)明的實施方式可以被實施以使得任意兩個設 備能夠使用pcie架構進行通信。例如,在本發(fā)明的一個實施方式中,客戶端可以是刀片服務器,其中刀片服務器不包括任意物理nic卡且psm可以被網絡端點設備替換。

在該示例中,網絡端點設備是被配置成使用聯(lián)網協(xié)議與網絡(即有線網絡、無線網絡或其組合)對接和經由pcie與pcie架構對接的設備。網絡端點設備的示例是picenic卡。網路端點設備的每一個可以包括持久存儲(如上面關于psm描述的)和存儲端點設備存儲器(例如動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram、ddrsdram、或任意其他類型的易失性存儲器)的組合。

在另一示例中,在本發(fā)明的一個或多個實施方式中,psm2110a-2110b可以被存儲端點設備(即,包括用于存儲數(shù)據(jù)和服務來自客戶端的讀取和寫入請求的功能的設備)替換。存儲端點設備每一個可以包括持久存儲(如以上關于psm所描述)和存儲端點設備存儲器(例如動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram、ddrsdram、或任意其他類型的易失性存儲器)的組合。存儲端點設備的示例是存儲設施。本發(fā)明不限于該示例。

此外,本發(fā)明的實施方式可以被擴展為包含經由pcie架構通信的兩個或更多個設備。在一般情況中,psm2110a-2110b可以一般化為目標設備,其中目標設備可以包括psm、網絡端點設備、存儲端點設備、或能夠使用pcie通信的任意其他設備。雖然pcie架構2100被示出為包括psm(或更一般化的目的設備),pcie架構2100可以被實施為其不包括目的設備;而是pcie架構2100僅包括用于連接到目的設備的必要物理組件。

圖7是示出了根據(jù)本發(fā)明的一個實施方式的存儲模塊的示例的框圖。存儲模塊2320包括存儲模塊控制器(2322)、存儲器(2324)和一個或多個持久存儲器模塊(2330a-2330n)。持久存儲器模塊2330a-2330n可以是固態(tài) 存儲器設備,例如閃存設備。在一個實施方式中,存儲模塊控制器(2322)被配置成接收從一個或多個控制模塊讀取和/或向一個或多個控制模塊寫入數(shù)據(jù)的請求。此外,存儲模塊控制器(2322)被配置成使用存儲器(2324)和/或持久存儲器模塊(2330a-2330n)服務該讀取和寫入請求。存儲模塊控制器(2322)可以包括dma引擎,其中dma引擎被配置成從存儲器(2324)或從持久存儲器模塊(2330a-2330n)的一個讀取數(shù)據(jù)并將該數(shù)據(jù)的副本寫入到客戶端存儲器中的物理地址。此外,dma引擎可以被配置成將來自存儲器(2324)的數(shù)據(jù)寫入到持久存儲器模塊的一個或多個。在本發(fā)明的一個實施方式中,dma引擎被配置成由處理器編程。

存儲器(2324)可以是任意易失性存儲器,包括但不限于動態(tài)隨機存取存儲器(dram)、同步dram、sdrsdram以及ddrsdram。存儲器(2324)可以邏輯上或物理上被劃分為圓頂存儲器(2326)和緩存(2328)。在在存儲模塊中通知供電故障的情況下(或在存儲模塊可以丟失供電的另一情況下)存儲模塊控制器(2322)被配置成將圓頂存儲器(2326)的整個內容寫入到持久存儲器模塊(2330a-2330n)的一個或多個。在本發(fā)明的一個實施方式中,存儲模塊控制器(2322)被配置成在供電故障通知到存儲模塊的供電實際丟失之間的時間將圓頂存儲器(2326)的整個內容寫入到持久存儲器模塊(2330a-2330n)的一個或多個。相反,緩存(2328)的內容在供電故障的情況下(或存儲模塊可以丟失供電的另一情況下)丟失。

持久存儲器模塊可以是使用固態(tài)存儲器存儲持久數(shù)據(jù)的任意數(shù)據(jù)存儲設備。在本發(fā)明的一個實施方式中,固態(tài)存儲器可以包括但不限于nand閃存、nor閃存、磁性ram存儲器(m-ram)、自旋扭矩磁性ram存儲器(st-mram)、相變存儲器(pcm)、憶阻存儲器、或定義為非易失性存儲級存儲器(scm)的任意其他存儲器。本領域技術人員可以理解本發(fā)明的實施方式不限于存儲級存儲器。

在一個實施方式中,以下的存儲位置是統(tǒng)一地址空間的部分:(i)經由客戶端交換機可訪問的客戶端存儲器的部分,(ii)控制模塊中的存儲器,(iii)存儲模塊中的存儲器,以及(iv)固態(tài)存儲器模塊。因此,從存儲設施中的處理器角度來看,上述的存儲位置(當物理上分開時)表現(xiàn)為物理地址的單個池。換句話說,處理器可以發(fā)送用于存儲在統(tǒng)一地址空間中的物理地址的任意的數(shù)據(jù)的讀取和/或寫入請求。上述存儲位置可以稱為存儲架構,其使用統(tǒng)一地址空間可訪問。統(tǒng)一地址空間部分由客戶端交換機中的不透明橋創(chuàng)建,其允許控制模塊中的處理器“看到”客戶端存儲器的部分。因此,控制模塊中的處理器可以在其能夠“看到”的客戶端存儲器的部分執(zhí)行讀取和/或寫入請求。

之前詳細描述的一些部分已經就計算機存儲器內的數(shù)據(jù)比特的操作的算法和符號表述方面被描述。這些算法描述和表述是數(shù)據(jù)處理領域的技術人員使用的方式,以最有效向其他領域技術人員表達其工作的實質。這里算法一般地被認為是導致期望結果的操作的自相一致的序列。該操作是需要物理量的物理操作。

但是應當知道,這些和類似術語的全部是與合適的物理量相關聯(lián)且僅是應用于這些量的方便標簽。除非從以上描述明顯另有指明,否則可以理解本說明書中,使用諸如權利要求中提出的這些術語的描述涉及計算機系統(tǒng)或類似的電子計算設備的動作和過程,其將計算機系統(tǒng)的寄存器和存儲器內的物理(電子)量表述的數(shù)據(jù)處理并轉換成計算機系統(tǒng)存儲器或寄存器或其他該信息存儲、傳輸或顯示設備內的物理量類似表述的其他數(shù)據(jù)。

本發(fā)明的實施方式還涉及用于執(zhí)行這里的操作的裝置。這樣的計算機程序被存儲在非暫態(tài)計算機可讀介質中。機器可讀介質包括用于以機器(例如計算機)可讀的形式存儲信息的任意機制。例如,機器可讀(例如計算機可讀)介質包括機器(例如計算機)可讀存儲介質(例如只讀存儲器(“rom”)、 隨機存取存儲器(“ram”)、磁盤存儲介質、光存儲介質、閃存設備)。

之前圖中示出的過程或方法可以由處理邏輯執(zhí)行,其包括硬件(例如電路、專用邏輯等)、(例如包含在非暫態(tài)計算機可讀介質中的)軟件或其組合。雖然以上以一些有序操作的方式描述過程或方法,應當理解描述的操作的一些可以以不同順序被執(zhí)行。此外,可以并行而不是按順序執(zhí)行一些操作。

本發(fā)明的實施方式沒有參考任意特定編程語言描述,可以理解各種編程語言可以用于實施這里描述的本發(fā)明的實施方式的教示。

在上面的說明書中,本發(fā)明的實施方式參考其特定示意性實施方式被描述。明顯的是可以對其進行各種修改而不偏離權利要求書提出的本發(fā)明的更寬實質和范圍。因此,說明書和附圖被視為示意性而非限制性。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
水城县| 襄垣县| 始兴县| 页游| 临漳县| 贵港市| 台中县| 宁城县| 沅陵县| 湘西| 海安县| 威海市| 沙坪坝区| 丰城市| 荣成市| 乾安县| 海宁市| 藁城市| 嘉义县| 巴东县| 侯马市| 巢湖市| 肃南| 娱乐| 铁岭县| 筠连县| 辽宁省| 太和县| 中西区| 瑞安市| 安顺市| 如东县| 深水埗区| 荔波县| 涟水县| 城固县| 吉林省| 胶州市| 蒲城县| 武夷山市| 错那县|