JP2022143959A - メモリシステム、方法及びデータ処理システム - Google Patents

メモリシステム、方法及びデータ処理システム Download PDF

Info

Publication number
JP2022143959A
JP2022143959A JP2021044768A JP2021044768A JP2022143959A JP 2022143959 A JP2022143959 A JP 2022143959A JP 2021044768 A JP2021044768 A JP 2021044768A JP 2021044768 A JP2021044768 A JP 2021044768A JP 2022143959 A JP2022143959 A JP 2022143959A
Authority
JP
Japan
Prior art keywords
css
data
information
data processing
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021044768A
Other languages
English (en)
Other versions
JP7566674B2 (ja
Inventor
文子 辻
Fumiko Tsuji
一成 住吉
Kazunari Sumiyoshi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2021044768A priority Critical patent/JP7566674B2/ja
Priority to US17/473,437 priority patent/US11853604B2/en
Publication of JP2022143959A publication Critical patent/JP2022143959A/ja
Application granted granted Critical
Publication of JP7566674B2 publication Critical patent/JP7566674B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

【課題】データ処理機能を備える改良されたメモリシステム、方法、及びデータ処理システムを提供すること【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、外部装置から受信したコマンドで指定されたデータを不揮発性メモリへ書き込む第1処理、又は外部装置から受信したコマンドで指定されたデータを不揮発性メモリから読み出し、読み出したデータを外部装置へ送信する第2処理を含むデータ処理を制御するコントローラと、を具備する。コントローラは、コマンドに含まれる情報に応じてデータ処理を実行するか否かを決定するプロセッサを具備する。【選択図】図1

Description

本発明の実施形態は、不揮発性メモリを含むメモリシステム、方法及びデータ処理システムに関する。
不揮発性メモリを備えたメモリシステムを含むストレージシステムが開発されている。ストレージシステムはホストとホストに接続されたメモリシステムとを含み、データ処理システムとして実現される。データ処理システムにおいて、ホストが備えるCPU(ホストCPUとも称する)の負荷軽減や、ホストCPUとメモリシステムをまたいだデータ移動コストの削減を目的とした方式が提案されている。例えば、データ処理をホストCPUではなく、メモリシステム内部、あるいはメモリシステムにより近いところに配置した専用のプロセッサに行わせる方式が提案されている。この方式は、データ処理を行うための演算機能をメモリシステム内部やメモリシステムの近傍に配置した構成により実現される。このような構成に適応するメモリシステムは、演算機能付きストレージ又はComputational Storage(CS)と称される。CSが提供するサービスは、Computational Storage Service(CSS)と称される。
CSSを起動する方式の一例として、ホストからCSに対するリードコマンドやライトコマンド等のioコマンドに連動してCSSを起動する方式がある。この方式は、ホストが意識することなく、CSSを起動することができる。しかし、この方式は、柔軟性に欠ける。
特開2020-102218号公報 特開2020-154626公報 特開2019-75104号公報
本発明の目的は、データ処理機能を備える改良されたメモリシステム、方法、及びデータ処理システムを提供することである。
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。コントローラは、外部装置から受信したコマンドで指定されたデータを不揮発性メモリへ書き込む第1処理、又は外部装置から受信したコマンドで指定されたデータを不揮発性メモリから読み出し、読み出したデータを外部装置へ送信する第2処理を含むデータ処理を制御する。コントローラは、コマンドに含まれる情報に応じてデータ処理を実行するか否かを決定するプロセッサを具備する。
第1実施形態によるCSのライトの一例を説明するためのブロック図。 ライト時の処理の流れの一例を示すフローチャート。 第1実施形態によるCSのリードの一例を説明するためのブロック図。 リード時の処理の流れの一例を示すフローチャート。 第2実施形態によるCSのライトの一例を説明するためのブロック図。 ライト時の処理の流れの一例を示すフローチャート。 第2実施形態によるCSのリードの一例を説明するためのブロック図。 リード時の処理の流れの一例を示すフローチャート。 第3実施形態によるCSのライトの一例を説明するためのブロック図。 ライト時の処理の流れの一例を示すフローチャート。 第3実施形態によるCSのリードの一例を説明するためのブロック図。 リード時の処理の流れの一例を示すフローチャート。 第4実施形態によるホストがioキューに投入するコマンドの一例を示す図。 第5実施形態によるCSのライトの一例を説明するためのブロック図。 ライト時の処理の流れの一例を示すフローチャート。 第5実施形態によるCSのリードの一例を説明するためのブロック図。 リード時の処理の流れの一例を示すフローチャート。 第6実施形態によるライト時のCSフラグ生成処理の流れの一例を示すフローチャート。 第6実施形態によるリード時のCSフラグ生成処理の流れの一例を示すフローチャート。 第6実施形態によるCPM44とCSS46の一例を示す図。 第7実施形態によるライト時のCSフラグ生成処理の流れの一例を示すフローチャート。 第7実施形態によるリード時のCSフラグ生成処理の流れの一例を示すフローチャート。 第7実施形態によるライト時のCSSの処理の流れの一例を示すフローチャート。 第7実施形態によるリード時のCSSの処理の流れの一例を示すフローチャート。 第8実施形態によるライト時のCSフラグ生成処理の流れの一例を示すフローチャート。 第8実施形態によるリード時のCSフラグ生成処理の流れの一例を示すフローチャート。 第8実施形態によるライト時のCSSの処理の流れの一例を示すフローチャート。 第8実施形態によるリード時のCSSの処理の流れの一例を示すフローチャート。 第9実施形態によるライト時のCSSの処理の流れの一例を示すフローチャート。
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
以下、図面を参照しながら本実施の形態について詳細に説明する。
実施形態は、Computational Storage(CS)の操作方式(オペレーション方式とも称される)に関する。
CSの実現方法や提供サービスは、様々な方式が提唱されている。
Storage Networkingの標準化推進団体であるSNIAは、CSに関する様々な情報を集め、分類、定義、優先度付けを行った上で、CSのホストインタフェースの標準化を進めようとしている。
SNIAでは、CSの2つの基本的な構成が説明されている。
CSx:Computational Storage Device(ハードウェアに関する構成)
CSS:Computational Storage Services(ソフトウェアに関する構成)
CSxの配置形態としては、1つ又は複数のストレージを統括するプロセッサをストレージの外部に配置し、ホストCPUを当該プロセッサと接続するというタイプのもの(Computational Storage Processor)や、ストレージの中にCSS実行のためのプロセッサを配置するタイプのもの(Computational Storage Device:CSD)、CSDを多数集めたもの(Computational Storage Array:CSA)等、さまざまなものがある。
実施形態は、一例として、ストレージ内に専用プロセッサを内蔵するCSDの配置形態を説明する。しかし、実施形態は、CSxの配置形態には制限されず、どの配置形態にも適用可能である。実施形態は、ストレージの一例としてメモリシステムを説明する。
CSSを動かすプロセッサの実装方法として、FPGA、専用CPU、berkeley packet filter(bpf)のような仮想CPU等の各種方法がある。
実施形態は、プロセッサの実装形態にも制限されず、ここに列挙したどの方式も採用可能である。
以降の説明においては、CSSを動かすプロセッサ部分を、CSxの配置形態や実装形態にかかわらずComputational Storage Processor:CSP)と称され、上に示したComputational Storage Processorとは異なる定義が与えられる。
CSSは大きく二つに分類される。
(1)FCSS(Fixed Computational Storage Service):デバイス内に固定的に定義づけされたサービスを指す。FCSSの例は、Compression、RAID、Erasure Coding、Encryption等がある。
(2)PCSS(Programmable Computational Storage Service):ホストによるプログラミングが可能なサービスを指す。ホストがプログラムを作成して、ストレージはプログラムをダウンロードする。PCSSの例は、FPGA Bitstream、BPF、Container、OSローダー等がある。
実施形態は、これらのCSSのどのサービスも実施可能であるが、一例として、PCSSのBPF、FPBA Bitstreamや、FCSSに列挙したサービス群を対象サービスとする。
CSアーキテクチャの使用範囲は、以下である。
管理(Management):discovery、configuration、又はmonitoring
セキュリティ(Security):authentication、autorization、encryption、又はauditing
操作(Operation):CSxのデータストアと取り出しの機構に関する定義又はホストからCSxへの作用に関する定義。
実施形態は、これらのうち、操作に関する。
なお、演算機能のない、既存のストレージは、Non-Computational Storage:NCSと称される)と称される。
ホストがCSに対してCSSを起動するための操作方式の例として、ダイレクトオペレーション方式や、トランスペアレントオペレーション方式(インライン方式とも称される)がある。
ダイレクトオペレーション方式では、ライトコマンドやリードコマンドのような既存のストレージ制御用APIとは別のCSS制御専用のAPIが定義され、ホストがCSに対して専用APIを呼び出すことによりCSSの起動を促すことができる。
一方、トランスペアレントオペレーション方式では、ホストがCSSの起動を意識することなく既存のストレージ制御APIを介してCSSを起動することができる。また、ホストからデバイスに対して発行されるライトコマンドやリードコマンドに連動してCSSが起動される。
ダイレクトオペレーション方式のメリットは、ホストが所望のタイミングでサービスを起動できることである。ダイレクトオペレーション方式のデメリットは、ホストが従来は存在しなかった制御を新たに行わなければならないことである。
トランスペアレントオペレーション方式のメリットは、ホストが従来通りのプログラムを動かすだけでサービスを起動できることである。トランスペアレントオペレーション方式のデメリットは、条件に応じたCSSの起動又は停止、起動するCSSの種類の選択、CSSの起動に必要なパラメータの設定等といった細かな切り替えができないことである。条件は、CSSを起動又は停止するための条件又は起動するCSSの種類を選択するための条件である。ホストは任意の条件を定義できる。
トランスペアレントオペレーション方式において、CSSの起動又は停止、起動するCSSの種類の選択、CSSの起動に必要なパラメータ設定等が、何等かの形でできるようになったとしても、データに付属情報を関連付ける仕組みがないため、次の問題が生じる。
例えば、CSSが、ホストから受信したユーザデータを暗号化した後ストレージに保存し、ストレージから読み出したデータを復号してユーザデータをホストに送信する処理を実行するためには、CSSがどのデータをどの暗号鍵により暗号化したのかを示す付属情報を、ホストが別途管理する必要があった。
第1実施形態
第1実施形態は、ライトコマンドやリードコマンド等のioコマンドはCSSの起動又は停止を指定するオン情報又はオフ情報を含む新規なCSフラグを含むトランスペアレントオペレーション方式のCSを提案する。
図1は、第1実施形態によるCSのライト動作の一例を説明するためのデータ処理システムのブロック図である。
ホスト10は、CPU(ホストCPUとも称される)12、ホストバッファ(HB)14、及びCS I/F回路16を含む。ホストバッファ14の例は、DRAM又はSRAMである。CPU12、ホストバッファ14、及びCS I/F回路16は、互いにバスで接続される。
CS30は、不揮発性メモリ32、メモリコントローラ34、ファームウェア(FW)36、CPU(デバイスCPUとも称される)38、デバイスバッファ(DB)42、Computational Program Memory(CPM)44、CSS46、CSP48、及びホストI/F回路52を含む。メモリコントローラ34、CPU38、デバイスバッファ42、CPM44、CSP48、及びホストI/F回路52は互いにバスで接続される。
ホスト10とCS30は、CS I/F回路16、接続線、及びホストI/F回路52を介して接続可能である。ホスト10とCS30とが接続された場合、ホスト10とCS30の間には、ホスト10からCS30への要求を伝えるコマンドキュー20が存在する。コマンドキュー20は、ホスト10とCS30の何れかに備えられるメモリにより実現される。ここでは、SSDに関する規格であるNon-Volatile Memory Express(NVMe)(TM)に従い、コマンドキュー20は、複数のioキュー22と1つのadmin(管理者)キュー24を含む。図1は、一例として、2個のioキュー22を示す。
不揮発性メモリ32の例は、NAND型フラッシュメモリである。メモリコントローラ34は、不揮発性メモリ32との間のデータの転送を制御する回路である。以下、不揮発性メモリ32はNANDメモリ32と称され、メモリコントローラ34はNANDコントローラ34と称される。CS30全体を制御するファームウェア36は、NANDメモリ32に格納され、CS30の電源オン時にDRAM(図示しない)に書き込まれる。CPU38は、DRAM内のファームウェア36を実行する。デバイスバッファ42の例は、DRAM又はSRAMである。
ファームウェア36は、ファームウェア36aを含む。ファームウェア36aは、ライトコマンドのCSフラグをチェックし、CSフラグがCSS46の起動を指定するオン情報を含む場合、ライトコマンド連動のCSSを起動するような判断処理を実行するプログラムである。ファームウェア36aの一例を以下に示す。
write()
if(CSS=on)
start(write_prog);
wait(return);

ファームウェア36は、ファームウェア36bも含む。ファームウェア36bは、リードコマンドのCSフラグをチェックし、CSフラグがCSS46の起動を指定するオン情報を含む場合、リードコマンド連動のCSSを起動するような判断処理を実行するプログラムである。ファームウェア36bの一例を以下に示す。
read()
if(CSS=on)
start(read_prog);
wait(return);

CSS46は、CS30内に予め組み込まれたプログラムであってもよいし、ホスト10が予め作成し、ホスト10からのCSSロードコマンドを実行することによりCS30がロードしたプログラムであってもよい。
CSP48は、CSS46を実行するプロセッサである。
CPM44は、CSS46がアクセス可能なメモリ領域を示す。CPM44の例は、DRAM又はSRAMである。
CS30は、Solid State Drive(SSD)とも称される。
本明細書では、CSS46は、ホスト10が予め作成したプログラムであって、CS30がCSSロードコマンドを実行することによりロードしたプログラムであるとする。そのため、ホスト10は、ioキュー22にライトコマンドWを投入する前に、adminキュー24にCSSロードコマンドLを投入する。CS30がCSSロードコマンドLを実行することにより、ライトコマンド連動のプログラムwrite_progとリードコマンド連動のプログラムread_progがホスト10からCS30にロードされる。ライトコマンド連動のプログラムwrite_progの例は、データを暗号化した暗号化データをNANDメモリ32に書き込むものである。リードコマンド連動のプログラムread_progの例は、NANDメモリ32から読み出した暗号化データを復号するものである。プログラムwrite_progは、ファームウェア36aと連動する。プログラムread_progは、ファームウェア36bと連動する。
図2は、ライト動作の処理の流れの一例を示すフローチャートである。
S102で、ホスト10のCPU(ホストCPU)12は、ライト対象の論理ブロックアドレス(logical block address)データ(以下、lbaデータと称される)をホストバッファ14に書き込む。
S104で、CPU12は、ioキュー22にライトコマンドW(off)又はW(on)を順次投入する。ライトコマンドW(off)及びW(on)の各々は、lbaデータが書き込まれたホストバッファ14の領域のアドレス(以下、ホストバッファアドレスと称される)、lba、データサイズを含む。ライトコマンドW(off)は、CSS46の停止を指定するオフ情報を含むCSフラグが付加されたライトコマンドWである。ライトコマンドW(on)は、CSS46の起動を指定するオン情報を含むCSフラグが付加されたライトコマンドWである。
S106で、ファームウェア36を実行するCS30のCPU(デバイスCPU)38は、ioキュー22からライトコマンドWを読み出し、ライトコマンドWを解析し、ホストバッファアドレス、lba、データサイズを求める。
S108で、CPU38は、解析結果に基づいて、ホストバッファ14からデバイスバッファ42にlbaデータを転送する(図1の#a1)。
S110で、CPU38は、ホスト10のCPU12にライトコマンドWの応答を返す。
S112で、CPU38は、ライトコマンドWに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46(ライトコマンド連動のCSS46)の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S124で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータを転送する(図1の#a7)。
CSフラグがCSS46の起動を指定する場合、CPU38は、ライトコマンド連動のCSS46を実行する。具体的には、S114で、ファームウェア36aは、ライトコマンド連動のCSS46(write_prog)を起動する(start(write_prog))(図1の#a2)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S116で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load_db())(図1の#a3)。S118で、CSS46は、CPM44からのlbaデータのリード、lbaデータのデータ処理、及びデータ処理後のlbaデータのCPM44へのライトを実行する(図1の#a4)。データ処理の例は、データを演算して演算結果を出力する様々な処理、データの誤り訂正符号化や誤り訂正復号処理、データの暗号化や復号処理、データの圧縮や解凍、データ解析、フィルタリングである。S120で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図1の#a5)。
S122で、CSS46がファームウェア36aに処理終了を返す(return)(図1の#a6)。
S124で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータを転送する(図1の#a7)。
図3は、第1実施形態によるCSのリード動作の一例を説明するためのデータ処理システムのブロック図である。図3の構成は図1の構成と殆ど同じであり、ioキュー22に投入されるコマンドが図1と異なる。
図4は、リード動作の処理の流れの一例を示すフローチャートである。
S202で、ホスト10のCPU(ホストCPU)12は、リード対象のlbaデータを書き込むための領域をホストバッファ14に確保する。
S204で、CPU12は、ioキュー22にリードコマンドR(off)又はR(on)を順次投入する。リードコマンドR(off)及びR(on)の各々は、ホストバッファアドレス、lba、データサイズを含む。リードコマンドR(off)は、CSS46の停止を指定するオフ情報を含むCSフラグが付加されたリードコマンドRである。リードコマンドR(on)は、CSS46の起動を指定するオン情報を含むCSフラグが付加されたリードコマンドRである。
S206で、ファームウェア36を実行するCS30のCPU(デバイスCPU)38は、ioキュー22からリードコマンドRを読み出し、リードコマンドRを解析し、ホストバッファアドレス、lba、データサイズを求める。
S208で、CPU38は、解析結果に基づいて、NANDメモリ32からデバイスバッファ42にlbaデータを転送する(図3の#b1)。
S210で、CPU38は、リードコマンドRに付加されているCSフラグのオン情報又はオフ情報に基づいて、CSフラグがCSS46(リードコマンド連動のCSS46)の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S222で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図3の#b7)。
S224で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
CSフラグがCSS46の起動を指定する場合、CPU38は、リードコマンド連動のCSS46を実行する。具体的には、S212で、ファームウェア36bは、リードコマンド連動のCSS46(read_prog)を起動する(start(read_prog))(図3の#b2)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S214で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load db())(図3の#b3)。S216で、CSS46は、CPM44からのlbaデータのリード、lbaデータのデータ処理、及びデータ処理後のlbaデータのCPM44へのライトを実行する(図3の#b4)。S218で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図3の#b5)。
S220で、CSS46がファームウェア36bに処理終了を返す(return)(図3の#b6)。
S222で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図3の#b7)。
S224で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
第1実施形態によれば、トランスペアレントオペレーション方式のCSでは実現できなかった、ライト又はリードのioコマンド連動のCSS46の起動又は停止を、CS30が備えるソフトウェア資産を活かした状態で、ホスト10が切り替えることができる。
第2実施形態
第1実施形態では、ライトコマンドに連動するプログラムは1個のCSS46(write_prog)であり、リードコマンドに連動するプログラムは1個のCSS46(read_prog)である。次に、CS30は、ioコマンドに連動する複数のプログラム(CSS46)のいずれかを選択的に実行可能であり、CSフラグは起動するコマンド連動プログラムを選択する情報も含む第2実施形態を説明する。
図5は、第2実施形態によるCSのライト動作の一例を説明するためのデータ処理システムのブロック図である。
図5の構成は図1の構成と殆ど同じであるが、以下の点が異なる。第2実施形態では、CSS46は複数のスロットに区分され、各スロットが1個のライトコマンド連動プログラムに対応する。各スロット、すなわち各ライトコマンド連動プログラムはスロット識別子slot_noにより指定される。CSフラグは、CSS46の起動又は停止を指定するオン情報又はオフ情報と、起動するライトコマンド連動プログラムを指定するスロット識別子slot_noを含む。
ファームウェア36はファームウェア36a、36bに変えてファームウェア36c、36dを含む。ファームウェア36cは、ライトコマンドWのCSフラグをチェックし、CSフラグがCSS46の起動を指定するオン情報を含む場合、スロット識別子により識別されるioコマンド連動プログラムを起動するプログラムである。ファームウェア36cの一例を以下に示す。
write()
if(CSS=on)
start(slot_no);
wait(return);

ファームウェア36dは、リードコマンドRのCSフラグをチェックし、CSフラグがCSS46の起動を指定するオン情報を含む場合、スロット識別子により識別されるioコマンド連動プログラムを起動するプログラムである。ファームウェア36dの一例を以下に示す。
read()
if(CSS=on)
start(slot_no);
wait(return);

第2実施形態でも、ホスト10は、ioキュー22にライトコマンドWやリードコマンドRを投入する前に、adminキュー24にCSSロードコマンドLを投入する。CS30がCSSロードコマンドLを実行することにより、ライトコマンド連動の複数のプログラムやリードコマンド連動の複数のプログラムがホスト10からCS30の各スロットにロードされる。
図6は、ライト動作の処理の流れの一例を示すフローチャートである。
S302で、ホスト10のCPU(ホストCPU)12は、ライト対象のlbaデータをホストバッファ14に書き込む。
S304で、CPU12は、ioキュー22にライトコマンドW(off)又はW(on,slot0)を順次投入する。ライトコマンドW(off)及びW(on,slot0)の各々は、ホストバッファアドレス、lba、データサイズを含む。ライトコマンドW(off)は、CSS46の停止を指定するオフ情報を含むCSフラグが付加されたライトコマンドWである。ライトコマンドW(on,slot0)は、CSS46の起動を指定するオン情報と、起動するCSS(ライトコマンド連動プログラム)46に対応するスロットを指定するためのスロット識別子slot_no(ここでは、スロット0)と、を含むCSフラグが付加されたライトコマンドWである。
S306で、ファームウェア36を実行するCS30のCPU(デバイスCPU)38は、ioキュー22からライトコマンドWを読み出し、ライトコマンドWを解析し、ホストバッファアドレス、lba、データサイズを求める。
S308で、CPU38は、解析結果に基づいて、ホストバッファ14からデバイスバッファ42にlbaデータを転送する(図5の#c1)。
S310で、CPU38は、ホスト10のCPU12にライトコマンドWの応答を返す。
S312で、CPU38は、ライトコマンドWに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S324で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータを転送する(図5の#c7)。
CSフラグがCSS46の起動を指定する場合、CPU38は、CSフラグに含まれるスロット識別子slot0により指定されるスロットに対応するライトコマンド連動のCSS46を実行する。具体的には、S314で、ファームウェア36cは、CSフラグに含まれるスロット識別子slot0により指定されるライトコマンド連動プログラムであるCSS46を起動する(start(slot0))(図5の#c2)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S316で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load_db())(図5の#c3)。S318で、CSS46は、CPM44からのlbaデータのリード、labデータのデータ処理、データ処理後のlbaデータのCPM44へのライトを実行する(図5の#c4)。S320で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図5の#c5)。
S322で、CSS46がファームウェア36aに処理終了を返す(return)(図5の#c6)。
S324で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータを転送する(図5の#c7)。
図7は、第2実施形態によるCSのリード動作の一例を説明するためのデータ処理システムのブロック図である。図7の構成は図5の構成と殆ど同じであり、ioキュー22に投入されるコマンドが図5と異なる。
図8は、リード動作の処理の流れの一例を示すフローチャートである。
S402で、ホスト10のCPU(ホストCPU)12は、リード対象のlbaデータを書き込むための領域をホストバッファ14に確保する。
S404で、CPU12は、ioキュー22にリードコマンドR(off)又はR(on,slot1)を順次投入する。リードコマンドR(off)及びR(on,slot1)の各々は、ホストバッファアドレス、lba、データサイズを含む。リードコマンドR(off)は、CSS46の停止を指定するオフ情報を含むCSフラグが付加されたリードコマンドである。リードコマンドR(on,slot1)は、CSS46の起動を指定するオン情報と、起動するCSS(リードコマンド連動プログラム)46に対応するスロットを指定するためのスロット識別子slot_no(ここでは、スロット1)と、を含むCSフラグが付加されたリードコマンドである。
S406で、ファームウェア36を実行するCS30のCPU(デバイスCPU)38は、ioキュー22からリードコマンドRを読み出し、リードコマンドRを解析し、ホストバッファアドレス、lba、データサイズを求める。
S408で、CPU38は、解析結果に基づいて、NANDメモリ32からデバイスバッファ42にlbaデータを転送する(図7の#d1)。
S410で、CPU38は、リードコマンドRに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S422で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図7の#d7)。
S424で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
CSフラグがCSS46の起動を指定する場合、CPU38は、CSフラグに含まれるスロット識別子slot0により指定されるスロットに対応するリードコマンド連動のCSS46を実行する。具体的には、S412で、ファームウェア36dがスロット1のCSS46を起動する(start(slot1))(図7の#d2)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S414で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load db())(図7の#d3)。S416で、CSS46は、CPM44からのlbaデータのリード、lbaデータのデータ処理、及び処理後のlbaデータのCPM44へのライトを実行する(図7の#d4)。S418で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図7の#d5)。
S420で、CSS46がファームウェア36dに処理終了を返す(return)(図7の#d6)。
S422で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図7の#d7)。
S424で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
第2実施形態によれば、第1実施形態の効果に加えて、ライト又はリードのioコマンド毎に起動するCSS46を選択することができる。
なお、第2実施形態のCSフラグからCSS46の起動又は停止を指定する情報を削除し、常にCSS46を起動するが、起動するCSS46のプログラムをスロット識別子により指定できるように第2実施形態を変形してもよい。
すなわち、変形例では、ライトコマンドW(off)は定義されず、ライトコマンドW(on,slot_no)がライトコマンドW(slot_no)に変更される。同様に、リードコマンドR(off)は定義されず、リードコマンドR(on,slot_no)がリードコマンドR(slot_no)に変更される。
第3実施形態
第1実施形態及び第2実施形態では、CSS46によるデータ処理の内容は固定である。これに対して、ホスト10がCSS46にCSパラメータを渡し、データ処理においてCSパラメータを参照可能であり、CSパラメータによりデータ処理の内容が可変である第3実施形態を説明する。CSパラメータの例は、データ処理の種類(暗号化方式や、暗号鍵)である。
ホスト10はCSパラメータをCSフラグに入れてCSS46に渡してもよい。この場合、CSフラグのサイズは、CSパラメータにより決まり、CSパラメータのサイズが大きい場合、CSフラグのサイズも大きい。
また、ホスト10はCSパラメータを特定できる情報をCSフラグに入れてCSS46に渡してもよい。例えばCSパラメータをCPM44に書き込み、CSパラメータを格納するCPM44のアドレスとサイズをCSフラグに入れてCSS46に渡してもよい。この場合、CSフラグのサイズは一定で良く、CSパラメータのサイズが大きくなっても、それに応じてCSフラグのサイズが大きくなることはない。第3実施形態では、第1実施形態又は第2実施形態のCSフラグは、CSパラメータを特定できる情報をさらに含むように変形される。
図9は、第3実施形態によるCSのライト動作の一例を説明するためのデータ処理システムのブロック図である。第3実施形態は、第1実施形態の変形例としても実現可能であるし、第2実施形態の変形例としても実現可能である。ここでは、第1実施形態の変形例として実現した第3実施形態を説明する。
図9の構成は図1の構成と殆ど同じであるが、以下の点が異なる。第3実施形態では、ライトコマンドW又はリードコマンドRのCSフラグは、CSS46の起動又は停止を指定するオン情報又はオフ情報と、CSパラメータの格納領域を示す情報と、を含む。
ホストバッファ14からCPM44へのデータ転送を指示する転送コマンドTxが定義される。
ファームウェア36はファームウェア36a、36bに変えてファームウェア36e、36fを備える。ファームウェア36eは、ライトコマンドWのCSフラグをチェックし、CSフラグがCSS46の起動を指定するオン情報を含む場合、CSパラメータを参照するプログラムである。ファームウェア36eの一例を以下に示す。cpm_addrがCSパラメータの格納領域を示す情報である。
write()
if(CSS=on)
start(write_prog,cpm_addr);
wait(return);

ファームウェア36fは、リードコマンドRのCSフラグをチェックし、CSフラグがCSS46の起動を指定するオン情報を含む場合、CSパラメータを参照するプログラムである。ファームウェア36fの一例を以下に示す。
read()
if(CSS=on)
start(read_prog,cpm_addr);
wait(return);

第3実施形態でも、ホスト10は、ライトコマンドWやリードコマンドRを投入の事前に、adminキュー24にCSSロードコマンドLを投入する。CS30がCSSロードコマンドLを実行することにより、ライトコマンド連動のプログラムwrite_progやリードコマンド連動のプログラムread_progがホスト10からCS30にロードされる。
図10は、ライト動作の処理の流れの一例を示すフローチャートである。
S502で、ホスト10のCPU(ホストCPU)12は、CSパラメータをホストバッファ14に書き込む。
S504で、CPU12は、ioキュー22に転送コマンドTx(cpm_addr0)又はTx(cpm_addr1)を投入する。転送コマンドTx(cpm_addr)コマンドは、ホストバッファ14からCPM44の領域へのCSパラメータの転送を要求する。転送コマンドTx(cpm_addr)は、CSパラメータの転送先のCPM44の領域を示す領域識別子cpm_addrを含む。
S506で、ファームウェア36を実行するCS30のCPU(デバイスCPU)38は、ioキュー22から転送コマンドTx(cpm_addr)を読み出し、転送コマンドTx(cpm_addr)を解析し、領域識別子cpm_addrを求める。
S508で、CPU38は、ホストバッファ14から領域識別子cpm_addrで指定されるCPM44の領域にCSパラメータを転送する。
S510で、CPU38は、ホスト10のCPU12に転送コマンドTx(cpm_addr)の応答を返す。
S512で、ホスト10のCPU12は、ライト対象のlbaデータをホストバッファ14に書き込む。
S514で、CPU12は、ioキュー22にライトコマンドW(off)、W(on,cpm_addr0)、又はW(on,cpm_addr1)を順次投入する。ライトコマンドW(off)、W(on,cpm_addr0)、及びW(on,cpm_addr1)の各々は、ホストバッファアドレス、lba、データサイズを含む。ライトコマンドW(off)は、CSS46の停止を指定するオフ情報を含むCSフラグが付加されたライトコマンドWである。ライトコマンドW(on,cpm_addr)は、CSS46の起動を指定するオン情報と、起動するCSSプログラムが参照するCSパラメータの格納領域を指定するためのCPM44の領域識別子com_addrと、を含むCSフラグが付加されたライトコマンドWである。
S516で、CPU38は、ioキュー22からライトコマンドWを読み出し、ライトコマンドWを解析し、ホストバッファアドレス、lba、データサイズを求める。
S518で、CPU38は、解析結果に基づいて、ホストバッファ14からデバイスバッファ42にlbaデータを転送する(図9の#e1)。
S520で、CPU38は、ホスト10のCPU12にライトコマンドWの応答を返す。
S522で、CPU38は、ライトコマンドWに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S536で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータを転送する(図9の#e8)。
CSフラグがCSS46の起動を指定する場合、CPU38は、ライトコマンド連動のCSS46を実行する。具体的には、S524で、ファームウェア36eは、ライトコマンド連動のCSS46を起動する(start(write_prog))(図9の#e2)。
S526で、CSS46は、CSフラグが含む領域識別子で指定されたCPM44の領域cpmからCSパラメータを読み込む(図9の#e3)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S528で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load_db())(図9の#e4)。S530で、CSS46は、CPM44からのlbaデータのリード、lbaデータのCSパラメータを用いるデータ処理、データ処理後のlbaデータのCPM44へのライトを実行する(図9の#e5)。S532で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図9の#e6)。
S534で、CSS46は、ファームウェア36eに処理終了を返す(return)(図9の#e7)。
S536で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータを転送する(図9の#e8)。
図11は、第3実施形態によるCSのリード動作の一例を説明するためのデータ処理システムのブロック図である。
図11の構成は図9の構成と殆ど同じであり、ioキュー22に投入されるコマンドが図9と異なる。
図12は、リード動作の処理の流れの一例を示すフローチャートである。
転送コマンドTxによりCSパラメータをCPM44にロードするS502-S510までの処理は図10と同じである。
S612で、ホスト10のCPU(ホストCPU)12は、リード対象のlbaデータを書き込むための領域をホストバッファ14に確保する。
S614で、CPU12は、ioキュー22にリードコマンドR(off)、R(on,cpm_addr0)、又はR(on,cpm_addr1)を順次投入する。リードコマンドR(off)、R(on,cpm_addr0)、及びR(on,cpm_addr1)の各々は、ホストバッファアドレス、lba、データサイズを含む。リードコマンドR(off)は、CSS46の停止を指定するオフ情報を含むCSフラグが付加されたリードコマンドRである。リードコマンドR(on,cpm_addr)は、CSS46の起動を指定するオン情報と、起動するCSSプログラムが参照するCSパラメータの格納領域を指定するためのCPM44の領域識別子com_addrと、を含むCSフラグが付加されたリードコマンドRである。
S616で、CSS30のCPU(デバイスCPU)38は、ioキュー22からリードコマンドRを読み出し、リードコマンドRを解析し、ホストバッファアドレス、lba、データサイズを求める。
S618で、CPU38は、解析結果に基づいて、NANDメモリ32からデバイスバッファ42にlbaデータを転送する(図11の#f1)。
S620で、CPU38は、リードコマンドRに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S634で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図11の#f8)。
S636で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
CSフラグがCSS46の起動を指定する場合、CPU38は、リードコマンド連動のCSS46を起動する。具体的には、S622で、ファームウェア36fは、リードコマンド連動のCSS46を起動する(start(read_prog))(図11の#f2)。
S624で、CSS46は、CSフラグが含む領域識別子で指定されたCPM44の領域cpmからCSパラメータを読み込む(図11の#f3)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S626で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load_db())(図11の#f4)。S628で、CSS46は、CPM44からのlbaデータのリード、CSパラメータを用いるlbaデータのデータ処理、データ処理後のlbaデータのCPM44へのライトを実行する(図11の#f5)。S630で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図11の#f6)。
S632で、CSS46は、ファームウェア36eに処理終了を返す(return)(図11の#f7)。
S634で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図11の#f8)。
S636で、デバイスCPU38は、ホストCPU12にリードコマンドRの応答を返す。
第3実施形態によれば、第1実施形態の効果に加えて、ライト/リードのioコマンドに連動するCSS46が参照するCSパラメータを選択することができる。
なお、第3実施形態のCSフラグからCSS46の起動又は停止を指定するオン情報又はオフ情報を削除し、常にCSS46を起動するが、起動するCSS46が参照するパラメータをCPM44の領域識別子により指定できるように第3実施形態を変形してもよい。
すなわち、変形例では、ライトコマンドW(off)は定義されず、ライトコマンドW(on,slot_no)がライトコマンドW(slot_no)に変更される。同様に、リードコマンドR(off)は定義されず、リードコマンドR(on,slot_no)がリードコマンドR(slot_no)に変更される。
第4実施形態
図9-図12を参照した第3実施形態は、第1実施形態の変形例(第1実施形態のCSフラグにCSパラメータ選択機能を付加)として実現したが、第2実施形態のCSフラグにCSパラメータ選択機能を付加した第4実施形態を説明する。
第4実施形態によるホスト10、コマンドキュー20、CS30の構成は、第1実施形態、第2実施形態、第3実施形態のそれらと同じである。ただし、コマンドキュー20が格納するコマンドやファームウェア36の処理は、第1実施形態、第2実施形態、第3実施形態とは異なる。ライトコマンドW又はリードコマンドRのCSフラグは、CSS46の起動又は停止を指定するオン情報又はオフ情報と、起動するCSS46に対応するスロットを指定するためのスロット識別子slot_noと、CSパラメータの格納領域を示す領域識別子と、を含む。
図13は、第4実施形態によるホスト10がioキュー22に投入するコマンドの一例を示す。
図13(a)は、ホストがライトコマンドを発行した時のioキュー22の一例を示す。ホスト10は、ioキュー22に転送コマンドTx(cpm_addr0)又はTx(cpm_addr1)を投入する。その後、ホスト10は、ioキュー22にCSフラグ付きのライトコマンドW(on,slot0,cpm_addr0)又はW(on,slot1,cpm_addr1)を投入する。ライトコマンドW(on,slot_no,cpm_addr)は、スロットに対応するCSS46の起動を指定し、起動したCSS46はCPM44の領域cpmに格納されているCSパラメータを使用してデータ処理をすることを指定する。
このライトコマンドに対応するために、ファームウェア36は次のファームウェアを含む。
write()
if(CSS=on)
start(slot_no,cpm_addr);
wait(return);

図13(b)は、ホストがリードコマンドを発行した時のioキュー22の一例を示す。ホスト10は、ioキュー22に転送コマンドTx(cpm_addr0)又はTx(cpm_addr1)を投入する。その後、ホスト10は、ioキュー22にCSフラグ付きのリードコマンドR(on,slot0,cpm_addr0)又はR(on,slot1,cpm_addr1)を投入する。リードコマンドR(on,slot_no,cpm_addr)は、スロットに対応するCSS46の起動を指定し、起動したCSS46はCPM44の領域cpmに格納されているCSパラメータを使用してデータ処理をすることを指定する。
このリードコマンドに対応するために、ファームウェア36は次のファームウェアを含む。
read()
if(CSS=on)
start(slot_no,cpm_addr);
wait(return);

第4実施形態では、ライトコマンドW又はリードコマンドRのCSフラグは、CSS46の起動又は停止を指定するオン情報又はオフ情報と、起動するCSS46に対応するスロットを指定するためのスロット識別子slot_noと、CSパラメータの格納領域を示す領域識別子cpm_addrと、を含む。
第4実施形態によれば、第2実施形態の効果に加えて、ライト又はリードのioコマンドに連動するCSS46が参照するCSパラメータを選択することができる。
なお、第4実施形態のCSフラグからCSS46の起動又は停止を指定するオン情報又はオフ情報を削除し、常にCSS46を起動するが、起動するCSS46及びCSS46が参照するCSパラメータを指定できるように第4実施形態を変形してもよい。
すなわち、変形例では、ライトコマンドWW(on,slot_no,cpm_addr)がライトコマンドW(slot_no,cpm_addr)に変更される。同様に、リードコマンドR(on,slot_no,cpm_addr)がリードコマンドR(slot_no,cpm_addr)に変更される。
第5実施形態
CSS46の処理、特にリード動作の処理は、CS付属情報を必要とすることがある。CS付属情報の例は、どのデータをどの誤り訂正符号により符号化したかを示す情報、どのデータをどの暗号鍵により暗号化したかを示す情報、又はどのデータをどのように圧縮したかを示す情報である。CSS46は、ライト時に、条件によって、誤り訂正符号、暗号鍵、圧縮方法を変えることがある。条件はデータの中身に関する条件のこともある。例えば、CSS46は、特定の文字列が含まれているファイルを暗号鍵Aにより暗号化し、特定の文字列が含まれていないファイルを暗号鍵Bにより暗号化することがある。この場合、暗号化されたファイルでは、特定の文字列も暗号化されているので、リード時にCSS46は、特定の文字列が含まれているか否かを暗号化ファイルから判断することができない。この場合、どのデータをどの暗号鍵により暗号化したかを示すCS付属情報があれば、CSS46は、読み出したデータを正しく復号することができる。
CSS46がCS付属情報をlbaデータとともにNANDメモリ32に書き込み、その後CS付属情報をNANDメモリ32から読み出し、その後の処理に付属情報を利用する第5実施形態を説明する。第5実施施形態は、上述した4つの実施形態のいずれに適用可能であるが、ここでは、第1実施形態に適用した第5実施形態を説明する。
図14は、第5実施形態によるCSのライト動作の一例を説明するためのデータ処理システムのブロック図である。第5実施形態は、図1-図4に示す第1実施形態に対して、CSS46が生成したCS付属情報をlbaデータとともにNANDメモリ32やデバイスバッファ42に書き込む機能が追加されている。
図14は、付属情報cs_attrをlbaデータlba_dataの近傍に保存する例を示す。しかし、CS付属情報cs_attrの保存先はlbaデータlba_dataと物理的に近い場所である必要はなく、lbaデータlba_dataに紐づけ可能な場所であればどこでも構わない。例えば、CS付属情報cs_attrをアドレス情報とともにルックアップテーブルで管理する形で保存してもよい。
図15は、ライト動作の処理の流れの一例を示すフローチャートである。
S652で、ホスト10のCPU(ホストCPU)12は、ライト対象の論理ブロックアドレス(logical block address)データ(以下、lbaデータと称される)をホストバッファ14に書き込む。
S654で、CPU12は、ioキュー22にライトコマンドW(off)又はW(on)を順次投入する。
S656で、CS30のCPU(デバイスCPU)38は、ioキュー22からライトコマンドWを読み出し、ライトコマンドWを解析し、ホストバッファアドレス、lba、データサイズを求める。
S658で、CPU38は、解析結果に基づいて、ホストバッファ14からデバイスバッファ42にlbaデータを転送する(図14の#g1)。
S660で、CPU38は、ホスト10のCPU12にライトコマンドWの応答を返す。
S662で、CPU38は、ライトコマンドWに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S676で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータとCS付属情報を転送する(図14の#g8)。
CSフラグがCSS46の起動を指定する場合、CPU38は、ライトコマンド連動のCSS46を実行する。具体的には、S664で、ファームウェア36aは、ライトコマンド連動のCSS46を起動する(start(write_prog))(図14の#g2)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。S666で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load_db())(図14の#g3)。S668で、CSS46は、CPM44からのlbaデータのリード、CS付属情報cs_attrを用いたlbaデータのデータ処理、データ処理後のlbaデータのCPM44へのライトを実行する(図14の#g4)。なお、CS付属情報cs_attrの生成時期は限定されず、この時までに生成されていればよい。S670で、CSS46は、CPM44からデバイスバッファ42へCS付属情報cs_attrをセットする(set cs attr())(図14の#g5)。
S672で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図14の#g6)。
S674で、CSS46がファームウェア36aに処理終了を返す(return)(図14の#g7)。
S676で、CPU38は、デバイスバッファ42からNANDメモリ32にlbaデータとCS付属情報を転送する(図14の#g8)。なお、CS30に電源が常に供給されており、デバイスバッファ42がCS付属情報を不揮発に記憶する場合は、CS付属情報をNANDメモリ32に転送しなくてもよい。
図16は、第5実施形態によるCSのリード動作の一例を説明するためのデータ処理システムのブロック図である。図16の構成は図14の構成と殆ど同じであるが、ioキュー22に投入されるコマンドが図14と異なる。
図17は、リード動作の処理の流れの一例を示すフローチャートである。
S702で、ホスト10のCPU(ホストCPU)12は、リード対象のlbaデータを書き込むための領域をホストバッファ14に確保する。
S704で、CPU12は、ioキュー22にリードコマンドR(off)又はR(on)を順次投入する。
S706で、CS30のCPU(デバイスCPU)38は、ioキュー22からリードコマンドRを読み出し、リードコマンドRを解析し、ホストバッファアドレス、lba、データサイズを求める。
S708で、CPU38は、解析結果に基づいて、NANDメモリ32からデバイスバッファ42にlbaデータとCS付属情報を転送する(図16の#h1)。なお、CS30に電源が常に供給されており、デバイスバッファ42がCS付属情報を不揮発に記憶する場合は、labデータのみNANDメモリ32からデバイスバッファ42に転送する。
S710で、CPU38は、リードコマンドRに付加されているCSフラグが含むオン情報又はオフ情報に基づいて、CSフラグがCSS46の起動又は停止を指定するかを判定する。CSフラグがCSS46の停止を指定する場合、S724で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図16の#h8)。
S726で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
CSフラグがCSS46の起動を指定する場合、CPU38は、リードコマンド連動のプログラムを実行する。具体的には、S712で、ファームウェア36bがリードコマンド連動のCSS46を起動する(start(read_prog))(図16の#h2)。
CSS46が必要に応じて以下を行いながら、CSS処理を実行する。
S714で、CSS46は、デバイスバッファ42からCPM44にlbaデータをロードする(load db())(図16の#h3)。S716で、CSS46は、CPM44からのlbaデータのリード、CS付属情報を用いたlbaデータのデータ処理、及び処理後のlbaデータのCPM44へのライトを実行する(図16の#h4)。
S718で、CSS46は、CPM44からデバイスバッファ42へCS付属情報をセットする(set cs attr())(図16の#h5)。なお、CS付属情報cs_attrの生成時期は限定されず、この時までに生成されていればよい。
S720で、CSS46は、CPM44からデバイスバッファ42へlbaデータをストアする(store db())(図16の#h6)。
S722で、CSS46がファームウェア36bに処理終了を返す(return)(図16の#h7)。
S724で、CPU38は、デバイスバッファ42からホストバッファ14にlbaデータを転送する(図16の#h8)。
S726で、CPU38は、ホスト10のCPU12にリードコマンドRの応答を返す。
第5実施形態によれば、第1実施形態の効果に加えて、ライトコマンドの実行時にCSS46が生成したCS付属情報をデータとともにNANDメモリ32又はデバイスバッファ42に書き込み、リードコマンドの実行時に、NANDメモリ32又はデバイスバッファ2からCS付属情報を読み出して、リードコマンドに関する処理をCS付属情報に基づいて実行することができる。これにより、リードコマンドの実行時に、CSS46は条件に応じた処理の分岐をすることができる。
CS付属情報をNANDメモリ32又はデバイスバッファ42に格納することを第2実施形態、第3実施形態、又は第4実施形態に適用することも可能である。
CS付属情報をNANDメモリ32又はデバイスバッファ42に格納することを第2実施形態に適用する第5実施形態の第1変形例では、図5-図8に示す第2実施形態に対して、ライトコマンドの実行時にCSS46が生成したCS付属情報をlbaデータとともにNANDメモリ32やデバイスバッファ42に書き込む機能と、リードコマンドの実行時にNANDメモリ32やデバイスバッファ42からCS付属情報を読み出す機能と、が追加されている。
CS付属情報をNANDメモリ32又はデバイスバッファ42に格納することを第3実施形態に適用する第5実施形態の第2変形例では、図9-図12に示す第3実施形態に対して、ライトコマンドの実行時にCSS46が生成したCS付属情報をlbaデータとともにNANDメモリ32やデバイスバッファ42に書き込む機能と、リードコマンドの実行時にNANDメモリ32やデバイスバッファ42からCS付属情報を読み出す機能と、が追加されている。
CS付属情報をNANDメモリ32又はデバイスバッファ42に格納することを第4実施形態に適用する第5実施形態の第3変形例では、図5-図12に示す第2実施形態と第3実施形態を併せ持つ実施形態に対して、CSS46が生成したCS付属情報をlbaデータとともにNANDメモリ32やデバイスバッファ42に書き込む機能と、リードコマンドの実行時にNANDメモリ32やデバイスバッファ42からCS付属情報を読み出す機能と、が追加されている。
次に、ホスト10のプログラムフローとCS30のプログラムフローのいくつかの例を説明する。
第6実施形態
第4実施形態におけるホスト10のCPU12のプログラムフローとCS30のプログラムフローを第6実施形態として説明する。
図18は、ホスト10のCPU12のライトコマンド発行時のCSフラグ生成処理の流れの一例を示すフローチャートである。CSフラグ生成処理が開始されると、S802で、CPU12は、ライト対象のパーティションは特定のパーティション(ここでは、パーティションHOGE)であるか否かを判定する。ライト対象のパーティションがパーティションHOGEではない場合(S802のNO)、S804で、CPU12は、CSフラグのオン情報又はオフ情報をCSS停止(オフ)と設定し、処理を終了する。
ライト対象のパーティションがパーティションHOGEである場合(S802のYES)、S806で、CPU12は、CSフラグのオン情報又はオフ情報をCSS起動(オン)と設定する。
S808で、CPU12は、ライト対象のファイルのオーナは特定のオーナ(オーナFUGA)であるか否かを判定する。ライト対象のファイルのオーナがオーナFUGAではない場合(S808のNO)、S810で、CPU12は、CSフラグのスロット識別子をあるスロット(ここでは、スロット0)に設定し、CSフラグのCPM44の領域識別子をある領域(ここでは、cpm_addr1)に設定し、処理を終了する。
ライト対象のファイルのオーナがオーナFUGAである場合(S808のYES)、S812で、CPU12は、CSフラグのスロット識別子をあるスロット(ここでは、スロット2)に設定する。
S814で、CPU12は、ライト対象のファイルの属性が「他者は読み出し禁止」であるか否かを判定する。ライト対象のファイルの属性が「他者は読み出し禁止」である場合(S814のYES)、S816で、CPU12は、CSフラグのCPM44の領域識別子をある領域(ここでは、cpm_addr3)に設定し、処理を終了する。
ライト対象のファイルの属性が「他者は読み出し禁止」ではない場合(S814のNO)、S818で、CPU12は、CSフラグのCPM44の領域識別子をある領域(ここでは、cpm2)に設定し、処理を終了する。
図19は、ホスト10のCPU12のリードコマンド発行時のCSフラグ生成処理の流れの一例を示すフローチャートである。CSフラグ生成処理が開始されると、S902で、CPU12は、リード対象のパーティションは特定のパーティション(ここでは、パーティションHOGE)であるか否かを判定する。リード対象のパーティションがパーティションHOGEではない場合(S902のNO)、S904で、CPU12は、CSフラグのオン情報又はオフ情報をCSS停止と設定し、処理を終了する。
リード対象のパーティションがパーティションHOGEである場合(S902のYES)、S906で、CPU12は、CSフラグのオン情報又はオフ情報をCSS起動と設定する。
S908で、CPU12は、リード対象のファイルのオーナは特定のオーナ(オーナFUGA)であるか否かを判定する。リード対象のファイルのオーナがオーナFUGAではない場合(S908のNO)、S910で、CPU12は、CSフラグのスロット識別子をあるスロット(ここでは、スロット3)に設定し、CSフラグのCPM44の領域識別子をある領域(ここでは、cpm_addr1)に設定し、処理を終了する。
リード対象のファイルのオーナがオーナFUGAである場合(S908のYES)、S912で、CPU12は、CSフラグのスロット識別子をあるスロット(ここでは、スロット4)に設定する。
S914で、CPU12は、リード対象のファイルの属性が「他者は読み出し禁止」であるか否かを判定する。リード対象のファイルの属性が「他者は読み出し禁止」である場合(S914のYES)、S916で、CPU12は、CSフラグのCPM44の領域識別子をある領域(ここでは、cpm_addr3)に設定し、処理を終了する。
リード対象のファイルの属性が「他者は読み出し禁止」ではない場合(S814のNO)、S918で、CPU12は、CSフラグのCPM44の領域識別子をある領域(ここでは、cpm2)に設定し、処理を終了する。
第6実施形態では、ホスト10がCSフラグ生成処理において、ライト対象のパーティション番号、ライト対象ファイルのオーナ、ファイル属性等の条件を加味して、CSS46の起動又は停止、起動時のスロット識別子、及び起動時のCSパラメータ(の格納領域の領域識別子)をCSフラグに設定する。
図20は、CPM44とCSS46の一例を示す。CPM44の領域cpm1、cpm2、及びcpm3には暗号鍵A、B、及びCがそれぞれ格納される。CSS46のスロット1、スロット2、スロット3、及びスロット4は、それぞれ暗号化方式1の暗号化プログラム、暗号化方式2の暗号化プログラム、暗号化方式1の復号プログラム、及び暗号化方式2の復号プログラムに対応する。
第6実施形態によれば、ホスト10がCSフラグに設定した条件(CSS46の起動又は停止、起動時のスロット識別子、及び起動時のCSパラメータ(の格納領域の領域識別子))に応じて、CS30のライト時やリード時に、CSS46の暗号化処理や復号処理が、CSパラメータで指定した暗号鍵や暗号化方式により実施される。
第7実施形態
第5実施形態におけるホスト10のCPU12のプログラムフローとCS30のCSS46のプログラムフローを第7実施形態として説明する。
図21は、CPU12のライトコマンド発行時のCSフラグ生成処理の流れの一例を示すフローチャートである。CSフラグ生成処理が開始されると、S1002で、CPU12は、ライト対象のパーティションは特定のパーティション(ここでは、パーティションHOGE)であるか否かを判定する。
ライト対象のパーティションがパーティションHOGEである場合(S1002のYES)、S1004で、CPU12は、CSフラグのオン情報又はオフ情報をCSS起動(オン)と設定し、処理を終了する。
ライト対象のパーティションがパーティションHOGEではない場合(S1002のNO)、S1006で、CPU12は、CSフラグのオン情報又はオフ情報をCSS停止(オフ)と設定し、処理を終了する。
図22は、CPU12のリードコマンド発行時のCSフラグ生成処理の流れの一例を示すフローチャートである。CSフラグ生成処理が開始されると、S1102で、CPU12は、リード対象のパーティションは特定のパーティション(ここでは、パーティションHOGE)であるか否かを判定する。
リード対象のパーティションがパーティションHOGEである場合(S1102のYES)、S1104で、CPU12は、CSフラグのオン情報又はオフ情報をCSS起動(オン)と設定し、処理を終了する。
ライト対象のパーティションがパーティションHOGEではない場合(S1002のNO)、S1106で、CPU12は、CSフラグのオン情報又はオフ情報をCSS停止(オフ)と設定し、処理を終了する。
図23は、ライト動作におけるCSS46の処理を示すフローチャートである。ライトコマンド連動のCSS46が開始されると、S1202で、CSS46は、ライト対象のデータは特定のワード(ここでは、password)を含むか否かを判定する。
ライト対象のデータがワードpaswordを含む場合(S1202のYES)、S1204で、CSS46は、ライトデータを暗号化方式1で暗号化する。S1206で、CSS46は、暗号化方式1で暗号化したことを示すCS付属情報cs_attr(1)をデバイスバッファ42に書き込む。CS付属情報cs_attr(1)はデバイスバッファ42からNANDメモリ32に転送されてもよい。
ライト対象のデータがワードpaswordを含まない場合(S1202のNO)、S1208で、CSS46は、ライトデータを暗号化方式2で暗号化する。S1210で、CSS46は、暗号化方式2で暗号化したことを示すCS付属情報cs_attr(2)をデバイスバッファ42に書き込む。CS付属情報cs_attr(2)はデバイスバッファ42からNANDメモリ32に転送されてもよい。
図24は、リード動作におけるCSS46の処理を示すフローチャートである。リードコマンド連動のCSS46が開始されると、S1302で、CSS46は、デバイスバッファ42又はNANDメモリ32からCS付属情報を読み出す。S1304で、CSS46は、CS付属情報はCS付属情報cs_attr(1)であるか否かを判定する。
CS付属情報はCS付属情報cs_attr(1)である場合(S1304のYES)、S1306で、CSS46は、読み出した暗号化データを暗号化方式1に対応する復号方式1で復号し、処理を終了する。
CS付属情報はCS付属情報cs_attr(2)である場合(S1304のNO)、S1308で、CSS46は、読み出した暗号化データを暗号化方式2に対応する復号方式2で復号し、処理を終了する。
第7実施形態では、ホスト10がCSフラグ生成処理において、ライト対象のパーティション番号を加味して、CSS46の起動又は停止を指定する。
第7実施形態によれば、ライトコマンド連動のCSS46は暗号化処理を行い、リードコマンド連動のCSS46は復号処理を行う。ライトコマンド連動のCSS46は、暗号化処理において、lbaデータを確認し、特定の文字列passwordを含むか否かを加味して、暗号化方式を切り替え、どの方式で暗号化したかを示す情報をCS付属情報に設定する。リードコマンド連動のCSS46は、復号処理において、CS付属情報を読み出し、設定された暗号化方式に対応した方式の復号処理を実施する。これにより、ホスト10がCS付属情報を管理することなく、CS30は所望の処理を実施することができる。
第8実施形態
本実施形態では、第5実施形態の第3変形例のCS30を用いた場合の、ホスト10のCPU12のプログラムフローとCS30のCSS46のプログラムフローを第8実施形態として説明する。
図25は、CPU12のライトコマンド発行時のCSフラグ生成処理の流れの一例を示すフローチャートである。CSフラグ生成処理が開始されると、S1402で、CPU12は、ライト対象のパーティションは特定のパーティション(ここでは、パーティションHOGE)であるか否かを判定する。
ライト対象のパーティションがパーティションHOGEではない場合(S1402のNO)、S1404で、CPU12は、CSフラグのオン情報又はオフ情報をCSS停止(オフ)と設定し、処理を終了する。
ライト対象のパーティションがパーティションHOGEである場合(S1402のYES)、S1406で、CPU12は、CSフラグのオン情報又はオフ情報をCSS起動(オン)と設定する。S1408で、CPU12は、ライト対象のファイルのオーナがオーナFUGAであるか否かを判定する。
ライト対象のファイルのオーナがオーナFUGAではない場合(S1408のNO)、S1410で、CPU12は、CSフラグのスロット識別子をあるスロット(ここでは、スロット1)に設定し、CSフラグのCSパラメータをあるパラメータ(ここでは、パラメータ1)に設定し、処理を終了する。
ライト対象のファイルのオーナがオーナFUGAである場合(S1408のYES)、S1412で、CPU12は、CSフラグのスロット識別子をあるスロット(ここでは、スロット2)に設定する。
S1414で、CPU12は、ライト対象のファイルの属性が「他者は読み出し禁止」であるか否かを判定する。ライト対象のファイルの属性が「他者は読み出し禁止」である場合(S1414のYES)、S1416で、CPU12は、CSフラグのCSパラメータをあるパラメータ(ここでは、パラメータ3)に設定し、処理を終了する。
ライト対象のファイルの属性が「他者は読み出し禁止」ではない場合(S1414のNO)、S1418で、CPU12は、CSフラグのCSパラメータをあるパラメータ(ここでは、パラメータ2)に設定し、処理を終了する。
図26は、リードコマンド発行時のCPU12のCSフラグ生成処理の流れの一例を示すフローチャートである。CSフラグ生成処理が開始されると、S1502で、CPU12は、CSフラグのオン情報又はオフ情報をCSS起動(オン)と設定し、スロット識別子をあるスロット(ここでは、スロット3)に設定し、処理を終了する。
図27は、ライト動作におけるCSS46の処理を示すフローチャートである。
図27(a)は、スロット1に配置されたCSS46の処理を示すフローチャートである。スロット1のライトコマンド連動のCSS46が開始されると、S1602で、CSS46は、ライト対象のデータをCSパラメータで指定される暗号鍵を用いてCSパラメータで指定される暗号化方式1で暗号化する。S1604で、CSS46は、CPM44からデバイスバッファ42へCS付属情報をセットする。CS付属情報は、CSフラグの中のオン情報又はオフ情報の値、暗号化方式を示す情報、及び暗号鍵を格納する領域を示すCSパラメータを含む。CS付属情報はデバイスバッファ42からNANDメモリ32に転送されてもよい。
図27(b)は、スロット2に配置されたCSS46の処理を示すフローチャートである。スロット2のライトコマンド連動のCSS46が開始されると、S1612で、CSS46は、CSパラメータで指定される暗号鍵を用いて暗号化方式2でライト対象のデータを暗号化する。S1614で、CSS46は、CPM44からデバイスバッファ42へCS付属情報をセットする。CS付属情報は、CSフラグ中のオン情報又はオフ情報の値、暗号化方式を示す情報、及び暗号鍵を格納する領域を示すCSパラメータを含む。CS付属情報はデバイスバッファ42からNANDメモリ32に転送されてもよい。
図28は、スロット3に配置されたリードコマンド連動のCSS46の処理を示すフローチャートである。CCSS46が開始されると、S1702で、CSS46は、CS付属情報を読み出す。S1704で、CSS46は、CS付属情報のうちのCSフラグが含む情報はCSS46の起動又は停止を指定するかを判定する。CSフラグが含む情報はCSS46の停止を指定する場合、CSS46は何もしない(S1706)で、処理を終了する。
CSフラグがCSS46の起動を指定する場合、S1708で、CSS46は、CS付属情報のうちの暗号化方式を示す情報は暗号化方式1又は暗号化方式2を指定するかを判定する。暗号化方式を示す情報は暗号化方式1を指定する場合、S1710で、CSS46は、CS付属情報の中のCSパラメータで指定されるCPM44の領域に格納されている暗号鍵Aを用いてデータを復号し、処理を終了する。
暗号化方式を示す情報は暗号化方式2を指定する場合、S1712で、CSS46は、CS付属情報の中のCSパラメータで指定されるCPM44の領域に格納されている暗号鍵Bを用いてデータを復号し、処理を終了する。
第8実施形態では、第7実施形態と同様、ホスト10がライトコマンドを発行する際、ライト対象のパーティション、ファイルオーナ、及びファイル属性等の条件を加味して、CSS46の起動又は停止、起動時のスロット番号、及び起動時のCSパラメータを指定する。第8実施形態では、第6実施形態や第7実施形態とは異なり、ホスト10がリードコマンドを発行する際、CSS46の起動を指定するようにCSフラグのオン情報又はオフ情報を設定し、CSフラグのプログラム選択情報は特定のスロット番号を指定するが、それ以外のパラメータ制御は行われない。
ライトコマンドに連動して起動されるスロット1、スロット2のCSS46では、CS付属情報の設定処理において、CSS46の起動、暗号化方式、及びCSパラメータを設定する。ここで、CSS46の停止が設定されている場合、CS付属情報はデフォルト状態であり、CSS46の停止が設定されることを前提とする。
リードコマンドに連動して起動されるスロット3のCSS46では、読み出したCS付属情報(CSフラグ、暗号鍵)を用いて、CSS46の起動又は停止に応じて、復号の要否を分岐し、どの暗号化方式に従うか決定し、どの暗号鍵で復号するのかを判断する。このようにCS30がCS付属情報の値を利用することで、ホスト10の処理の軽減が可能となる。
図29は、第8実施形態の変形例におけるホスト10のCPU12のライトコマンド発行時のCSS46の処理の一例を示すフローチャートである。スロット1に配置されたライトコマンド連動のCSS46が開始されると、S1802で、CSS46は、ライト対象のlbaデータは特定のワード(ここでは、confidential)を含むか否かを判定する。
ライト対象のlbaデータがワードconfidentialを含む場合(S1802のYES)、S1804で、CSS46は、ライトデータをCSパラメータで指定されるCPM44の領域に格納されている暗号鍵を用いて暗号化方式1で暗号化する。S1806で、CSS46は、CSS46の起動、暗号化方式1、及び暗号鍵Aを示す情報を含むCS付属情報cs_attr(A)をデバイスバッファ42に書き込み、処理を終了する。
ライト対象のlbaデータがワードconfidentialを含まない場合(S1802のNO)、CSS46は、ライトデータを暗号化せずに(S1808)、S1810で、CSS46は、CSS46の停止を示す情報を含むCS付属情報cs_attr(B)をデバイスバッファ42に書き込み、処理を終了する。
この変形例で、lbaデータのコンテンツに応じて処理の分岐を行っている点は、第6実施形態と同じである。しかし、条件分岐の後、暗号化しない処理(S1808)と、CS付属情報にCSS46を停止する情報を設定する処理(S1810)のように、ホスト10からの指示をCS30の内部で上書きするような動作をする。
このような動作であっても、図28に示した第8実施形態のスロット3のCSS46が判断処理を行うことで、リード時のデータ処理を矛盾なく行うことができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を生成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
10…ホスト、14…ホストバッファ、20…コマンドキュー、30…CS、32…NANDメモリ、36…ファームウェア、42…デバイスバッファ、44…CPM、46…CSS

Claims (8)

  1. 不揮発性メモリと、
    外部装置から受信したコマンドで指定されたデータを前記不揮発性メモリへ書き込む第1処理、又は前記外部装置から受信したコマンドで指定されたデータを前記不揮発性メモリから読み出し、読み出したデータを前記外部装置へ送信する第2処理を含むデータ処理を制御するコントローラと、を具備し、
    前記コントローラは、前記コマンドに含まれる情報に応じて前記データ処理を実行するか否かを決定するプロセッサを具備する、メモリシステム。
  2. 前記コマンドは、前記プロセッサに前記データ処理を実行させること、又は前記プロセッサに前記データ処理を実行させないことを示す第1情報を含む、請求項1記載のメモリシステム。
  3. 前記プロセッサは、複数の前記データ処理を実行可能であり、
    前記コマンドは、前記複数の前記データ処理の中のあるデータ処理を指定する第2情報を含み、
    前記プロセッサは、前記第2情報により指定された前記あるデータ処理を実行する、請求項1記載のメモリシステム。
  4. 前記コマンドは、前記データ処理に関する複数のパラメータの中のあるパラメータを指定する第3情報を含み、
    前記プロセッサは、前記第3情報により指定された前記あるパラメータを使用して前記データ処理を実行する、請求項1記載のメモリシステム。
  5. 前記プロセッサは、複数の前記データ処理を実行可能であり、
    前記複数の前記データ処理は、それぞれに関する複数のパラメータの中の一つのパラメータを使用し、
    前記コマンドは、前記プロセッサに前記複数の前記データ処理を実行させること、又は前記プロセッサに前記データ処理を実行させないことを示す第1情報と、前記複数の前記データ処理の中のあるデータ処理を指定する第2情報と、前記あるデータ処理に関するパラメータを指定する第3情報を含み、
    前記プロセッサは、前記第1情報が前記プロセッサに前記データ処理を実行させることを示す場合、前記第2情報が指定する前記あるデータ処理を前記第3情報により指定された前記パラメータを使用して実行する、請求項1記載のメモリシステム。
  6. 前記プロセッサは、前記データ処理に関する付属情報に基づいて前記データ処理を実行し、
    前記プロセッサは、前記データとともに前記付属情報を前記不揮発性メモリに書き込み、前記データとともに前記付属情報を前記不揮発性メモリから読み出す、請求項1、請求項2、請求項3、請求項4又は請求項5記載のメモリシステム。
  7. ホストと、
    前記ホストに接続されるメモリシステムと、
    を具備するデータ処理システムであって、
    前記メモリシステムは、
    不揮発性メモリと、
    前記ホストから受信したコマンドで指定されたデータ前記不揮発性メモリへ書き込む第1処理、又は前記ホストから受信したコマンドで指定されたデータを前記不揮発性メモリから読み出し、読み出したデータを前記ホストへ送信する第2処理を含むデータ処理を制御するコントローラと、
    を具備し、
    前記コントローラは、前記コマンドに含まれる情報に応じて前記データ処理を実行するか否かを決定するプロセッサを具備する、データ処理システム。
  8. 不揮発性メモリを具備するメモリシステムにおける方法であって、
    フラグ情報が付加されたコマンドを外部装置から受信し、
    前記フラグ情報に基づいて、前記外部装置から受信したコマンドで指定されたデータを前記不揮発性メモリへ書き込む第1処理、又は前記外部装置から受信したコマンドで指定されたデータを前記不揮発性メモリから読み出し、読み出したデータを前記外部装置へ送信する第2処理を含むデータ処理を実行するか否かを決定する、方法。
JP2021044768A 2021-03-18 2021-03-18 メモリシステム、方法及びデータ処理システム Active JP7566674B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021044768A JP7566674B2 (ja) 2021-03-18 2021-03-18 メモリシステム、方法及びデータ処理システム
US17/473,437 US11853604B2 (en) 2021-03-18 2021-09-13 Computational storage device, method, and data processing system executing operation in accordance with information in command

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021044768A JP7566674B2 (ja) 2021-03-18 2021-03-18 メモリシステム、方法及びデータ処理システム

Publications (2)

Publication Number Publication Date
JP2022143959A true JP2022143959A (ja) 2022-10-03
JP7566674B2 JP7566674B2 (ja) 2024-10-15

Family

ID=83284742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021044768A Active JP7566674B2 (ja) 2021-03-18 2021-03-18 メモリシステム、方法及びデータ処理システム

Country Status (2)

Country Link
US (1) US11853604B2 (ja)
JP (1) JP7566674B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966343B2 (en) * 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US11947834B2 (en) 2022-07-15 2024-04-02 Micron Technology, Inc. Data storage devices with reduced buffering for storage access messages
US11983434B2 (en) * 2022-07-15 2024-05-14 Micron Technology, Inc. Network-ready storage products with computational storage processors
US11853819B1 (en) * 2022-07-15 2023-12-26 Micron Technology, Inc. Message queues in network-ready storage products having computational storage processors
US12050945B2 (en) 2022-07-15 2024-07-30 Micron Technology, Inc. Storage products with connectors to operate external network interfaces

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2737391A1 (en) 2011-12-08 2014-06-04 Hitachi, Ltd. Remote copy system and remote copy control method
US20130275652A1 (en) * 2012-04-13 2013-10-17 Lsi Corporation Methods and structure for transferring additional parameters through a communication interface with limited parameter passing features
JP6204044B2 (ja) 2013-03-29 2017-09-27 株式会社メガチップス 不揮発性記憶システム、不揮発性記憶装置、および、メモリコントローラ
US10466907B2 (en) * 2016-03-22 2019-11-05 Toshiba Memory Corporation Method to efficiently store object data of an object storage service on a magnetic disk drive and magnetic SMR disk drive
JP6553566B2 (ja) 2016-09-23 2019-07-31 東芝メモリ株式会社 メモリシステムおよび制御方法
JP6429963B2 (ja) 2017-09-14 2018-11-28 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
US10719474B2 (en) 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10719462B2 (en) * 2018-09-25 2020-07-21 Intel Corporation Technologies for computational storage via offload kernel extensions
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
WO2020186081A1 (en) * 2019-03-12 2020-09-17 Intel Corporation Computational data storage systems
JP6942748B2 (ja) 2019-03-19 2021-09-29 株式会社日立製作所 分散ストレージシステム、データ管理方法、及びデータ管理プログラム
EP3816781A1 (en) * 2019-10-30 2021-05-05 Sunlight.io Limited Storage area network controller
US11687365B2 (en) * 2020-12-21 2023-06-27 Eidetic Communications Inc. Method and apparatus for controlling a computational storage processor
US11449440B2 (en) * 2021-01-19 2022-09-20 EMC IP Holding Company LLC Data copy offload command support across multiple storage access protocols

Also Published As

Publication number Publication date
US11853604B2 (en) 2023-12-26
US20220300207A1 (en) 2022-09-22
JP7566674B2 (ja) 2024-10-15

Similar Documents

Publication Publication Date Title
JP2022143959A (ja) メモリシステム、方法及びデータ処理システム
US20060253620A1 (en) Data structure of flash memory having system area with variable size in which data can be updated, USB memory device having the flash memory, and method of controlling the system area
EP2568408B1 (en) Information processing device, information processing method, and program distribution system
WO2005050453A1 (ja) ファイル記録装置
US8250245B2 (en) Information processing system, with information processing terminal capable of operating in multiple operation modes when connected to a host device
US20080195816A1 (en) Memory card authentication system, memory card host device, memory card, storage area switching method, and storage area switching program
US11733868B2 (en) Dynamic processing of storage command based on internal operations of storage system
CN101390063A (zh) Fat卷上基于文件的压缩
JPWO2006120938A1 (ja) メモリカード、アプリケーションプログラム保持方法、及び保持プログラム
JP2003162433A (ja) メモリシステム
JP2011175632A (ja) 半導体記憶装置及び半導体記憶装置の制御方法
EP2669806B1 (en) Storage system
CN103842962A (zh) 用于改进计算设备的启动的方法
JP4279317B2 (ja) データ処理方法及びデータ処理装置
WO2014100954A1 (zh) 数据控制方法及系统
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
US7287104B2 (en) Interface circuit for card-type memory, ASIC including interface circuit, and image forming apparatus including ASIC
JPH08101803A (ja) 情報処理システム
JP4606009B2 (ja) プログラム処理装置
JP5218024B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム
JP4026383B2 (ja) 情報処理システム、情報処理端末、外部記憶装置、情報処理端末制御用プログラム及び外部記憶装置制御用プログラム
JP2007293564A (ja) メモリデバイスおよび情報記憶システム
TW201007458A (en) Data processing system for integrating transmission interfaces and method thereof
CN107025144B (zh) 用于写入以及读取数据集的方法
JPH10268961A (ja) 課金情報出力装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240722

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20241002