IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ノースロップ グラマン システムズ コーポレイションの特許一覧

特許7232339プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ
<>
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図1
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図2
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図3
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図4
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図5
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図6
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図7
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図8
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図9
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図10
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図11
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図12
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図13
  • 特許-プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-21
(45)【発行日】2023-03-02
(54)【発明の名称】プログラマブル・ロジックにおいてコンフィギュレーション・メモリのインプリンティングを軽減するアーキテクチャ
(51)【国際特許分類】
   G06F 12/06 20060101AFI20230222BHJP
   H03K 19/177 20200101ALI20230222BHJP
【FI】
G06F12/06 520F
H03K19/177
【請求項の数】 20
(21)【出願番号】P 2021540788
(86)(22)【出願日】2019-09-20
(65)【公表番号】
(43)【公表日】2022-01-11
(86)【国際出願番号】 US2019052203
(87)【国際公開番号】W WO2020068591
(87)【国際公開日】2020-04-02
【審査請求日】2022-05-09
(31)【優先権主張番号】16/141,357
(32)【優先日】2018-09-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520128820
【氏名又は名称】ノースロップ グラマン システムズ コーポレーション
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(72)【発明者】
【氏名】ウィーディーリー,ケネス・アール
(72)【発明者】
【氏名】マッキニー,ケネス・エフ
(72)【発明者】
【氏名】ミーワド,クリストファー・エイチ
(72)【発明者】
【氏名】メーンスティタヤ,ティム
(72)【発明者】
【氏名】ヒルチー,アラン・ティー
(72)【発明者】
【氏名】シャッフナー,ティモシー・ディー
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2013-178868(JP,A)
【文献】特開2004-310700(JP,A)
【文献】特表2004-529403(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/06
H03K 19/177
(57)【特許請求の範囲】
【請求項1】
フィールド・プログラマブル・ゲート・アレイ(FPGA)デバイスのコンフィギュレーション・メモリ(CM)におけるメモリ・インプリンティングを軽減する方法であって、
CMコントローラとCMセル層との間にCM入力反転プレーン、前記CMセル層とプログラマブル機能ブロック層との間にCM出力反転プレーン、および前記CM入力および出力反転プレーンと通信するCM反転制御モジュールを、FPGAデバイスに設けるステップと、
前記CM反転制御モジュールによって、システム電力投入時に、現在の電力サイクルに対して通常モードまたは反転モードのどちらを選択するか決定するステップと、
前記反転モードで動作するとき、前記CM入力および出力反転プレーンによって、前記CMセル層に流入するデータおよび前記CMセル層から流出するデータを反転させるステップであって、反転が、論理1および0の値を交換することを含む、ステップと、
前記CM反転制御モジュールによって、前記通常モードおよび前記反転モードにおいて動作した累積システム時間を追跡するステップと、
システム電力遮断時に、次のシステム電力投入時にどのモードを選択するか決定するときに使用するために、前記累積システム時間をCMモード不揮発性メモリ・モジュールに書き込むステップと、
を含む、方法。
【請求項2】
請求項1記載の方法において、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定するステップが、前記累積システム時間を前記CMモード不揮発性メモリ・モジュールから読み出し、前記現電力サイクルを、累積時間が少ない方のモードに設定するステップを含む、方法。
【請求項3】
請求項1記載の方法において、前記CM反転制御モジュールが、モード制御ビットを前記CM入力および出力反転プレーンに伝達し、前記モード制御ビットが前記通常モードまたは前記反転モードを指定する、方法。
【請求項4】
請求項3記載の方法において、前記CM入力および出力反転プレーンが、前記CMセル層におけるメモリ・セル毎に1つの反転エレメントとして、複数の反転エレメントを含み、前記反転エレメントの各々が、1つの出力と2つの入力とを有するマルチプレクサ(MUX)を含み、前記入力が、通常入力と反転入力とから成る、方法。
【請求項5】
請求項4記載の方法において、前記CM入力および出力反転プレーンにおける前記反転エレメントが、前記モード制御ビットが前記通常モードを指定するとき、前記通常入力を前記MUXに選択し、前記モード制御ビットが前記反転モードを指定するとき、前記反転エレメントが前記反転入力を前記MUXに選択する、方法。
【請求項6】
請求項4記載の方法において、前記通常入力が、着信データ・ストリームの通過ゲートであり、前記反転入力が、前記着信データ・ストリームを反転させる反転ゲートを含む、方法。
【請求項7】
請求項1記載の方法において、前記FPGAデバイスが、車両、航空機、または機械における埋め込み制御システムに使用される、方法。
【請求項8】
揮発性メモリのインプリント軽減を有するプログラマブル・ロジック・デバイスであって、
外部メモリ・デバイスからビットストリームを受け取るコンフィギュレーション・メモリ(CM)コントローラと、
前記CMコントローラからビットを受け取るCMセル層と、
各々が前記CMセルの1つ以上からビットを受け取る、複数の機能ブロックを含むプログラマブル機能ブロック層と、
前記CMコントローラと前記CMセル層との間の通信パス内にあるCM入力反転プレーンと、
前記CMセル層と前記プログラマブル機能ブロック層との間の通信パス内にあるCM出力反転プレーンと、
前記CM入力および出力反転プレーンと通信するCM反転制御モジュールと、
を備え、
前記CM反転制御モジュールが、デバイス電力投入時に、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定するように構成され、
前記反転モードで動作するとき、前記CM入力反転プレーンが、前記CMコントローラから前記CMセルによって受け取ったビットを反転させ、反転が、論理1および0の値の交換を含み、
前記反転モードで動作するとき、前記CM出力反転プレーンが、前記CMセルから前記プログラマブル機能ブロック層によって受け取ったビットを反転させる、プログラマブル・ロジック・デバイス。
【請求項9】
請求項8記載のプログラマブル・ロジック・デバイスにおいて、前記CM反転制御モジュールが、更に、次のデバイス電力投入時にどちらのモードを選択するか決定するときに使用するために、前記通常モードおよび前記反転モードで動作する累積デバイス時間を、周期的におよびデバイスの電力遮断時に、記録するように構成される、プログラマブル・ロジック・デバイス。
【請求項10】
請求項9記載のプログラマブル・ロジック・デバイスにおいて、前記CM反転制御モジュールが、以前に記録された前記累積デバイス時間を評価し、前記現電力サイクルを、累積時間が少ない方のモードに設定することによって、前記現電力サイクルを前記通常モードまたは前記反転モードのどちらで動作させるか決定する、プログラマブル・ロジック・デバイス。
【請求項11】
請求項8記載のプログラマブル・ロジック・デバイスにおいて、前記CM反転制御モジュールが、モード制御ビットを前記CM入力および出力反転プレーンに伝達し、前記モード制御ビットが前記通常モードまたは前記反転モードを指定する、プログラマブル・ロジック・デバイス。
【請求項12】
請求項11記載のプログラマブル・ロジック・デバイスにおいて、前記CM入力および出力反転プレーンが、前記CMセル層におけるメモリ・セル毎に1つの反転エレメントとして、複数の反転エレメントを含み、前記反転エレメントの各々が、1つの出力と2つの入力とを有するマルチプレクサ(MUX)を含み、前記入力が通常入力と反転入力とから成る、プログラマブル・ロジック・デバイス。
【請求項13】
請求項12記載のプログラマブル・ロジック・デバイスにおいて、前記CM入力および出力反転プレーンにおける前記反転エレメントが、前記モード制御ビットが前記通常モードを指定するとき、前記通常入力を前記MUXに選択し、前記モード制御ビットが前記反転モードを指定するとき、前記反転エレメントが前記反転入力を前記MUXに選択する、プログラマブル・ロジック・デバイス。
【請求項14】
請求項12記載のプログラマブル・ロジック・デバイスにおいて、前記通常入力が着信データ・ストリームの通過ゲートであり、前記反転入力が、前記着信データ・ストリームを反転させる反転ゲートを含む、プログラマブル・ロジック・デバイス。
【請求項15】
請求項8記載のプログラマブル・ロジック・デバイスにおいて、前記デバイスがフィールド・プログラマブル・ゲート・アレイ(FPGA)である、プログラマブル・ロジック・デバイス。
【請求項16】
請求項8記載のプログラマブル・ロジック・デバイスにおいて、前記プログラマブル・ロジック・デバイスが、車両、航空機、または機械における埋め込み制御システムの一部である、プログラマブル・ロジック・デバイス。
【請求項17】
プログラマブル・ロジック・デバイスのメモリ・インプリント軽減システムであって、
CMコントローラとCMセル層との間の通信パス内にあるコンフィギュレーション・メモリ(CM)入力反転プレーンと、
前記CMセル層とプログラマブル機能ブロック層との間の通信パス内にあるCM出力反転プレーンと、
前記CM入力および出力反転プレーンと通信するCM反転制御モジュールと、
を備え、
前記CM反転制御モジュールが、デバイス電力投入時に、現電力サイクルを通常モードまたは反転モードのどちらで動作させるか決定するように構成され、
前記反転モードで動作するとき、前記CM入力反転プレーンが、前記CMコントローラから前記CMセルによって受け取ったビットを反転させ、反転が、論理1および0の値の交換を含み、
前記反転モードで動作するとき、前記CM出力反転プレーンが、前記CMセルから前記プログラマブル機能ブロック層によって受け取ったビットを反転させる、システム。
【請求項18】
請求項17記載のシステムにおいて、前記CM反転制御モジュールが、更に、前記通常モードおよび前記反転モードで動作した累積デバイス時間を、周期的にそしてデバイスの電力遮断時に、記録し、以前に記録された前記累積デバイス時間を評価し、前記現電力サイクルを、累積時間が少ない方のモードに設定することによって、次のデバイス電力投入時に選択するモードを決定するように構成される、システム。
【請求項19】
請求項17記載のシステムにおいて、前記CM反転制御モジュールがモード制御ビットを前記CM入力および出力反転プレーンに伝達し、前記モード制御ビットが、前記通常モードまたは前記反転モードを指定する、システム。
【請求項20】
請求項19記載のシステムにおいて、前記CM入力および出力反転プレーンが、前記CMセル層におけるメモリ・セル毎に1つの反転エレメントとして、複数の反転エレメントを含み、前記反転エレメントの各々が、1つの出力と2つの入力とを有するマルチプレクサ(MUX)を含み、前記入力が通常入力と反転入力とから成り、前記MUXが前記モード制御ビットに基づいて前記入力から1つを選択する、システム。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本開示は、一般的には、電子システムの揮発性メモリまたはコンフィギュレーション・メモリにおけるメモリ・インプリンティングの回避に関し、更に特定すれば、データ反転方式およびアーキテクチャを使用して、各メモリ・セルにシステムの寿命において、電気的な高および低電圧状態を時間量にほぼ等しいだけ生じさせて (experience)、揮発性/コンフィギュレーション・メモリのインプリンティングを軽減する方法に関する。
【従来技術】
【0002】
[0002] 典型的なマイクロプロセッサ・ベースの電子システムでは、実行可能バイナリ命令がメモリの特定および専用エリアに割り当てられる。実行可能コードの所与の構成について考えると、ブート・コードおよび実行可能コードは、システムに給電されていないとき、不揮発性メモリ(「NVM」、例えば、FLASH(登録商標))に存在するのが通例である。電力がシステムに供給されると、プロセッサが不揮発性メモリを読み取り、そのコンテンツを、不揮発性メモリよりも高速で大型の揮発性メモリ(「VMEM」、例えば、SRAM、DRAM、SDRAM、DDR、DDR2/3/4SDRAM)にコピーするのが通例である。揮発性メモリの位置に格納されたこれらの命令は、電力サイクル毎に同一である。加えて、データ構造(ヒープ、スタック、I/Oバッファ、システム変数等)のためのメモリ空間も、メモリの特定の専用エリアに割り当てられる。このようなデータ構造に保持されるデータは動的である傾向があるが、これらの値の一部は、システムの性質上同一であることが多い。電子システムの寿命にわたって、揮発性メモリの決まった位置に、数千時間から数十万時間の間同じデータ値が保持される。同様の現象は、フィールド・プログラマブル・ゲート・アレイ(FPGA)のようなプログラマブル・ロジック・デバイスのコンフィギュレーション・メモリ・セルにおいても発生する。
【0003】
[0003] メモリ・インプリンティング(データ残余(data remanence)としても知られている)は、メモリ・デバイスが同じ値を同じ位置に長時間期間保持した結果である。先に論じたように、これは、システムの電力投入時に揮発性メモリにコピーされるブート・コードおよび実行可能コードには、よくあることである。この状況によって生じる問題は、メモリ・セル位置が特定の電気レベル、即ち、高または低のいずれかの状態になってしまうおそれがあるということである。電力が電子システムに供給されたが、そのプロセッサがその実行可能コードを不揮発性メモリから揮発性メモリにコピーするというその通常のブート手順を実行することを妨げられると、その結果、揮発性メモリ・セルが、システムの寿命にわたる連続的な状態の継続(experience)によって仕込まれた値に浮動し易くなる可能性がある。
【0004】
[0004] これは、セキュリティが重要な埋め込みシステムでは、重大な問題となる。何故なら、敵対者がメモリ・セルからインプリントされた値を抽出し、実行可能コードを逆行分析することができるからである。実行可能コードがNVMにおいて暗号化された状態で安静に格納されていても、プロセッサがNVMコードを解読し、アプリケーションの命令を実行するために、それをVMEMに格納しなければならないことに変わりはない。その結末は、システムが実行可能コード窃盗、暗号鍵素材の抽出、および逆行分析の容易な目標となるということである。セキュリティが重要なシステムは、種々の脅威(攻撃ベクトル)に対抗する保護策を有さなければならない。このようなシステムからの実行可能コードおよびデータの抽出は、製品の複製による収益の損失から、技術的優位性の損失まで、破局的な影響をもたらす可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
[0005] 以上で説明したセキュリティ・リスクを回避するためには、電子システムの揮発性メモリにおけるメモリ・インプリンティング(データ残留)を防止することが重要である。しかしながら、メモリ・インプリンティングに取り組むことを意図した従来の技法は、僅かな効果があったに過ぎなかった(電力遮断時に全てのメモリを消去する等。これは、長い時間期間にわたってレジスタが同じ値を保持することが原因で生じるプリンティングの問題を補正できない)か、またはコストがかかり非効率的であった(メモリ・アドレス毎に1対のレジスタを有し、レギュラー・レジスタ値およびシャドー・レジスタ値を周期的に切り替える「ピンポン」技法等。結果的に、低密度および高コスト・メモリとなる)。
【課題を解決するための手段】
【0006】
[0006] 本開示は、フィールド・プログラマブル・ゲート・アレイ(FGPA)のようなプログラマブル・ロジック・デバイスのコンフィギュレーション・メモリにおいて メモリ・インプリンティングを軽減するための方法および装置について記載する。システムの電力投入時に、システムのライフサイクルにわたって各モードにおける時間量を等しくする目的で、コンフィギュレーション・メモリ反転制御モジュール(control)が、現在の電力サイクルを通常モードまたは逆転モードのどちらで動作させるか決定する。CMコントローラとCMセルとの間に、コンフィギュレーション・メモリ(CM)入力反転プレーンを配置し、CMセルとFPGA機能ブロックとの間に、CM出力反転プレーンを配置する。反転モードで動作するとき、入力および出力反転プレーンによって、CMセルへのデータ/CMセルからのデータを反転させる(0および1を交換する)。個々のメモリ・アドレスが高および低電圧状態において費やす時間量を均衡させることによって、本システムは、メモリ・セル・ストレス(memory cell stress)の差を低減し、こうしてメモリ・インプリンティングの問題を低減する。プロセッサの外部RAMおよび内部キャッシュ・メモリのような、他のアーキテクチャに応用される同じ概念も開示する。
【0007】
[0007] 本明細書において開示する方法およびシステムの更に他の特徴は、以下の説明および添付する請求項を、添付図面と併せて検討することにより、明らかになるであろう。
【図面の簡単な説明】
【0008】
図1】典型的なマイクロプロセッサ・ベースの電子システムにおけるメモリ割り当てを示す図である。
図2】本開示の実施形態にしたがって、揮発性メモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャのブロック図である。
図3図2に示すバス・モード・レジスタ制御モジュールのブロック図である。
図4図2に示す双方向データ・バス反転器のブロック図である。
図5図2および図3において既に示したバス・モード制御不揮発性メモリにおけるメモリ割り当てを示す図である。
図6図2のアーキテクチャおよび図3図5の図に示す詳細を使用するメモリ・インプリンティング軽減方法のフローチャート図である。
図7図2のアーキテクチャおよび図6のフローチャート図を使用するシステムの26回の電力サイクルについて、動作統計を収容するデータ表である。
図8】統合キャッシュ・メモリを有する一般化したマイクロプロセッサのブロック図であり、キャッシュ・メモリ内に、開示するメモリ・インプリンティング軽減技法を実装することができる。
図9】命令キャッシュを有し、 開示するメモリ・インプリンティング軽減技法を命令キャッシュ内に実装することができるディジタル信号プロセッサのブロック図である。
図10】本開示の実施形態にしたがって、マイクロプロセッサに内蔵されたキャッシュ・メモリにおいてメモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャのブロック図である。
図11】SRAMベースのフィールド・プログラマブル・ゲート・アレイ(FPGA)デバイスの物理的上面図である。
図12】FPGAアーキテクチャの従前からの実施態様の三次元モデルの断面図である。
図13】本開示の実施形態による、メモリ・インプリンティング保護策を有するFPGAアーキテクチャの三次元モデルの断面図である。
図14図13のメモリ・インプリンティング軽減策を有するFPGAアーキテクチャの断面図であり、多重化コンフィギュレーション・メモリ反転エレメントがどのように2つのコンフィギュレーション・メモリ反転プレーン(inversion plane)の各々において使用されるかについて、更に詳細に示す。
【発明を実施するための形態】
【0009】
[0022] 電子システムの揮発性メモリにおけるメモリ・インプリンティングを軽減するシステムおよび方法を対象とする本開示の実施形態についての以下の論述は、その性質上単なる例示であり、開示する技法やそれらの応用または使用を限定することは全く意図していない。
【0010】
[0023] 図1は、典型的な埋め込みマイクロプロセッサ・ベースの電子システムのメモリ割り当てを示す図10である。不揮発性メモリ(NVM)20は、システムに通電されていないときでも永続する情報を収容する。揮発性メモリ(VMEM)40は、通例、NVM20よりも大型で高速であるが、システムが通電されているときにだけ動作する。NVM20は、とりわけ、ブート・コード22、アプリケーション・コード24、および割り込みサービス・ルーチン(ISR)ハンドラ26を含み、これらの各々はブート時にVMEM40にコピーされる。
【0011】
[0024] ブート・コード22およびアプリケーション・コード24は常にVMEM40におけるスタックの最下位にある低メモリ・アドレスにコピーされるので、このコード・データの個々のビットは、電力サイクル毎に同じVMEMレジスタに入ることになる。これはISRハンドラ26にも言えることであり、ヒープの最上位にある高メモリ・アドレスに常にコピーされる。電子システムの寿命にわたり、揮発性メモリにおいてこれらの項目が決まって入る位置には、数千から数十万時間の間同じデータ値が保持されることになる。つまり、VMEM40におけるブート・コード42、アプリケーション・コード44、およびISRハンドラ46の位置は、メモリ・インプリンティングの懸念エリアとなる。
【0012】
[0025] データ値(1または0)を所与の揮発性メモリ・セルに格納し保持するプロセスは、セルの物理特性にストレスを加える。これらのストレスは、内部イオン汚染物、ホット・キャリア(熱)効果、およびエレクトロマイグレーション効果に対する電気的ストレスのために、セルの切り替え閾値電圧およびアクセス時間を変化させる。また、これらのセル変化は、供給電圧およびメモリ・デバイスが受ける環境温度によっても影響され、経時的に累積する傾向がある。長期間にわたるデータ保持の影響は、本開示の注目点である。何故なら、このような影響は、同じデータ値が所与のメモリ・セルに 留まる(experience)ときに出るからである。
【0013】
[0026] 本開示のアーキテクチャおよび方法は、埋め込み電子システムの揮発性メモリ(RAM、DRAM、SDRAM等)に、システムの寿命にわたって、その期間の半分を通常のデータ値が格納された状態、その期間の他の半分を反転されたデータ値が格納された状態で過ごさせる(experience)。これによって、各メモリ・セルは、ほぼ等しい時間期間だけ、電気的低電圧/電荷および電気的高電圧/電荷で過ごすことが可能になる。このデータ反転の制御は、電力サイクル毎に行われる。先の図1の論述において例示したように、この手法の有効性は、メモリの所与のセクションが、実行可能コードのような、経時的に比較的安静な値を保持するときに最適化される。開示する技法を使用するための条件は、当該システムに周期的な電力遮断および電力投入サイクルが発生する(experience)ことが、そのシステムにとって、受け入れ可能であるまたは必要となるものでなければならないということである。このようなシステムの例を列挙すると、車両(自動車、ヘリコプタ、航空機、鉄道、および地下鉄/トロリーのような)、産業用機械、および遊園地の乗物における埋め込みシステムがあげられるが、それが全てではない。
【0014】
[0027] 以下に、開示するアーキテクチャの実施形態において採用される概念について、簡単に論ずる。システム動作は、システム電力サイクルの間にメモリに書き込まれるロジック・レベルと関連付けられた電気的値を交互に変化させることを伴う。システムの寿命にわたって、所与のメモリ位置は「高」および「低」電気的値をほぼ半分の時間期間だけ保持し、こうして経時的に電気的高および低レベルの均衡を取り、したがって、メモリ・セル位置に対して等しく電気的ストレスを分与する。データ・バスとメモリとの間(to and from)におけるロジックおよび電気的反転を制御するために、不揮発性バス・モード制御レジスタを使用する。メモリ反転は、メモリのデータ・バス幅のビット数に等しい複数のビット数として具体化される。バス・モード制御レジスタ入力は、1ビット幅であり、データ・バス全体の反転挙動の制御を可能にする。二進「0」は、全てのデータ・ビットを非反転で通過させ、二進「1」は、全てのデータ・ビットを双方向に強制的に反転させる。
【0015】
[0028] システムは、通常モードおよび反転モードで蓄積された時間の比率を監視し、いずれのモードにおいても時間の均衡を(全体的な相違の特定の閾値枠内に)保つために、次のシステム再始動またはブートに2つのモードの内どちらを是認するか判断する。この判断処理は、システムがある場合には短い時間期間だけ通電され、他の場合には長い時間にわたって通電されるという状況を補償する。反転制御において補助するために、カウンタ・タイマ、アキュミュレータ、および差閾値(difference threshold values)を使用してシステム時間を測定する。
【0016】
[0029] システムは、ロジック反転制御ハードウェア・モジュールを有する通常のプロセッサ・アーキテクチャを使用する。一実施形態は、添付図面に示すように、統合埋め込みソフトまたはハード・プロセッサ・コアを有するフィールド・プログラマブル・ゲート・アレイ(FPGA)のそれである。他の実施形態は、ディスクリート・コンポーネントに基づくもの、または特定用途集積回路(ASIC)に実装されたものである。更に他の実施形態も、プロセッサの内側で実行するソフトウェアで実装することができ、本開示において装備される(captured)種々の機能が、ソフトウェア・データ構造として実装される。
【0017】
[0030] 図2は、本開示の実施形態にしたがって、メモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャ100のブロック図である。以下で論ずるブロック140、150、および160が、開示する実施形態の特徴を設けるために、従来のアーキテクチャに追加される。従来のアーキテクチャの特徴および機能について最初に論ずる。
【0018】
[0031] プロセッサ110には、アーキテクチャ100の基本的な計算および処理能力が装備されている。プロセッサ100は、当業者には理解されるであろうが、標準的なアドレス、制御、およびデータ・バス入力/出力(I/O)を有する汎用プロセッサである。システム・クロック・ジェネレータ112には、これも従来通りに、回路のクロック機能が装備されている。クロック・ジェネレータ112は、ライン114上でプロセッサ110と通信する。汎用揮発性メモリ(VMEM)120および汎用不揮発性メモリ(NVM)130は、図1に関して先に論じたように、アーキテクチャ100のメモリの必要性に応じる。図2のVMEM120は図1の揮発性メモリ40に等しく、図2のNVM130は図1の揮発性メモリ20に等しい。
【0019】
[0032] プロセッサ110は、アドレス・バス122、制御バス124、およびデータ・バスを通じてVMEM120にアクセスする。図2において、データ・バスは、メモリ・データ・バス126およびプロセッサ・データ・バス128という2つの部分を有する。従来のアーキテクチャであれば、プロセッサ110からVMEM120までに及ぶ1系統の連続データ・バスがあるであろう。システムのブートアップ時に、図1に関して先に論じたようにして、NVM130のコンテンツがVMEM120にロードされる。ライン132は、3系統のバス122/124/126を通じたNVM130とVMEM120との間の通信のために装備されている。
【0020】
[0033] 直前の2つの節では、メモリ・インプリンティングを軽減するための開示する技法を使用しない、従前からの回路の基本動作について説明した。以下では、メモリ・インプリンティングを軽減するための追加エレメントを使用するアーキテクチャ100について論じる。
【0021】
[0034] バス・モード・レジスタ制御モジュール(control)140は、各ブートアップ時に通常または反転メモリ制御のどちらを使用するか決定するための計算を実行する。このブロックは、ブートアップ時にシステム・ステータス情報を取り込み、この通電(power application)期間に使用すべきデータ・モード、即ち、通常(データ通過)または反転についての決定を行う。クロック入力ライン116は、システム・クロック時間をクロック・ジェネレータ112からバス・モード・レジスタ制御モジュール140に、累積時間の計算のために供給する。ライン142は、バス・モード・レジスタ制御モジュール140と3系統のバス122/124/128との間の通信のために装備されている。バス・モード・レジスタ制御モジュール140を図3に示し、以下で論ずる。
【0022】
[0035] 双方向データ・バス反転器150は、ライン144および146上でバス・モード・レジスタ制御モジュール140からの命令を受け(通常モードまたは反転モードのどちらで動作すべきか)、メモリ・データ・バス126およびプロセッサ・データ・バス128上のデータ・フローを処理する(handle)。ここで、プロセッサ110が標準的なプロセッサであり、メモリ・インプリント軽減をサポートするように再プログラムされていないことは特筆すべきである。プロセッサは、アプリケーション・コードおよび他のデータをVMEM120から従来のように受け取ることを予期する。しかしながら、VMEM120における特定のデータが反転されるかもしれないので、データ・バス反転器150は、メモリ・データ・バス126およびプロセッサ・データ・バス128間の通信中に、双方向で、そのデータの反転を処理しなければならない。データ・バス反転器150を図4に示し、以下で論ずる。
【0023】
[0036] バス・モード制御不揮発性メモリ160は、システムの電源が遮断されるとき、バス・モード制御ステータス情報を格納するので、次の電力投入イベントにおいて、バス・モード・レジスタ制御モジュール140によってこの情報を使用することができる。バス・モード制御不揮発性メモリ160を図5に示し、以下で論ずる。
【0024】
[0037] 図3は、最初に図2に示したバス・モード・レジスタ制御モジュール140のブロック図である。先に論じたように、バス・モード・レジスタ制御モジュール140は、システム始動時に、現在の電力サイクルが通常モードまたは反転モードのどちらで動作すべきか判定する。また、バス・モード・レジスタ制御モジュール140は、この計算に関連する全てのパラメータおよびカウンタを管理する。図2に見られるように、バス・モード・レジスタ制御モジュール140は、クロック入力をライン116上で、アドレス・バス、制御バス、およびデータ・バスからのI/Oをライン142上で受け取り、1群のカウンタおよび閾値310/320/330/340/350/360を、バス・モード制御不揮発性メモリ160に書き込む/バス・モード制御不揮発性メモリ160から読み出す。
【0025】
[0038] 反転制御ロジック・モジュール300は、現イベント・タイマ/カウンタ330と共に、カウンタおよび閾値を処理し、どのメモリ・モードを使用するか決定する。このロジックの簡潔な説明は次の通りである。バス・モード・レジスタ制御モジュール140が最初にバス・モード制御不揮発性メモリ160のコンテンツを読み取り、これらの値をレジスタ310、320、340、350、360に格納する。通常/反転モード差カウンタ360(最後のシステム電力遮断時)の値を、通常モード期間カウンタ340から反転モード期間カウンタ350を減算した値と比較することによって、通常/反転モード差カウンタ360の有効性を最初に判断する。これらの値が一致した場合、通常/反転モード差カウンタ360は有効である。次に、システムが反転モードよりも通常モードに多くの時間を蓄積したことを差カウンタが示す場合、次の始動を反転モードに設定する。またはその逆とする。閾値310(通常モード高閾値制限値)および320(反転モード低閾値制限値)は、例えば、+1および-1のようなゼロ以外の差の値でモード反転を誘起するように、システムの切り替え挙動(toggle behavior)を状況に応じて決定する(tailor)ために使用することができる。
【0026】
[0039] 反転制御ロジック・モジュール300における計算に基づいて、バス・モード・コンフィギュレーション・レジスタ370(1ビット)を通常モード(0)または反転モード(1)のいずれかに設定する。バス・モード・コンフィギュレーション・レジスタ370の値を、ライン144上でデータ・バス反転器150に供給する。また、反転制御ロジック・モジュール300は、アドレス・バス、制御バス、およびデータ・バス上のアクティビティも監視し、プロセッサ110がデータをVMEM120から読み出しているとき、プロセッサ・リード・イネーブル・フラグをライン146上で送る。
【0027】
[0040] 図4は、最初に図2に示した双方向データ・バス反転器150のブロック図である。データ・バス反転器150は、メモリ・データ・バス126(VMEM120に入るデータ/VMEM120から出るデータ)とプロセッサ・データ・バス128(プロセッサ110に入るデータ/プロセッサ110から出るデータ)との間の通信を制御する。データ・バス反転器150は、現メモリ・モード制御ビット(バス・モード・コンフィギュレーション・レジスタ370)をライン144上で、そしてプロセッサ・リード・イネーブル・フラグをライン146上で受け取る。これらの入力に基づいて、イネーブル・ロジック・モジュール440は、データ・フローを適正に処理するために、ゲート400/410/420/430を制御する。
【0028】
[0041] ゲート400および410は、データ・ビットを反転させない通過ゲートである。ゲート420および430は、データ・ビットを反転させる反転ゲートである。ゲート400/410/420/430の各々は、イネーブル・ロジック・モジュール440からの信号に基づいて、該当する場合、以下のようにイネーブルされる。
【0029】
[0042] プロセッサ・リード・イネーブル・フラグがセットされておらず(プロセッサが書き込み中であることを意味する)、現メモリ・モード制御ビットが0(通常モード)である場合、通過ゲート400をイネーブルし、プロセッサ・データ・バス128上のビット(プロセッサ110から)をメモリ・データ・バス126に(VMEM120へ)、反転させずに、通過させる。
【0030】
[0043] プロセッサ・リード・イネーブル・フラグがセットされており(プロセッサが読み出し中であることを意味する)、現メモリ・モード制御ビットが0(通常モード)である場合、通過ゲート410をイネーブルし、メモリ・データ・バス126上のビット(VMEM120から)をプロセッサ・データ・バス128に(プロセッサ110へ)、反転させずに、通過させる。
【0031】
[0044] プロセッサ・リード・イネーブル・フラグがセットされておらず(プロセッサが書き込み中であることを意味する)、現メモリ・モード制御ビットが1(反転モード)である場合、反転ゲート420をイネーブルし、(プロセッサ110からの)プロセッサ・データ・バス128上のビットがメモリ・データ・バス126に(VMEM120に向けて)通過するときに、これらのビットを反転させる。
【0032】
[0045] プロセッサ・リード・イネーブル・フラグがセットされており(プロセッサが読み出し中であることを意味する)、現メモリ・モード制御ビットが1(反転モード)である場合、反転ゲート430をイネーブルし、(VMEM120からの)メモリ・データ・バス126上のビットがプロセッサ・データ・バス128に(プロセッサ110に向けて)通過するときに、これらのビットを反転させる。
【0033】
[0046] 図5は、既に図2および図3において見られた、バス・モード制御不揮発性メモリ160におけるメモリ割り当てを示す図である。図5の方式は、単に、閾値310および320、ならびにカウンタ値340、350、および360をNVM160におけるメモリ・アドレスに割り当てるための1つの技法を示すに過ぎない。重要な点は、これらの値がシステム遮断の間に格納され、次の電力投入時にバス・モード・レジスタ制御モジュール140によって使用されるということである。また、図3に示すように、現イベント・タイマ/カウンタ330もバス・モード制御不揮発性メモリ160に収容することができる。
【0034】
[0047] 先の図2(メモリ・インプリント軽減のためのシステム・アーキテクチャ100)および図3図5(モジュール140、150、および160の詳細)についての先の論述では、開示するメモリ・インプリント軽減の実施形態の物理的実装について、余すところなく説明した。図6は、図2のアーキテクチャ100および図3図5の図に示す詳細を使用して、メモリ・インプリントを軽減する方法のフローチャート図600である。
【0035】
[0048] ボックス602において、システムに電力を投入し、動作を開始する。ボックス604において、バス・モード・レジスタ制御モジュール140によって、通常および反転モード・カウンタおよび閾値をバス制御モードNVM160から読み出す。カウンタは、直前のシステム遮断時に更新され、バス制御モードNVM160に書き込まれている。ボックス606において、バス・モード・レジスタ制御モジュール140は、現在の電力投入セッションに対するメモリ・データ・バス・モードを決定する。通常/反転時間差カウンタ360が第1閾値よりも大きい場合、現バス・モードを反転モードにセットする。通常/反転時間差カウンタ360が第2閾値よりも小さい場合、現バス・モードを通常モードにセットする。これらの閾値は、双方ともゼロにセットされてもよく、または個々の用途に最も良く適するように、正および負の非ゼロ値であってもよい。
【0036】
[0049] 判断ダイヤモンド608において、現バス・モードに基づいてプロセスが分岐する。現セッションのメモリ・データ・バス・モードが通常モードである場合、ボックス610において、標準的な様式で、即ち、反転させずに、システムNVM130をVMEM120にロードする。ボックス612において、双方向データ・バス反転器150を、プロセッサ110とVMEM120との間で、反転させずに、データを通過させるように構成する。
【0037】
[0050] 判断ダイアモンド608において、現セッションのメモリ・データ・バス・モードが反転モードである場合、ボックス614において、システムNVM130の特定部分をVMEM120に反転様式で、プロセッサ110によってロードする。反転アドレスは、ブート・コード、アプリケーション・コード、およびISRを含む。ボックス616において、プロセッサ110とVMEM120との間をデータ・ビットが通過するときに、これらを反転させるように、双方向データ・バス反転器150を構成する。
【0038】
[0051] この点について、アーキテクチャ100およびフローチャート600におけるプロセスの効果を強調することは価値がある。通常モード(ボックス610および612)では、0の論理値を有するNVM130からのデータ・ビットは、VMEM120のそれらのアドレスに電気的低電圧として、プロセッサ110によって格納され、1の論理値を有するデータ・ビットは、それらのアドレスに電気的高電圧として、プロセッサ110によって格納される。反転モード(ボックス614および616)では、0の論理値を有するNVM130からの同じデータ・ビットが、VMEM120のそれらのアドレスに、電気的高電圧として格納され、1の論理値を有するデータ・ビットは、それらのアドレスに電気的低電圧として格納される。通常および反転モードは、開示する方法によって、システムのライフサイクルにわたって大まかに等しい時間となるように制御されるので、電圧レベルの反転は、VMEM120におけるメモリ・インプリンティング(データ残留)効果を軽減する。
【0039】
[0052] ボックス618において、VMEM120と通信するプロセッサ110によって、アプリケーション・ソフトウェアを実行する。このアプリケーション・ソフトウェアは、データ・バスがそのVMEM120への/からの経路上で反転されるかもしれないことを知らず、または気にせず、プロセッサ110は、通常または反転モードのどちらが 実施されているかには関係なく、同じ通常のデータ値と見なす。データ・バス反転器150は、該当する場合、双方向において反転を処理し、VMEM120はメモリ・インプリンティング軽減による効果(benefit)が得られる。
【0040】
[0053] ボックス620において、アプリケーションの実行が完了したとき(あるいは車両または機械を停止したとき)、システム遮断信号を供給する。ボックス622において、カウンタ(通常モード・カウンタ340、反転モード・カウンタ350、および差カウンタ360)を更新し、これらの値を、次の電力投入時に使用するために、バス・モード制御NVM160に書き込む。例えば、現セッションが反転モードで実行していた場合、ブロック330からの現セッション時間カウントを反転モード・カウンタの直前の値に加算することによって、反転モード期間カウンタを更新する。ボックス622においてカウンタ340~360を更新し、バス・モード制御NVM160に書き込んだ後、ボックス624においてシステムを実際に電力遮断する。
【0041】
[0054] 図7は、図2のアーキテクチャ100および図6のフローチャート図600を使用するシステム例の26回の電力サイクルについての動作統計を収容するデータ表700である。列702は、単に、システムの電力サイクルの連番だけを収容する。列704は、各電力サイクルの期間を収容する。尚、列704において、電力サイクル期間は、短い方の2時間から長い方の30時間まで劇的に変化することを見ることができる。各電力投入時に通常および反転モード間で単に切り替えるのではなく、通常/反転期間カウンタを使用するのは、この理由のためである。列706は、システム100についての累積サービス時間を収容する。これは単に列704の累計である。
【0042】
[0055] 列708および710は、電力サイクル毎に使用される動作モード(通常または反転)を示し、列708はレジスタ370からの実際のモード・ビットを収容し、列710は記述単語(descriptive word)を収容する。列712は、通常モードにおける累積時間カウンタを収容する。尚、列710に通常と書かれているとき、列712は列704における量だけ増分することが分かる。列714は、反転モードにおける累積時間カウンタを収容する。列710から反転が読み取られたとき、列714は列704における量だけ増分することが分かる。列716は、通常および反転モード時間カウンタ間の差を収容し、つまり、システムが通常モード(正)または反転モード(負)のどちらで多くの時間を費やしたかを示す。列718は、列716の均衡状態を、累積サービス時間列706に対する割合として表す。
【0043】
[0056] 列712における通常モード累計時間は、図3および図5のブロック340における値を表す。列714における反転モード総累積時間は、図3および図5のブロック350における値を表す。列716における通常-反転総時間差は、図3および図5のブロック360における値を表す。閾値310および320も、表700の最上位に示されている。
【0044】
[0057] 列716および718において、通常-反転差がゼロを中心としたままであり、全体的に約+/-25時間の値の間で上下し(oscillate)、小さいパーセント値に向かう傾向があることが分かる。対照的に、サービス総累計時間は、この電力サイクルの小さいサンプルでは、数百時間に達しており、システムのライフサイクルにわたって数千時間にまで上昇することが理解できる。VMEM120における各アドレスを数千時間にわたって同じ電圧レベルに留める代わりに、開示する方法およびシステムは、各アドレスにおける高および低電圧時間をほぼ等しく均衡させる。この均衡により、メモリ・セル位置に対して等しく電気的ストレスを分与し、こうしてメモリ・インプリンティングの検出を著しく難化させる。
【0045】
[0058] 図2図6のこれまでの論述では、マイクロプロセッサに接続された埋め込みシステム・デバイスにおけるSRAMについて説明した。アーキテクチャ100の一実施形態をあげるとすれば、回路カード・アセンブリ(CCA)にはんだ付けされたディスクリートSRAMデバイスであろう。しかしながら、メモリ・インプリント軽減についての更に他の使用事例も確認されており、以下で論ずる。また、本開示において説明したメモリ・インプリンティング軽減方式は、事実上全てのSRAMベースのプログラマブル・ロジック、マイクロプロセッサ(L1、L2、およびL3キャッシュ)、マイクロコントローラ、およびディジタル信号プロセッサ(命令キャッシュ)の部分にも応用できる。以下の論述では、これらの使用事例について説明する。
【0046】
[0059] ディジタル・プロセッサの内部にあるキャッシュ・メモリ・エレメントのメモリ・インプリンティング軽減は、ディスクリート集積回路に基づくプロセッサ(マイクロプロセッサ、ディジタル信号プロセッサ(DSP)、グラフィクス・プロセッサ・ユニット(GPU)、または同様のデバイス)に対する変更(modification)によって実現することができる。このようなデバイスでは、プロセッサは、多くの場合、キャッシュ・メモリ(レベル1キャッシュ。通例、別個の命令およびデータ・キャッシュ、レベル2およびレベル3キャッシュ、ならびに変換ルックアサイド・バッファに分割される)のような内部揮発性メモリに基づくデータ構造を含む。これらの内部メモリ構造は、外部メモリ・リード(フェッチ)の回数を減らすことによって、プロセッサ命令の実行高速化を可能にする。プロセッサが外部メモリからリードおよびライトを行う場合、内部レジスタ、内部キャッシュ・メモリ、および他のメモリ構造にアクセスするプロセッサと比較すると、著しい時間オーバーヘッドが追加される。
【0047】
[0060] キャッシュ・メモリ構造は、プロセッサが外部メモリからコンテンツを読み出すときに必要とされるよりも多くのメモリをコピーすることによって、処理スループットを向上させる(speed up)。プロセッサの内部に位置するキャッシュ・メモリに、より多くの量のメモリ・リードが格納される(書き込まれる)。プロセッサがアクセスする必要があるメモリのアドレスが、キャッシュを満たすために直前に使用されたばかりのアドレスに近い場合、キャッシュ自体がそのコンテンツのローカル・コピーを供給することができ、外部メモリ・アクセスの必要性をなくすことによって、処理を大幅に増加させることができる。このような内部揮発性メモリ・データ構造は、プロセッサの他の部分に見られるトランジスタ構造(ALU、メモリ管理ユニット等)を使用し、これらにもメモリ・インプリンティングが発生するおそれがある。このような構造に対してメモリ・インプリンティングを軽減する利点は、キャッシュ内における同じ位置に存在するメモリ・コンテンツの特定部分の期間と相関関係にある。実例をあげると、プロセッサ命令の形態であるメモリ・コンテンツは、キャッシュにおけるデータ値のそれよりも、攻撃者にとって有用な目標となり得る。何故なら、プロセッサ命令は同じままでいる場合が多いが、プロセッサおよびその命令によって処理されるデータは、変化する場合が多いからである。
【0048】
[0061] 尚、キャッシュ・メモリ構造には、直接マップ(一方向)、ツー・ウェイ、フォー・ウェイからN-ウェイ・セット・アソシアティブ・キャッシュ、ビクティム・キャッシュ(victim cache)、トレース・キャッシュ(trace cache)、書き込み結合キャッシュ、およびマイクロ処理キャッシュというような、多くのトポロジがあることを注記しておく。以下に開示するアーキテクチャの意図は、プロセッサに統合されたこのようなキャッシュ・メモリ・トポロジのいずれにおいても、メモリ・インプリンティングを軽減することである。
【0049】
[0062] 図8は、統合キャッシュ・メモリを有する、一般化したマイクロプロセッサ800のブロック図であり、開示するメモリ・インプリンティング軽減技法をキャッシュ・メモリに実装することができる。マイクロプロセッサ800は、外部メモリ・バス・インターフェース810、算術ロジック・ユニット(ALU)820、命令デコーダ830、およびキャッシュ840として知られる内部メモリ構造を含む。キャッシュ840は、外部メモリの対応するブロックをコピーするために使用されるSRAMメモリのブロックであり、プロセッサの集積回路(IC)が外部メモリにアクセスする必要がない場合に、命令およびデータにより速くアクセスすることができる。プロセッサICがICパッケージ境界の外側にあるメモリにアクセスしなければならないとき、プロセスは、外部メモリに進み、コンテンツを読み出し、コンテンツをプロセッサに移動させ、命令を実行するために、数回のメモリ・サイクルの時間期間(memory cycle time period)を費やす。キャッシュ・メモリ840へのアクセスの方が遙かに速く、処理スループットを高める。
【0050】
[0063] 内部キャッシュ・メモリ840は、長時間期間(periods of time)にわたって同じ値を保持する傾向があり、この構造にメモリ・インプリンティングが生じ易くなる。今日のプロセッサには、3つまでのキャッシュ・ブロックを設けることができる。「レベル1」キャッシュは、最も小さいがプロセッサの実行がより速く、「レベル2」はサイズおよび速度が中位であり、「レベル3」はサイズが最も大きいが、レベル1およびレベル2キャッシュ構造よりも遅い。メモリ・インプリント軽減は、キャッシュ840とバス・インターフェース810との間、およびキャッシュ840とプロセッサICの他のエレメントとの間に反転器を追加することによって、キャッシュ840内に実装することができる。これについては、図10の論述において以下で更に説明する。
【0051】
[0064] 図9は、命令キャッシュを有するディジタル信号プロセッサ900のブロック図であり、開示するメモリ・インプリンティング軽減技法を命令キャッシュに実装することができる。ディジタル信号プロセッサ(DSP)ICは、マイクロプロセッサの特殊バージョンであり、信号処理用途に必要な数学演算を実行するために、DSPアーキテクチャが最適化されている。DSP ICは、汎用マイクロプロセッサと比較すると、少ない命令セットを有するが、ハードウェア集中処理ブロック(実例をあげると、乗算および蓄積ブロック)により、効率を高める(gain in efficiency)。図8のマイクロプロセッサと同様、DSP900も、汎用プロセッサと同じ理由で、内部SRAMキャッシュを使用する。DSP900は、命令キャッシュ910を含む。命令キャッシュ910は、同じ値を長い時間期間にわたって保持し、メモリ・インプリンティングが生じ易い。以下で論ずるように、命令キャッシュ910も、開示するメモリ・インプリント軽減技法の効果を得ることができる。
【0052】
[0065] 図10は、本開示の実施形態にしたがって、図8図9のマイクロプロセッサ800またはDSP900のような、マイクロプロセッサに内蔵されたキャッシュ・メモリにおけるメモリ・インプリンティングを軽減するように設計されたシステム・アーキテクチャ1000のブロック図である。アーキテクチャ1000は、図2のアーキテクチャ100と同様であり、アーキテクチャ1000は、バス・モード・レジスタ制御1040、双方向データ・バス反転器1050、およびバス・モード制御NVM1060を含む。これらは、それぞれ、図2のエレメント140、150、および160に対応する。
【0053】
[0066] アーキテクチャ1000の場合、メモリ・インプリント軽減の目標は、外部にある場合もある完全揮発性メモリ・モジュール(full volatile memory module)ではなく、集積回路(IC)自体に内蔵されたプロセッサのキャッシュ・メモリである。図8および図9に関する直前の段落において論じたように、キャッシュ・メモリは、長い時間量にわたって、同じデータをいくつかのレジスタに収容する場合があり、メモリ・インプリンティングが生じ易くなる。
【0054】
[0067] ICダイ・キャリア印刷回路ボード(PCB)1002は、ICダイ1004を含み、ICダイ1004以外の他のエレメント(図示せず)もPCB1002上に存在する場合もあることは理解されよう。ICパッケージ入力/出力はんだバンプ1006は、ICダイ1004をPCB1002上の他のエレメントまたは他の回路ボードに接続することを可能にする。プロセッサ・コア算術ロジック・ユニット(ALU)1010は、ディジタル信号プロセッサであれ、グラフィクス処理ユニットであれ、一般化されたマイクロプロセッサであれ、またこれら以外であれ、デバイスの目的である実際の数学的計算および/または論理計算を実行するエレメントである。
【0055】
[0068] 内部キャッシュ・メモリ1020は、以上で広く論じたキャッシュ・メモリである。即ち、メモリ・インプリンティングが生じ易く、インプリンティングから保護するためにアーキテクチャ1000が設計された高速内蔵RAMエレメントである。
【0056】
[0069] 内部キャッシュ・メモリ・コントローラ1022は、キャッシュ1020に流入するデータおよびキャッシュ1020から流出するデータを制御する。これらのデータには、キャッシュ・アドレス・バス1024、キャッシュ制御バス1026、およびキャッシュ・データ・バス1028上のデータおよび信号が含まれる。外部メモリ・インターフェース1030は、ALU1010,キャッシュ1020、ならびに外部揮発性メモリおよび不揮発性メモリ間の通信を制御する。即ち、インターフェース1030は、必要なときに、ALU1010と外部メモリとの間におけるデータ・リード/ライトを可能にし、外部メモリからキャッシュ1020へのデータ・フェッチ、更に、可能なときはいつでも、キャッシュ1020からALU1010へのデータの直接供給も可能にする。これらのデータ流路は、インターフェース1030のボックスにおいて矢印で示されている。
【0057】
[0070] 外部メモリとの通信は、外部アドレス・バス1032、外部制御バス1034、および外部データ・バス1036を通じて行われる。これらのバスは、図2のアドレス/制御/データ・バス122/124/126と同等である。プロセッサ・アドレス・バス1012、プロセッサ制御バス1014、およびプロセッサ・データ・バス1016は、ALU1010と外部メモリ・インターフェース1030との間の通信のために装備されている。
【0058】
[0071] 破線で囲ったエリア1070は、メモリ・インプリント軽減アーキテクチャ1000のために標準的なプロセッサに追加されたエレメントを含む。図10のアーキテクチャ1000の動作は、既に論じた図2のアーキテクチャ100の動作と非常に似ている。バス・モード・レジスタ制御1040が、キャッシュ1020を反転モードで動作させるべきと判断したとき、データ・バス反転器1050はキャッシュ1020から流出するデータ・ビットおよびキャッシュ1020に流入するデータ・ビットを反転させる。この反転は、データの発生源または宛先に関係なく(ALU1010または外部メモリ)、キャッシュ1020に流入するデータおよびキャッシュ1020から流出するデータの全てに影響を及ぼす。データ・バス反転器1050の位置のために、標準的なプロセッサ・アーキテクチャと比較して、アーキテクチャ1000において他に変更する必要があるものは何もない。即ち、ALU1010、インターフェース1030、および外部メモリは、常に、これらが予期する非反転データ・ビットを見る。キャッシュ1020だけが反転データ・ビットを見ており(システムが反転モードで実行しているとき)、こうしてキャッシュ1020におけるメモリ・インプリンティング軽減を可能にする。
【0059】
[0072] 図2のアーキテクチャ100に関して既に論じたように、バス・モード・レジスタ制御1040は、システム始動時に、バス・モード制御NVM1060に格納されている通常モードおよび反転モードのカウンタ・データに基づいて、通常モードまたは反転モードのどちらで実行するか決定する。このシステムの目標は、システムの寿命にわたって、通常モードおよび反転モード動作の均衡を取ることである。NVM1060は、ICダイ1004上に実装することができ(参照番号1060によって示す通り)、またはPCB1002(1060A)上に位置してもよく、またはPCB1002(1060B)から完全に外部に位置してもよい。
【0060】
[0073] アーキテクチャ1000は、プロセッサの内蔵キャッシュにおいてメモリ・インプリンティングを軽減するように設計されており、一方アーキテクチャ100は、プロセッサの外部にある主システムRAMにおけるインプリンティングを軽減するように設計されている。
【0061】
[0074] 本開示のメモリ・インプリント軽減技法の他の応用は、フィールド・プログラマブル・ゲート・アレイ(FPGA)のコンフィギュレーション・メモリにおいて行われる。典型的なFPGAデバイスでは、コンフィギュレーション・メモリ・セル(チップの外側からはアクセスできず、通例、チップの内側からユーザの設計に介入できない)が、所与のユーザの設計に独特な二進値を格納するために使用され、電力が供給されている間、システムにおけるその部分の使用期間にわたって、同じ値のままであり続ける。このため、FPGAコンフィギュレーション・メモリ・セルにはメモリ・インプリンティングが生じ易くなる。このFPGAへの応用について、以下で詳細に説明する。
【0062】
[0075] 図11は、SRAMベースのフィールド・プログラマブル・ゲート・アレイ(FPGA)デバイス1100の物理上面図である。FPGA1100は、構成変更可能なロジック・ブロック1110、I/Oブロック1120、およびブロックRAM1130を含む。FPGAを理解する便利な方法は、集積回路パッケージの外部部分に接続する数百から数千個のI/Oセル1120によって外側の周囲を包囲された、三次元サンドウィッチ・モデルのトランジスタ層を使用することである。FPGAデバイスは、わずか10ナノメートル(nm)という最新のIC製作技術を利用し、2~100億個ものトランジスタを実装した高密度集積回路である。
【0063】
[0076] 図12は、FPGA1202を含むFPGAアーキテクチャ1200の従前からの実施態様の三次元モデルの断面図である。三次元モデルでは、最上位層1210(層3)を「プログラマブル・ロジック」および「プログラマブルI/O」層として考えることができ、中間層1220(層2)を「コンフィギュレーション・メモリ」層として考えることができ、最下位層1230(層1)を「コンフィギュレーション・メモリ・コントローラ」層として考えることができる。層3(1210)は、同じロジック・ブロック1212の行列に区分されている。層3(1210)は、数千からほぼ百万個のロジック・ブロック1212から成る場合もあり、行列の外輪(outside ring)は、プログラマブルI/Oブロック1214から成る。
【0064】
[0077] 各層3のロジック・ブロック1212またはI/Oブロック1214は、層2のコンフィギュレーション・メモリ・セル1222によって個々に特定のロジック機能またはI/O機能を実行するように構成される。層2のメモリ・セル1222と層3のロジック・ブロック1212に対して、多数対1のマッピングとなる。図12のモデルでは、100個の層2メモリ・セル出力が、各層3ロジックまたはI/Oブロック1212に接続されると仮定する。50K個の層3ロジック・ブロック1212、および1K個の層3I/Oブロック1214がある場合、ロジック・ブロック1212に対して対応する50K×100=5M個の層2メモリ・セル1222があり、I/Oブロック1214に対して、1K×100=100K個の層2メモリ・セル1222がある。各層2メモリ・セル1222は、初期状態において、電力投入の間、層1コンフィギュレーション・メモリ・コントローラ1232によってロードされる。層1(1230)は、外部メモリ・インターフェース(JTAG)1234、少量のバッテリ・バックアップされたSRAMメモリ1236、および/またはeFuses1237から成る。eFuses1237は、選択マルチプレクサ1238、ビットストリーム・オーセンティケータ(bitstream authenticator)1239、およびビットストリーム解読器(bitstream decryptor)1240、そして最終的にコンフィギュレーション・メモリ・コントローラ1232を通じて、ユーザ・プログラム可能な解読鍵を供給するために使用される。
【0065】
[0078] コンフィギュレーション・メモリ・アクセス・ポート1260は、何らかの特定機能のために、層2(1220)のコンフィギュレーション・メモリ・セル1222と層3(1210)のI/Oブロック1214との間における通信のために装備されている。更に、当業者には理解されるであろうが、層3(1210)のI/Oブロック1214には、FPGA1202を回路ボードに接続するためのはんだバンプ1270が形成されている。
【0066】
[0079] 殆どのFPGAデバイスでは、デバイスの電力投入時に、SRAMコンフィギュレーション・メモリの内部コンテンツが外部メモリ・デバイス1250からロードされる。FPGAイメージまたはFPGAビットストリームとしても知られる、FPGAのコンフィギュレーション・メモリ・ファイルは、多くの場合、外部メモリ・デバイス1250(例えば、不揮発性FLASH(登録商標)メモリ)上に暗号化された状態で格納される。電力投入時に、FPGA1202は、順次外部暗号化ファイルをデバイス1250から、I/Oブロック1244を介して読み込む。次いで、FPGA1202は、2つのマルチプレクサ選択解読鍵の内1つを使用して、ファイルを内部で解読する。この鍵は、FPGA内に常駐し、電力投入サイクルに先立ってFPGAに格納されている。マルチプレクサ1238において選択された解読鍵は、バッテリ・バックアップされたSRAMメモリ1236の結果であるか、または電気的に変更可能な内部ヒューズ(eFuses1237)の関数である。
【0067】
[0080] 着信ファイルが解読されるに連れて、解読されたコンテンツがFPGAの内部コンフィギュレーション・メモリ・セル1222に書き込まれる。現在のFPGAデバイスは、数十万から数百万のコンフィギュレーション・ビットを利用する。設計が変更され、異なるビットストリームおよび解読鍵が使用されない限り、外部メモリ・デバイスに格納されているFPGAイメージが、各電力投入時に、同じコンフィギュレーション・メモリ・セル1222に書き込まれる。これらのコンフィギュレーション・メモリ・セル1222は、チップの外側からはアクセスすることができず、通例、チップの内側からユーザの設計に介入することができず、電力が供給されている間、システムにおけるその部分の使用期間にわたって、FPGAがユーザの設計を実装することを可能にするように、意図的に不変(static)になっている。メモリ・インプリンティング現象による影響を受けるのは、正にこのFPGAコンフィギュレーション・メモリ1222である。本開示において説明した方式を利用することにより、FPGAの販売業者は、コンフィギュレーション・メモリのインプリンティングの効果を劇的に低減することができる。
【0068】
[0081] 図13は、本開示の実施形態にしたがって、メモリ・インプリンティング防止を防止する、FPGA1302を含むFPGAアーキテクチャ1300の三次元モデルの断面図である。図13は、一般化したFPGAアーキテクチャ1200と同じアーキテクチャを示すが、メモリ・セル入力(1310)および出力(1320)に対するコンフィギュレーション・メモリ反転プレーン(inversion plane)、コンフィギュレーション・メモリ反転コントローラ1330、ならびに反転制御不揮発性メモリ(NVM)1340が追加されている。コンフィギュレーション・メモリ反転コントローラ1330の機能は、図2に示し先に論じたバス・モード・レジスタ制御モジュール140の機能と同一である。
【0069】
[0082] FPGA始動プロセスの一部として、層1コンフィギュレーション・メモリ・コントローラ1232は、ライン1332上でコンフィギュレーション・メモリ反転コントローラ1330と通信し、これを起動する(initiate)。ライン1350上で、コンフィギュレーション・メモリ入力反転プレーン1310が、FPGA1302が通常モードまたは反転モードのどちらで動作しているのかを示す信号を、コンフィギュレーション・メモリ反転コントローラ1330から受け取る。反転モードのとき、コンフィギュレーション・メモリ入力反転プレーン1310は、コンフィギュレーション・メモリ・コントローラ1232からコンフィギュレーション・メモリ・セル1222(図12の)に流入するビットを反転させる(論理1および0の値を交換する)。同様に、FPGA1302が反転モードで動作しているとき、コンフィギュレーション・メモリ出力反転プレーン1320は、層2コンフィギュレーション・メモリ・セル1222からプログラマブル機能ブロック1212に流入するビットを反転させる。また、コンフィギュレーション・メモリ出力反転プレーン1320は、ライン1350上で、FPGA1302が通常モードまたは反転モードのどちらで動作しているかを示す信号を、コンフィギュレーション・メモリ反転コントローラ1330から受け取る。このようにして、コンフィギュレーション・メモリ・セル1222のコンテンツは、メモリ・インプリンティングから保護される。これは、個々のコンフィギュレーション・メモリ・セル各々が、その寿命の約半分を低電圧状態で費やし、その寿命の約半分を高電圧状態で費やすからである。
【0070】
[0083] コンフィギュレーション・メモリ反転コントローラ1330は、ライン1342上で、反転制御NVM1340と通信する。反転制御NVM1340は、FPGAパッケージに内蔵されてもよく(実線の輪郭で示す通り)、またはFPGAパッケージとは別個であってもよい(破線の輪郭で示す通り)。コンフィギュレーション・メモリ反転コントローラ1330は、システム・クロック入力を有し、電力投入セッション毎に、通常モードまたは反転モードで経過した時間を追跡し、システム遮断中に更新値を反転制御NVM1340に書き込む。図2図3、および図5のバス・モード制御NVM160と同様、反転制御NVM1340は、累積通常モード時間および累積反転モード時間の値を格納し、システムの電力投入毎に、通常モードまたは反転モードのどちらを選択するか決定するために、この情報をコンフィギュレーション・メモリ反転コントローラ1330に使用させる。
【0071】
[0084] 図14は、図13に示したようにメモリ・インプリンティング軽減を行うFPGAアーキテクチャ1300の断面図であり、2つのコンフィギュレーション・メモリ反転プレーン1310および1320の各々において、多重化コンフィギュレーション・メモリ反転エレメント400がどのように使用されるかについて、更に詳細に示す。CM反転プレーン1310/1320は、これらの反転エレメント1400の層で構成され、コンフィギュレーション・メモリ反転コントローラ1330によって共通選択制御が駆動される。
【0072】
[0085] コンフィギュレーション・メモリ・セル1222の各々は、反転エレメント1400の内1つがその入力に接続され(プレーン1310において)、他の反転エレメント1400がその出力に接続されている(プレーン1320において)。反転エレメント1400の各々は、データ入力ライン1402を含む。データ入力ライン1402は、通過コネクタ1404および反転ゲート1406に分岐し、これらの双方が入力をマルチプレクサ(MUX)1408に供給する。また、MUX1408は、ライン1410上で、FPGA1302が通常または反転モードのどちらで動作しているかを示す選択信号もコンフィギュレーション・メモリ反転コントローラ1330から受け取る。FPGA1302が通常モードで動作しているとき、MUX1408は非反転データを通過コネクタ1404から出力ライン1412に出力する。FPGA1302が反転モードで動作しているとき、MUX1408は反転データを反転ゲート1406から出力ライン1412に出力する。
【0073】
[0086] 物理的な実施態様は異なるが、図14に示すインプリンティング防止の使用モードは、既に論じたプロセッサ・アーキテクチャを有する回路カード(図2図5)のそれと同一である。電力投入イベント毎に、コンフィギュレーション・メモリ・コントローラ1330は、反転制御の論理レベル(動作モード)を決定し、このモードをCM反転プレーン1310/1320に伝達し、通常モードにおける動作は、反転モードにおける動作と経時的に均衡が取られる。
【0074】
[0087] 以上で開示した技法は、多くの異なる種類の電子システムの揮発性メモリまたはコンフィギュレーション・メモリにおけるメモリ・インプリンティング(データ残留)の軽減のために採用することができる。メモリ・インプリンティングの効果を極力抑えることによって、電子システムのセキュリティが向上する。何故なら、これらは実行可能コードおよびデータの敵対的抽出という被害を受け難くなるからである。
【0075】
[0088] 以上の論述は、開示した方法およびシステムの例示的な実施形態について記載するに過ぎない。このような論述ならびに添付する図面および請求項から、以下の請求項において定められる、開示した技法の主旨および範囲から逸脱することなく、種々の変更、修正、および変形も行えることは、当業者には容易に認められよう。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14