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

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

▶ アーム・リミテッドの特許一覧

<>
  • 特許-コンテキスト・データ管理 図1
  • 特許-コンテキスト・データ管理 図2
  • 特許-コンテキスト・データ管理 図3
  • 特許-コンテキスト・データ管理 図4
  • 特許-コンテキスト・データ管理 図5
  • 特許-コンテキスト・データ管理 図6
  • 特許-コンテキスト・データ管理 図7
  • 特許-コンテキスト・データ管理 図8
  • 特許-コンテキスト・データ管理 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】コンテキスト・データ管理
(51)【国際特許分類】
   G06F 9/30 20180101AFI20240228BHJP
   G06F 9/302 20180101ALI20240228BHJP
【FI】
G06F9/30 350A
G06F9/30 310A
G06F9/302 A
【請求項の数】 19
(21)【出願番号】P 2019572679
(86)(22)【出願日】2018-06-19
(65)【公表番号】
(43)【公表日】2020-08-27
(86)【国際出願番号】 GB2018051701
(87)【国際公開番号】W WO2019008323
(87)【国際公開日】2019-01-10
【審査請求日】2021-06-11
(31)【優先権主張番号】1710790.5
(32)【優先日】2017-07-05
(33)【優先権主張国・地域又は機関】GB
【前置審査】
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】グロカット、トーマス クリストファー
(72)【発明者】
【氏名】ボットマン、フランソワ クリストファー ジャック
(72)【発明者】
【氏名】スミス、ブラッドリー ジョン
【審査官】三坂 敏夫
(56)【参考文献】
【文献】米国特許出願公開第2013/0042093(US,A1)
【文献】特開平08-095804(JP,A)
【文献】特表2012-530315(JP,A)
【文献】国際公開第2017/009597(WO,A1)
【文献】特開平05-165652(JP,A)
【文献】インテル株式会社,インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 中巻:命令セット・リファレンス,CQ出版株式会社,1997年,3の38頁~3の48頁、3の218頁~3の221頁
【文献】インテル株式会社,ソフトウェア・ディベロッパーズ・マニュアル 下巻:システム・プログラミング・ガイド,CQ出版株式会社,1997年,5の38頁~5の39頁、6の10頁~6の20頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
G06F 9/30 ー9/38
(57)【特許請求の範囲】
【請求項1】
データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも1つのコンテキスト・データ依存プログラム命令及び少なくとも1つの浮動小数点コンテキスト・データ・レジスタ内に格納されたコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、メモリの位置に前記コンテキスト・データを保存して、次のコンテキスト復元命令に応答して、前記少なくとも1つの浮動小数点コンテキスト・データ・レジスタに復元されるよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記メモリの位置にデフォルトのコンテキスト・データを保存して、前記次のコンテキスト復元命令に応答して、前記少なくとも1つの浮動小数点コンテキスト・データ・レジスタに復元されるよう前記処理回路を制御し、
前記コンテキスト・データ依存プログラム命令が浮動小数点プログラム命令であり、前記コンテキスト・データが浮動小数点コンテキスト・データであり、前記浮動小数点プログラム命令が前記浮動小数点コンテキスト・データに依存する浮動小数点処理動作を指定し、前記デフォルトのコンテキスト・データがデフォルトの浮動小数点コンテキスト・データを含む、装置。
【請求項2】
前記処理回路が、セキュア・ドメイン及び非セキュア・ドメインを含む複数のドメインで動作し、前記セキュア・ドメインでの動作時に前記処理回路がセキュア・データにアクセスでき、前記非セキュア・ドメインでの動作時に前記処理回路が前記セキュア・データにアクセスできない、請求項1に記載の装置。
【請求項3】
前記コンテキスト・データが前記処理回路によって保存され、前記コンテキスト・データが前記セキュア・ドメインで処理中に使用されていないものとして記録されている場合に、前記処理回路が前記コンテキスト・データを前記非セキュア・ドメイン向けのデフォルトのコンテキスト・データに設定する、請求項2に記載の装置。
【請求項4】
前記コンテキスト・データが前記処理回路によって保存され、前記コンテキスト・データが前記セキュア・ドメインで処理中に使用されたものとして記録されている場合に、保存された前記コンテキスト・データの使用を維持する、請求項3に記載の装置。
【請求項5】
前記コンテキスト保存命令が、
前記コンテキスト・データが使用されたものとして記録されている場合に、セキュリティ・ドメイン指示フラグが、前記コンテキスト・データが前記セキュア・ドメインによって使用されたものとして記録されたかを示すよう設定され、
前記コンテキスト・データが使用されたものとして記録されていない場合に、前記セキュリティ・ドメイン指示フラグが、前記セキュア・ドメインによって使用されていないことを示す値に設定されるように、
前記コンテキスト・データが使用されたものとして記録されているかどうかに応じて、前記セキュリティ・ドメイン指示フラグを保存するよう前記処理回路を制御する、請求項2から4までのいずれか一項に記載の装置。
【請求項6】
前記処理回路が現在、前記コンテキスト・データ依存プログラム命令の使用を許可されていない場合に、前記コンテキスト・データが使用されたものとして記録されているかどうかに応じて、障害対応の例外がトリガされる、請求項1から5までのいずれか一項に記載の装置。
【請求項7】
選択的なコンテキスト・データのハードウェア制御が無効化されている場合に、前記コンテキスト・データが、使用されたものとして記録され、且つ、コンテキスト保存命令に応答して保存されたものとして扱われるよう、選択的なコンテキスト・データ保存のハードウェア制御がソフトウェア構成可能なフラグによって無効化される、請求項1から6までのいずれか一項に記載の装置。
【請求項8】
前記コンテキスト・データがメモリ内の位置に保存される、及び、
前記コンテキスト・データが汎用レジスタ・ファイル内のレジスタに保存される、
のうちの一方である、請求項1から7までのいずれか一項に記載の装置。
【請求項9】
前記デコーダ回路が、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、請求項1から8までのいずれか一項に記載の装置。
【請求項10】
前記浮動小数点プログラム命令が前記浮動小数点コンテキスト・データに依存する浮動小数点処理動作を指定する、請求項9に記載の装置。
【請求項11】
前記処理回路が現在、前記コンテキスト・データ依存プログラム命令の使用を許可されていない場合に、前記コンテキスト・データが使用されたものとして記録されているかどうかに応じて、障害対応の例外がトリガされる、請求項9又は10に記載の装置。
【請求項12】
前記処理回路が、セキュア・ドメイン及び非セキュア・ドメインを含む複数のドメインで動作し、前記セキュア・ドメインでの動作時に前記処理回路がセキュア・データにアクセスでき、前記非セキュア・ドメインでの動作時に前記処理回路が前記セキュア・データにアクセスできず、また、前記処理回路が前記コンテキスト復元命令によって、前記セキュア・ドメインが前記コンテキスト・データを使用したかどうかを示すセキュリティ・ドメイン指示フラグを復元するよう制御され、前記復元が、前記コンテキスト・データが使用されたものとして記録されているかどうかに依存する、請求項9から11までのいずれか一項に記載の装置。
【請求項13】
前記コンテキスト・データがメモリ内の位置から復元される、及び、
前記コンテキスト・データが汎用レジスタ・ファイル内のレジスタから復元される、
のうちの一方である、請求項9から12までのいずれか一項に記載の装置。
【請求項14】
選択的なコンテキスト・データのハードウェア制御が無効化されている場合に、コンテキスト復元命令に応答して、前記コンテキスト・データが使用されたものとして記録されたものとして扱われるよう、選択的なコンテキスト・データ保存のハードウェア制御がソフトウェア構成可能なフラグによって無効化される、請求項9から13までのいずれか一項に記載の装置。
【請求項15】
データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データを格納するための手段内に格納されたコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、メモリの位置に前記コンテキスト・データを保存して、次のコンテキスト復元命令に応答して、前記コンテキスト・データを格納するための手段に復元されるよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記メモリの位置にデフォルトのコンテキスト・データを保存して、前記次のコンテキスト復元命令に応答して、前記コンテキスト・データを格納するための手段に復元されるよう前記処理手段を制御し、
前記コンテキスト・データ依存プログラム命令が浮動小数点プログラム命令であり、前記コンテキスト・データが浮動小数点コンテキスト・データであり、前記浮動小数点プログラム命令が前記浮動小数点コンテキスト・データに依存する浮動小数点処理動作を指定し、前記デフォルトのコンテキスト・データがデフォルトの浮動小数点コンテキスト・データを含む、装置。
【請求項16】
前記デコーダ手段がコンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理手段を制御する、請求項15に記載の装置。
【請求項17】
データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも1つのコンテキスト・データ依存プログラム命令及び少なくとも1つの浮動小数点コンテキスト・データ・レジスタ内に格納されたコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、メモリの位置に前記コンテキスト・データを保存して、次のコンテキスト復元命令に応答して、前記少なくとも1つの浮動小数点コンテキスト・データ・レジスタに復元されるよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記メモリの位置にデフォルトのコンテキスト・データを保存して、前記次のコンテキスト復元命令に応答して、前記少なくとも1つの浮動小数点コンテキスト・データ・レジスタに復元されるよう前記処理回路を制御し、
前記コンテキスト・データ依存プログラム命令が浮動小数点プログラム命令であり、前記コンテキスト・データが浮動小数点コンテキスト・データであり、前記浮動小数点プログラム命令が前記浮動小数点コンテキスト・データに依存する浮動小数点処理動作を指定し、前記デフォルトのコンテキスト・データがデフォルトの浮動小数点コンテキスト・データを含む、方法。
【請求項18】
前記デコードするステップが、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、請求項17に記載の方法。
【請求項19】
請求項17又は18に記載の方法に従って動作するようコンピュータを制御するための、仮想マシン・コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理システムの分野に関する。より詳細には、本開示は、データ処理システム内のコンテキスト・データの管理に関する。
【背景技術】
【0002】
命令が実行された時点における現在のコンテキスト・データに依存する挙動を有するコンテキスト・データ依存プログラム命令を実行するデータ処理システムを提供することが知られている。例えば、コンテキスト・データ依存プログラム命令は浮動小数点演算プログラム命令であってよく、コンテキスト・データは、これらの浮動小数点演算プログラム命令が実行される際に、複数の丸めモードのうちいずれを使用するべきかを示す構成データであってよい。
【発明の概要】
【課題を解決するための手段】
【0003】
本開示の少なくとも1つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理回路を制御する、装置を提供する。
【0004】
本開示の少なくとも1つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、装置を提供する。
【0005】
本開示の少なくとも1つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理手段を制御する、装置を提供する。
【0006】
本開示の少なくとも1つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段が、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理手段を制御する、装置を提供する。
【0007】
本開示の少なくとも1つの実施例は、データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理回路を制御する、方法を提供する。
【0008】
本開示の少なくとも1つの実施例は、データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも1つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、方法を提供する。
【0009】
本開示の別の実施例は、非一時的なコンピュータ可読媒体に格納されることができるコンピュータ・プログラムの形態であってよく、上述した方法に従って動作するよう汎用コンピュータを制御するためのものであり、従って、このような方法をサポートする仮想マシン実行環境を提供してもよい。
【0010】
本技術のさらなる態様、特徴、及び利点は、後述する実例の説明を添付図面と併せて読解することで明らかになるであろう。
【図面の簡単な説明】
【0011】
図1】コンテキスト・データ依存プログラム命令を使用し、且つコンテキスト管理プログラム命令をサポートするデータ処理システムを模式的に示す図である。
図2】コンテキスト保存命令の実行に関する処理を模式的に示すフロー図である。
図3】コンテキスト復元命令の実行に関する処理を模式的に示すフロー図である。
図4】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
図5】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
図6】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
図7】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
図8】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
図9】コンテキスト・データ依存プログラム命令及びコンテキスト・データ管理命令をサポートする仮想マシン実行環境を模式的に示す図である。
【発明を実施するための形態】
【0012】
図1は、プロセッサ・コア4及びメモリ6を備えるデータ処理システム2を模式的に示す。メモリ6は、実行されるプログラム命令8を格納する。メモリ6は、スタック・メモリ領域10と、関連するスタック・ポインタSPとを含み、実行されるコンテキスト・データ保存命令又はコンテキスト・データ復元命令の違いに応じて、コンテキスト・データがそこに保存されることができ、また、そこから復元されることができるスタック・メモリを提供する。
【0013】
プロセッサ・コア4は、多数の関数ブロックを含むが、明確化のため、図1の実例はこれらのブロックのうちいくつかのみを含む。プログラム命令は、フェッチ回路12によってメモリ6からフェッチされ、フェッチ回路12から、これらのプログラム命令をデコードして制御信号18を生成する働きをするデコーダ回路16に供給され、これらの制御信号18は、デコードされたプログラム命令によって指定された処理動作を実施するようプロセッサ・コア4内のその他の関数ブロックを制御するために使用される。
【0014】
プロセッサ・コア4は、処理回路20を含む。本実例の図では、処理回路20は、浮動小数点プログラム命令を実行するための浮動小数点処理回路22と、汎用プログラム命令(整数プログラム命令を含んでもよい)を実行するための汎用処理回路24とを含む。浮動小数点処理回路22は、浮動小数点処理回路22によって操作される浮動小数点オペランドを格納する働きをする浮動小数点レジスタ・ファイル26を含む。汎用処理回路24は、汎用処理回路24によって操作されるオペランドを格納する働きをする汎用レジスタ・ファイル25を含む。
【0015】
様々な異なる構成パラメータに応答して処理回路20の構成及び動作を制御する構成制御回路28もまた、処理回路20内に含まれる。これらの構成パラメータは、浮動小数点コンテキスト・データ・レジスタ30内に格納された浮動小数点コンテキスト・データ(FPSCR及びSFPA)を含む。構成データは、プロセッサ・コア4が現在セキュア・ドメイン内で実行しているのか、非セキュア・ドメイン内で実行しているのかを示す、セキュリティ・レジスタ32内に格納されたNS/Sフラグをさらに含んでもよい(例えば、ARM Limited、Cambridge、Englandによって設計されたTrustzoneアーキテクチャを用いたシステムによって提供されるものなど)。セキュア・ドメイン内で動作している時、処理回路20はセキュア・データにアクセスできる。非セキュア・ドメインで動作している時、処理回路はこのようなセキュア・データにはアクセスできない。このようなセキュア・データの例に、メモリ6のメモリ・アドレス領域内のデータがあり、このようなデータは、セキュア・ドメインで動作している時にプロセッサ・コア4にアクセスでき、非セキュア・ドメインで動作している時にプロセッサ・コア4にアクセスできない、セキュア・データとして指定され、管理される。
【0016】
アクセス制御レジスタ34は、アクセス制御値(CPACR/NSACR)を格納し、アクセス制御値は、これらの値によって示される現在の構成における処理回路20が特定の処理リソースを使用することを許可されるか否かを示す。例えば、これらのアクセス制御フラグの値に応じて、処理回路20は所与の時点において、浮動小数点回路22の使用を許可されることもあれば、許可されないこともある。その他のコンテキスト構成フラグ値が存在し、それが使用され得ることも可能であり、例えば、異なる処理スレッド間だけでなく、異なるコンテキスト間、ドメイン間及びモード間を切り替えるプログラム命令の実行中に発生する構成及びコンテキスト・データの変更を、データ処理システム2のハードウェア機構が制御及び監視するか否かをハードウェア・レベルで示すことができるAPSEN値がある。例えば、APSENフラグが所与の値を有する時、コンテキスト・データを管理するためのハードウェア機構が無効化されることができ、このような管理の責務が実行中のソフトウェアに課せられる。このような状況でもなお、システムは、例えば、セキュア・ドメイン動作から非セキュア・ドメイン動作へのデータの漏洩を阻止する、又は、スレッドが最初に浮動小数点を使用する際にデフォルトのコンテキスト・データを用いて初期化された新しいコンテキストを作成する働きができるように、コンテキスト・データ管理のバックアップ・レベルを提供することができる。
【0017】
前述したように、本技術は、コンテキスト・データ依存プログラム命令によって実施されるべき処理動作を少なくとも部分的に指定するコンテキスト・データの管理に関する。このようなコンテキスト・データ依存プログラム命令の一例が、浮動小数点演算プログラム命令であり、この場合のコンテキスト・データの例は、使用されるべき特定の丸めモードを指定するデータでよい。コンテキスト・データの他の形態もまた、可能である。
【0018】
構成制御回路28は、コンテキスト・データが使用されたか否か、及び、このようなコンテキスト・データがセキュア・ドメインでの動作時に使用されたか否かを記録する働きをするフラグを使用し、且つこれを管理する。より詳細には、構成制御回路28は、浮動小数点コンテキスト・データが浮動小数点命令の制御に使用されるためにアクセスされたかどうかを示す値を有するフラグ値FPCAを保持し、且つこれを使用する。構成制御回路28はさらに、FPコンテキスト・データ・レジスタ30の一部であり、浮動小数点プログラム命令がセキュア・ドメイン動作中に使用されたか否かを示す、フラグSFPAを設定し、且つこれを使用する。例えば、SFPAは、(例えば、プログラム制御下で)スイッチがセキュア・ドメイン動作に切り替わると「0」値に設定されることができ、セキュア・ドメイン内で最初の浮動小数点プログラム命令が実行されると、ハードウェアはこのSFPAフラグを「1」に変更することができる。このようにして、浮動小数点操作が実施されているセキュア・ドメイン動作から、浮動小数点操作が実施されない非セキュア・ドメイン動作に切り替わる場合に、非セキュア・ドメイン動作中に浮動小数点レジスタ・ファイル26に触れないなら、浮動小数点レジスタ・ファイル26のコンテキストの保存及びその後の復元のオーバーヘッドを被る必要がなくなるため、浮動小数点レジスタ値のレイジー・セービングをサポートできる可能性がある。
【0019】
本開示は、コンテキスト保存命令CXTSave及びコンテキスト復元命令CXTRestoreの提供を含む。図2は、デコーダ回路16によってコンテキスト保存命令をデコードすることに応答して、処理回路20によって実施される処理動作を模式的に示すフロー図である。処理は、コンテキスト保存命令がデコードされるまでステップ36で待機する。ステップ38は、コンテキスト・データのハードウェア選択的保存が無効化されているか否かを判定する。「0」値を有するAPSENフラグによって示されるようにハードウェア選択保存が無効化されていれば、ステップ40はとばされ、処理はそのままステップ42に進む。ハードウェア選択的保存が無効化されていなければ、処理はステップ40に進み、現在の浮動小数点コンテキスト・データが使用されたものとして記録されている(すなわち、FPCA=1)か否かについて判定を行う。ステップ40での判定が、コンテキスト・データが使用されたものとして記録されていないというものであれば、処理はステップ44に進み、(命令の種別に応じて)デフォルトの非セキュア・コンテキスト・データが、現在のスタック・ポインタ値SPによって指示されたメモリ6内のスタック・メモリ領域10か、又は、汎用レジスタ・ファイル25内のレジスタのどちらか一方に(必要に応じて、より簡単に操作できる場所から)保存される。コンテキスト・データがスタック・メモリ領域10に格納されていれば、ステップ46は続いて、スタック・ポインタ値を更新する働きをする。
【0020】
ステップ40における判定で、コンテキスト・データが使用されたものとして記録されていれば、ステップ42が、アクセス制御レジスタ34内に格納されたアクセス制御値(CPACR/NSACR)をチェックし、浮動小数点プログラム命令(コンテキスト・データ依存命令)の使用が現在許可されているかを判定する働きをする。このような使用が許可されていなければ、且つ、依然としてそれらが使用されたものとして記録されていれば、処理はステップ48に進み、障害がトリガされる。ステップ42におけるチェックが、浮動小数点処理回路22のアクセス/使用が許可されていることを示せば、処理はステップ50に進み、現在のコンテキスト・データ(FPSCR及びSFPA)が、前述したように、(命令種別に応じて)スタック・メモリ領域10又はレジスタのどちらか一方に保存される。ステップ52は、コンテキスト・データがセキュア処理中に使用されたものとして記録されている(すなわち、SFPA=1)かどうかを判定する。コンテキスト・データがセキュア処理中に使用されたものとして記録されていれば、制御はステップ46に進み、ステップ50でコンテキスト・データがスタック・メモリ領域10に保存されていれば、スタック値が更新される。
【0021】
ステップ52におけるチェックが、現在のコンテキスト・データがセキュア処理中に使用されたものとして記録されていないことを示せば(SFPA=0)、フローはステップ54に進み、コンテキスト・データは非セキュアのデフォルト・コンテキスト・データに設定され、それによって、前回の非セキュア・ドメイン処理中に使用された可能性のある如何なる現在のコンテキスト・データも上書きする。
【0022】
図3は、デコーダ回路16によってコンテキスト復元命令CXTRestoreをデコードすることに応答して実施される、処理回路20による処理を模式的に示すフロー図である。ステップ56において、処理はコンテキスト復元命令がデコードされるまで待機する。ステップ58は、ハードウェア選択的復元動作が0値を有するAPSENフラグによって示されるように無効化されているかどうかを判定する。ハードウェア選択的復元が無効化されていれば、ステップ60はとばされ、処理はステップ62に進む。ハードウェア選択的復元が無効化されていなければ、処理はステップ60に進み、現在のコンテキスト・データが使用されたものとして記録されている(FPCA=「1」)か否かについて判定を行う。現在のコンテキスト・データが使用されていないものとして記録されていれば、復元動作はスキップされる。しかしながら、処理がステップ64に進む際に、ステップ56でデコードされたコンテキスト復元命令がコンテキスト・データ値又はスタック・メモリ領域10からの値の復元を示すものであれば、ステップ60での判定が復元を実施させないように作用しても、ステップ64は、実際に復元が実施された時と同じようにスタック・ポインタ値を更新する働きをする。ステップ60での判定が、コンテキスト・データが使用されたというものであれば、ステップ62がアクセス制御値(CPSCR/NSACR)をチェックし、これらの値がコンテキスト・データ依存命令(浮動小数点命令)の使用が現在許可されていることを示すかを判定する働きをする。このような使用が許可されておらず、且つ、依然としてコンテキスト・データが使用されたものとして示されていれば、ステップ64で障害がトリガされる。ステップ62における判定で、発生したコンテキスト・データ依存命令の使用が許可されることをアクセス制御値が示していれば、処理はステップ66に進み、保存されたコンテキスト・データ(FPSCR及びSFPA)は、コンテキスト復元命令の詳細な形態に応じて、スタック・メモリ領域10又はレジスタのどちらか一方から復元される。続いて、処理はステップ64に進み、コンテキスト復元命令がスタック・メモリ領域10から復元する形態であれば、スタック・ポインタが更新される。
【0023】
CXTSave命令及びCXTRestore命令には、2つの種別がある。FPSCR及びSFPAがスタックに直接保存及び復元されることを可能とするメモリ・アクセス命令と、FPSCR及びSFPAを汎用レジスタ25の内外に移動することができるMOVスタイル命令である(R[])。FPCCR.ASPENを0に設定することによって、ソフトウェアが浮動小数点(FP)状態のハードウェア管理を無効化することができる点に注意が必要である。このような場合、プロセッサはアクティブなFPコンテキストがあるかどうかを判定することができない。安全なソリューションを保証するため、これらの命令は、ASPENが0であればアクティブなFPコンテキストがあると見なす。
【0024】
これらの命令が異なる条件下でどのように動作するかを説明する、いくつかの実例を図4から図8に示す。単純化のため、これらの実例は1つのセキュア関数のみを示しており、その結果、コンパイラが、FP命令がセキュア状態で実行されたかどうかを把握することが可能である。しかし、実際のコードでは、入れ子になったセキュア関数の呼び出しが多段を成している可能性が考えられ、それが異なる供給元のライブラリに渡っている可能性もあり、FPがセキュア状態で使用されたかどうかをゲートウェイ・セキュア関数のコンパイル時に判定することは困難となる。
【0025】
図4は、セキュア関数が呼び出される前にFPがアクティブでない場合(FPCA=0)を示しており、セキュア関数中にFP命令が実行されないため、FPは非アクティブのままとなる。その結果、関数の開始時におけるCXTSave命令は、SFPAの値と併せてFPSCRのNSデフォルト値(すなわちFPDSCR_NS)をメモリに格納する。関数が戻る前にCXTRestoreが実行されるが、FPがアクティブでないため、NOPとして作用する。全体的な結果としてFP状態に対する変更は実施されないが、現在のスレッドにアクティブなFPコンテキストがなく、FPコンテキスト・データ・レジスタ30内のデータが別のスレッド/例外レベルに属する可能性があるため、これが望ましい結果である。
【0026】
図5に示す実例は、セキュア関数の呼び出し前にFPがアクティブでない実例1に類似しており、そのためCXTSaveがNSデフォルト値をメモリに格納する。しかし、本例では、セキュア関数がFP命令を実行し、それによってFPCAは1に設定される。関数の最後にCXTRestoreが実行される際にアクティブなFP状態があるため、FPSCRはメモリに格納された値に設定される。CXTSaveがNSデフォルト値を格納したため、CXTRestoreは、NS状態に戻す準備としてFP状態をNSデフォルト値に初期化する効果を有する。NS状態で実行された最初のFP命令(ポイント1を参照)はそのため、正しいFPコンテキストを得る。
【0027】
図6に示す実例では、セキュア関数が呼び出される前にスレッドがアクティブなFPコンテキスト(FPCA=1)を有する。その結果、セキュア関数開始時のCXTSaveはFPSCR及びSFPAの現在の値をメモリに格納し、FPSCRをNSデフォルト値(すなわちFPDSCR_NS)に設定する。ポイント1において、セキュア状態において最初のFP命令が実行され、これによってFPSCRはセキュア・デフォルト値(FPDSCR_S)に設定される(注意:これはFP命令が実行された際にSFPAフラグが0であることによるもので、既存アーキテクチャの機能である)。NS状態における次のFP命令(ポイント2を参照)がセキュア関数呼び出し前のNSFP命令と同じFPSCR値を参照するよう、関数の最後にCXTRestoreがFPSCRの直前のNS値を復元する。
【0028】
図7に示す実例は、実例3と類似するが、セキュア関数が非セキュア関数への2つの入れ子呼び出しを有し、1つはセキュア関数内の最初のFP使用の前に、1つはその後にある。本アーキテクチャにおけるいくつかの既存の命令/機能は、ポイント2において、セキュアFP状態が効率的に保存され、非セキュア関数から保護され得ることを意味する。これらの機能はまた、非セキュア関数もFPSCRにおけるデフォルトNS値(割り込みハンドラからコールバック関数が実行される場合と同様に)を参照することを意味する。セキュア関数開始時におけるCXTSaveは、アクティブなFP状態(FPCA=1)がNS状態(SFPA=0)に属することを検出し、それによって、FPSCRをデフォルトNS値に設定する。その結果、ポイント1におけるNS関数はFPSCRの直前のNS値を参照しないが、代わりにポイント2におけるNS関数と同じFPSCR値、すなわちNSデフォルト値(FPDSCR_NS)を参照する。このことは重要であり、NSコールバック関数が参照できる状態は、呼び出し元のセキュア関数が浮動小数点命令を実行したか否かに依存するべきでない。
【0029】
図8に示す実例では、非セキュアなコードがゲートウェイ・セキュア関数を呼び出し、次に別のセキュア・ゲートウェイ関数を呼び出す。どちらのセキュア関数も非セキュア状態から呼び出されることができるゲートウェイ関数であるため、これらは関数のプロローグ及びエピローグにおいてCXTSave及びCXTRestoreを使用している。
【0030】
・ポイント1において、現在のコンテキスト・データ(FPSCR及びSFPA)はメモリに押し出され、FPSCRはNSデフォルト値(FPDSCR_NS)に設定される。
・ポイント1とポイント2との間でFP命令が実行されないため、ポイント2において現在のコンテキスト・データ(FPSCR及びSFPA)は再びメモリに押し出され、FPSCRはNSデフォルト値(FPDSCR_NS)に設定される。ポイント1においてFPSCRがNSデフォルト値(FPDSCR_NS)に設定されたため、ポイント2においてメモリに押し出された値はNSデフォルト値であり、ポイント1以前のFPSCRの値ではない。
・ポイント3において、セキュアFP命令が実行され、これによって、実例2のようにセキュアFPコンテキストが作成される。すなわち、SFPAは1に設定され、FPSCRはSデフォルト値(FPDSCR_S)に初期化される。
・ポイント4において、CXTRestoreがコンテキスト・データ(FPSCR及びSFPA)をポイント2以前の値に復元する、すなわち、FPSCRはNSデフォルト値(元はFPDSCR_NSから)に、また、SFPAは0に設定される。
・内部セキュア関数に戻った後、ポイント5においてセキュアFP命令が実行される。一見すると、このFP命令は、直前のポイントで復元されたFPSCRのNSデフォルト値の影響を受け得るように見える。しかし、CXTSave及びCXTRestoreがSFPAの値も同様に保存及び復元するため、ポイント2におけるSFPAの元の値(すなわち0)が復元されている。従って、ポイント5におけるFP命令によって、再びFPSCRは安全なセキュア・デフォルト値(FPDSCR_S)から再初期化される。
・ポイント6において、NS関数によって実行される次の任意のFP命令がポイント1以前のFPSCRの元の値を参照し直すよう、ポイント1で保存された元のコンテキスト・データが復元される。
【0031】
図9は、使用され得る仮想マシンの実装を示す。前述した実施例が対象技術をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実施する一方、ハードウェア・デバイスのいわゆる仮想マシンの実装を提供することも可能である。これらの仮想マシンの実装は、仮想マシン・プログラム510をサポートするホスト・オペレーティング・システム520を実行するホスト・プロセッサ530上で稼働する。典型的には、リーズナブルな速度で実行する仮想マシンの実装を提供するために大規模で強力なプロセッサが必要とされるが、このようなアプローチは、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行する要求がある場合など、特定の状況で正当化され得る。仮想マシン・プログラム510は、コンピュータ可読記憶媒体(非一時的な媒体であってよい)に格納されることができ、仮想的なハードウェア・インタフェース(命令実行環境)をゲスト・プログラム500に提供するが、このインタフェースは、仮想マシン・プログラム510によってモデル化されたデバイスである実ハードウェアによって提供されるハードウェア・インタフェースと同じである。従って、上述したメモリ・アクセスの制御を含むプログラム命令は、仮想マシン・プログラム510を用いてゲスト・プログラム500内から実行され、仮想マシン・ハードウェアとの相互作用をモデル化することができる。ゲスト・プログラムが、ハードウェア上で直に稼働するよう設計されたベア・メタル・アプリケーション(実でも仮想でもよい)、又は、それ自体がゲスト・アプリケーションをホストすることができるゲスト・オペレーティング・システムであってよいことは理解されるであろう。
【0032】
本明細書に、本発明を説明する実施例を添付図面を用いて詳述したが、本発明はこれらの正確な実施例に制限されるものではなく、添付された特許請求の範囲によって定められた本発明の範囲及び意図から逸脱することなく、当業者による様々な変更や改良が成され得ることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9