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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-500659マルチホストデータ処理環境におけるメモリ移行
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-10
(54)【発明の名称】マルチホストデータ処理環境におけるメモリ移行
(51)【国際特許分類】
   G06F 9/46 20060101AFI20231227BHJP
   G06F 12/1009 20160101ALI20231227BHJP
   G06F 12/0804 20160101ALI20231227BHJP
   G06F 9/455 20180101ALI20231227BHJP
【FI】
G06F9/46 420B
G06F12/1009
G06F12/0804 100
G06F9/455 150
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534238
(86)(22)【出願日】2021-11-29
(85)【翻訳文提出日】2023-06-05
(86)【国際出願番号】 EP2021083416
(87)【国際公開番号】W WO2022128430
(87)【国際公開日】2022-06-23
(31)【優先権主張番号】17/122,035
(32)【優先日】2020-12-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ロバーツ、スティーブン、レオナルド
(72)【発明者】
【氏名】スタントン、デビッド、アンソニー、ラーソン
(72)【発明者】
【氏名】ヘイルマン、ピーター
(72)【発明者】
【氏名】ジェイコブス、スチュアート、ザカリー
(72)【発明者】
【氏名】ピント、クリスチャン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM36
5B205NN89
5B205PP03
5B205RR04
(57)【要約】
データ処理システムは、システムファブリックと、システムメモリと、メモリコントローラと、システムファブリックに通信可能に結合され、通信リンクを介してソースホストに対して非コヒーレントであるデスティネーションホストに通信可能に結合されるように構成されたリンクコントローラと、を含む。複数の処理ユニットは、論理パーティションを実行し、通信リンクを介して論理パーティションをデスティネーションホストに移行するように構成される。論理パーティションの移行は、通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットを、ソースホストのシステムメモリからデスティネーションホストのシステムメモリに移行することを含む。データセットの少なくとも一部を移行した後、論理パーティションがデスティネーションホスト上で実行されるように、通信リンクを介して、論理パーティションの状態をソースホストからデスティネーションホストへ移行する。
【特許請求の範囲】
【請求項1】
データ処理環境におけるデータ処理方法であって、前記方法は、
通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットを、前記ソースホストのシステムメモリから、前記ソースホストに対して非コヒーレントであるデスティネーションホストのシステムメモリに移行することと、
データセットの少なくとも一部を移行した後、前記通信リンクを介して、前記論理パーティションの状態を前記ソースホストから前記デスティネーションホストへ移行することと、
前記論理パーティションの前記状態を前記デスティネーションホストに移行した後、前記デスティネーションホストで前記論理パーティションを実行することと、を含むデータ処理方法。
【請求項2】
前記データセットを移行することは、前記論理パーティションが前記デスティネーションホスト上で実行を開始した後、前記論理パーティションの前記データセットの少なくとも一部を前記ソースホストから前記デスティネーションホストに移行することを含む、請求項1に記載の方法。
【請求項3】
前記データセットを移行することは、前記ソースホストが、前記デスティネーションホストの要求に基づいて、前記データセットの1つ以上のメモリページを前記デスティネーションホストのシステムメモリにコピーすることを含む、請求項1に記載の方法。
【請求項4】
前記データセットを移行することは、前記ソースホストが前記データセットの1つ以上のメモリページを前記デスティネーションホストのシステムメモリにコピーすることを開始することを含む、請求項1に記載の方法。
【請求項5】
前記データセットは、関連するメモリページの仮想-実アドレス変換を定義するそれぞれの関連するページテーブルエントリをそれぞれが有する複数のメモリページを含み、
前記方法は、前記ソースホストが、前記複数のメモリページのどのページテーブルエントリが前記デスティネーションホストに移行されたかをデータ構造で追跡することをさらに含む、請求項1に記載の方法。
【請求項6】
前記データセットを移行することは、
前記ソースホストが、前記デスティネーションホストのシステムメモリ内のアドレスを指定するストアリクエストをシステムファブリック上で発行することと、
前記ソースホスト内のリンクコントローラが、前記ストアリクエストを受信し、前記アドレスに基づいて、前記通信リンクを介して前記デスティネーションホスト内のメモリコントローラに前記ストアリクエストを送信することと、を含む、請求項1に記載の方法。
【請求項7】
前記データセットを移行することは、前記ソースホストが、前記ソースホストによる更新の対象となる前記データセット内のすべてのメモリページを前記ソースホストのキャッシュからシステムメモリに一括フラッシュすることを含む、請求項1に記載の方法。
【請求項8】
前記ソースホストが、ネットワーク接続を介した通信を利用して、前記ソースホストから前記デスティネーションホストへの論理パーティションの移行を調整することと、
前記ソースホストが、前記ネットワーク接続を介して前記データセット及び前記論理パーティションの前記状態を移行することを控えることと、をさらに含む、請求項1に記載の方法。
【請求項9】
ソースホストであるデータ処理システムであって、前記データ処理システムは、
システムファブリックと、
システムメモリと、
前記システムファブリックに通信可能に結合されている、前記システムメモリのメモリコントローラと、
前記システムファブリックに通信可能に結合され、通信リンクを介してデスティネーションホストに通信可能に結合されるように構成されたリンクコントローラであって、前記デスティネーションホストは前記ソースホストに対して非コヒーレントである、リンクコントローラと、
前記システムファブリックに通信可能に結合された複数の処理ユニットであって、
前記通信リンクを介して、前記ソースホスト上で実行される論理パーティションのデータセットを、前記ソースホストの前記システムメモリから前記デスティネーションホストのシステムメモリに移行することと、
前記データセットの少なくとも一部を移行した後、前記論理パーティションがその後前記デスティネーションホスト上で実行されるように、前記通信リンクを介して、前記論理パーティションの状態を前記ソースホストから前記デスティネーションホストへ移行することと、により、
前記システムメモリに存在するデータセットを有する論理パーティションを実行し、前記通信リンクを介して前記論理パーティションを前記デスティネーションホストに移行するように構成された複数の処理ユニットと、を含むデータ処理システム。
【請求項10】
前記データセットを移行することは、前記論理パーティションが前記デスティネーションホスト上で実行を開始した後、前記論理パーティションの前記データセットの少なくとも一部を前記ソースホストから前記デスティネーションホストに移行することを含む、請求項9に記載のデータ処理システム。
【請求項11】
前記データセットを移行することは、前記ソースホストが、前記デスティネーションホストの要求に基づいて、前記データセットの1つ以上のメモリページを前記デスティネーションホストのシステムメモリにコピーすることを含む、請求項9に記載のデータ処理システム。
【請求項12】
前記データセットを移行することは、前記ソースホストが前記データセットの1つ以上のメモリページを前記デスティネーションホストのシステムメモリにコピーすることを開始することを含む、請求項9に記載のデータ処理システム。
【請求項13】
前記データセットは、関連するメモリページの仮想-実アドレス変換を定義するそれぞれの関連ページテーブルエントリをそれぞれが有する複数のメモリページを含み、
前記複数の処理ユニットは、前記複数のメモリページのどのページテーブルエントリが前記デスティネーションホストに移行されたかをデータ構造で追跡することを実行するようにさらに構成される、請求項9に記載のデータ処理システム。
【請求項14】
前記データセットを移行することは、
前記ソースホストが、前記デスティネーションホストのシステムメモリ内のアドレスを指定するストアリクエストを前記システムファブリック上で発行することと、
前記ソースホストの前記リンクコントローラが、前記ストアリクエストを受信し、前記アドレスに基づいて、前記通信リンクを介して前記デスティネーションホスト内のメモリコントローラに前記ストアリクエストを送信することと、を含む請求項9に記載のデータ処理システム。
【請求項15】
前記データセットを移行することは、前記ソースホストが、前記ソースホストによる更新の対象となる前記データセット内のすべてのメモリページを前記ソースホストのキャッシュからシステムメモリに一括フラッシュすることを含む、請求項9に記載のデータ処理システム。
【請求項16】
前記複数の処理ユニットは、
前記ソースホストが、ネットワーク接続を介した通信を利用して、前記ソースホストから前記デスティネーションホストへの論理パーティションの移行を調整することと、
前記ソースホストが、前記ネットワーク接続を介して前記データセット及び前記論理パーティションの前記状態を移行することを控えることと、をさらに実行するように構成される、請求項9に記載のデータ処理システム。
【請求項17】
コンピュータ可読記憶装置と、
前記コンピュータ可読記憶装置内に格納され、ソースホストとして機能するデータ処理システムによって実行されるプログラムコードとを含み、当該プログラムコードは前記データ処理システムに、
通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットを、前記ソースホストのシステムメモリから、前記ソースホストに対して非コヒーレントであるデスティネーションホストのシステムメモリに移行することと、
データセットの少なくとも一部を移行した後、前記通信リンクを介して、前記論理パーティションの状態を前記ソースホストから前記デスティネーションホストへ移行することと、
前記論理パーティションの前記状態を前記デスティネーションホストに移行した後、前記デスティネーションホストで前記論理パーティションを実行することと、を実行させる、プログラム製品。
【請求項18】
前記データセットを移行することは、前記論理パーティションが前記デスティネーションホスト上で実行を開始した後、前記論理パーティションの前記データセットの少なくとも一部を前記ソースホストから前記デスティネーションホストに移行することを含む、請求項17に記載のプログラム製品。
【請求項19】
前記データセットを移行することは、前記ソースホストが、前記デスティネーションホストの要求に基づいて、前記データセットの1つ以上のメモリページを前記デスティネーションホストのシステムメモリにコピーすることを含む、請求項17に記載のプログラム製品。
【請求項20】
前記データセットを移行することは、前記ソースホストが前記データセットの1つ以上のメモリページを前記デスティネーションホストのシステムメモリにコピーすることを開始することを含む、請求項17に記載のプログラム製品。
【請求項21】
前記データセットは、関連するメモリページの仮想-実アドレス変換を定義するそれぞれの関連ページテーブルエントリをそれぞれが有する複数のメモリページを含み、
前記プログラムコードは、さらに、前記ソースホストに、前記複数のメモリページのどのページテーブルエントリが前記デスティネーションホストに移行されたかをデータ構造で追跡させる、請求項17に記載のプログラム製品。
【請求項22】
前記データセットを移行することは、
前記ソースホストが、前記デスティネーションホストのシステムメモリ内のアドレスを指定するストアリクエストをシステムファブリック上で発行することと、
前記ソースホスト内のリンクコントローラが、前記ストアリクエストを受信し、前記アドレスに基づいて、前記通信リンクを介して前記デスティネーションホスト内のメモリコントローラに前記ストアリクエストを送信することと、を含む、請求項17に記載のプログラム製品。
【請求項23】
前記データセットを移行することは、前記ソースホストが、前記ソースホストによる更新の対象となる前記データセット内のすべてのメモリページを前記ソースホストのキャッシュからシステムメモリに一括フラッシュすることを含む、請求項17に記載のプログラム製品。
【請求項24】
前記プログラムコードは、
前記ソースホストが、ネットワーク接続を介した通信を利用して、前記ソースホストから前記デスティネーションホストへの論理パーティションの移行を調整することと、
前記ソースホストが、前記ネットワーク接続を介して前記データセット及び前記論理パーティションの前記状態を移行することを控えることと、をさらに実行するように構成される、請求項17に記載のプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にデータ処理に関し、特に、マルチホストデータ処理環境におけるメモリ移行に関する。
【背景技術】
【0002】
一般に、クラウドコンピューティングは、データ処理、データストレージ、ネットワークリソース、ソフトウェア、およびデータがリモートデータ処理システムにアクセス可能な計算モデルを指し、このようなリソースを提供する基礎となる情報技術(IT)インフラストラクチャの詳細は、クラウドサービスの消費者にとって透過的である。様々な実装において、ITインフラストラクチャは、クラウド消費者に関して、オンプレミスまたはオフプレミス(または両者のハイブリッド)とすることができる。さらに、クラウドコンピューティングリソースは、広く地理的もしくはトポロジー的またはその両方に分散することができる(ただし、分散する必要はない)。
【0003】
クラウドコンピューティングは、リモートコンピューティングのウェブサイト(インターネットやプライベートな企業ネットワークなど)に容易にアクセスできることで促進され、ウェブベースのリソース、ツール、またはアプリケーションの形態をとることが多く、クラウド利用者は、リソース、ツール、またはアプリケーションがクラウド利用者のコンピュータシステム上にインストールされたローカルプログラムであるかのように、ウェブブラウザを介してアクセスおよび使用することができる。商用クラウドの実装は、一般に、クラウド利用者のサービス品質(QoS)要件を満たすことが期待されており、それはサービス品質保証(SLA)で指定される場合がある。典型的なクラウド実装では、クラウド利用者は計算資源をサービスとして消費し、使用した資源に対してのみ対価を支払う。
【0004】
クラウドコンピューティングの受け入れは、オペレーティングシステム、サーバ、ストレージデバイス、ネットワークリソースなどのコンピューティングリソースの仮想的なインスタンス(実際のインスタンスではなく)を作成する仮想化の普及により促進されている。例えば、仮想マシン(VM)は、論理パーティション(LPAR)とも呼ばれ、物理マシン(例えば、コンピュータシステム)のソフトウェア実装で、物理マシンのように命令を実行する。VMは、システムVMとプロセスVMに分類されることがある。システムVMは、Windows、Linux(登録商標)、Androidなどの完全なオペレーティングシステム(OS)と、それに関連するアプリケーションの実行をサポートする完全なシステムプラットフォームを提供する。一方、プロセスVMは、通常、単一のプログラムを実行し、単一の処理をサポートするように設計される。いずれの場合も、VM上で動作するアプリケーションソフトウェアは、そのVMが提供するリソースとアブストラクションに制限される。その結果、一般のITインフラストラクチャによって提供される実際のリソースは、おそらく複数の異なるクラウドコンピューティング顧客からの複数のVMの展開を通じて、効率的に管理および利用することができる。実際のITリソースの仮想化とVMの管理は、通常、VMモニター(VMM)またはハイパーバイザーと呼ばれるソフトウェアによって提供される。
【0005】
典型的な仮想化コンピューティング環境では、VMおよびVMMは、従来の入出力(I/O)およびネットワーキングプロトコルを利用して、コンピューティング環境のITインフラストラクチャ内の物理エンティティと互いに通信することができる。当技術分野で知られているように、従来のネットワーキングプロトコルは、一般に、よく知られた7層のオープンシステムインターコネクション(OSI)モデルを前提としており、(昇順に)物理層、データリンク、ネットワーク、トランスポート、セッション、プレゼンテーション及びアプリケーション層を含む。いくつかの実装では、VMおよびVMMは、従来の物理層接続の代わりに仮想ネットワーク接続を使用することにより、VMおよびVMMが物理ネットワーク要素であるかのように他のネットワークエンティティとの通信を可能にする。この従来の仮想化されたI/O及びネットワークインフラストラクチャは、当技術分野では仮想入出力サーバ(VIOS)と呼ばれている。
【0006】
説明したようなクラウドコンピューティング環境では、計算ワークロードは、一般に、ワークロードを実行する物理ホストのレジスタおよびキャッシュに保持されるワークロード状態と、物理ホストのデータストレージに存在するワークロードデータセットの2つのコンポーネントを含むものとして特徴付けることができる。これらの計算ワークロードは、例えば、データ処理システムの保守およびアップグレード、負荷分散、規制遵守、セキュリティ、およびリソースの最適化を含む様々な理由から、物理ホスト間で頻繁に転送される。
【0007】
実行中のワークロードをソースホストからデスティネーションホストに転送する1つの従来技術によれば、ソースホストおよびデスティネーションホストのオペレーティングシステムまたはハイパーバイザーは、まず、メモリページごとに、VIOSを介してソースホストのメモリからデスティネーションホストのメモリにワークロードデータセットをコピーすることを調整する。ワークロードデータセットが正常に転送された後、ソースホストおよびデスティネーションホストのオペレーティングシステムまたはハイパーバイザーは、VIOSを介してソースホストからデスティネーションホストへのワークロード状態の転送を調整する。ソースホストからデスティネーションホストへのワークロードの転送中、ワークロードはソースホスト上で実行し続けるため、ワークロードは一般的にワークロードデータセットからの読み取りとワークロードデータセットへの書き込みの両方を継続する。この技法を用いると、ソースホストが既にデスティネーションホストに転送されたメモリページを更新(書き込み)するたびに、更新されたメモリページの2度目の転送が必要となるため、ワークロードの移行に必要な時間が予測不可能に長くなる。
【0008】
代替技術では、ソースホストとデスティネーションホストのオペレーティングシステムまたはハイパーバイザーは、まず、VIOSを介してソースホストからデスティネーションホストへのワークロード状態の転送を調整し、デスティネーションホスト上でワークロードの実行を開始し、その後デマンドページングに基づいてソースホストからデスティネーションホストにメモリページを移行する。したがって、デスティネーションホスト上で実行されるワークロードが、ソースホスト上に存在するメモリページ内のデータに対するアクセス要求を生成するたびに、ソフトウェアページフォルトが発生し、オペレーティングシステムまたはハイパーバイザーは、要求されたメモリページをソースホストからVIOSを介してデスティネーションホストにコピーすることによってページフォルトに対処する。この代替技術を使用すると、メモリページはソースホストからデスティネーションホストへ1回だけ転送されるが、各デマンドページング要求を処理するのに必要な大きなレイテンシにより、ワークロードの移行期間全体において応答性が悪いという問題がある。
【0009】
本明細書で説明する従来のワークロード移行技術は、いずれもVIOSを利用して非コヒーレントなホスト間でワークロードを転送するものであり、ホスト間でワークロードデータセットとワークロード状態を通信するために通過しなければならない多くのプロトコル層による高い通信オーバーヘッドとレイテンシを特徴とするものである。
【発明の概要】
【0010】
本発明の様々な実施形態は、ワークロード状態およびワークロードデータセットを転送する間、VIOS(または外部ネットワーク)に関連する通信オーバーヘッドおよびレイテンシを回避しながら、非コヒーレントであるホスト間のワークロードのライブ移行を支援する。
【0011】
少なくとも1つの実施形態では、論理パーティションが移行されるソースホストにサービスを提供するデータ処理システムは、システムファブリックと、システムメモリと、システムファブリックに通信可能に結合されているシステムメモリのメモリコントローラと、システムファブリックに通信可能に結合され、通信リンクを介してソースホストに対して非コヒーレントであるデスティネーションホストに通信可能に結合されるように構成されたリンクコントローラとを含み得る。ソースホストは、さらに、システムファブリックに通信可能に結合された複数の処理ユニットを含む。複数の処理ユニットは、例えば、ハイパーバイザーまたは仮想マシンモニタによって、システムメモリに存在するデータセットを有する論理パーティションを実行し、通信リンクを介して論理パーティションをデスティネーションホストに移行するように構成される。論理パーティションの移行は、通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットをソースホストのシステムメモリからデスティネーションホストのシステムメモリに移行することを含む。データセットの少なくとも一部を移行した後、論理パーティションがデスティネーションホスト上で実行されるように、通信リンクを介して、論理パーティションの状態をソースホストからデスティネーションホストへ移行する。この移行技術により、移行のレイテンシが短縮され、論理パーティションのジッターが改善される。
【0012】
本発明の態様はまた、データ処理方法として実施することができる。一例では、この方法は、通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットを、ソースホストのシステムメモリから、ソースホストに対して非コヒーレントであるデスティネーションホストのシステムメモリに移行することを含み得る。データセットの少なくとも一部を移行した後、通信リンクを介して、論理パーティションの状態はソースホストからデスティネーションホストへ移行される。論理パーティションの状態をデスティネーションホストに移行した後、デスティネーションホストで論理パーティションが実行される。
【0013】
本発明の態様はまた、プログラム製品として実施することができる。一例では、プログラム製品は、コンピュータ可読記憶装置と、コンピュータ可読記憶装置内に格納され、ソースホストとして機能するデータ処理システムによって実行されるプログラムコードとを含み、プログラムコードはデータ処理システムに、通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットを、ソースホストのシステムメモリから、ソースホストに対して非コヒーレントであるデスティネーションホストのシステムメモリに移行させる。また、プログラムコードは、データセットの少なくとも一部を移行した後、論理パーティションがデスティネーションホスト上で実行されるように、データ処理システムに、通信リンクを介して、論理パーティションの状態をソースホストからデスティネーションホストへ移行させる。
【0014】
いくつかの例またはオペレーティングシナリオにおいて、データセットを移行することは、論理パーティションがデスティネーションホスト上で実行を開始した後、論理パーティションのデータセットの少なくとも一部をソースホストからデスティネーションホストに移行することを含む。
【0015】
いくつかの例またはオペレーティングシナリオにおいて、データセットを移行することは、ソースホストが、デスティネーションホストの要求に基づいて、データセットの1つ以上のメモリページをデスティネーションホストのシステムメモリにコピーすることを含む。
【0016】
いくつかの例またはオペレーティングシナリオにおいて、データセットを移行することは、ソースホストがデータセットの1つ以上のメモリページをデスティネーションホストのシステムメモリにコピーすることを開始することを含む。
【0017】
いくつかの例またはオペレーティングシナリオでは、データセットは関連するメモリページの仮想-実アドレス変換を定義するそれぞれの関連するページテーブルエントリをそれぞれが有する複数のメモリページを含み、ソースホストは、複数のメモリページのどのページテーブルエントリがデスティネーションホストに移行されたかをデータ構造で追跡する。
【0018】
いくつかの例またはオペレーティングシナリオにおいて、データセットを移行することは、ソースホストがデスティネーションホストのシステムメモリ内の実アドレスを指定するストアリクエストをシステムファブリック上で発行することと、ソースホスト内のリンクコントローラがストアリクエストを受信し、実アドレスに基づいて、ストアリクエストを通信リンクを介してデスティネーションホスト内のメモリコントローラに送信することと、を含む。
【0019】
いくつかの例では、データセットを移行することは、ソースホストが、ソースホストによる更新の対象となるデータセット内のすべてのメモリページをソースホストのキャッシュからシステムメモリに一括フラッシュすることを含む、請求項1に記載の方法である。
【0020】
いくつかの例では、ソースホストは、仮想入出力サーバ(VIOS)などのネットワーク接続を介した通信を利用して、ソースホストからデスティネーションホストへの論理パーティションの移行を調整するが、ネットワーク接続を介してデータセット及び論理パーティションの状態を移行することは控える。
【図面の簡単な説明】
【0021】
本発明の実施形態は、添付の図面を参照して、例示のためにのみ説明される。
図1】一実施形態による、例示的なホストデータ処理システムのハイレベルブロック図である。
図2】一実施形態による、ホストデータ処理システムの例示的な処理ユニットのより詳細なブロック図である。
図3】一実施形態による、複数のホストが非コヒーレント通信リンクによって結合されている例示的なデータ処理システム環境を示す。
図4】一実施形態による、例示的なホストデータ処理システムのハイパーバイザーおよび論理パーティションの論理ビューを示す。
図5】一実施形態による、例示的なページテーブルエントリ(PTE)を示す。
図6】一実施形態による、例示的なホストデータ処理システムの様々なメモリアクセス要求を示す。
図7】一実施形態による、2つのホストデータ処理システムが通信することができる例示的な書き込みプリミティブを示す。
図8】一実施形態による、2つのホストデータ処理システムが通信することができる例示的な読み取りプリミティブを示す。
図9】一実施形態による、図7の書き込みプリミティブにおける例示的なストアオペレーションのハイレベル論理フローチャートである。
図10】一実施形態による、図8の読み取りプリミティブにおける例示的なロードオペレーションのハイレベル論理フローチャートである。
図11A図11Aは、一実施形態による、ソースホストがデスティネーションホストに論理パーティションを移行する例示的な方法のハイレベル論理フローチャートを共に形成する。
図11B図11Bは、一実施形態による、ソースホストがデスティネーションホストに論理パーティションを移行する例示的な方法のハイレベル論理フローチャートを共に形成する。
図12】一実施形態による、論理パーティションの移行中にソースホストがページプロテクション更新を処理する例示的な方法のハイレベル論理フローチャートである。
図13】一実施形態による、ソースホストが論理パーティションのメモリページをデスティネーションホストにコピーする例示的な方法のハイレベル論理フローチャートである。
図14】一実施形態による、移行中の論理パーティションをデスティネーションホストが受信してアクティブ化する例示的な方法のハイレベル論理フローチャートである。
図15】一実施形態による、移行中の論理パーティションのページフォルトをデスティネーションホストが処理する例示的な方法のハイレベル論理フローチャートである。
図16】一実施形態による、ソースホストから移行中の論理パーティションのメモリページをデスティネーションホストが「プル」する例示的な方法のハイレベル論理フローチャートである。
図17】一実施形態による、デスティネーションホストから移行中の論理パーティションのメモリページに対する「プル」要求をソースホストが処理する例示的な方法のハイレベル論理フローチャートである。
図18】一実施形態による、デスティネーションホストに移行中の論理パーティションのメモリページをソースホストが「プッシュ」する例示的な方法のハイレベル論理フローチャートである。
図19】一実施形態による、ソースホストから移行中の論理パーティションのメモリページに対する「プッシュ」要求をデスティネーションホストが処理する例示的な方法のハイレベル論理フローチャートである。
図20】一実施形態による、設計処理を示すデータフロー図である。
【発明を実施するための形態】
【0022】
ここで図を参照すると、同様の参照数字は全体を通して同様の部分および対応する部分を指し、特に図1を参照すると、一実施形態による例示的なデータ処理システム100を描いたハイレベルブロック図が図示されている。様々な使用例およびトポロジーにおいて、ハードウェア構成要素を含み、ソフトウェアもしくはファームウェアまたはその両方の構成要素を追加的に含み得る、データ処理システム100のようなデータ処理システムは、当技術分野において、「ホスト」または「ホストデータ処理システム」と呼ばれることがある。様々なオペレーティングシナリオにおいて、任意の所与のホストは、ワークロード(例えば、論理パーティション)がそこから移行されるソースホスト、またはワークロードがそこに移行されるデスティネーションホストとなり得る。
【0023】
描かれた実施形態では、ホストデータ処理システム100は、データおよび命令を処理するための複数の処理ノード102を含むキャッシュコヒーレントマルチプロセッサ(MP)データ処理システムである。処理ノード102は、アドレス、データおよび制御情報を伝達するためのシステムインターコネクト110に結合される。システムインターコネクト110は、例えば、バスドインターコネクト、スイッチドインターコネクト、またはハイブリッドインターコネクトとして実装され得る。
【0024】
描かれた実施形態では、各処理ノード102は、好ましくはそれぞれがそれぞれの集積回路として実現される1つ以上(例えば、4つ)の処理ユニット104a~104dを含むマルチチップモジュール(MCM)として実現される。各処理ノード102内の処理ユニット104は、システムインターコネクト110と同様に、例えば、1つ以上のバスおもしくはスイッチまたはその両方で実現され得るローカルインターコネクト114によって、互いにおよびシステムインターコネクト110に通信のために結合される。システムインターコネクト110およびローカルインターコネクト114は、一緒になってシステムファブリックを形成する。少なくともいくつかの好ましい実施形態では、システムファブリック上の通信は、いわゆるホストバスプロトコルに準拠し、これは、とりわけ、システムファブリックを介して通信を行う物(例えば、キャッシュ、メモリコントローラなど)の間で通信される法的要求、応答、および制御情報の所定のセットを定義している。
【0025】
図2を参照してより詳細に後述するように、いくつかの実施形態では、処理ユニット104の1つ以上(および場合によっては処理ユニット104のすべて)はそれぞれ、ローカルインターコネクト114に結合されたメモリコントローラ106を含み、それぞれのシステムメモリ108へのインターフェースを提供する。システムメモリ108に存在するデータおよび命令は、一般に、データ処理システム100内の任意の処理ノード102の任意の処理ユニット104内のプロセッサコアによってアクセスされ、キャッシュされ、修正され得る。他の実施形態では、1つ以上のメモリコントローラ106(およびシステムメモリ108)は、ローカルインターコネクト114ではなく、システムインターコネクト110に直接または間接に結合(例えば、スイッチを介して)され得る。
【0026】
当業者は、図1のデータ処理システム100が、インターコネクトブリッジ、不揮発性ストレージ、ネットワークまたは付属デバイスに接続するためのポートなどの多くの追加の図示されていない構成要素を含み得ることを理解するであろう。そのような追加の構成要素は、説明された実施形態の理解に必要ではないので、図1に図示されず、本明細書でさらに議論されない。しかしながら、ここで説明する補足は、多様なアーキテクチャのデータ処理システムに適用可能であり、決して図1に図示された一般化されたデータ処理システムアーキテクチャに限定されないことも理解されたい。
【0027】
ここで図2を参照すると、一実施形態による例示的な処理ユニット104およびシステムメモリ108のより詳細なブロック図が描かれている。描かれた実施形態では、各処理ユニット104は、命令およびデータを処理するための1つ以上のプロセッサコア200を含む集積回路である。描かれた例では、プロセッサコア200は、1つ以上の同時実行ハードウェアスレッドからの命令を実行することができる1つ以上の実行ユニット202を含む。
【0028】
プロセッサコア200は、実行ユニット202におけるメモリ参照命令の実行によって決定された有効なアドレスを、データ処理システム100内のすべての処理ユニット104によって参照される実アドレス空間内の実アドレスに変換する責任を負うメモリ管理ユニット(MMU)204をさらに含む。MMU204は、翻訳ルックアサイドバッファ(TLB)、有効-実アドレス変換(ERAT)キャッシュ、セグメントルックアサイドバッファ(SLB)などの1つ以上の変換構造206を参照して、有効-実アドレス変換を実行する。これらのアドレス変換構造の数もしくはタイプまたはその両方は、実装およびアーキテクチャ間で異なる場合がある。アドレス変換構造206は、以下でさらに論じるように、システムメモリ108から取得され得る選択されたアドレス変換のローカルコピーをバッファリングすることによって、アドレス変換に関連するレイテンシを低減する。
【0029】
各プロセッサコア200のオペレーションは、様々なシステムメモリ108によって提供され、メモリコントローラ106を介してアクセス可能にされた複合システムメモリを最下層に有するマルチレベルメモリ階層によって支援される。個々のメモリコントローラ106が責任を負う実アドレス範囲は、例えば、メモリコントローラ106内の1つ以上のベースアドレスレジスタ(BAR)216の適切な構成を通じて、ハイパーバイザーもしくはオペレーティングシステムソフトウェアまたはその両方によって定義できる。図示されるように、システムメモリ108は、特に、様々なワークロードのデータセット(「論理パーティション」(LPAR)とも呼ばれる)のためのストレージを提供する、複数のメモリページ209を格納する。さらに、1つ以上のシステムメモリ108は、複数のページテーブルエントリ(PTE)212を含むページフレームテーブル210を格納し、各PTE212は、システムメモリ108の1つに存在するそれぞれの対応するメモリページ209に対する有効-実アドレス変換を指定する。PTE212は、さらに、異なるメモリページに対するアクセスプロテクション(例えば、読み取り専用、読み取り/書き込み(R/W)等)を指定する。MMU204によってページフレームテーブル210からアクセスされるPTE212は、例えば、アドレス変換構造206において、その後のアクセスのためにMMU204によってキャッシュされ得る。ページフレームテーブル210は、例えば、データ処理システム100内で実行されるオペレーティングシステムもしくはハイパーバイザーソフトウェアまたはその両方によって確立、維持、および更新され得る。
【0030】
各プロセッサコア200のマルチレベルメモリ階層は、さらに、1つ以上のレベルのキャッシュメモリを含み、図示の実施形態では、各プロセッサコア200内のプライベートなストアスルーレベル1(L1)キャッシュ208と、各プロセッサコア200のそれぞれのストアインレベル2(L2)キャッシュ230とが含まれる。図示のキャッシュ階層は、キャッシュの2つのレベルのみを含むが、当業者は、他の実施形態が、オンチップまたはオフチップ、プライベートまたは共有、インラインまたはルックアサイドキャッシュの追加のレベル(L3、L4など)を含むことがあり、これらは、キャッシュの上位レベルの内容を完全に包含するか、部分的に包含するか、または包含しなくてもよいことを理解するであろう。
【0031】
描かれている実施形態では、各処理ユニット104は、ホストバスプロトコルに従ってシステムファブリック上のオペレーションの流れを制御し、所望のキャッシュコヒーレンシプロトコルを実装するために必要なコヒーレンシ通信を実装する責任を負う統合および分散ファブリックコントローラ214をさらに含む。処理ユニット104は、1つ以上のI/OデバイスもしくはI/Oチャネルまたはその両方(図示せず)の取り付けをサポートする統合I/O(入力/出力)コントローラ218をさらに含み得る。
【0032】
描かれた例ではまた、処理ユニット104は、少なくとも1つのオペレーティングモードにおいて、非コヒーレント通信リンクを介して他のホストデータ処理システム100のホストデータ処理システム100への取り付けをサポートする、取り付けられた非コヒーレント(NC)リンクコントローラ220を含む。例えば、図3は、ホストデータ処理システム100aおよびホストデータ処理システム100bが非コヒーレント通信リンク302による通信のために一緒に結合されている例示的なデータ処理システム環境300を示す(データ処理システム環境300は、オプションとして、追加の非コヒーレント通信リンク302によってホスト100aもしくは100bまたはその両方に結合された1つ以上の追加のホスト100を含み得る)。このような配置では、ホストデータ処理システム100a、100bの各々は、他のホストと非コヒーレントであるそれ自身のそれぞれの実アドレス空間を維持する。各ホスト100a、100b内のNCリンクコントローラ220が責任を負う実アドレス範囲は、例えば、NCリンクコントローラ220内の1つ以上のベースアドレスレジスタ(BAR)224の適切な構成を通じて、ハイパーバイザーもしくはオペレーティングシステムソフトウェアまたはその両方によって定義できる。一度構成されると、ローカルメモリコントローラ106のBAR216によって定義された実アドレス範囲内の実アドレスを指定する、ホスト100のシステムファブリック上で送信されるメモリアクセス要求は、関連するシステムメモリ108を参照することによってそのメモリコントローラ106によりサービスされ得る。NCリンクコントローラ220のBAR224によって定義される実アドレス範囲内の実アドレスを指定するシステムファブリック上のメモリアクセス要求は、NCリンクコントローラ220によってNC通信リンク302を介して他のホスト100aまたは100bへ送信される。非コヒーレント通信リンク302を介してNCリンクコントローラ220によって受信されたインバウンドメモリアクセス要求は、レシービングホスト100のシステムファブリック上でNCリンクコントローラ220によって送信される。
【0033】
再び図2を参照すると、処理ユニット104は、ネストメモリ管理ユニット(NMMU)228をさらに含み、これは、システムファブリックを介した要求に応じて、NCリンクコントローラ220などの他の通信を行う物にアドレス変換を提供する。他の実施形態では、NMMU228は、例えば、ローカルインターコネクト114ではなくシステムインターコネクト110に結合されることによって、代替のまたは追加の方法で、NCリンクコントローラ220を含む通信を行う物にアドレス変換を提供するように通信可能に結合され得ることを理解されたい。
【0034】
図4は、一実施形態による図1図3のホスト100aまたは100bのソフトウェア構成の論理ビューを示す図である。この例では、各ホスト100のソフトウェア構成400は、ホスト100のハードウェアおよびソフトウェアリソースを管理するハイパーバイザー(またはVMM)402を含む。ハイパーバイザー402は、1つ以上の論理パーティション(LPAR)404の実装を通して、ホスト100の基礎となるリソースの多くを仮想化する。この例では、各LPAR404は、ホスト100の1つ以上のプロセッサコア200内の指定数のハードウェアスレッド406、LPAR404のデータセットを格納するための指定実メモリアドレスの(メモリページ209からの)メモリページ408のコレクション、オペレーティングシステム410(例えば、Linux(登録商標)、Windows(登録商標)、Android(登録商標)、iOS(登録商標)など)のインスタンス、OS410で実行するアプリケーション412のコレクションを含む。ハイパーバイザー402は、さらに、ホスト100がI/Oコントローラ218を介して結合される物理ネットワーク接続を仮想化する仮想入出力サーバ(VIOS)420を介して、LPAR404間のネットワーク接続およびハイパーバイザー402と他のホスト100との間のネットワークをサポートする。
【0035】
上述したように、ハイパーバイザー402は、任意の様々な理由のために、ライブワークロード、例えばLPAR404の1つを自身のホスト100から別のホスト100に移行することが望ましいまたは必要であると決定し得る。本明細書で説明する実施形態に従って、移行は、好ましくは、移行中のLPAR404のデータセットおよび状態を、LPAR404が最初に実行されていたホスト100(本明細書では「ソースホスト」と呼ぶ)から、LPAR404がその実行を継続する別のホスト100(本明細書では「デスティネーションホスト」と呼ぶ)へ、VIOS420によってサポートされる仮想ネットワーク接続(従来のように)ではなく、NC通信302を使用してコピーする。LPARデータセットの移行にVIOS420ではなくNC通信リンク302を採用することは、LPARデータセットを構成するメモリページの重複送信を低減または排除し、これによりLPAR移行を加速させるという利点を有する。NC通信リンク302を採用することは、さらに、移行中のLPARのアプリケーション412に対して予測可能な応答時間を提供するという利点もある。
【0036】
ここで図5を参照すると、一実施形態による例示的なページテーブルエントリ(PTE)212が図示されている。この例では、PTE212は、PTE212の内容が有効であり、したがってメモリページ209の関連する1つにおいて仮想アドレスを実アドレスに変換する際に使用可能であるか否かを示す有効フィールド502を含む。さらに、PTE212は、関連するメモリページ209のベースストレージ位置に割り当てられた仮想アドレスおよび実アドレスをそれぞれ指定する仮想アドレス(VA)フィールド504および実アドレス(RA)フィールド506を含む。PTE212はまた、関連するメモリページ209の1つ以上の属性を示す1つ以上のページプロテクションフィールドを含む。例えば、図示された実施形態では、ページプロテクションフィールドは、リード(R)フィールド508およびリードライト(RW)フィールド510をそれぞれ含み、代替的に、関連するメモリページ209が読み取り専用であるか、読み取りおよび書き込みの両方のアクセスの対象となるかを示している。以下、R=1、RW=0のフィールド値は、関連するメモリページ209がリードオンリーメモリページであることを示し、R=0、RW=1のフィールド値は、関連するメモリページ209がリードライトメモリページであることを示しているとする。
【0037】
図示された実施形態では、PTE212は、ソースホスト100のシステムメモリ108からデスティネーションホスト100のシステムメモリ108への関連するメモリページ209の移行を管理するためにハイパーバイザー402によって利用され得る1以上の移行関連フィールドを追加的に含む。この実施形態では、これらの移行関連フィールドは、関連するメモリページ209がソースホスト100からデスティネーションホスト100にコピーされたかどうかを示すコピー(CP)フィールド512、関連するメモリページ209内のすべてのデータがクリーニングされた(すなわち、システムメモリ108内のメモリページのイメージが任意のキャッシュされたデータと一致するように、すべての変更されたデータがキャッシュメモリからシステムメモリ108に書き込まれた)かどうかを示すクリーニング(CL)フィールド514、およびPTE212が移行された(すなわち、デスティネーションホスト100のシステムメモリ108に存在する)が認証されなかったかどうかを示す移行(MI)フィールド516を含む。PTE212における移行関連フィールド512~516の実装は設計上の選択であり、他の実施形態では、PTE212からこれらのフィールドを省略し、代わりにLPARデータセットの移行を管理するために1つ以上の他のデータ構造を利用してもよいことを理解されたい。
【0038】
ここで図6を参照すると、例示的なホストデータ処理システム100の様々なメモリアクセス要求が描かれている。図6において、ホストデータ処理システム100のコア200(例えば、ホストデータ処理システム100a)は、例えばアプリケーション412のユーザレベルの命令を第1のハードウェアスレッドで実行し、ハイパーバイザー402の命令を第2のハードウェアスレッドで実行する。第1のハードウェアスレッドにおけるユーザレベルの命令の実行は、メモリアクセス要求602を生成し、その各々は、仮想アドレス空間606においてアクセスすべきそれぞれのターゲット仮想(論理)アドレス(例えば、仮想アドレス610又は612)を指定する。上で説明したように、コア200のMMU204は、PTE212によって提供されるアドレス変換に基づいて、ターゲット仮想アドレス610、612のそれぞれを実アドレス空間608内のそれぞれの実アドレス614又は616に変換する。この例では、実アドレス614は、ローカルメモリコントローラ106が責任を負うホストデータ処理システム100aのシステムメモリ108内のストレージ位置を識別する。対照的に、実アドレス616は、NCリンクコントローラ220が責任を負うホストデータ処理システム100bのシステムメモリ108内のストレージ位置を識別する。したがって、ホストデータ処理システム100aのシステムファブリック上で送信されるメモリアクセス要求は、ホストデータ処理システム100a、100bのハイパーバイザー402による実アドレス割り当てに応じて、ローカルシステムメモリ108内のストレージ位置または別のホストデータ処理システム100b(ホストデータ処理システム100aとは非コヒーレント)のリモートシステムメモリ108内のストレージ位置へのアクセスを開始できる。
【0039】
少なくともいくつかの実施形態では、ハイパーバイザー402のメモリアクセス要求は、ユーザレベルのメモリアクセス要求602のターゲットアドレスに適用される同じアドレス変換を受ける必要はない。例えば、図6は、コア200の第2のハードウェアスレッドで実行されるハイパーバイザー402の命令が、メモリアクセス要求604を生成することもあることをさらに示している。しかし、この場合、メモリアクセス要求604は、実アドレス空間608の実アドレス614、616を直接指定する。その結果、ホストデータ処理システム100aのハイパーバイザー402は、PTE212に記録された仮想-実アドレス変換を使用せずに、ホストデータ処理システム100aのローカルシステムメモリ108内のストレージ位置およびホストデータ処理システム100bのリモートシステムメモリ108内のストレージ位置にアクセスできる。
【0040】
次に図7を参照すると、一実施形態による、ホストデータ処理システム100a、100bの一方が非コヒーレント通信リンク302を介して他のホスト100aまたは100bのシステムメモリ108にデータを書き込むことができる例示的な書き込みプリミティブ700が図示されている。書き込みプリミティブ700は、ハイパーバイザー402、OS410、またはアプリケーション412の命令シーケンスの一部を形成し得る。
【0041】
示されるように、書き込みプリミティブ700は、データグラニュールをメモリに格納する第1のストアオペレーション702を含む。図9は、このストアオペレーションの例示的な実施形態のハイレベル論理フローチャートを提供する。この例示的な実施形態では、図9に示されるストアオペレーションは、ブロック900で始まり、その後、ホスト100(以下、ホスト100aと仮定する)のコア200が、データグラニュールのメモリへの格納を指定するストア命令を実行することを示すブロック902に進む。適用可能な仮想-実アドレス変換の後、コア200は、データグラニュールを、他のホスト100(すなわち、ホスト100b)内のシステムメモリ108に割り当てられたターゲット実アドレスと関連して、そのキャッシュ階層(例えば、そのL2キャッシュ230内)に格納する。ホスト100a、100bは非コヒーレントであり、NC通信リンク302はホスト100a、100b間でコヒーレンスメッセージングを送信しないので、データグラニュールをホスト100aのキャッシュメモリに記憶するだけでは、データグラニュールとターゲット実アドレスとの間の関連性をホスト100bのハードウェアスレッドに可視化するのに不十分である。したがって、ストアオペレーションは、コア200がキャッシュクリーン命令を実行して、データグラニュールをコア200のキャッシュ階層からホスト100bの関連システムメモリ108に強制的にコピーすることをさらに含む(ブロック904)。その後、図9の処理はブロック906で終了する。
【0042】
図7に戻り、プログラム順のストアオペレーション702に続いて、書き込みプリミティブ700は、プログラム順のバリアオペレーション704に続くすべてのオペレーションの実行に先立って、プログラム順のバリアオペレーション704に先立つすべてのオペレーションの実行を命令するバリアオペレーション704を含む。プログラム順でバリアオペレーション704に続いて書き込みプリミティブ700が含むのは、第2のストアオペレーション706である。ストアオペレーション706は、新しいデータグラニュールがホスト100bのシステムメモリ108に書き込まれたことを示すために、ホスト100aまたはホスト100bの任意のシステムメモリ108に存在するフラグ変数(ホスト100b上で実行する処理によってポーリングされ得る)を更新(例えば、1の値へ)する。フラグがホスト100b上に存在する場合、ストアオペレーション706は、図9を参照して上述したように実行され得る。
【0043】
次に図8を参照すると、一実施形態による、ホストデータ処理システム100a、100bの一方が非コヒーレント通信リンク302を介して他のホスト100a、100bのシステムメモリ108からデータを読み取ることができる例示的な読み取りプリミティブ800が描かれている。読み取りプリミティブ800は、ハイパーバイザー402、OS410、またはアプリケーション412の命令シーケンスの一部を形成し得る。
【0044】
示されるように、読み取りプリミティブ800は、メモリからフラグをロードする第1のロードオペレーション802を含む。図10は、このロードオペレーションの例示的な実施形態のハイレベル論理フローチャートを提供する。この実施形態では、ロードオペレーションはブロック1000で始まり、その後、ホスト100(以下、ホスト100aと仮定する)のコア200が、ロードされるデータグラニュール(例えば、フラグ)の実アドレスに関連するホスト100a内の任意のキャッシュされたデータが、ホスト100aのキャッシュから除去されてホスト100bの関連するメモリコントローラ106に書き戻されることを指定するフラッシュ命令を実行することを示すブロック1002に進む。ロードオペレーションは、その後、コア200が、ホスト100bの関連するシステムメモリ108からデータグラニュールをロードするロード命令を実行することをさらに含む(ブロック1004)。その後、図10の処理は、ブロック1006で終了する。
【0045】
図8に戻ると、ロードオペレーション802に続いて、ロードプリミティブ800は、ホスト100bからロードされたフラグの値を所定の値(例えば、1)と比較して、ロードデータのグラニュールが読み取られる準備ができているかどうかを決定する比較オペレーション804を含む。比較オペレーション804が、フラグの値がロードデータのグラニュールが読み取り可能な状態であることを示すと決定した場合、条件分岐オペレーション806は、ロードプリミティブ800の実行をロードオペレーション810に継続させる。ホスト100bのシステムメモリ108からデータグラニュールをロードするロードオペレーション810は、図10を参照して上述したように実行することができる。比較オペレーション804が、フラグの値がロードデータのグラニュールが読み取る準備ができていないことを示すと決定した場合、分岐オペレーション808は、ロードプリミティブ800の実行を、これまで説明したロードオペレーション802に分岐させて戻すようにする。
【0046】
図7~10を参照して上述したセマフォ通信は、相互に非コヒーレントであるホストデータ処理システム間の読み取りおよび書き込み通信をサポートするための複数の代替技術の1つに過ぎないことを当業者は理解するだろう。
【0047】
次に図11A~11Bを参照すると、一実施形態による、ソースホスト100がソースホスト100からデスティネーションホスト100にLPAR404を移行する例示的な方法のハイレベル論理フローチャートが図示されている。処理はブロック1100で始まり、ソースおよびデスティネーションホスト100(以下、それぞれホスト100aおよび100bとする)のハイパーバイザー402が、ホスト100a、100bのリソース(例えば、ハードウェアスレッド406、実メモリアドレス、メモリページ209など)のLPAR404への割り当てを交渉し、ホスト100a、110b間の通信に使用する特定のメモリページ209を確立するために互いに通信する様子を示すブロック1102に進む。少なくともいくつかの実施形態では、ソースホスト100aおよびデスティネーションホスト100bのハイパーバイザー402は、VIOS420を介してブロック1102で通信する。
【0048】
処理はブロック1102から、ソースホスト100aのハイパーバイザー402が、ホスト100aからホスト100bのシステムメモリ108の移行中のLPAR404のデータセットを備えるメモリページ408の全てをコピーし終えたか否かを決定していることを例示するブロック1104に進む。そうである場合、処理は、以下に説明するブロック1112に進む。しかしながら、ソースホスト100aのハイパーバイザー402が、ブロック1104において、ソースホスト100aからデスティネーションホスト100bへの移行中のLPARのデータセットを備えるメモリページ408のコピーが完了していないと決定した場合、処理はブロック1106で継続する。ブロック1106は、ソースホスト100aのハイパーバイザー402が、ソースホスト100aからデスティネーションホスト100bへの移行中のLPAR404の状態の移行を開始するかどうかを決定することを示す。ハイパーバイザー402は、データセットの全てまたは一部が移行される前に移行中のLPAR404の状態を移行することを決定してもよく、または移行中のLPAR404のデータセットの全てがデスティネーションホスト100bにコピーされるまで移行中のLPAR404の状態を移行することを待ってもよいことに留意されたい。一例として、ハイパーバイザー402は、最も頻繁に(または最も最近に)アクセスされたメモリページ408であるメモリページ408のサブセット内のすべてのメモリページ408が移行された後、移行中のLPAR404の状態を移行するようにブロック1106で決定してもよい。ブロック1106での肯定的な決定に応答して、処理はブロック1106からブロック1112に進む。ブロック1106での否定的な決定に応答して、処理はブロック1108に進む。
【0049】
ブロック1108において、ソースホスト100aのハイパーバイザー402は、移行中のLPAR404のデータセット内の1つ以上のメモリページ408を、デスティネーションホスト100bの少なくとも1つのシステムメモリ108にコピーする。少なくともいくつかの実施形態では、ブロック1108におけるメモリページ408のコピーは、図13を参照して以下に説明する処理に従って実行することができる。メモリページ408のコピーは、連続する実アドレスシーケンスへの複数のストアプリミティブの実行を必要とする場合があることを理解されたい。例えば、メモリページ408は4KBであってもよく、一方、ストアプリミティブによってコピーされる個々のデータグラニュールのサイズは128Bであってもよい。この例では、メモリページ408のコピーには、32回のストアプリミティブの実行が必要となる。ソースホスト100aからデスティネーションホスト100bに完全にコピーされた各メモリページ408について、ソースホスト100aのハイパーバイザー402は、ホスト100aのシステムメモリ108内の関連PTE212のCPフィールド512を設定して、メモリページ408がデスティネーションホスト100bにコピーされたことを示す(ブロック1110)。図11Aの処理は、ブロック1110からブロック1104に戻る。
【0050】
ブロック1112および以下のブロックにおいて、ソースホスト100aのハイパーバイザー402は、移行中のLPAR404の状態をソースホスト100aからデスティネーションホスト100bにコピーする。ブロック1112を具体的に参照すると、ソースホスト100aのハイパーバイザー402は、移行中のLPAR404のハードウェアスレッド406をその制御下に置く。さらに、ハイパーバイザー402は、移行中のLPAR404の各ハードウェアスレッド406の状態(例えば、実行コア200内のハードウェアスレッド406に関連するデータおよび制御レジスタの内容)を保存し、移行中のLPAR404のそのようなハードウェアスレッド状態のそれぞれをデスティネーションホスト100b内のシステムメモリ108に書き込む。ブロック1114で図示される移行中のLPAR404のハードウェアスレッドの状態のコピーは、図7および図9を参照して上述したように、書き込みプリミティブ700を利用するNC通信リンク302を介して実行できる。ブロック1116で、ソースホスト100aのハイパーバイザー402はまた、PTE212を無効にし(例えば、有効フィールド502を0にリセットし)、移行(MI)フィールド516を(例えば1に)設定することによって、移行中のLPAR404のデータセット内のメモリページ408に関連する各PTE212を更新する。ブロック1116はさらに、ハイパーバイザー402が、ソースホスト100aのアドレス変換構造206において無効化されたPTE212に対応する任意のエントリを無効化し、無効化されたPTEによって変換された実アドレスを参照するソースホスト100a内のあらゆるインフライトオペレーションがソースホスト100aのコア200から排出されるのを待つことを示している。その後、処理はページコネクタAを通過して図11Bのブロック1120に至る。
【0051】
破線図示のように、ブロック1120は、ソースホスト100aのハイパーバイザー402が、移行中のLPAR404のリードライトメモリページ408(すなわち、リードライトメモリページとしてそれらの関連PTE212のRWフィールド510によって識別されるもの)をソースホスト100aのキャッシュからフラッシュするかどうかを決定する選択的なステップである。ブロック1120での否定的な決定に応答して、またはソースホスト100がソースホスト100aのキャッシュを効率的にフラッシュする能力をサポートしない場合、処理は、以下に説明するブロック1126に進む。しかしながら、ハイパーバイザー402が、ブロック1120において、移行中のLPAR404のリードライトメモリページ408をソースホスト100aのキャッシュからフラッシュすると決定した場合、ハイパーバイザー402は、移行中のLPAR404のデータセットに属するすべての修正データをソースホスト100aのキャッシュからフラッシュする手順を実行する(ブロック1122)。いくつかの実施形態では、ブロック1122で描かれたエビクションは、ソースホスト100aのキャッシュからのすべての修正されたデータの一括フラッシュによって実行され得る。基礎となるメモリページ408が移行されたかどうかに応じて、ブロック1122で描写されるフラッシング処理は、ソースホスト100aのローカルシステムメモリ108またはデスティネーションホスト100bのシステムメモリ108に修正データを書き戻すことを伴う場合があることに留意されたい。さらにブロック1124でソースホスト100aのハイパーバイザー402は、すでにデスティネーションホスト100bに移行された移行中のLPAR404のすべてのリードライトメモリページ408について、ソースホスト100a上のPTE212をクリーニングとして(例えば、CLフィールド514を1へ設定することによって)更新する。ブロック1120-1124に示すように論理パーティション404のリードライトメモリページ408の一括フラッシュを実行することにより、リードライトメモリページ408の重複コピーを低減または排除し、移行中のLPAR404がデスティネーションホスト100b上で実行を開始した後のジッターを低減するという利点がある。さらに、移行中のLPAR404のリードライトメモリページ408の一括フラッシュは、移行中のLPAR404の各リードライトメモリページ408のフラッシュを個別に処理するソリューションよりも向上した性能を提供し得る。
【0052】
ここでブロック1126を参照すると、ソースホスト100aのハイパーバイザー402は、移行中のLPAR404のデータセットのメモリページ408内のアドレスを変換するPTE212をソースホスト100aからデスティネーションホスト100bへコピーする。ハイパーバイザー402は、次に、コピーおよびクリーニングの両方としてPTEフィールド512-514によって識別される、移行中のLPAR404のデータセット内の各リードライトメモリページのPTE212内のMIフィールド516をリセットし、コピーとしてPTEフィールド512によって識別される移行中のLPAR404のデータセット内の各リードオンリーメモリページのPTE212内のMIフィールド516をリセットする(ブロック1128)。ブロック1128に続いて、ソースホスト100aのハイパーバイザー402は、デスティネーションホスト100bが移行中のLPAR404のデータセット内の1つ以上の以前に移行されていないメモリページ408の移行を開始することによって、デスティネーションホスト100bのハイパーバイザー402からの「プル」要求のモニタリングを開始する(ブロック1130)。デスティネーションホスト100bのハイパーバイザー402が、移行中のLPAR404のデータセット内のメモリページをソースホスト100aからデスティネーションホスト100bのシステムメモリ108に「プル」し、ソースホスト100aのハイパーバイザー402がデスティネーションホスト100bの「プル」要求に応答することによる例示的処理はそれぞれ図16および17を参照して以下に説明する。
【0053】
オプションのブロック1132で示されるように、ソースホスト100aのハイパーバイザー402は、代替的または追加的に、ソースホスト100aが、ソースホスト100aから移行中のLPAR404のデータセット内の任意の残りの未移行および移行されたがクリーンではないメモリページ408をデスティネーションホスト100bのシステムメモリ108に「プッシュ」する処理を開始し得る。ソースホスト100aのハイパーバイザー402が、ソースホスト100aからの移行中のLPAR404のデータセット内のメモリページ408をデスティネーションホスト100bのシステムメモリ108に「プッシュ」し、デスティネーションホスト100bのハイパーバイザー402がソースホスト100aの「プッシュ」要求に応答する例示的処理を、それぞれ図18および19を参照して以下に説明する。ブロック1132に続いて(またはブロック1132が省略された場合はブロック1130に続いて)、図11Bの処理はブロック1134で終了する。
【0054】
次に図12を参照すると、一実施形態による、ソースホスト100aがLPAR404の移行中にページプロテクション更新を処理する例示的な方法のハイレベル論理フローチャートが描かれている。図12の処理はブロック1200で始まり、次にソースホスト100aのハイパーバイザー402が、移行中のLPAR404のメモリページ408のPTE212に対するページプロテクション更新が要求されているか否かを決定することを例示するブロック1202に進む。そうでない場合、処理はブロック1202を反復する。しかし、ハイパーバイザー402が、移行中のLPAR404のメモリページ408のPTE212へのページプロテクション更新が要求されていると決定した場合、処理はブロック1204に進む。
【0055】
ブロック1204は、ハイパーバイザー402が、更新されるべきPTE212が、関連するメモリページ408がリードライトページであることを現在示しているか否かを決定することを図示する(例えば、RWフィールド510はRW=1で設定される)。そうでない場合(例えば、Rフィールド508は、リードオンリーメモリページを示すためにR=1が設定される)、処理はハイパーバイザー402が他の処理を行うことを例示するブロック1212に進む。その後、図12の処理は、ブロック1214で終了する。
【0056】
ブロック1204に戻ると、ハイパーバイザー402が、更新されるべきPTE212が、関連するメモリページ408がリードライトメモリページであることを現在示していると決定することに応答して、ハイパーバイザー402は、更新されるべきPTE212のCPフィールド512を参照することによって、関連するメモリページ408がすでにデスティネーションホスト100bのシステムメモリ108に移行されているかどうかを追加的に決定する。そうである場合、ハイパーバイザー402は、メモリページ408のための任意の修正データをソースホスト100aのキャッシュからデスティネーションホスト100bのシステムメモリ108にフラッシュさせる1つ以上の命令を実行し(ブロック1208)、次に、例えばRフィールド508をリセットしRWフィールド510を設定することによって、メモリページ408のページプロテクション情報をリードライトからリードオンリーに更新する(ブロック1210)。プロテクションが更新されるべきメモリページ408の日付に対するあらゆるキャッシュされた修正をフラッシュすることによって、ソースホスト100aからデスティネーションホスト100bへのメモリページ408の追加のコピーが回避され得る。ハイパーバイザー402が、関連するメモリページ408がデスティネーションホストのシステムメモリ108に移行されていないとブロック1206で決定した場合、ハイパーバイザー402は、メモリページ408をフラッシュせずにブロック1210で示すようにページプロテクション情報を単に更新する。ブロック1210に続いて、図12の処理は、ブロック1214で終了する。
【0057】
ここで図13を参照すると、一実施形態による、ソースホスト100aが移行中のLPAR404のメモリページ408をデスティネーションホスト100bのシステムメモリ108にコピーする、例示的な方法のハイレベル論理フローチャートが図示されている。少なくともいくつかの実施形態では、図示された処理は、例えば、図11Aのブロック1108でソースホスト100aからデスティネーションホスト100bにコピーされたメモリページ408のうちの1つをコピーするために利用されることがある。
【0058】
図13の処理は、ブロック1300で始まり、次にソースホスト100aのハイパーバイザー402が、例えば、有効フィールド502を0にリセットすることによって、移行されるメモリページ408に関連するPTE212を無効にすることを示すブロック1302に進む。PTE212を無効にすることによってPTE212はアドレス変換に対して一時的にアクセス不能になり、したがって関連するメモリページ408がハイパーバイザー402にのみアクセス可能にさせる。ブロック1302はさらに、ハイパーバイザー402が、ソースホスト100aのアドレス変換構造206において無効化されたPTE212に対応する任意のエントリを無効化し、無効化されたPTEによって変換された実アドレスを参照するあらゆるインフライトオペレーションがソースホスト100aのコア200から排出されるのを待つことを示している。
【0059】
次にハイパーバイザー402は、メモリページ408をデスティネーションホスト100bのシステムメモリ108に割り当てられた実アドレスにコピーさせる命令をソースホスト100aの1つ以上のコア200によって実行させる(ブロック1304)。このコピー処理の一部として、ハイパーバイザー402は、ソースホスト100aのシステムメモリ108(ソース実アドレス範囲に存在する)からメモリページ408の既存のイメージをロードし、メモリページ408のイメージをデスティネーションホスト100bのシステムメモリ108内のストレージ位置を指定するデスティネーション実アドレス範囲に格納する。最適化として、いくつかの実施形態は、関連するデータをフェッチングすることなくソースホスト100aのキャッシュメモリにキャッシュラインを作成する(および任意に新しく作成されたキャッシュラインを所定の値(例えば、ゼロ)に初期化する)データキャッシュブロックゼロ(DCBZ)、データキャッシュブロックアロケート(DCBA)、または同様のキャッシュライン割り当て命令を使用してソースホスト100aのキャッシュメモリにデスティネーション実アドレス範囲に対応するキャッシュラインを割り当てる。これらのキャッシュライン割り当て命令は、簡便に、移行されるメモリページ408内の各キャッシュラインを反復する実行ループで実装することができる。このような実行ループでは、各キャッシュライン割り当て命令は、移行するメモリページ408の既存のイメージから新たに割り当てられたキャッシュラインにデータを格納する対応するストア命令の前に、かつ時間的に近接して実行されるように制約されるのが好ましい。この実行制約により、デスティネーション実アドレス範囲内のキャッシュラインを更新するストア命令が、キャッシュミスおよびデスティネーションホスト100bからキャッシュラインをフェッチングする付随するレイテンシを回避する可能性が高くなる。言い換えれば、説明した最適化は、移行メモリページ408からのデータでキャッシュラインを上書きするためにのみ、デスティネーション実アドレス範囲内のデータの各キャッシュラインのコピーをデスティネーションホスト100bからフェッチングするという高いレイテンシを回避する利点を有する。
【0060】
ブロック1308において、ハイパーバイザー402は、例えば、関連するPTE212のRWフィールド510を調べることによって、メモリページ408がリードライトメモリページであるか否かを決定する。メモリページ408がリードライトメモリページであるとブロック1308で決定することに応答して、処理は、以下に説明されるブロック1312に進む。しかし、ハイパーバイザー402がメモリページ408はリードオンリーメモリページであると決定した場合(例えば、Rフィールド508がR=1に設定されている)、ハイパーバイザー402は、リードオンリーメモリページ408のデータがソースホスト100aのキャッシュからNC通信リンク302を介してデスティネーションホスト100bのシステムメモリ108に書き込まれるようにソースホスト100aの1以上のコア200によって1以上のクリーンまたはフラッシュ命令を実行させる(ブロック1310)。ブロック1308またはブロック1310に続いて、ソースホスト100aのハイパーバイザー402は、PTE212のRAフィールド506でメモリページ408に対して指定された実アドレス(RA)を更新して、デスティネーションホスト100bのシステムメモリ108のメモリページ408に対する新しい実アドレスを指定し、次にソースホスト100a上のPTE212の有効フィールド502を有効状態(例えばV=1)に更新してアドレス変換に再度PTE212をアクセス可能にする(ブロック1312)。その後、図13の処理は、ブロック1314で終了する。
【0061】
次に図14を参照すると、一実施形態による、デスティネーションホスト100bが移行中のLPAR404を受信してアクティブ化する例示的な方法のハイレベル論理フローチャートが描かれている。図14の処理は、ソースホスト100a上で実行される図11A~11Bの先に説明した処理と協働する。
【0062】
図14の処理はブロック1400で始まり、その後、デスティネーションホスト100bのハイパーバイザー402がソースホスト100a上で実行する、ハイパーバイザー402と通信して、LPAR404へのホスト100a、100bのリソース(例えばハードウェアスレッド406、実メモリアドレス、メモリページ209など)の割り当てを交渉し、ホスト100a、110b間の通信で使用するための特定のメモリページ209を確立することを示すブロック1402に進む。少なくともいくつかの実施形態では、ソースホスト100aおよびデスティネーションホスト100bのハイパーバイザー402は、ブロック1402でVIOS420を介して通信する。
【0063】
処理はブロック1402から、デスティネーションホスト100bのハイパーバイザー402がNC通信リンク302を介してソースホスト100aから移行中のLPAR404の状態を受信し、LPARの状態をバッファリングすることを図示するブロック1404に進む。LPARの状態は、図11Aのブロック1114で、ソースホスト100aによって送信される。さらに、ブロック1406において、デスティネーションホスト100bのハイパーバイザー402は、NC通信リンク302を介してソースホスト100aから移行中のLPAR404のメモリページ408に対するPTE212を受信してバッファリングする。これらのPTE212は、図11Bのブロック1126でソースホスト100aによって送信される。
【0064】
ブロック1408は、デスティネーションホスト100bのハイパーバイザー402が、デスティネーションホスト100bのシステムメモリ108内のページフレームテーブル210に、移行中のLPAR404のメモリページ408に関連するPTE212を確立することを示す。デスティネーションホスト100bに既にコピーされたものとしてその関連するPTE212によって示される各リードオンリーメモリページ408について(例えば、Rフィールド508はR=1に設定され、CPフィールド512はCP=1に設定される)、およびデスティネーションホスト100bにコピーされクリーニングされたとしてその関連するPTE212によって示される各リードライトメモリページ408について(例えば、RWフィールド510はRW=1に設定され、CLフィールド514はCL=1に設定される)、デスティネーションホスト100bのハイパーバイザー402は、デスティネーションホスト100bのシステムメモリ108内のメモリページ408のストレージ位置を反映するために実アドレスフィールド506を更新し、移行フィールド516をリセット(例えばMI=0)し、有効フィールド502を設定(例えばV=1)する。デスティネーションホスト100bのハイパーバイザー402は、デスティネーションホスト100b上の仮想-実アドレス変換のためにこれらのPTE212を利用可能にする。
【0065】
ブロック1410で、デスティネーションホスト100bのハイパーバイザー402は、NC通信リンク302を介して、移行中のLPAR404の任意の残りの未移行のメモリページ408をソースホスト100aからデスティネーションホスト100bのシステムメモリ108に「プル」する処理を開始する。デスティネーションホスト100bがソースホスト100aからそのようなメモリページ408をプルする例示的な処理を、図16を参照して以下に説明する。さらに、ブロック1412において、デスティネーションホスト100bのハイパーバイザー402は、デスティネーションホスト100bのハイパーバイザー402が、ソースホスト100aからデスティネーションホスト100bのシステムメモリ108に「プッシュ」された移行中のLPAR404の任意の残りの未移行のメモリページ408をNC通信リンク302を介して受け取る処理を選択的に開始する。デスティネーションホスト100bがソースホスト100aからそのようなメモリページ408を受け取る例示的な処理を、図18を参照して以下に説明する。デスティネーションホスト100bのハイパーバイザー402は、デスティネーションホスト100bの1つ以上のコア200に移行中のLPAR404の様々なハードウェアスレッド406の状態をロードし(ブロック1414)、移行中のLPAR404のハードウェアスレッド406を解放して実行を開始する(ブロック1416)ことによりデスティネーションホスト100b上での移行中のLPAR404の実行を開始する。その後、図14の処理は、ブロック1416で終了する。
【0066】
次に図15を参照すると、一実施形態による移行中のLPAR404の移行中にデスティネーションホスト100bがページフォルトを処理する例示的な方法のハイレベル論理フローチャートが図示されている。図15の処理は、ページフォルトを発生させるデスティネーションホスト100bのメモリアクセス要求に応答して、ブロック1500で開始する。ページフォルトに応答して、処理はブロック1500から、メモリアクセス要求のターゲット実アドレスを含むメモリページ209のPTE212を参照して、メモリページ209が移行中のLPAR404のメモリページ408の1つであることを示す移行フィールド516が設定されている(例えば、MI=1)か否かを決定するデスティネーションホスト100b上で実行するページフォルトハンドラルーチンを例示するブロック1502に進む。されていない場合(例えば、MI=0)、ページフォルトハンドラは、ブロック1504で描かれるように、他の、潜在的に従来の処理を使用して、ページフォルトを処理する。ブロック1504に続いて、図15の処理は、ブロック1518で終了する。
【0067】
再びブロック1502を参照すると、移行フィールド516が設定されているという決定に応答して、デスティネーションホスト100bのハイパーバイザー402は、ページフォルトが発生したメモリページ408のロックを取得する(ブロック1506)。デスティネーションホスト100bのハイパーバイザー402はその後、ブロック1508で、ロックを取得する処理中にメモリページ408のPTE212の移行フィールド516がリセットされた(例えば、MI=0)かどうか決定する。そうである場合、処理は、以下に説明するブロック1516に進む。しかし、移行フィールド516がリセットされなかった場合、ハイパーバイザー402は、メモリページ408をソースホスト100aのシステムメモリ108からデスティネーションホスト100bのシステムメモリ108にプルするために、NC通信リンク302を介してソースホスト100aに1以上のメモリアクセス要求を発する(ブロック1512)。メモリページ408のPTE212において、デスティネーションホスト100bのハイパーバイザー402は、有効フィールド502を設定(V=1)し、移行フィールド516をリセット(MI=0)し、リードフィールド508およびリードライトフィールド510において適切なページプロテクションを設定し、実アドレスフィールド506をデスティネーションホスト100bのシステムメモリ108内のメモリページ408の新しい実アドレスに更新する(ブロック1514)。ブロック1514に続いて、デスティネーションホスト100bのハイパーバイザー402は、メモリページ408のロックを解放する(ブロック1516)。その後、処理はブロック1504に進み、これは、ページフォルトハンドラが、他の、潜在的に従来の処理でページフォルトの処理を完了することを示す。その後、図15の処理は、ブロック1518で終了する。
【0068】
ここで図16を参照すると、一実施形態による、デスティネーションホスト100bがソースホスト100aから移行中のLPAR404のメモリページを「プル」する例示的な方法のハイレベル論理フローチャートである。この処理は、例えば、図14のブロック1410で実行することができる。
【0069】
図16の処理はブロック1600で始まり、その後、デスティネーションホスト100bのハイパーバイザー402が、移行中のLPAR404のすべてのメモリページ408のPTE212において移行フィールド516がリセットされている(例えば、MI=0)か否かを決定することを例示するブロック1602に進む。そうである場合、ソースホスト100aからデスティネーションホスト100bへの移行中のLPAR404のデータセットの移行は完了する。したがって、図16の処理は、ブロック1604で終了する。
【0070】
しかしながら、デスティネーションホスト100bのハイパーバイザー402が、ブロック1602において、少なくとも1つのメモリページ408がデスティネーションホスト100bに移行されるために残っていると決定した場合、デスティネーションホスト100bのハイパーバイザー402は、(そのPTE212の移行フィールド516がセットされていることによって示されるように)移行中のLPAR404のデータセット内の未移行のメモリページ408の1つを選択してメモリページ408に対してロックを取得する(ブロック1606)。デスティネーションホスト100bのハイパーバイザー402は、その後、ブロック1608において、選択されたメモリページ408のPTE212の移行フィールド516が、ロックを取得する処理中にリセットされた(例えば、MI=0)か否かを決定する。そうである場合、処理は、以下に説明するブロック1610に進む。しかし、移行フィールド516がリセットされていない場合、ハイパーバイザー402は、メモリページ408をソースホスト100aのシステムメモリ108からデスティネーションホスト100bのシステムメモリ108にプルするために、NC通信リンク302を介してソースホスト100aに1以上のメモリアクセス要求を発する(ブロック1612)。デスティネーションホスト100b上のメモリページ408に対するPTE212において、デスティネーションホスト100bのハイパーバイザー402は、有効フィールド502を設定(例えば、V=1)し、移行フィールド516をリセット(例えば、MI=0)し、リードフィールド508およびリードライトフィールド510においてメモリページ408に対する適切なページプロテクションを設定し、実アドレスフィールド506をデスティネーションホスト100bのシステムメモリ108内のメモリページ408の新しい実アドレスに更新する(ブロック1614)。ブロック1614に続いて、デスティネーションホスト100bのハイパーバイザー402は、メモリページ408のロックを解放する(ブロック1610)。その後、図16の処理は、説明したブロック1602に戻る。
【0071】
次に図17を参照すると、一実施形態による、ソースホスト100aがデスティネーションホスト100bからの移行中のLPAR408のメモリページ408に対するプル要求を処理する例示的な方法のハイレベル論理フローチャートが図示されている。図示された処理は、例えば、図11Bのブロック1130で実行され得る。
【0072】
図17の処理はブロック1700で始まり、その後、ソースホスト100aのハイパーバイザー402が、移行中のLPAR404のデータセット内のすべてのメモリページ408についてソースホスト100a上のPTE212において移行フィールド516がリセットされた(例えば、MI=0)かどうかを決定していることを示すブロック1702に進む。そうである場合、ソースホスト100aからデスティネーションホスト100bへの移行中のLPAR404のデータセットの移行は完了する。従って、図17の処理は、ブロック1704で終了する。
【0073】
しかし、ソースホスト100aのハイパーバイザー402が、ブロック1702で、ソースホスト100aからデスティネーションホスト100bに移行される少なくとも1つのメモリページ408が残っていると決定した場合、ソースホスト100aのハイパーバイザー402は、ブロック1706で、移行中のLPAR404のデータセット内のメモリページ408に対するプル要求がNC通信リンク302を介してデスティネーションホスト100bから受信されているか否かを決定する。されていない場合、図17の処理は、説明したブロック1702に戻る。しかし、移行中のLPAR404のデータセット内のメモリページ408に対するプル要求が受信された場合、ソースホスト100aのハイパーバイザー402は、要求されたメモリページ408をNC通信リンク302を介してデスティネーションホスト100bのシステムメモリ108に送信することによってデスティネーションホスト100bのプル要求に応答する(ブロック1708)。
【0074】
ブロック1710において、ソースホスト100aのハイパーバイザー402は、ブロック1708で移行されたメモリページ408が、ソースホスト100a上の関連するPTE212のリードライトフィールド510においてリードライトメモリページとして識別されているか否かを決定する。そうでない場合(例えば、RW=0)、処理は、以下に説明するブロック1714に進む。しかし、メモリページ408に対するPTE212のリードライトフィールド510がリードライトページを示すように設定されている場合(例えば、RW=1)、ソースホスト100aのハイパーバイザー402は、ソースホスト100aのキャッシュからメモリページ408のすべてのグラニュールをフラッシュする(ブロック1712)。ソースホスト100aは、ソースホスト100aのシステムメモリ108内のメモリページ408のPTE212内の移行フィールド516を追加的にリセット(例えば、MI=0)する(ブロック1714)。ブロック1714に続いて、ソースホスト100aのハイパーバイザー402は、メモリページ408がデスティネーションホスト100bのシステムメモリ108に移行されたことを、例えばフラグを設定することによってデスティネーションホスト100bにシグナリングする(ブロック1716)。その後、図17の処理は、説明したブロック1702に戻る。
【0075】
次に図18を参照すると、一実施形態による、ソースホスト100aが移行中のLPAR404のメモリページ408をデスティネーションホスト100bに「プッシュ」する例示的な方法のハイレベル論理フローチャートが描かれている。この処理は、例えば、図11Bのブロック1132で実行することができる。
【0076】
図18の処理はブロック1800で始まり、その後、ソースホスト100aのハイパーバイザー402が、ソースホスト100a上の移行中のLPAR404のすべてのメモリページ408のPTE212において移行フィールド516がリセットされた(例えば、MI=0)かどうかを決定することを示すブロック1802に進む。そうである場合、ソースホスト100aからデスティネーションホスト100bへの移行中のLPAR404のデータセットの移行は完了する。従って、図18の処理は、ブロック1804で終了する。
【0077】
しかしながら、ソースホスト100aのハイパーバイザー402が、ブロック1802において、少なくとも1つのメモリページ408がデスティネーションホスト100bに移行されるために残っていると決定した場合、ソースホスト100aのハイパーバイザー402は、(そのPTE212の移行フィールド516が設定されていることによって示されるように)移行中のLPAR404のデータセット内の未移行のメモリページ408の1つを選択してメモリページ408に対してロックを取得する(ブロック1806)。ソースホスト100aのハイパーバイザー402は、その後、ブロック1808において、選択されたメモリページ408のPTE212の移行フィールド516が、ロックが取得された間にリセットされた(例えば、MI=0)かどうかを決定する。そうである場合、処理は、以下に説明するブロック1810に進む。しかし、移行フィールド516がリセットされていない場合、ソースホスト100aのハイパーバイザー402は、ソースホスト100aのシステムメモリ108からデスティネーションホスト100bのシステムメモリ108にメモリページ408をプッシュするために、NC通信リンク302を介して1以上のメモリアクセス要求をデスティネーションホスト100bに発する(ブロック1812)。
【0078】
ブロック1814において、ソースホスト100aのハイパーバイザー402は、ブロック1812で移行されたメモリページ408が、ソースホスト100aのシステムメモリ108内のページフレームテーブル210の関連するPTE212のリードライトフィールド510においてリードライトメモリページとして識別されているか否かを決定する。そうでない場合(例えば、RW=0)、処理は、以下に説明するブロック1818に進む。しかし、メモリページ408のPTE212のリードライトフィールド510がリードライトページを示すように設定されている場合(例えば、RW=1)、ソースホスト100aのハイパーバイザー402は、ソースホスト100aのキャッシュからデスティネーションホスト100bのシステムメモリ108にメモリページ408の全てのグラニュールをフラッシュする(ブロック1816)。ソースホスト100aは、ソースホスト100aのシステムメモリ108内のメモリページ408のPTE212内の移行フィールド516を追加的にリセット(例えば、MI=0)する(ブロック1818)。
【0079】
ブロック1820で、ソースホスト100aのハイパーバイザー402は、NC通信リンク302を介して、デスティネーションホスト100b上のメモリページ408のPTE212を更新する要求をデスティネーションホスト100bに対して送信する。PTE更新要求に応答して、デスティネーションホスト100bのハイパーバイザー402は、有効フィールド502を設定(例えば、V=1)し、移行フィールド516をリセット(例えば、MI=0)し、実アドレスフィールド506をデスティネーションホスト100bのシステムメモリ108内のメモリページ408の新しい実アドレスに更新する。ブロック1820に続いて、ソースホスト100aのハイパーバイザー402は、PTE212の更新を確認するNC通信リンク302を介したデスティネーションホスト100bからの確認メッセージについてモニタリングする(ブロック1822)。確認メッセージの受信に応答して、ソースホスト100aは、メモリページ408のロックを解放する(ブロック1810)。その後、図18の処理は、説明したブロック1802に戻る。
【0080】
次に図19を参照すると、一実施形態による、デスティネーションホスト100bがソースホスト100aから受信した移行中のLPAR404のメモリページ408に対するプッシュ要求を処理する例示的な方法のハイレベル論理フローチャートが図示されている。図示された処理は、例えば、図14のブロック1412で実行され得る。
【0081】
図19の処理は、ブロック1900で始まり、その後、デスティネーションホスト100bのハイパーバイザー402が、移行中のLPAR404のデータセット内のすべてのメモリページ408についてソースホスト100a上のPTE212において移行フィールド516がリセットされている(例えば、MI=0)かどうかを決定することを示すブロック1902に進む。そうである場合、ソースホスト100aからデスティネーションホスト100bへの移行中のLPAR404のデータセットの移行は完了する。したがって、図19の処理は、ブロック1904で終了する。
【0082】
しかし、デスティネーションホスト100bのハイパーバイザー402が、ブロック1902で、少なくとも1つのメモリページ408がソースホスト100aからデスティネーションホスト100bに移行されるために残っていると決定した場合、デスティネーションホスト100bのハイパーバイザー402は、ブロック1906で、ソースホスト100aからNC通信リンク302を介して、移行中のLPAR404のデータセット内のメモリページ408のPTE212への更新を要求するPTEの更新要求を受けているか否かを決定する。そうでない場合、図19の処理は説明したブロック1902に戻る。しかし、PTEの更新要求が受信された場合、デスティネーションホスト100bのハイパーバイザー402は、有効フィールド502を設定(例えば、V=1)し、移行フィールド516をリセット(例えば、MI=0)し、実アドレスフィールド506をデスティネーションホスト100bのシステムメモリ108内のメモリページ408の新しい実アドレスに更新することによってPTEの更新要求に対して応答する(ブロック1908)。デスティネーションホスト100bのハイパーバイザー402は、PTE212の更新を確認する確認メッセージをソースホスト100aに送信する(ブロック1910)。その後、図19の処理は、説明したブロック1902に戻る。
【0083】
次に図20を参照すると、例えば半導体ICの論理設計、シミュレーション、テスト、レイアウト、および製造において使用される例示的な設計フロー2000のブロック図が描かれている。設計フロー2000は、設計構造またはデバイスを処理して、本明細書に記載の設計構造もしくはデバイスまたはその両方の論理的または他の機能的に等価な表現を生成するための処理、機械もしくは機構またはその組み合わせを含む。設計フロー2000によって処理もしくは生成またはその両方がなされた設計構造は、データ処理システムで実行または他の方法で処理されたときに、ハードウェアコンポーネント、回路、デバイス、またはシステムの論理的、構造的、機械的、または他の機能的に同等の表現を生成するデータもしくは命令またはその両方を含むように、機械可読送信または記憶媒体に符号化することができる。機械には、回路、コンポーネント、デバイス、またはシステムの設計、製造、またはシミュレーションなど、IC設計処理で使用されるあらゆる機械が含まれるが、これらに限定されることはない。例えば、機械には、リソグラフィ装置、マスクを生成するための機械もしくは装置又はその両方(電子ビーム描画装置など)、設計構造をシミュレーションするためのコンピュータまたは装置、製造またはテスト処理で使用される任意の装置、または設計構造の機能的に等価な表現を任意の媒体にプログラミングするための任意の機械(プログラマブルゲートアレイをプログラミングする機械など)、が含まれ得る。
【0084】
設計フロー2000は、設計される表現のタイプに応じて異なる場合がある。例えば、特定用途向けIC(ASIC)を構築するための設計フロー2000は、標準コンポーネントを設計するための設計フロー2000と異なる場合があり、また、設計をプログラマブルアレイ、例えばAltera(登録商標)社やXilinx(登録商標)社が提供するプログラマブルゲートアレイ(PGA)またはフィールドプログラマブルゲートアレイ(FPGA)に簡略化する設計フロー2000とは異なる場合もある。
【0085】
図20は、好ましくは設計処理2000によって処理される入力設計構造2020を含む複数のそのような設計構造を示す。設計構造2020は、ハードウェアデバイスの論理的に等価な機能表現を生成するために設計処理2000によって生成および処理される論理シミュレーション設計構造であり得る。設計構造2020はまた、もしくは代替的に、設計処理2000によって処理されるときにハードウェアデバイスの物理的構造の機能的表現を生成するデータもしくはプログラム命令またはその両方を含んでもよい。機能的もしくは構造的又はその両方の設計特徴を表すかどうかにかかわらず、設計構造2020は、コア開発者または設計者によって実装されるような電子コンピュータ支援設計(ECAD)を使用して生成されることがある。機械可読データ送信、ゲートアレイ、または記憶媒体上に符号化されると、設計構造2020は、設計処理2000内の1つ以上のハードウェアもしくはソフトウェアモジュールまたはその両方によってアクセスおよび処理されて、本明細書に示されるような電子コンポーネント、回路、電子または論理モジュール、装置、デバイス、またはシステムをシミュレーションするか、さもなければ機能的に表現してもよい。このように、設計構造2020は、設計またはシミュレーションデータ処理システムによって処理されると、回路またはハードウェア論理設計の他のレベルを機能的にシミュレートするか、そうでなければ表す、人間もしくは機械可読ソースコード、コンパイル構造、およびコンピュータ実行可能コード構造またはその組み合わせを含むファイルまたは他のデータ構造を含み得る。このようなデータ構造は、ハードウェア記述言語(HDL)設計エンティティ、またはVerilogやVHDLなどの低レベルHDL設計言語、もしくはCやC++などのハイレベル設計言語、またはその両方に準拠する、もしくは互換性のある、またはその両方である他のデータ構造を含む場合がある。
【0086】
設計処理2000は、好ましくは、設計構造2020などの設計構造を含み得るネットリスト2080を生成するために、本明細書に示すコンポーネント、回路、デバイス、または論理構造の設計またはシミュレーション機能同等物を合成、翻訳、または他の方法で処理するハードウェアもしくはソフトウェアモジュールまたはその両方を採用および組み入れる。ネットリスト2080は、例えば、集積回路設計における他の要素および回路への接続を記述するワイヤ、ディスクリート構成要素、論理ゲート、制御回路、I/Oデバイス、モデルなどのリストを表すコンパイルまたは他の方法で処理されたデータ構造を含んでもよい。ネットリスト2080は、デバイスの設計仕様およびパラメータに応じてネットリスト2080が1回以上再合成される反復処理を使用して合成され得る。本明細書で説明する他の設計構造タイプと同様に、ネットリスト2080は、機械可読記憶媒体に記録されるか、またはプログラマブルゲートアレイにプログラムされ得る。媒体は、磁気または光ディスクドライブ、プログラマブルゲートアレイ、コンパクトフラッシュ(登録商標)、または他のフラッシュメモリのような不揮発性記憶媒体であってもよい。さらに、または代替的に、媒体は、システムまたはキャッシュメモリ、またはバッファスペースであってもよい。
【0087】
設計処理2000は、ネットリスト2080を含む様々な入力データ構造タイプを処理するためのハードウェアおよびソフトウェアモジュールを含み得る。そのようなデータ構造タイプは、例えば、ライブラリ要素2030内に存在してもよく、所定の製造技術(例えば、異なる技術ノード、32nm、45nm、90nmなど)に対して、モデル、レイアウト、および記号表現を含む、一般に使用される素子、回路、およびデバイスのセットを含む。データ構造タイプは、設計仕様2040、特性データ2050、検証データ2060、設計ルール2070、および入力テストパターン、出力テスト結果、および他のテスト情報を含むことができるテストデータファイル2085をさらに含むことができる。設計処理2000は、例えば、応力解析、熱解析、機械的事象シミュレーション、鋳造、成形、およびダイプレス成形などのオペレーションのための処理シミュレーションなどの標準機械設計処理をさらに含み得る。機械設計の技術分野における通常の技術者は、本発明の範囲および精神から逸脱することなく、設計処理2000で使用される可能な機械設計ツールおよびアプリケーションの範囲を理解できる。設計処理2000は、タイミング解析、検証、設計ルールチェック、配置および経路オペレーションなどの標準的な回路設計処理を実行するためのモジュールも含み得る。
【0088】
設計処理2000は、HDLコンパイラおよびシミュレーションモデル構築ツールなどの論理設計および物理設計ツールを採用および組み込み、設計構造2020を、任意の追加の機械設計またはデータ(該当する場合)と共に描写されたサポートデータ構造の一部またはすべてと共に処理し、第2の設計構造2090を生成する。設計構造2090は、機械的なデバイスおよび構造のデータ(例えば、IGES、DXF、Parasolid XT、JT、DRG、またはそのような機械的設計構造を格納またはレンダリングするための任意の他の適切な形式で格納される情報)の交換に使用されるデータ形式の記憶媒体またはプログラマブルゲートアレイに存在する。設計構造2020と同様に、設計構造2090は、好ましくは、送信またはデータ記憶媒体上に存在し、ECADシステムによって処理されると、本発明の実施形態の1つ以上の論理的またはその他の機能的に等価な形態を生成する1つ以上のファイル、データ構造、または他のコンピュータエンコードデータまたは命令を含む。一実施形態では、設計構造2090は、本明細書に示されるデバイスを機能的にシミュレートするコンパイルされた実行可能なHDLシミュレーションモデルを含み得る。
【0089】
設計構造2090はまた、集積回路のレイアウトデータもしくはシンボリックデータ形式またはその両方の交換に使用されるデータ形式(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、またはそのような設計データ構造を格納するための任意の他の適切な形式に格納される情報)を採用してもよい。設計構造2090は、例えば、シンボリックデータ、マップファイル、テストデータファイル、設計内容ファイル、製造データ、レイアウトパラメータ、ワイヤ、金属のレベル、ビア、形状、製造ラインを通る配線用データ、および製造業者または他の設計者もしくは開発者が、上記および本明細書に示されるデバイスまたは構造体を製造するために必要とする他のあらゆるデータなどの情報を含んでもよい。設計構造2090は、その後、例えば、設計構造2090がテープアウトに進む、製造にリリースされる、マスクハウスにリリースされる、別のデザインハウスに送られる、顧客に送り返される、などの段階2095に進むことができる。
【0090】
これまで説明してきたように、少なくとも1つの実施形態では、論理パーティションが移行されるソースホストにサービスを提供するデータ処理システムは、システムファブリックと、システムメモリと、システムファブリックに通信可能に結合されているシステムメモリのメモリコントローラと、システムファブリックに通信可能に結合され、通信リンクを介してソースホストに対して非コヒーレントであるデスティネーションホストに通信可能に結合されるように構成されたリンクコントローラとを含み得る。ソースホストは、さらに、システムファブリックに通信可能に結合された複数の処理ユニットを含む。複数の処理ユニットは、例えば、ハイパーバイザーまたは仮想マシンモニタによって、システムメモリに存在するデータセットを有する論理パーティションを実行し、通信リンクを介して論理パーティションをデスティネーションホストに移行するように構成される。論理パーティションの移行は、通信リンクを介して、ソースホスト上で実行される論理パーティションのデータセットをソースホストのシステムメモリからデスティネーションホストのシステムメモリに移行することを含む。データセットの少なくとも一部を移行した後、論理パーティションがデスティネーションホスト上で実行されるように、通信リンクを介して、論理パーティションの状態をソースホストからデスティネーションホストへ移行する。この移行技術により、移行のレイテンシが短縮され、論理パーティションのジッターが改善される。
【0091】
先に説明した例では、ソースホストは、実アドレスを使って、メモリページがコピーされるべきデスティネーションホストのシステムメモリ内のストレージ位置を特定する。当業者は、他の実施例において、デスティネーションホストのシステムメモリ内のストレージ位置は、デスティネーションホストの実アドレス空間内の実アドレスを得るために1層以上のアドレス変換を受ける有効アドレスまたは仮想アドレスを利用して代替的に指定され得ることを理解するであろう。
【0092】
様々な実施形態を特に示し、説明したが、添付の特許請求の範囲から逸脱することなく、形態および詳細における様々な変更をそこで行うことができ、これらの代替実施例はすべて添付の特許請求の範囲に入ることが当業者には理解されよう。
【0093】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、およびオペレーションを示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替的な実装では、ブロックに記された機能は、図に記された順序から外れて発生することがある。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されるかもしれず、ブロックは、関係する機能に応じて、時には逆の順序で実行されるかもしれない。ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または行為を実行する、または特殊な目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特殊な目的のハードウェアベースのシステムによって実施できることにも注目されるであろう。
【0094】
本発明の機能を指示するプログラムコードを実行するコンピュータシステムに関して態様を説明してきたが、本発明は、代替的に、データ処理システムのプロセッサによって処理され、データ処理システムに説明した機能を実行させることができるプログラムコードを記憶するコンピュータ可読記憶装置を含むプログラム製品として実施され得ることを理解されたい。コンピュータ可読記憶装置は、揮発性または不揮発性メモリ、光ディスクまたは磁気ディスクなどを含むことができるが、それ自体の伝播信号、それ自体の送信媒体、およびそれ自体のエネルギーの形態などの法定外の主題を除外する。
【0095】
一例として、プログラム製品は、データ処理システム上で実行または他の方法で処理されたときに、本明細書に開示されたハードウェアコンポーネント、回路、デバイス、またはシステムの論理的、構造的、または他の機能的に同等の表現(シミュレーションモデルを含む)を生成するデータもしくは命令またはその両方を含むことができる。このようなデータもしくは命令またはその両方は、ハードウェア記述言語(HDL)設計エンティティ、またはVerilogやVHDLなどの低レベルHDL設計言語、もしくはCやC++などのハイレベル設計言語またはその両方に適合する、もしくは互換性を有する又はその両方の他のデータ構造を含むことができる。さらに、データもしくは命令またはその両方は、集積回路のレイアウトデータの交換に使用されるデータフォーマットもしくはシンボリックデータフォーマット又はその両方(例えば、GDSII(GDS2)、GL1、OASIS、マップファイル、またはそのような設計データ構造を格納するための任意の他の適切なフォーマットで格納される情報)を採用してもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図12
図13
図14
図15
図16
図17
図18
図19
図20
【国際調査報告】