以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
{1.メモリシステムの構成}
{1.1.全体構成}
図1は、本発明の実施の形態に係るメモリシステム100の構成を示す機能ブロック図である。図1に示すように、メモリシステム100は、ホスト装置10と、半導体記憶装置20とを備える。半導体記憶装置20は、メモリコントローラ30と、半導体メモリ40とを備える。
メモリコントローラ30は、ホスト装置10からの要求に応じて、半導体メモリ40にアクセスする。
半導体メモリ40は、不揮発性であり、例えば、NANDフラッシュメモリである。半導体メモリ40は、プログラム41と、コンテンツデータ42と、対象アドレスデータ43とを記憶する。プログラム41は、コンテンツデータ42を使用するためのプログラムである。対象アドレスデータ43は、メモリコントローラ30が固定レイテンシ処理及び可変レイテンシ処理のどちらを実行するかを決定するために用いられる。固定レイテンシ処理及び可変レイテンシ処理の詳細については、後述する。
{1.2.ホスト装置10の構成}
図2は、図1に示すホスト装置10の構成を示す機能ブロック図である。図2に示すように、ホスト装置10は、CPU(Central Processing Unit)11と、RAM(Random Access Memory)12と、乱数生成器13と、ホスト側コントローラ14とを備える。CPU11と、RAM12と、乱数生成器13と、ホスト側コントローラ14とは、バスを介して接続される。
CPU11は、RAM12にロードされたプログラムを実行して、ホスト装置10の動作を制御する。RAM12は、ホスト装置10のメインメモリである。
乱数生成器13は、固定レイテンシ期間51の生成に用いられる乱数13A及び13Bを生成する。乱数生成器13は真性乱数を生成する。乱数13A及び13Bの生成タイミングは、それぞれ異なる。従って、乱数13A及び13Bは、互いに異なる値を有する。固定レイテンシ期間51は、固定レイテンシ処理の実行時に用いられる。固定レイテンシ期間51は、メモリコントローラ30が読み出しコマンドに含まれるアドレスのデータを送信するタイミングを決定するために用いられる。固定レイテンシ期間51の詳細は、後述する。
ホスト側コントローラ14は、CPU11の指示に応じて、ホスト装置10による半導体記憶装置20に対するアクセスを制御する。ホスト側コントローラ14は、アクセス制御部141と、レイテンシ生成部142と、記憶部143とを備える。
アクセス制御部141は、CPU11の指示に基づくコマンドをメモリコントローラ30に送信し、送信したコマンドに対する応答を受信する。
レイテンシ生成部142は、記憶部143に格納された乱数13A及び乱数34Aから固定レイテンシ期間51を生成する。乱数34Aは、後述するように、メモリコントローラ30により生成される。
記憶部143は、乱数13Aと、乱数34Aと、対象アドレスデータ43と、固定レイテンシ期間51とを格納する。対象アドレスデータ43は、ホスト装置10の起動時にメモリコントローラ30から送信される。
{1.3.メモリコントローラ30の構成}
図3は、図1に示す半導体記憶装置20の構成を示す機能ブロック図である。図3に示すように、メモリコントローラ30は、コマンドデコーダ31と、レイテンシ取得部32と、アクセス制御部33と、乱数生成器34とを備える。
メモリコントローラ30は、ホスト側コントローラ14と接続される。図3において、メモリコントローラ30におけるホスト装置10とのインタフェース回路(ホストI/F)及び半導体メモリ40とのインタフェース回路(メモリI/F)の表示を省略している。
コマンドデコーダ31は、ホスト側コントローラ14から送信されるコマンドを取得し、取得したコマンドをデコードする。例えば、コマンドデコーダ31は、読み出しコマンドを受信した場合、読み出しコマンドに含まれるアドレスを抽出し、読み出し指示及び抽出したアドレスをアクセス制御部33に出力する。以下、読み出しコマンドに含まれるアドレスを「読み出しアドレス」と記載する。
レイテンシ取得部32は、固定レイテンシ期間51を取得する。レイテンシ取得部32は、レジスタ321と、レジスタ322と、レイテンシ生成部323とを備える。
レジスタ321は、乱数生成器13(図2参照)により生成された乱数13Aを格納する。レジスタ322は、乱数生成器34により生成された乱数34Aを格納する。レイテンシ生成部323は、レジスタ321に格納された乱数13Aとレジスタ322に格納された乱数34Aから固定レイテンシ期間51を生成する。レイテンシ生成部323により生成される固定レイテンシ期間51は、図2に示すホスト装置10のレイテンシ生成部142により生成される固定レイテンシ期間51と同じである。
アクセス制御部33は、ホスト装置10からの読み出しコマンドに応じて、半導体メモリ40からデータを読み出し、読み出されたデータをホスト側コントローラ14に送信する。アクセス制御部33は、判断部331と、読み出し制御部332と、送信制御部333とを備える。
判断部331は、対象アドレスデータ43を用いて、読み出しアドレスが固定レイテンシ処理の対象であるか否かを判断する。対象アドレスデータ43には、固定レイテンシ処理の対象となる半導体メモリ40のアドレスが登録されている。読み出しアドレスが対象アドレスデータ43に登録されたアドレスに一致する場合、判断部331は、固定レイテンシ処理の実行を決定する。読み出しアドレスが対象アドレスデータ43に登録されたアドレスに一致しない場合、判断部331は、可変レイテンシ処理の実行を決定する。可変レイテンシ処理は、通常の読み出し処理と同じである。
読み出し制御部332は、半導体メモリ40からのデータの読み出しを制御する。読み出し制御部332は、読み出しアドレスを含むアクセス制御信号を送信して、半導体メモリ40にデータの読み出しを指示する。
読み出し制御部332は、アクセス制御信号に応じて半導体メモリ40から読み出されたデータを送信制御部333に出力する。以下、読み出しコマンドに応じて半導体メモリ40から読み出されたデータを、「読み出しデータ52」と記載する。また、読み出し制御部332は、メモリコントローラ30の起動時に、半導体メモリ40から対象アドレスデータ43を読み出す。読み出された対象アドレスデータ43は、判断部331及び送信制御部333に出力される。
送信制御部333は、判断部331による判断結果に基づいて、固定レイテンシ処理及び可変レイテンシ処理のいずれかを実行する。可変レイテンシ処理において、送信制御部333は、半導体メモリ40から出力されるレイテンシ信号54に応じて、ホスト装置10への読み出しデータ52の送信を開始する。レイテンシ信号54は、半導体メモリ40からのデータの読み出しが可能になったことを通知する信号である。可変レイテンシ処理では、固定レイテンシ期間51は用いられない。
一方、固定レイテンシ処理において、送信制御部333は、読み出しコマンドを受信してから固定レイテンシ期間51を経過するまで待機した後に、読み出しデータ52を送信する。固定レイテンシ期間51は、読み出し制御部332が半導体メモリ40に読み出しアドレスのデータの読み出しを指示してから、半導体メモリ40からのデータの読み出しが可能となるまでの期間よりも長い期間に設定される。例えば、ページP−3(図4参照)のアドレスのデータをホスト装置10に送信する場合において、ページP−3のアドレスのデータの送信タイミングは、可変レイテンシ処理の実行時よりも、固定レイテンシ処理の実行時の方が遅くなる。
乱数生成器34は、乱数34A〜34Cを生成する。乱数34A及び34Cは、固定レイテンシ期間51の決定に用いられる。乱数34Bは、後述する隠蔽信号の送信に用いられる。乱数34A〜34Cの生成タイミングは、それぞれ異なる。乱数生成器34が真性乱数を生成するため、乱数34A〜34Cは、互いに異なる値を有する。
{1.4.半導体メモリ40の構成}
図4は、図1に示す半導体メモリ40の構成を示す機能ブロック図である。図4に示すように、半導体メモリ40は、1枚のダイで構成される。ダイは、J個のブロックを含む。ブロックは、N個のページを含む。J及びNは、いずれも1以上の自然数である。ブロックは、半導体メモリ40におけるデータの消去単位である。ページは、半導体メモリ40におけるデータの読み出し単位及び書き込み単位である。
半導体メモリ40において、ブロック40Bは、ページP−1,P−2,・・・,P−Nにより構成される。対象アドレスデータ43が、ページP−1に格納される。プログラム41A〜41Cが、ページP−2〜P−4に格納される。プログラム41A〜41Cは、図1に示すプログラム41を構成する。プログラム41A〜41Cは、プログラム41をページに格納可能なデータサイズで区分することにより生成される。従って、プログラム41A〜41Cを個別に実行することはできない。コンテンツデータ42が、ページP−Nに格納される。
{2.メモリシステムの動作}
以下、メモリシステム100において実行される、固定レイテンシ期間51の決定、可変レイテンシ処理、固定レイテンシ処理、固定レイテンシ期間51の更新についてそれぞれ説明する。なお、以下の説明において、メモリコントローラ30において実行される論理アドレスから物理アドレスへの変換処理についての説明を省略する。
{2.1.固定レイテンシ期間51の決定}
図5は、固定レイテンシ期間51を決定するときにおけるホスト装置10及びメモリコントローラ30の動作を示すシーケンス図である。
なお、初期状態として、固定レイテンシ期間51を決定するための基準時間が予めホスト装置10及びメモリコントローラ30に設定されている。基準時間は、メモリコントローラ30が半導体メモリ40にデータの読み出しを指示してから半導体メモリ40により出力されるレイテンシ信号54を受け付けるまでに要する最大時間である。つまり、基準時間は、半導体メモリ40からのデータの読み出しに要する最大時間に相当する。最大時間は、半導体メモリ40にデータの読み出しを指示してからレイテンシ信号54を受け付けるまでの時間を前もって計測することにより取得される。あるいは、最大時間は、半導体メモリ40の仕様に応じて定められてもよい。
基準時間は、半導体メモリ40の所定領域に記録されていてもよい。この場合、ホスト装置10は、起動時にメモリコントローラ30を介して基準時間を取得する。
図5に示すシーケンス図は、ホスト装置10の電源がオンされたときに開始される。最初に、ホスト装置10の動作を説明する。ホスト装置10の電源がオンされた場合、CPU11は、乱数生成器13に乱数13Aの生成を指示する。乱数生成器13は、CPU11の指示に応じて、真性乱数である乱数13Aを生成する(ステップS111)。生成された乱数13Aは、CPU11及びホスト側コントローラ14へ出力される。
ホスト側コントローラ14において、アクセス制御部141は、乱数生成器13から入力された乱数13Aを記憶部143に格納する(ステップS112)。
CPU11は、乱数交換コマンドを生成する(ステップS113)。CPU11は、乱数生成器13から供給された乱数13Aを乱数交換コマンドにセットする。乱数交換コマンドは、乱数13Aをメモリコントローラ30へ送信し、乱数34A及び対象アドレスデータ43の送信を要求するコマンドである。
アクセス制御部141は、乱数13Aがセットされた乱数交換コマンドをCPU11から取得する。ホスト側コントローラ14は、取得した乱数交換コマンドをメモリコントローラ30へ送信する(ステップS114)。アクセス制御部141は、乱数交換コマンドの応答を受信するまで待機する。
次に、メモリコントローラ30の動作について説明する。メモリコントローラ30は、ホスト装置10の電源オンに応じて起動する。メモリコントローラ30において、乱数生成器34は、乱数34Aを生成する(ステップS211)。乱数生成器34は、乱数生成器13と同様に、真性乱数を生成する。従って、メモリシステム100の起動直後に生成される乱数13A及び34Aは、互いに異なる値である。
乱数生成器34は、生成した乱数34Aをレジスタ322及び送信制御部333に出力する。レジスタ322は、出力された乱数34Aを格納する(ステップS212)。
メモリコントローラ30は、ステップS114によりホスト側コントローラ14から送信された乱数交換コマンドを受信する。メモリコントローラ30は、受信した乱数交換コマンドにセットされた乱数13Aをレジスタ321に格納する(ステップS213)。具体的には、コマンドデコーダ31は、受信した乱数交換コマンドをデコードして、ホスト装置10が乱数の交換を要求していると判断する。コマンドデコーダ31は、乱数交換コマンドにセットされた乱数13Aを抽出してレジスタ321に出力する。レジスタ321は、コマンドデコーダ31から出力された乱数13Aを記憶する。
コマンドデコーダ31は、乱数交換コマンドを受信したことを読み出し制御部332及び送信制御部333に通知する。読み出し制御部332は、コマンドデコーダ31からの通知を受けて、半導体メモリ40から対象アドレスデータ43を読み出す(ステップS214)。
送信制御部333は、コマンドデコーダ31からの通知に応じて、対象アドレスデータ43を読み出し制御部332から取得し、乱数34Aを乱数生成器34から取得する。送信制御部333は、取得した乱数34A及び対象アドレスデータ43を乱数交換コマンドの応答としてホスト装置10に送信する(ステップS215)。
レイテンシ取得部32は、固定レイテンシ期間51を生成する(ステップS216)。具体的には、レイテンシ生成部323が、予め設定されたアルゴリズムを用いて、レジスタ321に記憶された乱数13Aとレジスタ322に記憶された乱数34Aから、基準時間よりも長い固定レイテンシ期間51を計算する。なお、基準時間よりも短い固定レイテンシ期間51が計算された場合については、後述する。
計算に用いられるアルゴリズムは、特に限定されない。例えば、擬似乱数生成アルゴリズム、HMAC(Hash-based Message Authentication Code)などが用いられる。
基準時間よりも短い固定レイテンシ期間51が計算された場合、固定レイテンシ期間51を再び生成すればよい。この場合、ホスト装置10は、乱数生成器13により生成された新たな乱数を含む乱数交換コマンドを送信する。メモリコントローラ30は、乱数交換コマンドを受信した場合、乱数生成器34により生成された新たな乱数をホスト装置10に送信する。レイテンシ生成部142及び323は、生成された2つの新たな乱数から、固定レイテンシ期間51を生成する。以下、基準時間より長い固定レイテンシ期間51が計算されるまで、ホスト装置10及びメモリコントローラ30は、固定レイテンシ期間51の再生成を繰り返せばよい。
レイテンシ生成部323が、決定された固定レイテンシ期間51を送信制御部333に出力する。送信制御部333は、レイテンシ生成部323から出力された固定レイテンシ期間51を保持する。これにより、メモリコントローラ30の起動時における処理が終了する。
ホスト装置10において、アクセス制御部141は、乱数交換コマンドの応答として乱数34A及び対象アドレスデータ43を受信する。アクセス制御部141は、受信した乱数34A及び対象アドレスデータ43を記憶部143に格納する(ステップS115)。
レイテンシ生成部142は、記憶部143に記憶された乱数13A及び34Aから固定レイテンシ期間51を生成する(ステップS116)。レイテンシ生成部142が固定レイテンシ期間51の生成に用いるアルゴリズムは、メモリコントローラ30のレイテンシ生成部323が用いるアルゴリズムと同じである。従って、レイテンシ生成部142により生成される固定レイテンシ期間51は、メモリコントローラ30のレイテンシ生成部323により生成される固定レイテンシ期間51と同一である。
{2.2.可変レイテンシ処理}
メモリコントローラ30は、ホスト装置10から対象アドレスデータ43に登録されていないアドレスを含む読み出しコマンドを受信した場合、可変レイテンシ処理を実行して、読み出しコマンドに含まれるアドレスのデータを送信する。
以下、対象アドレスデータ43に登録されたアドレスを「対象アドレス」と記載し、対象アドレスデータ43に登録されていないアドレスを「通常アドレス」と記載する。
図6は、ホスト装置10が読み出しアドレスとして通常アドレスを含む読み出しコマンドを送信する場合における、ホスト装置10及びメモリコントローラ30の動作を示すシーケンス図である。
図6に示すように、ホスト装置10は、ステップS311〜S314を実行して、通常アドレスを含む読み出しコマンドをメモリコントローラ30に送信する。具体的には、CPU11は、読み出しコマンドを生成し、生成した読み出しコマンドに読み出しアドレスをセットする。図6に示す例では、セットされる読み出しアドレスは、通常アドレスである。これにより、通常アドレスを含む読み出しコマンドが生成される(ステップS311)。
CPU11は、生成した読み出しコマンドをアクセス制御部141に出力する。アクセス制御部141は、読み出しコマンドに含まれる読み出しアドレスを、対象アドレスデータ43に登録されたアドレスと比較する(ステップS312)。
図6に示す例では、読み出しアドレスとして通常アドレスが読み出しコマンドにセットされているので、読み出しコマンドに含まれる読み出しアドレスは、対象アドレスデータ43に登録されたアドレスに一致しない。このため、アクセス制御部141は、読み出しコマンドをメモリコントローラ30に送信した場合、メモリコントローラ30が可変レイテンシ処理を実行すると判断する。アクセス制御部141は、読み出しコマンドの送信後に、可変レイテンシ処理用のアクセス制御を開始することを決定する(ステップS313)。
アクセス制御部141は、ステップS311で生成された読み出しコマンドをメモリコントローラ30へ送信する(ステップS314)。アクセス制御部141は、メモリコントローラ30からレディ信号を受信するまで待機することにより、可変レイテンシ処理用のアクセス制御を開始する。
メモリコントローラ30において、コマンドデコーダ31は、ステップS314によりホスト装置10から送信された読み出しコマンドを受信する。コマンドデコーダ31は、受信した読み出しコマンドをデコードする。その結果、コマンドデコーダ31は、ホスト装置10により読み出しが指示されたと判断し、受信した読み出しコマンドから読み出しアドレスを抽出する(ステップS411)。
コマンドデコーダ31は、デコード結果(読み出し指示及び抽出した読み出しアドレス)を判断部331及び読み出し制御部332に出力する。判断部331は、コマンドデコーダ31から取得した読み出しアドレスを対象アドレスデータ43に登録されたアドレスと比較する(ステップS412)。図6に示す例では、読み出しアドレスとして通常アドレスが読み出しコマンドにセットされているので、取得した読み出しアドレスは、対象アドレスデータ43に登録されたアドレスに一致しない。このため、判断部331は、可変レイテンシ処理の実行を決定する(ステップS413)。
送信制御部333は、判断部331の決定に基づいて、可変レイテンシ処理を開始する。具体的には、送信制御部333は、ホスト装置10に対するビジー信号の送信を開始する(ステップS414)。ビジー信号の送信は、半導体メモリ40から出力されるレイテンシ信号54を送信制御部333が検出するまで継続される。
読み出し制御部332は、読み出しアドレスを含むアクセス制御信号を半導体メモリ40に出力して、読み出しアドレスのデータの読み出しを指示する(ステップS415)。読み出し制御部332は、アクセス制御信号の送信後、レイテンシ信号54の受信待機状態に移行する。
半導体メモリ40は、読み出し制御部332から送信されたアクセス制御信号に基づいて、読み出しアドレスのデータの読み出し準備を開始する。読み出し準備が完了した場合、半導体メモリ40は、レイテンシ信号54を読み出し制御部332及び送信制御部333に出力して、読み出しアドレスのデータの出力が可能になったことを通知する。
送信制御部333は、半導体メモリ40から送信されたレイテンシ信号54を検出する(ステップS416)。送信制御部333は、検出したレイテンシ信号54に基づいて、レディ信号をホスト装置10へ送信する(ステップS417)。
半導体メモリ40は、レイテンシ信号54の出力後に、読み出しアドレスのデータ(読み出しデータ52)の出力を開始する。送信制御部333は、読み出し制御部332を介して、読み出しデータ52を読み出す。送信制御部333は、読み出しデータ52をレディ信号の後に続けてホスト装置10へ送信する(ステップS418)。
ホスト装置10において、アクセス制御部141は、レディ信号を検出した場合、読み出しデータ52の送信が開始されると判断する。アクセス制御部141は、レディ信号の後に続けて送信されるデータを読み出しデータ52として受信する。CPU11は、アクセス制御部141が受信した読み出しデータ52を用いた処理を実行する。
図7は、可変レイテンシ処理が実行される場合における読み出しデータ52の送信タイミングを示す図である。図7に示すように、メモリコントローラ30は、読み出しアドレスが対象アドレスデータ43に登録されたアドレスのいずれかに一致しないと判断した場合、読み出しコマンドの受信直後からビジー信号の送信を開始する。ビジー信号の送信は、半導体メモリ40からのレイテンシ信号54が検出されるまで継続する。そして、レイテンシ信号54が検出された場合、メモリコントローラ30は、ビジー信号に代えてレディ信号を送信し、レディ信号の後に続けて読み出しデータ52を送信する。
レイテンシ信号54は、半導体メモリ40における読み出し準備が完了したときに出力される。しかし、読み出し準備に要する時間は、半導体メモリ40の性能及び読み出しアドレス等によって変動するため、ビジー信号の送信期間Tbは、一定とならない。このため、ホスト装置10は、メモリコントローラ30が可変レイテンシ処理を実行する場合、レディ信号を受信するまで待機する。ホスト装置10は、レディ信号をトリガとして、レディ信号の後に続けて送信されるデータを読み出しデータ52として受信する。
{2.3.固定レイテンシ処理}
メモリコントローラ30は、読み出しアドレスが対象アドレスデータ43に登録されたアドレスに一致する場合、固定レイテンシ処理を実行して、読み出しデータ52を送信する。可変レイテンシ処理と異なり、固定レイテンシ処理では、読み出しデータ52の送信タイミングが、固定レイテンシ期間51に基づいて決定される。
図8は、ホスト装置10が対象アドレスを含む読み出しコマンドを送信する場合におけるホスト装置10及びメモリコントローラ30の動作を示すシーケンス図である。
ホスト装置10は、ステップS511〜S514を実行して、対象アドレスを含む読み出しコマンドをメモリコントローラ30に送信する。具体的には、CPU11は、読み出しコマンドを生成し、生成した読み出しコマンドに読み出しアドレスをセットする。図8に示す例では、読み出しアドレスは、対象アドレスである。これにより、対象アドレスを含む読み出しコマンドが生成される(ステップS511)。
CPU11は、生成した読み出しコマンドをアクセス制御部141に出力する。アクセス制御部141は、読み出しコマンドに含まれる読み出しアドレスを対象アドレスデータ43に登録されているアドレスと比較する(ステップS512)。
図8に示す例では、読み出しアドレスとして対象アドレスが読み出しコマンドにセットされるので、読み出しアドレスは、対象アドレスデータ43に登録されたいずれかのアドレスと一致する。このため、アクセス制御部141は、ステップS511で生成された読み出しコマンドを送信した場合、メモリコントローラ30が固定レイテンシ処理を実行すると判断する。アクセス制御部141は、読み出しコマンドの送信後に、固定レイテンシ処理用のアクセス制御を開始することを決定する(ステップS513)。
アクセス制御部141は、ステップS511で生成された読み出しコマンドをメモリコントローラ30へ送信する(ステップS514)。アクセス制御部141は、読み出しコマンドを送信してから固定レイテンシ期間51を経過するまで待機する(ステップS515)。アクセス制御部141は、固定レイテンシ期間51を経過するまでの間、メモリコントローラ30から隠蔽信号を受信する。後述するように、隠蔽信号は、ランダムなデータであるため、アクセス制御部141は、読み出しデータ52の受信タイミングを特定する際に、隠蔽信号を利用せず、固定レイテンシ期間51を利用する。
メモリコントローラ30において、コマンドデコーダ31は、ステップS514によりホスト装置10から送信された読み出しコマンドを受信する。コマンドデコーダ31は、受信した読み出しコマンドをデコードする。その結果、コマンドデコーダ31は、ホスト装置10により読み出しが指示されたと判断し、受信した読み出しコマンドから読み出しアドレスを抽出する(ステップS611)。
コマンドデコーダ31は、デコード結果(読み出し指示及び抽出した読み出しアドレス)を判断部331及び読み出し制御部332に出力する。判断部331は、コマンドデコーダ31から取得した読み出しアドレスを、対象アドレスデータ43に登録されたアドレスと比較する(ステップS612)。図8に示す例では、読み出しアドレスとして対象アドレスが読み出しコマンドにセットされているので、取得した読み出しアドレスは、対象アドレスデータ43に登録されたいずれかのアドレスと一致する。このため、判断部331は、固定レイテンシ処理の実行を決定する(ステップS613)。
メモリコントローラ30は、ステップS614〜S616を固定レイテンシ処理として実行する。送信制御部333は、ビジー信号に代えて、隠蔽信号の送信を開始する(ステップS614)。具体的には、送信制御部333は、読み出しコマンドを受信してから固定レイテンシ期間51を経過するまで、乱数生成器34から乱数34Bを取得し続け、取得した乱数34Bを隠蔽信号として送信する。つまり、隠蔽信号は、固定レイテンシ期間51を経過するまで、乱数生成器34により生成される乱数34Bにより更新され続ける。乱数生成器34が、乱数34Bを乱数34Aの生成タイミングと異なるタイミングで生成するため、乱数34Bは、乱数34Aと異なる。隠蔽信号の送信は、読み出しコマンドを受信してから固定レイテンシ期間51を経過するまで継続される。
隠蔽信号は、ランダムな値を有する。一方、ビジー信号及びレディ信号のパターンは、予め設定されている。ビジー信号及びレディ信号に代えて隠蔽信号を送信することにより、第三者は、ビジー信号と、レディ信号と、レディ信号に続けて送信される読み出しアドレスのデータとを区別することができない。つまり、ビジー信号の送信期間及びビジー信号の値が乱数34Bにより隠蔽されることにより、読み出しデータ52の送信タイミングが隠蔽される。
次に、読み出し制御部332は、読み出しアドレスを含むアクセス制御信号を半導体メモリ40に出力して、読み出しアドレスのデータの読み出しを指示する(ステップS615)。半導体メモリ40は、読み出し制御部332から出力されたアクセス制御信号に基づいて、読み出しアドレスのデータの読み出し準備を開始する。読み出し準備が完了した場合、半導体メモリ40は、レイテンシ信号54を送信制御部333に出力して、読み出しアドレスのデータの読み出しが可能になったことを通知する。
上述のように、固定レイテンシ期間51は、基準時間よりも長い。基準時間は、半導体メモリ40にデータの読み出しを指示してから半導体メモリ40からレイテンシ信号54を受け付けるまでにかかる最大時間である。従って、固定レイテンシ処理において、送信制御部333は、読み出しコマンドを受信してから固定レイテンシ期間51を経過するまでの待機中に、レイテンシ信号54を検出する。しかし、送信制御部333は、レイテンシ信号54を検出しても読み出しデータ52の送信を開始せず、隠蔽信号の送信を継続する。
送信制御部333は、読み出しコマンドの受信を完了してから固定レイテンシ期間51を経過するタイミングで、読み出しデータ52の送信を開始する(ステップS616)。具体的には、送信制御部333は、固定レイテンシ期間51を経過するタイミングで隠蔽信号の送信を停止する。送信制御部333は、読み出し制御部332を介して読み出しデータ52を半導体メモリ40から読み出す。送信制御部333は、隠蔽信号に代えて、読み出しデータ52をホスト装置10へ送信する。
ここで、ホスト装置10の説明に戻る。上述のように、アクセス制御部141は、読み出しコマンドを送信し(ステップS514)、その後、固定レイテンシ期間51を経過するまで待機する(ステップS515)。アクセス制御部141は、待機中に受信する隠蔽信号を無視する。アクセス制御部141は、固定レイテンシ期間51を経過するタイミングで、読み出しデータ52の受信を開始する(ステップS516)。すなわち、アクセス制御部141は、固定レイテンシ期間51を経過するタイミングより後に受信するデータを、読み出しデータ52として受信する。従って、ホスト装置10は、固定レイテンシ処理用のアクセス制御を実行する際には、レディ信号の検出を行わなくてよい。
図9は、固定レイテンシ処理が実行される場合における読み出しデータ52の送信タイミングを示す図である。図9に示すように、メモリコントローラ30は、読み出しコマンドを受信してから期間Tsを経過したときに、読み出しアドレスのデータの読み出しが可能になったことを示すレイテンシ信号54を受け付ける。しかし、メモリコントローラ30は、レイテンシ信号54を無視し、固定レイテンシ期間51が経過するまで待機する。また、メモリコントローラ30は、読み出しアドレスが対象アドレスデータ43に登録されたアドレスに一致する場合、読み出しコマンドを受信してから隠蔽信号の送信を開始する。隠蔽信号は、乱数生成器34により生成される乱数34Bである。従って、第三者は、メモリコントローラ30から送信される信号を観測しても、ビジー信号及びレディ信号を検出することができない。メモリコントローラ30は、固定レイテンシ期間51が経過した場合、隠蔽信号に続けて読み出しデータ52の送信を開始するため、第三者は、読み出しデータ52の送信タイミングを特定することができず、読み出しデータ52を特定することができない。
ホスト装置10及びメモリコントローラ30は、同一の固定レイテンシ期間51を保持している。従って、ホスト装置10は、読み出しデータ52の受信タイミングを、読み出しコマンドの送信を完了したタイミングと、固定レイテンシ期間51とに基づいて特定することができる。メモリコントローラ30は、読み出しデータ52の送信タイミングを、読み出しコマンドの受信を完了したタイミングと、固定レイテンシ期間51とに基づいて特定することができる。従って、ホスト装置10は、ビジー信号及びレディ信号を用いることなく、メモリコントローラ30から送信される読み出しデータ52を特定することができる。
なお、固定レイテンシ期間51の生成時に用いられる基準時間が、レイテンシ信号54を計測することによって決定される場合、メモリコントローラ30が、固定レイテンシ期間51を経過するまでに、レイテンシ信号54を検出できない場合がある。この場合、メモリコントローラ30は、読み出しデータ52を取得できないため、読み出しデータ52をホスト装置10に送信することができない。メモリコントローラ30は、固定レイテンシ期間51を経過したタイミングで、読み出しコマンドの応答としてエラーを送信する。ホスト装置10及びメモリコントローラ30は、後述する固定レイテンシ期間51の更新処理を実行する。更新された固定レイテンシ期間51は、更新前の固定レイテンシ期間51よりも長くなることが望ましい。そして、ホスト装置10は、改めて読み出しコマンドをメモリコントローラ10に送信すればよい。
このように、メモリコントローラ30は、対象アドレスを含む読み出しコマンドを受信した場合に固定レイテンシ処理を実行する。乱数13A及び34Aから生成される固定レイテンシ期間51はランダムであるため、第三者は、固定レイテンシ期間51を特定することができない。半導体記憶装置の違法な複製品のメモリコントローラは、固定レイテンシ期間51を利用して固定レイテンシ処理を実行するメモリコントローラ30の動作を再現できない。以下、半導体記憶装置20の違法な複製品を、単に「複製品」と記載する。
例えば、図4において、プログラム41A〜41Cは、プログラム41を単純にデータサイズに基づいて区切ることにより生成される。ページP−3のアドレスが対象アドレスデータ43に登録されている場合、メモリコントローラ30は、ページP−3に格納されたプログラム41Bを、固定レイテンシ処理により送信する。一方、複製品のメモリコントローラは、第三者により固定レイテンシ期間51が特定されていないため、プログラム41Bを固定レイテンシ処理によりホスト装置10に送信することができない。複製品がホスト装置10に接続されている場合、ホスト装置10は、プログラム41を再構成できないため、プログラム41を利用することが不可能となる。このように、第三者は、ホスト装置10が利用可能な複製品を製造することができない。また、メモリコントローラ30が、乱数34Bを用いてビジー信号及びレディ信号を隠蔽するため、第三者は、固定レイテンシ処理によりホスト装置10に送信される読み出しデータ52を特定することができない。従って、第三者は、半導体メモリ40に記録された対象アドレスのデータを複製することができない。
次に、対象アドレスデータ43に登録されるアドレスについて説明する。対象アドレスデータ43に登録されるアドレスは、半導体メモリ40の全ページのアドレスであってもよいし、一部のアドレスであってもよい。一部のアドレスが対象アドレスデータ43に登録される場合、登録されるアドレスは、ホスト装置10によって少なくとも1回は読み出されるデータのアドレスであることが望ましい。例えば、ホスト装置10のブートコードを格納するページのアドレスなど、ホスト装置10が半導体メモリ40に必ずアクセスする領域のアドレスを登録すればよい。あるいは、ホスト装置10のアクセス頻度が高い領域のアドレスを登録してもよい。
{2.4.固定レイテンシ期間51の更新}
メモリコントローラ30が固定レイテンシ処理により読み出しデータ52を送信した後に、ホスト装置10及びメモリコントローラ30は、固定レイテンシ期間51を更新する。固定レイテンシ期間51を更新する処理は、図5に示す固定レイテンシ期間51を決定する流れと同じである。ただし、固定レイテンシ期間51を更新する場合、図5に示す処理において、ホスト装置10は、乱数13Aと異なる乱数13Bを生成して記憶部143に格納する(ステップS111,S112)。乱数13Bがセットされた乱数交換コマンドがメモリコントローラ30に送信される(ステップS114)。メモリコントローラ30は、乱数34A及び34Bと異なる乱数34Cを生成し(ステップS211)、乱数34Cを乱数交換コマンドの応答として送信する(ステップS215)。この結果、ホスト装置10及びメモリコントローラ30において、起動時に生成された固定レイテンシ期間51と異なる固定レイテンシ期間51が生成される。ホスト装置10は、新たな固定レイテンシ期間51が生成された後に(ステップS116、図5参照)、次の読み出しコマンドを生成して送信する。
例えば、固定レイテンシ期間51の更新は、メモリコントローラ30においては、対象アドレスのデータを送信してから、次の読み出しコマンドを受け付けるまでの間に実行される。ホスト装置10においては、固定レイテンシ期間51の更新は、対象アドレスのデータを受信してから、次の読み出しコマンドを生成するまでの間に実行される。すなわち、ホスト装置10及びメモリコントローラ30は、対象アドレスのデータの読み出し処理が完了してから、予め設定された期間内に更新する。固定レイテンシ期間51を更新するタイミングを揃えることにより、ホスト装置10及びメモリコントローラ30は、同一の固定レイテンシ期間51を保持することができる。
乱数生成器13及び34は真性乱数を生成するため、乱数生成器13及び34により生成される乱数に再現性がない。つまり、固定レイテンシ期間51の更新に用いられる乱数13B及び34Cは、乱数13A,34A及び34Bとそれぞれ異なる。更新後の固定レイテンシ期間51は、更新前の固定レイテンシ期間51と関係なく決定されるため、第三者は、更新後の固定レイテンシ期間を予測することができない。仮に、第三者が、メモリコントローラ30から出力される隠蔽信号を観測して隠蔽信号の長さ(固定レイテンシ期間51)を特定できたとしても、固定レイテンシ期間51は更新される。特定された固定レイテンシ期間51は、次の対象アドレスのデータの読み出しの際には使用されない。従って、第三者は、固定レイテンシ期間51を特定できたとしても、更新後の固定レイテンシ期間51を特定することができない。従って、第三者は、次の対象アドレスのデータを特定することができない。
このように、本実施の形態に係るメモリシステム100において、ホスト装置10及びメモリコントローラ30は、同一の固定レイテンシ期間51をそれぞれ保持する。メモリコントローラ30は、対象アドレスを含む読み出しコマンドをホスト装置10から受信した場合、固定レイテンシ期間51に基づいて決定されるタイミングで対象アドレスのデータの送信を開始し、ホスト装置10は、固定レイテンシ期間51に基づいて決定されるタイミングで対象アドレスのデータの受信を開始する。第三者は、固定レイテンシ期間51を特定することができないため、固定レイテンシ期間51に基づいて対象アドレスのデータの送信タイミングを決定するメモリコントローラ30の動作を再現することができない。従って、第三者は、ホスト装置10が利用可能な半導体記憶装置20の違法な複製品を製造することができない。
また、固定レイテンシ期間51が乱数34Bにより隠蔽されるため、第三者が読み出しデータ52を特定することが困難となり、耐タンパ性を向上させることができる。また、固定レイテンシ期間51が更新されることにより、第三者が読み出しデータ52を特定することがさらに困難となるため、耐タンパ性をさらに向上させることができる。
{変形例1}
上記実施の形態において、ホスト装置10が、固定レイテンシ処理用のアクセス制御を実行する際に、固定レイテンシ期間51に受信する隠蔽信号を無視する例を説明したが、これに限られない。ホスト装置10は、固定レイテンシ期間51を経過するまでの間に受信する信号を監視することにより、半導体記憶装置20が違法な複製品であるか否かを判断してもよい。
図10は、ホスト装置10が対象アドレスを含む読み出しコマンドを送信した場合において、複製品のメモリコントローラ30が読み出しデータ52を送信するタイミングを示す図である。ホスト装置10は、対象アドレスを含む読み出しコマンドを送信する場合、レディ信号の受信タイミングを予め特定することができる。具体的には、ホスト装置10は、レディ信号の受信タイミングが固定レイテンシ期間51の終了直前であると判断する。
複製品のメモリコントローラは、固定レイテンシ処理を実行することができない。従って、複製品のメモリコントローラは、対象アドレスを含む読み出しコマンドをホスト装置10から受信した場合、固定レイテンシ処理でなく、通常の読み出し処理(可変レイテンシ処理)により読み出しデータ52を送信する。例えば、複製品のメモリコントローラは、時刻Td1にレイテンシ信号54を検出した場合、固定レイテンシ期間51を経過する前の時刻Td1にレディ信号を送信する。あるいは、複製品のメモリコントローラは、固定レイテンシ期間51を経過した後にレディ信号を検出した場合、固定レイテンシ期間51の経過後にレディ信号を送信する。
この結果、ホスト装置10は、予め特定した受信タイミングと異なるタイミングでレディ信号を複製品のメモリコントローラから受信するため、レディ信号を送信する半導体記憶装置20が複製品であると判断することができる。
{変形例2}
上記実施の形態では、メモリコントローラ30が、対象アドレスデータ43を参照して、読み出しアドレスが対象アドレスに一致するか否かを判断する例を説明したが、これに限られない。
ホスト装置10が、可変レイテンシ処理及び固定レイテンシ処理のいずれかを一方の実行を指示する指示フラグを含む読み出しコマンドを生成してもよい。読み出しコマンドにおいて、指示フラグが読み出しアドレスの後に付加される。例えば、可変レイテンシ処理を指示するフラグが“00”に設定され、固定レイテンシ処理を指示するフラグが“01”に設定される。メモリコントローラ30は、指示フラグの値に応じて、可変レイテンシ処理又は固定レイテンシ処理の実行を決定する。この場合、メモリコントローラ30は、読み出しアドレスを対象アドレスデータ43に登録されたアドレスと比較する処理(ステップS412,S612)を実行しなくてもよい。
また、ホスト装置10及びメモリコントローラ30は、固定レイテンシ期間51の長さに基づいて、固定レイテンシ処理を実行するか否かを判断してもよい。この場合、ホスト装置10及びメモリコントローラ30には、固定レイテンシ期間51との比較に用いられる閾値が設定される。
ホスト装置10及びメモリコントローラ30は、図5に示す処理により固定レイテンシ期間51を生成した場合、固定レイテンシ期間51を閾値と比較する。固定レイテンシ期間51が閾値より長い場合、ホスト装置10は、固定レイテンシ処理用のアクセス制御を実行し、メモリコントローラ30は、固定レイテンシ処理を実行する。ホスト装置10が読み出しデータ52を受信した後に、固定レイテンシ期間51が、ホスト装置10及びメモリコントローラ30において更新され、再び閾値と比較される。
一方、生成された固定レイテンシ期間51が閾値以下である場合、ホスト装置10は、可変レイテンシ処理用のアクセス制御を実行し、メモリコントローラ30は、可変レイテンシ処理を実行する。ホスト装置10が読み出しデータ52を受信した後に、固定レイテンシ期間51が、ホスト装置10及びメモリコントローラ30において更新され、再び閾値と比較される。
{変形例3}
上記実施の形態では、メモリコントローラ30が、固定レイテンシ処理を実行する場合、読み出しコマンドを受信してから固定レイテンシ期間51を経過するまで読み出しデータ52の送信を待機する例を説明したが、これに限られない。
メモリコントローラ30は、レイテンシ信号54を検出してから固定レイテンシ期間51を経過するまで、読み出しデータ52の送信を待機してもよい。図11は、読み出しデータ52の送信タイミングの他の例を示す図である。
図11に示すように、メモリコントローラ30は、読み出しコマンドを受信した後に、隠蔽信号でなく、ビジー信号の送信を開始する。この理由については後述する。メモリコントローラ30は、レイテンシ信号54を検出した場合、ビジー信号に変えてレディ信号を送信する。そして、メモリコントローラ30は、レディ信号の後に続けて隠蔽信号の送信を開始する。
ホスト装置10は、レディ信号を固定レイテンシ期間51の開始時刻と判断し、レディ信号を受信してから固定レイテンシ期間51を経過するまで待機する。メモリコントローラ30は、レディ信号を送信してから固定レイテンシ期間51を経過した後に、読み出しデータ52の送信を開始する。つまり、メモリコントローラ30は、固定レイテンシ期間51の開始時刻を通知するために、ビジー信号及びレディ信号を利用する。この場合であっても、読み出しデータ52の送信タイミングを隠蔽することが可能となる。
{その他の変形例}
上記実施の形態において、メモリコントローラ30が、読み出しコマンドを受信してから固定レイテンシ期間51を経過するまでの間、隠蔽信号を送信する例を説明したが、これに限られない。メモリコントローラ30は、読み出しコマンドの受信を完了してから固定レイテンシ期間51を経過するまでの間、隠蔽信号に代えてビジー信号及びレディ信号を送信してもよい。この場合であっても、対象アドレスのデータの送信タイミングが固定レイテンシ期間51に基づいて決定される。第三者は、固定レイテンシ期間51を特定できないため、複製品のコントローラは、レディ信号を固定レイテンシ期間51に基づいて定められるタイミングで送信することができない。このように、隠蔽信号を使用しなくても、複製品の製造を困難とすることができる。
上記実施の形態において、ホスト装置10及びメモリコントローラ30が固定レイテンシ期間51をそれぞれ生成する例を説明したが、これに限られない。ホスト装置10及びメモリコントローラ30が、同一の固定レイテンシ期間51を保持していればよい。
例えば、ホスト装置10のみが、固定レイテンシ期間51を生成するようにしてもよい。この場合、固定レイテンシ期間51は、乱数13Aのみから生成される。ホスト装置10は、乱数交換コマンドに代えて、生成した固定レイテンシ期間51をメモリコントローラ50に送信すればよい。逆に、メモリコントローラ30のみが、固定レイテンシ期間51を生成し、生成した固定レイテンシ期間51をホスト装置10に送信してもよい。
また、ホスト装置10及びメモリコントローラに固定レイテンシ期間51の初期値が予め設定されていてもよい。あるいは、固定レイテンシ期間51の初期値がホスト装置10のみに予め設定されてもよい。この場合、ホスト装置10が、起動時に固定レイテンシ期間51をメモリコントローラ30に送信してもよい。
また、上記実施の形態において、ホスト装置10及びメモリコントローラ30が固定レイテンシ期間51を生成する際に乱数を交換する例を説明したが、これに限られない。乱数生成器13及び34が、同一のアルゴリズムを利用する擬似乱数生成器である場合、乱数の交換を省略することができる。具体的には、乱数生成器13及び34の両者は、予め設定されたタイミングで生成する乱数を更新することにより、同一の擬似乱数を生成する。これにより、ホスト装置10とメモリコントローラ30とが乱数を交換しなくてもよいため、固定レイテンシ期間51の秘匿性を向上させることができる。乱数を更新するタイミングは、例えば、読み出しコマンドに基づく読み出し処理が所定の回数行われたときや、ホスト装置10が乱数の更新を指示するコマンドを送信するときなどが考えられる。
このように、ホスト装置10とメモリコントローラ30との間で、固定レイテンシ期間51又は固定レイテンシ期間51の生成に用いられる乱数が送受信されないようにすることにより、第三者が、固定レイテンシ期間51又は固定レイテンシ期間51に関するデータを特定することがさらに困難となるため、複製品を製造することをさらに困難にさせることができる。
なお、上記の擬似乱数の利用は、乱数の交換を制限するものではない。例えば、乱数生成器13及び34が異なるアルゴリズムを用いて擬似乱数を生成してもよい。この場合、乱数生成器13及び34がそれぞれ生成した擬似乱数の交換が行われる。
また、上記実施の形態において、固定レイテンシ処理が実行されるたびに、固定レイテンシ期間51が更新される例を説明したが、ホスト装置10及びメモリコントローラ30は、固定レイテンシ期間51を更新しなくてもよい。
また、上記実施の形態で説明したメモリコントローラ30の一部又は全部は、集積回路(例えば、LSI、システムLSI等)として実現されるものであってもよい。
また、上記実施の形態における各処理の一部又は全部をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。