JP2020021385A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

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
Application number
JP2018146439A
Other languages
English (en)
Inventor
武 中野
Takeshi Nakano
武 中野
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 JP2018146439A priority Critical patent/JP2020021385A/ja
Priority to US16/270,572 priority patent/US10970000B2/en
Publication of JP2020021385A publication Critical patent/JP2020021385A/ja
Pending legal-status Critical Current

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/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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/0727Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/073Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0766Error or fault reporting or storing
    • G06F11/0769Readable error formats, e.g. cross-platform generic formats, human understandable formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/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

Abstract

【課題】データの正当性を検証する演算を伴う書き込み処理の高速化を図ること。【解決手段】実施形態のメモリシステムは、データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、ホストから受信したデータに対してデータの正当性を検証する演算の実行と並行して、データを不揮発性メモリへ転送するメモリコントローラと、を備える。【選択図】図1

Description

本発明の実施形態は、メモリシステムに関する。
近年、不揮発性メモリであるNAND型フラッシュメモリの大容量化が進行し、このNAND型フラッシュメモリを搭載したメモリシステムとして、SSD(Solid State Drive)が注目されている。
SSDが搭載されたPC、タブレットPCおよびスマートフォンなどのデバイスにおいては、不揮発性メモリへのデータの不当な書き換え等を防止するなどのセキュリティの確保が重要である。このため、外部から転送される書き込みデータに対し、データの正当性を検証する演算が行われる場合がある。このような演算には時間が掛かり、不揮発性メモリへの書き込み処理に時間を要してしまう。
特開2013−069250号公報
一つの実施形態は、データの正当性を検証する演算を伴う書き込み処理の高速化を図ることができるメモリシステムを提供することを目的とする。
実施形態のメモリシステムは、データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、ホストから受信したデータに対して前記データの正当性を検証する演算の実行と並行して、前記データを前記不揮発性メモリへ転送するメモリコントローラと、を備える。
図1は、実施形態にかかるメモリシステムの概略構成例を示すブロック図である。 図2は、実施形態にかかるメモリシステムのデータ処理の動作の一例をブロック図で示すフロー図である。 図3は、実施形態にかかるメモリシステムのデータ処理の手順の一例を示すフロー図である。 図4は、実施形態にかかるメモリシステムの転送方式と比較例にかかるメモリシステムの転送方式とを比較する図である。
以下に、本発明につき図面を参照しつつ詳細に説明する。なお、下記の実施形態により、本発明が限定されるものではない。また、下記実施形態における構成要素には、当業者が容易に想定できるものあるいは実質的に同一のものが含まれる。
図1〜図4を用いて、実施形態のメモリシステム1について説明する。
(メモリシステムの構成例)
図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(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に送付済みであるものとする。
メモリシステム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の転送方式と比較例にかかるメモリシステムの転送方式とを比較する図である。
比較例のメモリシステムにおいては、ホストからの転送データは、データバッファの格納領域、演算部、他の格納領域、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. 前記不揮発性メモリはデータを一時格納する内部バッファを備え、
    前記メモリコントローラは、
    前記内部バッファに前記データを転送し、前記演算の結果に応じて前記内部バッファの前記データを前記不揮発性メモリの前記メモリセルアレイへ不揮発に記憶させるプログラムの実行要否を判定する、
    請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、
    前記演算の結果、前記データの正当性が認証された場合には前記不揮発性メモリの前記メモリセルアレイへの前記データのプログラムを許可し、前記データの正当性が否認された場合には前記メモリセルアレイへの前記データのプログラムを行わない、
    請求項2に記載のメモリシステム。
  4. 前記メモリコントローラは、
    前記演算の結果、前記データの正当性が認証された合には前記不揮発性メモリの前記メモリセルアレイへ前記データのプログラムを許可するプログラムコマンドを発行し、前記データの正当性が否認された場合には前記メモリセルアレイへ前記データのプログラムを行うことなく前記不揮発性メモリをコマンド待ち受け状態に戻すリセットコマンドを発行する、
    請求項2に記載のメモリシステム。
  5. 前記メモリコントローラは、
    前記ホストからMAC値が付与された前記データを受信し、前記ホストと共有される鍵を用いて前記データに対してハッシュ演算を実行してMAC値を導出し、導出した前記MAC値が前記データに付与された前記MAC値と一致する場合には前記データの正当性を認証し、導出した前記MAC値が前記データに付与された前記MAC値と一致しない場合には前記データの正当性を否認する、
    請求項1に記載のメモリシステム。

JP2018146439A 2018-08-03 2018-08-03 メモリシステム Pending JP2020021385A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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) 메모리 컨트롤러 및 스토리지 장치