(57)【要約】  プログラマブル・ロジック・デバイスにおいてコンフィギュレーション・メモリのインプリンティングを軽減するための方法およびアーキテクチャ。電力投入時に、コンフィギュレーション・メモリ反転制御が、システムのライフサイクルにわたって各モードにおける時間量を等しくする目的で、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定する。コンフィギュレーション・メモリ（ＣＭ）入力反転プレーンをＣＭコントローラとＣＭセルとの間に配置し、ＣＭ出力反転プレーンをＣＭセルとＦＰＧＡ機能ブロックとの間に配置する。反転モードで動作するとき、入力および出力反転プレーンによって、ＣＭセルへのデータおよびＣＭセルからのデータを反転させる（０および１を交換する）。個々のメモリ・アドレスによって高および低電圧状態において費やされる時間の均衡を取ることによって、システムは、メモリ・セル・ストレスの差を極力抑え、こうしてメモリ・インプリンティング効果を低減する。プロセッサの外部ＲＡＭおよび内部キャッシュのような、他のアーキテクチャに応用される同じ概念も開示する。【選択図】図１４
2022502812.tif 000002
【特許請求の範囲】
【請求項１】
フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）デバイスのコンフィギュレーション・メモリ（ＣＭ）におけるメモリ・インプリンティングを軽減する方法であって、
ＣＭコントローラとＣＭセル層との間にＣＭ入力反転プレーン、前記ＣＭセル層とプログラマブル機能ブロック層との間にＣＭ出力反転プレーン、および前記ＣＭ入力および出力反転プレーンと通信するＣＭ反転制御モジュールを、ＦＰＧＡデバイスに設けるステップと、
前記ＣＭ反転制御モジュールによって、システム電力投入時に、現在の電力サイクルに対して通常モードまたは反転モードのどちらを選択するか決定するステップと、
前記反転モードで動作するとき、前記ＣＭ入力および出力反転プレーンによって、前記ＣＭセル層に流入するデータおよび前記ＣＭセル層から流出するデータを反転させるステップであって、反転が、論理１および０の値を交換することを含む、ステップと、
前記ＣＭ反転制御モジュールによって、前記通常モードおよび前記反転モードにおいて動作した累積システム時間を追跡するステップと、
システム電力遮断時に、次のシステム電力投入時にどのモードを選択するか決定するときに使用するために、前記累積システム時間をＣＭモード不揮発性メモリ・モジュールに書き込むステップと、
を含む、方法。
【請求項２】
請求項１記載の方法において、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定するステップが、前記累積システム時間を前記ＣＭモード不揮発性メモリ・モジュールから読み出し、前記現電力モジュールを、累積時間が少ない方のモードに設定するステップを含む、方法。
【請求項３】
請求項１記載の方法において、前記ＣＭ反転制御モジュールが、モード制御ビットを前記ＣＭ入力および出力反転プレーンに伝達し、前記モード制御ビットが前記通常モードまたは反転モードを指定する、方法。
【請求項４】
請求項３記載の方法において、前記ＣＭ入力および出力反転プレーンが、前記ＣＭセル層におけるメモリ・セル毎に１つの反転エレメントとして、複数の反転エレメントを含み、前記反転エレメントの各々が、１つの出力と２つの入力とを有するマルチプレクサ（ＭＵＸ）を含み、前記入力が、通常入力と反転入力とから成る、方法。
【請求項５】
請求項４記載の方法において、前記ＣＭ入力および出力反転プレーンにおける前記反転エレメントが、前記モード制御ビットが前記通常モードを指定するとき、前記通常入力を前記ＭＵＸに選択し、前記モード制御ビットが反転モードを指定するとき、前記反転エレメントが前記反転入力を前記ＭＵＸに選択する、方法。
【請求項６】
請求項４記載の方法において、前記通常入力が、着信データ・ストリームの通過(pass-through)であり、前記反転入力が、前記着信データ・ストリームを反転させる反転ゲートを含む、方法。
【請求項７】
請求項１記載の方法において、前記ＦＰＧＡデバイスが、車両、航空機、または機械における埋め込み制御システムに使用される、方法。
【請求項８】
揮発性メモリのインプリント軽減を有するプログラマブル・ロジック・デバイスであって、
外部メモリ・デバイスからビットストリームを受け取るコンフィギュレーション・メモリ（ＣＭ）コントローラと、
前記ＣＭコントローラからビットを受け取るＣＭセル層と、
各々前記ＣＭセルの１つ以上からビットを受け取る、複数の機能ブロックを含むプログラマブル機能ブロック層と、
前記ＣＭコントローラと前記ＣＭセル層との間の通信パス内にあるＣＭ入力反転プレーンと、
前記ＣＭセル層と前記プログラマブル機能ブロック層との間の通信パス内にあるＣＭ出力反転プレーンと、
前記ＣＭ入力および出力反転プレーンと通信するＣＭ反転制御モジュールと、
を備え、
前記ＣＭ反転制御モジュールが、デバイス電力投入時に、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定するように構成され、
前記反転モードで動作するとき、前記ＣＭ入力反転プレーンが、前記ＣＭコントローラから前記ＣＭセルによって受け取ったビットを反転させ、反転が、論理１および０の値の交換を含み、
前記反転モードで動作するとき、前記ＣＭ出力反転プレーンが、前記ＣＭセルから前記プログラマブル機能ブロック層によって受け取ったビットを反転させる、プログラマブル・ロジック・デバイス。
【請求項９】
請求項８記載のプログラマブル・ロジック・デバイスにおいて、前記ＣＭ反転制御モジュールが、更に、次のデバイス電力投入時にどちらのモードを選択するか決定するときに使用するために、前記通常モードおよび前記反転モードで動作する累積デバイス時間を、周期的におよびデバイスの電力遮断時に、記録するように構成される、プログラマブル・ロジック・デバイス。
【請求項１０】
請求項９記載のプログラマブル・ロジック・デバイスにおいて、前記ＣＭ反転制御モジュールが、以前に記録された前記累積デバイス時間を評価し、前記現電力サイクルを、累積時間が少ない方のモードに設定することによって、前記現電力サイクルを前記通常モードまたは反転モードのどちらで動作させるか決定する、プログラマブル・ロジック・デバイス。
【請求項１１】
請求項８記載のプログラマブル・ロジック・デバイスにおいて、前記ＣＭ反転制御モジュールが、モード制御ビットを前記ＣＭ入力および出力反転プレーンに伝達し、前記モード制御ビットが前記通常モードまたは前記反転モードを指定する、プログラマブル・ロジック・デバイス。
【請求項１２】
請求項１１記載のプログラマブル・ロジック・デバイスにおいて、前記ＣＭ入力および出力反転プレーンが、前記ＣＭセル層におけるメモリ・セル毎に１つの反転エレメントとして、複数の反転エレメントを含み、前記反転エレメントの各々が、１つの出力と２つの入力とを有するマルチプレクサ（ＭＵＸ）を含み、前記入力が通常入力と反転入力とから成る、プログラマブル・ロジック・デバイス。
【請求項１３】
請求項１２記載のプログラマブル・ロジック・デバイスにおいて、前記ＣＭ入力および出力反転プレーンにおける前記反転エレメントが、前記モード制御ビットが前記通常モードを指定するとき、前記通常入力を前記ＭＵＸに選択し、前記モード制御ビットが前記反転モードを指定するとき、前記反転エレメントが前記反転入力を前記ＭＵＸに選択する、プログラマブル・ロジック・デバイス。
【請求項１４】
請求項１２記載のプログラマブル・ロジック・デバイスにおいて、前記通常入力が着信データ・ストリームの通過ゲートであり、前記反転入力が、前記着信データ・ストリームを反転させる反転ゲートを含む、プログラマブル・ロジック・デバイス。
【請求項１５】
請求項８記載のプログラマブル・ロジック・デバイスにおいて、前記デバイスがフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）である、プログラマブル・ロジック・デバイス。
【請求項１６】
請求項８記載のプログラマブル・ロジック・デバイスにおいて、前記プログラマブル・ロジック・デバイスが、車両、航空機、または機械における埋め込み制御システムの一部である、プログラマブル・ロジック・デバイス。
【請求項１７】
プログラマブル・ロジック・デバイスのメモリ・インプリント軽減システムであって、  
ＣＭコントローラとＣＭセル層との間の通信パス内にあるコンフィギュレーション・メモリ（ＣＭ）入力反転プレーンと、
前記ＣＭセル層とプログラマブル機能ブロック層との間の通信パス内にあるＣＭ出力反転プレーンと、
前記ＣＭ入力および出力反転プレーンと通信するＣＭ反転制御モジュールと、
を備え、
前記ＣＭ反転制御モジュールが、デバイス電力投入時に、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定するように構成され、
前記反転モードで動作するとき、前記ＣＭ入力反転プレーンが、前記ＣＭコントローラから前記ＣＭセルによって受け取ったビットを反転させ、反転が、論理１および０の値の交換を含み、
前記反転モードで動作するとき、前記ＣＭ出力反転プレーンが、前記ＣＭセルから前記プログラマブル機能ブロック層によって受け取ったビットを反転させる、システム。
【請求項１８】
請求項１７記載のシステムにおいて、前記ＣＭ反転制御モジュールが、更に、前記通常モードおよび前記反転モードで動作した累積デバイス時間を、周期的にそしてデバイスの電力遮断時に、記録し、以前に記録された前記累積デバイス時間を評価し、前記現電力サイクルを、累積時間が少ない方のモードに設定することによって、次のデバイス電力投入時に選択するモードを決定するように構成される、システム。
【請求項１９】
請求項１７記載のシステムにおいて、前記ＣＭ反転制御モジュールがモード制御ビットを前記ＣＭ入力および出力反転プレーンに伝達し、前記モード制御ビットが、前記通常モードまたは前記反転モードを指定する、システム。
【請求項２０】
請求項１９記載のプログラマブル・ロジック・デバイスにおいて、前記ＣＭ入力および出力反転プレーンが、前記ＣＭセル層におけるメモリ・セル毎に１つの反転エレメントとして、複数の反転エレメントを含み、前記反転エレメントの各々が、１つの出力と２つの入力とを有するマルチプレクサ（ＭＵＸ）を含み、前記入力が通常入力と反転入力とから成り、前記ＭＵＸが前記モード制御ビットに基づいて前記入力から１つを選択する、プログラマブル・ロジック・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示は、一般的には、電子システムの揮発性メモリまたはコンフィギュレーション・メモリにおけるメモリ・インプリンティングの回避に関し、更に特定すれば、データ反転方式およびアーキテクチャを使用して、各メモリ・セルにシステムの寿命において、電気的な高および低電圧状態を時間量にほぼ等しいだけ生じさせて (experience)、揮発性／コンフィギュレーション・メモリのインプリンティングを軽減する方法に関する。
【従来技術】
【０００２】
[0002]  典型的なマイクロプロセッサ・ベースの電子システムでは、実行可能バイナリ命令がメモリの特定および専用エリアに割り当てられる。実行可能コードの所与の構成について考えると、ブート・コードおよび実行可能コードは、システムに給電されていないとき、不揮発性メモリ（「ＮＶＭ」、例えば、ＦＬＡＳＨ（登録商標））に存在するのが通例である。電力がシステムに供給されると、プロセッサが不揮発性メモリを読み取り、そのコンテンツを、不揮発性メモリよりも高速で大型の揮発性メモリ（「ＶＭＥＭ」、例えば、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ、ＤＤＲ２／３／４ＳＤＲＡＭ）にコピーするのが通例である。揮発性メモリの位置に格納されたこれらの命令は、電力サイクル毎に同一である。加えて、データ構造（ヒープ、スタック、Ｉ／Ｏバッファ、システム変数等）のためのメモリ空間も、メモリの特定の専用エリアに割り当てられる。このようなデータ構造に保持されるデータは動的である傾向があるが、これらの値の一部は、システムの性質上同一であることが多い。電子システムの寿命にわたって、揮発性メモリの決まった位置に、数千時間から数十万時間の間同じデータ値が保持される。同様の現象は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）のようなプログラマブル・ロジック・デバイスのコンフィギュレーション・メモリ・セルにおいても発生する。
【０００３】
[0003]  メモリ・インプリンティング（データ残余(data remanence)としても知られている）は、メモリ・デバイスが同じ値を同じ位置に長時間期間保持した結果である。先に論じたように、これは、システムの電力投入時に揮発性メモリにコピーされるブート・コードおよび実行可能コードには、よくあることである。この状況によって生じる問題は、メモリ・セル位置が特定の電気レベル、即ち、高または低のいずれかの状態になってしまうおそれがあるということである。電力が電子システムに供給されたが、そのプロセッサがその実行可能コードを不揮発性メモリから揮発性メモリにコピーするというその通常のブート手順を実行することを妨げられると、その結果、揮発性メモリ・セルが、システムの寿命にわたる連続的な状態の継続(experience)によって仕込まれた値に浮動し易くなる可能性がある。
【０００４】
[0004]  これは、セキュリティが重要な埋め込みシステムでは、重大な問題となる。何故なら、敵対者がメモリ・セルからインプリントされた値を抽出し、実行可能コードを逆行分析することができるからである。実行可能コードがＮＶＭにおいて暗号化された状態で安静に格納されていても、プロセッサがＮＶＭコードを解読し、アプリケーションの命令を実行するために、それをＶＭＥＭに格納しなければならないことに変わりはない。その結末は、システムが実行可能コード窃盗、暗号鍵素材の抽出、および逆行分析の容易な目標となるということである。セキュリティが重要なシステムは、種々の脅威（攻撃ベクトル）に対抗する保護策を有さなければならない。このようなシステムからの実行可能コードおよびデータの抽出は、製品の複製による収益の損失から、技術的優位性の損失まで、破局的な影響をもたらす可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]  以上で説明したセキュリティ・リスクを回避するためには、電子システムの揮発性メモリにおけるメモリ・インプリンティング（データ残留）を防止することが重要である。しかしながら、メモリ・インプリンティングに取り組むことを意図した従来の技法は、僅かな効果があったに過ぎなかった（電力遮断時に全てのメモリを消去する等。これは、長い時間期間にわたってレジスタが同じ値を保持することが原因で生じるプリンティングの問題を補正できない）か、またはコストがかかり非効率的であった（メモリ・アドレス毎に１対のレジスタを有し、レギュラー・レジスタ値およびシャドー・レジスタ値を周期的に切り替える「ピンポン」技法等。結果的に、低密度および高コスト・メモリとなる）。
【課題を解決するための手段】
【０００６】
[0006]  本開示は、フィールド・プログラマブル・ゲート・アレイ（ＦＧＰＡ）のようなプログラマブル・ロジック・デバイスのコンフィギュレーション・メモリにおいて メモリ・インプリンティングを軽減するための方法および装置について記載する。システムの電力投入時に、システムのライフサイクルにわたって各モードにおける時間量を等しくする目的で、コンフィギュレーション・メモリ反転制御モジュール(control)が、現在の電力サイクルを通常モードまたは逆転モードのどちらで動作させるか決定する。ＣＭコントローラとＣＭセルとの間に、コンフィギュレーション・メモリ（ＣＭ）入力反転プレーンを配置し、ＣＭセルとＦＰＧＡ機能ブロックとの間に、ＣＭ出力反転プレーンを配置する。反転モードで動作するとき、入力および出力反転プレーンによって、ＣＭセルへのデータ／ＣＭセルからのデータを反転させる（０および１を交換する）。個々のメモリ・アドレスが高および低電圧状態において費やす時間量を均衡させることによって、本システムは、メモリ・セル・ストレス(memory cell stress)の差を低減し、こうしてメモリ・インプリンティングの問題を低減する。プロセッサの外部ＲＡＭおよび内部キャッシュ・メモリのような、他のアーキテクチャに応用される同じ概念も開示する。
【０００７】
[0007]  本明細書において開示する方法およびシステムの更に他の特徴は、以下の説明および添付する請求項を、添付図面と併せて検討することにより、明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】典型的なマイクロプロセッサ・ベースの電子システムにおけるメモリ割り当てを示す図である。
【図２】本開示の実施形態にしたがって、揮発性メモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャのブロック図である。
【図３】図２に示すバス・モード・レジスタ制御モジュールのブロック図である。
【図４】図２に示す双方向データ・バス反転器のブロック図である。
【図５】図２および図３において既に示したバス・モード制御不揮発性メモリにおけるメモリ割り当てを示す図である。
【図６】図２のアーキテクチャおよび図３〜図５の図に示す詳細を使用するメモリ・インプリンティング軽減方法のフローチャート図である。
【図７】図２のアーキテクチャおよび図６のフローチャート図を使用するシステムの２６回の電力サイクルについて、動作統計を収容するデータ表である。
【図８】統合キャッシュ・メモリを有する一般化したマイクロプロセッサのブロック図であり、キャッシュ・メモリ内に、開示するメモリ・インプリンティング軽減技法を実装することができる。
【図９】命令キャッシュを有し、 開示するメモリ・インプリンティング軽減技法を命令キャッシュ内に実装することができるディジタル信号プロセッサのブロック図である。
【図１０】本開示の実施形態にしたがって、マイクロプロセッサに内蔵されたキャッシュ・メモリにおいてメモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャのブロック図である。
【図１１】ＳＲＡＭベースのフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）デバイスの物理的上面図である。
【図１２】ＦＰＧＡアーキテクチャの従前からの実施態様の三次元モデルの断面図である。
【図１３】本開示の実施形態による、メモリ・インプリンティング保護策を有するＦＰＧＡアーキテクチャの三次元モデルの断面図である。
【図１４】図１３のメモリ・インプリンティング軽減策を有するＦＰＧＡアーキテクチャの断面図であり、多重化コンフィギュレーション・メモリ反転エレメントがどのように２つのコンフィギュレーション・メモリ反転プレーン(inversion plane)の各々において使用されるかについて、更に詳細に示す。
【発明を実施するための形態】
【０００９】
[0022]  電子システムの揮発性メモリにおけるメモリ・インプリンティングを軽減するシステムおよび方法を対象とする本開示の実施形態についての以下の論述は、その性質上単なる例示であり、開示する技法やそれらの応用または使用を限定することは全く意図していない。
【００１０】
[0023]  図１は、典型的な埋め込みマイクロプロセッサ・ベースの電子システムのメモリ割り当てを示す図１０である。不揮発性メモリ（ＮＶＭ）２０は、システムに通電されていないときでも永続する情報を収容する。揮発性メモリ（ＶＭＥＭ）４０は、通例、ＮＶＭ２０よりも大型で高速であるが、システムが通電されているときにだけ動作する。ＮＶＭ２０は、とりわけ、ブート・コード２２、アプリケーション・コード２４、および割り込みサービス・ルーチン（ＩＳＲ）ハンドラ２６を含み、これらの各々はブート時にＶＭＥＭ４０にコピーされる。
【００１１】
[0024]  ブート・コード２２およびアプリケーション・コード２４は常にＶＭＥＭ４０におけるスタックの最下位にある低メモリ・アドレスにコピーされるので、このコード・データの個々のビットは、電力サイクル毎に同じＶＭＥＭレジスタに入ることになる。これはＩＳＲハンドラ２６にも言えることであり、ヒープの最上位にある高メモリ・アドレスに常にコピーされる。電子システムの寿命にわたり、揮発性メモリにおいてこれらの項目が決まって入る位置には、数千から数十万時間の間同じデータ値が保持されることになる。つまり、ＶＭＥＭ４０におけるブート・コード４２、アプリケーション・コード４４、およびＩＳＲハンドラ４６の位置は、メモリ・インプリンティングの懸念エリアとなる。
【００１２】
[0025]  データ値（１または０）を所与の揮発性メモリ・セルに格納し保持するプロセスは、セルの物理特性にストレスを加える。これらのストレスは、内部イオン汚染物、ホット・キャリア（熱）効果、およびエレクトロマイグレーション効果に対する電気的ストレスのために、セルの切り替え閾値電圧およびアクセス時間を変化させる。また、これらのセル変化は、供給電圧およびメモリ・デバイスが受ける環境温度によっても影響され、経時的に累積する傾向がある。長期間にわたるデータ保持の影響は、本開示の注目点である。何故なら、このような影響は、同じデータ値が所与のメモリ・セルに    留まる(experience)ときに出るからである。
【００１３】
[0026]  本開示のアーキテクチャおよび方法は、埋め込み電子システムの揮発性メモリ（ＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ等）に、システムの寿命にわたって、その期間の半分を通常のデータ値が格納された状態、その期間の他の半分を反転されたデータ値が格納された状態で過ごさせる(experience)。これによって、各メモリ・セルは、ほぼ等しい時間期間だけ、電気的低電圧／電荷および電気的高電圧／電荷で過ごすことが可能になる。このデータ反転の制御は、電力サイクル毎に行われる。先の図１の論述において例示したように、この手法の有効性は、メモリの所与のセクションが、実行可能コードのような、経時的に比較的安静な値を保持するときに最適化される。開示する技法を使用するための条件は、当該システムに周期的な電力遮断および電力投入サイクルが発生する(experience)ことが、そのシステムにとって、受け入れ可能であるまたは必要となるものでなければならないということである。このようなシステムの例を列挙すると、車両（自動車、ヘリコプタ、航空機、鉄道、および地下鉄／トロリーのような）、産業用機械、および遊園地の乗物における埋め込みシステムがあげられるが、それが全てではない。
【００１４】
[0027]  以下に、開示するアーキテクチャの実施形態において採用される概念について、簡単に論ずる。システム動作は、システム電力サイクルの間にメモリに書き込まれるロジック・レベルと関連付けられた電気的値を交互に変化させることを伴う。システムの寿命にわたって、所与のメモリ位置は「高」および「低」電気的値をほぼ半分の時間期間だけ保持し、こうして経時的に電気的高および低レベルの均衡を取り、したがって、メモリ・セル位置に対して等しく電気的ストレスを分与する。データ・バスとメモリとの間(to and from)におけるロジックおよび電気的反転を制御するために、不揮発性バス・モード制御レジスタを使用する。メモリ反転は、メモリのデータ・バス幅のビット数に等しい複数のビット数として具体化される。バス・モード制御レジスタ入力は、１ビット幅であり、データ・バス全体の反転挙動の制御を可能にする。二進「０」は、全てのデータ・ビットを非反転で通過させ、二進「１」は、全てのデータ・ビットを双方向に強制的に反転させる。
【００１５】
[0028]  システムは、通常モードおよび反転モードで蓄積された時間の比率を監視し、いずれのモードにおいても時間の均衡を（全体的な相違の特定の閾値枠内に）保つために、次のシステム再始動またはブートに２つのモードの内どちらを是認するか判断する。この判断処理は、システムがある場合には短い時間期間だけ通電され、他の場合には長い時間にわたって通電されるという状況を補償する。反転制御において補助するために、カウンタ・タイマ、アキュミュレータ、および差閾値(difference threshold values)を使用してシステム時間を測定する。
【００１６】
[0029]  システムは、ロジック反転制御ハードウェア・モジュールを有する通常のプロセッサ・アーキテクチャを使用する。一実施形態は、添付図面に示すように、統合埋め込みソフトまたはハード・プロセッサ・コアを有するフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）のそれである。他の実施形態は、ディスクリート・コンポーネントに基づくもの、または特定用途集積回路（ＡＳＩＣ）に実装されたものである。更に他の実施形態も、プロセッサの内側で実行するソフトウェアで実装することができ、本開示において装備される(captured)種々の機能が、ソフトウェア・データ構造として実装される。
【００１７】
[0030]  図２は、本開示の実施形態にしたがって、メモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャ１００のブロック図である。以下で論ずるブロック１４０、１５０、および１６０が、開示する実施形態の特徴を設けるために、従来のアーキテクチャに追加される。従来のアーキテクチャの特徴および機能について最初に論ずる。
【００１８】
[0031]  プロセッサ１１０には、アーキテクチャ１００の基本的な計算および処理能力が装備されている。プロセッサ１００は、当業者には理解されるであろうが、標準的なアドレス、制御、およびデータ・バス入力／出力（Ｉ／Ｏ）を有する汎用プロセッサである。システム・クロック・ジェネレータ１１２には、これも従来通りに、回路のクロック機能が装備されている。クロック・ジェネレータ１１２は、ライン１１４上でプロセッサ１１０と通信する。汎用揮発性メモリ（ＶＭＥＭ）１２０および汎用不揮発性メモリ（ＮＶＭ）１３０は、図１に関して先に論じたように、アーキテクチャ１００のメモリの必要性に応じる。図２のＶＭＥＭ１２０は図１の揮発性メモリ４０に等しく、図２のＮＶＭ１３０は図１の揮発性メモリ２０に等しい。
【００１９】
[0032]  プロセッサ１１０は、アドレス・バス１２２、制御バス１２４、およびデータ・バスを通じてＶＭＥＭ１２０にアクセスする。図２において、データ・バスは、メモリ・データ・バス１２６およびプロセッサ・データ・バス１２８という２つの部分を有する。従来のアーキテクチャであれば、プロセッサ１１０からＶＭＥＭ１２０までに及ぶ１系統の連続データ・バスがあるであろう。システムのブートアップ時に、図１に関して先に論じたようにして、ＮＶＭ１３０のコンテンツがＶＭＥＭ１２０にロードされる。ライン１３２は、３系統のバス１２２／１２４／１２６を通じたＮＶＭ１３０とＶＭＥＭ１２０との間の通信のために装備されている。
【００２０】
[0033]  直前の２つの節では、メモリ・インプリンティングを軽減するための開示する技法を使用しない、従前からの回路の基本動作について説明した。以下では、メモリ・インプリンティングを軽減するための追加エレメントを使用するアーキテクチャ１００について論じる。
【００２１】
[0034]  バス・モード・レジスタ制御モジュール(control)１４０は、各ブートアップ時に通常または反転メモリ制御のどちらを使用するか決定するための計算を実行する。このブロックは、ブートアップ時にシステム・ステータス情報を取り込み、この通電(power application)期間に使用すべきデータ・モード、即ち、通常（データ通過）または反転についての決定を行う。クロック入力ライン１１６は、システム・クロック時間をクロック・ジェネレータ１１２からバス・モード・レジスタ制御モジュール１４０に、累積時間の計算のために供給する。ライン１４２は、バス・モード・レジスタ制御モジュール１４０と３系統のバス１２２／１２４／１２８との間の通信のために装備されている。バス・モード・レジスタ制御モジュール１４０を図３に示し、以下で論ずる。
【００２２】
[0035]  双方向データ・バス反転器１５０は、ライン１４４および１４６上でバス・モード・レジスタ制御モジュール１４０からの命令を受け（通常モードまたは反転モードのどちらで動作すべきか）、メモリ・データ・バス１２６およびプロセッサ・データ・バス１２８上のデータ・フローを処理する(handle)。ここで、プロセッサ１１０が標準的なプロセッサであり、メモリ・インプリント軽減をサポートするように再プログラムされていないことは特筆すべきである。プロセッサは、アプリケーション・コードおよび他のデータをＶＭＥＭ１２０から従来のように受け取ることを予期する。しかしながら、ＶＭＥＭ１２０における特定のデータが反転されるかもしれないので、データ・バス反転器１５０は、メモリ・データ・バス１２６およびプロセッサ・データ・バス１２８間の通信中に、双方向で、そのデータの反転を処理しなければならない。データ・バス反転器１５０を図４に示し、以下で論ずる。
【００２３】
[0036]  バス・モード制御不揮発性メモリ１６０は、システムの電源が遮断されるとき、バス・モード制御ステータス情報を格納するので、次の電力投入イベントにおいて、バス・モード・レジスタ制御モジュール１４０によってこの情報を使用することができる。バス・モード制御不揮発性メモリ１６０を図５に示し、以下で論ずる。
【００２４】
[0037]  図３は、最初に図２に示したバス・モード・レジスタ制御モジュール１４０のブロック図である。先に論じたように、バス・モード・レジスタ制御モジュール１４０は、システム始動時に、現在の電力サイクルが通常モードまたは反転モードのどちらで動作すべきか判定する。また、バス・モード・レジスタ制御モジュール１４０は、この計算に関連する全てのパラメータおよびカウンタを管理する。図２に見られるように、バス・モード・レジスタ制御モジュール１４０は、クロック入力をライン１１６上で、アドレス・バス、制御バス、およびデータ・バスからのＩ／Ｏをライン１４２上で受け取り、１群のカウンタおよび閾値３１０／３２０／３３０／３４０／３５０／３６０を、バス・モード制御不揮発性メモリ１６０に書き込む／バス・モード制御不揮発性メモリ１６０から読み出す。
【００２５】
[0038]  反転制御ロジック・モジュール３００は、現イベント・タイマ／カウンタ３３０と共に、カウンタおよび閾値を処理し、どのメモリ・モードを使用するか決定する。このロジックの簡潔な説明は次の通りである。バス・モード・レジスタ制御モジュール１４０が最初にバス・モード制御不揮発性メモリ１６０のコンテンツを読み取り、これらの値をレジスタ３１０、３２０、３４０、３５０、３６０に格納する。通常／反転モード差カウンタ３６０（最後のシステム電力遮断時）の値を、通常モード期間カウンタ３４０から反転モード期間カウンタ３５０を減算した値と比較することによって、通常／反転モード差カウンタ３６０の有効性を最初に判断する。これらの値が一致した場合、通常／反転モード差カウンタ３６０は有効である。次に、システムが反転モードよりも通常モードに多くの時間を蓄積したことを差カウンタが示す場合、次の始動を反転モードに設定する。またはその逆とする。閾値３１０（通常モード高閾値制限値）および３２０（反転モード低閾値制限値）は、例えば、＋１および−１のようなゼロ以外の差の値でモード反転を誘起するように、システムの切り替え挙動(toggle behavior)を状況に応じて決定する(tailor)ために使用することができる。
【００２６】
[0039]  反転制御ロジック・モジュール３００における計算に基づいて、バス・モード・コンフィギュレーション・レジスタ３７０（１ビット）を通常モード（０）または反転モード（１）のいずれかに設定する。バス・モード・コンフィギュレーション・レジスタ３７０の値を、ライン１４４上でデータ・バス反転器１５０に供給する。また、反転制御ロジック・モジュール３００は、アドレス・バス、制御バス、およびデータ・バス上のアクティビティも監視し、プロセッサ１１０がデータをＶＭＥＭ１２０から読み出しているとき、プロセッサ・リード・イネーブル・フラグをライン１４６上で送る。
【００２７】
[0040]  図４は、最初に図２に示した双方向データ・バス反転器１５０のブロック図である。データ・バス反転器１５０は、メモリ・データ・バス１２６（ＶＭＥＭ１２０に入るデータ／ＶＭＥＭ１２０から出るデータ）とプロセッサ・データ・バス１２８（プロセッサ１１０に入るデータ／プロセッサ１１０から出るデータ）との間の通信を制御する。データ・バス反転器１５０は、現メモリ・モード制御ビット（バス・モード・コンフィギュレーション・レジスタ３７０）をライン１４４上で、そしてプロセッサ・リード・イネーブル・フラグをライン１４６上で受け取る。これらの入力に基づいて、イネーブル・ロジック・モジュール４４０は、データ・フローを適正に処理するために、ゲート４００／４１０／４２０／４３０を制御する。
【００２８】
[0041]  ゲート４００および４１０は、データ・ビットを反転させない通過ゲートである。ゲート４２０および４３０は、データ・ビットを反転させる反転ゲートである。ゲート４００／４１０／４２０／４３０の各々は、イネーブル・ロジック・モジュール４４０からの信号に基づいて、該当する場合、以下のようにイネーブルされる。
【００２９】
[0042]  プロセッサ・リード・イネーブル・フラグがセットされておらず（プロセッサが書き込み中であることを意味する）、現メモリ・モード制御ビットが０（通常モード）である場合、通過ゲート４００をイネーブルし、プロセッサ・データ・バス１２８上のビット（プロセッサ１１０から）をメモリ・データ・バス１２６に（ＶＭＥＭ１２０へ）、反転させずに、通過させる。
【００３０】
[0043]  プロセッサ・リード・イネーブル・フラグがセットされており（プロセッサが読み出し中であることを意味する）、現メモリ・モード制御ビットが０（通常モード）である場合、通過ゲート４１０をイネーブルし、メモリ・データ・バス１２６上のビット（ＶＭＥＭ１２０から）をプロセッサ・データ・バス１２８に（プロセッサ１１０へ）、反転させずに、通過させる。
【００３１】
[0044]  プロセッサ・リード・イネーブル・フラグがセットされておらず（プロセッサが書き込み中であることを意味する）、現メモリ・モード制御ビットが１（反転モード）である場合、反転ゲート４２０をイネーブルし、（プロセッサ１１０からの）プロセッサ・データ・バス１２８上のビットがメモリ・データ・バス１２６に（ＶＭＥＭ１２０に向けて）通過するときに、これらのビットを反転させる。
【００３２】
[0045]  プロセッサ・リード・イネーブル・フラグがセットされており（プロセッサが読み出し中であることを意味する）、現メモリ・モード制御ビットが１（反転モード）である場合、反転ゲート４３０をイネーブルし、（ＶＭＥＭ１２０からの）メモリ・データ・バス１２６上のビットがプロセッサ・データ・バス１２８に（プロセッサ１１０に向けて）通過するときに、これらのビットを反転させる。
【００３３】
[0046]  図５は、既に図２および図３において見られた、バス・モード制御不揮発性メモリ１６０におけるメモリ割り当てを示す図である。図５の方式は、単に、閾値３１０および３２０、ならびにカウンタ値３４０、３５０、および３６０をＮＶＭ１６０におけるメモリ・アドレスに割り当てるための１つの技法を示すに過ぎない。重要な点は、これらの値がシステム遮断の間に格納され、次の電力投入時にバス・モード・レジスタ制御モジュール１４０によって使用されるということである。また、図３に示すように、現イベント・タイマ／カウンタ３３０もバス・モード制御不揮発性メモリ１６０に収容することができる。
【００３４】
[0047]  先の図２（メモリ・インプリント軽減のためのシステム・アーキテクチャ１００）および図３〜図５（モジュール１４０、１５０、および１６０の詳細）についての先の論述では、開示するメモリ・インプリント軽減の実施形態の物理的実装について、余すところなく説明した。図６は、図２のアーキテクチャ１００および図３〜図５の図に示す詳細を使用して、メモリ・インプリントを軽減する方法のフローチャート図６００である。
【００３５】
[0048]  ボックス６０２において、システムに電力を投入し、動作を開始する。ボックス６０４において、バス・モード・レジスタ制御モジュール１４０によって、通常および反転モード・カウンタおよび閾値をバス制御モードＮＶＭ１６０から読み出す。カウンタは、直前のシステム遮断時に更新され、バス制御モードＮＶＭ１６０に書き込まれている。ボックス６０６において、バス・モード・レジスタ制御モジュール１４０は、現在の電力投入セッションに対するメモリ・データ・バス・モードを決定する。通常／反転時間差カウンタ３６０が第１閾値よりも大きい場合、現バス・モードを反転モードにセットする。通常／反転時間差カウンタ３６０が第２閾値よりも小さい場合、現バス・モードを通常モードにセットする。これらの閾値は、双方ともゼロにセットされてもよく、または個々の用途に最も良く適するように、正および負の非ゼロ値であってもよい。
【００３６】
[0049]  判断ダイヤモンド６０８において、現バス・モードに基づいてプロセスが分岐する。現セッションのメモリ・データ・バス・モードが通常モードである場合、ボックス６１０において、標準的な様式で、即ち、反転させずに、システムＮＶＭ１３０をＶＭＥＭ１２０にロードする。ボックス６１２において、双方向データ・バス反転器１５０を、プロセッサ１１０とＶＭＥＭ１２０との間で、反転させずに、データを通過させるように構成する。
【００３７】
[0050]  判断ダイアモンド６０８において、現セッションのメモリ・データ・バス・モードが反転モードである場合、ボックス６１４において、システムＮＶＭ１３０の特定部分をＶＭＥＭ１２０に反転様式で、プロセッサ１１０によってロードする。反転アドレスは、ブート・コード、アプリケーション・コード、およびＩＳＲを含む。ボックス６１６において、プロセッサ１１０とＶＭＥＭ１２０との間をデータ・ビットが通過するときに、これらを反転させるように、双方向データ・バス反転器１５０を構成する。
【００３８】
[0051]  この点について、アーキテクチャ１００およびフローチャート６００におけるプロセスの効果を強調することは価値がある。通常モード（ボックス６１０および６１２）では、０の論理値を有するＮＶＭ１３０からのデータ・ビットは、ＶＭＥＭ１２０のそれらのアドレスに電気的低電圧として、プロセッサ１１０によって格納され、１の論理値を有するデータ・ビットは、それらのアドレスに電気的高電圧として、プロセッサ１１０によって格納される。反転モード（ボックス６１４および６１６）では、０の論理値を有するＮＶＭ１３０からの同じデータ・ビットが、ＶＭＥＭ１２０のそれらのアドレスに、電気的高電圧として格納され、１の論理値を有するデータ・ビットは、それらのアドレスに電気的低電圧として格納される。通常および反転モードは、開示する方法によって、システムのライフサイクルにわたって大まかに等しい時間となるように制御されるので、電圧レベルの反転は、ＶＭＥＭ１２０におけるメモリ・インプリンティング（データ残留）効果を軽減する。
【００３９】
[0052]  ボックス６１８において、ＶＭＥＭ１２０と通信するプロセッサ１１０によって、アプリケーション・ソフトウェアを実行する。このアプリケーション・ソフトウェアは、データ・バスがそのＶＭＥＭ１２０への／からの経路上で反転されるかもしれないことを知らず、または気にせず、プロセッサ１１０は、通常または反転モードのどちらが  実施されているかには関係なく、同じ通常のデータ値と見なす。データ・バス反転器１５０は、該当する場合、双方向において反転を処理し、ＶＭＥＭ１２０はメモリ・インプリンティング軽減による効果(benefit)が得られる。
【００４０】
[0053]  ボックス６２０において、アプリケーションの実行が完了したとき（あるいは車両または機械を停止したとき）、システム遮断信号を供給する。ボックス６２２において、カウンタ（通常モード・カウンタ３４０、反転モード・カウンタ３５０、および差カウンタ３６０）を更新し、これらの値を、次の電力投入時に使用するために、バス・モード制御ＮＶＭ１６０に書き込む。例えば、現セッションが反転モードで実行していた場合、ブロック３３０からの現セッション時間カウントを反転モード・カウンタの直前の値に加算することによって、反転モード期間カウンタを更新する。ボックス６２２においてカウンタ３４０〜３６０を更新し、バス・モード制御ＮＶＭ１６０に書き込んだ後、ボックス６２４においてシステムを実際に電力遮断する。
【００４１】
[0054]  図７は、図２のアーキテクチャ１００および図６のフローチャート図６００を使用するシステム例の２６回の電力サイクルについての動作統計を収容するデータ表７００である。列７０２は、単に、システムの電力サイクルの連番だけを収容する。列７０４は、各電力サイクルの期間を収容する。尚、列７０４において、電力サイクル期間は、短い方の２時間から長い方の３０時間まで劇的に変化することを見ることができる。各電力投入時に通常および反転モード間で単に切り替えるのではなく、通常／反転期間カウンタを使用するのは、この理由のためである。列７０６は、システム１００についての累積サービス時間を収容する。これは単に列７０４の累計である。
【００４２】
[0055]  列７０８および７１０は、電力サイクル毎に使用される動作モード（通常または反転）を示し、列７０８はレジスタ３７０からの実際のモード・ビットを収容し、列７１０は記述単語(descriptive word)を収容する。列７１２は、通常モードにおける累積時間カウンタを収容する。尚、列７１０に通常と書かれているとき、列７１２は列７０４における量だけ増分することが分かる。列７１４は、反転モードにおける累積時間カウンタを収容する。列７１０から反転が読み取られたとき、列７１４は列７０４における量だけ増分することが分かる。列７１６は、通常および反転モード時間カウンタ間の差を収容し、つまり、システムが通常モード（正）または反転モード（負）のどちらで多くの時間を費やしたかを示す。列７１８は、列７１６の均衡状態を、累積サービス時間列７０６に対する割合として表す。
【００４３】
[0056]  列７１２における通常モード累計時間は、図３および図５のブロック３４０における値を表す。列７１４における反転モード総累積時間は、図３および図５のブロック３５０における値を表す。列７１６における通常−反転総時間差は、図３および図５のブロック３６０における値を表す。閾値３１０および３２０も、表７００の最上位に示されている。
【００４４】
[0057]  列７１６および７１８において、通常−反転差がゼロを中心としたままであり、全体的に約＋／−２５時間の値の間で上下し(oscillate)、小さいパーセント値に向かう傾向があることが分かる。対照的に、サービス総累計時間は、この電力サイクルの小さいサンプルでは、数百時間に達しており、システムのライフサイクルにわたって数千時間にまで上昇することが理解できる。ＶＭＥＭ１２０における各アドレスを数千時間にわたって同じ電圧レベルに留める代わりに、開示する方法およびシステムは、各アドレスにおける高および低電圧時間をほぼ等しく均衡させる。この均衡により、メモリ・セル位置に対して等しく電気的ストレスを分与し、こうしてメモリ・インプリンティングの検出を著しく難化させる。
【００４５】
[0058]  図２〜図６のこれまでの論述では、マイクロプロセッサに接続された埋め込みシステム・デバイスにおけるＳＲＡＭについて説明した。アーキテクチャ１００の一実施形態をあげるとすれば、回路カード・アセンブリ（ＣＣＡ）にはんだ付けされたディスクリートＳＲＡＭデバイスであろう。しかしながら、メモリ・インプリント軽減についての更に他の使用事例も確認されており、以下で論ずる。また、本開示において説明したメモリ・インプリンティング軽減方式は、事実上全てのＳＲＡＭベースのプログラマブル・ロジック、マイクロプロセッサ（Ｌ１、Ｌ２、およびＬ３キャッシュ）、マイクロコントローラ、およびディジタル信号プロセッサ（命令キャッシュ）の部分にも応用できる。以下の論述では、これらの使用事例について説明する。
【００４６】
[0059]  ディジタル・プロセッサの内部にあるキャッシュ・メモリ・エレメントのメモリ・インプリンティング軽減は、ディスクリート集積回路に基づくプロセッサ（マイクロプロセッサ、ディジタル信号プロセッサ（ＤＳＰ）、グラフィクス・プロセッサ・ユニット（ＧＰＵ）、または同様のデバイス）に対する変更(modification)によって実現することができる。このようなデバイスでは、プロセッサは、多くの場合、キャッシュ・メモリ（レベル１キャッシュ。通例、別個の命令およびデータ・キャッシュ、レベル２およびレベル３キャッシュ、ならびに変換ルックアサイド・バッファに分割される）のような内部揮発性メモリに基づくデータ構造を含む。これらの内部メモリ構造は、外部メモリ・リード（フェッチ）の回数を減らすことによって、プロセッサ命令の実行高速化を可能にする。プロセッサが外部メモリからリードおよびライトを行う場合、内部レジスタ、内部キャッシュ・メモリ、および他のメモリ構造にアクセスするプロセッサと比較すると、著しい時間オーバーヘッドが追加される。
【００４７】
[0060]  キャッシュ・メモリ構造は、プロセッサが外部メモリからコンテンツを読み出すときに必要とされるよりも多くのメモリをコピーすることによって、処理スループットを向上させる(speed up)。プロセッサの内部に位置するキャッシュ・メモリに、より多くの量のメモリ・リードが格納される（書き込まれる）。プロセッサがアクセスする必要があるメモリのアドレスが、キャッシュを満たすために直前に使用されたばかりのアドレスに近い場合、キャッシュ自体がそのコンテンツのローカル・コピーを供給することができ、外部メモリ・アクセスの必要性をなくすことによって、処理を大幅に増加させることができる。このような内部揮発性メモリ・データ構造は、プロセッサの他の部分に見られるトランジスタ構造（ＡＬＵ、メモリ管理ユニット等）を使用し、これらにもメモリ・インプリンティングが発生するおそれがある。このような構造に対してメモリ・インプリンティングを軽減する利点は、キャッシュ内における同じ位置に存在するメモリ・コンテンツの特定部分の期間と相関関係にある。実例をあげると、プロセッサ命令の形態であるメモリ・コンテンツは、キャッシュにおけるデータ値のそれよりも、攻撃者にとって有用な目標となり得る。何故なら、プロセッサ命令は同じままでいる場合が多いが、プロセッサおよびその命令によって処理されるデータは、変化する場合が多いからである。
【００４８】
[0061]  尚、キャッシュ・メモリ構造には、直接マップ（一方向）、ツー・ウェイ、フォー・ウェイからＮ−ウェイ・セット・アソシアティブ・キャッシュ、ビクティム・キャッシュ(victim cache)、トレース・キャッシュ(trace cache)、書き込み結合キャッシュ、およびマイクロ処理キャッシュというような、多くのトポロジがあることを注記しておく。以下に開示するアーキテクチャの意図は、プロセッサに統合されたこのようなキャッシュ・メモリ・トポロジのいずれにおいても、メモリ・インプリンティングを軽減することである。
【００４９】
[0062]  図８は、統合キャッシュ・メモリを有する、一般化したマイクロプロセッサ８００のブロック図であり、開示するメモリ・インプリンティング軽減技法をキャッシュ・メモリに実装することができる。マイクロプロセッサ８００は、外部メモリ・バス・インターフェース８１０、算術ロジック・ユニット（ＡＬＵ）８２０、命令デコーダ８３０、およびキャッシュ８４０として知られる内部メモリ構造を含む。キャッシュ８４０は、外部メモリの対応するブロックをコピーするために使用されるＳＲＡＭメモリのブロックであり、プロセッサの集積回路（ＩＣ）が外部メモリにアクセスする必要がない場合に、命令およびデータにより速くアクセスすることができる。プロセッサＩＣがＩＣパッケージ境界の外側にあるメモリにアクセスしなければならないとき、プロセスは、外部メモリに進み、コンテンツを読み出し、コンテンツをプロセッサに移動させ、命令を実行するために、数回のメモリ・サイクルの時間期間(memory cycle time period)を費やす。キャッシュ・メモリ８４０へのアクセスの方が遙かに速く、処理スループットを高める。
【００５０】
[0063]  内部キャッシュ・メモリ８４０は、長時間期間(periods of time)にわたって同じ値を保持する傾向があり、この構造にメモリ・インプリンティングが生じ易くなる。今日のプロセッサには、３つまでのキャッシュ・ブロックを設けることができる。「レベル１」キャッシュは、最も小さいがプロセッサの実行がより速く、「レベル２」はサイズおよび速度が中位であり、「レベル３」はサイズが最も大きいが、レベル１およびレベル２キャッシュ構造よりも遅い。メモリ・インプリント軽減は、キャッシュ８４０とバス・インターフェース８１０との間、およびキャッシュ８４０とプロセッサＩＣの他のエレメントとの間に反転器を追加することによって、キャッシュ８４０内に実装することができる。これについては、図１０の論述において以下で更に説明する。
【００５１】
[0064]  図９は、命令キャッシュを有するディジタル信号プロセッサ９００のブロック図であり、開示するメモリ・インプリンティング軽減技法を命令キャッシュに実装することができる。ディジタル信号プロセッサ（ＤＳＰ）ＩＣは、マイクロプロセッサの特殊バージョンであり、信号処理用途に必要な数学演算を実行するために、ＤＳＰアーキテクチャが最適化されている。ＤＳＰ  ＩＣは、汎用マイクロプロセッサと比較すると、少ない命令セットを有するが、ハードウェア集中処理ブロック（実例をあげると、乗算および蓄積ブロック）により、効率を高める(gain in efficiency)。図８のマイクロプロセッサと同様、ＤＳＰ９００も、汎用プロセッサと同じ理由で、内部ＳＲＡＭキャッシュを使用する。ＤＳＰ９００は、命令キャッシュ９１０を含む。命令キャッシュ９１０は、同じ値を長い時間期間にわたって保持し、メモリ・インプリンティングが生じ易い。以下で論ずるように、命令キャッシュ９１０も、開示するメモリ・インプリント軽減技法の効果を得ることができる。
【００５２】
[0065]  図１０は、本開示の実施形態にしたがって、図８〜図９のマイクロプロセッサ８００またはＤＳＰ９００のような、マイクロプロセッサに内蔵されたキャッシュ・メモリにおけるメモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャ１０００のブロック図である。アーキテクチャ１０００は、図２のアーキテクチャ１００と同様であり、アーキテクチャ１０００は、バス・モード・レジスタ制御１０４０、双方向データ・バス反転器１０５０、およびバス・モード制御ＮＶＭ１０６０を含む。これらは、それぞれ、図２のエレメント１４０、１５０、および１６０に対応する。
【００５３】
[0066]  アーキテクチャ１０００の場合、メモリ・インプリント軽減の目標は、外部にある場合もある完全揮発性メモリ・モジュール(full volatile memory module)ではなく、集積回路（ＩＣ）自体に内蔵されたプロセッサのキャッシュ・メモリである。図８および図９に関する直前の段落において論じたように、キャッシュ・メモリは、長い時間量にわたって、同じデータをいくつかのレジスタに収容する場合があり、メモリ・インプリンティングが生じ易くなる。
【００５４】
[0067]  ＩＣダイ・キャリア印刷回路ボード（ＰＣＢ）１００２は、ＩＣダイ１００４を含み、ＩＣダイ１００４以外の他のエレメント（図示せず）もＰＣＢ１００２上に存在する場合もあることは理解されよう。ＩＣパッケージ入力／出力はんだバンプ１００６は、ＩＣダイ１００４をＰＣＢ１００２上の他のエレメントまたは他の回路ボードに接続することを可能にする。プロセッサ・コア算術ロジック・ユニット（ＡＬＵ）１０１０は、ディジタル信号プロセッサであれ、グラフィクス処理ユニットであれ、一般化されたマイクロプロセッサであれ、またこれら以外であれ、デバイスの目的である実際の数学的計算および／または論理計算を実行するエレメントである。
【００５５】
[0068]  内部キャッシュ・メモリ１０２０は、以上で広く論じたキャッシュ・メモリである。即ち、メモリ・インプリンティングが生じ易く、インプリンティングから保護するためにアーキテクチャ１０００が設計された高速内蔵ＲＡＭエレメントである。
【００５６】
[0069]  内部キャッシュ・メモリ・コントローラ１０２２は、キャッシュ１０２０に流入するデータおよびキャッシュ１０２０から流出するデータを制御する。これらのデータには、キャッシュ・アドレス・バス１０２４、キャッシュ制御バス１０２６、およびキャッシュ・データ・バス１０２８上のデータおよび信号が含まれる。外部メモリ・インターフェース１０３０は、ＡＬＵ１０１０，キャッシュ１０２０、ならびに外部揮発性メモリおよび不揮発性メモリ間の通信を制御する。即ち、インターフェース１０３０は、必要なときに、ＡＬＵ１０１０と外部メモリとの間におけるデータ・リード／ライトを可能にし、外部メモリからキャッシュ１０２０へのデータ・フェッチ、更に、可能なときはいつでも、キャッシュ１０２０からＡＬＵ１０１０へのデータの直接供給も可能にする。これらのデータ流路は、インターフェース１０３０のボックスにおいて矢印で示されている。
【００５７】
[0070]  外部メモリとの通信は、外部アドレス・バス１０３２、外部制御バス１０３４、および外部データ・バス１０３６を通じて行われる。これらのバスは、図２のアドレス／制御／データ・バス１２２／１２４／１２６と同等である。プロセッサ・アドレス・バス１０１２、プロセッサ制御バス１０１４、およびプロセッサ・データ・バス１０１６は、ＡＬＵ１０１０と外部メモリ・インターフェース１０３０との間の通信のために装備されている。
【００５８】
[0071]  破線で囲ったエリア１０７０は、メモリ・インプリント軽減アーキテクチャ１０００のために標準的なプロセッサに追加されたエレメントを含む。図１０のアーキテクチャ１０００の動作は、既に論じた図２のアーキテクチャ１００の動作と非常に似ている。バス・モード・レジスタ制御１０４０が、キャッシュ１０２０を反転モードで動作させるべきと判断したとき、データ・バス反転器１０５０はキャッシュ１０２０から流出するデータ・ビットおよびキャッシュ１０２０に流入するデータ・ビットを反転させる。この反転は、データの発生源または宛先に関係なく（ＡＬＵ１０１０または外部メモリ）、キャッシュ１０２０に流入するデータおよびキャッシュ１０２０から流出するデータの全てに影響を及ぼす。データ・バス反転器１０５０の位置のために、標準的なプロセッサ・アーキテクチャと比較して、アーキテクチャ１０００において他に変更する必要があるものは何もない。即ち、ＡＬＵ１０１０、インターフェース１０３０、および外部メモリは、常に、これらが予期する非反転データ・ビットを見る。キャッシュ１０２０だけが反転データ・ビットを見ており（システムが反転モードで実行しているとき）、こうしてキャッシュ１０２０におけるメモリ・インプリンティング軽減を可能にする。
【００５９】
[0072]  図２のアーキテクチャ１００に関して既に論じたように、バス・モード・レジスタ制御１０４０は、システム始動時に、バス・モード制御ＮＶＭ１０６０に格納されている通常モードおよび反転モードのカウンタ・データに基づいて、通常モードまたは反転モードのどちらで実行するか決定する。このシステムの目標は、システムの寿命にわたって、通常モードおよび反転モード動作の均衡を取ることである。ＮＶＭ１０６０は、ＩＣダイ１００４上に実装することができ（参照番号１０６０によって示す通り）、またはＰＣＢ１００２（１０６０Ａ）上に位置してもよく、またはＰＣＢ１００２（１０６０Ｂ）から完全に外部に位置してもよい。
【００６０】
[0073]  アーキテクチャ１０００は、プロセッサの内蔵キャッシュにおいてメモリ・インプリンティングを軽減するように設計されており、一方アーキテクチャ１００は、プロセッサの外部にある主システムＲＡＭにおけるインプリンティングを軽減するように設計されている。
【００６１】
[0074]  本開示のメモリ・インプリント軽減技法の他の応用は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）のコンフィギュレーション・メモリにおいて行われる。典型的なＦＰＧＡデバイスでは、コンフィギュレーション・メモリ・セル（チップの外側からはアクセスできず、通例、チップの内側からユーザの設計に介入できない）が、所与のユーザの設計に独特な二進値を格納するために使用され、電力が供給されている間、システムにおけるその部分の使用期間にわたって、同じ値のままであり続ける。このため、ＦＰＧＡコンフィギュレーション・メモリ・セルにはメモリ・インプリンティングが生じ易くなる。このＦＰＧＡへの応用について、以下で詳細に説明する。
【００６２】
[0075]  図１１は、ＳＲＡＭベースのフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）デバイス１１００の物理上面図である。ＦＰＧＡ１１００は、構成変更可能なロジック・ブロック１１１０、Ｉ／Ｏブロック１１２０、およびブロックＲＡＭ１１３０を含む。ＦＰＧＡを理解する便利な方法は、集積回路パッケージの外部部分に接続する数百から数千個のＩ／Ｏセル１１２０によって外側の周囲を包囲された、三次元サンドウィッチ・モデルのトランジスタ層を使用することである。ＦＰＧＡデバイスは、わずか１０ナノメートル（ｎｍ）という最新のＩＣ製作技術を利用し、２〜１００億個ものトランジスタを実装した高密度集積回路である。
【００６３】
[0076]  図１２は、ＦＰＧＡ１２０２を含むＦＰＧＡアーキテクチャ１２００の従前からの実施態様の三次元モデルの断面図である。三次元モデルでは、最上位層１２１０（層３）を「プログラマブル・ロジック」および「プログラマブルＩ／Ｏ」層として考えることができ、中間層１２２０（層２）を「コンフィギュレーション・メモリ」層として考えることができ、最下位層１２３０（層１）を「コンフィギュレーション・メモリ・コントローラ」層として考えることができる。層３（１２１０）は、同じロジック・ブロック１２１２の行列に区分されている。層３（１２１０）は、数千からほぼ百万個のロジック・ブロック１２１２から成る場合もあり、行列の外輪(outside ring)は、プログラマブルＩ／Ｏブロック１２１４から成る。
【００６４】
[0077]  各層３のロジック・ブロック１２１２またはＩ／Ｏブロック１２１４は、層２のコンフィギュレーション・メモリ・セル１２２２によって個々に特定のロジック機能またはＩ／Ｏ機能を実行するように構成される。層２のメモリ・セル１２２２と層３のロジック・ブロック１２１２に対して、多数対１のマッピングとなる。図１２のモデルでは、１００個の層２メモリ・セル出力が、各層３ロジックまたはＩ／Ｏブロック１２１２に接続されると仮定する。５０Ｋ個の層３ロジック・ブロック１２１２、および１Ｋ個の層３Ｉ／Ｏブロック１２１４がある場合、ロジック・ブロック１２１２に対して対応する５０Ｋ×１００＝５Ｍ個の層２メモリ・セル１２２２があり、Ｉ／Ｏブロック１２１４に対して、１Ｋ×１００＝１００Ｋ個の層２メモリ・セル１２２２がある。各層２メモリ・セル１２２２は、初期状態において、電力投入の間、層１コンフィギュレーション・メモリ・コントローラ１２３２によってロードされる。層１（１２３０）は、外部メモリ・インターフェース（ＪＴＡＧ）１２３４、少量のバッテリ・バックアップされたＳＲＡＭメモリ１２３６、および／またはｅＦｕｓｅｓ１２３７から成る。ｅＦｕｓｅｓ１２３７は、選択マルチプレクサ１２３８、ビットストリーム・オーセンティケータ(bitstream authenticator)１２３９、およびビットストリーム解読器(bitstream decryptor)１２４０、そして最終的にコンフィギュレーション・メモリ・コントローラ１２３２を通じて、ユーザ・プログラム可能な解読鍵を供給するために使用される。
【００６５】
[0078]  コンフィギュレーション・メモリ・アクセス・ポート１２６０は、何らかの特定機能のために、層２（１２２０）のコンフィギュレーション・メモリ・セル１２２２と層３（１２１０）のＩ／Ｏブロック１２１４との間における通信のために装備されている。更に、当業者には理解されるであろうが、層３（１２１０）のＩ／Ｏブロック１２１４には、ＦＰＧＡ１２０２を回路ボードに接続するためのはんだバンプ１２７０が形成されている。
【００６６】
[0079]  殆どのＦＰＧＡデバイスでは、デバイスの電力投入時に、ＳＲＡＭコンフィギュレーション・メモリの内部コンテンツが外部メモリ・デバイス１２５０からロードされる。ＦＰＧＡイメージまたはＦＰＧＡビットストリームとしても知られる、ＦＰＧＡのコンフィギュレーション・メモリ・ファイルは、多くの場合、外部メモリ・デバイス１２５０（例えば、不揮発性ＦＬＡＳＨ（登録商標）メモリ）上に暗号化された状態で格納される。電力投入時に、ＦＰＧＡ１２０２は、順次外部暗号化ファイルをデバイス１２５０から、Ｉ／Ｏブロック１２４４を介して読み込む。次いで、ＦＰＧＡ１２０２は、２つのマルチプレクサ選択解読鍵の内１つを使用して、ファイルを内部で解読する。この鍵は、ＦＰＧＡ内に常駐し、電力投入サイクルに先立ってＦＰＧＡに格納されている。マルチプレクサ１２３８において選択された解読鍵は、バッテリ・バックアップされたＳＲＡＭメモリ１２３６の結果であるか、または電気的に変更可能な内部ヒューズ（ｅＦｕｓｅｓ１２３７）の関数である。
【００６７】
[0080]  着信ファイルが解読されるに連れて、解読されたコンテンツがＦＰＧＡの内部コンフィギュレーション・メモリ・セル１２２２に書き込まれる。現在のＦＰＧＡデバイスは、数十万から数百万のコンフィギュレーション・ビットを利用する。設計が変更され、異なるビットストリームおよび解読鍵が使用されない限り、外部メモリ・デバイスに格納されているＦＰＧＡイメージが、各電力投入時に、同じコンフィギュレーション・メモリ・セル１２２２に書き込まれる。これらのコンフィギュレーション・メモリ・セル１２２２は、チップの外側からはアクセスすることができず、通例、チップの内側からユーザの設計に介入することができず、電力が供給されている間、システムにおけるその部分の使用期間にわたって、ＦＰＧＡがユーザの設計を実装することを可能にするように、意図的に不変(static)になっている。メモリ・インプリンティング現象による影響を受けるのは、正にこのＦＰＧＡコンフィギュレーション・メモリ１２２２である。本開示において説明した方式を利用することにより、ＦＰＧＡの販売業者は、コンフィギュレーション・メモリのインプリンティングの効果を劇的に低減することができる。
【００６８】
[0081]  図１３は、本開示の実施形態にしたがって、メモリ・インプリンティング防止を防止する、ＦＰＧＡ１３０２を含むＦＰＧＡアーキテクチャ１３００の三次元モデルの断面図である。図１３は、一般化したＦＰＧＡアーキテクチャ１２００と同じアーキテクチャを示すが、メモリ・セル入力（１３１０）および出力（１３２０）に対するコンフィギュレーション・メモリ反転プレーン(inversion plane)、コンフィギュレーション・メモリ反転コントローラ１３３０、ならびに反転制御不揮発性メモリ（ＮＶＭ）１３４０が追加されている。コンフィギュレーション・メモリ反転コントローラ１３３０の機能は、図２に示し先に論じたバス・モード・レジスタ制御モジュール１４０の機能と同一である。
【００６９】
[0082]  ＦＰＧＡ始動プロセスの一部として、層１コンフィギュレーション・メモリ・コントローラ１２３２は、ライン１３３２上でコンフィギュレーション・メモリ反転コントローラ１３３０と通信し、これを起動する(initiate)。ライン１３５０上で、コンフィギュレーション・メモリ入力反転プレーン１３１０が、ＦＰＧＡ１３０２が通常モードまたは反転モードのどちらで動作しているのかを示す信号を、コンフィギュレーション・メモリ反転コントローラ１３３０から受け取る。反転モードのとき、コンフィギュレーション・メモリ入力反転プレーン１３１０は、コンフィギュレーション・メモリ・コントローラ１２３２からコンフィギュレーション・メモリ・セル１２２２（図１２の）に流入するビットを反転させる（論理１および０の値を交換する）。同様に、ＦＰＧＡ１３０２が反転モードで動作しているとき、コンフィギュレーション・メモリ出力反転プレーン１３２０は、層２コンフィギュレーション・メモリ・セル１２２２からプログラマブル機能ブロック１２１２に流入するビットを反転させる。また、コンフィギュレーション・メモリ出力反転プレーン１３２０は、ライン１３５０上で、ＦＰＧＡ１３０２が通常モードまたは反転モードのどちらで動作しているかを示す信号を、コンフィギュレーション・メモリ反転コントローラ１３３０から受け取る。このようにして、コンフィギュレーション・メモリ・セル１２２２のコンテンツは、メモリ・インプリンティングから保護される。これは、個々のコンフィギュレーション・メモリ・セル各々が、その寿命の約半分を低電圧状態で費やし、その寿命の約半分を高電圧状態で費やすからである。
【００７０】
[0083]  コンフィギュレーション・メモリ反転コントローラ１３３０は、ライン１３４２上で、反転制御ＮＶＭ１３４０と通信する。反転制御ＮＶＭ１３４０は、ＦＰＧＡパッケージに内蔵されてもよく（実線の輪郭で示す通り）、またはＦＰＧＡパッケージとは別個であってもよい（破線の輪郭で示す通り）。コンフィギュレーション・メモリ反転コントローラ１３３０は、システム・クロック入力を有し、電力投入セッション毎に、通常モードまたは反転モードで経過した時間を追跡し、システム遮断中に更新値を反転制御ＮＶＭ１３４０に書き込む。図２、図３、および図５のバス・モード制御ＮＶＭ１６０と同様、反転制御ＮＶＭ１３４０は、累積通常モード時間および累積反転モード時間の値を格納し、システムの電力投入毎に、通常モードまたは反転モードのどちらを選択するか決定するために、この情報をコンフィギュレーション・メモリ反転コントローラ１３３０に使用させる。
【００７１】
[0084]  図１４は、図１３に示したようにメモリ・インプリンティング軽減を行うＦＰＧＡアーキテクチャ１３００の断面図であり、２つのコンフィギュレーション・メモリ反転プレーン１３１０および１３２０の各々において、多重化コンフィギュレーション・メモリ反転エレメント４００がどのように使用されるかについて、更に詳細に示す。ＣＭ反転プレーン１３１０／１３２０は、これらの反転エレメント１４００の層で構成され、コンフィギュレーション・メモリ反転コントローラ１３３０によって共通選択制御が駆動される。
【００７２】
[0085]  コンフィギュレーション・メモリ・セル１２２２の各々は、反転エレメント１４００の内１つがその入力に接続され（プレーン１３１０において）、他の反転エレメント１４００がその出力に接続されている（プレーン１３２０において）。反転エレメント１４００の各々は、データ入力ライン１４０２を含む。データ入力ライン１４０２は、通過コネクタ１４０４および反転ゲート１４０６に分岐し、これらの双方が入力をマルチプレクサ（ＭＵＸ）１４０８に供給する。また、ＭＵＸ１４０８は、ライン１４１０上で、ＦＰＧＡ１３０２が通常または反転モードのどちらで動作しているかを示す選択信号もコンフィギュレーション・メモリ反転コントローラ１３３０から受け取る。ＦＰＧＡ１３０２が通常モードで動作しているとき、ＭＵＸ１４０８は非反転データを通過コネクタ１４０４から出力ライン１４１２に出力する。ＦＰＧＡ１３０２が反転モードで動作しているとき、ＭＵＸ１４０８は反転データを反転ゲート１４０６から出力ライン１４１２に出力する。
【００７３】
[0086]  物理的な実施態様は異なるが、図１４に示すインプリンティング防止の使用モードは、既に論じたプロセッサ・アーキテクチャを有する回路カード（図２〜図５）のそれと同一である。電力投入イベント毎に、コンフィギュレーション・メモリ・コントローラ１３３０は、反転制御の論理レベル（動作モード）を決定し、このモードをＣＭ反転プレーン１３１０／１３２０に伝達し、通常モードにおける動作は、反転モードにおける動作と経時的に均衡が取られる。
【００７４】
[0087]  以上で開示した技法は、多くの異なる種類の電子システムの揮発性メモリまたはコンフィギュレーション・メモリにおけるメモリ・インプリンティング（データ残留）の軽減のために採用することができる。メモリ・インプリンティングの効果を極力抑えることによって、電子システムのセキュリティが向上する。何故なら、これらは実行可能コードおよびデータの敵対的抽出という被害を受け難くなるからである。
【００７５】
[0088]  以上の論述は、開示した方法およびシステムの例示的な実施形態について記載するに過ぎない。このような論述ならびに添付する図面および請求項から、以下の請求項において定められる、開示した技法の主旨および範囲から逸脱することなく、種々の変更、修正、および変形も行えることは、当業者には容易に認められよう。
【図１】
2022502812.tif 000003
【図２】
2022502812.tif 000004
【図３】
2022502812.tif 000005
【図４】
2022502812.tif 000006
【図５】
2022502812.tif 000007
【図６】
2022502812.tif 000008
【図７】
2022502812.tif 000009
【図８】
2022502812.tif 000010
【図９】
2022502812.tif 000011
【図１０】
2022502812.tif 000012
【図１１】
2022502812.tif 000013
【図１２】
2022502812.tif 000014
【図１３】
2022502812.tif 000015
【図１４】
2022502812.tif 000016
【国際調査報告】
2022502812.tif 000017
2022502812.tif 000018