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

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

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

<>
  • 特許-メモリシステム 図1
  • 特許-メモリシステム 図2
  • 特許-メモリシステム 図3
  • 特許-メモリシステム 図4
  • 特許-メモリシステム 図5
  • 特許-メモリシステム 図6
  • 特許-メモリシステム 図7
  • 特許-メモリシステム 図8
  • 特許-メモリシステム 図9
  • 特許-メモリシステム 図10
  • 特許-メモリシステム 図11
  • 特許-メモリシステム 図12
  • 特許-メモリシステム 図13
  • 特許-メモリシステム 図14
  • 特許-メモリシステム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-06
(45)【発行日】2024-12-16
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 21/60 20130101AFI20241209BHJP
   G06F 12/14 20060101ALI20241209BHJP
   G06F 3/06 20060101ALI20241209BHJP
   H04L 9/14 20060101ALI20241209BHJP
【FI】
G06F21/60 320
G06F12/14 510D
G06F3/06 301K
H04L9/14
【請求項の数】 13
(21)【出願番号】P 2021146946
(22)【出願日】2021-09-09
(65)【公開番号】P2023039697
(43)【公開日】2023-03-22
【審査請求日】2024-03-13
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】小川 貴也
(72)【発明者】
【氏名】松井 一
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2020-150497(JP,A)
【文献】特開2020-115250(JP,A)
【文献】特開2017-027388(JP,A)
【文献】特開2011-070664(JP,A)
【文献】米国特許出願公開第2016/0203342(US,A1)
【文献】米国特許出願公開第2016/0246737(US,A1)
【文献】米国特許出願公開第2020/0125770(US,A1)
【文献】米国特許第10164770(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
G06F 12/14
G06F 3/06
H04L 9/14
(57)【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
記憶装置と、暗号化/復号回路と、鍵探索回路とを具備し、
前記暗号化/復号回路は、
前記ホストから受信された平文データを前記鍵探索回路によって取得された暗号鍵を使用して暗号化することによって前記記憶装置に書き込まれるべき暗号文データを生成し、前記記憶装置から読み出された前記暗号文データを前記鍵探索回路によって取得された前記暗号鍵を使用して復号することによって前記平文データを生成するように構成され、
前記鍵探索回路は、
前記ホストから受信されたアクセス要求によって指定された論理ブロックアドレスと、前記アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを指定する鍵探索要求を前記暗号化/復号回路から受信したことに応じ、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と、前記暗号化/復号回路が使用すべき暗号鍵とを前記暗号化/復号回路に出力するように構成され、
前記鍵探索回路は、
前記メモリシステムの論理ブロックアドレス空間に設定された複数のレンジの各々について、前記レンジに含まれる連続する論理ブロックアドレスの範囲を示す情報と、前記レンジに対するアクセスの許可または禁止を示すアクセス可否情報と、前記レンジに対応するデータに適用すべき暗号鍵と、を保持するレンジテーブルと、
鍵探索要求に基づいて前記レンジテーブルを参照することによって得られる、アクセス可否情報と暗号鍵とを含む探索結果を、前記鍵探索要求と共に保持する探索結果バッファと、を管理し、
前記鍵探索回路は、さらに、
前記受信した鍵探索要求が、前記探索結果バッファの保持内容にヒットするかどうかを判定するヒット判定回路と、
前記探索結果バッファの保持内容を更新するかどうかを判定する更新判定回路と、を含み、
前記ヒット判定回路が、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしたと判定した場合、前記探索結果バッファに保持された前記探索結果を前記暗号化/復号回路に出力し、
前記ヒット判定回路が、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしなかったと判定した場合、前記受信した鍵探索要求に基づいて前記レンジテーブルを参照することによって、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と前記論理ブロックアドレスに対応するデータに適用すべき暗号鍵とを含む探索結果を前記レンジテーブルから取得し、前記取得した探索結果を前記暗号化/復号回路に出力し、
前記更新判定回路が前記探索結果バッファの保持内容を更新すると判定した場合、前記受信した鍵探索要求と、前記レンジテーブルから取得した前記探索結果とで、前記探索結果バッファの保持内容を更新する
ように構成されている
メモリシステム。
【請求項2】
前記更新判定回路は、
前記受信した鍵探索要求によって指定される前記論理ブロックアドレスが含まれる一括探索単位の内部に、前記複数のレンジのレンジ境界が含まれているか否かに基づいて、前記探索結果バッファの保持内容を更新するかどうかを判定するように構成され、前記一括探索単位は、前記メモリシステムをアクセスするための論理ブロックアドレス空間を連続する所定個数の論理ブロックアドレスを含む単位ごとに区切ることによって得られる複数の一括探索単位のうちの一つであり、
前記ヒット判定回路は、
前記受信した鍵探索要求によって指定される前記論理ブロックアドレスと前記探索結果バッファに保持されている鍵探索要求によって指定される論理ブロックアドレスとが同じ一括探索単位に含まれているか否かに基づいて、前記受信した鍵探索要求が、前記探索結果バッファの保持内容にヒットするかどうかを判定するように構成されている
請求項1に記載のメモリシステム。
【請求項3】
前記ヒット判定回路は、
前記受信した鍵探索要求によって指定される前記論理ブロックアドレスと前記探索結果バッファに保持されている鍵探索要求によって指定される論理ブロックアドレスとが同じ一括探索単位に含まれている場合、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしたと判定し、
前記受信した鍵探索要求によって指定される前記論理ブロックアドレスと前記探索結果バッファに保持されている鍵探索要求によって指定される論理ブロックアドレスとが同じ一括探索単位に含まれていない場合、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしなかったと判定するように構成されている
請求項2に記載のメモリシステム。
【請求項4】
前記複数の一括探索単位の各々は、連続する8個の論理ブロックアドレスを含むクラスタである
請求項2に記載のメモリシステム。
【請求項5】
前記鍵探索回路は、
前記ホストから受信された前記アクセス要求によって指定されたアクセス範囲に含まれる論理ブロックアドレスの数と同数の複数の鍵探索要求であって、前記アクセス範囲に含まれる一つの論理ブロックアドレスと、前記アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを各々が指定する複数の鍵探索要求を前記暗号化/復号回路から受信し、
一つの鍵探索要求が前記暗号化/復号回路から受信される度に、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と、前記暗号化/復号回路が使用すべき暗号鍵とを前記暗号化/復号回路に出力するように構成されている
請求項1に記載のメモリシステム。
【請求項6】
前記ホストからの前記アクセス要求は、アクセスされるべきネームスペースの識別子と、アクセス範囲に含まれる最初のセクタを示す開始論理ブロックアドレスと、前記アクセス範囲に含まれる論理ブロックアドレスの数とを指定し、
前記複数の鍵探索要求の各々は、前記ネームスペースの識別子と、前記アクセス範囲に含まれる一つの論理ブロックアドレスと、前記アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを含む
請求項5に記載のメモリシステム。
【請求項7】
前記記憶装置は不揮発性半導体メモリである
請求項1に記載のメモリシステム。
【請求項8】
前記記憶装置は磁気ディスク媒体である
請求項1に記載のメモリシステム。
【請求項9】
ホストに接続可能なメモリシステムであって、
記憶装置と、暗号化/復号回路と、鍵探索回路とを具備し、
前記暗号化/復号回路は、
前記ホストから受信された平文データを前記鍵探索回路によって取得された暗号鍵を使用して暗号化することによって前記記憶装置に書き込まれるべき暗号文データを生成し、前記記憶装置から読み出された前記暗号文データを前記鍵探索回路によって取得された前記暗号鍵を使用して復号することによって前記平文データを生成するように構成され、
前記鍵探索回路は、
前記ホストから受信されたアクセス要求によって指定されたアクセス範囲に含まれる論理ブロックアドレスの数と同数の複数の鍵探索要求であって、前記アクセス範囲に含まれる一つの論理ブロックアドレスと、前記アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを各々が指定する複数の鍵探索要求を前記暗号化/復号回路から受信し、
前記複数の鍵探索要求の一つの鍵探索要求を受信する毎に、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と、前記論理ブロックアドレスに対応するデータに適用すべき暗号鍵とを前記暗号化/復号回路に出力するように構成され、
前記鍵探索回路は、
前記メモリシステムの論理ブロックアドレス空間に設定された複数のレンジの各々について、前記レンジに含まれる連続する論理ブロックアドレスの範囲を示す情報と、前記レンジに対するアクセスの許可または禁止を示すアクセス可否情報と、前記レンジに対応するデータに適用すべき暗号鍵と、を保持するレンジテーブルと、
鍵探索要求に基づいて前記レンジテーブルを参照することによって得られる、アクセス可否情報と暗号鍵とを含む探索結果を、前記鍵探索要求と共に保持する探索結果バッファと、を管理し、
前記鍵探索回路は、さらに、
前記受信した鍵探索要求によって指定される前記論理ブロックアドレスと前記探索結果バッファに保持されている鍵探索要求によって指定される論理ブロックアドレスとが同じ一括探索単位に含まれているか否かに基づいて、前記受信した鍵探索要求が、前記探索結果バッファの保持内容にヒットするかどうかを判定するヒット判定回路と、
前記受信した鍵探索要求によって指定される前記論理ブロックアドレスが含まれる一括探索単位の内部に、前記複数のレンジのレンジ境界が含まれているか否かに基づいて、前記探索結果バッファの保持内容を更新するかどうかを判定する更新判定回路と、を含み、前記一括探索単位は、前記メモリシステムをアクセスするための論理ブロックアドレス空間を連続する所定個数の論理ブロックアドレスを含む単位ごとに区切ることによって得られる複数の一括探索単位のうちの一つであり、
前記ヒット判定回路が、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしたと判定した場合、前記探索結果バッファに保持された前記探索結果を前記暗号化/復号回路に出力し、
前記ヒット判定回路が、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしなかったと判定した場合、前記受信した鍵探索要求に基づいて前記レンジテーブルを参照することによって、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と前記論理ブロックアドレスに対応するデータに適用すべき暗号鍵とを含む探索結果を前記レンジテーブルから取得し、前記取得した探索結果を前記暗号化/復号回路に出力し、
前記更新判定回路が前記探索結果バッファの保持内容を更新すると判定した場合、前記受信した鍵探索要求と、前記レンジテーブルから取得した前記探索結果とで、前記探索結果バッファの保持内容を更新する
ように構成されている
メモリシステム。
【請求項10】
前記複数の一括探索単位の各々は、連続する8個の論理ブロックアドレスを含むクラスタである
請求項9に記載のメモリシステム。
【請求項11】
前記ホストからの前記アクセス要求は、アクセスされるべきネームスペースの識別子と、アクセス範囲に含まれる最初のセクタを示す開始論理ブロックアドレスと、前記アクセス範囲に含まれる論理ブロックアドレスの数とを指定し、
前記複数の鍵探索要求の各々は、前記ネームスペースの識別子と、前記アクセス範囲に含まれる一つの論理ブロックアドレスと、前記アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを含む
請求項9に記載のメモリシステム。
【請求項12】
前記記憶装置は不揮発性半導体メモリである
請求項9に記載のメモリシステム。
【請求項13】
前記記憶装置は磁気ディスク媒体である
請求項9に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、記憶装置に書き込まれるべきデータを暗号化する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを含むソリッドステートドライブ(SSD)が知られている。
【0003】
最近では、データ暗号化機能を備えたSSDも開発されている。データ暗号化機能を備えたSSDは、自己暗号ドライブ(Self-Encrypting Drive)として使用され得る。
【0004】
データ暗号化機能を備えたSSDのようなメモリシステムにおいては、複数のレンジに対応する複数の暗号鍵を選択的に使用して、データの暗号化および復号が行われる。
【0005】
このため、メモリシステムのI/Oスループットの向上またはI/Oレイテンシの削減を実現するためには、暗号鍵の探索に要する時間を削減するための新たな技術の実現が必要とされる。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許第9,904,807号明細書
【文献】米国特許第10,164,770号明細書
【文献】米国特許出願公開第2020/0125770号明細書
【非特許文献】
【0007】
【文献】J.Henessy and D.Patterson,「Computer Architecture,Sixth Edition: A Quantitative Approach」 Morgan Kaufmann Publishers,2017.
【文献】「Trusted Computing Group and NVMe Work Group Joint White Paper: TCG Storage, Opal, and NVMe」,2015.
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の一実施形態が解決しようとする課題は、暗号鍵の探索に要する時間を削減できるメモリシステムを提供することである。
【課題を解決するための手段】
【0009】
実施形態によれば、ホストに接続可能なメモリシステムは、記憶装置と、暗号化/復号回路と、鍵探索回路とを具備する。前記暗号化/復号回路は、前記ホストから受信された平文データを前記鍵探索回路によって取得された暗号鍵を使用して暗号化することによって前記記憶装置に書き込まれるべき暗号文データを生成し、前記記憶装置から読み出された前記暗号文データを前記鍵探索回路によって取得された前記暗号鍵を使用して復号することによって前記平文データを生成するように構成されている。前記鍵探索回路は、前記ホストから受信されたアクセス要求によって指定された論理ブロックアドレスと、前記アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを指定する鍵探索要求を前記暗号化/復号回路から受信したことに応じ、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と、前記暗号化/復号回路が使用すべき暗号鍵とを前記暗号化/復号回路に出力するように構成されている。前記鍵探索回路は、前記メモリシステムの論理ブロックアドレス空間に設定された複数のレンジの各々について、前記レンジに含まれる連続する論理ブロックアドレスの範囲を示す情報と、前記レンジに対するアクセスの許可または禁止を示すアクセス可否情報と、前記レンジに対応するデータに適用すべき暗号鍵と、を保持するレンジテーブルと、鍵探索要求に基づいて前記レンジテーブルを参照することによって得られる、アクセス可否情報と暗号鍵とを含む探索結果を、前記鍵探索要求と共に保持する探索結果バッファと、を管理する。前記鍵探索回路は、さらに、前記受信した鍵探索要求が、前記探索結果バッファの保持内容にヒットするかどうかを判定するヒット判定回路と、前記探索結果バッファの保持内容を更新するかどうかを判定する更新判定回路と、を含む。前記ヒット判定回路が、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしたと判定した場合、前記鍵探索回路は、前記探索結果バッファに保持された前記探索結果を前記暗号化/復号回路に出力する。前記ヒット判定回路が、前記受信した鍵探索要求が前記探索結果バッファの保持内容にヒットしなかったと判定した場合、前記鍵探索回路は、前記受信した鍵探索要求に基づいて前記レンジテーブルを参照することによって、前記受信した鍵探索要求によって指定された前記論理ブロックアドレスに対するアクセスの許可または禁止を示すアクセス可否情報と前記論理ブロックアドレスに対応するデータに適用すべき暗号鍵とを含む探索結果を前記レンジテーブルから取得し、前記取得した探索結果を前記暗号化/復号回路に出力する。前記更新判定回路が前記探索結果バッファの保持内容を更新すると判定した場合、前記鍵探索回路は、前記受信した鍵探索要求と、前記レンジテーブルから取得した前記探索結果とで、前記探索結果バッファの保持内容を更新する。
【図面の簡単な説明】
【0010】
図1】実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
図2】実施形態に係るメモリシステムに含まれるコントローラおよび記憶装置の構成例を示すブロック図。
図3】実施形態に係るメモリシステムにおいて管理されるレンジテーブルを使用して実行されるデータ暗号化処理を示す図。
図4】実施形態に係るメモリシステムにおいて実行されるデータ暗号化処理およびデータ復号処理の手順を示すシーケンス図。
図5】比較例に係るプロセッサで使用される、仮想アドレスを物理アドレスに変換する処理を示す図。
図6】比較例に係るプロセッサで使用されるTLB(Translation Look-aside Buffer)の構成例を示す図。
図7】実施形態に係るメモリシステムにおいて実行されるレンジ設定処理の例を示す図。
図8】実施形態に係るメモリシステムにおいて管理されるレンジテーブルの内容の例を示す図。
図9】実施形態に係るメモリシステムのコントローラに含まれる鍵探索回路の構成例を示すブロック図。
図10】探索結果バッファヒットが起きた場合における鍵探索回路の動作を示す図。
図11】探索結果バッファミスが起き、且つ、探索結果バッファの保持内容を更新すると判定した場合における鍵探索回路の動作を示す図。
図12】探索結果バッファミスが起き、且つ、探索結果バッファの保持内容を更新しないと判定した場合における鍵探索回路の動作を示す図。
図13】実施形態に係るメモリシステムにおいて実行される探索結果バッファヒット判定処理の手順を示すフローチャート。
図14】実施形態に係るメモリシステムにおいて実行される探索結果バッファ更新判定処理の手順を示すフローチャート。
図15】ホストからのアクセス要求によって指定されるアクセス範囲に含まれる論理ブロックアドレス毎に実行される鍵探索動作の具体例を示す図。
【発明を実施するための形態】
【0011】
以下、図面を参照して、実施形態を説明する。
まず、実施形態に係るメモリシステムの構成について説明する。図1は、実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図である。情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。
【0012】
ホスト2は、情報処理装置である。ホスト2は、例えば、パーソナルコンピュータ、またはサーバコンピュータである。ホスト2は、メモリシステム3にアクセスする。具体的には、ホスト2は、データを書き込むためのコマンドであるライトコマンドをメモリシステム3に送信する。また、ホスト2は、データを読み出すためのコマンドであるリードコマンドをメモリシステム3に送信する。
【0013】
メモリシステム3は、ストレージデバイスである。メモリシステム3は、バス100を介して、ホスト2に接続可能である。
【0014】
バス100は、主として、ホスト2からメモリシステム3へのI/Oコマンドの送信、およびメモリシステム3からホスト2への応答の送信のために使用される。I/Oコマンドは、不揮発性メモリに対するデータの書き込みまたは読み出しを行うためのコマンドである。I/Oコマンドとしては、例えば、ライトコマンド、リードコマンドがある。
【0015】
バス100を介したホスト2とメモリシステム3との間の通信は、例えば、NVM ExpressTM(NVMeTM)規格に準拠して実行される。バス100は、例えば、PCI ExpressTMバス(PCIeTMバス)である。
【0016】
バス100がPCIeバスである場合、バス100は複数のレーンを含む。複数のレーンの各々は、データ送信用の差動信号線ペアとデータ受信用の差動信号線ペアとを含む全2重データ伝送路である。
【0017】
次に、ホスト2の内部構成を説明する。ホスト2は、プロセッサ21と、メモリ22と、コネクタ23とを含む。
【0018】
プロセッサ21は、CPU(Central Processing Unit)である。プロセッサ21は、バス100を介してメモリシステム3との通信を行う。プロセッサ21は、メモリ22にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアは、メモリシステム3、または、ホスト2に接続された別のストレージデバイスから、メモリ22にロードされる。ホストソフトウェアは、オペレーティングシステム、ファイルシステム、デバイスドライバ、アプリケーションプログラムなどを含む。
【0019】
メモリ22は、揮発性のメモリである。メモリ22は、例えば、DRAM(Dynamic Random Access Memory)のようなランダムアクセスメモリである。
【0020】
コネクタ23は、周辺デバイスを接続するコネクタである。コネクタ23は、例えば、PCIeコネクタである。
【0021】
次に、メモリシステム3の内部構成を説明する。メモリシステム3は、コントローラ4と、記憶装置5と、DRAM6と、コネクタ7とを含む。
【0022】
コントローラ4は、記憶装置5を制御するメモリコントローラである。コントローラ4は、例えば、System-on-a-Chip(SoC)である。コントローラ4は、記憶装置5と通信可能に接続されている。コントローラ4は、記憶装置5に対するデータの書き込みおよび読み出しを実行する。また、コントローラ4は、バス100を介してホスト2との通信を実行する。
【0023】
記憶装置5は、NAND型フラッシュメモリのような不揮発性メモリである。本実施形態では、メモリシステム3が、記憶装置5としてNAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)として実現される場合について例示するが、記憶装置5としてNOR型フラッシュメモリ、MRAM(Magnetoresistive Random access memory:磁気抵抗メモリ)、PRAM(Phase change Random access memory:相変化メモリ)、ReRAM(Resistive Random access memory:抵抗変化型メモリ)、FeRAM(Ferroelectric Random Access Memory)等のNAND型フラッシュメモリ以外の不揮発性半導体メモリが設けられていてもよい。また、本実施形態に係るメモリシステム3は、不揮発性メモリを備えるSDカードやUSBメモリとして実現されてもよいし、記憶装置5として不揮発性半導体メモリの代わりに磁気ディスク媒体を備えるハードディスクドライブ(HDD)として実現されてもよい。
【0024】
DRAM6は、揮発性のメモリである。DRAM6の記憶領域の一部は、例えば、データを一時的に格納するためのデータバッファとして使用される。また、DRAM6の記憶領域の他の一部は、コントローラ4によって使用される管理データを格納するために使用される。
【0025】
次に、コントローラ4の内部構成について説明する。図2は、実施形態に係るメモリシステム3に含まれるコントローラ4および記憶装置5の構成例を示すブロック図である。図2では、メモリシステム3が、記憶装置5としてNAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)として実現されている場合が例示されている。
【0026】
メモリシステム3は、データ暗号化機能を有する自己暗号ドライブである。メモリシステム3は、例えば、TCG Opal規格に準拠したNVM ExpressTM(NVMeTM) SSDとして実現されている。
【0027】
コントローラ4は、ホストインタフェース回路(I/F)11、CPU12、NANDインタフェース回路(I/F)13、DRAMインタフェース回路(I/F)14、スタテックランダムアクセスメモリ(SRAM)15、鍵探索回路16、アクセス許可判定回路17、および暗号化/復号回路18を含む。ホストインタフェース回路11、CPU12、NANDインタフェース回路13、DRAMインタフェース回路14、SRAM15、鍵探索回路16、アクセス許可判定回路17、および暗号化/復号回路18は、内部バス10に接続されている。
【0028】
ホストインタフェース回路11は、ハードウェアインターフェースである。ホストインタフェース回路11は、バス100を介してホスト2との通信を実行する。ホストインタフェース回路11とホスト2との間の通信は、例えば、NVMe規格に準拠して実行される。ホストインタフェース回路11は、ホスト2から様々なコマンドを受信する。様々なコマンドは、ライトコマンド、およびリードコマンド、等を含む。
【0029】
CPU12は、プロセッサである。CPU12は、メモリシステム3への電力の供給に応じて図示しないROMまたは記憶装置5から制御プログラム(ファームウェア)をDRAM6またはSRAM15にロードする。CPU12は、ロードした制御プログラム(ファームウェア)を実行することによって様々な処理を行う。CPU12は、例えば、フラッシュトランスレーション層(FTL)として、記憶装置5として使用されるNAND型フラッシュメモリ151、152、…に記憶されたデータの管理、およびNAND型フラッシュメモリ151、152、…に含まれるブロックの管理を実行する。データの管理とは、例えば、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理である。論理アドレスは、メモリシステム3にアクセスするためにホスト2によって使用されるアドレスである。論理アドレスは、例えば、論理ブロックアドレスLBAである。物理アドレスは、NAND型フラッシュメモリ151、152、…に含まれる物理的な記憶位置を示すアドレスである。NAND型フラッシュメモリ151、152、…に含まれるブロックの管理とは、例えば、NAND型フラッシュメモリ151、152、…に含まれる不良ブロック(バッドブロック)の管理と、ウェアレベリングと、ガベージコレクションである。
【0030】
NANDインタフェース回路13は、記憶装置5を制御する記憶装置インタフェース回路の一例である。NANDインタフェース回路13は、NAND型フラッシュメモリ151、152、…を制御する回路である。NANDインタフェース回路13は、例えば、複数のチャンネルを介してNAND型フラッシュメモリ151、152、…にそれぞれ接続される。
【0031】
DRAMインタフェース回路14は、DRAM6を制御する回路である。
【0032】
SRAM15は、DRAM6よりも高速アクセス可能な揮発性のメモリである。DRAM6の代わりに、SRAM15の記憶領域の一部が、データバッファとして使用されてもよい、また、SRAM15の記憶領域の他の一部は、コントローラ4によって使用される管理データを格納するためにも使用され得る。
【0033】
鍵探索回路16、アクセス許可判定回路17、および暗号化/復号回路18は、データ暗号化機能を実現するために使用されるハードウェアである。
【0034】
鍵探索回路16は、鍵探索処理を実行する回路である。鍵探索処理は、暗号化/復号回路18から受信される鍵探索要求によって指定されたLBAに対するアクセスの許可または禁止を示すアクセス可否情報と、暗号化/復号回路18が使用すべき暗号鍵とを暗号化/復号回路18に出力する処理である。暗号化/復号回路18が使用すべき暗号鍵とは、鍵探索要求によって指定されたLBAに対応するデータの暗号化または復号に使用すべき暗号鍵を意味する。
【0035】
鍵探索回路16は、レンジテーブルを管理する。レンジテーブルは、メモリシステム3の論理ブロックアドレス空間に設定された複数のレンジの各々に関する情報を格納するためのテーブルである。レンジテーブルは、複数のレンジ(LBA範囲)に対応する複数のエントリを含む。レンジテーブルの複数のエントリの各々は、あるレンジに属するLBA範囲を示す情報と、このレンジに対するアクセスの許可または禁止を示すアクセス可否情報と、このレンジに対応するデータに適用すべき暗号鍵と、を保持する。
【0036】
暗号化/復号回路18から出力される鍵探索要求は、ホスト2から受信されたアクセス要求(ライトコマンドまたはリードコマンド)によって指定されたLBAと、このアクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを指定する。
【0037】
暗号化/復号回路18から鍵探索要求を受信した場合、鍵探索回路16は、基本的には、レンジテーブルを参照することによって、アクセス可否情報と暗号鍵とを含む探索結果をレンジテーブルから取得する。
【0038】
レンジテーブルは、メモリシステム3の論理ブロックアドレス空間に設定された複数のレンジ(LBAレンジ)の各々に関する情報を格納するためのテーブルである。レンジテーブルは、複数のレンジに対応する複数のエントリを含む。複数のエントリの各々は、対応するレンジに含まれる連続するLBAの範囲を示す情報と、このレンジに対するアクセスの許可または禁止を示すアクセス可否情報と、このレンジに対応するデータに適用すべき暗号鍵と、を保持する。
【0039】
本実施形態に係るメモリシステム3においては、鍵探索回路16は、さらに、探索結果バッファを管理する。探索結果バッファは、鍵探索要求に基づいてレンジテーブルを参照することによって得られる探索結果を、この鍵探索要求と共に保持するために使用される。探索結果は、アクセス可否情報と暗号鍵とを含む。探索結果バッファは、レンジテーブルよりも読み出し速度が速いメモリに記憶され得る。例えば、レンジテーブルがDRAM6に格納されている場合、探索結果バッファは、SRAM15に格納され得る。また、レンジテーブルがSRAM15に格納されている場合、探索結果バッファは、鍵探索回路16のフリップフロップ回路(不図示)に格納され得る。なお、探索結果バッファは、レンジテーブルが格納されているメモリに格納されていてもよい。探索結果バッファに含まれるエントリの数は、レンジテーブルに含まれるエントリの数よりも少ない。したがって、探索結果バッファとレンジテーブルとが同じメモリに格納されている場合であっても、探索結果バッファから高速に探索結果を取得することができる。
【0040】
鍵探索回路16は、また、探索結果バッファヒット判定回路と、探索結果バッファ更新判定回路とをさらに含む。
【0041】
探索結果バッファヒット判定回路は、受信した鍵探索要求が、探索結果バッファの保持内容にヒットするかどうかを判定するヒット判定回路である。探索結果バッファヒット判定回路は、受信した鍵探索要求と探索結果バッファに保持されている鍵探索要求とを比較することによって、受信した鍵探索要求が、探索結果バッファの保持内容にヒットするかどうかを判定することができる。
【0042】
探索結果バッファヒット判定回路が、受信した鍵探索要求が探索結果バッファの保持内容にヒットしたと判定した場合、鍵探索回路16は、探索結果バッファに保持されている探索結果を暗号化/復号回路18に出力する。
【0043】
一方、探索結果バッファヒット判定回路が、受信した鍵探索要求が探索結果バッファの保持内容にヒットしなかったと判定した場合、鍵探索回路16は、受信した鍵探索要求に基づいてレンジテーブルを参照することによって探索結果をレンジテーブルから取得し、取得した探索結果を暗号化/復号回路18に出力する。レンジテーブルから取得した探索結果は、受信した鍵探索要求によって指定されたLBAに対するアクセスの許可または禁止を示すアクセス可否情報と、このLBAに対応するデータに適用すべき暗号鍵とを含む。
【0044】
探索結果バッファ更新判定回路は、探索結果バッファの保持内容を更新するかどうかを判定する判定回路である。探索結果バッファ更新判定回路が探索結果バッファの保持内容を更新すると判定した場合、鍵探索回路16は、受信した鍵探索要求と、レンジテーブルから取得した探索結果とで、探索結果バッファの保持内容を更新する。つまり、受信した鍵探索要求と、レンジテーブルから取得した探索結果とが、探索結果バッファに格納される。
【0045】
このように、本実施形態に係るメモリシステム3においては、鍵探索回路16は、探索結果バッファと、レンジテーブルとを使用して、鍵探索処理を実行する。探索結果バッファは、ある鍵探索要求と、この鍵探索要求に基づいてレンジテーブルを参照することによって得られた探索結果との双方を保持している。したがって、暗号化/復号回路18から受信された新たな鍵探索要求にマッチする探索結果が探索結果バッファに保持されているかるどうかを判定することができる。よって、受信した鍵探索要求が探索結果バッファの保持内容にヒットした場合には、レンジテーブルを参照することなく、所望の探索結果を即座に取得することができる。よって、たとえメモリシステム3が多数のレンジ(LBAレンジ)に対応する構成であっても、鍵探索のレイテンシを削減することが可能となる。この結果、メモリシステム3のIOスループットの向上またはIOレイテンシの削減を実現することができる。
【0046】
なお、アクセス要求によって指定されるアクセス範囲に複数のLBAが含まれている場合には、鍵探索回路16は、このアクセス範囲に含まれるLBAの数と同数の複数の鍵探索要求を暗号化/復号回路18から順次受け取る。複数の鍵探索要求の各々は、アクセス範囲に含まれる一つのLBAと、アクセス要求がリードまたはライトのいずれであるかを示すアクセス種別とを指定する。一つの鍵探索要求を暗号化/復号回路18から受信する毎に、鍵探索回路16は、鍵探索処理を実行する。したがって、アクセス要求によって指定されるアクセス範囲に複数のLBAが含まれている場合には、鍵探索処理は、LBAの数と同じ回数だけ実行される。そして、鍵探索回路16は、LBAの数と等しい数の探索結果を出力する。
【0047】
また、鍵探索回路16は、アクセス許可判定処理を行うこともできる。アクセス許可判定処理は、ホスト2から受信されたアクセス要求(ライトコマンドまたはリードコマンド)によって指定されるアクセス範囲全体に対するアクセスの許可または禁止を判定する処理である。
【0048】
アクセス許可判定回路17は、アクセス許可判定処理の結果に基づいて、コマンドをエラー終了する処理、または暗号化/復号回路18に制御を移す処理を実行する回路である。
【0049】
暗号化/復号回路18は、暗号化処理および復号処理を実行する回路である。暗号化処理および復号処理は、鍵探索回路16によって取得された暗号鍵を使用して実行される。なお、鍵探索回路16からアクセスの禁止を示すアクセス可否情報が出力された場合には、暗号化処理および復号処理は実行されない。暗号化/復号回路18は、暗号化回路181と、復号回路182とを含む。
【0050】
暗号化回路181は、暗号化処理を実行する。暗号化処理は、ホスト2から受信された平文データを鍵探索回路16によって取得された暗号鍵を使用して暗号化することによって、記憶装置5に書き込まれるべき暗号文データを生成する処理である。生成された暗号文データ(つまり、暗号化されたデータ)は、NANDインタフェース回路13によって、記憶装置5(つまり、NAND型フラッシュメモリ)に書き込まれる。また、CPU12が、生成された暗号文データに対して誤り訂正符号化等の所定の処理を実行させた後、所定の処理が実行されたデータをNANDインタフェース回路13経由で記憶装置5へ書き込んでもよい。つまり、生成された暗号文データに基づくデータがNANDインタフェース回路13経由で記憶装置5へ書き込まれる。
【0051】
復号回路182は、復号処理を実行する。復号処理は、記憶装置5(つまり、NAND型フラッシュメモリ)から読み出された暗号文データを鍵探索回路16によって取得された暗号鍵を使用して復号することによって、平文データを生成する処理である。生成された平文データは、ホストインタフェース回路11によってホスト2に送信される。また、CPU12が、NANDインタフェース回路13経由で記憶装置5から読み出されたデータに対して誤り訂正処理等の所定の処理を実行させて暗号文データを生成し、復号回路182が暗号文データを鍵探索回路16によって取得された暗号鍵を使用して復号することによって、平文データを生成する復号処理を実行してもよい。つまり、復号処理は、記憶装置5から読み出されたデータに基づく暗号文データを鍵探索回路16によって取得された暗号鍵を使用して復号することによって、平文データを生成する処理である。
【0052】
次に、記憶装置5として設けられるNAND型フラッシュメモリの内部構成について説明する。NAND型フラッシュメモリ151、152、…の各々は、NAND型フラッシュメモリダイである。NAND型フラッシュメモリ151、152、…の各々は、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、データ消去動作の単位である。データ消去動作は、データを消去する動作である。ブロックBLK0~BLKx-1の各々は、物理ブロック、消去ブロック、フラッシュブロック、またはメモリブロックとも称される。ブロックBLK0~BLKx-1の各々は、複数のページP0~Py-1を含む。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の単位である。データ書き込み動作は、データを書き込むための動作である。データ読み出し動作は、データを読み出すための動作である。ページP0~Py-1の各々は、同一ワード線に接続された複数のメモリセルを含む。
【0053】
次に、データ暗号化処理について説明する。図3は、実施形態に係るメモリシステム3において管理されるレンジテーブル31を使用して実行されるデータ暗号化処理を示す図である。ここでは、探索結果バッファを使用せずに、鍵探索処理を実行するケースについて説明する。
【0054】
ホスト2からアクセス要求(ライトコマンド、またはリードコマンド)を受信した場合、メモリシステム3は、以下のように動作する。ここでは、メモリシステム3がライトコマンドをホスト2から受信した場合を想定する。
【0055】
(1)ホスト2がメモリシステム3に対してライトコマンド(例えば、NS3、SLBA=90、NLB=20)を発行する。このライトコマンドは、ネームスペースの識別子(NSID)と、アクセス範囲の開始LBA(SLBA)と、アクセス範囲に含まれる論理ブロックの数(NLB)とを指定する。各論理ブロックは1つのLBAによって指定されるセクタに相当する。したがって、論理ブロックの数(NLB)は、アクセス範囲に含まれるセクタの数、つまりアクセス範囲に含まれるLBAの数である。NS3は、ネームスペースNS3を特定するネームスペース識別子である。このライトコマンドは、ネームスペースNS3のLBA90からLBA109の20個の論理ブロック(20個のセクタ)にデータを書き込むことを要求するコマンドである。
【0056】
(2)このライトコマンドをホスト2から受信すると、ホストインタフェース回路11は、アクセス許可判定要求を鍵探索回路16に送信して、このライトコマンドによって指定されるアクセス範囲全体のアクセスが許可されているか否かを鍵探索回路16に問い合わせる。アクセス許可判定要求は、アクセス範囲を指定する情報と、このアクセス範囲に対するリードまたはライトを示すアクセス種別情報とを含む。
【0057】
(3)アクセス許可判定要求を受信すると、鍵探索回路16は、レンジテーブル31を参照して、当該アクセス範囲全体のロック/ロック解除状態を確認する。当該アクセス範囲全体がロック解除状態であれば、鍵探索回路16は、「アクセス許可」を示す判定結果をアクセス許可判定回路17に送信する。一方、当該アクセス範囲の少なくとも一部がロック状態であれば、鍵探索回路16は、「アクセス禁止」を示す判定結果をアクセス許可判定回路17に送信する。図3の例では、ネームスペースNS3においては、LBA90からLBA99、LBA100からLBA109までは、それぞれ相異なるレンジに設定されているが、いずれもロック解除状態(錠前が外れたイラストで図示される状態)である。このため、鍵探索回路16は、「アクセス許可」を示す判定結果をアクセス許可判定回路17に送信する。このように、アクセス許可判定処理は、アクセス要求(コマンド)の単位で実行される。なお、各レンジに対するアクセスの許可又は禁止は、リードまたはライトを示すアクセス種別毎に設定できる。この場合、ライトに関して当該アクセス範囲全体がロック解除状態であれば、鍵探索回路16は、「アクセス禁止」を示す判定結果をアクセス許可判定回路17に送信する。
【0058】
(4)鍵探索回路16が「アクセス許可」と判定した場合は、アクセス許可判定回路17は、暗号化/復号回路18に制御を移す。一方、鍵探索回路16が「アクセス禁止」と判定した場合は、アクセス許可判定回路17は、受信したライトコマンドの処理をエラーとして終了とし、受信したライトコマンドのエラーを示す応答を、ホストインタフェース回路11を介してホスト2に送信する。
【0059】
(5)鍵探索回路16が「アクセス許可」と判定した場合は、暗号化/復号回路18は、鍵探索回路16に20個のLBA(LBA90~LBA109)に対応する20個の鍵探索要求を順次出力する。鍵探索回路16は、一つの鍵探索要求を受信する度、レンジテーブル31を参照することによって探索結果をレンジテーブル31から取得する。そして、鍵探索回路16は、探索結果を暗号化/復号回路18に出力する。この結果、暗号化/復号回路18は、鍵探索回路16から20個のLBA(LBA90~LBA109)に対応する20個の探索結果を順次受け取る。20個の探索結果の各々は、対応する鍵探索要求によって指定されたLBAへのアクセスの許可または禁止を示すアクセス可否情報と、このLBAに対応するデータに適用すべき暗号鍵とを含む。ここでは、既にLBA範囲(LBA99~LBA109)全体に対するアクセスが許可されているので、個々の鍵探索要求に含まれるアクセス可否情報は、基本的には、対応するLBAへのアクセスの許可を示す。また、LBA90~LBA99と、LBA100~LBA109とは、互いに異なるレンジに属している。したがって、LBA90~LBA99に対応する10個の探索結果の各々は、LBA90~LBA99が属しているレンジに対応する暗号鍵を含む。一方、LBA100~LBA109に対応する10個の探索結果の各々は、LBA100~LBA109が属している別のレンジに対応する別の暗号鍵を含む。そして、ある鍵探索要求に対応する一つの探索結果を受信すると、暗号化/復号回路18は、この鍵探索要求によって指定されたLBAに対応する1セクタ分のライトデータをこの探索結果に含まれる暗号鍵を使用して暗号化することによって、記憶装置5に書き込まれるべき暗号文データを生成する。
【0060】
このように、鍵探索処理は、一つの鍵探索要求毎に実行されるため、LBA(セクタ)の単位で実行される。これにより、アクセス範囲が異なるレンジに跨がっている場合でも、アクセス範囲に含まれる各LBAが属しているレンジに対応する暗号鍵を正しく取得することが可能となる。
【0061】
なお、図3では、ライトコマンドによって指定されるアクセス範囲全体に対するアクセス許可判定処理を実行した後に、暗号化/復号回路18が鍵探索回路16に鍵探索要求を送信する場合を説明した。しかし、個々の探索結果は、アクセス可否情報と、このLBAに対応するデータに適用すべき暗号鍵とを含むので、アクセス許可判定処理の実行を省略することも可能である。この場合でも、ロック状態に設定されているレンジに含まれる各LBAへのアクセスを禁止することができる。
【0062】
また、ライトコマンドによって指定されるアクセス範囲が1つのLBAのみを含む場合もある。この場合には、暗号化/復号回路18は、このLBAと、ライトを示すアクセス種別とを指定する一つの鍵探索要求を鍵探索回路16に出力すればよく、そして一つの探索結果だけを鍵探索回路16から取得すればよい。
【0063】
次に、データ暗号化処理およびデータ復号処理の手順について説明する。図4は、実施形態に係るメモリシステム3において実行されるデータ暗号化処理およびデータ復号処理の手順を示すシーケンス図である。
【0064】
図4の上部は、ホスト2からライトコマンドを受信したことに応じてコントローラ4によって実行されるデータ暗号化処理の手順を示している。
【0065】
ホストインタフェース回路11がホスト2からライトコマンドを受信した場合、アクセス許可判定要求がホストインタフェース回路11から鍵探索回路16に送信される。鍵探索回路16では、コマンドの単位でアクセス許可判定処理が実行される。そして、コマンド単位のアクセス許可判定結果が鍵探索回路16からホストインタフェース回路11に送られる。
【0066】
コマンド単位のアクセス許可判定結果がアクセス許可を示す場合、ホストインタフェース回路11から暗号化/復号回路18に制御が渡される。この場合、ホストインタフェース回路11は、暗号化すべきライトデータを図示しないデータバッファに格納する処理と、暗号化されたライトデータをデータバッファに準備するように暗号化/復号回路18に要求する処理とを実行する(バッファライト発行)。
【0067】
暗号化/復号回路18は、ライトコマンドによって指定されるアクセス範囲に含まれるLBA毎に鍵探索要求を鍵探索回路16に送信する。そして、鍵探索回路16において、セクタの単位の鍵探索処理が実行される。あるLBAに対応する探索結果を鍵探索回路16から取得すると、暗号化/復号回路18は、このLBAに対応するライトデータを取得した探索結果に含まれる暗号鍵を使用して暗号化することによって暗号文データを生成する処理と、生成された暗号文データをデータバッファに書き込む処理とを実行する。ライトコマンドによって指定されるアクセス範囲に含まれる全LBAに対応する暗号文データがデータバッファに準備されると、バッファライトの完了が暗号化/復号回路18からNANDインタフェース回路13に通知される。NANDインタフェース回路13は、データバッファに格納されている暗号文データをNAND型フラッシュメモリ151(または152)に書き込む。NAND型フラッシュメモリ151(または152)への書き込みが完了すると、NAND型フラッシュメモリ151(または152)への書き込みが完了したことを示す応答(NANDライトレスポンス)がNANDインタフェース回路13からホストインタフェース回路11に通知される。この通知の受信に応じて、ホストインタフェース回路11は、ライトコマンドの完了を示すコマンド完了応答をホスト2に送信する。
【0068】
図4の下部は、ホスト2からリードコマンドを受信したことに応じてコントローラ4によって実行されるデータ復号処理の手順を示している。
【0069】
ホストインタフェース回路11がホスト2からリードコマンドを受信した場合、アクセス許可判定要求がホストインタフェース回路11から鍵探索回路16に送信される。鍵探索回路16では、コマンドの単位でアクセス許可判定処理が実行される。そして、コマンド単位のアクセス許可判定結果が鍵探索回路16からホストインタフェース回路11に送られる。
【0070】
コマンド単位のアクセス許可判定結果がアクセス許可を示す場合、ホストインタフェース回路11は、リードコマンドによって指定されたLBA範囲に対応するデータ(暗号文データ)の読み出しをNANDインタフェース回路13に要求する(NANDリード発行)。そして、ホストインタフェース回路11は、暗号文データを復号することによって得られる平文データをデータバッファに準備するように暗号化/復号回路18に要求する。
【0071】
ホストインタフェース回路11は、暗号文データを例えばページの単位でNAND型フラッシュメモリ151(または152)から読み出す。読み出された暗号文データはデータバッファに格納される。暗号化/復号回路18は、リードコマンドによって指定されるアクセス範囲に含まれるLBA毎に、鍵探索要求を鍵探索回路16に送信する。そして、鍵探索回路16において、セクタの単位の鍵探索処理が実行される。あるLBAに対応する探索結果を鍵探索回路16から取得すると、暗号化/復号回路18は、このLBAに対応する暗号文データを取得した探索結果に含まれる暗号鍵を使用して復号することによって平文データを生成する処理と、生成された平文データをデータバッファに書き込む処理とを実行する。リードコマンドによって指定されるアクセス範囲に含まれる全LBAに対応する平文データがデータバッファに準備されると、ホストインタフェース回路11は、データバッファから平文データを読み出し、読み出した平文データをホスト2に送信する。
【0072】
このように、1つのアクセス要求(I/Oコマンド)で必要とされる暗号鍵の種類は1種類とは限らず、複数のレンジに対応する複数種の暗号鍵が用いられる場合がある。そのため、ある1つのLBAに対して1つの暗号鍵を対応付ける必要が生じる。メモリシステム3に設定可能なレンジの最大数はメモリシステム3の製品仕様として定められるが、TCG Opal規格では少なくとも8個以上とされ、実際には数百個に及ぶ場合もある。
【0073】
次に、暗号化処理/復号処理に求められる処理性能例について述べる。ここでは、バス100として、PCI Express Gen6×4レーンの構成を有するPCIeインタフェースが使用される場合を想定する。
【0074】
PCI Express Gen6×4レーンの構成を有するPCIeインタフェースを飽和させるスループットは、31.5GB/sである。LBA当たり512バイトのデータを格納するフォーマットを使用するメモリシステム3にアクセスする場合、1LBA(512Byte)当たりの平均所要時間は16ns(512/(31.5×10)sec)となる。コントローラ4が、例えば、500MHzの周波数を有するクロックで動作するように構成されているケースにおいては、16nsは、このクロックの8サイクル分に相当する。つまり、鍵探索回路16は平均8サイクル以内に暗号鍵を取得する必要がある。
【0075】
このように、ある情報に対して別の情報を高速に対応付ける必要が生じる場面では、キャッシュを用いた高速化が一般的な解決策となる。例えば、プロセッサに関しては、外部DRAM上の1か所に格納されたコードまたはデータは、しばらくの間何度も繰り返し利用される場合が多い。このため、命令キャッシュやデータキャッシュがプロセッサと同一チップに内蔵される構成が一般的に利用されている。
【0076】
キャッシュによる高速化の一例としては、本実施形態に係るメモリシステム3とは目的、構成、効果は異なるものの、仮想記憶機能を有するプロセッサに含まれるMMU(Memory Management Unit)のTLB(Translation Look-aside Buffer)が挙げられる。プロセッサの仮想記憶機能は、プログラムが指定する仮想アドレスを、実際の物理アドレスに変換する機能を有する。これにより、プログラムを変更することなく、様々な物理アドレスに配置して同時に動かすことが可能になるとともに、実際に用意する物理アドレスの割り当てを実使用時まで遅らせることで、少ない物理メモリでも多くのプログラムを動かすことが可能となる。
【0077】
ここで、仮想アドレスを物理アドレスに変換する構成と作用を述べる。図5は、比較例に係るプロセッサで使用される、仮想アドレスを物理アドレスに変換する処理を示す図である。
【0078】
図5の最上部に64ビットの仮想アドレスが示されている。このうち、ビット[63:48]は全て0または全て1で、ビット[47]と同じ値であるものとされ、実質的には残りの48ビット[47:0]が仮想アドレス空間となる。
【0079】
48ビット[47:0]の上位9ビット[47:39]は、ページマップL4テーブルを参照するためのインデックスとして使用される。48ビット[47:0]の次の9ビット[38:30]は、ページディレクトリポインタテーブルを参照するためのインデックスとして使用される。48ビット[47:0]のさらに次の9ビット[29:21]は、ページディレクトリテーブルを参照するためのインデックスとして使用される。48ビット[47:0]のさらに次の9ビット[20:12]は、ページテーブルを参照するために使用される。
【0080】
ページマップL4ベースアドレスレジスタ(CR3レジスタ)に格納された物理アドレスは、ページマップL4テーブルの先頭アドレスを示す。CR3レジスタに格納された物理アドレスに9ビット[47:39]をオフセットとして加えることによって得られる物理アドレスを使用して、外部DRAMが参照される。これによって、ページマップL4テーブルに含まれる512個のエントリのうちの一つのエントリに格納されている物理アドレスが取得される。
【0081】
ページマップL4テーブルから取得された物理アドレスは、ページディレクトリポインタテーブルの先頭アドレスを示す。ページマップL4テーブルから取得された物理アドレスに9ビット[38:30]をオフセットとして加えることによって得られる物理アドレスを使用して、外部DRAMが再び参照される。これによって、ページディレクトリポインタテーブルに含まれる512個のエントリのうちの一つのエントリに格納されている物理アドレスが取得される。
【0082】
ページディレクトリポインタテーブルから取得された物理アドレスは、ページディレクトリテーブルの先頭アドレスを示す。ページディレクトリポインタテーブルから取得された物理アドレスに9ビット[29:21]をオフセットとして加えることによって得られる物理アドレスを使用して、外部DRAMが再び参照される。これによって、ページディレクトリテーブルに含まれる512個のエントリのうちの一つのエントリに格納されている物理アドレスが取得される。
【0083】
ページディレクトリテーブルから取得された物理アドレスは、ページテーブルの先頭アドレスを示す。ページディレクトリテーブルから取得された物理アドレスに9ビット[20:12]をオフセットとして加えることによって得られる物理アドレスを使用して、外部DRAMが再び参照される。これによって、ページテーブルに含まれる512個のエントリのうちの一つのエントリに格納されている28ビットの物理アドレスが取得される。
【0084】
この28ビットの物理アドレスは、各々が4KBのサイズを有する物理ページフレーム番号のうちの一つの物理ページフレーム番号を示す。
【0085】
仮想アドレスの下位12ビット[11:0]は、ページ内オフセットアドレスとして物理ページフレーム番号に加えられる。これにより、物理ページフレーム番号とページ内オフセットアドレスとを含む40ビットの物理アドレスが得られる。
【0086】
このように、ページディレクトリテーブル/ページテーブルは外部DRAM上に配置されるため、仮想アドレスを物理アドレスに変換するために、4回の外部DRAM参照を要する。
【0087】
図6は、比較例に係るプロセッサで使用されるTLB(Translation Look-aside Buffer)の構成例を示す図である。
【0088】
ここでは、40エントリを有するフルアソシアティブなTLBの構成例が示されている。TLBは、外部DRAMではなく、プロセッサと同一チップに内蔵される記憶領域である。このため、TLBへのアクセスを高速に実行することができる。TLBは、図5で説明したページテーブルのキャッシュとして振る舞う。すなわち、TLBの各エントリには、タグ情報(36ビット[47:12])と、このタグ情報に対応する28ビットの物理アドレス(物理ページフレーム番号)とが格納されている。
【0089】
仮想アドレスを物理アドレスに変換する際には、その仮想アドレスの36ビット[47:12]がTLBの40エントリそれぞれに格納されているタグ情報と比較される。これによって、仮想アドレスの36ビット[47:12]に一致するタグ情報を格納しているエントリがTLBに存在するか否かが判定される。
【0090】
仮想アドレスの36ビット[47:12]に一致するタグ情報を格納しているエントリがTLBに存在する場合、このエントリに格納されている28ビット物理アドレスが所望の物理ページフレーム番号となる。仮想アドレスの下位12ビット[11:0]は、ページ内オフセットアドレスとして物理ページフレーム番号に加えられる。これにより、物理ページフレーム番号とページ内オフセットアドレスとを含む40ビットの物理アドレスが得られる。
【0091】
図5のようなページテーブル構成は階層構造を持っているが、ページディレクトリテーブル/ページテーブルの参照自体は、仮想アドレスの一部をそのままインデックスとして使用すればよい。また、図6のTLB構成はフルアソシアティブであるため、仮想アドレスの一部[47:12]を40エントリ全てのタグ情報と比較することが必要である。しかし、比較動作では、仮想アドレスの一部[47:12]がタグ情報と完全に一致するかどうかのみを判定すればよい。
【0092】
次に、TCG Opal規格に準拠したレンジ設定の例について説明する。図7は、実施形態に係るメモリシステム3において実行されるレンジ設定処理の例を示す図である。
【0093】
メモリシステム3の記憶装置5の記憶領域は、システム領域とユーザ領域とに大別される。システム領域は、メモリシステム3のシステム情報の格納のために割り当てられ、外部から参照することはできない。ユーザ領域は、外部から参照可能な記憶領域である。ユーザ領域においては、LBAが0から順に割り当てられる。メモリシステム3の出荷後の初期状態では、ユーザ領域全体がグローバルレンジと呼ばれる領域に割り当てられた状態となっている。グローバルレンジに、レンジ1、レンジ2といった、それぞれ連続するLBA範囲を管理者が割り当てることによって、相異なる利用者が、それぞれ異なる暗号鍵でデータを暗号化して格納することが可能となる。ここで、管理者は、それぞれのレンジの開始LBAと、終端LBA(またはレンジのLBAサイズ)を指定することで、LBA範囲を指定する。なお、レンジ1、レンジ2といった領域はグローバルレンジ上にオーバーレイされる。これにより、レンジ1、レンジ2の各々のLBA範囲に当初割り当てられていたグローバルレンジは、レンジ1、レンジ2の各々によって隠される。また、各レンジに対応するLBA範囲は、最も細かい単位では1LBA単位で設定可能である。
【0094】
図8は、実施形態に係るメモリシステム3において管理されるレンジテーブル31の内容の例を示す図である。
【0095】
レンジテーブル31は、開始LBAと終端LBAの組を設定単位とするデータ構造を持つ。TCG Opal規格では終端LBAの代わりにレンジのサイズを設定するとされているが、レンジのサイズはレンジの終端を特定するための情報であるので、開始、終端の情報によってレンジが定義されるという点では図8の例と同様である。図8のレンジテーブル31の例では、具体的には以下の情報を各エントリが持っている。
【0096】
NSID: NSIDはネームスペース識別子である。NSIDはNVMeで規定されている。
【0097】
IsGlobalフラグ: IsGlobalフラグは、対応するレンジ設定がグローバルレンジを対象としているかどうかを示すフラグ(“0”または“1”の値)である。“1”のIsGlobalフラグは、対応するレンジがグローバルレンジであることを示す。“0”のIsGlobalフラグは、対応するレンジがグローバルレンジではないことを示す。
【0098】
パーミッション情報: パーミッション情報は、対応するレンジ設定に対するアクセスの許可または禁止を示すアクセス可否情報である。パーミッション情報は、リードアクセスの許可または禁止を示す情報と、ライトアクセスの許可または禁止を示す情報とを含む。“r”はリードが許可されていることを示し、“w”はライトが許可されていることを示し、“-”はリードまたはライトが許可されていないことを示す。例えば、“――”は、リードが許可されておらず、ライトも許可されていなことを示す。“r―”は、リードが許可されており、ライトが許可されていなことを示す。“―w”は、リードが許可されておらず、ライトが許可されていることを示す。“rw”は、リードが許可されており、ライトも許可されていることを示す。
【0099】
開始LBA、終端LBA: 開始LBAおよび終端LBAは。対応するRange設定の対象となる開始LBAおよび終端LBAを示す。なお、グローバルレンジの場合には、そのグローバルレンジ全体が設定対象となるため、開始LBAおよび終端LBAは設定されない。
【0100】
暗号鍵: 暗号鍵は、対応するレンジで用いられる暗号鍵を示す。
【0101】
このように、TCG Opal規格に準拠したレンジテーブル31は、プロセッサの仮想記憶におけるページテーブルとは異なり、LBAをそのままインデックスとしてレンジテーブルを参照することで所望の暗号鍵またはパーミッション情報を探索可能なデータ構造とはなっていない。仮に、プロセッサの仮想記憶におけるページテーブルと同様のデータ構造でレンジ設定を管理しようとすると、必要な追加ストレージ容量が膨大になってしまう。例えば、一般的に用いられるXTS-AES-256方式のデータ暗号鍵は64バイトであるため、LBAから単純に所望の暗号鍵を探索可能なデータ構造とした場合には、個々のLBAそれぞれに対応付けて64バイトのデータ暗号鍵を保持することが必要となる。したがって、1LBA当たりのデータ容量が512バイトである場合には、データ暗号鍵の保持のために1LBA当たり64バイトが追加的に必要とれる。このため、10%以上の追加データ容量が消費されてしまう。また、レンジテーブル31をLBAから単純に所望の暗号鍵を探索可能なデータ構造とした場合には、レンジテーブル31のサイズが巨大になるため、レンジテーブル31をDRAM6に格納することが必要となる。この場合、レンジテーブル31の参照のためのレイテンシが発生するため、例えば、先に述べた設計制約である平均8サイクル以内で暗号鍵を取得するといった制約を満たすように、そのような巨大なデータ構造を探索することは現実的には不可能である。
【0102】
したがって、TCG Opal規格に準拠したレンジテーブル31を使用して各レンジに対応するLBA範囲、暗号鍵、アクセス可否情報を管理する構成においては、暗号鍵およびアクセス可否情報の探索に要する時間を削減可能な新たな技術が必要である。
【0103】
次に、鍵探索回路16の詳細について説明する。図9は、実施形態に係るメモリシステム3のコントローラ4に含まれる鍵探索回路16の構成例を示すブロック図である。鍵探索回路16は、鍵探索要求入力回路1601、レジスタ1602、セレクタ1603、レジスタ1604、通常判定回路1605、セレクタ1606、レジスタ1607、暗号鍵出力回路1608、RLB Hit判定回路1609、RLB更新判定回路1610、セレクタ1611、およびRange-check Look-aside Buffer(RLB)1612を含む。
【0104】
鍵探索要求入力回路1601は、暗号化/復号回路18から鍵探索要求を受信する回路である。鍵探索要求入力回路1601は、鍵探索要求を受信すると、受信された鍵探索要求をレジスタ1602に入力する。
【0105】
レジスタ1602は、記憶回路である。レジスタ1602は、鍵探索要求を一時的に保持する。
【0106】
セレクタ1603は、選択回路である。セレクタ1603は、RLB Hit判定回路1609から受信した制御信号に基づいて、レジスタ1602から取得した鍵探索要求をレジスタ1604に入力するか否かを選択する。
【0107】
レジスタ1604は、記憶回路である。レジスタ1604は、鍵探索要求を一時的に保持する。
【0108】
通常判定回路1605は、通常判定処理を実行する回路である。通常判定回路1605は、レジスタ1604から鍵探索要求を取得する。そして、通常判定回路1605は、通常判定処理として、取得した鍵探索要求に基づいてレンジテーブル31を参照することによって、アクセス可否情報と暗号鍵とを含む探索結果をレンジテーブル31から取得する処理を実行する。具体的には、通常判定回路1605は、受信した鍵探索要求が指定するNSIDおよび論理ブロックアドレ(LBA)に対応するレンジに関する情報を含むレンジテーブル31のエントリを特定する。そして、通常判定回路1605は、特定したレンジテーブル31のエントリから探索結果として、アクセス可否情報と、暗号鍵とを取得する。通常判定回路1605は、取得した探索結果をセレクタ1606と、セレクタ1611とに入力する。
【0109】
セレクタ1606は、選択回路である。セレクタ1606は、通常判定回路1605、またはRLB1612のいずれかから入力された探索結果を選択して、選択した探索結果をレジスタ1607に入力する。
【0110】
レジスタ1607は、記憶回路である。レジスタ1607は、探索結果を一時的に保持する。
【0111】
暗号鍵出力回路1608は、探索結果を出力する回路である。暗号鍵出力回路1608は、レジスタ1607に保持された探索結果を取得する。そして、暗号鍵出力回路1608は、暗号化/復号回路18に、鍵探索要求に対する応答として、探索結果を出力する。暗号鍵出力回路1608によって出力される探索結果は、アクセス可否情報と、暗号鍵とを含む。
【0112】
RLB Hit判定回路1609は、探索結果バッファヒット判定回路である。RLB Hit判定回路1609は、鍵探索要求入力回路1601によって入力された鍵探索要求をレジスタ1602から取得する。RLB Hit判定回路1609は、取得した鍵探索要求が、RLB1612が保持している探索結果にヒットするか否かを判定する。RLB1612は、鍵探索要求と、この鍵探索要求に対応する探索結果とを保持する。したがって、RLB Hit判定回路1609は、取得した鍵探索要求が、RLB1612に保持されている鍵探索要求に一致するか否かに基づいて、取得した鍵探索要求が、RLB1612が保持している探索結果にヒットするか否かを判定する。例えば、RLB Hit判定回路1609は、取得した鍵探索要求によって指定されるLBAとRLB1612が保持している鍵探索要求によって指定されるLBAとが同じ一括探索単位に含まれているか否かに基づいて、受信した鍵探索要求が、RLB1612の保持内容にヒットするかどうかを判定し得る。ここでは、一括探索単位は、メモリシステム3をアクセスするためのLBA空間を連続する所定個数のLBAを含む単位ごとに区切ることによって得られる複数の一括探索単位のうちの一つである。一括探索単位は、例えば、連続する8個のLBAを含むクラスタである。
【0113】
取得した鍵探索要求が、RLB1612が保持している探索結果にヒットする場合、RLB Hit判定回路1609は、ヒット通知をセレクタ1603に送信する。ヒット通知は、レジスタ1602から取得した鍵探索要求をレジスタ1604に入力しないように指示する制御信号としてセレクタ1603に送信される。取得した鍵探索要求が、RLB1612が保持している探索結果にヒットしない場合(ミス)、RLB Hit判定回路1609は、ミス通知をセレクタ1603に送信する。ミス通知は、レジスタ1602から取得した鍵探索要求をレジスタ1604に入力するように指示する制御信号としてセレクタ1603に送信される。
【0114】
RLB更新判定回路1610は、探索結果バッファ更新判定回路である。RLB更新判定回路1610は、レジスタ1604から鍵探索要求を取得する。RLB更新判定回路1610は、取得した鍵探索要求に基づいて、RLB1612の保持内容を更新するか否かを判定する。例えば、RLB更新判定回路1610は、取得した鍵探索要求によって指定されるLBAが含まれる一括探索単位の内部に、レンジテーブル31で管理されている複数のレンジのレンジ境界が含まれているか否かに基づいて、RLB1612の保持内容を更新するかどうかを判定し得る。取得した鍵探索要求によって指定されるLBAが含まれる一括探索単位(例えば、クラスタ)の内部に1つもレンジ境界が含まれていない場合、RLB更新判定回路1610は、RLB1612の保持内容を更新すると判定する。一方、取得した鍵探索要求によって指定されるLBAが含まれる一括探索単位の内部にレンジ境界が含まれている場合、RLB更新判定回路1610は、RLB1612の保持内容を更新しないと判定する。RLB1612の保持内容を更新すると判定した場合、RLB更新判定回路1610は、通常判定回路1605から入力された探索結果を使用して、RLB1612の保持内容を更新させるように指示する制御信号をセレクタ1611に送信する。RLB1612の保持内容を更新しないと判定した場合、RLB更新判定回路1610は、通常判定回路1605から入力された探索結果をRLB1612に更新させないように指示する制御信号をセレクタ1611に送信する。
【0115】
セレクタ1611は、選択回路である。セレクタ1611は、通常判定回路1605から入力された探索結果を使用して、RLB1612の保持内容を更新するか否かを、RLB更新判定回路1610から送信された制御信号に基づいて選択する。
【0116】
RLB1612は、探索結果バッファである。RLB1612は、鍵探索要求と、この鍵探索要求に対応する通常判定回路1605によって取得された探索結果を保持するバッファである。RLB1612に保持されている鍵探索要求と探索結果はRLB Infoと称される。具体的には、RLB Infoは、Validフラグ、Range Check要求情報、およびRange Check結果情報を含む。Validは、RLB1612に格納された探索結果が有効であるか否かを示すフラグである。Range Check要求情報は、鍵探索要求を示す情報である。Range Check要求情報は、鍵探索要求に含まれるネームスペースを識別するための情報であるNSIDと、鍵探索要求に含まれる論理ブロックアドレスを示す情報であるLBAと、鍵探索要求に関連付けられたコマンドがリードコマンドであるか、あるいはライトコマンドであるかを示すフラグであるDIRを含む。Range Check結果情報は、アクセス可否情報を示すフラグであるPROTECTION_ERRと、リードコマンドの読み出しデータとしてすべてゼロを返す条件が成立しているか否かを示すフラグであるRETURN_ALLZEROとを含む。IV Keyは、XTS-AESモードの暗号鍵のうちの1つである。Data Keyも、XTS-AESモードの暗号鍵のうちの1つである。
【0117】
次に、RLB Hit判定回路1609が、鍵探索要求がRLB1612の保持内容にヒットすると判定をした場合における、鍵探索回路16の動作について説明する。図10は、探索結果バッファヒットが起きた場合における鍵探索回路の動作を示す図である。まず、鍵探索回路16の鍵探索要求入力回路1601が、暗号化/復号回路18から鍵探索要求を受信したことに応じて、鍵探索要求入力回路1601は、動作を開始する。
【0118】
(1)鍵探索要求入力回路1601は、受信された鍵探索要求をレジスタ1602に入力する。
【0119】
(2)RLB Hit判定回路1609は、レジスタ1602から鍵探索要求を取得する。そして、セレクタ1603も同様に、レジスタ1602から鍵探索要求を取得する。
【0120】
(3)RLB Hit判定回路1609は、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットするか否かを判定する。ここでは、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットする場合について、説明する。
【0121】
(4)RLB Hit判定回路1609は、Hit通知をセレクタ1603に送信する。ヒット通知を受信したセレクタ1603は、入力された鍵探索要求をレジスタ1604に入力しないように制御される。
【0122】
(5)ヒット判定をしたRLB Hit判定回路1609は、RLB1612に保持されている探索結果をセレクタ1606に出力させる。
【0123】
(6)RLB1612から探索結果が入力されたセレクタ1606は、この探索結果を選択して、レジスタ1607に出力する。
【0124】
(7)暗号鍵出力回路1608は、レジスタ1607から探索結果を取得し、取得した探索結果を暗号化/復号回路18に出力する。
【0125】
これによって、鍵探索回路16は、通常判定回路1605による通常判定処理を実行することなく、鍵探索要求に対応する、アクセス可否情報と、暗号鍵とを含む探索結果を出力することができる。
【0126】
次に、RLB Hit判定回路1609が、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットしない(ミス)と判定し、且つ、RLB更新判定回路1610がRLB1612の保持内容を更新すると判定をした場合における、鍵探索回路16の動作について説明する。図11は、探索結果バッファミスが起き、且つ、探索結果バッファの保持内容を更新すると判定した場合における鍵探索回路の動作を示す図である。まず、図10と同様に、鍵探索回路16の鍵探索要求入力回路1601が、暗号化/復号回路18から鍵探索要求を受信したことに応じて、鍵探索要求入力回路1601は、動作を開始する。
【0127】
(1)鍵探索要求入力回路1601は、受信された鍵探索要求をレジスタ1602に入力する。
【0128】
(2)RLB Hit判定回路1609は、レジスタ1602から鍵探索要求を取得する。そして、セレクタ1603も同様に、レジスタ1602から鍵探索要求を取得する。
【0129】
(3)RLB Hit判定回路1609は、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットするか否かを判定する。ここでは、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットしない場合(ミス)について、説明する。
【0130】
(4)RLB Hit判定回路1609は、ミス通知をセレクタ1603に送信する。ミス通知を受信したセレクタ1603は、入力された鍵探索要求をレジスタ1604に入力するように制御される。
【0131】
(5)セレクタ1603は、RLB Hit判定回路1609から送信されたミス通知に基づいて、レジスタ1602から取得した鍵探索要求をレジスタ1604に入力する。
【0132】
(6)通常判定回路1605と、RLB更新判定回路1610とは、レジスタ1604から鍵探索要求を取得する。
【0133】
(7)通常判定回路1605は、通常判定処理を実行し、RLB更新判定回路1610は、RLB1612の保持内容を更新するか否かを判定する。通常判定回路1605は、通常判定処理によって取得した探索結果をセレクタ106と、セレクタ1611とに入力する。そして、RLB更新判定回路1610は、RLB1612を更新するか否かを示す通知をセレクタ1611に送信する。ここでは、RLB更新判定回路1610が更新判定を通知する場合について説明する。
【0134】
(8)セレクタ1611は、RLB更新判定回路1610から送信された更新判定に基づいて、通常判定回路1605から入力された探索結果を使用してRLB1612を更新する。これにより、RLB1612の保持内容は、更新される。
【0135】
(9)通常判定回路1605から探索結果が入力されたセレクタ1606は、この探索結果を選択して、レジスタ1607に出力する。
【0136】
(10)暗号鍵出力回路1608は、レジスタ1607から探索結果を取得し、取得した探索結果を暗号化/復号回路18に出力する。
【0137】
これによって、鍵探索回路16は、通常判定回路1605による通常判定処理を実行することで取得した探索結果を新たにRLB1612に格納することができる。そのため、次いで同じクラスタを指定する鍵探索要求を受信した場合には、図10で説明した、RLB Hit判定回路1609がヒット判定をした場合の動作が実行されるため、通常判定回路1605による通常判定処理を実行せずに、アクセス可否情報と、暗号鍵とを含む探索結果を出力することができることになる。
【0138】
次に、RLB Hit判定回路1609が、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットしない(ミス)と判定をし、RLB更新判定回路1610がRLB1612の保持内容を更新しないと判定した場合における、鍵探索回路16の動作について説明する。図12は、探索結果バッファミスが起き、且つ、探索結果バッファの保持内容を更新しないと判定した場合における鍵探索回路の動作を示す図である。まず、図10と同様に、鍵探索回路16の鍵探索要求入力回路1601が、暗号化/復号回路18から鍵探索要求を受信したことに応じて、鍵探索要求入力回路1601は、動作を開始する。
【0139】
(1)鍵探索要求入力回路1601は、受信された鍵探索要求をレジスタ1602に入力する。
【0140】
(2)RLB Hit判定回路1609は、レジスタ1602から鍵探索要求を取得する。そして、セレクタ1603も同様に、レジスタ1602から鍵探索要求を取得する。
【0141】
(3)RLB Hit判定回路1609は、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットするか否かを判定する。ここでは、取得した鍵探索要求がRLB1612に保持されている探索結果にヒットしない場合(ミス)について、説明する。
【0142】
(4)RLB Hit判定回路1609は、ミス通知をセレクタ1603に送信する。ミス通知を受信したセレクタ1603は、入力された鍵探索要求をレジスタ1604に格納するように制御される。
【0143】
(5)セレクタ1603は、RLB Hit判定回路1609から送信されたミス通知に基づいて、レジスタ1602から取得した鍵探索要求をレジスタ1604に格納する。
【0144】
(6)通常判定回路1605と、RLB更新判定回路1610とは、レジスタ1604から鍵探索要求を取得する。
【0145】
(7)通常判定回路1605は、通常判定処理を実行し、RLB更新判定回路1610は、RLB1612の保持内容を更新するか否かを判定する。通常判定回路1605は、通常判定処理によって取得した探索結果をセレクタ106と、セレクタ1611とに入力する。そして、RLB更新判定回路1610は、RLB1612を更新するか否かを示す通知をセレクタ1611に送信する。ここでは、RLB更新判定回路1610が、RLB1612の保持内容を更新しないと判定した場合について説明する。セレクタ1611は、RLB更新判定回路1610から送信された更新しないとの判定に基づいて、通常判定回路1605から入力された探索結果をRLB1612に格納しない。これにより、RLB1612の保持内容は、更新されない。
【0146】
(8)通常判定回路1605から探索結果が入力されたセレクタ1606は、この探索結果を選択して、レジスタ1607に出力する。
【0147】
(9)暗号鍵出力回路1608は、レジスタ1607から探索結果を取得し、取得した探索結果を暗号化/復号回路18に出力する。
【0148】
これによって、鍵探索回路16は、RLB更新判定回路において、更新しないとの判定がなされた場合には、通常判定回路1605による通常判定処理を実行することで取得した探索結果を新たにRLB1612に格納しない。 次に、RLB Hit判定回路1609によって実行されるRLBヒット判定処理について説明する。図13は、実施形態に係るメモリシステム3において実行される探索結果バッファヒット判定処理の手順を示すフローチャートである。まず、RLB Hit判定回路1609は、鍵探索要求を取得したことに応じて、RLBヒット判定処理を開始する。
【0149】
まず、RLB Hit判定回路1609は、RLB1612に保持されている情報が有効であるか否かを判定する(ステップS11)。RLB Hit判定回路1609は、RLB Infoを参照し、Validフラグが有効を示しているか否かを判定する。
【0150】
RLB1612に保持されている情報が有効でない場合(ステップS11でNo)、RLB Hit判定回路1609は、RLB Hit判定結果としてミスを出力する(ステップS15)。これによって、通常判定回路1605に鍵探索要求が送信される。
【0151】
一方、RLB1612に保持されている情報が有効である場合(ステップS11でYes)、RLB Hit判定回路1609は、以下の(1)、(2)、(3)の判定を実行する(ステップS12)。
【0152】
(1)鍵探索要求が指定するNSIDが、RLB1612に格納されているNSIDに一致する。
【0153】
(2)鍵探索要求が指定するLBAとLBAマスクとの論理積が、RLB1612に格納されているLBAとLBAマスクとの論理積に一致する。
【0154】
(3)鍵探索要求が指定するDIRが、RLB1612に格納されているDIRに一致する。
【0155】
ここで、LBAマスクは、LBAとLBAマスクとの論理積がこのLBAの下位ビットを無視した値になるように定義された値である。鍵探索要求が指定するLBAとLBAマスクとの論理積と、RLB1612に格納されているLBAとLBAマスクとの論理積とを比較することによって、LBAマスクによって定められた下位の所定数のビットの値を無視して比較することができる。例えば、LBAマスクが16進数表記で“ffff_ffff_fff8”の場合、48ビットのLBAの下位3ビットを無視し、鍵探索要求が指定する48ビットのLBAの上位45ビットのみを、RLB1612に格納されている48ビットのLBAの上位45ビットのみと比較することができる。このように、LBAマスクが下位3ビットをマスクするような値に定義されていた場合、鍵探索要求によって指定されるLBAが含まれるクラスタが、RLB1612に格納されているLBAが含まれるクラスタに一致するか否かを判定することができる。
【0156】
そして、RLB Hit判定回路1609は、ステップS12の(1)、(2)、および(3)の判定が全てYesであるか否かを判定する(ステップS13)。
【0157】
ステップS12の判定のいずれかがNoである場合(ステップS13でNo)、RLB Hit判定回路1609は、RLB Hit判定結果としてミスを出力する(ステップS15)。これによって、通常判定回路1605に鍵探索要求が送信される。
【0158】
ステップS13の判定が全てYesである場合(ステップS13でYes)、RLB Hit判定回路1609は、RLB Hit判定結果としてヒットを出力する(ステップS14)。これによって、通常判定回路1605に鍵探索要求が送信されず、暗号鍵出力回路1608に、RLB1612に保持されている探索結果が送信される。
【0159】
次に、RLB更新判定回路1610によって実行されるRLB更新判定処理について説明する。図14は、実施形態に係るメモリシステム3において実行される探索結果バッファ更新判定処理の手順を示すフローチャートである。まず、RLB更新判定回路1610は、鍵探索要求を取得したことに応じて、RLB更新判定処理を開始する。
【0160】
なお、図14のRLB更新判定処理で使用されるLBAマスクは、図13のRLBヒット判定処理で使用されるLBAマスクと同じマスクパターンであればよい。例えば、図13のRLBヒット判定処理でLBAマスク(=“hffff_ffff_fff8)が使用されるケースにおいては、図14のRLB更新判定処理においても、LBAマスク(=“hffff_ffff_fff8)が使用される。
【0161】
RLB更新判定処理では、鍵探索要求によって指定されたLBAを含む一括探索範囲の内部に、レンジテーブル31で設定された複数のレンジのレンジ境界が含まれているか否かが判定される。鍵探索要求によって指定されたLBAを含む一括探索範囲の内部に、レンジテーブル31で設定された複数のレンジのレンジ境界が1つも含まれていないことが確認できれば、RLB更新判定回路1610は、RLB更新判定結果として「更新する」、それ以外の場合には、RLB更新判定回路1610は、RLB更新判定結果として「更新しない」を出力する。具体的な手順は以下の通りである。
【0162】
まず、RLB更新判定回路1610は、レンジテーブル31を参照するためのインデックスとして使用される変数(i)の値を初期化する(ステップS21)。RLB更新判定回路1610は、インデックスの値に対応するレンジテーブル31のエントリを参照する。
【0163】
RLB更新判定回路1610は、以下の(1)、(2)、および(3)の判定を実行する(ステップS22)。
【0164】
(1)RLB更新判定回路1610は、レンジテーブル31のi番目のエントリの情報が有効か否かを判定する。
【0165】
(2)RLB更新判定回路1610は、レンジテーブル31のi番目のエントリのIsGlobalフラグが0(Non Global Rangeエントリであることを示す)か否かを判定する。
【0166】
(3)RLB更新判定回路1610は、レンジテーブル31のi番目のエントリのNSIDと、鍵探索要求が指定するNSIDとが一致するか否かを判定する。
【0167】
RLB更新判定回路1610は、ステップS22で実行された判定が全てYesであるか否かを判定する(ステップS23)。
【0168】
ステップS22の判定が全てYesである場合(ステップS23でYes)、RLB更新判定回路1610は、以下の(1)、および(2)の判定を実行する(ステップS24)。
【0169】
(1)RLB更新判定回路1610は、レンジテーブル31のi番目のエントリの終端LBAと、鍵探索要求が指定するLBAとが同一クラスタに属し、且つエントリが示す終端LBAとクラスタの終端LBAとが一致しない、という条件が満たされているか否かを判定する。この場合、RLB更新判定回路1610は、まず、レンジテーブル31のi番目のエントリの終端LBAとLBAマスクとの論理積と、鍵探索要求が指定するLBAとLBAマスクとの論理積とを、比較する。これにより、レンジテーブル31のi番目のエントリの終端LBAと、鍵探索要求が指定するLBAとが同一クラスタに属するか否かを判定できる。レンジテーブル31のi番目のエントリの終端LBAと、鍵探索要求が指定するLBAとが同一クラスタに属する場合、RLB更新判定回路1610は、i番目のエントリが示す終端LBAとクラスタの終端LBAとを比較し、i番目のエントリが示す終端LBAとクラスタの終端LBAとが一致しない、という条件が満たされているか否かを判定する。
【0170】
(2)RLB更新判定回路1610は、レンジテーブル31のi番目のエントリの開始LBAと、鍵探索要求が指定するLBAとが同一クラスタに属し、且つエントリが示す開始LBAとクラスタの開始LBAとが一致しない、という条件が満たされているか否かを判定する。この場合、RLB更新判定回路1610は、まず、レンジテーブル31のi番目のエントリの開始LBAとLBAマスクとの論理積と、鍵探索要求が指定するLBAとLBAマスクとの論理積とを、比較する。これにより、レンジテーブル31のi番目のエントリの開始LBAと、鍵探索要求が指定するLBAとが同一クラスタに属するか否かを判定できる。レンジテーブル31のi番目のエントリの開始LBAと、鍵探索要求が指定するLBAとが同一クラスタに属する場合、RLB更新判定回路1610は、i番目のエントリが示す開始LBAとクラスタの開始LBAとを比較し、i番目のエントリが示す開始LBAとクラスタの開始LBAとが一致しない、という条件が満たされているか否かを判定する。
【0171】
RLB更新判定回路1610は、ステップS24の判定の少なくとも一方が満たされているか否かを判定する(ステップS25)。
【0172】
ステップS24の判定の少なくとも一方が満たされている場合(ステップS25でYes)、RLB更新判定回路1610は、RLB更新判定として、更新しないことを出力する(ステップS26)。
【0173】
そして、RLB更新判定回路1610は、RLB更新判定処理を終了する(終了)。
【0174】
ステップS22の判定のいずれかがNoである(ステップS23でNo)、あるいはステップS24の判定のいずれも満たされていない(ステップS25でNo)場合、RLB更新判定回路1610は、変数(i)の値と、レンジテーブル31のエントリの数から1を引いた数とが等しいか否かを判定する(ステップS27)。つまり、変数(i)によって示されるエントリが、レンジテーブル31の最後のエントリに対応していたか否かを判定する。
【0175】
変数(i)の値と、レンジテーブル31のエントリの数から1を引いた数とが等しい場合(ステップS27でYes)、RLB更新判定回路1610は、RLB更新判定として、更新することを出力する(ステップS28)。
【0176】
そして、RLB更新判定回路1610は、RLB更新判定処理を終了する(終了)。
【0177】
変数(i)の値と、レンジテーブル31のエントリの数から1を引いた数とが異なる場合(ステップS27でNo)、RLB更新判定回路1610は、インデックス(i)の値を1だけインクリメントする(ステップS29)。
【0178】
その後、RLB更新判定回路1610は、ステップS22以降の処理を再度実行する。これにより、鍵探索要求によって指定されたLBAを含む一括探索範囲の内部に、レンジテーブル31で設定された複数のレンジのレンジ境界が含まれているか否かを判定することができる。
【0179】
このようなRLB更新判定回路1610の動作により、一括探索単位(例えば8個のLBAを含むクラスタ)にわたって鍵探索結果が同一となるかどうかを検出し、同一である場合にのみRLB1612の更新が行われるように制御される。RLB更新判定回路1610も、鍵探索要求によって指定されたLBAとRLB1612に保持されているLBAとが同じ一括探索単位に含まれているか否かに基づいて、受信した鍵探索要求が、RLB1612の保持内容にヒットするかどうかを判定する。
【0180】
一括探索単位にわたって鍵探索結果が同一となるかどうかを検出しなかった場合には、RLB1612のヒットと扱うことができるのは、受信した鍵探索要求によって指定されるLBAとRLB1612に保持されているLBAとが完全に一致している場合のみに限られるが、一括探索単位にわたって鍵探索結果が同一となるかどうかを検出することにより、RLB1612のヒット率を高めることができる。
【0181】
次に、メモリシステム3がライトコマンドを受信した場合における、鍵探索処理について説明する。図15は、ホストからのアクセス要求によって指定されるアクセス範囲に含まれるLBA毎に実行される鍵探索動作の具体例を示す図である。
【0182】
図15では、ネームスペースNS3にレンジ1と、レンジ2とが設定されている。レンジ1の開始LBAは、LBA0であり、レンジ1の終端LBAは、LBA99である。また、レンジ2の開始LBAは、LBA100であり、レンジ2の終端LBAは、LBA199である。
【0183】
また、ネームスペースNS3のLBA空間は、それぞれが連続する8個のLBAを含む複数のクラスタを含む。ここでは、クラスタ10は、LBA88、LBA89、…、LBA95を含み、クラスタ11は、LBA96、LBA97、…、LBA103を含み、クラスタ12は、LBA104、LBA105、…、LBA111を含む。
【0184】
ここで、メモリシステム3がライトコマンドを受信した場合を想定する。このライトコマンドは、NSIDとしてNS3、開始LBAとしてLBA90、LBAの数(NLBA)として20を指定する。
【0185】
この時、鍵探索回路16は、ライトコマンドによって指定された各LBAに対して、鍵探索処理を実行する。ここでは、鍵探索回路16が、開始LBA90から順番に鍵探索処理を実行する場合について説明する。このとき、鍵探索回路16のRLB1612は、探索結果を保持していない場合を想定する。
【0186】
まず、鍵探索回路16は、LBA90を指定する鍵探索要求に対する鍵探索処理を実行する。ここでは、RLB Hit判定回路1609は、RLB1612が探索結果を保持していないため、ミスであると判定する。そして、RLB更新判定回路1610は、更新判定処理を実行する。LBA90が含まれるクラスタ10はレンジ1のみに属しており、クラスタ10はレンジ1の開始LBA、終端LBA、およびレンジ2の開始LBA、終端LBAを含んでいない。RLB更新判定回路1610は、RLB1612を更新すると判定する。これにより、RLB1612は、LBA90を指定する鍵探索要求と、LBA90に対応する探索結果を保持する。クラスタ10はレンジ境界を含んでいないため、LBA90に対応する探索結果は、クラスタ10に含まれる8個のLBA全てに共通の探索結果となる。
【0187】
次に、鍵探索回路16は、LBA91を指定する鍵探索要求に対する鍵探索処理を実行する。RLB Hit判定回路1609は、LBA90に対応する探索結果を保持しているため、LBA90と同じクラスタに含まれているLBA91を指定する鍵探索要求に対してヒットを判定する。そのため、鍵探索回路16は、RLB1612に格納されている探索結果を使用して、LBA91を指定する鍵探索要求に対する応答をする。
【0188】
鍵探索回路16は、LBA92、93、94、および95を指定する鍵探索要求に関して、LBA91を指定する鍵探索要求と同様の処理を実行する。
【0189】
次に、鍵探索回路16は、LBA96を指定する鍵探索要求に対する鍵探索処理を実行する。RLB Hit判定回路1609は、RLB1612がLBA90に対応する探索結果を保持しているため、異なるクラスタに含まれているLBA96を指定する鍵探索要求に対してミスを判定する。そして、RLB更新判定回路1610は、更新判定処理を実行する。LBA96を含むクラスタ11が、レンジ1およびレンジ2の開始LBA、終端LBAを含むため、RLB更新判定回路1610は、更新をしない判定を出力する。そのため、鍵探索回路16は、RLB1612に格納されている探索結果を更新せずに、通常判定回路1605によって取得された探索結果を使用して、LBA96を指定する鍵探索要求に対する応答をする。
【0190】
鍵探索回路16は、LBA97、98、…、および103を指定する鍵探索要求に関して、LBA96を指定する鍵探索要求と同様の処理を実行する。
【0191】
次に、鍵探索回路16は、LBA104を指定する鍵探索要求に対する鍵探索処理を実行する。ここでは、RLB Hit判定回路1609は、RLB1612がLBA90に対応する探索結果を保持しているため、ミスを判定する。そして、RLB更新判定回路1610は、更新判定処理を実行する。LBA104が含まれるクラスタ12が、レンジ1およびレンジ2の開始LBA、終端LBAを含んでいないため、RLB更新判定回路1610は、更新をする判定を出力する。これにより、RLB1612は、LBA104に対応する探索結果を保持する。
【0192】
次に、鍵探索回路16は、LBA105を指定する鍵探索要求に対する鍵探索処理を実行する。RLB Hit判定回路1609は、LBA104に対応する探索結果を保持しているため、同じクラスタに含まれているLBA105を指定する鍵探索要求に対してヒットを判定する。そのため、鍵探索回路16は、RLB1612に格納されている探索結果を使用して、LBA105を指定する鍵探索要求に対する応答をする。
【0193】
鍵探索回路16は、LBA106、107、108、および109を指定する鍵探索要求に関して、LBA105を指定する鍵探索要求と同様の処理を実行する。
【0194】
以上説明したように、実施形態によれば、鍵探索回路16は、受信した鍵探索要求によって指定されたLBAに基づいて、レンジテーブル31を参照し、取得したアクセス可否情報と、暗号鍵とをRLB1612に格納することができる。受信した鍵探索要求が、RLB1612の保持内容にヒットした場合、鍵探索回路16は、RLB1612に保持されている、アクセス可否情報と暗号鍵とを含む探索結果を出力することができる。
【0195】
これにより、鍵探索回路16は、通常判定回路1605による通常判定処理をスキップして、アクセス可否情報と暗号鍵とを含む探索結果を出力することができる。そのため、アクセス可否情報および暗号鍵の探索に必要とする時間を短縮することができる。
【0196】
また、実施形態によれば、RLB更新判定回路1610は、受信した鍵探索要求によって指定されるLBAが含まれる一括探索単位の内部に、複数のレンジのレンジ境界が含まれているか否かに基づいて、RLB1612の保持内容を更新するかどうかを判定する。また、RLB Hit判定回路1609は、受信した鍵探索要求によって指定されるLBAとRLB1612に保持されているLBAとが同じ一括探索単位に含まれているか否かに基づいて、受信した鍵探索要求が、RLB1612の保持内容にヒットするかどうかを判定する。これにより、受信した鍵探索要求によって指定されるLBAがRLB1612に保持されているLBAに一致する場合のみならず、例えば、受信した鍵探索要求によって指定されるLBAを含むクラスタが、RLB1612に保持されているLBAを含むクラスタに一致する場合も、RLB1612の保持内容を探索結果として利用することが可能となる。よって、RLB1612のヒット率を高めることが可能となる。
【0197】
なお、本実施形態では、RLB更新判定回路1610は、レンジテーブル31の全エントリを、通常判定回路1605による通常判定処理とは独立して、順次探索しているが、RLB更新判定回路1610が動作する条件は、通常判定回路1605が動作する条件と同一であり、かつ、通常判定回路1605もレンジテーブル31の全エントリの探索が必要であるため、両者を同一の設計モジュール内に配置する構成として、通常判定処理とRLB更新判定処理とを同時に行ってもよい。また、通常判定回路1605による通常判定処理において、鍵探索要求に対応するレンジ情報が見つからず、対応する暗号鍵が存在しないようなエラーを検出した場合には、RLB1612を更新しないように制御してもよい。さらには、本実施形態では、RLB1612に含まれるエントリの数が1である場合を例示したが、RLB1612が複数のエントリを含むように構成し、RLB1612をフルアソシアティブまたはセットアソシアティブの構成としてもよい。
【0198】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0199】
1…情報処理システム、2…ホスト、3…メモリシステム、4…コントローラ、5…記憶装置、11…ホストインタフェース回路、12…CPU、13…NANDインタフェース回路、16…鍵探索回路16、18…暗号化/復号回路18、1601…鍵探索要求入力回路1601、1602、1604…レジスタ、1603、1606、1611…セレクタ、1605…通常判定回路、1608…暗号鍵出力回路、1609…RLB Hit判定回路、1610…RLB更新判定回路。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15