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

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

▶ ネクスト シリコン リミテッドの特許一覧

<>
  • 特開-メモリ意識型コンテキスト切り替え 図1
  • 特開-メモリ意識型コンテキスト切り替え 図2
  • 特開-メモリ意識型コンテキスト切り替え 図3
  • 特開-メモリ意識型コンテキスト切り替え 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024016010
(43)【公開日】2024-02-06
(54)【発明の名称】メモリ意識型コンテキスト切り替え
(51)【国際特許分類】
   G06F 11/34 20060101AFI20240130BHJP
   G06F 12/02 20060101ALI20240130BHJP
   G06F 9/50 20060101ALI20240130BHJP
【FI】
G06F11/34 152
G06F12/02 510A
G06F9/50 150Z
【審査請求】未請求
【請求項の数】24
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023120703
(22)【出願日】2023-07-25
(31)【優先権主張番号】17/872,059
(32)【優先日】2022-07-25
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520039124
【氏名又は名称】ネクスト シリコン リミテッド
【氏名又は名称原語表記】Next Silicon Ltd
【住所又は居所原語表記】33 Derech Yitshak Rabin Street, Givatayim, Israel
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】ラズ、エラド
(72)【発明者】
【氏名】タヤリ、イラン
【テーマコード(参考)】
5B042
5B160
【Fターム(参考)】
5B042GA23
5B042GA33
5B042MA08
5B042MA14
5B042MC25
5B042MC33
5B160AA14
(57)【要約】      (修正有)
【課題】複数のスレッドを実行させる性能を向上するシステム及び方法を提供する。
【解決手段】複数のソフトウェアスレッドを実行するシステムは、複数の処理回路と、複数の処理回路に接続され、各メモリ領域が処理回路の少なくとも1つに関連付けられた複数のメモリ領域と、複数の処理回路に接続された少なくとも1つのハードウェアプロセッサと、を含む。ハードウェアプロセッサは、複数の反復のそれぞれにおいて、複数の処理回路がソフトウェアスレッドを実行する間に、各スレッドに対し、スレッドの実行時に実行されたメモリ領域の少なくともいくつかに対する複数のメモリアクセスを示す、複数のスレッド統計値を収集し、少なくとも1つのスレッドに対して、複数のメモリ領域の内の優先メモリ領域を特定するために、スレッド統計値を含む解析を実行し、優先メモリ領域に関連付けられた少なくとも1つの処理回路に、少なくとも1つのスレッドを実行させる。
【選択図】図2
【特許請求の範囲】
【請求項1】
複数のソフトウェアスレッドを実行するシステムであって、
複数の処理回路と、
前記複数の処理回路に接続されると共に、各メモリ領域が前記複数の処理回路の少なくとも1つに関連付けられた複数のメモリ領域と、
前記複数の処理回路に接続された少なくとも1つのハードウェアプロセッサと、
を備え、
前記少なくとも1つのハードウェアプロセッサが、複数の反復のそれぞれにおいて、
前記複数の処理回路が前記複数のソフトウェアスレッドを実行する間に、前記複数のソフトウェアスレッドの1以上のソフトウェアスレッドのそれぞれについて、前記ソフトウェアスレッドの実行時に実行された前記複数のメモリ領域の少なくともいくつかに対する複数のメモリアクセスを示す、複数のスレッド統計値を収集し、
前記1以上のソフトウェアスレッドの少なくとも1つのソフトウェアスレッドに対して、前記複数のメモリ領域のうちの優先メモリ領域を特定するために、前記複数のスレッド統計値を含む解析を実行し、
前記優先メモリ領域に関連付けられた少なくとも1つの処理回路のうちの1つを、前記少なくとも1つのソフトウェアスレッドを実行するように構成する、
ように構成される、システム。
【請求項2】
前記複数の処理回路は、中央処理ユニット(CPU)、マルチコアプロセッシングユニットのコア(CPUコア)、データ処理ユニット(DPU)、グラフィック処理ユニット(GPU)、マイクロコントローラユニット(MCU)、加速処理ユニット(APU)、フィールドプログラマブルゲートアレイ(FPGA)、粗粒度再構成可能アーキテクチャ(CGRA)、ニューラルネットワークアクセラレータ、インテリジェンス処理ユニット(IPU)、特定用途向け集積回路(ASIC)、量子コンピュータ、複数の再構成可能なデータルーティング接合によって接続された複数の再構成可能な論理素子から構成される再構成可能な相互接続コンピューティンググリッド、及び再構成可能な相互接続コンピューティンググリッドの一部、のうちの少なくとも1つを含む、
請求項1に記載のシステム。
【請求項3】
前記複数の処理回路の少なくとも1つは、前記少なくとも1つのハードウェアプロセッサに統合されている、請求項1に記載のシステム。
【請求項4】
前記複数のメモリ領域は、
前記複数の処理回路のうちの少なくとも1つに電気的に接続されたメモリコンポーネントと、
前記複数の処理回路のうちの他の少なくとも1つに接続された他のメモリコンポーネントのキャッシュメモリであって、前記他の少なくとも1つの処理回路と電気的に結合されているキャッシュメモリと、
前記複数の処理回路の他の少なくとも1つに、バス又は少なくとも1つのデジタル通信ネットワークインタフェースを介して接続された、さらに他のメモリコンポーネントと、
再構成可能な相互接続コンピューティンググリッドの一部である、再構成可能相互接続メモリグリッドの少なくとも一部と、
のうちの少なくとも1つを含む、請求項1に記載のシステム。
【請求項5】
前記複数のメモリ領域のそれぞれは、少なくとも1つのメモリアクセスメトリックに従って前記複数の処理回路の前記少なくとも1つに関連付けられる、請求項1に記載のシステム。
【請求項6】
前記少なくとも1つのメモリメトリックは、アクセス待ち時間、スループット、キャッシュ利用メトリック、メモリ容量、トポロジー距離、メモリ割り当てオーナシップ、メモリコヒーレンスを含むメモリメトリック群の少なくとも1つを含む、請求項5に記載のシステム。
【請求項7】
前記優先メモリ領域は、前記少なくとも1つのソフトウェアスレッドによって使用されるプログラムデータを含み、
前記少なくとも1つのソフトウェアスレッドの前記複数のスレッド統計値を含む前記解析の実行が、前記優先メモリ領域が前記少なくとも1つのソフトウェアスレッドによって使用されるプログラムデータを含むことを識別することをさらに含む、請求項1に記載のシステム。
【請求項8】
前記少なくとも1つのハードウェアプロセッサは、
前記優先メモリ領域にアクセスする、前記複数のソフトウェアスレッドのうちの2以上のソフトウェアスレッドを識別し、
前記優先メモリ領域に関連付けられた前記少なくとも1つの処理回路の少なくともいくつかを、前記2以上のソフトウェアスレッドを実行するように構成する
ようにさらに構成される、請求項1に記載のシステム。
【請求項9】
前記少なくとも1つのソフトウェアスレッドの前記複数のスレッド統計値を含む前記解析の実行は、前記1以上のソフトウェアスレッドの少なくとも1つの他のスレッドの、少なくとも1つの他の複数のスレッド統計値を用いることをさらに含む、請求項1に記載のシステム。
【請求項10】
前記少なくとも1つのソフトウェアスレッドの前記複数のスレッド統計値を含む前記解析の実行は、前記複数のソフトウェアスレッドの実行中に収集される複数の制御フロー統計値を利用することをさらに含む、請求項1に記載のシステム。
【請求項11】
前記少なくとも1つのソフトウェアスレッドの前記複数のスレッド統計値を含む前記解析の実行は、前記複数のソフトウェアスレッドの実行中に収集される前記少なくとも1つのソフトウェアスレッドの少なくとも1つの状態値を使用することをさらに含む、請求項1に記載のシステム。
【請求項12】
前記少なくとも1つのハードウェアプロセッサは、前記解析の実行に応答して、少なくともいくつかのアプリケーションデータを、前記複数のメモリ領域の1つのメモリ領域から前記複数のメモリ領域の他のメモリ領域へ移動するようにさらに構成される、請求項1に記載のシステム。
【請求項13】
前記少なくともいくつかのアプリケーションデータは、前記複数のソフトウェアスレッドの少なくとも1つの追加スレッドによってアクセスされ、
前記他のメモリ領域は前記優先メモリ領域であり、
前記少なくとも1つのハードウェアプロセッサは、前記優先メモリ領域に関連付けられた前記少なくとも1つの処理回路を、前記少なくとも1つの追加スレッドを実行するよう構成するようにさらに構成される、請求項12に記載のシステム。
【請求項14】
前記複数のソフトウェアスレッドは、それぞれがソフトウェアプログラムの計算カーネルの一部を実行し、前記計算カーネルは前記ソフトウェアプログラムのアプリケーションデータにアクセスするための複数のループ反復を含み、前記複数のソフトウェアスレッドのそれぞれが、前記複数のループ反復のいくつかを実行して、それにより前記アプリケーションデータの少なくともいくつかにアクセスするようになっており、
前記少なくとも1つのハードウェアプロセッサは、前記計算カーネルを識別し、追加的又は代替的に前記アプリケーションデータを識別するために、追加的又は代替的に前記複数のソフトウェアスレッドのコードの他の解析を実行することにより、前記優先メモリ領域を特定するようにさらに構成される、請求項1に記載のシステム。
【請求項15】
前記解析は、前記計算カーネルの直前の命令の実行の後、かつ前記計算カーネルの最初の命令の実行の前に行われる、請求項14に記載のシステム。
【請求項16】
前記少なくとも1つのソフトウェアスレッドは、前記複数のスレッド統計値を収集することを目的とした、複数の遠隔測定コンピュータ命令を含む、請求項1に記載のシステム。
【請求項17】
前記複数の処理回路の少なくとも1つは、前記複数のスレッド統計値を収集することを目的とした、遠隔測定回路を含む、請求項1に記載のシステム。
【請求項18】
前記少なくとも1つのハードウェアプロセッサは、
前記複数のソフトウェアスレッドの少なくとも1つの追加のソフトウェアスレッドに各々が関連付けられると共に、関連付けられた前記追加のソフトウェアスレッドを実行したときのメモリ例外量を示す、複数のメモリアクセス例外カウンタにアクセスし、
前記解析を実行することは、前記複数のメモリアクセス例外カウンタを使用することをさらに含む
ようにさらに構成される、請求項1に記載のシステム。
【請求項19】
前記少なくとも1つのハードウェアプロセッサは、前記複数の反復のうちの特定の反復において、前記優先メモリ領域に関連する前記少なくとも1つの処理回路のうちの1つを構成し、
前記少なくとも1つのハードウェアプロセッサは、前記特定の反復の後に実行される、前記複数の反復のうちの他の反復において、
関連付けられた前記メモリアクセス例外カウンタが例外閾値を超える、少なくとも1つのソフトウェアスレッドを特定し、
前記複数のメモリ領域のうちの新規の優先メモリ領域を特定し、
前記他の優先メモリ領域に関連付けられた前記少なくとも1つの処理回路を、前記少なくとも1つのソフトウェアスレッドを実行するよう構成する
ようにさらに構成された、請求項18に記載のシステム。
【請求項20】
前記複数のスレッド統計値は、メモリアクセスの待ち時間、メモリ領域のスループット、メモリ領域へのメモリアクセス量、前記複数のソフトウェアスレッドの1つのスレッドによるメモリ領域へのメモリアクセス量、前記複数のソフトウェアスレッドのサブセットによる、メモリ領域へのメモリアクセス量、キャッシュミス量及びトランスレーションルックアサイドバッファミス量、のうちの少なくとも1つを含む、請求項1に記載のシステム。
【請求項21】
前記少なくとも1つのハードウェアプロセッサは、
前記複数の処理回路の第1の処理回路のために、メモリ属性の第1のセットに従って、前記複数のメモリ領域の少なくとも第1のサブセットをマッピングするための第1のページテーブルを生成し、
前記複数の処理回路の第2の処理回路のために、メモリ属性の第2のセットに従って、前記複数のメモリ領域の少なくとも第2のサブセットをマッピングするための第2のページテーブルを生成する
ようにさらに構成され、
前記複数のスレッド統計値の少なくとも第1の統計値は、前記第1のページテーブルにアクセスしたときの少なくとも1つの例外に従って収集され、
前記複数のスレッド統計値の少なくとも第2の統計値は、前記第2のページテーブルにアクセスしたときの少なくとも1つの他の例外に従って収集される
請求項1に記載のシステム。
【請求項22】
前記第1の処理回路が、前記第2の処理回路である、請求項21に記載のシステム。
【請求項23】
複数の反復のそれぞれにおいて、
複数の処理回路が複数のソフトウェアスレッドを実行する間に、前記複数のソフトウェアスレッドの1以上のソフトウェアスレッドのそれぞれについて、前記ソフトウェアスレッドの実行時に複数のメモリ領域の少なくともいくつかへの複数のメモリアクセスを示す、複数のスレッド統計値を収集し、前記複数のメモリ領域は前記複数の処理回路に接続され、各メモリ領域は前記複数の処理回路のうちの少なくとも1つに関連付けられており、
前記1以上のソフトウェアスレッドの少なくとも1つのソフトウェアスレッドに対して、前記複数のメモリ領域の内の優先メモリ領域を特定するために、前記複数のスレッド統計値を含む解析を実行し、
前記優先メモリ領域に関連付けられた少なくとも1つの処理回路を、前記少なくとも1つのソフトウェアスレッドを実行するよう構成する
ことを含む、複数のソフトウェアスレッドを実行する方法。
【請求項24】
複数のソフトウェアスレッドを実行するソフトウェアプログラム製品であって、
非一時的コンピュータ可読記憶媒体と、
プログラム命令であって、複数の反復のそれぞれにおいて、
複数の処理回路が前記複数のソフトウェアスレッドを実行する間に、前記複数のソフトウェアスレッドの1以上のソフトウェアスレッドのそれぞれについて、前記ソフトウェアスレッドの実行時に複数のメモリ領域の少なくともいくつかへの複数のメモリアクセスを示す、複数のスレッド統計値を収集し、前記複数のメモリ領域は前記複数の処理回路に接続され、各メモリ領域は前記複数の処理回路の内の少なくとも1つに関連付けられており、
前記1以上のソフトウェアスレッドの少なくとも1つのソフトウェアスレッドに対して、前記複数のメモリ領域の内の優先メモリ領域を特定するために、前記複数のスレッド統計値を含む解析を実行し、
前記優先メモリ領域に関連付けられた少なくとも1つの処理回路を前記少なくとも1つのソフトウェアスレッドを実行するよう構成する、プログラム命令と、
を含み、
前記プログラム命令は、少なくとも1つのコンピュータ化されたプロセッサによって前記非一時的コンピュータ可読記憶媒体から実行される、ソフトウェアプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は2022年7月25日出願の米国特許出願第17/872,059号の優先権の利益を主張し、その内容は参照によりその全体が本明細書に組み込まれる。
発明の背景
【0002】
本開示に記載のいくつかの実施形態は、コンピュータ化システムに関し、より具体的には、これに限るものではないが、コンピュータ化システムのランタイム構成に関する。
【0003】
簡潔にするために、以後、特に断らない限り、システムという用語はコンピュータ化されたシステムを意味するものとし、この2つの用語を互換的に使用する。
【背景技術】
【0004】
コンピュータ化システムの性能向上への要求は、例えば、スループットとして知られるある時間間隔内におけるシステムによるタスク実行量の増加により、継続的に増加している。システム性能の指標となり得る別のメトリックとしては、システム待ち時間(レイテンシ)、すなわちタスク開始前に、あるいはタスク完了までにタスクが遅延する時間の大きさ、がある。システム性能は、システムのスループットの向上、及び追加的又は代替的にシステムの待ち時間の短縮により、向上可能である。
【0005】
コンピュータプログラミングにおいて、ソフトウェアスレッドはスケジューラによって管理可能な実行単位である。一般的に、ソフトウェアスレッドは、他のコンピュータ命令とは独立して実行可能な、コンピュータ命令のシーケンスである。例えば、ソフトウェアスレッドは、別のソフトウェアスレッドにおいて実行されるソフトウェアプログラムの他のコンピュータ命令とは独立して実行可能な、ソフトウェアプログラムのコンピュータ命令のシーケンスである。
【0006】
簡潔にするために、以後、特に断らない限り、スレッドという用語は「ソフトウェアスレッド」を意味するものとし、この2つの用語を互換的に使用する。
【0007】
システム性能を向上させるために、2以上の処理回路を備えて、2以上のスレッドを同時に実行可能とするシステムもある。したがって、そのようなシステムが複数のスレッドを実行するときは、システムの複数の処理回路間にスレッドが配分され得る。
【0008】
複数の処理回路を備えるシステムの中には、更に複数のメモリ領域を備えるものもある。コンピュータ設計において不均一メモリアクセス(Non-Uniform Memory Access:NUMA)とは、1以上の処理回路のうちのある処理回路からの、1以上のメモリ領域内の第1メモリ領域への第1アクセス時間が、当該1以上のメモリ領域内の第2メモリ領域への、その処理回路の第2アクセス時間とは異なるという、コンピュータ設計パラダイムのことを言う。いくつかのシステムにおいては、第1アクセス時間と第2アクセス時間の差は、処理回路に対する第1メモリ領域の物理的位置に依存する。いくつかのシステムにおいては、第1アクセス時間と第2アクセス時間の差は、第1メモリ領域と第2メモリ領域へのメモリアクセスメトリックに依存する。そのようないくつかのシステムにおいて、複数のメモリ領域のそれぞれは、例えば、1以上の処理回路に電気的に結合されることにより、複数の処理回路の1以上に関連付けられる。メモリ領域は1以上の他のトポロジー的基準、例えば、メモリ領域と処理回路との間の物理的距離、によって処理回路に関連付けられてもよい。追加又は代替として、メモリ領域は、1以上のメモリアクセスメトリック、例えば、処理回路からメモリ領域へのメモリアクセスの待ち時間、に従って、処理回路に関連付けられてもよい。メモリアクセスメトリックの他の例としては、メモリ帯域幅(転送速度)、及び、メモリクロック周波数並びに行アドレスから列アドレスへの遅延などのメモリモジュールタイミングパラメータがある。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本開示に記載のいくつかの実施形態の目的は、複数のスレッドを実行するシステム及び方法を提供することである。そのような実施形態において、システムの複数のメモリ領域の1以上への複数のメモリアクセスを示し、かつ、システムの複数の処理回路が複数のスレッドを実行する間に収集される複数の統計値が解析されて、複数のスレッドの1以上に対する、複数のメモリ領域の内の優先メモリ領域を特定し、当該優先メモリ領域に関連付けられた複数の回路のうちの1以上の処理回路が1以上のスレッドを実行するように構成される。優先メモリに関連付けられた1以上の処理回路を構成して1以上のスレッドを実行することにより、複数の追加のメモリアクセスの性能を高め、例えば、複数の追加のメモリアクセスの合計待ち時間を減少させ、かつ追加的又は代替的に、複数の追加のメモリアクセスの総帯域幅を増加させて、複数のスレッドを実行するときのシステムの性能を向上させる。追加的又は代替的に、複数の追加のメモリアクセスの性能を向上させることは、例えばキャッシュ使用ポリシーに従って、キャッシュに対する要求を分配してキャッシュ使用率を向上させることを含む。
【課題を解決するための手段】
【0010】
前述及びその他の目的は、独立請求項の特徴によって達成される。さらなる実装形態は、従属請求項、詳細な説明、及び図面から明らかである。
【0011】
第1の態様によれば、複数のソフトウェアスレッドを実行するためのシステムは、複数の処理回路と、複数の処理回路に接続された複数のメモリ領域であって各メモリ領域が複数の処理回路の少なくとも1つに関連付けられた複数のメモリ領域と、複数の処理回路に接続された少なくとも1つのハードウェアプロセッサとを備える。この少なくとも1つのハードウェアプロセッサは、複数の反復のそれぞれにおいて、複数の処理回路が複数のソフトウェアスレッドを実行する間に、複数のソフトウェアスレッドのうちの1以上のソフトウェアスレッドのそれぞれについて、ソフトウェアスレッドの実行時に実行された複数のメモリ領域の少なくともいくつかに対する複数のメモリアクセスを示す複数のスレッド統計値を収集し、1以上のソフトウェアスレッドの少なくとも1つのソフトウェアスレッドに対して、複数のスレッド統計値から成る解析を実行して複数のメモリ領域のうちの優先メモリ領域を特定し、優先メモリ領域に関連付けられた少なくとも1つの処理回路の1つを、少なくとも1つのソフトウェアスレッドを実行するように構成するように構成される。
【0012】
第2の態様によれば、複数のソフトウェアスレッドを実行する方法は、複数の反復のそれぞれにおいて、複数の処理回路が複数のソフトウェアスレッドを実行する間に、複数のソフトウェアスレッドの1以上のソフトウェアスレッドのそれぞれについて、ソフトウェアスレッドの実行時に複数のメモリ領域の少なくともいくつかへの複数のメモリアクセスを示す複数のスレッド統計値を収集することを含み、複数のメモリ領域は複数の処理回路に接続され、各メモリ領域は複数の処理回路の少なくとも1つに関連付けられ、1以上のソフトウェアスレッドの少なくとも1つのソフトウェアスレッドに対して、複数のメモリ領域の内の優先メモリ領域を特定するために、複数のスレッド統計値から成る解析を実行し、少なくとも1つのソフトウェアスレッドを実行するために、優先メモリ領域に関連付けられた少なくとも1つの処理回路の1つを構成することを含む。
【0013】
第3の態様によれば、複数のソフトウェアスレッドを実行するソフトウェアプログラム製品は、非一時的コンピュータ可読記憶媒体と、プログラム命令とを含む。このプログラム命令は、複数の反復のそれぞれにおいて、複数の処理回路が複数のソフトウェアスレッドを実行する間に、複数のソフトウェアスレッドの1以上のソフトウェアスレッドのそれぞれについて、ソフトウェアスレッドの実行時に複数のメモリ領域の少なくともいくつかへの複数のメモリアクセスを示す、複数のスレッド統計値を収集することを含み、複数のメモリ領域は複数の処理回路に接続され、各メモリ領域は複数の処理回路の内の少なくとも1つに関連付けられて、1以上のソフトウェアスレッドの少なくとも1つのソフトウェアスレッドに対して、複数のメモリ領域の内の優先メモリ領域を特定するために、複数のスレッド統計値から成る解析を実行し、少なくとも1つのソフトウェアスレッドを実行するために、優先メモリ領域に関連付けられた少なくとも1つの処理回路の1つを構成することを含み、このプログラム命令は、非一時的コンピュータ可読記憶媒体から、少なくとも1つのコンピュータ化されたプロセッサによって実行される。
【0014】
第1と第2の態様を参照すると、第1と第2の態様の第1の可能な実装形態において、複数の処理回路は、中央処理ユニット(CPU)、マルチコアプロセッシングユニットのコア(CPUコア)、データ処理ユニット(DPU)、グラフィック処理ユニット(GPU)、マイクロコントローラユニット(MCU)、加速処理ユニット(APU)、フィールドプログラマブルゲートアレイ(FPGA)、粗粒度再構成可能アーキテクチャ(coarse-grained reconfigurable architecture:CGRA)、ニューラルネットワークアクセラレータ、インテリジェンス処理ユニット(IPU)、特定用途向け集積回路(ASIC)、量子コンピュータ、複数の再構成可能なデータルーティング接合(ジャンクション)によって接続された複数の再構成可能な論理素子から構成される再構成可能な相互接続コンピューティンググリッド、及び再構成可能な相互接続コンピューティンググリッドの一部、の少なくとも1つを備える。任意選択的に、複数の処理回路の少なくとも1つは、少なくとも1つのハードウェアプロセッサに統合されている。
【0015】
第1と第2の態様を参照すると、第1と第2の態様の第2の可能な実装形態において、複数のメモリ領域は、複数の処理回路のうちの少なくとも1つに電気的に接続されたメモリコンポーネントと、複数の処理回路のうちのその他の少なくとも1つに接続された他のメモリコンポーネントのキャッシュメモリであって、少なくとも1つの他の処理回路と電気的に結合されているキャッシュメモリと、処理回路の他の少なくとも1つに、バス又は少なくとも1つのデジタル通信ネットワークインタフェースを介して接続された、さらに他のメモリコンポーネントと、再構成可能な相互接続コンピューティンググリッドの一部である、再構成可能相互接続メモリグリッドの少なくとも一部と、の少なくとも1つを備える。任意選択的に、複数のメモリ領域のそれぞれは、少なくとも1つのメモリアクセスメトリックに従って、複数の処理回路の少なくとも1つに関連付けられる。任意選択的に、少なくとも1つのメモリメトリックは、アクセス待ち時間、スループット、キャッシュ利用メトリック、メモリ容量、トポロジー距離、メモリ割り当てオーナシップ、メモリコヒーレンスから成る、メモリメトリック群の少なくとも1つを含む。メモリアクセスメトリックに従ってメモリ領域を処理回路に関連付けることで、優先メモリ領域に関連付けられた処理回路によってソフトウェアスレッドを実行することにより優先メモリ領域にアクセスするソフトウェアスレッドを実行するとき、複数のメモリアクセスの性能向上が促進される。
【0016】
第1と第2の態様を参照すると、第1と第2の態様の第3の可能な実装形態において、少なくとも1つのソフトウェアスレッドの複数のスレッド統計値を含む解析の実行は、複数のソフトウェアスレッドの実行中に収集される複数の制御フロー統計値を利用することを更に含む。任意選択的に、少なくとも1つのソフトウェアスレッドの複数のスレッド統計値を含む解析の実行は、複数のソフトウェアスレッドの実行中に収集される少なくとも1つのソフトウェアスレッドの少なくとも1つの状態値を使用することを更に含む。複数のソフトウェアスレッドを実行中に収集される、複数の制御フロー統計値と、追加的又は代替的に1以上の状態値とを使用することで、メモリアドレスのみに基づいて優先メモリ領域を特定する場合に比べて、優先メモリ領域の特定精度が向上する。したがって、優先メモリ領域に関連付けられた処理回路上で1以上のソフトウェアスレッドを実行することにより、例えば、優先メモリ領域に対して1以上のソフトウェアスレッドによって実行される複数のメモリアクセスの待ち時間の大きさが減少し、また追加的又は代替的に、複数のメモリアクセスのスループットが向上することにより、システム性能の向上が進む。任意選択的に、複数のスレッド統計値は、メモリアクセスの待ち時間、メモリ領域のスループット、メモリ領域へのメモリアクセス量、複数のソフトウェアスレッドの1つのスレッドによるメモリ領域へのメモリアクセス量、複数のソフトウェアスレッドのサブセットによるメモリ領域へのメモリアクセス量、キャッシュミス量及びトランスレーションルックアサイドバッファミス量、の少なくとも1つを含む。任意選択的に、少なくとも1つのソフトウェアスレッドは、複数のスレッド統計値を収集することを目的とした、複数の遠隔測定(テレメトリ)コンピュータ命令を含む。任意選択的に、複数の処理回路の少なくとも1つは、複数のスレッド統計値を収集することを目的とした、遠隔測定(テレメトリ)回路を含む。複数の遠隔測定コンピュータ命令を用いて、また追加的又は代替的に遠隔測定回路によって複数のスレッド統計値を収集することは、複数のメモリアクセスを外部監視することによって収集される統計値に比べて複数のスレッドの統計値の精度を向上させ、したがって優先メモリ領域の特定精度を向上させる。それに加えて、処理回路の遠隔測定回路を使用することで、1以上のソフトウェアスレッドの実行時間に影響を与えることなく、複数のスレッド統計値の収集を可能とする。
【0017】
第1と第2の態様を参照すると、第1と第2の態様の第4の可能な実装形態において、少なくとも1つのソフトウェアスレッドの複数のスレッド統計値を含む解析の実行は、1以上のソフトウェアスレッドの少なくとも1つの他のスレッドの、少なくとも1つの他の複数のスレッド統計値を用いることを更に含む。1以上の他のスレッドの、少なくとも1つの他の複数のスレッド統計値を用いることは、例えば、その1以上の他のスレッドが優先メモリ領域にアクセスしないことを識別することによって、優先メモリ領域の特定精度が向上する。
【0018】
第1と第2の態様を参照すると、第1と第2の態様の第5の可能な実装形態において、優先メモリ領域は、少なくとも1つのソフトウェアスレッドによって使用されるプログラムデータを含む。任意選択的に、少なくとも1つのソフトウェアスレッドの複数のスレッド統計値を含む解析の実行が、優先メモリ領域が少なくとも1つのソフトウェアスレッドによって使用されるプログラムデータを含むことを識別することをさらに含む。優先メモリ領域が少なくとも1つのソフトウェアスレッドによって使用されるプログラムデータを含むことを識別することは、優先メモリ領域の特定精度を向上させる。任意選択的に、少なくとも1つのハードウェアプロセッサは、優先メモリ領域にアクセスする複数のソフトウェアスレッドの2以上のソフトウェアスレッドを識別し、優先メモリ領域に関連付けられた少なくとも1つの処理回路の少なくともいくつかを、2以上のソフトウェアスレッドを実行するように構成するように更に構成される。優先メモリ領域に関連付けられた1以上の処理回路を優先メモリ領域にアクセスする2以上のスレッドを実行するように構成することは、2以上のソフトウェアスレッドによる優先領域への複数のメモリアクセス性能の改善を進める。任意選択的に、少なくとも1つのハードウェアプロセッサは、解析の実行に応答して、少なくともいくつかのアプリケーションデータを、複数のメモリ領域の1つのメモリ領域から複数のメモリ領域の他のメモリ領域へ移動するように更に構成される。アプリケーションデータを1つのメモリ領域から他のメモリ領域に移動させることにより、例えば、少なくとも1つのソフトウェアスレッドによって使用されるすべてのアプリケーションデータを優先メモリ領域へコピーすることにより、あるいは、ソフトウェアスレッドによって使用されないデータを、その少なくとも1つのソフトウェアスレッドによってアクセスされない他のメモリ領域へコピーすることにより、複数のメモリアクセス性能の改善を更に進める。任意選択的に、少なくともいくつかのアプリケーションデータは、複数のソフトウェアスレッドの少なくとも1つの追加スレッドによってアクセスされる。任意選択的に、その他のメモリ領域は優先メモリ領域である。任意選択的に、少なくとも1つのハードウェアプロセッサは、優先メモリ領域に関連付けられた少なくとも1つの処理回路を構成して少なくとも1つの追加スレッドを実行するようにさらに構成される。優先メモリ領域に関連付けられた1以上の処理回路を、いくつかのアプリケーションデータにアクセスする2以上のスレッドを実行するように構成することは、2以上のソフトウェアスレッドによる優先メモリへの複数のメモリアクセス性能の改善を増加させる。
【0019】
第1と第2の態様を参照すると、第1と第2の態様の第6の可能な実装形態において、複数のソフトウェアスレッドは、それぞれがソフトウェアプログラムの計算カーネルの一部を実行し、計算カーネルはソフトウェアプログラムのアプリケーションデータにアクセスするための複数のループ反復含み、複数のソフトウェアスレッドのそれぞれが、複数のループ反復のいくつかを実行して、それによりアプリケーションデータの少なくともいくつかにアクセスするようになっている。任意選択的に、少なくとも1つのハードウェアプロセッサは、追加的又は代替的に複数のソフトウェアスレッドコードの他の解析を実行して計算カーネルを識別し、また追加的又は代替的アプリケーションデータを識別することにより、優先メモリ領域を特定するように更に構成される。計算カーネルを識別することにより、また追加的又は代替的にアプリケーションデータを識別することによって優先メモリ領域を特定することは、例えば、複数のループ反復の各ループ反復に対して、それによる各アプリケーションアクセスを識別することによって、優先メモリ領域の特定精度を向上させる。任意選択的に、解析は、計算カーネルの直前の命令の実行の後、かつ計算カーネルの最初の命令の実行の前に行われる。計算カーネルの最初の命令を実行する直前の実行時に解析を行うことは、優先メモリ領域の特定精度を向上させる。
【0020】
第1と第2の態様を参照すると、第1と第2の態様の第7の可能な実装形態において、少なくとも1つのハードウェアプロセッサは、それぞれが、複数のソフトウェアスレッドの少なくとも1つの追加のソフトウェアスレッドに関連付けられ、それに関連付けられた追加のソフトウェアスレッドを実行するときのメモリ例外量を示す、複数のメモリアクセス例外カウンタにアクセスし、解析の実行が、複数のメモリアクセス例外カウンタを使用することをさらに含むように更に構成される。任意選択的に、少なくとも1つのハードウェアプロセッサは、複数の反復のうちの特定された反復における優先メモリ領域に関連する少なくとも1つの処理回路のうちの1つを構成する。任意選択的に、少なくとも1つのハードウェアプロセッサは、特定された反復の後に実行される、複数の反復のうちの他の反復において、それに関連付けられたメモリアクセス例外カウンタが例外閾値を超える、少なくとも1つのソフトウェアスレッドを特定し、複数のメモリ領域の新規の優先メモリ領域を特定し、他の優先メモリ領域に関連付けられた、少なくとも1つの処理回路を、少なくとも1つのソフトウェアスレッドを実行するよう構成するように更に構成される。複数のメモリアクセス例外カウンタを使用することで、優先メモリ領域の特定精度が向上する。メモリアクセス例外カウンタに従って新規の優先メモリを特定することで、識別された反復の後の他の複数の反復において、少なくとも1つのスレッドによる複数の追加のメモリアクセス性能の更なる向上が促進される。
【0021】
第1と第2の態様を参照すると、第1と第2の態様の第8の可能な実装形態において、少なくとも1つのハードウェアプロセッサは、複数の処理回路の第1の処理回路のために、メモリ属性の第1のセットに従って、複数のメモリ領域の少なくとも第1のサブセットをマッピングするための第1のページテーブルを生成し、複数の処理回路の第2の処理回路のために、メモリ属性の第2のセットに従って、複数のメモリ領域の少なくとも第2のサブセットをマッピングするための第2のページテーブルを生成するように更に構成される。任意選択的に、複数のスレッド統計値の少なくとも第1の統計値は、第1のページテーブルにアクセスするときの少なくとも1つの例外に従って収集され、複数のスレッド統計値の少なくとも第2の統計値は、第2のページテーブルにアクセスするときの少なくとも1つの他の例外に従って収集される。異なるタイプのアクセスに対して、それぞれのタイプがメモリ属性のセットによって特徴づけられる別々のページテーブルを使用することで、メモリ属性の各セットに関連付けられたアクセスごとに統計値を別々に収集することが容易となり、それにより優先メモリ領域の特定精度が向上する。任意選択的に、第1の処理回路は、第2の処理回路である。1つの処理回路に対して2以上のページテーブルを有することで、1つの処理回路に対して、メモリアクセス属性の第1のセットと第2のセットのそれぞれに別々の統計値を収集可能となり、優先メモリ領域の特定精度が向上する。
【0022】
本開示のその他のシステム、方法、特徴及び利点は、以下の図面及び詳細な説明を精査することで当業者には明らかとなるであろう。そのような追加的なシステム、方法、特徴及び利点のすべては、本説明内に含まれ、本開示の範囲内にあり、添付の特許請求の範囲によって保護されるべきものである。
【0023】
別段の定義がない限り、本明細書で使用するすべての技術用語及び科学用語は、本実施形態が属する技術分野の当業者により一般に理解されるものと同じ意味を有する。本明細書に記載のものと類似又は同等の方法及び材料が実施形態の実行又は試行に使用可能であるが、例示的な方法及び/又は材料を以下に記述する。矛盾する場合には、定義を含めて本発明の明細書が優先される。さらに、材料、方法及び実施例は例示に過ぎず、必ずしも制限的であることを意図するものではない。
【0024】
いくつかの実施形態を、添付図面を参照して例示としてのみ本明細書に記載する。ここで、図面を詳細に具体的に参照すると、示される詳細事項は一例であって、実施形態の例示的議論を目的とするものであることが強調される。これに関し、図面と共に行われる説明により実施形態がどのように実行され得るかが当業者には明らかとなる。
【図面の簡単な説明】
【0025】
図1】いくつかの実施形態による、例示的システムの概略ブロック図である。
図2】いくつかの実施形態による、動作の任意選択的な流れを概略的に表すフロー図である。
図3】いくつかの実施形態による、解析のための動作の任意選択的な流れを概略的に表すフロー図である。
図4】いくつかの実施形態による、例外カウンタを使用する解析のための動作の任意選択的な流れを概略的に表すフロー図である。
【発明を実施するための形態】
【0026】
複数のメモリ領域のうちのあるメモリ領域へのアクセスは、第1の複数の処理回路による実行が第2の複数の処理回路による実行よりも効率的である場合がある。例えば、NUMAシステムなどでは、第1の処理回路からメモリ領域へのアクセスの待ち時間は、第2の処理回路からアクセスする場合よりも短い場合がある。このように、複数の処理回路の間における複数のスレッドの分配は、システムメモリの性能に影響を与える。システム性能はシステムメモリの性能に影響されるので、複数の処理回路間における複数のスレッドの分配がシステム性能に影響する。
【0027】
いくつかの一般的な実装では、複数のスレッドのシステムの複数の処理回路への分配は、処理回路の可用性に従って行われる。いくつかの既存の実装によれば、システムが複数のソフトウェアスレッドを実行する場合、システムが実行するオペレーティングシステムは、例えば、ラウンドロビン(round-robin)スケジューリング法を使用する負荷分散スケジューリングポリシーに従って、あるいは処理回路利用率などの1以上の負荷分散メトリックに従って、各スレッドを複数の処理回路の1つに割り当てる。そのようなシステムでは、スレッドが実行開始するとき、それが最初の実行であれ、中断後の再開であれ、割り当てが各スレッドに対して実行される。いくつかのシステムでは、オペレーティングシステムは複数の処理回路間でスレッドの実行を時々再配分して複数の処理回路間でのバランスを改善することがある。そのような一般的な実装において、ソフトウェアは処理回路に固定されるのではなく、複数の処理回路間を移動し得る。いくつかのシステムでは、ソフトウェアスレッドが1つの処理回路から他の処理回路に移動するとき、例えばスレッドが中央処理ユニット(CPU)とグラフィック処理ユニット(GPU)の間を移動する場合などにおいて、そのスレッドのいくつかのプログラムデータが、その処理回路に関連するメモリ領域から他の処理回路に関連する他のメモリ領域へコピーされる。そのようなメモリ移動のオーバヘッドは、システム性能に負の影響を及ぼし得る。
【0028】
処理負荷のメトリックに従って、スレッドを複数の処理回路間で移動させることは、システムのメモリの性能に影響を与え得る。例えば、第1の処理回路に関連付けられたメモリ領域にアクセスする第1の処理回路によって実行されるスレッドが、第1の処理回路からそのメモリ領域にアクセスするときの待ち時間に比べてメモリ領域へのアクセス待ち時間がより長い、第2の処理回路上で実行するように割り当てられると、複数のメモリアクセスの総待ち時間は、増加する可能性がある。コンピュータ分野においては、「スレッド親和性」又は「親和性」という用語は、例えばシステム性能の最適化手段として、スレッドを処理コアに関連付けることを指す。システムメモリの性能は、スレッドによって使用されるメモリに応じて、スレッドと処理回路との間の親和性を生成することにより改善可能である。同様に、システムメモリの性能は、特定のメモリ領域にアクセスする2以上のスレッドを、例えば2以上のスレッドがそのメモリ領域をキャッシュするキャッシュメモリを共有するように、1以上の共通処理回路に割り当てることによって向上可能である。
【0029】
プログラマがソフトウェアプログラムのソースコードにおいて、ソフトウェアプログラムの1以上のスレッドを1以上の処理回路に優先的に割り当てを指示する方法が存在する。ただし、ソースコードのそのような指示はプログラマが、ソフトウェアプログラムを実行するシステムの期待されるトポロジーに関する先験的知識を必要とする。そのような指示により得られる性能の向上は、期待されるトポロジーを持たないシステム上でソフトウェアプログラムを実行する場合には低下する可能性がある。さらに、そのような指示は、通常は静的であって、スレッドのメモリアクセスのパターンが変化することを許容しない。さらに、いくつかの複雑な計算、例えば複数のスレッドに分割される大規模な計算においては、例えばスレッドが開始されたときではなく、むしろ実行中に、例えばタスクのプールから1つのタスクを呼び出すことによって、各スレッドがランダムなメモリ位置に割り当てられる可能性がある。そのような例では、プログラマはどのメモリが各スレッドに割り当てられるかを前もって知ることは不可能であり、また追加的又は代替的に各スレッドのメモリアクセスパターンを予測不能である。したがって、プログラマは優先割り当てを決定することは不可能であり、ましてや、1以上のスレッドの1以上の処理回路への好ましい割り当てを指示することは不可能である。
【0030】
本開示は、本明細書に記載のいくつかの実施形態において、複数の処理回路が複数のスレッドを実行している間に、複数のスレッドの1以上のそれぞれに対して複数のスレッド統計値を収集し、ここで複数の統計値は、複数の処理回路に接続された複数のメモリ領域の少なくともいくつかへの複数のメモリのアクセスを示し、また、複数のメモリアクセスはスレッドの実行時に行われるものであることを提案する。スレッド統計値のいくつかの例は、メモリアクセスの待ち時間、メモリ領域のスループット、メモリ領域へのメモリアクセス量、キャッシュメモリの使用量、及びスレッドによるメモリ領域へのアクセス量である。任意選択的に、スレッドは、複数の統計値の収集を目的とする複数の遠隔測定コンピュータ命令を含む。任意選択的に、複数の処理回路の1以上は、複数の統計値を収集する目的で遠隔測定回路を含む。そのような実施形態においてさらには、本開示は、複数のスレッドの少なくとも1つに対して、スレッドの複数のスレッド統計値を含む解析を行い、複数のメモリ領域の内の優先メモリ領域を特定することを提案する。例えば、優先メモリ領域は、複数のスレッド統計値による、スレッドによって最も頻繁にアクセスされるメモリ領域であり得る。別の例では、優先メモリ領域は、複数のスレッド統計による、最も大きな総帯域幅を有するメモリ領域である。任意選択的に、優先メモリ領域は、スレッドによって使用されるプログラムデータを含む。そのような実施形態においてさらに、本開示は、スレッドを実行するために、優先メモリ領域に関連付けられた1以上の処理回路のうちの1つを構成することを提案する。任意選択的に、処理回路を構成することは、処理回路を操作することを含み、したがってそのような実施形態において、本開示は、1つの処理回路を操作することを提案する。任意選択的に、複数のスレッドのそれぞれに対する複数のスレッド統計値の収集、解析の実行、及び処理回路の構成は、複数の反復のそれぞれにおいて実行される。スレッドを実行するためにスレッドの優先メモリ領域に関連付けられた処理回路を構成することは、システムメモリの性能を向上させ、したがって、システム性能を向上させる。複数のスレッドを実行している間に複数のスレッド統計値を収集することで、スレッドに対する優先メモリ領域の特定精度を向上させてシステムメモリの性能を向上させ、したがってシステム性能を向上させる。複数のスレッド統計値を収集し、解析を実行し、処理回路を構成する反復を複数回繰り返すことにより、経時的なスレッドメモリのアクセスパターンの変化を補償することを可能とし、スレッドが経時的に2以上のメモリ領域をアクセスすることによるシステムメモリ性能の劣化の可能性を低減する。
【0031】
任意選択的に、本開示は、優先メモリ領域にアクセスする、複数のスレッドのうちの2以上のスレッドを識別するプロセスを提案する。任意選択的に、本開示は優先メモリ領域に関連付けられた1以上の処理回路のうちの少なくとも1つを構成して、2以上のスレッドを実行することを提案する。優先メモリ領域に関連付けられた少なくとも1つの処理回路において優先メモリ領域を共有する2以上のスレッドを実行することで、システムメモリの性能をさらに向上させる。
【0032】
さらに、いくつかの実施形態において本開示は、少なくともいくつかのアプリケーションデータを複数のメモリ領域の内の1つのメモリ領域から、複数のメモリ領域のうちの他のメモリ領域へ、任意選択的に解析の実行に応答して、移動させることを提案する。任意選択的に、他のメモリ領域はスレッドの優先メモリ領域である。アプリケーションデータを1つのメモリ領域から他のメモリ領域に移動させることは、スレッドにより実行される1以上の新規のメモリアクセスの性能の向上を可能とする。
【0033】
コンピュータプログラミングにおいて、計算カーネル(計算的カーネルとも言う)はソフトウェアプログラムの主命令セットとは別の、ただしそれにより使用される命令セットである。ソフトウェアプログラムを実行する主処理回路と並列に動作するアクセラレータ、例えばグラフィック処理ユニット(GPU)による実行のために、計算カーネルをコンパイルすることが一般的に行われる。本明細書に記載のいくつかの実施形態によれば、複数のスレッドがそれぞれ、ソフトウェアプログラムの計算カーネルの一部を実行する。任意選択的に、計算カーネルは、ソフトウェアプログラムのアプリケーションデータにアクセスするための複数のループ反復を含み、複数のスレッドのそれぞれが複数のループ反復の一部を実行する。そのような実施形態においては、本開示は、複数のスレッドのコードを解析して優先メモリ領域を特定し、コードの解析は、計算カーネルを特定することであり、追加的又は代替的にアプリケーションデータを特定することであることを提案する。そのような実施形態において、コードの解析によって優先メモリ領域を特定することは、追加的又は代替的に、複数のスレッド統計値の解析の実行によって優先メモリを特定することである。計算カーネルを特定するためのコード解析は、任意選択的に複数のスレッドの実行前に、1以上の静的解析方法を用いて行うことができる。任意選択的に、複数のスレッド統計値の解析の実行は、計算カーネルの実行の直前、すなわち、計算カーネルのすぐ前の命令の実行の後、かつ計算カーネルの最初の命令の実行の前である。計算カーネルの特定に従って、かつ、計算カーネルの実行の直前に複数の統計値の解析を実行することは、複数のスレッドのそれぞれに対するそれぞれの優先メモリ領域を特定する精度を向上させ、それによりシステムメモリの性能を高める。
【0034】
スレッドの状態は、特定の時間におけるスレッドの1以上のレジスタ値を含み、レジスタ値とは、スレッドを実行するときの処理回路のレジスタの値である。追加的又は代替的に、スレッドの状態には、スレッドのスタックメモリの複数のスタック値が含まれる。更に追加的又は代替的に、スレッドの状態は、システムの1以上の計算リソースへのアクセスへの1以上のパーミッションを識別する、1以上のパーミッション値を含む。任意選択的に、複数のスレッド統計値はスレッドの状態を含む。任意選択的に、スレッドを実行するように構成される処理回路は、スレッドの状態にしたがって選択される。例えば、スレッドがアレイにアクセスするコードを含んでいる場合、そのスレッドを実行するように構成される処理回路は、アレイのメモリ内のベース位置を識別する1以上のレジスタ値と、追加的又は代替的に、スレッドによってアクセスされるアレイの1以上のオフセットを識別する1以上の追加のレジスタ値とに従って選択することが可能である。
【0035】
少なくとも1つの実施形態を詳細に説明する前に、実施形態はその適用において、以下の記述で説明され、及び/又は図面や実施例で示される、構成要素の構造及び配置、及び/又は方法の詳細に必ずしも限定されるものではないことを理解されたい。本明細書に記載の実装は、他の実施形態が可能であり、又は様々な方法での実行、実施が可能である。
【0036】
実施形態は、システム、方法、及び/又はコンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに実施形態の態様を実行させるコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体を含み得る。
【0037】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持、格納可能な有形デバイスであってよい。コンピュータ可読記憶媒体は、これに限らないが例えば、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、又はそれらの任意の適切な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストとしては、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、及びそれらの任意の適切な組み合わせが含まれる。本明細書で使用するコンピュータ可読記憶媒体は、電波やその他の自由に伝播する電磁波、導波路又は他の伝送媒体を通って伝播する電磁波(例えば光ファイバケーブルを通過する光パルス)、又は電線を通って伝送される電気信号、などの一過性の信号そのものであるとみなすべきではない。
【0038】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から個別の計算/処理装置へ、あるいは、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部記憶装置へダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバで構成され得る。各コンピュータ/処理装置内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれの計算/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0039】
実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture:ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、ネイティブにコンパイル又はジャストインタイム(JIT)にコンパイルされ、Smalltalk(登録商標)、C++、Java(登録商標)、オブジェクト指向Fortranなどのオブジェクト指向プログラミング言語、JavaScript(登録商標)、Python(登録商標)などのインタプリタ型プログラミング言語、及び「C」プログラミング言語、Fortran又は類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソースコード又はオブジェクトコードであってよい。コンピュータ可読プログラム命令は、全体をユーザのコンピュータ上で、一部をスタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で、一部はユーザのコンピュータ上でかつ一部はリモートコンピュータ上で、あるいは全体をリモートコンピュータもしくはサーバ上で実行されてよい。後者の場合には、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよいし、(たとえば、インターネットサービスプロバイダーを利用したインターネット経由で)外部コンピュータに接続されてもよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、実施形態の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行し、電子回路をパーソナライズすることができる。
【0040】
本明細書において、実施形態の態様を、実施形態による方法、装置(システム)及びコンピュータプログラム製品の、フロー図表示及び/又はブロック図を参照して記載する。フロー図表示及び/又はブロック図の各ブロック、及びフロー図表示及び/又はブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることが理解されるであろう。
【0041】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、又は機械を構成する他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フロー図及び/又はブロック図の1つ又は複数のブロックで指定される機能/動作を実施するための手段を生成する。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能データ処理装置、及び/又は他の装置に特定の形で機能するように指示することが可能なコンピュータ可読記憶媒体に格納されてもよく、格納された命令を有するコンピュータ可読記憶媒体は、フロー図及び/又はブロック図の1つ又は複数のブロックで指定される機能/動作の態様を実装する命令を含む製品を備える。
【0042】
コンピュータ可読プログラム命令はまた、コンピュータや他のプログラム可能データ処理装置や他の装置にロードされて、一連の動作ステップをコンピュータや他のプログラム可能装置や他の装置上で実行させて、コンピュータ実装プロセスを生成し、コンピュータや他のプログラム可能装置や他の装置上で実行される命令が、フロー図及び/又はブロック図の1つ又は複数のブロックで指定された機能/動作を実装するようになっていてもよい。
【0043】
図中のフロー図及びブロック図は、本発明の様々な実施形態による、システム、方法及びコンピュータプログラム製品の可能な実装形態の構成、機能及び動作を示す。これに関し、フロー図及びブロック図の各ブロックは、命令のモジュール、セグメント又は部分を表すことができ、これは指定された論理機能を実装するための1以上の実行可能命令を含む。いくつかの代替的実装形態においては、ブロックで表される機能は、その図に示す順序とは異なっていてもよい。例えば、連続して示される2つのブロックは、含まれる機能によって、実際には実質的に同時に実行されてもよいし、あるいは逆の順序で実行される場合があってもよい。ブロック図及び/又はフロー図表示の各ブロック、及びブロック図及び/又はフロー図表示の複数のブロックの組合せは、特定の機能又は動作を実行し、あるいは専用ハードウェアとコンピュータ命令の組み合わせを実行する、専用ハードウェアベースのシステムで実装することができることにも留意されたい。
【0044】
図1を参照すると、これはいくつかの実施形態による例示的システム100の概略ブロック図である。このような実施形態において、少なくとも1つのハードウェアプロセッサ101は、例えば処理回路110A、処理回路110B、処理回路110C、処理回路110Dを含む複数の処理回路に接続され、これらを複数の処理回路110と総称する。処理回路のいくつかの例には、中央処理ユニット(CPU)、マルチコアプロセッシングユニットのコア(CPUコア)、データ処理ユニット(DPU)、グラフィック処理ユニット(GPU)、マイクロコントローラユニット(MCU)、ニューラルネットワークアクセラレータ、量子コンピュータ、知能処理ユニット(IPU)、及び加速処理ユニット(APU)が含まれる。処理回路のその他のいくつかの例には、フィールドプログラマブルゲートアレイ(FPGA)、粗粒度再構成可能アーキテクチャ(CGRA)及び特定用途向け集積回路(ASIC)が含まれる。任意選択的に、複数の処理回路110の少なくとも1つは、少なくとも1つのハードウェアプロセッサ101に統合されている。
【0045】
簡略化のために、これ以降、用語「処理ユニット」を、少なくとも1つのハードウェアプロセッサを意味するものとして使用し、これらの用語は互換的に使用される。任意選択的に、処理ユニット101は、1以上の再構成可能な相互接続コンピューティンググリッド140に接続され、これらはそれぞれ複数の再構成可能なデータルーティング接合(ジャンクション)によって接続された複数の再構成可能論理素子を含む。再構成可能論理素子の例は、数学的及び論理的演算の特定のセットのうちの1つを実行するように構成可能な処理回路である。数学的演算のいくつかの例は、加算及び減算である。論理的演算のいくつかの例は、論理NOT演算及び論理AND演算である。任意選択的に、複数の再構成可能論理素子は、複数の論理素子群に編成され、それぞれは複数の構成可能データルーティング接合のいくつかによって接続された複数の論理素子のいくつかを含む。任意選択的に、再構成可能論理素子を構成することは、再構成可能な論理素子の操作、すなわち再構成可能な論理素子である処理回路を操作することである。任意選択的に、論理素子群を構成することは、論理素子群の1以上の再構成可能論理素子を操作することを含み、追加的及び代替的に、論理素子群の1以上のデータルーティング接合を操作することを含む。任意選択的に、複数の処理回路110の1以上は、複数の論理素子群の1以上から成る1以上の相互接続コンピューティンググリッド140の一部である。任意選択的に、1以上の相互接続コンピューティンググリッド140は、複数の処理回路110のメンバーである。
【0046】
任意選択的により、システム100は、メモリ領域120A、メモリ領域120B、メモリ領域120C、メモリ領域120D、メモリ領域120E、メモリ領域120F、メモリ領域120G、メモリ領域120H、及びメモリ領域120Iから成る複数のメモリ領域から成り、これらを複数のメモリ領域120と総称する。任意選択的に、複数のメモリ領域120の少なくとも1つは、複数の処理回路110の少なくとも1つに電気的に結合したメモリコンポーネントであり、例えばメモリ領域120Bは処理回路110Bと電気的に結合されることができる。任意選択的に、複数のメモリ領域120は他のメモリコンポーネントの少なくとも1つのキャッシュメモリを含み、例えば、メモリ領域120Eは、それに接続されたメモリ領域120Fのキャッシュメモリコンポーネントであってよい。任意選択的に、メモリ領域120Eは、複数の処理回路110の1以上、例えば処理回路110Cに電気的に結合される。
【0047】
任意選択的に、複数のメモリ領域120の少なくとも1つは、バスを介して複数の処理回路110の少なくとも1つに接続されたメモリコンポーネントであり、例えば、メモリ領域120はバスを介して処理回路110Dに接続されてよい。任意選択的に、複数のメモリ領域120の少なくとも1つ、例えばメモリ領域120Gは、複数の処理回路110の少なくとも1つ、例えば処理回路110Dに、少なくとも1つのデジタル通信ネットワークインタフェース130を介して接続される。デジタル通信ネットワークのいくつかの例は、例えばイーサネット(登録商標)ネットワーク又はWi-Fiネットワークであるローカルエリアネットワーク(LAN)、及び例えばインターネットである、ワイドエリアネットワーク(WAN)である。任意選択的に、複数のメモリ領域120の少なくとも1つは、複数の処理回路の少なくとも1つに間接的に接続される。例えば、少なくとも1つのメモリ領域は、複数のメモリ領域120の他の1つを介して少なくとも1つの処理回路に接続されてもよい。例えば、メモリ領域120Fはメモリ領域120Eを介して処理回路110Cに接続される。任意選択的に、少なくとも1つのメモリ領域が、システム100の他のコンポーネントを介して少なくとも1つの処理回路に接続される。
【0048】
任意選択的に、再構成可能コンピューティンググリッド140は、再構成可能相互接続メモリグリッドを含む。任意選択的に、再構成可能相互接続メモリグリッドの少なくとも一部は、1以上の複数のメモリ領域、例えば、メモリ領域120H、及び追加的又は代替的にモリ領域120Iである。
【0049】
任意選択的に、複数のメモリ領域120が複数の処理回路110に接続される。任意選択的に、複数のメモリ領域120のそれぞれは、複数の処理回路110の1以上に接続される。複数の処理回路110の処理回路は、複数のメモリ領域120の2以上に接続されてよい。例えば、処理回路110Aは、メモリ領域120A及びメモリ領域120C接続される。複数のメモリ領域120のメモリ領域は、複数の処理回路110の2以上に接続されてよい。例えば、メモリ領域120Aは処理回路110A及び処理回路110Cに接続される。
【0050】
任意選択的に、複数のメモリ領域120のそれぞれは、1以上のメモリアクセスメトリックに従って、複数の処理回路110の1以上に関連付けられる。一例として、例えば、メモリ領域120Bが、処理回路110Bに近い複数のメモリ領域120の他のいずれよりも処理回路110Bに物理的により近い場合に、メモリ領域120Bは、その間のトポロジー距離に従って処理回路110Bに関連付けられることができる。メモリ領域と処理回路との間のトポロジー距離は、システム100の少なくとも一部を実装する集積回路基板上の距離であってよい。複数のメモリ領域120の1以上が再構成可能コンピューティンググリッド140のメモリ領域である場合、トポロジー距離は任意選択的に、そのルーティンググリッド内の距離である。いくつかの他のメモリアクセスメトリックの例としては、メモリ領域のアクセス待ち時間、メモリ領域のスループット、メモリ領域のメモリ容量、及び複数の処理回路110により実行されるソフトウェアプログラムの複数のスレッドによってアクセスされる場合の複数のメモリ領域120間のメモリコヒーレンスが含まれるが、これらに限るものではない。メモリアクセスメトリックの別の例としては、メモリ領域へのメモリ割り当ての所有権(オーナーシップ)があり、これはメモリをメモリ領域に割り当てる管理マネージャを決定する。任意選択的に、メモリ割り当ての所有権は、管理割り当てである。任意選択的に、複数のメモリ領域120の1以上は、キャッシュメモリの使用ポリシーに従って、複数の処理回路110の1以上に関連付けられる。キャッシュメモリ使用ポリシーの例は、一度使用した後に、キャッシュエントリの除去(eviction)を指令するポリシーである。キャッシュメモリ使用ポリシーの他の例は、キャッシュエントリへのアクセスに基づく、キャッシュエントリ除去の他の基準を定義する。キャッシュメモリ使用ポリシーの他のいくつかの例は、メモリ領域のアドレスに応じた、及び追加的又は代替的に、メモリ管理ユニットの特性、例えばキャッシュしない又は除去しないとマークされたメモリページ(スティッキーページ)に応じた、キャッシュエントリの除去又は取込み(population)のポリシーを含む。任意選択的に、キャッシュメモリ使用ポリシーは、複数のスレッドの実行に関するサービス品質ポリシーに関連付けられる。任意選択的に、キャッシュ使用ポリシーは、複数のメモリ領域の1つのメモリ領域への複数のメモリアクセス操作を、その複数のメモリ領域の1以上のキャッシュメモリ領域の間に分散させて、1以上のキャッシュメモリ領域のそれぞれへの負荷を低減し、追加的又は代替的に、より多くのメモリ領域を同時にキャッシングすることを容易とし、その結果、1つのキャッシュメモリ領域のみがメモリ領域に関連付けられている場合に比べて、複数のメモリアクセス操作をより早く完了させる。任意選択的に、複数のメモリ領域120の1以上が、1以上のキャッシュ利用メトリックに従って、複数の処理回路110の1以上に関連付けられ、これにより、例えばキャッシュ利用が向上し、例えばキャッシュの除去/取込みメトリックが向上する。
【0051】
任意選択的に、複数の処理回路110の少なくとも1つの処理回路は、複数のスレッドを実行するときに複数のスレッド統計値を収集するための遠隔測定回路を含む。遠隔測定回路は複数のメモリ領域120の1以上に関連付けられることができる。任意選択的に、遠隔測定回路は複数のメモリ領域120の1以上に接続された1以上のメモリコントローラコンポーネント(図示せず)に実装される。
【0052】
複数のソフトウェアスレッドを実行するために、本明細書に記載の実施形態においては、システム100が以下の任意選択的な方法を実装する。ここで、いくつかの実施形態による操作200の任意選択的な流れを概略的に表すフロー図である図2も参照する。
【0053】
そのような実施形態においては、ステップ201において、処理回路110が、複数のソフトウェアスレッドの1以上のソフトウェアスレッドごとに、スレッドの実行中におけるメモリ領域120の少なくともいくつかに対する複数回のメモリアクセスを示す、複数のスレッド統計値を収集する。スレッド統計値のいくつかの例には、メモリアクセスの待ち時間、及びメモリ領域のスループットが含まれる。スレッド統計値のその他のいくつかの例としては、複数のソフトウェアスレッドのうちの1つのスレッドによる1つのメモリ領域へのメモリアクセス量、複数のソフトウェアスレッドのサブセットによる1つのメモリ領域へのメモリアクセス量、キャッシュミス量、及びトランスレーションルックアサイドバッファのミス量が含まれるが、これらに限るものではない。メモリ領域へのメモリアクセス量をカウントするアクセスカウンタは、読み出しメモリへのアクセスのみ、書き込みメモリへのアクセスのみ、あるいはすべてのタイプのメモリアクセスの総計、を計数可能である。アクセスカウンタは複数のソフトウェアスレッドの1つに関連付けられてもよいし、複数のソフトウェアスレッドの2以上に関連付けられてもよい。任意選択的に、メモリアクセスカウンタは複数のソフトウェアスレッドのすべてに関連付けられる。任意選択的に、複数のスレッド統計値は、スレッドの状態、すなわちスレッドを実行している間の処理回路の1以上のレジスタの1以上のレジスタ値を含む。
【0054】
任意選択的に、処理ユニット201は、複数のスレッドの実行中に、任意選択的に処理ユニット101により、追加的又は代替的に複数の処理回路110の1以上によって、複数のスレッド統計値を収集する。任意選択的に、スレッドは、複数のスレッド統計値を収集するための複数の遠隔測定コンピュータ命令を含む。任意選択的に、複数の遠隔測定コンピュータ命令は、例えば、複数のスレッドのコードをコンパイルするときにコードを処理することにより、複数のスレッドのコードに追加される。複数の処理回路110の少なくとも1つが、複数のスレッド統計値を収集する目的で遠隔測定回路を含む場合には、処理ユニット101は任意選択的に、遠隔測定回路を使用して複数のスレッド統計値の少なくともサブセットを収集する。
【0055】
ステップ210において、処理ユニット101は複数のソフトウェアスレッドの1以上のスレッドに対して、1以上のスレッドの複数のスレッド統計値を含む解析を実行し、任意選択的に、ステップ220で複数メモリ領域120の優先メモリ領域を特定する。例えば、処理ユニット101は、解析によりメモリ領域120Aが1以上のスレッドによってアクセスされたときに低いアクセス待ち時間を有することを示す場合などに、メモリ領域120Aを優先メモリ領域として特定することができる。任意選択的に、優先メモリ領域は、1以上のスレッドによって使用されるプログラムデータを含む。任意選択的に、ステップ210での解析には、優先メモリ領域が、1以上のスレッドによって使用されるプログラムデータを含むことを識別することが含まれる。任意選択的に、1以上のスレッドに対する優先メモリ領域の特定は、例えば、複数のスレッドの要件間の均衡をとる目的で、その1以上のスレッドとは異なるその他のスレッドによって実行される追加のメモリアクセスにさらに依存する。ステップ210での解析の実行は任意選択的に、複数のソフトウェアスレッドの1以上のその他のスレッドの、1以上のその他の複数のスレッド統計値を使用することを含む。任意選択的に、ステップ210の解析を実行することは、複数のソフトウェアスレッドを実行する間に収集される複数の制御フロー統計値を使用することをさらに含む。制御フロー統計値は、複数のスレッドを実行するときの1以上の分枝選択を示し得る。制御フロー統計値の他の例は、命令識別子である。
【0056】
任意選択的に、ステップ210で解析を実行することは、1以上のスレッドの状態の1以上の状態値を使用することを含み、その1以上の状態値は、複数のスレッドの実行中に収集される1以上のスレッドの複数のスレッド統計値の少なくとも一部である。状態値のいくつかの例は、処理回路のレジスタのレジスタ値及びスレッドのスタックメモリのスタック値である。例えば、1以上のスレッドがアレイにアクセスするコードを含んでいる場合、優先メモリ領域は、アレイのメモリ内のベース位置を識別する1以上のレジスタ値と、追加的又は代替的に、スレッドによってアクセスされるアレイの1以上のオフセットを識別する1以上の追加のレジスタ値と、に従って選択することが可能である。
【0057】
ステップ230において、処理ユニット101は任意選択的に、優先メモリ領域に関連付けられた1以上の処理回路の1つを、1以上のスレッドを実行するように構成する。例えば、優先メモリ領域がメモリ領域120Aである場合、ステップ230において処理ユニット101は、メモリ領域120Aに関連付けられた処理回路110Aを、1以上のスレッドを実行するように構成する。任意選択的に、1以上のスレッドを実行するように処理回路を構成することは、1以上のスレッドを1以上のデータフローグラフに変換し、その1以上のデータフローグラフを再構成可能な計算グリッド140上に投影することを含む。すなわち1以上のデータフローグラフを実行するために、再構成可能な計算グリッド140の複数の論理要素の少なくともいくつかを構成する。任意選択的に、論理要素を構成することは、論理要素を操作することを含む。追加的又は代替的に、1以上のデータフローグラフを再構成可能な計算グリッド140に投影することは、再構成可能な計算グリッド140の複数の再構成可能なデータ接合(ジャンクション)のうちの1以上の再構成可能なデータルーティング接合を操作することを含み得る。
【0058】
いくつかの実施形態において、ステップ210において解析を行うことは、追加情報を使用することを含む。ここで、いくつかの実施形態による、解析のための動作300の任意選択的な流れを概略的に表すフロー図である図3も参照する。任意選択的に、複数のスレッドのそれぞれが、ソフトウェアプログラムの計算カーネルの一部を実行する。任意選択的に、計算カーネルは、ソフトウェアプログラムのアプリケーションデータにアクセスするための複数のループ反復を含む。任意選択的に、複数のスレッドのそれぞれは、複数のループ反復をいくつか実行して、複数のループ反復のいくつかの実行により少なくともいくつかのアプリケーションデータへアクセスする。任意選択的に、ステップ305において、処理ユニット101は複数のソフトウェアスレッドのコードの他の解析を実行し、計算カーネルを識別する。任意選択的に、ステップ305において、処理ユニット101は2以上の計算カーネルを識別して、複数のソフトウェアスレッドのそれぞれが2以上の計算カーネルの1つの一部を実行することを可能とする。追加的又は代替的に、ステップ305において、処理ユニット101は、他の解析によってアプリケーションデータを識別する。任意選択的に、処理ユニット101は、任意選択的に複数のスレッドを実行する前に、1以上の静的コード解析方法を用いて他の解析を実行する。例えば、処理ユニット101は、他の解析により、複数のスレッドを実行する前に、複数のスレッドのそれぞれにおいてソフトウェアプログラムのアプリケーションデータにアクセスするための1以上のメモリアクセスを識別し得る。任意選択的に、ステップ210での解析の実行は、他の解析をステップ305で追加的に実行することを含む。任意選択的に、ステップ305において他の解析を実行することは代替的に、複数のスレッド統計値を用いて解析を実行することである。
【0059】
任意選択的に、処理ユニット101は計算カーネルの実行の直前に、すなわち計算カーネルの直前の命令を実行した後、かつ計算カーネルの最初の命令を実行する前に、ステップ201を実行し、したがってステップ305を実行する。
【0060】
任意選択的に、ステップ306において、処理ユニット101は複数のメモリアクセス例外カウンタにアクセスする。任意選択的に、メモリアクセス例外カウンタのそれぞれは、複数のスレッドの1以上に関連付けられ、メモリ例外カウンタに関連付けられた1以上のスレッドを実行したときに発生するメモリ例外の量を示す。任意選択的に、メモリアクセス例外カウンタは複数のソフトウェアスレッドの1つに関連付けられる。任意選択的に、ステップ210で解析を実行することは、複数のメモリアクセス例外カウンタを使用することをさらに含む。
【0061】
ここで、いくつかの実施形態による、例外カウンタを使用する解析のための動作400の任意選択的な流れを概略的に表すフロー図である図4を参照する。任意選択的に、処理ユニット101が、複数の反復のそれぞれにおいて方法200を実行する。任意選択的に、複数の反復のうちの少なくとも1つは、ソフトウェアによって処理されるハードウェア例外、例えば、メモリページフォールト、複数の命令からなるスプリットトランザクション、又はスローパスアトミック命令、に応答して実行される。任意選択的に、複数の反復の少なくともいくつかは、特定の時間間隔で周期的に実行される。任意選択により、複数の反復の少なくともいくつかは、実行された動作の量に応じて周期的に、例えば、ソフトウェアプログラムのプログラム反復量に応じて周期的に実行される。
【0062】
任意選択的に、処理ユニット101は処理回路110を、複数の反復のうちの特定の1つの反復で1以上のスレッドを実行するように構成する。任意選択的に、複数の反復の内の他の反復において、ステップ401で処理ユニット101は、1以上のスレッドに対してそれらに関連付けられたメモリアクセス例外カウンタが例外閾値を超えたことを識別する。ステップ405において、処理ユニット101は任意選択的に、複数のメモリ領域120の新しい優先メモリ領域、例えばメモリ領域120Dを特定する。任意選択的にステップ407において、処理ユニット101は、1以上のスレッドを実行するために、新しい優先メモリ領域に関連付けられた少なくとも1つの処理回路のうちの1つを構成する。例えばステップ407において処理ユニット101は、処理回路110Aに代わって1以上のスレッドを実行するために、メモリ領域120Dに関連付けられた処理回路110Dを構成することが可能である。
【0063】
いくつかのシステムでは、複数の処理回路110のそれぞれが単一の共通ページテーブルのコピーを有することができるように、複数のメモリ領域を管理するための単一の共通ページテーブルが存在する。任意選択的に、複数の処理回路110の1以上は、1以上の処理回路のアーキテクチャに適合した単一の共通ページテーブルのコピーを有する。例外カウンタを処理回路に関連付けることが一般的に行われる。例外カウンタが処理回路に関連付けられたようなシステムでは、例外カウンタは、複数のメモリ領域120の2以上のメモリ領域へのメモリアクセスを区別せずに、複数のメモリ領域120のいずれかへのメモリアクセス例外をカウントする。
【0064】
本明細書に記載のいくつかの実施形態において、システム100は複数のページテーブルを備え、複数の処理回路110の少なくとも1つが、複数の処理回路110の他のものとは共有していない、複数のページテーブルのうちの1以上のページテーブルを有する。例えば、処理回路110Aは処理回路110Bとは共有していない第1のページテーブルを有し、処理回路110Bは処理回路110Aとは共有していない第2のページテーブルを有することができる。任意選択的に、複数のページテーブルのそれぞれは、メモリ属性の識別されたセットに従ってメモリをマッピングする。例えばメモリアドレスを、ページテーブルを有する処理回路に関連付けられたメモリ領域へマッピングする。この例では、第1のページテーブルはメモリ領域120A及びメモリ領域120Cをマッピングするが、メモリ領域120Bはマッピングしない。そして、第2のページテーブルはメモリ領域120Bをマッピングするが、メモリ領域120Aやメモリ領域120Cはマッピングしない。メモリ属性に従うマッピングの他の例は、メモリアクセス属性によるマッピングであり、例えば1つのページテーブルが読出しアクセスをマッピングし、その一方で他のページテーブルが書き込みアクセスをマッピングする。別の例では、1つのページテーブルがキャッシュされたメモリをマッピングし、他のページテーブルがキャッシュされていないメモリをマッピングする。
【0065】
複数のページテーブルを備えるシステムでは、識別されたメモリ属性のセットに従ってメモリをマッピングすることで、異なるタイプのアクセスを分離してカウントすることを容易にする。例えば、上記の例において、処理回路110Aがメモリ領域120Bにアクセスするとき、処理回路110Aの第1のページテーブルはメモリ領域120Bをマッピングしないので、常にページフォルトが起き、リモートページアクセスによって生じるページフォルトの量と、ローカルメモリ管理により生じるページフォルト量とを区別可能とする。同様に、1以上のメモリアクセス属性に従ってメモリがページテーブルにマッピングされると、ページテーブルに関連付けられた例外カウンタが、1以上のメモリアクセス属性を持たない1以上のメモリアクセス、例えば読み出し専用アクセス用にマッピングされたメモリへの書込み動作などをカウントすることができる。
【0066】
任意選択的に、処理ユニット101はそれぞれが複数の識別されたメモリ属性セットの1つに従って複数のページテーブルを生成し、複数の統計カウンタの少なくとも1つが複数のページテーブルの1つに関連付けられ、複数のページテーブルの他のものには関連付けられないようにする。例示的な実施形態においては、処理ユニット101が、第1の処理回路、例えば処理回路110A用に、メモリ属性の第1のセットに従って、例えばメモリ領域120A及びメモリ領域120Cのみをマッピングする第1のページテーブルを生成する。この例では、処理ユニット101が、第2の処理回路、例えば処理回路110B用に、メモリ属性の第2のセットに従って、例えばメモリ領域120Bのみをマッピングする第2のページテーブルを生成する。任意選択的に、複数のスレッド統計値の少なくとも第1の統計値が、第1のページテーブルをアクセスするとき、例えば処理回路110Aがメモリ領域120Bにアクセスするときの、少なくとも1つの例外にしたがって収集される。任意選択的に、複数のスレッド統計値の少なくとも第2の統計値が、第2のページテーブルにアクセスするとき、例えば処理回路110Bがメモリ領域120Cにアクセスするときの、少なくとも1つの他の例外にしたがって収集される。任意選択的に、処理回路は、処理回路110Aに対して第1のページテーブルと第2のページテーブルを生成する。任意選択的に、メモリ属性の第1のセットはメモリ属性の第2のセットとは異なり、例えば、メモリ属性の第1のセットは読出しアクセスを含み、メモリ属性の第2のセットは書き込みアクセスを含む。
【0067】
ここで再び図2を参照する。いくつかの実施形態では、2以上のスレッドが優先メモリ領域を共有し、これらの2以上のスレッドをその優先メモリ領域に関連付けられた1以上の処理回路によって実行することが利点となり得る。任意選択的に、ステップ240において処理ユニット101が、優先メモリ領域にアクセスする複数のスレッドのうちの2以上を識別する。任意選択的に、ステップ241において処理ユニット101は、優先メモリ領域に関連付けられた1以上の処理回路のうちの少なくともいくつかを、2以上のスレッドを実行するように構成する。例えば、優先メモリ領域がメモリ領域120Aであり、メモリ領域120Aが処理回路110Aと処理回路110Cに関連付けられている場合、ステップ241において、処理ユニット101は処理回路110Aと処理回路110Cの1以上を2以上のスレッドを実行するように構成する。任意選択的に、2以上のスレッドを実行するために処理回路110Aと処理回路110Cの1以上を構成することは、処理回路110Aと処理回路110Cの1以上を操作することを含む。
【0068】
任意選択的に、ステップ210での解析の実行に応答して、ステップ250において、処理ユニット101が複数のメモリ領域120の内の1メモリ領域から、複数のメモリ領域の他のメモリ領域へ、例えばメモリ領域120Fからメモリ領域120Hへ、少なくともいくつかのアプリケーションデータを移動する。任意選択的に、他のメモリ領域は優先メモリ領域であり、この例ではメモリ領域120Aである。任意選択的に、複数のスレッドの内の少なくとも1つの追加のスレッドが、少なくともいくつかのアプリケーションデータにアクセスする。ステップ251において、処理ユニット101は任意選択的に優先メモリ領域120Aに関連付けられた処理回路110Aを、少なくとも1つの追加スレッドを実行するように構成する。したがって、複数の反復のうちの1つの反復において、処理ユニット101は、複数のスレッドのうちの1つに対して識別された優先メモリ領域へ移動されたプログラムデータに従って、複数の処理回路110間で1以上のスレッドを移動可能である。
【0069】
様々な実施形態の説明を、例示を目的として提示してきたが、これは開示の実施形態で網羅することも、またそれに限定することも意図するものではない。説明した実施形態の範囲及び精神から逸脱することなく、多くの修正、変形が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、又は市場で見いだされる技術に対する実用化又は技術的改良を最もよく説明するために、あるいは、本明細書に開示の実施形態を他の当業者が理解できるようにするために選択された。
【0070】
この出願から満了する特許の存続期間の間に、多くの関連処理回路が開発されることが予想されるが、処理回路という用語の範囲は、そのような新技術を先験的に含むことを意図している。
【0071】
本明細書で使用の用語「約」は、10%を指す。
【0072】
用語「備える」、「備えた」、「含む」、「含んだ」、「有する」、及びそれらの活用形は、「含むがそれに限らない」ことを意味する。この用語は、「~から成る」、及び「本質的に~から成る」という用語を包含する。
【0073】
「本質的に~から成る」という表現は、組成又は方法が追加的な成分及び/又はステップを含み得るが、その追加的な成分及び/又はステップが特許請求の組成又は方法の基本的かつ新規の特性を実質的に変更しない場合に限ることを意味する。
【0074】
本明細書で使用の、単数形の「a、an」、「the」は文脈が明確に別段の指示をしない限り、複数への言及も含む。例えば、「1つの化合物」又は「少なくとも1つの化合物」という用語は、複数の化合物を、それらの混合物も含めて包含し得る。
【0075】
「例示的」という用語は、本明細書では、「例、実例、例示に供する」という意味で使用される。「例示的」として記述される任意の実施形態は、必ずしも他の実施形態よりも好適又は有利であると解釈されるべきではなく、及び/又は他の実施形態の特徴を組み込むことを排除するものでもない。
【0076】
「任意選択的に」という用語は、本明細書においては、「ある実施形態では提供され、他の実施形態では提供されない」ことを意味するように使用される。任意の特定の実施形態は、そのような特徴が相反しない限り、複数の「任意選択的な」特徴を含み得る。
【0077】
本出願を通じて、本発明の様々な実施形態が範囲形式で提示され得る。範囲形式の記述は、単に便宜的かつ簡潔化のためのものであって、本実施形態の範囲の一定不動の限定として解釈されるべきではないことを理解されたい。従って、範囲の記述は、その範囲内の個別の数値と共にすべての可能な部分範囲を具体的に開示しているものと見なされるべきである。例えば、1~6というような範囲の記述は、1~3、1~4、1~5、2~4、2~6、3~6などの具体的に開示された部分範囲、並びにその範囲内の個別の数値、例えば1、2、3、4、5、6を有すると見なされるべきである。このことは、範囲の広さに拘わらず適用される。
【0078】
本明細書で数値範囲が示されるときはいつでも、示された範囲内の任意の引用された数値(分数又は整数)を含むことが意味される。第1の指定数と第2の指定数「の間の範囲の/範囲にある」という句、及び、第1の指定数「から」第2の指定数「まで」の「範囲の/範囲にある」という句は、本明細書では互換的に使用されて、第1の指定数と第2の指定数、並びにその間のすべての分数及び整数を含むことを意味する。
【0079】
本発明の特定の特徴は、明確にするために別々の実施形態の文脈に記述されていても、組み合わせて1つの実施形態で提供され得ることが理解される。逆に、簡潔にするために単一の実施形態の文脈中に記述される本実施形態の様々な特徴は、別々に、又は任意の適切な部分的組合せで提供されることも、又は任意の他の説明される実施形態に適切であるように提供されることも可能である。様々な実施形態の文脈で記述される特定の特徴は、これらの要素なしではその実施形態が動作不能でない限りは、これらの実施形態の必須の特徴とは見なされない。
【0080】
実施形態を、その特定の実施形態に関連して説明してきたが、当業者には多くの代替、修正、変形が明らかなことは明白である。したがって、添付の特許請求の範囲の精神及び広い範囲内にあるそのような代替、修正及び変形のすべてを包含することが意図される。
【0081】
本明細書で言及したすべての刊行物、特許及び特許出願は、各個別の刊行物、特許及び特許出願が、参照により本明細書に組み込まれるよう参照されたときに具体的かつ個別的に記載されたかのごとくに、参照によってその全体が本明細書に組み込まれることが出願人の意図である。さらに、本出願内のいかなる参考文献の引用又は特定も、そのような参照が本発明に対する先行技術として利用可能であることを認めるものと解釈されるべきではない。項目の表題が使用される限りでは、それらは必ずしも限定的であると解釈されるべきではない。さらに、本出願のあらゆる優先権文書は参照によりその全体が本明細書に組み込まれる。
図1
図2
図3
図4
【外国語明細書】