(57)【要約】【課題】所定の単位ごとに難読化処理が施された機密情報にアクセスする際に、従来の方式に比してメモリアクセスのレイテンシを改善できるコントローラを提供する。【解決手段】アクセスアドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路２０１と、難読化情報を保持する難読化情報保持回路２０２と、難読化情報保持回路２０２中のアクセスアドレスに対応付けられた難読化情報を用いて、アクセスアドレスで指定されるデータの符号化または復号化を行う符号／復号化回路２０３と、難読化情報をその基となるアドレスと対応付けて管理し、アクセス要求を受けるとアクセス要求中のアクセスアドレスが難読化情報保持回路２０２中の難読化情報の基となるアドレスに一致するかを判定し、判定結果に基づいて難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス／難読化情報関連付け回路２０４と、を備える。【選択図】図２
2011181000.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と不揮発性の第１の記憶部との間で揮発性の第２の記憶部を介してデータ転送を行うコントローラにおいて、
アクセスアドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、
前記難読化情報を保持する難読化情報保持回路と、
前記難読化情報保持回路中の前記アクセスアドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、
前記難読化情報をその基となるアドレスと対応付けて管理し、アクセス要求を受けると前記アクセス要求中のアクセスアドレスが以前用いられ前記難読化情報保持回路に保持されている難読化情報の基となるアドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス／難読化情報関連付け回路と、
を備えることを特徴とするコントローラ。
【請求項２】
ホスト装置と不揮発性の第１の記憶部との間で揮発性の第２の記憶部を介してデータ転送を行うコントローラにおいて、
アクセスアドレスまたは隣接アドレス算出回路で算出された隣接アドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、
前記難読化情報を保持する難読化情報保持回路と、
前記アクセスアドレスまたは前記隣接アドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、
アクセス要求中のアクセスアドレスに隣接する隣接アドレスを算出する隣接アドレス算出回路と、
前記アクセス要求を受けると、前記アクセス要求中のアクセスアドレスが前回のアクセス要求時に前記隣接アドレス算出回路で算出された隣接アドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス判定回路と、
を備えることを特徴とするコントローラ。
【請求項３】
前記難読化情報をその基となるアドレスと対応付けて管理するアドレス／難読化情報関連付け回路をさらに備え、
前記難読化情報保持回路は、複数の難読化情報を保持可能に構成され、
前記アドレス判定回路は、前記アクセス要求中のアクセスアドレスが前回のアクセス要求時に前記隣接アドレス算出回路で算出された隣接アドレスまたは以前用いられ前記難読化情報保持回路に保持されている難読化情報の基となるアドレスに一致するかを判定し、一致しない場合には、前記難読化情報生成回路に前記アクセスアドレスに対応する難読化情報の生成を指示し、一致する場合に前記アクセスアドレスを前記アドレス／難読化情報関連付け回路に出力し、
前記アドレス／難読化情報関連付け回路は、前記アドレス判定回路からの前記アクセスアドレスに対応する難読化情報を使用するように切替指示を前記難読化情報保持回路に出力することを特徴とする請求項２に記載のコントローラ。
【請求項４】
ホスト装置と不揮発性の第１の記憶部との間で揮発性の第２の記憶部を介してデータ転送を行うコントローラにおいて、
アクセス要求のアクセス時刻を含む時刻情報に基づいて難読化情報を生成する難読化情報生成回路と、
前記難読化情報を保持する難読化情報保持回路と、
前記難読化情報保持回路中の前記アクセス時刻に対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、
前記アクセス要求を受けると、つぎのアクセス要求の予想される次アクセス時刻を算出する次アクセス時刻算出回路と、
アクセス要求を受けると、前記アクセス要求がなされた時刻が、前回のアクセス要求時に前記次アクセス時刻算出回路で算出された次アクセス時刻に一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアクセス時刻判定回路と、
を備えることを特徴とするコントローラ。
【請求項５】
不揮発性の第１の記憶部と、
揮発性の第２の記憶部と、
ホスト装置と前記第１の記憶部との間で前記第２の記憶部を介してデータ転送を行うコントローラと、
を備える半導体記憶装置において、
前記コントローラは、
アクセスアドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、
前記難読化情報を保持する難読化情報保持回路と、
前記難読化情報保持回路中の前記アクセスアドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、
前記難読化情報をその基となるアドレスと対応付けて管理し、アクセス要求を受けると前記アクセス要求中のアクセスアドレスが以前用いられ前記難読化情報保持回路に保持されている難読化情報の基となるアドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス／難読化情報関連付け回路と、
を備えることを特徴とする半導体記憶装置。
【請求項６】
不揮発性の第１の記憶部と、
揮発性の第２の記憶部と、
ホスト装置と前記第１の記憶部との間で前記第２の記憶部を介してデータ転送を行うコントローラと、
を備える半導体記憶装置において、
前記コントローラは、
アクセスアドレスまたは隣接アドレス算出回路で算出された隣接アドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、
前記難読化情報を保持する難読化情報保持回路と、
前記アクセスアドレスまたは前記隣接アドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、
アクセス要求中のアクセスアドレスに隣接する隣接アドレスを算出する隣接アドレス算出回路と、
前記アクセス要求を受けると、前記アクセス要求中のアクセスアドレスが前回のアクセス要求時に前記隣接アドレス算出回路で算出された隣接アドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス判定回路と、
を備えることを特徴とする半導体記憶装置。
【請求項７】
前記難読化情報をその基となるアドレスと対応付けて管理するアドレス／難読化情報関連付け回路をさらに備え、
前記難読化情報保持回路は、複数の難読化情報を保持可能に構成され、
前記アドレス判定回路は、前記アクセス要求中のアクセスアドレスが前回のアクセス要求時に前記隣接アドレス算出回路で算出された隣接アドレスまたは以前用いられ前記難読化情報保持回路に保持されている難読化情報の基となるアドレスに一致するかを判定し、一致しない場合には、前記難読化情報生成回路に前記アクセスアドレスに対応する難読化情報の生成を指示し、一致する場合に前記アクセスアドレスを前記アドレス／難読化情報関連付け回路に出力し、
前記アドレス／難読化情報関連付け回路は、前記アドレス判定回路からの前記アクセスアドレスに対応する難読化情報を使用するように切替指示を前記難読化情報保持回路に出力することを特徴とする請求項６に記載の半導体記憶装置。
【請求項８】
不揮発性の第１の記憶部と、
揮発性の第２の記憶部と、
ホスト装置と前記第１の記憶部との間で前記第２の記憶部を介してデータ転送を行うコントローラと、
を備える半導体記憶装置において、
前記コントローラは、
アクセス要求のアクセス時刻を含む時刻情報に基づいて難読化情報を生成する難読化情報生成回路と、
前記難読化情報を保持する難読化情報保持回路と、
前記難読化情報保持回路中の前記アクセス時刻に対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、
前記アクセス要求を受けると、つぎのアクセス要求の予想される次アクセス時刻を算出する次アクセス時刻算出回路と、
アクセス要求を受けると、前記アクセス要求がなされた時刻が、前回のアクセス要求時に前記次アクセス時刻算出回路で算出された次アクセス時刻に一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアクセス時刻判定回路と、
を備えることを特徴とする半導体記憶装置。
【請求項９】
不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備える半導体記憶装置の制御方法において、
前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求中のアクセスアドレスに対応した難読化情報が保持されているか判定し、
前記判定の結果、前記難読化情報が保持されていない場合に、
前記アクセスアドレスを含むアドレス情報に基づいて前記難読化情報を生成する工程と、
前記難読化情報を前記アクセスアドレスに対応付けて保持する工程と、
前記難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す工程と、
を含む処理を行い、
前記判定の結果、前記難読化情報が保持されている場合に、前記難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法。
【請求項１０】
不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備える半導体記憶装置の制御方法において、
前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求中のアクセスアドレスが、前回のアクセス要求時に生成された第１の隣接アドレスに一致するか判定し、
前記判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致しない場合に、
前記アクセスアドレスを含むアドレス情報に基づいて第１の難読化情報を生成する工程と、
前記第１の難読化情報を前記アクセスアドレスに対応付けて保持する工程と、
前記アクセスアドレスに隣接する第２の隣接アドレスを算出する工程と、
前記第１の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す工程と、
算出した前記第２の隣接アドレスを含むアドレス情報に基づいて第２の難読化情報を生成する工程と、
前記第２の隣接アドレスに対応付けて前記第２の難読化情報を保持する工程と、
を含む処理を行い、
前記判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致する場合に、前記第１の隣接アドレスに対応付けて保持された第３の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法。
【請求項１１】
前記アクセスアドレスが前記第１の隣接アドレスに一致する場合に、
前記アクセスアドレスに隣接する前記第２の隣接アドレスを算出する工程と、
算出した前記第２の隣接アドレスを含むアドレス情報に基づいて前記第２の難読化情報を生成する工程と、
前記第２の隣接アドレスに対応付けて前記第２の難読化情報を保持する工程と、
を含む処理をさらに行うことを特徴とする請求項１０に記載の半導体記憶装置の制御方法。
【請求項１２】
不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備えるメモリシステムの制御方法において、
前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求中のアクセスアドレスが、前回のアクセス要求時に生成された第１の隣接アドレスに一致するか第１の判定を行い、
前記第１の判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致する場合に、前記第１の隣接アドレスに対応付けて保持された第１の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行い、
前記第１の判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致しない場合に、前記アクセスアドレスに対応した第２の難読化情報が保持されているか第２の判定をさらに行い、
前記第２の判定の結果、前記第２の難読化情報が保持されていない場合に、
前記アクセスアドレスを含むアドレス情報に基づいて前記第２の難読化情報を生成する工程と、
前記第２の難読化情報を前記アクセスアドレスに対応付けて保持する工程と、
前記アクセスアドレスに隣接する第２の隣接アドレスを算出する工程と、
前記第２の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す工程と、
前記第２の隣接アドレスを含むアドレス情報に基づいて第３の難読化情報を生成する工程と、
前記第２の隣接アドレスに対応付けて前記第４の難読化情報を保持する工程と、
を含む処理を行い、
前記第２の判定の結果、前記第２の難読化情報が保持されている場合に、前記第２の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法。
【請求項１３】
前記第１の判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致する場合、または前記第２の判定の結果、前記第２の難読化情報が保持されている場合に、
前記アクセスアドレスに隣接する前記第２の隣接アドレスを算出する工程と、
前記第２の隣接アドレスを含むアドレス情報に基づいて前記第３の難読化情報を生成する工程と、
前記第２の隣接アドレスに対応付けて前記第３の難読化情報を保持する工程と、
を含む処理をさらに行うことを特徴とする請求項１２に記載の半導体記憶装置の制御方法。
【請求項１４】
不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備える半導体記憶装置の制御方法において、
前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求のアクセス時刻が、前回のアクセス要求時に算出された第１の次アクセス時刻に一致するかを判定し、
前記判定の結果、前記アクセス時刻が前記第１の次アクセス時刻に一致しない場合に、
前記アクセス時刻を含む時刻情報に基づいて第１の難読化情報を生成する工程と、
前記第１の難読化情報を保持する工程と、
前記アクセス時刻のつぎの第２の次アクセス時刻を算出する工程と、
前記第１の難読化情報を用いて、前記アクセス要求で指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセス要求で指定されるデータを復号化して前記第２の記憶部から読み出す工程と、
前記第２の次アクセス時刻に基づいて第２の難読化情報を生成する工程と、
前記第２の次アクセス時刻に対応付けて前記第２の難読化情報を保持する工程と、
を含む処理を行い、
前記判定の結果、前記アクセス時刻が前記第１の次アクセス時刻に一致する場合に、前記第１の次アクセス時刻に対応付けて保持された第３の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法。
【請求項１５】
前記アクセス時刻が前記第１の次アクセス時刻に一致する場合に、
前記アクセス時刻のつぎの前記第２の次アクセス時刻を算出する工程と、
前記第２の次アクセス時刻に基づいて前記第２の難読化情報を生成する工程と、
前記第２の難読化情報を保持する工程と、
を含む処理をさらに行うことを特徴とする請求項１４に記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置を制御するコントローラ、このコントローラを備える半導体記憶装置、および半導体記憶装置の制御方法に関する。
【背景技術】
【０００２】
オープンシステムの一般ユーザ向けコンピュータで、プログラム自体やプログラムが扱う情報が不正に覗き見されないようにする技術が提案されている（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１０８４４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、メモリアクセスのレイテンシを改善することができるコントローラ、半導体記憶装置および半導体記憶装置の制御方法を提供する。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、ホスト装置と不揮発性の第１の記憶部との間で揮発性の第２の記憶部を介してデータ転送を行うコントローラにおいて、アクセスアドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、前記難読化情報を保持する難読化情報保持回路と、前記難読化情報保持回路中の前記アクセスアドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、前記難読化情報をその基となるアドレスと対応付けて管理し、アクセス要求を受けると前記アクセス要求中のアクセスアドレスが以前用いられ前記難読化情報保持回路に保持されている難読化情報の基となるアドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス／難読化情報関連付け回路と、を備えることを特徴とするコントローラが提供される。
【０００６】
また、本発明の一態様によれば、ホスト装置と不揮発性の第１の記憶部との間で揮発性の第２の記憶部を介してデータ転送を行うコントローラにおいて、アクセスアドレスまたは隣接アドレス算出回路で算出された隣接アドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、前記難読化情報を保持する難読化情報保持回路と、前記アクセスアドレスまたは前記隣接アドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、アクセス要求中のアクセスアドレスに隣接する隣接アドレスを算出する隣接アドレス算出回路と、前記アクセス要求を受けると、前記アクセス要求中のアクセスアドレスが前回のアクセス要求時に前記隣接アドレス算出回路で算出された隣接アドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス判定回路と、を備えることを特徴とするコントローラが提供される。
【０００７】
さらに、本発明の一態様によれば、ホスト装置と不揮発性の第１の記憶部との間で揮発性の第２の記憶部を介してデータ転送を行うコントローラにおいて、アクセス要求のアクセス時刻を含む時刻情報に基づいて難読化情報を生成する難読化情報生成回路と、前記難読化情報を保持する難読化情報保持回路と、前記難読化情報保持回路中の前記アクセス時刻に対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、前記アクセス要求を受けると、つぎのアクセス要求の予想される次アクセス時刻を算出する次アクセス時刻算出回路と、アクセス要求を受けると、前記アクセス要求がなされた時刻が、前回のアクセス要求時に前記次アクセス時刻算出回路で算出された次アクセス時刻に一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアクセス時刻判定回路と、を備えることを特徴とするコントローラが提供される。
【０００８】
また、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、ホスト装置と前記第１の記憶部との間で前記第２の記憶部を介してデータ転送を行うコントローラと、を備える半導体記憶装置において、前記コントローラは、アクセスアドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、前記難読化情報を保持する難読化情報保持回路と、前記難読化情報保持回路中の前記アクセスアドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、前記難読化情報をその基となるアドレスと対応付けて管理し、アクセス要求を受けると前記アクセス要求中のアクセスアドレスが以前用いられ前記難読化情報保持回路に保持されている難読化情報の基となるアドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス／難読化情報関連付け回路と、を備えることを特徴とする半導体記憶装置が提供される。
【０００９】
さらに、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、ホスト装置と前記第１の記憶部との間で前記第２の記憶部を介してデータ転送を行うコントローラと、を備える半導体記憶装置において、前記コントローラは、アクセスアドレスまたは隣接アドレス算出回路で算出された隣接アドレスを含むアドレス情報に基づいて難読化情報を生成する難読化情報生成回路と、前記難読化情報を保持する難読化情報保持回路と、前記アクセスアドレスまたは前記隣接アドレスに対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、アクセス要求中のアクセスアドレスに隣接する隣接アドレスを算出する隣接アドレス算出回路と、前記アクセス要求を受けると、前記アクセス要求中のアクセスアドレスが前回のアクセス要求時に前記隣接アドレス算出回路で算出された隣接アドレスに一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアドレス判定回路と、を備えることを特徴とする半導体記憶装置が提供される。
【００１０】
また、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、ホスト装置と前記第１の記憶部との間で前記第２の記憶部を介してデータ転送を行うコントローラと、を備える半導体記憶装置において、前記コントローラは、アクセス要求のアクセス時刻を含む時刻情報に基づいて難読化情報を生成する難読化情報生成回路と、前記難読化情報を保持する難読化情報保持回路と、前記難読化情報保持回路中の前記アクセス時刻に対応付けられた前記難読化情報を用いて、前記第２の記憶部に書込まれるデータを難読化する符号化処理と、前記第２の記憶部に記憶されているデータの難読化を解除する復号化処理とを行う符号／復号化回路と、前記アクセス要求を受けると、つぎのアクセス要求の予想される次アクセス時刻を算出する次アクセス時刻算出回路と、アクセス要求を受けると、前記アクセス要求がなされた時刻が、前回のアクセス要求時に前記次アクセス時刻算出回路で算出された次アクセス時刻に一致するかを判定し、判定結果に基づいて前記難読化情報の生成の要否と保持されている難読化情報の使用の有無を制御するアクセス時刻判定回路と、を備えることを特徴とする半導体記憶装置が提供される。
【００１１】
さらに、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備える半導体記憶装置の制御方法において、前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求中のアクセスアドレスに対応した難読化情報が保持されているか判定し、前記判定の結果、前記難読化情報が保持されていない場合に、前記アクセスアドレスを含むアドレス情報に基づいて前記難読化情報を生成する工程と、前記難読化情報を前記アクセスアドレスに対応付けて保持する工程と、前記難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す工程と、を含む処理を行い、前記判定の結果、前記難読化情報が保持されている場合に、前記難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法が提供される。
【００１２】
また、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備える半導体記憶装置の制御方法において、前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求中のアクセスアドレスが、前回のアクセス要求時に生成された第１の隣接アドレスに一致するか判定し、前記判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致しない場合に、前記アクセスアドレスを含むアドレス情報に基づいて第１の難読化情報を生成する工程と、前記第１の難読化情報を前記アクセスアドレスに対応付けて保持する工程と、前記アクセスアドレスに隣接する第２の隣接アドレスを算出する工程と、前記第１の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す工程と、算出した前記第２の隣接アドレスを含むアドレス情報に基づいて第２の難読化情報を生成する工程と、前記第２の隣接アドレスに対応付けて前記第２の難読化情報を保持する工程と、を含む処理を行い、前記判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致する場合に、前記第１の隣接アドレスに対応付けて保持された第３の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法が提供される。
【００１３】
さらに、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備えるメモリシステムの制御方法において、前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求中のアクセスアドレスが、前回のアクセス要求時に生成された第１の隣接アドレスに一致するか第１の判定を行い、前記第１の判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致する場合に、前記第１の隣接アドレスに対応付けて保持された第１の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行い、前記第１の判定の結果、前記アクセスアドレスが前記第１の隣接アドレスに一致しない場合に、前記アクセスアドレスに対応した第２の難読化情報が保持されているか第２の判定をさらに行い、前記第２の判定の結果、前記第２の難読化情報が保持されていない場合に、前記アクセスアドレスを含むアドレス情報に基づいて前記第２の難読化情報を生成する工程と、前記第２の難読化情報を前記アクセスアドレスに対応付けて保持する工程と、前記アクセスアドレスに隣接する第２の隣接アドレスを算出する工程と、前記第２の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す工程と、前記第２の隣接アドレスを含むアドレス情報に基づいて第３の難読化情報を生成する工程と、前記第２の隣接アドレスに対応付けて前記第４の難読化情報を保持する工程と、を含む処理を行い、前記第２の判定の結果、前記第２の難読化情報が保持されている場合に、前記第２の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法が提供される。
【００１４】
また、本発明の一態様によれば、不揮発性の第１の記憶部と、揮発性の第２の記憶部と、を備える半導体記憶装置の制御方法において、前記第２の記憶部に対するアクセス要求が発生すると、前記アクセス要求のアクセス時刻が、前回のアクセス要求時に算出された第１の次アクセス時刻に一致するかを判定し、前記判定の結果、前記アクセス時刻が前記第１の次アクセス時刻に一致しない場合に、前記アクセス時刻を含む時刻情報に基づいて第１の難読化情報を生成する工程と、前記第１の難読化情報を保持する工程と、前記アクセス時刻のつぎの第２の次アクセス時刻を算出する工程と、前記第１の難読化情報を用いて、前記アクセス要求で指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセス要求で指定されるデータを復号化して前記第２の記憶部から読み出す工程と、前記第２の次アクセス時刻に基づいて第２の難読化情報を生成する工程と、前記第２の次アクセス時刻に対応付けて前記第２の難読化情報を保持する工程と、を含む処理を行い、前記判定の結果、前記アクセス時刻が前記第１の次アクセス時刻に一致する場合に、前記第１の次アクセス時刻に対応付けて保持された第３の難読化情報を用いて、前記アクセスアドレスで指定されるデータを符号化して前記第２の記憶部に記憶し、または前記アクセスアドレスで指定されるデータを復号化して前記第２の記憶部から読み出す処理を行うことを特徴とする半導体記憶装置の制御方法が提供される。
【発明の効果】
【００１５】
本発明によれば、メモリアクセスのレイテンシを改善することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、半導体記憶装置の構成の一例を模式的に示すブロック図である。
【図２】図２は、第１の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。
【図３】図３は、第１の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。
【図４】図４は、第２の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。
【図５】図５は、第２の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。
【図６】図６は、第３の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。
【図７】図７は、第３の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。
【図８】図８は、定期的にデータの書き込み／読み出しが発生する場合の一例を示す図である。
【図９】図９は、第４の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。
【図１０】図１０は、第４の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
特許文献１に開示された技術では、ソフトウェアベンダは、平文プログラムを所定の長さのブロック毎に分割し、ブロック毎に異なるブロック対応鍵を用いて暗号化を行って暗号プログラムを作成する。ブロック対応鍵をブロック数に応じて用意するのではなく、複数の鍵を生成するための基本となる定数Ｃｘと、Ｃｘに基づいて生成した複数の中間値を暗号化する鍵Ｋｘと、の２つを配布鍵として用意し、この配布鍵から各ブロック対応鍵を生成するようにしている。具体的には、ブロック毎にＣｘに基づいて生成される中間値を鍵Ｋｘで暗号化したものがブロック対応鍵となる。この配布鍵は、配布先のコンピュータのプロセッサの公開鍵で暗号化され、暗号プログラムとともに配布先のコンピュータの２次記憶装置に記憶される。
【００１８】
配布先のコンピュータで暗号プログラムを実行する場合には、プロセッサは、２次記憶装置から暗号プログラムをメモリに配置し、アクセス要求のあったアドレス範囲の暗号プログラムがキャッシュメモリへと読み込まれる。このとき、プロセッサでは、アクセス要求のあったアドレスと配布鍵の定数Ｃｘとを用いて、復号化するためのブロック対応鍵を生成する処理を行った後、ブロック対応鍵を用いてメモリから読み出した暗号プログラムのブロックを復号化し、キャッシュメモリへと格納する。
【００１９】
このように、アクセス要求があったブロック毎に、ブロック対応鍵を計算して求め、このブロック対応鍵を用いて復号化の処理を行うという方法では、メモリアクセスのレイテンシが増加してしまい、システム応答速度の低下につながってしまう問題点があった。
【００２０】
以下に添付図面を参照して、本発明の実施の形態にかかるコントローラ、半導体記憶装置および半導体記憶装置の制御方法を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００２１】
最初に、上記特許文献１についての問題点を説明し、その後に、特許文献１の問題点を解決する本発明の実施の形態について説明を行う。既に述べたように、特許文献１の方法では、アクセスを行う暗号プログラムの範囲がアドレスで指定された後に、その指定されたアドレスに対応するブロックを復号化するためのブロック対応鍵を生成する処理を行い、そのブロック対応鍵を用いて暗号プログラムの復号化を行っていた。
【００２２】
そのため、たとえば以前指定されたアドレスと同じアドレスが指定された場合でも、アクセスを行う暗号プログラムの範囲に対応するブロックを復号化するためのブロック対応鍵の生成処理を行って、そのブロック対応鍵を用いて暗号プログラムの復号化を行わなければならなかった。つまり、アドレス指定後に、ブロック対応鍵を生成する処理の時間だけ平文プログラムへアクセスする時間が遅くなってしまうという問題点があった。
【００２３】
また、一般的にプロセッサは、プロセッサの処理可能な最小単位の１倍よりも大きい長さでデータを要求することが多い。たとえば、上記特許文献１でのブロックで、数ブロック分の長さのデータをプロセッサが要求することが確率的に多い。このような場合に、特許文献１に記載の方法では、プロセッサによって暗号プログラム中の第１のブロックに対応するアドレスが指定されると、第１のブロックに対応した第１のブロック対応鍵を生成し、第１のブロック鍵で第１のブロックを復号化してキャッシュメモリに格納し、つぎに第２のブロックについても同様の処理を行っていた。このように、１ブロック分よりも大きなデータに対するアクセスが生じる場合にも、特許文献１の方法では、それぞれのブロックのアクセス要求が来た後にブロック対応鍵の生成処理を行っているので、プロセッサが平文プログラムへアクセスするには、ブロック対応鍵の生成処理とそのブロック対応鍵を用いた復号化処理の後となり、アクセス要求がなされてから実際にプロセッサが平文プログラムにアクセスするまでに時間を要してしまうという問題点があった。
【００２４】
そこで、以下では、これらの従来技術の問題点を解決することができる本発明の実施の形態について説明を行う。
【００２５】
（第１の実施の形態）
図１は、半導体記憶装置の構成の一例を模式的に示すブロック図である。ここでは、半導体記憶装置として、ＮＡＮＤ型フラッシュメモリを主記憶装置として有するＳＳＤ（Solid  State  Drive）１を例に挙げている。図１に示されるように、ＳＳＤ１は、パーソナルコンピュータなどのホスト装置にＳＡＴＡ（Serial  Advanced  Technology  Attachment）インタフェースなどの通信規格で接続され、ホスト装置の外部メモリとして機能する。ＳＳＤ１は、ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリであるＮＡＮＤメモリ２と、ホスト装置とＮＡＮＤメモリ２との間のデータ転送を制御する転送コントローラとしてのＳＳＤコントローラ３と、ＳＳＤコントローラ３によってデータ転送のためのバッファ領域として使用される揮発性メモリであるＤＲＡＭ（Dynamic  Random  Access  Memory）４と、を備える。
【００２６】
ＳＳＤコントローラ３は、データアクセス用バス１０１および回路制御用バス１０２を備える。回路制御用バス１０２には、ＳＳＤコントローラ３全体を制御するプロセッサ１０３と、ＮＡＮＤメモリ２に記憶された各管理プログラム（ファームウエア）をブートするブート用プログラムが格納されたＲＯＭ（Read  Only  Memory）１０４が接続されている。
【００２７】
データアクセス用バス１０１には、データ作業領域およびファームウェア展開領域として使用されるＳＲＡＭ（Static  RAM）１０５がＳＲＡＭコントローラ１０６を介して接続されている。ＮＡＮＤメモリ２に記憶されているファームウェアは起動時、ＲＯＭ１０４に記憶されたブート用プログラムによってＳＲＡＭ１０５に転送され、展開される。プロセッサ１０３は、ＳＲＡＭ１０５に展開されたファームウェアを実行することによって、ＳＳＤコントローラ３全体を制御する。
【００２８】
また、データアクセス用バス１０１には、ＤＲＡＭ４に対するリード／ライト制御を実行するコントローラとしてのＤＲＡＭコントローラ１０７が接続されている。ＤＲＡＭコントローラ１０７は、転送データをＤＲＡＭ４に書き込み、書き込んだ転送データを読み出す一連のＤＲＡＭアクセスの前後で発生するエラーを検出し、アクセス時にエラーが頻発する領域を使用停止させる。また、ＤＲＡＭコントローラ１０７は、ＳＳＤ１の外部に読み出されたくない機密情報をプロセッサ１０３の指示にしたがって、復号化処理（難読化を解除する処理）を行ったり、符号化処理（難読化を実行する処理）を行ったりする。したがって、ＤＲＡＭ４には符号化処理が施されたデータが格納される。
【００２９】
ＳＡＴＡインタフェースコントローラ（ＳＡＴＡコントローラ）１０８、ＮＡＮＤ用エラー訂正回路１０９、およびＮＡＮＤコントローラ１１０は、データアクセス用バス１０１と回路制御用バス１０２との両方に接続されている。ＳＡＴＡコントローラ１０８は、ＳＡＴＡインタフェースを介してホスト装置との間でデータを送受信する。
【００３０】
ＮＡＮＤコントローラ１１０は、ＮＡＮＤメモリ２に対するインタフェース機能とＮＡＮＤメモリ２に対するアクセス時に発生するエラーを訂正するエラー訂正機能を有する。ＮＡＮＤコントローラ１１０のエラー訂正機能は、第２の訂正符号のエンコードを行い、また、第１の誤り訂正符号のエンコードおよびデコードを行う。ＮＡＮＤ用エラー訂正回路１０９は、第２の誤り訂正符号のデコードを行う。第１の誤り訂正符号、第２の誤り訂正符号は、たとえば、ハミング符号、ＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号、ＲＳ（Reed  Solomon）符号、あるいはＬＤＰＣ（Low  Density  Parity  Check）符号などであり、第２の誤り訂正符号の訂正能力は、第１の誤り訂正符号の訂正能力よりも高いとする。
【００３１】
また、ＮＡＮＤコントローラ１１０は、ＤＲＡＭコントローラ１０７と同様に、ＳＳＤ１の外部に読み出されたくない機密情報をプロセッサ１０３の指示にしたがって、復号化処理（難読化を解除する処理）を行ったり、符号化処理（難読化を実行する処理）を行ったりしてもよい。したがって、ＮＡＮＤメモリ２には符号化処理が施されたデータが格納されることとしてもよい。ＤＲＡＭコントローラ１０７における難読化処理とＮＡＮＤコントローラ１１０における難読化処理とは共通のアルゴリズムに基づいて実行されてもよいし、異なるアルゴリズムに基づいて実行されてもよい。
【００３２】
このような構成のＳＳＤ１で、たとえばユーザ情報などの機密情報がＮＡＮＤメモリ２またはＤＲＡＭ４に格納されることがある。たとえば、本実施の形態では、ＮＡＮＤメモリ２およびＤＲＡＭ４はＳＳＤコントローラ３の外部に実装されているので、このような機密情報へのアクセスに対して、何も制限をかけない場合には、そのままの状態でＳＳＤ１の外部に流出してしまう可能性がある。そのため、本実施の形態では、ＤＲＡＭコントローラ１０７が、ＤＲＡＭ４に書込まれるデータに対して難読化処理を施し、ＤＲＡＭ４からプロセッサ１０３に読み込まれるデータに対して難読化処理を解除する処理を施すようにしている。なお、以下では、ＤＲＡＭコントローラ１０７中の難読化処理を行う機能部分を難読化処理部というものとする。また、データの内少なくとも機密情報（ユーザ情報など）に対しては、ＤＲＡＭ４への書き込み時に難読化処理が施される。なお、ＮＡＮＤコントローラ１１０においても同様に、機密情報に対しては、ＮＡＮＤメモリ２への書き込み時に難読化処理が施されることとしてもよい。
【００３３】
図２は、第１の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。難読化処理部２００は、難読化情報生成回路２０１と、難読化情報保持回路２０２と、符号／復号化回路２０３と、アドレス／難読化情報関連付け回路２０４と、を有する。
【００３４】
難読化情報生成回路２０１は、プロセッサ１０３から指示されるアクセスアドレスを受け、アドレス／難読化情報関連付け回路２０４から難読化情報生成の指示を受けると、そのアクセスアドレスに基づいて難読化処理（以下、符号化処理という）を行うためのまたは難読化処理を解除する処理（以下、復号化処理という）のための鍵となる難読化情報を生成する。この難読化情報は、たとえばアクセスアドレスを含むアドレス情報を入力として、公知のＡＥＳ（Advanced  Encryption  Standard）などの暗号化アルゴリズムを用いて生成される乱数データである。
【００３５】
難読化情報保持回路２０２は、難読化情報生成回路２０１で生成された難読化情報を、その難読化情報が使用される処理単位ごとに付されたアドレスに関連付けして保持する。なお、難読化情報保持回路２０２は、後述するアドレス／難読化情報関連付け回路２０４からの難読化情報切替指示に基づいて、保持されている１つの難読化情報を出力する。
【００３６】
符号／復号化回路２０３は、ＤＲＡＭ４に接続されるシステムバス（データバス）２２０と接続され、難読化情報保持回路２０２から出力された難読化情報を用いて、ＤＲＡＭ４に書込まれるデータに対しては符号化処理を行い、ＤＲＡＭ４からプロセッサ１０３に読み出されるデータに対しては復号化処理を行う。たとえば、ＤＲＡＭ４へのデータの書き込みの場合には、指定されたアクセスアドレスから始まる所定の大きさの平文のデータ列と、そのアクセスアドレスに対応する難読化情報保持回路２０２中の難読化情報と、の排他的論理和の演算を行って符号化し、この符号化された、すなわち難読化されたデータをＤＲＡＭ４に書込む。また、ＤＲＡＭ４中のデータの読み出しの場合には、アクセスアドレスで指定された所定の大きさの難読化処理が施されたデータ列と、そのアクセスアドレスに対応する難読化情報保持回路２０２中の難読化情報と、の排他的論理和の演算を行って難読化データを復号化し、この復号化された平文データをプロセッサ１０３に渡す処理を行う。
【００３７】
アドレス／難読化情報関連付け回路２０４は、難読化情報保持回路２０２に保持されている難読化情報とその基となるアクセスアドレスとの関連付けを行い、管理を行う。また、アドレス／難読化情報関連付け回路２０４は、難読化処理部２００にプロセッサ１０３からのアクセスアドレスが入力されると、アクセスアドレスが難読化情報保持回路２０２に保持されている難読化情報の基となるアドレスに一致するかを判定し、その判定結果に応じて難読化情報生成回路２０１で難読化情報を生成するか、難読化情報保持回路２０２に保持されている難読化情報を使用するかを制御する。具体的には、プロセッサ１０３からのアクセスアドレスが難読化情報保持回路２０２に保持されていないアドレスの場合には、難読化情報生成回路２０１が上記した難読化情報の生成処理を行うように制御する。また、プロセッサ１０３からのアクセスアドレスが難読化情報保持回路２０２に保持されているアドレスの場合には、難読化情報生成回路２０１で難読化情報の生成処理を行わないようにするとともに、指定されたアクセスアドレスに対応する難読化情報が使用されるように難読化情報保持回路２０２に難読化情報切替指示を与える。
【００３８】
つぎに、ＤＲＡＭコントローラ１０７によるデータアクセス時の制御方法について説明する。図３は、第１の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。まず、プロセッサ１０３からＤＲＡＭ４に対してアクセス要求が発生すると（ステップＳ１１）、アドレス／難読化情報関連付け回路２０４は、アクセス要求中のアクセスアドレスが、難読化情報保持回路２０２に保持されている難読化情報の基となるアドレスに一致するかを判定する（ステップＳ１２）。この処理の一例では、アドレス／難読化情報関連付け回路２０４は、アクセスアドレスに対応する難読化情報が難読化情報保持回路２０２に保持されているかを判定する。
【００３９】
要求のあったアクセスアドレスに対応する難読化情報が難読化情報保持回路２０２に保持されていない場合（ステップＳ１２でＮｏの場合）には、難読化情報生成回路２０１は、アクセスアドレスを含むアドレス情報を用いて難読化情報を生成し（ステップＳ１３）、生成した難読化情報をアクセスアドレスと対応付けして難読化情報保持回路２０２に保存する（ステップＳ１４）。この難読化情報とアクセスアドレスとは、アドレス／難読化情報関連付け回路２０４によって対応付けされる。
【００４０】
その後、符号／復号化回路２０３は、難読化情報保持回路２０２から取得し、ステップＳ１３で生成された難読化情報を用いて、システムバス２２０から受けたステップＳ１１でのプロセッサ１０３からのアクセスアドレスに対応するデータに関して符号化／復号化する処理を行う（ステップＳ１５）。たとえば、ＮＡＮＤメモリ２からＤＲＡＭ４にデータが書き込まれる場合には、符号／復号化回路２０３は、ＮＡＮＤメモリ２から読み出されたデータを、難読化情報を用いて符号化してＤＲＡＭ４へと書き込む。また、ＤＲＡＭ４からプロセッサ１０３へとデータが読み出される場合には、ＤＲＡＭ４に格納されているデータを、難読化情報を用いて復号化してプロセッサ１０３へと渡す。以上で、入力されたアクセス要求に対するデータの制御処理が終了する。
【００４１】
一方、ステップＳ１２で要求のあったアクセスアドレスに対応する難読化情報が難読化情報保持回路２０２に保持されている場合（ステップＳ１２でＹｅｓの場合）には、アドレス／難読化情報関連付け回路２０４は、難読化情報生成回路２０１に難読化情報の生成処理を行わせずに、アクセスアドレスに対応して保持されている難読化情報保持回路２０２中の難読化情報へと切り替える旨の難読化情報切替指示を難読化情報保持回路２０２に出力する（ステップＳ１６）。難読化情報保持回路２０２は、難読化情報切替指示を受けると、その指示に基づいて符号／復号化回路２０３によって使用される難読化情報を切替える処理を行う（ステップＳ１７）。この切替え処理によって、たとえば難読化情報保持回路２０２は、難読化情報切替指示に基づいた難読化情報を符号／復号化回路２０３に出力する。そして、符号／復号化回路２０３は、難読化情報保持回路２０２から出力された難読化情報を用いて、アクセスアドレスで指定されるデータを符号／復号化する（ステップＳ１８）。以上によって、ＤＲＡＭコントローラ１０７によるデータアクセス時の制御方法が終了する。
【００４２】
これによって、たとえば第１のアクセスアドレスでアクセス要求が発生した場合には、第１のアクセスアドレスに対応する第１の難読化情報が難読化情報生成回路２０１で生成され、第１のアクセスアドレスに対応づけて難読化情報保持回路２０２に保持され、符号／復号化回路２０３は第１の難読化情報で第１のアクセスアドレスで特定されるデータについて符号／復号化処理を行う。ついで、第２のアクセスアドレスでアクセス要求が発生した場合には、第２のアクセスアドレスに対応する難読化情報が難読化情報保持回路２０２には保持されていないので、同様に第２のアクセスアドレスに対応する第２の難読化情報が難読化情報生成回路２０１で生成され、第２のアクセスアドレスに対応づけて難読化情報保持回路２０２に保持され、符号／復号化回路２０３は第２の難読化情報で第２のアドレスで特定されるデータについて符号／復号化処理を行う。その後、再び第１のアクセスアドレスでアクセス要求が発生した場合には、アドレス／難読化情報関連付け回路２０４は、第１のアクセスアドレスに対応する第１の難読化情報が保持されているので、難読化情報保持回路２０２に第１の難読化情報を使用する旨の難読化情報切替指示を出す。そして、符号／復号化回路２０３は、難読化情報保持回路２０２中の第１の難読化情報を用いて符号／復号化処理を行う。
【００４３】
このように、以前アクセスされたアドレスと同じアクセスアドレスのアクセス要求が発生した場合には、以前生成された難読化情報を用いて符号／復号化処理が行われるので、アクセス要求が発生したアクセスアドレスに対応する難読化情報の生成処理を行わずに済む。なお、一度生成された難読化情報をどの程度の期間保持するかは任意である。たとえば、直前のアクセスで生成された難読化情報のみを保持する構成としてもよいし、２回、またはそれ以上前のアクセスで生成された難読化情報を保持することとしてもよい。
【００４４】
第１の実施の形態によれば、プロセッサ１０３から入力されるアクセスアドレスを含む情報を用いて難読化情報生成回路２０１で難読化情報を生成した後、この難読化情報を難読化情報保持回路２０２にアクセスアドレスと対応付けて保持した。これによって、同じアクセスアドレスへのアクセスが生じた場合に、再度難読化情報生成回路２０１で難読化情報を生成することなく、難読化情報保持回路２０２中に保存された難読化情報を用いて符号／復号化処理を行うことが可能になる。その結果、アクセスアドレスを受けるたびに難読化情報を生成する場合に比して、難読化情報を生成しない分だけＤＲＡＭ４へのアクセス時間を短縮化できるという効果を有する。
【００４５】
（第２の実施の形態）
第１の実施の形態では、同じアクセスアドレスにアクセスがあった場合のＤＲＡＭへのアクセス時間の短縮化を行っていたが、第２の実施の形態では、バーストアクセス時におけるＤＲＡＭへのアクセス時間の短縮化を行う場合について説明する。
【００４６】
図４は、第２の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。難読化処理部２００は、難読化情報生成回路２０１と、難読化情報保持回路２０２と、符号／復号化回路２０３と、隣接アドレス算出回路２０５と、アドレス判定回路２０６と、を備える。
【００４７】
難読化情報生成回路２０１は、プロセッサ１０３からアクセスアドレスが入力され、アドレス判定回路２０６から難読化情報生成の指示を受けると、あるいは隣接アドレス算出回路２０５から隣接アドレスが入力されると、入力されたアドレスを含むアドレス情報に基づいて難読化情報を生成する。なお、隣接アドレス算出回路２０５からの隣接アドレスの入力があった場合には、つぎのアドレスの入力があるまで、隣接アドレスに対応して生成した難読化情報を保持するものとする。
【００４８】
隣接アドレス算出回路２０５は、難読化処理部２００にアクセスアドレスが入力されると、入力されたアクセスアドレスに隣接するアドレスを算出する。ここで、プロセッサ１０３で処理可能な最低単位でアクセスアドレスは入力されるものとすると、隣接アドレスを、アクセスアドレスにプロセッサ１０３で処理可能な最低単位分のデータ量を加算したもの、および／またはアクセスアドレスからプロセッサ１０３で処理可能な最低単位分のデータ量を減算したもの、と定義する。つまり、隣接アドレス算出回路２０５は、難読化処理部２００に入力されたアクセスアドレスに、プロセッサ１０３で処理可能な最低単位分のデータ量を加算したもの、および／またはアクセスアドレスからプロセッサ１０３で処理可能な最低単位分のデータ量を減算したものを、隣接アドレスとして算出する。そして、算出した隣接アドレスを難読化情報生成回路２０１に出力する。なお、ここでは、隣接アドレスとして、入力されたアクセスアドレスに、プロセッサ１０３で処理可能な最低単位分のデータ量を加算したもののみを算出するものとする。
【００４９】
アドレス判定回路２０６は、難読化処理部２００に入力されるアクセスアドレスが、難読化処理部２００に入力された前回のアクセスアドレスについて、隣接アドレス算出回路２０５で算出された隣接アドレスと一致するかを判定し、その判定結果に応じて難読化情報生成回路２０１と難読化情報保持回路２０２とを制御する。具体的には、アクセスアドレスが前回入力されたアクセスアドレスに関して隣接アドレス算出回路２０５で算出された隣接アドレスと一致しない場合には、アクセスアドレスに対応する難読化情報を難読化情報生成回路２０１に生成するように指示を与える。また、アクセスアドレスが上記隣接アドレスと一致する場合には、難読化情報生成回路２０１で生成され、保持されている隣接アドレスに対応する難読化情報を用いる旨の難読化情報切替指示を難読化情報保持回路２０２に出力するとともに、難読化情報生成回路２０１には、入力されたアクセスアドレスを用いた難読化情報の生成処理を行わないように制御する。
【００５０】
なお、難読化情報保持回路２０２と符号／復号化回路２０３については、第１の実施の形態と同様であるので、その説明を省略する。
【００５１】
つぎに、ＤＲＡＭコントローラ１０７によるデータアクセス時の制御方法について説明する。図５は、第２の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。まず、プロセッサ１０３からＤＲＡＭ４に対してアクセス要求が発生すると（ステップＳ３１）、アドレス判定回路２０６は、前回のアクセス要求時に隣接アドレス算出回路２０５で算出された隣接アドレスと、要求のあったアクセスアドレスとが一致するかを判定する（ステップＳ３２）。
【００５２】
要求のあったアクセスアドレスが前回算出された隣接アドレスと一致しない場合（ステップＳ３２でＮｏの場合）には、難読化情報生成回路２０１は、保持している難読化情報を難読化情報保持回路２０２に保存し（ステップＳ３３）、入力されたアクセスアドレスを含むアドレス情報に基づいて難読化情報を生成する（ステップＳ３４）。また、ステップＳ３３〜Ｓ３４での処理と並行して、隣接アドレス算出回路２０５は、入力されたアクセスアドレスに隣接する隣接アドレスを算出し（ステップＳ３５）、難読化情報生成回路２０１に算出した隣接アドレスを出力する。その後、隣接アドレスが入力された難読化情報生成回路２０１は、ステップＳ３４で生成した難読化情報を難読化情報保持回路２０２に保存する（ステップＳ３６）。これによって、前回のアクセス要求時に生成された（ステップＳ３３で難読化情報保持回路２０２に保持されていた）難読化情報は消去されることになる。
【００５３】
その後、符号／復号化回路２０３は、難読化情報保持回路２０２から取得した（ステップＳ３４で生成された）難読化情報を用いて、システムバス２２０を介してプロセッサ１０３から受けたステップＳ３１でのアクセスアドレスに対応するデータに関して符号化／復号化する処理を行う（ステップＳ３７）。また、ステップＳ３７の符号化／復号化の処理と並行して、難読化情報生成回路２０１は、算出された隣接アドレスに対応する難読化情報を生成する（ステップＳ３８）。以上で、入力されたアクセス要求に対するデータの制御処理が終了する。
【００５４】
一方、ステップＳ３２で要求のあったアクセスアドレスが前回算出された隣接アドレスと一致する場合（ステップＳ３２でＹｅｓの場合）には、アドレス判定回路２０６は、入力されたアクセスアドレスに対応する難読化情報の生成を難読化情報生成回路２０１に行わせず、難読化情報生成回路２０１が隣接アドレスに対応して保持している難読化情報を符号／復号化処理に用いる旨の難読化情報切替指示を難読化情報保持回路２０２に出力する（ステップＳ３９）。
【００５５】
また、ステップＳ３９での処理と並行して、隣接アドレス算出回路２０５は、入力されたアクセスアドレスに隣接する隣接アドレスを算出し（ステップＳ４０）、難読化情報生成回路２０１に算出した隣接アドレスを出力する。隣接アドレスが入力された難読化情報生成回路２０１は、保持していた難読化情報を難読化情報保持回路２０２に保存する（ステップＳ４１）。以上の処理によって、たとえば難読化情報保持回路２０２に保持されていたデータが破棄され、 代わりに難読化情報生成回路２０１に保持されていた隣接アドレスに対応する難読化情報が難読化情報保持回路２０２に保存される。
【００５６】
その後、符号／復号化回路２０３は難読化情報保持回路２０２に保存されている（前回のアクセス要求時に生成された）難読化情報を用いて、アクセスアドレスで指定されるデータの符号／復号化処理を行う（ステップＳ４２）。また、ステップＳ４２での処理と並行して、難読化情報生成回路２０１は、ステップＳ４０で算出された隣接アドレスに対応する難読化情報を生成する（ステップＳ４３）。以上によって、入力されたアクセス要求に対するデータの制御処理が終了する。
【００５７】
これによって、最初の第１のアクセスアドレスについて第１の難読化情報が生成されるとともに、第１のアクセスアドレスに隣接する第２のアドレスが算出され、この第２のアドレスに対応する第２の難読化情報が生成される。そして、第１の難読化情報を用いて第１のアクセスアドレスに対応するデータの符号／復号化処理が行われた後、第２のアクセスアドレスでアクセス要求が出される。ここで、プロセッサ１０３が最低処理単位よりも長いデータへのアクセスをＮＡＮＤメモリ２から行うバーストアクセスが発生した場合には、第１のアクセスアドレスの後に第１のアクセスアドレスに隣接する第２のアクセスアドレスでのアクセス要求が発生する。このとき、第２のアクセスアドレスが既に算出された第２のアドレスと同じであるので、第２の難読化情報が既に生成された状態となる。つまり、難読化情報生成回路２０１は、第２のアクセスアドレスでのアクセス要求が発生した後に、第２のアクセスアドレスに対応する難読化情報を生成することがなく、符号／復号化回路２０３は既に生成された第２のアドレスに対応する第２の難読化情報を用いて符号／復号化処理を行うことができる。
【００５８】
第２の実施の形態によれば、最初のアクセスアドレスがＤＲＡＭコントローラ１０７に入力されると、アクセスアドレスに隣接する隣接アドレスを算出し、その隣接アドレスに対応する難読化情報を前もって生成するようにした。これによって、バーストアクセスが発生した場合に、最初に入力されたアクセスアドレスに隣接する隣接アドレスに対応する難読化情報が生成されているので、つぎのアクセスアドレスの入力を待って難読化情報を生成することなく、既に生成された難読化情報を用いてＤＲＡＭ４上のデータにアクセスすることが可能となる。その結果、つぎのアクセスアドレスが入力されてからそのアクセスアドレスに基づいて難読化情報を生成し、符号／復号化処理を行う場合に比して、時間を大幅に短縮することができるという効果を有する。
【００５９】
なお、上述した説明では、隣接アドレスとして、入力されたアクセスアドレスにプロセッサ１０３で処理可能な最低単位分のデータ量を加算したもののみを算出する場合を例に挙げたが、入力されたアクセスアドレスからプロセッサ１０３で処理可能な最低単位分のデータ量を減算したもののみを算出するようにしてもよい。
【００６０】
また、入力されたアクセスアドレスにプロセッサ１０３で処理可能な最低単位分のデータ量を加算したものと、入力されたアクセスアドレスからプロセッサ１０３で処理可能な最低単位分のデータ量を減算したものの２つの隣接アドレスを算出するようにしてもよい。この場合には、難読化情報保持回路２０２が、複数の難読化情報をアクセスアドレス／隣接アドレスと対応付けて保持可能な構成を有し、アドレス判定回路２０６は、難読化情報保持回路２０２で保持される難読化情報をその基となるアドレスと関連付けて管理する機能をさらに有する構成とすればよい。そして、このような構成では、アクセスアドレスが前回算出した隣接アドレスに一致した場合には、アドレス判定回路２０６は、隣接アドレスに関連付けて保存されている難読化情報に切替えるように難読化情報保持回路２０２に対して難読化情報切替指示を出せばよい。
【００６１】
（第３の実施の形態）
第３の実施の形態では、第１と第２の実施の形態を組み合わせた難読化処理部について説明する。図６は、第３の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。難読化処理部２００は、難読化情報生成回路２０１と、難読化情報保持回路２０２と、符号／復号化回路２０３と、アドレス／難読化情報関連付け回路２０４と、隣接アドレス算出回路２０５と、アドレス判定回路２０６と、を備える。
【００６２】
難読化情報生成回路２０１は、プロセッサ１０３からアクセスアドレスが入力され、アドレス判定回路２０６で難読化情報の生成の指示を受けると、あるいは隣接アドレス算出回路２０５から隣接アドレスが入力されると、入力されたアドレスを含むアドレス情報に基づいて難読化情報を生成する。
【００６３】
難読化情報保持回路２０２は、難読化情報生成回路２０１で生成された難読化情報を、その難読化情報の基となるアドレス（アクセスアドレス／隣接アドレス）に対応づけて保持する。ここでは、一度アクセスのあった難読化情報と、前回アクセスされたアクセスアドレスの隣接アドレスの難読化情報と、を少なくとも保持するものとする。
【００６４】
アドレス判定回路２０６は、プロセッサ１０３からアクセスアドレスが入力されると、アクセスアドレスが前回入力されたアクセスアドレスに隣接する隣接アドレスに一致するか、あるいはアクセスアドレスが難読化情報保持回路２０２に保持されている難読化情報の基となるアドレスに一致するかを判定し、その判定結果に応じて難読化情報生成回路２０１を制御する。アクセスアドレスが隣接アドレスまたは難読化情報保持回路２０２に保持されている難読化情報に対応するアドレスと一致する場合には、難読化情報保持回路２０２に一致したアドレス（アクセスアドレス）をアドレス／難読化情報関連付け回路２０４に出力するとともに、難読化情報生成回路２０１で難読化情報を生成しないように制御する。また、アクセスアドレスが隣接アドレスまたは難読化情報保持回路２０２に保持されている難読化情報に対応するアドレスと一致しない場合には、難読化情報生成回路２０１に入力されたアクセスアドレスに対応する難読化情報を生成するように制御する。
【００６５】
アドレス／難読化情報関連付け回路２０４は、難読化情報保持回路２０２に保持されている難読化情報を、アクセスアドレスまたは隣接アドレスに対応づけて管理するとともに、アドレス判定回路２０６からアドレスが入力されると、そのアドレス（アクセスアドレスまたは隣接アドレス）に対応付けて保持されている難読化情報に切替えるように難読化情報切替指示を難読化情報保持回路２０２に出力する。
【００６６】
なお、符号／復号化回路２０３と隣接アドレス算出回路２０５については、第１および第２の実施の形態と同様であるので、その説明を省略する。
【００６７】
つぎに、ＤＲＡＭコントローラ１０７によるアクセス時の制御方法について説明する。図７は、第３の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。まず、プロセッサ１０３からＤＲＡＭ４に対してアクセス要求が発生すると（ステップＳ５１）、アドレス判定回路２０６は、前回のアクセス要求時に隣接アドレス算出回路２０５で算出された隣接アドレスと、要求のあったアクセスアドレスとが一致するかを判定する（ステップＳ５２）。
【００６８】
ついで、要求のあったアクセスアドレスが前回算出された隣接アドレスと一致しない場合（ステップＳ５２でＮｏの場合）には、アドレス判定回路２０６は、アクセスアドレスが難読化情報保持回路２０２に保存されている難読化情報に対応付けられたアドレスに一致するかを判定する（ステップＳ５３）。
【００６９】
アクセスアドレスが難読化情報保持回路２０２に保存されている難読化情報に対応付けられたアドレスに一致しない場合（ステップＳ５３でＮｏの場合）には、アドレス判定回路２０６は、難読化情報生成回路２０１に難読化情報を生成するように指示し、難読化情報生成回路２０１は、アクセスアドレスに基づいて難読化情報を生成し（ステップＳ５４）、難読化情報保持回路２０２にアクセスアドレスに対応づけて保存する（ステップＳ５５）。また、ステップＳ５４〜Ｓ５５の処理と並行して、隣接アドレス算出回路２０５は、入力されたアクセスアドレスの隣接アドレスを算出する（ステップＳ５６）。
【００７０】
その後、符号／復号化回路２０３は、難読化情報保持回路２０２から取得した（ステップＳ５４で生成された）難読化情報を用いて、データの符号／復号化の処理を行う（ステップＳ５７）。このデータの符号／復号化の処理は、第１の実施の形態で説明したものと同様である。また、ステップＳ５７の処理と並行して、難読化情報生成回路２０１では、ステップＳ５６で算出された隣接アドレスに基づいて難読化情報の生成を行い（ステップＳ５８）、隣接アドレスに対応づけて難読化情報保持回路２０２に保存する（ステップＳ５９）。以上によって、ＤＲＡＭコントローラ１０７によるアクセス時の制御方法が終了する。
【００７１】
一方、ステップＳ５３でアクセスアドレスが難読化情報保持回路２０２に保存されている難読化情報に対応付けられたアドレスに一致する場合（ステップＳ５３でＹｅｓの場合）には、アドレス判定回路２０６は、入力されたアクセスアドレスに対応する難読化情報の生成処理を難読化情報生成回路２０１に行わせず、アクセスアドレスをアドレス／難読化情報関連付け回路２０４に出力する。そして、アドレス／難読化情報関連付け回路２０４は、入力されたアクセスアドレスに対応する難読化情報に切替える旨の難読化情報切替指示を難読化情報保持回路２０２に出力する（ステップＳ６０）。難読化情報保持回路２０２では、難読化情報切替指示に基づいて使用する難読化情報を切替える（ステップＳ６１）。また、ステップＳ６０〜Ｓ６１での処理と並行して、隣接アドレス算出回路２０５は、アクセスアドレスの隣接アドレスを算出し（ステップＳ６２）、その結果を難読化情報生成回路２０１へと出力する。
【００７２】
また、ステップＳ５２でアクセスアドレスが隣接アドレスに一致する場合（ステップＳ５２でＹｅｓの場合）には、アドレス判定回路２０６は、入力されたアクセスアドレスに対応する難読化情報の生成処理を難読化情報生成回路２０１に行わせず、アクセスアドレスをアドレス／難読化情報関連付け回路２０４に出力する。そして、アドレス／難読化情報関連付け回路２０４は、アクセスアドレスを受信すると、アクセスアドレス（隣接アドレス）に対応する難読化情報に切替える旨の難読化情報切替指示を難読化情報保持回路２０２に出力する（ステップＳ６３）。その後、難読化情報保持回路２０２では、難読化情報切替指示に基づいて符号／復号化回路２０３によって使用される難読化情報を切替える（ステップＳ６４）。このステップＳ６３〜Ｓ６４での処理と並行して、隣接アドレス算出回路２０５は、入力されたアクセスアドレスの隣接アドレスを算出する（ステップＳ６５）。
【００７３】
その後またはステップＳ６１，Ｓ６２の後、符号／復号化回路２０３では、難読化情報保持回路２０２に格納された難読化情報を用いてデータの符号／復号化処理を行う（ステップＳ６６）。また、このステップＳ６６の処理と並行して、難読化情報生成回路２０１は、ステップＳ６２またはステップＳ６５で生成された隣接アドレスに対応する難読化情報を生成し（ステップＳ６７）、難読化情報保持回路２０２に隣接アドレスと関連付けて保存する（ステップＳ６８）。以上によって、ＤＲＡＭコントローラ１０７によるアクセス時の制御方法が終了する。
【００７４】
第３の実施の形態によれば、以前にアクセスされたアドレスに対応する難読化情報を保持しているので、そのアドレスに再びアクセスが生じた場合には、難読化情報を生成することなく符号／復号化処理を行うことができる。また、アクセスされたアドレスの隣接アドレスに対応する難読化情報を前もって生成し、保持しているので、バーストアクセスが生じたときには、つぎのアドレスが指定される前に既にそのアドレスについての難読化情報が生成されているので、アクセス要求に対する応答時間を短縮化することができる。
【００７５】
なお、第１〜第３の実施の形態では、アクセスアドレスとしては、特に指定しなかったが、ＳＳＤコントローラ３内のプロセッサ１０３が指定する論理アドレスでもよいし、ＤＲＡＭ４の物理アドレスでもよい。アクセスアドレスがＤＲＡＭ４の物理アドレスである場合には、たとえばプロセッサ１０３で管理している論理アドレスとＤＲＡＭ４中の物理アドレスとを対応付ける管理テーブルを用いて、プロセッサ１０３がまたはＤＲＡＭコントローラ１０７が論理アドレスをＤＲＡＭ４中の物理アドレスに変換すればよい。
【００７６】
（第４の実施の形態）
第４の実施の形態では、定期的にアクセスが発生する場合でのデータの難読化処理または難読化を解除する処理を速めることができる場合について説明する。図８は、定期的にデータの書き込み／読み出しが発生する場合の一例を示す図である。たとえばプロセッサ１０３の処理できる最低単位に比して大きなデータ５００が読み出される場合を考える。このデータ５００は、たとえば、図８（ａ）に示されるように、プロセッサ１０３が処理可能な最低単位（以下、アクセス単位ともいう）の大きさの第１のデータ５０１、第２のデータ５０２、第３のデータ５０３、・・・、からなり、ＮＡＮＤメモリ２に格納されているものとする。
【００７７】
ＮＡＮＤメモリ２からデータ５００が外部に読み出される場合には、ＤＲＡＭ４に一度格納されてから、プロセッサ１０３がＤＲＡＭ４から読み出す。この場合、元のデータ５００について、アクセス単位でＤＲＡＭ４へデータ５０１，５０２，５０３，・・・を難読化して書込む処理と、ＤＲＡＭ４内の難読化されたデータ５０１，５０２，５０３，・・・をアクセス単位で平文にして読み出す処理とが、所定の周期で行われることになる。つまり、図８（ｂ）に示されるように、元のデータ５００中の第１のデータ５０１が時刻ｔ０で難読化情報Ｎ１を用いて符号化処理されてＤＲＡＭ４へ書込みが行われ、時刻ｔ１で難読化情報Ｎ１を用いて復号化処理されてＤＲＡＭ４から読み出され、時刻ｔ０のΔｔ後の時刻ｔ２で元のデータ５００中の第２のデータ５０２が難読化情報Ｎ２を用いて符号化処理されてＤＲＡＭ４へ書込みが行われ、時刻ｔ３で難読化情報Ｎ２を用いて復号化処理されてＤＲＡＭ４から読み出され、時刻ｔ２のΔｔ後の時刻ｔ４で元のデータ５００中の第３のデータ５０３が難読化情報Ｎ３を用いて符号化処理されてＤＲＡＭ４へ書込みが行われ、時刻ｔ５で難読化情報Ｎ３を用いて復号化処理されてＤＲＡＭ４から読み出され、・・・、という処理が所定の時間間隔Δｔで繰り返し実行されることになる。
【００７８】
このように、所定の周期でＤＲＡＭ４への書き込み／読み出しが発生するような場合には、第１〜第３の実施の形態で説明したようなアクセスアドレスに基づいて難読化情報を生成する場合だけでなく、アクセス時刻に基づいて難読化情報を生成することも可能である。そこで、第４の実施の形態では、図８のようにバーストアクセスが発生し、周期的にＤＲＡＭ４への書き込み／読み出しが発生する場合の難読化処理を行うコントローラとその制御方法について説明する。
【００７９】
図９は、第４の実施の形態によるコントローラの難読化処理部の構成の一例を模式的に示すブロック図である。難読化処理部２００は、難読化情報生成回路２０１と、難読化情報保持回路２０２と、符号／復号化回路２０３と、次アクセス時刻算出回路２０７と、アクセス時刻判定回路２０８と、を備える。
【００８０】
難読化情報生成回路２０１は、プロセッサ１０３からアクセスがあり、アクセス時刻判定回路２０８によって難読化情報生成の指示を受けると、そのアクセス時刻を含む時刻情報に基づいて難読化情報を生成する。また、難読化情報生成回路２０１は、次アクセス時刻算出回路２０７から次アクセス時刻が入力されると、その次アクセス時刻を含む時刻情報に基づいて難読化情報を生成する。この次アクセス時刻に基づいて生成される難読化情報は、つぎのアクセス要求のアクセス時刻前に前もって生成される。なお、次アクセス時刻算出回路２０７からの次アクセス時刻の入力があった場合には、つぎの時刻情報の入力があるまで、次アクセス時刻に対応して生成した難読化情報を保持するものとする。
【００８１】
次アクセス時刻算出回路２０７は、プロセッサ１０３からのアクセス要求が入力されると、そのアクセス時刻のつぎの次アクセス時刻を算出する。この次アクセス時刻は、たとえば、アクセス単位のデータをＮＡＮＤメモリ２からＤＲＡＭ４へと書き込み、さらに読み出すのに要する時間Δｔを最初のアクセス時刻に付加することによって算出することができる。算出された次アクセス時刻は、難読化情報生成回路２０１とアクセス時刻判定回路２０８に出力される。
【００８２】
アクセス時刻判定回路２０８は、最初のアクセスのアクセス時刻からつぎのアクセス要求のアクセス時刻が、次アクセス時刻算出回路２０７で前回のアクセス要求時に前もって算出された次アクセス時刻であるか否かを判定する。つぎのアクセスのアクセス時刻が次アクセス時刻算出回路２０７で算出された次アクセス時刻でない場合には、難読化情報生成回路２０１に難読化情報の生成を指示し、つぎのアクセスのアクセス時刻が次アクセス時刻算出回路２０７で算出された次アクセス時刻である場合には、難読化情報生成回路２０１に難読化情報の生成を行わせないようにするとともに、難読化情報保持回路２０２に保持されている予め生成された難読化情報を用いる旨の難読化情報切替指示を難読化情報保持回路２０２に出力する。
【００８３】
なお、難読化情報保持回路２０２については、第２の実施の形態と同様であり、符号／復号化回路２０３については、第１の実施の形態と同様であるので、その説明を省略する。
【００８４】
つぎに、ＤＲＡＭコントローラ１０７によるデータアクセス時の制御方法について説明する。図１０は、第４の実施の形態によるデータアクセス時の制御方法の一例を示すフローチャートである。まず、プロセッサ１０３からＤＲＡＭ４に対してアクセス要求が発生すると（ステップＳ７１）、アクセス時刻判定回路２０８は、アクセス時刻が、ステップＳ７１のアクセス要求の前回のアクセス要求時に次アクセス時刻算出回路２０７によって算出された次アクセス時刻と一致するかを判定する（ステップＳ７２）。
【００８５】
ついで、アクセス時刻が前もって算出された次アクセス時刻と一致しない場合（ステップＳ７２でＮｏの場合）には、難読化情報生成回路２０１は、保持している難読化情報を難読化情報保持回路２０２に保存し（ステップＳ７３）、入力されたアクセス要求のアクセス時刻を含む時刻情報に基づいて難読化情報を生成する（ステップＳ７４）。また、ステップＳ７３〜Ｓ７４での処理と並行して、次アクセス時刻算出回路２０７は、入力されたアクセス要求のつぎに予想されるアクセス要求の次アクセス時刻を算出し（ステップＳ７５）、難読化情報生成回路２０１に算出した次アクセス時刻を出力する。その後、次アクセス時刻が入力された難読化情報生成回路２０１は、ステップＳ７４で生成した難読化情報を難読化情報保持回路２０２に保存する（ステップＳ７６）。これによって、前回のアクセス要求時に生成された（ステップＳ７３で難読化情報保持回路２０２に保持されていた）難読化情報は消去されることになる。
【００８６】
その後、符号／復号化回路２０３は、難読化情報保持回路２０２から取得した（ステップＳ７４で生成された）難読化情報を用いて、システムバス２２０を介してプロセッサ１０３から受けたステップＳ７１でのアクセス要求に対応するデータに関して符号化／復号化する処理を行う（ステップＳ７７）。また、ステップＳ７７の符号化／復号化の処理と並行して、難読化情報生成回路２０１は、算出された次アクセス時刻に対応する難読化情報を生成する（ステップＳ７８）。以上で、入力されたアクセス要求に対するデータの制御処理が終了する。
【００８７】
一方、ステップＳ７２でアクセス要求のアクセス時刻が前もって算出された次アクセス時刻と一致する場合（ステップＳ７２でＹｅｓの場合）には、アクセス時刻判定回路２０８は、入力されたアクセス要求のアクセス時刻（次アクセス時刻）に対応する難読化情報の生成を難読化情報生成回路２０１に行わせず、難読化情報生成回路２０１が次アクセス時刻に対応して保持している難読化情報を符号／復号化処理に用いる旨の難読化情報切替指示を難読化情報保持回路２０２に出力する（ステップＳ７９）。
【００８８】
また、ステップＳ７９での処理と並行して、次アクセス時刻算出回路２０７は、アクセス要求のつぎに入力されると予想されるアクセス要求の次アクセス時刻を算出し（ステップＳ８０）、難読化情報生成回路２０１に算出した次アクセス時刻を出力する。次アクセス時刻が入力された難読化情報生成回路２０１は、それまで保持していた難読化情報を難読化情報保持回路２０２に保存する（ステップＳ８１）。以上の処理によって、たとえば難読化情報保持回路２０２に保持されていたデータが破棄され、 代わりに難読化情報生成回路２０１に保持されていた次アクセス時刻に対応する難読化情報が難読化情報保持回路２０２に保存される。
【００８９】
その後、符号／復号化回路２０３は難読化情報保持回路２０２に保存されている難読化情報を用いて、アクセスアドレスで指定されるデータの符号／復号化処理を行う（ステップＳ８２）。また、ステップＳ８２での処理と並行して、難読化情報生成回路２０１は、ステップＳ８０で算出された次アクセス時刻に対応する難読化情報を生成する（ステップＳ８３）。以上によって、入力されたアクセス要求に対するデータの制御処理が終了する。
【００９０】
このような構成によれば、プロセッサ１０３からのアクセス要求のアクセス時刻に基づいて難読化情報が生成されるとともに、そのアクセス時刻に所定の時刻を加算した次アクセス時刻と、この次アクセス時刻に基づいて難読化情報も生成される。これによって、たとえば最初のアクセスがバーストアクセスである場合には、所定の周期でデータのＤＲＡＭ４への書き込み／ＤＲＡＭ４からの読出し処理が行われるので、つぎのアクセス要求のアクセス時刻になってから難読化情報を生成する場合に比して、アクセス要求が出されてからデータへアクセスするまでの時間を短縮化することが可能となる。
【００９１】
第４の実施の形態によれば、所定の周期でＤＲＡＭ４への書き込み／ＤＲＡＭ４からの読み出しを行う場合に、最初のアクセスのアクセス時刻から次アクセス時刻を算出し、この次アクセス時刻に基づいて難読化情報を生成し、保持するようにした。これによって、バーストアクセスが生じた場合には、つぎのアクセスの指示が来る前に既に難読化情報を生成しているので、つぎのアクセス要求が入力されてからそのアクセス時刻に基づいて難読化情報を生成する場合に比して、難読化情報の生成にかかる時間を省略することができ、難読化にかかる時間を表面化させにくいメモリシステムを提供することが可能になるという効果を有する。
【００９２】
なお、上述した説明では、ＮＡＮＤメモリ２とＤＲＡＭ４とを備えるＳＳＤ１を例に挙げて説明したが、本発明がこれに限定されるものではない。半導体記憶装置として、機密情報を不揮発に記憶する第１の記憶部と、ホスト装置からの指示によって第１の記憶部に記憶されているデータを一時的に記憶する第２の記憶部と、を備える半導体記憶装置であって、第２の記憶部に記憶されるデータを難読化する場合一般について本発明を適用することができる。
【００９３】
また、難読化するデータとして、第１の記憶部に記憶されているすべてのデータを対象としてもよいし、第１の記憶部に記憶されているデータのうち、一部のデータのみを対象としてもよい。この場合には、たとえば第１の記憶部の所定のアドレス範囲に保存されているデータについては、第２の記憶部に展開する際に難読化処理を行い、その他のアドレス範囲に保存されているデータについては、第２の記憶部に展開する際に難読化処理を行わないように設定すればよい。
【符号の説明】
【００９４】
２００…難読化処理部、２０１…難読化情報生成回路、２０２…難読化情報保持回路、２０３…符号／復号化回路、２０４…アドレス／難読化情報関連付け回路、２０５…隣接アドレス算出回路、２０６…アドレス判定回路、２０７…次アクセス時刻算出回路、２０８…アクセス時刻判定回路、２２０…システムバス。
【図１】
2011181000.tif 000003
【図２】
2011181000.tif 000004
【図３】
2011181000.tif 000005
【図４】
2011181000.tif 000006
【図５】
2011181000.tif 000007
【図６】
2011181000.tif 000008
【図７】
2011181000.tif 000009
【図８】
2011181000.tif 000010
【図９】
2011181000.tif 000011
【図１０】
2011181000.tif 000012