IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特開2022-137811情報処理システム、ストレージデバイスおよびホスト
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022137811
(43)【公開日】2022-09-22
(54)【発明の名称】情報処理システム、ストレージデバイスおよびホスト
(51)【国際特許分類】
   G06F 3/06 20060101AFI20220914BHJP
   G06F 11/10 20060101ALI20220914BHJP
【FI】
G06F3/06 301N
G06F3/06 305C
G06F11/10 604
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2021037486
(22)【出願日】2021-03-09
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】松浦 麻塔
【テーマコード(参考)】
5B001
【Fターム(参考)】
5B001AA03
5B001AB01
5B001AB02
5B001AD05
(57)【要約】
【課題】書き込み効率の悪化を防ぎつつ、データの伝送経路全体についてデータを保護することができる情報処理システムを提供する。
【解決手段】実施形態によれば、情報処理システムは、ホストと、不揮発性メモリを有するストレージデバイスとが接続される。不揮発性メモリに含まれる複数のページのそれぞれは、第1サイズのデータエリアと第1サイズよりも小さい冗長エリアとを含む。ホストは、書き込みデータの誤り検出コードを第1サイズ毎に生成し、第1サイズの書き込みデータと誤り検出コードとの組みを1以上含む第1サイズの倍数と異なるサイズの転送データをストレージデバイスへ送信する。ストレージデバイスは、ホストから受信した転送データに含まれる第1サイズの書き込みデータを不揮発性メモリのいずれかのページのデータエリアに格納し、かつ、転送データに含まれる誤り検出コードを同一ページの冗長エリアに格納する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ホストと、不揮発性メモリを有するストレージデバイスと、が接続される情報処理システムであって、
前記不揮発性メモリは、複数のページを含み、
前記複数のページのそれぞれは、第1サイズのデータエリアと前記第1サイズよりも小さい冗長エリアとを含み、
前記ホストは、前記ストレージデバイスにデータを書き込む場合、書き込みデータの誤り検出コードまたは誤り訂正コードを前記第1サイズ毎に生成し、前記第1サイズの書き込みデータと前記誤り検出コードまたは前記誤り訂正コードとの組みを1以上含む、前記第1サイズの倍数と異なるサイズの転送データを前記ストレージデバイスへ送信し、
前記ストレージデバイスは、前記ホストから受信した前記転送データに含まれる前記第1サイズの書き込みデータを前記不揮発性メモリのいずれかのページのデータエリアに格納し、かつ、前記転送データに含まれる前記誤り検出コードまたは前記誤り訂正コードを同一ページの冗長エリアに格納する、
情報処理システム。
【請求項2】
前記ストレージデバイスは、データの読み出しを前記ホストから要求された場合、前記不揮発性メモリのいずれかのページのデータエリアから前記第1サイズの読み出しデータを読み出し、かつ、同一ページの冗長エリアから誤り検出コードまたは誤り訂正コードを読み出し、前記第1サイズの読み出しデータと前記誤り検出コードまたは前記訂正コードとの組みを1以上含む、前記第1サイズの倍数と異なるサイズの転送データを前記ホストへ送信する請求項1に記載の情報処理システム。
【請求項3】
前記ホストは、前記ストレージデバイスからデータを読み出す場合、前記ストレージデバイスからの転送データを前記第1サイズの読み出しデータと当該読み出しデータの誤り検出コードまたは誤り訂正コードとに分離し、前記誤り検出コードまたは前記誤り訂正コードを用いて、前記第1サイズの読み出しデータを検査する請求項1に記載の情報処理システム。
【請求項4】
ホストと、不揮発性メモリを有するストレージデバイスと、が接続される情報処理システムであって、
前記不揮発性メモリは、複数のページを含み、
前記複数のページのそれぞれは、第1サイズのデータエリアを含み、
前記ホストは、前記ストレージデバイスにデータを書き込む場合、書き込みデータの誤り検出コードまたは誤り訂正コードを前記第1サイズ毎に生成し、前記第1サイズの書き込みデータと前記誤り検出コードまたは前記訂正コードとの組みを1以上含む、前記第1サイズの倍数と異なるサイズの転送データを前記ストレージデバイスへ送信し、
前記ストレージデバイスは、前記ホストから受信した前記転送データに含まれる前記第1サイズの書き込みデータを前記不揮発性メモリのいずれかのページのデータエリアに格納し、かつ、前記転送データに含まれる誤り検出コードまたは誤り訂正コードを一定数纏めて前記書き込みデータが格納されたページとは別のページのデータエリアに格納する、
情報処理システム。
【請求項5】
前記ストレージデバイスは、データの読み出しを前記ホストから要求された場合、前記不揮発性メモリのいずれかのページのデータエリアから前記第1サイズの読み出しデータを読み出し、かつ、その読み出しデータの誤り検出コードまたは誤り訂正コードを別のページのデータエリアから読み出し、前記第1サイズの読み出しデータと前記誤り検出コードまたは前記誤り訂正コードとの組みを1以上含む、前記第1サイズの倍数と異なるサイズの転送データを前記ホストへ送信する請求項4に記載の情報処理システム。
【請求項6】
前記ホストは、前記ストレージデバイスからデータを読み出す場合、前記ストレージデバイスからの転送データを前記第1サイズの読み出しデータと当該読み出しデータの誤り検出コードまたは誤り訂正コードとに分離し、前記誤り検出コードまたは前記誤り訂正コードを用いて、前記第1サイズの読み出しデータを検査する請求項4に記載の情報処理システム。
【請求項7】
不揮発性メモリと、
ホストからのコマンドに応じて、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記不揮発性メモリは、複数のページを含み、
前記複数のページのそれぞれは、第1サイズのデータエリアと前記第1サイズよりも小さい冗長エリアとを含み、
前記コントローラは、
データの書き込みを要求する前記ホストからの転送データを、前記第1サイズの書き込みデータと当該書き込みデータの誤り検出コードまたは誤り訂正コードとに分離し、
前記第1サイズの書き込みデータを前記不揮発性メモリのいずれかのページのデータエリアに格納し、
前記誤り検出コードまたは前記誤り訂正コードを、前記書き込みデータが格納された同一ページの冗長エリアに格納する、
ストレージデバイス。
【請求項8】
前記コントローラは、UFS(universal flash storage)仕様に準拠したフォーマットのUPIU(UFS protocol information unit)パケットを前記ホストとの間で送受信するUFS層を有し、
前記UFS層は、データの書き込みを要求する、SCSI(small computer system interface)仕様に準拠したフォーマットのSCSIコマンドが格納されている前記UPIUの受信時、前記SCSIコマンドで指定されている転送データ長と前記UPIUで指定されている転送データ長とが一致しない場合に、前記転送データからの前記誤り検出コードまたは前記誤り訂正コードの抽出、および、前記誤り検出コードまたは前記誤り訂正コードの前記冗長エリアへの格納を実行する、
請求項7に記載のストレージデバイス。
【請求項9】
前記UFS層は、前記誤り検出コードまたは前記誤り訂正コードの第2サイズを前記第1サイズに加算して得られる第3サイズの倍数を指定して、前記ストレージデバイスが受信可能なデータサイズを通知するための前記UPIUを前記ホストに送信する請求項8に記載のストレージデバイス。
【請求項10】
前記コントローラは、
データの読み出しを前記ホストから要求された場合、前記不揮発性メモリのいずれかのページのデータエリアから前記第1サイズの読み出しデータを読み出し、
同一ページの冗長エリアから誤り検出コードまたは誤り訂正コードを読み出し、
前記第1サイズの読み出しデータと前記誤り検出コードまたは前記誤り訂正コードとの組みを1以上含む前記第1サイズの倍数と異なるサイズの転送データを前記ホストへ送信する、
請求項7に記載のストレージデバイス。
【請求項11】
前記コントローラは、前記UFS仕様に準拠したフォーマットのUPIUを前記ホストとの間で送受信するUFS層を有し、
前記UFS層は、データの読み出しを要求する、SCSI仕様に準拠したフォーマットのSCSIコマンドが格納されている前記UPIUの受信時、前記SCSIコマンドで指定されている転送データ長と前記UPIUで指定されている転送データ長とが一致しない場合に、前記冗長エリアからの前記誤り検出コードまたは前記誤り訂正コードの読み出し、および、前記第1サイズの読み出しデータと前記誤り検出コードまたは前記誤り訂正コードとの組みを1以上含む前記第1サイズの倍数と異なるサイズの転送データの前記ホストへの送信を実行する、
請求項10に記載のストレージデバイス。
【請求項12】
不揮発性メモリと、
ホストからのコマンドに応じて、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記不揮発性メモリは、複数のページを含み、
前記複数のページのそれぞれは、第1サイズのデータエリアと前記第1サイズよりも小さい冗長エリアとを含み、
前記コントローラは、
データの書き込みを要求する前記ホストからの転送データを、前記第1サイズの書き込みデータと当該書き込みデータの誤り検出コードまたは誤り訂正コードとに分離し、
前記第1サイズの書き込みデータを前記不揮発性メモリのいずれかのページのデータエリアに格納し、
前記誤り検出コードまたは前記誤り訂正コードを一定数纏めて前記書き込みデータが格納されたページとは別のページのデータエリアに格納する、
ストレージデバイス。
【請求項13】
前記コントローラは、前記UFS仕様に準拠したフォーマットのUPIUを前記ホストとの間で送受信するUFS層を有し、
前記UFS層は、データの書き込みを要求する、SCSI仕様に準拠したフォーマットのSCSIコマンドが格納されている前記UPIUの受信時、前記SCSIコマンドで指定されている転送データ長と前記UPIUで指定されている転送データ長とが一致しない場合に、前記転送データからの前記誤り検出コードまたは前記誤り訂正コードの抽出、および、前記誤り検出コードまたは前記誤り訂正コードの前記データエリアへの一括的な格納を実行する、
請求項12に記載のストレージデバイス。
【請求項14】
前記UFS層は、前記誤り検出コードまたは前記誤り訂正コードの第2サイズを前記第1サイズに加算して得られる第3サイズの倍数を指定して、前記ストレージデバイスが受信可能なデータサイズを通知するための前記UPIUを前記ホストに送信する請求項13に記載のストレージデバイス。
【請求項15】
前記コントローラは、
データの読み出しを前記ホストから要求された場合、前記不揮発性メモリのいずれかのページのデータエリアから前記第1サイズの読み出しデータを読み出し、
前記第1サイズの読み出しデータが格納されていたページとは別のページのデータエリアから誤り検出コードまたは誤り訂正コードを読み出し、
前記第1サイズの読み出しデータと前記誤り検出コードまたは前記誤り訂正コードとの組みを1以上含む前記第1サイズの倍数と異なるサイズの転送データを前記ホストへ送信する、
請求項12に記載のストレージデバイス。
【請求項16】
不揮発性メモリを有するストレージデバイスと接続されるホストであって、
前記不揮発性メモリは、複数のページを含み、
前記複数のページのそれぞれは、第1サイズのデータエリアと前記第1サイズよりも小さい冗長エリアとを含み、
前記ストレージデバイスへのデータの書き込み時、書き込みデータの誤り検出コードまたは誤り訂正コードを前記第1サイズ毎に生成し、前記第1サイズの書き込みデータと前記誤り検出コードまたは前記誤り訂正コードとの組みを1以上含む、前記第1サイズの倍数と異なるサイズの転送データを前記ストレージデバイスへ送信する通信装置を具備する、
ホスト。
【請求項17】
前記通信装置は、前記UFS仕様に準拠したフォーマットのUPIUを前記ストレージデバイスとの間で送受信するUFS層を有し、
前記UFS層は、データの書き込みを要求する、SCSI仕様に準拠したフォーマットのSCSIコマンドを格納した前記UPIUの送信時、前記誤り検出コードまたは前記誤り訂正コードの第2サイズを前記第1サイズに加算して得られる第3サイズの倍数を前記UPIUにおいて転送データ長として指定する、
請求項16に記載のホスト。
【請求項18】
前記ストレージデバイスからのデータの読み出し時、前記ストレージデバイスからの転送データを前記第1サイズの読み出しデータと当該読み出しデータの誤り検出コードまたは誤り訂正コードとに分離し、前記誤り検出コードまたは前記誤り訂正コードを用いて、前記第1サイズの読み出しデータを検査する請求項16に記載のホスト。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理システム、ストレージデバイスおよびホストに関する。
【背景技術】
【0002】
近年、SSD(solid state drive)やHDD(hard disk drive)などのストレージデバイスが普及している。ストレージデバイスは、PC(personal computer)やサーバなどの情報処理装置のストレージとして利用されている。情報処理装置とストレージデバイスとが接続される情報処理システムにおいて、情報処理装置は、ホストと称される。
【0003】
たとえばUFS(universal flash storage)仕様に準拠するSSDでは、ホストとSSDとの間については、UFS仕様に準拠する通信プロトコル上のCRC(cyclic redundancy check)によってデータが保護されている。また、SSD内のNAND型のフラッシュメモリ(NANDメモリ)と当該NANDメモリを制御するコントローラとの間については、コントローラが生成するECC(error correcting code)によってデータが保護されている。しかし、NANDメモリへのデータの書き込み時やNANDメモリからのデータの読み出し時などにおいてコントローラへ入力されてからコントローラから出力されるまでの間については、データは保護されていない。つまり、コントローラ内部を経由しているデータの保護は図られていない。従って、コントローラ内部の故障によってデータにエラーが生じても、そのエラーを検知することが難しい。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2015/075837号
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の1つの実施形態は、書き込み効率の悪化を防ぎつつ、データの伝送経路全体についてデータを保護することができる情報処理システム、ストレージデバイスおよびホストを提供する。
【課題を解決するための手段】
【0006】
実施形態によれば、情報処理システムは、ホストと、不揮発性メモリを有するストレージデバイスとが接続される。不揮発性メモリは、複数のページを含む。複数のページのそれぞれは、第1サイズのデータエリアと第1サイズよりも小さい冗長エリアとを含む。ホストは、ストレージデバイスにデータを書き込む場合、書き込みデータの誤り検出コードまたは誤り訂正コードを第1サイズ毎に生成し、第1サイズの書き込みデータと誤り検出コードまたは誤り訂正コードとの組みを1以上含む第1サイズの倍数と異なるサイズの転送データをストレージデバイスへ送信する。ストレージデバイスは、ホストから受信した転送データに含まれる第1サイズの書き込みデータを不揮発性メモリのいずれかのページのデータエリアに格納し、かつ、転送データに含まれる誤り検出コードまたは誤り訂正コードを同一ページの冗長エリアに格納する。
【図面の簡単な説明】
【0007】
図1】実施形態の情報処理システムの一構成例を示す図
図2】実施形態の情報処理システムにおいてホストからストレージデバイス内のNANDメモリまで一貫したEDCをデータに付加する利点を説明するための図
図3】実施形態の情報処理システムにおけるデータに付加するEDCの格納方法を説明するための図
図4】UFS仕様に準拠する通信プロトコルでの通信時のデバイス内におけるデータの流れを説明するための図
図5】UFS仕様に準拠する通信プロトコルでの通信時のデバイス間におけるデータの流れを説明するための図
図6】SCSIコマンドとUPIUとの関係を示す図
図7】実施形態の情報処理システムのCOMMAND UPIUに関するホストのUFS層の独自の動作を説明するための図
図8】実施形態の情報処理システムのRTT UPIUに関するストレージシステムのUFS層の独自の動作を説明するための図
図9】実施形態の情報処理システムのDATA OUT UPIUに関するホストのUFS層の独自の動作を説明するための図
図10】実施形態の情報処理システムのDATA IN UPIUに関するホストのUFS層の独自の動作を説明するための図
図11】実施形態の情報処理システムのCOMMAND UPIUに関するストレージシステムのUFS層の独自の動作を説明するための図
図12】実施形態の情報処理システムのDATA OUT UPIUに関するストレージシステムのUFS層の独自の動作を説明するための図
図13】実施形態の情報処理システムにおいて実行し得るデータおよびEDCのNANDメモリへの第1の格納方法を説明するための図
図14】実施形態の情報処理システムにおいて実行し得るデータおよびEDCのNANDメモリへの第2の格納方法を説明するための図
図15】実施形態の情報処理システムのCOMMAND UPIUに関するストレージシステムのUFS層の独自の動作をさらに説明するための図
図16】実施形態の情報処理システムにおいて実行し得るNANDメモリからのデータおよびEDCの第1の読み出し方法を説明するための図
図17】実施形態の情報処理システムにおいて実行し得るNANDメモリからのデータおよびEDCの第2の読み出し方法を説明するための図
図18】実施形態の情報処理システムのDATA IN UPIUに関するストレージシステムのUFS層の独自の動作を説明するための図
図19】実施形態の情報処理システムのデータの書き込み時におけるホストの動作手順を示すフローチャート
図20】実施形態の情報処理システムのデータの書き込み時におけるストレージデバイスの動作手順を示す第1のフローチャート
図21】実施形態の情報処理システムのデータの書き込み時におけるストレージデバイスの動作手順を示す第2のフローチャート
図22】実施形態の情報処理システムのデータの書き込み時におけるストレージデバイスの動作手順を示す第3のフローチャート
図23】実施形態の情報処理システムのデータの読み出し時におけるホストの動作手順を示すフローチャート
図24】実施形態の情報処理システムのデータの読み出し時におけるストレージデバイスの動作手順を示す第1のフローチャート
図25】実施形態の情報処理システムのデータの読み出し時におけるストレージデバイスの動作手順を示す第2のフローチャート
【発明を実施するための形態】
【0008】
以下、実施の形態について、図面を参照して説明する。
【0009】
前述したように、たとえばSSDでは、NANDメモリへのデータの書き込み時やNANDメモリからのデータの読み出し時などにおいてコントローラへ入力されてからコントローラから出力されるまでの間については、データは保護されていない。つまり、コントローラ内部を経由しているデータの保護は図られていない。従って、コントローラ内部の故障によってデータにエラーが生じても、そのエラーを検知することが難しい。
【0010】
仮に、コントローラ内部の故障によるデータのエラーを検知する機能をSSDに搭載することとした場合、コストアップや応答時間の増加などを生じさせてしまう。
【0011】
また、ホストからSSD内のNANDメモリまで一貫したEDC(error detection code)またはECCをデータに付加することで、コントローラ内部を含むデータの伝送経路全体についてデータを保護することとした場合、EDCまたはECCを単純にデータに付加したのでは、SSDの書き込み効率を悪化させてしまう。
【0012】
また、ホストが発行するコマンドのデータサイズに関する規定によれば、規定サイズのデータにEDCまたはECCを付加し、規定外のサイズとすると、ホストとSSDとの間で単純には送受信することができない。
【0013】
本実施形態は、書き込み効率の悪化を防ぎつつ、データの伝送経路全体についてデータを保護することができる情報処理システムに関する。
【0014】
図1は、本実施形態の情報処理システム100の一構成例を示す図である。情報処理システム100は、ストレージデバイス1と、ホスト2と、ストレージデバイス1とホスト2とを接続するインターフェース3とを含む。インターフェース3は、たとえばUFS仕様に準拠する。ストレージデバイス1とホスト2とは、たとえばUniProTM仕様に準拠する通信プロトコルで通信する。ホスト2は、SCSI(small computer system interface)仕様に準拠したフォーマットのSCSIコマンドを、UFS仕様に準拠するフォーマットのパケットであるUPIU(UFS protocol information unit)に格納してストレージデバイス1に送信する。ストレージデバイス1は、ホスト2からUPIUを受信し、UPIUに格納されているSCSIコマンドを取り出して、SCSIコマンドに応じた処理を実行する。
【0015】
ストレージデバイス1は、たとえば、UFS仕様に準拠するSSDとして実現され得る。ストレージデバイス1は、コントローラ10と、NAND型フラッシュメモリ(NANDメモリ)20とを有する。
【0016】
コントローラ10は、たとえばSoC(system on a chip)として構成される。コントローラ10は、ホスト2が発行するコマンド(SCSIコマンド)に応じて、ホスト2から送信されてくるデータのNANDメモリ20への書き込み処理や、ホスト2が要求するデータのNANDメモリ20からの読み出し処理などを実行する。
【0017】
コントローラ10は、ホストインターフェース11、ロジック回路12、RAM13、ECC回路14およびNANDインターフェース15を有する。
【0018】
ホストインターフェース11は、インターフェース3を介したホスト2との通信を制御する。ホストインターフェース11は、UFS層111を有する。UFS層111は、ホスト2側のUFS層221との間でUPIUを送受信する。UFS層111は、ホスト2側のUFS層221との間で送受信されるUPIUをCRCによって検査する機能を有している。たとえばホスト2のUFS層221からストレージデバイス1のUFS層111への転送中にUPIUに格納されているデータにエラーが発生した場合、このエラーは、UFS層111によって検知される。また、UFS層111は、ホスト2のUFS層221へ送信するUPIUに対して、ホスト2のUFS層221が当該UPIUを検査するためのCRCを生成して付加する。
【0019】
ロジック回路12は、ストレージデバイス1の動作を統合的に制御する。具体的には、ロジック回路12は、ホストインターフェース11、RAM13、ECC回路14およびNANDインターフェース15を制御する。ロジック回路12は、NANDメモリ20へのデータの書き込み処理およびNANDメモリ20からのデータの読み出し処理とを実行するW(ライト)/R(リード)処理部121を有する。ホストインターフェース11を介してホスト2からのライトコマンドを受信した場合、W/R処理部121は、RAM13をバッファとして、ホスト2から送信されてくるデータを受信する。W/R処理部121は、このデータを保護するためのECCの生成をECC回路14に指示し、生成されたECCをホスト2からのデータに対応づけて、NANDインターフェース15を介してNANDメモリ20に書き込む。ホストインターフェース11を介してホスト2からのリードコマンドを受信した場合、W/R処理部121は、ホスト2から要求されたデータをECCと共にNANDインターフェース15を介してNANDメモリ20から読み出す。読み出したデータは、RAM13に一時的に格納される。W/R処理部121は、ECC回路14に対して、NANDメモリ20から読み出されてRAM13に格納されたデータについてECCによる検査を行うことを指示する。W/R処理部121は、データが正しいことがECC回路14から通知された場合、ホストインターフェース11を介して当該データをホスト2へ送信する。換言すれば、NANDメモリ20からのデータの読み出し時、ECCによる検査によって、W/R処理部121は、データのエラーを検出する。NANDメモリ20へのデータの書き込み時にエラーが発生した場合は、NANDメモリ20からステータスエラーが出力される。これにより、W/R処理部121は、エラーの発生を検知する。
【0020】
W/R処理部121は、たとえばロジック回路12内のプロセッサ(不図示)がプログラムを実行することによって実現される。あるいは、W/R処理部121は、電気回路などのハードウェアとして実現されてもよい。
【0021】
このように、ホスト2とストレージデバイス1との間においては、通信プロトコル上のCRCによってデータが保護される。また、ストレージデバイス1内のコントローラ10とNANDメモリ20との間においては、ECC回路14によって生成されるECCによってデータが保護される。本実施形態の情報処理システム100は、ストレージデバイス1のコントローラ10内で発生したデータのエラーを検知することができるようにした。より詳しくは、ストレージデバイス1の書き込み効率の悪化を防ぎつつ、データの伝送経路全体についてデータを保護することができる仕組みを実現した。つまり、ストレージデバイス1の書き込み効率を悪化させることなく、ホスト2の処理によって、ストレージデバイス1へ書き込むデータ101に対してEDC102を付加し、ホスト2からストレージデバイス1内のNANDメモリ20まで一貫したEDC102を付加することができる仕組みを実現した。そのために、本実施形態の情報処理システム100においては、ホスト2のUFS層221と、ストレージデバイス1のUFS層111およびW/R処理部121とが、独自の動作を行う。この点については後述する。なお、図1には、EDC102を例示しているが、EDCに代えてECCとしてもよい。また、図1におけるCRC103およびECC104は、データ101+EDC102を保護するものである。EDC102は、たとえばホスト2においてSCSI層(不図示)からSCSIコマンドを受け取るUFS層221にて生成される。ホスト2のUFS層221は、ストレージデバイス1から読み出したデータ101のEDC102による検査も実施する。
【0022】
RAM13は、たとえばSRAMである。なお、前述した、データを一時的に格納するバッファとしての役割は、コントローラ10の外部にDRAMを設け、当該DRAMへ移転させてもよい。
【0023】
ECC回路14は、ロジック回路12のW/R処理部121の指示に従い、NANDメモリ20へ書き込まれるデータ(データ101+EDC102)のECCを生成し、または、NANDメモリ20から読み出されたデータが正しいことを、当該データと共にNANDメモリ20から読み出されたECCによって検査する。
【0024】
NANDインターフェース15は、NANDメモリ20との間のデータの送受信を制御する。
【0025】
ホスト2は、たとえば車体に搭載されるドライブレコーダである。ホスト2は、たとえば車体の前方や後方を撮影した画像(データ101)をストレージデバイス1に記録する。ホスト2は、CPU21、通信装置22を有する。CPU21は、ホスト2の動作を統合的に制御する。具体的には、CPU21は、通信装置22を含むホスト2内の各コンポーネントを制御する。
【0026】
通信装置22は、インターフェース3を介したストレージデバイス1との通信を制御する。前述のUFS層221は、通信装置22に設けられている。UFS層221は、ストレージデバイス1側のUFS層111との間でUPIUを送受信する。UFS層221は、ストレージデバイス1側のUFS層111との間で送受信されるUPIUをCRCによって検査する機能を有している。たとえばストレージデバイス1のUFS層111からホスト2のUFS層221への転送中にUPIUに格納されているデータにエラーが発生した場合、このエラーは、UFS層221によって検知される。また、UFS層221は、ストレージデバイス1のUFS層111へ送信するUPIUに対して、ストレージデバイス1のUFS層111が当該UPIUを検査するためのCRCを生成して付加する。
【0027】
ここで、図2を参照して、ホスト2からストレージデバイス1内のNANDメモリ20まで一貫したEDC102をデータ101に付加する利点について説明する。
【0028】
図2(A)は、EDC102をデータ101に付加しない情報処理システムにおけるデータの保護の例を示している。この例においては、ホスト2xとストレージデバイス1xとの間(a1)については、CRC103によってデータ101が保護される。また、ストレージデバイス1内のコントローラ10xとNANDメモリ20xとの間(a2)については、ECC104によってデータ101が保護される。しかし、NANDメモリ20xへのデータ101の書き込み時やNANDメモリ20xからのデータ101の読み出し時などにおいてコントローラ10xへ入力されてからコントローラ10xから出力されるまでの間(a3)については、データ101は保護されていない。つまり、コントローラ10x内部を経由しているデータ101の保護は図られていない。従って、コントローラ10x内部の故障によってデータ101にエラーが生じても、そのエラーを検知することができない。
【0029】
一方、図2(B)は、EDC102をデータ101に付加する本実施形態の情報処理システム100におけるデータの保護の例を示している。本例においては、ホスト2とストレージデバイス1との間(a1)については、CRC103によってデータ101とEDC102とが保護される。また、ストレージデバイス1内のコントローラ10とNANDメモリ20との間(a2)については、ECC104によってデータ101とEDC102とが保護される。そして、NANDメモリ20へのデータ101の書き込み時やNANDメモリ20からのデータ101の読み出し時などにおいてコントローラ10へ入力されてからコントローラ10から出力されるまでの間(a3)については、EDC102によってデータ101が保護される。コントローラ10内部の故障によってデータ101にエラーが生じた場合、ホスト2は、EDC102によって当該エラーを検出できる。EDC102をECCとした場合には、当該エラーを訂正することができる。
【0030】
次に、図3を参照して、本実施形態の情報処理システム100におけるデータ101に付加するEDC102の格納方法について説明する。
【0031】
ストレージデバイス1のNANDメモリ20の領域は、データエリア(b11)と冗長エリア(b12)とを各々が含む、ページ(b10)と称される単位で管理されている。換言すれば、ストレージデバイス1のコントローラ10は、NANDメモリ20へのデータ101の書き込みや、NANDメモリ20からのデータ101の読み出しを、ページ単位に実行する。データエリアは、たとえば4Kバイトである。
【0032】
また、ホスト2のCPU21が実行するOS(operating system)は、ストレージデバイス1上のデータ101を、各ページのデータエリアのサイズである4Kバイト単位に管理する。そのため、データ101を保護するためのEDC102は、4Kバイトのデータ101毎に生成される。なお、OSやファイルシステムの種類または設定によっては、ストレージデバイス1上のデータ101が、4Kバイト以外のたとえば512バイト単位で管理される場合もある。
【0033】
仮に、EDC102を単純にデータ101に付加し、データ101+EDC102をページのデータエリアに格納するとした場合、そのデータサイズは4Kバイト+αとなる。ここで、αは、4Kバイトに満たない端数である、よって、本来であれば1つのページへの書き込みで済むところ、2つのページへの書き込みが必要となり、ストレージデバイス1の書き込み効率が低下する。
【0034】
図3(A)は、本実施形態の情報処理システム100における、データ101に付加するEDC102の第1の格納方法を示している。
【0035】
図3(A)に示すように、本実施形態の情報処理システム100における第1の格納方法は、4Kバイトのデータ101(1~N)毎に生成されるEDC102(1~N)を、データ101と同一ページの冗長エリアに格納する。
【0036】
また、図3(B)は、本実施形態の情報処理システム100における、データ101に付加するEDC102の第2の格納方法を示している。
【0037】
図3(B)に示すように、本実施形態の情報処理システム100における第2の格納方法は、EDC102を4Kバイトに収まる範囲内で纏めて、データ101とは別のページのデータエリアに格納する。
【0038】
なお、図3(A)や図3(B)に示すようなEDC102の格納は、NANDメモリ20への書き込み処理やNANDメモリ20からの読み出し処理を実行する、コントローラ10のW/R処理部121によって制御される。つまり、W/R処理部121は、EDC102を図3(A)や図3(B)に示すように格納するための独自の動作を行う。
【0039】
図3(A)に示す第1の格納方法の場合、消費ページ数の増加はなく、冗長エリアb12へのEDC102の書き込みが追加されるだけなので、ストレージデバイス1の書き込み効率の低下を防止できる。また、図3(B)に示す第2の格納方法の場合も、消費ページ数の増加およびEDC102のための書き込みの追加を最小限度に止めるので、ストレージデバイス1の書き込み効率の低下を防止できる。
【0040】
次に、図3(A)や図3(B)に示すようなデータ101およびEDC102の格納を可能とするためのホスト2のUFS層221とストレージデバイス1のUFS層111が行う独自の動作について説明する。
【0041】
前述したように、ホスト2は、データの書き込みや読み出しを要求するためのSCSIコマンド(ライトコマンド/リードコマンド)をUPIUに格納してストレージデバイス1に送信する。SCSIでは、論理ブロック(logical block)単位でデータを扱うことが定義されている。現在では、LBA(logical block address)サイズは4Kバイト単位が一般的である。また、UFSでは、LBAサイズが4Kバイトの2の累乗倍と定義されている。従って、UFS仕様に準拠するインターフェース3で接続されるホスト2とストレージデバイス1との間でSCSIコマンドによって送受信されるデータのサイズは、4Kバイトの倍数サイズに制限される。つまり、4Kバイトの倍数と一致しない、4Kバイト+αの倍数のサイズでデータを送受信することは難しい。これに対して、SCSIコマンドを格納するUPIUは、1バイト単位で送受信データのデータサイズを指定することが可能である。本実施形態の情報処理システム100は、この点を利用して、ホスト2とストレージデバイス1との間における4Kバイト+αのデータサイズのデータ101+EDC102の送受信を実現する。
【0042】
まず、図4を参照して、UFS仕様に準拠する通信プロトコルでの通信時のデバイス内におけるデータの流れについて説明する。図4には、ホスト2が発行したSCSIコマンドがストレージデバイス1へ送信される場合のホスト2内におけるデータの流れが示されている。
【0043】
ホスト2のCPU21によって発行されたSCSIコマンド(c1)は、UFS仕様に準拠するインターフェース3で接続されるストレージデバイス1とのUniPro仕様に準拠する通信プロトコルによる通信を制御する通信装置22に渡される。通信装置22のUFS層221は、このSCSIコマンドをUPIU(c2)に格納する。通信装置22は、SCSIコマンドが格納された当該UPIUを、UniPro仕様に準拠するフォーマットのデータ群(c3)に変換する。UFS用の電気的インターフェースにはM-PHYTMが使用されており、通信装置22は、変換後のデータ群に対して8ビット-10ビット符号化を施し(c4)、ストレージデバイス1に向けてシリアル転送する。
【0044】
一方、ストレージデバイス1は、図4に示すデータの流れと逆の流れで、UPIUからSCSIコマンドを取り出す。具体的には、ホストインターフェース11は、ホスト2からシリアル転送されてきたデータに対して8ビット-10ビット復号化を施し、UniPro仕様に準拠するフォーマットのデータ群(c3)を取得する。ホストインターフェース11は、このデータ群をUFS仕様に準拠するフォーマットのUPIUに変換し、変換後のUPIUからSCSIコマンドを取り出す。
【0045】
次に、図5を参照して、UFS仕様に準拠する通信プロトコルでの通信時のデバイス間におけるデータの流れについて説明する。
【0046】
図5(A)は、ホスト2によるライトコマンド発行時におけるホスト2とストレージデバイス1との間のデータの流れを示している。
【0047】
ライトコマンドの発行時、まず、ホスト2からストレージデバイス1に対してCOMMAND UPIU(d1)が送信される。COMMAND UPIUは、SCSIコマンドを転送するためのUPIUである。COMMAND UPIUによってライトコマンド(SCSIコマンド)を受信したストレージデバイス1は、自身が受信可能なデータサイズを通知するためのUPIUであるRTT(ready to transfer) UPIU(d2)をホスト2に送信する。ホスト2は、このRTT UPIUで示されるデータサイズに基づき、ライトデータを転送するためのUPIUであるDATA OUT UPIU(d3)にライトデータを格納してストレージデバイス1へ送信する。つまり、ホスト2からストレージデバイス1へ送信されるライトデータのデータサイズは、ストレージデバイス1からホスト2へ送信されるRTT UPIUによって決定される。
【0048】
RTT UPIUおよびDATA OUT UPIUの送受信は、ホスト2からストレージデバイス1へのライトデータの転送が完了するまで繰り返される。ストレージデバイス1は、ライトデータを受信し終えると、COMMAND UPIUによって受信したSCSIコマンド(ここではライトコマンド)の完了を通知するためのUPIUであるRESPONSE UPIU(d4)をホスト2へ送信する。
【0049】
一方、図5(B)は、ホスト2によるリードコマンド発行時におけるホスト2とストレージデバイス1との間のデータの流れを示している。
【0050】
リードコマンドの発行時においても、リードコマンドの発行時と同様、まず、ホスト2からストレージデバイス1に対してCOMMAND UPIUが送信される。COMMAND UPIUによってリードコマンド(SCSIコマンド)を受信したストレージデバイス1は、リードデータを転送するためのUPIUであるDATA IN UPIU(d5)にリードデータを格納してホスト2に送信する。
【0051】
DATA IN UPIUの送受信は、ストレージデバイス1からホスト2へのリードデータの転送が完了するまで繰り返される。ストレージデバイス1は、リードデータを送信し終えると、COMMAND UPIUによって受信したSCSIコマンド(ここではリードコマンド)の完了を通知するためのUPIUであるRESPONSE UPIUをホスト2へ送信する。
【0052】
図6は、SCSIコマンドとUPIUとの関係を示す図である。
【0053】
前述したように、ホスト2が発行したSCSIコマンド(c1)は、COMMAND UPIU(d1)に格納されてストレージデバイス1へ送信される。SCSIコマンドは、OPERATION CODE(e1)を含む。図6には、リードコマンドのコード(28h)が格納されている例が示されている。
【0054】
また、SCSIコマンドは、Logical Block Address(e2)と、Transfer Length(e3)とを含む。Logical Block Addressは、ライトデータを書き込む位置またはリードデータが存在する位置を示す論理アドレスである。Transfer Lengthは、ライトデータまたはリードデータのサイズである。前述したように、SCSIでは、論理ブロック単位でデータを扱うことが定義されている。現在では、LBAサイズは4Kバイト単位が一般的である。また、UFSでは、LBAサイズが4Kバイトの2の累乗倍と定義されている。そのため、Logical Block AddressやTransfer Lengthは、図6に示すように、たとえば4Kバイト単位で指定される。
【0055】
一方、SCSIコマンドを格納するCOMMAND UPIU(d1)も、ライトデータまたはリードデータのサイズを示すExpected Data Transfer Length(d11)を含む。UPIUにおいては、Expected Data Transfer Lengthは、1バイト単位で指定することが可能となっている。
【0056】
また、ライトデータを転送するためのDATA OUT UPIU(d3)およびリードデータを転送するためのDATA IN UPIU(d5)は、Data Transfer Count(d31、d51)を含む。Data Transfer Countは、各UPIUで転送されるライトデータまたはリードデータ(d32、d52)のサイズを示す。UPIUにおいては、このData Transfer Countも、1バイト単位で指定することが可能となっている。なお、DATA OUT UPIU(d3)およびDATA IN UPIU(d5)は、Data Transfer Count(d31、d51)と同じ値が格納されるData Segment Length(d33、d53)も含んでいる。
【0057】
図6に示すSCSIコマンドとUPIUとの関係を踏まえて、まず、図7を参照して、COMMAND UPIUに関して行われる、ホスト2のUFS層221の独自の動作について説明する。
【0058】
図7(A)は、EDC102をデータ101に付加しない情報処理システムにおけるCOMMAND UPIU(d1)を示している。EDC102をデータ101に付加しない場合、SCSIコマンド(c1)のTransfer Length(e2)の値が、そのままCOMMAND UPIUのExpected Data Transfer Length(d11)に格納される(4096×N)。
【0059】
一方、図7(B)は、本実施形態の情報処理システム100におけるCOMMAND UPIU(d1)を示している。ホスト2のUFS層221は、SCSIコマンド(c1)のTransfer Length(e2)の値に対し、EDC102の総データサイズを加えた値をCOMMAND UPIUのExpected Data Transfer Length(d11)に格納する((4096+α)×N)。前述したように、SCSIコマンドのTransfer Lengthは、4Kバイト単位で指定することが定められているので、SCSI層は、作成したEDC102を加える前の、データ101のデータサイズをTransfer Lengthに指定する。
【0060】
次に、図8を参照して、RTT UPIUに関して行われる、ストレージデバイス1のUFS層111の独自の動作について説明する。
【0061】
図8(A)は、EDC102をデータ101に付加しない情報処理システムにおけるRTT UPIU(d2)を示している。
【0062】
前述したように、ホスト2からストレージデバイス1へ送信されるライトデータのデータサイズは、ストレージデバイス1からホスト2へ送信されるRTT UPIUによって決定される。RTT UPIUは、このデータサイズを示すData Transfer Count(d21)を含む。EDC102をデータ101に付加しない場合、RTT UPIUのData Transfer Countには、ストレージデバイス1のバッファサイズに基づいて決定される、4Kバイトの倍数の値が格納される。
【0063】
一方、図8(B)は、本実施形態の情報処理システム100におけるRTT UPIU(d1)を示している。ストレージデバイス1のUFS層111は、ストレージデバイス1のバッファサイズに基づいて決定される、(4Kバイト+α)の倍数の値をRTT UPIUのData Transfer Count(d21)に格納する。これにより、ホスト2が(4Kバイト+α)の倍数のデータサイズのライトデータをストレージデバイス1へ送信することが可能となる。
【0064】
次に、図9を参照して、DATA OUT UPIUに関して行われる、ホスト2のUFS層221の独自の動作について説明する。
【0065】
図9(A)は、データ101にEDC102を付加しない情報処理システムにおけるDATA OUT UPIU(d3)を示している。データ101のデータサイズは、NANDメモリ20のページに含まれるデータエリアのサイズである4Kバイトの倍数である。従って、データ101にEDC102を付加しない場合、データ101のみを格納するDATA OUT UPIUのDATA(d32)のサイズは、4Kバイトの倍数である。そのため、DATA OUT UPIUのData Transfer Count(d31)には、4Kバイトの倍数の値が格納される(4096×n)。また、Data Transfer Countと同じ値が格納されるData Segment Length(d33)にも、4Kバイトの倍数の値が格納される。
【0066】
一方、図9(B)は、本実施形態の情報処理システム100におけるDATA OUT UPIU(d3)を示している。ホスト2のUFS層221は、SCSI層から渡されるデータ101およびEDC102をDATA OUT UPIUのDATA(d32)に格納する。データ101のサイズは、4Kバイトの倍数であり、EDC102は、4Kバイト毎に生成されている。従って、DATAのサイズは、(4Kバイト+α)の倍数となる。ホスト2のUFS層221は、(4Kバイト+α)の倍数であるDATAのサイズを、DATA OUT UPIUのData Transfer Count(d31)に格納する((4096+α)×n)。これに伴い、ホスト2のUFS層221は、Data Segment Length(d33)にも、(4Kバイト+α)の倍数であるDATAのサイズを格納する。
【0067】
次に、図10を参照して、DATA IN UPIUに関して行われる、ホスト2のUFS層221の独自の動作について説明する。
【0068】
図10(A)は、EDC102をデータ101に付加しない情報処理システムにおけるDATA IN UPIU(d5)を示している。EDC102をデータ101に付加しない場合、データ101のみを格納するDATA IN UPIUのDATA(d52)のサイズは、4Kバイトの倍数である。従って、DATA IN UPIUのData Transfer Count(d51)には、4Kバイトの倍数の値が格納されている(4096×n)。このData Transfer Countの値に基づき、DATA IN UPIUから4Kバイトの倍数のデータサイズのデータ101が取り出され、SCSIコマンド(リードコマンド)の供給元であるSCSI層に渡される。
【0069】
一方、図10(B)は、本実施形態の情報処理システム100におけるDATA IN UPIU(d5)を示している。データ101にEDC102を付加する本実施形態の情報処理システム100においては、データ101+EDC102がDATA IN UPIUのDATA(d52)に格納される。従って、DATA IN UPIUのData Transfer Count(d51)には、(4Kバイト+α)の倍数の値が格納されている((4096+α)×n)。ホスト2のUFS層221は、このData Transfer Countの値に基づき、DATA IN UPIUから(4Kバイト+α)の倍数のデータサイズのデータ101+EDC102を取り出す。ホスト2のUFS層221は、EDC102によってデータ101の完全性を検査する。データ101の完全性が確認された場合、ホスト2のUFS層221は、データ101をSCSIコマンド(リードコマンド)の供給元であるSCSI層に渡す。この検査により、ストレージデバイス1のコントローラ10内部でデータ101にエラーが発生した場合、そのエラーを検出することが可能となる。
【0070】
次に、図11を参照して、COMMAND UPIUに関して行われる、ストレージデバイス1のUFS層111の独自の動作について説明する。ここでは、COMMAND UPIUが、データ101の書き込みを要求するSCSIコマンド(ライトコマンド)を格納している場合を想定する(OPERATION CODE=2Ah)。
【0071】
図11(A)は、データ101にEDC102を付加しない情報処理システムにおけるCOMMAND UPIU(d1)を示している。SCSIコマンド(c1)のOPERATION CODE(e1)は、ライトコマンドのコード(2Ah)である。データ101にEDC102を付加しない場合、SCSIコマンド(c1)のTransfer Length(e3)と、SCSIコマンドを格納するCOMMAND UPIU(d1)のExpected Data Transfer Length(d11)とは一致する。
【0072】
一方、図11(B)は、本実施形態の情報処理システム100におけるCOMMAND UPIU(d1)を示している。図7を参照して説明した通り、データ101にEDC102を付加する本実施形態の情報処理システム100においては、ホスト2のUFS層221が、SCSIコマンド(c1)のTransfer Length(e3)の値にEDC102の総データサイズを加えた値をCOMMAND UPIUのExpected Data Transfer Length(d11)に格納する。従って、SCSIコマンドのTransfer Lengthと、COMMAND UPIUのExpected Data Transfer Lengthとは一致しない。ストレージデバイス1のUFS層111は、この不一致によって、処理対象がEDC102を付加されたデータ101であることを認識し、データ101+EDC102を処理する準備を行う。具体的には、データ101に加えて、EDC102を書き込む準備を行う。換言すれば、本実施形態の情報処理システム100は、SCSIコマンドのTransfer Lengthと、COMMAND UPIUのExpected Data Transfer Lengthとが一致している場合には、データ101にEDC102を付加しないモードで動作することができる。
【0073】
次に、図12を参照して、DATA OUT UPIUに関して行われる、ストレージデバイス1のUFS層111の独自の動作について説明する。
【0074】
図12(A)は、EDC102をデータ101に付加しない情報処理システムにおけるDATA OUT UPIU(d3)を示している。データ101にEDC102を付加しない場合、データ101がそのままDATA OUT UPIUのDATA(d32)に格納されている。また、DATA OUT UPIUのData Transfer Count(d31)には、4Kバイトの倍数であるデータ101のデータサイズが格納されている。このData Transfer Countの値に基づき、DATA OUT UPIUからデータ101が取り出される。なお、Data Segment Length(d33)には、Data Transfer Countと同じ値が格納されている。
【0075】
一方、図12(B)は、本実施形態の情報処理システム100におけるDATA OUT UPIU(d3)を示している。ストレージデバイス1のUFS層111は、Data Transfer Count(d31)で示される、(4Kバイト+α)の倍数のデータサイズのデータ101+EDC102をDATA OUT UPIUから取り出す。ストレージデバイス1のUFS層111は、このデータ101+EDC102をデータ101とEDC102とに分離する。
【0076】
次に、図13を参照して、ロジック回路12のW/R処理部121が行い得る、UFS層111によって分離されたデータ101とEDC102とをNANDメモリ20に格納する第1の方法について説明する。
【0077】
図13(A)は、データ101にEDC102を付加しない情報処理システムにおけるデータ101のNANDメモリ20への格納例を示している。
【0078】
前述したように、NANDメモリ20の領域は、ページ(b10)単位で管理されている。各ページは、データエリア(b11)と冗長エリア(b12)とを含む。データ101は、ページのデータエリアへ格納される。
【0079】
冗長エリアは、論物管理領域(b31)と、ECC領域(b32)とを含む。論物管理領域には、各ページに割り当てられた論理アドレスが格納される。ECC領域には、ECC回路14によって生成されるECC104が格納される。論物管理領域のサイズとECC領域のサイズとの和は、冗長エリアのサイズよりも小さい。つまり、冗長エリアは、空き領域(b33)を含む。空き領域は、EDC102をデータ101に付加しない場合、すべてが未使用となる。
【0080】
一方、図13(B)は、本実施形態の情報処理システム100におけるデータ101およびEDC102のNANDメモリ20への第1格納例を示している。
【0081】
W/R処理部121は、データ101をデータエリア(b11)に格納することに加えて、そのデータ101用のEDC102を、同一ページの冗長エリア(b12)の未使用となっていた空き領域(b33)に格納する。なお、ECC領域b32に格納されるECC104は、データ101+EDC102に対応している。
【0082】
次に、図14を参照して、ロジック回路12のW/R処理部121が行い得る、UFS層111によって分離されたデータ101とEDC102とをNANDメモリ20に格納する第2の方法について説明する。
【0083】
図14(A)は、図13(A)と同様、データ101にEDC102を付加しない情報処理システムにおけるデータ101のNANDメモリ20への格納例を示している。図13(A)の説明と重複するので、図14(A)の説明は省略する。
【0084】
図14(B)は、本実施形態の情報処理システム100におけるデータ101およびEDC102のNANDメモリ20への第2格納例を示している。
【0085】
W/R処理部121は、データ101をデータエリア(b11)に格納することに加えて、そのデータ101用のEDC102を、コントローラ10のRAM13内に一時的に格納する。W/R処理部121は、RAM13内のEDC102が、EDC102のデータサイズとデータエリアのデータサイズとから定められる一定数分溜まったら、それらを一括して、データ101が格納されたページとは別のページのデータエリア(b11)に格納する。データ101とEDC102との対応関係は、たとえば予め定められた規則(順番)でEDC102をデータエリア内に配置することによって管理される。
【0086】
図15は、データ101の読み出しを要求する、OPERATION CODE(e1)がリードコマンドのコード(28h)であるSCSIコマンド(c1)を格納するCOMMAND UPIUを示す。
【0087】
図11に示した、OPERATION CODEがライトコマンドのコード(2Ah)であるSCSIコマンドと同様、EDC102をデータ101に付加しない場合には、SCSIコマンドのTransfer Length(e3)と、SCSIコマンドを格納するCOMMAND UPIU(d1)のExpected Data Transfer Length(d11)とは一致する(図15(A))。また、EDC102をデータ101に付加する場合には、SCSIコマンドのTransfer Lengthと、COMMAND UPIUのExpected Data Transfer Lengthとは一致しない(図15(B))。
【0088】
ストレージデバイス1のUFS層111は、この不一致によって、処理対象がEDC102を付加されたデータ101であることを認識し、データ101+EDC102を処理する準備を行う。具体的には、データ101に加えて、EDC102を読み出す準備を行う。
【0089】
次に、図16を参照して、ロジック回路12のW/R処理部121が行い得る、データ101とEDC102とをNANDメモリ20から読み出す第1の方法について説明する。
【0090】
図16(A)は、データ101にEDC102を付加しない情報処理システムにおけるNANDメモリ20からのデータ101の読み出し例を示している。
【0091】
データ101にEDC102を付加しない場合、ページ(b11)のデータエリア(b11)からデータ101が読み出され、ECC領域(b32)に格納されているECC104によって検査される。
【0092】
一方、図16(B)は、本実施形態の情報処理システム100おけるNANDメモリ20からのデータ101およびEDC102の第1の読み出し例を示している。
【0093】
W/R処理部121は、データエリア(b11)からデータ101を読み出すことに加えて、同一ページの冗長エリア(b12)の図16(A)であれば未使用となっている領域(b33)から、そのデータ101用のEDC102を読み出す。W/R処理部121は、データ101+EDC102について、ECC領域(b32)に格納されているECC104による検査をECC回路14に指示する。
【0094】
次に、図17を参照して、ロジック回路12のW/R処理部121が行い得る、データ101とEDC102とをNANDメモリ20から読み出す第2の方法について説明する。
【0095】
図17(A)は、図16(A)と同様、データ101にEDC102を付加しない情報処理システムにおけるNANDメモリ20からのデータ101の読み出し例を示している。図16(A)の説明と重複するので、図17(A)の説明は省略する。
【0096】
図17(B)は、本実施形態の情報処理システム100おけるNANDメモリ20からのデータ101およびEDC102の第2の読み出し例を示している。
【0097】
W/R処理部121は、データエリア(b11)からデータ101を読み出す。また、W/R処理部121は、このデータ101用のEDC102を含む所定数のEDC102を別のページのデータエリアから読み出し、たとえばコントローラ10内のRAM13に一時的に格納する。W/R処理部121は、読み出したデータ101およびEDC102のそれぞれについて、ECC領域(b32)に格納されているECC104による検査をECC回路14に指示する。
【0098】
次に、DATA IN UPIUに関して行われる、ストレージデバイス1のUFS層111の独自の動作について説明する。
【0099】
図18(A)は、EDC102をデータ101に付加しない情報処理システムにおけるDATA IN UPIU(d5)を示している。EDC102をデータ101に付加しない場合、DATA IN UPIUのDATA(d52)には、データ101がそのまま格納される。従って、DATA IN UPIUのData Transfer Count(d51)は4Kバイトの倍数の値となる。これに伴い、DATA IN UPIUのData Segment Length(d53)も4Kバイトの倍数の値となる(Data Transfer Countと同じ値)。
【0100】
一方、図18(B)は、本実施形態の情報処理システム100におけるDATA IN UPIU(d5)を示している。ストレージデバイス1のUFS層111は、データ101とEDC102とを結合し、DATA IN UPIUのDATA(d52)に格納する。ストレージデバイス1のUFS層111は、データ101+EDC102のデータサイズである(4Kバイト+α)の倍数の値をDATA IN UPIUのData Transfer Count(d51)に格納する。また、ストレージデバイス1のUFS層111は、Data Transfer Countと同じ値をDATA IN UPIUのData Segment Length(d53)に格納する。
【0101】
図19は、データの書き込み時におけるホスト2の動作手順を示すフローチャートである。
【0102】
ホスト2のUFS層221は、SCSI層から受け取ったSCSIコマンドをCOMMAND UPIUに格納する(S101)。UFS層221は、SCSIコマンドのTransfer LengthにEDC分を加えたサイズ((4096+α)×N)をCOMMAND UPIUのExpected Data Transfer Lengthに指定する(S102)。
【0103】
UFS層221は、ストレージデバイス1のUFS層111へCOMMAND UPIUを送信し(S103)、このCOMMAND UPIUに対して返送されてくるRTT UPIUを受信する(S104)。UFS層221は、RTT UPIUで指定されたサイズに基づき、SCSI層から受け取ったデータ(データ+EDC:(4Kバイト+α)×n)をDATA OUT UPIUに格納してストレージデバイス1のUFS層111へ送信する(S105)。
【0104】
図20は、データの書き込み時におけるストレージデバイス1の動作手順を示す第1のフローチャートである。
【0105】
ストレージデバイス1のUFS層111は、ホスト2のUFS層221から受信したCOMMAND UPIUに格納されているSCSIコマンドのTransfer Lengthと、COMMAND UPIUのExpected Data Transfer Lengthとを比較する(S201)。
【0106】
UFS層111は、SCSIコマンドのTransfer LengthとCOMMAND UPIUのExpected Data Transfer Lengthとが一致しない場合(S202:NO)、書き込み対象のデータがEDC付きであることを認識する(S203)。一方、一致する場合(S202:YES)、UFS層111は、書き込み対象のデータがEDC無しであることを認識する(S204)。
【0107】
図21は、データの書き込み時におけるストレージデバイス1の動作手順を示す第2のフローチャートである。図21には、図20のステップS203にて、書き込み対象のデータがEDC付きであることを認識した場合におけるストレージデバイス1の動作手順が示されている。
【0108】
ストレージデバイス1のUFS層111は、受信可能なデータサイズ(バッファサイズ)を通知するためのRTT UPIUをホスト2のUFS層221に送信し(S301)、このRTT UPIUに基づいて作成されて送信されてくるDATA OUT UPIUを受信する(S302)。UFS層111は、このDATA OUT UPIUに格納されているデータ(データ+EDC)を、データとEDCとに分離する(S303)。
【0109】
ストレージデバイス1のW/R処理部121は、NANDメモリ20のページのデータエリアにデータを格納する(S304)。また、W/R処理部121は、同一ページの冗長エリアにEDCを格納する(S305)。
【0110】
ストレージデバイス1のUFS層111は、COMMAND UPIUのExpected Data Transfer Lengthで指定されたサイズ分のデータを受信したかを判定する(S306)。指定されたサイズ分に達していない場合(S306:NO)、UFS層111は、ステップS301のRTT UPIUの送信を実行する。指定されたサイズ分に達している場合(S306:YES)、UFS層111は、RESPONSE UPIUをホスト2のUFS層221に送信する(S307)。これにより、データの書き込み処理は終了する。
【0111】
図22は、データの書き込み時におけるストレージデバイス1の動作手順を示す第3のフローチャートである。図22には、図20のステップS203にて、書き込み対象のデータがEDC付きであることを認識した場合におけるストレージデバイス1の別の動作手順が示されている。
【0112】
ストレージデバイス1のUFS層111は、受信可能なデータサイズ(バッファサイズ)を通知するためのRTT UPIUをホスト2のUFS層221に送信し(S401)、このRTT UPIUに基づいて作成されて送信されてくるDATA OUT UPIUを受信する(S402)。UFS層111は、このDATA OUT UPIUに格納されているデータ(データ+EDC)を、データとEDCとに分離する(S403)。
【0113】
ストレージデバイス1のW/R処理部121は、NANDメモリ20のページのデータエリアにデータを格納する(S404)。また、W/R処理部121は、キャッシュ(RAM13)にEDCを格納する(S405)。W/R処理部121は、キャッシュに一定量のEDCが溜まったかを判定する(S406)。一定量は、NANDメモリ20のページのデータエリアに収まるEDC数によって定まる。溜まっていた場合(S406:YES)、W/R処理部121は、キャッシュ内のEDCを、NANDメモリ20のページのデータエリアに格納する(S407)。
【0114】
ストレージデバイス1のUFS層111は、COMMAND UPIUのExpected Data Transfer Lengthで指定されたサイズ分のデータを受信したかを判定する(S408)。指定されたサイズ分に達していない場合(S408:NO)、UFS層111は、ステップS401のRTT UPIUの送信を実行する。指定されたサイズ分に達している場合(S408:YES)、UFS層111は、RESPONSE UPIUをホスト2のUFS層221に送信する(S411)。これにより、データの書き込み処理は終了する。
【0115】
一方、キャッシュに一定量のEDCが溜まっていない場合(S406:NO)、UFS層111は、COMMAND UPIUのExpected Data Transfer Lengthで指定されたサイズ分のデータを受信したかを判定する(S409)。指定されたサイズ分に達していない場合(S409:NO)、UFS層111は、ステップS401のRTT UPIUの送信を実行する。指定されたサイズ分に達している場合(S409:YES)、W/R処理部121は、キャッシュ内のEDCを、NANDメモリ20のページのデータエリアに格納する(S410)。そして、UFS層111は、RESPONSE UPIUをホスト2のUFS層221に送信する(S411)。これにより、データの書き込み処理は終了する。
【0116】
図23は、データの読み出し時におけるホスト2の動作手順を示すフローチャートである。
【0117】
ホスト2のUFS層221は、SCSI層から受け取ったSCSIコマンドをCOMMAND UPIUに格納する(S501)。UFS層221は、SCSIコマンドのTransfer Lengthの値にEDC分を加えたサイズ((4096+α)×N)をCOMMAND UPIUのExpected Data Transfer Lengthに指定する(S502)。
【0118】
UFS層221は、ストレージデバイス1のUFS層111へCOMMAND UPIUを送信する(S503)。UFS層221は、このCOMMAND UPIUの送信後、データ(データ+EDC)が格納されたDATA IN UPIUをストレージデバイス1のUFS層111から受信する(S504)。DATA IN UPIUの受信は、複数回実行され得る。
【0119】
ホスト2のSCSI層は、EDCを用いてデータを検査する(S505)。エラーが検出された場合(S506:NO)、SCSI層は、たとえばデータの要求元へエラーを通知するエラー処理を実行する(S507)。EDCに代えてECCが付加される場合、エラー処理は、エラーの訂正となる。エラー処理後、データの読み出し処理は終了する。エラーが検出されない場合は(S506:YES)、ステップS507を経ることなく、データの読み出し処理は終了する。
【0120】
図24は、データの読み出し時におけるストレージデバイス1の動作手順を示す第1のフローチャートである。データの書き込み時と同様、ストレージデバイス1のUFS層111は、SCSIコマンドのTransfer LengthとCOMMAND UPIUのExpected Data Transfer Lengthとが一致しない場合、読み出し対象のデータがEDC付きであることを認識する。図24には、読み出し対象のデータがEDC付きであることを認識した場合におけるストレージデバイス1の動作手順が示されている。
【0121】
ストレージデバイス1のW/R処理部121は、NANDメモリ20のページのデータエリアからデータを読み出す(S601)。また、W/R処理部121は、同一ページの冗長エリアからEDCを読み出す(S602)。ステップS601のデータの読み出しと、ステップS602のEDCの読み出しとは、DATA IN UPIUに格納可能なサイズに応じて複数回実行され得る。
【0122】
ストレージデバイス1のUFS層111は、データとEDCとを結合してDATA IN UPIUに格納し(S603)、このDATA IN UPIUをホスト2のUFS層221へ送信する(S604)。UFS層111は、COMMAND UPIUのExpected Data Transfer Lengthで指定されたサイズ分のデータを送信したかを判定する(S605)。指定されたサイズ分に達していない場合(S605:NO)、W/R処理部121は、ステップS601のデータの読み出しおよびステップS602のEDCの読み出しを実行する。指定されたサイズ分に達している場合(S605:YES)、UFS層111は、RESPONSE UPIUをホスト2のUFS層221に送信する(S606)。これにより、データの読み出し処理は終了する。
【0123】
図25は、データの読み出し時におけるストレージデバイス1の動作手順を示す第2のフローチャートである。図25には、読み出し対象のデータがEDC付きであることを認識した場合におけるストレージデバイス1の別の動作手順が示されている。
【0124】
ストレージデバイス1のW/R処理部121は、NANDメモリ20のページのデータエリアからデータを読み出す(S701)。W/R処理部121は、そのデータ用のEDCがキャッシュ(RAM13)に存在するかを判定する(S702)。キャッシュに存在しない場合(S702:NO)、W/R処理部121は、EDCをNANDメモリ20のページのデータエリアから読み出す(S703)。キャッシュに存在する場合(S702:YES)、ステップS703はスキップされる。ステップS701のデータの読み出しは、DATA IN UPIUに格納可能なサイズに応じて複数回実行され得る。
【0125】
ストレージデバイス1のUFS層111は、データとEDCとを結合してDATA IN UPIUに格納し(S704)、このDATA IN UPIUをホスト2のUFS層221へ送信する(S705)。UFS層111は、COMMAND UPIUのExpected Data Transfer Lengthで指定されたサイズ分のデータを送信したかを判定する(S706)。指定されたサイズ分に達していない場合(S706:NO)、W/R処理部121は、ステップS701のデータの読み出しを実行する。指定されたサイズ分に達している場合(S706:YES)、UFS層111は、RESPONSE UPIUをホスト2のUFS層221に送信する(S707)。これにより、データの読み出し処理は終了する。
【0126】
以上のように、本実施形態の情報処理システム100においては、4Kバイトのデータ101と、4Kバイトに満たない端数(α)のサイズのEDC102とを、ストレージデバイス1の書き込み効率を悪化させないように、NANDメモリ20へ格納することが実現される。また、4Kバイトの倍数とは異なる、(4Kバイト+α)の倍数のサイズのデータ(データ101+EDC102)を、ホスト2とストレージデバイス1との間で送受信することが実現される。つまり、本実施形態の情報処理システム100は、書き込み効率の悪化を防ぎつつ、データの伝送経路全体についてデータを保護することができる。
【0127】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0128】
1…ストレージデバイス、2…ホスト、3…インターフェース、10…コントローラ、11…ホストインターフェース、12…ロジック回路、13…RAM、14…ECC回路、15…NANDインターフェース、20…NANDメモリ、21…CPU、22…通信装置、100…情報処理システム、101…データ、102…EDC、103…CRC、104…ECC、111…UFS層、121…W/R処理部、221…UFS層。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25