(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023145337
(43)【公開日】2023-10-11
(54)【発明の名称】ドメイン共有状態によってキャッシュラインをエンコーディングするキャッシュコヒーレンシープロトコル
(51)【国際特許分類】
G06F 12/0815 20160101AFI20231003BHJP
G06F 12/084 20160101ALI20231003BHJP
G06F 12/0895 20160101ALI20231003BHJP
【FI】
G06F12/0815
G06F12/084
G06F12/0895 114
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023009610
(22)【出願日】2023-01-25
(31)【優先権主張番号】17/705,450
(32)【優先日】2022-03-28
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.SMALLTALK
(71)【出願人】
【識別番号】521042770
【氏名又は名称】ウーブン・バイ・トヨタ株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100167461
【弁理士】
【氏名又は名称】上木 亮平
(72)【発明者】
【氏名】ジャーン-フランスワー バスティエン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205NN53
(57)【要約】 (修正有)
【課題】リアルタイムキャッシュと非リアルタイムキャッシュの間におけるコヒーレンシーを維持するためにキャッシュコヒーレンシープロトコルを実装するシステム、方法及びストレージ媒体を提供する。
【解決手段】システム300は、リアルタイムキャッシュを含むリアルタイムドメイン306と、非リアルタイムキャッシュを含む非リアルタイムドメイン308と、を含む。システムは、キャッシュラインがリアルタイムキャッシュと非リアルタイムキャッシュとの間において共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
システムであって、
リアルタイムキャッシュを含むリアルタイムドメインと、
非リアルタイムキャッシュを含む非リアルタイムドメインと、
を有し、
前記システムは、
前記リアルタイムキャッシュと前記非リアルタイムキャッシュとの間においてキャッシュラインが共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装するように構成される、
システム。
【請求項2】
前記システムは、
前記リアルタイムキャッシュと前記非リアルタイムキャッシュの間において前記キャッシュラインが共有され得ることを通知するドメイン共有状態によって前記キャッシュラインをエンコーディングすることにより、前記キャッシュコヒーレンシープロトコルを実装するように構成される、
請求項1に記載のシステム。
【請求項3】
前記システムは、
前記リアルタイムドメインのキャッシュライン状態インジケータを前記ドメイン共有状態に対応するビット値に設定することにより、前記ドメイン共有状態によって前記キャッシュラインをエンコーディングするように構成される、
請求項2に記載のシステム。
【請求項4】
前記システムは、
前記非リアルタイムドメインのキャッシュライン状態インジケータを前記ドメイン共有状態に対応するビット値に設定することにより、前記ドメイン共有状態によって前記キャッシュラインをエンコーディングするように構成される、
請求項2又は請求項3に記載のシステム。
【請求項5】
前記リアルタイムドメインは、リアルタイムプロセッサを含み、且つ、前記非リアルタイムドメインは、非リアルタイムプロセッサを含む、
請求項1又は請求項2に記載のシステム。
【請求項6】
前記リアルタイムプロセッサは、安全性に関係する機能を実行し、且つ、前記非リアルタイムプロセッサは、安全性に関係していない機能を実行する、
請求項5に記載のシステム。
【請求項7】
前記システムは、
車両上において、もののインターネット(IoT)環境内において、又はクラウド演算環境内において実装される、
請求項1又は請求項2に記載のシステム。
【請求項8】
方法であって、
リアルタイムキャッシュを含むリアルタイムドメインを提供するステップと、
非リアルタイムキャッシュを含む非リアルタイムドメインを提供するステップと、
前記リアルタイムキャッシュと前記非リアルタイムキャッシュとの間においてキャッシュラインが共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装するステップと、
を有する方法。
【請求項9】
前記キャッシュコヒーレンシープロトコルを実装するステップは、
前記リアルタイムキャッシュと前記非リアルタイムキャッシュとの間において前記キャッシュラインが共有され得ることを通知するドメイン共有状態によって前記キャッシュラインをエンコーディングするステップを有する、
請求項8に記載の方法。
【請求項10】
前記ドメイン共有状態によって前記キャッシュラインをエンコーディングするステップは、
前記リアルタイムドメインのキャッシュライン状態インジケータを前記ドメイン共有状態に対応するビット値に設定するステップを有する、
請求項9に記載の方法。
【請求項11】
前記ドメイン共有状態によって前記キャッシュラインをエンコーディングするステップは、
前記非リアルタイムドメインのキャッシュライン状態インジケータを前記ドメイン共有状態に対応するビット値に設定するステップを有する、
請求項9又は請求項10に記載の方法。
【請求項12】
前記リアルタイムドメインは、リアルタイムプロセッサを含み、且つ、前記非リアルタイムドメインは、非リアルタイムプロセッサを含む、
請求項8又は請求項9に記載の方法。
【請求項13】
前記リアルタイムプロセッサは、安全性に関係する機能を実行し、且つ、前記非リアルタイムプロセッサは、安全性に関係していない機能を実行する、
請求項12に記載の方法。
【請求項14】
前記方法は、車両上において、もののインターネット(IoT)環境内において、又はクラウド演算環境内において実装される、
請求項8又は請求項9に記載の方法。
【請求項15】
命令を保存する一時的ではないコンピュータ可読ストレージ媒体であって、前記命令は、少なくとも1つのプロセッサによって実行された際に、前記少なくとも1つのプロセッサが、リアルタイムドメインのリアルタイムキャッシュと非リアルタイムドメインの非リアルタイムキャッシュとの間においてキャシュラインが共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装するようにしている、
ストレージ媒体。
【請求項16】
前記少なくとも1つのプロセッサは、
前記リアルタイムキャッシュと前記非リアルタイムキャッシュの間において前記キャッシュラインが共有され得ることを通知するドメイン共有状態によって前記キャッシュラインをエンコーディングすることにより、前記キャッシュコヒーレンシープロトコルを実装するために前記命令を実行するように構成される、
請求項15に記載ストレージ媒体。
【請求項17】
前記ドメイン共有状態によって前記キャッシュラインをエンコーディングすることは、
前記リアルタイムドメインのキャッシュライン状態インジケータを前記ドメイン共有状態に対応するビット値に設定することを有する、
請求項16に記載のストレージ媒体。
【請求項18】
前記ドメイン共有状態によって前記キャッシュラインをエンコーディングすることは、
前記非リアルタイムドメインのキャッシュライン状態インジケータを前記ドメイン共有状態に対応するビット値に設定することを有する、
請求項16又は請求項17に記載のストレージ媒体。
【請求項19】
前記リアルタイムドメインは、リアルタイムプロセッサを含み、且つ、前記非リアルタイムドメインは、非リアルタイムプロセッサを含む、
請求項15又は請求項16に記載のストレージ媒体。
【請求項20】
前記リアルタイムプロセッサは、安全性に関係する機能を実行し、且つ、前記非リアルタイムプロセッサは、安全性に関係していない機能を実行する、
請求項19に記載のストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、処理システムにおけるキャッシュコヒーレンシーに関する。
【背景技術】
【0002】
車両ハードウェアなどの機能安全上重要であるハードウェアは、相対的に費用効率に優れたものであり得ると共に、相対的に少ない数のハードウェアが必要とされている場合に相対的に良好に稼働し得る。但し、現時点のハードウェアは、高性能を提供するために、推論、キャッシュ、及びその他のメカニズムに依存している。その結果、機能安全上重要ではないコードと同一のハードウェア上において機能安全上重要であるコードを実行することが困難になっており、その理由は、これにより、異なる信頼性目標を有するコードが互いに干渉することになるからである。
【0003】
現時点のハードウェア構成は、共有された非アーキタクチャリソースを有する。但し、これらのリソースの共有は、一般に望ましいものではなく、その理由は、アプリケーションがコヒーレンス(coherence)及び干渉からの自由(FFI;Freedom From Interference)を保証する必要があるからである。自動車ソフトウェアの文脈におけるFFIは、通常、相対的に安全上重要ではないドメイン内の障害(例えば、相対的に低い自動車安全インテグリティレベル(ASIL;Automotive Safety Integrity Level)を有するもの)が、(例えば、相対的に高いASILを有する)相対的に安全上重要であるドメインと干渉しない、或いは、その内部の障害に結び付かないことを必要としている。例えば、低いASILのコンポーネントのソフトウェアが、予想よりも多くのリソース(例えば、メモリ、実行時間、など)を使用し、その結果、相対的に高いASILのコンポーネントがリソース不足に陥ることになる場合がある。この文脈において、データキャッシュなどの共有されたリソースは、干渉をもたらす場合があり、その理由は、低いASILのコンポーネントからのメモリへのアクセスが、高いASILのコンポーネントからのキャッシュエントリを妨害し得るからである。従って、FFIは、このような障害を防止するための、機能安全上重要であるハードウェアシステムにおける重要な側面である。これを目的として、FFIは、リソースがアプリケーションドメインの間においてまったく共有されないハードウェア設計をもたらしている。
【発明の概要】
【0004】
本開示の一態様によれば、システムは、リアルタイムキャッシュを含むリアルタイムドメインと、非リアルタイムキャッシュを含む非リアルタイムドメインと、を含むことができる。システムは、キャッシュライン(cache line)がリアルタイムキャッシュと非リアルタイムキャッシュとの間において共有され得ることを通知することにより、キャッシュコヒーレンシープロトコル(cache coherency protocol)を実装するように構成することができる。
【0005】
本開示の一態様によれば、方法は、リアルタイムキャッシュを含むリアルタイムドメインを提供するステップと、非リアルタイムキャッシュを含む非リアルタイムドメインを提供するステップと、キャッシュラインがリアルタイムキャッシュと非リアルタイムキャッシュの間において共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装するステップと、を含むことができる。
【0006】
本開示の一態様によれば、一時的ではないコンピュータ可読ストレージ媒体は、少なくとも1つのプロセッサによって実行された際に、少なくとも1つのプロセッサが、キャッシュラインがリアルタイムドメインのリアルタイムキャッシュと非リアルタイムドメインの非リアルタイムキャッシュの間において共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装するようにする命令を保存することができる。
【0007】
更なる態様については、後続する説明において部分的に記述されることになり、且つ、部分的に説明から明らかとなり、或いは、本開示の提示された実施形態の実施によって理解することができる。
【0008】
本開示の上述の且つその他の態様、特徴、及び実施形態の態様については、以下の添付図面との関連において提供される以下の説明から更に明らかとなろう。
【図面の簡単な説明】
【0009】
【
図1】
図1は、一実施形態によるシステムの装置の図である。
【
図2】
図2は、一実施形態による
図1の装置のコンポーネントの図である。
【
図3】
図3は、一実施形態によるキャッシュコヒーレンシープロトコルを実装するシステムの図である。
【
図4】
図4は、一実施形態によるキャッシュコヒーレンシープロトコルを実装する方法のフローチャートである。
【発明を実施するための形態】
【0010】
例示用の実施形態に関する以下の詳細な説明は、添付図面を参照している。異なる図面における同一の参照符号は、同一又は類似の要素を識別し得る。
【0011】
図1は、一実施形態によるシステムの図である。
図1は、ユーザー装置110と、サーバー装置120と、ネットワーク130と、を含む。ユーザー装置110及びサーバー装置120は、有線接続、無線接続、又は有線及び無線接続の組合せを介して相互接続することができる。
【0012】
ユーザー装置110は、演算装置(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバー装置、など)、携帯電話機(例えば、スマートフォン、無線電話機、など)、カメラ装置、ウェアラブル装置(例えば、スマート眼鏡又はスマートウォッチ)、車両の1つ又は複数のコンポーネントを制御する装置、医療装置などの安全上重要である装置、ロボット装置、車両、ドローン、など、或いは、類似の装置を含むことができる。
【0013】
サーバー装置120は、(インターネットなどの)ネットワーク130を介してアクセス可能である1つ又は複数の演算装置を含む。
【0014】
ネットワーク130は、1つ又は複数の有線及び/又は無線ネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームイボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、コード分割多重アクセス(CDMA)ネットワーク、など)、公衆携帯電話網(PLMN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話網(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバに基づいたネットワーク、テレマティクスネットワーク、又はこれらに類似したもの、並びに/或いは、これらの又はその他のタイプのネットワークの組合せを含むことができる。
【0015】
図1に示されている装置及びネットワークの数及び構成は、一例として提供されたものである。実際には、
図1に示さているものとの比較において、多くの装置及び/又はネットワークが存在していてもよく、少ない数の装置及び/又はネットワークが存在していてもよく、異なる装置及び/又はネットワークが存在していてもよく、或いは、異なる方式で構成された装置及び/又はネットワークが存在していてもよい。更には、
図1に示されている2つ以上の装置は、単一の装置内において実装されていてもよく、或いは、
図1に示されている単一装置は、複数の分散された装置として実装されていてもよい。これに加えて、又はこの代わりに、装置の組(例えば、1つ又は複数の装置)は、装置の別の組によって実行されるものとして記述されている1つ又は複数の機能を実行することができる。
【0016】
図2は、一実施形態による
図1の1つ又は複数の装置のコンポーネントの図である。装置200は、ユーザー装置110及び/又はサーバー装置120に対応し得る。
【0017】
図2に示されているように、装置200は、バス210と、プロセッサ220と、メモリ230と、ストレージコンポーネント240と、入力コンポーネント250と、出力コンポーネント260と、通信インターフェイス270と、を含むことができる。
【0018】
バス210は、装置200のコンポーネントの間における通信を許容するコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアの組合せにおいて実装されている。プロセッサ220は、中央処理ユニット(CPU)、グラフィクス処理ユニット(GPU)、加速型処理ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラム可能なゲートアレイ(FPGA)、用途固有の集積回路(ASIC)、処理コア、又は別のタイプの処理コンポーネントの少なくとも1つであってよい。プロセッサ220は、機能を実行するようにプログラミングされる能力を有する1つ又は複数のプロセッサを含む。
【0019】
メモリ230は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、キャッシュ、命令キャッシュ、トランスレーションルックアサイドバッファ(TLB)、ブランチ予測、及び/又はプロセッサ220によって使用される情報及び/又は命令を保存する別のタイプのダイナミック又はスタティックストレージ装置(例えば、フラッシュメモリ、磁気メモリ、及び/又は光メモリ)を含む。
【0020】
ストレージコンポーネント240は、装置200の動作及び仕様に関係する情報及び/又はソフトウェアを保存している。例えば、ストレージコンポーネント240は、対応するドライブと共に、ハードディスク(例えば、磁気ディスク、光ディスク、磁気-光ディスク、及び/又は半導体ディスク)、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、及び/又は別のタイプの一時的ではないコンピュータ可読媒体を含むことができる。
【0021】
入力コンポーネント250は、ユーザー入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイクロフォン)を介したものなどのように、装置200が情報を受け取ることを許容するコンポーネントを含む。入力コンポーネント250は、情報を検知するセンサ(例えば、全地球測位システム(GPS)コンポーネント、加速度計、ジャイロスコープ、及び/又はアクチュエータ)を含むことができる。
【0022】
出力コンポーネント260は、装置200からの情報出力を提供するコンポーネント(例えば、ディスプレイ、スピーカ、及び/又は1つ又は複数の発光ダイオード(LED))を含む。
【0023】
通信インターフェイス270は、装置200が、有線接続、無線接続、又は有線及び無線接続の組合せを介したものなどのように、その他の装置と通信することを可能にするトランシーバ様のコンポーネント(例えば、トランシーバ及び/又は別個のレシーバ及びトランスミッタ)を含む。通信インターフェイス270は、装置200が別の装置から情報を受け取り且つ/又は別の装置に情報を提供することを許容することができる。例えば、通信インターフェイス270は、Ethernetインターフェイス、光インターフェイス、同軸インターフェイス、赤外線インターフェイス、高周波(RF)インターフェイス、ユニバーサルシリアルバス(USB)インターフェイス、Wi-Fiインターフェイス、セルラーネットワークインターフェイス、又はこれらに類似したものを含むことができる。
【0024】
装置200は、本明細書において記述されている1つ又は複数のプロセスを実行することができる。装置200は、メモリ230及び/又はストレージコンポーネント240などの一時的ではないコンピュータ可読媒体によって保存されたソフトウェア命令を実行するプロセッサ220に基づいて動作を実行することができる。コンピュータ可読媒体は、本明細書においては、一時的ではないメモリ装置として定義されている。メモリ装置は、単一の物理的ストレージ装置内のメモリ空間又は複数の物理的ストレージに跨って分散されたメモリ空間を含む。
【0025】
ソフトウェア命令は、通信インターフェイス270を介して別のコンピュータ可読媒体から又は別の装置からメモリ230及び/又はストレージコンポーネント240内に読み込むことができる。実行された際に、メモリ230及び/又はストレージコンポーネント240内において保存されたソフトウェア命令は、プロセッサ220が本明細書において記述されている1つ又は複数のプロセスを実行するようにすることができる。
【0026】
これに加えて、又はこの代わりに、配線によって接続された回路を本明細書において記述されている1つ又は複数のプロセスを実行するためのソフトウェア命令の代わりに又はこれとの組合せにおいて使用することができる。従って、本明細書において記述されている実施形態は、ハードウェア回路及びソフトウェアの任意の特定の組合せに限定されるものではない。
【0027】
グラフィカル処理ユニット(GPU)などのプロセッサは、そのレベルにおいてキャッシュコヒーレンシーを実行するために且つプロセッサと中央処理ユニット(CPU)の間の関係する機能(例えば、TLBミス)を処理するために一体化されたメモリを利用することできると共にオペレーティングシステム(OS)カーネル(例えば、LINUXカーネル)と共に機能することができる。
【0028】
異なるアプリケーションドメインの間におけるキャッシュなどの共有リソースの管理においては、干渉からの自由(FFI)を保証するために注意する必要がある。特定のドメインが共通メモリリソースのキャッシュを維持している際には、インコヒーレントデータに伴って問題が生じる場合がある。例えば、ドメインのローカルキャッシュ内のデータに対する更新が共通メモリリソース又は別のドメインのローカルキャッシュ内において反映されない場合がある。これを目的として、キャッシュコヒーレンシープロトコルは、複数のローカル又はドメインキャッシュ内において保存されている共有リソースの均一性を保証するように設計及び実装されている。一実施形態によれば、リアルタイムホストオペレーティングシステム(OS)又はシンハイパーバイザスーパーバイザは、いくつかをリアルタイムにおいて且ついくつかを非リアルタイムにおいてというように、ゲストOSを仮想CPU内において管理することができる。例えば、異なるドメインが実際のCPUを所有しているように知覚している間にそれらのドメインの隔離を支援するように、仮想的なCPUを異なるドメインに割り当てることができる。
【0029】
本明細書においては、干渉がドメインの間において受け入れ可能である場所をソフトウェアが表現することを許容するハードウェア設計が開示されている。開示されているハードウェア設計は、ハードウェアがそれぞれのドメイン内の通常の推論及びキャッシングによって十分に稼働することを許容している。また、開示されているハードウェア設計は、ソフトウェアが明示的に共有されているものとして識別している共有リソースに対する干渉を制限している。この結果、FFIが、安全上重要であるドメイン及び高度なASILのコンポーネントによって共有されているものを含む共有リソースについて実現されている。
【0030】
図3は、一実施形態によるキャッシュコヒーレンシープロトコルを実装するシステム300の図である。システム300は、車両、もののインターネット(IoT)環境、クラウド演算環境、又はこれらの組合せ内において実装することができる。システム300は、演算装置(例えば、
図1の装置110又は120、或いは、
図2の装置200)内においてシステムオンチップ(SoC)として実装することができる。
【0031】
システム300は、メモリ304と、リアルタイムドメイン306と、非リアルタイムドメイン308と、を含む。リアルタイムドメインは、リアルタイムプロセッサ310と、リアルタイムプロセッサ310に対応するリアルタイムキャッシュ312と、を含む。リアルタイムキャッシュ312は、リアルタイムドメイン306に対して指定されたメモリ304又は別のメモリの一部分(即ち、リアルタイムドメイン306内の更なるメモリストレージ又はリアルタイムドメイン306に対して指定されたメモリ304のパーティション)として実装することができる。リアルタイムキャッシュ312は、リアルタイムキャッシュライン状態インジケータ314を含む。
【0032】
非リアルタイムドメイン308は、非リアルタイムプロセッサ320と、非リアルタイムプロセッサ308に対応する非リアルタイムキャッシュ322と、を含む。非リアルタイムキャッシュ322は、非リアルタイムドメイン308に対して指定されたメモリ304又は別のメモリの一部分(即ち、非リアルタイムドメイン308内の更なるメモリストレージ又は非リアルタイムドメイン308に対して指定されたメモリ304のパーティション)として実装することができる。非リアルタイムキャッシュ322は、非リアルタイムキャッシュライン状態インジケータ324を含む。
【0033】
1つのリアルタイムプロセッサ310、1つのリアルタイムキャッシュ312、1つの非リアルタイムプロセッサ320、及び1つの非リアルタイムキャッシュ322が描かれているが、実施形態は、これに限定されるものではなく、且つ、複数のプロセッサ及び/又は複数のキャッシュが両方のドメイン(リアルタイム対非リアルタイム)において存在し得ることを理解されたい。更には、リアルタイムプロセッサ310は、例えば、CPUを含んでいてもよく、且つ、非リアルタイムプロセッサ320は、Arm Aプロファイルコアを含んでいてもよい。それぞれのドメインは、その独自のFFI要件を有することができる。例えば、リアルタイムドメイン306は、リアルタイムFFI要件を有していてもよく、且つ、非リアルタイムドメイン308は、非リアルタイムFFI要件を有していてもよい。
【0034】
リアルタイムプロセッサ310は、衝突回避、速度制御、先進運転支援システム(ADAS)、自動化運転、などのような車両の安全性に関係する機能を実行するように構成することができる。非リアルタイムプロセッサ320は、車両温度、インフォテインメント、などのような安全性に関係していない機能を実行するように構成することができる。実施形態は、安全性に関係する機能及び安全性に関係していない機能の上述の例に限定されるものではなく、且つ、その他の安全性に関係する機能及び安全性に関係していない機能を実行することができることを理解されたい。リアルタイムドメイン306及び非リアルタイムドメイン308は、メモリ304にアクセスすることができるが、そうでない場合には、キャッシュコヒーレンシーを通じて通信していなくてもよい。
【0035】
システム300は、リアルタイムキャッシュ312と非リアルタイムキャッシュ322の間におけるコヒーレンシーを維持するためにキャッシュコヒーレンシープロトコルを実装するように構成することができる。システム300は、キャッシュラインがリアルタイムキャッシュ312と非リアルタイムキャッシュ322の間において共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装することができる。システム300は、ドメイン共有状態によってキャッシュラインをエンコーディングすることにより、キャッシュラインが共有され得ることを通知することができる。システム300は、個々のキャッシュのドメイン共有状態を通知するためにリアルタイムキャッシュライン状態インジケータ314及び/又は非リアルタイムキャッシュライン状態インジケータ324をエンコーディングすることにより、ドメイン共有状態によってキャッシュラインをエンコーディングすることができる。例えば、システム300は、ページテーブルエントリを有するビットに関する情報を表記するページテーブルを実装することができる。ページテーブルエントリは、プロセスオーナーシップ、エントリが動作しているOS、エントリタイプ(書き込み可能、読み出し可能、実行可能、など)などのエントリに関する情報を提供することができる。従って、ページテーブルエントリは、エントリがドメインの間において共有され得るかどうかを通知するビットを含むことができる。ページテーブルは、システム300がキャッシュラインが共有され得ることを通知し得るメカニズムの一例に過ぎず、且つ、1つ又は複数のその他の例示用の実施形態は、これに限定されてはいないことを理解されたい。例えば、様々な実施形態においては、ドメイン共有状態、即ち、キャッシュラインが共有可能であるかどうか、を通知する情報が維持されている任意のメカニズムを使用することができる。
【0036】
ドメイン共有状態は、キャッシュラインがリアルタイムキャッシュ312と非リアルタイムキャッシュ322の間において共有され得ることを識別している。システムは、ビット値を0又は1或いはドメイン共有状態を通知する別の値に設定することにより、インジケータ314及び324をエンコーディングすることができる。従って、キャッシュラインをリアルタイムドメイン306と非リアルタイムドメイン308の間(即ち、安全性に関係する機能と安全性に関係していない機能の間)において伝達することができる。従って、システム300は、リアルタイムドメイン306と非リアルタイムドメイン308の間におけるFFIを許容しており、その理由は、リアルタイムキャッシュ312が、ドメイン共有キャッシュ及び非リアルタイムキャッシュ322からキャッシュコヒーレンシートラフィックを受け取っていないからである。
【0037】
図4は、一実施形態によるキャッシュコヒーレンシープロトコルを実装する方法のフローチャートである。動作402において、システムには、リアルタイムキャッシュを含むリアルタイムドメインが提供されている。動作404において、システムには、非リアルタイムキャッシュを含む非リアルタイムドメインが提供されている。動作406において、システムは、キャッシュラインがリアルタイムキャッシュと非リアルタイムキャッシュの間において共有され得ることを通知することにより、キャッシュコヒーレンシープロトコルを実装している。その結果、ドメインの間におけるFFIが保証されており、その理由は、リアルタイムキャッシュが、ドメイン共有且つ非リアルタイムキャッシュからキャッシュコヒーレンシートラフィックを受け取っていないからである。
【0038】
以上の開示は、図示及び説明を提供しているが、すべてを網羅することを又は実装形態を開示されている形態そのままに限定することを意図したものではない。変更及び変形が以上の開示に鑑み可能であり又は実装形態の実施から取得され得る。
【0039】
いくつかの実施形態は、統合の任意の可能な技術的詳細レベルにおいてシステム、方法、及びコンピュータ可読媒体に関係し得る。コンピュータ可読媒体は、プロセッサが動作を実行するようにするためにその上部においてコンピュータ可読プログラム命令を有する1つ又は複数のコンピュータが読み取り可能な一時的ではないストレージ媒体を含むことができる。
【0040】
コンピュータ可読ストレージ媒体は、命令実行装置によって使用される命令を保持及び保存し得る有体の装置であってよい。コンピュータ可読ストレージ媒体は、例えば、限定を伴うことなしに、電子ストレージ装置、磁気ストレージ装置、光ストレージ装置、電気磁気ストレージ装置、半導体ストレージ装置、又は以上のものの任意の適切な組合せであってよい。コンピュータ可読ストレージ媒体の更に具体的な、例のすべてを網羅してはいないリストは、携帯型コンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能な読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、携帯型コンパクトディスク読み出し専用メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリスティック、フロッピーディスク、パンチカード又はその上部において記録された命令を有する溝内の隆起した構造などの機械的にエンコーディングされた装置、並びに、以上のものの任意の適切な組合せを含む。本明細書において使用されているコンピュータ可読ストレージ媒体は、電波又はその他の自由に伝播する電磁波、導波路又はその他の送信媒体を通じて伝播する電磁波(例えば、光ファイバケーブルを通じで伝播する光パルス)、或いは、ワイヤを通じて送信される電気信号などのそれ自体が一時的な信号であるものとして解釈してはならない。
【0041】
本明細書において記述されているコンピュータ可読プログラム命令は、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は無線ネットワークなどのネットワークを介して、コンピュータ可読ストレージ媒体から個々の演算/処理装置に又は外部コンピュータ又は外部ストレージ装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルーター、ファイアウォール、スイッチ、ゲートウェイ、コンピュータ、及び/又はエッジサーバーを有することができる。それぞれの演算/処理装置内のネットワークアダプタカード又はネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受け取り、且つ、コンピュータ可読プログラム命令を個々の演算/処理装置内のコンピュータ可読ストレージ媒体内における保存のために転送している。
【0042】
動作を実行するためのコンピュータ可読プログラムコード/命令は、アセンブラ命令、インストラクションセットアーキテクチャ(ISA)命令、機械命令、機械依存性命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、或いは、Smalltalk、C++、又はこれらに類似したものなどのオブジェクト指向のプログラミング言語及び「C」プログラミング言語又は類似のプログラミング言語などの手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組合せにおいて記述されたソースコード又はオブジェクトコードであってよい。コンピュータ可読プログラム命令は、ユーザーのコンピュータ上において全体的に、ユーザーのコンピュータ上において部分的に、スタンドアロンソフトウェアパッケージとして、ユーザーのコンピュータ上において部分的に且つリモートコンピュータ上において部分的に、或いは、リモートコンピュータ又はサーバー上において全体的に、稼働することができる。後者のシナリオにおいては、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザーのコンピュータに接続されていてもよく、或いは、接続は、(例えば、インターネットサービスプロバイダを使用するインターネットを通じて)外部コンピュータに対して実施されていてもよい。いくつかの実施形態においては、例えば、プログラム可能な論理回路、フィールドプログラム可能なゲートアレイ(FPGA)、又はプログラム可能なロジックアレイ(PLA)を含む電子回路は、態様又は動作を実行するために、電子回路をパーソナライズするようにコンピュータ可読プログラム命令の状態情報を利用することにより、コンピュータ可読プログラム命令を実行することができる。
【0043】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサ又はその他のプログラム可能なデータ処理装置を介して稼働する命令がフローチャート及び/又は1つ又は複数のブロックダイアグラムブロック内において規定された機能/行為を実装するための手段を生成するように、機械を生成するために、汎用コンピュータ、特殊目的コンピュータ、又はその他のプログラム可能なデータ処理装置のプロセッサに提供することができる。また、これらのコンピュータ可読プログラム命令は、その内部に保存されている状態において命令を有するコンピュータ可読ストレージ媒体がフローチャート及び/又は1つ又は複数のブロックダイアグラムブロック内において規定された機能/行為の態様を実装する命令を含む製造の物品を有するように、コンピュータ、プログラム可能なデータ処理装置、及び/又はその他の装置が特定の方式によって機能するように制御することができるコンピュータ可読ストレージ媒体内において保存することができる。
【0044】
また、コンピュータ可読プログラム命令は、コンピュータ、その他のプログラム可能な装置、又はその他の装置上において稼働する命令がフローチャート及び/又は1つ又は複数のブロックダイアグラムブロック内において規定された機能/行為を実装するように、コンピュータ実装されたプロセスを生成するために、一連の動作ステップがコンピュータ、その他のプログラム可能な装置、又はその他の装置上において実行されるようにするように、コンピュータ、その他のプログラム可能なデータ処理装置、又はその他の装置内に読み込むことができる。
【0045】
図中のフローチャート及びブロックダイアグラムは、様々な実施形態によるシステム、方法、及びコンピュータ可読媒体の可能な実装形態のアーキテクチャ、機能、及び動作を示している。この観点において、フローチャート又はブロックダイアグラム内のそれぞれのブロックは、命令のモジュール、セグメント、又は一部分を表していてもよく、これは、規定された1つ又は複数の論理的機能を実装するための1つ又は複数の実行可能命令を有する。方法、コンピュータシステム、及びコンピュータ可読媒体は、図に描かれているものとの比較において、多くのブロック、少ない数のブロック、異なるブロック、又は異なる方式で構成されたブロックを含むことができる。いくつかの代替実装形態においては、ブロック内において記述されている機能は、図中において記述されている順序以外において発生し得る。例えば、連続した方式で示されている2つのブロックは、実際には、同時に又は実質的に同時に実行されてもよく、或いは、ブロックは、しばしば、関連する機能に応じて、逆の順序において実行されてもよい。また、ブロックダイアグラム及び/又はフローチャート図並びにブロックダイアグラム及び/又はフローチャート図中のブロックの組合せのそれぞれのブロックは、規定された機能又は行為を実行する又は特殊目的ハードウェア及びコンピュータ命令の組合せを実行する特殊目的ハードウェアに基づいたシステムによって実装され得ることに留意されたい。
【0046】
本明細書において記述されているシステム及び/又は方法は、ハードウェア、ファームウェア、或いは、ハードウェア及びソフトウェアの組合せの異なる形態において実装され得ることが明らかとなろう。これらのシステム及び/又は方法を実装するために使用される実際の専門的な制御ハードウェア又はソフトウェアコードは、実装形態を限定するものではない。従って、システム及び/又は方法の動作及び振る舞いは、特定のソフトウェアコードを参照することなしに本明細書において記述されており、これは、ソフトウェア及びハードウェアが、本明細書における記述に基づいてシステム及び/又は方法を実装するように設計され得るものと理解されたい。
【0047】
本明細書において使用されているいずれの要素、行為、又は命令も、その旨が明示的に記述されていない限り、重要又は不可欠であるものとして解釈してはならない。また、本明細書において使用されている冠詞「a」及び「an」は、1つ又は複数の項目を含むことが意図されており、且つ、「1つ又は複数の」と相互交換可能に使用することができる。更には、本明細書において使用されている「組(set)」という用語は、1つ又は複数の項目(例えば、関係する項目、関係していない項目、関係する且つ関係していない項目の組合せ、など)を含むことが意図されており、且つ、「1つ又は複数の」と相互交換可能に使用することができる。1つの項目のみが意図されている場合には、「1つの(one)」という用語又は類似の言語が使用されている。また、本明細書において使用されている「有する(has)」、「有する(have)」、「有する(having)」という用語又はこれらに類似したものは、オープンエンド型の用語となるように意図されている。更には、「~に基づいて(based on)」というフレーズは、そうではない旨が明示的に記述されていない限り、「~に少なくとも部分的に基づいて(based, at least in part, on)」を意味することが意図されている。
【0048】
様々な態様及び実施形態の説明は、例示を目的として提示されており、且つ、すべてを網羅することを又は開示された実施形態に限定することを意図したものではない。特徴の組合せが請求項において記述され且つ/又は本明細書において開示されているが、これらの組合せは、可能な実装形態の開示を限定することを意図したものではない。実際に、これらの特徴の多くは、請求項において具体的に記述されていない且つ/又は本明細書において開示されていない方法によって組み合わせることができる。添付のそれぞれの従属請求項は、1つの請求項にのみ直接的に従属し得るが、可能な実装形態の開示は、請求項の組内のすべてのその他の請求項との組合せにおけるそれぞれの従属請求項を含む。多くの変更及び変形については、記述されている実施形態の範囲を逸脱することなしに当業者に明らかとなろう。本明細書において使用されている用語は、実施形態、実際的な用途、又は市場において見出される技術との比較における技術的改善の原理を最良に説明するために、或いは、当業者が本明細書において開示されている実施形態を理解することを可能にするために、選択されたものである。
【外国語明細書】