(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024017667
(43)【公開日】2024-02-08
(54)【発明の名称】情報処理装置および試験方法
(51)【国際特許分類】
G06F 11/22 20060101AFI20240201BHJP
【FI】
G06F11/22 607Z
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2022120470
(22)【出願日】2022-07-28
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】造田 法弥
【テーマコード(参考)】
5B048
【Fターム(参考)】
5B048AA19
(57)【要約】
【課題】ゾーンに書き込まれたデータのデータインテグリティを効率良く評価できる情報処理装置および試験方法を実現する。
【解決手段】プロセッサは、メモリシステムの記憶領域に書き込まれる第1のライトデータのセクタの先頭または末尾に、ゾーン識別子とシーケンス番号とを埋め込む。プロセッサは、ゾーンアペンドコマンドをメモリシステムに発行する。プロセッサは、ゾーンアペンドコマンドの処理の完了を示す応答を受信した場合、第1のライトデータが書き込まれた記憶位置に対応する第1の論理アドレスを、応答から取得する。プロセッサは、第1の期待値テーブルに、ゾーン識別子およびシーケンス番号を、第1の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される第1の期待値として、保存する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
メモリシステムに書き込まれたデータのデータインテグリティの評価に関する試験動作を実行するプロセッサと、
メモリと、を具備し、
前記プロセッサは、
前記メモリシステムの記憶領域に書き込まれる第1のライトデータを、前記メモリに保存し、
前記メモリに保存された前記第1のライトデータのセクタの先頭または末尾に、連続する複数の論理アドレスの集合であるゾーンを一意に識別可能な識別子であるゾーン識別子と、前記論理アドレス毎に一意となる番号であるシーケンス番号とを埋め込み、
前記ゾーンの先頭の論理アドレスと前記第1のライトデータのサイズとを指定し、前記記憶領域に含まれる複数の記憶位置のうちの前記第1のライトデータが書き込まれる記憶位置に対応する論理アドレスを指定せず、且つ前記ゾーンに対応する前記記憶領域への前記第1のライトデータの書き込みを要求するコマンドであるゾーンアペンドコマンドを、前記メモリシステムに発行し、
前記ゾーンアペンドコマンドの処理の完了を示す応答を受信した場合、前記複数の記憶位置のうちの前記第1のライトデータが書き込まれた記憶位置に対応する第1の論理アドレスを、前記応答から取得し、
前記ゾーンに対応するリードデータの期待値を前記論理アドレス毎に保持するテーブルである第1の期待値テーブルに、前記ゾーン識別子および前記シーケンス番号を、前記第1の論理アドレスに対応する前記記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第1の期待値として、保存するように構成される、
情報処理装置。
【請求項2】
前記プロセッサは、
前記第1の論理アドレスを指定し且つ前記第1の論理アドレスに対応する前記記憶位置からのデータの読み出しを要求するコマンドである第1のリードコマンドを前記メモリシステムに発行し、
前記第1のリードコマンドに基づく第1のリードデータを受信した場合、前記第1のリードデータのセクタの先頭または末尾に含まれる情報を、前記第1の期待値テーブルに保存された前記第1の期待値と比較するようにさらに構成される、
請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
前記ゾーンの前記先頭の論理アドレスを指定するゾーンアペンドコマンドが発行される度に前記ゾーンアペンドコマンドによって指定されたライトデータのサイズを累積することによって得られる値である累積シーケンス番号を管理し、
前記累積シーケンス番号に基づいて、前記第1のライトデータの前記セクタの先頭または末尾に埋め込まれる前記シーケンス番号を生成するようにさらに構成される、
請求項1に記載の情報処理装置。
【請求項4】
前記プロセッサは、
前記ゾーンに対応する前記記憶領域の全体に対する書き込みの回数を示す値であるゾーンライトカウントを管理し、
前記ゾーンをエンプティ状態にリセットする度に、前記ゾーンのライトポインタの履歴情報を保持するテーブルであるライトポインタ履歴テーブルに、前記ゾーンにおける次の書き込み可能論理アドレスを示すライトポインタを、ライトポインタ履歴情報として、保存し、
前記ゾーンの前記複数の論理アドレスの各々に対応する記憶位置に対する書き込みの回数を示すライトカウント情報を保持するテーブルである第1のライトカウント情報テーブルが前記メモリに存在しない場合、前記ゾーンライトカウントと、前記ライトポインタ履歴情報とに基づいて、前記ライトカウント情報を復元するようにさらに構成される、
請求項1に記載の情報処理装置。
【請求項5】
前記プロセッサは、
前記第1の論理アドレスをコピー元の論理アドレスとして指定し、第2の論理アドレスをコピー先の論理アドレスとして指定し、且つ前記コピー元の論理アドレスに対応する記憶位置に書き込まれているデータを前記コピー先の論理アドレスに対応する記憶位置にコピーすることを要求するコマンドである第1のコピーコマンドを前記メモリシステムに発行する際、前記コピー先の論理アドレスが属している論理アドレスの集合であるコピー先のゾーンに対応するリードデータの期待値を前記コピー先のゾーンの論理アドレス毎に保持するテーブルである第2の期待値テーブルに、前記ゾーン識別子および前記シーケンス番号を、前記第2の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第2の期待値として、保存するようにさらに構成される、
請求項1に記載の情報処理装置。
【請求項6】
前記ライトカウント情報は、前記論理アドレス毎に、データを書き込むためのコマンドが発行された回数を示すライト発行カウントと、前記論理アドレス毎に、書き込みが完了した回数を示すライト処理カウントと、を含み、
前記プロセッサは、
前記複数の論理アドレスのうちの第3の論理アドレスに対応する記憶位置に書き込まれる第2のライトデータを、前記メモリに保存し、
前記第1のライトカウント情報テーブルに記憶される、前記第3の論理アドレスに対応する第3のライト発行カウントを1だけインクリメントし、
前記メモリに保存された前記第2のライトデータのセクタの先頭または末尾に、前記第3の論理アドレスと、前記インクリメントされた前記第3のライト発行カウントとを埋め込み、
前記第3の論理アドレスと前記第2のライトデータのサイズとを指定し且つ前記第3の論理アドレスに対応する前記記憶位置への前記第2のライトデータの書き込みを要求するコマンドであるライトコマンドを、前記メモリシステムに発行し、
前記ライトコマンドの処理の完了を示す応答を受信した場合、前記第1のライトカウント情報テーブルに記憶される、前記第3の論理アドレスに対応する第3のライト処理カウントを1だけインクリメントするように構成される、
請求項4に記載の情報処理装置。
【請求項7】
前記プロセッサは、
前記第3の論理アドレスを指定し且つ前記第3の論理アドレスに対応する前記記憶位置からのデータの読み出しを要求するコマンドである第2のリードコマンドを前記メモリシステムに発行し、
前記第2のリードコマンドに基づく第2のリードデータを受信した場合、前記第2のリードデータのセクタの先頭または末尾に含まれる論理アドレスおよびライトカウントを、前記第3の論理アドレスおよび前記第1のライトカウント情報テーブルの前記第3のライト処理カウントとそれぞれ比較するようにさらに構成される、
請求項6に記載の情報処理装置。
【請求項8】
前記プロセッサは、
前記第3の論理アドレスをコピー元の論理アドレスとして指定し、第4の論理アドレスをコピー先の論理アドレスとして指定し、且つ前記コピー元の論理アドレスに対応する記憶位置に書き込まれているデータを前記コピー先の論理アドレスに対応する記憶位置にコピーすることを要求するコマンドである第2のコピーコマンドを前記メモリシステムに発行する際、前記コピー先の論理アドレスが属している論理アドレスの集合であるコピー先のゾーンに対応するリードデータの期待値を前記コピー先のゾーンの論理アドレス毎に保持するテーブルである第3の期待値テーブルに、前記第3の論理アドレスを、前記第4の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される第3の期待値として、保存する動作と、前記コピー先のゾーンに含まれる論理アドレス毎に書き込みの回数を示すライトカウント情報を保持するテーブルである第2のライトカウント情報テーブルに、前記第1のライトカウント情報テーブルに記憶される前記第3のライト発行カウントを、前記第4の論理アドレスに対応するライト発行カウントとして、保存する動作と、を実行し、
前記第2のコピーコマンドの完了を示す応答を受信した場合、前記第4の論理アドレスに対応するライト処理カウントを、前記第3の論理アドレスに対応するライト処理カウントと同じ値に設定するように構成される、
請求項6に記載の情報処理装置。
【請求項9】
メモリシステムに書き込まれたデータのデータインテグリティの評価に関する試験動作を実行する試験方法であって、
連続する複数の論理アドレスの集合であるゾーンに対応する前記メモリシステムの記憶領域に書き込まれる第1のライトデータをメモリに保存することと、
前記メモリに保存された前記第1のライトデータのセクタの先頭または末尾に、連続する複数の論理アドレスの集合であるゾーンを一意に識別可能な識別子であるゾーン識別子と、前記論理アドレス毎に一意となる番号であるシーケンス番号とを埋め込むことと、
前記ゾーンの先頭の論理アドレスと前記第1のライトデータのサイズとを指定し、前記記憶領域に含まれる複数の記憶位置のうちの前記第1のライトデータが書き込まれる記憶位置に対応する論理アドレスを指定せず、且つ前記ゾーンに対応する前記記憶領域への前記第1のライトデータの書き込みを要求するコマンドであるゾーンアペンドコマンドを、前記メモリシステムに発行することと、
前記ゾーンアペンドコマンドの処理の完了を示す応答を受信した場合、前記複数の記憶位置のうちの前記第1のライトデータが書き込まれた記憶位置に対応する第1の論理アドレスを、前記応答から取得することと、
前記ゾーンに対応するリードデータの期待値を前記論理アドレス毎に保持するテーブルである第1の期待値テーブルに、前記ゾーン識別子および前記シーケンス番号を、前記第1の論理アドレスに対応する前記記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第1の期待値として、保存することと、を具備する、
試験方法。
【請求項10】
前記第1の論理アドレスを指定し且つ前記第1の論理アドレスに対応する前記記憶位置からのデータの読み出しを要求するコマンドである第1のリードコマンドを前記メモリシステムに発行することと、
前記第1のリードコマンドに基づく第1のリードデータを受信した場合、前記第1のリードデータのセクタの先頭または末尾に含まれる情報を、前記第1の期待値テーブルに保存された前記第1の期待値と比較することと、をさらに具備する、
請求項9に記載の試験方法。
【請求項11】
前記ゾーンの前記先頭の論理アドレスを指定するゾーンアペンドコマンドが発行される度に前記ゾーンアペンドコマンドによって指定されたライトデータのサイズを累積することによって得られる値である累積シーケンス番号を管理することと、
前記累積シーケンス番号に基づいて、前記第1のライトデータの前記セクタの先頭または末尾に埋め込まれる前記シーケンス番号を生成することと、をさらに具備する、
請求項9に記載の試験方法。
【請求項12】
前記ゾーンに対応する前記記憶領域の全体に対する書き込みの回数を示す値であるゾーンライトカウントを管理することと、
前記ゾーンをエンプティ状態にリセットする度に、前記ゾーンのライトポインタの履歴情報を保持するテーブルであるライトポインタ履歴テーブルに、前記ゾーンにおける次の書き込み可能論理アドレスを示すライトポインタを、ライトポインタ履歴情報として、保存することと、
前記ゾーンの前記複数の論理アドレスの各々に対応する記憶位置に対する書き込みの回数を示すライトカウント情報を保持するテーブルである第1のライトカウント情報テーブルが前記メモリに存在しない場合、前記ゾーンライトカウントと、前記ライトポインタ履歴情報とに基づいて、前記ライトカウント情報を復元することと、をさらに具備する、
請求項9に記載の試験方法。
【請求項13】
前記第1の論理アドレスをコピー元の論理アドレスとして指定し、第2の論理アドレスをコピー先の論理アドレスとして指定し、且つ前記コピー元の論理アドレスに対応する記憶位置に書き込まれているデータを前記コピー先の論理アドレスに対応する記憶位置にコピーすることを要求するコマンドである第1のコピーコマンドを前記メモリシステムに発行する際、前記コピー先の論理アドレスが属している論理アドレスの集合であるコピー先のゾーンに対応するリードデータの期待値を前記コピー先のゾーンの論理アドレス毎に保持するテーブルである第2の期待値テーブルに、前記ゾーン識別子および前記シーケンス番号を、前記第2の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第2の期待値として、保存することをさらに具備する、
請求項9に記載の試験方法。
【請求項14】
前記ライトカウント情報は、前記論理アドレス毎に、データを書き込むためのコマンドが発行された回数を示すライト発行カウントと、前記論理アドレス毎に、書き込みが完了した回数を示すライト処理カウントと、を含み、
前記複数の論理アドレスのうちの第3の論理アドレスに対応する記憶位置に書き込まれる第2のライトデータを、前記メモリに保存することと、
前記第1のライトカウント情報テーブルに記憶される、前記第3の論理アドレスに対応する第3のライト発行カウントを1だけインクリメントすることと、
前記メモリに保存された前記第2のライトデータのセクタの先頭または末尾に、前記第3の論理アドレスと、前記インクリメントされた前記第3のライト発行カウントとを埋め込むことと、
前記第3の論理アドレスと前記第2のライトデータのサイズとを指定し且つ前記第3の論理アドレスに対応する前記記憶位置への前記第2のライトデータの書き込みを要求するコマンドであるライトコマンドを、前記メモリシステムに発行することと、
前記ライトコマンドの処理の完了を示す応答を受信した場合、前記第1のライトカウント情報テーブルに記憶される、前記第3の論理アドレスに対応する第3のライト処理カウントを1だけインクリメントすることと、をさらに具備する、
請求項12に記載の試験方法。
【請求項15】
前記第3の論理アドレスを指定し且つ前記第3の論理アドレスに対応する前記記憶位置からのデータの読み出しを要求するコマンドである第2のリードコマンドを前記メモリシステムに発行することと、
前記第2のリードコマンドに基づく第2のリードデータを受信した場合、前記第2のリードデータのセクタの先頭または末尾に含まれる論理アドレスおよびライトカウントを、前記第3の論理アドレスおよび前記第1のライトカウント情報テーブルの前記第3のライト処理カウントとそれぞれ比較することと、をさらに具備する
請求項14に記載の試験方法。
【請求項16】
前記第3の論理アドレスをコピー元の論理アドレスとして指定し、第4の論理アドレスをコピー先の論理アドレスとして指定し、且つ前記コピー元の論理アドレスに対応する記憶位置に書き込まれているデータを前記コピー先の論理アドレスに対応する記憶位置にコピーすることを要求するコマンドである第2のコピーコマンドを前記メモリシステムに発行する際、前記コピー先の論理アドレスが属している論理アドレスの集合であるコピー先のゾーンに対応するリードデータの期待値を前記コピー先のゾーンの論理アドレス毎に保持するテーブルである第3の期待値テーブルに、前記第3の論理アドレスを、前記第4の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第3の期待値として、保存する動作と、前記コピー先のゾーンに含まれる論理アドレス毎に書き込みの回数を示すライトカウント情報を保持するテーブルである第2のライトカウント情報テーブルに、前記第1のライトカウント情報テーブルに記憶される前記第3のライト発行カウントを、前記第4の論理アドレスに対応するライト発行カウントとして、保存する動作と、を実行することと、
前記第2のコピーコマンドの完了を示す応答を受信した場合、前記第4の論理アドレスに対応するライト処理カウントを、前記第3の論理アドレスに対応するライト処理カウントと同じ値に設定することと、をさらに具備する、
請求項14に記載の試験方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置および試験方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを制御するメモリシステムが広く普及している。このようなメモリシステムとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【0003】
SSDのようなメモリシステムの試験として、メモリシステムに書き込んだデータのデータインテグリティの評価に関する試験が行われる場合がある。データインテグリティの評価に関する試験は、メモリシステムに書き込んだデータと同じデータをメモリシステムから正しく読み出すことができるか否かを判定する試験である。
【0004】
最近では、複数のゾーンを管理するように構成されたメモリシステムも開発されている。
【0005】
このため、メモリシステムの試験においては、ゾーンに書き込まれたデータのデータインテグリティを効率良く評価できる技術が必要とされている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第11,307,931号明細書
【特許文献2】特許第5367770号公報
【特許文献3】特開2001-092724号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、ゾーンに書き込まれたデータのデータインテグリティを効率良く評価できる情報処理装置および試験方法を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、情報処理装置は、メモリシステムに書き込まれたデータのデータインテグリティの評価に関する試験動作を実行するプロセッサと、メモリと、を具備する。前記プロセッサは、前記メモリシステムの記憶領域に書き込まれる第1のライトデータを、前記メモリに保存する。前記プロセッサは、前記メモリに保存された前記第1のライトデータのセクタの先頭または末尾に、連続する複数の論理アドレスの集合であるゾーンを一意に識別可能な識別子であるゾーン識別子と、前記論理アドレス毎に一意となる番号であるシーケンス番号とを埋め込む。前記プロセッサは、前記ゾーンの先頭の論理アドレスと前記第1のライトデータのサイズとを指定し、前記記憶領域に含まれる複数の記憶位置のうちの前記第1のライトデータが書き込まれる記憶位置に対応する論理アドレスを指定せず、且つ前記ゾーンに対応する前記記憶領域への前記第1のライトデータの書き込みを要求するコマンドであるゾーンアペンドコマンドを、前記メモリシステムに発行する。前記プロセッサは、前記ゾーンアペンドコマンドの処理の完了を示す応答を受信した場合、前記複数の記憶位置のうちの前記第1のライトデータが書き込まれた記憶位置に対応する第1の論理アドレスを、前記応答から取得する。前記プロセッサは、前記ゾーンに対応するリードデータの期待値を前記論理アドレス毎に保持するテーブルである第1の期待値テーブルに、前記ゾーン識別子および前記シーケンス番号を、前記第1の論理アドレスに対応する前記記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第1の期待値として、保存する。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施形態に係る情報処理装置を含む情報処理システムの構成例を示すブロック図。
【
図2】本発明の実施形態に係るプロセッサの機能構成の例を示すブロック図。
【
図3】本発明の実施形態に係る情報処理装置のメモリに記憶される各種テーブルの例を示すブロック図。
【
図4】本発明の実施形態に係るゾーンの構成例を示すブロック図。
【
図5】本発明の実施形態に係る情報処理装置において管理されるライトポインタを示すブロック図。
【
図6】本発明の実施形態に係る情報処理装置において作成されるライトデータの構成例を示すブロック図。
【
図7】本発明の実施形態に係る情報処理装置において作成されるライトデータの別の構成例を示すブロック図。
【
図8】本発明の実施形態に係るデータコンペア管理テーブルの構成例を示す図。
【
図9】本発明の実施形態に係るLBAライトカウント情報テーブルに記憶されるライト発行カウントとライト処理カウントの各々の更新の例を示す図。
【
図10】本発明の実施形態に係る情報処理装置においてライトコマンドの発行時にデータコンペア管理テーブルエントリおよびLBAライトカウント情報テーブルに設定される値の例を示す図。
【
図11】本発明の実施形態に係る情報処理装置においてライトコマンドの完了時にLBAライトカウント情報テーブルに設定される値の例を示す図。
【
図12】本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの発行時にデータコンペア管理テーブルエントリおよび一時期待値テーブルに設定される値の例を示す図。
【
図13】本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの完了時にLBAライトカウント情報テーブルおよび代替期待値テーブルに設定される値の例を示す図。
【
図14】本発明の実施形態に係る情報処理装置においてコピーコマンドの発行時にコピー先のゾーンに対応するLBAライトカウント情報テーブルおよびコピー先のゾーンに対応する代替期待値テーブルに設定される値の第1の例を示す図。
【
図15】本発明の実施形態に係る情報処理装置においてコピーコマンドの完了時にコピー先のゾーンに対応するLBAライトカウント情報テーブルに設定される値の第1の例を示す図。
【
図16】本発明の実施形態に係る情報処理装置においてコピーコマンドの発行時にコピー先のゾーンに対応するLBAライトカウント情報テーブルおよびコピー先のゾーンに対応する代替期待値テーブルに設定される値の第2の例を示す図。
【
図17】本発明の実施形態に係る情報処理装置においてコピーコマンドの完了時にコピー先のゾーンに対応するLBAライトカウント情報テーブルに設定される値の第2の例を示す図。
【
図18】本発明の実施形態に係る情報処理装置において管理される、ゾーンライトカウントとホストライトポインタ履歴とLBAライトカウントとの関係の例を示す図。
【
図19】本発明の実施形態に係る情報処理装置においてライトコマンドの発行時に実行されるテーブル設定動作の手順を示すフローチャート。
【
図20】本発明の実施形態に係る情報処理装置において実行されるLBAライトカウント情報テーブルの復元動作の手順を示すフローチャート。
【
図21】本発明の実施形態に係る情報処理装置においてライトコマンドの完了時に実行されるテーブル設定動作の手順を示すフローチャート。
【
図22】本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの発行時に実行されるテーブル設定動作の手順を示すフローチャート。
【
図23】本発明の実施形態に係る情報処理装置において実行される、ライトデータのセクタにゾーン番号とアペンドシーケンス番号とを埋め込む動作の手順を示すフローチャート。
【
図24】本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの完了時に実行されるテーブル設定動作の手順を示すフローチャート。
【
図25】本発明の実施形態に係る情報処理装置においてコピーコマンドの発行時に実行されるテーブル設定動作の手順を示すフローチャート。
【
図26】本発明の実施形態に係る情報処理装置においてコピーコマンドの完了時に実行されるテーブル設定動作の手順を示すフローチャート。
【
図27】本発明の実施形態に係る情報処理装置においてリードコマンドの完了時に実行されるデータコンペア動作の手順を示すフローチャート。
【
図28】本発明の実施形態に係る情報処理装置において実行されるライトカウント算出動作の手順を示すフローチャート。
【
図29】本発明の実施形態に係る情報処理装置において実行される、ホストライトポインタ履歴テーブルを使用したライトカウントのコンペア動作の手順を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、図面を参照して、本発明の実施形態を説明する。
【0011】
本発明の実施形態に係る情報処理システムの構成を説明する。
図1は、本発明の実施形態に係る情報処理装置を含む情報処理システムの構成例を示すブロック図である。情報処理システム1は、情報処理装置2と、メモリシステム3とを含む。
【0012】
情報処理装置2は、ホストシステムである。情報処理装置2は、例えば、パーソナルコンピュータである。情報処理装置2は、メモリシステム3にアクセスする。具体的には、情報処理装置2は、データを書き込むためのコマンドであるライトコマンドをメモリシステム3に送信する。また、情報処理装置2は、データを読み出すためのコマンドであるリードコマンドをメモリシステム3に送信する。
【0013】
メモリシステム3は、ストレージデバイスである。メモリシステム3は、例えば、NAND型フラッシュメモリを含むSSDである。
【0014】
情報処理装置2と、メモリシステム3とは、バス4を介して接続可能である。バス4は、例えば、PCI ExpressTMバス(PCIeTMバス)である。バス4は、主として、情報処理装置2からメモリシステム3へのコマンド(I/Oコマンドまたは管理コマンド)の送信と、メモリシステム3から情報処理装置2への応答の送信とのために使用される。I/Oコマンドは、不揮発性メモリに対するデータの書き込みまたは読み出しを行うためのコマンドである。管理コマンドは、メモリシステム3の管理または設定に関する処理の実行を要求するコマンドである。
【0015】
バス4を介した情報処理装置2とメモリシステム3との間の通信は、例えば、NVM ExpressTM(NVMeTM)規格に準拠して実行される。バス4を介した情報処理装置2とメモリシステム3との間の通信においては、メモリシステム3の一つの記憶領域に一つのゾーンが対応する。ゾーンは、連続した複数の論理アドレスの集合である。論理アドレスは、メモリシステム3の記憶領域におけるアクセス対象の記憶位置を論理的に指定するアドレスである。論理アドレスは、メモリシステム3に対するデータの書き込みまたは読み出しを行うために情報処理装置2によって使用される。論理アドレスとしては、論理ブロックアドレス(logical block address:LBA)が使用される。ゾーンは、例えば、NVMe規格で規定されたゾーンド・ネームスペース(ZNS)である。
【0016】
次に、情報処理装置2の内部構成を説明する。情報処理装置2は、プロセッサ21と、メモリ22とを含む。プロセッサ21と、メモリ22とは、バス20に接続されている。
【0017】
プロセッサ21は、CPU(Central Processing Unit)である。プロセッサ21は、バス4を介してメモリシステム3との通信を行う。また、プロセッサ21は、バス20を介して、メモリ22と通信可能に接続されている。プロセッサ21は、メモリ22にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアは、例えば、メモリシステム3から、メモリ22にロードされる。ホストソフトウェアは、オペレーティングシステム、ファイルシステム、デバイスドライバ、アプリケーションプログラムなどを含む。
【0018】
メモリ22は、揮発性のメモリである。メモリ22は、例えば、DRAM(Dynamic Random Access Memory)のようなランダムアクセスメモリである。メモリ22の記憶領域の一部には、転送データバッファ221が割り当てられている。転送データバッファ221は、メモリシステム3に転送されるライトデータを一時的に記憶する記憶領域である。また、転送データバッファ221は、メモリシステム3から転送されるリードデータを一時的に記憶する記憶領域としても利用される。
【0019】
次に、メモリシステム3の内部構成を説明する。メモリシステム3は、コントローラ31と、不揮発性メモリ32とを含む。コントローラ31と、不揮発性メモリ32とは、バス30に接続されている。
【0020】
コントローラ31は、メモリコントローラである。コントローラ31は、例えば、System-on-a-Chip(SoC)のような制御回路である。コントローラ31は、バス30を介して不揮発性メモリ32と通信可能に接続されている。コントローラ31は、不揮発性メモリ32へのデータの書き込みを実行する。コントローラ31は、不揮発性メモリ32からのデータの読み出しを実行する。また、コントローラ31は、バス4を介して外部との通信を実行する。
【0021】
不揮発性メモリ32は、不揮発性のメモリである。不揮発性メモリ32は、例えば、NAND型フラッシュメモリである。不揮発性メモリ32は、例えば、2次元構造のフラッシュメモリ、または3次元構造のフラッシュメモリである。不揮発性メモリ32は、複数のブロックを含む。複数のブロックの各々は、データ消去動作の単位である。データ消去動作は、データを消去する動作である。複数のブロックの各々は、物理ブロック、消去ブロック、フラッシュブロック、またはメモリブロックとも称される。複数のブロックの各々は、複数のページを含む。複数のページの各々は、データ書き込み動作およびデータ読み出し動作の単位である。データ書き込み動作は、不揮発性メモリ32にデータを書き込む動作である。データ読み出し動作は、不揮発性メモリ32からデータを読み出す動作である。複数のページの各々は、同一ワード線に接続された複数のメモリセルを含む。不揮発性メモリ32の一つのブロックまたは複数のブロックが、コントローラ31によって管理される一つのゾーンに、一つのゾーンの物理記憶領域として、割り当てられる。
【0022】
次に、情報処理装置2のプロセッサ21の機能構成について説明する。
図2は、本発明の実施形態に係る情報処理装置のプロセッサの機能構成の例を示すブロック図である。
【0023】
プロセッサ21は、テスト処理部210を含む。テスト処理部210の一部またはすべては、情報処理装置2の別のハードウェアによって実現されてもよい。
【0024】
テスト処理部210は、メモリシステム3に書き込まれたデータのデータインテグリティの評価に関する試験動作を実行する。データインテグリティの評価に関する試験動作は、メモリシステム3に書き込んだデータがメモリシステム3から正しく読み出すことができるか否かを判定する動作である。データインテグリティの評価に関する試験動作は、例えば、試験対象のゾーンにおける論理アドレスに対応する記憶位置に書き込んだデータを正しく読み出すことができるか否かを判定する動作である。テスト処理部210は、複数のゾーンの各々に対応するメモリシステム3の複数の記憶領域の各々に書き込まれたデータを対象として、データインテグリティの評価に関する試験動作を実行する。
【0025】
テスト処理部210は、コマンド制御部211と、データコンペア制御部212とを含む。コマンド制御部211およびデータコンペア制御部212の一部またはすべては、情報処理装置2の別のハードウェアによって実現されてもよい。
【0026】
コマンド制御部211は、メモリシステム3に発行される様々なコマンドを生成する。様々なコマンドには、I/Oコマンドと、管理コマンドとがある。
【0027】
I/Oコマンドには、例えば、ライトコマンドと、リードコマンドと、ゾーンアペンドコマンドと、コピーコマンドとがある。
【0028】
ライトコマンドは、論理アドレスと、ライトデータのサイズとを指定し、且つ指定した論理アドレスに対応する記憶位置へのライトデータの書き込みを要求するコマンドである。ライトコマンドによって指定される論理アドレスは、開始論理アドレス(開始LBA)、または書き込み先の論理アドレスとも称される。具体的には、ライトコマンドは、開始論理アドレス(開始LBA)と、ライトデータのサイズ(転送ブロックサイズ)と、ライトデータが記憶されている転送データバッファ221における記憶位置を示すアドレスとを指定する。開始LBAの上位ビット部は、複数のゾーンのうちの一つのゾーンの先頭の論理アドレスを示す。複数のゾーンの各々の先頭の論理アドレスは、ゾーンスタートLBA(ZSLBA)と称される。開始LBAの上位ビット部によってそのZSLBAが指定されたゾーンは、書き込み先のゾーンとも称される。開始LBAの下位ビット部は、書き込み先のゾーンのZSLBAから書き込み先の最初のセクタ(書き込み先の最初の論理ブロック)までのオフセットを示す。セクタ(論理ブロック)は、一つの論理アドレスに対応するサイズを有するデータの単位である。一つの論理アドレスに対応するサイズ、つまり、セクタのサイズは、例えば、512バイトまたは4096バイトである。例えば、オフセット0x00は、ゾーンの先頭のセクタを示す。ライトデータのサイズ(転送ブロックサイズ)は、書き込まれるセクタの個数(LBAの個数)によって表される。ライトデータは、書き込み先のゾーンに対応するメモリシステム3の記憶領域における記憶位置に書き込まれる。不揮発性メモリ32の一つのブロックまたは幾つかのブロックの集合が、一つのゾーンに対応する一つの記憶領域として利用される。一つの記憶領域は、一つのゾーンに含まれる複数の論理アドレスの数と同数の複数の記憶位置を含む。ライトデータは、書き込み先のゾーンに対応する記憶領域に含まれる複数の記憶位置のうち、開始LBAによって示されるオフセットに対応する記憶位置に書き込まれる。ライトコマンドによって指定される開始LBAに対応する記憶位置に書き込まれるライトデータは、第2のライトデータとも称される。
【0029】
リードコマンドは、論理アドレスを指定し、且つ論理アドレスに対応する記憶位置からのデータの読み出しを要求するコマンドである。リードコマンドによって指定される論理アドレスも、開始論理アドレス(開始LBA)と称される。具体的には、リードコマンドは、論理アドレスと、読み出し対象のデータのサイズと、読み出されたデータが転送される転送データバッファ221における記憶位置を示すアドレスとを指定する。リードコマンドによって指定される論理アドレスの上位ビット部は、一つのゾーンの先頭の論理アドレスを示す。リードコマンドの開始LBAの上位ビット部によってそのZSLBAが指定されたゾーンは、読み出し対象のゾーンとも称される。開始LBAの下位ビット部は、読み出し対象のゾーンのZSLBAから読み出し対象の最初のセクタ(読み出し対象の最初の論理ブロック)までのオフセットを示す。データは、読み出し対象のゾーンに対応する記憶領域に含まれる複数の記憶位置のうち、開始LBAによって示されるオフセットに対応する記憶位置から読み出される。
【0030】
ゾーンアペンドコマンドは、ゾーンの先頭の論理アドレスとライトデータのサイズとを指定し、ゾーンに対応する記憶領域に含まれる複数の記憶位置のうちのライトデータが書き込まれる記憶位置に対応する論理アドレス(開始LBA)を指定せず、且つゾーンに対応する記憶領域へのライトデータの書き込みを要求するコマンドである。つまり、ゾーンアペンドコマンドは、開始LBAを指定せずに、ゾーンの先頭の論理アドレスであるZSLBAを指定するコマンドである。具体的には、ゾーンアペンドコマンドは、ゾーンの先頭の論理アドレスと、ライトデータのサイズと、ライトデータが記憶されている転送データバッファ221における記憶位置を示すアドレスとを指定する。ゾーンアペンドコマンドに基づくライトデータの書き込み動作においては、ゾーンアペンドコマンドによって指定されたZSLBAを有するゾーンにおけるデータの書き込みがシーケンシャルに実行されるように、コントローラ31によってライトデータが書き込まれる記憶位置に対応する論理アドレス(開始LBA)が決定される。換言すれば、ZSLBAを有するゾーンに対応する記憶領域におけるデータの書き込みが論理アドレスの順序でシーケンシャルに実行されるように、ライトデータが書き込まれる記憶位置に対応する論理アドレスが決定される。ゾーンに対応する記憶領域に含まれる複数の記憶位置のうちのライトデータが書き込まれた記憶位置に対応する論理アドレスは、ゾーンアペンドコマンドに対する完了応答によってメモリシステム3から情報処理装置2に報告される。完了応答は、ゾーンアペンドコマンドの処理の完了を示す応答である。以降の説明では、ゾーンアペンドコマンドに関連付けられたライトデータは、第1のライトデータとも称される。また、ゾーンアペンドコマンドに関連付けられたライトデータが書き込まれた記憶位置に対応する論理アドレスは、第1の論理アドレスとも称される。
【0031】
コピーコマンドは、コピー元の論理アドレスに対応する記憶位置に書き込まれているデータをコピー先の論理アドレスに対応する記憶位置にコピーすることを要求するコマンドである。コピーコマンドは、コピー元の論理アドレスと、コピー先の論理アドレスと、コピー対象データのサイズとを指定する。コピー元の論理アドレスに対応する記憶位置からコピー先の論理アドレスに対応する記憶位置へのデータのコピーは、メモリシステム3の内部において実行される。このため、データのコピー動作においては、メモリシステム3から情報処理装置2へのデータの転送と、情報処理装置2からメモリシステム3へのデータの転送は、実行されない。データは、コピー元の論理アドレスが含まれるコピー元のゾーンに対応する記憶領域に含まれる複数の記憶位置のうち、コピー元の論理アドレスに対応する記憶位置から読み出される。読み出されたデータは、コピー先の論理アドレスが含まれるコピー先のゾーンに対応する記憶領域に含まれる複数の記憶位置のうち、コピー先の論理アドレスに対応する記憶位置に書き込まれる。以降の説明では、ゾーンアペンドコマンドに基づいて書き込まれたデータに対応する論理アドレスをコピー元の論理アドレスとして指定するコピーコマンドは、第1のコピーコマンドとも称される。また、ライトコマンドに基づいて書き込まれたデータに対応する論理アドレスをコピー元の論理アドレスとして指定するコピーコマンドは、第2のコピーコマンドとも称される。
【0032】
管理コマンドには、第1のゾーン管理コマンド、第2のゾーン管理コマンド、等がある。
【0033】
第1のゾーン管理コマンドは、ゾーンをエンプティ状態にリセットするコマンドである。エンプティ状態は、ゾーンの先頭の論理アドレス(ZSLBA)から書き込みが開始可能な状態である。
【0034】
第2のゾーン管理コマンドは、ゾーンをフィニッシュするためのコマンドである。ゾーンをフィニッシュするとは、ゾーンへの書き込み動作、つまりゾーンに対応する記憶領域への書き込み動作を終了させることである。
【0035】
コマンド制御部211は、ライトコマンドまたはゾーンアペンドコマンドを使用して、メモリシステム3の記憶領域にデータを書き込む。ライトコマンドを使用してメモリシステム3の記憶領域にデータを書き込む場合、コマンド制御部211は、ライトコマンドを生成し、生成したライトコマンドを後述するサブミッションキューに保存する。また、コマンド制御部211は、メモリシステム3の記憶領域に書き込まれるライトデータ、つまり、ライトコマンドに関連付けられたライトデータを、メモリ22の転送データバッファ221に保存する。そして、コマンド制御部211は、ライトコマンドに関連付けられたライトデータがメモリ22の転送データバッファ221に保存されたことをデータコンペア制御部212に通知する。また、ゾーンアペンドコマンドを使用してメモリシステム3の記憶領域にデータを書き込む場合、コマンド制御部211は、ゾーンアペンドコマンドを生成し、生成したゾーンアペンドコマンドを後述するサブミッションキューに保存する。また、コマンド制御部211は、メモリシステム3の記憶領域に書き込まれるライトデータ、つまり、ゾーンアペンドコマンドに関連付けられたライトデータを、メモリ22の転送データバッファ221に保存する。そして、コマンド制御部211は、ゾーンアペンドコマンドに関連付けられたライトデータがメモリ22の転送データバッファ221に保存されたことをデータコンペア制御部212に通知する。
【0036】
データコンペア制御部212は、ライトデータ生成動作と、データコンペア動作とを実行する。ライトデータ生成動作は、メモリ22の転送データバッファ221に記憶されたライトデータに含まれるセクタの各々の先頭または末尾に、識別情報を埋め込む動作である。識別情報は、メモリシステム3に書き込んだデータのデータインテグリティを評価するために使用される情報である。
【0037】
データコンペア動作は、メモリシステム3から読み出されたデータに含まれるセクタの各々の先頭または末尾に含まれる識別情報と、期待値とを比較する動作である。比較結果に基づき、データコンペア制御部212は、読み出されたデータのデータインテグリティを評価する。識別情報と期待値とが一致した場合、データコンペア制御部212は、論理アドレスに対応するメモリシステム3における記憶位置にデータを書き込むことと、論理アドレスに対応するメモリシステム3における記憶位置からデータを読み出すこととが正常に実行されたと評価する。識別情報と期待値とが一致しない場合、データコンペア制御部212は、論理アドレスに対応するメモリシステム3における記憶位置にデータを書き込むことと、論理アドレスに対応するメモリシステム3における記憶位置からデータを読み出すこととが正常に実行されていないと評価する。
【0038】
次に、ライトデータのセクタに埋め込まれる識別情報について説明する。まず、ライトコマンドに関連付けられたライトデータのセクタに埋め込まれる識別情報について説明する。ライトコマンドに関連付けられたライトデータがメモリ22の転送データバッファ221に保存されたことがコマンド制御部211から通知されると、データコンペア制御部212は、転送データバッファ221に保存されているライトデータのセクタの先頭または末尾に、ライトコマンドによって指定される論理アドレス(SLBA)と、その論理アドレスに対応するライトカウントとを、識別情報として、埋め込む。ライトカウントは、論理アドレス毎に、データを書き込むためのコマンドが発行された回数を示す情報である。次に、ゾーンアペンドコマンドに関連付けられたライトデータのセクタに埋め込まれる識別情報について説明する。ゾーンアペンドコマンドを使用してゾーンに対応する記憶領域にライトデータを書き込むケースにおいては、データコンペア制御部212は、論理アドレスをライトデータのセクタに予め埋め込むことができない。ゾーンアペンドコマンドの処理が完了するまでは、ライトデータが書き込まれた記憶位置に対応する論理アドレスが確定されないからである。このため、ゾーンアペンドコマンドに関連付けられたライトデータがメモリ22の転送データバッファ221に保存されたことがコマンド制御部211から通知されると、データコンペア制御部212は、転送データバッファ221に保存されているライトデータのセクタの先頭または末尾に、ゾーン識別子とシーケンス番号とを、識別情報として埋め込む。ゾーン識別子は、ゾーンを一意に識別可能な識別子である。ゾーン識別子は、例えば、ゾーン番号である。ゾーン番号は、ゾーンアペンドコマンドによって指定されるZSLBAをゾーンサイズで割った商である。以降の説明では。ゾーン番号が、ゾーン識別子としてセクタに埋め込まれる場合を例として説明する。また、シーケンス番号は、ゾーンに含まれる論理アドレス毎に一意となる番号である。シーケンス番号は、ライトデータに含まれるセクタの各々に埋め込まれる。ライトデータのセクタの各々に埋め込まれるシーケンス番号は、書き込まれるセクタの個数(LBAの個数)が1増える毎に1だけインクリメントされる。例えば、最初のシーケンス番号が10であり且つゾーンアペンドコマンドによって書き込まれるセクタの個数(LBAの個数)が3セクタ(3LBA)である場合、ライトデータの1番目のセクタにはシーケンス番号10が埋め込まれ、ライトデータの2番目のセクタにはシーケンス番号11が埋め込まれ、ライトデータの3番目のセクタにはシーケンス番号12が埋め込まれる。同じゾーンのZSLBAを指定する次のゾーンアペンドコマンドに関連付けられたライトデータの最初のセクタには、シーケンス番号13が埋め込まれる。したがって、ゾーンに対応する記憶領域に書き込まれるライトデータのセクタの各々に埋め込まれているシーケンス番号は、ゾーンに含まれるLBA毎に一意となる番号である。以降の説明では、シーケンス番号は、アペンドシーケンス番号と称する。
【0039】
次に、メモリ22に記憶されるテーブルについて説明する。
図3は、本発明の実施形態に係る情報処理装置のメモリに記憶される各種テーブルの例を示すブロック図である。
【0040】
メモリ22は、サブミッションキューテーブル222、コンプリーションキューテーブル223、およびデータコンペア管理テーブル224を記憶する。
【0041】
サブミッションキューテーブル222は、複数のサブミッションキュー(SQ)を含むテーブルである。SQは、コマンドを発行するために使用されるキューである。SQは、複数のスロットを含む。複数のスロットの各々は、一つのコマンドを記憶する記憶領域である。
【0042】
コンプリーションキューテーブル223は、複数のコンプリーションキュー(CQ)を含むテーブルである。CQは、コマンドに対応する完了応答を受信するために使用されるキューである。CQは、複数のスロットを含む。複数のスロットの各々は、完了応答を記憶する記憶領域である。完了応答は、コマンドの処理の完了を示す応答である。完了応答は、例えば、完了したコマンドがフェッチされたSQの識別子(SQID)、完了したコマンドの識別子(CID)、完了したコマンドのステータスを含む。ゾーンアペンドコマンドに対する完了応答は、SQID、CID、ステータスに加え、ゾーンアペンドコマンドに関連付けられたライトデータが書き込まれた記憶位置に対応する論理アドレスを含む。ライトデータが書き込まれた記憶位置に対応する論理アドレスは、ゾーンに対応する記憶領域に含まれる複数の記憶位置それぞれに対応する複数の論理アドレスのうち、ライトデータが書き込まれた最初の記憶位置に対応する論理アドレス(SLBA)である。ライトデータが書き込まれた記憶位置に対応する論理アドレスは、第1の論理アドレスとも称される。
【0043】
データコンペア管理テーブル224は、データコンペア動作に必要な情報を保持するテーブルである。データコンペア管理テーブル224は、例えば、ゾーン毎に、データコンペア動作に必要な情報を保持する。
【0044】
次に、ゾーンについて説明する。
図4は、本発明の実施形態に係るゾーンの構成例を示す図である。
【0045】
図4は、メモリシステム3をアクセスするために情報処理装置2によって使用される論理アドレス空間が、LBA0からLBAz-1までの連続するz個の論理アドレスによって構成される場合を示している。論理アドレス空間は、複数のゾーンに区分される。ゾーンは、連続する複数の論理アドレスの集合である。論理アドレス空間は、例えば、ゾーン#0からゾーン#x-1までのx個のゾーンに区分されている。
【0046】
ゾーン#0は、論理アドレス空間の先頭のゾーンである。ゾーン#0は、LBA 0からLBA m-1までの連続する論理アドレスを含む。ゾーン#0の先頭の論理アドレス、つまり、ゾーン#0の開始論理アドレス(ZSLBA)は、LBA 0である。ゾーン#0のサイズ(LBAの個数)は、mである。
【0047】
ゾーン#1は、ゾーン#0に後続するゾーンである。ゾーン#1は、LBA mからLBA n-1までの連続する論理アドレスを含む。ゾーン#1のZSLBAは、LBA mである。ゾーン#1のサイズは、n-mである。
【0048】
また、ゾーン#x-1は、論理アドレス空間の末尾のゾーンである。ゾーン#x-1は、LBA yからLBA z-1までの連続する論理アドレスを含む。ゾーン#x-1のZSLBAは、LBA yである。ゾーン#x-1のサイズは、z-yである。
【0049】
ゾーン#0からゾーン#x-1までのx個のゾーンは、同じサイズを有する。そのため、
図4における、n、y、およびzは、それぞれmの整数倍の値である。
【0050】
次に、ライトポインタについて説明する。
図5は、本発明の実施形態に係る情報処理装置において管理されるライトポインタを示すブロック図である。
【0051】
ライトポインタは、ゾーン毎に管理される。
図5では、ゾーン#1に対応するライトポインタが示されている。ゾーン#1に対応するライトポインタは、ゾーン#1の次の書き込み可能LBAを示す。ライトポインタの値は、ゾーン#1にデータがシーケンシャルに書き込まれる度に、書き込まれたLBA(セクタ)の個数だけインクリメントされる。
【0052】
ゾーン#1がエンプティ状態である場合、ゾーン#1に対応するライトポインタは、ゾーン#1のZSLBAであるLBA mを示す。LBA mとLBA m+1とによって示される2つの記憶位置にデータが書き込まれると、ライトポインタの値は、LBA m+2に更新される。LBA m+2は、ゾーン#1における未書き込みLBAのうちの最小のLBA、つまりゾーン#1における次の書き込み可能LBAを示す。
【0053】
ライトポインタは、メモリシステム3および情報処理装置2の各々において管理される。以降の説明では、情報処理装置2において管理されるライトポインタをホストライトポインタと称する。
【0054】
次に、ゾーンにデータを書き込むための処理の概要について説明する。プロセッサ21は、ライトコマンドまたはゾーンアペンドコマンドをサブミッションキュー(SQ)のスロットに保存する。プロセッサ21は、ライトコマンドまたはゾーンアペンドコマンドに基づいてメモリシステム3の記憶領域に書き込まれるライトデータをメモリ22の転送データバッファ221に保存する。プロセッサ21は、転送データバッファ221に保存されたライトデータのセクタの先頭または末尾に識別情報を埋め込む。そして、プロセッサ21は、新たなコマンド(ライトコマンドまたはゾーンアペンドコマンド)をサブミッションキューに保存したことをメモリシステム3に通知することで、ライトコマンドまたはゾーンアペンドコマンドをメモリシステム3に発行する。
【0055】
新たなコマンドがサブミッションキューに保存されたことが通知されると、メモリシステム3のコントローラ31は、サブミッションキューをリードアクセスして、サブミッションキューから新たなコマンド(ライトコマンドまたはゾーンアペンドコマンド)をフェッチする。コントローラ31は、転送データバッファ221をリードアクセスして、ライトデータを転送データバッファ221から取得する。フェッチしたコマンドがライトコマンドである場合、コントローラ31は、ライトコマンドによって指定されるSLBAの上位ビット部によって示されるZSLBAを有するゾーンに対応する記憶領域に含まれる複数の記憶位置のうち、指定されたSLBAの下位ビットによって指定されるオフセットによって定められる記憶位置に対応する記憶位置に、取得したライトデータを書き込む。フェッチしたコマンドがゾーンアペンドコマンドである場合、コントローラ31は、ゾーンアペンドコマンドによって指定されるZSLBAを有するゾーンにおけるデータの書き込みがシーケンシャルに実行されるように、ライトデータが書き込まれる記憶位置に対応する論理アドレスを決定する。そして、コントローラ31は、決定した論理アドレスに対応する記憶位置に、取得したライトデータを書き込む。
【0056】
ライトコマンドまたはゾーンアペンドコマンドの処理が完了すると、コントローラ31は、コンプリーションキューをライトアクセスして、完了したコマンドに対応する完了応答をコンプリーションキューに保存する。
【0057】
次に、データをリードする処理の概要について説明する。プロセッサ21は、リードコマンドをサブミッションキュー(SQ)のスロットに保存する。そして、プロセッサ21は、新たなコマンド(リードコマンド)をサブミッションキューに保存したことをメモリシステム3に通知することで、リードコマンドをメモリシステム3に発行する。
【0058】
新たなコマンドがサブミッションキューに保存されたことが通知されると、メモリシステム3のコントローラ31は、サブミッションキューをリードアクセスして、サブミッションキューから新たなコマンド(リードコマンド)をフェッチする。コントローラ31は、リードコマンドによって指定されるリード対象のLBA(開始LBA)に基づいて、リード対象のLBAに対応する記憶位置からデータを読み出す。リードコマンドの処理が完了すると、コントローラ31は、転送データバッファ221にライトアクセスして、読み出したデータを転送データバッファ221に保存する。そして、コントローラ31は、コンプリーションキューをライトアクセスして、完了したリードコマンドに対応する完了応答をコンプリーションキューに保存する。
【0059】
次に、情報処理装置2がメモリシステム3にライトコマンドを発行する場合に作成されるライトデータについて説明する。
図6は、本発明の実施形態に係る情報処理装置において作成されるライトデータの第1の構成例を示すブロック図である。
【0060】
図6は、ゾーン番号0x10のゾーンに含まれる複数の論理アドレスのうちの一つの論理アドレスをSLBAとして指定するライトコマンドを発行する場合に作成されるライトデータの構成を示している。ここでは、SLBAが、ゾーン番号0x10のゾーンのZSLBAを示す場合を想定する。ゾーン番号0x10のゾーンのZSLBAは、例えば、0x10000である。ここで、「0x」は、16進表記であることを表している。
図6に示されるライトデータは、ライトコマンドに基づいてゾーンに対応するメモリシステム3の記憶領域に書き込まれる第2のライトデータである。ライトデータは、メモリ22の転送データバッファ221において作成される。
【0061】
このライトコマンドに関連付けられたライトデータに含まれるセクタの各々には、LBAと、ライトカウントと、が埋め込まれる。例えば、ライトデータのサイズが3セクタ、セクタのサイズが4096バイトである場合、ライトデータにおける0バイト目、4096バイト目、および8192バイト目の各々に、LBAと、ライトカウントと、が埋め込まれる。
【0062】
このライトコマンドによって指定される開始LBAは0x10000であるので、ライトデータのセクタ#0は、ゾーン番号0x10のゾーンの先頭LBA(0x10000)に対応する記憶位置に書き込まれるデータである。このため、ライトデータに含まれるセクタ#0に埋め込まれるLBAの値は、0x10000である。セクタ#0に埋め込まれるライトカウントは、0x10000に対してデータを書き込むこと指示するコマンドが発行された回数を示す。このライトコマンドが発行されるよりも前に、0x10000に対してデータを書き込むこと指示するコマンドが既に1回発行されている場合には、2を示すライトカウントがセクタ#0に埋め込まれる。
【0063】
このように、LBAとライトカウントとが埋め込まれたセクタが、0x10000に対応する記憶位置に書き込まれた場合、0x10000は、通常モードのLBAとして管理される。
【0064】
ライトデータのセクタ#1は、ゾーン番号0x10のゾーンにおける2番目のLBA(0x10001)に対応する記憶位置に書き込まれる。このため、ライトデータに含まれるセクタ#1に埋め込まれるLBAの値は、0x10001である。セクタ#1に埋め込まれるライトカウントは、0x10001に対してデータを書き込むこと指示するコマンドが発行された回数を示す。このライトコマンドが発行されるよりも前に、0x10001に対してデータを書き込むこと指示するコマンドが既に1回発行されている場合には、2を示すライトカウントがセクタ#1に埋め込まれる。
【0065】
このように、LBAとライトカウントとが埋め込まれたセクタが、0x10001に対応する記憶位置に書き込まれた場合、0x10001は、通常モードのLBAとして管理される。
【0066】
ライトデータのセクタ#2は、ゾーン番号0x10のゾーンにおける3番目のLBA(0x10002)に対応する記憶位置に書き込まれる。このため、ライトデータに含まれるセクタ#2に埋め込まれるLBAの値は、0x10002である。セクタ#2に埋め込まれるライトカウントは、0x10002に対してデータを書き込むこと指示するコマンドが発行された回数を示す。このライトコマンドが発行されるよりも前に、0x10002に対してデータを書き込むこと指示するコマンドが既に1回発行されている場合には、2を示すライトカウントがセクタ#2に埋め込まれる。
【0067】
このように、LBAとライトカウントとが埋め込まれたセクタが、0x10002に対応する記憶位置に書き込まれた場合、0x10002は、通常モードのLBAとして管理される。
【0068】
次に、情報処理装置2がメモリシステム3にゾーンアペンドコマンドを発行する場合に作成されるライトデータについて説明する。
図7は、本発明の実施形態に係る情報処理装置において作成されるライトデータの第2の構成例を示す図である。
【0069】
図7は、0x10000を書き込み先ゾーンの先頭のLBAとして指定するゾーンアペンドコマンドを発行する場合に作成されるライトデータの構成を示している。
図7に示されるライトデータは、ゾーンアペンドコマンドに基づいてゾーンに対応するメモリシステム3の記憶領域に書き込まれる第1のライトデータである。
【0070】
このゾーンアペンドコマンドに関連付けられたライトデータに含まれるセクタの各々には、LBAの代わりに、ゾーン番号と、アペンドシーケンス番号と、が埋め込まれる。
【0071】
ゾーン番号は、ライトデータが書き込まれるゾーンを一意に識別可能な番号である。ゾーンアペンドコマンドによって指定されるLBAは、0x10000を示している。このため、ライトデータが書き込まれるゾーンは、ZSLBA(0x10000)を有するゾーン、つまり、ゾーン番号0x10のゾーンである。なお、ゾーン番号は、コマンドによって指定されたLBAをゾーンサイズで割った商によって与えられる。
【0072】
アペンドシーケンス番号は、ゾーン番号0x10のゾーンのLBA毎に一意の値となるシーケンス番号である。アペンドシーケンス番号は、ゾーン番号0x10のゾーンに含まれるLBAの各々の値とは異なる値である。アペンドシーケンス番号としてライトデータに埋め込まれる識別情報のサイズは、例えば、LBAのサイズよりも小さい。アペンドシーケンス番号は、例えば、ゾーン番号0x10のゾーンに対応する累積アペンドシーケンス番号に基づいて生成される。累積アペンドシーケンス番号は、ゾーン番号0x10のゾーンのZSLBAを指定するゾーンアペンドコマンドが発行される度にゾーンアペンドコマンドによって指定されたデータのサイズを累積することによって得られる累積値である。
【0073】
ゾーン番号0x10のゾーンに対応する記憶領域にまだデータが書き込まれていない場合、ライトデータのセクタ#0は、ゾーン番号0x10のゾーンの先頭LBA(0x10000)に対応する記憶位置に書き込まれる。ライトデータのセクタ#0に埋め込まれるゾーン番号は、0x10である。ゾーン番号0x10のゾーンに対応する記憶領域にまだデータが書き込まれていないので、累積アペンドシーケンス番号は、0x00である。このため、セクタ#0に埋め込まれるアペンドシーケンス番号は、0x00である。
【0074】
このように、ゾーン番号とアペンドシーケンス番号とが埋め込まれたセクタが、0x10000に対応する記憶位置に書き込まれた場合、0x10000は、代替モードのLBAとして管理される。
【0075】
ライトデータのセクタ#1は、ゾーン番号0x10のゾーンの2番目のLBA(0x10001)に対応する記憶位置に書き込まれる。ライトデータに含まれるセクタ#1に埋め込まれるゾーン番号は、0x10である。セクタ#1に埋め込まれるアペンドシーケンス番号は、セクタ#0に埋め込まれたアペンドシーケンス番号0x00を1だけインクリメントした値である0x01である。
【0076】
このように、ゾーン番号とアペンドシーケンス番号とが埋め込まれたセクタが、0x10001に対応する記憶位置に書き込まれた場合、0x10001は、代替モードのLBAとして管理される。
【0077】
ライトデータのセクタ#2は、ゾーン番号0x10のゾーンの3番目のLBA(0x10002)に対応する記憶位置に書き込まれる。ライトデータに含まれるセクタ#2に埋め込まれるゾーン番号は、0x10である。セクタ#2に埋め込まれるアペンドシーケンス番号は、セクタ#0に埋め込まれたアペンドシーケンス番号0x00を2だけインクリメントした値である0x02である。
【0078】
このように、ゾーン番号とアペンドシーケンス番号とが埋め込まれたセクタが、0x10002に対応する記憶位置に書き込まれた場合、0x10002は、代替モードのLBAとして管理される。
【0079】
次に、データコンペア管理テーブル224の構成例について説明する。
図8は、本発明の実施形態に係るデータコンペア管理テーブルの構成例を示す図である。
【0080】
データコンペア管理テーブル224は、データコンペア管理ルートテーブル2241と、一時期待値テーブル2242と、ライトポインタ履歴テーブル2243と、ライトカウント情報テーブル2244と、期待値テーブル2245とを含む。以降の説明では、ライトポインタ履歴テーブル2243、ライトカウント情報テーブル2244、および期待値テーブル2245は、ホストライトポインタ履歴テーブル2243、LBAライトカウント情報テーブル2244、および代替期待値テーブル2245とそれぞれ称される。
【0081】
データコンペア管理ルートテーブル2241は、データコンペア管理テーブル224を構成するテーブル群のうちのメインテーブルである。データコンペア管理ルートテーブル2241は、データコンペア管理テーブルヘッダと、一時期待値テーブルアドレスと、複数のデータコンペア管理テーブルエントリとを保持する。
【0082】
データコンペア管理テーブルヘッダは、ゾーンに関する情報を記憶する。ゾーンに関する情報は、例えば、ゾーンの数、ゾーンサイズ、およびゾーンキャパシティ(ZCAP)である。ゾーンの数は、メモリシステム3において管理されているゾーンの個数(ここではN個)である。ゾーンサイズは、ゾーン当たりに含まれるセクタ(LBA)の個数である。ゾーンキャパシティは、ゾーンに対応する記憶領域に書き込むことが可能な容量である。ゾーンキャパシティは、ゾーンサイズ以下の値を有している。なお、
図8では、メモリシステム3において管理されているゾーンのゾーンキャパシティが一様である場合について示されているが、ゾーンキャパシティがゾーン毎に異なっている場合、データコンペア管理ルートテーブル2241は、ゾーン毎にゾーンキャパシティを保持する。
【0083】
一時期待値テーブルアドレスは、一時期待値テーブル2242が記憶されるメモリ22における記憶領域を示すアドレスである。一時期待値テーブルアドレスは、例えば、一時期待値テーブル2242のベースアドレスである。一時期待値テーブル2242のベースアドレスは、一時期待値テーブル2242が記憶されるメモリ22における記憶領域の先頭を示すアドレスである。
【0084】
複数のデータコンペア管理テーブルエントリの各々は、一つのゾーンを管理するために必要な情報である。複数のデータコンペア管理テーブルエントリの各々は、一つのゾーンのゾーン番号に関連付けられている。例えば、ゾーン番号0x00に関連付けられているデータコンペア管理テーブルエントリは、ゾーン番号0x00のゾーンに対応する情報である。また、例えば、ゾーン番号N-1に関連付けられているデータコンペア管理テーブルエントリは、ゾーン番号N-1のゾーンに対応する情報である。一つのデータコンペア管理テーブルエントリは、履歴テーブルアドレスと、ゾーンライトカウントと、ライトポインタカウントと、履歴テーブル最新オフセットと、累積アペンドシーケンス番号と、LBAライトカウント情報テーブルアドレスと、代替期待値テーブルアドレスとを、対応するゾーンを管理するために必要な情報として、含む。
【0085】
履歴テーブルアドレスは、一つのゾーンに対応するホストライトポインタ履歴テーブル2243が記憶されるメモリ22における記憶領域を示すアドレスである。履歴テーブルアドレスは、例えば、ホストライトポインタ履歴テーブル2243のベースアドレスである。ホストライトポインタ履歴テーブル2243のベースアドレスは、ホストライトポインタ履歴テーブル2243が記憶されるメモリ22における記憶領域の先頭を示すアドレスである。
【0086】
ゾーンライトカウントは、一つのゾーンに対応する記憶領域の全体に対する書き込みの回数を示す値である。ゾーンライトカウントは、一つのゾーンに対応する記憶領域に書き込まれたデータのサイズの合計がゾーンキャパシティに達した場合、一つのゾーンがリセットされた場合、または一つのゾーンがフィニッシュされた場合に、1だけインクリメントされる。ゾーンがリセットされると、ゾーンの状態、つまりゾーンに対応する記憶領域の状態は、エンプティ状態に遷移される。そして、ゾーンに対応するライトポインタは、ゾーンのZSLBAを示す値に変更される。
【0087】
ライトポインタカウントは、一つのゾーンに対応するホストライトポインタ履歴テーブル2243のエントリの数を示す値である。ライトポインタカウントは、一つのゾーンに対応するホストライトポインタ履歴テーブル2243の新たなエントリにホストライトポインタの値が保存された場合に、1だけインクリメントされる。
図8において、ライトポインタカウントの値は、Kである。
【0088】
履歴テーブル最新オフセットは、一つのゾーンに対応するホストライトポインタ履歴テーブル2243のエントリを指定する値である。履歴テーブル最新オフセットによって指定されるエントリは、次にホストライトポインタの値が保存されるエントリである。
【0089】
累積アペンドシーケンス番号は、同じZSLBAを指定するゾーンアペンドコマンドによってそれぞれ指定されたデータのサイズを累積することによって得られる累積値である。一つのゾーンのZSLBAを指定するゾーンアペンドコマンドが発行される度、累積アペンドシーケンス番号の値は、発行されたゾーンアペンドコマンドに関連付けられたライトデータのサイズだけインクリメントされる。
【0090】
LBAライトカウント情報テーブルアドレスは、一つのゾーンに対応するLBAライトカウント情報テーブル2244が記憶されるメモリ22における記憶領域を示すアドレスである。LBAライトカウント情報テーブルアドレスは、例えば、LBAライトカウント情報テーブル2244のベースアドレスである。LBAライトカウント情報テーブル2244のベースアドレスは、LBAライトカウント情報テーブル2244が記憶されるメモリ22における記憶領域の先頭を示すアドレスである。
【0091】
代替期待値テーブルアドレスは、一つのゾーンに対応する代替期待値テーブル2245が記憶されるメモリ22における記憶領域を示すアドレスである。代替期待値テーブルアドレスは、例えば、代替期待値テーブル2245のベースアドレスである。代替期待値テーブル2245のベースアドレスは、代替期待値テーブル2245が記憶されるメモリ22における記憶領域の先頭を示すアドレスである。
【0092】
次に、一時期待値テーブル2242を説明する。一時期待値テーブル2242は、SQに保存されるゾーンアペンドコマンド毎に、一時期待値を保持するテーブルである。一時期待値は、ゾーンアペンドコマンドに基づいてメモリシステム3に書き込まれるデータのデータインテグリティを評価するために使用される期待値を生成するために使用される値である。換言すれば、一時期待値は、期待値の種(シード)である。一時期待値としては、ゾーンアペンドコマンドによって指定されるZSLBAを有するゾーンのゾーン番号と、ゾーンアペンドコマンドによって指定されるZSLBAを有するゾーンに対応する累積アペンドシーケンス番号とが使用される。
【0093】
一時期待値テーブル2242は、複数の一時期待値テーブルエントリを有する。複数の一時期待値テーブルエントリの各々は、一つのSQの識別子(SQID)と一つのコマンドID(CID)との組み合わせに対応付けられている。例えば、SQの数がM、SQのサイズがLである場合、一時期待値テーブル2242の一時期待値テーブルエントリの数は、(M-1)とLとの積で表される。M個のSQのうちの一つのSQは、管理コマンドの発行のみに使用されるキューである。このため、一時期待値テーブル2242は、管理コマンドの発行のみに使用されるSQに対応する一時期待値テーブルエントリを有していない。SQのサイズは、SQに含まれるスロットの数に対応する。Mは、例えば、2以上の整数である。Lは、例えば、2以上の整数である。
【0094】
次に、一つのゾーンに対応するホストライトポインタ履歴テーブル2243について説明する。ホストライトポインタ履歴テーブル2243は、ゾーンに対応するライトポインタ(ホストライトポインタ)の履歴情報を保持するテーブルであるライトポインタ履歴テーブルである。ホストライトポインタ履歴テーブル2243は、一つのゾーンに対応するホストライトポインタの値を保持する。ホストライトポインタ履歴テーブル2243は、複数のエントリを含む。エントリの各々は、ホストライトポインタの値を保持する記憶領域である。ホストライトポインタが保存されるエントリは、履歴テーブル最新オフセットによって示される。履歴テーブル最新オフセットは、例えば、対応するゾーンがリセットされた場合、または対応するゾーンがフィニッシュされた場合に、1だけインクリメントされる。また、対応するゾーンへのデータ書き込み動作が進行した場合、履歴テーブル最新オフセットによって示されるエントリに保存されているホストライトポインタの値は、更新される。
【0095】
次に、一つのゾーンに対応するLBAライトカウント情報テーブル2244について説明する。LBAライトカウント情報テーブル2244は、ゾーンに含まれる複数の論理アドレスの各々に対応する記憶位置に対する書き込みの回数を示すライトカウント情報を保持するテーブルである。LBAライトカウント情報テーブル2244は、ライトカウント情報テーブルとも称される。LBAライトカウント情報テーブル2244は、一つのゾーンに含まれる複数のLBAの各々に対応する情報を保持する。LBAライトカウント情報テーブル2244は、複数のLBAライトカウント情報テーブルエントリを含む。LBAライトカウント情報テーブルエントリの各々は、ゾーンに含まれる複数のLBAの一つに対応する。LBAライトカウント情報テーブル2244においては、LBAは、ゾーンのZSLBAから、そのLBAまでのオフセットによって表される。LBAライトカウント情報テーブルエントリは、ライト発行カウントと、ライト処理カウントと、制御モードとを含む。一つのLBAライトカウント情報テーブルエントリにおいて、ライト発行カウントは、LBAライトカウント情報テーブルエントリに関連付けられたLBAに対応する記憶位置にデータを書き込むためのコマンドが発行された回数を示す値である。LBAライトカウント情報テーブルエントリに関連付けられたLBAに対応する記憶位置を、第1の対応記憶位置と呼ぶ。また、第1の対応記憶位置にデータを書き込むためのコマンドを第1のコマンドと呼ぶ。第1のコマンドは、例えば、ライトコマンドである。ライト発行カウントは、第1のコマンドが発行される度に、1だけインクリメントされる。ライト処理カウントは、第1の対応記憶位置に対するデータの書き込み動作が完了した回数を示す値である。ライト処理カウントは、第1のコマンドに対応する完了応答が受信される度に、1だけインクリメントされる。制御モードは、第1の対応記憶位置に対するデータの書き込み動作のモードを示す値である。第1のコマンドがライトコマンドであった場合、制御モードは、通常モードを示す値に設定される。第1のコマンドがゾーンアペンドコマンド、あるいはコピーコマンドであった場合、制御モードは、代替モードを示す値に設定される。LBAライトカウント情報テーブル2244は、第1のライトカウント情報テーブルとも称される。
【0096】
次に、代替期待値テーブル2245について説明する。代替期待値テーブル2245は、ゾーンに対応するリードデータの期待値をゾーンの論理アドレス毎に保持するテーブルである。代替期待値テーブル2245は、期待値テーブルとも称される。ゾーンに対応するリードデータは、ゾーンに対応する記憶領域における記憶位置から読み出されるデータである。リードデータの期待値は、リードデータに含まれるセクタに予め埋め込まれていることが期待される値である。リードデータの期待値は、リードデータに含まれるセクタに予め埋め込まれている識別情報と比較される。比較結果に基づき、リードデータのデータインテグリティの評価が行われる、代替期待値テーブル2245は、対応するゾーンに含まれるLBA毎に、リードデータの期待値を、代替期待値として、保持する。代替期待値テーブル2245においては、LBAは、ゾーンのZSLBAから、そのLBAまでのオフセットによって表される。代替期待値は、関連付けられたLBAに対応する記憶位置に対するデータの書き込み動作がゾーンアペンドコマンドに基づいて実行された場合、一時期待値テーブル2242に保存されている一時期待値に基づいて設定される。また、代替期待値は、関連付けられたLBAに対応する記憶位置に対するデータの書き込みがコピーコマンドに基づいて実行された場合、コピー元データに関する情報に基づいて設定される。
【0097】
次に、ライト発行カウントと、ライト処理カウントとのインクリメントについて説明する。
図9は、本発明の実施形態に係るLBAライトカウント情報テーブル2244に記憶されるライト発行カウントとライト処理カウントの各々の更新の例を示す図である。
【0098】
図9において、ゾーン#0は、オフセット0からオフセット15までの16個のLBAを含む。ゾーン#0にデータが書き込まれていない場合、ゾーン#0に含まれる全てのLBAの各々に対応するライト発行カウントおよびライト処理カウントは、いずれも0である。このとき、二つのライトコマンドが発行される場合を考える。
【0099】
一つ目のライトコマンドのコマンドID(CID)は、0である。一つ目のライトコマンドは、ゾーン#0のZSLBAと、オフセット0と、サイズ8とを指定する。一つ目のライトコマンドがメモリシステム3に発行される際、ゾーン#0のオフセット0からオフセット7までの8個のLBAそれぞれに対応するライト発行カウントは、1だけインクリメントされる。
【0100】
二つ目のライトコマンドのコマンドIDは、1である。二つ目のライトコマンドは、ゾーン#0のZSLBAと、オフセット8と、サイズ8とを指定する。二つ目のライトコマンドが発行される際、ゾーン#0のオフセット8からオフセット15までの8個のLBAそれぞれに対応するライト発行カウントは、1だけインクリメントされる。
【0101】
コマンドIDが0であるライトコマンドに対応する完了応答が受信された場合、ゾーン#0のオフセット0からオフセット7までの8個のLBAのそれぞれに対応するライト処理カウントは、1だけインクリメントされる。
【0102】
コマンドIDが1であるライトコマンドに対応する完了応答が受信された場合、ゾーン#0のオフセット8からオフセット15までの8個のLBAのそれぞれに対応するライト処理カウントは、1だけインクリメントされる。
【0103】
次に、ライトコマンドが発行される際にデータコンペア管理テーブル224に設定される値について説明する。
図10は、本発明の実施形態に係る情報処理装置においてライトコマンドの発行時にデータコンペア管理テーブルエントリおよびLBAライトカウント情報テーブルに設定される値の例を示す図である。
【0104】
発行されるライトコマンドは、ゾーン番号0x02のゾーンにおけるSLBAを指定する。SLBAは、例えば、ゾーン番号0x02のゾーンのオフセット0x00のLBA、つまり、ゾーン番号0x02のゾーンのZSLBAである。このライトコマンドが発行されるより前に、ゾーン番号0x02に対応するゾーンに対するデータ書き込み動作が実行されていない場合を想定する。このような場合には、ゾーン番号0x02のゾーンに対応するホストライトポインタ履歴テーブル2243、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244、およびゾーン番号0x02のゾーンに対応する代替期待値テーブル2245は、まだ作成されていない。そのため、ゾーン番号0x02のゾーンに対応するデータコンペア管理テーブルエントリにおいては、履歴テーブルアドレス、LBAライトカウント情報テーブルアドレス、および代替期待値テーブルアドレスは、未設定である。また、ゾーン番号0x02のゾーンに対応するデータコンペア管理テーブルエントリにおいては、ゾーンライトカウント、ライトポインタカウント、および履歴テーブル最新オフセットは、0を示す値に設定されている。累積アペンドシーケンス番号は、初期値である0x00000に設定されている。
【0105】
ライトコマンドが発行される際に、ゾーン番号0x02に対応するLBAライトカウント情報テーブル2244が作成される。データコンペア管理テーブルエントリのLBAライトカウント情報テーブルアドレスは、作成されたLBAライトカウント情報テーブル2244が記憶されているメモリ22における記憶領域を示す値に設定される。作成されたLBAライトカウント情報テーブル2244のエントリに保持される情報は、いずれも未設定である。
【0106】
ライトコマンドは、SLBA(ここでは、ゾーン番号0x02のゾーンのZSLBA)に加えて、例えば、ライトデータのデータサイズ=3を指定する。そのため、LBAライトカウント情報テーブル2244のオフセット0x00から0x02までの3つのLBAに対応するエントリが更新対象となる。ライトコマンドによって指定されるSLBAは、第3の論理アドレスとも称される。LBAライトカウント情報テーブル2244のオフセット0x00のLBAに対応するエントリのライト発行カウント(WIC)は、1だけインクリメントされる。これにより、オフセット0x00のLBAに対応するエントリのライト発行カウント(WIC)は、0から1に変更される。オフセット0x00のLBAに対応するエントリのライト発行カウント(WIC)は、第3の論理アドレスに対応する第3のライト発行カウントとも称される。オフセット0x00のLBAに対応するエントリのライト処理カウント(WPC)は、0を示す値に維持される。LBAライトカウント情報テーブル2244のオフセット0x01のLBAに対応するエントリのライト発行カウントは、1だけインクリメントされる。これにより、オフセット0x01のLBAに対応するエントリのライト発行カウントは、0から1に変更される。オフセット0x01のLBAに対応するエントリのライト処理カウントは、0を示す値に維持される。LBAライトカウント情報テーブル2244のオフセット0x02のLBAに対応するエントリのライト発行カウントは、1だけインクリメントされる。これにより、オフセット0x02のLBAに対応するエントリのライト発行カウントは、0から1に変更される。オフセット0x02のLBAに対応するエントリのライト処理カウントは、0を示す値に維持される。結果として、オフセット0x00から0x02までの3つのLBAに対応するエントリの各々においては、ライト発行カウント(WIC)が1、ライト処理カウント(WPC)が0、制御モードが未設定である。そして、オフセット0x03以上に対応するエントリについては、いずれも情報が未設定である。
【0107】
ライトコマンドに関連付けられたライトデータをメモリ22の転送データバッファ221に準備する処理においては、転送データバッファ221に記憶されているライトデータの3つのセクタの各々にライトカウントを埋め込むために、LBAライトカウント情報テーブル2244に保持されているライト発行カウントが参照される。
【0108】
次に、ライトコマンドに対応する完了応答が受信された場合にデータコンペア管理テーブル224に設定される値について説明する。
図11は、本発明の実施形態に係る情報処理装置においてライトコマンドの完了時にLBAライトカウント情報テーブルに設定される値の例を示す図である。
【0109】
図10で説明したライトコマンドに対応する完了応答が受信された場合、LBAライトカウント情報テーブル2244のオフセット0x00のLBAに対応するエントリのライト処理カウント(WPC)は、1だけインクリメントされる。これにより、オフセット0x00のLBAに対応するエントリのライト処理カウント(WPC)は、0から1に変更される。オフセット0x00のLBAに対応する制御モードは、通常を示す値に設定される。オフセット0x00のLBAに対応するエントリのライト処理カウント(WPC)は、第3の論理アドレスに対応する第3のライト処理カウントとも称される。さらに、オフセット0x01のLBAに対応するエントリのライト処理カウント(WPC)は、1だけインクリメントされる。これにより、オフセット0x01のLBAに対応するエントリのライト処理カウント(WPC)は、0から1に変更される。オフセット0x01のLBAに対応するエントリの制御モードは、通常を示す値に設定される。またさらに、オフセット0x02のLBAに対応するエントリのライト処理カウントは、1だけインクリメントされる。これにより、オフセット0x02のLBAに対応するエントリのライト処理カウント(WPC)は、0から1に変更される。オフセット0x02のLBAに対応するエントリの制御モードは、通常を示す値に設定される。結果として、オフセット0x00から0x02にまでの3つのLBAに対応するエントリの各々においては、ライト発行カウント(WIC)が1、ライト処理カウント(WPC)が1、制御モードが通常を示す値、に設定される。そして、オフセット0x03以上に対応するエントリについては、いずれも情報が未設定である。
【0110】
データコンペア動作においては、LBAライトカウント情報テーブル2244に設定されているライト処理カウント(WPC)の各々が、リードデータのセクタに埋め込まれているライトカウントと比較される。
【0111】
次に、第3の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティを評価する動作について説明する。第3の論理アドレスに対応する記憶位置は、ライトコマンドに基づいてデータが書き込まれた記憶位置である。ここでは、例えば、ゾーン番号0x02のゾーンのオフセット0x00のLBAに対応する記憶位置が、ライトコマンドに基づいてデータが書き込まれた記憶位置である場合を考える。ゾーン番号0x02のゾーンのオフセット0x00のLBAを指定するライトコマンドに対応する完了応答を受信した後、プロセッサ21は、ゾーン番号0x02のゾーンのオフセット0x00のLBAを指定し且つこのLBAに対応する記憶位置からのデータの読み出しを要求するリードコマンドをメモリシステム3に発行する。このリードコマンドは、第2のリードコマンドとも称される。第2のリードコマンドは、ライトコマンドに基づいて書き込まれたデータの読み出しを要求するリードコマンドである。プロセッサ21は、第2のリードコマンドに基づくリードデータを受信した場合、受信したリードデータのセクタの先頭または末尾に含まれるLBAを、リードコマンドによって指定されたLBAと比較する。また、プロセッサ21は、受信したリードデータのセクタの先頭または末尾に含まれるライトカウントを、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00に対応するエントリに保持されているライト処理カウント(WPC)と比較する。第2のリードコマンドに基づくリードデータは、第3の論理アドレスに対応する記憶位置から読み出されるリードデータである。第2のリードコマンドに基づくリードデータは、第2のリードデータとも称される。そして、プロセッサ21は、比較の結果に基づいて、第2のリードデータのデータインテグリティを評価する。
【0112】
次に、2つのゾーンアペンドコマンドが発行される際にデータコンペア管理テーブル224に設定される値について説明する。
図12は、本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの発行時にデータコンペア管理テーブルエントリおよび一時期待値テーブルに設定される値の例を示す図である。
【0113】
発行される2つのゾーンアペンドコマンドは、いずれもゾーン番号0x02に対応するゾーンのZSLBAを指定する。これら2つゾーンアペンドコマンドが発行されるより前に、ゾーン番号0x02のゾーンに対するデータ書き込み動作が実行されていない場合には、ゾーン番号0x02のゾーンに対応するホストライトポインタ履歴テーブル2243、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244、およびゾーン番号0x02のゾーンに対応する代替期待値テーブル2245は、まだ作成されていない。そのため、ゾーン番号0x02のゾーンに対応するデータコンペア管理テーブルエントリにおいては、履歴テーブルアドレス、LBAライトカウント情報テーブルアドレス、および代替期待値テーブルアドレスは、未設定である。また、ゾーン番号0x02のゾーンに対応するデータコンペア管理テーブルエントリにおいては、ゾーンライトカウント、ライトポインタカウント、および履歴テーブル最新オフセットは、0を示す値に設定されている。累積アペンドシーケンス番号は、初期値である0x00000に設定されている。
【0114】
一つ目のゾーンアペンドコマンドが発行される際に、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244と、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245とがメモリ22に作成される。データコンペア管理テーブルエントリのLBAライトカウント情報テーブルアドレスは、作成されたLBAライトカウント情報テーブル2244が記憶されているメモリ22における記憶領域を示す値に設定される。また、データコンペア管理テーブルエントリの代替期待値テーブルアドレスは、作成された代替期待値テーブル2245が記憶されているメモリ22における記憶領域を示す値に設定される。作成されたLBAライトカウント情報テーブル2244および代替期待値テーブル2245の各エントリに保持されている情報は、いずれも未設定である。
【0115】
一つ目のゾーンアペンドコマンドが、SQID=1のSQにおけるCID=0のスロットに保存された場合、SQID=1およびCID=0の組み合わせに対応する一時期待値テーブル2242のエントリに、一時期待値(ゾーン番号、アペンドシーケンス番号(ASN))が保存される。この場合、SQID=1およびCID=0の組み合わせに対応する一時期待値テーブル2242のエントリには、一つ目のゾーンアペンドコマンドが指定するZSLBAに対応するゾーン番号0x02が保存される。また、SQID=1およびCID=0の組み合わせに対応する一時期待値テーブル2242のエントリには、ゾーン番号0x02に対応するゾーンに対応するデータコンペア管理テーブルエントリに保存されている累積アペンドシーケンス番号0x00000が保存される。また、一つ目のゾーンアペンドコマンドが指定するデータサイズが16である場合、ゾーン番号0x02に対応する累積アペンドシーケンス番号は、16だけインクリメントされる。これにより、ゾーン番号0x02に対応する累積アペンドシーケンス番号は、0x00000から0x00010に変更される。
【0116】
二つ目のゾーンアペンドコマンドが、SQID=1のSQにおけるCID=1のスロットに保存された場合、SQID=1およびCID=1の組み合わせに対応する一時期待値テーブル2242のエントリに、一時期待値(ゾーン番号、アペンドシーケンス番号(ASN))が保存される。この場合、SQID=1およびCID=1の組み合わせに対応する一時期待値テーブル2242のエントリには、二つ目のゾーンアペンドコマンドが指定するZSLBAに対応するゾーン番号0x02が保存される。また、SQID=1およびCID=1の組み合わせに対応する一時期待値テーブル2242のエントリには、ゾーン番号0x02に対応するゾーンに対応するデータコンペア管理テーブルエントリに保存されている累積アペンドシーケンス番号0x00010が保存される。また、二つ目のゾーンアペンドコマンドが指定するデータサイズが16である場合、ゾーン番号0x02に対応する累積アペンドシーケンス番号は、16だけインクリメントされる。これにより、ゾーン番号0x02に対応する累積アペンドシーケンス番号は、0x00010から0x00020に変更される。
【0117】
一つ目のゾーンアペンドコマンドに関連付けられたライトデータをメモリ22の転送データバッファ221に準備する処理においては、転送データバッファ221に記憶されているライトデータに含まれる16個のセクタの各々の先頭または末尾に、ゾーン番号と、アペンドシーケンス番号とが、識別情報として、埋め込まれる。16個のセクタの各々の先頭または末尾に埋め込まれるゾーン番号は、一時期待値テーブル2242のSQID=1、CID=0に対応するエントリに保持されているゾーン番号0x02である。16個のセクタの各々の先頭または末尾にアペンドシーケンス番号を埋め込む際には、一時期待値テーブル2242のSQID=1、CID=0に対応するエントリに保持されているアペンドシーケンス番号がセクタ毎にインクリメントされる。このため、例えば、16個のセクタのうちの最初のセクタの先頭または末尾に埋め込まれるアペンドシーケンス番号は、一時期待値テーブル2242のSQID=1、CID=0に対応するエントリに保持されているアペンドシーケンス番号0x00000である。また、16個のセクタのうちの2番目のセクタの先頭または末尾に埋め込まれるアペンドシーケンス番号は、0x00001である。そして、16個のセクタのうちの最後のセクタの先頭または末尾に埋め込まれるアペンドシーケンス番号は、0x0000Fである。
【0118】
二つ目のゾーンアペンドコマンドに関連付けられたライトデータをメモリ22の転送データバッファ221に準備する処理においては、転送データバッファ221に記憶されているライトデータに含まれる16個のセクタの各々の先頭または末尾に、ゾーン番号と、アペンドシーケンス番号とが、識別情報として埋め込まれる。16個のセクタの各々の先頭または末尾に埋め込まれるゾーン番号は、一時期待値テーブル2242のSQID=1、CID=1に対応するエントリに保持されているゾーン番号0x02である。16個のセクタの各々の先頭または末尾にアペンドシーケンス番号を埋め込む際には、一時期待値テーブル2242のSQID=1、CID=1に対応するエントリに保持されているアペンドシーケンス番号がセクタ毎にインクリメントされる。このため、例えば、16個のセクタのうちの最初のセクタの先頭または末尾に埋め込まれるアペンドシーケンス番号は、一時期待値テーブル2242のSQID=1、CID=1に対応するエントリに保持されているアペンドシーケンス番号0x00010である。また、16個のセクタのうちの2番目のセクタの先頭または末尾に埋め込まれるアペンドシーケンス番号は、0x00011である。16個のセクタのうちの最後のセクタの先頭または末尾に埋め込まれるアペンドシーケンス番号は、0x0001Fである。
【0119】
次に、ゾーンアペンドコマンドに対応する完了応答が受信された場合にデータコンペア管理テーブル224に設定される値ついて説明する。
図13は、本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの完了時にLBAライトカウント情報テーブルおよび代替期待値テーブルに設定される値の例を示す図である。受信される完了応答は、
図12で説明した二つのゾーンアペンドコマンドに対応する二つの完了応答である。
【0120】
ここで、発行された二つのゾーンアペンドコマンドのうち、CID=0に対応する一つ目のゾーンアペンドコマンドよりも、CID=1に対応する二つ目のゾーンアペンドコマンドが先に処理される場合について説明する。
【0121】
二つ目のゾーンアペンドコマンドが一つ目のゾーンアペンドコマンドよりも先に処理されているため、CID=1に対応する二つ目のゾーンアペンドコマンドの完了を示す完了応答が、一つ目の完了応答として、最初に受信される。一つ目の完了応答は、二つ目のゾーンアペンドコマンドがフェッチされたSQID=1と、二つ目のゾーンアペンドコマンドのCID=1と、二つ目のゾーンアペンドコマンドに関連付けられたライトデータが実際に書き込まれた記憶位置に対応するLBAとを含む。二つ目のゾーンアペンドコマンドが最初にメモリシステム3によって処理された場合、二つ目のゾーンアペンドコマンドに関連付けられたライトデータは、ゾーン番号0x02のゾーンのオフセット0x00からオフセット0x0Fまでの16個のLBAにそれぞれ対応する、ゾーン番号0x02のゾーンにおける16個の記憶位置に書き込まれる。このため、一つ目の完了応答に含まれるLBAは、ゾーン番号0x02のオフセット0x00、つまりゾーン番号0x02のゾーンのZSLBAを示す。この場合、ゾーン番号0x02のゾーンのZSLBAは、二つ目のゾーンアペンドコマンドに基づいてライトデータが書き込まれた記憶位置に対応する第1の論理アドレスである。
【0122】
一つ目の完了応答に基づいて、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245のオフセット0x00から0x0Fまでの16個のLBAに対応するエントリには、代替期待値がそれぞれ保存される。ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245は、ゾーン番号0x02のゾーンに対応するリードデータの期待値をゾーン番号0x02のゾーンのLBA毎に保持するテーブルである。代替期待値テーブル2245のエントリの各々に保存される代替期待値は、エントリに関連付けられたLBAに対応する記憶位置から読み出されるリードデータの期待値である。この場合、一時期待値テーブル2242のSQID=1、CID=1に対応するエントリに保存されているゾーン番号とアペンドシーケンス番号とが参照される。
【0123】
例えば、代替期待値テーブル2245のオフセット0x00のLBAに対応するエントリには、ゾーン番号0x02を示す値と、アペンドシーケンス番号0x00010を示す値とを含む代替期待値が、オフセット0x00のLBAに対応するリードデータのデータインテグリティの評価に使用される期待値として、保存される。代替期待値テーブル2245のオフセット0x01のLBAに対応するエントリには、ゾーン番号0x02を示す値と、アペンドシーケンス番号0x00011を示す値とを含む代替期待値が、オフセット0x01のLBAに対応するリードデータのデータインテグリティの評価に使用される期待値として、保存される。そして、代替期待値テーブル2245のオフセット0x0FのLBAに対応するエントリには、ゾーン番号0x02を示す値と、アペンドシーケンス番号0x0001Fを示す値とを含む代替期待値が、オフセット0x0FのLBAに対応するリードデータのデータインテグリティの評価に使用される期待値として、保存される。このように、代替期待値テーブル2245のオフセット0x01からオフセット0x0Fまでの15個のLBAに対応するエントリには、ゾーン番号0x02を示す値と、アペンドシーケンス番号0x00010を一つのLBAごとに1ずつインクリメントした番号を示す値(0x00011から0x0001F)とを含む代替期待値がそれぞれ保存される。
【0124】
また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00から0x0Fまでの16個のLBAに対応するエントリの各々に保持されているライト処理カウント(WPC)がそれぞれ1だけインクリメントされる。ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244は、ゾーン番号0x02のゾーンの複数のLBAの各々に対応する書き込みの回数(例えば、ライト処理カウント)を保持するテーブルである。また、LBAライトカウント情報テーブル2244においては、オフセット0x00からオフセット0x0Fまでの16個のLBAに対応するエントリの各々に保持されている制御モードは、代替を示す値に設定される。これにより、オフセット0x00から0x0Fまでの16個のLBAに対応するエントリの各々において、ライト発行カウントが0、ライト処理カウントが1、制御モードが代替を示す値、に設定される。
【0125】
次いで、一つ目のゾーンアペンドコマンドの完了を示す完了応答が、二つ目の完了応答として受信される。二つ目の完了応答は、一つ目のゾーンアペンドコマンドがフェッチされたSQID=1と、二つ目のゾーンアペンドコマンドのCID=0と、一つ目のゾーンアペンドコマンドに関連付けられたライトデータが実際に書き込まれた記憶位置に対応するLBAとを含む。二つ目のゾーンアペンドコマンドの後に一つ目のゾーンアペンドコマンドがメモリシステム3によって処理された場合、一つ目のゾーンアペンドコマンドに関連付けられたライトデータは、ゾーン番号0x02のゾーンのオフセット0x10からオフセット0x1Fまでの16個のLBAにそれぞれ対応する16個の記憶位置に書き込まれる。このため、二つ目の完了応答に含まれるLBAは、ゾーン番号0x02のオフセット0x10を示す。
【0126】
二つ目の完了応答に基づいて、代替期待値テーブル2245のオフセット0x10から0x1Fまでの16個のLBAに対応するエントリには、代替期待値がそれぞれ保存される。この場合、一時期待値テーブル2242のSQID=1、CID=0に対応するエントリに保存されているゾーン番号とアペンドシーケンス番号とが参照される。
【0127】
例えば、代替期待値テーブル2245のオフセット0x10のLBAに対応するエントリには、ゾーン番号0x02を示す値と、アペンドシーケンス番号0x00000を示す値とを含む代替期待値が、オフセット0x10のLBAに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値として、保存される。代替期待値テーブル2245のオフセット0x11からオフセット0x1Fまでの15個のLBAに対応するエントリには、ゾーン番号0x02を示す値と、アペンドシーケンス番号0x00000を一つのLBAごとに1ずつインクリメントした番号を示す値(0x00001から0x0000F)とを含む代替期待値がそれぞれ保存される。
【0128】
また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x10から0x1Fまでの16個のLBAに対応するエントリの各々に保持されているライト処理カウント(WPC)がそれぞれ1だけインクリメントされる。また、オフセット0x10からオフセット0x1Fまでの16個のLBAに対応するエントリの各々に保持されている制御モードは、代替を示す値に設定される。これにより、オフセット0x10から0x1Fまでの16個のLBAに対応するエントリの各々において、ライト発行カウントが0、ライト処理カウントが1、制御モードが代替を示す値、に設定される。
【0129】
制御モードが代替を示す値に設定されているLBAに対応する記憶位置から読み出されたデータに対するデータコンペア動作においては、代替期待値テーブル2245に保存されている代替期待値が、リードデータのセクタに埋め込まれている識別情報と比較される。例えば、ゾーン番号0x02のゾーンのオフセット0x00に対応するLBAに対応する記憶位置からデータが読み出された場合、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245のオフセット0x00に対応するエントリに保持されている代替期待値(ゾーン番号、アペンドシーケンス番号)が、リードデータのセクタに埋め込まれている識別情報(ゾーン番号、アペンドシーケンス番号)と比較される。ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245は、第1の期待値テーブルとも称される。また、ゾーン番号0x02のゾーンにおける第1の論理アドレスに対応する代替期待値テーブル2245のエントリの各々に記憶される代替期待値は、第1の期待値とも称される。第1の期待値は、第1の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244は、第1のライトカウント情報テーブルとも称される。
【0130】
次に、第1の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティを評価する動作について説明する。第1の論理アドレスに対応する記憶位置は、ゾーンアペンドコマンドに基づいてデータが書き込まれた記憶位置である。ここでは、例えば、ゾーン番号0x02のゾーンのオフセット0x00のLBAに対応する記憶位置が、ゾーンアペンドコマンドに基づいてデータが書き込まれた記憶位置である場合を考える。プロセッサ21は、ゾーン番号0x02のゾーンのオフセット0x00のLBAを指定し且つこのLBAに対応する記憶位置からのデータの読み出しを要求するリードコマンドをメモリシステム3に発行する。このリードコマンドは、第1のリードコマンドとも称される。プロセッサ21は、第1のリードコマンドに基づくリードデータを受信した場合、受信したリードデータのセクタの先頭または末尾に含まれる情報を、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245のオフセット0x00に対応するエントリに保持されている代替期待値(ゾーン番号、アペンドシーケンス番号)と比較する。第1のリードコマンドに基づくリードデータは、第1の論理アドレスに対応する記憶位置から読み出されるリードデータである。第1のリードコマンドに基づくリードデータは、第1のリードデータとも称される。そして、プロセッサ21は、比較の結果に基づいて、第1のリードデータのデータインテグリティを評価する。
【0131】
次に、ライトコマンドに基づいてデータが書き込まれた記憶位置に対応するLBAをコピー元のLBAとして指定するコピーコマンドが発行される際にデータコンペア管理テーブル224に設定される値について説明する。
図14は、本発明の実施形態に係る情報処理装置においてコピーコマンドの発行時にコピー先のゾーンに対応するLBAライトカウント情報テーブルおよびコピー先のゾーンに対応する代替期待値テーブルに設定される値の第1の例を示す図である。
【0132】
発行されるコピーコマンドによって指定されるコピー元のLBAは、例えば、ゾーン番号0x02のゾーンのオフセット0x00のLBA、つまりゾーン番号0x02のゾーンのZSLBA(=0x20000)である。また、発行されるコピーコマンドによって指定されるコピー先のLBAは、例えば、ゾーン番号0x08のゾーンのオフセット0x00のLBA、つまりゾーン番号0x00のゾーンのZSLBA(=0x80000)である。また、発行されるコピーコマンドによって指定されるデータサイズは、例えば、3である。発行されるコピーコマンドは、ライトコマンドに基づいてデータが書き込まれた記憶位置に対応するLBAをコピー元のLBAとして指定するコピーコマンドである。このため、発行されるコピーコマンドは、第2のコピーコマンドとも称される。また、発行されるコピーコマンドによって指定されるコピー先のLBAは、第4の論理アドレスとも称される。このため、例えば、ゾーン番号0x08のゾーンのオフセット0x00のLBAは、第4の論理アドレスである。
【0133】
コピーコマンドが発行される前に、ゾーン番号0x02のゾーンのオフセット0x00から0x02の3つのLBAそれぞれに対応する3つの記憶位置にライトコマンドに基づくデータが書き込まれている。そのため、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00から0x02の3つのLBAに対応するエントリの各々においては、ライト発行カウント(WIC)が1、ライト処理カウント(WPC)が1、制御モードが通常を示す値、に設定されている。
【0134】
コピーコマンドを発行する際に、コピー先のゾーンに対応する代替期待値テーブル2245に、コピーコマンドによって指定されるコピー元のLBAが、コピー先のLBAに対応する代替期待値として保存される。コピー先のゾーンは、ゾーン番号0x08のゾーンである。このため、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245に、代替期待値が保存される。ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245は、第3の期待値テーブルとも称される。例えば、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x00のLBAに対応するエントリには、コピーコマンドによって指定されたコピー元のLBAである0x20000が保存される。また、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x01のLBAに対応するエントリには、コピー元のLBAを1だけインクリメントした値である0x20001が保存される。またさらに、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x02のLBAに対応するエントリには、コピー元のLBAを2だけインクリメントした値である0x20002が保存される。0x20000、0x20001、0x20002の各々は、第3の期待値とも称される。第3の期待値は、コピー先のLBAに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である。つまり、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のエントリの各々には、コピー元のLBAが、コピー先のLBAに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される第3の期待値として、保存される。
【0135】
また、コピー先のLBAに対応するライト発行カウント(WIC)は、コピー元のLBAに対応するライト発行カウント(WIC)と同じ値に設定される。コピー元のLBA(0x20000)は、ゾーン番号0x02のゾーンのオフセット0x00のLBAである。また、コピー先のLBA(0x80000)は、ゾーン番号0x08のゾーンのオフセット0x00のLBAである。したがって、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のエントリからWICが読み出される。読み出されたWICは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のエントリに設定される。ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244は、ゾーン番号0x02のゾーンに含まれる論理アドレス毎に書き込みの回数を示すライトカウント情報を保持するテーブルである第1のライトカウント情報テーブルとも称される。また、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244は、ゾーン番号0x08のゾーンに含まれる論理アドレス毎に書き込みの回数を示すライトカウント情報を保持するテーブルである第2のライトカウント情報テーブルとも称される。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のエントリからWICが読み出される。読み出されたWICは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のエントリに保存される。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のエントリからWICが読み出される。読み出されたWICは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のエントリに保存される。結果として、0x80000から0x80002までの3つのLBAに対応するWICは、0x20000から0x20002までの3つのLBAに対応するWICと同じ値(ここでは、1)に設定される。ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01(またはオフセット0x02)のエントリに保存されるWICは、第4の論理アドレスに対応するライト発行カウントとも称される。
【0136】
次に、コピーコマンドに対応する完了応答が受信された場合にデータコンペア管理テーブル224に設定される値について説明する。
図15は、本発明の実施形態に係る情報処理装置においてコピーコマンドの完了時にコピー先のゾーンに対応するLBAライトカウント情報テーブルに設定される値の第1の例を示す図である。
【0137】
受信された完了応答が
図14で説明したコピーコマンドに対応する完了応答である場合、コピー先のLBAに対応するライト処理カウント(WPC)は、コピー元のLBAに対応するライト処理カウント(WPC)と同じ値に設定される。この場合、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のエントリからWPCが読み出される。読み出されたWPCは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のエントリに保存される。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のエントリからWPCが読み出される。読み出されたWPCは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のエントリに保存される。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のエントリからWPCが読み出される。読み出されたWPCは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のエントリに保存される。結果として、0x80000から0x80002までの3つのLBAに対応するWPCは、0x20000から0x20002までの3つのLBAに対応するWPCと同じ値(ここでは、1)に設定される。ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244の例えばオフセット0x00のエントリに保存されるWPCは、第4の論理アドレスに対応するライト処理カウントとも称される。
【0138】
そして、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のLBAに対応するエントリの制御モードは、代替を示す値に設定される。また、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のLBAに対応するエントリの制御モードは、代替を示す値に設定される。またさらに、ゾーン番号0x08に対応するゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のLBAに対応するエントリの制御モードは、代替を示す値に設定される。
【0139】
制御モードが代替を示す値に設定されているLBAに対応する記憶位置から読み出されたデータに対するデータコンペア動作においては、対応する代替期待値テーブル2245に設定されている代替期待値(LBA)が、リードデータのセクタに埋め込まれているLBAと比較される。例えば、ゾーン番号0x08のゾーンのオフセット0x00に対応するLBAに対応する記憶位置からデータが読み出された場合を考える。この場合、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x00に対応するエントリに保持されているLBAが、リードデータのセクタに埋め込まれているLBAと比較される。また、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00に対応するエントリに保持されているWPCが、リードデータのセクタに埋め込まれているライトカウントと比較される。
【0140】
次に、ゾーンアペンドコマンドに基づいてデータが書き込まれた記憶位置に対応するLBAをコピー元のLBAとして指定するコピーコマンドが発行される際にデータコンペア管理テーブル224に設定される値について説明する。
図16は、本発明の実施形態に係る情報処理装置においてコピーコマンドの発行時にコピー先のゾーンに対応するLBAライトカウント情報テーブルおよびコピー先のゾーンに対応する代替期待値テーブルに設定される値の第2の例を示す図である。
【0141】
発行されるコピーコマンドによって指定されるコピー元のLBAは、例えば、ゾーン番号0x02のゾーンのオフセット0x00のLBA、つまりゾーン番号0x02のゾーンのZSLBA(=0x20000)である。また、発行されるコピーコマンドによって指定されるコピー先のLBAは、例えば、ゾーン番号0x08のゾーンのオフセット0x00のLBA、つまりゾーン番号0x00のゾーンのZSLBA(=0x80000)である。また、発行されるコピーコマンドによって指定されるデータサイズは、例えば、3である。発行されるコピーコマンドは、ゾーンアペンドコマンドに基づいてデータが書き込まれた記憶位置に対応するLBAをコピー元のLBAとして指定するコピーコマンドである。このため、発行されるコピーコマンドは、第1のコピーコマンドとも称される。また、発行されるコピーコマンドによって指定されるコピー先のLBAは、第2の論理アドレスとも称される。このため、例えば、ゾーン番号0x08のゾーンのオフセット0x00のLBAは、第2の論理アドレスである。
【0142】
コピーコマンドが発行される前に、ゾーン番号0x02のゾーンのオフセット0x00から0x02の3つのLBAそれぞれに対応する3つの記憶位置にゾーンアペンドコマンドに基づくデータが書き込まれている。そのため、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00から0x02の3つのLBAに対応するエントリの各々においては、ライト発行カウント(WIC)が0、ライト処理カウント(WPC)が1、制御モードが代替を示す値、に設定されている。
【0143】
また、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245のオフセット0x00から0x02の3つのLBAに対応するエントリの各々においては、3つのLBの各々に対応するリードデータの期待値が、代替期待値として、保存されている。オフセット0x00のLBAに対応するエントリにおいては、ゾーン番号0x002と、ゾーンアペンドシーケンス番号0x00010とが、オフセット0x00のLBAに対応するリードデータの期待値として保存されている。また、オフセット0x01のLBAに対応するエントリにおいては、ゾーン番号0x002と、ゾーンアペンドシーケンス番号0x00011とが、オフセット0x01のLBAに対応するリードデータの期待値として保存されている。また、オフセット0x02のLBAに対応するエントリにおいては、ゾーン番号0x002と、ゾーンアペンドシーケンス番号0x00012とが、オフセット0x02のLBAに対応するリードデータの期待値として保存されている。
【0144】
コピーコマンドが発行される際、コピー元のLBAに対応する代替期待値(つまり、コピー元のLBAに対応するリードデータの期待値)は、コピー元のゾーンに対応する代替期待値テーブル2245からコピー先のゾーンに対応する代替期待値テーブル2245に、コピー先のLBAに対応する代替期待値として、コピーされる。コピー元のゾーンは、ゾーン番号0x02のゾーンである。コピー元のLBAは、ゾーン番号0x02のゾーンのオフセット0x00のLBAである。また、コピー先のゾーンは、ゾーン番号0x08のゾーンである。コピー先のLBAは、ゾーン番号0x08のゾーンのオフセット0x00のLBAである。このため、ゾーン番号0x02のゾーンのオフセット0x00のLBAに対応する代替期待値(0x02,0x0010)が、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245から読み出される。そして、読み出された代替期待値は、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x00のLBAに対応するエントリに保存される。また、ゾーン番号0x02のゾーンのオフセット0x01のLBAに対応する代替期待値(0x02,0x0011)が、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245から読み出される。そして、読み出された代替期待値は、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x01のLBAに対応するエントリに保存される。さらに、ゾーン番号0x02のゾーンのオフセット0x02のLBAに対応する代替期待値(0x02,0x0012)が、ゾーン番号0x02のゾーンに対応する代替期待値テーブル2245から読み出される。そして、読み出された代替期待値は、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x02のLBAに対応するエントリに保存される。ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245は、第2の期待値テーブルとも称される。また、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245の例えばオフセット0x00のLBAに対応するエントリに保存される代替期待値は、第2の期待値とも称される。第2の期待値は、第2の論理アドレスに対応する記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である。
【0145】
次に、コピーコマンドに対応する完了応答が受信された際にデータコンペア管理テーブル224に設定される値について説明する。
図17は、本発明の実施形態に係る情報処理装置においてコピーコマンドの完了時にコピー先のゾーンに対応するLBAライトカウント情報テーブルに設定される値の第2の例を示す図である。
【0146】
受信された完了応答が
図16で説明したコピーコマンドに対応する完了応答である場合、コピー先のLBAに対応するライト処理カウント(WPC)は、コピー元のLBAに対応するライト処理カウント(WPC)と同じ値に設定される。この場合、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のエントリからWPCが読み出される。読み出されたWPCは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のエントリに保存される。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のエントリからWPCが読み出される。読み出されたWPCは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のエントリに保存される。また、ゾーン番号0x02のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のエントリからWPCが読み出される。読み出されたWPCは、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のエントリに保存される。
【0147】
そして、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x00のLBAに対応するエントリの制御モードは、代替を示す値に設定される。また、ゾーン番号0x08のゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x01のLBAに対応するエントリの制御モードは、代替を示す値に設定される。またさらに、ゾーン番号0x08に対応するゾーンに対応するLBAライトカウント情報テーブル2244のオフセット0x02のLBAに対応するエントリの制御モードは、代替を示す値に設定される。
【0148】
制御モードが代替を示す値に設定されているLBAに対応する記憶位置から読み出されたデータに対するデータコンペア動作においては、対応する代替期待値テーブル2245に保存されている代替期待値が、リードデータのセクタに埋め込まれている識別情報と比較される。例えば、ゾーン番号0x08のゾーンのオフセット0x00に対応するLBAに対応する記憶位置からデータが読み出された場合を考える。この場合、ゾーン番号0x08のゾーンに対応する代替期待値テーブル2245のオフセット0x00に対応するエントリに保持されている代替期待値(ゾーン番号、アペンドシーケンス番号)が、リードデータのセクタに埋め込まれている識別情報(ゾーン番号、アペンドシーケンス番号)と比較される。
【0149】
次に、ホストライトポインタ履歴テーブル2243について説明する。
図18は、本発明の実施形態に係るホストライトポインタ履歴テーブルの例を示す図である。ホストライトポインタ履歴テーブル2243のエントリは、対応するゾーンがリセットされた場合、あるいはフィニッシュされた場合に追加される。このとき、ゾーンライトカウントも、1だけインクリメントされる。
【0150】
まず、対応するゾーンのオフセット0から3までの4つのLBAに対応する4つの記憶位置に対してデータの書き込み動作が実行される。オフセット0から3までの4つのLBAの各々に対応する書き込み回数(ライト処理カウント)は、1に設定される。オフセット4から7までの4つのLBAの各々に対応するライト処理カウントは、0である。ライトポインタWP(ホストライトポインタ)は、4に更新される。WP=4は、次の書き込み可能LBAが、オフセット4のLBAであることを示す。このとき、対応するゾーンがリセットされた場合を考える。
【0151】
ゾーンライトカウントは、1だけインクリメントされる。これにより、ゾーンライトカウントは、0から1に変更される。ホストライトポインタ履歴テーブル2243の0番目のエントリに、ゾーンがリセットされる直前のライトポインタWPの値(ここでは、4)が、ライトポインタ履歴情報として、保存される。ライトポインタWPの値は、0に戻される。履歴テーブル最新オフセットは、1だけインクリメントされる。また、ホストライトポインタ履歴テーブル2243のライトポインタ履歴情報は、後に昇順に並べ替えられる。
【0152】
次いで、対応するゾーンのオフセット0から5までの6つのLBAに対応する6つの記憶位置に対してデータの書き込み動作が実行される。オフセット0から3までの4つのLBAに対応するライト処理カウントは、2に設定される。オフセット4およびオフセット5の2つのLBAに対応するライト処理カウントは、1に設定される。オフセット6およびオフセット7の2つのLBAに対応するライト処理カウントは、0である。ライトポインタWPの値は、6に更新される。このとき、対応するゾーンがリセットされた場合を考える。
【0153】
ゾーンライトカウントは、1だけインクリメントされる。これにより、ゾーンライトカウントは、1から2に変更される。ホストライトポインタ履歴テーブル2243の1番目のエントリに、ゾーンがリセットされる直前のライトポインタWPの値(ここでは、6)が、ライトポインタ履歴情報として、保存される。ライトポインタWPの値は、0に戻される。履歴テーブル最新オフセットは、1だけインクリメントされる。
【0154】
次いで、対応するゾーンのオフセット0のLBAに対応する記憶位置に対してデータの書き込み動作が実行される。オフセット0のLBAに対応するライト処理カウントは、3に設定される。オフセット1およびオフセット3の2つのLBAに対応するライト処理カウントは、2である。オフセット4およびオフセット5の2つのLBAに対応するライト処理カウントは、1である。オフセット6およびオフセット7の2つのLBAに対応するライト処理カウントは、0である。ライトポインタWPの値は、1に更新される。このとき、対応するゾーンがリセットされた場合を考える。
【0155】
ゾーンライトカウントは、1だけインクリメントされる。これにより、ゾーンライトカウントは、2から3に変更される。ホストライトポインタ履歴テーブル2243の3番目のエントリに、ゾーンがリセットされる直前のライトポインタWPの値(ここでは、1)が、ライトポインタ履歴情報として、保存される。ライトポインタWPの値は、0に戻される。履歴テーブル最新オフセットは、1だけインクリメントされる。
【0156】
例えば、ここで、ホストライトポインタ履歴テーブル2243のライトポインタ履歴情報が、エントリに保存されている値が昇順になるように、並べ替えられる。これにより、ホストライトポインタ履歴テーブル2243の0番目のエントリには1を示す値が保存され、1番目のエントリには4を示す値が保存され、2番目のエントリには6を示す値が保存される。
【0157】
次いで、対応するゾーンのオフセット0から7までの8つのLBAに対応する8つの記憶位置に対してデータの書き込み動作が実行される。オフセット0のLBAに対応するライト処理カウントは、4に設定される。オフセット1から3までの3つのLBAに対応するライト処理カウントは、3に設定される。オフセット4およびオフセット5の2つのLBAに対応するライト処理カウントは、2に設定される。オフセット6およびオフセット7の2つのLBAに対応するライト処理カウントは、1に設定される。ライトポインタWPの値は、8に更新される。このとき、対応するゾーンに書き込まれたデータのサイズの合計がゾーンキャパシティに達したため、ゾーンライトカウントが、4にインクリメントされる。ホストライトポインタ履歴テーブル2243の4番目のエントリに、8を示す値が、ライトポインタ履歴情報として、保存される。
【0158】
なお、ここでは、ゾーンの末尾のLBAに対応する記憶位置までデータ書き込み動作が実行された場合を説明したが、ゾーンの途中のLBAに対応する記憶位置までデータ書き込み動作が実行された状態でゾーンがリセットまたはフィニッシュされた場合も、ホストライトポインタ履歴テーブル2243の4番目のエントリに、8を示す値が、ライトポインタ履歴情報として、保存される。また、ゾーンライトカウントも、4にインクリメントされる。
【0159】
このように、ゾーンの途中のLBAに対応する記憶位置までデータ書き込み動作が実行された状態でゾーンをリセットする動作を繰り返した場合、小さいLBAのライト処理カウントが大きくなる。また、ライト処理カウントの変化点は、ライトポインタ履歴情報から決定することができる。このため、LBAライトカウント情報テーブル2244が記憶されるメモリ22における記憶領域は、必要に応じて、解放できる。ゾーンライトカウントと、ライトポインタ履歴情報とに基づいて、LBAライトカウント情報テーブル2244を復元できるからである。LBAライトカウント情報テーブル2244を復元する手順については後述する。
【0160】
次に、ライトコマンドを発行する際のデータコンペア管理テーブル224の設定動作の手順について説明する。
図19は、本発明の実施形態に係る情報処理装置においてライトコマンドの発行時に実行されるテーブル設定動作の手順を示すフローチャートである。
【0161】
メモリ22の転送データバッファ221にライトデータを保存し且つライトコマンドをサブミッションキューに保存すると(開始)、プロセッサ21は、ライトコマンドが指定するZSLBAが含まれるゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在しているか否かを判定する(S11)。
【0162】
ライト対象のゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在していない場合(S11No)、プロセッサ21は、メモリ22において、ライト対象のゾーンのゾーンキャパシティに対応する個数のエントリを有するLBAライトカウント情報テーブル2244に使用される記憶領域を確保する(S12)。
【0163】
プロセッサ21は、ライト対象のゾーンに対応するデータコンペア管理テーブルエントリを参照して、ゾーンライトカウントが0より大きいか否かを判定する(S13)。
【0164】
ゾーンライトカウントが0より大きい場合(S13Yes)、プロセッサ21は、LBAライトカウント情報テーブル復元処理を実行する(S14)。LBAライトカウント情報テーブル復元処理は、ゾーンライトカウントと、ライトポインタ履歴情報とに基づいて、ライト対象のゾーンに含まれるLBAそれぞれのライトカウント(ライト処理カウント)を復元する処理である。
【0165】
ゾーンライトカウントが0である場合(S13No)、プロセッサ21は、ライト対象のゾーンに対応するLBAライトカウント情報テーブル2244のエントリの各々を初期化する(S15)。
【0166】
S14の手順、またはS15の手順を実行した後、あるいはライト対象のゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在している場合(S11Yes)、プロセッサ21は、ライトコマンドによって指定されたLBAに対応するライト発行カウントをそれぞれ1だけインクリメントする(S16)。
【0167】
プロセッサ21は、メモリ22の転送データバッファ221に記憶されているライトデータのセクタそれぞれの先頭または末尾に、LBAとライト発行カウントとを埋め込む(S17)。
【0168】
プロセッサ21は、ライトコマンドをサブミッションキューに保存したことをメモリシステム3に通知することで、ライトコマンドをメモリシステム3に発行する(S18)。そして、プロセッサ21は、テーブル設定動作を終了する(終了)。
【0169】
次に、
図19のS14において実行されるLBAライトカウント情報テーブル復元処理の手順について説明する。
図20は、本発明の実施形態に係る情報処理装置において実行されるLBAライトカウント情報テーブルの復元処理の手順を示すフローチャートである。
【0170】
作成されるLBAライトカウント情報テーブル2244に対応するゾーンのゾーンライトカウントが1以上である場合(開始)、プロセッサ21は、変数Aを初期値(ここでは、0)に設定する(S21)。
【0171】
プロセッサ21は、Aがゾーンキャパシティの値未満であるか否かを判定する(S22)。
【0172】
Aがゾーンキャパシティの値未満の値である場合(S22Yes)、プロセッサ21は、変数Bを初期値(ここでは0)に設定する(S23)。
【0173】
プロセッサ21は、Bがホストライトポインタカウントの値以下であるか否かを判定する(S24)。
【0174】
Bがホストライトポインタカウントの値以下である場合(S24Yes)、プロセッサ21は、対象のゾーンのZSLBAとAとの和が、ホストライトポインタ履歴テーブル2243のB番目のエントリの値未満であるか否かを判定する(S25)。B番目のエントリの値は、B番目のエントリにライトポインタ履歴情報として記憶されているライトポインタ(ホストライトポインタ)の値である。
【0175】
ZSLBAとAとの和が、B番目のエントリの値未満である場合(S25Yes)、プロセッサ21は、対象のゾーンのZSLBAとAとの和に対応するライト発行カウントおよびライト処理カウントを、対象のゾーンに対応するゾーンライトカウントからBを引いた値に設定する(S26)。
【0176】
プロセッサ21は、Aを1だけインクリメントし(S27)、S22の手順を実行する。
【0177】
ZSLBAとAとの和が、B番目のエントリの値以上である場合(S25No)、プロセッサ21は、Bを1だけインクリメントし(S28)、S24の手順を実行する。
【0178】
Bがライトポインタカウントの値よりも大きい場合(S24でNo)、プロセッサ21は、Aを1だけインクリメントし(S27)、S22の手順を実行する。
【0179】
Aがゾーンキャパシティの値以上である場合(S22No)、プロセッサ21は、LBAライトカウント情報テーブル復元処理を終了する(終了)。
【0180】
次に、ライトコマンドに対応する完了応答を受信した際のデータコンペア管理テーブル224の設定動作の手順について説明する。
図21は、本発明の実施形態に係る情報処理装置においてライトコマンドの完了時に実行されるテーブル設定動作の手順を示すフローチャートである。
【0181】
ライトコマンドに対応する完了応答を受信すると(開始)、プロセッサ21は、完了応答が対応するライトコマンドが指定するLBAに対応するライト処理カウントをそれぞれ1だけインクリメントする(S31)。
【0182】
プロセッサ21は、完了応答が対応するライトコマンドが指定するゾーン番号に対応するゾーンに対して書き込まれたデータの総サイズがゾーンキャパシティに到達したか否かを判定する(S32)。
【0183】
対応するゾーンに対して書き込まれたデータの総サイズがゾーンキャパシティに到達した場合(S32Yes)、プロセッサ21は、対応するゾーンのゾーンライトカウントを1だけインクリメントする(S33)。
【0184】
プロセッサ21は、対応するゾーンに含まれるLBAに対応する制御モードがいずれも通常を示す値に設定されているか否かを判定する(S34)。
【0185】
対応するゾーンに含まれるLBAに対応する制御モードがいずれも通常である場合(S34Yes)、プロセッサ21は、対応するゾーンに対応するLBAライトカウント情報テーブル2244を解放し(S35)、テーブル設定動作を終了する(終了)。
【0186】
対応するゾーンに含まれるLBAのうち、いずれかのLBAに対応する制御モードが代替を示す値に設定されている場合(S34No)、プロセッサ21は、ホストライトポインタの値をホストライトポインタ履歴テーブル2243に保存し、ホストライトポインタ履歴テーブル2243のエントリの値が昇順になるように並べ替えを実行し(S36)、テーブル設定動作を終了する(終了)。
【0187】
対応するゾーンに対して書き込まれたデータの総サイズがゾーンキャパシティに到達していない場合(S32No)、プロセッサ21は、S33以降の手順をスキップし、テーブル設定動作を終了する(終了)。
【0188】
次に、ゾーンアペンドコマンドを発行する際のデータコンペア管理テーブル224の設定動作の手順について説明する。
図22は、本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの発行時に実行されるテーブル設定動作の手順を示すフローチャートである。
【0189】
メモリ22の転送データバッファ221にライトデータを保存し且つゾーンアペンドコマンドをサブミッションキューに保存すると(開始)、プロセッサ21は、ゾーンアペンドコマンドが指定するZSLBAが含まれるゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在しているか否かを判定する(S401)。
【0190】
ライト対象のゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在していない場合(S401No)、プロセッサ21は、メモリ22において、ライト対象のゾーンのゾーンキャパシティに対応するエントリを有するLBAライトカウント情報テーブル2244に使用される記憶領域を確保する(S402)。
【0191】
プロセッサ21は、ライト対象のゾーンに対応するデータコンペア管理テーブルエントリを参照して、ゾーンライトカウントが0より大きいか否かを判定する(S403)。
【0192】
ゾーンライトカウントが0より大きい場合(S403Yes)、プロセッサ21は、LBAライトカウント情報テーブル復元処理を実行する(S404)。
【0193】
ゾーンライトカウントが0である場合(S403No)、プロセッサ21は、ライト対象のゾーンに対応するLBAライトカウント情報テーブル2244のエントリの各々を初期化する(S405)。
【0194】
S404の手順、またはS405の手順を実行した後、あるいはライト対象のゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在している場合(S401Yes)、プロセッサ21は、ライト対象のゾーンに対応するデータコンペア管理テーブルエントリから、累積アペンドシーケンス番号を取得する(S406)。
【0195】
プロセッサ21は、ゾーンアペンドコマンドが保持されているサブミッションキューに対応するサブミッションキューID(SQID)およびゾーンアペンドコマンドが保持されているサブミッションキューのスロットに対応するコマンドID(CID)に対応する、一時期待値テーブル2242のエントリに、S406で取得した累積アペンドシーケンス番号をアペンドシーケンス番号として設定し、さらにゾーンアペンドコマンドが指定するゾーン番号を設定する(S407)。
【0196】
プロセッサ21は、ライト対象のゾーンに対応するデータコンペア管理テーブルエントリに保持されている累積アペンドシーケンス番号を、ゾーンアペンドコマンドが指定するライトデータのサイズ分加算する(S408)。
【0197】
プロセッサ21は、転送データバッファ設定処理を実行する(S409)。
【0198】
プロセッサ21は、ゾーンアペンドコマンドをサブミッションキューに保存したことをメモリシステム3に通知することで、ゾーンアペンドコマンドをメモリシステム3に発行する(S410)。そして、プロセッサ21は、テーブル設定動作を終了する(終了)。
【0199】
次に、
図22におけるS409の手順で実行される転送データバッファ設定動作の手順について説明する。
図23は、本発明の実施形態に係る情報処理装置において実行される、ライトデータのセクタにゾーン番号とアペンドシーケンス番号とを埋め込む動作の手順を示すフローチャートである。
【0200】
ライト対象のゾーンに対応するデータコンペア管理テーブルエントリに保持されている累積アペンドシーケンス番号を、ゾーンアペンドコマンドが指定するライトデータのサイズ分加算する手順(
図22におけるS408)が完了すると(開始)、プロセッサ21は、ゾーンアペンドコマンドに対応するSQIDおよびCIDに対応する一時期待値テーブル2242のエントリから、アペンドシーケンス番号と、ゾーン番号とを取得する(S51)。
【0201】
プロセッサ21は、変数Aを初期値(ここでは0)に設定する(S52)。
【0202】
プロセッサ21は、Aがゾーンアペンドコマンドに関連付けられたライトデータのサイズ未満であるか否かを判定する(S53)。
【0203】
Aがライトデータのサイズ未満である場合(S53Yes)、プロセッサ21は、転送データバッファ221に記憶されているライトデータのうち、A番目のセクタに対応するライトデータのセクタの先頭または末尾に、ゾーン番号、およびアペンドシーケンス番号とAとの和を設定する(S54)。
【0204】
プロセッサ21は、Aを1だけインクリメントし(S55)、Aがゾーンアペンドコマンドに関連付けられたライトデータのサイズ未満であるか否かを判定する(S53)。
【0205】
Aがライトデータのサイズ以上である場合(S53No)、プロセッサ21は、処理を終了する(終了)。
【0206】
次に、ゾーンアペンドコマンドに対応する完了応答を受信した際のデータコンペア管理テーブル224の設定動作の手順について説明する。
図24は、本発明の実施形態に係る情報処理装置においてゾーンアペンドコマンドの完了時に実行されるテーブル設定動作の手順を示すフローチャートである。
【0207】
ゾーンアペンドコマンドに対応する完了応答を受信すると(開始)、プロセッサ21は、受信した完了応答に含まれている、ライトデータが書き込まれた先頭のLBAを示す情報を取得する(S61)。
【0208】
プロセッサ21は、受信した完了応答に対応するゾーンアペンドコマンドに対応するSQIDおよびCIDに対応する一時期待値テーブル2242のエントリから、ゾーン番号およびアペンドシーケンス番号を含む期待値を取得する(S62)。
【0209】
プロセッサ21は、S61で取得した先頭のLBAに対応する代替期待値テーブル2245のエントリに、S62で取得した期待値を設定する(S63)。
【0210】
プロセッサ21は、変数Aを初期値(ここでは1)に設定する(S64)。
【0211】
プロセッサ21は、Aがゾーンアペンドコマンドに関連付けられたライトデータのサイズ未満であるか否かを判定する(S65)。
【0212】
Aがライトデータのサイズ未満である場合(S65Yes)、プロセッサ21は、S61で取得した先頭LBAとAとの和に対応する代替期待値テーブル2245のエントリに、ゾーン番号、および先頭LBAに対応するアペンドシーケンス番号とAとの和を含む期待値を設定する(S66)。
【0213】
プロセッサ21は、Aを1だけインクリメントする(S67)。
【0214】
Aがライトデータのサイズ以上である場合(S65No)、プロセッサ21は、データの書き込み動作が実行された記憶位置に対応するLBAに対応するLBAライトカウント情報テーブル2244の制御モードを、代替を示す値に設定する(S68)。
【0215】
プロセッサ21は、データの書き込み動作が実行されたLBAに対応するLBAライトカウント情報テーブル2244のライト処理カウントを、1だけインクリメントする(S69)。そして、プロセッサ21は、テーブル設定動作を終了する(終了)。
【0216】
次に、コピーコマンドを発行する際のデータコンペア管理テーブル224の設定動作の手順について説明する。
図25は、本発明の実施形態に係る情報処理装置においてコピーコマンドの発行時に実行されるテーブル設定動作の手順を示すフローチャートである。
【0217】
コピーコマンドをサブミッションキューに保存すると(開始)、プロセッサ21は、コピーコマンドがコピー先アドレスとして指定するLBAが含まれるゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在しているか否かを判定する(S701)。
【0218】
ライト対象のゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在していない場合(S701No)、プロセッサ21は、メモリ22において、ライト対象のゾーンのゾーンキャパシティに対応するエントリを有するLBAライトカウント情報テーブル2244に使用される記憶領域を確保する(S702)。
【0219】
プロセッサ21は、ライト対象のゾーンに対応するデータコンペア管理テーブルエントリを参照して、ゾーンライトカウントが0より大きいか否かを判定する(S703)。
【0220】
ゾーンライトカウントが0より大きい場合(S703Yes)、プロセッサ21は、LBAライトカウント情報テーブル復元処理を実行する(S704)。
【0221】
ゾーンライトカウントが0である場合(S703No)、プロセッサ21は、ライト対象のゾーンに対応するLBAライトカウント情報テーブル2244のエントリを初期化する(S705)。
【0222】
S704の手順、またはS705の手順を実行した後、あるいはライト対象のゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在している場合(S701Yes)、プロセッサ21は、変数Aを初期値(ここでは0)に設定し、変数Bをコピー元アドレスの先頭のLBAを示す値に設定する(S706)。
【0223】
プロセッサ21は、Aがコピーコマンドによって指定されるデータのサイズ(コピー長)未満であるか否かを判定する(S707)。
【0224】
Aがコピー長未満である場合(S707Yes)、プロセッサ21は、変数Cをコピーコマンドによって指定されるコピー先アドレスの先頭のLBAを示す値に設定する(S708)。
【0225】
プロセッサ21は、CとAとの和によって示されるLBAに対応するライト発行カウントを、BとAとの和によって示されるLBAに対応するライト発行カウントと同じ値に設定する(S709)。
【0226】
プロセッサ21は、BとAとの和によって示されるLBAに対応する制御モードが、通常であるか否かを判定する(S710)。
【0227】
BとAとの和によって示されるLBAに対応する制御モードが、通常である場合(S710Yes)、プロセッサ21は、CとAとの和によって示されるLBAに対応する代替期待値テーブル2245のエントリに、BとAとの和を期待値として設定する(S711)。
【0228】
BとAとの和によって示されるLBAに対応する制御モードが、代替である場合(S710No)、プロセッサ21は、CとAとの和によって示されるLBAに対応する代替期待値テーブル2245のエントリに、BとAとの和によって示されるLBAに対応する代替期待値テーブル2245のエントリに保持されている期待値を設定する(S712)。この場合、プロセッサ21は、BとAとの和によって示されるLBAに対応する代替期待値テーブル2245のエントリから期待値を読み出す処理と、読み出した期待値をCとAとの和によって示されるLBAに対応する代替期待値テーブル2245のエントリに保存する処理とを実行する。
【0229】
プロセッサ21は、Aを1だけインクリメントし(S713)、Aがコピー長未満であるか否かを判定する(S707)。
【0230】
Aがコピー長以上である場合(S707No)、プロセッサ21は、コピーコマンドをサブミッションキューに保存したことをメモリシステム3に通知することで、コピーコマンドをメモリシステム3に発行する(S714)。そして、プロセッサ21は、テーブル設定動作を終了する(終了)。
【0231】
次に、コピーコマンドに対応する完了応答を受信した際のデータコンペア管理テーブル224の設定動作の手順について説明する。
図26は、本発明の実施形態に係る情報処理装置においてコピーコマンドの完了時に実行されるテーブル設定動作の手順を示すフローチャートである。
【0232】
コピーコマンドに対応する完了応答を受信すると(開始)、プロセッサ21は、受信した完了応答に対応するコピーコマンドによって指定されるコピー先アドレスに含まれるLBAに対応するライト処理カウントを、コピー元アドレスに含まれるLBAに対応するライト処理カウントと同じ値に設定する(S801)。
【0233】
プロセッサ21は、コピー先アドレスに含まれるLBAに対応する制御モードを、代替を示す値に設定する(S802)。
【0234】
プロセッサ21は、データコンペア管理テーブル224の制御を終了する(終了)。
【0235】
次に、データコンペア動作の手順について説明する。
図27は、本発明の実施形態に係る情報処理装置においてリードコマンドの完了時に実行されるデータコンペア動作の手順を示すフローチャートである。
【0236】
リードコマンドに対応する完了応答を受信すると(開始)、プロセッサ21は、受信した完了応答に対応するリードコマンドによって指定されたLBAが含まれるゾーンに対応するLBAライトカウント情報テーブル2244がメモリ22に存在しているか否かを判定する(S901)。
【0237】
LBAライトカウント情報テーブル2244がメモリ22に存在している場合(S901Yes)、プロセッサ21は、リード対象のLBAに対応するライト処理カウントが0よりも大きいか否かを判定する(S902)。
【0238】
ライト処理カウントが0である場合(S902No)、プロセッサ21は、コンペア動作を終了する(終了)。
【0239】
ライト処理カウントが0よりも大きい場合(S902Yes)、プロセッサ21は、リード対象のLBAに対応する制御モードが通常であるか否かを判定する(S903)。
【0240】
制御モードが通常である場合(S903Yes)、プロセッサ21は、リードデータのセクタの先頭または末尾に埋め込まれたLBAと、リードコマンドによって指定されたLBAとを比較する(S904)。
【0241】
制御モードが代替である場合(S903No)、プロセッサ21は、セクタの先頭または末尾に埋め込まれたアペンドシーケンス番号およびゾーン番号(またはLBA)と、リードコマンドに指定されたLBAに対応する代替期待値テーブル2245のエントリに保持された期待値とを比較する(S905)。
【0242】
LBAライトカウント情報テーブル2244がメモリ22に存在していない場合(S901No)、プロセッサ21は、リードコマンドによって指定されたLBAが含まれるゾーンに対応するゾーンライトカウントが0よりも大きいか否かを判定する(S906)。
【0243】
ゾーンライトカウントが0よりも大きい場合(S906Yes)、プロセッサ21は、ライトカウント算出フラグを1に設定する(S907)。ライトカウント算出フラグは、ホストライトポインタ履歴テーブル2243に基づいてLBAライトカウント情報テーブル復元処理を実行することを示す値である。プロセッサ21は、リードデータのセクタの先頭または末尾に埋め込まれたLBAと、リードコマンドによって指定されたLBAとを比較する(S904)。
【0244】
ゾーンライトカウントが0である場合(S906No)、プロセッサ21は、コンペア動作を終了する(終了)。
【0245】
S904の手順、あるいはS905の手順を完了すると、プロセッサ21は、S904あるいはS905で比較された情報が一致していたか否かを判定する(S908)。
【0246】
比較された情報が一致していた場合(S908Yes)、プロセッサ21は、ライト算出フラグが0であるか否かを判定する(S909)。
【0247】
ライト算出フラグが0である場合(S909Yes)、プロセッサ21は、リード対象のLBAに対応するLBAライトカウント情報テーブル2244のエントリに保持されているライト処理カウントと、リードデータのセクタの先頭または末尾に埋め込まれたライトカウントとを比較する(S910)。
【0248】
ライト算出フラグが1である場合(S909No)、プロセッサ21は、リード対象のLBAに対応するライトカウント算出処理を実行する(S911)。
【0249】
プロセッサ21は、S911で算出されたライトカウントと、リードデータのセクタの先頭または末尾に埋め込まれたライトカウントとを比較する(S912)。
【0250】
S910あるいはS912の手順が完了すると、プロセッサ21は、S910あるいはS912で比較されたライトカウントが一致したか否かを判定する(S913)。
【0251】
比較されたライトカウントが一致した場合(S913Yes)、プロセッサ21は、リードデータが正常に読み出されたと判定し、コンペア動作を終了する(終了)。
【0252】
比較された情報が一致しない場合(S908No)、あるいは比較されたライトカウントが一致しない場合(S913No)、プロセッサ21は、エラー処理を実行し(S914)、データコンペア動作を終了する(終了)。
【0253】
また、プロセッサ21は、リードデータがゾーンアペンドコマンドに基づいて書き込まれたデータ、あるいはゾーンアペンドコマンドに基づいて書き込まれたデータをコピーしたデータである場合には、S909からS913までの手順をスキップする。
【0254】
次に、ライトカウント算出動作について説明する。
図28は、本発明の実施形態に係る情報処理装置において実行されるライトカウント算出動作の手順を示すフローチャートである。
【0255】
ライトカウント算出フラグが1であると判定すると(開始)、プロセッサ21は、変数Aを初期値(ここでは0)に設定する(S1001)。
【0256】
プロセッサ21は、Aがリード対象のゾーンに対応するゾーンライトカウント未満であるか否かを判定する(S1002)。
【0257】
Aがゾーンライトカウント未満である場合(S1002Yes)、プロセッサ21は、リード対象のLBAがホストライトポインタ履歴テーブル2243のA番目のエントリに保持されている値未満であるか否かを判定する(S1003)。
【0258】
リード対象のLBAがA番目のエントリの値未満である場合(S1003Yes)、プロセッサ21は、リード対象のLBAに対応するライト発行カウントおよびライト処理カウントを、ゾーンライトカウントからAを引いた値に設定し(S1004)、ライトカウント算出動作を終了する(終了)。
【0259】
リード対象のLBAがA番目のエントリの値以上である場合(S1003No)、プロセッサ21は、Aを1だけインクリメントし(S1005)、Aがゾーンライトカウント未満であるか否かを判定する(S1002)。
【0260】
Aがゾーンライトカウント以上である場合(S1002No)、プロセッサ21は、エラー処理を実行し(S1006)、ライトカウント算出動作を終了する(終了)。
【0261】
次に、
図27におけるS911からS914までの手順の代わりに実行され得るコンペア動作の手順について説明する。
図29は、本発明の実施形態に係る情報処理装置において実行される、ホストライトポインタ履歴テーブルを使用したライトカウントのコンペア動作の手順を示すフローチャートである。
【0262】
ライトカウント算出フラグが1であると判定すると(開始)、プロセッサ21は、変数Aを初期値(ここでは0)に設定する(S1101)。
【0263】
プロセッサ21は、Aがリード対象のLBAが含まれるゾーンに対応するゾーンライトカウント未満であるか否かを判定する(S1102)。
【0264】
Aがゾーンライトカウント未満である場合(S1102Yes)、プロセッサ21は、リード対象のLBAが、ZSLBAとホストライトポインタ履歴テーブル2243のA番目のエントリに保持されている値との和未満であるか否かを判定する(S1103)。
【0265】
リード対象のLBAがZSLBAとA番目のエントリに保持されている値との和未満である場合(S1103Yes)、プロセッサ21は、リードデータに埋め込まれているライトカウントを取得する(S1104)。
【0266】
プロセッサ21は、S1104で取得したライトカウントと、ゾーンライトカウントからAを引いた値が一致するか否かを判定する(S1105)。
【0267】
取得したライトカウントと、ゾーンライトカウントからAを引いた値が一致する場合(S1105Yes)、プロセッサ21は、リードデータが正常に読み出されたと判定し、コンペア動作を終了する(終了)。
【0268】
LBAがZSLBAとA番目のエントリに保持されている値との和以上である場合(S1103No)、プロセッサ21は、Aを1だけインクリメントし(S1106)、Aがゾーンライトカウント未満であるか否かを判定する(S1102)。
【0269】
Aがゾーンライトカウント以上である場合(S1102No)、あるいは取得したライトカウントと、ゾーンライトカウントからAを引いた値が一致しない場合(S1105No)、プロセッサ21は、エラー処理を実行し(S1107)、コンペア動作を終了する(終了)。
【0270】
以上説明したように、本発明の実施形態によれば、ゾーンアペンドコマンドに基づいてゾーンに書き込まれるデータのセクタの先頭または末尾に、ゾーンを一意に識別可能な識別子であるゾーン識別子と、ゾーンのLBA毎に一意となる番号であるシーケンス番号とが埋め込まれる。そして、ゾーン識別子およびシーケンス番号は、ゾーンアペンドコマンドに基づいて書き込まれたLBAによって示される記憶位置から読み出されるリードデータのデータインテグリティの評価に使用される期待値である第1の期待値として、保存される。よって、ゾーンアペンドコマンドに基づいてゾーンに書き込まれたデータと同じデータがメモリシステムから正しく読み出すことができるか否かを判定することができる。
【0271】
また、プロセッサ21は、リードデータに関連付けられたLBAに対応するLBAライトカウント情報テーブル2244のエントリを参照することで、このリードデータに対応する制御モードを確認することができる。
【0272】
通常の制御モードにおいて書き込み動作が実行されたリードデータに対するデータコンペア動作では、リード対象のLBAと、リードデータに埋め込まれたLBAとが比較される。そして、リード対象のLBAに対応するライト処理カウントと、リードデータに埋め込まれたライトカウントとが比較される。
【0273】
代替の制御モードにおいて書き込み動作が実行されたリードデータに対するデータコンペア動作では、リード対象のLBAに対応する代替期待値テーブル2245のエントリに保持されている期待値と、リードデータに埋め込まれたゾーン番号およびアペンドシーケンス番号とが比較される。
【0274】
またさらに、プロセッサ21は、ゾーンに対するデータの書き込み動作が若いLBAから順に実行されることを利用して、ホストライトポインタ履歴テーブル2243のエントリに保持されているホストライトポインタの値と、ゾーンライトカウントとから、LBAライトカウント情報テーブル2244を復元する処理を実行することができる。
【0275】
なお、Zoned Block Command、またはZoned Device ATA Command Setにおいてもゾーンアペンドコマンドまたはコピーコマンドと同様のコマンドが規定された場合は、本実施形態の構成は、Zoned Block CommandまたはZoned Device ATA Command Setにおいて規定されたコマンドを使用してゾーンにデータを書き込むケースにも適用可能である。
【0276】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0277】
1 情報処理システム
2 情報処理装置
3 メモリシステム
4 バス
20 バス
21 プロセッサ
22 メモリ
30 バス
31 コントローラ
32 不揮発性メモリ
210 テスト処理部
211 コマンド制御部
212 データコンペア制御部
221 転送データバッファ
222 サブミッションキューテーブル
223 コンプリーションキューテーブル
224 データコンペア管理テーブル
2241 データコンペア管理ルートテーブル
2242 一時期待値テーブル
2243 ホストライトポインタ履歴テーブル
2244 LBAライトカウント情報テーブル
2245 代替期待値テーブル