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

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

▶ クアルコム,インコーポレイテッドの特許一覧

特許7568886チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法
<>
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図1
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図2
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図3
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図4
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図5
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図6
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図7
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図8A
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図8B
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図8C
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図8D
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図8E
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図9
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図10
  • 特許-チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】チップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのシステムおよび方法
(51)【国際特許分類】
   G06F 15/78 20060101AFI20241008BHJP
【FI】
G06F15/78 530
G06F15/78 517
【請求項の数】 31
(21)【出願番号】P 2024507919
(86)(22)【出願日】2022-07-11
(65)【公表番号】
(43)【公表日】2024-09-03
(86)【国際出願番号】 US2022036642
(87)【国際公開番号】W WO2023022810
(87)【国際公開日】2023-02-23
【審査請求日】2024-02-07
(31)【優先権主張番号】17/402,884
(32)【優先日】2021-08-16
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ナヴィーン・クマール・ナラーラ
(72)【発明者】
【氏名】マシュー・セヴァソン
(72)【発明者】
【氏名】ハオボ・ジャオ
【審査官】坂庭 剛史
(56)【参考文献】
【文献】国際公開第2017/099861(WO,A1)
【文献】米国特許出願公開第2011/0148850(US,A1)
【文献】米国特許出願公開第2009/0189639(US,A1)
【文献】米国特許出願公開第2016/0132097(US,A1)
【文献】米国特許出願公開第2007/0105525(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
システムオンチップ(SoC)であって、
第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、
第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、
前記第1のチップレットと前記第2のチップレットとを通信可能に結合しているインターフェースバスと、
前記第1のチップレットおよび前記第2のチップレットにスリープクロックを供給するように構成される電力管理集積回路(PMIC)と
を備え、
前記第1のチップレットは、前記インターフェースバスを介して前記スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前にグローバルカウンタ同期パルストリガを前記第2のチップレットに送信するように構成され、
前記第2のチップレットは、前記グローバルカウンタ同期パルストリガを受信したことに応じて、前記スリープクロックの前記スリープクロック同期エッジにおいて、グローバルカウンタ同期値を前記第2のチップレットグローバルカウンタサブシステムにロードするように構成される、SoC。
【請求項2】
前記第1のチップレットは、
前記第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出し、
前記第1のチップレットグローバルカウンタ値に基づいて前記グローバルカウンタ同期値を生成し、
前記インターフェースバスを介して、前記グローバルカウンタ同期値を前記第2のチップレットに送信する
ようにさらに構成され、
前記第2のチップレットは、前記グローバルカウンタ同期値をプリロードレジスタに記憶するようにさらに構成され、前記グローバルカウンタ同期値は、前記プリロードレジスタから前記第2のチップレットグローバルカウンタサブシステムにロードされる、
請求項1に記載のSoC。
【請求項3】
前記第1のチップレットグローバルカウンタ値は、前記スリープクロックの立ち上がりエッジにおいて、前記第1のチップレットグローバルカウンタサブシステムから読み出される、請求項2に記載のSoC。
【請求項4】
前記第1のチップレットは、前記スリープクロックの前記スリープクロック同期エッジを判定するようにさらに構成され、前記スリープクロック同期エッジは、前記スリープクロックの立ち上がりエッジである、請求項1に記載のSoC。
【請求項5】
前記第1のチップレットは、前記スリープクロック同期エッジと前記スリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において前記グローバルカウンタ同期パルストリガを前記第2のチップレットに送信するようにさらに構成される、請求項1に記載のSoC。
【請求項6】
前記第1のチップレットは、リセットアサーションを前記第2のチップレットに送信するようにさらに構成され、
前記第2のチップレットは、前記リセットアサーションに応じて前記インターフェースバスを介して前記第1のチップレットにグローバルカウンタ同期要求を送信するようにさらに構成され、
前記第1のチップレットは、前記第1のチップレットが前記第2のチップレットから前記グローバルカウンタ同期要求を受信したことに応じて、前記インターフェースバスを介して、前記グローバルカウンタ同期パルストリガを前記第2のチップレットに送信するように構成される、
請求項1に記載のSoC。
【請求項7】
前記第2のチップレットは、
前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化するであって、前記第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、ことと、
前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化するであって、前記第1のチップレットグローバルカウンタサブシステムが前記第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、前記グローバルカウンタ同期経路を有効化する、ことと
を行うようにさらに構成される、請求項1に記載のSoC。
【請求項8】
前記第1のチップレットは、前記第1のチップレットグローバルカウンタサブシステム内および前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することであって、前記第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、前記第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、ことを行わせるようにさらに構成され、
前記第2のチップレットは、前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することであって、前記第1のチップレットグローバルカウンタサブシステムが前記第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、ことを行うようにさらに構成される、
請求項1に記載のSoC。
【請求項9】
前記第1のチップレットと前記第2のチップレットとの間のスリープクロックスキューは、水晶発振器2クロックサイクル以下であり、前記スリープクロックは、スター構成で前記第1のチップレットおよび前記第2のチップレットに分配される、請求項1に記載のSoC。
【請求項10】
第3のチップレットグローバルカウンタサブシステムを含む第3のチップレットであって、前記インターフェースバスが、前記第1のチップレットと前記第3のチップレットとを通信可能に結合する第3のチップレットをさらに備え、
前記第1のチップレットは、前記インターフェースバスを介して、前記第3のチップレットに前記グローバルカウンタ同期パルストリガを送信するようにさらに構成され、
前記第3のチップレットは、前記グローバルカウンタ同期パルストリガを受信したことに応じて、前記スリープクロックの前記スリープクロック同期エッジにおいて、前記グローバルカウンタ同期値を前記第3のチップレットグローバルカウンタサブシステムにロードするように構成される、請求項1に記載のSoC。
【請求項11】
前記インターフェースバスは、システム電力管理インターフェース(SPMI)バスである、請求項1に記載のSoC。
【請求項12】
マルチチップレットシステム内のグローバルカウンタ同期のための方法であって、
電力管理集積回路(PMIC)を介して、スリープクロックを第1のチップレットおよび第2のチップレットに供給するステップと、
スリープクロック同期エッジと前記スリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、グローバルカウンタ同期パルストリガを前記第1のチップレットから前記第2のチップレットに送信するステップと、
前記第2のチップレットが前記グローバルカウンタ同期パルストリガを受信したことに応じて、前記スリープクロックの前記スリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードするステップと
を含む、方法。
【請求項13】
前記第1のチップレットによって、第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すステップと、
前記第1のチップレットによって、前記第1のチップレットグローバルカウンタ値に基づいて前記グローバルカウンタ同期値を生成するステップと、
前記グローバルカウンタ同期値を前記第1のチップレットから前記第2のチップレットに送信するステップと、
前記第2のチップレットのプリロードレジスタに前記グローバルカウンタ同期値を記憶するステップであって、前記グローバルカウンタ同期値は、前記プリロードレジスタから前記第2のチップレットグローバルカウンタサブシステムにロードされる、ステップと
をさらに含む、請求項12に記載の方法。
【請求項14】
前記第1のチップレットグローバルカウンタ値は、前記スリープクロックの立ち上がりエッジにおいて前記第1のチップレットグローバルカウンタサブシステムから読み出される、請求項13に記載の方法。
【請求項15】
前記第1のチップレットによって、前記スリープクロックの前記スリープクロック同期エッジを判定するステップをさらに含み、前記スリープクロック同期エッジは、前記スリープクロックの立ち上がりエッジである、請求項12に記載の方法。
【請求項16】
前記スリープクロックの前記スリープクロック同期エッジよりも1スリープクロックサイクル前に、前記グローバルカウンタ同期パルストリガを前記第1のチップレットから前記第2のチップレットに送信するステップをさらに含む、請求項12に記載の方法。
【請求項17】
前記第1のチップレットから前記第2のチップレットにリセットアサーションを送信するステップと、
前記リセットアサーションに応じてグローバルカウンタ同期要求を前記第2のチップレットから前記第1のチップレットに送信するステップと
をさらに含み、
前記第1のチップレットから前記第2のチップレットに前記グローバルカウンタ同期パルストリガを送信するステップは、前記第1のチップレットが前記第2のチップレットから前記グローバルカウンタ同期要求を受信したことに応ずる、請求項12に記載の方法。
【請求項18】
前記第2のチップレットによって、前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化するステップであって、前記第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、ステップと、
前記第2のチップレットによって、前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を、有効化するステップは、第1のチップレットグローバルカウンタサブシステムが前記第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、ステップと
をさらに含む、請求項12に記載の方法。
【請求項19】
前記第1のチップレットによって、第1のチップレットグローバルカウンタサブシステムおよび前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化するステップであって、前記第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開し、前記第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開する、ステップと、
前記第2のチップレットによって、前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化するステップであって、前記第1のチップレットグローバルカウンタサブシステムが前記第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、ステップと、
をさらに含む、請求項12に記載の方法。
【請求項20】
システムオンチップ(SoC)であって、
第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、
第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、
前記第1のチップレットおよび前記第2のチップレットにスリープクロックを供給するための手段と、
前記スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを前記第1のチップレットから前記第2のチップレットに送信するための手段と、
前記第2のチップレットが前記グローバルカウンタ同期パルストリガを受信したことに応じて、前記スリープクロックの前記スリープクロック同期エッジにおいて、グローバルカウンタ同期値を前記第2のチップレットグローバルカウンタサブシステムにロードするための手段と、
を備える、SoC。
【請求項21】
前記第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すための手段と、
前記第1のチップレットグローバルカウンタ値に基づいて、前記グローバルカウンタ同期値を生成するための手段と、
前記グローバルカウンタ同期値を前記第1のチップレットから前記第2のチップレットに送信するための手段と、
前記グローバルカウンタ同期値を、前記第2のチップレットのプリロードレジスタに記憶するための手段であって、前記グローバルカウンタ同期値は、前記プリロードレジスタから前記第2のチップレットグローバルカウンタサブシステムにロードされる、手段と
をさらに備える、請求項20に記載のSoC。
【請求項22】
前記第1のチップレットグローバルカウンタ値は、前記スリープクロックの立ち上がりエッジにおいて、前記第1のチップレットグローバルカウンタサブシステムから読み出される、請求項21に記載のSoC。
【請求項23】
前記スリープクロックの前記スリープクロック同期エッジを判定する手段をさらに備え、前記スリープクロック同期エッジは、前記スリープクロックの立ち上がりエッジである、請求項20に記載のSoC。
【請求項24】
前記スリープクロック同期エッジと前記スリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、前記グローバルカウンタ同期パルストリガを前記第1のチップレットから前記第2のチップレットに送信する手段をさらに備える、請求項20に記載のSoC。
【請求項25】
前記第1のチップレットから前記第2のチップレットにリセットアサーションを送信するための手段と、
前記リセットアサーションに応じて、グローバルカウンタ同期要求を前記第2のチップレットから前記第1のチップレットに送信するための手段と
をさらに備え、
前記第1のチップレットから前記第2のチップレットに前記グローバルカウンタ同期パルストリガを送信するための手段は、前記第1のチップレットが前記第2のチップレットから前記グローバルカウンタ同期要求を受信したことに応ずる、
請求項20に記載のSoC。
【請求項26】
前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化するための手段であって、前記第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、手段と、
前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化するための手段であって、前記第1のチップレットグローバルカウンタサブシステムが前記第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、手段と
をさらに備える、請求項20に記載のSoC。
【請求項27】
前記第1のチップレットグローバルカウンタサブシステム内および前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化するための手段であって、前記第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、前記第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、前記グローバルカウンタ停止を無効化する手段と
前記第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化するための手段であって、前記第1のチップレットグローバルカウンタサブシステムが前記第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、手段と
をさらに備える、請求項20に記載のSoC。
【請求項28】
マルチチップレットシステム内の第1のチップレットによって実行されるグローバルカウンタ同期のための方法であって、
電力管理集積回路(PMIC)からスリープクロックを受信するステップと、
前記スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第2のチップレットに送信するステップと
を含み、
前記グローバルカウンタ同期パルストリガは、前記第2のチップレットに、前記スリープクロックの前記スリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードさせるように構成される、方法。
【請求項29】
第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すステップと、
前記第1のチップレットグローバルカウンタ値に基づいて前記グローバルカウンタ同期値を生成するステップと、
前記グローバルカウンタ同期値を前記第2のチップレットに送信するステップと
をさらに含む、請求項28に記載の方法。
【請求項30】
システムオンチップ(SoC)であって、
第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、
第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、
前記第1のチップレットと前記第2のチップレットとを通信可能に結合しているインターフェースバスと、
前記第1のチップレットおよび前記第2のチップレットにスリープクロックを供給するように構成される電力管理集積回路(PMIC)と
を備え、
前記第1のチップレットは、
前記PMICからスリープクロックを受信することと、
前記スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを前記第2のチップレットに送信することであって、前記グローバルカウンタ同期パルストリガは、前記第2のチップレットに、前記スリープクロックの前記スリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードさせる、ことと
を行わせるように構成される、SoC。
【請求項31】
前記第1のチップレットは、
第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出し、
前記第1のチップレットグローバルカウンタ値に基づいて前記グローバルカウンタ同期値を生成し、
前記グローバルカウンタ同期値を前記第2のチップレットに送信する
ようにさらに構成される、請求項30に記載のSoC。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年8月16日に出願された米国非仮特許出願第17/402884号からの優先権の利益を主張する。なお、当該出願の内容全体は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
様々なコンピューティングデバイスおよび通信デバイスで使用される集積回路の複雑さおよび能力の増大に対応するために、コンピューティングチップは、部分に分けた形で実装されることが増えている。例えば、処理デバイスおよび大規模集積回路は、結合されたタスクおよびプロセスを実行するために一緒に使用され得る、複数の「チップレット」を含み得る。これらのプロセスの同期は、処理速度が増加するにつれてますます困難になってきている。処理速度が増加するにつれて、エラーが発生し、悪意のある攻撃に対する脆弱性を生じる可能性もまた、増加し得る。結果として、マルチチップレットシステム内の1つ又はすべてのチップレット上で発生し得る任意のそのようなエラーをより良好に分離および識別するために、マルチチップレットシステム内のチップレットどうしを同期させる必要性が増大している。
【発明の概要】
【0003】
様々な態様は、スリープクロックの立ち上がりエッジを使用して、マルチチップレットシステム内でグローバルカウンタの同期を提供するための方法およびデバイスを含む。様々な態様では、マスタチップレットは、インターフェースバスを介して、グローバルカウンタ同期パルストリガをスレーブチップレットに送信するように構成されていてもよく、それに応じて、スレーブチップレットは、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値をスレーブチップレットグローバルカウンタサブシステムにロードするように構成されていてもよい。
【0004】
いくつかの態様は、第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、第1のチップレットおよび第2のチップレットを通信可能に結合しているインターフェースバスと、第1のチップレットおよび第2のチップレットにスリープクロックを供給するように構成される電力管理集積回路(PMIC)とを含んでもよく、第1のチップレットは、インターフェースバスを介して、第2のチップレットにグローバルカウンタ同期パルストリガを送信するように構成され、第2のチップレットは、グローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードするように構成される。
【0005】
いくつかの態様では、第1のチップレットは、第1のチップレットグローバルカウンタサブシステムから、第1のチップレットグローバルカウンタ値を読み出し、第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を生成し、インターフェースバスを介して、グローバルカウンタ同期値を第2のチップレットに送信するようにさらに構成されていてもよく、第2のチップレットは、グローバルカウンタ同期値をプリロードレジスタに記憶するようにさらに構成されていてもよく、グローバルカウンタ同期値は、プリロードレジスタから第2のチップレットグローバルカウンタサブシステムにロードされる。
【0006】
いくつかの態様では、第1のチップレットグローバルカウンタ値は、スリープクロックの立ち上がりエッジにおいて第1のチップレットグローバルカウンタサブシステムから読み出され得る。いくつかの態様では、第1のチップレットは、スリープクロックのスリープクロック同期エッジを判定するようにさらに構成される場合があるが、スリープクロック同期エッジは、スリープクロックの立ち上がりエッジである。いくつかの態様では、第1のチップレットは、スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第2のチップレットに送信するようにさらに構成される場合がある。いくつかの態様では、第1のチップレットは、スリープクロック同期エッジとスリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、グローバルカウンタ同期パルストリガを第2のチップレットに送信するようにさらに構成される場合がある。
【0007】
いくつかの態様では、第1のチップレットは、リセットアサーションを第2のチップレットに送信するようにさらに構成されていてもよく、第2のチップレットは、リセットアサーションに応じて、インターフェースバスを介して、グローバルカウンタ同期要求を第1のチップレットに送信するようにさらに構成されていてもよく、第1のチップレットは、第1のチップレットが第2のチップレットからグローバルカウンタ同期要求を受信したことに応じて、インターフェースバスを介して、グローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成される。
【0008】
いくつかの態様では、第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化し、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化するようにさらに構成されていてもよい。
【0009】
いくつかの態様では、第1のチップレットは、第1のチップレットグローバルカウンタサブシステム内および第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化するは、第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化するようにさらに構成されていてもよく、第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化ことは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化するようにさらに構成されていてもよい。
【0010】
いくつかの態様では、第1のチップレットと第2のチップレットとの間のスリープクロックスキューは、水晶発振器クロックサイクル2つ分以下であり、スリープクロックは、スター構成で第1のチップレットおよび第2のチップレットに分配されてもよい。いくつかの態様では、インターフェースバスは、システム電力管理インターフェース(SPMI)バスであり得る。
【0011】
いくつかの態様は、第3のチップレットグローバルカウンタサブシステムを含む第3のチップレットをさらに含んでもよく、インターフェースバスは、第1のチップレットと第3のチップレットとを通信可能に結合し、第1のチップレットは、インターフェースバスを介して、第3のチップレットにグローバルカウンタ同期パルストリガを送信するようにさらに構成されていてもよく、第3のチップレットは、グローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、第3のチップレットグローバルカウンタサブシステムにグローバルカウンタ同期値をロードするように構成されていてもよい。
【0012】
更なる態様は、マルチチップレットシステム内のグローバルカウンタ同期のための方法をさらに含み得る。そのような態様は、PMICを介して、スリープクロックを第1のチップレットおよび第2のチップレットに供給することと、第1のチップレットから第2のチップレットにグローバルカウンタ同期パルストリガを送信することと、第2のチップレットがグローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードすることと、を含み得る。
【0013】
いくつかの態様は、第1のチップレットによって、第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すことと、第1のチップレットによって、第1のチップレットグローバルカウンタ値に基づいてグローバルカウンタ同期値を生成することと、グローバルカウンタ同期値を第1のチップレットから第2のチップレットに送信することと、グローバルカウンタ同期値を、第2のチップレットのプリロードレジスタに記憶することと、を含み得、グローバルカウンタ同期値をプリロードレジスタから第2のチップレットグローバルカウンタサブシステムにロードする。いくつかの態様では、第1のチップレットグローバルカウンタ値は、スリープクロックの立ち上がりエッジにおいて第1のチップレットグローバルカウンタサブシステムから読み出され得る。
【0014】
いくつかの態様は、第1のチップレットによって、スリープクロックのスリープクロック同期エッジを判定することをさらに含んでもよく、スリープクロック同期エッジは、スリープクロックの立ち上がりエッジである。いくつかの態様は、スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信することをさらに含み得る。いくつかの態様は、スリープクロック同期エッジとスリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信することをさらに含み得る。
【0015】
いくつかの態様は、第1のチップレットから第2のチップレットにリセットアサーションを送信することと、リセットアサーションに応じて、グローバルカウンタ同期要求を第2のチップレットから第1のチップレットに送信することとをさらに含んでいてもよく、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信することは、グローバルカウンタ同期要求を第1のチップレットが第2のチップレットから受信したことに応じて実行される。
【0016】
いくつかの態様は、第2のチップレットによって、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化することと、第2のチップレットによって、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信する、グローバルカウンタ同期経路を有効化することを可能にすることと、をさらに含み得る。
【0017】
いくつかの態様は、第1のチップレットによって、第1のチップレットグローバルカウンタサブシステムおよび第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化することと、第2のチップレットによって、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化することと、をさらに含み得る。
【0018】
更なる態様は、SoCを含み得るが、そのSoCは、第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、スリープクロックを、第1のチップレットおよび第2のチップレットに供給する手段と、第1のチップレットから第2のチップレットにグローバルカウンタ同期パルストリガを送信する手段と、第2のチップレットがグローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードする手段と、を含むものである。
【0019】
いくつかの態様は、第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出す手段と、第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を生成する手段と、グローバルカウンタ同期値を第1のチップレットから第2のチップレットに送信する手段と、グローバルカウンタ同期値を、第2のチップレットのプリロードレジスタに記憶する手段と、をさらに含み得、グローバルカウンタ同期値をプリロードレジスタから第2のチップレットグローバルカウンタサブシステムにロードする。
【0020】
いくつかの態様では、第1のチップレットグローバルカウンタ値は、スリープクロックの立ち上がりエッジにおいて第1のチップレットグローバルカウンタサブシステムから読み出される。いくつかの態様は、スリープクロックのスリープクロック同期エッジを判定する手段をさらに含んでもよく、スリープクロック同期エッジは、スリープクロックの立ち上がりエッジである。いくつかの態様は、スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信する手段をさらに含み得る。いくつかの態様は、スリープクロック同期エッジとスリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信する手段をさらに含み得る。
【0021】
いくつかの態様は、第1のチップレットから第2のチップレットにリセットアサーションを送信する手段と、リセットアサーションに応じて、グローバルカウンタ同期要求を第2のチップレットから第1のチップレットに送信する手段とをさらに含んでいてもよく、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信する手段は、第1のチップレットが第2のチップレットからグローバルカウンタ同期要求を受信したことに応ずるものである。いくつかの態様は、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開する、グローバルカウンタ停止を無効化する手段と、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化する手段と、をさらに含み得る。
【0022】
いくつかの態様は、第1のチップレットグローバルカウンタサブシステムおよび第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化する手段と、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする手段と、をさらに含み得る。
【0023】
更なる態様は、マルチチップレットシステム内の第1のチップレットによって実行されるグローバルカウンタ同期のための方法であって、PMICからスリープクロックを受信することと、グローバルカウンタ同期パルストリガを第2のチップレットに送信することと、を含む方法を含み、その方法では、グローバルカウンタ同期パルストリガは、第2のチップレットに、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードさせるように構成される。いくつかの態様は、第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すことと、第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を生成することと、グローバルカウンタ同期値を第2のチップレットに送信することと、をさらに含み得る。
【0024】
更なる態様は、SoCを含むが、そのSoCは、第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、第1のチップレットと第2のチップレットとを通信可能に結合しているインターフェースバスと、第1のチップレットおよび第2のチップレットにスリープクロックを供給するように構成されるPMICと、を含むが、第1のチップレットは、PMICからスリープクロックを受信し、グローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成され、グローバルカウンタ同期パルストリガは、第2のチップレットに、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードさせるように構成される。いくつかの態様では、第1のチップレットは、第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出し、第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を生成し、グローバルカウンタ同期値を第2のチップレットに送信するようにさらに構成される場合がある。
【0025】
本明細書に組み込まれ本明細書の一部を構成する添付の図面は、例示的な実施形態を示し、上記の全般的な説明および以下で与えられる詳細な説明とともに、様々な実施形態の特徴を説明するのに役立つ。
【図面の簡単な説明】
【0026】
図1】様々な実施形態を実装するのに適した例示的なマルチチップレットシステム回路を示す構成要素ブロック図である。
図2】いくつかの実施形態による、ブートシーケンス中のマルチチップレットシステムにおける、スリープクロックエッジベースのグローバルカウンタ同期のためのマルチチップレットシステムにおける、動作およびチップレットどうしの間の通信を示すメッセージフロー図である。
図3】いくつかの実施形態による、スレーブチップレットグローバルカウンタが停止されたときの、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのマルチチップレットシステムにおける、動作およびチップレットどうしの間の通信を示すメッセージフロー図である。
図4】いくつかの実施形態による、マスタチップレットグローバルカウンタが停止されたときの、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのマルチチップレットシステムにおける、動作およびチップレットどうしの間の通信を示すメッセージフロー図である。
図5】いくつかの実施形態による、マルチチップレットシステムにおけるグローバルカウンタ同期パルストリガのためのタイミングフローを示すタイミング図である。
図6】いくつかの実施形態による、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのタイミングフローを示すタイミング図である。
図7】様々な実施形態による、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のための一実施形態の方法700を示すプロセスフロー図である。
図8A】いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800aを示すプロセスフロー図である。
図8B】いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期化の一実施形態の方法800bを示すプロセスフロー図である。
図8C】いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800cを示すプロセスフロー図である。
図8D】いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800dを示すプロセスフロー図である。
図8E】いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800eを示すプロセスフロー図である。
図9】様々な実施形態を実装するのに適した、スマートフォン1100の形態の例示的なワイヤレスデバイスの構成要素ブロック図である。
図10】様々な実施形態とともに使用するのに適した例示的なコンピューティングデバイスを示す構成要素ブロック図である。
図11】様々な実施形態とともに使用するのに適した例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【0027】
様々な実施形態について、添付の図面を参照して詳細に説明する。可能な場合はどこでも、同じか又は同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態に対してなされる参照は、例示を目的としており、特許請求の範囲を限定するものではない。
【0028】
様々な実施形態は、スリープクロックエッジベースのグローバルカウンタ同期方法を利用する、マルチチップレットシステム内のハードウェアベースのグローバルカウンタ同期ソリューションを提供する。様々な実施形態は、複数のチップレットを含むシステムオンチップ(SoC)又は同様のシステムにおいて実装され得るが、それらのチップレットの各々は、インターフェースバスに結合されたチップレットグローバルカウンタサブシステムと、スリープクロックを第1のチップレットおよび第2のチップレットに供給するように構成される電力管理集積回路(PMIC)と、を含むものである。第1のチップレットは、インターフェースバスを介して、グローバルカウンタ同期パルストリガを第2のチップレットに送信し得るが、それに応じて、第2のチップレットが、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードし得る。
【0029】
「システムオンチップ」(system on chip、SoC)という用語は、本明細書では、単一の基板上に組み込まれた複数のリソースおよび/又はプロセッサを含んでいる単一の集積回路(integrated circuit、IC)チップを指すために使用される。単一のSoCは、デジタル機能、アナログ機能、混合信号機能、および無線周波数機能のための回路を含んでいることがある。単一のSoCはまた、任意の数の汎用又は専用プロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(ROM、RAM、フラッシュなど)、およびリソース(タイマ、電圧調節器、発振器など)を含み得る。SoCはまた、統合されたリソースおよびプロセッサを制御するため、周辺デバイスを制御するためのソフトウェアを含み得る。
【0030】
「システムインパッケージ」(system-in-a-package、SIP)という用語は、2つ以上のICチップ、基板、又はSoC上で複数のリソース、計算ユニット、コア、又はプロセッサを含んでいる、単一のモジュール又はパッケージを指すために、本明細書で使用される。例えば、SIPは、その上で複数のICチップ又は半導体ダイが垂直構成で積層される、単一の基板を含み得る。同様に、SIPは、その上で複数のIC又は半導体ダイが、単一化基板にパッケージングされる、1つ以上のマルチチップモジュール(multi-chip module、MCM)を含み得る。SIPはまた、単一のマザーボード上、又は単一のワイヤレスデバイス内などで、高速通信回路を介して互いに結合され、極めて近接してパッケージングされた、複数の独立したSoCを含み得る。SoCの近接性によって、高速通信が容易になり、メモリおよびリソースの共有が容易になる。
【0031】
「機能ブロック」という用語は、本明細書では、様々な機能を実行するために使用可能な1つ以上の電子回路構成要素のグループを指すために使用される。様々な実施形態では、機能ブロックは、機能ブロックと1つ以上の外部構成要素との間の確実なタイマ同期に関係する機能を実行するために使用可能な構成要素を含み得る。機能ブロックは、多様な実施形態を実装するための多様なハードウェア、ソフトウェアおよび/又はファームウェアを含み得る。例えば、機能ブロックは、SoC、SIP、NOC、および様々なサブシステムであり得るか、又はそれらを含み得る。機能ブロックは、確実なタイマ同期のための様々な実施形態を実装するために、様々なクロッキング構成要素、メモリレジスタ、論理ゲーティングバスインターフェース、マルチプレクサ、および他の電気構成要素を含み得る。
【0032】
本明細書で使用される場合、「チップレット」という用語は、SoCなどの処理システム内の、サブ処理ユニット又はサブ処理デバイスを指すために使用される。チップレットは、処理システム内の他の同様のチップレットと協働して様々なプロセスを実行するように設計された、集積回路ブロックであってもよい。チップレットは、SoCなどのより大きな処理システム内の他のダイから独立して動作する別個のダイであってもよく、又はより大きな処理システム内の他のダイとともに動作する別個のダイであってもよい。チップレットは、システム内の関連付けられたチップレットの他のコアとともにシステムプロセスを実行するための、1つ以上の処理コアを含み得る。チップレットは、システムデータを他のチップレットおよび/又は他のシステムデバイス(例えば、メモリ、電力コントローラ、入力/出力(IO)コントローラ、および/又はインターフェース等)と通信するためのIO機能を含み得る。チップレットは、SoCなどのシステム内で処理動作を実行する機能ブロックとして機能しても、機能ブロックと呼ばれてもよい。
【0033】
コンピューティングデバイスおよびシステムは、部分に分けた形で実装されるようになってきている。マルチチップレットシステムは、技術が進歩し、処理速度が速くなるにつれて、改善された歩留まりおよびスケーラビリティを継続的に必要とする。これらのプロセスの同期は、処理速度が増加するにつれてますます困難になってきている。処理速度が増加するにつれて、エラーが発生し、悪意のある攻撃に対する脆弱性を生じる可能性もまた、増加し得る。結果として、チップレットを同期させる必要性が増大する。マルチチップレットシステム内で、同期プロセス中と、同期されたプロセスから導出されたタイムスタンプに基づいてデバッギングプロセスを実行するときとの両方でレイテンシを低減することにより、マルチチップレットシステム内で一緒に動作する1つ以上のチップレット上で発生し得る、いかなるそのようなエラーをもより良好に分離および識別し得る。
【0034】
マルチチップレットシステムでは、マスタダイ又はチップレットを使用して、マスタチップレットと電気的に通信する任意の数の関連付けられたスレーブダイ又はチップレットを制御し、調整し、又は他の方法でそれに対して命令することができる。マスタチップレットは、少なくとも1つのクロック信号をスレーブチップレットと共有してもよく、その共有クロック信号が同じソース(例えば、PMIC水晶発振器)から導出され得るようにしてもよい。デバッグを行うために、マルチチップレットシステム内のいかなるチップレット内で発生するいかなるエラーも正しくタイムスタンプされることが有用であり、それにより、1つのチップレット内のタイムスタンプされたイベントと、それに関連付けられ得る別のチップレット内の他のタイムスタンプされたイベントとの間のスキューの量が最小化される。チップレットどうしの間のクロック同期が過度にスキューしているか又は同期していない場合、任意のタイムスタンプ付きイベント(記録されたハードウェアおよび/又はソフトウェアエラーなど)のタイムスタンプは、他のチップレット間で記録された対応するタイムスタンプ付きイベントと正確に関連付けることができない場合があり、したがって、エラー、悪意のある攻撃を正確に識別する観点からは、又は補正プロセスを開始する目的のためには、役に立たないという場合があり得る。したがって、マルチチップレットシステム内のチップレットどうしの間のクロック同期は、基本的なシステム動作にとって重要である。
【0035】
クロックの不整合、又は非同期化は、マルチチップレットシステム内での様々な理由によって引き起こされ得る。システムブートアップ時には、マスタチップレットは、任意のスレーブチップレットと非同期であり得るので、クロック又はグローバルカウンタの同期を必要とし得る。具体的には、マスタチップレットは、システムブート時にスレーブチップレットを互い違いにリセットして、各スレーブチップレットクロックおよび/又はグローバルカウンタが、各追加のスレーブチップレットクロックと非整合とし得る。
【0036】
別の一例として、各チップレットは、機能およびデバッグトレースのために、そのローカルグローバルカウンタタイムベースを使用する。マスタチップレット又はスレーブチップレットのグローバルカウンタは、そのチップレットがリセットされるときはいつもリセットされる。このように、マスタチップレットはクラッシュする場合があり得るが、PMICは、リセット信号、メッセージ、又はアサーションをマスタチップレットに提供し得る。したがって、リセットされたマスタチップレットグローバルカウンタは、スレーブチップレットのグローバルカウンタと同期していない場合もあり得る。
【0037】
同様に、スレーブチップレットはクラッシュする場合があり得るが、マスタチップレットは、リセットアサーションをスレーブチップレットに提供し得る。したがって、リセットされたスレーブチップレットのグローバルカウンタは、マスタチップレットのグローバルカウンタと、および他のスレーブチップレットのグローバルカウンタと同期していない場合もあり得る。
【0038】
グローバルカウンタの非同期化が発生するときの更なる例として、マスタチップレットのグローバルカウンタおよび任意のスレーブチップレットのグローバルカウンタが、クロストリガインターフェース(CTI)動作および通信中に停止され得るというものがある。CTIトリガは、あるスレーブチップレットのグローバルカウンタを停止させる場合があり得るが、その結果、そのスレーブチップレットのグローバルカウンタをフリーズさせ、他のチップレット内で依然として動作しているグローバルカウンタと非整合にさせ得る。CTIトリガが、マスタチップレットのグローバルカウンタを停止させる場合には、まさにそのCTI停止のトリガが、すべてのスレーブチップレット内のグローバルカウンタをも停止させる。したがって、すべてのチップレットが、再び同期される必要がある。
【0039】
低レイテンシのグローバルカウンタ同期の欠如は、デバッギングプロセス中などに、システムのパフォーマンスに関する様々な問題を引き起こし得る。CoreSight CTIを実装するものなどのマルチチップレットシステムは、すべての関連付けられたシステムチップレットから収集および集約されたタイムスタンプを追跡するための共通のタイムベースを必要とする。グローバルカウンタの同期はまた、正確なタイムスタンプされたメッセージングを必要とするチップツーチップの又はデバイスツーデバイスの動作および通信などの、マルチチップレットシステムの通常動作に、非常に重要である。同期の精度は、ソフトウェアベースの同期ソリューションによっても損なわれる可能性がある。マイクロ秒(μ秒)スケールよりも速いグローバルカウンタの同期は、マルチチップレットシステムにおいては、すべての関連付けられたチップレットにわたって正確なタイムラインを可能にするためには望ましいという場合があり得るが、それは、1マイクロ秒というのは、複数のチップレットのプロセッサがGHzレートで動作しているときには、相当な時間だからである。ソフトウェアベースでのグローバルカウンタの同期は、チップどうしの間のレイテンシおよび割込みレイテンシのために、マイクロ秒スケールのオーダーである。したがって、グローバルカウンタの同期レイテンシを改善するためには、ハードウェアベースのグローバルカウンタ同期ソリューションが利用され得る。
【0040】
様々な実施形態は、マルチチップレットシステム内のハードウェアベースのグローバルカウンタの同期ソリューションを提供する。マルチチップレットシステムは、マスタチップレットと、1つ以上のスレーブチップレットとを含み得る。アクティブクロック(例えば、19.2MHz)から導出されたスリープクロック(例えば、32kHz)は、マルチチップレットシステム内のチップレットの各々に分配されてもよい。スリープクロックの立ち上がりエッジは、以下の目的で、マスタチップレットによって利用され得る、(i)マスタチップレットのグローバルカウンタを読み出すこと、(ii)どの将来のスリープクロック立ち上がりエッジが任意のスレーブチップレットと同期するために利用されるべきかを判定すること、(iii)読み出されたマスタチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を判定すること、(iv)そのグローバルカウンタ同期値を1つ以上のスレーブチップレットに送信すること、(v)グローバルカウンタ同期パルストリガをブロードキャストして、任意の非同期スレーブチップレットに、グローバルカウンタ同期値を、各スレーブチップレット内のローカルに記憶されたグローバルカウンタサブシステムにラッチさせること。
【0041】
いくつかの実施形態において、マスタチップレットおよびスレーブチップレットは、チップレットどうしの間の通信をサポートするために、システム電力管理インターフェース(SPMI)のスレーブインターフェース又は機能ブロックを用いてインスタンス化され得る。マスタチップレットは、グローバルカウンタ同期パルストリガを任意の非同期スレーブチップレットに転送するための、SPMIスレーブインターフェース又はCTIインターフェースを構成し得る。スレーブチップレットグローバルカウンタ同期要求およびマスタチップレット同期応答は、SPMI又は任意の他の物理的インターフェースを介して転送され得る。
【0042】
いくつかの実施形態では、マルチチップレットグローバルカウンタ同期は、スリープクロックエッジベースのグローバルカウンタ同期を使用して、ブートシーケンス中に実行され得る。例えば、ブート時に、マスタチップレットは、任意の接続されたスレーブチップレットをリセットして、システムブート時のチップレットの各々が非同期であっても、同期できるようにスレーブチップレットを準備することができる。いくつかの実施形態では、スレーブチップレットのグローバルカウンタが停止されるとき、スリープクロックエッジベースのグローバルカウンタ同期を使用して、マルチチップレットグローバルカウンタ同期が実行されてもよい。例えば、個々のスレーブチップレットは停止され、したがってマスタチップレットと非同期であり得るが、他のスレーブチップレットは依然として、マスタチップレットと同期していてもよい。非同期のスレーブチップレットは、停止トリガを無効化し、マスタチップレットとのグローバルカウンタ同期を要求し得る一方で、他のチップレットは影響を受けないままである。いくつかの実施形態では、マスタチップレットのグローバルカウンタが停止されるとき、スリープクロックエッジベースのグローバルカウンタ同期を使用して、マルチチップレットグローバルカウンタ同期が実行されてもよい。
【0043】
図1は、様々な実施形態のうちのいずれかを実装するのに適した例示的なマルチチップレットシステム回路100を示す構成要素ブロック図である。様々な実施形態を実装するために、2つのチップレット以上の任意の数のチップレットが使用されてもよい。図示された例示的なマルチチップレットシステム100は、単一のシステムパッケージ又はシステムインパッケージ(system-in-a-package、SIP)104内に配置された4つのチップレット110a、110b、110c、および110dと、PMICコントローラ102とを含む。マルチチップレットシステム100は、インターフェースバス106(例えば、SPMI、集積回路間(IC)バス)をさらに含んでもよい。別の一例として、6つのチップレットがSIP 104内に実装されてもよく、1つが第1の(すなわち、プライマリ/マスタ)チップレットとして動作し、残りの5つのチップレットが第2の(すなわち、セカンダリ/補助/スレーブ)チップレットとして動作する。一実施形態では、PMICコントローラ102は、SIP104内に配置され得る。
【0044】
様々な実施形態において、チップレット110a、110b、110c、および110dのうちの1つは、マスタチップレットとして構成されていてもよく、残りのチップレットは、スレーブチップレットとして構成される場合がある。例えば、チップレット110aはマスタチップレットとして構成されていてもよく、チップレット110b、110c、および110dはスレーブチップレットとして構成されていてもよい。別段の定めがない限り、以下の例および実施形態は、マスタチップレットとして構成されるチップレット110a、およびスレーブチップレットとして構成されるチップレット110b、110c、110dを有する非限定的な例を使用して説明される。マスタチップレット110aは、スレーブチップレット110b、110c、110dと比較して、追加の構成要素(例えば、SPMIマスタインターフェース112、マスタタイマ114、マルチプレクサ131、133)を有するものとして示されている。しかしながら、チップレット110a、110b、110c、110dの各々はマスタチップレットとして構成されていてもよいので、チップレット110b、110c、110dの各々は、マスタチップレット110a内に示された構成要素を含んでいてもよい。
【0045】
説明を容易にするために、様々な実施形態の動作は、本明細書において、プライマリ/マスタとして構成又は機能する第1のチップレット(例えば、110a)と、セカンダリ/補助/スレーブチップレットとして構成又は機能する第2のチップレット(例えば、110b)とを含む、2チップレットシステムの非限定的な例を使用して説明され得る。しかしながら、第1のチップレットおよび第2のチップレットに言及し、更なるチップレットに言及しない説明であっても、2つのチップレットどうしの間の動作は、任意の数のチップレットどうしの間の動作を代表するので、限定することを意図していない。
【0046】
いくつかの実施形態では、チップレット110a、110b、110c、110dの1つ以上は、集合的に、マルチチップレットシステム100の中央処理装置(CPU)として動作し得るが、命令によって指定された算術、論理、制御、および入力/出力(I/O)動作を実行することによって、ソフトウェアアプリケーションプログラムの命令を実行する。いくつかの実施形態において、チップレット110a、110b、110c、および110dのうちの1つ以上は、専用の処理ユニットとして動作し得る。各チップレット110a、110b、110c、および110dは、1つ以上のコアを含んでもよく、各コアは、同じチップレット内の他のコアおよび他のチップレット内のコアとは独立して動作を実行してもよい。加えて、チップレット110a、110b、110c、および110dのいずれか又はすべては、プロセッサクラスタアーキテクチャ、例えば、同期プロセッサクラスタアーキテクチャ、非同期又は異種プロセッサクラスタアーキテクチャなどの一部として含まれ得る。
【0047】
チップレット110a、110b、110c、および110dは、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理するため、並びに、例えばデータパケットを復号すること、およびウェブブラウザにおいてレンダリングするために、符号化されたオーディオおよびビデオ信号を処理することなど、他の専用動作を実行するための、様々な追加的なシステム構成要素、リソース、およびカスタム回路を含み得る。例えば、チップレット110a、110b、110c、および110dのシステム構成要素およびリソースは、電力増幅器、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマ、並びにSIP 104内で動作するおよびその外部で動作するが、マルチチップレットシステム100内のSIP(例えば、PMICコントローラ102)と電気的に通信するプロセッサおよびソフトウェアクライアントをサポートするために使用される他の同様の構成要素を含み得る。システム構成要素およびリソース、並びに/又はカスタム回路は、例えば、カメラ、電子ディスプレイ、無線通信デバイス、外部メモリチップなどの周辺デバイスとインターフェース接続するための回路も含み得る。チップレット110a、110b、110c、および110dはそれぞれ、例えば、クロックソース又はPMICコントローラ102など、SIPの外部のリソースと通信するための入力/出力モジュールをさらに含み得る。SIPの外部のリソースは、チップレット110a、110b、110c、および110dのうちの2つ以上によって共有され得る。
【0048】
チップレット110a、110b、110c、および110dは、データと、それぞれのチップレット110a、110b、110c、および110dの、1つ以上の処理コア120a、120b、120c、および120d(「Proc」とラベル付けされる)によるアクセスのためのプロセッサ実行可能コードを記憶するように構成される、揮発性又は不揮発性メモリであり得るメモリデバイス122a、122b、122c、および122d(「メモリ」とラベル付けされる)を含み得る。メモリデバイス122a、122b、122c、および122dに加えて、マルチチップレットシステム100は、様々な目的のために構成される場合がある、SIP 104の内部又は外部に位置する1つ以上の追加のメモリデバイス(図示せず)を含み得る。メモリデバイス122a、122b、122c、および122dを含む1つ以上のメモリデバイスは、ランダムアクセスメモリ(RAM)もしくはメインメモリ、又はキャッシュメモリなどの、揮発性メモリを含み得る。これらのメモリデバイスは、限られた量の、データセンサもしくはサブシステムから受信されたデータ、不揮発性メモリから要求され、様々な要因に基づいて将来のアクセスを予想して不揮発性メモリからメモリデバイスにロードされるデータおよび/もしくはプロセッサ実行可能コード命令、並びに/又は限られた量の、チップレット110a、110b、110c、および110dによって生成され、不揮発性メモリには記憶されず、将来迅速にアクセスできるように一時的に記憶される中間処理データおよび/もしくはプロセッサ実行可能コード命令を、一時的に保持するように構成されていてもよい。マルチチップレットシステム100のメモリデバイス122a、122b、122c、および122dは、チップレット110a、110b、110c、および110dの処理コア120a、120b、120c、および120dのうちの1つ以上によるアクセスのために、各チップレット110a、110b、110c、および110d内のメモリデバイス122a、122b、122c、および122dにロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に、記憶するように構成されていてもよい。各チップレット110a、110b、110c、および110d内のメモリデバイス122a、122b、122c、および122dにロードされるデータ又はプロセッサ実行可能コードは、処理コア120a、120b、120c、および120dによる機能の実行に応じてロードされ得る。
【0049】
いくつかの実施形態において、処理コア120a、120b、120c、および120dは、チップレット110a、110b、110c、110d内に仮想空間として作成された、様々なサブシステムおよび/又は機能ブロックに関連する動作を実行してもよい。例えば、処理コア120a、120b、120c、および120dは、タイマサブシステム124a、124b、124c、124d、グローバルカウンタサブシステム126a、126b、126c、126d、およびSPMIスレーブ機能ブロック130a、130b、130c、130dに関連する動作を実行してもよい。
【0050】
チップレット110a、110b、110c、110dは、それぞれタイマサブシステム124a、124b、124c、124d(タイマサブシステム(SS)とラベル付けされる)を含み得る。タイマサブシステム124a、124b、124c、124dは、チップレット110a、110b、110c、110dどうしの間のクロック同期のためのローカルグローバルカウンタを調整、制御、および保持するために使用され得る。いくつかの実施形態では、グローバルカウンタは56ビットグローバルカウンタ値であり得る。タイマサブシステム124a、124b、124c、124dは、チップレット110a、110b、110c、110dどうしの間のクロック同期のためにグローバルカウンタ値がロードされ得るグローバルカウンタサブシステム(GCSSとラベル付けされる)126a、126b、126c、126dを含み得る。いくつかの実施形態では、グローバルカウンタは、システムカウンタと呼ばれることもある。
【0051】
PMICコントローラ102は、チップレット110a、110b、110c、および110dを同期させるために使用されるクロック信号を制御、分配、又は他の方法で調整することができる。チップレット110a、110b、110c、110dは、PMICコントローラ102から、様々なクロック信号を受信し得る。例えば、PMICコントローラ102は、チップレット110a、110b、110c、および110dが同期目的で使用するための基準クロック信号を記憶するか、又は外部の構成要素(例えば、水晶発振器)から受信し得る。基準クロック信号は、アクティブモード、スリープモード、又は予め設定された周波数を有する任意の他の所定のモードに対応するクロック信号を含み得る。例えば、PMICコントローラ102は、アクティブモードに対応する19.2MHzのクロックを、チップレット110a、110b、110c、および110dに送信し得る。加えて、PMICコントローラ102は、スリープモード/低電力モードに対応する32kHzのクロック又はスリープクロック108を、チップレット110a、110b、110c、および110dに送信してもよい。他のクロック周波数が利用されてもよい。スリープクロック108は、チップレット110a、110b、110b、110dにとって常に利用可能である。
【0052】
様々な実装形態では、水晶発振器(CXO)(図示せず)が、共通クロックソースのPMICコントローラ102から分配されるアクティブクロック信号(例えば、19.2MHz)を生成し得る。スリープクロック108(例えば、32kHz)は、上記のCXOアクティブクロックから導出されてもよく、チップレット110a、110b、110c、110dの各々に常に利用可能であってもよい。例えば、スリープクロック108は、同期目的のために、PMICコントローラ102からタイマサブシステム124a、124b、124c、124dに分配され得る。マルチチップレットシステム100のグローバルカウンタは、CXOアクティブクロックが利用可能であるときに1だけインクリメントされてもよく、クロックソースがスリープクロック108に切り替えられるときに586だけインクリメントされてもよい。スリープクロック108およびCXOアクティブクロックは、クロックが同じ水晶から供給される限り、任意の整数関係又は非整数関係を有し得る。
【0053】
いくつかの実施形態では、チップレット110a、110b、110c、110dどうしの間のスリープクロック108スキューは、CXOクロック1周期分(例えば、32kHzのスリープクロックに対して52.08ナノ秒)未満であり得る。いくつかの実施形態では、スキューは、CXOクロック2周期分以下であり得る。スリープクロック108は、PMICによってチップレット110a、110b、110c、110dに供給されてもよく、パッケージ(例えば、SIP 104)のボールグリッドアレイ(ball grid array、BGA)ピンに入り、次いでパッケージ(例えば、SIP 104)内のすべてのチップレット110a、110b、110c、110dに分配されてもよい。スリープクロック108のルーティングは、チップレット110a、110b、110c、110dどうしの間を、スター構成で接続され得る。いくつかの実施形態では、各チップレット110a、110b、110c、110d内のスリープクロック108挿入遅延は、プロセスどうしの間の変動を52ナノ秒(n秒)未満に保つように埋め合わせされ得る。
【0054】
インターフェースバス106は、データ通信メッセージが複数のハードウェアコンポーネントに同時にブロードキャストされ得るブロードキャストインターフェースであり得る。例えば、インターフェースバス106は、PMICコントローラ102およびチップレット110a、110b、110c、110dが「テレグラムされた」又はブロードキャストされたメッセージング技法を通して通信することを可能にし得るSPMIバスであり得る。例えば、PMICコントローラ102は、インターフェースバス106を介したクロック同期メッセージをブロードキャストして、チップレット110a、110b、110c、110dにクロック同期動作を、同時に又はほぼ同時に(すなわち、ハードウェア通信経路遅延によって制限されて)実行させ得る。別の一例として、マスタチップレット110aは、クロック同期メッセージをPMICコントローラ102およびチップレット110b、110c、110dにブロードキャストするためのSPMIマスタインターフェース112を含み得る。SPMIバス又は他のタイプのブロードキャスト通信インターフェースであるインターフェースバス106を実装することによって、マスタチップレット110aは、スレーブチップレット110b、110c、110dを同時に並列に同期させ得る。いくつかの実施形態では、マスタチップレット110aは、スレーブチップレット110b、110c、110dを個別に同期させてもよい。いくつかの実施形態において、マスタチップレット110aは、SPMIなどのブロードキャストインターフェースを実装して構成される場合、又はシリアルインターフェースであって並列的ブロードキャストインターフェースではないインターフェースバス106によって制限される場合、スレーブチップレット110b、110c、110dを順次同期させることができる。グローバルカウンタの56ビット値を含むスレーブチップレット110b、110c、110d同期要求およびマスタチップレット110a同期応答は、インターフェースバス106(例えば、SPMI)又は任意の他の物理インターフェースを介して転送され得る。
【0055】
チップレット110a、110b、110c、110dはそれぞれ、SPMIスレーブ機能ブロック130a、130b、130c、130dを用いてインスタンス化され得る。SPMIスレーブ機能ブロック130a、130b、130c、130dは、プリブートローディングの初期段階において、回路間(C2C)通信をサポートし得る。マスタチップレット110aソフトウェア(すなわち、プライマリブートローダ(primary bootloader、PBL)/セカンダリブートローダ(secondary bootloader、SBL))は、同期信号、パルス、又はトリガを転送するためにSPMIスレーブ機能ブロック130a、130b、130c、130dを構成し得る。同期トリガは、正しい同期クロックエッジが識別され、使用されることを保証するために、スリープクロック期間(例えば、30.5マイクロ秒(1/32kHz))以内に、各SPMIスレーブ機能ブロック130a、130b、130c、130dに転送され得る。マスタチップレット110aのタイマサブシステム124aは、マスタタイマ114を含み得る。マスタタイマ114は、SPMIスレーブ機能ブロック130aによってSPMIスレーブ機能ブロック130b、130c、130dに中継され得る同期パルストリガを開始し得る。
【0056】
1つ以上の処理コア120a、120b、120c、120dは、PMICコントローラ102との間で、並びに他のチップレット通信インターフェースおよび/又はGPIOピンとの間でデータメッセージを送受信するために使用され得る、汎用入出力(purpose input/output、GPIO)ピン又は内部ハードワイヤード通信インターフェースを含み得る。例えば、CTI 130は、チップレット110a、110b、110c、110dがチップレット110a、110b、110c、110dの各々の間でデータ通信および/又は同期メッセージを送受信することを可能にし得る、チップレット110a、110b、110c、110dのGPIOピンを接続する1つ以上のデータ経路を含み得る。CTI 136を使用して、CTIトリガ信号をマスタチップレット110aに送信して、マスタチップレットグローバルカウンタサブシステム126a内に記憶されたマスタチップレットグローバルカウンタを停止させ得る。CTI 136を使用して、CTIトリガ信号をスレーブチップレット110b、110c、110dに送信して、グローバルカウンタサブシステム126b、126c、126d内にそれぞれ記憶されたスレーブチップレットグローバルカウンタを停止させ得る。
【0057】
マスタチップレット110aソフトウェア(すなわち、プライマリブートローダ(PBL)/セカンダリブートローダ(SBL))は、同期パルスを転送するために、CTI 136を構成し得る。同期パルスは、正しい同期クロックエッジが識別され、使用されることを確実にするために、スリープクロック期間(例えば、30.5マイクロ秒(1/32kHz))以内に、各タイマサブシステム124a、124b、124c、124dに転送され得る。
【0058】
例えば、マスタチップレット110aは、同期選択信号(「sync sel」とラベル付けされる)をアクティブ化して、同期方法を切り替えることができる。いくつかの実施形態では、PMICコントローラ102は、同期選択信号のステータスを切り替え得る。同期選択信号をアクティブ化することにより、マルチチップレットシステム100を、インターフェースバス106を実行するSPMIベースのブロードキャスト同期方法から、CTI 136を実行するGPIOベースの同期方法に切り替えることが可能となり得る。SPMIベースのブロードキャスト同期方法では、様々な同期要求および応答が、インターフェースバス106を介してマスタチップレットのSPMIスレーブ機能ブロック130aとスレーブチップレットのSPMIスレーブ機能ブロック130b、130c、130dとの間で通信され得る。SPMIスレーブ機能ブロック130a、130b、130c、130dは、インターフェースバス106からそれぞれのマルチプレクサ134a、134b、134c、134dを通して(すなわち、システムブートアップ又はシステム再同期において)受信したグローバルカウンタ値を中継して、グローバルカウンタ値をそれぞれのグローバルカウンタサブシステム126a、126b、126c、126dにラッチし得る。同期選択信号をアクティブ化することは、図示されるマルチプレクサ(例えば、マルチプレクサ131、132a~d、133、134a~d)のデータパスを切り替え得る。マスタタイマ114は、マルチプレクサ133およびマルチプレクサ131を介して、CTI 136上に(すなわち、いくつかのGPIOピンを介して)同期パルストリガを(すなわち、CTIトリガアウト0として)開始することができる。マスタタイマ114からの同期パルストリガは、マルチプレクサ132a、132b、132c、132dをそれぞれ介し(すなわち、CTIトリガイン0として)、次いでマルチプレクサ134a、134b、134c、134dをそれぞれ介して、各グローバルカウンタサブシステム126a、126b、126c、126dにさらに伝搬され、ラッチされ得る。グローバルカウンタ同期モードが選択されない(すなわち、同期選択信号(「Sync sel」)が0又はローである)とき、マルチプレクサ134a、134b、134c、134dは、デバッグのためにCTIトリガ0を出力し得る。
【0059】
図2図4は、いくつかの実施形態による、マルチチップレットシステムにおける、スリープクロックエッジベースのグローバルカウンタ同期のための動作並びにチップレットどうしの間の通信およびチップレット内の通信を示すメッセージフロー図200、300、および400である。図2図4に示されるマルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のための動作および通信は、インターフェースバス(例えば、インターフェースバス106)を介して通信可能に接続された少なくとも2つのチップレット(例えば、チップレット110a、110b、110c、110d)およびPMIC(例えば、PMICコントローラ102)を使用して実装され得る。図2図4に示される動作又は通信のいくつかは、すべての実施形態において実行されなくてもよく、動作および通信は、図2図4に示される例とは異なる順序で実行されてもよい。
【0060】
図1図4を参照すると、マスタチップレットプロセッサ120aおよびマスタチップレットグローバルカウンタサブシステム126aを有するマスタチップレット110aは、スレーブチップレットプロセッサ120bおよびスレーブチップレットグローバルカウンタサブシステム126bを有するスレーブチップレット110bと通信し得る。マスタチップレットプロセッサ120aは、マスタチップレット110a内のマスタチップレットグローバルカウンタサブシステム126aと、ローカルに通信し得る。スレーブチップレットプロセッサ120bは、スレーブチップレット110b内のスレーブチップレットグローバルカウンタサブシステム126bと、ローカルに通信し得る。マスタチップレットプロセッサ120aおよびマスタチップレットグローバルカウンタサブシステム126aは、SPMIバスであってもよいインターフェースバス106を介してスレーブチップレットプロセッサ120bおよびスレーブチップレットグローバルカウンタサブシステム126bと通信し得る。インターフェースバス106は、スリープクロック108のエッジに基づいてグローバルカウンタを同期させるために、マスタチップレットプロセッサ120a、マスタチップレットグローバルカウンタサブシステム126a、スレーブチップレットプロセッサ120b、およびスレーブチップレットグローバルカウンタサブシステム126bの間で、様々なグローバルカウンタ同期メッセージを送受信するために使用され得る。
【0061】
図2図4は、チップレット110a、110b、110c、110dのいずれか内のグローバルカウンタの再同期化のための様々なシナリオを示す。説明を容易にするために、2つのチップレット(例えば、チップレット110a、110b)の動作およびそれらの間の通信が示されている。しかしながら、スレーブチップレット110bによって、又はスレーブチップレット110bとともに実行される同じ動作は、マスタチップレット110aと電気的に通信している追加のチップレット(例えば、110c、110d)によって、又はそれらとともに同時に実行されてもよい。例えば、通信214は、マスタチップレットグローバルカウンタサブシステム126aからスレーブチップレットグローバルカウンタサブシステム126b、126c、126dに同時に送信されてもよい。別の一例として、通信220は、マスタチップレットプロセッサ120aから、スレーブチップレットグローバルカウンタサブシステム126b、126c、126dに、同時に送信されてもよい。
【0062】
図2は、いくつかの実施形態による、ブートシーケンス中のマルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のための、動作並びにチップレットどうしの間の通信およびチップレット内通信を示すメッセージフロー図である。
【0063】
コールドブート(すなわち、システム電源オン)又はウォームブート(すなわち、ソフトウェアを通じたシステムリセット)の間、マスタチップレット110aはスレーブチップレット110bと同期されていなくてもよい。例えば、マスタチップレット110aは、スレーブチップレット110bより前にリセットしてもよく、次いで、スレーブチップレット110bをリセットから脱出させる命令をスレーブチップレット110bに提供してもよい。マスタチップレットグローバルカウンタサブシステム126aによって保持されるグローバルカウンタは、マスタチップレット110aおよびスレーブチップレット110bのグローバルカウンタ値が独立して有効化されるので、スレーブチップレットグローバルカウンタサブシステム126bのグローバルカウンタと同期していなくてもよい。以下のフローは、マスタチップレット110aのグローバルカウンタとスレーブチップレット110bのグローバルカウンタとの再同期を提供する。
【0064】
コールドブート又はウォームブート時に、マスタチップレット110aはリセットから脱出し、マスタチップレットグローバルカウンタサブシステム126aは、PMICコントローラ102によって提供されるクロック(例えば、19.2MHzのアクティブクロック)に従ってインクリメントを開始する。
【0065】
通信202において、マスタチップレットプロセッサ120aは、リセットアサーションを生成し、スレーブチップレットプロセッサ120bに送信し得る。リセットアサーションは、例えば専用GPIOピンのセットなどの専用チャネルを介して、マスタチップレットプロセッサ120aによって、スレーブチップレットプロセッサ120bに送信されてもよい。リセットアサーションは、リセットから脱出する(すなわち、PBLフェーズに入る)ようにスレーブチップレット110bに命令し得る。マスタチップレットプロセッサ120aは、マスタチップレットプロセッサがSBLフェーズに入った後に、リセットアサーションをスレーブチップレットプロセッサ120bに送信してもよい。SBLフェーズは、あるチップレットプロセッサ(例えば、マスタチップレットプロセッサ120a、スレーブチップレットプロセッサ120b)によって実行されるプロセスが、そのチップレットプロセッサを含むチップ又はパッケージから物理的に分離され得るダイナミックランダムアクセスメモリ(DRAM)(例えば、マスタチップレットプロセッサ120aおよびスレーブチップレットプロセッサ120bを含むSoCの外部に位置するDRAM)を使用して実行される動作フェーズである。いくつかの実施形態において、マスタチップレットプロセッサ120aは、マスタチップレットプロセッサ120aがPBLフェーズにあるときであってSBLフェーズに入る前に、リセットアサーションをスレーブチップレットプロセッサ120bに送信してもよい。PBLフェーズは、あるチップレットプロセッサ(例えば、マスタチップレットプロセッサ120a、スレーブチップレットプロセッサ120b)によって実行されるプロセスが、そのチップレットプロセッサを含むチップ又はパッケージ内に物理的に配置され得るリードオンリメモリ(ROM)(例えば、マスタチップレットプロセッサ120aおよびスレーブチップレットプロセッサ120bを含むSoC内に配置されたROM)を使用して実行される動作フェーズである。スレーブチップレットプロセッサ120bは、マスタチップレットプロセッサ120aがPBLフェーズに入った後に、マスタチップレットプロセッサ120aからリセットアサーションを受信し得る。スレーブチップレットプロセッサ120bによって受信された、マスタチップレットプロセッサ120aからのリセットアサーションは、スレーブチップレットプロセッサ120bをトリガして、PBLフェーズに入らせ得る。この時点で、スレーブチップレットグローバルカウンタサブシステム126b内のグローバルカウンタは、マスタチップレットグローバルカウンタサブシステム126a内のグローバルカウンタと同期されていない。
【0066】
通信204において、スレーブチップレットプロセッサ120bは、グローバルカウンタ同期要求を生成して、マスタチップレットプロセッサ120aに送信し得る。スレーブチップレットプロセッサ120bは、PBLフェーズに入った後に、グローバルカウンタ同期要求をマスタチップレットプロセッサ120aに送信し得る。いくつかの実施形態において、グローバルカウンタ同期要求は、SPMIテレグラムとして送信されてもよいし、インターフェースバス106を介してブロードキャストされてもよい。
【0067】
いくつかの実施形態において、マスタチップレットプロセッサ120aは、スレーブチップレットプロセッサ120bによって送信された何らかのSPMIテレグラム又はブロードキャストを探して、インターフェースバス106を連続的にポーリングしてもよい。いくつかの実施形態において、通信206および/又は208は、グローバルカウンタ同期手順を要求するスレーブチップレットプロセッサ120bからのSPMIテレグラム又はブロードキャストをマスタチップレットプロセッサ120aが検出したことに応じて実行され得る。
【0068】
通信206において、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126aによるグローバルカウンタの周期的読み出しを可能にするように、マスタチップレットグローバルカウンタサブシステム126aにコマンドもしくは命令を送信してもよく、又は他の方法でマスタチップレットグローバルカウンタサブシステム126aを構成してもよい。いくつかの実施形態では、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126aによるグローバルカウンタの周期読み出しを可能にするために、マスタチップレットグローバルカウンタサブシステム126a内(又はマスタチップレットグローバルカウンタサブシステム126aに関連付けられたメモリ内)のビット又はレジスタを設定してもよい。マスタチップレットグローバルカウンタサブシステム126a内のローカルグローバルカウンタの周期的な読み出しを有効化するにより、マスタチップレットグローバルカウンタサブシステム126aが、スリープクロック108の立ち上がりエッジ毎に(例えば、32kHzで)、そのローカルグローバルカウンタを読み出すことが可能になり得る。
【0069】
通信208において、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内に記憶された最新のグローバルカウンタ値を読み出すように、マスタチップレットグローバルカウンタサブシステム126aにコマンドもしくは命令を送信してもよく、又は他の方法でマスタチップレットグローバルカウンタサブシステム126aを構成してもよい。いくつかの実施形態では、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内に記憶された最新のグローバルカウンタ値を読み出すように、マスタチップレットグローバルカウンタサブシステム126a内(又はマスタチップレットグローバルカウンタサブシステム126aに関連付けられたメモリ内)のビット又はレジスタを設定してもよい。マスタチップレットプロセッサ120aからコマンド又は命令を受信したことに応じて、マスタチップレットグローバルカウンタサブシステム126aは、スリープクロック108の最新の立ち上がりエッジに対応するローカルグローバルカウンタを、(例えば、マスタチップレットプロセッサ120aによってアクセス可能なレジスタ空間又はメモリ内で)マスタチップレットプロセッサ120aに利用可能にし得る。したがって、マスタチップレットプロセッサ120aは、通信206において有効化された周期的なグローバルカウンタの読み出しによって判定される、最新のローカルグローバルカウンタを読み出すか、又はそのスナップショットを撮り得る。
【0070】
動作209において、マスタチップレットプロセッサ120aは、スレーブチップレットグローバルカウンタサブシステム126bとの同期のために使用され得る次のスリープクロック同期エッジを判定し得る。いくつかの実施形態では、スレーブチップレットグローバルカウンタサブシステム126bとの同期に使用され得る次のスリープクロック同期エッジは、スレーブチップレット110bがPBLフェーズを終了してSBLフェーズに入った後に発生する、マスタチップレットスリープクロックの最初のスリープクロック立ち上がりエッジであり得る。
【0071】
通信210において、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内の時間比較器(例えば、マスタタイマ114)を構成してもよい。時間比較器は、動作209において判定されたスリープクロック同期エッジによって判定される、ある将来のスリープクロック立ち上がりエッジにおいてグローバルカウンタ同期パルストリガをトリガすることに備えて、構成される場合がある。
【0072】
通信212において、マスタチップレットプロセッサ120aは、インターフェースバス106を介して、グローバルカウンタ同期値を(例えば、SPMIブロードキャストメッセージとして)スレーブチップレットグローバルカウンタサブシステム126bに送信し得る。スレーブチップレットグローバルカウンタサブシステム126bは、スレーブチップレットグローバルカウンタサブシステム126bによって記憶され利用されるローカルグローバルカウンタにグローバルカウンタ同期値をロードする準備として、グローバルカウンタ同期値をプリロードレジスタに記憶し得る。
【0073】
通信214において、マスタチップレットグローバルカウンタサブシステム126aは、グローバルカウンタ同期パルストリガ(すなわち、同期メッセージ)をスレーブチップレットグローバルカウンタサブシステム126bに送信し得る。次いで、スレーブチップレットグローバルカウンタサブシステム126bは、通信212において、プリロードレジスタ内に記憶されたグローバルカウンタ同期値にラッチして、スレーブチップレットグローバルカウンタサブシステム126b内のローカルグローバルカウンタを、マスタチップレットグローバルカウンタサブシステム126a内のローカルグローバルカウンタと同期させ得る。
【0074】
通信216において、スレーブチップレットプロセッサ120bは、スレーブチップレットグローバルカウンタサブシステム126bをポーリングして、同期が完了したか否かを判定し得る。例えば、スレーブチップレットプロセッサ120bは、スレーブチップレットグローバルカウンタサブシステム126bの同期ステータスレジスタをポーリングして、ビット又はレジスタが、同期プロセスが完了したステータスを示すように変更されたかどうかを判定してもよい。
【0075】
通信218~224は、グローバルカウンタ同期デバッギングのために使用され得る。
【0076】
通信218において、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内に、時間比較器(例えば、マスタタイマ114)を構成し得る。時間比較器は、将来のいずれかのスリープクロック立ち上がりエッジにおいてグローバルカウンタ同期パルストリガをトリガすることに備えて構成される場合がある。時間比較器は、上記で説明した通信210と同様の方法でグローバルカウンタ同期パルストリガをトリガするように構成される場合がある。
【0077】
通信220において、マスタチップレットプロセッサ120aは、グローバルカウンタ同期経路を無効化するように、スレーブチップレットグローバルカウンタサブシステム126bにメッセージを送信するか又は他の方法で命令する(すなわち、レジスタ値を設定する)ことができる。グローバルカウンタ同期経路を無効化することは、SPMIスレーブ機能ブロック130bを無効化して、SPMIスレーブ機能ブロック130bがもはやインターフェースバス106を介してSPMIブロードキャストメッセージを送受信することができないようにすることを含み得る。いくつかの実施形態では、グローバルカウンタ同期経路を無効化することにより、スレーブチップレット110bのグローバルカウンタを停止させ得る。
【0078】
通信222において、マスタチップレットグローバルカウンタサブシステム126aは、グローバルカウンタ同期パルストリガ(すなわち、同期メッセージ)をスレーブチップレットグローバルカウンタサブシステム126bに送信し得る。次いで、スレーブチップレットグローバルカウンタサブシステム126bは、通信212において、プリロードレジスタ内に記憶されたグローバルカウンタ同期値にラッチして、スレーブチップレットグローバルカウンタサブシステム126b内のローカルグローバルカウンタを、マスタチップレットグローバルカウンタサブシステム126a内のローカルグローバルカウンタと同期させ得る。通信222は、上述した通信214と同様に実行されてもよい。
【0079】
通信224において、マスタチップレットプロセッサ120aは、スレーブチップレットグローバルカウンタサブシステム126b内に記憶されたグローバルカウンタ同期値を読み出し得る。マスタチップレットプロセッサ120aは、通信218において判定されたグローバル同期値を、スレーブチップレットグローバルカウンタサブシステム126bのプリロードレジスタによって記憶されたグローバル同期値と比較して、値が一致するかどうかを判定してもよい。マスタチップレットプロセッサ120aは、通信218において判定されたグローバル同期値が、スレーブチップレットグローバルカウンタサブシステム126bのプリロードレジスタによって記憶されたセルグローバル同期値と一致する場合に、通信216における同期プロセスが成功裏に完了したと判定することができる。
【0080】
図2を参照して説明される動作および通信は、スレーブチップレットクラッシュイベント中にも利用され得る。いかなるスレーブチップレット110b、110c、110dも、SBL動作中又は通常の動作中にクラッシュし得る。スレーブチップレットがクラッシュしたとき、PBLによって有効化され、スレーブチップレットグローバルカウンタサブシステムによって記憶されたスレーブチップレットグローバルカウンタは、マスタチップレットグローバルカウンタサブシステム126aによって記憶されたマスタチップレットグローバルカウンタと非同期になり得る。マスタチップレット110aは、クラッシュしていないスレーブチップレット110b、110c、110dを再同期させずに、クラッシュしたスレーブチップレット110b、110c、110dのいずれかを個別にリセットすることを選択してもよい。
【0081】
図2を参照して説明される動作および通信は、マスタチップレットクラッシュイベント中にも利用され得る。マルチチップレットシステム100は、マスタチップレット110aおよびスレーブチップレット110b、110c、110dがコールドブートされたかのようにグローバルカウンタ同期を実行するように動作してもよい。
【0082】
図3は、いくつかの実施形態による、スレーブチップレットグローバルカウンタが停止されたときの、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のための動作並びにチップレットどうしの間の通信およびチップレット内の通信を示すメッセージフロー図である。
【0083】
CTIトリガは、スレーブチップレット110b、110c、110dのうちの任意のものよってローカルに記憶されたグローバルカウンタを停止させ得る。CTIトリガは、特定のエラーイベントにおけるタイムスタンプを判定することなどのデバッグ目的のために、ローカルに(すなわち、対応するスレーブチップレットグローバルカウンタサブシステム126b、126c、126d内に)記憶されたグローバルカウンタを停止するために使用され得る。スレーブチップレット110b、110c、110dのいずれかのローカルに記憶されたグローバルカウンタがCTIトリガによって停止されるとき、そのグローバルカウンタ値は、マスタチップレットグローバルカウンタサブシステム126a内にローカルに記憶されたマスタチップレット110aのグローバルカウンタと非同期になり得る。以下のフローは、スレーブチップレットグローバルカウンタが停止された後の、マスタチップレット110aのグローバルカウンタとスレーブチップレット110bのグローバルカウンタとの再同期を提供する。
【0084】
通信301において、スレーブチップレットプロセッサ120bは、CTIトリガ停止と呼ばれることがあるグローバルカウンタ停止を無効化するように、スレーブチップレットグローバルカウンタサブシステム126bにメッセージを送信するか、又は他の方法で命令する(すなわち、レジスタ値を設定する)ことができる。グローバルカウンタ停止を無効化することにより、スレーブチップレットグローバルカウンタサブシステム126b内に記憶されたグローバルカウンタが再びカウントを開始することを可能とし得る。しかしながら、CTI停止の持続時間のため、スレーブチップレットグローバルカウンタは、マスタチップレットグローバルカウンタと非同期となってしまっている場合があり得る。
【0085】
通信303において、スレーブチップレットプロセッサ120bは、グローバルカウンタ同期経路を有効化するように、スレーブチップレットグローバルカウンタサブシステム126bにメッセージを送信するか、又は他の方法で命令する(すなわち、レジスタ値を設定する)ことができる。グローバルカウンタ同期経路を有効化することは、インターフェースバス106を介してSPMIブロードキャストメッセージを送受信することが可能であり得るSPMIスレーブ機能ブロック130bを開始することを含み得る。
【0086】
ひとたびスレーブチップレット110bがグローバルカウンタ同期を開始するように再構成され、ローカルに記憶されたグローバルカウンタが実行されると、図2を参照して説明したような動作および通信204~216が実行されて、スレーブチップレットグローバルカウンタサブシステム126b内に記憶されたスレーブチップレットグローバルカウンタを、マスタチップレットグローバルカウンタサブシステム126a内に記憶されたマスタチップレットグローバルカウンタと同期させてもよい。さらに、図2を参照して説明したように、通信218~224に従って任意のデバッギング手順を実行することができる。
【0087】
図4は、いくつかの実施形態による、マスタチップレットグローバルカウンタが停止されたときの、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のための動作並びにチップレットどうしの間の通信およびチップレット内の通信を示すメッセージフロー図である。
【0088】
CTIトリガは、マスタチップレット110aによってローカルに記憶されたグローバルカウンタを停止させ得る。CTIトリガは、特定のエラーイベントでタイムスタンプを判定するなど、デバッグ目的のためにローカルに(すなわち、マスタチップレットグローバルカウンタサブシステム126a内に)記憶されたグローバルカウンタを停止するために使用され得る。マスタチップレット110aのローカルに記憶されたグローバルカウンタがCTIトリガによって停止されると、グローバルカウンタ値は、スレーブチップレットグローバルカウンタサブシステム126b、126c、126d内にローカルに記憶されたスレーブチップレット110b、110c、110dのグローバルカウンタのすべてと非同期になり得る。例えば、マスタチップレットグローバルカウンタがCTIトリガによって停止されるとき、同じCTIトリガがCTIネットワークを介してスレーブチップレットグローバルカウンタに転送されて、スレーブチップレットグローバルカウンタを同時に停止させる。マスタチップレットは、CTI停止解除トリガ(割り込み要求)を送信し得る。
【0089】
したがって、マルチチップレットシステムは、スレーブチップレット110b、110c、110dに加えてマスタチップレット110aを、再初期化させて、ローカルに記憶されたグローバルカウンタ値のすべてを再同期させ得る。以下のフローは、マスタチップレットグローバルカウンタが停止された後の、マスタチップレット110aのグローバルカウンタとスレーブチップレット110bのグローバルカウンタとの再同期を提供する。
【0090】
通信401において、マスタチップレットプロセッサ120aは、グローバルカウンタ停止を無効化(CTIトリガ停止と呼ばれることがある)するように、スレーブチップレットグローバルカウンタサブシステム126bにメッセージを送信するか、又は他の方法で命令する(すなわち、レジスタ値を設定する)ことができる。グローバルカウンタ停止を無効化することにより、スレーブチップレットグローバルカウンタサブシステム126b内に記憶されたグローバルカウンタが再びカウントを開始することを可能とし得る。しかしながら、CTI停止の持続時間のため、スレーブチップレットグローバルカウンタは、マスタチップレットグローバルカウンタと非同期となってしまっている場合があり得る。
【0091】
通信402において、マスタチップレットプロセッサ120aは、グローバルカウンタ停止を無効化(CTIトリガ停止と呼ばれることがある)するように、マスタチップレットグローバルカウンタサブシステム126aにメッセージを送信するか、又は他の方法で命令する(すなわち、レジスタ値を設定する)ことができる。グローバルカウンタ停止を無効化することにより、マスタチップレットグローバルカウンタサブシステム126a内に記憶されたグローバルカウンタが再びカウントを開始することを可能とし得る。しかしながら、CTI停止の持続時間のため、マスタチップレットグローバルカウンタは、スレーブチップレットグローバルカウンタと非同期となってしまっている場合があり得る。
【0092】
いくつかの実施形態では、通信401および402は、マスタチップレットプロセッサ120aから送信される単一の割り込み要求であってもよい。例えば、マスタチップレットCTI停止解除トリガは、割込み要求をマスタチップレットグローバルカウンタサブシステム126aに送信することができるが、この割込み要求は、スレーブA53への割込み要求としてCTIネットワークを介してスレーブチップレットプロセッサ120bに送信されるものと同じトリガであり得る。
【0093】
通信403において、スレーブチップレットプロセッサ120bは、グローバルカウンタ同期経路を有効化するように、スレーブチップレットグローバルカウンタサブシステム126bにメッセージを送信するか、又は他の方法で命令する(すなわち、レジスタ値を設定する)ことができる。グローバルカウンタ同期経路を有効化することは、インターフェースバス106を介してSPMIブロードキャストメッセージを送受信することが可能であり得るSPMIスレーブ機能ブロック130bを開始することを含み得る。
【0094】
ひとたびマスタチップレット110aおよびスレーブチップレット110bがグローバルカウンタ同期を開始するように再構成され、ローカルに記憶されたグローバルカウンタが実行されると、図2を参照して説明したような動作および通信204~216が実行されて、スレーブチップレットグローバルカウンタサブシステム126b内に記憶されたスレーブチップレットグローバルカウンタを、マスタチップレットグローバルカウンタサブシステム126a内に記憶されたマスタチップレットグローバルカウンタと同期させてもよい。さらに、図2を参照して説明したように、通信218~224に従って任意のデバッギング手順を実行することができる。
【0095】
図5は、いくつかの実施形態による、マルチチップレットシステムにおけるグローバルカウンタ同期パルストリガのためのタイミングフロー500を示すタイミング図である。図1図5を参照すると、図2図4を参照して説明した通信のうちのいくつかのタイミングが示されている。
【0096】
イベント502において、マスタチップレットグローバルカウンタサブシステム126aの時間比較器(例えば、マスタタイマ114)は、グローバルカウンタ同期パルストリガを開始してもよい。インターフェースバス106がSPMIブロードキャストバスとして構成されることが可能であるときなど、インターフェースバス106が並行通信可能である場合、時間比較器は、グローバルカウンタ同期有効化テレグラムとしてグローバルカウンタ同期パルストリガをトリガし得る。インターフェースバス106がパラレル通信可能ではない場合、時間比較器は、例えばマスタチップレット110aとスレーブチップレット110bとの間の専用GPIOピンなどのシリアルデータ経路を介して、グローバルカウンタ同期有効化メッセージとしてグローバルカウンタ同期パルストリガをトリガし得る。グローバルカウンタ同期パルストリガは、グローバルカウンタ同期値(例えば、スレーブチップレット110bのプリロードレジスタ内に記憶され、以下で図6を参照して説明される「N」))を、スリープクロックの次の立ち上がりエッジにおいてスレーブチップレットグローバルカウンタ上に、ロードするようにスレーブチップレット110bに命令することができる。
【0097】
イベント504において、スレーブチップレット110bは、グローバルカウンタ同期パルストリガを受信したことに応じて、グローバルカウンタ同期値(例えば、スレーブチップレット110bのプリロードレジスタ内に記憶され、以下で図6を参照して説明される「N」))を、スリープクロックの立ち上がりエッジ(例えば、以下の図6を参照して説明されるスリープクロック同期エッジ「n」)において、スレーブチップレットグローバルカウンタにロードすることができる。グローバルカウンタ同期パルストリガは、スレーブチップレット110bがグローバルカウンタ同期値をスレーブチップレットグローバルカウンタサブシステム126bにロードした後に、時間比較器によって削除されてもよい。例えば、SPMI対応インターフェースバス106の場合、すべてのスレーブチップレット110b、110c、110dに同時に伝達されることが可能なテレグラム又はブロードキャストメッセージであり得るグローバルカウンタ同期パルストリガは、イベント504において識別された立ち上がりエッジの後であり、スリープクロックの次の立ち上がりエッジの前に、無効化され得る。
【0098】
インターフェースバスが並列通信を行うことができない(例えば、マスタチップレット110aの専用GPIOピンが、スレーブチップレット110b、110c、110dと個別に通信するために使用される)いくつかの実施形態では、スリープクロック立ち上がりエッジ505(例えば、以下の図6を参照して説明される、スリープクロック立ち上がりエッジ「n-1」)は、イベント502におけるグローバルカウンタ同期パルストリガと整合され得る。スリープクロック立ち上がりエッジ505がグローバルカウンタ同期パルストリガと同期される場合、時間比較器は、イベント504において、意図されたスリープクロックサイクルの1スリープクロックサイクルだけ前にグローバルカウンタ同期パルストリガを送信することができ、したがって、スレーブチップレットグローバルカウンタをマスタチップレットグローバルカウンタの1スリープクロックサイクルだけ前にさせることができる。
【0099】
スリープクロックとグローバルカウンタ同期パルストリガとの間の同期によって引き起こされる、早まったグローバルカウンタ同期パルストリガを回避するために、マスタチップレット110aは、スリープクロック立ち上がりエッジ505の後に遅延を導入して、グローバルカウンタ同期パルストリガがスリープクロック立ち上がりエッジ505に従うことを確実にし得る。遅延は、スリープクロック立ち上がりエッジ505からの、ある数のCXOサイクル相当であり得る。
【0100】
図6は、いくつかの実施形態による、マルチチップレットにおけるスリープクロックエッジベースのグローバルカウンタ同期のためのタイミングフロー600を示すタイミング図である。図1図6を参照すると、タイミング図内の様々な信号が示されているが、マスタチップレット110aの観点から観測される信号、例えば、スレーブチップレットRESIN_N(すなわち、PMICコントローラ102によってマスタチップレット110aに提供され、一組の専用GPIOピンを介してマスタチップレット110aからスレーブチップレット110bに再分配されるリセットアサーション)、マスタチップレットプロセッサ動作、マスタチップレットグローバルカウンタ(すなわち、マスタチップレットグローバルカウンタサブシステム126a内に記憶されるもの)、マスタチップレットスリープクロック(例えば、32kHz)、スレーブチップレットSPMIメッセージ(すなわち、インターフェースバス106を介してマスタチップレット110aによって観測されるメッセージ)、およびマスタチップレットSPMIメッセージ(すなわち、インターフェースバス106を介してマスタチップレット110aによってブロードキャストされるメッセージ)などが含まれる。スレーブチップレット110bの観点からの追加の信号が示されており、例えば、スレーブチップレットプリロードレジスタ、VIO int(すなわち、グローバル同期パルストリガ)、同期ステータス、スレーブチップレットスリープクロック(例えば、32kHz)、アクティブクロック(例えば、19.2MHz)、スレーブチップレットグローバルカウンタ(すなわち、スレーブチップレットグローバルカウンタサブシステム126b内に記憶されるもの)、およびスレーブチップレットプロセッサ動作などが含まれる。
【0101】
イベント602において、スレーブチップレットプロセッサ120bは、マスタチップレットプロセッサ120aからリセットアサーションを受信したことに応じて、リセットから脱出し得る。マスタチップレットプロセッサ120aは、リセットアサーションを生成してスレーブチップレットプロセッサ120bに送信し得る。マスタチップレットプロセッサ120aは、マスタチップレットプロセッサがPBLフェーズに入った後に、リセットアサーションをスレーブチップレットプロセッサ120bに送信してもよい。スレーブチップレットプロセッサ120bは、マスタチップレットプロセッサ120aがPBLフェーズに入った後に、マスタチップレットプロセッサ120aからリセットアサーションを受信してもよい。いくつかの実施形態では、マスタチップレットプロセッサ120aは、マスタチップレットプロセッサがSBLフェーズに入った後に、リセットアサーションをスレーブチップレットプロセッサ120bに送信してもよい。リセットアサーション(例えば、RESIN_N)は、例えば専用GPIOピンのセットなどの専用チャネルを介して、マスタチップレットプロセッサ120aによってスレーブチップレットプロセッサ120bに送信されてもよい。スレーブチップレットプロセッサ120bによって受信された、マスタチップレットプロセッサ120aからのリセットアサーションは、スレーブチップレットプロセッサ120bをトリガして、PBLフェーズに入らせ得る。この時点で、スレーブチップレットグローバルカウンタサブシステム126b内のグローバルカウンタは、マスタチップレットグローバルカウンタサブシステム126a内のグローバルカウンタと同期されていない。スレーブチップレット110bは、少なくともマスタチップレットスリープクロックのスリープクロック立ち上がりエッジが発生(例えば、「n」として指定される)するまで、PBLフェーズ内に留まることができ、その後、スレーブチップレットグローバルカウンタサブシステム126bは、マスタチップレットグローバルカウンタサブシステム126aと同期され得る。イベント602は、図2を参照して説明した通信202と同様に実行され得る。
【0102】
イベント604aにおいて、スレーブチップレットプロセッサ120bは、グローバルカウンタ同期要求を生成して、マスタチップレットプロセッサ120aに送信し得る。スレーブチップレットプロセッサ120bは、PBLフェーズに入った後に、グローバルカウンタ同期要求をマスタチップレットプロセッサ120aに送信し得る。いくつかの実施形態において、グローバルカウンタ同期要求は、SPMIテレグラムとして送信されてもよいし、インターフェースバス106を介してブロードキャストされてもよい。スレーブチップレットプロセッサ120bによって生成又は他の方法で構成されるグローバルカウンタ同期要求は、固有スレーブ識別子(Unique Slave Identifier、USID)および/又はグループスレーブ識別子(Group Slave Identifier、GSID)を含み得る。
【0103】
イベント604bにおいて、マスタチップレットプロセッサ120aは、イベント604a中にスレーブチップレットプロセッサ120bによって送信されたグローバルカウンタ同期要求を、検出するか又は他の方法で受信し得る。いくつかの実施形態において、マスタチップレットプロセッサ120aは、スレーブチップレットプロセッサ120bによって送信された何らかのSPMIテレグラム又はブロードキャストを探して、インターフェースバス106を連続的にポーリングしてもよい。イベント604aおよび604bは、図2を参照して説明した通信204と同様に実行され得る。
【0104】
いくつかの実施形態において、イベント606は、マスタチップレットプロセッサ120aが、グローバルカウンタ同期手順を要求するスレーブチップレットプロセッサ120bからのSPMIテレグラム又はブロードキャストを検出したことに応じて実行され得る。
【0105】
イベント606において、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126aによるグローバルカウンタ周期的読み出しを可能にするように、マスタチップレットグローバルカウンタサブシステム126aにコマンドもしくは命令を送信してもよく、又は他の方法でマスタチップレットグローバルカウンタサブシステム126aを構成してもよい。いくつかの実施形態では、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126aによるグローバルカウンタの周期読み出しを可能にするために、マスタチップレットグローバルカウンタサブシステム126a内(又はマスタチップレットグローバルカウンタサブシステム126aに関連付けられたメモリ内)のビット又はレジスタを設定してもよい。マスタチップレットグローバルカウンタサブシステム126a内のローカルグローバルカウンタの周期的な読み出しを有効化するにより、マスタチップレットグローバルカウンタサブシステム126aが、マスタチップレットスリープクロックの立ち上がりエッジ毎に(例えば、32kHzで)、そのローカルグローバルカウンタを読み出すことが可能になり得る。
【0106】
マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内に記憶された最新のグローバルカウンタ値を読み出すように、マスタチップレットグローバルカウンタサブシステム126aにコマンドもしくは命令をさらに送信してもよく、又は他の方法でマスタチップレットグローバルカウンタサブシステム126aをさらに構成してもよい。いくつかの実施形態では、マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内に記憶された最新のグローバルカウンタ値を読み出すように、マスタチップレットグローバルカウンタサブシステム126a内(又はマスタチップレットグローバルカウンタサブシステム126aに関連付けられたメモリ内)のビット又はレジスタを設定してもよい。マスタチップレットプロセッサ120aからコマンド又は命令を受信したことに応じて、マスタチップレットグローバルカウンタサブシステム126aは、スリープクロック108マスタチップレットプロセッサ120aの最新の立ち上がりエッジに対応するローカルグローバルカウンタを、(例えば、マスタチップレットプロセッサ120aによってアクセス可能なレジスタ空間又はメモリ内で)マスタチップレットプロセッサ120aに利用可能にし得る。したがって、マスタチップレットプロセッサ120aは、イベント606において有効化された周期的なグローバルカウンタの読み出しによって判定される、最新のローカルグローバルカウンタを読み出すか、又はそのスナップショットを撮り得る。イベント606は、図2を参照して説明した通信206および208と同様に実行され得る。
【0107】
イベント610において、マスタチップレットプロセッサ120aは、スレーブチップレットグローバルカウンタサブシステム126bとの同期のために使用され得る次のスリープクロック同期エッジを判定し得る。いくつかの実施形態において、スレーブチップレットグローバルカウンタサブシステム126bとの同期に使用され得る次のスリープクロック同期エッジ(例えば、マスタチップレットスリープクロック立ち上がりエッジ「n」)は、スレーブチップレット110bがPBLフェーズを終了してSBLフェーズに入った後(すなわち、スレーブPBL待ち時間の満了後)に発生するマスタチップレットスリープクロックの最初のスリープクロック立ち上がりエッジであり得る。
【0108】
マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタサブシステム126a内に時間比較器(例えば、マスタタイマ114)を構成し得る。時間比較器は、マスタチップレットスリープクロック立ち上がりエッジ「n-1」において同期パルストリガをトリガすることに備えて構成される場合がある。時間比較器は、マスタチップレットスリープクロックが(例えば、各グローバルカウンタの読み出し/スナップショットにおいて)立ち上がりエッジを示す時間を時間比較器が追跡し得るように、マスタチップレットスリープクロックを用いて構成される場合がある。
【0109】
いくつかの実施形態では、スリープクロック同期エッジは、グローバルカウンタ同期機構全体の持続時間によって判定され得る。グローバルカウンタ同期機構全体の持続時間は、マスタチップレット110aとスレーブチップレット110b、110c、110dとの間のインターフェースバス106レイテンシ(例えば、8Bグローバルカウンタ値および2B同期メッセージ)と、(i)現在のグローバルカウンタ値を読み出してインターフェースバス106を介して送信し、(ii)インターフェースバス106を介したグローバルカウンタ同期パルストリガ(例えば、SPMI又はCTI)のために時間比較器(例えば、マスタタイマ114)を構成するためのマスタチップレット110aソフトウェアレイテンシとに少なくとも基づいて、ソフトウェアにおいて(例えば、マスタチップレット110aおよび/又はPMICコントローラ102を介して)判定される持続時間であり得る。
【0110】
マスタチップレットプロセッサ120aは、グローバルカウンタ同期値を含むSPMIタイムスタンプメッセージを構成および/又は生成し、次いでインターフェースバス106を介して送信し得る。マスタチップレットプロセッサは、最後に読み出された、すなわち最新のマスタチップレットグローバルカウンタ値「K」に基づいて、グローバルカウンタ同期値「N」を、判定又は他の方法で生成し得る。グローバルカウンタ同期値「N」は、最後に読み出されたマスタチップレットグローバルカウンタ「K」に、次のスリープクロック同期エッジ「n」をマスタチップレットスリープクロック周期倍したものを加えたものに等しくてもよい。例えば、N=K+(n(1/32kHz))である。イベント610は、図2を参照して説明した通信209、210、および218と同様に実行され得る。
【0111】
イベント612において、マスタチップレットプロセッサ120aは、グローバルカウンタ同期値「N」を、マスタチップレットSPMIメッセージとして、インターフェースバス106を介してスレーブチップレットグローバルカウンタサブシステム126bに送信又はブロードキャストし得る。スレーブチップレットグローバルカウンタサブシステム126bは、スレーブチップレットグローバルカウンタサブシステム126bによって記憶され利用されるローカルグローバルカウンタにグローバルカウンタ同期値をロードする準備として、グローバルカウンタ同期値「N」をプリロードレジスタに記憶し得る。グローバルカウンタ同期値「N」がスレーブチップレットグローバルカウンタサブシステム126bに予めロードされた状態で、スレーブチップレットグローバルカウンタサブシステム126bは、マスタチップレットグローバルカウンタサブシステム126aと同期されるのを待機していてもよい。イベント612は、図2を参照して説明した通信212と同様に実行され得る。
【0112】
イベント614において、マスタチップレットグローバルカウンタサブシステム126aは、グローバルカウンタ同期パルストリガ(すなわち、SPMI同期トリガメッセージ)をスレーブチップレットグローバルカウンタサブシステム126bに送信又はブロードキャストし得る。グローバルカウンタ同期パルストリガは、マスタチップレットSPMIメッセージとして、インターフェースバス106を介してスレーブチップレットグローバルカウンタサブシステム126bにブロードキャストされ得る。マスタチップレットプロセッサ120aは、スレーブチップレットグローバルカウンタサブシステム126bとの同期のために使用されるべきと、イベント610中に判定されたスリープクロック同期エッジ「n」の1マスタチップレットスリープクロックサイクル前の時間(すなわち、n-1)に、グローバルカウンタ同期パルストリガをブロードキャストしてもよい。
【0113】
マスタチップレットプロセッサ120aは、マスタチップレットグローバルカウンタ値、又は構成されるタイマ値K2に等しいタイマ値で、グローバルカウンタ同期パルストリガをブロードキャストしてもよい。いくつかの実施形態では、グローバルカウンタ同期パルストリガは、時間比較器(例えば、マスタタイマ114)によって開始され得る。それ以前、イベント610において、時間比較器は、マスタチップレットスリープクロックを用いて構成されて、マスタチップレットスリープクロックが(例えば、各グローバルカウンタ読み出し/スナップショットにおいて)立ち上がりエッジを示す時間を、時間比較器が追跡し得るようにしてもよい。マスタチップレットプロセッサ120aは、時間比較器を使用して、マスタチップレットスリープクロックの立ち上がりエッジ「n-1」で、マスタチップレットグローバルカウンタ値を読み出すか、又はそのスナップショット撮り得る。マスタチップレットスリープクロック立ち上がりエッジ「n-1」において記録された時間比較器値が、構成される値K2と一致するとき、マスタチップレットプロセッサ120aは、グローバルカウンタ同期パルストリガをブロードキャストしてもよい。マスタチップレットグローバルカウンタ値は、スリープクロック周期の(n-1)倍に等しくてもよい(例えば、K2=(n-1)(1/32kHz)。
【0114】
グローバルカウンタ同期パルストリガは、マスタチップレットスリープクロックの次の立ち上がりエッジ「n」の前に、スレーブチップレットグローバルカウンタサブシステム126bに到着し得る。立ち上がりエッジ「n-1」とスリープクロック同期エッジ「n」との間の時間は、水晶発振器(XO)クロック586個分であり得るが、これは、最大SPMIメッセージ到着遅延、又はグローバルカウンタ同期パルストリガがスレーブチップレットグローバルカウンタサブシステム126bに到達しなければならない時間を指し得る。グローバルカウンタ同期パルストリガがブロードキャストされるときの立ち上がりエッジ「n-1」と、グローバルカウンタ同期パルストリガがスレーブチップレットグローバルカウンタサブシステム126bによって受信される時間(すなわち、VIO int(sync trig)の立ち上がりエッジ)との間の時間は、SPMIメッセージ到着遅延と呼ばれ得る。SPMIメッセージ到着遅延は、ハードウェア通信経路によって制約される時間遅延であり得る。SPMIメッセージ到着遅延は、最大SPMIメッセージ到着遅延未満であり得る。
【0115】
スレーブチップレットグローバルカウンタサブシステム126bが、グローバルカウンタ同期パルストリガを受信した(VIO int(sync trig)の立ち上がりエッジによって示される)後、スレーブチップレットグローバルカウンタサブシステム126bは、スリープクロック同期エッジ「n」において、マスタチップレットグローバルカウンタサブシステム126aと同期される準備ができた状態であり得る。スリープクロック同期エッジ「n」において、スレーブチップレットプリロードレジスタに記憶されたグローバルカウンタ同期値「N」は、スレーブチップレットグローバルカウンタサブシステム126bによって記憶されたスレーブチップレットグローバルカウンタにロード又はラッチされ得る。グローバルカウンタ同期値「N」は、マスタチップレットスリープクロックの同じスリープクロック同期エッジ「n」であると考えられるスレーブチップレットスリープクロックの立ち上がりエッジにおいて、スレーブチップレットグローバルカウンタにロードされ得る。グローバルカウンタ同期値「N」がスレーブチップレットグローバルカウンタサブシステム126bにロードされ得るスレーブチップレットスリープクロック立ち上がりエッジは、スリープクロック同期エッジ「n」からスキューしていてもよい。スリープクロック同期エッジ「n」におけるマスタチップレットスリープクロックとスレーブチップレットスリープクロックとの間のスキューは、XOクロックサイクル1つ又は2つ分の時間差であり得る。イベント614は、図2を参照して説明した通信214と同様に実行され得る。
【0116】
イベント616において、スレーブチップレットプロセッサ120bは、スレーブチップレットグローバルカウンタサブシステム126bをポーリングして、同期が完了したかどうかを判定し得る。スレーブチップレットプロセッサ120bは、スレーブチップレットグローバルカウンタサブシステム126bの同期ステータスレジスタ(例えば、「sync status」)をポーリングして、ビット又はレジスタが、同期プロセスが完了したステータスを示すように変更されたかどうかを判定してもよい。マスタチップレットグローバルカウンタサブシステム126aとスレーブチップレットグローバルカウンタサブシステム126bとの間の同期が完了したとスレーブチップレットプロセッサ120bが判定した後、マスタチップレットプロセッサ120aおよびスレーブチップレットプロセッサ120bは、デバッグプロセスを含む通常のプロセスを続いて実行してもよい。したがって、グローバルカウンタ同期が完了すると、スレーブチップレットプロセッサ120bは、PBLフェーズからSBLフェーズに遷移し得る。同期が完了すると、VIO int(sync trig)は、スリープクロックの次の立ち上がりエッジ「n+1」の前に削除され得る。
【0117】
図示および説明を容易にするために、図6は、2つのチップレット(例えば、チップレット110a、110b)間のタイミング信号を示す。しかしながら、スレーブチップレット110b内で発生したか又はスレーブチップレット110bによって実行されたもしくはスレーブチップレット110bとともに実行された同じタイミング信号およびイベントは、図1に示すような、マスタチップレット110aと電気的に通信する追加のチップレット(例えば、110c、110d)によって同時に実行されてもよい。例えば、イベント612において、スレーブチップレット110dのプリロードレジスタに値「N」がロードされてもよい。別の一例として、イベント614において、マスタチップレット110aは、3つすべてのスレーブチップレット110b、110c、110dに同時に到達するように、SPMIバスを介してグローバル同期パルストリガをブロードキャストしてもよい。
【0118】
図7は、様々な実施形態による、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期のための一実施形態の方法700を示すプロセスフロー図である。図1図7を参照すると、方法700は、本方法の動作を実行するように構成されるプロセッサ(例えば、処理コア120a、120b、120c、120d)において実行され得る。いくつかの実施形態では、プロセッサ(例えば、処理コア120a、120b、120c、120d)は、非一時的プロセッサ可読媒体(例えば、メモリデバイス122a、122b、122c、および122d)に記憶されたプロセッサ実行可能命令によって動作を実行するように構成される場合がある。方法700の動作の各々を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサであり得る。
【0119】
ブロック702において、PMICは、第1のチップレットおよび第2のチップレットに、スリープクロックを供給し得る。SoC(例えば、マルチチップレットシステム100)は、第1のチップレットグローバルカウンタサブシステム(例えば、マスタチップレットグローバルカウンタサブシステム126a)を含む第1のチップレット(例えば、マスタチップレット110a)を含み得る。SoCは、第2のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126b)を含む第2のチップレット(例えば、スレーブチップレット110b)を含み得る。SoCは、第1のチップレットと第2のチップレットとを通信可能に結合し得るインターフェースバス(例えば、インターフェースバス106)をさらに含み得る。SoCは、スター構成における第1のチップレットおよび第2のチップレットに、スリープクロック(例えば、スリープクロック108)を供給するように構成される場合があるPMIC(例えば、PMICコントローラ102)を含み得る。第1のチップレットおよび第2のチップレットは、PMICからスリープクロックを受信するように構成される場合がある。いくつかの実施形態では、第1のチップレットと第2のチップレットとの間のスリープクロックスキューは、水晶発振器クロックサイクル2つ分以下であり得る。
【0120】
いくつかの実施形態においてSoCは、第3のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126c、126d)を含む第3のチップレット(例えば、スレーブチップレット110c、110d)を含み得る。インターフェースバスは、第1のチップレットと第3のチップレットとを通信可能に結合し得る。第1のチップレットは、グローバルカウンタ同期パルストリガをインターフェースバスを介して第3のチップレットに送信するようにさらに構成される場合がある。第3のチップレットは、グローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第3のチップレットグローバルカウンタサブシステムにロードするように構成されていてもよい。
【0121】
ブロック702におけるプロセスは、図1における動作を参照して説明されたように実行され得る。ブロック702における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0122】
ブロック704において、グローバルカウンタ同期パルストリガが、第1のチップレットから第2のチップレットに送信され得る。第1のチップレットは、インターフェースバスを介してグローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成されていてもよい。例えば、第1のチップレットは、グローバルカウンタ同期パルストリガを、ブロードキャスト又はテレグラムメッセージとして、SPMIであるインターフェースバスを介して送信し得る。別の一例として、第1のチップレットは、第1のチップレットを第2のチップレットに通信可能に接続する一連の専用GPIOピンを介して、グローバルカウンタ同期パルストリガを送信し得る。グローバルカウンタ同期パルストリガは、第2のチップレットに対して、スリープクロックのスリープクロック同期エッジ(例えば、「n」)においてグローバルカウンタ同期値(例えば、「N」)を、第2のチップレットグローバルカウンタサブシステムにロードさせるように、第1のチップレットによって構成される場合がある。
【0123】
いくつかの実施形態では、第1のチップレットは、スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成される場合がある。いくつかの実施形態では、第1のチップレットは、スリープクロック同期エッジとスリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、グローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成される場合がある。
【0124】
ブロック704におけるプロセスは、図2図4の通信214、図5、および図6のイベント614を参照して説明したように実行され得る。ブロック704における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0125】
ブロック706において、第2のチップレットがグローバルカウンタ同期パルストリガを受信したことに応じて、グローバルカウンタ同期値は、スリープクロックのスリープクロック同期エッジにおいて第2のチップレットグローバルカウンタサブシステムにロードされ得る。ブロック704を参照して説明したように、第2のチップレットは、グローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジ(例えば、「n」)において、グローバルカウンタ同期値(例えば、「N」)を第2のチップレットグローバルカウンタサブシステムにロード又はラッチするように構成される場合がある。ブロック706におけるプロセスは、図2図4の通信214、図5、および図6のイベント614を参照して説明したように実行され得る。ブロック704における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0126】
ブロック702~706において実行される動作の順序は単に例示的なものであり、ブロック702~706の動作は、いくつかの実施形態では、任意の順序で、部分的には同時に実行され得る。いくつかの実施形態では、方法700は、外部メモリデバイスから独立して、しかし外部メモリデバイスとともに、デバイスのプロセッサによって実行され得る。例えば、方法700は、SoCのプロセッサ内で又はSoC内の専用ハードウェアにおいて実行するソフトウェアモジュールであって、安定的なメモリチャネルを確立し、外部メモリデバイスのメモリにアクセスするためのコマンドを発行し、さもなければ、説明したようにアクションを行い、データを記憶するように構成されるソフトウェアモジュールとして実行され得る。
【0127】
図8Aは、いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800aを示すプロセスフロー図である。図1図8Aを参照すると、方法800aは、その方法の動作を実行するように構成されるプロセッサ(例えば、処理コア120a、120b、120c、120d)において実行され得る。いくつかの実施形態では、プロセッサ(例えば、処理コア120a、120b、120c、120d)は、非一時的プロセッサ可読媒体(例えば、メモリデバイス122a、122b、122c、および122d)に記憶されたプロセッサ実行可能命令によって動作を実行するように構成される場合がある。方法800aの動作の各々を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサであり得る。
【0128】
ブロック802において、第1のチップレットグローバルカウンタ値は、第1のチップレットグローバルカウンタサブシステムから、第1のチップレットによって読み出され得る。第1のチップレット(例えば、マスタチップレット110a)は、第1のチップレットグローバルカウンタサブシステム(例えば、マスタチップレットグローバルカウンタサブシステム126a)から、第1のチップレットグローバルカウンタ値を読み出すか又は他の方法で受信するように構成される場合がある。いくつかの実施形態において、第1のチップレットグローバルカウンタ値は、スリープクロックの立ち上がりエッジにおいて第1のチップレットグローバルカウンタサブシステムから読み出され得る。ブロック802におけるプロセスは、図2図4の通信208、および図6のイベント606を参照して説明したように実行され得る。ブロック802における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0129】
ブロック804において、グローバルカウンタ同期値は、第1のチップレットグローバルカウンタ値に基づいて、第1のチップレットによって生成され得る。第1のチップレット(例えば、マスタチップレット110a)は、ブロック802を参照して説明したように、以前に読み出された第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値(例えば、「N」)を生成するように構成される場合がある。ブロック804におけるプロセスは、図6のイベント610を参照して説明したように実行され得る。ブロック804における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0130】
ブロック806において、グローバルカウンタ同期値は、第1のチップレットから第2のチップレットに送信され得る。第1のチップレット(例えば、マスタチップレット110a)は、グローバルカウンタ同期値(例えば、「N」)を第2のチップレット(例えば、スレーブチップレット110b)に送信するように構成される場合がある。例えば、第1のチップレットは、グローバルカウンタ同期値をブロードキャスト又はテレグラムメッセージとして、SPMIであるインターフェースバスを介して送信し得る。別の一例として、第1のチップレットは、第1のチップレットを第2のチップレットに通信可能に接続する一連の専用GPIOピンを介して、グローバルカウンタ同期値を送信し得る。ブロック806におけるプロセスは、図2図4の通信212、および図6のイベント612を参照して説明したように実行され得る。ブロック806における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0131】
ブロック808において、グローバルカウンタ同期値は、第2のチップレットのプリロードレジスタに記憶され得る。第2のチップレット(例えば、スレーブチップレット110b)は、グローバルカウンタ同期値(例えば、「N」)をプリロードレジスタに記憶するように構成されていてもよく、グローバルカウンタ同期値は、プリロードレジスタから第2のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126b)にロードされ得る。ブロック808におけるプロセスは、図2図4の通信212、および図6のイベント612を参照して説明したように実行され得る。マルチチップレットシステム100は、説明したように、方法700(図7)のブロック702の動作を続いて実行し得る。ブロック808における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0132】
ブロック802~808において実行される動作の順序は単に例示的なものであり、ブロック802~808の動作は、いくつかの実施形態では、任意の順序で、部分的には同時に実行され得る。いくつかの実施形態では、方法800aは、外部メモリデバイスから独立して、しかし外部メモリデバイスとともに、デバイスのプロセッサによって実行され得る。例えば、方法800aは、SoCのプロセッサ内で又はSoC内の専用ハードウェアにおいて実行するソフトウェアモジュールであって、安定的なメモリチャネルを確立し、外部メモリデバイスのメモリにアクセスするためのコマンドを発行し、さもなければ、説明したようにアクションを行い、データを記憶するように構成されるソフトウェアモジュールとして実行され得る。
【0133】
図8Bは、いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期化の一実施形態の方法800bを示すプロセスフロー図である。図1図8Bを参照すると、方法800bは、その方法の動作を実行するように構成されるプロセッサ(例えば、処理コア120a、120b、120c、120d)において実行され得る。いくつかの実施形態では、プロセッサ(例えば、処理コア120a、120b、120c、120d)は、非一時的プロセッサ可読媒体(例えば、メモリデバイス122a、122b、122c、および122d)に記憶されたプロセッサ実行可能命令によって動作を実行するように構成される場合がある。
【0134】
ブロック810において、第1のチップレットは、スリープクロックのスリープクロック同期エッジを判定し得る。第1のチップレット(例えば、マスタチップレット110a)は、スリープクロック(例えば、スリープクロック108)のスリープクロック同期エッジ(例えば、「n」)を判定するように構成されていてもよく、スリープクロック同期エッジは、スリープクロックの立ち上がりエッジであってもよい。ブロック810におけるプロセスは、図2図4の動作209および図6のイベント610を参照して説明したように実行され得る。ブロック810における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。マルチチップレットシステム100は、説明したように、方法700(図7)のブロック702の動作を続いて実行し得る。
【0135】
いくつかの実施形態では、方法800bは、外部メモリデバイスから独立して、しかし外部メモリデバイスとともに、デバイスのプロセッサによって実行され得る。例えば、方法800bは、SoCのプロセッサ内で又はSoC内の専用ハードウェアにおいて実行するソフトウェアモジュールであって、安定的なメモリチャネルを確立し、外部メモリデバイスのメモリにアクセスするためのコマンドを発行し、さもなければ、説明したようにアクションを行い、データを記憶するように構成されるソフトウェアモジュールとして実行され得る。
【0136】
図8Cは、いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800cを示すプロセスフロー図である。図1図8Cを参照すると、方法800cは、その方法の動作を実行するように構成されるプロセッサ(例えば、処理コア120a、120b、120c、120d)において実行され得る。いくつかの実施形態では、プロセッサ(例えば、処理コア120a、120b、120c、120d)は、非一時的プロセッサ可読媒体(例えば、メモリデバイス122a、122b、122c、および122d)に記憶されたプロセッサ実行可能命令によって動作を実行するように構成される場合がある。
【0137】
ブロック812において、第1のチップレットは、リセットアサーションを第2のチップレットに送信し得る。第1のチップレット(例えば、マスタチップレット110a)は、ハードワイヤード専用チャネルを介して、第2のチップレット(例えば、スレーブチップレット110b)にリセットアサーションを送信するように構成される場合がある。例えば、第1のチップレットは、第1のチップレットを第2のチップレットに通信可能に接続する一連の専用GPIOピンを介して、リセットアサーションを送信し得る。スレーブチップレットによって受信されたリセットアサーションは、スレーブチップレットがPBLフェーズに入ることをトリガし得る。ブロック812におけるプロセスは、図2の通信202および図6のイベント602を参照して説明したように実行され得る。ブロック812における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0138】
ブロック814において、第2のチップレットは、リセットアサーションに応じてグローバルカウンタ同期要求を第1のチップレットに送信し得る。第2のチップレット(例えば、スレーブチップレット110b)は、ブロック812を参照して説明したように、第1のチップレットからリセットアサーションを受信したことに応じて、グローバルカウンタ同期要求を第1のチップレット(例えば、マスタチップレット110a)に送信するように構成される場合がある。例えば、第2のチップレットは、グローバルカウンタ同期要求をブロードキャスト又はテレグラムメッセージとして、SPMIであるインターフェースバスを介して送信し得る。別の一例として、第2のチップレットは、第1のチップレットを第2のチップレットに通信可能に接続する一連の専用GPIOピンを介して、グローバルカウンタ同期要求を送信し得る。マルチチップレットシステム100は、説明したように、方法700(図7)のブロック702の動作を続いて実行し得る。例えば、第1のチップレットは、第1のチップレットが第2のチップレットからグローバルカウンタ同期要求を受信したことに応じて、インターフェースバスを介して、グローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成される場合がある。ブロック814におけるプロセスは、図2の通信204並びに図6のイベント604aおよび604bを参照して説明されたように実行され得る。ブロック814における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0139】
いくつかの実施形態では、方法800cは、外部メモリデバイスから独立して、しかし外部メモリデバイスとともに、デバイスのプロセッサによって実行され得る。例えば、方法800cは、SoCのプロセッサ内で又はSoC内の専用ハードウェアにおいて実行するソフトウェアモジュールであって、安定的なメモリチャネルを確立し、外部メモリデバイスのメモリにアクセスするためのコマンドを発行し、さもなければ、説明したようにアクションを行い、データを記憶するように構成されるソフトウェアモジュールとして実行され得る。
【0140】
図8Dは、いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800dを示すプロセスフロー図である。図1図8Dを参照すると、方法800dは、その方法の動作を実行するように構成されるプロセッサ(例えば、処理コア120a、120b、120c、120d)において実行され得る。いくつかの実施形態では、プロセッサ(例えば、処理コア120a、120b、120c、120d)は、非一時的プロセッサ可読媒体(例えば、メモリデバイス122a、122b、122c、および122d)に記憶されたプロセッサ実行可能命令によって動作を実行するように構成される場合がある。
【0141】
ブロック816において、第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化し得る。第2のチップレット(例えば、スレーブチップレット110b)は、第2のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126b)内のグローバルカウンタ停止を無効化するように構成される場合がある。グローバルカウンタ停止は、CTI停止トリガであり得る。グローバルカウンタ停止を無効化することにより、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントが再開され得る。ブロック816におけるプロセスは、図3の通信301を参照して説明したように実行され得る。ブロック816における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0142】
ブロック818において、第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化し得る。第2のチップレット(例えば、スレーブチップレット110b)は、第2のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126b)内のグローバルカウンタ同期経路を有効化するように構成される場合がある。グローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステム(例えば、マスタチップレットグローバルカウンタサブシステム126a)が第2のチップレットグローバルカウンタサブシステムと通信することを可能にし得る。マルチチップレットシステム100は、説明したように、方法700(図7)のブロック702の動作を続いて実行し得る。ブロック818におけるプロセスは、図3の通信303を参照して説明したように実行され得る。ブロック818における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0143】
ブロック816および818において実行される動作の順序は、単に例示的なものであり、ブロック816~818の動作は、いくつかの実施形態では、任意の順序で、部分的には同時に実行され得る。いくつかの実施形態では、方法800dは、外部メモリデバイスから独立して、しかし外部メモリデバイスとともに、デバイスのプロセッサによって実行され得る。例えば、方法800dは、SoCのプロセッサ内で又はSoC内の専用ハードウェアにおいて実行するソフトウェアモジュールであって、安定的なメモリチャネルを確立し、外部メモリデバイスのメモリにアクセスするためのコマンドを発行し、さもなければ、説明したようにアクションを行い、データを記憶するように構成されるソフトウェアモジュールとして実行され得る。
【0144】
図8Eは、いくつかの実施形態において方法700の一部として実行され得る、マルチチップレットシステムにおけるスリープクロックエッジベースのグローバルカウンタ同期の一実施形態の方法800eを示すプロセスフロー図である。図1図8Eを参照すると、方法800eは、その方法の動作を実行するように構成されるプロセッサ(例えば、処理コア120a、120b、120c、120d)において実行され得る。いくつかの実施形態では、プロセッサ(例えば、処理コア120a、120b、120c、120d)は、非一時的プロセッサ可読媒体(例えば、メモリデバイス122a、122b、122c、および122d)に記憶されたプロセッサ実行可能命令によって動作を実行するように構成される場合がある。
【0145】
ブロック820において、第1のチップレットは、第1のチップレットグローバルカウンタサブシステムおよび第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化し得る。第1のチップレット(例えば、マスタチップレット110a)は、第1のチップレットグローバルカウンタサブシステム(例えば、マスタチップレットグローバルカウンタサブシステム126a)内および第2のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126b)内のグローバルカウンタ停止を無効化し得る。グローバルカウンタ停止は、CTI停止トリガであり得る。グローバルカウンタ停止を無効化することは、第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開してもよく、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開してもよい。ブロック820におけるプロセスは、図4の通信401および402を参照して説明したように実行され得る。ブロック820における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0146】
ブロック822において、第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化し得る。第2のチップレット(例えば、スレーブチップレット110b)は、第2のチップレットグローバルカウンタサブシステム(例えば、スレーブチップレットグローバルカウンタサブシステム126b)内のグローバルカウンタ同期経路を有効化するように構成される場合がある。グローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステム(例えば、マスタチップレットグローバルカウンタサブシステム126a)が第2のチップレットグローバルカウンタサブシステムと通信することを可能にし得る。マルチチップレットシステム100は、説明したように、方法700(図7)のブロック702の動作を続いて実行し得る。ブロック822におけるプロセスは、図4の通信403を参照して説明したように実行され得る。ブロック822における動作を実行する手段は、処理コア120a、120b、120c、120dなど、マルチチップレットシステム100のプロセッサを含み得る。
【0147】
ブロック820および822において実行される動作の順序は、単に例示的なものであり、ブロック820~822の動作は、いくつかの実施形態では、任意の順序で、部分的には同時に実行され得る。いくつかの実施形態では、方法800eは、外部メモリデバイスから独立して、しかし外部メモリデバイスとともに、デバイスのプロセッサによって実行され得る。例えば、方法800eは、SoCのプロセッサ内で又はSoC内の専用ハードウェアにおいて実行するソフトウェアモジュールであって、安定的なメモリチャネルを確立し、外部メモリデバイスのメモリにアクセスするためのコマンドを発行し、さもなければ、説明したようにアクションを行い、データを記憶するように構成されるソフトウェアモジュールとして実行され得る。
【0148】
図9は、いくつかの実施形態を実装するのに適した、スマートフォン900の形態の例示的なワイヤレスデバイスの構成要素ブロック図である。スマートフォン900は、マルチチップレットシステム100などの第1の処理デバイスを含み得るが、その第1の処理デバイスは、SoC918などの第2の処理デバイスに結合されたものである。マルチチップレットシステム100およびSoC918は、5G対応のSoCであってもよい。マルチチップレットシステム100およびSoC918は、内部メモリ906、916、ディスプレイ912、およびスピーカー914に結合され得る。さらに、スマートフォン900は、ワイヤレスデータリンクに接続され得る電磁放射を送受信するためのアンテナ904、又はマルチチップレットシステム100およびSoC918中の1つ以上のプロセッサに結合されたセルラー電話送受信機908を含み得る。スマートフォン900はまた、典型的には、ユーザ入力を受信するためのメニュー選択ボタン又はロッカースイッチ920を含む。
【0149】
典型的なスマートフォン900はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化するとともに、受信された音データパケットを復号して、音を生成するためにスピーカーに提供されるアナログ信号を生成する、音声符号化/復号(コーデック)回路910を含む。また、マルチチップレットシステム100における1つ以上のプロセッサ、SoC918、ワイヤレス送受信機908、およびコーデック910は、デジタル信号プロセッサ(digital signal processo、DSP)回路(個別に図示せず)を含み得る。
【0150】
スマートフォン900のプロセッサは、本明細書で説明した様々な実装形態の機能を含む、様々な機能を実行するようにプロセッサにより実行可能な命令によって構成される場合がある、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、又はマルチプロセッサチップ(複数可)であってもよい。いくつかのモバイルデバイスでは、ワイヤレス通信機能専用のマルチチップレットシステム100内の1つのプロセッサ、および他のアプリケーションの実行専用のSoC918内の1つのプロセッサなど、複数のプロセッサが設けられ得る。典型的には、ソフトウェアアプリケーションは、アクセスされ、プロセッサにロードされる前に、メモリ906、916内に記憶され得る。プロセッサは、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【0151】
様々な実施形態(限定はしないが、図1図8Eを参照して上で説明した実施形態を含む)は、ラップトップコンピュータ1000を含む多種多様なコンピューティングシステムにおいて実装されていてもよく、ラップトップコンピュータ1000の一例が図10に示されている。図1図10を参照して、ラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1017を含み得るが、そのためタッチスクリーンディスプレイを装備した上述のコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャー、スクロールジェスチャー、およびフリックジェスチャーを受信する場合があり得る。ラップトップコンピュータ1000は通常、揮発性メモリ1012と、フラッシュメモリのディスクドライブ1013などの大容量不揮発性メモリとに結合されたプロセッサ1002を含む。加えて、コンピュータ1000は、プロセッサ1002に結合されたワイヤレスデータリンクおよび/又はセルラー電話送受信機1016に接続され得る、電磁放射を送受信するための1つ以上のアンテナ1008を有し得る。コンピュータ1000はまた、プロセッサ1002に結合されたフロッピーディスクドライブ1014およびコンパクトディスク(CD)ドライブ1015を含む場合がある。ラップトップコンピュータ1000は、いずれもプロセッサ1002に結合されたタッチパッド1017、キーボード1018、およびディスプレイ1019を含み得る。コンピューティングデバイスの他の構成は、周知のように(例えば、ユニバーサルシリアルバス(Universal Serial Bus、USB)入力を介して)プロセッサに結合されたコンピュータマウス又はトラックボールを含み得るが、それはまた、様々な実施形態とともに使用され得る。
【0152】
様々な実施形態(限定はしないが、図1図8Eを参照して上記で説明した実施形態を含む)は、様々な市販のサーバのうちのいずれかなど、固定コンピューティングシステムにおいて実装されてもよい。図1図11を参照すると、例示的なサーバ1100が図11に示されている。そのようなサーバ1100は、通常、揮発性メモリ1102と、ディスクドライブ1104などの大容量不揮発性メモリとに結合された、1つ以上のマルチコアプロセッサアセンブリ1101を含む。図11に示すように、マルチコアプロセッサアセンブリ1101は、それらをアセンブリのラックに挿入することによって、サーバ1100に追加されてもよい。サーバ1100はまた、プロセッサ1101に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)又はデジタル多用途ディスク(DVD)ディスクドライブ1106を含んでもよい。サーバ1100はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、並びに/又はセルラーデータネットワーク(例えば、CDMA、TDMA、GSM、PCS、3G、4G、LTE、又は任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1105とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1101に結合されたネットワークアクセスポート1103を含み得る。
【0153】
実装例について、以下の段落において説明する。例示的な方法に関して説明される実行例は、例示的な方法の動作を実行するためのプロセッサ実行可能命令とともに構成される回路およびプロセッサにおいて実行される例示的な方法と、方法の動作を実行する手段において実行される例示的な方法と、チップレットプロセッサに例示的な方法の動作を実行させるように構成されるプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体において実行される例示的方法と、をさらに含む。
【0154】
実施例1.第1のチップレットグローバルカウンタサブシステムを含む第1のチップレットと、第2のチップレットグローバルカウンタサブシステムを含む第2のチップレットと、第1のチップレットおよび第2のチップレットを通信可能に結合しているインターフェースバスと、第1のチップレットおよび第2のチップレットにスリープクロックを供給するように構成される電力管理集積回路(PMIC)と、を含む、SoCであって、第1のチップレットは、インターフェースバスを介してグローバルカウンタ同期パルストリガを第2のチップレットに送信するように構成され、第2のチップレットは、グローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードするように構成される、SoC。
【0155】
実施例2.第1のチップレットは、第1のチップレットグローバルカウンタサブシステムから、第1のチップレットグローバルカウンタ値を読み出し、第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を生成し、インターフェースバスを介して、グローバルカウンタ同期値を第2のチップレットに送信するようにさらに構成され、第2のチップレットは、グローバルカウンタ同期値をプリロードレジスタに記憶するようにさらに構成され、グローバルカウンタ同期値は、プリロードレジスタから第2のチップレットグローバルカウンタサブシステムにロードされる、実施例1に記載のSoC。
【0156】
実施例3.第1のチップレットグローバルカウンタ値は、スリープクロックの立ち上がりエッジにおいて、第1のチップレットグローバルカウンタサブシステムから読み出される、実施例2に記載のSoC。
【0157】
実施例4.第1のチップレットは、スリープクロックのスリープクロック同期エッジを判定するようにさらに構成され、スリープクロック同期エッジは、スリープクロックの立ち上がりエッジである、実施例1~3のいずれか1つに記載のSoC。
【0158】
実施例5.第1のチップレットは、スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第2のチップレットに送信するようにさらに構成される、実施例1~4のいずれか1つに記載のSoC。
【0159】
実施例6.第1のチップレットは、スリープクロック同期エッジと、スリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間において、グローバルカウンタ同期パルストリガを第2のチップレットに送信するようにさらに構成される、実施例1~5のいずれか1つに記載のSoC。
【0160】
実施例7.第1のチップレットは、リセットアサーションを第2のチップレットに送信するようにさらに構成され、第2のチップレットは、リセットアサーションに応じて、グローバルカウンタ同期要求をインターフェースバスを介して第1のチップレットに送信するようにさらに構成され、第1のチップレットは、第1のチップレットが第2のチップレットからグローバルカウンタ同期要求を受信したことに応じて、グローバルカウンタ同期パルストリガをインターフェースバスを介して第2のチップレットに送信するように構成される、実施例1~6のいずれか1つに記載のSoC。
【0161】
実施例8.第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化し、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化するようにさらに構成される、実施例1~7のいずれか1つに記載のSoC。
【0162】
実施例9.第1のチップレットは、第1のチップレットグローバルカウンタサブシステム内および第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化するようにさらに構成され、第2のチップレットは、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化するようにさらに構成される、実施例1~8のいずれか1つに記載のSoC。
【0163】
実施例10.第1のチップレットと第2のチップレットとの間のスリープクロックスキューは、水晶発振器クロックサイクル2つ分以下であり、スリープクロックは、スター構成で第1のチップレットおよび第2のチップレットに分配される、実施例1~9のいずれか1つに記載のSoC。
【0164】
実施例11.第3のチップレットグローバルカウンタサブシステムを含む第3のチップレットをさらに含み、インターフェースバスは、第1のチップレットと第3のチップレットとを通信可能に結合し、第1のチップレットは、グローバルカウンタ同期パルストリガをインターフェースバスを介して第3のチップレットに送信するようにさらに構成され、第3のチップレットは、グローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、第3のチップレットグローバルカウンタサブシステムにグローバルカウンタ同期値をロードするように構成される、実施例1~10のいずれか1つに記載のSoC。
【0165】
実施例12.インターフェースバスはSPMIバスである、実施例1~11のいずれか1つに記載のSoC。
【0166】
実施例13.マルチチップレットシステム内でのグローバルカウンタ同期のための方法であって、電力管理集積回路(PMIC)を介して、スリープクロックを第1のチップレットおよび第2のチップレットに供給することと、第1のチップレットから第2のチップレットにグローバルカウンタ同期パルストリガを送信することと、第2のチップレットがグローバルカウンタ同期パルストリガを受信したことに応じて、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードすることと、を含む方法。
【0167】
実施例14.第1のチップレットによって、第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すことと、第1のチップレットによって、第1のチップレットグローバルカウンタ値に基づいてグローバルカウンタ同期値を生成することと、グローバルカウンタ同期値を第1のチップレットから第2のチップレットに送信することと、グローバルカウンタ同期値を、第2のチップレットのプリロードレジスタに記憶することと、を含み、グローバルカウンタ同期値をプリロードレジスタから第2のチップレットグローバルカウンタサブシステムにロードする実施例13に記載の方法。
【0168】
実施例15.第1のチップレットグローバルカウンタ値は、スリープクロックの立ち上がりエッジにおいて、第1のチップレットグローバルカウンタサブシステムから読み出される、実施例14に記載の方法。
【0169】
実施例16.第1のチップレットによって、スリープクロックのスリープクロック同期エッジを判定することをさらに含み、スリープクロック同期エッジは、スリープクロックの立ち上がりエッジである、実施例13~15のいずれか1つに記載の方法。
【0170】
実施例17.スリープクロックのスリープクロック同期エッジよりも1スリープクロックサイクル前に、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信することをさらに含む、実施例13~16のいずれか1つに記載の方法。
【0171】
実施例18.スリープクロック同期エッジとスリープクロック同期エッジよりも1スリープクロックサイクル前との間の遅延時間に、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信することをさらに含む、実施例13~17のいずれか1つに記載の方法。
【0172】
実施例19.第1のチップレットから第2のチップレットにリセットアサーションを送信することと、リセットアサーションに応じて、グローバルカウンタ同期要求を第2のチップレットから第1のチップレットに送信することと、をさらに含み、グローバルカウンタ同期パルストリガを第1のチップレットから第2のチップレットに送信することは、第1のチップレットが第2のチップレットからグローバルカウンタ同期要求を受信したことに応ずるものである、実施例13~18のいずれか1つに記載の方法。
【0173】
実施例20.第2のチップレットによって、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化することと、第2のチップレットによって、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化することと、をさらに含む、実施例13~19のいずれか1つに記載の方法。
【0174】
実施例21.第1のチップレットによって、第1のチップレットグローバルカウンタサブシステムおよび第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ停止を無効化することは、第1のチップレットグローバルカウンタサブシステム内の第1のチップレットグローバルカウンタのカウントを再開させ、第2のチップレットグローバルカウンタサブシステム内の第2のチップレットグローバルカウンタのカウントを再開させる、グローバルカウンタ停止を無効化することと、第2のチップレットによって、第2のチップレットグローバルカウンタサブシステム内のグローバルカウンタ同期経路を有効化することは、第1のチップレットグローバルカウンタサブシステムが第2のチップレットグローバルカウンタサブシステムと通信することを可能にする、グローバルカウンタ同期経路を有効化することと、をさらに含む、実施例13~20のいずれか1つに記載の方法。
【0175】
実施例22.マルチチップレットシステム内の第1のチップレットによって実行されるグローバルカウンタ同期のための方法であって、電力管理集積回路(PMIC)からスリープクロックを受信することと、グローバルカウンタ同期パルストリガを第2のチップレットに送信することと、を含む方法であって、グローバルカウンタ同期パルストリガは、第2のチップレットに、スリープクロックのスリープクロック同期エッジにおいて、グローバルカウンタ同期値を第2のチップレットグローバルカウンタサブシステムにロードさせるように構成される、方法。
【0176】
実施例32.第1のチップレットグローバルカウンタサブシステムから第1のチップレットグローバルカウンタ値を読み出すことと、第1のチップレットグローバルカウンタ値に基づいて、グローバルカウンタ同期値を生成することと、グローバルカウンタ同期値を第2のチップレットに送信することと、をさらに含む、実施例22に記載の方法。
【0177】
図示および説明する様々な実施形態は、特許請求の範囲の様々な特徴を示すための例として提供されるにすぎない。しかしながら、任意の所与の実施形態に関して図示および説明される特徴は、必ずしも関連する実施形態に限定されるとは限らず、図示および説明される他の実施形態とともに使用されてよく、又はそれらと組み合わせられてもよい。さらに、特許請求の範囲は、いかなる例示的な一実施形態によっても限定されるものでない。
【0178】
本出願で使用する場合、「構成要素」、「モジュール」、「システム」などの用語は、限定はしないが、特定の動作又は機能を実行するように構成される、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、又は実行中のソフトウェアなど、コンピュータ関連エンティティを含むものとする。例えば、構成要素は、限定はしないが、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、又はコンピュータであり得る。例として、ワイヤレスデバイス上で稼動しているアプリケーションとワイヤレスデバイスの両方が、構成要素と呼ばれることがある。1つ以上の構成要素は、プロセス又は実行スレッド内に存在することがあり、構成要素は、1つのプロセッサもしくはコアに局在し得るか、又は2つ以上のプロセッサもしくはコアの間で分散され得る。加えて、これらの構成要素は、様々な命令又はデータ構造がその上に記憶されている様々な非一時的コンピュータ可読媒体から実行し得る。構成要素は、ローカルプロセス又はリモートプロセス、関数呼出し又はプロシージャ呼出し、電子信号、データパケット、メモリ読み出し/書き込み、および他の知られているネットワーク、コンピュータ、プロセッサ、又はプロセス関連の通信方法によって通信し得る。
【0179】
いくつかの異なるセルラー通信およびモバイル通信のサービスおよび規格が利用可能であるか、又は将来において企図され、それらのすべてが様々な実装形態を実装し、様々な実装形態から利益を得ることができる。そのようなサービスおよび規格は、第3世代パートナーシッププロジェクト(3GPP(登録商標))、ロングタームエボリューション(LTE)システム、第3世代ワイヤレスモバイル通信技術(3G)、第4世代ワイヤレスモバイル通信技術(4G)、第5世代ワイヤレスモバイル通信技術(5G)、モバイル通信用グローバルシステム(GSM)、ユニバーサルモバイルテレコミュニケーションズシステム(UMTS)、3GSM、汎用パケット無線サービス(GPRS)、符号分割多元接続(CDMA)システム(cdmaOne、CDMA1020(商標)など)、GSM進化型高速データレート(EDGE)、高度モバイルフォンシステム(AMPS)、デジタルAMPS(IS-136/TDMA)、エボリューションデータオプティマイズド(EV-DO)、デジタル強化コードレス電気通信(DECT)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)、ワイヤレスローカルエリアネットワーク(WLAN)、Wi-Fi保護アクセスI&II(WPA、WPA2)、および統合デジタル拡張ネットワーク(iDEN)などを含む。これらの技術の各々は、例えば、音声、データ、シグナリング、又はコンテンツメッセージの送受信を伴う。個々の電気通信規格又は技術に関する専門用語又は技術的詳細へのいかなる言及も、説明のためにすぎず、特にクレームの文言に記載されていない限り、特許請求の範囲の範囲を特定の通信システム又は技術に限定するものではないことを理解されたい。
【0180】
図示および説明された様々な実装形態は、特許請求の範囲の様々な特徴を例示するための例として提供されているにすぎない。しかしながら、任意の所与の実装形態に関して図示および説明された特徴は、必ずしも関連する実装形態に限定されるとは限らず、図示および説明された他の実装形態とともに使用されるか又はそれらと組み合わされてよい。さらに、特許請求の範囲は、いずれか1つの例示的な実装形態によって限定されないものとする。例えば、本明細書で開示した方法の動作のうちの1つ以上は、本明細書で開示した方法の1つ以上の動作と置換されるか又はそれらと組み合わされ得る。
【0181】
上記の方法の説明およびプロセスフロー図は、例示的な例として提供されるにすぎず、様々な実施形態のブロックが、提示された順序で実行されなければならないことを必要とするか又は暗示するものではない。当業者によって諒解されるように、上記の実施形態におけるブロックの順序は、任意の順序で実行されてよい。さらに、「その後(thereafter)」、「次いで(then)」、「次に(next)」などの語は、ステップの順序を限定するものではない。これらの語は、方法の説明を通じて単に読者を導くために使用される。さらに、例えば、冠詞「a」、「an」、又は「the」を使用する、単数形での請求項要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
【0182】
本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムブロックは、電子ハードウェア、コンピュータソフトウェア、又はその両方の組合せとして実装されてよい。ハードウェアとソフトウェアとのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびブロックが、上記では概してそれらの機能性に関して説明されている。そのような機能がハードウェアとして実装されるのか又はソフトウェアとして実装されるのかは、特定の適用例およびシステム全体に課される設計上の制約に依存する。当業者は、説明した機能性を特定の適用例ごとに様々な方法で実行してよいが、そのような実施形態判定は、様々な実施形態の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【0183】
本明細書で開示する態様に関連して説明する様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用シングルチッププロセッサもしくは汎用マルチチッププロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別のゲートもしくはトランジスタ論理、個別のハードウェア構成要素、又は、本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装又は実行され得る。汎用プロセッサは、マイクロプロセッサ、又は任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくはステートマシンであってよい。プロセッサはまた、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つ以上のマイクロプロセッサ、又は任意の他のそのような構成などの組合せとして実装され得る。いくつかの実装形態では、特定のプロセスおよび方法は、所与の機能に固有の回路構成によって実行され得る。
【0184】
1つ以上の態様では、説明した機能は、本明細書で開示する構造およびそれらの構造的均等物を含む、ハードウェア、デジタル電子回路構成、コンピュータソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装され得る。また、本明細書で説明する主題の実装形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のための、又はデータ処理装置の動作を制御するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして、実装され得る。
【0185】
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコード又は「プログラムコード」は、C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、Structured Query Language(例えば、Transact-SQL)、Perlなどの高水準プログラミング言語又は様々な他のプログラミング言語で記述される場合がある。本出願で使用するコンピュータ可読記憶媒体上に記憶されたプログラムコード又はプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械語コードを指す場合がある。
【0186】
様々な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装されてよい。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体又は非一時的プロセッサ可読媒体上の1つ以上の命令又はコードとして記憶されてよい。本明細書で開示する方法又はアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体又は非一時的プロセッサ可読記憶媒体上に常駐してよいプロセッサ実行可能ソフトウェアモジュールの中で具現されてよい。非一時的コンピュータ可読又はプロセッサ可読記憶媒体は、コンピュータ又はプロセッサによってアクセスされてもよい任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体又は非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、又は命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用されてよく、コンピュータによってアクセスされてよい、任意の他の媒体を含んでよい。本明細書で使用するディスク(Disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。追加として、方法又はアルゴリズムの動作は、コンピュータプログラム製品の中に組み込まれてもよい非一時的プロセッサ可読媒体および/又は非一時的コンピュータ可読媒体上のコードおよび/又は命令のうちの1つ、又はその任意の組合せもしくはセットとして存在してもよい。
【0187】
本開示で説明した実装形態への様々な修正が当業者には容易に明らかになってよく、本明細書で定義する一般原理は、本開示の趣旨又は範囲から逸脱することなく他の実装形態に適用されてよい。したがって、特許請求の範囲は、本明細書で示されている実装形態に限定されるものではなく、本開示、本明細書で開示される原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【0188】
別個の実装形態の文脈では、本明細書で説明されるいくつかの特徴はまた、単一の実装形態において組み合わせて実装され得る。反対に、単一の実装形態の文脈で説明される様々な特徴はまた、複数の実装形態において別々に、又は任意の適切な部分組合せにおいて実施され得る。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、そのようなものとして最初に特許請求されることさえあり得るが、特許請求される組合せからの1つ以上の特徴は、場合によっては、その組合せから削除されることがあり、特許請求される組合せは、部分組合せ又は部分組合せの変形形態を対象とすることがある。
【0189】
同様に、動作は特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が、示された特定の順序もしくは連続した順序で実行されること、又は図示されたすべての動作が実行されることを必要とするものとして理解されるべきでない。さらに、図面は、1つ以上の例示的なプロセスをフロー図の形態で概略的に示すことがある。しかしながら、示されない他の動作が、概略的に図示される例示的なプロセスに組み込まれ得る。例えば、1つ以上の追加の動作が、図示した動作のうちのいずれかの前に、その後に、それと同時に、又はそれらの間に実行され得る。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上で説明された実装形態における様々なシステム構成要素の分離は、すべての実装形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品において一緒に統合され得るか、又は複数のソフトウェア製品にパッケージ化され得ることを理解されたい。加えて、他の実装形態は以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲に記載されているアクションは、異なる順序で実行される場合があり、依然として望ましい結果を達成することができる。
【0190】
開示する実施形態の前述の説明は、任意の当業者が本実施形態を作成又は使用することを可能にするために提供される。これらの実施形態に対する様々な修正は、当業者に容易に明らかになり、本明細書で定義する一般原理は、本実施形態の範囲から逸脱することなく他の実施形態に適用されてよい。したがって、様々な実施形態は、本明細書に示す実施形態に限定されることを意図せず、以下の特許請求の範囲並びに本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図8C
図8D
図8E
図9
図10
図11