(57)【要約】  物理アドレスを用いる非割当てメモリアクセス命令を実行するためのシステムおよび方法。システムは、プロセッサと、1つまたは複数のレベルのキャッシュと、メモリと、変換ルックアサイドバッファ(TLB)と、プロセッサによるメモリアクセスおよび関連する物理アドレスを指定するメモリアクセス命令とを含む。実行論理は、ミスが遭遇され得る1つまたは複数の中間レベルのキャッシュの割当てを回避しながら、メモリアクセス命令のためのTLBをバイパスし、物理アドレスを用いてメモリアクセスを実行するように構成される。
2015503805.tif 000002
【特許請求の範囲】
【請求項１】
メモリにアクセスするための方法であって、
前記メモリアクセスに対する物理アドレスを指定するステップと、
仮想から物理へのアドレス変換をバイパスするステップと、
前記物理アドレスを使用して前記メモリアクセスを実行するステップとを含む、方法。
【請求項２】
前記メモリアクセスがプロセッサによって開始されるロード要求であり、
前記プロセッサと、前記ロード要求の前記物理アドレスに関連するデータに対する前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースするステップと、
前記ロード要求がミスに遭遇する任意の中間キャッシュレベルの状態を変更することなく、前記データが最初に発見された前記キャッシュレベルまたはメモリから前記プロセッサに直接前記データを返すステップとをさらに含む、請求項1に記載の方法。
【請求項３】
前記ロード要求がミスに遭遇する前記中間キャッシュレベルにおいて前記データの割当てを回避するステップをさらに含む、請求項2に記載の方法。
【請求項４】
前記物理アドレスに関連するページ属性の参照を回避するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記メモリアクセスがプロセッサによって開始されるストア要求であり、
前記プロセッサと、前記ストア要求の前記物理アドレスに対する前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースするステップと、
前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの前記状態を変更することなく、前記物理アドレスが最初に発見された前記キャッシュレベルまたはメモリに前記プロセッサから直接前記ストア要求に関連する前記データを書き込むステップとをさらに含む、請求項1に記載の方法。
【請求項６】
前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの割当てを回避するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記ストア要求がライトスルー動作として実行され、それにより、前記物理アドレスが第1のキャッシュレベル内で最初に発見された場合、前記方法が、前記第1のキャッシュレベルと前記メモリとの間に存在する任意のキャッシュレベルに前記データを書き込むステップをさらに含む、請求項5に記載の方法。
【請求項８】
前記物理アドレスが、レジスタファイル内のレジスタに対応する、請求項1に記載の方法。
【請求項９】
プロセッサによってメモリにアクセスするためのメモリアクセス命令であって、
前記メモリアクセスに対するアドレスに対応する第1のフィールドと、
アクセスモードに対応する第2のフィールドと、
前記アクセスモードの第1のモードにおいて、物理アドレスとなるように前記第1のフィールド内の前記アドレスを決定し、
仮想から物理へのアドレス変換をバイパスし、
前記物理アドレスを用いて前記メモリアクセスを実行する
ように、実行論理部に指令するように構成されたオペレーションコードを含む第3のフィールドとを備える、メモリアクセス命令。
【請求項１０】
前記オペレーションコードが、
前記アクセスモードの第2のモードにおいて、仮想アドレスとなるように前記第1のフィールド内の前記アドレスを決定し、
物理アドレスを決定するために前記仮想アドレスから、仮想から物理へのアドレス変換を実行し、
前記物理アドレスを用いて前記メモリアクセスを実行する
ように、実行論理部に指令するように構成される、請求項9に記載のメモリアクセス命令。
【請求項１１】
レジスタファイルを備えるプロセッサと、
メモリと、
仮想から物理にアドレスを変換するように構成された変換ルックアサイドバッファ(TLB)と、
メモリアクセス命令がメモリアクセスと、関連する物理アドレスとを指定することに応答して、
前記メモリアクセス命令に対する仮想から物理へのアドレス変換をバイパスし、
前記物理アドレスを用いて前記メモリアクセスを実行する
ように構成された実行論理部とを備える、処理システム。
【請求項１２】
前記メモリアクセスがロードであり、前記実行論理部が、
前記プロセッサと、ロード要求の前記物理アドレスに関連するデータに対する前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースし、
前記ロード要求がミスに遭遇する任意の中間キャッシュレベルの状態を変更することなく、前記データが最初に発見された前記キャッシュレベルまたはメモリから前記レジスタファイル内の前記物理アドレスに対応するレジスタに直接前記データを返すように構成される、請求項11に記載の処理システム。
【請求項１３】
前記実行論理部が、前記ロード要求がミスに遭遇する前記中間キャッシュレベルにおいて前記データの割当てを回避するようにさらに構成される、請求項12に記載の処理システム。
【請求項１４】
前記実行論理部が、前記物理アドレスに関連するページ属性の参照を回避するようにさらに構成される、請求項11に記載の処理システム。
【請求項１５】
前記メモリアクセスがストアであり、前記実行論理部が、
前記プロセッサと、ストア要求の前記物理アドレスに対する前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースし、
前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの前記状態を変更することなく、前記物理アドレスが最初に発見された前記キャッシュレベルまたはメモリに前記プロセッサから直接前記ストア要求に関連する前記データを書き込むように構成される、請求項11に記載の処理システム。
【請求項１６】
前記実行論理部が、前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの割当てを回避するようにさらに構成される、請求項15に記載の処理システム。
【請求項１７】
前記メモリアクセスがライトスルー動作としてさらに指定され、それにより、前記物理アドレスが第1のキャッシュレベル内で最初に発見された場合、前記実行論理部が、前記第1のキャッシュレベルと前記メモリとの間に存在する任意のキャッシュレベルに前記データを書き込むように構成される、請求項15に記載の処理システム。
【請求項１８】
半導体ダイに組み込まれる、請求項11に記載の処理システム。
【請求項１９】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、およびコンピュータからなる群から選択されたデバイスに組み込まれる、請求項11に記載の処理システム。
【請求項２０】
メモリにアクセスするためのシステムであって、
前記メモリアクセスに対する物理アドレスを指定するための手段と、
仮想から物理へのアドレス変換をバイパスするための手段と、
前記物理アドレスを使用して前記メモリアクセスを実行するための手段とを含む、システム。
【請求項２１】
前記メモリアクセスがプロセッサによって開始されるロード要求であり、
前記プロセッサと、前記ロード要求の前記物理アドレスに関連するデータに対する前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースするための手段と、
前記ロード要求がミスに遭遇する任意の中間キャッシュレベルの状態を変更することなく、前記データが最初に発見された前記キャッシュレベルまたはメモリから前記プロセッサに直接前記データを返すための手段とをさらに含む、請求項20に記載のシステム。
【請求項２２】
前記メモリアクセスがプロセッサによって開始されるストア要求であり、
前記プロセッサと、前記ストア要求の前記物理アドレスに対する前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースするための手段と、
前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの前記状態を変更することなく、前記物理アドレスが最初に発見された前記キャッシュレベルまたはメモリに前記プロセッサから直接前記ストア要求に関連する前記データを書き込むための手段とをさらに含む、請求項20に記載のシステム。
【請求項２３】
処理システムによって実行されたときに、メモリにアクセスするための動作を前記処理システムに実行させるコードを含む、非一時的コンピュータ可読記憶媒体であって、
前記メモリアクセスに対する物理アドレスを指定するためのコードと、
仮想から物理へのアドレス変換をバイパスするためのコードと、
前記物理アドレスを使用して前記メモリアクセスを実行するためのコードとを含む、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2012年1月10日に出願された「Non-Allocating Memory Access with Physical Address」と題する米国仮出願第61/584,964号の優先権を主張する。
【０００２】
開示する実施形態は、物理アドレスを使用するメモリアクセス動作を対象とする。より詳細には、例示的な実施形態は、仮想から物理へのアドレス変換をバイパスして1つまたは複数の中間レベルのキャッシュを割り当てることを回避するように設計されたメモリアクセス命令を対象とする。
【背景技術】
【０００３】
当技術分野においてよく知られているように、仮想メモリは仮想アドレスによってアドレス指定され得る。仮想アドレス空間は、従来、連続する仮想メモリアドレスのブロック、すなわち「ページ」に分割される。プログラムは仮想アドレスに関して記述され得るが、プロセッサによるプログラム命令の実行のために、物理アドレスへの変換が必要なことがある。仮想アドレスを対応する物理アドレスにマッピングするために、ページテーブルが採用され得る。メモリ管理ユニット(MMU)は、変換を扱うために、仮想から物理へのアドレスマッピングを保持するページテーブルを参照するために従来から使用されている。連続する仮想アドレスは、連続する物理アドレスに好都合にマッピングされないことがあるので、所望の変換のために、MMUは、いくつかのページテーブルを通って歩くこと(「ページテーブルウォーク」として知られている)が必要であることがある。
【０００４】
MMUは、変換ルックアサイドバッファ(TLB)などのハードウェアを含み得る。TLBは、タグ付きハードウェア参照用テーブルにおいて頻繁にアクセスされるページの変換をキャッシュすることができる。それにより、仮想アドレスがTLB内でヒットする場合、ページテーブルウォークに関連するコストを負担しなくても、対応する物理アドレス変換をTLBから再利用することができる。
【０００５】
MMUはまた、ソフトウェア内でページテーブルウォークを実行するように構成され得る。ソフトウェアページテーブルウォークは、しばしば、ページテーブルエントリ(PTE)の仮想アドレスが知られておらず、したがってPTEが、関連するプロセッサのキャッシュまたはメインメモリのうちの一方に設置されているかどうかも知られていないという制約を受ける。したがって、変換プロセスは、単調で時間がかかることがある。
【０００６】
変換プロセスは、「ハイパーバイザ」または仮想計算機マネージャ(VMM)に関連する追加の欠点に遭遇することがある。VMMは、2つ以上のオペレーティングシステム(「ゲスト」として当技術分野で知られている)がホスト処理システム上で並行して動作する(run)ことを可能にし得る。VMMは、仮想オペレーティングプラットフォームを提供し、ゲストオペレーティングシステムの実行を管理することができる。しかしながら、従来のVMMは、ゲストによってアクセスされるメモリ要素(データ/命令)について、「キャッシュされる」または「キャッシュされない」などのキャッシュ可能性のタイプへの可視性を持たない。したがって、ゲストは、メモリ要素のキャッシュ可能性のタイプを変更することが可能であり、そのことが、VMMに気付かれないことがある。さらに、VMMは、ゲストによって変えられ得る仮想から物理へのアドレスマッピングを追跡することができないことがある。知られているアーキテクチャは、ゲストに特有の仮想から物理へのアドレスの一時マッピングを保持するための機構を採用するが、そのようなマッピング機構は、非常に遅い傾向がある。
【０００７】
追加の欠点は、デバッガに関連することがある。デバッグソフトウェアまたはハードウェアは、時々、デバッグされる処理システム内の特定のアドレスに存在するデータ値を照会するために命令を使用し得る。照会されたデータ値を返すことは、関連するアドレスのキャッシュ可能性のタイプに応じて、キャッシュ画像に影響を及ぼすことがある。その上、ページテーブルウォークまたはTLBアクセスは、デバッガによってトリガされ得、そのことが、処理システムのリソースに影響することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、当技術分野において、処理システムにおける仮想から物理へのアドレス変換に関連する上述の欠点を回避する必要がある。
【課題を解決するための手段】
【０００９】
本発明の例示的な実施形態は、仮想から物理へのアドレス変換をバイパスして1つまたは複数の中間レベルのキャッシュを割り当てることを回避するように設計されたメモリアクセス命令のためのシステムおよび方法を対象とする。
【００１０】
たとえば、例示的な実施形態は、メモリアクセスのために物理アドレスを指定するステップと、仮想から物理へのアドレス変換をバイパスするステップと、物理アドレスを使用してメモリアクセスを実行するステップとを含む、メモリにアクセスするための方法を対象とする。
【００１１】
別の例示的な実施形態は、プロセッサによってメモリにアクセスするためのメモリアクセス命令を対象とし、メモリアクセス命令は、メモリアクセスに対するアドレスに対応する第1のフィールドと、アクセスモードに対応する第2のフィールドと、アクセスモードの第1のモードにおいて、第1のフィールド内のアドレスを物理アドレスとなるように決定し、仮想から物理へのアドレス変換をバイパスし、物理アドレスを用いてメモリアクセスを実行するように、実行論理に指令するように構成されたオペレーションコードを含む第3のフィールドとを備える。オペレーションコードは、アクセスモードの第2のモードにおいて、第1のフィールド内のアドレスを仮想アドレスとなるように決定し、物理アドレスを決定するために仮想アドレスから仮想から物理へのアドレス変換を実行し、物理アドレスを用いてメモリアクセスを実行するように、実行論理に指令するようにさらに構成される。
【００１２】
別の例示的な実施形態は、レジスタファイルを備えるプロセッサと、メモリと、仮想から物理にアドレスを変換するように構成された変換ルックアサイドバッファ(TLB)と、メモリアクセス命令がメモリアクセスと、関連する物理アドレスとを指定することに応答して、メモリアクセス命令に対する仮想から物理へのアドレス変換をバイパスし、物理アドレスを用いてメモリアクセスを実行するように構成された実行論理とを備える処理システムを対象とする。
【００１３】
別の例示的な実施形態は、メモリアクセスのために物理アドレスを指定するための手段と、仮想から物理へのアドレス変換をバイパスするための手段と、物理アドレスを使用してメモリアクセスを実行するための手段とを含む、メモリにアクセスするためのシステムを対象とする。
【００１４】
別の例示的な実施形態は、処理システムによって実行されたときに、メモリにアクセスするための動作を処理システムに実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とし、非一時的コンピュータ可読記憶媒体は、メモリアクセスに対する物理アドレスを指定するためのコードと、仮想から物理へのアドレス変換をバイパスするためのコードと、物理アドレスを使用してメモリアクセスを実行するためのコードとを含む。
【００１５】
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定ではなく、実施形態の例示のためのみに提供される。
【図面の簡単な説明】
【００１６】
【図１】例示的な実施形態による、例示的なメモリアクセス命令を実施するように構成された処理システム100を示す図である。
【図２】ロードを指定する例示的なメモリアクセス命令の論理的な実施態様を示す図である。
【図３】例示的な実施形態による、メモリにアクセスする方法の例示的な動作フローを示す図である。
【図４】例示的な実施形態による、構成されたマルチコアプロセッサを含むワイヤレスデバイスのブロック図である。
【発明を実施するための形態】
【００１７】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様が開示される。本発明の範囲から逸脱することなく、代替の実施形態が考案され得る。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に記載されないか、または省略される。
【００１８】
「例示的な」という言葉は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。「例示的な」として本明細書で説明される任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。
【００１９】
本明細書で使用される用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定するものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、本明細書で使用される「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことを理解されたい。
【００２０】
さらに、多くの実施形態が、たとえばコンピューティングデバイスの要素によって実行されるべき、一連の動作に関して説明される。本明細書で説明される様々な動作は、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいは両方の組合せによって実行され得ることを認識されよう。加えて、本明細書で説明されるこれらの一連の動作は、実行時に、関連するプロセッサに本明細書で説明される機能を実行させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なされ得る。したがって、本発明の様々な態様は、請求する主題の範囲内にすべて入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明される実施形態ごとに、任意のそのような実施形態の対応する形式は、本明細書では、たとえば、説明されるアクションを実行する「ように構成された論理」として説明されることがある。
【００２１】
例示的な実施形態は、仮想的にアドレス指定されたメモリ空間を備える処理システムに関する。実施形態は、仮想アドレスの代わりに物理アドレスを指定する命令および方法を含み得る。例示的なメモリアクセス命令は、ロードまたはストアであり得る。詳細に説明するように、例示的なメモリアクセス命令は、ソフトウェアページテーブルウォークを簡単にし、VMM機能を改善し、デバッガをより容易にし得る。
【００２２】
次に図1を参照すると、例示的な処理システム100が示される。処理システム100は、CPUまたはプロセッサコアであってよいプロセッサ102を備え得る。プロセッサ102は、1つまたは複数のスレッド、1つまたは複数のレジスタファイル(レジスタファイル104としてまとめて示す)、および当技術分野でよく知られている他の構成要素をサポートし得る1つまたは複数の実行パイプライン(図示せず)を備え得る。プロセッサ102は、I-キャッシュ108およびD-キャッシュ110などのローカル(またはL1)キャッシュ、ならびにL2キャッシュなど、1つまたは複数のより高いレベルのキャッシュ(明確には示さず)に結合され得る。キャッシュは、最終的に、メモリ112などのメインメモリと通信することができる。プロセッサ102は、キャッシュまたはメモリ112上でメモリアクセス動作(ロード/ストア)を実行するために、仮想から物理へのアドレスの変換を得るためにMMU 106と情報交換し得る。MMU 106は、ページテーブルウォークを実行するために、TLB(図示せず)と追加のハードウェア/ソフトウェアとを含み得る。仮想計算機マネージャVMM 114は、プロセッサ102と通信しているように示される。VMM 114は、処理システム100上で動作するために、1つまたは複数のゲスト116をサポートし得る。処理システム100の図示された構成は例示のためだけであり、開示する実施形態の範囲を逸脱することなく、当業者は、処理システム100に対して好適な変更ならびに追加の構成要素および接続を認識するであろう。
【００２３】
引き続き図1を参照しながら、例示的なメモリアクセス命令120が次に説明される。命令120は、図1において、命令を実行中に形成され得る通信経路を表す破線で示される。命令120の実施態様が、処理システム100の特定の構成に適合するように好適に変更され得ることは、当業者には認識されよう。さらに、本明細書において、明確には説明されていない「実行論理」について参照がなされるが、例示的な実施形態による、処理システム100における命令120の実行に関与する様々な動作を実行するために利用される適切な論理ブロックおよびハードウェアモジュールを全体的に備えていることを理解されたい。当業者は、そのような実行論理に対する好適な実施態様を認識するであろう。
【００２４】
例示的な一実施形態では、命令120は、ロードに対して、従来技術で知られている仮想アドレスではなく物理アドレスを直接指定し得る、ロード命令である。ロードに対して物理アドレスを指定することによって、命令120は、仮想から物理へのアドレス変換の必要性を回避し、したがって、命令120の実行は、MMU 106にアクセスすることを回避し得る(図1参照)。したがって、命令120の実行は、ロードに対する物理アドレスを使用して、I-キャッシュ108およびD-キャッシュ110などのキャッシュを直接照会することによって進むことができる。
【００２５】
1つのシナリオでは、ロードに対する物理アドレスは、キャッシュのうちの1つの中でヒットし得る。たとえば、命令120の実行は、最初にローカルキャッシュを照会し、ミスがあれば、実行は次のレベルのキャッシュに進み、ヒットがあるまでそのように進むことができる。どのキャッシュレベルがヒットを生成するかにかかわらず、ロードに対する物理アドレスに対応するデータ値は、ヒットするキャッシュから引き出され、レジスタファイル104に直接送達され得る。
【００２６】
ロードに対する物理アドレスがいずれのキャッシュにおいてもヒットしないシナリオでは、対応するデータ値は、メインメモリ112からフェッチされ得る。しかしながら、これは、キャッシュされないロードまたは非割当てロードとして扱われる。言い換えれば、キャッシュは、ミスに続くデータ値によって更新されることない。処理システム100上でデバッグ動作を実行するデバッガ(図示せず)の一例では、命令120は、デバッガによって、物理アドレスに対するロード要求に続いて生成され得る。上記の例示的な命令120の実行は、命令120の非割当ての性質によって、キャッシュ画像がデバッガの要求によって乱されることがないままであることが確認され得る。従来の実施態様と比較して、処理システム100は、したがって、キャッシュ画像に影響を及ぼすデバッガによる正常動作の途絶を免れたままであり得る。
【００２７】
別の例示的な実施形態では、命令120は、ストアに対して、従来技術で知られている仮想アドレスではなく物理アドレスを直接指定し得る、ストア命令であってよい。上記で説明したロード命令の動作と同様に、ストア命令は、最初にローカルキャッシュを照会し、ヒットがある場合にストアが実行され得る。命令120のオペレーションコードによって、少なくとも2種類のストア動作、ライトスルーおよびライトバック、が指定され得る。ライトスルーのストアでは、I-キャッシュ108およびD-キャッシュ110などのキャッシュが物理アドレスを用いて照会され、ヒットした場合に、次のより高いレベルのキャッシュ階層、最終的にはメインメモリであるメモリ112が、同様に照会されて更新され得る。一方、ライトバックのストアに対して、ヒットした場合に、ストア動作は、より高いレベルのキャッシュ階層に進むことなく終了する。
【００２８】
ライトバックとライトスルーの両ストアに対して、ミスが遭遇される(encountered)場合、ストアは、物理アドレスを用いて次のレベルのキャッシュ、したがって必要ならばメインメモリ112を照会するために進むことができる。しかしながら、ミスは、ロードと同様に、例示的な実施形態では、キャッシュ割当てを伴うことはない。図2を参照しながら詳細に説明するように、そのような非割当てストア動作に対していくつかの実施形態では、専用のバッファまたはデータアレイが含まれることがある。
【００２９】
次に図2を参照すると、命令120の例示的なハードウェア実施態様が示される。構成要素アレイ、すなわち、データ値を記憶するデータアレイ210、データアレイ210に記憶された対応するデータの物理アドレスの選択されたビットを含むタグアレイ202、対応するセットに対して関連する状態情報を記憶する状態アレイ204、および対応する割当てに対して取り替えられるべき方法を必要とするロード動作またはストア動作を割り当てるために関連する方法情報を記憶する取り替えポインタアレイ206を備えるために、D-キャッシュ110など、拡張された概念のキャッシュが示される。命令120の実行に対してアクセスされないが、DTLB 214は、頻繁にアクセスされるアドレスに対する仮想から物理へのアドレス変換を保持し得る。DTLB 214は、たとえば、MMU 106内に含まれてよい。
【００３０】
第1に、ロードに関して、例示的なロードに対する命令120がプロセッサ102による処理のために受信されるとき、ロードに対する命令120内に指定される物理アドレスフィールドが引き出される。物理アドレスフィールドが、ロードアドレスに対するタグに関連するビットに対応するPA[タグビット]208a、ロードアドレスに関連するセットに対応するPA[セットビット]208b、およびD-キャッシュ110内でヒットするロードアドレスに対するデータアレイ210内のロケーションに対応するPA[データアレイビット]208cのフィールドに対してパースされる。一実施態様では、PA[データアレイビット]208cは、PA[セットビット]208bと、ロードアドレスのロケーションを指定するためのラインオフセット値との組合せによって形成され得る。たとえば、データアレイ210は、キャッシュラインブロックを備え得る。ラインオフセット値は、ロードに対する物理アドレスと、バイト、ハーフワード、ワード、ダブルワードなど、ロードのサイズとに基づいて、キャッシュラインブロック内に設置されたデータの所望のバイトを指定するために使用され得る。
【００３１】
命令120の実行はまた、DTLB 214から導出され得るビットに対してPA[タグビット]208aを選択器216に直接選択させ、同様にDTLB 214による仮想から物理へのアドレス変換を抑制し得る、コマンドSelect PA Directly 216をアサートすることを含み得る。タグアレイ202および状態アレイ204は、PA[セットビット]208bを使用してアクセスされ得、次いで、比較器218は、タグビットPA[タグビット]208aがタグアレイ202内に存在するかどうか、およびそれらの状態情報が適切(たとえば、「有効」)であるかどうかを比較し得る。比較器218がヒット/ミスライン220上でヒットを生成し、ロードアドレスが存在しかつ有効であることを確認した場合、PA[データアレイビット]208cおよび取り替えポインタアレイ206から導出された関連する方法情報が、命令120によって指定される例示的なロード命令に対する所望のデータ値を引き出すために、データアレイ210にアクセスするために共同して使用され得る。次いで、所望のデータ値がリードデータライン224から読み出され、たとえば、プロセッサ102のレジスタファイル104内に直接転送され得る。
【００３２】
ロードを指定する命令120の例示的な実施形態によってD-キャッシュ110からのデータを照会して引き出す上記の実施態様では、D-キャッシュ110などのキャッシュ画像は、変更されないままであり得る。言い換えれば、ヒットが存在したかまたはミスが存在したかにかかわらず、タグアレイ202、状態アレイ204、取り替えポインタアレイ206、およびデータアレイ210は変更されない。
【００３３】
次にストアを参照すると、ライトスルーとライトバックの両ストアに対して、動作は同様である。たとえば、命令120が物理アドレスへのデータのストアを指定する場合、一実施態様では、ローカルキャッシュのD-キャッシュ110が、ライトスルーとライトバックの両ストアに対して照会され、物理アドレスが発見された場合、図2に示すデータアレイ210内に含まれ得る専用のアレイのライトデータアレイ222に書き込まれ得る。ライトスルーのストアの場合、動作は、上記で説明したように、次のより高いレベルのキャッシュ(図示せず)を照会し更新することに進むことができ、一方、ライトバックの場合、動作は、ライトデータアレイ222に書き込むことによって終了することができる。
【００３４】
ライトスルーとライトバックの両ストアに対して、物理アドレスが発見されない場合、すなわちミスがある場合、D-キャッシュ110のアレイに対する更新はいずれもスキップされ、データは、メモリ112内の物理アドレスロケーションに直接書き込まれ得る。言い換えれば、ストアは、非割当てストアとして扱われ得る。命令120によって指定されるそのような例示的なストア動作は、たとえば、デバッガによってデバッグ動作において使用され得る。
【００３５】
D-キャッシュ110に関連するデータに対して命令120によって指定されるロード/ストア命令と同様に、例示的な実施形態はまた、I-キャッシュ108に関連する命令値に対するロード/ストア命令を含み得る。たとえば、上記で説明した命令120と同様に実行され得る物理アドレスフェッチ命令が、指定され得る。物理アドレスフェッチ命令は、非割当て方式で物理アドレスに対応する命令値を特定するために使用され得る。したがって、I-キャッシュ108が、最初に照会され得る。ヒットが遭遇される場合、命令内で指定される物理アドレスから命令値をフェッチすることによって、所望のフェッチ動作が進むことができる。ミスが遭遇される場合、I-キャッシュ108の割当てはスキップされ、実行は、任意の次のレベルのキャッシュ、および必要ならば最終的にメインメモリ112を照会するために進むことができる。
【００３６】
上記の説明は、全体的に、命令120の各例に対してMMU 106/DTLB 214をバイパスすることを対象としてきたが、いくつかの実施形態では、命令120の変形態が、追加または代替として含まれ得る。一般性を喪失することなく、命令120の変形態が、命令120'(図示せず)として指定されてよく、命令120'は、MMUまたはTLBのバイパスを制御するための特定のモードビットを含み得る。たとえば、命令120'のモードビットによって定義される第1のモードでは、命令120'内で指定されるアドレス値は仮想アドレスとして扱われ、MMU 106は、仮想から物理へのアドレス変換に対してアクセスされ得る。一方、命令120'のモードビットによって定義される第2のモードでは、アドレス値は物理アドレスとして扱われ、MMU 106はバイパスされ得る。
【００３７】
したがって、いくつかの実施形態では、命令120'は、以下のフィールドを備え得る。命令120'の第1のフィールドは、上記で説明したモードに基づいて仮想アドレスまたは物理アドレスとなるように決定され得るメモリアクセスに対するアドレスに対応することができる。命令120'の第2のフィールドは、上記の第1のモードか第2のモードかを選択するためのアクセスモードに対応し、命令120'の第3のフィールドは、命令120'のオペレーションコード(または当業界で知られているオペコード(OpCode))を含み得る。アクセスモードが第1のモードに設定される場合、実行論理は、物理アドレスとなるように第1のフィールド内のアドレスを決定し、MMU 106/DTLB 214における仮想から物理へのアドレス変換をバイパスし、物理アドレスを用いてメモリアクセスを実行することができる。一方、アクセスモードが第2に設定され、実行論理は、仮想アドレスとなるように第1のフィールド内のアドレスを決定し、MMU 106/DTLB 214を起動することによって物理アドレスを決定するために仮想アドレスから、任意の必要な仮想から物理へのアドレス変換を実行し、物理アドレスを用いてメモリアクセスを実行するように進むことができる。
【００３８】
実施形態は、本明細書で開示するプロセス、機能および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図3に示すように、実施形態は、メモリアクセスに対する物理アドレスを指定するステップ(たとえば、命令120はビット208a、208b、および208cを含む物理アドレスを指定する)-ブロック302と、アドレス変換をバイパスするステップ(たとえば、DTLB 214をバイパスする)-ブロック304と、物理アドレスを使用してメモリアクセスを実行するステップ(たとえば、選択器216は、DTLB 214からの仮想から物理へのアドレス変換の代わりに、物理アドレスビット208a、208b、および208cを選択するように構成される)-ブロック306とを含むメモリ(たとえば、D-キャッシュ210)にアクセスするための方法を含み得る。
【００３９】
情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００４０】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、またはソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００４１】
本明細書で開示された実施形態と関連して説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、かつ記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。
【００４２】
図4を参照すると、例示的な実施形態に従って構成されたマルチコアプロセッサを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図が示され、全体的に400と表される。デバイス400は、デジタル信号プロセッサ(DSP)464を含む。処理システム100と同様に、DSP 464は、図1のMMU 106と、レジスタファイル104を備えるプロセッサ102と、I-キャッシュ108と、D-キャッシュ110とを含み、それらは図示のメモリ432と結合され得る。デバイス400は、前述の実施形態で説明したように、仮想から物理へのアドレス変換を実行することなく、命令120と120'とを実行するように構成され得る。図4は、DSP464およびディスプレイ428に結合された、ディスプレイコントローラ426も示している。コーダ/デコーダ(CODEC)434(たとえば、オーディオおよび/または音声CODEC)は、DSP464に結合され得る。ワイヤレスコントローラ440(モデムを含むことができる)などの他の構成要素も示されている。スピーカ436およびマイクロフォン438は、CODEC434に結合され得る。図4は、ワイヤレスコントローラ440が、ワイヤレスアンテナ442に結合され得ることも示している。特定の一実施形態では、DSP464、ディスプレイコントローラ426、メモリ432、CODEC434、およびワイヤレスコントローラ440は、システムインパッケージまたはシステムオンチップデバイス422内に含まれる。
【００４３】
ある特定の実施形態では、入力デバイス430および電源444が、システムオンチップデバイス422に結合される。さらに、ある特定の実施形態では、図4に示すように、ディスプレイ428、入力デバイス430、スピーカ436、マイクロフォン438、ワイヤレスアンテナ442、および電源444は、システムオンチップデバイス422の外部にある。ただし、ディスプレイ428、入力デバイス430、スピーカ436、マイクロフォン438、ワイヤレスアンテナ442、および電源444の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス422の構成要素に結合され得る。
【００４４】
図4はワイヤレス通信デバイスを示しているが、DSP464およびメモリ432は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、またはコンピュータ内に組み込むこともできることに留意されたい。プロセッサ(たとえばDSP464)も、そのようなデバイス内に組み込むことができる。
【００４５】
したがって、本発明の一実施形態は、物理アドレスを使用してメモリにアクセスし、仮想から物理へのアドレス変換のために構成されたMMUをバイパスするための方法を具現するコンピュータ可読媒体を含み得る。したがって、本発明は図示の例に限定されず、本明細書で説明した機能を実行するためのいかなる手段も、本発明の実施形態中に含まれる。
【００４６】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明された本発明の実施形態による方法クレームの機能、ステップおよび/または動作は、特定の順序で実行されなくてもよい。さらに、本発明の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００４７】
100  処理システム
102  プロセッサ
104  レジスタファイル
106  メモリ管理ユニット(MMU)
108  I-キャッシュ
110  D-キャッシュ
112  メインメモリ
114  仮想計算機マネージャ(VMM)
116  ゲスト
120  メモリアクセス命令
202  タグアレイ
204  状態アレイ
206  置き換えポインタアレイ
208a  PA[タグビット]
208b  PA[セットビット]
208c  PA[データアレイビット]
210  データアレイ
214  DTLB
216  コマンドSelect PA Directly
218  比較器
220  ヒット/ミスライン
222  ライトデータアレイ
224  リードデータライン
400  マルチコアプロセッサを含むワイヤレスデバイスのブロック図
422  システムインパッケージまたはシステムオンチップデバイス
426  ディスプレイコントローラ
428  ディスプレイ
430  入力デバイス
432  メモリ
434  コーダ/デコーダ(CODEC)
436  スピーカ
438  マイクロフォン
440  ワイヤレスコントローラ
442  ワイヤレスアンテナ
444  電源
464  デジタル信号プロセッサ(DSP)
【図１】
2015503805.tif 000003
【図２】
2015503805.tif 000004
【図３】
2015503805.tif 000005
【図４】
2015503805.tif 000006
【手続補正書】
【提出日】平成26年2月27日(2014.2.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリにアクセスするための方法であって、
プロセッサによってメモリアクセス要求を開始するステップと、
前記メモリアクセスに対する物理アドレスを指定するステップと、
仮想から物理へのアドレス変換をバイパスするステップと、
前記物理アドレスに基づいて前記プロセッサと前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースするステップと、
ミスが遭遇される任意の中間キャッシュレベルのキャッシュ状態を変更することなく、前記物理アドレスを使用してヒットが最初に遭遇された前記キャッシュレベルまたはメモリから前記メモリアクセスを実行するステップとを含む、方法。
【請求項２】
前記メモリアクセスがロード要求であり、
前記メモリアクセスを実行するステップが、前記ヒットが最初に遭遇された前記キャッシュレベルまたはメモリから前記プロセッサに直接前記物理アドレスに関連するデータを返すステップを含む、請求項1に記載の方法。
【請求項３】
前記ロード要求がミスに遭遇する前記中間キャッシュレベルにおいて前記データの割当てを回避するステップをさらに含む、請求項2に記載の方法。
【請求項４】
前記物理アドレスに関連するページ属性の参照を回避するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記メモリアクセスがストア要求であり、
前記メモリアクセスを実行するステップが、前記ヒットが最初に遭遇された前記キャッシュレベルまたはメモリに前記プロセッサから直接前記ストア要求に関連する前記データを書き込むステップを含む、請求項1に記載の方法。
【請求項６】
前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの割当てを回避するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記ストア要求がライトスルー動作として実行され、それにより、前記物理アドレスが第1のキャッシュレベル内で最初に発見された場合、前記方法が、前記第1のキャッシュレベルと前記メモリとの間に存在する任意のキャッシュレベルに前記データを書き込むステップをさらに含む、請求項5に記載の方法。
【請求項８】
前記物理アドレスが、レジスタファイル内のレジスタに対応する、請求項1に記載の方法。
【請求項９】
前記ヒットがキャッシュにおいて最初に遭遇された場合、前記ヒットが最初に遭遇された前記キャッシュのキャッシュ画像を変えるステップを回避する、請求項1に記載の方法。
【請求項１０】
前記キャッシュ画像が、タグアレイ、状態アレイ、取り替えポインタアレイ、またはデータアレイのうちの1つまたは複数に基づく、請求項9に記載の方法。
【請求項１１】
レジスタファイルを備えるプロセッサと、
メモリと、
仮想から物理にアドレスを変換するように構成された変換ルックアサイドバッファ(TLB)と、
関連する物理アドレスを指定するメモリアクセス命令が前記プロセッサによって開始されることに応答して、
前記メモリアクセス命令に対する仮想から物理へのアドレス変換をバイパスし、
前記物理アドレスに基づいて前記プロセッサと前記メモリとの間で構成される1つまたは複数のレベルのキャッシュをトラバースし、
ミスが遭遇される任意の中間キャッシュレベルのキャッシュ状態を変更することなく、前記物理アドレスを用いてヒットが最初に遭遇された前記キャッシュレベルまたはメモリから前記メモリアクセスを実行する
ように構成された実行論理部とを備える、処理システム。
【請求項１２】
前記メモリアクセス命令がロード要求であり、前記実行論理部が、
前記ヒットが最初に遭遇された前記キャッシュレベルまたはメモリから前記レジスタファイル内の前記物理アドレスに対応するレジスタに直接前記物理アドレスに関連する前記データを返すように構成される、請求項11に記載の処理システム。
【請求項１３】
前記実行論理部が、前記ロード要求がミスに遭遇する前記中間キャッシュレベルにおいて前記データの割当てを回避するようにさらに構成される、請求項12に記載の処理システム。
【請求項１４】
前記実行論理部が、前記物理アドレスに関連するページ属性の参照を回避するようにさらに構成される、請求項11に記載の処理システム。
【請求項１５】
前記メモリアクセス命令がストア要求であり、前記実行論理部が、
前記ヒットが最初に遭遇された前記キャッシュレベルまたはメモリに前記プロセッサから直接前記ストア要求に関連する前記データを書き込むように構成される、請求項11に記載の処理システム。
【請求項１６】
前記実行論理部が、前記ストア要求がミスに遭遇する任意の中間キャッシュレベルの割当てを回避するようにさらに構成される、請求項15に記載の処理システム。
【請求項１７】
前記メモリアクセスがライトスルー動作としてさらに指定され、それにより、前記物理アドレスが第1のキャッシュレベル内で最初に発見された場合、前記実行論理部が、前記第1のキャッシュレベルと前記メモリとの間に存在する任意のキャッシュレベルに前記データを書き込むように構成される、請求項15に記載の処理システム。
【請求項１８】
半導体ダイに組み込まれる、請求項11に記載の処理システム。
【請求項１９】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、およびコンピュータからなる群から選択されたデバイスに組み込まれる、請求項11に記載の処理システム。
【請求項２０】
請求項1から10のいずれか一項に記載の方法を実行するための手段を備える装置。
【請求項２１】
請求項1から10のいずれか一項に記載の方法をコンピュータまたはプロセッサに実行させるための少なくとも1つの命令を含む、コンピュータプログラム。
【国際調査報告】
2015503805.tif 000007
2015503805.tif 000008
2015503805.tif 000009