(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-06
(54)【発明の名称】メモリトランザクション管理
(51)【国際特許分類】
G06F 12/0842 20160101AFI20241029BHJP
G06F 9/46 20060101ALI20241029BHJP
G06F 9/52 20060101ALI20241029BHJP
G06F 12/0855 20160101ALI20241029BHJP
G06F 12/0871 20160101ALI20241029BHJP
【FI】
G06F12/0842
G06F9/46 430
G06F9/52 150A
G06F12/0855 100
G06F12/0871
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024520024
(86)(22)【出願日】2022-09-28
(85)【翻訳文提出日】2024-04-02
(86)【国際出願番号】 US2022077131
(87)【国際公開番号】W WO2023069828
(87)【国際公開日】2023-04-27
(32)【優先日】2021-10-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】コーブ、クリストファー
(72)【発明者】
【氏名】モラ、ベンカタラミ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM03
5B205NN78
5B205UU45
(57)【要約】
デバイスは、メモリに結合されたプロセッサを含む。プロセッサは、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるように構成されている。プロセッサはまた、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するように構成されている。
【特許請求の範囲】
【請求項1】
メモリと、
前記メモリに結合されたプロセッサと、を備える、デバイスであって、前記プロセッサが、
複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当て、
ドメイン識別子に関連付けられたメモリトランザクションの数に基づいて前記プロセッサの1つ又は複数の構成要素の動作を制御するように構成されている、デバイス。
【請求項2】
第1のソフトウェアスレッドに関連付けられたキャッシュ制御レジスタを更に備え、前記第1のソフトウェアスレッドに第1のドメイン識別子を割り当てることが、前記第1のドメイン識別子を示すように前記キャッシュ制御レジスタを更新することを含む、請求項1に記載のデバイス。
【請求項3】
第1のドメイン識別子が、第1のソフトウェアスレッドに関連付けられた通信タイプに少なくとも部分的に基づいて前記第1のソフトウェアスレッドに割り当てられており、前記通信タイプが、セルラーモデムトラフィック又はワイヤレスローカルエリアネットワーク(WLAN)トラフィックを含む、請求項1に記載のデバイス。
【請求項4】
前記プロセッサが、第1のソフトウェアスレッドの同期命令を受信するように構成されており、前記第1のソフトウェアスレッドが、第1の一貫性ドメイン識別子を割り当てられており、前記動作を制御することが、前記同期命令を受信したことに応じて、前記第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、前記第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む、請求項1に記載のデバイス。
【請求項5】
前記プロセッサが、前記第1の一貫性ドメイン識別子に一致する第2の一貫性ドメイン識別子に関連付けられた同期命令を受信したことに応じて、前記第2の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、前記第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了するように構成されている、請求項4に記載のデバイス。
【請求項6】
前記第2の一貫性ドメイン識別子が、前記第1の一貫性ドメイン識別子によって示される一貫性ドメインのサブドメインを示す、請求項5に記載のデバイス。
【請求項7】
前記第1の一貫性ドメイン識別子が、前記第2の一貫性ドメイン識別子と同じである、請求項5に記載のデバイス。
【請求項8】
前記同期命令が、バリア命令又はストア解放ロード取得命令を含む、請求項4に記載のデバイス。
【請求項9】
前記メモリのデータを記憶するように構成されているキャッシュと、
1つ又は複数の一貫性ドメイン識別子に関連付けられた1つ又は複数の保留中のストアを追跡するように構成されているトランザクション追跡スコアボードと、を備え、
前記プロセッサが、第1のメモリロケーションを示す第1のソフトウェアスレッドの書込み命令を受信し、前記第1のメモリロケーションに関連付けられたデータが前記キャッシュ内で利用可能でないと判定したことに応じて、
前記第1のメモリロケーションから前記キャッシュの第1の部分に第1のデータをロードし、
前記キャッシュ内の前記第1のデータを更新する、ように構成されている、請求項1に記載のデバイス。
【請求項10】
前記プロセッサが、前記第1のソフトウェアスレッドに関連付けられたストアがコミットされたことに応じて、前記第1のメモリロケーションへの前記更新された第1のデータの保留中のストア動作を示すように前記トランザクション追跡スコアボードのエントリを更新するように構成されており、前記エントリが、前記第1のメモリロケーション及び前記第1のソフトウェアスレッドの第1の一貫性ドメイン識別子を示すように更新される、請求項9に記載のデバイス。
【請求項11】
前記プロセッサは、
前記第1のメモリロケーションへの前記更新された第1のデータの記憶が完了したことを示す肯定応答を受信し、
前記肯定応答を受信したことに応じて、前記トランザクション追跡スコアボードの前記エントリが無効であることを示すように前記トランザクション追跡スコアボードを更新する、ように更に構成されている、請求項10に記載のデバイス。
【請求項12】
前記プロセッサは、第2のメモリロケーションに対応するデータが前記キャッシュ内で利用可能でなく、前記キャッシュが満杯であるとき、前記第2のメモリロケーションを示す第2のソフトウェアスレッドのメモリアクセス命令を受信したことに応じて、
前記キャッシュからの前記更新された第1のデータの追い出しを開始し、
前記第2のメモリロケーションから前記キャッシュの前記第1の部分に第2のデータをロードする、ように構成されている、請求項9に記載のデバイス。
【請求項13】
前記更新された第1のデータの前記追い出しを開始することが、前記第1のメモリロケーションに対応する前記更新された第1のデータの保留中の追い出しを示すように前記トランザクション追跡スコアボードのエントリを更新することを含む、請求項12に記載のデバイス。
【請求項14】
前記プロセッサは、
前記第1のメモリロケーションへの前記更新された第1のデータの記憶が完了したことを示す肯定応答を受信し、
前記肯定応答を受信したことに応じて、前記トランザクション追跡スコアボードの前記エントリが無効であることを示すように前記トランザクション追跡スコアボードを更新する、ように更に構成されている、請求項13に記載のデバイス。
【請求項15】
前記プロセッサは、第2の一貫性ドメイン識別子を有するキャッシュ動作が、前記キャッシュの前記第1の部分に記憶された前記更新された第1のデータに対応する前記第1のメモリロケーションに関連付けられていると判定したことに応じて、
前記キャッシュからの前記更新された第1のデータの追い出しを開始し、
前記キャッシュの前記第1の部分が利用可能であることを示すように前記キャッシュを更新する、ように構成されている、請求項9に記載のデバイス。
【請求項16】
前記更新された第1のデータの前記追い出しを開始することは、前記更新された第1のデータの保留中の追い出しを示すように、かつ前記第2の一貫性ドメイン識別子に関連付けられた保留中のストア動作を示すように前記トランザクション追跡スコアボードのエントリを更新することを含む、請求項15に記載のデバイス。
【請求項17】
前記プロセッサは、
前記第1のメモリロケーションへの前記更新された第1のデータの記憶が完了したことを示す肯定応答を受信し、
前記肯定応答を受信したことに応じて、前記トランザクション追跡スコアボードの前記エントリが無効であることを示すように前記トランザクション追跡スコアボードを更新する、ように更に構成されている、請求項16に記載のデバイス。
【請求項18】
前記メモリのデータを記憶するように構成されているキャッシュを更に備え、前記プロセッサは、キャッシュ動作が第2のメモリロケーションに関連付けられており、前記第2のメモリロケーションに関連付けられた有効なデータが前記キャッシュに記憶されていないと判定したことに応じて、前記キャッシュ動作の第2の一貫性ドメイン識別子を、前記第2のメモリロケーションに関連付けられた任意の保留中の追い出しに割り当てるように構成されている、請求項1に記載のデバイス。
【請求項19】
前記メモリのデータを記憶するように構成されているキャッシュと、
トランザクション追跡スコアボードと、を備え、
前記プロセッサは、キャッシュ動作が第2のメモリロケーションに関連付けられていること、前記第2のメモリロケーションに関連付けられた有効なデータが前記キャッシュに記憶されていないこと、及び前記トランザクション追跡スコアボードのエントリが、前記第2のメモリロケーションに関連付けられた保留中の追い出しに対応することを判定したことに応じて、前記キャッシュ動作の第2の一貫性ドメイン識別子を示すように前記トランザクション追跡スコアボードの前記エントリを更新する、ように構成されている、請求項1に記載のデバイス。
【請求項20】
前記プロセッサは、
前記トランザクション追跡スコアボードの前記エントリに関連付けられたストアが完了したことを示す肯定応答を受信し、
前記肯定応答を受信したことに応じて、前記トランザクション追跡スコアボードの前記エントリが無効であることを示すように前記トランザクション追跡スコアボードを更新する、ように更に構成されている、請求項19に記載のデバイス。
【請求項21】
前記プロセッサが、第1のソフトウェアスレッドからメモリアクセス命令を受信するように構成されており、前記第1のソフトウェアスレッドが、第1の容量ドメイン識別子を割り当てられており、前記動作を制御することが、前記第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントに基づいて前記メモリアクセス命令を選択的に有効化することを含む、請求項1に記載のデバイス。
【請求項22】
前記プロセッサは、保留中のメモリアクセス命令の前記カウントが、前記第1の容量ドメイン識別子に対応する閾値カウント未満であると判定したことに基づいて、
前記メモリアクセス命令に関連付けられたメモリアクセスを開始し、
前記第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令の前記カウントを増分する、ように構成されている、請求項21に記載のデバイス。
【請求項23】
前記プロセッサは、
前記メモリアクセスが完了したことを示す肯定応答を受信し、
前記肯定応答を受信したことに応じて、前記第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令の前記カウントを減分する、ように構成されている、請求項22に記載のデバイス。
【請求項24】
デバイスにおいて、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てることと、
前記デバイスにおいて、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御することと、を含む、コンピュータ実装方法。
【請求項25】
キャッシュ制御レジスタが第1のソフトウェアスレッドに関連付けられ、前記第1のソフトウェアスレッドに第1のドメイン識別子を割り当てることが、前記第1のドメイン識別子を示すように前記キャッシュ制御レジスタを更新することを含む、請求項24に記載のコンピュータ実装方法。
【請求項26】
第1のソフトウェアスレッドの同期命令を受信することを更に含み、前記第1のソフトウェアスレッドが、第1の一貫性ドメイン識別子を割り当てられており、前記動作を制御することが、前記同期命令を受信したことに応じて、前記第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、前記第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む、請求項24に記載のコンピュータ実装方法。
【請求項27】
命令を記憶する非一時的コンピュータ可読媒体であって、前記命令が、プロセッサによって実行されたとき、前記プロセッサに、
複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てさせ、
ドメイン識別子に関連付けられたメモリトランザクションの数に基づいて前記プロセッサの1つ又は複数の構成要素の動作を制御させる、非一時的コンピュータ可読媒体。
【請求項28】
前記命令が、前記プロセッサによって実行されたとき、前記プロセッサに、第1のソフトウェアスレッドの同期命令を受信させ、前記第1のソフトウェアスレッドが、第1の一貫性ドメイン識別子を割り当てられており、前記動作を制御することが、前記同期命令を受信したことに応じて、前記第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、前記第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む、請求項27に記載の非一時的コンピュータ可読媒体。
【請求項29】
複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるための手段と、
ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するための手段と、
を備える、装置。
【請求項30】
前記割り当てるための手段及び前記制御するための手段が、スマートスピーカー、スピーカーバー、ディスプレイデバイス、テレビジョン、ゲームコンソール、音楽プレーヤ、カメラ、ナビゲーションデバイス、ビークル、ヘッドセット、拡張現実ヘッドセット、複合現実ヘッドセット、仮想現実ヘッドセット、航空ビークル、ホームオートメーションシステム、音声起動型デバイス、ワイヤレススピーカー及び音声起動型デバイス、コンピューティングデバイス、通信デバイス、モノのインターネット(IoT)デバイス、仮想現実(VR)デバイス、基地局、又はモバイルデバイスのうちの少なくとも1つに組み込まれている、請求項29に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本出願は、その内容全体が参照により本明細書に明確に組み込まれる、2021年10月22日に出願された、同一出願人が所有する米国特許出願第17/451,988号の優先権の利益を主張する。
【0002】
[0002] 本開示は、概して、メモリトランザクションの管理に関する。
【背景技術】
【0003】
[0003] 技術の進歩は、より小型でより強力なコンピューティングデバイスをもたらした。例えば、現在、小型で軽量であり、ユーザによって容易に携帯される、モバイルフォン及びスマートフォンなどのワイヤレス電話、タブレット及びラップトップコンピュータを含む、様々なポータブルパーソナルコンピューティングデバイスが存在する。これらのデバイスは、ワイヤレスネットワークを介して音声パケット及びデータパケットを通信し得る。更に、多くのそのようなデバイスは、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、及びオーディオファイルプレーヤなどの追加の機能を組み込んでいる。また、そのようなデバイスは、インターネットにアクセスするために使用され得るウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む、実行可能命令を処理することができる。したがって、これらのデバイスは、かなりの計算能力を含むことができる。
【0004】
[0004] そのようなコンピューティングデバイスは、メモリからの読取り及びメモリへの書込みなどのメモリトランザクションをサポートする機能を組み込んでいる。メモリから読み取られるデータ又はメモリに書き込まれるべきデータは、バッファに一時的に記憶されることが多い。バッファリソースは、ソフトウェアスレッドがメモリ要求を行うときに消費される。ソフトウェアスレッドは、メモリトランザクションに利用可能なバッファリソースがないときにストールする。一部のデータは、データを消費又は処理するのにより長い時間がかかるソフトウェアスレッドのために、バッファ内により長く留まる場合がある。より遅いトラフィックは、システムを輻輳させ、他のソフトウェアスレッドからのメモリ要求をブロックし、遅延及びサービス品質の低下をもたらす可能性がある。
【発明の概要】
【0005】
[0005] 本開示の一実装形態によれば、デバイスは、メモリと、プロセッサとを含む。プロセッサは、メモリに結合され、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるように構成されている。プロセッサはまた、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するように構成されている。
【0006】
[0006] 本開示の別の実装形態によれば、コンピュータ実装方法は、デバイスにおいて、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てることを含む。本方法はまた、デバイスにおいて、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御することを含む。
【0007】
[0007] 本開示の別の実装形態によれば、非一時的コンピュータ可読媒体は命令を記憶し、命令は、プロセッサによって実行されたとき、プロセッサに、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てさせる。命令はまた、プロセッサによって実行されたとき、プロセッサに、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御させる。
【0008】
[0008] 本開示の別の実装形態によれば、装置は、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるための手段を含む。本装置はまた、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するための手段を含む。
【0009】
[0009] 以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、及び特許請求の範囲を含む本願全体を検討した後に、本開示の他の態様、利点、及び特徴が明らかとなるであろう。
【図面の簡単な説明】
【0010】
【
図1】[0010] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるシステムの特定の例示的な態様のブロック図である。
【
図2】[0011] 本開示のいくつかの例による、
図1のシステムの一貫性ドメイン構成データの一例の図である。
【
図3】[0012] 本開示のいくつかの例による、
図1のシステムの容量ドメイン構成データの一例の図である。
【
図4A】[0013] 本開示のいくつかの例による、
図1のシステムの動作の例示的な態様の図である。
【
図4B】[0014] 本開示のいくつかの例による、
図1のシステムの動作の例示的な態様の図である。
【
図4C】[0015] 本開示のいくつかの例による、
図1のシステムの動作の例示的な態様の図である。
【
図5】[0016] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図6】[0017] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図7】[0018] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図8】[0019] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図9】[0020] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図10A】[0021] 本開示のいくつかの例による、
図1のシステムの動作の例示的な態様の図である。
【
図10B】[0022] 本開示のいくつかの例による、
図1のシステムの動作の例示的な態様の図である。
【
図11】[0023] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図12】[0024] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図13】[0025] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図14】[0026] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図15】[0027] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図16】[0028] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図17】[0029] 本開示のいくつかの例による、
図1のシステムの例示的な態様の図である。
【
図18】[0030] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるモバイルデバイスの図である。
【
図19】[0031] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるヘッドセットの図である。
【
図20】[0032] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるウェアラブル電子デバイスの図である。
【
図21】[0033] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能である音声制御スピーカーシステムの図である。
【
図22】[0034] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるカメラの図である。
【
図23】[0035] 本開示のいくつかの例による、仮想現実ヘッドセット、複合現実ヘッドセット、又は拡張現実ヘッドセットなど、メモリトランザクションを管理するように動作可能であるヘッドセットの図である。
【
図24】[0036] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるビークルの第1の例の図である。
【
図25】[0037] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるビークルの第2の例の図である。
【
図26】[0038] 本開示のいくつかの例による、
図1のデバイスによって実行され得るメモリトランザクションを管理する方法の特定の実装形態の図である。
【
図27】[0039] 本開示のいくつかの例による、メモリトランザクションを管理するように動作可能であるデバイスの特定の例示的な例のブロック図である。
【発明を実施するための形態】
【0011】
[0040] メモリから読み取られるデータ又はメモリに書き込まれるべきデータは、バッファに記憶され得る。バッファリソースは、ソフトウェアスレッドがメモリ要求を行うときに消費される。ソフトウェアスレッドは、メモリトランザクションに利用可能なバッファリソースがないときにストールする。一部のデータは、データを消費又は処理するのにより長い時間がかかるソフトウェアスレッドのために、バッファ内により長く留まる場合がある。より遅いトラフィックは、システムを輻輳させ、他のソフトウェアスレッドからのメモリ要求をブロックし、遅延及びサービス品質の低下をもたらす可能性がある。
【0012】
[0041] 順序付けを執行するために同期動作を使用することができる。典型的な同期動作が実行されるとき、すべての保留中のトランザクションは、任意の後続のデータアクセス動作が実行され得る前に完了されなければならない。これは、ソフトウェアスレッドが長期間ストールすることにつながる可能性がある。
【0013】
[0042] メモリトランザクション管理のシステム及び方法が開示される。例えば、メモリマネージャは、ソフトウェアスレッドにドメイン識別子を割り当てる。ドメイン識別子は、ソフトウェアスレッドのスレッドタイプに基づいてソフトウェアスレッドに割り当てられる。スレッドタイプは、スレッドに関連付けられたアプリケーション、アプリケーションタイプ、デバイス、デバイスタイプ、トラフィックタイプ、又はそれらの組合せに基づくことができる。例示的な例として、メモリマネージャは、第1のソフトウェアスレッドのスレッドタイプに基づいて第1のソフトウェアスレッドに第1のドメイン識別子を割り当て、第2のソフトウェアスレッドのスレッドタイプに基づいて第2のソフトウェアスレッドに第2のドメイン識別子を割り当てる。メモリマネージャは、第1のドメイン識別子及び第2のドメイン識別子の各々に関連付けられたメモリトランザクションの数(例えば、カウント)を追跡する。メモリマネージャは、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御する。
【0014】
[0043] いくつかの実装形態では、同期命令は、ソフトウェアスレッドの一貫性(例えば、データアクセスの順序付け)を執行するために使用される。例示的な例として、第1のソフトウェアスレッドに割り当てられた第1のドメイン識別子は、第1の一貫性ドメイン識別子を含み、第2のソフトウェアスレッドに割り当てられた第2のドメイン識別子は、第2の一貫性ドメイン識別子を含む。第1のソフトウェアスレッドの同期命令を受信したことに応じて、第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作は、第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に完了され、それによって、第1のソフトウェアスレッドの一貫性を執行する。例えば、第1のアプリケーションのソフトウェアスレッドに第1の一貫性ドメイン識別子を割り当てることは、他のアプリケーションのソフトウェアスレッドとは無関係に、第1のアプリケーションのソフトウェアスレッドに対する一貫性を執行することを可能にする。
【0015】
[0044] いくつかの例では、第1の一貫性ドメイン識別子と同じでないいくつかの一貫性ドメイン識別子(例えば、サブドメイン識別子)は、第1の一貫性ドメイン識別子に一致することができる。これらの例では、同期命令に応じて、第1の一貫性ドメイン識別子又は第2の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作は、第2の一貫性ドメイン識別子が第1の一貫性ドメイン識別子に一致する場合、第1の一貫性ドメイン識別子又は第2の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に完了される。
【0016】
[0045] 第1の一貫性ドメイン識別子に一致しない一貫性ドメイン識別子に関連付けられたデータアクセス命令は、第1のソフトウェアスレッドに関連付けられた同期命令による影響を受けない(例えば、遅延されない)。例示のために、第2のソフトウェアスレッドに関連付けられたデータアクセス命令は、第2の一貫性ドメイン識別子が第1の一貫性ドメイン識別子に一致しない場合、同期命令によって遅延されない。
【0017】
[0046] プロセッサの1つ又は複数の構成要素の動作を制御することは、同期命令を受信したことに応じて、第1の一貫性ドメインに一致する任意の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、第1の一貫性ドメイン識別子に一致する任意の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む。したがって、第1の一貫性ドメインに一致する任意の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令は、第1の一貫性ドメイン識別子に一致する任意の一貫性ドメイン識別子に関連付けられた先行する保留中のメモリトランザクションの数が0になった後に実行されるが、第1の一貫性ドメイン識別子に一致しない一貫性ドメイン識別子に関連付けられた後続のデータアクセス命令は、同様に遅延されない。
【0018】
[0047] いくつかの実装形態では、ドメイン識別子に関連付けられたメモリアクセス命令の閾値カウントまでは、他のドメイン識別子に関連付けられたメモリアクセス命令のためにいくつかのリソースが利用可能であり得るように、いつでも保留中であり得る。例示的な例として、第1のソフトウェアスレッドに割り当てられた第1のドメイン識別子は、第1の容量ドメイン識別子を含み、第2のソフトウェアスレッドに割り当てられた第2のドメイン識別子は、第2の容量ドメイン識別子を含む。第1の容量ドメイン識別子は、第1の閾値カウントに関連付けられる。第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントが第1の閾値カウント未満であると判定したことに応じて、第1のソフトウェアスレッドからのメモリアクセス命令が選択的に有効化される。これらの実装形態では、プロセッサの1つ又は複数の構成要素の動作を制御することは、容量制限に基づいてメモリアクセス命令を選択的に有効化することを含む。容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントを制限することは、他の一致しない容量ドメイン識別子に関連付けられたメモリアクセス命令のためにリソースが利用可能になることを可能にし得る。例えば、第1のアプリケーションのソフトウェアスレッドに第1の容量ドメイン識別子を割り当てることは、他のアプリケーションに対するリソース制限とは無関係に、第1のアプリケーションに対するリソース制限を執行することを可能にする。
【0019】
[0048] 本開示の特定の態様について、図面を参照しながら以下で説明する。本説明では、共通の特徴は共通の参照番号によって指定される。本明細書で使用する様々な用語は、特定の実装形態を説明することのみを目的として使用され、実装形態を限定することは意図されていない。例えば、単数形「a」、「an」、及び「the」は、文脈が別段に明確に示さない限り複数形をも含むことを意図する。更に、本明細書で説明するいくつかの特徴は、いくつかの実装形態では単数形であり、他の実装形態では複数形である。例示のために、
図1は、1つ又は複数のプロセッサ(
図1の「プロセッサ(単数又は複数)」190)を含むデバイス102を示しており、このことは、いくつかの実装形態ではデバイス102が単一のプロセッサ190を含み、他の実装形態ではデバイス102が複数のプロセッサ190を含むことを示す。
【0020】
[0049] いくつかの図面では、特定のタイプの特徴の複数の事例が使用される。これらの特徴は、物理的及び/又は論理的に異なるが、同じ参照番号が各々に使用され、異なる事例は、参照番号への文字の追加によって区別される。グループ又はタイプとしての特徴が本明細書で参照されるとき、例えば、特徴のうちの特定の1つが参照されていないとき、参照番号は、区別する文字なしで使用される。しかしながら、同じタイプの複数の特徴のうちの1つの特定の特徴が本明細書で参照されるとき、参照番号は、区別する文字とともに使用される。例えば、
図1を参照すると、複数のキャッシュ制御レジスタ(cache control registers、CCRs)が、図示され、参照番号154A及び154Bに関連付けられている。キャッシュ制御レジスタ(CCR)154Aなど、これらのキャッシュ制御レジスタのうちの特定の1つを参照するとき、区別する文字「A」が使用される。しかしながら、これらのキャッシュ制御レジスタのうちの任意の1つを又はグループとしてこれらのキャッシュ制御レジスタを参照するとき、参照番号154は、区別する文字なしで使用される。
【0021】
[0050] 本明細書で使用する「備える(comprise)」、「備える(comprises)」、及び「備える(comprising)」という用語は、「含む(include)」、「含む(includes)」、又は「含む(including)」と互換的に使用され得る。追加として、「ここにおいて(wherein)」という用語は、「ここで(where)」と互換的に使用され得る。本明細書で使用する「例示的」は、例、実装形態、及び/又は態様を示し、限定的として、又は選好若しくは好適な実装形態を示すものとして解釈されるべきでない。本明細書で使用する、構造、構成要素、動作などの要素を修飾するために使用される順序を示す用語(例えば、「第1の」、「第2の」、「第3の」など)は、それ自体、別の要素に関する要素の優先順位又は順序を示しておらず、要素を、(順序を示す用語の使用を別にすれば)同じ名前を有する別の要素から区別しているだけである。本明細書で使用する「セット」という用語は、特定の要素の1つ又は複数(one or more)を指し、「複数(plurality)」という用語は、特定の要素の複数(multiple)(例えば、2つ以上)を指す。
【0022】
[0051] 本明細書で使用する「結合された(coupled)」は、「通信可能に結合された(communicatively coupled)」、「電気的に結合された(electrically coupled)」、又は「物理的に結合された(physically coupled)」を含んでもよく、同じく(又は代替として)それらの任意の組合せを含んでもよい。2つのデバイス(又は構成要素)は、1つ又は複数の他のデバイス、構成要素、ワイヤ、バス、ネットワーク(例えば、ワイヤードネットワーク、ワイヤレスネットワーク、又はそれらの組合せ)などを介して直接又は間接的に結合され(例えば、通信可能に結合され、電気的に結合され、又は物理的に結合され)てもよい。電気的に結合された2つのデバイス(又は構成要素)は、同じデバイスに又は異なるデバイスに含まれてもよく、例示的で非限定的な例として、電子回路、1つ又は複数のコネクタ、あるいは誘導結合を介して接続されてもよい。いくつかの実装形態では、電気通信しているなどの、通信可能に結合された2つのデバイス(又は構成要素)は、信号(例えば、デジタル信号又はアナログ信号)を1つ又は複数のワイヤ、バス、ネットワークなどを介して直接又は間接的に送信及び受信してもよい。本明細書で使用する「直接結合された(directly coupled)」は、介在する構成要素なしに結合された(例えば、通信可能に結合された、電気的に結合された、又は物理的に結合された)2つのデバイスを含んでもよい。
【0023】
[0052] 本開示では、「判定すること(determining)」、「計算すること(calculating)」、「推定すること(estimating)」、「シフトすること(shifting)」、「調整すること(adjusting)」などの用語は、1つ又は複数の動作がどのように実行されるかを表すために使用され得る。そのような用語は限定的なものと解釈されるべきではなく、同様の動作を実行するために他の技法が利用され得ることに留意されたい。追加として、本明細書で言及する「生成すること(generating)」、「計算すること」、「推定すること」、「使用すること(using)」、「選択すること(selecting)」、「アクセスすること(accessing)」、及び「判定すること」は、互換的に使用され得る。例えば、パラメータ(若しくは信号)を「生成すること」、「計算すること」、「推定すること」、又は「判定すること」は、パラメータ(若しくは信号)を能動的に生成すること、推定すること、計算すること、又は判定することを指すことがあるか、あるいは、別の構成要素又はデバイスによってなど、すでに生成されているパラメータ(若しくは信号)を使用すること、選択すること、又はそれにアクセスすることを指すことがある。
【0024】
[0053]
図1を参照すると、メモリトランザクションを管理するように構成されたシステム100の特定の例示的な態様が開示されている。システム100は、メモリマネージャ140を使用してメモリトランザクションを管理するように構成されたデバイス102を含む。
【0025】
[0054] デバイス102は、メモリ120に結合された1つ又は複数のプロセッサ190を含む。特定の態様では、メモリ120は、データストレージ、メモリコントローラ、又はその両方を含む。いくつかの態様では、キャッシュ172(例えば、メモリバッファ)は、インターフェース174を介してメモリ120に結合される。1つ又は複数のプロセッサ190は、メモリマネージャ140及び1つ又は複数の構成要素170を含む。いくつかの態様では、1つ又は複数の構成要素170は、キャッシュ172、インターフェース174、メモリ120、データバス、モデム、アンテナ、命令バッファ、又はコプロセッサ(例えば、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、若しくは別のタイプのプロセッサ)のうちの1つ又は複数を含む。メモリマネージャ140は、構成データ146、ドメイン識別子データ150、トランザクショントラッカ160、又はそれらの組合せにアクセスすることができる。メモリマネージャ140は、一貫性ドメインマネージャ142、容量ドメインマネージャ144、又はその両方を含む。
【0026】
[0055] トランザクショントラッカ160は、トランザクションデータの一貫性ドメイン数162、トランザクションデータの容量ドメイン数164、又はその両方を追跡するように構成される。特定の態様では、トランザクションデータの一貫性ドメイン数162は、1つ又は複数の一貫性ドメイン識別子156の各々に関連付けられたトランザクションの数(例えば、カウント)を示す。特定の態様では、トランザクションデータの容量ドメイン数164は、1つ又は複数の容量ドメイン識別子158の各々に関連付けられたトランザクションの数(例えば、カウント)を示す。
【0027】
[0056] メモリマネージャ140は、複数のソフトウェアスレッド152の各々に別個のドメイン識別子(例えば、一貫性ドメイン識別子156、容量ドメイン識別子158、又はその両方)を割り当てるように構成される。いくつかの態様では、1つ又は複数のプロセッサ190において実行されるプロセス(例えば、アプリケーション)は、ソフトウェアスレッド152を初期化する。いくつかの態様では、ソフトウェアスレッド152はデータベースワーカースレッドに対応する。例えば、ソフトウェアスレッド152は、別のプロセス又はデバイスからデータアクセス要求を受信し、メモリアクセス命令をメモリマネージャ140に送信することによってデータアクセス要求をサービスする。
【0028】
[0057] メモリマネージャ140は、ドメイン識別子に基づいて1つ又は複数のソフトウェアスレッド152のメモリトランザクションを管理するように構成される。例えば、一貫性ドメインマネージャ142は、トランザクションデータの一貫性ドメイン数162に基づいてメモリトランザクションを管理するように構成される。別の例として、容量ドメインマネージャ144は、トランザクションデータの容量ドメイン数164に基づいてメモリトランザクションを管理するように構成される。いくつかの例では、メモリトランザクションは、メモリ120からインターフェース174を介してキャッシュ172にデータを読み取ること、キャッシュ172からソフトウェアスレッド152にデータを提供すること、ソフトウェアスレッド152から受信されたデータに基づいてキャッシュ172内のデータを更新すること、又はキャッシュ172からインターフェース174を介してメモリ120メモリに更新されたデータを書き込むことのうちの1つ又は複数を含む。いくつかの態様では、1つ又は複数の構成要素170の動作を制御することは、メモリトランザクションを実行することを含むか、又はそれに対応する。
【0029】
[0058] いくつかの実装形態では、デバイス102は、様々なタイプのデバイスのうちの1つに対応するか又はそれに含まれる。図示の例では、1つ又は複数のプロセッサ190は、
図19を参照しながら更に説明するような、ヘッドセットデバイスに組み込まれる。他の例では、1つ又は複数のプロセッサ190は、
図18を参照しながら説明するようなモバイルフォン若しくはタブレットコンピュータデバイス、
図20を参照しながら説明するようなウェアラブル電子デバイス、
図21を参照しながら説明するような音声制御スピーカーシステム、
図22を参照しながら説明するようなカメラデバイス、又は
図23を参照しながら説明するような仮想現実ヘッドセット、複合現実ヘッドセット、若しくは拡張現実ヘッドセット、のうちの少なくとも1つに組み込まれる。別の図示の例では、1つ又は複数のプロセッサ190は、
図24及び
図25を参照しながら更に説明するような、ビークルに組み込まれる。
【0030】
[0059] 動作中、メモリマネージャ140は、対応するスレッドタイプに基づいて1つ又は複数のソフトウェアスレッド152の各々に別個のドメイン識別子を割り当てる。例えば、第1のスレッドタイプのソフトウェアスレッドには、特定のプレフィックス(例えば、「00」)を有するドメイン識別子が割り当てられ、第2のスレッドタイプのソフトウェアスレッドには、別のプレフィックス(例えば、「01」)を有するドメイン識別子が割り当てられる。ソフトウェアスレッドのスレッドタイプは、ソフトウェアスレッドに関連付けられた、アプリケーション、アプリケーションタイプ、デバイス、デバイスタイプ、トラフィックタイプ、又はそれらの組合せに基づくことができる。
【0031】
[0060] いくつかの実装形態では、ソフトウェアスレッド152に関連付けられたキャッシュ制御レジスタ154は、ソフトウェアスレッド152に割り当てられた、一貫性ドメイン識別子156、容量ドメイン識別子158、又はその両方を示す。例えば、ソフトウェアスレッド152Aの初期化中に、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aがソフトウェアスレッド152Aに割り当てられていることを示すように、ソフトウェアスレッド152Aに関連付けられたキャッシュ制御レジスタ154Aを更新する。いくつかの態様では、容量ドメインマネージャ144は、ソフトウェアスレッド152Aの初期化中に、容量ドメイン識別子158Aがソフトウェアスレッド152Aに割り当てられていることを示すようにキャッシュ制御レジスタ154Aを更新する。
【0032】
[0061] 同様に、ソフトウェアスレッド152Bの初期化中に、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Bがソフトウェアスレッド152Bに割り当てられていることを示すように、ソフトウェアスレッド152Bに関連付けられたキャッシュ制御レジスタ154Bを更新する。一貫性ドメイン識別子156Aは、一貫性ドメイン識別子156Bとは別個である。いくつかの態様では、容量ドメインマネージャ144は、ソフトウェアスレッド152Bの初期化中に、容量ドメイン識別子158Bがソフトウェアスレッド152Bに割り当てられていることを示すようにキャッシュ制御レジスタ154Bを更新する。容量ドメイン識別子158Aは、容量ドメイン識別子158Bとは別個である。
【0033】
[0062] 特定の態様では、
図1のドメイン識別子データ150は、一貫性ドメイン識別子156A、容量ドメイン識別子158A、又はその両方がソフトウェアスレッド152Aに割り当てられていることを示すキャッシュ制御レジスタ154Aを表す。特定の態様では、
図1のドメイン識別子データ150は、一貫性ドメイン識別子156B、容量ドメイン識別子158B、又はその両方がソフトウェアスレッド152Bに割り当てられていることを示すキャッシュ制御レジスタ154Bを表す。
【0034】
[0063] メモリマネージャ140は、
図2~
図15を参照ながら更に説明するように、ソフトウェアスレッド152A及びソフトウェアスレッド152Bが一致するドメイン識別子を有するかどうかに少なくとも部分的に基づいてメモリトランザクションを管理する。例えば、一貫性ドメインマネージャ142は、
図2及び
図4~
図15を参照しながら更に説明するように、一貫性ドメイン識別子156Aが一貫性ドメイン識別子156Bに一致するかどうかに少なくとも部分的に基づいてメモリトランザクションを管理する。例示のために、一貫性ドメインマネージャ142は、
図5を参照しながら更に説明するように、ソフトウェアスレッド152Aに関連付けられたストアがコミットされたことに応じて、一貫性ドメイン識別子156Aに関連付けられた保留中のストア動作を示すようにトランザクションデータの一貫性ドメイン数162を更新(例えば、増分)する。一貫性ドメインマネージャ142は、
図6~
図7を参照しながら更に説明するように、ソフトウェアスレッド152Aの同期命令を受信し、トランザクションデータの一貫性ドメイン数162が、一貫性ドメイン識別子156Aに一致する少なくとも1つの保留中のストア動作を示すと判定したことに応じて、一貫性ドメイン識別子156Aに一致する任意の後続のメモリアクセス命令を実行することを控える。一貫性ドメインマネージャ142は、
図2を参照しながら更に説明するように、保留中のストア動作が、一貫性ドメイン識別子156Aに一致する一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156A又は別の一貫性ドメイン識別子)に関連付けられていると判定したことに応じて、保留中のストア動作が一貫性ドメイン識別子156Aに「一致」すると判定する。一貫性ドメインマネージャ142は、
図8を参照しながら更に説明するように、保留中のストア動作が完了したというメモリ120からの肯定応答を受信したことに応じて、トランザクションデータの一貫性ドメイン数162を更新(例えば、減分)する。
【0035】
[0064] いくつかの態様では、一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aの同期命令を受信したことに続いて、一貫性ドメイン識別子156Aに一致する保留中のストア動作がないと判定したことに応じて、一貫性ドメイン識別子156Aに一致する任意の一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156A又は別の一貫性ドメイン識別子)に関連付けられた後続のメモリアクセス動作が実行されることを可能にする。
【0036】
[0065] いくつかの例では、容量ドメインマネージャ144は、
図3及び
図16~
図17を参照しながら更に説明するように、容量ドメイン識別子158Aが容量ドメイン識別子158Bに一致するかどうかに少なくとも部分的に基づいて、ソフトウェアスレッド152A及びソフトウェアスレッド152Bに関連付けられたメモリトランザクションを管理する。例示のために、トランザクションデータの容量ドメイン数164は、容量ドメイン識別子158Aに一致する保留中のメモリアクセスのカウントを示す。いくつかの態様では、保留中のメモリアクセスが、容量ドメイン識別子158Aに一致する容量ドメイン識別子(例えば、容量ドメイン識別子158A又は別の容量ドメイン識別子)に関連付けられているとき、保留中のメモリアクセスは容量ドメイン識別子158Aに「一致」する。容量ドメインマネージャ144は、
図16~
図17を参照しながら更に説明するように、ソフトウェアスレッド152Aからメモリアクセス命令を受信したことに応じて、保留中のメモリアクセスのカウントが閾値カウント以上であるかどうかを判定する。容量ドメインマネージャ144は、保留中のメモリアクセスのカウントが閾値カウント未満であると判定したことに応じて、メモリアクセス命令に関連付けられたメモリアクセスを開始し、トランザクションデータの容量ドメイン数164によって示されるメモリアクセスのカウントを更新(例えば、増分)する。代替として、容量ドメインマネージャ144は、保留中のメモリアクセスのカウントが閾値カウント以上であると判定したことに応じて、メモリアクセスを実行することを控える。容量ドメインマネージャ144は、
図16~
図17を参照しながら更に説明するように、保留中のメモリアクセスが完了したという肯定応答を受信したことに応じて、トランザクションデータの容量ドメイン数164を更新(例えば、減分)する。
【0037】
[0066] 容量ドメインマネージャ144は、他の一致しない容量ドメイン識別子に関連付けられたメモリアクセスのためにリソースが利用可能になることを可能にするように、容量ドメイン識別子に一致する保留中のメモリアクセスのカウントを制限する。一貫性ドメインマネージャ142は、特定の一貫性ドメイン識別子に関連付けられた同期命令が、その特定の一貫性ドメイン識別子に一致しない他の一貫性ドメイン識別子に関連付けられたメモリアクセス命令に影響を及ぼさない(例えば、遅延させない)ことを保証する。
【0038】
[0067] メモリマネージャ140は、例示的な例として、デバイス102に含まれるメモリ120のメモリトランザクションを管理するものとして説明されている。他の例では、メモリマネージャ140は、デバイス102の別の構成要素のトランザクションを管理するか、又は別のデバイスのトランザクションを管理するために、ドメイン識別子に基づいて同様の動作を実行することができる。例示的な例では、メモリマネージャ140は、一貫性ドメイン識別子156、容量ドメイン識別子158、又はそれらの組合せに基づいて、外部デバイスとのデータトランザクション(例えば、外部デバイスへのデータ記憶又は外部デバイスからのデータ取り出し)を管理する。
【0039】
[0068]
図2を参照すると、一貫性ドメイン構成データ202の一例が、一貫性ドメイン構成データ202に基づく一貫性ドメイン識別子の複数のセット222から228とともに示されている。特定の態様では、一貫性ドメイン構成データ202は、
図1の構成データ146に含まれる。一貫性ドメイン構成データ202はビットの集合(例えば、ビットマスク)として実装することができ、「1」の値は、以下で更に説明するように、2つ以上の一貫性ドメイン識別子156が互いに「一致」するかどうかを判定するときにどのビットが比較されるかを指定する。
【0040】
[0069] 各キャッシュ制御レジスタ154は、最下位ビット(例えば、ビット0)から最上位ビット(例えば、ビット31)まで、ビットの第1のカウント(例えば、32ビット)を含む。いくつかの態様では、ソフトウェアスレッド152に関連付けられたキャッシュ制御レジスタ154のビットの第1のセット(例えば、ビット8からビット15)は、ソフトウェアスレッド152に割り当てられた一貫性ドメイン識別子156を示すために使用され得る。
【0041】
[0070] いくつかの実装形態では、キャッシュ制御レジスタ154のビットの第1のセット(例えば、ビット8からビット15)は、一貫性ドメイン識別子のドメイン又はサブドメインを定義するために使用され得る一貫性ドメイン識別子の複数のセットを示す。一貫性ドメイン構成データ202は、一貫性ドメイン識別子のセットを示すために実装されるキャッシュ制御レジスタ154のビットを示す。例示のために、一貫性ドメイン構成データ202は、キャッシュ制御レジスタ154のビットの第1のセット(例えば、ビット8からビット15)の第1のサブセット(例えば、ビット14からビット15)が、一貫性ドメイン識別子のセットを示すために実装されることを示す。例えば、特定の一貫性ドメイン識別子156のビットの第1のサブセット(例えば、ビット14からビット15)は、その特定の一貫性ドメイン識別子156を含む一貫性ドメイン識別子のセットを示す。
【0042】
[0071] 特定の態様では、第1のサブセットのビットのカウント(例えば、2)は、サポートされている一貫性ドメイン識別子のセットのカウント(例えば、2(ビットのカウント)又は4つのセット)を示す。例えば、第1のサブセットのビット値212(例えば、ビット15及びビット14の各々に対して0の値)は、一貫性ドメイン識別子のセット222(例えば、2進数00000000から00111111又は10進数0から63)を示す。第1のサブセットのビット値214(例えば、ビット15に対して0の値及びビット14に対して1の値)は、一貫性ドメイン識別子のセット224(例えば、2進数01000000から01111111又は10進数64から127)を示す。第1のサブセットのビット値216(例えば、ビット15に対して1の値及びビット14に対して0の値)は、一貫性ドメイン識別子のセット226(例えば、2進数10000000から10111111又は10進数128から195)を示す。第1のサブセットのビット値218(例えば、ビット15及びビット14の各々に対して1の値)は、一貫性ドメイン識別子のセット228(例えば、2進数11000000から11111111又は10進数196から255)を示す。図示の例では、第1のサブセットは、一貫性ドメイン識別子の4つのセットをサポートすることができる2ビットを含む。しかしながら、他の例では、第1のサブセットは、一貫性ドメイン識別子のセットの対応するカウントをサポートする任意のカウントのビットを含むことができる(例えば、3ビットを含む第1のサブセットは、一貫性ドメイン識別子の8つのセットをサポートすることができるなど)。
【0043】
[0072] いくつかの実装形態では、一貫性ドメイン識別子の各セットは、個別の一貫性ドメインに対応する。これらの実装形態では、2つ以上の一貫性ドメイン識別子は、それらが第1のサブセット(例えば、ビット14からビット15)に対して同じビット値を有する場合、互いに「一致」する。例えば、一貫性ドメイン識別子156A及び一貫性ドメイン識別子156Bの各々が第1のサブセット(例えば、ビット14からビット15)の同じビット値を有する場合、一貫性ドメイン識別子156Aは一貫性ドメイン識別子156Bに一致する。例示のために、一貫性ドメイン識別子156Aと一貫性ドメイン識別子156Bの両方が、一貫性ドメイン識別子のセット222(例えば、10進数0から63)、一貫性ドメイン識別子のセット224(例えば、10進数64から127)、一貫性ドメイン識別子のセット226(例えば、10進数128から195)、又は一貫性ドメイン識別子のセット228(例えば、10進数196から255)のうちの同じセットに含まれる場合、一貫性ドメイン識別子156Aは一貫性ドメイン識別子156Bに一致する。
【0044】
[0073] 一貫性ドメイン識別子156Aが第1の値「4」を有し、一貫性ドメイン識別子156Bが第2の値「6」を有する例では、一貫性ドメイン識別子のセット222(例えば、10進数0から63)に含まれる第1の値(例えば、10進数4)を有する一貫性ドメイン識別子156Aは、同じく一貫性ドメイン識別子のセット222に含まれる第2の値(例えば、10進数6)を有する一貫性ドメイン識別子156Bに一致する。一貫性ドメイン識別子156Aが第1の値「4」を有し、一貫性ドメイン識別子156Bが第2の値「125」を有する例では、一貫性ドメイン識別子のセット222(例えば、10進数0から63)に含まれる第1の値(例えば、10進数4)を有する一貫性ドメイン識別子156Aは、一貫性ドメイン識別子のセット222に含まれない第2の値(例えば、10進数125)を有する一貫性ドメイン識別子156Bに一致しない。
【0045】
[0074] いくつかの実装形態では、一貫性ドメインのうちの1つ又は複数は、一貫性ドメイン識別子の複数のセットを含むことができる。例えば、第1の一貫性ドメインは、一貫性ドメイン識別子のセット222(例えば、10進数0から63)と、一貫性ドメイン識別子のセット224(例えば、10進数64から127)とを含む。第2の一貫性ドメインは、一貫性ドメイン識別子のセット226(例えば、10進数128から195)と、一貫性ドメイン識別子のセット228(例えば、10進数196から255)とを含む。この例では、第1の一貫性ドメインは、ビット15に対して0の値に対応し、第2の一貫性ドメインは、ビット15に対して1の値に対応する。いくつかの実装形態では、第1の一貫性ドメイン(例えば、10進数0から127)に含まれる一貫性ドメイン識別子156A(例えば、10進数3)は、第1の一貫性ドメインに含まれる一貫性ドメイン識別子156B(例えば、10進数70)に一致する。しかしながら、第1の一貫性ドメイン(例えば、10進数0から127)に含まれる一貫性ドメイン識別子156A(例えば、10進数3)は、第1の一貫性ドメインに含まれない一貫性ドメイン識別子156B(例えば、10進数129)に一致しない。
【0046】
[0075] いくつかの態様では、一貫性ドメインマネージャ142は、第1のスレッドタイプに関連付けられたソフトウェアスレッド152に、第1の一貫性ドメイン(例えば、10進数0から127)からのドメイン識別子を割り当て、第2のスレッドタイプに関連付けられたソフトウェアスレッド152に、第2の一貫性ドメイン(例えば、10進数128から255)からのドメイン識別子を割り当てる。ソフトウェアスレッド152のスレッドタイプは、ソフトウェアスレッド152に関連付けられたアプリケーション、アプリケーションタイプ、デバイス、デバイスタイプ、トラフィックタイプ、又はそれらの組合せに基づくことができる。特定の態様では、トラフィックタイプは、セルラートラフィック、ワイヤレスローカルエリアネットワーク(WLAN)トラフィック、Bluetooth(登録商標)(ワシントン州のBLUETOOTH SIG,INC.の登録商標)トラフィック、第5世代(5G)セルラーデジタルネットワーク、電気電子技術者協会(Institute of Electrical and Electronic Engineers、IEEE)802.11タイプネットワーク(例えば、WiFi)トラフィック、又は他のタイプの通信トラフィックなどの通信トラフィックタイプを含むことができる。一例として、第1のスレッドタイプはセルラーモデムトラフィックに関連付けられ、第2のスレッドタイプはWLANトラフィックに関連付けられる。セルラーモデムトラフィックに関連付けられたソフトウェアスレッド152に、第1の一貫性ドメイン(例えば、10進数0から127)からの一貫性ドメイン識別子を割り当て、WLANトラフィックに関連付けられたソフトウェアスレッド152に、第2の一貫性ドメイン(例えば、10進数128から255)からの一貫性ドメイン識別子を割り当てることにより、セルラーモデムトラフィックとWLANトラフィックとの分離が可能になる。例えば、セルラーモデムメモリトランザクションは、WLANメモリトランザクションに関連付けられた同期動作によってブロックされず、その逆も同様である。
【0047】
[0076] いくつかの実装形態では、一貫性ドメインはサブドメインに分割され得る。例えば、第1の一貫性ドメインは、一貫性ドメイン識別子のセット222(例えば、10進数0から63)を含む第1のサブドメインと、一貫性ドメイン識別子のセット224(例えば、10進数64から127)を含む第2のサブドメインとを含むことができる。いくつかの態様では、第2の一貫性ドメインは、サブドメインに分割されない、一貫性ドメイン識別子のセット226(例えば、128から195)と、一貫性ドメイン識別子のセット228(例えば、196から255)とを含む。
【0048】
[0077] いくつかの実装形態では、第1のサブドメイン(例えば、10進数0から63)に含まれる一貫性ドメイン識別子156A(例えば、10進数3)は、第1のサブドメインに含まれる一貫性ドメイン識別子156B(例えば、10進数62)に一致する。しかしながら、第1のサブドメイン(例えば、10進数0から63)に含まれる一貫性ドメイン識別子156A(例えば、10進数3)は、第1のサブドメインに含まれない一貫性ドメイン識別子156B(例えば、10進数70)に一致しない。例えば、第1の一貫性ドメインの第1のサブドメイン(例えば、10進数0から63)に含まれる一貫性ドメイン識別子156Aは、第1の一貫性ドメインの第2のサブドメイン(例えば、10進数64から127)に含まれる一貫性ドメイン識別子156Bに一致しない。
【0049】
[0078] いくつかの態様では、一貫性ドメインマネージャ142は、第1のスレッドタイプの第1のスレッドサブタイプに関連付けられたソフトウェアスレッド152に、第1のサブドメイン(例えば、10進数0から63)からの一貫性ドメイン識別子156を割り当て、第1のスレッドタイプの第2のスレッドサブタイプに関連付けられたソフトウェアスレッド152に、第2のサブドメイン(例えば、10進数64から127)からの一貫性ドメイン識別子156を割り当てる。ソフトウェアスレッド152のスレッドサブタイプは、ソフトウェアスレッド152に関連付けられたアプリケーション、アプリケーションタイプ、デバイス、デバイスタイプ、トラフィックタイプ、又はそれらの組合せに基づくことができる。例えば、第1のスレッドサブタイプは、デバイス102から第1のデバイスへのセルラーモデムトラフィックに関連付けられ、第2のスレッドサブタイプは、デバイス102から第2のデバイスへのセルラーモデムトラフィックに関連付けられる。
【0050】
[0079] 第1のデバイスへのセルラーモデムトラフィックに関連付けられたソフトウェアスレッド152に、第1のサブドメイン(例えば、10進数0から63)からの一貫性ドメイン識別子156を割り当て、第2のデバイスへのセルラーモデムトラフィックに関連付けられたソフトウェアスレッド152に、第2のサブドメイン(例えば、10進数64から127)からの一貫性ドメイン識別子を割り当てることにより、第1のデバイスへのセルラーモデムトラフィックと第2のデバイスへのセルラーモデムトラフィックとの間の分離が可能になる。例えば、第1のデバイスに関連付けられたセルラーモデムメモリトランザクションは、第2のデバイスに関連付けられたセルラーモデムメモリトランザクションに関連付けられた同期動作によってブロックされず、その逆も同様である。したがって、いくつかの実装形態では、一致は、ドメインレベルではなくサブドメインレベルで判定される。
【0051】
[0080] いくつかの実装形態では、一致は、ドメインレベルで又はサブドメインレベルで判定され得る。例えば、一貫性ドメイン識別子156Aの特定の値(例えば、0)を使用して、同期動作がサブドメインのうちの1つと比較してドメイン全体に関連付けられていることを示すことができる。いくつかの態様では、特定の値(例えば、0)は、ドメイン全体を示すために予約されており、いかなるサブドメインにも含まれない。特定の例では、一貫性ドメイン識別子156A(例えば、10進数0)は、第1のサブドメイン(例えば、10進数1から63)及び第2のサブドメイン(例えば、10進数64から127)を含む第1の一貫性ドメインを示すために使用される。例えば、一貫性ドメイン識別子156B(例えば、第1のサブドメインの10進数1から63)は、一貫性ドメイン識別子156A(例えば、第1の一貫性ドメインを示す10進数0)に一致して、一貫性ドメイン識別子156Aに関連付けられた同期動作中に第1のサブドメインのセルラーモデムメモリトランザクションをブロックする。別の例として、一貫性ドメイン識別子156B(例えば、第2のサブドメインの10進数64から127)もまた、一貫性ドメイン識別子156A(例えば、第1の一貫性ドメインを示す10進数0)に一致して、一貫性ドメイン識別子156Aに関連付けられた同期動作中に第2のサブドメインのセルラーモデムメモリトランザクションをブロックする。
【0052】
[0081] 第1のデバイスと第2のデバイスの両方に関連付けられた後続のセルラーモデムメモリトランザクションは、第1の一貫性ドメインを示す一貫性ドメイン識別子156Aに関連付けられた同期動作によってブロックされる。サブドメインのメモリトランザクションをブロックすべき場合、(ドメイン全体ではなく)サブドメインを示す一貫性ドメイン識別子に関連付けられた同期動作を使用することができる。例えば、第1のサブドメインに対応する一貫性ドメイン識別子156A(例えば、10進数1から63)に関連付けられた同期動作は、第1のサブドメインの後続のメモリトランザクションをブロックするが、第2のサブドメインのメモリトランザクションをブロックしない。別の例として、第2のサブドメインに対応する一貫性ドメイン識別子156A(例えば、10進数64から127)に関連付けられた同期動作は、第2のサブドメインの後続のメモリトランザクションをブロックするが、第1のサブドメインのメモリトランザクションをブロックしない。
【0053】
[0082]
図3を参照すると、容量ドメイン構成データ302の一例が、容量ドメイン構成データ302に基づく容量ドメイン識別子の複数のセット322~328とともに示されている。特定の態様では、容量ドメイン構成データ302は、
図1の構成データ146に含まれる。容量ドメイン構成データ302はビットの集合(例えば、ビットマスク)として実装することができ、「1」の値は、以下で更に説明するように、2つ以上の容量ドメイン識別子158が互いに「一致」するかどうかを判定するときにどのビットが比較されるかを指定する。
【0054】
[0083] いくつかの態様では、キャッシュ制御レジスタ154のビットの第2のセット(例えば、ビット0からビット5)は、ソフトウェアスレッド152に割り当てられた容量ドメイン識別子158を示すために使用され得る。いくつかの実装形態では、キャッシュ制御レジスタ154のビットの第2のセット(例えば、ビット0からビット5)は、容量ドメイン識別子のドメイン又はサブドメインを定義するために使用され得る容量ドメイン識別子の複数のセットを示す。容量ドメイン構成データ302は、容量ドメイン識別子のセットを示すために実装されるキャッシュ制御レジスタ154のビットを示す。例示のために、容量ドメイン構成データ302は、キャッシュ制御レジスタ154のビットの第2のセット(例えば、ビット0からビット5)の第2のサブセット(例えば、ビット4からビット5)が、容量ドメイン識別子のセットを示すために実装されることを示す。例えば、容量ドメイン識別子158の第2のサブセット(例えば、ビット4からビット5)は、容量ドメイン識別子158を含む容量ドメイン識別子のセットを示す。
【0055】
[0084] 特定の態様では、第2のサブセットのビットのカウント(例えば、2)は、サポートされている容量ドメイン識別子のセットのカウント(例えば、2(ビットのカウント)又は4つのセット)を示す。例えば、第2のサブセットのビット値312(例えば、ビット5及びビット4の各々に対して0の値)は、容量ドメイン識別子のセット322(例えば、2進数000000から001111又は10進数0から15)を示す。第2のサブセットのビット値314(例えば、ビット5に対して0の値及びビット4に対して1の値)は、容量ドメイン識別子のセット324(例えば、2進数010000から011111又は10進数16から31)を示す。第2のサブセットのビット値316(例えば、ビット5に対して1の値及びビット4に対して0の値)は、容量ドメイン識別子のセット326(例えば、2進数100000から101111又は10進数32から47)を示す。第2のサブセットのビット値318(例えば、ビット5及びビット4の各々に対して1の値)は、容量ドメイン識別子のセット328(例えば、2進数110000から111111又は10進数48から63)を示す。容量ドメイン識別子の4つのセットをサポートすることができる2ビットを含む第2のサブセットが、説明のための例として提供される。他の例では、第2のサブセットは、容量ドメイン識別子のセットの対応するカウントをサポートする任意のカウントのビットを含むことができる。一貫性ドメイン識別子156の第1のサブセット(例えば、ビット14からビット15)に含まれるものと同じカウント(例えば、2)のビットを含む容量ドメイン識別子158の第2のサブセット(例えば、ビット4からビット5)が、説明のための例として提供される。他の例では、第2のサブセットは、第1のサブセットに含まれるよりも少ない又はそれよりも多いビットを含むことができる。容量ドメイン識別子は、リソース利用制限を執行するために使用される一方で、一貫性ドメイン識別子は、同期を執行するために使用される。
【0056】
[0085] いくつかの実装形態では、容量ドメイン識別子の各セットは、個別の容量ドメインに対応する。これらの実装形態では、2つ以上の容量ドメイン識別子は、それらが第2のサブセット(例えば、ビット4からビット5)に対して同じビット値を有する場合、互いに「一致」する。例えば、容量ドメイン識別子158A及び容量ドメイン識別子158Bの各々が第2のサブセット(例えば、ビット4からビット5)の同じビット値を有する場合、容量ドメイン識別子158Aは容量ドメイン識別子158Bに一致する。例示のために、容量ドメイン識別子158Aと容量ドメイン識別子158Bの両方が、容量ドメイン識別子のセット322(例えば、10進数0から15)、容量ドメイン識別子のセット324(例えば、10進数16から31)、容量ドメイン識別子のセット326(例えば、10進数32から47)、又は容量ドメイン識別子のセット328(例えば、10進数48から63)のうちの同じセットに含まれる場合、容量ドメイン識別子158Aは容量ドメイン識別子158Bに一致する。
【0057】
[0086] 容量ドメイン識別子158Aが第1の値「4」を有し、容量ドメイン識別子158Bが第2の値「6」を有する例では、容量ドメイン識別子のセット322(例えば、10進数0から15)に含まれる第1の値(例えば、10進数4)を有する容量ドメイン識別子158Aは、同じく容量ドメイン識別子のセット322に含まれる第2の値(例えば、10進数6)を有する容量ドメイン識別子158Bに一致する。容量ドメイン識別子158Aが第1の値「4」を有し、容量ドメイン識別子158Bが第2の値「18」を有する例では、容量ドメイン識別子のセット322(例えば、10進数0から15)に含まれる第1の値(例えば、10進数4)を有する容量ドメイン識別子158Aは、容量ドメイン識別子のセット322に含まれない第2の値(例えば、10進数18)を有する容量ドメイン識別子158Bに一致しない。
【0058】
[0087] いくつかの実装形態では、容量ドメインのうちの1つ又は複数は、ドメイン識別子の複数のセットを含むことができる。例えば、第1の容量ドメインは、容量ドメイン識別子のセット322(例えば、10進数0から15)と、容量ドメイン識別子のセット324(例えば、10進数16から31)とを含む。第2の容量ドメインは、容量ドメイン識別子のセット326(例えば、10進数32から47)と、容量ドメイン識別子のセット328(例えば、10進数48から63)とを含む。この例では、第1の容量ドメインは、ビット5に対して0の値に対応し、第2の容量ドメインは、ビット5に対して1の値に対応する。いくつかの実装形態では、第1の容量ドメイン(例えば、10進数0から31)に含まれる容量ドメイン識別子158A(例えば、10進数3)は、第1の容量ドメインに含まれる容量ドメイン識別子158B(例えば、10進数17)に一致する。しかしながら、第1の容量ドメイン(例えば、10進数0から31)に含まれる容量ドメイン識別子158A(例えば、10進数3)は、第1の容量ドメインに含まれない容量ドメイン識別子158B(例えば、41)に一致しない。
【0059】
[0088] いくつかの態様では、容量ドメインマネージャ144は、第1のスレッドタイプに関連付けられたソフトウェアスレッド152に、第1の容量ドメイン(例えば、10進数0から31)からの容量ドメイン識別子を割り当て、第2のスレッドタイプに関連付けられたソフトウェアスレッド152に、第2の容量ドメイン(例えば、10進数32から63)からのドメイン識別子を割り当てる。例えば、第1のスレッドタイプはセルラーモデムトラフィックに関連付けられ、第2のスレッドタイプはワイヤレスローカルエリアネットワーク(WLAN)トラフィックに関連付けられる。セルラーモデムトラフィックに関連付けられたソフトウェアスレッド152に、第1の容量ドメイン(例えば、10進数0から31)からの容量ドメイン識別子を割り当て、WLANトラフィックに関連付けられたソフトウェアスレッド152に、第2の容量ドメイン(例えば、10進数32から63)からの容量ドメイン識別子を割り当てることにより、セルラーモデムトラフィック及びWLANトラフィックのために別々の容量制限が可能になる。例えば、セルラーモデムメモリトランザクションは、あまりに多くのWLANメモリトランザクションによってブロックされず、その逆も同様である。
【0060】
[0089] いくつかの実装形態では、容量ドメインはサブドメインに分割され得る。例えば、第1の容量ドメインは、容量ドメイン識別子のセット322(例えば、10進数0から15)を含む第1のサブドメインと、容量ドメイン識別子のセット324(例えば、10進数16から31)を含む第2のサブドメインとを含むことができる。いくつかの態様では、第2の容量ドメインは、サブドメインに分割されない、容量ドメイン識別子のセット326(例えば、32から47)と、容量ドメイン識別子のセット328(例えば、48から63)とを含む。
【0061】
[0090] いくつかの実装形態では、第1のサブドメイン(例えば、10進数0から15)に含まれる容量ドメイン識別子158A(例えば、10進数3)は、第1のサブドメインに含まれる容量ドメイン識別子158B(例えば、10進数6)に一致する。しかしながら、第1のサブドメイン(例えば、10進数0から15)に含まれる容量ドメイン識別子158A(例えば、10進数3)は、第1のサブドメインに含まれない容量ドメイン識別子158B(例えば、10進数17)に一致しない。例えば、第1の容量ドメインの第1のサブドメイン(例えば、10進数0から15)に含まれる容量ドメイン識別子158Aは、第1の容量ドメインの第2のサブドメイン(例えば、10進数16から31)に含まれる容量ドメイン識別子158Bに一致しない。
【0062】
[0091] いくつかの態様では、容量ドメインマネージャ144は、第1のスレッドタイプの第1のスレッドサブタイプに関連付けられたソフトウェアスレッド152に、第1のサブドメイン(例えば、10進数0から15)からの容量ドメイン識別子158を割り当て、第1のスレッドタイプの第2のスレッドサブタイプに関連付けられたソフトウェアスレッド152に、第2のサブドメイン(例えば、10進数16から31)からの容量ドメイン識別子158を割り当てる。例えば、第1のスレッドサブタイプは第1のデバイスのセルラーモデムトラフィックに関連付けられ、第2のスレッドサブタイプは第2のデバイスのセルラーモデムトラフィックに関連付けられる。
【0063】
[0092] 第1のデバイスのセルラーモデムトラフィックに関連付けられたソフトウェアスレッド152に、第1のサブドメイン(例えば、10進数0から15)からの容量ドメイン識別子158を割り当て、第2のデバイスのセルラーモデムトラフィックに関連付けられたソフトウェアスレッド152に、第2のサブドメイン(例えば、10進数16から31)からの容量ドメイン識別子を割り当てることにより、第1のデバイスのセルラーモデムトラフィック及び第2のデバイスのセルラーモデムトラフィックのために別々の容量制限が可能になる。例えば、第1のデバイスのセルラーモデムメモリトランザクションは、第2のデバイスのあまりに多くのセルラーモデムメモリトランザクションによってブロックされず、その逆も同様である。したがって、いくつかの実装形態では、一致は、ドメインレベルではなくサブドメインレベルで判定される。
【0064】
[0093] いくつかの実装形態では、一致は、ドメインレベルで又はサブドメインレベルで判定され得る。例えば、容量ドメイン識別子158Aの特定の値(例えば、0)を使用して、サブドメインのうちの1つと比較してドメイン全体を示すことができる。いくつかの態様では、特定の値(例えば、0)は、ドメイン全体を示すために予約されており、いかなるサブドメインにも含まれない。特定の例では、容量ドメイン識別子158A(例えば、10進数0)は、第1のサブドメイン(例えば、10進数1から15)及び第2のサブドメイン(例えば、10進数16から31)を含む第1の容量ドメインを示すために使用される。例えば、容量ドメイン識別子158B(例えば、第1のサブドメインの10進数1から15)は、容量ドメイン識別子158A(例えば、第1の容量ドメインを示す10進数0)に一致する。別の例として、容量ドメイン識別子158B(例えば、第2のサブドメインの10進数16から31)も、容量ドメイン識別子158A(例えば、第1の容量ドメインを示す10進数0)に一致する。
【0065】
[0094] いくつかの例では、第1の容量ドメインはドメイン閾値カウント(例えば、8)に関連付けられ、第1のサブドメインは第1のサブドメイン閾値カウント(例えば、5)に関連付けられ、第2のサブドメインは第2のサブドメイン閾値カウント(例えば、5)に関連付けられる。例えば、第1のサブドメインの容量制限に達する、あるいは第1の容量ドメインの容量制限に達する、いずれかの場合、第1のサブドメイントラフィックは制限される。例示のために、第1のサブドメインに関連付けられた保留中のメモリアクセスのカウント(例えば、3つの第1のサブドメイン保留中のメモリアクセス及び5つの第2のサブドメインメモリアクセス)がドメイン閾値カウント(例えば、8)に等しいが、第1のサブドメインに関連付けられた保留中のメモリアクセスのカウント(例えば、3)が第1のサブドメイン閾値カウント(例えば、5)未満であるとき、第1のサブドメイントラフィックは制限され得る。いくつかの実装形態では、ドメイン閾値カウントがサブドメイン閾値カウントの合計と異なるとき、サブドメイン閾値は、保証容量制限の代わりに、サブドメインの最大容量制限に対応する。
【0066】
[0095]
図4A~
図4Cは、ソフトウェアスレッド152Aからの書込み命令に応じてキャッシュ172を更新することの例を示している。
図5は、ソフトウェアスレッド152Aの一貫性ドメイン識別子156Aに関連付けられた保留中のストアを示すようにトランザクショントラッカ160を更新することの一例を示している。例えば、
図5の保留中のストアは、
図4A~
図4Cの例における書込み命令に応じて更新されるキャッシュ172内のデータに関連付けることができる。
【0067】
[0096]
図4Aを参照すると、例400では、ソフトウェアスレッド152Aが、オペコード442、アドレス444、及びデータ446を示す書込み命令440を送信する。オペコード442(例えば、識別子)は、書込み命令440がメモリ書込み命令に対応することを示す。
【0068】
[0097] 書込み命令440は、データ446がメモリ120のアドレス444に書き込まれるべきであることを示す。
図1のメモリマネージャ140は、アドレス444を示す書込み命令440を受信し、アドレス444に関連付けられたデータがキャッシュ172内で利用可能でないと判定したことに応じて、メモリ120のアドレス444からのデータのロード452を開始する。いくつかの態様では、メモリマネージャ140は、
図5~
図8を参照しながら更に説明するように、一貫性ドメインマネージャ142が、一貫性ドメイン識別子156Aが保留中の同期動作に関連付けられたいかなる一貫性ドメイン識別子とも一致しないことを示すこと、及び
図16~
図17を参照しながら更に説明するように、容量ドメインマネージャ144が、容量ドメイン識別子158Aが対応する閾値カウントに達した保留中のメモリアクセスのカウントを有するいかなる容量ドメイン識別子とも一致しないことを示すことを判定したことに応じて、ロード452を開始する。
【0069】
[0098]
図4Bの例490では、アドレス444に記憶されたデータ448は、メモリ120からインターフェース174を介して受信され、キャッシュ172の部分460に記憶される。例えば、メモリマネージャ140は、データ448を受信し、データ448を部分460に記憶する。
【0070】
[0099] いくつかの実装形態では、メモリマネージャ140はまた、ソフトウェアスレッド152A及びアドレス444を示すように部分460のメタデータを更新する。例えば、メタデータは、部分460が、アドレス444に関連付けられたデータを含み、ソフトウェアスレッド152Aのメモリアクセスに関連付けられていることを示す。いくつかの実装形態では、メタデータはダーティビットを含み、メモリマネージャ140は、ダーティビットを第1の値(例えば、0)に設定して、部分460が、キャッシュ172内で更新されていないメモリ120から読み取られたデータを含むことを示すように、メタデータを更新する。
【0071】
[0100]
図4Cの例492では、メモリマネージャ140は、データ448を書込み命令440のデータ446と置換(例えば、それで上書き)する。いくつかの実装形態では、メモリマネージャ140は、部分460が、キャッシュ172内で更新されたデータを含むことを示すようにダーティビットを第2の値(例えば、1)に更新する。
【0072】
[0101] 書込み命令440は、ソフトウェアスレッド152Aのメモリアクセス命令の一例として提供される。読取り命令は、ソフトウェアスレッド152Aメモリアクセス命令の別の例であり得る。読取り命令は、オペコード及びアドレスを含むことができる。メモリマネージャ140は、ソフトウェアスレッド152Aの読取り命令を受信したことに応じて、メモリ120のアドレスからのデータをキャッシュ172の一部分にロードし、この部分のダーティビット(例えば、メタデータ)を第1の値(例えば、0)に設定して、この部分が、メモリ120から取り出され、かつキャッシュ172内で更新されていないデータを記憶していることを示す。
【0073】
[0102]
図5を参照すると、メモリトランザクションを管理するように動作可能なシステム500が開示されている。特定の態様では、
図1のシステム100は、システム500の1つ又は複数の構成要素を含み得る。
【0074】
[0103] トランザクショントラッカ160は、1つ又は複数の一貫性ドメイン識別子156に関連付けられた1つ又は複数の保留中のストアを追跡するように構成されているトランザクション追跡スコアボード562を含む。トランザクション追跡スコアボード562は、エントリ564A、1つ又は複数の追加のエントリ、エントリ564N、あるいはそれらの組合せなど、複数のエントリ564を含む。複数のエントリ564の各々は、タグフィールド572、有効インジケータフィールド574、追い出しインジケータフィールド576、ドメイン識別子フィールド578、及びアドレスフィールド580を含む。
【0075】
[0104] エントリ564のタグフィールド572は、エントリ564の識別子を示す。例えば、エントリ564Aのタグフィールド572Aは、エントリ564Aの識別子(例えば、A)を含む。別の例として、エントリ564Nのタグフィールド572Nは、エントリ564Nの識別子(例えば、N)を含む。
【0076】
[0105] エントリ564の有効インジケータフィールド574は、エントリ564が有効なデータを含むかどうかを示す。例えば、有効インジケータフィールド574の第1の値(例えば、0)は、エントリ564が無効なデータを含むことを示す一方で、有効インジケータフィールド574の第2の値(例えば、1)は、エントリ564が有効なデータを含むことを示す。
【0077】
[0106] エントリ564の追い出しインジケータフィールド576は、アドレスフィールド580によって示されるアドレスへの保留中の追い出しを示すために使用される。例えば、追い出しインジケータフィールド576の第1の値(例えば、0)は、保留中の追い出しがないことを示す一方で、追い出しインジケータフィールド576の第2の値(例えば、1)は、保留中の追い出しを示す。
【0078】
[0107] エントリ564のドメイン識別子フィールド578は、エントリ564に関連付けられた1つ又は複数の一貫性ドメイン識別子156を示すために使用される。いくつかの態様では、トランザクションデータの一貫性ドメイン数162は、一貫性ドメイン識別子156に関連付けられた保留中のトランザクションのカウントに対応する。保留中のトランザクションのカウントは、(例えば、ドメイン識別子フィールド578によって示される)一貫性ドメイン識別子156に関連付けられた(例えば、有効インジケータフィールド574によって示される)有効なデータを含むエントリ564のカウントに基づいて判定することができる。
【0079】
[0108] ソフトウェアスレッド152Aは、
図4Aの例400の書込み命令440に続いてコミット542を発行する。特定の態様では、一貫性ドメインマネージャ142は、キャッシュ172の部分460が、(例えば、メタデータによって示される)ソフトウェアスレッド152Aに関連付けられたデータを含み、部分460が、(例えば、ダーティビットによって示される)更新されたデータを含むと判定したことに応じて、ソフトウェアスレッド152Aに対応しており、部分460に関連付けられたストアが、コミットされていると判定する。代替として、キャッシュ172の第2の部分が、(例えば、ダーティビットによって示される)キャッシュ172内で更新されていないソフトウェアスレッド152Aに関連付けられたデータを含む場合、一貫性ドメインマネージャ142は、(例えば、読取り命令に対応する)第2の部分に関連付けられたストアがコミットされていないと判定する。
【0080】
[0109] 一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aに対応しており、部分460に関連付けられたストアがコミットされたことに応じて、部分460に関連付けられた保留中のストア動作を示すようにエントリ564Aを更新する。例えば、一貫性ドメインマネージャ142は、部分460に関連付けられたアドレス444を示すようにアドレスフィールド580Aを更新する。一貫性ドメインマネージャ142は、部分460に関連付けられたソフトウェアスレッド152Aに割り当てられた一貫性ドメイン識別子156A(例えば、0)を示すようにドメイン識別子フィールド578Aを更新する。一貫性ドメインマネージャ142は、追い出しインジケータフィールド576Aを第1の値(例えば、0)に設定して、保留中の追い出しがないことを示す。一貫性ドメインマネージャ142は、エントリ564Aが有効なデータを含むことを示すように、有効インジケータフィールド574Aを第2の値(例えば、1)に更新する。
【0081】
[0110] 一貫性ドメインマネージャ142は、エントリ564Aを更新したことに続いて、アドレス444へのデータ446のストアを開始する。例えば、一貫性ドメインマネージャ142は、データ446を、アドレス444における記憶のために、インターフェース174を介してメモリ120に提供させる。
【0082】
[0111] トランザクション追跡スコアボード562は、トランザクションデータの一貫性ドメイン数162を示す。例えば、トランザクションデータの一貫性ドメイン数162は、一貫性ドメイン識別子156に関連付けられた保留中のストアのカウント584を示す。いくつかの実装形態では、一貫性ドメインマネージャ142は、エントリ564Aの更新、データ446のストアの開始、又はその両方と同時に、一貫性ドメイン識別子156Aに関連付けられた保留中のストアのカウント584Aを(例えば、1だけ)増分する。いくつかの実装形態では、カウント584Aは、(例えば、ドメイン識別子フィールド578によって示される)一貫性ドメイン識別子156Aに関連付けられたトランザクション追跡スコアボード562の(例えば、有効インジケータフィールド574によって示される)有効エントリのカウントによって示される。
【0083】
[0112] 同期動作の場合に実行され得る動作について、
図6のシステム600、
図7のシステム700、及び
図8のシステム800を参照しながら説明する。システム600、システム700、及びシステム800の各々は、メモリトランザクションを管理するように動作可能であり、
図1のシステム100に含まれる1つ又は複数の構成要素を含み得る。特に、
図6は、ソフトウェアスレッド152Aの同期動作の開始の一例を示し、
図7は、同期動作中にアクセス命令を受信することの例を示し、
図8は、保留中のストア及び同期動作を完了することの一例を示す。
【0084】
[0113]
図6において、一貫性ドメインマネージャ142は、1つ又は複数の一貫性ドメイン識別子156に関連付けられた同期動作が保留中であるかどうかを示す同期データ650へのアクセスを含むか又はそれにアクセスすることができる。例えば、同期データ650は、1つ又は複数の一貫性ドメイン識別子156の各々のための同期インジケータ654を含む。例示のために、同期データ650は、それぞれ、一貫性ドメイン識別子156A及び一貫性ドメイン識別子156Bのための同期インジケータ654A及び同期インジケータ654Bを含む。1つ又は複数の同期インジケータ654の各々は、第1の値(例えば、0)に初期化されて、保留中の同期動作が、対応する一貫性ドメイン識別子156に関連付けられていないことを示す。
【0085】
[0114] ソフトウェアスレッド152Aは、同期命令644を発行することによって同期動作を開始する。いくつかの実装形態では、同期命令644は、バリア命令又はストア解放ロード取得命令に対応する。一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aの同期命令644を受信し、ドメイン識別子データ150が、ソフトウェアスレッド152Aが一貫性ドメイン識別子156Aに割り当てられていることを示すと判定したことに応じて、例えば、一貫性ドメイン識別子156Aに関連付けられた保留中の同期動作を示すように、一貫性ドメイン識別子156Aに関連付けられた同期インジケータ654Aを第2の値(例えば、1)に更新する。
【0086】
[0115] いくつかの実装形態では、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントに基づいて同期インジケータ654Aを選択的に更新する。例えば、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントは、エントリ564Aなど、一貫性ドメイン識別子156Aに一致する1つ又は複数の一貫性ドメイン識別子156を示すドメイン識別子フィールド578を有するトランザクション追跡スコアボード562の有効エントリのカウントに対応する。例示のために、一貫性ドメイン識別子156Aは、それ自体に一致し、保留中のストアのカウントは、一貫性ドメイン識別子156Aに関連付けられたカウント584Aに基づく。一例では、別の一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156B)も、
図2を参照しながら説明したように、一貫性ドメイン識別子156Aに一致し、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントも、一貫性ドメイン識別子156Bに関連付けられた保留中のストアのカウント584Bに基づく。この例では、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントは、カウント584Aとカウント584Bとの合計に基づく。
【0087】
[0116] いくつかの実装形態では、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントが0より大きいと判定したことに応じて、一貫性ドメイン識別子156Aに関連付けられた保留中の同期動作を示すように、一貫性ドメイン識別子156Aに関連付けられた同期インジケータ654Aを第2の値(例えば、1)に更新する。したがって、同期インジケータ654Aは、
図7~
図8を参照しながら更に説明するように1つ又は複数の構成要素170の動作を制御するためにトランザクションデータの一貫性ドメイン数162に基づいて設定される。
【0088】
[0117]
図7において、一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aのアクセス命令744(例えば、読取り命令又は書込み命令)を受信する。一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aが(例えば、ドメイン識別子データ150によって示される)一貫性ドメイン識別子156Aを割り当てられており、同期データ650が、保留中の同期動作が一貫性ドメイン識別子156Aに関連付けられていることを示すと判定したことに応じて、アクセス命令744を実行することを控える。1つ又は複数の構成要素170の動作を制御することは、アクセス命令744を実行することを控えることを含む。いくつかの態様では、アクセス命令744を実行することを控えることは、アクセス命令744が実行される準備ができていないことを示す第1の値(例えば、0)に設定された対応するレディフラグとともに、命令バッファ750にソフトウェアスレッド152Aのアクセス命令744を追加することを含む。
【0089】
[0118] 特定の例では、一貫性ドメインマネージャ142は、ソフトウェアスレッド152Bからアクセス命令746を受信し、一貫性ドメイン識別子156Bが(例えば、ドメイン識別子データ150によって示される)ソフトウェアスレッド152Bに割り当てられていると判定する。一貫性ドメインマネージャ142は、
図2を参照しながら説明したように、同期データ650が、保留中の同期動作を一貫性ドメイン識別子156Aが有することを示すと判定したことに応じて、一貫性ドメイン識別子156Bが一貫性ドメイン識別子156Aに一致するかどうかを判定する。
【0090】
[0119] 一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Bが一貫性ドメイン識別子156Aに一致すると判定したことに応じて、アクセス命令746を実行することを控える。1つ又は複数の構成要素170の動作を制御することは、アクセス命令746を実行することを控えることを含む。いくつかの態様では、アクセス命令746を実行することを控えることは、アクセス命令746が実行される準備ができていないことを示す第1の値(例えば、0)に設定された対応するレディフラグとともに、命令バッファ750にソフトウェアスレッド152Bのアクセス命令746を追加することを含む。代替として、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Bが、保留中の同期動作をもついかなる一貫性ドメイン識別子とも一致しないと判定したことに応じて、アクセス命令746の実行を開始するか、又は、アクセス命令746が実行される準備ができていることを示す第2の値(例えば、1)に設定された対応するレディフラグとともに、命令バッファ750にアクセス命令746を追加する。
【0091】
[0120] したがって、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aの同期動作中に、一貫性ドメイン識別子156Aに一致する一貫性ドメイン識別子に関連付けられたアクセス命令を実行することを控える。しかしながら、一貫性ドメイン識別子156Aに一致しない一貫性ドメイン識別子に関連付けられたアクセス命令の実行は、ソフトウェアスレッド152Aの同期動作によってブロックされない。
【0092】
[0121]
図8において、メモリ120は、アドレス444へのデータの記憶が完了したことを示す肯定応答(ack.)844を発行する。一貫性ドメインマネージャ142は、肯定応答844を受信したことに応じて、アドレス444に関連付けられた一貫性ドメイン識別子を判定し、アドレス444に関連付けられた保留中のストアがないことを示すようにトランザクション追跡スコアボード562を更新する。例えば、一貫性ドメインマネージャ142は、エントリ564Aが(例えば、有効インジケータフィールド574Aによって示されるように)有効であると判定し、(例えば、アドレスフィールド580Aによって示される)アドレス444が(例えば、ドメイン識別子フィールド578Aによって示される)一貫性ドメイン識別子156Aに関連付けられていることを示す。一貫性ドメインマネージャ142は、エントリ564Aが無効であり、アドレス444に関連付けられた保留中のストアがないことを示すように、エントリ564Aの有効インジケータフィールド574Aを第1の値(例えば、0)に更新する。いくつかの実装形態では、一貫性ドメインマネージャ142は、アドレス444に関連付けられた一貫性ドメイン識別子156Aに対応するカウント584Aを(例えば、1だけ)減分する。
【0093】
[0122] 一貫性ドメインマネージャ142は、同期データ650が、(例えば、肯定応答844によって示されるアドレス444に対応する)一貫性ドメイン識別子156Aに関連付けられた保留中の同期動作を示すと判定したことに応じて、トランザクション追跡スコアボード562が、一貫性ドメイン識別子156Aに一致する任意の残りの保留中のストア動作を示すかどうかを判定する。例えば、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに関連付けられたカウント584Aに基づいて、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントを判定する。いくつかの例では、別の一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156B)が、一貫性ドメイン識別子156Aに一致する。これらの例では、一貫性ドメインマネージャ142は、カウント584Bにも基づいて、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントを判定する。例えば、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントは、一貫性ドメイン識別子156Aに一致する一貫性ドメイン識別子に関連付けられたカウントの合計に基づく。一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに一致する保留中のストアのカウントが0であると判定したことに応じて、一貫性ドメイン識別子156Aに関連付けられた同期動作が完了したことを示すように、同期インジケータ654Aを第1の値(例えば、0)に更新する。
【0094】
[0123] 特定の態様では、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに関連付けられた同期動作が完了したと判定したことに応じて、命令バッファ750内の1つ又は複数の命令が実行される準備ができているものとして指定する。例えば、一貫性ドメインマネージャ142は、命令バッファ750に含まれるアクセス命令744が(例えば、レディフラグによって示されるように)実行される準備ができていないものとして指定されると判定する。一貫性ドメインマネージャ142は、アクセス命令744が、(例えば、ドメイン識別子データ150によって示される)一貫性ドメイン識別子156Aを割り当てられたソフトウェアスレッド152Aに関連付けられていると判定する。一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aが、(例えば、同期データ650によって示される)保留中の同期動作をもついかなる一貫性ドメイン識別子にも一致しないと判定したことに応じて、レディフラグを第2の値(例えば、1)に設定することによって、アクセス命令744が実行される準備ができているものとして指定する。同様に、別の例では、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Bが、保留中の同期動作をもついかなる一貫性ドメイン識別子にも一致しないと判定したことに応じて、アクセス命令746を実行する準備ができているものとして指定する。
【0095】
[0124] 一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aの同期命令644を受信したことに応じて、一貫性ドメイン識別子156Aに一致する保留中のストアの数(例えば、カウント)に基づいて
図1の1つ又は複数の構成要素170の動作を制御する。1つ又は複数の構成要素170の動作を制御することは、一貫性ドメイン識別子156Aに一致する任意の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、一貫性ドメイン識別子156Aに一致する任意の保留中のストアを完了することを含む。
【0096】
[0125] 容量追い出しの場合に実行され得る動作について、
図9のシステム900、
図10Aの例1000、
図10Bの例1090、及び
図11のシステム1100を参照しながら説明する。システム900及びシステム1100の各々は、メモリトランザクションを管理するように動作可能であり、
図1のシステム100に含まれる1つ又は複数の構成要素を含み得る。特に、
図9は、第2のメモリアクセス命令に応じた、キャッシュ172の部分からの更新されたデータの容量追い出しの開始の一例を示し、
図10A及び
図10Bは、第2のメモリアクセス命令に対応するデータをキャッシュの部分にロードすることを示し、
図11は、更新されたデータのストアが完了したという肯定応答に応じて容量追い出しを完了することの一例を示す。
【0097】
[0126]
図9において、キャッシュ172の部分460は、
図4Cを参照しながら説明したように、(例えば、ダーティビットによって示されるように)キャッシュ172内で更新され、アドレス444に関連付けられたソフトウェアスレッド152Aのデータ446を含む。ソフトウェアスレッド152Bは、少なくともオペコード942及びアドレス944を示すアクセス命令946(例えば、メモリ読取り命令又はメモリ書込み命令)を発行する。例えば、オペコード942は、アクセス命令946の識別子を含む。特定の態様では、アクセス命令946は、メモリ書込み命令に対応し、アドレス944に書き込まれるべきデータをも示す。
【0098】
[0127] 一貫性ドメインマネージャ142は、アクセス命令946を受信し、アドレス944に対応するデータがキャッシュ172内で利用可能でないと判定し、キャッシュ172が満杯であると判定したことに応じて、アドレス944に対応するデータを記憶するためにキャッシュ172の部分460を選択する様々なキャッシュ追い出し戦略(例えば、最も最近アクセスされていない)を使用する。選択された部分(例えば、部分460)が、(例えば、ダーティビットによって示されるように)キャッシュ172内で更新されていないデータを含む場合、選択された部分は、追い出しなしに上書きされ得る。代替として、一貫性ドメインマネージャ142は、選択された部分(例えば、部分460)が(例えば、ダーティビットによって示されるように)キャッシュ172内で更新されたデータを含むと判定したことに応じて、部分460に記憶されたデータ446の追い出しを開始する。
【0099】
[0128] アドレス444に関連付けられたデータ446の追い出しを開始することは、トランザクション追跡スコアボード562の利用可能なエントリ564(例えば、有効インジケータフィールド574によって示される無効エントリ)を更新することと、メモリ120のアドレス444へのデータ446のストアを開始することとを含む。例えば、一貫性ドメインマネージャ142は、部分460に関連付けられたアドレス444を示すようにエントリ564Aのアドレスフィールド580Aを設定する。一貫性ドメインマネージャ142は、追い出しインジケータフィールド576Aを第2の値(例えば、1)に設定して、保留中の追い出しを示す。一貫性ドメインマネージャ142は、部分460に関連付けられたソフトウェアスレッド152Aに割り当てられた一貫性ドメイン識別子156Aを示すようにエントリ564Aのドメイン識別子フィールド578Aを設定する。いくつかの実装形態では、保留中の追い出しは、同期動作のために一貫性ドメイン識別子156Aに関連付けられた保留中のストアに対応する。例えば、いくつかの実装形態では、一貫性ドメインマネージャ142は、ソフトウェアスレッド152Aに割り当てられた一貫性ドメイン識別子156Aに対応するカウント584Aを更新する(例えば、1だけ増分する)。一貫性ドメインマネージャ142は、有効インジケータフィールド574Aを第2の値(例えば、1)に設定して、エントリ564Aが有効エントリに対応することを示す。
【0100】
[0129] 一貫性ドメインマネージャ142は、メモリ120のアドレス444に書き込まれるべきデータ446をインターフェース174介して送信させることによって、データ446のストアを開始する。アドレス944からのデータは、データ446のストアの開始に続いて部分460にロードされる。
図10Aの例1000において、一貫性ドメインマネージャ142は、メモリ120のアドレス944からのデータのロード1042を開始する。
【0101】
[0130]
図10Bの例1090において、アドレス944に記憶されたデータ1048は、メモリ120からインターフェース174を介して受信され、キャッシュ172の部分460に記憶される。例えば、一貫性ドメインマネージャ142は、データ1048が部分460に記憶されるという通知を受信する。
【0102】
[0131] いくつかの実装形態では、一貫性ドメインマネージャ142はまた、(アクセス命令946に関連付けられた)ソフトウェアスレッド152B及びアドレス944を示すように部分460のメタデータを更新する。例えば、メタデータは、部分460が、アドレス944に関連付けられたデータを含み、ソフトウェアスレッド152Bのメモリアクセスに関連付けられていることを示す。いくつかの実装形態では、メタデータはダーティビットを含み、メモリマネージャ140は、ダーティビットを第1の値(例えば、0)に設定して、部分460が、キャッシュ172内で更新されていないメモリ120から読み取られたデータを含むことを示すように、メタデータを更新する。
【0103】
[0132] アクセス命令946が、書込み命令に対応し、アドレス944に書き込まれるべき更新されたデータを示す場合、データ1048は、更新されたデータと置換され(例えば、それで上書きされ)、メタデータは、ダーティビットを第2の値(例えば、1)に設定して、部分460が、キャッシュ172内で更新されたデータを含むことを示すように更新される。
【0104】
[0133]
図11において、メモリ120は、アドレス444へのデータの記憶が完了したことを示す肯定応答(ack.)1144を発行する。一貫性ドメインマネージャ142は、肯定応答1144を受信し、エントリ564Aが(例えば、有効インジケータフィールド574Aによって示されるように)有効であると判定し、エントリ564Aが(例えば、アドレスフィールド580Aによって示される)アドレス444に関連付けられていると判定したことに応じて、エントリ564Aが無効であり、保留中の追い出しが完了したことを示すように、有効インジケータフィールド574Aを第1の値(例えば、0)に更新する。いくつかの実装形態では、一貫性ドメインマネージャ142は、肯定応答1144を受信したことに応じて、有効インジケータフィールド574Aを第1の値(例えば、0)に設定する前に、(例えば、ドメイン識別子フィールド578Aによって示される)アドレス444に関連付けられた一貫性ドメイン識別子156Aに対応するカウント584Aを更新する(例えば、1だけ減分する)。
【0105】
[0134] キャッシュ動作ヒットの場合に実行され得る動作について、
図12のシステム1200及び
図13のシステム1300を参照しながら説明する。システム1200及びシステム1300の各々は、メモリトランザクションを管理するように動作可能であり、
図1のシステム100に含まれる1つ又は複数の構成要素を含み得る。特に、
図12及び
図13は、それぞれ、キャッシュ172内のヒットに対応するキャッシュ動作の開始の一例、及びキャッシュ動作を完了することの一例を示す。
【0106】
[0135]
図12において、キャッシュ172の部分460は、
図4Cを参照しながら説明したように、(例えば、ダーティビットによって示されるように)キャッシュ172内で更新され、アドレス444に関連付けられたソフトウェアスレッド152Aのデータ446を含む。ソフトウェアスレッド152Bは、オペコード1242及びアドレス444を示すキャッシュ動作1246(例えば、クリーンキャッシュライン動作又はクリーン及び無効化キャッシュライン動作)を開始する。例えば、オペコード1242は、キャッシュ動作1246の識別子を含む。キャッシュ動作1246は、(例えば、ドメイン識別子データ150によって示される)ソフトウェアスレッド152Bに割り当てられた一貫性ドメイン識別子156Bに関連付けられる。
【0107】
[0136] 一貫性ドメインマネージャ142は、キャッシュ172の部分460が、キャッシュ動作1246によって示されるアドレス444に関連付けられたデータ446を含むと判定したことに応じて、キャッシュヒットを検出する。一貫性ドメインマネージャ142は、キャッシュヒットを検出したことに応じて、データ446の追い出しを開始し、キャッシュ172の部分460が利用可能である(例えば、無効データを含む)ことを示すようにキャッシュ172を更新する。
【0108】
[0137] アドレス444に関連付けられたデータ446の追い出しを開始することは、
図9を参照しながら説明した1つ又は複数の動作を実行することを含む。例えば、一貫性ドメインマネージャ142は、トランザクション追跡スコアボード562の利用可能なエントリ564(例えば、無効エントリ)を更新し、メモリ120のアドレス444へのデータ446のストアを開始する。例示のために、一貫性ドメインマネージャ142は、部分460に関連付けられたアドレス444を示すようにエントリ564Aのアドレスフィールド580Aを設定する。一貫性ドメインマネージャ142は、追い出しインジケータフィールド576Aを第2の値(例えば、1)に設定して、保留中の追い出しを示す。一貫性ドメインマネージャ142は、部分460に関連付けられたソフトウェアスレッド152Aに割り当てられた一貫性ドメイン識別子156A(例えば、0)を示すようにエントリ564Aのドメイン識別子フィールド578Aを設定する。
【0109】
[0138] いくつかの実装形態では、データ446の追い出しを開始することは、キャッシュ動作1246に関連付けられたソフトウェアスレッド152Bに割り当てられた一貫性ドメイン識別子156B(例えば、1)をも示すようにドメイン識別子フィールド578Aを設定することを含む(ソフトウェアスレッド152Aに割り当てられた一貫性ドメイン識別子156Aを表す0値を含み、ソフトウェアスレッド152Bに割り当てられた一貫性ドメイン識別子156Bを表す1値をも含む、ドメイン識別子フィールド578Aとして示される)。
【0110】
[0139] いくつかの態様では、キャッシュヒット動作に起因する保留中の追い出しは、一貫性ドメイン識別子156A及び一貫性ドメイン識別子156Bに関連付けられた保留中のストア動作に対応する。例えば、いくつかの実装形態では、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに対応するカウント584A及び一貫性ドメイン識別子156Bに対応するカウント584Bを更新する(例えば、1だけ増分する)。一貫性ドメインマネージャ142は、有効インジケータフィールド574Aを第2の値(例えば、1)に設定して、エントリ564Aが有効エントリに対応することを示す。一貫性ドメインマネージャ142は、メモリ120のアドレス444に書き込まれるべきデータ446をインターフェース174を介して送信することによって、データ446のストアを開始する。
【0111】
[0140]
図13において、メモリ120は、アドレス444へのデータの記憶が完了したことを示す肯定応答(ack.)1344を発行する。一貫性ドメインマネージャ142は、肯定応答1344を受信し、エントリ564Aが(例えば、有効インジケータフィールド574Aによって示されるように)有効であると判定し、エントリ564Aが(例えば、アドレスフィールド580Aによって示される)アドレス444に関連付けられていると判定したことに応じて、エントリ564Aが無効であり、保留中の追い出しが完了したことを示すように、有効インジケータフィールド574Aを第1の値(例えば、0)に更新する。
【0112】
[0141] いくつかの実装形態では、一貫性ドメインマネージャ142は、肯定応答1344を受信したことに応じて、有効インジケータフィールド574Aを第1の値(例えば、0)に設定する前に、(例えば、ドメイン識別子フィールド578Aによって示される)アドレス444に関連付けられた一貫性ドメイン識別子156A及び一貫性ドメイン識別子156Bにそれぞれ対応するカウント584A及びカウント584Bを更新する(例えば、1だけ減分する)。
【0113】
[0142] キャッシュ動作ミスの場合に実行され得る動作について、
図14のシステム1400及び
図15のシステム1500を参照しながら説明する。システム1400及びシステム1500の各々は、メモリトランザクションを管理するように動作可能であり、
図1のシステム100に含まれる1つ又は複数の構成要素を含み得る。特に、
図14は、キャッシュ172内のミスに対応するキャッシュ動作の開始の一例を示し、
図15は、キャッシュ動作を完了することの一例を示す。
【0114】
[0143]
図14において、トランザクション追跡スコアボード562のエントリ564Aは、アドレス444に関連付けられた保留中の追い出しを示す。特定の態様では、保留中の追い出しは、
図9を参照しながら説明したように、容量追い出しに対応する。別の態様では、保留中の追い出しは、
図12を参照しながら説明したように、キャッシュ動作ヒットに対応する。
【0115】
[0144] ソフトウェアスレッド152Bは、オペコード1242及びアドレス444を示すキャッシュ動作1246(例えば、クリーンキャッシュライン動作又はクリーン及び無効化キャッシュライン動作)を開始する。キャッシュ動作1246は、(例えば、ドメイン識別子データ150によって示される)ソフトウェアスレッド152Bに割り当てられた一貫性ドメイン識別子156Bに関連付けられる。
【0116】
[0145] 一貫性ドメインマネージャ142は、アドレス444に関連付けられた有効なデータがキャッシュ172に記憶されていないと判定したことに応じて、キャッシュミスを検出する。一貫性ドメインマネージャ142は、キャッシュミスを検出したことに応じて、アドレス444に関連付けられた任意の保留中の追い出しに、キャッシュ動作1246に関連付けられた一貫性ドメイン識別子156Bを割り当てる。例えば、一貫性ドメインマネージャ142は、エントリ564Aが(例えば、有効インジケータフィールド574Aによって示されるように)有効であり、(例えば、アドレスフィールド580Aによって示される)アドレス444に関連付けられた(例えば、追い出しインジケータフィールド576Aによって示される)保留中の追い出しに対応すると判定したことに応じて、一貫性ドメイン識別子156Bをも示すようにエントリ564Aのドメイン識別子フィールド578Aを更新する。
【0117】
[0146] 特定の態様では、エントリ564Aによって示される保留中の追い出しは、ドメイン識別子フィールド578Aによって示される任意の他の一貫性ドメイン識別子に加えて、一貫性ドメイン識別子156Bに関連付けられた保留中のストア動作に対応する。例えば、いくつかの実装形態では、一貫性ドメインマネージャ142は、一貫性ドメイン識別子156Aに対応するカウント584Aと、ドメイン識別子フィールド578Aによって示される別の一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156B)に対応する別のカウント(例えば、カウント584B)とを更新する(例えば、1だけ増分する)。
【0118】
[0147]
図15において、メモリ120は、アドレス444へのデータの記憶が完了したことを示す肯定応答(ack.)1544を発行する。一貫性ドメインマネージャ142は、肯定応答1544を受信し、エントリ564Aが(例えば、有効インジケータフィールド574Aによって示されるように)有効であると判定し、エントリ564Aが(例えば、アドレスフィールド580Aによって示される)アドレス444に関連付けられていると判定したことに応じて、エントリ564Aが無効であり、保留中の追い出しが完了したことを示すように、有効インジケータフィールド574Aを第1の値(例えば、0)に更新する。
【0119】
[0148] いくつかの実装形態では、一貫性ドメインマネージャ142は、肯定応答1544を受信したことに応じて、有効インジケータフィールド574Aを第1の値(例えば、0)に設定する前に、(例えば、ドメイン識別子フィールド578Aによって示される)アドレス444に関連付けられた一貫性ドメイン識別子156Aに対応するカウント584Aを更新する(例えば、1だけ減分する)。加えて、一貫性ドメインマネージャ142は、肯定応答1544を受信したことに応じて、有効インジケータフィールド574Aを第1の値(例えば、0)に設定する前に、(例えば、ドメイン識別子フィールド578Aによって示される)アドレス444に関連付けられた任意の他の一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156B)に対応するカウント(例えば、カウント584B)も更新する(例えば、1だけ減分する)。
【0120】
[0149] 容量ドメインを考慮する実行され得る動作について、
図16のシステム1600及び
図17のシステム1700を参照しながら説明する。システム1600及びシステム1700の各々は、メモリトランザクションを管理するように動作可能であり、
図1のシステム100に含まれる1つ又は複数の構成要素を含み得る。特に、
図16は、読取り命令に応じて容量ドメイン識別子に対応する保留中のメモリアクセス命令のカウントを更新することの一例を示し、
図17は、書込み命令に応じて容量ドメイン識別子に対応する保留中のメモリアクセス命令のカウントを更新することの一例を示している。
【0121】
[0150]
図16において、トランザクショントラッカ160は、容量ドメイン識別子158に関連付けられた容量閾値1676を示すトランザクションデータの容量ドメイン数164を含む。例えば、トランザクションデータの容量ドメイン数164は、容量ドメイン識別子158Aが容量閾値1676Aに関連付けられていること、容量ドメイン識別子158Bが容量閾値1676Bに関連付けられていることなどを示す。容量閾値1676Bは、容量閾値1676Aと同じであってもよく、又は別個であってもよい。特定の態様では、容量閾値1676は、構成設定、ユーザ入力、デフォルトデータ、又はそれらの組合せに基づく。
【0122】
[0151] 容量ドメインマネージャ144は、トランザクションデータの容量ドメイン数164を使用して、容量ドメイン識別子158に関連付けられた保留中のメモリアクセス命令のカウント1674を追跡するように構成される。ソフトウェアスレッド152Aは、読取り命令1640を発行する。容量ドメインマネージャ144は、カウント1674に基づいて読取り命令1640を選択的に有効化する。いくつかの態様では、容量ドメインマネージャ144は、(ソフトウェアスレッド152Aに割り当てられた)容量ドメイン識別子158Aに一致する任意の容量ドメイン識別子に関連付けられた容量制限に達したかどうかを判定する。例えば、容量ドメイン識別子158Aは、それ自体の一致であり、容量ドメインマネージャ144は、容量ドメイン識別子158Aに関連付けられたカウント1674Aが、容量ドメイン識別子158Aに関連付けられた容量閾値1676A以上であると判定したことに応じて、容量ドメイン識別子158Aに関連付けられた容量制限に達したと判定する。いくつかの例では、容量ドメイン識別子158Aと同じではない別の容量ドメイン識別子(例えば、容量ドメイン識別子158B)も、
図3を参照しながら説明したように、容量ドメイン識別子158Aに一致することができる。容量ドメインマネージャ144は、容量ドメイン識別子158Bに関連付けられたカウント1674Bが、容量ドメイン識別子158Bに関連付けられた容量閾値1676B以上であると判定したことに応じて、容量ドメイン識別子158Bに関連付けられた容量制限に達したと判定する。
【0123】
[0152] 容量ドメインマネージャ144は、容量ドメイン識別子158Aに一致する少なくとも1つの容量ドメイン識別子について容量制限に達したと判定したことに応じて、読取り命令1640を無効化する。いくつかの実装形態では、読取り命令1640を無効化することは、読取り命令1640を破棄することを含む。他の実装形態では、読取り命令1640を無効化することは、容量ドメイン識別子158Aに一致するすべての容量ドメイン識別子について容量が利用可能である(例えば、容量制限に達していない)ときに実行されるべき読取り命令1640を命令バッファに追加することを含む。
【0124】
[0153] 容量ドメインマネージャ144は、容量ドメイン識別子158Aに一致するすべての容量ドメイン識別子について容量が利用可能であると判定したことに応じて、読取り命令1640を有効化し、カウント1674Aを更新する(例えば、1だけ増分する)。いくつかの態様では、読取り命令1640によって示されるアドレスに関連付けられたデータは、キャッシュ172内で利用可能である。これらの態様では、読取り命令1640を有効化することは、キャッシュ172からソフトウェアスレッド152Aにデータを提供することを含む。
【0125】
[0154] いくつかの態様では、読取り命令1640によって示されるアドレスに関連付けられたデータは、キャッシュ172内で利用可能でない。これらの態様では、読取り命令1640を有効化することは、読取り命令1640に関連付けられたメモリアクセスを開始することを含む。例えば、容量ドメインマネージャ144は、メモリ120からのデータのロード1642を開始する。容量ドメインマネージャ144は、メモリ120からインターフェース174を介して(例えば、読取り命令1640によって示されるアドレスに記憶された)データ1648を受信する。容量ドメインマネージャ144は、データ1648をキャッシュ172に記憶し、キャッシュ172からソフトウェアスレッド152Aにデータ1648を提供する。
【0126】
[0155] ソフトウェアスレッド152Aがキャッシュ172からのデータ1648の読取りを完了すると、ソフトウェアスレッド152Aは、読取り命令1640に関連付けられたメモリアクセスが完了したことを示す肯定応答1650を発行する。容量ドメインマネージャ144は、肯定応答1650を受信したことに応じて、カウント1674Aを更新する(例えば、1だけ減分する)。
【0127】
[0156]
図17において、ソフトウェアスレッド152Aは、書込み命令1740を発行する。容量ドメインマネージャ144は、カウント1674に基づいて書込み命令1740を選択的に有効化する。容量ドメインマネージャ144は、
図16を参照しながら説明したように、(ソフトウェアスレッド152Aに割り当てられた)容量ドメイン識別子158Aに一致する任意の容量ドメイン識別子に関連付けられた容量制限に達したかどうかを判定する。
【0128】
[0157] 容量ドメインマネージャ144は、容量ドメイン識別子158Aに一致する少なくとも1つの容量ドメイン識別子について容量制限に達したと判定したことに応じて、書込み命令1740を無効化する。いくつかの実装形態では、書込み命令1740を無効化することは、書込み命令1740を破棄することを含む。他の実装形態では、書込み命令1740を無効化することは、容量ドメイン識別子158Aに一致するすべての容量ドメイン識別子について容量が利用可能である(例えば、容量制限に達していない)ときに実行されるべき書込み命令1740を命令バッファに追加することを含む。
【0129】
[0158] 容量ドメインマネージャ144は、容量ドメイン識別子158Aに一致するすべての容量ドメイン識別子について容量が利用可能であると判定したことに応じて、書込み命令1740を有効化し、カウント1674Aを更新する(例えば、1だけ増分する)。書込み命令1740を有効化することは、書込み命令1740に関連付けられたメモリアクセスを開始することを含む。いくつかの態様では、メモリアクセスを開始することは、書込み命令1740によって示されるアドレスへの、書込み命令1740によって示されるデータ1748のストア動作を開始することを含む。例示のために、容量ドメインマネージャ144は、インターフェース174を介してメモリ120にデータ1748を提供する。メモリ120は、書込み命令1740に関連付けられたメモリアクセス(例えば、ストア動作)が完了したことを示す肯定応答1750を提供する。
【0130】
[0159] いくつかの態様では、メモリアクセスを開始することは、データ1748をキャッシュ172に記憶することを含む。これらの態様では、ソフトウェアスレッド152Aは、書込み命令1740に関連付けられたメモリアクセス(例えば、キャッシュ172へのストア)が完了したことを示す肯定応答1750を提供し得る。
【0131】
[0160] 容量ドメインマネージャ144は、肯定応答1750を受信したことに応じて、カウント1674Aを更新する(例えば、1だけ減分する)。いくつかの実装形態では、容量ドメインマネージャ144は、カウント1674Aを減分したことに続いて、命令バッファに記憶されたメモリアクセス命令が有効化の候補であるかどうかを判定する。例えば、容量ドメインマネージャ144は、メモリアクセス命令に関連付けられた容量ドメイン識別子に一致するすべての容量ドメイン識別子について容量が利用可能であると判定したことに応じて、メモリアクセス命令を有効化し、命令バッファからメモリアクセス命令を除去し、容量ドメイン識別子に関連付けられたカウントを更新(例えば、増分)する。
【0132】
[0161] メモリマネージャ140は、説明を容易にするために、
図17~
図18では、容量ドメインマネージャ144に加えて一貫性ドメインマネージャ142を含まないものとして示されている。いくつかの実装形態では、メモリマネージャ140は、一貫性ドメインマネージャ142及び容量ドメインマネージャ144を含むことができる。例えば、一貫性ドメインマネージャ142は、
図5~
図8を参照しながら説明したように、メモリ120へのデータ1748の書込みを開始するのと同時にトランザクション追跡スコアボード562を更新し、肯定応答1750を受信したことに応じてトランザクション追跡スコアボード562を更新する。
【0133】
[0162] 1つ又は複数のプロセッサ190によって実行される様々な機能は、いくつかの構成要素又はモジュールによって実行されるものとして説明されていることに留意されたい。しかしながら、構成要素及びモジュールのこの分割は、説明のためのものにすぎない。代替の態様では、特定の構成要素又はモジュールによって実行されるものとして本明細書で説明する機能は、複数の構成要素又はモジュールの間で分割される。その上、代替の態様では、1つ又は複数のプロセッサ190の2つ以上の構成要素又はモジュールは、単一の構成要素又はモジュールに組み込まれる。特定の態様では、デバイス102によって実行されるものとして本明細書で説明する1つ又は複数の機能は、複数のデバイス(例えば、デバイス102、中央サーバ、分散システム、又はそれらの任意の組合せ)の間で分割される。
【0134】
[0163]
図18は、デバイス102が、例示的で非限定的な例として、電話又はタブレットなどのモバイルデバイス1802を含む、実装形態1800を示す。モバイルデバイス1802はディスプレイスクリーン1804を含む。メモリマネージャ140を含む1つ又は複数のプロセッサ190の構成要素は、モバイルデバイス1802に組み込まれ、モバイルデバイス1802のユーザには通常見えない内部構成要素を示すために破線を使用して示されている。特定の例では、メモリマネージャ140は、モバイルデバイス1802のメモリにアクセスして、(例えば、組み込まれた「スマートアシスタント」アプリケーションを介して)ディスプレイスクリーン1804にグラフィカルユーザインターフェースを起動するか又はさもなければ他の情報を表示するように、など、モバイルデバイス1802において1つ又は複数の動作を実行するように動作する。
【0135】
[0164] いくつかの態様では、メモリマネージャ140は、一貫性ドメイン識別子のためのメモリアクセストランザクションが、一致しない一貫性ドメイン識別子の同期動作による影響を受けないままであることを可能にする。例えば、第1の一貫性ドメイン識別子に関連付けられた第1のアプリケーション(例えば、ビデオ再生)のメモリアクセスは、第1の一貫性ドメイン識別子に一致しない第2の一貫性ドメイン識別子に関連付けられた第2のアプリケーション(例えば、ソーシャルネットワーキングアプリケーション)の同期動作によってブロックされない。いくつかの態様では、メモリマネージャ140は、容量ドメイン識別子に基づいて容量制限を分離する。例えば、第2のアプリケーション(例えば、ソーシャルネットワーキングアプリケーション)のメモリアクセスは、第1のアプリケーション(例えば、ビデオ再生)のあまりに多くのメモリアクセスによってブロックされない。
【0136】
[0165]
図19は、デバイス102がヘッドセットデバイス1902を含む、実装形態1900を示す。メモリマネージャ140を含む1つ又は複数のプロセッサ190の構成要素は、ヘッドセットデバイス1902に組み込まれる。特定の例では、メモリマネージャ140は、ヘッドセットデバイス1902のメモリにアクセスして、ヘッドセットデバイス1902において1つ又は複数の動作を実行するように動作する。
【0137】
[0166]
図20は、デバイス102が「スマートウォッチ」として示されたウェアラブル電子デバイス2002を含む、実装形態2000を示す。メモリマネージャ140はウェアラブル電子デバイス2002に組み込まれる。特定の例では、メモリマネージャ140は、ウェアラブル電子デバイス2002のメモリにアクセスして、ウェアラブル電子デバイス2002のディスプレイスクリーン2004にグラフィカルユーザインターフェースを起動するか又はさもなければユーザの発話に関連付けられた他の情報を表示する、など、ウェアラブル電子デバイス2002において1つ又は複数の動作を実行するように動作する。例示のために、ウェアラブル電子デバイス2002は、ウェアラブル電子デバイス2002によって検出されたユーザの発話に基づいて通知を表示するように構成されたディスプレイスクリーンを含み得る。特定の例では、ウェアラブル電子デバイス2002は、ユーザ音声アクティビティの検出に応じて触覚通知を提供(例えば、振動)する触覚デバイスを含む。例えば、触覚通知は、ユーザに、ユーザが話したキーワードの検出を示す表示された通知を確認するためにウェアラブル電子デバイス2002を見させることができる。
【0138】
[0167]
図21は、デバイス102がワイヤレススピーカー及び音声起動型デバイス2102を含む、実装形態2100である。ワイヤレススピーカー及び音声起動型デバイス2102は、ワイヤレスネットワーク接続性を有することができ、アシスタント動作を実行するように構成される。メモリマネージャ140を含む1つ又は複数のプロセッサ190が、ワイヤレススピーカー及び音声起動型デバイス2102に含まれる。ワイヤレススピーカー及び音声起動型デバイス2102はまた、スピーカー2104を含む。動作中、メモリマネージャ140は、ワイヤレススピーカー及び音声起動型デバイス2102のメモリにアクセスして、音声起動システム(例えば、統合アシスタントアプリケーション)の実行を介してなど、アシスタント動作を実行するように動作する。アシスタント動作は、温度を調整すること、音楽を再生すること、明かりをつけることなどを含むことができる。例えば、アシスタント動作は、キーワード又はキーフレーズ(例えば、「こんにちは、アシスタント」)の後にコマンドを受信したことに応じて実行される。
【0139】
[0168]
図22は、デバイス102がカメラデバイス2202に対応するポータブル電子デバイスを含む、実装形態2200を示す。メモリマネージャ140はカメラデバイス2202に含まれる。動作中、メモリマネージャ140は、カメラデバイス2202のメモリにアクセスして、例示的な例として、画像若しくはビデオキャプチャ設定、画像若しくはビデオ再生設定、又は画像若しくはビデオキャプチャ命令を調整するなど、話されたユーザコマンドに応じた動作を実行する。
【0140】
[0169]
図23は、デバイス102が仮想現実ヘッドセット、複合現実ヘッドセット、又は拡張現実ヘッドセット2302に対応するポータブル電子デバイスを含む、実装形態2300を示す。メモリマネージャ140はヘッドセット2302に組み込まれる。メモリマネージャ140は、ヘッドセット2302のメモリにアクセスして、ヘッドセット2302において動作を実行するように動作する。特定の態様では、ユーザ音声アクティビティ検出は、ヘッドセット2302の1つ又は複数のマイクロフォンから受信されたオーディオ信号に基づいて実行され得る。視覚インターフェースデバイスは、ヘッドセット2302が装着されている間に拡張現実、複合現実、若しくは仮想現実の画像又はシーンをユーザに表示することを可能にするために、ユーザの眼の正面に配置される。特定の例では、視覚インターフェースデバイスは、オーディオ信号において検出されたユーザの発話を示す通知を表示するように構成される。
【0141】
[0170]
図24は、デバイス102が有人又は無人の航空デバイス(例えば、パッケージ配送ドローン)として示されたビークル2402に対応するか又はその中に組み込まれる、実装形態2400を示す。メモリマネージャ140はビークル2402に組み込まれる。メモリマネージャ140は、ビークル2402のメモリにアクセスして、ビークル2402において動作を実行するように動作する。ユーザ音声アクティビティ検出は、ビークル2402の許可されたユーザからの配達命令についてなど、ビークル2402の1つ又は複数のマイクロフォンから受信されたオーディオ信号に基づいて実行され得る。
【0142】
[0171]
図25は、デバイス102が自動車として示されたビークル2502に対応するか又はその中に組み込まれる、別の実装形態2500を示す。ビークル2502は、メモリマネージャ140を含む1つ又は複数のプロセッサ190を含む。メモリマネージャ140は、ビークル2502のメモリにアクセスして、ビークル2502において動作を実行するように動作する。ユーザ音声アクティビティ検出は、ビークル2502の1つ又は複数のマイクロフォンから受信されたオーディオ信号に基づいて実行され得る。いくつかの実装形態では、ユーザ音声アクティビティ検出は、許可された乗員からの音声コマンドについてなど、内部マイクロフォンから受信されたオーディオ信号に基づいて実行され得る。例えば、ユーザ音声アクティビティ検出は、ビークル2502のオペレータからの音声コマンドを検出するために使用され得る。いくつかの実装形態では、ユーザ音声アクティビティ検出は、ビークルの許可されたユーザなどの、外部マイクロフォンから受信されたオーディオ信号に基づいて実行され得る。特定の実装形態では、ユーザの発話として識別された口頭コマンドを受信したことに応じて、音声起動システムは、ディスプレイ2520あるいは1つ又は複数のスピーカーを介してフィードバック又は情報を提供することなどによって、入力信号において検出された1つ又は複数のキーワード(例えば、「ロック解除」、「エンジン始動」、「音楽再生」、「天気予報表示」、又は別の音声コマンド)に基づいてビークル2502の1つ又は複数の動作を開始する。
【0143】
[0172]
図26を参照すると、メモリトランザクション管理の方法2600の特定の実装形態が示されている。特定の態様では、方法2600の1つ又は複数の動作は、
図1のメモリマネージャ140、1つ又は複数のプロセッサ190、デバイス102、システム100のうちの少なくとも1つ、あるいはそれらの組合せによって実行される。特定の態様では、方法2600はコンピュータ実装される。
【0144】
[0173] 方法2600は、2602において、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てることを含む。例えば、一貫性ドメインマネージャ142は、
図1を参照しながら説明したように、複数のソフトウェアスレッド152の各々に一貫性ドメイン識別子156を割り当てる。別の例として、容量ドメインマネージャ144は、
図1を参照しながら説明したように、複数のソフトウェアスレッド152の各々に容量ドメイン識別子158を割り当てる。
【0145】
[0174] 方法2600はまた、2604において、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御することを含む。例えば、一貫性ドメインマネージャ142は、
図1を参照しながら説明したように、トランザクションデータの一貫性ドメイン数162に基づいて、1つ又は複数のプロセッサ190の1つ又は複数の構成要素170の動作を制御する。別の例として、容量ドメインマネージャ144は、
図1を参照しながら説明したように、トランザクションデータの容量ドメイン数164に基づいて、1つ又は複数のプロセッサ190の1つ又は複数の構成要素170の動作を制御する。
【0146】
[0175] ドメイン識別子が容量ドメイン識別子に対応する実装形態では、方法2600は、他の容量ドメイン識別子に関連付けられたメモリアクセスのためにリソースが利用可能であることを可能にするために、容量ドメイン識別子に関連付けられ得る保留中のメモリアクセスのカウントを制限することができる。例示のために、ソフトウェアスレッド152Aは、
図16を参照しながら説明したように、容量ドメイン識別子158Aに関連付けられる。1つ又は複数の構成要素170の動作を制御することは、
図16~
図17を参照しながら説明したように、容量ドメイン識別子158Aに一致する任意の容量ドメイン識別子(例えば、容量ドメイン識別子158B)に関連付けられた保留中のメモリアクセスのカウントが対応する閾値カウントに等しいと判定したことに応じて、ソフトウェアスレッド152Aのメモリアクセスを開始することを控えることを含む。容量ドメイン識別子158Aに一致しない他の容量ドメイン識別子に関連付けられたメモリアクセスは、容量ドメイン識別子158Aに関連付けられた保留中のメモリアクセスのカウントによる影響を受けない。
【0147】
[0176] 代替として、又は加えて、ドメイン識別子が一貫性ドメイン識別子に対応する実装形態では、方法2600は、特定の一貫性ドメイン識別子に関連付けられた同期命令が、特定の一貫性ドメイン識別子に一致しない他の一貫性ドメイン識別子に関連付けられたメモリアクセス命令に影響を及ぼさない(例えば、遅延させない)ことを保証することができる。例示のために、同期命令644は、
図6を参照しながら説明したように、一貫性ドメイン識別子156Aに関連付けられる。1つ又は複数の構成要素170の動作を制御することは、
図6~
図8を参照しながら説明したように、一致する一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156B)に関連付けられた任意の後続のメモリアクセス命令を実行する前に、一貫性ドメイン識別子156Aに一致する任意の一貫性ドメイン識別子(例えば、一貫性ドメイン識別子156B)に関連付けられた保留中のメモリアクセス命令が実行されることを可能にすること(例えば、保留中のメモリアクセス命令のカウント=0)を含む。同期命令644は、一貫性ドメイン識別子156Aに一致しない他の一貫性ドメイン識別子に関連付けられたメモリアクセス命令に影響を及ぼさない(例えば、遅延させない)。
【0148】
[0177]
図26の方法2600は、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)デバイス、特定用途向け集積回路(application-specific integrated circuit、ASIC)、中央処理ユニット(central processing unit、CPU)などの処理ユニット、DSP、GPU、コントローラ、別のハードウェアデバイス、ファームウェアデバイス、又はそれらの任意の組合せによって実装され得る。一例として、
図26の方法2600は、
図27を参照しながら説明するような、命令を実行するプロセッサによって実行され得る。
【0149】
[0178]
図27を参照すると、デバイス2700の特定の例示的な実装形態のブロック図が示されている。様々な実装形態では、デバイス2700は、
図27に示されるよりも多数又は少数の構成要素を有してもよい。例示的な実装形態では、デバイス2700はデバイス102に対応し得る。例示的な実装形態では、デバイス2700は、
図1~
図26を参照しながら説明した1つ又は複数の動作を実行し得る。
【0150】
[0179] 特定の実装形態では、デバイス2700はプロセッサ2706(例えば、CPU)を含む。デバイス2700は、1つ又は複数の追加のプロセッサ2710(例えば、1つ又は複数のDSP、1つ又は複数のGPU、あるいはそれらの組合せ)を含み得る。特定の態様では、
図1の1つ又は複数のプロセッサ190は、プロセッサ2706、プロセッサ2710、又はそれらの組合せに対応する。プロセッサ2710は、音声コーダ(「ボコーダ」)エンコーダ2736、ボコーダデコーダ2738、又はその両方を含む、発話及び音楽コーダデコーダ(コーデック)2708を含み得る。プロセッサ2710は、1つ又は複数の構成要素170、メモリマネージャ140、トランザクショントラッカ160、構成データ146、ドメイン識別子データ150、あるいはそれらの組合せを含み得る。
【0151】
[0180] デバイス2700は、メモリ2786及びコーデック2734を含み得る。いくつかの実装形態では、メモリ2786は
図1のメモリ120を含む。他の実装形態では、メモリ120はメモリ2786とは別個である。メモリ2786は、メモリマネージャ140に関して説明する機能を実装するために1つ又は複数の追加のプロセッサ2710(又はプロセッサ2706)によって実行可能である、命令2756を含み得る。デバイス2700は、1つ又は複数のトランシーバ2750を介して1つ又は複数のアンテナ2752に結合された1つ又は複数のモデム2770を含み得る。
【0152】
[0181] いくつかの態様では、プロセッサ2710(又はプロセッサ2706)は、1つ又は複数のモデム2770及び1つ又は複数のトランシーバ2750を介して、デバイス2780、デバイス2782、又はその両方と通信するように構成される。特定の例では、デバイス2700は、トラフィック2781(例えば、セルラーモデムトラフィック)をデバイス2780と交換するか、トラフィック2783(例えば、WLANトラフィック)をデバイス2782と交換するか、又はその両方である。例えば、トラフィック2781は、1つ又は複数のモデム2770のうちの少なくとも1つ(例えば、セルラーモデム)、1つ又は複数のトランシーバ2750のうちの少なくとも1つ、及び1つ又は複数のアンテナ2752のうちの少なくとも1つを介して、データ経路に沿ってデバイス2780と交換される。同様に、トラフィック2783は、データ経路に沿って、1つ又は複数のモデム2770のうちの少なくとも1つ(例えば、WLANモデム)、1つ又は複数のトランシーバ2750のうちの少なくとも1つ、及び1つ又は複数のアンテナ2752のうちの少なくとも1つを介して、デバイス2782と交換される。
【0153】
[0182] 特定の実装形態では、メモリマネージャ140の一貫性ドメインマネージャ142は、トラフィック2783(例えば、WLANトラフィック)とは無関係に、トラフィック2781(例えば、セルラーモデムトラフィック)の同期を執行する。例えば、一貫性ドメインマネージャ142は、セルラーモデムメモリトランザクションに関連付けられた同期動作が後続のWLANメモリトランザクションをブロックしないことを保証し、その逆も同様である。特定の態様では、メモリマネージャ140の容量ドメインマネージャ144は、トラフィック2783(例えば、WLANトラフィック)とは無関係に、トラフィック2781(例えば、セルラーモデムトラフィック)のリソース利用を執行する。例えば、容量ドメインマネージャ144は、セルラーモデムメモリトランザクションがWLANメモリトランザクションによってブロックされないことを保証し、その逆も同様である。
【0154】
[0183] デバイス2700は、ディスプレイコントローラ2726に結合されたディスプレイ2728を含み得る。1つ又は複数のスピーカー2792、1つ又は複数のマイクロフォン2790、又はそれらの組合せは、コーデック2734に結合され得る。コーデック2734は、デジタルアナログ変換器(digital-to-analog converter、DAC)2702、アナログデジタル変換器(analog-to-digital converter、ADC)2704、又はその両方を含み得る。特定の実装形態では、コーデック2734は、1つ又は複数のマイクロフォン2790からアナログ信号を受信し、アナログデジタル変換器2704を使用してアナログ信号をデジタル信号に変換し、デジタル信号を発話及び音楽コーデック2708に提供することができる。発話及び音楽コーデック2708は、デジタル信号を処理することができる。特定の実装形態では、発話及び音楽コーデック2708は、デジタル信号をコーデック2734に提供し得る。コーデック2734は、デジタルアナログ変換器2702を使用してデジタル信号をアナログ信号に変換することができ、アナログ信号を1つ又は複数のスピーカー2792に提供することができる。
【0155】
[0184] 特定の実装形態では、デバイス2700は、システムインパッケージ又はシステムオンチップデバイス2722に含まれてもよい。特定の実装形態では、メモリ2786、プロセッサ2706、プロセッサ2710、ディスプレイコントローラ2726、コーデック2734、及び1つ又は複数のモデム2770は、システムインパッケージ又はシステムオンチップデバイス2722に含まれる。特定の実装形態では、入力デバイス2730及び電源2744は、システムインパッケージ又はシステムオンチップデバイス2722に結合される。その上、特定の実装形態では、
図27に示されているように、ディスプレイ2728、入力デバイス2730、1つ又は複数のスピーカー2792、1つ又は複数のマイクロフォン2790、1つ又は複数のアンテナ2752、及び電源2744は、システムインパッケージ又はシステムオンチップデバイス2722の外部にある。特定の実装形態では、ディスプレイ2728、入力デバイス2730、1つ又は複数のスピーカー2792、1つ又は複数のマイクロフォン2790、1つ又は複数のアンテナ2752、及び電源2744の各々は、インターフェース又はコントローラなど、システムインパッケージ又はシステムオンチップデバイス2722の構成要素に結合され得る。
【0156】
[0185] デバイス2700は、スマートスピーカー、スピーカーバー、モバイル通信デバイス、スマートフォン、セルラーフォン、ラップトップコンピュータ、コンピュータ、タブレット、携帯情報端末、ディスプレイデバイス、テレビジョン、ゲームコンソール、音楽プレーヤ、ラジオ、デジタルビデオプレーヤ、デジタルビデオディスク(digital video disc、DVD)プレーヤ、チューナー、カメラ、ナビゲーションデバイス、ビークル、ヘッドセット、拡張現実ヘッドセット、複合現実ヘッドセット、仮想現実ヘッドセット、航空ビークル、ホームオートメーションシステム、音声起動型デバイス、ワイヤレススピーカー及び音声起動型デバイス、ポータブル電子デバイス、自動車、コンピューティングデバイス、通信デバイス、モノのインターネット(internet-of-things、IoT)デバイス、仮想現実(virtual reality、VR)デバイス、基地局、モバイルデバイス、又はそれらの任意の組合せを含み得る。
【0157】
[0186] 説明した実装形態に関連して、装置は、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるための手段を含む。例えば、別個のドメイン識別子を割り当てるための手段は、一貫性ドメインマネージャ142、容量ドメインマネージャ144、メモリマネージャ140、1つ又は複数のプロセッサ190、デバイス102、
図1のシステム100、プロセッサ2706、1つ又は複数のプロセッサ2710、デバイス2700、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるように構成された1つ又は複数の他の回路若しくは構成要素、あるいはそれらの任意の組合せに対応することができる。
【0158】
[0187] この装置はまた、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するための手段を含む。例えば、動作を制御するための手段は、一貫性ドメインマネージャ142、容量ドメインマネージャ144、メモリマネージャ140、1つ又は複数のプロセッサ190、デバイス102、
図1のシステム100、プロセッサ2706、1つ又は複数のプロセッサ2710、デバイス2700、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるように構成された1つ又は複数の他の回路若しくは構成要素、あるいはそれらの任意の組合せに対応することができる。
【0159】
[0188] いくつかの実装形態では、非一時的コンピュータ可読媒体(例えば、メモリ2786などのコンピュータ可読記憶デバイス)は、命令(例えば、命令2756)を含み、これらの命令は、1つ又は複数のプロセッサ(例えば、1つ又は複数のプロセッサ2710あるいはプロセッサ2706)によって実行されたとき、これらの1つ又は複数のプロセッサに、複数のソフトウェアスレッドの各々に別個のドメイン識別子(例えば、一貫性ドメイン識別子156、容量ドメイン識別子158、又はその両方)を割り当てさせる。命令はまた、1つ又は複数のプロセッサによって実行されたとき、これらの1つ又は複数のプロセッサに、ドメイン識別子に関連付けられたメモリトランザクションの数(例えば、トランザクションデータの一貫性ドメイン数162、トランザクションデータの容量ドメイン数164、又はその両方)に基づいて、プロセッサの1つ又は複数の構成要素(例えば、1つ又は複数の構成要素170)の動作を制御させる。
【0160】
[0189] 本開示の特定の態様について、相互に関係する条項のセットにおいて以下で説明する。
【0161】
[0190] 条項1によれば、デバイスは、メモリと、メモリに結合されたプロセッサと、を含み、プロセッサは、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当て、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するように構成されている。
【0162】
[0191] 条項2は、第1のソフトウェアスレッドに関連付けられたキャッシュ制御レジスタを更に含み、第1のソフトウェアスレッドに第1のドメイン識別子を割り当てることが、第1のドメイン識別子を示すようにキャッシュ制御レジスタを更新することを含む、条項1に記載のデバイスを含む。
【0163】
[0192] 条項3は、プロセッサが、第1のソフトウェアスレッドの同期命令を受信するように構成されており、第1のソフトウェアスレッドが、第1の一貫性ドメイン識別子を割り当てられており、動作を制御することが、同期命令を受信したことに応じて、第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む、条項1又は条項2に記載のデバイスを含む。
【0164】
[0193] 条項4は、プロセッサが、第1の一貫性ドメイン識別子に一致する第2の一貫性ドメイン識別子に関連付けられた同期命令を受信したことに応じて、第2の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了するように構成されている、条項3に記載のデバイスを含む。
【0165】
[0194] 条項5は、第2の一貫性ドメイン識別子が、第1の一貫性ドメイン識別子によって示される一貫性ドメインのサブドメインを示す、条項4に記載のデバイスを含む。
【0166】
[0195] 条項6は、第1の一貫性ドメイン識別子が、第2の一貫性ドメイン識別子と同じである、条項4に記載のデバイスを含む。
【0167】
[0196] 条項7は、同期命令が、バリア命令又はストア解放ロード取得命令を含む、条項3から条項6のいずれかに記載のデバイスを含む。
【0168】
[0197] 条項8は、メモリのデータを記憶するように構成されているキャッシュと、1つ又は複数の一貫性ドメイン識別子に関連付けられた1つ又は複数の保留中のストアを追跡するように構成されているトランザクション追跡スコアボードと、を更に含み、プロセッサは、第1のメモリロケーションを示す第1のソフトウェアスレッドの書込み命令を受信し、第1のメモリロケーションに関連付けられたデータがキャッシュ内で利用可能でないと判定したことに応じて、第1のメモリロケーションからキャッシュの第1の部分に第1のデータをロードし、キャッシュ内の第1のデータを更新する、ように構成されている、条項1から条項7のいずれかに記載のデバイスを含む。
【0169】
[0198] 条項9は、プロセッサが、第1のソフトウェアスレッドに関連付けられたストアがコミットされたことに応じて、第1のメモリロケーションへの更新された第1のデータの保留中のストア動作を示すようにトランザクション追跡スコアボードのエントリを更新するように構成されており、エントリが、第1のメモリロケーション及び第1のソフトウェアスレッドの第1の一貫性ドメイン識別子を示すように更新される、条項8に記載のデバイスを含む。
【0170】
[0199] 条項10は、プロセッサが、第1のメモリロケーションへの更新された第1のデータの記憶が完了したことを示す肯定応答を受信し、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新する、ように更に構成されている、条項9に記載のデバイスを含む。
【0171】
[0200] 条項11は、プロセッサが、第2のメモリロケーションに対応するデータがキャッシュ内で利用可能でなく、キャッシュが満杯であるとき、第2のメモリロケーションを示す第2のソフトウェアスレッドのメモリアクセス命令を受信したことに応じて、キャッシュからの更新された第1のデータの追い出しを開始し、第2のメモリロケーションからキャッシュの第1の部分に第2のデータをロードする、ように構成されている、条項8から条項10のいずれかに記載のデバイスを含む。
【0172】
[0201] 条項12は、更新された第1のデータの追い出しを開始することが、第1のメモリロケーションに対応する更新された第1のデータの保留中の追い出しを示すようにトランザクション追跡スコアボードのエントリを更新することを含む、条項11に記載のデバイスを含む。
【0173】
[0202] 条項13は、プロセッサが、第1のメモリロケーションへの更新された第1のデータの記憶が完了したことを示す肯定応答を受信し、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新する、ように更に構成されている、条項12に記載のデバイスを含む。
【0174】
[0203] 条項14は、プロセッサが、第2の一貫性ドメイン識別子を有するキャッシュ動作が、キャッシュの第1の部分に記憶された更新された第1のデータに対応する第1のメモリロケーションに関連付けられていると判定したことに応じて、キャッシュからの更新された第1のデータの追い出しを開始し、キャッシュの第1の部分が利用可能であることを示すようにキャッシュを更新する、ように構成されている、条項8から条項13のいずれかに記載のデバイスを含む。
【0175】
[0204] 条項15は、更新された第1のデータの追い出しを開始することが、更新された第1のデータの保留中の追い出しを示すように、かつ第2の一貫性ドメイン識別子に関連付けられた保留中のストア動作を示すようにトランザクション追跡スコアボードのエントリを更新することを含む、条項14に記載のデバイスを含む。
【0176】
[0205] 条項16は、プロセッサが、第1のメモリロケーションへの更新された第1のデータの記憶が完了したことを示す肯定応答を受信し、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新する、ように更に構成されている、条項15に記載のデバイスを含む。
【0177】
[0206] 条項17は、メモリのデータを記憶するように構成されているキャッシュを更に含み、プロセッサが、キャッシュ動作が第2のメモリロケーションに関連付けられており、第2のメモリロケーションに関連付けられた有効なデータがキャッシュに記憶されていないと判定したことに応じて、キャッシュ動作の第2の一貫性ドメイン識別子を、第2のメモリロケーションに関連付けられた任意の保留中の追い出しに割り当てるように構成されている、条項1から条項16のいずれかに記載のデバイスを含む。
【0178】
[0207] 条項18は、メモリのデータを記憶するように構成されているキャッシュと、トランザクション追跡スコアボードと、を更に含み、プロセッサが、キャッシュ動作が第2のメモリロケーションに関連付けられていること、第2のメモリロケーションに関連付けられた有効なデータがキャッシュに記憶されていないこと、及びトランザクション追跡スコアボードのエントリが、第2のメモリロケーションに関連付けられた保留中の追い出しに対応することを判定したことに応じて、キャッシュ動作の第2の一貫性ドメイン識別子を示すようにトランザクション追跡スコアボードのエントリを更新する、ように構成されている、条項1から条項17のいずれかに記載のデバイスを含む。
【0179】
[0208] 条項19は、プロセッサが、トランザクション追跡スコアボードのエントリに関連付けられたストアが完了したことを示す肯定応答を受信し、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新する、ように更に構成されている、条項18に記載のデバイスを含む。
【0180】
[0209] 条項20は、プロセッサが、第1のソフトウェアスレッドからメモリアクセス命令を受信するように構成されており、第1のソフトウェアスレッドが、第1の容量ドメイン識別子を割り当てられており、動作を制御することが、第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントに基づいてメモリアクセス命令を選択的に有効化することを含む、条項1から条項19のいずれかに記載のデバイスを含む。
【0181】
[0210] 条項21は、プロセッサが、保留中のメモリアクセス命令のカウントが、第1の容量ドメイン識別子に対応する閾値カウント未満であると判定したことに基づいて、メモリアクセス命令に関連付けられたメモリアクセスを開始し、第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントを増分する、ように構成されている、条項20に記載のデバイスを含む。
【0182】
[0211] 条項22は、プロセッサが、メモリアクセスが完了したことを示す肯定応答を受信し、肯定応答を受信したことに応じて、第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントを減分する、ように構成されている、条項21に記載のデバイスを含む。
【0183】
[0212] 条項23は、第1のドメイン識別子が、第1のソフトウェアスレッドに関連付けられた通信タイプに少なくとも部分的に基づいて第1のソフトウェアスレッドに割り当てられており、通信タイプが、セルラーモデムトラフィック又はワイヤレスローカルエリアネットワーク(WLAN)トラフィックを含む、条項1から条項22のいずれかに記載のデバイスを含む。
【0184】
[0213] 条項24によれば、コンピュータ実装方法は、デバイスにおいて、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てることと、デバイスにおいて、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御することと、を含む。
【0185】
[0214] 条項25は、キャッシュ制御レジスタが第1のソフトウェアスレッドに関連付けられ、第1のソフトウェアスレッドに第1のドメイン識別子を割り当てることが、第1のドメイン識別子を示すようにキャッシュ制御レジスタを更新することを含む、条項24に記載のコンピュータ実装方法を含む。
【0186】
[0215] 条項26は、第1のソフトウェアスレッドの同期命令を受信することを更に含み、第1のソフトウェアスレッドが、第1の一貫性ドメイン識別子を割り当てられており、動作を制御することが、同期命令を受信したことに応じて、第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む、条項24又は条項25に記載のコンピュータ実装方法を含む。
【0187】
[0216] 条項27は、第1の一貫性ドメイン識別子に一致する第2の一貫性ドメイン識別子に関連付けられた同期命令を受信したことに応じて、第2の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを更に含む、条項26に記載のコンピュータ実装方法を含む。
【0188】
[0217] 条項28は、第2の一貫性ドメイン識別子が、第1の一貫性ドメイン識別子によって示される一貫性ドメインのサブドメインを示す、条項27に記載のコンピュータ実装方法を含む。
【0189】
[0218] 条項29は、第1の一貫性ドメイン識別子が、第2の一貫性ドメイン識別子と同じである、条項27に記載のコンピュータ実装方法を含む。
【0190】
[0219] 条項30は、同期命令が、バリア命令又はストア解放ロード取得命令を含む、条項26から条項29のいずれかに記載のコンピュータ実装方法を含む。
【0191】
[0220] 条項31は、第1のメモリロケーションを示す第1のソフトウェアスレッドの書込み命令を受信し、第1のメモリロケーションに関連付けられたデータがキャッシュ内で利用可能でないと判定したことに応じて、第1のメモリロケーションからキャッシュの第1の部分に第1のデータをロードすることと、キャッシュ内の第1のデータを更新することと、を更に含む、条項24から条項30に記載のコンピュータ実装方法を含む。
【0192】
[0221] 条項32は、第1のソフトウェアスレッドに関連付けられたストアがコミットされたことに応じて、第1のメモリロケーションへの更新された第1のデータの保留中のストア動作を示すようにトランザクション追跡スコアボードのエントリを更新することを更に含み、エントリが、第1のメモリロケーション及び第1のソフトウェアスレッドの第1の一貫性ドメイン識別子を示すように更新される、条項31に記載のコンピュータ実装方法を含む。
【0193】
[0222] 条項33は、第1のメモリロケーションへの更新された第1のデータの記憶が完了したことを示す肯定応答を受信することと、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新することと、を更に含む、条項32に記載のコンピュータ実装方法を含む。
【0194】
[0223] 条項34は、第2のメモリロケーションに対応するデータがキャッシュ内で利用可能でなく、キャッシュが満杯であるとき、第2のメモリロケーションを示す第2のソフトウェアスレッドのメモリアクセス命令を受信したことに応じて、キャッシュからの更新された第1のデータの追い出しを開始することと、第2のメモリロケーションからキャッシュの第1の部分に第2のデータをロードすることと、を更に含む、条項31から条項33のいずれかに記載のコンピュータ実装方法を含む。
【0195】
[0224] 条項35は、更新された第1のデータの追い出しを開始することが、第1のメモリロケーションに対応する更新された第1のデータの保留中の追い出しを示すようにトランザクション追跡スコアボードのエントリを更新することを含む、条項34のコンピュータ実装方法を含む。
【0196】
[0225] 条項36は、第1のメモリロケーションへの更新された第1のデータの記憶が完了したことを示す肯定応答を受信することと、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新することと、を更に含む、条項35に記載のコンピュータ実装方法を含む。
【0197】
[0226] 条項37は、プロセッサが、第2の一貫性ドメイン識別子を有するキャッシュ動作が、キャッシュの第1の部分に記憶された更新された第1のデータに対応する第1のメモリロケーションに関連付けられていると判定したことに応じて、キャッシュからの更新された第1のデータの追い出しを開始し、キャッシュの第1の部分が利用可能であることを示すようにキャッシュを更新する、ように構成されている、条項31から条項36のいずれかに記載のコンピュータ実装方法を含む。
【0198】
[0227] 条項38は、更新された第1のデータの追い出しを開始することが、更新された第1のデータの保留中の追い出しを示すように、かつ第2の一貫性ドメイン識別子に関連付けられた保留中のストア動作を示すようにトランザクション追跡スコアボードのエントリを更新することを含む、条項37に記載のコンピュータ実装方法を含む。
【0199】
[0228] 条項39は、第1のメモリロケーションへの更新された第1のデータの記憶が完了したことを示す肯定応答を受信することと、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新することと、を更に含む、条項38に記載のコンピュータ実装方法を含む。
【0200】
[0229] 条項40は、キャッシュ動作が第2のメモリロケーションに関連付けられており、第2のメモリロケーションに関連付けられた有効なデータがキャッシュに記憶されていないと判定したことに応じて、キャッシュ動作の第2の一貫性ドメイン識別子を、第2のメモリロケーションに関連付けられた任意の保留中の追い出しに割り当てることを更に含む、条項24から条項39のいずれかに記載のコンピュータ実装方法を含む。
【0201】
[0230] 条項41は、キャッシュ動作が第2のメモリロケーションに関連付けられていること、第2のメモリロケーションに関連付けられた有効なデータがキャッシュに記憶されていないこと、及びトランザクション追跡スコアボードのエントリが、第2のメモリロケーションに関連付けられた保留中の追い出しに対応することを判定したことに応じて、キャッシュ動作の第2の一貫性ドメイン識別子を示すようにトランザクション追跡スコアボードのエントリを更新すること、を更に含む、条項24から条項40のいずれかに記載のコンピュータ実装方法を含む。
【0202】
[0231] 条項42は、トランザクション追跡スコアボードのエントリに関連付けられたストアが完了したことを示す肯定応答を受信することと、肯定応答を受信したことに応じて、トランザクション追跡スコアボードのエントリが無効であることを示すようにトランザクション追跡スコアボードを更新することと、を更に含む、条項41に記載のコンピュータ実装方法を含む。
【0203】
[0232] 条項43は、第1のソフトウェアスレッドからメモリアクセス命令を受信することを更に含み、第1のソフトウェアスレッドが、第1の容量ドメイン識別子を割り当てられており、動作を制御することが、第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントに基づいてメモリアクセス命令を選択的に有効化することを含む、条項24から条項42のいずれかに記載のコンピュータ実装方法を含む。
【0204】
[0233] 条項44は、保留中のメモリアクセス命令のカウントが、第1の容量ドメイン識別子に対応する閾値カウント未満であると判定したことに基づいて、メモリアクセス命令に関連付けられたメモリアクセスを開始することと、第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントを増分することと、を更に含む、条項43に記載のコンピュータ実装方法を含む。
【0205】
[0234] 条項45は、メモリアクセスが完了したことを示す肯定応答を受信することと、肯定応答を受信したことに応じて、第1の容量ドメイン識別子に関連付けられた保留中のメモリアクセス命令のカウントを減分することと、を更に含む、条項44に記載のコンピュータ実装方法を含む。
【0206】
[0235] 条項46は、第1のドメイン識別子が、第1のソフトウェアスレッドに関連付けられた通信タイプに少なくとも部分的に基づいて第1のソフトウェアスレッドに割り当てられており、通信タイプが、セルラーモデムトラフィック又はワイヤレスローカルエリアネットワーク(WLAN)トラフィックを含む、条項24から条項45のいずれかに記載のコンピュータ実装方法を含む。
【0207】
[0236] 条項47によれば、デバイスは、命令を記憶するように構成されているメモリと、条項24から条項46のいずれかに記載の方法を実行する命令を実行するように構成されているプロセッサと、を含む。
【0208】
[0237] 条項48によれば、非一時的コンピュータ可読媒体は命令を記憶し、命令は、プロセッサによって実行されたとき、プロセッサに、条項24から条項46のいずれかに記載の方法を実行させる。
【0209】
[0238] 条項49によれば、装置は、条項24から条項46のいずれかに記載の方法を行うための手段を含む。
【0210】
[0239] 条項50によれば、非一時的コンピュータ可読媒体は命令を記憶し、命令は、プロセッサによって実行されたとき、プロセッサに、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てさせ、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御させる。
【0211】
[0240] 条項51は、命令が、プロセッサによって実行されたとき、プロセッサに、第1のソフトウェアスレッドの同期命令を受信させ、第1のソフトウェアスレッドが、第1の一貫性ドメイン識別子を割り当てられており、動作を制御することが、同期命令を受信したことに応じて、第1の一貫性ドメイン識別子に関連付けられた任意の後続のデータアクセス命令を実行する前に、第1の一貫性ドメイン識別子に関連付けられた任意の保留中のストア動作を完了することを含む、条項50に記載の非一時的コンピュータ可読媒体を含む。
【0212】
[0241] 条項52によれば、装置は、複数のソフトウェアスレッドの各々に別個のドメイン識別子を割り当てるための手段と、ドメイン識別子に関連付けられたメモリトランザクションの数に基づいてプロセッサの1つ又は複数の構成要素の動作を制御するための手段と、を含む。
【0213】
[0242] 条項53は、割り当てるための手段及び制御するための手段が、スマートスピーカー、スピーカーバー、ディスプレイデバイス、テレビジョン、ゲームコンソール、音楽プレーヤ、カメラ、ナビゲーションデバイス、ビークル、ヘッドセット、拡張現実ヘッドセット、複合現実ヘッドセット、仮想現実ヘッドセット、航空ビークル、ホームオートメーションシステム、音声起動型デバイス、ワイヤレススピーカー及び音声起動型デバイス、コンピューティングデバイス、通信デバイス、モノのインターネット(IoT)デバイス、仮想現実(VR)デバイス、基地局、又はモバイルデバイスのうちの少なくとも1つに組み込まれている、条項52に記載の装置を含む。
【0214】
[0243] 当業者には、本明細書で開示する実装形態に関して説明する様々な例示的な論理ブロック、構成、モジュール、回路、及びアルゴリズムステップが、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、又はその両方の組合せとして実装され得ることが更に理解されよう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、及びステップについて、それらの機能に関して全般的に上記で説明した。そのような機能がハードウェアとして実装されるか又はプロセッサ実行可能命令として実装されるかは、特定の適用例及び全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができ、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【0215】
[0244] 本明細書で開示する実装形態に関して説明する方法又はアルゴリズムのステップは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、又はそれら2つの組合せにおいて具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(random access memory、RAM)、フラッシュメモリ、読取り専用メモリ(read-only memory、ROM)、プログラマブル読取り専用メモリ(programmable read-only memory、PROM)、消去可能プログラマブル読取り専用メモリ(erasable programmable read-only memory、EPROM)、電気的消去可能プログラマブル読取り専用メモリ(electrically erasable programmable read-only memory、EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(compact disc read-only memory、CD-ROM)、又は当技術分野で知られている任意の他の形態の非一時的記憶媒体内に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体化され得る。プロセッサ及び記憶媒体は、特定用途向け集積回路(ASIC)内に常駐し得る。ASICは、コンピューティングデバイス又はユーザ端末内に常駐し得る。代替として、プロセッサ及び記憶媒体は、コンピューティングデバイス又はユーザ端末内に個別の構成要素として常駐し得る。
【0216】
[0245] 開示した態様の前述の説明は、開示した態様を当業者が作成又は使用することを可能にするために提供される。これらの態様の様々な修正は当業者には容易に明らかになり、本明細書で定義した原理は、本開示の範囲から逸脱することなく、他の態様に適用され得る。したがって、本開示は、本明細書で示される態様に限定されることを意図するものではなく、以下の特許請求の範囲によって定義される原理及び新規の特徴に一致する、できる限り最も広い範囲を与えられるべきである。
【国際調査報告】