JP2020021385A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2020021385A JP2020021385A JP2018146439A JP2018146439A JP2020021385A JP 2020021385 A JP2020021385 A JP 2020021385A JP 2018146439 A JP2018146439 A JP 2018146439A JP 2018146439 A JP2018146439 A JP 2018146439A JP 2020021385 A JP2020021385 A JP 2020021385A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- host
- validity
- control unit
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0769—Readable error formats, e.g. cross-platform generic formats, human understandable formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Abstract
【課題】データの正当性を検証する演算を伴う書き込み処理の高速化を図ること。【解決手段】実施形態のメモリシステムは、データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、ホストから受信したデータに対してデータの正当性を検証する演算の実行と並行して、データを不揮発性メモリへ転送するメモリコントローラと、を備える。【選択図】図1
Description
本発明の実施形態は、メモリシステムに関する。
近年、不揮発性メモリであるNAND型フラッシュメモリの大容量化が進行し、このNAND型フラッシュメモリを搭載したメモリシステムとして、SSD(Solid State Drive)が注目されている。
SSDが搭載されたPC、タブレットPCおよびスマートフォンなどのデバイスにおいては、不揮発性メモリへのデータの不当な書き換え等を防止するなどのセキュリティの確保が重要である。このため、外部から転送される書き込みデータに対し、データの正当性を検証する演算が行われる場合がある。このような演算には時間が掛かり、不揮発性メモリへの書き込み処理に時間を要してしまう。
一つの実施形態は、データの正当性を検証する演算を伴う書き込み処理の高速化を図ることができるメモリシステムを提供することを目的とする。
実施形態のメモリシステムは、データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、ホストから受信したデータに対して前記データの正当性を検証する演算の実行と並行して、前記データを前記不揮発性メモリへ転送するメモリコントローラと、を備える。
以下に、本発明につき図面を参照しつつ詳細に説明する。なお、下記の実施形態により、本発明が限定されるものではない。また、下記実施形態における構成要素には、当業者が容易に想定できるものあるいは実質的に同一のものが含まれる。
図1〜図4を用いて、実施形態のメモリシステム1について説明する。
(メモリシステムの構成例)
図1は、実施形態にかかるメモリシステム1の概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリとしてのNAND型フラッシュメモリ20(以下、単にNANDメモリ20ともいう)とを備える。
図1は、実施形態にかかるメモリシステム1の概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリとしてのNAND型フラッシュメモリ20(以下、単にNANDメモリ20ともいう)とを備える。
メモリシステム1は、メモリコントローラ10とNANDメモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。メモリシステム1は、ホスト30と接続可能である。ホスト30は、例えば、パーソナルコンピュータ、サーバ、ストレージボックスなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
NANDメモリ20は、データを不揮発に記憶する不揮発性メモリを含む。以下の説明では、不揮発性メモリとしてNANDメモリが用いられた場合について説明するが、不揮発性メモリの例はこれに限られない。不揮発性メモリは、例えば、NOR型のフラッシュメモリ、3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等の種々の記憶媒体のいずれかであってよい。また、不揮発性メモリが半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対しても本実施形態を適用することが可能である。
NANDメモリ20は、内部RAM(Random Access Memory)21を備える。内部RAM21は、ホスト30からメモリコントローラ10を介して転送されたデータ等を一時格納する内部バッファとして機能する。また、NANDメモリ20は、上述の不揮発性メモリがマトリックス状に配列されたメモリセルアレイ22を備える。ホスト30からのデータは、メモリセルアレイ22内に不揮発に記憶される。
メモリコントローラ10は、例えばSoC(System−On−a−Chip)として構成される半導体集積回路である。メモリコントローラ10は、ホスト30からのライト要求に従ってNANDメモリ20へのデータのライトを制御する。また、ホスト30からのリード要求に従ってNANDメモリ20からのデータのリードを制御する。
メモリコントローラ10は、制御部11、RAM12、メモリインタフェース(メモリI/F)13、データバッファ14、ホストインタフェース(ホストI/F)15、演算部16、及び転送経路制御部17を備える。制御部11、RAM12、メモリI/F13、データバッファ14、ホストI/F15、演算部16、及び転送経路制御部17は、内部バスで相互に接続されている。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信したリクエスト(要求)、ライト対象のデータ(ユーザデータ)などを内部バスに出力する。また、ホストI/F15は、NANDメモリ20からリードされたデータ(ユーザデータ)、制御部11からの応答などをホスト30へ送信する。なお、ホストI/F15の機能のうちの一部または全部を後述の制御部11が兼ね備えていてもよい。つまり、ホスト30との情報のやり取りを、制御部11が直接行ってもよい。
メモリI/F13は、制御部11の指示に基づいて、NANDメモリ20へのデータのライト処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、NANDメモリ20からのデータのリード処理を行う。なお、メモリI/F13の機能のうちの一部または全部を後述の制御部11が兼ね備えていてもよい。つまり、NANDメモリ20との情報のやり取りを、制御部11が直接行ってもよい。
データバッファ14は、複数の格納領域14a、格納領域14b、格納領域14c等を備える。データバッファ14は、メモリコントローラ10がホスト30から受信したデータをNANDメモリ20へ記憶するまでに、いずれかの格納領域14a〜14cに一時格納する。また、データバッファ14は、NANDメモリ20からリードされたデータをホスト30へ送信するまでに、いずれかの格納領域14a〜14cに一時格納する。データバッファ14には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
転送経路制御部17は、データバッファ14の格納領域14a〜14cに一時格納されたデータの転送先を制御する。データの転送先は、演算部16およびNANDメモリ20の内部RAM21である。なお、転送経路制御部17の機能のうちの一部または全部を後述の制御部11が兼ね備えていてもよい。
演算部16は、転送経路制御部17から転送されたホスト30からのデータに対し、そのデータの正当性を検証する演算を実行する。演算の方式は特に問わない。例えば、NANDメモリ20にUFS(Universal Flash Storage)規格やeMMC(embedded Muluti−Media−Card)規格が適用されている場合、メモリシステム1にはRPMB(Reply Protected Memory Block)が定義される。RPMBでは、ホスト30と共有される共有鍵16aを演算部16が保有し、演算部16が共有鍵16aを用いてハッシュ演算をすることで、ホスト30からのデータの正当性を検証する。この場合、演算部16は、SHA(Secure Hash Algorithm)256演算回路等である。このほか、演算部16は、異なる演算方式を用いたPI(Protection Information)によるCRC(Cyclic Redundancy Check)演算回路等であってもよい。また、演算部16の機能のうちの一部または全部を後述の制御部11が兼ね備えていてもよい。例えば、演算部16がハッシュ演算を行い、制御部11がホスト30からのデータの正当性を検証するようにしてもよい。
制御部11は、例えば、CPU(Central Processing Unit)として構成される。制御部11は、ファームウェアプログラムに基づいて動作する。例えば、ファームウェアプログラムはNANDメモリ20に、メモリシステム1の製造時または出荷時において予め格納されている。制御部11は、メモリシステム1の起動時に、メモリコントローラ10が備えるRAM12にNANDメモリ20からファームウェアプログラムをロードする。制御部11は、RAM12にロードされたファームウェアプログラムを実行することによって、各種機能を実現する。
このように、制御部11の機能のうちの一部または全部は、例えば、ファームウェアを実行するCPUによって実現される。ただし、制御部11の機能のうちの一部または全部は、ファームウェアを実行するCPUではなく、ハードウェア回路によって実現されてもよい。例えばメモリコントローラ10は、FPGA(Field−Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)を備え、制御部11の機能のうちの一部または全部は、FPGAまたはASICによって実行されてもよい。
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からホストI/F15経由で要求を受けた場合に、その要求に従った制御を行う。例えば、制御部11は、ホスト30からのライト要求に従って、NANDメモリ20へのデータのライトをメモリI/F13へ指示する。また、制御部11は、ホスト30からのリード要求に従って、NANDメモリ20からのデータのリードをメモリI/F13へ指示する。
また、制御部11は、ホスト30からライト要求を受信した場合、データバッファ14に蓄積されるデータを、演算部16またはNANDメモリ20の内部RAM21のいずれかへと転送するよう転送経路制御部17に指示する。そして、演算部16へと転送されたデータに対して、そのデータの正当性を検証する演算を演算部16に指示する。
また、制御部11は、データバッファ14に蓄積されるデータに対して、NANDメモリ20上の格納領域(例えばメモリセルアレイ22内の領域)を決定する。すなわち、制御部11は、データのライト先を管理する。ホスト30から受信したデータの論理アドレスと該データが格納されたNANDメモリ20上の格納領域を示す物理アドレスとの対応情報はアドレス変換テーブルとして格納される。
また、制御部11は、ホスト30からリード要求を受信した場合、リード要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからのデータのリードをメモリI/F13へ指示する。
(メモリシステムの動作例)
次に、図2を用いて、ホスト30からのライト要求を受信した場合の、メモリシステム1のデータ処理の動作例について説明する。図2は、実施形態にかかるメモリシステム1のデータ処理の動作の一例をブロック図で示すフロー図である。ホスト30は、データの検証に必要な共有鍵を予めメモリシステム1に送付済みであるものとする。
次に、図2を用いて、ホスト30からのライト要求を受信した場合の、メモリシステム1のデータ処理の動作例について説明する。図2は、実施形態にかかるメモリシステム1のデータ処理の動作の一例をブロック図で示すフロー図である。ホスト30は、データの検証に必要な共有鍵を予めメモリシステム1に送付済みであるものとする。
図2(a)に示すように、ホスト30は、メモリシステム1に対してライト要求を発行するとともに、ユーザデータを複数のフレームに分けて転送する。図2の例では、所定サイズの8つのデータD1〜D8のそれぞれを1つのフレームとして、ユーザデータであるデータD1〜D8が転送されたところを示している。8つのデータD1〜D8のうち8番目のデータD8には、ホスト30によりハッシュ演算されたMAC(Message Authentication Code)値が付与されている。ハッシュ演算とは、或るデータからそのデータを要約する数列を生成する演算手法である。MAC値は、共有鍵を用いて各データD1〜D8に対してハッシュ演算することで得られる。このように、ここでのユーザデータとは、8つのフレームを1セットとするデータのセットであって、1回のライト要求でホスト30から指定されるサイズ且つ1つのMAC値で保護されるサイズのデータのセットを指すこととする。
メモリシステム1に転送されたデータD1〜D8は、例えば、データバッファ14の格納領域14aに一時格納される。格納領域14aに一時格納されたデータD1〜D8は、転送経路制御部17により取得される。
図2(b)に示すように、転送経路制御部17が取得したデータD1〜D8は、転送経路制御部17により演算部16に転送される。演算部16に転送されたデータD1〜D8は、演算部16により共有鍵16aを用いてハッシュ演算され、ホスト30とは独立してMAC値が導き出される。演算部16は、自身が求めたMAC値と、ホスト30により求められデータD8に付与されているMAC値とを比較する。それら2つのMAC値が一致すれば、ホスト30から転送されたデータD1〜D8は改変等を受けていないと言え、演算部16はデータD1〜D8の正当性を認証する。それら2つのMAC値が一致しなければ、データD1〜D8は不当な改変を受けた恐れがあり、演算部16はデータD1〜D8の正当性を否認する。なお、演算部16が求めたMAC値を、制御部11がホスト30により求められたMAC値と比較して正当性の認証または否認をするようにしてもよい。
ハッシュ演算されたデータD1〜D8は、例えば、データバッファ14の格納領域14bに一時格納される。
転送経路制御部17が取得したデータD1〜D8は、また、転送経路制御部17からメモリI/F13を介してNANDメモリ20の内部RAM21へと転送され一時格納される。この動作は、メモリコントローラ10が、格納領域14aに一時格納されたデータD1〜D8のためのデータインコマンドをNANDメモリ20に対して発行することで実行される。データインコマンドは、NANDメモリ20に所定のデータを転送するコマンドで、このNANDメモリ20へのデータ転送はメモリセルアレイ22へのプログラムを伴わない。メモリセルアレイ22へのプログラムとは、内部RAM21のデータをメモリセルアレイ22に不揮発に記憶させることである。内部RAM21へと一時格納されたデータD1〜D8は、後述するように、演算部16のハッシュ演算により正当性が認証されるのを待って、適宜、メモリセルアレイ22にプログラムされる。
ここで、格納領域14aから転送経路制御部17を介して演算部16へとデータD1〜D8が転送されるまでの時間、演算部16におけるハッシュ演算に要する時間、および演算部16からハッシュ演算済みのデータD1〜D8を格納領域14bへと転送する時間を足し合わせた時間を時間T1とする。
また、格納領域14aから転送経路制御部17を介してNANDメモリ20の内部RAM21へとデータD1〜D8が転送されるまでの時間を時間T2とする。このとき、格納領域14aから内部RAM21へのデータD1〜D8転送は時間T1内に行われる。つまり、時間T2<時間T1であって、図2(b)における時間T2,T1の矢印の長短がそのまま時間の長短を表さないことに留意されたい。
図2(c)に示すように、演算部16によってユーザデータであるデータD1〜D8の正当性が認証された場合は、メモリコントローラ10は、適宜、NANDメモリ20に対して正当性が認証されたユーザデータのためのプログラムコマンドを発行する。メモリコントローラ10からのプログラムコマンドは、NANDメモリ20に、内部RAM21に一時格納されたユーザデータを、所定のメモリセルアレイ22内の領域にプログラムさせる(不揮発に記憶させる)コマンドである。これにより、ホスト30からのライト要求が実行される。なお、ここで、データD1〜D8を含むユーザデータ1つのサイズは、NANDメモリ20の内部RAM21に格納可能なサイズであることが想定されている。
演算部16によってユーザデータであるデータD1〜D8の正当性が否認された場合は、メモリコントローラ10は、NANDメモリ20に対して正当性が否認されたユーザデータのためのリセットコマンドを発行する。メモリコントローラ10からのリセットコマンドは、NANDメモリ20に、内部RAM21に一時格納されたユーザデータをプログラムすることなく消去させるコマンドである。これにより、ホスト30からのライト要求はキャンセルされる。また、これにより、NANDメモリ20は、次のコマンドを受け付け可能なコマンド待ち受け状態に戻る。そして、メモリコントローラ10には、MAC値が不一致であったという情報が保持される。メモリコントローラは、ホスト30からライト結果の確認要求を受けると、ホスト30にエラー通知を送信する。または、ホスト30からライト結果の確認要求が無い場合であっても、メモリコントローラが、適宜、ホスト30にエラー通知を送信してもよい。
以上により、メモリシステム1のデータ処理の動作が終了する。
(メモリシステムの処理例)
次に、図3を用いて、ホスト30からのライト要求を受信した場合の、メモリシステム1のデータの処理例について説明する。図3は、実施形態にかかるメモリシステム1のデータ処理の手順の一例を示すフロー図である。図3においても、ホスト30は、データの検証に必要な共有鍵を予めメモリシステム1に送付済みであるものとする。
次に、図3を用いて、ホスト30からのライト要求を受信した場合の、メモリシステム1のデータの処理例について説明する。図3は、実施形態にかかるメモリシステム1のデータ処理の手順の一例を示すフロー図である。図3においても、ホスト30は、データの検証に必要な共有鍵を予めメモリシステム1に送付済みであるものとする。
メモリシステム1がホスト30からライト要求とライトデータとを受信すると(ステップS10)、メモリコントローラ10の制御部11は、データバッファ14のいずれかの格納領域14a〜14cにデータを一時格納させる。これ以降、ホスト30からのデータの格納先を格納領域14xともいう。また、演算部16によりハッシュ演算済みのデータは、いずれかの格納領域14a〜14cに一時格納される。これ以降、演算済みのデータの格納先を格納領域14yともいう。
転送経路制御部17は、格納領域14xのデータをNANDメモリ20の内部RAM21へと転送する。また、転送経路制御部17は、格納領域14xに格納されたデータを演算部16に転送する。このように、転送経路制御部17は、ホスト30からのデータを内部RAM21及び演算部16へと振り分けていく(ステップS20)。
より具体的には、メモリコントローラ10は、順次、ホスト30からデータを受け取り、格納領域14xに格納し、転送経路制御部17により演算部16へと転送させる。演算部16は、転送されたデータに対して、順次、ハッシュ演算を実行し、MAC値を求める。これと並行して、制御部11は、データインコマンドを発行し、格納領域14xに格納されたデータを、転送経路制御部17から、順次、メモリI/F13を介してNANDメモリ20の内部RAM21へと転送させる(ステップS30)。このとき、ホスト30からのデータが格納される格納領域14xと、演算済みデータが格納される格納領域14yとは、異なる格納領域14a〜14cであることが好ましい。これにより、いっそうデータ転送の高速化を図ることができる。また、RPMB規格に基づくデータ処理とメモリシステム1の仕様に基づくデータ処理とで、データの格納先を切り分けることができる。
演算部16は、ホスト30が演算したMAC値と得られたMAC値とを比較し、データの正当性を認証するか否かを判定する(ステップS40)。
双方のMAC値が一致した場合は、演算部16はデータの正当性を認証する(ステップS40:Yes)。制御部11は、NANDメモリ20に対してプログラムコマンドを発行し(ステップS51)、内部RAM21に転送されたデータを所定のメモリセルアレイ22内の領域にプログラムさせる(ステップS61)。
双方のMAC値が一致しない場合は、演算部16はデータの正当性を否認する(ステップS40:No)。制御部11は、NANDメモリ20に対してリセットコマンドを発行し(ステップS52)、内部RAM21に転送されたデータを消去させる(ステップS62)。これにより、NANDメモリ20はコマンド待ち受け状態に戻る。メモリコントローラ10は、ホスト30からライト結果の確認要求があった時点で、または、メモリコントローラ10が適宜、ホスト30にエラー通知を行う。
以上により、メモリシステム1のデータ処理が終了する。
(比較例)
次に、図4を用いて、比較例のメモリシステムについて説明する。図4は、実施形態にかかるメモリシステム1の転送方式と比較例にかかるメモリシステムの転送方式とを比較する図である。
次に、図4を用いて、比較例のメモリシステムについて説明する。図4は、実施形態にかかるメモリシステム1の転送方式と比較例にかかるメモリシステムの転送方式とを比較する図である。
比較例のメモリシステムにおいては、ホストからの転送データは、データバッファの格納領域、演算部、他の格納領域、NANDメモリの内部RAMへと順次、転送される。つまり、データバッファの格納領域から演算部へと転送されたデータは、そこでハッシュ演算される。そして、導き出されたMAC値がホストからのMAC値と一致した場合のみ、他の格納領域を経てNANDメモリの内部RAMへと転送される。
ホストからは、通常、複数フレームのデータが転送されてくる。ハッシュ演算はフレームごとに行われ、その結果を次のフレームの演算に使用するため、演算部での処理はシリアル処理となる。このため、演算部での処理が終了するまで長時間を要する。つまり、演算部での処理時間を含む時間T1’に、NANDメモリの内部RAMへの転送時間である時間T2’がそのまま加算されてしまう。このため、データの正当性を検証する演算を伴う書き込み処理には長い時間が掛かってしまう。
実施形態のメモリシステム1においては、演算部16でのデータ処理がNANDメモリ20の内部RAM21へのデータ転送と並行して行われる。つまり、時間T1内に時間T2の動作が行われる。これにより、実施形態における時間(T1(T2))は、比較例における時間(T1’+T2’)よりも大幅に短縮される。よって、実施形態のメモリシステム1においては、データの正当性を検証する演算を伴う書き込み処理の高速化を図ることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、10…メモリコントローラ、11…制御部、12…RAM、13…メモリI/F、14…データバッファ、15…ホストI/F、16…演算部、17…転送経路制御部、20…NAND型フラッシュメモリ、21…内部RAM、30…ホスト。
Claims (5)
- データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、
ホストから受信したデータに対して前記データの正当性を検証する演算の実行と並行して、前記データを前記不揮発性メモリへ転送するメモリコントローラと、を備える、
メモリシステム。 - 前記不揮発性メモリはデータを一時格納する内部バッファを備え、
前記メモリコントローラは、
前記内部バッファに前記データを転送し、前記演算の結果に応じて前記内部バッファの前記データを前記不揮発性メモリの前記メモリセルアレイへ不揮発に記憶させるプログラムの実行要否を判定する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
前記演算の結果、前記データの正当性が認証された場合には前記不揮発性メモリの前記メモリセルアレイへの前記データのプログラムを許可し、前記データの正当性が否認された場合には前記メモリセルアレイへの前記データのプログラムを行わない、
請求項2に記載のメモリシステム。 - 前記メモリコントローラは、
前記演算の結果、前記データの正当性が認証された合には前記不揮発性メモリの前記メモリセルアレイへ前記データのプログラムを許可するプログラムコマンドを発行し、前記データの正当性が否認された場合には前記メモリセルアレイへ前記データのプログラムを行うことなく前記不揮発性メモリをコマンド待ち受け状態に戻すリセットコマンドを発行する、
請求項2に記載のメモリシステム。 - 前記メモリコントローラは、
前記ホストからMAC値が付与された前記データを受信し、前記ホストと共有される鍵を用いて前記データに対してハッシュ演算を実行してMAC値を導出し、導出した前記MAC値が前記データに付与された前記MAC値と一致する場合には前記データの正当性を認証し、導出した前記MAC値が前記データに付与された前記MAC値と一致しない場合には前記データの正当性を否認する、
請求項1に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018146439A JP2020021385A (ja) | 2018-08-03 | 2018-08-03 | メモリシステム |
US16/270,572 US10970000B2 (en) | 2018-08-03 | 2019-02-07 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018146439A JP2020021385A (ja) | 2018-08-03 | 2018-08-03 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020021385A true JP2020021385A (ja) | 2020-02-06 |
Family
ID=69228698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018146439A Pending JP2020021385A (ja) | 2018-08-03 | 2018-08-03 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10970000B2 (ja) |
JP (1) | JP2020021385A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102365312B1 (ko) * | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
TWI797022B (zh) * | 2021-06-17 | 2023-03-21 | 南韓商三星電子股份有限公司 | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11640335B2 (en) * | 2021-06-15 | 2023-05-02 | Western Digital Technologies, Inc. | Multiple function level reset management |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61117640A (ja) | 1984-11-13 | 1986-06-05 | Oki Electric Ind Co Ltd | メモリのチエツク方法 |
EP2003569B1 (en) * | 2006-03-13 | 2010-06-02 | Panasonic Corporation | Flash memory controller |
JP2013069250A (ja) | 2011-09-26 | 2013-04-18 | Toshiba Corp | 記憶装置および書き込み装置 |
US8880980B1 (en) * | 2012-11-27 | 2014-11-04 | Cadence Design Systems, Inc. | System and method for expeditious transfer of data from source to destination in error corrected manner |
US9076530B2 (en) | 2013-02-07 | 2015-07-07 | Seagate Technology Llc | Non-volatile write buffer data retention pending scheduled verification |
JP6213345B2 (ja) | 2014-03-31 | 2017-10-18 | 富士通株式会社 | 転送装置、決定方法、及びデータ処理装置 |
US10776268B2 (en) * | 2018-04-19 | 2020-09-15 | Western Digital Technologies, Inc. | Priority addresses for storage cache management |
US11088845B2 (en) * | 2018-07-03 | 2021-08-10 | Western Digital Technologies, Inc. | Non-volatile memory with replay protected memory block having dual key |
-
2018
- 2018-08-03 JP JP2018146439A patent/JP2020021385A/ja active Pending
-
2019
- 2019-02-07 US US16/270,572 patent/US10970000B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102365312B1 (ko) * | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
TWI797022B (zh) * | 2021-06-17 | 2023-03-21 | 南韓商三星電子股份有限公司 | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 |
US11645011B2 (en) | 2021-06-17 | 2023-05-09 | Samsung Electronics Co., Ltd. | Storage controller, computational storage device, and operational method of computational storage device |
Also Published As
Publication number | Publication date |
---|---|
US20200042241A1 (en) | 2020-02-06 |
US10970000B2 (en) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11880313B2 (en) | Storage system and method for performing and authenticating write-protection thereof | |
US10324864B2 (en) | Storage system and method for performing and authenticating write-protection thereof | |
TWI620095B (zh) | 用以確保存取保護計畫之裝置及有形機器可讀媒體 | |
US10257192B2 (en) | Storage system and method for performing secure write protect thereof | |
CN110457236B (zh) | 存储系统以及对存储系统执行和验证写保护的方法 | |
JP5500458B2 (ja) | プロセッサメインメモリのメモリコンテンツのセキュリティ保護 | |
US9678760B2 (en) | Memory card and storage system having authentication program and method for operating thereof | |
CN111475871A (zh) | 存储器系统 | |
US10970000B2 (en) | Memory system | |
US11461021B2 (en) | Computing system and operating method thereof | |
CN111309248A (zh) | 与安全存储器存取有关的方法、系统和设备 | |
CN109643344B (zh) | 用于共享安全性元数据存储器空间的方法和装置 | |
CN114255813A (zh) | 存储装置、主机装置、包括两者的电子装置及其操作方法 | |
US20230185483A1 (en) | Solid State Drives with Hardware Accelerators for Proof of Space Computations | |
US20220091757A1 (en) | Apparatus including data storage device and method of operating the same | |
US20230134534A1 (en) | Memory controller and storage device | |
US20230222219A1 (en) | Storage controller, storage system, and method of operating storage device | |
US20230136229A1 (en) | Storage device, computing system, and method of operating the same | |
US20220155976A1 (en) | Data storage device and method of operating the same | |
KR20230064538A (ko) | 메모리 컨트롤러 및 스토리지 장치 |