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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許-プロセス・フローの電子的検証 図1
  • 特許-プロセス・フローの電子的検証 図2
  • 特許-プロセス・フローの電子的検証 図3
  • 特許-プロセス・フローの電子的検証 図4
  • 特許-プロセス・フローの電子的検証 図5
  • 特許-プロセス・フローの電子的検証 図6
  • 特許-プロセス・フローの電子的検証 図7
  • 特許-プロセス・フローの電子的検証 図8
  • 特許-プロセス・フローの電子的検証 図9
  • 特許-プロセス・フローの電子的検証 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-25
(45)【発行日】2024-08-02
(54)【発明の名称】プロセス・フローの電子的検証
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240726BHJP
   G06F 30/27 20200101ALI20240726BHJP
   G06F 30/32 20200101ALI20240726BHJP
   G06F 30/39 20200101ALI20240726BHJP
【FI】
H04L9/32 200Z
G06F30/27
G06F30/32
G06F30/39
【請求項の数】 17
(21)【出願番号】P 2022568970
(86)(22)【出願日】2021-03-23
(65)【公表番号】
(43)【公表日】2023-06-30
(86)【国際出願番号】 EP2021057379
(87)【国際公開番号】W WO2021239291
(87)【国際公開日】2021-12-02
【審査請求日】2023-08-10
(31)【優先権主張番号】16/884,623
(32)【優先日】2020-05-27
(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)【発明者】
【氏名】ガナパヴァラプ、ヴェンカタ シタラマギリドハーガネシュ
(72)【発明者】
【氏名】チョン、ジンウク
(72)【発明者】
【氏名】ナム、ギ-ジョン
(72)【発明者】
【氏名】バクリン、ローマン
(72)【発明者】
【氏名】レイフィールド、ジェームス、トーマス
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2020-057881(JP,A)
【文献】欧州特許出願公開第03584654(EP,A1)
【文献】特開2007-011817(JP,A)
【文献】特許第6656446(JP,B1)
【文献】特開2020-021134(JP,A)
【文献】特表2019-534525(JP,A)
【文献】特開2017-220710(JP,A)
【文献】特開平10-122917(JP,A)
【文献】特開2017-091149(JP,A)
【文献】米国特許出願公開第2020/0053128(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 30/27
G06F 30/32
G06F 30/39
(57)【特許請求の範囲】
【請求項1】
プロセッサによって、プロセス・フロー内の1つまたは複数のステップへの1つまたは複数の入力の各々のハッシュおよびデジタル署名のうちの少なくとも1つを検証することによって、前記1つまたは複数の入力の妥当性を確認することと、
前記プロセッサによって、前記プロセス・フロー内の前記1つまたは複数のステップのステップごとにデジタル署名を生成することとを含むコンピュータ実装方法であって、前記検証されるデジタル署名が、前記各ステップの出力および前記各ステップへの前記1つまたは複数の入力を対象にし、前記生成されるデジタル署名が、前記プロセス・フローを検証するために使用されるデジタル署名のチェーンに組み込まれる、コンピュータ実装方法。
【請求項2】
前記プロセッサによって、
前記デジタル署名のチェーンを利用して、前記プロセス・フローにおいて使用されるバイナリ・オブジェクトのセットを検証することと、
物理的製品を作成する製造コントローラにおいて前記バイナリ・オブジェクトのセットを使用することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記プロセス・フローが、半導体内の少なくとも1つの知的財産(IP)ブロックの製造フローであり、前記方法が、
前記プロセッサによって、前記製造フローをコンピュータ制御された製造コントローラに読み込むことと、
コンピュータ制御された製造コントローラを介して、前記製造フローを使用して前記半導体を製造するようウエハー製造デバイスに指示することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記1つまたは複数の入力の各々の前記ハッシュおよび前記デジタル署名が、前記1つまたは複数の入力の各々のソース、前記1つまたは複数の入力の各々の説明、および前記1つまたは複数の入力の各々を作成するために使用されるツールの一意の識別情報を表す、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記ツールが、半導体内のIPブロックの設計において使用される合成ツール、配置および配線ツール、ならびに光近接効果補正ツールから成る群からのツールである、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記デジタル署名のチェーンが、前記各ステップの前記1つまたは複数の入力および前記出力の変更不可能な記録を提供するために、ブロックチェーンに追加される、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記プロセス・フロー内の前の第1のステップからの前に生成された出力が、その後の第2のステップへの入力として使用され、ブロックチェーンからのデジタル署名のチェーンが、前記前に生成された出力を検証するために使用される、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記プロセッサによって、
複数のブロックチェーン・トランザクションを生成することであって、前記複数のブロックチェーン・トランザクションの各ブロックチェーン・トランザクションが前記プロセス・フロー内の特定のステップ用であり、前記各ブロックチェーン・トランザクションが、前記プロセス・フロー内の各前記特定のステップへの前記1つまたは複数の入力のうちの少なくとも1つに対する変更を記述し、各ブロックチェーン・トランザクションが、前記プロセス・フロー内の各前記特定のステップの前記出力に対する変更をさらに記述する、前記生成することと、
前記複数のブロックチェーン・トランザクションを非線形のブロックチェーンに格納することであって、前記非線形のブロックチェーンが、前記非線形のブロックチェーン内の前記特定のステップに関して、発生元のブロックチェーン台帳への複数の異なる経路を含む、前記格納することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記プロセッサによって、
前記入力から前記出力への変換の正しさの妥当性を確認することによって、前記プロセス・フロー内の前記ステップの前記入力から出力への変換を確認することと、
前記変換を確認することに応答して、検証者によって、前記入力および前記出力のデジタル署名を使用して前記変換に署名することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記プロセス・フローが、半導体内の少なくとも1つの知的財産(IP)ブロックの設計フローであり、前記デジタル署名のチェーンが、前記IPブロックのテスト・データおよびテスト結果のハッシュおよびデジタル署名のうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記デジタル署名のチェーンがブロックチェーンに格納され、前記ブロックチェーンが前記IPブロックのカタログを維持する、請求項10に記載のコンピュータ実装方法。
【請求項12】
前記デジタル署名のチェーンがブロックチェーンに格納され、前記方法が、
前記プロセッサによって、
前記プロセス・フロー内の各ステップを監査することと、
前記プロセス・フロー内の各ステップをトレースすることと、
前記プロセス・フロー内の各ステップの妥当性を確認することと、
前記デジタル署名のチェーンを検証することと、
前記デジタル署名のチェーンを検証することに応答して、前記デジタル署名のチェーンを前記ブロックチェーンに格納することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記プロセッサによって、
前記ブロックチェーンをプロセス・フローのライブラリに格納することと、
プロセス・フローの前記ライブラリを安全な実行環境に格納することとをさらに含み、前記安全な実行環境がシステム上の他のソフトウェアからプロセス・フローの前記ライブラリを保護する、請求項12に記載のコンピュータ実装方法。
【請求項14】
前記1つまたは複数の入力の妥当性確認および前記デジタル署名の前記生成が、前記1つまたは複数の入力の前記妥当性確認および前記デジタル署名の前記生成の機密性および完全性をシステム上の他のソフトウェアから保護する安全な実行環境内で実行される、請求項1に記載のコンピュータ実装方法。
【請求項15】
プロセッサに、請求項1ないし14のいずれか一項に記載の方法を実行させるためのコンピュータ・プログラム。
【請求項16】
プログラム・コードがクラウド環境内のサービスとして提供される、請求項15に記載のコンピュータ・プログラム。
【請求項17】
プロセッサと、コンピュータ可読メモリと、ストレージ媒体とを備えているコンピュータ・システムであって、プログラム命令が前記ストレージ媒体に格納され、前記格納されたプログラム命令が前記プロセッサによって実行されることによって、請求項1ないし14のいずれか一項に記載の方法を実行するコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、プロセス・フローの分野に関連している。より詳細には、本発明の1つまたは複数の実施形態は、プロセス・フロー内のステップへの入力またはステップからの出力あるいはその両方の信頼性、完全性、および来歴を検証することに関連している。さらにより詳細には、本発明の1つまたは複数の実施形態は、(1)複数のステップから成るプロセス・フローにおける安全な追跡を提供すること、または(2)デジタル署名およびブロックチェーンを統合し、それによって、プロセス・フローを保護して検証すること、あるいはその両方に関連している。
【背景技術】
【0002】
プロセス・フローは、特定のタスクを実行するために選択された複数のステップを記述する。プロセス・フロー内の後続の各ステップは、前のステップからの出力を、その後続のステップへの入力として使用する。そのため、プロセス・フローは、サービス、製造、製品などを提供するためのプロセスを記述することができる。製品を製造するためのプロセス・フローの一例は、集積回路(IC:integrated circuit)を製造するためのプロセス・フローである。ICは複数のコンポーネントで構成されており、これらのコンポーネントは、ノード、知的財産(IP:intellectual property)ブロック、またはIPコアと呼ばれる。そのため、ICチップを生成するためのプロセス・フローは、回路がどのようにレイアウトされるか、回路および絶縁をICチップ内に作成するときにどのマスキングが使用されるか、ICチップ内のどの層が特定の回路、層間の接続などを含むかを記述する。ICチップの実際の構築は、プロセス・フローの一部になることもでき、最終的なICチップの複数のコピーがウエハー上に組み込まれるまで、ウエハー上でさまざまな材料のマスクされた層を適用することによって発生する。
【0003】
ICのレイアウトを生成するために使用される電子設計自動化(EDA:Electronic design automation)ツールは、複雑なツールである。EDAツールは、米国電気電子学会(IEEE:Instituteof Electrical and Electronics Engineers)のIEEE standard1800-2017; 超高速集積回路設計用ハードウェア記述言語(VHDL:Very high speed integrated circuit Hardware Description Language)などに記載されている言語などの言語を使用して、レジスタ転送言語(RTL:register-transfer language)設計レベルでIPブロックを変換する。次に、そのような言語を使用する記述は、最終的なグラフ・データベース・システム(例えば、GDSIIとして知られているGraphic Database System-II)形式レイアウトに変換され、このレイアウトが、特定のICを記述するか、または製造するか、あるいはその両方を行うために使用される。
【0004】
設計プロセスでは、EDAツールは、多くのステップを実行し、複数のプロセスを実行して実行ファイル作成し、これらの実行ファイルがIC設計のネットリスト(すなわち、IC内の電子コンポーネントのリスト)を生成し、IC設計内のコンポーネントの配置および配線を実行し、ICの設計を検証する。EDAツールは、設計仕様および最終的なICレイアウトを完成させるために、サード・パーティのライブラリからのIPブロックも読み込んで使用する。
【0005】
しかし、EDAツールは、内容および発祥に関して入力の完全性をチェックしない。ライブラリから再利用されるIPブロックは、完全性を認証するためのデジタル署名または来歴を決定することに関する情報あるいはその両方を欠いている可能性がある。従来技術では、設計プロセス内の各ステップで、偶発的であれ意図的であれ、許可されていない変更に関して入力がチェックされない。さらに、従来技術では、各ステップでの変換からの出力が署名されず、または、変更から保護されない。そのため、プロセス・フロー内のステップからの出力の信頼性、完全性、および来歴が確立されない。
【発明の概要】
【0006】
本発明の1つまたは複数の実施形態では、方法が、プロセス・フロー内のステップからの出力の信頼性、完全性、および来歴を検証する。1つまたは複数のプロセッサは、プロセス・フロー内の各ステップへの1つまたは複数の入力の各々のハッシュおよびデジタル署名のうちの少なくとも1つを検証することによって、1つまたは複数の入力の妥当性を確認する。次に、プロセッサは、デジタル署名が、プロセス・フローを検証するために使用されるデジタル署名のチェーンをもたらすように、各ステップの出力および各ステップへの1つまたは複数の入力を対象にするデジタル署名を生成する。
【0007】
本発明の1つまたは複数の実施形態では、プロセッサは、バイナリ・オブジェクトのセットのデジタル署名のチェーンの妥当性を確認し、その後、このバイナリ・オブジェクトのセットを、物理的製品を作成する製造コントローラにおいて使用する。
【0008】
本発明の1つまたは複数の実施形態では、プロセッサは、デジタル署名のチェーンをブロックチェーンに格納し、その後、プロセス・フロー内の前述の各ステップの出力をテストする。このテストは、プロセス・フローからの各ステップが、ステップごとに事前に定義された機能を実行するかどうかを判定する。テストが、プロセス・フローからの特定のステップが事前に定義された機能を実行できなかったということを決定することに応答して、プロセッサは、特定の失敗したステップが事前に定義された機能を実行するまで、その特定の失敗したステップに対して調整を実施する。その後、プロセッサは、特定の失敗したステップに対する調整をブロックチェーンに格納する。
【0009】
本発明の1つまたは複数の実施形態では、デジタル署名の検証中にテストが発生する。失敗したテストは、何らかの意図的または偶然の変更の検出を示す。本発明の1つまたは複数の実施形態では、初期の軽減が存在しない。むしろ、入力またはステップ自体に対する改善も変更も伴わずに、不良が検出される。しかし、後の設計プロセスまたはテスト・プロセスあるいはその両方において、ステップによって望ましい出力が生成されるまで、そのステップへの入力またはそのステップ自体あるいはその両方が調整される。本発明の1つまたは複数の実施形態では、望ましい出力が達成された後に、そのステップの入力および出力の両方を含んでいるデジタル署名が生成される。
【0010】
本発明の1つまたは複数の実施形態では、プロセス・フローは、半導体内の少なくとも1つの知的財産(IP)ブロックの製造フローである。プロセッサは、製造フローをコンピュータ制御された製造コントローラに読み込み、次に、コンピュータ制御された製造コントローラを介して、製造フローを使用して半導体を製造するようウエハー製造デバイスに指示する。
【0011】
本発明の1つまたは複数の実施形態では、コンピュータ・プログラム製品が、プロセス・フロー内のステップからの出力の信頼性、完全性、および来歴を検証するために使用される。コンピュータ・プログラム製品は、プログラム命令が具現化されている非一過性コンピュータ可読ストレージ・デバイスを含み、これらのプログラム命令は、コンピュータによって読み取り可能かつ実行可能であり、プロセス・フロー内の各ステップへの1つまたは複数の入力の各々のハッシュおよびデジタル署名のうちの少なくとも1つを検証することによって1つまたは複数の入力の妥当性を確認することと、前述の各ステップの出力および前述の各ステップへの1つまたは複数の入力を対象にするデジタル署名を生成することとを含むが、これらに限定されない方法を実行し、デジタル署名が、プロセス・フローを検証するために使用されるデジタル署名のチェーンをもたらす。
【0012】
本発明の1つまたは複数の実施形態では、コンピュータ・システムは、1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読非一過性ストレージ媒体とを備え、プログラム命令が、1つまたは複数のコンピュータ可読メモリのうちの少なくとも1つを介して、1つまたは複数のプロセッサのうちの少なくとも1つによって実行するために、1つまたは複数のコンピュータ可読非一過性ストレージ媒体のうちの少なくとも1つに格納される。格納されたプログラム命令は、プロセス・フロー内の各ステップへの1つまたは複数の入力の各々のハッシュおよびデジタル署名のうちの少なくとも1つを検証することによって1つまたは複数の入力の妥当性を確認することと、前述の各ステップの出力および前述の各ステップへの1つまたは複数の入力を対象にするデジタル署名を生成することとを含むが、これらに限定されない方法を実行するために実行され、デジタル署名が、プロセス・フローを検証するために使用されるデジタル署名のチェーンをもたらす。
【図面の簡単な説明】
【0013】
図1】本発明の1つまたは複数の実施形態において使用される、例示的なシステムおよびネットワークを示す図である。
図2】本発明の1つまたは複数の実施形態において使用される、例示的なブロックチェーン・アーキテクチャの高レベルの概要を示す図である。
図3図2に示された例示的なブロックチェーン・ネットワークの追加の詳細を示す図である。
図4】本発明の1つまたは複数の実施形態において使用されているような例示的なブロックチェーン台帳を示す図である。
図5】本発明の1つまたは複数の実施形態に従って、ブロックチェーンを使用する高レベルの一連の動作を示す図である。
図6】本発明の1つまたは複数の実施形態において使用されているような例示的なニューラル・ネットワークを示す図である。
図7】本発明の1つまたは複数の実施形態に従ってプロセッサに基づく方法において実行される1つまたは複数のステップの高レベルのフロー・チャートである。
図8】本発明の1つまたは複数の実施形態において使用されているようなブロックチェーン・プロセスを示す図である。
図9】本発明の実施形態に従ってクラウド・コンピューティング環境を示す図である。
図10】本発明の実施形態に従ってクラウド・コンピューティング環境の抽象化モデル層を示す図である。
【発明を実施するための形態】
【0014】
本発明の1つまたは複数の実施形態は、プロセス・フローにおけるセキュリティ上の懸念に対処する。より詳細には、本発明の1つまたは複数の実施形態は、許可されていないプロセス・フロー内のステップの入力および出力に対する変更、プロセス・フロー自体に対する変更などに関するセキュリティ上の懸念に対処する。
【0015】
例えば、IC設計プロセスに関連する完全性および来歴の問題に対処する必要がある、集積回路(IC)設計プロセスを作成するためのプロセス・フローについて考える。そのため、本発明の1つまたは複数の実施形態は、設計フロー内の各ステップで知的財産(IP)ブロック(すなわち、ICのサブコンポーネント)が意図的または偶然に変更されたかどうか、およびIPブロックが信頼できる関係者からのものであるかどうかを検出する。すなわち、IC(例えば、プロセッサ)は、複数のサブコンポーネント(例えば、加算器、レジスタ、算術論理演算ユニットなど)で構成されている。各サブコンポーネントは、特定の機能用であるか、または単にICチップの特定の領域を定めるものであるかにかかわらず、IPとして知られている。
【0016】
本発明の1つまたは複数の実施形態は、設計プロセスの各ステップで使用される入力を追跡すること、および入力から出力への変換を保護し、検証することも行う。そのような追跡は、システムが、最終的な出力を導出するために使用されたすべての入力(例えば、IPブロック、ネットリスト)を決定できるようにする。そのため、本発明の1つまたは複数の実施形態は、実装の欠陥または悪意のあるコンポーネントがいつ設計フローに導入されたかを決定するための情報を提供することによって、フォレンジック調査を容易にする。
【0017】
本明細書に記載されているように、本発明の1つまたは複数の実施形態は、ブロックチェーンを利用して、完全性および来歴をIPブロックの設計プロセスにもたらし、IPブロックの追跡可能性および来歴を実現する。
【0018】
IPブロックの設計プロセス中に、IPブロックは、一連のステップ(例えば、変換)を通過し、Graphic Database System-II(GDSII)ファイルなどの最終的な出力を生成する。すなわち、GDSIIは、集積回路(IC)レイアウトを記述するために使用されるデータベース・ファイル形式である。より詳細には、GDSIIファイルは、バイナリ・ファイル形式であり、ウエハー製造デバイスが、回路レイアウト、各回路が位置している層、異なる層間の電気コネクタなどにより、ICウエハー(すなわち、1つまたは複数の種類の集積回路の複数のコピーを含んでいる半導体ウエハー・ディスク)を作成するための情報を提供する。この情報は、フォトマスクを作成するために使用され、フォトマスクは、ウエハー製造プロセスにおいて使用される。
【0019】
本発明の1つまたは複数の実施形態に従って、IC上の特定のノード(知的財産(IP)ブロックまたはIPノードとも呼ばれる)に関してGDSIIファイルを設計するプロセスにおける各ステップで、その特定ノードを作成するための入力の妥当性が確認される。デジタル署名を使用して入力が署名され、このデジタル署名は、入力ファイルが信頼できる関係者によって署名されており、変更されていないことを保証するために使用される。各ステップ(例えば、合成、配置および配線など)での変換は、入力から出力への変換が、余分なものを何も追加されずに正しいということをチェックして、検証される。
【0020】
本発明の1つまたは複数の実施形態では、ステップの信頼できる検証者が、秘密鍵を使用してそのステップの変換に署名することによって、変換を承認する。特定のステップのデジタル署名は、そのステップの出力の完全性およびそのステップへの入力の署名を保護する。これによって、完成した設計フローの信頼性、完全性、または来歴、あるいはその組合せを検証するために使用されることができる「デジタル署名のチェーン」が得られる。本発明の1つまたは複数の実施形態では、次に、新たに生成された(例えば、GDSIIファイルによって記述されたような)IPブロックおよびデジタル署名のチェーンが、ブロックチェーンに記録される。これによって、機密扱いのアプリケーションにおいてIPブロックの使用を検討している設計者がIPブロックの完全な来歴を考慮することを可能にする。
【0021】
設計フローの信頼性は、識別情報(すなわち、名前)または設計フローが何を実行するか(すなわち、プロセス・フローの機能)の記述あるいはその両方に従って、設計フローが、それが主張している通りのものであるということの確認として定義される。
【0022】
プロセス・フローの完全性は、プロセス・フロー内のステップまたはステップの入力/出力あるいはその両方が偶然の動作または悪意のある動作のいずれかによって破損していないということの確認として定義される。
【0023】
プロセス・フローの来歴は、プロセス・フロー内のステップまたはステップの入力/出力あるいはその両方に対して行われたすべての変更の保護された信頼できる記録によって提供され、それによって、プロセス・フロー全体に影響を与えるそのような変更のソースまたは影響あるいはその両方を示す。
【0024】
したがって、プロセス・フローの信頼性、完全性、または来歴、あるいはその組合せが、プロセス・フロー内のステップの出力を検証するか、またはプロセス・フロー自体を全体的に検証するか、あるいはその両方を実行する。
【0025】
本発明は、IPブロックの設計プロセス中に、従来技術を上回る複数の利点を提供する。
【0026】
第1に、本明細書に記載されているような署名のチェーンは、設計フロー内のステップのすべての入力(例えば、IPブロックにおけるステップおよびライブラリへのIPブロックの追加におけるステップへの入力)および出力の信頼性、完全性、または来歴、あるいはその組合せを保証する。この署名のチェーンは、GDSIIファイルなどの最終的な出力を生成するために実行されたすべての変換の完全で変更不可能なログ記録を提供する。
【0027】
第2に、本発明はフォレンジック調査を促進する。システムは、署名のチェーンを使用して、動作がいつ発生したか、およびどの実体が動作を実行したかを決定する。したがって、システムは、セキュリティ侵害(例えば、実装の欠陥または悪意のあるコード)が設計プロセスにいつ導入されたかを追跡することができる。
【0028】
第3に、署名のチェーンは設計の来歴に関する情報を提供する。すなわち、従来技術のGDSIIファイル(設計フロー・プロセスの最終的な出力)は、低レベルのレイアウト情報を含むが、構築プロセスに関する来歴情報を欠いている。本発明の1つまたは複数の実施形態は、署名のチェーンを使用して、GDSIIから元の入力(例えば、ネットリスト、ライブラリ・コアなど)までトレース・バックし、それによって来歴を保証する。
【0029】
本発明の1つまたは複数の実施形態は、ブロックチェーンと統合された場合、組織全体にわたるエンドツーエンドのトレースを提供し、包括的な方法ですべての動作を追跡する。したがって、ブロックチェーンは、変更不可能なトレースを提供する。
【0030】
本発明の1つまたは複数の実施形態では、ブロックチェーンは、ブロックの正しさをテストして証明するために使用されたスクリプトおよびデータなどの追加情報を含む。
【0031】
本発明の1つまたは複数の実施形態では、公開鍵を実態に結び付けるために、公開鍵基盤が使用される。実体の例としては、開発者、組織、またはアプリケーションを実行しているプロセスが挙げられるが、これらに限定されない。そのため、本発明の1つまたは複数の実施形態は、公開鍵が実体に属するということを認証機関(CA:Certification authority)が認証するのを信用する。実体は、公開鍵ペア(すなわち、秘密鍵および公開鍵)を生成する。秘密鍵は、秘密に保たれ、IPブロックなどの入力オブジェクトにデジタル署名する(すなわち、ハッシュして暗号化する)ために使用される。公開鍵は、オブジェクトに対する署名を検証するために使用される。実体は、信頼できるCAに対して証明書を要求する。CAは、実体が有効であるということを認証し、実体の情報を公開鍵に関連付ける署名された証明書を返す。実体が信頼できる関係者であるかどうかをチェックするために、本発明の1つまたは複数の実施形態は、信頼できるCAによって実体の公開鍵証明書が署名されているということを決定する。
【0032】
本発明の1つまたは複数の実施形態では、実体が、公開鍵の自己署名された証明書を提供する。
【0033】
したがって、本明細書において詳細に説明されるように、本発明の1つまたは複数の実施形態は、プロセス・フロー内の各ステップで複数の動作を実行する。
【0034】
第1に、設計プロセス内の各ステップで(例えば、プロセス・フローを使用して)入力の妥当性が確認される。信頼できる関係者によって入力が署名されており、変更されていないということを保証するために、デジタル署名付きの入力が検証される。開発者は、新しいIPブロックを作成する場合、IPブロックをテストして検証した後に、それらのIPブロックに署名する。IC回路設計への入力(例えば、IPブロック・ライブラリから取り出されたIPブロック)がデジタル署名を欠いている場合、それらの入力は、偶然の変更または意図的な変更からそれらを保護するために、設計フローにおける使用の前に(例えば、設計プロセスを提供するか、または実装するか、あるいはその両方を行う役割を担う実体によって)デジタル署名される。
【0035】
第2に、設計プロセス・フロー内の各ステップ(例えば、合成、配置および配線)での変換が検証される。検証者は、出力がステップでの変換に提供された入力に対応するかどうかを評価する。本発明の1つまたは複数の実施形態では、検証者は、設計プロセスのコンポーネントとして、またはクラウド・サービスなどの外部の検証者として実装される。本発明の1つまたは複数の実施形態では、検証者は、ステップで変換を実行しているコンポーネントとは独立して動作し、変換を再現し、生成された出力が妥当性を確認される出力に一致するかどうかをチェックする。
【0036】
第3に、検証者は、ステップの出力の完全性を保護し、ステップへの入力の署名を含むデジタル署名を生成することによって、変換を承認する。これによって、本発明の1つまたは複数の実施形態では、各ステップの出力の完全性および来歴を認証するために使用されるさまざまなステップのデジタル署名のチェーンが得られる。署名のチェーンは、初期入力IPブロックおよびその後のステップ(変換)を最終的な設計フロー出力(例えば、最終的なGDSIIファイル)にリンクする。
【0037】
本発明の1つまたは複数の実施形態では、IPフローのトレース(例えば、VHSICハードウェア記述言語(VHDL)ファイル、GDSII、スクリプト、テスト・データなど)を格納し、アクセスするために、ブロックチェーンが採用される。本発明の1つまたは複数の実施形態では、IC設計フロー内のIPブロックの記述に加えて、IPブロックのデジタル署名のチェーンがブロックチェーンに追加される。
【0038】
ここで図を参照し、特に図1を参照すると、本発明の1つまたは複数の実施形態において利用される例示的なシステムおよびネットワークのブロック図が示されている。本発明のさまざまな実施形態に従って、コンピュータ101に関して、およびコンピュータ101内に示されたハードウェアおよびソフトウェアを両方とも含んでいる、例示的なアーキテクチャの一部またはすべてが示されており、コンピュータ101は、図1に示されているソフトウェア・デプロイ・サーバ149もしくは機械学習システム123内の処理ノードもしくはブロックチェーン・システム153内のデバイスまたはその組合せ、または図2に示されているピア218a~218gのうちの1つまたは複数、または図3に示されている監視コンピュータ301、または図6に示されている深層ニューラル・ネットワーク(DNN:Deep Neural Network)623に示されたノードのうちの1つまたは複数、あるいはその組合せによって利用される。
【0039】
本発明の1つまたは複数の実施形態では、例示的なコンピュータ101は、システム・バス105に結合されたプロセッサ103を含んでいる。プロセッサ103は1つまたは複数のプロセッサを利用し、プロセッサの各々は1つまたは複数のプロセッサ・コア123を含む。ディスプレイ109(一実施形態では、ディスプレイ109へのタッチ入力を検出することができるタッチスクリーン・ディスプレイ)を駆動/支援するビデオ・アダプタ107も、システム・バス105に結合される。システム・バス105は、バス・ブリッジ111を介して入出力(I/O:input/output)バス113に結合される。I/Oインターフェイス115は、I/Oバス113に結合される。I/Oインターフェイス115は、キーボード117、マイクロホン119、媒体トレイ121(一実施形態では、CD-ROMドライブ、マルチメディア・インターフェイスなどのストレージ・デバイスを含む)、および外部USBポート125を含む、さまざまなI/Oデバイスとの通信を提供する。I/Oインターフェイス115に接続されたポートの形式は、ユニバーサル・シリアル・バス(USB:universal serial bus)ポートを含むが、これに限定されない、コンピュータ・アーキテクチャの当業者に知られている形式である。
【0040】
図に示されているように、コンピュータ101は、ネットワーク・インターフェイス129を使用して、ソフトウェア・デプロイ・サーバ149、またはウエハー製造機151、機械学習システム123などの他のデバイス/システム、あるいはその両方と通信することができる。ネットワーク・インターフェイス129は、ネットワーク・インターフェイス・カード(NIC:network interface card)などのハードウェア・ネットワーク・インターフェイスである。1つまたは複数の実施形態では、ネットワーク127は、インターネットなどの外部ネットワーク、あるいはイーサネット(R)または仮想プライベート・ネットワーク(VPN:virtual private network)などの内部ネットワークである。1つまたは複数の実施形態では、ネットワーク127は、Wi-Fiネットワーク、セルラー・ネットワークなどのワイヤレス・ネットワークである。そのため、コンピュータ101またはウエハー製造機151またはブロックチェーン・システム153あるいはその組合せは、ワイヤレス通信または有線通信あるいはその両方を送信すること、または受信すること、あるいはその両方を実行することができるデバイスである。
【0041】
ハード・ドライブ・インターフェイス131も、システム・バス105に結合される。ハード・ドライブ・インターフェイス131は、ハード・ドライブ133とインターフェイスをとる。一実施形態では、ハード・ドライブ133は、やはりシステム・バス105に結合されたシステム・メモリ135にデータを入力する。システム・メモリは、コンピュータ101内の最低レベルの揮発性メモリとして定義される。この揮発性メモリは、キャッシュ・メモリ、レジスタ、およびバッファを含むが、これらに限定されない、さらに高いレベルの追加の揮発性メモリ(図に示されていない)を含む。システム・メモリ135に入力されるデータは、コンピュータ101のオペレーティング・システム(OS:operating system)137およびアプリケーション・プログラム143を含む。
【0042】
OS137は、アプリケーション・プログラム143などのリソースへのユーザ・アクセスを提供するためのシェル139を含んでいる。一般にシェル139は、ユーザとオペレーティング・システムとの間のインタープリタおよびインターフェイスを提供するプログラムである。より詳細には、シェル139は、コマンド・ライン・ユーザ・インターフェイスに入力されたコマンド、またはファイルからのコマンドを実行する。したがって、シェル139(コマンド・プロセッサとも呼ばれる)は通常、オペレーティング・システムの最高レベルのソフトウェア階層であり、コマンド・インタープリタとして機能する。シェルは、システム・プロンプトを提供し、キーボード、マウス、または他のユーザ入力媒体によって入力されたコマンドを解釈し、解釈されたコマンドを、処理するために適切なさらに低いレベルのオペレーティング・システム(例えば、カーネル141)に送信する。シェル139はテキストベースのライン指向ユーザ・インターフェイスであるが、本発明は、グラフィック、音声、ジェスチャーなどの他のユーザ・インターフェイス・モードも同様に適切にサポートする。
【0043】
図に示されているように、OS137は、OS137の他の部分およびアプリケーション・プログラム143によって必要とされる不可欠なサービス(メモリ管理、プロセスとタスクの管理、ディスク管理、およびマウスとキーボードの管理を含む)を提供することを含めて、OS137のさらに低いレベルの機能を含むカーネル141も含んでいる。
【0044】
アプリケーション・プログラム143は、ブラウザ145として例示的に示されたレンダラを含んでいる。ブラウザ145は、ワールド・ワイド・ウェブ(WWW:world wide web)クライアント(すなわち、コンピュータ101)で、ハイパーテキスト転送プロトコル(HTTP:hypertext transfer protocol)メッセージングを使用してネットワーク・メッセージをインターネットに対して送受信できるようにするプログラム・モジュールおよび命令を含んでおり、このようにして、ソフトウェア・デプロイ・サーバ149および他のシステムとの通信を可能にする。
【0045】
コンピュータ101のシステム・メモリ(およびソフトウェア・デプロイ・サーバ149のシステム・メモリ)内のアプリケーション・プログラム143は、プロセス・フローを管理および利用するためのプログラム(PMUPF:Program for Managing and Utilizing a Process Flow)147も含んでいる。PMUPF147は、図2図7で説明されているプロセスを含めて、下記で説明されているプロセスを実装するためのコードを含んでいる。一実施形態では、コンピュータ101は、ソフトウェア・デプロイ・サーバ149からPMUPF147をダウンロードすることができ、このダウンロードは、実行で必要になるまでPMUPF147のコードがダウンロードされない、オンデマンドのダウンロードを含む。本発明の一実施形態では、ソフトウェア・デプロイ・サーバ149は、本発明に関連するすべての機能を(PMUPF147の実行を含めて)実行するため、コンピュータ101は、PMUPF147を実行するためにそれ自身の内部コンピューティング・リソースを使用する必要がない。
【0046】
本発明の1つまたは複数の実施形態では、ウエハー製造機151は、特定の集積回路(IC)の複数のコピーを含んでいるウエハーを作成する製造デバイスである。ウエハー製造機151は、ウエハー/ICを製造する当業者に知られているプロセスを実行し、それらのプロセスは、ウエハーの熱酸化によって空のウエハーを準備するステップと、特定の材料がウエハー上に成膜される位置を定めるためにウエハーからマスクを取り除くステップと、ウエハーをエッチングしてそのような材料のためのチャネルを定めるステップと、電気伝導/絶縁特性を調整するために材料を添加するステップと、誘電体および金属をウエハー上に成膜するステップと、ウエハーを洗浄(不動態化)するステップと、ウエハーを電気的にテストするステップと、ウエハーからIPチップを切り離すステップと、IPチップを、パッケージ内のIPチップに接続する入出力ピンを含んでいるプラスチック/セラミックのパッケージに組み立てるステップとを含む。
【0047】
機械学習システム123は、人工知能(AI:artificial intelligence)システムであり、図6に示されている深層ニューラル・ネットワーク(DNN)623において、例示的に詳細に説明される。
【0048】
ブロックチェーン・システム153は、図2および図3に示されているブロックチェーン・ネットワーク253において詳細に説明される。
【0049】
本明細書において使用されるとき、「ブロックチェーン」、「ブロックチェーン環境」、「ブロックチェーン・システム」、および「ブロックチェーン・ファブリック」という用語は、一連の「ブロック」(集合的に「ブロックチェーン」とも呼ばれる)内に記述されたトランザクションの台帳を安全に制御する分散システムを支援する処理デバイスの集合を利用するシステムを表すために、交換可能なように使用される。
【0050】
コンピュータ101に示されたハードウェア要素は、網羅的であることは意図されておらず、本発明にとって必要な、不可欠なコンポーネントを強調するための代表例である。例えば、1つまたは複数の実施形態では、コンピュータ101は、磁気カセット、デジタル・バーサタイル・ディスク(DVD:digital versatile disks)、ベルヌーイ・カートリッジなどの代替のメモリ・ストレージ・デバイスを含む。これらおよび他の変形形態は、本発明の範囲に含まれることが意図されている。
【0051】
図2に関しては、本発明の1つまたは複数の実施形態において使用される例示的なアーキテクチャの高レベルの概要が示されている。
【0052】
図2に示されるように、ブロックチェーン・アーキテクチャ200は、ユーザ202a~202gが、プロセス・フロー内の1つまたは複数のステップへの入力または1つまたは複数のステップからの出力あるいはその両方の信頼性、完全性、または来歴、あるいはその組合せを検証するために、ブロックチェーン・ネットワーク253を利用できるようにする。ここで、本発明の1つまたは複数の実施形態の説明の目的で、プロセス・フローが、IC内のIPブロックを設計するため、または製造するため、あるいはその両方のためであるということを仮定する。本明細書に記載されているように、IPブロックは、ICの物理的サブセクションである。特定のIPブロックは、IC内の特定の機能(例えば、データをバッファリングするためのバッファ)を提供するためであることができ、または単に、IC上の特定の領域(例えば、ICの上半分)を表すことができる。
【0053】
ICを設計するため、または製造するため、あるいはその両方のための例示的なプロセスは、(1)ICを記述するコードを書くこと、(2)そのコードをコンパイルすること、(3)コンパイルされたコードをIC用のコンピュータ支援設計(CAD:computer-aided design)プログラムに入力すること、(4)超高速集積回路設計用ハードウェア記述言語(VHDL:Very high speed integrated circuit Hardware Description Language)を使用して、高レベルのプログラムでCADプログラムの出力を合成すること、(5)ICのコンポーネントの低レベルのネットリストを生成すること、(6)これらのコンポーネントをIC内に配置して配線し、ICの最終的なレイアウトを確立すること、(7)ダイ、金属層などを製造してウエハー/チップを作るために使用されるマスクを製造すること、および(8)チップを完成したIC製品として(例えば、入出力ピンを含んでいるセラミック/プラスチック内に)パッケージ化することを含む。
【0054】
動作21に示されているように、ユーザ(例えば、ユーザ202a~202gのうちのユーザ202a)は、最初に、IC内のIPブロックを記述するIP1を作成し、IPライブラリ206に格納する。図2に示されており、下記で説明されるように、IP1は、設計プロセス中に、ある関係者(例えば、図2に示されているユーザのうちの1人または図2に示されていない第三者ユーザ)によって作成される。後で、ユーザ202bが、新しい設計において同じIP1を利用するために、または同じIP1が何であるか/何を実行するかを確認するために同じIP1を単に見るために、同じIP1をチェックアウトする。
【0055】
ソフトウェア開発キット(SDK:Software Development Kit)210aは、IP1の作成を記述するか、またはIP1をIPライブラリ206にチェックインするか、あるいはその両方を実行するIP記録動作212aを実行し、このようにしてブロックチェーンのエンドースメント214aを作成し、ブロックチェーンのエンドースメント214aは、図7において下記で詳細に説明されるように、(例えば、設計プロセス208によってIPを作成するか、またはIPをIPライブラリ206にチェックインするか、あるいはその両方を実行する)トランザクションでブロックチェーン・システム内のピアによって達せられた合意である。
【0056】
動作22で示されているように、ユーザ202cは、後でIP1を、IPライブラリ206からチェックアウトし、ファイアウォールの背後にあるか、またはエアギャップされた(リモートにアクセスできない)設計プロセス208に送信する。同時に、SDK210cは、ユーザ202cが、IPライブラリ206からIP1をチェックアウトし、設計プロセス208に送信したという事実を記述する、IP記録動作212cを実行する。IP記録動作212cは、ブロックチェーン・トランザクションをエンドースメント214cと共に作成し(エンドースメント214cにおいて、ブロックチェーン・システム内のピアが、設計プロセス208がチェックアウトされたIP1を受信したということを検証する)、このブロックチェーン・トランザクションは、ブロックチェーン・ネットワーク253内のピア218a~218gによるブロックチェーン216内の操作のために、ブロックチェーン216に追加されるトランザクションである。
【0057】
動作23に示されているように、次に、設計プロセス208が、新しいIP2を、どの実体がIP2を作成したか、IP2がどこで作成されたか、IP2がいつ作成されたかなどに関する署名と共に作成する。すなわち、設計プロセス208は、ステップ1、ステップ2、...ステップnを(秘密の方法で)実行することによって、IP1を変更し、ステップ1~nのうちの各ステップが、それ自身の署名を作成する。最終的に、プロセス208は、新しいIP2を、添付された署名のチェーンと共に生成する。
【0058】
動作24に示されているように、次に、ユーザ202cは、新しいIP2を設計プロセス208から取り出し、IPライブラリ206にチェックインする。しかし、IPライブラリ206はセキュリティで保護されていない可能性がある。そのため、IP1およびIP2は、許可されていないユーザによってIPライブラリ206からチェックアウトされ、変更を認識していない他のユーザに問題を引き起こす可能性が高い方法で、変更される可能性がある。したがって、ブロックチェーンのエンドースメント214aおよびブロックチェーンのエンドースメント214cが、IP1に対する更新の検証をブロックチェーン216に提供し、ブロックチェーン216のセキュリティは、ブロックチェーン・ネットワーク253内のピア218a~218gによって維持されている。
【0059】
したがって、動作25に示されているように、IP2は、IP記録動作212cを作成するSDK210cによって妥当性を確認され、IP記録動作212cは、ユーザ202cが、(1)IP2をIP1から作成し、(2)誰がIP2を作成したか、IP2がいつ作成されたかなどに関する署名を追加し、(3)IP2をIPライブラリ206に格納し、(4)ブロックチェーン・ネットワーク254内のピア218a~218gによって検証されたトランザクションを送信したという事実を記述する。このようにして、ピア218a~218gは、IP2に関連するトランザクションの妥当性を集合的に確認する。
【0060】
動作26に示されているように、IP2は、これで、ブロックチェーン・ネットワーク253によってブロックチェーン216に受け入れられ、ピア218a~218gによって提供されたブロックチェーンのトレース全体と統合される。
【0061】
そのため、ブロックチェーン・アーキテクチャ200は、IC内のIPブロックを作成することなどの、プロセス・フローに対する変更を安全に維持するための、ブロックチェーンの新しい使用を可能にする。
【0062】
すなわち、ブロックチェーン・アーキテクチャ200は、各段階(設計プロセス208内のステップ)への入力が正しいということ、および1つのステップから次のステップへの各変換が正しい(例えば、無関係なステップが追加されない)ということを保証する。
【0063】
ブロックチェーン・アーキテクチャ200は、各ステップの出力にデジタル署名を「添付する」ことによって各変更を「承認する」ことによって、変換に対する独立した検証を提供する。
【0064】
本発明の1つまたは複数の実施形態では、プロセス設計の元の設計が、「所有者」によって最初に署名され、チェーン/ブロックチェーンを形成するために、各新しいステップで追加の署名が追加される。そのため、元の設計から「アーチファクト」(プロセスに対する変更)のいずれかへのこの署名のチェーン/ブロックチェーンは、アーチファクトの信頼性、完全性、または来歴、あるいはその組合せを証明する。
【0065】
7人のユーザ(ユーザ202a~ユーザ202g)、7つのSDK(SDK210a~SDK210g)、7つのIP記録動作(IP記録動作212a~IP記録動作212g)、7つのエンドースメント(エンドースメント214a~エンドースメント214g)、7つのピア(ピア218a~ピア218g)、および設計プロセス208内の「n」個のステップ(nは整数である)が示されているが、これらの要素の各々のより多い要素または少ない要素が、図2に示されたブロックチェーン・アーキテクチャ200に含まれることができるということが理解される。
【0066】
より詳細には、IP設計をIPライブラリ206にチェックインするためのIP記録動作(例えば、IP記録動作212aおよびIP記録動作212c)、およびIP設計をIPライブラリ206からチェックアウトするためのIP記録動作(例えば、IP記録動作212bおよびIP記録動作212c)に加えて、ブロックチェーン・ネットワーク253に送信される他のIP動作は、(作成せずに)既存のIP記録を更新すること(例えば、IP記録動作212d)、IP記録に対する変更を追跡すること(例えば、IP記録動作212e)、特定のIP設計が使用されているということを宣言すること(例えば、IP記録動作212f)、特定のIP設計の信頼性をチェックすること(例えば、IP記録動作212g)などを含むが、これらに限定されない。
【0067】
ここで図3を参照すると、図2に示されたブロックチェーン・ネットワーク253の追加の詳細が示されている。
【0068】
本発明の1つまたは複数の実施形態では、「信頼できる唯一の位置」でトランザクションを安全かつ透過的に格納し、追跡し、管理するために、図3に示されているブロックチェーン・ネットワーク253が、インフラストラクチャ(例えば、チェーンコードの実行)およびサービス(例えば、識別情報管理などのメンバーシップ・サービス)を提供するために使用される。ブロックチェーン・ネットワーク253は、システム内でこれまでに行われたすべてのトランザクションの(信頼できる唯一の位置の)検証可能な記録を維持する。データがブロックチェーンに入力された後に、それらのデータは消去されることができず(不変性)、変更されることもできない。すなわち、記録に対する変更は、新しいトランザクションを発行/導入することと見なされる。したがって、そのような消去または変更の禁止は、データの監査可能性および検証可能性を保証する。
【0069】
ブロックチェーン・ネットワーク253(「ブロックチェーン・ファブリック」、「ブロックチェーン・システム」、「オープン・ブロックチェーン」、または「Hyperledger Fabric」としても知られている)は、参加している関係者間で実行され共有されているすべてのトランザクションまたはデジタル・イベントの記録の分散データベースに基づく。システム内の参加者の大部分を組み込む合意メカニズムを介して、ブロックチェーン内の個別のトランザクションが妥当性を確認されるか、または検証される。このようにして、反論できない記録を許可されたパブリックな台帳に作成することによって、参加している実体が、デジタル・イベントが発生したということを確実に知ることができるようにする。
【0070】
トランザクションが実行されるときに、それに対応するチェーンコードが、システムの複数の妥当性を確認しているピアによって実行される。例えば、図3に示されているように、ピア218a~218d(すなわち、図2に示されているピアであるが、図2に示されたピア218a~218gのうちの他のピアを含むか、または他のピアに置き換えられるか、あるいはその両方が行われてよい)が、トランザクション・パラメータの妥当性を確立し、それらのピアが合意に達した後に、新しいブロックが生成されて、ブロックチェーン・ネットワークに追加される。すなわち、監視コンピュータ301(図1に示されたコンピュータ101に類似する)上で実行されているアプリケーション・プロセス308(例えば、図2に示された設計プロセス208)は、図に示されたアプリケーション304などのアプリケーションを実行し、ソフトウェア開発キット(SDK)310(図2に示されたSDK210a~210gに類似する)に、一般的なリモート・プロシージャ呼び出し(grpc:general remote procedure calls)を使用して、ピアツーピア・ネットワーク304をサポートするメンバーシップ・サービス309と通信させ、ピアツーピア・ネットワーク304は、図2に述べたピア218a~218gを使用してブロックチェーン216をサポートする。
【0071】
図4を参照すると、本発明の1つまたは複数の実施形態において利用される、ブロックチェーン216内の例示的なブロックチェーン台帳400が示されている。
【0072】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400が、図2に示されたブロックチェーン・アーキテクチャ200をサポートするか、または利用するか、あるいはその両方を行う図3に示された監視コンピュータ301などの監視コンピュータの識別子(ブロック402に示されている)を含んでいる。例えば、本発明の1つまたは複数の実施形態では、ブロック402が、監視コンピュータのインターネット・プロトコル(IP:internet protocol)アドレス、ユニフォーム・リソース・ロケータ(URL:uniform resource locator)などを含む。この情報は、本明細書に記載されたプロセス・フローに関連するトランザクションを受信するために、図3に示されたピアツーピア・ネットワーク304内のピアによって使用される。
【0073】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック404に示されているように、プロセス・フロー内のステップへのステップ入力の識別子も含む。例えば、プロセス・フローが、IPブロックを設計/製造するためのプロセス用だった場合、ステップ入力は、IPブロック内の回路に対する変更、製造条件(例えば、温度、圧力、ウエハー上に撒かれる材料の量など)に対する変更などであることができる。
【0074】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック406に示されているように、ステップ入力を提供することによってステップに対する変更を行っている実体(例えば、人、企業、システムなど)の識別情報も含む。
【0075】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック408に示されているように、ステップ入力のハッシュも含む。例えば、ステップ入力がバイナリであり、実行された場合に、ウエハー製造機に、製造されているウエハー上にマスクされた材料を塗布するなどの特定の動作を実行させると仮定する。セキュリティを強化するために、ステップ入力の提供者は、ステップ入力の妥当性を確認するために使用されることができるハッシュを作成することができる。したがって、セキュリティの強化が望まれる場合、ユーザがステップ入力404の妥当性を検証することができるように、ブロック408がブロックチェーンに追加されることができる。
【0076】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック410に示されているように、ステップ入力のデジタル署名も含む。したがって、セキュリティの強化が望まれる場合、ブロック410がブロックチェーン台帳に追加されることができる。これによって、署名者の公開鍵に対するアクセス権限を持っているブロックチェーン・ネットワーク内のピアは、デジタル署名を検証することができる。
【0077】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック412に示されているように、ステップ入力によって変更されているステップのステップ出力も含む。例えば、プロセス・フロー内の特定のステップが新しい入力(例えば、ブロック404に示されたステップ入力)を取り込む場合、ブロック412に示されているように、そのステップの出力が新しい入力を使用する。
【0078】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック414に示されているように、ステップ入力を受信した後にステップ入力に関して実行されるテストの記述も含む。すなわち、プロセス・フローがICを製造するためであるということを仮定する。ブロック404によって示されたステップ入力への変更によってプロセス・フローが変更され、ICが製造された(物理的に構築されたか、またはシミュレートされた)後に、ブロック414は、変更されたICに対して実行されたテスト(例えば、「テストA-高温試験」)と記述する。テストが、単にそのステップのみが合格するかどうかに関するのみである場合、テストの記述は「テストB-隔離テスト」であることができる。
【0079】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ステップに対して実行されたテスト(ブロック414)でのテスト結果(「合格」または「不合格」など)も含む。
【0080】
本発明の1つまたは複数の実施形態では、ブロックチェーン台帳400は、ブロック418で説明されているように、ブロック416からのテスト結果に基づいて何の調整が行われたかについての説明も含む。例えば、ステップが、製造デバイスへの供給原料を制御することであり、ステップ入力が4から6に変化したと仮定する。しかし、この変化が、製造デバイスに送られる供給原料の量が過剰になることを引き起こし、このようにして、製造デバイスが中断した。したがって、次に、ステップ入力が6から5に下げられ、その後、製造デバイスが(より速い速度で)適切に機能することができたということを仮定する。この6から5への調整がブロック418に反映される。
【0081】
このようにして、新しいステップ入力(ブロック404、ブロック408、またはブロック410、あるいはその組合せ)、ステップ入力を提供する実体(ブロック406)、ステップの新しい出力(ブロック412)、およびステップ入力に対して行われたテスト/調整(ブロック414、ブロック416、またはブロック418、あるいはその組合せ)を識別することによって、ブロックチェーン台帳400などのデジタル署名のチェーンに基づいて、プロセス・フロー内のステップの各々の出力の信頼性、完全性、または来歴、あるいはその組合せが確立される。
【0082】
図3に示されたブロックチェーン・ネットワーク253の例示的動作が、図5に示されている。ステップ501で説明されているように、ブラウザまたは他のデバイス(例えば、図3に示された監視コンピュータ301)が、(例えば、プロセス・フロー内のステップへの入力に対する変更を識別するための)トランザクションを実行する。ステップ503に示されているように、監視コンピュータ301は、セキュア・ハッシュ・アルゴリズム(SHA-2)などのハッシュ・アルゴリズムを使用してトランザクションをハッシュし、次に、デジタル署名を使用してそのハッシュに署名する。ステップ505で説明されているように、その後、この署名が、図3に示されたピアツーピア・ネットワーク304にブロードキャストされる。ステップ507に示されているように、ピアツーピア・ネットワーク304内のピア(例えば、ピア218a)が、トランザクションを図3に示されたブロックチェーン216に集約する。ブロック509に示されているように、各ブロックは、前のブロックへのリンクを含む。新たに修正されたブロックチェーン216は、ピア218a~218dのうちの他のピアのうちの1つまたは複数によって、または他の許可されたブロックチェーン・システムからの他のピアによって、あるいはその両方によって、妥当性を確認される(ステップ511)。ステップ513で説明されているように、次に、妥当性を確認されたブロックがピア218b~218dにブロードキャストされる。これらのピア218b~218dは、新しいブロックをリッスンして受信し、それらのブロックをブロックチェーン216の自分のコピーにマージする(ステップ515)。
【0083】
このようにして、図2図5で説明されたブロックチェーン・ファブリックは、分散型台帳を提供するブロックチェーン・デプロイメント・トポロジーを表し、分散型台帳は、持続して、トランザクションと呼ばれる、複数の参加者間で共有されるデジタル・イベントを管理し、各参加者は、これらのイベントにおいて利害関係がある。台帳は、出場者間の合意のみによって更新されることができる。さらに、トランザクションが記録された後に、それらのトランザクションは変更されることができない(変更不可能である)。そのようなすべての記録されたトランザクションは、参加者からの合意の証明を使用して、暗号によって検証可能であり、このようにして、トランザクションの発祥を追跡する堅牢な来歴メカニズムを提供する。
【0084】
そのため、ブロックチェーン・ファブリックは、分散ネットワークを使用してイベントのデジタル台帳を維持し、したがって、各ピアに格納されたブロックチェーンが以前のブロックに依存し、これによって、ブロックチェーン内のその後のブロックに保護されたデータを提供するため、デジタル台帳の優れたセキュリティを実現する。
【0085】
すなわち、本明細書に記載されたブロックチェーン・ファブリックは、分散的システムを提供し、分散的システム内のすべてのノードが、ブロックチェーンのコピーを含む。これによって、信頼できる第三者によって管理された集中データベースを持つ必要性を回避する。トランザクションは、ソフトウェア・アプリケーションを使用してネットワークにブロードキャストされる。ネットワーク・ノードは、トランザクションの妥当性を確認し、それらのトランザクションを自分のコピーに追加し、その後、これらの追加を他のノードにブロードキャストすることができる。しかし前述したように、それにもかかわらず、ブロックチェーンは、1つまたは複数の以前のブロックに基づいて各新しいブロックが保護される(例えば、ハッシュされる)ため、非常に安全である。
【0086】
前述したように、プロセス・フロー内のステップに対する変更は、そのステップまたはプロセス・フロー全体あるいはその両方の失敗をもたらす可能性がある。そのため、本発明の1つまたは複数の実施形態では、ユーザは、(1)プロセスを識別し、(2)失敗したステップを識別し、(3)ステップが失敗した理由を説明し、(4)失敗したステップを修正するための可能性のある解決策を提供し、(5)提示された解決策の選択をユーザから受信し、(6)提示された解決策の受信された選択を実施し、(7)新たに修正されたステップが現在機能しているかどうかに関するメッセージをユーザに返す、グラフィカル・ユーザ・インターフェイス(GUI:graphical user interface)を提示されることができる。
【0087】
例えば、特定のIPブロックを製造するために、監視コンピュータがプロセス・フローを監視している((1)プロセスを識別する)ということ、および監視コンピュータが、発生した熱負荷をIPブロックが処理することができないため((3)ステップが失敗した理由を説明する)、そのIPブロックに対する変更(回路内の変更)が、IPブロックが適切に機能しなくなることを引き起こしたということを決定する((2)失敗したステップを識別する)ということを仮定する。そのため、監視コンピュータは、変更された回路をより小さい回路に置き換えることなどの、一連の可能性のある解決策を検索し、これらの解決策をGUI上でユーザに提示する((4)失敗したステップを修正するための可能性のある解決策を提供する)。ユーザは、提案された解決策のうちの1つを選択し、その選択を監視コンピュータに送信し((5)提示された解決策の選択をユーザから受信し)、それに応じて監視コンピュータは、IPブロックを変更する((6)提示された解決策の受信された選択を実施する)。監視コンピュータは、新たに変更されたIPブロックが、物理的またはシミュレーションのいずれかでテストされることを指示し、ユーザによって選択された解決策が機能したか否かをユーザに知らせる((7)新たに修正されたステップが現在機能しているかどうかに関するメッセージをユーザに返す)。
【0088】
本発明の実施形態では、問題に対する解決策を選択するためにユーザに依存するのではなく、この選択を行うようにニューラル・ネットワークがトレーニングされる。
【0089】
次に、図6を参照すると、本発明の1つまたは複数の実施形態において利用されている例示的な深層ニューラル・ネットワーク(DNN)623(図1に示された機械学習システム123に類似する)が示されている。DNN623内のノードは、ハードウェア・プロセッサ、仮想プロセッサ、ソフトウェア・アルゴリズム、あるいはハードウェア・プロセッサ、仮想プロセッサ、もしくはソフトウェア・アルゴリズム、またはその組合せを表す。
【0090】
本発明の1つまたは複数の実施形態では、DNN623が、トレーニング・データを使用して、特定の種類のステップの失敗およびそれに対する適切な解決策を認識するようにトレーニングされる。その後、システム/ユーザがプロセス・フロー内の特定の種類のステップの失敗を識別した場合、DNN623は、その失敗に対する適切な解決策が実行されることを選択的に指示するために、そのステップの失敗の記述子を分析する。
【0091】
したがって、DNN623は、本明細書に記載されているように、ステップ失敗記述子(step failure descriptor)600および複数の解決策612を処理するために使用される。
【0092】
ステップ失敗記述子600(例えば、プロセス・フロー内のステップの失敗の記述子)および複数の解決策612がDNN623のトレーニング済みバージョンに入力された場合、そのステップの失敗に対処するためにどの解決策を使用するべきかの識別情報が、DNN623からの出力602において識別される。この機能を提供するために、DNN623は、最初にトレーニングされなければならない。
【0093】
したがって、本発明の1つまたは複数の実施形態では、トレーニング用ステップ失敗記述子(ステップ失敗記述子600の形態)およびトレーニング用の複数の解決策(複数の解決策612の形態)のセットをDNN623に入力することによって、DNN623がトレーニングされる。トレーニング用ステップ失敗記述子は、トレーニング用の複数の解決策の特徴に従って選択される。
【0094】
すなわち、トレーニング用ステップ失敗記述子は、どの種類の失敗が発生したかに関する情報を含む。この情報は、失敗自体の記述(例えば、ステップへの既知の入力が、ステップが何を実行するように設計されたかに基づいて、そのステップから出力されることが期待されている出力を生成しない)だけでなく、ステップが一般ユーザによってどのように使用可能であるかに関するリスク/影響メタデータ(すなわち、誰でもアクセス可能であるか、または暗号鍵を持っている人のみがアクセス可能であるか、またはブロックチェーン・システムに対するアクセス権限を持っている人のみがアクセス可能であるか、またはブロックチェーン・システムの一部であるシステムのみがアクセス可能であるかなど、ステップの失敗がプロセス全体の失敗を引き起こすか否かなど)も含むが、これらに限定されない。したがって、高度にアクセス可能なステップ(「誰でもアクセス可能である」)は、厳しく制限されたステップ(「ブロックチェーン・システムの一部であるシステムのみがアクセス可能である」)よりも不正アクセスされる可能性がはるかに高く、したがって、ステップの失敗に伴う問題に対する解決策は、それに応じて適合された解決策を含む。例えば、ステップの失敗の種類が、プロセス・フローに対するアクセス権限を制御するブロックチェーン・システム内のシステムのみがアクセスできるステップにおいてのみ発生する場合、DNN623は、アクセス制御、ノードの動作などの、ブロックチェーン・システムに伴う問題を修正するようにトレーニングされる。しかし、ステップの失敗の種類が、すべての実体に公開されているステップにおいて発生する場合、DNN623は、プロセス・フローに関するセキュリティの完全な欠如によって引き起こされる問題を修正するようにトレーニングされる。
【0095】
そのような失敗の影響は、ステップの失敗を修正する方法を決定する(または修正するべきかどうかさえ決定する)ことにおける要因にもなる。すなわち、ステップへの入力に対する特定の変更が、プロセス・フロー全体における悪化を引き起こさない場合、システムは、解決策が不要であると決定することができる。しかし、ステップへの入力に対する該変更が、プロセス・フローにおける失敗を引き起こす(例えば、プロセスが完了できない)場合、解決策が選択されて実施される。
【0096】
したがって、DNN623は、ステップに伴う問題を解決するために、どの解決策を推奨するべきか、または実施するべきか、あるいはその両方を行うべきかを決定するときに、特定の種類のステップ失敗記述子および特定の種類の複数の解決策を認識するようにトレーニングされる。
【0097】
上で示されたDNN623をトレーニングすることについての高レベルの概要は、1つのトレーニング用ステップ失敗記述子および1つの種類のトレーニング用の複数の解決策のみについて説明しているが、本発明の好ましい実施形態では、DNN623が、トレーニング済みDNN623に入力される多くの種類のステップ失敗記述子および複数の解決策を認識することができるように、複数のトレーニング用ステップ失敗記述子およびそれらに関連するトレーニング用の複数の解決策が、トレーニング中にDNN623に入力される。
【0098】
DNN623は、本発明の1つまたは複数の実施形態において使用される、例示的な種類のニューラル・ネットワークである。本発明の1つまたは複数の実施形態において使用されることができる他のニューラル・ネットワークは、畳み込みニューラル・ネットワーク(CNN:convolutional neural networks)および深層学習の他の形態を使用するニューラル・ネットワークを含む。
【0099】
ニューラル・ネットワークは、名前が暗示しているように、大まかに言えば、生物学的ニューラル・ネットワーク(例えば、人間の脳)をモデルにしている。生物学的ニューラル・ネットワークは、互いに影響を与える一連の相互接続されたニューロンで構成されている。例えば、シナプスによって、(第1のニューロンからの)第2のニューロンによって受け取られる神経伝達物質の放出を介して、第1のニューロンが第2のニューロンに電気的に接続されることができる。これらの神経伝達物質は、第2のニューロンが興奮されるか、または抑制されることを引き起こすことができる。興奮/抑制されて相互接続されたニューロンのパターンが、最終的に、思考、筋肉の動き、記憶回復などを含む生物学的結果につながる。生物学的ニューラル・ネットワークのこの説明は非常に簡略化されているが、高レベルの概要は、1つまたは複数の生物学的ニューロンが、1つまたは複数の他の生体電気的に接続された生物学的ニューロンの動作に影響を与えるということである。
【0100】
電子ニューラル・ネットワークは、同様に電子ニューロンで構成されている。しかし、生物学的ニューロンとは異なり、電子ニューロンは技術的に「抑制性」になることはなく、さまざまな程度に「興奮性」になるのみである。
【0101】
DNN623内の電子ニューロン(本明細書では、単に「ニューロン」または「ノード」とも呼ばれる)は、入力層603、隠れ層605、および出力層607として知られている層に配置される。入力層603は、入力データを受け取って一連のニューロンの隠れ層(例えば、隠れ層605)に送信するニューロン/ノードを含み、隠れ層のうちの1つの層からのニューロンが、隠れ層605のうちの次の層内のすべてのニューロンと相互接続される。次に、隠れ層605のうちの最終的な層が、計算結果を出力層607に出力し、出力層607は多くの場合、ベクトル情報を保持する単一のノードである。
【0102】
前述したように、図に示されたDNN623内の各ノードは、図に示されたニューロン609などの電子ニューロンを表す。ブロック611に示されているように、(ニューロン609を含む)各ニューロンは、少なくとも3つの特徴(アルゴリズム、出力値、重み、およびバイアス値)を機能的に含む。
【0103】
アルゴリズムは、1つまたは複数の上流のニューロンからのデータを処理するための数学的式である。例えば、中央の隠れ層605に示されたニューロンのうちの1つまたは複数が、データ値をニューロン609に送信すると仮定する。次に、ニューロン609は、1つまたは複数の出力値を作成するために、ブロック611に示された数学関数を実行することによって、これらのデータ値を処理し、その後、これらの出力値が、隠れ層605内の別のニューロンまたは出力層607内のニューロンなどの、別のニューロンに送信される。各ニューロンは、そのニューロンまたは他の接続されたニューロンあるいはその両方に固有である重みも有する。さらに、出力値をバイアス値に加算することによって、出力値を増やすか、または減らし、DNN623がさらに「微調整される」ことができるようにする。
【0104】
例えば、ニューロン613がデータの一部分の分析結果をニューロン609に送信していると仮定する。ニューロン609は、特にニューロン613から来るデータがどの程度重要であるかを定義する第1の重みを有する。このデータが重要である場合、ニューロン613から来るデータが重く重み付けされるか、またはバイアス値によって増やされるか、あるいはその両方が実行され、このようにして、ニューロン609内の数学関数に、出力層607内のニューロンにより大きい影響を与えるより大きい出力を生成させる。同様に、ニューロン613が、ニューロン609の動作にとって重要であるということが決定された場合、ニューロン609が、ニューロン613内の数学関数の出力のより大きい値を受信するように、ニューロン613の重みが増やされる。代替として、ニューロン609の出力に影響を与えるために使用される重みまたはバイアスあるいはその両方を減らすことによって、ニューロン609の出力が最小限に抑えられることができる。これらの重み/バイアスは、信頼できる出力が出力層607から生じるように、DNN623内のニューロンのうちの1つ、一部、またはすべてについて調整可能である。本発明の1つまたは複数の実施形態では、重みの値およびバイアス値を見つけることは、ニューラル・ネットワークをトレーニングすることによって自動的に実行される。本発明の1つまたは複数の実施形態では、学習率、ドロップアウト、正則化係数などのハイパーパラメータを調整するために、手動による調整が適用される。そのため、ニューラル・ネットワークをトレーニングすることは、損失関数を最小化するための最適な重みおよびバイアス値に達するまで、複数のデータセットに対して前方伝搬および後方伝搬を実行することを含む。損失関数は、ニューラル・ネットワークによる予測値とさまざまな入力に対する実際のラベルとにおける差を測定する。
【0105】
DNN623のトレーニング中に手動で調整される場合、重みは、出力層607からの出力が期待値に一致するまで繰り返されられる方法で、ユーザ、センサの論理などによって調整される。例えば、入力層603が、特定の種類のステップの失敗およびその種類のステップの失敗に対する解決策を記述するトレーニング用入力を受信すると仮定する。DNN623が(DNN623内の電子ニューロンのうちの1つまたは複数における数学関数、出力値、重み、およびバイアスを調整することによって)適切にトレーニングされた後に、トレーニング済みDNN623が、ベクトル/値を出力層607に出力し、ニューロン604が特定の種類のステップの失敗に対する特定の解決策を表すということを示し、この解決策が出力602に提示される。
【0106】
自動的に調整される場合、「後方伝搬」を使用して重み(または数学関数あるいはその両方)が調整され、後方伝搬では、各重み値をどの方向に調整するべきかを決定する「勾配降下」法を使用することによって、ニューロンの重み値が調整される。勾配降下プロセスは、出力層607からの出力が改善するまで(例えば、要求者に返されるべき要求されたリソースを正確に表すまで)、各ニューロンにおける重みを特定の方向に移動する。
【0107】
図6に示されているように、ニューロンのさまざまな層が異なる陰影を付けられており、本発明の1つまたは複数の実施形態では、これらの層が、リソースの候補のさまざまな特徴またはそれらを制御するポリシーあるいはその両方を認識するために特にトレーニングされるということを示している。
【0108】
したがって、本発明の1つまたは複数の実施形態では、隠れ層605内に、ステップの失敗の特徴(例えば、どの実体が、失敗を引き起こしたステップに対する変更を行ったかについての説明)の第1のセットを評価するように設計されたニューロンを含んでいる層606、特徴(例えば、ステップに対する変更がいつ発生したか)の第2のセットを評価するように設計されたニューロンを含んでいる層608、およびステップの失敗の特定の種類を認識するように設計されたニューロンを含んでいる層610が存在する。
【0109】
次に、層610からのニューロンの出力が、出力層607で検出される値を制御する。
【0110】
図6は、ハイパーグラフ内のラベルなしの頂点に関して埋め込みを確立するためにDNNが使用される本発明の実施形態を示しているが、代替として、Q学習などの教師なし強化学習が、本発明の1つまたは複数の実施形態において利用されることができる。
【0111】
教師なし強化学習は、試行錯誤を行って、タスクの最適な対処法を最終的に見つける人工知能である。例えば、タスクがバットでボールを打つことである場合、ロボットは、投げられたボールにランダムにバットを振る。バットが投げられたボールの上または下を振られた場合、またはバットが、投げられたボールがバットを通り過ぎる前または通り過ぎた後に振られた場合、負値(すなわち、負の報酬)がバットの動作に与えられ、このようにして、ロボットがそのような振り方を選ばないよう促す。しかし、バットが投げられたボールを「チップ」した場合、この振り方に対して、正の報酬/値がロボットに与えられ、このようにして、ロボットにそのような振り方を選ぶよう促す。バットが投げられたボールにしっかりと接触した場合、この振り方を選ぶことに対して、さらに高い報酬/値がロボットに与えられ、このようにして、ロボットにそのような振り方を選ぶようさらに促す。
【0112】
Q学習強化学習システムは、Q学習アルゴリズムを使用し、このアルゴリズムは、行為者/ロボットが特定の状態(投げられたボールがロボットに接近しているとき)で特定の動作(バットを振る)を実行するときに、報酬のQ値を更新する。
【0113】
本発明と共にこれらの同じ手法を使用して、教師なし強化学習またはQ学習強化学習システムあるいはその両方は、どの解決策が、特定のプロセス・フロー内の特定のステップにおける特定の失敗を解決することに最適であるかを学習する。
【0114】
図7を参照すると、本発明の1つまたは複数の実施形態において実行される1つまたは複数の動作の高レベルのフロー・チャートが示されている。
【0115】
開始ブロック701の後に、ブロック703示されているように、1つまたは複数のプロセッサ(例えば、図1に示されたコンピュータ101内のプロセッサまたは図3に示された監視コンピュータ301内のプロセッサあるいはその両方)が、プロセス・フロー内のステップへの入力の各々を検証することによって、入力の妥当性を確認する。すなわち、プロセッサは、プロセス・フロー内の各ステップへの1つまたは複数の入力の各々のハッシュおよびデジタル署名のうちの少なくとも1つを検証することによって、1つまたは複数の入力の妥当性を確認する。そのため、入力をアルゴリズムに入力し、このアルゴリズムがそれらの入力に対して別の(例えば、より小さい)データのセットを作成することによって、入力のハッシュが作成される。本発明の1つまたは複数の実施形態では、プロセス・フローが、IPブロック、別の物理デバイス、サービスなどの、製品の作成を記述する。
【0116】
ブロック705で説明されているように、プロセッサは、各ステップの出力および各ステップへの1つまたは複数の入力を対象にするデジタル署名を生成し、デジタル署名が、プロセス・フロー内の1つまたは複数のステップの出力を検証するために使用されるデジタル署名のチェーンをもたらす。すなわち、プロセッサは、プロセス・フロー内のステップの各々について、デジタル署名からデジタル署名のチェーンを生成し、デジタル署名のチェーンが、プロセス・フロー内のステップごとに、出力および1つまたは複数の入力の変更不可能な記録を作成するようにする。この検証は、プロセス・フロー内の各ステップへの入力、プロセス・フロー内の各ステップからの出力、ステップ自体、もしくはプロセス・フロー全体、またはその組合せの信頼性(すなわち、ステップもしくはプロセス・フローまたはその両方が、それらの名前、説明などによって表されているように、実際にそれらが称されている通りのものであるということを保証する)、ステップもしくは出力もしくはプロセス・フロー全体またはその組合せの完全性(すなわち、ステップもしくはステップの入力/出力もしくはプロセス・フロー全体またはその組合せが許可されていない動作によって破損していないということを保証する)、またはステップへの入力、ステップからの出力、ステップ自体、もしくはプロセス・フロー全体、またはその組合せの来歴(すなわち、プロセス・フロー内のステップもしくはステップの入力/出力またはその両方に対して行われたすべての変更の保護された信頼できる記録によって提供される)、あるいはその組合せの検証を可能にする。
【0117】
本発明の1つまたは複数の実施形態では、ステップのデジタル署名は、ステップの出力および入力のハッシュの暗号化である。本発明の1つまたは複数の実施形態では、このデジタル署名は、図4に示されたブロックチェーン台帳400などのブロックチェーン台帳の一部である。そのため、プロセッサは、プロセス・フロー内のステップの各々(ステップのうちの1つまたは複数)について、デジタル署名のチェーン(例えば、図2で示されたブロックチェーン216)を生成する。
【0118】
本発明の1つまたは複数の実施形態では、次に、特定のプロセスを実行する、物理的製品を作成するなどために、最終的なプロセス・フローが実行される。
【0119】
フローチャートは、終了ブロック707で終了する。
【0120】
図7のフロー・チャートで説明されたプロセスは、連続的に、またはバッチとして実行されることができる。すなわち、本発明の1つまたは複数の実施形態では、ステップへの入力に対する変更、そのステップの出力に対する変更、そのステップ自体に対する変更、またはそのステップによる失敗、あるいはその組合せの発生が存在するたびに、そのようなイベント/変更の時点で、デジタル署名が作成されるか、またはブロックチェーンへの入力が行われるか、あるいはその両方であり、このようにして、図7に示されたプロセスを連続的な動作のセットにする。しかし、1つまたは複数の他の実施形態では、プロセス・フロー内の複数のステップの入力に対する変更、プロセス・フロー内の複数のステップの出力に対する変更、複数のステップに対する変更、または複数のステップの失敗、あるいはその組合せの記録が格納され、その後、バッチ動作でデジタル署名のチェーンまたはブロックチェーンあるいはその両方を変更するために、バッチ・トランザクションとして一緒に処理される。
【0121】
デジタル署名は、2進数でエンコードされたメッセージまたはドキュメントの信頼性および完全性を検証するために使用されることができる、数式に基づく一連の2進数(またはビット)である。デジタル署名に基づくシステムでは、署名者が、署名者の秘密鍵を使用してメッセージまたはドキュメントに署名する。さらに検証者は、署名者の公開鍵を使用して、署名されたメッセージまたはドキュメントあるいはプロセス・フローの入力および出力の信頼性および完全性を検証する。
【0122】
そのため、本発明の1つまたは複数の実施形態では、デジタル署名のチェーンが実行ファイルのセットを保護する。すなわち、プロセス・フローが実行される(例えば、ステップに記述された実行ファイルが製造コントローラに読み込まれる)前に、プロセス・フロー内のステップの入力または出力あるいはその両方のデジタル署名のチェーンの妥当性を確認することによって、製造コントローラは、プロセス・フロー内のステップおよびそれらに関連付けられた実行ファイルが両方とも有効であるということを保証される。したがって、プロセス・フローおよび実行ファイル(バイナリ)を検証した後に、その物理的製品を設計するか、または製造するか、あるいはその両方を実行するために、それらのバイナリが製造コントローラに読み込まれる。
【0123】
例えば、プロセス・フローが半導体内の少なくとも1つの知的財産(IP)ブロックの製造フローである場合、プロセッサは、その製造フローのための公開されたバイナリをコンピュータ制御された製造コントローラ(例えば、ウエハー製造デバイス)に読み込み、コンピュータ制御された製造コントローラに、製造フローを使用して半導体を製造するようウエハー製造デバイスに指示させる。
【0124】
本発明の1つまたは複数の実施形態では、プロセス・フローは、半導体内の知的財産(IP)ブロックを設計する。すなわち、プロセス・フローは、半導体内の特定のセクション/ノード(IPブロックと呼ばれる)を設計または製造する方法に関する一連の指示である。半導体がプロセッサである場合、半導体内のIPブロックは、加算器、比較器、レジスタなどであることができる。
【0125】
したがって、1つまたは複数の入力の各々のハッシュおよびデジタル署名が、1つまたは複数の入力の各々のソース(例えば、誰が入力を作成したか)、1つまたは複数の入力の各々の説明(例えば、入力において検出される値、命令など)、または1つまたは複数の入力の各々を作成するために使用されるツール(例えば、合成ツール、光近接効果補正ツール、配置および配線ツールなど)、あるいはその組合せの妥当性を確認する。すなわち、1つまたは複数の入力の各々を作成するために使用されるツールは、半導体内のIPブロックの設計において使用される合成ツール、配置および配線ツール、ならびに光近接効果補正ツールから成る群からのツールである。
【0126】
したがって、集積回路または別の物理的製品を設計/製造するために使用された場合、プロセス・フローは、物理的製品を生成する。そのため、1つまたは複数の入力の各々のハッシュおよびデジタル署名は、1つまたは複数の入力の各々のソース、1つまたは複数の入力の各々の説明、および1つまたは複数の入力の各々を作成するために使用されるツールの一意の識別情報を表す。
【0127】
本発明の1つまたは複数の実施形態では、本明細書に記載されているように、デジタル署名のチェーンは、前述の各ステップの1つまたは複数の入力および出力の変更不可能な記録を提供するために、ブロックチェーンに追加される。
【0128】
本発明の1つまたは複数の実施形態では、本明細書に記載されているように、前に生成された出力が、プロセス・フロー内のステップへの入力として使用され、ブロックチェーンからのデジタル署名のチェーンが、前に生成された出力の信頼性、完全性、または来歴、あるいはその組合せを検証するために使用される。
【0129】
本発明の1つまたは複数の実施形態では、プロセッサは、デジタル署名のチェーンをブロックチェーンに格納することと、プロセス・フロー内の各ステップの出力をテストすることであって、プロセス・フローの各ステップが前述の各ステップの事前に定義された機能を実行するかどうかを判定する、テストすることと、テストが、プロセス・フローの特定のステップが事前に定義された機能を実行できなかったということを決定することに応答して、プロセス・フローの特定の失敗したステップが事前に定義された機能を実行するまで、プロセス・フローの特定の失敗したステップに対する調整を実施することと、特定の失敗したステップに対する調整をブロックチェーンに格納することとを実行する。すなわち、テストが失敗した場合、(ステップへの入力を調整するのではなく)ステップ自体が変更される。例えば、ステップが、製造プロセスにおいて使用される供給原料の特定のレベルを出力するよう指定されたプロセスであるが、この出力値が供給原料の望ましい特定のレベル以外の何かに変化する場合、ステップへの入力を変更するのではなく、追加供給原料のソースを追加することなどによって、ステップ自体が変更される。
【0130】
本発明の1つまたは複数の実施形態では、プロセッサは、事前に定義された機能を実行できなかったプロセス・フローのステップをグラフィカル・ユーザ・インターフェイス上に提示し、グラフィカル・ユーザ・インターフェイスは、プロセス・フローのステップを調整するため、選択肢のうちの1つまたは複数のユーザ選択を受信するため、およびプロセス・フローのステップが事前に定義された機能を実行するまで選択肢のうちの1つまたは複数のユーザ選択を実施するための、ユーザ用の選択肢を含む。そのため、ユーザは、失敗したステップの対処方法を決定することができる。
【0131】
本発明の1つまたは複数の実施形態では、プロセッサは、プロセス・フローの失敗したステップを引き起こす解決策を識別するようにニューラル・ネットワークをトレーニングする。次に、プロセッサは、失敗したステップの説明をトレーニング済みニューラル・ネットワークに入力し、プロセス・フローの失敗したステップが今回は事前に定義された機能を実行するように、ニューラル・ネットワークによって識別された解決策を実施する(図6を参照)。
【0132】
本発明の1つまたは複数の実施形態では、ステップへの入力の妥当性を確認することが、プロセス・フロー内のステップへの入力の各々のハッシュおよびデジタル署名のうちの少なくとも1つを検証することを含む。すなわち、ステップ入力のハッシュ(図4のブロック408に示されている)およびデジタル署名(図4のブロック410に示されている)が、このハッシュ/デジタル署名を入力の既知のハッシュ/デジタル署名と比較することによって正確であるとして検証される。
【0133】
本発明の1つまたは複数の実施形態では、プロセス・フロー内のステップへの入力のうちの1つまたは複数は、プロセス・フロー内のステップのうちの1つまたは複数への元の入力から導出された、変更された入力である。すなわち、ステップへの入力が変更されていると仮定する。そのため、本発明の1つまたは複数の実施形態は、これらの変更された入力から生じたステップからの出力の信頼性、完全性、または来歴、あるいはその組合せを検証する。
【0134】
さらに、本発明の1つまたは複数の実施形態では、デジタル記録(例えば、ブロックチェーン)に基づいて、ステップへの変更された入力の信頼性、完全性、または来歴、あるいはその組合せが確立される。
【0135】
したがって、本発明の1つまたは複数の実施形態では、プロセッサが、プロセス・フロー内のステップへの入力の各々のデジタル署名に基づいて、入力の来歴を認証する。
【0136】
本発明の1つまたは複数の実施形態では、1つまたは複数のプロセッサが、複数のブロックチェーン・トランザクションを生成し、複数のブロックチェーン・トランザクションの各ブロックチェーン・トランザクションがプロセス・フロー内の特定のステップ用であり、各ブロックチェーン・トランザクションが、プロセス・フロー内の各特定のステップへの1つまたは複数の入力のうちの少なくとも1つに対する変更を記述し、各ブロックチェーン・トランザクションが、プロセス・フロー内の各特定のステップの出力に対する変更をさらに記述する。プロセッサは、複数のブロックチェーン・トランザクションを非線形のブロックチェーンに格納し、非線形のブロックチェーンは、非線形のブロックチェーン内の特定のステップに関して、発生元のブロックチェーン台帳への複数の異なる経路を含む。
【0137】
例えば、図8について考える。
【0138】
図8に示されているように、線形のブロックチェーン801は、ブロックチェーン台帳がプロセス・フロー内の特定のステップの入力または出力あるいはその両方の線形の/連続的な記録を示すように、トランザクションをブロックチェーン台帳に連続的に追加する。例えば、ブロックチェーン台帳800a(図4に示されたブロックチェーン台帳400に類似する)が、プロセス・フロー内の特定のステップへのステップ入力(図4のブロック404に示されている)を含むということを仮定する。この初期ステップ入力は、ブロックチェーン台帳800a内でトランザクションTxAとして示されている。この入力が(例えば、トランザクションTxBとして図8に示されているように)変更されるべきである場合、ブロックチェーン台帳800aが、TxAおよびTxBの両方の記録をブロック404に含んでいるブロックチェーン台帳800bに変換される。同様に、入力に対するその後の変更(トランザクションTxC)が、ブロックチェーン台帳800bによるブロックチェーン台帳800cの変更を引き起こし、ブロックチェーン台帳800cは、トランザクションTxA、TxB、およびTxCの記録を含む。入力に対する別のその後の変更(トランザクションTxD)が、ブロックチェーン台帳800cによるブロックチェーン台帳800dの変更を引き起こし、ブロックチェーン台帳800dは、トランザクションTxA、TxB、TxC、およびTxDの記録を含む。同様の、特定のステップからの出力における結果として生じる変更を示すさらに異なるトランザクション(図示されていない)も、ブロックチェーン台帳800a~800dを変更するために使用される。
【0139】
しかし、非線形のブロックチェーン803は、ブロックチェーンが非線形の「木」の方法で生成されることを可能にする。
【0140】
例えば、例示の目的で、線形のブロックチェーン801の場合にプロセス・フロー内の特定のステップの入力/出力に関して記述されたトランザクションが、非線形のブロックチェーン803において使用されるトランザクションと同じトランザクションであると仮定する。
【0141】
しかし、線形の/連続的な記録の複数のトランザクションを含むのではなく、そのようなトランザクションが、非線形の方法で異なるブロックチェーン台帳に格納される。図8の例に示されているように、ブロックチェーン台帳802aは、元のトランザクションTxAの記録を含み、一方、ブロックチェーン台帳802bは、トランザクションTxAおよびTxBの記録を含み、ブロックチェーン台帳802cは、トランザクションTxAおよびTxCの記録を含み、ブロックチェーン台帳802dは、トランザクションTxA、TxC、およびTxDの記録を含む。ブロックチェーン台帳802a~802dの各々はトランザクションの異なるセットを含んでいるが、ブロックチェーン台帳802a~802dはすべてトランザクションTxAを含んでおり、トランザクションTxAは、他のブロックチェーン台帳802b~802dのすべてを生成した発生元のブロックチェーン台帳802aからのものである。したがって、他のブロックチェーン台帳802b~802dがどこでいつブロックチェーン・プロセスに入って来たかにかかわらず、発生元の/元のブロックチェーン台帳802aに戻るトレースが行われることができるように、ブロックチェーン台帳802b~802dの各々は、元の親ブロックチェーン台帳(parent blockchain ledger)802aの記録を含んでいる。
【0142】
本発明の1つまたは複数の実施形態では、プロセッサが、入力から出力への変換の正しさの妥当性を確認することによって、プロセス・フロー内のステップの入力から出力への変換を確認する。次に、検証者が、入力および出力のデジタル署名を使用して変換に署名する。すなわち、プロセッサは、プロセス・フロー内のステップから出力されたものが、期待されるものに一致するということを、そのステップに入力されたもの基づいて最初にチェックし、保証する。一致する場合、検証者は、入力および出力の両方を表すデジタル署名を使用して変換に署名する。
【0143】
本発明の1つまたは複数の実施形態では、デジタル署名のチェーンがブロックチェーンに格納され、ブロックチェーンがIPブロックのカタログを維持し、IPブロックの各々が、デジタル署名のチェーンによって保護される。すなわち、ブロックチェーン台帳400などのブロックチェーン台帳は、ステップの入力および出力ならびにテストの記録を含むだけでなく、プロセス・フローによって作成されたIPブロックのカタログも記述する。
【0144】
本発明の1つまたは複数の実施形態では、デジタル署名のチェーンがブロックチェーンに格納され、方法が、プロセス・フロー内の各ステップを監査し、プロセス・フロー内の各ステップをトレースし、プロセス・フロー内の各ステップの妥当性を確認し、デジタル署名のチェーンを検証し、デジタル署名のチェーンを検証することに応答して、デジタル署名のチェーンをブロックチェーンに格納する、プロセッサをさらに含む。すなわち、図3に示された監視コンピュータ301は、プロセス・フロー内の各識別されたステップを監査し、プロセス・フロー内の各ステップの実行をトレースし、プロセス・フロー内の各ステップがプロセス・フローに属するということの妥当性も確認する(裏付ける)。次に、プロセッサは、デジタル署名のチェーンを検証する。デジタル署名のチェーンを検証することに応答して、プロセッサは、デジタル署名のチェーンをブロックチェーンに格納する。すなわち、プロセス・フロー内のステップに関するデジタル署名のチェーンが、(基礎となるステップの記述およびその基礎となるステップに署名するために使用されたデジタル署名に基づいて)正しいとして検証され、その後、ブロックチェーンに格納される。
【0145】
本発明の1つまたは複数の実施形態では、プロセッサが、ブロックチェーンをプロセス・フローのライブラリに格納し、次に、プロセス・フローのライブラリを安全な実行環境に格納し、安全な実行環境がシステム上の他のソフトウェアからプロセス・フローのライブラリを保護するようにする。すなわち、デジタル署名のブロックチェーンを含んでいるプロセス・フローのライブラリが、このライブラリ用に確保されているストレージの保護された/専用の領域、またはこのライブラリ用に確保されている専用のストレージ・デバイス(例えば、専用のハード・ドライブ)上などの、安全な実行環境に格納される。
【0146】
本発明の1つまたは複数の実施形態では、デジタル署名の妥当性確認および生成、ならびにデジタル署名のチェーンの生成は、デジタル署名の妥当性確認および生成、ならびにデジタル署名のチェーンの生成の機密性および完全性をシステム上の他のソフトウェアから保護する安全な実行環境内で実行される。本発明の1つまたは複数の実施形態では、この安全な実行環境は、この動作のために確保されている保護された/専用のプロセッサまたはコアあるいはその両方である。例えば、コンピュータ・システムが4コア・プロセッサを含んでいると仮定する。4つのコアのうちの1つがどの特定の動作にも関与していないということをさらに仮定する。そのため、この関与していないコアは、プロセス・フロー内のステップの各々の出力のデジタル署名およびステップへの入力のハッシュ/デジタル署名の妥当性を確認し、それらを生成する動作に加えて、プロセス・フロー内のステップの各々に関するデジタル署名のチェーンの生成のために、確保される。
【0147】
1つまたは複数の実施形態では、本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せである。1つまたは複数の実施形態では、コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含む。
【0148】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持して格納することができる有形のデバイスである。1つまたは複数の実施形態では、コンピュータ可読ストレージ・デバイスは、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであるが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0149】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスからダウンロードされることができる。1つまたは複数の実施形態では、このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備える。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0150】
1つまたは複数の実施形態では、本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはJava(R)、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードを含む。1つまたは複数の実施形態では、コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行されるか、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行されるか、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行されるか、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行される。後者のシナリオでは、1つまたは複数の実施形態では、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続してよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われる。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行する。
【0151】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。本発明の1つまたは複数の実施形態では、フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せは、コンピュータ可読プログラム命令によって実装されると理解されるであろう。
【0152】
1つまたは複数の実施形態では、これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、マシンを作り出す。1つまたは複数の実施形態では、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含んでいる製品を含むように、コンピュータ可読ストレージ媒体に格納され、1つまたは複数の実施形態では、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示する。
【0153】
1つまたは複数の実施形態では、コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ実装処理を作出するべく、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれ、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0154】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、モジュール、セグメント、または命令の部分を表す。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生する。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行される。本発明の1つまたは複数の実施形態では、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せが、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装されるということにも留意されたい。
【0155】
1つまたは複数の実施形態では、本発明は、クラウド・コンピューティングを使用して実装される。それにもかかわらず、本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装できる。
【0156】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含む。
【0157】
特徴は、次の通りである。
【0158】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的に、一方的にプロビジョニングすることができる。
【0159】
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを通じて利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する標準的なメカニズムを使用してアクセスされる。
【0160】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。利用者は通常、提供されるリソースの正確な場所に関して制御することも知ることもないという点において、場所に依存しないという感覚があるが、それでも、さらに高い抽象化レベルでは場所(例えば、国、州、またはデータセンター)を指定できる。
【0161】
迅速な柔軟性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できるこれらの能力は、利用者には、多くの場合、無制限であるように見え、任意の量をいつでも購入できる。
【0162】
測定されるサービス:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した何らかの抽象化レベルで、計測機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告され、利用されるサービスのプロバイダと利用者の両方に透明性を提供することができる。
【0163】
サービス・モデルは、次の通りである。
【0164】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0165】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0166】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0167】
デプロイメント・モデルは、次の通りである。
【0168】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。1つまたは複数の実施形態では、このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理されるか、またはオンプレミスもしくはオフプレミスに存在するか、あるいはその両方である。
【0169】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。1つまたは複数の実施形態では、このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理されるか、またはオンプレミスもしくはオフプレミスに存在するか、あるいはその両方である。
【0170】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般の人々または大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0171】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷分散のためのクラウド・バースト)によって固有の実体を維持したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0172】
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【0173】
ここで図9を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)と互いに通信する、1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。さらに、ノード10は、互いに通信する。一実施形態では、これらのノードは、前述したプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはそれらの組合せなどの1つまたは複数のネットワーク内で、物理的または仮想的にグループ化される(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図9に示されたコンピューティング・デバイス54A~54Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を通じて任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0174】
ここで図10を参照すると、クラウド・コンピューティング環境50(図9)によって提供される機能的抽象化層のセットが示されている。図10に示されたコンポーネント、層、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次の層および対応する機能が提供される。
【0175】
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャに基づくサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0176】
仮想化層70は、1つまたは複数の実施形態では、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体が提供される、抽象化層を備える。
【0177】
一例を挙げると、管理層80は、以下で説明する機能を提供する。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する課金または請求書の送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含む。セキュリティは、クラウドの利用者およびタスクの識別情報の検証を行うと共に、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0178】
ワークロード層90は、1つまたは複数の実施形態においてクラウド・コンピューティング環境が利用される機能の例を示している。この層から提供されるワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ分析処理94、トランザクション処理95、および本明細書に記載された本発明の特徴のうちの1つまたは複数を実行するプロセス・フロー管理処理96が挙げられる。
【0179】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0180】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、具体的に請求される他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本発明のさまざまな実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、または、開示された形態での本発明に制限されない。本発明の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本発明の原理および実際的な適用を最も適切に説明するため、および当業者が、企図された特定の用途に適するようなさまざまな変更を伴う多様な実施形態に関して、本発明を理解できるようにするために、実施形態が選択されて説明された。
【0181】
したがって、本出願の本発明の実施形態を詳細に説明したことにより、およびその実施形態例を参照することにより、変更および変形が、添付された特許請求の範囲で定義された本発明の範囲から逸脱することなく可能であるということは明らかであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10