(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】マルチマスターを支援するグラフィック処理装置を共有するシステムオンチップおよびグラフィック処理装置の動作方法
(51)【国際特許分類】
G06F 15/78 20060101AFI20240228BHJP
G06F 11/14 20060101ALI20240228BHJP
G06F 9/455 20180101ALI20240228BHJP
【FI】
G06F15/78 516
G06F11/14 617
G06F9/455 150
G06F15/78 530
(21)【出願番号】P 2022537810
(86)(22)【出願日】2020-11-25
(86)【国際出願番号】 KR2020016794
(87)【国際公開番号】W WO2021132905
(87)【国際公開日】2021-07-01
【審査請求日】2022-06-17
(31)【優先権主張番号】10-2019-0173272
(32)【優先日】2019-12-23
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】518313928
【氏名又は名称】テレチップス・インコーポレイテッド
【氏名又は名称原語表記】TELECHIPS INC.
【住所又は居所原語表記】42, OLYMPIC‐RO 35DA‐GIL, SONGPA‐GU, SEOUL 05510, REPUBLIC OF KOREA
(74)【代理人】
【識別番号】110001818
【氏名又は名称】弁理士法人R&C
(72)【発明者】
【氏名】チェ,ジョン‐サン
(72)【発明者】
【氏名】キム,ムン‐ソ
【審査官】坂東 博司
(56)【参考文献】
【文献】韓国公開特許第10-2012-0054027(KR,A)
【文献】特表2013-500543(JP,A)
【文献】特開2014-203230(JP,A)
【文献】韓国公開特許第10-2009-0016286(KR,A)
【文献】特開2006-201919(JP,A)
【文献】特表2013-500520(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/78
G06F 11/14
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
システムオンチップ(System on chip、SoC)であって、
少なくとも一つのオペレーティングシステム(Operating System)を
それぞれ独立的に実行する複数の中央処理装置(Central Processing Unit、CPU)、
バスインターフェースを通じて前記複数の中央処理装置とそれぞれ連結されて相互通信する
一つのグラフィック処理装置(Graphics Processing Unit、GPU)、そして
前記複数の中央処理装置のうちの少なくとも一つの中央処理装置と選択的に連結され、
連結された中央処理装置を特定する特定情報と、前記連結された中央処理装置で実行された少なくとも一つのオペレーティングシステムの実行状態情報
とを前記グラフィック処理装置に伝達する少なくとも一つの状態モニタリング装置を含み、
前記グラフィック処理装置は、前記
複数の中央処理装置のそれぞれが実行する少なくとも一つのオペレーティングシステムにより共有され、
前記少なくとも一つの状態モニタリング装置から伝達された前記中央処理装置を特定する特定情報と前記少なくとも一つのオペレーティングシステムの実行状態情報
とに基づいて前記
複数の中央処理装置のそれぞれが実行する少なくとも一つのオペレーティングシステムによる共有動作を制御する、システムオンチップ(SoC)。
【請求項2】
前記グラフィック処理装置は、前記少なくとも一つのオペレーティングシステムの実行状態情報に基づいて、正常でない状態であるオペレーティングシステムを判別し、判別したオペレーティングシステムの作業を正常終了処理する、請求項1に記載のシステムオンチップ(SoC)。
【請求項3】
前記グラフィック処理装置は、前記正常でない状態であるオペレーティングシステムがホストオペレーティングシステムに判断されると、前記正常でない状態であるオペレーティングシステムが再ブーティングを完了する時まで構成を中止する、請求項2に記載のシステムオンチップ(SoC)。
【請求項4】
前記複数の中央処理装置は、第1スタンドアローン(Stand alone)オペレーティングシステムを実行する第1中央処理装置、そして
第2スタンドアローンオペレーティングシステムを実行する第2中央処理装置を含み、
前記少なくとも一つの状態モニタリング装置は、
前記第1中央処理装置に連結されて、前記第1スタンドアローンオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する第1状態モニタリング装置、そして
前記第2中央処理装置に連結されて、前記第2スタンドアローンオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する第2状態モニタリング装置を含む、請求項1に記載のシステムオンチップ(SoC)。
【請求項5】
前記複数の中央処理装置は、スタンドアローンオペレーティングシステムを実行する第1中央処理装置、そして
ハイパーバイザープログラム、そしてハイパーバイザープログラム基盤で少なくとも一つのゲストオペレーティングシステムを実行する第2中央処理装置を含み、
前記少なくとも一つの状態モニタリング装置は、
前記第1中央処理装置に連結されて、前記スタンドアローンオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する第1状態モニタリング装置を含み、
前記ハイパーバイザープログラムは、前記少なくとも一つのゲストオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する、請求項1に記載のシステムオンチップ(SoC)。
【請求項6】
前記複数の中央処理装置は、第1スタンドアローンオペレーティングシステムを実行する第1中央処理装置、そして
第2スタンドアローンオペレーティングシステム、ハイパーバイザープログラム、そしてハイパーバイザープログラム基盤で少なくとも一つのゲストオペレーティングシステムを実行する第2中央処理装置を含み、
前記少なくとも一つの状態モニタリング装置は、
前記第1中央処理装置に連結されて、前記第1スタンドアローンオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する第1状態モニタリング装置、そして
前記第2中央処理装置に連結されて、前記第2スタンドアローンオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する第2状態モニタリング装置を含み、
前記ハイパーバイザープログラムは、前記少なくとも一つのゲストオペレーティングシステムの実行状態情報を前記グラフィック処理装置に伝達する、請求項1に記載のシステムオンチップ(SoC)。
【請求項7】
システムオンチップ(System on chip、SoC)に搭載されたグラフィック処理装置(Graphics Processing Unit、GPU)の動作方法であって、
少なくとも一つのオペレーティングシステム(Operating System)をそれぞれ独立的に実行する複数の中央処理装置(Central Processing Unit、CPU)から
、少なくとも一つの中央処理装置を特定する特定情報と、前記少なくとも一つの中央処理装置で実行されたオペレーティングシステ
ムの実行状態情報
とを収集する段階、
そして
前記特定情報と前記実行状態情報
とに基づいて正常でない状態で動作する
中央処理装置またはオペレーティングシステムがあるか否か判断する段階
を含み、
前記グラフィック処理装置は、
前記複数の中央処理装置のそれぞれが実行する少なくとも一つのオペレーティングシステムにより共有され、
正常状態で動作する中央処理装置またはオペレーティングシステムが要求した作業を処理する共有動作を遂行し、
正常でない状態で動作する
中央処理装置またはオペレーティングシステムの既作業を正常に終了処理し、前記正常でない状態で動作する
中央処理装置またはオペレーティングシステムの再ブーティングが完了する時まで待機
し、
前記特定情報と前記実行状態情報
とは、少なくとも一つの中央処理装置に連結された状態モニタリング装置と連結されたバスインターフェースを通じて収集される、グラフィック処理装置の動作方法。
【請求項8】
前記オペレーティングシステムのうちの一つはホストオペレーティングシステムとして動作し、
前記判断する段階以降、前記正常でない状態で動作するオペレーティングシステムがホストオペレーティングシステムである場合、前記ホストオペレーティングシステムの再ブーティングが完了する時までグラフィック処理装置の構成を中止する、請求項7に記載のグラフィック処理装置の動作方法。
【請求項9】
前記実行状態情報は、任意の中央処理装置で実行されたハイパーバイザーから収集され、前記ハイパーバイザーが実行した少なくとも一つのゲストオペレーティングシステムの実行状態を含む、請求項7に記載のグラフィック処理装置の動作方法。
【請求項10】
前記実行状態情報は、少なくとも一つの中央処理装置に連結された状態モニタリング装置と連結されたバスインターフェースを通じて収集された少なくとも一つのスタンドアローンオペレーティングシステムの実行状態情報と、
任意の中央処理装置で実行されたハイパーバイザーから収集された少なくとも一つのゲストオペレーティングシステムの実行状態を含む、請求項7に記載のグラフィック処理装置の動作方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィック処理装置(Graphics Processing Unit、以下、「GPU」と通称する)を共有するシステムオンチップ(System on chip、以下、「SoC」と通称する)およびその動作方法に関し、マルチマスター(Multi-master)を支援するGPUが搭載されたSoCに関する。
【背景技術】
【0002】
最近、SoC設計によれば、多様な中央処理装置(Central Processing Unit、以下、「CPU」と通称する)とそのCPUで実行されるオペレーティングシステム(Operating System、以下、「OS」と通称する)を提供している。
【0003】
一般的に、互いに異なるOSは単一のGPUまたは複数のGPUに高い並列コンピューティング作業またはイメージレンダリングを処理するように要求する。SoCの使用事例により、各OSで要求するGPUコンピューティング性能は変更され得る。
【0004】
複数個のCPUと複数個のGPUがSoCに搭載される場合、一つのCPUはその専用GPUにのみ作業(Job)を送ることができ、他のCPUもその専用GPUにのみ作業を送ることができる。したがって、GPUは1個のOSで要請する作業(Job)しか遂行することができない。例えば、SoCに3個のOSがあり、2個のGPUがある場合、3個のOSのうち、2個のOSは一つのCPUに搭載され、一つのOSは他のCPUに搭載される。この時、一つのCPUに搭載された2個のOSが同時に一つのGPUを使用することができない。したがって、互いに異なるCPUに搭載された2個のOSのみがそれぞれの専用GPUを使用することができる。したがって、SoCに多数個のOSを搭載してもGPUを使用することができないOSが発生することがあるため、これはSoCの制約事項になる。
【0005】
これを解決するために従来はハイパーバイザー(Hypervisor)を使用してGPUのマルチマスター(Multi-master)支援を提供する技術が使用されている。GPUは、ハイパーバイザーを使用してマルチマスターの再ブーティング(Rebooting)を支援した。
【0006】
しかし、ハイパーバイザーは、マルチマスター支援以外にも多様なGPUコンピューティング性能要求事項と、システム動作を保証するために広範囲に使用される。しかし、ハイパーバイザーの使用は開発の複雑性と費用の観点でシステムに負担になり得る。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする一課題は、CPUのOS(Operating System)実行状態情報をGPUに伝達するシステムモニタリングモジュールを利用して複数のOSがGPUを共有することができるシステムオンチップ(system-on-chip、SoC)およびGPU動作方法を提供することにある。
【0008】
本発明が解決しようとする他の課題は、マルチマスターを支援するGPUが搭載され、システムオンチップ(SoC)に搭載されたシステムモニタリングモジュールをOSまたはCPUと選択的に連結させることによって、全てのOSがシステムモニタリングモジュールを通じてGPUを共有するようにしたり、全てのOSがハイパーバイザーを通じてGPUを共有するようにしたり、一部のOSはシステムモニタリングモジュールを通じてGPUを共有し、一部のOSはハイパーバイザーを通じてGPUを共有するようにすることによって、ハイパーバイザー有無に関係なしに多様な使用事例をカバーすることができるシステムオンチップ(SoC)およびGPU動作方法を提供することにある。
【課題を解決するための手段】
【0009】
本発明の一実施例によれば、システムオンチップ(System on chip、SoC)であって、少なくとも一つのオペレーティングシステム(Operating System)をそれぞれ独立的に実行する複数の中央処理装置(Central Processing Unit、CPU)、バスインターフェースを通じて前記複数の中央処理装置とそれぞれ連結されて相互通信する一つのグラフィック処理装置(Graphics Processing Unit、GPU)、そして前記複数の中央処理装置のうちの少なくとも一つの中央処理装置と選択的に連結され、連結された中央処理装置を特定する特定情報と、前記連結された中央処理装置で実行された少なくとも一つのオペレーティングシステムの実行状態情報とを前記グラフィック処理装置に伝達する少なくとも一つの状態モニタリング装置を含み、前記グラフィック処理装置は、前記複数の中央処理装置のそれぞれが実行する少なくとも一つのオペレーティングシステムにより共有され、前記少なくとも一つの状態モニタリング装置から伝達された前記中央処理装置を特定する特定情報と前記少なくとも一つのオペレーティングシステムの実行状態情報とに基づいて前記複数の中央処理装置のそれぞれが実行する少なくとも一つのオペレーティングシステムによる共有動作を制御する。
【0010】
前記グラフィック処理装置は、前記少なくとも一つのOSの実行状態情報に基づいて、正常でない状態であるOSを判別し、判別したOSの作業を正常終了処理することができる。
【0011】
前記グラフィック処理装置は、前記正常でない状態であるOSがホストOSに判断されると、前記正常でない状態であるOSが再ブーティングを完了する時まで構成を中止することができる。
【0012】
前記複数の中央処理装置は、第1スタンドアローン(Stand alone)OSを実行する第1中央処理装置、そして第2スタンドアローンOSを実行する第2中央処理装置を含み、前記少なくとも一つの状態モニタリング装置は、前記第1中央処理装置に連結されて、前記第1スタンドアローンOSの実行状態情報を前記グラフィック処理装置に伝達する第1状態モニタリング装置、そして前記第2中央処理装置に連結されて、前記第2スタンドアローンOSの実行状態情報を前記グラフィック処理装置に伝達する第2状態モニタリング装置を含むことができる。
【0013】
前記複数の中央処理装置は、スタンドアローンンOSを実行する第1中央処理装置、そしてハイパーバイザープログラム、そしてハイパーバイザープログラム基盤で少なくとも一つのゲストンOSを実行する第2中央処理装置を含み、前記少なくとも一つの状態モニタリング装置は、前記第1中央処理装置に連結されて、前記スタンドアローンンOSの実行状態情報を前記グラフィック処理装置に伝達する第1状態モニタリング装置を含み、前記ハイパーバイザープログラムは、前記少なくとも一つのゲストンOSの実行状態情報を前記グラフィック処理装置に伝達することができる。
【0014】
前記複数の中央処理装置は、第1スタンドアローンOSを実行する第1中央処理装置、そして第2スタンドアローンOS、ハイパーバイザープログラム、そしてハイパーバイザープログラム基盤で少なくとも一つのゲストOSを実行する第2中央処理装置を含み、前記少なくとも一つの状態モニタリング装置は、前記第1中央処理装置に連結されて、前記第1スタンドアローンOSの実行状態情報を前記グラフィック処理装置に伝達する第1状態モニタリング装置、そして前記第2中央処理装置に連結されて、前記第2スタンドアローンOSの実行状態情報を前記グラフィック処理装置に伝達する第2状態モニタリング装置を含み、前記ハイパーバイザープログラムは、前記少なくとも一つのゲストOSの実行状態情報を前記グラフィック処理装置に伝達することができる。
【0015】
本発明の他の実施例によれば、システムオンチップ(System on chip、SoC)に搭載されたグラフィック処理装置(Graphics Processing Unit、GPU)の動作方法であって、少なくとも一つのオペレーティングシステム(Operating System)をそれぞれ独立的に実行する複数の中央処理装置(Central Processing Unit、CPU)から、少なくとも一つの中央処理装置を特定する特定情報と、前記少なくとも一つの中央処理装置で実行されたオペレーティングシステムの実行状態情報とを収集する段階、そして前記特定情報と前記実行状態情報とに基づいて正常でない状態で動作する中央処理装置またはオペレーティングシステムがあるか否か判断する段階を含み、前記グラフィック処理装置は、前記複数の中央処理装置のそれぞれが実行する少なくとも一つのオペレーティングシステムにより共有され、正常状態で動作する中央処理装置またはオペレーティングシステムが要求した作業を処理する共有動作を遂行し、正常でない状態で動作する中央処理装置またはオペレーティングシステムの既作業を正常に終了処理し、前記正常でない状態で動作する中央処理装置またはオペレーティングシステムの再ブーティングが完了する時まで待機し、前記特定情報と前記実行状態情報とは、少なくとも一つの中央処理装置に連結された状態モニタリング装置と連結されたバスインターフェースを通じて収集される。
【0016】
前記OSのうちの一つはホストOSとして動作し、前記判断する段階以降、前記正常でない状態で動作するOSがホストOSである場合、前記ホストOSの再ブーティングが完了する時までグラフィック処理装置の構成を中止することができる。
【0017】
前記実行状態情報は、任意の中央処理装置で実行されたハイパーバイザーから収集され、前記ハイパーバイザーが実行した少なくとも一つのゲストOSの実行状態を含むことができる。
【0018】
前記実行状態情報は、少なくとも一つの中央処理装置に連結された状態モニタリング装置と連結されたバスインターフェースを通じて収集された少なくとも一つのスタンドアローンOSの実行状態情報と、任意の中央処理装置で実行されたハイパーバイザーから収集された少なくとも一つのゲストOSの実行状態を含むことができる。
【発明の効果】
【0019】
本発明の実施例によれば、一つのシステムオンチップ(SoC)でハイパーバイザー有無に関係なしに多様な使用事例をカバーすることができる。また、GPUを共有することによって理論的にコンピューティング性能を最大100%まで高めることができる。
【0020】
また、システムオンチップ(SoC)に搭載されたOSのうちの一つが再ブーティングしたり正常でない状況が発生しても、GPUがこれを確認して他のOSに影響を与えないため、システムオンチップ(SoC)のシステム安全性を保障することができ、コア別再ブーティングを支援することができる。
【0021】
また、システムオンチップ(SoC)に搭載されたシステムモニタリング装置が連結されたCPUまたはOSの実行状態情報をGPUに伝達するため、GPUは全てのCPUまたはOSの実行状態情報を知ることができる。したがって、ハイパーバイザーがなくても複数のCPUまたはOSがGPUを共有することができるため、ハイパーバイザーの使用費用を減らし、システム費用を節減することができる。
【図面の簡単な説明】
【0022】
【
図1】本発明の一実施例によるシステムオンチップ(SoC)の構成を示すブロック図である。
【
図2】
図1のシステムオンチップ(SoC)の動作を説明する図である。
【
図3】本発明の他の実施例によるシステムオンチップ(SoC)の構成を示すブロック図である。
【
図4】
図3のシステムオンチップ(SoC)の動作を説明する図である。
【
図5】本発明のまた他の実施例によるシステムオンチップ(SoC)の構成を示すブロック図である。
【
図6】
図5のシステムオンチップ(SoC)の動作を説明する図である。
【
図7】本発明の実施例によるGPUの動作を示すフローチャートである。
【発明を実施するための形態】
【0023】
以下、添付した図面を参照して本発明の実施例について本発明が属する技術分野における通常の知識を有する者が容易に実施することができるように詳しく説明する。しかし、本発明は、多様な異なる形態に実現することができ、ここで説明する実施例に限定されない。そして、図面において、本発明を明確に説明するために説明上不要な部分は省略し、明細書全体にわたって類似の部分については類似の図面符号を付した。
【0024】
明細書全体において、ある部分がある構成要素を「含む」という時、これは特に反対になる記載がない限り、他の構成要素を除外せず、他の構成要素をさらに含むことができることを意味する。
【0025】
また、明細書に記載された「・・・部」、「・・・器」、「・・・モジュール」などの用語は、少なくとも一つの機能や動作を処理する単位を意味し、これはハードウェアやソフトウェアまたはハードウェアおよびソフトウェアの結合で実現され得る。
【0026】
本明細書で「伝送または提供」は、直接的な伝送または提供することだけでなく、他の装置を通じてまたは迂回経路を利用して間接的に伝送または提供することも含むことができる。
【0027】
本明細書で、単数で記載された表現は「一つ」または「単一」などの明示的な表現を使用しない以上、単数または複数に解釈され得る。
【0028】
本明細書で、図面に関係なしに同一の図面番号は同一の構成要素を指し、「および/または」は、言及された構成要素のそれぞれおよび一つ以上の全ての組み合わせを含む。
【0029】
第1、第2などの用語は、多様な構成要素を説明することに使用され得るが、構成要素は用語により限定されてはならない。用語は一つの構成要素を他の構成要素から区別する目的のみで使用される。
【0030】
本明細書で、中央処理装置(Central Processing Unit、以下、「CPU」と通称する)は、外部から情報を受信し、記憶し、コンピュータプログラムの命令語(Program Instructions)を解釈して演算し、外部に出力する役割を果たす。CPUは、コンピュータ部品と情報を交換しながらコンピュータ全体の動作を制御する。CPUは、ソフトウェア、つまり、アプリケーションプログラム(Application Program)、オペレーティングシステム(Operating System、以下、「OS」と通称する)、装置ドライバーを実行する。CPUは、ワーキングメモリにロードされるOSを実行する。CPUは、OS基盤で駆動される多様なアプリケーションプログラムを実行する。
【0031】
CPUは、少なくとも2個の独立的に駆動可能なプロセッサーを含むマルチ-コアプロセッサー(Multi-Core Processor)で提供され得る。プロセッサーのそれぞれは、プログラム命令を独立的に読み取って実行することができる。プロセッサーは、互いに異なる電源電圧により駆動されたり、互いに異なる動作クロックにより駆動されることもできる。例えば、プロセッサーは、同種のプロセッサーであってもよく、異種のプロセッサーから構成されてもよい。
【0032】
CPUは、少なくとも一つのクラスタを含むことができ、各クラスタは、複数個のCPUコアから構成され得る。CPUコアは、ソフトウェアを構成する複数の命令語(instruction)およびデータを処理することができる。一例としてCPUコアは複数の命令語またはデータをチェッチ(fetch)し、フェッチされた命令語またはデータを処理し、これを内部レジスターに保存することができる。この時、ソフトウェアはSoCに内蔵されたソフトウェアまたは使用者の使用者環境で開発されるソフトウェアを含むことができる。
【0033】
グラフィック処理装置(Graphics Processing Unit、以下、「GPU」と通称する)は、CPUの要請により多様なグラフィック演算を遂行する。つまり、GPUは、処理要請されたデータをディスプレイに適したデータに変換することができる。GPUは、類似の演算を繰り返して処理する並列処理に有利な演算構造を有する。GPUは、OSの指示により画面を生成し、生成された画面をディスプレイ装置に出力することができる。
【0034】
GPUは、コンピュータグラフィックスのための計算を遂行するだけでなく、アプリケーションプログラムの計算に使用することができる。プログラム可能な層と高精度演算をグラフィックパイプラインに連結してデータにストリームプロセッシングを遂行することができる。GPUは、並列に一度に一つのカーネルを流れの中の多くのレコードに実行させる。
【0035】
GPUは、複数のコアを含むことができる。複数のコアは、同種のコアであってもよく、異種のコアであってもよい。GPUの場合は、画面にイメージを表示させる役割が最も優先的である。しかし、ハードウェアが発展し、以前と比較して相対的に安価に集積できるコア数が増えることによって、イメージを表示させるレンダリングを遂行するコア以外に残るコアで浮動小数点演算や科学計算など汎用でも使用することができる。
【0036】
各CPUは、システムメモリを含むチップセットであってもよく、GPUは、ビデオゲームなどのようなグラフィックデータの処理のための特殊目的のプロセッサーであってもよい。
【0037】
一般的にGPUは、主にCPUを通じて処理しなければならない作業のコードとデータをメモリインターフェースを通じて委任を受け、これをGPUローカルメモリにコピーした後、GPUはこれを処理してCPUのメインメモリに結果を再びコピーする構造である。このためにCPUおよびGPUを含む集積システム(System on chip、以下、「SoC」と通称する)でCPUはバスインターフェースを通じてGPUを制御する。
【0038】
また、ハイパーバイザー(hypervisor)は、OSがハードウェアを利用できる仮想環境を提供する。例えば、ハイパーバイザーは、OSがGPUを利用して画面を生成する仮想環境を提供する。言い換えると、OSはハイパーバイザーを通じてGPUを共有および使用することができる。
【0039】
また、本明細書で、スタンドアローン(Standalone)OSはライブラリー、外部モジュールまたは他のOSを使用してブーティングしない独立型OSを意味する。したがって、ハイパーバイザーなしに単独でブーティングするOSをスタンドアローンOSという。そして、ゲストOSは、ホストOSの上に搭載された仮想化ソフトウェアを利用して駆動される仮想化OSを意味する。
【0040】
本明細書で、システム全体を制御する役割、つまり、GPU構成および初期化はホストOSが遂行し、スタンドアローンOSまたはハイパーバイザーがホストOSになることができる。
【0041】
一実施例によれば、GPU構成および初期化は、一つのホストOSのみにより制御され得る。
【0042】
他の実施例によれば、GPU構成および初期化は、全てのOSにより制御され得る。この場合、電源がオンされると、OSのうちの一つがメインOSになる。例えば、スタンドアローンOSがメインOSになる。この時、メインOSは全体システムの再スタートの事例でのみGPU構成および初期化の役割を果たす。しかし、多くのホストOSがGPU構成および初期化をする場合、GPU制御の問題の複雑性が加重され得る。
【0043】
したがって、GPU構成および初期化の主体を一つのホストOSに制限することによって、システムオンチップ(system-on-chip)100の効率的な運営を図ることができる。
【0044】
GPU構成および初期化は、多数の基本セッティング(Register setting)をする作業、必要なファームウエア(Firmware、FW)をアップロードする作業、アップロードされたファームウエアを動作させてGPUがCPUなどで要求した作業を遂行することができる状態に作る作業などを含むことができる。ここで、基本セッティングは、クロック(clock)、制御ビットセッティング(control bit setting)などを含む。
【0045】
本発明の実施例では、一つのシステムオンチップ(SoC)でハイパーバイザー有無に関係なしにマルチマスター(Multi-master)を支援するGPUを多数のOSまたは多数のCPU間に共有する方案について説明する。
【0046】
図面を参照して本発明の実施例によるマルチマスターを支援するグラフィック処理装置を共有するシステムオンチップ(SoC)およびGPU動作方法について説明する。
【0047】
この時、本発明の実施例の構成は、本発明と関連のある構成のみを概略的に示したものであって、例えば電源装置などのような一般的な構成は省略したが、これらが本発明の実施例に含まれないのではない。
【0048】
図1は本発明の一実施例によるシステムオンチップ(SoC)の構成を示すブロック図である。
【0049】
図1を参照すれば、システムオンチップ(SoC)100は、一つのGPU110および二つのCPU(CPU_1,CPU_2)120,130を含む。GPU110とCPU120,130は、オンチップ(On-chip)バス(bus)ファブリック(fabric)140を通じて相互通信する。
【0050】
各CPU120,130は、多様な機能を遂行することができ、このうちの一つはシステムオンチップ(SoC)のシステム全体を制御する役割を果たすことができる。
【0051】
CPU120,130は、それぞれのOSを実行する。CPU_1 120はスタンドアローンOS_1 121を実行し、CPU_2 130はスタンドアローンOS_2 131を実行する。
【0052】
GPU110はマルチマスターを支援する。したがって、GPU110は同時に多数のOS121、131から作業(Job)を受信して処理することができる。
【0053】
この時、CPU_1 120とGPU110との間には状態モニタリング装置_1 150が連結され、CPU_2 130とGPU110との間には状態モニタリング装置_2 160が連結される。
【0054】
システムオンチップ(SoC)100の電源がオンされると、システムオンチップ(SoC)100に搭載されたOSのうちで一つのOSがホストOSとして動作する。これは事前に決められたものであり、例えば、スタンドアローンOS_1 121がホストOSとして動作することができる。
【0055】
スタンドアローンOS_1 121がGPU110の構成および初期化した後、スタンドアローンOS_1 121およびスタンドアローンOS_2 131はGPU110を自由に共有して使用することができる。
【0056】
安定したシステムで、リセット(reset)、再スタート(restart)、再ブーティング(reboot)、クラッシュ(crash)のようなCPU120,130とOS121,131の正常でない状態が発生しても、共有されたGPU110はOS121,131が要求した全ての作業要請を処理しなければならない。
【0057】
OSの実行状態情報は、ハイパーバイザーがGPU110に伝達することが一般的である。しかし、
図1の構造のように、ハイパーバイザーがない構造ではOS121,131の実行状態情報をGPU110に伝達できる方法がない。したがって、OS121,131のうちの一つで正常でない状態が発生してもこれをGPU110が知らないため、問題が発生する。
【0058】
しかし、本発明の実施例では、各CPU120,130に連結された状態モニタリング装置150,160が各OS121,131の実行状態情報をチェックしてGPU110に伝達する。したがって、CPU120、130または各CPU120,130で実行するOS121,131の正常でない状態でも、GPU110がこれを知っているため、他の正常な要請だけでなく、正常でない要請も良好に処理することができる。
【0059】
もし、ホストOSとして動作するスタンドアローンOS_1 121と、スタンドアローンOS_1 121が搭載されたCPU_1 120が正常でない動作をする場合、スタンドアローンOS_1 121の再ブーティングの間にGPU構成および初期化は中止される。再ブーティングされる間にホストOS121は停止されたGPU構成に接近しない。再ブーティングされる間にホストOS121は他のコアにより要請された他の実行作業の安定した動作を保障するために構成状態を確認およびチェックする。再ブーティング後に、ホストOS121はGPU構成を制御し、GPU110に作業を提出することができる。
【0060】
もし、ホストOSとして動作するスタンドアローンOS_1 121と、スタンドアローンOS_1 121が搭載されたCPU_1 120が正常でない動作をする場合、スタンドアローンOS_1 121の再ブーティングの間にGPU構成および初期化は中止される。再ブーティングされる間にホストOS121は停止されたGPU構成に接近しない。再ブーティングされる間にホストOS121は他のコアにより要請された他の実行作業の安定した動作を保障するために構成状態を確認およびチェックする。再ブーティング後に、ホストOS121はGPU構成を制御し、GPU110に作業を提出することができる。
【0061】
反面、ホストOSでないスタンドアローンOS_2 131とスタンドアローンOS_2 131が搭載されたCPU_2 130が正常でない動作をする場合、GPU構成はホストOS121により制御され得る。ホストOS121でない、正常でないOS131の再ブーティング後に、ホストOS121でないスタンドアローンOS_2 131から作業提出は再び始まる。
【0062】
図2は
図1のシステムオンチップ(SoC)100の動作を説明する。
【0063】
図2を参照すれば、システムオンチップ(SoC)100の電源がオン(S101)されると、CPU_1 120はスタンドアローンOS_1 121を実行(S103)し、CPU_2 130はスタンドアローンOS_2 131を実行する(S105)。
【0064】
CPU_1 120のスタンドアローンOS_1 121はGPU110と連動してGPU構成および初期化を行う(S107)。
【0065】
CPU_1 120のスタンドアローンOS_1 121は、状態モニタリング装置_1 150の要請によりOS実行状態情報を状態モニタリング装置_1 150に提供する(S109)。この時、S109段階は、CPU_1 120のスタンドアローンOS_1 121と状態モニタリング装置_1 150間の設定された周期ごとに行われるか、または特定イベント(例:正常でない動作)の発生時に行われ得る。
【0066】
状態モニタリング装置_1 150は、S109段階を通じて収集したスタンドアローンOS_1 121の実行状態情報をGPU110に伝達する(S111)。
【0067】
また、CPU_2 130のスタンドアローンOS_2 131は、状態モニタリング装置_2 160の要請によりOS実行状態情報を状態モニタリング装置_2 160に提供する(S113)。この時、S113段階は、CPU_2 130のスタンドアローンOS_2 131と状態モニタリング装置_2 160間の設定された周期ごとに行われるか、または特定イベント(例:正常でない動作)の発生時に行われ得る。
【0068】
状態モニタリング装置_2 160は、S113段階を通じて収集したスタンドアローンOS_2 131の実行状態情報をGPU110に伝達する(S115)。
【0069】
図3は本発明の他の実施例によるシステムオンチップ(SoC)の構成を示すブロック図であって、
図1とは異なる構造を示す。この時、
図1と同一の構成の説明は省略する。
【0070】
図3を参照すれば、システムオンチップ(SoC)200は、一つのGPU210および二つのCPU220、230を含む。GPU210とCPU220,230は、オンチップ(On-chip)バス(bus)ファブリック(fabric)240を通じて相互通信する。
【0071】
この時、CPU_1 220は、複数のゲストOS221,222とこれら221,222を実行するハイパーバイザー223を含む。CPU_1 220は、ゲストOS_1 221およびゲストOS_2 222を実行する。
【0072】
CPU_2 230は、スタンドアローンOS231を含み、CPU_2 230は、状態モニタリング装置250と連結される。つまり、状態モニタリング装置250は、CPU_2 230とGPU210との間にのみ連結される。
【0073】
この場合、ゲストOS221,222の実行状態情報はハイパーバイザー223を通じてGPU210に伝達され、スタンドアローンOS231の実行状態情報は状態モニタリング装置250を通じてGPU210に伝達される。
【0074】
電源がオンされると、OS221,222,231のうちの一つがホストOSになる。この時、CPU_2 230のスタンドアローンOS231がホストOSであり得る。したがって、スタンドアローンOS231のみがGPU210を構成して初期化することができる。スタンドアローンOS231がGPU210を構成して初期化した後、全てのOS、つまり、ゲストOS_1 221、ゲストOS_2 222、スタンドアローンOS231はGPU210を自由に共有することができる。
【0075】
リセット、再スタート、再ブーティング、クラッシュのようなCPU220、230およびOS221,222,231の正常でない状態でも、共有されたGPU210は複数のOS221,222,231による全ての作業要請を処理可能でなければならない。
【0076】
ハイパーバイザー223があるCPU_1 220では状態モニタリング装置が不要である。ハイパーバイザー223がCPU_1 220で実行されるゲストOS221,222の実行状態情報をGPU210に伝達する。
【0077】
反面、状態モニタリング装置250がCPU_2 230で実行されるスタンドアローンOS231の実行状態情報を確認してGPU210に伝達する。
【0078】
したがって、OS221,222,231のうちの一つが正常でない動作をしても、GPU210がこれを知ることができるため、GPU210は一般の要請だけでなく、正常でない要請も処理することができる。
【0079】
もし、正常でないCPUとそのCPUで実行されるOSがホストOS、つまり、スタンドアローンOS231である場合、GPU構成は再ブーティングされる間に停止する。再ブーティングされる間にホストOS231は停止されたGPU構成に接近しない。再ブーティングされる間にホストOS231は他のコアにより要請された他の実行作業の安定した動作を保障するために構成状態を確認およびチェックする。
【0080】
再ブーティング後に、ホストOS231はGPU構成を制御し、GPU210に作業を提出することができる。正常でないCPUおよびそのCPUで実行されるOSがホストOSでない場合、GPU構成はホストOS231により制御され得る。ホストOSでない、正常でないOSの再ブーティング後に、ホストOSでないOSから作業提出は再び始まる。
【0081】
図4は
図3のシステムオンチップ(SoC)の動作を説明する。
【0082】
図4を参照すれば、システムオンチップ(SoC)200の電源がオン(S201)されると、CPU_2 230はスタンドアローンOS231を実行(S203)する。この時、スタンドアローンOS231がホストOSとして動作する。したがって、CPU_2 230のスタンドアローンOS231は、GPU210と連動してGPU構成および初期化を遂行する(S205)。
【0083】
CPU_2 230のスタンドアローンOS231は、状態モニタリング装置250の要請によりOS実行状態情報を状態モニタリング装置250に提供する(S207)。この時、S207段階は、CPU_2 230のスタンドアローンOS231と状態モニタリング装置250間の設定された周期ごとに行われるか、または特定イベント(例:正常でない動作)の発生時に行われ得る。
【0084】
状態モニタリング装置250は、S207段階を通じて収集したスタンドアローンOS231の実行状態情報をGPU210に伝達する(S209)。
【0085】
また、CPU_1 220は、ゲストOS_1 221およびゲストOS_2 222を実行(S211)する。CPU_1 220のハイパーバイザー223は、S209段階で実行されたゲストOS221,222の実行状態情報をチェック(S213)する。この時、S213段階は、設定された周期ごとに行われるか、または特定イベント(例:正常でない動作)の発生時に行われ得る。
【0086】
CPU_1 220のハイパーバイザー223は、S213段階を通じて収集したゲストOS221、222の実行状態情報をGPU210に伝達する(S215)。
【0087】
図5は本発明のまた他の実施例によるシステムオンチップ(SoC)構造を示し、
図1および
図3の実施例が併合された実施例を示す。この時、
図1、
図3と同一の構成の説明は省略する。
【0088】
図5を参照すれば、システムオンチップ(SoC)300は、一つのGPU310および二つのCPU320、330を含む。GPU310とCPU320,330は、オンチップ(On-chip)バス(bus)ファブリック(fabric)340を通じて相互通信する。
【0089】
この時、CPU_1 320は、ゲストOS_1 321、ゲストOS_2 322、ハイパーバイザー323およびスタンドアローンOS_1 324を含む。CPU_2 330は、スタンドアローンOS_2 331を含む。
【0090】
CPU_1 320は、ハイパーバイザー323基盤で複数のゲストOS321,322を実行する。CPU_1 320は、スタンドアローンOS_1 324を独立的に実行する。この時、状態モニタリング装置_1 350は、CPU_1 320とGPU310との間に連結される。この場合、ゲストOS321,322の実行状態情報はハイパーバイザー323を通じてGPU310に伝達される。スタンドアローンOS_1の実行状態情報は状態モニタリング装置_1 350を通じてGPU310に伝達される。
【0091】
CPU_2 330はスタンドアローンOS_2 331を実行し、CPU_2 330には状態モニタリング装置_2 360が連結されている。スタンドアローンOS_2 331の実行状態情報は状態モニタリング装置_2 360を通じてGPU310に伝達される。
【0092】
この時、システムオンチップ(SoC)は、スタンドアローンOSが二つ存在する。一つの実施例によれば、一つのスタンドアローンOS(324または331)のみがGPU構成および初期化をするように制限することができる。他の実施例によるスタンドアローンOS(324または331)が全てGPU構成および初期化をするように設定することができる。この場合、スタンドアローンOS(324または331)のうちの一つはメインOSに設定され、メインOSは全体システムの再スタートの事例でのみGPU構成および初期化の役割を果たすことができる。
【0093】
GPU構成および初期化以降、システムオンチップ(SoC)内の全てのOSはGPU310を自由に共有して使用する。安定したシステムの場合、再設定、再スタート、再ブーティング、クラッシュのような正常でないCPUおよびOS状態では、共有GPUが多くのOSの全ての作業要請を処理することができる。
【0094】
OS321、322、324、331のうちの一つが正常でない動作をしても、GPU310は状態モニタリングを通じてこれを知ることができるため、一般の要請だけでなく、正常でない要請も処理することができる。
【0095】
図6は
図5のシステムオンチップ(SoC)の動作を説明する。
【0096】
図6を参照すれば、システムオンチップ(SoC)300の電源がオン(S301)されると、CPU_2 330はスタンドアローンOS_2 331を実行(S303)する。
【0097】
この時、スタンドアローンOS_2 331がホストOSとして動作する。したがって、CPU_2 330のスタンドアローンOS_2 331は、GPU310と連動してGPU構成および初期化を遂行する(S305)。
【0098】
CPU_2 330のスタンドアローンOS_2 331は、状態モニタリング装置_2 360の要請によりOS実行状態情報を状態モニタリング装置_2 360に提供する(S307)。
【0099】
状態モニタリング装置_2 360は、S307段階を通じて収集したスタンドアローンOS_2 331の実行状態情報をGPU310に伝達する(S309)。
【0100】
また、CPU_1 320は、スタンドアローンOS_1 324、ゲストOS_1 321、ゲストOS_2 322を実行(S311)する。
【0101】
状態モニタリング装置_1 350は、CPU_1 320と連動してスタンドアローンOS_1 324の実行状態をチェックする(S313)。そしてS313段階で収集した実行状態情報をGPU310に伝達する(S315)。
【0102】
CPU_1 320のハイパーバイザー323は、S311段階で実行されたゲストOS321、322の実行状態情報をチェックする(S317)。CPU_1 320のハイパーバイザー323は、S317段階を通じて収集したゲストOS321,322の実行状態情報をGPU310に伝達する(S319)。
【0103】
この時、S307段階、S313段階、S317段階は、設定された周期ごとに行われるか、または特定イベント(例:正常でない動作)の発生時に行われ得る。
【0104】
図7は本発明の実施例によるGPUの動作を示すフローチャートであって、
図1~
図6のような実施例によるGPUの動作を示す。
【0105】
図7を参照すれば、GPU(
図1の110、
図3の210、
図5の310)が少なくとも一つの状態モニタリング装置(
図1の150,160、
図3の250、
図5の350、360)またはハイパーバイザー(
図3の223、
図5の323)からOSの実行状態情報をそれぞれ収集する(S401)。
【0106】
GPU110,210,310は、収集した実行状態情報に基づいて正常でない状態であるOSがあるか否か判断する(S403)。
【0107】
正常でない状態であるOSがあれば、正常でない状態であるOSの既作業を正常に終了処理する(S405)。正常でない状態は、リセット(reset)、再スタート(restart)、再ブーティング(reboot)、クラッシュ(crash)のうちの一つであり得る。
【0108】
GPU110,210,310は、正常でない状態であるOSがホストOSであるか否か判断する(S407)。正常でない状態であるOSがホストOSに判断されると、GPU110,210,310はGPU構成を中止する(S409)。
【0109】
GPU110,210,310は、ホストOSの再ブーティングが完了するか否か判断(S411)した後、完了すると、GPU構成および初期化を再スタートする(S413)。
【0110】
一方、S407段階で正常でない状態であるOSがホストOSでないと判断されると、GPU110,210,310は正常でない状態であるOSの再ブーティングが完了するか否かを判断する(S415)。
【0111】
GPU110,210,310は、正常でない状態であるOSが再ブーティングされると、再ブーティングされたOSから作業を再び受信する(S417)。
【0112】
このように、GPU110,210,310が多くのOSで要請された作業を遂行する。もし、任意のOSが問題になってそれ以上当該作業を遂行しなくてもよいが、そのOSの正常でない状態をGPU110,210,310が知ることができなければ、そのOSの作業を正常終了することができない。したがって、GPUリソースが浪費またはHalt(Hanging)され得る。
【0113】
しかし、本発明の実施例によれば、GPU110,210,310は、状態モニタリング装置150,160,250,350,360またはハイパーバイザー223,323を通じてOSの状態情報を収集するため、正常でない状態であるOSの動作を制御することができる。
【0114】
一般的に正常な状態でGPU110,210,310は、多数個のマスター(OS)で実行されるアプリケーションプログラムが要請する作業を遂行する。しかし、一つのOSがリブート(reboot)されると、当該OSで遂行を要請した作業はGPU110、210、310上で現在遂行状態で残っている。しかし、GPU110,210,310がこれを知ることができるため、当該OSで要請して遂行していた作業をそれ以上遂行せずに正常に終了させることによって、他のOSで要請された作業の遂行に問題になるか、またはGPUリソースを不必要に使用しないようにする。
【0115】
以上で説明した本発明の実施例は、装置および方法のみを通じて実現されるのではなく、本発明の実施例の構成に対応する機能を実現するプログラムまたはそのプログラムが記録された記録媒体を通じて具現されることもできる。
【0116】
以上で本発明の実施例について詳細に説明したが、本発明の権利範囲はこれに限定されず、特許請求の範囲で定義している本発明の基本概念を利用した当業者の多様な変形および改良形態も本発明の権利範囲に属する。