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

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

▶ ハネウェル インターナショナル エス.アール.オー.の特許一覧

特開2023-58425コプロセッサのためのメモリ利用を調整するためのシステム及び方法
<>
  • 特開-コプロセッサのためのメモリ利用を調整するためのシステム及び方法 図1
  • 特開-コプロセッサのためのメモリ利用を調整するためのシステム及び方法 図2
  • 特開-コプロセッサのためのメモリ利用を調整するためのシステム及び方法 図3
  • 特開-コプロセッサのためのメモリ利用を調整するためのシステム及び方法 図4
  • 特開-コプロセッサのためのメモリ利用を調整するためのシステム及び方法 図4A
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023058425
(43)【公開日】2023-04-25
(54)【発明の名称】コプロセッサのためのメモリ利用を調整するためのシステム及び方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20230418BHJP
【FI】
G06F9/50 120A
【審査請求】未請求
【請求項の数】3
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022122762
(22)【出願日】2022-08-01
(31)【優先権主張番号】17/500,552
(32)【優先日】2021-10-13
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】522306893
【氏名又は名称】ハネウェル インターナショナル エス.アール.オー.
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100147991
【弁理士】
【氏名又は名称】鳥居 健一
(72)【発明者】
【氏名】ザイコフ・パヴェル
(72)【発明者】
【氏名】カルヴァーリョ・ウンベルト
(72)【発明者】
【氏名】ミラー・ラリー ジェイムズ
(57)【要約】      (修正有)
【課題】コプロセッサのメモリ利用を調整するためのシステム及び方法を提供する。
【解決手段】コンピューティングシステムは、プロセッサと、1つ以上のカーネルを実行するように構成された計算プロセッサと、プロセッサ及び計算プロセッサに結合されたメモリと、を備える。プロセッサの第1のコア上で実行される第1のタスクのセットにタスクメモリトランザクションクォータを割り当て、計算プロセッサ上でカーネルを実行するための計算プロセッサメモリトランザクションクォータを割り当て、第1のタイミングウィンドウ反復内で、第1のタスクのセットと、カーネルが、計算メモリトランザクションクォータが使い果たされるまで第1のタイミングウィンドウ反復中に実行されるカーネルとを実行し、第1のタスクのセットがプロセッサ上で実行されているときの1つ以上のカーネルによるメモリへのメモリトランザクションアクセスのレートを調整する。
【選択図】図3
【特許請求の範囲】
【請求項1】
コンピューティングシステム(110)であって、前記システム(110)が、
少なくとも1つのコアを備えるプロセッサ(120)と、
1つ以上のカーネル(154)を実行するように構成された計算プロセッサ(150)と、
前記プロセッサ(120)及び前記計算プロセッサ(150)に結合されたメモリ(122)と、を備え、
前記コンピューティングシステム(110)が、
前記プロセッサ(120)の第1のコア(CPU0)上で実行される少なくとも第1のタスクのセット(127)に少なくとも1つのタスクメモリトランザクションクォータを割り当て、
計算プロセッサ上(150)で1つ以上のカーネル(154)を実行するための少なくとも1つの計算プロセッサメモリトランザクションクォータを割り当て、
第1のタイミングウィンドウ反復内で、前記第1のタスクのセット(127)と、前記1つ以上のカーネル(154)であって、前記1つ以上のカーネル(154)が、前記計算プロセッサ上(150)で前記1つ以上のカーネル(154)を実行するための前記少なくとも1つの計算メモリトランザクションクォータが使い果たされるまで、前記第1のタイミングウィンドウ反復中に実行される前記1つ以上のカーネルとを実行し、
前記第1のタスクのセット(127)が前記プロセッサ(120)上で実行されているときの前記1つ以上のカーネル(154)による前記メモリ(122)へのメモリトランザクションアクセスのレートを調整するように構成された、コンピューティングシステム。
【請求項2】
前記少なくとも第1のタスクのセット(127)が、前記プロセッサ(120)の第1のコア(CPU0)上で実行される第1のタスクのセット(127)と、前記プロセッサ(120)の第2のコア(CPU1)上で実行される第2のタスクのセット(127)とを含み、
前記少なくとも1つのタスクメモリトランザクションクォータを割り当てるために、前記コンピューティングシステム(110)が、
前記プロセッサ(120)の前記第1のコア(CPU0)上で実行される前記第1のタスクのセット(127)に第1のメモリトランザクションクォータを割り当て、前記プロセッサ(120)の第2のコア(CPU1)上で実行される前記第2のタスクのセット(127)に第2のメモリトランザクションクォータを割り当てるように構成された、請求項1に記載のシステム(110)。
【請求項3】
前記少なくとも第1のタスクのセット(127)のうちの1つ以上のタスク(127)の実行が前記第1のタイミングウィンドウ反復の終了前に第1のコア(CPU0)上で完了すると、前記コンピューティングシステム(110)が、前記第1のコア(CPU0)に割り当てられた前記少なくとも1つのタスクメモリトランザクションクォータの任意の残りの残高の少なくとも一部を前記少なくとも1つの計算プロセッサメモリトランザクションクォータに転送し、
前記第1のタイミングウィンドウの終了前に前記少なくとも前記第1のタスクのセット(127)の全ての前記実行の完了に基づいて、前記コンピューティングシステム(110)が、前記1つ以上のカーネル(154)による前記メモリトランザクションアクセスの前記レートの調整を中断し、前記計算エンジンによる前記メモリ(122)への無制限のアクセスを可能にするために、前記計算プロセッサメモリトランザクションクォータの前記1つ以上のカーネル(154)への適用を無効にする、請求項1に記載のコンピューティングシステム(110)。
【発明の詳細な説明】
【技術分野】
【0001】
(連邦政府支援研究開発に関する記載)
本発明は、クリーンスカイ2合弁事業によって授与された契約番号:945535の下で政府の支援を受けてなされた。政府は、本発明に一定の権利を有する。本出願につながるプロジェクトは、欧州連合のホライゾン2020研究革新プログラムに基づくクリーンスカイ2合弁事業から、付与された契約第945535号に基づき資金提供を受けている。
【背景技術】
【0002】
アビオニクス用途に使用されるようなセーフティクリティカルコンピューティングシステムは、多くの場合、リアルタイムオペレーティングシステム(RTOS)と併せて使用される空間及び時間パーティションスキームを使用する。アビオニクスアプリケーション標準ソフトウェアインターフェースであるARINC 653は、そのような一例である。ARINC 653システムでは、パーティションは、周期的ウィンドウ(「時間スライス」又は単に「スライス」と呼ばれることが多い)において実行されるように優先プリエンプティブスケジューラによってスケジュールされる。これらの時間スライス内で、1つ以上のプロセス(「タスク」と呼ばれることが多い)が実行される。タスクは、周期的又は非周期的とすることができる。各スケジューリングポイントにおいて、オペレーティングシステムは、実行する準備ができている最も高い優先度のタスクを決定し、それをスケジューリングする。タスクが始まると、タスクは、そのプロセスを完了するまで、より高い優先度のタスクによって先取りされるまで、又はパーティションの時間スライスが終了するまで実行し続けることができる。
【0003】
人工知能(AI)を利用するシステムコンポーネントもまた、AIコプロセッサ推論エンジンの形態でこれらのセーフティクリティカルコンピューティングシステムに沿って、又はそれに統合されており、AIコプロセッサ上で実行されるカーネルは、タスクによって使用されるメモリリソースを共有する。これらのカーネルによって実行される深層ニューラルネットワーク(DNN)は、入力データ、DNN重み、及び他のデータなどの情報をロード及び記憶するために、非常に高いメモリスループットを生成する多数の行列演算を含む。したがって、そのようなコンピューティングシステムでは、AIコプロセッサは、共有DDRメモリバスを著しく利用し、したがって、メインプロセッサによって実行されるアプリケーションからの並列メモリ動作を遅延させる可能性があり、最悪ケース実行時間(WCET)の増加につながるレイテンシをもたらす。したがって、カーネルは、DNN推論において使用されるものなどの高度に計算集約的な行列演算を実行するカーネルから構成されてもよく、及び/又は点ごとの数学演算子などの非集約的な計算演算を含んでもよい。
【0004】
上記の理由のために、及び本明細書を読んで理解すると当業者にとって明らかになる以下に述べる他の理由のために、人工知能コプロセッサのメモリ利用を調整するためのシステム及び方法が当該技術分野において必要とされている。
【発明の概要】
【0005】
本開示の実施形態は、コプロセッサのメモリ利用を調整するための方法及びシステムを提供し、以下の明細書を読んで検討することによって理解される。
【0006】
一実施形態では、コンピューティングシステムは、少なくとも1つのコアを備えるプロセッサと、1つ以上のカーネルを実行するように構成された計算プロセッサと、プロセッサ及び計算プロセッサに結合されたメモリと、を備え、コンピューティングシステムが、プロセッサの第1のコア上で実行される少なくとも第1のタスクのセットに少なくとも1つのタスクメモリトランザクションクォータを割り当てるように構成され、計算プロセッサ上で1つ以上のカーネルを実行するための少なくとも1つの計算プロセッサメモリトランザクションクォータを割り当て、第1のタイミングウィンドウ反復内で、第1のタスクのセットと、1つ以上のカーネルであって、1つ以上のカーネルが、計算プロセッサ上で1つ以上のカーネルを実行するための少なくとも1つの計算メモリトランザクションクォータが使い果たされるまで、第1のタイミングウィンドウ反復中に実行される1つ以上のカーネルとを実行し、第1のタスクのセットがプロセッサ上で実行されているときの1つ以上のカーネルによるメモリへのメモリトランザクションアクセスのレートを調整するように構成されている。
【図面の簡単な説明】
【0007】
本開示の実施形態は、好ましい実施形態及び以下の図の説明を考慮して考慮すると、より容易に理解されることができ、更なる利点及びその使用がより容易に明らかになる。
図1】は、メモリトランザクションクォータ及びAIコプロセッサレート制限を実装する例示的なコンピューティングシステムの実施形態の図である。
図2】は、タイミングウィンドウ反復中にプロセスが実行され、メモリトランザクションクォータに基づいて管理される実施形態の例示的なタイムラインを示している。
図3】は、共通メモリを共有するプロセッサ及び計算プロセッサを備えるシステムにおいてAI推論エンジンのメモリ利用率を管理するための方法を示すフローチャートである。
図4】は、プロセッサと共通メモリを共有するAI推論エンジン上でカーネルの実行を管理するための方法を示すフローチャートである。
図4A】は、プロセッサと共通メモリを共有するAI推論エンジン上でカーネルの実行を管理するための方法を示すフローチャートである。
【0008】
慣例にしたがって、記載された様々な特徴は一定の縮尺で描かれているのではなく、本開示に関連する特徴を強調するように描かれている。参照文字は、図及び本文を通して同様の要素を示す。
【発明を実施するための形態】
【0009】
以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照し、図面には、本実施形態が実施され得る特定の例示的な実施形態の例として示される。これらの実施形態は、当業者が本実施形態を実施することを可能にするために十分に詳細に説明されており、他の実施形態を利用することができ、本開示の範囲から逸脱することなく、論理的、機械的、及び電気的変化がなされ得ることを理解されたい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【0010】
本開示の実施形態は、共通メモリを共有するシングルコアプロセッサ又はマルチコアプロセッサ及び人工知能(AI)コプロセッサを備えるコンピュータシステム上のメモリトランザクションを調整するためのメモリトランザクションクォータ及びレート制限の実装を提供する。ここに存在する実施形態は、ARINC 653システムに有用であり、ARINC 653関連の例の文脈で説明されることができるが、これらの実施形態は、そのように限定されないことを理解されたい。実際に、これらの実施形態は、優先プリエンプティブスケジューリング又はプリエンプティブマルチタスキングを実装しておらず、航空機又は他の車両以外のコンピューティング環境において使用されるものを含む他のコンピューティングシステムに適用可能であり、それらによって実装されることができる。
【0011】
図1には、メモリ122に結合されたプロセッサ120を含むコンピューティングシステム110が示されている。コンピューティングシステム110は、この実施形態では、タスクのセット127の優先プリエンプティブスケジューリングを実装するオペレーティングシステム124及びスケジューラ126を含む。これらのタスクは、プロセッサ120によって実行されるべき周期的タスク128及び/又は非周期的タスク130の任意の組み合わせを含むことができる。プロセッサ120は、これを介してメモリ122に結合されるラスト・レベルキャッシュ(LLC)134を備えることができるか、そうでなければこれに結合される。メモリ122は、ダイナミックランダムアクセスメモリ(DRAM)又は他の形態のメモリを備えることができる。本明細書で説明される例では、プロセッサ120は、CPU0及びCPU1として描写される2つの処理コアを有するマルチコアプロセッサであることに関して説明される。しかしながら、代替の実施形態では、プロセッサ120は、任意の数の1つ以上の処理コア(すなわち、シングルコア又はマルチコアプロセッサのいずれか)を有することができ、本明細書に記載の実施形態は、CPU0及び/又はCPU1について本明細書に開示されたのと同じ方法で存在する処理コアの数に適用されることを理解されたい。AIコプロセッサは、CPUコアを有するシリコンに統合されることができ、又はそれ自体のメモリを有する個別の部品とすることができることを理解されたい。本明細書に記載の戦略は、システムメモリ又はAIコプロセッサのローカルメモリのいずれかに適用されることができる。
【0012】
いくつかの実施形態では、オペレーティングシステム124は、多くの場合デッドラインと呼ばれる指定された時間制約内に入るときにデータを処理するためにリアルタイムアプリケーションの実行を容易にするリアルタイムオペレーティングシステム(RTOS)である。本明細書で「タスク」と呼ばれる実行されたプロセスは、プロセッサ120によって実行されるアプリケーションを含み、スケジューラ126による実行のための時間が割り当てられ、優先度も割り当てられることができる。タスクが実行を開始すると、タスクは、以下に特に説明する場合を除いて、そのプロセスが完了するまで、オペレーティングシステム124によって停止されるまで、又はパーティションの時間フレームが満了するまで継続する。任意の1つのパーティションには、所与の主時間フレーム内に2つ以上の副時間フレームが割り当てられることができることを理解されたい。主時間フレームは、各パーティションが少なくとも1回実行される時間ウィンドウである。副時間フレームは、主時間フレーム内の各パーティションに割り当てられる時間ウィンドウインスタンス又はスライスである。副時間フレームは、順次結合されて主時間フレームを形成する。すなわち、各パーティションは、主時間フレーム内の1つ以上の時間スライスを占有する。
【0013】
パーティションは、周期的タスクのセット及び/又は非周期的タスクのセットを実行するために含むことができる。パーティションに関連付けられた周期的タスク128は、副時間フレームがパーティションを開始するたびに実行される。非周期的タスク130は、時間に敏感でないイベントを処理するために使用され、それらの実行は、複数の副時間フレームにわたって分散されることができる。結果として、周期的タスク128には、通常、非周期的タスクよりも高い優先度が割り当てられる。時間ウィンドウインスタンスの実行ウィンドウが終了すると、パーティションの実行が先取りされ、主時間フレーム内の次のパーティションの実行が開始される。以前に先取りされたパーティションは、それらが発生するようにスケジュールされている次の副時間フレームにおいて実行を継続し、それらのパーティション内のタスクは、優先度の順に再実行される。
【0014】
システム110はまた、ユーザがオペレーティングシステム124又はタスク127のうちの1つ以上と対話することができるヒューマンマシンインターフェース(HMI)142を有する端末140を含むことができる。端末140は、限定されないが、コンピュータ、ラップトップ若しくはタブレットコンピュータ、又は他の機器などの様々な手段によって実装されることができる。アビオニクス実装の文脈では、端末140は、コックピット多機能ディスプレイデバイス、又は電子フライトバッグなどであるがこれに限定されない携帯端末を備えてもよい。端末140は、インターフェース132を介してコンピュータシステム110に結合されることができる。様々な異なる実施形態では、インターフェース132は、有線若しくは無線インターフェース及び/又はネットワークインターフェースであってもよい。端末140は、直接的に、又は専用ネットワーク、車載データネットワーク、若しくは公衆ネットワーク(例えば、インターネットなど)などを介して間接的に、又はこれらの代替形態のいくつかの組み合わせを介して、インターフェース132に結合されることができる。いくつかの実施形態では、端末140及び/又はHMI142に起因する本明細書で説明される特徴は、個別のデバイスではなく、コンピューティングシステム110自体に統合されてもよい。
【0015】
前述したように、コンピューティングシステム110は、AI関連のアプリケーション及び計算を実行するために、本明細書では同等に「推論エンジン」、「計算プロセッサ」又は「計算エンジン」とも呼ばれる人工知能(AI)コプロセッサ150を更に備える。異なる実施形態では、AIコプロセッサ150は、限定されないが、グラフィック処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、CPU(例えばCPU0又はCPU1など)、又はそれらの任意の組み合わせなどの複数の並列コンピューティングパスにわたって数学的演算を繰り返し実行するように構成された専用プロセッサ又は計算エンジンによって実装されてもよい。いくつかの実施形態では、プロセッサ120及びAIコプロセッサ150は、ハードウェアに独立して実装される別個のハードウェア構成要素であってもよいことを理解されたい。他の実施形態では、プロセッサ120及びAIコプロセッサ150は、それらが双方とも同じ処理チップ又は同じ処理ユニットの別個の処理コアに実装される場合など、統合されたハードウェア構成要素の一部である。AIコプロセッサ150がGPUによって実装される場合、DNNの行列計算、及び/又はHMI142上に表示するためのグラフィックスの準備及びレンダリングなどの表示関連機能のためにカーネルが構成されることができる。AIコプロセッサ150は、これを介してメモリ122にも結合されるラスト・レベルキャッシュ(LLC)152を備えることができるか、そうでなければ結合される。いくつかの実施形態では、LLC134及びLLC152は、共通キャッシュとして一体に実装されてもよい。
【0016】
AIコプロセッサ150によって実行されるAI関連プロセスは、本明細書では154に示すように「カーネル」と呼ばれる。カーネルは、グラフィックス処理アプリケーションにおいて「シェーダ」としても知られることがある。これらのカーネル154は、いくつかの実施形態では、プロセッサ120のタスクを実行するために実装されたものと同時にタイミングウィンドウ反復において実行されてもよい。例として、AIコプロセッサ150によって実行されるカーネルは、ディープニューラルネットワーク(DNN)を実装するためのプロセス、グラフィック処理、ディープラーニング(DL)プロセス、推論計算、又は他の機械学習若しくはAI関連のモデル若しくはタスクを含むことができる。いくつかの実施形態では、AIコプロセッサ150は、各々がそれ自体のDNNを実行する複数のカーネル154を同時ホストすることができる。
【0017】
カーネル154はまた、スケジューラ126によってAIコプロセッサ150上での実行のためにスケジュールされる。いくつかの実施形態では、プロセッサ120及びAIコプロセッサ150は、プロセッサ120がAIコプロセッサ150の動作の態様を構成及び制御することができる信号経路156によってリンクされる。すなわち、AIコプロセッサ150は、プライマリプロセッサ(すなわち、プロセッサ120)の権限下でセカンダリプロセッサとして構成されてもよい。いくつかの実施形態では、カーネル154は、タスク127のうちの1つ以上に直接関連付けられてもよく、タスク127は、特殊な処理を実行するためにデータをカーネル154にハンドオフする。他の実施形態では、カーネル154のうちの1つ以上は、タスク127とは独立したプロセスを実行することができる。
【0018】
プロセッサ120及びAIコプロセッサ150は、いくつかの実施形態では、メモリバス123を介してメモリ122にアクセスするように構成される。いくつかの実施形態では、メモリ122へのAIコプロセッサ150のアクセスは、周辺構成要素相互接続エクスプレス(PCIe)インターフェースを介して実行される。プロセッサ120及びAIコプロセッサ150は、各々、メモリバス123への読み出し及び書き込みメモリ呼び出し又はトランザクションを実行して、メモリ122からデータを各々取得し、メモリ122にデータを記憶する。メモリ122へのトランザクションを調整するために、コンピューティングシステム110は、プロセッサバスモニタ(BM)160、AIコプロセッサバスモニタ(BM)162、AIコプロセッサレートリミッタ(RL)164、及びいくつかの実施形態では、プロセッサレートリミッタ(RL)165を更に含み、これらは、各々、メモリバス123に結合されるか、そうでなければインターフェースする。プロセッサバスモニタ160及びAIコプロセッサバスモニタ162は、各々、以下に更に詳細に説明するように、メモリトランザクションクォータを実施する目的で、メモリバス123へのメモリトランザクションの数を監視及びカウントする。AIコプロセッサレートリミッタ164は、以下に更に詳細に説明するように、AIコプロセッサ150がメモリバス123へのメモリトランザクションを実行することができるレートを選択的に調整するように更に動作する。任意のプロセッサレートリミッタ165は、プロセッサ120がメモリバス123へのメモリトランザクションを実行することができるレートを選択的に調整するために使用されてもよい。例えば、任意のプロセッサレートリミッタ165は、AIコプロセッサ150上で実行されているプロセスがDAL A、DAL B、又はDAL Cなどの高いセーフティクリティカル設計保証レベル(DAL)を有するが、CPU上のタスクは、DAL D又はDAL Eなどの比較的低いDALであるアビオニクスアプリケーションシナリオに利用されることができる。
【0019】
本開示の実施形態では、タイミングウィンドウ反復のために、プロセッサ120及びAIコプロセッサ150の各コア上でプロセスを実行するためにメモリトランザクションクォータが割り当てられる。これらのメモリトランザクションクォータは、本質的に、プロセスがメモリに対して実行することができるメモリコール又はトランザクションの数を定義するバジェットとして機能し、各トランザクションは、各々のバジェットをカウントして使い果たす。例えば、CPU0及びCPU1には、各々、タスク127を実行するための各々のタスクメモリトランザクションクォータが割り当てられ、AIコプロセッサ150には、カーネル154を実行するための各々の計算プロセッサメモリトランザクションクォータが割り当てられる。いくつかの実施形態では、これらのメモリトランザクションクォータは、各タイミングウィンドウ反復の開始時にスケジューラ126によって最初に割り当てられてもよい。一般に、プロセスがタイミングウィンドウ反復のためにそのメモリトランザクションクォータを使い果たした場合、次のタイミングウィンドウ反復のための補充バジェットを受信するまで、その実行は限られた期間にわたって延期される。プロセッサ120のコアのうちの1つにおいて実行されているプロセスが現在のタイミングウィンドウ反復の終了よりも早く実行を完了する場合、そのコアの残りのメモリトランザクションクォータの少なくとも一部は、メモリ122にアクセスする別のコンピューティングリソースによる使用のために転送されることができる。
【0020】
CPU0及びCPU1は、典型的には、リアルタイムの、セーフティクリティカルな、又は同様の重要性のタスクを実行していることから、CPU0及びCPU1に割り当てられたメモリトランザクションクォータは、実行されたタスクがそれらのトランザクションバジェットを完全に使い果たすことなくタイミングウィンドウ反復中にそれらの実行を実行するのに十分であるように調整される。すなわち、スケジュールされたタスクに関連する最悪ケース実行時間(WCET)を超えない非異常動作を想定して、現在のタイミングウィンドウ反復中に取ることが予想されることができるメモリトランザクションの数を考慮に入れるメモリトランザクションクォータ割り当てが提供される。
【0021】
対照的に、AIコプロセッサ150は、タスク127のいくつかによって実行されるセーフティクリティカル機能よりも少ない時間重視機能をサポートするカーネル154を実行する。例えば、カーネル154は、依然として重要であるが、リアルタイム未満の処理レイテンシが導入された場合に車両の不安定性(例えば)又は他の悪影響をもたらさない画像又はセンサ処理又はグラフィカルディスプレイ生成機能をサポートすることができる。したがって、AIコプロセッサ150には、プロセッサ120のアプリケーション(例えば、WCETの増加につながる可能性がある)からの並列メモリ動作に大幅な遅延を引き起こすことなく、タイミングウィンドウ反復中に合理的に実行されることができる残りのメモリトランザクション数に基づいて、カーネル154のためのメモリトランザクションクォータが割り当てられることができる。とは言え、いくつかの実装形態では、1つ以上のカーネルは、航空機の視覚的自動着陸機能などのアビオニクス機能をサポートすることができる。したがって、AIコプロセッサ150上で実行される処理が、実行を完了するのに十分なバジェットが提供されるプロセッサ120上で実行されるものと同等又はより高い優先度を有するシナリオが存在してもよい。AIコプロセッサ150がそのメモリトランザクションクォータを使い果たすと、カーネルの実行は、限られた期間だけ一時停止される。プロセッサ120上での実行を完了した別のプロセスから残りのメモリトランザクションクォータ残高を継承する場合、カーネルは、そのメモリトランザクションクォータを再び使い果たすまで(又は現在の時間ウィンドウ反復が終了するまで)、AIコプロセッサ150上でのその実行を継続することができる。いくつかの実施形態では、信号経路156は、カーネル154の実行を制御(スケジュール、一時停止、再開)するためにAIコプロセッサ150に割り込みを発行するためにスケジューラ126によって利用される。
【0022】
いくつかの実施形態では、プロセッサバスモニタ(BM)160は、プロセッサ120によって実行されるタスク127によってメモリ122に対して行われるメモリトランザクションを監視及びカウントする要素である。同様に、AIコプロセッサバスモニタ(BM)162は、AIコプロセッサ150によって実行されるカーネル154によってメモリ122に対して行われるメモリトランザクションを監視及びカウントする要素である。いくつかの実施形態では、スケジューラ126は、上述したようにメモリトランザクションクォータを割り当て、クォータをバスモニタ160、162に伝達し、次に、タスク及びカーネルが本明細書で説明するようにメモリトランザクションを実行するときに残りのクォータ残高を追跡する。
【0023】
バスモニタ160、162は、いくつかの実施形態では、各々のクォータ残高が使い果たされると、タスク及び/又はカーネルによる更なるメモリトランザクションを抑制するように機能する要素としても機能することができる。例えば、バスモニタ160、162は、使い果たされたクォータ残高をスケジューラ126に通信することができ、スケジューラは、関連するタスク及び/又はカーネルの実行を中断(一時停止)することによって応答する。いくつかの実施形態では、バスモニタ160は、タスク127がそのメモリトランザクションクォータ内の残りの残高でタイミングウィンドウインスタンス中に実行を完了するときを認識し、AIコプロセッサ150上での1つ以上のカーネルの更なる実行を可能にするために、その残りの残高の少なくとも一部のバスモニタ162への転送を開始することができる。いくつかの実施形態では、残りのクォータ残高のそのような転送は、スケジューラ126によって制御されることができる。代替の実施形態では、バスモニタ160、162の機能は、ハードウェア要素として、又はソフトウェアで、又はそれらの組み合わせによって実装されてもよいことを理解されたい。いくつかの実施形態では、プロセッサ120又はAIコプロセッサ150上で実行されるソフトウェアは、バスモニタ160、162を定期的に読み取り、それに応じてAIコプロセッサ150を調整して、割り当てられたメモリトランザクションクォータを決して超えないようにする。
【0024】
上述したように、AIコプロセッサレートリミッタ(RL)164は、AIコプロセッサ150によって実行されるカーネル154がメモリ122にアクセスする(すなわち、メモリトランザクションを実行する)ことができるレートを選択的に調整又はスロットル調整するように動作する。カーネル154が自由にメモリトランザクションを実行することを許可する代わりに、RL164は、AIコプロセッサ150とメモリバス123との間でメモリトランザクションが実行されるレートを制限又は限定する。例えば、RL164は、メモリトランザクションを1Gバイト/秒の可能なレートから100Mバイト/秒のレートに制限するように調整することができる。RL164は、バスモニタ162と連携して、又はバスモニタから独立して機能することができる。
【0025】
いくつかの実施形態では、AIコプロセッサ150上で実行されているカーネル154がタイミングウィンドウ反復中に現在実行されている唯一のアクティブプロセスである場合、レートリミッタ並びにAIコプロセッサ150のメモリトランザクションクォータがバイパスされる(例えば、無効にされる)ことができ、カーネル154は、制限なくメモリトランザクションを実行することが可能にされる。同様に、いくつかの実施形態では、カーネル154がAIコプロセッサ150上で実行されており、セーフティクリティカル(例えば非周期的タスク130など)に分類されないタスク127のみがプロセッサ120上で実行されている場合、レートリミッタ164並びにAIコプロセッサ150のメモリトランザクションクォータもまたバイパスされる(例えば、無効にされる)ことができ、カーネル154は、制限なくメモリトランザクションを実行することが可能にされる。いくつかの実施形態では、メモリトランザクションクォータ及びレートリミッタ機能がバイパスされることができるかどうかを確認するために定期的なチェックが実行される。
【0026】
図2は、タイミングウィンドウ反復中にプロセスが実行され、メモリトランザクションクォータに基づいて管理される実施形態の例示的なタイムラインを200で示している。図2では、CPU0、CPU1、及びAIコプロセッサは、各々、メモリトランザクションクォータの影響を受ける各々のプロセス(P0、P1、P2)を実行するものとして示されている。しかしながら、メモリトランザクションクォータは、CPU0、CPU1、及びその上でプロセスを実行するためのAIコプロセッサのいずれかに割り当てられることができ、又はCPU及び/又はAIコプロセッサクォータは、プロセス自体に直接割り当てられることができることを理解されたい。例えば、プロセスP0、P1又はP2は、いくつかの実装形態では、各々が実際にメモリトランザクションクォータを割り当てられた個々のプロセスのセットを表すことができる。とは言え、メモリトランザクションクォータをカウントして実施すること、及び/又はレートリミッタによって制限すること、又はそれにかかわらず同じ方法で実行される。
【0027】
211に示すように、CPU0上でプロセスP0が実行され、CPU1上でプロセスP1が実行され、AIコプロセッサ上でプロセスP2が実行されるタイミングウィンドウの最初の反復を含むタイミングウィンドウインスタンス210が開始する。プロセスP0は、230に示される初期メモリトランザクションクォータによってタイミングウィンドウインスタンス210を開始し、プロセスP1は、240に示される初期メモリトランザクションクォータによってタイミングウィンドウインスタンス210を開始し、プロセスP2は、250に示される初期メモリトランザクションクォータによってタイミングウィンドウインスタンス210を開始する。CPU0及びCPU1上でプロセスが能動的に実行されているため、プロセスP2は、レートリミッタ164がイネーブルされ、P2がメモリ122に対してメモリトランザクションを実行することができるレートを制限することによって開始する。
【0028】
プロセスP0、P1、及びP2は、全て、実行を開始し、メモリトランザクションを実行するときに各々のメモリトランザクションクォータの使い果たしを開始する。212において、P2の実行は、P2がその初期メモリトランザクションクォータを使い果たした時点(252に示す)に到達すると一時停止される。213において、CPU1は、その初期メモリトランザクションクォータに残高が残っている状態で実行プロセスP1を完了する(242に示す)。この残りのメモリトランザクションクォータ残高は、AIプロセッサ上のP2による使用のために転送され(246に示す)、P2のメモリトランザクションクォータを部分的に補充する(256に示す)。したがって、プロセスP2は、214においてそのメモリトランザクションクォータが再び使い果たされるまで(258に示す)AIコプロセッサユニット上での実行を再開し、P2の実行は再び中断される。
【0029】
215において、プロセスP0は、その実行を完了するが、P2に供与するための残りのメモリトランザクションクォータ(232に示す)を有しない。とは言え、P0及びP1は、双方とも、他のタスクがCPU0又はCPU1上で実行されていない(又は少なくとも重要タスクとして指定されたタスクがない)状態で、タイミングウィンドウインスタンス210内に残っている時間によってそれらの実行を完了している。したがって、AIコプロセッサは、CPU0又はCPU1によるタスクの実行にレイテンシを引き起こす懸念なしに、タイミングウィンドウインスタンス210の終了まで(216に示す)、215においてP2の実行を再開することができる。したがって、P2のレート制限は、215から開始して中止されることができる。更に、P2によるメモリトランザクションクォータの使用の追跡も無効にされることができる。いくつかの実施形態では、メモリトランザクションクォータの無効化は、メモリトランザクションの更なるカウントを無効にすること、メモリトランザクションクォータを無限又は他の不釣り合いに高い値に設定すること、メモリトランザクションクォータが使い果たされたときを無視すること、及び/又は他のアクションなどのアクションによって効果的に実装されることができる。
【0030】
216の後、他のタイミングウィンドウのための1つ以上の他のタイミングウィンドウインスタンスがスケジュールされ、タイミングウィンドウインスタンス210について上述したのと同じ方法でメモリトランザクションを調整するように動作することができる。217において、タイミングウィンドウ210の次の反復が開始され、処理されたP0、P1及びP2は、230’、240’及び250’に示される補充されたメモリトランザクションクォータによって再び実行を開始することができる。場合によっては、スケジューラ126は、タイミングウィンドウの前のインスタンスの間にメモリトランザクションクォータ230及び250に割り当てられたのと同じ初期バジェットで、メモリトランザクションクォータ230、240’、240’及び250’に割り当てられてもよい。他の実施形態では、異なる初期メモリトランザクションクォータが割り当てられてもよい。
【0031】
図3は、AIコプロセッサメモリトランザクション調整のための例示的な方法300を実装するフローチャート図である。図3の方法に関して本明細書で説明される特徴及び要素は、本明細書で説明される他の実施形態のいずれかの要素と共に、それと組み合わせて、又はそれと置換して使用されることができ、その逆も可能であることを理解されたい。更に、図3に記載されている実施形態の要素の機能、構造、及び他の説明は、本明細書に記載されている図及び/又は実施形態のいずれかにわたって同様又は同様に命名又は説明された要素に適用されることができ、その逆も可能であることを理解されたい。
【0032】
一実施形態では、方法300は、共通メモリを共有するプロセッサ及び計算プロセッサを備えるシステムにおいてAI推論エンジンのメモリ利用率を管理するための方法である。計算プロセッサは、ディープニューラルネットワーク(DNN)プロセスを含む少なくとも1つのカーネルを実行するように構成される。プロセッサ及び計算プロセッサは、各々、同時タイミングウィンドウ反復中にプロセス(各々、タスク及びカーネル)を実行する。方法300は、マルチコアプロセッサの実施態様であるという観点で説明されているが、シングルコアの場合、追加コアのためのシングルコア実装ステップは省略されるか、又はシングルコアに適合される。
【0033】
本方法は、310において、第1のタイミングウィンドウ割り当てのために、第1のタイミングウィンドウ反復のためにマルチコアプロセッサの第1のコア(例えば、CPU0)上で第1のセットのタスクを実行するために使用される第1のメモリトランザクションクォータを割り当てることと、第1のタイミングウィンドウ反復中にマルチコアプロセッサの第2のコア(例えばCPU1)上で第2のセットのタスクを実行するために使用される第2のメモリトランザクションクォータを割り当てることと、計算エンジン上で1つ以上のカーネルを実行するために使用される第3のメモリトランザクションクォータを割り当てることとから開始する。
【0034】
本方法は、312に進み、第1のタイミングウィンドウ反復内で、第1のセットのタスク及び第2のセットのタスク並びに1つ以上のカーネルを実行し、1つ以上のカーネルは、第3のメモリトランザクションクォータが使い果たされるまで第1のタイミングウィンドウ反復中に実行される(すなわち、第3のメモリトランザクションクォータが使い果たされていない限り)。上述したように、メモリバスモニタは、タスク及びカーネルによって実行されるメモリトランザクションを監視及びカウントし、それらのメモリトランザクションクォータを使い果たすプロセスの中断を開始するために利用されることができる。いくつかの実施形態では、マルチコアプロセッサ上で実行される周期的タスクには、それらのWCET設計ベースの範囲内で動作するときにそれらを使い果たすことが期待されない十分に大きなメモリトランザクションクォータが割り当てられてもよい。
【0035】
本方法はまた、第1のコア又は第2のコアのいずれかがマルチコアプロセッサ上でタスクを実行しているときに1つ以上のカーネルによるメモリへのレート制限アクセスによって314に進む。いくつかの実施形態では、これは、第1のコア又は第2のコアのいずれかがマルチコアプロセッサ上で周期的タスクを実行しているときに、又は第1のコア又は第2のコアのいずれかが指定された重要なタスクを実行しているときに、1つ以上のカーネルによるメモリへのアクセスをレート制限することにより制限されることができる。
【0036】
316において、第1のタイミングウィンドウ反復の終了前に第1のセットのタスクの実行が第1のコア上で完了すると、第1のメモリトランザクションクォータの任意の残りの残高を第3のメモリトランザクションクォータに転送し、第2のタスクのセットの実行が第1のタイミングウィンドウ反復の終了の前に第2のコア上で完了すると、第2のメモリトランザクションクォータの任意の残りの残高を第3のメモリトランザクションクォータに転送する。上述したように、第1のタスクのセット及び第2のタスクのセットは、各々、1つ以上のタスクを含むことができる。
【0037】
318において、第1のタイミングウィンドウの終了前に第1のタスクのセット及び第2のタスクのセットの実行が完了すると、1つ以上のカーネルのレート制限を中断し、計算エンジンによるメモリへの無制限のアクセスを可能にするために、1つ以上のカーネルへの第3のメモリトランザクションクォータの適用を無効にする。いくつかの実施形態では、メモリトランザクションクォータの無効化は、メモリトランザクションの更なるカウントを無効にすること、メモリトランザクションクォータを無限又は他の不釣り合いに高い値に設定すること、メモリトランザクションクォータが使い果たされたときを無視すること、及び/又は他のアクションなどのアクションによって効果的に実装される。同様に、いくつかの実施形態では、マルチコアプロセッサ上で実行されている唯一のタスクがセーフティクリティカルとして分類されないタスク(例えば、非周期的タスク130など)である場合にカーネルが制限なくメモリトランザクションを実行し続けることができるように、レート制限並びに計算エンジンメモリトランザクションクォータもまたバイパス(中断又は無効化)されることができる。
【0038】
個別のAIコプロセッサの場合、メモリアーキテクチャは、一般に、個別のAIコプロセッサがそれ自体のローカル高速メモリ(GPUによって実装されるAIコプロセッサの場合、そのようなメモリは、グラフィックスダブルデータレート(GDDR)として知られている)を備えることができるという点で、統合AIコプロセッサの場合とは異なることができることを理解されたい。個別のAIコプロセッサによる直接メモリアクセス(DMA)は、メモリのプロセスと競合し、干渉を引き起こす計算プロセッサの方法であり得る。更に、AIコプロセッサ上で実行されているカーネルもまた、ローカル高速メモリにアクセスするために互いに競合し得ることを理解されたい。
【0039】
図4及び図4Aは、AIコプロセッサメモリトランザクション調整のための別の例示的な方法400を実装するフローチャート図である。図3の方法に関して本明細書で説明される特徴及び要素は、本明細書で説明される他の実施形態のいずれかの要素と共に、それと組み合わせて、又はそれと置換して使用されることができ、その逆も可能であることを理解されたい。更に、図3に記載されている実施形態の要素の機能、構造、及び他の説明は、本明細書に記載されている図及び/又は実施形態のいずれかにわたって同様又は同様に命名又は説明された要素に適用されることができ、その逆も可能であることを理解されたい。
【0040】
一実施形態では、方法400は、AI推論コプロセッサ(例えば、計算エンジン)上でのカーネルの実行に関するプロセスである。いくつかの実施形態では、方法400の1つ以上の要素は、カーネル自体内のコードとして実装されてもよい。本方法は、AIコプロセッサ上で1つ以上のカーネルを実行するためのメモリトランザクションクォータをマルチコアプロセッサから取得する410から始まる。本方法は、420に進み、タイミングウィンドウ反復中にAIコプロセッサ上で1つ以上のカーネルを実行する。カーネルは、それらのメモリトランザクションクォータが完了しない限り、ウィンドウ中に実行される。したがって、本方法は、1つ以上のカーネルによってメモリトランザクションを監視及びカウントすることと、メモリトランザクションが発生するとメモリトランザクションクォータを更新することとを含むことができる。したがって、方法は、430に進み、1つ以上のカーネルを実行するためのメモリトランザクションクォータが使い果たされているかどうかを判定する。430における判定が「いいえ」であり、カーネルがまだ完了するために処理を必要とする(431においてチェックされる)場合、本方法は、420に戻り、カーネルの実行を継続する。そうである場合、本方法は、440に進み、1つ以上のカーネルの実行を中断する。カーネルは、それらのメモリトランザクションクォータが補充されるか、又はカーネルのメモリトランザクションクォータの適用が無効にされない限り、タイミングウィンドウ反復の終了まで保留されたままである。例えば、メモリトランザクションクォータは、マルチコアプロセッサ上で動作しているタスクがそのメモリトランザクションクォータのいくらかの残高が残っている状態で実行を完了し、その残りの残高がカーネルのメモリトランザクションクォータに転送されるときに補充されてもよい。メモリトランザクションクォータが有効であるが使い果たされた状態にある場合、本方法は、440に戻り、ここで、1つ以上のカーネルの実行は中断されたままである。メモリトランザクションクォータが無効化又は補充されている場合、本方法は、420に戻り、カーネルの実行を継続する。
【0041】
図4Aは、420における1つ以上のカーネルの実行中のレート制限の実装形態を示している。421において、本方法は、メモリバスに対して行われるメモリトランザクション実行のレートを選択的に調整する。上述したように、レート制限は、AIコプロセッサによって実行されるカーネルがメモリにアクセスする(すなわち、メモリトランザクションを実行する)ことができるレートを選択的に調整又はスロットル調整するように動作する。カーネルが自発的にメモリトランザクションを実行することを許可する代わりに、レート制限は、AIコプロセッサとメモリバス及び/又はメモリとの間でメモリトランザクションが実行されるレートを制限又は限定する。例えば、レート制限は、メモリトランザクションを1Gバイト/秒の可能なレートから下げて100Mバイト/秒のレートに制限するように調整することができる。レート制限は、バスモニタと連動して、又はバスモニタから独立して機能することができる。422において、本方法は、レート制限がバイパスされることができるか否かを判定する。そうでない場合、本方法は、421に戻り、レート制限を継続する。そうではなく、例えば上述したように、AIコプロセッサ上で実行されているカーネルがタイミングウィンドウ反復中に現在実行されている唯一のアクティブプロセスである場合、プロセスは、423に進むことができ、そこでレート制限がバイパスされる(例えば、無効にされる)ことができ、カーネルは、制限なくメモリトランザクションを実行することが可能にされる。同様に、いくつかの実施形態では、カーネルがAIコプロセッサ上で実行されており、セーフティクリティカルとして分類されていないタスク(例えば、非周期的タスク130又は低DALタスクなど)のみがプロセッサ上で実行されている場合、レート制限もまたバイパスされることができ、カーネルは、制限なくメモリトランザクションを実行することが可能にされる。また、上述したように、レート制限はまた、任意にプロセッサ上で実装されてもよい。すなわち、図4Aのプロセスは、プロセッサによって実装されるタスクによってメモリトランザクションをレート制限するために適用するように一般化されることができる。そのような方法は、AIコプロセッサ上で実行されているプロセスがDAL A、DAL B、又はDAL Cなどの高いセーフティクリティカルなDALを有するが、プロセッサ上で実行されているタスクがDAL D又はDAL Eなどの比較的低いDALであるアビオニクスアプリケーションに利用されることができる。
【0042】
例示的な実施形態
実施例1は、コンピューティングシステムであって、少なくとも1つのコアを備えるプロセッサと、1つ以上のカーネルを実行するように構成された計算プロセッサと、プロセッサ及び計算プロセッサに結合されたメモリと、を備え、コンピューティングシステムが、プロセッサの第1のコア上で実行される少なくとも第1のタスクのセットに少なくとも1つのタスクメモリトランザクションクォータを割り当てるように構成され、計算プロセッサ上で1つ以上のカーネルを実行するための少なくとも1つの計算プロセッサメモリトランザクションクォータを割り当て、第1のタイミングウィンドウ反復内で、第1のタスクのセットと、1つ以上のカーネルであって、1つ以上のカーネルが、計算プロセッサ上で1つ以上のカーネルを実行するための少なくとも1つの計算メモリトランザクションクォータが使い果たされるまで、第1のタイミングウィンドウ反復中に実行される1つ以上のカーネルとを実行し、第1のタスクのセットがプロセッサ上で実行されているときの1つ以上のカーネルによるメモリへのメモリトランザクションアクセスのレートを調整するように構成された、コンピューティングシステムを含む。
【0043】
実施例2は、少なくとも第1のタスクのセットが、プロセッサの第1のコアで実行される第1のタスクのセットと、プロセッサの第2のコアで実行される第2のタスクのセットとを含み、少なくとも1つのタスクメモリトランザクションクォータを割り当てるために、コンピューティングシステムが、プロセッサの第1のコア上で実行される第1のタスクのセットに第1のメモリトランザクションクォータを割り当て、プロセッサの第2のコア上で実行される第2のタスクのセットに第2のメモリトランザクションクォータを割り当てるように構成された、実施例1のシステムを含む。
【0044】
実施例3は、少なくとも第1のタスクのセットのうちの1つ以上のタスクの実行が第1のタイミングウィンドウ反復の終了前に第1のコア上で完了すると、コンピューティングシステムが、第1のコアに割り当てられた少なくとも1つのタスクメモリトランザクションクォータの任意の残りの残高の少なくとも一部を少なくとも1つの計算プロセッサメモリトランザクションクォータに転送し、第1のタイミングウィンドウの終了前の少なくとも第1のタスクのセットの全ての実行の完了に基づいて、コンピューティングシステムが、1つ以上のカーネルによるメモリトランザクションアクセスのレートの調整を中断し、計算エンジンによるメモリへの無制限のアクセスを可能にするために、1つ以上のカーネルへの計算プロセッサメモリトランザクションクォータの適用を無効にする、実施例1~2のいずれかのコンピューティングシステムを含む。
【0045】
実施例4は、プロセッサ及び計算プロセッサに結合されたメモリバスを更に備え、メモリが、メモリバスによってプロセッサ及び計算プロセッサに結合される、実施例1~3のいずれかのコンピューティングシステムを含む。
【0046】
実施例5は、プロセッサによって実行されるスケジューラを更に備え、スケジューラが、少なくとも1つのタスクメモリトランザクションクォータ及び少なくとも1つの計算プロセッサメモリトランザクションクォータの割り当てを実行する、実施例1~4のいずれかのコンピューティングシステムを含む。
【0047】
実施例6は、スケジューラが、プロセッサによって実行されるオペレーティングシステムの構成要素である、実施例5のコンピューティングシステムを含む。
【0048】
実施例7は、計算プロセッサが、人工知能(AI)コプロセッサを実装するように構成され、1つ以上のカーネルが、少なくとも1つのディープニューラルネットワーク(DNN)プロセス、1つ以上の行列演算、又は点ごとの数学的演算子を含む、実施例1~6のいずれかのコンピューティングシステムを含む。
【0049】
実施例8は、少なくとも1つのカーネルが、ヒューマンマシンインターフェース(HMI)上に表示するためのグラフィックスを準備及び/又はレンダリングするように構成された、実施例1~7のいずれかのコンピューティングシステムを含む。
【0050】
実施例9は、第1のタスクのセット及び第2のタスクのセットが、周期的タスク又は非周期的タスクのうちの少なくとも1つを含む、実施例1~8のいずれかのコンピューティングシステムを含む。
【0051】
実施例10は、メモリトランザクションを監視及びカウントするように構成された1つ以上のバスモニタを備え、コンピューティングシステムが、1つ以上のバスモニタによって監視されるメモリトランザクションに基づいて、少なくとも1つのタスクメモリトランザクションクォータ及び計算プロセッサを選択的に減少させる、実施例1~9のいずれかのシステムを含む。
【0052】
実施例11は、プロセッサ及び計算プロセッサが、各々、同じタイミングウィンドウの間に並行プロセスを実行する、実施例1~10のいずれかの方法を含む。
【0053】
実施例12は、共通メモリを共有するプロセッサ及び計算プロセッサを備えるシステムにおいてメモリ利用を管理するための方法であって、少なくとも1つのタスクメモリトランザクションクォータを、プロセッサの第1のコア上で実行される少なくとも第1のタスクのセットに割り当てることと、計算プロセッサ上で1つ以上のカーネルを実行するための少なくとも1つの計算プロセッサメモリトランザクションクォータを割り当てることと、第1のタイミングウィンドウ反復内で、第1のタスクのセットと、1つ以上のカーネルであって、1つ以上のカーネルが、計算プロセッサ上で1つ以上のカーネルを実行するための少なくとも1つの計算プロセッサメモリトランザクションクォータが使い果たされるまで、第1のタイミングウィンドウ反復中に実行される1つ以上のカーネルとを実行することと、第1のタスクのセットがプロセッサ上で実行されているときの1つ以上のカーネルによるメモリへのメモリトランザクションアクセスのレートを調整することと、を含む、方法を含む。
【0054】
実施例13は、少なくとも第1のセットのタスクが、プロセッサの第1のコア上で実行される第1のセットのタスクと、プロセッサの第2のコア上で実行される第2のセットのタスクとを含み、方法が、プロセッサの第1のコア上で実行される第1のセットのタスクに第1のメモリトランザクションクォータを割り当て、プロセッサの第2のコア上で実行される第2のセットのタスクに第2のメモリトランザクションクォータを割り当てることを更に含む、実施例12の方法を含む。
【0055】
実施例14は、第1のタイミングウィンドウ反復の終了前に少なくとも第1のタスクのセットのうちの1つ以上のタスクの実行が第1のコア上で完了すると、少なくとも1つのタスクメモリトランザクションクォータの任意の残りの残高の少なくとも一部を計算プロセスメモリトランザクションクォータに転送することと、第1のタイミングウィンドウの終了前に少なくとも第1のタスクのセットの全ての実行が完了したことに基づいて、1つ以上のカーネルのメモリトランザクションアクセスのレートの調整を中止し、計算エンジンによるメモリへの無制限のアクセスを可能にするために、1つ以上のカーネルへの計算プロセッサメモリトランザクションクォータの適用を無効にすることと、を更に含む、実施例11~13のいずれかの方法を含む。
【0056】
実施例15は、プロセッサ及び計算プロセッサが、各々、同時タイミングウィンドウ反復中にプロセスを実行する、実施例12~14のいずれかの方法を含む。
【0057】
実施例16は、プロセッサによってスケジューラを実行することを更に含み、スケジューラが、少なくとも1つのタスクメモリトランザクションクォータ及び計算プロセッサメモリトランザクションクォータの割り当てを実行する、実施例12~15のいずれかの方法を含む。
【0058】
実施例17は、スケジューラが、プロセッサによって実行されるオペレーティングシステムの構成要素である、実施例16の方法を含む。
【0059】
実施例18は、計算プロセッサが、人工知能(AI)コプロセッサを実装するように構成され、1つ以上のカーネルが、少なくとも1つのディープニューラルネットワーク(DNN)プロセス、1つ以上の行列演算、又は点ごとの数学演算子を含む、実施例12~17のいずれかの方法を含む。
【0060】
実施例19は、少なくとも第1のタスクのセット及び1つ以上のカーネルによって実行されるメモリトランザクションを監視及びカウントすることと、メモリトランザクションを監視及びカウントすることに基づいて、少なくとも1つのタスクメモリトランザクション及び計算プロセッサメモリトランザクションクォータを選択的に減少させることと、を更に含む、実施例12~18のいずれかの方法を含む。
【0061】
実施例20は、メモリが、メモリバスによってプロセッサ及び計算プロセッサに結合される、実施例12~19のいずれかの方法を含む。
【0062】
様々な代替の実施形態では、本開示を通して説明されるシステム及び/又はデバイス要素、方法ステップ、又は例示的な実装形態(例えば、そのようなコンピューティングシステム、端末、HMI、シングルコアプロセッサ、マルチコアプロセッサ、CPU、処理コア、AIコプロセッサ、推論エンジン、計算エンジン、メモリ、キャッシュ、オペレーティングシステム、スケジューラ、インターフェース、メモリバス、バスモニタ、レートリミッタ、又はこれらの任意のコントローラ、プロセッサ、回路、若しくはサブ部品)は、メモリに結合され、それらの要素、プロセス、又は実施例を実現するためにコードを実行するプロセッサを備える1つ以上のコンピュータシステム、フィールドプログラマブルゲートアレイ(FPGA)、又は同様のデバイスを使用して少なくとも部分的に実装されてもよく、当該コードは、非一時的ハードウェアデータ記憶デバイスに記憶される。AIコプロセッサは、CPUコアを有するシリコンに統合されることができ、又はそれ自体のメモリを有する個別の部品とすることができる。本明細書に記載の戦略は、システムメモリ又はAIコプロセッサのローカルメモリのいずれかに適用されることができる。したがって、本開示の他の実施形態は、そのようなコンピュータシステムによって実装されると、それらが本明細書に記載の実施形態を実装することを可能にするコンピュータ可読媒体に常駐するプログラム命令を備える要素を含むことができる。本明細書で使用される場合、「コンピュータ可読媒体」という用語は、非一時的な物理的形態を有する有形のメモリ記憶デバイスを指す。そのような非一時的な物理的形態は、パンチカード、磁気ディスク又はテープ、任意の光学データ記憶システム、フラッシュ読み出し専用メモリ(ROM)、不揮発性ROM、プログラマブルROM(PROM)、消去可能プログラマブルROM(E-PROM)、ランダムアクセスメモリ(RAM)、又は物理的、有形の形態を有する永続的、半永続的、若しくは一時的なメモリ記憶システム若しくはデバイスの任意の他の形態などのコンピュータメモリデバイスを含むことができるが、これらに限定されない。プログラム命令は、コンピュータシステムプロセッサ及び超高速集積回路(VHSIC)ハードウェア記述言語(VHDL)などのハードウェア記述言語によって実行されるコンピュータ実行可能命令を含むが、これらに限定されない。
【0063】
本明細書で使用される場合、コンピューティングシステム、端末、HMI、シングルコアプロセッサ、マルチコアプロセッサ、CPU、処理コア、AIコプロセッサ、推論エンジン、計算エンジン、メモリ、キャッシュ、オペレーティングシステム、スケジューラ、インターフェース、メモリバス、バスモニタ、レートリミッタなどの用語は、アビオニクス及び輸送産業の当業者によって理解されるであろう要素の名称を指し、米国特許法第112条(f)を行使する目的でノンス語又はノンス用語として本明細書では使用されない。
【0064】
本明細書では特定の実施形態が示され、記載されているが、当業者には、示される特定の実施形態の代わりに、同一の目的を達成することが予測される任意の構成が用いられ得ることが理解されよう。本出願は、提示された実施形態の任意の改変又は変形物を包含することを意図している。したがって、実施形態は、特許請求の範囲及びその均等物によってのみ限定されることが明らかに意図されている。
図1
図2
図3
図4
図4A
【外国語明細書】