(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】抵抗処理ユニットを物理的に複製困難な関数として用いるセキュアなチップ識別
(51)【国際特許分類】
H04L 9/10 20060101AFI20240910BHJP
【FI】
H04L9/10 Z
(21)【出願番号】P 2022564204
(86)(22)【出願日】2021-03-19
(86)【国際出願番号】 IB2021052314
(87)【国際公開番号】W WO2021220071
(87)【国際公開日】2021-11-04
【審査請求日】2023-08-10
(32)【優先日】2020-04-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】クマー、アービンド
(72)【発明者】
【氏名】安藤 崇志
(72)【発明者】
【氏名】ファイファー、ダーク
【審査官】塩澤 如正
(56)【参考文献】
【文献】国際公開第2014/119329(WO,A1)
【文献】国際公開第2019/146198(WO,A1)
【文献】特開2016-105278(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理により識別
する方法であって、
制御システムを用いて、ミッドレンジ条件下で抵抗処理ユニット(RPU)のクロスバー・アレイにバイアスをかけることであって、前記ミッドレンジ条件は、前記RPUの抵抗が低値及び高値のランダム出力をほぼ等しい割合で生じるようにさせるものである、バイアスをかけることと、
前記制御システムを用いて、前記RPUの前記抵抗を、前記ミッドレンジ条件から生じた前記低値及び前記高値を強制する状態に設定することによって、前記ランダム出力の前記低値及び前記高値を補強することであって、前記RPUの前記クロスバー・アレイが前記ミッドレンジ条件下でバイアスをかけられていないときでも前記ランダム出力を永続させるように、前記低値及び前記高値を補強することと、
前記制御システムを用いて、前記ランダム出力の前記低値及び前記高値を補強することに応答して、前記ランダム出力の前記低値及び前記高値のシーケンスを記録することと
を含
む方法。
【請求項2】
前記ミッドレンジ条件下で所定の電圧を受け取ることに応答して、前記RPUは、確率的応答を生成する、請求項1に記載
の方法。
【請求項3】
前記ミッドレンジ条件下で所定の電圧を受け取ることに応答して、前記RPUは、ほぼ等しい割合で前記低値及び前記高値の確率的応答を生成する、請求項1に記載
の方法。
【請求項4】
前記RPUの前記抵抗を、前記ミッドレンジ条件から生じた前記低値及び前記高値を強制する状態に設定することによって、前記ランダム出力の前記低値及び前記高値を補強することは、前記ミッドレンジ条件下で前記RPUの前記抵抗を駆動する電圧パルスを用いることを含む、請求項1に記載
の方法。
【請求項5】
前記RPUの前記抵抗を、前記ミッドレンジ条件から生じた前記低値及び前記高値を強制する状態に設定することによって、前記ランダム出力の前記低値及び前記高値を補強することは、前記低値及び前記高値をほぼ等しい割合で確実にするように、電圧パルスを用いて抵抗値を上下にシフトさせることを含む、請求項1に記載
の方法。
【請求項6】
前記RPUの前記クロスバー・アレイは、前記ランダム出力に一致する検証シーケンスを読み出すことよって認証されるように構成され、前記検証シーケンスは、前記ミッドレンジ条件とは異なる条件下で読み出されたものである、請求項1に記載
の方法。
【請求項7】
前記ランダム出力の前記低値及び前記高値の前記シーケンスを記録することに応答して、前記RPUの前記抵抗がその後にプログラムされるのを防ぐことをさらに含む、請求項1に記載
の方法。
【請求項8】
請求項1から請求項7までのいずれか1項に記載の方法をコンピュータに実行させるプログラム命令を含むコンピュータ・プログラ
ム。
【請求項9】
請求項8に記載のコンピュータ・プログラムを格納したコンピュータ可読ストレージ媒体。
【請求項10】
コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1つ又は複数のプロセッサと
を備えるシステムであって、
前記コンピュータ可読命令は、
ミッドレンジ条件下で抵抗処理ユニット(RPU)のクロスバー・アレイにバイアスをかけることであって、前記ミッドレンジ条件は、前記RPUの抵抗が低値及び高値のランダム出力をほぼ等しい割合で生じるようにさせるものである、バイアスをかけることと、
前記RPUの前記抵抗を、前記ミッドレンジ条件から生じた前記低値及び前記高値を強制する状態に設定することによって、前記ランダム出力の前記低値及び前記高値を補強することであって、前記RPUの前記クロスバー・アレイが前記ミッドレンジ条件下でバイアスをかけられていないときでも前記ランダム出力を永続させるように、前記低値及び前記高値を補強することと、
前記ランダム出力の前記低値及び前記高値を補強することに応答して、前記ランダム出力の前記低値及び前記高値のシーケンスを記録することと
含む動作を行うように前記1つ又は複数のプロセッサを制御する、
システム。
【請求項11】
前記ミッドレンジ条件下で所定の電圧を受け取ることに応答して、前記RPUは、確率的応答を生成する、請求項
10に記載のシステム。
【請求項12】
前記ミッドレンジ条件下で所定の電圧を受け取ることに応答して、前記RPUは、ほぼ等しい割合で前記低値及び前記高値の確率的応答を生成する、請求項
10に記載のシステム。
【請求項13】
前記RPUの前記抵抗を、前記ミッドレンジ条件から生じた前記低値及び前記高値を強制する状態に設定することによって、前記ランダム出力の前記低値及び前記高値を補強することは、前記ミッドレンジ条件下で前記RPUの前記抵抗を駆動する電圧パルスを用いることを含む、請求項
10に記載のシステム。
【請求項14】
前記RPUの前記抵抗を、前記ミッドレンジ条件から生じた前記低値及び前記高値を強制する状態に設定することによって、前記ランダム出力の前記低値及び前記高値を補強することは、前記低値及び前記高値をほぼ等しい割合で確実にするように、電圧パルスを用いて抵抗値を上下にシフトさせることを含む、請求項
10に記載のシステム。
【請求項15】
前記RPUの前記クロスバー・アレイは、前記ランダム出力に一致する検証シーケンスを読み出すことよって認証されるように構成され、前記検証シーケンスは、前記ミッドレンジ条件とは異なる条件下で読み出されたものである、請求項
10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、集積回路(IC)に関する方法及びシステムに関し、より具体的には、抵抗処理ユニット(RPU)を物理的に複製困難な関数(physically unclonable function)として用いるセキュアなチップ識別のための方法及びシステムに関する。
【背景技術】
【0002】
物理複製困難関数(物理的に複製困難な関数と呼ばれることもある)、すなわちPUFは、所与の入力及び条件(課題)に対して、多くの場合マイクロプロセッサなどの半導体デバイスについての固有の識別子として機能する物理的に定義された「デジタル指紋」出力(応答)を与える、物理オブジェクトである。PUFは、物理構造内に具体化される物理エンティティである。PUFは、通常、集積回路(IC)に実装され、典型的には、高いセキュリティ要件を有するアプリケーションで使用される。IC(チップ又はマイクロチップとも呼ばれる)は、ウェハ上の電子回路を形成する多数の電子デバイスを含む。ウェハは、例えば、シリコン又は他の材料などの半導体材料とすることができる。
【発明の概要】
【0003】
識別のためのコンピュータ実施の方法の非限定的な例は、制御システムを用いて、ミッドレンジ条件下で抵抗処理ユニット(RPU)のクロスバー・アレイにバイアスをかけること含み、ミッドレンジ条件は、RPUの抵抗が低値及び高値のランダム出力をほぼ等しい割合で生じるようにさせるものである。コンピュータ実施の方法は、制御システムを用いて、RPUの抵抗を、ミッドレンジ条件から生じた低値及び高値を強制する状態に設定することによって、ランダム出力の低値及び高値を補強することを含む。低値及び高値を補強することは、RPUのクロスバー・アレイがミッドレンジ条件下でバイアスをかけられていないときでも、ランダム出力を永続させる。さらに、コンピュータ実施の方法は、制御システムを用いて、ランダム出力の低値及び高値を補強することに応答して、ランダム出力の低値及び高値のシーケンスを記録することを含む。
【0004】
コンピュータ・プログラム製品の非限定的な例は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を含み、プロセッサによって実行可能なプログラム命令は、プロセッサに動作を実行させる。動作は、ミッドレンジ条件下で抵抗処理ユニット(RPU)のクロスバー・アレイにバイアスをかけることを含み、ミッドレンジ条件は、RPUの抵抗が低値及び高値のランダム出力をほぼ等しい割合で生じるようにさせるものである。動作は、RPUの抵抗を、ミッドレンジ条件から生じた低値及び高値を強制する状態に設定することによって、ランダム出力の低値及び高値を補強することを含む。低値及び高値を補強することは、RPUのクロスバー・アレイがミッドレンジ条件下でバイアスをかけられていないときでも、ランダム出力を永続させる。さらに、動作は、ランダム出力の低値及び高値を補強することに応答して、ランダム出力の低値及び高値のシーケンスを記録することを含む。
【0005】
システムの非限定的な例は、コンピュータ可読命令を有するメモリと、コンピュータ可読命令を実行するための1つ又は複数のプロセッサとを含み、コンピュータ可読命令は、動作を行うように1つ又は複数のプロセッサを制御する。動作は、ミッドレンジ条件下で抵抗処理ユニット(RPU)のクロスバー・アレイにバイアスをかけることを含み、ミッドレンジ条件は、RPUの抵抗が低値及び高値のランダム出力をほぼ等しい割合で生じるようにさせるものである。動作は、RPUの抵抗を、ミッドレンジ条件から生じた低値及び高値を強制する状態に設定することによって、ランダム出力の低値及び高値を補強することを含む。低値及び高値を補強することは、RPUのクロスバー・アレイがミッドレンジ条件下でバイアスをかけられていないときでも、ランダム出力を永続させる。さらに、動作は、ランダム出力の低値及び高値を補強することに応答して、ランダム出力の低値及び高値のシーケンスを記録することを含む。
【0006】
付加的な技術的特徴及び利点が、本発明の技術を通して実現される。本発明の実施形態及び態様が本明細書において詳細に説明され、特許請求される主題の一部分であると見做される。より良く理解するために、詳細な説明及び図面を参照されたい。
【図面の簡単な説明】
【0007】
本明細書で説明される専有権の詳細は、本明細書の結論部における特許請求の範囲において具体的に指摘され、明白に特許請求される。本発明の実施形態の前述の並びに他の特徴及び利点は、添付の図面と関連して記述される以下の詳細な説明から明白となる。
【0008】
【
図1A】本発明の1つ又は複数の実施形態による、フォワード・パスにおける抵抗処理ユニット(RPU)のクロスバー・アレイの略図を示す。
【
図1B】本発明の1つ又は複数の実施形態による、バックワード・パスにおけるRPUのクロスバー・アレイの略図を示す。
【
図1C】本発明の1つ又は複数の実施形態による、重み更新におけるRPUのクロスバー・アレイの略図を示す。
【
図2】本発明の1つ又は複数の実施形態による、RPUのクロスバー・アレイを使用するシステムの略図を示す。
【
図3】本発明の1つ又は複数の実施形態による、RPUのクロスバー・アレイを物理的に複製困難な関数(PUF)として使用するセキュアなチップ識別の方法のフローチャートを示す。
【
図4】本発明の1つ又は複数の実施形態による、RPUのクロスバー・アレイを使用するシステムの略図を示す。
【
図5】本発明の1つ又は複数の実施形態による、RPUのクロスバー・アレイを使用するシステムの略図を示す。
【
図6】本発明の1つ又は複数の実施形態によるチップのブロック図を示す。
【
図7】本発明の1つ又は複数の実施形態によるチップ識別の方法のフローチャートを示す。
【
図8】本発明の1つ又は複数の実施形態により利用される機能及び特徴を有する例示的なコンピューティング・システムの略図を示す。
【0009】
本明細書で示される図は例示的なものである。本明細書で説明される図又は動作に対する、本発明の趣旨から逸脱しない多くの変化形が存在し得る。例えば、アクションを異なる順序で行ったり、アクションを追加、削除又は修正することができる。また、用語「結合された」又はその変化形は、2つの要素の間に通信経路を有することを記述し、要素の間の介在要素なしの直接接続/それらの間の接続を意味しない。これら変化形の全ては、本明細書の一部と見做される。
【0010】
添付の図面及び本発明の実施形態の以下の詳細な説明において、図面中に示される種々の要素には、2又は3桁の参照番号が与えられる。わずかな例外はあるが、各々の参照番号の最上位桁(単数又は複数)は、その要素が初めに示される図に対応する。
【発明を実施するための形態】
【0011】
半導体サプライ・チェーンの完全性は、特に機密性の高い産業にとって重要なセキュリティ・ニーズである。従って、産業は、重要なシステムに搭載されているチップが真正であることを検証する必要がある。例えば、偽の部品や又は模造品は、本物の代わりになっている場合、悪意のある回路を含む可能性がある。しかし、本発明の1つ又は複数の実施形態により、固有の再現可能なデジタル指紋又はパターンをチップ認証のために用いることができ、それにより、チップ・サプライ・チェーンの完全性を検証することができる。
【0012】
本発明の1つ又は複数の実施形態は、抵抗処理ユニット(RPU)のクロスバー・アレイによって生成される確率的パターンを補強する方法及び構造を提供する。本発明の1つ又は複数の実施形態は、チップ認証のための固有で再現可能なデジタル指紋又はパターンを生成する。RPUのクロスバー・アレイは、チップを識別するための固有のデジタル指紋又はパターンを生成することができる物理的に複製困難な関数(PUF)として機能する。その確率的性質のため、PUFは、別のチップ上に正確に複製することができず、従って、チップが真正であることを一意に識別するように機能することができる。PUFは、固有の識別のための確率的パターンを生成するために用いられるが、初期パターン又は固有のデジタル指紋を、本発明の1つ又は複数の実施形態によって確実に再現できるように強化するために、補強技術が利用される。
【0013】
次に、本発明の態様のより詳細な説明に移ると、
図1Aは、フォワード・パスにおける抵抗処理ユニット(RPU)のクロスバー・アレイの略図を示す。
図1Bは、バックワード・パスにおけるRPUのクロスバー・アレイの略図を示す。
図1Cは、重み更新におけるRPUのクロスバー・アレイの略図を示す。RPU102のクロスバー・アレイ100は、クロス・ポイント・アレイ又はクロスワイヤ・アレイとしても知られているが、様々な電子回路及びデバイスを形成するために用いられる高密度回路アーキテクチャである。クロスバー・アレイ100の構成は、1組の導電性行ワイヤと、1組の導電性行ワイヤと交差するように形成された1組の導電性列ワイヤとを含む。2組のワイヤの交点は、RPU102のようなクロス・ポイント・デバイスによって分離される。
【0014】
RPU102は、正又は負の電圧パルス刺激を受けると、抵抗(又は逆に導電性)を変化させるアナログ抵抗デバイスである。各々のRPU102は、行及び列の個々のワイヤの間に印加される電圧を制御することによって変えられる2端子アナログ抵抗デバイスである。
図1Aに示されるフォワード・パスの間、電圧又は電圧パルス(例えば、電圧V
i~電圧V
i+N、ここでiは第1の行であり、Nは最後の前の行に等しい)がそれぞれ行ワイヤ(例えば、それぞれ、行i~行i+N)に印加されて、電流測定値の出力(例えば、電流I
j~電流I
j+M)を列ワイヤ(例えば、列j~列j+M、ここでjは第1の列であり、Mは最後の前の列である)上に発生させる。入力電圧は、入力ベクトル(例えば、電圧V
i~電圧V
i+N)からのものとすることができる。電流測定値(例えば、電流I
j~電流I
j+M)は、
図1Aにおける結果ベクトル又は出力ベクトルである。クロスバー・アレイ100内のそれぞれのRPU102のコンダクタンス値(g)又は逆に抵抗値(R)は、行列を形成する。この行列は、当業者によって理解されるように、種々の動作のために利用することができる。各々の列の電流は、周辺回路によってデジタル値(即ち、低又は高、例えば、0又は1)に変換される。周辺回路は、アナログ信号をデジタル出力に変換するアナログ・デジタル変換器(ADC)、ADCに結合された演算増幅機(オペアンプ)、信号を列及び行方向に向けるために使用されるライン・ドライバなどを含むことができる。
【0015】
図1Bに示されるように、バックワード・パスでは、電圧と電流の位置が入れ替わる。バックワード・パスの間、電圧又は電圧パルス(例えば、電圧V
j~電圧V
j+M、ここでjは第1の列であり、Mは最後の前の列に等しい)がそれぞれ列ワイヤ(例えば、それぞれ、列j~列j+M)に印加されて、電流測定値の出力(例えば、電流I
i~電流I
i+N)を行ワイヤ(例えば、行i~行i+N)上に発生させる。
【0016】
図1Cに示される重み更新の間、電圧又は電圧パルス(例えば、電圧V
j~電圧V
j+N)がそれぞれ行ワイヤ(例えば、それぞれ、行i~行i+N)に印加されると同時に、電圧又は電圧パルス(例えば、電圧V
j~電圧V
j+M)が列ワイヤ(例えば、それぞれ、列j~列j+M)に印加され、それにより、RPU102上のコンダクタンス値又は抵抗値が更新/変更される。
【0017】
本発明の1つ又は複数の実施形態によれば、RPU102のクロスバー・アレイ100は、チップを識別するための固有のデジタル指紋を生成するように構成された物理的に複製困難な関数(PUF)として機能するように、構成される。その確率的な性質のために、PUFは、別のチップ上に正確に複製することができず、チップが真正であることを一意に識別するように機能することができる。本発明の1つ又は複数の実施形態によれば、PUFによって生成されたパターンは、チップの確実な認証を保証するために、再現可能とされる。PUFは、固有の識別のための確率的パターンを生成するために用いることができるが、本発明の実施形態は、パターンを確実に再現することができるように、初期パターンを強化するための補強技術を提供する。
【0018】
図2は、本発明の1つ又は複数の実施形態によるクロスバー・アレイ100を用いるシステム200の略図を示す。システム200は、チップ(
図6に示されるチップ600のような)上に形成されたRPU102のクロスバー・アレイ100を含む。1つのRPU102だけが強調されているが、RPU102は、行ワイヤと列ワイヤの各々のクロス・ポイントに存在することに留意されたい。本明細書で説明されるように、クロスバー・アレイ100は、各々が列j~列j+Mと交差する行i~行i+Nを含む。幾つかの場合においてNはMに等しく、他の場合にはNはMより大きいか又は小さい。周辺回路がクロスバー・アレイ100に結合される。周辺回路は、それぞれ個々の行i~行i+Nに結合されたアナログ・デジタル変換器(ADC)212と、それぞれ個々の列j~列j+Mに結合されたADC210とを含むことができるが、それらに限定されない。制御システム220は、フォワード・パス、バックワード・パス、及び重み更新の間、個々の行i~行i+N及び個々の列j~列j+Mに結合された電圧源214を制御するように、構成される。本発明の1つ又は複数の実施形態において、制御システム220は、
図6のチップ600上の集積回路として形成されたコントローラ又はマイクロコントローラとすることができる。クロスバー・アレイ100からのアナログ値をデジタル・コードに変換するための回路は、クロスバー・アレイ100の下に組み込むことができる。例えば、クロスバー・アレイ100は、アナログ値をデジタル値に変換する回路と同一面上にならないように、バックエンドオブライン(BEOL)配線構造内に組み込むことができ、それにより、遅延処理及びプロービングがより困難になる。
【0019】
具体的には、制御システム220は、適切な時期に、それぞれ行ワイヤ(例えば、それぞれ、行i~行i+N)に印加される電圧又は電圧パルス(例えば、電圧Vi~電圧Vi+N)、及び、それぞれ列ワイヤ(例えば、それぞれ、列j~列j+M)に印加される電圧又は電圧パルス(例えば、電圧Vj~電圧Vj+M)を制御する。制御システム220は、種々の技術を用いて実装することができる。本発明の1つ又は複数の実施形態において、制御システム220は、コンピュータ可読メモリ222に格納された若しくは結合された又はその両方であるコンピュータ実行可能命令を含むことができる。1つ又は複数のプロセッサ224が、本明細書で説明される機能を実行するためのコンピュータ実行可能命令を実行/読み出すように構成される。コンピュータ実行可能命令は、本発明の実施形態により、プロセッサ224によって行われる論理250を表す若しくは含む又はその両方であることができる。
【0020】
本発明の1つ又は複数の実施形態において、制御システム220は、論理回路を含むことができる論理250を実行するように構成された1つ又は複数のモジュール226を含むことができる。モジュール226は、コンピュータ可読ストレージ媒体上に格納された命令として、ハードウェア・モジュールとして、専用ハードウェア(例えば、特別仕様のハードウェア、埋め込みコントローラとしての特別仕様の集積回路(ASIC)、ハードウェア回路、など)、又は、これらの組み合わせ(単数又は複数)として実装することができる。例えば、モジュール226は、ハードウェアとプログラミングとの組み合わせとすることができる。プログラミングは、有形メモリ上に格納されたプロセッサ実行可能命令とすることができ、ハードウェアは、それらの命令を実行するための処理回路を含むことができる。従って、システム・メモリは、処理回路によって実行されるときに本明細書で説明されたモジュール226を実装するプログラム命令を、格納することができる。代替的に又は付加的に、モジュール226は、1つ又は複数の集積回路のような専用ハードウェア、特別仕様の集積回路(ASIC)、特別仕様の特別なプロセッサ(ASSP)、フィールド・プログラム可能ゲート・アレイ(FPGA)、或いは、本明細書で説明される技術を実行するための専用ハードウェアの前述の例の任意の組み合わせ、を含むことができる。
【0021】
図2を参照すると、導線216が電圧源214を個々に行ワイヤ(例えば、それぞれ行i~行i+N)に結合し、導線218が電圧源214を個々に列ワイヤ(例えば、それぞれ列j~列j+M)に結合する。導線260は、電圧源214を制御システム220に結合する。
【0022】
図3は、本発明の1つ又は複数の実施形態による、抵抗処理ユニット(RPU)のクロスバー・アレイをチップ(例えば
図6に示されるチップ600のような)内の物理的に複製困難な関数(PUF)として用いる、セキュアなチップ識別のための方法300のフローチャートを示す。本明細書で説明されるように、制御システム220の論理250は、メモリ222内のコンピュータ実行可能命令を実行するプロセッサ224によって行われる及び/又はモジュール226によって行われるものとすることができる。制御システム220は、本発明の1つ又は複数の実施形態を達成するために、論理250に従ってRPU102のクロスバー・アレイ100上で様々な処理を行わせ、及び/又は実行する。
【0023】
方法300を参照すると、ブロック302において、制御システム220は、RPU102のクロスバー・アレイ100について、ミッドレンジ条件とも呼ばれるミッドレンジ電圧条件を発見するように構成される。本発明の幾つかの実施形態において、ミッドレンジ条件(又は製造特性)は、論理250に設定され、メモリ222に格納され、及び/又は、制御システム220のモジュール226に格納/設定される。本発明の1つ又は複数の実施形態において、ミッドレンジ条件は、製造者から得るか、RPU102のクロスバー・アレイ100の仕様から検索して、本明細書で説明されるように利用することができる。
【0024】
ミッドレンジ条件又はミッドレンジ電圧条件は、クロスバー・アレイ100内のRPU102が0及び1(例えば、低値及び高値)の均等な分布を出力する確率が等しく及び/又はほぼ等しくなるようにさせる電圧又は電圧パルスを定め、ミッドレンジ条件又はミッドレンジ電圧条件は、RPU102の製造特性に基づく。RPU102の抵抗は、印加される電圧(例えば、電圧バイアス)の関数であるが、抵抗値は、確率的な揺らぎを有する。RPU102のクロスバー・アレイ100に逆の極性(例えば、正及び負)を有する交流電圧パルスをミッドレンジ条件で印加するとき、「0」と「1」の閾値はバランス・ポイントにあり(即ち、抵抗が釣り合う)、各々のRPU102がADC210を介して各々の列に「0」又は「1」を出力する確率は、0.5である。ランダムに生成される「0」及び「1」の分布の読み出しには、読み出し処理が元の分布を乱さないように、ミッドレンジ電圧条件よりかなり低い別の検知電圧が用いられる。ミッドレンジ電圧条件によって生成された元の分布は、通常、ノイズが多いので、検知マージンを高めるために、重み更新シーケンスを利用することによって「0」及び「1」が極端な値を持つように補強される。
【0025】
ミッドレンジ条件は、例えば抵抗ランダム・アクセス・メモリ(ReRAM又はRRAM)のようなアナログRPUにおける0と1(例えば、低値及び高値)の切り替えの対称点に基づくものである。従って、0か1のいずれかになる確率は、50/50である。本発明の1つ又は複数の実施形態によれば、アナログRRAMを用いて、切り替えの対称点周辺のランダム分布を取得し、次いで、ランダム分布は、本明細書でさらに説明されるように、2値状態に補強される。
【0026】
ブロック304において、RPU102のクロスバー・アレイ100についてミッドレンジ条件が発見/検索されると、制御システム220は、ミッドレンジ電圧条件で列ワイヤj~j+Mの初期読み出しを行うように構成される。電圧源214によって、電圧又は電圧パルス(例えば、電圧Vi~電圧Vi+N)を行ワイヤ(例えば、それぞれ行i~行i+N)に印加することにより、制御システム220は、RPU102の抵抗が「0」及び「1」をほぼ等しい確率(即ち、50/50の確率)で列ワイヤj~j+Mに出力するように、ミッドレンジ電圧条件でクロスバー・アレイに電圧バイアスをかけるように構成される。初期読み出しは、制御システム220に、例えばメモリ222に、格納することができる。
【0027】
ブロック306において、制御システム220は、ミッドレンジ電圧条件についてADC210から読み出し結果を受け取る。ミッドレンジ電圧条件を用いることにより、これは、初期読み出しの出力についてランダムな生成又確率的な生成をもたらす。初期読み出しの出力は、列ワイヤj~j+Mにおける位置に対応するビットのシーケンスである。例えば、各々のADC210は、初期読み出し結果を生成するために、1ビットのアナログ・デジタル変換を行うことができる。初期読み出し結果は、ビットのランダム・ストリームである。上述のように、ミッドレンジ電圧条件を用いるこの初期読み出しは、確率的又はランダムであり、そのため、同じミッドレンジ電圧条件下で繰り返しても異なる値を生じ、それにより初期読み出し結果を固有のものにする。説明の目的で、初期読み出し結果は、ビットのランダム・ストリーム01...10とすることができる。
【0028】
ブロック308において、ミッドレンジ電圧条件が適用され、0及び1のランダム・ストリームの初期読み出し結果が生成されると、制御システム220は、クロスバー・アレイ100についての初期読み出し結果のランダム・ストリームを強化又は補強して、後の認証の際の再現性を確実にするように構成される。本発明の1つ又は複数の実施形態において、制御システム220は、RPU102のクロスバー・アレイ100に対する重み更新を行うことができる。初期読み出し結果におけるビットのランダム・ストリームの補強又は強化の間、制御システム220は、RPU102の抵抗を、フォワード・パス(即ち、読み出し)が行われるたびに初期読み出し結果におけるビットのランダム・ストリームに一致する値の出力を確実にする/保証する抵抗値に変更するように、構成される。本明細書で説明されるように、列j~列j+Mの各々は、ビットのランダム・ストリームを形成する値又はビットを出力する。制御システム220は、各々の列j~列j+Mに結合されるRPU102を決定し、列ごとの各々のRPU102について、出力におけるビットの一致を確実にするために利用される抵抗を決定し、それにより、クロスバー・アレイ100内のRPU102の抵抗が、いつも同じ読み出し結果を生成するように機能するように、構成される。これによって、初期読み出しの後の読み出しについてランダムさ又は偶然性が排除される。例えば、補強又は強化の際に、電圧又は電圧パルス(例えば、電圧Vi~電圧Vi+N)がそれぞれ行ワイヤ(例えば、それぞれ、行i~行i+N)に印加され、同時に、電圧又は電圧パルス(例えば、電圧Vj~電圧Vj+M)が列ワイヤ(例えば、それぞれ、列j~列j+M)に印加され、その結果、行及び列の両方に対するこれらの電圧パルスが、RPU102の抵抗がいつも同じ初期読み出し結果を出力として生成するようにする。この重み更新は、確実な補強状態が得られるまで抵抗値を上下にシフトさせて初期読み出し結果からの各々の「0」及び「1」を補強するために、電圧源214からの電圧パルスを印加する。重み更新が正しいことを確実にするために、制御システム220は、初期読み出し結果を、ビットのランダム・ストリームの補強又は強化の後と比較することができる。1つ又は複数のビットに誤りが存在する場合には、重み更新の1つ又は複数の部分を繰り返して、誤りを修正することができる。
【0029】
抵抗ランダム・アクセス・メモリ(ReRAM又はRRAM)又は相変化メモリ(PCM)の場合において、これらの状態は、それぞれ低及び高コンダクタンスの完全にセット及びリセットされた状態に対応することになる。抵抗ランダム・アクセス・メモリは、誘電体固体材料の抵抗を変えることによって機能する不揮発性ランダム・アクセス(RAM)コンピュータ・メモリの一種であり、しばしばメムリスタと呼ばれる。相変化メモリは、不揮発性ランダム・アクセス・メモリの一種である。
【0030】
本発明の1つ又は複数の実施形態によれば、使用されるビットのランダムな選択を制御システム220が行うことによって、さらなるセキュリティ対策又は難読化を実施することができ、ビットのランダムな選択は、製造者には未知である。例えば、セキュリティPUFとして、大きな512×512=262kアレイから1000ビットを選択することができる。従って、初期読み出し結果は、1000ビットを含む。読み出された正確な順序で1000ビット全体を使用する代わりに、制御システム220は、選択されるビット数及び選択されるビット位置の両方に対するバリエーションを有することができる。制御システム220は、ビットの全ランダム数のうちの所定の数(例えば、100、202、250、500、800、900、1000ビット)を選択するように、及び/又は、種々のビット位置を選択するように構成され、これらの種々のビット位置において選択されたビットが、本明細書で説明されるように利用される。
【0031】
ブロック310において、制御システム220は、ブロック308から生成された補強/強化されたランダム・パターン(例えば、ビットのランダム・シーケンスの読み出し結果)を、コンピュータ・システム/サーバのようなイニシエータ又はメモリ・デバイスに記録/格納するよう構成される。補強/強化されたランダム・パターン(即ち、ビットのランダム・シーケンスの読み出し結果)を記録/格納するコンピュータ・システム/サーバの一例が、
図8に示される例示的なコンピュータ・システム/サーバ812として示される。使用するためのチップをデプロイする前に、制御システム220は、コンピュータ・システム/サーバが格納された補強/強化されたランダム・パターンと最近読み出されたパターンとを比較することができるように、フォワード・パス若しくはチップの読み出し又はその両方を行うことを命令されることが可能であり、これによって、方法300が正しく行われたことが確実になる。1つ又は複数のビットが正しく設定されない場合、方法300を繰り返すことができる。さらに、チップのデプロイの前に、制御システム220から初期読み出しの除去若しくは削除又はその両方が行われる。
【0032】
さらに、
図6に示されるコンピュータ・システム/サーバ612(
図8に示される例示的なコンピュータ・システム/サーバ812の機能若しくは要素又はその両方を含むことができる)は、チップ600を含むか若しくはそれに結合されるか又はその両方とすることができる。コンピュータ・システム/サーバ612は、補強/強化されたランダム・パターン(即ち、ビットのランダム・シーケンスの読み出し結果)を、ブロック310においてパターンを以前に格納した別のコンピュータ・システム/サーバ(例えば、
図8に示される例示的なコンピュータ・システム/サーバ812のような)から受け取るか若しくはそこから送られるか又はその両方である。次に、チップ600が、例えば、コンピュータ・システム/サーバ612内に使用のためにデプロイされるとき、制御システム220は(コンピュータ・システム/サーバ612によって命令されるように)、チップ600上のRPU102のクロスバー・アレイ100がフォワード・パス(例えば、既存のRPU回路の)を用いてランダム・パターンを読み出すことによって検証され得るように、チップ600の真正性を検証するために利用することができる。コンピュータ・システム/サーバ612は、この新しい出力パターンを、格納されているランダム・パターン(ビットのランダム・シーケンスの以前の読み出し結果)と比較して、一致を判断する。一致は、チップ600が本物であることを確認し、不一致は、チップが本物でないことを示す。
【0033】
補強プロセス後に、クロスバー・アレイ100内のRPU102の抵抗(又はコンダクタンス)を変更するためのさらなる重み更新が可能でないことを確実なものとするために、種々の技術を利用することができる。本発明の1つ又は複数の実施形態において、制御システム220は重み更新のために使用される論理250の一部を無効にするように構成される。例えば、論理250の重み更新部分を上書きすることができる。
【0034】
重み更新は、フォワード・パス又はさらにバックワード・パスよりも高い電圧を必要とする。本発明の1つ又は複数の実施形態において、
図4に示されるように、電圧源214内で重み更新のために使用される高電圧回路402は無効にすることができ、一方で、フォワード・パス(即ち、出力の読み出し)のために使用される低電圧回路404はそのままにする。一例として、重み更新がそれ以上起こらないように、高電圧回路402内の電子ヒューズ(eヒューズ)を飛ばすことができる
【0035】
図5は、本発明の1つ又は複数の実施形態による、クロスバー・アレイ100を使用するシステム200の略図を示す。
図5において、eヒューズ502は、電圧源214をそれぞれの列ワイヤj~j+Mに接続する導線218の各々を遮断する。制御システム220は、列ワイヤj~j+Mに接続された導線218上のeヒューズ502を飛ばすか又は無効にすることによって重み更新を無効にするように、構成される。
【0036】
図6は、本発明の1つ又は複数の実施形態によるチップ600のブロック図を示す。チップ600は、セキュアなチップ識別のためのシステム200と、当業者によって理解されるように機能する他の集積回路602とを含む。本明細書で説明されるように、システム200は、RPU102のクロスバー・アレイ100を用いてチップ600を一意に識別する。具体的には、システム200は、補強/強化されたランダム・パターン(即ち、ビットのランダム・シーケンスの読み出し結果)を読み出して検証できることを確実なものとし、それにより、本明細書で説明されるように、チップ600の真正性を保証する。例えば、チップ600は、補強/強化されたランダム・パターン(即ち、ビットのランダム・シーケンスの読み出し結果)を以前に格納したコンピュータ・システム/サーバ612にデプロイされる及び/又はこれと組み合わせて使用されることが可能である。コンピュータ・システム/サーバ612は、以前に格納された補強/強化されたランダム・パターンに対して比較するために、フォワード・パスを用いてランダム・パターンを読み出すように制御システム220に命令すること及び/又は読み出させることができる。一致は、オペレータに、デプロイされたチップ600が真正であることを保証する。
【0037】
RPU102のクロスバー・アレイ100は、チップ600の種々の機能のために利用することができる。抵抗処理ユニットは、人工知能(AI)作業負荷において用いられる行列演算を加速する可能性を有するアナログ要素である。RPUのクロスバー・アレイは、チップ600上にAI加速器として実装することができる。
【0038】
図7は、本発明の1つ又は複数の実施形態による、チップ識別の方法700のフローチャートである。ブロック702において、制御システム220を介した方法700は、抵抗処理ユニット(RPU)102のクロスバー・アレイ100に、RPU102の抵抗が低値(例えば0)及び高値(例えば1)のランダム出力をほぼ等しい割合で生じるようにさせるミッドレンジ条件下で、バイアスをかけることを含む。電圧システム214を制御することによって、制御システム220は、電圧又は電圧パルス(例えば、電圧V
i~電圧V
i+N)をRPU102のクロスバー・アレイ100の行ワイヤ(例えば、それぞれ行i~行i+N)に印加するように構成される。ブロック704において、制御システム220を介した方法700は、RPU102の抵抗を、ミッドレンジ条件から生じた低値及び高値を強制する状態に設定することによって、ランダム出力の低値及び高値を補強することを含む。電圧システム214を制御することによって、制御システム220は、電圧又は電圧パルス(例えば、電圧V
i~電圧V
i+N)を行ワイヤ(例えば、それぞれ行i~行i+N)に印加し、同時に電圧又は電圧パルス(例えば、電圧V
j~電圧V
j+M)を列ワイヤ(例えば、それぞれ列j~列j+M)に印加するように、構成される。さらに、低値及び高値を補強することによって、その後にRPU102のクロスバー・アレイ100がミッドレンジ条件下でバイアスをかけられていないときでも、ランダム出力が永続する。換言すれば、ランダム出力の低値及び高値を補強することによって、クロスバー・アレイ100がフォワード・パスにある場合などのようにクロスバー・アレイ100がミッドレンジ条件にない(又は、なくなった)ときにでも、正確に同じランダム出力(即ち、ミッドレンジ条件下での出力と等しい割合で低値(例えば0)及び高値(例えば1)の正確に同じシーケンス)である結果を繰り返し(かつ永続的に)出力するようにする。ブロック706において、制御システム220を介した方法700は、ランダム出力の低値及び高値を補強することに応答して、ランダム出力の低値及び高値のシーケンスの記録(オフ・チップ)を行わせる。ランダム出力の低値及び高値のシーケンスは、本明細書で説明されるように、コンピュータ・システム/サーバ内に記録することができる。
【0039】
RPU102は、ミッドレンジ条件下で所定の電圧(例えば、それぞれ、行i~行i+Nに印加される)が確率的応答を生成する関係を有する。RPUは、ミッドレンジ条件下での所定の電圧が、ほぼ等しい割合で低値及び高値の確率的応答を生成する関係を有する。RPUの抵抗を、ミッドレンジ条件から生じた低値及び高値を強制する状態に設定することによって、ランダム出力の低値及び高値を補強することは、ミッドレンジ条件下でRPUの抵抗を駆動する電圧パルスを用いることを含む。RPUの抵抗を、ミッドレンジ条件から生じた低値及び高値を強制する状態に設定することによって、ランダム出力の低値及び高値を補強することは、ほぼ等しい割合で低値及び高値を確実にするために、電圧パルスを用いて抵抗値を上下にシフトさせることを含む。
【0040】
RPU102のクロスバー・アレイ100は、ランダム出力に一致する検証シーケンスを読み出すことによって認証されるように構成され、その検証シーケンスは、ミッドレンジ条件とは異なる条件下で読み出されたものである。さらに、方法700は、ランダム出力の低値及び高値のシーケンスを記録することに応答して、RPU102の抵抗がその後にプログラムされるのを防ぐことを含む。
【0041】
図8は、本発明の1つ又は複数の実施形態によって利用される機能及び特徴を有する例示的なコンピュータ・システム812の略図を示す。コンピュータ・システム812は、多くの他の汎用又は専用コンピューティング・システム環境又は構成と共に動作することができる。コンピュータ・システム812は、本明細書で説明されるように動作及び機能を実行することができる、種々のタイプのコンピュータ・システム又はサーバの典型とすることができる。実施形態による、コンピュータ・システム812の機能及び能力は、
図1~
図7において、補強/強化されたランダム・パターン(即ち、ビットのランダム・シーケンスの読み出し結果)を格納するために用いられるコンピュータ・システム/サーバの1つ又は複数の特徴を、チップがデプロイされたコンピュータ・システム/サーバ612、制御システム220などに実装するために利用することができる。
【0042】
コンピュータ・システム812は、コンピュータ・システムによって実行されるプログラム・モジュールのような、コンピュータ・システム実行可能命令の一般的文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを行う、又は特定の抽象データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造体などを含むことができる。コンピュータ・システム812は、通信ネットワークを通してリンクされる遠隔処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境内で実行することができる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル及び遠隔の両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【0043】
コンピュータ・システム812のコンポーネントは、それらに限定さないが、1つ又は複数のプロセッサ若しくは処理ユニット816、システム・メモリ828、及び、システム・メモリ828を含む種々のシステム・コンポーネントをプロセッサ816に結合するバス818を含むことができる。バス818は、メモリ・バス又はメモリ・コントローラ、周辺バス、加速グラフィック・ポート、及び、様々なバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの1つ又は複数を表す。例として、限定的ではなく、そのようなアークテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、映像関連機器標準化団体(VESA)ローカル・バス、及び周辺コンポーネント相互接続(PCI)バスを含む。
【0044】
コンピュータ・システム812は、通常、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム812によってアクセス可能な任意の入手可能な媒体とすることができ、揮発性及び不揮発性媒体の両方、取り外し可能及び固定媒体の両方を含む。システム・メモリ828は、揮発性メモリの形態のコンピュータ・システム可読媒体、例えば、ランダム・アクセス・メモリ(RAM)830若しくはキャッシュ・メモリ832又はその両方を含むことができる。コンピュータ・システム812はさらに、他の取り外し可能/固定、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むことができる。単なる例として、ストレージ・システム834は、固定式不揮発性磁気媒体(図示されず、通常「ハード・ドライブ」と呼ばれる)から読み出し、及びそれに書き込むために準備することができる。図示されないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)から読み出し及びそれに書き込むための磁気ディスク・ドライブ、並びに、取り外し可能な不揮発性光ディスク、例えば、CD-ROM、DVD-ROM又は他の光学媒体、から読み出し及びそれに書き込むための光ディスク・ドライブを準備することができる。そのような場合、各々は、1つ又は複数のデータ媒体インターフェースによってバス818に接続することができる。メモリ828は、実施形態の機能を実行するように構成された1組の(例えば、少なくとも1つの)プログラム・モジュールを有する、少なくとも1つのプログラム製品を含むことができる。
【0045】
1組の(少なくとも1つの)プログラム・モジュール842を有するプログラム/ユーティリティ840は、オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データと共に、例として、限定的ではなく、メモリ828内に格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データの各々又はそれらのある組み合わせは、ネットワーク環境の実装を含むことができる。プログラム・モジュール842は、一般的に、本明細書で説明される実施形態の機能若しくは方法又はその両方を実行する。
【0046】
コンピュータ・システム812は、また、キーボード、ポインティング・デバイス、ディスプレイ824などのような1つ又は複数の外部デバイス814、ユーザがコンピュータ・システム812と相互作用することを可能にする1つ又は複数のデバイス、若しくは、コンピュータ・システム812が1つ又は複数の他のコンピューティング・デバイスと通信するのを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、又はそれら全部と通信することができる。そのような通信は、入力/出力(I/O)インターフェース822を介して行うことができる。さらに、コンピュータ・システム812は、1つ又は複数のネットワーク、例えば、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、もしくはパブリック・ネットワーク(例えば、インターネット)又はそれら全部と、ネットワーク・アダプタ820を介して通信することができる。図示されるように、ネットワーク・アダプタ820は、コンピュータ・システム812の他のコンポーネントと、バス818を介して通信する。図示されないが、他のハードウェア若しくはソフトウェア・コンポーネント又はそれらの両方を、コンピュータ・システム812と共に使用することができることを理解されたい。例として、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイバル・ストレージ・システムなどが挙げられるが、それらに限定されない。
【0047】
本発明の種々の実施形態が、本明細書において、関連する図面を参照しながら説明される。本発明の代替的な実施形態を、本発明の範囲から逸脱せずに考案することができる。種々の接続及び位置関係(例えば、上に、下に、隣接する、など)は、以下の説明及び図面中の要素の間で示される。これらの接続もしくは位置関係又は両方は、別に指定されない限り、直接的であっても間接的であっても良く、本発明は、この点で限定されることは意図されていない。従って、実体の結合は、直接又は間接結合のいずれをも指すことができ、実体の間の位置関係は、直接的位置関係であっても間接的位置関係であっても良い。さらに、本明細書で説明される種々のタスク及びプロセス・ステップは、本明細書で詳細には説明されない付加的なステップ又は機能性を有するより包括的な手続き又はプロセスに組み込むことができる。
【0048】
本明細書で説明される1つ又は複数の方法は、各々、当技術分野で周知の以下の技術、即ち、データ信号に対して論理機能を実施するための論理ゲートを有する別々の論理回路(単数又は複数)、適切な組み合わせの論理ゲートを有する特定用途向け集積回路(ASIC)、プログラム可能ゲート・アレイ(PGA)、フィールド・プログラム可能ゲート・アレイ(FPGA)などの、いずれか又は組み合わせによって実施することができる。
【0049】
簡潔にするために、本発明の態様を作成すること及び使用することに関連する従来の技術は、本明細書において詳細に説明されている場合も説明されていない場合もある。具体的には、本明細書で説明される種々の技術的特徴を実装するためのコンピューティング・システム及び特定のコンピュータ・プログラムの種々の態様は、周知のものである。従って、簡潔にするために、多くの従来の実装の細部は、周知のシステム若しくはプロセス又はその両方の詳細を与えることなく、簡単に言及されるだけであるか、或いは、完全に省略されている。
【0050】
幾つかの実施形態において、種々の機能又は行為を、1つ又は複数の装置又はシステムの所与に位置において若しくは動作と関連して又はその両方で、行うことができる。幾つかの実施形態において、所与の機能又は行為の一部分は第1のデバイス又は位置において行うことができ、その機能又は行為の残りは1つ又は複数の付加的なデバイス又は位置で行うことができる。
【0051】
本明細書で用いられる用語は、特定の実施形態のみを説明するためのものであり、限定的であることは意図されていない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が明確に別に指示しない限り、複数形をも含むことが意図されている。さらに、用語「備える」若しくは「備えている」又はその両方は、本明細書で用いられるとき、記述された特徴、整数、ステップ、動作、要素若しくはコンポーネント又はそ両方の存在を明示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素コンポーネント、若しくはそれらの群又はその両方の存在又は追加を排除しないことを理解されたい。
【0052】
以下の特許請求の範囲における、構造体、材料、行為、並びに、全ての手段又はステップ・プラス機能の要素の等価物は、具体的に特許請求される他の請求要素と共に機能を実行するための、任意の構造体、材料、又は行為を含むことが意図されている。この詳細な説明は、例証及び説明のために与えられたものであるが、網羅的であること又は説明された形態に限定されることは意図されていない。当業者には、詳細な説明の範囲及び趣旨から逸脱しない多くの修正物及び変化物が明白となるであろう。本発明の実施形態は、本発明の実施形態の原理及び実際的応用を最も良く説明するため、並びに、当業者が、本発明の種々の修正物を有する種々の実施形態を、考えられる特定の用途に適するように理解することを可能にするために、選ばれて説明された。
【0053】
本明細書において示される図は例示的なものである。本明細書において説明される図又はステップ(又は動作)に対して、本発明の実施形態の趣旨から逸脱しない多くの変化形があり得る。例えば、行為は異なる順序で行うことができ、或いは、行為を加える、削除する又は修正することができる。また、用語「結合される」は、2つの要素の間の信号経路を有することを記述し、要素の間の、それらの間に介在する要素/接続が存在しない、直接接続を意味しない。これらの変化形の全ては、本発明の実施形態の一部であると見做される。
【0054】
さらに、用語「例示的な」は、本明細書においては「一例、実例又は例示として役立つこと」を意味するために使用されている。本明細書で「例示的な」として説明されるいずれの実施形態又はデザインも、必ずしも、他の実施形態又はデザインよりも好ましい又は有利であると解釈されるべきではない。用語「少なくとも1つの」及び「1つ又は複数の」は、1より大きいか又はそれに等しいいずれかの整数、即ち、1、2、3、4などを含むと理解される。用語「複数の」は、2より大きいか又はそれに等しいいずれかの整数、即ち、2、3、4、5などを含むと理解される。用語「接続」は、間接「接続」及び直接「接続」を含むことができる。
【0055】
用語「ほぼ」、「実質的に」、「近似的に」及びそれらの変化物は、アプリケーションのファイリングの時点で利用可能な設備に基づいた、特定の量の計測に付随する誤差の程度を含むことが意図されている。例えば、「ほぼ」は、所与の値の±8%又は5%、或いは2%の範囲を含むことができる。
【0056】
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はそれらの組み合わせを、いずれかの可能な技術的詳細レベルで統合したものとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0057】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0058】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、又はそれらの組み合わせなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、又はそれらの組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【0059】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【0060】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0061】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0062】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
【0063】
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又は両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0064】
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。