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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

<>
  • 特表-遅延メッセージ処理による電力節約 図1A
  • 特表-遅延メッセージ処理による電力節約 図1B
  • 特表-遅延メッセージ処理による電力節約 図2
  • 特表-遅延メッセージ処理による電力節約 図3
  • 特表-遅延メッセージ処理による電力節約 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-26
(54)【発明の名称】遅延メッセージ処理による電力節約
(51)【国際特許分類】
   G06F 15/173 20060101AFI20240918BHJP
   G06F 12/0806 20160101ALI20240918BHJP
【FI】
G06F15/173 665Z
G06F12/0806 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024516369
(86)(22)【出願日】2022-07-19
(85)【翻訳文提出日】2024-03-27
(86)【国際出願番号】 US2022037636
(87)【国際公開番号】W WO2023048802
(87)【国際公開日】2023-03-30
(31)【優先権主張番号】17/485,186
(32)【優先日】2021-09-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヴィジャシャンカー ヴィスワナサン
【テーマコード(参考)】
5B045
5B205
【Fターム(参考)】
5B045DD12
5B045KK02
5B205KK13
(57)【要約】
システムの電力消費を低減するためのシステム及び方法が開示されている。システムのソースエンジンによって送信されたメッセージを、スリープモードにあるシステムの宛先エンジンのキューにキューイングする技術が説明される。次いで、キューに入れられたメッセージに関連付けられた優先度レベルが判定される。優先度レベルが最大レベルである場合、宛先エンジンがアクティブモードにされる。優先度レベルが中間レベルである場合、中間レベルに関連付けられた時間が経過すると、宛先エンジンがアクティブモードにされる。宛先エンジンがアクティブモードにされると、宛先エンジンは、そのキューに蓄積された全てのメッセージを、それらに関連付けられた優先度レベルによって判定された順序で処理する。
【選択図】図2
【特許請求の範囲】
【請求項1】
システムの電力消費を低減するための方法であって、
前記システムのソースエンジンからのメッセージを宛先エンジンのキューにキューイングすることであって、前記宛先エンジンはスリープモードにある、ことと、
前記メッセージに関連付けられた優先度レベルを判定することと、
前記優先度レベルが最大レベルであることに応じて、前記宛先エンジンをアクティブモードにすることと、を含む、
方法。
【請求項2】
前記優先度レベルが中間レベルにあることに応じて、前記中間レベルに関連付けられた期間が満了すると、前記宛先エンジンをアクティブモードにすることを含む、
請求項1の方法。
【請求項3】
前記宛先エンジンがアクティブモードになった場合に、前記宛先エンジンが、前記キュー内の前記メッセージ及び他のメッセージを、それらに関連付けられた優先度レベルによって判定された順序で処理することを含む、
請求項1の方法。
【請求項4】
前記優先度レベルは、前記メッセージのタイプ、前記ソースエンジンの識別情報、前記宛先エンジンの識別情報、又は、これらの組み合わせのうち少なくとも1つに基づいて判定される、
請求項1の方法。
【請求項5】
前記メッセージは、前記ソースエンジンのキャッシュコントローラによって開始されるプローブである、
請求項1の方法。
【請求項6】
前記メッセージに関連付けられた優先度レベルを判定することは、システムレコードに基づいており、前記システムレコードは、前記システムのエンジンのキャッシュに記憶されているキャッシュラインのステータスに関連付けられた情報を記憶する、
請求項5の方法。
【請求項7】
判定された優先度レベルは、前記宛先エンジンの前記キャッシュが前記キャッシュラインの最も新しいバージョンを保持していることに応じて、最大レベルであると判定される、
請求項6の方法。
【請求項8】
前記メッセージは、前記ソースエンジンのオペレーティングシステムによって開始される構成メッセージである、
請求項1の方法。
【請求項9】
前記メッセージは、前記ソースエンジン及び前記宛先エンジン上で実行されるマルチスレッドアプリケーションによって開始される、
請求項1の方法。
【請求項10】
電力消費を低減するためのシステムであって、
少なくとも1つのプロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、
前記システムのソースエンジンからのメッセージを前記システムの宛先エンジンのキューにキューイングすることであって、前記宛先エンジンはスリープモードにある、ことと、
前記メッセージに関連付けられた優先度レベルを判定することと、
前記優先度レベルが最大レベルであることに応じて、前記宛先エンジンをアクティブモードにすることと、
を前記システムに行わせる、
システム。
【請求項11】
前記命令は、
前記優先度レベルが中間レベルにあることに応じて、前記中間レベルに関連付けられた期間が満了すると、前記宛先エンジンをアクティブモードにすることを前記システムに行わせる、
請求項10のシステム。
【請求項12】
前記命令は、
前記宛先エンジンがアクティブモードになった場合に、前記宛先エンジンが、前記キュー内の前記メッセージ及び他のメッセージを、それらに関連付けられた優先度レベルによって判定された順序で処理することを前記システムに行わせる、
請求項10のシステム。
【請求項13】
前記優先度レベルは、前記メッセージのタイプ、前記ソースエンジンの識別情報、前記宛先エンジンの識別情報、又は、これらの組み合わせのうち少なくとも1つに基づいて判定される、
請求項10のシステム。
【請求項14】
前記メッセージは、前記ソースエンジンのソースキャッシュコントローラによって開始されるプローブである、
請求項10のシステム。
【請求項15】
前記メッセージに関連付けられた優先度レベルを判定することは、システムレコードに基づいており、前記システムレコードは、前記システムのエンジンのキャッシュに記憶されているキャッシュラインのステータスに関連付けられた情報を記憶する、
請求項14のシステム。
【請求項16】
判定された優先度レベルは、前記宛先エンジンの前記キャッシュが前記キャッシュラインの最も新しいバージョンを保持していることに応じて、最大レベルであると判定される、
請求項15のシステム。
【請求項17】
前記メッセージは、前記ソースエンジンのオペレーティングシステムによって開始される構成メッセージである、
請求項10のシステム。
【請求項18】
前記メッセージは、前記ソースエンジン及び前記宛先エンジン上で実行されるマルチスレッドアプリケーションによって開始される、
請求項10のシステム。
【請求項19】
システムの電力消費を低減するための方法を実行するために少なくとも1つのプロセッサによって実行可能な命令を含むコンピュータ可読記憶媒体であって、
前記方法は、
前記システムのソースエンジンからのメッセージを前記システムの宛先エンジンのキューにキューイングすることであって、前記宛先エンジンはスリープモードにある、ことと、
前記メッセージに関連付けられた優先度レベルを判定することと、
前記優先度レベルが最大レベルであることに応じて、前記宛先エンジンをアクティブモードにすることと、を含む、
コンピュータ可読記憶媒体。
【請求項20】
前記メッセージは、前記ソースエンジンのキャッシュコントローラによって開始されるプローブであり、
前記メッセージに関連付けられた優先度レベルを判定することは、システムレコードに基づいており、前記システムレコードは、前記システムのエンジンのキャッシュに記憶されているキャッシュラインのステータスに関連付けられた情報を記憶し、
判定された優先度レベルは、前記宛先エンジンの前記キャッシュが前記キャッシュラインの最も新しいバージョンを保持していることに応じて、最大レベルであると判定される、
請求項19のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月24日に出願された米国特許出願第17/485,186号の利益を主張するものであり、その内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
システムによって消費される電力の量を低減するために、動作状態にないシステムの処理ユニットは、クロックゲーティングされた状態又は保持状態の何れかに保たれる。前者では、動作していない処理ユニットのクロックがオフにされるが、電圧は動作状態と同じに保たれる。後者では、動作していない処理ユニットのクロックがオフにされ、電圧が、ユニットのフリップフロップ及びメモリセル内のデータを保存するのにちょうど十分なレベルまで下げられる。しかしながら、動作状態(アクティブモード)にある処理ユニットは、多くの場合、後者をアクティブモードに戻すことを必要とするスリープモードにあるコンピューティングユニットを具体的にアドレス指定するブロードキャストメッセージ及び他のメッセージを含むメッセージをシステムにわたって送信する。スリープモードにある処理ユニットを覚醒させて、メッセージを処理し、適切な応答を生成することは、電力消費を増加させる。これは、処理ユニットがアウェイク(覚醒)する毎に、スリープモードに戻る前にしばらくの間(すなわち、ヒステリシス間隔)この状態にとどまる場合に特にそうである。低電力消費を維持するために、システムの処理ユニット間のメッセージの分配を効率的に管理する技法が必要とされる。
【0003】
添付の図面と併せて例として与えられる以下の説明を通じて、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
図1A】本開示の1つ以上の特徴を実施することができる例示的なデバイスのブロック図である。
図1B】本開示の1つ以上の特徴を実施することができる、キャッシュアクセス管理を提供する例示的なシステムのブロック図である。
図2】本開示の1つ以上の特徴を実施することができる、電力消費を低減するための例示的なシステムのブロック図である。
図3】本開示の1つ以上の特徴を実施することができる、電力消費を低減するための別の例示的なシステムのブロック図である。
図4】本開示の1つ以上の特徴を実施することができる、システムの電力消費を低減するための例示的な方法のフロー図である。
【発明を実施するための形態】
【0005】
本開示は、メッセージの遅延処理による電力節約のためのシステム及び方法を説明する。処理が遅延され得るメッセージによる処理ユニットのスリープモードの中断を制限するための技術が開示される。これは、メッセージアービトレータによってメッセージの優先度を導出することができるシステム情報を追跡する記録を維持することによって達成することができる。最高の優先度レベルを有すると判定されたメッセージは、そのユニットがアクティブモードにされなければならない場合であっても、それらが送信される処理ユニットによって直ちに処理される。中間優先度レベルを有すると判定されたメッセージは、中間優先度レベルに関連付けられた時間が経過した場合に処理され、その時間に、メッセージが送信される処理ユニットは、スリープモードにある場合に、アクティブモードにされる。最低の優先度レベルを有すると判定されたメッセージは、キューに入れられ、後で、例えば、それらが送信されるユニットがタスクを実行するようにスケジュールされた場合(無関係な理由でアクティブモードにされた場合)に処理される。本明細書で開示される態様は、プローブ(すなわち、キャッシュコントローラ間のメッセージ)と、処理ユニット間の任意の他のメッセージ(例えば、構成メッセージ又はマルチスレッドアプリケーションから発信されたメッセージ)と、の両方に対処する。
【0006】
本明細書で開示される態様は、システムの電力消費を低減するための方法について説明する。本明細書で開示される方法は、システムのソースエンジンからのメッセージを宛先エンジンのキュー内にキューイングすることであって、宛先エンジンがスリープモードにある、ことと、メッセージに関連付けられた優先度レベルを判定することと、優先度レベルが最大レベルであることに応じて、宛先エンジンをアクティブモードにすることと、を含む。本明細書で開示される方法は、優先度レベルが中間レベルにあることに応じて、中間レベルに関連付けられた期間の満了時に、宛先エンジンをアクティブモードにすることを含む。更に、本明細書で開示される方法は、宛先エンジンがアクティブモードにされる場合に、宛先エンジンが、キュー内のメッセージ及び他のメッセージを、それらの関連付けられた優先度レベルによって判定される順序で処理することを含む。
【0007】
また、本明細書で開示される態様は、電力消費を低減するためのシステムについて説明する。本明細書で開示されるシステムは、少なくとも1つのプロセッサと、命令を記憶するメモリと、を備える。命令は、少なくとも1つのプロセッサによって実行されると、本明細書で開示されるシステムに、システムのソースエンジンからのメッセージをシステムの宛先エンジンのキュー内にキューイングすることであって、宛先エンジンはスリープモードにある、ことと、メッセージに関連付けられた優先度レベルを判定することと、優先度レベルが最大レベルであることに応じて、宛先エンジンをアクティブモードにすることと、を行わせる。また、命令は、本明細書で開示されるシステムに、優先度レベルが中間レベルにあることに応じて、中間レベルに関連付けられた期間の満了時に、宛先エンジンをアクティブモードにさせる。更に、命令は、本明細書で開示されるシステムに、宛先エンジンがアクティブモードにされる場合に、宛先エンジンによって、キュー内のメッセージ及び他のメッセージを、それらの関連付けられた優先度レベルによって判定される順序で処理させる。
【0008】
更に、本明細書で開示される態様は、システムの電力消費を低減するための方法を実行するために少なくとも1つのプロセッサによって実行可能な命令を含む非一時的なコンピュータ可読記憶媒体について説明する。方法は、システムのソースエンジンからのメッセージをシステムの宛先エンジンのキュー内にキューイングすることであって、宛先エンジンがスリープモードにある、ことと、メッセージに関連付けられた優先度レベルを判定することと、優先度レベルが最大レベルであることに応じて、宛先エンジンをアクティブモードにすることと、を含む。メッセージが、ソースエンジンのキャッシュコントローラによって開始されるプローブであり、メッセージに関連付けられた優先度レベルを判定することが、システムレコードに基づいており、システムレコードが、システムのエンジンのキャッシュ内に記憶されているキャッシュラインのステータスに関連付けられた情報を記憶し、判定された優先度レベルが、宛先エンジンのキャッシュがキャッシュラインの最も新しいバージョンを保持していることに応じて、最大レベルにあると判定される、という態様が本明細書に開示されている。
【0009】
図1Aは、本開示の1つ以上の特徴を実施することができる例示的なデバイス100Aのブロック図である。デバイス100Aは、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ、又は、任意の他のコンピューティングデバイスとすることができる。デバイス100Aは、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100Aは、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含むことができる。入力ドライバ112の何れも、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、又は、ソフトウェアとして具現化することができる。入力ドライバ112は、例えば、入力デバイス108の動作を制御するために、又は、入力デバイス108からデータを受信するために使用することができる。同様に、出力ドライバ114の何れも、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、又は、ソフトウェアとして具現化することができる。出力ドライバ114は、例えば、出力デバイス110の動作を制御するために、又は、出力デバイス110にデータを提供するために使用することができる。デバイス100Aは、出力を提示するためにリモートディスプレイプロトコルを使用する物理的ディスプレイデバイス又はシミュレートされたデバイスであり得るディスプレイデバイス118を含むことができる。デバイス100Aは、図1Aに示されていない追加の構成要素を含むことができる。
【0010】
様々な代替形態では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、他の専用アクセラレータユニット、及び/又は、それらの組み合わせを含み、それらは、同じダイ上に、又は、1つ以上(CPU、GPU、若しくはアクセラレータ)のプロセッサコア上に位置することができる。メモリ104は、プロセッサ102と同じダイ上に位置してもよいし、プロセッサ102とは別に位置することができる。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。一般的に知られているように、キャッシュは、プロセッサ102上で実行される命令によって頻繁に又は近い将来にアクセスされる可能性が高いとキャッシュマネージャによって判定されたデータを記憶する。キャッシュ120は、階層的に構造化することができる1つ以上のキャッシュを表し、キャッシュ階層サービスの上位のキャッシュは、キャッシュ階層の下位のキャッシュから見落とされ、キャッシュ階層の下位のキャッシュから追い出された(エビクトされた)キャッシュエントリを受信する。
【0011】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、例えば、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワークインターフェース(例えば、IEEE802シグナルの受信のための無線ローカルエリアネットワークカード)であり得る。出力デバイス110は、例えば、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワークインターフェース(例えば、IEEE802シグナルの伝送のための無線ローカルエリアネットワークカード)であり得る。
【0012】
入力ドライバ112及び出力ドライバ114の各々は、入力デバイス108及び出力デバイス110とインターフェースするように構成され得る1つ以上のハードウェア、ソフトウェア及び/又はファームウェア構成要素を含むことができる。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、典型的には、入力デバイス108からプロセッサ102への入力データの転送を制御する。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、典型的には、プロセッサ102から出力デバイス110への出力データの転送を制御する。デバイス100Aは、加速処理デバイス(accelerated processing device、APD)116を、出力ドライバ114の内部(示されるように)又はその外部の何れかに含むことができる。APD116は、プロセッサ102から計算コマンドを受け入れ、それらのコマンドに従ってデータを処理し、処理されたデータを提供するように構成され得る。また、APD116は、プロセッサ102からグラフィックスレンダリングコマンドを受け入れ、それらのコマンドを処理し、ディスプレイデバイス118上にレンダリングされる出力データを提供するように構成され得る。APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含むことができる。様々な代替形態では、APD116によって実行されるものとして説明される機能は、追加的に又は代替的に、例えば、ホストプロセッサ(例えば、プロセッサ102)によって駆動されない同様の能力を有する他のコンピューティングデバイスによって実行される。一態様では、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書に説明される機能を実行するように構成され得る。代替的に、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書に説明される機能を実行することができる。
【0013】
図1Bは、本開示の1つ以上の特徴を実施することができる、キャッシュアクセス管理を提供する例示的なシステムのブロック図である。システム100Bは、プロセッサ130及びメモリ122を含む。システム100Bは、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス又はゲームシステム等の様々な電子デバイスの何れかに組み込むことができる。プロセッサ130は、概して、アプリケーションによって定義されたタスクを実行するために、アプリケーション(例えば、コンピュータプログラム)の命令を実行するように構成されている。メモリ122は、命令及び命令が作用するデータを記憶することによって、アプリケーションの命令の実行を容易にする。メモリ122は、例えば、ランダムアクセスメモリ(RAM)、フラッシュメモリ若しくはハードディスクドライブ(hard disk drive、HDD)等の不揮発性メモリ、又は、それらの組み合わせであり得る。また、システム100Bは、ネットワークインターフェースカード(network interface card、NIC)又はホストバスアダプタ(host bus adapter、HBA)等の物理的入力/出力(input/output、I/O)デバイスであり得るデバイス124を含む。
【0014】
プロセッサ130は、複数のプロセッサコア、例えば、4つのプロセッサコア140、150、160、170を含むことができる。プロセッサコア140、150、160、170は、1つ以上のアプリケーションの命令を独立して且つ同時に実行することができる処理ユニットである。態様では、プロセッサコア140、150、160、170の各々は、命令をフェッチし、フェッチされた命令を対応する動作に復号し、システム100Bのリソースを使用して、対応する動作を実行する命令パイプラインを含むことができる。プロセッサコア140、150、160、170の各々は、プロセッサコア専用の低レベルキャッシュを有することができる。例えば、各プロセッサコア140、150、160、170は、それぞれ、レベル1(level 1、L1)キャッシュ142、152、162、172、及び、レベル2(level 2、L2)キャッシュ144、154、164、174を有することができる。また、各プロセッサコア140、150、160、170は、それぞれ変換索引バッファ(translation lookaside buffer、TLB)146、156、166、176を有することができる。プロセッサ130は、2つの共有キャッシュL3を更に含むことができる。一方の共有キャッシュ180は、一対のコアプロセッサ140、160によって共有され、他方の共有キャッシュ185は、第2の対のコアプロセッサ150、170によって共有される。
【0015】
また、プロセッサ130は、メモリコントローラ132及び入力/出力メモリ管理ユニット(input/output memory management unit、IOMMU)136を含むことができる。IOMMU136は、デバイス124(例えば、図1Aのデバイス)をメモリコントローラ132に接続するために使用することができる。態様では、IOMMU136は、シリアルバス規格(例えば、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe))を使用してデバイス124と通信する。メモリコントローラ132は、デバイス124がメモリ122又はキャッシュL1、L2、L3のうち1つ以上と通信する(図示せず)ためのインターフェースを提供する。IOMMU136は、デバイス124からメモリアクセス要求(例えば、キャッシュインジェクションメモリアクセス要求等のダイレクトメモリアクセス要求)を受信し、メモリコントローラ132を介してメモリ122又はキャッシュのうち何れかへのそれらの要求の提供を制御する。プロセッサ130は、例えば、メモリコントローラ132において、IOMMU136から受信された物理ステアリングタグを、キャッシュインジェクションメモリアクセス要求等の関連付けられたメモリアクセス要求によってターゲットにされた物理リソースにマッピングする物理タグマップ(physical tag map、PTM)134を含む。加えて、メモリコントローラ132は、メモリ122又はキャッシュのうち何れからメモリアクセス要求に対する応答を受信することができ、デバイス124への応答の提供を制御する。
【0016】
キャッシュインジェクションメモリアクセス要求は、ステアリングタグを利用して、プロセッサコア専用の下位レベルキャッシュ又は共有キャッシュ等のプロセッサリソースをターゲットにすることができる。例えば、ステアリングタグは、プロセッサコア150によってアクセス可能なL1キャッシュ152若しくはL2キャッシュ154、又は、プロセッサコア150及び170によってアクセス可能なL3キャッシュ185をターゲットにすることができる。したがって、メモリアクセス要求の効率的な実行を容易にするために、IOMMU136は、仮想タグマップにアクセスして、メモリアクセス要求において受信された仮想ステアリングタグを、物理リソースにマッピングされた物理ステアリングタグに変換する。デバイス124からメモリアクセス要求を受信したことに応じて、IOMMU136は、仮想ステアリングタグを識別し、仮想ステアリングタグを、仮想タグマップ(virtual tag map、VTM)138を用いて変換する。VTM138は、システムメモリ122内に記憶することができ、一部分は、IOMMU136にキャッシュされ得る。代替的に、VTM138は、IOMMU136にキャッシュすることができる。IOMMU136は、メモリアクセス要求及び物理ステアリングタグをメモリコントローラ132に提供する。メモリコントローラ132は、物理ステアリングタグを、キャッシュインジェクションメモリアクセス要求によってターゲットとされる下位レベルキャッシュ等のように、メモリアクセス要求によってターゲットとされる物理リソースに変換する。一例では、メモリアクセス要求は、プロセッサコア専用の低レベルキャッシュをターゲットにすることができる。そのような例では、要求に関連付けられたアドレスが、TLBによって変換され、次いで、キャッシュインジェクションメモリアクセスが実行され得る。
【0017】
いくつかの実施形態では、デバイス124は、メモリコントローラ132を使用して、IOMMU136に送信される仮想ステアリングタグ及び仮想アドレスを含むメモリアクセス要求を開始することによって、ダイレクトメモリアクセス(direct memory access、DMA)要求を通じてメモリ122内又はキャッシュのうち何れかの内部の情報にアクセスする。IOMMU136は、仮想ステアリングタグと物理ステアリングタグとの間のステアリングタグ再マッピング、及び、メモリ122又はキャッシュのうち何れかにおける仮想アドレスと物理アドレスとの間のアドレス変換を実行することができる。ステアリングタグ再マッピングプロセス及びアドレス変換プロセスは、IOMMUの独立した機能とすることができ、同時に実行することができる。例えば、デバイス124は、デバイス124によって提供されるデータを必要とする仮想マシンを実行するプロセッサに関連付けられたキャッシュ内にデータを記憶するための書き込み要求を含む、キャッシュインジェクションメモリアクセス要求を生成することができる。各メモリアクセス要求は、関連付けられた物理ステアリングタグを介してキャッシュ(例えば、L3キャッシュ180又は185、L1キャッシュ142、152、162、172、L2キャッシュ144、154、164、174)にマッピングされた仮想ステアリングタグ、及び、キャッシュインジェクションメモリアクセス要求によってターゲットにされたキャッシュ内の場所を示すメモリアドレスを含むことができる。キャッシュは、書き込み要求に応じて、書き込み要求のメモリアドレスに対応する場所に書き込み要求のデータを記憶する。
【0018】
図2は、本開示の1つ以上の特徴を実施することができる、電力消費を低減するための例示的なシステム200のブロック図である。このシステム200は、システムキャッシュ管理に関連付けられたメッセージに関して電力消費を低減するための技術を実証する。システム200は、エンジン210.1~210.Nを含み、各々が、例えば、1つ以上のCPU、GPU、DSP、エンコーダ/デコーダ、又は、任意の他のカスタマイズされたコンピューティングユニットを含む処理ユニットを表す。エンジン210.1~210.N又はそのサブセットは、互いにローカル(例えば、同じチップ上又は同じ回路上に存在する)であり得るか、互いにリモートであり得る。各エンジン(例えば、210.1)は、キャッシュ220.1(本明細書では1つ以上のキャッシュを表す)及びそれぞれのキャッシュコントローラ230.1を含むことができる。通信レイヤ260は、エンジン210.1~210.N又はそれらの構成要素(例えば、230.1~230.N)を通信可能に接続する。通信レイヤ260は、任意の通信プロトコル(例えば、AMDのファブリック相互接続等のネットワークオンチップ)を利用するネットワークの一部であり得る。一態様では、通信レイヤ260は、それぞれのエンジン210.1~210.Nに関連付けられたキュー240.1~240.Nと、メッセージアービトレータ250と、を具現化することができる。別の態様では、キュー240.1~240.N及びメッセージアービトレータ250は、通信レイヤ260の外部にあってもよく、他のシステム構成要素において具現化され得る。両方の態様において、キュー240.1~240.N及びメッセージアービトレータ250は、常に動作可能な(すなわち、システムが動作している間、常に電源が投入されている)ドメインにおいて動作する。
【0019】
一態様では、メッセージアービトレータ250及びキュー240.1~240.Nは、全てのタイプのメッセージを処理するために使用することができる。別の態様では、別々のアービトレータ及びキューを使用することができ、各々が異なるタイプのメッセージ(例えば、プローブ、構成メッセージ、又は、マルチスレッドアプリケーションから発信されたメッセージ)を処理する。メッセージアービトレータ250は、以下で詳細に説明するように、何れのメッセージの優先度を導出することができるかに基づいて、システムレコード255を維持することができる。メッセージアービトレータ250は、システムの又は特定の処理ユニットの要件に基づいて優先度が判定される方法を調整する際の柔軟性を可能にするように、(レジスタプログラミングを介して)構成可能にすることができる。
【0020】
キュー240.1~240.Nは、本明細書で開示されるように、エンジンのキャッシュコントローラ230.1~230.Nによって生成されたプローブをキューイングするために使用することができる。同様に、これらのキュー240.1~240.N又は他の専用キューを使用して、エンジンのTLBコントローラ(図2には図示せず)によって生成されたプローブをキューイングすることができる。例えば、メッセージアービトレータ250は、それぞれのエンジン210.1~NのTLBに記憶された、仮想アドレスから物理アドレスへの変換マッピングを追跡するシステムレコード255内のデータを維持することができる。したがって、エンジン210.1~210.NのTLBコントローラは、例えば、キャッシュコントローラ230.1~230.Nがそれぞれのキャッシュ220.1~220.Nに対して動作する方法と同様に、プローブメッセージを送信して、古くなった(例えば、マッピングが変更又は除去されたために)TLBエントリを無効化することができる。したがって、キャッシュコントローラ230.1~230.N及びそれらのそれぞれのキャッシュ220.1~220.Nに関して本明細書で説明する技術は、TLBコントローラ及びそれらのそれぞれのTLBに拡張可能である。
【0021】
一態様では、キュー240.1~240.Nを使用して、エンジンのキャッシュコントローラ230.1~230.Nによって生成されたプローブ等のメッセージをキューイングすることができる。典型的には、システム200内のいくつかのキャッシュは、同じキャッシュライン(すなわち、メモリ、例えば104又は122、から以前にフェッチされたデータブロック)のコピーを記憶し得る。従来、例えば、エンジン-1 210.1がそのキャッシュ220.1内のラインへの書き込み又はそこからの読み取りを望む場合に、そのキャッシュコントローラ230.1は、そのラインが他のキャッシュ220.2~220.N内に存在する場合、そのそれぞれのエンジン210.2~210.Nによって未だ変更されていないことを検証しなければならない。エンジン-1のキャッシュコントローラ230.1は、ある場合、他のキャッシュ220.2~220.Nのうち何れがそのラインを保持しているかを知らないので、他の全てのキャッシュコントローラ230.2~230.Nに照会メッセージ(又はプローブ)を送信しなければならない。したがって、多数のエンジンを有するシステム200では、エンジン-1のキャッシュコントローラ230.1は、システム内の他の全てのキャッシュコントローラにブロードキャストメッセージを送信しなければならない。ブロードキャストメッセージの送信は、かなりの量の電力を消費する動作である。多数のエンジンのキャッシュがそのラインを保持しない可能性が高いので、これらのエンジンをブロードキャストメッセージに関与させることは、電力消費及び実行時間の浪費をもたらす。
【0022】
上述したように、キャッシュコントローラは、メッセージをブロードキャストする代わりに、ラインを保持するエンジンのみにメッセージ(又はプローブ)を送信することができる。これは、システム200のキャッシュ230.1~230.Nに記憶されたラインを追跡するシステムレコード255(例えば、メッセージアービトレータ250によって維持される)を維持することによって達成することができる。例えば、システムレコード255は、ラインごとに以下の情報(ラインを保持するキャッシュ、及び、ラインがそれぞれのキャッシュによって最後に変更されたとき(又は、ラインを最も新しく変更したキャッシュの識別情報))を記憶することができる。
【0023】
したがって、上記の例を参照すると、エンジン-1のキャッシュコントローラ230.1は、システム200内の全てのエンジン210.2~210.Nにブロードキャストする代わりに、メッセージアービトレータ250と相談して、何れのエンジンがそのラインを保持しているかを見つけ、次いで、それらのエンジンのみにメッセージを送信することができる。例えば、エンジン-1のキャッシュコントローラ230.1は、メッセージをそのラインを最も新しく修正したエンジンに送信して、その最新のラインのコンテンツを取得することができる。追加的に、エンジン-1のキャッシュコントローラ230.1は、そのラインを保持する全てのエンジンに、そのラインがエンジン-1によって変更されたことを通知するメッセージ(無効化プローブ)を送信することができ、その結果、そのラインのコピーを無効化することができる。次いで、メッセージアービトレータ250は、システムレコード255を更新して、現在キャッシュ220.1がそのラインの最も新しいバージョンを保持していることを示すことができる。したがって、上述したように、システムレコード255を維持することは、メッセージの数が有意に低減され得るので、より効率的なシステム動作及びシステム電力消費を可能にする。
【0024】
概して、システム電力消費は、アクティブでないエンジンをスリープモードにすることによって低レベルに保つことができる。エンジンは、アクティブモード(特定のクロック周波数での通常動作)又はスリープモード(非動作、クロックゲーティングされた状態又は保持状態)の何れかであり得る。上述したように、システム200内のエンジンが他のエンジンをプローブする場合、エンジンは、スリープモードにあるエンジンをアウェイクさせ得る。そのような場合、アウェイクしたエンジンは、プローブに応答した後、スリープモードに戻る前にしばらくの間(ヒステリシス間隔の間)アクティブモードにとどまる。多くの場合、スリープモードにあるエンジンに送信されるプローブは、エンジンによる即時の注意を必要とせず(非緊急プローブ)、したがって、そのようなプローブは、後で(例えば、エンジンがアクティブモードに入る場合に)処理され得る。したがって、非緊急プローブに応答するためにエンジンをアウェイクさせること(その応答は、エンジンがアクティブモードにされる場合に後対処され得る)、及び、非緊急プローブの処理に続くヒステリシス間隔は、以下で詳細に説明されるように、回避され得る追加の電力消費に寄与する。
【0025】
上述したように、アクティブでないシステム200のエンジンは、電力を節約するためにスリープモードに保たれる。プローブがこれらのエンジンに送信される場合に、プローブがエンジンによる即時応答を必要としない限り、プローブは、エンジンのそれぞれのキューにキューイングされ、エンジンがアクティブモードに戻された場合にのみ処理され得る。例えば、エンジン-1 210.1がそのキャッシュ220.1からラインを読み取る(又はそのキャッシュ220.1にラインを書き込む)必要がある場合に、システム200内のキャッシュ220.2~220.Nのうち何れのキャッシュがそのラインのバージョンを保持し、何れのキャッシュが最新のバージョンを有するかを最初に見つけなければならない。したがって、一態様では、エンジン-1のキャッシュコントローラ230.1は、メッセージアービトレータ250に相談して、何れのエンジンをどのようにプローブすべきかを問い合わせることができる。
【0026】
システムレコード255内に記憶された情報に基づいて、メッセージアービトレータ250は、そのラインを保持するシステム内のキャッシュを識別し、更に、そのラインを最も新しく更新したキャッシュを識別することができる。例えば、メッセージアービトレータ250は、そのライン(例えば210.1~210.4)を保持する4つのキャッシュを識別することができる。エンジン-1のキャッシュ220.1が、ラインの最も新しいバージョンを保持する場合、エンジン210.2~210.4は、そのラインのバージョンが無効であることを通知するプローブ、すなわち無効化プローブを受信しなければならない。そのラインの別のエンジンのバージョンが最も新しいもの(例えば、エンジン-2 210.2)である場合、そのラインのバージョンが無効であることをエンジン210.2~210.4に通知することに加えて、エンジン-1のキャッシュコントローラ230.1は、エンジン-2のキャッシュ220.2からそのラインの最も新しいバージョンを受信する要求でエンジン-2をプローブしなければならない。そのような要求、すなわち更新プローブは、エンジン-1がそのラインの最も新しいバージョンから読み取る(又は書き込む)ことを可能にするために、エンジン-2によって直ちに処理されなければならない。エンジン210.3~210.4は、無効化プローブを受信する必要があるだけであり、これらのエンジンがスリープモードにある場合、この段階でエンジンをアウェイクさせる緊急の必要はない。代わりに、それらのそれぞれの無効化プローブは、それらのそれぞれのキュー240.3~240.4にキューイングされて、それらのエンジンがアクティブモードに入る場合に処理され得る。したがって、一態様では、例えば、システムレコード255内に記憶された情報に基づいて、メッセージアービトレータ250によって判定されるように、受信するそれぞれのエンジンによる即時応答又は処理を必要としないメッセージは、それぞれのエンジンのキューにキューイングされ得る。
【0027】
エンジンがアクティブモードに入ると、他のタスクに対処する前に、そのキューに蓄積された全てのプローブを処理する。上記の例では、ラインの最も新しいバージョンを有するエンジン-2は、エンジン-1から送信された更新プローブに直ちに応答しなければならない。したがって、エンジン-1によってアウェイクされると、エンジン-2は、そのキュー240.2に蓄積された他の(非緊急)プローブとともに更新プローブを処理する。他のエンジン210.3~210.4は、後にアクティブモードに入る場合(例えば、タスクを実行するためにオペレーティングシステムのスケジューラによってスケジュールされている場合)、又は、それぞれのキュー240.3~240.4が一杯になった場合に、それぞれのキュー240.3~240.4内の非緊急プローブ(上記の例では、エンジン-1によって送信された無効化プローブを含む)を処理する。したがって、キューが満たされる場合にシステム200のキュー240.1~240.Nが大きいほど、キューに関連付けられたアウェイクされたエンジンによって処理されるメッセージが多くなり、そのため、キューに入れられたメッセージごとに消費される電力が少なくなる(メッセージごとにエンジンが覚醒される回数が低減するため)。
【0028】
それぞれのエンジン210.1~210.Nのキュー240.1~240.Nにおいて、即時の注意を必要としないプローブをキューイングすることは、システム電力消費の有意な節約をもたらすことができる。そうでなければ、エンジンがアウェイクされてプローブに応答し、その処理がシステム動作の通常の過程でエンジンがアクティブになる時間まで遅延され得るだけでなく、エンジンが覚醒されてプローブを処理する毎に、エンジンは、スリープモードに戻る前にヒステリシス間隔の間アクティブモードにとどまる。本明細書で開示される態様では、メッセージアービトレータ250は、以下で詳細に説明するように、(キャッシュの制御に関係しない)他のタイプのメッセージに関しても電力を節約するのに役立つことができる。
【0029】
図3は、本開示の1つ以上の特徴を実施することができる、電力消費300を低減するための別の例示的なシステム300のブロック図である。このシステム300は、システム300の処理ユニットによって送信される任意のタイプのメッセージに関して電力消費を低減するための技術を実証する。システム300は、エンジン310.1~310.Nを含み、各々が、例えば、1つ以上のCPU、GPU、DSP、エンコーダ/デコーダ、又は、任意の他のカスタマイズされたコンピューティングユニットを含む処理ユニットを表している。エンジン310.1~310.N又はそのサブセットは、互いにローカル(例えば、同じチップ上又は同じ回路上に存在する)とすることができ、又は、互いにリモートとすることができる。各エンジン、例えば310.1は、オペレーティングシステム(例えば320.1)によって動作させることができる。通信レイヤ350は、エンジン310.1~310.N又はそれらの構成要素(例えば、320.1~320.N)を通信可能に接続する。通信レイヤ350は、任意の通信プロトコル(例えば、AMDのファブリック相互接続等のネットワークオンチップ)を利用するネットワークの一部であり得る。一態様では、通信レイヤ350は、それぞれのエンジン310.1~310.Nに関連付けられたキュー330.1~330.Nと、メッセージアービトレータ340と、を具現化することができる。別の態様では、キュー330.1~330.N及びメッセージアービトレータ340は、通信レイヤ350の外部とすることができ、他のシステム構成要素において具現化することができる。両方の態様において、キュー330.1~330.N及びメッセージアービトレータ340は、常に動作可能な(すなわち、常にオンデマンドである)ドメインにおいて動作する。
【0030】
一態様では、キュー330.1~330.Nを使用して、エンジンのオペレーティングシステム320.1~320.Nによって生成されたメッセージをキューイングすることができる。これらのメッセージは、様々なエンジン310.1~310.N上で実行されるソフトウェアモジュールから発することができ、及び/又は、エンジンのオペレーティングシステム320.1~320.Nによって送信される構成メッセージとすることができる。例えば、メッセージは、即時応答が必要とされる待ち時間に敏感なソフトウェアモジュールによって発行され得るか、又は、メッセージは、即時応答が必要である若しくは必要ではないオペレーティングシステム(構成メッセージ)によって発行され得る。メッセージが宛先エンジンによる即時の注意を必要としない場合、メッセージは、そのキューにキューイングされ得る。システム200に関して上述したように、非緊急メッセージをキューイングすることは、宛先エンジンの不必要なアウェイクを防止することができ、それによって電力を節約することができる。一態様では、エンジンのオペレーティングシステムが、メッセージを宛先エンジンに送信しなければならない場合に、メッセージを宛先エンジンのキュー内にキューイングすることができる。次に、エンジンのオペレーティングシステムは、メッセージアービトレータ340と相談して、メッセージの処理を遅延させることができるかどうか、又は、メッセージが宛先エンジンの即時の注意を必要とするかどうかを判定することができる。前者では、宛先エンジンは、タスクを実行するためにそのオペレーティングシステムによってスケジュールされると、メッセージ(及びそのキュー内の全ての他のメッセージ)を処理することができる。後者の場合、宛先エンジンは、即時の注意を必要とするキューに入れられたメッセージ(及びそのキュー内の全ての他のメッセージ)を処理するために、アクティブモードに直ちにアウェイクされる。
【0031】
一態様では、メッセージアービトレータ340は、メッセージの優先度が導出され得る情報を記憶するシステムレコード345を維持することができる。システムレコード345は、各メッセージタイプについて、宛先エンジン及びソースエンジンによってインデックス付けされ得る優先度レベルを記録することができる。例えば、特定の構成メッセージタイプ(例えば、セキュアモードに移動する要求)は、エンジン-1 310.1によってエンジン-2 310.2に発行される場合、それに関連付けられた1つのレベルの優先度を有することができ、一方、エンジン-2 310.2によってエンジン-1 310.1に発行される場合、それに関連付けられた別のレベルの優先度を有することができる。メッセージタイプの優先度レベルは、時間値に関連付けることができ、ゼロ時間値は、最高優先度(緊急メッセージ)を表すことができ、非ゼロ時間値は、中間優先度を表すことができる。非ゼロ時間値は、メッセージが処理される前にキュー内で費やし得る最大時間として解釈され得る。所定の時間値を上回る非ゼロ時間値は、最低優先度を表すことができ、キューに保持されるメッセージに対する時間制限がないことを意味し、その場合、キューの対応するエンジンがアクティブモードにされる場合にメッセージが処理される。
【0032】
したがって、一態様では、システム300のエンジン310.1~310.Nは、例えば、初期化フェーズ中に、メッセージアービトレータ340を用いてそれらのプリファレンスを登録することができ、それに基づいてシステムレコード345を構築することができる。例えば、エンジン-2は、特定の優先度レベルでエンジン-1によって送信された場合に特定のメッセージタイプを受信するようにそのプリファレンス(システムレコード内でインデックス付けされる)を登録することができる。エンジン-1がそのメッセージタイプをエンジン-2に送信する場合に、エンジン-1は、そのメッセージタイプの優先度レベルに関してメッセージアービトレータ340に問い合わせを行い、それに応じて以下のようにメッセージを送信することができる。最初に、エンジン-1は、メッセージをエンジン-2のキュー内にキューイングする。次いで、メッセージ優先度レベルが最高である場合、エンジン-2がアウェイクされて、メッセージを直ちに処理する。優先度レベルが最低である場合、メッセージは、エンジン-2がアクティブモードにされる場合に処理される。また、メッセージ優先度レベルが中間である場合、(中間優先度レベルに関連付けられた)最大量の時間の間キュー内で待機することが許可され、その後、エンジン-2がアウェイクされて(既に事前にアクティブモードにされていない場合)、メッセージを処理する。そのようなシナリオでは、優先度レベルは、宛先エンジンのプリファレンスに従って判定されることに留意されたい。しかしながら、一態様では、メッセージタイプの優先度レベルは、ソースエンジンのプリファレンスに従って判定され得る。別の態様では、メッセージタイプの優先度レベルは、ソースエンジンのプリファレンス及び宛先エンジンのプリファレンスの組み合わせとすることができる。例えば、エンジン-1は、それ自体の優先度レベルによって(エンジン-2のプリファレンスに従ってシステムレコード345においてインデックス付けされた)優先度レベルを修正(キャスト)し、キャストされた優先度レベルに従ってメッセージをエンジン-2に送信することができる。そのようなキャストは、例えば、エンジン-1(ソースエンジン)に関連付けられた又はエンジン-1に既知である、特定のリアルタイムシステムイベント又はアプリケーション要件のために、メッセージ優先度が修正されるべきである場合に有用であり得る。
【0033】
したがって、システムレコードに基づいてメッセージアービトレータ340によって判定されるような、それぞれのエンジンによる即時応答又は処理を必要としないメッセージは、それぞれのエンジンのキューにキューイングすることができる。エンジンがアクティブモードに入ると、他のタスクに対処する前に、そのキューに蓄積された全てのメッセージを処理する。上述したように、優先度レベルは、時間値:ゼロ時間値(最大又は最高の優先度レベルを表す)、所定の時間値(最小又は最低の優先度レベルを表す)を上回る時間値、及び、メッセージがキュー内に存在し得る最大時間を判定することができるその間の任意の時間値(中間優先度レベルを表す)、に関連付けられ得る。したがって、中間の優先度レベルに関連付けられたキュー内のメッセージには、各メッセージがキュー内で費やした時間を測定するタイマを付加することができる。測定された時間がメッセージについての最大時間(メッセージの中間優先度レベルによって判定されるような)に達した場合、対応するエンジンがアウェイクされ、それにより、そのメッセージ及びそのキュー内の他のメッセージの処理に向かうことができる。
【0034】
上述したように、それぞれのエンジン310.1~310.Nのキュー330.1~330.Nにおいて即時の注意を必要としないメッセージをキューイングすることは、システム電力消費の有意な節約をもたらすことができる。メッセージに応答するためにエンジンがアウェイクされる毎に、そのメッセージ及びそのキュー内の他のメッセージを処理した後、エンジンは、スリープモードに戻る前のヒステリシス間隔の間、動作モードにとどまる。したがって、キュー内のメッセージを処理するためにエンジンがアウェイクされる頻度が低いほど、電力消費iの節約が高くなる。
【0035】
図4は、本開示の1つ以上の特徴を実施することができる、システムの電力消費を低減するための例示的な方法400のフロー図である。ステップ410において、ソースエンジンは、スリープモードにある宛先エンジンのキュー内にメッセージをキューイングすることができる。次いで、ステップ420において、キューに入れられたメッセージに関連付けられた優先度レベルを判定することができる。優先度レベルが、最大(又は最高)優先度レベル430である場合、ステップ450において、宛先エンジンをアクティブモードにすることができる。優先度レベルが中間優先度レベル460である場合、ステップ470において、中間優先度レベルに関連付けられた時間が経過した場合に、宛先エンジンをアクティブモードにすることができる。そうではなく、優先度レベルが中間レベル460でない場合(すなわち、最小(又は最低)優先度レベルである場合)、キューに入れられたメッセージは、後で、宛先エンジンがアクティブモードにされて関係のないタスクを実行する場合に処理される。宛先エンジンがアクティブモードにされる場合、ステップ480で、宛先エンジンは、キューに入れられたメッセージ及び既にそのキュー内にある他のメッセージを、それらの関連付けられた優先度レベルによって判定される順序で又はメッセージがキュー内で受信された順序で処理することができる。一態様では、キューに入れられたメッセージが処理される順序を構成可能にすることができる。ステップ480において、宛先エンジンは、最大優先度レベルを有するメッセージを処理するためにアウェイクされた(ステップ450)ので、キュー内のメッセージに関連付けられたタイマの満了によりアウェイクされた(ステップ470)ので、関係のないタスクを実行するためにスケジューラによってアウェイクされたので、アクティブモードにされ得ることに留意されたい。
【0036】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0037】
図に示され、及び/又は、本明細書に説明される様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116を含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装され得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
【0038】
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
図1A
図1B
図2
図3
図4
【国際調査報告】