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

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

▶ インテル コーポレイションの特許一覧

特開2022-100243コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置
<>
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図1
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図2
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図3
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図4
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図5
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図6
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図7
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図8
  • 特開-コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022100243
(43)【公開日】2022-07-05
(54)【発明の名称】コンピューティングシステムにおけるタスクの実行を制御するための方法及び装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220628BHJP
   G06F 11/10 20060101ALI20220628BHJP
【FI】
G06F9/50 150Z
G06F11/10 604
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021189280
(22)【出願日】2021-11-22
(31)【優先権主張番号】17/133,305
(32)【優先日】2020-12-23
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.JAVASCRIPT
3.SWIFT
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アンドリュー カニンガム
(72)【発明者】
【氏名】パトリック フレミング
(72)【発明者】
【氏名】ナヴィーン ラッカクラ
(72)【発明者】
【氏名】リチャード ゲリン
(72)【発明者】
【氏名】チャリトラ サンカール
(72)【発明者】
【氏名】スティーヴン ドイル
(72)【発明者】
【氏名】ラルフ カストロ
(72)【発明者】
【氏名】ジョン ブラウン
(57)【要約】
【課題】コンピューティングシステムにおいてタスクの実行を制御するための方法、装置、システム及び製造物が開示される。
【解決手段】方法、装置、システム及び製造物は、少なくとも1つのストレージデバイスと、少なくとも1つのプロセッサとを含む装置を含み、少なくとも1つのプロセッサは、少なくとも、以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得し、順方向操作を実行した第1のプロセッサコアを決定し、データフローが第1のプロセッサコアの識別子を含み、逆方向操作を実行するためにデータフローを第2のプロセッサコアに送信する命令を実行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
少なくとも1つのストレージデバイスと、少なくとも1つのプロセッサとを含む装置であって、
前記少なくとも1つのプロセッサは、少なくとも、
以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得し、
前記順方向操作を実行した第1のプロセッサコアを決定し、前記データフローが前記第1のプロセッサコアの識別子を含み、
前記逆方向操作を実行するために前記データフローを第2のプロセッサコアに送信する
ための命令を実行する、装置。
【請求項2】
前記要求は第1の要求であり、前記第1のプロセッサコアは、
前記データフローに対して前記順方向操作を実行するための第2の要求を取得し、
周期冗長検査を利用して前記データフローの完全性を検証し、
前記周期冗長検査に基づいて、前記データフローの検証を示すための状態フラグを更新する
ための回路を含む、請求項1に記載の装置。
【請求項3】
前記第1のプロセッサコアは、
前記データフローに対して前記順方向操作を実行し、
前記順方向操作に基づいて、変換されたデータフローを出力し、
前記変換されたデータフローに対応する、前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成する
ための回路を含む、請求項1に記載の装置。
【請求項4】
前記第1のプロセッサコアは、
前記順方向操作に基づいて、変換されたデータフローを出力し、
前記少なくとも1つのプロセッサ内の前記第1のプロセッサコアのインデックスに対応する前記第1のプロセッサコアの前記識別子を決定し、
前記第1のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成する
ための回路を含む、請求項1に記載の装置。
【請求項5】
前記回路は、前記データフローの検証に基づいて状態フラグを前記応答記述子に付加し、前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を前記応答記述子に付加する、請求項1及び4のうちいずれか1項に記載の装置。
【請求項6】
前記回路は、前記少なくとも1つのプロセッサによる以降のアクセスのために前記応答記述子を前記少なくとも1つのストレージデバイスに記憶する、請求項1、4及び5のうちいずれか1項に記載の装置。
【請求項7】
前記第2のプロセッサコアは、
前記逆方向操作に基づいて、変換されたデータフローを出力し、
前記少なくとも1つのプロセッサ内の前記第2のプロセッサコアのインデックスに対応する前記第2のプロセッサコアの識別子を決定し、
前記第2のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成し、
前記少なくとも1つのプロセッサによる以降のアクセスのために前記応答記述子を前記少なくとも1つのストレージデバイスに記憶する
ための回路を含む、請求項1に記載の装置。
【請求項8】
少なくとも1つのプロセッサによって実行されたとき、前記少なくとも1つのプロセッサに対して、少なくとも、
以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得させ、
前記順方向操作を実行した第1のプロセッサコアを決定させ、前記データフローが前記第1のプロセッサコアの識別子を含み、
前記逆方向操作を実行するために前記データフローを第2のプロセッサコアに送信させる
命令を含むコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項9】
前記要求は第1の要求であり、前記命令は、実行されたとき、前記少なくとも1つのプロセッサに対して、
前記データフローに対して前記順方向操作を実行するための第2の要求を取得させ、
周期冗長検査を利用して前記データフローの完全性を検証させ、
前記周期冗長検査に基づいて、前記データフローの検証を示すための状態フラグを更新させる、請求項8に記載のコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項10】
前記命令は、実行されたとき、前記少なくとも1つのプロセッサに対して、
前記データフローに対して前記順方向操作を実行させ、
前記順方向操作に基づいて、変換されたデータフローを出力させ、
前記変換されたデータフローに対応する、前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成させる、請求項8に記載のコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項11】
前記命令は、実行されたとき、前記少なくとも1つのプロセッサに対して、
前記順方向操作に基づいて、変換されたデータフローを出力させ、
前記1つ以上のプロセッサ内の前記第1のプロセッサコアのインデックスに対応する前記第1のプロセッサコアの前記識別子を決定させ、
前記第1のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成させる、請求項8に記載のコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項12】
前記命令は、実行されたとき、前記少なくとも1つのプロセッサに対して、
前記データフローの検証に基づいて状態フラグを前記応答記述子に付加させ、
前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を前記応答記述子に付加させる、請求項8及び11のうちいずれか1項に記載のコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項13】
前記命令は、実行されたとき、前記少なくとも1つのプロセッサに対して、
前記1つ以上のプロセッサによる以降のアクセスのために前記応答記述子を少なくとも1つのストレージデバイスに記憶させる、請求項8、11及び12のうちいずれか1項に記載のコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項14】
前記命令は、実行されたとき、前記少なくとも1つのプロセッサに対して、
前記逆方向操作に基づいて、変換されたデータフローを出力させ、
前記1つ以上のプロセッサ内の前記第2のプロセッサコアのインデックスに対応する前記第2のプロセッサコアの識別子を決定させ、
前記第2のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成させ、
前記1つ以上のプロセッサによる以降のアクセスのために前記応答記述子を少なくとも1つのストレージデバイスに記憶させる、請求項8に記載のコンピュータ読み取り可能ストレージデバイス又はストレージディスク。
【請求項15】
以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得するための手段と、
前記順方向操作を実行した第1のプロセッサコアを決定するための手段であり、前記データフローが前記第1のプロセッサコアの識別子を含む、手段と、
前記逆方向操作を実行するために前記データフローを第2のプロセッサコアに送信するための手段と
を含む装置。
【請求項16】
前記要求は第1の要求であり、前記第1のプロセッサコアは、
前記データフローに対して前記順方向操作を実行するための第2の要求を取得し、
周期冗長検査を利用して前記データフローの完全性を検証し、
前記周期冗長検査に基づいて、前記データフローの検証を示すための状態フラグを更新する
ように制御するための手段を含む、請求項15に記載の装置。
【請求項17】
前記第1のプロセッサコアは、
前記データフローに対して前記順方向操作を実行し、
前記順方向操作に基づいて、変換されたデータフローを出力し、
前記変換されたデータフローに対応する、前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成する
ように制御するための手段を含む、請求項15に記載の装置。
【請求項18】
前記第1のプロセッサコアは、
前記順方向操作に基づいて、変換されたデータフローを出力するための手段と、
少なくとも1つのプロセッサ内の前記第1のプロセッサコアのインデックスに対応する前記第1のプロセッサコアの識別子を決定し、前記第1のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成するための手段と
を含む、請求項15に記載の装置。
【請求項19】
前記生成するための手段は、
前記データフローの検証に基づいて状態フラグを前記応答記述子に付加し、
前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を前記応答記述子に付加する、請求項15及び18のうちいずれか1項に記載の装置。
【請求項20】
前記少なくとも1つのプロセッサによる以降のアクセスのために前記応答記述子を少なくとも1つのストレージデバイスに記憶するための手段を更に含む、請求項15、18及び19のうちいずれか1項に記載の装置。
【請求項21】
前記第2のプロセッサコアは、
前記逆方向操作に基づいて、変換されたデータフローを出力するための手段と、
少なくとも1つのプロセッサ内の前記第2のプロセッサコアのインデックスに対応する前記第2のプロセッサコアの識別子を決定し、前記第2のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成するための手段と、
少なくとも1つのプロセッサによる以降のアクセスのために前記応答記述子を少なくとも1つのストレージデバイスに記憶するための手段と
を含む、請求項15に記載の装置。
【請求項22】
以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得するためのインタフェースコントローラと、
前記順方向操作を実行した第1のプロセッサコアを決定するためのコア決定コントローラであり、前記データフローが前記第1のプロセッサコアの識別子を含み、前記逆方向操作を実行するために前記データフローを第2のプロセッサコアに送信することを決定するためのコア決定コントローラと
を含む装置。
【請求項23】
前記第1のプロセッサコアは、
前記順方向操作に基づいて、変換されたデータフローを出力するための動作コントローラと、
少なくとも1つのプロセッサ内の前記第1のプロセッサコアのインデックスに対応する前記第1のプロセッサコアの前記識別子を決定し、前記第1のプロセッサコアの前記識別子との前記変換されたデータフローの連結に基づいて応答記述子を生成するための応答コントローラと
を含む、請求項22に記載の装置。
【請求項24】
前記応答コントローラは、
前記データフローの検証に基づいて状態フラグを前記応答記述子に付加し、
前記第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を前記応答記述子に付加する、請求項22及び23のうちいずれか1項に記載の装置。
【請求項25】
前記少なくとも1つのプロセッサによる以降のアクセスのために前記応答記述子を少なくとも1つのストレージデバイスに記憶するためのメモリを更に含む、請求項22、23及び24のうちいずれか1項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、コンピューティングシステムに関し、より詳細には、コンピューティングシステムにおけるタスクの実行を制御することに関する。
【背景技術】
【0002】
近年、コンピューティングシステムは、1つよりも多くのプロセッサを含むように設計されている。このようなコンピューティングシステムは、マルチコアコンピューティングシステムと呼ばれる。マルチコアコンピューティングシステムは、複数のタスクを並列に実行し、コンピューティングシステムの効率を高め、コンピューティングシステムを最適化し、トラブルシューティングについて異なる機会を提供できる。
【図面の簡単な説明】
【0003】
図1】順方向及び逆方向機能タスクの実行を制御するためのマルチコアコンピューティングシステムの例示的な実装の図である。
図2図1のマルチコアコンピューティングシステムの例示的なコアを示すブロック図である。
図3図1のマルチコアコンピューティングシステムの例示的なリソースマネージャを示すブロック図である。
図4】暗号化要求のためのデータフロー図である。
図5】暗号化及び解読要求のためのデータフロー図である。
図6】データを処理するように図1のマルチコアコンピューティングシステムの例示的なコアを実装するために実行され得る機械読み取り可能命令を表すフローチャートである。
図7図1のマルチコアコンピューティングシステムの例示的なロードバランサを実装するために実行され得る機械読み取り可能命令を表すフローチャートである。
図8】マルチコアコンピューティングシステムを実装するために、図5及び図6の命令を実行するように構成された処理プラットフォーム例のブロック図である。
図9】消費者(例えば、ライセンス、販売及び/又は使用のため)、小売業者(例えば、販売、再販売、ライセンス及び/又はサブライセンスのため)及び/又は相手先ブランド供給(OEM, original equipment manufacturer)(例えば、小売業者又は直接購入の顧客に分配される製品に含めるため)のようなクライアントデバイスにソフトウェア(例えば、図6及び7の例示的なコンピュータ読み取り可能命令に対応するソフトウェア)を配信するための例示的なソフトウェア配信プラットフォームのブロック図である。 図面は縮尺通りではない。一般的に、図面及びこれに伴って記載される説明を通じて、同じ部分又は同様の部分を参照するために同じ参照符号が使用される。
【0004】
特に記載のない限り、「第1」、「第2」、「第3」等のような記述子は、本明細書において、優先度、物理的順序、リスト内の配置、及び/又は順番の意味を決して帰属させることなく或いは示すことなく使用され、開示の例を理解しやすくするために、要素を区別するためのラベル及び/又は任意の名称としてのみ使用される。いくつかの例では、「第1」という記述子が詳細な説明における或る要素を示すために使用されることがあるが、同じ要素は、請求項において「第2」又は「第3」のような異なる記述子で示されてもよい。このような例では、このような記述子は、例えば、別法では同じ名称を共有し得る要素を区別して識別するためにのみ使用されることが理解されるべきである。
【発明を実施するための形態】
【0005】
データ処理及びデータ転送において、現在、データは、周期冗長検査(CRC, cyclic redundancy check)によってデバイスプラットフォーム内でソフトウェアから保護されている。CRCは、生データに対する不当な変更を検出するエラー検出コードである。CRCを実行するプロセスは、受信機(例えば、データを要求するデバイスプラットフォーム)に送信する前に、送信機(例えば、デバイス、ソフトウェア、アプリケーション等)が検査値を生成して生データに追加することを含む。受信機は、データの受信に応じて検査値を生成し、2つの検査値を比較して、これらが一致するか否かを判断する。検査値が一致しない場合、データは破損していると考えられてもよい。送信機から正しいデータを取得するために、受信機はいくつかの修正措置を行ってよい。検査値が一致する場合、受信機はデータを処理及び/又は記憶する。したがって、データは、送信デバイス及び/又は送信ソフトウェアから受信デバイスへの転送中に保護される。
【0006】
しかし、デバイスプラットフォーム内でデータが保護されない可能性がある。例えば、検査値が検証されるとき(例えば検査値が一致するとき)、データは処理(例えば暗号化、解読、圧縮、解凍等)のために処理エレメントに送信され、いくつかの例では、これらの処理エレメントは欠陥がある。このように、データは、欠陥のある処理エレメントのために破損する可能性がある。デバイスプラットフォーム内のデータを保護するための従来の方法は、二重冗長系及び三重冗長系を含む。
【0007】
二重冗長系(DMR, dual modular redundancy)は、出力を比較するために、処理エンジンを複製及び/又は抽象化し、同じタスクについてデータを双方の処理エンジンにサブミットするプロセスである。例えば、二重冗長系では、2つのエンジンが同じデータを取得し、同じジョブ及び/又はタスク(例えば、暗号化、解読、高速フーリエ変換(FFT, Fast Fourier transform)等)を実行し、出力データを比較する。双方のエンジンの出力は、ジョブが成功したとみなされるために一致しなければならない。
【0008】
三重冗長系(TMR)は、タスク及び/又はジョブが2つの代わりに3つの同一の処理エンジンにサブミットされることを除いて、DMRと同様のプロセスである。TMRでは、3つの処理エンジンの出力は、2対1の投票に基づいて正しい出力を識別する(例えば、破損していないデータを識別する)多数決システムにサブミットされる。例えば、出力のうち2つが一致しており1つが一致していない場合、2つの一致している出力の値が正しい値である。出力のうち2つ以上が一致していない場合、正しい値が存在せず、ジョブは失敗と考えられる。
【0009】
これらの従来の方法では、デバイスプラットフォームがTMR及び/又はDMRを有効にするために、2~3倍のリソースが必要である。いくつかの例では、リソースは、中央処理装置(CPU, central processing unit)、ランダムアクセスメモリ(RAM, random-access memory)、キャッシュ空間、ネットワークスループット、電力、入出力操作、ダイレクトメモリアクセス(DMA, direct memory access)チャネル、外部メモリ等を含む。これらの余分なリソースは、デバイスプラットフォームのための部品表(BOM, bill of material)コストを増加させ、さらに、データ転送を処理するのに要する処理時間を増加させる。
【0010】
本明細書に開示される例は、単一パスフローを利用してデバイスプラットフォーム内のデータを検証する(例えば、データは一回処理される)。本明細書に開示される例は、特に、パケット処理(例えば、ネットワークパケットの分析及び記憶)及びそのエンドツーエンド段階を対象とする。例えば、パケット処理では、デバイスは、ネットワークからデータパケットを取得し、暗号化、記憶、解読及び送信の段階を経る。このような例では、本明細書に開示される例は、どのエレメントがデータに対してタスクを実行しているかを追跡することに基づいて、データ処理(例えば、暗号化及び/又は解読段階)において生じる、サイレントなデータ破損エラーを検出する。しかし、本明細書に開示される例は、パケット処理に限定されない。例えば、本明細書に開示される例は、無線信号処理システム、データ圧縮システム等によって実現できる。
【0011】
本明細書に開示される例は、処理されたデータのソース(例えば、コア、エンジン、エレメント、エンティティ等)を識別し、処理されたデータにソースに対応する識別子でタグを付ける応答コントローラを含む。これは、ロードバランサのようなワークロードコントローラーがデータに対する逆方向処理操作のために異なる処理エンティティが使用されることを確保することを可能にする。本明細書に開示される例は、順方向及び逆方向操作の双方を実行する欠陥のあるプロセッサによって引き起こされる可能性のある二重エラーを軽減する。二重エラーは、同じ欠陥のあるエンティティがデータを生成して検証するために使用される場合に生じる可能性があり、その結果、正しくない検証検査を生じる。
【0012】
図1は、順方向及び逆方向機能タスクの実行を制御するために、例示的なネットワーク102に結合された例示的なマルチコアコンピューティングシステム100の例示的な実装の図である。例示的なマルチコアコンピューティングシステム100は、例示的なプロセッサ101と、例示的なメインメモリ104と、例示的なネットワークインタフェースカード106と、例示的なアプリケーション(例えば、ファームウェア及び/又はソフトウェアアプリケーション)108とを含む。例示的なプロセッサ101は、例示的な第1のコア110と、例示的な第2のコア112と、例示的な第3のコア114と、例示的な第4のコア116と、例示的なロードバランサ118と、例示的なリソースマネージャ122とを含む。
【0013】
図1において、例示的なマルチコアコンピューティングシステム100は、分散ユニット(DU, distributed unit)、集中ユニット(CU, centralized unit)及び/又はコアデバイスを実装できる。本明細書に開示される例では、DU及び/又はCUは、ネットワーク102を通じて異なる宛先(例えば、5Gデバイス環境、コアネットワーク等)へのデータフロー(例えば、通信フロー、パケットフロー、1つ以上のデータパケットのフロー等)の分配を行うことができる、マルチコアエッジサーバのようなエッジサーバ(例えば、5Gエッジサーバ)である。本明細書に開示される例において、コアデバイスは、マルチコアサーバ(例えば、物理サーバ、仮想サーバ等、及び/又はこれらの組み合わせ)である。さらに及び/又は代替として、コアデバイスは、いずれかのタイプのコンピューティングデバイスでもよい。いくつかの例では、マルチコアコンピューティングシステム100は、無線環境において、すなわち、無線ネットワーク(例えば、ネットワーク102)を使用したコンピューティングタスクの実行を容易にするための無線環境において、コンピューティングデバイスを実装できる。
【0014】
図1において、例示的なマルチコアコンピューティングシステム100は、1つ以上のコンピューティングタスクを実行するための例示的なプロセッサ101を含む。例えば、プロセッサ101は、データフロー120を介してネットワーク102から取得されたデータに基づいてタスクを実行するコア110、112、114及び116を含む。いくつかの例では、コア110、112、114、116は、ネットワーク102から取得されたデータに対して順方向及び逆方向タスクを実行する。例えば、順方向タスクは、暗号化、圧縮、FFT、及び/又は対応する逆方向タスク/ジョブを含むいずれかの他のタスク/ジョブを含む。逆方向タスクは、解読、解凍、逆FFT、及び/又は前のタスク/ジョブを逆にするいずれかの他のタスク/ジョブを含む。本明細書に開示されるいくつかの例では、コア110、112、114、116はデータを暗号化する。例えば、コア110、112、114、116は、データをメインメモリ104に安全に記憶するために暗号化アルゴリズムを実装する。他の例では、コア110、112、114、116はデータを解読する。例えば、コア110、112、114、116は、カウンタモード(CTR, counter mode)解読のような解読アルゴリズム及び/又は解読方法を実装する。いくつかの例では、コア110、112、114、116のいくつかは、データを暗号化し、データを解読する。例えば、コア110、112、114、116のいずれかは、データを暗号化及び/又は解読するために使用できる。
【0015】
図1において、コア110、112、114、116は、クラスタ内にあってもよい。例えば、第1のコア110及び第2のコア112は、第1のクラスタに含まれ、第3のコア114及び第4のコア116は、第2のクラスタに含まれる。本明細書に開示される例では、クラスタは、緩やかに接続されたプロセッサコア又は密接に接続されたプロセッサコアのセットであり、これらは、単一の処理システムとしてみなされることができるように協働する。マルチコアコンピューティングシステム(例えば、図1のマルチコアコンピューティングシステム100等)では、複数のコアが、データの処理を高速化するために使用される。例えば、ジョブを迅速に完了するために、かなりの量の処理を必要とする大きいデータフローは、複数のコア110、112、114、116の間に分割できる。本明細書に開示される例では、マルチコアコンピューティングシステム100は、複数のコア110、112、114、116を含み、処理時間を高速化するだけでなく、順方向タスク(例えば、暗号化、圧縮等)を実行するコアとは異なるコアが逆方向タスク(例えば、解読、解凍等)を実行することを確保する。したがって、コア110、112、114、116は、データがどのように処理されたかをエンティティ(例えば、他のコア、NIC106、アプリケーション108、ロードバランサ118等)に通知する、応答記述子及び要求記述子のような記述子を生成するコントローラを含む。例示的なコア110、112、114、116について、図2に関して以下に更に詳細に説明する。
【0016】
図1において、例示的なマルチコアコンピューティングシステム100は、データフロー120に対応するデータを記憶するための例示的なメインメモリ104を含む。いくつかの例では、コア110、112、114、116は、データをメインメモリ104に記憶する。いくつかの例では、NIC106は、データをメインメモリ104に記憶する。いくつかの例では、アプリケーション108は、データをメインメモリ104に記憶する。いくつかの例では、メインメモリ104は、プロセッサ101に通信的に結合される。他の例では、メインメモリ104は、配線接続を介してプロセッサ101に直接結合される。このように、例示的なプロセッサ101は、例示的なメインメモリ104に記憶されたデータにアクセスできる。
【0017】
図1において、例示的なマルチコアコンピューティングシステム100は、データフロー120からデータパケットを受信するための例示的なNIC106を含む。いくつかの例では、NIC106は、受信側スケーリング(RSS, receive side scaling)を介してランダムにパケットをスプレーすることができ、それにより、コア110、112、114、116、及び/又はより一般的には、コア110、112、114、116を含むプロセッサ101に関連する帯域幅を低減する。他の例では、NIC106は、データパケットに関連する情報に基づいて、データフロー120のデータパケットをコア110、112、114、116のうち単一のものに分配できる。例えば、NIC106は、どのコア110、112、114、116がデータパケットを処理するのかを決定するために、データパケット記述子内の情報を検出してもよく及び/又は読み取ってもよい。
【0018】
いくつかの例では、アプリケーション108は、NIC106のうち第1のものを介して、データフロー120を入力122からプロセッサ101に導く。いくつかの例では、コア110、112、114、116、及び/又はより一般的にはプロセッサ101は、NIC106のうち第2のもの及び/又はアプリケーション108を介して、処理されたデータパケットを出力124に送信できる。NIC106の2つのインスタンスが図1に示されているが、代替として、2つのインスタンスは単一のインスタンスに組み合わされてもよく、及び/又は、異なる数のNIC106が使用されてもよい。
【0019】
図1において、例示的なマルチコアコンピューティングシステム100は、例示的なデータフロー120を指示、管理等する例示的なアプリケーション108を含む。いくつかの例では、アプリケーション108は、暗号化及び圧縮タスクのような、データフロー120内のデータパケットに対する処理タスクを実行する。いくつかの例では、アプリケーション108は、ネットワーク102を介してアプリケーションプログラミングインタフェース(API, application programming interface)と通信する。いくつかの例では、アプリケーション108は、コア110、112、114、116のうちどれがデータフロー120に関連するタスクを実行するかを決定する。例えば、アプリケーション108に関連する特定のタスクは、指定のアクセラレータ(例えば、FPGA、GPU、暗号アクセラレータ)上でより速く及び/又はより効率的に実行してもよく、アプリケーション108は特定のタスクをこの指定のアクセラレータに割り当てる。いくつかの例では、アプリケーション108は、データフロー120が導かれるべきコア(例えば、コア110、112、114、116のうち1つ)を示すために、コア識別子(ID, identifier)でデータフロー120をラベル付け(例えば、連結、付加等)する。
【0020】
図1において、例示的なプロセッサ101は、マルチコアコンピューティングシステム100内に、ロードバランシング及びワークロード分配を改善するための例示的なロードバランサ118を含む。いくつかの例では、ロードバランサ118は、クラスタ可用性(例えば、クラスタに関連する利用可能なリソース)に基づいて、データフロー120をコア110、112、114、116のクラスタのうち特定のクラスタに分配する。例示的なロードバランサ118は、スケジューリングタイプ(例えば、アトミックスケジューリング、順序スケジューリング等)に基づいて、データフロー120を1つ以上のコア110、112、114、116に分配し、1つ以上のコア110、112、114、116から処理されたデータフロー120を受信し、異なるハードウェア、異なる論理エンティティ等への分配及び/又は送信の準備として、処理されたデータフロー120を再順序付け及び/又は集約できる。
【0021】
図1において、プロセッサ101は、データフロー120をクラスタ内のコアのうち1つに導くために、例示的なリソースマネージャ122a及び122b、合わせてリソースマネージャ122を含む。図1において、例示的な第1のリソースマネージャ122aは、第1のコア110及び第2のコア112を包含する及び/又は含む第1のクラスタを管理する。図1において、例示的な第2のリソースマネージャ122bは、第3のコア114及び第4のコア116を包含する及び/又は含む第2のクラスタを管理する。例示的なリソースマネージャ122は、例示的なロードバランサ118からのデータフロー120の受信に応じて、クラスタ内のどのコアがデータフロー120を処理するかを決定する。例えば、リソースマネージャ122は、データフロー120に関連するコア識別子(ID)に基づいて、データフロー120を特定のコアに分配する。例えば、リソースマネージャ122は、データフロー120のデータパケットに連結及び/又は付加された記述子を読み取ってもよく及び/又は分析してもよい。例示的なリソースマネージャ122について、図3に関して以下に更に詳細に説明する。
【0022】
いくつかの例では、リソースマネージャ122は、分配及び/又は管理のための例示的な手段を実装する。分配及び/又は管理のための手段は、少なくとも図7のブロック702、704、706、708及び710によって実装されるもののような実行可能命令によって実装される。図7のブロック702、704、706、708及び710の実行可能命令は、図8の例示的なプロセッサ812のような少なくとも1つのプロセッサで実行されてもよい。他の例では、分配及び/又は管理のための手段は、ハードウェアロジック、ハードウェア実装状態マシン、論理回路、及び/又はハードウェア、ソフトウェア及び/又はファームウェアのいずれかの他の組み合わせによって実装される。
【0023】
図2を参照すると、例示的なコア200のブロック図が示されている。例示的なコア200は、図1のクラスタ内のコア110、112、114、116のいずれかを実装できる。例示的なコア200は、例示的な動作コントローラ202と、例示的な応答コントローラ204と、例示的なメモリ206とを含む。
【0024】
図2において、例示的なコア200は、データフロー(例えば、図1のデータフロー120)に対して動作を実行するための例示的な動作コントローラ202を含む。例示的な動作コントローラ202は、圧縮及び解凍、暗号化及び解読、FFT及び逆FFT等のような順方向及び逆方向計算機能を実装する。例えば、動作コントローラ202は、特定のコンピューティング機能に基づいてデータフローを変換する。本明細書に開示される例では、動作コントローラ202はCRC技術を実装する。例えば、動作コントローラは、データフロー120内のデータパケットに対して完全性検査を検証する。このように、ネットワーク(例えば、図1のネットワーク102)又はアプリケーション(例えば、図1のアプリケーション108)から来るデータパケットが、いずれかのタイプの破損からコア200を保護するために分析及び検証される。さらに、アプリケーション(例えば、図1のアプリケーション108)又はネットワーク(例えば、図1のネットワーク102)に対してコア200から来るパケットが、データ及びアプリケーション及び/又はネットワークを保護するために分析及び検証される。例示的な動作コントローラ202は、例示的な応答コントローラ204、例示的なメモリ206、例示的なリソースマネージャ(例えば、図1の第1のリソースマネージャ122a及び/又は第2のリソースマネージャ122b)、ロードバランサ(例えば、図1のロードバランサ118)、1つ以上のNIC(例えば、図1のNIC106)及び1つ以上のアプリケーション(例えば、図1のアプリケーション108)と通信する。
【0025】
いくつかの例では、動作コントローラ202は、動作を制御するため及び/又はコア動作を制御するための例示的な手段を実装する。動作を制御するため及び/又はコア動作を制御するための手段は、少なくとも図6のブロック602、604、606、608、610、614及び620によって実装されるもののような実行可能命令によって実装される。図6の602、604、606、608、610、614、620及び622の実行可能命令は、図8の例示的なプロセッサ812のような少なくとも1つのプロセッサで実行されてもよい。他の例では、動作を制御するため及び/又はコア動作を制御するための手段は、ハードウェアロジック、ハードウェア実装状態マシン、論理回路、及び/又はハードウェア、ソフトウェア及び/又はファームウェアのいずれかの他の組み合わせによって実装される。
【0026】
図2において、例示的なコア200は、応答記述子の生成を制御するための例示的な応答コントローラ204を含む。本明細書において使用される記述子は、データ(例えば、データパケット、データフロー等)がどのように要求側で処理される(例えば、図1のアプリケーション108によって処理される)か又はこれがどのように応答側のデバイス(例えば、コア200)によって処理されたかを記述する情報である。いくつかの例では、要求側は応答側に要求記述子を提供する。例えば、応答側に対してデータフロー(例えば、図1のデータフロー120)を暗号化することを望むアプリケーションに対応する要求記述子は、平文、暗号化鍵、アルゴリズム、構成、暗号化に使用されるコアID、バッファアドレス(例えば、入力、出力)等のような情報を含む。いくつかの例では、応答側は、要求を実行するいずれかのソフトウェア、ファームウェア及び/又はハードウェアを含む。例えば、暗号化及び/又は解読を実行するコア(例えば、コア200)に対応する応答記述子は、暗号文/平文、完全性検査状態フラグ(例えば、成功、失敗、例外等)、コアID等のような情報を含む。
【0027】
例示的な応答コントローラ204は、動作コントローラ202及び/又はメモリ206から、データがどのように処理されるかに対応する情報を取得する。いくつかの例では、応答コントローラ204は、処理情報の全てを含むデータ列を生成する。他の例では、応答コントローラ204は、ビットの配列を生成し、各ビットはデータのタイプ(例えば、暗号化鍵、状態フラグ、コアID、構成、アルゴリズム等)に対応する。いくつかの例では、応答コントローラ204は、ビットの配列を、平文(例えば、未処理の入力データ及び/又は解読データ)、(例えば、暗号化アルゴリズムの暗号化データ及び/又は読めない出力)及び/又はいずれかの他のタイプの処理されたデータに連結、付加、結合等する。
【0028】
いくつかの例では、応答コントローラ204は、記述子をNIC(例えば、図1のNIC106のうち1つ)、アプリケーション(例えば、図1のアプリケーション108)、ネットワーク(例えば、図1のネットワーク102)及び/又はメモリ(例えば、メモリ206、図1のメインメモリ104等)に送信する。いくつかの例では、図1のアプリケーション108は、データフロー120に基づいて記述子のフローを導く。他の例では、図1のロードバランサ118は、記述子のフローを導く。
【0029】
いくつかの例では、応答コントローラ204は、応答記述子の生成を制御するための例示的な手段を実装する。応答記述子の生成を制御するための手段は、少なくとも図6のブロック612、616及び618によって実装されるもののような実行可能命令によって実装される。図6の612、616及び618の実行可能命令は、図8の例示的なプロセッサ812のような少なくとも1つのプロセッサで実行されてもよい。他の例では、応答記述子の生成を制御するための手段は、ハードウェアロジック、ハードウェア実装状態マシン、論理回路、及び/又はハードウェア、ソフトウェア及び/又はファームウェアのいずれかの他の組み合わせによって実装される。
【0030】
図2において、コア200は、動作コントローラ202及び応答コントローラ204に入力及び出力されるデータを記憶するための例示的なメモリ206を含む。例えば、メモリ206は、アプリケーション(例えば、図1のアプリケーション108)によってサブミットされた圧縮及び/又は暗号化されたデータを記憶する。本明細書に開示される例では、メモリ206は、キャッシュによって実装される。他の例では、メモリ206は、磁気コアメモリ、システムメモリ、コンピューティングシステムのメインメモリ(例えば、図1のマルチコアコンピューティングシステム100のメインメモリ104)及び/又はいずれかの他のタイプのメモリによって実装される。例示的なメモリ206は、図1のマルチコアプロセッサ101内のいずれかのコア、図1の例示的なリソースマネージャ122、図1の例示的なロードバランサ118、図1の例示的なアプリケーション108、図1の例示的なNIC106及び/又は図1の例示的なメインメモリ104によってアクセスされてもよい。
【0031】
図3を参照すると、例示的なリソースマネージャ300のブロック図が示されている。例示的なリソースマネージャ300は、図1のリソースマネージャ122a、122bのうちいずれかを実装できる。例示的なリソースマネージャ300は、例示的なインタフェースコントローラ302と、例示的なコア決定コントローラ304とを含む。
【0032】
図3において、例示的なリソースマネージャ300は、データフロー(例えば、図1のデータフロー120)に対する動作を実行するための要求を取得するための例示的なインタフェースコントローラ302を含む。いくつかの例では、インタフェースコントローラ302は、異なる処理エレメント(例えば、プロセッサコア、ロードバランサ等)に対するデータ及び/又は命令を受信及び送信する通信コントローラである。いくつかの例では、インタフェースコントローラ302は、データフローを分析するための要求をコア決定コントローラ304に送信する。いくつかの例では、インタフェースコントローラ302、及び/又はより一般的にはリソースマネージャ300は、対応するコア(例えば、リソースマネージャ300によって管理されるコア)が、応答記述子内のコアIDによって出力データ(例えば、変換されたデータ)を更新することを可能にする。例えば、インタフェースコントローラ302は、変換されたデータ及びコアIDを含む応答記述子について対応するコアを照会してもよい。
【0033】
いくつかの例では、インタフェースコントローラ302は、データ要求を取得して送信するための例示的な手段を実装する。データ要求を取得して送信するための手段は、少なくとも図7のブロック702、708及び710によって実装されるもののような実行可能命令によって実装される。図7の702、708及び710の実行可能命令は、図8の例示的なプロセッサ812のような少なくとも1つのプロセッサで実行されてもよい。他の例では、データ要求を取得して送信するための手段は、ハードウェアロジック、ハードウェア実装状態マシン、論理回路、及び/又はハードウェア、ソフトウェア及び/又はファームウェアのいずれかの他の組み合わせによって実装される。
【0034】
図3において、リソースマネージャ300は、データフローにおいて要求される動作のタイプを決定し、どの処理コア識別子が動作を実行するかを定義するための例示的なコア決定コントローラ304を含む。例示的なコア決定コントローラ304は、データフロー内のデータが順方向に処理されたか否かを判断する。例えば、コア決定コントローラ304は、要求記述子が解読のための暗号文、解凍のための圧縮データ等を含むか否かを識別する。
【0035】
いくつかの例では、コア決定コントローラ304が、データフロー内のデータが順方向処理された場合、コア決定コントローラ304は、データフローを順方向処理コアとは異なるコアに送信する。例えば、コア決定コントローラ304は、インタフェースコントローラ302で取得された要求に対応する応答記述子を分析し、順方向操作を実行するために使用されるコアを識別する。いくつかの例では、コア決定コントローラ304は、応答記述子内のコアIDに基づいて順方向操作を実行するために使用されるコアを識別できる。例示的なコア決定コントローラ304は、要求に対応する応答記述子内のコアIDとは異なるコアIDを選択して、要求の動作を実行する。コア決定コントローラ304は、順方向処理されたデータについて要求を分析することに限定されない。コア決定コントローラ304は、クラスタ内のどのコアがデータフローを送信するかについて決定するために実行されるべきデータのタイプ及び動作のタイプについて、要求を継続して分析する。いくつかの例では、コア決定コントローラ304は、選択されたコアをインタフェースコントローラ302に通知する。
【0036】
いくつかの例では、コア決定コントローラ304は、処理のためのコアを決定するための例示的な手段を実装する。処理のためのコアを決定するための手段は、少なくとも図7のブロック704及び706によって実装されるもののような実行可能命令によって実装される。図7の実行可能命令704及び706は、図8の例示的なプロセッサ812のような少なくとも1つのプロセッサで実行されてもよい。他の例では、処理のためのコアを決定するための手段は、ハードウェアロジック、ハードウェア実装状態マシン、論理回路、及び/又はハードウェア、ソフトウェア及び/又はファームウェアのいずれかの他の組み合わせによって実装される。
【0037】
図1に戻り、データフロー120を暗号化及び解読するための図2のマルチコアコンピューティングシステム100の実装の例示的な動作について説明する。例示的な動作では、アプリケーション108は、データフロー120のデータを安全に記憶するために(例えば、データフローを暗号化する)ために、NIC106のうち第1のものを介して要求をプロセッサ101に送信する。例示的なアプリケーション108は、処理情報(例えば、要求記述子)を要求に含める。例えば、アプリケーション108は、処理、鍵、構成等のために、所望のコア(例えば、コア110のうち第1のもの)を識別する。
【0038】
例示的な動作では、ロードバランサ118は、要求を取得し、データフロー120をどこに導くかを決定する。例えば、ロードバランサ118は、クラスタのリソース可用性についてリソースマネージャ122に照会してもよい。いくつかの例では、所望の処理コア(例えば、コア110のうち第1のもの)を含むクラスタが利用不可能である場合、ロードバランサ118は、利用不可能なクラスタ(例えば、コア110のうち第1のものを含む第1のクラスタ)から異なるクラスタ(例えば、コア114、116のうち第3又は第4のもの)に、データをキューに入れる(例えば、キューエレメントのようなエレメントをキューに追加及び/又は配置する)。例えば、ロードバランサ118は、データフロー120を暗号化するために利用可能なクラスタ(例えば、適切な量のコンピューティングリソースを含む)にデータフロー120を導く。いくつかの例では、クラスタは、その1つ以上のコアが異なるデータフローを処理しているとき、クラスタがデータフロー120のサイズを処理するのに十分なリソースを有していないとき、クラスタがデータフロー120に対する要求を実行する計算能力を含まないとき等、利用不可能でもよい。
【0039】
例示的な動作では、所望の第1のリソースマネージャ122aは、(例えば、第1のクラスタが利用可能であるとき)データフロー120を取得し、クラスタ内のどのコア(110、112)がデータフロー120を処理できるかを決定する。いくつかの例では、第1のリソースマネージャ122aは、データフロー120に対応する要求記述子に基づいて、どのコア(110、112)かを決定する。他の例では、第1のリソースマネージャ122aは、コア可用性に基づいて、どのコア(110、112)かを決定する。例示的な第1のリソースマネージャ122aは、データフロー120を所望の処理コア及び/又は利用可能な処理コア(例えば、第1のコア110)に送信する。所望の処理コア(例えば、コア110)は、第1のリソースマネージャ122aからデータフロー120及び処理情報を取得する。いくつかの例では、第1のコア110は、暗号化タスクを実行するために、データフローに対応する要求記述子を利用する(例えば、鍵及び構成を利用する)。
【0040】
例示的な動作では、コア110は、データフロー120の完全性検査を実行する。例えば、コア110は、CRC値及び/又は完全性検査値を生成し、これをデータフロー120に含まれるCRC値と比較する。「CRC値」及び「完全性検査値」という用語は等価であり、本明細書において互換的に使用できる。2つのCRC値の間の比較が一致したことに応じて、コア110は、データフロー120内のデータを暗号化する。例えば、データは正常に検証され、コア110は、データを暗号化及び/又は符号化するために、カウンタモードで高度暗号化標準(AES, Advanced Encryption Standard)を実施する。AESカウンタモードでは、コア110は平文データをカウンタ値(例えば、AESカウンタ)でXORして暗号文を生成する。コア110は、データフロー120の暗号化に応じてCRC値を生成する。
【0041】
例示的な動作では、コア110は、暗号文、コアID、CRC値及びCRC状態に基づいて応答記述子を生成する。例えば、コア110は、符号化されたデータを、コアID、CRC値及び「成功」状態と連結して、応答記述子を生成する。いくつかの例では、コア110は、メインメモリ104のようなメモリに応答記述子を記憶する。他の例では、コア110は、NIC106のうち第2のものを介して応答記述子をアプリケーション108にサブミットする。
【0042】
例示的な動作では、アプリケーション108は、ストレージからデータを取り出すために、NIC106のうち第1のものを介して要求をプロセッサ101にサブミットする。例えば、アプリケーション108は、データフロー120を解読するための要求を実現する。いくつかの例では、アプリケーション108は、要求に対応する応答記述子を取り出す。例えば、アプリケーション108は、暗号文、及び暗号化されたデータフロー120に対応する処理情報を取得するためのメモリクエリを実現する。いくつかの例では、アプリケーション108は、NIC106のうち1つを介して、メインメモリ104からの暗号化されたデータフロー120にアクセスする。
【0043】
例示的な動作では、ロードバランサ118は、NIC106のうち1つから要求及び応答記述子を取得する。例示的なロードバランサ118は、クラスタ可用性、要求及び応答記述子内の情報、データフロー120のサイズ等に基づいて、どのクラスタに対してデータフロー120をキューに入れるかを決定する。例示的な動作では、ロードバランサ118は、第1のクラスタ(第1のコア110及び第2のコア112を含む)においてデータフロー120をキューに入れることを決定する。
【0044】
例示的な第1のリソースマネージャ122aは、データフロー120を取得する。例示的な第1のリソースマネージャ122aは、データフロー120に対応する応答記述子を分析し、データフロー120をキューに入れるための適切なコアを決定する。いくつかの例では、リソースマネージャ122は、以前に使用されていないコアに対してデータフロー120をキューに入れるように訓練される。例えば、第1のリソースマネージャ122aは、コア110のうち第1のものがデータフロー120に対して順方向タスク(例えば、暗号化)を実行したので、コア112のうち第2のものに対してデータフロー120をキューに入れる。例示的なリソースマネージャ122は、欠陥のあるコアを検出及び/又は識別するために、順方向及び逆方向タスクのために異なる処理コアをキューに入れる。例えば、異なるコアで逆方向タスクを実行することは、偽陽性シナリオの可能性を除去する。偽陽性シナリオは、カウンタモードにおけるAESの間に生じる可能性がある。例えば、第1のコア110が誤ったカウンタ値を生成している場合、データフロー120の解読段階は、暗号化中に使用されるのと同じ誤ったカウンタ値で解読され、したがって、プロセッサ101は、コア110が誤ったカウンタ値を生成していることを検出しない。しかし、異なるコアが誤ったカウンタ値で暗号化されたデータフロー120を取得する場合、異なるコアは、正しいカウンタ値でデータフロー120を解読することを試み、平文は暗号化前のデータフロー120の元の平文ではないので、最終的なCRC検査は失敗する。アプリケーション108のためのデータが保護されていない唯一の時間は、データが変換(例えば、処理)されるときの処理コア(例えば、コア110、112、114、116のうち1つ)の内部である。コア110、112、114、116のうち1つの中でエラーが発生した場合(例えば、プロセスの劣化(永久的)、SERイベント(時間的)等による)、エラーは自動的に出力CRC計算に含まれ、エラーはCRCフロー内で検出されない。
【0045】
例示的な動作では、例示的な第1のリソースマネージャ122aは、応答記述子(例えば、コア110のうち第1のものに対応し且つ応答記述子においてタグ付けされたコアID)及びコア可用性に基づいて、コア112のうち第2のものに対して暗号化されたデータフロー120をキューに入れる。
【0046】
コア112のうち第2のものは、要求及びデータフロー120を取得し、完全性検査を検証する。例えば、第2のコア112は、CRC値を生成し、CRC値をデータフロー120に含まれるCRC値と比較する。比較に応じて、第2のコア112は、検証が成功したか否かを示すように状態フラグを更新する。いくつかの例では、検証が成功した場合、第2のコア112は、データを解読し続ける。他の例では、検証に失敗した場合、第2のコア112は、データフロー120の暗号文、失敗状況及び第2のコア112の識別子を含む応答記述子を生成する。このように、例示的なロードバランサ118、リソースマネージャ122及び/又は例示的なアプリケーション108は、応答記述子に基づいて更なるトラブルシューティングが必要であることを決定できる。
【0047】
例示的な動作では、第2のコア112は、検証の成功に応じて、データフロー120を解読する。いくつかの例では、第2のコア112に欠陥がある場合、誤ったカウンタ値がデータフロー120を解読するために使用される可能性がある。このように、最終的なCRC検証の間に、第2のコア112は、異なる処理エンティティが平文に対するCRC失敗を観測することを可能にし、エラーが検出される。他の例では、第1のコア110が誤った暗号化を実行し、第2のコア112が意図した解読を実行する場合、第2のコア112は、異なる処理エンティティが平文に対するCRC失敗を観測することを可能にし、エラーが検出される。
【0048】
例示的な動作では、逆方向タスク(例えば、解読タスク)を実行するコアのいずれかが失敗を観測した場合、例示的なロードバランサ118、例示的なリソースマネージャ122及び/又は例示的なアプリケーション108は、データを回復するために移動させる(例えば、データを正しく解読する方法をトラブルシューティングする)ことができ、また、他のデータフローを汚染しないように、欠陥のあるコアを計算リソースから隔離することができる。いくつかの例では、リソースマネージャ122は、データを回復するために、欠陥のあるデータを、順方向タスクを実行したコアに送り返してもよい。いくつかの例では、アプリケーション108及び/又はロードバランサ118は、欠陥のあるコアをオペレータ、システムマネージャ等に通知して、コアをマルチコアコンピューティングシステム100からオフロード及び/又は無効にすることができる。いくつかの例では、欠陥のあるコアがオフロード及び/又は無効化された場合、コアはシステム診断テストを通過できる。
【0049】
処理コア110、112、114、116内に応答コントローラ(例えば、図2の応答コントローラ204)を実装し、順方向及び逆方向タスクのための異なるコアを選択するようにリソースマネージャ122を訓練することの利点は、マルチコアコンピューティングシステム100内でエンドツーエンドのデータ完全性を達成することを含む。本明細書に開示される例は、システム内で識別及び隔離されるべきマルチコアコンピューティングシステム100内の欠陥のある処理エンティティのリアルタイム検出を可能にする。
【0050】
図4は、暗号化要求のためのデータフロー図400である。例示的なデータフロー図400は、例示的な暗号エンジン401を含む。例示的な暗号エンジン401は、暗号化及び/又は解読動作を実行するように設計されたモジュール(例えば、プロセッサ)である。図4において、例示的な暗号エンジン401は、保護されていない処理コアである。例えば、暗号エンジン401は、コアIDタグ付けによる応答コントローラを含まないか或いは実装せず、したがって、処理段階でデータに生じたサイレントな欠陥を検出できない。
【0051】
図4において、アプリケーション(例えば、ソフトウェア及び/又はファームウェア)は、暗号化されるべき平文及び鍵を例示的な暗号エンジン401にサブミットする。サブミットは、第1のステップ402、第2のステップ404、第3のステップ406及び第4のステップ408を含むいくつかのステップを経る。ステップ402、404、406及び408のそれぞれは、サブミットにおけるデータ(例えば、平文、鍵、暗号文等)の検証に対応する。
【0052】
例示的なデータフロー図400では、アプリケーションは、第1のステップ402において平文及び鍵のCRC値を生成する。例えば、アプリケーションは平文内のデータに基づいてCRC値を生成できる。アプリケーションは、ネットワークを介してデータ(例えば、平文、鍵及びCRC値)を例示的な暗号エンジン401に送信する。データの送信は、エンジン401への入力時のCRC検証によって保護される。例えば、第2のステップ404において、暗号エンジン401は、データを検証するために完全性検査を実行する。いくつかの例では、暗号エンジン401はCRC値を生成し、CRC値をアプリケーションによって生成されたCRC値と比較する。比較が一致を示す場合、例示的な暗号エンジン401は、平文及び鍵にアクセスすることができる。
【0053】
例示的なデータフロー図400において、アプリケーションは、第3のステップ406において鍵を使用して平文を暗号化し、CRC値を生成する。例えば、暗号エンジン401は、出力暗号文に基づいてCRC値を生成する。例示的な暗号エンジン401は、ネットワークを介して暗号文及びCRC値をアプリケーションに送り返すことによって、アプリケーションのサブミットに応答する。応答経路は、暗号エンジン401の出力で生成されたCRCによって保護される。
【0054】
例えば、第4のステップ408において、アプリケーションは、データにアクセスできるようになる前にデータを検証するために完全性検査を実行する。第4のステップ408において、アプリケーションは、データの完全性を検証できるが、アプリケーションは、データの暗号化中に生じた可能性のある何らかのエラーに気付かない可能性がある。何らかのエラーが発生した場合、例示的な暗号エンジン401がコアIDでデータにタグ付けしていないので、アプリケーションは、どのようにトラブルシューティングするかを認識しない。
【0055】
図5は、暗号化及び解読要求のためのデータフロー図500である。図5は、例示的なアプリケーション501と、例示的な第1のコア503と、例示的な第2のコア505と、例示的なストレージディスク507とを含む。図1において、例示的な第1のコア503及び第2のコア505は、暗号エンジンである。例示的な第1のコア503及び例示的な第2のコア505は、コア識別子を有する応答記述子を生成するために、例示的な応答コントローラ(例えば、図2の応答コントローラ204)を実装する。図5において、例示的な第1のコア503は、ID0に関連付けられ、例示的な第2のコア505は、ID1に関連付けられる。図5において、例示的なアプリケーション501は、個人情報(例えば、社会保障番号、クレジットカード情報等のようなユーザ情報)を記憶するように設計されたソフトウェア及び/又はファームウェアである。
【0056】
図5において、例示的なアプリケーション501は、暗号化されるべき平文及び鍵を例示的な第1のコア503にサブミットする。第1のサブミットは、第1のステップ502、第2のステップ504、第3のステップ506及び第4のステップ508を含むいくつかのステップを経る。図5において、例示的なアプリケーション501は、解読されるべき暗号文を例示的な第2のコア505にサブミットする。第2のサブミットは、第5のステップ510、第6のステップ512及び第7のステップ514を含むいくつかのステップを経る。
【0057】
データフロー図500の例示的な動作では、アプリケーション501は、ステップ502において、平文及び鍵に基づいて第1のCRC値を生成する。第1のCRC値は、平文及び鍵と共に、例示的な第1のコア503に送信される。第2のステップ504において、いくつかの例では、例示的な第1のコア503は、平文及び鍵にアクセスする前にデータを検証するために完全性検査を実行する。
【0058】
例示的なアプリケーション501によってサブミットされたデータの検証に応じて、例示的な第1のコア503は、鍵で平文を暗号化する。例えば、第1のコア503は暗号文を生成する。図5において、第1のコア503は、欠陥のあるコアであり、したがって、暗号文の生成中にエラーが発生する。いくつかの例では、暗号文を生成するために、平文を誤った鍵でXORすることによってエラーが引き起こされる。しかし、アプリケーション501によってサブミットされたデータの処理中に、何らかのタイプのエラーも存在し得る。
【0059】
例示的な第3のステップ506において、第1のコア503は、暗号文に基づいてCRC値を生成する。いくつかの例では、CRC値は欠陥のある暗号文を保護する。例示的な第4のステップ508において、第1のコア503は、応答記述子を生成する。応答記述子は、他の情報及びデータの中でも、コアID0、CRC値及び暗号文を含む。
【0060】
データフロー図500の例示的な動作では、例示的なアプリケーション501は、第1のコア503からの出力に応じて応答記述子を取得して記憶する。例えば、アプリケーション501は、ユーザが応答記述子内のデータを要求するまで、応答記述子がシステムメモリに記憶されるように促進及び/又は指示してもよい。
【0061】
このように、例示的なアプリケーション501は、ユーザが記憶されたデータを要求することに応じて、第2の要求をサブミットする。例えば、ユーザは、システムメモリに安全に記憶された個人情報を要求する。いくつかの例では、アプリケーション501は、第2の要求をロードバランサ(図示しないハードウェア)にサブミットする。このような例では、ロードバランサは、解読のためにどこにデータを導くかを決定する。例えば、ロードバランサは、データに対応する応答記述子を分析し、どのコアがデータを以前に処理したかを決定する。このように、ロードバランサは、第2のコア505を選択して、応答記述子においてタグ付けされたコアID0に基づいてデータを解読する。
【0062】
例示的なデータフロー図500において、例示的な第2のコア505は、第5のステップ510においてデータを取得し、完全性検査を実行する。例示的な第2のコア505は、データの検証の成功に応じて、データにアクセスして解読する。例示的な第2のコア505は、欠陥のある平文(例えば、アプリケーション501によってサブミットされた元の平文と一致しない平文)を出力してもよい。例えば、第2のコア505は、正しい鍵でデータを解読することを試みるが、データは第1のコア503において誤った鍵で暗号化されている。したがって、第2のコア505の平文出力は、データフロー図500の最初のステップにおけるアプリケーション501の平文出力と一致しない可能性がある。
【0063】
例示的なデータフロー図500において、例示的な第2のコア505は、第6のステップ512において、解読されたデータについてのCRC値及び応答記述子を生成する。解読されたデータについてのCRC値及び応答記述子の生成に応じて、例示的な第2のコア505は、データを例示的なストレージディスク507に送信(例えば、記憶)する。
【0064】
例示的なストレージディスク507は、第7のステップ514において完全性検査を実行する。例示的なストレージディスク507は、第1のステップ502において生成された第1のCRC値と第6のステップにおいて生成された最後のCRC値との比較に基づいて、完全性検査を実行する。いくつかの例では、比較が一致を示すものでない場合、ストレージディスク507は、アプリケーション501を実装するコンピューティングシステムをアプリケーション501及び/又はいずれかの他の処理ハードウェアに通知してもよい。このように、例示的なアプリケーション501は、コア503、505からの応答記述子に記憶されたコアIDを利用してトラブルシューティングすることができる。
【0065】
図1のマルチコアコンピューティングシステム100を実装する例示的な方式が図1~3に示されているが、図1~3に示すエレメント、プロセス及び/又はデバイスのうち1つ以上は、いずれかの他の方法で結合、分割、再配置、省略、除去及び/又は実装されてもよい。さらに、例示的なプロセッサ101、例示的なNIC106、例示的なアプリケーション108、例示的なロードバランサ118、例示的なリソースマネージャ122、例示的な第1のコア110、例示的な第2のコア112、例示的な第3のコア114、例示的なコア116、例示的な動作コントローラ202、例示的な応答コントローラ204、例示的なリソースマネージャ300、例示的なコア決定コントローラ302、及び/又はより一般的には図1の例示的なマルチコアコンピューティングシステム100は、ハードウェア、ソフトウェア、ファームウェア、及び/又はハードウェア、ソフトウェア及び/又はファームウェアのいずれかの組み合わせによって実装されてもよい。したがって、例えば、例示的なプロセッサ101、例示的なNIC106、例示的なアプリケーション108、例示的なロードバランサ118、例示的なリソースマネージャ122、例示的な第1のコア110、例示的な第2のコア112、例示的な第3のコア114、例示的な第4のコア116、例示的なコア200、例示的な動作コントローラ202、例示的な応答コントローラ204、例示的なリソースマネージャ300、例示的なインタフェースコントローラ302、例示的なコア決定コントローラ304、及び/又はより一般的には図1の例示的なマルチコアコンピューティングシステム100は、1つ以上のアナログ又はデジタル回路、論理回路、プログラム可能プロセッサ、プログラム可能コントローラ、グラフィックス処理ユニット(GPU, graphics processing unit)、デジタルシグナルプロセッサ(DSP, digital signal processor)、特定用途向け集積回路(ASIC, application specific integrated circuit)、プログラマブルロジックデバイス(PLD, programmable logic device)及び/又はフィールドプログラマブルロジックデバイス(FPLD, field programmable logic device)によって実装されてもよい。純粋なソフトウェア及び/又はファームウェアの実装をカバーするために、本特許の装置又はシステムの請求項のいずれかを読む場合、例示的なプロセッサ101、例示的なNIC106、例示的なアプリケーション108、例示的なロードバランサ118、例示的なリソースマネージャ122、例示的な第1のコア110、例示的な第2のコア112、例示的な第3のコア114、例示的な第4のコア116、例示的なコア200、例示的な動作コントローラ202、例示的な応答コントローラ204、例示的なリソースマネージャ300、例示的なインタフェースコントローラ302及び/又は例示的なコア決定コントローラ304は、ソフトウェア及び/又はファームウェアを含むメモリ、デジタル多用途ディスク(DVD, digital versatile disk)、コンパクトディスク(CD, compact disk)、ブルーレイディスク等のような、非一時的なコンピュータ読み取り可能ストレージデバイス又はストレージディスクを含むように、ここに明示的に定義される。さらに、図1の例示的なマルチコアコンピューティングシステム100は、図1~3に示すものに加えて或いはその代わりに、1つ以上のエレメント、プロセス及び/又はデバイスを含んでもよく、及び/又は、図示のエレメント、プロセス及びデバイスのいずれか又は全てのうちの1つよりも多くを含んでもよい。本明細書において使用される「通信している」という語句は、その変形を含めて、直接通信及び/又は1つ以上の中間コンポーネントを通じた間接通信を包含し、直接の物理的(例えば、有線)通信及び/又は常時通信を必要とせず、むしろ、周期的な間隔、スケジューリングされた間隔、非周期的な間隔及び/又は1回限りの事象における選択的な通信を更に含む。
【0066】
図1のマルチコアコンピューティングシステム100を実装するための例示的なハードウェアロジック、機械読み取り可能命令、ハードウェア実装状態マシン及び/又はこれらのいずれかの組み合わせを表すフローチャートが図6及び7に示されている。機械読み取り可能命令は、例えば、図8に関して以下に説明する例示的なプロセッサプラットフォーム800に示すプロセッサ812のような、コンピュータプロセッサ及び/又はプロセッサ回路による実行のための1つ以上の実行可能プログラム又は実行可能プログラムの一部でもよい。プログラムは、CD-ROM、フロッピーディスク、ハードドライブ、DVD、ブルーレイディスク、又はプロセッサ812に関連するメモリのような非一時的なコンピュータ読み取り可能記憶媒体に記憶されたソフトウェアで具現されてもよいが、全体のプログラム及び/又はその一部は、代替として、プロセッサ812以外のデバイスによって実行されてもよく、及び/又は、ファームウェア又は専用ハードウェアに具現されてもよい。さらに、例示的なプログラムは、図6及び7に示すフローチャートを参照して記載されるが、例示的なマルチコアコンピューティングシステム100を実装する多くの他の方法が代替として使用されてもよい。例えば、ブロックの実行順序は変更されてもよく、及び/又は、記載のブロックのうちいくつかが変更、除去又は結合されてもよい。さらに又は代替として、ブロックの一部又は全部は、ソフトウェア又はファームウェアを実行することなく対応する動作を実行するように構成された1つ以上のハードウェア回路(例えば、離散及び/又は集積アナログ及び/又はデジタル回路、FPGA、ASIC、比較器、演算増幅器(op-amp)、論理回路等)によって実装されてもよい。プロセッサ回路は、異なるネットワーク位置に分散されてもよく、及び/又は、1つ以上のデバイス(例えば、単一マシン内のマルチコアプロセッサ、サーバラックに分散された複数のプロセッサ等)にローカルに分散されていてもよい。
【0067】
本明細書に記載される機械読み取り可能命令は、圧縮フォーマット、暗号化フォーマット、フラグメント化フォーマット、コンパイル済フォーマット、実行可能フォーマット、パッケージ化フォーマット等のうち1つ以上に記憶されてもよい。本明細書に記載される機械読み取り可能命令は、機械実行可能命令を作成、製造及び/又は生成するために利用され得るデータ又はデータ構造(例えば、命令の部分、コード、コードの表現等)として記憶されてもよい。例えば、機械読み取り可能命令は、フラグメント化され、ネットワーク又はネットワークの集合(例えば、クラウド、エッジデバイス等)の同じ位置又は異なる位置に配置された1つ以上のストレージデバイス及び/又はコンピューティングデバイス(例えば、サーバ)に記憶されてもよい。機械読み取り可能命令は、コンピューティングデバイス及び/又は他の機械によって直接読み取り可能、解釈可能及び/又は実行可能にするために、インストール、修正、適応、更新、結合、補足、構成、解読、解凍、パック解除、分配、再割り当て、コンパイル等のうち1つ以上を必要としてもよい。例えば、機械読取り可能命令は、個別に圧縮され、暗号化され、別々のコンピューティングデバイスに記憶される複数の部分で記憶されてもよく、これらの部分は、解読され、解凍され、結合されたとき、本明細書に記載のようなプログラムを一緒に形成し得る1つ以上の機能を実装する実行可能命令のセットを形成する。
【0068】
他の例では、機械読み取り可能命令は、これらがプロセッサ回路によって読み取られ得る状態で記憶されてもよいが、特定のコンピューティングデバイス又は他のデバイスで命令を実行するために、ライブラリ(例えば、ダイナミックリンクライブラリ(DLL, dynamic link library))、ソフトウェア開発キット(SDK, software development kit)、アプリケーションプログラミングインタフェース(API, application programming interface)等の追加を必要とする。他の例では、機械読み取り可能命令(例えば、記憶された設定、データ入力、記録されたネットワークアドレス等)は、機械読み取り可能命令及び/又は対応するプログラムが全体的に或いは部分的に実行される前に、構成される必要があってもよい。したがって、本明細書で使用される機械読み取り可能媒体は、記憶されるとき又は静止時又は移動中の機械読み取り可能命令及び/又はプログラムの特定のフォーマット又は状態にかかわらず、機械読み取り可能命令及び/又はプログラムを含んでもよい。
【0069】
本明細書に記載される機械読み取り可能命令は、いずれかの過去、現在又は将来の命令言語、スクリプト言語、プログラミング言語等によって表されることができる。例えば、機械読み取り可能命令は、C、C++、Java、C#、Perl、Python、JavaScript、ハイパーテキストマークアップ言語(HTML, HyperText Markup Language)、構造化クエリ言語(SQL, Structured Query Language)、Swift等の言語のいずれかを使用して表されてもよい。
【0070】
上記のように、図6及び7の例示的なプロセスは、ハードディスクドライブ、フラッシュメモリ、読み取り専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び/又は情報がいずれかの持続時間(例えば、長期間、永久的、短時間、一時的なバッファリングのため、及び/又は情報のキャッシュのため)記憶されるいずれかの他のストレージデバイス若しくはストレージディスクのような非一時的なコンピュータ及び/又は機械読取り可能媒体に記憶される実行可能命令(例えば、コンピュータ及び/又は機械読み取り可能命令)を使用して実装されてもよい。本明細書において使用される「非一時的なコンピュータ読み取り可能媒体」という用語は、いずれかのタイプのコンピュータ読み取り可能ストレージデバイス及び/又はストレージディスクを含み、伝搬信号を排除して伝送媒体を排除するように明確に定義される。
【0071】
「含む(including)」及び「含む(comprising)」(及びそのすべての形式及び時制)は、本明細書においてオープンエンドの用語として使用される。したがって、請求項が「含む(include)」又は「含む(comprise)」(例えば、含む(comprises)、含む(includes)、含んでいる(comprising)、含んでいる(including)、有する(having)等を含む)のいずれかの形式をプリアンブルとして或いはいずれかの種類の請求項の記載内で使用するときは常に、対応する請求項又は記載の範囲を超えることなく、更なる要素、用語等が存在してもよいことが理解される。例えば、請求項のプリアンブルにおいて「少なくとも」という用語が遷移項として使用される場合、「含む(comprising)」及び「含む(including)」という用語がオープンエンドであるのと同じようにオープンエンドとされる。「及び/又は」という用語は、例えば、A、B及び/又はCのような形式で使用される場合、(1)Aのみ、(2)Bのみ、(3)Cのみ、(4)A及びB、(5)A及びC、(6)B及びC、並びに(7)A及びB及びCのように、A、B、Cのいずれかの組み合わせ又はサブセットを示す。本明細書において構造、コンポーネント、項目、オブジェクト及び/又は物を記述する文脈で使用される場合、「A及びBのうち少なくとも1つ」という用語は、(1)少なくとも1つのA、(2)少なくとも1つのB、並びに(3)少なくとも1つのA及び少なくとも1つのBのうちいずれかを含む実装を示すことを意図する。同様に、本明細書において構造、コンポーネント、項目、オブジェクト及び/又は物を記述する文脈で使用される場合、「A又はBのうち少なくとも1つ」という用語は、(1)少なくとも1つのA、(2)少なくとも1つのB、並びに(3)少なくとも1つのA及び少なくとも1つのBのうちいずれかを含む実装を示すことを意図する。本明細書においてプロセス、命令、アクション、活動及び/又はステップの実施又は実行を記述する文脈で使用される場合、「A及びBのうち少なくとも1つ」という用語は、(1)少なくとも1つのA、(2)少なくとも1つのB、並びに(3)少なくとも1つのA及び少なくとも1つのBのうちいずれかを含む実装を示すことを意図する。同様に、本明細書においてプロセス、命令、アクション、活動及び/又はステップの実施又は実行を記述する文脈で使用される場合、「A又はBのうち少なくとも1つ」という用語は、(1)少なくとも1つのA、(2)少なくとも1つのB、並びに(3)少なくとも1つのA及び少なくとも1つのBのうちいずれかを含む実装を示すことを意図する。
【0072】
本明細書において使用される単数形の参照(例えば、「a」、「an」、「第1」、「第2」等)は、複数を除外しない。「a」又は「an」という用語を有するエンティティは、本明細書において使用される場合、そのエンティティの1つ以上を示す。「a」(又は「an」)、「1つ以上」及び「少なくとも1つ」は、本明細書において互換的に使用できる。さらに、個々に列挙されているが、複数の手段、要素又は方法のアクションは、例えば、単一のユニット又はプロセッサによって実装されてもよい。さらに、個々の特徴は異なる例又は請求項に含まれることがあるが、これらは、場合によっては結合されてもよく、異なる例又は請求項に含まれることは、特徴の組み合わせが実行不可能であること及び/又は有利でないことを意味しない。
【0073】
図6は、データを処理するように図2の例示的なコア200を実装するために実行され得る機械読み取り可能命令600のフローチャートである。図2の例示的なコア200に参照が行われるが、コア110、112、114及び/又は116のうちいずれか1つが、機械読み取り可能命令600によって実装できる。
【0074】
機械読み取り可能命令600は、例示的なコア200がデータフローを処理するための要求を取得するブロック602を含む。例えば、アプリケーションは、NIC(例えば、図1のNIC106のうち第1のもの)を介してデータ(例えば、平文及び鍵、暗号文等)をコア200にサブミットする。いくつかの例では、コア200は、ロードバランサ(例えば、図1のロードバランサ118)からデータフローを取得する。
【0075】
例示的なコア200は、データフローの完全性を検証する(ブロック604)。例えば、動作コントローラ202は、CRC値を生成してCRC値をデータフローに含まれるCRC値と比較することに基づいて、完全性検査を実行する。
【0076】
例示的なコア200は、検証が成功したか否かを判断する(ブロック606)。例えば、動作コントローラ202は、2つのCRC値の比較が一致を示すか否かを判断する。
【0077】
例示的なコア200が、比較が一致を示すと判断した場合(例えば、ブロック606が値YESを返す場合)、例示的なコア200は、検証の成功を示すように状態フラグを更新する(ブロック608)。例えば、コア200は、データの取得時に更新されてデータの送信時にクリアされる状態フラグを含む。状態フラグは、データが巡回冗長検査に合格したか否かを示すために使用される。
【0078】
例示的なコア200は、データフロー内のデータに対して処理を実行する(ブロック610)。例えば、動作コントローラ202は、カウンタ値に基づいて平文データを暗号化するように、カウンタモードでAESを実施してもよい。いくつかの例では、動作コントローラ202は、カウンタ値に基づいて暗号文データを解読するように、カウンタモードでAESを実施する。例示的なコア200は、データに対していずれかの順方向及び/又は逆方向タスクを実行する。いくつかの例では、動作コントローラ202は、処理されたデータを応答コントローラ204に出力する。
【0079】
例示的なコア200は、処理コア識別子を決定する(ブロック612)。例えば、応答コントローラ204は、コア200のインデックスを決定し、そのインデックスをコアIDとしてメモリ206に記憶する。
【0080】
例示的なコア200は、完全性検査値を生成する(ブロック614)。例えば、動作コントローラ202は、出力データ(例えば、暗号文、平文等)に基づいてCRC値を生成する。
【0081】
例示的なコア200は、データを状態フラグ、コア識別子及び完全性検査値と連結して、応答記述子を生成する(ブロック616)。例えば、応答コントローラ204は、処理ジョブ(例えば、暗号化ジョブ、解読ジョブ等)に対応する情報を、データフローに対する以降の処理に有益な応答記述子に結合する。
【0082】
例示的なコア200は、応答記述子を記憶する(ブロック618)。例えば、メモリ206は、応答記述子をローカルに記憶する。いくつかの例では、メモリ206は、応答記述子をメインシステムメモリに記憶する。いくつかの例では、コア200は、応答記述子をアプリケーションに送り返す。このように、アプリケーションは応答記述子を記憶してもよい。
【0083】
ブロック606に戻り、例示的なコア200が、比較が一致を示さないと判断した場合(例えば、ブロック606が値NOを返す場合)、例示的なコア200は、検証の失敗を示すように状態フラグを更新する(ブロック620)。例えば、動作コントローラ202及び/又は応答コントローラ204は、データが巡回冗長検査に合格しなかったことを示す値に状態フラグをインクリメントする。いくつかの例では、完全性検査が失敗したとき、コア200はデータフローのデータにアクセスできないので、データは処理されない。例えば、コア200は、ジョブのデータにアクセスできるようになる前にデータを検証する。
【0084】
例示的なコア200は、他の要求を待機する(ブロック622)。例えば、コア200は、データを処理するための他の要求の取得に応じて、機械読み取り可能命令600を繰り返す。
【0085】
図7は、図3の例示的なリソースマネージャ300を実装するために実行され得る機械読み取り可能命令700のフローチャートである。図3のリソースマネージャ300に参照が行われるが、図1のリソースマネージャ122a、122bのうちいずれかが、機械読み取り可能命令700によって実装されてもよい。
【0086】
機械読み取り可能命令700は、例示的なリソースマネージャ300がデータフローに対して逆方向操作を実行するための要求を取得する。例えば、インタフェースコントローラ302は、ロードバランサ(例えば、ロードバランサ118)によってサブミットされた要求を取得して、ストレージからデータを取り出し、そこでこのようなデータが符号化される。ロードバランサは、データフローを解読するための最適な処理エンティティを決定するために、要求を例示的なリソースマネージャ300に導いてもよい。
【0087】
例示的なリソースマネージャ300は、要求に対応する応答記述子を分析する(ブロック704)。例えば、コア決定コントローラ304は、データフローの暗号化に対応する処理情報を読み取る。いくつかの例では、応答記述子はメモリ位置にマッピングされる。他の例では、応答記述子はデータフローのデータパケットである。例えば、暗号化されたデータの応答記述子は、暗号文に、暗号文に関連する処理情報の全てを加えたものである。応答記述子が暗号データに対応しない例では、応答記述子は、データ(例えば、圧縮データ、解凍データ、離散フーリエ変換データ、逆離散フーリエ変換データ等)に、データに関連する処理情報を加えたものである。
【0088】
例示的なリソースマネージャ300は、分析に基づいて、データフローに対して順方向操作を実行するために使用される処理コア識別子を決定する(ブロック706)。例えば、コア決定コントローラ304は、コアインデックス、コアID、及び/又は応答記述子内のデータフローを暗号化、圧縮等した処理エンティティに対応するいずれかの数値を探索する。
【0089】
例示的なリソースマネージャ300は、逆処理のために、データフローに対して順方向操作を実行するために使用されるコアとは異なる処理コアに、データフローを送信する(ブロック708)。例えば、インタフェースコントローラ302は、コア決定コントローラ304によって、データフロー120を提供するため及び/又はキューに入れるための選択された処理コアを通知される。リソースマネージャ300は、エラー及び欠陥のある処理コアを検出するために、順方向タスク及び逆方向タスクに2つの異なるコアを使用するように動作する。したがって、コアID0が順方向タスクを実行した場合、リソースマネージャ300は、逆方向タスクのためにデータフローをコアID0に送信しない。
【0090】
例示的なリソースマネージャ300は、他の要求を待機する(ブロック710)。例えば、機械読み取り可能命令700は、リソースマネージャ300がロードバランサから他の要求を取得したときに繰り返される。
【0091】
図8は、図1のマルチコアコンピューティングシステム100を実装するために、図6及び7の命令を実行するように構成された例示的なプロセッサプラットフォーム800のブロック図である。プロセッサプラットフォーム800は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習マシン(例えば、ニューラルネットワーク)、モバイルデバイス(例えば、携帯電話、スマートフォン、iPad(登録商標)のようなタブレット)、パーソナルデジタルアシスタント(PDA, personal digital assistant)、インターネット機器、DVDプレーヤ、デジタルビデオレコーダ、ブルーレイプレーヤ、ゲームコンソール、パーソナルビデオレコーダ、セットトップボックス、又はいずれかの他のタイプのコンピューティングデバイスとすることができる。
【0092】
図示の例のプロセッサプラットフォーム800はプロセッサ812を含む。図示の例のプロセッサ812はハードウェアである。例えば、プロセッサ812は、1つ以上の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、又はいずれかの所望のファミリー若しくは製造者からのコントローラによって実装できる。ハードウェアプロセッサは、半導体ベース(例えば、シリコンベース)のデバイスでもよい。この例では、マルチコアコンピューティングシステム100は、第1のコア110、第2のコア112、第3のコア114、第4のコア116、ロードバランサ118、リソースマネージャ122、NIC106及びアプリケーション108を含む例示的なプロセッサ101、コア200、動作コントローラ202、応答コントローラ204、リソースマネージャ300、インタフェースコントローラ302及びコア決定コントローラ304を実装する。
【0093】
図示の例のプロセッサ812は、ローカルメモリ813(例えば、キャッシュ)を含む。いくつかの例では、ローカルメモリ813は、図2の例示的なメモリ206によって実装できる。図示の例のプロセッサ812は、バス818を介して、揮発性メモリ814及び不揮発性メモリ816を含むメインメモリ104と通信する。揮発性メモリ814は、シンクロナス・ダイナミックランダムアクセスメモリ(SDRAM, Synchronous Dynamic Random Access Memory)、ダイナミックランダムアクセスメモリ(DRAM, Dynamic Random Access Memory)、ラムバス・ダイナミックランダムアクセスメモリ(RDRAM, RAMBUS Dynamic Random Access Memory)及び/又はいずれかの他のタイプのランダムアクセスメモリデバイスによって実装されてもよい。不揮発性メモリ816は、フラッシュメモリ及び/又はいずれかの他の所望のタイプのメモリデバイスによって実装されてもよい。メインメモリ104、814、816へのアクセスは、メモリコントローラによって制御される。
【0094】
図示の例のプロセッサプラットフォーム800はまた、インタフェース回路820を含む。いくつかの例では、インタフェース回路820は、例示的なNIC106を実装する。インタフェース回路820は、イーサネットインタフェース、ユニバーサルシリアルバス(USB, universal serial bus)、ブルートゥース(登録商標)インタフェース、近距離通信(NFC, near field communication)インタフェース及び/又はPCI Expressインタフェースのような、いずれかのタイプのインタフェース標準によって実装されてもよい。
【0095】
図示の例では、1つ以上の入力デバイス822がインタフェース回路820に接続される。入力デバイス822は、ユーザがデータ及び/又はコマンドをプロセッサ812に入力することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロホン、カメラ、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント及び/又は音声認識システムによって実装できる。
【0096】
1つ以上の出力デバイス824も、図示の例のインタフェース回路820に接続される。出力デバイス824は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED, liquid crystal diode)、有機発光ダイオード(OLED, organic light emitting diode)、液晶ディスプレイ(LCD, liquid crystal display)、陰極線管ディスプレイ(CRT, cathode ray tube display)、IPS(in-place switching)ディスプレイ、タッチスクリーン等)、触覚出力デバイス及び/又はスピーカによって実装できる。したがって、図示の例のインタフェース回路820は、典型的には、グラフィックスドライバカード、グラフィックスドライバチップ及び/又はグラフィックスドライバプロセッサを含む。
【0097】
図示の例のインタフェース回路820はまた、ネットワーク826を介して外部マシン(例えば、いずれかの種類のコンピューティングデバイス)とのデータの交換を容易にするために、送信機、受信機、トランシーバ、モデム、住宅用ゲートウェイ、無線アクセスポイント及び/又はネットワークインタフェースのような通信デバイスを含む。通信は、例えば、イーサネット接続、デジタル加入者線(DSL, digital subscriber line)接続、電話回線接続、同軸ケーブルシステム、衛星システム、見通し線無線システム、セルラ電話システム等を介して行うことができる。
【0098】
図示の例のプロセッサプラットフォーム800はまた、ソフトウェア及び/又はデータを記憶するための1つ以上の大容量ストレージデバイス828を含む。このような大容量ストレージデバイス828の例は、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、リダンダント・アレイ・オブ・インディペンデント・ディスク(RAID, redundant array of independent disks)及びデジタル多用途ディスク(DVD, digital versatile disk)ドライブを含む。
【0099】
図6及び7の機械実行可能命令600、700、併せて832は、大容量ストレージデバイス828、揮発性メモリ814、不揮発性メモリ816、及び/又はCD又はDVDのような取り外し可能な非一時的なコンピュータ読み取り可能記憶媒体に記憶されてもよい。
【0100】
図8の例示的なコンピュータ読み取り可能命令832のようなソフトウェアを第三者に配信するための例示的なソフトウェア配信プラットフォーム905を示すブロック図が図9に示されている。例示的なソフトウェア配信プラットフォーム905は、ソフトウェアを記憶して他のコンピューティングデバイスに送信することができるいずれかのコンピュータサーバ、データ施設、クラウドサービス等によって実装されてもよい。第三者は、ソフトウェア配信プラットフォームを所有及び/又は運営するエンティティの顧客でもよい。例えば、ソフトウェア配信プラットフォームを所有及び/又は動作するエンティティは、図8の例示的なコンピュータ読み取り可能命令832のようなソフトウェアの開発者、販売者及び/又はライセンサでもよい。第三者は、使用及び/又は再販売及び/又は再ライセンスのためにソフトウェアを購入及び/又はライセンスする顧客、ユーザ、小売業者、OEM等でもよい。図示の例では、ソフトウェア配信プラットフォーム905は、1つ以上のサーバ及び1つ以上のストレージデバイスを含む。ストレージデバイスは、上記のように、図6及び7の例示的なコンピュータ読み取り可能命令600及び700に対応してもよいコンピュータ読み取り可能命令832を記憶する。例示的なソフトウェア配信プラットフォーム905の1つ以上のサーバは、ネットワーク910と通信しており、ネットワーク910は、上記のインターネット及び/又は例示的なネットワーク102のうちのいずれか1つ以上に対応してもよい。いくつかの例では、1つ以上のサーバは、商取引の一部としてソフトウェアを要求側に送信するように要求に応答する。ソフトウェアの配信、販売及び/又はライセンスに対する支払いは、ソフトウェア配信プラットフォームの1つ以上のサーバによって及び/又は第三者支払いを介して処理されてもよい。サーバは、購入者及び/又はライセンサが、ソフトウェア配信プラットフォーム905からコンピュータ読み取り可能命令832をダウンロードすることを可能にする。例えば、図6及び図7の例示的なコンピュータ読み取り可能命令600及び700に対応してもよいソフトウェアは、例示的なプロセッサプラットフォーム800にダウンロードされてもよく、この例示的なプロセッサプラットフォーム800は、マルチコアコンピューティングシステム100を実装するようにコンピュータ読み取り可能命令832を実行する。いくつかの例では、ソフトウェア配信プラットフォーム905の1つ以上のサーバは、改良、パッチ、更新等がエンドユーザデバイスにおいてソフトウェアに配信されて適用されることを確保するために、ソフトウェア(例えば、図8の例示的なコンピュータ読み取り可能命令832)に対する更新を定期的に提供、送信及び/又は強制する。
【0101】
上記から、欠陥のある処理位置を識別するために、順方向タスク及び逆方向タスクの実行の処理位置を制御する例示的な方法、装置及び製造物が開示されていることが認識される。本明細書において開示される例は、データフロー内のプロセッサコア識別子のタグ付けに基づいて、データフローが順方向に実行された場合とは異なるプロセッサコアでデータフローが逆方向に実行されることを確保する。開示の方法、装置及び製造物は、データフロー内のプロセッサコア識別子に基づいてどこで問題が発生したかを直ちに識別できるトラブルシューティング機構を可能にすることによって、コンピューティングデバイスを使用する効率を改善する。したがって、開示の方法、装置及び製造物は、コンピュータの機能における1つ以上の改善を対象とする。
【0102】
コンピューティングシステムにおけるタスクの実行を制御するための例示的な方法、装置、システム及び製造物が本明細書において開示される。更なる例及びこれらの組み合わせは、以下を含む。
【0103】
例1は、少なくとも1つのストレージデバイスと、少なくとも1つのプロセッサとを含む装置を含み、少なくとも1つのプロセッサは、少なくとも、以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得し、順方向操作を実行した第1のプロセッサコアを決定し、データフローが第1のプロセッサコアの識別子を含み、逆方向操作を実行するためにデータフローを第2のプロセッサコアに送信するための命令を実行する。
【0104】
例2では、例1の対象物は、要求が第1の要求であり、第1のプロセッサコアが、データフローに対して順方向操作を実行するための第2の要求を取得し、周期冗長検査を利用してデータフローの完全性を検証し、周期冗長検査に基づいて、データフローの検証を示すための状態フラグを更新するための回路を含むことを、任意選択で含むことができる。
【0105】
例3では、例1~2の対象物は、第1のプロセッサコアが、データフローに対して順方向操作を実行し、順方向操作に基づいて、変換されたデータフローを出力し、変換されたデータフローに対応する、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成するための回路を含むことを、任意選択で含むことができる。
【0106】
例4では、例1~3の対象物は、第1のプロセッサコアが、順方向操作に基づいて、変換されたデータフローを出力し、少なくとも1つのプロセッサ内の第1のプロセッサコアのインデックスに対応する第1のプロセッサコアの識別子を決定し、第1のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するための回路を含むことを、任意選択で含むことができる。
【0107】
例5では、例1~4の対象物は、回路が、データフローの検証に基づいて状態フラグを応答記述子に付加し、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を応答記述子に付加することを、任意選択で含むことができる。
【0108】
例6では、例1~5の対象物は、回路が、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶することを、任意選択で含むことができる。
【0109】
例7では、例1~6の対象物は、第2のプロセッサコアが、逆方向操作に基づいて、変換されたデータフローを出力し、少なくとも1つのプロセッサ内の第2のプロセッサコアのインデックスに対応する第2のプロセッサコアの識別子を決定し、第2のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成し、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶するための回路を含むことを、任意選択で含むことができる。
【0110】
例8は、実行されたとき、1つ以上のプロセッサに対して、少なくとも、以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得させ、順方向操作を実行した第1のプロセッサコアを決定させ、データフローが第1のプロセッサコアの識別子を含み、逆方向操作を実行するためにデータフローを第2のプロセッサコアに送信させる命令を含む非一時的な機械読み取り可能記憶媒体を含む。
【0111】
例9では、例8の対象物は、要求が第1の要求であり、命令が、実行されたとき、1つ以上のプロセッサに対して、データフローに対して順方向操作を実行するための第2の要求を取得させ、周期冗長検査を利用してデータフローの完全性を検証させ、周期冗長検査に基づいて、データフローの検証を示すための状態フラグを更新させることを、任意選択で含むことができる。
【0112】
例10では、例8~9の対象物は、命令が、実行されたとき、1つ以上のプロセッサに対して、データフローに対して順方向操作を実行させ、順方向操作に基づいて、変換されたデータフローを出力させ、変換されたデータフローに対応する、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成させることを、任意選択で含むことができる。
【0113】
例11では、例8~10の対象物は、命令が、実行されたとき、1つ以上のプロセッサに対して、順方向操作に基づいて、変換されたデータフローを出力させ、1つ以上のプロセッサ内の第1のプロセッサコアのインデックスに対応する第1のプロセッサコアの識別子を決定させ、第1のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成させることを、任意選択で含むことができる。
【0114】
例12では、例8~11の対象物は、命令が、実行されたとき、1つ以上のプロセッサに対して、データフローの検証に基づいて状態フラグを応答記述子に付加させ、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を応答記述子に付加させることを、任意選択で含むことができる。
【0115】
例13では、例8~12の対象物は、命令が、実行されたとき、1つ以上のプロセッサに対して、1つ以上のプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶させることを、任意選択で含むことができる。
【0116】
例14では、例8~13の対象物は、命令が、実行されたとき、1つ以上のプロセッサに対して、逆方向操作に基づいて、変換されたデータフローを出力させ、1つ以上のプロセッサ内の第2のプロセッサコアのインデックスに対応する第2のプロセッサコアの識別子を決定させ、第2のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成させ、1つ以上のプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶させることを、任意選択で含むことができる。
【0117】
例15は、以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得するための手段と、順方向操作を実行した第1のプロセッサコアを決定するための手段であり、データフローが第1のプロセッサコアの識別子を含む、手段と、逆方向操作を実行するためにデータフローを第2のプロセッサコアに送信するための手段とを含む装置を含む。
【0118】
例16では、例15の対象物は、要求が第1の要求であり、第1のプロセッサコアが、データフローに対して順方向操作を実行するための第2の要求を取得し、周期冗長検査を利用してデータフローの完全性を検証し、周期冗長検査に基づいて、データフローの検証を示すための状態フラグを更新するように制御するための手段を含むことを、任意選択で含むことができる。
【0119】
例17では、例15~16の対象物は、第1のプロセッサコアが、データフローに対して順方向操作を実行し、順方向操作に基づいて、変換されたデータフローを出力し、変換されたデータフローに対応する、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成するように制御するための手段を含むことを、任意選択で含むことができる。
【0120】
例18では、例15~17の対象物は、第1のプロセッサコアが、順方向操作に基づいて、変換されたデータフローを出力するための手段と、少なくとも1つのプロセッサ内の第1のプロセッサコアのインデックスに対応する第1のプロセッサコアの識別子を決定し、第1のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するための手段とを含むことを、任意選択で含むことができる。
【0121】
例19では、例15~18の対象物は、生成するための手段が、データフローの検証に基づいて状態フラグを応答記述子に付加し、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を応答記述子に付加することを、任意選択で含むことができる。
【0122】
例20では、例15~19の対象物は、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶するための手段を、任意選択で含むことができる。
【0123】
例21では、例15~20の対象物は、第2のプロセッサコアが、逆方向操作に基づいて、変換されたデータフローを出力するための手段と、少なくとも1つのプロセッサ内の第2のプロセッサコアのインデックスに対応する第2のプロセッサコアの識別子を決定し、第2のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するための手段と、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶するための手段とを含むことを、任意選択で含むことができる。
【0124】
例22は、以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得するためのインタフェースコントローラと、順方向操作を実行した第1のプロセッサコアを決定するためのコア決定コントローラであり、データフローが第1のプロセッサコアの識別子を含み、逆方向操作を実行するためにデータフローを第2のプロセッサコアに送信することを決定するためのコア決定コントローラとを含む装置を含む。
【0125】
例23では、例22の対象物は、要求が第1の要求であり、第1のプロセッサコアが、データフローに対して順方向操作を実行するための第2の要求を取得し、周期冗長検査を利用してデータフローの完全性を検証し、周期冗長検査に基づいて、データフローの検証を示すための状態フラグを更新するための動作コントローラを含むことを、任意選択で含むことができる。
【0126】
例24では、例22~23の対象物は、データフローに対して順方向操作を実行し、順方向操作に基づいて、変換されたデータフローを出力し、変換されたデータフローに対応する、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成するための動作コントローラを、任意選択で含むことができる。
【0127】
例25では、例22~24の対象物は、順方向操作に基づいて、変換されたデータフローを出力するための動作コントローラと、少なくとも1つのプロセッサ内の第1のプロセッサコアのインデックスに対応する第1のプロセッサコアの識別子を決定し、第1のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するための応答コントローラとを、任意選択で含むことができる。
【0128】
例26では、例22~25の対象物は、応答コントローラが、データフローの検証に基づいて状態フラグを応答記述子に付加し、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を応答記述子に付加することを、任意選択で含むことができる。
【0129】
例27では、例22~26の対象物は、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶するためのメモリを、任意選択で含むことができる。
【0130】
例28では、例22~27の対象物は、逆方向操作に基づいて、変換されたデータフローを出力するための動作コントローラと、少なくとも1つのプロセッサ内の第2のプロセッサコアのインデックスに対応する第2のプロセッサコアの識別子を決定し、第2のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するための応答コントローラと、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子を少なくとも1つのストレージデバイスに記憶するためのメモリとを、任意選択で含むことができる。
【0131】
例29は、以前に順方向操作の間に変換されたデータフローに対して逆方向操作を実行するための要求を取得するステップと、順方向操作を実行した第1のプロセッサコアを決定するステップであり、データフローが第1のプロセッサコアの識別子を含む、ステップと、逆方向操作を実行するためにデータフローを第2のプロセッサコアに送信するステップとを含む方法を含む。
【0132】
例30では、例29の対象物は、要求が第1の要求であり、当該方法が、データフローに対して順方向操作を実行するための第2の要求を取得するステップと、周期冗長検査を利用してデータフローの完全性を検証するステップと、周期冗長検査に基づいて、データフローの検証を示すための状態フラグを更新するステップとを更に含むことを、任意選択で含むことができる。
【0133】
例31では、例29~30の対象物は、データフローに対して順方向操作を実行するステップと、順方向操作に基づいて、変換されたデータフローを出力するステップと、変換されたデータフローに対応する、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を生成するステップとを、任意選択で含むことができる。
【0134】
例32では、例29~31の対象物は、順方向操作に基づいて、変換されたデータフローを出力するステップと、少なくとも1つのプロセッサ内の第1のプロセッサコアのインデックスに対応する第1のプロセッサコアの識別子を決定するステップと、第1のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するステップとを、任意選択で含むことができる。
【0135】
例33では、例29~32の対象物は、データフローの検証に基づいて状態フラグを応答記述子に付加するステップと、第2のプロセッサコアでの周期冗長検査のために以降に使用される完全性検査値を応答記述子に付加するステップとを、任意選択で含むことができる。
【0136】
例34では、例29~33の対象物は、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子をストレージデバイスに記憶するステップを、任意選択で含むことができる。
【0137】
例35では、例29~34の対象物は、逆方向操作に基づいて、変換されたデータフローを出力するステップと、少なくとも1つのプロセッサ内の第2のプロセッサコアのインデックスに対応する第2のプロセッサコアの識別子を決定するステップと、第2のプロセッサコアの識別子との変換されたデータフローの連結に基づいて応答記述子を生成するステップと、少なくとも1つのプロセッサによる以降のアクセスのために応答記述子をストレージデバイスに記憶するステップとを、任意選択で含むことができる。
【0138】
例36は、例29~35のいずれかを実行するための処理回路を含むエッジコンピューティングゲートウェイである。
【0139】
例37は、ネットワークインタフェースカードと、例29~35のいずれかを実行するための処理回路とを含む基地局である。
【0140】
例38は、例29~35のいずれかを実行するための命令を含むコンピュータ読み取り可能媒体である。
【0141】
特定の例示的な方法、装置及び製造物が本明細書に開示されているが、本特許の範囲はこれに限定されない。対照的に、本特許は、本特許の特許請求の範囲内にある全ての方法、装置及び製造物をカバーする。
【0142】
以下の特許請求の範囲は、参照により、この詳細な説明に組み込まれ、各請求項は、本開示の別個の実施形態として自立する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【外国語明細書】