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

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

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

特開2023-171267半導体装置および半導体装置の制御方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023171267
(43)【公開日】2023-12-01
(54)【発明の名称】半導体装置および半導体装置の制御方法
(51)【国際特許分類】
   G06F 12/109 20160101AFI20231124BHJP
   G06F 12/0864 20160101ALI20231124BHJP
   G06F 12/128 20160101ALI20231124BHJP
   G06F 12/121 20160101ALI20231124BHJP
【FI】
G06F12/109 115
G06F12/0864
G06F12/128
G06F12/121 100
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023065147
(22)【出願日】2023-04-12
(31)【優先権主張番号】17/748,725
(32)【優先日】2022-05-19
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】長谷川 将大
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM01
5B205MM36
5B205QQ11
5B205TT02
5B205UU45
(57)【要約】
【課題】プロセッサ上でOSが動的に切り替わる場合でも、実行中のOSとキャッシュメモリのウェイとの間の割り当てを適切に設定することができる半導体装置を提供する。
【解決手段】半導体装置100は、複数の仮想マシンを実行可能な複数のプロセッサ110,120およびキャッシュメモリ130を備える。仮想マシンの各々は、互いに異なるOSを実行する。ハイパーバイザは、仮想マシンが使用できるキャッシュメモリ130のウェイ131-134を割り当てるように割り当て情報を設定する。プロセッサ110,120の各々は、メモリアクセス要求を出力する際、仮想マシン識別情報をメモリアクセス要求に関連付けて出力する。キャッシュメモリ130は、メモリアクセス要求がキャッシュヒットではない場合、仮想マシン識別情報および割り当て情報に基づいて、データの置き換え対象となるウェイを選択する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ハイパーバイザによって管理される複数の仮想マシンが動作する半導体装置であって、
前記複数の仮想マシンを実行可能な複数のプロセッサと、
複数のウェイと、前記複数のウェイの割り当てを設定するための割り当て情報を格納する割り当て情報格納部と、を有するキャッシュメモリと、
を備え、
前記複数の仮想マシンの各々は、互いに異なるオペレーティングシステムを実行し、
前記複数のプロセッサの各々は、第1の識別情報格納部を有し、
前記ハイパーバイザは、
前記複数の仮想マシンの各々が使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てるように前記割り当て情報を設定し、
前記複数のプロセッサの各々が前記複数の仮想マシンのいずれかを実行する場合、前記複数のプロセッサの各々によって実行される仮想マシンを識別するための仮想マシン識別情報を、前記仮想マシンを実行する前記複数のプロセッサの各々の前記第1の識別情報格納部に格納し、
前記複数のプロセッサの各々は、メモリアクセス要求を出力する際に、前記複数のプロセッサの各々の前記第1の識別情報格納部に格納されている前記仮想マシン識別情報を、前記メモリアクセス要求に関連付けて出力し、
前記キャッシュメモリは、前記メモリアクセス要求がキャッシュヒットではない場合、前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択する、
半導体装置。
【請求項2】
請求項1に記載の半導体装置であって、
前記仮想マシン識別情報は、前記複数の仮想マシンの各々に関連付けられたユニークな情報であり、
前記ハイパーバイザは、
前記仮想マシン識別情報を用いて、前記複数の仮想マシンの各々と前記複数のウェイの各々との対応関係を設定し、
前記複数の仮想マシンの各々と前記複数のウェイの各々との対応関係を前記割り当て情報に含める、
半導体装置。
【請求項3】
請求項1に記載の半導体装置であって、
前記ハイパーバイザは、前記ハイパーバイザが使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てるように前記割り当て情報を設定する、
半導体装置。
【請求項4】
請求項3に記載の半導体装置であって、
前記複数のプロセッサの各々が前記ハイパーバイザを実行する場合、前記ハイパーバイザは、ハイパーバイザ識別情報を、前記ハイパーバイザを実行する前記複数のプロセッサの各々の前記第1の識別情報格納部に格納する、
半導体装置。
【請求項5】
請求項4に記載の半導体装置であって、
前記複数のプロセッサの各々は、前記メモリアクセス要求を出力する際に、前記複数のプロセッサの各々の前記第1の識別情報格納部に格納されている前記ハイパーバイザ識別情報を、前記メモリアクセス要求に関連付けて出力し、
前記キャッシュメモリは、前記メモリアクセス要求がキャッシュヒットではない場合、前記キャッシュヒットではないメモリアクセス要求に関連付けられた前記ハイパーバイザ識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択する、
半導体装置。
【請求項6】
請求項5に記載の半導体装置であって、
前記ハイパーバイザ識別情報は、前記ハイパーバイザに関連付けられたユニークな情報であり、
前記ハイパーバイザは、
前記ハイパーバイザ識別情報を用いて、前記ハイパーバイザと前記複数のウェイの各々との対応関係を設定し、
前記ハイパーバイザと前記複数のウェイの各々との対応関係を前記割り当て情報に含める、
半導体装置。
【請求項7】
請求項1に記載の半導体装置であって、
前記キャッシュメモリは、
前記メモリアクセス要求に含まれるアドレスと前記複数のウェイの各々に格納された情報とを比較することによって、前記メモリアクセス要求がキャッシュヒットであるか否かを判定し、
前記メモリアクセス要求がキャッシュヒットではない場合、前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、前記複数のウェイから前記メモリアクセス要求に係るデータを格納するためのウェイを選択し、
前記キャッシュヒットではないメモリアクセス要求がリード要求である場合、メインメモリから前記リード要求に係るデータを読み出して前記選択されたウェイに格納し、
前記キャッシュヒットではないメモリアクセス要求がライト要求である場合、前記ライト要求に係るデータを前記選択されたウェイに格納する、
半導体装置。
【請求項8】
請求項1に記載の半導体装置であって、
前記キャッシュメモリは、割り当て権限情報格納部をさらに有し、
前記複数のプロセッサの各々は、第2の識別情報格納部をさらに有し、
前記ハイパーバイザは、前記複数の仮想マシンの各々において実行されるオペレーティングシステムに前記複数のウェイのうちの少なくとも1つのウェイを割り当てる権限を与える割り当て権限情報を前記割り当て権限情報格納部に格納し、
前記オペレーティングシステムは、
前記割り当て権限情報格納部に格納された前記割り当て権限情報を参照して、前記オペレーティングシステム自身に割り当てられた少なくとも1つのウェイの範囲を確認し、
前記割り当てられた少なくとも1つのウェイの範囲内において、前記オペレーティングシステム自身および前記オペレーティングシステム自身の上で動作するアプリケーションの各々が使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てるように前記割り当て情報を設定し、
前記複数のプロセッサの各々が前記オペレーティングシステムもしくは前記アプリケーションを実行する場合、前記オペレーティングシステムを識別するための第1のソフトウェア識別情報もしくは前記アプリケーションを識別するための第2のソフトウェア識別情報を、前記オペレーティングシステムもしくは前記アプリケーションを実行する前記複数のプロセッサの各々の前記第2の識別情報格納部に格納し、
前記複数のプロセッサの各々は、メモリアクセス要求を出力する際に、前記複数のプロセッサの各々の前記第1の識別情報格納部に格納されている前記仮想マシン識別情報、および、前記複数のプロセッサの各々の前記第2の識別情報格納部に格納されている前記第1のソフトウェア識別情報もしくは前記第2のソフトウェア識別情報を、前記メモリアクセス要求に関連付けて出力し、
前記キャッシュメモリは、前記メモリアクセス要求がキャッシュヒットではない場合、前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報、前記第1のソフトウェア識別情報もしくは前記第2のソフトウェア識別情報、および、前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択する、
半導体装置。
【請求項9】
請求項8に記載の半導体装置であって、
前記仮想マシン識別情報は、前記複数の仮想マシンの各々に関連付けられたユニークな情報であり、
前記第1のソフトウェア識別情報は、前記オペレーティングシステムに関連付けられたユニークな情報であり、
前記第2のソフトウェア識別情報は、前記アプリケーションに関連付けられたユニークな情報であり、
前記オペレーティングシステムは、
前記仮想マシン識別情報と、前記第1のソフトウェア識別情報もしくは前記第2のソフトウェア識別情報と、の組み合わせを用いて、前記オペレーティングシステム自身に割り当てられた少なくとも1つのウェイの範囲内において、前記オペレーティングシステム自身および前記オペレーティングシステム自身の上で動作するアプリケーションの各々と前記複数のウェイの各々との対応関係を設定し、
前記オペレーティングシステム自身および前記オペレーティングシステム自身の上で動作するアプリケーションの各々と前記複数のウェイの各々との対応関係を前記割り当て情報に含める、
半導体装置。
【請求項10】
請求項1に記載の半導体装置であって、
前記キャッシュメモリは、セキュア情報格納部をさらに有し、
前記複数のプロセッサの各々は、
第3の識別情報格納部をさらに有し、
トラステッドオペレーティングシステムが動作するセキュア動作モードと前記ハイパーバイザが動作する非セキュア動作モードとをセキュアモニタによって切り替えて動作することが可能であり、
前記セキュアモニタは、
前記複数のウェイを前記セキュア動作モードで使用可能な少なくとも1つのウェイと前記非セキュア動作モードで使用可能な少なくとも1つのウェイとに区分するためのセキュア情報を前記セキュア情報格納部に格納し、
前記セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、前記トラステッドオペレーティングシステムが使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てるように前記割り当て情報を設定し、
前記複数のプロセッサの各々が前記トラステッドオペレーティングシステムを実行する場合、前記トラステッドオペレーティングシステムを識別するため第3のソフトウェア識別情報を、前記トラステッドオペレーティングシステムを実行する前記複数のプロセッサの各々の前記第3の識別情報格納部に格納し、
前記ハイパーバイザは、
前記セキュア情報格納部に格納された前記セキュア情報を参照して、前記非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲を確認し、
前記非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、前記複数の仮想マシンの各々が使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てるように前記割り当て情報を設定し、
前記複数のプロセッサの各々は、
前記セキュア動作モードで動作中にメモリアクセス要求を出力する際に、前記複数のプロセッサの各々の前記第3の識別情報格納部に格納されている前記第3のソフトウェア識別情報を、前記メモリアクセス要求に関連付けて出力し、
前記非セキュア動作モードで動作中にメモリアクセス要求を出力する際に、前記複数のプロセッサの各々の前記第1の識別情報格納部に格納されている前記仮想マシン識別情報を、前記メモリアクセス要求に関連付けて出力し、
前記キャッシュメモリは、前記メモリアクセス要求がキャッシュヒットではない場合、
前記セキュア動作モードで動作中に出力された前記メモリアクセス要求に関連付けられた前記第3のソフトウェア識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択し、
前記非セキュア動作モードで動作中に出力された前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択する、
半導体装置。
【請求項11】
請求項10に記載の半導体装置であって、
前記複数のプロセッサの各々は、動作モード情報格納部をさらに有し、
前記セキュアモニタは、
前記複数のプロセッサの各々が前記セキュア動作モードで動作する場合、前記セキュア動作モードで動作することを示す動作モード情報を、前記セキュア動作モードで動作する前記複数のプロセッサの各々の前記動作モード情報格納部に格納し、
前記複数のプロセッサの各々が前記非セキュア動作モードで動作する場合、前記非セキュア動作モードで動作することを示す前記動作モード情報を、前記非セキュア動作モードで動作する前記複数のプロセッサの各々の前記動作モード情報格納部に格納し、
前記複数のプロセッサの各々は、前記複数のプロセッサの各々の前記動作モード情報格納部に格納された前記動作モード情報を読み出すことによって、前記セキュア動作モードおよび前記非セキュア動作モードのいずれかの動作モードで動作しているのかを認識する、
半導体装置。
【請求項12】
請求項10に記載の半導体装置であって、
前記第3のソフトウェア識別情報は、前記トラステッドオペレーティングシステムに関連付けられたユニークな情報であり、
前記セキュアモニタは、
前記第3のソフトウェア識別情報を用いて、前記セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、前記トラステッドオペレーティングシステムと前記複数のウェイの各々との対応関係を設定し、
前記トラステッドオペレーティングシステムと前記複数のウェイの各々との対応関係を前記割り当て情報に含める、
半導体装置。
【請求項13】
請求項10に記載の半導体装置であって、
前記セキュアモニタは、前記セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、前記セキュアモニタが使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てるように前記割り当て情報を設定する、
半導体装置。
【請求項14】
請求項13に記載の半導体装置であって、
前記複数のプロセッサの各々が前記セキュアモニタを実行する場合、前記セキュアモニタは、セキュアモニタ識別情報を、前記セキュアモニタを実行する前記複数のプロセッサの各々の前記第3の識別情報格納部に格納する、
半導体装置。
【請求項15】
請求項14に記載の半導体装置であって、
前記複数のプロセッサの各々は、前記セキュア動作モードで動作中に前記メモリアクセス要求を出力する際に、前記複数のプロセッサの各々の前記第3の識別情報格納部に格納されている前記セキュアモニタ識別情報を、前記メモリアクセス要求に関連付けて出力し、
前記キャッシュメモリは、前記メモリアクセス要求がキャッシュヒットではない場合、前記メモリアクセス要求に関連付けられた前記セキュアモニタ識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択する、
半導体装置。
【請求項16】
請求項1に記載の半導体装置であって、
前記ハイパーバイザは、前記複数のウェイのうちの少なくとも1つのウェイが前記複数の仮想マシンのうちの少なくとも2つの仮想マシンによって共有されるように前記割り当て情報を設定する、
半導体装置。
【請求項17】
請求項1に記載の半導体装置であって、
前記キャッシュメモリは、ヒット率算出回路をさらに有し、
前記ヒット率算出回路は、
前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報に基づいて、仮想マシン毎にキャッシュヒットであると判定されたメモリアクセス要求の数をカウントし、
カウントした結果に基づいて、前記仮想マシン毎にキャッシュヒット率を算出し、
前記ハイパーバイザは、
前記仮想マシンの前記キャッシュヒット率の差分を算出し、
算出された前記キャッシュヒット率の差分が所定の値より大きい場合には、前記キャッシュヒット率の低い仮想マシンが使用可能なウェイの数を増やすように前記割り当て情報を変更する、あるいは、前記キャッシュヒット率の高い仮想マシンが使用可能なウェイの数を減らすように前記割り当て情報を変更する、
半導体装置。
【請求項18】
複数のプロセッサおよびキャッシュメモリを備え、ハイパーバイザによって管理される複数の仮想マシンが動作する半導体装置の制御方法であって、
前記キャッシュメモリは、複数のウェイおよび割り当て情報格納部を有し、
前記複数のプロセッサの各々は、第1の識別情報格納部を有し、
前記ハイパーバイザに、
前記複数の仮想マシンを作成し、
前記複数の仮想マシンの各々が使用できる前記複数のウェイのうちの少なくとも1つのウェイを割り当てる割り当て情報を前記割り当て情報格納部に格納し、
前記複数のプロセッサの各々が前記複数の仮想マシンのいずれかを実行する場合、前記複数のプロセッサの各々によって実行される仮想マシンを識別するための仮想マシン識別情報を、前記仮想マシンを実行する前記複数のプロセッサの各々の前記第1の識別情報格納部に格納する、
ことをさせる第1のステップと、
前記複数の仮想マシンの各々に、互いに異なるオペレーティングシステムを実行する、ことをさせる第2のステップと、
前記複数のプロセッサの各々に、
メモリアクセス要求を出力し、
前記複数のプロセッサの各々の前記第1の識別情報格納部に格納されている前記仮想マシン識別情報を、前記メモリアクセス要求に関連付けて出力する、
ことをさせる第3のステップと、
前記キャッシュメモリに、前記メモリアクセス要求がキャッシュヒットではない場合、前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、データの置き換え対象となるウェイを選択する、ことをさせる第4のステップと、
を備える半導体装置の制御方法。
【請求項19】
請求項18に記載の半導体装置の制御方法であって、
前記仮想マシン識別情報は、前記複数の仮想マシンの各々に関連付けられたユニークな情報であり、
前記第1のステップは、前記ハイパーバイザに、
前記仮想マシン識別情報を用いて、前記複数の仮想マシンの各々と前記複数のウェイの各々との対応関係を設定し、
前記複数の仮想マシンの各々と前記複数のウェイの各々との対応関係を前記割り当て情報に含める、
ことをさせるステップを含む、
半導体装置の制御方法。
【請求項20】
請求項18に記載の半導体装置の制御方法であって、
前記第4のステップは、前記キャッシュメモリに、
前記メモリアクセス要求に含まれるアドレスと前記複数のウェイに格納された情報とを比較することによって、前記メモリアクセス要求がキャッシュヒットであるか否かを判断し、
前記メモリアクセス要求がキャッシュヒットではない場合、前記メモリアクセス要求に関連付けられた前記仮想マシン識別情報および前記割り当て情報格納部に格納された前記割り当て情報に基づいて、前記複数のウェイから前記メモリアクセス要求に係るデータを格納するためのウェイを選択し、
前記キャッシュヒットではないメモリアクセス要求がリード要求である場合、メインメモリから前記リード要求に係るデータを読み出して前記選択されたウェイに格納し、
前記キャッシュヒットではないメモリアクセス要求がライト要求である場合、前記ライト要求に係るデータを前記選択されたウェイに格納する、
ことをさせるステップを含む、
半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、半導体装置および半導体装置の制御方法に関する。
【背景技術】
【0002】
自動運転や電動化、コネクテッド技術の進化に伴い、自動車の電気/電子(E/E)アーキテクチャの複雑化・高度化が進んでいる。自動車のE/Eアーキテクチャでは、多くの電子制御ユニット(ECU)が複雑に連携して動作する。ECUを構成する半導体装置には、複数のプロセッサが搭載され、複数のオペレーティングシステム(OS)が動作する。半導体装置には、キャッシュメモリなどのハードウェアリソースが含まれ、複数のOSがハードウェアリソースを共有する。複数のOSによるハードウェアリソースの競合を削減することは、各OSのパフォーマンスの安定性向上に寄与するため、複数のOSが動作する半導体装置においては、ハードウェアリソースをどのように複数のOSに割り当てるのかが重要となる。
【0003】
特許文献1は、複数のOSが動作するマルチプロセッサシステムにおいて、各プロセッサが使用可能なキャッシュメモリの量を保証する技術を開示する。特許文献1に開示されるマルチプロセッサシステムは、プロセッサ1,2と、主記憶と、プロセッサ1,2と主記憶との間に接続されるキャッシュメモリを備える。キャッシュメモリは、ウェイ1~4と、プロセッサ1,2が使用可能なウェイの情報を保持するプロセッサ指定手段と、プロセッサ指定手段の設定データに基づきウェイを選択するウェイ選択手段を含む。キャッシュメモリは、キャッシュミス時に、ウェイ選択手段によって選択されたウェイにキャッシュ割り当てを行う。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009-15509号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示されるマルチプロセッサシステムでは、プロセッサ毎に異なるOS(OS_A,OS_B)が動作する。例えば、プロセッサ指定手段の設定データが、プロセッサ1にウェイ1,2を割り当て、プロセッサ2にウェイ3,4を割り当てるものだとする。この場合、プロセッサ1で動作するOS_Aはウェイ1,2を使用でき、プロセッサ2で動作するOS_Bはウェイ3,4を使用できる。しかしながら、特許文献1に開示されるマルチプロセッサシステムでは、プロセッサとウェイとを対応付け、OSが動作するプロセッサを固定する必要がある。そのため、プロセッサ上で動作するOSが動的に切り替わるプロセッサシステムには、特許文献1に開示されるキャッシュメモリのウェイ割り当て手法を適用することはできない。
【0006】
その他の課題および新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
実施の形態に係る半導体装置は、ハイパーバイザによって管理される複数の仮想マシンが動作する装置である。半導体装置は、複数の仮想マシンを実行可能な複数のプロセッサおよびキャッシュメモリを備える。キャッシュメモリは、複数のウェイおよび前記複数のウェイの割り当てを設定するための割り当て情報を格納する割り当て情報格納部を有する。複数の仮想マシンの各々は、互いに異なるオペレーティングシステムを実行する。複数のプロセッサの各々は、第1の識別情報格納部を有する。ハイパーバイザは、複数の仮想マシンの各々が使用できる複数のウェイのうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。ハイパーバイザは、複数のプロセッサの各々が複数の仮想マシンのいずれかを実行する場合、複数のプロセッサの各々によって実行される仮想マシンを識別するための仮想マシン識別情報を、仮想マシンを実行する前記複数のプロセッサの各々の第1の識別情報格納部に格納する。複数のプロセッサの各々は、メモリアクセス要求を出力する際に、複数のプロセッサの各々の第1の識別情報格納部に格納されている仮想マシン識別情報を、メモリアクセス要求に関連付けて出力する。キャッシュメモリは、メモリアクセス要求がキャッシュヒットではない場合、メモリアクセス要求に関連付けられた仮想マシン識別情報および割り当て情報格納部に格納された割り当て情報に基づいて、データの置き換え対象となるウェイを選択する。
【発明の効果】
【0008】
実施の形態によれば、互いに異なるOSを実行する複数の仮想マシンを管理するハイパーバイザが、仮想マシンを実行する複数のプロセッサの各々に仮想マシン識別情報を設定する。これにより、プロセッサ上で動作するOSが動的に切り替わる場合においても、実行中のOSとキャッシュメモリのウェイとの間の割り当てを適切に設定することができる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態1に係る半導体装置の構成の一例を示すブロック図である。
図2図2は、実施の形態1に係るソフトウェアの構成を説明するための模式図である。
図3図3は、実施の形態1に係る半導体装置の動作の一例を示すフローチャートである。
図4図4は、実施の形態1に係る割り当て情報の一例を示す図である。
図5図5は、実施の形態1に係る割り当て情報の一例を示す図である。
図6図6は、実施の形態1に係るキャッシュメモリの動作の一例を示すフローチャートである。
図7図7は、実施の形態1の変形例1に係る割り当て情報の一例を示す図である。
図8図8は、実施の形態1の変形例2に係る半導体装置の構成の一例を示すブロック図である。
図9図9は、実施の形態2に係る半導体装置の構成の一例を示すブロック図である。
図10図10は、実施の形態2に係るソフトウェアの構成を説明するための模式図である。
図11図11は、実施の形態2に係る半導体装置の動作の一例を示すフローチャートである。
図12図12は、実施の形態2に係る割り当て権限情報の一例を示す図である。
図13図13は、実施の形態2に係るOSによる割り当て情報の設定の処理の一例を示すフローチャートである。
図14図14は、実施の形態2に係る割り当て情報の一例を示す図である。
図15図15は、実施の形態2に係るキャッシュメモリの動作の一例を示すフローチャートである。
図16図16は、実施の形態3に係る半導体装置の構成の一例を示すブロック図である。
図17図17は、実施の形態3に係るソフトウェアの構成を説明するための模式図である。
図18図18は、実施の形態3に係るプロセッサの動作状態を説明するための状態遷移図である。
図19図19は、実施の形態3に係るセキュア動作の設定の処理の一例を示すフローチャートである。
図20図20は、実施の形態3に係るセキュア情報の一例を示す図である。
図21図21は、実施の形態3に係る割り当て情報の一例を示す図である。
図22図22は、実施の形態3に係る非セキュア動作の設定の処理の一例を示すフローチャートである。
図23図23は、実施の形態3に係るキャッシュメモリの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照して詳細に説明する。なお、明細書および図面において、同一の構成要素または対応する構成要素には、同一の符号を付し、重複する説明は省略する。また、図面では、説明の便宜上、構成を省略または簡略化している場合もある。
【0011】
[実施の形態1]
図1は、実施の形態1に係る半導体装置100の構成の一例を示すブロック図である。図1に示されるように、半導体装置100は、プロセッサ110,120、キャッシュメモリ130、メインメモリ140およびバス150,160を備える。プロセッサ110,120は、バス150を介して、キャッシュメモリ130に接続される。キャッシュメモリ130は、バス160を介して、メインメモリ140に接続される。それゆえ、プロセッサ110,120は、バス150,160を介して、キャッシュメモリ130およびメインメモリ140の中に格納されたデータにアクセスすることができる。
【0012】
実施の形態1に係る半導体装置100では、ハイパーバイザによって管理される複数の仮想マシン(VM)が動作する。ここで、図2を用いて、VMの概念について説明する。図2は、実施の形態1に係るソフトウェアの構成を説明するための模式図である。図2に示されるように、プロセッサ上に仮想化ソフトウェアであるハイパーバイザが実装される。ハイパーバイザ上には、第1のVM(VM1)および第2のVM(VM2)が構成される。ハイパーバイザは、VM1およびVM2の作成、実行および切り替えなどを行うことによって、VM1およびVM2の実行スケジュールを管理する。
【0013】
実施の形態1に係る複数のVMの各々は、互いに異なるOSを実行する。図2に示されるように、VM1は、第1のオペレーティングシステム(OS1)を実行し、OS1は、VM1上で動作する。VM2は、第2のオペレーティングシステム(OS2)を実行し、OS2は、VM2上で動作する。OS1とOS2は、互いに異なるOSである。ハイパーバイザは、VM1にOS1を実行させ、VM2にOS2を実行させることにより、OS1およびOS2の実行を管理することができる。
【0014】
実施の形態1では、ハイパーバイザによって管理される2つのVMおよび2つのOSが動作する半導体装置100が例示される。しかしながら、VMおよびOSの数は、これに限定されない。VMおよびOSの数は、複数であればよい。
【0015】
図1において、プロセッサ110は、識別情報を格納するための第1の識別情報格納部111を備える。プロセッサ110がハイパーバイザを実行する際、第1の識別情報格納部111には、ハイパーバイザを識別するための情報であるハイパーバイザ識別情報(HYID)が格納される。プロセッサ110がVMを実行する際、第1の識別情報格納部111には、VMを識別するための情報である仮想マシン識別情報(VMID)が格納される。
【0016】
プロセッサ120は、識別情報を格納するための第1の識別情報格納部121を備える。プロセッサ120がハイパーバイザを実行する際、第1の識別情報格納部121には、HYIDが格納される。プロセッサ120がVMを実行する際、第1の識別情報格納部121には、VMIDが格納される。
【0017】
VMIDは、VM1を識別するためのVMID(VMID1)およびVM2を識別するためのVMID(VMID2)を含む。プロセッサ110がVM1を実行する場合、第1の識別情報格納部111には、VMID1が格納される。プロセッサ110がVM2を実行する場合、第1の識別情報格納部111には、VMID2が格納される。プロセッサ120がVM1を実行する場合、第1の識別情報格納部121には、VMID1が格納される。プロセッサ120がVM2を実行する場合、第1の識別情報格納部121には、VMID2が格納される。したがって、半導体装置100上でVMが動作している際には、第1の識別情報格納部111,121に格納されるVMIDを参照すれば、プロセッサ110,120で実行されているVMを特定することができる。
【0018】
また、プロセッサ110,120の各々は、バス150を介してキャッシュメモリ130へメモリアクセス要求を出力する際、プロセッサ110,120の各々の第1の識別情報格納部に格納されたHYIDもしくはVMIDをメモリアクセス要求に関連付けて出力する。メモリアクセス要求に関連付けられて出力されたHYIDもしくはVMIDは、キャッシュメモリ130においてメモリアクセス要求がキャッシュヒットではないと判定された場合に、データの置き換え対象となるキャッシュメモリ130のウェイを決定するための情報として利用される。
【0019】
キャッシュメモリ130は、ウェイ131-134および割り当て情報格納部135を備える。実施の形態1では、4ウェイセットアソシエイティブ方式のキャッシュメモリが例示される。また、割り当て情報格納部135は、割り当て情報を格納する。割り当て情報は、ウェイ131-134の割り当てを設定するための情報である。実施の形態1では、割り当て情報は、ハイパーバイザ、VM1およびVM2のうちの少なくとも1つが使用できるウェイを割り当てるように設定されている。
【0020】
キャッシュメモリ130は、バス150を介して、プロセッサ110,120の各々から出力されたメモリアクセス要求を受け取る。キャッシュメモリ130は、メモリアクセス要求に含まれるアドレスとウェイ131-134の各々に格納された情報とを比較することによって、メモリアクセス要求がキャッシュヒットであるか否かを判定する。メモリアクセス要求がキャッシュヒットであると判定された場合、キャッシュメモリ130は、ウェイ131-134のいずれかにアクセスして、データの読み出しもしくはデータの書き込みを行う。一方、メモリアクセス要求がキャッシュヒットではないと判定された場合、キャッシュメモリ130は、メモリアクセス要求に関連付けられてプロセッサ110,120の各々から出力されたHYIDもしくはVMID、および、割り当て情報格納部135に格納された割り当て情報に基づいて、データの置き換え対象となるウェイを選択する。
【0021】
メインメモリ140は、ハイパーバイザのデータ、OS1のデータおよびOS2のデータを格納する。ハイパーバイザのデータは、ハイパーバイザ用のプログラムおよびハイパーバイザが使用する各種データを含む。OS1のデータは、OS1用のプログラムおよびOS1が使用する各種データを含む。OS2のデータは、OS2用のプログラムおよびOS2が使用する各種データを含む。
【0022】
プロセッサ110,120は、メインメモリ140に格納されたハイパーバイザ用のプログラムを読み出して実行する。プロセッサ110,120は、ハイパーバイザ用のプログラムを実行することによって、ハイパーバイザもしくはVMを実行する。ハイパーバイザの機能、すなわち、ハイパーバイザによるVMの作成、実行および切り替えは、プロセッサ110,120がハイパーバイザ用のプログラムを実行することによって実現される。
【0023】
VM1がOS1を実行する際、プロセッサ110,120は、メインメモリ140に格納されたOS1用のプログラムを読み出して実行する。VM2がOS2を実行する際、プロセッサ110,120は、メインメモリ140に格納されたOS2用のプログラムを読み出して実行する。
【0024】
次に、実施の形態1に係る半導体装置100の動作について説明する。図3は、実施の形態1に係る半導体装置100の動作の一例を示すフローチャートである。まず、ステップS110において、ハイパーバイザの起動の処理が行われる。ステップS110の処理では、プロセッサ110,120の少なくとも一方がメインメモリ140に格納されたハイパーバイザ用のプログラムを読み出して実行する。これにより、ハイパーバイザが起動する。
【0025】
プロセッサ110,120の各々がハイパーバイザを実行する場合、ハイパーバイザは、HYIDを、ハイパーバイザを実行するプロセッサ110,120の各々の第1の識別情報格納部に格納する。すなわち、プロセッサ110がハイパーバイザを実行する場合、ハイパーバイザは、第1の識別情報格納部111にHYIDを格納する。プロセッサ120がハイパーバイザを実行する場合、ハイパーバイザは、第1の識別情報格納部121にHYIDを格納する。
【0026】
次に、ステップS120において、ハイパーバイザのための割り当て情報の設定の処理が行われる。ステップS120では、ハイパーバイザは、ハイパーバイザが使用できるウェイ131-134のうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。
【0027】
図4は、実施の形態1に係る割り当て情報の一例を示す図である。割り当て情報は、識別情報(ID)とウェイとが対応付けされることによって構成される。図4に示されるように、ハイパーバイザは、HYIDを用いて、ハイパーバイザとウェイ131-134の各々との対応関係を設定する。HYIDは、ハイパーバイザを識別するための情報であり、ハイパーバイザに関連付けられたユニークな情報である。図4では、割り当てされることが“X”の表記を用いて示されている。図4以外の図面においても、同様の表記とされる。ハイパーバイザは、ハイパーバイザとウェイ131-134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。
【0028】
図4では、全てのウェイ131-134がハイパーバイザに割り当てられている。そのため、プロセッサ110,120の各々が、ハイパーバイザを実行中にメモリアクセス要求を出力する場合、全てのウェイ131-134がアクセスの対象となり得る。しかしながら、ハイパーバイザは、ハイパーバイザがウェイ131-134のうちの一部のウェイのみを使用可能とするように割り当て情報を設定することもできる。また、ハイパーバイザは、ハイパーバイザがウェイ131-134のいずれも使用できないように割り当て情報を設定することもできる。
【0029】
次に、ステップS130において、VMの作成の処理が行われる。ステップS130では、ハイパーバイザは、VMを作成する。VMの作成の処理には、VMが動作するメモリ領域の確保、VMの識別情報であるVMIDの作成などの処理が含まれる。実施の形態1では、ハイパーバイザは、OS1を実行するためのVM1およびOS2を実行するためのVM2を作成する。また、VM1およびVM2の作成において、ハイパーバイザは、VM1に関連付けられたユニークな情報であるVMID1およびVM2に関連付けられたユニークな情報であるVMID2を作成する。
【0030】
次に、ステップS140において、VMのための割り当て情報の設定の処理が行われる。ステップS140では、ハイパーバイザは、VM1およびVM2の各々が使用できるウェイ131-134のうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。
【0031】
図5は、実施の形態1に係る割り当て情報の一例を示す図である。図5に示されるように、ハイパーバイザは、VMID1およびVMID2を用いて、VM1およびVM2の各々とウェイ131-134の各々との対応関係を設定する。図5の例では、VMID1とウェイ131,132とが対応付けられ、VMID2とウェイ133,134とが対応付けられている。そのため、VM1は、ウェイ131,132を使用可能であり、VM2は、ウェイ133,134を使用可能である。また、VMに全てのウェイ131-134が割り当てられたので、ハイパーバイザへのウェイの割り当てがないように割り当て情報が更新される。ハイパーバイザは、VM1およびVM2の各々とウェイ131-134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。
【0032】
なお、図5では、ハイパーバイザにウェイを割り当てず、VM1にウェイ131,132を割り当て、VM2にウェイ133,134を割り当てているが、これに限定されない。例えば、ハイパーバイザにウェイ131,132を、VM1にウェイ133を、VM2にウェイ134を割り当てるようにしてもよい。また、VM1とVM2に同じ数のウェイを割り当てる必要はない。VMの各々が実行する処理の内容に応じて、割り当てるウェイの数を調整することができる。例えば、VM1にウェイ131-133を、VM2にウェイ134を割り当てるようにしてもよい。
【0033】
最後に、ステップS150において、VM(OS)の実行の処理が行われる。ステップS150では、ハイパーバイザは、VM1およびVM2を実行する。ハイパーバイザは、OS1を実行するVM1およびOS2を実行するVM2の実行スケジュールを制御することによって、VM単位でOSの実行を管理する。
【0034】
ハイパーバイザは、VM1およびVM2の実行スケジュールを制御する際、VM1およびVM2を実行するプロセッサ110,120を決定する。また、ハイパーバイザは、プロセッサ110,120の各々がVM1およびVM2のいずれかを実行する際、プロセッサ110,120の各々によって実行されるVMのVMIDを、VMを実行するプロセッサ110,120の各々の第1の識別情報格納部に格納する。例えば、プロセッサ110,120の両方がVM1を実行する場合、ハイパーバイザは、第1の識別情報格納部111,121の両方にVMID1を格納する。プロセッサ110がVM1を実行し、プロセッサ120がVM2を実行する場合、ハイパーバイザは、第1の識別情報格納部111にVMID1を、第1の識別情報格納部121にVMID2を格納する。
【0035】
ハイパーバイザは、プロセッサ110,120によって実行されるVMを切り替える際に、次に実行されるVMIDを第1の識別情報格納部111,121に格納する。例えば、プロセッサ110上でVM1が動作している場合、第1の識別情報格納部111には、VMID1が格納されている。その後、プロセッサ110上で動作するVMがVM1からVM2に切り替わる場合、ハイパーバイザは、第1の識別情報格納部111にVMID2を格納する。なお、VMの切り替え時、現在のVMに係る内部レジスタの値などのデータは、スタックに退避され、次のVMに係る内部レジスタの値などのデータは、スタックから読み出される。
【0036】
続いて、実施の形態1に係るキャッシュメモリ130の動作について説明する。図6は、実施の形態1に係るキャッシュメモリ130の動作の一例を示すフローチャートである。プロセッサ110,120の各々は、ハイパーバイザもしくはVMを実行中に、キャッシュメモリ130に対してメモリアクセス要求を出力する。図6では、当該メモリアクセス要求に応答して動作するキャッシュメモリ130の動作について説明される。
【0037】
まず、ステップS210において、メモリアクセス要求およびID(HYID、VMID)の受信の処理が行われる。ステップS210では、キャッシュメモリ130は、バス150を介して、プロセッサ110,120の各々からメモリアクセス要求を受け取る。
【0038】
また、プロセッサ110,120の各々は、メモリアクセス要求を出力する際、第1の識別情報格納部に格納されたHYIDもしくはVMIDをメモリアクセス要求に関連付けてキャッシュメモリ130へ出力する。すなわち、プロセッサ110,120の各々は、ハイパーバイザを実行中にメモリアクセス要求をキャッシュメモリ130へ出力する際、第1の識別情報格納部に格納されているHYIDをメモリアクセス要求に関連付けて出力する。また、プロセッサ110,120の各々は、VMを実行中にメモリアクセス要求をキャッシュメモリ130へ出力する際、第1の識別情報格納部に格納されているVMIDをメモリアクセス要求に関連付けて出力する。キャッシュメモリ130は、バス150を介して、プロセッサ110,120の各々からメモリアクセス要求に関連付けられたHYIDもしくはVMIDを受け取る。
【0039】
なお、プロセッサ110,120の各々は、HYIDもしくはVMIDをメモリアクセス要求に含めて出力してもよい。あるいは、プロセッサ110,120は、HYIDもしくはVMIDをメモリアクセス要求に付加して出力してもよい。
【0040】
次に、ステップS220において、メモリアクセス要求がキャッシュヒットであるか否かを判定する処理が行われる。ウェイ131-134の各々は、タグメモリ部およびデータメモリ部を備え、タグメモリ部に格納されるタグアドレスとデータメモリ部に格納されるデータから構成される複数のエントリを有する。プロセッサ110,120の各々から出力されるメモリアクセス要求は、タグ部とインデックス部を有するアドレスを含む。ステップS220では、キャッシュメモリ130は、プロセッサ110,120の各々から出力されたメモリアクセス要求を受け取ると、アドレスのインデックス部によって指定されるエントリをウェイ131-134の各々から選択する。キャッシュメモリ130は、選択されたエントリに含まれるタグアドレスとアドレスのタグ部を比較することによって、プロセッサ110,120の各々から出力されたメモリアクセス要求がキャッシュヒットであるか否かを判定する。
【0041】
ステップS220において、タグアドレスとアドレスのタグ部が一致する場合、キャッシュメモリ130は、メモリアクセス要求がキャッシュヒットであると判定する。この場合には、メモリアクセス要求に係るデータは、キャッシュメモリ130に格納されている。メモリアクセス要求がキャッシュヒットであると判定された場合(ステップS220のYES)、処理はステップS260へ進む。一方、タグアドレスとアドレスのタグ部が一致しない場合、キャッシュメモリ130は、メモリアクセス要求がキャッシュヒットではないと判定する。この場合には、メモリアクセス要求に係るデータは、キャッシュメモリ130に格納されていない。メモリアクセス要求がキャッシュヒットではないと判定された場合(ステップS220のNO)、処理はステップS230へ進む。
【0042】
ステップS230において、ID(HYID、VMID)に基づくウェイの選択の処理が行われる。ステップS230では、キャッシュメモリ130は、メモリアクセス要求がキャッシュヒットではない場合、メモリアクセス要求に関連付けられたHYIDもしくはVMID、および、割り当て情報格納部135に格納されている割り当て情報に基づいて、ウェイ131-134からデータの置き換え対象となるウェイを選択する。データの置き換え対象となるウェイは、メモリアクセス要求に係るデータを格納するためのウェイとなる。
【0043】
キャッシュメモリ130は、メモリアクセス要求がキャッシュヒットではない場合、プロセッサ110,120の各々からメモリアクセス要求に関連付けられて出力されたHYIDもしくはVMIDを確認し、割り当て情報格納部135に格納された割り当て情報を参照する。
【0044】
キャッシュメモリ130は、メモリアクセス要求に関連付けられたHYIDを受け取った場合、当該メモリアクセス要求がハイパーバイザの動作中に出力されたメモリアクセス要求であると認識する。このとき、例えば、割り当て情報格納部135に格納された割り当て情報が図4によって示された情報を含んでいる場合、キャッシュメモリ130は、HYIDおよび図4に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ131-134を選択する。
【0045】
また、キャッシュメモリ130は、メモリアクセス要求に関連付けられたVMID1を受け取った場合、当該メモリアクセス要求がVM1の動作中に出力されたメモリアクセス要求であると認識する。このとき、例えば、割り当て情報格納部135に格納された割り当て情報が図5によって示された情報を含んでいる場合、キャッシュメモリ130は、VMID1および図5に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ131,132を選択する。
【0046】
キャッシュメモリ130は、メモリアクセス要求に関連付けられたVMID2を受け取った場合、当該メモリアクセス要求がVM2の動作中に出力されたメモリアクセス要求であると認識する。このとき、例えば、割り当て情報格納部135に格納された割り当て情報が図5によって示された情報を含んでいる場合、キャッシュメモリ130は、VMID2および図5に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ133,134を選択する。
【0047】
次に、ステップS240において、エントリの選択の処理が行われる。ステップS240では、キャッシュメモリ130は、選択されたウェイのうちのアドレスのインデックス部によって指定されるエントリの中から、1つのエントリを選択する。選択されるウェイが複数存在する場合、キャッシュメモリ130は、どのウェイのエントリを選択するかを判断する必要がある。しかしながら、その手法については特に限定されない。例えば、各エントリのタグメモリ部に有効フラグや参照履歴情報が含まれる場合、これらの情報に基づいて、エントリは選択されてもよい。有効フラグは、エントリ内のデータの有効性を示す情報である。キャッシュメモリ130は、有効フラグがセットされているエントリと有効フラグがセットされていないエントリがあれば、有効フラグがセットされているエントリを選択するようにしてもよい。また、参照履歴情報は、エントリへのアクセス頻度を示す情報である。キャッシュメモリ130は、参照履歴情報に基づいて、最も長く参照されていないエントリを選択するようにしてよい。
【0048】
次に、ステップS250において、データの書き戻しの処理が行われる。ステップS250では、キャッシュメモリ130は、選択されたエントリのデータメモリ部に格納されたデータを、メインメモリ140の対応するアドレスに書き戻す。なお、選択されたエントリに、有効フラグがセットされていない、あるいは、メインメモリ140へのデータの書き戻しが不要であることを示す情報が含まれている場合には、ステップS250の処理を省くことができる。
【0049】
最後に、ステップS260おいて、対象エントリへのアクセスの処理が行われる。メモリアクセス要求がキャッシュヒットである場合、アドレスのタグ部と一致したタグアドレスを格納するエントリがアクセス対象のエントリ(対象エントリ)となる。一方、メモリアクセス要求がキャッシュヒットではない場合、ステップS240の処理にて選択されたエントリがアクセス対象のエントリ(対象エントリ)となる。ステップS260では、キャッシュメモリ130は、対象エントリに対してアクセスを行う。
【0050】
メモリアクセス要求には、リード要求とライト要求が含まれる。キャッシュヒットであるメモリアクセス要求がリード要求である場合、キャッシュメモリ130は、対象エントリのデータメモリ部からデータを読み出す。キャッシュメモリ130は、対象エントリから読み出されたデータを、リード要求に係るデータ(リードデータ)として、メモリアクセス要求の発行元であるプロセッサへ出力する。
【0051】
一方、キャッシュヒットであるメモリアクセス要求がライト要求である場合、キャッシュメモリ130は、メモリアクセス要求の発行元であるプロセッサから出力されたライト要求に係るデータ(ライトデータ)を受け取る。キャッシュメモリ130は、ライトデータを対象エントリのデータメモリ部に格納する。
【0052】
また、キャッシュヒットではないメモリアクセス要求がリード要求である場合、キャッシュメモリ130は、メインメモリ140の対応するアドレスからデータを読み出す。キャッシュメモリ130は、メインメモリ140から読み出されたデータを、リード要求に係るデータ(リードデータ)として、対象エントリのデータメモリ部に格納する。すなわち、キャッシュメモリ130は、メインメモリ140からリードデータを読み出して、ステップS230において選択されたウェイに格納する。キャッシュメモリ130は、リードデータをメモリアクセス要求の発行元であるプロセッサへ出力する。
【0053】
一方、キャッシュヒットではないメモリアクセス要求がライト要求である場合、キャッシュメモリ130は、メモリアクセス要求の発行元であるプロセッサから出力されたライト要求に係るデータ(ライトデータ)を受け取る。キャッシュメモリ130は、ライトデータを対象エントリのデータメモリ部に格納する。すなわち、キャッシュメモリ130は、ライトデータをステップS230において選択されたウェイに格納する。
【0054】
このように、キャッシュメモリ130は、メモリアクセス要求がキャッシュヒットではない場合、割り当て情報によって設定されたウェイの範囲内において、データ置き換えの処理を実行する。これにより、割り当て情報によって設定されていないウェイに対しては、データ置き換えの処理は発生しない。例えば、割り当て情報が図5に示される情報を含み、かつ、VM1が実行されている場合、VM1の処理によって、ウェイ133,134に格納されているVM2に係るデータが追い出されることはない。また、VM2の処理によって、ウェイ131,132に格納されているVM1に係るデータも追い出されることはない。
【0055】
以上の通り、実施の形態1によれば、ハイパーバイザは、互いに異なるOSを実行する複数のVMの各々が使用できる複数のウェイのうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。ハイパーバイザは、プロセッサがVM(OS)を実行する際、VM(OS)を実行するプロセッサにVMIDを設定する。プロセッサは、キャッシュメモリへメモリアクセス要求を出力する際、設定されたVMIDをメモリアクセス要求に関連付けて出力する。キャッシュメモリは、メモリアクセス要求がキャッシュヒットではない場合、VMIDと割り当て情報に基づいて、データの置き換え対象となるウェイを選択する。このように、実施の形態1に係る半導体装置では、プロセッサ上で動作するOSが動的に切り替わる場合においても、実行中のOS、換言すれば、OSを実行中のVMと、キャッシュメモリと、の間の割り当てを適切に設定することができる。
【0056】
[実施の形態1の変形例1]
次に、実施の形態1の変形例1について説明する。実施の形態1では、ハイパーバイザまたはVMの各々が各ウェイを専有するように割り当て情報が設定されている。例えば、図5のケースの場合、VM1は、ウェイ131,132を専有して使用可能であり、VM2は、ウェイ133,134を専有して使用可能である。しかしながら、実施の形態1の変形例1では、割り当て情報は、ハイパーザイザおよびVMが1つのウェイを共有するように設定される。
【0057】
図7は、実施の形態1の変形例1に係る割り当て情報の一例を示す図である。図7の例では、VMID1とウェイ131-133とが対応付けられ、VMID2とウェイ132-134とが対応付けられている。そのため、VM1は、ウェイ131-133を使用可能であり、VM2は、ウェイ132-134を使用可能である。この場合、ウェイ132,133は、VM1およびVM2によって共用される。
【0058】
例えば、VM1上で動作するOS1およびVM2上で動作するOS2におけるキャッシュメモリ130の利用量の最大値が、それぞれ、キャッシュメモリ130の容量値の3/4であると想定する。また、VM1上で動作するOS1およびVM2上で動作するOS2のキャッシュメモリ130の使用は、大半の時間において、キャッシュメモリ130の容量の1/2未満であると想定する。
【0059】
図7に示される割り当て情報によれば、VM1上で動作するOS1は、ウェイ131(キャッシュメモリ130の容量の1/4)を常に使用でき、最大ではウェイ131-133(キャッシュメモリ130の容量の3/4)を使用できる。また、VM2上で動作するOS2は、ウェイ134(キャッシュメモリ130の容量の1/4)を常に使用でき、最大ではウェイ132-134(キャッシュメモリ130の容量の3/4)を使用できる。この場合、一部のウェイを共有化させることによって、キャッシュメモリ130の使用効率の向上が期待できる。
【0060】
このように、実施の形態1の変形例1によれば、ハイパーバイザは、複数のウェイのうちの少なくとも1つのウェイが、複数の仮想マシンのうちの少なくとも2つの仮想マシンによって共有されるように割り当て情報を設定する。これにより、キャッシュメモリの複数のウェイを柔軟に使用することができ、キャッシュメモリの利用効率を向上させることができる。
【0061】
[実施の形態1の変形例2]
次に、実施の形態1の変形例2について説明する。実施の形態1に係る割り当て情報は、動的に変更されないが、実施の形態1の変形例2に係る割り当て情報は、キャッシュヒット率に応じて動的に変更される。図8は、実施の形態1の変形例2に係る半導体装置100aの構成の一例を示すブロック図である。図8に示されるように、図1のキャッシュメモリ130は、キャッシュメモリ130aに変更される。
【0062】
キャッシュメモリ130aは、図1のキャッシュメモリ130の構成に加えて、ヒット率算出回路136を備える。ヒット率算出回路136は、VMの実行中にプロセッサ110,120の各々から出力されるメモリアクセス要求を監視する。ヒット率算出回路136は、メモリアクセス要求に関連付けられたVMIDに基づいて、VM毎にキャッシュヒットであると判定されたメモリアクセス要求の数をカウントする。ヒット率算出回路136は、カウントした結果に基づいて、VM毎にキャッシュヒット率を算出する。ヒット率算出回路136によるヒット率の算出は、所定の期間毎に行われる。
【0063】
ハイパーバイザは、ヒット率算出回路136からVM毎に算出されたキャッシュヒット率を受け取り、VMのキャッシュヒット率の差分を算出する。例えば、VM1のキャッシュヒット率が70%、VM2のキャッシュヒット率が95%であれば、VMのキャッシュヒット率の差分は、25%となる。ハイパーバイザは、算出されたキャッシュヒット率の差分と所定の値とを比較する。
【0064】
ハイパーバイザは、算出されたキャッシュヒット率の差分が所定の値より大きい場合には、キャッシュヒット率の低いVMが使用可能なウェイの数を増やすように割り当て情報を変更する、あるいは、キャッシュヒット率の高いVMが使用可能なウェイの数を減らすように割り当て情報を変更する。所定の値は、割り当て情報を変更するか否かを決めるための閾値となる。例えば、VM1のキャッシュヒット率が70%、VM2のキャッシュヒット率が95%、所定の値が20%であるとすると、VMのキャッシュヒット率の差分は、25%となり、所定の値より大きい。この場合、ハイパーバイザは、VM1が使用可能なウェイの数を増やすように割り当て情報を変更する、VM2が使用可能なウェイの数を減らすように割り当て情報を変更する、あるいは、VM1が使用可能なウェイの数を増やしかつVM2が使用可能なウェイの数を減らすように割り当て情報を変更する。
【0065】
このように、実施の形態1の変形例2によれば、ヒット率算出回路は、VM毎にキャッシュヒット率を算出する。ハイパーバイザは、VMのキャッシュヒット率の差分に基づいて、動的に割り当て情報を変更する。これにより、VM毎のキャッシュヒット率に偏りが生じた場合でも、当該偏りを抑制するように割り当て情報を自動で調整することができる。
【0066】
[実施の形態2]
次に、実施の形態2について説明する。実施の形態2に係る半導体装置は、OSがOSおよびOS上で動作するアプリケーション(APP)などのソフトウェアに対してウェイを割り当てる点で、実施の形態1に係る半導体装置とは異なる。図9は、実施の形態2に係る半導体装置200の構成の一例を示すブロック図である。図9に示されるように、図1のプロセッサ110,120、キャッシュメモリ130およびメインメモリ140は、それぞれ、プロセッサ210,220、キャッシュメモリ230およびメインメモリ240に変更される。
【0067】
実施の形態2に係る半導体装置200では、VMが実行するOS上でAPPが動作する。図10は、実施の形態2に係るソフトウェアの構成を説明するための模式図である。図10に示されるように、VM1は、OS1上で第1のアプリケーション(APP1)を実行し、APP1はOS1上で動作する。VM2は、OS2上で第2のアプリケーション(APP2)を実行し、APP2はOS2上で動作する。APP1およびAPP2以外の構成については、図2と同様である。なお、実施の形態2では、OS1上で動作するAPP1およびOS2上で動作するAPP2が例示されるが、VM上で動作するAPPの数は、1つに限定されない。
【0068】
図9において、プロセッサ210は、第1の識別情報格納部111に加えて、識別情報を格納するための第2の識別情報格納部211を備える。プロセッサ210がOSを実行する際、第2の識別情報格納部211には、OSを識別するための第1のソフトウェア識別情報(SWID1)が格納される。プロセッサ210がAPPを実行する際、第2の識別情報格納部211には、APPを識別するための第2のソフトウェア識別情報(SWID2)が格納される。
【0069】
プロセッサ220は、第1の識別情報格納部121に加えて、識別情報を格納するための第2の識別情報格納部221を備える。プロセッサ220がOSを実行する際、第2の識別情報格納部221には、SWID1が格納される。プロセッサ220がAPPを実行する際、第2の識別情報格納部221には、SWID2が格納される。
【0070】
このように、第2の識別情報格納部211,221には、二種類のソフトウェア識別情報(SWID)が格納され得る。なお、OS1およびOS2のいずれが実行された場合でも、第2の識別情報格納部211,221には、SWID1が格納される。また、APP1およびAPP2のいずれが実行された場合でも、第2の識別情報格納部211,221には、SWID2が格納される。
【0071】
また、プロセッサ210,220の各々は、バス150を介してキャッシュメモリ230へメモリアクセス要求を出力する際、第1の識別情報格納部に格納されたVMIDに加えて、第2の識別情報格納部に格納されたSWID1もしくはSWID2をメモリアクセス要求に関連付けて出力する。メモリアクセス要求に関連付けられて出力されたVMID、および、SWID1もしくはSWID2は、キャッシュメモリ230においてメモリアクセス要求がキャッシュヒットではないと判定された場合に、データの置き換え対象となるキャッシュメモリ230のウェイを決定するための情報として利用される。
【0072】
キャッシュメモリ230は、図1のキャッシュメモリ130の構成に加えて、割り当て権限情報格納部231を備える。割り当て権限情報格納部231は、割り当て権限情報を格納する。割り当て権限情報は、VMにおいて実行されるOSに、ウェイ131-134のうちの少なくとも1つのウェイを割り当てる権限を与えるための情報である。
【0073】
メインメモリ240は、ハイパーバイザのデータ、OS1のデータおよびOS2のデータに加えて、APP1のデータおよびAPP2のデータを格納する。APP1のデータは、APP1用のプログラムおよびAPP1が使用する各種データを含む。APP2のデータは、APP2用のプログラムおよびAPP2が使用する各種データを含む。
【0074】
VM1がAPP1を実行する際、プロセッサ210,220は、メインメモリ240に格納されたAPP1用のプログラムを読み出して実行する。VM2がAPP2を実行する際、プロセッサ210,220は、メインメモリ240に格納されたAPP2用のプログラムを読み出して実行する。
【0075】
次に、実施の形態2に係る半導体装置200の動作について説明する。図11は、実施の形態2に係る半導体装置200の動作の一例を示すフローチャートである。図11に示されるように、図11のフローチャートは、図3に示されるステップS110-S140の処理を含む。また、図11では、図3のステップS150は、ステップS320に変更され、ステップS140とステップS320との間に、ステップS310が追加される。
【0076】
ステップS310において、割り当て権限情報の設定の処理が行われる。ステップS310の処理では、ハイパーバイザは、複数のVMの各々において実行されるOSにウェイ131-134のうちの少なくとも1つのウェイを割り当てる権限を与える割り当て権限情報を設定し、割り当て権限情報格納部231に格納する。
【0077】
図12は、実施の形態2に係る割り当て権限情報の一例を示す図である。割り当て権限情報は、VMIDとウェイとが対応付けされることによって構成される。図12に示されるように、ハイパーバイザは、VMIDを用いて、VM1およびVM2の各々とウェイ131-134の各々との対応関係を設定する。図12の例では、VMID1とウェイ131,132とが対応付けられ、VMID2とウェイ133,134とが対応づけられている。そのため、VM1上で動作するOS1には、ウェイ131,132を割り当てる権限が与えられる。また、VM2上で動作するOS2には、ウェイ133,134を割り当てる権限が与えられる。
【0078】
次に、ステップS320において、VM(OS,APP)の実行の処理が行われる。ステップS320では、VMが実行されるため、図3のステップS150において説明されたように、ハイパーバイザは、プロセッサ210,220によって実行されるVMのVMIDを、VMを実行するプロセッサ210,220の各々の第1の識別情報格納部に格納する。また、プロセッサ210,220の各々は、VMを実行中にメモリアクセス要求を出力する際、プロセッサ210,220の各々の第1の識別情報格納部に格納されているVMIDをメモリアクセス要求に関連付けて出力する。
【0079】
さらに、プロセッサ210,220の各々がOSもしくはAPPを実行する場合、VM上で動作するOSは、SWID1もしくはSWID2を、OSもしくはAPPを実行するプロセッサ210,220の各々の第2の識別情報格納部に格納する。すなわち、VM1上で動作するOS1は、プロセッサ210上でOS1の処理(OS1のカーネルの処理)が実行される場合、第2の識別情報格納部211にSWID1を格納する。VM1上で動作するOS1は、プロセッサ210上でAPP1の処理が実行される場合、第2の識別情報格納部211にSWID2を格納する。VM2上で動作するOS2は、プロセッサ220上でOS2の処理(OS2のカーネルの処理)が実行される場合、第2の識別情報格納部221にSWID1を格納する。VM2上で動作するOS2は、プロセッサ220上でAPP2の処理が実行される場合、第2の識別情報格納部221にSWID2を格納する。
【0080】
また、プロセッサ210,220の各々は、OSもしくはAPPの処理の実行中にメモリアクセス要求をキャッシュメモリ230へ出力する際、プロセッサ210,220の各々の第2の識別情報格納部に格納されているSWID1もしくはSWID2をメモリアクセス要求に関連付けて出力する。すなわち、プロセッサ210,220の各々は、OS1もしくはOS2の処理の実行中にメモリアクセス要求をキャッシュメモリ230へ出力する際、第2の識別情報格納部に格納されているSWID1をメモリアクセス要求に関連付けて出力する。また、プロセッサ210,220の各々は、APP1もしくはAPP2の処理の実行中にメモリアクセス要求をキャッシュメモリ230へ出力する際、第2の識別情報格納部に格納されているSWID2をメモリアクセス要求に関連付けて出力する。
【0081】
このように、ステップS320のVM(OS,APP)の実行の処理においては、ハイパーバイザが第1の識別情報格納部にVMIDを格納する処理が行われるだけでなく、OSが第2の識別情報格納部にSWID1もしくはSWID2を格納する処理も行われる。また、プロセッサ210,220の各々は、メモリアクセス要求を出力する際に、プロセッサ210,220の各々の第1の識別情報格納部に格納されているVMIDだけではなく、プロセッサ210,220の各々の第2の識別情報格納部に格納されているSWID1もしくはSWID2も、メモリアクセス要求に関連付けて出力する。
【0082】
また、VM上で動作するOSは、割り当て権限情報に基づいて、割り当て情報を設定する。図13は、実施の形態2に係るOSによる割り当て情報の設定の処理の一例を示すフローチャートである。図13に示されるように、図13のフローチャートは、ステップS321およびステップS322を含む。ステップS321およびステップS322の処理は、図11のステップS320の処理の中で行われる。
【0083】
まず、ステップS321において、割り当て権限情報の参照の処理が行われる。ステップS321の処理では、VM上で動作するOSは、割り当て権限情報格納部231に格納された割り当て権限情報を参照して、OS自身に割り当てられた少なくとも1つのウェイの範囲を確認する。例えば、割り当て権限情報格納部231に、図12に示される割り当て権限情報が格納されている場合、VM1上で動作するOS1は、割り当て権限情報を参照して、OS1自身に割り当てられた少なくとも1つのウェイの範囲がウェイ131,132であることを確認する。換言すれば、OS1は、ハイパーバイザによってOS1にウェイ131,132を割り当てる権限が与えられていることを確認する。また、VM2上で動作するOS2は、割り当て権限情報を参照して、OS2自身に割り当てられた少なくとも1つのウェイの範囲がウェイ133,134であることを確認する。換言すれば、OS2は、ハイパーバイザによってOS2にウェイ133,134を割り当てる権限が与えられていることを確認する。
【0084】
次に、ステップS322において、OSおよびAPPのための割り当て情報の設定の処理が行われる。ステップS322の処理では、VM上で動作するOSは、割り当てられた少なくとも1つのウェイの範囲内において、OS自身およびOS自身の上で動作するAPPの各々が使用できるウェイ131-134のうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。
【0085】
図14は、実施の形態2に係る割り当て情報の一例を示す図である。図14に示されるように、VM上で動作するOSは、VMID1とSWID1もしくはSWID2との組み合わせ、および、VMID2とSWID1もしくはSWID2との組み合わせを用いて、OS自身に割り当てられた少なくとも1つのウェイの範囲内において、OS自身およびOS自身の上で動作するAPPの各々とウェイ131-134の各々との対応関係を設定する。
【0086】
また、図14は、図12に示される割り当て権限が設定されている場合に対応している。割り当てる権限が与えられていない領域には、“-”の表記が使われている。図14以外の図面においても、同様の表記とされる。VM上で動作するOSは、OS自身およびOS自身の上で動作するAPPの各々とウェイ131-134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。
【0087】
SWID1は、VMで実行されるOSに関連付けられたユニークな情報である。SWID2は、VMで実行されるAPPに関連付けられたユニークな情報である。SWID1およびSWID2は、OSによって生成される。
【0088】
図14では、VM1上で動作するOS1は、ハイパーバイザによってOS1にウェイ131,132の範囲内(図14の領域A)で割り当てる権限が与えられているため、VMID1およびSWID1の組み合わせと、ウェイ132と、を対応付け、VMID1およびSWID2の組み合わせと、ウェイ131と、を対応付ける。OS1は、OS1およびAPP1の各々とウェイ131,132の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。これにより、OS1は、ウェイ132を使用可能となり、OS1上で動作するAPP1は、ウェイ131を使用可能となる。
【0089】
一方、VM2上で動作するOS2は、ハイパーバイザによってOS2にウェイ133,134の範囲内(図14の領域B)で割り当てる権限が与えられているため、VMID2およびSWID1の組み合わせと、ウェイ134と、を対応付け、VMID2およびSWID2の組み合わせと、ウェイ133と、を対応付ける。OS2は、OS2およびAPP2の各々とウェイ133,134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。これにより、OS2は、ウェイ134を使用可能となり、OS2上で動作するAPP2は、ウェイ133を使用可能となる。
【0090】
なお、キャッシュメモリ230は、割り当て権限の範囲を超えて設定された不適切な割り当て情報を、割り当て情報格納部135に格納させない機能を備えていてもよい。また、キャッシュメモリ230は、不適切な割り当て情報が割り当て情報格納部135に格納されたとしても、その情報を無視する機能を備えていてもよい。
【0091】
続いて、実施の形態2に係るキャッシュメモリ230の動作について説明する。図15は、実施の形態2に係るキャッシュメモリ230の動作の一例を示すフローチャートである。図15に示されるように、図15のフローチャートは、図6に示されるステップS220およびステップS240-S260の処理を含む。また、図15では、図6のステップS210は、ステップS410に変更され、図6のステップS230は、ステップS420に変更される。
【0092】
ステップS410において、メモリアクセス要求およびID(HYID、VMID、SWID1、SWID2)の受信の処理が行われる。ステップS410では、キャッシュメモリ230は、バス150を介して、プロセッサ210,220の各々からメモリアクセス要求を受け取る。
【0093】
また、プロセッサ210,220の各々は、ハイパーバイザを実行中にメモリアクセス要求を出力する場合、プロセッサ210,220の各々の第1の識別情報格納部に格納されたHYIDを、メモリアクセス要求に関連付けてキャッシュメモリ230へ出力する。キャッシュメモリ230は、バス150を介して、プロセッサ210,220の各々からメモリアクセス要求に関連付けられたHYIDを受け取る。
【0094】
プロセッサ210,220の各々は、OSもしくはAPPを実行中にメモリアクセス要求を出力する場合、プロセッサ210,220の各々の第1の識別情報格納部に格納されたVMIDおよびプロセッサ210,220の各々の第2の識別情報格納部に格納されたSWID1もしくはSWID2を、メモリアクセス要求に関連付けてキャッシュメモリ230へ出力する。キャッシュメモリ230は、バス150を介して、プロセッサ210,220の各々からメモリアクセス要求に関連付けられたVMID、および、SWID1もしくはSWID2を受け取る。
【0095】
ステップS420において、ID(HYID、VMID、SWID1、SWID2)に基づくウェイの選択の処理が行われる。ステップS420では、キャッシュメモリ230は、メモリアクセス要求がキャッシュヒットではない場合、プロセッサ210,220の各々からメモリアクセス要求に関連付けられて出力されたID(HYID、VMID、SWID1,SWID2)を確認し、割り当て情報格納部135に格納された割り当て情報を参照する。
【0096】
キャッシュメモリ230は、メモリアクセス要求に関連付けられたHYIDを受け取った場合、メモリアクセス要求に関連付けられたHYIDおよび割り当て情報格納部135に格納された割り当て情報に基づいて、データの置き換え対象のウェイを選択する。
【0097】
また、キャッシュメモリ230は、メモリアクセス要求に関連付けられたVMIDを受け取った場合、メモリアクセス要求に関連付けられたVMID、SWID1もしくはSWID2、および、割り当て情報格納部135に格納された割り当て情報に基づいて、データの置き換え対象のウェイを選択する。
【0098】
ここで、割り当て情報格納部135に格納された割り当て情報が、図14によって示された情報であるとする。キャッシュメモリ230は、メモリアクセス要求に関連付けられたVMID1およびSWID1を受け取った場合、当該メモリアクセス要求がOS1の実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ230は、VMID1、SWID1および図14に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ132を選択する。
【0099】
また、キャッシュメモリ230は、メモリアクセス要求に関連付けられたVMID1およびSWID2を受け取った場合、当該メモリアクセス要求がAPP1の実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ230は、VMID1、SWID2および図14に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ131を選択する。
【0100】
キャッシュメモリ230は、メモリアクセス要求に関連付けられたVMID2およびSWID1を受け取った場合、当該メモリアクセス要求がOS2の実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ230は、VMID2、SWID1および図14に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ134を選択する。
【0101】
また、キャッシュメモリ230は、メモリアクセス要求に関連付けられたVMID2およびSWID2を受け取った場合、当該メモリアクセス要求がAPP2の実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ230は、VMID2、SWID2および図14に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ133を選択する。
【0102】
このように、実施の形態2に係る半導体装置200は、VMが実行するソフトウェア(OSおよびAPP)の単位で、ウェイの割り当てを設定することができる。すなわち、実施の形態2に係る半導体装置200は、VM内の処理においても、OSとAPPが使用可能なウェイの割り当てを行うことができる。OSが使用するウェイとAPPが使用するウェイとが分離されていれば、例えば、OS1の処理によって、ウェイに格納されているAPP1に係るデータが追い出されることはない。また、APP1の処理によって、ウェイに格納されているOS1に係るデータも追い出されることはない。
【0103】
以上の通り、実施の形態2によれば、ハイパーバイザは、複数のVMの各々において実行されるOSに複数のウェイのうちの少なくとも1つのウェイを割り当てる権限を与える割り当て権限情報を設定する。OSは、割り当て権限情報を参照することによって、OS自身に割り当てられた少なくとも1つのウェイの範囲を確認し、割り当てられた少なくとも1つのウェイの範囲内において、OS自身およびOS自身の上で動作するAPPの各々が使用できる複数のウェイのうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。キャッシュメモリは、メモリアクセス要求がキャッシュヒットではない場合、VMID、SWID1もしくはSWID2、および、割り当て情報に基づいて、データの置き換え対象となるウェイを選択する。このように、実施の形態2に係る半導体装置では、VMが実行するソフトウェア(OSおよびAPP)に対してウェイの割り当てが行われるため、実施の形態2に係る半導体装置200は、実施の形態1に係る半導体装置よりも、割り当ての粒度を細かく設定することができる。
【0104】
また、実施の形態2に係る半導体装置では、ハイパーバイザは、VM上で動作するOSに対して、VM上で動作するソフトウェア(OSおよびAPP)が使用するウェイを割り当てるための割り当て権限を与え、割り当て権限を与えられたOSは、ハイパーバイザに代って、OSおよびAPPが使用するウェイの割り当てを行う。これは、ハイパーバイザがウェイの割り当ての処理の全てを行う場合に比べて、実装を容易化するとともに、コンテキストスイッチのオーバーヘッドも抑制することができる。
【0105】
[実施の形態3]
次に、実施の形態3について説明する。実施の形態3に係る半導体装置は、複数のプロセッサの各々がセキュア動作モードと非セキュア動作モードとを切り替えて動作する点で、実施の形態1に係る半導体装置とは異なる。図16は、実施の形態3に係る半導体装置300の構成の一例を示すブロック図である。図16に示されるように、図1のプロセッサ110,120、キャッシュメモリ130およびメインメモリ140は、それぞれ、プロセッサ310,320、キャッシュメモリ330およびメインメモリ340に変更される。
【0106】
実施の形態3に係る半導体装置300では、セキュアモニタが動作する。セキュアモニタは、ハイパーバイザ上で動作しないトラステッドオペレーティングシステム(TOS)が動作するセキュア動作モードと、ハイパーバイザが動作する非セキュア動作モードと、の間の切り替えを制御する。図17は、実施の形態3に係るソフトウェアの構成を説明するための模式図である。図17に示されるように、プロセッサ上にセキュリティ管理ソフトウェアであるセキュアモニタが実装される。セキュアモニタ上には、TOSおよびハイパーバイザが構成される。ハイパーバイザ側の構成については、実施の形態1と同様である。
【0107】
セキュアモニタおよびTOSは、セキュア領域に含まれる。TOSは、セキュリティが強化されたOSである。セキュアモニタおよびTOSが動作するプロセッサの動作モードは、セキュア動作モードとなる。また、ハイパーバイザ、VM1、VM2、OS1およびOS2は、非セキュア領域に含まれる。ハイパーバイザ、VM1、VM2、OS1およびOS2が動作するプロセッサの動作モードは、非セキュア動作モードとなる。このように、TOSおよびVM上で動作するOSは、プロセッサの動作モードを切り替えることにより、隔離して実行される。
【0108】
図16において、プロセッサ310は、第1の識別情報格納部111に加えて、識別情報を格納するための第3の識別情報格納部311および動作モード情報を格納するための動作モード情報格納部312を備える。プロセッサ310がセキュアモニタを実行する際、第3の識別情報格納部311には、セキュアモニタを識別するためのセキュアモニタ識別情報(SMID)が格納される。プロセッサ310がTOSを実行する際、第3の識別情報格納部311には、TOSを識別するための第3のソフトウェア識別情報(SWID3)が格納される。プロセッサ310がセキュア動作モードで動作する場合、動作モード情報格納部312には、セキュア動作モードで動作することを示す動作モード情報(S-MODE)が格納される。プロセッサ310が非セキュア動作モードで動作する場合、動作モード情報格納部312には、非セキュア動作モードで動作することを示す動作モード情報(NS-MODE)が格納される。
【0109】
プロセッサ320は、第1の識別情報格納部121に加えて、識別情報を格納するための第3の識別情報格納部321および動作モード情報を格納するための動作モード情報格納部322を備える。プロセッサ320がセキュアモニタを実行する際、第3の識別情報格納部321には、SMIDが格納される。プロセッサ320がTOSを実行する際、第3の識別情報格納部321には、SWID3が格納される。プロセッサ320がセキュア動作モードで動作する場合、動作モード情報格納部322には、S-MODEが格納される。プロセッサ320が非セキュア動作モードで動作する場合、動作モード情報格納部322には、NS-MODEが格納される。
【0110】
プロセッサ310,320の各々は、セキュア動作モードで動作中にバス150を介してキャッシュメモリ330へメモリアクセス要求を出力する際に、第3の識別情報格納部に格納されたSMIDもしくはSWID3をメモリアクセス要求に関連付けて出力する。メモリアクセス要求に関連付けられて出力されたSMIDもしくはSWID3は、キャッシュメモリ330においてメモリアクセス要求がキャッシュヒットではないと判定された場合に、データの置き換え対象となるキャッシュメモリ330のウェイを決定するための情報として利用される。
【0111】
また、プロセッサ310,320の各々は、非セキュア動作モードで動作中にバス150を介してキャッシュメモリ330へメモリアクセス要求を出力する際に、第1の識別情報格納部に格納されたHYIDもしくはVMIDをメモリアクセス要求に関連付けて出力する。メモリアクセス要求に関連付けられて出力されたHYIDもしくはVMIDは、キャッシュメモリ330においてメモリアクセス要求がキャッシュヒットではないと判定された場合に、データの置き換え対象となるキャッシュメモリ330のウェイを決定するための情報として利用される。
【0112】
キャッシュメモリ330は、図1のキャッシュメモリ130の構成に加えて、セキュア情報格納部331を備える。セキュア情報格納部331は、セキュア情報を格納する。セキュア情報は、ウェイ131-134をセキュア動作モードで使用可能なウェイと非セキュア動作モードで使用可能なウェイとに区分するための情報である。
【0113】
メインメモリ340は、ハイパーバイザのデータ、OS1のデータおよびOS2のデータに加えて、セキュアモニタのデータおよびTOSのデータを格納する。セキュアモニタのデータは、セキュアモニタ用のプログラムおよびセキュアモニタが使用する各種データを含む。TOSのデータは、TOS用のプログラムおよびTOSが使用する各種データを含む。プロセッサ310,320は、セキュア動作モードで動作する際に、メインメモリ340に格納されたセキュアモニタ用のプログラムおよびTOS用のプログラムを読み出して実行する。
【0114】
次に、実施の形態3に係る半導体装置300の動作について説明する。図18は、実施の形態3に係るプロセッサの動作状態を説明するための状態遷移図である。図18に示されるように、プロセッサの動作状態は、プロセッサがセキュア動作モードで動作する状態S1およびプロセッサが非セキュア動作モードで動作する状態S2がある。また、状態S1には、セキュア動作の設定の処理が行われる状態S11とTOSの実行の処理が行われる状態S12とが含まれる。状態S2には、非セキュア動作の設定の処理が行われる状態S21とVMの実行の処理が行われる状態S22とが含まれる。
【0115】
状態S11では、プロセッサは、セキュア動作の設定の処理を行う。プロセッサは、この処理を完了すると、状態S12において、TOSの実行の処理を行うことができる。また、状態S21では、プロセッサは、非セキュア動作の設定の処理を行う。プロセッサは、この処理を完了すると、状態S22において、VMの実行の処理を行うことができる。
【0116】
まず、状態S11において、セキュア動作の設定の処理が行われる。図19は、実施の形態3に係るセキュア動作の設定の処理の一例を示すフローチャートである。図19に示されるように、状態S11で行われる処理は、ステップS510-S530の処理を含む。
【0117】
ステップS510において、セキュアモニタの起動の処理が行われる。ステップS510では、プロセッサ310,320の少なくとも一方が、メインメモリ340に格納されたセキュアモニタ用のプログラムを読み出して実行する。これにより、セキュアモニタが起動する。
【0118】
また、プロセッサ310,320の各々がセキュアモニタを実行する場合、セキュアモニタは、SMIDを、セキュアモニタを実行するプロセッサ310,320の各々の第3の識別情報格納部に格納する。すなわち、プロセッサ310がセキュアモニタを実行する場合、セキュアモニタは、第3の識別情報格納部311にSMIDを格納する。プロセッサ320がセキュアモニタを実行する場合、セキュアモニタは、第3の識別情報格納部321にSMIDを格納する。
【0119】
次に、ステップS520において、セキュア情報の設定の処理が行われる。ステップS520では、セキュアモニタは、ウェイ131-134をセキュア動作モードで使用可能な少なくとも1つのウェイと非セキュア動作モードで使用可能な少なくとも1つのウェイとに区分するためのセキュア情報をセキュア情報格納部331に格納する。
【0120】
図20は、実施の形態3に係るセキュア情報の一例を示す図である。図20に示されるように、セキュアモニタは、セキュア動作モードおよび非セキュア動作モードの各々とウェイ131-134の各々との対応関係を設定する。図20の例では、セキュア動作モードとウェイ134とが対応付けられ、非セキュア動作モードとウェイ131-133とが対応付けられている。そのため、ウェイ134は、プロセッサがセキュア動作モードで動作する際に使用可能とされ、ウェイ131-133は、プロセッサが非セキュア動作モードで動作する際に使用可能とされる。
【0121】
最後に、ステップS530において、セキュアモニタおよびTOSのための割り当て情報の設定の処理が行われる。ステップS530では、セキュアモニタは、セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、セキュアモニタおよびTOSの各々が使用できるウェイ131-134のうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。
【0122】
図21は、実施の形態3に係る割り当て情報の一例を示す図である。図21に示されるように、セキュアモニタは、SMIDおよびSWID3を用いて、セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、セキュアモニタおよびTOSの各々とウェイ131-134の各々との対応関係を設定する。SMIDは、セキュアモニタに関連付けられたユニークな情報である。SWID3は、SWIDの1つであり、TOSに関連付けられたユニークな情報である。セキュアモニタは、セキュアモニタおよびTOSの各々とウェイ131-134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。
【0123】
また、図21は、図20に示されるセキュア情報が設定されている場合に対応している。セキュアモニタは、セキュア動作モードで使用可能なウェイ134の範囲内(図21の領域C)で、SWID3とウェイ134とを対応付ける。これにより、セキュア動作モードにおいて、TOSは、ウェイ134を使用可能となる。図21の例では、SMIDとウェイ134とが対応付けられていないが、セキュアモニタは、SMIDとウェイ134を対応付けすることも可能である。その場合には、セキュア動作モードにおいて、セキュアモニタは、ウェイ134を使用可能となる。
【0124】
なお、ステップS530では、セキュア動作モードに係る割り当て情報の設定のみが行われる。すなわち、図21のうちのSMIDおよびSWID3における割り当て情報のみが設定される。
【0125】
図18において、セキュア動作の設定の処理が完了すると、プロセッサの動作状態は、セキュア動作モードの状態S12および非セキュア動作モードの状態S21のいずれかに遷移する。プロセッサの動作状態が状態S12に遷移する場合には、TOSの実行の処理が行われる。
【0126】
状態S12におけるTOSの実行の処理では、プロセッサ310,320の少なくとも一方が、メインメモリ340に格納されたTOS用のプログラムを読み出して実行することにより、TOSは起動される。起動されたTOSは、機密性が求められる認証や暗号などの処理を実行する。
【0127】
また、プロセッサ310,320の各々がTOSを実行する場合、セキュアモニタは、SWID3を、TOSを実行するプロセッサ310,320の各々の第3の識別情報格納部に格納する。すなわち、プロセッサ310がTOSを実行する場合、セキュアモニタは、第3の識別情報格納部311にSWID3を格納する。プロセッサ320がTOSを実行する場合、セキュアモニタは、第3の識別情報格納部321にSWID3を格納する。
【0128】
図18において、プロセッサの動作状態が、状態S11もしくは状態S12から状態S21に遷移すると、非セキュア動作の設定の処理が行われる。図22は、実施の形態3に係る非セキュア動作の設定の処理の一例を示すフローチャートである。図22に示されるように、状態S21で行われる処理は、図3に示されるステップS110およびステップS130の処理を含む。また、図22では、図3のステップS120は、ステップS610に変更され、図3のステップS140は、ステップS620に変更される。
【0129】
ステップS610において、セキュア情報に基づいたハイパーバイザのための割り当て情報の設定の処理が行われる。ステップS610の処理では、ハイパーバイザは、セキュア情報格納部331に格納されたセキュア情報を参照して、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲を確認する。例えば、セキュア情報格納部331に図20に示されるセキュア情報が格納されている場合、ハイパーバイザは、セキュア情報を参照して、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲がウェイ131-133であることを確認する。
【0130】
また、ステップS610において、ハイパーバイザは、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、ハイパーバイザが使用できるウェイ131-134のうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。図21に示されるように、ハイパーバイザは、HYIDを用いて、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、ハイパーバイザとウェイ131-134の各々との対応関係を設定する。ハイパーバイザは、ハイパーバイザとウェイ131-134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。
【0131】
図21の例では、ハイパーバイザは、非セキュア動作モードで使用可能なウェイ131-133の範囲内(図21の領域D)で、HYIDとウェイ131とを対応付ける。ハイパーバイザは、ハイパーバイザとウェイ131との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。これにより、非セキュア動作モードにおいて、ハイパーバイザは、ウェイ131を使用可能となる。
【0132】
ステップS620において、セキュア情報に基づいたVMのための割り当て情報の設定の処理が行われる。ステップS620の処理では、ハイパーバイザは、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、VM1およびVM2の各々が使用できるウェイ131-134のうちの少なくとも1つのウェイを割り当てるように割り当て情報を設定する。ステップS610において説明されたように、ハイパーバイザは、セキュア情報格納部331に格納されたセキュア情報を参照することによって、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲を確認する。
【0133】
図21に示されるように、ハイパーバイザは、VMID1およびVMID2を用いて、非セキュア動作モードで使用可能な少なくとも1つのウェイの範囲内において、VM1およびVM2の各々とウェイ131-134の各々との対応関係を設定する。ハイパーバイザは、VM1およびVM2の各々とウェイ131-134の各々との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。
【0134】
図21の例では、ハイパーバイザは、非セキュア動作モードで使用可能なウェイ131-133の範囲内(図21の領域D)で、VMID1とウェイ132とを対応付け、VMID2とウェイ133とを対応付ける。ハイパーバイザは、VMID1とウェイ132との対応関係、および、VMID2とウェイ133との対応関係を割り当て情報に含めて割り当て情報格納部135に格納する。これにより、非セキュア動作モードにおいて、VM1は、ウェイ132を使用可能となり、VM2は、ウェイ133を使用可能となる。
【0135】
図18において、非セキュア動作の設定の処理が完了すると、プロセッサの動作状態は、非セキュア動作モードの状態S22に遷移する。状態S22では、VMの実行の処理が行われる。VMの実行の処理は、図3のステップS150の処理と同じである。
【0136】
このように、実施の形態3に係る半導体装置300では、プロセッサの動作状態が、プロセッサがセキュア動作モードで動作する状態S1とプロセッサが非セキュア動作モードで動作する状態S2との間で切り替わる。セキュア動作モードと非セキュア動作モードの切り替えは、セキュアモニタによって制御される。
【0137】
セキュア動作モードの状態S12から非セキュア動作モードの状態S22に遷移する場合、TOSは、セキュアモニタコールを用いてセキュアモニタを呼ぶ。セキュアモニタは、TOSからのセキュアモニタコールに応答して、ハイパーバイザを起動し、プロセッサの動作モードをセキュア動作モードから非セキュア動作モードに切り替える。
【0138】
一方、非セキュア動作モードの状態S22からセキュア動作モードの状態S12に遷移する場合、ハイパーバイザもしくはOSは、セキュアモニタコールを用いてセキュアモニタを呼ぶ。セキュアモニタは、ハイパーバイザもしくはOSからのセキュアモニタコールに応答して、TOSを起動し、プロセッサの動作モードを非セキュア動作モードからセキュア動作モードに切り替える。
【0139】
また、プロセッサ310,320の各々がセキュア動作モードで動作する場合、セキュアモニタは、セキュア動作モードで動作するプロセッサ310,320の各々の動作モード情報格納部にS-MODEを格納する。すなわち、プロセッサ310がセキュア動作モードで動作する場合、セキュアモニタは、動作モード情報格納部312にS-MODEを格納する。プロセッサ320がセキュア動作モードで動作する場合、セキュアモニタは、動作モード情報格納部322にS-MODEを格納する。
【0140】
一方、プロセッサ310,320の各々が非セキュア動作モードで動作する場合、セキュアモニタは、非セキュア動作モードで動作するプロセッサ310,320の各々の動作モード情報格納部にNS-MODEを格納する。すなわち、プロセッサ310が非セキュア動作モードで動作する場合、セキュアモニタは、動作モード情報格納部312にNS-MODEを格納する。プロセッサ320が非セキュア動作モードで動作する場合、セキュアモニタは、動作モード情報格納部322にNS-MODEを格納する。
【0141】
このように、セキュアモニタは、プロセッサの動作状態がセキュア動作モードの状態S1である場合、動作モード情報格納部にS-MODEを格納する。また、セキュアモニタは、プロセッサの動作状態が非セキュア動作モードの状態S2である場合、動作モード情報格納部にNS-MODEを格納する。セキュアモニタは、プロセッサの動作モードを切り替える際に、動作モード情報を更新する。
【0142】
続いて、実施の形態3に係るキャッシュメモリ330の動作について説明する。図23は、実施の形態3に係るキャッシュメモリ330の動作の一例を示すフローチャートである。図23に示されるように、図23のフローチャートは、図6に示されるステップS220およびステップS240-S260の処理を含む。また、図23では、図6のステップS210は、ステップS710に変更され、図6のステップS230は、ステップS720に変更される。
【0143】
ステップS710において、メモリアクセス要求およびID(HYID、VMID、SMID、SWID3)の受信の処理が行われる。ステップS710では、キャッシュメモリ330は、バス150を介して、プロセッサ310,320の各々からメモリアクセス要求を受け取る。
【0144】
また、プロセッサ310,320の各々は、動作モード情報格納部に格納された動作モード情報を確認する。プロセッサ310,320の各々は、動作モード情報格納部にS-MODEが格納されていることを確認した場合、プロセッサ310,320の各々は、セキュア動作モードで動作していることを認識する。また、プロセッサ310,320の各々は、動作モード情報格納部にNS-MODEが格納されていることを確認した場合、プロセッサ310,320の各々は、非セキュア動作モードで動作していることを認識する。このように、プロセッサ310,320の各々は、プロセッサ310,320の各々の動作モード情報格納部に格納された動作モード情報を読み出すことによって、セキュア動作モードおよび非セキュア動作モードのいずれかの動作モードで動作しているのかを認識する。
【0145】
プロセッサ310,320の各々は、セキュア動作モードで動作中にメモリアクセス要求を出力する際に、プロセッサ310,320の各々の第3の識別情報格納部に格納されているSMIDもしくはSWID3を、メモリアクセス要求に関連付けてキャッシュメモリ330へ出力する。キャッシュメモリ330は、バス150を介して、プロセッサ310,320の各々からメモリアクセス要求に関連付けられたSMIDもしくはSWID3を受け取る。
【0146】
また、プロセッサ310,320の各々は、非セキュア動作モードで動作中にメモリアクセス要求を出力する際に、プロセッサ310,320の各々の第1の識別情報格納部に格納されているHYIDもしくはVMIDを、メモリアクセス要求に関連付けてキャッシュメモリ330へ出力する。キャッシュメモリ330は、バス150を介して、プロセッサ310,320の各々からメモリアクセス要求に関連付けられたHYIDもしくはVMIDを受け取る。
【0147】
ステップS720において、ID(HYID、VMID、SMID、SWID3)に基づくウェイの選択の処理が行われる。ステップS720では、キャッシュメモリ330は、メモリアクセス要求がキャッシュヒットではない場合、プロセッサ310,320の各々からメモリアクセス要求に関連付けられて出力されたID(HYID、VMID、SMID,SWID3)を確認し、割り当て情報格納部135に格納された割り当て情報を参照する。
【0148】
キャッシュメモリ330は、メモリアクセス要求に関連付けられたSMIDもしくはSWID3を受け取った場合、メモリアクセス要求に関連付けられたSMIDもしくはSWID3、および、割り当て情報格納部135に格納された割り当て情報に基づいて、データの置き換え対象のウェイを選択する。
【0149】
また、キャッシュメモリ330は、メモリアクセス要求に関連付けられたHYIDもしくはVMIDを受け取った場合、メモリアクセス要求に関連付けられたHYIDもしくはVMID、および、割り当て情報格納部135に格納された割り当て情報に基づいて、データの置き換え対象のウェイを選択する。
【0150】
ここで、割り当て情報格納部135に格納された割り当て情報が、図21によって示された情報であるとする。キャッシュメモリ330は、メモリアクセス要求に関連付けられたSMIDを受け取った場合、当該メモリアクセス要求がセキュアモニタの実行中に出力されたメモリアクセス要求であると認識する。図21を参照すると、SMIDは、ウェイ131-134のうちのいずれのウェイとも対応付けされていない。この場合のメモリアクセス要求は、キャッシュメモリ330を使用しないメモリアクセス要求となる。
【0151】
キャッシュメモリ330は、メモリアクセス要求に関連付けられたSWID3を受け取った場合、当該メモリアクセス要求がTOSの実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ330は、SWID3および図21に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ134を選択する。
【0152】
キャッシュメモリ330は、メモリアクセス要求に関連付けられたHYIDを受け取った場合、当該メモリアクセス要求がハイパーバイザの実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ330は、HYIDおよび図21に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ131を選択する。
【0153】
キャッシュメモリ330は、メモリアクセス要求に関連付けられたVMID1を受け取った場合、当該メモリアクセス要求がVM1の実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ330は、VMID1および図21に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ132を選択する。
【0154】
キャッシュメモリ330は、メモリアクセス要求に関連付けられたVMID2を受け取った場合、当該メモリアクセス要求がVM2の実行中に出力されたメモリアクセス要求であると認識する。キャッシュメモリ330は、VMID2および図21に示される割り当て情報に基づいて、データの置き換え対象となるウェイとして、ウェイ133を選択する。
【0155】
このように、実施の形態3に係る半導体装置300は、セキュアモニタが設定するセキュア情報に基づいて、セキュア動作モードと非セキュア動作モードとで分離して、ウェイの割り当てを行う。そのため、TOSの処理によって、ウェイに格納されているVM(OS)のデータが追い出されることはない。また、VM(OS)の処理によって、ウェイに格納されているTOSのデータが追い出されることはない。
【0156】
以上の通り、実施の形態3によれば、セキュアモニタは、複数のウェイをセキュア動作モードで使用可能なウェイと非セキュア動作モードで使用可能なウェイとに区分するためのセキュア情報を設定する。セキュアモニタは、セキュア動作モードで使用可能なウェイの範囲内で、TOSが使用できる少なくとも1つ以上のウェイを割り当てるように割り当て情報を設定する。ハイパーバイザは、セキュア情報を参照し、非セキュア動作モードで使用可能なウェイの範囲内で、VMが使用できる少なくとも1つ以上のウェイを割り当てるように割り当て情報を設定する。キャッシュメモリは、メモリアクセス要求がキャッシュヒットではない場合、SWID3もしくはVMID、および、割り当て情報に基づいて、データの置き換え対象となるウェイを選択する。このように、実施の形態3に係る半導体装置では、ハイパーバイザ上で動作するVMだけではなく、ハイパーバイザ上で動作しないTOSに対しても、適切にウェイの割り当てを行うことができる。
【0157】
実施の形態1ないし3においては、半導体装置100,200,300は、2つのプロセッサを含む構成として説明されたが、これに限定されない。プロセッサの数は、複数であればよい。また、実施の形態1ないし3においては、キャッシュメモリ130,230,330は、4つのウェイを含む構成として説明されたが、これに限定されない。ウェイの数は、複数であればよい。
【0158】
なお、実施の形態1ないし3の一部または全部は、互いに組み合わせることが可能である。例えば、実施の形態1に係る半導体装置100において、実施の形態2に係る半導体装置200のように、OSおよびOS上で動作するAPPに対してウェイが割り当てられるようにしてもよい。その場合、半導体装置100では、ハイパーバイザがOSおよびOS上で動作するAPPに対してウェイの割り当てを行う。
【0159】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【0160】
100、100a、200、300:半導体装置
110、120、210、220、310、320:プロセッサ
111、121:第1の識別情報格納部
130、230、330:キャッシュメモリ
131-134:ウェイ
135:割り当て情報格納部
136:ヒット率算出回路
140、240、340:メインメモリ
211、221:第2の識別情報格納部
231:割り当て権限情報格納部
311、321:第3の識別情報格納部
312、322:動作モード情報格納部
331:セキュア情報格納部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23