(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022138116
(43)【公開日】2022-09-22
(54)【発明の名称】管理バスのための通信プロトコルの選択
(51)【国際特許分類】
G06F 13/38 20060101AFI20220914BHJP
G06F 15/167 20060101ALI20220914BHJP
G06F 15/177 20060101ALI20220914BHJP
G06F 13/42 20060101ALI20220914BHJP
【FI】
G06F13/38 320A
G06F15/167 615A
G06F15/177 Z
G06F13/38 350
G06F13/42 320Z
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022014596
(22)【出願日】2022-02-02
(31)【優先権主張番号】63/158,696
(32)【優先日】2021-03-09
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/358,363
(32)【優先日】2021-06-25
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヤヌス ユルスキ
(72)【発明者】
【氏名】アミット クマール シュリヴァスタヴァ
(72)【発明者】
【氏名】マシュー エー. シュノーア
(72)【発明者】
【氏名】マイロン ローウェン
(72)【発明者】
【氏名】ティム マッキー
【テーマコード(参考)】
5B045
5B077
【Fターム(参考)】
5B045BB12
5B045BB42
5B045JJ01
5B077AA41
5B077NN02
(57)【要約】
【課題】管理バスのための通信プロトコルの選択の装置等を提供する。
【解決手段】装置は、システム管理バス用のコントローラを含み得る。コントローラは、システムバスに関連したトリガイベントを検出し、トリガイベントの検出に応答して、システム管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信し、送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、システム管理バスでの伝送のために第2通信プロトコルを使用し得る。他の実施形態も記載及び請求される。
【選択図】
図30
【特許請求の範囲】
【請求項1】
通信プロトコルを選択する装置であって、
システム管理バス用のコントローラを有し、該コントローラは、
前記システム管理バスに関連したトリガイベントを検出し、
前記トリガイベントの検出に応答して、前記システム管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信し、
前記送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、前記システム管理バスでの伝送のために第2通信プロトコルを使用する、
装置。
【請求項2】
前記第1通信プロトコルは、I2C通信プロトコルであり、
前記第2通信プロトコルは、I3C通信プロトコルである、
請求項1に記載の装置。
【請求項3】
前記コントローラは、
前記ブロードキャストアドレスの第1伝送において前記ブロードキャストアドレスを送信し、
前記ブロードキャストアドレスの前記第1伝送が受信確認されたとの決定に応答して、前記ブロードキャストアドレスの複数の伝送を送信し、
前記ブロードキャストアドレスの前記複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定し、
前記確認応答の第1カウントが前記第1閾値を超えるとの決定に応答して、前記システム管理バスでの伝送のために前記第2通信プロトコルを選択する、
請求項1に記載の装置。
【請求項4】
前記コントローラは、
前記確認応答の第1カウントが前記第1閾値を超えないとの決定に応答して、前記ブロードキャストアドレスの少なくとも1つの追加伝送を送信する、
請求項3に記載の装置。
【請求項5】
前記コントローラは、
前記ブロードキャストアドレスの前記第1伝送を送信する前に、前記システム管理バスを、前記第1通信プロトコルに関連した第1電圧レベルにセットし、
前記確認応答の第1カウントが前記第1閾値を超えるとの前記決定に応答して、前記システム管理バスを、前記第2通信プロトコルに関連した第2電圧レベルにセットし、
前記第2電圧レベルは、前記第1電圧レベルよりも低い、
請求項3に記載の装置。
【請求項6】
前記コントローラは、
前記ブロードキャストアドレスの前記第1伝送が受信確認されなかったとの決定に応答して、前記システム管理バスでデバイスアドレスを送信し、
前記送信されたデバイスアドレスが受信確認されたかどうかを決定し、
前記送信されたデバイスアドレスが受信確認されたとの決定に応答して、前記システム管理バスでの伝送のために前記第1通信プロトコルを選択する、
請求項3に記載の装置。
【請求項7】
前記コントローラは、
前記デバイスアドレスの第1伝送において前記デバイスアドレスを送信し、
前記デバイスアドレスの前記第1伝送が受信確認されたとの決定に応答して、前記デバイスアドレスの複数の伝送を送信し、
前記デバイスアドレスの前記複数の伝送について受信された確認応答の第2カウントが第2閾値を超えるかどうかを決定し、
前記確認応答の第2カウントが前記第2閾値を超えるとの決定に応答して、前記システム管理バスでの伝送のために前記第1通信プロトコルを選択する、
請求項6に記載の装置。
【請求項8】
前記コントローラは、
前記確認応答の第2カウントが前記第2閾値を超えないとの決定に応答して、前記デバイスアドレスの少なくとも1つの追加伝送を送信する、
請求項7に記載の装置。
【請求項9】
通信プロトコルを選択する方法であって、
コントローラデバイスによって、シングルエンドの2ワイヤバスである管理バスに関連したトリガイベントを検出することと、
前記トリガイベントの検出に応答して、前記コントローラデバイスが、前記管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信することと、
前記コントローラデバイスによって、前記送信されたブロードキャストアドレスが受信確認されたかどうかを決定することと、
前記送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、前記コントローラデバイスが、前記管理バスでの伝送のために第2通信プロトコルを使用することと
を有する方法。
【請求項10】
前記第1通信プロトコルは、I2C通信プロトコルであり、
前記第2通信プロトコルは、I3C通信プロトコルである、
請求項9に記載の方法。
【請求項11】
前記ブロードキャストアドレスを送信することは、前記ブロードキャストアドレスの第1伝送を送信することを含み、当該方法は、
前記ブロードキャストアドレスの前記第1伝送が受信確認されたとの決定に応答して、前記コントローラデバイスが前記ブロードキャストアドレスの複数の伝送を送信することと、
前記コントローラデバイスによって、前記ブロードキャストアドレスの前記複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定することと、
前記確認応答の第1カウントが前記第1閾値を超えるとの決定に応答して、前記コントローラデバイスが前記管理バスでの伝送のために前記第2通信プロトコルを選択することと
を有する、
請求項9に記載の方法。
【請求項12】
前記確認応答の第1カウントが前記第1閾値を超えないとの決定に応答して、前記コントローラデバイスが前記ブロードキャストアドレスの少なくとも1つの追加伝送を送信することを有する、
請求項11に記載の方法。
【請求項13】
前記ブロードキャストアドレスの前記第1伝送を送信する前に、前記コントローラデバイスが、前記管理バスを、前記第1通信プロトコルに関連した第1電圧レベルにセットすることと、
前記確認応答の第1カウントが前記第1閾値を超えるとの前記決定に応答して、前記コントローラデバイスが、前記管理バスを、前記第2通信プロトコルに関連した第2電圧レベルにセットすることと
を有し、
前記第2電圧レベルは、前記第1電圧レベルよりも低い、
請求項11に記載の方法。
【請求項14】
前記ブロードキャストアドレスの前記第1伝送が受信確認されなかったとの決定に応答して、前記コントローラデバイスが前記管理バスでデバイスアドレスを送信することと、
前記コントローラデバイスによって、前記送信されたデバイスアドレスが受信確認されたかどうかを決定することと、
前記送信されたデバイスアドレスが受信確認されたとの決定に応答して、前記コントローラデバイスが、前記管理バスでの伝送のために前記第1通信プロトコルを選択することと
を有する、請求項11に記載の方法。
【請求項15】
通信プロトコルを選択するシステムであって、
命令を実行するプロセッサと、
システム管理バスと、
前記システム管理バス用のコントローラと
を有し、前記コントローラは、
前記システム管理バスに関連したトリガイベントを検出し、
前記トリガイベントの検出に応答して、前記システム管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信し、
前記送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、前記システム管理バスでの伝送のために第2通信プロトコルを使用する、
システム。
【請求項16】
前記第1通信プロトコルは、I2C通信プロトコルであり、
前記第2通信プロトコルは、I3C通信プロトコルである、
請求項15に記載のシステム。
【請求項17】
前記コントローラは、
前記ブロードキャストアドレスの第1伝送において前記ブロードキャストアドレスを送信し、
前記ブロードキャストアドレスの前記第1伝送が受信確認されたとの決定に応答して、前記ブロードキャストアドレスの複数の伝送を送信し、
前記ブロードキャストアドレスの前記複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定し、
前記確認応答の第1カウントが前記第1閾値を超えるとの決定に応答して、前記システム管理バスでの伝送のために前記第2通信プロトコルを選択する、
請求項15に記載のシステム。
【請求項18】
前記コントローラは、
前記ブロードキャストアドレスの前記第1伝送が受信確認されなかったとの決定に応答して、前記システム管理バスでデバイスアドレスを送信し、
前記送信されたデバイスアドレスが受信確認されたかどうかを決定し、
前記送信されたデバイスアドレスが受信確認されたとの決定に応答して、前記システム管理バスでの伝送のために前記第1通信プロトコルを選択する、
請求項17に記載のシステム。
【請求項19】
前記コントローラは、
前記デバイスアドレスの第1伝送において前記デバイスアドレスを送信し、
前記デバイスアドレスの前記第1伝送が受信確認されたとの決定に応答して、前記デバイスアドレスの複数の伝送を送信し、
前記デバイスアドレスの前記複数の伝送について受信された確認応答の第2カウントが第2閾値を超えるかどうかを決定し、
前記確認応答の第2カウントが前記第2閾値を超えるとの決定に応答して、前記システム管理バスでの伝送のために前記第1通信プロトコルを選択する、
請求項18に記載のシステム。
【請求項20】
通信プロトコルを選択する装置であって、
シングルエンドの2ワイヤバスである管理バスに関連したトリガイベントを検出する手段と、
前記トリガイベントの検出に応答して、前記管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信する手段と、
前記送信されたブロードキャストアドレスが受信確認されたかどうかを決定する手段と、
前記送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、前記管理バスでの伝送のために第2通信プロトコルを使用する手段と
を有する装置。
【請求項21】
前記第1通信プロトコルは、I2C通信プロトコルであり、
前記第2通信プロトコルは、I3C通信プロトコルである、
請求項20に記載の装置。
【請求項22】
前記ブロードキャストアドレスを送信することは、前記ブロードキャストアドレスの第1伝送を送信することを含み、当該装置は、
前記ブロードキャストアドレスの前記第1伝送が受信確認されたとの決定に応答して、前記ブロードキャストアドレスの複数の伝送を送信する手段と、
前記ブロードキャストアドレスの前記複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定する手段と、
前記確認応答の第1カウントが前記第1閾値を超えるとの決定に応答して、前記管理バスでの伝送のために前記第2通信プロトコルを選択する手段と
を有する、
請求項20に記載の装置。
【請求項23】
前記確認応答の第1カウントが前記第1閾値を超えないとの決定に応答して、前記ブロードキャストアドレスの少なくとも1つの追加伝送を送信する手段を有する、
請求項22に記載の装置。
【請求項24】
前記ブロードキャストアドレスの前記第1伝送を送信する前に、前記管理バスを、前記第1通信プロトコルに関連した第1電圧レベルにセットする手段と、
前記確認応答の第1カウントが前記第1閾値を超えるとの前記決定に応答して、前記管理バスを、前記第2通信プロトコルに関連した第2電圧レベルにセットする手段と
を有し、
前記第2電圧レベルは、前記第1電圧レベルよりも低い、
請求項22に記載の装置。
【請求項25】
前記ブロードキャストアドレスの前記第1伝送が受信確認されなかったとの決定に応答して、前記管理バスでデバイスアドレスを送信する手段と、
前記送信されたデバイスアドレスが受信確認されたかどうかを決定する手段と、
前記送信されたデバイスアドレスが受信確認されたとの決定に応答して、前記管理バスでの伝送のために前記第1通信プロトコルを選択する手段と
を有する、請求項22に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、概して、コンピューティングデバイスに関係がある。より具体的には、実施形態は、管理バスのために通信プロトコルを選択することに関係がある。
【背景技術】
【0002】
いくつかのコンピューティングシステムは、システムコンポーネント間のデータ通信を提供するバスを含むことがある。例えば、プロセッサは、内部データバスを用いて、メモリデバイス、ストレージデバイス、ネットワークデバイス、などのような他のシステムコンポーネントと通信し得る。
【図面の簡単な説明】
【0003】
【
図1】本発明の実施形態に従うシステムの一部のブロック図である。
【
図2】本発明の実施形態に従うプロセッサのブロック図である。
【
図3】本発明の他の実施形態に従うマルチドメインプロセッサのブロック図である。
【
図4】複数のコアを含むプロセッサの実施形態である。
【
図5】本発明の一実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図である。
【
図6】他の実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図である。
【
図7】更なる他の実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図である。
【
図8】別の更なる実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図である。
【
図9】本発明の他の実施形態に従うプロセッサのブロック図である。
【
図10】本発明の実施形態に従う代表的なSoCのブロック図である。
【
図11】本発明の実施形態に従う他の例となるSoCのブロック図である。
【
図12】実施形態が使用され得るシステムの例のブロック図である。
【
図13】実施形態が使用され得るシステムの他の例のブロック図である。
【
図14】代表的なコンピュータシステムのブロック図である。
【
図15A】本発明の実施形態に従うシステムのブロック図である。
【
図15B】本発明の実施形態に従うシステムのブロック図である。
【
図16】実施形態に従う動作を実行する集積回路を製造するために使用されるIPコア開発システムを表すブロック図である。
【
図17A】本発明の実施形態に従う汎用ベクトルフレンドリ命令フォーマット及びその命令テンプレートを表すブロック図である。
【
図17B】本発明の実施形態に従う汎用ベクトルフレンドリ命令フォーマット及びその命令テンプレートを表すブロック図である。
【
図18A】本発明の実施形態に従う例示的な固有ベクトルフレンドリ命令フォーマットを表すブロック図である。
【
図18B】本発明の実施形態に従う例示的な固有ベクトルフレンドリ命令フォーマットを表すブロック図である。
【
図18C】本発明の実施形態に従う例示的な固有ベクトルフレンドリ命令フォーマットを表すブロック図である。
【
図18D】本発明の実施形態に従う例示的な固有ベクトルフレンドリ命令フォーマットを表すブロック図である。
【
図19】本発明の一実施形態に従うレジスタアーキテクチャのブロック図である。
【
図20A】本発明の実施形態に従う例示的なイン・オーダーパイプライン及び例示的なレジスタリネーミング、アウト・オブ・オーダー発行/実行パイプラインの両方を表すブロック図である。
【
図20B】本発明の実施形態に従うプロセッサに含まれるイン・オーダーアーキテクチャコア及び例示的なレジスタリネーミング、アウト・オブ・オーダー発行/実行アーキテクチャコアの両方を表すブロック図である。
【
図21A】コアがチップ内のいくつかのロジックブロック(同じタイプ及び/又は異なるタイプの他のコアを含む)のうちの1つである、より具体的な、例示的なイン・オーダーコアアーキテクチャのブロック図を表す。
【
図21B】コアがチップ内のいくつかのロジックブロック(同じタイプ及び/又は異なるタイプの他のコアを含む)のうちの1つである、より具体的な、例示的なイン・オーダーコアアーキテクチャのブロック図を表す。
【
図22】本発明の実施形態に従って、1よりも多いコアを有し、集積メモリコントローラを有し、集積グラフィクスを有し得るプロセッサのブロック図である。
【
図23】例示的なコンピュータアーキテクチャのブロック図である。
【
図24】例示的なコンピュータアーキテクチャのブロック図である。
【
図25】本発明の実施形態に従って、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対比するブロック図である。
【
図26】1つ以上の実施形態に従うシステムの例の図である。
【
図27】1つ以上の実施形態に従うシステムの例の図である。
【
図28】1つ以上の実施形態に従う方法の例のフロー図である。
【
図29】1つ以上の実施形態に従う方法の例のフロー図である。
【
図30】1つ以上の実施形態に従う方法の例のフロー図である。
【
図31】1つ以上の実施形態に従う記憶媒体の例の図である。
【発明を実施するための形態】
【0004】
いくつかのコンピューティングシステムは、システムコンポーネントの管理に使用される専用のバスを含むことがある。例えば、システム管理バス(System Management Bus)(“SMBus”)は、システムコンポーネント(本明細書では「サーバント」デバイスとも呼ばれる。)と通信するためにコントローラ(例えば、プロセッサ)によって使用されるシングルエンドの2ワイヤバスである。そのようなサーバントデバイスは、電源モジュール、拡張カード、冷却ファン、温度センサ、などを含むことがある。いくつかの例で、管理バスは、コンピューティングシステムのメインデータバス(「イン・バンド」パスとも呼ばれる。)とは別個のパス(「アウト・オブ・バンド」パスとも呼ばれる。)を形成し得る。
【0005】
いくつかのコンピューティングシステムでは、システム管理バスは、1つ以上の通信プロトコルと互換性を有することがある。例えば、システム管理バスによって使用される1つの通信プロコトルは、I2C(Inter-Integrated Circuit)プロトコルである。他の例では、MIPI I3Cは、I2Cプロトコルの上に構築される、より新しい通信プロトコルであり、I2Cプロトコルと比較して、より高いバンド幅、イン・バンド割り込み、及び他の利点を提供する。I3Cのいくつかの側面は、I2Cプロトコルと類似しておりかつ後方互換性があるが、異なるいくつかの側面が、これらのプロトコル間に非互換性を生じさせることがある。例えば、I2Cデバイスは、それらがクロックストレッチを使用する場合に、又はそれらが特定の周波数でメッセージにフィルタをかけるスパイクフィルタを欠いている場合に、I3Cプロトコルバスで作動しないことがある。そのため、I3Cプロトコルを用いて従来のバスへ接続されているI2Cデバイスは、不具合又はエラーに苦しむ可能性がある。
【0006】
本明細書で記載されている実施形態は、バスへ結合されるデバイスのために通信プロトコルを選択する装置、システム、技術、又はプロセスを含み得る。本明細書で記載されているいくつかの実施形態で、コントローラデバイスは、サーバントデバイスがシステム管理バスへ接続されるべきであることを示すイベント(「トリガイベント」とも呼ばれる。)を検出することができ、これに応答して、サーバントデバイスへの接続のために第1通信プロトコルと第2通信プロトコルとの間で選択を行う選択プロセスを実行することができる。この選択プロセスは、システム管理バスでのブロードキャストアドレスの1つ以上の伝送を送信することと、サーバントデバイスからの確認応答をリッスンすることとを含んでもよい。いくつかの実施形態で、ブロードキャストアドレスは、第1プロトコルで使用されず、第2プロトコルで使用される。従って、確認応答の受信は、サーバントデバイスが第2プロトコルと互換性があることを示し得る。然るに、コントローラは、確認応答を受信することに応答して第2プロトコルを選択してもよく、あるいは、適切な確認応答が受信されない場合には第1プロトコルを選択してもよい。このようにして、いくつかの実施形態は、機能性を損なわずに、異なるプロトコルを使用するデバイスとの自動検出及び互換性を提供し得る。いくつかの実施形態の様々な詳細は、
図26~31を参照して以下で更に説明される。更に、例示的なシステム及びアーキテクチャは、
図1~25を参照して以下で説明される。
【0007】
[例示的なシステム及びアーキテクチャ]
以下の実施形態は特定の実施形態を参照して記載されているが、実施形態はこれに関連して限定されない。特に、本明細書で記載されている実施形態の類似した技術及び教示は、他のタイプの回路、半導体デバイス、プロセッサ、システム、などに適用されてもよい。例えば、開示されている実施形態は、サーバコンピュータ(例えば、タワー、ラック、ブレード、マイクロサーバ、など)、通信システム、ストレージシステム、任意の構成のデスクトップコンピュータ、ラップトップ、ノートブック、及びタブレットコンピュータ(2:1タブレット、ファブレット、などを含む)を含む、任意のタイプのコンピュータシステムで実装されてもよい。
【0008】
更に、開示されている実施形態は、携帯型デバイス、システム・オン・チップ(SoC)、及び埋め込みアプリケーションなどの他のデバイスでも使用可能である。携帯型デバイスのいくつかの例には、スマートフォンなどのセルラー電話機、インターネットプロトコルデバイス、デジタルカメラ、パーソナル・デジタル・アシスタント(PDA)、携帯型PCがある。埋め込みアプリケーションには、通常は、マイクロコントローラ、デジタル・シグナル・プロセッサ(DSP)、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイド・エリア・ネットワーク(WAN)スイッチ、ウェアラブルデバイス、又は以下で教示されている機能及び動作を実行することができるあらゆる他のシステムが含まれる。更に、実施形態は、携帯電話機、スマートフォン、及びファブレットなどの、標準のボイス機能を備えたモバイル端末で、及び/又は多くのウェアラブル、タブレット、ノートブック、デスクトップ、マイクロサーバ、サーバなどのような、標準の無線ボイス機能通信能力のない非モバイル端末で実装されてもよい。
【0009】
これより
図1を参照すると、本発明の実施形態に従うシステムの一部のブロック図が示されている。
図1に示されるように、システム100は、図示されるようにマルチコアプロセッサであるプロセッサ110を含む様々なコンポーネントを含み得る。プロセッサ110は、外部電圧レギュレータ160を介して電源150へ結合され得る。外部電圧レギュレータ160は、一次調整電圧Vregをプロセッサ110へ供給するよう第1電圧変換を実行し得る。
【0010】
明らかなように、プロセッサ110は、複数のコア120a~120nを含む単一ダイプロセッサであってよい。更に、各コアは、集積電圧レギュレータ(Integrated Voltage Regulator,IVR)125a~125nと関連付けられてもよく、IVRは、一次調整電圧を受けて、そのIVRに関連したプロセッサの1つ以上のエージェントへ供給される動作電圧を生成する。従って、IVR実装は、電圧、ひいては、各個別的なコアの電力及びパフォーマンスのきめ細かい制御を可能にするよう設けられ得る。従って、各コアは、独立した電圧及び周波数で動作可能であり、高い柔軟性を可能にするとともに、電力消費とパフォーマンスとのバランスをとる幅広い機会を得る。いくつかの実施形態で、複数のIVRの仕様は、別々の電力プレーンへのコンポーネントのグルーピングを可能にし、それにより、電力は、IVRによって調整されて、グループ内のコンポーネントにのみ供給される。電力管理中、1つのIVRの所与の電力プレーンは、プロセッサがある低電力状態におかれる場合にはパワーダウン又はオフされてもよく、一方、他のIVRの他の電力プレーンはアクティブなままであるか、又は完全に給電されている。同様に、コア120は、各コア120の動作周波数を独立して制御するよう1つ以上の位相ロックループ(Phase lock loops,PLL)などの独立クロック生成回路を含むか、又はそれと関連付けられてもよい。
【0011】
依然として
図1を参照して、入出力インターフェース(IF)132、他のインターフェース134、及び集積メモリコントローラ(IMC)136を含む追加のコンポーネントが、プロセッサ内に存在してもよい。明らかなように、これらのコンポーネントの夫々は、他の集積電圧レギュレータ125xによって給電され得る。一実施形態では、インターフェース132は、物理レイヤ、リンクレイヤ、及びプロトコルレイヤを含む複数のレイヤを含むキャッシュコヒーレントプロトコルでポイント・ツー・ポイント(PtP)リンクを提供するIntel(登録商標) Quick Path Interconnect(QPI)インターコネクトの動作を可能にし得る。次いで、インターフェース134は、Peripheral Component Interconnect Express(PCIe)プロトコルにより通信し得る。
【0012】
また、電力制御ユニット(PCU)138も示されており、これは、プロセッサ110に関して電力管理動作を実行するためのハードウェア、ソフトウェア、及び/又はファームウェアを含む回路を含み得る。明らかなように、PCU138は、デジタルインターフェース162を介して外部電圧レギュレータ160へ制御情報を供給して、電圧レギュレータに適切な調整電圧を生成させる。PCU138はまた、他のデジタルインターフェース163を介してIVR125へ制御情報を供給して、生成される動作電圧を制御する(あるいは、対応するIVRを低電力モードで無効にさせる)。様々な実施形態で、PCU138は、ハードウェアに基づいた電力管理を実行するよう様々な電力管理ロジックユニットを含んでもよい。そのような電力管理は、完全にプロセッサ制御されてもよく(例えば、作業負荷及び/又は電力、熱的若しくは他のプロセッサ制約によってトリガされ得る様々なプロセッサハードウェアによる)、かつ/あるいは、電力管理は、外部ソース(例えば、プラットフォーム又は電力管理ソース若しくはシステムソフトウェア)に応答して実行されてもよい。
【0013】
図1で、PCU138は、プロセッサの別個のロジックとして存在するものとして表されている。他の場合には、PCU138は、コア120の所与の1つ以上で実行されてもよい。いくつかの場合に、PCU138は、時々Pコードと呼ばれるそれ自体の専用の電力管理コードを実行するよう構成されたマイクロコントローラ(専用若しくは汎用)又は他の制御ロジックとして実装されてもよい。更なる他の実施形態では、PCU138によって実行される電力管理動作は、プロセッサの外部で、例えば、別個の電力管理集積回路(PMIC)又はプロセッサの外にある他のコンポーネントによって、実装されてもよい。更なる他の実施形態では、PCU138によって実行される電力管理動作は、BIOS又は他のシステムソフトウェア内で実装されてもよい。
【0014】
実施形態は、複数のコアの夫々が独立した電圧及び周波数点で動作することができるマルチコアプロセッサに特に適し得る。本明細書で使用されるように、「ドメイン」との用語は、同じ電圧及び周波数点で動作するハードウェア及び/又はロジックの集合を意味するために使用される。更に、マルチコアプロセッサは、固定機能ユニット、グラフィクスエンジン、などのような他の非コアプロセッシングエンジンを更に含むことができる。そのようなプロセッサは、グラフィクスエンジンに関連した1つ以上のドメイン(本明細書では、グラフィクスドメインと呼ばれる。)、及び非コア回路に関連した1つ以上のドメイン(本明細書では、システムエージェントと呼ばれる。)のような、コア以外の独立したドメインを含むことができる。マルチドメインプロセッサの多くの実施は単一の半導体で形成され得るが、他の実施は、異なるドメインが単一パッケージの異なる半導体ダイに存在することができるマルチチップパッケージによって実現され得る。
【0015】
説明を簡単にするために示されていないが、非コアロジックなどの追加のコンポーネントや、内部メモリ、例えば、キャッシュメモリヒエラルキの1つ以上のレベルなどの他のコンポーネントが、プロセッサ110内に存在してもよいことを理解されたい。更に、集積電圧レギュレータにより
図1の実施では示されているが、実施形態はそのように制限されない。例えば、他の調整電圧が、外部電圧レギュレータ160又は調整電圧の1つ以上の追加の外部源からオンチップのリソースへ供給されてもよい。
【0016】
本明細書で記載されている電力管理技術は、オペレーティングシステム(OS)に基づいた電力管理(OSPM)メカニズムから独立しておりかつそれと相互補完的であってよいことに留意されたい。一例となるOSPM技術に従って、プロセッサは、P状態と呼ばれる様々なパフォーマンス状態又はレベル、すなわち、P0からPNまでで、動作することができる。一般に、P1パフォーマンス状態は、OSによって要求され得る最高の保証されたパフォーマンス状態に対応し得る。このP1状態に加えて、OSは、より高いパフォーマンス状態、つまり、P0状態を更に要求することができる。このP0状態は、よって、電力及び/又はサーマルバジェットが利用可能であるときに、プロセッサハードウェアが保証周波数より高い周波数で動作するようプロセッサ又はその少なくとも部分を構成することができる日和見的、オーバクロック、又はターボモード状態であり得る。多くの実施で、プロセッサは、製造中にプロセッサに融合されるか又は別なふうに書き込まれる、特定のプロセッサの最大ピーク周波数を超える、P1保証最大周波数を上回る複数のいわゆるビン周波数を含むことができる。更に、1つのOSPMメカニズムに従って、プロセッサは、様々な電力状態又はレベルで動作することができる。電力状態に関して、OSPMメカニズムは、一般的にC状態、C0、C1乃至Cn状態と呼ばれる異なった電力消費状態を指定し得る。コアがアクティブであるとき、それはC0状態で作動し、コアがアイドル状態であるとき、それは、非ゼロのC状態(例えば、C1~C6状態)とも呼ばれるコア低電力状態に置かれ得る。非ゼロの各C状態はより低い電力消費レベルにある(C6は、C1よりも深い低電力状態にある、など)。
【0017】
多種多様なタイプの電力管理技術が異なる実施形態では個別的に又は組み合わせて使用されてもよいことを理解されたい。代表的な例として、電力コントローラは、1つ以上のコア又は他のプロセッサロジックの動作電圧及び/又は動作周波数がある状況で電力消費量を低減させるよう動的に制御され得る何らかの形態の動的電圧周波数スケーリング(DVFS)によって電力管理されるようプロセッサを制御してもよい。例において、DVFSは、最も低い電力消費レベルで最適なパフォーマンスを提供するよう、カリフォルニア州サンタクララにあるインテル コーポレイションから入手可能なEnhanced Intel SpeedStep技術を用いて、実行されてもよい。他の例では、DVFSは、条件(例えば、作業負荷及び利用可能性)に基づいて保証動作周波数よりも高い周波数で動作することを1つ以上のコア又は他の計算エンジンに可能にするために、Intel TurboBoost技術を用いて、実行されてもよい。
【0018】
特定の例で使用され得る他の電力管理技術は、異なる計算エンジン間の作業負荷の動的な交換である。例えば、プロセッサは、電力や制限された状況で、1以上の作業負荷が、より低電力のコア又は他の計算エンジンで実行されるよう動的に切り替えられ得るように、異なる電力消費レベルで動作する非対称なコア又は他のプロセッシングエンジンを含んでもよい。他の例示的な電力管理技術は、コア及び/又は他の計算エンジンをデューティサイクルに従って周期的に有効及び無効にさせるハードウェア・デューティ・サイクリング(Hardware Duty Cycling,HDC)であり、それにより、1つ以上のコアは、デューティサイクルの非アクティブ周期中には非アクティブにされ、デューティサイクルのアクティブ周期中にはアクティブにされ得る。
【0019】
電力管理技術はまた、制約が動作環境で存在する場合に使用されてもよい。例えば、電力及び/又は熱的制約に遭遇する場合に、電力は、動作周波数及び/又は電圧を低減させることによって低減され得る。他の電力管理技術は、命令実行レートのスロットリング又は命令のスケジューリングの制限を含む。また更に、所与の命令セットアーキテクチャの命令は電力管理動作に関して明示的又は暗黙的な指示を含むことが可能である。これらの特定の例により記載されてきたが、多くの他の電力管理技術が特定の実施形態で使用されてもよいことを理解されたい。
【0020】
実施形態は、サーバプロセッサ、デスクトッププロセッサ、モバイルプロセッサなどを含む、様々な市場のためのプロセッサで実装され得る。これより
図2を参照すると、本発明の実施形態に従うプロセッサのブロック図が示されている。
図2に示されるように、プロセッサ200は、複数のコア210a~210nを含むマルチコアプロセッサであってよい。一実施形態で、夫々のそのようなコアは、独立した電力ドメインを有してもよく、作業負荷に基づいてアクティブ状態及び/又は最大パフォーマンス状態から出入りするよう構成され得る。1つ以上のコア210は、他のコアに対して異種であってもよく、例えば、異なるマイクロアーキテクチャ、命令セットアーキテクチャ、パイプラインデプス、電力及びパフォーマンス性能を有している。様々なコアが、様々なコンポーネントを含むシステムエージェント220へインターコネクト215を介して結合され得る。明らかなように、システムエージェント220は、ラストレベルキャッシュであってもよい共有キャッシュ230を含んでもよい。更に、システムエージェントは、例えば、メモリバスを介して、システムメモリ(
図2に図示せず。)と通信する集積メモリコントローラ240を含んでもよい。システムエージェント220はまた、様々なインターフェース250及び電力制御ユニット255を含み、これらは、本明細書で記載されている電力管理技術を実行するロジックを含み得る。
【0021】
更に、インターフェース250a~250nによって、周辺機器、大容量記憶装置などのような様々なオフチップコンポーネントに対して接続が行われ得る。
図2の実施形態ではこの特定の実施により示されているが、本発明の範囲はこれに関して制限されない。
【0022】
これより
図3を参照すると、本発明の他の実施形態に従うマルチドメインプロセッサのブロック図が示されている。
図3の実施形態で示されているように、プロセッサ300は複数のドメインを含む。具体的に、コアドメイン310は複数のコア310a~310nを含むことができ、グラフィクスドメイン320は1つ以上のグラフィクスエンジンを含むことができ、システムエージェントドメイン350が更に存在してもよい。いくつかの実施形態で、システムエージェントドメイン350は、コアドメインから独立した周波数で実行されてもよく、ドメイン310及び320が高電力状態及び低電力状態に動的に出たり入ったりするよう制御され得るように、電力制御イベント及び電力管理を扱うべく常にオンされたままであってよい。ドメイン310及び320の夫々は、異なる電圧及び/又は電力で動作してもよい。3つのドメインしか示されていないが、本発明の範囲はこれに関して制限されず、追加のドメインが他の実施形態では存在する可能性があることを理解されたい。例えば、複数のコアドメインは、少なくとも1つのコアを夫々が含みながら存在してもよい。
【0023】
一般に、コア310a~310nの夫々は、様々な実行ユニット及び追加のプロセッシング要素に加えて低レベルキャッシュを更に含んでもよい。次いで、様々なコアは、互いに、及びラストレベルキャッシュ(LLC)340a~340nの複数のユニットから成る共有キャッシュメモリに結合されてもよい。様々な実施形態で、LLC340は、コア及びグラフィクスエンジン、更には様々なメディア処理回路の間で、共有されてもよい。明らかなように、リングインターコネクト330は、このようにしてコアを連結し、コア、グラフィクスエンジン320,及びシステムエージェントドメイン350の間の相互接続を提供する。一実施形態で、インターコネクト330はコアドメインの部分であることができる。しかし、他の実施形態では、リングインターコネクト330は、それ自体のドメインであることができる。
【0024】
更に明らかなように、システムエージェントドメイン350は、関連するディスプレイの制御及びそれへのインターフェースを提供し得るディスプレイコントローラ352を含んでもよい。更に明らかなように、システムエージェントドメイン350は、本明細書で記載されている電力管理技術を実行するロジックを含むことができる電力制御ユニット355を含んでもよい。
【0025】
更に
図3で明らかなように、プロセッサ300は、動的ランダム・アクセス・メモリ(DRAM)などのシステムメモリへのインターフェースを提供することができる集積メモリコントローラ(IMC)370を更に含むことができる。複数のインターフェース380a~380nは、プロセッサと他の回路との間の相互接続を可能にするよう存在してもよい。例えば、一実施形態で、少なくとも1つのダイレクト・メディア・インターフェース(DMI)インターフェースは、1つ以上のPCIeインターフェースとともに設けられてもよい。また更に、追加のプロセッサ又は他の回路などの他のエージェント間の通信を提供するよう、1つ以上のQPIインターフェースも設けられてもよい。
図3の実施形態ではこのような高レベルで示されているが、本発明の範囲はこれに関して制限されないことを理解されたい。
【0026】
図4を参照すると、複数のコアを含むプロセッサの実施形態が表されている。プロセッサ400は、マイクロプロセッサ、埋め込みプロセッサ、デジタル・シグナル・プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システム・オン・チップ(SoC)、又はコードを実行する他のデバイスのような、あらゆるプロセッサ又はプロセッシングデバイスも含む。プロセッサ400は、一実施形態で、少なくとも2つのコア、コア401及びコア402を含み、非対称コア又は対称コア(図示されている実施形態)を含んでもよい。なお、プロセッサ400は、対称又は非対称であってよいプロセッシング要素をいくつでも含んでもよい。
【0027】
一実施形態で、プロセッシング要素は、ソフトウェアスレッドをサポートするハードウェア又はロジックを指す。ハードウェアプロセッシング要素の例には、実行状態又はアーキテクチャ状態などの、プロセッサの状態を保持することができるスレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又はあらゆる他の要素が含まれる。すなわち、プロセッシング要素は、一実施形態では、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコードなどのコードと独立して関連付けられ得る如何なるハードウェアも指す。物理プロセッサは、通常は、コア又はハードウェアスレッドなどの他のプロセッシング要素を潜在的にいくつでも含む集積回路を指す。
【0028】
コアは、しばしば、独立したアーキテクチャ状態を保持することができる集積回路に置かれたロジックを指し、各独立して保持されたアーキテクチャ状態は、少なくともいくつかの専用の実行リソースと関連付けられる。コアとは対照的に、ハードウェアスレッドは、通常は、独立したアーキテクチャ状態を保持することができる集積回路に置かれた如何なるロジックも指し、独立して保持されたアーキテクチャ状態は、実行リソースへのアクセスを共有する。明らかなように、特定のリソースが共有され、他がアーキテクチャ状態に専用である場合に、ハードウェアスレッドの命名法とコアとの間のラインは重なり合う。しかし、多くの場合に、コア及びハードウェアスレッドは、個別的な論理プロセッサとしてオペレーティングシステムによって見なされ、オペレーティングシステムは、各論理プロセッサで動作を個別的にスケジューリングすることができる。
【0029】
物理プロセッサ400は、
図4に表されるように、2つのコア、コア401及びコア402を含む。ここで、コア401及びコア402は、対称コア、つまり、同じ構成、機能ユニット、及び/又はロジックを備えたコアと見なされる。他の実施形態では、コア401は、アウト・オブ・オーダーのプロセッサコアを含み、コア402は、イン・オーダーのプロセッサコアを含む。しかし、コア401及びコア402は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するよう適応されたコア、変換されたISAを実行するよう適応されたコア、コデザインコア、又は他の既知のコアのような、あらゆるタイプのコアから個別的に選択されてもよい。更に議論を進めるために、コア401に表されている機能ユニットは、コア402内のユニットが同様に動作するものとして、以下で更に詳細に説明される。
【0030】
表されているように、コア401は、2つのハードウェアスレッド(ハードウェアスレッドスロットとも呼ばれる。)と関連し得る2つのアーキテクチャ状態レジスタ401a及び401bを含む。従って、オペレーティングシステムなどのソフトウェアエンティティは、一実施形態では、潜在的に、プロセッサ400を4つの別個のプロセッサ、つまり、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサ又はプロセッシング要素と見なす。上記で暗に示されたように、第1スレッドはアーキテクチャ状態レジスタ401aに関連し、第2スレッドはアーキテクチャ状態レジスタ401bに関連し、第3スレッドはアーキテクチャ状態レジスタ402aに関連してもよく、第4スレッドはアーキテクチャ状態レジスタ402bに関連してもよい。ここで、アーキテクチャ状態レジスタ(401a、401b、402a、及び402b)は、上述されたように、プロセッシング要素、スレッドスロット、又はスレッドユニットに関連してもよい。表されているように、アーキテクチャ状態レジスタ401aは、アーキテクチャ状態レジスタ401bで複製されるので、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ401a及び論理プロセッサ401bのために記憶可能である。コア401において、他のより小さいリソース、例えば、アロケータ及びリネーマブロック430の命令ポインタ及びリネーミングロジックも、スレッド401a及び401bのために複製されてもよい。リオーダ/リタイアメントユニット435のリオーダバッファ、ブランチ・ターゲット・バッファ及び命令トランスレーション・ルックアサイド・バッファ(BTB及びI-TLB)420、ロード/ストアバッファ、及びキューのようないくつかのリソースは、パーティショニングを通じて共有されてもよい。汎用の内部レジスタ、ページ・テーブル・ベース・レジスタ、ローレベル・データキャッシュ及びデータTLB450、実行ユニット440、及びリーダー/リタイアメントユニット435の部分のような他のリソースは、潜在的に完全に共有される。
【0031】
プロセッサ400は、他のリソースをしばしば含み、それらは、完全に共有されても、パーティショニングを通じて共有されても、又はプロセッシング要素によって/それに専用であってもよい。
図4で、プロセッサの例となる論理ユニット/リソースを含む純粋に例示的なプロセッサが表されている。プロセッサは、これらの機能ユニットのいずれも含んでも又は省略してもよく、また、表されていない他の既知の機能ユニット、ロジック、又はファームウェアを含んでもよいことに留意されたい。表されているように、コア401は、単純化された代表的なアウト・オブ・オーダー(OOO)プロセッサコアを含む。しかし、イン・オーダープロセッサが、異なる実施形態では利用されてもよい。
【0032】
コア401は、フェッチされた要素をデコードするようフェッチユニットへ結合されたデコードモジュール425を更に含む。フェッチロジックは、一実施形態で、スレッドスロット401a、401bに夫々関連した個別的なシーケンスを含む。通常、コア401は、プロセッサ400で実行可能な命令を定義/指定する第1ISAに関連する。しばしば、第1ISAの部分である機械コード命令は、実行される命令又は動作を参照/指定する命令の部分(オペコードと呼ばれる。)を含む。デコードモジュール425は、オペコードから命令を認識し、第1ISAによって定義されるように処理するために、デコードされた命令をパイプラインで渡す回路を含む。例えば、デコーダモジュール425は、一実施形態で、トランザクション命令のような特定の命令を認識するよう設計又は適応されたロジックを含む。デコーダモジュール425による認識の結果として、アーキテクチャ又はコア401は、適切な命令に関連したタスクを実行するよう特定の予め定義されたアクションを行う。留意されるべきは、本明細書で記載されているタスク、ブロック、動作、及び方法のいずれもが、単一又は複数の命令に応答して実行されてもよい点であり、命令のいくつかは、新しい又は古い命令であってよい。
【0033】
一例で、アロケータ及びリネーマブロック430は、命令処理結果を記憶するレジスタファイルなどのリソースをリザーブするアロケータを含む。なお、スレッド401a及び401bは、潜在的に、アウト・オブ・オーダー実行が可能であり、アロケータ及びリネーマブロック430は、命令結果を追跡するリオーダバッファなどの他のリソースもリザーブする。リネーマブロック430はまた、プロセッサ400の内部にある他のレジスタにプログラム/命令参照レジスタをリネームするレジスタリネーマを含んでもよい。リオーダ/リタイアメントユニット435は、アウト・オブ・オーダー実行及びアウト・オブ・オーダーで実行された命令のその後のイン・オーダーリタイアメントをサポートするために、上記のリオーダバッファ、ロードバッファ、及びストアバッファなどのコンポーネントを含む。
【0034】
スケジューラ及び実行ユニットブロック440は、一実施形態で、命令/動作を実行ユニットでスケジューリングするスケジューラユニットを含む。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有している実行ユニットの部分でスケジューリングされる。実行ユニットに関連したレジスタファイルがまた、情報命令処理結果を記憶するよう含まれる。例となる実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及び他の既知の実行ユニットを含む。
【0035】
より低いレベルのデータキャッシュ及びデータ/トランスレーション・ルックアサイド・バッファ(D-TLB)450が、実行ユニット440へ結合される。データキャッシュは、メモリコヒーレンシ状態で潜在的に保持される、データオペランドなどの、最近使用/操作された要素を格納するためのものである。D-TLBは、最近の仮想/線形アドレスか物理アドレスへの変換を格納するためのものである。具体例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を含んでもよい。
【0036】
ここで、コア401及びコア402は、最近フェッチされた要素をキャッシュするためのより高いレベルの又はより遠いキャッシュ410へのアクセスを共有する。より高いレベル又はより遠いとは、キャッシュレベルが増大すること、又は実行ユニットから遠ざかることを指すことに留意されたい。一実施形態で、より高いレベルのキャッシュ410は、ラストレベルデータキャッシュ、つまり、プロセッサ400でのメモリ階層内で最後のキャッシュ、例えば、第2又は第3レベルデータキャッシュである。しかし、より高いレベルのキャッシュ410は、それが命令キャッシュにと関連付けられてもよく又はそれを含むということで、そのように限定されない。命令キャッシュの一種であるトレースキャッシュが代わりに、最近デコードされたトレースを格納するようデコーダモジュール425の後に結合されてもよい。
【0037】
表されている構成では、プロセッサ400はまた、バスインターフェース405及び電力制御ユニット460を含み、これらは、本発明の実施形態に従って電力管理を実行してもよい。このシナリオでは、バスインターフェース405は、システムメモリ及び他のコンポーネントなどの、プロセッサ400の外部にあるデバイスと通信するためのものである。
【0038】
メモリコントローラ470は、1つ又は多数のメモリのような他のデバイスとインターフェース接続し得る。例において、バスインターフェース405は、メモリとインターフェース接続するためのメモリコントローラと、グラフィクスプロセッサとインターフェース接続するためのグラフィクスコントローラとを備えたリングインターコネクトを含む。SoC環境では、ネットワークインターフェース、コプロセッサ、メモリ、グラフィクスプロセッサ、及びあらゆる他の既知のコンピュータデバイス/インターフェースなどの、より多くのデバイスが、高い機能性及び低い電力消費とともにスモール・フォーム・ファクタを提供するよう単一のダイ又は集積回路に集積されてもよい。
【0039】
これより
図5を参照すると、本発明の一実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図が示されている。
図5に示されるように、プロセッサコア500は、多段パイプライン化されたアウト・オブ・オーダープロセッサであってよい。コア500は、内蔵電圧レギュレータ又は外部電圧レギュレータから受け取られ得る受電動作電圧に基づき様々な電圧で動作し得る。
【0040】
図5から明らかなように、コア500は、実行される命令をフェッチして、それらをプロセッサパイプラインでの後の使用のために準備するために使用され得るフロントエンドユニット510を含む。例えば、フロントエンドユニット510は、フェッチユニット501、命令キャッシュ503、及び命令デコーダ505を含み得る。いくつかの実施で、フロントエンドユニット510は、マイクロコードストレージ及びマイクロオペレーションストレージとともに、トレースキャッシュを更に含んでもよい。フェッチユニット501は、例えば、メモリ又は命令キャッシュ503から、マクロ命令をフェッチし、それらをプリミティブ、すなわち、プロセッサによって実行されるマイクロオペレーションにデコードするようそれらのマクロ命令を命令デコーダ505へフィードし得る。
【0041】
フロントエンドユニット510と実行ユニット520との間には、マイクロ命令を受け取って、それらを実行のために準備するために使用され得るアウト・オブ・オーダー(OOO)エンジン515が結合されている。より具体的には、OOOエンジン515は、マイクロ命令フローを並べ直して、実行に必要な様々なリソースを割り当てるために、更には、レジスタファイル530及び拡張レジスタファイル535などの様々なレジスタファイル内の記憶位置への論理レジスタのリネーミングを提供するために、様々なバッファを含み得る。レジスタファイル530は、整数演算及び浮動小数点演算のための別個のレジスタファイルを含んでもよい。構成、制御、及び追加の動作のために、機械固有レジスタ(MSR)の組538も存在して、コア500内(及びコアの外部)の様々なロジックにアクセス可能であってよい。
【0042】
例えば、他の特殊なハードウェアの中でも、様々な整数、浮動小数点、及び単一命令複数データ(SIMD)論理ユニットを含む、様々なリソースを含め、様々なリソースが、実行ユニット520に存在してもよい。例えば、そのような実行ユニットは、そのような実行ユニットの中でも特に、1つ以上の算術ロジックユニット(ALU)522及び1つ以上のベクトル実行ユニット524を含み得る。
【0043】
実行ユニットからの結果は、リタイアメントロジック、つまり、リオーダバッファ(ROB)540へ供給され得る。より具体的には、ROB540は、実行される命令に関連した情報を受け取るよう様々なアレイ及びロジックを含んでよい。この情報は、次いで、命令が有効にリタイアされ、プロセッサのアーキテクチャ状態にコミットされたデータをもたらし得るかどうか、又は命令の適切なリタイアメントを妨げる1つ以上の例外(exceptions)が起きたかどうかを決定するために、ROB540によって検査される。当然、ROB540は、リタイアメントに関連した他の動作を扱ってもよい。
【0044】
図5に示されるように、ROB540はキャッシュ550へ結合される。キャッシュ550は、一実施形態では、ローレベルキャッシュ(例えば、L1キャッシュ)であってよいが、本発明の範囲は、これに関して制限されない。また、実行ユニット520は、キャッシュ550へ直接に結合され得る。キャッシュ550から、データ通信は、より高いレベルのキャッシュ、システムメモリ、などと起こり得る。
図5の実施形態ではこのような高レベルで示されているが、本発明の範囲はこれに関して制限されないことを理解されたい。例えば、
図5の実施は、Intel x86命令セットアーキテクチャ(ISA)のようなアウト・オブ・オーダーマシンに関連するが、本発明の範囲はこれに関して制限されない。つまり、他の実施形態は、イン・オーダープロセッサ、縮小命令セットコンピューティング(RISC)プロセッサ(例えば、ARMベースのプロセッサ)、又はエミュレーションエンジン及び関連するロジック回路を介して異なるISAの命令及び動作をエミュレートすることができる他のタイプのISAのプロセッサで、実装されてもよい。
【0045】
これより
図6を参照すると、他の実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図が示されている。
図6の実施形態では、コア600は、電力消費を低減するよう設計された比較的に限られたパイプラインデプスを有しているIntel Atomベースプロセッサなどの、異なるマイクロアーキテクチャの低電力コアであってよい。明らかなように、コア600は、命令を命令デコーダ615へ供給するよう結合された命令キャッシュ610を含む。分岐予測器605が命令キャッシュ610へ結合されてもよい。命令キャッシュ610は、L2キャッシュ(
図6では、説明を簡単にするために、図示せず。)などの他のレベルのキャッシュメモリへ更に結合されてもよいことに留意されたい。次いで、命令デコーダ615は、デコードされた命令を、記憶及び所与の実行パイプラインへの供給のために発行キュー(issue queue,IQ)620へ供給する。マイクロコードROM618が命令デコーダ615へ結合される。
【0046】
浮動小数点パイプライン630は、浮動小数点(floating point,FP)レジスタファイル632を含む。FPレジスタファイル632は、128、256、又は512ビットなどの所与のビット幅の複数のアーキテクチャレジスタを含み得る。パイプライン630は、パイプラインの複数の実行ユニットのうちの1つでの実行のために命令をスケジューリングする浮動小数点スケジューラ634を含む。示されている実施形態では、そのような実行ユニットは、算術ロジックユニット(ALU)635、シャッフルユニット636、及び浮動小数点(FP)加算器638を含む。次いで、これらの実行ユニットで生成された結果は、レジスタファイル632のバッファ及び/又はレジスタに返され得る。当然、これらの数例の実行ユニットを用いて示される一方で、追加の又は異なる浮動小数点実行ユニットが他の実施形態では存在してもよいことを理解されたい。
【0047】
整数パイプライン640も設けられ得る。示されている実施形態では、パイプライン640は整数(INT)レジスタファイル642を含む。INTレジスタファイル642は、128又は256ビットなどの所与のビット幅の複数のアーキテクチャレジスタを含み得る。パイプライン640は、パイプラインの複数の実行ユニットのうちの1つでの実行のために命令をスケジューリングする整数実行(integer execution,IE)スケジューラ644を含む。示されている実施形態では、そのような実行ユニットは、ALU645、シフタユニット646、及びジャンプ実行ユニット(jump execution unit,JEU)648を含む。次いで、これらの実行ユニットで生成された結果は、レジスタファイル642のバッファ及び/又はレジスタに返され得る。当然、これらの数例の実行ユニットを用いて示される一方で、追加の又は異なる整数実行ユニットが他の実施形態では存在してもよいことを理解されたい。
【0048】
メモリ実行(memory execution,ME)スケジューラ650は、TLB654へも結合されているアドレス生成ユニット(address generation unit,AGU)652での実行のためにメモリ動作をスケジューリングし得る。明らかなように、このような構造はデータキャッシュ660へ結合してもよく、データキャッシュ660は、L0及び/又はL1データキャッシュであってもよく、次いで、L2キャッシュを含む更なるレベルのキャッシュメモリヒエラルキへ結合する。
【0049】
アウト・オブ・オーダー実行のためのサポートを提供するために、アロケータ/リネーマ670が、アウト・オブ・オーダーで実行された命令をリタイアメントのために順番に並べ直すよう構成されるリオーダバッファ680に加えて、設けられてもよい。
図6の例示ではこの特定のパイプラインアーキテクチャを用いて示されているが、多くの変更及び代替が可能であることを理解されたい。
【0050】
非対称コアを備えたプロセッサでは、例えば、
図5及び
図6のマイクロアーキテクチャによれば、作業負荷は、電力管理上の理由によりコア間で動的に交換され得ることに留意されたい。これは、これらのコアが、たとえ異なるパイプライン設計及びデプスを有しているとしても、同じ又は関連するISAのコアであり得るからである。そのような動的なコア交換は、ユーザアプリケーション(及び場合によってはカーネルも)にとってトランスペアレントな方法で実行され得る。
【0051】
図7を参照すると、更なる他の実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図が示されている。
図7に表されているように、コア700は、非常に低い電力消費レベルで実行される多段階のイン・オーダーパイプラインを含み得る。1つのそのような例として、コア700は、カリフォルニア州サニーベールにあるARMホールディングス,LTD.から入手可能なARM Cortex A53設計に従うマイクロアーキテクチャを有してもよい。実施において、8段パイプラインが設けられてもよく、これは、32ビット及び64ビットの両方のコードを実行するよう構成される。コア700は、命令をフェッチして、それらをデコードユニット715へ供給するよう構成されるフェッチユニット710を含む。デコードユニット715は、命令、例えば、ARMv8 ISAのような所与のISAのマクロ命令をデコードし得る。キュー730が、デコードされた命令を記憶するようデコードユニット715へ結合してもよいことに更に留意されたい。デコードされた命令は、発行ロジック725へ供給され、発行ロジック725で、デコードされた命令は、複数の実行ユニットのうちの所与の1つに発行され得る。
【0052】
更に
図7を参照して、発行ロジック725は、複数の実行ユニットのうちの1つへ命令を発行してもよい。示されている実施形態では、これらの実行ユニットは、整数ユニット735、乗算ユニット740、浮動小数点/ベクトルユニット750、デュアル発行ユニット760、及びロード/ストアユニット770を含む。これらの異なる実行ユニットの結果は、ライトバック(writeback,WB)ユニット780へ供給されてもよい。説明を簡単にするために1つのライトバックユニットしか示されていないが、いくつかの実施では、別個のライトバックユニットは、実行ユニットの夫々と関連付けられてもよいことを理解されたい。更には、
図7に示されているユニット及びロジックの夫々は、高レベルで表現されているが、特定の実施は、より多くの又は異なった構造を含んでもよいことを理解されたい。
図7で見られるようなパイプラインを備えている1つ以上のコアを用いて設計されたプロセッサは、モバイルデバイスからサーバシステムに及ぶ多種多様なエンド製品で実装されてもよい。
【0053】
図8を参照すると、更に別の実施形態に従うプロセッサコアのマイクロアーキテクチャのブロック図が示されている。
図8に表されているように、コア800は、非常に高い性能レベルで実行される多段階のマルチ発行アウト・オブ・オーダーパイプラインを含み得る(
図7のコア700よりも高い電力量レベルで存在してもよい)。1つのそのような例として、プロセッサ800は、ARM Cortex A57設計に従うマイクロアーキテクチャを有してもよい。実施において、15段(又はそれよりも多い段)のパイプラインが設けられてもよく、32ビット及び64ビットの両方のコードを実行するよう構成される。加えて、パイプラインは、3(又はそれよりも大きい)ワイド及び3(又はそれよりも多い)発行動作を提供し得る。コア800は、命令をフェッチして、それらを、キャッシュ820へ結合されているデコーダ/リネーマ/ディスパッチャユニット815へ供給するよう構成されるフェッチユニット810を含む。ユニット815は、命令、例えば、ARMv8命令セットアーキテクチャのマクロ命令をデコードし、命令内のレジスタ参照をリネームし、(最終的に)選択された実行ユニットへ命令をディスパッチし得る。デコードされた命令は、キュー825に格納されてもよい。説明を簡単にするために1つのキュー構造しか
図8には示されていないが、別個のキューが多種多様な実行ユニットの夫々のために設けられてもよいことを理解されたい。
【0054】
また、
図8には、発行ロジック830が示されており、発行ロジック830から、キュー825に格納されているデコードされた命令が、選択された実行ユニットへ発行され得る。発行ロジック830はまた、発行ロジック830が結合する多種多様なタイプの実行ユニットの夫々のための別個の発行ロジックで、特定の実施形態では実装されてもよい。
【0055】
デコードされた命令は、複数の実行ユニットのうちの所与の1つへ発行されてもよい。示されている実施形態では、これらの実行ユニットは、1つ以上の整数ユニット835、乗算ユニット840、浮動小数点/ベクトルユニット850、分岐ユニット860、及びロード/ストアユニット870を含む。実施形態において、浮動小数点/ベクトルユニット850は、128又は256ビットのSIMD又はベクトルデータを扱うよう構成され得る。また更に、浮動小数点/ベクトルユニット850は、IEEE-754倍精度浮動小数点演算を実行してもよい。これらの異なる実行ユニットの結果は、ライトバックユニット880へ供給されてもよい。いくつかの実施で、別個のライトバックユニットは、実行ユニットの夫々と関連付けられてもよい。更には、
図8に示されているユニット及びロジックの夫々が高レベルで表現されているが、特定の実施は、より多くの又は異なる構造を含んでもよい。
【0056】
非対称コアを備えたプロセッサでは、例えば、
図7及び
図8のマイクロアーキテクチャによれば、作業負荷は、電力管理上の理由により動的に交換され得ることに留意されたい。これは、これらのコアが、たとえ異なるパイプライン設計及びデプスを有しているとしても、同じ又は関連するISAのコアであり得るからである。そのような動的なコア交換は、ユーザアプリケーション(及び場合によってはカーネルも)にとってトランスペアレントな方法で実行され得る。
【0057】
図5~8のうちのいずれか1つで見られるようなパイプラインを備えている1つ以上のコアを使用して設計されたプロセッサは、モバイルデバイスからサーバシステムに及ぶ多種多様なエンド製品で実装されてもよい。これより
図9を参照すると、本発明の他の実施形態に従うプロセッサのブロック図が示されている。
図9の実施形態では、プロセッサ900は、複数のドメインを含むSoCであってよく、各ドメインは、独立した動作電圧及び動作周波数で動作するよう制御され得る。具体的な実例として、プロセッサ900は、インテル コーポレイションから入手可能なi3、i5、i7、又は他のそのようなプロセッサのような、Intel Architecture Coreベースのプロセッサであってもよい。しかし、カリフォルニア州サニーベールにあるAdvanced Micro Devices,Inc.(ARM)から入手可能なもののような他の低電力プロセッサ、ARM Holdings,Ltd.又はそのライセンシーからのARMベース設計、あるいは、カリフォルニア州サニーベールにあるARMホールディングスMIPS Technologies,Inc.又はそのライセンシー若しくは採用者からのMIPSベース設計が、代わりに、Apple A7プロセッサ、Qualcomm Snapdragonプロセッサ、又はTexas Instruments OMAPプロセッサなどのような他の実施形態で存在してもよい。そのようなSoCは、異種システムアーキテクチャに基づいたプロセッサ設計を有している異種システムアーキテクチャを組み込み得るスマートフォン、タブレットコンピュータ、ファブレットコンピュータ、Ultrabookコンピュータ、又は他のポータブル型コンピューティングデバイスなどの低電力システムで使用されてもよい。
【0058】
図9に示されている高レベルビューで、プロセッサ900は、複数のコアユニット910a~910nを含む。各コアユニットは、1つ以上のプロセッサコア、1つ以上のキャッシュメモリ、及び他の回路を含んでもよい。各コアユニット910は、1つ以上の命令セット(例えば、x86命令セット(より新しいバージョンで加えられているいくつかの拡張を含む);MIPS命令セット;ARM命令セット(NEONなどの任意の追加拡張を含む))若しくは他の命令セット又はそれらの組み合わせをサポートしてもよい。コアユニットのいくつかは、(例えば、異なる設計の)異種リソースであってもよいことに留意されたい。更には、そのようなコアの夫々は、キャッシュメモリ(図示せず。)へ結合されてもよく、キャッシュメモリは、実施形態において、共有レベル2(L2)キャッシュメモリであってよい。不揮発性ストレージ930は、様々なプログラム及び他のデータを記憶するために使用されてもよい。例えば、このストレージは、マイクロコード、ブート情報(例えば、BIOS)、他のシステムソフトウェアなどの少なくとも部分を記憶するために使用されてもよい。
【0059】
各コアユニット910はまた、プロセッサの付加的な回路への相互接続を可能にするようバスインターフェースユニットなどのインターフェースを含んでもよい。実施形態で、各コアユニット910は、一次キャッシュコヒーレントオンダイインターコネクトとして動作し得るコヒーレントファブリックへ結合し、次いで、コヒーレントファブリックは、メモリコントローラ935へ結合する。次いで、メモリコントローラ935は、DRAMなどのメモリ(
図9の例示を簡単にするために図示せず。)との通信を制御する。
【0060】
コアユニットに加えて、グラフィクス処理を実行するとともに、場合によりグラフィクスプロセッサでの汎用動作(いわゆる、GPGPU動作)を実行する1つ以上のグラフィクス・プロセッシング・ユニット(GPU)を含み得る少なくとも1つのグラフィクスユニット920を含め、付加的なプロセッシングエンジンが、プロセッサ内に存在する。加えて、少なくとも1つの画像信号プロセッサ925が存在してもよい。信号プロセッサ925は、SoCの内部にあるか又はオフチップである1つ以上の捕捉デバイスから受け取られた入来画像データを処理するよう構成され得る。
【0061】
他のアクセラレータも存在してもよい。
図9の実例では、ビデオコーダ950は、ビデオ情報の符号化及び復号化を含むコーディング動作、例えば高精細ビデオコンテンツのためのハードウェア加速サポートを提供すること、を実行してもよい。ディスプレイコントローラ955は、システムの内部及び外部ディスプレイのためのサポートを提供することを含む表示動作を加速させるよう更に設けられてもよい。加えて、セキュリティプロセッサ945は、セキュアブート動作、様々な暗号化動作、などのようなセキュリティ動作を実行するために存在してもよい。
【0062】
ユニットの夫々は、各自の電力消費を電力マネージャ940により制御され得る。電力マネージャ940は、本明細書で記載されている様々な電力管理技術を実行する制御ロジックを含み得る。
【0063】
いくつかの実施形態で、プロセッサ900は、様々な周辺機器が結合し得るコヒーレントファブリックへ結合されている非コヒーレントファブリックを更に含んでもよい。1つ以上のインターフェース960a~960dは、1つ以上のオフチップデバイスとの通信を可能にする。そのような通信は、数ある通信プロトコルのタイプの中でも、PCIe、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI(登録商標)などの様々な通信プロトコルを経由してもよい。
図9の実施形態ではこのような高レベルで示されているが、本発明の範囲はこれに関して制限されないことを理解されたい。
【0064】
これより
図10を参照すると、代表的なSoCのブロック図が示されている。示されている実施形態では、SoC1000は、スマートフォン、又はタブレットコンピュータ若しくは他のポータブルコンピューティングデバイスなどの他の低電力デバイスへの組み込みのために最適化されるよう低電力動作のために構成されたマルチコアSoCであってよい。例として、SoC1000は、より高い電力及び/又は低電力のコア、例えば、アウト・オブ・オーダーコア及びイン・オーダーコア、の組み合わせのような、非対称な又は異なるタイプのコアを用いて実装されてもよい。種々の実施形態で、これらのコアは、Intel Architectureコア設計又はARMアーキテクチャ設計に基づいてもよい。更なる他の実施形態では、IntelコアとARMコアとの混合が、所与のSoCで実装されてもよい。
【0065】
図10から明らかなように、SoC1000は、複数の第1コア1012a~1012dを有している第1コアドメイン1010を含む。例において、これらのコアは、イン・オーダーコアのような低電力コアであってよい。一実施形態で、これらの第1コアは、ARM Cortex A53コアとして実装されてもよい。次いで、これらのコアは、コアドメイン1010のキャッシュメモリ1015へ結合する。加えて、SoC1000は、第2コアドメイン1020を含む。
図10の実例では、第2コアドメイン1020は、複数の第2コア1022a~1022dを有している。例において、これらのコアは、第1コア1012よりも消費電力が高いコアであってよい。実施形態で、第2コアは、ARM Cortex A57コアとして実装され得るアウト・オブ・オーダーコアであってよい。次いで、これらのコアは、コアドメイン1020のキャッシュメモリ1025へ結合する。
図10に示されている例は、各ドメインで4つのコアを含むが、より多い又はより少ないコアが他の例では所与のコアで存在してもよいことに留意されたい。
【0066】
更に
図10を参照して、グラフィクスドメイン1030も設けられている。グラフィクスドメイン1030は、グラフィクス作業負荷(例えば、コアドメイン1010及び1020の1つ以上のコアによって与えられる。)を独立して実行するよう構成された1つ以上のグラフィクス・プロセッシング・ユニット(GPU)を含んでもよい。例として、GPUドメイン1030は、グラフィクス及び表示レンダリング動作を提供することに加えて、様々なスクリーンサイズのための表示サポートを提供するために使用されてもよい。
【0067】
明らかなように、様々なドメインがコヒーレントインターコネクト1040へ結合する。コヒーレントインターコネクト1040は、実施形態で、キャッシュコヒーレントインターコネクトファブリックであってもよく、キャッシュコヒーレントインターコネクトファブリックは次いで、内蔵メモリコントローラ1050へ結合する。コヒーレントインターコネクト1040は、いくつかの例では、L3キャッシュなどの共有キャッシュメモリを含んでもよい。実施形態で、メモリコントローラ1050は、DRAM(
図10では例示を簡単にするために図示せず。)の複数のチャネルなどの、オフチップメモリとの通信の複数のチャネルを提供する直接メモリコントローラであってよい。
【0068】
種々の例で、コアドメインの数は様々であってよい。例えば、モバイルコンピューティングデバイスへの組み込みに適した低電力SoCについては、
図10に示されているように、存在することができるコアドメインの数は限られていることがある。また更に、そのような低電力SoCでは、より高電力のコアを含むコアドメイン1020は、含まれるコアの数がより少ないことがある。例えば、1つの実施において、2つのコア1022が、提言された電力消費レベルでの動作を可能にするよう設けられ得る。加えて、異なるコアドメインはまた、異なるドメイン間の作業負荷の動的な交換を可能にするよう割り込みコントローラへ結合されてもよい。
【0069】
更なる他の実施形態では、付加的な任意のIPロジックとともに、より多くのコアドメインが存在してもよく、SoCは、デスクトップ、サーバ、高性能コンピューティングシステム、基地局などのような他のコンピューティングデバイスへの組み込みのために、より高いパフォーマンス(電力)レベルへスケーリングされ得る。1つのそのような例として、所与の数のアウト・オブ・オーダーコアを夫々が有している4つのコアドメインが設けられてもよい。また更に、任意のGPUサポート(例として、GPGPUの形をとってもよい。)に加えて、特定の機能(例えば、ウェブサービング、ネットワークプロセッシング、スイッチング、など)のための最適化されたハードウェアサポートを提供する1つ以上のアクセラレータも設けられてもよい。加えて、入出力インターフェースが、そのようなアクセラレータをオフチップのコンポーネントへ結合するために存在してもよい。
【0070】
これより
図11を参照すると、他の例となるSoCのブロック図が示されている。
図11の実施形態で、SoC1100は、マルチメディアアプリケーション、通信及び他の機能のための高いパフォーマンスを可能にする様々な回路を含んでもよい。従って、SoC1100は、スマートフォン、タブレットコンピュータ、スマートTV、などのような、広範なポータブル及び他のデバイスへの組み込み適している。示されている例では、SoC1100 は、中央演算処理装置(CPU)ドメイン1110を含む。実施形態で、複数の個別的なプロセッサコアがCPUドメイン1110に存在してもよい。一例として、CPUドメイン1110は、4つのマルチスレッドコアを備えているクアッドコアプロセッサであってよい。そのようなプロセッサは、同種又は異種プロセッサ、例えば、低電力及び高電力プロセッサコアの混合、であってよい。
【0071】
次いで、GPUドメイン1120は、グラフィクス及びコンピュートAPIを扱うよう1つ以上のGPUで高度なグラフィクス処理を実行するために設けられている。DSPユニット1130は、マルチメディア命令の実行中に起こり得る高度な計算に加えて、音楽の再生、オーディオ/ビデオ、などのような低電力マルチメディアアプリケーションを扱う1つ以上の低電力DSPを提供し得る。次いで、通信ユニット1140は、セルラー通信(3G/4G LTEを含む)、無線ローカルエリアプロトコル(例えば、Bluetooth(登録商標))、IEEE802.11などのような様々な無線プロトコルを介して接続性を提供する様々なコンポーネントを含んでもよい。
【0072】
また更に、マルチメディアプロセッサ1150は、ユーザジェスチャの処理を含め、高精細のビデオ及びオーディオコンテンツの捕捉及び再生を実行するために使用されてもよい。センサユニット1160は、所与のプラットフォームに存在する様々なオフチップセンサへインターフェース接続するよう複数のセンサ及び/又はセンサコントローラを含んでもよい。イメージ・シグナル・プロセッサ(ISP)1170は、静止カメラ及びビデオカメラを含む、プラットフォームの1つ以上のカメラからの捕捉コンテンツに関して画像処理を実行してもよい。
【0073】
ディスプレイプロセッサ1180は、ディスプレイで再生されるコンテンツを無線により通信する能力を含め、所与のピクセル密度の高精細ディスプレイへの接続のためのサポートを提供し得る。また更に、ロケーションユニット1190は、複数のGPUコンスタレーションがGPUレシーバなどを用いて取得された非常に正確な位置情報をアプリケーションに供給するためのサポートを備えたグローバル・ポジショニング・システム(GPU)レシーバを含んでもよい。
図11の例ではこのような特定のコンポーネントの組で示されているが、多数の変形及び代替が可能であることを理解されたい。
【0074】
これより
図12を参照すると、実施形態が使用され得るシステムの例のブロック図が示されている。明らかなように、システム1200は、スマートフォン又は他の無線通信機であってよい。ベースバンドプロセッサ1205は、システムから送信されるか又はシステムによって受信される通信信号に関して様々な信号処理を実行するよう構成される。次いで、ベースバンドプロセッサ1205は、アプリケーションプロセッサ1210へ結合され、アプリケーションプロセッサ1210は、多数のよく知られていたソーシャルメディア及びマルチメディアアプリケーションなどのユーザアプリケーションに加えて、OS及び他のシステムソフトウェアを実行するためのシステムのメインCPUであってよい。アプリケーションプロセッサ1210は、デバイスの様々な他の計算動作を実行するよう更に構成されてもよい。
【0075】
次いで、アプリケーションプロセッサ1210は、ユーザインターフェース/ディスプレイ1220、例えば、タッチスクリーンディスプレイへ結合することができる。加えて、アプリケーションプロセッサ1210は、不揮発性メモリ、つまり、フラッシュメモリ1230、及びシステムメモリ、つまり、動的ランダム・アクセス・メモリ(DRAM)1235を含むメモリシステムへ結合してもよい。更に明らかなように、アプリケーションプロセッサ1210は、ビデオ及び/又は静止画像を記録することができる1つ以上の画像捕捉デバイスなどの捕捉デバイス1241へ更に結合する。
【0076】
更に
図12を参照すると、加入者識別モジュールと、場合により、セキュアストレージ及び暗号プロセッサとを有するユニバーサル集積回路カード(universal integrated circuit card,UICC)1246も、アプリケーションプロセッサ1210へ結合される。システム1200は、アプリケーションプロセッサ1210へ結合し得るセキュリティプロセッサ1250を更に含んでもよい。複数のセンサ1225が、加速度計及び他の環境情報などの様々な検知情報の入力を可能にするようアプリケーションプロセッサ1210へ結合してもよい。オーディオ出力デバイス1295は、例えば、ボイス通信、再生又はストリーミングオーディオデータ、などの形で、音響を出力するインターフェースを提供し得る。
【0077】
更に表されているように、近距離通信(near field communication,NFC)非接触インターフェース1260が設けられており、これは、NFCアンテナ1265を介してNFC近接場で通信する。別個のアンテナが
図12では示されているが、いくつかの実施形態では、1つのアンテナ又は異なるアンテナの組が、様々な無線機能を可能にするよう設けられてもよい。
【0078】
電力管理集積回路(PMIC)1215は、プラットフォームレベルの電力管理を実行するようアプリケーションプロセッサ1210へ結合する。これを達成するために、PMIC1215は、望まれるように特定の低電力状態に入るようアプリケーションプロセッサ1210へ電力管理リクエストを発行し得る。更には、プラットフォーム制約に基づいて、PMIC1215はまた、システム1200の他のコンポーネントの電力レベルを制御してもよい。
【0079】
送信及び受信される通信を可能にするために、様々な回路が、ベースバンドプロセッサ1205とアンテナ1290との間に結合され得る。具体的に、無線周波数(RF)トランシーバ1270及び無線ローカル・エリア・ネットワーク(WLAN)トランシーバ1275が存在してもよい。一般に、RFトランシーバ1270は、3G又は4G無線通信プロトコルなどの所与の無線通信プロトコルに従って、例えば、符号分割多重アクセス(CDMA)、グローバル・システム・フォー・モバイル・コミュニケーション(GSM)、ロング・ターム・エボリューション(LTE)又は他のプロトコルに従って、無線データ及びコールを受信及び送信するために使用され得る。加えて、GPSセンサ1280が存在してもよい。無線信号、例えば、AM/FM及び他の信号の受信又は送信などの他の無線通信も提供され得る。加えて、WLANトランシーバ1275を介して、局所無線通信も実現可能である。
【0080】
これより
図13を参照すると、実施形態が使用され得るシステムの他の例のブロック図が示されている。
図13の実例では、システム1300は、タブレットコンピュータ、2:1タブレット、ファブレット又は他のコンバーチブル型若しくはスタンドアロン型のタブレットシステムのようなモバイル低電力システムであってよい。表されているように、SoC1310が存在し、デバイスのためのアプリケーションプロセッサとして動作するよう構成され得る。
【0081】
様々なデバイスがSoC1310へ結合し得る。示されている実例では、メモリサブシステムは、SoC1310へ結合されたフラッシュメモリ1340及びDRAM1345を含む。加えて、タッチパネル1320が、タッチパネル1320のディスプレイでの仮想キーボードの提供を含め、表示機能及びタッチを介したユーザ入力をもたらすようSoC1310へ結合されている。有線ネットワーク接続を提供するために、SoC1310は、Ethernet(登録商標)インターフェース1330へ結合する。ペリフェラルハブ1325は、様々なポート又は他のコネクタのいずれかによってシステム1300へ結合され得るように、様々な周辺機器とのインターフェース接続を可能にするようSoC1310へ結合されている。
【0082】
SoC1310内の内部電力管理回路及び機能に加えて、PMIC1380は、例えば、システムがバッテリ1390によって又はACアダプタ1395を介してAC電源によって給電されるかどうかに基づいて、プラットフォームベースの電力管理を提供するようSoC1310へ結合されている。この電源ベースの電力管理に加えて、PMIC1380は、環境及び使用条件に基づきプラットフォーム電力管理動作を更に実行してもよい。また更に、PMIC1380は、SoC1310内で様々な電力管理動作を引き起こすようSoC1310へ制御及びステータス情報を送ってもよい。
【0083】
更に
図13を参照すると、無線機能を提供するために、WLANユニット1350が、SoC1310へ、それからアンテナ1355へ結合されている。様々な実施で、WLANユニット1350は、1つ以上の無線プロトコルに従った通信を提供し得る。
【0084】
更に表されているように、複数のセンサ1360がSoC1310へ結合してもよい。これらのセンサは、様々な加速度計、環境及び他のセンサ(ジェスチャセンサを含む。)を含んでもよい。最後に、オーディオコーデック1365が、オーディオ出力デバイス1370へのインターフェースを提供するようSoC1310へ結合されている。当然、
図13ではこの特定の実施を用いて示されているが、多くの変形及び代替が可能であることを理解されたい。
【0085】
これより
図14を参照すると、ノートブック、Ultrabook又は他のスモールフォームファクタ(small form factor)システムのような代表的なコンピュータシステム1400のブロック図が示されている。プロセッサ1410は、一実施形態で、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、埋め込みプロセッサ、又は他の既知のプロセッシング要素を含む。表されている実施では、プロセッサ1410は、システム1400の様々なコンポーネントの多くと通信するメインプロセッシングユニット及びセントラルハブとして動作し、本明細書で記載される電力管理回路を含んでもよい。一例として、プロセッサ1410はSoCとして実装される。
【0086】
プロセッサ1410は、一実施形態で、システムメモリ1415と通信する。実例として、システムメモリ1415は、所与の量のシステムメモリを提供するよう複数のメモリデバイス又はモジュールを介して実装される。
【0087】
データ、アプリケーション、1つ以上のオペレーティングシステム、などのような情報の恒久的な記憶を提供するために、大容量ストレージ1420もプロセッサ1410へ結合し得る。様々な実施形態で、より薄くかつより軽いシステム設計を可能にするために、更には、システム応答性を改善するために、この大容量ストレージは、SADを介して実装されてもよく、あるいは、大容量ストレージは、高速な起動がシステム活動の再開始時に起こり得るように、パワーダウンイベント中にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にするSADキャッシュとして動作するよう、より少量のSADストレージとともにハードディスクドライブ(HDD)を用いて主として実装されてもよい。また
図14に示されるように、フラッシュデバイス1422が、例えば、シリアル・ペリフェラル・インターフェース(SPI)を介して、プロセッサ1410へ結合されてもよい。このフラッシュデバイスは、基本入出力ソフトウェア(BIOS)及びシステムの他のファームウェアを含むシステムソフトウェアの不揮発性記憶を提供し得る。
【0088】
様々な入出力(I/O)デバイスがシステム1400内に存在してもよい。具体的に、
図14の実施形態では、タッチスクリーン1425を更に提供する高精細LCD又はLEDパネルであることができるディスプレイ1424が示されている。一実施形態で、ディスプレイ1424は、高性能グラフィクスインターコネクトとして実装され得るディスプレイインターコネクトを介して、プロセッサ1410へ結合され得る。タッチスクリーン1425は、実施形態においてI2Cインターコネクトであることができる他のインターコネクトを介して、プロセッサ1410へ結合され得る。更に
図14に示されるように、タッチスクリーン1425に加えて、タッチによるユーザ入力は、タッチパッド1430を介しても行われ得る。タッチパッド1430は、筐体内に構成されてもよく、また、タッチスクリーン1425と同じI2Cインターコネクトへ結合されてもよい。
【0089】
知覚コンピューティング及び他の目的のために、様々なセンサがシステム内に存在してもよく、種々の方法でプロセッサ1410へ結合され得る。ある慣性及び環境センサは、センサハブ1440を通じて、例えば、I2Cインターコネクトを介して、プロセッサ1410へ結合してもよい。
図14に示される実施形態では、これらのセンサには、加速度計1441、周囲光センサ(ALS)1442、コンパス1443、及びジャイロスコープ1444が含まれ得る。他の環境センサには、1つ以上の熱センサ1446が含まれてもよく、熱センサ1446は、いくつかの実施形態で、システム管理バス(SMBus)バスを介してプロセッサ1410へ結合する。
【0090】
また
図14から明らかなように、様々な周辺機器が、ロー・ピン・カウント(low pin count,LPC)インターコネクトを介してプロセッサ1410へ結合してもよい。示されている実施形態では、様々なコンポーネントが、埋め込みコントローラ1435を通じて結合され得る。そのようなコンポーネントは、キーボード1436(例えば、PS2インターフェースを介して結合される。)、ファン1437、及び熱センサ1439を含むことができる。いくつかの実施形態では、タッチパッド1430も、PS2インターフェースを介してEC1435へ結合し得る。加えて、信頼プラットフォームモジュール(trusted platform module,TPM)1438のようなセキュリティプロセッサも、このLPCインターコネクトを介してプロセッサ1410へ結合し得る。
【0091】
システム1400は、無線を含む様々な方法で外部デバイスと通信することができる。
図14に示される実施形態では、様々な無線モジュールが存在し、それらの夫々が、特定の無線通信プロトコルのために構成された電波(radio)に対応することができる。近接場(near field)のような短距離での無線通信のための1つの方法は、NFCユニット1445を介してもよい。NFCユニット1445は、一実施形態で、SMBusを介してプロセッサ1410と通信し得る。このNFCユニット1445を介して、互いに近接近しているデバイスは通信可能であることに留意されたい。
【0092】
図14において更に明らかなように、追加の無線ユニットとして、WLANユニット1450及びBluetoothユニット1452を含む他の短距離無線エンジンを含むことができる。WLANユニット1450を用いて、Wi-Fi通信が実現可能であり、一方、Bluetoothユニット1452を介して、短距離Bluetooth通信が行われ得る。これらのユニットは、所与のリンクを介してプロセッサ1410と通信し得る。
【0093】
加えて、無線広域通信(例えば、セルラー又は無線広域プロトコルに従う。)がWWANユニット1456により行われ得る。WWANユニット1456は、次いで、加入者識別モジュール(SIM)1457へ結合し得る。加えて、位置情報の受信及び使用を可能にするために、GPSモジュール1455も存在してもよい。
図14に示される実施形態では、WWANユニット1456と、カメラモジュール1454のような内蔵捕捉デバイスとは、所与のリンクを介して通信してもよいことに留意されたい。
【0094】
オーディオ入力及び出力を提供するために、オーディオプロセッサがデジタル・シグナル・プロセッサ(DSP)1460を介して実装され得る。DSP1460は、高精細オーディオ(HDA)リンクを介してプロセッサ1410へ結合し得る。同様に、DSP1460は、内蔵コーダ/デコーダ(CODEC)及び増幅器1462と通信してもよく、CODEC及び増幅器1462は、次いで、筐体内に実装され得る出力スピーカ1463へ結合し得る。同様に、CODEC及び増幅器1462は、マイクロホン1465からオーディオ入力を受け取るよう結合され得る。マイクロホン1465は、実施形態で、システム内の様々な動作の音声作動制御を可能にするよう高品位オーディオ入力を提供するためにデュアルアレイマイクロホン(例えば、デジタルマイクロホンアレイ)を介して実装され得る。また、オーディオ出力が、増幅器/CODEC1462からヘッドホンジャック1464へ供給可能であることにも留意されたい。
図14の実施形態ではこれらの特定のコンポーネントを用いて示されているが、本発明の範囲がこれに関して制限されないことを理解されたい。
【0095】
実施形態は、多種多様なシステムタイプで実装されてもよい。これより
図15Aを参照すると、本発明の実施形態に従うシステムのブロック図が示されている。
図15Aに示されるように、マイクロプロセッサシステム1500は、ポイント・ツー・ポイントのインターコネクトシステムであり、ポイント・ツー・ポイントインターコネクト1550を介して結合されている第1プロセッサ1570及び第2プロセッサ1580を含む。
図15Aに示されるように、プロセッサ1570及び1580の夫々は、第1プロセッサコア及び第2プロセッサコア(すなわち、プロセッサコア1574aと1574b、及びプロセッサコア1584aと1584b)を含むマルチコアプロセッサであってよい。なお、場合により、多数の更なるコアがプロセッサに存在してもよい。プロセッサの夫々は、本明細書で記載されるプロセッサベースの電力管理を実行するようPCU又は他の電力管理ロジックを含むことができる。
【0096】
更に
図15Aを参照すると、第1プロセッサ1570は、内蔵メモリコントローラ(IMC)1572と、ポイント・ツー・ポイント(P-P)インターフェース1576及び1578とを更に含む。同様に、第2プロセッサ1580は、IMC1582と、P-Pインターフェース1586及び1588とを含む。
図15Aに示されるように、IMC1572及び1582は、プロセッサを各々のメモリ、つまり、メモリ1532及びメモリ1534へ結合する。メモリ1532及びメモリ1534は、各々のプロセッサへ局所的に取り付けられたシステムメモリ(例えば、DRAM)の部分であってよい。第1プロセッサ1570及び第2プロセッサ1580は、夫々、P-Pインターコネクト1562及び1564を介してチップセット1590へ結合され得る。
図15Aに示されるように、チップセット1590は、P-Pインターフェース1594及び1598を含む。
【0097】
更には、チップセット1590は、チップセット1590をP-Pインターコネクト1539によって高性能グラフィクスエンジン1538と結合するインターフェース1592を含む。次いで、チップセット1590は、インターフェース1596を介して第1バス1516へ結合されてもよい。
図15Aに示されるように、様々な入出力(I/O)デバイス1514が、第1バス1516を第2バス1520へ結合するバスブリッジとともに、第1バス1516結合されてもよい。例えば、キーボード/マウス1522、通信デバイス1526、及びデータ記憶ユニット1528(例えば、一実施形態でコード1530を含むディスクドライブ又は他の大容量記憶デバイス)を含む、様々なデバイスが、第2バス1520へ結合され得る。更に、オーディオI/O1524が第2バス1520へ結合されてもよい。実施形態は、スマートセルラー電話機、タブレットコンピュータ、ネットブック、Ultrabook、などのようなモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。
【0098】
これより
図15Bを参照すると、本発明の実施形態に従う第2の、より具体的な、例示的なシステム1501のブロック図が示されている。
図15A及び
図15Bの同じ要素は、同じ参照番号を付されており、
図15Aの特定の側面は、
図15Bの他の側面を不明りょうしないように、
図15Bから省略されている。
【0099】
図15Bは、プロセッサ1570、1580が、夫々、内蔵メモリ及びI/O制御ロジック(“CL”)1571及び1581を含み得ることを表す。よって、制御ロジック1571及び1581は、内蔵メモリコントローラユニットを含み、かつ、I/O制御ロジックを含む。
図15Bは、制御ロジック1571及び1581へ結合されているメモリ1532、1534だけではなく、I/Oデバイス1513も制御ロジック1571及び1581へ結合されていることも表している。レガシーI/Oデバイス1515がチップセット1590へ結合されている。
【0100】
少なくとも1つの実施形態の1つ以上の態様は、プロセッサなどの集積回路内のロジックを表現及び/又は定義する、機械可読媒体に記憶された代表コードによって実装されてもよい。例えば、機械可読媒体は、プロセッサ内の様々なロジックを表す命令を含んでもよい。機械によって読み出される場合に、命令は、機械に、本明細書で記載されている技術を実行するようロジックを製造させ得る。そのような表現は、「IPコア」として知られており、集積回路の構造を記述するハードウェアモデルとして有形な機械可読媒体に記憶され得る集積回路用のロジックの再利用可能なユニットである。ハードウェアモデルは、様々なカスタマ又は製造設備へ供給されてもよく、カスタマ又は製造設備は、集積回路を製造する製造機械にハードウェアモデルをロードする。集積回路は、回路が、本明細書で記載されている実施形態のいずれかに従って、記載されている動作を実行するように、製造され得る。
【0101】
図16は、実施形態に従って動作を実行するよう集積回路を製造するために使用され得るIPコア開発システム1600を表すブロック図である。IPコア開発システム1600は、より大きい設計に組み込まれ得るモジュール式の再利用可能な設計を生成するために使用されるか、あるいは、集積回路全体(例えば、SoC集積回路)を構成するために使用され得る。設計設備1630は、高水準プログラミング言語(例えば、C/C++)でIPコア設計のソフトウェアシミュレーション1610を生成することができる。ソフトウェアシミュレーション1610は、IPコアの挙動を設計、試験、及び検証するために使用され得る。レジスタ転送レベル(register transfer level,RTL)設計は、その場合に、シミュレーションモデルから作成又は合成され得る。RTL設計1615は、モデル化されたデジタル信号を用いて実行される関連ロジックを含む、ハードウェアレジスタ間のデジタル信号のフローをモデル化する集積回路の挙動の抽象化である。RTL設計1615に加えて、ロジックレベル又はトランジスタレベルでのより低いレベルの設計も、作成、設計、又は合成されてもよい。よって、内部設計及びシミュレーションの特定の詳細は様々であり得る。
【0102】
RTL設計1615又は同等物は、設計設備によってハードウェアモデル1620に更に合成されてもよい。ハードウェアモデル1620は、ハードウェア記述言語(HDL)又は物理設計データの何らかの他の表現にあってよい。HDLは、IPコア設計を検証するよう更にシミュレーション又は試験されてもよい。IPコア設計は、不揮発性メモリ1640(例えば、ハードディスク、フラッシュメモリ、又は任意の不揮発性記憶媒体)を用いてサードパーティの製造設備1665への配信のために記憶され得る。代替的に、IPコア設計は、有線接続1650又は無線接続1660を介して(例えば、インターネットを経由して)送信されてもよい。製造設備1665は、次いで、IPコア設計に少なくとも部分的に基づく集積回路を製造し得る。製造された集積回路は、本明細書で記載されているコンポーネント及び/又はプロセスに従う動作を実行するよう構成され得る。
【0103】
図17A~25は、以下で、本明細書で記載されているコンポーネント及び/又はプロセスの実施形態を実装するための例示的なアーキテクチャ及びシステムの詳細に記載する。いくつかの実施形態で、本明細書で記載されている1つ以上のハードウェアコンポーネント及び/又は命令は、以下で詳述されるようにエミュレートされ、あるいは、ソフトウェアモジュールとして実装される。
【0104】
上記で詳述された命令の実施形態は、以下で詳述される「汎用ベクトルフレンドリ命令フォーマット」(generic vector friendly instruction format)で具現され得る。他の実施形態では、そのようなフォーマットは利用されず、他の命令フォーマットが使用されるが、ライトマスク(writemask)レジスタ、様々なデータ変換(スウィズル(swizzle)、ブロードキャスト、など)、アドレッシング、などの以下の記載は、一般的に、上記の命令の実施形態の記載に適用可能である。更に、例示的なシステム、アーキテクチャ、及びパイプラインが以下で詳述される。上記の命令の実施形態は、そのようなシステム、アーキテクチャ、及びパイプラインで実行され得るが、詳述されているものに限られない。
【0105】
命令セットは1つ以上の命令フォーマットを含むことがある。所与の命令フォーマットは、とりわけ、実行されるべき動作(例えば、オペコード)と、その動作が実行されるべきであるオペランド及び/又は他のデータフィールド(例えば、マスク)とを指定するよう様々なフィールド(例えば、ビットの数、ビットの位置)を定義し得る。いくつかの命令フォーマットは、命令テンプレート(又はサブフォーマット)の定義によって更に細かく分類される。例えば、所与の命令フォーマットの命令テンプレートは、命令フォーマットのフィールドの異なるサブセットを持つように定義されても(含まれているフィールドは、通常は、同じ順序にあるが、少なくとも一部は、含まれているフィールドが少ないために、異なったビット位置を有している。)、かつ/あるいは、所与の命令が異なるように解釈されたように定義されてもよい。よって、ISAの各命令は、所与の命令フォーマットを用いて(望まれる場合には、その命令フォーマットの命令テンプレートの所与の1つで)表現され、オペコード及びオペランドを指定するフィールドを含む。例えば、例示的なADD命令は、特定のオペコードと、そのオペコードを指定するオペコードフィールド及びオペランド(ソース1/あて先及びソース2)を選択するオペランドフィールドを含む命令フォーマットとを有しており、命令ストリーム内のこのADD命令の出現は、特定のオペランドを指定するオペランドフィールドで特定のコンテンツを有することになる。Advanced Vector Extensions(AVX)(AVX1及びAVX2)と呼ばれ、Vector Extensions(VEX)コーディングスキームを使用するSIMD拡張の組がリリース及び/又は公開されている(例えば、Intel 64及びIA-32アーキテクチャソフトウェア開発者のマニュアル、2014年9月を参照;Intel Advanced Vector Extensions Programming Reference、2014年10月を参照)。
【0106】
[例となる命令フォーマット]
本明細書で記載されている命令の実施形態は、種々のフォーマットで具現され得る。更に、例示的なシステム、アーキテクチャ、及びパイプラインは、以下で詳述される。命令の実施形態は、そのようなシステム、アーキテクチャ、及びパイプラインで実行され得るが、詳述されているものに限られない。
【0107】
[汎用ベクトルフレンドリ命令フォーマット]
ベクトルフレンドリ命令フォーマットは、ベクトル命令に適している命令フォーマットである(例えば、ベクトル演算に特有の特定のフィールドが存在する。)。ベクトル演算及びスカラー演算の両方がベクトルフレンドリ命令フォーマットを通じてサポートされる実施形態が記載されるが、代替の実施形態は、ベクトル演算にのみベクトルフレンドリ命令フォーマットを使用する。
【0108】
図17A~17Bは、本発明の実施形態に従う汎用ベクトルフレンドリ命令フォーマット及びその命令テンプレートを表すブロック図である。
図17Aは、本発明の実施形態に従う汎用ベクトルフレンドリ命令フォーマット及びそのクラスA命令テンプレートを表すブロック図であり、一方、
図17Bは、本発明に従う汎用ベクトルフレンドリ命令フォーマット及びそのクラスB命令テンプレートを表すブロック図である。具体的に、汎用ベクトルフレンドリ命令フォーマット1700は、それに対してクラスA及びクラスBの命令テンプレートが定義されており、それらの両方が、非メモリアクセス1705の命令テンプレート及びメモリアクセス1720の命令テンプレートを含む。ベクトルフレンドリ命令フォーマットの文脈中の「汎用」(generic)との用語は、如何なる特定の命令セットにも縛られていない命令フォーマットを指す。
【0109】
本発明の実施形態は、ベクトルフレンドリ命令フォーマットが次の、32ビット(4バイト)又は64ビット(8バイト)データ要素幅(又はサイズ)を有する64バイトベクトルオペランド長さ(又はサイズ)(よって、64バイトベクトルは、16のダブルワードサイズ要素、又は代替的に、8のクワッドワードサイズ要素のどちらかから成る);16ビット(2バイト)又は8ビット(1バイト)データ要素幅(又はサイズ)を有する64バイトベクトルオペランド長さ(又はサイズ);32ビット(4バイト)、64ビット(8バイト)、16ビット(2バイト)、又は8ビット(1バイト)データ要素幅(又はサイズ)を有する32バイトベクトルオペランド長さ(又はサイズ);及び32ビット(4バイト)、64ビット(8バイト)、16ビット(2バイト)、又は8ビット(1バイト)データ要素幅(又はサイズ)を有する16バイトベクトルオペランド長さ(又はサイズ)、をサポートするものが記載される一方で、代替の実施形態は、より大きい、より小さい、又は異なったデータ要素幅(例えば、128ビット(16バイト)データ要素幅)を有するより大きい、より小さい、及び/又は異なったベクトルオペランドサイズ(例えば、256バイトベクトルオペランド)をサポートしてもよい。
【0110】
図17AのクラスA命令テンプレートは、1)非メモリアクセス1705の命令テンプレート内に、非メモリアクセス、フルラウンド制御タイプ演算1710の命令テンプレート、及び非メモリアクセス、データ変換タイプ演算1715の命令テンプレートが示されており、2)メモリアクセス1720の命令テンプレート内に、メモリアクセス、一時1725の命令テンプレート、及びメモリアクセス、非一時1730の命令テンプレートが示されている、ことを含む。
図17BのクラスB命令テンプレートは、1)非メモリアクセス1705の命令テンプレート内に、非メモリアクセス、ライトマスク制御、部分ラウンド制御タイプ演算1712の命令テンプレート、及び非メモリアクセス、ライトマスク制御、vsizeタイプ演算1717の命令テンプレートが示されており、2)メモリアクセス1720の命令テンプレート内には、メモリアクセス、ライトマスク制御1727の命令テンプレートが示されている、ことを含む。
【0111】
汎用ベクトルフレンドリ命令フォーマット1700は、
図17A~17Bに表されている順序で以下にリストアップされている次のフィールドを含む。
【0112】
フォーマットフィールド1740-このフィールド内の特定の値(命令フォーマット識別子値)は、ベクトルフレンドリ命令フォーマット、よって、命令ストリームにおけるベクトルフレンドリ命令フォーマットでの命令の出現、を一意に識別する。従って、このフィールドは、汎用ベクトルフレンドリ命令フォーマットしか有さない命令セットには不要であるという意味で、任意的である。
【0113】
基本演算フィールド1742-その内容は異なる基本演算を区別する。
【0114】
レジスタインデックスフィールド1744-その内容は、直接に、又はアドレス生成を通じて、ソース又はあて先オペランドの位置を、それらがレジスタにあろうとメモリにあろうと、指定する。これらは、P×Q(例えば、32×512、16×128、32×1024、64×1024)レジスタファイルからN個のレジスタを選択するのに十分な数のビットを含む。一実施形態では、Nは、最大で3つのソース及び1つのあて先レジスタであってよく、一方、代替の実施形態は、より多くの又はより少ないソース及びあて先レジスタをサポートしてもよい(例えば、これらのソースの1つがあて先としても動作する場合には、最大2つのソースをサポートしてもよく、これらのソースの1つがあて先として動作する場合には、最大3つのソースをサポートしてもよく、最大で2つのソース及び1つのあて先をサポートしてもよい)。
【0115】
修飾子(modifier)フィールド1746-その内容は、メモリアクセスを指定する汎用ベクトル命令フォーマットでの命令の出現を、そうしない命令と、つまり、非メモリアクセス1705の命令テンプレートとメモリアクセス1720の命令テンプレートとを、区別する。メモリアクセス動作は、メモリヒエラルキに対して読み出し及び/又は書き込みを行い(いくつかの場合に、レジスタ内の値を用いてソース及び/又はあて先アドレスを指定する)、一方、非メモリアクセス動作はそうしない(例えば、ソース及びあて先がレジスタである)。一実施形態で、このフィールドはまた、メモリアドレス計算を実行するために3つの異なる方法の間で選択を行い、一方で、代替の実施形態は、メモリアドレス計算を実行するためにより多い、より少ない、又は異なった方法をサポートしてもよい。
【0116】
オーギュメンテーション(augmentation)演算フィールド1750-その内容は、基本演算に加えて様々な異なる演算のうちのどの1つが実行されるべきかを区別する。このフィールドはコンテキスト特有である。本発明の一実施形態で、このフィールドは、クラスフィールド1768、アルファフィールド1752、及びベータフィールド1754に分けられる。オーギュメンテーション演算フィールド1750は、演算の共通グループが2、3、又は4つの命令よりもむしろ1つの命令で実行されることを可能にする。
【0117】
スケールフィールド1760-その内容は、メモリアドレス生成のためのインデックスフィールドの内容のスケーリングを可能にする(例えば、2scale*index+baseを使用するアドレス生成のため)。
【0118】
変位(displacement)フィールド1762A-その内容は、メモリアドレス生成の部分として使用される(例えば、2scale*index+base+displacementを使用するアドレス生成のため)。
【0119】
変位係数フィールド1762B(変位係数フィールド1762Bの前に変位フィールド1762Aを並置することは、どちらか一方が使用されることを示す)-その内容は、アドレス生成の部分として使用される。それは、メモリアクセスのサイズ(N)によってスケーリングされる変位係数を指定する。ここで、Nは、メモリアクセスにおけるバイトの数である(例えば、2scale*index+base+scaled displacementを使用するアドレス生成のため)。冗長な下位ビットは無視されるので、変位係数フィールドの内容は、有効なアドレスを計算する際に使用される最終的な変位を生成するために、メモリオペランドの合計サイズ(N)を乗じられる。Nの値は、完全オペコードフィールド1774(後述される。)及びデータ操作フィールド1754Cに基づき実行時にプロセッサハードウェアによって決定される。変位フィールド1762A及び変位係数フィールド1762Bは、それらが非メモリアクセス1705の命令テンプレートのために使用されないという意味で任意的であり、かつ/あるいは、異なる実施形態は、2つのうちの一方しか又はどちらも実装しなくてもよい。
【0120】
データ要素幅フィールド1764-その内容は、(いくつかの実施形態では、全ての命令について、他の実施形態では、命令のごく一部について)多数のデータ要素幅のうちのどの1つが使用されるべきかを区別する。このフィールドは、ただ1つのデータ要素幅しかサポートされない場合、及び/又はデータ要素幅が他のオペコードの一部の側面を用いてサポートされる場合には不要であるという意味で、任意的である。
【0121】
ライトマスク(write mask)フィールド1770-その内容は、データ要素位置ごとに、あて先ベクトルオペランドにおけるそのデータ要素位置が基本演算及びオーギュメンテーション演算の結果を反映するかどうかを制御する。クラスA命令テンプレートはマージング-ライトマスキング(writemasking)をサポートし、一方、クラスB命令テンプレートは、マージング-及びゼロイング(zeroing)-ライトマスキングの両方をサポートする。マージング時、ベクトルマスクは、あて先の要素の如何なる組も、任意の演算(基本演算及びオーギュメンテーション演算によって指定される)の実行中に更新から保護されることを可能にし、他の一実施形態では、対応するマスクビットが0を有している場合に、あて先の各要素の古い値を保持する。対照的に、ゼロイング時、ベクトルマスクは、あて先の要素の如何なる組も、任意の演算(基本演算及びオーギュメンテーション演算によって指定される)の実行中にゼロ化されることを可能にし、一実施形態では、あて先の要素は、対応するマスクビットが0値を有している場合に、0にセットされる。この機能のサブセットは、実行されている演算のベクトル長さ(つまり、最初から最後までの、変更される要素のスパン)を制御する能力である。しかし、変更される要素が連続している必要はない。よって、ライトマスクフィールド1770は、ロード、ストア、算術、論理、などを含む部分ベクトル演算を可能にする。本発明の実施形態は、ライトマスクフィールド1770の内容が、使用されるライトマスクを含む多数のライトマスクレジスタのうちの1つ選択する(よって、ライトマスクフィールド1770の内容は、実行されるマスキングを間接的に識別する)ものについて記載される一方で、代替の実施形態は、代わりに、又は追加的に、ライトマスクフィールド1770の内容が、実行されるマスキングを直接的に指定することを可能にする。
【0122】
即値(immediate)フィールド1772-その内容は即値の指定を可能にする。このフィールドは、即値をサポートしない汎用ベクトルフレンドリ命令フォーマットの実施にはそれが存在せず、かつ、即値を使用しない命令にはそれが存在しないという意味で、任意的である。
【0123】
クラスフィールド1768-その内容は、命令の異なるクラスを区別する。
図17A~Bを参照して、このフィールドの内容は、クラスA命令とクラスB命令との間の選択を行う。
図17A~Bで、丸みを帯びた角の四角形は、特定の値がフィールド内に存在することを示すために使用される(例えば、
図17A~Bで夫々クラスフィールド1768のためのクラスA 1768A及びクラスB 1768B)。
【0124】
[クラスAの命令テンプレート]
クラスAの非メモリアクセス1705の命令テンプレートの場合に、アルファフィールド1752は、RSフィールド1752Aとして解釈され、その内容は、異なるオーギュメンテーション演算タイプのうちのどの1つが実行されるべきかを区別し(例えば、ラウンド1752A.1及びデータ変換1752A.2は夫々、非メモリアクセス、ラウンドタイプ演算1710、及び非メモリアクセス、データ変換タイプ演算1715の命令テンプレートに対して指定される。)、一方、ベータフィールド1754は、指定されているタイプの演算のうちのどれが実行されるべきかを区別する。非メモリアクセス1705の命令テンプレートでは、スケールフィールド1760、変位フィールド1762A、及び変位スケールフィールド1762Bは存在しない。
【0125】
[非メモリアクセス命令テンプレート-フルラウンド制御タイプ演算]
非メモリアクセスフルラウンド制御タイプ演算1710の命令テンプレートでは、ベータフィールド1754は、ラウンド制御フィールド1754Aとして解釈され、その内容は静的丸め(static rounding)を提供する。本発明の記載されている実施形態では、ラウンド制御フィールド1754Aは、全浮動小数点例外抑制(suppress all floating point exceptions,SAE)フィールド1756及び丸め演算制御フィールド1758を含み、一方で、代替の実施形態は、これら両方の概念を同じフィールドにエンコードしても、あるいは、これらの概念/フィールドのどちらか一方しか有さなくてもよい(例えば、丸め演算制御フィールド1758しか有さなくてもよい)。
【0126】
SAEフィールド1756-その内容は、例外イベント報告を無効にすべきかどうかを区別する。SAEフィールド1756の内容により、抑制が有効にされることが示される場合に、所与の命令は、如何なる種類の浮動小数点例外フラグも報告せず、如何なる浮動小数点例外ハンドラも発生(raise)しない。
【0127】
丸め演算制御フィールド1758-その内容は、丸め演算のグループの中のどの1つを実行すべきかを区別する(例えば、端数切り上げ、端数切り下げ、0に丸め、及び最近接丸め)。よって、丸め演算制御フィールド1758は、命令ごとに丸めモードの変更を可能にする。本発明の一実施形態で、プロセッサが、丸めモードを指定する制御レジスタを含む場合に、丸め演算制御フィールド1758の内容は、そのレジスタ値を無効に(override)する。
【0128】
[非メモリアクセス命令テンプレート-データ変換タイプ演算]
非メモリアクセスデータ変換タイプ演算1715の命令テンプレートでは、ベータフィールド1754は、データ変換フィールド1754Bとして解釈され、その内容は、多数のデータ変換のうちのどの1つが実行されるべきかを区別する(例えば、非データ変換、スウィズル、ブロードキャスト)。
【0129】
クラスAのメモリアクセス1720の命令テンプレートの場合に、アルファフィールド1752は、エビクションヒント(eviction hint)フィールド1752Bとして解釈され、その内容は、エビクションヒントのうちのどの1つが使用されるべきかを区別し(
図17Aでは、一時1752B.1及び非一時1752B.2は夫々、メモリアクセス、一時1725の命令テンプレートと、メモリアクセス、非一時1730の命令テンプレートとのために指定される。)、一方で、ベータフィールド1754は、データ操作フィールド1754Cとして解釈され、その内容は、多数のデータ操作演算(プリミティブとしても知られる)のうちのどの1つが実行されるべきかを区別する(例えば、非操作、ブロードキャスト、ソースのアップコンバージョン、及びあて先のダウンコンバージョン)。メモリアクセス1720の命令テンプレートは、スケールフィールド1760を含み、任意に、変位フィールド1762A又は変位スケールフィールド1762Bを含む。
【0130】
ベクトルメモリ命令は、変換をサポートして、メモリからのベクトルロード及びメモリへのベクトルストアを実行する。通常のベクトル命令と同様に、ベクトルメモリ命令は、データ要素ごとにメモリから/メモリへデータを転送し、実際に転送される要素は、ライトマスクとして選択されるベクトルマスクの内容によって決定される。
【0131】
[メモリアクセス命令テンプレート-一時]
一時データは、キャッシングの恩恵を受けるのに十分早く再利用される可能性が高いデータである。これは、しかしながら、ヒントであり、異なるプロセッサは、ヒントを完全に無視することを含む異なる方法でそれを実装してもよい。
【0132】
[メモリアクセス命令テンプレート-非一時]
非一時データは、第1レベルのキャッシュでのキャッシングから恩恵を受けるのに十分に早く再利用される可能性が低いデータであり、エビクションのために優先されるべきである。これは、しかしながら、ヒントであり、異なるプロセッサは、ヒントを完全に無視することを含むことなる方法でそれを実装してもよい。
【0133】
[クラスBの命令テンプレート]
クラスBの命令テンプレートの場合に、アルファフィールド1752は、ライトマスク制御(Z)フィールド1752Cとして解釈され、その内容は、ライトマスクフィールド1770によって制御されるライトマスキングがマージング又はゼロイングであるべきかどうかを区別する。
【0134】
クラスBの非メモリアクセス1705の命令テンプレートの場合に、ベータフィールド1754の部分は、RLフィールド1757Aとして解釈され、その内容は、異なるオーギュメンテーション演算タイプのうちのどの1つが実行されるべきかを区別し(例えば、ラウンド1757A.1及びベクトル長さ(VSIZE)1757A.2は夫々、非メモリアクセス、ライトマスク制御、部分丸め制御タイプ演算1712の命令テンプレートと、非メモリアクセス、ライトマスク制御、VSIZEタイプ演算1717の命令テンプレートとのために指定される。)、一方、ベータフィールド1754の残りは、指定されているタイプの演算のうちのどれが実行されるべきであるかを区別する。非メモリアクセス1705の命令テンプレートでは、スケールフィールド1760、変位フィールド1762A、及び変位スケールフィールド1762Bは存在しない。
【0135】
非メモリアクセス、ライトマスク制御、部分丸め制御タイプ演算1712の命令テンプレートでは、ベータフィールド1754の残りは、丸め演算フィールド1759Aとして解釈され、例外イベント報告は無効にされる(所与の命令は、如何なる種類の浮動小数点例外フラグも報告せず、如何なる浮動小数点例外ハンドラも発生しない。)。
【0136】
丸め演算制御フィールド1759A-丸め演算制御フィールド1758と同様に、その内容は、丸め演算のグループの中のどの1つを実行すべきかを区別する(例えば、端数切り上げ、端数切り下げ、0に丸め、及び最近接丸め)。よって、丸め演算制御フィールド1759Aは、命令ごとに丸めモードの変更を可能にする。本発明の一実施形態で、プロセッサが、丸めモードを指定する制御レジスタを含む場合に、丸め演算制御フィールド1759Aの内容は、そのレジスタ値を無効に(override)する。
【0137】
非メモリアクセス、ライトマスク制御、VSIZEタイプ演算1717の命令テンプレートでは、ベータフィールド1754の残りは、ベクトル長さフィールド1759Bとして解釈され、その内容は、多数のデータベクトル長さのうちのどの1つが実行されるべきかを区別する(例えば、128、256、又は512バイト)。
【0138】
クラスBのメモリアクセス1720の命令テンプレートの場合に、ベータフィールド1754の部分は、ブロードキャストフィールド1757Bとして解釈され、その内容は、ブロードキャストタイプデータ操作演算が実行されるべきか否かを区別し、一方、ベータフィールド1754の残りは、ベクトル長さフィールド1759Bとして解釈される。メモリアクセス1720の命令テンプレートは、スケールフィールド1760を含み、任意に、変位フィールド1762A又は変位スケールフィールド1762Bを含む。
【0139】
汎用ベクトルフレンドリ命令フォーマット1700に関して、完全オペコードフィールド1774は、フォーマットフィールド1740、基本演算フィールド1742、及びデータ要素幅フィールド1764を含むものとして示されている。一実施形態は、完全オペコードフィールド1774がこれらのフィールドの全てを含む場合が示されているが、完全オペコードフィールド1774は、それらの全てをサポートするわけではない実施形態では、これらのフィールドの全てよりも少ないフィールドを含む。完全オペコードフィールド1774は、演算コード(オペコード)を提供する。
【0140】
オーギュメンテーション演算フィールド1750、データ要素幅フィールド1764、及びライトマスクフィールド1770は、これらの特徴が汎用ベクトルフレンドリ命令フォーマットで命令ごとに指定されることを可能にする。
【0141】
ライトマスクフィールドとデータ要素幅フィールドとの組み合わせは、異なるデータ要素幅に基づいてマスクが適用されることを可能にするという点で、型付き命令(typed instructions)をもたらす。
【0142】
クラスA及びクラスBで見受けられる様々な命令テンプレートは、異なる状況において有益である。本発明のいくつかの実施形態で、異なるプロセッサ又はプロセッサ内の異なるコアは、クラスAのみ、クラスBのみ、又は両方のクラスをサポートし得る。例えば、汎用のコンピューティングを対象とした高性能汎用アウト・オブ・オーダーコアは、クラスBしかサポートしなくてもよく、グラフィクス及び/又は科学技術(スループット)コンピューティングを主に対象としたコアは、クラスAしかサポートしなくてもよく、両方を対象としたコアは両方をサポートし得る(当然、両方のクラスからのテンプレート及び命令がいくらか混在しているが、両方のクラスからの全てのテンプレート及び命令が含まれているわけではないコアは、本発明の範囲内にある)。また、単一のプロセッサは複数のコアを含んでもよく、全てのコアが同じクラスをサポートするか、あるいは、異なるコアは異なるクラスをサポートする。例えば、別々のグラフィクスコア及び汎用コアを備えたプロセッサで、グラフィクス及び/又は科学技術コンピューティングを主に対象としたグラフィクスコアの1つはクラスAしかサポートしなくてもよく、一方、汎用コアの1つ以上は、クラスBのみをサポートする汎用コンピューティングを対象としたアウト・オブ・オーダー実行及びレジスタリネーミングを備えた高性能汎用コアであってよい。別個のグラフィクスコアを有さない他のプロセッサは、クラスA及びクラスBの両方をサポートする1つ以上の汎用イン・オーダー又はアウト・オブ・オーダーコアを含んでもよい。当然、1つのクラスからの特徴は、本発明の異なる実施形態では、他のクラスでも実装されてもよい。高水準言語で書かれたプログラムは、1)実行のためにターゲットプロセッサによってサポートされているクラスの命令のみを有している形式、又は2)全てクラスの命令の異なる組み合わせを用いて書かれた代替ルーチンを有し、かつ、コードを現在実行中であるプロセッサによってサポートされている命令に基づき実行すべきルーチンを選択する制御フローコードを有している形式、を含む様々な異なる実行可能な形式に置かれることになる(例えば、ジャスト・イン・タイム(JIT)コンパイル又は静的コンパイルされる)。
【0143】
[例となる具体的なベクトルフレンドリ命令フォーマット]
図18A~18Cは、本発明の実施形態に従って、例となる具体的なベクトルフレンドリ命令フォーマットを表すブロック図である。
図18Aは、フィールドの位置サイズ、解釈、及び順序並びにそれらのフィールドの一部の値を指定するという意味で固有である固有ベクトルフレンドリ命令フォーマット1800を示す。固有ベクトルフレンドリ命令フォーマット1800は、x86命令セットを拡張するために使用され得るので、フィールドの一部は、既存のx86命令セット及びその拡張(例えば、AVX)で使用されるものと類似又は同じである。このフォーマットは、プリフィックス符号化フィールド、実オペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、及び拡張機能を備えた既存のx86命令セットの即値フィールドと一貫性を保つ。
図18A~18Cからのフィールドがマッピングする
図17A~17Bからのフィールドが表されている。
【0144】
本発明の実施形態は、例示を目的として、汎用ベクトルフレンドリ命令フォーマット1700との関連で、固有ベクトルフレンドリ命令フォーマット1800を参照して記載されているが、本発明は、請求されている場合を除いて、固有ベクトルフレンドリ命令フォーマット1800に限定されないことが理解されるべきである。例えば、汎用ベクトルフレンドリ命令フォーマット1700は、様々なフィールドに対して様々な可能なサイズを想定しているが、固有ベクトルフレンドリ命令フォーマット1800は、特定のサイズのフィールドを有するものとして示されている。具体例として、データ要素幅フィールド1764は、固有ベクトルフレンドリ命令フォーマット1800で1ビットフィールドとして表され、一方、本発明はそのように限定されない(すなわち、汎用ベクトルフレンドリ命令フォーマット1700は、データ要素幅フィールド1764の他のサイズを企図する)。
【0145】
汎用ベクトルフレンドリ命令フォーマット1700は、
図18Aに示される順序で以下にリストアップされている次のフィールドを含む。
【0146】
EVEXプリフィックス(バイト0~3)1802は、4バイト形式で符号化される。
【0147】
フォーマットフィールド1740(EVEXバイト0,ビット[7:0])-最初のバイト(EVEXバイト0)がフォーマットフィールド1740であり、それは0x62(本発明の一実施形態では、ベクトルフレンドリ命令フォーマットを識別するために使用される一意の値)を含む。
【0148】
第2乃至第4のバイト(EVEXバイト1~3)は、特定の機能を提供する複数のビットフィールドを含む。
【0149】
REXフィールド1805(EVEXバイト1、ビット[7-5])は、EVEX.Rビットフィールド(EVEXバイト1,ビット[7]-R)、EVEX.Xビットフィールド(EVEXバイト1,ビット[6]-X)、及びEVEX.Bビットフィールド(EVEXバイト1,ビット[5]-B)から成る。EVEX.R、EVEX.X、及びEVEX.Bビットフィールドは、対応するVEXビットフィールドと同じ機能を提供し、1s補数形式を用いて符号化される。つまり、ZMM0は1111Bとして符号化され、ZMM15は000Bとして符号化される。命令の他のフィールドは、当該技術で知られているようにレジスタインデックスの下位3ビット(rrr、xxx、及びbbb)を符号化し、それにより、Rrrr、Xxxx、及びBbbbが、EVEX.R、EVEX.X、及びEVEX.Bを加えることによって形成され得る。
【0150】
REX’フィールド1810-これは、REX’フィールド1810の最初の部分であり、拡張された32レジスタセットの上位16レジスタ又は下位16レジスタのどちらかを符号化するために使用されるEVEX.R’ビットフィールド(EVEXバイト1,ビット[4]-R’)である。本発明の一実施形態で、このビットは、以下で示される他とともに、実オペコードバイトが62であるBOUND命令と区別するためのビット反転形式で(よく知られたx86 32ビットモードで)記憶されるが、MODフィールド内の11の値をMOD R/Mフィールドで受け入れない(後述される)。本発明の代替の実施形態は、このビット及び以下で示される他のビットを反転形式で記憶しない。1の値が、下位16のレジスタを符号化するために使用される。つまり、R’Rrrrは、EVEX.R’、EVEX.R、及び他のフィールドからの他のRRRを組み合わせることによって、形成される。
【0151】
オペコードマップフィールド1815(EVEXバイト1,ビット[3:0]-mmmm)-その内容は、暗黙の先行オペコード(0F、0F38、又は0F3)を符号化する。
【0152】
データ要素幅フィールド1764(EVEXバイト2,ビット[7]-W)は、表記法EVEX.Wによって表される。EVEX.Wは、データタイプの粒度(サイズ)を定義するために使用される(32ビットデータ要素又は64ビットデータ要素のどちらか)。
【0153】
EVEX.vvvv1820(EVEXバイト2,ビット[6:3]-vvvv)-EVEX.vvvvの役割は、次を含み得る:1)EVEX.vvvvは、反転(1s補数)形式で指定されている最初のソースレジスタオペランドを符号化し、2以上のソースオペランドを持つ命令に有効である;2)EVEX.vvvvは、特定のベクトルシフトのために1s補数形式で指定されているあて先レジスタオペランドを符号化する;又は3)EVEX.vvvvは、如何なるオペランドも符号化せず、フィールドはリザーブされ、1111bを含むべきである。よって、EVEX.vvvvフィールド1820は、反転(1s補数)形式で記憶されている最初のソースレジスタ指示子の4つの下位ビットを符号化する。命令に応じて、余分の異なったEVEXビットフィールドが、指定子サイズを32レジスタに拡張するために使用される。
【0154】
EVEX.U1768クラスフィールド(EVEXバイト2,ビット[2]-U)-EVEX.U=0である場合に、それはクラスA又はEVEX.U0を示し、EVEX.U=1である場合に、それはクラスB又はEVEX.U1を示す。
【0155】
プリフィックス符号化フィールド1825(EVEXバイト2,ビット[1:0]-pp)は、基本演算フィールドのための追加のビットを提供する。EVEXプリフィックスフォーマットでレガシーSSE命令のサポートを提供することに加えて、これはまた、SIMDプリフィックスを圧縮するという利点を有している(SIMDプリフィックスを表現するためにバイトを必要とすることよりもむしろ、EVEXプリフィックスは2ビットしか必要としない。)。一実施形態で、レガシーフォーマット及びEVEXプリフィックスフォーマットの両方でSIMDプリフィックス(66H、F2H、F3H)を使用するレガシーSSE命令をサポートするために、これらのレガシーSIMDプリフィックスは、SIMDプリフィックス符号化フィールドに符号化され、実行時に、デコーダのPLAへ供給される前に、レガシーSIMDプリフィックスに拡張される(故に、PLAは、変更なしでこれらのレガシー命令のレガシー及びEVEXフォーマットの両方を実行することができる。)。より新しい命令は、EVEXプリフィックス符号化フィールドの内容をオペコード拡張として直接に使用することができるが、特定の実施形態は、一貫性を保つために同様にして拡張しながら、異なる意味がそれらのレガシーSIMDプリフィックスによって指定されることを可能にする。代替の実施形態は、2ビットのSIMDプリフィックス符号化をサポートするようPLAを再設計するので、拡張を必要としない。
【0156】
アルファフィールド1752(EVEXバイト3,ビット[7]-EH;EVEX.EH、EVEX.rs、EVEX.RL、EVEX.write mask control及びEVEX.Nとしても知られており、アルファによっても表される)-上述されたように、このフィールドは、コンテキスト特有である。
【0157】
ベータフィールド1754(EVEXバイト3,ビット[6:4]-SSS;EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLBとしても知られており、βββによっても表される)-上述されたように、このフィールドは、コンテキスト特有である。
【0158】
REX’フィールド1810-これは、REX’フィールドの残りであり、拡張された32レジスタセットの上位16レジスタ又は下位16レジスタのどちらかを符号化するために使用され得るEVEX.V’ビットフィールド(EVEXバイト3,ビット[3]-V’)である。このビットは、ビット反転形式で記憶される。1の値は、下位16のレジスタを符号化するために使用される。つまり、V’VVVVは、EVEX.V’、EVEX.vvvvを組み合わせることによって、形成される。
【0159】
ライトマスクフィールド1770(EVEXバイト3,ビット[2:0]-kkk)-その内容は、上述されたように、ライトマスクレジスタ内のレジスタのインデックスを指定する。本発明の一実施形態で、特定の値EVEX.kkk=000は、特定の命令のためにライトマスクが使用されないことを暗示する特別な動作である(これは、全てのものに配線されたライトマスクの使用や、マスキングハードウェアをバイパスするハードウェアの使用など、さまざまな方法で実装され得る。)。
【0160】
実オペコードフィールド1830(バイト4)は、オペコードバイトとしても知られている。オペコードの部分は、このフィールドで指定される。
【0161】
MOD R/Mフィールド1840(バイト5)は、MODフィールド1842、Regフィールド1844、及びR/Mフィールド1846を含む。上述されたように、MODフィールド1842の内容は、メモリアクセス動作と非メモリアクセス動作とを区別する。Regフィールド1844の役割は、2つの状況、つまり、あて先レジスタオペランド又はソースレジスタオペランドのどちらかを符号化すること、あるいは、オペコード拡張として扱われ、如何なる命令オペコードも符号化するために使用されないこと、に要約される。R/Mフィールド1846の役割は、次の、メモリアドレスを参照する命令オペランドを符号化すること、あるいは、あて先レジスタオペランド又はソースレジスタオペランドのどちらかを符号化すること、を含み得る。
【0162】
スケール、インデックス、ベース(Scale, Index, Base,SIB)バイト(バイト6)-上述されたように、スケールフィールド1850の内容は、メモリアドレス生成のために使用される。SIB.xxx1854及びSIB.bbb1856-これらのフィールドの内容は、レジスタインデックスXxxx及びBbbbに関して以前に参照されている。
【0163】
変位フィールド1762A(バイト7~10)-MODフィールド1842が10を含む場合に、バイト7~10は変位フィールド1762Aであり、それは、レガシー32ビット変位(disp32)と同じように機能し、バイト粒度で機能する。
【0164】
変位係数フィールド1762B(バイト7)-MODフィールド1842が01を含む場合に、バイト7は変位係数フィールド1762Bである。このフィールドの位置は、バイト粒度で機能するレガシーx86命令セットの8ビット変位(disp8)のそれと同じである。disp8は符号拡張されているので、それは、-128~127バイトのオフセットのみをアドレス指定することができる。64バイトのキャッシュラインに関しては、disp8は、4つの本当に有用な値-128、-64、0及び64にのみ設定され得る8ビットを使用する。より広い範囲がしばしば必要とされるので、disp32が使用されるが、disp32は4バイトを必要とする。disp8及びdisp32とは対照的に、変位係数フィールド1762Bは、disp8の再解釈(reinterpretation)である。変位係数フィールド1762Bを使用する場合に、実際の変位は、変位係数フィールドの内容にメモリオペランドアクセスのサイズ(N)を乗じたものよって決定される。このような変位は、disp8*Nと呼ばれる。これは、平均命令長さを低減させる(変位に使用されるのは1バイトであるが、範囲ははるかに広くなる。)。そのような圧縮された変位は、有効の変位がメモリアクセスの粒度の倍数であるという前提に基づいているので、アドレスオフセットの冗長な下位ビットは符号化される必要がない。すなわち、変位係数フィールド1762Bは、レガシーx86命令セットの8ビット変位を置換する。よって、変位係数フィールド1762Bは、disp8disp8*Nにオーバーロードされることを除いて、x86命令セットの8ビット変位と同じ方法で符号化される(故に、Mod RM/SIB符号化規則は変更されない。)。すなわち、符号化規則又は符号化長さに変更はないが、ハードウェアによる変位値の解釈にのみ変更がある(バイト単位のアドレスオフセットを取得するには、メモリオペランドのサイズで変位をスケーリングする必要がある。)。即値フィールド1772は、上述されたように動作する。
【0165】
[完全オペコードフィールド]
図18Bは、本発明の一実施形態に従って、完全オペコードフィールド1774を構成する固有ベクトルフレンドリ命令フォーマット1800のフィールドを表すブロック図である。具体的に、完全オペコードフィールド1774は、フォーマットフィールド1740、基本演算フィールド1742、及びデータ要素幅(W)フィールド1764を含む。基本演算フィールド1742は、プリフィックス符号化フィールド1825、オペコードマップフィールド1815、及び実オペコードフィールド1830を含む。
【0166】
[レジスタインデックスフィールド]
図18Cは、本発明の一実施形態に従って、レジスタインデックスフィールド1744を構成する固有ベクトルフレンドリ命令フォーマット1800のフィールドを表すブロック図である。具体的に、レジスタインデックスフィールド1744は、REXフィールド1805、REX’フィールド1810、MOD R/M.regフィールド1844、MOD R/M.r/mフィールド1846、VVVVフィールド1820、xxxフィールド1854、及びbbbフィールド1856を含む。
【0167】
図18Dは、本発明の一実施形態に従って、オーギュメンテーション演算フィールド1750を構成する固有ベクトルフレンドリ命令フォーマット1800のフィールドを表すブロック図である。クラス(U)フィールド1768が0を含む場合に、それはEVEX.U0(クラスA 1768A)を意味し、それが1を含む場合に、それはEVEX.U1(クラスB 1768B)を意味する。U=0でありかつMODフィールド1842が11を含む(非メモリアクセス動作を意味する)場合に、アルファフィールド1752(EVEXバイト3,ビット[7]-EH)は、rsフィールド1752Aとして解釈される。rsフィールド1752Aが1(ラウンド1752A.1)を含む場合に、ベータフィールド1754(EVEXバイト3,ビット[6:4]-SSS)は、丸め制御フィールド1754Aとして解釈される。丸め制御フィールド1754Aは、1ビットのSAEフィールド1756と、2ビットの丸め演算制御フィールド1758とを含む。rsフィールド1752Aが0(データ変換1752A.2)を含む場合に、ベータフィールド1754(EVEXバイト3,ビット[6:4]-SSS)は、3ビットのデータ変換フィールド1754Bとして解釈される。U=0でありかつMODフィールド1842が00、01、又は10を含む(メモリアクセス動作を意味する)場合に、アルファフィールド1752(EVEXバイト3,ビット[7]-EH)は、エビクションヒント(EH)フィールド1752Bとして解釈され、ベータフィールド1754(EVEXバイト3,ビット[6:4]-SSS)は、3ビットのデータ操作フィールド1754Cとして解釈される。
【0168】
U=1である場合に、アルファフィールド1752(EVEXバイト3,ビット[7]-EH)は、ライトマスク制御(Z)フィールド1752Cとして解釈される。U=1でありかつMODフィールド1842が11を含む(非メモリアクセス動作を意味する)場合に、ベータフィールド1754の部分(EVEXバイト3,ビット[4]-S0)は、RLフィールド1757Aとして解釈され、それが1(ラウンド1757A.1)を含む場合に、ベータフィールド1754の残り(EVEXバイト3,ビット[6-5]-S2-1)は、丸め演算制御フィールド1759Aとして解釈され、一方、RLフィールド1757Aが0(VSIZE 1757.A2)を含む場合に、ベータフィールド1754残り(EVEXバイト3,ビット[6-5]-S2-1)は、ベクトル長さフィールド1759B(EVEXバイト3,ビット[6-5]-L1-0)として解釈される。U=1でありかつMODフィールド1842が00、01、又は10を含む(メモリアクセス動作を意味する)場合に、ベータフィールド1754(EVEXバイト3,ビット[6:4]-SSS)は、ベクトル長さフィールド1759B(EVEXバイト3,ビット[6-5]-L1-0)及びブロードキャストフィールド1757B(EVEXバイト3,ビット[4]-B)として解釈される。
【0169】
[例となるレジスタアーキテクチャ]
図19は、本発明の一実施形態に従うレジスタアーキテクチャ1900のブロック図である。表されている実施形態では、512ビット幅である32個のベクトルレジスタ1910が存在し、これらのレジスタは、zmm0からzmm31として参照される。下位16個のzmmレジスタの下位256ビットは、レジスタymm0~15にオーバーレイされる。下位16個のzmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0~15にオーバーレイされる。固有ベクトルフレンドリ命令フォーマット1800は、以下の表で表されているように、これらのオーバーレイされたレジスタファイルで動作する。
【表1】
【0170】
すなわち、ベクトル長さフィールド1759Bは、最大長さと1つ以上の他のより短い長さとの間の選択を行う。そのようなより短い長さの夫々は、前の長さの半分の長さである。ベクトル長さフィールド1759Bがない命令テンプレートは、最大ベクトル長さで動作する。更に、一実施形態で、固有ベクトルフレンドリ命令フォーマット1800のクラスB命令テンプレートは、パックド又はスカラー単精度/倍精度浮動小数点データ及びパックド又はスカラー整数データで動作する。スカラー演算は、zmm/ymm/xmmレジスタ内の最下位データ要素位置に対して実行される演算であり、より高次のデータ要素位置は、それらが命令の前にあったのと同じままであるか、あるいは、実施形態においてゼロ化される。
【0171】
ライトマスクレジスタ1915-表されている実施形態では、8つのライトマスクレジスタ(k0からk7)が存在し、夫々サイズが64ビットである。代替の実施形態では、ライトマスクレジスタ1915は、サイズが16ビットである。上述されたように、本発明の一実施形態で、ベクトルマスクレジスタk0は、ライトマスクとして使用され得ない。通常k0を示す符号化がライトマスクに使用される場合に、それは、0xFFFFのハードワイヤードのライトマスクを選択し、その命令に対するライトマスキングを有効に無効化する。
【0172】
汎用レジスタ1925-表されている実施形態では、メモリオペランドをアドレッシングするために既存のx86アドレッシングモードとともに使用される16個の64ビット汎用レジスタが存在する。これらのレジスタは、RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及びR8からR15の名前で参照される。
【0173】
MMXパックド整数フラットレジスタファイル1950がエイリアシングされているスカラー浮動小数点スタックレジスタファイル(x87スタック)1945-表されている実施形態では、x87スタックは、x87命令セット拡張を用いて32/64/80ビット浮動小数点データに対してスカラー浮動小数点演算を実行するために使用される8要素スタックである。一方で、MMXレジスタは、64ビットパックド整数データに対して演算を実行するために、更には、MMX及びXMMレジスタ間で実行されるいくつかの演算のためにオペランドを保持するために、使用される。
【0174】
本発明の代替の実施形態は、より広い又はより狭いレジスタを使用してもよい。更には、本発明の代替の実施形態は、より多い、より少ない、又は異なるレジスタファイル及びレジスタを使用してもよい。
【0175】
[例となるコアアーキテクチャ、プロセッサ、及びコンピュータアーキテクチャ]
プロセッサコアは、異なる方法で、異なる目的のために、及び異なるプロセッサで実装されてもよい。例えば、そのようなコアの実装には、1)汎用コンピューティングを対象とした汎用イン・オーダーコア、2)汎用コンピューティングを対象とした高性能汎用アウト・オブ・オーダーコア、3)グラフィクス及び/又は科学技術(スループット)コンピューティングを主に対象とした特別目的のコアが含まれ得る。異なるプロセッサの実装には、1)汎用コンピューティングを対象とした1つ以上の汎用イン・オーダーコア、及び/又は汎用コンピューティングを対象とした1つ以上の汎用アウト・オブ・オーダーコアを含むCPU、並びに2)グラフィクス及び/又は科学技術(スループット)コンピューティングを主に対象とした1つ以上の特別目的のコアを含むコプロセッサが含まれ得る。そのような異なるプロセッサは、異なるコンピュータシステムアーキテクチャをもたらし、これには、1)CPUとは別のチップ上のコプロセッサ、2)CPUと同じパッケージ内の別個のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(その場合に、そのようなコプロセッサは、集積グラフィクス及び/又は科学技術(スループット)ロジックなどの特別目的のロジックと時々呼ばれる。)、並びに4)記載されているCPU(時々、アプリケーションコア又はアプリケーションプロセッサと呼ばれる。)、上記のコプロセッサ、及び追加の機能を同じダイ上に含み得るチップ上のシステムが含まれ得る。例となるコアアーキテクチャが次に記載され、その後に、例となるプロセッサ及びコンピュータアーキテクチャが続く。
【0176】
[例となるコアアーキテクチャ]
[イン・オーダー及びアウト・オブ・オーダーコアブロック図]
図20Aは、本発明の実施形態に従って、例示的なイン・オーダーパイプライン及び例示的なレジスタリネーミング、アウト・オブ・オーダー発行/実行パイプラインの両方を表すブロック図である。
図20Bは、本発明の実施形態に従って、プロセッサに含まれるイン・オーダーアーキテクチャコア及び例示的なレジスタリネーミング、アウト・オブ・オーダー発行/実行アーキテクチャコアの両方を表すブロック図である。
図20A~Bの実線ボックスは、イン・オーダーパイプライン及びイン・オーダーコアを表し、一方、破線ボックスの任意の追加は、レジスタリネーミング、アウト・オブ・オーダー発行/実行パイプライン及びコアを表す。イン・オーダー態様はアウト・オブ・オーダー態様のサブセットであることを鑑みて、アウト・オブ・オーダー態様が記載される。
【0177】
図20Aで、プロセッサパイプライン2000は、フェッチ段2002、長さデコード段2004、デコード段2006、割り当て段2008、リネーミング段2010、スケジューリング(ディスパッチ又は発行としても知られる。)段2012、レジスタリード/メモリリード段2014、実行段2016、ライトバック/メモリライト段2018、例外処理段2022、及びコミット段2024を含む。
【0178】
図20Bは、実行エンジンユニット2050へ結合されているフロントエンドユニット2030を含み、両方がメモリユニット2070へ結合されているプロセッサコア2090を示す。コア2090は、縮小命令セットコンピューティング(RISC)コア、複数命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、又は複合的な若しくは代替のコアタイプであってよい。更なる他のオプションとして、コア2090は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィクス処理ユニット(GPGPU)コア、グラフィクスコア、などのような、特別目的のコアであってもよい。
【0179】
フロントエンドユニット2030は、命令キャッシュユニット2034へ結合されている分岐予測ユニット2032を含む。命令キャッシュユニット2034は、命令トランスレーション・ルックアサイド・バッファ(TLB)2036へ結合されており、TLB2036は、命令フェッチユニット2038へ結合されており、命令フェッチユニット2038は、デコードユニット2040へ結合されている。デコードユニット2040(又はデコーダ)は、命令をデコードし、出力として1つ以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を生成する。それらは、元の命令からデコードされるか、あるいは、別なふうに元の命令を反映するか、あるいは、元の命令から導出される。デコードユニット2040は、様々な異なるメカニズムを用いて実装されてもよい。適切なメカニズムの例には、ルックアップテーブル、ハードウェア実装、プログラム可能ロジックアレイ(PLA)、マイクロコードリード・オンリー・メモリ(ROM)などがあるが、これらに限られない。一実施形態で、コア20290は、特定のマクロ命令のためのマクロコードを記憶するマクロコードROM又は他の媒体を含む(例えば、デコードユニット2040において又はさもなければフロントエンドユニット2030内で)。デコードユニット2040は、実行エンジンユニット2050内のリネーム/アロケータユニット2052へ結合されている。
【0180】
実行エンジンユニット2050は、リタイアメントユニット2054及び1つ以上のスケジューラユニット2056の組へ結合されているリネーム/アロケータユニット2052を含む。スケジューラユニット2056は、リザベーションステーション、中央命令ウィンドウ、などを含む任意の数の異なるスケジューラを表す。スケジューラユニット2056は、物理レジスタファイルユニット2058へ結合されている。物理レジスタファイルユニット2058の夫々は、1つ以上の物理レジスタファイルを表し、その異なるファイルには、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行される次の命令のアドレスである命令ポインタ)などのような、1つ以上の異なるデータタイプが格納される。一実施形態で、物理レジスタファイルユニット2058は、ベクトルレジスタユニット、ライトマスクレジスタユニット、及びスカラーレジスタユニットを有する。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供し得る。物理レジスタファイルユニット2058は、レジスタリネーミング及びアウト・オブ・オーダー実行が実装され得る様々な方法(例えば、リオーダバッファ及びリタイアメントレジスタファイルを使用すること;フィーチャー(future)ファイル、ヒストリ(history)バッファ、及びリタイアメントレジスタファイルを使用すること;レジスタマップ及びレジスタのプールを使用すること、など)を表すようリタイアメントユニット2054によってオーバーラップされる。リタイアメントユニット2054及び物理レジスタファイルユニット2058は、実行クラスタ2060へ結合されている。実行クラスタ2060は、1つ以上の実行ユニット2062の組及び1つ以上のメモリアクセスユニット2064の組を含む。実行ユニット2062は、様々な演算(例えば、シフト、加算、減算、乗算)を様々なタイプのデータ(例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に実行してもよい。いくつかの実施形態は、特定の関数又は関数の組に専用の多数の実行ユニットを含む一方で、他の実施形態は、全ての機能を完全に実行するただ1つの実行又は複数の実行ユニットを含んでもよい。スケジューラユニット2056、物理レジスタファイルユニット2058、及び実行クラスタ2060は、特定の実施形態が特定のタイプのデータ/演算のための別個のパイプラインを構成するので、場合により複数であるものとして示されている(例えば、夫々が各自のスケジューラユニット、物理レジスタファイルユニット、及び/又は実行ユニットを有しているスカラー整数パイプライン、スカラー浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合に、特定の実施形態は、このパイプラインの実行クラスタのみがメモリアクセスユニット2064を有しているものとして実装される。)。また、別個のパイプラインが使用される場合に、これらのパイプラインの1つ以上はアウト・オブ・オーダー発行/実行であってよく、残りはイン・オーダーであってよいことが理解されるべきである。
【0181】
メモリアクセスユニット2064の組は、データTLBユニット2072を含むメモリユニット2070へ結合されている。データTLBユニット2072は、データキャッシュユニット2074へ結合されており、データキャッシュユニット2074は、レベル2(L2)キャッシュユニット2076へ結合されている。1つの例となる実施形態では、メモリアクセスユニット2064は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを含んでもよく、これらの夫々は、メモリユニット2070内のデータTLBユニット2072へ結合されている。命令キャッシュユニット2034が更にメモリユニット2070内のレベル2(L2)キャッシュユニット2076へ結合されている。L2キャッシュユニット2076は、1つ以上の他のレベルのキャッシュへ、また同様に、メインメモリへ結合される。
【0182】
例として、例示的なレジスタリネーミング、アウト・オブ・オーダー発行/実行コアアーキテクチャは、次のようにパイプライン2000を実装してもよい:1)命令フェッチユニット2038は、フェッチ及び長さ復号化段2002及び2004を実行し、2)デコードユニット2040は、デコード段2006を実行し、3)リネーム/アロケータユニット2052は、割り当て段2008及びリネーミング段2010を実行し、4)スケジューラユニット2056は、スケジュール段2012を実行し、5)物理レジスタファイルユニット2058及びメモリユニット2070は、レジスタリード/メモリリード段2014を実行し、実行クラスタ2060は、実行段2016を実行し、6)メモリユニット2070及び物理レジスタファイルユニット2058は、ライトバック/メモリライト段2018を実行し、7)様々なユニットが実行処理段2022に関与してもよく、8)リタイアメントユニット2054及び物理レジスタファイルユニット2058は、コミット段2024を実行する。
【0183】
コア2090は、本明細書で記載されている命令を含む1つ以上の命令セット(例えば、x86命令セット(より新しいバージョンで追加されているいくつかの拡張を含む)、カリフォルニア州サニーベールのMIPSテクノロジのMIPS命令セット、カリフォルニア州サニーベールのARMホールディングスのARM命令セット(NEONなどの任意の追加の拡張を含む))をサポートし得る。一実施形態で、コア2090は、パックドデータ命令セット実行(例えば、AVX1、AVX2)をサポートするロジックを含み、それによって、多くのマルチメディアアプリケーションによって使用される演算がパックドデータを用いて実行されることを可能にする。
【0184】
コアは、マルチスレッディングをサポートしてもよく、タイムスライスされたマルチスレッディング、同時のマルチスレッディング(単一の物理コアは、物理コアが同時にマルチスレッド化されているスレッドごとに論理コアを提供する。)、又はそれらの組み合わせ(例えば、タイムスライスされたフェッチング及びデコーディング並びにその後の、Intel Hyperthreding技術のような、同時のマルチスレッディング)を含む様々な方法でそれを行ってもよい。
【0185】
レジスタリネーミングが、アウト・オブ・オーダー実行との関連で記載されているが、レジスタリネーミングは、イン・オーダーアーキテクチャで使用されてもよいことが理解されるべきである。プロセッサの表されている実施形態はまた、別個の命令及びデータキャッシュユニット2034/2074並びに共有L2キャッシュユニット2076を含むが、代替の実施形態は、例えば、レベル1(L1)内部キャッシュ、又は複数のレベルの内部キャッシュのような、命令及びデータの両方のための単一の内部キャッシュを有してもよい。いくつかの実施形態で、システムは、内部キャッシュと、コア及び/又はプロセッサの外にある外部キャッシュとの組み合わせを含んでもよい。代替的に、全てのキャッシュがコア及び/又はプロセッサの外にあってもよい。
【0186】
[イン・オーダーコアアーキテクチャの具体例]
図21A~Bは、より具体的な例となるイン・オーダーコアアーキテクチャのブロック図を表し、コアは、チップ内のいくつかのロジックブロック(同じタイプ及び/又は異なるタイプの他のコアを含む。)の1つである。ロジックブロックは、アプリケーションに応じて、高帯域幅インターコネクトネットワーク(例えば、リングネットワーク)を通じていくつかの固定機能ロジック、メモリI/Oインターフェース、及び他の必要なI/Oロジックと通信する。
【0187】
図21Aは、本発明の実施形態に従って、単一のプロセッサコアを、オンダイのインターコネクトネットワーク2102へのその接続、及びレベル2(L2)キャッシュ2104のその局所サブセットとともに表すブロック図である。一実施形態で、命令デコーダ2100は、パックドデータ命令セット拡張を備えたx86命令セットをサポートする。L1キャッシュ2106は、低レイテンシアクセスがメモリをスカラー及びベクトルユニットにキャッシングすることを可能にする。一実施形態で(設計を簡単にするために)、スカラーユニット2108及びベクトルユニット2110は別個のレジスタセット(夫々、スカラーレジスタ2112及びベクトルレジスタ2114)を使用し、それらの間で転送されるデータは、メモリに書き込まれ、次いで、レベル1(L1)キャッシュ2106から読み戻され、一方、本発明の代替の実施形態は、異なるアプローチを使用してもよい(例えば、単一のレジスタセットを使用するか、あるいは、データが書き込み及び読み戻しされることなく2つのレジスタファイル間で転送されることを可能にする通信パスを含む)。
【0188】
L2キャッシュ2104の局所サブセットは、プロセッサコアごとに1つである別個の局所サブセットに分割される大域的L2キャッシュの部分である。各プロセッサコアは、L2キャッシュ2104のそれ自身の局所サブセットへの直接的なアクセスパスを有している。プロセッサコアによって読み出されたデータは、そのL2キャッシュサブセット2104に格納され、他のプロセッサコアがそれら自身の局所L2キャッシュサブセットにアクセスすることと並行して、即座にアクセスされ得る。プロセッサコアによって書き込まれたデータは、それ自身のL2キャッシュサブセット2104に格納され、必要に応じて、他のサブセットからフラッシングされる。リングネットワークは、共有データのコヒーレンシを確かにする。リングネットワークは、プロセッサコア、L2キャッシュ及び他の論理ブロックなどのエージェントがチップ内で互いに通信することを可能にするよう双方向である。各リングデータパスは、方向ごとに1020ビット幅である。
【0189】
図21Bは、本発明の実施形態に従う
図21Aのプロセッサコアの部分の拡大図である。
図21Bは、ベクトルユニット2110及びベクトルレジスタ2114に関する更なる詳細とともに、L1キャッシュ2104のL1データキャッシュ2106A部分を含む。具体的に、ベクトルユニット2110は、整数、単精度浮動、及び倍精度浮動命令のうちの1つ以上を実行する16幅のベクトル処理ユニット(VPU)(16幅のALU2128 を参照)である。VPUは、スウィズルユニット2120によりレジスタ入力をスウィズルすること、数値変換ユニット2111A~Bによる数値変換、及びメモリ入力に対する複製ユニット2124による複製、をサポートする。ライトマスクレジスタ2126は、結果として生じるベクトルライトを予測することを可能にする。
【0190】
図22は、本発明の実施形態に従って、1よりも多いコアを有し、集積メモリコントローラを有し、集積グラフィクスを有し得るプロセッサ2200のブロック図である。
図22の実線ボックスは、単一コア2202A、システムエージェント2210、1つ以上のバスコントローラユニット2216の組を備えたプロセッサ2200を表し、一方、破線ボックスの任意の追加は、複数のコア2202A~N、システムエージェント2210内の1つ以上の集積メモリコントローラユニット2214の組、及び特別目的のロジック2208を備えた代替のプロセッサ2200を表す。
【0191】
よって、プロセッサ2200の異なる実施は、1)集積グラフィクス及び/又は科学技術(スループット)ロジック(1つ以上のコアを含んでもよい。)である特別目的のロジック2208と、1つ以上の汎用コア(例えば、汎用イン・オーダーコア、汎用アウト・オブ・オーダーコア、2つの組み合わせ)であるコア2202A~Nとを備えたCPU、2)グラフィクス及び/又は科学技術(スループット)コンピューティングを主に対象とした多数の特別目的のコアである2202A~Nを備えたコプロセッサ、並びに3)多数の汎用イン・オーダーコアであるコア2202A~Nを備えたコプロセッサを含んでもよい。よって、プロセッサ2200は、汎用プロセッサ、コプロセッサ、又は、例えば、ネットワーク若しくは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU(general purpose graphics processing unit)、高スループットMIC(many integrated core)コプロセッサ(30以上のコアを含む。)、埋め込みプロセッサ、などのような特別目的のプロセッサであってもよい。プロセッサは、1つ以上のチップ上で実装されてもよい。プロセッサ2200は、例えば、BiCMOS、CMOS、又はNMOSなどの多数のプロセス技術のいずれかを使用した1つ以上の基板の一部であっても、かつ/あるいは、それら1つ以上の基板上に実装されてもよい。
【0192】
メモリヒエラルキは、コア内の1つ以上のレベルのキャッシュ、1つ以上の共有キャッシュユニット2206の組、及び集積メモリコントローラユニット2214の組へ結合されている外部メモリ(図示せず。)を含む。共有キャッシュユニット2206の組は、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュ、ラストレベルキャッシュ(LLC)、及び/又はそれらの組み合わせのような1つ以上のミッドレベルキャッシュを含んでもよい。一実施形態で、リングベースのインターコネクトユニット2212は、集積グラフィクスロジック2208、共有キャッシュユニット2206の組、及びシステムエージェントユニット2210/集積メモリコントローラユニット2214を相互接続し、一方で、代替案は、そのようなユニットを相互接続するためのよく知られた技術をいくつでも使用してもよい。一実施形態で、コヒーレンシは、1つ以上のキャッシュユニット2206とコア2202A~Nとの間で保たれる。
【0193】
いくつかの実施形態で、コア2202A~Nの1つ以上は、マルチスレッディング可能である。システムエージェント2210は、コア2202A~Nを調整及び動作させるコンポーネントを含む。システムエージェントユニット2210は、例えば、電力制御ユニット(PCU)及びディスプレイユニットを含み得る。PCUは、コア2202A~N及び集積グラフィクスロジック2208の電力状態を調整するために必要なロジック及びコンポーネントであってもよく、あるいは、それらを含んでもよい。ディスプレイユニットは、1つ以上の外部接続されたディスプレイを駆動するためのものである。
【0194】
コア2202A~Nは、アーキテクチャ命令セットに関して同種又は異種であってよく、つまり、コア2202A~Nの2つ以上は同じ命令セットを実行可能であり、一方、他のコアは、その命令セットのサブセット又は異なる命令セットを実行可能である。
【0195】
[例となるコンピュータアーキテクチャ]
図23及び
図24は、例となるコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルド型PC、パーソナル・デジタル・アシスタント、エンジニアリング・ワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタル・シグナル・プロセッサ(DSP)、グラフィクスデバイス、ビデオゲーム機、セットトップボックス、マイクロコントローラ、携帯電話機、ポータブルメディアプレイヤー、ハンドヘルド型デバイス、及び様々な多の電子機器のための当該技術で知られている他のシステム設計及び構成も、適切である。一般に、本明細書で開示されているようにプロセッサ及び/又は他の実行ロジックを組み込むことができる多種多様なシステム又は電子機器が、概して適切である。
【0196】
これより
図23を参照すると、本発明の一実施形態に従うシステム2300のブロック図が示されている。システム2300は、コントローラハブ2320へ結合されている1つ以上のプロセッサ2310、2315を含み得る。一実施形態で、コントローラハブ2320は、グラフィクス・メモリ・コントローラ・ハブ(GMCH)2390、及び入出力ハブ(IOH)2350(別のチップ上にあってもよい。)を含み、GMCH2390は、メモリ2340及びコプロセッサ2345が結合されているメモリ及びグラフィクスコントローラを含み、IOH2350は、入出力(I/O)デバイス2360をGMCH2390へ結合する。代替的にメモリ及びグラフィクスコントローラの一方又は両方は、(本明細書で記載される)プロセッサ内に集積され、メモリ2340及びコプロセッサ2345は、プロセッサ2310、及びIOH2350を備えた単一チップ内のコントローラハブ2320へ直接に結合される。
【0197】
追加のプロセッサ2315の任意の性質は、破線により
図23で表されている。各プロセッサ2310、2315は、本明細書で記載されているプロセッシングコアの1つ以上を含んでもよく、プロセッサ2200の何らかのバージョンであってもよい。
【0198】
メモリ2340は、例えば、動的ランダム・アクセス・メモリ(DRAM)、相変化メモリ(PCM)、又は2つの組み合わせであってもよい。少なくとも1つの実施形態について、コントローラハブ2320は、フロントサイドバス(FSB)、QuickPathなどのポイント・ツー・ポイントインターフェース、又は同様の接続2395のようなマルチドロップパスを介してプロセッサ2310、2315と通信する。
【0199】
一実施形態で、コプロセッサ2345は、例えば、高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、埋め込みプロセッサ、などのような特別目的のプロセッサである。一実施形態で、コントローラハブ2320は、集積グラフィクスアクセラレータを含んでもよい。
【0200】
アーキテクチャ的、マイクロアーキテクチャ的、熱的、電力消費特性、などを含むメリットの測定基準のスペクトルに関して、物理リソース2310、2315の間には様々な違いがあり得る。
【0201】
一実施形態で、プロセッサ2310は、一般的なタイプのデータ処理動作を制御する命令を実行する。命令内に埋め込まれているのは、コプロセッサ命令であってよい。プロセッサ2310は、これらのコプロセッサ命令を、付属のコプロセッサ2345によって実行されるべきであるタイプのものとして認識する。従って、プロセッサ2310は、これらのコプロセッサ命令(又はコプロセッサ命令を表す制御信号)をコプロセッサバス又は他のインターコネクトでコプロセッサ2345に発行する。コプロセッサ2345は、受け取られたコプロセッサ命令を受け入れて実行する。
【0202】
これより
図24を参照すると、本発明の実施形態に従うSoC2400のブロック図が示されている。
図22と類似した要素は、同じ参照番号を有している。また、破線ボックスは、より高度なSoC上の任意の特徴である。
図24で、インターコネクトユニット2402は、1つ以上のコア2202A~Nの組及び共有キャッシュユニット2206を含むアプリケーションプロセッサ2410と、システムエージェント2210と、バスコントローラユニット2216と、集積メモリコントローラユニット2214と、集積グラフィクスロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含み得る1つ以上のコプロセッサ2420の組と、静的ランダム・アクセス・メモリ(SRAM)ユニット2430と、直接メモリアクセス(DMA)ユニット2432と、1つ以上の外部ディスプレイへ結合するディスプレイユニット2440とへ結合されている。一実施形態で、コプロセッサ2420は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、埋め込みプロセッサ、などのような特別目的のプロセッサを含む。
【0203】
本明細書で開示されているメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような実装アプローチの組み合わせで実装されてもよい。本発明の実施形態は、少なくとも1つのプロセッサ、記憶システム(揮発性及び不揮発性メモリ及び/又は記憶要素を含む。)、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを有するプログラム可能なシステムで実行されるコンピュータプログラム又はプログラムコードとして実装されてもよい。
【0204】
プログラムコードは、本明細書で記載されている機能を実行して出力情報を生成するよう入力命令に適用されてもよい。出力情報は、知られている方法で、1つ以上の出力デバイスに適用されてもよい。本願のために、プロセッシングシステムは、例えば、デジタル・シグナル・プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサなどのプロセッサを備えている如何なるシステムも含む。
【0205】
プログラムコードは、プロセッシングシステムと通信するよう高水準手続き型又はオブジェクト指向型プログラミング言語で実装されてもよい。プログラムコードはまた、望まれる場合には、アセンブリ又は機械言語で実装されてもよい。実際に、本明細書で記載されているメカニズムは、如何なる特定のプログラミング言語にも範囲において限定されない。如何なる場合にも、言語は、コンパイル済み又は解釈済み言語であってもよい。
【0206】
少なくとも1つの実施形態の1つ以上の態様は、プロセッサ内の様々なロジックを表す、機械読み出し可能な媒体に記憶されている代表的命令によって実装されてもよい。命令は、機械によって読み出される場合に、機械に、本明細書で記載されている技術を実行するようロジックを製造させる。そのような表現は、「IPコア」としても知られており、有形な機械可読媒体に記憶され、実際にロジック又はプロセッサを作る製造機械にロードするために様々なカスタマ又は製造設備に供給されてもよい。
【0207】
そのような機械可読記憶媒体は、制限なしに、ハードディスク;フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク型リード・オンリー・メモリ(CD-ROM)、コンパクトディスク・リライタブル(CD-RW)、及び光学磁気ディスクを含むあらゆる他のタイプのディスク;リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、例えば、動的RAM(DRAM)、静的RAM(SRAM)、消去可能なプログラム可能リード・オンリー・メモリ(EPROM)、フラッシュメモリ、電気的消去可能なプログラム可能リード・オンリー・メモリ(EEPROM)のような半導体デバイス;相変化メモリ(PCM);磁気若しくは光学カード;又は電子命令を記憶するのに適したあらゆる他のタイプの媒体などの記憶媒体を含む、機械又はデバイスによって製造又は形成された物の非一時的な有形な配置を含んでもよい。
【0208】
従って、本発明の実施形態はまた、本明細書で記載されている構造、回路、装置、プロセッサ及び/又はシステム特徴を定義するハードウェア記述言語(HDL)などの設計データを含むか又は命令を含む非一時的な有形な機械可読媒体も含む。そのような実施形態はプログラム製品とも呼ばれ得る。
【0209】
[管理バスのための通信プロトコル選択]
1つ以上の実施形態で、コントローラデバイスは、管理バスに関連したトリガイベント(例えば、サーバントデバイスが管理バスへ接続されること)を検出し得る。トリガイベントに応答して、コントローラは、管理バスでブロードキャストアドレスの1つ以上の伝送を送信してもよく、そして、サーバントデバイスから確認応答をリッスンしてもよい。いくつかの実施形態で、ブロードキャストアドレスは、第1プロトコルでは使用されず、第2プロトコルで使用される。ブロードキャストアドレスの1つ以上の確認応答を受信すると、コントローラは、サーバントデバイスとの通信のために第2プロトコルを選択し得る。しかし、ブロードキャストアドレスが適切に受信確認されない場合には、コントローラは、第1プロトコルを用いて接続を確立しようと試み得る。このようにして、いくつかの実施形態は、機能性を損なわずに、異なるプロトコルを使用するデバイスとの自動検出及び互換性を提供し得る。
【0210】
更に、いくつかの実施形態は、管理バスのために第1プロトコルと第2プロトコルとの間で選択を行うロジックを含むマルチプロトコルサーバントデバイスを提供し得る。サーバントデバイスは、第2プロトコルに従っ加入(join)メッセージを送信することができ、確認応答が加入メッセージに応答して受信されるかどうかを決定することができる。確認応答が受信される場合に、サーバントデバイスは、内部スパイクフィルタを無効にしてもよく、そして、管理バスのために第2プロトコルを選択してもよい。しかし、確認応答が受信されない場合には、サーバントデバイスは、第1プロトコル及び第2プロトコルの両方でバストラフィックをリッスンしてもよく、そして、検出されるトラフィックのタイプに基づきプロトコルを選択してもよい。このようにして、サーバントデバイスのバススロットは、特定のプロトコルのために事前設定される必要がない。更に、事前の同期化は、コントローラデバイスとサーバントデバイスとの間で不要である。更には、この技術は、プロトコルネゴシエーションが完了した後でコントローラデバイス及び/又はサーバントデバイスがリセットされる場合にバス動作をトランスペアレントに回復し得る。いくつかの実施形態の様々な詳細は、
図26~31を参照して以下で更に記載される。
【0211】
【0212】
これより
図26を参照すると、1つ以上の実施形態に従うシステム2600のブロック図が示されている。いくつかの実施形態で、システム2600は、コンピューティングデバイスの全部又は一部であってよい。例えば、システム2600は、携帯電話機、コンピュータ、サーバ、ネットワークデバイス、システム・オン・チップ(SoC)、コントローラ、分散システム、などであってよい。
【0213】
図26に示されるように、システム2600は、バスリンク2630A~2630N(「バスリンク2630」とも呼ばれる。)を介して任意の数のサーバントデバイス2620A~2620N(「サーバントデバイス2620」とも呼ばれる。)へ結合されているコントローラデバイス2610を含んでもよい。いくつかの実施形態で、コントローラデバイス2610は、バスリンク2630から形成されたシステム管理バスのマスタコントローラであってよく、夫々のサーバントデバイス2620との通信を関連するバスリンク2630を介して確立及び実行してもよい。いくつかの実施形態で、コントローラデバイス2610は、夫々のバスリンク2630で使用するために複数の通信プロトコルのうちの1つを選択し得る。例えば、コントローラデバイス2610は、I2Cプロトコル及びI3Cプロトコルの両方と互換性があり得る。夫々のサーバントデバイス2620は、I3Cプロトコルを使用してもよく(「I3Cデバイス」と呼ばれる。)、あるいは、I2Cプロトコルを使用してもよい(「I2Cデバイス」と呼ばれる。)。更に、コントローラデバイス2610は、I2Cデバイス又はI3Cデバイスと通信するために夫々I2Cプロトコル又はI3Cプロトコルを選択することができる。
【0214】
いくつかの実施形態で、コントローラデバイス2610、サーバントデバイス2620、及びバスリンク2630は、ハードウェアで実装され得る。例えば、コントローラデバイス2610は、中央演算処理装置(CPU)、システム・オン・チップ(SoC)、ベースボード管理コントローラ(BMC)、などであってよい。更に、サーバントデバイス2620は、電源モジュール、拡張カード、冷却ファン、温度センサ、などを含み得る。いくつかの実施形態で、夫々のバスリンク2630は、シングルエンドの2ワイヤシステム管理バスであってよい。いくつかの例で、バスリンク2630は、システム2600のマザーボードに実装されるか、又はそれに含まれ得る。
【0215】
更に
図26に示されるように、コントローラデバイス2610は、夫々のバスリンク2630で使用される通信プロトコルを選択するプロトコルロジック2615を含み得る。1つ以上の実施形態で、プロトコルロジック2615は、特定のバスリンク2630に関連したトリガイベントを検出し得る。例えば、プロトコルロジック2615は、新しいサーバントデバイス2620がバスリンク2630へ接続されたこと、前に接続されたサーバントデバイス2620がリセット又は起動されたこと、バスリンク2630を確立又はリセットするコマンドが受け取られたこと、コントローラデバイス2610が起動又は再起動されること、コントローラデバイス2610が特定の電力状態に入ったか又は出たこと、コントローラデバイス2610が実行中にホットプラグ(hot-plugged)されていること、などを検出し得る。いくつかの例で、トリガイベントは、サーバントデバイス2620がシステム2600に加えられたことを示す存在検出割り込み(Presence Detect Interrupt)によって検出され得る。
【0216】
トリガイベントに応答して、プロトコルロジック2615は、コントローラデバイス2610に、管理バスでブロードキャストアドレスを送信させ得る。いくつかの実施形態で、ブロードキャストアドレスは、複数の通信プロトコルのうちの中でより新しいプロトコルによってのみ使用される予約済み(reserved)アドレスであってよい。例えば、ブロードキャストアドレス“0x7e”は、I3Cプロトコルではブロードキャスト通知として使用され得るが、I2Cプロトコルでは使用されない。従って、I3Cデバイスは、ブロードキャストアドレス“0x7e”の伝送を受信する場合に確認応答を送信し、一方、I2Cデバイスは、ブロードキャストアドレス“0x7e”を無視する(すなわち、受信確認しない)。従って、プロトコルロジック2615は、サーバントデバイス2620から確認応答を受信することに少なくとも部分的に基づき、I3Cプロトコルを選択し得る。しかし、ブロードキャストアドレスが受信確認されない場合には、コントローラデバイス2610は、サーバントデバイス2620がI2Cプロトコルの下で通信することができるかどうかを決定するためにデバイスアドレスを送信してもよい。
【0217】
いくつかの実施形態で、プロトコルロジック2615は、第1確認応答カウンタ2617及び第2確認応答カウンタ2619を含み得る(又は別なふうに提供する)。第1確認応答カウンタ2617は、(例えば、I3Cプロトコルの下で)送信されたブロードキャストアドレスに応答してコントローラデバイス2610によって受信された確認応答の第1カウントを記憶し得る。更に、第2確認応答カウンタ2619は、(例えば、I2Cプロトコルの下で)送信されたデバイスアドレスに応答してコントローラデバイス2610によって受信された確認応答の第2カウントを記憶し得る。
【0218】
いくつかの実施形態で、コントローラデバイス2610は、ブロードキャストアドレスの複数の伝送を送信してもよく、そして、受信された確認応答の数(例えば、第1確認応答カウンタ2617に記憶されている。)が第1閾レベルを超える場合にのみI3Cプロトコルを選択し得る。第1閾レベル及び/又は伝送の数は、バスリンク2630での期待されたエラーレートに基づき選択され得る。このようにして、プロトコル選択は、バスでのノイズ及び/又は歪みにより誤って解釈されるか又は破損する単一メッセージの受信に基づき実行されない。従って、いくつかの実施形態は、管理バスでのデータエラーによって引き起こされる不適切なプロトコル選択を低減又は排除し得る。コントローラデバイス2610のプロトコルロジック2615によって実行され得るプロトコル選択プロセスの例は、
図28を参照して以下で記載される。
【0219】
いくつかの実施形態で、特定の通信プロトコルを選択することは、管理バスの様々なパラメータ又は設定を構成することを含んでもよい。例えば、異なる通信プロトコルを選択することは、信号電圧レベル、クロック周波数、コマンド、メッセージフォーマット及び応答、などの異なる設定を使用することを含んでもよい。更に、特定のプロトコルを選択することは、異なるプロトコルの下では使用不可能である特徴(例えば、クロックストレッチング)の許可された使用を含んでもよい。
【0220】
いくつかの実施形態で、サーバントデバイスは、複数の通信プロトコルと互換性があり得る(本明細書では「マルチプロトコルデバイス」と呼ばれる。)。例えば、
図26を参照すると、サーバントデバイス2620Nは、I2Cプロトコル及びI3Cプロトコルの両方と互換性があるマルチプロトコルデバイスである。更に、いくつかの実施形態で、サーバントデバイス2620Nは、バスリンク2630を確立するときにI2CプロトコルとI3Cプロトコルとの間で選択を行う検出ロジック2625を含み得る。通信プロトコルを選択するためにサーバントデバイス2620の検出ロジック2625によって実行され得るプロトコル選択プロセスの例は、
図29を参照して以下で記載される。
【0221】
【0222】
これより
図27を参照すると、1つ以上の実施形態に従うコンピューティングシステム2700のブロック図が示されている。いくつかの実施形態で、コンピューティングシステム2700は、システム2600(
図26に図示)の実施例に概して対応し得る。
【0223】
示されるように、コンピューティングシステム2700は、プロセッサ2710、メモリ2720、ベースボード管理コントローラ(BMC2730)、及び任意の数のサーバントデバイス2740A~2740N(「サーバントデバイス2740」とも呼ばれる。)を含み得る。プロセッサ2710は、ハードウェアプロセッシングデバイス(例えば、中央演算処理装置(CPU)、システム・オン・チップ(SoC)、など)であってよい。メモリ2720は、動的RAM(DRAM)、同期型動的RAM(SDRAM)、などのような如何なるタイプの揮発性メモリも含み得る。BMC2730は、コンピューティングシステム2700の一次プロセッシングパスとは分離しており、コンピューティングシステム2700を遠隔で管理するために使用され得るハードウェアコントローラであってよい。例えば、遠隔のユーザは、システム2700の状態をモニタするために、システム2700の電源のオン又はオフを引き起こすために、など、BMC2730へ接続してもよい。
【0224】
いくつかの実施形態で、プロセッサ2710及び夫々のサーバントデバイス2740は、データバスリンク2715(例えば、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe))へ結合され得る。データバスリンク2715は、プロセッサ2710とサーバントデバイス2740との間の一次データパスウェイ(「イン・バンド」パスとも呼ばれる。)であってよい。
【0225】
いくつかの実施形態で、BMC2730及び夫々のサーバントデバイス2740は、管理バスリンク2735へ結合され得る。管理バスリンク2735は、データバスリンク2715とは分離している「アウト・オブ・バンド」パスであるシステム管理バスを形成し得る。いくつかの実施形態で、BMC2730は、サーバントデバイス2740へ接続されているシステム管理バスのためのコントローラデバイスであり得る。例えば、BMC2730及びサーバントデバイス2740は、夫々、
図26に示されているコントローラデバイス2610及びサーバントデバイス2620の実施例に対応してもよい。従って、BMC2730は、夫々の管理バスリンク2735で使用される通信プロトコルを選択するプロトコルロジック(例えば、
図26に示されるプロトコルロジック2615)を含んでもよい。BMC2730によって実行され得るプロトコル選択プロセスの例は、
図28を参照して以下で記載される。
【0226】
いくつかの実施形態で、1つ以上のサーバントデバイス2740は、I2Cプロトコル及びI3Cプロトコルの両方と互換性があるマルチプロトコルデバイスであってよい。従って、マルチプロトコルサーバントデバイス2740は、管理バスリンク2735を確立するときにI2CプロトコルとI3Cプロトコルとの間で選択を行う検出ロジック(例えば、
図26に示される検出ロジック2625)を含んでもよい。サーバントデバイス2740によって実行され得るプロトコル選択プロセスは、
図29を参照して以下で記載される。
【0227】
図27は、管理バスコントローラがBMC2730で実装される例を示すが、一方で、実施形態は、これに関して限定されないことに留意されたい。例えば、システム管理バスのコントローラデバイス(「マスターデバイス」とも呼ばれる。)は、コンピューティングシステム2700の内部又は外部にある任意の他のデバイス又はコンポーネント(例えば、プロセッサ2710、バスコントローラ、拡張カード、リモードデバイス、など)で実装されてもよいことが企図される。
【0228】
図28-コントローラデバイスによってプロトコルを選択する方法
【0229】
これより
図28を参照すると、1つ以上の実施形態に従う、通信プロトコルを選択する方法2800のフロー図が示されている。様々な実施形態で、方法2800は、ハードウェア(例えば、プロセッシングデバイス、回路、専用のロジック、プログラム可能なロジック、マイクロコード、など)、ソフトウェア(例えば、プロセッシングデバイスで実行される命令)、又はそれらの組み合わせによって実行され得る。ファームウェア又はソフトウェアの実施形態で、方法2800は、光学、半導体、又は磁気記憶デバイスなどの非一時的な機械可読媒体に記憶されているコンピュータ実行命令によって実装されてもよい。機械可読媒体はデータを記憶することができ、データは、少なくとも1つの機械によって使用される場合に、少なくとも1つの機械に、方法を実行するための少なくとも1つの集積回路を製造させる。例示のために、方法2800に含まれる動作は、1つ以上の実施形態に従う例を示す
図26及び
図27を参照して、以下で記載され得る。しかし、本明細書で論じられている様々な実施形態の範囲は、これに関して限定されない。
【0230】
いくつかの実施形態で、方法2800は、システム管理バスのコントローラデバイスによって、複数の通信プロトコルのうちの1つを選択するために実行され得る。例えば、方法2800は、コントローラデバイス2610(
図26に図示)、BMC2730(
図27に図示)、などによって実行されてもよい。いくつかの実施形態で、方法2800は、コントローラデバイスによって、I2CプロトコルとI3Cプロトコルとの間で選択を行い、選択されたプロトコルをコンピューティングデバイスのシステム管理バスで使用するために実行され得る。しかし、実施形態は、I2Cプロトコル及びI3Cプロトコルに限られず、同様にして他のプロトコルに適用されてもよい。
【0231】
ブロック2810は、管理バスに関連したトリガイベントを検出することを含み得る。例えば、
図26を参照すると、プロトコルロジック2615は、特定のバスリンク2630に関連したトリガイベント(例えば、新しいサーバントデバイス2620がバスリンク2630に接続されたこと、前に接続されたサーバントデバイス2620がリセット又は起動されたこと、バスリンク2630を確立又はリセットするコマンドが受け取られたこと、コントローラデバイス2610が起動又は再起動されること、コントローラデバイス2610が特定の電力状態に入ったか又は出たこと、コントローラデバイス2610が実行中にホットプラグされていること、など)を検出し得る。
【0232】
ブロック2820は、管理バスを、第1プロトコルに関連した第1電圧レベルにセットすることを含み得る。ブロック2830は、第1確認応答カウンタ及び第2確認応答カウンタをゼロ値にセットすることを含み得る。例えば、
図26を参照すると、検出されたトリガイベントに応答して、コントローラデバイス2610は、最初に、I2Cプロトコルに関連した第1電圧レベル(例えば、3.2ボルト)を管理バスで使用し得る。更に、コントローラデバイス2610は、第1確認応答カウンタ2617及び第2確認応答カウンタ2619をゼロ値にセットし得る。
【0233】
ブロック2840は、ブロードキャストアドレスを管理バスで送信することを含み得る。決定ブロック2850は、送信されたブロードキャストアドレスに応答して確認応答(“ACK”)が受信されたかどうかを決定することを含み得る。例えば、
図26を参照すると、コントローラデバイス2610は、サーバントデバイス2620Nへ結合されているバスリンク2630Nでブロードキャストアドレスの最初の伝送を送信することができ、そして、サーバントデバイス2620Nが伝送されたブロードキャストアドレスの確認応答を送信したかどうかを決定することができる。いくつかの実施形態で、伝送されたブロードキャストアドレスは、複数の通信プロトコルの中のより新しいプロトコルによってのみ使用され得る。例えば、ブロードキャストアドレス“0x7e”は、I3Cプロトコルを使用するサーバントデバイスによって受信確認され得るが、I2Cプロトコルを使用するサーバントデバイスによっては受信確認されない。
【0234】
確認応答がブロードキャストアドレスの最初の伝送に応答して受信されたことが決定ブロック2850で決定される場合に(“YES”)、方法2800は、ブロードキャストアドレスのN回の伝送を送信することを含むブロック2280に続くことができる。決定ブロック2885は、ブロードキャストアドレスのN回の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定することを含み得る。例えば、
図26を参照すると、プロトコルロジック2615は、コントローラデバイス2610に、ブロードキャストアドレスのN回の伝送をバスリンク2630で送信させ得る。ここで、Nは、プロトコルロジック2615によって記憶又は指定される整数である。更に、第1確認応答カウンタ2617は、ブロードキャストアドレスのN回の伝送に対する受信された確認応答の数を示すようインクリメントされ得る。コントローラデバイス2610は、第1確認応答カウンタ2617のカウントが第1閾値(例えば、プロトコルロジック2615によって記憶又は指定されている閾値)を超えるかどうかを決定し得る。
【0235】
ブロードキャストアドレスのN回の伝送について受信された確認応答の第1カウントが第1閾値を超えないことが決定ブロック2885で決定される場合に(“NO”)、方法2800はブロック2840に戻り得る(つまり、ブロードキャストアドレスを再び送信する)。しかし、ブロードキャストアドレスのN回の伝送について受信された確認応答の第1カウントが第1閾値を超えることが決定ブロック2885で決定される場合に(“YES”)、方法2800は、管理バスを第2プロトコルに関連した第2電圧レベルにセットすることを含むブロック2890に続くことができる。ブロック2895は、管理バスのために第2プロトコルを選択することを含み得る。例えば、
図26を参照すると、第1確認応答カウンタ2617の値が第1閾値を超えるとの決定に応答して、コントローラデバイス2610は、I3Cプロトコルに関連した第2電圧レベル(例えば、1.8ボルト)を使用して、対応するバスリンク2630でサーバントデバイス2620と通信し得る。更に、コントローラデバイス2610は、バスリンク2630を介したサーバントデバイス2620とのその後の通信のためにI3Cプロトコルを選択し得る。いくつかの実施形態で、第2電圧レベル(例えば、I3Cプロトコルに関連する)は、第1電圧レベル(例えば、I2Cプロトコルに関連する)よりも低くてもよい。ブロック2895の後、方法2800は完了し得る。
【0236】
決定ブロック2850に戻ると、ブロードキャストアドレスの最初の伝送に応答して確認応答が受信されなかったことが決定される場合に(“NO”)、方法2800は、管理バスでデバイスアドレスの連続を送信することを含むブロック2860に続くことができる。決定ブロック2865は、伝送されたデバイスアドレスのうちの特定の1つに応答して確認応答が受信されたかどうかを決定することを含み得る。例えば、
図26を参照すると、コントローラデバイス2610は、サーバントデバイス2620Nへ結合されているバスリンク2630Nでデバイスアドレスの連続を送信することができ、そして、サーバントデバイス2620Nが伝送されたデバイスアドレスのうちの特定の1つに対して確認応答を送信したかどうかを決定することができる。いくつかの実施形態で、伝送されたデバイスアドレスの連続は、夫々のサーバントデバイス2620の可能なデバイスアドレスを含み得る。更に、I2Cプロトコルの下で、サーバントデバイス2620は、その割り当てられたデバイスアドレス(例えば、デバイスの製造の時点で割り当てられる一意の識別子)を含むメッセージに受信確認すべきである。従って、サーバントデバイス2620Nが、伝送されたデバイスアドレスの連続を受信し、特定のデバイスアドレスに受信確認する場合に、これがサーバントデバイスを識別するデバイスアドレスであることが決定され得る。
【0237】
デバイスアドレスの連続のいずれかに応答して確認応答が受信されなかったことが決定ブロック2865で決定される場合に(“NO”)、方法2800はブロック2830に戻り得る(すなわち、第1及び第2確認応答カウンタをゼロ値にリセットし、ブロック2840で再びブロードキャストアドレスを送信する)。しかし、確認応答が特定のデバイスアドレスの伝送に応答して受信されたことが決定ブロック2865で決定される場合に(“YES”)、方法2800は、受信確認された特定のデバイスアドレスのM回の伝送を含むブロック2870に続くことができる。決定ブロック2875は、特定のデバイスアドレスのM回の伝送について受信された確認応答の第2カウントが第2閾値を超えるかどうかを決定することを含み得る。例えば、
図26を参照すると、制御ロジック2615は、コントローラデバイス2610に、特定のデバイスアドレスのM回の伝送をバスリンク2630で送信させ得る。ここで、Mは、プロトコルロジック2615によって記憶又は指定される整数である。更に、第2確認応答カウンタ2619は、特定のデバイスアドレスのM回の伝送に対する受信された確認応答の数を示すようインクリメントされ得る。コントローラデバイス2610は、第2確認応答カウンタ2619のカウントが第2閾値(例えば、プロトコルロジック2615によって記憶又は指定されている閾値)を超えるかどうかを決定し得る。
【0238】
特定のデバイスアドレスのM回の伝送について受信された確認応答の第2カウントが第2閾値を超えないことが決定ブロック2875で決定される場合に(“NO”)、方法2800はブロック2880に戻り得る(すなわち、ブロードキャストアドレスを再び送信する)。しかし、特定のデバイスアドレスのM回の伝送について受信された確認応答の第2カウントが第2閾値を超えることが決定ブロック2875で決定される場合に(“YES”)、方法2800は、管理バスのために第1プロトコルを選択することを含むブロック2878に続くことができる。例えば、
図26を参照すると、第2確認応答カウンタ2619の値が第2閾値を超えるとの決定に応答して、コントローラデバイス2610は、バスリンク2630を介したサーバントデバイス2620とのその後の通信のためにI2Cプロトコルを選択し得る。ブロック2878の後、方法2800は完了し得る。
【0239】
いくつかの実施形態で、ブロック2875及び2885で比較される値(すなわち、第1閾レベル、数N、第2閾値、及び数M)は、1つ以上のパラメータに基づき、予め定義されても、かつ/あるいは、動的に調整されてもよい。例えば、バスリンク2630が比較的に高いエラーレート(例えば、環境条件、他のデバイスからの干渉、などに起因する)に苦しむと予期される場合に、第1閾値又は第2閾値は、比較的に高いレベルにセットされ得る。他の例では、比較される値は、特定のバスリンク2630での測定されたエラーレートに基づき、又は方法2800が、前の閾値及び伝送値を用いて最終的な結果に達することができない場合(例えば、ブロック2830~2895がプロトコルを選択せずに複数回実行される場合)に、動的に調整され得る。
【0240】
図29-サーバントデバイスによってプロトコルを選択する方法。
【0241】
これより
図29を参照すると、1つ以上の実施形態に従う、通信プロトコルを選択する方法2900のフロー図が示されている。様々な実施形態で、方法2900は、ハードウェア(例えば、プロセッシングデバイス、回路、専用のロジック、プログラム可能なロジック、マイクロコード、など)、ソフトウェア(例えば、プロセッシングデバイスで実行される命令)、又はそれらの組み合わせによって実行され得る。ファームウェア又はソフトウェアの実施形態で、方法2900は、光学、半導体、又は磁気記憶デバイスなどの非一時的な機械可読媒体に記憶されているコンピュータ実行命令によって実装されてもよい。機械可読媒体はデータを記憶することができ、データは、少なくとも1つの機械によって使用される場合に、少なくとも1つの機械に、方法を実行するための少なくとも1つの集積回路を製造させる。例示のために、方法2900に含まれる動作は、1つ以上の実施形態に従う例を示す
図26及び
図27を参照して、以下で記載され得る。しかし、本明細書で論じられている様々な実施形態の範囲は、これに関して限定されない。
【0242】
いくつかの実施形態で、方法2900は、マルチプロトコルサーバントデバイス(例えば、
図26に示されるサーバントデバイス2620N)によって、第1プロトコルと第2プロトコルと(例えば、I2CプロトコルとI3Cプロトコルと)の間で選択を行って、選択されたプロトコルをシステム管理バスで使用するために実行され得る。ブロック2910は、第2プロトコルに従って加入メッセージを送信することを含み得る。決定ブロック2920は、送信された加入メッセージに応答して確認応答(“ACK”)が受信されたかどうかを決定することを含み得る。例えば、
図26を参照すると、サーバントデバイス2620Nは、I3Cで定義されているHot Joinイン・バンド割り込み(in band interrupt,IBI)に従ってバスリンク2630Nでその存在をアナウンスすることができ、そして、加入メッセージの確認応答が(例えば、コントローラデバイス2610から)受信されるかどうかを決定することができる。いくつかの実施形態で、サーバントデバイス2620Nは、加入メッセージを複数回(例えば、3回)送信することができ、そして、受信された確認応答の数が予め定義された閾値を超える場合に、加入メッセージが適切に受信確認されたことを決定し得る。
【0243】
加入メッセージに応答して適切な確認応答が受信されたことが決定ブロック2920で決定される場合に(“YES”)、方法2900は、サーバントデバイスのスパイクフィルタを無効にすることを含むブロック2930に続くことができる。ブロック2940は、管理バスのために第2プロトコルを使用することを含み得る。例えば、
図26を参照すると、加入メッセージが適切に受信確認されたとの決定に応答して、サーバントデバイス2620Nは、内部スパイクフィルタを無効にすることができ、そして、バスリンク2630Nでの通信のためにI3Cプロトコルを使用することができる。いくつかの実施形態で、スパイクフィルタは、I3Cプロトコルによって使用される周波数範囲での着信バストラフィックをブロックするサーバントデバイス2620Nのコンポーネントであってよい。従って、スパイクフィルタを無効にすることは、サーバントデバイス2620Nが、バスリンク2630Nを介してI3Cメッセージを受信し応答することを可能にし得る。ブロック2940の後、方法2900は完了し得る。
【0244】
決定ブロック2920に戻ると、加入メッセージに応答して適切な確認応答が受信されなかったことが決定ブロック2920で決定される場合に(“NO”)、方法2900は、第1プロトコル及び第2プロトコルの両方を用いてバストラフィックをリッスンすることを含むブロック2950に続くことができる。例えば、
図26を参照すると、サーバントデバイス2620Nは、I2Cプロトコル及びI3Cプロトコルの両方を用いてバスリンク2630N上のトラフィックをリッスンし得る。いくつかの実施形態で、サーバントデバイス2620Nは、バスリンク2630Nでのトラフィックを独立してリッスンするI2Cリスニング回路及びI3Cリスニング回路を含んでもよい。
【0245】
決定ブロック2960は、ブロードキャストアドレスがバスリンクで受信されたかどうかを決定することを含み得る。例えば、
図26を参照すると、サーバントデバイス2620Nは、I3Cブロードキャストアドレス(例えば、“0x7e”)がバスリンク2630Nで受信されたかどうかを決定し得る。
【0246】
ブロードキャストアドレスがバスリンクで受信されたことが決定ブロック2960で決定される場合に、方法2900は、ブロック2930及び2940(上述された。)に続くことができる。しかし、ブロードキャストアドレスが受信されなかったことが決定ブロック2960で決定される場合には、方法2900は、デバイスアドレスがバスリンクで受信されたかどうかを決定することを含む決定ブロック2970に続くことができる。例えば、
図26を参照すると、サーバントデバイス2620Nは、I3Cブロードキャストアドレスが受信されたと決定する可能性があり、これに応答して、スパイクフィルタを無効にし、I3Cプロトコルを使用してバスリンク2630Nを介して通信し得る。代替的に、サーバントデバイス2620Nは、I3Cブロードキャストアドレスが受信されていないと決定する可能性があり、これに応答して、I2Cデバイスアドレスがバスリンク2630N受信されたかどうかを決定し得る。
【0247】
デバイスアドレスがバスリンクで受信されたことが決定ブロック2970で決定される場合に、方法2900は、管理バスのために第1プロトコルを使用することを含むブロック2980に続くことができる。例えば、
図26を参照すると、サーバントデバイス2620Nは、その割り当てられているデバイスアドレスが受信されたと決定する可能性があり、これに応答して、I2Cプロトコルを使用してバスリンク2630Nを介して通信し得る。ブロック2980の後、方法2900は完了し得る。
【0248】
【0249】
これより
図30を参照すると、1つ以上の実施形態に従う、通信プロトコルを選択する方法3000のフロー図が示されている。様々な実施形態で、方法3000は、ハードウェア(例えば、プロセッシングデバイス、回路、専用のロジック、プログラム可能なロジック、マイクロコード、など)、ソフトウェア(例えば、プロセッシングデバイスで実行される命令)、又はそれらの組み合わせによって実行され得る。ファームウェア又はソフトウェアの実施形態で、方法3000は、光学、半導体、又は磁気記憶デバイスなどの非一時的な機械可読媒体に記憶されているコンピュータ実行命令によって実装されてもよい。機械可読媒体はデータを記憶することができ、データは、少なくとも1つの機械によって使用される場合に、少なくとも1つの機械に、方法を実行するための少なくとも1つの集積回路を製造させる。例示のために、方法3000に含まれる動作は、1つ以上の実施形態に従う例を示す
図26及び
図27を参照して、以下で記載され得る。しかし、本明細書で論じられている様々な実施形態の範囲は、これに関して限定されない。
【0250】
いくつかの実施形態で、方法3000は、システム管理バスのコントローラデバイスによって、複数の通信プロトコルのうちの1つを選択するために実行され得る。例えば、方法3000は、コントローラデバイス2610(
図26に図示)、BMC2730(
図27に図示)、などによって実行されてもよい。いくつかの実施形態で、方法3000は、コントローラデバイスによって、I2CプロトコルとI3Cプロトコルとの間で選択を行い、選択されたプロトコルをコンピューティングデバイスのシステム管理バスで使用するために実行され得る。しかし、実施形態は、I2Cプロトコル及びI3Cプロトコルに限られず、同様にして他のプロトコルに適用されてもよい。
【0251】
ブロック3010は、コントローラデバイスによって、シングルエンドの2ワイヤバスである管理バスに関連したトリガイベントを検出することを含み得る。例えば、
図26を参照すると、プロトコルロジック2615は、特定のバスリンク2630に関連したトリガイベントを検出し得る。
【0252】
ブロック3020は、トリガイベントの検出に応答して、コントローラデバイスが管理バスでブロードキャストアドレスを送信することを含み得る。ブロードキャストアドレスは、第1通信プロトコルでは使用されない。例えば、
図26を参照すると、コントローラデバイス2610は、サーバントデバイス2620Nへ結合されているバスリンク2630NでI3Cブロードキャストアドレス“0x7e”の1つ以上の伝送を送信し得る。
【0253】
ブロック3030は、コントローラデバイスによって、送信されたブロードキャストアドレスが受信確認されたかどうかを決定することを含み得る。例えば、
図26を参照すると、コントローラデバイス2610は、サーバントデバイス2620Nが、バスリンク2630Nを介して、送信されたI3Cブロードキャストアドレス“0x7e”の1つ以上の確認応答を送ったかどうかを決定し得る。
【0254】
ブロック3040は、送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、コントローラデバイスが管理バスでの伝送のために第2通信プロコトルを使用することを含み得る。例えば、
図26を参照すると、コントローラデバイス2610は、送信されたい3Cブロードキャストアドレスに対する受信された確認応答の数を示すよう第1確認応答カウンタ2617を調整し得る。コントローラデバイス2610は、第1確認応答カウンタ2617のカウントが第1閾値を超えることを決定することができ、これに応答して、バスリンク2630NのためにI3Cプロトコルを選択及び使用し得る。いくつかの実施形態で、コントローラデバイス2610はまた、バスリンク2630Nを介してサーバントデバイス2620Nと通信するために、I3Cプロトコルに関連した電圧レベル(例えば、1.8ボルト)を使用してもよい。ブロック3040の後、方法3000は完了され得る。
【0255】
【0256】
これより
図31を参照すると、実行可能命令3110を記憶している記憶媒体3100が示されている。いくつかの実施形態で、記憶媒体3100は、光学媒体、半導体、磁気記憶デバイス、などのような、非一時的な機械可読媒体であってよい。実行可能命令3110は、
図28~30に示されている方法を実行するようプロセッシングデバイスによって実行可能であってよい。更に、実行可能命令3110は、
図28~30で示されている方法を実行するよう少なくとも1つの集積回路を製造するために少なくとも1つの機械によって使用されてもよい。
【0257】
以下の箇条書き及び/又は例は、更なる実施形態に関係がある。
【0258】
例1で、通信プロトコルを選択する装置は、システム管理バス用のコントローラを含み得る。コントローラは、システム管理バスに関連したトリガイベントを検出し、トリガイベントの検出に応答して、システム管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信し、送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、システム管理バスでの伝送のために第2通信プロトコルを使用し得る。
【0259】
例2で、例1の対象は、第1通信プロトコルがI2C通信プロトコルであり、第2通信プロトコルがI3C通信プロトコルである、ことを任意に含んでもよい。
【0260】
例3で、例1~2の対象は、コントローラが、ブロードキャストアドレスの第1伝送においてブロードキャストアドレスを送信し、ブロードキャストアドレスの第1伝送が受信確認されたとの決定に応答して、ブロードキャストアドレスの複数の伝送を送信し、ブロードキャストアドレスの複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定し、確認応答の第1カウントが第1閾値を超えるとの決定に応答して、システム管理バスでの伝送のために第2通信プロトコルを選択する、ことを任意に含んでもよい。
【0261】
例4で、例1~3の対象は、コントローラが、確認応答の第1カウントが第1閾値を超えないとの決定に応答して、ブロードキャストアドレスの少なくとも1つの追加伝送を送信する、ことを任意に含んでもよい。
【0262】
例5で、例1~4の対象は、コントローラが、ブロードキャストアドレスの第1伝送を送信する前に、システム管理バスを、第1通信プロトコルに関連した第1電圧レベルにセットし、確認応答の第1カウントが第1閾値を超えるとの決定に応答して、システム管理バスを、第2通信プロトコルに関連した第2電圧レベルにセットし、第2電圧レベルは第1電圧レベルよりも低い、ことを任意に含んでもよい。
【0263】
例6で、例1~5の対象は、コントローラが、ブロードキャストアドレスの第1伝送が受信確認されなかったとの決定に応答して、システム管理バスでデバイスアドレスを送信し、送信されたデバイスアドレスが受信確認されたかどうかを決定し、送信されたデバイスアドレスが受信確認されたとの決定に応答して、システム管理バスでの伝送のために第1通信プロトコルを選択する、ことを任意に含んでもよい。
【0264】
例7で、例1~6の対象は、コントローラが、デバイスアドレスの第1伝送においてデバイスアドレスを送信し、デバイスアドレスの第1伝送が受信確認されたとの決定に応答して、デバイスアドレスの複数の伝送を送信し、デバイスアドレスの複数の伝送について受信された確認応答の第2カウントが第2閾値を超えるかどうかを決定し、確認応答の第2カウントが第2閾値を超えるとの決定に応答して、システム管理バスでの伝送のために第1通信プロトコルを選択する、ことを任意に含んでもよい。
【0265】
例8で、例1~7の対象は、コントローラが、確認応答の第2カウントが第2閾値を超えないとの決定に応答して、デバイスアドレスの少なくとも1つの追加伝送を送信する、ことを任意に含んでもよい。
【0266】
例9で、通信プロトコルを選択する方法は、コントローラデバイスによって、シングルエンドの2ワイヤバスである管理バスに関連したトリガイベントを検出することと、トリガイベントの検出に応答して、コントローラデバイスが、管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信することと、コントローラデバイスによって、送信されたブロードキャストアドレスが受信確認されたかどうかを決定することと、送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、コントローラデバイスが、管理バスでの伝送のために第2通信プロトコルを使用することとを含み得る。
【0267】
例10で、例9の対象は、第1通信プロトコルがI2C通信プロトコルであり、第2通信プロトコルがI3C通信プロトコルである、ことを任意に含んでもよい。
【0268】
例11で、例9~10の対象は、ブロードキャストアドレスを送信することが、ブロードキャストアドレスの第1伝送を送信することを含み、方法が、ブロードキャストアドレスの第1伝送が受信確認されたとの決定に応答して、コントローラデバイスがブロードキャストアドレスの複数の伝送を送信することと、コントローラデバイスによって、ブロードキャストアドレスの複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定することと、確認応答の第1カウントが第1閾値を超えるとの決定に応答して、コントローラデバイスが管理バスでの伝送のために第2通信プロトコルを選択することとを含む、ことを任意に含んでもよい。
【0269】
例12で、例9~11の対象は、確認応答の第1カウントが第1閾値を超えないとの決定に応答して、コントローラデバイスがブロードキャストアドレスの少なくとも1つの追加伝送を送信することを任意に含んでもよい。
【0270】
例13で、例9~12の対象は、ブロードキャストアドレスの第1伝送を送信する前に、コントローラデバイスが、管理バスを、前記第1通信プロトコルに関連した第1電圧レベルにセットすることと、確認応答の第1カウントが第1閾値を超えるとの決定に応答して、コントローラデバイスが、管理バスを、第2通信プロトコルに関連した第2電圧レベルにセットすることとを任意に含んでもよく、第2電圧レベルは第1電圧レベルよりも低い。
【0271】
例14で、例9~13の対象は、ブロードキャストアドレスの第1伝送が受信確認されなかったとの決定に応答して、コントローラデバイスが管理バスでデバイスアドレスを送信することと、コントローラデバイスによって、送信されたデバイスアドレスが受信確認されたかどうかを決定することと、送信されたデバイスアドレスが受信確認されたとの決定に応答して、コントローラデバイスが、管理バスでの伝送のために第1通信プロトコルを選択することとを任意に含んでもよい。
【0272】
例15で、例9~14の対象は、デバイスアドレスを伝送することが、デバイスアドレスの第1伝送を有し、方法が、デバイスアドレスの第1伝送が受信確認されたとの決定に応答して、コントローラデバイスがデバイスアドレスの複数の伝送を送信することと、コントローラデバイスによって、デバイスアドレスの複数の伝送について受信された確認応答の第2カウントが第2閾値を超えるかどうかを決定することと、確認応答の第2カウントが第2閾値を超えるとの決定に応答して、コントローラデバイスがシステム管理バスでの伝送のために第1通信プロトコルを選択することと含む、ことを任意に含んでもよい。
【0273】
例16で、例9~15の対象は、確認応答の第2カウントが第2閾値を超えないとの決定に応答して、コントローラデバイスがデバイスアドレスの少なくとも1つの追加伝送を送信することを任意に含んでもよい。
【0274】
例17で、コンピューティングデバイスは、1つ以上のプロセッサと、複数の命令を記憶しているメモリとを含んでもよく、命令は、1つ以上のプロセッサによって実行される場合に、コンピューティングデバイスに、例9乃至16のうちいずれかに記載の方法を実行させる。
【0275】
例18で、少なくとも1つの機械可読媒体は、少なくとも1つの機械によって使用される場合に、少なくとも1つの機械に、例9乃至16のうちいずれかに記載の方法を実行させるデータを記憶している。
【0276】
例19で、電子デバイスは、例9乃至16のうちいずれかに記載の方法を実行する手段を含んでもよい。
【0277】
例20で、通信プロトコルを選択するシステムは、命令を実行するプロセッサと、システム管理バスと、システム管理バス用のコントローラとを含み得る。コントローラは、システム管理バスに関連したトリガイベントを検出し、トリガイベントの検出に応答して、システム管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信し、送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、前記システム管理バスでの伝送のために第2通信プロトコルを使用し得る。
【0278】
例21で、例20の対象は、第1通信プロトコルがI2C通信プロトコルであり、第2通信プロトコルがI3C通信プロトコルである、ことを任意に含んでもよい。
【0279】
例22で、例20~21の対象は、コントローラが、ブロードキャストアドレスの第1伝送においてブロードキャストアドレスを送信し、ブロードキャストアドレスの第1伝送が受信確認されたとの決定に応答して、ブロードキャストアドレスの複数の伝送を送信し、ブロードキャストアドレスの複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定し、確認応答の第1カウントが第1閾値を超えるとの決定に応答して、システム管理バスでの伝送のために第2通信プロトコルを選択する、ことを任意に含んでもよい。
【0280】
例23で、例20~22の対象は、コントローラが、ブロードキャストアドレスの第1伝送が受信確認されなかったとの決定に応答して、システム管理バスでデバイスアドレスを送信し、送信されたデバイスアドレスが受信確認されたかどうかを決定し、送信されたデバイスアドレスが受信確認されたとの決定に応答して、システム管理バスでの伝送のために前記第1通信プロトコルを選択する、ことを任意に含んでもよい。
【0281】
例24で、例20~23の対象は、コントローラが、デバイスアドレスの第1伝送においてデバイスアドレスを送信し、デバイスアドレスの第1伝送が受信確認されたとの決定に応答して、デバイスアドレスの複数の伝送を送信し、デバイスアドレスの複数の伝送について受信された確認応答の第2カウントが第2閾値を超えるかどうかを決定し、確認応答の第2カウントが第2閾値を超えるとの決定に応答して、システム管理バスでの伝送のために第1通信プロトコルを選択する、ことを任意に含んでもよい。
【0282】
例25で、通信プロトコルを選択する装置は、シングルエンドの2ワイヤバスである管理バスに関連したトリガイベントを検出する手段と、トリガイベントの検出に応答して、管理バスで、第1通信プロトコルでは使用されないブロードキャストアドレスを送信する手段と、送信されたブロードキャストアドレスが受信確認されたかどうかを決定する手段と、送信されたブロードキャストアドレスが受信確認されたとの決定に応答して、管理バスでの伝送のために第2通信プロトコルを使用する手段とを含み得る。
【0283】
例26で、例25の対象は、第1通信プロトコルがI2C通信プロトコルであり、第2通信プロトコルがI3C通信プロトコルである、ことを任意に含んでもよい。
【0284】
例27で、例25~26の対象は、ブロードキャストアドレスを送信することが、ブロードキャストアドレスの第1伝送を送信することを含み、装置が、ブロードキャストアドレスの第1伝送が受信確認されたとの決定に応答して、ブロードキャストアドレスの複数の伝送を送信する手段と、ブロードキャストアドレスの複数の伝送について受信された確認応答の第1カウントが第1閾値を超えるかどうかを決定する手段と、確認応答の第1カウントが第1閾値を超えるとの決定に応答して、管理バスでの伝送のために前記第2通信プロトコルを選択する手段とを含む、ことを任意に含んでもよい。
【0285】
例28で、例27の対象は、確認応答の第1カウントが第1閾値を超えないとの決定に応答して、ブロードキャストアドレスの少なくとも1つの追加伝送を送信する手段を任意に含んでもよい。
【0286】
例29で、例27~28の対象は、ブロードキャストアドレスの第1伝送を送信する前に、管理バスを、第1通信プロトコルに関連した第1電圧レベルにセットする手段と、確認応答の第1カウントが第1閾値を超えるとの前記決定に応答して、管理バスを、第2通信プロトコルに関連した第2電圧レベルにセットする手段とを任意に含んでもよく、第2電圧レベルは第1電圧レベルよりも低い。
【0287】
例30で、例27~28の対象は、ブロードキャストアドレスの第1伝送が受信確認されなかったとの決定に応答して、管理バスでデバイスアドレスを送信する手段と、送信されたデバイスアドレスが受信確認されたかどうかを決定する手段と、送信されたデバイスアドレスが受信確認されたとの決定に応答して、管理バスでの伝送のために第1通信プロトコルを選択する手段とを任意に含んでもよい。
【0288】
本明細書で記載されているいくつかの実施形態で、コントローラデバイスは、管理バスに関連したトリガイベントを検出することができ、これに応答して、サーバントデバイスへの接続のために第1通信プロトコルと第2通信プロトコルとの間で選択を行う選択プロセスを実行することができる。選択は、システム管理バスでのブロードキャストアドレスの1つ以上の伝送を送信することを含んでもよく、ブロードキャストアドレスは、第2プロトコルで使用されるが、第1プロトコルでは使用されない。コントローラは、確認応答を受信することに応答して第2プロトコルを選択してもよく、あるいは、適切な確認応答が受信されない場合には第1プロトコルを選択してもよい。このようにして、いくつかの実施形態は、機能性を損なわずに、異なるプロトコルを使用するデバイスとの自動検出及び互換性を提供し得る。
【0289】
更に、いくつかの実施形態は、管理バスのために第1プロトコルと第2プロトコルとの間で選択を行うロジックを含むマルチプロトコルサーバントデバイスを提供し得る。サーバントデバイスは、第2プロトコルに従って加入(join)メッセージを送信することができ、確認応答が加入メッセージに応答して受信されるかどうかを決定することができる。確認応答が受信される場合に、サーバントデバイスは、内部スパイクフィルタを無効にしてもよく、そして、管理バスのために第2プロトコルを選択してもよい。しかし、確認応答が受信されない場合には、サーバントデバイスは、第1プロトコル及び第2プロトコルの両方でバストラフィックをリッスンしてもよく、そして、検出されるトラフィックのタイプに基づきプロトコルを選択してもよい。このようにして、サーバントデバイスのバススロットは、特定のプロトコルのために事前設定される必要がない。更に、事前の同期化は、コントローラデバイスとサーバントデバイスとの間で不要である。更には、この技術は、プロトコルネゴシエーションが完了した後でコントローラデバイス及び/又はサーバントデバイスがリセットされる場合にバス動作をトランスペアレントに回復し得る。
【0290】
図26~31は、様々な実施例を表しているが、他の変形も可能であることに留意されたい。例えば、1つ以上の実施形態は、
図1~25を参照して記載されるデバイス及びシステムの例で実装されてもよいことが企図される。
図1~31に示される例は、例示のために与えられており、如何なる実施形態も制限するよう意図されないことに留意されたい。具体的に、実施形態は、明りょうさのために簡略化された形で示されることがあるが、実施形態は、如何なる数及び/又は配置のコンポーネントも含んでもよい。例えば、いくつかの実施形態は、示されているものに加えて、任意の数のコンポーネントを含んでもよく、示されているコンポーネントの別の配置が、特定の実施では現れてもよいことが企図される。更には、
図1~31に示される例における詳細は、1つ以上の実施形態でどこでも使用されてもよいことが企図される。
【0291】
上記の例の様々な組み合わせが可能であることを理解されたい。実施形態は、多種多様なタイプのシステムで使用されてもよい。例えば、一実施形態では、通信デバイスは、本明細書で記載されている様々な方法及び技術を実行するよう配置可能である。当然、本発明の範囲は、通信デバイスに限られず、代わりに、他の実施形態は、命令を処理する他のタイプの装置、又はコンピューティングデバイスで実行されることに応答して、デバイスに、本明細書で記載されている方法及び技術の1つ以上を実行させる1つ以上の機械可読媒体を対象とすることができる。
【0292】
本明細書の全体を通じて「一実施形態」又は「実施形態」への言及は、実施形態に関連して記載されている特定の特徴、構造、又は特性が、本発明に包含される少なくとも1つの実施に含まれていることを意味する。よって、「一実施形態」又は「実施形態において」との語句の出現は、必ずしも同じ実施形態に言及しているわけではない。更に、特定の特徴、構造、又は特性は、表されている特定の実施形態以外の他の適切な形態で設けられてもよく、全てのそのような形態は、本願の特許請求の範囲に包含され得る。
【0293】
本発明は、限られた数の実施形態に関して記載されてきたが、当業者であれば、それらから多数の改良及び変形を認識するだろう。添付の特許請求の範囲は、全てのそのような改良及び変形を、本発明の真の精神及び範囲内にあるよう網羅することが意図される。
【符号の説明】
【0294】
2600 システム
2610 コントローラデバイス
2615 プロトコルロジック
2620,2740 サーバントデバイス
2630 バスリンク
2700 コンピューティングシステム
2710 プロセッサ
2715 データバスリンク
2720 メモリ
2730 ベースボード管理コントローラ(BMC)
2735 管理バスリンク
【外国語明細書】