(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-18
(45)【発行日】2024-11-26
(54)【発明の名称】分散環境における深層学習トレーニングの最適化のためのランタイムにおけるサービスクラス属性の初期化及び管理
(51)【国際特許分類】
G06F 12/0806 20160101AFI20241119BHJP
【FI】
G06F12/0806
【外国語出願】
(21)【出願番号】P 2020160931
(22)【出願日】2020-09-25
【審査請求日】2023-09-21
(32)【優先日】2019-12-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アラヴィンド アナンタラマン
(72)【発明者】
【氏名】スリニヴァス スリダラン
(72)【発明者】
【氏名】アジャヤ ドゥルグ
(72)【発明者】
【氏名】モハマド アール. ハギガット
(72)【発明者】
【氏名】ミケイル イー. スモーカロフ
(72)【発明者】
【氏名】スダルシャン スリニヴァサン
【審査官】豊田 真弓
(56)【参考文献】
【文献】特表2015-511449(JP,A)
【文献】特開2003-318964(JP,A)
【文献】米国特許第6154446(US,A)
【文献】米国特許出願公開第2008/0123654(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0806
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
ネットワークコントローラと、
前記ネットワークコントローラに結合されるプロセッサと、
前記プロセッサに結合されるメモリと、を含み、前記メモリは、実行可能なプログラム命令のセットを含み、前記実行可能なプログラム命令は、前記プロセッサによって実行されると、当該コンピューティングシステムが、
通信ライブラリへのランタイムコールを検出し、前記ランタイムコールは、メモリバッファを識別し、
サービスクラス(CLOS)属性が前記メモリバッファと関連しているということを決定し、そして、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行する、ようにさせる、
コンピューティングシステム。
【請求項2】
前記CLOS属性が前記メモリバッファと関連しているということを決定するために、前記実行可能なプログラム命令は、実行されると、当該コンピューティングシステムが、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するようにさせ、前記アドレス範囲は、メモリページよりも小さい、請求項1に記載のコンピューティングシステム。
【請求項3】
前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求するように構成される、請求項1に記載のコンピューティングシステム。
【請求項4】
前記実行可能なプログラム命令は、実行されると、さらに、当該コンピューティングシステムが、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すようにさせる、請求項3に記載のコンピューティングシステム。
【請求項5】
前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求するように構成される、請求項1に記載のコンピューティングシステム。
【請求項6】
前記実行可能なプログラム命令は、実行されると、さらに、当該コンピューティングシステムが、
割り当て要求を検出し、前記割り当て要求は、前記メモリバッファを識別し、そして、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定する、ようにさせる、請求項1乃至5のうちのいずれか1項に記載のコンピューティングシステム。
【請求項7】
半導体装置であって、
1つ又は複数の基板と、
前記1つ又は複数の基板に結合されるロジックと、を含み、前記ロジックは、少なくとも部分的に、構成可能なロジック又は固定の機能のハードウェアロジックのうちの1つ又は複数によって実装され、前記1つ又は複数の基板に結合される前記ロジックは、
通信ライブラリへのランタイムコールを検出し、前記ランタイムコールは、メモリバッファを識別し、
サービスクラス(CLOS)属性が前記メモリバッファと関連しているということを決定し、そして、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行する、
半導体装置。
【請求項8】
前記CLOS属性が前記メモリバッファと関連しているということを決定するために、前記1つ又は複数の基板に結合される前記ロジックは、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するように構成され、前記アドレス範囲は、メモリページよりも小さい、請求項7に記載の半導体装置。
【請求項9】
前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求するように構成される、請求項7に記載の半導体装置。
【請求項10】
前記1つ又は複数の基板に結合される前記ロジックは、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すように構成される、請求項9に記載の半導体装置。
【請求項11】
前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求するように構成される、請求項7に記載の半導体装置。
【請求項12】
前記1つ又は複数の基板に結合される前記ロジックは、
割り当て要求を検出し、前記割り当て要求は、前記メモリバッファを識別し、そして、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定する、ように構成される、請求項7乃至11のうちのいずれか1項に記載の半導体装置。
【請求項13】
実行可能なプログラム命令のセットを含むコンピュータプログラムであって、前記実行可能なプログラム命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムが、
通信ライブラリへのランタイムコールを検出し、前記ランタイムコールは、メモリバッファを識別し、
サービスクラス(CLOS)属性が前記メモリバッファと関連しているということを決定し、そして、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行する、ようにさせる、
コンピュータプログラム。
【請求項14】
前記CLOS属性が前記メモリバッファと関連しているということを決定するために、前記実行可能なプログラム命令は、実行されると、前記コンピューティングシステムが、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するようにさせ、前記アドレス範囲は、メモリページよりも小さい、請求項13に記載のコンピュータプログラム。
【請求項15】
前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求するように構成される、請求項13に記載のコンピュータプログラム。
【請求項16】
前記実行可能なプログラム命令は、実行されると、さらに、前記コンピューティングシステムが、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すようにさせる、請求項15に記載のコンピュータプログラム。
【請求項17】
前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求するように構成される、請求項13に記載のコンピュータプログラム。
【請求項18】
前記実行可能なプログラム命令は、実行されると、さらに、前記コンピューティングシステムが、
割り当て要求を検出し、前記割り当て要求は、前記メモリバッファを識別し、そして、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定する、ようにさせる、請求項13乃至17のうちのいずれか1項に記載のコンピュータプログラム。
【請求項19】
方法であって、
通信ライブラリへのランタイムコールを検出するステップであって、前記ランタイムコールは、メモリバッファを識別する、ステップと、
サービスクラス(CLOS)属性が前記メモリバッファと関連しているということを決定するステップと、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行するステップと、を含む、
方法。
【請求項20】
前記CLOS属性が前記メモリバッファと関連しているということを決定するステップは、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するステップを含み、前記アドレス範囲は、メモリページよりも小さい、請求項19に記載の方法。
【請求項21】
前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求する、請求項19に記載の方法。
【請求項22】
前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すステップをさらに含む、請求項21に記載の方法。
【請求項23】
前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求する、請求項19に記載の方法。
【請求項24】
割り当て要求を検出するステップであって、前記割り当て要求は、前記メモリバッファを識別する、ステップと、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定するステップと、をさらに含む、請求項19乃至23のうちのいずれか1項に記載の方法。
【請求項25】
請求項19乃至23のうちのいずれか1項に記載の方法を実行するための手段を含む装置。
【請求項26】
請求項13乃至18のうちのいずれか1項に記載のコンピュータプログラムを格納しているコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
複数の実施形態は、一般的に、サービスクラス(CLOS)属性(class of service attributes)に関する。より具体的には、複数の実施形態は、分散環境における深層学習トレーニング(deep learning training)の最適化のためのランタイムにおけるCLOS属性の初期化及び管理に関する。
【背景技術】
【0002】
複数のグラフィックス処理ユニット(GPU)のうちのいくつかは、アプリケーション開発者が、アプリケーションの実行の際に使用されるであろうメモリのページのためのサービスクラス(CLOS)をバッファ割り当ての際に静的に設定することを可能とすることができる。その次に、そのCLOSを使用して、ページ単位の基準で(on a per-page basis)情報のキャッシュ可能性(cacheability)を制御してもよい。ページレベルでのバッファ割り当ての際のCLOSの静的な設定は、非効率的である場合がある。実際に、従来の複数の解決方法は、特に、アプリケーションが、比較的集中的な通信の作業負荷を有する深層ニューラルネットワークのトレーニングを伴うときに、準最適なパフォーマンスにつながる場合がある。
【図面の簡単な説明】
【0003】
それらの複数の実施形態の様々な利点は、以下の明細書及び添付の特許請求の範囲を読むことによって、及び、以下の複数の図面を参照することによって、当業者に明らかになるであろう。
【0004】
【
図1】ある1つの実施形態にしたがったサブページレベルで管理される複数の再構成可能なサービスクラス属性のある1つの例の説明図である。
【
図2】ある1つの実施形態にしたがったサービスクラス属性の初期化の方法のある1つの例のフローチャートである。
【
図3】ある1つの実施形態にしたがったサービスクラス属性の調整の方法のある1つの例のフローチャートである。
【
図4】ある1つの実施形態にしたがったサービスクラス属性の調整の他の方法のある1つの例のフローチャートである。
【
図5】ある1つの実施形態にしたがった深層学習(DL)フレームワーク(deep learning framework)、通信ライブラリ(communication library)、及びドライバの間の通信のある1つの例のシグナリング図である。
【
図6】ある1つの実施形態にしたがったソフトウェアスタックのある1つの例のブロック図である。
【
図7】ある1つの実施形態にしたがったパフォーマンス強化型のコンピューティングシステムのある1つの例のブロック図である。
【
図8】ある1つの実施形態にしたがった半導体装置のある1つの例の説明図である。
【
図9】ある1つの実施形態にしたがったプロセッサのある1つの例のブロック図である。
【
図10】ある1つの実施形態にしたがったマルチプロセッサベースのコンピューティングシステムのある1つの例のブロック図である。
【発明を実施するための形態】
【0005】
次に、
図1を参照すると、(例えば、ある1つのページテーブルの中の単一のエントリが記述する仮想メモリの固定長の複数の連続的なブロック等の)メモリページ20が示され、そのメモリページ20は、第1のアドレス範囲22及び第2のアドレス範囲24等を含む。図示されている例において、第1のサービスクラス(CLOS)属性26は、第1のアドレス範囲22と関連し、第2のCLOS28は、第2のアドレス範囲24と関連する。ある1つの実施形態において、第1のアドレス範囲22は、第1のメモリバッファとして使用され、第2のアドレス範囲24は、第2のメモリバッファとして使用される。例えば、深層学習(DL)アプリケーション等のアプリケーションが、第1の作業負荷に第1のメモリバッファを割り当てるときに、そのアプリケーションは、また、作業負荷のタイプに基づいて、第1のアドレス範囲22に第1のCLOS属性26を関連させてもよく、ささげてもよく、及び/又は割り当ててもよい。
【0006】
例えば、割り当て時間において、第1の作業負荷が、(例えば、行列と行列との乗算演算(matrix-matrix multiplication operations)又は畳み込み演算(convolution operations)に割り当てられている(dedicated to)ソフトウェアルーチン等の)計算カーネルであることが予想されるということを決定する場合に、DLアプリケーションは、第1のCLOS属性26のために比較的低い値を選択してもよい。同様に、割り当て時間において、第2の作業負荷が、(例えば、分散環境の中で、マルチタイルGPUパッケージ(multi-tile GPU package)の中の複数のタイルにわたる通信及び拡張リンク(scale-up links)を介する複数のGPUパッケージにわたる通信等に割り当てられている(dedicated to)ソフトウェアルーチン等の)通信カーネルであることが予想されるということを決定する場合に、DLアプリケーションは、第2のCLOS属性28のために比較的高い値を選択してもよい。CLOS属性26及び28がキャッシュ可能性に比例する場合に、それらの選択された値は、第2のアドレス範囲24よりも第1のアドレス範囲22の中の情報に割り当てられるキャッシュメモリをより少なくするであろう。この点に関して、例えば、(例えば、各々のGPUに関する損失関数(loss function)の勾配を計算し、GPU間の通信によってそれらの勾配の平均を計算し、そして、ネットワークモデルを更新するといった)"すべてが減少する(all-reduce)"通信演算は、計算カーネルと同じリソースを求めて有意に競合するということを決定している。このようにして、図示されているCLOS属性26及び28は、パフォーマンスの管理においてより高い柔軟性を有し、より良好な拡張可能性(scalability)を有するアプリケーションを提供することが可能である。
【0007】
実際に、図示されているCLOS属性26及び28は、再構成可能であり、CLOS属性26及び28は、さらに、効率、パフォーマンス、及び/又は拡張可能性を強化することが可能である。この点に関し、アドレス範囲22及び24は、アプリケーションの実行の際に、複数の異なる作業負荷のために(例えば、反復トレーニングの際に)再利用されてもよい。このようにして、(例えば、第1のメモリバッファ等の)第1のアドレス範囲22が、以降に、通信カーネルである第3の作業負荷に割り当てられる場合に、第1のCLOS属性26は、ランタイムにおいて、(例えば、通信ライブラリから発行される指示によって)比較的高い値に設定されてもよい。このようにして、パフォーマンスに関してよりいっそう大きな柔軟性を達成することが可能である。さらに、ページ20よりもより小さい粒度のレベルでCLOS属性26及び28を設定すると、さらに、バッファレベルでメモリを割り当てるアプリケーションの動作に、図示されている解決方法を適合させる(tailors)。
【0008】
図2は、CLOS属性を初期化する方法30を示す。例えば、プログラム可能なロジックアレイ(PLAs)、フィールドプログラマブルゲートアレイ(FPGAs)、複合的且つプログラム可能なロジックデバイス(CPLDs)等の構成可能なロジックにおいて、或いは、例えば、特定用途向け集積回路(ASIC)、又は、相補型金属酸化物半導体(CMOS)技術又はトランジスタとトランジスタとの間のロジック(TTL)技術等の回路技術を使用する固定の機能のロジックハードウェアにおいて、或いは、それらのいずれかの組み合わせにおいて、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、プログラム可能なROM(PROM)、ファームウェア、フラッシュメモリ等の機械読み取り可能な記憶媒体又はコンピュータ読み取り可能な記憶媒体の中に格納されている論理命令のセットとして、1つ又は複数のモジュールによって、その方法30を実装してもよい。
【0009】
例えば、JAVA(登録商標)、SMALLTALK(登録商標)、又はC++等のオブジェクト指向のプログラミング言語、及び、"C"プログラミング言語又は同様のプログラミング言語等の従来の手続き型のプログラミング言語を含む1つ又は複数のプログラミング言語のうちのいずれかの組み合わせによって、方法30の中で示されている複数の動作を実行するためのコンピュータプログラムコードを記述してもよい。追加的に、論理命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、状態設定データ、集積回路のための構成データ、電子回路及び/又は(例えば、ホストプロセッサ、中央処理ユニット/CPU、マイクロコントローラ等の)ハードウェアに固有の他の構造的な構成要素を個人向けにする状態情報を含んでもよい。
【0010】
図示されている処理ブロック32は、割り当て要求を検出するステップを提供し、その割り当て要求は、メモリバッファを識別する。ある1つの実施形態において、割り当て要求は、(例えば、仮想メモリの中の)アドレス範囲によってメモリバッファを識別する。ブロック34は、割り当て要求に応答して、メモリバッファと関連するCLOS属性を初期レベルに設定する。ブロック34は、CLOS属性をデフォルトレベルに設定してもよく又はCLOS属性をメモリバッファのための作業負荷の予想されるタイプに対応するレベルに設定してもよい。したがって、方法30は、(例えば、ページ単位の基準ではなく)メモリバッファ単位の基準(per memory buffer basis)で、CLOS属性を初期化することによって、パフォーマンスを強化する。
【0011】
図3は、CLOS属性を調整する方法40を示す。例えば、PLA、FPGA、CPLD等の構成可能なロジックにおいて、或いは、例えば、ASIC、CMOS、又はTTL技術等の回路技術を使用する固定の機能のロジックハードウェアにおいて、或いは、それらのいずれかの組み合わせにおいて、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等の機械読み取り可能な記憶媒体又はコンピュータ読み取り可能な記憶媒体の中に格納されている論理命令のセットとして、1つ又は複数のモジュールによって、方法30(
図2)に続いて、方法40を実装してもよい。
【0012】
図示されている処理ブロック42は、(例えば、トレーニング反復の際のccl_allreduce等の)通信ライブラリへのランタイムコール(runtime call)を検出し、そのランタイムコールは、メモリバッファを識別する。ある1つの例において、メモリバッファは、アドレス範囲によって識別される。ブロック44は、CLOS属性がメモリバッファと関連しているということを決定する。ある1つの実施形態において、ブロック44は、メモリバッファに対応するアドレス範囲を求めて、(例えば、マップ等の)データ構造を探索するステップを含む。すでに述べたように、アドレス範囲は、メモリページのサイズよりも小さくてもよい。ブロック46は、ランタイムコールに応答して、CLOS属性を修正するためのドライバ命令を発行する。ある1つの例において、ランタイムコールが通信カーネルと関連している場合に、ドライバ命令は、CLOS属性のレベルの増加を要求する。他の例において、ランタイムコールが計算カーネルと関連している場合に、ドライバ命令は、CLOS属性のレベルの減少を要求する。ブロック46は、また、(例えば、レジスタ等の)適切なメモリ位置にCLOS属性の以前の値を格納するステップを含んでもよい。したがって、図示されている方法40は、少なくとも、(1) CLOS属性を修正するためのドライバ命令を使用することによって、(2) ランタイムにおいて、及び、(3) メモリバッファ単位の基準で(per memory buffer basis)、パフォーマンス及び/又は拡張可能性を強化する。
【0013】
図4は、CLOS属性を調整する他の方法50を示す。例えば、PLA、FPGA、CPLD等の構成可能なロジックにおいて、或いは、例えば、ASIC、CMOS、又はTTL技術等の回路技術を使用する固定の機能のロジックハードウェアにおいて、或いは、それらのいずれかの組み合わせにおいて、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等の機械読み取り可能な記憶媒体又はコンピュータ読み取り可能な記憶媒体の中に格納されている論理命令のセットとして、1つ又は複数のモジュールによって、(
図3、例えば、通信カーネルをサポートするCLOS属性を増加させた後に)方法40に続いて、方法50を実装してもよい。
【0014】
図示されている処理ブロック52は、通信カーネルが完了しているか否かを決定するステップを提供する。通信カーネルが完了していない場合には、図示されている方法50は、待機状態に入る。いったん、通信カーネルが完了すると、ブロック54は、作業負荷の完了に応答して、初期レベルにCLOS属性を戻す。ある1つの実施形態において、ブロック54は、(例えば、レジスタ等の)適切なメモリ位置から初期レベルの値を検索するステップを含む。したがって、図示されている方法50は、ランタイム条件に基づいて、一時的にCLOS属性を調整する能力を提供することによって、さらに、パフォーマンス及び/又は拡張可能性を強化する。
【0015】
図5は、DLフレームワーク62、(例えば、ONEAPI集合的な通信ライブラリ/1つのCCL等の)通信ライブラリ64、及びドライバ66の間の通信のためのシグナリング
図60を示す。図示されている例において、DLフレームワーク62は、通信ライブラリ64に(例えば、ccl_allreduce等の)ランタイムコール68を発行する。そのランタイムコール68は、バッファアドレス及びサイズ等を含んでもよい。ある1つの実施形態において、通信ライブラリ64は、(例えば、追加的なミドルウェア及び/又はアプリケーションプログラミングインターフェイス/APIによって)ドライバ命令を発行し、そのドライバ命令は、対象のメモリ領域のために、CLOS属性に対する変更を要求する。すでに述べたように、その変更は、計算カーネルの場合には、比較的低いCLOS値となってもよく、通信カーネルの場合には、比較的高いCLOS値等となってもよい。通信ライブラリ64は、また、メモリ領域のための以前のCLOS値を格納し、通信動作を開始してもよい。いったん、通信が完了すると、図示されている通信ライブラリ64は、他のドライバ命令72によって、メモリ領域のための以前のCLOS値を回復する。ある1つの実施形態において、通信ライブラリ64は、その次に、DLフレームワーク62に、通信が完了しているという通知74を送信する。その通知74を受信すると、DLフレームワーク62は、他の目的のためにメモリバッファの使用を開始してもよい。
【0016】
図6は、統合されたソフトウェアスタック110を示し、その統合されたソフトウェアスタック110は、レベル0のインターフェイス112、レベル0のインターフェイス112の下のシステムソフトウェア114、レベル0のインターフェイス112の上のシステムソフトウェア116、及び開発者インターフェイス118を含む。レベル0のインターフェイス112の下のシステムソフトウェア114は、例えば、(例えば、スカラー演算をサポートしてもよい)CPU、(例えば、ベクトル演算をサポートしてもよい)GPU、(例えば、行列演算をサポートしてもよい)AI(人工知能)加速器、及び(例えば、空間演算をサポートしてもよい)FPGA等のハードウェアと通信する。追加的に、開発者インターフェイス118は、最適化されたミドルウェア及び関連するフレームワークと対話し、同様にして、1つ又は複数の最適化されたアプリケーションをサポートする。ある1つの実施形態において、例えば、(ONEAPI集合的な通信ライブラリ/1つのCCL)等のライブラリ120は、すでに説明されている方法30(
図2)、方法40(
図3)、及び/又は方法50(
図4)の機能性を含む。
【0017】
次に、
図7を参照すると、パフォーマンス強化型のコンピューティングシステム151が示されている。そのシステム151は、一般的に、電子デバイス/プラットフォームの一部であってもよく、その電子デバイス/プラットフォームは、(例えば、パーソナルディジタルアシスタント/PDA、ノートブックコンピュータ、タブレットコンピュータ、変換可能なタブレット、サーバ等の)コンピューティング機能、(例えば、スマートフォン等の)通信機能、(例えば、カメラ、ビデオカメラ等の)撮像機能、(例えば、スマートテレビ/TV等の)メディア再生機能、(例えば、時計、アイウェア、ヘッドウェア、履物、宝石類等の)ウェアラブル機能、(例えば、自動車、トラック、オートバイク等の)車載機能、(例えば、自律的なロボット等の)ロボット機能、又はそれらのいずれかの組み合わせを有する。図示されている例において、システム151は、(例えば、複数のコアを有するCPU等の)ホストプロセッサ153を含み、そのホストプロセッサ153は、(例えば、レベル3/L3キャッシュ等のLLC等の)最後のレベルキャッシュ154、及び、システムメモリ157に接続されている一体化されたメモリコントローラ(IMC)155を有する。
【0018】
図示されているシステム151は、また、システムオンチップ(SoC)として、ホストプロセッサ153と共に実装されている入力出力(IO)モジュール159及び半導体ダイ163に配置されているグラフィックスプロセッサ161を含む。図示されているIOモジュール159は、例えば、(例えば、タッチスクリーン、液晶ディスプレイ/LCD、発光ダイオード/LEDディスプレイ等の)ディスプレイ165、(例えば、有線及び/又は無線の)ネットワークコントローラ167、及び(例えば、ハードディスクドライブ/HDD、光ディスク、ソリッドステートドライブ/SSD、フラッシュメモリ等の)大容量記憶装置169と通信する。
【0019】
ある1つの実施形態において、ホストプロセッサ153、グラフィックスプロセッサ161、及び/又はIOモジュール159は、システムメモリ157及び/又は大容量記憶装置169から検索されるプログラム命令171を実行し、すでに説明されている方法30(
図2)、方法40(
図3)、及び/又は方法50(
図4)のうちの1つ又は複数の態様を実行する。このようにして、図示されている命令を実行すると、コンピューティングシステムが、通信ライブラリへのランタイムコールを検出するようにさせ、そのランタイムコールは、メモリバッファを識別し、そのコンピューティングシステムが、CLOS属性がメモリバッファと関連しているということを決定し、そして、そのランタイムコールに応答してそのCLOS属性を修正するためのドライバ命令を発行する、ようにさせる。ある1つの実施形態において、CLOS属性がメモリバッファと関連しているということを決定するために、命令171は、実行されると、コンピューティングシステム151が、メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するようにさせる。ある1つの例において、アドレス範囲は、メモリページよりも小さい。したがって、少なくとも、コンピューティングシステム151が、ドライバ命令を使用して、ランタイムにおいて及びメモリバッファ単位の基準で、CLOS属性を修正する程度にまで、そのコンピューティングシステム151の性能を強化する。
【0020】
図8は、半導体パッケージ装置173を示す。図示されている装置173は、1つ又は複数の基板175に接続されている(例えば、シリコン、サファイア、ガリウムヒ素等からなる)1つ又は複数の基板175及び(例えば、トランジスタアレイ及び他の集積回路/IC構成要素等の)ロジック177を含む。そのロジック177は、少なくとも部分的に、構成可能なロジック又は固定の機能ロジックハードウェアによって実装されてもよい。ある1つの例において、そのロジック177は、すでに説明されている方法30(
図2)、方法40(
図3)、及び/又は方法50(
図4)のうちの1つ又は複数の態様を実装する。このようにして、ロジック177は、通信ライブラリへのランタイムコールを検出することが可能であり、そのランタイムコールは、メモリバッファを識別し、そのロジック177は、CLOS属性がメモリバッファと関連しているということを決定し、そして、そのランタイムコールに応答してCLOS属性を修正するためのドライバ命令を発行する。ある1つの実施形態において、CLOS属性がメモリバッファと関連しているということを決定するために、ロジック177は、メモリバッファに対応するアドレス範囲を求めてデータ構造を探索する。ある1つの例において、アドレス範囲は、メモリページよりも小さい。したがって、少なくとも、半導体パッケージ装置173が、ドライバ命令を使用して、ランタイムにおいて及びメモリバッファ単位の基準で、CLOS属性を修正する程度にまで、その半導体パッケージ装置173の性能を強化する。
【0021】
ある1つの例において、ロジック177は、1つ又は複数の基板175の中に(例えば、埋め込まれるといったように)配置される複数のトランジスタチャネル領域を含む。このようにして、ロジック177と1つ又は複数の基板175との間のインターフェイスは、階段接合ではなくてもよい。ロジック177は、また、エピタキシャル層を含むと考えられてもよく、そのエピタキシャル層は、1つ又は複数の基板175の初期ウェハの上に成長させられる。
【0022】
図9は、ある1つの実施形態にしたがったプロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、組み込み型プロセッサ、ディジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又はコードを実行するための他のデバイス等のいずれかのタイプのプロセッサのためのコアであってもよい。
図9には1つのプロセッサコア200のみが図示されているが、処理要素は、代替的に、
図9に図示されている1つよりも多くのプロセッサコア200を含んでもよい。プロセッサコア200は、シングルスレッドコアであってもよく、少なくとも1つの実施形態の場合には、プロセッサコア200は、そのプロセッサコア200が、コアごとに1つよりも多くのハードウェアスレッドコンテキスト(又は、"ロジックプロセッサ")を含んでもよいという点で、マルチスレッドであってもよい。
【0023】
図9は、また、プロセッサコア200に接続されているメモリ270を図示している。メモリ270は、当業者に知られているか、又は、他の場合には、当業者に利用可能である(メモリ階層のうちのさまざまな層を含む)広範な種類のメモリのいずれかであってもよい。メモリ270は、プロセッサコア200が実行する1つ又は複数のコード213の命令を含んでもよく、コード213は、すでに説明されている方法30(
図2)、方法40(
図3)、及び/又は方法50(
図4)の1つ又は複数の態様を実装してもよい。プロセッサコア200は、コード213が示す命令のプログラムシーケンスにしたがう。各々の命令は、フロントエンド部分210に入り、1つ又は複数のデコーダ220によって処理されてもよい。デコーダ220は、その出力として、あらかじめ定義されているフォーマットの固定幅のマイクロオペレーション等のマイクロオペレーションを生成してもよく、或いは、元のコード命令を反映する他の命令、マイクロ命令、又は制御信号を生成してもよい。図示されているフロントエンド部分210は、また、レジスタリネームロジック225及びスケジューリングロジック230を含み、それらのレジスタリネームロジック225及びスケジューリングロジック230は、一般的に、実行のために、リソースを割り当て、変換命令に対応する動作を待ち行列に入れる。
【0024】
プロセッサコア200は、実行ユニット255-1乃至255-Nのセットを有する実行ロジック250を含むように示されている。いくつかの実施形態は、複数の特定の機能又は機能のセットに専用の複数の実行ユニットを含んでもよい。他の実施形態は、ある特定の機能を実行することが可能である1つの実行ユニット又は1つの実行ユニットのみを含んでもよい。図示されている実行ロジック250は、コード命令が指定する動作を実行する。
【0025】
コード命令が指定する動作の実行の完了の後に、バックエンドロジック260は、コード213の命令を終了させる。ある1つの実施形態において、プロセッサコア200は、命令の順序どおりではない実行を可能にするが、命令の順序どおりの終了を必要とする。終了ロジック265は、(例えば、再順序バッファ等の)当業者に知られているさまざまな形態をとってもよい。このようにして、プロセッサコア200は、コード213の実行の際に、少なくとも、デコーダが生成する出力、レジスタリネームロジック225が利用するハードウェアレジスタ及びテーブル、及び、実行ロジック250が修正する(示されていない)いずれかのレジスタの形態に変換される。
【0026】
図9には示されていないが、処理要素は、プロセッサコア200を有するチップに配置されている他の要素を含んでもよい。例えば、処理要素は、プロセッサコア200と共にメモリ制御ロジックを含んでもよい。処理要素は、I/O制御ロジックを含んでもよく、及び/又は、メモリ制御ロジックと一体化されているI/O制御ロジックを含んでもよい。処理要素は、また、1つ又は複数のキャッシュを含んでもよい。
【0027】
次に、
図10を参照すると、ある1つの実施形態にしたがったコンピューティングシステム1000の実施形態のブロック図が示されている。
図10には、マルチプロセッサシステム1000が示され、そのマルチプロセッサシステム1000は、第1の処理要素1070及び第2の処理要素1080を含む。2つの処理要素1070及び1080が示されているが、システム1000のある1つの実施形態は、また、1つのそのような処理要素のみを含んでいてもよいということを理解すべきである。
【0028】
システム1000は、ポイントトゥポイント相互接続システムとして図示され、第1の処理要素1070及び第2の処理要素1080は、ポイントトゥポイント相互接続1050によって接続される。
図10に図示されている相互接続のいずれか又はすべては、ポイントトゥポイント相互接続ではなくマルチドロップバスとして実装されてもよいということを理解すべきである。
【0029】
図10に示されているように、処理要素1070及び1080の各々は、マルチコアプロセッサであってもよく、そのマルチコアプロセッサは、第1のプロセッサコア及び第2のプロセッサコア(すなわち、プロセッサコア1074aとプロセッサコア1074b、及び、プロセッサコア1084aとプロセッサコア1084b)を含む。そのようなコア1074a、1074b、1084a、及び1084bは、
図9に関連して上記で説明されているのと同様の方法によって命令コードを実行するように構成されてもよい。
【0030】
各々の処理要素1070及び1080は、少なくとも1つの共有キャッシュ1896a及び1896bを含んでもよい。共有キャッシュ1896a及び1896bは、それぞれ、コア1074a、1074b、1084a、及び1084b等のプロセッサの1つ又は複数の構成要素が利用する(例えば、命令等の)データを格納してもよい。例えば、共有キャッシュ1896a及び1896bは、プロセッサの複数の構成要素によるより速いアクセスのために、メモリ1032及び1034の中に格納されているデータをローカルにキャッシュしてもよい。1つ又は複数の実施形態において、共有キャッシュ1896a及び1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュ、最後のレベルのキャッシュ(LLC)、及び/又はそれらの組み合わせ等の1つ又は複数の中間レベルキャッシュを含んでもよい。
【0031】
2つの処理要素1070及び1080のみを使用して示されているが、それらの複数の実施形態の範囲は、そのような範囲には限定されないということを理解すべきである。他の実施形態において、1つ又は複数の追加の処理要素は、ある与えられたプロセッサの中に存在してもよい。代替的に、処理要素1070及び1080のうちの1つ又は複数は、例えば、加速器又はフィールドプログラマブルゲートアレイ等のプロセッサ以外の要素であってもよい。例えば、1つ又は複数の追加的な処理要素は、第1のプロセッサ1070と同じである追加的なプロセッサ、第1のプロセッサ1070に対してヘエテロジニアスな又は非対称なプロセッサである1つ又は複数の追加的なプロセッサ、(例えば、グラフィックス加速器又はディジタル信号処理(DSP)ユニット等の)加速器、フィールドプログラマブルゲートアレイ、又はいずれかの他の処理要素を含んでもよい。処理要素1070及び1080の間には、アーキテクチャ、マイクロアーキテクチャ、熱、及び電力消費特性等を含む利点の基準の範囲に関して、様々な相違が存在してもよい。これらの差異は、実質的に、処理要素1070及び1080の間の非対称性及び不均一性として現れてもよい。少なくとも1つの実施形態について、さまざまな処理要素1070及び1080は、同じダイパッケージの中に存在してもよい。
【0032】
第1の処理要素1070は、メモリコントローラロジック(MC)1072、及び、ポイントトゥポイント(P-P)インターフェイス1076及び1078をさらに含んでもよい。同様に、第2の処理要素1080は、MC1082、及び、P-Pインターフェイス1086及び1088を含んでもよい。
図10に示されているように、MC1072及び1082は、それぞれのメモリ、すなわち、メモリ1032及びメモリ1034にプロセッサを結合し、それらのメモリ1032及びメモリ1034は、それぞれのプロセッサにローカルに付随しているメインメモリの一部であってもよい。MC1072及びMC1082は、処理要素1070及び1080の中に一体化されているように示されているが、代替的な実施形態の場合に、MCロジックは、処理素子1070及び1080の中に一体化されているのではなく、処理素子1070及び1080の外側にある個別のロジックであってもよい。
【0033】
第1の処理要素1070及び第2の処理要素1080は、それぞれ、P-P相互接続1076及び1086を介して、I/Oサブシステム1090に結合されてもよい。
図10に示されているように、I/Oサブシステム1090は、P-Pインターフェイス1094及び1098を含む。さらに、I/Oサブシステム1090は、高性能グラフィックスエンジン1038とI/Oサブシステム1090を結合するためのインターフェイス1092を含む。ある1つの実施形態において、バス1049は、I/Oサブシステム1090にグラフィックスエンジン1038を結合するのに使用されてもよい。代替的に、ポイントトゥポイント相互接続は、これらの構成要素を結合してもよい。
【0034】
次に、I/Oサブシステム1090は、インターフェイス1096を介して第1のバス1016に結合されてもよい。ある1つの実施形態において、第1のバス1016は、周辺機器構成要素相互接続(PCI)バス、又は、PCI Expressバス又は他の第3世代のI/O相互接続バス等のバスであってもよいが、実施形態の範囲は、そのような範囲には限定されない。
【0035】
図10に示されているように、(例えば、生物測定のスキャナ、スピーカ、カメラ、センサ等の)さまざまなI/Oデバイス1014は、バスブリッジ1018と共に第1のバス1016に結合されてもよく、そのバスブリッジ1018は、第2のバス1020に第1のバス1016を結合してもよい。ある1つの実施形態において、第2のバス1020は、ローピンカウントバスであってもよい。ある1つの実施形態において、例えば、キーボード/マウス1012、1つ又は複数の通信デバイス1026、及び、コード1030を含んでもよいディスクドライブ又は他の大容量記憶装置等のデータ記憶ユニット1019を含むさまざまなデバイスは、第2のバス1020に結合されてもよい。図示されているコード1030は、すでに説明されている方法30(
図2)、方法40(
図3)、及び/又は方法50(
図4)の1つ又は複数の態様を実装してもよい。さらに、オーディオI/O1024は、第2のバス1020に結合されてもよく、バッテリ1010は、コンピューティングシステム1000に電力を供給してもよい。
【0036】
複数の他の実施形態が考えられるということに留意すべきである。例えば、
図10のポイントトゥポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのような通信トポロジを実装してもよい。また、
図10の要素は、代替的に、
図10に示されているよりもより多くの集積チップ又はより少ない集積チップを使用して分割されてもよい。
【0037】
追加的な注記及び例:
【0038】
例1は、パフォーマンス強化型のコンピューティングシステムであって、
ネットワークコントローラと、
前記ネットワークコントローラに結合されるプロセッサと、
前記プロセッサに結合されるメモリと、を含み、前記メモリは、実行可能なプログラム命令のセットを含み、前記実行可能なプログラム命令は、前記プロセッサによって実行されると、当該パフォーマンス強化型のコンピューティングシステムが、
通信ライブラリへのランタイムコールを検出し、前記ランタイムコールは、メモリバッファを識別し、
サービスクラス(CLOS)属性(class of service attribute)が前記メモリバッファと関連しているということを決定し、そして、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行する、ようにさせる、パフォーマンス強化型のコンピューティングシステムを含む。
【0039】
例2は、前記CLOS属性が前記メモリバッファと関連しているということを決定するために、前記実行可能なプログラム命令は、実行されると、当該パフォーマンス強化型のコンピューティングシステムが、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するようにさせ、前記アドレス範囲は、メモリページよりも小さい、例1のパフォーマンス強化型のコンピューティングシステムを含む。
【0040】
例3は、前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求するように構成される、例1のパフォーマンス強化型のコンピューティングシステムを含む。
【0041】
例4は、前記実行可能なプログラム命令が実行されると、さらに、当該パフォーマンス強化型のコンピューティングシステムが、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すようにさせる、例3のパフォーマンス強化型のコンピューティングシステムを含む。
【0042】
例5は、前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求するように構成される、例1のパフォーマンス強化型のコンピューティングシステムを含む。
【0043】
例6は、前記実行可能なプログラム命令が実行されると、さらに、当該パフォーマンス強化型のコンピューティングシステムが、
割り当て要求を検出し、前記割り当て要求は、前記メモリバッファを識別し、そして、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定する、ようにさせる、例1乃至5のうちのいずれか1つのパフォーマンス強化型のコンピューティングシステムを含む。
【0044】
例7は、半導体装置であって、
1つ又は複数の基板と、
前記1つ又は複数の基板に結合されるロジックと、を含み、前記ロジックは、少なくとも部分的に、構成可能なロジック又は固定の機能のハードウェアロジックのうちの1つ又は複数によって実装され、前記1つ又は複数の基板に結合される前記ロジックは、
通信ライブラリへのランタイムコールを検出し、前記ランタイムコールは、メモリバッファを識別し、
サービスクラス(CLOS)属性(class of service attribute)が前記メモリバッファと関連しているということを決定し、そして、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行する、半導体装置を含む。
【0045】
例8は、前記CLOS属性が前記メモリバッファと関連しているということを決定するために、前記1つ又は複数の基板に結合される前記ロジックは、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するように構成され、前記アドレス範囲は、メモリページよりも小さい、例7の半導体装置を含む。
【0046】
例9は、前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求するように構成される、例7の半導体装置を含む。
【0047】
例10は、前記1つ又は複数の基板に結合される前記ロジックが、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すように構成される、例9の半導体装置を含む。
【0048】
例11は、前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求するように構成される、例7の半導体装置を含む。
【0049】
例12は、前記1つ又は複数の基板に結合される前記ロジックが、
割り当て要求を検出し、前記割り当て要求は、前記メモリバッファを識別し、そして、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定する、ように構成される、例7乃至11のうちのいずれか1つの半導体装置を含む。
【0050】
例13は、実行可能なプログラム命令のセットを含む少なくとも1つのコンピュータ読み取り可能な記憶媒体であって、前記実行可能なプログラム命令は、コンピューティングシステムによって実行されると、前記コンピューティングシステムが、
通信ライブラリへのランタイムコールを検出し、前記ランタイムコールは、メモリバッファを識別し、
サービスクラス(CLOS)属性(class of service attribute)が前記メモリバッファと関連しているということを決定し、そして、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行する、ようにさせる、少なくとも1つのコンピュータ読み取り可能な記憶媒体を含む。
【0051】
例14は、前記CLOS属性が前記メモリバッファと関連しているということを決定するために、前記実行可能なプログラム命令は、実行されると、前記コンピューティングシステムが、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するようにさせ、前記アドレス範囲は、メモリページよりも小さい、例13の少なくとも1つのコンピュータ読み取り可能な記憶媒体を含む。
【0052】
例15は、前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求するように構成される、例13の少なくとも1つのコンピュータ読み取り可能な記憶媒体を含む。
【0053】
例16は、前記実行可能なプログラム命令が実行されると、さらに、前記コンピューティングシステムが、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すようにさせる、例15の少なくとも1つのコンピュータ読み取り可能な記憶媒体を含む。
【0054】
例17は、前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求するように構成される、例13の少なくとも1つのコンピュータ読み取り可能な記憶媒体を含む。
【0055】
例18は、前記実行可能なプログラム命令が実行されると、さらに、前記コンピューティングシステムが、
割り当て要求を検出し、前記割り当て要求は、前記メモリバッファを識別し、そして、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定する、ようにさせる、例13乃至17のうちのいずれか1つの少なくとも1つのコンピュータ読み取り可能な記憶媒体を含む。
【0056】
例19は、パフォーマンス強化型のコンピューティングシステムを動作させる方法であって、当該方法は、
通信ライブラリへのランタイムコールを検出するステップであって、前記ランタイムコールは、メモリバッファを識別する、ステップと、
サービスクラス(CLOS)属性(class of service attribute)が前記メモリバッファと関連しているということを決定するステップと、
前記ランタイムコールに応答して、前記CLOS属性を修正するためのドライバ命令を発行するステップと、を含む方法を含む。
【0057】
例20は、前記CLOS属性が前記メモリバッファと関連しているということを決定するステップが、前記メモリバッファに対応するアドレス範囲を求めてデータ構造を探索するステップを含み、前記アドレス範囲は、メモリページよりも小さい、例19の方法を含む。
【0058】
例21は、前記ランタイムコールが通信カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの増加を要求する、例19の方法を含む。
【0059】
例22は、前記通信カーネルの完了に応答して、前記CLOS属性を初期レベルに戻すステップをさらに含む、例21の方法を含む。
【0060】
例23は、前記ランタイムコールが計算カーネルと関連している場合に、前記ドライバ命令は、前記CLOS属性のレベルの減少を要求する、例19の方法を含む。
【0061】
例24は、
割り当て要求を検出するステップであって、前記割り当て要求は、前記メモリバッファを識別する、ステップと、
前記割り当て要求に応答して、前記CLOS属性を初期レベルに設定するステップと、をさらに含む、例19乃至23のうちのいずれか1つの方法を含む。
【0062】
例25は、例19乃至24のうちのいずれか1つの方法を実行するための手段を含む。
【0063】
このようにして、本明細書において説明されている技術は、複数のCLOS属性の命令ベースの設定を使用して、複数の通信ライブラリが、いずれのバッファがこれらのCLOS属性を有するかを選択することを可能とする。その技術は、また、その通信ライブラリが、ランタイムの動作(runtime behavior)に基づいて、CLOS優先度(CLOS priority)を増加させ又は減少させることを可能とする。したがって、計算パフォーマンスと通信パフォーマンスとの間のトレードオフに対するメカニズムが達成される。実際に、DL作業負荷のトレーニングを微調整する能力は、特に、有利である場合がある。
【0064】
複数の実施形態は、複数の半導体集積回路("IC")チップのすべてのタイプでの使用に適用可能である。これらのICチップの複数の例は、これらには限定されないが、プロセッサ、コントローラ、チップセット構成要素、プログラム可能なロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、及びSSD/NANDコントローラASIC等を含む。加えて、複数の図面のうちのいくつかにおいて、複数の信号導体線路は、複数の線によって表されている。それらの複数の線のうちのいくつかは、異なっていて、より多くの構成要素信号経路を示してもよく、ある数字ラベルを有して、複数の構成要素信号経路を示してもよく、及び/又は、1つ又は複数の端部において複数の矢印を有して、主要な情報フローの方向を示してもよい。一方で、このことは、限定的に解釈されるべきではない。むしろ、1つ又は複数の例示的な実施形態に関連して、そのような追加的な細部を使用して、ある回路のより簡単な理解を容易にしてもよい。いずれかの表現されている信号線路は、追加的な情報を有しているか否かにかかわらず、実際には、複数の方向に伝搬してもよい1つ又は複数の信号を含んでいてもよく、例えば、差動対、光ファイバ線路、及び/又はシングルエンドの線路によって実装されるディジタル線路又はアナログ線路等のいずれかの適切なタイプの信号スキームによって実装されてもよい。
【0065】
例示的なサイズ/モデル/値/範囲を与えてもよいが、複数の実施形態は同じものには限定されない。(例えば、フォトリソグラフィー等の)製造技術は、時間の経過とともに成熟するので、より小さなサイズのデバイスを製造することが可能となるであろうということが期待される。加えて、ICチップ及び他の構成要素へのよく知られている電力接続/接地接続は、図示及び説明を簡単にするために、及び、それらの複数の実施形態の複数の特定の態様を不明瞭にしないように、それらの複数の図の中で示されてもよく又は示されなくてもよい。さらに、また、そのようなブロック図の構成の実装に関する詳細が、その実施形態が実装されるコンピューティングシステムに大きく依存するという事実を考慮して、及び、複数の実施形態を不明瞭にするのを避けるために、ブロック図の形態によって複数の構成を示してもよい、すなわち、そのような詳細は、当業者の創作活動の範囲に属するべきである。複数の例示的な実施形態を説明するために、(例えば、回路等の)複数の特定の詳細を記載している場合に、これらの特定の詳細の変形を使用することなく、又は、これらの特定の詳細の変形を使用して、複数の実施形態を実現することが可能あるということは、当業者にとって明らかであるはずである。このようにして、それらの記載は、限定でなく、例示的なものとして考えられるべきである。
【0066】
"結合される"の語は、本明細書においては、対象となる複数の構成要素の間の直接的な又は非直接的ないずれかのタイプの関係を指すのに使用されてもよく、電気的な接続、機械的な接続、流体の接続、光学的な接続、電磁的な接続、電気機械的な接続、又は他の接続に適用されてもよい。加えて、"第1の"、"第2の"等の語は、説明を容易にするためのみに使用されてもよく、特に示されない限り、特定の時間的な又は年代順の意義を持たなくてもよい。
【0067】
この出願において及び特許請求の範囲において使用されているように、"のうちの1つ又は複数"の語によって組み合わせられる項目のリストは、それらの列挙されている語のいずれかの組み合わせを意味してもよい。例えば、"A、B、又はCのうちの1つ又は複数"の記載は、A、B、C、A及びB、A及びC、B及びC、又は、A、B、及びCを意味してもよい。
【0068】
当業者は、上記の説明から、さまざまな形態で、それらの複数の実施形態の広範な技術を実装してもよいということを理解するであろう。したがって、それらの複数の実施形態の複数の特定の例に関連して、それらの複数の実施形態を説明してきたが、複数の図面、明細書、及び以下の請求の範囲の検討に基づいて、当業者にとって他の修正が明らかとなるため、それらの複数の実施形態の実際の範囲は、そのように限定されるべきではない。