(57)【特許請求の範囲】
【請求項１】
ホスト装置からの要求に応じて半導体メモリにアクセスするメモリコントローラであって、
前記ホスト装置から受信した読み出しコマンドに含まれるアドレスに基づいて、前記アドレスのデータの読み出しを前記半導体メモリに指示する読み出し制御部と、
前記アドレスのデータの送信タイミングの決定に用いられ、前記ホスト装置により保持されるレイテンシ期間と同一の固定レイテンシ期間を取得するレイテンシ取得部と、
前記固定レイテンシ期間に基づいて定められるタイミングで前記アドレスのデータを前記ホスト装置に送信する送信制御部と、
を備えるメモリコントローラ。
【請求項２】
請求項１に記載のメモリコントローラであって、
前記送信制御部は、所定のタイミングから前記固定レイテンシ期間を経過するまでに前記読み出しコマンドに含まれるアドレスのデータの出力が可能となったことが前記半導体メモリから通知された場合、前記固定レイテンシ期間を経過したタイミングで前記アドレスのデータを送信するメモリコントローラ。
【請求項３】
請求項１又は２に記載のメモリコントローラであって、
前記送信制御部は、前記アドレスのデータの送信が開始されるまでに送信されるビジー信号を隠蔽するメモリコントローラ。
【請求項４】
請求項３に記載のメモリコントローラであって、
前記送信制御部は、前記ビジー信号の送信期間及び前記ビジー信号の値の少なくとも一方を隠蔽するメモリコントローラ。
【請求項５】
請求項４に記載のメモリコントローラであって、さらに、
乱数を生成する乱数生成器、
を備え、
前記送信制御部は、前記乱数生成器により生成される乱数を用いて前記ビジー信号の送信期間及び前記ビジー信号の値の少なくとも一方を隠蔽するメモリコントローラ。
【請求項６】
請求項１ないし請求項５のいずれかに記載のメモリコントローラであって、
前記レイテンシ取得部は、所定の条件が満たされた場合、前記固定レイテンシ期間を更新するメモリコントローラ。
【請求項７】
請求項６に記載のメモリコントローラであって、
前記レイテンシ取得部は、前記送信制御部により前記アドレスのデータが送信された後に、前記固定レイテンシ期間を更新するメモリコントローラ。
【請求項８】
請求項１ないし請求項７のいずれかに記載のメモリコントローラであって、さらに、
前記アドレスのデータを前記固定レイテンシ期間に基づいて定められるタイミングで送信するか、前記読み出し制御部が前記アドレスのデータを読み出すことが可能となったときに送信するかを判断する判断部、
を備えるメモリコントローラ。
【請求項９】
請求項１に記載のメモリコントローラであって、
前記レイテンシ取得部は、
乱数を生成する乱数生成器と、
所定のアルゴリズムを用いて、前記乱数生成器により生成された乱数から前記固定レイテンシ期間を生成するレイテンシ生成部と、
を含むメモリコントローラ。
【請求項１０】
請求項１に記載のメモリコントローラであって、
前記レイテンシ取得部は、前記ホスト装置により生成された固定レイテンシ期間を取得するメモリコントローラ。
【請求項１１】
ホスト装置と、
半導体メモリと、
前記ホスト装置からの要求に応じて前記半導体メモリにアクセスするメモリコントローラと、
を備え、
前記メモリコントローラは、
前記ホスト装置から受信した読み出しコマンドに含まれるアドレスに基づいて、前記アドレスのデータの読み出しを前記半導体メモリに指示する読み出し制御部と、
前記アドレスのデータの送信タイミングの決定に用いられる固定レイテンシ期間を取得するレイテンシ取得部と、
前記固定レイテンシ期間に基づいて定められるタイミングで前記アドレスのデータを前記ホスト装置に送信する送信制御部と、
を備え、
前記ホスト装置は、
前記固定レイテンシ期間を記憶する記憶部と、
前記固定レイテンシ期間に基づいて定められるタイミングで前記アドレスのデータを前記メモリコントローラから受信するアクセス制御部と、
を備えるメモリシステム。
【請求項１２】
請求項１１に記載のメモリシステムであって、
前記アクセス制御部は、前記アドレスのデータを受信してから予め設定された期間を経過するまでに、前記固定レイテンシ期間を更新し、
前記送信制御部は、前記アドレスのデータを送信してから予め設定された期間を経過するまでに、前記固定レイテンシ期間を更新するメモリシステム。
【請求項１３】
請求項１１又は請求項１２に記載のメモリシステムであって、
前記メモリコントローラは、さらに、
第１乱数を生成する第１乱数生成器、
を備え、
前記ホスト装置は、さらに、
第２乱数を生成する第２乱数生成器、
を備え、
前記レイテンシ取得部及び前記アクセス制御部の各々は、所定のアルゴリズムを用いて、前記第１乱数と前記第２乱数から前記固定レイテンシ期間を生成するメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト装置からの要求に応じて半導体メモリにアクセスするメモリコントローラに関する。
【背景技術】
【０００２】
半導体記憶装置は、メモリコントローラと、ＮＡＮＤフラッシュメモリなどの半導体メモリとを備える。メモリコントローラは、データの読み出し指示、あるいはデータの書き込み指示等をホスト装置から受け付けた場合、ホスト装置の指示に応じて半導体メモリに対するアクセスを制御する。
【０００３】
半導体メモリに記憶されているコンテンツ等のデータのセキュリティを確保するために、認証や、データの暗号化などの様々な対策が従来から施されている。認証を用いる場合、ホスト装置及びメモリコントローラは、互いの正当性を確認した後に、半導体メモリに記憶されたデータの読み出しを行う。暗号化を用いる場合、メモリコントローラは、半導体メモリから読み出したデータを暗号化してホスト装置に送信する。あるいは、メモリコントローラは、データを暗号化して半導体メモリに書き込み、半導体メモリから読み出した暗号化データを復号してホスト装置に送信する。
【０００４】
特許文献１には、メモリセルから読み出したデータを外部に出力する際に、読み出したデータを暗号化する半導体メモリ装置が開示されている。半導体メモリ装置は、外部から読み出しコマンドを受け付けた場合、読み出しコマンドで指定されたアドレスのデータをメモリセルから読み出す。半導体メモリ装置は、内部に実装された論理回路を用いて、読み出したデータと、読み出しコマンドで指定されたアドレスとの排他的論理和をとることにより、読み出したデータを暗号化する。半導体メモリ装置は、暗号化されたデータを読み出しコマンドの応答として出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−２１９８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に係る半導体メモリ装置のように暗号化を用いる場合、暗号鍵が悪意のある第三者により窃取されるおそれがある。暗号鍵が窃取された場合、半導体メモリ装置に記憶されたデータのセキュリティが無効化される。また、認証によりセキュリティを確保する場合であっても、認証に用いられるパスワードなどが窃取されることにより、半導体メモリに記憶されたデータのセキュリティが無効化される。
【０００７】
第三者が半導体記憶装置のアクセスに用いられる暗号鍵やパスワードを窃取することに成功した場合、第三者は、半導体メモリに記憶されたデータを全て読み出すことが可能となるため、半導体メモリに記憶されたデータの複製を容易に作成することが可能となる。この結果、半導体記憶装置の違法な複製品が市場に流通するという問題がある。
【０００８】
本発明の目的は、半導体記憶装置の違法な複製品を製造することを困難にする技術を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、請求項１記載の発明は、ホスト装置からの要求に応じて半導体メモリにアクセスするメモリコントローラであって、前記ホスト装置から受信した読み出しコマンドに含まれるアドレスに基づいて、前記アドレスのデータの読み出しを前記半導体メモリに指示する読み出し制御部と、前記アドレスのデータの送信タイミングの決定に用いられ、前記ホスト装置により保持されるレイテンシ期間と同一の固定レイテンシ期間を取得するレイテンシ取得部と、前記固定レイテンシ期間に基づいて定められるタイミングで前記アドレスのデータを前記ホスト装置に送信する送信制御部と、を備える。
【００１０】
請求項２記載の発明は、請求項１に記載のメモリコントローラであって、前記送信制御部は、所定のタイミングから前記固定レイテンシ期間を経過するまでに前記読み出しコマンドに含まれるアドレスのデータの出力が可能となったことが前記半導体メモリから通知された場合、前記固定レイテンシ期間を経過したタイミングで前記アドレスのデータを送信する。
【００１１】
請求項３記載の発明は、請求項１又は２に記載のメモリコントローラであって、前記送信制御部は、前記アドレスのデータの送信が開始されるまでに送信されるビジー信号を隠蔽する。
【００１２】
請求項４記載の発明は、請求項３に記載のメモリコントローラであって、前記送信制御部は、前記ビジー信号の送信期間及び前記ビジー信号の値の少なくとも一方を隠蔽する。
【００１３】
請求項５記載の発明は、請求項４に記載のメモリコントローラであって、さらに、乱数を生成する乱数生成器、を備え、前記送信制御部は、前記乱数生成器により生成される乱数を用いて前記ビジー信号の送信期間及び前記ビジー信号の値の少なくとも一方を隠蔽する。
【００１４】
請求項６記載の発明は、請求項１ないし請求項５のいずれかに記載のメモリコントローラであって、前記レイテンシ取得部は、所定の条件が満たされた場合、前記固定レイテンシ期間を更新する。
【００１５】
請求項７記載の発明は、請求項６に記載のメモリコントローラであって、前記レイテンシ取得部は、前記送信制御部により前記アドレスのデータが送信された後に、前記固定レイテンシ期間を更新する。
【００１６】
請求項８記載の発明は、請求項１ないし請求項７のいずれかに記載のメモリコントローラであって、さらに、前記アドレスのデータを前記固定レイテンシ期間に基づいて定められるタイミングで送信するか、前記読み出し制御部が前記アドレスのデータを読み出すことが可能となったときに送信するかを判断する判断部、を備える。
【００１７】
請求項９記載の発明は、請求項１に記載のメモリコントローラであって、前記レイテンシ取得部は、乱数を生成する乱数生成器と、所定のアルゴリズムを用いて、前記乱数生成器により生成された乱数から前記固定レイテンシ期間を生成するレイテンシ生成部と、を含む。
【００１８】
請求項１０記載の発明は、請求項１に記載のメモリコントローラであって、前記レイテンシ取得部は、前記ホスト装置により生成された固定レイテンシ期間を取得する。
【００１９】
請求項１１記載の発明は、メモリシステムであって、ホスト装置と、半導体メモリと、前記ホスト装置からの要求に応じて前記半導体メモリにアクセスするメモリコントローラと、を備え、前記メモリコントローラは、前記ホスト装置から受信した読み出しコマンドに含まれるアドレスに基づいて、前記アドレスのデータの読み出しを前記半導体メモリに指示する読み出し制御部と、前記アドレスのデータの送信タイミングの決定に用いられる固定レイテンシ期間を取得するレイテンシ取得部と、前記固定レイテンシ期間に基づいて定められるタイミングで前記アドレスのデータを前記ホスト装置に送信する送信制御部と、を備え、前記ホスト装置は、前記固定レイテンシ期間を記憶する記憶部と、前記固定レイテンシ期間に基づいて定められるタイミングで前記アドレスのデータを前記メモリコントローラから受信するアクセス制御部と、を備える。
【００２０】
請求項１２記載の発明は、請求項１１に記載のメモリシステムであって、前記アクセス制御部は、前記アドレスのデータを受信してから予め設定された期間を経過するまでに、前記固定レイテンシ期間を更新し、前記送信制御部は、前記アドレスのデータを送信してから予め設定された期間を経過するまでに、前記固定レイテンシ期間を更新する。
【００２１】
請求項１３記載の発明は、請求項１１又は請求項１２に記載のメモリシステムであって、前記メモリコントローラは、さらに、第１乱数を生成する第１乱数生成器、を備え、前記ホスト装置は、さらに、第２乱数を生成する第２乱数生成器、を備え、前記レイテンシ取得部及び前記アクセス制御部の各々は、所定のアルゴリズムを用いて、前記第１乱数と前記第２乱数から前記固定レイテンシ期間を生成する。
【発明の効果】
【００２２】
本発明に係るメモリコントローラは、固定レイテンシ期間に基づいて定められるタイミングで読み出しコマンドに含まれるアドレスのデータを送信する。これにより、本発明に係るメモリコントローラを備える半導体記憶装置の違法な複製品を製造することを困難とすることができる。
【００２３】
また、本発明に係るメモリコントローラは、読み出しコマンドに含まれるアドレスのデータの送信が開始されるまでに送信されるビジー信号を隠蔽する。これにより、読み出しコマンドに含まれるアドレスのデータがメモリコントローラからホスト装置に送信される際に、このデータが第三者により特定されることを困難することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態に係るメモリシステムの構成を示す機能ブロック図である。
【図２】図１に示すホスト装置の構成を示す機能ブロック図である。
【図３】図１に示す半導体記憶装置の構成を示す機能ブロック図である。
【図４】図１に示す半導体メモリの構成を示す機能ブロック図である。
【図５】図２に示す固定レイテンシ期間を決定するときにおけるホスト装置及びメモリコントローラの動作を示すシーケンス図である。
【図６】図１に示すホスト装置が通常アドレスを含む読み出しコマンドを送信するときのホスト装置及びメモリコントローラの動作を示すシーケンス図である。
【図７】図１に示すメモリコントローラが可変レイテンシ処理を実行するときにおける読み出しデータの送信タイミングを示す図である。
【図８】図１に示すホスト装置が対象アドレスを含む読み出しコマンドを送信するときのホスト装置及びメモリコントローラの動作を示すシーケンス図である。
【図９】図１に示すメモリコントローラが固定レイテンシ処理を実行するときにおける読み出しデータの送信タイミングを示す図である。
【図１０】複製品のメモリコントローラが読み出しデータを送信するタイミングを示す図である。
【図１１】図１に示すメモリコントローラが固定レイテンシ処理を実行するときにおける読み出しデータの送信タイミングの他の例を示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２６】
｛１．メモリシステムの構成｝
｛１．１．全体構成｝
図１は、本発明の実施の形態に係るメモリシステム１００の構成を示す機能ブロック図である。図１に示すように、メモリシステム１００は、ホスト装置１０と、半導体記憶装置２０とを備える。半導体記憶装置２０は、メモリコントローラ３０と、半導体メモリ４０とを備える。
【００２７】
メモリコントローラ３０は、ホスト装置１０からの要求に応じて、半導体メモリ４０にアクセスする。
【００２８】
半導体メモリ４０は、不揮発性であり、例えば、ＮＡＮＤフラッシュメモリである。半導体メモリ４０は、プログラム４１と、コンテンツデータ４２と、対象アドレスデータ４３とを記憶する。プログラム４１は、コンテンツデータ４２を使用するためのプログラムである。対象アドレスデータ４３は、メモリコントローラ３０が固定レイテンシ処理及び可変レイテンシ処理のどちらを実行するかを決定するために用いられる。固定レイテンシ処理及び可変レイテンシ処理の詳細については、後述する。
【００２９】
｛１．２．ホスト装置１０の構成｝
図２は、図１に示すホスト装置１０の構成を示す機能ブロック図である。図２に示すように、ホスト装置１０は、ＣＰＵ（Central Processing Unit）１１と、ＲＡＭ（Random Access Memory）１２と、乱数生成器１３と、ホスト側コントローラ１４とを備える。ＣＰＵ１１と、ＲＡＭ１２と、乱数生成器１３と、ホスト側コントローラ１４とは、バスを介して接続される。
【００３０】
ＣＰＵ１１は、ＲＡＭ１２にロードされたプログラムを実行して、ホスト装置１０の動作を制御する。ＲＡＭ１２は、ホスト装置１０のメインメモリである。
【００３１】
乱数生成器１３は、固定レイテンシ期間５１の生成に用いられる乱数１３Ａ及び１３Ｂを生成する。乱数生成器１３は真性乱数を生成する。乱数１３Ａ及び１３Ｂの生成タイミングは、それぞれ異なる。従って、乱数１３Ａ及び１３Ｂは、互いに異なる値を有する。固定レイテンシ期間５１は、固定レイテンシ処理の実行時に用いられる。固定レイテンシ期間５１は、メモリコントローラ３０が読み出しコマンドに含まれるアドレスのデータを送信するタイミングを決定するために用いられる。固定レイテンシ期間５１の詳細は、後述する。
【００３２】
ホスト側コントローラ１４は、ＣＰＵ１１の指示に応じて、ホスト装置１０による半導体記憶装置２０に対するアクセスを制御する。ホスト側コントローラ１４は、アクセス制御部１４１と、レイテンシ生成部１４２と、記憶部１４３とを備える。
【００３３】
アクセス制御部１４１は、ＣＰＵ１１の指示に基づくコマンドをメモリコントローラ３０に送信し、送信したコマンドに対する応答を受信する。
【００３４】
レイテンシ生成部１４２は、記憶部１４３に格納された乱数１３Ａ及び乱数３４Ａから固定レイテンシ期間５１を生成する。乱数３４Ａは、後述するように、メモリコントローラ３０により生成される。
【００３５】
記憶部１４３は、乱数１３Ａと、乱数３４Ａと、対象アドレスデータ４３と、固定レイテンシ期間５１とを格納する。対象アドレスデータ４３は、ホスト装置１０の起動時にメモリコントローラ３０から送信される。
【００３６】
｛１．３．メモリコントローラ３０の構成｝
図３は、図１に示す半導体記憶装置２０の構成を示す機能ブロック図である。図３に示すように、メモリコントローラ３０は、コマンドデコーダ３１と、レイテンシ取得部３２と、アクセス制御部３３と、乱数生成器３４とを備える。
【００３７】
メモリコントローラ３０は、ホスト側コントローラ１４と接続される。図３において、メモリコントローラ３０におけるホスト装置１０とのインタフェース回路（ホストＩ／Ｆ）及び半導体メモリ４０とのインタフェース回路（メモリＩ／Ｆ）の表示を省略している。
【００３８】
コマンドデコーダ３１は、ホスト側コントローラ１４から送信されるコマンドを取得し、取得したコマンドをデコードする。例えば、コマンドデコーダ３１は、読み出しコマンドを受信した場合、読み出しコマンドに含まれるアドレスを抽出し、読み出し指示及び抽出したアドレスをアクセス制御部３３に出力する。以下、読み出しコマンドに含まれるアドレスを「読み出しアドレス」と記載する。
【００３９】
レイテンシ取得部３２は、固定レイテンシ期間５１を取得する。レイテンシ取得部３２は、レジスタ３２１と、レジスタ３２２と、レイテンシ生成部３２３とを備える。
【００４０】
レジスタ３２１は、乱数生成器１３（図２参照）により生成された乱数１３Ａを格納する。レジスタ３２２は、乱数生成器３４により生成された乱数３４Ａを格納する。レイテンシ生成部３２３は、レジスタ３２１に格納された乱数１３Ａとレジスタ３２２に格納された乱数３４Ａから固定レイテンシ期間５１を生成する。レイテンシ生成部３２３により生成される固定レイテンシ期間５１は、図２に示すホスト装置１０のレイテンシ生成部１４２により生成される固定レイテンシ期間５１と同じである。
【００４１】
アクセス制御部３３は、ホスト装置１０からの読み出しコマンドに応じて、半導体メモリ４０からデータを読み出し、読み出されたデータをホスト側コントローラ１４に送信する。アクセス制御部３３は、判断部３３１と、読み出し制御部３３２と、送信制御部３３３とを備える。
【００４２】
判断部３３１は、対象アドレスデータ４３を用いて、読み出しアドレスが固定レイテンシ処理の対象であるか否かを判断する。対象アドレスデータ４３には、固定レイテンシ処理の対象となる半導体メモリ４０のアドレスが登録されている。読み出しアドレスが対象アドレスデータ４３に登録されたアドレスに一致する場合、判断部３３１は、固定レイテンシ処理の実行を決定する。読み出しアドレスが対象アドレスデータ４３に登録されたアドレスに一致しない場合、判断部３３１は、可変レイテンシ処理の実行を決定する。可変レイテンシ処理は、通常の読み出し処理と同じである。
【００４３】
読み出し制御部３３２は、半導体メモリ４０からのデータの読み出しを制御する。読み出し制御部３３２は、読み出しアドレスを含むアクセス制御信号を送信して、半導体メモリ４０にデータの読み出しを指示する。
【００４４】
読み出し制御部３３２は、アクセス制御信号に応じて半導体メモリ４０から読み出されたデータを送信制御部３３３に出力する。以下、読み出しコマンドに応じて半導体メモリ４０から読み出されたデータを、「読み出しデータ５２」と記載する。また、読み出し制御部３３２は、メモリコントローラ３０の起動時に、半導体メモリ４０から対象アドレスデータ４３を読み出す。読み出された対象アドレスデータ４３は、判断部３３１及び送信制御部３３３に出力される。
【００４５】
送信制御部３３３は、判断部３３１による判断結果に基づいて、固定レイテンシ処理及び可変レイテンシ処理のいずれかを実行する。可変レイテンシ処理において、送信制御部３３３は、半導体メモリ４０から出力されるレイテンシ信号５４に応じて、ホスト装置１０への読み出しデータ５２の送信を開始する。レイテンシ信号５４は、半導体メモリ４０からのデータの読み出しが可能になったことを通知する信号である。可変レイテンシ処理では、固定レイテンシ期間５１は用いられない。
【００４６】
一方、固定レイテンシ処理において、送信制御部３３３は、読み出しコマンドを受信してから固定レイテンシ期間５１を経過するまで待機した後に、読み出しデータ５２を送信する。固定レイテンシ期間５１は、読み出し制御部３３２が半導体メモリ４０に読み出しアドレスのデータの読み出しを指示してから、半導体メモリ４０からのデータの読み出しが可能となるまでの期間よりも長い期間に設定される。例えば、ページＰ−３（図４参照）のアドレスのデータをホスト装置１０に送信する場合において、ページＰ−３のアドレスのデータの送信タイミングは、可変レイテンシ処理の実行時よりも、固定レイテンシ処理の実行時の方が遅くなる。
【００４７】
乱数生成器３４は、乱数３４Ａ〜３４Ｃを生成する。乱数３４Ａ及び３４Ｃは、固定レイテンシ期間５１の決定に用いられる。乱数３４Ｂは、後述する隠蔽信号の送信に用いられる。乱数３４Ａ〜３４Ｃの生成タイミングは、それぞれ異なる。乱数生成器３４が真性乱数を生成するため、乱数３４Ａ〜３４Ｃは、互いに異なる値を有する。
【００４８】
｛１．４．半導体メモリ４０の構成｝
図４は、図１に示す半導体メモリ４０の構成を示す機能ブロック図である。図４に示すように、半導体メモリ４０は、１枚のダイで構成される。ダイは、Ｊ個のブロックを含む。ブロックは、Ｎ個のページを含む。Ｊ及びＮは、いずれも１以上の自然数である。ブロックは、半導体メモリ４０におけるデータの消去単位である。ページは、半導体メモリ４０におけるデータの読み出し単位及び書き込み単位である。
【００４９】
半導体メモリ４０において、ブロック４０Ｂは、ページＰ−１，Ｐ−２，・・・，Ｐ−Ｎにより構成される。対象アドレスデータ４３が、ページＰ−１に格納される。プログラム４１Ａ〜４１Ｃが、ページＰ−２〜Ｐ−４に格納される。プログラム４１Ａ〜４１Ｃは、図１に示すプログラム４１を構成する。プログラム４１Ａ〜４１Ｃは、プログラム４１をページに格納可能なデータサイズで区分することにより生成される。従って、プログラム４１Ａ〜４１Ｃを個別に実行することはできない。コンテンツデータ４２が、ページＰ−Ｎに格納される。
【００５０】
｛２．メモリシステムの動作｝
以下、メモリシステム１００において実行される、固定レイテンシ期間５１の決定、可変レイテンシ処理、固定レイテンシ処理、固定レイテンシ期間５１の更新についてそれぞれ説明する。なお、以下の説明において、メモリコントローラ３０において実行される論理アドレスから物理アドレスへの変換処理についての説明を省略する。
【００５１】
｛２．１．固定レイテンシ期間５１の決定｝
図５は、固定レイテンシ期間５１を決定するときにおけるホスト装置１０及びメモリコントローラ３０の動作を示すシーケンス図である。
【００５２】
なお、初期状態として、固定レイテンシ期間５１を決定するための基準時間が予めホスト装置１０及びメモリコントローラ３０に設定されている。基準時間は、メモリコントローラ３０が半導体メモリ４０にデータの読み出しを指示してから半導体メモリ４０により出力されるレイテンシ信号５４を受け付けるまでに要する最大時間である。つまり、基準時間は、半導体メモリ４０からのデータの読み出しに要する最大時間に相当する。最大時間は、半導体メモリ４０にデータの読み出しを指示してからレイテンシ信号５４を受け付けるまでの時間を前もって計測することにより取得される。あるいは、最大時間は、半導体メモリ４０の仕様に応じて定められてもよい。
【００５３】
基準時間は、半導体メモリ４０の所定領域に記録されていてもよい。この場合、ホスト装置１０は、起動時にメモリコントローラ３０を介して基準時間を取得する。
【００５４】
図５に示すシーケンス図は、ホスト装置１０の電源がオンされたときに開始される。最初に、ホスト装置１０の動作を説明する。ホスト装置１０の電源がオンされた場合、ＣＰＵ１１は、乱数生成器１３に乱数１３Ａの生成を指示する。乱数生成器１３は、ＣＰＵ１１の指示に応じて、真性乱数である乱数１３Ａを生成する（ステップＳ１１１）。生成された乱数１３Ａは、ＣＰＵ１１及びホスト側コントローラ１４へ出力される。
【００５５】
ホスト側コントローラ１４において、アクセス制御部１４１は、乱数生成器１３から入力された乱数１３Ａを記憶部１４３に格納する（ステップＳ１１２）。
【００５６】
ＣＰＵ１１は、乱数交換コマンドを生成する（ステップＳ１１３）。ＣＰＵ１１は、乱数生成器１３から供給された乱数１３Ａを乱数交換コマンドにセットする。乱数交換コマンドは、乱数１３Ａをメモリコントローラ３０へ送信し、乱数３４Ａ及び対象アドレスデータ４３の送信を要求するコマンドである。
【００５７】
アクセス制御部１４１は、乱数１３Ａがセットされた乱数交換コマンドをＣＰＵ１１から取得する。ホスト側コントローラ１４は、取得した乱数交換コマンドをメモリコントローラ３０へ送信する（ステップＳ１１４）。アクセス制御部１４１は、乱数交換コマンドの応答を受信するまで待機する。
【００５８】
次に、メモリコントローラ３０の動作について説明する。メモリコントローラ３０は、ホスト装置１０の電源オンに応じて起動する。メモリコントローラ３０において、乱数生成器３４は、乱数３４Ａを生成する（ステップＳ２１１）。乱数生成器３４は、乱数生成器１３と同様に、真性乱数を生成する。従って、メモリシステム１００の起動直後に生成される乱数１３Ａ及び３４Ａは、互いに異なる値である。
【００５９】
乱数生成器３４は、生成した乱数３４Ａをレジスタ３２２及び送信制御部３３３に出力する。レジスタ３２２は、出力された乱数３４Ａを格納する（ステップＳ２１２）。
【００６０】
メモリコントローラ３０は、ステップＳ１１４によりホスト側コントローラ１４から送信された乱数交換コマンドを受信する。メモリコントローラ３０は、受信した乱数交換コマンドにセットされた乱数１３Ａをレジスタ３２１に格納する（ステップＳ２１３）。具体的には、コマンドデコーダ３１は、受信した乱数交換コマンドをデコードして、ホスト装置１０が乱数の交換を要求していると判断する。コマンドデコーダ３１は、乱数交換コマンドにセットされた乱数１３Ａを抽出してレジスタ３２１に出力する。レジスタ３２１は、コマンドデコーダ３１から出力された乱数１３Ａを記憶する。
【００６１】
コマンドデコーダ３１は、乱数交換コマンドを受信したことを読み出し制御部３３２及び送信制御部３３３に通知する。読み出し制御部３３２は、コマンドデコーダ３１からの通知を受けて、半導体メモリ４０から対象アドレスデータ４３を読み出す（ステップＳ２１４）。
【００６２】
送信制御部３３３は、コマンドデコーダ３１からの通知に応じて、対象アドレスデータ４３を読み出し制御部３３２から取得し、乱数３４Ａを乱数生成器３４から取得する。送信制御部３３３は、取得した乱数３４Ａ及び対象アドレスデータ４３を乱数交換コマンドの応答としてホスト装置１０に送信する（ステップＳ２１５）。
【００６３】
レイテンシ取得部３２は、固定レイテンシ期間５１を生成する（ステップＳ２１６）。具体的には、レイテンシ生成部３２３が、予め設定されたアルゴリズムを用いて、レジスタ３２１に記憶された乱数１３Ａとレジスタ３２２に記憶された乱数３４Ａから、基準時間よりも長い固定レイテンシ期間５１を計算する。なお、基準時間よりも短い固定レイテンシ期間５１が計算された場合については、後述する。
【００６４】
計算に用いられるアルゴリズムは、特に限定されない。例えば、擬似乱数生成アルゴリズム、ＨＭＡＣ（Hash-based Message Authentication Code）などが用いられる。
【００６５】
基準時間よりも短い固定レイテンシ期間５１が計算された場合、固定レイテンシ期間５１を再び生成すればよい。この場合、ホスト装置１０は、乱数生成器１３により生成された新たな乱数を含む乱数交換コマンドを送信する。メモリコントローラ３０は、乱数交換コマンドを受信した場合、乱数生成器３４により生成された新たな乱数をホスト装置１０に送信する。レイテンシ生成部１４２及び３２３は、生成された２つの新たな乱数から、固定レイテンシ期間５１を生成する。以下、基準時間より長い固定レイテンシ期間５１が計算されるまで、ホスト装置１０及びメモリコントローラ３０は、固定レイテンシ期間５１の再生成を繰り返せばよい。
【００６６】
レイテンシ生成部３２３が、決定された固定レイテンシ期間５１を送信制御部３３３に出力する。送信制御部３３３は、レイテンシ生成部３２３から出力された固定レイテンシ期間５１を保持する。これにより、メモリコントローラ３０の起動時における処理が終了する。
【００６７】
ホスト装置１０において、アクセス制御部１４１は、乱数交換コマンドの応答として乱数３４Ａ及び対象アドレスデータ４３を受信する。アクセス制御部１４１は、受信した乱数３４Ａ及び対象アドレスデータ４３を記憶部１４３に格納する（ステップＳ１１５）。
【００６８】
レイテンシ生成部１４２は、記憶部１４３に記憶された乱数１３Ａ及び３４Ａから固定レイテンシ期間５１を生成する（ステップＳ１１６）。レイテンシ生成部１４２が固定レイテンシ期間５１の生成に用いるアルゴリズムは、メモリコントローラ３０のレイテンシ生成部３２３が用いるアルゴリズムと同じである。従って、レイテンシ生成部１４２により生成される固定レイテンシ期間５１は、メモリコントローラ３０のレイテンシ生成部３２３により生成される固定レイテンシ期間５１と同一である。
【００６９】
｛２．２．可変レイテンシ処理｝
メモリコントローラ３０は、ホスト装置１０から対象アドレスデータ４３に登録されていないアドレスを含む読み出しコマンドを受信した場合、可変レイテンシ処理を実行して、読み出しコマンドに含まれるアドレスのデータを送信する。
【００７０】
以下、対象アドレスデータ４３に登録されたアドレスを「対象アドレス」と記載し、対象アドレスデータ４３に登録されていないアドレスを「通常アドレス」と記載する。
【００７１】
図６は、ホスト装置１０が読み出しアドレスとして通常アドレスを含む読み出しコマンドを送信する場合における、ホスト装置１０及びメモリコントローラ３０の動作を示すシーケンス図である。
【００７２】
図６に示すように、ホスト装置１０は、ステップＳ３１１〜Ｓ３１４を実行して、通常アドレスを含む読み出しコマンドをメモリコントローラ３０に送信する。具体的には、ＣＰＵ１１は、読み出しコマンドを生成し、生成した読み出しコマンドに読み出しアドレスをセットする。図６に示す例では、セットされる読み出しアドレスは、通常アドレスである。これにより、通常アドレスを含む読み出しコマンドが生成される（ステップＳ３１１）。
【００７３】
ＣＰＵ１１は、生成した読み出しコマンドをアクセス制御部１４１に出力する。アクセス制御部１４１は、読み出しコマンドに含まれる読み出しアドレスを、対象アドレスデータ４３に登録されたアドレスと比較する（ステップＳ３１２）。
【００７４】
図６に示す例では、読み出しアドレスとして通常アドレスが読み出しコマンドにセットされているので、読み出しコマンドに含まれる読み出しアドレスは、対象アドレスデータ４３に登録されたアドレスに一致しない。このため、アクセス制御部１４１は、読み出しコマンドをメモリコントローラ３０に送信した場合、メモリコントローラ３０が可変レイテンシ処理を実行すると判断する。アクセス制御部１４１は、読み出しコマンドの送信後に、可変レイテンシ処理用のアクセス制御を開始することを決定する（ステップＳ３１３）。
【００７５】
アクセス制御部１４１は、ステップＳ３１１で生成された読み出しコマンドをメモリコントローラ３０へ送信する（ステップＳ３１４）。アクセス制御部１４１は、メモリコントローラ３０からレディ信号を受信するまで待機することにより、可変レイテンシ処理用のアクセス制御を開始する。
【００７６】
メモリコントローラ３０において、コマンドデコーダ３１は、ステップＳ３１４によりホスト装置１０から送信された読み出しコマンドを受信する。コマンドデコーダ３１は、受信した読み出しコマンドをデコードする。その結果、コマンドデコーダ３１は、ホスト装置１０により読み出しが指示されたと判断し、受信した読み出しコマンドから読み出しアドレスを抽出する（ステップＳ４１１）。
【００７７】
コマンドデコーダ３１は、デコード結果（読み出し指示及び抽出した読み出しアドレス）を判断部３３１及び読み出し制御部３３２に出力する。判断部３３１は、コマンドデコーダ３１から取得した読み出しアドレスを対象アドレスデータ４３に登録されたアドレスと比較する（ステップＳ４１２）。図６に示す例では、読み出しアドレスとして通常アドレスが読み出しコマンドにセットされているので、取得した読み出しアドレスは、対象アドレスデータ４３に登録されたアドレスに一致しない。このため、判断部３３１は、可変レイテンシ処理の実行を決定する（ステップＳ４１３）。
【００７８】
送信制御部３３３は、判断部３３１の決定に基づいて、可変レイテンシ処理を開始する。具体的には、送信制御部３３３は、ホスト装置１０に対するビジー信号の送信を開始する（ステップＳ４１４）。ビジー信号の送信は、半導体メモリ４０から出力されるレイテンシ信号５４を送信制御部３３３が検出するまで継続される。
【００７９】
読み出し制御部３３２は、読み出しアドレスを含むアクセス制御信号を半導体メモリ４０に出力して、読み出しアドレスのデータの読み出しを指示する（ステップＳ４１５）。読み出し制御部３３２は、アクセス制御信号の送信後、レイテンシ信号５４の受信待機状態に移行する。
【００８０】
半導体メモリ４０は、読み出し制御部３３２から送信されたアクセス制御信号に基づいて、読み出しアドレスのデータの読み出し準備を開始する。読み出し準備が完了した場合、半導体メモリ４０は、レイテンシ信号５４を読み出し制御部３３２及び送信制御部３３３に出力して、読み出しアドレスのデータの出力が可能になったことを通知する。
【００８１】
送信制御部３３３は、半導体メモリ４０から送信されたレイテンシ信号５４を検出する（ステップＳ４１６）。送信制御部３３３は、検出したレイテンシ信号５４に基づいて、レディ信号をホスト装置１０へ送信する（ステップＳ４１７）。
【００８２】
半導体メモリ４０は、レイテンシ信号５４の出力後に、読み出しアドレスのデータ（読み出しデータ５２）の出力を開始する。送信制御部３３３は、読み出し制御部３３２を介して、読み出しデータ５２を読み出す。送信制御部３３３は、読み出しデータ５２をレディ信号の後に続けてホスト装置１０へ送信する（ステップＳ４１８）。
【００８３】
ホスト装置１０において、アクセス制御部１４１は、レディ信号を検出した場合、読み出しデータ５２の送信が開始されると判断する。アクセス制御部１４１は、レディ信号の後に続けて送信されるデータを読み出しデータ５２として受信する。ＣＰＵ１１は、アクセス制御部１４１が受信した読み出しデータ５２を用いた処理を実行する。
【００８４】
図７は、可変レイテンシ処理が実行される場合における読み出しデータ５２の送信タイミングを示す図である。図７に示すように、メモリコントローラ３０は、読み出しアドレスが対象アドレスデータ４３に登録されたアドレスのいずれかに一致しないと判断した場合、読み出しコマンドの受信直後からビジー信号の送信を開始する。ビジー信号の送信は、半導体メモリ４０からのレイテンシ信号５４が検出されるまで継続する。そして、レイテンシ信号５４が検出された場合、メモリコントローラ３０は、ビジー信号に代えてレディ信号を送信し、レディ信号の後に続けて読み出しデータ５２を送信する。
【００８５】
レイテンシ信号５４は、半導体メモリ４０における読み出し準備が完了したときに出力される。しかし、読み出し準備に要する時間は、半導体メモリ４０の性能及び読み出しアドレス等によって変動するため、ビジー信号の送信期間Ｔｂは、一定とならない。このため、ホスト装置１０は、メモリコントローラ３０が可変レイテンシ処理を実行する場合、レディ信号を受信するまで待機する。ホスト装置１０は、レディ信号をトリガとして、レディ信号の後に続けて送信されるデータを読み出しデータ５２として受信する。
【００８６】
｛２．３．固定レイテンシ処理｝
メモリコントローラ３０は、読み出しアドレスが対象アドレスデータ４３に登録されたアドレスに一致する場合、固定レイテンシ処理を実行して、読み出しデータ５２を送信する。可変レイテンシ処理と異なり、固定レイテンシ処理では、読み出しデータ５２の送信タイミングが、固定レイテンシ期間５１に基づいて決定される。
【００８７】
図８は、ホスト装置１０が対象アドレスを含む読み出しコマンドを送信する場合におけるホスト装置１０及びメモリコントローラ３０の動作を示すシーケンス図である。
【００８８】
ホスト装置１０は、ステップＳ５１１〜Ｓ５１４を実行して、対象アドレスを含む読み出しコマンドをメモリコントローラ３０に送信する。具体的には、ＣＰＵ１１は、読み出しコマンドを生成し、生成した読み出しコマンドに読み出しアドレスをセットする。図８に示す例では、読み出しアドレスは、対象アドレスである。これにより、対象アドレスを含む読み出しコマンドが生成される（ステップＳ５１１）。
【００８９】
ＣＰＵ１１は、生成した読み出しコマンドをアクセス制御部１４１に出力する。アクセス制御部１４１は、読み出しコマンドに含まれる読み出しアドレスを対象アドレスデータ４３に登録されているアドレスと比較する（ステップＳ５１２）。
【００９０】
図８に示す例では、読み出しアドレスとして対象アドレスが読み出しコマンドにセットされるので、読み出しアドレスは、対象アドレスデータ４３に登録されたいずれかのアドレスと一致する。このため、アクセス制御部１４１は、ステップＳ５１１で生成された読み出しコマンドを送信した場合、メモリコントローラ３０が固定レイテンシ処理を実行すると判断する。アクセス制御部１４１は、読み出しコマンドの送信後に、固定レイテンシ処理用のアクセス制御を開始することを決定する（ステップＳ５１３）。
【００９１】
アクセス制御部１４１は、ステップＳ５１１で生成された読み出しコマンドをメモリコントローラ３０へ送信する（ステップＳ５１４）。アクセス制御部１４１は、読み出しコマンドを送信してから固定レイテンシ期間５１を経過するまで待機する（ステップＳ５１５）。アクセス制御部１４１は、固定レイテンシ期間５１を経過するまでの間、メモリコントローラ３０から隠蔽信号を受信する。後述するように、隠蔽信号は、ランダムなデータであるため、アクセス制御部１４１は、読み出しデータ５２の受信タイミングを特定する際に、隠蔽信号を利用せず、固定レイテンシ期間５１を利用する。
【００９２】
メモリコントローラ３０において、コマンドデコーダ３１は、ステップＳ５１４によりホスト装置１０から送信された読み出しコマンドを受信する。コマンドデコーダ３１は、受信した読み出しコマンドをデコードする。その結果、コマンドデコーダ３１は、ホスト装置１０により読み出しが指示されたと判断し、受信した読み出しコマンドから読み出しアドレスを抽出する（ステップＳ６１１）。
【００９３】
コマンドデコーダ３１は、デコード結果（読み出し指示及び抽出した読み出しアドレス）を判断部３３１及び読み出し制御部３３２に出力する。判断部３３１は、コマンドデコーダ３１から取得した読み出しアドレスを、対象アドレスデータ４３に登録されたアドレスと比較する（ステップＳ６１２）。図８に示す例では、読み出しアドレスとして対象アドレスが読み出しコマンドにセットされているので、取得した読み出しアドレスは、対象アドレスデータ４３に登録されたいずれかのアドレスと一致する。このため、判断部３３１は、固定レイテンシ処理の実行を決定する（ステップＳ６１３）。
【００９４】
メモリコントローラ３０は、ステップＳ６１４〜Ｓ６１６を固定レイテンシ処理として実行する。送信制御部３３３は、ビジー信号に代えて、隠蔽信号の送信を開始する（ステップＳ６１４）。具体的には、送信制御部３３３は、読み出しコマンドを受信してから固定レイテンシ期間５１を経過するまで、乱数生成器３４から乱数３４Ｂを取得し続け、取得した乱数３４Ｂを隠蔽信号として送信する。つまり、隠蔽信号は、固定レイテンシ期間５１を経過するまで、乱数生成器３４により生成される乱数３４Ｂにより更新され続ける。乱数生成器３４が、乱数３４Ｂを乱数３４Ａの生成タイミングと異なるタイミングで生成するため、乱数３４Ｂは、乱数３４Ａと異なる。隠蔽信号の送信は、読み出しコマンドを受信してから固定レイテンシ期間５１を経過するまで継続される。
【００９５】
隠蔽信号は、ランダムな値を有する。一方、ビジー信号及びレディ信号のパターンは、予め設定されている。ビジー信号及びレディ信号に代えて隠蔽信号を送信することにより、第三者は、ビジー信号と、レディ信号と、レディ信号に続けて送信される読み出しアドレスのデータとを区別することができない。つまり、ビジー信号の送信期間及びビジー信号の値が乱数３４Ｂにより隠蔽されることにより、読み出しデータ５２の送信タイミングが隠蔽される。
【００９６】
次に、読み出し制御部３３２は、読み出しアドレスを含むアクセス制御信号を半導体メモリ４０に出力して、読み出しアドレスのデータの読み出しを指示する（ステップＳ６１５）。半導体メモリ４０は、読み出し制御部３３２から出力されたアクセス制御信号に基づいて、読み出しアドレスのデータの読み出し準備を開始する。読み出し準備が完了した場合、半導体メモリ４０は、レイテンシ信号５４を送信制御部３３３に出力して、読み出しアドレスのデータの読み出しが可能になったことを通知する。
【００９７】
上述のように、固定レイテンシ期間５１は、基準時間よりも長い。基準時間は、半導体メモリ４０にデータの読み出しを指示してから半導体メモリ４０からレイテンシ信号５４を受け付けるまでにかかる最大時間である。従って、固定レイテンシ処理において、送信制御部３３３は、読み出しコマンドを受信してから固定レイテンシ期間５１を経過するまでの待機中に、レイテンシ信号５４を検出する。しかし、送信制御部３３３は、レイテンシ信号５４を検出しても読み出しデータ５２の送信を開始せず、隠蔽信号の送信を継続する。
【００９８】
送信制御部３３３は、読み出しコマンドの受信を完了してから固定レイテンシ期間５１を経過するタイミングで、読み出しデータ５２の送信を開始する（ステップＳ６１６）。具体的には、送信制御部３３３は、固定レイテンシ期間５１を経過するタイミングで隠蔽信号の送信を停止する。送信制御部３３３は、読み出し制御部３３２を介して読み出しデータ５２を半導体メモリ４０から読み出す。送信制御部３３３は、隠蔽信号に代えて、読み出しデータ５２をホスト装置１０へ送信する。
【００９９】
ここで、ホスト装置１０の説明に戻る。上述のように、アクセス制御部１４１は、読み出しコマンドを送信し（ステップＳ５１４）、その後、固定レイテンシ期間５１を経過するまで待機する（ステップＳ５１５）。アクセス制御部１４１は、待機中に受信する隠蔽信号を無視する。アクセス制御部１４１は、固定レイテンシ期間５１を経過するタイミングで、読み出しデータ５２の受信を開始する（ステップＳ５１６）。すなわち、アクセス制御部１４１は、固定レイテンシ期間５１を経過するタイミングより後に受信するデータを、読み出しデータ５２として受信する。従って、ホスト装置１０は、固定レイテンシ処理用のアクセス制御を実行する際には、レディ信号の検出を行わなくてよい。
【０１００】
図９は、固定レイテンシ処理が実行される場合における読み出しデータ５２の送信タイミングを示す図である。図９に示すように、メモリコントローラ３０は、読み出しコマンドを受信してから期間Ｔｓを経過したときに、読み出しアドレスのデータの読み出しが可能になったことを示すレイテンシ信号５４を受け付ける。しかし、メモリコントローラ３０は、レイテンシ信号５４を無視し、固定レイテンシ期間５１が経過するまで待機する。また、メモリコントローラ３０は、読み出しアドレスが対象アドレスデータ４３に登録されたアドレスに一致する場合、読み出しコマンドを受信してから隠蔽信号の送信を開始する。隠蔽信号は、乱数生成器３４により生成される乱数３４Ｂである。従って、第三者は、メモリコントローラ３０から送信される信号を観測しても、ビジー信号及びレディ信号を検出することができない。メモリコントローラ３０は、固定レイテンシ期間５１が経過した場合、隠蔽信号に続けて読み出しデータ５２の送信を開始するため、第三者は、読み出しデータ５２の送信タイミングを特定することができず、読み出しデータ５２を特定することができない。
【０１０１】
ホスト装置１０及びメモリコントローラ３０は、同一の固定レイテンシ期間５１を保持している。従って、ホスト装置１０は、読み出しデータ５２の受信タイミングを、読み出しコマンドの送信を完了したタイミングと、固定レイテンシ期間５１とに基づいて特定することができる。メモリコントローラ３０は、読み出しデータ５２の送信タイミングを、読み出しコマンドの受信を完了したタイミングと、固定レイテンシ期間５１とに基づいて特定することができる。従って、ホスト装置１０は、ビジー信号及びレディ信号を用いることなく、メモリコントローラ３０から送信される読み出しデータ５２を特定することができる。
【０１０２】
なお、固定レイテンシ期間５１の生成時に用いられる基準時間が、レイテンシ信号５４を計測することによって決定される場合、メモリコントローラ３０が、固定レイテンシ期間５１を経過するまでに、レイテンシ信号５４を検出できない場合がある。この場合、メモリコントローラ３０は、読み出しデータ５２を取得できないため、読み出しデータ５２をホスト装置１０に送信することができない。メモリコントローラ３０は、固定レイテンシ期間５１を経過したタイミングで、読み出しコマンドの応答としてエラーを送信する。ホスト装置１０及びメモリコントローラ３０は、後述する固定レイテンシ期間５１の更新処理を実行する。更新された固定レイテンシ期間５１は、更新前の固定レイテンシ期間５１よりも長くなることが望ましい。そして、ホスト装置１０は、改めて読み出しコマンドをメモリコントローラ１０に送信すればよい。
【０１０３】
このように、メモリコントローラ３０は、対象アドレスを含む読み出しコマンドを受信した場合に固定レイテンシ処理を実行する。乱数１３Ａ及び３４Ａから生成される固定レイテンシ期間５１はランダムであるため、第三者は、固定レイテンシ期間５１を特定することができない。半導体記憶装置の違法な複製品のメモリコントローラは、固定レイテンシ期間５１を利用して固定レイテンシ処理を実行するメモリコントローラ３０の動作を再現できない。以下、半導体記憶装置２０の違法な複製品を、単に「複製品」と記載する。
【０１０４】
例えば、図４において、プログラム４１Ａ〜４１Ｃは、プログラム４１を単純にデータサイズに基づいて区切ることにより生成される。ページＰ−３のアドレスが対象アドレスデータ４３に登録されている場合、メモリコントローラ３０は、ページＰ−３に格納されたプログラム４１Ｂを、固定レイテンシ処理により送信する。一方、複製品のメモリコントローラは、第三者により固定レイテンシ期間５１が特定されていないため、プログラム４１Ｂを固定レイテンシ処理によりホスト装置１０に送信することができない。複製品がホスト装置１０に接続されている場合、ホスト装置１０は、プログラム４１を再構成できないため、プログラム４１を利用することが不可能となる。このように、第三者は、ホスト装置１０が利用可能な複製品を製造することができない。また、メモリコントローラ３０が、乱数３４Ｂを用いてビジー信号及びレディ信号を隠蔽するため、第三者は、固定レイテンシ処理によりホスト装置１０に送信される読み出しデータ５２を特定することができない。従って、第三者は、半導体メモリ４０に記録された対象アドレスのデータを複製することができない。
【０１０５】
次に、対象アドレスデータ４３に登録されるアドレスについて説明する。対象アドレスデータ４３に登録されるアドレスは、半導体メモリ４０の全ページのアドレスであってもよいし、一部のアドレスであってもよい。一部のアドレスが対象アドレスデータ４３に登録される場合、登録されるアドレスは、ホスト装置１０によって少なくとも１回は読み出されるデータのアドレスであることが望ましい。例えば、ホスト装置１０のブートコードを格納するページのアドレスなど、ホスト装置１０が半導体メモリ４０に必ずアクセスする領域のアドレスを登録すればよい。あるいは、ホスト装置１０のアクセス頻度が高い領域のアドレスを登録してもよい。
【０１０６】
｛２．４．固定レイテンシ期間５１の更新｝
メモリコントローラ３０が固定レイテンシ処理により読み出しデータ５２を送信した後に、ホスト装置１０及びメモリコントローラ３０は、固定レイテンシ期間５１を更新する。固定レイテンシ期間５１を更新する処理は、図５に示す固定レイテンシ期間５１を決定する流れと同じである。ただし、固定レイテンシ期間５１を更新する場合、図５に示す処理において、ホスト装置１０は、乱数１３Ａと異なる乱数１３Ｂを生成して記憶部１４３に格納する（ステップＳ１１１，Ｓ１１２）。乱数１３Ｂがセットされた乱数交換コマンドがメモリコントローラ３０に送信される（ステップＳ１１４）。メモリコントローラ３０は、乱数３４Ａ及び３４Ｂと異なる乱数３４Ｃを生成し（ステップＳ２１１）、乱数３４Ｃを乱数交換コマンドの応答として送信する（ステップＳ２１５）。この結果、ホスト装置１０及びメモリコントローラ３０において、起動時に生成された固定レイテンシ期間５１と異なる固定レイテンシ期間５１が生成される。ホスト装置１０は、新たな固定レイテンシ期間５１が生成された後に（ステップＳ１１６、図５参照）、次の読み出しコマンドを生成して送信する。
【０１０７】
例えば、固定レイテンシ期間５１の更新は、メモリコントローラ３０においては、対象アドレスのデータを送信してから、次の読み出しコマンドを受け付けるまでの間に実行される。ホスト装置１０においては、固定レイテンシ期間５１の更新は、対象アドレスのデータを受信してから、次の読み出しコマンドを生成するまでの間に実行される。すなわち、ホスト装置１０及びメモリコントローラ３０は、対象アドレスのデータの読み出し処理が完了してから、予め設定された期間内に更新する。固定レイテンシ期間５１を更新するタイミングを揃えることにより、ホスト装置１０及びメモリコントローラ３０は、同一の固定レイテンシ期間５１を保持することができる。
【０１０８】
乱数生成器１３及び３４は真性乱数を生成するため、乱数生成器１３及び３４により生成される乱数に再現性がない。つまり、固定レイテンシ期間５１の更新に用いられる乱数１３Ｂ及び３４Ｃは、乱数１３Ａ，３４Ａ及び３４Ｂとそれぞれ異なる。更新後の固定レイテンシ期間５１は、更新前の固定レイテンシ期間５１と関係なく決定されるため、第三者は、更新後の固定レイテンシ期間を予測することができない。仮に、第三者が、メモリコントローラ３０から出力される隠蔽信号を観測して隠蔽信号の長さ（固定レイテンシ期間５１）を特定できたとしても、固定レイテンシ期間５１は更新される。特定された固定レイテンシ期間５１は、次の対象アドレスのデータの読み出しの際には使用されない。従って、第三者は、固定レイテンシ期間５１を特定できたとしても、更新後の固定レイテンシ期間５１を特定することができない。従って、第三者は、次の対象アドレスのデータを特定することができない。
【０１０９】
このように、本実施の形態に係るメモリシステム１００において、ホスト装置１０及びメモリコントローラ３０は、同一の固定レイテンシ期間５１をそれぞれ保持する。メモリコントローラ３０は、対象アドレスを含む読み出しコマンドをホスト装置１０から受信した場合、固定レイテンシ期間５１に基づいて決定されるタイミングで対象アドレスのデータの送信を開始し、ホスト装置１０は、固定レイテンシ期間５１に基づいて決定されるタイミングで対象アドレスのデータの受信を開始する。第三者は、固定レイテンシ期間５１を特定することができないため、固定レイテンシ期間５１に基づいて対象アドレスのデータの送信タイミングを決定するメモリコントローラ３０の動作を再現することができない。従って、第三者は、ホスト装置１０が利用可能な半導体記憶装置２０の違法な複製品を製造することができない。
【０１１０】
また、固定レイテンシ期間５１が乱数３４Ｂにより隠蔽されるため、第三者が読み出しデータ５２を特定することが困難となり、耐タンパ性を向上させることができる。また、固定レイテンシ期間５１が更新されることにより、第三者が読み出しデータ５２を特定することがさらに困難となるため、耐タンパ性をさらに向上させることができる。
【０１１１】
｛変形例１｝
上記実施の形態において、ホスト装置１０が、固定レイテンシ処理用のアクセス制御を実行する際に、固定レイテンシ期間５１に受信する隠蔽信号を無視する例を説明したが、これに限られない。ホスト装置１０は、固定レイテンシ期間５１を経過するまでの間に受信する信号を監視することにより、半導体記憶装置２０が違法な複製品であるか否かを判断してもよい。  
【０１１２】
図１０は、ホスト装置１０が対象アドレスを含む読み出しコマンドを送信した場合において、複製品のメモリコントローラ３０が読み出しデータ５２を送信するタイミングを示す図である。ホスト装置１０は、対象アドレスを含む読み出しコマンドを送信する場合、レディ信号の受信タイミングを予め特定することができる。具体的には、ホスト装置１０は、レディ信号の受信タイミングが固定レイテンシ期間５１の終了直前であると判断する。
【０１１３】
複製品のメモリコントローラは、固定レイテンシ処理を実行することができない。従って、複製品のメモリコントローラは、対象アドレスを含む読み出しコマンドをホスト装置１０から受信した場合、固定レイテンシ処理でなく、通常の読み出し処理（可変レイテンシ処理）により読み出しデータ５２を送信する。例えば、複製品のメモリコントローラは、時刻Ｔｄ１にレイテンシ信号５４を検出した場合、固定レイテンシ期間５１を経過する前の時刻Ｔｄ１にレディ信号を送信する。あるいは、複製品のメモリコントローラは、固定レイテンシ期間５１を経過した後にレディ信号を検出した場合、固定レイテンシ期間５１の経過後にレディ信号を送信する。
【０１１４】
この結果、ホスト装置１０は、予め特定した受信タイミングと異なるタイミングでレディ信号を複製品のメモリコントローラから受信するため、レディ信号を送信する半導体記憶装置２０が複製品であると判断することができる。
【０１１５】
｛変形例２｝
上記実施の形態では、メモリコントローラ３０が、対象アドレスデータ４３を参照して、読み出しアドレスが対象アドレスに一致するか否かを判断する例を説明したが、これに限られない。
【０１１６】
ホスト装置１０が、可変レイテンシ処理及び固定レイテンシ処理のいずれかを一方の実行を指示する指示フラグを含む読み出しコマンドを生成してもよい。読み出しコマンドにおいて、指示フラグが読み出しアドレスの後に付加される。例えば、可変レイテンシ処理を指示するフラグが“００”に設定され、固定レイテンシ処理を指示するフラグが“０１”に設定される。メモリコントローラ３０は、指示フラグの値に応じて、可変レイテンシ処理又は固定レイテンシ処理の実行を決定する。この場合、メモリコントローラ３０は、読み出しアドレスを対象アドレスデータ４３に登録されたアドレスと比較する処理（ステップＳ４１２，Ｓ６１２）を実行しなくてもよい。
【０１１７】
また、ホスト装置１０及びメモリコントローラ３０は、固定レイテンシ期間５１の長さに基づいて、固定レイテンシ処理を実行するか否かを判断してもよい。この場合、ホスト装置１０及びメモリコントローラ３０には、固定レイテンシ期間５１との比較に用いられる閾値が設定される。
【０１１８】
ホスト装置１０及びメモリコントローラ３０は、図５に示す処理により固定レイテンシ期間５１を生成した場合、固定レイテンシ期間５１を閾値と比較する。固定レイテンシ期間５１が閾値より長い場合、ホスト装置１０は、固定レイテンシ処理用のアクセス制御を実行し、メモリコントローラ３０は、固定レイテンシ処理を実行する。ホスト装置１０が読み出しデータ５２を受信した後に、固定レイテンシ期間５１が、ホスト装置１０及びメモリコントローラ３０において更新され、再び閾値と比較される。
【０１１９】
一方、生成された固定レイテンシ期間５１が閾値以下である場合、ホスト装置１０は、可変レイテンシ処理用のアクセス制御を実行し、メモリコントローラ３０は、可変レイテンシ処理を実行する。ホスト装置１０が読み出しデータ５２を受信した後に、固定レイテンシ期間５１が、ホスト装置１０及びメモリコントローラ３０において更新され、再び閾値と比較される。
【０１２０】
｛変形例３｝
上記実施の形態では、メモリコントローラ３０が、固定レイテンシ処理を実行する場合、読み出しコマンドを受信してから固定レイテンシ期間５１を経過するまで読み出しデータ５２の送信を待機する例を説明したが、これに限られない。
【０１２１】
メモリコントローラ３０は、レイテンシ信号５４を検出してから固定レイテンシ期間５１を経過するまで、読み出しデータ５２の送信を待機してもよい。図１１は、読み出しデータ５２の送信タイミングの他の例を示す図である。
【０１２２】
図１１に示すように、メモリコントローラ３０は、読み出しコマンドを受信した後に、隠蔽信号でなく、ビジー信号の送信を開始する。この理由については後述する。メモリコントローラ３０は、レイテンシ信号５４を検出した場合、ビジー信号に変えてレディ信号を送信する。そして、メモリコントローラ３０は、レディ信号の後に続けて隠蔽信号の送信を開始する。
【０１２３】
ホスト装置１０は、レディ信号を固定レイテンシ期間５１の開始時刻と判断し、レディ信号を受信してから固定レイテンシ期間５１を経過するまで待機する。メモリコントローラ３０は、レディ信号を送信してから固定レイテンシ期間５１を経過した後に、読み出しデータ５２の送信を開始する。つまり、メモリコントローラ３０は、固定レイテンシ期間５１の開始時刻を通知するために、ビジー信号及びレディ信号を利用する。この場合であっても、読み出しデータ５２の送信タイミングを隠蔽することが可能となる。
【０１２４】
｛その他の変形例｝
上記実施の形態において、メモリコントローラ３０が、読み出しコマンドを受信してから固定レイテンシ期間５１を経過するまでの間、隠蔽信号を送信する例を説明したが、これに限られない。メモリコントローラ３０は、読み出しコマンドの受信を完了してから固定レイテンシ期間５１を経過するまでの間、隠蔽信号に代えてビジー信号及びレディ信号を送信してもよい。この場合であっても、対象アドレスのデータの送信タイミングが固定レイテンシ期間５１に基づいて決定される。第三者は、固定レイテンシ期間５１を特定できないため、複製品のコントローラは、レディ信号を固定レイテンシ期間５１に基づいて定められるタイミングで送信することができない。このように、隠蔽信号を使用しなくても、複製品の製造を困難とすることができる。
【０１２５】
上記実施の形態において、ホスト装置１０及びメモリコントローラ３０が固定レイテンシ期間５１をそれぞれ生成する例を説明したが、これに限られない。ホスト装置１０及びメモリコントローラ３０が、同一の固定レイテンシ期間５１を保持していればよい。
【０１２６】
例えば、ホスト装置１０のみが、固定レイテンシ期間５１を生成するようにしてもよい。この場合、固定レイテンシ期間５１は、乱数１３Ａのみから生成される。ホスト装置１０は、乱数交換コマンドに代えて、生成した固定レイテンシ期間５１をメモリコントローラ５０に送信すればよい。逆に、メモリコントローラ３０のみが、固定レイテンシ期間５１を生成し、生成した固定レイテンシ期間５１をホスト装置１０に送信してもよい。
【０１２７】
また、ホスト装置１０及びメモリコントローラに固定レイテンシ期間５１の初期値が予め設定されていてもよい。あるいは、固定レイテンシ期間５１の初期値がホスト装置１０のみに予め設定されてもよい。この場合、ホスト装置１０が、起動時に固定レイテンシ期間５１をメモリコントローラ３０に送信してもよい。
【０１２８】
また、上記実施の形態において、ホスト装置１０及びメモリコントローラ３０が固定レイテンシ期間５１を生成する際に乱数を交換する例を説明したが、これに限られない。乱数生成器１３及び３４が、同一のアルゴリズムを利用する擬似乱数生成器である場合、乱数の交換を省略することができる。具体的には、乱数生成器１３及び３４の両者は、予め設定されたタイミングで生成する乱数を更新することにより、同一の擬似乱数を生成する。これにより、ホスト装置１０とメモリコントローラ３０とが乱数を交換しなくてもよいため、固定レイテンシ期間５１の秘匿性を向上させることができる。乱数を更新するタイミングは、例えば、読み出しコマンドに基づく読み出し処理が所定の回数行われたときや、ホスト装置１０が乱数の更新を指示するコマンドを送信するときなどが考えられる。
【０１２９】
このように、ホスト装置１０とメモリコントローラ３０との間で、固定レイテンシ期間５１又は固定レイテンシ期間５１の生成に用いられる乱数が送受信されないようにすることにより、第三者が、固定レイテンシ期間５１又は固定レイテンシ期間５１に関するデータを特定することがさらに困難となるため、複製品を製造することをさらに困難にさせることができる。
【０１３０】
なお、上記の擬似乱数の利用は、乱数の交換を制限するものではない。例えば、乱数生成器１３及び３４が異なるアルゴリズムを用いて擬似乱数を生成してもよい。この場合、乱数生成器１３及び３４がそれぞれ生成した擬似乱数の交換が行われる。
【０１３１】
また、上記実施の形態において、固定レイテンシ処理が実行されるたびに、固定レイテンシ期間５１が更新される例を説明したが、ホスト装置１０及びメモリコントローラ３０は、固定レイテンシ期間５１を更新しなくてもよい。
【０１３２】
また、上記実施の形態で説明したメモリコントローラ３０の一部又は全部は、集積回路（例えば、ＬＳＩ、システムＬＳＩ等）として実現されるものであってもよい。
【０１３３】
また、上記実施の形態における各処理の一部又は全部をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【０１３４】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【符号の説明】
【０１３５】
１００  メモリシステム
１０  ホスト装置
１１  ＣＰＵ
１２  ＲＡＭ
１３，３４  乱数生成器
１４  ホスト側コントローラ
２０  半導体記憶装置
３０  メモリコントローラ
３１  コマンドデコーダ
３２  レイテンシ取得部
３２１，３２２  レジスタ
３３  アクセス制御部
４０  半導体メモリ
４３  対象アドレスデータ
５１  固定レイテンシ期間
５２  読み出しデータ
３３１  判断部
３３２  読み出し制御部
３３３  送信制御部
１４１  アクセス制御部
１４２  レイテンシ生成部
１４３  記憶部
【図１】
0006462537.tif 000002
【図２】
0006462537.tif 000003
【図３】
0006462537.tif 000004
【図４】
0006462537.tif 000005
【図５】
0006462537.tif 000006
【図６】
0006462537.tif 000007
【図７】
0006462537.tif 000008
【図８】
0006462537.tif 000009
【図９】
0006462537.tif 000010
【図１０】
0006462537.tif 000011
【図１１】
0006462537.tif 000012