JP7266640B2 - アプリケーション移行のためのシステム及び方法 - Google Patents

アプリケーション移行のためのシステム及び方法 Download PDF

Info

Publication number
JP7266640B2
JP7266640B2 JP2021110003A JP2021110003A JP7266640B2 JP 7266640 B2 JP7266640 B2 JP 7266640B2 JP 2021110003 A JP2021110003 A JP 2021110003A JP 2021110003 A JP2021110003 A JP 2021110003A JP 7266640 B2 JP7266640 B2 JP 7266640B2
Authority
JP
Japan
Prior art keywords
processor
application
dockable device
dockable
migration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021110003A
Other languages
English (en)
Other versions
JP2021166079A (ja
Inventor
ローレンス キャンベル ジョナサン
シェン ユピン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021166079A publication Critical patent/JP2021166079A/ja
Application granted granted Critical
Publication of JP7266640B2 publication Critical patent/JP7266640B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/1632External expansion units, e.g. docking stations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Description

(関連出願の相互参照)
本願は、2015年12月2日に出願された米国特許出願第14/956,511号の利益を主張するものであり、この内容は、本明細書中に完全に記載されているように参照により援用される。
開示された実施形態は、概して、グラフィックスシステム及び方法に関し、特に、着脱可能(detachable)なグラフィックスシステム及び方法に関する。
着脱可能又は切替可能(switchable)なグラフィックスは、高性能な個別のグラフィックス処理装置(graphics processing unit:GPU)のグラフィカル処理能力と、統合されたGPUの電力効率との両方を利用する技術である。一般に、着脱可能なグラフィックスの技術では、3Dアプリケーションに必要な場合にのみ個別のGPUを使用し、残りの時間には統合されたGPUの機能が使用される。
しかしながら、アプリケーションの実行中に個別のGPUをシステムに追加するには、新たに使用可能な個別のGPUを利用するために、アプリケーションを再起動する必要がある。同様に、アプリケーションが個別のGPU上で実行されている間に個別のGPUをシステムから取り外すには、個別のGPUが取り外し可能になる前にアプリケーションを閉じる必要がある。さらに、現在のシステムでは、GPUを取り外すための明示的なユーザ対話が必要であり、システムに追加された新たなGPUは、3Dアプリケーションが再開されるまで使用されないことになる(つまり、ユーザの知識と、アプリケーションの再起動と、が必要になる)。
ドッキング可能なデバイスとドッキングステーションとの間でアプリケーションの移行をシームレスに行う方法及び装置について記載されている。ドッキング可能なデバイスはプロセッサを含み、ドッキングステーションは高性能なプロセッサを含む。この方法は、少なくとも1つのアプリケーションが動作している間に、ドッキング可能なデバイスのドッキング状態を判別することを含む。ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行は、ドッキング可能なデバイスがドッキング状態に移行しているときに開始される。ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行は、ドッキング可能なデバイスがドッキング解除状態に移行しているときに開始される。アプリケーションは、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行中、又は、ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行中に実行され続ける。
添付の図面と併せて例として与えられる以下の説明から、より詳細な理解が得られるであろう。
1つ以上の開示された実施形態を実装することができる例示的なデバイスのブロック図である。 特定の実施形態による、ドッキング可能なデバイス及びドッキングステーションの例示的なブロック図である。 特定の実施形態による、アプリケーションの移行の例示的なハイレベルフローチャートである。
着脱可能なグラフィックスシステムは、多数の方法で実装することができる。例えば、個別のグラフィックス処理ユニット(discrete graphics processing unit:dGPU)を含むドッキングステーションとドッキングすることができるドッキング可能なデバイス(例えば、タブレット、ラップトップ、ノートブック及び他の同様なデバイス等)が利用可能であり、又は、利用可能になる。概して、ドッキング可能なデバイスがドッキングされると、アプリケーションは、着脱可能なグラフィックスプロファイル(例えば、AMDのPowerXpress(PX)プロファイル等)で指定されている場合に、dGPUで実行することができる。PXプロファイルについて言及しているが、他の着脱可能なグラフィックスプロファイルソリューション又は実装も、同様に適用可能である。dGPUで実行されているアプリケーションは、ドッキング可能なデバイスがドッキングステーションからドッキング解除されている場合に、統合されたGPU又は高速処理ユニット(accelerated processing unit:APU)に移行される。アプリケーションは、ドッキング可能なデバイスがドッキングステーションと再度ドッキングすると、dGPUに戻される。移行処理が完了する前のドッキング解除を防ぐために、メカニカルロックが使用される。カーネルモードドライバ(kernel mode driver:KMD)は、dGPUにおいてDirectXデバイスが生成されていない場合に、ロックの解除を可能にする。本明細書ではDirectXについて言及しているが、現実的な3次元(three-dimensional:3D)グラフィックスと、没入感のある音楽及び音響効果とを提供するプログラムを可能にする、ディスプレイやオーディオカードの性能にアクセス可能な他のアプリケーションプログラミングインタフェース(Application Programming Interface:API)も、同様に適用可能である。
PXマルチGPUソリューションでは、3Dアプリケーションは、節電するために統合されたGPU、又は、追加のパフォーマンスを実現する高性能なGPUの何れかで動作する。この判断は、アプリケーションのロード時に行われるため、アプリケーションがロードされると、当該アプリケーションが常に同じGPUで動作する。アプリケーションの移行により、アプリケーションの実行中に3Dアプリケーションを(アプリケーションを再ロードすることなく)GPU間で移行することができる。これにより、現在実行中の3Dアプリケーション及びユーザエクスペリエンスに影響を与えることなく、個別/高性能のGPUをシステムに追加したり、システムから取り外したりすることができるシステムフォームファクタが可能になる。ドッキング状態とドッキング解除状態との間のシームレスな遷移は、他のGPU上の3Dアプリケーションの状態の再生成に必要な全てのデータの維持と、必要なデータの当該他のGPUへの転送と、によって実現される。GPUを取り外すには、全ての状態情報をGPU上で破棄する必要があり、これにより、GPUを取り外してもよい(アプリケーションが以前のGPUから新たなGPUに完全に移行される)。
図1は、1つ以上の開示された実施形態を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドコンピュータ、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含んでもよい。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションとして、入力ドライバ112及び出力ドライバ114を含んでもよい。デバイス100は、図1に示されていない追加のコンポーネントを含んでもよいことが理解されるであろう。
プロセッサ102は、中央処理装置(central processing unit:CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含んでもよく、各プロセッサコアは、CPUであってもよいしGPUであってもよい。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、ランダムアクセスメモリ(random access memory:RAM)、ダイナミックRAM又はキャッシュ等の揮発性又は不揮発性メモリを含んでもよい。
ストレージ106は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク又はフラッシュドライブ等の固定又は取り外し可能なストレージを含んでもよい。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のためのワイヤレスローカルエリアネットワークカード)を含んでもよい。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のためのワイヤレスローカルエリアネットワークカード)を含んでもよい。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114はオプションのコンポーネントであって、入力ドライバ112及び出力ドライバ114が存在しない場合には、デバイス100が同じように動作することに留意されたい。
図2は、特定の実施形態による、ドッキング可能なデバイス200及びドッキングステーション250の例示的なブロック図である。ドッキング可能なデバイス200は、ユーザモードドライバ(user mode driver:UMD)205と、カーネルモードドライバ(kernel mode driver:KMD)210と、メモリ212と、統合されたGPU(integrated GPU:iGPU)215と、オペレーティングシステム(operating system:O/S)225を含むCPU220と、を含む。iGPU215及びCPU220として図示されているが、高速処理装置(accelerated processing unit:APU)が使用されてもよい。アプリケーション235は、ユーザによって起動されると、ドッキング可能なデバイス200上で動作する。ドッキングステーション250は、dGPU265を含む。
概して、着脱可能なグラフィックスプロファイル内の設定及びドッキング可能なデバイス200が最初にドッキングステーション250にドッキングされたときのドライバ構成に応じて、O/S225は、iGPU215及びdGPU265を認識する。アプリケーション移行構成では、dGPU265に関してO/S225に見える2つの状態が存在する。ドッキング可能なデバイス200がドッキングステーション250にドッキングされると、dGPU265は、「物理的」状態でO/S225に見える。UMD205及びKMD210は、必要に応じてdGPU265に仕事を提出する。ドッキング可能なデバイス200がドッキングステーション250とドッキング解除されると、O/S225は、図2において仮想dGPU265’と示されている「仮想」dGPU265を見る。UMD205及びKMD210は、仮想dGPU265’に提出された仕事がないことを保証する。ドッキング可能なデバイス200及びドッキングステーション250は、図2に示されていない追加のコンポーネントを含み得ることが理解されるであろう。
初期構成の後、O/S225は、実行中、2つのGPU(すなわち、iGPU215と、ドッキング可能なデバイス200がドッキングされたときのdGPU265及びドッキング可能なデバイス200がドッキング解除されたときの仮想dGPU265’の何れかと)を常に「見る」ことになる。つまり、ドッキング解除状態では、dGPU265は、O/S225に関して仮想モード(すなわち、論理エンティティであって、物理エンティティではない)にある。O/S225は、常に両方のGPUを見ているので、アプリケーションの移行は、iGPU215とdGPU265との間でシームレスである。仮想dGPU265’は、ドライバ及び他のそのような関連する仕様を含む能力に関してdGPU265と同様に生成され、処理される。
図3は、本発明の実施形態による、アプリケーションの移行の例示的なハイレベルフローチャートである。ここでの説明は、図2も参照する。最初のイベントとして、ドッキング可能なデバイス200は、最初のドッキング時に、ドッキング可能なデバイス200がドッキングデバイス250とシームレスにドッキング/ドッキング解除するのを可能にするアプリケーション移行構成で構成される。O/S225はdGPU265を認識し、着脱可能なグラフィックスプロファイルは、以下に説明するように、ドッキングイベントの検出時にドッキング可能なデバイス200からドッキングステーション250へのアプリケーションの移行が完了し、ドッキング解除イベントの検出時にドッキングステーション250からドッキング可能なデバイス200へのアプリケーションの移行が完了するように設定される。着脱可能なグラフィックスプロファイルは、最初にベンダーによってデフォルトのGPUに設定され、ユーザは、例えば、アプリケーションの移行を実行するためにかかる設定を無効にすることができることに留意されたい。
アプリケーション235の起動後(300)、KMD210は、ドッキング可能なデバイス200がドッキングステーション250にドッキングされているどうかを判別する(305)。ドッキング可能なデバイスがドッキングステーションにドッキングされている場合(307)、アプリケーション235はdGPU250上で実行する(309)。KMD210はドッキング状態を継続的に確認し、アプリケーション235は、KMD210がドッキング可能なデバイス200をドッキングステーション250からドッキング解除しようとする試みを検出するまで(313)、dGPU250上での実行を継続する(311)。KMD210は、ドッキング可能なデバイス200のドッキング解除要求を検出すると、ドッキング解除イベントについてUMD205に伝達又は通知し(315)、移行が完了するまでドッキング解除要求をロックする。UMD205は、反応し、GPU間の移行をトリガする。具体的には、UMD205は、(本明細書で後述するように)アプリケーション235と、全ての他の必要な情報及びデータと、をドッキングステーション250内のdGPU265からドッキング可能なデバイス200内のiGPU215に移行する。この移行を行う際、アプリケーション235の実行が中断されず、結果として移行がシームレスに行われる。KMD210は、全ての移行が完了したことを検出すると、ドッキング可能なデバイス200を物理的にドッキング解除できるように、ドッキング解除要求をアンロックする。次に、アプリケーションは、iGPU215上で実行しており(316)、UMD205及びKMD210は、互いに通信して、ドッキング解除状態でdGPU265に送信されるものが何もないが、iGPU215上で実行されるのを確実にする。また、UMD205及びKMD210は、いくつかの動作を記録することができ、これらの動作は、ドッキング可能なデバイス200がドッキングステーション250にドッキングされたときに、ドッキング可能なデバイス200に伝搬され得る。
アプリケーションの移行が完了した後、ドッキング可能なデバイス200がドッキングされていない場合(308)、KMD210は、ドッキング状態を継続的に確認し、アプリケーション235は、ドッキング可能なデバイス200がドッキングステーション250にドッキングされたことをKMD210が判別するまで(319)、iGPU215上での実行を継続する(317)。ドッキング可能なデバイス200がドッキングされた場合、KMD210は、ドッキングイベントについてUMD205に伝達又は通知する(321)。UMD205は、反応し、GPU間の移行をトリガする。具体的には、UMD205は、アプリケーション235と、全ての他の必要な情報及びデータと、をドッキング可能なデバイス200内のiGPU215からドッキングステーション250内のdGPU265に移行又はプッシュする。概して、アプリケーションの移行には、少なくとも、グラフィックスアダプタを開くことと、DXデバイスをdGPU265に生成することと、適切な状態及びデータ情報をdGPUパイプラインに提供することと、コンテキスト及び環境をdGPU265にコピーすることと、が必要であり、これにより、アプリケーション235は、あらゆることが一様にわかる。つまり、アプリケーションの移行は、アプリケーション235に対して透過的である。上述したように、アプリケーション235の実行が中断されず、結果として移行がシームレスに行われる。
本明細書では、移行アプリケーションを実装するための例示的な実施形態を説明する。本明細書で述べるように、着脱可能なグラフィックスプロファイルが、アプリケーションが着脱可能なグラフィックス構成でdGPU上で動作すべきであることを示す場合には、UMDは、いくつかの変更を必要とする。例えば、ドッキング又はドッキング解除イベントが要求されたという通知をKMDから待つ追加のスレッドが生成される。つまり、アプリケーションの移行が有効になっている場合、UMDは、ドッキング又はドッキング解除イベントについてのKMDの通知を確認するために、余分なスレッドを生成する。余分なスレッドによって通知が検出されると、余分なスレッドは、残りのUMD(アプリケーションの移行が有効であるか否かにかかわらず存在する部分)に対して移行を行うように通知する。全てのリソース、シェーダ、ビュー等は、ドッキング又はドッキング解除されたかどうかにかかわらずiGPU(又はAPU)において生成され、ドッキングされた場合にはdGPUにおいて生成される。ドッキング時にdGPUが利用可能である場合、dGPU上のリソース、シェーダ、ビュー等を生成するのに必要な全ての情報は、例えばメモリ212に格納され、記憶される。この情報は、全てのリソース、シェーダ、ビュー等のリストとして保持することができる。アプリケーションからの全てのデータロードは、iGPU(又はAPU)と、dGPU(現在ドッキングされている場合)と、に送信される。これは、ドッキング解除時に転送する必要のあるデータの量を最小限に抑えるために行われる。上記の情報は、メモリ212を使用してUMDに記憶することができる。
時間及びイベントシーケンスのために図2及び図3を参照すると、ドッキング解除が要求されたこと(例えば、図3の(313)を参照)を追加のスレッドが検出すると、KMD(例えば、KMD210)は、ドッキング解除イベントについての通知をUMD(例えば、UMD205)に発行する。具体的には、KMDは、iGPU(又はAPU)(例えば、iGPU215)に移行するようにUMDに通知するコマンドを発行する。UMDは、ドッキング解除イベントを検出すると、例えば、Microsoft(登録商標)ランタイムプログラムからUMDへのより多くのデバイスドライバインタフェース(device driver interface:DDI)コールを防止するためにクリティカルセクションをロックし、iGPUに移行し、次いで、クリティカルセクションを解除する。
dGPU(例えば、dGPU265)からiGPU(又はAPU)に移行するために、リソース、シェーダ、ビュー等のリストがそれに従ってレビューされ、識別される(例えば、図3の(315)を参照)。UMDは、アプリケーションがdGPU上で実行しているときに、何れのGPUにリソースの最新のコンテンツがあるのかを追跡する。iGPUへの移行時に(例えば、図3の(315~316)を参照)、最新のコンテンツがdGPU上にのみ存在するリソースの場合、UMDは、それらのコンテンツをdGPUからiGPU(又はAPU)に転送する。リソース、シェーダ、ビュー等のdGPUコピーは、dGPUのスケジューリングコンテキストとともに破棄される。KMDが、dGPU上にリソース又はスケジューリングコンテキストが存在しないことを確認すると、ドッキング解除を許可する。iGPU(又はAPU)への移行が完了すると、UMD状態は、アプリケーションがドッキング解除状態で開始された場合と同じ状態になる。本明細書で説明するように、KMDは、UMDがdGPUからアダプタ情報等をクエリすることができるように、ドッキング解除された場合であっても仮想又は疑似のdGPUを維持する。
ドッキングが要求されたことを追加のスレッドが検出すると(例えば、図3の(319)を参照)、KMDは、dGPUへの移行をUMDに通知するコマンドを発行する。dGPUに移行するために、スケジューリングコンテキストがdGPU上に生成される。リソース、シェーダ、ビュー等のレビューと、識別とが行われる。dGPUにおいて、リソースが生成され、シェーダがコンパイルされ、ビュー等が生成される。リソースのコンテンツは、dGPUに移行しているときには転送されない。UMDは、リソースを、次に使用するときに必要に応じてdGPUに転送する。
本明細書には、構成決定のための方法が記載されている(例えば、図3を参照)。概して、アプリケーションの起動及びアダプタのオープン要求時に、UMDは、システム又はプラットフォームが着脱可能なグラフィックス構成をサポートしているかどうか(KMDがシステム構成情報を認識しているかどうか)についてKMDにクエリを送信する。着脱可能なグラフィックス構成がサポートされている場合、アプリケーションの移行が有効になる。一実施形態では、アプリケーションの移行がサポートされている場合、キャパビリティフラグ(capability flag)を設定することができる。
別の実施形態では、アプリケーションが、アプリケーションの移行を必要とするか否かに応じて、要件フラグが設定される。要件フラグがアプリケーションの移行を要求するように設定され、キャパビリティフラグがサポート無しを示すように設定されている場合には、UMDは、キャパビリティフラグを考慮して要件フラグを上書きし、アプリケーションは、iGPU(又はAPU)上で実行する。
本明細書で述べるように、KMDは、初期状態がドッキング又はドッキング解除であるかどうかを判別するためにUMDによってクエリされ、GPUを適切に通過するように設定する。潜在的な競合状態は、初期状態についてのクエリが送信されてからdGPUにGPUデバイスを生成するまでの間にシステムがドッキング解除し得ることから、ドッキング解除を防止するために存在する。デバイス初期化コードは、dGPU上でGPUデバイスを生成し、iGPU(又はAPU)上で実行するように切り替えるときの障害をハンドリングする。
本明細書では、ドライバ性能を決定するための実装を説明する。アプリケーションの移行がサポートされると、UMDは、iGPU(又はAPU)とdGPUとの共通の機能を報告する。グラフィックスAPIの場合、アプリケーションが起動したときに発生する最初のイベントの1つは、DXランタイムプログラム又は同等のものが、GPUの機能(この場合、アプリケーションが両方のGPUで実行可能でなくてはならないので、iGPU(又はAPU)及びdGPUの機能)についてUMDにクエリすることである。したがって、共通の機能が報告又は決定される。この機能のクエリは、ソフトウェア及びハードウェアの機能に関する情報を要求する。
本明細書では、クリティカルセクションを保護する方法が記載されている。この方法では、アプリケーションがフリースレッドを必要とするか否かにかかわらず、DirectX11(DX11)フリースレッドエントリポイント(free threading entry point)が使用される。これが必要なのは、移行通知を待っているスレッドとの安全な対話を可能にするために、エントリポイントをクリティカルセクションを用いて保護する必要があるためである。つまり、アプリケーションの移行が進行中である場合又は実行される予定の場合には、クリティカルセクションの保護が実施される(例えば、図3の(313及び319)を参照)。
概して、DX11は、様々なスレッドを介してUMDをコールすることができる。上記のように、UMDは、KMDからのドッキング及びドッキング解除信号を監視するための追加のスレッドを生成する。UMDは、その信号に応じて特定の動作を実行し、結果として、UMD内部状態を変更する可能性がある。したがって、監視スレッドが、アプリケーション用に実行されているスレッドとの競合に起因して、監視スレッドが改ざんされたり破損したりしないようにする必要がある。一実施形態では、同期オブジェクトを使用することができる。クリティカルセクションオブジェクトは、単一のプロセスのスレッドのみが使用可能な同期を提供する。クリティカルセクションオブジェクトは、一度に1つのスレッドのみが所有することができ、このことは、共有リソースに対する同時アクセスから保護するのに便利である。
本明細書では、アプリケーションの移行をトリガするためのエントリポイントについて記載されている(例えば、図3の(313及び319)を参照)。移行をトリガするための新たなエントリポイントは、移行をハンドリングするためにUMDに追加され、当業者に知られているDDIハンドリングの標準フローに従う。新たなエントリポイントは、KMDからの移行通知を待機しているスレッドのみによってコールされる。つまり、KMDがUMDを検出して通知すると、新たなエントリポイントがコールされる。UMDがGPU間で移行するための通知を検出すると、UMDは、1)他のDDIコールが保留になるようにクリティカルセクションをロックし、2)移行を実行し、3)クリティカルセクションを解除する。具体的には、UMD状態がアプリケーションの移行処理中に変化するため、UMDへの全てのコールは、当該処理が完了するまで待機する必要がある。UMDは、コンテキスト及びリソースを転送して、以前のGPUのコンテキストを破棄する。以前のGPUのコンテキストが破棄されたことをKMDが認識すると(例えば、UMDからの通知を介して)、KMDは、以前のGPUを切り離すことを許可する。
DDIコールをハンドリングする性能を最適化するためにUMDがスレッド技術(例えば、プロデューサ-コンシューマモデル)を使用する場合、移行コールは、他のDDIコールのロック時間を短縮するために、コンシューマスレッドにバッチすることができる。かかる場合には、バッチされた移行動作は、移行処理を開始する際の遅延を最小限に抑えるために、移行エントリポイント機能から戻る前にコンシューマスレッドにフラッシュされる必要がある。
ここでは、アプリケーションの移行に関してフリースレッドを処理する方法について説明する。DX11では、フリースレッドは、他のスレッドが実行するのを待つ必要がない。フリースレッドは、動作する前に別のスレッドの既存の作業を停止する必要がない。つまり、複数のスレッドが同時に同じ機能をコールすることができる。このことは、アプリケーションの移行に関して問題がある。
DX11フリースレッドは、アプリケーションのメインレンダリングスレッド以外のスレッドによって生成されたDDIコールを可能にする。生成されたDDIコールがメインレンダリングスレッド(エントリポイントマルチスレッドのスレッド)とは完全に独立して動作する場合、現在のドッキング状態又はドッキング解除状態を認識せず、dGPU上でリソースを生成するかどうかもわからない。
本明細書では、上記に対処するための2つの例示的な方法を説明する。例示的な方法では、UMDは、DDIコールの生成中に、iGPU(又はAPU)上にのみオブジェクトを生成する。次いで、UMDは、オブジェクトがメインスレッドによってdGPU上に必要とされるときに、要求に応じて、dGPU上にオブジェクトを生成する。この方法では、DDIコールの生成を同期無しに実行することができるが、iGPU(又はAPU)からdGPUへの移行中にdGPU上でオブジェクトを再生成する実装に依存している。
別の方法では、同期が使用される。DDIコールの生成は、DDIクリティカルセクションを所有する。これにより、移行コマンドを含む他のDDIコールが、生成中に発生しないようになる。また、エントリポイントマルチスレッドを使用可能にすると、DDIコールの生成は、バッチされた最後の移行コマンドが完了するまで待機する必要がある。このメカニズムによって、DDIコールが他のスレッドによって同時に行われるのを抑制することができる。しかしながら、移行中(稀なイベント)を除いて、コンシューマスレッドは、DDIコールの生成中に中断することなく処理を継続することができる。
ここでは、アプリケーション移行検出スレッドについて説明する。これは、KMD信号を監視するために生成された上記のスレッドであり、UMDは、アプリケーションの移行を検出するためのスレッドを生成する。このスレッドは、ドッキング状態の初期クエリを実行し、必要に応じて初期状態に基づいて移行し、ドッキング又はドッキング解除イベントを待機するループに入り、イベントが発生したときに移行する。例示的なフローチャートは、図3に関して上述されている。
アプリケーション移行検出スレッドの例示的な論理が表1に記載されている。iGPU及びdGPUの関係の初期状態が得られる。状態によってGPUがドッキングされていることが示された場合、iGPUからdGPUへの移行が実施される。次に、システムは、ドッキング解除イベント又は終了イベントを待機する。メインスレッドは、「終了」イベントを使用して、アプリケーション移行スレッドに対して終了を通知する。コンテキスト及びデバイスの破棄の開始時に、終了イベントが通知され、次にアプリケーション移行検出スレッドが解放される。状態によってGPUがドッキング解除されていることが示された場合、dGPUからiGPUへの移行が実施され、次に、システムは、ドッキングイベント又は終了イベントを待機する。
Figure 0007266640000001
ここでは、ドッキング可能なデバイスがドッキング又はドッキング解除されているのかどうかに応じて、リソース、シェーダ、ビュー等をiGPU(又はAPU)上に生成する方法の例示的な実施形態を説明する。dGPUからiGPU(又はAPU)に移行する際の移行時間を最小限に抑えるために、全てのリソース、シェーダ、ビュー等が、ドッキング又はドッキング解除されたかどうかにかかわらず、iGPU(又はAPU)に生成される。
ここでは、静的データをどのようにハンドリングするかについて説明する。例示的な実施形態では、ドッキング可能なデバイスがドッキングされると、移行時間を最小限に抑えるために、ブロードキャストメカニズムを用いて静的データをアップロードする。具体的には、dGPUからiGPU(又はAPU)に移行する際の移行時間を最小限に抑えるために、レンダリングGPU(すなわち、アクティブなGPU)に加えて、静的データのアップロードが常にiGPU(又はAPU)に送信される。
ここでは、リソース、シェーダ、ビュー等のリストをどのように維持するかについての例示的な実施形態を説明する。UMDは、オブジェクト、リソース及び他の関連情報を追跡する。すなわち、UMDは、Creates and Destroyを追跡する。リソースは独自のリストに残り、他の全てのオブジェクトタイプを保持する別のリストが生成される。UMDは、この追跡を行い、これにより、本明細書で説明した競合状態を防ぐためにフリースレッドを正しくハンドリングできるようにする。
ここでは、dGPUからiGPU(又はAPU)への移行の例示的な実施形態を説明する。UMDがiGPU(又はAPU)への移行を実行するようにトリガされ、パススルーGPUが現在GPU0(すなわち、iGPU)ではない場合、以下の方法が実行される。DDI状態がウォークスルーされ、dGPU上の全てのリソース及びパイプライン状態オブジェクトがアンバインドされる。iGPU(又はAPU)に最新のコンテンツが無い場合、各リソースのリストがウォークスルーされ、各リソースのデータがiGPU(又はAPU)に転送される。全てのリソースは、iGPU(又はAPU)でのみ有効とマークされ、dGPUでのコピーが破棄される。
パイプライン状態オブジェクトのリストはウォークスルーされ、dGPU上のコピーは、破棄され、iGPU(又はAPU)上でのみ生成されたものとしてマークされる。UMDのレンダリングGPUは、iGPU(又はAPU)に変更されるため、その後の動作は、iGPU(又はAPU)のみに送信される。GPU1(ここではdGPU)上のUMDデバイスと、当該UMDデバイスに関連するコンテキスト及びオブジェクト(例えば、グラフィックススケジューラコンテキスト、内部メモリ割当て、同期オブジェクト等)とは破棄される。これは、アクティブなGPUがiGPU/APUに変更され、dGPU上のDDIデバイスが破棄されたことを示すために、内部UMDドライバ状態を更新する必要があるという事実を反映している。
ここでは、dGPU上のオブジェクトを再生成するために、どの情報を記憶する必要があるかについて説明する。UMDは、保存されているアイテム(すなわち、シェーダコードであるかオブジェクトであるか)を考慮して、どのようなデータを保存する必要があるのか、性質及びタイプを決定する。つまり、ドライバは、アプリケーションの移行のためのシェーダ及び他の構造を再生成するために、どれだけのデータ(例えば、メタデータ及びコード)を記憶する必要があるのかを決定することができる。例えば、シェーダオブジェクトの場合には、シェーダコードのサイズが含まれてもよい。メモリは、シェーダタイプ及びデバイスインタフェースに基づいて、シェーダコード、IOシグネチャ等を含む全ての生成データに割り当てられる。状態オブジェクト(ブレンド状態、ラスタライザ状態、サンプラ状態、深度ステンシル状態及びIaLayout状態)は、シェーダと同様にハンドリングされる。UMDがこれらのオブジェクトを生成する場合、UMDは、オブジェクトに関連する生成データも記憶する。データは、データ構造又は他の記憶構造の形態で記憶され得る。記憶されたデータは、必要なときに取得される。
ここでは、アプリケーションの移行を考慮してクエリ動作を処理する方法を説明する。概して、クエリが、依然としてビルド中又は発行ステージにあり、終了しておらず、アプリケーションの移行が行われている場合には、UMDは、クエリステータスを追跡し、完全な結果又は部分的な結果がdGPUに利用可能であるのかどうかを判別する必要がある。例えば、ブーリアン又はフラグを使用して、部分的なクエリ結果が利用可能であるかどうかを示すことができる。部分的な結果が利用可能である場合には、当該部分的な結果が記憶される。場合によっては、部分的な結果が組み合わされる。例示的な実施形態を表2及び表3に示す。後者の表はDirect3DのAPIの実装であるが、他のグラフィックスAPIに合わせて変更することもできる。
Figure 0007266640000002

Figure 0007266640000003
ここでは、リソースのオファー及び再要求(reclaim)がどのようにハンドリングされるかについて説明する。概して、アプリケーション/プログラム及び/又はグラフィックスランタイムは、メモリ状態を追跡する。低メモリ状態の場合、UMDは、いくつかのアイドル状態のAPIオブジェクトのメモリを解放することが要求される。これは、オファーと呼ばれる。次いで、UMDは、再使用のためにメモリを解放する。APIオブジェクトが依然として存在することに留意されたい。以前にオファーされたAPIオブジェクトが再度必要になると、メモリは、APIオブジェクトに再度関連付けられる。これは、再要求と呼ばれる。発生する問題は、オファーと再要求との間でアプリケーションの移行が発生した場合に何が起こるかということである。一実施形態では、UMDは、オファーと、オファーを行うGPUと、を追跡する。したがって、再要求が発生した場合、UMDは、オファーしたGPUに基づいて再要求を行うことができる。
ここでは、iGPU(又はAPU)からdGPUへの移行について説明する。GPUデバイスはdGPU上に生成される。リソース、シェーダ等のリストは、dGPU上で生成するためにウォークスルーされる。インスタンスは、iGPU(又はAPU)に保持され、iGPU(又はAPU)への潜在的な移行が可能になる。リソースのコンテンツは移行中に直ちにdGPUに伝搬されるわけではなく、dGPU上でリソースが必要になった場合に、伝搬がオンデマンドで行われることに留意されたい。レンダリングGPUは、iGPU(又はAPU)からdGPUに変更され、パイプライン状態はリバインドされる(現在のパイプライン状態をdGPUに送信する)。クエリオブジェクトのハンドリングは、上記のdGPUからiGPUへの移行と同じである。重大な障害(例えば、メモリ不足等)が発生した場合、移行動作は元に戻され、アプリケーションはAPU/iGPU上で実行されたままになる。
本明細書で説明する実施形態を限定するものではないが、アプリケーションの移行方法は、少なくとも1つのアプリケーションが実行している間に、ドッキング可能なデバイスのドッキング状態を決定することと、ドッキング可能なデバイスがドッキング状態にあるという条件において、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始することであって、ドッキング可能なデバイスがプロセッサを備え、ドッキングステーションが高性能プロセッサを備える、ことと、を含む。この方法は、ドッキング可能なデバイスがドッキング解除状態に移行しているという条件において、ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行を開始することをさらに含み、アプリケーションは、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行中、又は、ドッキングステーションからドッキング可能デバイスへのアプリケーションの移行中に実行を継続する。
一実施形態では、この方法は、転送先プロセッサ上でアプリケーション状態を再生成するために必要な全てのデータを維持することを含み、プロセッサは、ドッキング状態にかかわらず、ドッキング解除するときのデータ転送を最小限に抑えるために、当該データを有する。一実施形態では、この方法は、転送元プロセッサ上の状態情報を破棄することを含む。一実施形態では、この方法は、ドッキング可能なデバイスがドッキング解除状態にあるという条件において、ドッキング可能なデバイス上に仮想高性能プロセッサを維持することを含む。
一実施形態では、ユーザモードドライバ及びカーネルモードドライバは、仮想高性能プロセッサに作業が送信されないことを確実にする。一実施形態では、この方法は、ユーザモードドライバを含み、カーネルモードは、ドッキング可能なデバイスがドッキングステーションにドッキングされた場合に、ドッキング可能なデバイスに伝搬されるいくつかの動作を記憶することを含む。
一実施形態では、この方法は、カーネルモードドライバがドッキングイベントを検出したという条件において、アプリケーションの移行を開始するために、カーネルモードドライバからユーザモードドライバに通知を送信することを含む。一実施形態では、ユーザモードドライバは、アプリケーションの移行中にクリティカルセクションをロックする。
一実施形態では、この方法は、ドッキング解除要求を検出することと、ドッキング解除要求をロックすることと、アプリケーションの移行が完了したという条件において、ドッキング可能なデバイスが物理的にドッキング解除できるようにドッキング解除要求をアンロックすることと、を含む。
一実施形態では、この方法は、ドッキングイベントを検出することと、検出されたドッキングイベントがドッキング可能なデバイスをドッキングすることであるという条件において、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始することと、検出されたドッキングイベントがドッキング可能なデバイスをドッキング解除することであるという条件において、ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行を開始することと、を含む。
概して、本明細書で説明する実施形態に限定することなく、ドッキング可能なデバイスは、プロセッサと、少なくとも1つのアプリケーションが動作している間に、ドッキング可能なデバイスのドッキング状態を決定するように構成されたカーネルモードドライバと、を備える。カーネルモードドライバは、ドッキング可能なデバイスがドッキング状態にあるという条件において、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始するように構成されており、ドッキングステーションは、高性能プロセッサを備える。カーネルモードドライバは、ドッキング可能なデバイスがドッキング解除状態に移行しているという条件において、ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行を開始するように構成されており、アプリケーションは、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行中、又は、ドッキングステーションからドッキングな可能デバイスへのアプリケーションに移行中に実行を継続する。
一実施形態では、ドッキング可能なデバイスは、ユーザモードドライバを含み、ユーザモードドライバ及びカーネルモードドライバは、転送先プロセッサ上でアプリケーション状態を再生成するために必要な全てのデータを維持するように構成されており、プロセッサは、ドッキング状態にかかわらず、ドッキング解除するときのデータ転送を最小限に抑えるために、当該データを有する。
一実施形態では、ユーザモードドライバは、転送元プロセッサ上の状態情報を破棄するように構成されている。
一実施形態では、ドッキング可能なデバイスは、ユーザモードドライバを含み、ユーザモードドライバ及びカーネルモードドライバは、ドッキング可能なデバイスがドッキング解除状態にあるという条件において、ドッキング可能なデバイス上に仮想高性能プロセッサを維持するように構成されている。一実施形態では、ユーザモードドライバ及びカーネルモードドライバは、仮想高性能プロセッサに作業が送信されないことを確実にするように構成されている。
一実施形態では、ユーザモードドライバ及びカーネルモードドライバは、ドッキング可能なデバイスがドッキングステーションにドッキングされた場合に、ドッキング可能なデバイスに伝搬されるいくつかの動作を記憶するように構成されている。
一実施形態では、カーネルモードドライバは、カーネルモードドライバがドッキングイベントを検出したという条件において、アプリケーションの移行を開始するためにユーザモードドライバに通知を送信するように構成されている。
一実施形態では、ドッキング可能なデバイスは、アプリケーションの移行中にクリティカルセクションをロックするように構成されたユーザモードドライバを含む。
一実施形態では、カーネルモードドライバは、ドッキング解除要求を検出するように構成されており、ドッキング解除要求をロックするように構成されており、アプリケーションの移行が完了したという条件において、ドッキング可能なデバイスが物理的にドッキング解除できるようにドッキング解除要求をロック解除するように構成されている。
概して、本明細書で説明する実施形態を限定することなく、コンピュータ可読記憶媒体は、処理システムにおいて実行されると、アプリケーションを移行する方法を処理システムに実行させる命令を含む。この方法は、少なくとも1つのアプリケーションが動作している間に、ドッキング可能なデバイスのドッキング状態を決定することと、ドッキング可能なデバイスがドッキング状態にあるという条件において、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始することであって、ドッキング可能デバイスがプロセッサを備え、ドッキングステーションが高性能プロセッサを含む、ことと、ドッキング可能なデバイスがドッキング解除状態に移行しているという条件において、ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行を開始することと、を含み、アプリケーションは、ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行中、又は、ドッキングステーションからドッキング可能なデバイスへのアプリケーションの移行中に実行を継続する。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。特徴及び要素は、特定の組み合せで上記に説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で、又は、他の特徴及び要素を含む若しくは含まない様々な組み合せで使用されてもよい。
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(digital signal processor:DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)回路、任意の他のタイプの集積回路(integrated circuit:IC)、及び/又は、状態マシン等が挙げられる。かかるプロセッサは、処理されたハードウェア記述言語(hardware description language:HDL)命令(かかる命令は、コンピュータ可読媒体に記憶することができる)の結果と、ネットリストを含む他の中間データと、を使用して製造プロセスを構成することによって製造することができる。かかる処理の結果は、実施形態の態様を実装するプロセッサを製造するために半導体製造プロセスで使用されるマスクワークであってもよい。
本明細書で提供される方法又はフローチャートは、非一時的なコンピュータ可読記憶媒体に組み込まれ、汎用コンピュータ又はプロセッサによって実行されるコンピュータプログラム、ソフトウェア又はファームウェアで実装され得る。非一時的なコンピュータ可読記憶媒体の実装例としては、読み取り専用メモリ(read only memory:ROM)、ランダムアクセスメモリ(random access memory:RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内部ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk:DVD)等の光学媒体が挙げられる。

Claims (40)

  1. アプリケーションを移行する方法であって、
    少なくとも1つのアプリケーションが実行されている間に、ドッキング可能なデバイスのドッキング状態を決定することと、
    前記ドッキング可能なデバイスがドッキング状態にあることを検出したことに応じて、前記ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始することであって、前記ドッキング可能なデバイスが第1プロセッサを備え、前記ドッキングステーションが第2プロセッサを備える、ことと、
    前記ドッキング可能なデバイスがドッキング解除状態に移行していることを検出したことに応じて、前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行を開始することと、
    前記ドッキング可能なデバイスがドッキング解除状態であることを検出したことに応じて、前記ドッキング可能なデバイスにおいて仮想の第2プロセッサを維持することと、を含み、
    前記アプリケーションは、前記ドッキング可能なデバイスから前記ドッキングステーションへの前記アプリケーションの移行中、又は、前記ドッキングステーションから前記ドッキング可能なデバイスへの前記アプリケーションの移行中に実行を継続し、
    前記ドッキング可能なデバイスの少なくとも1つのドライバは、前記仮想の第2プロセッサに対して作業が送信されないようにする、
    方法。
  2. 転送先プロセッサ上でアプリケーション状態を再生成するために必要な全てのデータを維持することを含み、前記転送先プロセッサは、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかにかかわらず、ドッキング解除するときのデータ転送を最小限に抑えるために、前記データを有する、
    請求項1の方法。
  3. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスにおいて前記仮想の第2プロセッサを維持する、
    請求項1の方法。
  4. 前記第2プロセッサは、前記第1プロセッサよりも高性能なプロセッサである、
    請求項1の方法。
  5. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスに伝達されるいくつかの動作を記録する、
    請求項1の方法。
  6. ドッキングイベントを検出することと、
    前記少なくとも1つのドライバが、前記ドッキング可能なデバイスから前記ドッキングステーションへのアプリケーションの移行を開始するための通知を送信することと、を含む、
    請求項1の方法。
  7. ドッキング解除要求を検出することと、
    前記ドッキング解除要求をロックすることと、
    前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行が完了した後に、前記ドッキング可能なデバイスが物理的にドッキング解除できるように前記ドッキング解除要求をロック解除することと、を含む、
    請求項1の方法。
  8. ドッキングイベントを検出することと、
    前記ドッキングイベントが前記ドッキング可能なデバイスをドッキングすることであることを検出したことに応じて、前記ドッキング可能なデバイスから前記ドッキングステーションへのアプリケーションの移行を開始することと、
    前記ドッキングイベントが前記ドッキング可能なデバイスをドッキング解除することであることを検出したことに応じて、前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行を開始することと、を含む、
    請求項1の方法。
  9. ドッキング可能なデバイスであって、
    1プロセッサと、
    少なくとも1つのドライバと、を備え、
    前記少なくとも1つのドライバは、
    少なくとも1つのアプリケーションが実行されている間に、ドッキング可能なデバイスのドッキング状態を決定することと、
    前記ドッキング可能なデバイスがドッキング状態にあるという条件において、前記ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始することであって、前記ドッキングステーションは第2プロセッサを備える、ことと、
    前記ドッキング可能なデバイスがドッキング解除状態に移行しているという条件において、前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行を開始することと、
    前記ドッキング可能なデバイスがドッキング解除状態であるという条件において、前記ドッキング可能なデバイスにおいて維持される仮想の第2プロセッサに対して作業が送信されないようにすることと、
    を行うように構成されており、
    前記アプリケーションは、前記ドッキング可能なデバイスから前記ドッキングステーションへの前記アプリケーションの移行中、又は、前記ドッキングステーションから前記ドッキング可能なデバイスへの前記アプリケーションの移行中に実行を継続する、
    ドッキング可能なデバイス。
  10. 前記少なくとも1つのドライバは、転送先プロセッサ上でアプリケーション状態を再生成するために必要な全てのデータを維持するように構成されており、前記転送先プロセッサは、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかにかかわらず、ドッキング解除するときのデータ転送を最小限に抑えるために、前記データを有する、
    請求項9のドッキング可能なデバイス。
  11. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスがドッキング状態であるという条件において、前記ドッキング可能なデバイスに伝達されるいくつかの動作を記録するように構成されている、
    請求項9のドッキング可能なデバイス。
  12. 前記少なくとも1つのドライバは、
    ドッキング解除要求を検出することと、
    前記ドッキング解除要求をロックすることと、
    前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行が完了した後に、前記ドッキング可能なデバイスが物理的にドッキング解除できるように前記ドッキング解除要求をロック解除することと、
    を行うように構成されている、
    請求項11のドッキング可能なデバイス。
  13. アプリケーションを移行する方法であって、
    少なくとも1つのアプリケーションが実行されている間に、ドッキング可能なデバイスのドッキング状態を決定することと、
    前記ドッキング可能なデバイスがドッキング状態にあることを検出したことに応じて、前記ドッキング可能なデバイスからドッキングステーションへのアプリケーションの移行を開始することであって、前記ドッキング可能なデバイスが第1プロセッサを備え、前記ドッキングステーションが第2プロセッサを備える、ことと、
    前記ドッキング可能なデバイスがドッキング解除状態に移行していることを検出したことに応じて、前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行を開始することと、
    転送先プロセッサ上でアプリケーション状態を再生成するために必要な全てのデータを維持することであって、前記転送先プロセッサは、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかにかかわらず、ドッキング解除するときのデータ転送を最小限に抑えるために、前記データを有する、ことと、を含み、
    前記アプリケーションは、前記ドッキング可能なデバイスから前記ドッキングステーションへの前記アプリケーションの移行中、又は、前記ドッキングステーションから前記ドッキング可能なデバイスへの前記アプリケーションの移行中に実行を継続する、
    方法。
  14. ドッキング解除要求を検出することと、
    前記ドッキング解除要求をロックすることと、
    前記ドッキングステーションから前記ドッキング可能なデバイスへのアプリケーションの移行が完了した後に、前記ドッキング可能なデバイスが物理的にドッキング解除できるように前記ドッキング解除要求をロック解除することと、を含む、
    請求項13の方法。
  15. 前記第2プロセッサは、前記第1プロセッサよりも高性能なプロセッサである、
    請求項14の方法。
  16. 前記ドッキング可能なデバイスに伝達されるいくつかの動作を記録することを含む、
    請求項13の方法。
  17. ドッキングイベントを検出することと、
    前記ドッキング可能なデバイスから前記ドッキングステーションへのアプリケーションの移行を開始するための通知を送信することと、を含む、
    請求項13の方法。
  18. 前記第2プロセッサは、前記第1プロセッサよりも高性能なプロセッサである、
    請求項17の方法。
  19. 前記ドッキング可能なデバイスがドッキング解除状態であることに応じて、前記ドッキング可能なデバイスにおいて仮想の第2タイプのプロセッサを維持することを含む、
    請求項13の方法。
  20. 前記仮想の第2タイプのプロセッサに対して作業が送信されないようにすることを含む、
    請求項19の方法。
  21. ドッキング可能なデバイスにおいて使用される方法であって、
    第1プロセッサを用いて、前記ドッキング可能なデバイスにおいて少なくとも1つのアプリケーションを実行することと、
    前記第1プロセッサを用いて前記少なくとも1つのアプリケーションが実行されている間に、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかを判別することと、
    前記ドッキング可能なデバイスがドッキング状態であると判別したことに応じて、前記第1プロセッサからドッキングステーションの第2プロセッサへの前記少なくとも1つのアプリケーションのアプリケーションの移行を開始することであって、前記少なくとも1つのアプリケーションは、前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行の間、実行を継続する、ことと、
    前記ドッキング可能なデバイスがドッキング解除状態である場合に、前記ドッキング可能なデバイスにおいて仮想プロセッサを維持することと、を含む、
    方法。
  22. 前記ドッキング可能なデバイスがドッキング解除状態であると判別したことに応じて、前記第2プロセッサから前記第1プロセッサへの前記少なくとも1つのアプリケーションのアプリケーションの移行を開始することであって、前記少なくとも1つのアプリケーションは、前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行の間、実行を継続する、ことを含む、
    請求項21の方法。
  23. 少なくとも1つのドライバは、前記第2プロセッサの仮想バージョンである仮想プロセッサ上でアプリケーションが実行されるのを抑制する、
    請求項21の方法。
  24. 前記第1プロセッサ及び前記第2プロセッサの共通機能を決定することを含む、
    請求項21の方法。
  25. 前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかにかかわらず、前記少なくとも1つのアプリケーションに関連するアプリケーション状態を再生成するために必要なデータを維持することを含む、
    請求項21の方法。
  26. 前記ドッキング可能なデバイスがドッキング状態であると判別したことに応じて、前記アプリケーションの移行中に前記第2プロセッサに伝達される動作を記録することを含む、
    請求項21の方法。
  27. ドッキングイベントを検出することと、
    前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行を開始するための通知を送信することと、を含む、
    請求項21の方法。
  28. 前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行が完了した後に、前記ドッキング可能なデバイスが物理的にドッキング解除できるように、ドッキング解除要求を検出したことに応じて前記ドッキング可能なデバイスをロック解除することを含む、
    請求項22の方法。
  29. ドッキングイベントを検出することと、
    前記ドッキングイベントが前記ドッキング可能なデバイスをドッキングすることであることを検出したことに応じて、前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行を開始することと、
    前記ドッキングイベントが前記ドッキング可能なデバイスをドッキング解除することであることを検出したことに応じて、前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行を開始することと、を含む、
    請求項21の方法。
  30. ドッキング可能なデバイスであって、
    少なくとも1つのアプリケーションを実行するように構成された第1プロセッサと、
    少なくとも1つのドライバと、を備え、
    前記少なくとも1つのドライバは、
    前記少なくとも1つのアプリケーションが実行されている間に、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかを判別することと、
    前記ドッキング可能なデバイスがドッキング状態であると判別したことに応じて、前記第1プロセッサからドッキングステーションの第2プロセッサへの前記少なくとも1つのアプリケーションのアプリケーションの移行を開始することであって、前記少なくとも1つのアプリケーションは、前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行の間、実行を継続する、ことと、
    前記ドッキング可能なデバイスがドッキング解除状態である場合に、前記ドッキング可能なデバイスにおいて仮想プロセッサを維持することと、
    を行うように構成されている、
    ドッキング可能なデバイス。
  31. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスがドッキング解除状態であると判別したことに応じて、前記第2プロセッサから前記第1プロセッサへの前記少なくとも1つのアプリケーションのアプリケーションの移行を開始することであって、前記少なくとも1つのアプリケーションは、前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行の間、実行を継続する、ことを行うように構成されている、
    請求項30のドッキング可能なデバイス。
  32. 前記少なくとも1つのドライバは、前記第2プロセッサの仮想バージョンである仮想プロセッサ上でアプリケーションが実行されるのを抑制する、
    請求項30のドッキング可能なデバイス。
  33. 前記少なくとも1つのドライバは、前記第1プロセッサ及び前記第2プロセッサの共通機能を決定するように構成されている、
    請求項30のドッキング可能なデバイス。
  34. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかにかかわらず、前記少なくとも1つのアプリケーションに関連するアプリケーション状態を再生成するために必要なデータを維持することを指示するように構成されている、
    請求項30のドッキング可能なデバイス。
  35. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスがドッキング状態であると判別したことに応じて、前記アプリケーションの移行中に前記第2プロセッサに伝達される動作を記録するように構成されている、
    請求項30のドッキング可能なデバイス。
  36. 前記少なくとも1つのドライバは、
    ドッキングイベントを検出することと、
    前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行を開始するための通知を送信することと、
    を行うように構成されている、
    請求項30のドッキング可能なデバイス。
  37. 前記少なくとも1つのドライバは、前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行が完了した後に、前記ドッキング可能なデバイスが物理的にドッキング解除できるように、ドッキング解除要求を検出したことに応じて前記ドッキング可能なデバイスをロック解除するように構成されている、
    請求項31のドッキング可能なデバイス。
  38. 前記少なくとも1つのドライバは、
    ドッキングイベントを検出することと、
    前記ドッキングイベントが前記ドッキング可能なデバイスをドッキングすることであることを検出したことに応じて、前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行を開始することと、
    前記ドッキングイベントが前記ドッキング可能なデバイスをドッキング解除することであることを検出したことに応じて、前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行を開始することと、
    を行うように構成されている、
    請求項30のドッキング可能なデバイス。
  39. ドッキング可能なデバイスであって、
    少なくとも1つのアプリケーションを実行するように構成された第1プロセッサと
    なくとも1つのドライバと、を備え、
    前記少なくとも1つのドライバは、
    前記少なくとも1つのアプリケーションが実行されている間に、前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかを判別することと、
    前記ドッキング可能なデバイスがドッキング状態であると判別したことに応じて、前記第1プロセッサからドッキングステーションの第2プロセッサへの前記少なくとも1つのアプリケーションのアプリケーションの移行を開始することであって、前記少なくとも1つのアプリケーションは、前記第1プロセッサから前記第2プロセッサへのアプリケーションの移行の間、実行を継続する、ことと、
    前記ドッキング可能なデバイスがドッキング状態であるかドッキング解除状態であるかにかかわらず、前記少なくとも1つのアプリケーションに関連するアプリケーション状態を再生成するために必要なデータを維持することと、
    を行うように構成されている、
    ドッキング可能なデバイス。
  40. 前記少なくとも1つのドライバは、前記ドッキング可能なデバイスがドッキング解除状態であると判別したことに応じて、前記第2プロセッサから前記第1プロセッサへの前記少なくとも1つのアプリケーションのアプリケーションの移行を開始することであって、前記少なくとも1つのアプリケーションは、前記第2プロセッサから前記第1プロセッサへのアプリケーションの移行の間、実行を継続する、ことを行うように構成されている、
    請求項39のドッキング可能なデバイス。
JP2021110003A 2015-12-02 2021-07-01 アプリケーション移行のためのシステム及び方法 Active JP7266640B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/956,511 2015-12-02
US14/956,511 US9971708B2 (en) 2015-12-02 2015-12-02 System and method for application migration between docking station and dockable device
JP2018528615A JP6908608B2 (ja) 2015-12-02 2016-09-19 アプリケーション移行のためのシステム及び方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018528615A Division JP6908608B2 (ja) 2015-12-02 2016-09-19 アプリケーション移行のためのシステム及び方法

Publications (2)

Publication Number Publication Date
JP2021166079A JP2021166079A (ja) 2021-10-14
JP7266640B2 true JP7266640B2 (ja) 2023-04-28

Family

ID=58797778

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018528615A Active JP6908608B2 (ja) 2015-12-02 2016-09-19 アプリケーション移行のためのシステム及び方法
JP2021110003A Active JP7266640B2 (ja) 2015-12-02 2021-07-01 アプリケーション移行のためのシステム及び方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018528615A Active JP6908608B2 (ja) 2015-12-02 2016-09-19 アプリケーション移行のためのシステム及び方法

Country Status (6)

Country Link
US (5) US9971708B2 (ja)
EP (1) EP3384387A4 (ja)
JP (2) JP6908608B2 (ja)
KR (1) KR20180080329A (ja)
CN (1) CN108475209B (ja)
WO (1) WO2017095504A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9971708B2 (en) * 2015-12-02 2018-05-15 Advanced Micro Devices, Inc. System and method for application migration between docking station and dockable device
CN108572891B (zh) * 2017-03-10 2022-06-17 鸿富锦精密工业(武汉)有限公司 显卡连接提示电路
US11243899B2 (en) * 2017-04-28 2022-02-08 International Business Machines Corporation Forced detaching of applications from DMA-capable PCI mapped devices
JP6695942B2 (ja) * 2018-08-24 2020-05-20 レノボ・シンガポール・プライベート・リミテッド 情報処理装置、制御方法、及びプログラム
JP7193732B2 (ja) * 2019-04-08 2022-12-21 富士通株式会社 管理装置、情報処理システムおよび管理プログラム
US11487326B2 (en) * 2020-08-28 2022-11-01 Intel Corporation Elevated docking station for different mobile devices
KR102328173B1 (ko) 2021-07-05 2021-11-17 (주)다윈아이씨티 애플리케이션 마이그레이션 처리 방법, 장치 및 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334865A (ja) 2003-05-01 2004-11-25 Hewlett-Packard Development Co Lp 分散型pda処理および計算動作の継続方法
JP2012504296A (ja) 2008-09-30 2012-02-16 マイクロソフト コーポレーション 実行中における物理的ハードウェアのエミュレーションとの交換
US20130166790A1 (en) 2011-12-23 2013-06-27 Kt Corporation Controlling applications according to connection state and execution condition
US20150095598A1 (en) 2013-09-27 2015-04-02 Intel Corporation Techniques to compose memory resources across devices

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5925117A (en) * 1994-12-28 1999-07-20 Intel Corporation Method and apparatus for enabling application programs to continue operation when an application resource is no longer present after undocking from a network
US6549968B1 (en) * 2000-03-31 2003-04-15 Intel Corporation Context transferring between portable computer processor and docking station processor upon docking and undocking
AU2001261374A1 (en) * 2000-05-09 2001-11-20 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US20130080969A1 (en) * 2011-09-27 2013-03-28 Z124 Unified desktop docking flow
US8749561B1 (en) 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
US8300056B2 (en) * 2008-10-13 2012-10-30 Apple Inc. Seamless display migration
US8717371B1 (en) 2008-12-01 2014-05-06 Nvidia Corporation Transitioning between operational modes in a hybrid graphics system
US7987309B2 (en) * 2009-02-26 2011-07-26 Broadcom Corporation Dockable handheld computing device with graphical user interface and methods for use therewith
US20100250789A1 (en) * 2009-03-27 2010-09-30 Qualcomm Incorporated System and method of managing memory at a portable computing device and a portable computing device docking station
US8368702B2 (en) * 2010-01-06 2013-02-05 Apple Inc. Policy-based switching between graphics-processing units
US8797334B2 (en) * 2010-01-06 2014-08-05 Apple Inc. Facilitating efficient switching between graphics-processing units
WO2012023150A2 (en) 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd Handheld electronic devices
US9164646B2 (en) * 2010-08-31 2015-10-20 Ati Technologies Ulc Method and apparatus for accommodating display migration among a plurality of physical displays
JP2012078931A (ja) * 2010-09-30 2012-04-19 Sony Corp 表示制御装置、情報処理装置及び表示方法
US20130245882A1 (en) * 2012-03-14 2013-09-19 Christopher P. Ricci Removable, configurable vehicle console
WO2012050560A1 (en) 2010-10-11 2012-04-19 Hewlett-Packard Development Company, L.P. First and second software stacks and discrete and integrated graphics processing units
US20120113091A1 (en) * 2010-10-29 2012-05-10 Joel Solomon Isaacson Remote Graphics
CN102759983A (zh) * 2011-05-10 2012-10-31 任少华 具有多个工作模式的计算机及其操作系统
CN102298537A (zh) * 2011-06-10 2011-12-28 宇龙计算机通信科技(深圳)有限公司 应用程序的迁移方法及系统
US20130104051A1 (en) * 2011-09-27 2013-04-25 Z124 Unified desktop big brother application pools
US20130174144A1 (en) * 2011-12-28 2013-07-04 Ati Technologies Ulc Hardware based virtualization system
US8941670B2 (en) 2012-01-17 2015-01-27 Microsoft Corporation Para-virtualized high-performance computing and GDI acceleration
US9727517B2 (en) * 2013-04-25 2017-08-08 Koninklijke Philips N.V. Wireless docking device
US9626180B2 (en) * 2013-12-16 2017-04-18 International Business Machines Corporation Live operating system update mechanisms
JP2015194855A (ja) * 2014-03-31 2015-11-05 富士通株式会社 情報処理システム、制御プログラム、及び情報処理システムの制御方法
US9372814B2 (en) * 2014-08-11 2016-06-21 Dell Products, Lp System and method for transferring an active state between a powerful processor and a less powerful processor
US9971708B2 (en) * 2015-12-02 2018-05-15 Advanced Micro Devices, Inc. System and method for application migration between docking station and dockable device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334865A (ja) 2003-05-01 2004-11-25 Hewlett-Packard Development Co Lp 分散型pda処理および計算動作の継続方法
JP2012504296A (ja) 2008-09-30 2012-02-16 マイクロソフト コーポレーション 実行中における物理的ハードウェアのエミュレーションとの交換
US20130166790A1 (en) 2011-12-23 2013-06-27 Kt Corporation Controlling applications according to connection state and execution condition
US20150095598A1 (en) 2013-09-27 2015-04-02 Intel Corporation Techniques to compose memory resources across devices

Also Published As

Publication number Publication date
US20220092001A1 (en) 2022-03-24
JP6908608B2 (ja) 2021-07-28
US20200117617A1 (en) 2020-04-16
JP2019505881A (ja) 2019-02-28
US11726926B2 (en) 2023-08-15
CN108475209A (zh) 2018-08-31
US11194740B2 (en) 2021-12-07
US10503669B2 (en) 2019-12-10
CN108475209B (zh) 2022-01-04
JP2021166079A (ja) 2021-10-14
EP3384387A1 (en) 2018-10-10
US20180314652A1 (en) 2018-11-01
WO2017095504A1 (en) 2017-06-08
KR20180080329A (ko) 2018-07-11
US9971708B2 (en) 2018-05-15
US20170161212A1 (en) 2017-06-08
US20230393995A1 (en) 2023-12-07
EP3384387A4 (en) 2019-07-03

Similar Documents

Publication Publication Date Title
JP7266640B2 (ja) アプリケーション移行のためのシステム及び方法
US10289684B2 (en) Live migration of virtual machine persistent data using mirrored input-output operations
US8776058B2 (en) Dynamic generation of VM instance at time of invocation
US8850426B2 (en) Managing remote deployment of a virtual machine and service request to be processed by the virtual machines based on network bandwith and storage connectivity
US8793528B2 (en) Dynamic hypervisor relocation
JP5933000B2 (ja) 中央処理ユニット及び画像処理ユニットの同期機構
US20150254113A1 (en) Lock Spin Wait Operation for Multi-Threaded Applications in a Multi-Core Computing Environment
US9558152B2 (en) Synchronization method, multi-core processor system, and synchronization system
US20180052707A1 (en) Cooperative thread array granularity context switch during trap handling
US8898441B2 (en) Obtaining and releasing hardware threads without hypervisor involvement
US10289418B2 (en) Cooperative thread array granularity context switch during trap handling
US20130160017A1 (en) Software Mechanisms for Managing Task Scheduling on an Accelerated Processing Device (APD)
KR20190095489A (ko) 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
WO2011089223A2 (en) Efficient multi-core processing of events
US9170820B2 (en) Syscall mechanism for processor to processor calls
US8671231B2 (en) Fast cancellation of input-output requests
US20210373975A1 (en) Workgroup synchronization and processing
US20230067658A1 (en) System and operation method of hybrid virtual machine managers
KR20220038053A (ko) 커널 지원을 가진 지속 가능한 서비스들에 기초하여 회복성 운영 시스템을 구축하는 방법
JP2022107229A (ja) 情報処理装置、制御方法及び制御プログラム
KR20230080902A (ko) 분산 컴퓨팅 환경에서의 데이터 선 적재 장치 및 이를 이용한 방법
US20140324781A1 (en) Input/output (i/o) procedure for database backup to mass storage

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220726

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230418

R150 Certificate of patent or registration of utility model

Ref document number: 7266640

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150