(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024103196
(43)【公開日】2024-08-01
(54)【発明の名称】情報処理システム
(51)【国際特許分類】
G06F 3/06 20060101AFI20240725BHJP
【FI】
G06F3/06 305C
G06F3/06 540
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023007397
(22)【出願日】2023-01-20
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】中塚 裕康
(72)【発明者】
【氏名】永井 宏一
(57)【要約】
【課題】 ホストにかかる負荷を軽減しながら、全体の性能を向上できる情報処理システムを実現する。
【解決手段】 実施形態によれば、情報処理システムは、ホストと、各々がコントローラと不揮発性メモリとを含む複数のメモリシステムと、を備える。第1メモリシステムは第1データを第1不揮発性メモリに格納する。第2メモリシステムは第2データを第2不揮発性メモリに格納する。ホストは、第1データから更新された第1更新データを第1メモリシステムに送信し、第2データから更新された第2更新データを第2メモリシステムに送信する。第1メモリシステムは、少なくとも第1データと第1更新データのXOR演算を行うことにより、第1XORデータを生成し、第2メモリシステムに送信する。第2メモリシステムは、第2データと第2更新データと第1XORデータとのXOR演算を行うことにより、第2XORデータを生成し、第3メモリシステムに送信する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
ホストと、各々がコントローラと不揮発性メモリとを含む複数のメモリシステムと、を備える情報処理システムであって、
前記複数のメモリシステムの内の第1メモリシステムの前記コントローラは、第1データを第1不揮発性メモリに格納し、
前記複数のメモリシステムの内の第2メモリシステムの前記コントローラは、第2データを第2不揮発性メモリに格納し、
前記第1データと前記第2データとは、1つの誤り訂正符号フレームの一部を構成し、
前記ホストは、前記第1データと前記第2データとが更新される場合、
前記第1データから更新された第1更新データを前記第1メモリシステムに送信し、
前記第2データから更新された第2更新データを前記第2メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、
少なくとも前記第1データと前記第1更新データの排他的論理和演算を行うことにより、第1排他的論理和データを生成し、
前記第1排他的論理和データを前記第2メモリシステムに送信し、
前記第2メモリシステムの前記コントローラは、
前記第2データと前記第2更新データと前記第1排他的論理和データとの排他的論理和演算を行うことにより、第2排他的論理和データを生成し、
前記第2排他的論理和データを前記複数のメモリシステムの内の第3メモリシステムに送信する、
情報処理システム。
【請求項2】
前記第3メモリシステムの前記コントローラは、パリティを第3不揮発性メモリに格納し、
前記第1データと前記第2データと前記パリティとは、前記誤り訂正符号フレームの少なくとも一部を構成する、
請求項1に記載の情報処理システム。
【請求項3】
前記ホストは、
前記第1データと前記第2データとが更新される場合、第1要求と前記第1更新データとを前記第1メモリシステムに送信し、
前記第1メモリシステムから前記第1要求に対する第1応答を受信したことに応じ、第2要求と前記第2更新データとを前記第2メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、前記第1要求を受信したことに応じ、
前記第1排他的論理和データを生成し、
前記第1応答を前記ホストに送信し、
前記第1排他的論理和データを前記第2メモリシステムに送信し、
前記第2メモリシステムの前記コントローラは、前記第2要求を受信したことに応じ、
前記第2排他的論理和データを生成し、
前記第2要求に対する第2応答を前記ホストに送信し、
前記第2排他的論理和データを前記第3メモリシステムに送信する、
請求項1に記載の情報処理システム。
【請求項4】
前記第3メモリシステムの前記コントローラは、パリティを第3不揮発性メモリに格納し、
前記第1データと前記第2データと前記パリティとは、前記誤り訂正符号フレームの少なくとも一部を構成し、
前記ホストは、前記第2応答を受信したことに応じ、第3要求を前記第3メモリシステムに送信し、
前記第3メモリシステムの前記コントローラは、前記第3要求を受信したことに応じ、前記パリティと前記第2排他的論理和データとの排他的論理和演算を行うことにより、更新パリティを生成し、
前記第1更新データと、前記第2更新データと、前記更新パリティとは、更新された前記誤り訂正符号フレームの少なくとも一部を構成する、
請求項3に記載の情報処理システム。
【請求項5】
前記ホストは、
前記第1データと前記第2データとが更新される場合、第1要求と前記第1更新データとを前記第1メモリシステムに送信し、第2要求と前記第2更新データとを前記第2メモリシステムに送信し、
前記第1メモリシステムから前記第1要求に対する第1応答を受信し、且つ、前記第2メモリシステムから前記第2要求に対する第2応答を受信したことに応じ、第3要求を前記第2メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、前記第1要求を受信したことに応じ、
前記第1排他的論理和データを生成し、
前記第1応答を前記ホストに送信し、
前記第2メモリシステムの前記コントローラは、前記第2要求を受信したことに応じ、
前記第2データと前記第2更新データの排他的論理和演算を行うことにより、第3排他的論理和データを生成し、
前記第2応答を前記ホストに送信し、
前記第2メモリシステムの前記コントローラは、前記第3要求を受信したことに応じ、
前記第1メモリシステムから前記第1排他的論理和データを受信し、
前記第1排他的論理和データと前記第3排他的論理和データの排他的論理和演算を行うことにより、前記第2排他的論理和データを生成し、
前記第3要求に対する第3応答を前記ホストに送信し、
前記第2排他的論理和データを前記第3メモリシステムに送信する、
請求項1に記載の情報処理システム。
【請求項6】
前記第3メモリシステムの前記コントローラは、パリティを第3不揮発性メモリに格納し、
前記第1データと前記第2データと前記パリティとは、前記誤り訂正符号フレームの少なくとも一部を構成し、
前記ホストは、前記第3応答を受信したことに応じ、第4要求を前記第3メモリシステムに送信し、
前記第3メモリシステムの前記コントローラは、前記第4要求を受信したことに応じ、前記パリティと前記第2排他的論理和データとの排他的論理和演算を行うことにより、更新パリティを生成し、
前記第1更新データと、前記第2更新データと、前記更新パリティとは、更新された前記誤り訂正符号フレームの少なくとも一部を構成する、
請求項5に記載の情報処理システム。
【請求項7】
ホストと、各々がコントローラと不揮発性メモリとを含む複数のメモリシステムと、を備える情報処理システムであって、
前記複数のメモリシステムの内の第1メモリシステムの前記コントローラは、第1データを第1不揮発性メモリに格納し、
前記複数のメモリシステムの内の第2メモリシステムの前記コントローラは、第2データを第2不揮発性メモリに格納し、
前記複数のメモリシステムの内の第3メモリシステムの前記コントローラは、パリティを第3不揮発性メモリに格納し、
前記第1データと前記第2データと前記パリティとは、1つの誤り訂正符号フレームの少なくとも一部を構成し、
前記第2メモリシステムが故障した場合、
前記第1メモリシステムの前記コントローラは、
第3データと前記第1データとの排他的論理和演算を行うことにより、第1排他的論理和データを生成し、
前記第1排他的論理和データを前記第3メモリシステムに送信し、
前記第3メモリシステムの前記コントローラは、
前記第1排他的論理和データと前記パリティとの排他的論理和演算を行うことにより、前記第2データを生成し、
前記生成された第2データを、前記故障した第2メモリシステムから交換されるメモリシステムに送信する、
情報処理システム。
【請求項8】
前記ホストは、
前記第2メモリシステムが故障した場合、第1要求を前記第1メモリシステムに送信し、
前記第1メモリシステムから前記第1要求に対する第1応答を受信したことに応じ、第2要求を前記第3メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、前記第1要求を受信したことに応じ、
前記第3データと前記第1データとの排他的論理和演算を行うことにより、前記第1排他的論理和データを生成し、
前記第1応答を前記ホストに送信し、
前記第1排他的論理和データを前記第3メモリシステムに送信し、
前記第3メモリシステムの前記コントローラは、前記第2要求を受信したことに応じ、
前記第1排他的論理和データと前記パリティとの排他的論理和演算を行うことにより、前記第2データを生成し、
前記生成された第2データを、前記故障した第2メモリシステムから交換される前記メモリシステムに送信する、
請求項7に記載の情報処理システム。
【請求項9】
前記ホストは、前記第2メモリシステムが故障した場合、第1要求を前記第1メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、前記第1要求を受信したことに応じ、
前記第3データと前記第1データとの排他的論理和演算を行うことにより、前記第1排他的論理和データを生成し、
第2要求と前記第1排他的論理和データとを前記第3メモリシステムに送信し、
前記第3メモリシステムの前記コントローラは、前記第2要求を受信したことに応じ、
前記第1排他的論理和データと前記パリティとの排他的論理和演算を行うことにより、前記第2データを生成し、
前記生成された第2データを、前記故障した第2メモリシステムから交換される前記メモリシステムに送信する、
請求項7に記載の情報処理システム。
【請求項10】
前記複数のメモリシステムの内の第4メモリシステムの前記コントローラは、
前記第3データを第4不揮発性メモリに格納し、
前記第2メモリシステムが故障した場合、前記第3データを前記第1メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、前記第4メモリシステムから受信した前記第3データと前記第1データとの排他的論理和演算を行うことにより、前記第1排他的論理和データを生成し、
前記第1データ、前記第2データ、前記第3データ、および前記パリティは、前記誤り訂正符号フレームを構成する、
請求項7乃至請求項9のいずれか一項に記載の情報処理システム。
【請求項11】
前記複数のメモリシステムの内の第4メモリシステムの前記コントローラは、
第4データを第4不揮発性メモリに格納し、
前記第2メモリシステムが故障した場合、
前記複数のメモリシステムの内の第5メモリシステムから第5データを受信し、
前記第5データと前記第4データとの排他的論理和演算を行うことにより、前記第3データを生成し、
前記第3データを前記第1メモリシステムに送信し、
前記第1メモリシステムの前記コントローラは、前記第4メモリシステムから受信した前記第3データと前記第1データとの排他的論理和演算を行うことにより、前記第1排他的論理和データを生成し、
前記第1データ、前記第2データ、前記第4データ、および前記パリティは、前記誤り訂正符号フレームの一部を構成する、
請求項7乃至請求項9のいずれか一項に記載の情報処理システム。
【請求項12】
前記第3データは、全てのビットが0であるデータであり、
前記第1データ、前記第2データ、および前記パリティは、前記誤り訂正符号フレームを構成する、
請求項7乃至請求項9のいずれか一項に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを備えるメモリシステムを含む情報処理システムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムおよびホストと複数のメモリシステムとを備える情報処理システムが広く普及している。このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【0003】
情報処理システムの耐障害性を向上するために、Redundant Arrays of Independent(Inexpensive) Disks(RAID)が利用されることがある。RAIDは、データの保存に複数のメモリシステムを用いて、保存されたデータの冗長性とアクセス性能とを向上させる技術である。例えば、RAID-5では、書き込まれるべきデータと、このデータに対するパリティ(誤り訂正符号:ECC)とが、複数のメモリシステムに分散して格納される。これにより、例えば、データの一部が格納されていたメモリシステムが故障しても、他のメモリシステムに格納されている他のデータおよびパリティを用いて、故障したメモリシステムに格納されていたデータを復元できる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第11442661号明細書
【特許文献2】米国特許出願公開第2021/0117123号明細書
【特許文献3】米国特許第10761738号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
RAIDを構成する複数のメモリシステムにおいて格納されているデータを更新する場合、あるいは故障したメモリシステムに格納されていたデータを復元してRAIDを再構築(リビルド)する場合、複数のメモリシステムに接続されているホストにかかる負荷が大きくなることがある。また、このような場合に、特定のメモリシステムへのデータの転送が集中して発生することがある。特定のメモリシステムへのバスの帯域が不足することにより、情報処理システム全体の性能が低下する可能性がある。
【0006】
実施形態の一つは、ホストにかかる負荷を軽減しながら、全体の性能を向上できる情報処理システムを提供する。
【課題を解決するための手段】
【0007】
実施形態によれば、情報処理システムは、ホストと、各々がコントローラと不揮発性メモリとを含む複数のメモリシステムと、を備える。複数のメモリシステムの内の第1メモリシステムのコントローラは、第1データを第1不揮発性メモリに格納する。複数のメモリシステムの内の第2メモリシステムのコントローラは、第2データを第2不揮発性メモリに格納する。第1データと第2データとは、1つの誤り訂正符号フレームの一部を構成する。ホストは、第1データと第2データとが更新される場合、第1データから更新された第1更新データを第1メモリシステムに送信し、第2データから更新された第2更新データを第2メモリシステムに送信する。第1メモリシステムのコントローラは、少なくとも第1データと第1更新データの排他的論理和演算を行うことにより、第1排他的論理和データを生成し、第1排他的論理和データを第2メモリシステムに送信する。第2メモリシステムのコントローラは、第2データと第2更新データと第1排他的論理和データとの排他的論理和演算を行うことにより、第2排他的論理和データを生成し、第2排他的論理和データを複数のメモリシステムの内の第3メモリシステムに送信する。
【図面の簡単な説明】
【0008】
【
図1】第1実施形態に係る情報処理システムの構成例を示すブロック図。
【
図2】第1実施形態に係る情報処理システムに含まれるメモリシステムの構成例を示すブロック図。
【
図3】第1実施形態に係る情報処理システムにおけるシーケンシャルライト動作の例を示す図。
【
図4】比較例に係る情報処理システムにおける第1の更新動作を示す図。
【
図5】比較例に係る情報処理システムにおける第2の更新動作を示す図。
【
図6】比較例に係る情報処理システムにおける第3の更新動作を示す図。
【
図7】第1実施形態に係る情報処理システムにおける第4の更新動作の例を示す図。
【
図8】第1実施形態に係る情報処理システムにおける第4の更新動作の具体的な例を示すシーケンス図。
【
図9】第1実施形態に係る情報処理システム内の第1メモリシステムにおける動作の具体的な例を示す図。
【
図10】第1実施形態に係る情報処理システムにおける第5の更新動作の例を示す図。
【
図11】第1実施形態に係る情報処理システムにおける第5の更新動作の具体的な例を示すシーケンス図。
【
図12】第2実施形態に係る情報処理システムにおける第1のリビルド動作の例を示す図。
【
図13】第2実施形態に係る情報処理システムにおける第1のリビルド動作の具体的な例を示すシーケンス図。
【
図14】第2実施形態に係る情報処理システムにおける第2のリビルド動作の例を示す図。
【
図15】第2実施形態に係る情報処理システムにおける第2のリビルド動作の具体的な例を示すシーケンス図。
【
図16】第2実施形態に係る情報処理システム内の第1メモリシステムにおける動作の具体的な例を示す図。
【発明を実施するための形態】
【0009】
以下、実施の形態について図面を参照して説明する。
【0010】
(第1実施形態)
まず
図1を参照して、第1実施形態に係る情報処理システム1の構成を説明する。情報処理システム1は、ホストデバイス2、複数のメモリシステム3、およびスイッチ4を含む。
【0011】
ホストデバイス2は、大量且つ多様なデータを複数のメモリシステム3に保存するストレージサーバであってもよいし、サーバまたはパーソナルコンピュータであってもよい。以下では、ホストデバイス2を、ホスト2とも称する。
【0012】
複数のメモリシステム3は、Redundant Arrays of Independent Disks(RAID)を構成するメモリシステムである。以下では、複数のメモリシステム3がRAID-5を構成する場合を例示する。また、
図1では、複数のメモリシステム3が4台のメモリシステム3-1、3-2、3-3、および3-4である場合を示すが、複数のメモリシステム3は、例えば、3台以上の任意の数のメモリシステムである。以下では、複数のメモリシステム3の内の特定しない1つのメモリシステム3を指して、メモリシステム3とも称する。
【0013】
メモリシステム3は、NAND型フラッシュメモリのような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステム3はストレージデバイスとも称される。メモリシステム3は、例えばソリッドステートドライブ(SSD)として実現される。
【0014】
メモリシステム3は、ホスト2のストレージとして使用され得る。メモリシステム3は、ホスト2に内蔵されてもよいし、ホスト2にケーブルまたはネットワークを介して接続されてもよい。
【0015】
スイッチ4は、ホスト2および複数のメモリシステム3を相互に接続するデバイスである。スイッチ4は、ホスト2および複数のメモリシステム3の相互の通信を制御する制御回路を備える。
【0016】
スイッチ4を介してホスト2と複数のメモリシステム3とを接続するためのインタフェースは、PCI ExpressTM(PCIeTM)、NVM ExpressTM(NVMeTM)等の規格に準拠する。以下では、スイッチ4を、PCIeスイッチ4とも称する。
【0017】
ホスト2とメモリシステム3のそれぞれの構成例について以下に説明する。
【0018】
(ホスト2の構成例)
ホスト2は、例えば、セントラルプロセッシングユニット(CPU)21と、ランダムアクセスメモリ(RAM)22とを備える。
【0019】
CPU21は、例えば、少なくとも1つのプロセッサである。CPU21は、ホスト2内の様々なコンポーネントの動作を制御する。また、CPU21は、ホスト2とメモリシステム3との通信を制御する。CPU21は、メモリシステム3に様々なコマンドを送信する。メモリシステム3に送信されるコマンドは、例えば、リードコマンド、ライトコマンド、XORコマンド、およびXOR/ライトコマンドを含む。XORコマンドは、2つ以上のデータの排他的論理和(XOR)演算を要求するコマンドである。XOR/ライトコマンドは、2つ以上のデータのXOR演算と、データの書き込みとを要求するコマンドである。なお、ホスト2には、ホスト2とメモリシステム3との通信を制御する制御回路(インタフェース)が設けられてもよい。CPU21は、この制御回路を介して、メモリシステム3との通信を行う。
【0020】
RAM22は揮発性メモリである。RAM22は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、またはスタティックランダムアクセスメモリ(SRAM)として実現される。RAM22の記憶領域は、例えば、データが一時的に格納されるバッファ領域として割り当てられる。バッファ領域には、例えば、メモリシステム3に書き込まれるべきデータ、およびメモリシステム3から読み出されたデータが格納される。
【0021】
(メモリシステム3の構成例)
図2は、メモリシステム3の構成例を示すブロック図である。
【0022】
メモリシステム3は、例えば、不揮発性メモリ5、DRAM6、およびコントローラ7を備える。
【0023】
不揮発性メモリ5は、例えば、NAND型フラッシュメモリである。以下では、不揮発性メモリ5を、NAND型フラッシュメモリ5と称する。
【0024】
NAND型フラッシュメモリ5は複数のブロックB0、B1、B2、……、Bm-1を含む。複数のブロックB0、B1、B2、……、Bm-1のそれぞれは、複数のページP0、……、Pn-1を含む。ブロックは、データ消去動作の最小単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。複数のページP0、……、Pn-1のそれぞれは、単一のワード線に接続された複数のメモリセルを含む。ページは、データ書き込み動作およびデータ読み出し動作の単位として機能する。なお、ワード線がデータ書き込み動作およびデータ読み出し動作の単位として機能してもよい。
【0025】
各ブロックに対するプログラム/イレーズサイクル数(P/Eサイクル数)には上限があり、最大P/Eサイクル数と称される。あるブロックの1回のP/Eサイクルは、このブロック内のすべてのメモリセルを消去状態にするためのデータ消去動作と、このブロックのページそれぞれにデータを書き込むデータ書き込み動作(プログラム動作)とを含む。
【0026】
DRAM6は揮発性のメモリである。DRAM6等のRAMには、例えば、ファームウェア(FW)の格納領域、論理物理アドレス変換テーブル31のキャッシュ領域、およびデータを一時的に記憶するバッファ領域が設けられる。
【0027】
FWは、コントローラ7の動作を制御するためのプログラムである。FWは、例えば、NAND型フラッシュメモリ5からDRAM6にロードされる。
【0028】
論理物理アドレス変換テーブル31は、論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。論理アドレスは、メモリシステム3をアドレス指定するためにホスト2によって使用されるアドレスである。論理アドレスは、例えば、論理ブロックアドレス(LBA)である。
【0029】
コントローラ7は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
【0030】
コントローラ7は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、および(2)ページ単位のデータ読み出し動作/データ書き込み動作とブロック単位のデータ消去動作との差異を隠蔽するための処理が含まれる。ブロック管理には、不良ブロックの管理、ウェアレベリング、およびガベージコレクションが含まれる。
【0031】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブル31を用いて実行される。コントローラ7は、論理物理アドレス変換テーブル31を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを特定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータが書き込まれたNAND型フラッシュメモリ5内の物理記憶位置を示す。コントローラ7は、論理物理アドレス変換テーブル31を用いて、NAND型フラッシュメモリ5の記憶領域を、論理的に分割された複数の記憶領域として管理する。これら複数の記憶領域は、複数の論理アドレスにそれぞれ対応する。つまり、これら複数の記憶領域のそれぞれは、1つの論理アドレスで特定される。論理物理アドレス変換テーブル31は、メモリシステム3の起動時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
【0032】
1つのページへのデータ書き込みは、1回のP/Eサイクル当たり1回のみ可能である。このため、コントローラ7は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ7は、この論理アドレスをこの別の物理記憶位置に関連付けるように論理物理アドレス変換テーブル31を更新することにより、以前のデータを無効化する。論理物理アドレス変換テーブル31から参照されているデータ(すなわち論理アドレスと紐付けられているデータ)は有効データと称される。また、どの論理アドレスとも紐付けられていないデータは無効データと称される。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。
【0033】
コントローラ7は、例えば、ホストインタフェース(ホストI/F)11、NANDインタフェース(NAND I/F)12、DRAMインタフェース(DRAM I/F)13、およびCPU14を含む。これらホストI/F11、NAND I/F12、DRAM I/F13、およびCPU14は、例えば、バス10を介して接続される。
【0034】
ホストI/F11は、PCIeスイッチ4を介してホスト2から様々なコマンドおよびデータを受信する回路として機能する。また、ホストI/F11は、コマンドに対する応答およびデータを、PCIeスイッチ4を介してホスト2に送信する回路として機能する。さらに、ホストI/F11は、PCIeスイッチ4を介して別のメモリシステム3から様々なコマンド、データ、およびコマンドに対する応答を受信する回路として機能してもよい。また、ホストI/F11は、コマンド、データ、およびコマンドに対する応答を、PCIeスイッチ4を介して別のメモリシステム3に送信する回路として機能してもよい。
【0035】
NAND I/F12は、コントローラ7とNAND型フラッシュメモリ5とを電気的に接続する。NAND I/F12は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応する。
【0036】
NAND I/F12は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NAND I/F12は、複数のチャネルを介して、NAND型フラッシュメモリ5内の複数のメモリチップにそれぞれ接続されていてもよい。複数のメモリチップが並列に駆動されることにより、NAND型フラッシュメモリ5に対するアクセスを広帯域化することができる。
【0037】
DRAM I/F13は、DRAM6へのアクセスを制御するように構成されたDRAM制御回路として機能する。
【0038】
CPU14は、ホストI/F11、NAND I/F12、およびDRAM I/F13を制御するように構成されたプロセッサである。CPU14はNAND型フラッシュメモリ5からDRAM6にロードされたFWを実行することによって、様々な処理を行う。FWは、CPU14に様々な処理を実行させるための命令群を含む制御プログラムである。CPU14は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU14の動作は、CPU14によって実行されるFWによって制御される。
【0039】
コントローラ7内の各部の機能は、コントローラ7内の専用ハードウェアによって実現されてもよいし、CPU14がFWを実行することによって実現されてもよい。
【0040】
CPU14は、例えば、コマンド受付部141、リード処理部142、XOR処理部143、およびライト処理部144として機能する。CPU14は、例えばFWを実行することにより、これら各部として機能する。
【0041】
コマンド受付部141は、ホスト2または別のメモリシステム3から送信されたコマンドを受け付ける。コマンド受付部141は、受け付けたコマンドに基づいて、リード処理部142、XOR処理部143、およびライト処理部144を制御する。具体的には、コマンド受付部141は、リード処理部142にNAND型フラッシュメモリ5からのデータの読み出しを指示する。コマンド受付部141は、XOR処理部143に2つ以上のデータのXOR演算を指示する。コマンド受付部141は、ライト処理部144にNAND型フラッシュメモリ5へのデータの書き込みを指示する。コマンド受付部141は、コマンドに対する応答を、コマンドを送信したホスト2またはメモリシステム3に送信する。また、コマンド受付部141は、コマンドおよびデータを別のメモリシステム3に送信してもよい。
【0042】
リード処理部142は、コマンド受付部141による指示に応じて、NAND型フラッシュメモリ5からデータを読み出す。
【0043】
XOR処理部143は、コマンド受付部141による指示に応じて、2つ以上のデータのXOR演算を行う。
【0044】
ライト処理部144は、コマンド受付部141による指示に応じて、NAND型フラッシュメモリ5にデータを書き込む。
【0045】
コマンド受付部141、リード処理部142、XOR処理部143、およびライト処理部144による具体的な動作の例については、
図9を参照して後述する。
【0046】
ここで、情報処理システム1におけるシーケンシャルライト動作について説明する。
【0047】
図3は、情報処理システム1におけるシーケンシャルライト動作の例を示す。シーケンシャルライト動作は、ホスト2が4台のメモリシステム3-1、3-2、3-3、および3-4全てに連続してデータを書き込む動作である。
【0048】
ホスト2のDRAM22は、メモリシステム3に書き込まれるべきユーザデータ51Dを記憶している。
【0049】
ホスト2のCPU21は、メモリシステム3に書き込まれるべきユーザデータ51Dの量が、特定の単位に達した場合、書き込まれるべきユーザデータ51Dに対する誤り訂正符号(error correction code:ECC)を生成する。特定の単位は、例えば、3台のメモリシステム3のそれぞれに対する1回のデータ書き込み動作で書き込みが可能なデータの総量に相当する。1台のメモリシステム3に対する1回のデータ書き込み動作で書き込みが可能なデータの量を、書き込み単位とも称する。ECCは、エラーが発生したユーザデータを訂正するためのデータである。ECCは、例えば、XORパリティである。以下では、ECCがXORパリティである場合を例示する。また、XORパリティを、単に、パリティと称する。
【0050】
具体的には、CPU21は、特定の単位のユーザデータ51Dが分割された3つの書き込み単位のユーザデータ511、512、および513(すなわち、第1ユーザデータ511、第2ユーザデータ512、および第3ユーザデータ513)を取得する。そして、CPU21は、3つのユーザデータ511、512、および513のXOR演算を行うことにより、パリティ51Pを生成する。CPU21は、生成されたパリティ51Pを、例えば、DRAM22に格納する。3つのユーザデータ511、512、および513と、パリティ51Pとは、データ長が同一である。3つのユーザデータ511、512、および513と、パリティ51Pとは、1つのECCフレーム51Eを構成する。ECCフレームは、パリティと、パリティで保護されるユーザデータとを含むデータ単位である。つまり、3つのユーザデータ511、512、および513は、パリティ51Pで保護される。パリティ51Pは、3つのユーザデータ511、512、および513の少なくとも1つが更新されることに応じて、更新される。
【0051】
次いで、CPU21は、PCIeスイッチ4を介して、3つのユーザデータ511、512、および513と、パリティ51Pとを、4台のメモリシステム3-1、3-2、3-3、および3-4にそれぞれ書き込む。
【0052】
具体的には、例えば、CPU21は、第1ユーザデータ511を書き込むことを要求するライトコマンドを、第1メモリシステム3-1に送信する(
図3中の(1))。CPU21は、第2ユーザデータ512を書き込むことを要求するライトコマンドを、第2メモリシステム3-2に送信する(
図3中の(2))。CPU21は、第3ユーザデータ513を書き込むことを要求するライトコマンドを、第3メモリシステム3-3に送信する(
図3中の(3))。CPU21は、パリティ51Pを書き込むことを要求するライトコマンドを、第4メモリシステム3-4に送信する(
図3中の(4))。なお、第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pのそれぞれを、4台のメモリシステム3-1、3-2、3-3、および3-4のいずれに書き込むかは、例えば、CPU21が特定の規則に従って決定する。第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pの書き込み先は、前述した例に限られない。例えば、CPU21は、第1ユーザデータ511が第2メモリシステム3-2に、第2ユーザデータ512が第3メモリシステム3-3に、第3ユーザデータ513が第4メモリシステム3-4に、パリティ51Pが第1メモリシステム3-1に書き込まれるように、ライトコマンドを送信してもよい。
【0053】
第1メモリシステム3-1は、ホスト2からのライトコマンドを受け付けたことに応じ、ホスト2のDRAM22に記憶されている第1ユーザデータ511を、PCIeスイッチ4を介して受信する。そして、第1メモリシステム3-1は、第1ユーザデータ511を、第1メモリシステム3-1内のNAND型フラッシュメモリ5に書き込む。
【0054】
第2メモリシステム3-2は、ホスト2からのライトコマンドを受け付けたことに応じ、ホスト2のDRAM22に記憶されている第2ユーザデータ512を、PCIeスイッチ4を介して受信する。そして、第2メモリシステム3-2は、第2ユーザデータ512を、第2メモリシステム3-2内のNAND型フラッシュメモリ5に書き込む。
【0055】
第3メモリシステム3-3は、ホスト2からのライトコマンドを受け付けたことに応じ、ホスト2のDRAM22に記憶されている第3ユーザデータ513を、PCIeスイッチ4を介して受信する。そして、第3メモリシステム3-3は、第3ユーザデータ513を、第3メモリシステム3-3内のNAND型フラッシュメモリ5に書き込む。
【0056】
第4メモリシステム3-4は、ホスト2からのライトコマンドを受け付けたことに応じ、ホスト2のDRAM22に記憶されているパリティ51Pを、PCIeスイッチ4を介して受信する。そして、第4メモリシステム3-4は、パリティ51Pを、第4メモリシステム3-4内のNAND型フラッシュメモリ5に書き込む。
【0057】
以上のシーケンシャルライト動作により、情報処理システム1では、1つのECCフレーム51Eを構成する第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pが、4台のメモリシステム3-1、3-2、3-3、および3-4に分散して書き込まれる。これにより、例えば、4台のメモリシステム3-1、3-2、3-3、および3-4のいずれか1台のメモリシステム3が故障したとしても、故障したメモリシステム3に格納されていたデータを、他のメモリシステム3に格納されているデータを用いて復元できる。
【0058】
なお、シーケンシャルライト動作では、ホスト2とメモリシステム3の間で4回の入出力(I/O)が行われる。この4回のI/Oは、ホスト2からメモリシステム3に対する4回のライトに関するI/O(Write I/O)である。入出力の回数は、PCIeスイッチ4を介したホスト2とメモリシステム3との通信によるバス帯域の使用に関する指標である。また、パリティ51Pは、ホスト2のリソース(より詳しくは、CPU21およびDRAM22)を用いて生成される。
【0059】
次いで、メモリシステム3に書き込まれたユーザデータ51Dの一部を更新するための動作について説明する。メモリシステム3に書き込まれたユーザデータ51Dの一部を更新するための動作を、更新動作と称する。更新動作は、ランダムライト動作を含む。
【0060】
まず、
図4から
図6を参照して、比較例に係る情報処理システム1Aにおける更新動作を説明する。比較例に係る情報処理システム1Aは、ホスト2A、複数のメモリシステム3A、およびPCIeスイッチ4Aを含む。ホスト2Aおよび複数のメモリシステム3Aは、PCIeスイッチ4Aを介して相互に通信可能である。ホスト2Aは、CPU21AとDRAM22Aとを備える。複数のメモリシステム3Aのそれぞれは、NAND型フラッシュメモリを備える。複数のメモリシステム3Aは、RAID-5を構成する。複数のメモリシステム3Aは、4台のメモリシステム3-1A、3-2A、3-3A、および3-4Aを含む。ここでは、
図3を参照して前述したシーケンシャルライト動作と同様の動作により、4台のメモリシステム3-1A、3-2A、3-3A、および3-4Aに、第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pがそれぞれ格納されていることを想定する。
【0061】
図4は、比較例に係る情報処理システム1Aにおける第1の更新動作を示す。第1の更新動作は、第1メモリシステム3-1Aに格納されている第1ユーザデータ511を第1更新ユーザデータ511-Uに更新するための動作である。
【0062】
ホスト2AのDRAM22Aは、第1更新ユーザデータ511-Uを記憶している。
【0063】
ホスト2AのCPU21Aは、第1ユーザデータ511を読み出すことを要求するリードコマンドを、第1メモリシステム3-1Aに送信する(
図4中の(1))。
【0064】
第1メモリシステム3-1Aは、ホスト2Aからのリードコマンドに応じ、第1メモリシステム3-1A内のNAND型フラッシュメモリから第1ユーザデータ511を読み出す。そして、第1メモリシステム3-1Aは、第1ユーザデータ511をホスト2Aに送信する。
【0065】
ホスト21のCPU21Aは、第1メモリシステム3-1Aから受信した第1ユーザデータ511をDRAM22Aに格納する。CPU21Aは、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行うことにより、第1XORデータ521を生成する。第1XORデータ521は、例えば、DRAM22Aに格納される。そして、CPU21Aは、第1更新ユーザデータ511-Uを書き込むことを要求するライトコマンドを、第1メモリシステム3-1Aに送信する(
図4中の(2))。
【0066】
第1メモリシステム3-1Aは、ホスト2Aからのライトコマンドを受け付けたことに応じ、ホスト2AのDRAM22Aに記憶されている第1更新ユーザデータ511-Uを受信する。そして、第1メモリシステム3-1Aは、第1更新ユーザデータ511-Uを、第1メモリシステム3-1A内のNAND型フラッシュメモリに書き込む。
【0067】
次いで、ホスト2AのCPU21Aは、パリティ51Pを読み出すことを要求するリードコマンドを、第4メモリシステム3-4Aに送信する(
図4中の(3))。
【0068】
第4メモリシステム3-4Aは、ホスト2Aからのリードコマンドに応じ、第4メモリシステム3-4A内のNAND型フラッシュメモリからパリティ51Pを読み出す。そして、第4メモリシステム3-4Aは、パリティ51Pをホスト2Aに送信する。
【0069】
ホスト21のCPU21Aは、第4メモリシステム3-4Aから受信したパリティ51PをDRAM22Aに格納する。CPU21Aは、DRAM22Aに格納されている第1XORデータ521とパリティ51PのXOR演算を行うことにより、更新パリティ51P-Uを生成する。更新パリティ51P-Uは、第1ユーザデータ511から第1更新ユーザデータ511-Uへの更新に応じて変更されたパリティである。つまり、第1更新ユーザデータ511-U、第2ユーザデータ512、第3ユーザデータ513、および更新パリティ51P-Uは、ECCフレームを構成する。CPU21Aは、更新パリティ51P-Uを書き込むことを要求するライトコマンドを、第4メモリシステム3-4Aに送信する(
図4中の(4))。
【0070】
第4メモリシステム3-4Aは、ホスト2Aからのライトコマンドを受け付けたことに応じ、ホスト2AのDRAM22Aに記憶されている更新パリティ51P-Uを受信する。そして、第4メモリシステム3-4Aは、更新パリティ51P-Uを、第4メモリシステム3-4A内のNAND型フラッシュメモリに書き込む。
【0071】
以上の第1の更新動作により、情報処理システム1Aでは、第1メモリシステム3-1Aに格納されている第1ユーザデータ511が第1更新ユーザデータ511-Uに更新されると共に、第4メモリシステム3-4Aに格納されているパリティ51Pが更新パリティ51P-Uに更新される。
【0072】
第1の更新動作では、ホスト2Aからメモリシステム3Aに対する4回のI/Oが行われる。この4回のI/Oは、ホスト2Aからメモリシステム3Aに対する2回のWrite I/Oと、2回のリードに関するI/O(Read I/O)とを含む。また、更新パリティ51P-Uは、ホスト2Aのリソース(より詳しくは、CPU21AおよびDRAM22A)を用いて生成される。
【0073】
図5は、比較例に係る情報処理システム1Aにおける第2の更新動作を示す。第2の更新動作は、使用されるホスト2Aのリソースを削減しながら、第1メモリシステム3-1Aに格納されている第1ユーザデータ511を第1更新ユーザデータ511-Uに更新するための動作である。
【0074】
ホスト2AのDRAM22Aは、第1更新ユーザデータ511-Uを記憶している。
【0075】
ホスト2AのCPU21Aは、XOR演算と、第1更新ユーザデータ511-Uの書き込みとを要求するコマンド(XOR/ライトコマンド)を、第1メモリシステム3-1Aに送信する(
図5中の(1))。
【0076】
第1メモリシステム3-1Aは、ホスト2AからのXOR/ライトコマンドを受け付けたことに応じ、ホスト2Aから第1更新ユーザデータ511-Uを受信する。また、第1メモリシステム3-1Aは、第1メモリシステム3-1A内のNAND型フラッシュメモリから第1ユーザデータ511を読み出す。第1メモリシステム3-1Aは、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行うことにより、第1XORデータ521を生成する。第1XORデータ521は、第1メモリシステム3-1Aの内部バッファ61-1Aに格納される。そして、第1メモリシステム3-1Aは、第1更新ユーザデータ511-Uを、第1メモリシステム3-1A内のNAND型フラッシュメモリに書き込む。
【0077】
次いで、ホスト2AのCPU21Aは、XOR演算と、更新パリティ51P-Uの書き込みとを要求するXOR/ライトコマンドを、第4メモリシステム3-4Aに送信する(
図5中の(2))。
【0078】
第4メモリシステム3-4Aは、ホスト2AからのXOR/ライトコマンドを受け付けたことに応じ、第1メモリシステム3-1Aから第1XORデータ521を受信する。第4メモリシステム3-4Aは、第4メモリシステム3-4A内のNAND型フラッシュメモリからパリティ51Pを読み出す。第4メモリシステム3-4Aは、第1XORデータ521とパリティ51PとのXOR演算を行うことにより、更新パリティ51P-Uを生成する。そして、第4メモリシステム3-4Aは、更新パリティ51P-Uを、第4メモリシステム3-4A内のNAND型フラッシュメモリに書き込む。
【0079】
以上の第2の更新動作により、情報処理システム1Aでは、第1メモリシステム3-1Aに格納されている第1ユーザデータ511が第1更新ユーザデータ511-Uに更新されると共に、第4メモリシステム3-4Aに格納されているパリティ51Pが更新パリティ51P-Uに更新される。
【0080】
第2の更新動作では、ホスト2Aからメモリシステム3Aに対する2回のI/Oが行われる。この2回のI/Oは、ホスト2Aからメモリシステム3Aに対する2回のWrite I/Oである。第2の更新動作では、Read I/Oは発生しない。したがって、第2の更新動作では、
図4を参照して前述した第1の更新動作よりも、Read I/Oの回数が削減される。また、更新パリティ51P-Uは、メモリシステム3Aのリソースを用いて生成される。したがって、第2の更新動作では、ホスト2Aにかかる負荷が軽減される。つまり、ホスト2Aからメモリシステム3Aへの更新動作のオフロードが実現される。
【0081】
図6は、比較例に係る情報処理システム1Aにおける第3の更新動作を示す。第3の更新動作は、使用されるホスト2Aのリソースを削減しながら、第1メモリシステム3-1Aに格納されている第1ユーザデータ511を第1更新ユーザデータ511-Uに更新し、第3メモリシステム3-3Aに格納されている第3ユーザデータ513を第3更新ユーザデータ513-Uに更新するための動作である。つまり、第3の更新動作では、2つのメモリシステム3-1Aおよび3-3Aにそれぞれ格納されている2つのユーザデータ511および513が更新される。
【0082】
ホスト2AのDRAM22Aは、第1更新ユーザデータ511-Uと第3更新ユーザデータ513-Uとを記憶している。
【0083】
ホスト2AのCPU21Aは、XOR演算と、第1更新ユーザデータ511-Uの書き込みとを要求するXOR/ライトコマンド(第1XOR/ライトコマンド)を、第1メモリシステム3-1Aに送信する(
図6中の(1-1))。また、CPU21Aは、XOR演算と、第3更新ユーザデータ513-Uの書き込みとを要求するXOR/ライトコマンド(第2XOR/ライトコマンド)を、第3メモリシステム3-3Aに送信する(
図6中の(1-2))。
【0084】
第1メモリシステム3-1Aは、ホスト2Aからの第1XOR/ライトコマンドを受け付けたことに応じ、ホスト2Aから第1更新ユーザデータ511-Uを受信する。第1メモリシステム3-1Aは、第1メモリシステム3-1A内のNAND型フラッシュメモリから第1ユーザデータ511を読み出す。第1メモリシステム3-1Aは、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行うことにより、第1XORデータ521を生成する。第1XORデータ521は、第1メモリシステム3-1Aの内部バッファ61-1Aに格納される。そして、第1メモリシステム3-1Aは、第1更新ユーザデータ511-Uを、第1メモリシステム3-1A内のNAND型フラッシュメモリに書き込む。
【0085】
また、第3メモリシステム3-3Aは、ホスト2Aからの第2XOR/ライトコマンドを受け付けたことに応じ、ホスト2Aから第3更新ユーザデータ513-Uを受信する。第3メモリシステム3-3Aは、第3メモリシステム3-3A内のNAND型フラッシュメモリから第3ユーザデータ513を読み出す。第3メモリシステム3-3Aは、第3ユーザデータ513と第3更新ユーザデータ513-UとのXOR演算を行うことにより、第2XORデータ522を生成する。第2XORデータ522は、第3メモリシステム3-3Aの内部バッファ61-3Aに格納される。そして、第3メモリシステム3-3Aは、第3更新ユーザデータ513-Uを、第3メモリシステム3-3A内のNAND型フラッシュメモリに書き込む。
【0086】
次いで、ホスト2AのCPU21Aは、XOR演算と、後述する事前XORデータ51P-Pの書き込みとを要求するXOR/ライトコマンド(第3XOR/ライトコマンド)を、第4メモリシステム3-4Aに送信する(
図6中の(2-1))。さらに、ホスト2AのCPU21Aは、XOR演算と、更新パリティ51P-Uの書き込みとを要求するXOR/ライトコマンド(第4XOR/ライトコマンド)を、第4メモリシステム3-4Aに送信する(
図6中の(2-2))。ホスト2Aは、第3XOR/ライトコマンドに対する応答を受信する前に、第4XOR/ライトコマンドを第4メモリシステム3-4Aに送信してもよい。
【0087】
第4メモリシステム3-4Aは、ホスト2Aからの第3XOR/ライトコマンドを受け付けたことに応じ、第1メモリシステム3-1Aから第1XORデータ521を受信する。第4メモリシステム3-4Aは、第4メモリシステム3-4A内のNAND型フラッシュメモリからパリティ51Pを読み出す。第4メモリシステム3-4Aは、第1XORデータ521とパリティ51PとのXOR演算を行うことにより、事前XORデータ51P-Pを生成する。そして、第4メモリシステム3-4Aは、事前XORデータ51P-Pを、第4メモリシステム3-4A内のNAND型フラッシュメモリに書き込む。
【0088】
第4メモリシステム3-4Aは、ホスト2Aからの第4XOR/ライトコマンドを受け付けたことに応じ、第3メモリシステム3-3Aから第2XORデータ522を受信する。第4メモリシステム3-4Aは、第4メモリシステム3-4A内のNAND型フラッシュメモリから事前XORデータ51P-Pを読み出す。第4メモリシステム3-4Aは、事前XORデータ51P-Pと、第2XORデータ522とのXOR演算を行うことにより、更新パリティ51P-Uを生成する。そして、第4メモリシステム3-4Aは、更新パリティ51P-Uを、第4メモリシステム3-4A内のNAND型フラッシュメモリに書き込む。
【0089】
なお、第4メモリシステム3-4Aは、第4XOR/ライトコマンドを第3XOR/ライトコマンドよりも先に受け付けた場合には、第2XORデータ522とパリティ51PとのXOR演算を行うことにより、事前XORデータ51P-Pを生成する。この場合、第4メモリシステム3-4Aは、第3XOR/ライトコマンドを受け付けたことに応じ、事前XORデータ51P-Pと、第1XORデータ522とのXOR演算を行うことにより、更新パリティ51P-Uを生成する。
【0090】
以上の第3の更新動作により、情報処理システム1Aでは、第1メモリシステム3-1Aに格納されている第1ユーザデータ511が第1更新ユーザデータ511-Uに更新され、第3メモリシステム3-3Aに格納されている第3ユーザデータ513が第3更新ユーザデータ513-Uに更新されると共に、第4メモリシステム3-4Aに格納されているパリティ51Pが更新パリティ51P-Uに更新される。
【0091】
第3の更新動作では、
図5を参照して前述した第2の更新動作と同様に、更新パリティ51P-Uが、メモリシステム3Aのリソースを用いて生成される。したがって、第3の更新動作では、ホスト2Aからメモリシステム3Aへの更新動作のオフロードが実現される。
【0092】
しかしながら、第3の更新動作では、第1メモリシステム3-1Aから第4メモリシステム3-4Aに第1XORデータ521が送信され、第3メモリシステム3-3Aから第4メモリシステム3-4Aに第2XORデータ522が送信される。第4メモリシステム3-4Aへの第1XORデータ521の送信要求と、第2XORデータ522の送信要求とは、同時に発生し得る。この場合、一方の送信要求は、他方の送信要求に対する送信が完了するまで待たせられる。すなわち、パリティ51Pを格納している第4メモリシステム3-4Aへのデータの転送が集中して発生し得る。また、各メモリシステム3AとPCIeスイッチ4Aとを接続するバスは、ホスト2とPCIeスイッチ4とを接続するバスよりも、バス帯域が小さい。したがって、第4メモリシステム3-4Aにデータを転送するためのバス帯域が不足することにより、情報処理システム1A全体の性能が低下する可能性がある。
【0093】
一方、第1実施形態に係る情報処理システム1では、ホスト2からメモリシステム3への更新動作のオフロードを実現しながら、パリティ51Pを格納しているメモリシステム3へのデータ転送の集中も回避する。これにより、情報処理システム1では、ホスト2にかかる負荷を軽減しながら、情報処理システム1全体の性能を向上できる。
【0094】
図7から
図11を参照して、情報処理システム1における更新動作の2つの例を説明する。
【0095】
図7は、情報処理システム1における第4の更新動作の例を示す。第4の更新動作は、使用されるホスト2のリソースを削減しながら、2つ以上のメモリシステム3のそれぞれに格納されているユーザデータを更新するための動作である。ここでは、第4の更新動作が、第1メモリシステム3-1に格納されている第1ユーザデータ511を第1更新ユーザデータ511-Uに更新し、第3メモリシステム3-3に格納されている第3ユーザデータ513を第3更新ユーザデータ513-Uに更新するための動作である場合を例示する。なお、4台のメモリシステム3-1、3-2、3-3、および3-4には、
図3を参照して前述したシーケンシャルライト動作により、第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pがそれぞれ格納されているものとする。第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pは、1つのECCフレーム51Eを構成する。
【0096】
ホスト2のDRAM22は、第1更新ユーザデータ511-Uと第3更新ユーザデータ513-Uとを記憶している。
【0097】
ホスト2のCPU21は、XOR演算と、第1更新ユーザデータ511-Uの書き込みとを要求するXOR/ライトコマンド(第1XOR/ライトコマンド)を、第1メモリシステム3-1に送信する(
図7中の(1))。第1XOR/ライトコマンドは、第1ユーザデータ511の論理アドレスを含んでいてもよい。
【0098】
第1メモリシステム3-1は、ホスト2からの第1XOR/ライトコマンドを受け付けたことに応じ、ホスト2から第1更新ユーザデータ511-Uを受信する。第1メモリシステム3-1は、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す。第1メモリシステム3-1は、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行うことにより、第1XORデータ521を生成する。第1XORデータ521は、第1メモリシステム3-1の内部バッファ61-1に格納される。内部バッファ61-1として、例えば、DRAM6の記憶領域の一部が割り当てられる。内部バッファ61-1は、例えば、他のメモリシステム3がPCIeスイッチ4を介してアクセス可能なコントローラメモリバッファ(CMB)である。第1XORデータ521の格納に内部バッファ61-1が用いられるので、Write Amplification Factor(WAF)は上昇しない。WAFは、NAND型フラッシュメモリ5に実際に書き込まれたデータ量を、ホスト2からの要求に応じてNAND型フラッシュメモリ5に書き込まれたデータ量で除した値である。第1メモリシステム3-1は、第1更新ユーザデータ511-Uを、第1メモリシステム3-1内のNAND型フラッシュメモリ5に書き込む。
【0099】
次いで、ホスト2のCPU21は、XOR演算と、第3更新ユーザデータ513-Uの書き込みとを要求するXOR/ライトコマンド(第2XOR/ライトコマンド)を、第3メモリシステム3-3に送信する(
図7中の(2))。第2XOR/ライトコマンドは、第3ユーザデータ513の論理アドレスと、第1メモリシステム3-1の内部バッファ61-1(より詳しくは第1XORデータ521の格納位置)の識別子(例えば、アドレス)とを含んでいてもよい。
【0100】
第3メモリシステム3-3は、ホスト2からの第2XOR/ライトコマンドを受け付けたことに応じ、ホスト2から第3更新ユーザデータ513-Uを受信し、第1メモリシステム3-1から第1XORデータ521を受信する。また、第3メモリシステム3-3は、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す。第3メモリシステム3-3Aは、第3ユーザデータ513、第3更新ユーザデータ513-U、および第1XORデータ521のXOR演算を行うことにより、第3XORデータ523を生成する。第3XORデータ523は、第3メモリシステム3-3の内部バッファ61-3に格納される。そして、第3メモリシステム3-3は、第3更新ユーザデータ513-Uを、第3メモリシステム3-3内のNAND型フラッシュメモリ5に書き込む。
【0101】
次いで、ホスト2のCPU21は、XOR演算と更新パリティ51P-Uの書き込みとを要求するXOR/ライトコマンド(第3XOR/ライトコマンド)を、第4メモリシステム3-4に送信する(
図7中の(3))。第3XOR/ライトコマンドは、パリティ51Pの論理アドレスと、第3メモリシステム3-3の内部バッファ61-3(より詳しくは第3XORデータ523の格納位置)の識別子(例えば、アドレス)とを含んでいてもよい。
【0102】
第4メモリシステム3-4は、ホスト2からの第3XOR/ライトコマンドを受け付けたことに応じ、第3メモリシステム3-3から第3XORデータ523を受信する。第4メモリシステム3-4は、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す。第4メモリシステム3-4は、第3XORデータ523とパリティ51PとのXOR演算を行うことにより、更新パリティ51P-Uを生成する。そして、第4メモリシステム3-4は、更新パリティ51P-Uを、第4メモリシステム3-4内のNAND型フラッシュメモリ5に書き込む。
【0103】
以上の第4の更新動作により、情報処理システム1では、第1メモリシステム3-1に格納されていた第1ユーザデータ511が第1更新ユーザデータ511-Uに更新され、第3メモリシステム3-3に格納されていた第3ユーザデータ513が第3更新ユーザデータ513-Uに更新されると共に、第4メモリシステム3-4に格納されていたパリティ51Pが更新パリティ51P-Uに更新される。
【0104】
第4の更新動作では、更新パリティ51P-Uがメモリシステム3のリソースを用いて生成される。したがって、第4の更新動作では、ホスト2からメモリシステム3への更新動作のオフロードが実現される。
【0105】
さらに、第4の更新動作では、第1メモリシステム3-1から第3メモリシステム3-3に第1XORデータ521が送信され、第3メモリシステム3-3から第4メモリシステム3-4に第3XORデータ523が送信される。これにより、パリティ51Pを格納している第4メモリシステム3-4へのデータ転送が集中して発生することを回避できる。
【0106】
したがって、第4の更新動作を行う情報処理システム1では、ホスト2にかかる負荷を軽減しながら、情報処理システム1全体の性能を向上できる。
【0107】
図8は、情報処理システム1における第4の更新動作の具体的な例を示すシーケンス図である。
【0108】
まず、ホスト2は、第1XOR/ライトコマンドと第1更新ユーザデータ511-Uとを第1メモリシステム3-1に送信する(A1)。ホスト2は、第1XOR/ライトコマンドを受け付けた第1メモリシステム3-1に、第1更新ユーザデータ511-Uを送信してもよい。
【0109】
第1メモリシステム3-1は、第1XOR/ライトコマンドと第1更新ユーザデータ511-Uとを受信したことに応じ、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す(A2)。第1メモリシステム3-1は、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行って、第1XORデータ521を生成する(A3)。第1メモリシステム3-1は、第1更新ユーザデータ511-Uを第1メモリシステム3-1内のNAND型フラッシュメモリ5に書き込み、第1ユーザデータ511を無効化する(A4)。具体的には、第1メモリシステム3-1は、第1ユーザデータ511に対応する論理アドレスを、第1ユーザデータ511が格納されている物理記憶位置ではなく、第1更新ユーザデータ511-Uが格納された物理記憶位置に関連付けるように論理物理アドレス変換テーブル31を更新する。これにより、第1ユーザデータ511が無効化される。
【0110】
そして、第1メモリシステム3-1は、第1XOR/ライトコマンドに対する応答をホスト2に送信する(A5)。なお、第1メモリシステム3-1は、第1更新ユーザデータ511-UをNAND型フラッシュメモリ5に書き込んだ場合に限らず、第1更新ユーザデータ511-Uが不揮発化されることが保証された場合に、第1XOR/ライトコマンドに対する応答をホスト2に送信してもよい。具体的には、第1メモリシステム3-1は、例えば、パワーロスプロテクション(PLP)機能を有する場合、第1XORデータ521を生成し、第1更新ユーザデータ511-Uをライトバッファ(例えば、DRAM6)に格納したことに応じて、応答をホスト2に送信してもよい。これにより、第1メモリシステム3-1は、第1更新ユーザデータ511-UをNAND型フラッシュメモリ5に書き込んだことに応じて応答を送信する場合よりも早く、ホスト2に応答を送信できる。PLP機能は、外部電源からメモリシステム3に供給される電力が遮断された場合に、メモリシステム3内の蓄電装置に蓄積された電荷のエネルギーを用いて、ライトバッファに格納され、且つNAND型フラッシュメモリ5には書き込まれていないユーザデータ等を、NAND型フラッシュメモリ5に書き込むための機能である。
【0111】
次いで、ホスト2は、第1XOR/ライトコマンドに対する応答を受信したことに応じ、第2XOR/ライトコマンドと第3更新ユーザデータ513-Uとを第3メモリシステム3-3に送信する(A6)。
【0112】
第3メモリシステム3-3は、第2XOR/ライトコマンドと第3更新ユーザデータ513-Uとを受信したことに応じ、第1XORデータ521を第1メモリシステム3-1から受信する(A7)。具体的には、第3メモリシステム3-3は、例えば、第1メモリシステム3-1内の特定の記憶領域(例えば、内部バッファ61-1)から読み出され、送信された第1XORデータ521を受信する。第1XORデータ521が格納されている第1メモリシステム3-1内の位置は、例えば、予め規定されている。第3メモリシステム3-3は、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す(A8)。第3メモリシステム3-3は、第3ユーザデータ513、第3更新ユーザデータ513-U、および第1XORデータ521のXOR演算を行って、第3XORデータ523を生成する(A9)。第3メモリシステム3-3は、第3更新ユーザデータ513-Uを第3メモリシステム3-3内のNAND型フラッシュメモリ5に書き込み、第3ユーザデータ513を無効化する(A10)。そして、第3メモリシステム3-3は、第2XOR/ライトコマンドに対する応答をホスト2に送信する(A11)。なお、第3メモリシステム3-3は、第3更新ユーザデータ513-Uが不揮発化されることが保証された場合に、第2XOR/ライトコマンドに対する応答をホスト2に送信してもよい。
【0113】
ホスト2は、第2XOR/ライトコマンドに対する応答を受信したことに応じ、第3XOR/ライトコマンドを第4メモリシステム3-4に送信する(A12)。
【0114】
第4メモリシステム3-4は、第3XOR/ライトコマンドを受信したことに応じ、第3XORデータ523を第3メモリシステム3-3から受信する(A13)。第4メモリシステム3-4は、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す(A14)。第4メモリシステム3-4は、パリティ51Pと第3XORデータ523のXOR演算を行って、更新パリティ51P-Uを生成する(A15)。第4メモリシステム3-4は、更新パリティ51P-Uを第4メモリシステム3-4内のNAND型フラッシュメモリ5に書き込む(A16)。そして、第4メモリシステム3-4は、第3XOR/ライトコマンドに対する応答をホスト2に送信する(A17)。なお、第4メモリシステム3-4は、更新パリティ51P-Uが不揮発化されることが保証された場合に、第3XOR/ライトコマンドに対する応答をホスト2に送信してもよい。
【0115】
以上の第4の更新動作により、情報処理システム1では、ホスト2からメモリシステム3への更新動作のオフロードを実現すると共に、パリティ51Pを格納している第4メモリシステム3-4へのデータの転送が集中して発生することを回避できる。
【0116】
なお、第1メモリシステム3-1、第2メモリシステム3-2、第3メモリシステム3-3、および第4メモリシステム3-4のそれぞれにおける動作は、例えば、
図2を参照して前述したコマンド受付部141、リード処理部142、XOR処理部143、およびライト処理部144として機能するCPU14によって実現される。
【0117】
一例として、第4の更新動作が行われる場合の第1メモリシステム3-1における動作について説明する。
【0118】
図9は、第4の更新動作が行われる場合の第1メモリシステム3-1における具体的な動作の例を示す。
【0119】
コマンド受付部141は、ホスト2からの第1XOR/ライトコマンドを受け付ける(
図9中の(1))。コマンド受付部141は、第1XOR/ライトコマンドを受け付けたことに応じ、ホスト2から第1更新ユーザデータ511-Uを受信する(
図9中の(2))。コマンド受付部141は、第1XOR/ライトコマンドに基づき、第1ユーザデータ511の読み出しを指示するリード指示をリード処理部142に送出する(
図9中の(3))。
【0120】
リード処理部142は、リード指示に応じて、NAND型フラッシュメモリ5から第1ユーザデータ511を読み出す(
図9中の(4))。そして、リード処理部142は、読み出された第1ユーザデータ511をXOR処理部143に送出する(
図9中の(5))。
【0121】
次いで、コマンド受付部141は、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を指示するXOR指示と、第1更新ユーザデータ511-Uとを、XOR処理部143に送出する(
図9中の(6))。
【0122】
XOR処理部143は、XOR指示に応じて、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行って、第1XORデータ521を生成する。XOR処理部143は、生成された第1XORデータ521を内部バッファ61-1に格納する(
図9中の(7))。
【0123】
そして、コマンド受付部141は、第1更新ユーザデータ511-Uの書き込みを指示するライト指示と、第1更新ユーザデータ511-Uとをライト処理部144に送出する(
図9中の(8))。
【0124】
ライト処理部144は、ライト指示に応じて、第1更新ユーザデータ511-UをNAND型フラッシュメモリ5に書き込む(
図9中の(9))。そして、ライト処理部144は、第1ユーザデータ511が格納されている物理記憶位置に関連付けられた論理アドレスが、第1更新ユーザデータ511-Uが格納された物理記憶位置に関連付けられるように、論理物理アドレス変換テーブル31を更新する(
図9中の(10))。これにより、第1ユーザデータ511が無効化され、該論理アドレスに対応するユーザデータが第1更新ユーザデータ511-Uに更新される。
【0125】
そして、コマンド受付部141は、第1XOR/ライトコマンドに対する応答をホスト2に送信する(
図9中の(11))。
【0126】
同様にして、第2メモリシステム3-2、第3メモリシステム3-3、および第4メモリシステム3-4のそれぞれにおける動作も、コマンド受付部141、リード処理部142、XOR処理部143、およびライト処理部144として機能するCPU14によって実現され得る。
【0127】
図10は、情報処理システム1における第5の更新動作の例を示す。第5の更新動作は、第4の更新動作と同様に、第1メモリシステム3-1に格納されている第1ユーザデータ511を第1更新ユーザデータ511-Uに更新し、第3メモリシステム3-3に格納されている第3ユーザデータ513を第3更新ユーザデータ513-Uに更新するための動作である。
【0128】
ホスト2のDRAM22は、第1更新ユーザデータ511-Uと第3更新ユーザデータ513-Uとを記憶している。
【0129】
ホスト2のCPU21は、XOR演算と、第1更新ユーザデータ511-Uの書き込みとを要求する第1XOR/ライトコマンドを、第1メモリシステム3-1に送信する(
図10中の(1-1))。また、ホスト2のCPU21は、XOR演算と、第3更新ユーザデータ513-Uの書き込みとを要求する第2XOR/ライトコマンドを、第3メモリシステム3-3に送信する(
図10中の(1-2))。
【0130】
第1メモリシステム3-1は、ホスト2からの第1XOR/ライトコマンドを受け付けたことに応じ、ホスト2から第1更新ユーザデータ511-Uを受信する。第1メモリシステム3-1は、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す。第1メモリシステム3-1は、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行うことにより、第1XORデータ521を生成する。第1XORデータ521は、第1メモリシステム3-1の内部バッファ61-1に格納される。そして、第1メモリシステム3-1は、第1更新ユーザデータ511-Uを、第1メモリシステム3-1内のNAND型フラッシュメモリ5に書き込む。
【0131】
第3メモリシステム3-3は、ホスト2からの第2XOR/ライトコマンドを受け付けたことに応じ、ホスト2から第3更新ユーザデータ513-Uを受信する。第3メモリシステム3-3は、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す。第3メモリシステム3-3は、第3ユーザデータ513と第3更新ユーザデータ513-UのXOR演算を行うことにより、事前XORデータ523-Pを生成する。事前XORデータ523-Pは、第3メモリシステム3-3の内部バッファ61-3に格納される。そして、第3メモリシステム3-3は、第3更新ユーザデータ513-Uを、第3メモリシステム3-3内のNAND型フラッシュメモリ5に書き込む。第3メモリシステム3-3による第2XOR/ライトコマンドに応じた動作は、例えば、第1メモリシステム3-1による第1XOR/ライトコマンドに応じた動作と並列に行われる。
【0132】
次いで、ホスト2のCPU21は、第1XORデータ521と事前XORデータ523-PのXOR演算を要求するXORコマンドを、第3メモリシステム3-3に送信する(
図10中の(2))。
【0133】
第3メモリシステム3-3は、ホスト2からのXORコマンドを受け付けたことに応じ、第1メモリシステム3-1から第1XORデータ521を受信する。第3メモリシステム3-3は、第1XORデータ521と事前XORデータ523-PのXOR演算を行うことにより、第3XORデータ523を生成する。第3XORデータ523は、第3メモリシステム3-3の内部バッファ61-3に格納される。
【0134】
次いで、ホスト2のCPU21は、XOR演算と更新パリティ51P-Uの書き込みとを要求する第3XOR/ライトコマンドを、第4メモリシステム3-4に送信する(
図10中の(3))。
【0135】
第4メモリシステム3-4は、ホスト2からの第3XOR/ライトコマンドを受け付けたことに応じ、第3メモリシステム3-3から第3XORデータ523を受信する。第4メモリシステム3-4は、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す。第4メモリシステム3-4は、第3XORデータ523とパリティ51PとのXOR演算を行うことにより、更新パリティ51P-Uを生成する。そして、第4メモリシステム3-4は、更新パリティ51P-Uを、第4メモリシステム3-4内のNAND型フラッシュメモリ5に書き込む。
【0136】
以上の第5の更新動作により、情報処理システム1では、第1メモリシステム3-1に格納されている第1ユーザデータ511が第1更新ユーザデータ511-Uに更新され、第3メモリシステム3-3に格納されている第3ユーザデータ513が第3更新ユーザデータ513-Uに更新されると共に、第4メモリシステム3-4に格納されているパリティ51Pが更新パリティ51P-Uに更新される。
【0137】
第5の更新動作では、更新パリティ51P-Uがメモリシステム3のリソースを用いて生成される。したがって、第5の更新動作では、ホスト2からメモリシステム3への更新動作のオフロードが実現される。
【0138】
また、第5の更新動作では、第1メモリシステム3-1から第3メモリシステム3-3に第1XORデータ521が送信され、第3メモリシステム3-3から第4メモリシステム3-4に第3XORデータ523が送信される。これにより、パリティ51Pを格納している第4メモリシステム3-4へのデータ転送が集中して発生することを回避できる。
【0139】
さらに、第5の更新動作では、第1XOR/ライトコマンドに応じた第1メモリシステム3-1による動作と、第2XOR/ライトコマンドに応じた第3メモリシステム3-3による動作が並列に行われる。これにより、第1メモリシステム3-1による動作と第3メモリシステム3-3による動作とを一部並列化できる。したがって、情報処理システム1において、第5の更新動作に要する時間は、第4の更新動作に要する時間よりも短縮され得る。
【0140】
このように、第5の更新動作を行う情報処理システム1では、ホスト2にかかる負荷を軽減しながら、情報処理システム1全体の性能を向上できる。
【0141】
図11は、情報処理システム1における第5の更新動作の具体的な例を示すシーケンス図である。
【0142】
まず、ホスト2は、第1XOR/ライトコマンドと第1更新ユーザデータ511-Uとを第1メモリシステム3-1に送信する(B1)。ホスト2は、第1XOR/ライトコマンドを受け付けた第1メモリシステム3-1に、第1更新ユーザデータ511-Uを送信してもよい。また、ホスト2は、第2XOR/ライトコマンドと第3更新ユーザデータ513-Uとを第3メモリシステム3-3に送信する(B2)。ホスト2は、第2XOR/ライトコマンドを受け付けた第3メモリシステム3-3に、第3更新ユーザデータ513-Uを送信してもよい。
【0143】
第1メモリシステム3-1は、第1XOR/ライトコマンドと第1更新ユーザデータ511-Uとを受信したことに応じ、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す(B3)。第1メモリシステム3-1は、第1ユーザデータ511と第1更新ユーザデータ511-UとのXOR演算を行って、第1XORデータ521を生成し、内部バッファ61-1に格納する(B4)。第1メモリシステム3-1は、第1更新ユーザデータ511-Uを第1メモリシステム3-1内のNAND型フラッシュメモリ5に書き込み、第1ユーザデータ511を無効化する(B5)。そして、第1メモリシステム3-1は、第1XOR/ライトコマンドに対する応答をホスト2に送信する(B6)。
【0144】
第3メモリシステム3-3は、第2XOR/ライトコマンドを受信したことに応じ、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す(B7)。第3メモリシステム3-3は、第3ユーザデータ513と第3更新ユーザデータ513-UとのXOR演算を行って、事前XORデータ523-Pを生成し、内部バッファ61-3に格納する(B8)。第3メモリシステム3-3は、第3更新ユーザデータ513-Uを第3メモリシステム3-3内のNAND型フラッシュメモリ5に書き込み、第3ユーザデータ513を無効化する(B9)。そして、第3メモリシステム3-3は、第2XOR/ライトコマンドに対する応答をホスト2に送信する(B10)。
【0145】
次いで、ホスト2は、第1XOR/ライトコマンドに対する応答および第2XOR/ライトコマンドに対する応答を受信したことに応じ、XORコマンドを第3メモリシステム3-3に送信する(B11)。
【0146】
第3メモリシステム3-3は、XORコマンドを受信したことに応じ、第1XORデータ521を第1メモリシステム3-1から受信する(B12)。第3メモリシステム3-3は、第1XORデータ521と事前XORデータ523-PとのXOR演算を行って、第3XORデータ523を生成し、内部バッファ61-3に格納する(B13)。そして、第3メモリシステム3-3は、XORコマンドに対する応答をホスト2に送信する(B14)。以降のB15からB20までの動作は、
図8を参照して前述した第4の更新動作のA12からA17までの動作と同様である。
【0147】
以上の第5の更新動作により、情報処理システム1では、ホスト2からメモリシステム3への更新動作のオフロードを実現すると共に、パリティ51Pを格納している第4メモリシステム3-4へのデータの転送が集中して発生することを回避できる。また、第1メモリシステム3-1における動作と第3メモリシステム3-3における動作の一部とを並列化して、第5の更新動作に要する時間を、第4の更新動作に要する時間よりも短縮し得る。
【0148】
(第2実施形態)
第1実施形態に係る情報処理システム1では、複数のメモリシステム3でRAIDが構成される場合に、1つのECCフレーム51Eを構成するユーザデータ51Dの少なくとも一部が、2つ以上のメモリシステム3に亘って更新される更新動作が行われる。これに対して、第2実施形態の情報処理システム1では、複数のメモリシステム3でRAIDが構成される場合に、故障したメモリシステム3に格納されていたデータを復元して、RAIDを再構築する動作(リビルド動作)が行われる。
【0149】
第2実施形態に係る情報処理システム1の構成は、第1実施形態の情報処理システム1と同様である。第2実施形態では、ホスト2およびメモリシステム3においてリビルド動作が行われる点が異なる。以下、第1実施形態と異なる点を主に説明する。
【0150】
図12は、情報処理システム1における第1のリビルド動作の例を示す。第1のリビルド動作は、使用されるホスト2のリソースを削減しながら、故障したメモリシステム3に格納されていたデータを復元して、RAIDを再構築する動作である。ここでは、第2メモリシステム3-2が故障した場合を例示する。第5メモリシステム3-5は、故障した第2メモリシステム3-2から交換されるメモリシステム3である。つまり、情報処理システム1では、第2メモリシステム3-2の故障に対処するために、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5でRAIDが再構築されるようにリビルド動作が行われる。
【0151】
4台のメモリシステム3-1、3-2、3-3、および3-4には、
図3を参照して前述したシーケンシャルライト動作により、第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pがそれぞれ格納されているものとする。第1ユーザデータ511、第2ユーザデータ512、第3ユーザデータ513、およびパリティ51Pは、1つのECCフレーム51Eを構成する。
【0152】
ホスト2は、第2メモリシステム3-2が故障した場合、XOR演算を要求するXORコマンド(第1XORコマンド)を第1メモリシステム3-1に送信する(
図12中の(1))。第1XORコマンドは、第1ユーザデータ511の論理アドレスを含んでいてもよい。
【0153】
第1メモリシステム3-1は、ホスト2からの第1XORコマンドに応じて、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す。第1メモリシステム3-1は、第1ユーザデータ511とダミーデータ531とのXOR演算により、第4XORデータ524を生成する。第4XORデータ524は、例えば、内部バッファ61-1に格納される。ダミーデータ531は、全てのビットが0であるデータ列である。ダミーデータ531と第1ユーザデータ511とは、データ長が同一である。ダミーデータ531のデータ列は全てのビットが0であるので、第4XORデータ524は、第1ユーザデータ511と同一である。第1メモリシステム3-1は、第1ユーザデータ511とダミーデータ531とのXOR演算を行う代わりに、第1ユーザデータ511をそのまま内部バッファ61-1に格納してもよい。
【0154】
そして、ホスト2は、第2XORコマンドを第3メモリシステム3-3に送信する(
図12中の(2))。第2XORコマンドは、第3ユーザデータ513の論理アドレスと、第1メモリシステム3-1の内部バッファ61-1(より詳しくは第4XORデータ524の格納位置)の識別子(例えば、アドレス)とを含んでいてもよい。
【0155】
第3メモリシステム3-3は、ホスト2からの第2XORコマンドに応じて、第1メモリシステム3-1から第4XORデータ524を受信する。第3メモリシステム3-3は、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す。第3メモリシステム3-3は、第3ユーザデータ513と第4XORデータ524とのXOR演算により、第5XORデータ525を生成する。第5XORデータ525は、例えば、内部バッファ61-3に格納される。
【0156】
次いで、ホスト2は、第3XORコマンドを第4メモリシステム3-4に送信する(
図12中の(3))。第3XORコマンドは、パリティ51Pの論理アドレスと、第3メモリシステム3-3の内部バッファ61-3(より詳しくは第5XORデータ525の格納位置)の識別子(例えば、アドレス)とを含んでいてもよい。
【0157】
第4メモリシステム3-4は、ホスト2からの第3XORコマンドに応じて、第3メモリシステム3-3から第5XORデータ525を受信する。第4メモリシステム3-4は、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す。第4メモリシステム3-4は、パリティ51Pと第5XORデータ525とのXOR演算により、第2ユーザデータ512を生成する。つまり、故障した第2メモリシステム3-2内のNAND型フラッシュメモリ5に格納されていた第2ユーザデータ512が復元される。生成された第2ユーザデータ512は、例えば、内部バッファ61-4に格納される。
【0158】
そして、ホスト2は、第2ユーザデータ512を書き込むことを要求するライトコマンドを第5メモリシステム3-5に送信する(
図12中の(4))。ライトコマンドは、第2ユーザデータ512の論理アドレスと、第4メモリシステム3-3の内部バッファ61-4(より詳しくは第2ユーザデータ512の格納位置)の識別子(例えば、アドレス)とを含んでいてもよい。
【0159】
第5メモリシステム3-5は、ホスト2からのライトコマンドを受け付けたことに応じて、第4メモリシステム3-4から第2ユーザデータ512を受信する。そして、第5メモリシステム3-5は、第2ユーザデータ512を、第5メモリシステム3-5内のNAND型フラッシュメモリ5に書き込む。
【0160】
以上の第1のリビルド動作により、情報処理システム1では、故障した第2メモリシステム3-2に格納されていた第2ユーザデータ512を復元して、第2メモリシステム3-2から交換される第5メモリシステム3-5に格納できる。そして、第1のリビルド動作を同様に繰り返すことにより、第2メモリシステム3-2に格納されていた全てのデータ(すなわち、ユーザデータおよびパリティ)を復元し、復元されたデータを第5メモリシステム3-5に格納できる。これにより、情報処理システム1では、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5でRAIDを再構築できる。
【0161】
第1のリビルド動作では、第2ユーザデータ512がメモリシステム3のリソースを用いて復元される。したがって、第1のリビルド動作では、ホスト2からメモリシステム3へのリビルド動作のオフロードが実現される。
【0162】
なお、第2ユーザデータ512を復元するための別の動作として、例えば、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5のいずれかが、第1ユーザデータ511、第3ユーザデータ513、およびパリティ51Pを取得して、XOR演算を行うことにより、第2ユーザデータ512を復元する動作が考えられる。しかし、この動作では、第2ユーザデータ512を復元する1つのメモリシステム3へのデータ転送が集中して発生する。
【0163】
これに対して、第1のリビルド動作では、第1メモリシステム3-1から第3メモリシステム3-3に第4XORデータ524が送信され、第3メモリシステム3-3から第4メモリシステム3-4に第5XORデータ525が送信され、第4メモリシステム3-4から第5メモリシステム3-5に第2ユーザデータ512が送信される。これにより、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5の内の特定の1つへのデータ転送が集中して発生することを回避できる。
【0164】
したがって、第1のリビルド動作を行う情報処理システム1では、ホスト2にかかる負荷を軽減しながら、情報処理システム1全体の性能を向上できる。
【0165】
図13は、情報処理システム1における第1のリビルド動作の具体的な例を示すシーケンス図である。
【0166】
まず、ホスト2は、第1XORコマンドを第1メモリシステム3-1に送信する(C1)。
【0167】
第1メモリシステム3-1は、第1XORコマンドを受信したことに応じ、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す(C2)。第1メモリシステム3-1は、第1ユーザデータ511とダミーデータ531とのXOR演算を行って、第4XORデータ524(=第1ユーザデータ511)を生成し、内部バッファ61-1に格納する(C3)。そして、第1メモリシステム3-1は、第1XORコマンドに対する応答をホスト2に送信する(C4)。
【0168】
ホスト2は、第1XORコマンドに対する応答を受信したことに応じ、第2XORコマンドを第3メモリシステム3-3に送信する(C5)。
【0169】
第3メモリシステム3-3は、第2XORコマンドを受信したことに応じ、第1メモリシステム3-1から第4XORデータ524を受信する(C6)。第3メモリシステム3-3は、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す(C7)。第3メモリシステム3-3は、第3ユーザデータ513と第4XORデータ524とのXOR演算を行って、第5XORデータ525を生成し、内部バッファ61-3に格納する(C8)。そして、第3メモリシステム3-3は、第2XORコマンドに対する応答をホスト2に送信する(C9)。
【0170】
ホスト2は、第2XORコマンドに対する応答を受信したことに応じ、第3XORコマンドを第4メモリシステム3-4に送信する(C10)。
【0171】
第4メモリシステム3-4は、第3XORコマンドを受信したことに応じ、第3メモリシステム3-3から第5XORデータ525を受信する(C11)。第4メモリシステム3-4は、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す(C12)。第4メモリシステム3-4は、パリティ51Pと第5XORデータ525とのXOR演算を行って、第2ユーザデータ512を生成し、内部バッファ61-4に格納する(C13)。そして、第4メモリシステム3-4は、第3XORコマンドに対する応答をホスト2に送信する(C14)。
【0172】
ホスト2は、第3XORコマンドに対する応答を受信したことに応じ、ライトコマンドを第5メモリシステム3-5に送信する(C15)。
【0173】
第5メモリシステム3-5は、ライトコマンドを受信したことに応じ、第4メモリシステム3-4から第2ユーザデータ512を受信する(C16)。第5メモリシステム3-5は、第2ユーザデータ512を、第5メモリシステム3-5内のNAND型フラッシュメモリ5に書き込む(C17)。そして、第5メモリシステム3-5は、ライトコマンドに対する応答をホスト2に送信する(C18)。
【0174】
以上の第1のリビルド動作により、情報処理システム1では、ホスト2からメモリシステム3へのリビルド動作のオフロードを実現すると共に、特定のメモリシステム3へのデータ転送が集中して発生することを回避できる。
【0175】
図14は、情報処理システム1における第2のリビルド動作の例を示す。第2のリビルド動作は、第1のリビルド動作と同様に、第2メモリシステム3-2の故障に対処するために、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5でRAIDを再構築するための動作である。
【0176】
ホスト2は、第2メモリシステム3-2が故障した場合、第1XORコマンドを第1メモリシステム3-1に送信する(
図14中の(1))。第1XORコマンドは、第3メモリシステム3-3の識別子をさらに含んでいてもよい。
【0177】
第1メモリシステム3-1は、ホスト2からの第1XORコマンドに応じて、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す。第1メモリシステム3-1は、第1ユーザデータ511とダミーデータ531とのXOR演算により、第4XORデータ524を生成する。第4XORデータ524は、例えば、内部バッファ61-1に格納される。そして、第1メモリシステム3-1は、第2XORコマンドを第3メモリシステム3-3に送信する(
図14中の(2))。第2XORコマンドは、第4メモリシステム3-4の識別子をさらに含んでいてもよい。
【0178】
第3メモリシステム3-3は、第1メモリシステム3-1からの第2XORコマンドに応じて、第1メモリシステム3-1から第4XORデータ524を受信する。第3メモリシステム3-3は、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す。第3メモリシステム3-3は、第3ユーザデータ513と第4XORデータ524とのXOR演算により、第5XORデータ525を生成する。第5XORデータ525は、例えば、内部バッファ61-3に格納される。そして、第3メモリシステム3-3は、第3XORコマンドを第4メモリシステム3-4に送信する(
図14中の(3))。第3XORコマンドは、第5メモリシステム3-5の識別子をさらに含んでいてもよい。
【0179】
第4メモリシステム3-4は、第3メモリシステム3-3からの第3XORコマンドに応じて、第3メモリシステム3-3から第5XORデータ525を受信する。第4メモリシステム3-4は、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す。第4メモリシステム3-4は、パリティ51Pと第5XORデータ525とのXOR演算により、第2ユーザデータ512を生成する。つまり、故障した第2メモリシステム3-2内のNAND型フラッシュメモリ5に格納されていた第2ユーザデータ512が復元される。生成された第2ユーザデータ512は、例えば、内部バッファ61-4に格納される。そして、第4メモリシステム3-4は、第2ユーザデータ512を書き込むことを要求するライトコマンドを第5メモリシステム3-5に送信する(
図14中の(4))。
【0180】
第5メモリシステム3-5は、第4メモリシステム3-4からのライトコマンドに応じて、第4メモリシステム3-4から第2ユーザデータ512を受信する。そして、第5メモリシステム3-5は、第2ユーザデータ512を、第5メモリシステム3-5内のNAND型フラッシュメモリ5に書き込む。
【0181】
以上の第2のリビルド動作により、情報処理システム1では、故障した第2メモリシステム3-2に格納されていた第2ユーザデータ512を復元して、第2メモリシステム3-2から交換される第5メモリシステム3-5に格納できる。そして、この第2のリビルド動作を同様に繰り返すことにより、第2メモリシステム3-2に格納されていた全てのデータを復元し、復元されたデータを第5メモリシステム3-5に格納できる。これにより、情報処理システム1では、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5でRAIDを再構築できる。
【0182】
また、第2のリビルド動作では、第2ユーザデータ512がメモリシステム3のリソースを用いて復元される。また、メモリシステム3間で、データ(すなわち、第4XORデータ524、第5XORデータ525、および第2ユーザデータ512)だけでなく、コマンドも伝送される。そのため、第2のリビルド動作において、ホスト2は第1XORコマンドを第1メモリシステム3-1に送信するだけでよい。したがって、第2のリビルド動作では、ホスト2からメモリシステム3へのリビルド動作のオフロードが実現される。
【0183】
さらに、第2のリビルド動作では、第1メモリシステム3-1から第3メモリシステム3-3に第4XORデータ524が送信され、第3メモリシステム3-3から第4メモリシステム3-4に第5XORデータ525が送信され、第4メモリシステム3-4から第5メモリシステム3-5に第2ユーザデータ512が送信される。これにより、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5の内の特定の1つにデータの転送が集中して発生することを回避できる。
【0184】
したがって、第2のリビルド動作を行う情報処理システム1では、ホスト2にかかる負荷を軽減しながら、情報処理システム1全体の性能を向上できる。
【0185】
図15は、情報処理システム1における第2のリビルド動作の具体的な例を示すシーケンス図である。
【0186】
まず、ホスト2は、第1XORコマンドを第1メモリシステム3-1に送信する(D1)。
【0187】
第1メモリシステム3-1は、第1XORコマンドを受信したことに応じ、第1メモリシステム3-1内のNAND型フラッシュメモリ5から第1ユーザデータ511を読み出す(D2)。第1メモリシステム3-1は、第1ユーザデータ511とダミーデータ531とのXOR演算を行って、第4XORデータ524を生成し、内部バッファ61-1に格納する(D3)。そして、第1メモリシステム3-1は、第2XORコマンドと第4XORデータ524とを第3メモリシステム3-3に送信する(D4)。
【0188】
第3メモリシステム3-3は、第2XORコマンドと第4XORデータ524とを受信したことに応じ、第3メモリシステム3-3内のNAND型フラッシュメモリ5から第3ユーザデータ513を読み出す(D5)。第3メモリシステム3-3は、第3ユーザデータ513と第4XORデータ524とのXOR演算を行って、第5XORデータ525を生成し、内部バッファ61-3に格納する(D6)。そして、第3メモリシステム3-3は、第3XORコマンドと第5XORデータ525とを第4メモリシステム3-4に送信する(D7)。
【0189】
第4メモリシステム3-4は、第3XORコマンドと第5XORデータ525とを受信したことに応じ、第4メモリシステム3-4内のNAND型フラッシュメモリ5からパリティ51Pを読み出す(D8)。第4メモリシステム3-4は、パリティ51Pと第5XORデータ525とのXOR演算を行って、第2ユーザデータ512を生成し、内部バッファ61-4に格納する(D9)。そして、第4メモリシステム3-4は、ライトコマンドと第2ユーザデータ512とを第5メモリシステム3-5に送信する(D10)。
【0190】
第5メモリシステム3-5は、ライトコマンドと第2ユーザデータ512とを受信したことに応じ、第2ユーザデータ512を、第5メモリシステム3-5内のNAND型フラッシュメモリ5に書き込む(D11)。そして、第5メモリシステム3-5は、ライトコマンドに対する応答を第4メモリシステム3-4に送信する(D12)。
【0191】
第4メモリシステム3-4は、ライトコマンドに対する応答を受信したことに応じ、第3XORコマンドに対する応答を第3メモリシステム3-3に送信する(D13)。第3メモリシステム3-3は、第3XORコマンドに対する応答を受信したことに応じ、第2XORコマンドに対する応答を第1メモリシステム3-1に送信する(D14)。第1メモリシステム3-1は、第2XORコマンドに対する応答を受信したことに応じ、第1XORコマンドに対する応答をホスト2に送信する(D15)。
【0192】
以上の第2のリビルド動作により、情報処理システム1では、ホスト2からメモリシステム3へのリビルド動作のオフロードを実現すると共に、特定のメモリシステム3へのデータ転送が集中して発生することを回避できる。
【0193】
なお、第1メモリシステム3-1、第3メモリシステム3-3、第4メモリシステム3-4、第5メモリシステム3-5のそれぞれにおける動作は、例えば、
図2を参照して前述したコマンド受付部141、リード処理部142、XOR処理部143、およびライト処理部144として機能するCPU14によって実現される。
【0194】
一例として、第2のリビルド動作が行われる場合の第1メモリシステム3-1における動作について説明する。
【0195】
図16は、第2のリビルド動作が行われる場合の第1メモリシステム3-1における具体的な動作の例を示す。
【0196】
コマンド受付部141は、ホスト2からの第1XORコマンドを受け付ける(
図16中の(1))。コマンド受付部141は、第1XORコマンドに基づき、第1ユーザデータ511の読み出しを指示するリード指示をリード処理部142に送出する(
図16中の(2))。
【0197】
リード処理部142は、リード指示に応じて、NAND型フラッシュメモリ5から第1ユーザデータ511を読み出す(
図16中の(3))。そして、リード処理部142は、読み出された第1ユーザデータ511をXOR処理部143に送出する(
図16中の(4))。
【0198】
次いで、コマンド受付部141は、第1ユーザデータ511とダミーデータ531とのXOR演算を指示するXOR指示と、ダミーデータ531とを、XOR処理部143に送出する(
図16中の(5))。
【0199】
XOR処理部143は、XOR指示に応じて、第1ユーザデータ511とダミーデータ531とのXOR演算を行って、第4XORデータ524を生成する。XOR処理部143は、生成された第4XORデータ524を内部バッファ61-1に格納する(
図16中の(6))。
【0200】
次いで、コマンド受付部141は、第2XORコマンドを第3メモリシステム3-3に送信する(
図16中の(7))。その後、コマンド受付部141は、第3メモリシステム3-3から、第2XORコマンドに対する応答を受信する(
図16中の(8))。コマンド受付部141は、第2XORコマンドに対する応答を受信したことに応じ、第1XORコマンドに対する応答をホスト2に送信する(
図16中の(9))。
【0201】
同様にして、第3メモリシステム3-3、第4メモリシステム3-4、および第5メモリシステム3-5のそれぞれにおける動作も、コマンド受付部141、リード処理部142、XOR処理部143、およびライト処理部144として機能するCPU14によって実現され得る。
【0202】
以上説明したように、第1および第2実施形態によれば、ホスト2にかかる負荷を軽減しながら、全体の性能を向上できる。
【0203】
第1実施形態に係る情報処理システム1において、第1メモリシステム3-1のコントローラ7は、第1ユーザデータ511を第1メモリシステム3-1内のNAND型フラッシュメモリ5に格納する。第3メモリシステム3-3のコントローラ7は、第3ユーザデータ513を第3メモリシステム3-3内のNAND型フラッシュメモリ5に格納する。第1ユーザデータ511と第3ユーザデータ513とは、1つの誤り訂正符号フレーム51Eの一部を構成する。ホスト2は、第1ユーザデータ511と第3ユーザデータ513とが更新される場合、第1ユーザデータ511から更新された第1更新ユーザデータ511-Uを第1メモリシステム3-1に送信し、第3ユーザデータ513から更新された第3更新ユーザデータ513-Uを第3メモリシステム3-3に送信する。第1メモリシステム3-1のコントローラ7は、少なくとも第1ユーザデータ511と第1更新ユーザデータ511-UのXOR演算を行うことにより、第1XORデータ521を生成し、第1XORデータ521を第3メモリシステム3-3に送信する。第3メモリシステム3-3のコントローラ7は、第3ユーザデータ513と第3更新ユーザデータ513-Uと第1XORデータ521とのXOR演算を行うことにより、第3XORデータ523を生成し、第3XORデータ523を第4メモリシステム3-4に送信する。
【0204】
これにより、ホスト2からメモリシステム3への更新動作のオフロードを実現すると共に、例えば、パリティ51Pを格納している第4メモリシステム3-4へのデータ転送が集中して発生することを回避できる。
【0205】
また、第2実施形態に係る情報処理システム1において、第2メモリシステム3-2のコントローラ7は、第2ユーザデータ512を第2メモリシステム3-2内のNAND型フラッシュメモリ5に格納する。第3メモリシステム3-3のコントローラ7は、第3ユーザデータ513を第3メモリシステム3-3内のNAND型フラッシュメモリ5に格納する。第4メモリシステム3-4のコントローラ7は、パリティ51Pを第4メモリシステム3-4内のNAND型フラッシュメモリ5に格納する。第2ユーザデータ512と第3ユーザデータ513とパリティ51Pとは、1つの誤り訂正符号フレーム51Eの少なくとも一部を構成する。第2メモリシステム3-2が故障した場合、第3メモリシステム3-3のコントローラ7は、第4XORデータ524と第3ユーザデータ513とのXOR演算を行うことにより、第5XORデータ525を生成し、第5XORデータ525を第4メモリシステム3-4に送信する。第4メモリシステム3-4のコントローラ7は、第5XORデータ525とパリティ51PとのXOR演算を行うことにより、第2ユーザデータ512を生成し、生成された第2ユーザデータ512を、故障した第2メモリシステム3-2から交換される第5メモリシステム3-5に送信する。
【0206】
これにより、情報処理システム1では、ホスト2からメモリシステム3へのリビルド動作のオフロードを実現すると共に、特定のメモリシステム3へのデータの転送が集中して発生することを回避できる。
【0207】
第1および第2実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【0208】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0209】
1…情報処理システム、2…ホスト、3,3-1,3-2,3-3,3-4,3-5…メモリシステム、4…スイッチ、5…不揮発性メモリ、6…DRAM、7…コントローラ、11…ホストI/F、12…NAND I/F、13…DRAM I/F、14,21…CPU、22…RAM、31…論理物理アドレス変換テーブル、51D…ユーザデータ、511…第1ユーザデータ、512…第2ユーザデータ、513…第3ユーザデータ、51P…パリティ、51E…ECCフレーム、511-U…第1更新ユーザデータ、513-U…第3更新ユーザデータ、51P-U…更新パリティ、521…第1XORデータ、522…第2XORデータ、523…第3XORデータ、524…第4XORデータ、525…第5XORデータ、531…ダミーデータ、523-P…事前XORデータ。