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

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

▶ ルネサスエレクトロニクス株式会社の特許一覧

特開2025-101106半導体装置及びオペレーティングシステム切り替え方法
<>
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図1
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図2
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図3
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図4
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図5
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図6
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図7
  • 特開-半導体装置及びオペレーティングシステム切り替え方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025101106
(43)【公開日】2025-07-07
(54)【発明の名称】半導体装置及びオペレーティングシステム切り替え方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20250630BHJP
   G06F 9/455 20180101ALI20250630BHJP
【FI】
G06F9/48 350C
G06F9/455 150
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023217706
(22)【出願日】2023-12-25
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】殿下 泰正
(72)【発明者】
【氏名】鵜飼 真
(57)【要約】
【課題】仮想マシン上で動作するオペレーティングシステムの実行時間を十分に確保し、仮想マシンのパフォーマンス向上を図る。
【解決手段】半導体装置は、第1及び第2のレジスタセットを有するプロセッサを備える。プロセッサは、第1の期間において、第2のレジスタセットを有効なレジスタセットとして選択し、第2のコンテキストデータを用いて第1の仮想マシンを実行する。プロセッサは、第2の期間において、第1のレジスタセットを有効なレジスタセットとして選択し、第1のコンテキストデータを用いてハイパーバイザを実行する。また、プロセッサは、第2の期間において、第2のコンテキストデータの退避の処理及び第3のコンテキストデータの読込の処理を行う。プロセッサは、第3の期間において、第2のレジスタセットが有効なレジスタセットとして選択し、第3のコンテキストデータを用いて第2の仮想マシンを実行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ハイパーバイザによって管理される、第1の仮想マシン及び第2の仮想マシンを含む複数の仮想マシンが動作する半導体装置であって、
第1のレジスタセット及び第2のレジスタセットを有するプロセッサと、
前記ハイパーバイザ、前記第1の仮想マシンが実行する第1のオペレーションシステム、及び前記第2の仮想マシンが実行する第2のオペレーションシステムを記憶するメモリと、
を備え、
前記第1のレジスタセットは、前記プロセッサによって前記ハイパーバイザが実行されている際の前記プロセッサの動作状態に関連する第1のコンテキストデータを格納し、
前記第2のレジスタセットは、前記プロセッサによって前記第1の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第2のコンテキストデータ、若しくは、前記プロセッサによって前記第2の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第3のコンテキストデータを格納し、
前記プロセッサは、
第1の期間において、前記第2のレジスタセットを有効なレジスタセットとして選択し、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを用いて前記第1の仮想マシン上で前記第1のオペレーションシステムを実行し、
第2の期間において、前記第2のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
前記第2の期間の開始から再び前記第2のレジスタセットを有効なレジスタセットとして選択するまでの間に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納し、
第3の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第2のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第2のレジスタセットに格納されている前記第3のコンテキストデータを用いて前記第2の仮想マシン上で前記第2のオペレーションシステムを実行する、
半導体装置。
【請求項2】
請求項1に記載の半導体装置であって、
前記プロセッサは、前記第2の期間中に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納する、
半導体装置。
【請求項3】
請求項1の半導体装置であって、
前記複数の仮想マシンは、第3の仮想マシンをさらに含み、
前記プロセッサは、第3のレジスタセットをさらに有し、
前記メモリは、前記第3の仮想マシンが実行する第3のオペレーションシステムをさらに記憶し、
前記第3のレジスタセットは、前記第2のコンテキストデータ、若しくは、前記プロセッサによって前記第3の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第4のコンテキストデータを格納し、
前記プロセッサは、
第4の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを用いて前記第3の仮想マシン上で前記第3のオペレーションシステムを実行し、
第5の期間において、前記第3のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
前記第5の期間の開始から再び前記第3のレジスタセットを有効なレジスタセットとして選択するまでの間に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記第3のレジスタセットに格納し、
前記第4の期間及び前記第5の期間は、前記第2の期間と前記第3の期間との間に挟まれる期間である、
半導体装置。
【請求項4】
請求項3に記載の半導体装置であって、
前記プロセッサは、前記第2の期間、前記第4の期間、及び前記第5の期間のうちの少なくとも1つの期間中に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納する、
半導体装置。
【請求項5】
請求項3に記載の半導体装置であって、
前記プロセッサは、
第6の期間において、前記第2のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
第7の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第2のコンテキストデータを用いて前記第1の仮想マシン上で前記第1のオペレーションシステムを実行し、
前記第6の期間及び前記第7の期間は、前記第3の期間よりも後の期間である、
半導体装置。
【請求項6】
請求項5に記載の半導体装置であって、
前記プロセッサは、前記第5の期間、前記第3の期間、及び前記第6の期間のうちの少なくとも1つの期間中に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記第3のレジスタセットに格納する、
半導体装置。
【請求項7】
請求項1に記載の半導体装置であって、
前記複数の仮想マシンは、第3の仮想マシン及び第4の仮想マシンをさらに含み、
前記プロセッサは、第3のレジスタセット及び第4のレジスタセットをさらに有し、
前記メモリは、前記第3の仮想マシンが実行する第3のオペレーションシステム及び前記第4の仮想マシンが実行する第4のオペレーションシステムをさらに記憶し、
前記第3のレジスタセットは、前記プロセッサによって前記第3の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第4のコンテキストデータ、及び、前記プロセッサによって前記第4の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第5のコンテキストデータを格納し、
前記プロセッサは、
第4の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを用いて前記第3の仮想マシン上で前記第3のオペレーションシステムを実行し、
第5の期間において、前記第3のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
前記第5の期間の開始から再び前記第3のレジスタセットを有効なレジスタセットとして選択するまでの間に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第5のコンテキストデータを読み出して、前記読み出された第5のコンテキストデータを前記第3のレジスタセットに格納し、
前記第4の期間及び前記の第5の期間は、前記第2の期間と前記第3の期間との間に挟まれる期間である、
半導体装置。
【請求項8】
請求項7に記載の半導体装置であって、
前記プロセッサは、前記第2の期間、前記第4の期間、及び前記第5の期間のうちの少なくとも1つの期間中に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納する、
半導体装置。
【請求項9】
請求項8に記載の半導体装置であって、
前記プロセッサは、
第6の期間において、前記第2のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
第7の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第5のコンテキストデータを用いて前記第4の仮想マシン上で前記第4のオペレーションシステムを実行し、
前記第6の期間及び前記第7の期間は、前記第3の期間よりも後の期間である、
半導体装置。
【請求項10】
請求項8に記載の半導体装置であって、
前記プロセッサは、前記第5の期間、前記第3の期間、及び第6の期間のうちの少なくとも1つの期間中に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第5のコンテキストデータを読み出して、前記読み出された第5のコンテキストデータを前記第3のレジスタセットに格納する、
半導体装置。
【請求項11】
請求項3に記載の半導体装置であって、
前記プロセッサは、
前記第2の期間において、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納した後、前記第2のレジスタセットへの電源供給を停止し、
前記第2の期間において、前記第3のレジスタセットへの電源供給を開始し、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第3のレジスタセットに格納する、
半導体装置。
【請求項12】
請求項1に記載の半導体装置であって、
前記プロセッサは、前記第1のレジスタセット及び前記第2のレジスタセットのうちのいずれかのレジスタセットが有効なレジスタセットであるかを示す情報を格納するアクティブ情報レジスタをさらに有する、
半導体装置。
【請求項13】
ハイパーバイザによって管理される、第1の仮想マシン及び第2の仮想マシンを含む複数の仮想マシンが動作する半導体装置によるオペレーティングシステムの切り替え方法であって、
前記半導体装置は、
第1のレジスタセット及び第2のレジスタセットを有するプロセッサと、
前記ハイパーバイザ、前記第1の仮想マシンが実行する第1のオペレーションシステム、及び前記第2の仮想マシンが実行する第2のオペレーションシステムを記憶するメモリと、
を備え、
前記第1のレジスタセットは、前記プロセッサによって前記ハイパーバイザが実行されている際の前記プロセッサの動作状態に関連する第1のコンテキストデータを格納し、
前記第2のレジスタセットは、前記プロセッサによって前記第1の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第2のコンテキストデータ、若しくは、前記プロセッサによって前記第2の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第3のコンテキストデータを格納し、
前記プロセッサにより、
第1の期間において、前記第2のレジスタセットを有効なレジスタセットとして選択し、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを用いて前記第1の仮想マシン上で前記第1のオペレーションシステムを実行し、
第2の期間において、前記第2のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
前記第2の期間の開始から再び前記第2のレジスタセットを有効なレジスタセットとして選択するまでの間に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納し、
第3の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第2のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第2のレジスタセットに格納されている前記第3のコンテキストデータを用いて前記第2の仮想マシン上で前記第2のオペレーションシステムを実行する、
オペレーティングシステムの切り替え方法。
【請求項14】
請求項13に記載のオペレーティングシステムの切り替え方法であって、
前記プロセッサにより、前記第2の期間中に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納する、
オペレーティングシステムの切り替え方法。
【請求項15】
請求項13のオペレーティングシステムの切り替え方法であって、
前記複数の仮想マシンは、第3の仮想マシンをさらに含み、
前記プロセッサは、第3のレジスタセットをさらに有し、
前記メモリは、前記第3の仮想マシンが実行する第3のオペレーションシステムをさらに記憶し、
前記第3のレジスタセットは、前記第2のコンテキストデータ、若しくは、前記プロセッサによって前記第3の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第4のコンテキストデータを格納し、
前記プロセッサにより、
第4の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを用いて前記第3の仮想マシン上で前記第3のオペレーションシステムを実行し、
第5の期間において、前記第3のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
前記第5の期間の開始から再び前記第3のレジスタセットを有効なレジスタセットとして選択するまでの間に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記第3のレジスタセットに格納し、
前記第4の期間及び前記の第5の期間は、前記第2の期間と前記第3の期間との間に挟まれる期間である、
オペレーティングシステムの切り替え方法。
【請求項16】
請求項15に記載のオペレーティングシステムの切り替え方法であって、
前記プロセッサにより、前記第2の期間、前記第4の期間、及び第5の期間のうちの少なくとも1つの期間中に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納する、
オペレーティングシステムの切り替え方法。
【請求項17】
請求項15に記載のオペレーティングシステムの切り替え方法であって、
前記プロセッサにより、
第6の期間において、前記第2のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
第7の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第2のコンテキストデータを用いて前記第1の仮想マシン上で前記第1のオペレーションシステムを実行し、
前記第6の期間及び前記第7の期間は、前記第3の期間よりも後の期間である、
オペレーティングシステムの切り替え方法。
【請求項18】
請求項17に記載のオペレーティングシステムの切り替え方法であって、
前記プロセッサにより、前記第5の期間、前記第3の期間、及び前記第6の期間のうちの少なくとも1つの期間中に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記第3のレジスタセットに格納する、
オペレーティングシステムの切り替え方法。
【請求項19】
請求項13に記載のオペレーティングシステムの切り替え方法であって、
前記複数の仮想マシンは、第3の仮想マシン及び第4の仮想マシンをさらに含み、
前記プロセッサは、第3のレジスタセット及び第4のレジスタセットをさらに有し、
前記メモリは、前記第3の仮想マシンが実行する第3のオペレーションシステム及び前記第4の仮想マシンが実行する第4のオペレーションシステムをさらに記憶し、
前記第3のレジスタセットは、前記プロセッサによって前記第3の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第4のコンテキストデータ、及び、前記プロセッサによって前記第4の仮想マシンが実行されている際の前記プロセッサの動作状態に関連する第5のコンテキストデータを格納し、
前記プロセッサにより、
第4の期間において、前記第1のレジスタセットが有効なレジスタとして選択されている状態から前記第3のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを用いて前記第3の仮想マシン上で前記第3のオペレーションシステムを実行し、
第5の期間において、前記第3のレジスタセットが有効なレジスタとして選択されている状態から前記第1のレジスタセットが有効なレジスタセットとして選択される状態に切り替えて、前記第1のレジスタセットに格納されている前記第1のコンテキストデータを用いて前記ハイパーバイザを実行し、
前記第5の期間の開始から再び前記第3のレジスタセットを有効なレジスタセットとして選択するまでの間に、前記第3のレジスタセットに格納されている前記第4のコンテキストデータを読み出して、前記読み出された第4のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第5のコンテキストデータを読み出して、前記読み出された第5のコンテキストデータを前記第3のレジスタセットに格納し、
前記第4の期間及び前記の第5の期間は、前記第2の期間と前記第3の期間との間に挟まれる期間である、
オペレーティングシステムの切り替え方法。
【請求項20】
請求項19に記載のオペレーティングシステムの切り替え方法であって、
前記プロセッサにより、前記第2の期間、前記第4の期間、及び前記第5の期間のうちの少なくとも1つの期間中に、前記第2のレジスタセットに格納されている前記第2のコンテキストデータを読み出して、前記読み出された第2のコンテキストデータを前記メモリに格納し、かつ、前記メモリから前記第3のコンテキストデータを読み出して、前記読み出された第3のコンテキストデータを前記第2のレジスタセットに格納する、
オペレーティングシステムの切り替え方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、半導体装置及びオペレーティングシステム切り替え方法に関する。
【背景技術】
【0002】
物理マシン上に仮想マシン(VM:Virtual Machine)を構築する仮想化技術が知られている。特許文献1は、ハイパーバイザにより構築された仮想マシン上で複数のオペレーティングシステム(OS:Operating System)を動作させる仮想化システムを開示する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-76908号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示される仮想化システム(仮想化環境)上で動作するOSが切り替えられる場合、ハイパーザイザは、OSを実行する仮想マシンの切り替えを制御する。また、仮想マシンの切り替えの際には、コンテキストの退避及び読込の処理が伴う。具体的には、切り替え前のプロセッサのレジスタセットに格納されているコンテキストデータの退避の処理及び切り替え後のプロセッサのレジスタセットに格納するコンテキストデータの読込の処理が行われる。
【0005】
前述されたように、仮想マシンの切り替えは、ハイパーバイザによって制御されるため、仮想マシンの切り替えの際のコンテキストデータの退避及び読込の処理には、切り替え対象となる複数の仮想マシンの実行に係るコンテキストデータの退避及び読込の処理だけではなく、ハイパーバイザの実行に係るコンテキストのデータの退避及び読込の処理も必要となる。通常、コンテキストデータは、プロセッサがアクセス可能なメモリに退避されるため、仮想マシン(或いはOS)の切り替えが行われるたびに、複数の仮想マシンおよびハイパーバイザの実行に係るコンテキストデータに対する、レジスタセットからメモリへの退避の処理及びメモリからレジスタセットへの読込の処理が発生する。しかしながら、コンテキストデータの退避及び読込の処理に必要なメモリアクセス時間は、仮想マシン上で実行されるOSの処理時間に影響を及ぼすため、このようなメモリアクセス時間が多くなると、仮想マシンのパフォーマンスを十分に発揮できなくなる恐れが生じ得る。
【0006】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
一実施形態に係る半導体装置は、第1のレジスタセット及び第2のレジスタセットを有するプロセッサと、ハイパーバイザを記憶するメモリと、を備える。第1のレジスタセットは、第1のコンテキストデータを格納する。第2のレジスタセットは、第2のコンテキストデータ若しくは第3のコンテキストデータを格納する。プロセッサは、第1の期間において、第2のレジスタセットを有効なレジスタセットとして選択し、第2のコンテキストデータを用いて第1の仮想マシンを実行する。プロセッサは、第2の期間において、第1のレジスタセットを有効なレジスタセットとして選択し、第1のコンテキストデータを用いてハイパーバイザを実行する。プロセッサは、第2の期間において、第2のコンテキストデータを読み出してメモリに格納し、かつ、メモリから第3のコンテキストデータを読み出して第2のレジスタセットに格納する。プロセッサは、第3の期間において、第2のレジスタセットを有効なレジスタセットとして選択し、第3のコンテキストデータを用いて第2の仮想マシンを実行する。
【0008】
一実施の形態に係るオペレーティングシステムの切り替え方法は、第1の仮想マシン及び第2の仮想マシンが動作する半導体装置によるオペレーティングシステムの切り替え方法である。半導体装置は、第1のレジスタセット及び第2のレジスタセットを有するプロセッサと、ハイパーバイザを記憶するメモリと、を備える。第1のレジスタセットは、第1のコンテキストデータを格納する。第2のレジスタセットは、第2のコンテキストデータ若しくは第3のコンテキストデータを格納する。オペレーティングシステムの切り替え方法において、プロセッサにより、第1の期間において、第2のレジスタセットを有効なレジスタセットとして選択し、第2のコンテキストデータを用いて第1の仮想マシンを実行する。プロセッサにより、第2の期間において、第1のレジスタセットを有効なレジスタセットとして選択し、第1のコンテキストデータを用いてハイパーバイザを実行する。プロセッサにより、第2の期間において、第2のコンテキストデータを読み出してメモリに格納し、かつ、メモリから第3のコンテキストデータを読み出して第2のレジスタセットに格納する。プロセッサにより、第3の期間において、第2のレジスタセットを有効なレジスタセットとして選択し、第3のコンテキストデータを用いて第2の仮想マシンを実行する。
【発明の効果】
【0009】
一実施の形態によれば、ハイパーバイザの実行に係るコンテキストデータを格納するためのレジスタセットと複数の仮想マシンの実行に係るコンテキストデータを格納するためのレジスタセットを含む複数のレジスタセットを用いて、バックグラウンドで複数の仮想マシンの実行に係るコンテキストデータの退避及び読込の処理を行う。これにより、コンテキストデータの退避及び読込の処理に必要なメモリアクセス時間を隠蔽することができる。その結果、仮想マシン上で動作するOSの実行時間を増大させ、仮想マシンのパフォーマンスの向上を図ることが可能となる。
【図面の簡単な説明】
【0010】
図1図1は、実施形態1に係る半導体装置の構成例を示すブロック図である。
図2図2は、実施形態1に係るコンテキストデータの退避及び読込の処理を示すタイミングチャートである。
図3図3は、実施形態2に係る半導体装置の構成例を示すブロック図である。
図4図4は、実施形態2に係るコンテキストデータの退避及び読込の処理を示すタイミングチャートである。
図5図5は、実施形態3に係る半導体装置の構成例を示すブロック図である。
図6図6は、実施形態3に係るコンテキストデータの退避及び読込の処理を示すタイミングチャートである。
図7図7は、実施形態4に係る半導体装置の構成例を示すブロック図である。
図8図8は、実施形態4に係るレジスタ電源制御部の処理を示すタイミングチャートである。
【発明を実施するための形態】
【0011】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複する説明は省略されている。
【0012】
[実施形態1]
図1は、実施形態1に係る半導体装置100の構成例を示す。図1に示されるように、半導体装置100は、プロセッサ150と、プロセッサ150に接続されるメモリ180と、を備える。メモリ180には、プロセッサ150によって実行されるプログラムが記憶され得る。また、メモリ180は、後述される複数のコンテキスデータを格納するための記憶領域としても使用され得る。いくつかの実施形態では、プロセッサ150は、例えば、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)、FPU(Floating point number Processing Unit)、PPU(Physics Processing Unit)、TPU(Tensor Processing Unit)、量子プロセッサ、マイクロコントローラ、又は、これらの組み合わせなどを用いることができる。メモリ180は、例えば、SRAM(Static Random Access Memory)及びDRAM(Dynamic Random Access Memory)の組み合わせによって構成される。
【0013】
メモリ180に記憶されるプログラムには、ハイパーバイザと複数のOSが含まれる。ハイパーバイザは、仮想化環境を制御するためのプログラムである。プロセッサ150は、メモリ180からハイパーバイザを読み出して実行することにより、仮想化環境を制御するための様々な処理、例えば、複数の仮想マシンの作成及び終了、コンテキストデータの退避及び読込、有効なレジスタセットの選択などの処理を行う。また、ハイパーバイザの実行により、複数の仮想マシンが作成されるとき、複数の仮想マシンの各々は、互いに異なるOSを実行する。例えば、複数のOSに第1のOS及び第2のOSが含まれる場合、プロセッサ150は、ハイパーバイザを実行することによって、第1のOSを実行する第1の仮想マシン及び第2のOSを実行する第2の仮想マシンを作成する。
【0014】
プロセッサ150は、コンテキストデータを格納するための第1のレジスタセット155a及び第2のレジスタセット155bを備える。コンテキストデータは、プログラムカウンタの値、演算途中にある値など、プロセッサの動作状態に関連する様々なデータを含む。第1のレジスタセット155aは、プロセッサ150がハイパーバイザを実行する際に利用されるレジスタセットである。第1のレジスタセット155aは、プロセッサ150によってハイパーバイザが実行されている際のプロセッサ150の動作状態に関連するコンテキストデータ(以下、「ハイパーバイザの実行に係る第1のコンテキストデータ」若しくは単に「第1のコンテキストデータ」とも称される)を格納する。
【0015】
第2のレジスタセット155bは、プロセッサ150が仮想マシンを実行する際に利用されるレジスタセットである。例えば、仮想化環境上で第1の仮想マシン及び第2の仮想マシンが作成される場合、第2のレジスタセット155bは、プロセッサ150によって第1の仮想マシンが実行されている際のプロセッサ150の動作状態に関連するコンテキストデータ(以下、「第1の仮想マシンの実行に係る第2のコンテキストデータ」若しくは単に「第2のコンテキストデータ」とも称される)、及びプロセッサ150によって第2の仮想マシンが実行されている際のプロセッサの動作状態に関連するコンテキストデータ(以下、「第2の仮想マシンの実行に係る第3のコンテキストデータ」若しくは単に「第3のコンテキストデータ」とも称される)を格納する。
【0016】
次に、ハイパーバイザを実行することによって行われる仮想マシンの切り替え時の処理について説明する。図2は、実施形態1に係るコンテキストデータの退避及び読込の処理を示すタイミングチャートである。横軸は、時間軸である。図2では、第1の仮想マシンが第1のOSを実行する状態から第2の仮想マシンが第2のOSを実行する状態への切り替えが行われる例が示される。
【0017】
プロセッサ150は、第1仮想マシンと第2の仮想マシンとの間の切り替え制御のために、仮想マシンの切り替えの途中でハイパーバイザを実行する。すなわち、第1の仮想マシンから第2の仮想マシンへの切り替えの際、プロセッサ150の動作状態は、第1の仮想マシンが第1のOSを実行する第1の状態からハイパーバイザを実行する第2の状態へ移行し、その後第2の状態から第2の仮想マシンが第2のOSを実行する第3の状態へ移行する。
【0018】
図2に示されるように、プロセッサ150の動作状態に応じた第1の期間乃至第3の期間が、時間軸に沿って示されている。第2の期間において、第1のレジスタセット155aが有効なレジスタセットとして選択されている。この期間は、ハイパーバイザが実行される期間である。一方、第1の期間及び第3の期間において、第2のレジスタセット155bが有効なレジスタセットとして選択されている。これらの期間は、第1の仮想マシン及び第2の仮想マシンのいずれかが実行される期間である。
【0019】
また、図2に示される例では、第1の仮想マシン(第1のOS)、第2の仮想マシン(第2のOS)の順に切り替えられる。そのため、第2のレジスタセット155bは、時間軸に沿って、第2のコンテキストデータ、第3のコンテキストデータの順で、所定の時間間隔を空けて、コンテキストデータを格納し得る。この時間間隔は、仮想マシンの実行に係るコンテキストデータの退避及び読込の処理に必要な時間に対応する。
【0020】
プロセッサ150は、第1の期間において、第2のレジスタセット155bを有効なレジスタセットとして選択する。第1の期間では、第2のレジスタセット155bには、第1の仮想マシンの実行に係る第2のコンテキストデータが格納されている。プロセッサ150は、第1の期間において、第2のレジスタセット155bに格納されている第2のコンテキストデータを用いて第1の仮想マシン上で第1のOSを実行する。
【0021】
続いて、プロセッサ150は、第1の仮想マシンから第2の仮想マシンへの切り替えを行うために、ハイパーバイザを実行する。プロセッサ150は、第2の期間において、第2のレジスタセット155bが有効なレジスタセットとして選択している状態から第1のレジスタセット155aが有効なレジスタセットとして選択される状態に切り替える。第1のレジスタセット155aには、ハイパーバイザの実行に係る第1のコンテキストデータが格納されている。プロセッサ150は、第1のレジスタセット155aに格納されている第1のコンテキストデータを用いてハイパーバイザを実行する。
【0022】
また、プロセッサ150は、第2の期間において、第2のレジスタセット155bから第2のコンテキストデータを読み出して、メモリ180に格納する。すなわち、メモリ180への第2のコンテキストデータの退避の処理が行われる。さらに、プロセッサ150は、メモリ180から第2の仮想マシンの実行に係る第3のコンテキストデータを読み出して、第2のレジスタセット155bに格納する。すなわち、メモリ180からの第3のコンテキストデータの読込の処理が行われる。なお、メモリ180に格納されている第3のコンテキストデータは、以前に第2の仮想マシンが第2のOSを実行していた状態から再び動作を継続できるように、メモリ180に退避されていたコンテキストデータである。
【0023】
続いて、プロセッサ150は、第3の期間において、第1のレジスタセット155aが有効なレジスタセットとして選択されている状態から第2のレジスタセット155bが有効なレジスタセットとして選択される状態に切り替える。第2のレジスタセット155bには、第2の仮想マシンの実行に係る第3のコンテキストデータが格納されている。プロセッサ150は、第2のレジスタセット155bに格納されている第3のコンテキストデータを用いて第2の仮想マシン上で第2のOSを実行する。
【0024】
以上の通り、実施形態1に係る半導体装置は、コンテキストデータを格納するためのレジスタセットを複数備える。複数のレジスタセットのうちの1つレジスタセットは、ハイパーザイザの実行に係るコンテキストデータを格納するための専用のレジスタセットとして利用される。そのため、仮想マシンが実行されている状態とハイパーバイザが実行される状態との間の切り替えの際に、ハイパーバイザに係るコンテキストデータの復帰及び読込の処理は不要となる。すなわち、ハイパーバイザの実行に係るコンテキストデータの退避及び読込の処理に必要なメモリアクセス時間を考慮する必要はない。
【0025】
また、実施形態1に係る半導体装置では、複数のレジスタセットのうちのいずれか1つが有効なレジスタセットとして選択される。そのため、有効なレジスタセットとして選択されているレジスタセットに格納されているコンテキストデータを用いて、プロセッサの動作を継続できる一方、有効なレジスタセットとして選択されていないレジスタセットに対しては、次に再び有効なレジスタセットとして選択されるまでの間に、コンテキストデータの退避及び読込の処理を行うことができる。例えば、図2に示される例では、ハイパーバイザが実行される第2の期間に、換言すれば、第2の期間の開始から再び第2のレジスタセット155bを有効なレジスタとして選択される第3の期間の開始までの間に、第2のコンテキストデータの退避の処理及び第3のコンテキストデータの読込の処理が行われる。これにより、仮想マシンに係るコンテキストデータの退避及び読込の処理に必要なメモリアクセス時間を隠蔽することができる。その結果、仮想マシン上で動作するOSの実行時間を十分に確保することができ、その結果、仮想マシンのパフォーマンスの向上を図ることができる。
【0026】
[実施形態2]
次に、実施形態2について説明する。実施形態2は、実施形態1とは、仮想マシンの数が異なる。実施形態2に係る半導体装置では、第1の仮想マシン(VM1)及び第2の仮想マシン(VM2)に加えて、第3の仮想マシン(VM3)が動作する。第3の仮想マシンは、第3のOSを実行する。
【0027】
第1のOS、第2のOS、第3のOSは、仮想環境上で動作可能なOSである。これらのOSの例としては、Android(登録商標),Linux(登録商標),UNIX(登録商標),OS X(登録商標),iOS(登録商標),WINDOWS(登録商標)又は組込型オペレーティングシステムなどが挙げられるが、これらに限定されない。これらのOSは、車載用のシステム、例えば、カーナビ、エアコン、クラスタ、ディスプレイなどに使用され得る。
【0028】
図3は、実施形態2に係る半導体装置100aの構成例を示すブロック図である。半導体装置100aは、仮想化環境上でOSを切り替えるために使用され得る。図3に示されるように、半導体装置100aは、プロセッサ150と、プロセッサ150に接続されるメモリ180と、を備える。また、半導体装置100aは、不図示のネットワークインタフェースなど他の構成要素も含み得る。メモリ180には、ハイパーバイザ、第1のOS、第2のOS、及び第3のOSが記憶されている。また、メモリ180は、第2のコンテキストデータ、第3のコンテキストデータ、及び後述される第4のコンテキストデータの退避先として使用され得る。
【0029】
プロセッサ150は、アクティブ情報レジスタ152と、第1のレジスタセット155aと、第2のレジスタセット155bと、第1の識別番号(VMID)レジスタ1551と、第2のVMIDレジスタ1552と、を備える。第1のVMIDレジスタ1551は、第1のレジスタセット155aに関連付けて設置される。第2のVMIDレジスタ1552は、第2のレジスタセット155bに関連付けて設置される。
【0030】
アクティブ情報レジスタ152は、第1のレジスタセット155a及び第2のレジスタセット155bのうちのどちらのレジスタセットが有効なレジスタセットであるかを示す情報を格納し得る。第1のレジスタセット155aは、ハイパーバイザの実行に係る第1のコンテキストデータを格納し得る。第2のレジスタセット155bは、第1の仮想マシンに係る第2のコンテキストデータ、第2の仮想マシンに係る第3のコンテキストデータ、及びプロセッサ150によって第3の仮想マシンが実行されている際のプロセッサ150の動作状態に関連するコンテキストデータ(以下、「第3の仮想マシンの実行に係る第4のコンテキストデータ」若しくは単に「第4のコンテキストデータ」とも称される)のいずれかを格納し得る。
【0031】
実施形態2では、ハイパーバイザ及び仮想マシンを識別するための情報として、VMIDが用いられる。例えば、ハイパーバイザのVMIDは0である。第1の仮想マシンのVMIDは1である。第2の仮想マシンのVMIDは2である。第3の仮想マシンのVMIDは3である。第1のVMIDレジスタ1551及び第2のVMIDレジスタ1552は、VMIDを用いて、第1のレジスタセット155a及び第2のレジスタセット155bに格納されているコンテキストデータに関連するハイパーバイザ若しくは仮想マシンを特定するための情報を格納する。
【0032】
例えば、第1のレジスタセット155aに第1のコンテキストデータが格納される場合、第1のVMIDレジスタ1551には、第1のレジスタセット155aに格納されているコンテキストデータがハイパーバイザに関連するコンテキストデータであることを示す“VMID=0”が格納される。また、第2のレジスタセット155bに第2のコンテキストデータが格納されている場合、第2のVMIDレジスタ1552には、第2のレジスタセット155bに格納されているコンテキストデータが第1の仮想マシンに関連するコンテキストデータであることを示す“VMID=1”が格納される。
【0033】
次に、ハイパーバイザを実行することによって行われる仮想マシンの切り替え時の処理について説明する。図4は、実施形態2に係るコンテキストデータの退避及び読込の処理を示すタイミングチャートである。横軸は、時間軸である。図4では、第1の仮想マシンが第1のOSを実行する状態から第2の仮想マシンが第2のOSを実行する状態への切り替えが行われ、その後第2の仮想マシンが第2のOSを実行する状態から第3の仮想マシンが第3のOSを実行する状態への切り替えが行われる例が示される。
【0034】
図4に示されるように、プロセッサ150の動作状態に応じた第1の期間乃至第5の期間が、時間軸に沿って示されている。第2の期間及び第4の期間において、第1のレジスタセット155aが有効なレジスタセットとして選択されている。これらの期間は、ハイパーバイザが実行される期間である。一方、第1の期間、第3の期間、及び第5の期間において、第2のレジスタセット155bが有効なレジスタセットとして選択されている。これらの期間は、第1の仮想マシン、第2の仮想マシン、及び第3の仮想マシンのいずれかが実行される期間である。
【0035】
また、図4に示される例では、第1の仮想マシン(第1のOS)、第2の仮想マシン(第2のOS)、第3の仮想マシン(第3のOS)の順に切り替えられる。この切り替えの順に対応して、第2のレジスタセット155bは、時間軸に沿って、第2のコンテキストデータ、第3のコンテキストデータ、第4のコンテキストデータの順で、所定の時間間隔を空けて、コンテキストデータを格納し得る。この時間間隔は、仮想マシンの実行に係るコンテキストデータの退避及び読込の処理に必要な時間に対応する。
【0036】
第1の期間乃至第3の期間においては、プロセッサ150は、図2で説明した内容と同様に動作する。そのため、重複する説明は省略される。ただし、実施形態2では、アクティブ情報レジスタ152、第1のVMIDレジスタ1551、及び第2のVMIDレジスタ1552が用いられる点が、実施形態1と異なる。
【0037】
第1の期間乃至第3の期間において、第1のレジスタセット155aには、第1のコンテキストデータが格納されるため、プロセッサ150は、第1のVMIDレジスタ1551に“VMID=0”を格納する。なお、実施形態2に係る全ての期間において、第1のレジスタセット155aには、第1のコンテキストデータが格納されるため、第4の期間以降についても、第1のVMIDレジスタ1551には、“VMID=0”が格納される。
【0038】
第1の期間においては、第2のコンテキストデータが第2のレジスタセット155bに格納され、有効なレジスタセットとして第2のレジスタセット155bが選択される。そのため、プロセッサ150は、第1の期間において、第2のVMIDレジスタ1552に“VMID=1”を、アクティブ情報レジスタ152に第2のレジスタセット155bが有効なレジスタセットであることを示す情報を、それぞれ格納する。
【0039】
続いて、第2の期間においては、有効なレジスタセットとして第1のレジスタセット155aが選択されるため、プロセッサ150は、アクティブ情報レジスタ152に第1のレジスタセット155aが有効なレジスタセットであることを示す情報を格納する。また、第2のレジスタセット155bに対するコンテキストデータの退避及び読込の処理が行われることによって、第3のコンテキストデータが第2のレジスタセット155bに格納される。そのため、プロセッサ150は、第2のVMIDレジスタ1552に“VMID=2”を格納する。
【0040】
続いて、第3の期間においては、有効なレジスタセットとして第2のレジスタセット155bが選択されるため、プロセッサ150は、アクティブ情報レジスタ152に第2のレジスタセット155bが有効なレジスタセットであることを示す情報を格納する。
【0041】
続いて、第4の期間において、プロセッサ150は、第2の仮想マシンから第3の仮想マシンへの切り替えを行うために、再びハイパーバイザを実行する。プロセッサ150は、アクティブ情報レジスタ152に第1のレジスタセット155aが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第2のレジスタセット155bが有効なレジスタセットとして選択している状態から第1のレジスタセット155aが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第1のレジスタセット155aに格納されている第1のコンテキストデータを用いてハイパーバイザを実行する。
【0042】
また、プロセッサ150は、第4の期間において、換言すれば、第4の期間の開始から再び第2のレジスタセット155bを有効なレジスタとして選択される第5の期間の開始までの間において、第2のレジスタセット155bから第3のコンテキストデータを読み出して、メモリ180に格納する。すなわち、メモリ180への第3のコンテキストデータの退避の処理が行われる。さらに、プロセッサ150は、メモリ180から第3の仮想マシンの実行に係る第4のコンテキストデータを読み出して、第2のレジスタセット155bに格納する。すなわち、メモリ180からの第4のコンテキストデータの読込の処理が行われる。なお、メモリ180に格納されている第4のコンテキストデータは、以前に第3の仮想マシンが第3のOSを実行していた状態から再び動作を継続できるように、メモリ180に退避されていたコンテキストデータである。また、プロセッサ150は、第2のVMIDレジスタ1552に“VMID=3”を格納する。
【0043】
続いて、第5の期間においては、プロセッサ150は、アクティブ情報レジスタ152に第2のレジスタセット155bが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第1のレジスタセット155aが有効なレジスタセットとして選択している状態から第2のレジスタセット155bが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第2のレジスタセット155bに格納されている第4のコンテキストデータを用いて第3の仮想マシン上で第3のOSを実行する。
【0044】
以上の通り、実施形態2に係る半導体装置では、第1の仮想マシン及び第2の仮想マシンに加えて第3の仮想マシンが動作する。すなわち、仮想マシンの数(OSの数)が3に増えたとしても、複数のレジスタセットを用いて仮想マシンの実行に係るコンテキストデータの退避及び読込処理を行うことにより、実施形態2に係る半導体装置は、実施形態1に係る半導体装置と同様の効果を得ることができる。
【0045】
なお、実施形態1及び実施形態2では、2つまたは3つの仮想マシンが動作する半導体装置について説明したが、仮想マシンの数(或いは仮想マシン上で動作するOSの数)は、これらに限定されない。例えば、仮想マシンの数は、4以上であってもよい。
【0046】
[実施形態3]
次に、実施形態3について説明する。実施形態2では、2つのレジスタセットを用いて3つの仮想マシンを切り替える半導体装置の例について説明された。実施形態3では、3つのレジスタセットを用いて3つの仮想マシンを切り替える半導体装置について説明する。実施形態3では、実施形態1及び実施形態2と重複する説明は省略される。
【0047】
図5は、実施形態3に係る半導体装置100bの構成例を示すブロック図である。図5に示される半導体装置100bのプロセッサ150は、図3に示される半導体装置100aのプロセッサ150に対して、さらに第3のレジスタセット155cと、第3のVMIDレジスタ1553と、を備える。第3のVMIDレジスタ1553は、第3のレジスタセット155cに関連付けて設置される。
【0048】
第3のレジスタセット155cは、第2のレジスタセット155bと同じように、第1の仮想マシンの実行に係る第2のコンテキストデータ、第2の仮想マシンの実行に係る第3のコンテキストデータ、及び第3の仮想マシンの実行に係る第4のコンテキストデータのいずれかを格納し得る。ただし、同じタイミングにおいては、第2のレジスタセット155b及び第3のレジスタセット155cは、互いに異なるコンテキストデータを格納する。例えば、第2のレジスタセット155bが第2のコンテキストデータを格納している場合には、第3のレジスタセット155cは、第3のコンテキストデータ及び第4のコンテキストデータのいずれかを格納する。
【0049】
第3のVMIDレジスタ1553は、VMIDを用いて、第3のレジスタセット155cに格納されているコンテキストデータに関連する仮想マシンを特定するための情報を格納する。例えば、第3のレジスタセット155cに第2のコンテキストデータが格納される場合、第3のVMIDレジスタ1553には、第3のレジスタセット155cに格納されているコンテキストデータが第1の仮想マシンに関連するコンテキストデータであることを示す“VMID=1”が格納される。
【0050】
次に、ハイパーバイザを実行することによって行われる仮想マシンの切り替え時の処理について説明する。図6は、実施形態3に係るコンテキストデータの退避及び読込の処理を示すタイミングチャートである。横軸は、時間軸である。図6では、第1の仮想マシンが第1のOSを実行する状態から第2の仮想マシンが第2のOSを実行する状態への切り替えが行われ、その後第2の仮想マシンが第2のOSを実行する状態から第3の仮想マシンが第3のOSを実行する状態への切り替えが行われ、最後に第3の仮想マシンが第3のOSを実行する状態から第1の仮想マシンが第1のOSを実行する状態への切り替えが行われる例が示される。
【0051】
図6に示されるように、プロセッサ150の動作状態に応じた第1の期間乃至第7の期間が、時間軸に沿って示されている。第2の期間、第4の期間及び第6の期間において、第1のレジスタセット155aが有効なレジスタセットとして選択されている。これらの期間は、ハイパーバイザが実行される期間である。一方、第1の期間及び第5の期間において、第2のレジスタセット155bが有効なレジスタセットとして選択されている。また、第3の期間及び第7の期間において、第3のレジスタセット155cが有効なレジスタセットとして選択されている。第1の期間、第3の期間、第5の期間、及び第7の期間は、第1の仮想マシン、第2の仮想マシン、及び第3の仮想マシンのいずれかが実行される期間である。
【0052】
また、図6に示される例では、第1の仮想マシン(第1のOS)、第2の仮想マシン(第2のOS)、第3の仮想マシン(第3のOS)、第1の仮想マシン(第1のOS)の順に切り替えられる。この切り替えの順に対応して、第2のレジスタセット155bは、時間軸に沿って、第2のコンテキストデータ、第4のコンテキストデータ、第3のコンテキストデータの順で、所定の時間間隔を空けて、コンテキストデータを格納し得る。また、第3のレジスタセット155cは、時間軸に沿って、第3のコンテキストデータ、第2のコンテキストデータの順で、所定の時間間隔を空けて、コンテキストデータを格納し得る。この時間間隔は、仮想マシンの実行に係るコンテキストデータの退避及び読込の処理に必要な時間に対応する。
【0053】
第1の期間乃至第7の期間において、第1のレジスタセット155aには、第1のコンテキストデータが格納されるため、プロセッサ150は、第1のVMIDレジスタ1551に“VMID=0”を格納する。
【0054】
図6に示されるように、プロセッサ150は、第1の期間において、第2のレジスタセット155bを有効なレジスタセットとして選択する。第1の期間では、第2のレジスタセット155bに第1のコンテキストデータが格納され、第2のVMIDレジスタ1552に“VMID=1”が格納される。プロセッサ150は、第1の期間において、第2のレジスタセット155bに格納されている第2のコンテキストデータを用いて第1の仮想マシン上で第1のOSを実行する。なお、初期状態として、第3のレジスタセット155cには、第3のコンテキストデータが格納され、第3のVMIDレジスタ1553には、“VMID=2”が格納されているものとする。
【0055】
続いて、プロセッサ150は、第1の仮想マシンから第2の仮想マシンへの切り替えを行うために、ハイパーバイザを実行する。プロセッサ150は、第2の期間において、第2のレジスタセット155bが有効なレジスタセットとして選択している状態から第1のレジスタセット155aが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第1のレジスタセット155aに格納されている第1のコンテキストデータを用いてハイパーバイザを実行する。
【0056】
また、プロセッサ150は、第2の期間において、第2のレジスタセット155bから第2のコンテキストデータを読み出して、メモリ180に格納する。すなわち、メモリ180への第2のコンテキストデータの退避の処理が行われる。さらに、プロセッサ150は、メモリ180から第3の仮想マシンの実行に係る第4のコンテキストデータを読み出して、第2のレジスタセット155bに格納する。すなわち、メモリ180からの第4のコンテキストデータの読込の処理が行われる。なお、メモリ180に格納されている第4のコンテキストデータは、以前に第3の仮想マシンが第3のOSを実行していた状態から再び動作を継続できるように、メモリ180に退避されていたコンテキストデータである。また、プロセッサ150は、第2のVMIDレジスタ1552に“VMID=3”を格納する。
【0057】
続いて、プロセッサ150は、第3の期間において、アクティブ情報レジスタ152に第3のレジスタセット155cが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第1のレジスタセット155aが有効なレジスタセットとして選択している状態から第3のレジスタセット155cが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第3のレジスタセット155cに格納されている第3のコンテキストデータを用いて第2の仮想マシン上で第2のOSを実行する。
【0058】
続いて、プロセッサ150は、第4の期間において、第2の仮想マシンから第3の仮想マシンへの切り替えを行うために、ハイパーバイザを実行する。プロセッサ150は、アクティブ情報レジスタ152に第1のレジスタセット155aが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第3のレジスタセット155cが有効なレジスタセットとして選択している状態から第1のレジスタセット155aが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第1のレジスタセット155aに格納されている第1のコンテキストデータを用いてハイパーバイザを実行する。
【0059】
また、プロセッサ150は、第4の期間において、第3のレジスタセット155cから第3のコンテキストデータを読み出して、メモリ180に格納する。すなわち、メモリ180への第3のコンテキストデータの退避の処理が行われる。さらに、プロセッサ150は、メモリ180から第1の仮想マシンの実行に係る第2のコンテキストデータを読み出して、第3のレジスタセット155cに格納する。すなわち、メモリ180からの第2のコンテキストデータの読込の処理が行われる。なお、メモリ180に格納されている第2のコンテキストデータは、第2の期間において第2レジスタセット155bからメモリ180に退避されたコンテキストデータである。このコンテキストデータを利用することにより、退避の処理が行われた際の第1の仮想マシンが第1のOSを実行していた状態から再び動作を継続できるようになる。また、プロセッサ150は、第3のVMIDレジスタ1553に“VMID=1”を格納する。
【0060】
続いて、プロセッサ150は、第5の期間において、アクティブ情報レジスタ152に第2のレジスタセット155bが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第1のレジスタセット155aが有効なレジスタセットとして選択している状態から第2のレジスタセット155bが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第2のレジスタセット155bに格納されている第4のコンテキストデータを用いて第3の仮想マシン上で第3のOSを実行する。
【0061】
続いて、プロセッサ150は、第6の期間において、第3の仮想マシンから第1の仮想マシンへの切り替えを行うために、ハイパーバイザを実行する。プロセッサ150は、アクティブ情報レジスタ152に第1のレジスタセット155aが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第2のレジスタセット155bが有効なレジスタセットとして選択している状態から第1のレジスタセット155aが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第1のレジスタセット155aに格納されている第1のコンテキストデータを用いてハイパーバイザを実行する。
【0062】
続いて、プロセッサ150は、第7の期間において、アクティブ情報レジスタ152に第3のレジスタセット155cが有効なレジスタセットであることを示す情報を格納する。これにより、プロセッサ150は、第1のレジスタセット155aが有効なレジスタセットとして選択している状態から第3のレジスタセット155cが有効なレジスタセットとして選択される状態に切り替える。プロセッサ150は、第3のレジスタセット155cに格納されている第2のコンテキストデータを用いて第1の仮想マシン上で第1のOSを実行する。
【0063】
以上の通り、実施形態3に係る半導体装置は、3つのレジスタセットを用いてハイパーバイザの実行及び3つの仮想マシンの実行に係るコンテキストデータの退避及び読込の処理を行う。これにより、実施形態3においても、実施形態1及び実施形態2と同様の効果が得られる。
【0064】
なお、実施形態3では、第2の期間及び第4の期間にそれぞれコンテキストデータの退避及び読込の処理が行われると説明されたが、これらの処理は、次の仮想マシンの実行が開始される前までに完了できていればよい。すなわち、第2の期間において行われると説明された第2のコンテキストデータの退避の処理及び第4のコンテキストデータの読込の処理は、第2の期間の開始から再び第2のレジスタセット155bを有効なレジスタとして選択される第5の期間の開始までの間に行われればよい。また、第4の期間において行われると説明された第3のコンテキストデータの退避の処理及び第2のコンテキストデータの読込の処理は、第4の期間の開始から再び第3のレジスタセット155cを有効なレジスタとして選択される第7の期間の開始までの間に行われればよい。
【0065】
実施形態1乃至実施形態3で説明されたコンテキストデータの退避及び読込の処理は、DMA(Direct Memory Access)転送を用いて実行されることができる。すなわち、プロセッサ150は、ハイパーバイザを実行することによってコンテキストデータの退避及び読込の処理を行う場合、不図示のDMAコントローラに対して、レジスタセットとメモリ180との間のコンテキストデータの転送処理を指示することができる。転送処理の指示の完了後には、プロセッサ150の動作状態に関わらず、DMAコントローラは、コンテキストデータの転送処理を実行することができる。
【0066】
実施形態2では、仮想マシンの実行に係るコンテキストデータを格納するためのレジスタセットが1つであるため、ハイパーバイザが実行される1つの期間内(図4に示される第2の期間内又は第4の期間内)にコンテキストデータの退避及び読込の処理を完了させなければならなかった。この場合には、コンテキストデータの退避及び読込の処理を完了させるための時間を考慮して、ハイパーバイザが実行される期間(図4に示される第2の期間及び第4の期間)を設定しなければならず、仮想マシン上で動作するOSの実行時間の確保に影響を与える恐れがあった。
【0067】
これに対し、実施形態3では、仮想マシンの実行に係るコンテキストデータを格納するためのレジスタセットが2つ設けられている。このため、3つの期間(図6に示される第2の期間から第4の期間又は第4の期間から第6の期間)をコンテキストデータの退避及び読込の処理に利用することができる。この場合、ハイパーバイザが実行される期間にコンテキストデータの退避及び読込の処理を完了させる必要がないため、コンテキストデータの退避及び読込の処理を完了させるための時間を考慮して、ハイパーバイザが実行される期間を長く設定する必要はない。すなわち、実施形態3に係る半導体装置は、実施の形態2に係る半導体装置よりも、仮想マシン上のOSの実行時間を確保することが容易になり、その結果、仮想マシンのパフォーマンスのさらなる向上を図ることができる。
【0068】
また、実施形態3では、3つのレジスタセットを用いて3つの仮想マシンを切り替える半導体装置について説明されたが、レジスタセットの数は、4以上であっても構わない。ただし、仮想マシンの実行に係るコンテキストデータの退避及び読込の処理が必要となる場合は、レジスタセットの本数(M)と仮想マシン(或いはOS)の数(N)との間において、“M<N+1”の関係が成り立つ場合であることに留意されたい。なお、M及びNは、自然数である。
【0069】
[実施形態4]
次に、実施形態4について説明する。実施形態4に係る半導体装置は、レジスタセットがコンテキストデータを格納するために使用されていない期間において、当該レジスタセットへの電源供給を停止する機能を有する。実施形態4では、実施形態1乃至実施形態3と重複する説明は省略される。
【0070】
図7は、実施形態4に係る半導体装置100cの構成例を示すブロック図である。図7に示される半導体装置100cのプロセッサ150は、図5に示される半導体装置100bのプロセッサ150に対して、レジスタ電源制御部14をさらに備える。
【0071】
レジスタ電源制御部14は、第2のレジスタセット155b、第3のレジスタセット155c、第2のVMIDレジスタ1552、及び第3のVMIDレジスタ1553に接続され、これらのレジスタに対する電源供給を制御する。プロセッサ150は、第2のレジスタセット155b及び第3のレジスタセット155cのうち、直近の仮想マシンの実行に使用されるコンテキストデータを格納するレジスタセット及びそれに関連付けて設置されたVMIDレジスタに対しては電源供給を継続し、直近の仮想マシンの実行に使用されないレジスタセット及びそれに関連付けて設置されたVMIDレジスタに対しては電源供給を停止する。
【0072】
図8は、実施形態4に係るレジスタ電源制御部14の処理を説明するためのタイミングチャートである。横軸は、時間軸である。図8のタイミングチャートに示される処理のうち、レジスタ電源制御部14による電源供給の制御の処理及び仮想マシンの実行に係るコンテキストデータの読込の処理以外の処理については図6のタイミングチャートの第1の期間乃至第5の期間に行われる処理と同じであるため、それらの重複する説明は省略される。また、初期状態では、第3のレジスタセット155c及び第3のVMIDレジスタ1553への電源供給は停止されているものとする。
【0073】
図8に示されるように、コンテキストデータの退避及び読込の処理が行われる第2の期間及び第4の期間において、レジスタ電源制御部14は、第2のレジスタセット155b、第3のレジスタセット155c、第2のVMIDレジスタ1552、及び第3のVMIDレジスタ1553に対する電源供給の制御を行う。なお、図8では、レジスタセットに電源供給が開始される場合は、“ON”で示され、レジスタセットへの電源供給が停止される場合は、“OFF”で示される。
【0074】
第2の期間において、プロセッサ150は、第2のレジスタセット155bから第2のコンテキストデータを読み出して、メモリ180に格納する。その後、プロセッサ150のレジスタ電源制御部14は、退避の処理が行われた第2のレジスタセット155b及びそれに関連付けて設置された第2のVMIDレジスタ1552への電源供給を停止する。
【0075】
また、第2の期間において、プロセッサ150のレジスタ電源制御部14は、第3のレジスタセット155c及び第3のVMIDレジスタ1553への電源供給を開始する。その後、プロセッサ150は、メモリ180から第3のコンテキストデータを読み出して、第3のレジスタセット155cに格納する。また、プロセッサ150は、第3のVMIDレジスタ1553に“VMID=2”を格納する。
【0076】
第4の期間において、プロセッサ150は、第3のレジスタセット155cから第3のコンテキストデータを読み出して、メモリ180に格納する。その後、プロセッサ150のレジスタ電源制御部14は、退避の処理が行われた第3のレジスタセット155c及びそれに関連付けて設置された第3のVMIDレジスタ1553への電源供給を停止する。
【0077】
また、第4の期間において、プロセッサ150のレジスタ電源制御部14は、第2のレジスタセット155b及び第2のVMIDレジスタ1552への電源供給を再開する。その後、プロセッサ150は、メモリ180から第4のコンテキストデータを読み出して、第2のレジスタセット155bに格納する。また、プロセッサ150は、第2のVMIDレジスタ1552に“VMID=3”を格納する。
【0078】
以上の通り、実施形態4では、レジスタセットに対するコンテキストデータの読込の処理は、当該レジスタセットに対するコンテキストデータの退避の処理の実行後に連続して行われるのではなく、退避の処理が行われたタイミングから所定の時間経過したタイミングで行われる。図8に示されるように、例えば、第2のレジスタセット155bに対する第4のコンテキストデータの読込の処理は、第2の期間では行われずに、第4の期間で行われる。
【0079】
また、実施形態4では、レジスタセットに対するコンテキストデータの退避の処理が行われてから同じレジスタセットに対するコンテキストデータの読込の処理が行われるまでの期間、換言すれば、レジスタセットがコンテキストデータを格納するために使用されていない期間においては、レジスタ電源制御部14による制御によって、当該レジスタセット及びそれに関連付けて設置されたVMIDレジスタへの電源供給が停止される。これにより、半導体装置の省電力化を図ることができる。
【0080】
なお、省電力化の観点では、コンテキストデータの読込の処理のタイミングは、できるだけ遅らせることが望ましい。第2のレジスタセット155bに対する第4のコンテキストデータの読込の処理は、第2のレジスタセット155bが再び有効なレジスタセットとして選択されるまでの間に、すなわち、第2の期間乃至第4の期間の間に、行われなければならない。この場合、第4のコンテキストデータの読込の処理は、例えば、第3の期間で行われる場合よりも第4の期間で行われる方が、第2のレジスタセット155bへの電源供給を停止する時間を長くすることができ、半導体装置における省電力化の効果は大きくなる。
【0081】
実施形態1乃至実施形態4に示された半導体装置の特徴及び構成要素は、半導体装置によるオペレーティングシステムの切り替え方法にも適用され得る。
【0082】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【0083】
14 レジスタ電源制御部
100、100a、100b、100c 半導体装置
150 プロセッサ
152 アクティブ情報レジスタ
1551 第1のVMIDレジスタ
1552 第2のVMIDレジスタ
1553 第3のVMIDレジスタ
155a 第1のレジスタセット
155b 第2のレジスタセット
155c 第3のレジスタセット
180 メモリ
図1
図2
図3
図4
図5
図6
図7
図8