(57)【要約】【課題】ＤＲＡＭのデータのリフレッシュを制御するための装置および方法を提供する。【解決手段】装置２は、データを保存するためのダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）６と、ＤＲＡＭ ６の各記憶場所に保存されているデータをリフレッシュするためのリフレッシュ・サイクルを定期的に行うようにＤＲＡＭ ６を制御するリフレッシュ制御回路１０と、リフレッシュ・サイクル中にＤＲＡＭ ６の記憶場所がリフレッシュされる順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するリフレッシュ・アドレス・シーケンス生成器１２とを備え、ＤＲＡＭ ６に保存されている保護データに対する差分電力解析（ＤＰＡ）攻撃を阻止するために、リフレッシュ・サイクル毎に異なるランダム順で記憶場所の少なくとも一部のアドレスでリフレッシュ・アドレス・シーケンスを生成する。【選択図】図１Ａ
2013161482.tif 000002
【特許請求の範囲】
【請求項１】
データを保存するためのダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）と、
前記ＤＲＡＭ内の各メモリに保存されているデータをリフレッシュするために前記ＤＲＡＭを制御し、定期的にＤＲＡＭのリフレッシュ・サイクルを実行させるように構成されたリフレッシュ制御回路と、
リフレッシュ・サイクル中に前記ＤＲＡＭの記憶場所がリフレッシュされる順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するように構成されたリフレッシュ・アドレス・シーケンス生成器と、
を具備し、
前記リフレッシュ・アドレス・シーケンス生成器は、リフレッシュ・サイクル毎に異なるランダム順で前記記憶場所の少なくとも一部のアドレスで前記リフレッシュ・アドレス・シーケンスを生成するように構成されることを特徴とする装置。
【請求項２】
前記リフレッシュ・アドレス・シーケンス生成器が、順次に、アドレスの順次アドレス・シーケンスを生成するように構成された順次アドレス・シーケンス生成器を含み、
前記リフレッシュ・アドレス・シーケンス生成器が、前記記憶場所の前記少なくとも一部の前記アドレスの順序をランダム化することにより、前記順次アドレス・シーケンスから前記リフレッシュ・アドレス・シーケンスを生成するようにさらに構成されることを特徴とする請求項１に記載の装置。
【請求項３】
少なくとも１つのランダム数を生成するように構成されたランダム数生成器をさらに具備し、
前記リフレッシュ・アドレス・シーケンス生成器が、前記少なくとも１つのランダム数に基づいて前記記憶場所の前記少なくとも一部の前記アドレスの順序をランダム化するようにさらに構成されることを特徴とする請求項１または２に記載の装置。
【請求項４】
前記ランダム数生成器が、各リフレッシュ・サイクル後、前記少なくとも１つのランダム数を変更するようにさらに構成されることを特徴とする請求項３に記載の装置。
【請求項５】
前記リフレッシュ・アドレス・シーケンス生成器が、前記ランダム数生成器が生成する第一のランダム数で前記アドレスにＸＯＲを適用することにより、前記記憶場所の少なくとも一部の前記アドレスの順序をランダム化するように構成された排他的論理和（ＸＯＲ）ゲートを含むことを特徴とする請求項３または４に記載の装置。
【請求項６】
前記リフレッシュ・アドレス・シーケンス生成器が、前記ランダム数生成器が生成する第２のランダム数に従って、前記記憶場所の前記少なくとも一部の前記アドレスのビット位置を並び替えるようにさらに構成されることを特徴とする請求項５に記載の装置。
【請求項７】
前記リフレッシュ・アドレス・シーケンス生成器が、前記第２のランダム数が指定するビット位置の数だけ前記アドレスをローテーションさせることにより、アドレスの前記リフレッシュ・アドレス・シーケンスの前記ビット位置を並び替えるようにさらに構成されることを特徴とする請求項６に記載の装置。
【請求項８】
前記リフレッシュ・シーケンス生成器が、第２のランダム数がとりうる各値についてオリジナルのビット位置と並べ替えたビット位置の間のマッピングを指定する変換行列を用いて、アドレスの前記リフレッシュ・アドレス・シーケンスの前記ビット位置を並べ替えるようにさらに構成されることを特徴とする請求項６に記載の装置。
【請求項９】
前記ＤＲＡＭが、連続するリフレッシュ・サイクルの間の最長推奨期間を表す推奨リフレッシュ期間を有しており、
前記リフレッシュ制御回路が、前記リフレッシュ・サイクルを前記推奨リフレッシュ期間の半分の期間で定期的に実行するように前記ＤＲＡＭを制御するようにさらに構成されることを特徴とする請求項１ないし８のいずれか１項に記載の装置。
【請求項１０】
データ処理を行うように構成された処理回路を含むことを特徴とする請求項１ないし９のいずれか１項に記載の装置。
【請求項１１】
前記処理回路と前記ＤＲＡＭとが、同一のシステム・オン・チップまたは同一のパッケージに集積されることを特徴とする請求項１０に記載の装置。
【請求項１２】
前記ＤＲＡＭと処理回路とが、別個の電源入力を有することを特徴とする請求項１０または１１に記載の装置。
【請求項１３】
前記処理回路と前記ＤＲＡＭとが、共通の電源入力を共有することを特徴とする請求項１０または１１に記載の装置。
【請求項１４】
前記リフレッシュ・アドレス・シーケンス生成器が、通常モードとランダム・モードとを有し、通常モードでは、前記リフレッシュ・アドレス・シーケンスを前記メモリの前記少なくとも一部のアドレスで順次に生成し、ランダム・モードでは、前記リフレッシュ・アドレス・シーケンスを前記記憶場所の前記少なくとも一部の前記アドレスでランダム順に生成することを特徴とする請求項１０ないし１３のいずれか１項に記載の装置。
【請求項１５】
前記処理回路が、通常モードと省電力モードとを有し、
前記リフレッシュ・アドレス・シーケンス生成器が、前記処理回路が前記通常モードで動作している場合に、前記通常モードで動作し、前記処理回路が前記省電力モードで動作している場合に、前記ランダム・モードで動作するようにさらに構成されることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記リフレッシュ制御回路が、前記処理回路による前記ＤＲＡＭへのアクセスを検出するように構成され、
前記リフレッシュ・アドレス・シーケンス生成器が、検出されたアクセス量が所定の閾値よりも大きい場合、通常モードで動作し、前記検出されたアクセス量が所定の閾値よりも小さい場合、ランダム・モードで動作するようにさらに構成されることを特徴とする請求項１４に記載の装置。
【請求項１７】
前記リフレッシュ制御回路は、前記リフレッシュ・アドレス・シーケンス生成器が、前記ランダム・モードで動作する場合、前記リフレッシュ・サイクルを、前記リフレッシュ・アドレス・シーケンス発生器が前記通常モードで動作するときの２倍の頻度で行うように前記ＤＲＡＭを制御するようにさらに構成されることを特徴とする請求項１４ないし１６のいずれか１項に記載の装置。
【請求項１８】
前記記憶場所の前記少なくとも一部には、前記ＤＲＡＭのすべての記憶場所が含まれることを特徴とする請求項１ないし１７のいずれか１項に記載の装置。
【請求項１９】
前記記憶場所の前記少なくとも一部には、機密情報を保存するための前記ＤＲＡＭの保護領域内の記憶場所が含まれることを特徴とする請求項１ないし１７のいずれか１項に記載の装置。
【請求項２０】
データを保存するためのダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）手段と、
前記ＤＲＡＭ手段の各記憶場所に保存されているデータをリフレッシュするためのリフレッシュ・サイクルを定期的に実行するように前記ＤＲＡＭ手段を制御するためのリフレッシュ制御手段と、
前記リフレッシュ・サイクル中に前記ＤＲＡＭ手段の記憶場所をリフレッシュする順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するためのリフレッシュ・アドレス・シーケンス生成手段と、
を具備し、
前記リフレッシュ・アドレス・シーケンス生成手段は、リフレッシュ・サイクル毎に異なるランダム順で前記記憶場所の少なくとも一部のアドレスでリフレッシュ・アドレス・シーケンスを生成することを特徴とする装置。
【請求項２１】
ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）にデータを保存するステップと、
前記ＤＲＡＭの各記憶場所に保存されているデータをリフレッシュするためのリフレッシュ・サイクルを定期的に実行するようにＤＲＡＭを制御するステップと、
リフレッシュ・サイクル中に前記ＤＲＡＭの記憶場所がリフレッシュされる順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するステップと、
を有し、
前記リフレッシュ・アドレス・シーケンスは、リフレッシュ・サイクル毎に異なるランダム順で前記記憶場所の少なくとも一部のアドレスで前記リフレッシュ・アドレス・シーケンスを生成することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）に関する。より詳細には、本発明はＤＲＡＭ内のデータのリフレッシュを制御するための技術に関する。
【背景技術】
【０００２】
ＤＲＡＭは、データの消失を防ぐためにメモリに保存されているデータを定期的にリフレッシュしなければならないタイプのメモリである。一般的な形式のＤＲＡＭでは、コンデンサを用いてデータを保存する。コンデンサは、０または１のビット値を表す放電または充電の状態におかれる。コンデンサは、時間の経過とともに電荷が漏れ、コンデンサを使って保存されているデータは、コンデンサが定期的にリフレッシュされない限り次第に失われてゆく。
【０００３】
本願では、ダイナミック・ランダム・アクセス・メモリおよびＤＲＡＭという用語は、（データがコンデンサまたは他のタイプの記憶素子を用いて保存されるか否かにかかわらず、）データ消失を避けるためにデータを定期的にリフレッシュする必要があるあらゆるタイプのメモリを表すために使用される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＤＲＡＭは、保護データおよび保護プログラム・コードの保存のための使用が増加している。これは、ＤＲＡＭに関連する処理論理回路と同一のシステム・オン・チップ（ＳＯＣ）またはパッケージにＤＲＡＭが集積されるようなシステムにおいて顕著である。例えば、三次元集積ＤＲＡＭは、複数積層のＳＯＣで使用される。外部からＤＲＡＭを隔離することで、攻撃者はＤＲＡＭと処理論理回路のインターフェイスを探ることが難しくなり、その結果、データはより安全にＤＲＡＭに保存される。
【０００５】
本技術は、ＤＲＡＭに保存されている保護データのセキュリティを高めるためのものである。
【課題を解決するための手段】
【０００６】
本発明の一態様は、データを保存するためのダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）と、ＤＲＡＭの各記憶場所内に保存されているデータを更新するために定期的にＤＲＡＭのリフレッシュ・サイクルを実行させるようにＤＲＡＭを制御するように構成されたリフレッシュ制御回路と、リフレッシュ・サイクル中にＤＲＡＭの記憶場所がリフレッシュされる順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するように構成されたリフレッシュ・アドレス・シーケンス生成器と、を備える装置を提供する。前記リフレッシュ・アドレス・シーケンス生成器は、リフレッシュ・サイクル毎に変化するランダム順で記憶場所の少なくとも一部のアドレスでリフレッシュ・アドレス・シーケンスを生成するように構成されている。
【０００７】
本技術では、ＤＲＡＭの内容が、電力差分解析（Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ（ＤＰＡ））などのセキュリティ攻撃に対して脆弱でありうることを認識している。ＤＰＡは、回路の電力消費を観測し、少なくとも一部の機密情報を推測する強力な攻撃である。例えば、ＤＰＡは暗号エンジンから秘密鍵を抽出するために使用されてきた。ＤＰＡを行うには、攻撃者は回路の電源供給ピンまたはグラウンド・サプライ・ピンを調べ、一定期間における回路の電力消費を観測する。電力消費は処理中のデータ値によって若干変化するため、回路が実行しているアルゴリズムの知識を必要とせずに、統計的手法を用いて機密情報を解読することが出来る。ＤＰＡを用いて機密情報が完全に特定できなくても、情報の一部を推測するためにＤＰＡが使用されることがある（例えば、ある値がほとんど０またはほとんど１であるビット値を含むか否かを知るために使用される）。これにより、機密情報のうちいくつかの可能性のある値を排除することが可能になり、その結果、情報の実際の値の解読を試みる為に、機密情報の各可能性のある値を試みる総当たり攻撃が成功する可能性が高まる。したがって、ＤＰＡはＤＲＡＭの保護内容を分析するために用いられる。
【０００８】
本技術では、ＤＲＡＭのリフレッシュ動作には、ＤＰＡ攻撃者が悪用可能なセキュリティ上の脆弱性があることを認識している。リフレッシュ動作は、定期的に行われるため、電力消費に繰り返し現れるパターンを探すことで電力消費のプロファイルの中でどの部分がリフレッシュ動作に対応するかをＤＰＡ攻撃者は比較的容易に見つけることができる。また、ＤＲＡＭの記憶場所は予測可能なシーケンスでリフレッシュされることが多いため、ＤＰＡ攻撃者はリフレッシュ・サイクル中の異なる時間に消費された電力が個々のどのＤＲＡＭ記憶場所のものであるかを容易につきとめて、ＤＲＡＭの内容についての情報を得ることができる。
【０００９】
この問題に対処するために、本技術ではリフレッシュ・アドレス・シーケンス生成器を提供している。このシーケンス生成器は、少なくともＤＲＡＭの記憶場所の一部のアドレスがリフレッシュ・サイクル毎に異なるランダム順になっているリフレッシュ・アドレス・シーケンスを生成する。これにより、リフレッシュされるＤＲＡＭの場所が予測可能なものでなくなり、リフレッシュ・サイクル中に特定の時点で電力が消費される個々の記憶場所をＤＰＡ攻撃者がマッピングするのは難しくなる。その結果、ＤＲＡＭに保存されているデータのセキュリティが強化される。
【００１０】
一例として、リフレッシュ・アドレス・シーケンス生成器によって生成されたリフレッシュ・アドレス・シーケンスには、ＤＲＡＭ内の各記憶場所を特定するアドレスのシーケンスを含んでよい。
【００１１】
しかしながら、一般的には、ＤＲＡＭのリフレッシュは、記憶場所の行単位で実行されることがより多い。この場合、リフレッシュ・アドレス・シーケンスは、記憶場所の行がリフレッシュされる順序を特定する行アドレスのシーケンスを含んでよい。記憶場所は、複数のグループ単位（またはクラスタ）でリフレッシュされることもあり、リフレッシュ・アドレス・シーケンスは、グループ（またはクラスタ）がリフレッシュされる順序を特定する。したがって、リフレッシュ・アドレス・シーケンスがＤＲＡＭのすべての記憶場所を個別に特定する必要は必ずしもない。同一行または同一グループ内の各記憶場所を同時にリフレッシュするが、記憶場所の行またはグループがリフレッシュされる順序をランダム化することで、ＤＰＡ攻撃は十分困難になる。
【００１２】
リフレッシュ・アドレス・シーケンス生成器は、順次にアドレス・シーケンスを生成する順次アドレスのシーケンス生成器を含んでもよい。リフレッシュ・アドレス・シーケンス生成器は、記憶場所の少なくとも一部のアドレスの順序をランダム化することにより、順次アドレスのシーケンスからリフレッシュ・アドレス・シーケンスを生成する。順次アドレス・シーケンス生成器は、通常のＤＲＡＭリフレッシュ・コントローラで既に提供されていることが多く、そのため、ランダム化されたリフレッシュ・アドレス・シーケンスを生成する開始点として再利用できる。
【００１３】
本装置は、少なくとも一つのランダム数を生成するためのランダム数生成器を含み、リフレッシュ・アドレス・シーケンス生成器は記憶場所の少なくとも一部のアドレスの順序を少なくとも一つのランダム数に基づいてランダム化する。例えば、ランダム数生成器は、シード値に基づき疑似ランダム数を生成する疑似ランダム数生成器である。
【００１４】
何回かのリフレッシュ・サイクルで同一のランダム数を維持してから、別のランダム数にすることも可能であるが、リフレッシュ・サイクル毎に少なくとも一つのランダム数がランダム数生成器によって変更されることが好ましい。これにより、リフレッシュ・アドレス・シーケンス内でのアドレスの順序が予測不可能な方式でリフレッシュ・サイクル毎に確実に変更されるようになり、起こり得るＤＰＡ攻撃を阻止することができる。
【００１５】
ＸＯＲ（排他的論理和）ゲートを使用して、ランダム数生成器が生成した最初のランダム数でアドレスのビット単位のＸＯＲ演算を行い、記憶場所の少なくとも一部のアドレスの順序をランダム化してもよい。Ｎビットのアドレスのシーケンスについては、そのシーケンスの各アドレスに同一のＮビットのランダム数でＸＯＲが適用される。このランダム数は、リフレッシュ・サイクル毎に変更される。ランダム数として、２Ｎの異なる値が有り得、リフレッシュのアドレスのシーケンスを順序付けするには２Ｎの異なる方法がある。例えば、３２ビットのアドレスの場合、２３２＝４２９４９６７２９６は大きな数となるので、ＤＰＡ攻撃者にとって、特定のリフレッシュ・サイクルに対してリフレッシュ・シーケンスを判断するのは非常に難しい。
【００１６】
ＸＯＲ演算を行うことに加えて、リフレッシュ・アドレス・シーケンス生成器もランダム数生成器が生成した第２のランダム数に従いアドレスのビット位置を並び替える。これにより、リフレッシュ・アドレス・シーケンスにさらなるエントロピーを与え、攻撃者がシーケンスの順序を判断するのがさらに難しくなる。アドレス内でビット位置を並び替え、ビット値の変更も行うことで、ＤＰＡ攻撃者にとって非常に不都合になる。これはＤＲＡＭ内で起こる行と列のアドレス指定に強く影響を与え、攻撃者は多くの追加要因を考慮しなければならなくなるためである。
【００１７】
アドレスのビット位置の並べ替えとＸＯＲ演算は、どのオペレーションが行われるかに関わらず同一の結果が得られるため、可換演算である。したがって、ビット位置の並び替えがＸＯＲ演算の前後のどちらで行われても問題はない。
【００１８】
アドレスのビット位置は様々な方法で並び替えることができる。例えば、こうしたアドレスを、第２のランダム数によって指定されるビット位置の数によってローテーションさせる。例えば、アドレス・ローテーションさせるために、シフト・レジスタが使用出来る。
【００１９】
または、オリジナルのビット位置と第２のランダム数がとりうる各可能値について並び替えたビット位置とのマッピングを変換行列で指定してもよい。ある第２のランダム数に対して、変換行列の適切な値は、オリジナル・アドレスのビットとリフレッシュ・アドレスのビットがどのようにマッピングされているかを特定するためにアクセスし、使用できる。
【００２０】
このビット位置の並べ替えは、それ自体、ＸＯＲ演算を実行することなく、リフレッシュ・アドレス・シーケンスの順序をランダム化するために使用してもよい。しかしながら、ビット位置の並べ替えは、すべて０ビット値またはすべて１ビット値から成るアドレスには何の効果もなく、ほとんどが０ビット値やほとんどが１ビット値のアドレスにもあまり効果がない。そのため、シーケンス内のすべてのアドレスをランダム化できるＸＯＲ演算を実行することが好ましい。
【００２１】
ＤＲＡＭのメーカーは、通常、連続するリフレッシュ・サイクル間の最大推奨期間を表す推奨リフレッシュ期間の情報を提供している。この推奨リフレッシュ期間内にデータ値がリフレッシュされなければ、データの正確性は保証できない。
【００２２】
したがって、通常ＤＲＡＭは、推奨リフレッシュ期間の間隔でリフレッシュ・サイクルを実行するように制御される。しかしながら、本技術では、以下を認識している。すなわち、リフレッシュ・アドレス・シーケンス内のメモリ・アドレスの順序をランダム化し、推奨リフレッシュ期間にリフレッシュ・サイクルが実行されると、一つのリフレッシュ・サイクルの始まり近く、および次のリフレッシュ・サイクルの終わり近くで、特定の記憶場所がリフレッシュされる可能性があり、同一の記憶場所の連続するリフレッシュの間の期間は、推奨リフレッシュ期間よりも長くなることがある。これは、データ消失につながりうる。
【００２３】
この問題に対処するために、リフレッシュ制御回路は、推奨リフレッシュ期間の半分の間隔でリフレッシュ・サイクルを定期的に実行するようにＤＲＡＭを制御してもよい。これにより、リフレッシュのシーケンスの順序がランダム化されていても、ある特定の記憶場所も、確実に推奨リフレッシュ期間内にリフレッシュされる。
【００２４】
本装置は、データ処理を実行するための処理回路を含んでもよい。実施形態によっては、ＤＲＡＭは処理回路とは別のチップ上にある外部メモリであってもよい。
【００２５】
しかしながら、処理回路とＤＲＡＭが同一のシステム・オン・チップまたは同一のパッケージに集積されている場合に本技術は特に有用である。こうしたケースでは、ＤＲＡＭと処理回路のインターフェイスは、攻撃者がアクセスしづらくなっているため、ＤＲＡＭは保護データを保存するために使用されることが多いからである。
【００２６】
ＤＲＡＭと処理回路は、別の電源入力を有するか、または共通の電源入力を共有する場合がある。ＤＲＡＭと処理回路が別の電源入力を有する場合、リフレッシュ動作中のＤＲＡＭの電力消費は、処理回路の電力消費と区別可能であり、ＤＲＡＭ専用の電源入力によって使われた電力を監視することでＤＲＡＭの内容をＤＰＡ攻撃者が検知しうるため、リフレッシュ・アドレス・シーケンスを常にランダム化することが好ましい。
【００２７】
一方、処理回路とＤＲＡＭが共通の電源入力を共有する場合、処理回路が使用する電力によって、ＤＲＡＭの電力消費プロファイルが識別しづらくなることがある。この場合、リフレッシュのシーケンスを必ずしもランダム化する必要はない。
【００２８】
したがって、リフレッシュ・アドレス・シーケンス生成器には、通常モードとランダム・モードがあってもよい。通常モードでは、リフレッシュ・アドレス・シーケンスは、順次のアドレスで生成されるが、ランダム・モードでは、リフレッシュ・アドレス・シーケンスは、ランダム順で記憶場所の少なくとも一部のアドレスで生成される。上記の理由から、ランダム・モードでは、リフレッシュ・サイクルは通常モードに比べて高い頻度で実行される必要がある。したがって、電力消費は大きくなり、リフレッシュ動作ではＤＲＡＭ帯域幅がより多く必要になり、その結果、プロセッサからのＤＲＡＭアクセスが遅延しうるため、処理性能に影響を及ぼす可能性がある。そのため、通常モードとランダム・モードを提供することにより、ユーザは、特定の要件に応じて、ランダム・モードによって強化されたセキュリティと、通常モードによる電力消費の削減および性能向上とをトレードオフすることができる。
【００２９】
処理回路は、通常モードと省電力モードを有してもよい。通常モード中は、処理回路が使用する電力は、ＤＰＡによってＤＲＡＭのアクティビティが特定されることを防ぐのに充分なものである。しかしながら、省電力モード中は、処理回路自体は、ほとんど電力を消費しない。そのため、この時、共有電源入力を介して使用される電力は主にＤＲＡＭのリフレッシュ動作によって生じるものである。つまり、通常モードよりも省電力モードで処理回路を使用する方が、ＤＲＡＭはＤＰＡ攻撃に対して脆弱になる。したがって、リフレッシュ・アドレス・シーケンス生成器は、処理回路が通常モードで動作中は通常モードで動作するように、また処理回路が省電力モードで動作中はランダム・モードで動作するように構成してもよい。
【００３０】
これ以外の方法として、または、この制御に加えて、リフレッシュ制御回路は、処理回路によるＤＲＡＭへのＤＲＡＭアクセスを検知してもよい。ＤＲＡＭアクセスの量が比較的多い場合、処理回路とＤＲＡＭ全体が消費する電力は、リフレッシュ動作以外に数多くの要因の影響を受けることがある。そのため、この場合、ランダム・モードを使用する必要はないかもしれない。一方、ＤＲＡＭアクセスが非常に少なくなってくると、例えば、処理回路がＤＲＡＭ以外のメモリに関わるオペレーションを実行している場合、全体的な電力プロファイルの中でＤＲＡＭのリフレッシュ動作が再び目立つようになるかもしれない。したがって、検出されたＤＲＡＭアクセスの量が所定の閾値よりも大きい場合に、リフレッシュ制御回路は、通常モードで動作し、検出されたＤＲＡＭアクセスの量が所定の閾値よりも小さい場合に、リフレッシュ制御回路は、ランダム・モードで動作してもよい。
【００３１】
ランダム・モードでは通常モードよりも２倍の頻度でリフレッシュ・サイクルを実行するようにＤＲＡＭを制御してもよい。これにより、ランダム・モード中に推奨リフレッシュ期間内に各ＤＲＡＭの記憶場所がリフレッシュされ、通常モード中には電力消費は低減され、リフレッシュ・サイクルをより低頻度で実行することより、処理性能を向上できる。
【００３２】
いくつかの実施形態では、ランダム化されたリフレッシュ・アドレス・シーケンスは、ＤＲＡＭのすべての記憶場所に対して使用できる。ＤＲＡＭのすべての記憶場所が保護データを保存している可能性はあまりないが、ランダム化されているアドレス数が多いほど、アドレスの順序付けの数が多くなり、ＤＰＡ攻撃者がＤＲＡＭの記憶場所にある内容を特定するために解明しなければならないエントロピーの量が増える。したがって、保護データを保存している記憶場所のアドレスだけでなく、非保護データを保存している記憶場所のアドレスをランダム化することにより、ＤＲＡＭの保護データのセキュリティを強化する。
【００３３】
一方、電力消費を低減するために、ＤＲＡＭの一部の記憶場所のアドレスだけを使用してランダム化することが可能であり、その一部以外の記憶場所のアドレスは順次のままになる。たとえば、ランダム化は、保護データ、秘密データ、機密データを保存するためのＤＲＡＭの保護部分に対応するアドレスだけに適用することもできる。この技術は、通常、保護部分が２Ｎの記憶場所または記憶の行を含み、メモリ・アドレスの自然境界にアライメントされる場合に最も効果を発揮する。
【００３４】
リフレッシュ制御回路とリフレッシュ・アドレス・シーケンス生成器は異なる方法で実装できる。例えば、本装置はＤＲＡＭを制御するためのメモリ・コントローラを含み、このメモリ・コントローラはリフレッシュ制御回路およびリフレッシュ・アドレス・シーケンス生成器を含む。このメモリ・コントローラは、ＤＲＡＭのリフレッシュをいつ、どのように行うかを制御する。
【００３５】
または、ＤＲＡＭはリフレッシュ制御回路とリフレッシュ・アドレス・シーケンス生成器を含む。この場合、ＤＲＡＭは自己のリフレッシュ動作を制御するため、装置の他の構成要素（例えば、メモリ・コントローラ）から見ると、ＤＲＡＭはリフレッシュが不要な静的なランダム・アクセス・メモリである。
【００３６】
本発明の別の態様は、データを保存するためのダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）手段と、ＤＲＡＭ手段の各記憶場所に保存されているデータをリフレッシュするためにリフレッシュ・サイクルを定期的に実行するＤＲＡＭ手段を制御するためのリフレッシュ制御手段と、リフレッシュ・サイクル中にＤＲＡＭ手段の記憶場所がリフレッシュされる順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するためのリフレッシュ・アドレス・シーケンス生成手段と、を備える装置を提供する。前記リフレッシュ・アドレス・シーケンス生成手段は、記憶場所の少なくとも一部のアドレスについてリフレッシュ・サイクル毎に異なるランダム順にしてリフレッシュ・アドレス・シーケンスを生成する。
【００３７】
本発明のさらに別の態様は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）にデータを保存するステップと、ＤＲＡＭの各記憶場所に保存されているデータをリフレッシュするためのリフレッシュ・サイクルを定期的に実行するようにＤＲＡＭを制御するステップと、リフレッシュ・サイクル中にＤＲＡＭの記憶場所をリフレッシュする順序を特定するアドレスのリフレッシュ・アドレス・シーケンスを生成するステップと、を含む方法を提供する。前記リフレッシュ・アドレス・シーケンスは、記憶場所の少なくとも一部のアドレスについてリフレッシュ・サイクル毎に異なるランダム順でリフレッシュ・アドレス・シーケンスを生成する。
【００３８】
本発明の特定のおよび好ましい態様は、添付の特許請求の範囲の独立請求項および従属請求項として規定されている。従属請求項の機能は、独立請求項の機能と適宜組み合わせてもよく、また請求項で明示的に規定されていないものと組み合わせてもよい。
【図面の簡単な説明】
【００３９】
【図１Ａ】本発明のＤＲＡＭおよびＤＲＡＭのリフレッシュを制御するためのリフレッシュ・コントローラを含むシステム・オン・チップの例を示す図である。
【図１Ｂ】本発明のＤＲＡＭおよびＤＲＡＭのリフレッシュを制御するためのリフレッシュ・コントローラを含むシステム・オン・チップの例を示す図である。
【図２】本発明のリフレッシュ・アドレス・シーケンスの順序のランダム化の例を示す図である。
【図３】本発明のリフレッシュ・アドレス・シーケンスの順序のランダム化の別の例を示す図である。
【図４】本発明のアドレスのビット位置を並び替えるための変換行列の例を示す図である。
【図５】本発明のランダム化されたリフレッシュ方式を用いる場合に推奨レートの２倍でリフレッシュ・サイクルを実行する理由を示す図である。
【図６】本発明の非保護領域と保護領域を有するＤＲＡＭアドレス空間の例を示す図である。
【図７】本発明の電源入力を共有するか、または個別の電源入力を有するＤＲＡＭおよび処理ロジックを有する集積回路の例を示す図である。
【図８】本発明のＤＲＡＭのリフレッシュを実行するための異なるモード間の遷移を示す状態図である。
【図９】本発明のＤＲＡＭのリフレッシュ動作の制御方法を示す図である。
【発明を実施するための形態】
【００４０】
図１Ａは、プロセッサ４、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）６およびメモリ・コントローラ８を含むシステム・オン・チップ２の例を示す図である。ＤＲＡＭ ６は、定期的なリフレッシュを必要とするあらゆる種類のメモリ、例えば、コンデンサを用いてデータを保存するダイナミック・ランダム・アクセス・メモリを含む。
【００４１】
メモリ・コントローラ８は、ＤＲＡＭ ６のオペレーションを制御するために提供されるものである。メモリ・コントローラ８には、ＤＲＡＭ ６のリフレッシュを制御するためのリフレッシュ・コントローラ１０、リフレッシュ・サイクル中にＤＲＡＭの記憶場所がリフレッシュされる順序を特定するリフレッシュ・アドレス・シーケンスを生成するためのリフレッシュ・アドレス・シーケンス生成器１２、およびランダム数を生成するためのランダム数生成器１４が含まれる。例えば、ランダム数生成器１４は、シード値に基づき疑似ランダム数のシーケンスを生成するための疑似ランダム数生成器を含んでもよい。
【００４２】
図１Ｂは、システム・オン・チップ２の別の例であり、ＤＲＡＭパッケージ６内にリフレッシュ・コントローラ１０、リフレッシュ・アドレス・シーケンス・アドレス生成器１２、およびランダム数生成器１４が備えられている。メモリ・コントローラ８の観点からいうと、ＤＲＡＭ ６のリフレッシュを考慮する必要がないため、図１ＢのＤＲＡＭ ６は静的ランダム・アクセス・メモリとして機能する。
【００４３】
図１Ａおよび図１Ｂは、プロセッサ４と同一のシステム・オン・チップ２に集積されたＤＲＡＭ ６を示しており、別の実施形態ではＤＲＡＭ ６は外部メモリであってもよい。
【００４４】
図１Ａおよび図１Ｂの両方の実施形態では、リフレッシュ・コントローラ１０がＤＲＡＭ ６を制御し、ＤＲＡＭの各記憶場所をリフレッシュするリフレッシュ・サイクルを定期的に実行するようにする。例えば、記憶場所の行から値を読み取り、その記憶場所の行を読み出したデータでリライトすることでＤＲＡＭの記憶場所を一回に一行リフレッシュし、このオペレーションを後続の各行について繰り返すようにしてもよい。または、リフレッシュ動作は、行以外の記憶場所の単位で行ってもよい。
【００４５】
リフレッシュ・アドレス・シーケンス生成器１２は、記憶場所（または記憶場所の行）がリフレッシュされる順序を特定するアドレスのシーケンスを生成する。電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ）を阻止するために、ランダム数生成器１４が生成するランダム数に基づき、メモリ・アドレスの少なくとも一部の順序をランダム化する。つまり、データの各アイテムが保存されている物理的記憶場所は変わらないが、ＤＲＡＭ ６の記憶場所をリフレッシュする時間的順序がランダム化される。
【００４６】
図２は、アドレス・シーケンスのランダム化方法の例を示している。リフレッシュ・アドレス・シーケンス生成器１２には、順次にアドレスのシーケンスを生成する順次アドレス・シーケンス生成器２０が含まれる。ランダム数生成器１４は、順次アドレス・シーケンス生成器２０が生成するアドレスと同一のビット数を有したランダム数を生成する。ＸＯＲゲート２２は、順次アドレス・シーケンス生成器２０が生成するアドレスにランダム数生成器１４が生成するランダム数でＸＯＲを適用し、リフレッシュ・アドレス・シーケンスを生成するためのものである。
【００４７】
ＸＯＲ演算には、１と０の各可能な順列から成る２Ｎ個のＮビット値のシーケンスにおける各値に同一のＮビットの数でＸＯＲを適用すると、その結果は元の値をすべて含むが、異なる順序で構成されるシーケンスが得られるという特性がある。つまり、ＸＯＲ演算は、アドレスのシーケンスをランダム化するのに有用である。
【００４８】
このことが、４ビットのアドレスを使用した例として、図２に示されている。シーケンス内の各アドレスは、ビット単位の排他的論理和（ＸＯＲ）を用いて４ビットのランダム数１０１１と組み合わされる。図２に示されているように、順次アドレス・シーケンス内の各値も、ランダム化されたリフレッシュ・アドレス・シーケンスに現れるが、ランダム数の値によって順序は異なる。
【００４９】
１回のリフレッシュ・サイクルで同一のランダム数を使用し、次のリフレッシュ・サイクルでそのランダム数を変更することにより、ランダム数生成器１４は、別のランダム化されたアドレスのシーケンスで、次のリフレッシュ・サイクルが実行されるように、リフレッシュ・アドレス・シーケンス生成器１２を制御することができる。セキュリティを最大限に強化するためには、各リフレッシュ・サイクル後にランダム数を変更することが好ましいが、例えば、同一のランダム数を２回以上使用後、ランダム数の変更頻度をより低くすることもできる。
【００５０】
通常、シーケンスのアドレスは、かなり大きなビット数になり（例えば、１６、３２、６４ビット）、ランダム数はアドレスと同一のビット数を有するので、リフレッシュ・アドレス・シーケンスに対して可能な順序付けは多くなる。例えば、３２ビットのアドレスの場合、２３２＝４２９４９６７２９６の順列があり、これは非常に大きな数である。したがって、このような方法でアドレスのシーケンスをランダム化することで、差分電力解析によってリフレッシュ・アクティビィから情報を引き出すのは非常に困難になる。
【００５１】
ＸＯＲ演算をアドレスに適用するとアドレスがシーケンスに現れる順序が変わるが、このＸＯＲ演算はリフレッシュ・サイクル中にアドレスの各ビット位置でビット値の状態を切り替える頻度は変更しない。例えば、図２のように、最上位ビットは各リフレッシュ・サイクルで２回だけしか変わらない（１回目は０から１、２回目は１から０）。これは、ＤＰＡ攻撃者に総当たり攻撃を成功させる可能性を高める追加情報を与える可能性がある。例えば、攻撃者はアドレスのシーケンスの前半または後半のどちらでアドレスがリフレッシュされたかを判断できる可能性がある。
【００５２】
これを防ぐために、図３の例のように、アドレスのビット位置を追加で並べ替える。図３には、ランダム数生成器１４が生成した第２のランダム数によって指定されるビット位置の数によって、ＸＯＲゲート２２が生成したアドレスのビットをローテーションさせるシフト・レジスタ２４が示されている。シフト・レジスタ２４の一方でシフトアウトされたアドレスのビットは、シフト・レジスタ２４の他の側に挿入される。繰り返しになるが、第２のランダム数は、リフレッシュ・サイクル毎に変更することが好ましい。Ｎビットのアドレスでは、第２のランダム数はｌｏｇ２（Ｎ）ビットを有する。
【００５３】
図３の例では、順次アドレス・シーケンスのアドレスにランダム数１０１１でＸＯＲを適用すると、３ビット位置単位で右にローテーションし、そのリフレッシュ・サイクルで使用するリフレッシュ・アドレス・シーケンスを生成する。最後のリフレッシュ・アドレス・シーケンスでは、各ビット位置の状態を変更させる頻度は、この例では各サイクルで２回だけ変更するのは最下位ビットであり、最上位ビットは各サイクルで４回変更するようにする。これにより、攻撃者はＤＲＡＭの保護内容を特定するために使用しうる情報を引き出すのが一段と困難になる。
【００５４】
図３は、ＸＯＲ演算の後に適用されるビット・ローテーションを示しているが、ＸＯＲ演算の前にもビット・ローテーションを適用するとよい。図３は、右ローテーションを表しているが、左・ローテーションも使用できる。
【００５５】
図４は、変換行列３０を使用してアドレス内でビット位置を並び替える別の方法を示している。変換行列３０を、図３のシフト・レジスタ２４の代わりに使用してもよい。変換行列３０は、ランダム数生成器１４が生成したランダム数の各値について、入力アドレスＡと出力アドレスＭのビット位置の間のマッピングを指定する。したがって、特定のリフレッシュ・サイクルについて、リフレッシュ・アドレス・シーケンスで各アドレスのビット位置は、その時点のランダム数が指定するマッピングに従い並べ替えられる。別のマッピングを提供するために次のリフレッシュ・サイクルに対して新しいランダム数が選択される。
【００５６】
例えば、４ビットアドレスでは、２４種類の異なるマッピングがあり、例えば、図４のマッピングを使用して２４種類の異なるランダム数の値にマッピングできる。例えば、図４では、７というランダム数は、リフレッシュ・シーケンスにおける各入力アドレスＡのビット、３、２、１、および０を、各出力アドレスＭのビット、２、３、０、および１にマッピングさせる。
【００５７】
図３のように、図４の変換行列３０を使用したビット位置の並び替えは、アドレスにＸＯＲ演算を適用する前後に行ってもよい。図３および図４に示されているアドレスのビット位置の並び替えは、サイクル間の特定アドレス線上のアクティビティを変える。例えば、６４ビットのアドレス・バスでは、６３番目のビット線は、通常、リフレッシュ・サイクル毎に２回ビット値を変更するが（１回は０から１、もう１回は１から０）、ランダムにアドレスのビット位置を並び替えることで、６３番目のビット線は、当該リフレッシュ・サイクル中に適用される並べ替えに応じて、リフレッシュ・サイクル毎に１回から２６３回の間でトグルする。これは、ＤＲＡＭ内で起こる行／列のアドレス指定に強く影響を及ぼし、ＤＰＡを実行する際に考慮しなければならない数多くの追加の演算因子を生じさせるため、攻撃者にとって非常に不都合である。
【００５８】
図３のビット・ローテーション、または図４の変換行列も、ＸＯＲ演算を行うことなく、それ自体、リフレッシュ・アドレス・シーケンスのランダム化に使用できる。しかしながら、ＸＯＲ演算とは異なり、図３および図４のビット位置の並び替えは、アドレスの既存のビット位置を並び替えるだけであり、実際のビット値を変更できないため、あまり好ましくない。これは、例えば、０ｂ００００… または、０ｂ１１１１…などのすべて０または１のビット値を含むアドレス値は、ビット位置の並び替えだけではランダム化できないことを意味している。その結果、ＤＰＡ攻撃者が、０ｂ００００… または、０ｂ１１１１…というアドレスを有する記憶場所の内容を判断可能になりうる。したがって、ビット位置の並び替えをＸＯＲ演算と組み合わせて使用するほうが、セキュリティが強化される。
【００５９】
ＤＲＡＭメーカーが推奨するレートよりも２倍のレートでランダム化したリフレッシュを実行することが有効である。通常、ＤＲＡＭメーカーは、特定のＤＲＡＭデバイスについて推奨リフレッシュ期間を提示する。この期間は、特定の記憶場所をリフレッシュしない最長期間を表している。推奨リフレッシュ期間中に記憶場所がリフレッシュされなければ、データの正確性は保証できないし、最悪の場合、消失することもある。したがって、ＤＲＡＭのリフレッシュ・サイクルは、通常、図５のＡの部分に示されているように推奨期間Ｒで実行する。しかしながら、ランダム化されたリフレッシュ方式が使用されれば、特定のアドレスＸで特定される記憶場所が一つのリフレッシュ・サイクルのちょうど始まりの部分でリフレッシュされ、次のリフレッシュ・サイクルのちょうど終わりにリフレッシュされることがある。図５のＡの部分に示されているように、同一の記憶場所の連続したリフレッシュの期間が推奨リフレッシュ期間Ｒよりも長くなることがあり、データ消失につながりうる。
【００６０】
この問題に対処するために、リフレッシュ・サイクルは、図５のＢの部分に示されているように推奨リフレッシュ期間Ｒの半分の間隔で実行してもよい。これにより、一つのリフレッシュ・サイクルでのリフレッシュ・シーケンスの始まり、および次のリフレッシュ・サイクルのリフレッシュ・シーケンスの終わりにあるアドレスがあっても、そのアドレスに関連する記憶場所は、なおも推奨リフレッシュ期間中にリフレッシュされる。
【００６１】
図６は、非保護領域５４および保護領域５６を含むＤＲＡＭアドレス空間５０を示している。保護領域５６は、特に保護プログラムと保護データの保存用に提供されている。非保護領域５４は、その他のデータを保存するために、提供されている。他の例では、アドレス空間５０には、複数の保護領域５６または非保護領域５４が含まれることがある。
【００６２】
上記のランダム化されたリフレッシュ・アドレス・シーケンスは、ＤＲＡＭのアドレス空間５０全体に適用することもできるし、一部に適用してもよい。例えば、ランダム化方式を保護領域５６のみに適用し、非保護領域５４のアドレスは順序どおりにリフレッシュしてもよい。保護領域５６のみにランダム化したリフレッシュを行うことで、電力消費を低減できる。一方、非保護領域５４のアドレスおよび保護領域をランダム化することにより、リフレッシュ・アドレス・シーケンスのアドレスの順序付けについて可能な順列の数がより多くなり、ＤＰＡ攻撃者が保護領域５６の内容を判断するのが、さらに難しくなる。
【００６３】
図７は、図１のようなシステム・オン・チップではなく、パッケージで装置に実装された２つの例を示している。図７の（ａ）では、集積回路パッケージで、別個の処理論理回路４とＤＲＡＭ ６のシリコンウェハが共通の電源入力を共有している。つまり、ＤＰＡ攻撃者が共有電源入力７０を介して電力を探知しても、観測される電力消費のプロファイルは、処理論理回路４とＤＲＡＭ ６の両方の寄与により影響を受けたものになるであろう。これは場合によっては、ＤＲＡＭリフレッシュによって生じるプロファイルをわかりづらくするのに充分なものであり、アドレスのシーケンスを必ずしもランダム化する必要はないかもしれない。したがって、ランダムなシーケンス生成は、選択的に行ってもよい。
【００６４】
例えば、図８は異なるリフレッシュ・モードを有するマシンの状態例を示している。通常モード１００では、記憶場所は推奨リフレッシュ・レートＸで順次にリフレッシュされる。ランダム・モード１１０では、リフレッシュ・シーケンスの少なくとも一部が上記で説明した技術を使用しランダム化され、推奨リフレッシュ・レートの２倍（２Ｘ）でリフレッシュ・サイクルが実行される。
【００６５】
ランダム・モード１２０は、通常モード１００よりも強力なセキュリティを実現する。一方、通常モード１００では、ランダム・モード１２０と比較して、低電力消費および高性能を実現する。ランダム・モード１２０の間、通常モード１００に比べて２倍の頻度でリフレッシュ・サイクルは実行される。換言すれば、これは処理回路４によるＤＲＡＭアクセスで使用可能なＤＲＡＭ帯域幅が少ないことを意味する。これはシステム性能に影響を及ぼす可能性がある。
【００６６】
適応リフレッシュ・モード１２０を提供してもよい。適応リフレッシュ・モード１２０では、リフレッシュ・コントローラ１０が、処理回路４によるＤＲＡＭ ６に対するＤＲＡＭアクセスの量を検知し、ＤＲＡＭアクセスの量に応じてリフレッシュ・レートを変える（すなわち、通常モードまたはランダム・リフレッシュ・アドレス生成方式のどちらを使用するかを変える）。ＤＲＡＭアクセスの量は、例えば、ある一定期間中のＤＲＡＭアクセス数をカウントすることで監視できる。ＤＲＡＭアクセスの量が、適度に高ければ（例えば、所定の閾値よりも高ければ）、ＤＲＡＭリフレッシュ方式の電力の特性はＤＲＡＭアクセスによって、かなりわかりづらくなり、ランダム化されたリフレッシュ・アドレス・シーケンス生成方式は不要になるかもしれない。この場合、通常モード１００のように、順次アドレス・シーケンスが使用できる。一方、ＤＲＡＭアクセスが少なければ（例えば、カウントされたアクセス数が閾値よりも少なければ）、リフレッシュ・コントローラ１０は、ランダム・モード１１０のようにランダム化されたリフレッシュ・アドレス・シーケンスを生成するように切り替わる。したがって、適応モード１２０は、セキュリティ、電力消費、およびシステム性能への影響が通常モード１００とランダム・モード１１０の中間に位置する中間モードを提供できる。
【００６７】
そのため、図８の状態マシンでは、ランダム・モード１１０でのセキュリティ強化、および適応モード１２０と通常モード１００の低電力消費および性能向上、とのトレードオフを可能にしている。例えば、本装置は、処理回路４が省電力モードになる省電力状態になると、リフレッシュ・コントローラ１０がランダム・モード１０に切り替わる。処理回路４が再度アクティブになると、リフレッシュ・コントローラがアクティブなモード１００または適応モード１２０に切り替わり、電力消費を抑える。または、ユーザは現行のセキュリティ要件に基づき、どのモードを使用するかを選択してもよい。モードの切り替えが必要な場合、リフレッシュ・コントローラ１０は、現在のリフレッシュ・サイクルが終わるまで待機してからモードを切り替える（サイクルの途中でモードを切り替えると、一部の記憶場所が推奨リフレッシュ期間中にリフレッシュされないことがあるため）。
【００６８】
図７の（ｂ）は、集積回路パッケージの別の例を示しており、別個の電源入力８０および電源入力８２が処理論理回路４およびＤＲＡＭ ６にそれぞれ提供されている。この場合、処理回路４がアクティブであるか否か、ＤＲＡＭに定期的にアクセスしているか否かに関係なく、リフレッシュ・サイクル中にＤＲＡＭが使用する電力は、処理回路４が消費する電力と区別できる。したがって、こうした実施形態では、リフレッシュ・コントローラ１０が永続的にランダム・モードを使用することが好ましい（何らかの理由で、ランダム・モードのセキュリティ強化が必要だと考えられないならば、通常モードを使用することもありうる）。
【００６９】
図８の状態マシンは、図１のシステム・オン・チップおよび図７の集積回路パッケージの両方の実装で使用してもよい。
【００７０】
図９は、ＤＲＡＭのリフレッシュ・サイクルの制御方法を示している。リフレッシュ・コントローラ１０はリフレッシュを実行する時間を特定するために使用するリフレッシュ・タイマを有してもよい。リフレッシュ・サイクル実行後、リフレッシュ・タイマには一定の時間量を表す値が設定される。次にタイマはその指定された時間が経過するまでカウントダウンし、その時間がきたら次のリフレッシュ・サイクルが実行される。
【００７１】
したがって、ステップ２００では、リフレッシュ・コントローラ１０はリフレッシュ・タイマの時間が過ぎたか否かを検知する。リフレッシュ・タイマの時間が過ぎたら、ステップ２１０でリフレッシュ・コントローラ１０は、現在、ランダム・モードであるか、通常モードであるかを判断する。リフレッシュ・コントローラ１０が図８の適応モード１２０である場合、リフレッシュ・コントローラ１０は観測されたＤＲＡＭアクティビティの量に基づきランダム・モード１１０または、通常モード１００を使用すべきかを判断する。
【００７２】
リフレッシュ・コントローラ１０が通常モードである場合（または、適応モードで現在はランダム化の適用が不要である場合）、ステップ２２０でリフレッシュ・コントローラ１０がリフレッシュ・アドレス・シーケンス生成器１２を制御し、順次にリフレッシュ・アドレス・シーケンスを生成するようにする。したがって、ランダム化は適用されない。ステップ２３０では、リフレッシュ・コントローラ１０がＤＲＡＭ ６を制御し、生成されたリフレッシュ・アドレス・シーケンスによって特定される順序でリフレッシュ・サイクルを実行する。ステップ２４０では、リフレッシュ・コントローラ１０が推奨リフレッシュ期間を表す値Ｘにリフレッシュ・タイマを設定する。ステップ２５０では、リフレッシュ・コントローラ１０がそのタイマをカウントダウンし、リフレッシュ・タイマの時間が再度経過するまで、この方法はステップ２００に戻る。
【００７３】
一方、ステップ２１０で、リフレッシュ・コントローラがランダム・モード状態であれば（または、適応モードが現在はリフレッシュ・シーケンスのランダム化を必要としている状態）、ステップ２６０でリフレッシュ・コントローラ１０がリフレッシュ・アドレス・シーケンス生成器１２を制御し、ランダム数生成器１４が生成したランダム数に基づき、ＤＲＡＭのアドレスの少なくとも一部をランダム化し、リフレッシュ・アドレス・シーケンスを生成する。ステップ２７０では、リフレッシュ・コントローラ１０がＤＲＡＭ ６を制御し、ランダム化されたリフレッシュ・アドレス・シーケンスで特定される順序でＤＲＡＭ ６の記憶場所をリフレッシュし、リフレッシュ・サイクルを実行する。ステップ２８０では、ランダム数生成器１４がランダム数を更新し、次回ランダム化されたリフレッシュ・アドレス・シーケンスが生成されたら、アドレスが違う順序になるようにする。ステップ２９０では、リフレッシュ・タイマが推奨リフレッシュ期間の半分を表すＸ／２という値に設定される。次に、時間がステップ２００で終了するまで再度タイマをカウントダウンするステップ２５０に戻る。ランダム・モード使用中に、タイマをＸ／２という値に設定することにより、推奨リフレッシュ期間の半分が経過した後、次のリフレッシュが行われることになり、一つのサイクルの始まり、およびその次のサイクルの終わりで特定のアドレスがリフレッシュされても、推奨リフレッシュ期間中にそのアドレスが確実にリフレッシュされるようにする。
【００７４】
図１Ａ、図１Ｂ、および図７に示されているＤＲＡＭ ６は、単独の記憶装置を含んでもよいし、複数の物理的に異なる記憶装置を含んでもよい。複数の記憶装置がある場合、複数の記憶装置を包含するＤＲＡＭのアドレス空間全体に対してリフレッシュ・サイクルが実行されるように、共有のリフレッシュ・コントローラ１０およびリフレッシュ・アドレス・シーケンス生成器１２によって記憶装置のリフレッシュを制御してもよい。こうした方法は、リフレッシュ・アドレス・シーケンスの順序のランダム度を高める傾向にある。
【００７５】
一方、ＤＲＡＭ ６の各記憶装置に対して専用のリフレッシュ・コントローラ１０およびリフレッシュ・アドレス・シーケンス生成器１２を提供し、一つの記憶装置のリフレッシュ・サイクルを他の記憶装置のリフレッシュ・サイクルから独立して管理してもよい。
【００７６】
本発明の例示的な実施形態が、添付の図面を参照して詳細に説明されたが、本発明はこうした詳細な実施形態に限定されるものではなく、添付の特許請求の範囲によって規定される発明の範囲および趣旨に従って、当業者によって様々な変更や改良を施すことも可能である。
【符号の説明】
【００７７】
２  システム・オン・チップ（ＳＯＣ）
４  プロセッサ
６  ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）
８  メモリ・コントローラ
１０  リフレッシュ・コントローラ
１２  リフレッシュ・アドレス・シーケンス生成器
１４  ランダム数生成器
２０  順次アドレス・シーケンス生成器
２２  排他的論理和（ＸＯＲ）ゲート
２４  シフト・レジスタ
３０  変換行列
【図１Ａ】
2013161482.tif 000003
【図１Ｂ】
2013161482.tif 000004
【図２】
2013161482.tif 000005
【図３】
2013161482.tif 000006
【図４】
2013161482.tif 000007
【図５】
2013161482.tif 000008
【図６】
2013161482.tif 000009
【図７】
2013161482.tif 000010
【図８】
2013161482.tif 000011
【図９】
2013161482.tif 000012
【外国語明細書】
2013161482000001.pdf