在基于非易失性存儲器的存貯設備中對信息進行路由的裝置和方法
【專利摘要】描述了用于存取存貯設備的各種系統、方法、裝置和計算機可讀介質。在某些示例實施例中,可以實施包括兩個或更多個控制器的主動/主動容錯存貯設備。在一個方面中,每個控制器可以具有用于分發I/O請求的處理的兩個或更多個處理實體。在一個實施例中,可以以增強散熱、降低功耗、分散功率和工作負載以及降低延遲的方式來布置組件、模塊和控制器板的配置。在一個實施例中,每個控制器可以耦合到包括非易失性存儲器(NVM)存貯介質的非易失性存儲器(NVM)刀片。在一種示例實現方式中,諸如高速外圍組件互聯協議之類的標準化協議可以用于控制器的各個組件以及還有NVM存貯介質之間的通信。
【專利說明】在基于非易失性存儲器的存貯設備中對信息進行路由的裝置 和方法
【背景技術】
[0001] 本公開的各方面涉及計算和通信技術。具體地,本公開的各方面涉及用于改善存 貯設備的性能的系統、方法、裝置以及計算機可讀介質。
[0002] 企業系統的存貯設備需要海量存儲容量、對存貯設備讀取和寫入的低延遲、高帶 寬、低功耗以及可靠性。傳統地,使用諸如在電力關閉時保留數據的硬盤驅動器(HDD)之類 的介質來實施企業系統。硬盤驅動器是使用快速旋轉盤、用于存儲和取回(retrieve)數字 信息的數據存貯設備。HDD由一個或多個具有布置在移動致動器臂上以向盤表面讀取和寫 入數據的磁頭的堅硬("硬")快速旋轉盤(盤片)組成。歸因于移動部分,HDD固有地易于發生 錯誤和故障,并且在如何降低它們的存取時間方面具有下限而且價格可能下降。
[0003] 本發明的實施例解決該問題和其它問題。
【發明內容】
[0004] 描述了用于存取存貯介質的各種系統、方法、裝置以及計算機可讀介質。描述了用 于最優地存取存貯介質的技術。在一個實施例中,可以使用非易失性存儲器(NVM)來實施存 貯設備。
[0005] 在某些示例實施例中,可以實施包括兩個或更多個控制器的主動/主動容錯存貯 設備。然而,在其它示例實施例中,也可以實施主動/備用系統。在一些實施例中,可以使用 專用集成電路(ASIC)、現場可編程門陣列(FPGA)或將若干分立的組件的功能集成到單個晶 片上的任何其它技術來實施控制器。在其它實施例中,控制器也可以包含具有多個分立組 件的控制器板。在一個方面中,每個控制器板可以具有用于分發輸入/輸出(I/O)請求的處 理的兩個或更多個處理實體。在一個實施例中,可以以增強散熱、降低功耗、分散功率和工 作負載以及降低用于服務I/O請求的延遲的方式來布置組件、模塊和控制器板的配置。
[0006] 在一個實施例中,每個控制器可以耦合到包括NVM存貯介質的非易失性存儲器 (NVM)刀片(blade)。本發明的實施例也可以提供進一步的增強來改善對NVM存貯介質的存 取時間。雖然可以在本文為了說明的目的而使用NVM存貯介質來描述本發明的一些實施例, 但在某些實施例中,本發明可以不限于NVM存貯介質,并且在不脫離本發明的范圍的情況下 可以使用其它合適的物理存貯介質。
[0007] 在一種實現方式中,諸如高速外圍組件互聯(PCIe)協議之類的標準化協議可以用 于控制器板的各個組件以及還有NVM存貯介質之間的通信。
[0008] 示例存貯設備可以包括耦合到多個刀片中的第一刀片的、來自多個路由實體中的 第一路由實體,其中第一刀片可以包括NVM存貯介質、耦合到第一路由實體的第一處理實 體,其中第一處理實體可以被配置為接收第一輸入/輸出(I/O)請求、確定與第一 I/O請求相 關聯的第一數據將被存儲在耦合到第一路由實體的第一刀片上的第一位置,以及向第一路 由實體傳送與第一 I/O請求相關聯的第一數據以便將第一數據存儲在第一刀片上。第二處 理實體可以耦合到第一路由實體,其中第二處理實體被配置為接收第二I/O請求,確定與第 二I/O請求相關聯的第二數據將被存儲在耦合到第一路由實體的第一刀片上的第二位置, 以及向第一路由實體傳送與第二I/O請求相關聯的第二數據以便將第二數據存儲在第一刀 片上。
[0009] 在一些實施例中,存貯設備可以另外具有第二處理實體,該第二處理實體被配置 為:接收第三I/O請求,確定第三I/O請求是對于位于耦合到第一路由實體的第一刀片的第 一位置的第一數據的讀取請求,從第一路由實體請求來自第一位置的第一數據,以及從第 一路由實體接收第一數據。在一種實現方式中,第一處理實體和第二處理實體可以通過第 一路由實體間接地彼此耦合。在一個實施例中,控制器板包括第一路由實體、第一處理實體 和第二處理實體。在一種實現方式中,第一處理實體可以耦合到第一存儲器,并且第二處理 實體可以耦合到第二存儲器。在一個方面中,使用高速外圍組件互聯(PCIe)協議來執行第 一處理實體與第一路由實體之間的數據的傳送以及第二處理實體與第一路由實體之間的 數據的傳送。
[0010] 在存貯設備的某些實現方式中,存貯設備可以進一步包括耦合到多個刀片中的第 二刀片的、來自多個路由實體中的第二路由實體,其中第二刀片包括NVM存貯介質,第一處 理實體耦合到第二路由實體,其中第一處理實體可以被配置為接收第三I/O請求,確定與第 三I/O請求相關聯的第三數據將被存儲在位于第三位置的第二刀片上,以及向第二路由實 體傳送與第三I/O請求相關聯的第三數據以將與第三I/O請求相關聯的數據存儲在第二刀 片上。存貯設備可以另外具有耦合到第二路由實體的第二處理實體,其中第二處理實體可 以被配置為接收第四I/O請求,確定與第四I/O請求相關聯的第四數據將被存儲在位于第四 位置的第二刀片,以及向第二路由實體傳送與第四I/O請求相關聯的第四數據以將與第四 I/O請求相關聯的數據存儲在第二刀片上。
[0011] 在一個實施例中,使用高速外圍組件互聯(PCIe)協議來執行第一處理實體與第二 路由實體之間的數據的傳送以及第二處理實體與第二路由實體之間的數據的傳送。在一個 方面中,由第一處理實體接收的第一I/O請求可以首先在一個或多個接口實體處被接收并 且通過多個路由實體之一被轉發到第一處理實體。
[0012] 一種用于存儲數據的示例方法可以包括:在第一處理實體接收第一 I/O請求;在第 一處理實體確定與第一 I/O請求相關聯的第一數據將被存儲在耦合到位于第一路由實體的 第一位置的第一刀片上,其中第一刀片包括NVM存貯介質;由第一處理實體向第一路由實體 傳送與第一 I/O請求相關聯的第一數據以將數據存儲在第一刀片上;在第二處理實體接收 第二I/O請求;在第二處理實體確定與第二I/O請求相關聯的第二數據將被存儲在位于耦合 到第一路由實體的第二位置的第一刀片上;以及由第二處理實體向第一路由實體傳送與第 二I/O請求相關聯的第二數據以將數據存儲在第一刀片上。
[0013] 在一些實現方式中,示例方法可以進一步包括:在第二處理實體處接收第三I/O請 求,在第二處理實體處確定第三I/O請求是對于來自耦合到第一路由實體的第一刀片的第 一位置的第一數據的讀取請求,從第一路由實體請求來自第一位置的第一數據,以及從第 一路由實體接收第一數據。
[0014] 在一種實現方式中,第一處理實體和第二處理實體通過路由實體間接地彼此耦 合。在一個方面中,控制器板包括第一路由實體、第一處理實體和第二處理實體。第一處理 實體可以耦合到第一存儲器,并且第二處理實體可以耦合到第二存儲器。在該方法的一些 實現方式中,可以使用高速外圍組件互聯(PCIe)協議來執行第一處理實體與第一路由實體 之間的第一數據的傳送以及第二處理實體與第一路由實體之間的第二數據的傳送。
[0015] 在該方法的某些實施例中,該方法也可以包括:在第一處理實體處接收第三I/O請 求;在第一處理實體處確定與第三I/O請求相關聯的第三數據將被存儲在位于耦合到第二 路由實體的第三位置的第二刀片上,其中第二刀片包括NVM存貯介質;由第一處理實體向第 二路由實體傳送與第三I/O請求相關聯的第三數據以將與第三I/O請求相關聯的數據存儲 在第二刀片上;在第二處理實體處接收第四I/O請求;在第二處理實體處確定與第四I/O請 求相關聯的第四數據將被存儲在位于耦合到第二路由實體的第四位置的第二刀片上;由第 二處理實體向第二路由實體傳送與第四I/O請求相關聯的第四數據以將與第四I/O請求相 關聯的數據存儲在第二刀片上。在一些實施例中,使用高速外圍組件互聯(PCIe)協議來執 行第一處理實體與第二路由實體之間的第三數據的傳送以及第二處理實體與第二路由實 體之間的第四數據的傳送。第一刀片可以是多個刀片之一,并且第一路由實體可以是多個 路由實體之一。由第一處理實體接收的第一數據包(packet)可以首先在一個或多個接口實 體處被接收并且通過多個路由實體之一被轉發到第一處理實體。
[0016] -種示例裝置可以包括:用于接收第一I/O請求的部件;用于確定與第一I/O請求 相關聯的第一數據將被存儲在位于耦合到第一路由實體的第一位置上的第一刀片的部件, 其中第一刀片包括NVM存貯介質;用于向第一路由實體傳送與第一I/O請求相關聯的第一數 據以將數據存儲在第一刀片上的部件;用于接收第二I/O請求的部件;用于確定與第二I/O 請求相關聯的第二數據將被存儲在位于耦合到第二路由實體的第二位置的第二刀片上的 部件;以及用于向第二路由實體傳送與第二I/O請求相關聯的第二數據以將第二數據存儲 在第二刀片上的部件。
[0017] 描述了用于存取存貯介質的各種系統、方法、裝置以及計算機可讀介質。描述了用 于最優地存取存貯介質的技術。在一個實施例中,可以使用非易失性存儲器(NVM)存貯介質 來實施存貯設備。
[0018] 在某些示例實施例中,可以實施包括兩個或更多個控制器的主動/主動容錯存貯 設備。然而,在其它示例實施例中,也可以實施主動/備用系統。在一些實施例中,可以使用 專用集成電路(ASIC)、現場可編程門陣列(FPGA)或將若干分立的組件的功能集成到單個晶 片上的任何其它技術來實施控制器。在其它實施例中,控制器也可以包含具有多個分立組 件的控制器板。在一個方面中,每個控制器板可以具有用于分發輸入/輸出(I/O)請求的處 理的兩個或更多個處理實體。在一個實施例中,可以以增強散熱、降低功耗、分散功率和工 作負載以及降低用于服務I/O請求的延遲的方式來布置組件、模塊和控制器板的配置。
[0019] 在一個實施例中,每個控制器可以耦合到包括NVM存貯介質的NVM刀片。本發明的 實施例也可以提供進一步的增強來改善對NVM存貯介質的存取時間。雖然可以在本文為了 說明的目的使用NVM存貯介質來描述本發明的一些實施例,但在某些實施例中,本發明可以 不限于NVM存貯介質,并且在不脫離本發明的范圍的情況下可以使用其它合適的物理存貯 介質。
[0020] 在一種實現方式中,諸如高速外圍組件互聯(PCIe)協議之類的標準化協議可以用 于在控制器板的各個組件以及還有NVM存貯介質之間的通信。
[0021 ] -種示例存貯設備可以包括存貯設備,該存貯設備包括:第一控制器,其被配置為 操作在主動模式中,第一控制器被配置為接收用于存儲數據和從NVM存貯介質取回數據的 輸入/輸出(I/O)請求;第二控制器,其被配置為操作在主動模式中,第二控制器也被配置為 接收用于存儲數據和從NVM存貯介質取回數據的I/O請求;以及包括NVM存貯介質的多個NVM 刀片,其中多個NVM刀片中的至少一個耦合到用于存儲數據和從NVM存貯介質中取回數據的 第一控制器和第二控制器。在一個實施例中,多個NVM刀片中的至少一個包括與第一控制器 進行通信的第一路由接口和與第二控制器進行通信的第二路由接口。在一些實現方式中, 第一路由接口可以使用PCIe協議與第一控制器進行通信,并且第二路由接口可以使用PCIe 協議與第二控制器進行通信。
[0022] 在某些實施例中,對于讀取操作,第一控制器可以被配置為:接收第一 I/O請求,確 定第一I/O請求是將與第一I/O請求相關聯的第一數據存儲到NVM存貯介質的請求;以及向 多個NVM刀片中的至少一個傳送命令和第一數據以將第一數據存儲在第一位置。在存貯設 備的一種實現方式中,第一控制器和第二控制器可以被配置為對于讀取操作同時地解碼1/ 0請求并且從NVM存貯介質請求數據。
[0023] 在某些實施例中,對于寫入操作,第二控制器被配置為:接收第二I/O請求,確定第 二I/O請求是將與第二I/O請求相關聯的第二數據存儲到NVM存貯介質的請求;以及向第一 控制器傳送與第二I/O請求相關聯的命令信息。第一控制器可以被配置為接收來自第二控 制器的所傳送的命令信息,以及向多個NVM刀片中的至少一個傳送存儲命令。第二控制器可 以被進一步配置為向一個或多個NVM刀片傳送與第二I/O請求相關聯的第二數據。
[0024] 在某些實施例中,多個NVM刀片中的至少一個可以包括用于緩沖來自第一控制器 的命令的、耦合到第一路由接口的第一緩沖器。多個NVM刀片中的至少一個可以被進一步配 置為:一旦第一緩沖器滿得超過預先確定的閾值就丟棄來自第一控制器的命令。在一些實 現方式中,多個NVM刀片中的至少一個也可以包括用于對于來自第一控制器和第二控制器 的命令仲裁對NVM接口的存取的命令管理器。在命令管理器檢測到關于命令的錯誤的實例 中,至少一個NVM刀片可以將與I/O請求相關聯的錯誤信息傳送回到該命令所起源的控制 器。
[0025] 在一些實現方式中,第一控制器和第二控制器可以彼此傳遞容錯信息。在一個方 面中,第一控制器和第二控制器可以使用非PCIe橋來彼此傳遞容錯信息。在一些實例中,容 錯信息可以包括關于從第一控制器到多個NVM刀片之一的第一 I/O請求的故障的信息。 [0026]在一個實施例中,第一控制器、第二控制器和多個NVM刀片可以耦合到電力軌,其 中電力軌由多個電源進行供電。在一種實現方式中,第一控制器和第二控制器可以是包括 用于處理I/O請求的一個或多個處理器以及用于控制器和多個NVM刀片之間的路由操作的 一個或多個路由器的印刷電路板(PCB)。在另一種實現方式中,第一控制器和第二控制器可 以是各自包括處理邏輯和路由邏輯的專用集成電路(ASIC)。
[0027] -種用于將數據存儲在存貯設備上的示例方法可以包括:在從控制器接收第一 1/ 〇請求;確定第一I/O請求是將與第一I/O請求相關聯的第一數據存儲到NVM存貯介質的請 求;以及向主控制器傳送與第一I/O請求相關聯的命令信息;在主控制器接收來自從控制器 的所傳送的命令信息;以及向包括NVM存貯介質的多個NVM刀片中的至少一個傳送來自主控 制器的使用對于第一 I/O請求的所傳送的命令信息的存儲命令以及來自從控制器的第一數 據以將第一數據存儲在第一位置。
[0028]示例方法可以進一步包括:在主控制器接收第二I/O請求,確定第二I/O請求是將 與第二I/O請求相關聯的第二數據請求存儲到NVM存貯介質的請求,以及向包括NVM存貯介 質的多個NVM刀片中的至少一個傳送命令和第二數據以將第二數據存儲在第二位置。該方 法可以進一步包括:在主控制器接收第二I/O請求,確定第二I/O請求是從NVM存貯介質中的 第二位置讀取第二數據的請求,從NVM存貯介質中取回與第二I/O請求相關聯的第二數據, 在從控制器接收第三I/O請求,確定第三I/O請求是從NVM存貯介質中的第三位置讀取第三 數據的請求,以及從NVM存貯介質取回與第三I/O請求相關聯的第三數據。在一種實現方式 中,主控制器和從控制器可以使用PCIe協議與多個NVM刀片進行通信。
[0029]上文已經相當寬泛地略述了示例特征和技術優點以便能夠更好地理解隨后的具 體實施方式。將在下文中描述附加的特征和優點。可以容易地利用所公開的概念和特定示 例來作為用于修改或設計用于執行本公開的相同的目的的其它結構的基礎。這種等同結構 沒有脫離所附權利要求的精神和范圍。當結合附圖考慮時,根據以下描述將更好地理解與 相關聯的優點一起的、關于它們的組織和操作方法兩者都被認為是在本文公開的概念的特 征的特征。僅僅為了說明和描述的目的而提供每一個附圖并且每一個附圖不作為對權利要 求的限制的限定。
[0030] 上文已經相當寬泛地略述了示例特征和技術優點以便能夠更好地理解隨后的具 體實施方式。將在下文中描述附加的特征和優點。可以容易地利用所公開的概念和特定示 例來作為用于修改或設計用于執行本公開的相同的目的的其它結構的基礎。這種等同結構 沒有脫離所附權利要求的精神和范圍。當結合附圖考慮時,根據以下描述將更好地理解與 相關聯的優點一起的、關于它們的組織和操作方法兩者都被認為是在本文公開的概念的特 征的特征。僅僅為了說明和描述的目的而提供每一個附圖并且每一個附圖不作為對權利要 求的限制的限定。
【附圖說明】
[0031] 通過示例來說明本公開的各方面。參考附圖提供以下描述,其中在全文中相同附 圖標記用于指代相同的要素。雖然在本文描述了一種或多種技術的各種細節,但其它技術 也是可能的。在一些實例中,為了便于描述各種技術,以框圖形式示出了公知的結構和設 備。
[0032] 可以通過參考說明書和附圖的其余部分來實現對本公開所提供的示例的性質和 優點的進一步理解,其中在若干附圖中使用相同附圖標記來指代類似的組件。在一些實例 中,子標號與附圖標記相關聯,以表示多個類似的組件之一。當在不對現有的子標號進行說 明的情況下參考附圖標記時,附圖標記指代所有這樣的類似組件。
[0033]圖1示出了根據本發明的一個實施例的存貯設備的示例高層次框圖。
[0034]圖2示出了根據本發明的一個實施例的存貯設備的另一個示例框圖。
[0035]圖3示出了根據本發明的一個實施例的存貯設備的又一個示例框圖。
[0036]圖4示出了根據本發明的又一個實施例的存貯設備的示例框圖。
[0037]圖5是根據本發明的一個實施例的、示出用于執行本發明的實施例的方法的流程 圖。
[0038]圖6是根據本發明的另一個實施例的、示出用于執行本發明的實施例的另一個方 法的流程圖。
[0039] 圖7示出了根據本發明的一個實施例的控制器板的示例框圖。
[0040] 圖8示出了根據本發明的至少一個實施例的、對于控制器板上的每個組件可見的 各個組件的地址空間的示例框圖。
[0041] 圖9示出了根據本發明的一個實施例的存貯設備的另一個示例高層次框圖。
[0042] 圖10示出了根據本發明的一個實施例的NVM刀片的示例框圖。
[0043]圖11示出了根據本發明的一個實施例的刀片控制器的示例框圖。
[0044]圖12示出了根據本發明的一個實施例的刀片控制器的另一個示例框圖。
[0045]圖13描繪了用于執行本發明的實施例的計算機系統。
【具體實施方式】
[0046]現在將參考在此形成一部分的附圖來描述若干說明性實施例。雖然下面描述可以 實施本公開的一個或多個方面的特定實施例,但在不脫離本公開的范圍或所附權利要求的 精神的情況下,可以使用其它實施例并且可以進行各種修改。
[0047]在討論本發明的實施例之前,一些術語的描述可能有助于理解本發明的實施例。
[0048] 在一些實施例中,如在本文討論的"存貯設備"可以包括被配置為存儲數據和從存 貯介質中取回數據的計算機系統。可以使用參考圖13而描述的一些或所有組件來實施計算 機系統。在一些實施例中,存貯設備可以被用于企業環境或需要通過利用至存貯設備的高 可用性鏈路和低延遲的網絡存取數據的其它類似環境。對存貯設備還可能期望較低的功 耗、較低的成本和良好的散熱。在一些實施例中,存貯設備可以是其中將多個存貯設備共同 地排列和維持的機架可安裝設備。在其它實施例中,存貯設備可以是獨立設備。然而,存貯 設備可以具有其它外圍設備以及類似于常規計算機系統的設備,在一些實現方式中,可以 利用被優化以最小化物理空間和能量的使用的模塊化設計來將存貯設備從服務器計算機 剝離。存貯設備還可以包括文件系統軟件堆棧,其被存儲在存貯設備中的存貯介質上并且 由處理器運行以接收I/O請求、將這些I/O請求解碼和轉換為針對底層物理介質的讀取、寫 入和配置命令。
[0049] 在本發明的一些實施例中,如在本文所討論的"閃存存貯介質"可以包括非易失性 存儲器(NVM)。在一些實例中,使用NVM的存貯設備的實現方式也可以被稱為固態設備。基于 NVM的設備的示例實現方式可以包括但不限于使用N0R、NAND、MRAM(磁阻RAM)、FRAM(鐵電 RAM、RRAM(電阻式RAM))、相變存儲器或任何其它合適的技術。N0R閃存可以提供高速隨機存 取以及在諸如達到單字節之類的特定存儲器位置中讀取和寫入數據。NAND閃存可以隨機地 讀取,但是典型地以高速順序地寫入,在被稱為頁的塊中處理數據。與其寫入相比,NAND閃 存可以更快地進行讀取,迅速地轉移整頁的數據。除了比NAND閃存讀取可能更快而寫入可 能更慢,N0R閃存可以以相同方式運作。通常,在高密度與N0R閃存相比沒有那么昂貴,對于 相同尺寸的硅,NAND技術可以提供更高的容量。
[0050] 在一些實現方式中,本發明的實施例可以利用單級單元(SLC) NAND閃存技術。在其 它實現方式中,本發明的實施例可以利用多級單元(MLC)NAND閃存存貯介質。MLC NAND是每 單元(cell)使用多級以允許使用相同數量的晶體管存儲更多比特的閃存存儲器技術。在 SLC NAND閃存技術中,每個單元能夠存在于兩個狀態之一中,每單元存儲一個比特的信息。 大多數MLC NAND閃存存儲器技術具有每單元四個可能的狀態,因此其每單元能夠存儲兩個 比特的信息。使用MLC NAND可以有利于降低由于較高數據密度的每存貯單元的成本。
[0051] 如本文所描述的,在一些實施例中,"刀片"、"閃存刀片"或"NVM刀片"可以指代將 一個或多個NVM芯片分組在一起以提供存儲,其中NVM芯片包括NVM存貯介質。NVM刀片可以 具有用于仲裁對NVM存貯介質的存取的刀片控制器。NVM刀片控制器可以負責接收用于存 取/存儲NVM存貯介質上的數據的命令、對命令進行處理以及存儲數據或從NVM存貯介質中 取回數據。在一個實施例中,可以使用專用集成電路(ASIC)來實施NVM刀片控制器。在另一 個實施例中,可以使用現場可編程門陣列(FPGA)來實施NVM刀片控制器。
[0052] 如本文所定義的,"控制器板"可以包括用于接收I/O請求并且將這些I/O請求轉換 為用于讀取、寫入或配置NVM存貯介質的命令的各種硬件、固件和軟件組件。在一種實現方 式中,可以使用印刷電路板(PCB)來實施控制器板,其中控制器板的各個組件可以使用總線 耦合到該板并且彼此進行通信。在其它實現方式中,諸如無線之類的其它通信手段可以用 于組件之間的通信。圖7是控制器板的示例實施例。雖然可以關于若干分立的組件來描述本 發明的實施例,但在一些實施例中,可以通過一個硅晶片來執行若干分立的組件的功能。例 如,可以通過被實施為專用集成電路(ASIC)、現場可編程門陣列(FPGA)、多芯片模塊(MCM) 或任何其它硅技術的控制器來執行如本文所描述的諸如處理和路由之類的多個分立的組 件的功能。如本文所描述的,在一個實施例中,雖然"控制器板"可以指代使用印刷電路板實 施功能集的若干分立的組件,但"控制器"可以指代控制器板(例如,具有分立的組件的PCB 板)和控制器(例如,若干分立的組件的功能被實施為ASIC、FPGA,等等)兩者。
[0053]如本文所描述的,"處理實體"可以指代一個或多個物理或邏輯處理器。可以在不 偏離本發明的范圍的情況下,在整個說明書中可交換地使用術語"處理實體"或"處理復合 體(complex)"。例如,處理實體可以包括來自諸如英特爾、Qualcomm和Tilera之類的出售商 的雙核、四核或多核處理器。處理實體可以運行文件系統軟件堆棧并且解碼用于存取存貯 介質的來自網絡的I/O請求。在一種實現方式中,處理實體可以包括用于PCIe協議或類似協 議的根復合體。在一種實現方式中,處理實體可以被實施為ASIC、FPGA或MCM內的處理邏輯。 [0054]如本文所描述的,"路由實體"可以指代用于在接口實體、處理實體、NVM刀片和路 由實體本身之間對數據進行路由的一個或多個路由器。在一種實現方式中,路由實體可以 表示用于PCIe協議的PCIe節點或端點。
[0055] 如本文所描述的,"接口實體"可以指代與存貯設備進行接口連接的一個或多個主 機接口芯片。在一個實施例中,接口實體可以使用PCIe協議將I/O請求轉發到路由實體。可 以使用諸如千兆以太網、光纖信道、撥入或者甚至PCIe協議之類的任何合適的協議來接收 在接口芯片處的I/O請求。
[0056] 如本文所描述的,"I/O請求"可以指代用于存儲數據或從存貯介質中取回數據的 來自網絡的對存貯設備的輸入/輸出請求。
[0057]如本文所描述的,"高速外圍組件互聯(PCIe)"可以指代針對更高的最大系統總線 吞吐量、更低的I/O引腳數和更小的物理印跡、對于總線設備的更好的性能提升、更詳細的 錯誤檢測和報告機制以及固有的熱插拔功能所設計的高速串行計算機擴展總線標準。在常 規的PCIe系統中,PCIe根復合體列舉耦合到處理器的所有端點設備并且創建類樹形結構。 [0058]企業系統的存貯設備需要海量存儲容量、對存貯設備讀取和寫入的低延遲、高帶 寬、低功耗以及可靠性。傳統地,使用諸如在電力關閉時保留數據的硬盤驅動器(HDD)介質 之類的存貯介質來實施企業系統。HDD是使用快速旋轉盤以便存儲和取回數字信息的數據 存貯設備。HDD由一個或多個具有布置在移動致動器臂上以向表面讀取和寫入數據的磁頭 的堅硬("硬")快速旋轉盤(盤片)組成。
[0059]歸因于讀取和寫入數據時所涉及的移動部分,HDD固有地易于發生錯誤和故障,并 且在提高數據尋找時間方面具有下限。另外,由于HDD具有旋轉的盤片,因此對能夠將該部 分制作得如何小以及該部分的功耗也存在限制。
[0060] 在某些實施例中,本文所描述的技術提出了使用NVM存貯介質來實施存貯設備。在 一些實施例中,使用NVM存貯介質可能通常是有利的,這是因為NVM存貯介質具有較低的尋 找時間、不具有移動部分,并且與HDD相比總體上可以更可靠。
[0061] 在一個實施例中,可以以增強散熱、降低功耗、分散功率和工作負載,以及降低延 遲的方式來布置組件、模塊和控制器板的配置。
[0062]常規的存貯設備可以提供一個或多個控制器板,其中每個控制器板包括單一處理 復合體以接收I/O請求、處理請求并且向適當的存貯介質轉發存儲請求。在增加的網絡速度 以及對于存貯設備的尺寸的增加的日益增加的需求的情況下,用于存取用于存儲的物理介 質的單一點可能變為系統的瓶頸,導致對于I/O請求的高延遲。在單一處理復合體處增加處 理負載可能導致較小的面積中的更高的熱量濃度,使得適當的散熱成為挑戰。而且,單個處 理單元可能不能夠足夠快速地處理事務以跟上I/O請求。在常規系統中,單一的系統設計可 能已經不具有問題,這是因為事務瓶頸往往是對于HDD的讀取和寫入的尋找時間,而不是至 HDD的處理路徑。
[0063]在一些實施例中,可以使用NVM存貯介質來實施存貯設備。通常,與常規HDD相比, NVM存貯介質可以具有較低的尋找時間。在由NVM存貯介質賦予較低的尋找時間的情況下, 使用單個處理復合體的常規控制器板設計可能導致次優的配置。本發明的實施例也可以提 供進一步的增強來改善對NVM存貯介質的存取時間。雖然可以在本文為了說明的目的使用 NVM存貯介質來描述本發明的一些實施例,但本發明可以不限于NVM存貯介質,并且在不脫 離本發明的范圍的情況下可以使用其它合適的物理存貯介質。
[0064]此外,常規的存貯設備可以通過維持數據的鏡像存儲來實施容錯系統。換句話說, 對于每個寫入操作,可以使用獨立處理路徑將數據存儲在至少兩個分開的存貯子系統中。 在諸如電源故障、存貯介質的故障或處理路徑中的錯誤之類的第一存貯子系統中的災難性 故障發生時,具有鏡像數據的第二存貯系統可以用作在第一系統恢復時取回和存儲數據的 有效備份。對于HDD,由于介質的低可靠性,維持鏡像數據可能是必要的,并且由于與介質相 關聯的較低成本,其是可行的。
[0065]在一些實施例中,NVM存貯介質可以用于實施容錯系統。相對地,與常規的存貯介 質相比,NVM存貯介質可能更可靠并且較不易于發生錯誤。在一些實現方式中,可以使用諸 如獨立磁盤冗余陣列(RAID)之類的技術或其它合適的錯誤恢復和校正技術來確保存儲在 NVM存貯介質上的數據的可靠性。因此,如參考附圖在本文討論的實施例中更加詳盡地描述 的,可以有利的是,在使用NVM存貯介質所實施的實施例中,通過為對于NVM存貯介質的相同 物理位置的相同讀取或寫入操作提供多個路徑,而不是通過將包括存貯介質的整個系統進 行鏡像來降低系統的總體成本。
[0066] 圖1示出了根據本發明的一個實施例的存貯設備的示例高層次框圖。方框102示出 了具有兩個控制器板(104和106)的存貯設備以及耦合到控制器板的刀片的陣列(120a-n)。 在一個實施例中,圖1中的存貯設備可以表示主動(active)/主動存貯系統。主動/主動配置 使得兩個控制器板的處理模塊均能夠處理I/O并且提供對于另一個控制器板的備用能力。 在一個簡單化的示例中,如果來自控制器板104對特定刀片的讀取或寫入命令失敗,則可以 通過控制器板106試圖進行相同的讀取或寫入。可以實施通信協議以在控制器板104和106 之間傳遞狀態信息。可以有利的是,實施主動/主動存貯設備來提高性能,這是因為與兩個 控制器板相關聯的處理模塊可以同時地或接近同時地處理I/O。然而,圖1中的存貯設備不 受限于主動/主動存貯設備,并且也可以用于主動/被動配置中,其中一個控制器板的處理 模塊對于處理I/O請求是主動的,而另一個控制器板在備用模式中空閑,以便準備好在主動 的主要控制器板發生故障或離線時接管I/O活動。
[0067] 如圖1中所示,每個NVM刀片可以耦合到兩個控制器板。每個控制器板具有用于路 由的路由模塊(108和110)、用于處理I/O請求的處理模塊(112和114)以及用于接收I/O請求 的主機接口(116和118)。在一種實現方式中,路由模塊(108和110)可以負責將來自接口模 塊(116和118)的I/O請求路由到處理模塊(112和114)以便進一步處理I/O請求。處理模塊 (112和114)可以使用文件系統軟件堆棧(未示出)來處理I/O請求。路由模塊(108和110)還 將來自處理模塊(112和114)的存取和存儲請求路由到NVM刀片120a-n。在一種實現方式中, NVM刀片使用PCIe協議或任何其它合適協議耦合到路由模塊(108和110)。
[0068] 在一種實現方式中,每個NVM刀片可以耦合到兩個控制器板(104和106),這使得 NVM存貯介質的每個物理地址可由任一控制器板來存取。該配置可以有利于避免底層存貯 介質的復制和數據的鏡像,其中可以通過使用更可靠的存貯介質和/或諸如RAID之類的尖 端數據恢復技術或其任何組合來確保物理介質上的數據的可靠性。
[0069]圖2示出了根據本發明的一個實施例的存貯設備的另一個示例框圖。圖2示出兩個 控制器板的圖像,其中每個控制器板包括兩個處理器、存儲器、路由器和接口芯片。圖2還描 繪了具有用于氣流的中央通道的42個NVM刀片。雖然未示出,但存貯設備也可以包括具有功 率管理功能的兩個橋式板以及板載NVM。板載NVM可以用于存儲諸如指針、更新的活動、高速 緩存備份和讀取/寫入緩沖器之類的動態元數據。在一些實施例中,字節可寫的諸如磁性 RAM之類的NVM可以用于實施板載NVM。另外,存貯設備可以包括12個風扇,其中8個風扇被用 于冷卻NVM存儲器,4個風扇被用于冷卻控制器板。可以將這些組件放置在圖2的示例配置中 以優化氣流、處理負載、散熱。存貯設備還可以包括多個電源。電源通常易于發生故障并且 可能由于風扇或其它功率組件的故障而發生故障。使用多個電源向存貯設備供電可以避免 由于電源之一的組件的故障所引起的存貯設備的故障。在一種實現方式中,可以通過電力 軌對控制器或控制器板進行供電,其中電力軌可以從多個電源來供電。在連接到電力軌的 電源之一發生故障的情況下,電力軌繼續從運轉的電源供電。在一些實現方式中,可以利用 正確運轉的電源對發生故障的電源進行熱插拔(即,在沒有使存貯設備輪轉的功率的情況 下是可更換的)。
[0070] NVM刀片和控制器/控制器板可以具有在任一個板發生故障的情況下用于防止短 路的單獨實施的數字斷路器。此外,還可以以下面這種方式來實施電源:在電源發生故障的 情況下允許電源僅僅向電力軌供應功率、而不從電力軌消耗功率。在一種實現方式中,二極 管可以用于防止功率通過故障的電源漏出。
[0071]參照圖2所描述的許多組件(諸如,控制器板、電源、NVM刀片、橋式板和風扇)以及 它們的相關聯的配置是非限制性的并且作為示例被提供用于示出存貯設備的特定配置。 [0072]圖3示出了根據本發明的一個實施例的存貯設備的又一個示例框圖。如圖3中所 示,存貯設備的組件可以被配置為符合矩形形狀框。在一個示例配置中,氣流可以是從前到 后,其中風扇被放置在存貯設備的后面。該形狀可以有利于將多個存貯設備一起分組在企 業數據存貯設施處的機架配置中。然而,存貯設備的形狀不受限于圖3中示出的矩形形狀 框。
[0073]圖4不出了根據本發明的一個實施例的存設備的不例框圖。圖4的系統402不出 具有第一控制器板404和第二控制器板406的存貯設備。為了說明的目的,圖4描繪了來自多 個NVM刀片的單個NVM刀片420。
[0074] 第一控制器板404可以具有第一處理實體412、耦合到第一處理實體的存儲器416、 第二處理實體414、耦合到第二處理實體的存儲器432、接口實體408以及路由實體410。 [0075] 第二控制器板406可以具有第三處理實體424、耦合到第三處理實體的存儲器428、 第四處理實體418、耦合到第四處理實體的存儲器430、接口實體422以及路由實體426。 [0076] 在一種實現方式中,路由實體(410和426)可以負責將來自接口實體(408和422)的 I/O請求路由到處理實體(412、416、428和430)之一以進一步處理I/O請求。處理實體可以使 用文件系統軟件堆棧(未示出)來處理I/O請求。路由實體(410和426)還將來自處理實體 (412、416、428和430)的數據請求路由到NVM刀片420。
[0077] 在一些實施例中,來自第一控制器板404的路由實體410和來自第二控制器板406 的路由實體426可以耦合到NVM刀片420以存儲數據和從NVM刀片420中取回數據。在一種實 現方式中,NVM刀片420使用PCIe協議耦合到路由實體。該配置可以有利于避免底層存貯介 質的復制和數據的鏡像,其中可以通過使用更可靠的存貯介質和/或諸如RAID之類的尖端 的數據恢復技術或其任何組合來確保物理介質上的數據的可靠性。
[0078]在圖4中,在一個示例配置中,第一處理實體412可以被配置為:接收一個或多個1/ 〇請求,確定與I/O請求相關聯的數據被用于存儲操作并且其與耦合到第一路由實體410的 第一刀片上的特定位置相關聯,以及向第一路由實體傳送與I/O請求相關聯的數據以將第 一數據存儲在第一刀片420上。在一種實現方式中,在第一處理實體412上運行的文件系統 軟件堆棧可以確定與I/O請求相關聯的位置和NVM刀片操作。例如,在一個實施例中,第一處 理實體412可以執行從文件標識符到數據在物理存貯介質上的物理位置的一個或多個地址 轉換。在一個方面中,由第一處理實體412接收的I/O請求可以首先在接口實體408被接收并 且通過多個路由實體之一被轉發到第一處理實體412。
[0079]類似地,第二處理實體414可以被配置為:接收另一個I/O請求,確定與I/O請求相 關聯的數據將被存儲在耦合到第一路由實體410的第一刀片420上的另一個位置,以及向第 一路由實體410傳送與I/O請求相關聯的數據以將數據存儲在第一刀片420上。第二處理實 體414也可以運行文件系統軟件堆棧以用于確定與I/O請求相關聯的位置和存儲操作。
[0080]以上示例說明用于執行負載平衡以及為了從相同控制器板存取兩個處理實體之 間的相同NVM刀片420而在各處理實體(412和414)之間分散多個I/O請求的示例配置和處 理。雖然示出了兩個處理實體,但可以使用多個處理實體。這有利于在以超高速同時對相同 物理介質執行多個存儲操作時分散處理I/O請求的負載并且也避免瓶頸。
[0081]還可以使用類似的技術從物理介質取回所存儲的數據。例如,第二處理實體414可 以被配置為接收用于讀取由第一處理實體412或就此而言的任何其它處理實體所存儲的數 據的I/O請求。第二處理實體414可以確定I/O請求是對于位于耦合到第一路由實體410的第 一刀片420的位置處的數據的讀取請求,從第一路由實體410從該位置請求數據,以及從第 一路由實體410接收第一數據。
[0082] 在一個示例配置中,第一處理實體412和第二處理實體414可能不是直接耦合的, 而是通過第一路由實體410進行彼此耦合。可以使用PCIe協議或任何其它合適的協議來執 行在第一處理實體412和第一路由實體410之間的數據的傳送以及在第二處理實體414和第 一路由實體410之間的數據的傳送。
[0083] 為了說明的目的,雖然圖4描繪了一個NVM刀片和兩個控制器板,其中每個控制器 板具有兩個處理實體、兩個存儲器以及一個路由實體和接口實體,但本發明的實施例不受 限于在圖中所描繪的實體的數量。例如,在不脫離本發明的范圍的情況下,另一個示例配置 可以包括多個NVM刀片、多個路由實體和多個接口實體。圖7是這種配置的一個示例,其具有 多個路由器(路由實體)和多個接口芯片(接口實體)。
[0084] 在另一個示例配置中,第一處理實體412和第二處理實體414可以耦合到第一控制 器板404上的另一個(第二)路由實體(未示出)。類似于路由實體410,第二路由實體也可以 耦合到另一個NVM刀片并且可以處理從第一處理實體412和第二處理實體414兩者接收到的 存儲存取命令。可以使用PCIe協議或任何其它合適的協議來執行在第一處理實體412和第 二路由實體(未示出)之間的數據的傳送以及在第二處理實體414和第二路由實體(未示出) 之間的數據的傳送。類似地,第二控制器板406上的組件以與在以上描述的第一控制器板 404類似的方式進行配置和操作。
[0085] NVM刀片420可以包括用于與多個控制器板進行通信的多個路由接口。在存貯設備 402的一個示例實現方式中,包括路由實體410的第一控制器板404和包括路由實體426的第 二控制器板406耦合到NVM刀片420 AVM刀片420可以通過路由實體410耦合到第一控制器板 404,并且NVM刀片可以通過路由實體426耦合到第二控制器板406。在一種實現方式中,NVM 刀片420使用PCIe協議或任何其它合適的協議與控制器板上的路由實體(410和426)進行通 信。在一個實施例中,NVM刀片包括NVM存貯介質。在其它實施例中,存貯設備可以包括多個 NVM刀片,控制器板可以包括多個路由實體。
[0086] 在一些實施例中,來自第一控制器板404的路由實體410和來自第二控制器板406 的路由實體426可以彼此耦合。在一些實現方式中,兩個路由實體可以使用不符合PCIe的透 明橋進行彼此耦合。在一種實現方式中,兩個路由實體(410和426)可以彼此傳遞容錯信息、 系統狀態信息、事務完成信息以及關于控制器板的狀態的其它信息。
[0087] 在一個實施例中,來自圖4的存貯設備402可以表示主動/主動存貯系統。主動/主 動配置使得兩個控制器板的處理模塊能夠處理I/O讀取并且提供對于另一個控制器板的備 用能力。在一個簡單化的示例中,如果來自控制器板404對特定刀片的讀取或寫入命令失 敗,則可以通過控制器板406試圖進行相同的讀取或寫入。如上所述,可以實施通信協議以 通過路由實體410和426在控制器板404和406之間傳遞狀態信息。可以有利的是,實施主動/ 主動存貯設備來提高性能,這是因為與兩個控制器板相關聯的處理模塊可以同時處理I/O。 然而,圖4中的存貯設備不受限于主動/主動存貯設備,并且也可以用于主動/被動配置中, 其中一個控制器板的處理模塊對于處理I/O請求是主動的,而另一個在備用模式中空閑,以 便在主動的主要控制器板發生故障或離線時接管I/O活動。
[0088] 在主動/主動系統的一種實現方式中,一個或多個控制器板可以假定作為主板的 角色,而其它一個或多個板可以假定作為從板的角色。主控制器板可以執行對NVM刀片的所 有數據寫入,而主板或從板均可以執行讀取。
[0089] 在一種示例實現方式中,可以由主控制器板來部分地執行到達從控制器板的I/O 寫入操作。例如,可以將寫入命令或與寫入命令相關聯的信息從所述從控制器板轉發到主 控制器板。在一種實現方式中,NT PCIe橋可以用于將與寫入操作相關聯的信息從所述從控 制器板遞送到主控制器板。在一種實現方式中,可以仍然由從控制器板將到達從控制器板 的用于寫入操作的數據提供給NVM刀片。
[0090] 主控制器板和從控制器板可以維持用于將讀取和寫入操作映射到NVM刀片的映射 表。在一種實現方式中,將讀取和寫入表格存儲在NVM刀片之一中。在一種實現方式中,讀取 和寫入表格可以被兩個控制器板共享。然而,在另一種實現方式中,可以由控制器板分開地 維持讀取和寫入表格。在每個控制器板具有其自己的表格的實例中,主控制器板可以更新 用于主控制器板和從控制器板的表格。
[0091 ] 如果從控制器板發生故障,則主控制器板繼續處理操作。另一方面,如果主控制器 板發生故障,則存貯設備失效備援(fail over)到從控制器板。從控制器板可以變為新的主 控制器板并且開始處理所有I/O寫入操作。
[0092] 上面所描述的系統可以允許在兩個或更多個控制器板之中分發讀取事務的工作 量,這是因為該讀取操作需要用于解碼I/O請求的處理能力和時間。
[0093] 圖5是根據本發明的一個實施例的、示出用于執行本發明的實施例的方法的流程 圖。由包括硬件(電路、專用邏輯等)、(諸如運行于通用計算系統或專用機器上的)軟件、固 件(嵌入式軟件)或其任何組合的處理邏輯來執行方法500中的信號傳送。在一個實施例中, 通過在圖13中所描述的一個或多個計算機系統1300來執行方法500。
[0094]圖5的流程圖描繪了處理I/O請求的第一處理實體502和第二處理實體504。雖然圖 5僅僅描繪兩個處理實體,但可以實施多個處理實體來執行參考圖5所描述的本發明的實施 例。例如,本發明的實施例可以使用第三、第四、第五或任何數量的處理實體來執行由第一 處理實體或第二處理實體所執行的本發明的類似步驟。此外,雖然在圖6中在開始指示符和 結束指示符之間對于每個處理實體僅僅描繪了一個I/O請求,但可以執行任何數量的I/O請 求。
[0095]在步驟506,耦合到多個NVM刀片的第一處理實體經由路由實體接收第一 I/O請求。 [0096] 在步驟508,第一處理實體確定第一 I/O請求是寫入請求還是讀取請求。在步驟 508,如果確定第一 I/O請求是讀取請求,則在步驟510,第一處理實體可以從多個NVM刀片中 確定目標NVM刀片以及將要從其讀取數據的目標NVM刀片中的位置。在一種實現方式中,第 一處理實體可以通過使用在第一處理實體上運行的文件系統軟件堆棧執行一個或多個地 址轉換來確定目標NVM刀片以及目標NVM刀片中的位置。
[0097]在步驟512,第一處理實體請求與第一 I/O請求相關聯的數據。在步驟514,對于該 讀取I/O請求,第一處理實體經由路由實體接收數據。
[0098] 在步驟508,如果確定第一 I/O請求是寫入請求,則在步驟516,第一處理實體可以 從多個NVM刀片中確定目標NVM刀片以及數據將被存儲的目標NVM刀片中的位置。在一種實 現方式中,第一處理實體可以通過使用在第一處理實體上運行的文件系統軟件堆棧執行一 個或多個地址轉換來確定目標NVM刀片以及目標NVM刀片中的位置。在步驟518,對于該寫入 I/O請求,第一處理實體經由路由實體向目標NVM刀片傳送數據以將數據存儲在目標NVM刀 片中。
[0099] 類似地,在第二處理實體504處,在步驟520,耦合到多個NVM刀片的第二處理實體 可以經由路由實體接收第二I/O請求。于在第一處理實體處所接收的第一 I/O請求之前/之 后或與其并行地,第二處理實體504可以接收第二I/O請求。此外,第一處理實體502和第二 處理實體504可以與彼此無關地執行圖5中所標識的步驟。
[0100] 在步驟522,第二處理實體確定第二I/O請求是寫入請求還是讀取請求。在步驟 522,如果確定第二I/O請求是讀取請求,則在步驟524,第二處理實體可以從多個NVM刀片中 確定目標NVM刀片以及將要從其讀取數據的目標NVM刀片中的位置。在一種實現方式中,第 二處理實體可以通過使用在第二處理實體上運行的文件系統軟件堆棧執行一個或多個地 址轉換來確定目標NVM刀片以及目標NVM刀片中的位置。在步驟526,第二處理實體請求與第 二I/O請求相關聯的數據。在步驟528,對于該讀取I/O請求,第二處理實體經由路由實體來 接收數據。
[0101 ]在一種替換中,在步驟522,如果確定第二I/O請求是寫入請求,則在步驟530,第二 處理實體可以從多個NVM刀片中確定目標NVM刀片以及數據將被存儲的目標NVM刀片中的位 置。在一種實現方式中,第二處理實體可以通過使用在第二處理實體上運行的文件系統軟 件堆棧執行一個或多個地址轉換來確定目標NVM刀片以及目標NVM刀片中的位置。在步驟 532,對于該寫入I/O請求,第二處理實體經由路由實體向目標NVM刀片傳送數據以將數據存 儲在目標NVM刀片中。
[0102] 如上面所討論的,類似于第一處理實體502,第二處理實體504可以處理I/O請求。 在一些實施例中,第一處理實體和第二處理實體可以以相對于彼此的任何順序來處理I/O 請求,并且還可以同時處理I/O請求。此外,第一處理實體和第二處理實體可以同時處理目 標是多個NVM刀片之一的事務。
[0103] 返回參考圖4,可以通過圖4中所描繪的任何處理實體來說明系統中的兩個處理實 體的示例。例如,兩個處理實體可以是同一控制器板404上的412和414,或者是存在于不同 控制器板上的處理實體412和處理實體428。
[0104] 可以使用PCIe協議或任何其它合適的協議來執行參考圖5所討論的一個或多個組 件之間的通信。即使I /0請求導致針對同一 NVM刀片的存儲操作,圖5的方法在將I /0請求分 散在多個處理實體之間也可以是有利的,這允許更快的處理、避免瓶頸和促進更好的散熱。
[0105] 應當理解,在圖5中示出的特定步驟提供根據本發明的實施例的在操作模式之間 切換的特定方法。在替換實施例中,也可以相應地執行步驟的其它順序。例如,本發明的替 換實施例可以以不同次序執行上面略述的步驟。為了進行說明,用戶可以選擇從第三操作 模式改變為第一操作模式,從第四模式改變為第二模式,或者其間的任何組合。而且,在圖5 中示出的單獨的步驟可以包括適合于單獨的步驟的能夠以各種順序執行的多個子步驟。此 外,取決于特定應用,可以添加附加步驟或移除附加步驟。本領域普通技術人員將認識和理 解到方法500的許多變化、修改和替換。
[0106]圖6是根據本發明的一個實施例的、示出用于執行本發明的實施例的另一個方法 的流程圖。由包括硬件(電路、專用邏輯等)、(諸如運行于通用計算系統或專用計算機上的) 軟件、固件(嵌入式軟件)或其任何組合的處理邏輯來執行方法600中的信號傳送。在一個實 施例中,通過在圖13中所描述的一個或多個計算機系統1300來執行方法600。
[0107]圖6的流程圖描繪了處理I/O請求的第一處理實體602和第二處理604。雖然圖6僅 僅描繪兩個處理實體,但可以實施多個處理實體來執行參考圖6所描述的本發明的實施例。 例如,本發明的實施例可以使用第三、第四、第五或任何數量的處理實體來執行由第一處理 實體或第二處理實體所執行的本發明的類似步驟。此外,雖然在圖6中在開始指示符和結束 指示符之間對于每個處理實體僅僅描繪了一個I/O請求,但可以執行任何數量的I/O請求。 圖6描述了在圖5中所描述的實施例的一種實現方式。
[0108] 在步驟606,耦合到多個NVM刀片的第一處理實體經由第一路由實體來接收第一 1/ 〇請求。
[0109] 在步驟608,第一處理實體確定第一 I/O請求是寫入請求還是讀取請求。在步驟 608,如果確定第一 I/O請求是讀取請求,則在步驟610,第一處理實體可以確定該讀取請求 是對于來自耦合到第一路由實體的多個NVM刀片當中的第一NVM刀片的第一位置的數據的 讀取。在一種實現方式中,第一處理實體可以通過使用在第一處理實體上運行的文件系統 軟件堆棧執行一個或多個地址轉換來確定第一 NVM刀片以及第一 NVM刀片上的第一位置。
[0110] 在步驟612,第一處理實體經由第一路由實體請求與第一 I/O請求相關聯的數據。 在步驟614,第一處理實體經由第一路由實體來接收數據并且完成讀取I/O請求。
[0111] 在步驟608,如果確定第一 I/O請求是寫入請求,則在步驟616,第一處理實體可以 從多個NVM刀片中確定第一 NVM刀片以及將要存儲數據的第一 NVM刀片上的第一位置。在一 種實現方式中,第一處理實體可以通過使用在第一處理實體上運行的文件系統軟件堆棧執 行一個或多個地址轉換來確定第一 NVM刀片以及第一 NVM刀片上的第一位置。在步驟618,第 一處理實體經由第一路由實體向第一 NVM刀片傳送數據以將數據存儲在第一 NVM刀片上的 第一位置。
[0112] 類似地,在第二處理實體604處,在步驟620,耦合到多個NVM刀片的第二處理實體 可以經由第一路由實體接收第二I/O請求。于在第一處理實體處所接收的第一 I/O請求之 前/之后或與其并行地,第二處理實體604可以接收第二I/O請求。
[0113] 在步驟622,第二處理實體確定第二I/O請求是寫入請求還是讀取請求。在步驟 622,如果確定第二I/O請求是讀取請求,則在步驟624,第二處理實體可以確定讀取請求是 對于來自耦合到第一路由實體的多個NVM刀片當中的第一NVM刀片的第一位置的數據的讀 取。在一種實現方式中,第二處理實體可以通過使用在第二處理實體上運行的文件系統軟 件堆棧執行一個或多個第一地址轉換來確定第一 NVM刀片以及第一 NVM刀片上的第一位置。 在步驟626,第二處理實體經由第一路由實體請求與第二I/O請求相關聯的數據。在步驟 628,第二處理實體經由第一路由實體來接收數據并且完成讀取I/O請求。
[0114] 在一種替換中,在步驟622,如果確定第二I/O請求是寫入請求,則在步驟630,第二 處理實體可以確定寫入請求可以是將數據存儲在耦合到第一路由實體的多個NVM刀片中的 第一NVM刀片的上的第一位置的請求。在一種實現方式中,第一處理實體可以通過使用在第 二處理實體上運行的文件系統軟件堆棧執行一個或多個地址轉換來確定第一 NVM刀片以及 第一 NVM刀片上的第一位置。在步驟632,對于寫入I/O請求,第二處理實體經由第一路由實 體向目標NVM刀片傳送數據以將數據存儲在目標NVM中。
[0115] 如上面所討論的,類似于第一處理實體602,第二處理實體604可以處理I/O請求。 在一些實施例中,第一處理實體和第二處理實體可以以相對于彼此的任何順序來處理I/O 請求并且也可以同時處理I/O請求。此外,第一處理實體和第二處理實體可以同時處理目標 是多個NVM刀片之一的事務。
[0116] 返回參考圖4,可以通過存在于同一控制器板404上的處理實體412和414來說明存 在于同一控制器板上并且通過同一路由實體存取同一 NVM刀片的兩個處理實體的示例。在 圖6中描述的步驟允許存在于同一控制器板上的兩個處理實體同時處理并且服務于目標是 同一NVM刀片或者甚至NVM刀片上的同一位置的I/O請求。如在圖6中所描述的,雖然可以在 分開的處理實體處解碼和處理I/O請求,但它們可以使用同一路由實體來存取NVM刀片,因 而通過避免硬件的復制來節約成本。
[0117] 可以使用PCIe協議或任何其它合適的協議來執行參考圖6所討論的一個或多個組 件之間的通信。即使I/O請求導致針對同一 NVM刀片的存儲操作,圖6的方法在將I/O請求分 散在多個處理實體之間也可以是有利的,以便允許更快的處理、避免瓶頸和促進更好的散 熱。
[0118] 應當理解,在圖6中示出的特定步驟提供了根據本發明的實施例的在操作模式之 間切換的特定方法。在替換實施例中,也可以相應地執行步驟的其它順序。例如,本發明的 替換實施例可以以不同次序執行上面略述的步驟。為了進行說明,用戶可以選擇從第三操 作模式改變為第一操作模式,從第四模式改變為第二模式,或者其間的任何組合。而且,在 圖6中示出的單獨的步驟可以包括適合于單獨的步驟的能夠以各種順序執行的多個子步 驟。此外,取決于特定應用,可以添加附加步驟或移除附加步驟。本領域普通技術人員將認 識和理解到方法600的許多變化、修改和替換。
[0119] 圖7示出了根據本發明的一個實施例的控制器板的示例框圖。在一個實施例中,控 制器板702可以表示圖1的控制器板104或106。如圖7中所示,控制器板具有2個處理器(704 和 708)、4個路由器(712、714、716、718)和4個接口芯片(720、722、724和726)。處理器0(704) 可以具有用于控制對其本地存儲器706a-d的存取的存儲器控制器。類似地,處理器1(708) 也可以具有用于控制對其本地存儲器710a-d的存取的存儲器控制器。在一個實施例中,接 口芯片和路由器可以使用PCIe協議或任何其它合適的協議來與彼此進行通信。PCIe也可以 被用作用于處理器和路由器之間的通信的路由協議。可以使用諸如千兆以太網、光纖信道、 撥入或者甚至PCIe協議之類的任何協議來接收在接口芯片處的I/O請求。
[0120] 如圖7中所示,在一個實施例中,每個接口芯片能夠通過路由器向任一個處理器 (704和708)傳遞數據。每個接口芯片可以通過PCIe協議或任何其它合適的協議耦合到至少 一個路由器。I/O請求可以到達接口芯片之一。接口芯片可以使用PCI e協議將I/O請求轉發 到路由器。每個路由器連接到控制器板702上的兩個處理器。路由器接收I/O請求并且確定 一處理器以轉發I/O請求用于進一步處理。一旦處理器已經解碼了I/O請求并且查明了用于 存儲數據或從NVM存貯介質取回數據的操作,該處理器就向路由器之一發送存儲器操作命 令。每個路由器通過NVM刀片耦合到NVM存貯介質的子集。例如,在圖7中,每個路由器連接到 大致四分之一總數量的NVM刀片。向路由器發送NVM存貯介質請求的確定可以基于NVM存貯 地址空間內的存儲/存取請求的地址。例如,如果處理器704確定I/O請求導致對耦合到路由 器R2 (716)的NVM刀片的存儲,那么處理器可以使用PCIe協議將請求轉發到路由器R2 (716)。 路由器R2 (716)將存儲請求轉發到相應的NVM刀片以便存儲。
[0121] 在某些實施例中,參考圖7所描述的配置可以有利于降低與各種電子組件相關聯 的負載、增加針對NVM存貯介質的操作的吞吐量,以及從存貯設備內的各個組件耗散熱量。
[0122] 在常規的PCIe系統中,中央處理單元可以包含用于整個系統的根復合體。PCle根 復合體列舉耦合到處理器的所有端點設備并且創建類樹形結構。由耦合到PCIe根復合體的 一個或多個處理器來處理在端點處始發的所有請求。在具有大量從諸如接口芯片之類的端 點處始發的請求的存貯設備中,根復合體和處理器變為系統中處理事務的瓶頸。在一種實 現方式中,更強有力的處理器可以用于迅速地處理I/O請求并且減輕瓶頸。雖然該方式可以 暫時地減輕瓶頸,但其可能增加與處理器相關聯的功率負載。此外,由于由處理器處理的1/ 0請求數量增加,處理器也可能跨越控制器板上的小范圍生成更多熱量。在一個處理器或緊 密地集群的處理器處的增加的熱量可能使得在整體上將存貯設備的更密集的熱封(heat envelope)維持在可接受水平變得有挑戰性。附加的功率負載和熱量可能在組件級和設備 級二者處產生更多故障。
[0123] 本發明的實施例提出將用于存取NVM存貯器的處理和路由功能跨越控制器板分散 到多個處理實體。在一個實施例中,可以跨越控制器板分散多個處理實體以處理I/O請求。 在一種實現方式中,處理實體之一可以充當PCIe根復合體,并且第二處理實體可以充當端 點。例如,在圖7中,處理器0(707)可以被配置為PCIe根復合體,并且處理器1(708)可以被配 置為端點。在一種實現方式中,可以對于路由器(路由器0(712)、路由器2(714)、路由器3 (716)和路由器4(718))中的每一個而將用于處理器1(708)的存儲器空間四次列舉為端點。 在用于I/O請求的接收路由器不具有用于I/O請求的適當映射的實例中,路由器可以將I/O 請求轉發到被配置為用于確定映射的PCIe根復合體的處理實體。而且,可以在配置時使用 路由信息來配置接口芯片。
[0124] 在已經在接口芯片和路由器處建立了路由的實例中,可以將到達接口芯片并且被 轉發到路由器的I/O請求發送到分散處理功能的任一處理實體(704和708)。除了處理以外, 所描述的體系結構也可以將鏈路的連接進行分散。例如,可以實施多個接口芯片來同時接 收I/O請求以及將這些I /〇請求轉發到路由器。此外,在路由器當中分發NVM刀片,這允許在 多個路由器當中分發對NVM刀片的存取、避免總線或路由積壓。如圖7中所描述的這種配置 還可以有利于:在存取可通過不同路由器存取的NVM刀片時,允許同時對多個刀片的存取, 這顯著地提高了讀取和寫入性能。在替換實現方式中,本發明的實施例提出多個處理實體, 每個處理實體具有它們自己的根復合體以用于跨越控制器板分散用于存取NVM存貯器的處 理和路由功能。每個端點(即,路由器)可以連接到一個以上的根復合體。因此,能夠將到達 接口芯片并且被轉發到路由器的I/O請求發送到分散處理功能的任一處理實體(704和 708)。除了處理以外,所描述的體系結構也可以將鏈路的連接進行分散。例如,可以實施多 個接口芯片來同時接收I/O請求并且將這些I/O請求轉發到路由器。此外,在路由器當中分 發NVM刀片,這允許在多個路由器當中分發對NVM刀片的存取、避免總線或路由積壓。由于每 個處理器連接到控制器板上的每個路由器,因此每個處理器能夠單獨地尋址任何NVM存儲 地址。如圖7中所描述的這種配置還可以有利于:在存取可通過不同路由器存取的NVM刀片 時,允許同時對多個刀片的存取,這顯著地提高了讀取和寫入性能。
[0125] 處理器0(704)可以從啟動ROM 728啟動(boot),處理器1(708)可以從啟動ROM 734 啟動。在一個實施例中,在處理器704上運行的啟動ROM圖像還可以包括用于存儲文件系統 堆棧的初始化信息。在一種實現方式中,可以從板載NVM加載存儲文件系統操作系統(0S)。 在另一種實現方式中,可以從NVM刀片之一加載存儲文件系統0S。在一種實現方式中,在處 理器0(704)和處理器1(708)上運行的0S的圖像可以是不同的。文件系統0S可以負責將1/0 請求轉變為硬件讀取和寫入。
[0126] 在某些實施例中,板載NVM 736可以用于存儲諸如指針、更新的活動、高速緩存備 份和讀取/寫入緩沖器之類的動態元數據。在一些實施例中,字節可寫的諸如磁性RAM (MRAM)之類的NVM可以用于實施板載NVM。控制器板也可以具有連接到處理器704和處理器 708的調試端口740。調試端口可以支持一個或多個單獨的接口,諸如USB、PCIe、千兆以太網 等。
[0127] 圖8示出了根據本發明的至少一個實施例的、對于控制器板上的每個組件可見的 各個組件的地址空間的示例框圖。在一個實施例中,可以將地址空間定義為PCIe地址空間。
[0128] P0 810表示從圖7的處理器0(704)可見的PCIe地址空間的視圖。P1 830表示從圖7 的處理器1(708)可見的PCIe地址空間的視圖。R0 850、R1 860、R2 870和R3 880分別表示從 路由器0(712)、路由器1(714)、路由器2(716)和路由器3(718)可見的PCIe地址空間的視圖。 在一個實施例中,諸如處理器0(704)之類的PCIe根復合體可以發現所有端點并且配置用于 每個端點的PCI e地址空間。
[0129] 在一些實施例中,對從控制器板的組件中的任何之一可見的各個PCIe范圍中的任 何之一的存取可以導致與對另一個PCIe地址范圍的存取相比不同類型的響應。例如,根據 本發明的一個實施例,從處理器存取PCIe地址空間的一個范圍可以導致對路由器之一的配 置改變。在另一個示例中,存取PCIe地址空間的另一個范圍可以導致對耦合到路由器之一 的NVM刀片之一的讀取/寫入存取。還可以將對PCIe地址空間的一些存取映射至處理器的本 地存儲器或控制器板上的相鄰的處理器之一的存儲器。在又一個示例中,對PCIe地址空間 的一些存取可以導致通過非透明(NT)PCIe橋對相鄰控制器板上的組件的讀取/寫入。
[0130] 通過PCIe地址空間,若干實體具有對控制器板上的其它實體的地址空間的至少部 分存取。例如,在P0 810中,處理器P0 704可以存取其自己的存儲器、部分存取處理器P1 708的存儲器以及每一個路由器的地址空間。在一個實施例中,將NVM刀片分組成NVM刀片的 四個單獨的組,其中NVM刀片的每個組可以耦合到路由器之一。通過NVM刀片的組可以耦合 的路由器,可存取屬于NVM刀片的特定組的NVM刀片中的任何一個。
[0131] 在圖8中,從用于P0 810的PCIe地址空間中,B-G0 808表示通過路由器R0 712可存 取的第一組NVM刀片的地址空間。路由器R0 712可以耦合到第一組NVM刀片并且也可以通過 由主機總線適配器0(HBA0)806指定的地址空間而從處理器P0 704可配置。類似地,處理器 P0(704)可以通過地址空間B-G1 814存取第二組NVM刀片,并且通過HBA1 812存取第二路由 器R1 714、通過地址空間B-G2 818存取第三組NVM刀片、通過HBA2 816存取第三路由器R2 716,并且通過地址空間B-G3 822存取第四組NVM刀片并且通過HBA3 820存取第四路由器R3 718。在一些實現方式中,可以保留地址空間824的多個區段。在某些實施例中,諸如MRAM 828之類的板載NVM可以用于存儲諸如指針、更新的活動、高速緩存備份和讀取/寫入緩沖器 之類的動態元數據。此外,處理器P0(704)可以通過PCIe地址空間DRAM(P0)802存取其自己 的本地存儲器706a-d,并且通過PCIe地址DRAM(P1)804存取相鄰處理器P1 708的存儲器。在 一些實施例中,處理器P0(704)還可以通過NT端口826向相鄰控制器板的組件發送消息。
[0132] 類似于P0 810,從每一個組件可見的PCIe地址空間的視圖可以為相應的組件提供 使用PCIe地址空間與彼此進行交互的能力。例如,處理器Pl(708)還可以通過其PCIe地址空 間P1 830存取路由器(HBAO 840、HBA1 838、HBA2 836和HBA3 833)中的每一個、相關聯的 NVM刀片的組(B-GO 841、B-G1 839、B-G2 837和B-G3 834)、通過用于DRAM(P1)831 的PCIe地 址空間存取其自己的本地存儲器710a-d,以及用于相鄰處理器P0(704)DRAM(P0)832、MRAM 842和NT端口 838的存儲器。
[0133] 路由器還可以具有PCIe地址空間的類似的但具有更多局限的視圖。例如,路由器 R0 712可以具有系統的PCIe地址空間視圖R0 850。路由器R0可以能夠通過DRAM(P0)851和 DRAM(P1)853分別與處理器P0(704)、處理器Pl(708)進行通信。在某些實施例中,諸如MRAM 854之類的板載NVM可以用于存儲諸如指針、更新的活動、高速緩存備份和讀取/寫入緩沖器 之類的動態元數據。可以將控制器板上的其它組件對PCIe地址空間HBA0858的存取解釋為 對路由器R0 712的命令。可以將對B-G0 856的存取解釋為對耦合到路由器R0 712的NVM刀 片的讀取和寫入請求。路由器R0 712可能不具有為其它路由器或NVM刀片而保留的PCIe地 址空間,這是因為在這些組件之間不存在非直接耦合,如圖7中所示。R3 718也可以通過 HBA3 886和B-G3 887來分別存取處理器P0(704)DRAM(P0)881、處理器P1 708 DRAM(Pl) 883、MRAN 885、其自己的配置空間以及耦合到路由器的NVM刀片。
[0134] 路由器R1 714和R2 716也可以通過DRAM(P0)(861、871)和DRAM(P1)(863、873)分 別存取處理器P0(704)和Pl(708)。可以通過HBA1 866和HBA2 877以及它們相關聯的NVM刀 片B-G1 867和B-G2 878存取用于路由器R1 714和R2 716的配置空間。此外,路由器R1 714 和R2 716可以能夠分別通過NT端口865和875向相鄰控制器板上的路由器發送消息。
[0135] 在一些實現方式中,用于每個組件的PCIe地址空間內的一些地址范圍可以是未被 使用的并且被保留以供未來使用(843、852、857、862、864、868、872、874、876、879、882、884 和888)。
[0136] 如先前所討論的,圖8中示出的PCIe地址空間配置是為了說明的目的并且對地址 空間的其它實現方式是非限制性的。
[0137] 圖9示出了根據本發明的一個實施例的存貯設備的另一個示例高層次框圖。方框 902示出具有兩個控制器(904和906)的存貯設備以及耦合到控制器的NVM刀片(920a-n)的 陣列。在一個實施例中,可以使用橋908將控制器904和906耦合在一起,使用通信協議在控 制器904和906之間傳遞狀態信息以用于讀取和寫入事務。
[0138] 在一種實現方式中,第一控制器904和第二控制器906是包括用于處理I/O請求的 一個或多個處理器、用于控制器和多個NVM刀片之間的路由操作的一個或多個路由器以及 一個或多個接口芯片的印刷電路板(PCB)。先前已經在圖1-8中討論了此類控制器板的示 例。在另一種實現方式中,可以通過被實施為ASIC、FGPA、MCM的控制器或任何其它合適的解 決方案來執行多個分立組件的功能。在一種實現方式中,第一控制器904和第二控制器906 可以被實施為ASIC,每個控制器各自包括處理邏輯和路由邏輯。在一種實現方式中,控制器 也可以包括接口邏輯。在另一種實現方式中,如圖9中所示,為了對I/O請求進行接收和響 應,第一控制器904可以耦合到主機接口 916,第二控制器906可以耦合到另一個主機接口 918〇
[0139]在某些實施例中,圖9中的存貯設備可以表示主動/主動存貯設備。主動/主動配置 使得控制器的處理邏輯能夠處理I/O并且提供用于另一個控制器的備用能力。可以有利的 是,實施主動/主動存貯設備來提高性能,這是因為與兩個控制器相關聯的處理邏輯可以同 時或接近同時地處理I/O。然而,圖9中的存貯設備不受限于主動/主動存貯設備,并且也可 以用于主動/被動配置中,其中一個控制器的處理邏輯對于處理I/O請求是主動的,而另一 個控制器在備用模式中空閑以便在主動的主要控制器板發生故障或離線時接管I/O活動。 [0140] 在一種實現方式中,在圖9中示出的主動/主動系統中,第一控制器904可以被配置 為在主動模式下操作,并且接收用于存儲數據和從NVM存貯介質取回數據的I/O請求。類似 地,第二控制器906也可以被配置為在主動模式下操作,并且接收用于存儲數據和從NVM存 貯介質取回數據的I/O請求。雖然圖9僅僅描繪了兩個控制器,但多個控制器可以操作在主 動模式中。
[0141] 另外,存貯設備可以包括多個包括NVM存貯介質的NVM刀片920a-n。在一種實現方 式中,每個NVM刀片可以耦合到兩個控制器(904和906),這允許任一控制器可存取NVM存貯 介質的每個物理地址。該配置可以有利于避免底層存貯介質的復制和數據的鏡像,其中可 以通過使用更可靠的存貯介質和/或諸如RAID之類的尖端的數據恢復技術或其任何組合來 確保物理介質上的數據的可靠性。每個NVM刀片可以包括與第一控制器904進行通信的第一 路由接口和與第二控制器906進行通信的第二路由接口。在一種實現方式中,使用PCIe協議 或者任何其它合適的協議,第一路由接口與第一控制器進行通信,第二路由接口與第二控 制器進行通信。
[0142] 在主動/主動系統的一種實現方式中,一個或多個控制器可以假定作為主控制器 的角色,并且其它一個或多個控制器可以假定作為從控制器的角色。在一種實現方式中,主 控制器可以執行或發起針對NVM刀片的所有數據寫入,而主板或從板可以執行讀取。
[0143] 通常,相對于針對存貯介質的存儲或寫入操作,存貯設備可以服務于更多的讀取 操作。另外,與存儲或寫入操作相比,讀取操作可以完成得更快。因此,可以通過能夠由控制 器的處理邏輯解碼和處理I/O請求的速率來約束能夠服務讀取操作的速率。因此,可以有利 的是,在主動/主動系統中的兩個或更多個控制器之間使I/O讀取操作負載平衡以用于處理 和解碼I/O讀取操作。因此,主控制器和從控制器兩者均可以處理I/O讀取操作。相應地,在 圖9中,第一控制器904和第二控制器906兩者可以被配置為對于讀取操作以及從NVM存貯介 質的請求數據,同時或者接近同時地解碼I/O請求。
[0144] 在一種示例實現方式中,可以由主控制器來部分地執行到達從控制器板的寫入操 作。例如,可以將寫入命令或與寫入命令相關聯的信息從所述從控制器轉發到主控制器。在 一種實現方式中,橋908(例如,PCIe NT橋)可以用于將與寫入操作相關聯的信息從所述從 控制器遞送到主控制器。在一種實現方式中,可以仍然由從控制器將到達從控制器的用于 寫入操作的數據提供給NVM刀片。
[0145] 為了說明的目的,在給定時間點,第一控制器904可以是主控制器,第二控制器906 可以是從控制器。在一個示例中,I/O請求可以到達能夠用作主控制器的第一控制器904。第 一控制器904可以確定I/O請求是用于將與I/O請求相關聯的數據存儲到NVM存貯介質的寫 入操作。主控制器可以處理I/O請求、確定要分派寫入命令的NVM刀片,并且向該NVM刀片傳 送命令和數據以便存儲數據。
[0146] 在另一個示例中,I/O請求可以到達可以用作從控制器的第二控制器906。第二控 制器906可以確定I/O請求是用于將與I/O請求相關聯的數據存儲到NVM存貯介質的寫入操 作。第二控制器906可以向能夠充當主控制器的第一控制器904傳送與第二I/O請求相關聯 的命令信息。主控制器/第一控制器904可以接收從第二控制器906所傳送的命令信息,確定 可以存儲數據的NVM刀片,并且向該NVM刀片傳送寫入命令。雖然可以由主控制器傳送寫入 命令,但充當從控制器的第二控制器906可以向NVM刀片傳送與I/O請求相關聯的數據。管控 來自主設備的所有寫入操作可以有助于維持系統中的寫入一致性。另一方面,對于在從控 制器接收到的I/O寫入請求,將來自該從控制器的數據轉發到NVM刀片,這避免了在用于在 第一控制器904和第二控制器906之間轉發數據的這兩者之間的橋908(例如,NT PCIe橋)的 帶寬方面所要求的顯著增加。
[0147] 主控制器和從控制器可以維持用于將讀取和寫入操作映射到NVM刀片的映射表。 在一種實現方式中,將讀取和寫入表格存儲在NVM刀片之一中。在一種實現方式中,讀取和 寫入表格可以被兩個控制器共享。然而,在另一種實現方式中,可以由控制器單獨地維持讀 取和寫入表格。在每個控制器具有其自己的表格的實例中,主控制器可以更新用于主控制 器和從控制器兩者的表格。
[0148] 如果從控制器發生故障,則主控制器與之前一樣地繼續處理操作。另一方面,如果 主控制器發生故障,則存貯設備失效備援到從控制器。換句話說,從控制器可以變為新的主 控制器,并且開始處理寫入操作。例如,如果第一控制器904充當遭遇不可恢復錯誤的主控 制器,則系統可以失效備援,并且第二控制器906可以變為主控制器。
[0149] 在一些實現方式中,存貯設備還可以包括多個電源。電源通常易于發生故障并且 可能由于風扇或其它功率組件的故障而發生故障。使用多個電源向存貯設備供電可以避免 由于電源之一的組件的故障所引起的存貯設備的故障。在一種實現方式中,可以通過電力 軌對控制器板進行供電,其中電力軌可以從多個電源來供電。在連接到電力軌的電源之一 發生故障的情況下,電力軌繼續從運轉的電源供電。在一些實現方式中,可以利用正確運轉 的電源對發生故障的電源進行熱插拔(即,在沒有使存貯設備輪轉的功率的情況下是可更 換的)。圖10示出了根據本發明的一個實施例的NVM刀片的示例框圖。在一些實施例中,NVM 刀片1002可以表示圖4的NVM刀片420或者來自圖9的NVM刀片920a-n之一的一種實現方式。 示例NVM刀片1002可以包括一個或多個NVM芯片(1006和1008)以及刀片控制器lOOLNVM芯 片可以包括NVM存貯介質。NVM芯片可以通過共享總線(912和1014)或者專用總線(未示出) 耦合到刀片控制器1004。刀片控制器1004可以負責接收用于存取/存儲NVM芯片上的數據的 命令、對命令進行處理、存儲數據或從NVM芯片取回數據以及其它配置命令。雖然未示出, NVM芯片也可以存在于NVM刀片的相對側上。在一個實施例中,可以使用專用集成電路 (ASIC)來實施刀片控制器1004。在另一個實施例中,可以使用現場可編程門陣列(FPGA)來 實施NVM刀片控制器。
[0150] 圖11示出了根據本發明的一個實施例的刀片控制器的示例框圖。在一種實現方式 中,刀片控制器1004可以具有兩個或更多個PCIe接口(1014和1116)以用于連接到控制器 (或控制器板)上的路由實體。例如,PCI e接口 1114可以耦合到來自第一控制器的路由實體 上的PCIe接口之一,并且PCIe接口 1116可以耦合到來自第二控制器的路由實體上的PCIe接 口之一。每個PCIe接口可以維持與從PCIe接口耦合的相應控制器到達的命令相關聯的命令 隊列(1010和1112)。在一個實施例中,可以分開地維持用于與控制器相關聯的數據的數據 路徑。例如,在將與每個控制器相關聯的數據存儲至NVM存貯介質之前,可以相應地在方框 1106和1108壓縮該數據,并且可以在從NVM存貯介質取回數據之后,將該數據進行解壓縮。 維持分開的數據路徑可以允許數據的更高吞吐量并且降低與數據路徑相關聯的錯誤。在一 個實施例中,可以使用糾錯碼(ECC)在方框1106和1108處執行錯誤檢測和/或校正。例如,在 將數據存儲在NVM存貯介質中之前,數據可以被編碼和壓縮,并且在取回數據時,數據可以 被解壓縮和檢查錯誤。如果檢測到錯誤,在某些情況下,數據可以是可恢復的。如果錯誤不 是可恢復的,則NVM刀片可以丟棄讀取請求或者利用錯誤狀況對控制器板進行響應。
[0151] 命令管理器1104在多個PCIe接口處對命令進行仲裁。命令管理器1104對命令進行 解碼,并且存取來自芯片陣列中的適當的NVM存貯介質以便存儲/存取數據。通過對命令進 行仲裁,在一些實施例中,命令管理器1104可以允許在時間的任何特定時段僅一個有效命 令通過NVM接口 1102存取/存儲數據。在一些實現方式中,為了與每個控制器板進行接口連 接,可以分開地實施PCIe接口、命令隊列和ECC壓縮/解壓縮邏輯。讀取/寫入路徑、隊列以及 邏輯之間的這種隔離可以有利于避免NVM刀片的一個接口上的故障不利地影響NVM刀片的 第二接口。例如,如果命令隊列1110由于從第一控制器板至NVM接口 1102的任何地方的錯誤 而開始備份,則從第二控制器板至NVM存貯介質的讀取/寫入數據路徑可以繼續正常地發揮 作用。因此,在對NVM存貯介質的存儲操作從一個第一控制器板失敗的實例中,當檢測到這 種錯誤時,可以使用第二控制器板來完成對于非易失性存儲器上的相同存儲器位置的存儲 操作。
[0152]圖12示出了根據本發明的一個實施例的刀片控制器的另一個示例框圖。刀片控制 器1004的該替換實施例也可以具有用于連接到控制器上的路由邏輯的兩個或更多個PCIe 接口(1214和1216)以及與從PCIe接口耦合的相應控制器到達的命令相關聯的命令隊列 (1210和1212)。在一種實現方式中,可以使用緩沖器來實施命令隊列。在一種實現方式中, 命令隊列可以被配置為:一旦命令隊列緩沖器滿得超過預先確定的閾值就丟棄來自第一控 制器的命令。
[0153] 在一個實施例中,可以如圖12中所示來實施統一的數據路徑和統一的命令路徑。 在一些實施例中,在將來自數據路徑的數據存儲至NVM存貯介質之前,可以在方框1206壓縮 該數據,并且可以在從NVM存貯介質取回之后,將該數據解壓縮。在一個實施例中,可以使用 糾錯碼(ECC)在方框1206執行錯誤檢測和/或校正。例如,在將數據存儲在NVM存貯介質中之 前,該數據可以被編碼和壓縮,并且在取回數據時,數據可以被解壓縮和檢查錯誤。如果檢 測到錯誤,在某些情況下,數據可以是可恢復的。如果錯誤不是可恢復的,則NVM刀片可以丟 棄讀取請求或者利用錯誤狀況對控制器進行響應。
[0154] 命令管理器1204可以對來自多個PCIe接口的命令進行仲裁。命令管理器1204對命 令進行解碼,并且存取來自芯片陣列中的適當的NVM存貯介質以便存儲/存取數據。通過對 命令進行仲裁,命令管理器1204可以允許在時間的任何特定時段僅一個有效命令通過NVM 接口 1202存取/存儲數據。如圖12中所示,統一的數據路徑和命令路徑可以導致成本和設計 效率。
[0155] 雖然在上面的圖中未示出,但在一種實現方式中,可以對于來自多個NVM芯片中的 每個NVM芯片維持分開的命令隊列和/或數據隊列,其中NVM芯片包括用于NVM刀片的NVM存 貯介質。此外,可以對于每個控制器維持分開的命令隊列和/或數據隊列集合。例如,在具有 32個NVM芯片的NVM刀片的實現方式中,可以對于源自第一控制器的請求維持32個命令隊列 和/或數據隊列,并且可以對于源自第二控制器的請求維持32個命令隊列和/或數據隊列。 這種配置可以允許當在NVM刀片上發起、處理和完成其它命令時發起、處理和/或完成多個 未決的命令,只要操作不是針對同一 NVM芯片即可。命令管理器1004可以對源自兩個控制器 的命令進行仲裁。
[0156] 已經描述了垂直集成的體系結構的多個方面,現在可以參考圖13來描述可以實施 本公開的各個方面的計算系統的示例。根據一個或多個方面,可以將如圖13中所示出的計 算機系統并入作為能夠實施、執行和/或運行本文所描述的任何和/或所有的特征、方法和/ 或方法步驟的計算設備的一部分。例如,計算機系統1300可以表示設備和/或接入點裝置的 一些組件。設備可以是具有諸如RF接收機之類的無線單元的任何計算設備。在一個實施例 中,系統1300被配置為實施本文所描述的任何方法。圖13提供計算機系統1300的一個實施 例的示意圖示,該計算機系統1300能夠執行如本文所描述的由各個其它實施例提供的方 法,和/或能夠用作主機計算機系統、遠程信息站/終端、銷售點設備、移動設備、機頂盒和/ 或計算機系統。圖13僅僅意味著提供各個組件的一般圖示,可以根據情況利用其中的任何 和/或所有組件。因此,圖13寬泛地示出可以如何以相對分開或相對更集成的方式來實施獨 立的系統元件。
[0157] 示出了包括能夠經由總線1305電耦合(或者可以另外根據情況地進行通信)的硬 件元件的計算機系統1300。硬件元件可以包括:一個或多個處理器1310,其包括但不限于一 個或多個通用處理器和/或一個或多個專用處理器(諸如,數字信號處理芯片、圖形加速處 理器,和/或類似物);一個或多個輸入設備1315,其可以包括但不限于照相機、鼠標、鍵盤 和/或類似物;以及一個或多個輸出設備1320,其可以包括但不限于顯示單元、打印機和/或 類似物。計算設備1300還可以包括用于監測系統的健康的(一個或多個)傳感器,諸如溫度 傳感器、功率傳感器等。
[0158] 計算機系統1300可以進一步包括一個或多個非暫時型存貯設備1325(和/或與其 進行通信),其可以包括但不限于本地和/或網絡可存取的存貯器,和/或可以包括但不限于 磁盤驅動器、驅動器陣列、光學存貯設備、諸如隨機存取存儲器("RAM")和/或只讀存儲器 ("ROM")之類的固態存貯設備,其能夠是可編程的、NVM可更新的等等。此類存貯設備可以被 配置為實施任何適當的數據存貯器,其包括但不限于各種文件系統、數據庫結構,和/或類 似物。
[0159] 計算機系統1300可能還包括通信子系統1330,其可以包括但不限于調制解調器、 網卡(無線的或有線的)、紅外通信設備、無線通信設備和/或芯片組(諸如,藍牙設備、 802.11設備、WiFi設備、WiMax設備、蜂窩通信設施,等等),和/或類似物。通信子系統1330可 以準許與網絡(舉一個例子,諸如如下所述的網絡)、其它計算機系統和/或本文所描述的任 何其它設備交換數據。在許多實施例中,計算機系統1300可以進一步包括非暫時型工作存 儲器1335,其能夠包括如上所述的RAM或者ROM設備。計算機系統1300可能還包括收發信機 1350以便于通信子系統1330與外部實體的通信。
[0160]計算機系統1300還可以包括當前被示出為位于工作存儲器1335內的軟件元件,其 包括操作系統1340、設備驅動器、可執行的庫,和/或諸如一個或多個應用程序1345之類的 其它代碼,其可以包括由各個實施例提供的計算機程序,和/或可以被設計為如本文所描述 的由其它實施例提供的實施方法和/或配置系統。僅僅舉例來說,參考以上討論的(一個或 多個)方法所描述的一個或多個過程可能被實施為可由計算機(和/或在計算機內的處理 器)執行的代碼和/或指令;在一方面,然后,此類代碼和/或指令能夠用于將通用計算機(或 者其它設備)配置和/或適配為執行根據所描述的方法的一個或多個操作。
[0161]可以將這些指令和/或代碼的集合存儲在諸如以上所描述的(一個或多個)存貯設 備1325之類的計算機可讀存貯介質上。在一些情況下,可以將存貯介質并入在諸如計算機 系統1300之類的計算機系統內。在其它實施例中,存貯介質可能與計算機系統(例如,諸如 光碟之類的可移動介質)分開,和/或被提供于安裝包中,使得存貯介質能夠用于利用存儲 在其上的指令/代碼對通用計算機進行編程、配置和/或適配。這些指令可以采取可由計算 機系統1300執行的可執行代碼的形式,和/或可以采取源代碼和/或可安裝代碼的形式,其 在(例如,使用任何各種通常可用的編譯器、安裝程序、壓縮/解壓縮工具,等等)在計算機系 統1300上進行編譯和/或安裝時然后采取可執行代碼的形式。
[0162] 可以根據特定需求進行實質的變化。例如,還可以使用定制硬件,和/或可以在硬 件、軟件(包括諸如小程序(applet)之類的可移植軟件等)或這兩者中實施特定元件。此外, 可以采用對諸如網絡輸入/輸出設備之類的其它計算設備的連接。
[0163] 某些實施例可以采用計算機系統(諸如計算機系統1300)來執行根據本公開的方 法。例如,響應于處理器1310運行包含在工作存儲器1335中的一個或多個指令(其可以被并 入到操作系統1340和/或諸如應用程序1345之類的其它代碼中)的一個或多個序列,可以由 計算機系統1300執行所描述的方法中的一些或所有過程。可以將這樣的指令從諸如一個或 多個存貯設備1325之類的另一個計算機可讀介質讀取到工作存儲器1335中。僅僅舉例來 說,包含在工作存儲器1335中的指令序列的運行可能使(一個或多個)處理器1310執行本文 所描述的方法的一個或多個過程。
[0164] 如本文所使用的術語"機器可讀介質"和"計算機可讀介質"指代參與提供使機器 以特定方式操作的數據的任何介質。在使用計算機系統1300實現的實施例中,在向(一個或 多個)處理器1310提供指令/代碼以用于運行時可能涉及各種計算機可讀介質,和/或各種 計算機可讀介質可能用于存儲和/或承載這樣的指令/代碼(例如,作為信號)。在許多實現 方式中,計算機可讀介質是物理和/或有形的存貯介質。這樣的介質可以采取許多形式,包 括但不限于非易失性介質、易失性介質和傳輸介質。非易失性介質例如包括光盤和/或磁 盤,諸如存貯設備1325。易失性介質包括但不限于諸如工作存儲器1335之類的動態存儲器。 傳輸介質包括但不限于同軸電纜、銅線和光纖,其包括包含有總線1305的導線以及通信子 系統1330的各個組件(和/或通信子系統1330借助于其提供與其它設備的通信的介質)。因 此,傳輸介質還可以采取波的形式(包括但不限于無線電、聲波和/或光波,諸如在無線電波 和紅外數據通信期間所生成的那些波)。
[0165] 某些實施例可以采用計算機系統(諸如處理器1310)來執行根據本公開的方法。例 如,響應于處理器運行包含在工作存儲器中的一個或多個指令(其可以被并入到操作系統 和/或諸如應用程序之類的其它代碼中)的一個或多個序列,可以通過觀看裝置來執行所描 述的方法中的一些或所有過程。可以將這樣的指令從諸如一個或多個存貯設備之類的另一 個計算機可讀介質讀取到工作存儲器中。僅僅舉例來說,包含在工作存儲器中的指令序列 的運行可能使(一個或多個)處理器執行本文所描述的方法的一個或多個過程。
[0166] 另外,采用本文所描述的計算機系統的實施例不限于物理地連接到觀看裝置。處 理可以出現在經由導線連接或者無線地連接到觀看裝置的另一個裝置中。例如,可以將電 話中的處理器或者用于由電話或平板計算機運行命令的指令包含在這些描述中。類似地, 遠程位置中的網絡可以安置處理器并且向觀看裝置發送數據。
[0167] 如本文所使用的術語"機器可讀介質"和"計算機可讀介質"指代參與提供使機器 以特定方式操作的數據的任何介質。在使用處理器1310實現的實施例中,在向(一個或多 個)處理器1310提供指令/代碼以用于運行時可能涉及各種計算機可讀介質,和/或各種計 算機可讀介質可能用于存儲和/或承載這樣的指令/代碼(例如,作為信號)。在許多實現方 式中,計算機可讀介質是物理的和/或有形的存貯介質。這樣的介質可以采取許多形式,包 括但不限于非易失性介質、易失性介質和傳輸介質。非易失性介質例如包括光盤和/或磁 盤。易失性介質包括但不限于諸如NVM存儲器或DDR3 RAM之類的動態存儲器。傳輸介質包括 但不限于同軸電纜、銅線和光纖,以及通信子系統的各個組件(和/或通信子系統借助于其 提供與其它設備的通信的介質)。因此,傳輸介質還可以采取波的形式(包括但不限于無線 電、聲波和/或光波,諸如在無線電波和紅外數據通信期間所生成的那些波)。
[0168] 在一個或多個示例中,可以以硬件、軟件、固件或其任何組合來實施所描述的功 能。如果以軟件來實施,功能可以作為一個或多個指令或代碼被存儲在計算機可讀介質上 或通過計算機可讀介質來傳輸。計算機可讀介質可以包括計算機數據存貯介質。數據存貯 介質可以是能夠由一個或多個計算機或者一個或多個處理器存取以取回用于實施在本公 開中描述的技術的指令、代碼和/或數據結構的任何可用的介質。如在本文所使用的"數據 存1C介質"指代制造品(manufacture)并且不指代瞬時傳播信號。舉例來說,但不限制,此類 計算機可讀存貯介質可以包括RAM、ROM、EEPROM、CD-ROM或其它光盤存貯器、磁盤存貯器或 其它磁存貯設備、NVM存儲器,或能夠用于以指令或數據結構的形式存儲期望的程序代碼并 且能夠由計算機存取的任何其它介質。如在本文所使用的磁盤包括光碟(CD)、激光磁盤、光 學盤、數字化通用磁盤(DVD )、軟盤和藍光光盤,其中磁盤通常磁性地再現數據,而光盤利用 激光來光學地再現數據。以上的組合應當也被包括在計算機可讀介質的范圍內。
[0169] 可以通過諸如一個或多個數字信號處理器(DSP)、通用微處理器、專用集成電路 (ASIC)、現場可編程邏輯陣列(FPGA)或其它等效集成或分立的邏輯電路之類的一個或多個 處理器來運行代碼。因此,如在本文所使用的術語"處理器"可以指代任何上述結構或適于 實施在本文描述的技術的任何其它結構。此外,在一些方面中,可以在被配置用于進行編碼 和解碼,或者被并入在組合編解碼器中的專用硬件和/或軟件模塊內提供在本文描述的功 能。而且,可以在一個或多個電路或邏輯元件中全部地實施本技術。
[0170] 可以以包括無線手機、集成電路(1C)或1C集合(例如,芯片組)的多種設備或裝置 實施本公開的技術。在本公開中描述了各種組件、模塊或單元來強調被配置為執行所公開 的技術的設備的功能方面,但不一定要求通過不同的硬件單元實現。相反,如上所述,可以 在編解碼器硬件單元中組合各種單元,或者通過包括與存儲在計算機可讀介質上的合適的 軟件和/或固件結合的如上所述的一個或多個處理器的互操作的硬件單元的集合來提供各 種單元。
[0171]已經描述了各種示例。這些和其它示例處于所附權利要求的范圍內。
【主權項】
1 · 一種存It設備,包括: 多個非易失性存儲器(NVM)刀片,其中來自多個nvm刀片中的每一個nvm刀片包括非易 失性存儲器(NVM); 耦合到多個NVM刀片的第一處理實體,其中第一處理實體被配置為: 接收第一輸入/輸出(I/O)請求; 確定I/O請求是讀取請求還是寫入請求; 響應于確定該I/O請求是讀取請求, 從多個NVM刀片中確定目標NVM刀片以及將要從其處讀取數據的目標NVM刀片中的位 置; 從目標NVM刀片請求和接收與第一I/O請求相關聯的數據;以及 響應于確定該I/O請求是寫入請求; 從多個NVM刀片中確定目標NVM刀片以及將要在其處存儲數據的目標NVM刀片中的位 置; 向目標NVM刀片傳送數據以便將數據存儲在目標NVM刀片中;以及 耦合到多個NVM刀片的第二處理實體,其中第二處理實體被配置為: 接收第二輸入/輸出(I/O)請求; 確定I/O請求是讀取請求還是寫入請求; 響應于確定該I/O請求是讀取請求, 從多個NVM刀片中確定目標NVM刀片以及將要從其處讀取數據的目標NVM刀片中的位 置; 從目標NVM刀片請求和接收與第二I/O請求相關聯的數據;以及 響應于確定該I/O請求是寫入請求; 從多個NVM刀片中確定目標NVM刀片以及將要在其處存儲數據的目標NVM刀片中的位 置; 向目標NVM刀片傳送數據以便將數據存儲在目標NVM刀片中。2. 根據權利要求1所述的存貯設備,其中,使用一個或多個路由實體將多個NVM刀片耦 合到第一處理實體和第二處理實體。3. 根據權利要求1所述的存貯設備,其中,第一處理實體存取與用于服務于第二I/O請 求的第二處理實體相同的目標NVM刀片以服務于第一 I/O請求。4. 根據權利要求1所述的存貯設備,其中,第一處理實體存取與用于服務于第二I/O請 求的第二處理實體相同的目標NVM刀片上的相同的位置以服務于第一 I/O請求。5. 根據權利要求1所述的存貯設備,其中,控制器板包括第一處理實體、第二處理實體 以及用于在處理實體和多個NVM刀片之間對數據進行路由的路由實體。6. 根據權利要求5所述的存貯設備,其中,第一處理實體和第二處理實體經由相同的路 由實體存取目標NVM刀片。7. 根據權利要求1所述的存貯設備,其中,第一控制器板包括第一處理實體并且使用第 一路由實體將第一控制器板耦合到多個NVM刀片,并且第二控制器板包括第二處理實體并 且使用第二路由實體將第二控制器板耦合到多個NVM刀片。8. 根據權利要求1所述的存貯設備,其中,使用高速外圍組件互聯(PCIe)協議來執行第 一處理實體與目標NVM刀片之間的數據的傳送以及第二處理實體與目標NVM刀片之間的數 據的傳送。9. 根據權利要求1所述的存貯設備,其中,由第一處理實體接收的第一I/O請求首先在 一個或多個接口實體處被接收并且通過多個路由實體之一被轉發到第一處理實體。10. 根據權利要求1所述的存貯設備,其中,NVM存貯介質是NAND閃存。11. 一種用于存儲數據的方法,包括: 在第一處理實體處接收第一輸入/輸出(I/O)請求,其中第一處理實體耦合到多個非易 失性存儲器(NVM)刀片,并且其中來自多個NVM刀片中的每一個NVM刀片包括非易失性存儲 器(畫); 在第一處理實體處確定I/O請求是讀取請求還是寫入請求; 響應于確定該I/O請求是讀取請求, 由第一處理實體從多個NVM刀片中確定目標NVM刀片以及將要從其處讀取數據的目標 NVM刀片中的位置,以及 由第一處理實體從目標NVM刀片請求和接收與第一I/O請求相關聯的數據;以及 響應于確定該I/O請求是寫入請求; 響應于確定該I/O請求是寫入請求, 由第一處理實體從多個NVM刀片中確定目標NVM刀片以及將要在其處存儲數據的目標 NVM刀片中的位置,以及 從第一處理實體向目標NVM刀片傳送數據以便將數據存儲在目標NVM刀片中;以及 在第二處理實體處接收第二輸入/輸出(I/O)請求, 其中第二處理實體耦合到多個NVM刀片; 在第二處理實體處確定I/O請求是讀取請求還是寫入請求; 響應于確定該I/O請求是讀取請求, 在第二處理實體處從多個NVM刀片中確定目標NVM刀片以及將要從其處讀取數據的目 標NVM刀片中的位置; 在第二處理實體處從目標NVM刀片請求和接收與第二I/O請求相關聯的數據;以及 響應于確定該I/O請求是寫入請求; 在第二處理實體處從多個NVM刀片中確定目標NVM刀片以及將要在其處存儲數據的目 標NVM刀片中的位置;以及 從第二處理實體向目標NVM刀片傳送數據以便將數據存儲在目標NVM刀片中。12. 根據權利要求11所述的方法,其中,使用一個或多個路由實體將多個NVM刀片耦合 到第一處理實體和第二處理實體。13. 根據權利要求11所述的方法,其中,第一處理實體存取與用于服務于第二I/O請求 的第二處理實體相同的目標NVM刀片以服務于第一 I/O請求。14. 根據權利要求11所述的方法,其中,第一處理實體存取與用于服務于第二I/O請求 的第二處理實體相同的目標NVM刀片上的相同的位置以服務于第一 I/O請求。15. 根據權利要求11所述的方法,其中,控制器板包括第一處理實體、第二處理實體以 及用于在處理實體和多個NVM刀片之間對數據進行路由的路由實體。16. 根據權利要求15所述的方法,其中,第一處理實體和第二處理實體經由相同的路由 實體存取目標NVM刀片。17. 根據權利要求11所述的方法,其中,第一控制器板包括第一處理實體并且使用第一 路由實體將第一控制器板耦合到多個NVM刀片,并且第二控制器板包括第二處理實體并且 使用第二路由實體將第二控制器板耦合到多個NVM刀片。18. 根據權利要求11所述的方法,其中,使用高速外圍組件互聯(PCIe)協議來執行第一 處理實體與目標NVM刀片之間的數據的傳送以及第二處理實體與目標NVM刀片之間的數據 的傳送。19. 根據權利要求11所述的方法,其中,由第一處理實體接收的第一I/O請求首先在一 個或多個接口實體處被接收并且通過多個路由實體之一被轉發到第一處理實體。20. 根據權利要求11所述的方法,其中,NVM存貯介質是NAND閃存。21. -種存設備,包括: 被配置為操作在主動模式下的第一控制器,該第一控制器被配置為接收用于存儲數據 以及從非易失性存儲器(NVM)存貯介質取回數據的輸入/輸出(I/O)請求; 被配置為操作在主動模式下的第二控制器,該第二控制器也被配置為接收用于存儲數 據以及從NVM存貯介質取回數據的I/O請求;以及 包括NVM存貯介質的多個非易失性存儲器(NVM)刀片,其中多個NVM刀片中的至少一個 耦合到用于存儲數據以及從NVM存貯介質取回數據的第一控制器和第二控制器。22. 根據權利要求21所述的存貯設備,其中,多個NVM刀片中的至少一個包括與第一控 制器進行通信的第一路由接口以及與第二控制器進行通信的第二路由接口。23. 根據權利要求22所述的存貯設備,其中,第一路由接口使用PCIe協議與第一控制器 進行通信,并且第二路由接口使用PCIe協議與第二控制器進行通信。24. 根據權利要求24所述的存貯設備,其中,第一控制器被配置為: 接收第一 I/O請求; 確定第一 I/O請求是將與第一 I/O請求相關聯的第一數據存儲到NVM存貯介質的請求; 以及 向多個NVM刀片中的至少一個傳送命令和第一數據,以便將第一數據存儲在第一位置。25. 根據權利要求24所述的存貯設備, 其中,第二控制器被配置為: 接收第二I/O請求; 確定第二I/O請求是將與第二I/O請求相關聯的第二數據存儲到NVM存貯介質的請求; 以及 向第一控制器傳送與第二I/O請求相關聯的命令信息; 其中,第一控制器被配置為: 從第二控制器接收所傳送的命令信息;以及 向多個NVM刀片中的至少一個傳送存儲命令;并且 其中,第二控制器被進一步配置為:向一個或多個NVM刀片傳送與第二I/O請求相關聯 的第二數據。26. 根據權利要求21所述的存貯設備,其中,第一控制器和第二控制器被配置為對于讀 取操作同時地解碼I/O請求并且從NVM存貯介質請求數據。27. 根據權利要求21所述的存貯設備,其中,第一控制器、第二控制器和多個NVM刀片耦 合到電力軌,其中該電力軌由多個電源進行供電。28. 根據權利要求21所述的存貯設備,其中,多個NVM刀片中的至少一個包括用于緩沖 來自第一控制器的命令的、耦合到第一路由接口的第一緩沖器。29. 根據權利要求28所述的存貯設備,其中,多個NVM刀片中的至少一個被進一步配置 為:當第一緩沖器滿得超過預先確定的閾值時,丟棄來自第一控制器的命令。30. 根據權利要求21所述的存貯設備,其中,多個NVM刀片中的至少一個包括用于對于 來自第一控制器和第二控制器的命令仲裁對NVM接口的存取的命令管理器。31. 根據權利要求30所述的存貯設備,其中,命令管理器在檢測到關于命令的錯誤時, 將與I/O請求相關聯的錯誤信息傳送回到該命令所起源的控制器。32. 根據權利要求31所述的存貯設備,其中,第一控制器和第二控制器彼此傳遞容錯信 息。33. 根據權利要求32所述的存貯設備,其中,第一控制器和第二控制器使用非PCIe橋來 彼此傳遞容錯信息。34. 根據權利要求32所述的存貯設備,其中,容錯信息包括關于從第一控制器到多個 NVM刀片之一的第一 I/O請求的故障的信息。35. 根據權利要求31所述的存貯設備,其中,第一控制器和第二控制器是包括用于處理 I/O請求的一個或多個處理器以及用于控制器與多個NVM刀片之間的路由操作的一個或多 個路由器的印刷電路板(PCB)。36. 根據權利要求31所述的存貯設備,其中,第一控制器和第二控制器是各自包括處理 邏輯和路由邏輯的專用集成電路(ASIC)。37. -種用于在存貯設備上存儲數據的方法,該方法包括: 在從控制器處接收第一 I/O請求; 確定第一 I/O請求是將與第一 I/O請求相關聯的第一數據存儲到非易失性存儲器(NVM) 存貯介質的請求; 向主控制器傳送與第一 I/O請求相關聯的命令信息; 在主控制器處接收來自所述從控制器的所傳送的命令信息;以及 向包括NVM存貯介質的多個非易失性存儲器(NVM)刀片中的至少一個傳送來自主控制 器的使用對于第一 I/O請求的所傳送的命令信息的存儲命令以及來自從控制器的第一數 據,以便將第一數據存儲在第一位置。38. 根據權利要求37所述的方法,還包括: 在主控制器處接收第二I/O請求; 確定第二I/O請求是將與第二I/O請求相關聯的第二數據存儲到NVM存貯介質的請求; 向包括NVM存貯介質的多個NVM刀片中的至少一個傳送命令和第二數據,以便將第二數 據存儲在第二位置。39. 根據權利要求37所述的方法,其中,主控制器和從控制器使用PCIe協議來與多個 NVM刀片進行通信。40. 根據權利要求37所述的方法,其中,該方法還包括: 在主控制器處接收第二I/O請求; 確定第二I/O請求是從來自NVM存貯介質的第二位置讀取第二數據的請求; 從NVM存貯介質取回與第二I/O請求相關聯的第二數據; 在從控制器處接收第三I/O請求; 確定第三I/O請求是從來自NVM存貯介質的第三位置讀取第三數據的請求;以及 從NVM存貯介質取回與第三I/O請求相關聯的第三數據。
【文檔編號】G06F12/02GK105980990SQ201480072699
【公開日】2016年9月28日
【申請日】2014年11月12日
【發明人】R.達尼拉克, W.拉德克
【申請人】斯凱拉有限責任公司