(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-18
(45)【発行日】2024-07-26
(54)【発明の名称】冗長データ・パケットを生成及び排除する通信装置
(51)【国際特許分類】
H04L 49/552 20220101AFI20240719BHJP
H04L 47/32 20220101ALI20240719BHJP
【FI】
H04L49/552
H04L47/32
【外国語出願】
(21)【出願番号】P 2022108135
(22)【出願日】2022-07-05
【審査請求日】2022-12-22
(32)【優先日】2021-08-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522116812
【氏名又は名称】メラノックス テクノロジーズ、リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】アヴィ アーマン
(72)【発明者】
【氏名】リオル ナラキス
(72)【発明者】
【氏名】ギル クレーメル
(72)【発明者】
【氏名】サール タルノポルスキー
(72)【発明者】
【氏名】ドータン デイビッド レヴィ
【審査官】速水 雄太
(56)【参考文献】
【文献】米国特許出願公開第2020/0092229(US,A1)
【文献】特表2006-505166(JP,A)
【文献】特表2002-524920(JP,A)
【文献】米国特許出願公開第2020/0336338(US,A1)
【文献】米国特許出願公開第2016/0277473(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 49/552
H04L 47/32
(57)【特許請求の範囲】
【請求項1】
通信装置であって、
前記通信装置を備えるホストコンピューティングシステムのホストメモリへの少なくとも1つの接続と、
複数のパケットを受信するためのネットワーク・インターフェースであって、前記複数のパケットの各々が、少なくとも1つのパケット識別子及び少なくとも1つのペイロードを含む、ネットワーク・インターフェースと、
1つ以上の冗長パケットを検出し、前記少なくとも1つの接続を介する前記1つ以上の冗長パケットの通信を防止するために前記1つ以上の冗長パケットをドロップし、各残りのパケットを、前記ホストメモリにおいて前記残りのパケットの前記少なくとも1つのパケット識別子に少なくとも部分的に基づいて決定された場所に格納するためのパケット処理回路と
を備える通信装置
であって、
複数のパケット識別子が、前記複数のパケットの各々の前記少なくとも1つのパケット識別子を含み、
前記パケット処理回路が、前記複数のパケット識別子の各固有の値を有する前記複数のパケットのうちの、最大でも単一のパケットを含む少なくとも1つの固有のパケットを渡すことによって、前記少なくとも1つの接続を介する前記1つ以上の冗長パケットの通信を防止するアンチ・リプレイ・エンジンを実装し、
前記パケット処理回路が、散乱エンジンを実装し、
前記アンチ・リプレイ・エンジンが、前記少なくとも1つの固有のパケットを前記散乱エンジンに渡し、
前記散乱エンジンが、前記散乱エンジンに渡されている前記少なくとも1つの固有のパケットの各々のメモリ・アドレスを決定する、通信装置。
【請求項2】
前記1つ以上の冗長パケットが、前記少なくとも1つのパケット識別子のうちの1つ以上の冗長パケット識別子、又は前記少なくとも1つのペイロードのうちの1つ以上の冗長ペイロードに基づいて検出される、請求項1に記載の通信装置。
【請求項3】
前記ネットワーク・インターフェースが、前記複数のパケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して受信するための複数の接続を含む、請求項1に記載の通信装置。
【請求項4】
前記複数のパケットの各々が、前記少なくとも1つのパケット識別子を含むヘッダを含み、
前記パケット処理回路が、パケット解析エンジン及びステアリング・エンジンを実装し、
前記パケット解析エンジンが、前記複数のパケットの各々を解析し、前記複数のパケットの各々の前記ヘッダを識別し、前記複数のパケットの各々の前記ヘッダ及び前記少なくとも1つのペイロードを前記ステアリング・エンジンに転送し、
前記ステアリング・エンジンが、前記複数のパケットの各々の前記ヘッダの内部の前記少なくとも1つのパケット識別子を識別し、前記複数のパケットの各々の前記少なくとも1つのパケット識別子及び前記少なくとも1つのペイロードを前記アンチ・リプレイ・エンジンに渡す、請求項
1に記載の通信装置。
【請求項5】
複数のパケット識別子が、前記複数のパケットの各々の前記少なくとも1つのパケット識別子を含み、
前記
アンチ・リプレイ・エンジンが、スライディング・ウィンドウ内で受信される前記複数のパケット識別子のうちの各固有のパケット識別子を有する1つのパケットを除く全てのパケットを破棄することによって、前記少なくとも1つの接続を介する前記1つ以上の冗長パケットの前記通信を防止す
る、請求項1に記載の通信装置。
【請求項6】
ユーザによって使用するためのものであり、前記スライディング・ウィンドウのサイズがユーザによって提供され得る、請求項
5に記載の通信装置。
【請求項7】
前記スライディング・ウィンドウの外部で遅延パケットが受信され、
前記アンチ・リプレイ・エンジンが、前記遅延パケットを破棄する、請求項
5に記載の通信装置。
【請求項8】
前記スライディング・ウィンドウの外部で遅延パケットが受信され、
前記アンチ・リプレイ・エンジンが、前記遅延パケットを、後続の処理のためにキューに格納する、請求項
5に記載の通信装置。
【請求項9】
前記少なくとも1つの接続はバスを備える、請求項1に記載の通信装置。
【請求項10】
前記バスが、周辺機器相互接続エクスプレス(「PCIe」)バスである、請求項
9に記載の通信装置。
【請求項11】
前記
散乱エンジンが、前記残りのパケットの前記少なくとも1つのパケット識別子を前記場所にマッピングすることによって、各残りのパケットの前記場所を決定する、請求項1に記載の通信装置。
【請求項12】
前記
散乱エンジンが、線形マッピングを使用して、前記残りのパケットの前記少なくとも1つのパケット識別子を前記場所にマッピングすることによって、各残りのパケットの前記場所を決定する、請求項1に記載の通信装置。
【請求項13】
前記
散乱エンジンが、各残りのパケットの前記場所を、初期パケット識別子、前記残りのパケットの前記少なくとも1つのパケット識別子、前記残りのパケットの前記少なくとも1つのペイロードのサイズ、及び基準メモリ・アドレスの関数として決定する、請求項1に記載の通信装置。
【請求項14】
複数のパケット識別子と各々1つずつ関連付けられる複数のペイロードを含む複数のパケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルによって送信するパケット・ソースと、
回路を備えるネットワーク・インターフェースに接続されたメモリを備える受信側デバイスであって、前記ネットワーク・インターフェースが、前記複数のパケット・ストリームを受信し、冗長パケット識別子値を含む前記複数のパケット・ストリームで受信された1つ以上のパケットを破棄して前記メモリへの接続を介する前記1つ以上のパケットの通信を回避し、それぞれの個々のペイロードのメモリ・アドレスを決定し、前記回路によって決定されるそれぞれのメモリ・アドレスにペイロードを書き込むための前記回路を備える、受信側デバイスと
を備えるシステム
であって、
前記回路が、アンチ・リプレイ・エンジン及び散乱エンジンを実装し、
前記アンチ・リプレイ・エンジンが、前記複数のパケット識別子の各固有の値と関連付けられる、最大でも単一のペイロードを前記散乱エンジンに渡し、
前記散乱エンジンが、前記散乱エンジンに渡されている各ペイロードのメモリ・アドレスを決定し、それによって、それぞれの個々の前記ペイロードの前記メモリ・アドレスを決定する、システム。
【請求項15】
前記パケット・ソースが仮想機械である、請求項1
4に記載のシステム。
【請求項16】
前記
アンチ・リプレイ・エンジンが、スライディング・ウィンドウ内で受信される各固有のパケット識別子値を有する1つのパケットを除く全てのパケットを破棄す
る、請求項1
4に記載のシステム。
【請求項17】
前記スライディング・ウィンドウの外部で遅延パケットが受信され、
前記アンチ・リプレイ・エンジンが、前記遅延パケットを破棄し、及び/又は前記遅延パケットを、後続の処理のためにキューに格納する、請求項1
6に記載のシステム。
【請求項18】
前記ペイロードが、複数の渡されているペイロード及び複数の破棄されているペイロードを含み、
前記
アンチ・リプレイ・エンジンが、前記複数の破棄されているペイロードの格納を防止し、
前記
散乱エンジンが、前記渡されているペイロードと関連付けられるパケット識別子を前記メモリ・アドレスのうちの1つにマッピングすることによって、前記複数の渡されているペイロードの各々の前記メモリ・アドレスのうちの1つを決定する、請求項1
4に記載のシステム。
【請求項19】
前記渡されているペイロードと関連付けられる前記パケット識別子を前記メモリ・アドレスのうちの1つにマッピングするために、線形マッピングが使用される、請求項
18に記載のシステム。
【請求項20】
前記ペイロードが、複数の渡されているペイロード及び複数の破棄されているペイロードを含み、
前記
アンチ・リプレイ・エンジンが、前記複数の破棄されているペイロードの格納を防止し、
前記
散乱エンジンが、前記複数の渡されているペイロードの各々の前記メモリ・アドレスのうちの1つを、初期シーケンス番号、前記渡されているペイロードと関連付けられるパケット識別子、前記渡されているペイロードのサイズ、及び前記メモリ・アドレスのうちの基準メモリ・アドレスの関数として決定する、請求項1
4に記載のシステム。
【請求項21】
前記パケット・ソースが、前記複数のパケット識別子のうちの固有のパケット識別子を複数の初期パケットの各々に付加し、前記固有のパケット識別子が前記複数の初期パケットの各々に付加された後に前記複数の初期パケットの各々を複製して、複数の複製パケットを作成し、前記複数の初期パケット及び前記複数の複製パケットを、前記複数のパケット・ストリームとして、前記複数の異なる通信チャネルによって送信する回路を有する送信側デバイスを含む、請求項1
4に記載のシステム。
【請求項22】
前記送信側デバイス又は前記受信側デバイスのうちの少なくとも一方が、自律車両である、請求項2
1に記載のシステム。
【請求項23】
前記送信側デバイスが自律車両であり、
前記自律車両が少なくとも1つのセンサを備え、
前記複数のペイロードがそれぞれ、前記少なくとも1つのセンサから取得されるセンサデータに基づく情報を含む、請求項2
2に記載のシステム。
【請求項24】
前記送信側デバイスが、ビデオ・データを捕捉するためのビデオ・カメラと、前記ビデオ・データを前記複数の初期パケットにパケット化するためのインターフェースとを備える、請求項2
3に記載のシステム。
【請求項25】
前記複数のペイロードがそれぞれ、前記ビデオ・データのスライスを含む、請求項2
4に記載のシステム。
【請求項26】
ネットワーク・インターフェースと、ステアリング・エンジンと、アンチ・リプレイ・エンジンと、散乱エンジンと、ホスト・インターフェースとを備える通信装置によって実施される方法であって、
前記ネットワーク・インターフェースによって、複数の異なる通信チャネルによって送信される複数のパケット・ストリームを受信するステップであって、前記複数のパケット・ストリームが、複数のパケット識別子と各々1つずつ関連付けられる複数のペイロードを含む複数のパケットを含む、ステップと、
前記
ステアリング・エンジンによって、
前記ネットワーク・インターフェースによって受信された前記複数のパケット・ストリームから、前記複数のパケット識別子のうちの少なくともいくつかの各々の1つのコピーを含む前記複数のパケットのサブセットを識別するステップと、
前記
アンチ・リプレイ・エンジンによって、
前記ステアリング・エンジンによって識別された前記サブセットに含まれない前記複数のパケットのうちの1つ以上のパケットを破棄して、前記
通信装置を備えるコンピュータシステムのメモリへの接続を介する前記1つ以上のパケットの通信を防止するステップと、
前記
散乱エンジンによって、
前記アンチ・リプレイ・エンジンによって破棄された前記1つ以上のパケットを含まない前記サブセットの各パケットのペイロードのメモリ・アドレスを決定するステップと、
前記
ホスト・インターフェースによって、
前記アンチ・リプレイ・エンジンによって破棄された前記1つ以上のパケットを含まない前記サブセットの各パケットの前記ペイロードを、
前記散乱エンジンによって前記ペイロードについて決定されている前記メモリ・アドレスに書き込むステップと
を含む方法。
【請求項27】
前記サブセットに含まれない前記1つ以上のパケットを破棄するステップは、スライディング・ウィンドウ内で受信される前記複数のパケット識別子のうちの各固有のパケット識別子と関連付けられる前記複数のパケットのうちの1つを除く全てのパケットを破棄するステップを含む、請求項2
6に記載の方法。
【請求項28】
前記スライディング・ウィンドウの外部で遅延パケットが受信され、前記方法が、
前記遅延パケットを破棄するステップ、又は前記遅延パケットを、後続の処理のためにキューに格納するステップをさらに含む、請求項
27に記載の方法。
【請求項29】
前記サブセットの各パケットの前記ペイロードの前記メモリ・アドレスを決定するステップが、
前記サブセットの各パケットの前記ペイロードと関連付けられるパケット識別子を前記メモリ・アドレスにマッピングするステップを含む、請求項2
6に記載の方法。
【請求項30】
前記サブセットの各パケットの前記ペイロードと関連付けられる前記パケット識別子を前記メモリ・アドレスにマッピングするために、線形マッピングが使用される、請求項
29に記載の方法。
【請求項31】
前記サブセットの各パケットについて、初期シーケンス番号、前記パケットの前記ペイロードと関連付けられる前記パケット識別子、前記パケットの前記ペイロードのサイズ、及び基準メモリ・アドレスの関数が、前記パケットの前記ペイロードと関連付けられる前記パケット識別子を前記メモリ・アドレスにマッピングするために使用される、請求項
29に記載の方法。
【請求項32】
前記複数のパケット識別子のうちの固有のパケット識別子を複数の初期パケットの各々に付加するステップと、
前記固有のパケット識別子が前記複数の初期パケットの各々に付加された後に前記複数の初期パケットの各々を複製して、複数の複製パケットを作成するステップと、
前記複数の初期パケット及び前記複数の複製パケットを、前記複数のパケット・ストリームとして、前記複数の異なる通信チャネルによって送信するステップと
をさらに含む、請求項2
6に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
少なくとも一実施例は、冗長データ・パケットを生成及び排除することに関する。たとえば、少なくとも一実施例は、冗長データ・パケットを生成し、冗長データ・パケットを複数のパケット・ストリームにおいて送信し、受信パケット・ストリームから冗長データ・パケットを排除する通信装置に関する。別の例として、少なくとも一実施例は、本明細書に記載の様々な新規の技法を実装する通信装置に関する。
【背景技術】
【0002】
デバイス(たとえば、コンピュータ、自律車両など)は、一般的に、ネットワークにわたってデータ・パケットをストリーミングするために高速方法を使用する。そのような高速方法は、典型的には、受信側デバイスが送信側デバイスに確認応答を送信しない、及び/又は、送信側デバイスが喪失若しくは破損したパケットを受信側デバイスに再送しない、信頼できないプロトコルを使用してパケットを送信する。すべてのパケットが受信側デバイスによって受信される確率を増大させるのを助けるために、送信側デバイスは、パケット及びパケットのコピーを、複数の並列なデータ・ストリームにおいて受信側デバイスに送信する場合がある。データ・ストリームはネットワークを通じて複数の異なる経路を介して送信されるため、各パケットの少なくとも1つのコピー(又は等価なパケット)が受信側デバイスによって受信される可能性が増大する。
【0003】
複数の並列なデータ・ストリームが受信側デバイスに送信される場合であっても、特定のストリームのすべてのパケットが受信側デバイスに到達すること、又は、パケットが送信されたのと同じ順序でパケットが受信側デバイスに到着することは、依然として保証されない。したがって、受信側デバイスは、2つ(以上)の受信データ・ストリームからのパケットを記憶、並べ替え、処理、及びインターリーブすることによって、送信データを再構築しなければならない。この方法は、信頼可能なデータ送信を可能にするが、相当量のメモリ、メモリ帯域幅、及び接続(たとえば、周辺機器相互接続エクスプレス(「PCIe」)バス)帯域幅を使用するとともに、送信側デバイスのプロセッサに重い処理負担を課し、データ待ち時間を増大させ、システム全体のデータ・スループット及び/又は性能を制限する可能性がある。
【図面の簡単な説明】
【0004】
【
図1】少なくとも一実施例による、ネットワークによって受信側デバイスに接続されている送信側デバイスを含むシステムの一例を示す図である。
【
図2】少なくとも一実施例による、送信側通信装置の例示の構成要素を示す図である。
【
図3】少なくとも一実施例による、例示のパケット・フォーマットを示す図である。
【
図4】少なくとも一実施例による、受信側通信装置の例示の構成要素を示す図である。
【
図5】少なくとも一実施例による、例示のデータ通信システムを概略的に示すブロック図である。
【
図6】少なくとも一実施例による、受信側通信装置によって実施することができるデータ再構築のプロセスを概略的に示すブロック図である。
【
図7】少なくとも一実施例による、受信側通信装置によって実施されるパケット・データを直接的に配置するための方法の詳細を概略的に示すブロック図である。
【
図8】少なくとも一実施例による、無線データを送信するためのデータ通信システムを概略的に示すブロック図である。
【
図9】少なくとも一実施例による、受信側メモリ内のバッファ内にパケット・データを直接的に配置するための方法を概略的に示すブロック図である。
【
図10】少なくとも一実施例による、送信側デバイスによって実施することができる方法の流れ図である。
【
図11】少なくとも一実施例による、受信側デバイスによって実施することができる方法の流れ図である。
【
図12】少なくとも一実施例による、分散システムを示す図である。
【
図13】少なくとも一実施例による、例示的なデータ・センタを示す図である。
【
図14】少なくとも一実施例による、クライアント-サーバ・ネットワークを示す図である。
【
図15】少なくとも一実施例による、コンピュータ・ネットワークを示す図である。
【
図16A】少なくとも一実施例による、ネットワーク・コンピュータ・システムを示す図である。
【
図16B】少なくとも一実施例による、ネットワーク・コンピュータ・システムを示す図である。
【
図16C】少なくとも一実施例による、ネットワーク・コンピュータ・システムを示す図である。
【
図17】少なくとも一実施例による、サーバをサード・パーティ・ネットワーク・サービスとして提供することができるシステム環境の1つ又は複数の構成要素を示す図である。
【
図18】少なくとも一実施例による、クラウド・コンピューティング環境を示す図である。
【
図19】少なくとも一実施例による、クラウド・コンピューティング環境によって提供される機能抽象化層のセットを示す図である。
【
図20】少なくとも一実施例による、チップ・レベルにおいてスーパーコンピュータを示す図である。
【
図21】少なくとも一実施例による、ラック・モジュール・レベルにおいてスーパーコンピュータを示す図である。
【
図22】少なくとも一実施例による、ラック・レベルにおいてスーパーコンピュータを示す図である。
【
図23】少なくとも一実施例による、システム全体レベルにおいてスーパーコンピュータを示す図である。
【
図24A】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
【
図24B】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
【
図25】少なくとも一実施例による、ニューラル・ネットワークの訓練及び展開を示す図である。
【
図26】少なくとも一実施例による、ネットワークのシステムのアーキテクチャを示す図である。
【
図27】少なくとも一実施例による、ネットワークのシステムのアーキテクチャを示す図である。
【
図28】少なくとも一実施例による、制御プレーン・プロトコル・スタックを示す図である。
【
図29】少なくとも一実施例による、ユーザ・プレーン・プロトコル・スタックを示す図である。
【
図30】少なくとも一実施例による、コア・ネットワークの構成要素を示す図である。
【
図31】少なくとも一実施例による、ネットワーク機能仮想化(NFV:network function virtualization)をサポートするシステムの構成要素を示す図である。
【
図32】少なくとも一実施例による、処理システムを示す図である。
【
図33】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図34】少なくとも一実施例による、システムを示す図である。
【
図35】少なくとも一実施例による、例示的な集積回路を示す図である。
【
図36】少なくとも一実施例による、コンピューティング・システムを示す図である。
【
図37】少なくとも一実施例による、APUを示す図である。
【
図38】少なくとも一実施例による、CPUを示す図である。
【
図39】少なくとも一実施例による、例示的な加速度計集積スライスを示す図である。
【
図40A】少なくとも一実施例による、例示的なグラフィックス・プロセッサを示す図である。
【
図40B】少なくとも一実施例による、例示的なグラフィックス・プロセッサを示す図である。
【
図41A】少なくとも一実施例による、グラフィックス・コアを示す図である。
【
図41B】少なくとも一実施例による、GPGPUを示す図である。
【
図42A】少なくとも一実施例による、並列プロセッサを示す図である。
【
図42B】少なくとも一実施例による、処理クラスタを示す図である。
【
図42C】少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。
【
図43】少なくとも一実施例による、プログラミング・プラットフォームのソフトウェア・スタックを示す図である。
【
図44】少なくとも一実施例による、
図43のソフトウェア・スタックのCUDA実施態様を示す図である。
【
図45】少なくとも一実施例による、
図43のソフトウェア・スタックのROCm実施態様を示す図である。
【
図46】少なくとも一実施例による、
図43のソフトウェア・スタックのOpenCL実施態様を示す図である。
【
図47】少なくとも一実施例による、プログラミング・プラットフォームによってサポートされるソフトウェアを示す図である。
【
図48】少なくとも一実施例による、
図43~
図46のプログラミング・プラットフォーム上で実行するためのコードのコンパイルを示す図である。
【発明を実施するための形態】
【0005】
図1は、少なくとも一実施例による、ネットワーク106によって受信側デバイスに104接続されている送信側デバイス102を含むシステム100の一例を示す。送信側デバイス102及び受信側デバイス104の一方又は両方は、1つ又は複数のコンピューティング・デバイス、仮想機械、自律車両、ビデオ・カメラ、放送テレビジョン機器、1つ又は複数のセンサ・デバイスなどによって実装されてもよい。送信側デバイス102は、送信側通信装置112と、送信側プロセッサ114(たとえば、中央処理装置(「CPU」)と、送信側メモリ116とを含む。受信側デバイス104は、受信側通信装置124と、受信側プロセッサ126(たとえば、CPU)と、受信側メモリ128とを含む。送信側通信装置112及び受信側通信装置124は各々、ネットワーク・インターフェース・コントローラ(「NIC」)、ネットワーク・インターフェース・カード、ネットワーク・アダプタ、ローカル・エリア・ネットワーク(「LAN」)アダプタ、物理ネットワーク・インターフェース、ホスト・チャネル・アダプタ(「HCA」)、イーサネット(登録商標)NICなどとして実装されてもよい。任意選択的に、送信側通信装置112及び/又は受信側通信装置124は、複数のホスト・デバイスに接続されてもよく、各ホスト・デバイスのパケット・フロー又はストリームを同時に送信及び受信してもよい。
【0006】
送信側プロセッサ114は、メッセージ130又はメッセージ130へのリンクを送信側通信装置112に送信する。メッセージ130は、複数のパケット132を含んでもよく、又は、送信側通信装置112によって複数のパケット132にパケット化されてもよい。複数のパケット132は、元々の順序を有する。
図1において、複数のパケット132はパケットP1~P3を含むものとして示されているが、複数のパケット132は、任意の数のパケットを含んでもよい。送信側通信装置112は、複数のパケット132を改変して複数の改変パケット134を作成し、複数の改変パケット134をコピー又は複製して複数の複製パケット136を作成する。複数の改変パケット134及び複数の複製パケット136はともに、パケット138Sとして、受信側通信装置124に送信される。図示されている実施例においては、送信側通信装置112は複数の改変パケット134を単一系列の複数の複製パケット136に複製するものとして示されているが、代替の実施例において、送信側通信装置112は、複数の改変パケット134を2倍以上に複製して、複数系列の複製パケットを作成してもよい。図示の実施例において、パケットP1~P3は改変されて、それぞれパケットP’1~P’3が作成されており、改変パケットP’1~P3’はコピーされて、それぞれ複製パケットD1~D3が作成されている。次いで、送信側通信装置112は、異なる通信経路を介して別個に送信されている複数の改変パケット134S及び複数の複製パケット136Sを含む送信パケット138Sを、ネットワーク106を通じて受信側デバイス104に送信する。言い換えれば、送信側通信装置112は、送信パケット138Sを、2つ以上の別個のストリームにおいて受信側通信装置124に送信する。
【0007】
受信側通信装置124は、複数の受信改変パケット134R及び複数の受信複製パケット136Rを含むパケット138Rを受信する。言い換えれば、受信側通信装置124は、送信側通信装置112から、受信パケット138Rを含む2つ以上の別個のストリームを受信する。後述するように、パケット138Sは各々、パケット識別子を含み、受信パケット138Rは、同じパケット識別子を有する2つ以上のパケットを含むことができる。受信側通信装置124は、最大でも、各固有のパケット識別子を有する単一のパケット(たとえば、第1の受信パケット)を保持し、残りの受信パケット138Rを破棄することができる。少なくとも一実施例では、ペイロードは、パケット識別子を含み、且つ/又は、パケット識別子として機能することができる。そのような実施例において、受信側通信装置124は、各ペイロードを有する単一のパケット(たとえば、第1の受信パケット)を保持すればよく、残りの受信パケット138Rを破棄することができる。
【0008】
複数の受信改変パケット134Rは、1つ又は複数のパケットが輸送中に喪失又は破損している場合があるため、複数の送信改変パケット134Sとは異なる場合がある。さらに、複数の送信改変パケット134Sは、第1の送信順序を有し、複数の受信改変パケット134Rは、第1の受信順序を有する。複数の送信改変パケット134Sの順序は、第1の受信順序が第1の送信順序とは異なるように、輸送中に変化する場合がある。図示されている実例において、複数の受信改変パケット134Rは、パケットP1’及びP3’を含み、これらはその順序において受信されており、パケットP2’は輸送中に喪失している。同様に、複数の受信複製パケット136Rは、1つ又は複数のパケットが輸送中に喪失又は破損している場合があるため、複数の送信複製パケット136Sとは異なる場合がある。さらに、複数の送信複製パケット136Sは、第2の送信順序を有し、複数の受信複製パケット136Rは、第2の受信順序を有する。複数の送信複製パケット136Sの順序は、第2の受信順序が第2の送信順序とは異なるように、輸送中に変化する場合がある。図示されている実例において、複数の受信複製パケット136Rは、パケットD2、D1、及びD3を含み、これらはその順序において受信されており、パケットD3は輸送中に破損している。
【0009】
上述したように、受信側通信装置124は、複数の受信改変パケット140を得るために、最大でも、受信パケット138Rの各々の単一のインスタンスを保持し、残りの受信パケット138Rを廃棄する。たとえば、受信側通信装置124は、受信パケット138Rの各々の第1の破損していないインスタンスを保持してもよい。任意選択的に、受信側通信装置124は、複数のパケット132の元々の順序に可能な限り近く一致するように、受信パケット138Rの単一のインスタンスを並べ替える。たとえば、受信側通信装置124は、各パケットを個々に処理し、順序付けされたデータ・セット(たとえば、スライディング・ウィンドウとして実装される)を構築することができる。順序付けされたデータ・セットは、特定のパケット識別子のセットを有する所定数のパケットを期待する。受信側通信装置124は、特定のパケット識別子の各々とともに受信される第1のパケットを通し、複製パケット識別子とともに受信されるか、又は、特定のパケット識別子のうちの1つでないパケット識別子を有する後続のパケットを破棄又は無視することができる。受信される第1のパケットの各々は、元々の順序に従って、順序付けされたデータ・セット内のパケット・ロケーションに配置される。元々の順序は、パケット識別子によって示すことができる。たとえば、パケット識別子は、各々が元々の順序内の位置若しくは順序付けされたデータ・セット内のロケーションを指定するか、又は、それに対応する連続する数値であってもよい。順序付けされたデータ・セット内の特定のロケーションは、その特定のロケーションに対応するパケット識別子とともに受信されているパケットがない場合、空であってもよい。パケットが受信されると、特定のパケット識別子のうちの1つを有する第1のパケットは、そのパケットのパケット識別子に対応する順序付けされたデータ・セット内のロケーションに配置される。図示されている実例において、受信側通信装置124は、パケットP1’、D2、及びP3’を、複数の受信改変パケット140として保持する。
【0010】
順序付けされたデータ・セット(たとえば、スライディング・ウィンドウとして実装される)は、受信側通信装置124によって受信される第1のパケットのすべてに対して十分なロケーションを有しない場合がある。したがって、順序付けされたデータ・セットは、(たとえば、所定数のパケットが受信された後に)部分的に空であり、特定のパケット識別子の後続のセットを期待してリセットされる場合がある。このように、受信側通信装置124は、第1のパケットを受信したとおりに順序付け、受信改変パケット140を作成する。たとえば、順序付けされたデータ・セットは、値7~12を含む特定のパケット識別子のセットを期待している場合がある。順序付けされたデータ・セットが、特定のパケット識別子値のうちの最小値(たとえば、パケット識別子値7)を有する第1のパケットを受け入れた場合、そのパケットを順序付けされたデータ・セットから除去し、受信改変パケット140内に配置することができ、順序付けされたデータ・セットを値8~13を含む特定のパケット識別子を期待してリセットすることができる。
【0011】
次いで、受信側通信装置124は、複数の受信改変パケット140から改変を除去して、複数の再構築パケット142を得る。図示されている実例において、複数の再構築パケット142は、パケットR1~R3を含む。受信側通信装置124は、受信側メモリ128に格納されているバッファ150内に再構築メッセージ144を再構築する。再構築メッセージ144は、メッセージ130からの情報を含む。送信パケット138Sの各パケットの少なくとも1つの破損していないコピーが受信された場合、再構築メッセージ144は、メッセージ130の同一のコピーであり得る。したがって、少なくとも一実施例では、複数の再構築パケット142は、複数のパケット132と同一である。少なくとも一実施例では、受信側通信装置124は、複数の再構築パケット142をパケット化解除して、再構築メッセージ144を作成することができる。
【0012】
図2は、少なくとも一実施例による、送信側通信装置112の例示の構成要素を示す。送信側通信装置112は、パケット処理回路、又は、送信側通信装置112に帰属する機能を実施する他のハードウェアによって実装することができる。
図2を参照すると、送信側通信装置112は、送信側ホスト・インターフェース202と、パケット識別子エンジン204(たとえば、パケット・シーケンス番号(「PSN」)エンジン)と、送信側ステアリング・エンジン206と、パケット複製エンジン208と、ネットワーク106に接続されている送信側ネットワーク・インターフェース210とを含む。送信側ネットワーク・インターフェース210は、ネットワーク106に各々接続されている複数の送信側接続部212及び214(たとえば、ポート)を含む。
【0013】
送信側プロセッサ114は、送信側通信装置112の動作を制御するための、この実例においてはデータ処理アプリケーション224(たとえば、ビデオ処理アプリケーション)及びドライバ266を含む命令を実行する。命令は、送信側メモリ116によって格納することができる。送信側ホスト・インターフェース202は、送信側バス228(たとえば、PCIeバス)によって送信側プロセッサ114及び送信側メモリ116に接続される。送信側ホスト・インターフェース202は、送信側プロセッサ114から送信側バス228を介してメッセージ130を受信し、1つ又は複数の所望の伝送プロトコル(たとえば、IEEE802.1CB、SMPTE2022-7など)に従ってメッセージ130をパケット化して複数のパケット132にする。実施態様の詳細に応じて、複数のパケット132は、複製パケットを含んでもよい。
【0014】
図3は、少なくとも一実施例による、例示のパケット・フォーマット300及び320を示す。パケット・フォーマット300及び320は、IEEE802.1CB規格に準拠するパケット・フォーマットの非限定例である。フォーマット300を使用して、複数のパケット132の各々を作成することができる。
図3を参照すると、フォーマット300は、宛先アドレス・フィールド302と、発信元アドレス・フィールド304と、仮想ローカル・エリア・ネットワーク(「VLAN」)フィールド306と、データ又はペイロード・フィールド308とを含んでもよい。宛先アドレス・フィールド302、発信元アドレス・フィールド304、VLANフィールド306は全体で、パケット・ヘッダ310(たとえば、伝送プロトコル特有のパケット・ヘッダ)である。パケット・ヘッダ310は、固有のフロー又はパケット・ストリームを識別する。宛先アドレス・フィールド302及び発信元アドレス・フィールド304は各々、媒体アクセス制御(「MAC」)アドレスを格納することができる。
【0015】
パケット処理回路220は、送信側ホスト・インターフェース202と送信側ネットワーク・インターフェース210との間に結合される。単純にするために、
図2は、複数の改変パケット134及び複数の複製パケット136を作成するために使用されるパケット処理回路220のある特定の要素(たとえば、パケット識別子エンジン204、送信側ステアリング・エンジン206、及びパケット複製エンジン208)のみを示している。しかし、これらの要素は、他の目的で、他のタイプのプロトコルに従ってパケットを送信及び受信するために使用される他の構成要素と組み合わされてもよい。パケット処理回路220は、典型的には、1つ又は複数の集積回路チップ内のハードウェア論理回路内に実装される。論理は、配線若しくはプログラム可能であってもよく、又は配線要素とプログラム可能要素との組合せであってもよい。付加的に又は代替的に、パケット処理回路220の特定の機能は、組み込みマイクロプロセッサ又はマイクロコントローラによって実行されるソフトウェア又はファームウェアにおいて実装されてもよい。
【0016】
送信側ホスト・インターフェース202は、複数のパケット132をパケット識別子エンジン204(たとえば、インターネット・プロトコル・セキュリティ(「IPsec」)エンジン)に転送し、パケット識別子エンジン204は、複数のパケット識別子222を、複数のパケット132とともに送信側ステアリング・エンジン206に提供する。複数のパケット識別子222は、複数のパケット132の各々の固有のパケット識別子を含む。パケット識別子エンジン204は、各パケットについて、以前のパケット番号(ベース又は初期パケット識別子から始まる)をあるインクリメント量(たとえば、1)だけインクリメントすることによって、パケット識別子を生成することができる。
【0017】
送信側ステアリング・エンジン206は、構成可能な規則及びテーブルに従って関連パケットを分類し、パケットに対して行為を実施する。送信側ステアリング・エンジン206は、パケット処理回路220を通じたパケットの経路を決定する。送信側ステアリング・エンジン206は、規則に従って複数のパケット132の各々に1つ又は複数の伝送プロトコル特有のヘッダ及び冗長タグ(「RTAG」)又は冗長ヘッダを追加し、それによって、複数のパケット132を改変し、複数の改変パケット134を作成することができる。複数の改変パケット134の各々の冗長ヘッダは、改変パケットのパケット識別子を含む。
【0018】
図2を参照すると、リアル・タイム伝送プロトコル(「RTP」)及びIEEE802.1CBなどの多くのリアル・タイム・ストリーミング・プロトコルにおいて、各送信ストリーム内のパケットの各々は、受信側デバイス104において、失われたパケットを検出し、パケット・データを送信順序に復元するために使用することができる、PSNなどのそれぞれのシーケンス番号を含む。受信側デバイス104において、これらの並べ替え及び再構築機能は、受信側プロセッサ126の代わりに、受信側通信装置124によって実施されてもよい(
図1、
図4、及び
図8参照)。図面は、複数のストリームにおいて送信される単一のデータ通信を示しているが、受信側デバイス104は、1つ又は複数の異なる発信元からの多くのそのようなデータ通信を同時に受信し、処理することができる。非限定例として、メッセージ130は、送信側通信装置112によってビデオ・パケットにパケット化される1つ又は複数のビデオ・フレームを含んでもよい。そのような実施例において、複数のパケット132はビデオ・パケットであり、複数のパケット識別子222は、(たとえば、IEEE802.1CBに従って生成され)ビデオ・パケットに割り当てられて複数の改変パケット134のパケット識別子フィールド330(
図3参照)に格納されたPSNとして実装されてもよい。さらに、ビデオ・フレームは、スライスに分割されてもよく、各スライスは、ビデオ・パケットのうちの1つのペイロード・フィールド308(
図3参照)に格納される。スライスは各々、所定の固定サイズを有してもよい。他の非限定例として、複数のパケット識別子222は、パケット・ヘッダ324のパケット識別子フィールド330(
図3参照)に格納することができる(たとえば、他の企画に従って生成される)他のタイプのシーケンス番号として実装されてもよく、各ペイロード・フィールド308は、スライスごとの所定の固定サイズを有するデータ・セグメントのスライスを含んでもよい。
【0019】
送信側ステアリング・エンジン206は、複数の改変パケット134をパケット複製エンジン208に転送する。パケット複製エンジン208は、複数の改変パケット134のうちの各改変パケットを所定回数だけ複製し、複数の改変パケット134Sの各々及びその複製(たとえば、複数の複製パケット136S)を、複数の送信側接続部212及び214を介して受信側通信装置124に送信する。したがって、送信側通信装置112は、複数のパケット・ストリームを、複数の送信側接続部212及び214を介して各々1つずつ送信し、複数のパケット・ストリームの各々が、メッセージ130を送信する。複数の送信側接続部212及び214(たとえば、ポート)は、パケット・ストリームのそれぞれの発信元アドレスとしての役割を果たす異なるアドレスを有してもよい。代替的に、ストリームは同じポートを通じて送信されてもよい。任意選択的に、パケット処理回路220は、複数の改変パケット134を、パケット複製エンジン208によって複製される前に暗号化する暗号化構成要素を含んでもよい。
【0020】
図3を参照すると、改変フォーマット320を使用して、複数の改変パケット134の各々を作成してもよく、また、複数の複製パケット136が各々フォーマット320を有してもよい。改変フォーマット320は、宛先アドレス・フィールド302と、発信元アドレス・フィールド304と、VLANフィールド306と、ペイロード・フィールド308と、冗長ヘッダ322(たとえば、RTAGヘッダ)とを含んでもよい。宛先アドレス・フィールド302、発信元アドレス・フィールド304、VLANフィールド306、及び冗長ヘッダ322は全体で、改変パケット・ヘッダ324である。上述したように、宛先アドレス・フィールド302、発信元アドレス・フィールド304、及びVLANフィールド306に格納されている値は、固有のフロー又はパケット・ストリームを識別する。したがって、これらのフィールドのうちの少なくとも1つは、複数の改変パケット134R及び複数の複製パケット136Rの改変パケット・ヘッダ324において異なる。パケット複製エンジン208は、複数の複製パケット136において発信元アドレス・フィールド304に格納されている発信元アドレス、宛先アドレス・フィールド302に格納されている宛先アドレス、及び/又はVLANフィールド306に格納されているVLAN識別子を改変し、結果、複数の改変パケット134及び複数の複製パケット136はネットワーク106を通じて異なる経路に沿って送信され、改変パケット・ヘッダ324は、複数の複製パケット136Rにおいて、複数の改変パケット134Rとは異なる。図示されている実例において、冗長ヘッダ322は、EtherTypeフィールド326と、予約部分328と、パケット識別子フィールド330(たとえば、パケット・シーケンス番号(「PSN」)値を格納するための)とを含む。EtherTypeフィールド326は、ペイロード・フィールド308にカプセル化されているプロトコルを識別することができ、受信側デバイス104(
図1及び
図4参照)によって使用されて、ペイロードを処理する方法を決定することができる。
【0021】
パケット処理回路220は、同じパケット識別子を有する2つ以上のパケットの間のジッタ(又は遅延)を低減又は排除することができる。これは、複数の複製パケット136Rは、それらが受信側デバイス104に送信される直前までは作成されないためである。したがって、送信パケット138Sを、複数の送信側接続部212及び214(たとえば、ポート)を介して送信することができ、同じパケット識別子を有するそれらのパケット間の遅延が低下するか、又は、最小限に抑えられる(たとえば、同じパケット識別子を有するパケット間で最大100ナノ秒)。
【0022】
図4は、少なくとも一実施例による、受信側通信装置124の例示の構成要素を示す。受信側通信装置124は、パケット処理回路、又は、受信側通信装置124に帰属する機能を実施する他のハードウェアによって実装することができる。受信側プロセッサ126は、受信側通信装置124の動作を制御するための、この実例においてはデータ処理アプリケーション430(たとえば、ビデオ処理アプリケーション)及びドライバ432を含む命令を実行する。命令は、受信側メモリ128によって格納することができる。
【0023】
図4を参照すると、受信側通信装置124は、受信側ホスト・インターフェース402と、散乱エンジン404と、アンチ・リプレイ・エンジン406と、受信側ステアリング・エンジン408と、パケット解析エンジン410と、ネットワーク106に接続されている受信側ネットワーク・インターフェース412とを含む。受信側ホスト・インターフェース402は、受信側バス418(たとえば、PCIeバス)によって受信側プロセッサ126及び受信側メモリ128に接続される。
【0024】
受信側ネットワーク・インターフェース412は、ネットワーク106に各々接続されている複数の受信側接続部414及び416(たとえば、ポート)を含む。パケット・ストリーム(複数の改変パケット134R及び複数の複製パケット136R)は各々、受信側ネットワーク・インターフェース412によって受信される。たとえば、パケット・ストリームは、複数の受信側接続部414及び416によって各々1つずつ受信されてもよい。受信側ホスト・インターフェース402は、受信側ネットワーク・インターフェース412に接続され、受信側ネットワーク・インターフェース412は、ネットワーク106に接続される。複数の受信側接続部414及び416(たとえば、ポート)は、パケット・ストリームのそれぞれの宛先アドレスとしての役割を果たす異なるアドレスを有してもよい。たとえば、受信側接続部414及び416は、それぞれ複数の改変パケット134R及び複数の複製パケット136Rを受信してもよい。代替的に、ストリームは同じポートを通じて受信されてもよい。
【0025】
パケット処理回路420は、受信側ホスト・インターフェース402と受信側ネットワーク・インターフェース412との間に結合される。単純にするために、
図4は、再構築パケット144を作成するために使用されるパケット処理回路420のある特定の要素(たとえば、散乱エンジン404、アンチ・リプレイ・エンジン406、受信側ステアリング・エンジン408、及びパケット解析エンジン410)のみを示している。しかし、これらの要素は、他の目的で、他のタイプのプロトコルに従ってパケットを送信及び受信するために使用される他の構成要素と組み合わされてもよい。パケット処理回路420は、典型的には、1つ又は複数の集積回路チップ内のハードウェア論理回路内に実装される。論理は、配線若しくはプログラム可能であってもよく、又は配線要素とプログラム可能要素との組合せであってもよい。付加的に又は代替的に、パケット処理回路420の特定の機能は、組み込みマイクロプロセッサ又はマイクロコントローラによって実行されるソフトウェア又はファームウェアにおいて実装されてもよい。パケット処理回路420は、パケット処理回路420が受信及び処理する各ストリームについて別個のインスタンスを有する。
【0026】
受信側ネットワーク・インターフェース412は、受信パケット138Rをパケット解析エンジン410に転送する。パケット解析エンジン410(FlexParser)は、通常の又はネイティブのパーサ(図示せず)と協働するハードウェア・エンジンである。パケット解析エンジン410は、柔軟なパケット・フォーマット(たとえば、テープアウトにおいて部分的にのみ未知である)を解析し、結果、ステアリング及び他のステートレス・オフロードを(たとえば、受信側ステアリング・エンジン408によって)それらのパケットに対して実施することができる。各パケット・ストリームについて、パケット解析エンジン410(たとえば、FlexParser)は、パケットを解析し、冗長ヘッダ322(
図3参照)を含むパケットを識別し、それらを受信側ステアリング・エンジン408に転送する。したがって、パケット解析エンジン410は、パケット識別子(たとえば、PSN)を格納するパケット識別子フィールド330を含む、冗長ヘッダ322を有するパケットを識別する。
【0027】
受信パケット138Rを処理するために、パケット処理回路420は、受信側プロセッサ126を実行しているドライバ432によって受信側メモリ128内の適切な作業待ち行列422に入れられている情報を読み出し、利用する。この情報は、パケット解析エンジン410のパケット解析論理が、パケット識別子フィールド330(
図3参照)に格納されているパケット識別子(たとえば、PSN)及びペイロード・フィールド308(
図3参照)に格納されているペイロード424(たとえば、スライス)を受信パケット138Rの各々から位置特定し、抽出することを可能にする。
【0028】
ドライバ432は、受信パケット138Rのそれぞれの作業待ち行列422(従来から待ち行列対又はQPとして参照されている)を作成する。入来するストリーム(ビデオ・フレームなど)内の各セグメントについて、ドライバ432は、セグメント内のデータを受信することになるバッファ150を指す適切な作業待ち行列422に、対応する作業項目(作業待ち行列要素又はWQEとして参照される)に入れる。いくつかの実施例において、この機能は以下のように実施される。
・ ストリーム(たとえば、複数の送信改変パケット134S及び複数の送信複製パケット136S)が開始されるべきであることを示す制御メッセージが送信側デバイス102から受信されると、ドライバ432は、そのフロー又はストリームのQPを作成し、受信側バス418を介して受信側通信装置124によってアクセスされることになる、たとえば、受信側メモリ128内のQPコンテキストにおける以下のパラメータを指定する。
○ パケット・サイズ、
○ ヘッダ・サイズ、
○ セグメント内の期待されるパケット・シーケンス番号の範囲、
○ パケット・ヘッダ内のPSNオフセット、並びに
○ ペイロード・データのサイズ及びオフセット(データに後続するフレーム・チェックサムを除外する)。
・ いくつかの実施例において、すべてのセグメント(数十、数百、又はさらには数千のIPパケット内で通信され得る)について、ドライバ432は、受信側通信装置124によってアクセスされることになる、以下の情報を含む待ち行列422にWQEを入れる。
○ セグメント(変数「X」によって表される)の初期パケット識別子(たとえば、PSN)、及び
○ セグメントを再構築するために使用されるバッファ150の初期又はベース・アドレス(変数「A」によって表される)。
したがって、WQEは、バッファ150のロケーション及び内容を指定し、これは、QP内容によって示されるペイロード・サイズのスライス又はペイロード424に分割される。いくつかの実施態様において、WQEは、バッファ150にアクセスする際に受信側通信装置124によって使用されることになる、メモリ・キー(「MKEY」)を含む。代替的に、上記の情報は、QPコンテキストに含まれてもよく、これは、受信側通信装置124がペイロード424を連続して書き込む先である循環バッファを指す(したがって、継続的にバッファを配分し、WQEを入れるソフトウェアの負担を軽減する)。
・ ドライバ432は、第1のストリーム及び第2のストリームを認識し、それらを同じQPと関連付ける。
【0029】
受信側ステアリング・エンジン408は、構成可能な規則及びテーブルに従ってパケットを分類し、パケットに対して行為を実施する。受信側ステアリング・エンジン408は、パケット処理回路420を通じたパケットの経路を決定する。受信側ステアリング・エンジン408は、冗長ヘッダ322内部のパケット識別子を識別し、パケット識別子及び関連するペイロードをアンチ・リプレイ・エンジン406へとルーティングする。
【0030】
アンチ・リプレイ・エンジン406は、ネットワーク106内の2つのノード(たとえば、送信側デバイス102及び受信側デバイス104)の間に安全な接続を確立するために使用されるプロトコルであるアンチ・リプレイ保護(たとえば、セキュリティ暗号化パイプラインの一部としての)を提供する。アンチ・リプレイ・エンジン406は、悪人がパケット・ストリームにパケットを注入すること、又は、パケット・ストリーム内の既存のパケットに変更を行うことを防止するのを助けることができる。アンチ・リプレイ・エンジン406は、悪人が多数の同一のパケットを用いて受信側デバイス104を圧倒し又はフラッディングするサービス拒否攻撃を、悪人が実行することを防止するのを助けることができる。アンチ・リプレイ・エンジン406によって実施されるプロトコルは、送信側デバイス102と受信側デバイス104との間で接続が確立されるときを指定し、ベース又は初期パケット識別子(たとえば、PSN)が確立される。プロトコルはまた、連続するパケットが割り当てられ、その初期パケット識別子(変数「X」によって表される)からインクリメントされたパケット識別子(たとえば、PSN)とともに送信されること、並びに、いずれのパケットが通されるべきであるか、及び、いずれのパケットが廃棄されるべきでるかを判定するために、アンチ・リプレイ・エンジン406が、スライディング・ウィンドウ内で受信されるパケットを評価することも指定する。たとえば、スライディング・ウィンドウのサイズが10パケットに設定されており、スライディング・ウィンドウが、パケット識別子値1~10を期待しており、アンチ・リプレイ・エンジン406が、スライディング・ウィンドウ内で10個のパケット[1,2,3,4,5,6,7,9,10,11]をこの順序において受信し、アンチ・リプレイ・エンジン406が8番目のパケットをスライディング・ウィンドウの外部で受信する場合、アンチ・リプレイ・エンジン406は8番目のパケットを廃棄する。代替的に、8番目のパケットはエラー待ち行列に格納されてもよく、受信側プロセッサ126によって実行される命令によって処理されてもよい。上述したように、パケット処理回路420は、パケット処理回路420が受信及び処理する各ストリームについて別個のインスタンスを有する。したがって、アンチ・リプレイ・エンジン406は、各ストリームに対して別個のインスタンス及びスライディング・ウィンドウを有する。アンチ・リプレイ・エンジン406は、これらの別個のスライディング・ウィンドウを組み合わせて組み合わせスライディング・ウィンドウにすることができ、結果、各固有のパケット識別子と関連付けられる1つのパケットのみがアンチ・リプレイ・エンジン406によって通される。別個のスライディング・ウィンドウ及び/又は組み合わせスライディング・ウィンドウのサイズは、ユーザによって設定されるパラメータ値であってもよい。たとえば、ユーザは、別個のスライディング・ウィンドウ及び/又は組み合わせスライディング・ウィンドウのサイズを、受信側デバイス104によって生成され、受信側デバイス104及び/又は受信側デバイス104に接続されているディスプレイ・デバイスによって表示されるグラフィカル・ユーザ・インターフェース(図示せず)に入力してもよい。したがって、アンチ・リプレイ・エンジン406は、パケット識別子に少なくとも部分的に基づいて各パケットを通し又は廃棄すべきかを判定し、結果、パケット識別子の各固有の値を含む最大でも単一のパケットが、散乱エンジン404に通される。受信パケット138Rによって使用される改変フォーマット320は、それらのパケットをアンチ・リプレイ・エンジン406には通常のパケットに見えるようにし、アンチ・リプレイ・エンジン406は、それらを追跡し、アンチ・リプレイ・エンジン406が悪人又は悪意あるパケット発信元から受信される複製パケットを排除するのと同じように、複製を排除する。任意選択的に、パケット処理回路420は、受信パケット138Rを、アンチ・リプレイ・エンジン406によって処理される前に解読する解読構成要素を含んでもよい。
【0031】
散乱エンジン404は、パケット識別子(たとえば、PSN)をバッファ150のベース・アドレス(変数「X」によって表される)とともに使用して、各ペイロード424(たとえば、スライス)をバッファ150内のそれぞれのアドレスにマッピングし、したがって、受信側ネットワーク・インターフェース412を介して適切なアドレスにデータ・ペイロード424を書き込む。言い換えれば、散乱エンジン404は、受信側メモリ128に格納されている再構築メッセージ144内のパケットのペイロードの正確なメモリ・ロケーション又はアドレスを判定する。散乱エンジン404は、メモリ・アドレス及びパケット・ペイロードを受信側ホスト・インターフェース402に転送し、受信側ホスト・インターフェース402は、それらを、受信側メモリ128に格納されている再構築メッセージ144に格納するために、受信側プロセッサ126及び/又は受信側メモリ128に送信する。システム100は、受信側通信装置124の内部の複製パケットを排除し、受信側バス418を介して各パケットの1つのコピーのみを送信することによって、受信側バス418に対する負荷を低減するのを助けることができる。したがって、システム100(
図1参照)は、単一のパケット・セットから再構築されるデータのみが受信側バス418上で送信されることを保証するのを助ける。受信側通信装置124は、再構築メッセージ144が完成するときを受信側プロセッサ126に通知する。
【0032】
いくつかの実施例において、受信側プロセッサ126は、期待されるセグメント・サイズ及びデータ・レートに基づいて単一のバッファ150を配分する。これらのストリーム・パラメータは、事前設定されてもよく、又は、ネットワーク106を介して送信側デバイス102と受信側デバイス104との間で制御メッセージ内で送信されてもよい。そのような実施例において、パケット・サイズは固定であってもよく、受信側プロセッサ126に対して既知であってもよい。各送信パケットは、RTP又は別の適切なプロトコルによって提供されるものとしての、連続するパケット識別子(たとえば、PSN)によってラベル付けされる。
【0033】
受信側通信装置124のハードウェア論理は、既知のパケット・データ・サイズ及び複数のパケット識別子222(
図2参照)を使用して、データ完全性を検査し、任意選択的にパケットを並べ替え、冗長データを排除する。したがって、受信側通信装置124は、冗長パケットからのデータを廃棄しながら、送信順序に従って(且つ、受信順序とは関係なしに)データ・ペイロード424を配分されたバッファ150内の適切なロケーションに書き込む。したがって、パケット受信及び並べ替えのプロセスは、完全なデータ・セグメントにのみ対処し得る受信側プロセッサ126に対して完全にトランスペアレントであり得る。受信側通信装置124がワイヤ・スピードにおいてネットワーク106からデータを受信することが可能であると仮定すると、受信側デバイス104におけるビデオ・データ転送の待ち時間及びスループットは、受信側通信装置124の処理及びバスアクセス速度のみによって制限される。したがって、システム100(
図1参照)は、データ帯域幅を最大化し、且つ/又は、受信側プロセッサ126の処理負荷、メモリ・フットプリント、及び電力消費を大幅に低減することができる。
【0034】
上記の実施例は、具体的には送信側デバイス102が複数のパケット・ストリーム(冗長性を有する)を受信側デバイス104に送信するシナリオに関連するが、システム100は、単一のパケット・ストリーム(冗長性なし)、及び、より高度な冗長性を使用したパケット・ストリームを送信してもよい。受信側通信装置124は、パケット識別子222の線形マッピングを使用して、ペイロード・フィールド308(
図3参照)に格納されているデータ・ペイロードを、割り当てられているメモリ・バッファ150内のそれぞれのアドレスにマッピングする際に、複数のパケット識別子222を、スライスごとの固定サイズとともに使用する。たとえば、代替的な実施例(
図5及び
図6に示すような)において、パケット・ストリームは、拡張共通公衆無線インタフェース(「eCPRI」)に従って送信され、受信側通信装置124によってバッファ150に書き込まれることになるデータ・ペイロードは、無線データを含む。これらの実施例のうちの1つにおいて、ヘッダ310は、オープン無線アクセス・ネットワーク(「O-RAN」)アプリケーション層ヘッダを含み、O-RANヘッダに含まれる開始物理リソース・ブロック(「startPrbu」)値が、パケット識別子としての役割を果たす。
【0035】
非限定例として、システム100は、たとえば、送信側デバイス102が自動機械工具であり、受信側デバイス104がコントローラ又はサーバである工業アプリケーション内で、工業アプリケーションへと、及び、工業アプリケーションからパケットを送信するために使用されてもよい。別の非限定例として、システム100は、自律車両内で、自律車両へと、及び、自律車両からパケットを送信するために使用されてもよい。典型的な自律車両(たとえば、送信側デバイス102)は、信頼できないトランスポート・プロトコルを使用して1つ又は複数のプロセッサ(たとえば、受信側デバイス104の受信側プロセッサ126)に送信されるリアル・タイム・データを収集するいくつかのセンサを有する。しかし、安全上の理由から、自律車両内で、自律車両へと、及び、自律車両から送信される情報は、信頼可能に受信されなければならない。情報(たとえば、センサ・データ)が信頼可能に受信されるのを助けるために、複製パケットが異なる通信チャネルを介して送信されることを要求する、電気電子技術者協会(「IEEE」)802.1CBなどの規格が開発された。IEEE802.1CB及び同様のプロトコルは、フレーム複製及び排除プロトコルを指定する。システム100は、そのような規格を実装するために使用されてもよい。
【0036】
また別の非限定例として、システム100は、信頼できないトランスポート・プロトコルを使用して(たとえば、ユーザ・データグラム・プロトコル(「UDP」)を使用してインターネットを介して)放送(たとえば、ライブ)テレビジョンを送信及び受信するために使用され得る。たとえば、ビデオ・カメラは、イベントの画像又はビデオ・フレームを捕捉し、それらを送信側デバイス102に送信してもよく、送信側デバイス102は、送信パケット138Sを受信側デバイス104に送信する。1つ又は複数のパケットの紛失又は破損など、送信パケット138Sの部分に何かが起きた場合、カメラは単純に再捕捉することができず、ビデオ・カメラは単純に画像を再捕捉することができず、送信側デバイス102は、単純に失われた又は破損したパケットを再送信することができない。これは、ビデオ・フレームにおいて捕捉されたイベントが、ブロードキャストにおいてもはや使用可能でない場合があるためである。ブロードキャスト・メッセージに対するパケットの紛失又は破損の影響を低減するのを助けるために、複製パケットが異なる通信チャネルを介して送信されることを必要とする、映画テレビ技術者協会(「SMPTE」)2022-7などの規格が開発された。SMPTE2022-7が使用される場合、IEEE802.1CB又は別のプロトコルが、フレーム複製及び排除プロトコルを指定するために使用されてもよい。後述するように、システム100は、そのような規格を実装するために使用されてもよい。
【0037】
図5は、少なくとも一実施例による、複数の送信(「Tx」)ホスト・コンピュータ524、526、及び528と、パケット・データ・ネットワーク522と、受信(「Rx」)ホスト・コンピュータ540とを含む例示的なデータ通信システム500を概略的に示すブロック図を示す。Txホスト・コンピュータ524、526、及び528は各々、送信側デバイス102(
図1及び
図2参照)の実施態様であり、パケット・データ・ネットワーク522は、ネットワーク106(
図1、
図2、及び
図4参照)の実施態様であり、Rxホスト・コンピュータ540は、受信側デバイス104(
図1及び
図4参照)の実施態様である。したがって、Txホスト・コンピュータ524、526、及び528並びにRxホスト・コンピュータ540は各々、パケット・データ・ネットワーク522に接続される。非限定例として、パケット・データ・ネットワーク522は、インターネット・プロトコル(「IP」)ネットワークとして実装されてもよい。
【0038】
図示されている実施例において、Txホスト・コンピュータ524、526、及び528の各々は、たとえば、それぞれのビデオ・カメラ530からストリーミング入力データを受信する。この入力データは、ビデオ・フレーム又はフィールド(たとえば、所定サイズの)などの、一連のデータ・セグメントを含む。Txホスト・コンピュータ524、526、及び528の各々は、各々がヘッダ310(
図3参照)及びペイロード・フィールド308(
図3参照)に格納されたデータ・ペイロードを有するデータ・パケットのストリームにデータをカプセル化する。データ・ペイロードは各々、所与のデータ・セグメントのそれぞれのスライスを含む所定の固定サイズのものであってもよい。上述したように、ヘッダ310は、それぞれのパケット識別子フィールド330(たとえば、startPrbu値及び/又はPSNを格納する)を含む。
図5において、Txホスト・コンピュータ524、526、及び528並びにそれぞれのビデオ・カメラ530は、概念を明確にするために、別個の物理的実体として示されているが、いくつかの実施態様において、ホスト・コンピュータはビデオ・カメラに(典型的には送信側通信装置112もともに)組み込まれる。
【0039】
Txホスト・コンピュータ524、526、及び528の各々の送信側通信装置112は、
図5において破線の矢印によって示されている2つパケット・ストリーム534及び536において、パケット・データ・ネットワーク522を介してデータ・パケットを送信する。ストリーム534は、複数の改変パケット134R(
図1及び
図4参照)を含み、ストリーム536は、複数の複製パケット136R(
図1及び
図4参照)を含む。したがって、各スライスのコピーが、2つのパケット・ストリーム534及び536の各々の中で1つの、2つのパケットにおいて同時に送信される。ストリーム534及び536は、典型的には、たとえば、ネットワーク522内で異なるスイッチ538にそれぞれ接続されている、送信側通信装置112の複数の送信側接続部212及び214(たとえば、ポート)のうちの異なるものを通じてストリーム534及び536の各々を送信することによって、異なるそれぞれの経路を介してネットワーク522を通じて送信される。パケットは、典型的には、任意の特定のパケットがその宛先に到達するという保証を提供しない、RTPオーバUDPトランスポートなどの信頼できないトランスポート・プロトコルを使用して送信される。2つのストリーム534及び536を送信することによって、Txホスト・コンピュータ524は、各パケットの少なくとも1つのコピーが、いくつかの例外を伴って、その宛先に到達することを保証する。さらにより高い送達確度を求めて、2つ又はさらにはそれを超える冗長ストリーム(各々ストリーム536のような)が、本明細書において説明されているように、送信され、Rxホスト・コンピュータ540において対処されてもよい。代替的に、上記のように、本明細書において説明されている技法は、冗長性が必要とされない場合に、Rxホスト・コンピュータ540の受信側通信装置124によって単一でさえあるパケット・ストリームに効率的に対処するのに有用である。
【0040】
ストリーム534及び536、並びに、他のTxホスト・コンピュータ526及び528によって送信されるパケット・ストリームは、受信側通信装置124によってネットワーク522に接続されるRxホスト・コンピュータ540にアドレス指定される。ネットワーク522からデータ・パケットを受信すると、受信側通信装置124は、複数のパケット識別子222(たとえば、startPrbu値及び/又はPSN)を使用して、パケット・ストリーム534及び536内のパケットを、Rxホスト・コンピュータ540の受信側メモリ128内のバッファ150内のそれぞれのアドレスにマッピングする。受信側通信装置124は、冗長データを排除しながら、データ・ペイロードをそれぞれのアドレスに書き込み、結果、バッファ150は、複数のパケット識別子222(たとえば、startPrbu値及び/又はPSN)に従って順序付けされた、データ・セグメントの各スライスの正確に1つのコピーを含む。したがって、ビデオ・フレームは、再送信(たとえば、テレビジョン・ネットワークを介した)又は他のアクセスのために、受信側メモリ128内で直ちに利用可能である。
【0041】
図6は、一実施例による、受信側通信装置124によって実施することができるデータ再構築のプロセス600を概略的に示すブロック図を示す。ビデオ・カメラ530(
図5参照)の各々が、送信側通信装置112によるデータ・パケット652~658のシーケンスにおける送信のためにスライスに分割される画像フレーム650を捕捉する。データ・パケット652~658の各々は、パケット識別子662(たとえば、PSN、startPrbu値など)を含むヘッダ660と、画像フレーム650のそれぞれ1つのスライスを含むペイロード664とを含む。送信側通信装置112は、パケット652、654、656、658(たとえば、ストリーム534及び536の各々の中の1つのパケット)の各々の2つのコピーを送信する。
【0042】
図示されている実施例において、パケット652~658のうちの1つ又は複数は、ネットワーク522を通じた送信において喪失又は破損し、他は順序外で受信側通信装置124に到達する。受信側通信装置124は、たとえば、適用可能なプロトコルによって提供されるものとしての、パケット・チェックサム又は他のエラー検出コードを計算し、検査することによって、破損パケットを検出及び廃棄する。図示されている実例において、受信側通信装置124は、ストリーム534からのパケット654、658及び656(その順序における)並びにストリーム536からのパケット652、656及び658のみを受信している。しかしながら、パケット識別子662を使用して、受信側通信装置124は、適切なペイロード664からデータを受信側メモリ128(
図1、
図4、
図5、及び
図8参照)内の指定されたバッファ150内に直接的に配置し、したがって、受信側メモリ128において完全な画像フレーム668を再構築することが可能である。前述したように、受信側通信装置124は、冗長データを排除し、結果、バッファ150は、パケット識別子662に従って順序付けされた、フレーム650の各スライスの正確に1つのコピーを含む。再構築のプロセスは、Rxホスト・コンピュータ540(
図5参照)上で作動するソフトウェアに対してトランスペアレントであってもよく、データ並べ替え又は排除冗長性においてソフトウェア又は受信側プロセッサ126(
図1、
図4、及び
図8)による関与を必要としない。
【0043】
図7は、少なくとも一実施例による、受信側通信装置124によって実施されるパケット・データを直接的に配置するための方法の詳細を概略的に示すブロック図を示す。
図7は、散乱エンジン404(
図4参照)がバッファ150内にパケット・データを配置する際にビデオ・パケットのRTPヘッダ700に格納されているパケット識別子662をどのように使用するかを示している。非限定例として、受信側通信装置124は、以下のビデオ・ネットワーキング・プロトコルを同様に処理することができる。
・ SMPTE2022-5/6/7
・ VSF TR-03/IETF RFC4175
・ intoPIX TICO
・ Sony IP Live RDD34及びNMI
・ NewTek
・ GigE vision GVSP
【0044】
図7に示すパケットは、すべてのパケットのペイロード・サイズが固定であり、事前に分かっているストリームに属する。受信側プロセッサ126(
図1、
図4、及び
図8参照)上で作動するドライバ432(
図4参照)は、上記で説明したように、ストリーム内の各データ・セグメントが書き込まれることになるバッファ150のベース・アドレスを割り当て、これを受信側通信装置124に通知する。パケット・ヘッダ660内で、RTPヘッダ700は、パケット識別子662(たとえば、PSN)に加えて、タイムスタンプ702及び他のプロトコル情報704を含む。ドライバ432によって提供されるコンテキスト情報に基づいて、パケット解析エンジン410のパケット解析論理は、各パケット内のパケット識別子662の既知のロケーションへと進み、パケット識別子662を抽出するとともに、ペイロード664からデータ・スライス80を抽出する。これに基づいて、散乱エンジン404は、パケット識別子662(たとえば、PSN)の単純な線形変換によって、ペイロード664からのデータ・スライスをバッファ150に適切な順序で書き込むことが可能である。
【0045】
言い換えれば、変数「X」によって表される初期パケット識別子から始まり、各パケット内のデータ・ペイロードが変数「B」によって表されるサイズ、及び、変数「A」によって表されるバッファ150内のベース・アドレスを有するパケット・ストリームについて、散乱エンジン404(
図4参照)は、変数「PSN」によって表されるパケット識別子を有する各パケットのペイロードを、下記の式1によって決定されるアドレスに書き込む。
ペイロード・アドレス=A+(PSN-X)×B 式1
【0046】
冗長送信方式における異なるそれぞれのストリームからの2つの有効パケットのペイロードが同じアドレスにマッピングする場合(それらのPSNが同じであるか又は異なるかにかかわらず)、それらのうちの一方のみが最終的にバッファ150に書き込まれる。散乱エンジン404は、バッファ150に最初に到着するパケットのペイロードのみを書き込み、他のパケットのペイロードを廃棄することができる。
【0047】
いくつかのプロトコルについて、セグメント定義もパケット・ヘッダ660において示され、したがって、ドライバ432の関与をさらにより低減する代替的な実施態様が可能になる。たとえば、受信側通信装置124は、以下のように動作してもよい。
・ ほとんどのビデオ・アプリケーション内のセグメントは、単一のフレーム(又はインターレース・ビデオの単一のフィールド)に対応する。
・ いくつかのビデオ・プロトコルにおいて、フレーム・エンド・マーカがパケット・トランスポート・ヘッダに入力される。セグメント内の最初のパケット及び最後のパケットが、それらが最初の又は最後のパケットであることを示すトランスポート・ヘッダ内の特別なフィールドによって識別される。
・ フレーム・サイズが固定であり、フレームの始まり及び終わりがこのようにヘッダ内でマークされる場合、受信側通信装置124は、開始マーカが受信されると、配分されたホスト・バッファへのデータの書き込みを自動的に開始することができる。したがって、セグメント境界を指定する必要性も、受信側通信装置124のソフトウェアからハードウェア論理へとオフロードされる。
【0048】
受信側通信装置124が非常に高速に動作するNICとして実装される場合(たとえば、400Gbpsにおいて入来ビデオ・データを受信する)、NICから受信側バス418を介した受信側メモリ128へのアクセスがボトルネックになる可能性がある。受信側バス418に対する圧を低減するために、パケット処理回路420は、パケット識別子(たとえば、PSN)を監視し、1つのストリームにおける特定のパケット識別子を有する所与のパケットからのペイロードがバッファ150にすでに書き込まれている場合、すでにバッファ150にあるデータを上書きするのではなく、他のストリームからの対応するパケットを単純に廃棄することができる。この目的のために、パケット処理回路420は、パケット識別子(たとえば、PSN)ベクトル及びローリング・パケット識別子(たとえば、PSN)ウィンドウ(たとえば、スライディング・ウィンドウ)などのレコードを各フローについて維持することができる。各パケット到着によって、処理回路420は、パケット識別子(たとえば、PSN)ベクトル内のビットを反転させる。所与のパケット識別子のビットが設定されており、他のストリームからの対応するパケットが到着すると、パケット解析エンジン410のパケット解析論理は、この後者のパケットをさらに処理することなく破棄する。
【0049】
図8は、少なくとも一実施例による、無線データを送信するためのデータ通信システム810を概略的に示すブロック図を示す。システム810は、拡張共通公衆無線インターフェース(「eCPRI」)仕様、及び、O- RAN Allianceによって技術仕様書ORAN-WG4.CUS.0-v01.00(2019)として公開されているO-RAN Fronthaul Working Group Control, User and Synchronization Plane Specificationに定義されているようなオープン無線アクセス・ネットワーク(O-RAN)フロントホール要件に従って動作する。
【0050】
システム810は、受信側デバイス104、送信側デバイス102、及びネットワーク106の実施態様であるO-RAN分散ユニット(「O-DU」)812、O-RAN無線ユニット(O-RU)814、及びネットワーク816を含む。システム810において、O-DU812は、上述したeCPRI及びO-RAN仕様に従って、たとえばIPネットワークなどのネットワーク816を介してO-RU 814と通信する。O-DU812は、受信側プロセッサ126(たとえば、1つ又は複数の汎用コンピュータ・プロセッサ)を含み、受信側プロセッサは、受信側メモリ128を有し、受信側通信装置124によってネットワーク816に接続される。O-RU814は、送信側プロセッサ114(たとえば、1つ又は複数の汎用コンピュータ・プロセッサ)を含み、送信側プロセッサは、送信側メモリ116を有し、送信側通信装置112によってネットワーク816に接続される。O-DU812及びO-RU814は典型的には、他の専用インターフェースを含む。たとえば、O-RU814は、アンテナ820に接続されている無線トランシーバ818を含んでもよい。
【0051】
O-RU814は、ネットワーク816を介して、それぞれのヘッダ、及び、O-RU814によって受信される無線信号のデータ・セグメントを含むデータ・ペイロードを含むデータ・パケットのシーケンスを送信する。各データ・セグメントは、典型的には、O-RAN仕様(特に95ページの表6-2を含む6.3節を参照されたい)によって定義されるように、交互のiサンプル及びqサンプルを含むデータ・サンプルの形態のスライスに分割される、1つ又は複数の物理リソース・ブロック(「PRB」)を含む。これらのサンプルは、
図9を参照しながら下記に説明されるように、各パケットのO-RANヘッダ内で定義される、サンプルあたり1ビット~16ビットの固定サイズを有する。送信側通信装置112(たとえば、NIC)は、典型的には、eCPRIオーバUDPトランスポートなどの信頼できないトランスポート・プロトコルを使用して、ネットワーク816を介してデータ・パケットを送信する。ネットワーク816からデータ・パケットを受信すると、受信側通信装置124(たとえば、NIC)は、パケットに含まれるサンプルを、O-DU812の受信側メモリ128内のバッファ150内のそれぞれのアドレスにマッピングし、サンプルは、パケット内のO-RANヘッダに含まれるそれぞれのパケット識別子(たとえば、シーケンス番号)に従って、バッファ150内で順序付けされる。したがって、無線データは、O-DU812による処理にとって適切な順序において、受信側メモリ128内で直ちに利用可能にされる。
【0052】
図9は、
図8の実施例による、受信側メモリ128内のバッファ150内にパケット・データを直接的に配置するための方法を概略的に示すブロック図を示す。本方法は、O-DU812によって受信されるO-RANデータ・パケットに適用される。図示を容易にするために、
図9は、O-DU812によって受信されるパケットのうちの1つであるパケット900を示している。パケット900は、IPヘッダ934と、UDPヘッダ936と、たとえば上述したO-RAN仕様の3.1.3節(32ページ)において定義されているようなeCPRIヘッダ938とを含むネットワーク・トランスポート・ヘッダ932を含む。ネットワーク・トランスポート・ヘッダ932には、O-RANアプリケーション・ヘッダ940(O-RAN仕様の表6-2において定義されているような)、及び、データ・サンプルのシーケンスを含むペイロード942が後続する。IPヘッダ934は、宛先アドレス・フィールド(
図3に示す宛先アドレス・フィールド302のような)及び発信元アドレス・フィールド304(
図3に示す発信元アドレス・フィールド304のような)を含むことができる。UDPヘッダ936は、パケットが送信されたポートを識別するUDP発信元ポート・フィールド(図示せず)、及び、パケットが送信される先であるポートを識別するUDP宛先ポート・フィールド(図示せず)を含んでもよい。
【0053】
パケット複製エンジン208は、複数の複製パケット136内のIPヘッダ934(たとえば、発信元アドレス・フィールドに格納されている発信元アドレス、又は、宛先アドレス・フィールドに格納されている宛先アドレス)、及び/又は、UDPヘッダ936(たとえば、UDP発信元ポート・フィールドに格納されている値及び/又はUDP宛先ポート・フィールドに格納されている値)を改変し、結果、複数の改変パケット134及び複数の複製パケット136はネットワーク106を通じて異なる経路に沿って送信され、改変パケット・ヘッダ324は、複数の複製パケット136Rにおいて、複数の改変パケット134Rとは異なる。
【0054】
O-RANヘッダ940は、ペイロード942内のデータ・セグメントのデータ・レイアウトを定義するセクションIDフィールド946が後続するフレームID944のセットを含む。これらのセクションIDフィールド946は、とりわけ、パケット900内の開始物理リソース・ブロック(「PRB」)を識別し、したがって、ペイロード942内のサンプルをマッピングすることを目的としたシーケンス番号としての役割を果たすことができるstartPrbuフィールド948を含む。numPrbuフィールド950が、このセクション内の連続するPRBの数を示し、udCompHdrフィールド951が、各サンプルのビット単位のサイズ、すなわち、ペイロード942内のPRBの各スライスのサイズを示す。データ・パケットが複数のデータ・セクションを含む場合、セクションIDフィールド946は、各セクションのヘッダとして繰り返される。
【0055】
受信側通信装置124は、ペイロードからデータ・サンプルを抽出し、startPrbuフィールド948内のstartPrbu値の線形マッピングを使用して、それらを受信側メモリ128内のバッファ150内のそれぞれのアドレス954に書き込む。startPrbu値は、受信側通信装置124が各セクション内の最初のサンプルを書き込むことになり、その後、後続のサンプルを連続的に書き込むアドレス154を示す。具体的には、本実施例において、受信側通信装置124は、各セクション内の最初のサンプルについて、下記の式2を使用してサンプルをアドレス154にマッピングする。
ペイロード・アドレス=A+(SN-X)×B 式2
【0056】
この式において、変数「X」は、初期パケット識別子(たとえば、シーケンス番号)を表し、変数「SN」は、startPrbuフィールド148内のstartPrbu値から得られる現在のパケット識別子(たとえば、シーケンス番号)を表し、変数「B」は、udCompHdrフィールド151内のudCompHdr値から得られるサンプルの固定サイズを表し、変数「A」は、バッファ150のベース・アドレスを表す。
【0057】
上述した実施例は、O-RU814からO-DU812へのデータの送信を特に参照しているが、この実施例の原理は、同様に、O-DU812によって送信されるデータをバッファリングするときにO-RU814によって同様に適用することができる。
【0058】
図10は、少なくとも一実施例による、送信側デバイス102によって実施することができる方法1000の流れ図を示す。最初のブロック1002において、送信側プロセッサ114が、メモリ118に格納されているメッセージ130又はメッセージ130へのリンクを送信側通信装置112の送信側ホスト・インターフェース202に送信する。送信側プロセッサ114は、ビデオ・カメラ(たとえば、ビデオ・カメラ530)から画像フレームを受信するデータ処理アプリケーション224(たとえば、ビデオ処理アプリケーション)を実行することができる。送信側プロセッサ114は、メッセージ130又は当該メッセージへのリンクを、送信側バス228を介して、ドライバ226を使用して送信側ホスト・インターフェースに通信することができる。
【0059】
次のブロック1004において、送信側ホスト・インターフェース202が、メッセージ130をパケット化することによって複数のパケット132を作成し、複数のパケット132をパケット識別子エンジン204に転送する。ブロック1006において、パケット識別子エンジン204が、複数のパケット132のパケット識別子を作成し、パケット識別子と複数のパケット132の両方を送信側ステアリング・エンジン206に転送する。ブロック1008において、送信側ステアリング・エンジン206が、複数のパケット132の各々に冗長ヘッダ322(
図3参照)を追加することによって複数の改変パケット134を作成し、複数の改変パケット134をパケット複製エンジン208に転送する。ブロック1010において、パケット複製エンジン208が、複数の改変パケット134を複製することによって複数の複製パケット136を作成し、複数の改変パケット134と複数の複製パケット136の両方を送信側ネットワーク・インターフェース210に転送する。ブロック1012において、送信側ネットワーク・インターフェース210が、複数の改変パケット134及び複数の複製パケット136を、ネットワーク106を介して受信側通信装置124に送信する。したがって、ブロック1012において、送信側ネットワーク・インターフェース210が、複数の送信改変パケット134S及び複数の送信複製パケット136Sを含む送信パケット138Sを、ネットワーク106を介して受信側通信装置124に送信する。その後、方法1000は終了する。
【0060】
図11は、少なくとも一実施例による、受信側デバイス104によって実施することができる方法1100の流れ図を示す。最初のブロック1102において、受信側ネットワーク・インターフェース412は、受信パケット138Rを受信し、それらをパケット解析エンジン410に転送する。ブロック1104において、パケット解析エンジン410が、受信パケット138Rの各々を解析し、パケットのうち、冗長ヘッダ322(
図3参照)を含むものを識別し、識別されたパケットを受信側ステアリング・エンジン408に転送する。ブロック1106において、受信側ステアリング・エンジン408が、識別された各パケット内のパケット識別子を識別し、バッファ情報を得、バッファ情報、パケット識別子、及びペイロードをアンチ・リプレイ・エンジン406に転送する。受信側ステアリング・エンジン408は、ドライバ432からバッファ情報を得ることができる。非限定例として、バッファ情報は、MKEY、バッファ150のベース・アドレスなどを含んでもよい。ブロック1108において、アンチ・リプレイ・エンジン406は、受信パケット138Rの各々について、パケットが散乱エンジン404に転送されるか、又は廃棄されるかを判断する。ブロック1110において、散乱エンジン404が、各転送パケットの各ペイロードのバッファ150内のアドレスを決定し、アドレス及びペイロードを受信側ホスト・インターフェース402に転送する。ブロック1112において、受信側ホスト・インターフェース402は、ペイロードをそれらのそれぞれのアドレスに格納する。ブロック1114において、散乱エンジン404は、再構築メッセージ144が完成するときを、受信側ホスト・インターフェース402を介して受信側プロセッサ126に通知する。その後、方法1100は終了する。
【0061】
以下の説明において、少なくとも一実施例のより完全な理解を提供するために、多数の特定の詳細が記載される。しかしながら、本発明の概念はこれらの特定の詳細のうちの1つ又は複数なしに実施されることができることは当業者には明らかであろう。
【0062】
サーバ及びデータ・センタ
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的なネットワーク・サーバ及びデータ・センタ・ベースのシステムを記載する。
【0063】
図12は、少なくとも一実施例による、分散システム1200を示す。少なくとも一実施例では、分散システム1200は、ウェブ・ブラウザ、専用クライアント、及び/又はそれらの様々な変形例を、1つ又は複数のネットワーク1210を介して実行及び操作するように構成されている、1つ又は複数のクライアント・コンピューティング・デバイス1202、1204、1206、及び1208を含む。少なくとも一実施例では、サーバ1212は、ネットワーク1210を介して、遠隔したクライアント・コンピューティング・デバイス1202、1204、1206、及び1208と通信可能に結合されてもよい。
【0064】
少なくとも一実施例では、サーバ1212は、複数のデータ・センタをまたぐシングル・サイン・オン(SSO)アクセスのセッション活動を管理することができるサービス及びアプリケーションなどの1つ又は複数のサービス又はソフトウェア・アプリケーションを実行するように適合されてもよい。少なくとも一実施例では、サーバ1212はまた、非仮想及び仮想環境を含むことができる他のサービス又はソフトウェア・アプリケーションを提供することもできる。少なくとも一実施例では、これらのサービスは、ウェブ・ベースのサービス若しくはクラウド・サービスとして、又は、サービス型ソフトウェア(SaaS)モデルの下でクライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208のユーザに提供されてもよい。少なくとも一実施例では、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208を操作するユーザは、次いで、1つ又は複数のクライアント・アプリケーションを利用して、サーバ1212とインタラクトしてこれらの構成要素によって提供されるサービスを利用することができる。
【0065】
少なくとも一実施例では、システム1200のソフトウェア構成要素1218、1220及び1222は、サーバ1212上で実装される。少なくとも一実施例では、システム1200の1つ若しくは複数の構成要素及び/又はこれらの構成要素によって提供されるサービスはまた、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208のうちの1つ又は複数によって実施されてもよい。少なくとも一実施例では、クライアント・コンピューティング・デバイスを操作するユーザは、次いで、1つ又は複数のクライアント・アプリケーションを利用して、これらの構成要素によって提供されるサービスを使用することができる。少なくとも一実施例では、これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せにおいて実装されてもよい。分散システム1200とは異なってもよい、様々な異なるシステム構成が可能であることが諒解されるべきである。したがって、
図12に示す実施例は、実施例のシステムを実装するための分散システムの1つの実例であり、限定であるようには意図されていない。
【0066】
少なくとも一実施例では、クライアント・コンピューティング・デバイス1202、1204、1206、及び/又は1208は、様々なタイプのコンピューティング・システムを含んでもよい。少なくとも一実施例では、クライアント・コンピューティング・デバイスは、携帯型ハンドヘルド・デバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティング・タブレット、個人情報端末(PDA))又はウェアラブル・デバイス(たとえば、Google Glass(登録商標)ヘッド・マウント・ディスプレイ)、Microsoft Windows(登録商標) Mobile(登録商標)などの実行中のソフトウェア、及び/若しくはiOS、Windows(登録商標) Phone、Android、BlackBerry10、Palm OSなどの様々なモバイル・オペレーティング・システム、並びに/又は、それらの変形例を含んでもよい。少なくとも一実施例では、デバイスは、様々なインターネット関連アプリ、電子メール、ショート・メッセージ・サービス(SMS)アプリケーションなどの様々なアプリケーションをサポートすることができ、様々な他の通信プロトコルを使用することができる。少なくとも一実施例では、クライアント・コンピューティング・デバイスはまた、例として、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、及び/又はLinux(登録商標)オペレーティング・システムを実行するパーソナル・コンピュータ及び/又はラップトップ・コンピュータを含む汎用パーソナル・コンピュータも含んでもよい。少なくとも一実施例では、クライアント・コンピューティング・デバイスは、Google Chrome OSなどの、限定ではなく、様々なGNU/Linux(登録商標)オペレーティング・システムを含む、様々な市販のUNIX(登録商標)又はUNIX(登録商標)ライクなオペレーティング・システムのいずれかを実行するワークステーション・コンピュータとすることができる。少なくとも一実施例では、クライアント・コンピューティング・デバイスはまた、ネットワーク1210を介して通信することが可能な、シン・クライアント・コンピュータ、インターネット対応ゲーミング・システム(たとえば、Kinect(登録商標)ジェスチャ入力デバイスを有するか又は有しないMicrosoft Xboxゲーミング・コンソール)、及び/又は、パーソナル・メッセージング・デバイスなどの電子デバイスも含んでもよい。
図12の分散システム1200は、4つのクライアント・コンピューティング・デバイスを有して示されているが、任意の数のクライアント・コンピューティング・デバイスがサポートされてもよい。センサを有するデバイスなどの他のデバイスが、サーバ1212とインタラクトしてもよい。
【0067】
少なくとも一実施例では、分散システム1200内のネットワーク1210は、限定ではなくTCP/IP(伝送制御プロトコル/インターネット・プロトコル)、SNA(システム・ネットワーク・アーキテクチャ)、IPX(インターネット・パケット交換)、AppleTalk、及び/又はそれらの変形例を含む、様々な利用可能なプロトコルのいずれかを使用したデータ通信をサポートすることができる任意のタイプのネットワークであってもよい。少なくとも一実施例では、ネットワーク1210は、ローカル・エリア・ネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークン・リング、広域ネットワーク、インターネット、仮想ネットワーク、仮想プライベート・ネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、ワイヤレス・ネットワーク(たとえば、電気電子技術者協会(IEEE)802.11プロトコル・スイート、Bluetooth(登録商標)、及び/又は任意の他のワイヤレス・プロトコルのいずれかに基づいて動作するネットワーク)、並びに/又は、これらの及び/若しくは他のネットワークの任意の組合せとすることができる。
【0068】
少なくとも一実施例では、サーバ1212は、1つ又は複数の汎用コンピュータ、専用サーバ・コンピュータ(例として、PC(パーソナル・コンピュータ)サーバ、UNIX(登録商標)サーバ、ミッド・レンジ・サーバ、メインフレーム・コンピュータ、ラック・マウント・サーバなどを含む)、サーバ・ファーム、サーバ・クラスタ、又は任意の他の適切な構成及び/若しくは組合せから構成されてもよい。少なくとも一実施例では、サーバ1212は、仮想オペレーティング・システムを実行する1つ若しくは複数の仮想機械、又は、仮想化を伴う他のコンピューティング・アーキテクチャを含むことができる。少なくとも一実施例では、論理記憶デバイスの1つ又は複数の柔軟なプールを仮想化して、サーバの仮想記憶デバイスを維持することができる。少なくとも一実施例では、仮想ネットワークは、ソフトウェア定義のネットワーキングを使用してサーバ1212によって制御することができる。少なくとも一実施例では、サーバ1212は、1つ又は複数のサービス又はソフトウェア・アプリケーションを実行するように適合されてもよい。
【0069】
少なくとも一実施例では、サーバ1212は、任意のオペレーティング・システム、並びに、任意の市販のサーバ・オペレーティング・システムを実行してもよい。少なくとも一実施例では、サーバ1212はまた、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイ・インターフェース)サーバ、JAVA(登録商標)サーバ、データベース・サーバ、及び/又はそれらの変形例を含む、様々な追加のサーバ・アプリケーション及び/又はミッド・ティア・アプリケーションのいずれかを実行してもよい。少なくとも一実施例では、例示的なデータベース・サーバは、限定ではなく、Oracle、Microsoft、Sybase、IBM(International Business Machines)から市販されているもの、及び/又はそれらの変形例を含む。
【0070】
少なくとも一実施例では、サーバ1212は、クライアント・コンピューティング・デバイス1202、1204、1206、及び1208のユーザから受信されるデータ・フィード及び/又はイベント更新を分析及び集約するための1つ又は複数のアプリケーションを含んでもよい。少なくとも一実施例では、データ・フィード及び/又はイベント更新は、限定ではないが、Twitter(登録商標)フィード、Facebook(登録商標)更新又は1つ若しくは複数のサード・パーティ情報源及び連続的なデータ・ストリームから受信されるリアル・タイム更新を含んでもよく、これらは、センサ・データ・アプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視及びトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視、及び/又はそれらの変形例に関連するリアル・タイム・イベントを含んでもよい。少なくとも一実施例では、サーバ1212はまた、クライアント・コンピューティング・デバイス1202、1204、1206、及び1208の1つ又は複数のディスプレイ・デバイスを介してデータ・フィード及び/又はリアル・タイム・イベントを表示するための1つ又は複数のアプリケーションも含んでもよい。
【0071】
少なくとも一実施例では、分散システム1200はまた、1つ又は複数のデータベース1214及び1216も含んでもよい。少なくとも一実施例では、データベースは、ユーザ・インタラクション情報、使用パターン情報、適合規則情報、及び他の情報などの情報を格納するためのメカニズムを提供することができる。少なくとも一実施例では、データベース1214及び1216は、様々なロケーションに存在してもよい。少なくとも一実施例では、データベース1214及び1216のうちの1つ又は複数は、サーバ1212に対してローカルな(及び/又はサーバ内に常駐する)非一時的記憶媒体上に存在してもよい。少なくとも一実施例では、データベース1214及び1216は、サーバ1212から遠隔していてもよく、ネットワーク・ベースの接続又は専用接続を介してサーバ1212と通信してもよい。少なくとも一実施例では、データベース1214及び1216は、ストレージ・エリア・ネットワーク(SAN)内に存在してもよい。少なくとも一実施例では、サーバ1212に帰属する機能を実施するために必要な任意のファイルは、必要に応じて、サーバ1212に対してローカルに及び/又は遠隔的に格納されてもよい。少なくとも一実施例では、データベース1214及び1216は、SQLフォーマット・コマンドに応答してデータを格納し、更新し、且つ取り出すように適合されているデータベースなどの、リレーショナル・データベースを含んでもよい。
【0072】
少なくとも一実施例では、分散システム1200を使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、サーバ1212、クライアント・コンピューティング・デバイス1202、クライアント・コンピューティング・デバイス1204、クライアント・コンピューティング・デバイス1206、又はクライアント・コンピューティング・デバイス1208として実装されてもよい。ネットワーク106は、ネットワーク1210として実装されてもよい。
【0073】
少なくとも一実施例では、分散システム1200を使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又Rxホスト・コンピュータ540のうちの1つ又は複数は各々、サーバ1212、クライアント・コンピューティング・デバイス1202、クライアント・コンピューティング・デバイス1204、クライアント・コンピューティング・デバイス1206、又はクライアント・コンピューティング・デバイス1208として実装されてもよい。ネットワーク522は、ネットワーク1210として実装されてもよい。
【0074】
少なくとも一実施例において、分散システム1200を使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、OーDU812及び/又はOーRU814は各々、サーバ1212、クライアント・コンピューティング・デバイス1202、クライアント・コンピューティング・デバイス1204、クライアント・コンピューティング・デバイス1206、又はクライアント・コンピューティング・デバイス1208として実装されてもよい。ネットワーク816は、ネットワーク1210として実装されてもよい。
【0075】
図13は、少なくとも一実施例による、例示的なデータ・センタ1300を示す。少なくとも一実施例では、データ・センタ1300は、限定ではなく、データ・センタ・インフラストラクチャ層1310、フレームワーク層1320、ソフトウェア層1330、及びアプリケーション層1340を含む。
【0076】
少なくとも一実施例では、
図13に示されるように、データ・センタ・インフラストラクチャ層1310は、リソース・オーケストレータ1312、グループ化されたコンピューティング・リソース1314、及びノード・コンピューティング・リソース(「ノードC.R.」:node computing resources)1316(1)~1316(N)を含んでもよく、ここで「N」は、任意の正の整数を表す。少なくとも一実施例では、ノードC.R.1316(1)~1316(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1316(1)~1316(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
【0077】
少なくとも一実施例では、グループ化されたコンピューティング・リソース1314は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別個のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化されたコンピューティング・リソース1314内のノードC.R.の別個のグループは、1つ又は複数のワークロードをサポートするように構成又は配分されてもよい、グループ化されたコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【0078】
少なくとも一実施例では、リソース・オーケストレータ1312は、1つ若しくは複数のノードC.R.1316(1)~1316(N)及び/又はグループ化されたコンピューティング・リソース1314を構成してもよく、或いは他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1312は、データ・センタ1300のためのソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータ1312は、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【0079】
少なくとも一実施例では、
図13に示されるように、フレームワーク層1320は、限定ではなく、ジョブ・スケジューラ1332、構成マネージャ1334、リソース・マネージャ1336、及び分配ファイル・システム1338を含む。少なくとも一実施例では、フレームワーク層1320は、ソフトウェア層1330のソフトウェア1352、及び/又はアプリケーション層1340の1つ若しくは複数のアプリケーション1342をサポートするフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1352又はアプリケーション1342はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1320は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1338を使用することができるApache Spark(商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1332は、データ・センタ1300の様々な層によってサポートされるワークロードのスケジューリングを容易にするため、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1334は、ソフトウェア層1330、並びに大規模データ処理をサポートするためのSpark及び分配ファイル・システム1338を含むフレームワーク層1320など、異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1336は、分配ファイル・システム1338及びジョブ・スケジューラ1332をサポートするようにマッピング又は配分された、クラスタ化又はグループ化されたコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化又はグループ化されたコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1310にあるグループ化されたコンピューティング・リソース1314を含んでもよい。少なくとも一実施例では、リソース・マネージャ1336は、リソース・オーケストレータ1312と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【0080】
少なくとも一実施例では、ソフトウェア層1330に含まれるソフトウェア1352は、ノードC.R.1316(1)~1316(N)、グループ化されたコンピューティング・リソース1314、及び/又はフレームワーク層1320の分配ファイル・システム1338のうち少なくとも部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【0081】
少なくとも一実施例では、アプリケーション層1340に含まれるアプリケーション1342は、ノードC.R.1316(1)~1316(N)、グループ化されたコンピューティング・リソース1314、及び/又はフレームワーク層1320の分配ファイル・システム1338のうち少なくとも部分によって使用される、1つ又は複数のタイプのアプリケーションを含んでもよい。少なくとも1つ又は複数のタイプのアプリケーションにおいて、限定ではなく、CUDAアプリケーション、5Gネットワーク・アプリケーション、人工知能アプリケーション、データ・センタ・アプリケーション、及び/又はそれらの変形形態を含んでもよい。
【0082】
少なくとも一実施例では、構成マネージャ1334、リソース・マネージャ1336、及びリソース・オーケストレータ1312のうちのいずれかは、任意の技術的に実行可能な方式で取得された任意の量及びタイプのデータに基づいて、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1300のデータ・センタ・オペレータが、不良の恐れのある構成を決定しないようにし、十分に利用されていない及び/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
【0083】
図14は、少なくとも一実施例による、相互リンクされる複数のネットワーク・サーバ・コンピュータ1402によって形成されるクライアント・サーバ・ネットワーク1404を含むシステム1400を示す。少なくとも一実施例では、各ネットワーク・サーバ・コンピュータ1402は、他のネットワーク・サーバ・コンピュータ1402、並びに、広域ネットワーク1404にリンクするクライアント・コンピュータ1406及びネットワーク1408にとってアクセス可能なデータを格納する。少なくとも一実施例では、クライアント・サーバ・ネットワーク1404の構成は、クライアント・コンピュータ1406及び1つ又は複数のネットワーク1408がネットワーク1404に接続し、ネットワーク1404から接続切断するときに、並びに、1つ又は複数の幹線サーバ・コンピュータ1402がネットワーク1404に追加されるか又はネットワーク1404から除去されるときに、経時的に変化し得る。少なくとも一実施例では、クライアント・コンピュータ1406及びネットワーク1408がネットワーク・サーバ・コンピュータ1402と接続されるとき、クライアント・サーバ・ネットワークは、そのようなクライアント・コンピュータ1406及びネットワーク1408を含む。少なくとも一実施例では、コンピュータという用語は、データを受け入れ、規定のプロセスをデータにて起用し、プロセスの結果を供給することが可能な任意のデバイス又は機械を含む。
【0084】
少なくとも一実施例では、クライアント・サーバ・ネットワーク1404は、ネットワーク・サーバ・コンピュータ1402、リモート・ネットワーク1408及びクライアント・コンピュータ1406にとってアクセス可能である情報を格納する。少なくとも一実施例では、ネットワーク・サーバ・コンピュータ1402は、各々が1つ又は複数のプロセッサを有する、メインフレーム・コンピュータ、ミニコンピュータ、及び/又は、マイクロコンピュータによって形成される。少なくとも一実施例では、サーバ・コンピュータ1402は、導線、光ファイバ・ケーブル、及び/若しくはマイクロ波伝送媒体、衛星伝送媒体又は他の導電性、光学若しくは電磁波伝送媒体などの、有線及び/又はワイヤレス転送媒体によってともにリンクされる。少なくとも一実施例では、クライアント・コンピュータ1406は、同様の有線又はワイヤレス転送媒体によってネットワーク・サーバ・コンピュータ1402にアクセスする。少なくとも一実施例では、クライアント・コンピュータ1406は、モデム及び標準電話通信網を使用してクライアント・サーバ・ネットワーク1404にリンクしてもよい。少なくとも一実施例では、ケーブル及び衛星通信システムなどの代替的な搬送システムもまた、クライアント・サーバ・ネットワーク1404にリンクするために使用されてもよい。少なくとも一実施例では、他の私設又は時分割搬送システムが使用されてもよい。少なくとも一実施例では、ネットワーク1404は、インターネットなどのグローバル情報ネットワークである。少なくとも一実施例では、ネットワークは、インターネットと同様のプロトコルを使用するが、セキュリティ対策が追加され、アクセス制御が制限されている専用イントラネットである。少なくとも一実施例では、ネットワーク1404は、専用通信プロトコルを使用する私設、又は半私設ネットワークである。
【0085】
少なくとも一実施例では、クライアント・コンピュータ1406は、任意のエンド・ユーザ・コンピュータであり、また、1つ又は複数のマイクロプロセッサを有するメインフレーム・コンピュータ、ミニコンピュータ又はマイクロコンピュータであってもよい。少なくとも一実施例では、サーバ・コンピュータ1402は、時として、別のサーバ・コンピュータ1402にアクセスするクライアント・コンピュータとして機能してもよい。少なくとも一実施例では、リモート・ネットワーク1408は、ローカル・エリア・ネットワーク、インターネットの独立系サービス・プロバイダ(ISP)を通じて広域ネットワークに追加されるネットワーク、又は、固定であるか若しくは経時的に変化する構成を有する有線若しくはワイヤレス転送媒体によって相互接続される別のグループのコンピュータであってもよい。少なくとも一実施例では、クライアント・コンピュータ1406は、独立して又はリモート・ネットワーク1408を通じてネットワーク1404にリンクし、アクセスしてもよい。
【0086】
少なくとも一実施例では、システム1400を使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、ネットワーク・サーバ・コンピュータ1402のうちの1つ若しくは複数、又は、クライアント・コンピュータ1406のうちの1つ若しくは複数として実装されてもよい。ネットワーク106は、リモート・ネットワーク1408として実装されてもよい。
【0087】
少なくとも一実施例では、システム1400を使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、ネットワーク・サーバ・コンピュータ1402のうちの1つ若しくは複数、又は、クライアント・コンピュータ1406のうちの1つ若しくは複数として実装されてもよい。パケット・データ・ネットワーク522は、リモート・ネットワーク1408として実装されてもよい。
【0088】
少なくとも一実施例では、システム1400を使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、OーDU812及び/又はOーRU814は各々、ネットワーク・サーバ・コンピュータ1402のうちの1つ若しくは複数、又は、クライアント・コンピュータ1406のうちの1つ若しくは複数として実装されてもよい。ネットワーク816は、ネットワーク1408として実装されてもよい。
【0089】
図15は、少なくとも一実施例による、1つ又は複数のコンピューティング・マシンを接続するコンピュータ・ネットワーク1508を含むシステム1500を示す。少なくとも一実施例では、ネットワーク1508は、たとえば、以下のネットワーク、すなわち、インターネット、イントラネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)又はこれらのネットワーク・タイプを相互接続した組合せを含む、任意のタイプの電子接続コンピュータ・グループであってもよい。少なくとも一実施例では、ネットワーク1508内の接続は、リモート・モデム、イーサネット(登録商標)(IEEE802.3)、トークン・リング(IEEE802.5)、光ファイバ分散データ・インターフェース(FDDI)、非同期転送モード(ATM)、又は任意の他の通信プロトコルであってもよい。少なくとも一実施例では、ネットワークにリンクされているコンピューティング・デバイスは、デスクトップ、サーバ、携帯型、ハンドヘルド、セット・トップ・ボックス、個人情報端末(PDA)、端末、又は任意の他の所望のタイプ若しくは構成であってもよい。少なくとも一実施例では、それらの機能性に応じて、ネットワーク接続デバイスは、処理能力、内部メモリ、及び他の性能態様が広く変化してもよい。少なくとも一実施例では、ネットワーク内の通信及びネットワークに接続されているコンピュータ・デバイスへの通信又は当該デバイスからの通信は、有線又はワイヤレスのいずれかであってもよい。少なくとも一実施例では、ネットワーク1508は、一般的に、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)仕様によるクライアント・サーバ・モデルに従って複数のユーザを接続する世界規模公衆インターネットを少なくとも部分的に含んでもよい。少なくとも一実施例では、クライアント・サーバ・ネットワークは、2つのコンピュータ間の通信のための支配的モデルである。少なくとも一実施例では、クライアント・コンピュータ(「クライアント」)は、1つ又は複数のコマンドをサーバ・コンピュータ(「サーバ」)に発行する。少なくとも一実施例では、サーバは、クライアント・コマンドに従って、利用可能なネットワーク・リソースにアクセスし、クライアントに情報を返すことによって、クライアント・コマンドを履行する。少なくとも一実施例では、クライアント・コンピュータ・システム、及び、ネットワーク・サーバ上に存在するネットワーク・リソースは、ネットワークの要素間の通信中の識別のためにネットワーク・アドレスを割り当てられる。少なくとも一実施例では、他のネットワーク接続システムからサーバへの通信は、データ/要求の適切な宛先が受信者として識別されるように、関連するサーバ/ネットワーク・リソースのネットワーク・アドレスを通信の一部として含む。少なくとも一実施例では、ネットワーク1508が世界規模インターネットを含む場合、ネットワーク・アドレスは、データを電子メール・アカウント、ウェブ・サイト、又はサーバ上に存在する他のインターネット・ツールに少なくとも部分的にルーティングすることができる、TCP/IPフォーマットのIPアドレスである。少なくとも一実施例では、ネットワーク・サーバ上に存在する情報及びサービスは、ネットワーク・サーバのIPアドレスにマッピングするドメイン名(たとえば、www.site.com)を通じてクライアント・コンピュータのウェブ・ブラウザにとって利用可能であってもよい。
【0090】
少なくとも一実施例では、複数のクライアント1502、1504、及び1506が、それぞれの通信リンクを介してネットワーク1508に接続される。少なくとも一実施例では、これらのクライアントの各々は、ダイヤル・アップ・モデム接続、ケーブル・リンク、デジタル加入者線(DSL)、ワイヤレス若しくは衛星リンク、又は任意の他の形態の通信を介してなど、任意の所望の形態の通信を介してネットワーク1508にアクセスすることができる。少なくとも一実施例では、各クライアントは、パーソナル・コンピュータ(PC)、ワークステーション、専用端末、個人情報端末(PDA)、又は他の同様の機器などの、ネットワーク1508に対応する任意の機械を使用して通信することができる。少なくとも一実施例では、クライアント1502、1504、及び1506は、同じ地理的領域に位置してもよく、又は位置しなくてもよい。
【0091】
少なくとも一実施例では、複数のサーバ1510、1512、及び1514が、ネットワーク1508と通信しているクライアントにサービスするためにネットワーク1508に接続される。少なくとも一実施例では、各サーバは、典型的には、ネットワーク・リソースを管理し、クライアント・コマンドに応答する強力なコンピュータ又はデバイスである。少なくとも一実施例では、サーバは、プログラム命令及びデータを格納するハード・ディスク・ドライブ及びRAMメモリなどのコンピュータ可読データ記憶媒体を含む。少なくとも一実施例では、サーバ1510、1512、1514は、クライアント・コマンドに応答するアプリケーション・プログラムを実行する。少なくとも一実施例では、サーバ1510は、HTMLページに対するクライアント要求に応答するためにウェブ・サーバ・アプリケーションを実行してもよく、また、電子メールを受信及びルーティングするためにメール・サーバ・アプリケーションも実行してもよい。少なくとも一実施例では、FTPサーバ又はオーディオ/ビデオ・データをクライアントにストリーミングするためのメディア・サーバなどの、他のアプリケーション・プログラムも、サーバ1510上で実行していてもよい。少なくとも一実施例では、異なるサーバが、異なるタスクを実施するのに専用にされてもよい。少なくとも一実施例では、サーバ1510は、様々なユーザのウェブ・サイトに関連するリソースを管理する専用ウェブ・サーバであってもよく、一方、サーバ1512は、電子メール(eメール)管理を提供するのに専用のものであってもよい。少なくとも一実施例では、他のサーバは、メディア(オーディオ、ビデオなど)、ファイル転送プロトコル(FTP)、又は、ネットワークを介して典型的に利用可能であるか若しくは提供される任意の2つ以上のサービスの組合せに専用のものであってもよい。少なくとも一実施例では、各サーバは、他のサーバと同じ又は異なるロケーションにあってもよい。少なくとも一実施例では、ユーザに対してミラーリングされたタスクを実施し、以て、輻輳を軽減するか又は単一のサーバに向けられたトラフィック及び単一のサーバからのトラフィックを最小限に抑える複数のサーバが存在してもよい。少なくとも一実施例では、サーバ1510、1512、1514は、ネットワーク1508を介したサード・パーティ・コンテンツの管理及び送達を営むウェブ・ホスティング・プロバイダの制御下にある。
【0092】
少なくとも一実施例では、ウェブ・ホスティング・プロバイダは、2つの異なるタイプのクライアントにサービスを送達する。少なくとも一実施例では、ブラウザとして参照される場合がある1つのタイプは、ウェブ・ページ、電子メール・メッセージ、ビデオ・クリップなどのようなコンテンツをサーバ1510、1512、1514から要求する。少なくとも一実施例では、ユーザとして参照される場合がある第2のタイプは、ウェブ・サイトなどのネットワーク・リソースを維持し、これをブラウザにとって利用可能にするために、ウェブ・ホスティング・プロバイダを雇用する。少なくとも一実施例では、ユーザは、メモリ空間、プロセッサ容量、及び通信帯域幅を、ユーザが利用することを所望するサーバ・リソースの量に従って、それらの所望のネットワーク・リソースのために利用可能にするために、ウェブ・ホスティング・プロバイダと契約する。
【0093】
少なくとも一実施例では、ウェブ・ホスティング・プロバイダがこれらのクライアントの両方のためにサービスを提供するために、サーバによってホストされるネットワーク・リソースを管理するアプリケーション・プログラムが、適切に構成されなければならない。少なくとも一実施例では、プログラム構成プロセスは、ブラウザ要求に対するアプリケーション・プログラムの応答を少なくとも部分的に制御し、また、特定のユーザにとって利用可能なサーバ・リソースを少なくとも部分的に規定するパラメータのセットを規定することを含む。
【0094】
一実施例において、イントラネット・サーバ1516が、通信リンクを介してネットワーク1508と通信する。少なくとも一実施例では、イントラネット・サーバ1516は、サーバ・マネージャ1518と通信する。少なくとも一実施例では、サーバ・マネージャ1518は、サーバ1510、1512、1514において利用されているアプリケーション・プログラム構成パラメータのデータベースを含む。少なくとも一実施例では、ユーザは、イントラネット1516を介してデータベース1520を改変し、サーバ・マネージャ1518は、サーバ1510、1512、1514とインタラクトして、アプリケーション・プログラム・パラメータを、データベースの内容と一致するように改変する。少なくとも一実施例では、ユーザは、コンピュータ1502を介してイントラネット1516に接続し、ユーザ名及びパスワードなどの認証情報を入力することによって、イントラネット・サーバ1516にログ・オンする。
【0095】
少なくとも一実施例では、ユーザが、新たなサービスにサイン・アップするか、又は、既存のサービスを改変することを所望する場合、イントラネット・サーバ1516は、ユーザを認証し、ユーザが特定のアプリケーション・プログラムの構成パラメータにアクセスすることを可能にする対話型スクリーン・ディスプレイ/制御パネルをユーザに提供する。少なくとも一実施例では、ユーザには、ユーザのウェブ・サイト又は他のネットワーク・リソースの構成の諸態様を記述するいくつかの改変可能なテキスト・ボックスが提示される。少なくとも一実施例では、ユーザが、そのウェブ・サイトのためにサーバ上に確保されたメモリ空間を増大させることを所望する場合、ユーザは、ユーザが所望のメモリ空間を指定するフィールドを提供される。少なくとも一実施例では、この情報の受信に応答して、イントラネット・サーバ1516は、データベース1520を更新する。少なくとも一実施例では、サーバ・マネージャ1518は、この情報を適切なサーバに転送し、アプリケーション・プログラム動作中に新たなパラメータが使用される。少なくとも一実施例では、イントラネット・サーバ1516は、ユーザがウェブ・ホスティング・サービス・プロバイダと契約を交わした、ホストされているネットワーク・リソース(たとえば、ウェブ・ページ、電子メール、FTPサイト、メディア・サイトなど)の構成パラメータに、ユーザがアクセスすることを可能にするように構成されている。
【0096】
少なくとも一実施例では、システム1500を使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、イントラネット・サーバ1516、クライアント1502、1504、及び1506のうちの1つ若しくは複数、又は、サーバ1510、1512、及び1514のうちの1つ若しくは複数として実装されてもよい。ネットワーク106は、リモート・ネットワーク1508として実装されてもよい。
【0097】
少なくとも一実施例では、システム1500を使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、イントラネット・サーバ1516、クライアント1502、1504、及び1506のうちの1つ若しくは複数、又は、サーバ1510、1512、及び1514のうちの1つ若しくは複数として実装されてもよい。パケット・データ・ネットワーク522は、リモート・ネットワーク1508として実装されてもよい。
【0098】
少なくとも一実施例では、システム1500を使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、OーDU812及び/又はOーRU814は各々、イントラネット・サーバ1516、クライアント1502、1504、及び1506のうちの1つ若しくは複数、又は、サーバ1510、1512、及び1514のうちの1つ若しくは複数として実装されてもよい。ネットワーク816は、ネットワーク1508として実装されてもよい。
【0099】
図16Aは、少なくとも一実施例による、ネットワーク・コンピュータ・システム1600Aを示す。少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Aは、複数のノード又はパーソナル・コンピュータ(「PC」)1602、1618、1620を含む。少なくとも一実施例では、パーソナル・コンピュータ又はノード1602は、プロセッサ1614と、メモリ1616と、ビデオ・カメラ1604と、マイクロフォン1606と、マウス1608と、スピーカ1610と、モニタ1612とを含む。少なくとも一実施例では、PC1602、1618、1620は各々、たとえば、所与の企業内の内部ネットワークの1つ若しくは複数のデスクトップ・サーバを作動させてもよく、又は、特定の環境に限定されない一般ネットワークのサーバであってもよい。少なくとも一実施例では、ネットワークのPCノードあたり1つのサーバがあり、結果、ネットワークの各PCノードは、特定のネットワークURLアドレスを有する特定のネットワーク・サーバを表す。少なくとも一実施例では、各サーバは、デフォルトでそのサーバのユーザのデフォルト・ウェブ・ページに設定されており、デフォルト・ウェブ・ページはそれ自体、そのサーバ上のそのユーザのさらなるサブページ、又は、ネットワーク上の他のサーバ若しくは他のサーバ上のページを指す組み込みURLを含んでもよい。
【0100】
少なくとも一実施例では、ノード1602、1618、1620及びネットワークの他のノードは、媒体1622を介して相互接続される。少なくとも一実施例では、媒体1622は、総合デジタル通信網(「ISDN」)などの通信チャネルであってもよい。少なくとも一実施例では、ネットワーク・コンピュータ・システムの様々なノードは、ローカル・エリア・ネットワーク(「LAN」)、公衆交換電話網(「PSTN」)として参照されることがある従来型電話回線(「POTS」)、及び/又はそれらの変形例を含む、様々な通信媒体を通じて接続されてもよい。少なくとも一実施例では、ネットワークの様々なノードはまた、インターネットなどのネットワークを介して相互接続されるコンピュータ・システムのユーザも構成してもよい。少なくとも一実施例では、ネットワーク上の各サーバ(所与のインスタンスにおいてネットワークの特定のノードから作動する)は、URLに関して指定可能であってもよい、ネットワーク内の固有のアドレス又は識別情報を有する。
【0101】
したがって、少なくとも一実施例では、複数の多地点会議ユニット(「MCU」)を利用して、会議システムの様々なノード又は「エンドポイント」へのデータ及び当該ノードからのデータを送信してもよい。少なくとも一実施例では、ノード及び/又はMCUは、インターネットを通じて接続されているノードなどの様々な他の通信媒体に加えて、ISDNリンクを介して又はローカル・エリア・ネットワーク(「LAN」)を通じて壮語接続されてもよい。少なくとも一実施例では、会議システムのノードは、一般的に、LANなどの通信媒体へと直接的に、又は、MCUを通じて接続されてもよく、会議システムは、ルータ、サーバ、及び/又はそれらの変形例などの他のノード又は要素を含んでもよい。
【0102】
少なくとも一実施例では、プロセッサ1614は、汎用プログラム可能プロセッサである。少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Aのノードのプロセッサはまた、専用ビデオ・プロセッサであってもよい。少なくとも一実施例では、ノード1602のものなどの、ノードの様々な周辺機器及び構成要素は、他のノードのものから変化してもよい。少なくとも一実施例では、ノード1618及びノード1620は、ノード1602と同一に又は別様に構成されてもよい。少なくとも一実施例では、ノードは、PCシステムに加えて任意の適切なコンピュータ・システム上で実装されてもよい。
【0103】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Aを使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、PC1602、1618、1620のうちの1つ又は複数として実装されてもよい。ネットワーク106は、媒体1622として実装されてもよい。
【0104】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Aを使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、PC1602、1618、1620のうちの1つ又は複数として実装されてもよい。パケット・データ・ネットワーク522は、媒体1622として実装されてもよい。
【0105】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Aを使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、O-DU812及び/又はO-RU814は各々、PC1602、1618、1620のうちの1つ又は複数として実装されてもよい。ネットワーク816は、媒体1622として実装されてもよい。
【0106】
図16Bは、少なくとも一実施例による、ネットワーク・コンピュータ・システム1600Bを示す。少なくとも一実施例では、システム1600Bは、互いに通信することができる様々なノードを相互接続するために使用されてもよい、LAN1624などのネットワークを示す。少なくとも一実施例では、PCノード1626、1628、1630などの複数のノードが、LAN1624に付着される。少なくとも一実施例では、ノードはまた、ネットワーク・サーバ又は他の手段を介してLANに接続されてもよい。少なくとも一実施例では、システム1600Bは、たとえば、ルータ、サーバ、及びノードを含む、他のタイプのノード又は要素を含む。
【0107】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Bを使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、PCノード1626、1628、1630のうちの1つ又は複数として実装されてもよい。ネットワーク106は、LAN1624として実装されてもよい。
【0108】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Bを使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、PCノード1626、1628、1630のうちの1つ又は複数として実装されてもよい。パケット・データ・ネットワーク522は、LAN1624として実装されてもよい。
【0109】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Bを使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、O-DU812及び/又はO-RU814は各々、PCノード1626、1628、1630のうちの1つ又は複数として実装されてもよい。ネットワーク816は、LAN1624として実装されてもよい。
【0110】
図16Cは、少なくとも一実施例による、ネットワーク・コンピュータ・システム1600Cを示す。少なくとも一実施例では、システム1600Cは、ネットワークの様々なノードを相互接続するために使用されてもよい、インターネット1632などの基幹通信ネットワークにわたる通信を有するWWWシステムを示す。少なくとも一実施例では、WWWは、インターネットの上で動作するプロトコルのセットであり、グラフィカル・インターフェース・システムが、インターネットを通じて情報にアクセスするためにその上で動作することを可能にする。少なくとも一実施例では、PC1640、1642、1644などの複数のノードが、WWW内のインターネット1632に付着される。少なくとも一実施例では、ノードは、サーバ1634、1636などのWWW HTTPサーバを通じてWWWの他のノードにインターフェースされる。少なくとも一実施例では、PC1644は、ネットワーク1632のノードを形成し、それ自体がそのサーバ1636を作動させるPCであってもよいが、PC1644及びサーバ1636は、
図16Cにおいては例示を目的として別個に示されている。
【0111】
少なくとも一実施例では、WWWは、インターネットの伝送制御プロトコル/インターネット・プロトコル(「TCP/IP」)の上で作動する、WWW HTTP、WWWのプロトコルを特徴とする、分散型のアプリケーションである。したがって、少なくとも一実施例では、WWWは、インターネット上でその「基幹」として作動するプロトコル(すなわち、HTTP)のセットを特徴としてもよい。
【0112】
ウェブ・ブラウザは、WWW互換型ネットワーク・システムにおいて、特定のサーバ又はノードのユーザが、そのような情報を閲覧することを可能にし、したがって、ユーザが、HTTPを理解するネットワーク上のサーバから利用可能な文書又はファイルに埋め込まれているハイパーテキスト・リンクを使用してともにリンクされているグラフィック及びテキストに基づくファイルを検索することを可能にする、ネットワークのノード上で作動するアプリケーションである。少なくとも一実施例では、第1のノードと関連付けられる第1のサーバの所与のウェブ・ページが、インターネットなどのネットワーク上の別のサーバを使用してユーザによって取り出されるとき、取り出される文書は、中に埋め込まれている様々なハイパーテキスト・リンクを有し得、ページのローカル・コピーが、取り出しているユーザに対してローカルに作成される。少なくとも一実施例では、ユーザがハイパーテキスト・リンクをクリックするとき、選択されたハイパーテキスト・リンクに関連する、ローカルに格納された情報は、典型的には、ユーザの機械が、インターネットにわたる、ハイパーテキスト・リンクによって示されるサーバへの接続を開くことを可能にするのに十分である。
【0113】
少なくとも一実施例では、たとえば、WWW HTTPサーバ1634に関連して示されているようなLAN1638などのLANを通じて、複数のユーザが各HTTPサーバに結合されてもよい。少なくとも一実施例では、システム1600Cはまた、他のタイプのノード又は要素を含んでもよい。少なくとも一実施例では、WWW HTTPサーバは、PCなどの機械上で作動するアプリケーションである。少なくとも一実施例では、各ユーザは、PC1644に関連して例示したように、固有の「サーバ」を有すると考えることができる。少なくとも一実施例では、サーバは、LAN又は複数のノード又は複数のLANのためのネットワークへのアクセスを提供する、WWW HTTPサーバ1634などのサーバであると考えることができる。少なくとも一実施例では、各々がデスクトップPC又はネットワークのノードを有する複数のユーザが存在し、各デスクトップPCは潜在的に、そのユーザのサーバを確立する。少なくとも一実施例では、各サーバは、アクセスされると、そのユーザのデフォルトのウェブ・ページを提供する特定のネットワーク・アドレス又はURLと関連付けられる。少なくとも一実施例では、ウェブ・ページは、そのサーバ上のそのユーザのさらなるサブページ、又は、ネットワーク上の他のサーバ若しくはネットワーク上の他のサーバ上のページを指すさらなるリンク(組み込みURL)を含んでもよい。
【0114】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Cを使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、PC1640、1642、1644のうちの1つ又は複数として実装されてもよい。ネットワーク106は、LAN1638として実装されてもよい。
【0115】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Cを使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、PC1640、1642、1644のうちの1つ又は複数として実装されてもよい。パケット・データ・ネットワーク522は、LAN1638として実装されてもよい。
【0116】
少なくとも一実施例では、ネットワーク・コンピュータ・システム1600Cを使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、O-DU812及び/又はO-RU814は各々、PC1640、1642、1644のうちの1つ又は複数として実装されてもよい。ネットワーク816は、LAN1638として実装されてもよい。
【0117】
クラウド・コンピューティング及びサービス
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的なクラウド・ベースのシステムを記載する。
【0118】
少なくとも一実施例では、クラウド・コンピューティングは、動的にスケーリング可能であり、仮想化されていることが多いリソースが、インターネットによるサービスとして提供されるスタイルのコンピューティングである。少なくとも一実施例では、ユーザは、技術基盤をサポートする「クラウド内にある」として参照することができる、技術基盤の知識、技術基盤の専門技術、又は技術基盤の制御を有する必要はない。少なくとも一実施例では、クラウド・コンピューティングは、サービス型インフラストラクチャ、サービス型プラットフォーム、サービス型ソフトウェア、及び、ユーザのコンピューティング要求を満たすことに関するインターネットに対する信頼の共通のテーマを有する他の変形例を組み込む。少なくとも一実施例では、私設クラウド(たとえば、企業ネットワーク)、又は公衆クラウド(たとえば、インターネット)内のデータ・センタ(DC)内などの、典型的なクラウド展開は、数千のサーバ(又は代替的に、VM)、数百のイーサネット(登録商標)、ファイバ・チャネル又はファイバ・チャネル・オーバ・イーサネット(登録商標)(FCoE)ポート、スイッチング及びストレージ・インフラストラクチャなどから成ることができる。少なくとも一実施例では、クラウドはまた、IPsec VPNハブ、ファイアウォール、ロード・バランサ、広域ネットワーク(WAN)オプティマイザなどから成ることもできる。少なくとも一実施例では、遠隔加入者が、IPsec VPNトンネルなどのVPNトンネルを介した接続によって、クラウド・アプリケーション及びサービスに安全にアクセスすることができる。
【0119】
少なくとも一実施例では、クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダ対話で迅速にプロビジョニングしリリースすることができる、構成可能なコンピューティング・リソース(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス)の共有されるプールに対する簡便なオンデマンドのネットワーク・アクセスを可能にするためのモデルである。
【0120】
少なくとも一実施例では、クラウド・コンピューティングは、顧客が、人間が各サービスの提供者と対話する必要なしに、必要に応じて自動的に、サーバ時間及びネットワーク・ストレージのようなコンピューティング能力を一方的に供給することができる、オンデマンド・セルフサービスを特徴とする。少なくとも一実施例では、クラウド・コンピューティングは、機能がネットワークを介して利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的なメカニズムを通じてアクセスされる、ブロード・ネットワーク・アクセスを特徴とする。少なくとも一実施例では、クラウド・コンピューティングは、提供者のコンピューティング・リソースが、種々の物理的及び仮想リソースが消費者需要に従って動的に割り当てられ、再割り当てされる、マルチテナント・モデルを使用して、複数の消費者にサービスするためにプールされる、リソース・プーリングを特徴とする。少なくとも一実施例では、顧客が一般的に、提供されるリソースの正確なロケーションに対する制御又は知識を有しないが、より上位の抽象化(例えば、国家、州、又はデータ・センタ)におけるロケーションを指定することが可能であり得るという点において、位置独立の感覚がある。少なくとも一実施例では、リソースの実例は、ストレージ、処理、メモリ、ネットワーク帯域幅、及び仮想機械を含む。少なくとも一実施例では、クラウド・コンピューティングは、素早くスケール・アウトし、迅速にリリースされて素早くスケール・インする能力を、場合によっては自動的に、迅速且つ弾性的に提供することができる、迅速弾性を特徴とする。少なくとも一実施例では、消費者にとって、供給に利用可能な能力は、無制限であるように見えることが多く、いつでも任意の量を購入することができる。少なくとも一実施例では、クラウド・コンピューティングは、クラウド・システムが、サービスのタイプにとって適切な何らかのレベルの抽象化(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)における計量機能を活用することによって、リソース使用を自動的に制御及び最適化する、計測可能なサービスを特徴とする。少なくとも一実施例では、リソース使用は、監視、制御、及び報告することができ、利用されるサービスの提供者と消費者の両方に対する透明性を提供する。
【0121】
少なくとも一実施例では、クラウド・コンピューティングは、様々なサービス関連付けることができる。少なくとも一実施例では、クラウド・サービス型ソフトウェア(SaaS)は、消費者に提供される能力が、クラウド・インフラストラクチャ上で作動する提供者のアプリケーションを使用することであるサービスを参照することができる。少なくとも一実施例では、アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)のようなシン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。少なくとも一実施例では、消費者は、場合によっては制限されたユーザ特有のアプリケーション構成設定を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又はさらには個々のアプリケーション機能を含む、基礎となるクラウド・インフラストラクチャを管理せず、制御しない。
【0122】
少なくとも一実施例では、クラウド・サービス型プラットフォーム(PaaS)は、消費者に提供される機能が、プログラミング言語及び提供者によってサポートされるツールを使用して作成された、消費者が作成又は取得しているアプリケーションを、クラウド・インフラストラクチャ上に展開することであるサービスを参照することができる。少なくとも一実施例では、消費者は、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む、基礎となるクラウド・インフラストラクチャを管理せず、制御しないが、展開されているアプリケーション、及び、場合によっては、環境設定をホストするアプリケーションを制御する。
【0123】
少なくとも一実施例では、クラウド・サービス型インフラストラクチャ(IaaS)は、消費者に提供される機能が、消費者が、オペレーティング・システム及びアプリケーションを含むことができる、任意のソフトウェアを展開及び作動させることが可能である場合に、処理、ストレージ、ネットワーク、及び他の基礎的なコンピューティング・リソースをプロビジョニングすることであるサービスを参照することができる。少なくとも一つの実施例において、消費者は、基礎となるクラウド・インフラストラクチャを管理せず、又は制御しないが、オペレーティング・システム、ストレージ、展開されているアプリケーションを制御し、場合によっては、ネットワーク接続構成要素(例えば、ホスト・ファイアウォール)の選択を制限付きで制御する。
【0124】
少なくとも一実施例では、クラウド・コンピューティングは、様々な方法で展開されてもよい。少なくとも一実施例では、私設クラウドは、ある組織のみのために運用されるクラウド・インフラストラクチャを参照することができる。少なくとも一実施例では、私設クラウドは、組織又はサード・パーティによって管理され得、施設内又は施設外に存在し得る。少なくとも一実施例では、コミュニティ・クラウドは、いくつかの組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス考慮事項)を共有している特定のコミュニティをサポートするクラウド・インフラストラクチャを参照することができる。少なくとも一実施例では、コミュニティ・クラウドは、組織又はサード・パーティによって管理され得、施設内又は施設外に存在し得る。少なくとも一実施例では、公衆クラウドは、一般人又は大規模な業界団体にとって利用可能にされ、クラウド・サービスを提供する組織によって所有されるクラウド・インフラストラクチャを参照することができる。少なくとも一実施例では、ハイブリッド・クラウドは、固有の実体を保持するが、データ及びアプリケーションの移植性(例えば、クラウド間の負荷平衡のためのクラウド・バースティング)を有効化する標準化された又は専有の技術によってともに拘束される2つ以上のクラウド(プライベート、コミュニティ、又は公衆)から成る構成体であるクラウド・インフラストラクチャを参照することができる。少なくとも一実施例では、クラウド・コンピューティング環境は、処理状態を把握しないこと、コンピュータ使用が少ないこと、モジュール方式であること、及びセマンティック相互運用性であることに焦点を当てた、サービス指向のものである。
【0125】
図17は、少なくとも一実施例による、サーバをサード・パーティ・ネットワーク・サービスとして提供することができるシステム環境1700の1つ又は複数の構成要素を示す。少なくとも一実施例では、サード・パーティ・ネットワークは、クラウド、クラウド・ネットワーク、クラウド・コンピューティング・ネットワーク、及び/又はそれらの変形例として参照されてもよい。少なくとも一実施例では、システム環境1700は、クラウド・コンピューティング・サービスとして参照されてもよいサード・パーティ・ネットワーク・サービスを提供するサード・パーティ・ネットワーク・インフラストラクチャ・システム1702と対話するためにユーザによって使用され得る1つ又は複数のクライアント・コンピューティング・デバイス1704、1706、及び1708を含む。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、1つ又は複数のコンピュータ及び/又はサーバを含んでもよい。
【0126】
図17に示すサード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、図示されているもの以外の構成要素を有してもよいことを諒解されたい。さらに、
図17は、サード・パーティ・ネットワーク・インフラストラクチャ・システムの一実施例を示す。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、
図17に示すものよりも多い若しくは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、又は、構成要素の異なる構成若しくは配置を有してもよい。
【0127】
少なくとも一実施例では、クライアント・コンピューティング・デバイス1704、1706、及び1708は、クライアント・コンピューティング・デバイスのユーザによって、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702と対話してサード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスを使用するために使用することができる、ウェブ・ブラウザ、専用クライアント・アプリケーション、又は何らかの他のアプリケーションなどのクライアント・アプリケーションを動作させるように構成されてもよい。例示的なシステム環境1700は、3つのクライアント・コンピューティング・デバイスを有して示されているが、任意の数のクライアント・コンピューティング・デバイスがサポートされてもよい。少なくとも一実施例では、センサを有するデバイスなどのような他のデバイスが、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702と対話してもよい。少なくとも一実施例では、ネットワーク1710は、クライアント・コンピューティング・デバイス1704、1706、及び1708とサード・パーティ・ネットワーク・インフラストラクチャ・システム1702との間のデータの通信及び交換を容易にすることができる。
【0128】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスは、要求に応じてサード・パーティ・ネットワーク・インフラストラクチャ・システムのユーザにとって利用可能にされるサービスのホストを含んでもよい。少なくとも一実施例では、限定ではなく、オンライン・データ・ストレージ及びバックアップ・ソリューション、ウェブ・ベースの電子メール・サービス、ホスト型オフィス・スイート及び文書共同作成サービス、データベース管理及び処理、管理技術サポート・サービス、並びに/又はそれらの変形例を含む、様々なサービスも提供されてもよい。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システムによって提供されるサービスは、そのユーザの需要を満たすために動的にスケーリングすることができる。
【0129】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスの特定のインスタンス化は、「サービス・インスタンス」として参照することができる。少なくとも一実施例では、一般的に、サード・パーティ・ネットワーク・サービス提供者のシステムからインターネットなどの通信ネットワークを介してユーザにとって利用可能になる任意のサービスは、「サード・パーティ・ネットワーク・サービス」として参照される。少なくとも一実施例では、公衆サード・パーティ・ネットワーク環境において、サード・パーティ・ネットワーク・サービス提供者のシステムを構成するサーバ及びシステムは、顧客自身の施設内サーバ及びシステムとは異なる。少なくとも一実施例では、サード・パーティ・ネットワーク・サービス提供者のシステムは、アプリケーションをホストすることができ、ユーザは、要求に応じて、インターネットなどの通信ネットワークを介してアプリケーションを注文し、使用することができる。
【0130】
少なくとも一実施例では、コンピュータ・ネットワーク・サード・パーティ・ネットワーク・インフラストラクチャ内のサービスは、ストレージ、ホスト型データベース、ホスト型ウェブ・サーバ、ソフトウェア・アプリケーション、又はサード・パーティ・ネットワーク供給元によってユーザに提供される他のサービスへの保護されたコンピュータ・ネットワーク・アクセスを含むことができる。少なくとも一実施例では、サービスは、インターネットを通じたサード・パーティ・ネットワーク上のリモート・ストレージへのパスワード保護付きアクセスを含むことができる。少なくとも一実施例では、サービスは、サービス・ベースのホスト型リレーショナル・データベース、及び、ネットワーク接続された開発者による私的使用のためのスクリプト言語ミドルウェア・エンジンを含むことができる。少なくとも一実施例では、サービスは、サード・パーティ・ネットワーク供給元のウェブ・サイト上でホストされる電子メール・ソフトウェア・アプリケーションへのアクセスを含むことができる。
【0131】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、セルフ・サービスで、加入者ベースで、弾性的にスケーリング可能に、信頼可能に、高い可用性を以て、及び安全に顧客に送達されるアプリケーション、ミドルウェア、及びデータベース・サービス提供のスイートを含んでもよい。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702はまた、「ビッグ・データ」関連演算及び分析サービスを含んでもよい。少なくとも一実施例では、「ビッグ・データ」という用語は、一般的に、大量のデータを視覚化し、傾向を検出し、且つ/又は他の様態でデータとインタラクトするために分析者及び研究者によって格納及び操作することができる極度に大規模なデータ・セットを指すために使用される。少なくとも一実施例では、ビッグ・データ及び関連アプリケーションは、多くのレベル及び複数の異なるスケールにおいてインフラストラクチャ・システムによってホスト及び/又は操作することができる。少なくとも一実施例では、並列にリンクされた数十、数百、又は数千のプロセッサが、データを提示するために、又は、データ若しくはデータが表すものに対する外力をシミュレートするために、そのようなデータに対して動作することができる。少なくとも一実施例では、これらのデータ・セットは、データベース内に又は構造化モデルに従って他の様態で編成されているものなどの、構造化データ、及び/又は非構造化データ(たとえば、電子メール、画像、データ・ブロブ(バイナリ・ラージ・オブジェクト)、ウェブ・ページ、複合イベント処理)を含むことができる。少なくとも一実施例では、より多くの(又はより少ない)コンピューティング・リソースを目的に相対的に迅速に集中させる一実施例の能力を活用することによって、サード・パーティ・ネットワーク・インフラストラクチャ・システムは、事業体、政府機関、研究組織、個人、同好の個人若しくは組織から成る団体、又は他の実体からの需要に基づいて大規模なデータ・セットに対してタスクを実行するのにより良好に利用可能であり得る。
【0132】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって供給されるサービスへの顧客の加入を自動的にプロビジョニング、管理、及び追跡するように適合することができる。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、複数の異なる展開モデルを介して、サード・パーティ・ネットワーク・サービスを提供することができる。少なくとも一実施例では、サービスは、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702が、サード・パーティ・ネットワーク・サービスを販売する組織によって所有され、サービスが一般人又は異なる製造企業にとって利用可能にされる公衆サード・パーティ・ネットワーク・モデルの下で提供されてもよい。少なくとも一実施例では、サービスは、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702が単一の組織のみによって運用され、組織内の1つ又は複数の実体のためのサービスを提供することができるプライベート・サード・パーティ・ネットワーク・モデルの下で提供されてもよい。少なくとも一実施例では、サード・パーティ・ネットワーク・サービスはまた、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702及びサード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスが、関連コミュニティ内のいくつかの組織によって共有されるコミュニティ・サード・パーティ・ネットワーク・モデルの下で提供されてもよい。少なくとも一実施例では、サード・パーティ・ネットワーク・サービスはまた、2つ以上の異なるモデルの組合せであるハイブリッド・サード・パーティ・ネットワーク・モデルの下で提供されてもよい。
【0133】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスは、サービス型ソフトウェア(SaaS)カテゴリ、サービス型プラットフォーム(PaaS)カテゴリ、サービス型インフラストラクチャ(IaaS)カテゴリ、又は、ハイブリッド・サービスを含む他のサービス・カテゴリの下で提供される1つ又は複数のサービスを含んでもよい。少なくとも一実施例では、顧客は、予約注文を介して、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供される1つ又は複数のサービスを注文してもよい。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、次いで、顧客の予約注文にあるサービスを提供するための処理を実施する。
【0134】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスは、限定ではなく、アプリケーション・サービス、プラットフォーム・サービス及びインフラストラクチャ・サービスを含んでもよい。少なくとも一実施例では、アプリケーション・サービスは、サード・パーティ・ネットワーク・インフラストラクチャ・システムによってSaaSプラットフォームを介して提供されてもよい。少なくとも一実施例では、SaaSプラットフォームは、SaaSカテゴリに入るサード・パーティ・ネットワーク・サービスを提供するように構成されてもよい。少なくとも一実施例では、SaaSプラットフォームは、統合開発・展開プラットフォーム上でオン・デマンド・アプリケーションのスイートを構築及び送達する能力を提供することができる。少なくとも一実施例では、SaaSプラットフォームは、SaaSサービスを提供するための基礎となるソフトウェア及びインフラストラクチャを管理及び制御してもよい。少なくとも一実施例では、SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、サード・パーティ・ネットワーク・インフラストラクチャ・システム上で実行するアプリケーションを利用することができる。少なくとも一実施例では、顧客は、顧客が別個のライセンス及びサポートを購入する必要なしに、アプリケーション・サービスを取得することができる。少なくとも一実施例では、様々な異なるSaaSサービスが提供されてもよい。少なくとも一実施例では、実例は、限定ではなく、大規模な組織向けの販売実績管理、企業統合、及び事業柔軟性のためのソリューションを提供するサービスを含む。
【0135】
少なくとも一実施例では、プラットフォーム・サービスは、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によってPaaSプラットフォームを1702介して提供されてもよい。少なくとも一実施例では、PaaSプラットフォームは、PaaSカテゴリに入るサード・パーティ・ネットワーク・サービスを提供するように構成されてもよい。少なくとも一実施例では、プラットフォーム・サービスの実例は、限定ではなく、組織が共有の共通アーキテクチャ上で既存のアプリケーションを一元管理することを可能にするサービス、並びに、プラットフォームによって提供される共有サービスを活用する新たなアプリケーションを構築する能力を含んでもよい。少なくとも一実施例では、PaaSプラットフォームは、PaaSサービスを提供するための基礎となるソフトウェア及びインフラストラクチャを管理及び制御してもよい。少なくとも一実施例では、顧客は、顧客が別個のライセンス及びサポートを購入する必要なしに、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるPaaSサービスを取得することができる。
【0136】
少なくとも一実施例では、PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、サード・パーティ・ネットワーク・インフラストラクチャ・システムによってサポートされるプログラミング言語及びツールを利用し、また、展開されたサービスを制御することができる。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システムによって提供されるプラットフォーム・サービスは、データベース・サード・パーティ・ネットワーク・サービス、ミドルウェア・サード・パーティ・ネットワーク・サービス及びサード・パーティ・ネットワーク・サービスを含んでもよい。少なくとも一実施例では、データベース・サード・パーティ・ネットワーク・サービスは、組織がデータベース・リソースをプールし、データベース・サード・パーティ・ネットワークの形態のサービス型データベースを顧客に供給することを可能にする共有サービス展開モデルをサポートすることができる。少なくとも一実施例では、ミドルウェア・サード・パーティ・ネットワーク・サービスは、顧客が様々な業務用アプリケーションを開発及び展開するためのプラットフォームを提供することができ、サード・パーティ・ネットワーク・サービスは、サード・パーティ・ネットワーク・インフラストラクチャ・システム内に、顧客がアプリケーションを展開するためのプラットフォームを提供することができる。
【0137】
少なくとも一実施例では、様々な異なるインフラストラクチャ・サービスが、サード・パーティ・ネットワーク・インフラストラクチャ・システム内のIaaSプラットフォームによって提供されてもよい。少なくとも一実施例では、インフラストラクチャ・サービスは、SaaSプラットフォーム及びPaaSプラットフォームによって提供されるサービスを利用する顧客の、ストレージ、ネットワーク、及び他の基本コンピューティング・リソースなどの、基礎となるコンピューティング・リソースの管理及び制御を容易にする。
【0138】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702はまた、サード・パーティ・ネットワーク・インフラストラクチャ・システムの顧客に様々なサービスを提供するために使用されるリソースを提供するためのインフラストラクチャ・リソース1730も含んでもよい。少なくとも一実施例では、インフラストラクチャ・リソース1730は、Paasプラットフォーム及びSaasプラットフォームによって提供されるサービスを実行するためのサーバ、ストレージ、及びネットワーキング・リソース、並びに他のリソースなどの、ハードウェアの事前に統合され、最適化された組合せを含んでもよい。
【0139】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702内のリソースは、複数のユーザによって共有され、需要に応じて動的に再配分されてもよい。少なくとも一実施例では、リソースは、複数の異なる時間帯において複数のユーザに配分されてもよい。少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、ユーザの第1のセットが第1の時間帯において、指定時間数にわたってサード・パーティ・ネットワーク・インフラストラクチャ・システムのリソースを利用することを可能にし、次いで、異なる時間帯に配置されたユーザの別のセットへの同じリソースの再配分を可能にし、したがって、リソースの利用を最大化することができる。
【0140】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によるサービスのプロビジョニングを可能にするために、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702の複数の異なる構成要素又はモジュールによって共有されるいくつかの内部共有サービス1732が提供されてもよい。少なくとも一実施例では、これらの内部共有サービスは、限定ではなく、セキュリティ及びアイデンティティ・サービス、統合サービス、企業リポジトリ・サービス、企業マネージャ・サービス、ウイルス・スキャン及びホワイト・リスト・サービス、高可用性、バックアップ及び復元サービス、サード・パーティ・ネットワーク・サポートを有効化するためのサービス、電子メール・サービス、通知サービス、ファイル転送サービス、並びに/又はそれらの変形例を含んでもよい。
【0141】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702は、サード・パーティ・ネットワーク・インフラストラクチャ・システムにおけるサード・パーティ・ネットワーク・サービス(たとえば、SaaS、PaaS、及びIaaSサービス)の包括的な管理を可能にすることができる。少なくとも一実施例では、サード・パーティ・ネットワーク管理機能は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって受信されるサービスへの顧客の加入を自動的にプロビジョニング、管理、及び追跡するための機能、並びに/又はそれらの変形例を含んでもよい。
【0142】
少なくとも一実施例では、
図17に示すように、サード・パーティ・ネットワーク管理機能は、注文管理モジュール1720、注文オーケストレーション・モジュール1722、注文プロビジョニング・モジュール1724、注文管理・監視モジュール1726、及びアイデンティティ管理モジュール1728などの、1つ又は複数のモジュールによって提供されてもよい。少なくとも一実施例では、これらのモジュールは、汎用コンピュータ、専用サーバ・コンピュータ、サーバ・ファーム、サーバ・クラスタ、又は他の適切な構成及び/若しくは組合せであってもよい、1つ若しくは複数のコンピュータ及び/若しくはサーバを含んでもよく、又は、それらを使用して提供されてもよい。
【0143】
少なくとも一実施例では、ステップ1734において、クライアント・コンピューティング・デバイス1704、1706又は1708などのクライアント・デバイスを使用する顧客は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供される1つ又は複数のサービスを要求し、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって供給される1つ又は複数のサービスの加入に対する注文を申し込むことによって、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702と対話することができる。少なくとも一実施例では、顧客は、サード・パーティ・ネットワークUI1712、サード・パーティ・ネットワークUI1714及び/又はサード・パーティ・ネットワークUI1716などのサード・パーティ・ネットワーク・ユーザ・インターフェース(UI)にアクセスし、これらのUIを介して加入注文を申し込むことができる。少なくとも一実施例では、顧客の注文申し込みに応答してサード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって受信される注文情報は、顧客、及び、顧客が加入を意図しているサード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供される1つ又は複数のサービスを識別する情報を含んでもよい。
【0144】
少なくとも一実施例では、ステップ1736において、顧客から受信される注文情報は、注文データベース1718に格納することができる。少なくとも一実施例では、これが新規の注文である場合、注文の新たなレコードを作成することができる。少なくとも一実施例では、注文データベース1718は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1718によって操作され、他のシステム要素と併せて操作されるいくつかのデータベースのうちの1つとすることができる。
【0145】
少なくとも一実施例では、ステップ1738において、注文情報は、注文管理モジュール1720に転送することができ、注文管理モジュール1720は、注文の検証、及び、検証を受けての注文の簿記などの、注文に関連する請求及び会計機能を実施するように構成することができる。
【0146】
少なくとも一実施例では、ステップ1740において、注文に関する情報は、注文オーケストレーション・モジュール1722に通信することができ、注文オーケストレーション・モジュール1722は、顧客によって申し込まれた注文のサービス及びリソースのプロビジョニングをオーケストレートするように構成されている。少なくとも一実施例では、注文オーケストレーション・モジュール1722は、プロビジョニングのために注文プロビジョニング・モジュール1724のサービスを使用することができる。少なくとも一実施例では、注文オーケストレーション・モジュール1722は、各注文と関連付けられるビジネス・プロセスの管理を可能にし、注文をプロビジョニングへと進めるべきであるか否かを判定するためにビジネス・ロジックを適用する。
【0147】
少なくとも一実施例では、ステップ1742において、新規加入を求める注文が受信されると、注文オーケストレーション・モジュール1722は、リソースを配分し、加入注文を満たすために必要とされるリソースを構成するための要求を注文プロビジョニング・モジュール1724に送信する。少なくとも一実施例では、注文プロビジョニング・モジュール1724は、顧客によって注文されているサービスのためのリソースを配分することを可能にする。少なくとも一実施例では、注文プロビジョニング・モジュール1724は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1700によって提供されるサード・パーティ・ネットワーク・サービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の一定レベルの抽象化を提供する。少なくとも一実施例では、これは、注文オーケストレーション・モジュール1722が、サービス及びリソースがリアル・タイムに実際にプロビジョニングされるか、又は、予めプロビジョニングされており、要求を受けて配分/割り当てされるのみであるか否かなどの、実施詳細から分離されることを可能にする。
【0148】
少なくとも一実施例では、ステップ1744において、サービス及びリソースがプロビジョニングされると、要求されたサービスが、現時点で使用の準備が整ったことを示す通知を、加入する顧客に送信することができる。少なくとも一実施例では、顧客が要求されたサービスの使用を開始することを可能にする情報(たとえば、リンク)を顧客に送信することができる。
【0149】
少なくとも一実施例では、ステップ1746において、顧客の加入注文を、注文管理・監視モジュール1726によって管理及び追跡することができる。少なくとも一実施例では、注文管理・監視モジュール1726は、加入サービスの顧客使用に関する使用統計を収集するように構成することができる。少なくとも一実施例では、使用されるストレージ量、転送されるデータ量、ユーザ数、並びにシステム動作可能時間及びシステム休止時間の量、並びに/又はそれらの変形例について、統計が収集されてもよい。
【0150】
少なくとも一実施例では、サード・パーティ・ネットワーク・インフラストラクチャ・システム1700は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1700内のアクセス管理及び認証サービスなどの、アイデンティティ・サービスを提供するように構成されているアイデンティティ管理モジュール1728を含むことができる。少なくとも一実施例では、アイデンティティ管理モジュール1728は、サード・パーティ・ネットワーク・インフラストラクチャ・システム1702によって提供されるサービスを利用することを所望する顧客に関する情報を制御することができる。少なくとも一実施例では、そのような情報は、そのような顧客のアイデンティティを認証する情報、及び、様々なシステム・リソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリ・セグメントなど)に対してそれらの顧客が実施することを許可されている動作を記述する情報を含むことができる。少なくとも一実施例では、アイデンティティ管理モジュール1728はまた、各顧客に関する、並びに、記述的情報がどのように、及び、誰によってアクセス及び改変されるかに関する記述的情報の管理も含んでもよい。
【0151】
少なくとも一実施例では、システム環境1700を使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、クライアント・コンピューティング・デバイス1704、1706、及び1708のうちの1つ若しくは複数、又はサード・パーティ・ネットワーク・インフラストラクチャ・システム1702として実装されてもよい。ネットワーク106は、ネットワーク1710として実装されてもよい。
【0152】
少なくとも一実施例では、システム環境1700を使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、クライアント・コンピューティング・デバイス1704、1706、及び1708のうちの1つ若しくは複数、又はサード・パーティ・ネットワーク・インフラストラクチャ・システム1702として実装されてもよい。パケット・データ・ネットワーク522は、ネットワーク1710として実装されてもよい。
【0153】
少なくとも一実施例では、システム環境1700を使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、O-DU812及び/又はO-RU814は各々、クライアント・コンピューティング・デバイス1704、1706、及び1708のうちの1つ若しくは複数、又はサード・パーティ・ネットワーク・インフラストラクチャ・システム1702として実装されてもよい。ネットワーク816は、ネットワーク1710として実装されてもよい。
【0154】
図18は、少なくとも一実施例による、クラウド・コンピューティング環境1802を示す。少なくとも一実施例では、クラウド・コンピューティング環境1802は、個人情報端末(PDA)若しくは携帯電話1806A、デスクトップ・コンピュータ1806B、ラップトップ・コンピュータ1806C、及び/又は自動車コンピュータ・システム1806Nなどのコンピューティング・デバイスが通信する、1つ又は複数のコンピュータ・システム/サーバ1804を含む。少なくとも一実施例では、これは、各クライアントにそのようなリソースを別個に維持することを要求しないように、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアが、クラウド・コンピューティング環境1802からのサービスとして提供されることを可能にする。
図18に示すコンピューティング・デバイス1806A~Nのタイプは例示的であるようにのみ意図されており、クラウド・コンピューティング環境1802は、(例えば、ウェブ・ブラウザを使用して)任意のタイプのネットワーク及び/又はネットワーク/アドレス指定可能接続を介して任意のタイプのコンピュータ化デバイスと通信することができる。
【0155】
少なくとも一実施例では、クラウド・コンピューティング・ノードとして示すことができるコンピュータ・システム/サーバ1804は、多数の他の汎用又は専用コンピューティング・システム環境又は構成とともに動作可能である。少なくとも一実施例では、コンピュータ・システム/サーバ1804とともに使用するのに適し得るコンピューティング・システム、環境、及び/又は構成の実例は、限定ではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・若しくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能家電製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステム若しくはデバイスのいずれかを含む分散クラウド・コンピューティング環境、並びに/又は、それらの変形例を含む。
【0156】
少なくとも一実施例では、コンピュータ・システム/サーバ1804は、コンピュータ・システムによって実行される、プログラム・モジュールなどの、コンピュータ・システム実行可能命令の一般的な文脈において説明され得る。少なくとも一実施例では、プログラム・モジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含む。少なくとも一実施例では、例示的なコンピュータ・システム/サーバ1804は、タスクが、通信ネットワークを通じてリンクされる遠隔処理デバイスによって実行される、分散ラウド・コンピューティング環境において実施されてもよい。少なくとも一実施例では、分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカル・コンピュータ・システム記憶媒体と遠隔コンピュータ・システム記憶媒体の両方内に位置することができる。
【0157】
少なくとも一実施例では、クラウド・コンピューティング環境1802を使用して、システム100(
図1参照)を実装してもよい。そのような実施例において、送信側デバイス102及び/又は受信側デバイス104は各々、コンピュータ・システム/サーバ1804、PDA若しくは携帯電話1806A、デスクトップ・コンピュータ1806B、ラップトップ・コンピュータ1806C、又は自動車コンピュータ・システム1806Nのうちの1つ又は複数として実装されてもよい。
【0158】
少なくとも一実施例では、クラウド・コンピューティング環境1802を使用して、データ通信システム500(
図5参照)を実装してもよい。そのような実施例において、Txホスト・コンピュータ524、526、528及び/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、コンピュータ・システム/サーバ1804、PDA若しくは携帯電話1806A、デスクトップ・コンピュータ1806B、ラップトップ・コンピュータ1806C、又は自動車コンピュータ・システム1806Nのうちの1つ又は複数として実装されてもよい。
【0159】
少なくとも一実施例では、クラウド・コンピューティング環境1802を使用して、データ通信システム810(
図8参照)を実装してもよい。そのような実施例において、O-DU812及び/又はO-RU814は各々、コンピュータ・システム/サーバ1804、PDA若しくは携帯電話1806A、デスクトップ・コンピュータ1806B、ラップトップ・コンピュータ1806C、又は自動車コンピュータ・システム1806Nのうちの1つ又は複数として実装されてもよい。
【0160】
図19は、少なくとも一実施例による、クラウド・コンピューティング環境1802(
図18)によって提供される機能抽象化層のセットを示す。
図19に示す構成要素、レイヤ、及び機能は、例示的であるようにのみ意図されており、構成要素、レイヤ、及び機能は変化してもよいことは、事前に理解されたい。
【0161】
少なくとも一実施例では、ハードウェア及びソフトウェア・レイヤ1902は、ハードウェア及びソフトウェア構成要素を含む。少なくとも一実施例では、ハードウェア構成要素の実例は、メインフレーム、様々なRISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ、様々なコンピューティング・システム、スーパーコンピューティング・システム、ストレージ・デバイス、ネットワーク、ネットワーキング構成要素、及び/又はそれらの変形例を含む。少なくとも一実施例では、ソフトウェア構成要素の実例は、ネットワーク・アプリケーション・サーバ・ソフトウェア、様々なアプリケーション・サーバ・ソフトウェア、様々なデータベース・ソフトウェア、及び/又はそれらの変形例を含む。
【0162】
少なくとも一実施例では、仮想化レイヤ1904が、以下の例示的な仮想エンティティ、すなわち、仮想サーバ、仮想ストレージ、仮想私設ネットワークを含む仮想ネットワーク、仮想アプリケーション、仮想クライアント、及び/又はそれらの変形例を提供することができる抽象化レイヤを提供する。
【0163】
少なくとも一実施例では、管理レイヤ1906は、様々な機能を提供する。少なくとも一実施例では、リソース・プロビジョニングが、コンピューティング・リソース、及び、クラウド・コンピューティング環境内でタスクを実施するために利用される他のリソースの動的な調達を可能にする。少なくとも一実施例では、計量が、クラウド・コンピューティング環境内でリソースが利用されるときの使用追跡、及び、これらのリソースの消費に対する課金又は請求を可能にする。少なくとも一実施例では、リソースは、アプリケーション・ソフトウェア使用許諾を含んでもよい。少なくとも一実施例では、セキュリティが、ユーザ及びタスクの識別検証、並びに、データ及び他のリソースの保護を可能にする。少なくとも一実施例では、ユーザ・インターフェースが、ユーザとシステム管理者の両方のためのクラウド・コンピューティング環境へのアクセスを提供する。少なくとも一実施例では、サービス・レベル管理が、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソース配分及び管理を可能にする。少なくとも一実施例では、サービス品質保証契約(SLA)管理は、SLAにより将来必要とされることが予測されるクラウド・コンピューティング・リソースの事前手配及び調達を可能にする。
【0164】
少なくとも一実施例では、ワークロード・レイヤ1908は、クラウド・コンピューティング環境が利用される機能を提供する。少なくとも一実施例では、このレイヤから提供することができるワークロード及び機能の実例は、マッピング及びナビゲーション、ソフトウェア開発及び管理、教育サービス、データ解析及び処理、トランザクション処理、並びにサービス送達を含む。
【0165】
スーパーコンピューティング
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的なスーパーコンピュータ・ベースのシステムを記載する。
【0166】
少なくとも一実施例では、スーパーコンピュータは、相当の並列性を呈し、少なくとも1つのチップを含むハードウェア・システムを指し得、システム内のチップは、ネットワークによって相互接続され、階層的に組織化された筐体内に配置される。少なくとも一実施例では、すべてスケーラブル・ネットワークによって相互接続される、いくつかのチップを各々が含む、いくつかのボード/ラック・モジュールを各々が含む、いくつかのラックを有する機械室を満たす大型ハードウェア・システムが、スーパーコンピュータの1つの特定の実例である。少なくとも一実施例では、そのような大型ハードウェア・システムの単一のラックが、スーパーコンピュータの別の実例である。少なくとも一実施例では、相当の並列性を呈し、いくつかのハードウェア構成要素を含む単一のチップは、等しくスーパーコンピュータであると考えることができる。これは、特徴サイズが低減し得るとき、単一のチップに組み込まれ得るハードウェアの量も増大し得るためである。
【0167】
図20は、少なくとも一実施例による、チップ・レベルにおけるスーパーコンピュータを示す。少なくとも一実施例では、FPGA又はASICチップの内部において、スレッド・ユニットと呼ばれる有限状態機械(2004)内で、主要な演算が実施される。少なくとも一実施例では、タスク及び同期化ネットワーク(2002)が、有限状態機械を接続し、スレッドをディスパッチして動作を正確な順序で実行するために使用される。少なくとも一実施例では、マルチ・レベル区分オン・チップ・キャッシュ階層(2008、2012)が、メモリ・ネットワーク(2006、2010)を使用してアクセスされる。少なくとも一実施例では、オフ・チップ・メモリが、メモリ・コントローラ(2016)及びオフ・チップ・メモリ・ネットワーク(2014)を使用してアクセスされる。少なくとも一実施例では、設計が単一論理チップに適合しない場合、I/Oコントローラ(2018)がクロス・チップ通信に使用される。
【0168】
図21は、少なくとも一実施例による、ロック・モジュール・レベルにおけるスーパーコンピュータを示す。少なくとも一実施例では、ラック・モジュール内には、メイン・アクセラレータ・メモリを構成する1つ又は複数のDRAMユニット(2104)に接続されている複数のFPGA又はASICチップ(2102)が存在する。少なくとも一実施例では、各FPGA/ASICチップは、差動高速シグナリング(2106)を有する、基板上のワイド・バスを使用してその隣接するFPGA/ASICチップに接続される。少なくとも一実施例では、各FPGA/ASICチップは、少なくとも1つの高速シリアル通信ケーブルにも接続される。
【0169】
図22は、少なくとも一実施例による、ラック・レベルにおけるスーパーコンピュータを示す。
図23は、少なくとも一実施例による、システム全体レベルにおけるスーパーコンピュータを示す。少なくとも一実施例では、
図22及び
図23を参照すると、ラック内のラック・モジュールの間に、及び、システム全体を通じて複数のラックにまたがって、高速シリアル光ファイバ又は銅ケーブル(2202、2302)が、スケーラブルな、場合によって不完全なハイパーキューブ・ネットワークを実現するために使用される。少なくとも一実施例では、アクセラレータのFPGA/ASICチップのうちの1つが、PCI-Express接続(2304)を通じてホスト・システムに接続される。少なくとも一実施例では、ホスト・システムは、アプリケーションのソフトウェア部分が作動するホスト・マイクロプロセッサ(2308)と、アクセラレータ上のメモリチップとコヒーレントに維持される1つ又は複数のホスト・メモリDRAMユニット(2306)から成るメモリとを含む。少なくとも一実施例では、ホスト・システムは、ラックのうちの1つの上の別個のモジュールとすることができるか、又は、スーパーコンピュータのモジュールのうちの1つと統合することができる。少なくとも一実施例では、キューブ接続サイクル・トポロジが、大型スーパーコンピュータのハイパーキューブ・ネットワークを作成するための通信リンクを提供する。少なくとも一実施例では、ラック・モジュール上のFPGA/ASICチップの小グループが、単一のハイパーキューブ・ノードとして動作することができ、結果、各グループの外部リンクの総数が、単一チップと比較して増大される。少なくとも一実施例では、グループは、ラック・モジュール上のチップA、B、C及びDを含み、内部ワイド差動バスが、A、B、C及びDをトーラス構成において接続している。少なくとも一実施例では、ラック・モジュールを外界に接続する12本のシリアル通信ケーブルが存在する。少なくとも一実施例では、ラック・モジュール上のチップAは、シリアル通信ケーブル0、1、2に接続する。少なくとも一実施例では、チップBは、ケーブル3、4、5に接続する。少なくとも一実施例では、チップCは、6、7、8に接続する。少なくとも一実施例では、チップDは、9、10、11に接続する。少なくとも一実施例では、ラック・モジュールを構成するグループ{A,B,C,D}全体が、最大で212=4096個のラック・モジュール(16384個のFPGA/ASICチップ)を有する、スーパーコンピュータ・システム内のハイパーキューブ・ノードを形成することができる。少なくとも一実施例では、チップAがグループ{A,B,C,D}のリンク4上でメッセージを送出するためには、メッセージは、最初にオンボード差動ワイド・バス接続を用いてチップBにルーティングされる必要がある。少なくとも一実施例では、チップAに宛てられてリンク4上で(すなわち、Bに到達する)グループ{A,B,C,D}に到達するメッセージも、最初にグループ{A,B,C,D}の内部で正確な宛先チップ(A)にルーティングされる必要がある。少なくとも一実施例では、他のサイズの並列スーパーコンピュータ・システムも実装されてもよい。
【0170】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、
図20~
図23のうちの少なくとも1つのスーパーコンピュータを使用して実装されてもよい。少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、
図20~
図23のうちの少なくとも1つのスーパーコンピュータを使用して実装されてもよい。少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、
図20~
図23のうちの少なくとも1つのスーパーコンピュータを使用して実装されてもよい。
【0171】
人工知能
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的な人工知能ベースのシステムを記載する。
【0172】
図24Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理2415を示す。推論及び/又は訓練論理2415に関する詳細事項は、
図24A及び/又は
図24Bと併せて以下に提供される。
【0173】
少なくとも一実施例では、推論及び/又は訓練論理2415は、1つ又は複数の実施例の態様において推論するように訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、並びに/又は他のパラメータを記憶するためのコード及び/又はデータ・ストレージ2401を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理2415は、タイミング及び/若しくは順序を制御するためのグラフ・コード若しくは他のソフトウェアを記憶するためのコード及び/若しくはデータ・ストレージ2401を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ2401には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、そのようなコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ2401は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順方向伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ2401の任意の部分は、プロセッサのL1、L2、若しくはL3のキャッシュ、又はシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0174】
少なくとも一実施例では、コード及び/又はデータ・ストレージ2401の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても又は外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ2401は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ2401が、たとえばプロセッサの内部にあるか又は外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/若しくは推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/若しくは訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0175】
少なくとも一実施例では、推論及び/又は訓練論理2415は、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層に対応した、逆伝播及び/又は出力の重み、及び/又は入力/出力データを記憶するためのコード及び/又はデータ・ストレージ2405を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2405は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理2415は、タイミング及び/若しくは順序を制御するためのグラフ・コード若しくは他のソフトウェアを記憶するためのコード及び/若しくはデータ・ストレージ2405を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ2405には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。
【0176】
少なくとも一実施例では、グラフ・コードなどのコードは、そのようなコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報がプロセッサALUにロードされるようにする。少なくとも一実施例では、コード及び/又はデータ・ストレージ2405の任意の部分は、プロセッサのL1、L2、若しくはL3のキャッシュ、又はシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2405の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても又は外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2405は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2405が、たとえばプロセッサの内部にあるか若しくは外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/若しくは推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/若しくは訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0177】
少なくとも一実施例では、コード及び/又はデータ・ストレージ2401と、コード及び/又はデータ・ストレージ2405とは、別個のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2401と、コード及び/又はデータ・ストレージ2405とは、結合ストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2401と、コード及び/又はデータ・ストレージ2405とは、部分的に組み合わされ、部分的に別個のものであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2401と、コード及び/又はデータ・ストレージ2405との任意の部分は、プロセッサのL1、L2、若しくはL3のキャッシュ、又はシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0178】
少なくとも一実施例では、推論及び/又は訓練論理2415は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)2410を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ2420に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層又はニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ2401、並びに/又はコード及び/若しくはデータ・ストレージ2405に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ2420に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU2410によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/若しくはデータ・ストレージ2405並びに/又はデータ・ストレージ2401に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパー・パラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ2405、又はコード及び/若しくはデータ・ストレージ2401、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
【0179】
少なくとも一実施例では、ALU2410は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU2410は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU2410は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか若しくは異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ2401、コード及び/又はデータ・ストレージ2405、並びにアクティブ化ストレージ2420は、プロセッサ又は他のハードウェア論理デバイス若しくは回路を共有してもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ・ストレージ2420の任意の部分は、プロセッサのL1、L2、若しくはL3のキャッシュ、又はシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードは、プロセッサ又は他のハードウェア論理若しくは回路にとってアクセス可能であり、プロセッサのフェッチ、復号、スケジューリング、実行、除去及び/又は他の論理回路を使用してフェッチ及び/又は処理される他のコードとともに格納されてもよい。
【0180】
少なくとも一実施例では、アクティブ化ストレージ2420は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ2420は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の中又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ2420が、たとえばプロセッサの内部にあるか又は外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/若しくは推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/若しくは訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0181】
少なくとも一実施例では、
図24Aに示す推論及び/又は訓練論理2415は、グーグルのTensorFlow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、
図24Aに示す推論及び/又は訓練論理2415は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと併せて使用されてもよい。
【0182】
図24Bは、少なくとも一実施例による、推論及び/又は訓練論理2415を示す図である。少なくとも一実施例では、推論及び/又は訓練論理2415は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値若しくは他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、
図24Bに示す推論及び/又は訓練論理2415は、グーグルのTensorFlow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、
図24Bに示す推論及び/又は訓練論理2415は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理2415は、限定することなく、コード及び/又はデータ・ストレージ2401、並びにコード及び/又はデータ・ストレージ2405を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/或いはバイアス値、勾配情報、運動量値、及び/又は他のパラメータ若しくはハイパー・パラメータ情報を含む他の情報を記憶してもよい。
図24Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ2401並びにコード及び/又はデータ・ストレージ2405の各々は、それぞれ計算ハードウェア2402及び計算ハードウェア2406などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア2402及び計算ハードウェア2406の各々は、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ2401並びにコード及び/又はデータ・ストレージ2405に記憶された情報に対してのみ実行する1つ又は複数のALUを含み、その結果は、アクティブ化ストレージ2420に記憶される。
【0183】
少なくとも一実施例では、コード及び/又はデータ・ストレージ2401及び2405の各々、並びに対応する計算ハードウェア2402及び2406は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ2401並びに計算ハードウェア2402の1つのストレージ/計算の対2401/2402から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ2405並びに計算ハードウェア2406のストレージ/計算の対2405/2406への入力として提供される。ストレージ/計算の対2401/2402及び2405/2406の各々は、2つ以上のニューラル・ネットワーク・レイヤに対応してもよい。少なくとも一実施例では、ストレージ/計算の対2401/2402、及び2405/2406の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理2415に含まれてもよい。
【0184】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104が、推論及び/又は訓練論理2415を使用して推論及び/又は訓練動作を実施してもよい。少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数が、推論及び/又は訓練論理2415を使用して推論及び/又は訓練動作を実施してもよい。少なくとも一実施例では、O-DU812及び/又はO-RU814が、推論及び/又は訓練論理2415を使用して推論及び/又は訓練動作を実施してもよい。
【0185】
図25は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク2506が、訓練データ・セット2502を使用して訓練される。少なくとも一実施例では、訓練フレームワーク2504は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク2504は、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク2504は、未訓練ニューラル・ネットワーク2506を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク2508を生成する。少なくとも一実施例において、重みは無作為に又はディープ・ビリーフ・ネットワークを使用して事前に訓練することによって選択されてもよい。少なくとも一実施例において、訓練は、教師あり、部分的に教師あり、又は教師なしのいずれかで実施されてもよい。
【0186】
少なくとも一実施例では、未訓練ニューラル・ネットワーク2506は教師あり学習を使用して訓練され、ここで訓練データ・セット2502は、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セット2502は、既知の出力を有する入力を含み、ニューラル・ネットワーク2506の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク2506は教師ありのやり方で訓練され、訓練データ・セット2502からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、エラーが未訓練ニューラル・ネットワーク2506を通じて逆伝播される。少なくとも一実施例では、訓練フレームワーク2504が、未訓練ニューラル・ネットワーク2506を制御する重みを調整する。少なくとも一実施例では、訓練フレームワーク2504は、未訓練ニューラル・ネットワーク2506が、新規データ・セット2512などの入力データに基づき、結果2514などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク2508などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例において、訓練フレームワーク2504は、損失関数、及び、確率的勾配降下法などの調整アルゴリズムを使用して未訓練ニューラル・ネットワーク2506の出力を精緻化するために重みを調整しながら、未訓練ニューラル・ネットワーク2506を繰り返し訓練する。少なくとも一実施例において、訓練フレームワーク2504は、未訓練ニューラル・ネットワーク2506が所望の正確度に達するまで、未訓練ニューラル・ネットワーク2506を訓練する。少なくとも一実施例において、次いで、訓練済みニューラル・ネットワーク2508を展開して、任意の数の機械学習動作を実施することができる。
【0187】
少なくとも一実施例では、未訓練ニューラル・ネットワーク2506は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク2506は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セット2502は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク2506は、訓練データ・セット2502内でグループ化を学習することができ、個々の入力が、未訓練データ・セット2502にどのように関係しているかを判定することができる。少なくとも一実施例では、教師なし訓練を使用して、新規データ・セット2512の次元を低減するのに有用な動作を実行することができる訓練済みニューラル・ネットワーク2508の自己組織化マップを生成することができる。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セット2512の通常のパターンから逸脱した、新規データ・セット2512内のデータ点を識別できるようにする。
【0188】
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータ及びラベルなしデータが訓練データ・セット2502に混在している技法である。少なくとも一実施例では、訓練フレームワーク2504を使用して、転移学習技法などを通じて漸次的学習を実施することができる。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク2508は、初期訓練中に訓練済みニューラル・ネットワーク2508内に教え込まれた知識を忘れることなく、新規データ・セット2512に適合できるようになる。
【0189】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104が、
図25に示すプロセスを使用してディープ・ニューラル・ネットワークを訓練及び/又は展開してもよい。少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数が、
図25に示すプロセスを使用してディープ・ニューラル・ネットワークを訓練及び/又は展開してもよい。少なくとも一実施例では、O-DU812及び/又はO-RU814が、
図25に示すプロセスを使用してディープ・ニューラル・ネットワークを訓練及び/又は展開してもよい。
【0190】
5Gネットワーク
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的な5Gネットワーク・ベースのシステムを記載する。
【0191】
図26は、少なくとも一実施例による、ネットワークのシステム2600のアーキテクチャを示す。少なくとも一実施例では、システム2600は、ユーザ機器(UE)2602及びUE 2604を含んで示される。少なくとも一実施例では、UE 2602及び2604は、スマート・フォン(たとえば、1つ又は複数のセルラー・ネットワークに接続可能なハンドヘルド・タッチスクリーン・モバイル・コンピューティング・デバイス)として示されるが、個人情報端末(PDA)、ページャー、ラップトップ・コンピュータ、デスクトップ・コンピュータ、ワイヤレス・ハンドセット、又はワイヤレス通信インターフェースを含むいずれかのコンピューティング・デバイスなど、いずれかのモバイル又は非モバイルコンピューティング・デバイスも含んでもよい。
【0192】
少なくとも一実施例では、UE 2602及び2604のいずれかは、物のインターネット(IoT)UEを含むことができ、このIoT UEは、短寿命UE接続を利用する低電力IoTアプリケーション用に設計された、ネットワーク・アクセス層を含むことができる。少なくとも一実施例では、IoT UEは、公衆陸上モバイル・ネットワーク(PLMN:public land mobile network)、近接サービス(ProSe:Proximity-Based Service)若しくはデバイス・ツー・デバイス(D2D)通信、センサ・ネットワーク、又はIoTネットワークを介して、MTCサーバ又はデバイスとデータを交換するため、マシン・ツー・マシン(M2M)又はマシン・タイプ通信(MTC)などの技術を利用することができる。少なくとも一実施例では、M2M又はMTCのデータ交換は、機械始動のデータ交換であってもよい。少なくとも一実施例では、IoTネットワークは、IoT UEの相互接続を説明し、これは、短寿命接続を有する、(インターネット・インフラストラクチャ内の)固有に識別可能な組み込みコンピューティング・デバイスを含んでもよい。少なくとも一実施例では、IoT UEは、IoTネットワークの接続を容易にする、バックグラウンド・アプリケーション(たとえば、キープ・アライブ・メッセージ、状態更新など)を実行してもよい。
【0193】
少なくとも一実施例では、UE 2602及び2604は、無線アクセス・ネットワーク(RAN)2616と接続、たとえば通信可能に結合するように構成されてもよい。少なくとも一実施例では、RAN 2616は、たとえば、エボルブド・ユニバーサル・モバイル・テレコミュニケーション・システム(UMTS)地上無線アクセス・ネットワーク(E-UTRAN)、NextGen RAN(NGRAN)、又は何らかの他のタイプのRANであってもよい。少なくとも一実施例では、UE 2602及び2604は接続2612及び2614をそれぞれ利用し、これらは各々、物理通信インターフェース又は層を含む。少なくとも一実施例では、接続2612及び2614は、通信可能に結合できるようにするエア・インターフェースとして示され、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM)プロトコル、符号分割多元接続(CDMA)ネットワークプロトコル、プッシュ・ツー・トーク(PTT:Push-to-Talk)プロトコル、PTTオーバー・セルラー(POC:PTT over Cellular)プロトコル、ユニバーサル・モバイル・テレコミュニケーション・システム(UMTS)プロトコル、3GPP(登録商標)ロング・ターム・エボリューション(LTE)プロトコル、第5世代(5G)プロトコル、新無線(NR)プロトコル、及びそれらの変形形態などのセルラー通信プロトコルと整合性をもつことができる。
【0194】
少なくとも一実施例では、UE 2602及び2604はさらに、ProSeインターフェース2606を介して通信データを直接交換してもよい。少なくとも一実施例では、ProSeインターフェース2606は或いは、物理サイドリンク制御チャネル(PSCCH:Physical Sidelink Control Channel)、物理サイドリンク共有チャネル(PSSCH:Physical Sidelink Shared Channel)、物理サイドリンク発見チャネル(PSDCH:Physical Sidelink Discovery Channel)、及び物理サイドリンク・ブロードキャスト・チャネル(PSBCH:Physical Sidelink Broadcast Channel)を含むがそれらに限定されない、1つ又は複数の論理チャネルを含むサイドリンク・インターフェースと呼ばれることがある。
【0195】
少なくとも一実施例では、UE 2604は、接続2608を介してアクセス・ポイント(AP)2610にアクセスするように構成されて示される。少なくとも一実施例では、接続2608は、任意のIEEE 802.11プロトコルに準拠した接続など、ローカル・ワイヤレス接続を含むことができ、この接続では、AP 2610はワイヤレス・フィデリティ(WiFi(登録商標))ルータを含む。少なくとも一実施例では、AP 2610は、ワイヤレス・システムのコア・ネットワークに接続せずに、インターネットに接続されるように示される。
【0196】
少なくとも一実施例では、RAN 2616は、接続2612及び2614ができるようにする、1つ又は複数のアクセス・ノードを含むことができる。少なくとも一実施例では、これらのアクセス・ノード(AN:access node)は、基地局(BS)、NodeB、エボルブドNodeB(eNB)、次世代NodeB(gNB)、RANノードなどと呼ぶことができ、地上局(たとえば、地上アクセス・ポイント)、又は地理的エリア(たとえば、セル)内のカバレッジを提供する衛星局を含むことができる。少なくとも一実施例では、RAN 2616は、マクロセルを提供するための1つ又は複数のRANノード、たとえばマクロRANノード2618、並びにフェムトセル又はピコセル(たとえば、マクロセルよりも小さいカバレッジ・エリア、小さいユーザ容量、又は広い帯域幅を有するセル)を提供する1つ又は複数のRANノード、たとえば低電力(LP)RANノード2620を含んでもよい。
【0197】
少なくとも一実施例では、RANノード2618及び2620のいずれかは、エア・インターフェース・プロトコルを終了することができ、UE 2602及び2604のための第1の接触点であることができる。少なくとも一実施例では、RANノード2618及び2620のいずれかは、無線ベアラ管理、アップリンク及びダウンリンク・ダイナミック無線リソース管理及びデータ・パケット・スケジューリング、並びにモビリティ管理など、無線ネットワーク・コントローラ(RNC:radio network controller)機能を含むがそれに限定されない、RAN 2616のための様々な論理機能を遂行することができる。
【0198】
少なくとも一実施例では、UE 2602及び2604は、直交周波数分割多重アクセス(OFDMA:Orthogonal Frequency Division Multiple Access)通信技法(たとえば、ダウンリンク通信の場合)若しくはシングル・キャリア周波数分割多重アクセス(SC-FDMA:Single Carrier Frequency Division Multiple Access)通信技法(たとえば、アップリンク及びProSe又はサイドリンク通信の場合)、及び/又はそれらの変形形態などであるがそれらに限定されない様々な通信技法に従って、マルチ・キャリア通信チャネルを通じて、互いに又はRANノード2618及び2620のいずれかと、直交周波数分割多重化(OFDM)通信信号を使用して通信するように構成することができる。少なくとも一実施例では、OFDM信号は複数の直交サブキャリアを含むことができる。
【0199】
少なくとも一実施例では、ダウンリンク・リソース・グリッドは、RANノード2618及び2620のいずれかからUE 2602及び2604へのダウンリンク送信に使用することができ、アップリンク送信は同様の技法を利用することができる。少なくとも一実施例では、グリッドは、リソース・グリッド又は時間周波数リソース・グリッドと呼ばれる時間周波数グリッドであることができ、これは、各スロットのダウンリンクにおける物理リソースである。少なくとも一実施例では、かかる時間周波数プレーン表現はOFDMシステムの一般的な実践であり、この実践が無線リソース配分を直感的にしている。少なくとも一実施例では、リソース・グリッドの各列及び各行は、1つのOFDM符号及び1つのOFDMサブキャリアにそれぞれ対応する。少なくとも一実施例では、時間ドメインにおけるリソース・グリッドの持続時間は無線フレームの1スロットに対応する。少なくとも一実施例では、リソース・グリッドにおける最小の時間周波数単位はリソース要素と呼ばれる。少なくとも一実施例では、各リソース・グリッドは多数のリソース・ブロックを含み、このリソース・ブロックは、リソース要素に対する特定の物理チャネルのマッピングを説明する。少なくとも一実施例では、各リソース・ブロックはリソース要素の集合を含む。少なくとも一実施例では、周波数ドメインでは、これは現在配分することができるリソースの最小量を表してもよい。少なくとも一実施例では、かかるリソース・ブロックを使用して運ばれるいくつかの異なる物理ダウンリンク・チャネルがある。
【0200】
少なくとも一実施例では、物理ダウンリンク共有チャネル(PDSCH)は、ユーザ・データ及び上位層シグナリングをUE 2602及び2604に伝送してもよい。少なくとも一実施例では、物理ダウンリンク制御チャネル(PDCCH:physical downlink control channel)は、とりわけ、PDSCHチャネルに関連する搬送フォーマット及びリソース配分に関する情報を伝送してもよい。少なくとも一実施例では、また、アップリンク共有チャネルに関連する搬送フォーマット、リソース配分、及びHARQ(ハイブリッド自動反復要求)情報に関して、UE 2602及び2604に通知してもよい。少なくとも一実施例では、通常、ダウンリンク・スケジューリング(セル内のUE 2602に対する制御及び共有チャネル・リソース・ブロックの割り当て)は、UE 2602及び2604のいずれかからフィードバックされたチャネル品質情報に基づいて、RANノード2618及び2620のいずれかで実施されてもよい。少なくとも一実施例では、ダウンリンク・リソース割り当て情報は、UE 2602及び2604それぞれに使用される(たとえば、割り当てられる)PDCCHで送られてもよい。
【0201】
少なくとも一実施例では、PDCCHは、制御情報を運ぶのに制御チャネル要素(CCE:control channel element)を使用してもよい。少なくとも一実施例では、リソース要素にマッピングされる前に、PDCCH複素値符号が最初にクアドラプレットへと組織化されてもよく、このクアドラプレットは次いで、レート・マッチングのためのサブブロック・インターリーバを使用して置換されてもよい。少なくとも一実施例では、各PDCCHは、これらのCCEのうち1つ又は複数を使用して送信されてもよく、その際、各CCEは、リソース要素グループ(REG:resource element group)として知られる、9セットの4個の物理リソース要素に対応してもよい。少なくとも一実施例では、4個の四位相偏移変調(QPSK)符号が各REGにマッピングされてもよい。少なくとも一実施例では、PDCCHは、ダウンリンク制御情報(DCI:downlink control information)のサイズ及びチャネル条件に応じて、1つ又は複数のCCEを使用して送信することができる。少なくとも一実施例では、異なる数のCCE(たとえば、アグリゲーション・レベルL=1、2、4、又は8)を有する、LTEで規定された4個以上の異なるPDCCHフォーマットが存在することができる。
【0202】
少なくとも一実施例では、PDSCHリソースを使用する拡張物理ダウンリンク制御チャネル(EPDCCH:enhanced physical downlink control channel)が、制御情報送信に利用されてもよい。少なくとも一実施例では、EPDCCHは、1つ又は複数の拡張制御チャネル要素(ECCE:enhanced control channel element)を使用して送信されてもよい。少なくとも一実施例では、各ECCEは、拡張リソース要素グループ(EREG:enhanced resource element group)として知られる、9セットの4個の物理リソース要素に対応してもよい。少なくとも一実施例では、ECCEは、状況によっては他の数のEREGを有してもよい。
【0203】
少なくとも一実施例では、RAN 2616は、S1インターフェース2622を介してコア・ネットワーク(CN:core network)2638と通信可能に結合されるように示される。少なくとも一実施例では、CN 2638は、エボルブド・パケット・コア(EPC)ネットワーク、NextGenパケット・コア(NPC)ネットワーク、又は他の何らかのタイプのCNであってもよい。少なくとも一実施例では、S1インターフェース2622は2つの部分に分割される:RANノード2618及び2620とサービング・ゲートウェイ(S-GW)2630との間でトラフィック・データを伝送する、S1-Uインターフェース2626、並びにRANノード2618及び2620とMME 2628との間のシグナリング・インターフェースである、S1モビリティ管理エンティティ(MME)インターフェース2624。
【0204】
少なくとも一実施例では、CN 2638は、MME 2628、S-GW 2630、パケット・データ・ネットワーク(PDN)ゲートウェイ(P-GW)2634、及びホーム加入者サーバ(HSS)2632を含む。少なくとも一実施例では、MME 2628は、レガシー・サービング汎用パケット無線サービス(GPRS:General Packet Radio Service)サポート・ノード(SGSN)の制御プレーンと同様の機能のものであってもよい。少なくとも一実施例では、MME 2628は、ゲートウェイ選択及びトラッキング・エリア・リスト管理など、アクセスにおけるモビリティ態様を管理してもよい。少なくとも一実施例では、HSS 2632は、ネットワーク・エンティティが通信セッションを扱うのをサポートする、加入関連情報を含むネットワーク・ユーザのためのデータベースを含んでもよい。少なくとも一実施例では、CN 2638は、モバイル加入者の数、機器の容量、又はネットワークの組織などに応じて、1つ又は複数のHSS 2632を備えてもよい。少なくとも一実施例では、HSS 2632は、ルーティング/ローミング、認証、承認、ネーミング/アドレス指定分解能、位置依存性などのためのサポートを提供することができる。
【0205】
少なくとも一実施例では、S-GW 2630は、RAN 2616に向けたS1インターフェース2622を終了してもよく、データ・パケットをRAN 2616及びCN 2638の間でルーティングする。少なくとも一実施例では、S-GW 2630は、RAN間のノード引渡しのためのローカル・モビリティ・アンカー・ポイントであってもよく、また3GPP(登録商標)間モビリティのためのアンカーを提供してもよい。少なくとも一実施例では、他の責任は、合法的割込み、課金、及び何らかのポリシー執行を含んでもよい。
【0206】
少なくとも一実施例では、P-GW 2634は、PDNに向けたSGiインターフェースを終了してもよい。少なくとも一実施例では、P-GW 2634は、データ・パケットを、EPCネットワーク2638と、インターネット・プロトコル(IP)インターフェース2642を介したアプリケーション・サーバ2640(或いは、アプリケーション機能(AF)と呼ばれる)を含むネットワークなど、外部ネットワークとの間でルーティングしてもよい。少なくとも一実施例では、アプリケーション・サーバ2640は、コア・ネットワークを用いてIPベアラ・リソースを使用するアプリケーション(たとえば、UMTSパケット・サービス(PS)ドメイン、LTE PSデータ・サービスなど)を提示する要素であってもよい。少なくとも一実施例では、P-GW 2634は、IP通信インターフェース2642を介してアプリケーション・サーバ2640に通信可能に結合されて示される。少なくとも一実施例では、アプリケーション・サーバ2640はまた、CN 2638を介したUE 2602及び2604のための1つ又は複数の通信サービス(たとえば、ボイス・オーバー・インターネット・プロトコル(VoIP)セッション、PTTセッション、グループ通信セッション、ソーシャル・ネットワーキング・サービスなど)をサポートするように構成することができる。
【0207】
少なくとも一実施例では、P-GW 2634はさらに、ポリシー執行及び課金データ収集のためのノードであってもよい。少なくとも一実施例では、ポリシー及び課金執行機能(PCRF:policy and Charging Enforcement Function)2636は、CN 2638のポリシー及び課金制御要素である。少なくとも一実施例では、非ローミング・シナリオでは、UEのインターネット・プロトコル接続アクセス・ネットワーク(IP-CAN)セッションに関連付けられたホーム公衆陸上モバイル・ネットワーク(HPLMN:home public land mobile network)に、単一のPCRFがあってもよい。少なくとも一実施例では、トラフィックのローカル・ブレークアウトを有するローミング・シナリオでは、UEのIP-CANセッションに関連付けられた2つのPCRF:HPLMN内のホームPCRF(H-PCRF)、及び訪問先公衆陸上モバイル・ネットワーク(VPLMN)内の訪問先PCRF(V-PCRF)があってもよい。少なくとも一実施例では、PCRF 2636は、P-GW 2634を介してアプリケーション・サーバ2640に通信可能に結合されてもよい。少なくとも一実施例では、アプリケーション・サーバ2640は、PCRF 2636をシグナリングして、新しいサービス・フローを示し、適切なサービス品質(QoS)及び課金パラメータを選択してもよい。少なくとも一実施例では、PCRF 2636は、この規則を、適切なトラフィック・フロー・テンプレート(TFT)及びQoSクラス識別子(QCI)とともにポリシー及び課金執行機能(PCEF)(図示せず)に設定してもよく、これにより、アプリケーション・サーバ2640で指定したようにQoS及び課金を開始する。
【0208】
図27は、いくつかの実施例による、ネットワークのシステム2700のアーキテクチャを示す。少なくとも一実施例では、システム2700は、UE 2702、5Gアクセス・ノード又はRANノード((R)ANノード2708として図示)、ユーザ・プレーン機能(UPF:User Plane Function 2704として図示)、たとえばオペレータ・サービス、インターネット・アクセス、又は第三者サービスであってもよい、データ・ネットワーク(DN 2706)、及び5Gコア・ネットワーク(5GC)(CN 2710として図示)を含んで示される。
【0209】
少なくとも一実施例では、CN 2710は、認証サーバ機能(AUSF:Authentication Server Function 2714)、コア・アクセス及びモビリティ管理機能(AMF 2712)、セッション管理機能(SMF 2718)、ネットワーク露出機能(NEF:Network Exposure Function 2716)、ポリシー制御機能(PCF:Policy Control Function 2722)、ネットワーク機能(NF)レポジトリ機能(NRF:Network Repository Function 2720)、統合データ管理(UDM:Unified Data Management 2724)、並びにアプリケーション機能(AF 2726)を含む。少なくとも一実施例では、CN 2710はまた、構造化データ・ストレージ・ネットワーク機能(SDSF:Structured Data Storage network function)、非構造化データ・ストレージ・ネットワーク機能(UDSF:Unstructured Data Storage network function)、及びそれらの変形形態など、図示されない他の要素を含んでもよい。
【0210】
少なくとも一実施例では、UPF 2704は、イントラRAT及びインターRATモビリティのためのアンカー・ポイント、DN 2706に対する相互接続の外部PDUセッション・ポイント、並びにマルチ・ホームPDUセッションをサポートする分岐ポイントとして作用してもよい。少なくとも一実施例では、UPF 2704はまた、パケット・ルーティング及び転送、パケット検査、ポリシー規則のユーザ・プレーン部分の執行、合法的傍受パケット(UP集合)、トラフィック使用報告、ユーザ・プレーンのためのQoSハンドリングの実施(たとえば、パケット・フィルタ処理、ゲーティング、UL/DLレート執行)、アップリンク・トラフィック検証の実施(たとえば、SDFからQoSのフロー・マッピング)、アップリンク及びダウンリンクにおける搬送レベル・パケット・マーキング、並びにダウンリンク・パケット・バッファリング及びダウンリンク・データ通知トリガリングを実施してもよい。少なくとも一実施例では、UPF 2704は、データ・ネットワークへのルーティング・トラフィック・フローをサポートする、アップリンク分類子を含んでもよい。少なくとも一実施例では、DN 2706は、様々なネットワーク・オペレータ・サービス、インターネット・アクセス、又は第三者サービスを表してもよい。
【0211】
少なくとも一実施例では、AUSF 2714は、UE 2702の認証のためのデータを格納し、認証関連機能を扱ってもよい。少なくとも一実施例では、AUSF 2714は、様々なアクセス・タイプに対する共通の認証フレームワークを容易にしてもよい。
【0212】
少なくとも一実施例では、AMF 2712は、登録管理(たとえば、UE 2702などを登録するため)、接続管理、到達可能性管理、モビリティ管理、及びAMF関連イベントの合法的割込み、並びに認証及び承認アクセスを担ってもよい。少なくとも一実施例では、AMF 2712は、SMF 2718のためのSMメッセージの搬送を提供し、SMメッセージをルーティングするための透過型プロキシとして作用してもよい。少なくとも一実施例では、AMF 2712はまた、UE 2702とSMS 機能(SMSF)(
図27によって図示せず)との間のショート・メッセージ・サービス(SMS:short message service)メッセージの搬送を提供してもよい。少なくとも一実施例では、AMF 2712は、セキュリティ・アンカー機能(SEA:Security Anchor Function)として作用してもよく、このセキュリティ・アンカー機能は、AUSF 2714及びUE 2702との相互作用と、UE 2702認証プロセスの結果として確立された中間キーの受信とを含んでもよい。少なくとも一実施例では、USIMベースの認証が使用される場合、AMF 2712はセキュリティ材料をAUSF 2714から獲得してもよい。少なくとも一実施例では、AMF 2712はまた、セキュリティ・コンテキスト管理(SCM:Security Context Management)機能を含んでもよく、このセキュリティ・コンテキスト管理機能はキーをSEAから受信し、SEAはそれを使用してアクセス・ネットワーク固有のキーを導き出す。少なくとも一実施例では、AMF 2712はさらに、RAN CPインターフェースの終点(N2参照ポイント)、NAS(NI)シグナリングの終点であってもよく、NAS暗号化及び完全性保護を実施してもよい。
【0213】
少なくとも一実施例では、AMF 2712はまた、N3インターワーキング機能(IWF)インターフェースを通じてのUE 2702とのNASシグナリングをサポートしてもよい。少なくとも一実施例では、N3IWFは、信用できないエンティティにアクセスを提供するのに使用されてもよい。少なくとも一実施例では、N3IWFは、制御プレーン及びユーザ・プレーンそれぞれのためのN2及びN3インターフェースの終点であってもよく、そのため、PDUセッション及びQoSのためのSMF及びAMFからのN2シグナリング、IPSec及びN3トンネリングのためのパケットのカプセル化/非カプセル化、アップリンクにおけるN3ユーザ・プレーン・パケットのマーキング、並びにN2を通じて受信したかかるマーキングに関連付けられるQoS要件を考慮に入れたN3パケット・マーキングに対応するQoSの執行を扱ってもよい。少なくとも一実施例では、N3IWFはまた、UE 2702及びAMF 2712の間のアップリンク及びダウンリンク制御プレーンNAS(NI)シグナリングを中継し、UE 2702及びUPF 2704の間のアップリンク及びダウンリンク・ユーザ・プレーン・パケットを中継してもよい。少なくとも一実施例では、N3IWFはまた、UE 2702とのIPsecトンネル確立のための機構を提供する。
【0214】
少なくとも一実施例では、SMF 2718は、セッション管理(たとえば、セッション確立、修正及びリリース(UPFとANノードとの間のトンネル維持を含む));UE IPアドレス配分及び管理(任意の承認を含む);UP機能の選択及び制御;適切な宛先へとトラフィックをルーティングするための、UPFにおけるトラフィック・ステアリングの構成;ポリシー制御機能に向かうインターフェースの終端;ポリシー執行及びQoSの制御部分;合法的割込み(SMイベント、及びLIシステムに対するインターフェースのため);NASメッセージのSM部分の終端;ダウンリンク・データ通知;AMFを介してN2を通じてANに送られた、AN固有のSM情報のイニシエータ;セッションのSSCモードの判定を担ってもよい。少なくとも一実施例では、SMF 2718は、以下のローミング機能を含んでもよい:QoS SLAB(VPLMN)を適用するのにローカル執行を扱うこと;課金データ収集及び課金インターフェース(VPLMN);(SMイベントのためのVPLMN及びLIシステムに対するインターフェースにおける)合法的割込み;外部DNとの相互作用をサポートし、外部DNによるPDUセッション承認/認証のためにシグナリングを搬送すること。
【0215】
少なくとも一実施例では、NEF 2716は、3GPP(登録商標)ネットワーク機能によって第三者に提供されるサービス及び能力、内部露出/再露出、アプリケーション機能(たとえば、AF 2726)、エッジ・コンピューティング又はフォグ・コンピューティング・システムなどを安全に露出させる手段を提供してもよい。少なくとも一実施例では、NEF 2716は、AFを認証、承認、及び/又はスロットルしてもよい。少なくとも一実施例では、NEF 2716はまた、AF 2726と交換された情報及び内部ネットワーク機能と交換された情報をトランスレートしてもよい。少なくとも一実施例では、NEF 2716は、AF-サービス-識別子及び内部5GC情報の間でトランスレートしてもよい。少なくとも一実施例では、NEF 2716はまた、他のネットワーク機能の露出された能力に基づき、他のネットワーク機能(NF)から情報を受信してもよい。少なくとも一実施例では、この情報は、構造化データとしてNEF 2716で、又は標準インターフェースを使用してデータ・ストレージNFで格納されてもよい。少なくとも一実施例では、格納された情報は次いで、NEF 2716によって他のNF及びAFに対して再露出させることができ、且つ/又は分析などの他の目的に使用することができる。
【0216】
少なくとも一実施例では、NRF 2720は、サービス発見機能をサポートし、NF発見要求をNFインスタンスから受信し、発見されたNFインスタンスの情報をNFインスタンスに提供してもよい。少なくとも一実施例では、NRF 2720はまた、利用可能なNFインスタンス及びそれらのサポートされているサービスの情報を維持する。
【0217】
少なくとも一実施例では、PCF 2722は、ポリシー規則を制御プレーン機能に提供してそれらを執行してもよく、また統合ポリシー・フレームワークをサポートしてネットワーク挙動を支配してもよい。少なくとも一実施例では、PCF 2722はまた、UDM 2724のUDRにおけるポリシー決定に関連する加入情報にアクセスするのに、フロント・エンド(FE)を実装してもよい。
【0218】
少なくとも一実施例では、UDM 2724は、ネットワーク・エンティティが通信セッションを扱うのをサポートするのに、加入関連情報を扱ってもよく、UE 2702の加入データを格納してもよい。少なくとも一実施例では、UDM 2724は、アプリケーションFE及びユーザ・データ・レポジトリ(UDR)の2つの部分を含んでもよい。少なくとも一実施例では、UDMは、UDM FEを含んでもよく、このUDM FEは、信用情報の処理、位置管理、加入管理などに責任を持つ。少なくとも一実施例では、いくつかの異なるフロント・エンドが、異なる取引における同じユーザに役立ってもよい。少なくとも一実施例では、UDM-FEは、UDRに格納された加入情報にアクセスし、認証信用情報処理;ユーザ識別の扱い;アクセス承認;登録/モビリティ管理;及び加入管理を実施する。少なくとも一実施例では、UDRはPCF 2722と相互作用してもよい。少なくとも一実施例では、UDM 2724はまた、SMS管理をサポートしてもよく、その際、SMS-FEは上述したのと同様のアプリケーション論理を実装する。
【0219】
少なくとも一実施例では、AF 2726は、アプリケーションの影響をトラフィック・ルーティングに提供し、ネットワーク能力露出(NCE:Network Capability Exposure)にアクセスし、ポリシー制御のためにポリシー・フレームワークと相互作用してもよい。少なくとも一実施例では、NCEは、5GC及びAF 2726がNEF 2726を介して互いに情報を提供するのを可能にする機構であってもよく、これはエッジ・コンピューティング実装に使用されてもよい。少なくとも一実施例では、ネットワーク・オペレータ及び第三者サービスは、エンド・ツー・エンドのレイテンシ及びトランスポート・ネットワークに対する負荷の低減を通して、効率的なサービス配信を達成するため、アタッチメントのUE 2702アクセス・ポイントの近くでホストされてもよい。少なくとも一実施例では、エッジ・コンピューティング実装の場合、5GCは、UE 2702に近いUPF 2704を選択し、N6インターフェースを介して、UPF 2704からDN 2706へのトラフィック・ステアリングを実行してもよい。少なくとも一実施例では、これは、UE加入データ、UE位置、及びAF 2726によって提供される情報に基づいてもよい。少なくとも一実施例では、AF 2726は、UPFの(再)選択及びトラフィック・ルーティングに影響を及ぼしてもよい。少なくとも一実施例では、オペレータ導入に基づいて、AF 2726が信用できるエンティティであるとみなされた場合、ネットワーク・オペレータは、AF 2726が関連NFと直接相互作用することを許可してもよい。
【0220】
少なくとも一実施例では、CN 2710はSMSFを含んでもよく、このSMSFは、SMS加入チェック及び確認、並びにUE 2702からSMS-GMSC/IWMSC/SMS-ルータなどの他のエンティティへ、及び他のエンティティからUE 2702へのSMメッセージの中継を担ってもよい。少なくとも一実施例では、SMSはまた、UE 2702がSMS転送に利用可能であるということの通知手順(たとえば、UE到達不能フラグを設定し、UE 2702がSMSに利用可能になるとUDM 2724に通知する)のため、AMF 2712及びUDM 2724と相互作用してもよい。
【0221】
少なくとも一実施例では、システム2700は、以下のサービス・ベースのインターフェースを含んでもよい。Namf:AMFによって提示されるサービス・ベースのインターフェース、Nsmf:SMFによって提示されるサービス・ベースのインターフェース、Nnef:NEFによって提示されるサービス・ベースのインターフェース、Npcf:PCFによって提示されるサービス・ベースのインターフェース、Nudm:UDMによって提示されるサービス・ベースのインターフェース、Naf:AFによって提示されるサービス・ベースのインターフェース、Nnrf:NRFによって提示されるサービス・ベースのインターフェース、及びNausf:AUSFによって提示されるサービス・ベースのインターフェース。
【0222】
少なくとも一実施例では、システム2700は、以下の参照ポイントを含んでもよい。N1:UEとAMFとの間の参照ポイント、N2:(R)ANとAMFとの間の参照ポイント、N3:(R)ANとUPFとの間の参照ポイント、N4:SMFとUPFとの間の参照ポイント、及びN6:UPFとデータ・ネットワークとの間の参照ポイント。少なくとも一実施例では、NFにおけるNFサービスの間でより多数の参照ポイント及び/又はサービス・ベースのインターフェースがあってもよいが、これらのインターフェース及び参照ポイントは、明瞭にするために省略されている。少なくとも一実施例では、NS参照ポイントはPCFとAFとの間にあってもよく、N7参照ポイントはPCFとSMFとの間にあってもよく、N11参照ポイントはAMFとSMFとの間にあってもよく、その他も同様である。少なくとも一実施例では、CN 2710は、Nxインターフェースを含んでもよく、このNxインターフェースは、CN 2710とCN 7227との間でインターワーキングできるようにするための、MMEとAMF 2712との間のCN間インターフェースである。
【0223】
少なくとも一実施例では、システム2700は、複数のRANノード((R)ANノード2708など)を含んでもよく、ここで、Xnインターフェースは、5GC 410に接続する2つ以上の(R)ANノード2708(たとえば、gNB)の間、CN 2710及びeNB(たとえば、マクロRANノード)に接続する(R)ANノード2708(たとえば、gNB)の間、並びに/又はCN 2710に接続する2つのeNBの間で規定される。
【0224】
少なくとも一実施例では、Xnインターフェースは、Xnユーザ・プレーン(Xn-U)インターフェース及びXn制御プレーン(Xn-C)インターフェースを含んでもよい。少なくとも一実施例では、Xn-Uは、ユーザ・プレーンPDUの保証されない配信を提供し、データ転送及びフロー制御機能をサポート/提供してもよい。少なくとも一実施例では、Xn-Cは、管理及びエラー取扱い機能、Xn-Cインターフェースを管理する機能;1つ又は複数の(R)ANノード2708の間での接続モードのためにUEモビリティを管理する機能を含む、接続モード(たとえば、CM-CONNECTED)におけるUE 2702のためのモビリティ・サポートを提供してもよい。少なくとも一実施例では、モビリティ・サポートは、古い(ソース)サービング(R)ANノード2708から新しい(ターゲット)サービング(R)ANノード2708へのコンテキスト転送;及び古い(ソース)サービング(R)ANノード2708と新しい(ターゲット)サービング(R)ANノード2708との間でのユーザ・プレーン・トンネルの制御を含んでもよい。
【0225】
少なくとも一実施例では、Xn-Uのプロトコル・スタックは、インターネット・プロトコル(IP)トランスポート層上に構築されたトランスポート・ネットワーク層、並びにユーザ・プレーンPDUを保持するUDP及び/又はIP層の上のGTP-U層を含んでもよい。少なくとも一実施例では、Xn-Cプロトコル・スタックは、アプリケーション層シグナリング・プロトコル(Xnアプリケーション・プロトコル(Xn-AP)と呼ばれる)、及びSCTP層上に構築されるトランスポート・ネットワーク層を含んでもよい。少なくとも一実施例では、SCTP層はIP層の上であってもよい。少なくとも一実施例では、SCTP層は、アプリケーション層メッセージの保証された配信を提供する。少なくとも一実施例では、トランスポートIP層では、ポイント・ツー・ポイント送信がシグナリングPDUを配信するのに使用される。少なくとも一実施例では、Xn-Uプロトコル・スタック及び/又はXn-Cプロトコル・スタックは、本明細書で図示し説明するユーザ・プレーン及び/又は制御プレーン・プロトコル・スタックと同じ又は同様であってもよい。
【0226】
図28は、いくつかの実施例による制御プレーン・プロトコル・スタックの図である。少なくとも一実施例では、制御プレーン2800は、UE 2602(或いは、UE 2604)、RAN 2516、及びMME 2628の間の通信プロトコル・スタックとして示される。
【0227】
少なくとも一実施例では、PHY層2802は、1つ又は複数のエア・インターフェースを通じて、MAC層2804によって使用される情報を送信又は受信してもよい。少なくとも一実施例では、PHY層2802はさらに、リンク・アダプテーション又は適応変調及びコーディング(AMC:adaptive modulation and coding)、電力制御、セル検索(たとえば、初期同期及び引渡し目的のため)、並びにRRC層2810などの高次層によって使用される他の測定を実施してもよい。少なくとも一実施例では、PHY層2802はさらにまた、トランスポート・チャネルにおけるエラー検出、トランスポート・チャネルの前方エラー訂正(FEC)コーディング/デコーディング、物理チャネルの変調/復調、インターリーブ、レート・マッチング、物理チャネル上へのマッピング、及び多入力多出力(MIMO)アンテナ処理を実施してもよい。
【0228】
少なくとも一実施例では、MAC層2804は、論理チャネルとトランスポート・チャネルとの間のマッピング、1つ又は複数の論理チャネルからトランスポート・チャネルを介してPHYに配信されるべきトランスポート・ブロック(TB)上へのMACサービス・データ・ユニット(SDU)の多重化、トランスポート・チャネルを介してPHYから配信されるトランスポート・ブロック(TB)から1つ又は複数の論理チャネルへのMAC SDUの逆多重化、TB上へのMAC SDUの多重化、スケジューリング情報報告、ハイブリッド自動反復要求(HARD)を通したエラー訂正、及び論理チャネルの優先順位付けを実施してもよい。
【0229】
少なくとも一実施例では、RLC層2806は、透過型モード(TM:Transparent Mode)、非確認型モード(UM:Unacknowledged Mode)、及び確認型モード(AM:Acknowledged Mode)を含む複数の動作モードで動作してもよい。少なくとも一実施例では、RLC層2806は、上位層プロトコル・データ・ユニット(PDU)の転送、AMデータ転送のための自動反復要求(ARQ)を通したエラー訂正、並びにUM及びAMデータ転送のためのRLC SDUの連結、セグメンテーション、及び再アセンブリを実行してもよい。少なくとも一実施例では、RLC層2806はまた、AMデータ転送のためのRLCデータPDUの再セグメンテーションを実行し、UM及びAMデータ転送のためにRLCデータPDUを並べ替え、UM及びAMデータ転送のために複製データを検出し、UM及びAMデータ転送のためにRLC SDUを破棄し、AMデータ転送のためにプロトコル・エラーを検出し、RLC再確立を実施してもよい。
【0230】
少なくとも一実施例では、PDCP層2808は、IPデータのヘッダ圧縮及び解凍を実行し、PDCPシーケンス番号(SN)を維持し、下位層の再確立時に上位層PDUのシーケンス内配信を実施し、RLC AM上にマッピングされた無線ベアラのために下位層の再確立時に下位層SDUの複製を排除し、制御プレーン・データを暗号化及び解読し、制御プレーン・データの完全性保護及び完全性検証を実施し、データのタイマ・ベースの破棄を制御し、セキュリティ動作(たとえば、暗号化、解読、完全性保護、完全性検証など)を実施してもよい。
【0231】
少なくとも一実施例では、RRC層2810の主なサービス及び機能は、システム情報(たとえば、非アクセス層(NAS:non-access stratum)に関するマスター情報ブロック(MIB:Master Information Block)又はシステム情報ブロック(SIB:System Information Block)に含まれる)のブロードキャスト、アクセス層(AS)に関するシステム情報のブロードキャスト、UEとE-UTRANとの間のRRC接続のページング、確立、維持、及びリリース(たとえば、RRC接続ページング、RRC接続確立、RRC接続修正、及びRRC接続リリース)、ポイント・ツー・ポイント無線ベアラの確立、構成、維持、及びリリース、キー管理を含むセキュリティ機能、無線アクセス技術(RAT)間モビリティ、並びにUE測定報告のための測定構成を含んでもよい。少なくとも一実施例では、上記MIB及びSIBは、1つ又は複数の情報要素(IE:information element)を含んでもよく、この情報要素はそれぞれ、個々のデータ・フィールド又はデータ構造を含んでもよい。
【0232】
少なくとも一実施例では、UE 2602及びRAN 2616は、Uuインターフェース(たとえば、LTE-Uuインターフェース)を利用して、PHY層2802、MAC層2804、RLC層2806、PDCP層2808、及びRRC層2810を含むプロトコル・スタックを介して、制御プレーン・データを交換してもよい。
【0233】
少なくとも一実施例では、非アクセス層(NAS)プロトコル(NASプロトコル2812)は、UE 2602とMME 2628との間の制御プレーンの最上層を形成する。少なくとも一実施例では、NASプロトコル2812は、UE 2602とP-GW 2634の間のIP接続を確立し維持するのに、UE 2602のモビリティ及びセッション管理手順をサポートする。
【0234】
少なくとも一実施例では、Siアプリケーション・プロトコル(S1-AP)層(Si-AP層2822)は、Siインターフェースの機能をサポートし、基本手順(EP:Elementary Procedure)を含んでもよい。少なくとも一実施例では、EPはRAN 2616とCN 2628との間の相互作用の単位である。少なくとも一実施例において、S1-AP層サービスは、2つのグループ、すなわち、UE関連サービス及び非UE関連サービスを含んでもよい。少なくとも一実施例では、これらのサービスは、E-UTRAN無線アクセス・ベアラ(E-RAB:Radio Access Bearer)管理、UE能力の指示、モビリティ、NASシグナリング・トランスポート、RAN情報管理(RIM:RAN Information Management)、及び構成の転送を含むがそれらに限定されない機能を実施する。
【0235】
少なくとも一実施例では、ストリーム制御送信プロトコル(SCTP:Stream Control Transmission Protocol)層(或いは、ストリーム制御送信プロトコル/インターネット・プロトコル(SCTP/IP)層と呼ばれる)(SCTP層2820)は、IP層2818によってサポートされるIPプロトコルに部分的に基づいて、RAN 2616とMME 2628との間でシグナリング・メッセージの信頼性が高い配信を確保してもよい。少なくとも一実施例では、L2層2816及びL1層2814は、RANノード及びMMEによって情報を交換するのに使用される、通信リンク(たとえば、有線又はワイヤレス)を指してもよい。
【0236】
少なくとも一実施例では、RAN 2616及びMME 2628は、S1-MMEインターフェースを利用して、L1層2814、L2層2816、IP層2818、SCTP層2820、及びSi-AP層2822を含むプロトコル・スタックを介して、制御プレーン・データを交換してもよい。
【0237】
図29は、いくつかの実施例によるユーザ・プレーン・プロトコル・スタックの図である。少なくとも一実施例では、ユーザ・プレーン2900は、UE 2602、RAN 2616、S-GW 2630、及びP-GW 2634の間の通信プロトコル・スタックとして示される。少なくとも一実施例では、ユーザ・プレーン2900は制御プレーン2800と同じプロトコル層を利用してもよい。少なくとも一実施例では、たとえば、UE 2602及びRAN 2616は、Uuインターフェース(たとえば、LTE-Uuインターフェース)を利用して、PHY層2802、MAC層2804、RLC層2806、PDCP層2808を含むプロトコル・スタックを介して、ユーザ・プレーン・データを交換してもよい。
【0238】
少なくとも一実施例では、ユーザ・プレーン(GTP-U)層(GTP-U層2904)のための汎用パケット無線サービス(GPRS)トンネリング・プロトコルは、GPRSコア・ネットワーク内で、また無線アクセス・ネットワークとコア・ネットワークとの間でユーザ・データを伝送するのに使用されてもよい。少なくとも一実施例では、トランスポートされるユーザ・データは、たとえば、IPv4、IPv6、又はPPPフォーマットのいずれかのパケットであることができる。少なくとも一実施例では、UDP及びIPセキュリティ(UDP/IP)層(UDP/IP層2902)は、データ完全性のためのチェックサム、ソース及び宛先において異なる機能をアドレスするためのポート番号、並びに選択されたデータ・フローにおける暗号化及び認証を提供してもよい。少なくとも一実施例では、RAN 2616及びS-GW 2630は、S1-Uインターフェースを利用して、L1層2814、L2層2816、UDP/IP層2902、及びGTP-U層2904を含むプロトコル・スタックを介して、ユーザ・プレーン・データを交換してもよい。少なくとも一実施例では、S-GW 2630及びP-GW 2634は、S5/S8aインターフェースを利用して、L1層2814、L2層2816、UDP/IP層2902、及びGTP-U層2904を含むプロトコル・スタックを介して、ユーザ・プレーン・データを交換してもよい。少なくとも一実施例では、
図28に関して上述したように、NASプロトコルは、UE 2602とP-GW 2634の間のIP接続を確立し維持するのに、UE 2602のモビリティ及びセッション管理手順をサポートする。
【0239】
図30は、少なくとも一実施例による、コア・ネットワークの構成要素3000を示す。少なくとも一実施例では、CN 2638の構成要素は、機械可読又はコンピュータ可読媒体(たとえば、非一時的機械可読ストレージ媒体)から命令を読み取り実行するための構成要素を含む、1つの物理ノード、又は別個の物理ノードに実装されてもよい。少なくとも一実施例では、ネットワーク機能仮想化(NFV)は、1つ又は複数のコンピュータ可読ストレージ媒体(さらに詳細に後述)に格納された実行可能命令を介して、上述のネットワーク・ノード機能のいずれか又はすべてを仮想化するのに利用される。少なくとも一実施例では、CN 2638の論理インスタンス化は、ネットワーク・スライス3002と呼ばれることがある(たとえば、ネットワーク・スライス3002は、HSS 2632、MME 2628、及びS-GW 2630を含んで示される)。少なくとも一実施例では、CN 2638の一部分の論理インスタンス化は、ネットワーク・サブスライス3004と呼ばれることがある(たとえば、ネットワーク・サブスライス3004は、P-GW 2634及びPCRF 2636を含んで示される)。
【0240】
少なくとも一実施例では、NFVアーキテクチャ及びインフラストラクチャは、業界標準のサーバ・ハードウェア、ストレージ・ハードウェア、又はスイッチの組合せを含む物理リソース上に、1つ又は複数のネットワーク機能を仮想化するのに使用されるか、或いはプロプライエタリ・ハードウェアによって実施されてもよい。少なくとも一実施例では、NFVシステムは、1つ又は複数のEPC構成要素/機能の仮想の又は再構成可能な実装を実行するのに使用することができる。
【0241】
図31は、少なくとも一実施例による、ネットワーク機能仮想化(NFV)をサポートするシステム3100の構成要素を示すブロック図である。少なくとも一実施例では、システム3100は、仮想化インフラストラクチャ・マネージャ(VIM:virtualized infrastructure manager 3102として図示)、ネットワーク機能仮想化インフラストラクチャ(NFVI:network function virtualization infrastructure 3104として図示)、VNFマネージャ(VNFM:VNF manager 3106として図示)、仮想化ネットワーク機能(VNF:virtualized network function 3108として図示)、要素マネージャ(EM:element manager 3110として図示)、NFVオーケストレータ(NFVO:NFV Orchestrator 3112として図示)、及びネットワーク・マネージャ(NM:network manager 3114として図示)を含むものとして示される。
【0242】
少なくとも一実施例では、VIM 3102はNFVI 3104のリソースを管理する。少なくとも一実施例では、NFVI 3104は、システム3100を実行するのに使用される、物理又は仮想リソース及びアプリケーション(ハイパーバイザを含む)を含むことができる。少なくとも一実施例では、VIM 3102は、NFVI 3104を用いて仮想リソースのライフ・サイクル(たとえば、1つ又は複数の物理リソースに関連付けられた仮想機械(VM)の作成、維持、及び解体)を管理し、VMインスタンスを追跡し、VMインスタンス及び関連する物理リソースの性能、不良、及びセキュリティを追跡し、VMインスタンス及び関連する物理リソースを他の管理システムに露出させてもよい。
【0243】
少なくとも一実施例では、VNFM 3106はVNF 3108を管理してもよい。少なくとも一実施例では、VNF 3108は、EPC構成要素/機能を実行するのに使用されてもよい。少なくとも一実施例では、VNFM 3106は、VNF 3108のライフ・サイクルを管理し、VNF 3108の仮想態様の性能、不良、及びセキュリティを追跡してもよい。少なくとも一実施例では、EM 3110は、VNF 3108の機能的態様の性能、不良、及びセキュリティを追跡してもよい。少なくとも一実施例では、VNFM 3106及びEM 3110からの追跡データは、たとえば、VIM 3102又はNFVI 3104によって使用される性能測定(PM:performance measurement)データを含んでもよい。少なくとも一実施例では、VNFM 3106及びEM 3110の両方が、システム3100のVNFの量をスケール・アップ/ダウンすることができる。
【0244】
少なくとも一実施例では、NFVO 3112は、要求されたサービスを提供するために(たとえば、EPC機能、構成要素、又はスライスを実行するために)、NFVI 3104のリソースを調整、承認、リリース、及びエンゲージしてもよい。少なくとも一実施例では、NM 3114は、エンド・ユーザ機能のパッケージに、ネットワークの管理に対する責任を提供してもよく、これは、VNFを含むネットワーク要素、非仮想化ネットワーク機能、又は両方を含んでもよい(VNFの管理はEM 3110を介して行われてもよい)。
【0245】
少なくとも一実施例では、ネットワーク106は、システム2600(
図26参照)、システム2700(
図27参照)、及び/又はシステム3100(
図31参照)を使用して実装されてもよい。そのような実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、UE2602又はUE2604として実装されてもよい。
【0246】
少なくとも一実施例において、パケット・データ・ネットワーク522は、システム2600(
図26参照)、システム2700(
図27参照)、及び/又はシステム3100(
図31参照)を使用して実装されてもよい。そのような実施例において、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、UE2602又はUE2604として実装されてもよい。
【0247】
少なくとも一実施例では、ネットワーク816は、システム2600(
図26参照)、システム2700(
図27参照)、及び/又はシステム3100(
図31参照)を使用して実装されてもよい。そのような実施例では、O-DU812及び/又はO-RU814は各々、UE2602又はUE2604として実装されてもよい。
【0248】
コンピュータ・ベースのシステム
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的なコンピュータ・ベースのシステムを記載する。
【0249】
図32は、少なくとも一実施例による処理システム3200を示す。少なくとも一実施例では、処理システム3200は、1つ又は複数のプロセッサ3202、及び1つ又は複数のグラフィックス・プロセッサ3208を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ3202若しくはプロセッサ・コア3207を有するサーバ・システムであってもよい。少なくとも一実施例では、処理システム3200は、モバイル・デバイス、ハンドヘルド・デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0250】
少なくとも一実施例では、処理システム3200は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム・コンソール、メディア・コンソール、モバイル・ゲーミング・コンソール、ハンドヘルド・ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、処理システム3200は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム3200はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム3200は、1つ又は複数のプロセッサ3202と、1つ又は複数のグラフィックス・プロセッサ3208によって生成されるグラフィカル・インターフェースとを有する、テレビ又はセット・トップ・ボックス・デバイスである。
【0251】
少なくとも一実施例では、1つ又は複数のプロセッサ3202はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実施する命令を処理する、1つ又は複数のプロセッサ・コア3207を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア3207はそれぞれ、特定の命令セット3209を処理するように構成される。少なくとも一実施例では、命令セット3209は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア3207はそれぞれ、異なる命令セット3209を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア3207はまた、デジタル信号プロセッサ(「DSP」)などの他の処理デバイスを含んでもよい。
【0252】
少なくとも一実施例では、プロセッサ3202はキャッシュ・メモリ(「キャッシュ」)3204を含む。少なくとも一実施例では、プロセッサ3202は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有することができる。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ3202の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ3202はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア3207間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル3206がプロセッサ3202に含まれ、このレジスタ・ファイルは、異なるタイプのデータを格納するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル3206は、汎用レジスタ又は他のレジスタを含んでもよい。
【0253】
少なくとも一実施例では、1つ又は複数のプロセッサ3202は、1つ又は複数のインターフェース・バス3210に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ3202と処理システム3200内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス3210は、一実施例では、ダイレクト・メディア・インターフェース(『DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース・バス3210は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、「PCI」、PCI Express(「PCIe」))、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ3202は、統合メモリ・コントローラ3216、及びプラットフォーム・コントローラ・ハブ3230を含む。少なくとも一実施例では、メモリ・コントローラ3216は、メモリ・デバイスと処理システム3200の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(「PCH」)3230は、ローカル入出力(「I/O」)バスを介してI/Oデバイスへの接続を提供する。
【0254】
少なくとも一実施例では、メモリ・デバイス3220は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセッサ・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス3220は、処理システム3200のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ3202がアプリケーション又はプロセスを実行するときに使用するための、データ3222及び命令3221を格納することができる。少なくとも一実施例では、メモリ・コントローラ3216はまた、任意選択の外部グラフィックス・プロセッサ3212と結合しており、このグラフィックス・プロセッサは、プロセッサ3202内の1つ又は複数のグラフィックス・プロセッサ3208と通信して、グラフィックス及びメディアの動作を実施してもよい。少なくとも一実施例では、ディスプレイ・デバイス3211は、プロセッサ3202に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス3211は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうち1つ若しくは複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス3211は、仮想現実(「VR」)アプリケーション又は拡張現実(「AR」)アプリケーションで使用するための、立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(「HMD」)を含むことができる。
【0255】
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3230は、周辺装置が高速I/Oバスを介してメモリ・デバイス3220及びプロセッサ3202に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ3246、ネットワーク・コントローラ3234、ファームウェア・インターフェース3228、ワイヤレス・トランシーバ3226、タッチ・センサ3225、データ・ストレージ・デバイス3224(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス3224は、ストレージ・インターフェース(たとえば、SATA)を介して、又はPCI若しくはPCIeなどペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ3225は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ3226は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース3228は、システム・ファームウェアと通信できるようにし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(「UEFI」)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ3234は、有線ネットワークにネットワーク接続できるようにすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス3210と結合する。少なくとも一実施例では、オーディオ・コントローラ3246は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、処理システム3200は、レガシー(たとえば、パーソナル・システム2(「PS/2」))デバイスを処理システム3200に結合するための任意選択のレガシーI/Oコントローラ3240を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3230は、キーボード及びマウス3243の組合せ、カメラ3244、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(「USB」)コントローラ3242の接続入力デバイスにも接続することができる。
【0256】
少なくとも一実施例では、メモリ・コントローラ3216及びプラットフォーム・コントローラ・ハブ3230のインスタンスは、外部グラフィックス・プロセッサ3212などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3230及び/又はメモリ・コントローラ3216は、1つ又は複数のプロセッサ3202の外部にあってもよい。たとえば、少なくとも一実施例では、処理システム3200は、外部のメモリ・コントローラ3216及びプラットフォーム・コントローラ・ハブ3230を含むことができ、これらは、プロセッサ3202と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
【0257】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、処理システム3200を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3202として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、処理システム3200のメモリ・デバイス3220及び/又はデータ・ストレージ・デバイス3224などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、処理システム3200のインターフェース・バス3210などの、任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、ネットワーク・コントローラ3234として実装されてもよい。
【0258】
少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、処理システム3200を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3202として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、処理システム3200のメモリ・デバイス3220及び/又はデータ・ストレージ・デバイス3224などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、処理システム3200のインターフェース・バス3210などの、任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、ネットワーク・コントローラ3234として実装されてもよい。
【0259】
少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、処理システム3200を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3202として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、処理システム3200のメモリ・デバイス3220及び/又はデータ・ストレージ・デバイス3224などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、処理システム3200のインターフェース・バス3210などの、任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、ネットワーク・コントローラ3234として実装されてもよい。
【0260】
図33は、少なくとも一実施例によるコンピュータ・システム3300を示す。少なくとも一実施例では、コンピュータ・システム3300は、相互接続されたデバイス及び構成要素、SOC、又は何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム3300は、命令を実行するための実行ユニットを含むことができるプロセッサ3302によって形成される。少なくとも一実施例では、コンピュータ・システム3300は、限定することなく、データを処理するためのアルゴリズムを実施する論理を含む実行ユニットを使用する、プロセッサ3302などの構成要素を含んでもよい。少なくとも一実施例では、コンピュータ・システム3300は、カリフォルニア州サンタ・クララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム3300は、ワシントン州レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースも使用されてもよい。
【0261】
少なくとも一実施例では、コンピュータ・システム3300は、ハンドヘルド・デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。ハンドヘルド・デバイスのいくつかの実例は、携帯電話、インターネット・プロトコル・デバイス、デジタル・カメラ、個人情報端末(「PDA」:personal digital assistants)、及びハンドヘルドPCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、SoC、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は1つ若しくは複数の命令を実施してもよい他の任意のシステムを含んでもよい。
【0262】
少なくとも一実施例では、コンピュータ・システム3300は、限定ではなく、Compute Unified Device Architecture(「CUDA」)(CUDA(登録商標)は、カリフォルニア州サンタ・クララ所在のNVIDIA Corporationによって開発されている)プログラムを実行するように構成されてもよい1つ又は複数の実行ユニット3308を限定することなく含んでもよいプロセッサ3302を含んでもよい。少なくとも一実施例では、CUDAプログラムは、CUDAプログラミング言語で書かれたソフトウェア・アプリケーションの少なくとも一部分である。少なくとも一実施例では、コンピュータ・システム3300は、単一プロセッサ・デスクトップ又はサーバ・システムである。少なくとも一実施例では、コンピュータ・システム3300は、マルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ3302は、限定することなく、CISCマイクロプロセッサ、RISCマイクロプロセッサ、VLIWマイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ3302は、プロセッサ・バス3310に結合されてもよく、このプロセッサ・バスは、プロセッサ3302とコンピュータ・システム3300内の他の構成要素との間でデータ信号を送信してもよい。
【0263】
少なくとも一実施例では、プロセッサ3302は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)3304を含んでもよい。少なくとも一実施例では、プロセッサ3302は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ3302の外部にあってもよい。少なくとも一実施例では、プロセッサ3302はまた、内部キャッシュと外部キャッシュとの組合せも含んでもよい。少なくとも一実施例では、レジスタ・ファイル3306は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々なレジスタに、異なるタイプのデータを格納してもよい。
【0264】
少なくとも一実施例では、整数及び浮動小数点の演算を実施する論理を限定することなく含む実行ユニット3308も、プロセッサ3302内にある。プロセッサ3302はまた、ある一定のマクロ命令のためのマイクロコードを格納するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)を含んでもよい。少なくとも一実施例では、実行ユニット3308は、パック命令セット3309を扱う論理を含んでもよい。少なくとも一実施例では、パック命令セット3309を、命令を実行する関連回路とともに汎用プロセッサ3302の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ3302のパック・データを使用して実行することができる。少なくとも一実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【0265】
少なくとも一実施例では、実行ユニット3308はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路で使用されてもよい。少なくとも一実施例では、コンピュータ・システム3300は、限定することなくメモリ3320を含んでもよい。少なくとも一実施例では、メモリ3320は、DRAMデバイス、SRAMデバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。メモリ3320は、プロセッサ3302によって実行されてもよいデータ信号によって表される、命令3319及び/又はデータ3321を格納してもよい。
【0266】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス3310及びメモリ3320に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」)3316を含んでもよく、プロセッサ3302は、プロセッサ・バス3310を介してMCH3316と通信してもよい。少なくとも一実施例では、MCH 3316は、命令及びデータを格納するため、並びにグラフィックス・コマンド、データ、及びテクスチャを格納するため、高帯域幅メモリ経路3318をメモリ3320に提供してもよい。少なくとも一実施例では、MCH 3316は、プロセッサ3302と、メモリ3320と、コンピュータ・システム3300の他の構成要素との間でデータ信号を導き、プロセッサ・バス3310と、メモリ3320と、システムI/O 3322との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH 3316は、高帯域幅メモリ経路3318を介してメモリ3320に結合されてもよく、グラフィックス/ビデオカード3312は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続3314を通してMCH 3316に結合されてもよい。
【0267】
少なくとも一実施例では、コンピュータ・システム3300は、MCH3316をI/Oコントローラ・ハブ(「ICH」)3330に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O3322を使用してもよい。少なくとも一実施例では、ICH3330は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ3320、チップセット、及びプロセッサ3302に接続するための高速I/Oバスを、限定することなく含んでもよい。実例としては、限定することなく、オーディオ・コントローラ3329、ファームウェア・ハブ(「フラッシュBIOS」)3328、ワイヤレス・トランシーバ3326、データ・ストレージ3324、ユーザ入力インターフェース3325及びキーボード・インターフェースを包含するレガシーI/Oコントローラ3323、USBなどのシリアル拡張ポート3327、及びネットワーク・コントローラ3334が含まれてもよい。データ・ストレージ3324は、ハード・ディスク・ドライブ、フロッピー(登録商標)ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを含んでもよい。
【0268】
少なくとも一実施例では、
図33は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示す。少なくとも一実施例では、
図33は、例示的なSoCを示し得る。少なくとも一実施例では、
図33に示されるデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、システム3300の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続される。
【0269】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、コンピュータ・システム3300を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3302として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、コンピュータ・システム3300のメモリ3320及び/又はデータ・ストレージ・デバイス3324などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、コンピュータ・システム3300のプロセッサ・バス3310などの、任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、ネットワーク・コントローラ3334として実装されてもよい。
【0270】
少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、コンピュータ・システム3300を使用して実装されてもよい。そのような実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3302として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、コンピュータ・システム3300のメモリ3320及び/又はデータ・ストレージ・デバイス3324などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、コンピュータ・システム3300のプロセッサ・バス3310などの、任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、ネットワーク・コントローラ3334として実装されてもよい。
【0271】
少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、コンピュータ・システム3300を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3302として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、コンピュータ・システム3300のメモリ3320及び/又はデータ・ストレージ・デバイス3324などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、コンピュータ・システム3300のプロセッサ・バス3310などの、任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、ネットワーク・コントローラ3334として実装されてもよい。
【0272】
図34は、少なくとも一実施例によるシステム3400を示す。少なくとも一実施例では、システム3400は、プロセッサ3410を利用する電子デバイスである。少なくとも一実施例では、システム3400は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【0273】
少なくとも一実施例では、システム3400は、限定することなく、任意の好適な数又は種類の構成要素、周辺装置、モジュール、又はデバイスに通信可能に結合されたプロセッサ3410を含んでもよい。少なくとも一実施例では、プロセッサ3410は、I
2Cバス、システム・マネージメント・バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(「LPC」:Low Pin Count)バス、シリアル・ペリフェラル・インターフェース(「SPI」:Serial Peripheral Interface)、ハイ・デフィニション・オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、USB(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」:Universal Asynchronous Receiver/Transmitter)バスなどのバス又はインターフェースを使用して結合される。少なくとも一実施例では、
図34は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示す。少なくとも一実施例では、
図34は、例示的なSoCを示し得る。少なくとも一実施例では、
図34に示されるデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、
図34の1つ又は複数の構成要素は、CXL相互接続を使用して相互接続される。
【0274】
少なくとも一実施例では、
図34は、ディスプレイ3424、タッチ画面3425、タッチ・パッド3430、近距離無線通信ユニット(「NFC」:Near Field Communications unit)3445、センサ・ハブ3440、熱センサ3446、エクスプレス・チップセット(「EC」:Express Chipset)3435、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)3438、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)3422、DSP3460、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)3420、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)3450、Bluetoothユニット3452、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)3456、全地球測位システム(「GPS」:Global Positioning System)ユニット3455、USB3.0カメラなどのカメラ(「USB3.0カメラ」)3454、又は、たとえばLPDDR3規格に実施された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)3415を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
【0275】
少なくとも一実施例では、上述した構成要素を通して、他の構成要素がプロセッサ3410に通信可能に結合されてもよい。少なくとも一実施例では、加速度計3441、周囲光センサ(「ALS」:Ambient Light Sensor)3442、コンパス3443、及びジャイロスコープ3444が、センサ・ハブ3440に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ3439、ファン3437、キーボード3446、及びタッチ・パッド3430が、EC 3435に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ3463、ヘッドフォン3464、及びマイクロフォン(「mic」)3465が、オーディオ・ユニット(「オーディオ・コーデック及びクラスdアンプ」)3464に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP 3460に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット3464は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)3457は、WWANユニット3456に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット3450及びBluetoothユニット3452などの構成要素、並びにWWANユニット3456は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実施されてもよい。
【0276】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、システム3400を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3410として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、システム3400のBIOS、FWフラッシュ3422及び/又はLPDDR3 3415などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、システム3400の任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、WLANユニット3450及び/又はWWANユニット3456として実装されてもよい。
【0277】
少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、システム3400を使用して実装されてもよい。そのような実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3410として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、システム3400のBIOS、FWフラッシュ3422及び/又はLPDDR3 3415などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、システム3400の任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、WLANユニット3450及び/又はWWANユニット3456として実装されてもよい。
【0278】
少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、システム3400を使用して実装されてもよい。そのよう実施例では、送信側デバイス114及び/又は受信側デバイス126は各々、プロセッサ3410として実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、システム3400のBIOS、FWフラッシュ3422及び/又はLPDDR3 3415などの、任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、システム3400の任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、WLANユニット3450及び/又はWWANユニット3456として実装されてもよい。
【0279】
図35は、少なくとも一実施例による、例示的な集積回路3500を示す。少なくとも一実施例では、例示的な集積回路3500は、1つ又は複数のIPコアを使用して作製されてもよいSoCである。少なくとも一実施例では、集積回路3500は、1つ又は複数のアプリケーション・プロセッサ3505(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ3510を含み、さらに、画像プロセッサ3515及び/又はビデオ・プロセッサ3520を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路3500は、USBコントローラ3525、UARTコントローラ3530、SPI/SDIOコントローラ3535、及びI
2S/I
2Cコントローラ3540を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路3500は、ハイ・デフィニション・マルチメディア・インターフェース(「HDMI」(登録商標):high-definition multimedia interface(登録商標))コントローラ3550及びモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」)ディスプレイ・インターフェース3555のうち1つ又は複数に結合されるディスプレイ・デバイス3545を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム3560によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ3565を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン3570を含む。
【0280】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、集積回路3500を使用して実装されてもよい。そのような実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、集積回路3500のアプリケーション・プロセッサ3505、グラフィックス・プロセッサ3510、画像プロセッサ3515、及び/又はビデオ・プロセッサ3520などの、任意のプロセッサを使用して実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、集積回路3500の任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、集積回路3500の任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、集積回路3500の任意の通信装置として実装されてもよい。
【0281】
少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、集積回路3500を使用して実装されてもよい。そのような実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、集積回路3500のアプリケーション・プロセッサ3505、グラフィックス・プロセッサ3510、画像プロセッサ3515、及び/又はビデオ・プロセッサ3520などの、任意のプロセッサを使用して実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、集積回路3500の任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、集積回路3500の任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、集積回路3500の任意の通信装置として実装されてもよい。
【0282】
少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、集積回路3500を使用して実装されてもよい。そのような実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、集積回路3500のアプリケーション・プロセッサ3505、グラフィックス・プロセッサ3510、画像プロセッサ3515、及び/又はビデオ・プロセッサ3520などの、任意のプロセッサを使用して実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、集積回路3500の任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、集積回路3500の任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、集積回路3500の任意の通信装置として実装されてもよい。
【0283】
図36は、少なくとも一実施例による、コンピューティング・システム3600を示す。少なくとも一実施例では、コンピューティング・システム3600は、メモリ・ハブ3605を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ3602とシステム・メモリ3604とを有する処理サブシステム3601を含む。少なくとも一実施例では、メモリ・ハブ3605は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ3602内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ3605は、通信リンク3606を介してI/Oサブシステム3611に結合される。少なくとも一実施例では、I/Oサブシステム3611は、コンピューティング・システム3600が1つ又は複数の入力デバイス3608からの入力を受信できるようにすることができるI/Oハブ3607を含む。少なくとも一実施例では、I/Oハブ3607は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ3602に含まれて、1つ又は複数のディスプレイ・デバイス3610Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ3607に結合された1つ又は複数のディスプレイ・デバイス3610Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
【0284】
少なくとも一実施例では、処理サブシステム3601は、バス又は他の通信リンク3613を介してメモリ・ハブ3605に結合された1つ又は複数の並列プロセッサ3612を含む。少なくとも一実施例では、通信リンク3613は、PCIeなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダ固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ3612は、メニー・インテグレーテッド・コア・プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことができる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ3612は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ3607を介して結合された1つ又は複数のディスプレイ・デバイス3610Aのうち1つに、ピクセルを出力することができる。少なくとも一実施例では、1つ又は複数の並列プロセッサ3612はまた、1つ又は複数のディスプレイ・デバイス3610Bに直接接続できるようにするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
【0285】
少なくとも一実施例では、システム・ストレージ・ユニット3614は、I/Oハブ3607に接続されて、コンピューティング・システム3600のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ3616を使用して、I/Oハブ3607と、プラットフォームに一体化されてもよいネットワーク・アダプタ3618及び/又はワイヤレス・ネットワーク・アダプタ3619などの他の構成要素、並びに1つ又は複数のアドイン・デバイス3620を介して加えることができる様々な他のデバイスとの接続を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ3618は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ3619は、Wi-Fi、Bluetooth、NFC、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうち1つ又は複数を含むことができる。
【0286】
少なくとも一実施例では、コンピューティング・システム3600は、USB若しくは他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイス、及び/又はそれらの変形例を含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ3607に接続されてもよい。少なくとも一実施例では、
図36の様々な構成要素を相互接続する通信経路が、PCIベースのプロトコル(たとえば、PCIe)などの任意の好適なプロトコル、又はNVLink高速相互接続などの他のバス若しくはポイント・ツー・ポイント通信インターフェース及び/若しくはプロトコル、又は相互接続プロトコルを使用して、実装されてもよい。
【0287】
少なくとも一実施例では、1つ又は複数の並列プロセッサ3612は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス処理ユニット(「GPU」)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ3612は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム3600の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ3612、メモリ・ハブ3605、プロセッサ3602、及びI/Oハブ3607を、SoC集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム3600の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(「SIP」:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム3600の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(「MCM」:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。少なくとも一実施例では、I/Oサブシステム3611及びディスプレイ・デバイス3610Bは、コンピューティング・システム3600から省略される。
【0288】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、コンピューティング・システム3600を使用して実装されてもよい。そのような実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、コンピューティング・システム3600のプロセッサ3602などの任意のプロセッサを使用して実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、コンピューティング・システム3600のシステム・メモリ3604などの任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、コンピューティング・システム3600の通信リンク3613などの任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、コンピュータ・システム3600のネットワーク・アダプタ3618及び/又はワイヤレス・ネットワーク・アダプタ3619などの任意の通信装置として実装されてもよい。
【0289】
少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、コンピューティング・システム3600を使用して実装されてもよい。そのような実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、コンピューティング・システム3600のプロセッサ3602などの任意のプロセッサを使用して実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、コンピューティング・システム3600のシステム・メモリ3604などの任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、コンピューティング・システム3600の通信リンク3613などの任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、コンピュータ・システム3600のネットワーク・アダプタ3618及び/又はワイヤレス・ネットワーク・アダプタ3619などの任意の通信装置として実装されてもよい。
【0290】
少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、コンピューティング・システム3600を使用して実装されてもよい。そのような実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、コンピューティング・システム3600のプロセッサ3602などの任意のプロセッサを使用して実装されてもよい。送信側メモリ116及び/又は受信側メモリ128は各々、コンピューティング・システム3600のシステム・メモリ3604などの任意のメモリを使用して実装されてもよい。送信側バス228及び/又は受信側バス418は各々、コンピューティング・システム3600の通信リンク3613などの任意のバスを使用して実装されてもよい。送信側通信装置112及び/又は受信側通信装置124は各々、コンピュータ・システム3600のネットワーク・アダプタ3618及び/又はワイヤレス・ネットワーク・アダプタ3619などの任意の通信装置として実装されてもよい。
【0291】
処理システム
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる例示的な処理システムを記載する。
【0292】
図37は、少なくとも一実施例による、アクセラレーテッド・プロセッシング・ユニット(「APU」)3700を示す。少なくとも一実施例では、APU3700は、カリフォルニア州サンタ・クララ所在のAMD Corporationによって開発される。少なくとも一実施例では、APU3700は、CUDAプログラムなどのアプリケーション・プログラムを実行するように構成することができる。少なくとも一実施例では、APU3700は、限定ではなく、コア複合体3710、グラフィックス複合体3740、ファブリック3760、I/Oインターフェース3770、メモリ・コントローラ3780、ディスプレイ・コントローラ3792、及びマルチメディア・エンジン3794を含む。少なくとも一実施例では、APU3700は、限定ではなく、任意の数のコア複合体3710、任意の数のグラフィックス複合体3740、任意の数のディスプレイ・コントローラ3792、及び任意の数のマルチメディア・エンジン3794を任意の組合せで含んでもよい。例示を目的として、同様のオブジェクトの複数のインスタンスが、本明細書において、オブジェクトを識別する参照番号及び必要な場合にインスタンスを識別する括弧付きの数を用いて示されている。
【0293】
少なくとも一実施例では、コア複合体3710はCPUであり、グラフィックス複合体3740はGPUであり、APU3700は、限定ではなく、3710及び3740を単一のチップ上に集積する処理ユニットである。少なくとも一実施例では、いくつかのタスクはコア複合体3710に割り当てられてもよく、他のタスクはグラフィックス複合体3740に割り当てられてもよい。少なくとも一実施例では、コア複合体3710は、オペレーティング・システムなどの、APU3700と関連付けられる主制御ソフトウェアを実行するように構成されている。少なくとも一実施例では、コア複合体3710は、他のプロセッサの動作を制御し、協調させる、APU3700のマスタ・プロセッサである。少なくとも一実施例では、コア複合体3710は、グラフィックス複合体3740の動作を制御するコマンドを発行する。少なくとも一実施例では、コア複合体3710は、CUDAソース・コードから導出されるホスト実行可能コードを実行するように構成することができ、グラフィックス複合体3740は、CUDAソース・コードから導出されるデバイス実行可能コードを実行するように構成することができる。
【0294】
少なくとも一実施例では、コア複合体3710は、限定することなく、コア3720(1)~3720(4)及びL3キャッシュ3730を含む。少なくとも一実施例では、コア複合体3710は、限定することなく、任意の数のコア3720並びに任意の数及びタイプのキャッシュを任意の組合せで含んでもよい。少なくとも一実施例では、コア3720は、特定の命令セット・アーキテクチャ(「ISA」)の命令を実行するように構成されている。少なくとも一実施例では、各コア3720はCPUコアである。
【0295】
少なくとも一実施例では、各コア3720は、限定することなく、フェッチ/復号ユニット3722、整数実行エンジン3724、浮動小数点実行エンジン3726、及びL2キャッシュ3728を含む。少なくとも一実施例では、フェッチ/復号ユニット3722は、命令をフェッチし、そのような命令を復号し、マイクロ・オペレーションを生成し、別個のマイクロ命令を整数実行エンジン3724及び浮動小数点実行エンジン3726にディスパッチする。少なくとも一実施例では、フェッチ/復号ユニット3722は、同時に、1つのマイクロ命令を整数実行エンジン3724にディスパッチし、別のマイクロ命令を浮動小数点実行エンジン3726にディスパッチすることができる。少なくとも一実施例では、整数実行エンジン3724は、限定ではないが、整数及びメモリ演算を実行する。少なくとも一実施例では、浮動小数点エンジン3726は、限定ではないが、浮動小数点及びベクトル演算を実行する。少なくとも一実施例では、フェッチ-復号ユニット3722は、整数実行エンジン3724と浮動小数点実行エンジン3726の両方に代わる単一の実行エンジンにマイクロ命令をディスパッチする。
【0296】
少なくとも一実施例では、各コア3720(i)、iはコア3720の特定のインスタンスを表す整数、は、コア3720(i)に含まれるL2キャッシュ3728(i)にアクセスすることができる。少なくとも一実施例では、コア複合体3710(j)、jはコア複合体3710の特定のインスタスを表す整数、に含まれる各コア3720は、コア複合体3710(j)に含まれるL3キャッシュ3730(j)を介して、コア複合体3710(j)に含まれる他のコア3720に接続される。少なくとも一実施例では、コア複合体3710(j)、jはコア複合体3710の特定のインスタスを表す整数、に含まれる各コア3720は、コア複合体3710(j)に含まれるL3キャッシュ3730(j)のすべてにアクセスすることができる。少なくとも一実施例では、L3キャッシュ3730は、限定することなく任意の数のスライスを含んでもよい。
【0297】
少なくとも一実施例では、グラフィックス複合体3740は、コンピュート動作を高度に並列に実施するように構成することができる。少なくとも一実施例では、グラフィックス複合体3740は、描画コマンド、ピクセル操作、幾何学的計算、及び画像のディスプレイへのレンダリングと関連付けられる他の動作などの、グラフィックス・パイプライン動作を実行するように構成されている。少なくとも一実施例では、グラフィックス複合体3740は、グラフィックスに関連しない動作を実行するように構成されている。少なくとも一実施例では、グラフィックス複合体3740は、グラフィックスに関連する動作とグラフィックスに関連しない動作の両方を実行するように構成されている。
【0298】
少なくとも一実施例では、グラフィックス複合体3740は、限定することなく、任意の数のコンピュート・ユニット3750及びL2キャッシュ3742を含む。少なくとも一実施例では、コンピュート・ユニット3750は、L2キャッシュ3742を共有する。少なくとも一実施例では、L2キャッシュ3742は分割される。少なくとも一実施例では、グラフィックス複合体3740は、限定することなく、任意の数のコンピュート・ユニット3750並びに任意の数(ゼロを含む)及びタイプのキャッシュを含む。少なくとも一実施例では、グラフィック複合体3740は、限定することなく、任意の量の専用グラフィックス・ハードウェアを含む。
【0299】
少なくとも一実施例では、各コンピュート・ユニット3750は、限定することなく、任意の数のSIMDユニット3752及び共有メモリ3754を含む。少なくとも一実施例では、各SIMDユニット3752は、SIMDアーキテクチャを実装し、並列に動作を実施するように構成されている。少なくとも一実施例では、各コンピュート・ユニット3750は、任意の数のスレッド・ブロックを実行し得るが、各スレッド・ブロックは、単一のコンピュート・ユニット3750上で実行する。少なくとも一実施例では、スレッド・ブロックは、限定することなく、任意の数の実行のスレッドを含む。少なくとも一実施例では、作業グループがスレッド・ブロックである。少なくとも一実施例では、各SIMDユニット3752は、異なるワープを実行する。少なくとも一実施例では、ワープはスレッド(例えば、16個のスレッド)のグループであり、ワープ内の各スレッドは、単一のスレッド・ブロックに属し、単一の命令セットに基づいてデータの異なるセットを処理するように構成されている。少なくとも一実施例において、予測を使用して、ワープ内の1つ又は複数のスレッドを無効化することができる。少なくとも一実施例では、車線がスレッドである。少なくとも一実施例では、作業項目がスレッドである。少なくとも一実施例では、波面がワープである。少なくとも一実施例では、スレッド・ブロック内の複数の異なる波面がともに同期し、共有メモリ3754を介して通信することができる。
【0300】
少なくとも一実施例では、ファブリック3760は、コア複合体3710、グラフィックス複合体3740、I/Oインターフェース3770、メモリ・コントローラ3780、ディスプレイ・コントローラ3792、及びマルチメディア・エンジン3794にまたがるデータ及び制御の送信を容易にするシステム相互接続である。少なくとも一実施例では、APU3700は、限定ではないが、ファブリック3760に加えて又はその代わりに、APU3700の内部又は外部にあってもよい、任意の数及びタイプの直接的又は間接的にリンクされている構成要素にまたがるデータ及び制御の送信を容易にする、任意の量及びタイプのシステム相互接続を含んでもよい。少なくとも一実施例では、I/Oインターフェース3770は、任意の数及びタイプのI/Oインターフェース(例えば、PCI、PCI-Extended(「PCI-X」)、PCIe、ギガビット・イーサネット(登録商標)(「GBE」)、USBなど)を表す。少なくとも一実施例では、様々なタイプの周辺デバイスが、I/Oインターフェース3770に結合される。少なくとも一実施例では、I/Oインターフェース3770に結合される周辺デバイスは、限定ではないが、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲーム・コントローラ、メディア記録デバイス、外部ストレージ・デバイス、ネットワーク・インターフェース・カードなどを含んでもよい。
【0301】
少なくとも一実施例では、ディスプレイ・コントローラAMD92は、液晶ディスプレイ(「LCD」)デバイスなどの1つ又は複数のディスプレイ・デバイス上に画像を表示する。少なくとも一実施例では、マルチメディア・エンジン3794は、限定ではないが、ビデオ・デコーダ、ビデオ・エンコーダ、画像信号プロセッサなどのような、マルティメディアに関連する任意の量及びタイプの回路を含む。少なくとも一実施例では、メモリ・コントローラ3780は、APU3700と統合システム・メモリ3790との間のデータ転送を容易にする。少なくとも一実施例では、コア複合体3710及びグラフィックス複合体3740は、統合システム・メモリ3790を共有する。
【0302】
少なくとも一実施例では、APU3700は、限定ではないが、1つの構成要素に専用とされてもよく、又は、複数の構成要素の間で共有されてもよい、任意の量及びタイプのメモリ・コントローラ3780及びメモリ・デバイス(例えば、共有メモリ3754)を含むメモリ・サブシステムを実装する。少なくとも一実施例では、APU3700は、限定ではないが、各々が、任意の数の構成要素(例えば、コア3720、コア複合体3710、SIMDユニット3752、コンピュート・ユニット3750、及びグラフィックス複合体3740)にとってプライベートであってもよく、又は、それらの間で共有されてもよい、1つ又は複数のキャッシュ・メモリ(例えば、L2キャッシュ3828、L3キャッシュ3730、及びL2キャッシュ3742)を含むキャッシュ・サブシステムを実装する。
【0303】
少なくとも一実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、APU3700として実装されてもよい。そのよう実施例では、送信側メモリ116及び/又は受信側メモリ128は各々、統合システム・メモリ3790として実装されてもよい。
【0304】
図38は、少なくとも一実施例によるCPU3800を示す。少なくとも一実施例では、CPU3800は、カリフォルニア州サンタ・クララ所在のAMD Corporationによって開発される。少なくとも一実施例では、CPU3800は、アプリケーション・プログラムを実行するように構成することができる。少なくとも一実施例では、CPU3800は、オペレーティング・システムなどの、主制御ソフトウェアを実行するように構成されている。少なくとも一実施例では、CPU3800は、外部GPU(図示せず)の動作を制御するコマンドを発行する。少なくとも一実施例では、CPU3800は、CUDAソース・コードから導出されるホスト実行可能コードを実行するように構成することができ、外部GPUを、そのようなCUDAソース・コードから導出されるデバイス実行可能コードを実行するように構成することができる。少なくとも一実施例では、CPU3800は、限定ではないが、任意の数のコア複合体3810、ファブリック3860、I/Oインターフェース3870、及びメモリ・コントローラ3880を含む。
【0305】
少なくとも一実施例では、コア複合体3810は、限定することなく、コア3820(1)~3820(4)及びL3キャッシュ3830を含む。少なくとも一実施例では、コア複合体3810は、限定することなく、任意の数のコア3820並びに任意の数及びタイプのキャッシュを任意の組合せで含んでもよい。少なくとも一実施例では、コア3820は、特定のISAの命令を実行するように構成されている。少なくとも一実施例では、各コア3820はCPUコアである。
【0306】
少なくとも一実施例では、各コア3820は、限定することなく、フェッチ/復号ユニット3822、整数実行エンジン3824、浮動小数点実行エンジン3826、及びL2キャッシュ3828を含む。少なくとも一実施例では、フェッチ/復号ユニット3822は、命令をフェッチし、そのような命令を復号し、マイクロ・オペレーションを生成し、別個のマイクロ命令を整数実行エンジン3824及び浮動小数点実行エンジン3826にディスパッチする。少なくとも一実施例では、フェッチ/復号ユニット3822は、同時に、1つのマイクロ命令を整数実行エンジン3824にディスパッチし、別のマイクロ命令を浮動小数点実行エンジン3826にディスパッチすることができる。少なくとも一実施例では、整数実行エンジン3824は、限定ではないが、整数及びメモリ演算を実行する。少なくとも一実施例では、浮動小数点エンジン3826は、限定ではないが、浮動小数点及びベクトル演算を実行する。少なくとも一実施例では、フェッチ-復号ユニット3822は、整数実行エンジン3824と浮動小数点実行エンジン3826の両方に代わる単一の実行エンジンにマイクロ命令をディスパッチする。
【0307】
少なくとも一実施例では、各コア3820(i)、iはコア3820の特定のインスタンスを表す整数、は、コア3820(i)に含まれるL2キャッシュ3828(i)にアクセスすることができる。少なくとも一実施例では、コア複合体3810(j)、jはコア複合体3810の特定のインスタンスを表す整数、に含まれる各コア3820は、コア複合体3810(j)に含まれるL3キャッシュ3830(j)を介して、コア複合体3810(j)内の他のコア3820に接続される。少なくとも一実施例では、コア複合体3810(j)、jはコア複合体3810の特定のインスタスを表す整数、に含まれる各コア3820は、コア複合体3810(j)に含まれるL3キャッシュ3830(j)のすべてにアクセスすることができる。少なくとも一実施例では、L3キャッシュ3830は、限定することなく任意の数のスライスを含んでもよい。
【0308】
少なくとも一実施例では、ファブリック3860は、コア複合体3810(1)~3810(N)(Nはゼロよりも大きい整数)、I/Oインターフェース3870、及びメモリ・コントローラ3880にまたがるデータ及び制御の送信を容易にするシステム相互接続である。少なくとも一実施例では、CPU3800は、限定ではないが、ファブリック3860に加えて又はその代わりに、CPU3800の内部又は外部にあってもよい、任意の数及びタイプの直接的又は間接的にリンクされている構成要素にまたがるデータ及び制御の送信を容易にする、任意の量及びタイプのシステム相互接続を含んでもよい。少なくとも一実施例では、I/Oインターフェース3870は、任意の数及びタイプのI/Oインターフェース(PCI、PCI-X、PCIe、GBE、USBなど)を表す。少なくとも一実施例では、様々なタイプの周辺デバイスが、I/Oインターフェース3870に結合される。少なくとも一実施例では、I/Oインターフェース3870に結合される周辺デバイスは、限定ではないが、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲーム・コントローラ、メディア記録デバイス、外部ストレージ・デバイス、ネットワーク・インターフェース・カードなどを含んでもよい。
【0309】
少なくとも一実施例では、メモリ・コントローラ3880は、CPU3800とシステム・メモリ3890との間のデータ転送を容易にする。少なくとも一実施例では、コア複合体3810及びグラフィックス複合体3840は、システム・メモリ3890を共有する。少なくとも一実施例では、CPU3800は、限定ではないが、1つの構成要素に専用とされてもよく、又は、複数の構成要素の間で共有されてもよい、任意の量及びタイプのメモリ・コントローラ3880及びメモリ・デバイスを含むメモリ・サブシステムを実装する。少なくとも一実施例では、CPU3800は、限定ではないが、各々が、任意の数の構成要素(例えば、コア3820及びコア複合体3810)にとってプライベートであってもよく、又は、それらの間で共有されてもよい、1つ又は複数のキャッシュ・メモリ(例えば、L2キャッシュ3828及びL3キャッシュ3830)を含むキャッシュ・サブシステムを実装する。
【0310】
少なくとも一実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、CPU3800として実装されてもよい。そのよう実施例では、送信側メモリ116及び/又は受信側メモリ128は各々、システム・メモリ3890として実装されてもよい。
【0311】
図39は、少なくとも一実施例による、例示的な加速度計集積スライス3990を示す。
図39~
図48を参照しながら使用される場合、「スライス」は、アクセラレータ統合回路の処理リソースの指定部分を含む。少なくとも一実施例では、アクセラレータ統合回路は、グラフィックス加速モジュールに含まれる複数のグラフィックス処理エンジンの代わりに、キャッシュ管理、メモリ・アクセス、コンテキスト管理、及び割込み管理のサービスを提供する。グラフィックス処理エンジンは各々、別個のGPUを含んでもよい。或いは、グラフィックス処理エンジンは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを含んでもよい。少なくとも一実施例では、グラフィックス加速モジュールは、複数のグラフィックス処理エンジンを有するGPUであってもよい。少なくとも一実施例では、グラフィックス処理エンジンは、共通のパッケージ、ライン・カード、又はチップに集積された個々のGPUであってもよい。
【0312】
システム・メモリ3914内のアプリケーション実効アドレス空間3982は、プロセス要素3983を格納する。一実施例では、プロセス要素3983は、プロセッサ3907上で実行されるアプリケーション3980からのGPU呼出し3981に応答して格納される。プロセス要素3983は、対応するアプリケーション3980のためのプロセス状態を包含する。プロセス要素3983に包含されるワーク記述子(「WD」:work descriptor)3984は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを包含してもよい。少なくとも一実施例では、WD3984はアプリケーションの実効アドレス空間3982におけるジョブ要求キューに対するポインタである。
【0313】
グラフィックス加速モジュール3946及び/又は個々のグラフィックス処理エンジンは、システム内のプロセスのすべて又はサブセットによって共有することができる。少なくとも一実施例では、プロセス状態を設定し、WD 3984をグラフィックス加速モジュール3946に送信して、仮想化環境においてジョブを開始するための、インフラストラクチャが含まれてもよい。
【0314】
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは実装固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール3946又は個々のグラフィックス処理エンジンを所有する。グラフィックス加速モジュール3946は単一のプロセスによって所有されるので、グラフィックス加速モジュール3946が割り当てられたとき、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路を初期化する。
【0315】
動作時、アクセラレータ統合スライス3990内のWDフェッチ・ユニット3991は、グラフィックス加速モジュール3946の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの指示を含む、次のWD 3984をフェッチする。図示されるように、WD 3984からのデータは、レジスタ3945に格納され、メモリ管理ユニット(「MMU」)3939、割込み管理回路3947、及び/又はコンテキスト管理回路3948によって使用されてもよい。たとえば、MMU 3939の一実施例は、OS仮想アドレス空間3985内のセグメント/ページ・テーブル3986にアクセスするためのセグメント/ページ・ウォーク回路を含む。割込み管理回路3947は、グラフィックス加速モジュール3946から受信した割込みイベント(「INT」)3992を処理してもよい。グラフィックス動作を実施するとき、グラフィックス処理エンジンによって生成された実効アドレス3993は、MMU 3939によって実アドレスにトランスレートされる。
【0316】
一実施例では、レジスタ3945の同じセットが、各グラフィックス処理エンジン、及び/又はグラフィックス加速モジュール3946について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタは各々、アクセラレータ統合スライス3990に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
【表1】
【0317】
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
【表2】
【0318】
一実施例では、各WD 3984は、特定のグラフィックス加速モジュール3946及び/又は特定のグラフィックス処理エンジンに固有のものである。WD3984は、グラフィックス処理エンジンがワークを行うために必要とするすべての情報を包含するか、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
【0319】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、
図39のシステムを使用して実装されてもよい。そのような実施例において、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、プロセッサ3907として実装されてもよく、送信側メモリ116及び/又は受信側メモリ128は各々、システム・メモリ3914として実装されてもよい。
【0320】
少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、
図39のシステムを使用して実装されてもよい。そのような実施例において、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、プロセッサ3907として実装されてもよく、送信側メモリ116及び/又は受信側メモリ128は各々、システム・メモリ3914として実装されてもよい。
【0321】
少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、
図39のシステムを使用して実装されてもよい。そのような実施例において、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、プロセッサ3907として実装されてもよく、送信側メモリ116及び/又は受信側メモリ128は各々、システム・メモリ3914として実装されてもよい。
【0322】
図40A~
図40Bは、少なくとも一実施例による、例示的なグラフィックス・プロセッサを示す。少なくとも一実施例では、例示的なグラフィックス・プロセッサのいずれかは、1つ又は複数のIPコアを使用して作製されてもよい。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。少なくとも一実施例では、例示的なグラフィックス・プロセッサは、SoC内で使用するためのものである。
【0323】
図40Aは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製されてもよいSoC集積回路の例示的なグラフィックス・プロセッサ4010を示す。
図40Bは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製されてもよいSoC集積回路のさらなる例示的なグラフィックス・プロセッサ4040を示す。少なくとも一実施例では、
図40Aのグラフィックス・プロセッサ4010は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、
図40Bのグラフィックス・プロセッサ4040は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ4010、4040のそれぞれは、
図16のグラフィックス・プロセッサ1610の変形形態とすることができる。
【0324】
少なくとも一実施例では、グラフィックス・プロセッサ4010は、頂点プロセッサ4005と、1つ又は複数のフラグメント・プロセッサ4015A~4015N(たとえば、4015A、4015B、4015C、4015D~4015N-1、及び4015N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ4010は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ4005は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ4015A~4015Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ4005は、3Dグラフィックス・パイプラインの頂点処理ステージを実施し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ4015A~4015Nは、頂点プロセッサ4005によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ4015A~4015Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実施するために使用されてもよい。
【0325】
少なくとも一実施例では、グラフィックス・プロセッサ4010はさらに、1つ又は複数のMMU 4020A~4020B、キャッシュ4025A~4025B、及び回路相互接続4030A~4030Bを含む。少なくとも一実施例では、1つ又は複数のMMU 4020A~4020Bは、頂点プロセッサ4005及び/又はフラグメント・プロセッサ4015A~4015Nを含む、グラフィックス・プロセッサ4010のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ4025A~4025Bに格納された頂点又は画像/テクスチャのデータに加えて、メモリに格納された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU 4020A~4020Bは、
図16の1つ若しくは複数のアプリケーション・プロセッサ1605、画像プロセッサ1615、及び/又はビデオ・プロセッサ1620に関連付けられた1つ又は複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ1605~1620は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続4030A~4030Bは、グラフィックス・プロセッサ4010が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
【0326】
少なくとも一実施例では、グラフィックス・プロセッサ4040は、
図40Aのグラフィックス・プロセッサ4010の1つ又は複数のMMU 4020A~4020B、キャッシュ4025A~4025B、及び回路相互接続4030A~4030Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ4040は、1つ又は複数のシェーダ・コア4055A~4055N(たとえば、4055A、4055B、4055C、4055D、4055E、4055F~4055N-1、及び4055N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するシェーダ・プログラム・コードを含む、すべてのタイプのプログラム可能なシェーダ・コードを実行することができる、統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ4040は、1つ又は複数のシェーダ・コア4055A~4055Nに実行スレッドをディスパッチするスレッド・ディスパッチャとして作用するコア間タスク・マネージャ4045と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット4058とを含む。
【0327】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、グラフィックス・プロセッサ4010及び/又はグラフィックス・プロセッサ4040を含んでもよい。少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、グラフィックス・プロセッサ4010及び/又はグラフィックス・プロセッサ4040を含んでもよい。少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、グラフィックス・プロセッサ4010及び/又はグラフィックス・プロセッサ4040を含んでもよい。
【0328】
図41Aは、少なくとも一実施例による、グラフィックス・コア4100を示す。少なくとも一実施例では、グラフィックス・コア4100は、
図35のグラフィックス・プロセッサ3510内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア4100は、
図40Bにあるような統合シェーダ・コア4055A~4055Nであってもよい。少なくとも一実施例では、グラフィックス・コア4100は、共有命令キャッシュ4102、テクスチャ・ユニット4118、及びキャッシュ/共有メモリ4120を含み、これらは、グラフィックス・コア4100内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア4100は、複数のスライス4101A~4101N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア4100の複数のインスタンスを含むことができる。スライス4101A~4101Nは、ローカル命令キャッシュ4104A~4104N、スレッド・スケジューラ4106A~4106N、スレッド・ディスパッチャ4108A~4108N、及びレジスタのセット4110A~4110Nを含む、サポート論理を含むことができる。少なくとも一実施例では、スライス4101A~4101Nは、追加機能ユニット(「AFU」)4112A~4112N、浮動小数点ユニット(「FPU」)4114A~4114N、整数算術論理演算ユニット(「ALU」)4116~4116N、アドレス計算ユニット(「ACU」)4113A~4113N、倍精度浮動小数点ユニット(「DPFPU」)4115A~4115N、及び行列処理ユニット(「MPU」)4117A~4117Nのセットを含むことができる。
【0329】
少なくとも一実施例では、FPU 4114A~4114Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実施することができ、DPFPU 4115A~4115Nは、倍精度(64ビット)の浮動小数点演算を実施する。少なくとも一実施例では、ALU 4116A~4116Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実施することができ、混合精度の演算用に構成することができる。少なくとも一実施例では、MPU 4117A~4117Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算用に構成することができる。少なくとも一実施例では、MPU 4117~4117Nは、汎用行列-行列乗算(「GEMM」)の加速をサポートできるようにすることを含め、CUDAプログラムを加速する様々な行列演算を実施することができる。少なくとも一実施例では、AFU 4112A~4112Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットによってサポートされていない追加の論理演算を実施することができる。
【0330】
図41Bは、少なくとも一実施例による、汎用グラフィックス・プロセッシング・ユニット(「GPGPU」)4130を示す。少なくとも一実施例では、GPGPU 4130は、高並列であり、マルチ・チップ・モジュール上での導入に適している。少なくとも一実施例では、GPGPU 4130は、高並列コンピュート動作がGPUのアレイによって実施されることを可能にするように構成することができる。少なくとも一実施例では、GPGPU 4130は、GPGPU 4130の他のインスタンスに直接リンクされて、CUDAプログラムの実行時間を改善するためにマルチGPUクラスタを作成することができる。少なくとも一実施例では、GPGPU 4130は、ホスト・プロセッサとの接続を可能にするホスト・インターフェース4132を含む。少なくとも一実施例では、ホスト・インターフェース4132は、PCIeインターフェースである。少なくとも一実施例では、ホスト・インターフェース4132は、ベンダ固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU 4130は、ホスト・プロセッサからコマンドを受信し、グローバル・スケジューラ4134を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ4136A~4136Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ4136A~4136Hは、キャッシュ・メモリ4138を共有する。少なくとも一実施例では、キャッシュ・メモリ4138は、コンピュート・クラスタ4136A~4136H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
【0331】
少なくとも一実施例では、GPGPU 4130は、メモリ・コントローラ4142A~4142Bのセットを介して、コンピュート・クラスタ4136A~4136Hに結合されたメモリ4144A~4144Bを含む。少なくとも一実施例では、メモリ4144A~4144Bは、グラフィックス・ダブル・データ・レート(「GDDR」:graphics double data rate)メモリを含む、同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」)などのDRAM又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
【0332】
少なくとも一実施例では、コンピュート・クラスタ4136A~4136Hはそれぞれ、
図16Aのグラフィックス・コア4100などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、CUDAプログラムと関連付けられる計算に適したものを含め、様々な精度で計算動作を実施することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ4136A~4136Hそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実施するように構成することができ、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実施するように構成することができる。
【0333】
少なくとも一実施例では、GPGPU 4130の複数のインスタンスは、コンピュート・クラスタとして動作するように構成することができる。少なくとも一実施例では、コンピュート・クラスタ4136A~4136Hは、同期及びデータ交換のための、任意の技術的に実現可能な通信技法を実施してもよい。少なくとも一実施例では、GPGPU 4130の複数のインスタンスは、ホスト・インターフェース4132を通じて通信する。少なくとも一実施例では、GPGPU 4130は、I/Oハブ4139を含み、このハブは、GPGPU 4130の他のインスタンスに直接接続できるようにするGPUリンク4140に、GPGPU 4130を結合する。少なくとも一実施例では、GPUリンク4140は、GPGPU 4130の複数のインスタンス間で通信及び同期できるようにするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク4140は、他のGPGPU 4130又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU 4130の複数のインスタンスは、別々のデータ処理システム内に配置され、ホスト・インターフェース4132を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク4140は、ホスト・インターフェース4132に加えて、又はその代わりに、ホスト・プロセッサに接続できるように構成することができる。少なくとも一実施例では、GPGPU 4130は、CUDAプログラムを実行するように構成することができる。
【0334】
少なくとも一実施例では、送信側デバイス102及び/又は受信側デバイス104は各々、グラフィックス・コア4100及び/又はGPGPU 4130を含んでもよい。少なくとも一実施例では、Txホスト・コンピュータ524、526、及び528並びに/又はRxホスト・コンピュータ540のうちの1つ又は複数は各々、グラフィックス・コア4100及び/又はGPGPU 4130を含んでもよい。少なくとも一実施例では、O-DU812及び/又はO-RU814は各々、グラフィックス・コア4100及び/又はGPGPU 4130を含んでもよい。
【0335】
図42Aは、少なくとも一実施例による、並列プロセッサ4200を示す。少なくとも一実施例では、並列プロセッサ4200の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(「ASIC」)、又はFPGAなどの1つ又は複数の集積回路デバイスを使用して実装されてもよい。
【0336】
少なくとも一実施例では、並列プロセッサ4200は並列処理ユニット4202を含む。少なくとも一実施例では、並列処理ユニット4202は、並列処理ユニット4202の他のインスタンスを含む他のデバイスと通信できるようにするI/Oユニット4202を含む。少なくとも一実施例では、I/Oユニット4204は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット4204は、メモリ・ハブ1705などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ1705とI/Oユニット4204との間の接続は、通信リンクを形成する。少なくとも一実施例では、I/Oユニット4204は、ホスト・インターフェース4206及びメモリ・クロスバー4216に接続され、ここでホスト・インターフェース4206は、処理動作の実施を対象とするコマンドを受信し、メモリ・クロスバー4216は、メモリ動作の実施を対象とするコマンドを受信する。
【0337】
少なくとも一実施例では、ホスト・インターフェース4206が、I/Oユニット4204を介してコマンド・バッファを受信すると、ホスト・インターフェース4206は、これらのコマンドを実施するためのワーク動作をフロント・エンド4208に向けることができる。少なくとも一実施例では、フロント・エンド4208はスケジューラ4210に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理アレイ4212に分配するように構成される。少なくとも一実施例では、スケジューラ4210は、処理アレイ4212にタスクが分配される前に、処理アレイ4212が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ4210は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ4210は、複雑なスケジューリング及びワーク分配動作を、粗い粒度及び細かい粒度で実施するように構成可能であり、処理アレイ4212で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングができるようにする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ4212でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうち1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ4210を含むマイクロコントローラ内のスケジューラ4210論理によって、ワークロードを自動的に処理アレイ4212全体に分配することができる。
【0338】
少なくとも一実施例では、処理アレイ4212は、最大「N個」のクラスタ(たとえば、クラスタ4214A、クラスタ4214B~クラスタ4214N)を含むことができる。少なくとも一実施例では、処理アレイ4212の各クラスタ4214A~4214Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ4210は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理アレイ4212のクラスタ4214A~4214Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ4210によって動的に対処されてもよく、又は処理アレイ4212によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理アレイ4212の異なるクラスタ4214A~4214Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実施するように配分することができる。
【0339】
少なくとも一実施例では、処理アレイ4212は、様々なタイプの並列処理動作を実施するように構成することができる。少なくとも一実施例では、処理アレイ4212は、汎用の並列コンピュート動作を実施するように構成される。たとえば、少なくとも一実施例では、処理アレイ4212は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実施、並びにデータ変換の実施を含む処理タスクを実行するための論理を含むことができる。
【0340】
少なくとも一実施例では、処理アレイ4212は、並列グラフィックス処理動作を実施するように構成される。少なくとも一実施例では、処理アレイ4212は、テクスチャ動作を実施するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されない、かかるグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理アレイ4212は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるがこれらに限定されない、グラフィックス処理関連のシェーダ・プログラムを実行するように構成することができる。少なくとも一実施例では、並列処理ユニット4202は、処理のためにデータをシステム・メモリからI/Oユニット4204を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中はオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ4222)に格納し、次いでシステム・メモリに書き戻すことができる。
【0341】
少なくとも一実施例では、並列処理ユニット4202を使用してグラフィックス処理が実施される場合、処理アレイ4212の複数のクラスタ4214A~4214Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ4210を構成することができる。少なくとも一実施例では、処理アレイ4212の部分は、異なるタイプの処理を実施するように構成することができる。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するため、第1の部分は、頂点シェーディング及びトポロジ生成を実施するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実施するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実施するように構成されてもよい。少なくとも一実施例では、クラスタ4214A~4214Nのうち1つ又は複数によって生成される中間データをバッファに格納して、さらなる処理のためにクラスタ4214A~4214Nの間で中間データを送信することを可能にしてもよい。
【0342】
少なくとも一実施例では、処理アレイ4212は、実行される処理タスクをスケジューラ4210を介して受信することができ、このスケジューラは、処理タスクを定義するコマンドをフロント・エンド4208から受信する。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ4210は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド4208からインデックスを受信してもよい。少なくとも一実施例では、フロント・エンド4208は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理アレイ4212が有効な状態に構成されていることを確保するように構成することができる。
【0343】
少なくとも一実施例では、並列処理ユニット4202の1つ又は複数のインスタンスはそれぞれ、並列プロセッサ・メモリ4222と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ4222には、メモリ・クロスバー4216を介してアクセスすることができ、このメモリ・クロスバーは、処理アレイ4212並びにI/Oユニット4204からメモリ要求を受信することができる。少なくとも一実施例では、メモリ・クロスバー4216は、メモリ・インターフェース4218を介して並列プロセッサ・メモリ4222にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース4218は、複数のパーティション・ユニット(たとえば、パーティション・ユニット4220A、パーティション・ユニット4220B~パーティション・ユニット4220N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ4222の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット4220A~4220Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット4220Aは、対応する第1のメモリ・ユニット4224Aを有し、第2のパーティション・ユニット4220Bは、対応するメモリ・ユニット4224Bを有し、N番目のパーティション・ユニット4220Nは、対応するN番目のメモリ・ユニット4224Nを有する。少なくとも一実施例では、パーティション・ユニット4220A~4220Nの数は、メモリ・デバイスの数に等しくなくてもよい。
【0344】
少なくとも一実施例では、メモリ・ユニット4224A~4224Bは、GDDRメモリを含む、SGRAMなどのDRAM又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、メモリ・ユニット4224A~4224Nはまた、高帯域幅メモリ(「HBM」)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ4222の利用可能な帯域幅を効率的に使用するため、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット4224A~4224Nにわたって格納されて、パーティション・ユニット4220A~4220Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ4222のローカル・インスタンスは除外されてもよい。
【0345】
少なくとも一実施例では、処理アレイ4212のクラスタ4214A~4214Nのうちいずれか1つは、並列プロセッサ・メモリ4222内のメモリ・ユニット4224A~4224Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー4216は、各クラスタ4214A~4214Nの出力を、出力に対してさらなる処理動作を実施することができる任意のパーティション・ユニット4220A~4220N、又は別のクラスタ4214A~4214Nに転送するように構成することができる。少なくとも一実施例では、各クラスタ4214A~4214Nは、メモリ・クロスバー4216を通ってメモリ・インターフェース4218と通信して、様々な外部メモリ・デバイスからの読取り、又はそれらへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー4216は、I/Oユニット4204と通信するためのメモリ・インターフェース4218への接続部、並びに並列プロセッサ・メモリ4222のローカル・インスタンスへの接続部を有して、異なるクラスタ4214A~4214N内の処理ユニットが、システム・メモリ、又は並列処理ユニット4202のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー4216は、仮想チャネルを使用して、クラスタ4214A~4214Nと、パーティション・ユニット4220A~4220Nとの間でトラフィック・ストリームを分離することができる。
【0346】
少なくとも一実施例では、並列処理ユニット4202の複数のインスタンスは、単一のアドイン・カードに提供することができ、又は複数のアドイン・カードを相互接続することができる。少なくとも一実施例では、異なるインスタンスが、異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット4202の異なるインスタンスは相互動作するように構成することができる。たとえば、少なくとも一実施例では、並列処理ユニット4202のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット4202又は並列プロセッサ4200のうち1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むがこれらに限定されない、様々な構成及びフォーム・ファクタで実装することができる。
【0347】
少なくとも一実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、並列プロセッサ4200として実装されてもよい。そのような実施例では、送信側メモリ116及び/又は受信側メモリ128は各々、
図42Aに示され、及び/又は、
図42Aに関連して説明されている任意のメモリを使用して実装されてもよい。
【0348】
図42Bは、少なくとも一実施例による、処理クラスタ4294を示す。少なくとも一実施例では、処理クラスタ4294は、並列処理ユニット内に含まれる。少なくとも一実施例では、処理クラスタ4294は、
図42の処理クラスタ4214A~4214Nのうち1つである。少なくとも一実施例では、処理クラスタ4294は、多数のスレッドを並列で実行するように構成することができ、ここで用語「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするのに、単一命令複数データ(「SIMD」)の命令発行技法が使用される。少なくとも一実施例では、各処理クラスタ4294内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(「SIMT」)の技法が使用される。
【0349】
少なくとも一実施例では、処理クラスタ4294の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ4232を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ4232は、
図42のスケジューラ4210から命令を受信し、グラフィックス・マルチプロセッサ4234及び/又はテクスチャ・ユニット4236を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ4234は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ4294内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ4234の1つ又は複数のインスタンスは、処理クラスタ4294内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ4234はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するのに、データ・クロスバー4240を使用することができる。少なくとも一実施例では、パイプライン・マネージャ4232は、データ・クロスバー4240を介して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
【0350】
少なくとも一実施例では、処理クラスタ4294内の各グラフィックス・マルチプロセッサ4234は、関数実行論理(たとえば、算術論理演算ユニット、ロード/ストア・ユニット(「LSU」)など)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができる、パイプライン方式で構成することができる。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実施することができ、関数ユニットの任意の組合せが存在してもよい。
【0351】
少なくとも一実施例では、処理クラスタ4294に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ4234内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ4234内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ4234内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ4234内の処理エンジンの数より多くのスレッドを含む場合、連続したクロック・サイクルにわたって処理を実施することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ4234上で同時に実行することができる。
【0352】
少なくとも一実施例では、グラフィックス・マルチプロセッサ4234は、ロード及びストアの動作を実施する内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ4234は、内部キャッシュをやめて、処理クラスタ4294内のキャッシュ・メモリ(たとえば、L1キャッシュ4248)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ4234は、パーティション・ユニット(たとえば、
図42のパーティション・ユニット4220A~4220N)内のレベル2(「L2」)キャッシュにもアクセスすることができ、これらのキャッシュは、すべての処理クラスタ4294間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ4234は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうち1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット4202の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ4294は、共通の命令及びデータを共有することができるグラフィックス・マルチプロセッサ4234の複数のインスタンスを含み、これらはL1キャッシュ4248に格納されてもよい。
【0353】
少なくとも一実施例では、各処理クラスタ4294は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU 4245を含んでもよい。少なくとも一実施例では、MMU 4245の1つ又は複数のインスタンスは、
図42のメモリ・インターフェース4218内にあってもよい。少なくとも一実施例では、MMU 4245は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(「PTE」)のセットを含む。少なくとも一実施例では、MMU 4245は、アドレスのトランスレーション・ルックアサイド・バッファ(「TLB」)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ4234若しくはL1キャッシュ4248、又は処理クラスタ4294内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットか又はミスかが判定されてもよい。
【0354】
少なくとも一実施例では、各グラフィックス・マルチプロセッサ4234がテクスチャ・ユニット4236に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実施されるように、処理クラスタ4294が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ4234内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ4234は、処理済みタスクをデータ・クロスバー4240に出力して、さらなる処理ができるように別の処理クラスタ4294に処理済みタスクを提供し、又はメモリ・クロスバー4216を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを格納する。少なくとも一実施例では、プレ・ラスタ演算ユニット(「プレROP」)4242は、グラフィックス・マルチプロセッサ4234からデータを受信し、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載するように、パーティション・ユニット(たとえば、
図42のパーティション・ユニット4220A~4220N)と共に配置されてもよい。少なくとも一実施例では、プレROP 4242は、色ブレンディングの最適化を実施し、ピクセル色データを組織化し、アドレス・トランスレーションを実施することができる。
【0355】
少なくとも一実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、処理クラスタ4294として実装されてもよい。そのような実施例では、送信側メモリ116及び/又は受信側メモリ128は各々、
図42Bに示され、及び/又は、
図42Bに関連して説明されている任意のメモリを使用して実装されてもよい。
【0356】
図42Cは、少なくとも一実施例による、グラフィックス・マルチプロセッサ4296を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ4296は、
図42Bのグラフィックス・マルチプロセッサ4234である。少なくとも一実施例では、グラフィックス・マルチプロセッサ4296は、処理クラスタ4294のパイプライン・マネージャ4232と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ4296は、命令キャッシュ4252、命令ユニット4254、アドレス・マッピング・ユニット4256、レジスタ・ファイル4258、1つ又は複数のGPGPUコア4262、及び1つ又は複数のLSU4266を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア4262、及びLSU 4266は、メモリ及びキャッシュ相互接続4268を介して、キャッシュ・メモリ4272及び共有メモリ4270と結合される。
【0357】
少なくとも一実施例では、命令キャッシュ4245は、実行すべき命令のストリームをパイプライン・マネージャ4232から受信する。少なくとも一実施例では、命令は、命令キャッシュ4252にキャッシュされ、命令ユニット4252により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット4254は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、スレッド・グループの各スレッドは、GPGPUコア4262内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット4256を使用して、統一アドレス空間のアドレスを、LSU 4266がアクセスできる個別メモリ・アドレスにトランスレートすることができる。
【0358】
少なくとも一実施例では、レジスタ・ファイル4258は、グラフィックス・マルチプロセッサ4296の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル4258は、グラフィックス・マルチプロセッサ4296の機能ユニット(たとえば、GPGPUコア4262、LSU 4266)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル4258は、各機能ユニットがレジスタ・ファイル4258の専用部分に配分されるように、機能ユニットそれぞれの間で分割される。少なくとも一実施例では、レジスタ・ファイル4258は、グラフィックス・マルチプロセッサ4296によって実行されている異なるスレッド・グループ間で分割される。
【0359】
少なくとも一実施例では、GPGPUコア4262はそれぞれ、グラフィックス・マルチプロセッサ4296の命令を実行するのに使用される、FPU及び/又は整数ALUを含むことができる。GPGPUコア4262同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア4262の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコア4262の第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、浮動小数点演算のためにIEEE754-2008規格を実装することができ、又は可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ4296はさらに、矩形コピー又はピクセル・ブレンディング動作などの特定の機能を実施する、1つ若しくは複数の固定機能ユニット又は特別機能ユニットを含むことができる。少なくとも一実施例では、GPGPUコア4262の1つ又は複数は、固定の又は特別な機能論理も含むことができる。
【0360】
少なくとも一実施例では、GPGPUコア4262は、複数のデータ・セットに対して単一の命令を実施することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア4262は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコア4262のためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成することができ、又は単一プログラム複数データ(「SPMD」)若しくはSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成することができる。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実施する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列で実行することができる。
【0361】
少なくとも一実施例では、メモリ及びキャッシュ相互接続4268は、グラフィックス・マルチプロセッサ4296の各機能ユニットをレジスタ・ファイル4258及び共有メモリ4270に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続4268は、LSU 4266が、共有メモリ4270とレジスタ・ファイル4258との間にロード及びストアの動作を実装するのを可能にする、クロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル4258は、GPGPUコア4262と同じ周波数で動作することができ、したがって、GPGPUコア4262とレジスタ・ファイル4258との間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ4270を使用して、グラフィックス・マルチプロセッサ4296内の機能ユニットで実行されるスレッド間で通信できるようにすることができる。少なくとも一実施例では、キャッシュ・メモリ4272を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット4236との間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ4270は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア4262で実行されているスレッドは、キャッシュ・メモリ4272内に格納される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを格納することができる。
【0362】
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を通じて、ホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアと同じパッケージ又はチップに一体化されてもよく、パッケージ又はチップの内部のプロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、WDに含まれたコマンド/命令のシーケンスの形でワークをGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
【0363】
少なくとも一実施例では、送信側プロセッサ114及び/又は受信側プロセッサ126は各々、グラフィック・マルチプロセッサ4296として実装されてもよい。そのような実施例では、送信側メモリ116及び/又は受信側メモリ128は各々、
図42Cに示され、及び/又は、
図42Cに関連して説明されている任意のメモリを使用して実装されてもよい。
【0364】
汎用コンピューティング
添付の図面は、限定することなく、少なくとも一実施例を実施するために使用することができる汎用コンピューティング内の例示的なソフトウェア構造を記載する。
【0365】
図43は、少なくとも一実施例による、プログラミング・プラットフォームのソフトウェア・スタックを示す。少なくとも一実施例では、プログラミング・プラットフォームは、計算タスクを加速させるためにコンピューティング・システム上のハードウェアを活用するためのプラットフォームである。プログラミング・プラットフォームは、少なくとも一実施例では、ライブラリ、コンパイラ指示文、及び/又はプログラミング言語に対する拡張を通じてソフトウェア開発者にとってアクセス可能であってもよい。少なくとも一実施例では、プログラミング・プラットフォームは、限定ではないが、CUDA、Radeon Open Compute Platform(「ROCm」)、OpenCL(OpenCL(商標)は、クロノス・グループによって開発されている)、SYCL、又はIntel One APIであってもよい。
【0366】
少なくとも一実施例では、プログラミング・プラットフォームのソフトウェア・スタック4300が、アプリケーション4301の実行環境を提供する。少なくとも一実施例では、アプリケーション4301は、ソフトウェア・スタック4300上で起動されることが可能な任意のコンピュータ・ソフトウェアを含んでもよい。少なくとも一実施例では、アプリケーション4301は、限定ではないが、人工知能(「AI」)/機械学習(「ML」)アプリケーション、高性能コンピューティング(「HPC」)アプリケーション、仮想デスクトップ・インフラストラクチャ(「VDI」)、又はデータ・センタ・ワークロードを含んでもよい。
【0367】
少なくとも一実施例では、アプリケーション4301及びソフトウェア・スタック4300は、ハードウェア4307上で作動する。ハードウェア4307は、少なくとも一実施例では、1つ又は複数のGPU、CPU、FPGA、AIエンジン、及び/又は、プログラミング・プラットフォームをサポートする他のタイプのコンピュート・デバイスを含んでもよい。CUDAなどによる少なくとも一実施例では、ソフトウェア・スタック4300は、ベンダ固有であってもよく、特定のベンダからのデバイスのみと互換性であってもよい。OpenCLなどによる少なくとも一実施例では、ソフトウェア・スタック4300は、異なるベンダからのデバイスとともに使用されてもよい。少なくとも一実施例では、ハードウェア4307は、アプリケーション・プログラミング・インターフェース(「API」)呼び出しを介して計算タスクを実施するためにアクセスすることができる1つのデバイスに接続されているホストを含む。限定ではないが、少なくとも一実施例では、CPU(ただし、コンピュート・デバイスも含んでもよい)及びそのメモリを含んでもよいハードウェア4307内のホストとは対照的に、ハードウェア4307内のデバイスは、限定ではないが、GPU、FPGA、AIエンジン、又は他のコンピュート・デバイス(ただし、CPUも含んでもよい)及びそのメモリを含んでもよい。
【0368】
少なくとも一実施例では、プログラミング・プラットフォームのソフトウェア・スタック4300は、限定ではないが、複数のライブラリ4303、ランタイム4305、及びデバイス・カーネル・ドライバ4306を含む。ライブラリ4303の各々は、少なくとも一実施例では、コンピュータ・プログラムによって使用することができ、ソフトウェア開発中に活用することができるデータ及びプログラミング・コードを含んでもよい。少なくとも一実施例では、ライブラリ4303は、限定ではないが、事前に書かれたコード及びサブルーチン、クラス、値、型指定、構成データ、ドキュメンテーション、ヘルプ・データ、及び/又はメッセージ・テンプレートを含んでもよい。少なくとも一実施例では、ライブラリ4303は、1つ又は複数のタイプのデバイス上での実行に最適化された機能を含む。少なくとも一実施例では、ライブラリ4303は、限定ではないが、数学的、深層学習、及び/又は他のタイプの動作をデバイス上で実施するための機能を含んでもよい。少なくとも一実施例では、ライブラリ4403は、ライブラリ4403内で実装されている機能を露出させる、1つ又は複数のAPIを含んでもよい、対応するAPI 4402と関連付けられる。
【0369】
少なくとも一実施例では、アプリケーション4301は、
図48と関連して下記により詳細に論じるように、実行可能コードにコンパイルされるソース・コードとして書かれる。アプリケーション4301の実行可能コードは、少なくとも一実施例では、少なくとも部分的に、ソフトウェア・スタック4300によって提供される実行環境上で稼働してもよい。少なくとも一実施例では、アプリケーション4301の実行中、ホストとは対照的に、デバイス上で稼働する必要があるコードに到達し得る。そのような事例において、ランタイム4305は、少なくとも一実施例では、デバイス上で必要なコードをロードし、起動するために呼び出すことができる。少なくとも一実施例では、ランタイム4305は、アプリケーションS01の実行をサポートすることが可能である、任意の技術的に実現可能なランタイム・システムを含んでもよい。
【0370】
少なくとも一実施例では、ランタイム4305は、API4304として示されている、対応するAPIと関連付けられる1つ又は複数のランタイム・ライブラリとして実装される。そのようなランタイム・ライブラリのうちの1つ又は複数は、少なくとも一実施例では、限定ではないが、とりわけ、メモリ管理、実行制御、デバイス管理、エラー取扱い、及び/又は同期のための機能を含んでもよい。少なくとも一実施例では、メモリ管理機能は、限定ではないが、デバイス・メモリを配分、配分解除、及びコピーし、並びに、ホスト・メモリとデバイス・メモリとの間でデータを転送する機能を含んでもよい。少なくとも一実施例では、実行制御機能は、限定ではないが、デバイス上で関数(関数がホストから呼び出し可能なグローバル関数であるときは「カーネル」として参照されることがある)を起動し、所与の関数がデバイス上で実行されるためのランタイム・ライブラリによって維持されるバッファ内の属性値を設定する機能を含んでもよい。
【0371】
ランタイム・ライブラリ及び対応するAPI 4304は、少なくとも一実施例では、任意の技術的に実現可能な様式で実装されてもよい。少なくとも一実施例では、1つの(又は任意の数の)APIが、デバイスの精細な制御のための機能の低レベルのセットを露出させてもよく、一方で、もう1つの(又は任意の数の)APIが、そのような機能のより高レベルのセットを露出させてもよい。少なくとも一実施例では、高レベル・ランタイムAPIが、低レベルAPIの上に構築されてもよい。少なくとも一実施例では、ランタイムAPIのうちの1つ又は複数は、言語非依存ランタイムAPIの上に重ねられる言語依存APIであってもよい。
【0372】
少なくとも一実施例では、デバイス・カーネル・ドライバ4306は、下層のデバイスとの通信を容易にするように構成されている。少なくとも一実施例では、デバイス・カーネル・ドライバ4306は、API 4304などのAPI及び/又は他のソフトウェアが依拠する低レベル機能を提供することができる。少なくとも一実施例では、デバイス・カーネル・ドライバ4306は、中間表現(「IR」)コードを実行時に2進コードにコンパイルするように構成されてもよい。CUDAの場合、デバイス・カーネル・ドライバ4306は、少なくとも一実施例では、ハードウェア依存ではない並列スレッド実行(「PTX」)IRコードを、実行時の特定の目標デバイスの2進コードにコンパイルすることができ(コンパイルされた2進コードをキャッシュすることを伴う)、これは、コードを「ファイナライズ」することとして参照されることもある。そうすることによって、少なくとも一実施例では、ファイナライズされたコードが、ソース・コードがPTXコードに元々コンパイルされたときには存在しなかった場合がある目標デバイス上で稼働することが可能になり得る。代替的に、少なくとも一実施例では、デバイス・ソース・コードは、デバイス・カーネル・ドライバ4306が実行時にIRコードをコンパイルする必要なしに、オフラインで2進コードにコンパイルされてもよい。
【0373】
図44は、少なくとも一実施例による、
図43のソフトウェア・スタック4300のCUDA実施態様を示す。少なくとも一実施例では、アプリケーション4401を起動することができるCUDAソフトウェア・スタック4400は、CUDAライブラリ4403と、CUDAランタイム4405と、CUDAドライバ4407と、デバイス・カーネル・ドライバ4408とを含む。少なくとも一実施例では、CUDAソフトウェア・スタック4400は、CUDAをサポートし、カリフォルニア州サンタ・クララ所在のNVIDIA Corporationによって開発されているGPUを含んでもよいハードウェア4409上で実行される。
【0374】
少なくとも一実施例では、アプリケーション4401、CUDAランタイム4405、及びデバイス・カーネル・ドライバ4408は、それぞれ、
図43に関連して上述されているアプリケーション4301、ランタイム4305、及びデバイス・カーネル・ドライバ4306と同様の機能を実施することができる。少なくとも一実施例では、CUDAドライバ4407は、CUDAドライバAPI 4406を実装するライブラリ(libcuda.so)を含む。CUDAランタイム・ライブラリ(cudart)によって実装されるCUDAランタイムAPI 4404と同様に、CUDAドライバAPI 4406は、少なくとも一実施例では、限定ではないが、とりわけ、メモリ管理、実行制御、デバイス管理、エラー取扱い、同期、及び/又はグラフィックス相互運用性のための機能を露出させる。少なくとも一実施例では、CUDAランタイムAPI 4404が、黙示的な初期化、コンテキスト(プロセスに類似する)管理、及びモジュール(動的にロードされるライブラリに類似する)管理を提供することによってデバイス・コード管理を単純化すると言う点で、CUDAドライバAPI 4406はCUDAランタイムAPI 4404と異なる。高レベルCUDAランタイムAPI 4404とは対照的に、CUDAドライバAPI 4406は、少なくとも一実施例では、特にコンテキスト及びモジュール負荷に関連して、デバイスのより精細な制御を提供する低レベルAPIである。少なくとも一実施例では、CUDAドライバAPI 4406は、CUDAランタイムAPI 4404によっては露出されないコンテキスト管理のための機能を露出させることができる。少なくとも一実施例では、CUDAドライバAPI 4406はまた、言語非依存であり、CUDAランタイムAPI 4404に加えて、例えば、OpenCLをサポートする。さらに、少なくとも一実施例では、CUDAランタイム4405を含む開発ライブラリは、ユーザ・モードCUDAドラバ4407及びカーネル・モード・デバイス・ドライバ4408(「ディスプレイ」ドライバとして参照されることもある)を含む、ドライバ構成要素とは別個のものとして考えることができる。
【0375】
少なくとも一実施例では、CUDAライブラリ4403は、限定ではないが、アプリケーション4401などの並列コンピューティング・アプリケーションが利用することができる数学ライブラリ、深層学習ライブラリ、並列アルゴリズム・ライブラリ、及び/又は信号/画像/ビデオ処理ライブラリを含んでもよい。少なくとも一実施例では、CUDAライブラリ4403は、とりわけ、線形代数演算を実施するための基本線形代数サブプログラム(「BLAS」)の一実施態様であるcuBLASライブラリ、高速フーリエ変換(「FFT」)を計算するためのcuFFTライブラリ、及び、乱数を生成するためのcuRANDライブラリなどの数学ライブラリを含んでもよい。少なくとも一実施例では、CUDAライブラリ4403は、とりわけ、深層ニューラル・ネットワークのプリミティブのcuDNNライブラリ、及び、高性能深層学習推論のためのTensorRTプラットフォームなどの深層学習ライブラリを含んでもよい。
【0376】
図45は、少なくとも一実施例による、
図43のソフトウェア・スタック4300のROCm実施態様を示す。少なくとも一実施例では、アプリケーション4501を起動することができるROCmソフトウェア・スタック4500は、言語ランタイム4503と、システム・ランタイム4505と、サンク4507と、ROCmカーネル・ドライバ4508と、デバイス・カーネル・ドライバ4509とを含む。少なくとも一実施例では、ROCmソフトウェア・スタック4500は、ROCmをサポートし、カリフォルニア州サンタ・クララ所在のAMD Corporationによって開発されているGPUを含んでもよいハードウェア4510上で実行される。
【0377】
少なくとも一実施例では、アプリケーション4501は、
図43に関連して上述したアプリケーション4301と同様の機能を実施することができる。加えて、言語ランタイム4503及びシステム・ランタイム4505は、少なくとも一実施例では、
図43に関連して上述したランタイム4305と同様の機能を実施することができる。少なくとも一実施例では、言語ランタイム4503とシステム・ランタイム4505とは、システム・ランタイム4505が、ROCrシステム・ランタイムAPI 4504を実装し、ヘテロジニアス・システム・アーキテクチャ(「HAS」)ランタイムAPIを利用する言語非依存ランタイムであるという点で、異なっている。HASランタイムAPIは、一実施例では、とりわけ、メモリ管理、カーネルの設計されたディスパッチを介した実行制御、エラー取扱い、システム及びエージェント情報、並びにランタイム初期化及び停止のための機能を含め、AMD GPUにアクセスし、インタラクトするためのインターフェースを露出させるシン・ユーザ・モードAPIである。システム・ランタイム4505とは対照的に、言語ランタイム4503は、少なくとも一実施例では、ROCrシステム・ランタイムAPI 4504の上に重ねられる言語依存ランタイムAPI 4502の一実施態様である。少なくとも一実施例では、言語ランタイムAPIは、限定ではないが、とりわけ、Heterogeneous compute Interface for Portability(「HIP」)言語ランタイムAPI、Heterogeneous Compute Compiler(「HCC」)言語ランタイムAPI、又はOpenCL APIを含んでもよい。特に、HIP言語は、CUDAメカニズムの機能的に同様のバージョンを有するC++プログラミング言語の拡張であり、少なくとも一実施例では、HIP言語ランタイムAPIは、とりわけ、メモリ管理、実行制御、デバイス管理、エラー取扱い、及び同期のための機能などの、
図44に関連して上述したCUDAランタイムAPI 4404のものと同様の機能を含む。
【0378】
少なくとも一実施例では、サンク(ROCt)4507は、下層のROCmドライバ4508とインタラクトするために使用することができるインターフェースである。少なくとも一実施例では、ROCmドライバ4508は、AMDGPUドライバとHASカーネル・ドライバ(amdkfd)との組合せであるROCkドライバである。少なくとも一実施例では、AMDGPUドライバは、
図43に関連して上述したデバイス・カーネル・ドライバ4306と同様の機能を実施する、AMDによって開発されているGPUのデバイス・カーネル・ドライバである。少なくとも一実施例では、HASカーネル・ドライバは、異なるタイプのプロセッサが、ハードウェア特徴を介してシステム・リソースをより効率的に共有することを可能にするドライバである。
【0379】
少なくとも一実施例では、様々なライブラリ(図示せず)が、言語ランタイム4503の上方でROCmソフトウェア・スタック4500に含まれてもよく、
図44に関連して上述したCUDAライブラリ4403と同様の機能を提供してもよい。少なくとも一実施例では、様々なライブラリは、限定ではないが、とりわけ、数学ライブラリ、深層学習ライブラリ、及び/又は、CUDA cuBLASのものと同様の機能を実施するhipBLASライブラリ、CUDA cuFFTと同様のFFTを計算するためのrocFFTライブラリなどの他のライブラリを含んでもよい。
【0380】
図46は、少なくとも一実施例による、
図43のソフトウェア・スタック4300のOpenCL実施態様を示す。少なくとも一実施例では、アプリケーション4601を起動することができるOpenCLソフトウェア・スタック4600は、OpenCLフレームワーク4605と、OpenCLランタイム4606と、ドライバ4607とを含む。少なくとも一実施例では、OpenCLソフトウェア・スタック4600は、ベンダ特有ではないハードウェア4409上で実行される。OpenCLは種々のベンダによって開発されているデバイスによってサポートされているため、少なくとも一実施例では、そのようなベンダからのハードウェアとの相互運用のために、特定のOpenCLドライバが必要とされ得る。
【0381】
少なくとも一実施例では、アプリケーション4601、OpenCLランタイム4606、デバイス・カーネル・ドライバ4607、及びハードウェア4608は、それぞれ、
図43に関連して上述されているアプリケーション4301、ランタイム4305、デバイス・カーネル・ドライバ4306、及びハードウェア4307と同様の機能を実施することができる。少なくとも一実施例では、アプリケーション4601は、デバイス上で実行されるコードを有するOpenCLカーネル4602をさらに含む。
【0382】
少なくとも一実施例では、OpenCLは、ホストが、ホストに接続されているデバイスを制御することを可能にする「プラットフォーム」を定義する。少なくとも一実施例では、OpenCLフレームワークは、プラットフォームAPI 4603及びランタイムAPI 4605として示されているプラットフォーム層API及びランタイムAPIを提供する。少なくとも一実施例では、ランタイムAPI 4605は、コンテキストを使用して、デバイス上でのカーネルの実行を管理する。少なくとも一実施例では、識別された各デバイスを、それぞれのコンテキストと関連付けることができ、ランタイムAPI 4605は、そのコンテキストを使用して、そのデバイスの、とりわけコマンド・キュー、プログラム・オブジェクト、及びカーネル・オブジェクト、共有メモリ・オブジェクトを管理することができる。少なくとも一実施例では、プラットフォームAPI 4603は、デバイス・コンテキストが使用され、デバイスを選択及び初期化し、コマンド・キューを介してデバイスにワークを送出し、デバイスへの及びデバイスからのデータ転送を可能にすることを可能にする機能を露出させる。加えて、OpenCLフレームワークは、少なくとも一実施例では、とりわけ、演算機能、関係機能、及び画像処理機能を含む、様々な組み込み機能(図示せず)を提供する。
【0383】
少なくとも一実施例では、コンパイラ4604も、OpenCLフレームワーク4605に含まれる。ソース・コードは、少なくとも一実施例では、アプリケーションを実行する前にオフラインでコンパイルされてもよく、又は、アプリケーションの実行中にオンラインでコンパイルされてもよい。CUDA及びROCmとは対照的に、少なくとも一実施例におけるOpenCLアプリケーションは、標準ポータブル中間表現(「SPIR-V」)コードなどのソース・コード及び/又はIRコードを2進コードにコンパイルするために使用することができる任意の数のコンパイラを表すために含まれる、コンパイラ4604によってオンラインでコンパイルすることができる。代替的に、少なくとも一実施例では、OpenCLアプリケーションは、そのようなアプリケーションを実行する前に、オフラインでコンパイルされてもよい。
【0384】
図47は、少なくとも一実施例による、プログラミング・プラットフォームによってサポートされるソフトウェアを示す。少なくとも一実施例では、プログラミング・プラットフォーム4704は、様々なプログラミング・モジュール4703、ミドルウェア及び/又はライブラリ4702、並びに、アプリケーション4700が依拠することができるフレームワーク4701をサポートするように構成されている。少なくとも一実施例では、アプリケーション4700は、cuDNN、NVIDIA Collective Communications Library(「NCCL」)及び/又はNVIDA Developer Data Loading Library(「DALI(登録商標)」)CUDAライブラリなどのライブラリに依拠して下層のハードウェア上での加速された計算を可能にすることができる、例えば、MXNet、PyTorch、又はTensorFlowなどの深層学習フレームワークを使用して実装されるAI/MLアプリケーションであってもよい。
【0385】
少なくとも一実施例では、プログラミング・プラットフォーム4704は、それぞれ
図44、
図45、及び
図46に関連して上述したCUDA、ROCm、又はOpenCLプラットフォームのうちの1つであってもよい。少なくとも一実施例では、プログラミング・プラットフォーム4704は、アルゴリズム及びデータ構造の表現を可能にする基礎となるコンピューティング・システムの抽象化である、複数のプログラミング・モデル4703をサポートする。プログラミング・モデル4703は、少なくとも一実施例では、性能を向上させるための、基礎となるハードウェアの特徴を露出させる。少なくとも一実施例では、プログラミング・モデル4703は、限定ではないが、CUDA、HIP、OpenCL、C++ Accelerated Massive Parallelism(「C++AMP」)、Open Multi-Processing(「OpenMP」)、Open Accelerator(「OpenACC」)、及び/又はVulcan Computeを含んでもよい。
【0386】
少なくとも一実施例では、ライブラリ及び/又はミドルウェア4702は、プログラミング・モデル4704の抽象化の実施態様を提供する。少なくとも一実施例では、そのようなライブラリは、コンピュータ・プログラムによって使用することができ、ソフトウェア開発中に活用することができるデータ及びプログラミング・コードを含む。少なくとも一実施例では、そのようなミドルウェアは、プログラミング・プラットフォーム4704から利用可能な分を超えたサービスをアプリケーションに提供するソフトウェアを含む。少なくとも一実施例では、ライブラリ及び/又はミドルウェア4702は、限定ではないが、cuBLAS、cuFFT、cuRAND、及び他のCUDAライブラリ、又はrocBLAS、rocFFT、rocRAND、及び他のROCmライブラリを含んでもよい。加えて、少なくとも一実施例では、ライブラリ及び/又はミドルウェア4702は、GPUの通信ルーチンを提供するNCCL及びROCm Communication Collectives Library(「RCCL」)ライブラリ、深層学習加速のためのMIOpenライブラリ、並びに/又は、線形代数、行列及びベクトル演算、幾何学的変換、数値ソルバ、及び関連するアルゴリズムのためのEigenライブラリを含んでもよい。
【0387】
少なくとも一実施例では、アプリケーション・フレームワーク4701は、ライブラリ及び/又はミドルウェア4702に依存する。少なくとも一実施例では、アプリケーション・フレームワーク4701の各々は、アプリケーション・ソフトウェアの標準構造を実装するために使用されるソフトウェア・フレームワークである。AI/MLアプリケーションは、少なくとも一実施例では、Caffe、Caffe2、TensorFlow、Keras、PyTorch、又はMxNet深層学習フレームワークなどのフレームワークを使用して実装されてもよい。
【0388】
図48は、少なくとも一実施例による、
図43~
図46のプログラミング・プラットフォームのうちの1つの上で実行するためのコードのコンパイルを示す。少なくとも一実施例では、コンパイラ4801は、ホスト・コードとデバイス・コードの両方を含むソース・コード4800を受信する。少なくとも一実施例では、コンプライア4801は、ソース・コード4800を、ホスト上で実行するためのホスト実行可能コード4802、及び、デバイス上で実行するためのデバイス実行可能コード4803に変換するように構成されている。少なくとも一実施例では、ソース・コード4800は、アプリケーションを実行する前にオフラインでコンパイルされるか、又は、アプリケーションの実行中にオンラインでコンパイルされるかのいずれかであってもよい。
【0389】
少なくとも一実施例では、ソース・コード4800は、C++、C、Fortranなどのような、コンパイラ4801によってサポートされている任意のプログラミング言語のコードを含んでもよい。少なくとも一実施例では、ソース・コード4800は、デバイス・コードのロケーションが中で示されている、ホスト・コードとデバイス・コードとの混合を有する単一ソース・ファイルに含まれてもよい。少なくとも一実施例では、単一ソース・ファイルは、例えば、CUDAコードを含む.cuファイル、又は、HIPコードを含む.hip.cppファイルであってもよい。代替的に、少なくとも一実施例では、ソース・コード4800は、単一ソース・ファイルではなく、複数のソース・コード・ファイルを含んでもよく、それら複数のソース・コード・ファイルの中に、ホスト・コードとデバイス・コードとが分離される。
【0390】
少なくとも一実施例では、コンパイラ4801は、ソース・コード4800を、ホスト上で実行するためのホスト実行可能コード4802、及び、デバイス上で実行するためのデバイス実行可能コード4803にコンパイルするように構成されている。少なくとも一実施例では、コンパイラ4801は、ソース・コード4800を解析して抽象系統樹(AST)を得ることと、最適化を実施することと、実行可能コードを生成することとを含む動作を実施する。ソース・コード4800が単一ソース・ファイルを含む少なくとも一実施例では、コンパイラ4801は、
図37に関連して下記により詳細に論じるように、そのような単一ソース・ファイル内のホスト・コードからデバイス・コードを分離し、デバイス・コード及びホスト・コードをそれぞれデバイス実行可能コード4803及びホスト実行可能コード4802にコンパイルし、デバイス実行可能コード4803及びホスト実行可能コード4802をともに単一のファイル内でリンクさせることができる。
【0391】
少なくとも一実施例では、ホスト実行可能コード4802及びデバイス実行可能コード4803は、2進コード及び/又はIRコードなどの、任意の適切なフォーマットであってもよい。CUDAの場合、少なくとも一実施例では、ホスト実行可能コード4802は、ネイティブ・オブジェクト・コードを含んでもよく、デバイス実行可能コード4803は、PTX中間表現のコードを含んでもよい。ROCmの場合、少なくとも一実施例では、ホスト実行可能コード4802とデバイス実行可能コード4803の両方が、ターゲット2進コードを含んでもよい。
【0392】
少なくとも一実施例は、以下の項に照らして説明することができる。
【0393】
1. 通信装置であって、ネットワーク・インターフェースと、パケット処理回路と、インターフェースとを備え、ネットワーク・インターフェースが、データ及び当該データの少なくとも1つの冗長コピーを送信する複数のパケット・ストリームを受信するためのものであり、複数のパケット・ストリームが、パケット識別子及びペイロードを含む複数のパケットを含み、ペイロードの各々が、パケット識別子のうちの1つと関連付けられており、複数のパケットの各々が、パケット識別子のうちの1つ及びペイロードのうちの1つを含み、パケット処理回路が、ペイロードの少なくともいくらかの重複記憶を防止し、それぞれの個々のペイロードのメモリ・アドレスを決定するためのものであり、インターフェースが、パケット処理回路によって決定されているそれぞれのメモリ・アドレスに個々のペイロードを書き込むためのものである、通信装置。
【0394】
2. ネットワーク・インターフェースが、複数の異なる通信チャネルを介して複数のパケット・ストリームを受信するための複数の接続を含む、項1に記載の通信装置。
【0395】
3. パケット処理回路が、パケット識別子の各固有の値と関連付けられる、最大でも単一のペイロードを渡すことによって、ペイロードの少なくともいくらかの重複記憶を防止するアンチ・リプレイ・エンジンを実装する、項1又は2に記載の通信装置。
【0396】
4. パケット処理回路が、散乱エンジンを実装し、アンチ・リプレイ・エンジンが、パケット識別子の各固有の値と関連付けられる単一のペイロードを散乱エンジンに渡し、散乱エンジンが、散乱エンジンに渡されている各ペイロードのメモリ・アドレスを決定し、以て、それぞれの個々のペイロードのメモリ・アドレスを決定する、項3に記載の通信装置。
【0397】
5. 複数のパケットの各々が、パケット識別子を含むヘッダを含み、パケット処理回路が、パケット解析エンジン及びステアリング・エンジンを実装し、パケット解析エンジンが、複数のパケットの各々を解析し、複数のパケットの各々のヘッダを識別し、複数のパケットの各々のヘッダ及びペイロードをステアリング・エンジンに転送し、ステアリング・エンジンが、複数のパケットの各々のヘッダの内部のパケット識別子を識別し、複数のパケットの各々のパケット識別子及びペイロードをアンチ・リプレイ・エンジンに渡す、項4に記載の通信装置。
【0398】
6. パケット処理回路が、スライディング・ウィンドウ内で受信される各固有のパケット識別子を有する1つのパケットを除くすべてのパケットを破棄することによって、ペイロードの少なくともいくらかの重複記憶を防止するアンチ・リプレイ・エンジンを実装する、項1~5のいずれか一項に記載の通信装置。
【0399】
7. ユーザによって使用するためのものであり、スライディング・ウィンドウのサイズがユーザによって与えられてもよい、項6に記載の通信装置。
【0400】
8. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを破棄する、項6又は7に記載の通信装置。
【0401】
9. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを、後続の処理のためにキューに格納する、項6又は7に記載の通信装置。
【0402】
10. インターフェースをメモリ・アドレスを含むメモリとを接続するバスをさらに備え、インターフェースが、バスを介して、ペイロードの最大でも単一のコピーのみをメモリ・アドレスの各々に書き込む、項1~9のいずれか一項に記載の通信装置。
【0403】
11. バスが、周辺機器相互接続エクスプレス(「PCIe」)バスである、項10に記載の通信装置。
【0404】
12. ペイロードが、複数の渡されているペイロード及び複数の破棄されているペイロードを含み、パケット処理回路が、複数の破棄されているペイロードの格納を防止し、パケット処理回路が、渡されているペイロードと関連付けられるパケット識別子をメモリ・アドレスのうちの1つにマッピングすることによって、複数の渡されているペイロードの各々のメモリ・アドレスのうちの1つを決定する、項1~11のいずれか一項に記載の通信装置。
【0405】
13. 渡されているペイロードと関連付けられるパケット識別子をメモリ・アドレスのうちの1つにマッピングするために、線形マッピングが使用される、項12に記載の通信装置。
【0406】
14. ペイロードが、複数の渡されているペイロード及び複数の破棄されているペイロードを含み、パケット処理回路が、複数の破棄されているペイロードの格納を防止し、パケット処理回路が、複数の渡されているペイロードの各々のメモリ・アドレスのうちの1つを、初期シーケンス番号、渡されているペイロードと関連付けられるパケット識別子、渡されているペイロードのサイズ、及び、メモリ・アドレスのうちの基準メモリ・アドレスの関数として決定する、項12又は13に記載の通信装置。
【0407】
15. 通信装置であって、回路と、ネットワーク・インターフェースとを備え、回路が、固有のパケット識別子を含むヘッダを複数のパケットの各々に追加し、ヘッダが複数のパケットの各々に追加された後に、複数のパケットの各々を複製し、以て、各々が複製ヘッダを有する複数の複製パケットを作成し、複数の複製パケットの各々の複製ヘッダ内のアドレスを修正し、複数のパケット及び複数の複製パケットの送信が開始されているという少なくとも1つの通知を異なる通信装置に送信するためのものであり、ネットワーク・インターフェースが、複数のパケット及び複数の複製パケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルにわたって異なる通信装置に送信するためのものである、通信装置。
【0408】
16. 複数のパケット・ストリームが、各々、ネットワーク・インターフェースの異なるポートを介して送信される、項15に記載の通信装置。
【0409】
17. 複数のパケット及び複数の複製パケットのうち、同一のパケット識別子を有するものが、低ジッタで送信される、項15又は16に記載の通信装置。
【0410】
18. 少なくとも1つのホスト・プロセッサからデータを受信し,データを複数のパケットにパケット化するためのホスト・インターフェースをさらに備える、項15~17のいずれか一項に記載の通信装置。
【0411】
19. データがビデオ・データであり、通信装置が、ビデオ・データを捕捉し、ビデオ・データをホスト・インターフェースに送信するためのビデオ・カメラをさらに備える、項18に記載の通信装置。
【0412】
20. 回路が、固有のパケット識別子を生成するインターネット・プロトコル・セキュリティ・エンジンを実装する、項15~19のいずれか一項に記載の通信装置。
【0413】
21. 固有のパケット識別子が、映画テレビ技術者協会(「SMPTE」)2022-7のリアル・タイム・トランスポート・プロトコル(「RTP」)に従って生成されるパケット・シーケンス番号である、項15~20のいずれか一項に記載の通信装置。
【0414】
22. ネットワーク・インターフェースが、複数の異なる通信チャネルの各々に接続されている異なる接続を備え、ネットワーク・インターフェースが、複数の異なる通信チャネルのうちの異なる通信チャネルにわたって、当該通信チャネルに接続されている異なる接続を介して、複数のパケット・ストリームの各々を送信する、項15~21のいずれか一項に記載の通信装置。
【0415】
23. 複数の複製パケットの各々の複製ヘッダ内のアドレスを修正することが、ユーザ・データグラム・プロトコル(「UDP」))ソース・ポート値を変更することを含む、項15~22のいずれか一項に記載の通信装置。
【0416】
24. 複数の複製パケットの各々の複製ヘッダ内のアドレスを修正することが、ソース媒体アクセス制御(「MAC」)アドレス値を変更することを含む、項23に記載の通信装置。
【0417】
25. システムであって、パケット・ソースと、受信側デバイスとを備え、パケット・ソースが、複数のパケット識別子と各々1つずつ関連付けられる複数のペイロードを含む複数のパケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して送信するためのものであり、受信側デバイスが、回路を備え、当該回路が、複数のパケット・ストリームを受信し、複数のペイロードの少なくともいくつかの重複記憶を防止し、それぞれの個々のペイロードのメモリ・アドレスを決定し、回路によって決定されるそれぞれのメモリ・アドレスにペイロードを書き込む、システム。
【0418】
26. パケット・ソースが、仮想機械である、項25に記載のシステム。
【0419】
27. 回路が、アンチ・リプレイ・エンジン及び散乱エンジンを実装し、アンチ・リプレイ・エンジンが、パケット識別子の各固有の値と関連付けられる、最大でも単一のペイロードを散乱エンジンに渡すことによって、ペイロードの少なくともいくらかの重複記憶を防止し、散乱エンジンが、散乱エンジンに渡されている各ペイロードのメモリ・アドレスを決定し、以て、それぞれの個々のペイロードのメモリ・アドレスを決定する、項25又は26に記載のシステム。
【0420】
28. 回路が、スライディング・ウィンドウ内で受信される各固有のパケット識別子を有する1つのパケットを除くすべてのパケットを破棄することによって、ペイロードの少なくともいくらかの重複記憶を防止するアンチ・リプレイ・エンジンを実装する、項25~27のいずれか一項に記載のシステム。
【0421】
29. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを破棄すること、又は、遅延パケットを、後続の処理のためにキューに格納すること、のうちの少なくとも一方を行う、項28に記載のシステム。
【0422】
30. ペイロードが、複数の渡されているペイロード及び複数の破棄されているペイロードを含み、回路が、複数の破棄されているペイロードの格納を防止し、回路が、渡されているペイロードと関連付けられるパケット識別子をメモリ・アドレスのうちの1つにマッピングすることによって、複数の渡されているペイロードの各々のメモリ・アドレスのうちの1つを決定する、項25~29のいずれか一項に記載のシステム。
【0423】
31. 渡されているペイロードと関連付けられるパケット識別子をメモリ・アドレスのうちの1つにマッピングするために、線形マッピングが使用される、項30に記載のシステム。
【0424】
32. ペイロードが、複数の渡されているペイロード及び複数の破棄されているペイロードを含み、回路が、複数の破棄されているペイロードの格納を防止し、回路が、複数の渡されているペイロードの各々のメモリ・アドレスのうちの1つを、初期シーケンス番号、渡されているペイロードと関連付けられるパケット識別子、渡されているペイロードのサイズ、及び、メモリ・アドレスのうちの基準メモリ・アドレスの関数として決定する、項25~31のいずれか一項に記載のシステム。
【0425】
33. パケット・ソースが、複数のパケット識別子のうちの固有のパケット識別子を複数の初期パケットの各々に付加し、固有のパケット識別子が複数の初期パケットの各々に付加された後に複数の初期パケットの各々を複製して、複数の複製パケットを作成し、複数の初期パケット及び複数の複製パケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して送信する回路を有する送信側デバイスを含む、項25~32のいずれか一項に記載のシステム。
【0426】
34. 送信側デバイス又は受信側デバイスのうちの少なくとも一方が、自律車両である、項33に記載のシステム。
【0427】
35. 送信側デバイスが、自律車両であり、自律車両が、少なくとも1つのセンサを備え、複数のペイロードが、各々、少なくとも1つのセンサから取得されるセンサデータに基づく情報を含む、項34に記載のシステム。
【0428】
36.送信側デバイスが、ビデオ・データを捕捉するためのビデオ・カメラと、ビデオ・データを複数の初期パケットにパケット化するためのインターフェースとを備える、項35に記載のシステム。
【0429】
37. 複数のペイロードが、各々、ビデオ・データのスライスを含む、項36に記載のシステム。
【0430】
38. 方法であって、複数の異なる通信チャネルを介して送信される複数のパケット・ストリームを受信することであり、複数のパケット・ストリームが、複数のパケット識別子と各々1つずつ関連付けられる複数のペイロードを含む複数のパケットを含む、受信することと、複数のペイロードのうちの少なくともいくつかの各々の1つのコピーを識別することと、識別されているペイロードの各々のメモリ・アドレスを決定することと、識別されているペイロードの各々を、識別されているペイロードについて決定されているメモリ・アドレスに書き込むこととを含む、方法。
【0431】
39. スライディング・ウィンドウ内で受信される複数のパケット識別子のうちの各固有のパケット識別子と関連付けられる複数のパケットのうちの1つを除くすべてのパケットを破棄することをさらに含む、項38に記載の方法。
【0432】
40. スライディング・ウィンドウの外部で遅延パケットが受信され、方法が、遅延パケットを破棄すること、又は、遅延パケットを、後続の処理のためにキューに格納することをさらに含む、項39に記載の方法。
【0433】
41. 識別されているペイロードの各々のメモリ・アドレスを決定することは、識別されているペイロードの各々と関連付けられるパケット識別子をメモリ・アドレスにマッピングすることを含む、項38~40のいずれか一項に記載の方法。
【0434】
42. 識別されているペイロードの各々と関連付けられるパケット識別子をメモリ・アドレスにマッピングするために、線形マッピングが使用される、項41に記載の方法。
【0435】
43. 初期シーケンス番号、識別されているペイロードの各々と関連付けられるパケット識別子、識別されているペイロードの各々のサイズ、及び基準メモリ・アドレスの関数が、識別されているペイロードの各々と関連付けられるパケット識別子をメモリ・アドレスにマッピングするために使用される、項38~42のいずれか一項に記載の方法。
【0436】
44. 複数のパケット識別子のうちの固有のパケット識別子を複数の初期パケットの各々に付加することと、固有のパケット識別子が複数のパケットの各々に付加された後に複数の初期パケットの各々を複製して、複数の複製パケットを作成することと、複数の初期パケット及び複数の複製パケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して送信することとをさらに含む、項38~43のいずれか一項に記載の方法。
【0437】
45. 通信装置であって、ネットワーク・インターフェースと、パケット処理回路とを備え、ネットワーク・インターフェースが、複数のパケットを受信するためのものであり、複数のパケットの各々が、少なくとも1つのパケット識別子及び少なくとも1つのペイロードを含み、パケット処理回路が、冗長パケットを検出し、冗長パケットの少なくともいくらかの重複記憶を防止するためのものである、通信装置。
【0438】
46. 冗長パケットが、少なくとも1つのパケット識別子のうちの冗長パケット識別子、又は、少なくとも1つのペイロードのうちの冗長ペイロードに基づいて検出される、項45に記載の通信装置。
【0439】
47. ネットワーク・インターフェースが、複数のパケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して受信するための複数の接続を含む、項45又は46に記載の通信装置。
【0440】
48. 複数のパケット識別子が、複数のパケットの各々の少なくとも1つのパケット識別子を含み、パケット処理回路が、複数のパケット識別子の各固有の値を有する複数のパケットのうちの、最大でも単一のパケットを含む少なくとも1つの固有のパケットを渡すことによって、冗長パケットの少なくともいくらかの重複記憶を防止するアンチ・リプレイ・エンジンを実装する、項45~47のいずれか一項に記載の通信装置。
【0441】
49. パケット処理回路が、散乱エンジンを実装し、アンチ・リプレイ・エンジンが、少なくとも1つの固有のパケットを散乱エンジンに渡し、散乱エンジンが、散乱エンジンに渡されている少なくとも1つの固有のパケットの各々のメモリ・アドレスを決定する、項48に記載の通信装置。
【0442】
50. 複数のパケットの各々が、少なくとも1つのパケット識別子を含むヘッダを含み、パケット処理回路が、パケット解析エンジン及びステアリング・エンジンを実装し、パケット解析エンジンが、複数のパケットの各々を解析し、複数のパケットの各々のヘッダを識別し、複数のパケットの各々のヘッダ及び少なくとも1つのペイロードをステアリング・エンジンに転送し、ステアリング・エンジンが、複数のパケットの各々のヘッダの内部の少なくとも1つのパケット識別子を識別し、複数のパケットの各々の少なくとも1つのパケット識別子及び少なくとも1つのペイロードをアンチ・リプレイ・エンジンに渡す、項49に記載の通信装置。
【0443】
51. 複数のパケット識別子が、複数のパケットの各々の少なくとも1つのパケット識別子を含み、パケット処理回路が、スライディング・ウィンドウ内で受信される複数のパケット識別子のうちの各固有のパケット識別子を有する1つのパケットを除くすべてのパケットを破棄することによって、冗長パケットの少なくともいくらかの重複記憶を防止するアンチ・リプレイ・エンジンを実装する、項45~50のいずれか一項に記載の通信装置。
【0444】
52. ユーザによって使用するためのものであり、スライディング・ウィンドウのサイズがユーザによって与えられてもよい、項51に記載の通信装置。
【0445】
53. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを破棄する、項51又は52に記載の通信装置。
【0446】
54. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを、後続の処理のためにキューに格納する、項51又は52に記載の通信装置。
【0447】
55. 複数のパケットが、1つ又は複数の渡されているパケット及び1つ又は複数の破棄されているパケットを含み、パケット処理回路が、1つ又は複数の破棄されているパケットの格納を防止し、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを決定するためのものである、項45~54のいずれか一項に記載の通信装置。
【0448】
56. 渡されているパケットについて決定されているメモリ・アドレスに、1つ又は複数の渡されているパケットの各々を書き込むためのインターフェースをさらに備える、項55に記載の通信装置。
【0449】
57. 1つ又は複数の渡されているパケットの各々について決定されているメモリ・アドレスを含むメモリに、インターフェースを接続するバスをさらに備え、インターフェースは、バスを介して、1つ又は複数の渡されているパケットの各々の、最大でも単一のコピーのみを、渡されているパケットについて決定されているメモリ・アドレスに書き込む、項56に記載の通信装置。
【0450】
58. バスが、周辺機器相互接続エクスプレス(「PCIe」)バスである、項57に記載の通信装置。
【0451】
59. パケット処理回路が、渡されているパケットの少なくとも1つのパケット識別子をメモリ・アドレスにマッピングすることによって、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを決定するためのものである、項55~58のいずれか一項に記載の通信装置。
【0452】
60. パケット処理回路が、線形マッピングを使用して、渡されているパケットの少なくとも1つのパケット識別子をメモリ・アドレスにマッピングすることによって、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを決定するためのものである、項55~58のいずれか一項に記載の通信装置。
【0453】
61. パケット処理回路が、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを、初期パケット識別子、渡されているパケットの少なくとも1つのパケット識別子、渡されているパケットの少なくとも1つのペイロードのサイズ、及び、基準メモリ・アドレスの関数として決定するためのものである、項55~58のいずれか一項に記載の通信装置。
【0454】
62. 通信装置であって、複数のパケット識別子を含む複数のパケットを受信するためのネットワーク・インターフェースと、複数のパケット識別子のうちの重複するパケット識別子を含む複数のパケットのうちの冗長パケットのうちの1つ又は複数を破棄することによって、冗長パケットの少なくともいくらかの重複記憶を防止するアンチ・リプレイ・エンジンを備えるパケット処理回路とを備える、通信装置。
【0455】
63. 複数のパケットが、複数のペイロードを含み、複数のパケット識別子が、複数のペイロードの各々の少なくとも一部分を含む、項62に記載の通信装置。
【0456】
64. ネットワーク・インターフェースが、複数のパケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して受信するための複数の接続を含む、項62又は63に記載の通信装置。
【0457】
65. アンチ・リプレイ・エンジンが、複数のパケット識別子の各固有の値を有する複数のパケットのうちの単一のパケットを除くすべてのパケットを破棄する、項62~64のいずれか一項に記載の通信装置。
【0458】
66. パケット処理回路が、散乱エンジンを実装し、アンチ・リプレイ・エンジンが、複数のパケットのうち、破棄されていないものを、渡されるパケットとして散乱エンジンに渡し、散乱エンジンは、渡されているパケットの各々のメモリ・アドレスを決定する、項65に記載の通信装置。
【0459】
67. 複数のパケットの各々が、複数のパケット識別子のうちの関連付けられるパケット識別子を含むヘッダを含み、複数のパケットの各々がペイロードを含み、パケット処理回路が、パケット解析エンジン及びステアリング・エンジンを実装し、パケット解析エンジンが、複数のパケットの各々を解析し、複数のパケットの各々のヘッダを識別し、複数のパケットの各々のヘッダ及びペイロードをステアリング・エンジンに転送し、ステアリング・エンジンが、複数のパケットの各々のヘッダの内部の関連付けられるパケット識別子を識別し、複数のパケットの各々のパケット識別子及びペイロードをアンチ・リプレイ・エンジンに渡す、項66に記載の通信装置。
【0460】
68. アンチ・リプレイ・エンジンが、スライディング・ウィンドウ内で受信される複数のパケット識別子のうちの各固有のパケット識別子を有する1つのパケットを除くすべてのパケットを破棄する、項62~67のいずれか一項に記載の通信装置。
【0461】
69. ユーザによって使用するためのものであり、スライディング・ウィンドウのサイズがユーザによって与えられてもよい、項68に記載の通信装置。
【0462】
70. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを破棄する、項68又は69に記載の通信装置。
【0463】
71. スライディング・ウィンドウの外部で遅延パケットが受信され、アンチ・リプレイ・エンジンが、遅延パケットを、後続の処理のためにキューに格納する、項68~70のいずれか一項に記載の通信装置。
【0464】
72. 複数のパケットが、1つ又は複数の渡されているパケット及び1つ又は複数の破棄されているパケットを含み、1つ又は複数の破棄されているパケットは、アンチ・リプレイ・エンジンによって破棄されているパケットのいずれかを含み、パケット処理回路が、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを決定するためのものである、項62~71のいずれか一項に記載の通信装置。
【0465】
73. 渡されているパケットについて決定されているメモリ・アドレスに、1つ又は複数の渡されているパケットの各々を書き込むためのインターフェースをさらに備える、項72に記載の通信装置。
【0466】
74. 1つ又は複数の渡されているパケットの各々について決定されているメモリ・アドレスを含むメモリに、インターフェースを接続するバスをさらに備え、インターフェースは、バスを介して、1つ又は複数の渡されているパケットの各々の、最大でも単一のコピーのみを、渡されているパケットについて決定されているメモリ・アドレスに書き込む、項73に記載の通信装置。
【0467】
75. バスが、周辺機器相互接続エクスプレス(「PCIe」)バスである、項74に記載の通信装置。
【0468】
76. パケット処理回路が、渡されているパケットと関連付けられる複数のパケット識別子のうちの1つをメモリ・アドレスにマッピングすることによって、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを決定するためのものである、項72~75のいずれか一項に記載の通信装置。
【0469】
77. パケット処理回路が、線形マッピングを使用して、渡されているパケットと関連付けられる複数のパケット識別子のうちの1つをメモリ・アドレスにマッピングすることによって、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを決定するためのものである、項72~75のいずれか一項に記載の通信装置。
【0470】
78. パケット処理回路が、1つ又は複数の渡されているパケットの各々のメモリ・アドレスを、初期パケット識別子、渡されているパケットと関連付けられる複数のパケット識別子のうちの1つ、渡されているパケットのペイロードのサイズ、及び、基準メモリ・アドレスの関数として決定するためのものである、項72~75のいずれか一項に記載の通信装置。
【0471】
79. 方法であって、(a)送信側通信装置によって、複数のパケット識別子を各々1つずつ、複数のパケットの各々に追加することと、(b)送信側通信装置によって、複数のパケット識別子が複数のパケットの各々に追加された後、複数のパケットの各々を複製し、以て、複数の複製パケットを作成することと、(c)送信側通信装置によって、複数の複製パケットの各々のアドレスを修正することと、(d)送信側通信装置によって、複数のパケット及び複数の複製パケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して受信側通信装置へと送信することと、(e)受信側通信装置によって、複数のパケット・ストリームを受信することと、(f)受信側通信装置のアンチ・リプレイ・エンジンによって、複数のパケット・ストリーム内で受信される異なるパケットの別のパケット識別子と同一であるパケット識別子を含む、複数のパケット・ストリーム内で受信される少なくとも1つのパケットを破棄することとを含む、方法。
【0472】
80. 送信側通信装置が、複数のパケット・ストリームの各々を、送信側通信装置のネットワーク・インターフェースの異なるポートを介して送信する、項79に記載の方法。
【0473】
81. 送信側通信装置が、複数のパケット及び複数の複製パケットのうち、同一のパケット識別子を有するものを、低ジッタで送信する、項79又は80に記載の方法。
【0474】
82. 送信側通信装置のホスト・インターフェースによって、少なくとも1つのホスト・プロセッサからのデータを受信することと、ホスト・インターフェースによって、データを複数のパケットにパケット化することとをさらに含む、項79~81のいずれか一項に記載の方法。
【0475】
83. データがビデオ・データであり、方法が、ビデオ・カメラによって、ビデオ・データを捕捉することと、ビデオ・カメラによって、ビデオ・データをホスト・インターフェースに送信することとをさらに含む、項82に記載の方法。
【0476】
84. 送信側通信装置のインターネット・プロトコル・セキュリティ・エンジンによって、複数のパケット識別子を生成することをさらに含む、項79~83のいずれか一項に記載の方法。
【0477】
85. 複数のパケット識別子の各々が、映画テレビ技術者協会(「SMPTE」)2022-7のリアル・タイム・トランスポート・プロトコル(「RTP」)に従って生成されるパケット・シーケンス番号である、項79~84のいずれか一項に記載の方法。
【0478】
86. 複数の複製パケットの各々のアドレスを修正することが、ユーザ・データグラム・プロトコル(「UDP」))ソース・ポート値を変更することを含む、項79~85のいずれか一項に記載の方法。
【0479】
87. 複数の複製パケットの各々のアドレスを修正することが、ソース媒体アクセス制御(「MAC」)アドレス値を変更することを含む、項86に記載の方法。
【0480】
88. システムであって、複数のパケット識別子と各々1つずつ関連付けられる複数のペイロードを含む複数のパケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して送信するパケット・ソースと、複数のパケット・ストリームを受信し、スライディング・ウィンドウ内で複数のパケット識別子のうちの特定のパケット識別子を受信することを予測し、スライディング・ウィンドウ内で受信される特定のパケット識別子の各々を有する複数のパケットのうちの、最大でも単一のパケットを含む順序付けされたデータ・セットを作成することによって、複数のペイロードのうちの少なくともいくつかの重複記憶を防止し、複数のペイロードのうち、順序付けされたデータ・セットに含まれる複数のパケットと関連付けられるものを、追加の処理のために受信側デバイスの外部にある構成要素に転送する回路を備える受信側デバイスとを備える、システム。
【0481】
89. パケット・ソースが、仮想機械である、項88に記載のシステム。
【0482】
90. 回路が、アンチ・リプレイ・エンジン及び散乱エンジンを実装し、複数のペイロードのうち、順序付けされたデータ・セットに含まれる複数のパケットと関連付けられるものが、転送されているペイロードであり、アンチ・リプレイ・エンジンが、順序付けされたデータを作成し、転送されているペイロードを散乱エンジンに転送し、散乱エンジンが、転送されているペイロードの各々のメモリ・アドレスを決定し、追加の処理が、転送されているペイロードの各々を、転送されているペイロードについて決定されているメモリ・アドレスに格納することを含む、項88又は89に記載のシステム。
【0483】
91. 複数のペイロードのうち、順序付けされたデータ・セットに含まれる複数のパケットと関連付けられるものが、渡されているパケットであり、複数のペイロードのうちの他のペイロードが、破棄されているペイロードであり、回路が、破棄されているペイロードの格納を防止し、回路が、渡されているペイロードと関連付けられるパケット識別子をメモリ・アドレスにマッピングすることによって、渡されているペイロードの各々のメモリ・アドレスを決定し、追加の処理が、渡されているペイロードの各々を、渡されているペイロードについて決定されているメモリ・アドレスに格納することを含む、項88~90のいずれか一項に記載のシステム。
【0484】
92. 渡されているペイロードの各々について、渡されているペイロードと関連付けられるパケット識別子を、渡されているペイロードについて決定されているメモリ・アドレスにマッピングするために、線形マッピングが使用される、項91に記載のシステム。
【0485】
93. 複数のペイロードのうち、順序付けされたデータ・セットに含まれる複数のパケットと関連付けられるものが、渡されているパケットであり、複数のペイロードのうちの他のペイロードが、破棄されているペイロードであり、回路が、破棄されているペイロードの格納を防止し、回路が、初期シーケンス番号、渡されているペイロードと関連付けられるパケット識別子、渡されているペイロードのサイズ、及びメモリ・アドレスのうちの基準メモリ・アドレスの関数として、渡されているペイロードの各々のメモリ・アドレスを決定し、追加の処理が、渡されているペイロードの各々を、渡されているペイロードについて決定されているメモリ・アドレスに格納することを含む、項88~92のいずれか一項に記載のシステム。
【0486】
94. スライディング・ウィンドウの外部で遅延パケットが受信され、回路が、遅延パケットを破棄すること、又は、遅延パケットを、後続の処理のためにキューに格納すること、のうちの少なくとも一方を行う、項88~93のいずれか一項に記載のシステム。
【0487】
95. パケット・ソースが、複数のパケット識別子のうちの固有のパケット識別子を複数の初期パケットの各々に付加し、固有のパケット識別子が複数の初期パケットの各々に付加された後に複数の初期パケットの各々を複製して、複数の複製パケットを作成し、複数の初期パケット及び複数の複製パケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して送信する回路を有する送信側デバイスを含む、項88~94のいずれか一項に記載のシステム。
【0488】
96. 送信側デバイス又は受信側デバイスのうちの少なくとも一方が、自律車両である、項95に記載のシステム。
【0489】
97. 送信側デバイスが、自律車両であり、自律車両が、少なくとも1つのセンサを備え、複数のペイロードが、各々、少なくとも1つのセンサから取得されるセンサデータに基づく情報を含む、項96に記載のシステム。
【0490】
98. 送信側デバイスが、ビデオ・データを捕捉するためのビデオ・カメラと、ビデオ・データを複数の初期パケットにパケット化するためのインターフェースとを備える、項97に記載のシステム。
【0491】
99. 複数のペイロードが、各々、ビデオ・データのスライスを含む、項98に記載のシステム。
【0492】
100. 方法であって、(a)複数の異なる通信チャネルを介して送信される複数のパケット・ストリームを受信することであって、複数のパケット・ストリームが、複数のパケット識別子に各々1つずつ関連付けられる複数のペイロードを含む複数のパケットを含む、受信することと、(b)複数のパケットのサブセットを含む順序付けされたデータ・セットを作成することによって、複数のペイロードのうちの少なくともいくつかの各々の1つのコピーを識別することであって、パケットのサブセットが、パケット識別子のサブセットを含み、パケット識別子のサブセット内の各特定のパケット識別子が、特定のパケット識別子を有する任意の他のパケットが受信される前に、パケットのサブセットの特定のパケット内で受信されている、識別することと、(c)識別されているペイロードの各々のメモリ・アドレスを決定することと、(d)識別されているペイロードの各々を、識別されているペイロードについて決定されているメモリ・アドレスに書き込むこととを含む、方法。
【0493】
101. スライディング・ウィンドウ内で受信される複数のパケット識別子のうちの各固有のパケット識別子と関連付けられる複数のパケットのうちの1つを除くすべてのパケットを破棄することをさらに含む、項100に記載の方法。
【0494】
102. スライディング・ウィンドウの外部で遅延パケットが受信され、方法が、遅延パケットを破棄すること、又は、遅延パケットを、後続の処理のためにキューに格納することをさらに含む、項101に記載の方法。
【0495】
103. 識別されているペイロードの各々のメモリ・アドレスを決定することが、識別されているペイロードの各々と関連付けられるパケット識別子をメモリ・アドレスに:マッピングすることを含む、項100~102のいずれか一項に記載の方法。
【0496】
104. 識別されているペイロードの各々と関連付けられるパケット識別子をメモリ・アドレスにマッピングするために、線形マッピングが使用される、項103に記載の方法。
【0497】
105. 初期シーケンス番号、識別されているペイロードの各々と関連付けられるパケット識別子、識別されているペイロードの各々のサイズ、及び基準メモリ・アドレスの関数が、識別されているペイロードの各々と関連付けられるパケット識別子をメモリ・アドレスにマッピングするために使用される、項103又は104に記載の方法。
【0498】
106. 複数のパケット識別子のうちの固有のパケット識別子を複数の初期パケットの各々に付加することと、固有のパケット識別子が複数の初期パケットの各々に付加された後に複数の初期パケットの各々を複製して、複数の複製パケットを作成することと、複数の初期パケット及び複数の複製パケットを、複数のパケット・ストリームとして、複数の異なる通信チャネルを介して送信することとをさらに含む、項100~105のいずれか一項に記載の方法。
【0499】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
【0500】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える」、「有する」、「含む」、及び「収容する」という用語は、別段の記載がない限り、制約がない用語(「限定ではないが、~を含む」を意味する)として解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又はともに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。少なくとも一実施例では、「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の成員を含む空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセット及び対応するセットは等しくてもよい。
【0501】
「A、B、及びCのうちの少なくとも1つ」又は「A、B及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、A若しくはB若しくはCである、又はA及びB及びCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。例えば、3つの成員を有するセットの例示的な実例では、「A、B、及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という結合語は、以下のセット、すなわち、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のうちのいずれかを指す。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。少なくとも一つの実施例において、複数である項目の数は、少なくとも2つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
【0502】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実施することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実施され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、コンピュータ可読記憶媒体上に格納される。少なくとも一実施例では、コードは、1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形態である。少なくとも一実施例では、コンピュータ可読ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気又は電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ可読ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ可読ストレージ媒体のセットに格納され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実施させる実行可能命令が格納されている(又は、実行可能命令を格納するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、少なくとも一実施例では、非一時的なコンピュータ可読ストレージ媒体は命令を格納し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス処理ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【0503】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実施する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作を実施できるようにする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実施しないように分散型のコンピュータ・システムが本明細書に記載の動作を実施する。
【0504】
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0505】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0506】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【0507】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
【0508】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な実例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書において使用される場合、「ソフトウェア」プロセスは、少なくとも一実施例では、タスク、スレッド、及び知的エージェントなど、経時的にワークを実施するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【0509】
少なくとも一実施例では、算術論理ユニットは、1つ又は複数の入力を取り込んで結果を生成する組合せ論理回路のセットである。少なくとも一実施例では、算術論理ユニットは、プロセッサによって、加算、減算、又は乗算などの算術演算を実施するために使用される。少なくとも一実施例では、算術論理ユニットは、論理AND/OR又はXORなどの論理演算を実施するために使用される。少なくとも一実施例では、算術論理ユニットは、ステートレスであり、論理ゲートを形成するように配列された半導体トランジスタなどの物理スイッチング構成要素から作成される。少なくとも一実施例では、算術論理ユニットは、内部的に、関連するクロックを有するステートフル論理回路として動作してもよい。少なくとも一実施例では、算術論理ユニットは、関連するレジスタ・セット内に維持されない内部状態を有する非同期論理回路として構築されてもよい。少なくとも一実施例では、算術論理ユニットは、プロセッサによって、プロセッサの1つ又は複数のレジスタに記憶されているオペランドを組み合わせ、プロセッサによって別のレジスタ又はメモリ・ロケーションに記憶することができる出力を生成するために使用される。
【0510】
少なくとも一実施例では、プロセッサによって取り出された命令の処理の結果として、プロセッサは、1つ又は複数の入力又はオペランドを算術論理ユニットに提示し、算術論理ユニットに、算術論理ユニットの入力に提供される命令コードに少なくとも部分的に基づいて結果を生成させる。少なくとも一実施例では、プロセッサによってALUに提供される命令コードは、プロセッサによって実行される命令に少なくとも部分的に基づく。少なくとも一実施例では、ALU内の組合せ論理は、入力を処理し、プロセッサ内のバス上に配置される出力を生成する。少なくとも一実施例では、プロセッサは、プロセッサをクロッキングすることによって、ALUによって生成される結果が所望のロケーションに送られるように、宛先レジスタ、メモリ・ロケーション、出力デバイス、又は出力バス上の出力ストレージ・ロケーションを選択する。
【0511】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。少なくとも一実施例では、アナログ・データ及びデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース又はプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【0512】
上の議論は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【0513】
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言葉で説明されてきたが、添付の特許請求の範囲で請求される主題は、必ずしも説明された特有の特徴又は行為に限定されないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形として開示されている。