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