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

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

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

特開2022-61450読出しコントローラおよび入出力コントローラ
<>
  • 特開-読出しコントローラおよび入出力コントローラ 図1
  • 特開-読出しコントローラおよび入出力コントローラ 図2
  • 特開-読出しコントローラおよび入出力コントローラ 図3
  • 特開-読出しコントローラおよび入出力コントローラ 図4
  • 特開-読出しコントローラおよび入出力コントローラ 図5
  • 特開-読出しコントローラおよび入出力コントローラ 図6
  • 特開-読出しコントローラおよび入出力コントローラ 図7
  • 特開-読出しコントローラおよび入出力コントローラ 図8
  • 特開-読出しコントローラおよび入出力コントローラ 図9
  • 特開-読出しコントローラおよび入出力コントローラ 図10
  • 特開-読出しコントローラおよび入出力コントローラ 図11
  • 特開-読出しコントローラおよび入出力コントローラ 図12
  • 特開-読出しコントローラおよび入出力コントローラ 図13
  • 特開-読出しコントローラおよび入出力コントローラ 図14
  • 特開-読出しコントローラおよび入出力コントローラ 図15
  • 特開-読出しコントローラおよび入出力コントローラ 図16
  • 特開-読出しコントローラおよび入出力コントローラ 図17
  • 特開-読出しコントローラおよび入出力コントローラ 図18
  • 特開-読出しコントローラおよび入出力コントローラ 図19
  • 特開-読出しコントローラおよび入出力コントローラ 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022061450
(43)【公開日】2022-04-18
(54)【発明の名称】読出しコントローラおよび入出力コントローラ
(51)【国際特許分類】
   G06F 3/06 20060101AFI20220411BHJP
   G06F 12/00 20060101ALI20220411BHJP
   G06F 21/60 20130101ALI20220411BHJP
【FI】
G06F3/06 301N
G06F3/06 301P
G06F3/06 301W
G06F12/00 597U
G06F21/60 320
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2021042454
(22)【出願日】2021-03-16
(31)【優先権主張番号】P 2020169245
(32)【優先日】2020-10-06
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】大場 義洋
(72)【発明者】
【氏名】石原 丈士
(72)【発明者】
【氏名】小川 貴也
(72)【発明者】
【氏名】松井 一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CA01
(57)【要約】
【課題】ストレージに保持される、逐次処理されうるデータの処理を、データ再配信も考慮して効率的に行う。
【解決手段】実施形態によれば、読出しコントローラは、不揮発性メモリに対して逐次処理されうるデータ及びメタデータの読出しを行う。読出しコントローラは、読出し部と、読出しモード切替部と、第一データ処理部と、を具備する。読出し部は、不揮発性メモリから第一データ及び第一メタデータの読出しを行う。読出しモード切替部は、第一メタデータに基づいて第一データに対して逐次処理を行うかどうかを判定する。第一データ処理部は、読出しモード切替部が逐次処理を行うと判定した場合、逐次処理に必要な情報を保持し、第一データに対して逐次処理を行い、逐次処理の結果を含む第二メタデータを生成する。読出しコントローラは、第一データと、第一メタデータまたは第二メタデータとを出力する。
【選択図】図1
【特許請求の範囲】
【請求項1】
不揮発性メモリに対して逐次処理されうるデータ及びメタデータの読出しを行う読出しコントローラであって、
前記不揮発性メモリから第一データ及び第一メタデータの読出しを行う読出し部と、
前記第一メタデータに基づいて前記第一データに対して逐次処理を行うかどうかを判定する読出しモード切替部と、
前記読出しモード切替部が逐次処理を行うと判定した場合、逐次処理に必要な情報を保持し、前記第一データに対して逐次処理を行い、逐次処理の結果を含む第二メタデータを生成する第一データ処理部とを有し、
前記第一データと、前記第一メタデータまたは前記第二メタデータとを出力する読出しコントローラ。
【請求項2】
不揮発性メモリに対して逐次処理されうるデータ及びメタデータの読出しを行う読出しコントローラであって、
前記不揮発性メモリから第一データ及び第一メタデータの読出しを行う読出し部と、
前記第一メタデータに基づいて前記第一データに対して逐次処理を行うかどうかを判定する読出しモード切替部と、
前記読出しモード切替部が逐次処理を行うと判定した場合、逐次処理に必要な情報を保持し、前記第一データに対して逐次処理を行い、逐次処理の結果を含む第二データを生成する第一データ処理部とを有し、
前記第一データまたは前記第二データと、前記第一メタデータとを出力する読出しコントローラ。
【請求項3】
請求項1または2に記載の読出しコントローラと、データ及びメタデータの書込みを行う書込みコントローラとを具備する入出力コントローラであって、
前記書込みコントローラは、外部から入力した第一データ及び第一メタデータを前記不揮発性メモリへ書込む書込み部を有する、
入出力コントローラ。
【請求項4】
請求項1に記載の読出しコントローラと、データ及びメタデータの書込みを行う書込みコントローラとを具備する入出力コントローラであって、
前記書込みコントローラは、外部から前記第一データと前記第一メタデータを入力し、前記第一メタデータに基づいて前記第一データに対して逐次処理を行うかどうかを判定する書込みモード切替部と、
前記書込みモード切替部が逐次処理を行うと判定した場合、逐次処理に必要な情報を保持し、前記第一データに対して逐次処理を行い、逐次処理の結果を含む第二データを生成する第二データ処理部と、
前記第一データまたは第二データのいずれか、及び、前記第一メタデータを前記不揮発性メモリへ書込む書込み部を有する、
入出力コントローラ。
【請求項5】
請求項2に記載の読出しコントローラと、データ及びメタデータの書込みを行う書込みコントローラとを具備する入出力コントローラであって、
前記書込みコントローラは、外部から前記第一データと前記第一メタデータを入力し、前記第一メタデータに基づいて前記第一データに対して逐次処理を行うかどうかを判定する書込みモード切替部と、
前記書込みモード切替部が逐次処理を行うと判定した場合、逐次処理に必要な情報を保持し、前記第一データに対して逐次処理を行い、逐次処理の結果を含む第二データを生成する第二データ処理部と、
前記第一データまたは第二データのいずれか、及び、前記第一メタデータを前記不揮発性メモリへ書込む書込み部を有する、
入出力コントローラ。
【請求項6】
請求項1に記載の読出しコントローラであって、
前記不揮発性メモリから前記第一データ及び前記第一メタデータの読出しを指示する読出しコマンドと該読出しコマンドに付随する拡張メタデータとを外部から受信するとともに、前記読出しコマンドと前記拡張メタデータとを分離して、前記読出しコマンドは前記読出し部に送出し、前記拡張メタデータは前記読出しモード切替部と前記第一データ処理部に通知する拡張メタデータ抽出部をさらに具備し、
前記読出しモード切替部は、
前記第一メタデータと前記拡張メタデータに応じて前記第一データに対して逐次処理を行うかどうか、及び/又は、読み出したデータを出力するかどうかを判断することを含み、
前記第一データ処理部は、
前記読出しモード切替部が逐次処理を実行すると判断した場合には、前記第一メタデータと前記拡張メタデータの少なくとも一方に基づいて前記第一データに対して逐次処理を行い、逐次処理の結果を含む前記第二メタデータを生成することを含み、
前記読出しモード切替部が逐次処理を実行すると判断した場合、前記第一データ、及び、前記第二メタデータを外部に出力し、
前記読出しモード切替部が逐次処理を行わないと判定した場合、前記第一データ、及び、前記第一メタデータを外部に出力し、
前記読出しモード切替部が、読み出したデータを出力しないと判断した場合には、第一メタデータのみを外部に出力する、またはエラーである旨を含む第二メタデータのみを出力する、またはいずれも出力しない、
という動作を行う、
読出しコントローラ。
【請求項7】
請求項2に記載の読出しコントローラであって、
前記不揮発性メモリから前記第一データ及び前記第一メタデータの読出しを指示する読出しコマンドと該読出しコマンドに付随する拡張メタデータとを外部から受信するとともに、前記読出しコマンドと前記拡張メタデータとを分離して、前記読出しコマンドは前記読出し部に送出し、前記拡張メタデータは前記読出しモード切替部と前記第一データ処理部に通知する拡張メタデータ抽出部をさらに具備し、
前記読出しモード切替部は、
前記第一メタデータと前記拡張メタデータに応じて前記第一データに対して逐次処理を行うかどうか、及び/又は、読み出したデータを出力するかどうかを判断することを含み、
前記第一データ処理部は、
前記読出しモード切替部が逐次処理を実行すると判断した場合には、前記第一メタデータと前記拡張メタデータの少なくとも一方に基づいて前記第一データに対して逐次処理を行い、逐次処理の結果を含む前記第二データを生成することを含み、
前記読出しモード切替部が逐次処理を実行すると判断した場合、前記第二データ、及び、前記第一メタデータを外部に出力し、
前記読出しモード切替部が逐次処理を行わないと判定した場合、前記第一データ、及び、前記第一メタデータを外部に出力し、
前記読出しモード切替部が、読み出したデータを出力しないと判断した場合には、第一メタデータのみを外部に出力する、またはエラーを示すデータを含む第二データを出力する、またはいずれも出力しない、
という動作を行う、
読出しコントローラ。
【請求項8】
請求項4に記載の入出力コントローラであって、
前記不揮発性メモリから前記第一データ及び前記第一メタデータの読出しを指示する読出しコマンドと該読出しコマンドに付随する拡張メタデータとを外部から受信するとともに、前記読出しコマンドと前記拡張メタデータとを分離して、前記読出しコマンドは前記読出し部に送出し、前記拡張メタデータは前記読出しモード切替部と前記第一データ処理部に通知し、
前記不揮発性メモリへ前記第一データ及び前記第一メタデータの書き込みを指示する書込みコマンドと該書込みコマンドに付随する拡張メタデータとを外部から受信するとともに、前記書込みコマンドと前記拡張メタデータとを分離して、前記書込みコマンドは前記書込み部に送出し、前記拡張メタデータは前記書込みモード切替部と前記第二データ処理部に通知する、
拡張メタデータ抽出部をさらに具備し、
前記書込みモード切替部は、
前記第一メタデータと前記拡張メタデータに基づいて前記第一データに対して逐次処理を行うかどうか、及び/又は、受信した第一データを書き込むかどうかを判断することを含み、
前記第二データ処理部は、
前記書込みモード切替部が逐次処理を行うと判定した場合、前記第一データに対して逐次処理を行い、逐次処理の結果を含む前記第二データを生成することを含み、
前記書込みモード切替部が逐次処理を行うと判定した場合、前記第二データ及び前記第一メタデータを前記不揮発性メモリへ書込み、
前記書込みモード切替部が逐次処理を行わないと判定した場合、前記第一データ及び前記第一メタデータを前記不揮発性メモリへ書き込み、
前記書込みモード切替部が、受信したデータを書き込まないと判定した場合、前記第一データ及び前記第一メタデータのいずれも前記不揮発性メモリへ書き込まない、
という動作を行い、
前記読出しモード切替部は、
前記第一メタデータと前記拡張メタデータに応じて、読み出したデータに対して逐次処理を行うかどうか、及び/又は、読み出したデータを出力するかどうかを判断することを含み、
前記第一データ処理部は、
前記読出しモード切替部が逐次処理を実行すると判断した場合には、第一メタデータと拡張メタデータの少なくとも一方に基づいて前記第一データに対して逐次処理を行い、逐次処理の結果を含む第二メタデータを生成することを含み、
前記読出しモード切替部が逐次処理を実行すると判断した場合、前記第一データまたは前記第二データ、及び、前記第二メタデータを外部に出力し、
前記読出しモード切替部が逐次処理を行わないと判定した場合、不揮発性メモリから読み込んだ前記第一データまたは前記第二データ、及び、前記第一メタデータを外部に出力し、
前記読出しモード切替部が、読み出したデータを出力しないと判断した場合には、第一メタデータのみを外部に出力する、またはエラーを示すデータを含む第二メタデータを出力する、またはいずれも出力しない、
という動作を行う、
入出力コントローラ。
【請求項9】
請求項5に記載の入出力コントローラであって、
前記不揮発性メモリから前記第一データ及び前記第一メタデータの読出しを指示する読出しコマンドと該読出しコマンドに付随する拡張メタデータとを外部から受信するとともに、前記読出しコマンドと前記拡張メタデータとを分離して、前記読出しコマンドは前記読出し部に送出し、前記拡張メタデータは前記読出しモード切替部と前記第一データ処理部に通知し、
前記不揮発性メモリへ前記第一データ及び前記第一メタデータの書き込みを指示する書込みコマンドと該書込みコマンドに付随する拡張メタデータとを外部から受信するとともに、前記書込みコマンドと前記拡張メタデータとを分離して、前記書込みコマンドは前記書込み部に送出し、前記拡張メタデータは前記書込みモード切替部と前記第二データ処理部に通知する、
拡張メタデータ抽出部をさらに具備し、
前記書込みモード切替部は、
前記第一メタデータと前記拡張メタデータに基づいて前記第一データに対して逐次処理を行うかどうか、及び/又は、受信した第一データを書き込むかどうかを判断することを含み、
前記第二データ処理部は、
前記書込みモード切替部が逐次処理を行うと判定した場合、前記第一データに対して逐次処理を行い、逐次処理の結果を含む第二データを生成することを含み、
前記書込みモード切替部が逐次処理を行うと判定した場合、前記第二データ及び前記第一メタデータを前記不揮発性メモリへ書き込み、
前記書込みモード切替部が逐次処理を行わないと判定した場合、前記第一データ及び前記第一メタデータを前記不揮発性メモリへ書き込み、
前記書込みモード切替部が、受信した第一データを書き込まないと判定した場合、前記第一データ及び前記第一メタデータのいずれも前記不揮発性メモリへ書き込まない、
という動作を行い、
前記読出しモード切替部は、
前記第一メタデータと前記拡張メタデータに応じて、読み出したデータに対して逐次処理を行うかどうか、及び/又は、読み出したデータを出力するかどうかを判断することを含み、
前記第一データ処理部は、
前記読出しモード切替部が逐次処理を実行すると判断した場合には、第一メタデータと拡張メタデータの少なくとも一方に基づいて逐次処理を行い、逐次処理の結果を含む第三データを生成することを含み、
前記読出しモード切替部が逐次処理を実行すると判断した場合、前記第三データ及び前記第一メタデータを外部に出力し、
前記読出しモード切替部が逐次処理を行わないと判定した場合、不揮発性メモリから読み込んだ第一または第二データ、及び、前記第一メタデータを外部に出力し、
前記読出しモード切替部が、読み出したデータを出力しないと判断した場合には、第一メタデータのみを外部に出力する、またはエラーを示すデータを含む第三データを出力する、またはいずれも出力しない、
という動作を行う、
入出力コントローラ。
【請求項10】
不揮発性メモリを具備する請求項1、2、6または7のいずれか1項に記載の読出しコントローラ。
【請求項11】
不揮発性メモリを具備する請求項3、4、5、8または9のいずれか1項に記載の入出力コントローラ。
【請求項12】
前記逐次処理として、マルチメディアエンコード処理、及び、マルチメディアデコード処理を行う請求項1、2、6、7または10のいずれか1項に記載の読出しコントローラ。
【請求項13】
前記逐次処理として、マルチメディアエンコード処理、及び、マルチメディアデコード処理を行う請求項3、4、5、8、9または11のいずれか1項に記載の入出力コントローラ。
【請求項14】
前記逐次処理として、セキュリティ暗号化処理、及び、セキュリティ復号処理を行う請求項1、2、6、7または10のいずれか1項に記載の読出しコントローラ。
【請求項15】
前記逐次処理として、セキュリティ暗号化処理、及び、セキュリティ復号処理を行う請求項3、4、5、8、9または11のいずれか1項に記載の入出力コントローラ。
【請求項16】
前記逐次処理として、データ圧縮処理、及び、データ解凍処理を行う請求項12、6、7または10のいずれか1項に記載の読出しコントローラ。
【請求項17】
前記逐次処理として、データ圧縮処理、及び、データ解凍処理を行う請求項3、4、5、8、9または11のいずれか1項に記載の入出力コントローラ。
【請求項18】
前記逐次処理として、ブロックチェーン台帳へのデジタル署名計算処理を行う請求項1、2、6、7または10のいずれか1項に記載の読出しコントローラ。
【請求項19】
前記逐次処理として、ブロックチェーン台帳へのデジタル署名計算処理を行う請求項3、4、5、8、9または11のいずれか1項に記載の入出力コントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、読出しコントローラおよび入出力コントローラに関する。
【背景技術】
【0002】
ビデオや音声などのマルチメディアデータの復号には、一般に、デコーダと呼ばれる、特定のマルチメディアフォーマットを持つデータを逐次入力して復号処理を施し、復号処理済データを出力するための専用ハードウェアが使用される。デコーダには、デコーダ専用機、GPGPU(General-Purpose computing on GPU)、CPU内蔵デコーダがある。デコーダ専用機には、例えば、DVD媒体に記憶されたマルチメディアデータをデコードするDVDプレーヤーや放送波上で受信したマルチメディアデータをデコードするデジタルTVチューナーがある。GPGPUは、通常のGPUに加え、CPUのような汎用処理が可能である。例えば、H.264形式のビデオデータをGPGPUでデコードすることによりCPU処理負荷を大幅に低減することが可能である。また、CPUのダイに専用のデコード回路を持つことで、GPGPUを用いずにCPU処理負荷低減を可能とする方式もある(Intel Quick Sync Videoなど)。
【0003】
また、機密性が高い情報をストレージデバイスに保存する際に、ホストCPUでは暗号化処理を行わずにストレージデバイスに内蔵される暗号処理部によって暗復号処理を行い、書込みと読み込みを行う技術がある。また、そのような機密度が高い情報を扱うストレージデバイスでは、適切に検証したホストCPUとの間だけでI/O処理を行う技術がある。
【0004】
フラッシュメモリやハードディスクなどのストレージに保存されたマルチメディアデータを扱う場合、デコードだけでなく、データの再配信を考慮する必要があるが、デコード専用機はデコードのみに特化し、データの再配信には不適である。一方、GPGPUやCPU内蔵デコーダは、エンコードされたデータをストレージからメモリに読出し、デコード処理後にデコード済データを再びメモリに書込む処理が必要である。
【0005】
同様の問題は暗復号処理にも存在する。すなわち、ある暗号鍵で暗号化した情報を再配布する際には暗号鍵を付け替えるか、暗号鍵を共有しなければならない。暗号鍵の共有は現実的ではないので、暗号鍵を付け替えるためにストレージデバイスから読み出した情報をCPUにより再度暗号化して再配布する必要がある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】国際公開第2018/142947号
【特許文献2】米国特許第10545927号明細書
【特許文献3】米国特許第9584623号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、ストレージに保持される、逐次処理されうるデータの処理を、データの再配信も考慮して効率的に行うことである。
【課題を解決するための手段】
【0008】
実施形態によれば、読出しコントローラは、不揮発性メモリに対して逐次処理されうるデータ及びメタデータの読出しを行う。読出しコントローラは、読出し部と、読出しモード切替部と、第一データ処理部と、を具備する。読出し部は、不揮発性メモリから第一データ及び第一メタデータの読出しを行う。読出しモード切替部は、第一メタデータに基づいて第一データに対して逐次処理を行うかどうかを判定する。第一データ処理部は、読出しモード切替部が逐次処理を行うと判定した場合、逐次処理に必要な情報を保持し、第一データに対して逐次処理を行い、逐次処理の結果を含む第二メタデータを生成する。読出しコントローラは、第一データと、第一メタデータまたは第二メタデータとを出力する。
【図面の簡単な説明】
【0009】
図1】第1実施形態の読出し制御モジュールの構成図
図2】第1実施形態において不揮発性ストレージとしてNVMe SSDを用いた場合のメタデータの一例を示す図
図3】第1実施形態におけるコーデック情報の一例を示す図
図4】第1実施形態の読出し制御モジュールの動作手順を示すフローチャート
図5】第2実施形態の読出し制御モジュールの構成図
図6】第2実施形態の読出し制御モジュールの動作手順を示すフローチャート
図7】第3実施形態のI/O制御モジュールの構成図
図8】第3実施形態の書込み制御モジュールの動作手順を示すフローチャート
図9】第4実施形態のI/O制御モジュールの構成図
図10】第4実施形態の書込み制御モジュールの動作手順を示すフローチャート
図11】第5実施形態のI/O制御モジュールの構成図
図12】第6実施形態の読出し制御モジュールの構成図
図13】第7実施形態の読出し制御モジュールの構成図
図14】第8実施形態のI/O制御モジュールの構成図
図15】第9実施形態のI/O制御モジュールの構成図
図16】第10実施形態のI/O制御モジュールの構成図
図17】実施形態のI/O制御モジュールを用いたコンピュータの構成図
図18】実施形態のI/O制御モジュールを用いたコンピュータと拡張メタデータ生成サーバの構成図
図19】実施形態のI/O制御モジュールを用いたネットワークストレージ装置の構成図
図20図19に示したIO制御モジュールをネットワークインタフェースに統合した場合におけるネットワークストレージ装置の構成図
【発明を実施するための形態】
【0010】
以下、実施の形態について図面を参照して説明する。
【0011】
(第1実施形態)
まず、第1実施形態について説明する。
【0012】
図1は、本実施形態における読出し制御モジュール(読出しコントローラ)10の構成例を示す。図1において、読出し制御モジュール10は、読出し部11、読出しモード切替部12、データ処理部(第一データ処理部)13で構成される。読出し部11、読出しモード切替部12、データ処理部13は、電気回路などといったハードウェアによって実現されるものであってもよいし、プロセッサ(図示せず)によって実行されるプログラム(ソフトウェア)によって実現されるものであってもよい。
【0013】
読出し制御モジュール10は不揮発性メモリ1から第一データ、及び、第一メタデータを読出し、読出しモード切替部12に渡す。読出しモード切替部12は、第一データ、及び、第一メタデータをデータ処理部13に渡すか、或いはそのまま外部に出力するかを、第一メタデータを用いて決定する。データ処理部13は、読出しモード切替部12から第一データ、及び、第一メタデータを入力すると、第一データ、及び、第一メタデータを逐次処理した後、第一データ、及び、逐次処理済データを含む第二メタデータを外部に出力する。
【0014】
読出しモード切替部12が第一データ、及び、第一メタデータをそのまま外部に出力するのは、例えば、不揮発性メモリ1に蓄積されたエンコード済データをデコードせずに再配布する場合である。
【0015】
データ処理部13が入力データを逐次処理する際、逐次処理に必要なステートを内部状態として保持する。内部状態としては、例えば、H.264動画圧縮においては参照フレーム、Blockchain台帳においてはブロックに対するデジタル署名の値がある。
【0016】
次に、図2に、本実施形態における第一メタデータの一例を示す。図2において、第一メタデータは、Contents ID(a1)、Chunk Number(a2)、Codec Information Pointer(a3)、Codec Output Data Pointer(a4)から構成される。なお、このメタデータは、例えば、NVMe仕様で規定されるメタデータの一部に含まれるかもしれない。
【0017】
Contents ID(a1)はコンテンツ識別子である。コンテンツ識別子が異なるメタデータに関連付けられたデータ同士は並列にエンコード処理またはデコード処理が可能である。
【0018】
Chunk Number(a2)はコンテンツを複数のチャンクに分割した場合に付与される識別用の番号である。ここでチャンクの定義は読出し制御モジュール10が処理するデータにより異なる。例えば、後述するCodec TypeがMPEG4を示す場合には、チャンクはMPEG4のBox 1個に対応するかもしれない。また、後述するCodec TypeがEncrypted H.264 NALU (https://developer.apple.com/lifbrary/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html)を示す場合には、チャンクはEncrypted H.264 NALUを含むMedia Data Container Box 1個に対応するかもしれない。また、後述するCodec TypeがEncrypted AAC (Advanced Audio Code) Frame (https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html)を示す場合には、チャンクは暗号化AACフレームを含むMedia Data Container Box 1個に対応するかもしれない。また、後述するCodec TypeがBlockchainを示す場合には、チャンクはBlockchain台帳のブロック1個に対応するかもしれない。
【0019】
Codec Information Pointer(a3)は、読出し制御モジュール10のデータ処理部13が参照するコーデック情報へのポインタである。読出し制御モジュール10が接続するホスト(図示せず)のメモリ空間にコーデック情報が保存されていると仮定すれば、本ポインタはホストのメモリ空間のアドレスとなる。Codec Information Pointerが空(NULL)の場合は、読出し制御モジュール10のデータ処理部13でコーデック処理を行わないことを示す。すなわち、図1の読出しモード切替部12は、第一データ、及び、第一メタデータをそのまま外部に出力するように動作を変更する。
【0020】
Codec Output Data Pointer(a4)は、読出し制御モジュール10のデータ処理部13がコーデック処理を行ったデータへのポインタである。ホスト上のメモリ空間に処理済みデータを配置した場合には、そのアドレスとなる。
【0021】
次に、図3に、図2で述べたコーデック情報の一例を示す。コーデック情報は、Codec Type(b1)、Processing Type(b2)、Codec Parameters(b3)、及び、Encryption Key(b4)から構成される。Codec Type(b1)はコーデック種別(例えば、Encrypted H.264 NALU)を示す。Processing Type(b2)は、0(エンコード処理)か1(デコード処理)のいずれかを示す。Codec Parameters(b3)は、コーデック種別に固有のコーデックパラメータを示す。Encryption Key(b4)はエンコード処理、または、デコード処理時にデータに対してセキュリティ暗号化処理、または、セキュリティ復号処理が施される場合に使用される暗号鍵または暗号鍵の識別子を示す。暗号鍵は共通鍵暗号の共通鍵、公開鍵暗号の公開鍵、公開鍵暗号の秘密鍵、もしくはそれらの任意の組み合わせであるかもしれない。暗号鍵の識別子が指定されている場合は、その値を用いて読出し制御モジュール10の内部もしくは事前に設定されたホストのメモリ空間に格納されている暗号鍵を識別し、セキュリティ暗号化処理もしくはセキュリティ復号処理に使用する。
【0022】
前述のCodec Type(b1)がBlockchainを示す場合には、セキュリティ暗号化処理として、デジタル署名計算処理が使用され、Encryption Key(b4)として、当該チャンクに対してデジタル署名が適用されるサイナーの公開鍵が指定されるかもしれない。その際、エンコード処理においては、Encryption Key(b4)として指定されたサイナーの公開鍵に対応付けられ、かつ、あらかじめデータ処理部に設定されたサイナーの秘密鍵を用いてデジタル署名計算処理が行われ、デコード処理においては、Encryption Key(b4)として指定されたサイナーの公開鍵を用いてデジタル署名計算処理が行われるかもしれない。
【0023】
次に、図4に、図1に示した第1実施形態における読出し制御モジュール10に係るフローチャートを示す。以降の説明ではホストとの接続関係や不揮発性メモリ1との接続関係を特定せずに汎用的な表現で情報の入出力を述べるが、実際には各種プロトコルに基づく命令を用いることができる。
【0024】
本動作は、読出し制御モジュール10が接続するホストが発行する不揮発性メモリ1に対する読出し要求を受信することで開始される。ここでは読み出す情報を特定する識別子(例えばアドレス)とその長さを伴った要求を受信したとする(S101)。そして、読出し制御モジュール10は指定された識別子から実際に読み出すべき不揮発性メモリ1の論理ブロックを特定する(図示せず)。
【0025】
次に、読出し対象論理ブロックのブロック番号BLKと読出し対象論理ブロックの先頭からのバイト数OFFSETで指定される不揮発性メモリ1の所定位置から、データDと、データDに付随したメタデータMDとを読み出す((D,MD) ← READ(BLK,OFFSE))。そして、読み出したデータDの長さを受信した要求の長さLENから減ずる(S102)。
【0026】
次いで、読み出したデータDに付随するメタデータMDの所定のフィールド(例えば図2のCodec Information Pointer(a3))を参照し、デコード処理が必要かどうかを判断する(NEEDS_DECODE(MD))(S103)。
【0027】
デコード処理が必要と判断した場合(例えば図2のCodec Information Pointer(a3)がNULLでない場合)には(S103:Yes)、データDを、メタデータMDに含まれる情報とデコーダの現在のステートSを用いてデコードし、デコード処理済データへのポインタをMDの所定のフィールド(例えば図2のCodec Output Data Pointer)に入れるとともに、デコーダのステートSを更新する( (MD,S) ← DECODE(D,MD,S) )(S104)。デコード処理が不要と判断した場合(例えば図2のCodec Information Pointer(a3)がNULLの場合)には(S103:No)、データDやメタデータMDに何ら処理を行わない。
【0028】
最後に、メタ情報MDに応じて処理された(もしくはされなかった)データDと、メタデータMDを外部モジュールに出力する(OUTPUT(D,MD))(S105)。なお、更新後のステートSがデコード処理の失敗を表す場合には、出力データDは値が無いことを示すNULLや不定値かもしれない。
【0029】
要求された長さに対応する情報をすべて読み出して出力していれば(LEN > 0 が偽)(S106:No)、処理を終了し、まだ読み出すべきデータがあれば(LEN > 0 が真)(S106:Yes)、読出し処理に戻る。
【0030】
以上が本実施形態における動作である。不揮発性メモリ1に保存された情報に対して、付随するメタデータに応じて処理の要否を判断し、連続的に読み出しながら処理が必要であれば施すことができる。これにより、処理を行う不揮発性メモリ1とホストCPUとの間で多くのデータ転送を削減するという効果を奏する。
【0031】
つまり、本実施形態においては、ストレージに保持される、逐次処理されうるデータの処理を、データの再配信も考慮して効率的に行うことができる。
【0032】
(第2実施形態)
続いて、第2実施形態について説明する。本実施形態の構成は第1実施形態と同じであるが、データ及びメタデータの流れが異なる。特に、処理の前後でデータサイズが同じ場合に有効な実施形態である。
【0033】
図5は、本実施形態における読出し制御モジュール10の構成例を示す。図5において、読出し制御モジュール10は、読出し部11、読出しモード切替部12、データ処理部13で構成される。
【0034】
読出し制御モジュール10は不揮発性メモリ1から第一データ、及び、第一メタデータを読出し、読出しモード切替部12に渡す。読出しモード切替部12は、第一データ、及び、第一メタデータをデータ処理部13に渡すか、或いはそのまま外部に出力するかを、第一メタデータを用いて決定する。データ処理部13は、読出しモード切替部12から第一データ、及び、第一メタデータを入力すると、第一データ、及び、第一メタデータを逐次処理した後、逐次処理済データを含む第二データ、及び、第一メタデータを外部に出力する。
【0035】
読出しモード切替部12が第一データ、及び、第一メタデータをそのまま外部に出力するのは、例えば、不揮発性メモリ1に蓄積されたエンコード済データをデコードせずに再配布するために読み出す場合である。
【0036】
次に、図6に、図5に示した第2実施形態における読出し制御モジュール10に係るフローチャートを示す。以降の説明ではホストとの接続関係や不揮発性メモリ1との接続関係を特定せずに汎用的な表現で情報の入出力を述べるが、実際には各種プロトコルに基づく命令を用いることができる。
【0037】
本動作は、読出し制御モジュール10が接続するホストが発行する不揮発性メモリ1に対する読出し要求を受信することで開始される。ここでは読み出す情報を特定する識別子(例えばアドレス)とその長さを伴った要求を受信したとする(S201)。
【0038】
そして、読出し制御モジュール10は指定された識別子から実際に読み出すべき不揮発性メモリ1の論理ブロックを特定する(図示せず)。
【0039】
次に、読出し対象論理ブロックのブロック番号BLKと読出し対象論理ブロックの先頭からのバイト数OFFSETで指定される不揮発性メモリ1の所定位置から、データDと、データDに付随したメタデータMDとを読み出す((D,MD) ← READ(BLK,OFFSE))。そして、読み出したデータDの長さを受信した要求の長さLENから減ずる(S202)。
【0040】
次いで、読み出したデータDに付随するメタデータMDの所定のフィールド(例えば図2のCodec Information Pointer(a3))を参照し、デコード処理が必要かどうかを判断する(NEEDS_DECODE(MD))(S203)。
【0041】
デコード処理が必要と判断した場合(例えば図2のCodec Information Pointer(a3)がNULLでない場合)には(S203:Yes)、データDを、メタデータMDに含まれる情報とデコーダの現在のステートSを用いてデコードし、デコード処理済データへのポインタをDに入れるとともに、デコーダのステートSを更新する((D,S) ← DECODE(D,MD,S))(S204)。デコード処理が不要と判断した場合(例えば図2のCodec Information Pointer(a3)がNULLの場合)には(S203:No)、データDやメタデータMDに何ら処理を行わない。
【0042】
なお、更新後のステートSがデコード処理の失敗を表す場合には、出力データDは値が無いことを示すNULLや不定値かもしれない。
【0043】
本実施形態が第1実施形態と異なる部分は、処理済みデータを処理前データと置き換える形で外部に出力する点である。従来は、不揮発性メモリ1に保存された情報を変更無く読み出せることが必要であったが、本実施形態では、読出しを要求した主体(アプリケーションなど)が対応している前提で、保存された情報を加工した情報を出力することができる。このように本実施形態は第1実施形態と比べ、さらに不揮発性メモリ1から読み出す情報量を削減して効率的に情報処理が行えるという効果を奏する。
【0044】
(第3実施形態)
続いて第3実施形態について述べる。本実施形態は第1実施形態に単純な書き込み処理を追加したものである。
【0045】
図7は、本実施形態におけるI/O制御モジュール(入出力コントローラ)2の構成例を示す。図7において、I/O制御モジュール2は、書込み制御モジュール(書込みコントローラ)20、及び、読出し制御モジュール10とで構成される。書込み制御モジュール20は書込み部21で構成され、書込み部21はI/O制御モジュール2の外部から第一データ、及び、第一メタデータを入力として受け取り、それらを不揮発性メモリ1に書込む。書込み部21は、電気回路などといったハードウェアによって実現されるものであってもよいし、プロセッサ(図示せず)によって実行されるプログラム(ソフトウェア)によって実現されるものであってもよい。
【0046】
読出し制御モジュール10は、第一実施形態における読出し制御モジュール10と同じであるため、詳細は省略する。なお、前述した、読み出し制御モジュール10のデータ処理部13を、以下、読出し側データ処理部13とも称する。
【0047】
図8に、本実施形態の書込み制御モジュール20に係るフローチャートを示す。書き込み制御モジュール20の動作は、外部からデータDとメタデータMDとを受信すると始まる(INPUT(D,MD))。データDの長さを独立して受信してもよいし、メタデータMDの一部として含まれていてもよい。ここでは何らかの方法で特定したとする(LEN ← length(D))(S301)。
【0048】
次いで、書込み対象論理ブロックのブロック番号BLKと書込み対象論理ブロックの先頭からのバイト数OFFSETで指定される不揮発性メモリ1内の所定位置に、データD、及び、メタデータMDを書込む(WRITE(D,MD,BLK,OFFSET))。また、書き込んだ長さを減じて未処理のデータ長を更新する(LEN ← LEN(D))(S302)。未書き込みのデータがあれば(LEN > 0が真)(S303:Yes)、書き込み処理に戻り、無ければ(LEN > 0が偽)(S303:No)、終了する。
【0049】
なお、一連の説明では省略しているが、LEN > 0が真で書込みが複数回生じる際には、書込みごとに書込み対象論理ブロックのブロック番号BLKとオフセットバイト数OFFSETは適切に更新した後、書込みが行われる。
【0050】
以上が、第3実施形態である。書き込み時にデータのみならず、処理情報を含むメタデータを不揮発性メモリ1にデータとともに保存するようにしたことで、読出し時に必要な処理を実行できるようにした。なお、ここでは第1実施形態の構成に書き込み処理を追加したが、第2実施形態の構成に書き込み処理を追加する場合も同様にして実現できる。
【0051】
(第4実施形態)
続いて第4実施形態について述べる。本実施形態は第1実施形態に書込み時の逐次処理動作を追加したものである。
【0052】
図9は、本実施形態のI/O制御モジュール2の構成例を示す。I/O制御モジュール2は、書込み制御モジュール20、及び、読出し制御モジュール10とで構成される。書込み制御モジュールは書込み部21、書込みモード切替部22、及び、書込み側データ処理部(第二データ処理部)23で構成される。書込みモード切替部22、書込み側データ処理部23は、電気回路などといったハードウェアによって実現されるものであってもよいし、プロセッサ(図示せず)によって実行されるプログラム(ソフトウェア)によって実現されるものであってもよい。読出し制御モジュール10は第1実施形態における読出し制御モジュール10と同じである。
【0053】
書込み制御モジュール20は外部モジュールから第一データ、及び、第一メタデータを入力し、第一データ、及び、第一メタデータを書込み部21に渡し、第一メタデータを書込みモード切替部22に渡す。書込みモード切替部22は第一データ、及び、第一メタデータを書込み側データ処理部23に渡すか書込み部21に渡すかを、第一メタデータを用いて決定する。書込みモード切替部22が第一データ、及び、第一メタデータを書込み部21に渡すのは、例えば、エンコード済データをそのまま不揮発性メモリ1に書込む場合である。書込み側データ処理部23は、第一データ、及び、第一メタデータを入力すると、第一データを逐次処理し、逐次処理済の第二データ、及び、第一メタデータを書込み部21に渡す。書込み部21は外部モジュールから入力した第一データ、及び、第一メタデータ、もしくは、書込み側データ処理部23から入力した第二データ、及び、第一メタデータを不揮発性メモリ1に書込む。
【0054】
図10に、本実施形態の書込み制御モジュール20に係るフローチャートを示す。第3実施形態における書き込み制御モジュール20に係るフローチャートと比べて、メタデータMDに応じてエンコード処理の実行要否を判断する点(S402)、エンコード処理を施す点(S403)が異なる。
【0055】
外部からデータDとメタデータMDとを受信し(INPUT(D,MD))、データDの長さを特定したとする(LEN ← length(D))(S401)。その後、メタデータMDの所定のフィールド(例えば図2のCodec Information Pointer(a3))を参照し、エンコード処理が必要かどうかを判断する(NEEDS_ENCODE(MD))(S402)。
【0056】
エンコードが必要と判断した場合(例えば図2のCodec Information Pointer(a3)がNULLではない)(S402:Yes)、データDをメタデータMDに含まれる情報とエンコーダの現在のステートSを用いてエンコードし、デコード処理済データをDに入れるとともに、エンコーダのステートSを更新する((D,S) ← ENCODE(D,MD,S))(S403)。エンコード処理が不要な場合(例えば図2のCodec Information Pointer(a3)がNULL)(S402:No)には、データDやメタデータMDには何も変更を施さない。
【0057】
次いで、書込み対象論理ブロックのブロック番号BLKと書込み対象論理ブロックの先頭からのバイト数OFFSETで指定される不揮発性メモリ1内の所定位置に、データD、及び、メタデータMDを書込む(WRITE(D,MD,BLK,OFFSET))。また、書き込んだ長さを減じて未処理のデータ長を更新する(LEN ← LEN(D))(S404)。未書き込みのデータがあれば(LEN > 0 が真)(S405:Yes)、書き込み処理に戻り、無ければ(LEN > 0が偽)(S405:No)終了する。BLKとOFFSETの更新については、第3実施形態で述べた通りである。
【0058】
なお、更新後のステートSが失敗を表す場合には、WRITE操作は無効化されるかもしれない。または、要求に対する応答として外部にエラーである旨を通知してもよい。
【0059】
以上が、第4実施形態である。書き込み時にデータのみならず、処理情報を含むメタデータを不揮発性メモリ1にデータとともに保存するようにしたことで、読出し時に必要な処理を実行できるようにした。さらにメタデータの状態によってデータを保存する前に適切な処理を施して保存できるようにした。これにより、例えば、書き込み時にマルチメディアデータをエンコードしたり、何らかの情報に対して中間状態まで処理を行ったうえで保存し、読出し時に最終的な処理を行ったり等の利用が可能となる。読出しもしくは書き込み時にすべての処理を実行する必要が無く、書き込み時と読み込み時の状況差や配布先の変更などに対応しやすくなる。
【0060】
(第5実施形態)
続いて第5実施形態について述べる。本実施形態は第2実施形態に書き込み処理時の動作を追加したものである。第2実施形態と同様に、逐次処理の前後でデータサイズが同じ場合に有効である。
【0061】
図11は、本実施形態のI/O制御モジュール2の構成例を示す。第2実施形態における読出し制御モジュール10と第4実施形態における書き込み制御モジュール20を組み合わせた構成である。動作フローなどの詳細は第2ならびに第4実施形態と同様であるため、省略する。
【0062】
以上が、第5実施形態である。第2ならびに第4実施形態を組み合わせた効果を奏する。
【0063】
(第6実施形態)
続いて第6実施形態について述べる。本実施形態は第1実施形態における読み込み要求に拡張メタデータを追加することで、読み込み要求の結果出力可否を読出し制御モジュール10が判断できるようにしたり、保存時にメタデータに設定したものと異なる形で読み出せるようにしたりしたものである。
【0064】
図12に、本実施形態の読出し制御モジュール10の構成図を示す。図12において、読出し制御モジュール10は、読出し部11、読出しモード切替部12、データ処理部13、拡張メタデータ抽出部14で構成される。拡張メタデータ抽出部14は、読出し制御モジュール10に対する読出し要求から拡張メタデータを取り出し、読出し要求と拡張メタデータを分離する機能を具備する。取り出した拡張メタデータは、読み出しモード切替部12とデータ処理部13への新しい入力となる。拡張メタデータ抽出部14は、電気回路などといったハードウェアによって実現されるものであってもよいし、プロセッサ(図示せず)によって実行されるプログラム(ソフトウェア)によって実現されるものであってもよい。
【0065】
読出しモード切替部12は、第1実施形態の場合と同様に不揮発性メモリ1から読み出した第一メタデータで読み出しモードを切り替えることに加え、拡張メタデータも考慮して読み出しモードを切り替える。また、読み出しモードとして「そのまま出力」と「データ処理部で処理」の二つに加え、「出力しない」が設定されうる。「出力しない」が設定されていれば、読出しモード切替部12は不揮発性メモリ1から読み出した情報を出力しない。もしくは、データ処理部13で処理を行うように読出しモード切替部12を制御したうえで、データ処理部13がエラー情報を含む第二メタデータを生成する。
【0066】
データ処理部13は、第1実施形態の場合と同様に、第一メタデータに基づいて第一データと第一メタデータへ逐次処理を施して各々を変形することに加え、拡張メタデータで追加された情報も参照して別の形に変形することができる。そして、データ処理部13は第二メタデータに処理結果もしくは処理結果を保存した場所を特定する情報を含めて応答する。また、拡張メタデータが「出力しない」であった場合、データ処理部13は第二メタデータにエラーを示す情報を含むように処理をしてもよい。その際、第二メタデータにはエラーだけを含みかつ読み出したデータそのものも応答してはならない。もしくは、読み出した第一データを元データが推測できない状態に処理したうえで第一データと置き換えて出力してもよい。
【0067】
ここで拡張メタデータに基づく指定は第一メタデータに優先する(拡張メタデータの指定が無い場合には第一メタデータの指示に従う)。ただし、この指定は読出しモード切替部12とデータ処理部13の各々に対して個別に指定できるようにしてもよいし、両方に対して一括で指定してもよい。また、第一メタデータによる処理と拡張メタデータによる処理の順番は、第一メタデータ⇒拡張メタデータの順でもよいし、拡張メタデータとして指定するようにしてもよい。
【0068】
個別に指定する例として、第一メタデータでデータを保存する際に指定していた処理を同種の異なる処理で置き換える場合(強度が弱い暗号化モードや鍵長を強度が強い暗号化モードや鍵長に変更する、保存時の暗号鍵や暗号アルゴリズムとは異なる暗号鍵や暗号アルゴリズムで暗号化した状態で出力する、など)が考えられる。これは読出しモード切替部12に対する指示は「データ処理部で処理」のままであり、データ処理部13の処理内容だけが変わる。よって、読出しモード切替部12への指示は行わず、データ処理部13への指示だけを拡張メタデータで行う(実際には、保存した時と同じように「データ処理部で処理」という指示を拡張メタデータに含めれば一括指定にできる)。
【0069】
一方、一括で指定する例として、保存時には処理する必要が無いと考えて保存したデータに対して新しく処理を行う場合がある。第一メタデータには「そのまま出力」する指示だけが設定されており、データ処理部13向けの特別な指示や情報は含まれてない。これに対して拡張メタデータで「処理してから出力」するように指示を与え、それに必要な情報を読出し時に指示することができる。
【0070】
本実施形態の動作フローは第1実施形態の動作フローとほぼ同じため、フローチャートは省略する。
【0071】
以上が第6実施形態である。拡張メタデータを読出し要求とともに伝えるようにしたことで、保存時に仮定していた処理とは異なる処理を読出しのタイミングで指定できるようになる。さらに、拡張メタデータとして「出力しない」を指定できるようにしたことで、読出し要求の生成主体から独立した認可主体が生成する認可情報に基づいて、不揮発性メモリ1からの情報読出しが制御できるようになる。
【0072】
(第7実施形態)
続いて第7実施形態について述べる。本実施形態は第2実施形態における読み込み要求に拡張メタデータを追加することで、読み込み要求の結果出力可否を読出し制御モジュール10が判断できるようにしたり、保存時の仮定とは異なる形で読み出せるようにしたりしたものである。
【0073】
本実施形態の読出し制御モジュール10の構成図を図13に示す。拡張メタデータの役割と読出し制御モジュール10の動作の変化は、第6実施形態で述べた通りである。第6実施形態との違いは、データ処理部13の処理結果が第二データとして読出し要求の生成元に渡される点である。そのため、拡張メタデータにて「出力しない」が指定されていた場合、第二データに何も含めないようにするか、元データ(第一データ)が類推できない状態にして第二データとして返すようにしてよい。エラーを通知する際には、データやメタデータとは異なる手段で通知してよい。
【0074】
以上が第7実施形態である。その効果は第2実施形態と第6実施形態を合わせた効果となる。
【0075】
(第8実施形態)
続いて第8実施形態について述べる。本実施形態は第3実施形態における読み込み要求に拡張メタデータを追加し、対応する構成要素を追加したものである(図14)。拡張メタデータ抽出部14が読出し制御モジュール10と書込み制御モジュール20の双方と接続している点、ならびに読出し要求と書込み要求を識別して読出しモジュールもしくは書き込みモジュールに要求を通知する点を除き、読出し制御モジュール10は第6実施形態に準じる。IO制御モジュール2として読み込み要求の結果出力可否を読出し制御モジュール10が判断でき、保存時の仮定とは異なる形で読み出せるようにしたものである。
【0076】
詳細な説明は前述の第3実施形態や第6実施形態で述べた通りであるため省略する。
【0077】
以上が第8実施形態である。その効果は第3実施形態と第6実施形態を合わせた効果となる。
【0078】
(第9実施形態)
続いて第9実施形態について述べる。本実施形態は第4実施形態における読込み要求もしくは書込み要求に拡張メタデータを追加し、対応する構成要素を追加したものである(図15)。読込み要求もしくは書込み要求の実行出力可否を読出し制御モジュール10や書込み制御モジュール20が判断でき、保存時の仮定とは異なる形で読み出せたり、保存要求の生成主体が想定した保持する形とは異なる形での保存を可能にしたりしたものである。
【0079】
読出し側の詳細な説明は前述の第4実施形態や第6実施形態で述べた通りであるため省略する。
【0080】
本実施形態の書込み制御モジュール20は、書込み部21、書込みモード切替部22、書込み側データ処理部23で構成される。また、書込み制御モジュール20は拡張メタデータ抽出部14とも接続する。拡張メタデータ抽出部14は、IO制御モジュール2に対する読出し要求または書込み要求から拡張メタデータを取り出す機能を具備する。取り出した拡張メタデータは、読出しモード切替部12と読出し側データ処理部13、もしくは書込みモード切替部22と書込み側データ処理部23への新しい入力となる。
【0081】
書込みモード切替部22は、第4実施形態の場合と同様に不揮発性メモリ1に書き込むメタデータで書込みモードを切り替えることに加え、書込み要求とともに通知された拡張メタデータも考慮して書込みモードを切り替える。また、書込みモードとして「そのまま保存」と「書込み側データ処理部で処理」の二つに加え、「書き込まない」が設定されうる。「書き込まない」が設定されていれば、書込みモード切替部22は要求された第一データと第一メタデータを不揮発性メモリ1に書き込まない。エラーを返したい場合には、書込み側データ処理部23もしくは書込み部21のいずれかにてエラーを生成し、しかるべき手段でIO制御モジュール2の外部に通知すればよい(図示せず)。
【0082】
書込み側データ処理部23は、第4実施形態の場合と同様に、第一メタデータに基づいて第一データへ逐次処理を施して各々を変形することに加え、拡張メタデータで追加された情報も参照して別の形に変形することができる。また、拡張メタデータが「書き込まない」であった場合、書込み側データ処理部23はエラーを発生させて要求元に通知する処理をしてもよい(図示せず)。その際、第一データおよび第一メタデータのいずれも書き込んではならない(書込み部にそれら情報を通知しない)。
【0083】
拡張メタデータに基づく指定は書込み対象の第一データとともに入力される第一メタデータに優先する(拡張メタデータの指定が無い場合には、第一メタデータの指示に従う)。ただし、この指定は書込みモード切替部22と書込み側データ処理部23の各々に対して個別に指定できるようにしてもよいし、両方に対して一括で指定してもよい。また、第一メタデータによる処理と拡張メタデータによる処理の順番は、第一メタデータ⇒拡張メタデータの順でもよいし、拡張メタデータとして指定するようにしてもよい。
【0084】
個別に指定する例として、第一メタデータでデータを保存する際に指定していた処理を同種の異なる処理で置き換える場合が考えられる。第6実施形態で読出しの例として同じ例を挙げたが、ここでは書込み要求を発行したユーザアプリケーションとは異なる共有ライブラリやオペレーティングシステムが処理内容を置き換えたいケースを考える。すなわち、ユーザアプリケーションを修正することなく別の処理に置き換えたい場合である。ライブラリやオペレーティングシステムが書込み要求をフックして拡張メタデータを付与する。そして、書込みモード切替部22に対する指示は「書込み側データ処理部23で処理」のままとし、書込み側データ処理部23で実行する新しい処理のための情報を付与する。
【0085】
一方、一括で指定する例として、ユーザアプリケーションが不要と思っていた処理を共有ライブラリやオペレーティングシステムが追加する場合がある。メタデータには「そのまま保存」する指示だけが記載されており、書込み側データ処理部23向けの特別な指示や情報は含まれてない。これに対して拡張メタデータで「処理してから保存」するように指示を与え、それに必要な情報を書込み要求時に指示することができる。
【0086】
以上が第9実施形態である。その効果は第4実施形態と第6実施形態を合わせ、さらに書込み時の拡張メタデータによる制御ができるようにしたものである。
【0087】
(第10実施形態)
続いて第10実施形態について述べる。本実施形態は第5実施形態における読込み要求もしくは書込み要求に拡張メタデータを追加し、対応する構成要素を追加したものである(図16)。読込み要求もしくは書込み要求の実行出力可否を読出し制御モジュール10もしくは書込み制御モジュール20が判断でき、保存時の仮定とは異なる形で読み出せるように、もしくは保存要求の生成主体が想定した保持する形とは異なる形での保存を可能にしたものである。
【0088】
詳細な説明は前述の第9実施形態とほぼ同様であり、読出し側のデータ出力方法が第9実施形態と異なるのみである。そして、その変化は、第6実施形態と第7実施形態で述べた通りである。
【0089】
以上が第10実施形態である。その効果は第5実施形態と第7実施形態を合わせ、さらに書込み時の拡張メタデータによる制御ができるようにしたものとなる。
【0090】
(第11実施形態)
第11実施形態として、IO制御モジュール2を(完全)準同型暗号によって暗号化された情報を保存するシステムで使用する場合について述べる。準同型暗号は暗号文のまま演算(加算または乗算、もしくは両方)が実行できる暗号技術である。実行できる演算の種類や演算回数はアルゴリズムに応じて制約があり、特に演算回数についてはその制約を超えると復号できないなどの問題が生じる。そのため定期的に制約を回避するための処理(Bootstrapping, ModSwitch, Relinearizeと呼ばれる。以下、回復処理とよぶ)を実行しなければならない。本実施形態では、これらの処理に注目する。
【0091】
本実施形態の構成図は第9実施形態(図15)や第10実施形態(図16)と同じである。両図は読出し制御モジュール10を具備するが、ここでは書込み処理だけを扱う。また、ここでは新たに追加する準同型暗号に関する処理だけを述べるが、既述の実施形態の実現に必要な処理とともに実行してよい。
【0092】
本実施形態のIO制御モジュール2は、接続するホスト(図示せず)にて準同型暗号を適用した暗号文同士に演算を施した演算後の暗号文を第一データとして受信し、その暗号文に付随する情報を第一メタデータとして受信する(第一メタデータの一部は暗号化されていてもよい)。また、それらの書込みを指示するWriteコマンドと付随する拡張メタデータを受信することで書き込み処理を行う。拡張メタデータには回復処理の実行要否と回復処理の実行に必要な情報を(これまでの実施形態で述べた情報に対する)追加で含む。
【0093】
拡張メタデータ抽出部14が前述のWriteコマンドを受信すると、拡張メタデータを取り出して書込みモード切替部22と書込み側データ処理部23に送る。書込みモード切替部22は、拡張メタデータに含まれる回復処理の実行要否に関する情報を参照し、切り替えを行う。回復処理が必要と指示されていれば、書込み側データ処理部23に第一データと第一メタデータを渡すように切り替える。回復処理が不要と指示されていれば、そのまま書込み部21に渡す。
【0094】
書込み側データ処理部23は拡張メタデータに含まれる回復処理に必要な情報を参照し、各アルゴリズムに即した適切な回復処理を行う。その結果は第二データとなり、第一メタデータとともに書込み部21へ渡される。
【0095】
書込み部21は回復処理が施されていない第一データもしくは回復処理が施された第二データと、それに付随する第一メタデータを、不揮発性メモリ1に保存する。
【0096】
なお、回復処理には複雑な計算を伴うため、本実施形態のIO制御モジュール2が想定している他の処理よりも多くの時間を要し、後続の書き込み処理を阻害する可能性がある。そのため、本実施形態を適用する場合には書き込み側データ処理部23を複数用意したり、専用回路として独立させたりしてもよい。
【0097】
本実施形態の動作フローは第9または第10実施形態で述べた通りであるため省略する。
【0098】
以上が本実施形態である。従来、準同型暗号の回復処理はCPUなど暗号文に対する演算処理を施す部分が実行していたが、本実施形態のIO制御モジュール2で肩代わりできる。CPUなどは回復処理が必要なタイミングを適切に判断できるため、再利用が見込める演算後の準同型暗号による暗号文を保存する場合に限り、その暗号文を回復処理の指示とともに拡張メタ情報として伝えるだけでよい。
【0099】
(第12実施形態)
続いて第12実施形態を述べる。本実施形態も第11実施形態と同様に準同型暗号により暗号化された暗号文を対象とする。本実施形態では、暗号文を読みだしながら処理を行う複数のReadコマンドを実行しながら、回復処理を行う場合を考える。
【0100】
本実施形態の構成図は第6実施形態(図12)または第7実施形態(図13)と同じである。読出し制御モジュール10としてではなく書込み制御モジュール20を伴うIO制御モジュール2として実施する場合には、同様に第9(図15)および第10実施形態(図16)を用いる。本実施形態では事前に準同型暗号により暗号化された暗号文が複数個不揮発性メモリ1に保存されているとする。
【0101】
本実施形態の読出し制御モジュール10は、接続するホスト(図示せず)から暗号文および対応するメタデータを読み出すReadコマンドと、それに付随する拡張メタデータを拡張メタデータ抽出部14で受信することにより、処理が開始される。拡張メタデータ抽出部14は、拡張メタデータを取りだして読出しモード切替部12と読出し側データ処理部13に送る。また、Readコマンドは読出し部11を介して不揮発性メモリ1に通知する。Readコマンドを受信した不揮発性メモリは、所定の領域から暗号文である第一データと付随する第一メタデータを読み出す。
【0102】
本実施形態の拡張メタデータには、読み出した第一データである暗号文に対する演算指示と演算後の暗号文(=第二データ)の回復処理の実行指示に関する情報を含む。演算指示については、第一データと直前に読み出した暗号文との演算要否・演算種類、第一データと直前に実行した演算結果に対する演算要否・演算種類(オペランド指定を含む)が含まれる。回復処理の実施指示には回復処理の要否の他に、実行に必要な諸情報を含んでもよい。
【0103】
読出しモード切替部12は、第一メタデータおよび拡張メタデータに基づいて出力を切り替えるが、拡張メタデータに「演算が必要」もしくは「回復処理が必要」と指示されていれば、読出しモード切替部12に第一データを渡す。
【0104】
データ処理部13は拡張メタデータにて指示された演算もしくは回復処理を実施する。演算指示の場合、直前の読出しにてデータ処理部13に入力された第一データもしくは出力された第二データまたは拡張メタデータとして入力した値と、現在処理中の第一データとの間の演算(加算または乗算、比較、その他指示されたもの)を行う。そして、演算結果を第二データとする。データ処理部13は第一データと第二データの少なくとも一つを後続の読出し処理における演算指示に備えるため、内部状態として保存する。このために本実施形態ではデータ処理部13に一時記憶部を追加してもよい。内部状態として、回復処理の要否を示す情報を含んでもよい。また、回復処理の要否を示す情報として次の回復処理までの残りの演算回数(レベル値)を用いてもよい。
【0105】
さらに、演算の結果である第二データは、入力となる二つのデータの状態に応じて回復処理が必要となる。その際、回復処理の要否をいずれかの出力(第二データ内部、または第一メタデータもしくは第二メタデータ(これは構成による))に含めてよい。この回復処理の要否を示す情報を受け取ったホスト(図示せず)は、自ら回復処理を行ってもよいし、情報の再利用が見込まれる場合には第11実施形態の方法を用いて、回復処理を伴う情報の更新を行ってもよい。
【0106】
以上が第12実施形態である。本実施形態を適用することで、準同型暗号により暗号化された情報を読み出す際に暗号文のまま必要な演算を施すことができる。また、回復処理の要否を検出し、それをホストに通知することができる。このため、ホストは複雑な計算を行うことなく演算結果を入手できる。また、回復処理が必要であることを速やかに検出することができる。
【0107】
なお、各実施形態における不揮発性メモリ1は、ブロック型ストレージ、及び、Key-Value型ストレージのいずれであってもよく、また、SSD、HDD、SCM(Storage Class Memory)のいずれであってもよい。NVMe SSDにおいて、ブロック型ストレージの場合には、各実施形態の読出し制御モジュール10、及び、書込み制御モジュール20と外部モジュールとの間のI/Oコマンドとして、NVMeのReadコマンド、Writeコマンドをそれぞれ使用してもよい。NVMe SSDにおいて、Key-Value型ストレージの場合には、各実施形態の読出し制御モジュール10、及び、書込み制御モジュール20と外部モジュールとの間のI/Oコマンドとして、NVMeのRetrieveコマンド、Storeコマンドをそれぞれ使用してもよい。また、各実施形態における不揮発性メモリ1として、ブロック型ストレージを使用する場合には、ホストOSのioctl()システムコールを用いてメタデータの読出し、及び、書込みを行ってもよく、その場合、METADATA_GETコマンド、及び、METADATA_SETコマンドをそれぞれ使用してもよい。
【0108】
また、前述の各実施形態では、書込み制御モジュール20を独立させたケースに触れていない。しかし、書込み処理だけを制御したいケースがあれば書込み制御モジュール20を単独で実施してもよい。
【0109】
図17図18は、各実施形態のI/O制御モジュール2を計算機(コンピュータ)100もしくは計算機システムの中で使用する際の位置づけについて説明する図である。
【0110】
図17ではIO制御モジュール2がSSDなどのストレージ1Aに付随する形でシステムに取り付けられている例を示している。図17の最も左にあるIO制御モジュール2の例では、ストレージ1Aに対してIO制御モジュール2が外付けされている。図17左から2番目のIO制御モジュール2の例では、ひとつの制御モジュール2に対して複数のストレージ1Aが接続している。これは、例えばRAIDコントローラのような部分に各実施形態のIO制御モジュール2の機能が搭載されている場合やPCI Expressスイッチなどのブリッジチップにストレージプロトコルを処理する機能とともに各実施形態のIO制御モジュール2の機能が搭載されている場合を想定している。図17左から3番目のIO制御モジュール2の例では、ストレージ1A内にIO制御モジュール2が統合されている。どちらの場合も、読出しのみを制御したければ読出し制御モジュール10に、書込みだけを制御したければ書き込み制御モジュール20に置き換えて良い。ストレージ1Aの外部が内部かによって各実施形態のIO制御モジュール2の本質的な機能は制限されない。
【0111】
また、読込み要求や書込み要求は本図のCPU上で動作するソフトウェアで生成する場合に限定されない。例えば、ネットワークを介して接続する別の計算機上で実行されるソフトウェアによって生成されてもよい。
【0112】
図18は、第6から第10実施形態において追加した「拡張メタデータ」を生成する機能が、各実施形態の読出し制御モジュール10や書き込み制御モジュール20の構成要素を含む計算機(コンピュータ)100もしくは計算機システムの外部に設置され(拡張メタデータ生成サーバ200)、何らかのネットワークを介して接続している場合を示している。ネットワークにはTCP/IPを用いたネットワークの他、任意のネットワークを用いて良い。また、図18は物理的に外部に設置されたサーバのように記載されているが、論理的に分かれた計算機(仮想計算機、等)であってもよい。いずれにせよ、一連の実施形態では拡張メタデータは読込みもしくは書込み要求の生成元と同一の計算機で動くソフトウェアなどの構成要素が生成しているように記載してきたが、図18のように外部のサーバが生成してその情報が拡張メタ情報として埋め込めこまれた状態で各実施形態のIO制御モジュール2に到達するようにしてもよい。
【0113】
図19は読出し要求や書込み要求を生成するストレージクライアント300が、ストレージ1Aを含む装置(ネットワークストレージ装置400)に対してネットワークを介して接続している場合である。ネットワークの中間に各実施形態のIO制御モジュール2の機能を備えるネット拡張IO制御モジュール500が接続されている。この場合、ネット拡張IO制御モジュール500には通信機能が必要である。具体的には、ネットワークを介して送受信される読込み要求や書込み要求を受信したうえで、適切な変更を施して再送信する機能であり、物理的にネットワークに接続するためのネットワークインタフェース部501やTCP/IPなどの通信プロトコルやiSCSIやNVMeoFなどストレージプロトコルを処理するプロトコル処理部502(通信プロトコル処理部502A、ストレージプロトコル処理部502Bに分けても良い)を具備する。それらを介して抽出された読出し要求や書込み要求が前述の各実施形態で示したIO制御モジュール2の間で入出力されるようにすればよい。
【0114】
図20は、図19に示したネット拡張IO制御モジュール500をネットワークインタフェースに統合した場合である(NIC拡張IO制御モジュール500A)。図20における一方のNIC501が内部I/F503に代わっている。
【0115】
以上より、各実施形態によれば、不揮発性メモリに対して逐次処理されうるデータ及びメタデータの読出しを行い、メタデータの逐次処理に関する情報に基づいて逐次処理を適用するかどうかを判断し、逐次処理を適用する場合には、内部に保持した逐次処理ステートを参照しながらデータに逐次処理を施し、処理済データをメタデータに含めてデータとともに外部モジュールに出力し、逐次処理を適用しない場合には、読出したデータ及びメタデータをそのまま外部モジュールに出力することにより、CPU処理負荷を大幅に低減することが可能となる。また、データの再配信を行う場合には、従来のストレージと同様にデータに逐次処理を施さずにそのまま読出すことが可能となる。
【0116】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0117】
1…不揮発性メモリ、1A…ストレージ、2…I/O制御モジュール、10…読出し制御モジュール、12…読出しモード切替部、13…読出し側データ処理部、14…拡張メタデータ抽出部、20…書込み制御モジュール、21…書込み部、22…書込みモード切替部、23…書込み側データ処理部、200…拡張メタデータ生成サーバ、300…ストレージクライアント、400…ネットワークストレージ装置、500…ネット拡張IO制御モジュール、500A…NIC拡張IO制御モジュール、501…ネットワークインタフェース部、502…プロトコル処理部、502A…通信プロトコル処理部、502B…ストレージプロトコル処理部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20