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

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

▶ ザイリンクス インコーポレイテッドの特許一覧

特表2024-543389マルチソケットデータ処理システムにおけるシステムリソースの同期
<>
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図1
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図2
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図3
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図4
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図5
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図6
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図7
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図8
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図9
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図10
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図11
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図12
  • 特表-マルチソケットデータ処理システムにおけるシステムリソースの同期 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-21
(54)【発明の名称】マルチソケットデータ処理システムにおけるシステムリソースの同期
(51)【国際特許分類】
   G06F 9/52 20060101AFI20241114BHJP
【FI】
G06F9/52 150Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024527426
(86)(22)【出願日】2022-11-09
(85)【翻訳文提出日】2024-05-09
(86)【国際出願番号】 US2022079574
(87)【国際公開番号】W WO2023091872
(87)【国際公開日】2023-05-25
(31)【優先権主張番号】17/455,074
(32)【優先日】2021-11-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シャンカー,カーティク
(72)【発明者】
【氏名】ダスティダー,ジャイディープ
(72)【発明者】
【氏名】アンサリ,アーマド・アール
(72)【発明者】
【氏名】アーマド,サグヒーア
(57)【要約】
マルチソケットデータ処理システムのシステムリソースを同期させることは、プライマリシステムオンチップ(SOC)からグローバル同期回路にトリガイベントを提供することを含むことができる。プライマリSOCは、複数のSOCのうちの1つであり、トリガイベントは、第1のサイドバンドチャネルを経由して提供される。トリガイベントに応じて、グローバル同期回路は、第2のサイドバンドチャネルを経由して複数のSOCに同期イベントをブロードキャストすることができる。同期イベントに応じて、複数のSOCのうちの各SOCのシステムリソースは、共通の値でプログラムされる。プログラミングは、複数のSOCのシステムリソースを同期させる。
【特許請求の範囲】
【請求項1】
マルチソケットデータ処理システムのシステムリソースを同期させる方法であって、前記方法は、
プライマリシステムオンチップ(SOC)の制御下で、複数のシステムリソースであって、各システムリソースが、マルチSOCシステムの複数のSOCのうちの異なるSOC内に位置し、前記プライマリSOCが、前記複数のSOCのうちの1つである、複数のシステムリソースの各々を停止することと、
前記プライマリSOCを使用して、停止されている間に、前記複数のSOCの各他のSOCの前記システムリソースに更新された値を書き込むことと、
前記書き込むことの後に、前記プライマリSOCを使用して、前記複数のSOCのうちの各SOCにおける前記システムリソースの動作を開始することと、を含む、方法。
【請求項2】
前記停止することの後かつ前記書き込むことの前に、前記プライマリSOCを使用して、前記複数のシステムリソースの各々から値を読み取ることと、
前記プライマリSOC以外の前記複数のSOCのうちの各SOCについて、前記プライマリSOCによって、前記プライマリSOCの前記システムリソースから読み取られた値と、前記他のSOCの前記システムリソースから読み取られた前記値との間の差を決定することと、を含む、請求項1に記載の方法。
【請求項3】
前記書き込むことが、前記プライマリSOCが前記他のSOCの各々に前記更新された値を書き込むことを含み、前記他のSOCの各々に書き込まれる前記更新された値が、前記プライマリSOCの前記システムリソースから読み取られた前記値と、前記他のSOCの前記システムリソースから読み取られた前記値との間の前記差に依存する、請求項2に記載の方法。
【請求項4】
前記他のSOCの各システムリソースに前記更新された値を前記書き込むこと及び前記動作を開始することが、前記それぞれの他のSOCにおける前記複数のシステムリソースのうちの前記それぞれのシステムリソースと通信する前記プライマリSOCにおけるレイテンシを考慮する、請求項1に記載の方法。
【請求項5】
前記複数のSOCが、同一である、請求項1に記載の方法。
【請求項6】
前記停止すること、前記書き込むこと、及び前記開始することが、ブートプロセスの一部として伝達される、請求項1に記載の方法。
【請求項7】
前記プライマリSOCと前記他のSOCとの間の通信が、前記複数のSOCを通信可能にリンクする通信バスを経由して伝達される、請求項1に記載の方法。
【請求項8】
マルチソケットデータ処理システムのシステムリソースを同期させるためのシステムであって、前記システムは、
複数のシステムオンチップ(SOC)であって、前記複数のSOCは、通信バスを介して相互接続されており、各SOCは、複数のプロセッサコアを含み、前記複数のSOCのうちの1つのSOCがプライマリSOCとして指定されている、複数のSOCと、
グローバル同期回路と、
前記グローバル同期回路を前記複数のSOCの各々に結合する複数のサイドバンドチャネルと、を備え、
前記プライマリSOCは、前記複数のサイドバンドチャネルのうちの第1のサイドバンドチャネルを経由してトリガイベントを提供するように構成されており、前記トリガイベントは、前記複数のSOC内に配設された前記システムリソースの同期を開始し、
前記グローバル同期回路は、前記トリガイベントを受信することに応じて、前記複数のサイドバンドチャネルのうちの第2のサイドバンドチャネルを経由して前記複数のSOCの各々に同期イベントをブロードキャストするように構成されている、システム。
【請求項9】
前記同期イベントが、前記複数のSOCのうちの各SOCによって同時に受信される、請求項8に記載のシステム。
【請求項10】
前記複数のSOCのうちの各SOCが、異なるソケット内に配設されている、請求項8に記載のシステム。
【請求項11】
前記複数のSOCが、同一である、請求項8に記載のシステム。
【請求項12】
前記トリガイベント及び前記同期イベントが、ブートプロセスの一部として伝達される、請求項8に記載のシステム。
【請求項13】
前記プライマリSOCのみの選択されたプロセッサコアが、前記トリガイベントを提供する、請求項8に記載のシステム。
【請求項14】
前記同期イベントが、割り込みであり、前記複数のSOCのうちの各SOC内で、
前記割り込みが、前記複数のプロセッサコアのうちの選択されたプロセッサコアによって受信され、
各SOC内の前記選択されたプロセッサコアが、前記割り込みに応じて、同じSOC内の前記システムリソースの制御レジスタに書き込むことによって、前記システムリソースをプログラムするために割り込みサービスルーチンを実行する、請求項8に記載のシステム。
【請求項15】
前記複数のSOCのうちの各SOC内で、
前記同期イベントが、前記システムリソースの制御ロジックによって受信され、
前記同期イベントに応じて、前記システムリソースの前記制御ロジックが、同じSOC内の前記システムリソースをリセットする、請求項8に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はマルチプロセッシングに関し、より詳細には、マルチソケットデータ処理システム内のシステムリソースを同期させることに関する。
【背景技術】
【0002】
対称型マルチプロセッシング(symmetric multi-processing、SMP)データ処理システムは、複数のプロセッサ(例えば、2つ以上のプロセッサ)を含むハードウェア及びソフトウェアアーキテクチャを有するデータ処理システムである。プロセッサは同一であり、各プロセッサを同等に扱う単一のオペレーティングシステムインスタンスによって制御される。すなわち、プロセッサは特別な目的のために予約されない。プロセッサは、単一の共有メインメモリに接続され、全ての入出力デバイスへの完全アクセスを有する。
【0003】
マルチソケット(multi-socket、MS)データ処理システムは、各々が異なる物理ソケット内に配設された複数の相互接続されたプロセッサを有するデータ処理システムを指す。プロセッサは、通信バスを経由して起動されるコヒーレント通信リンクによって接続される。このような通信プロトコルの一例は、アクセラレータのためのキャッシュコヒーレントインターコネクト(Cache Coherent Interconnect for Accelerators、CCIX)である。コヒーレント通信リンクは、共有メインメモリアクセスをサポートする。
【0004】
いくつかのMS及び/又はSMPデータ処理システムでは、各プロセッサは、システムオンチップ(System-on-Chip、SOC)として実装され得る。SOCは、複数のプロセッサコアを含む集積回路(integrated circuit、IC)である。各プロセッサコアは、プログラムコードを実行するように構成され得る。ICは、パッケージ内の単一ダイとして、又は単一パッケージにおいて実装されたマルチダイICとして実装され得る。SMPデータ処理システム内では、オペレーティングシステム及びその中で実行されるアプリケーションは、全てのSOCにわたって統一されたビューを有する。オペレーティングシステムは更に、各プロセッサコアが同じSOCの一部であるかのように統一された方式で各プロセッサコアを見る。
【0005】
特定のマルチプロセッサデータ処理システムの1つの態様は、特定のシステムリソースがSOCにわたって同期化されなければならないことである。MS-SMPデータ処理システムを含む様々なタイプのシステムにおいてSOCにわたって同期されなければならないシステムリソースの一例は、システムカウンタである。一例として、MS-SMPデータ処理システムのオペレーティングシステムは、第1のソケット内に配設された第1のSOCにおける第1のプロセッサコアから、第2のソケット内に配設された第2のSOCにおける別のプロセッサコアにプロセスを移行し得る。移行されたプロセスは、移行前、移行中、及び移行後に、特定のシステムリソースの一貫した状態を見るべきである。例えば、システムカウンタの場合に、第1のSOCによって使用されるシステムカウンタは、各システムカウンタの値が動作中に一致する(例えば、同期される)ように、第2のSOCのシステムカウンタと同期されるべきである。これにより、移行されたプロセスは、移行前の第1のSOCのシステムカウンタと移行後の第2のSOCのシステムカウンタとに関して一致した状態を見ることが可能となる。
【発明の概要】
【0006】
1つ以上の例示的な実装形態では、マルチソケットデータ処理システムのシステムリソースを同期させる方法は、プライマリシステムオンチップ(SOC)の制御下で、複数のシステムリソースの各々を停止させることを含むことができる。各システムリソースは、マルチSOCシステムの複数のSOCのうちの異なるSOCに位置する。プライマリSOCは、複数のSOCのうちの1つである。本方法は、プライマリSOCを使用して、停止されている間に、複数のSOCの各他のSOCのシステムリソースに更新された値を書き込むことを含むことができる。本方法はまた、書き込むことの後に、プライマリSOCを使用して、複数のSOCのうちの各SOCにおけるシステムリソースの動作を開始することを含むことができる。
【0007】
一態様では、本方法は、停止することの後かつ書き込むことの前に、プライマリSOCを使用して、プライマリSOC以外の複数のSOCのうちの各SOCについて、複数のシステムリソースの各々から値を読み取ることと、プライマリSOCによって、プライマリSOCのシステムリソースから読み取られた値と他のSOCのシステムリソースから読み取られた値との間の差を決定することと、を含む。
【0008】
別の態様では、書き込むことが、プライマリSOCが他のSOCの各々に、更新された値を書き込むことを含み、他のSOCの各々に書き込まれる更新された値が、プライマリSOCのシステムリソースから読み取られた値と、他のSOCのシステムリソースから読み取られた値との間の差に依存する。
【0009】
別の態様では、他のSOCの各システムリソースに、更新された値を書き込むこと、及び動作を開始することは、それぞれの他のSOCにおける複数のシステムリソースのうちのそれぞれのシステムリソースと通信するプライマリSOCにおけるレイテンシを考慮する。
【0010】
別の態様では、複数のSOCは、同一である。
【0011】
別の態様では、停止すること、書き込むこと、及び開始することは、ブートプロセスの一部として伝達される。
【0012】
別の態様では、プライマリSOCと他のSOCとの間の通信は、複数のSOCを通信可能にリンクする通信バスを経由して伝達される。
【0013】
1つ以上の例示的な実装形態では、マルチソケットデータ処理システムのシステムリソースを同期させるためのシステムは、複数のSOCを含むことができる。複数のSOCは、通信バスを介して相互接続される。各SOCは、複数のプロセッサコアを含む。複数のSOCのうちの1つのSOCは、プライマリSOCとして指定される。システムは、グローバル同期回路を含むことができる。システムは、グローバル同期回路を複数のSOCの各々に結合する複数のサイドバンドチャネルを含むことができる。プライマリSOCは、複数のサイドバンドチャネルのうちの第1のサイドバンドチャネルを経由してトリガイベントを提供するように構成されている。トリガイベントは、複数のSOC内に配設されたシステムリソースの同期を開始する。グローバル同期回路は、トリガイベントを受信することに応じて、複数のサイドバンドチャネルのうちの第2のサイドバンドチャネルを経由して複数のSOCの各々に同期イベントをブロードキャストするように構成されている。
【0014】
一態様では、同期イベントは、複数のSOCのうちの各SOCによって同時に受信される。
【0015】
別の態様では、複数のSOCのうちの各SOCは、異なるソケット内に配設される。
【0016】
別の態様では、複数のSOCは、同一である。
【0017】
別の態様では、トリガイベント及び同期イベントは、ブートプロセスの一部として伝達される。
【0018】
別の態様では、プライマリSOCのみの選択されたプロセッサコアは、トリガイベントを提供する。
【0019】
別の態様では、同期イベントは割り込みであり、複数のSOCのうちの各SOC内で、割り込みは、複数のプロセッサコアのうちの選択されたプロセッサコアによって受信され、各SOC内の選択されたプロセッサコアは、割り込みに応じて、同じSOC内のシステムリソースの制御レジスタに書き込むことによって、システムリソースをプログラムするために割り込みサービスルーチンを実行する。
【0020】
別の態様では、複数のSOCのうちの各SOC内で、同期イベントは、システムリソースの制御ロジックによって受信され、同期イベントに応じて、システムリソースの制御ロジックは、同じSOC内のシステムリソースをリセットする。
【0021】
1つ以上の例示的な実装形態では、マルチソケットデータ処理システムのシステムリソースを同期させる方法は、プライマリSOCからグローバル同期回路にトリガイベントを提供することを含むことができる。プライマリSOCは、複数のSOCのうちの1つであり、トリガイベントは、第1のサイドバンドチャネルを経由して提供される。方法は、トリガイベントに応じて、グローバル同期回路から、第2のサイドバンドチャネルを経由して複数のSOCに同期イベントをブロードキャストすることを含むことができる。本方法はまた、同期イベントに応じて、複数のSOCのうちの各SOCのシステムリソースを共通の値でプログラミングすることを含むことができ、プログラミングは、複数のSOCのシステムリソースを同期させる。
【0022】
一態様では、提供すること、ブロードキャストすること、及びプログラミングすることは、複数のSOCを含むマルチソケットデータ処理システムのためのブートプロセスの一部として実行される。
【0023】
別の態様では、複数のSOCは、同一である。
【0024】
別の態様では、複数のSOCのうちの各SOCは、複数のプロセッサコアを含む。更に、複数のSOCのうちの選択されたSOCの複数のプロセッサコアのうちの選択されたプロセッサコアは、トリガイベントを提供する。
【0025】
別の態様では、同期イベントは割り込みであり、複数のSOCのうちの各SOCは複数のプロセッサコアを含み、複数のSOCのうちの各SOCの選択されたプロセッサコアは、同じSOC内に位置するシステムリソースをプログラムするために、割り込みに応じて割り込みサービスルーチンを実行する。
【0026】
別の態様では、複数のSOCのうちの各SOC内の選択されたプロセッサコアは、割り込みサービスルーチンを実行する際に、同じSOC内のシステムリソースの制御ロジックに書き込む。
【0027】
別の態様では、複数のSOCのうちの各SOC内で、同期イベントは、システムリソースの制御ロジックによって受信され、同期イベントに応じて、システムリソースの制御ロジックは、同じSOC内のシステムリソースをリセットする。
【0028】
この概要のセクションは、単に特定の概念を導入するために提供され、特許請求される主題の任意の重要な又は本質的な特徴を特定するためには提供されない。本発明の構成の他の特徴は、添付図面及び以下の詳細な説明から明らかになるであろう。
【0029】
本発明の構成は、例として添付図面に例解されている。しかしながら、図面は、本発明の構成を、示される特定の実装形態のみに限定するものと解釈されるべきではない。以下の詳細な説明を検討し、図面を参照すると、種々の態様及び利点が明らかになるであろう。
【図面の簡単な説明】
【0030】
図1】複数の相互接続されたシステムオンチップ(SOC)を含む例示的なシステムを例解する。
図2図1のシステムの特定の動作特徴を例解する例示的な方法を例解する。
図3】SOC間の例示的な通信を示す信号フロー図である。
図4図1のシステムの別の例示的な実装形態を例解する。
図5図1のシステムの特定の動作特徴を描写する例示的な方法を例解する。
図6】SOC間の例示的な通信を例解する別の信号フロー図である。
図7図1のシステムの別の例示的な実装形態を例解する。
図8】複数のSOCを含む別の例示的なシステムを例解する。
図9図8のシステムの特定の動作特徴を描写する例示的な方法を例解する。
図10図8のシステムのSOC間の例示的な通信を例解する信号フロー図である。
図11】サイドバンドチャネル及びグローバル同期回路構成を含むマルチソケット(MS)データ処理システムにおいてシステムリソースを同期させる例示的な方法を例解する。
図12】サイドバンドチャネル又はグローバル同期回路構成を含まないMSデータ処理システムにおいてシステムリソースを同期させる例示的な方法を例解する。
図13】マルチソケットデータ処理システムの一例を例解する。
【発明を実施するための形態】
【0031】
本開示はマルチプロセッシングに関し、より詳細には、マルチソケット(MS)データ処理システム内のシステムリソースを同期させることに関する。本発明の構成は、対称型マルチプロセッシング(SMP)データ処理システムにも適用され得る。各ソケットがシステムオンチップ(SOC)を含むMSデータ処理システムが実装されてもよい。各SOCは、複数のプロセッサコアを含み得る。
【0032】
MS-SMPデータ処理システムでは、適切かつエラーのない動作を保証するために、ブートプロセスが完了すると、特定のリソースをソケットにわたって同期させなければならない。SMP当たり1つ(例えば、SOC当たり1つ)としてMS-SMPデータ処理システム内でアーキテクチャ的に定義されるリソースは、この同期化を必要とする。これらのリソースの例は、システムカウンタ、デバッグトレースタイムスタンプジェネレータなどを含むが、これらに限定されない。
【0033】
例解の目的で、各ソケットに関連付けられたシステムカウンタはフリーランニングである。各システムカウンタが同じ周波数でカウントするように構成されているにもかかわらず、各システムカウンタが同時に開始する保証はない。それぞれのソケットのシステムカウンタが異なる開始時間を有する場合、システムカウンタの値は等しくないか又は同期しない。各ソケットのシステムカウンタが同期していない状態では、MS-SMPデータ処理システムのオペレーティングシステムは、異なるソケットにおけるプロセッサコア上でプロセスを管理しスケジューリングするときに、予測不可能な挙動を呈することがある。
【0034】
デバッグトレースタイムスタンプは、同期を必要とするシステムリソースの別の例である。デバッグトレースタイムスタンプが同期されていないときに、生成されシステムに記憶されたデバッグイベント及び/又はトレースイベントの時系列は正しくないことがある。これは、そのようなイベントの真の時系列を確立することを非常に困難にする。デバッグ活動は、不正確なイベント時系列によって妨げられることがある。デバッグトレースタイムスタンプを同期させることは、イベント時系列の精度を改善することによってMS-SMPシステムのデバッグ能力を改善し、これは、デバッグ作業を容易にする。
【0035】
本開示内で説明される本発明の構成は、MSデータ処理システム及び/又はMS-SMPデータ処理システムのいくつかのシステムリソースが同期されることを保証することができる方法、システム、及びコンピュータプログラム製品を提供する。本発明の構成の更なる態様は、図を参照して以下に説明される。
【0036】
図1は、例示的なシステム100を例解する。システム100は、MSデータ処理システムの一例である。更に、システム100は、MS-SMPデータ処理システムであり得る。図1の例では、システム100は、複数のSOC102を含む。システム100は、図示されるよりも少ない又は多いSOC102を含み得る。図1の例では、各SOC102は、それ自身のソケット内に配設される。図1の例では、各SOC102は、複数のプロセッサコア112を含む。プロセッサコア112は、ハードワイヤードプロセッサコア(例えば、硬化回路)であり得る。各プロセッサコアは、プログラムコードを実行するように構成され得る。更に、各SOC102は同一であり得る。
【0037】
別の態様では、各SOC102は、プログラマブルロジックから形成された1つ以上の「ソフトプロセッサ」を含み得る。更に別の態様では、各SOC102は、ハードワイヤードプロセッサとソフトプロセッサとの組み合わせを含み得る。1つ以上のSOC102がソフトプロセッサを実装する場合に、ソフトプロセッサを実装するSOC102は、ソフトプロセッサが同期されたシステムリソースへのアクセスを有するように実装されるべきである。
【0038】
一態様では、SOC102の各々は、同じ回路基板又はカード上に配設され得る。別の態様では、SOC102の各々は、異なる回路基板又はカード上に配設され得る。他の態様では、2つ以上の回路基板又はカードを使用し得、SOC102は、回路基板ごとに1つ以上のSOCの様々な組み合わせでそのような回路基板/カードにわたって分散される。SOC102は、データ処理システムのプロセッサとして使用されてもよいし、ホストプロセッサ又は中央処理装置(Central Processing Unit、CPU)を含むより大きなデータ処理システムに含まれるアクセラレータであってもよい。
【0039】
システム100内で、各ソケット、そのため各SOC102は、ソケット、そのためソケット内に配設されたSOC102を一意に識別するソケット識別子(identifier、ID)で識別され得る。MS-SMPデータ処理システムのオペレーティングシステムは、各SOCを等しく見ることができるが、1つのSOCがプライマリSOCとして指定されてもよい。したがって、プライマリソケット内に配設されたSOC102は、プライマリSOCとして指定され得る。プライマリソケット内に配設されたSOCは、一般に、他のソケットを含むシステム100の構成及びブートに関連する動作を処理する役割を果たす。例えば、プライマリSOCは、システム100のブート、電力管理、エラー、及び健全性管理などの機能を実行し得る。図1の例では、SOC102-1がプライマリSOC102である。
【0040】
SOC102は、通信バス104に結合される。一態様では、通信バス104は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(Peripheral Component Interconnect Express、PCIe)バスとして実装され得る。論じたように、コヒーレント通信リンクは、バス104を経由して起動され得る。SOC102はまた、グローバル同期回路(global synchronization circuit、GSC)106に通信可能にリンクされる。図1の例では、GSC106は、1つ以上のサイドバンドチャネルを介してSOC102の各々に結合される。例えば、各SOC102は、出力サイドバンドチャネル108(例えば、108-1、108-2、108-3、及び108-N)を介してGSC106に接続され得る。各SOC102はまた、経由してイベント及び/又は割り込みがGSC106からブロードキャストされ得る入力サイドバンドチャネル110を介してGSC106に結合される。サイドバンドチャネルは、通信バス104に関して実装されるものとは異なる物理信号経路である。すなわち、サイドバンドチャネルは、通信バス104とは区別され得る。
【0041】
1つ以上の例示的な実装形態では、サイドバンドチャネル108-1が含まれ得る一方で、サイドバンドチャネル108-2、108-3、及び108-Nは省略され得る。
【0042】
SOC102が同じ回路基板上に配設される1つ以上の例示的な実装形態では、GSC106は、SOC102と同じ回路基板上に配設され得る。別の例示的な実装形態では、GSC106は、SOC102が配設される回路基板とは別個の区別される回路基板上に配設され得る。SOC102が複数の異なる回路基板上に配設される更に別の例示的な実装形態では、GSC106は、SOC102のうちの1つ以上を含む回路基板のうちの1つの上に配設され得る。GSC106は、回路基板内のワイヤ/トレースを介して、及び/又は専用ケーブルによって、サイドバンドチャネルを介してSOC102に(例えば、SOC102に対するソケットに)結合され得る。
【0043】
1つ以上の例示的な実装形態では、各SOC102は、本明細書で説明される同期関連機能を実行するように指定された特定のプロセッサコアを含み得る。場合によっては、指定されたプロセッサコアは、システム制御プロセッサ(System Control Processor、SCP)と呼ばれる。SCPは、典型的には、システムのブート動作、電力管理、エラー管理、及び健全性管理を処理する。
【0044】
他の場合には、指定されたプロセッサコアは、システムリソースリセットプロセッサ(System Resource Reset Processor、SRRP)と呼ばれる。SOC102が同一である場合、SCP及びSRRPという用語は、そのような用語がプライマリSOC及び/又は非プライマリSOC内の特定のプロセッサコアを指すために使用される限りにおいて、それぞれのSOC102内のそれぞれの指定されたプロセッサコアの役割を指すためにのみ使用されると理解されたい。SCP及びSRRPは、アーキテクチャの観点から同じプロセッサコアであってもよい。
【0045】
一態様では、SCP/SRRPは、本開示内で説明される動作を実行するタスクを課された各SOC102内の専用プロセッサコアである。1つ以上の他の例示的な実装形態では、各SOC102のSCP/SRRPは、それぞれのSOC102内の他のプロセッサコアと同じであってもよいが、本明細書で説明される機能を実行するように指定又は選択され得る。すなわち、プロセッサコアは、それぞれのSOC102においてそのように指定された複数の同一のプロセッサコアのうちの1つであるSCP/SRRPと同一であり得る。
【0046】
各SOC102は、1つ以上の同期システムリソース(synchronized system resource、SSR)114を更に含む。本開示内では、システムカウンタが例示的なSSR114として使用される。システムカウンタは、単調に増加し、システムのブートセッションの寿命中にロールオーバしない回路である。SOC102のプロセッサコアは、そのSOCのためのシステムカウンタにサブスクライブし、システムカウンタを使用してプロセッサコアごとにタイマイベントを生成してもよく、このタイマイベントは、スケジューリングなどのために時間の概念を取得するためにオペレーティングシステム及び/又はアプリケーションによって使用され得る。
【0047】
SSR114の他の例は、デバッグトレースタイムスタンプ生成器を含み得る。しかしながら、SSR114は、説明された例に限定されることを意図されないと理解されたい。一般に、SMPごとに1つ、例えば、SOC102ごとに1つとしてアーキテクチャ的に定義されるSMPリソースは、同期を必要とし得、SSR114とみなされ得る。
【0048】
図2は、図1のシステム100の特定の動作特徴を描写する例示的な方法200を例解する。例解の目的で、SOC102-1が、システム100における「プライマリ」SOCとして指定される。図3は、図1のシステム100のSOC102間の例示的な通信を例解する信号フロー図である。図2図3は、システム100内でSSR114を同期させるための例示的な動作を例解しており、システム100のブートプロセスの一部として実行され得る。例解の目的で、SSR114は、システムカウンタであるとみなされる。最初に、言及したように、SSR114は、フリーランニングであり、システムリソースが同期開始時間を有していなかったので、SSR114とは異なる値を有する。むしろ、SSR114のうちの1つ以上又は全てが、異なる時間に動作を開始していることがある。SSR114の異なる値は、SSR114-1に対するX、SSR114-2に対するX、及びSSR114-Nに対するXとして示される、各々に記憶される値に反映される。
【0049】
図2図3を参照すると、ブロック202では、プライマリSOC102-1のSCPであるSCP302-1は、トリガイベント304をGSC106に提供する。一態様では、トリガイベント304はパルスであり得る。この例では、SCP302-1は、トリガイベント304を第1のサイドバンドチャネル108-1を経由してGSC106に提供するように構成されている。1つ以上の例示的な実装形態では、SCP302-1、例えばプライマリSOCのSCPのみが、トリガイベント304を生成し、サイドバンドチャネルを介してトリガイベントをGSC106に転送するように構成されている。
【0050】
ブロック204では、トリガイベント304に応じて、GSC106は、サイドバンドチャネル110を経由して複数のSOC102の各々に同期イベント306をブロードキャストすることができる。一態様では、同期イベント306は割り込みである。各SOC102は、同期イベント306に応じて、割り込みサービスルーチンを開始することができる。ブロック206では、各SOC102におけるSCP302-1、SRRP302-2、302-Nは、同期イベント306の受信に応じて割り込まれる。割り込みハンドラとも呼ばれる「割り込みサービスルーチン」は、ハードウェアデバイス、ソフトウェア割り込み命令、又はソフトウェア例外から生成され得る割り込み要求によって呼び出されるソフトウェアプロセスである。割り込みサービスルーチンは、要求を処理し、割り込みの発生前にプロセッサ/プロセッサコアによって実行されるアクティブプロセスに実行中に割り込む要求を特定のプログラム又はコード部分に送信する。割り込みサービスルーチンが完了するときに、割り込まれたプロセスが再開される。
【0051】
ブロック208では、各SOC102内の指定されたプロセッサコアは、同じSOC内に位置するそれぞれのSSR114をプログラムする(308)。指定されたプロセッサコアは、プライマリSOC102-1におけるSCP302-1、及び非プライマリSOC102-2、102-NにおけるSRRP302-2、302-Nであり得る。各SOC102のSSR114は、プログラミングの結果として同期される。例えば、プログラミングは、同じ構成データ又は値を各SSR114に書き込み得る。この例では、同期イベント306を受信することに応じて、SCP302-1、SRRP302-2、302-Nは、それぞれのプロセッサコアに同じSOC内に位置するそれぞれのSSR114をプログラムさせる割り込みサービスルーチンを実行することができる。各SOC102は、サイドバンドチャネルを経由してブロードキャストされた同期イベント306を受信するので、各々は、同期イベント306を同時に受信する。図3を参照すると、各指定されたプロセッサコア(例えば、SCP302-1、SRRP302-2、302-N)は、0の値を対応するSSR114に同時に書き込む。その結果、SSR114は、同期される。図3に例解されるように、各SSR114は、初期化された値、例えば、この場合0から動作し続け、その後、Xsyncにおいて同じ値を有する。
【0052】
図4は、システム100の別の例示的な実装形態を例解する。図4の例では、説明を容易にし、明確にするために、SOC102-1及び102-2のみが示されている。この例では、各SOC102は、複数のプロセッサコア402、404、406、及び302と、システムカウンタ408(例えば、SSR114)と、システムカウンタ制御レジスタ410と、位相ロックループ(phase locked loop、PLL)412と、出力ピン414と、入力ピン416と、を含む。
【0053】
図4の例では、SCP302-1は、サイドバンドチャネル108-1を介して出力ピン414-1から出てGSC106に伝達されるトリガイベント304を生成することができる。この例では、SRRP302-2は、出力ピン414-2に結合され得る。しかしながら、SRRP302-2は、プライマリSOC102-1の一部ではなく、トリガイベントを生成又は送信しない。
【0054】
トリガイベント304を受信することに応じて、GSC106は、サイドバンドチャネル110を経由して同期イベント306をブロードキャストする。各SOC102は、対応する入力ピン416を介して同期イベント306、例えば、割り込みを受信する。同期イベント306は、各SOC102における指定されたプロセッサコアに提供される。プライマリSOC102の指定されたプロセッサコアはSCP302-1であるが、各非プライマリSOC102における指定されたプロセッサコアはSRRP302-2である。
【0055】
SCP302-1は、同期イベント306を受信することに応じて、SCP302-1にシステム制御レジスタ410-1に構成データを書き込ませてシステムカウンタ408-1をリセットさせる割り込みサービスルーチンを実行する。SRRP302-2は、同期イベント306を受信することに応じて、SRRP302-2にシステム制御レジスタ410-2に構成データを書き込ませてシステムカウンタ408-2をリセットさせる割り込みサービスルーチンを実行する。同期イベント306が各SOC102にブロードキャストされるので、各SOC102は同期イベント306を同時に受信する。そのため、システムカウンタ408のリセットは同期して実行される。
【0056】
システムカウンタ408は、フリーランニングであるが、各々は、PLL412を通って流れる共通基準クロックからランオフする。同期されると、各システムカウンタ408は、共通基準クロックを受信するそれぞれのPLL412によって各々が駆動されるので、各他のシステムカウンタ408と同期された方式でカウントすることができる。システムカウンタ408は、同期されると、互いに同期して動作し続ける。したがって、同期されると、各SOC102におけるプロセッサコア402、404、及び406(並びにSCP302-1及びSRRP302-2)は各々、任意の所与の時間においてシステムカウンタ408-1又は408-2のいずれにおいて同じ値を見る。すなわち、システムカウンタ408-1は、システムカウンタ408-2と同期している。
【0057】
上述したように、カウンタ408は、システム100のブートセッションの寿命中に「ロールオーバ」しない単調増加カウンタであり得る。各SOC102のプロセッサコアは、時間の概念を決定又は取得するために、及びスケジューリングのために、オペレーティングシステム及び/又はアプリケーションによって使用され得るタイマイベントを(例えば、プロセッサコアごとに)生成するために、同じSOC内に位置するシステムカウンタにサブスクライブする。
【0058】
図5図7は、図2図4に例解されるような専用SRRPの必要性を回避しながら、専用サイドバンドチャネルを利用するSSR114を同期させるための代替的な実装形態を説明する。
【0059】
図5は、図1のシステム100の特定の動作特徴を描写する例示的な方法500を例解する。例解の目的で、SOC102-1が、システム100における「プライマリ」SOCとして指定される。図6は、図1のシステム100のSOC102間の例示的な通信を例解する信号フロー図である。図5図6は、システム100内でSSR114を同期させるための例示的な動作を例解しており、システム100のブートプロセスの一部として実行され得る。例解の目的で、SSR114は、システムカウンタであるとみなされる。最初に、言及したように、SSR114は、フリーランニングであり、SSR114が同期開始時間を有していなかったので、異なる値を有する。SSR114の異なる値は、SSR114-1に対するX、SSR114-2に対するX、及びSSR114-Nに対するXとして示される、各々に記憶される値に反映される。
【0060】
図5図6を参照すると、ブロック502では、プライマリSOC102-1のSCPであるSCP302-1は、トリガイベント304をGSC106に提供する。一態様では、トリガイベント304はパルスであり得る。この例では、SCP302-1は、トリガイベント304を第1のサイドバンドチャネル108-1を経由してGSC106に提供するように構成されている。1つ以上の例示的な実装形態では、SCP302-1、例えばプライマリSOCのSCPのみが、トリガイベント304を生成し、トリガイベントをGSC106に転送するように構成されている。
【0061】
ブロック504では、トリガイベント304に応じて、GSC106は、サイドバンドチャネル110を経由して複数のSOC102の各々に同期イベント306をブロードキャストすることができる。一態様では、同期イベント306はパルスであり得る。図3図7の例では、同期イベント306は、割り込みサービスルーチンの実行をトリガしない。むしろ、図3図7の例では、同期イベント306は、制御ロジック(例えば、各SOC102におけるそれぞれのSSR114のための制御ロジック)に直接提供される。ブロック506では、各SOC102における制御ロジックは、同期イベント306を受信する。ブロック508では、同期イベント306を受信することに応じて、各SOC102における制御ロジックは、その中のSSR114をリセットする。
【0062】
ブロック508の結果として、各SOC102のSSR114は、プログラミングの結果として同期される。例えば、プログラミングは、同じ構成データ又は値を各SSR114に書き込み得る。各SOC102は、サイドバンドチャネルを経由してブロードキャストされた同期イベント306を受信するので、各々は、同期イベント306を同時に受信する。この例では、同期イベント306を受信することに応じて、各SOC102の制御ロジックは、ブロック506に対応する行の値が「0」である図6に例解されるように、その中のSSR114を同時に0にリセットする。その結果、SSR114は、同期される。図6に例解されるように、SSR114の各々は、初期化された値、例えば、この場合0から動作し続け、その後、Xsyncにおいて同じ値を有する。
【0063】
図7は、図1のシステム100の別の例示的な実装形態を例解する。図7の例では、説明を容易にし、明確にするために、SOC102-1及び102-2のみが示されている。この例では、各SOC102は、複数のプロセッサコア402、404、406、及び302と、システムカウンタ408(例えば、SSR114)と、制御ロジック702と、位相ロックループ(PLL)412と、出力ピン414と、入力ピン416と、を含む。
【0064】
図7の例では、SCP302-1は、サイドバンドチャネル108-1を介して出力ピン414-1から出てGSC106に伝達されるトリガイベント304を生成することができる。この例では、SCP302-2は、出力ピン414-2に結合され得る。しかしながら、SCP302-2は、プライマリSOC102-1の一部ではなく、トリガイベントを生成又は送信しない。
【0065】
トリガイベント304を受信することに応じて、GSC106は、サイドバンドチャネル110を経由して同期イベント306をブロードキャストする。各SOC102は、対応する入力ピン416を介して同期イベント306を受信する。同期イベント306は、各それぞれのSOC102における制御ロジック702に直接提供される。各SOC102における制御ロジック702は、同期イベント306を受信することに応じて、対応するシステムカウンタ408を0にリセットする。各SOC102におけるカウンタ制御ロジック702は、同期イベント306を同時に受信するので、システムカウンタ408のリセットは、同期して実行される。
【0066】
システムカウンタ408は、フリーランニングであるが、各々は、PLL412を通って流れる共通基準クロックからランオフする。同期されると、各システムカウンタ408は、共通基準クロックを受信するPLL412によって各々が駆動されるので、各他のシステムカウンタ408と同期された方式でカウントすることができる。システムカウンタ408は、同期されると、互いに同期して動作し続ける。したがって、同期されると、各SOC102におけるプロセッサコア402、404、及び406(並びにSCP302-1及びSCP302-2)は各々、任意の所与の時間においてシステムカウンタ408-1又は408-2のいずれにおいて同じ値を見る。すなわち、システムカウンタ408-1は、システムカウンタ408-2と同期している。
【0067】
図7の例では、カウンタ408は、システム100のブートセッションの寿命中に「ロールオーバ」しない単調増加カウンタであり得る。各SOC102のプロセッサコアは、時間の概念を決定又は取得するために、及びスケジューリングのために、オペレーティングシステム及び/又はアプリケーションによって使用され得るタイマイベントを(例えば、プロセッサコアごとに)生成するために、同じSOC内に位置するシステムカウンタにサブスクライブする。
【0068】
図8図10は、専用サイドバンドチャネルなしで仮想化同期を利用するSSR114を同期させるための別の代替的な実装形態を説明する。図8図10の例では、サイドバンドチャネルを使用するのではなく、システムソフトウェアを使用して、MS-SMPデータ処理システムのブートプロセスの一部として同期を実行する。専用サイドバンドチャネルが使用されないので、図8図10の例示的な実装形態は、採用されるべき既存のシステムに対する特殊ハードウェア又はハードウェア更新を必要としない。しかしながら、サイドバンドチャネルの欠如は、専用サイドバンドチャネルを利用する例よりも大きいソケット間通信レイテンシをもたらす。
【0069】
図8は、例示的なシステム800を例解する。システム800は、実質的に図1に関連して説明したように実装され得る。図8の例では、システム800は、任意のサイドバンドチャネル又はGSC106を含まない。各SOC102は、マルチプロセッサコアアーキテクチャを有するとみなされ得る。説明の目的で、各SOC102は、図7の例に例解されるようなアーキテクチャを有し得るが、各SOC102において実装される特定のアーキテクチャは、限定することを意図しない。
【0070】
図8図10の例では、プライマリSOC102のSCPは、MS-SMPデータ処理システムの各個々のソケットにおける必要なリソースにアクセスする。プライマリSOC102のSCPが、MS-SMPデータ処理システムの各ソケットのためのシステムカウンタ制御レジスタ及び/又は制御ロジックにアクセスできるようにするために、MS-SMPデータ処理システムのシステムアドレスマップは、MS-SMPデータ処理システムの制御レジスタ及びステータスレジスタをプライマリSOC102のSCPに公開しなければならない。システムアドレスマップは、例えば、システムにおける構成要素、回路ブロック、周辺機器などの様々なメモリマップされたターゲットのアドレス範囲を指定するデータ構造である。更に、ブートシーケンス中、同期動作は、プライマリSOC102のSCPがそのようなハードウェア構成要素にアクセスすることを可能にするために、いくつかのハードウェア構成要素がリセット状態から出されることに依拠する。
【0071】
図9は、図8のシステム800、例えば、サイドバンドチャネル又はGSCを含まないMP-SMPデータ処理システムのいくつかの動作特徴を描写する例示的な方法900を例解する。例解の目的で、SOC102-1が、システム800における「プライマリ」SOCとして指定される。図10は、図8のシステム800のSOC102間の例示的な通信を例解する信号フロー図である。図9図10は、システム800内でSSR114を同期させるための例示的な動作を例解しており、システム800のブートプロセスの一部として実行され得る。例解の目的で、SSR114は、システムカウンタであるとみなされる。最初に、言及したように、SSR114は、フリーランニングであり、SSR114が同期開始時間を有していなかったので、異なる値を有する。SSR114の異なる値は、SSR114-1に対するY、SSR114-2に対するY、SSR114-3に対するY、及びSSR114-Nに対するYとして示される各々に記憶された値に反映される。図8図10の例では、伝達されるイベント及び/又は信号は、バス104を経由して伝達される。
【0072】
図9図10を参照すると、ブロック902では、プライマリSOC102のSCP(例えば、SCP302-1)は、停止イベントを各SSR114に発行する。図10の例では、SCP302-1は、停止イベント1002を同じSOC、例えばSSR114-1におけるSSR114に発行し、各他のSOC102におけるSSR114に発行する。ブロック902の一部として、SCPは、停止された各SSR114の値を更に読み取る。一般に、それぞれのSSR114の値は、各他のSSRがSSR114-1の値の後のある量の遅延(delay、D)である値を有するという点で、SSR114-1を参照して決定され得る。SCP302-1は、SSR114-1を参照して各SSR114の遅延を決定することができる。
【0073】
ブロック904では、プライマリSOC102のSCPは、各他のSOC102におけるSSRを更新する。SCPは、同じSOCにおけるSSRを更新しない。図10を参照すると、SCP302-1は、ブロック902で最初に読み取られた値と同じ値をSSR114-1に残す。SCP302-1は、SSR114-1の値に更新される特定のSSR114のそれぞれの遅延を加えた値を書き込む(1004)ことによって、各他のSSR114-2、114-3、114-Nの値を更新する。図10は、ブロック904中にSCP302-1によってSSR114-2、114-3、及び114-Nの各々に書き込まれた更新された値を例解する。
【0074】
ブロック906では、プライマリSOC102のSCPは、動作を再開するようにSSR114の各々にシグナリングするイベントを送信する。図10の例では、SCP302-1は、動作を再開するためにイベント1006を各SSRに送信する。動作を再開するために各SSR114をシグナリングする際に、SCP302-1から各それぞれのSSRに提供される信号は、ブロック902で測定されたのと同じ遅延を受ける。図10は、ブロック908において、各SSR114が同期され、フリーランニングであることを例解する。各SSR114は、論じたように、他のSSR114と同期されたままであるように、共通基準クロックを使用してクロックされ得る。
【0075】
1つ以上の例示的な実装形態では、本明細書において及び/又は図9に関連して説明されるような停止、更新などのイベントは、バス104を経由して同期及び伝達されているリソースに関連付けられた、例えば制御レジスタへのレジスタ書き込みとして実装され得る。様々なソケットの同期されたリソースに向けられたレジスタ書き込みは、連続して迅速にバック・ツー・バックで実行され得る。他の例示的な実装形態では、様々なソケットにおける同期されたリソースへの個々の書き込みが実行される必要がないように、イベントを複数のソケットに伝達するための専用ブロードキャスト機能が含まれ得る。バック・ツー・バック書き込み又はブロードキャスト機能性が実行されるかどうかにかかわらず、他のソケットと通信する際の遅延は、本明細書で説明される例示的な技法を使用して説明され得る。
【0076】
表1は、図9図10で説明した様々な時点におけるSSR114、例えば、システムカウンタの例示的な状態を例解する。
【表1】
【0077】
表1の例では、ソケット1は、SOC102-1、例えば、プライマリSOCに対応する。最初に、各システムカウンタは、リセットから出ており(例えば、ブートプロセスに対応する)、フリーランニングであり得る。システムカウンタの動作は、各々が異なる値を有するので同期されない。プライマリSOCのSCPは、停止イベントを発行する。システムカウンタが停止すると、SCPは各システムカウンタの値を読み取り、それぞれのシステムカウンタの値とプライマリソケットにおけるシステムカウンタの値との差を計算する。ソケット「N」における所与のカウンタの場合、この差はDであり、ここで、D=Y-Yである。値Dはまた、ソケット「N」のシステムカウンタの停止とソケット1のシステムカウンタの停止との間の遅延を示す。
【0078】
遅延は、特定のソケット内の特定のSSRの制御レジスタ及び/又は制御ロジック、例えば、この場合、システムカウンタにアクセスするために、プライマリソケット内のSCPによって生じる待ち時間として近似され得る。したがって、SCPが各システムカウンタをアンフォールトするときに、更新されたカウンタ値がこのレイテンシを補償するように、各システムカウンタ値がSCPによって書き換えられ得る。SCPは、ソケット「N」のシステムカウンタをY+Dに書き換えることができる。これは、SCPがシステムカウンタをアンフォールトするときに、システムカウンタを再開する際に生じる遅延が、遅延Dを使用して、更新されたシステムカウンタ値において行われる調整によって打ち消されることを保証する。
【0079】
表2は、プライマリソケットのSCPがシステムカウンタの値を上書きし、再開イベント(例えば、イベント1006)を発行する際、SSR114、例えば、システムカウンタの例示的な状態を例解する。
【表2】
【0080】
本開示内で説明される例示的な実装形態は、MS-SMPデータ処理システムの文脈で説明されるが、本明細書で説明される様々な同期機構及び技法は、SMPデータ処理システムではない、複数のソケットを有する他のデータ処理システムのシステムリソースを同期させるように拡張され得ると理解されたい。
【0081】
図11は、MSデータ処理システム(システム)においてシステムリソースを同期させる例示的な方法1100を例解する。システムは、SMPデータ処理システムであり得る。
【0082】
ブロック1102では、システムのプライマリSOCは、トリガイベントをGSC106に提供することができる。プライマリSOCは、複数のSOCのうちの1つであり、トリガイベントは、第1のサイドバンドチャネル108-1を経由して提供される。ブロック1104では、トリガイベントに応じて、GSC106は、第2のサイドバンドチャネル110を経由して複数のSOCに同期イベントをブロードキャストすることができる。ブロック1106では、同期イベントに応じて、システムの複数のSOCのうちの各SOCにおけるシステムリソースは、共通の値でプログラムされる。プログラミングは、複数のSOCのシステムリソースを同期させる。
【0083】
前述及び他の実装形態は各々、以下の特徴のうちの1つ以上を単独で又は組み合わせて任意選択で含むことができる。いくつかの例示的な実装形態は、以下の特徴の全てを組み合わせて含む。
【0084】
一態様では、説明される動作、例えば、提供すること、ブロードキャストすること、及びプログラミングすることは、複数のSOCを含むMSデータ処理システムのためのブートプロセスの一部として実行される。動作は、システムリソース(例えば、SSR114)がリセット状態から出ることに応じて実行され得る。
【0085】
別の態様では、複数のSOCは同一である。
【0086】
別の態様では、複数のSOCのうちの各SOCは、複数のプロセッサコアを含む。複数のSOCのうちの選択されたSOCの複数のプロセッサコアのうちの選択されたプロセッサコアは、トリガイベントを提供する。例えば、本明細書で説明されるSCPは、トリガイベントを提供し得る。
【0087】
別の態様では、複数のSOCのうちの各SOCは、複数のプロセッサコアを含む。同期イベントは割り込みであってもよい。複数のSOCのうちの各SOCの選択されたプロセッサコアは、同じSOC内に位置するシステムリソースをプログラムするために、割り込みに応じて割り込みサービスルーチンを実行する。選択されたプロセッサは、プライマリSOCにおけるSCP及び非プライマリSOCにおけるSRRPであり得る。
【0088】
別の態様では、複数のSOCのうちの各SOC内の選択されたプロセッサコアは、割り込みサービスルーチンを実行する際に、同じSOC内のシステムリソースの制御レジスタ及び/又は制御ロジックに書き込む。
【0089】
別の態様では、複数のSOCのうちの各SOC内で、同期イベントは、システムリソースの制御ロジックによって受信される。同期イベントに応じて、各それぞれのSOCにおけるシステムリソースの制御ロジックは、同じSOC内のシステムリソースをリセットする。
【0090】
図12は、MSデータ処理システム(システム)においてシステムリソースを同期させる例示的な方法1200を例示する。システムは、SMPデータ処理システムであり得る。図12の例では、システムはサイドバンドチャネルを含まず、GSC106を含まない。
【0091】
ブロック1202では、プライマリSOCは、システムにおける複数のシステムリソースの各々を停止させることができる。各システムリソースは、マルチSOCシステムの複数のSOCのうちの異なるSOCに位置する。プライマリSOCは、複数のSOCのうちの1つである。ブロック1204では、プライマリSOCは、停止されている間に、複数のSOCの各他のSOCのシステムリソースに更新された値を書き込むことができる。ブロック1206では、プライマリSOCは、書き込みに続いて、複数のSOCのうちの各SOCにおけるシステムリソースの動作を開始(アンフォールト)することができる。
【0092】
前述及び他の実装形態は各々、以下の特徴のうちの1つ以上を単独で又は組み合わせて任意選択で含むことができる。いくつかの例示的な実装形態は、以下の特徴の全てを組み合わせて含む。
【0093】
一態様では、停止することの後かつ書き込むことの前に、プライマリSOC、例えば、プライマリSOCのSCPは、複数のシステムリソースの各々から値を読み取ることが可能である。プライマリSOC以外の複数のSOCのうちの各SOCについて、SCPは、プライマリSOCのシステムリソースから読み取られた値と、他のSOCのシステムリソースから読み取られた値との間の差を決定することができる。書き込みは、プライマリSOC、例えば、プライマリSOCのSCPが、他のSOCの各々に更新された値を書き込むことを含む。他のSOCの各々に書き込まれる更新された値は、プライマリSOCのシステムリソースから読み取られた値と、他のSOCのシステムリソースから読み取られた値との間の差に依存する。
【0094】
別の態様では、他のSOCの各システムリソースに更新された値を書き込むこと、及び動作を開始することは、それぞれの他のSOCにおける複数のシステムリソースのうちのそれぞれのシステムリソースと通信するプライマリSOCにおけるレイテンシを考慮する。
【0095】
別の態様では、複数のSOCは同一である。
【0096】
別の態様では、停止すること、書き込むこと、及び開始することは、ブートプロセスの一部として伝達される。動作は、システムリソース(例えば、SSR114)がリセット状態から出ることに応じて実行され得る。
【0097】
別の態様では、プライマリSOCと他のSOCとの間の通信は、複数のSOCを通信可能にリンクする通信バスを経由して伝達される。
【0098】
図13は、MSデータ処理システム1300の例示的な実装形態を例解する。データ処理システム1300は更に、SMPタイプのシステムであってもよい。データ処理システム1300の構成要素は、複数のSOC1302、メモリ1304、及びメモリ1304を含む様々なシステム構成要素をSOC1302に結合するバス1306を含むことができるが、これらに限定されない。SOC1302は、x86タイプのアーキテクチャ(IA-32、IA-64など)、Power Architecture、ARMプロセッサなどを含むが、これらに限定されない様々な異なるアーキテクチャのうちのいずれかを有するプロセッサコアを含み得る。言及したように、場合によっては、SOC1302は、SOCの複数のプロセッサコアのうちの1つ以上を実装するために使用され得るプログラマブルロジックを含み得る。
【0099】
論じたように、場合によっては、MSデータ処理システムは、中央処理装置(CPU)を含み、アクセラレータとして複数のSOC1302を含み得る。アクセラレータは、1つ以上の異なる回路基板、カード、シャーシ構造上に配設されてもよく、又は、例えばバス1306などの通信バスを介してデータ処理システム1300と通信可能にリンクする他の利用可能なフォームファクタで実装され得る。1つ以上の例示的な実装形態では、アクセラレータは、オープン・コンピュート・プロジェクト(Open Compute Project、OCP)及び/又はOCPアクセラレータモジュール(OCP Accelerator Module、OAM)仕様の一部として記載された様々な規格及び/又は仕様のいずれかに従って実装され得る。更に、任意のそのようなアクセラレータは、1つ以上の異なる通信プロトコルを使用して異なるシステム及び/又はデバイスに結合するための、様々な異なるコネクタ及び/又はコネクタの組み合わせのいずれかを含み得ると理解されたい。
【0100】
バス1306は、様々な通信バス構造のいずれかのうちの1つ以上を表す。限定ではなく例として、バス1306は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)バスとして実装され得る。他の通信バスが、PCIeの代わりに、又はそれに加えて使用され得る。データ処理システム1300は、典型的には、様々なコンピュータシステム可読媒体を含む。そのような媒体は、コンピュータ可読揮発性並びに不揮発性媒体及びコンピュータ可読リムーバブル並びに非リムーバブル媒体を含み得る。
【0101】
メモリ1304は、ランダムアクセスメモリ(random-access memory、RAM)1308及び/又はキャッシュメモリ1310などの揮発性メモリの形態のコンピュータ可読媒体を含み得る。データ処理システム1300はまた、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むことができる。例として、ストレージシステム1312は、非リムーバブルの不揮発性磁気及び/又はソリッドステート媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)から読み取り、それに書き込むために提供され得る。示されていないが、リムーバブルの不揮発性磁気ディスク(例えば、「フロッピー(登録商標)ディスク」)から読み取り、それに書き込むための磁気ディスクドライブ、及びCD-ROM、DVD-ROM、又は他の光媒体などのリムーバブルの不揮発性光ディスクから読み取り、それに書き込むための光ディスクドライブが、提供され得る。そのような場合、各々は、1つ以上のデータ媒体インターフェースによってバス1306に接続され得る。メモリ1304は、少なくとも1つのコンピュータプログラム製品の一例である。
【0102】
プログラムモジュール1316のセット(少なくとも1つ)を有するプログラム/ユーティリティ1314は、メモリ1304に記憶され得る。プログラム/ユーティリティ1314は、SOC1302のプロセッサコアによって実行可能である。例として、プログラムモジュール1316は、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを表し得る。プログラムモジュール1316は、実行時に、データ処理システム1300、例えば、1つ以上のCPU(図示せず)及び/又はSOC1302に、本開示内で説明される例示的な実装形態の機能及び/又は方法論を実行させる。データ処理システム1300によって使用され、生成され、及び/又は演算されるプログラム/ユーティリティ1314及び任意のデータ項目は、データ処理システム1300によって使用されるときに機能性を与える機能データ構造である。
【0103】
例えば、1つ以上の例示的な実装形態では、SOC1302は、図1に関連して説明したように実装されてもよく、GSC(図示せず)を含み得る。1つ以上の他の例示的な実装形態では、SOC1302は、図8に関連して説明されたように実装され得る。
【0104】
データ処理システム1300は、バス1306に通信可能にリンクされた1つ以上の入力/出力(Input/Output、I/O)インターフェース1318を含み得る。I/Oインターフェース1318は、データ処理システム1300が、1つ以上の外部デバイス1320と通信すること、並びに/又はローカルエリアネットワーク(local area network、LAN)、ワイドエリアネットワーク(wide area network、WAN)、及び/若しくはパブリックネットワーク(例えば、インターネット)などの1つ以上のネットワークを経由して通信することを可能にする。I/Oインターフェース1318の例としては、ネットワークカード、モデム、ネットワークアダプタ、ハードウェアコントローラなどが挙げられ得るが、これらに限定されない。外部デバイスの例はまた、ユーザがデータ処理システム1300と対話することを可能にするデバイス(例えば、ディスプレイ、キーボード、及び/又はポインティングデバイス)及び/又はアクセラレータカードなどの他のデバイスを含み得る。
【0105】
データ処理システム1300は、1つの例示的な実装形態にすぎない。データ処理システム1300は、スタンドアロンデバイスとして(例えば、ユーザコンピューティングデバイス又はサーバとして、ベアメタルサーバとして)、クラスタ(例えば、2つ以上の相互接続されたコンピュータ)において、又は通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散クラウドコンピューティング環境において(例えば、クラウドコンピューティングノードとして)実施され得る。分散クラウドコンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカル及びリモートの両方のコンピュータシステム記憶媒体内に位置し得る。図13の例は、本明細書で説明される例示的な実装形態の使用又は機能性の範囲に関していかなる限定も示唆するものではない。データ処理システムは、この開示内で説明される様々な動作を実行することができるコンピュータハードウェアの一例である。
【0106】
データ処理システム1300は、実装されるデバイス及び/又はシステムの特定のタイプに応じて、示されるよりも少ない構成要素、又は図13に例解されない追加の構成要素を含み得る。含まれる特定のオペレーティングシステム及び/又はアプリケーションは、含まれるI/Oデバイスのタイプと同様に、デバイス及び/又はシステムタイプに従って変化し得る。更に、例解的な構成要素のうちの1つ以上は、別の構成要素に組み込まれ得るか、又は別の構成要素の一部を形成し得る。例えば、プロセッサは、少なくとも何らかのメモリを含み得る。
【0107】
データ処理システム1300は、多数の他の汎用又は特殊目的コンピューティングシステム環境又は構成で動作可能であり得る。データ処理システム1300とともに使用するのに好適であり得るコンピューティングシステム、環境、及び/又は構成の例は、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、及び上記のシステム又はデバイスのいずれかを含む分散クラウドコンピューティング環境などを含むが、これらに限定されない。
【0108】
いくつかのコンピューティング環境、例えば、データ処理システム1300又は他の好適なデータ処理システムを使用するクラウドコンピューティング環境及び/又はエッジコンピューティング環境は、一般に、FPGAアズ・ア・サービス(FPGA-as-a-Service、FaaS)モデルをサポートする。FaaSモデルでは、ユーザ機能は、(ホスト)データ処理システムの制御下で動作するプログラマブルIC内に実装された回路設計としてハードウェア加速される。クラウドコンピューティングモデルの他の例は、NIST(National Institute of Standards and Technology)、より具体的には、Information Technology Laboratory of NISTに説明されている。
【0109】
本開示は、新規の特徴を定義する特許請求の範囲で終わるが、本開示内で説明される種々の特徴は、図面と併せて説明を検討することからより良好に理解されると考えられる。本明細書において説明されるプロセス、機械、製造、及びそれらの任意の変形例は、例解の目的で提供される。本開示内で説明される特定の構造的及び機能的詳細は、限定として解釈されるべきではなく、単に、特許請求の範囲のための基礎として、及び事実上任意の適切に詳述された構造において説明される特徴を種々に採用するように当業者に教示するための代表的な基礎として解釈されるべきである。更に、本開示内で使用される用語及び句は、限定することを意図するものではなく、説明される特徴の理解可能な説明を提供することを意図するものである。
【0110】
例解を簡単かつ明確にするために、図に示される要素は、必ずしも縮尺どおりに描かれているわけではない。例えば、要素のうちのいくつかの寸法は、明確にするために、他の要素に対して誇張されている場合がある。更に、適切であるとみなされる場合、参照番号は、対応する、類似する、又は同様の特徴を示すために、図の間で繰り返される。
【0111】
本明細書で定義される場合、単数形の「a」、「an」、及び「the」は、文脈上別途明白に示さない限り、複数形も同様に含むことが意図される。
【0112】
本明細書で定義される場合、「およそ」という用語は、ほぼ正しい又は正確な値又は量に近いが厳密ではないことを意味する。例えば、「およそ」という用語は、列挙された特性、パラメータ、又は値が、正確な特性、パラメータ、又は値の所定の量内にあることを意味し得る。
【0113】
本明細書で定義される場合、「少なくとも1つ」、「1つ以上」、及び「及び/又は」という用語は、明示的に別段に言明しない限り、動作において連言的及び選言的の両方であるオープンエンド表現である。例えば、「A、B、及びCのうちの少なくとも1つ」、「A、B、又はCのうちの少なくとも1つ」、「A、B、及びCのうちの1つ以上」、「A、B、又はCのうちの1つ以上」、並びに「A、B、及び/又はC」という表現の各々は、A単独、B単独、C単独、A及びBの組み合わせ、A及びCの組み合わせ、B及びCの組み合わせ、又はA、B及びCの組み合わせを意味する。
【0114】
本明細書で定義される場合、「自動的に」という用語は、人間の介入がないことを意味する。本明細書で定義される場合、「ユーザ」という用語は人間を意味する。
【0115】
本明細書で使用される場合、「クラウドコンピューティング」という用語は、ネットワーク、サーバ、ストレージ、アプリケーション、IC(例えば、プログラマブルIC)及び/又はサービスなどの構成可能なコンピューティングリソースの共有プールへの便利なオンデマンドネットワークアクセスを容易にするコンピューティングモデルを指す。これらのコンピューティングリソースは、最小限の管理労力又はサービスプロバイダ相互作用で迅速にプロビジョニング及び解放され得る。クラウドコンピューティングは、可用性を促進し、オンデマンドセルフサービス、広域ネットワークアクセス、リソースプーリング、迅速な弾力性、及び測定されたサービスによって特徴付けられ得る。
【0116】
本明細書で定義される場合、「コンピュータ可読記憶媒体」という用語は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムコードを含有又は記憶する記憶媒体を意味する。本明細書で定義される場合、「コンピュータ可読記憶媒体」は、それ自体は一時的な伝搬信号ではない。コンピュータ可読記憶媒体は、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は前述の任意の好適な組み合わせであることができるが、これらに限定されない。本明細書で説明される様々な形態のメモリは、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、RAM、読み取り専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、電子的消去可能プログラマブル読み取り専用メモリ(electronically erasable programmable read-only memory、EEPROM)、スタティックランダムアクセスメモリ(static random-access memory、SRAM)、ポータブルコンパクトディスク読み取り専用メモリ(portable compact disc read-only memory、CD-ROM)、デジタル多用途ディスク(digital versatile disk、DVD)、メモリスティック、フロッピーディスクなどを含み得る。
【0117】
本開示内で定義されるように、「データ構造」という用語は、物理メモリ内のデータのデータモデルの編成の物理的実装形態を意味する。したがって、データ構造は、メモリ内の特定の電気的又は磁気的構造要素から形成される。データ構造は、プロセッサを使用して実行されるアプリケーションプログラムによって使用されるように、メモリに記憶されたデータに物理的編成を課す。
【0118】
本明細書で定義される場合、「場合」という用語は、文脈に応じて、「ときに」又は「~すると」又は「に応答して」又は「に応じて」を意味する。したがって、「~と判定される場合」又は「[記載される条件又はイベント]が検出される場合」という句は、文脈に応じて、「~と判定すると」若しくは「~と判定することに応じて」、又は「[記載される条件又はイベント]を検出すると」若しくは「[記載される条件又はイベント]を検出することに応じて」又は「[記載される条件又はイベント]を検出することに応じて」を意味すると解釈され得る。
【0119】
本明細書で定義される場合、「に応じて」という用語及び上で説明されるような類似の文言、例えば、「場合」、「ときに」、又は「~すると」は、アクション又はイベントに容易に応答又は反応することを意味する。応答又は反応は自動的に実行される。したがって、第2のアクションが第1のアクションに「応じて」実行される場合、第1のアクションの発生と第2のアクションの発生との間に因果関係がある。「に応じて」という用語は、因果関係を示す。
【0120】
本明細書で定義される場合、「データ処理システム」は、データを処理するように構成された1つ以上のハードウェアシステムを意味し、各ハードウェアシステムは、動作を開始するようにプログラムされた少なくとも1つのプロセッサと、メモリと、を含む。
【0121】
本明細書で定義される場合、「プロセッサ」又は「プロセッサコア」という用語は、プログラムコードに含有される命令を実行することができる少なくとも1つの回路を意味する。回路は、集積回路であり得るか、又は集積回路に埋め込まれ得る。SOCは、本明細書で説明される場合、複数のプロセッサコアを含み、場合によっては、「プロセッサ」と称され得る。
【0122】
本明細書で定義される場合、回路に関して「ソフト」という用語は、回路がプログラマブルロジック又はプログラマブル回路構成で実装されることを意味する。したがって、「ソフトプロセッサ」は、プログラムコードに含有される命令を実行することができるプログラマブル回路構成に実装された少なくとも1つの回路を意味する。
【0123】
本明細書で定義される場合、「出力」という用語は、物理メモリ要素、例えば、デバイスに記憶すること、ディスプレイ又は他の周辺出力デバイスに書き込むこと、別のシステムに送信又は伝送すること、エクスポートすることなどを意味する。
【0124】
本明細書で定義される場合、「実質的に」という用語は、列挙された特性、パラメータ、又は値が、正確に達成される必要はないが、例えば、公差、測定誤差、測定精度制限、及び当業者に公知の他の要因を含む偏差又は変動が、特性が提供することが意図された効果を排除しない量で生じ得ることを意味する。
【0125】
第1、第2などの用語は、様々な要素を説明するために本明細書で使用され得る。これらの要素は、これらの用語によって限定されるべきではない。なぜなら、これらの用語は、別段に言明しない限り、又は文脈が明らかにそうでないことを示さない限り、1つの要素を別の要素から区別するために使用されるにすぎないからである。
【0126】
コンピュータプログラム製品は、プロセッサに本明細書で説明される発明の構成を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。本開示内で、「プログラムコード」という用語は、「コンピュータ可読プログラム命令」という用語と互換的に使用される。本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、又はネットワーク、例えば、インターネット、LAN、WAN、及び/若しくは無線ネットワークを介して、又は外部コンピュータ若しくは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバを含むエッジデバイスを含み得る。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために伝送する。
【0127】
本明細書で説明される本発明の構成の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、又はオブジェクト指向プログラミング言語及び/若しくは手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコード若しくはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、状態設定データを含み得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行し得る。後者のシナリオでは、リモートコンピュータは、LAN若しくはWANを含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、又は外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続され得る。場合によっては、例えば、プログラマブルロジック回路構成、FPGA、又はPLAを含む電子回路構成は、本開示に記載される発明の構成の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路構成を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0128】
本開示の構成の特定の態様は、方法、装置(システム)、及びコンピュータプログラム製品のフローチャート例解図及び/又はブロック図を参照して本明細書で説明される。フローチャート例解図及び/又はブロック図の各ブロック、並びにフローチャート例解図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令、例えばプログラムコードによって実装され得ることが理解されよう。
【0129】
これらのコンピュータ可読プログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為を実装するための手段を作成するような機械をもたらすように、コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサに提供され得る。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、フローチャート及び/又はブロック図のブロックで指定された動作の態様を実装する命令を含む製造物品を含むように、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに、特定の方法で機能するように指示することができる、コンピュータ可読記憶媒体に記憶され得る。
【0130】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為を実装するように、コンピュータによって実装されるプロセスを生成するために、コンピュータ、他のプログラマブル装置、又は他のデバイス上で一連の動作を行わせ得る。
【0131】
図中のフローチャート及びブロック図は、本開示の構成の様々な態様による、システム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、及び動作を例解する。これに関して、フローチャート又はブロック図の各ブロックは、指定された動作を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、又は部分を表し得る。
【0132】
いくつかの代替的な実装形態では、ブロックにおいて述べられる動作は、図において述べられる順序から外れて発生する場合がある。例えば、連続して示される2つのブロックは、実質的に同時に実行され得るか、又はブロックは、関与する機能性に応じて、時には逆の順序で実行され得る。他の例では、ブロックは、一般に数字の昇順で実行され得、更に他の例では、1つ以上のブロックは、様々な順序で実行され得、結果は、記憶され、後続のブロック又は直後に続かない他のブロックにおいて利用される。ブロック図及び/又はフローチャート例解図の各ブロック、並びにブロック図及び/又はフローチャート例解図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
図1
図2
図3
図4
図5
図6
【図
【図
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】