JP6526609B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP6526609B2
JP6526609B2 JP2016175998A JP2016175998A JP6526609B2 JP 6526609 B2 JP6526609 B2 JP 6526609B2 JP 2016175998 A JP2016175998 A JP 2016175998A JP 2016175998 A JP2016175998 A JP 2016175998A JP 6526609 B2 JP6526609 B2 JP 6526609B2
Authority
JP
Japan
Prior art keywords
processor
memory access
instructions
instruction
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016175998A
Other languages
English (en)
Other versions
JP2016207232A (ja
JP2016207232A5 (ja
Inventor
ジー. ディクソン、マーティン
ジー. ディクソン、マーティン
シー. ラッシュ、ウィリアム
シー. ラッシュ、ウィリアム
エー. サンティアゴ、ヤズミン
エー. サンティアゴ、ヤズミン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2016207232A publication Critical patent/JP2016207232A/ja
Publication of JP2016207232A5 publication Critical patent/JP2016207232A5/ja
Application granted granted Critical
Publication of JP6526609B2 publication Critical patent/JP6526609B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Description

本明細書に記載される実施形態は、一般に、プロセッサに関する。詳細には、本明細書に記載される実施形態は、一般に、プロセッサにおけるメモリ・アクセス同期に関する。
マルチスレッド・ソフトウェア、及び複数のエンティティが同一の共有メモリにアクセスする可能性がある環境で実行される他のソフトウェアは、典型的に、1以上のタイプのメモリ・アクセス同期命令を含む。種々のそのような命令が、当技術分野で知られている。その例には、メモリ・アクセス・フェンス又はバリア命令、ロック命令、条件付きメモリ・アクセス命令などが挙げられる。これらのメモリ・アクセス同期命令は、一般に、共有メモリへのアクセスが適切な順序で行われる(例えば、元のプログラム順序と一致して行われる)ようにし、それにより間違った結果を防ぐために必要とされる。
コンピューティング・システムの一実施形態のブロック図である。 共有メモリへのアクセスの同期を緩和する方法の一実施形態のブロック流れ図である。 緩和同期モードのときにメモリ・アクセス同期命令をノーオペレーション(NOP)に復号化する働きをする復号化ロジックの一実施形態のブロック図である。 緩和同期モードのときにメモリ・アクセス同期を達成しないようにメモリ・アクセス同期命令をリタイアさせる働きをするメモリ・サブシステムの一実施形態のブロック図である。 緩和同期モードのときに1以上の同期メモリ・アクセス命令を1以上の対応する非同期メモリ・アクセス命令に変換する働きをする復号化ロジックの一実施形態のブロック図である。 制御フローを条件によりメモリ・アクセス命令及び/又はメモリ・アクセス同期命令に進めるか進めない条件付き分岐命令を含むコードの例のブロック図である。 アーキテクチャ緩和同期モードに基づいてメモリ・アクセス同期を強化又は緩和する条件付き分岐命令を予測する働きをする分岐プレディクタの一実施形態のブロック図である。 緩和メモリ・アクセス同期モードを使用するようにプロセッサを構成する方法の一実施形態のブロック流れ図である。 本発明の実施形態による代表的なインオーダ・パイプライン及び代表的なレジスタ・リネーミング・アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。 本発明の実施形態によるプロセッサに含まれるインオーダ・アーキテクチャ・コアの代表的な実施形態と、代表的なレジスタ・リネーミング・アウトオブオーダ発行/実行アーキテクチャ・コアの両方を示すブロック図である。 本発明の実施形態による単一プロセッサ・コアを、そのオンダイ相互接続ネットワークへの接続と、その2レベル(L2)キャッシュのローカル・サブセットと共に示すブロック図である。 本発明の実施形態による図10Aのプロセッサ・コアの一部の拡張図である。 本発明の実施形態による複数のコア、統合メモリ・コントローラ、及び統合グラフィックスを有することがあるプロセッサのブロック図である。 本発明の一実施形態によるシステムのブロック図である。 本発明の一実施形態による第1の特定の代表的なシステムのブロック図である。 本発明の一実施形態による第2の特定の代表的なシステムのブロック図である。 本発明の一実施形態によるSoCのブロック図である。 本発明の実施形態によりソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対照させるブロック図である。
本発明は、発明の実施形態を示すために使用される以下の詳細及び添付図面を参照することによって最もよく理解されることがある。
以下の記述では、多数の特定の詳細(例えば、特定のメモリ同期命令、メモリ同期を緩和する手法、論理実装、マイクロアーキテクチャ詳細、動作シーケンス、論理区分/統合詳細、システム構成要素のタイプ及び相互関係など)が説明される。しかしながら、本発明の実施形態が、これらの特定の詳細なしに実施されることがあることを理解されたい。他の例では、この説明の理解を不明瞭にしないようにするため、周知の回路、構造及び技術は詳細に示されない。
図1は、プロセッサ101とメモリ114を含むコンピューティング・システム100の一実施形態のブロック図である。様々な実施形態では、コンピューティング・システムは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、タブレット・コンピュータ、ネットブック、スマートフォン、携帯情報端末、携帯電話、サーバ、ネットワーク装置(例えば、ルータ又はスイッチ)、モバイル・インターネットデバイス(MID)、メディア・プレイヤ、スマート・テレビ、セットトップ・ボックス、ビデオゲーム・コントローラ、又は少なくとも1つのプロセッサと少なくとも1つのメモリを有する他の電子装置を表わすことがある。メモリ114は、同じタイプ又は異なるタイプの1以上のメモリ素子を含むことがある。プロセッサとメモリは、従来の結合機構113によって(例えば、1以上のインターコネクト、バス、ハブ、メモリ・コントローラ、チップセット構成要素などを介して)結合されるか、又は他の方法で互いに通信する。一般に、当該技術分野で知られている従来の結合機構が適切である。
幾つかの実施形態では、プロセッサは、汎用プロセッサでよい。例えば、プロセッサは、一般にコンピュータ・システム内の中央処理装置(CPU)として使用される汎用プロセッサでよい。他の実施形態では、プロセッサは、専用プロセッサでよい。適切な専用プロセッサの例には、ほんの一例として、通信プロセッサ、ネットワーク・プロセッサ、暗号プロセッサ、グラフィック・プロセッサ、コプロセッサ、埋込み型プロセッサ、及びデジタル・シグナル・プロセッサ(DSP)が挙げられるが、これらに限定されない。プロセッサは、様々な複雑命令セット・コンピューティング(CISC)プロセッサ、様々な縮小命令セット・コンピューティング(RISC)プロセッサ、様々な超長命令語(VLIW)プロセッサ、これらの様々な複合物、又は全く他のタイプのプロセッサのいずれでもよい。
プロセッサ101には、所望の数のコア、ハードウェア・スレッド、ハードウェア・スレッド・ユニット、ハードウェア・スレッド・スロット、ハードウェア実行コンテキスト、又は他の処理要素若しくは論理プロセッサが挙げられる。用語「コア」は、多くの場合、集積回路上に配置されて、専用実行資源と関連付けられた個々のアーキテクチャ状態(例えば、実行状態)を維持できるロジックを指す。これと対照的に、用語「ハードウェア・スレッド」は、多くの場合、集積回路に配置されて、使用する実行資源へのアクセスを共有する独立アーキテクチャ状態を維持できるロジックを指す。特定の資源が、アーキテクチャ状態によって共有され、他の資源が、アーキテクチャ状態に割り当てられるときは、コアとハードウェア・スレッドの境界線は明確でなくなる。しかしながら、コアとハードウェア・スレッドは、多くの場合、オペレーティング・システムからは個別の処理要素又は論理プロセッサと見なされる。オペレーティング・システムは、一般に、各コア上のスレッド若しくはプロセス、ハードウェア・スレッド、ハードウェア・スレッド・ユニット、ハードウェア・スレッド・スロット、ハードウェア実行コンテキスト、又は他の処理要素若しくは論理プロセッサを個々にスケジューリングすることができる。換言すると、処理要素又は論理プロセッサは、一実施形態では、ソフトウェア・スレッド、オペレーティング・システム、アプリケーション、他のコードなどのコードと個々に関連付けることができる任意のオンダイ・プロセッサ・ロジックを表わすことがある。幾つかの実施形態では、処理要素又は論理プロセッサは、広義には、状態を保持することができ、またコードと個々に関連付けることができるロジックを表わすことがある。
示された実施形態では、プロセッサは、第1の論理プロセッサ102−1〜第Nの論理プロセッサ102−Nを含む。数Nは、特定の実装に適した任意の数でよい。例えば、数Nは、一般に、2〜約数百の範囲、更にグラフィック・プロセッサとチップマルチ・プロセッサの場合には数千でもよい。第1の論理プロセッサ102−1は、命令処理パイプライン108を含む。命令処理パイプラインには、一般に、例えば、命令フェッチロジック、命令復号化ロジック、命令実行ロジックなどの従来の命令処理パイプライン・ロジックが挙げられる。また、他の論理プロセッサはそれぞれ、命令処理パイプライン(単純にするために図示されない)を含んでもよい。コア又は他の論理プロセッサはそれぞれ、シングルスレッドでもマルチスレッドでもよい。様々な実施形態では、コア又は他の論理プロセッサは、対称コアでもよく、非対称コア(例えば、様々なハードウェア資源、更には様々な命令セットを有する異種コア)でもよく、又は一部が対称で他が非対称でもよい。
メモリ114にはソフトウェア116が記憶される。ソフトウェアは、例えば、1以上のオペレーティング・システム(OS)117と1以上のアプリケーション118を含んでもよい。動作中、ソフトウェアの一部分が、プロセッサ101にロードされプロセッサによって実行されてもよい。一例として、様々なプロセス又はスレッドが、異なる論理プロセッサ102上でスケジューリングされてもよい。図示されたように、第1の論理プロセッサ102−1は、実行可能ソフトウェア103を有してもよい。同様に、少なくとも時々には、他の論理プロセッサが、実行可能ソフトウェア(図示せず)を有してもよい。実行可能ソフトウェアは、論理プロセッサの命令セット・アーキテクチャ(ISA)の命令を含んでもよい。これらのISA命令は、マクロ命令、機械レベル命令、又はアセンブリ言語命令と呼ばれることがある。実行可能ソフトウェアは、メモリ114にアクセスする1以上のメモリ・アクセス命令119を含むことがある。例えば、実行可能ソフトウェアは、共有メモリからデータをロード/読み取る1以上のロード/リード命令、及び/又は共有メモリにデータをストア/書き込む1以上のストア/ライト命令を含んでもよい。これらの命令は、様々な意味があり、様々な名前で知られる。これらの命令の例には、移動命令、ロード/移動及び複製命令、ロード複数命令、記憶複数命令、収集命令、拡散命令などが挙げられるが、これらに限定されない。
また、少なくとも時々、他の論理プロセッサ(例えば、第Nの論理プロセッサ102−N)が、ロードされ実行中の実行可能ソフトウェアを有することがある(図示せず)。同様に、この実行可能ソフトウェアは、メモリ114にアクセスするために使用される1以上のメモリ・アクセス命令を有することがある。少なくとも時々、共有メモリ115(例えば、メモリ114の一部)は、論理プロセッサのうちの少なくとも2つによって共有されてもよい。複数の論理プロセッサが、共有メモリにアクセスしているとき、一般には、実行可能ソフトウェア内の適切な位置で、メモリ・アクセスを同期させてメモリ・アクセスが適切な順序になるようにする(例えば、元のプログラム順序と一致して行われる)ことが適切である。場合によっては、論理プロセッサの1以上が、命令をアウトオブオーダに実行してもよい。様々な論理プロセッサが異なる周波数又は他の速度で動作する可能性がある。幾つかの実施形態では、例えば、1以上のコプロセッサ、入出力(I/O)装置、又はシステム内の他の装置など、プロセッサ101上にない(例えば、同じダイ又はチップ上にない)1以上の外部装置が、共有メモリにアクセスする可能性もある。プロセッサが、比較的強力なメモリ順序付けモデルを有し、論理プロセッサ間の明確な同期プリミティブなしにメモリ・アクセスを受けることができる場合でも、そのような外部装置の可能性があるときには同期が適切なことが多い。
適切な同期メカニズムが使用されない場合は、共有メモリ115へのメモリ・アクセスは、意図された順序と異なる(例えば、元のプログラム順序と一致しない)順序で行われる可能性があり、それにより、計算上間違った結果になる可能性がある。プログラムが、第1の論理プロセッサに所定の記憶位置にある値「A」を読み取らせる単純な例を想定し、値「A」を値「B」に加えると、和「A+B」が所定の記憶位置にライトバックされ、第Nの論理プロセッサが、所定の記憶位置から「A+B」を読み出す。この例では、代わりに、第Nの論理プロセッサが、どういう理由であれ、所定の記憶位置から値「A」を読み取った後で、和「A+B」がその所定の記憶位置に書き込まれた場合は、計算上間違った結果となる可能性がある。そのようなオカレンスを防ぐために、複数のエンティティが同じ共有メモリにアクセスする可能性がある環境で実行されるマルチスレッドソフトウェアや他のソフトウェアは、メモリ・アクセス同期メカニズム(例えば、1以上のメモリ・アクセス同期命令)を含む。
図1を再び参照すると、実行可能ソフトウェア103は、可能なタイプのメモリ・アクセス同期命令の様々な例を含む。示された実施形態では、メモリ・アクセス同期命令には、メモリ・アクセスを条件付きで保護する(例えば、メモリ・アクセスを条件付きで飛び越すか又は飛び越さない)ために、1以上のメモリ・アクセス・フェンス及び/又はメモリ・アクセス・バリア命令104、1以上のメモリロック命令105、1以上の条件付きメモリ・アクセス命令106、及び1以上の条件付き分岐命令107を含む。これら及び他のタイプのメモリ・アクセス同期命令及びメカニズムの様々な例が開発された。
フェンス及び/又はバリア命令は、一般に、プロセッサにメモリ・アクセス順序付けの制約を強化させる。例えば、フェンス命令は、プログラム順序においてフェンス命令の前に行われる所定のタイプの特定のメモリ・アクセス操作が、プログラム順序においてフェンス/バリア命令の後で所定のタイプのメモリ・アクセス操作の前に実行されることを保証してもよい。一例として、インテルIA−32アーキテクチャは、ストア操作をシリアル化する(例えば、プログラム順序においてSFENCE命令の前のストアが、SFENCE命令の後のストアの前に実行されるようにする)SFENCE(ストア・フェンス)命令、ロード操作をシリアル化する(例えば、プログラム順序においてLFENCE命令の前のロードが、LFENCE命令の後のロードの前に実行されるようにする)LFENCE(ロードフェンス)命令、ロード及びストア操作をシリアル化する(例えば、プログラム順序においてMFENCE命令の前のロードとストアが両方とも、MFENCE命令の後のロードとストアの前に実行されるようにする)MFENCE(メモリ・フェンス)命令を含む。
更に、テキサス・インスツルメンツ(TI)から入手可能なOMAPTTM3や他のマルチメディア・アプリケーション・プロセッサは、データ・メモリ・バリア(DMB)、データ同期バリア(DSB)、及び命令同期バリア(ISB)タイプの命令を実行する。DMB命令は、DMBの前の全ての明示的データ・メモリ転送が、DMBの後の後続データ・メモリ転送の前に完了するようにする。DSB命令は、DSBの前の全ての明示的データ・メモリ転送が、DSBが実行された後の命令の前に完了するようにする。ISB命令は、ISBの前の全てのコンテキスト変換操作の効果が、後続の命令によって認識されるようにする。更に、TIから入手可能なプロセッサは、ロードリンクとストア条件付き(LL/SC)の1対の命令を実行する。ロードリンク命令は、記憶位置の現在値を読み取るために使用されることがある。ストア条件付き命令は、ロードリンク命令に続き、ロードリンク命令以後に記憶位置に変更が行なわれていない場合に、その記憶位置に新しい値を記憶することがある。また、これら及びその他のアーキテクチャは、一般に、アトミック・リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、コンペア・アンド・スワップ・ダブル命令、コンペア・アンド・エクスチェンジ命令、テスト・アンド・セット命令、コンペア・アンド・セット命令、フェッチ・アンド・アド命令などの1以上の変形を有する。例えば、リード・モディファイ・ライト命令は、記憶位置を読み取り、その記憶位置に新しい値(例えば、新しい値、又はリード値の関数若しくは導関数)を書き込んでもよい。例えば、コンペア・アンド・スワップ・アトミック命令は、記憶位置の内容を所定の値とアトミックに比較し、それらの内容が同じ場合にその記憶位置の内容を所定の新しい値に修正する。
これらのメモリ・アクセス同期命令/メカニズムは、一般に、適切なメモリ・アクセス順序を保証し間違った結果を防ぐために必要に応じて評価される。しかしながら、メモリ・アクセス同期命令/メカニズムは、一般に、性能を低下させる傾向があるオーバヘッド又は負担(tax)となる。一方、そのような命令を実行するために特定の量の時間(例えば、クロックサイクル)、パイプライン資源、及び電力がかかる。更に、そのような命令の幾つかは、命令が順序変更され順不同に実行される程度を制限する傾向があり、これにより、アウトオブオーダ実行の利益が制限される傾向がある。適正なメモリ・アクセス順序付けを保証するには、一般にメモリ・アクセス同期命令をより自由に使用する必要があるので、特に、弱いか又は比較的弱いメモリ順序付けモデルを有するプロセッサでは、そのような負担又はオーバヘッドが目立つことがある。したがって、特に、弱いメモリ・アクセス順序付けモデルを有するプロセッサの場合、そのようなメモリ・アクセス同期命令は、性能を低下させかつ/又は消費電力を増やす傾向がある。
幾つかの実施形態では、メモリ・アクセス同期メカニズムは、性能を高めかつ/又は消費電力を減らすために適切な場合に選択的に緩和されることがある(例えば、同期の量が減らされることがある)。例えば、幾つかの実施形態では、共有メモリ115へのメモリ同期のそのような緩和は、1つの論理プロセッサ(例えば、第1の論理プロセッサ102−1)だけが共有メモリ114にアクセスしているときに適切なことがある。論理プロセッサは、システム内の1以上の他のエンティティが、共有メモリへのアクセスを潜在的に確認することができ、またその共有メモリへのアクセスと同期が必要なときに、同期メカニズムを選択的に使用することがある。例えば、システム内で単一スレッドだけが動作している場合、そのスレッドが動作している論理プロセッサは、典型的には、その単一スレッドが共有メモリの正しいビューを見ていること、したがって単一スレッドが、メモリ・アクセス同期を強化する性能及び電力負担を負う必要がないことを固有に保証する。より正確に言うと、プロセッサは、性能を改善しかつ/又は消費電力を減らすために緩和同期モードで動作してもよい。例えば、緩和同期モードのとき、命令は、メモリ・アクセス同期命令に対して順序変更されて、メモリ・アクセス同期命令は、その他の方法では通常通り許可されなくなる。
図1を再び参照すると、プロセッサ101は、メモリ・アクセス同期緩和ロジック109を含む。ロジック109は、適切な場合に、共有メモリ115へのアクセスの同期を緩和する働きをする。例えば、幾つかの実施形態では、ロジック109は、プロセッサが緩和メモリ・アクセス同期モードのとき、メモリ・アクセス同期命令(例えば、フェンス/バリア命令104、ロック命令105、条件付きアクセス命令106などのうちの1以上)が、メモリへのアクセスを同期させるのを阻止することがある。それ以外のとき、プロセッサは、共有メモリへのアクセスの同期を緩和しないようにすることがある(例えば、メモリ・アクセス同期命令/メカニズムを実質的に従来の方式で処理してもよい)。幾つかの実施形態では、プロセッサ101は、必要に応じて、アーキテクチャ緩和同期モードを有してもよい。幾つかの実施形態では、プロセッサは、アーキテクチャ緩和メモリ・アクセス同期モードを示す1以上のアーキテクチャ・ビット110を有してもよい。メモリ・アクセス同期ロジック109は、1以上のアーキテクチャ・ビット110が、アーキテクチャ緩和同期モードを示すときに、共有メモリへのアクセスの同期を選択的に緩和してもよい。図示されたように、幾つかの実施形態では、プロセッサが緩和同期モードのとき、第1の論理プロセッサ(例えば、スレッドが実行している)が、共有メモリ115への緩和(例えば、少なくとも部分的に同期されていない)アクセス111を実行してもよい。幾つかの実施形態では、他の論理プロセッサは、プロセッサが緩和同期モードのときに共有メモリ115にアクセスしなくてもよい112。
幾つかの実施形態では、アクセスの同期を緩和することは、メモリ・アクセス同期命令/メカニズム(例えば、フェンス命令、バリア命令、ロック命令など)を無視することを含むことがある。幾つかの実施形態では、アクセスの同期を緩和することは、メモリ・アクセス同期命令/メカニズムを対応する/類似した非同期メモリ・アクセス命令/メカニズムに変換することを含むことがある(例えば、条件付きメモリ・アクセス命令が、無条件メモリ・アクセス命令に変換されてもよい)。幾つかの実施形態では、アクセスの同期を緩和することは、分岐するか又は飛び越す条件付き分岐命令を、メモリ・アクセス命令に対して特定の適切な方法で予測する(例えば、同期が強制されないようにかつ/又は共用データ衝突の可能性がないように予測する)ことを含むことがある。
幾つかの実施形態では、1以上のアーキテクチャ・ビット110は、アーキテクチャ可視かつ/又はオペレーティング・システムや他のソフトウェアから可視でもよい。ビットは、プロセッサ(即ち、第1の論理プロセッサ)がアーキテクチャ緩和同期モードかどうかを示すように構成することができる。例えば、一実施形態では、ビットは、プロセッサが緩和同期モードであることを示す第1の値を有してもよく(例えば、単一のアーキテクチャ可視の緩和同期モード・ビットが、二進数1に設定される)、ビットは、プロセッサが緩和同期モードでないことを示す第2の異なる値を有してもよい(例えば、単一ビットが二進数0にクリアされる)。他の実施形態では、複数のアーキテクチャ・ビット(例えば、様々な対応する共有メモリ部分用に異なるアーキテクチャ・ビット、様々な論理プロセッサ又はスレッド用の異なるアーキテクチャ・ビットなど)があってもよい。例えば、これらのビットは、アーキテクチャ可視又はアーキテクチャ・レジスタ(例えば、ページ・テーブル・ベース・レジスタ、別の制御又はコンフィグレーション・レジスタなど)に含まれてもよい。
例えばオペレーティング・システム、アプリケーション・ソフト、ソフトウェアなどのシステム内の適切なエンティティは、必要に応じて、これらのビットを、特定のアクティビティ、どのスレッドが実行されているか、及びシステム内でどのメモリが共有されているかに応じて構成してもよい。例えば、オペレーティング・システムは、単一スレッドがシステム内で動作していると判定した後、1つのスレッドだけが特定の共有メモリにアクセスすることを判定した後、他のスレッドが共有メモリ又は実行スレッドを監視していないと判定した後、同期命令/メカニズムが必要ないことを判定した後、又はアーキテクチャ緩和同期モードになることが適切又は許容可能であると他の方法で判定した後で、アーキテクチャ緩和同期モードになることを決定してもよい。
記述を不明瞭にしないように、比較的単純なプロセッサ101を示し述べてきた。他の実施形態では、プロセッサは、必要に応じて、例えば、命令取出しユニット、命令スケジューリング・ユニット、分岐予測ユニット、命令及びデータキャッシュ、命令及びデータ変換索引バッファ、プリフェッチ・バッファ、マイクロ命令キュー、マイクロ命令シーケンサ、バス・インタフェース・ユニット、2レベル以上のキャッシュ、リタイアメント・ユニット、レジスタ・リネーミング・ユニット、他の従来の構成要素、及びこれらの様々な組み合わせなど、他の周知の構成要素を含んでもよい。プロセッサ内には構成要素の事実上多数の様々な組み合わせ及び構成があり、また実施形態は、特定の組み合わせ又は構成にも限定されない。プロセッサは、1つの集積回路、又は1組の1以上の半導体ダイ又はチップを表わすことがある(例えば、単一のダイ又はチップ、又は複数のダイ又はチップを含むパッケージ)。幾つかの実施形態では、プロセッサは、システム・オン・チップ(SoC)及び/又はチップ多重プロセッサ(CMP)を表わすことがある。
図2は、共有メモリへのアクセスの同期を緩和する方法220の一実施形態のブロック流れ図である。幾つかの実施形態では、図2の操作及び/又は方法は、図1の装置によって及び/又は図1の装置内で実行されることがある。また、装置に関して本明細書で述べる構成要素、特徴及び特定の詳細は、必要に応じて、装置によって及び/又は装置内で実施形態において実行されることがある操作及び/又は方法に当てはまる。あるいは、図2の操作及び/又は方法は、類似の装置又は全く異なる装置によって実行されかつ/又はその装置内で実行されてもよい。更に、図1の装置は、図2と同じ操作及び/若しくは方法、図2と類似の操作及び/若しくは方法、又は図2と全く異なる操作及び/若しくは方法を実行してもよい。
方法は、ブロック221で、第1の論理プロセッサのための1組の命令を取り出すことを含む。論理プロセッサは、プロセッサの複数の論理プロセッサのうちの1つでよい。幾つかの実施形態では、1組の命令は、メモリへのアクセスを同期させる少なくとも1つのメモリ・アクセス同期命令を含んでもよい。様々な実施形態では、メモリ・アクセス同期命令は、フェンス命令、バリア命令、ロック命令、条件付きメモリ・アクセス命令、又はメモリ・アクセスに関する分岐に使用される条件付き分岐命令を含んでもよい。
方法は、ブロック222で、メモリ・アクセス同期命令の同期を考慮することなく第1の論理プロセッサからメモリにアクセスすることを含む。幾つかの実施形態では、第1の論理プロセッサは、メモリ・アクセス同期命令と関連した同期を無視するか、注意していないか、考慮しないか、監視しないか、フィルタリングするか、防止するか、阻止するか、停止するか、又は他の方法で考慮しないことがある。例えば、幾つかの実施形態では、メモリ・アクセス同期命令は、ノーオペレーション(NOP)に復号化されるか又は他の方法で変換される。別の例として、幾つかの実施形態では、メモリ・アクセス同期命令は、非同期命令に復号化されるか又は他の方法で変換される。別の例として、幾つかの実施形態では、プロセッサのロジックは、メモリ・アクセス同期に影響を与えないようにメモリ・アクセス同期命令を無視するかフィルタリングしてもよい。メモリ・アクセス同期命令を考慮せずに論理プロセッサを動作させることは、性能を改善しかつ/又は消費電力を削減するのに役立つことがあり好都合である。
前述のように、幾つかの実施形態において、アクセスの同期を緩和することは、メモリ・アクセス同期命令(例えば、フェンス命令、バリア命令、ロック命令など)を無視することを含んでもよい。プロセッサがそのような同期命令を無視するために使用することがある様々なマイクロアーキテクチャ方法がある。
図3は、プロセッサが緩和同期モードのときに、特定タイプのメモリ・アクセス同期命令をノーオペレーション(NOP)に復号化する働きをする復号化ロジック330の一実施形態のブロック図である。幾つかの実施形態では、図3の復号化ロジックは、図1のプロセッサに含まれてもよくかつ/又は図2の方法で使用されてもよい。あるいは、図3の復号化ロジックは、類似又は異なるプロセッサに含まれてもよくかつ/又は類似又は異なる方法で使用されてもよい。更に、図1のプロセッサ及び/又は図2の方法は、図3と類似又は異なるロジックを使用してもよい。
復号化ロジックは、復号化ユニット又は復号器と呼ばれることもある。復号器は、マイクロコード読み取り専用メモリ(ROM)、ルックアップテーブル、ハードウェア実装、プログラマブルロジック・アレイ(PLA)、及び当該技術分野で既知の復号器を実現するために使用される他の機構を含むがこれらに限定されない様々な機構を使用して実現されてもよい。
動作中、アセンブリ命令やマクロ命令などの比較的高レベルの命令が、命令復号化ロジックに提供されてもよい。例えば、命令は、命令取出しユニット、命令キューなどから復号化ロジックに提供されてもよい。図に示されたように、命令は、1以上のタイプのメモリ・アクセス命令303(例えば、ロード命令、ストア命令、収集命令など)、1以上のタイプのメモリ・フェンス及び/又はメモリ・バリア命令304、及び1以上のタイプのロック命令305を含んでもよい。
メモリ・アクセス命令303を復号化するときと、メモリ・アクセス同期に使用されない様々な他の命令(例えば、従来の算術、論理、また他の命令)を復号化するとき、復号化ロジックは、プロセッサが緩和同期モードかどうかにかかわらず、実質的に従来通り動作してもよい。復号化ロジックは、これらの相対的に高レベルの命令を、1以上の対応するマイクロ命令、マイクロオペレ−ション、マイクロコード・エントリポイント、又は復号化された命令の操作を一般に実施する相対的に低レベル(例えば、回路レベル又はハードウェアレベル)の命令又は制御信号に復号化してもよい。
これと対照的に、プロセッサが緩和同期モードのとき、復号化ロジックは、特定タイプのメモリ・アクセス同期命令をノーオペレーション(NOP)に復号化するか他の方法で変換する働きをしてもよい。図示されたように、幾つかの実施形態において、復号化ロジックは、緩和同期モードと結合されてもよくかつ/又は緩和同期モードを認識してもよい。前述したように、このモードは、1以上のアーキテクチャ可視ビットであってもよく、このアーキテクチャ可視ビットは、プロセッサを緩和同期モードにし緩和同期モードでなくすために、例えばオペレーティング・システムや他のソフトウェアによって設定又はクリアされてもよい。プロセッサが、緩和同期モードでないとき、復号化ロジックは、そのようなメモリ・アクセス同期命令を実質的に従来通り復号化してもよい。即ち、フェンス命令、バリア命令、ロック命令などは、パイプラインによって送られて意図されたフェンス、バリア又はロックを実現するマイクロオペレ−ション又は他の命令又は制御信号に復号化されてもよい。しかしながら、幾つかの実施形態では、プロセッサが緩和同期モードのとき、復号化ロジックは、特定タイプのメモリ・アクセス同期命令をノーオペレーション(NOP)に復号化してもよい。図示されたように、幾つかの実施形態では、フェンス及び/又はバリア命令は、NOPとして復号化されてもよい。例えば、MFENCE、SFENCE、又はLFENCEマクロ命令は、そのようなマクロ命令が従来通り復号化される命令又は制御信号ではなくNOPに復号化されてもよい。更に、幾つかの実施形態では、ロック命令は、NOPとして復号化されてもよい。NOPは、操作を有効に実行しかつ/又はメモリ・アクセス同期を実行してもよい。プロセッサ・パイプラインは、実質的に、これらのNOPを黙って無視してもよい。このようにして、復号化ロジックは、プロセッサが緩和同期状態のときに、フェンス、バリア、及びロック命令、又はこれらの少なくとも一部分を選択的にフィルタリングしてもよい。これは、性能を改善しかつ/又は消費電力を削減するのに役立つことがあり好都合である。
復号化ロジックが、全てのフェンス、バリア及び/又はロックをNOPに復号化する必要がないことを理解されたい。より正確に言うと、幾つかの実施形態では、1以上のフェンス命令及び/又は1以上のバリアの命令及び/又は1以上のロック命令が、NOPに復号化されてもよい。同期の緩和レベルは、性能を改善しかつ/又は電力を削減する目的を様々なレベルの部分的同期を保持する目的と釣りあわせるために、実施形態によって異なってもよい。幾つかの実施形態では、あるタイプの命令(例えば、同期にとって重要なタイプ及び/又は性能又は電力に強く影響を及ぼすタイプ)は、NOPとして復号化され、別のタイプは復号化されないことがある。例えば、あるタイプのフェンス又はバリア(例えば、LFENCE)は、NOPとして復号化されることがあり、別のタイプ(例えば、MFENCE)は復号化されないことがある。別の例として、場合によって、ロックではなくフェンス又はバリアが、NOPとして復号化されてもよく、この逆でもよい。したがって、同期の緩和レベルは、適応性があり、実装の特定の目的に適するように変更されてもよい。
他の実施形態では、そのような命令をNOPに変換するために、メモリ・アクセス同期命令をNOPに変換する復号器ではなく、他の命令変換ロジックが使用されてもよい。適切な命令変換ロジックの例には、命令エミュレーション・ロジック、命令トランスレーション・ロジック、命令モーフ・ロジック、命令解釈ロジック、及びこれらの組み合わせが挙げられるが、これらに限定されない。
図4は、プロセッサが緩和同期モードのときに、メモリ・アクセス同期を行わないように特定のタイプのメモリ・アクセス同期命令をリタイアさせる働きをするメモリ・サブシステム437の一実施形態のブロック図である。幾つかの実施形態では、図4のメモリ・サブシステムは、図1のプロセッサに含まれてもよくかつ/又は図2の方法に使用されてもよい。あるいは、図4のメモリ・サブシステムは、類似又は異なるプロセッサに含まれてもよくかつ/又は類似又は異なる方法に使用されてもよい。更に、図1のプロセッサ及び/又は図2の方法は、図4と類似又は異なるメモリ・サブシステムを使用してもよい。
前述のように、復号化ロジック430は、命令復号化ロジックに提供されることがあるアセンブリ命令やマクロ命令などの相対的に高レベルの命令を受け取ることがある。これらの命令には、1以上のタイプのメモリ・アクセス命令403(例えば、ロード命令、ストア命令、収集命令など)、1以上のタイプのメモリ・フェンス及び/又はメモリ・バリア命令404、並びに1以上のタイプのロック命令405が挙げられる。幾つかの実施形態では、復号化ロジックは、プロセッサが緩和同期モードかどうかにかかわらず、これらの命令のそれぞれを実質的に従来通り復号化してもよい。
メモリ・サブシステム437は、対応する復号化命令又は制御信号を受け取ってもよい。図示されたように、幾つかの実施形態において、メモリ・サブシステムは、プロセッサと結合され、かつ/又はプロセッサがオプションのアーキテクチャ緩和同期モード410かどうかを認識することがある。復号化されたメモリ・アクセス同期命令又は制御信号を処理するとき、メモリ・サブシステムは、プロセッサが緩和同期モードかどうかを確認してもよい(例えば、1以上のアーキテクチャ・ビットを確認する)。プロセッサが緩和同期モードでないとき、メモリ・サブシステムは、場合によってメモリ・アクセス同期を実現又は強化することがあるそのような復号化されたメモリ・アクセス同期命令又は制御信号を実質的に従来通り処理してもよい。例えば、LFENCE命令から復号化された制御信号は、メモリ・サブシステムにロードをフェンスさせてもよい。
しかしながら、幾つかの実施形態では、プロセッサが緩和同期モードのとき、メモリ・サブシステムは、そのような復号化されたメモリ・アクセス同期命令又は制御信号を、メモリ・アクセス同期を緩和するように、違うふうに処理してもよい。これが行われる特定の方法は、一般に、同期を実現するために使用される特定のマイクロアーキテクチャ手法に依存する。当該技術に熟練し本開示で利益を有する者は、本発明の範囲が如何なる特定の手法にも限定されないことを理解するであろう。1つの特定の例として、メモリ・サブシステムは、メモリ・アクセス同期を実行させることなくメモリ・アクセス同期命令又は制御信号をリタイア、終了又は破棄してもよい。図示されたように、幾つかの実施形態において、1以上のフェンス及び/又はバリア命令は、メモリ・サブシステムからリタイアされてもよい438。更に、幾つかの実施形態では、1以上のロック命令が、メモリ・サブシステムからのリタイアされてもよい439。幾つかの実施形態では、メモリ・サブシステムは、実質上、これらの復号化されたメモリ・アクセス同期命令をNOPとして処理してもよい。幾つかの実施形態では、メモリ・サブシステムは、プロセッサが緩和同期モードのとき、そのような復号化されたメモリ・アクセス同期命令を有効かつ選択的にフィルタリングしてもよい。復号化されたメモリ・アクセス命令又は制御信号は、メモリ414に至るインターコネクト413上の信号又はサイクル499として現われてもよく、プロセッサが緩和同期モードかどうかにより、同期されてもよく同期されなくてもよい。
前述のように、全てのフェンス/バリア及び/又はロックが緩和されるように処理されることは必ずしも必要ない。より正確に言うと、幾つかの実施形態では、少なくとも幾つかのメモリ・アクセス同期命令(例えば、少なくとも1つのタイプ)は、緩和同期により処理されてもよい。同期緩和レベルは、柔軟であり、性能を改善しかつ/又は電力を削減する目的を様々なレベルの部分的同期を保持する目的と釣りあわせるために、実施形態によって変更されてもよい。
前述のように、幾つかの実施形態において、メモリ・アクセスの同期を緩和することは、同期メモリ・アクセス命令(又は、命令のセット)を対応する及び/又は類似した非同期メモリ・アクセス命令(又は、命令のセット)に変換することを含んでもよい。例えば、条件付きメモリ・アクセス命令が、対応し/類似した無条件メモリ・アクセス命令に変換されてもよい。
図5は、プロセッサが緩和同期モードのときに、同期メモリ・アクセス命令(又は、命令のセット)を対応しかつ/又は類似した非同期メモリ・アクセス命令(又は、命令のセット)に復号化又は他の方法で変換する働きをする復号化ロジック530の一実施形態のブロック図である。幾つかの実施形態では、図5の復号化ロジックは、図1のプロセッサに含まれてもよくかつ/又は図2の方法に使用されてもよい。あるいは、図5の復号化ロジックは、類似又は異なるプロセッサに含まれてよく及び/又は類似又は異なる方法に使用されてもよい。更に、図1のプロセッサ及び/又は図2の方法は、図5のロジックと類似又は異なるロジックを使用してもよい。
復号器は、同期メモリ・アクセス命令(又は、命令のセット)を受け取ってもよい。図示されたように、幾つかの実施形態では、復号化ロジックは、緩和同期モードと結合されかつ/又は緩和同期モードを認識してもよい。幾つかの実施形態では、同期メモリ・アクセス命令は、例えば条件付きロードや条件付きストアなどの条件付きメモリ・アクセス命令を表わしてもよい。他の実施形態では、命令の同期メモリ・アクセス・セットは、ロードリンクとストア条件付き(LL/SC)の1対の命令を表わしてもよい。ロードリンクとストア条件付き(LL/SC)の1対の命令は、幾つかのマルチスレッドアーキテクチャでは、同期を達成するために使用される。ロードリンク命令は、記憶位置の現在値を読み取るために使用されることがある。ストア条件命令は、ロードリンク命令の後に続き、ロードリンク命令以後その記憶位置に変更が行なわれていない場合に、その記憶位置に新しい値を記憶することがある。他の実施形態は、他のロックフリー・アトミック・リード・モディファイ・ライト命令/操作に関係する。他の実施形態では、命令の同期されたメモリ・アクセス・セットは、トランザクション同期拡張(TSX)又はトランザクション・メモリ・サポート命令を表わすことがある。適切な命令の更に他の例には、コンペア・アンド・スワップ命令、ダブル・コンペア・アンド・スワップ命令、Nコンペア・アンド・スワップ命令などが挙げられる。
プロセッサが緩和同期モードでないとき、復号化ロジックは、同期メモリ・アクセス命令(又は、命令のセット)を実質的に従来通り復号化してもよい。しかしながら、幾つかの実施形態では、プロセッサが緩和同期モードのとき、復号化ロジックは、同期メモリ・アクセス命令(又は、命令のセット)を、対応しかつ/又は類似した非同期メモリ・アクセス命令(又は、命令のセット)に復号化するか別の方法で変換してもよい。例えば、一実施形態では、条件付きメモリ・アクセス命令(例えば、条件付きロード又は条件付きストア)は、対応する/類似した無条件メモリ・アクセス(例えば、無条件ロード又は無条件ストア)命令又は制御信号に変換されてもよい。別の例として、ロック移動レジスタ命令が、移動レジスタ命令に変換されてもよい。別の例として、一実施形態では、ロードリンク及びストア条件付き(LL/SC)の1対の命令が、単一の無条件ストア命令又は制御信号に変換されてもよい。一態様では、これは、マクロ融合型変換でよい。更に別の実施形態では、リード・モディファイ・ライト操作は、より単純な書き込み命令又は制御信号に変換されてもよい。有利には、より複雑な同期命令は、より単純な非同期命令又は制御信号に変換されてもよい。
前述のように、全ての同期メモリ・アクセス命令(又は、命令のセット)が、対応かつ/又は類似した非同期メモリ・アクセス命令(又は、命令のセット)に変換されなくてもよく、より正確に言えば、少なくとも1つが変換されればよい。緩和レベルは、適応性があり、特定の実装にカスタマイズされてもよい。また、他の実施形態では、これらの命令を変換するために、復号器変換ではなく他の命令変換ロジックが使用されてもよいことを理解されたい。適切な命令変換ロジックの例には、命令エミュレーション・ロジック、命令トランスレーション・ロジック、命令モーフ・ロジック、命令解釈ロジック、及びこれらの組み合わせがあるが、これらに限定されない。
コードは、多くの場合、1以上の様々なタイプの条件付き分岐命令を含む。条件付き分岐命令は、実行の制御フローを2つの可能な方向のどちらかの方向に条件付きで分岐させてもよい。これらの2つの方向は、しばしば「取得経路」と「非取得経路」と呼ばれる。「非取得経路」は、一般に、実行されているコードにおける次の連続した命令に至り、一方、「取得経路」は、一般に、1以上の間にある命令を介して連続しない分岐ターゲット命令に飛び越すか又は分岐する。分岐命令を受けるかどうかは、一般に、命令と関連した条件の評価(例えば、条件が満たされるかどうか)に依存する。
インテル・アーキテクチャは、条件付き飛越し命令の幾つかの適切な例を含む。適切な「条件を満たした場合に飛び越し」(jcc)命令の幾つかの代表的な例には、(a)(キャリーフラグ=0とゼロフラグ=0)より上の場合にショートジャンプする命令(JA)、(b)キャリー(キャリーフラグ=1)の場合にショートジャンプする命令(JC)、(c)0(ゼロフラグ=1)の場合にニアジャンプニアする命令(JZ)、(d)非ゼロ(ゼロフラグ=0)の場合にショートジャンプする命令(JNZ)、(e)(キャリーフラグ=1又はゼロフラグ=1)以下の場合にニアジャンプする命令(JBE)、及び(f)(ゼロフラグ=1又は符号フラグ≠OF)以上の場合にニアジャンプする命令(JNG)が挙げられるが、これらに限定されない。他のアーキテクチャでは他の例が知られる。
性能を改善するために、ほとんどの最新のプロセッサは、条件付き分岐の実際の方向が決定される前に条件付き分岐の方向を予測する分岐プレディクタを有する。一般に、条件付き分岐の実際の方向は、最終的には、パイプラインの後続段で条件が実際に評価されるまで分からない。しかしながら、分岐プレディクタは、分岐予測機構又はロジックを使用して条件付き分岐の方向を予測することができる(例えば、過去の履歴に基づいて)。これは、プロセッサの性能を改善するのに役立つことがある。分岐プレディクタがない場合、プロセッサは、条件付き分岐命令と関連した条件の評価を待った後でないと追加の命令をパイプラインに取り出せない可能性がある。しかしながら、分岐プレディクタは、条件付き分岐の最も可能性の高い方向を予測することによって、そのような時間の浪費を回避するのに役立つことがある。次に、予測された分岐方向を使用して、追加命令を取り出しその追加命令を推論的に実行してもよい。
最終的に、予測された分岐方向は、正しいか間違いかが判明する。予測された分岐方向が正しいことが判明した場合、推論的に実行された命令の結果及び/又は状態が利用されることがある。この場合、一般に、普通ならば条件付き分岐の実際の方向の評価を待っている間に活動停止状態になるか少なくとも十分に利用されなくなるパイプライン段の利用が増えるので、プロセッサの性能と速度が向上する。しかしながら、代わりに、予測された分岐方向が間違っていた(例えば、分岐プレディクタによって間違って予測された)ことが判明した場合、条件付き分岐命令を超えて推論的に実行された命令による結果及び/又は状態は、典型的には、廃棄されなければならなくなる。多くの場合、パイプラインはフラッシュされ(パイプライン内で現在進行中の命令を廃棄する)、実行は、間違って予測され、代わりの現在分かっている分岐方向で再開された条件付き分岐まで戻される。この結果は、一般に、性能の不利益とエネルギーの不利益の両方を招く傾向があるので、望ましくない。
図6は、制御フローがメモリ・アクセス命令及び/又はメモリ・アクセス同期命令651に進むことを条件付きで許可するか許可しない条件付き分岐命令650を含むコードの例のブロック図である。条件付き分岐命令は、「取得経路」と「非取得経路」を有する。取得経路は、条件付き分岐命令によって示された順方向分岐ターゲット命令652に至る。例えば、条件付き分岐命令は、分岐ターゲット命令を示す(例えば、分岐ターゲット命令へのオフセットを指定する)引数又はソースオペランドを有することがある。非取得経路は、プログラム順序で条件付き分岐命令に連続的に従い、条件付き分岐命令と分岐ターゲット命令との間にある1組の1以上の命令に至る。幾つかの実施形態では、これらは、メモリ・アクセス命令及び/又はメモリ・アクセス同期命令651を含むことがある。
図7は、アーキテクチャ緩和同期モード710に基づいてメモリ・アクセス同期を強化又は緩和する条件付き分岐命令を予測する働きをする分岐プレディクタ755の一実施形態のブロック図である。分岐プレディクタは、条件付き分岐命令を受け取ることがある。幾つかの実施形態では、条件付き分岐命令は、メモリ・アクセス命令及び/又はメモリ・アクセス同期命令へのフロー移動を条件により制御するために使用されてもよい。分岐プレディクタは、アーキテクチャ緩和同期モード710と結合される。分岐プレディクタは、アーキテクチャ緩和同期モードに基づいて実行されるか又はされない条件付き分岐命令を予測する働きをしてもよい。幾つかの実施形態では、この予測は、メモリ・アクセス同期を強化又は緩和するために行われることがある。例えば、アーキテクチャ緩和同期モードのとき、分岐プレディクタは、メモリ・アクセス同期を緩和するように条件付き分岐命令を予測してもよい。あるいは、アーキテクチャ緩和同期モードでないとき、分岐プレディクタは、メモリ・アクセス同期を強化するように条件付き分岐命令を予測してもよい。
図8は、緩和メモリ・アクセス同期モードを使用するようにプロセッサを構成する方法860の一実施形態のブロック流れ図である。幾つかの実施形態では、方法860は、プロセッサ上で実行されるオペレーティング・システム、アプリケーション又は他のソフトウェアの命令及び/又はモジュールによって行なわれてもよい。幾つかの実施形態では、図8の動作及び/又は方法は、図1の装置によってかつ/又は図1の装置内で行なわれてもよい。また、装置に関して本明細書で述べる構成要素、特徴、及び特定の任意の詳細は、必要に応じて、実施形態において装置によって実行されかつ/又は装置内で実行されることがある操作及び/又は方法に適用される。あるいは、図8の動作及び/又は方法は、類似又は全く異なる装置によって実行されかつ/又は類似又は全く異なる装置内で実行されてもよい。更に、図1の装置は、図8のものと同じ操作及び/若しくは方法、類似した操作及び/若しくは方法、又は全く異なる操作及び/若しくは方法を実行してもよい。
方法は、ブロック861で、複数の論理プロセッサのうちの第1の論理プロセッサを、緩和メモリ・アクセス同期モードで動作させることを可能に決定することを含む。幾つかの実施形態では、第1の論理プロセッサがアクセスしているメモリの部分に現在他の論理プロセッサがアクセスしていないとき、第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることが決定されてもよい。
方法は、また、ブロック862で、1以上のアーキテクチャ可視ビット(例えば、プロセッサのアーキテクチャ可視レジスタ内の)を、第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを示すように修正することを含む。あるいは、必要に応じて、非アーキテクチャ・ビットが使用されてもよい。幾つかの実施形態では、緩和メモリ・アクセス同期モードで動作させるとき、第1の論理プロセッサは、メモリ・アクセス同期命令が、共有メモリ(例えば、現在第1の論理プロセッサだけが使用している前に共有されていたメモリ部分)へのアクセスを同期するのを阻止する働きをしてもよい。
代表的なコア・アーキテクチャ、プロセッサ及びコンピュータアーキテクチャ プロセッサ・コアは、様々な方法で、様々な目的のため、様々なプロセッサに実現されてもよい。例えば、そのようなコアの実装には、1)汎用計算のための汎用インオーダ・コア、2)汎用計算のための高性能汎用アウトオブオーダ・コア、3)主にグラフィックス及び/又は科学(スループット)計算のための専用コアが挙げられる。様々なプロセッサの実装には、1)汎用計算のための1以上の汎用インオーダ・コア及び/又は汎用計算に意図された1以上の汎用アウトオブオーダ・コアを含むCPU、及び2)主にグラフィクス及び/又は科学(スループット)のための1以上の専用コアを含むコプロセッサが挙げられる。そのような様々なプロセッサは、様々なコンピュータ・システム・アーキテクチャとなり、そのようなコンピュータ・システム・アーキテクチャには、1)CPUと別のチップ上のコプロセッサ、2)CPUと同じパッケージ内の別のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(その場合、そのようなコプロセッサは、統合グラフィックス及び/又は科学(スループット)ロジックなどの専用ロジック又は専用コアと呼ばれることがある)、及び4)同じダイ上に前述のCPU(アプリケーション・コア又はアプリケーション・プロセッサと呼ばれることがある)、前述のコプロセッサ、及び追加の機能を含むことがあるチップ上のシステムが挙げられる。次に代表的なコア・アーキテクチャについて述べ、その後で、代表的なプロセッサ及びコンピュータアーキテクチャについて述べる。
代表的なコア・アーキテクチャ。インオーダ及びアウトオブオーダ・コア・ブロック図。図9Aは、本発明の実施形態による代表的なインオーダ・パイプライン及び代表的なレジスタ・リネーミング・アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図9Bは、本発明の実施形態によるプロセッサに含まれるインオーダ・アーキテクチャ・コアの代表的な実施形態と、代表的なレジスタ・リネーミング・アウトオブオーダ発行/実行アーキテクチャ・コアの両方を示すブロック図である。図9A〜図9Bの実線の枠は、インオーダ・パイプラインとインオーダ・コアを示し、一方、追加された点線の枠は、レジスタ・リネーミング・アウトオブオーダ発行/実行パイプライン及びコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットの場合のアウトオブオーダ態様について説明する。
図9Aでは、プロセッサ・パイプライン900が、フェッチ段階902、長さ復号化段階904、復号化段階906、割り付け段階908、リネーミング段階910、スケジューリング(ディスパッチ又は発行としても知られる)段階912、レジスタリード/メモリリード段階914、実行段階916、ライトバック/メモリライト段階918、例外処理段階922、及びコミット段階924を含む。
図9Bは、実行エンジン・ユニット950に結合されたフロントエンド・ユニット930を含むプロセッサ・コア990を示し、これらの両方が、メモリ・ユニット970に結合される。コア990は、縮小命令セットコンピューティング(RISC)コア、複雑命令セット・コンピューティング(CISC)コア、超長命令語(VLIW)コア、又はハイブリッド又は代替コアタイプでよい。更に別の選択肢として、コア990は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサ・コア、汎用コンピューティング・グラフィック処理装置(GPGPU)コア、グラフィック・コアなどの専用コアでよい。
フロントエンド・ユニット930は、命令キャッシュ・ユニット934に結合された分岐予測ユニット932を含み、命令キャッシュ・ユニット934は、命令変換索引バッファ(TLB)936に結合され、命令変換索引バッファ(TLB)936は、命令取出しユニット938に結合され、命令取出しユニット938は、復号化ユニット940に結合される。復号化ユニット940(又は、復号器)は、命令を復号化し、出力として1以上のマイクロオペレ−ション、マイクロコード・エントリ・ポイント、マイクロ命令、他の命令、又は他の制御信号を生成し、これらの出力は、元の命令から復号化されるか、元の命令を他の方法で反映させるか、元の命令から導出される。復号化ユニット940は、様々な異なる機構を使用して実現されてもよい。適切な機構の例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジック・アレイ(PLA)、マイクロコード読み取り専用メモリなど(ROM)が挙げられるが、これらに限定されない。一実施形態では、コア990には、特定のマクロ命令のマイクロコードを記憶するマイクロコードROM又は他の媒体が挙げられる(例えば、復号化ユニット940内又は他の状況ではフロントエンド・ユニット930内)。復号化ユニット940は、実行エンジン・ユニット950内でリネーム/アロケータ・ユニット952に結合される。
実行エンジン・ユニット950は、リタイアメント・ユニット954及び1組の1以上のスケジューラ・ユニット956に結合されたリネーム/アロケータ・ユニット952を含む。スケジューラ・ユニット956は、予約ステーションや中央命令ウィンドウなどを含む任意数の異なるスケジューラを表す。スケジューラ・ユニット956は、物理レジスタ・ファイル・ユニット958に結合される。物理レジスタ・ファイル・ユニット958はそれぞれ、1以上の物理レジスタ・ファイルを表し、物理レジスタ・ファイルはそれぞれ、スカラ整数、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点、状態(例えば、実行される次の命令のアドレスの命令ポインタ)などの1以上の異なるデータ・タイプを記憶する。一実施形態では、物理レジスタ・ファイル・ユニット958は、ベクトル・レジスタ・ユニット、ライトマスク・レジスタ・ユニット、及びスカラ・レジスタ・ユニットを含む。レジスタ・ユニットは、アーキテクチャ・ベクトル・レジスタ、ベクトル・マスク・レジスタ、及び汎用レジスタを提供してもよい。物理レジスタ・ファイル・ユニット958は、レジスタ・リネーミング及びアウトオブオーダ実行が実施されることがある様々な方法を示すためにリタイアメント・ユニット954によって重ねられる(例えば、リオーダ・バッファ及びリタイアメント・レジスタ・ファイルの使用、将来ファイル、履歴バッファ、及びリタイアレジスタ・ファイルの使用、レジスタマップ及びレジスタのプールの使用など)。リタイアメント・ユニット954と物理レジスタ・ファイル・ユニット958は、実行クラスタ960に結合される。実行クラスタ960は、1組の1以上の実行ユニット962と、1組の1以上のメモリ・アクセス・ユニット964とを含む。実行ユニット962は、様々なタイプのデータ(例えば、スカラ浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点)に様々な演算(例えば、シフト、加法、減法、乗法)を実行することがある。幾つかの実施形態は、特定の関数又は関数の組に割り当てられた幾つかの実行ユニットを含んでもよく、他の実施形態は、全ての関数を全て実行する1つの実行ユニット又は複数の実行ユニットだけを含んでもよい。スケジューラ・ユニット956、物理レジスタ・ファイル・ユニット958及び実行クラスタ960は、特定の実施形態が、特定タイプのデータ/操作のための個別のパイプラインを作成するので、場合によっては複数であるように示される(例えば、スカラ整数パイプライン、スカラ浮動小数点/パック整数/パック浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリ・アクセス・パイプラインであり、これらのパイプラインはそれぞれ、独自のスケジューラ・ユニット、物理レジスタ・ファイル・ユニット、及び/又は実行クラスタを有し、別個のメモリ・アクセス・パイプラインの場合には、このパイプラインの実行クラスタだけがメモリ・アクセス・ユニット964を有する特定の実施形態が実現される。)また、別個のパイプラインが使用される場合、これらのパイプラインの1以上が、アウトオブオーダ発行/実行であり残りがインオーダでよいことを理解されたい。
1組のメモリ・アクセス・ユニット964は、メモリ・ユニット970に結合され、メモリ・ユニット970は、レベル2(L2)キャッシュ・ユニット976に結合されたデータ・キャッシュ・ユニット974に結合されたデータTLBユニット972を含む。1つの代表的な実施形態では、メモリ・アクセス・ユニット964は、ロード・ユニット、ストア・アドレス・ユニット、及びストア・データ・ユニットを含むことがあり、それぞれのユニットは、メモリ・ユニット970内のデータTLBユニット972に結合される。命令キャッシュ・ユニット934は、更に、メモリ・ユニット970内の2レベル(L2)キャッシュ・ユニット976に結合される。L2キャッシュ・ユニット976は、1以上の他のレベルのキャッシュに結合され、最終的にメイン・メモリに結合される。
一例として、代表的なレジスタ・リネーミング・アウトオブオーダ発行/実行コア・アーキテクチャは、パイプライン900を、1)命令取出しユニット938が、フェッチ及び長さ復号化段階902及び904を実行し、2)復号化ユニット940が、復号化段階906を実行し、3)リネーム/アロケータ・ユニット952が、割り付け段階908とリネーミング段階910を実行し、4)スケジューラ・ユニット956が、スケジュール段階912を実行し、5)物理レジスタ・ファイル・ユニット958とメモリ・ユニット970が、レジスタリード/メモリリード段階914を実行し、実行クラスタ960が、実行段階916を実行し、6)メモリ・ユニット970と物理レジスタ・ファイル・ユニット958が、ライトバック/メモリライト段階918を実行し、7)各種ユニットが、例外処理段階922に関係することがあり、8)リタイアメント・ユニット954と物理レジスタ・ファイル・ユニット958が、コミット段階924を実行するように実現することがある。
コア990は、本明細書で述べた命令を含む1以上の命令セット(例えば、x86命令セット(新しいバージョンを加えた幾つかの拡張を有する)と、カリフォルニア州サニーヴェールのMIPS TechnologiesのMIPS命令セットと、カリフォルニア州サニーヴェールのARM HoldingsのARM命令セット(NEONなどの任意の追加の拡張を有する)に対応してもよい。一実施形態では、コア990は、パック・データ命令セット拡張(例えば、AVX1、AVX2)に対応しているロジックを含み、それにより、多くのマルチメディア・アプリケーションによって使用される操作をパック・データを使用して実行することが可能になる。
コアが、マルチスレッディング(複数の平行な組の操作又はスレッドを実行する)に対応することがあり、またマルチスレッディングを、時間スライス・マルチスレッディング、同時マルチスレッディング(物理コアが同時にマルチスレッディングするスレッド毎に単一の物理コアが論理コアを提供する)、又はこれらの組み合わせ(例えば、Intel(登録商標) Hyperthreading技術など、時間スライス・取り出し及び復号化並びにその後の同時マルチスレッディング)を含む様々な方法で行うことができることを理解されたい。
レジスタ・リネーミングが、アウトオブオーダ実行の文脈で説明されるが、レジスタ・リネーミングが、インオーダ・アーキテクチャで使用されてもよいことを理解されたい。また、プロセッサの示された実施形態が、別個の命令及びデータ・キャッシュ・ユニット934/974及び共有L2キャッシュ・ユニット976を含むが、代替実施形態は、例えば、レベル1(L1)内部キャッシュや複数レベルの内部キャッシュなど、命令とデータ両方のために単一内部キャッシュを有してもよい。幾つかの実施形態では、システムは、内部キャッシュと、コア及び/又はプロセッサの外部の外部キャッシュとの組み合わせを含んでもよい。あるいは、全てのキャッシュが、コア及び/又はプロセッサの外部でもよい。
特定の代表的なインオーダ・コア・アーキテクチャ。 図10A〜図10Bは、特定の代表的なインオーダ・コア・アーキテクチャのブロック図を示し、このコアは、チップ内の幾つかの論理ブロック(同一タイプ及び/又は異なるタイプの他のコアを含む)のうちの1つである。論理ブロックは、高帯域相互接続ネットワーク(例えば、リング・ネットワーク)を介して、用途により、幾つかの固定関数ロジック、メモリ入出力インタフェース、及び他の必要な入出力ロジックと通信する。
図10Aは、本発明の実施形態による単一プロセッサ・コアのブロック図であり、単一プロセッサ・コアは、オンダイ相互接続ネットワーク1002に接続され、レベル2(L2)キャッシュ1004のローカルサブセットを有する。一実施形態では、命令復号器1000は、パック・データ命令セット拡張を有するx86命令セットに対応している。L1キャッシュ1006は、スカラ及びベクトルユニット内へのキャッシュ・メモリへの低遅延アクセスを可能にする。一実施形態では(設計を単純化するため)、スカラ・ユニット1008とベクトル・ユニット1010が、別個のレジスタ・セット(それぞれスカラ・レジスタ1012とベクトル・レジスタ1014)を使用し、スカラ・レジスタ1012とベクトル・レジスタ1014の間で転送されたデータは、メモリに書き込まれ、次にレベル1(L1)キャッシュ1006からリードバックされ、発明の代替実施形態は、異なる手法を使用してもよい(例えば、単一レジスタ・セットを使用するか、書き込みとリードバックなしに2つのレジスタ・ファイル間でデータを転送させる通信経路を含む)。
L2キャッシュ1004のローカル・サブセットは、別個のローカル・サブセット(プロセッサ・コアごとに1つ)に分割されたグローバルL2キャッシュの一部である。各プロセッサ・コアは、L2キャッシュ1004のプロセッサ・コア自体のローカル・サブセットへの直接アクセス経路を有する。プロセッサ・コアによって読み取られたデータは、そのプロセッサ・コアのL2キャッシュ・サブセット1004に記憶され、そのプロセッサ・コア自体のローカルL2キャッシュ・サブセットにアクセスする他のプロセッサ・コアと並列に迅速にアクセスされ得る。プロセッサ・コアによって書き込まれたデータは、そのプロセッサ・コア自体のL2キャッシュ・サブセット1004に記憶され、必要に応じて、他のサブセットからフラッシュされる。リングネットワークは、共用データの一貫性を保証する。リングネットワークは、双方向であり、プロセッサ・コア、L2キャッシュ、及びその他の論理ブロックなどのエージェントが、チップ内で互いに通信することを可能にする。各リング・データ経路は、1方向につき1012ビット幅である。
図10Bは、本発明の実施形態による図10Aのプロセッサ・コアの一部の拡張図である。図10Bは、L1キャッシュ1004のL1データ・キャッシュ1006A部分と、ベクトル・ユニット1010とベクトル・レジスタ1014とに関するさらなる詳細を含む。具体的には、ベクトル・ユニット1010は、整数、単精度浮動及び倍精度浮動命令のうちの1つ又は複数を実行する16幅ベクトル処理装置(VPU)(16幅算術論理演算装置(ALU)1028を参照)である。VPUは、スイズル・ユニット1020によるレジスタ入力のスイズル処理、数値変換ユニット1022A〜Bによる数値変換、及びメモリ入力上の繰り返しユニット1024による繰り返しに対応している。ライトマスク・レジスタ1026は、結果のベクトル書き込みの予測を可能にする。
統合メモリ・コントローラ及びグラフィックスを備えたプロセッサ 図11は、複数のコアを有することができ、統合メモリ・コントローラを有することがあり、本発明の実施形態による統合グラフィックスを有することがあるプロセッサ1100のブロック図である。図11の実線の枠は、単一コア1102A、システム・エージェント1110、1組の1以上のバス・コントローラ・ユニット1116を有するプロセッサ1100を示し、追加した点線の枠は、複数のコア1102A〜N、システム・エージェント・ユニット1110内の1組の1以上の統合メモリ・コントローラ・ユニット1114、及び専用ロジック1108を有する代替プロセッサ1100を示す。
したがって、プロセッサ1100の様々な実装は、1)統合グラフィックス及び/又は科学(スループット)ロジック(1以上のコアを含むことがある)であり、コア1102A〜Nが1以上の汎用コア(例えば、汎用インオーダ・コア、汎用アウトオブオーダ・コア、これら2つの組み合わせ)である、統合専用ロジック1108を有するCPU、2)主にグラフィックス及び/又は科学(スループット)用に意図された多数の専用コアである、コア1102A〜Nを有するコプロセッサ、及び3)多数の汎用インオーダ・コアである、コア1102A〜Nを有するコプロセッサを含んでもよい。したがって、プロセッサ1100は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィック・プロセッサ、GPGPU(汎用グラフィック処理装置)、高スループット多数統合コア(MIC)コプロセッサ(30個以上のコアを含む)、埋込み型プロセッサなどの、汎用プロセッサ、コプロセッサ、又は専用プロセッサでよい。プロセッサは、1以上のチップ上に実現されてもよい。プロセッサ1100は、1以上の基板の一部でもよくかつ/又は、例えばBiCMOS、CMOS、NMOSなどの幾つかのプロセス技術のうちのいずれかを使用して1以上の基板上に実現されてもよい。
メモリ階層は、コア内の1レベル以上のキャッシュ、1組又は1以上の共有キャッシュ・ユニット1106、1組の統合メモリ・コントローラ・ユニット1114に結合された外部メモリ(図示せず)を含む。1組の共有キャッシュ・ユニット1106は、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュ、最終レベル・キャッシュ(LLC)、及び/又はこれらの組み合わせなど、1以上の中間レベルキャッシュを含むことがある。一実施形態では、リング式相互接続ユニット1112が、統合グラフィック・ロジック1108、1組の共有キャッシュ・ユニット1106、及びシステム・エージェント・ユニット1110/統合メモリ・コントローラ・ユニット1114を相互接続するが、代替実施形態は、そのようなユニットを相互接続するために任意数の周知の技術を使用することがある。一実施形態では、1以上のキャッシュ・ユニット1106とコア1102A〜Nとの間に一貫性が維持される。
幾つかの実施形態では、コア1102A〜Nの1以上は、マルチスレッディングすることができる。システム・エージェント1110は、コア1102A〜Nを調整し動作させる構成要素を含む。システム・エージェント・ユニット1110は、例えば、電力制御ユニット(PCU)と表示ユニットを含んでもよい。PCUは、コア1102A〜Nと統合グラフィック・ロジック1108の電力状態を調整するのに必要なロジック及び構成要素でもよく、それらのロジックと構成要素を含んでもよい。表示ユニットは、1以上の外部接続表示装置を駆動するためのものである。
コア1102A〜Nは、アーキテクチャ命令セットに関して同種でも異種でもよく、即ち、コア1102A〜Nの複数が、同じ命令セットを実行することができ、他のコア1102A〜Nが、その命令セットのサブセット又は異なる命令セットを実行できてもよい。
代表的なコンピュータ・アーキテクチャ 図12〜図15は、代表的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリング・ワークステーション、サーバ、ネットワーク装置、ネットワーク・ハブ、スイッチ、埋込み型プロセッサ、デジタル・シグナル・プロセッサ(DSP)、グラフィック装置、ビデオゲーム装置、セットトップ・ボックス、マイクロコントローラ、携帯電話、携帯型メディア・プレーヤ、ハンドヘルド装置、及び様々な他の電子装置のための当該技術で既知の他のシステム設計及び構成も適切である。一般に、本明細書に開示されたようなプロセッサ及び/又は他の実行ロジックを組み込むことができる態様なシステム又は電子装置が適切である。
次に図12を参照すると、本発明の一実施形態によるシステム1200のブロック図が示される。システム1200は、コントローラ・ハブ1220に結合された1以上のプロセッサ1210,1215を含んでもよい。一実施形態では、コントローラ・ハブ1220は、グラフィック・メモリ・コントローラ・ハブ(GMCH)1290と入出力ハブ(IOH)1250を含み(別のチップ上にあってもよい)、GMCH1290は、メモリ1240及びコプロセッサ1245が結合されたメモリ及びグラフィック・コントローラを含み、IOH1250は、入出力(入出力)装置1260をGMCH1290に結合する。あるいは、メモリとグラフィック・コントローラの一方又は両方は、プロセッサ内で一体化され(本明細書に記載されているように)、メモリ1240とコプロセッサ1245は、プロセッサ1210と、IOH1250を有する単一チップ内のコントローラ・ハブ1220に直接結合される。
追加のプロセッサ1215の任意の性質を図12に破線で示す。各プロセッサ1210,1215は、本明細書で述べた処理コアの1以上を含んでもよく、プロセッサ1100のどのバージョンでもよい。
メモリ1240は、例えば、動的ランダム・アクセス・メモリ(DRAM)、相変化メモリ(PCM)、又はこれらの2つの組み合わせでよい。少なくとも1つの実施形態の場合、コントローラ・ハブ1220は、フロントサイドバス(FSB)などのマルチドロップ・バス、QuickPathインターコネクト(QPI)などポイント・ツー・ポイント・インタフェース、又は類似の接続1295を介して、プロセッサ1210,1215と通信する。
一実施形態では、コプロセッサ1245は、例えば、高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィック・プロセッサ、GPGPU、埋込み型プロセッサなどの専用プロセッサである。一実施形態では、コントローラ・ハブ1220は、統合グラフィック・アクセラレータを含んでもよい。
物理資源1210,1215の間には、アーキテクチャ特性、マイクロアーキテクチャ特性、温度特性、消費電力特性などを含む長所の測定基準の範囲に関して様々な違いがあり得る。
一実施形態では、プロセッサ1210は、一般タイプの制御データ処理操作を制御する命令を実行する。命令にはコプロセッサ命令が埋め込まれてもよい。プロセッサ1210は、そのようなコプロセッサ命令を、取り付けられたコプロセッサ1245によって実行されるべきタイプのものであると認識する。したがって、プロセッサ1210は、そのようなコプロセッサ命令(又は、コプロセッサ命令を表わす制御信号)を、コプロセッサ・バスや他のインターコネクトでコプロセッサ1245に出す。コプロセッサ1245は、受け取ったコプロセッサ命令を受け入れ実行する。
次に図13を参照すると、本発明の一実施形態による第1の特定の代表的なシステム1300のブロック図が示される。図13に示されたように、多重プロセッサ・システム1300は、ポイント・ツー・ポイント相互接続システムでよく、ポイント・ツー・ポイントインターコネクト1350によって結合された第1のプロセッサ1370と第2のプロセッサ1380を含む。プロセッサ1370及び1380はそれぞれ、プロセッサ1100のどのバージョンでよい。本発明の一実施形態では、プロセッサ1370及び1380はそれぞれ、プロセッサ1210及び1215であり、一方、コプロセッサ1338は、コプロセッサ1245である。別の実施形態では、プロセッサ1370及び1380はそれぞれ、プロセッサ1210とコプロセッサ1245である。
プロセッサ1370及び1380は、それぞれ統合メモリ・コントローラ(IMC)ユニット1372及び1382を含むように示された。プロセッサ1370は、また、バスコントローラ・ユニットの一部としてポイント・ツー・ポイント(P−P)インタフェース1376及び1378を含み、同様に、第2のプロセッサ1380は、P−Pインタフェース1386及び1388を含む。プロセッサ1370,1380は、P−Pインタフェース回路1378,1388を使用して、ポイント・ツー・ポイント(P−P)インタフェース1350を介して情報を交換してもよい。図13に示されたように、IMC1372及び1382は、プロセッサをそれぞれのメモリ(即ち、メモリ1332とメモリ1334)に結合し、これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部分でよい。
プロセッサ1370,1380はそれぞれ、ポイント・ツー・ポイント・インタフェース回路1376,1394,1386,1398を使用して、個別のP−Pインタフェース1352,1354を介して、チップセット1390と情報を交換する。チップセット1390は、必要に応じて、高性能インタフェース1339を介してコプロセッサ1338と情報を交換してもよい。一実施形態では、コプロセッサ1338は、例えば、高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィック・プロセッサ、GPGPU、埋込み型プロセッサなどの専用プロセッサである。
共有キャッシュ(図示せず)が、いずれかのプロセッサ内又は両方のプロセッサの外部に含まれ、更にP−P相互接続を介してプロセッサと接続されてもよく、その結果、いずれか又は両方のプロセッサのローカル・キャッシュ情報が、プロセッサが低電力モードになった場合に共有キャッシュに記憶されることがある。
チップセット1390は、インタフェース1396を介して第1のバス1316に結合されてもよい。一実施形態では、第1のバス1316は、周辺構成要素相互接続(PCI)バス、又はPCIエクスプレス・バスや別の第3世代入出力相互接続バスなどのバスでもよいが、本発明の範囲は、そのように限定されない。
図13に示されたように、様々な入出力装置1314は第1のバス1316に結合されてもよく、バス・ブリッジ1318は第1のバス1316を第2のバス1320に結合する。一実施形態では、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレータ(例えば、グラフィック・アクセラレータ、デジタルシグナル処理(DSP)ユニットなど)、フィールド・プログラマブル・ゲートアレイ、又は他のプロセッサなどの1以上の追加のプロセッサ1315が、第1のバス1316に結合される。一実施形態では、第2のバス1320は、低ピン・カウント(LPC)バスでもよい。種々の装置は、一実施形態では、例えば、キーボード及び/又はマウス1322、通信装置1327、命令/コード及びデータ1330を含むことがある記憶装置1328(ディスクドライブや他の大容量記憶装置など)を含む第2のバス1320に結合されてもよい。更に、音声入出力1324が、第2のバス1320に結合されてもよい。他のアーキテクチャが可能であることに注意されたい。例えば、図13のポイント・ツー・ポイントのアーキテクチャの代わりに、システムは、マルチドロップバスや他のそのようなアーキテクチャを実現してもよい。
次に図14を参照すると、本発明の一実施形態による第2の特定の代表的なシステム1400のブロック図が示される。図13と図14内の類似の要素は、類似の参照番号を有し、図13の特定の態様は、図14の他の態様を不明瞭にしないために図14から省略されている。
図14は、プロセッサ1370,1380がそれぞれ、統合メモリ及び入出力制御ロジック(「CL」)1372及び1382を含むことがあることを示す。したがって、CL1372,1382は、統合メモリ・コントローラ・ユニットを含み、また入出力制御ロジックを含む。図14は、メモリ1332,1334だけがCL1372,1382に結合されているのではなく、入出力装置1414も制御ロジック1372,1382に結合されていることを示す。レガシ入出力装置1415は、チップセット1390に結合される。
次に図15を参照すると、本発明の一実施形態によるSoC1500のブロック図が示される。図11の類似の要素は、同じ参照数字を有する。また、点線の枠は、より高度なSoCの任意の特徴である。図15では、相互接続ユニット1502は、1組の1以上のコア202A〜Nと共有キャッシュ・ユニット1106を含むアプリケーション・プロセッサ1510と、システム・エージェント・ユニット1110と、バスコントローラ・ユニット1116と、統合メモリ・コントローラ・ユニット1114と、統合グラフィック・ロジック、画像プロセッサ、音声プロセッサ及びビデオ・プロセッサを含むことがある1組又は1以上のコプロセッサ1520と、静的ランダム・アクセス・メモリ(SRAM)ユニット1530と、直接メモリ・アクセス(DMA)ユニット1532と、1以上の外部表示装置に結合する表示ユニット1540とに結合される。一実施形態では、コプロセッサ1520は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、埋込み型プロセッサなどの専用プロセッサを含む。
本明細書に開示された機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、又そのような実装法の組み合わせで実現されてもよい。本発明の実施形態は、少なくとも1つのプロセッサ、記憶システム(揮発性及び不揮発性メモリ及び/又は記憶素子を含む)、少なくとも1つの入力装置、及び少なくとも1つの出力装置を含むプログラマブル・システム上で実行するコンピュータ・プログラム又はプログラム・コードとして実現されてもよい。
図13に示されたコード1330などのプログラム・コードは、本明細書で述べる機能を実行しかつ出力情報を生成する入力命令に適用されてもよい。出力情報は、既知の方法で、1以上の出力装置に適用されてもよい。この用途のため、処理システムは、例えば、デジタル・シグナル・プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
プログラム・コードは、処理システムと通信するために高度な手続き型又はオブジェクト指向プログラミング言語で実現されてもよい。プログラム・コードは、必要に応じて、アセンブリ又は機械語で実現されてもよい。実際には、本明細書で述べる機構の範囲は、いかなる特定のプログラミング言語にも限定されない。いかなる場合も、言語は、コンパイル又は解釈された言語でよい。
少なくとも1つの実施形態の1以上の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に記憶された代表的命令によって実現されてもよく、そのような命令は、機械によって読み取られたとき、本明細書で述べた技術を機械に実行させるロジックを作成する。「IPコア」として知られるそのような表現は、有形の機械可読媒体に記憶され、様々な顧客又は製造設備に供給されて、ロジック又はプロセッサを実際に作成する製造機械にロードされる。
そのような機械可読記憶媒体には、ハードディスクなどの記憶媒体、フロッピディスク、光ディスク、コンパクト・ディスク読み取り専用メモリ(CD−ROM)、コンパクトディスク書き換え可能(CD−RW)及び光磁気ディスクを含む適切な他のタイプの媒体、読み取り専用メモリ(ROM)、動的ランダム・アクセス・メモリ(DRAM)、静的ランダム・アクセス・メモリ(SRAM)などのランダム・アクセス・メモリ(RAM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、フラッシュ・メモリ、電気的消去可能PROM(EEPROM)、相変化メモリ(PCM)、磁気又は光カード、又は電子命令を記憶するのに適した任意の他のタイプの媒体などの半導体装置を含む、機械又は装置によって製造又は形成される物品の持続的で有形の構造物が挙げられるがこれらに限定されない。
したがって、本発明の実施形態は、本明細書で述べる構造、回路、装置、プロセッサ及び/又はシステム機能を定義する命令を含むか設計データ(例えば、ハードウェア記述言語(HDL))を含む持続的で有形の機械可読媒体を含む。そのような実施形態は、プログラム製品と呼ばれることもある。
エミュレーション(バイナリ変換、コード・モーフィングなどを含む) 場合によっては、命令をソース命令セットからターゲット命令セットに変換するために命令コンバータが使用されることがある。例えば、命令コンバータは、命令を、コアによって処理される1以上の他の命令に変換するか(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して)、モーフィングするか、エミュレートするか、他の方法で変換する。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア又はこれらの組み合わせで実現されてもよい。命令コンバータは、オンプロセッサ、オフプロセッサ、又はパートオン及びパートオフプロセッサでよい。
図16は、本発明の実施形態によりソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対照させるブロック図である。示された実施形態では、命令コンバータは、ソフトウェア命令コンバータであるが、代替として、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はその様々な組み合わせで実現されてもよい。図16は、高水準言語1602のプログラムが、x86コンパイラ1604を使用してコンパイルされて、少なくとも1つのx86命令セット・コア1616を有するプロセッサによって固有に実行されることがあるx86バイナリ・コード1606が生成されることがあることを示す。少なくとも1つのx86命令セット・コア1616を有するプロセッサは、(1)インテルx86命令セット・コアの命令セットの大部分を処理するか、(2)少なくとも1つのx86命令セット・コアを有するインテル・プロセッサ上で実行するように設計されたアプリケーション又は他のソフトウェアのオブジェクト・コード・バージョンを適合的に実行することによって、少なくとも1つのx86命令セット・コアを有するインテル・プロセッサと実質的に同じ機能を実行して、少なくとも1つのx86命令セット・コアを有するインテル・プロセッサと実質的に同じ結果を達成することができる、任意のプロセッサを示す。x86コンパイラ1604は、追加のリンク処理によって又は追加のリンク処理なしに、少なくとも1つのx86命令セット・コア1616を有するプロセッサ上で実行することができるx86バイナリ・コード1606(例えば、オブジェクトコード)を生成する働きをするコンパイラを表わす。同様に、図16は、高水準言語1602のプログラムが、代替の命令セット・コンパイラ1608を使用してコンパイルされて、少なくとも1つのx86命令セット・コア1614なしのプロセッサ(例えば、カリフォルニア州サニーヴェールのMIPS TechnologiesのMIPS命令セットを実行しかつ/又はカリフォルニア州サニーヴェールのARM HoldingsのARM命令セットを実行するコアを有するプロセッサ)によって固有に実行されることがある代替命令セット・バイナリ・コード1610が生成されることがあることを示す。命令コンバータ1612は、x86バイナリ・コード1606を、x86命令セット・コア1614なしのプロセッサによって固有に実行されることがあるコードに変換するために使用される。この変換されたコードは、この変換ができる命令コンバータが行うのが難しいので、代替の命令セット・バイナリ・コード1610と同じになる可能性は低いが、変換されたコードは、一般的な操作を達成し、代替命令セットからの命令で構成される。したがって、命令コンバータ1612は、エミュレーション、シミュレーション又は任意の他のプロセスによって、x86命令セット・プロセッサ又はコアなしのプロセッサ又は他の電子装置が、x86バイナリ・コード1606を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを表す。
また、図3〜図7のどれかで述べた構成要素、特徴、及び詳細は、必要に応じて、図1〜図2のどれに使用されてもよい。更に、装置のうちのどれかに関して本明細書で述べた構成要素、特徴、及び詳細は、必要に応じて、実施形態においてそのような装置によって実行されかつ/又はそのような装置と共に実行されることがある、本明細書で述べた方法のどれに使用されてもよい。
実施例
以下の例は、更に他の実施形態に関する。例における詳細は、1以上の実施形態のどこに使用されてもよい。
例1は、プロセッサである。プロセッサは、複数の論理プロセッサを含む。プロセッサは、また、複数のプロセッサのうちの第1の論理プロセッサを含み、第1の論理プロセッサは、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含むソフトウェアを実行する。プロセッサは、また、プロセッサが緩和メモリ・アクセス同期モードのときに、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止するメモリ・アクセス同期緩和ロジックを含む。
例2は、例1の内容を含み、必要に応じて、プロセッサは、プロセッサが緩和メモリ・アクセス同期モードであることを示す1以上のアーキテクチャ可視ビットを有する。
例3は、例2の内容を含み、必要に応じて、1以上のアーキテクチャ可視ビットが、ソフトウェアにアクセスして、そのソフトウェアに、プロセッサが緩和メモリ・アクセス同期モードであることを示すように1以上のアーキテクチャ可視ビットを修正させることができる。
例4は、例2の内容を含み、必要に応じて、1以上のアーキテクチャ可視ビットが、メモリに対応し、更に、他の異なるメモリに対応する別の組の1以上のアーキテクチャ可視ビットを含む。
例5は、例1〜例4のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、フェンス命令、バリア命令、及びロック命令から選択され、メモリ・アクセス同期緩和ロジックが、メモリ・アクセス同期命令をノーオペレーション(NOP)に変換するロジックを含む。
例6は、例1〜例4のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択され、メモリ・アクセス同期緩和ロジックは、フェンス操作とバリア操作の対応する一方の実行を省略するメモリ・サブシステムのロジックを含む。
例7は、例1〜例4のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令を含み、メモリ・アクセス同期緩和ロジックは、条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換するロジックを含む。
例8は、例1〜例4のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令は、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及びロード・リンク/ストア条件付き対の命令のストア条件付き命令から選択され、メモリ・アクセス同期緩和ロジックは、メモリ・アクセス同期命令をストア命令とライト命令から選択された命令に変換するロジックを含む。
例9は、例1〜例4のいずれかの内容を含み、必要に応じて、メモリ・アクセス同期命令が、条件付き分岐命令を含み、メモリ・アクセス同期緩和ロジックは、プロセッサが緩和メモリ・アクセス同期モードのときに条件付き分岐を特定の方法で予測させる分岐プレディクタのロジックを含む。
例10は、プロセッサにおける方法である。この方法は、複数の論理プロセッサの第1の論理プロセッサのための1組の命令を取り出すことを含む。命令のセットは、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含む。方法は、また、メモリ・アクセス同期命令の同期を考慮せずに第1の論理プロセッサからメモリにアクセスすることを含む。
例11は、例10の内容を含み、必要に応じて、プロセッサが緩和メモリ・アクセス同期モードであることを示す1以上のアーキテクチャ可視ビットを確認することによってプロセッサが緩和メモリ・アクセス同期モードであることを決定することを含む。
例12は、例11の内容を含み、必要に応じて、プロセッサが緩和メモリ・アクセス同期モードであることを示す1以上のアーキテクチャ可視ビットを修正するソフトウェアを更に含む。
例13は、例10の内容を含み、必要に応じて、更に、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止することを含む。
例14は、例10の内容を含み、必要に応じて、取り出しが、フェンス命令、バリア命令及びロック命令から選択されたメモリ・アクセス同期命令を取り出すことと、更に、メモリ・アクセス同期命令をノーオペレーション(NOP)に変換することを含む。
例15は、例10の内容を含み、必要に応じて、メモリ・アクセス同期命令は、フェンス命令とバリア命令から選択された命令を含み、更に、フェンス操作とバリア操作の対応する一方の実行を省略することを含む。
例16は、例10の内容を含み、必要に応じて、取り出しが、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及びロードリンク/ストア条件付きペアの命令のストア条件付命令から選択された命令であるメモリ・アクセス同期命令を取り出すことを含み、更に、条件付きメモリ・アクセス命令をストア及びライトから選択された命令に変換することを含む。
例17は、例10の内容を含み、必要に応じて、取り出しは、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令であるメモリ・アクセス同期命令を取り出すことを含み、更に、条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換することを含む。
例18は、例10の内容を含み、必要に応じて、取り出しは、条件付き分岐命令であるメモリ・アクセス同期命令を取り出すことを含み、更に、緩和メモリ・アクセス同期モードのプロセッサに基づいて条件付き分岐を予測することを含む。
例19は、インターコネクトを含む命令を処理するシステムである。システムは、また、インターコネクトと結合されたプロセッサを含む。システムは、また、インターコネクトと結合された動的ランダム・アクセスメモリ(DRAM)を含む。DRAMは、機械によって実行されたときに機械に操作を実行させる命令を記憶する。操作は、プロセッサの複数の論理プロセッサのうちの第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定することを含む。また、操作は、第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを示すためにプロセッサの1以上のアーキテクチャ可視ビットを修正することを含む。緩和メモリ・アクセス同期モードで動作されるとき、第1の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期するのを阻止する。
例20は、例19の内容を含み、必要に応じて、命令は、オペレーティング・システムの命令を含む。
例21は、例19〜例20のいずれかの内容を含み、必要に応じて、命令は、第1の論理プロセッサがメモリ・アクセス同期命令によるアクセスの同期を阻止するメモリに、他の論理プロセッサがアクセスしないときに、第1の論理プロセッサが緩和メモリ・アクセス同期モードで動作させることを機械に決定させる命令を含む。
例22は、持続性機械可読記憶媒体を含む製造物である。持続性機械可読記憶媒体は、機械によって実行された場合に機械に操作を実行させる命令を記憶する。操作は、機械の複数の論理プロセッサのうちの第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定することを含む。操作は、第1の論理プロセッサが緩和メモリ・アクセス同期モードで動作されることを示すために機械の1以上のアーキテクチャ可視ビットを修正することを含む。緩和メモリ・アクセス同期モードで動作されるとき、第1の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止する。
例23は、例22の内容を含み、必要に応じて、命令は、第1の論理プロセッサがメモリ・アクセス同期命令によるアクセスの同期を阻止するメモリに、他の論理プロセッサがアクセスしないときに、第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを機械に決定させる命令を含む。
例24は、例22〜例23のいずれかの内容を含み、必要に応じて、命令は、オペレーティング・システムの命令を含む。
例25は、プロセッサである。プロセッサは、複数の論理プロセッサのうちの第1の論理プロセッサのための1組の命令を取り出す取出しユニットを含む。1組の命令は、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含む。プロセッサは、また、メモリ・アクセス同期命令のメモリ・アクセス同期を阻止する手段を含む。
例26は、装置である。装置は、機械の複数の論理プロセッサのうちの第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定する手段を含む。また、装置は、第1の論理プロセッサが緩和メモリ・アクセス同期モードで動作されることを示す機械の1以上のアーキテクチャ可視ビットを修正する手段を含む。緩和メモリ・アクセス同期モードで動作されるとき、第1の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期するのを阻止する。
例27は、例10〜例18のいずれかの方法を実行する装置である。
例28は、例10〜例18のいずれかの方法を実行する手段を含む装置である。
例29は、実質的に本明細書に記載されたような方法を実行する装置である。
例30は、実質的に本明細書に記載されたような方法を実行する手段を含む装置である。
説明と請求項では、用語「結合された」及び「接続された」が、それらの派生語と共に使用されることがあった。これらの用語が、互いに同義語として意図されないことを理解されたい。より正確に言うと、特定の実施形態において、「接続された」は、複数の要素が互いに直接物理的又は電気的に接触していることを示すために使用されることがある。「結合された」は、複数の要素が直接物理的又は電気的に接触していることを意味することがある。しかしながら、「結合された」は、また、複数の要素が互いに直接接触していないが、互いに協働又は相互作用することを意味することもある。例えば、構成要素は、1以上の介在構成要素によって結合されてもよい。図では、接続と結合を示すために矢印が使用される。
説明と請求項では、用語「ロジック」が使用されている。本明細書で使用されるとき、ロジックは、ハードウェア、ファームウェア、ソフトウェア、これらの組み合わせなどのモジュールを含むことがある。ロジックの例には、集積回路、特定用途向け集積回路、アナログ回路、デジタル回路、プログラムドロジック装置、命令を含むメモリ素子などが挙げられる。幾つかの実施形態では、ハードウェアロジックは、トランジスタ及び/又はゲートを潜在的に他の回路構成要素と共に含むことがある。
用語「及び/又は」が、使用されることがあった。本明細書で使用されるとき、用語「及び/又は」は、一方若しくは他方又はその両方を意味する(例えば、A及び/又はBは、A若しくはB又はAとBの両方を意味する)。
以上の記述では、説明のため、本発明の実施形態の完全な理解を提供するために多数の特定の詳細を説明した。しかしながら、当業者には、1以上の他の実施形態が、そのような特定の詳細のうちの幾つかを用いずに実行され得ることは明らかであろう。述べた特定の実施形態は、本発明を限定するためのものではなく本発明を実施例によって示すために提供される。発明の範囲は、特定の例によってではなく請求項のみにより決定される。他の例では、周知の回路、構造物、装置及び動作は、説明の理解を不明瞭にするのを防ぐためにブロック図形式又は詳細なしに示された。
適切と考えられる場合、参照番号、又は参照番号の末尾は、対応する要素又は類似の要素を示すために図間で繰り返され、そのような要素は、必要に応じて、特に指定されるか又は他の方法で明らかでない限り、類似又は同じ特徴を有することがある。幾つかの例では、複数の構成要素について述べられており、それらの構成要素は、単一構成要素に組み込まれることがある。他の例では、単一の構成要素について述べられており、構成要素は、複数の構成要素に分割されてもよい。
種々の動作及び方法について述べた。方法のうちの幾つかは、流れ図で比較的基本的な形で述べられたが、必要に応じて、操作が方法に追加されかつ/又は方法から除去されてもよい。更に、流れ図は、代表的な実施形態による操作の特定の順序を示すが、この特定の順序は例示である。代替実施形態は、必要に応じて、操作を異なる順序で実行し、特定の操作を組み合わせ、特定の操作を重ねてもよい。
幾つかの実施形態は、機械可読媒体を含む製造物(例えば、コンピュータ・プログラム製品)を含む。媒体は、機械によって読み取り可能な形態で情報を提供(例えば、記憶)するメカニズムを含んでもよい。機械可読媒体は、機械によって実行された場合及び/又は実行されたときに、機械に、本明細書に開示された操作、方法又は技術を実行させかつ/又は機械が実行するようにする働きをする1以上の命令を提供するか記憶してもよい。
幾つかの実施形態では、機械可読媒体は、有形及び/又は持続性機械可読記憶媒体を含むことができる。例えば、有形及び/又は持続性機械可読記憶媒体には、フロッピ・ディスク、光記憶媒体、光ディスク、光学データ記憶装置、CDROM、磁気ディスク、光磁気ディスク、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、ランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM)、動的RAM(DRAM)、フラッシュ・メモリ、相変化メモリ、相変化データ記憶材料、不揮発性メモリ、不揮発性データ記憶装置、持続性メモリ、持続性データ記憶装置などが挙げられる。持続性機械可読記憶媒体は、一時的伝搬信号で構成されない。別の実施形態では、機械可読媒体は、一時的機械可読通信媒体(例えば、電気、光、音響又は他の形態の搬送波、赤外線信号、デジタル信号などの伝搬信号)を含んでもよい。
適切な機械の例には、汎用プロセッサ、専用プロセッサ、命令処理装置、デジタル論理回路、集積回路などが挙げられるが、これらに限定されない。適切な機械の更に他の例には、そのようなプロセッサ、命令処理装置、デジタル論理回路又は集積回路を内蔵するコンピューティング装置や他の電子装置が挙げられる。そのようなコンピューティング装置及び電子装置の例には、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、タブレット・コンピュータ、ネットブック、スマートフォン、携帯電話、サーバ、ネットワーク装置(例えば、ルータとスイッチ)、携帯インターネット機器(MID)、メディア・プレイヤ、スマートテレビ、ネットトップス、セット・トップ・ボックス、及びビデオゲーム・コントローラが挙げられるが、これらに限定されない。
また、本明細書全体における例えば「一実施形態」、「実施形態」又は「1以上の実施形態」の言及は、本発明の実施に特定の特徴が含まれることがあることを意味することを理解されたい。同様に、説明において、様々な発明態様の開示を効率化し理解を支援するために、様々な特徴が、単一の実施形態、図又は説明にまとめられることがあることを理解されたい。しかしながら、この開示方法は、本発明が各請求項に明示的に列挙されたより多くの特徴を必要とするという意図を表すものと解釈されるべきではない。より正確に言うと、以下の請求項が表すように、発明態様は、単一の開示された実施形態の全ての特徴より少なくてもよい。したがって、これにより、詳細な説明に続く請求項は、この詳細な説明に明示的に組み込まれ、各請求項は、本発明の別個の実施形態として自立している。
本実施形態の例を下記の各項目として示す。
[項目1]
プロセッサであって、
複数の論理プロセッサと、
前記複数の論理プロセッサの第1の論理プロセッサであって、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含むソフトウェアを実行する第1の論理プロセッサと、
前記プロセッサが緩和メモリ・アクセス同期モードのときに、前記メモリ・アクセス同期命令が前記メモリへのアクセスを同期させるのを阻止するメモリ・アクセス同期緩和ロジックとを含むプロセッサ。
[項目2]
前記プロセッサは、前記プロセッサが前記緩和メモリ・アクセス同期モードであることを示す1以上のアーキテクチャ可視ビットを有する、項目1に記載のプロセッサ。
[項目3]
前記1以上のアーキテクチャ可視ビットが、ソフトウェアにアクセスして、前記ソフトウェアに、前記プロセッサが緩和メモリ・アクセス同期モードであることを示すように前記1以上のアーキテクチャ可視ビットを修正させることができる、項目2に記載のプロセッサ。
[項目4]
前記1以上のアーキテクチャ可視ビットが、前記メモリに対応し、更に、他の第2のメモリに対応する別の組の1以上のアーキテクチャ可視ビットを含む、項目2または3に記載のプロセッサ。
[項目5]
前記メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択され、前記メモリ・アクセス同期緩和ロジックが、前記メモリ・アクセス同期命令をノーオペレーション(NOP)に変換するロジックを含む、項目1から4のいずれか1項に記載のプロセッサ。
[項目6]
前記メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択され、前記メモリ・アクセス同期緩和ロジックが、フェンス操作とバリア操作の対応する一方の実行を省略するためにメモリ・サブシステムのロジックを含む、項目1から5のいずれか1項に記載のプロセッサ。
[項目7]
前記メモリ・アクセス同期命令が、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令を含み、前記メモリ・アクセス同期緩和ロジックが、前記条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換するロジックを含む、項目1から6のいずれか1項に記載のプロセッサ。
[項目8]
前記メモリ・アクセス同期命令が、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及び1対のロードリンク/ストア条件付き命令のストア条件命令から選択され、前記メモリ・アクセス同期緩和ロジックが、前記メモリ・アクセス同期命令をストア命令とライト命令から選択された命令に変換するロジックを含む、項目1から7のいずれか1項に記載のプロセッサ。
[項目9]
前記メモリ・アクセス同期命令が、条件付き分岐命令を含み、前記メモリ・アクセス同期緩和ロジックは、前記プロセッサが緩和メモリ・アクセス同期モードのときに前記条件付き分岐を特定の方法で予測させる分岐プレディクタのロジックを含む、項目1から8のいずれか1項に記載のプロセッサ。
[項目10]
プロセッサにおける方法であって、
複数の論理プロセッサのうちの第1の論理プロセッサのための1組の命令を取り出す段階であって、前記1組の命令が、メモリへのアクセスを同期させるメモリ・アクセス同期命令を含む段階と、
前記メモリ・アクセス同期命令の前記同期を考慮せずに前記第1の論理プロセッサから前記メモリにアクセスする段階とを含む方法。
[項目11]
前記プロセッサが緩和メモリ・アクセス同期モードであることを示す1以上のアーキテクチャ可視ビットを確認することによって、前記プロセッサが、前記緩和メモリ・アクセス同期モードであることを判定する段階を更に含む、項目10に記載の方法。
[項目12]
前記プロセッサが緩和メモリ・アクセス同期モードであることを示すように前記1以上のアーキテクチャ可視ビットを修正するソフトウェアを更に含む、項目11に記載の方法。
[項目13]
前記メモリ・アクセス同期命令が前記メモリへの前記アクセスを同期させるのを阻止する段階と更に含む、項目10から12のいずれか1項に記載の方法。
[項目14]
取り出しが、更に、フェンス命令とバリア命令から選択された前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記メモリ・アクセス同期命令をノーオペレーション(NOP)に変換することを含む、項目10から13のいずれか1項に記載の方法。
[項目15]
前記メモリ・アクセス同期命令が、フェンス命令とバリア命令から選択された命令を含み、更に、フェンス操作とバリア操作の対応する一方を実行することを省略することを含む、項目10から14のいずれか1項に記載の方法。
[項目16]
前記取り出しが、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、及びロードリンク/ストア条件付き対の命令のストア条件命令から選択された命令である前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記条件付きメモリ・アクセス命令を、ストア命令とライト命令から選択された命令に変換することを含む、項目10から15のいずれか1項に記載の方法。
[項目17]
前記取り出しが、条件付きロード命令と条件付きストア命令から選択された条件付きメモリ・アクセス命令である前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記条件付きメモリ・アクセス命令を対応する無条件メモリ・アクセス命令に変換することを含む、項目10から16のいずれか1項に記載の方法。
[項目18]
前記取り出しが、条件付き分岐命令である前記メモリ・アクセス同期命令を取り出すことを含み、更に、前記プロセッサが緩和メモリ・アクセス同期モードであることに基づいて前記条件付き分岐を予測することを含む、項目10から17のいずれか1項に記載の方法。
[項目19]
命令を処理するシステムであって、
インターコネクトと、
前記インターコネクトと結合されたプロセッサと、
前記インターコネクトと結合され、命令を記憶する動的ランダム・アクセス・メモリ(DRAM)とを有し、
前記命令は、機械によって実行されたときに、前記機械に、
前記プロセッサの複数の論理プロセッサのうちの第1の論理プロセッサを、緩和メモリ・アクセス同期モードで動作させることを決定することと、
前記第1の論理プロセッサが前記緩和メモリ・アクセス同期モードで動作されることを示すように、前記プロセッサの1以上のアーキテクチャ可視ビットを修正することを含む操作を実行させ、
前記緩和メモリ・アクセス同期モードで動作されるとき、前記第1の論理プロセッサが、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止するシステム。
[項目20]
前記命令は、オペレーティング・システムの命令を含む、項目19に記載のシステム。
[項目21]
前記命令は、前記第1の論理プロセッサが前記メモリ・アクセス同期命令がアクセスを同期させるのを阻止する前記メモリに、他の論理プロセッサがアクセスしないときに、前記第1の論理プロセッサを前記緩和メモリ・アクセス同期モードで動作させることを前記機械に決定させる命令を含む、項目19または20に記載のシステム。
[項目22]
プログラムであって、
コンピュータによって実行された場合に、前記コンピュータに、
前記コンピュータの複数の論理プロセッサのうちの第1の論理プロセッサを緩和メモリ・アクセス同期モードで動作させることを決定することと、
前記コンピュータの1以上のアーキテクチャ可視ビットを、前記第1の論理プロセッサが、前記緩和メモリ・アクセス同期モードで動作されることを示すように修正することとを含む操作を実行させ、
前記緩和メモリ・アクセス同期モードで動作されたときに、前記第1の論理プロセッサは、メモリ・アクセス同期命令がメモリへのアクセスを同期させるのを阻止するプログラム。
[項目23]
前記第1の論理プロセッサが前記メモリ・アクセス同期命令がアクセスを同期させるのを阻止する前記メモリに、他の論理プロセッサがアクセスしないときに、前記第1の論理プロセッサを前記緩和メモリ・アクセス同期モードで動作させることを前記コンピュータに決定させる、項目22に記載のプログラム。
100 コンピューティング・システム 101 プロセッサ 102 第Nの論理プロセッサ 103 実行可能ソフトウェア 104 フェンス/バリア命令 105 ロック命令 106 条件付きアクセス命令 107 条件付き分岐命令保護アクセス 108 命令処理パイプライン 109 メモリ・アクセス同期緩和ロジック 110 緩和メモリ・アクセス同期モードを示すアーキテクチャ・ビット 111 共有メモリへの緩和/非同期アクセス 112 共有メモリにアクセスしない他の論理プロセッサ 114 メモリ 115 共有メモリ 116 ソフトウェア 117 オペレーティング・システム 118 アプリケーション

Claims (18)

  1. プロセッサであって、
    複数の論理プロセッサと、
    前記複数の論理プロセッサのうちの第1の論理プロセッサであって、前記第1の論理プロセッサは、1以上の条件付きメモリ・アクセス命令を含むソフトウェアを実行する、前記第1の論理プロセッサと、
    前記第1の論理プロセッサの復号化ユニットであって、前記復号化ユニットは、前記プロセッサが緩和メモリ・アクセス同期モードである場合、前記1以上の条件付きメモリ・アクセス命令を1以上の無条件メモリ・アクセス操作に変換する、前記復号化ユニットと、を備え、
    前記プロセッサが前記緩和メモリ・アクセス同期モードであるときに、前記第1の論理プロセッサは、同期を考慮せずにメモリの少なくとも第1の部分にアクセスし、
    前記プロセッサは、前記第1の論理プロセッサ以外のエンティティが前記メモリの前記少なくとも第1の部分にアクセスできないとの決定に基づいて、ランタイムにおいて前記緩和メモリ・アクセス同期モードを用いるように構成される
    プロセッサ。
  2. 前記1以上の条件付きメモリ・アクセス命令は、条件付きストア命令を有し、
    前記1以上の無条件メモリ・アクセス操作は、無条件ストア操作を有する
    請求項1に記載のプロセッサ。
  3. 前記1以上の条件付きメモリ・アクセス命令は、条件付きロード命令を有し、
    前記1以上の無条件メモリ・アクセス操作は、無条件ロード操作を有する
    請求項1に記載のプロセッサ。
  4. 前記1以上の条件付きメモリ・アクセス命令は、ロードリンク命令とストアコンディショナル命令による対を有し、
    前記1以上の無条件メモリ・アクセス操作は、単一の無条件ストア操作を有する
    請求項1に記載のプロセッサ。
  5. 前記1以上の条件付きメモリ・アクセス命令は、リード・モディファイ・ライト命令を有し、
    前記1以上の無条件メモリ・アクセス操作は、単一の無条件ライト操作を有する
    請求項1に記載のプロセッサ。
  6. 前記プロセッサは、前記プロセッサが前記緩和メモリ・アクセス同期モードであることを示す、1以上のアーキテクチャ可視ビットを有する
    請求項1から5のいずれか1項に記載のプロセッサ。
  7. 前記1以上のアーキテクチャ可視ビットは、オペレーティング・システムにより修正可能である
    請求項6に記載のプロセッサ。
  8. 前記1以上のアーキテクチャ可視ビットは、前記メモリの前記第1の部分に対応し、
    前記プロセッサは、前記メモリの他の第2の部分に対応する1以上のアーキテクチャ可視ビットの別の組をさらに備える
    請求項6または7に記載のプロセッサ。
  9. 前記プロセッサは、オペレーティング・システムにより、ランタイムにおいて前記緩和メモリ・アクセス同期モードにされる
    請求項1から8のいずれか1項に記載のプロセッサ。
  10. 前記プロセッサは、(1)単一のスレッドのみが実行されている場合、(2)1つのスレッドのみが関連する共有メモリにアクセスする場合、および(3)他のスレッドが前記関連する共有メモリを監視していない場合のうちの少なくとも1つの場合に、前記緩和メモリ・アクセス同期モードになる
    請求項1から9のいずれか1項に記載のプロセッサ。
  11. プロセッサであって、
    複数の論理プロセッサと、
    前記複数の論理プロセッサのうちの第1の論理プロセッサであって、前記第1の論理プロセッサは、1以上の条件付きメモリ・アクセス命令を含むソフトウェアを実行する、前記第1の論理プロセッサと、
    前記第1の論理プロセッサの復号化ユニットであって、前記復号化ユニットは、前記プロセッサが緩和メモリ・アクセス同期モードである場合、前記1以上の条件付きメモリ・アクセス命令を1以上の無条件メモリ・アクセス操作に変換する、前記復号化ユニットと、
    前記プロセッサが前記緩和メモリ・アクセス同期モードであることを示す、1以上のアーキテクチャ可視ビットと、を備え、
    前記プロセッサが前記緩和メモリ・アクセス同期モードであるときに、前記第1の論理プロセッサは、同期を考慮せずにメモリの少なくとも一部にアクセスし、
    前記1以上のアーキテクチャ可視ビットは、オペレーティング・システムにより修正可能であり、
    前記プロセッサが前記緩和メモリ・アクセス同期モードであることを示すべく、前記1以上のアーキテクチャ可視ビットは、前記オペレーティング・システムにより、前記ソフトウェアが前記第1の論理プロセッサで実行される間のランタイムの間に修正され、
    (1)単一のスレッドのみが実行されている場合、(2)1つのスレッドのみが前記メモリの前記少なくとも一部にアクセスする場合、および(3)他のスレッドが前記メモリの前記少なくとも一部を監視していない場合のうちの少なくとも1つの場合に、前記プロセッサが前記緩和メモリ・アクセス同期モードであることが、前記オペレーティング・システムにより示される、
    プロセッサ。
  12. 前記1以上の条件付きメモリ・アクセス命令は、条件付きストア命令を有し、
    前記1以上の無条件メモリ・アクセス操作は、無条件ストア操作を有する
    請求項11に記載のプロセッサ。
  13. 前記1以上の条件付きメモリ・アクセス命令は、条件付きロード命令を有し、
    前記1以上の無条件メモリ・アクセス操作は、無条件ロード操作を有する
    請求項11に記載のプロセッサ。
  14. 前記1以上の条件付きメモリ・アクセス命令は、ロードリンク命令とストアコンディショナル命令による対を有し、
    前記1以上の無条件メモリ・アクセス操作は、単一の無条件ストア操作を有する
    請求項11に記載のプロセッサ。
  15. 前記1以上の条件付きメモリ・アクセス命令は、リード・モディファイ・ライト命令を有し、
    前記1以上の無条件メモリ・アクセス操作は、単一の無条件ライト操作を有する
    請求項11に記載のプロセッサ。
  16. プロセッサであって、
    複数の論理プロセッサと、
    前記複数の論理プロセッサのうちの第1の論理プロセッサであって、前記第1の論理プロセッサは、リード・モディファイ・ライト命令、コンペア・アンド・スワップ命令、テスト・アンド・セット命令、およびロードリンク命令とストアコンディショナル命令による対のうちのストアコンディショナル命令のうちの1つである、第1の命令を含むソフトウェアを実行する、前記第1の論理プロセッサと、
    前記第1の論理プロセッサの復号化ユニットであって、前記復号化ユニットは、前記プロセッサが緩和メモリ・アクセス同期モードである場合、前記第1の命令を、ストア操作およびライト操作のうちの一方の操作に変換する、前記復号化ユニットと、を備え、
    前記プロセッサが前記緩和メモリ・アクセス同期モードであるときに、前記第1の論理プロセッサは、同期を考慮せずにメモリの少なくとも一部にアクセスし、
    前記プロセッサは、前記第1の論理プロセッサ以外のエンティティが前記メモリの前記少なくとも一部にアクセスできないとの決定に基づいて、ランタイムにおいて前記緩和メモリ・アクセス同期モードを用いるように構成される
    プロセッサ。
  17. 前記プロセッサは、(1)単一のスレッドのみが実行されている場合、(2)1つのスレッドのみが前記メモリの前記少なくとも一部にアクセスする場合、および(3)他のスレッドが前記メモリの前記少なくとも一部を監視していない場合のうちの少なくとも1つの場合に、前記緩和メモリ・アクセス同期モードになる
    請求項16に記載のプロセッサ。
  18. 前記プロセッサは、前記プロセッサが前記緩和メモリ・アクセス同期モードであることを示す、1以上のアーキテクチャ可視ビットを有し、
    前記1以上のアーキテクチャ可視ビットは、オペレーティング・システムにより修正可能である
    請求項16または17に記載のプロセッサ。
JP2016175998A 2013-03-15 2016-09-08 プロセッサ Expired - Fee Related JP6526609B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/844,729 US9304940B2 (en) 2013-03-15 2013-03-15 Processors, methods, and systems to relax synchronization of accesses to shared memory
US13/844,729 2013-03-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014028277A Division JP6006247B2 (ja) 2013-03-15 2014-02-18 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム

Publications (3)

Publication Number Publication Date
JP2016207232A JP2016207232A (ja) 2016-12-08
JP2016207232A5 JP2016207232A5 (ja) 2017-03-30
JP6526609B2 true JP6526609B2 (ja) 2019-06-05

Family

ID=50482493

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014028277A Active JP6006247B2 (ja) 2013-03-15 2014-02-18 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム
JP2016175998A Expired - Fee Related JP6526609B2 (ja) 2013-03-15 2016-09-08 プロセッサ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014028277A Active JP6006247B2 (ja) 2013-03-15 2014-02-18 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム

Country Status (7)

Country Link
US (2) US9304940B2 (ja)
JP (2) JP6006247B2 (ja)
KR (1) KR101594090B1 (ja)
CN (1) CN104050026B (ja)
BR (1) BR102014006021A2 (ja)
DE (1) DE102014003671A1 (ja)
GB (2) GB2512478B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304940B2 (en) 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
US9756128B2 (en) * 2013-04-17 2017-09-05 Apeiron Data Systems Switched direct attached shared storage architecture
US10452316B2 (en) 2013-04-17 2019-10-22 Apeiron Data Systems Switched direct attached shared storage architecture
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US20160378480A1 (en) * 2015-06-27 2016-12-29 Pavel G. Matveyev Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
US10074151B2 (en) * 2015-09-30 2018-09-11 Intel Corporation Dense optical flow acceleration
JP6146508B1 (ja) 2016-03-31 2017-06-14 日本電気株式会社 同期処理ユニット、デバイス、システムおよび方法
US10223002B2 (en) * 2017-02-08 2019-03-05 Arm Limited Compare-and-swap transaction
US10552131B2 (en) * 2017-10-16 2020-02-04 Microsoft Technology Licensing, Llc Barrier reduction during code translation
GB2572578B (en) * 2018-04-04 2020-09-16 Advanced Risc Mach Ltd Cache annotations to indicate specultative side-channel condition
JP7064134B2 (ja) * 2018-05-11 2022-05-10 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7064135B2 (ja) * 2018-05-15 2022-05-10 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10831500B2 (en) 2018-06-10 2020-11-10 International Business Machines Corporation Adaptive locking in elastic threading systems
US11068612B2 (en) * 2018-08-01 2021-07-20 International Business Machines Corporation Microarchitectural techniques to mitigate cache-based data security vulnerabilities
US10956166B2 (en) * 2019-03-08 2021-03-23 Arm Limited Instruction ordering
CN110147253B (zh) * 2019-05-16 2020-10-20 湖南毂梁微电子有限公司 一种基于延迟栅栏同步操作指令的多核处理器同步方法
US12079102B2 (en) * 2020-07-14 2024-09-03 The Trustees Of Columbia University In The City Of New York Systems, methods, and media for proving the correctness of software on relaxed memory hardware
US11249766B1 (en) * 2020-09-14 2022-02-15 Apple Inc. Coprocessor synchronizing instruction suppression

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2230119B (en) 1989-04-07 1993-04-21 Intel Corp Conditional execution speed-up on synchronizing instructions
JP3038781B2 (ja) * 1989-04-21 2000-05-08 日本電気株式会社 メモリアクセス制御回路
US6065086A (en) 1998-02-17 2000-05-16 International Business Machines Corporation Demand based sync bus operation
JPH11259437A (ja) 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
JP2938056B1 (ja) 1998-08-12 1999-08-23 甲府日本電気株式会社 マルチホストシステムおよびホストコンピュータ間命令制御方法
JP3641997B2 (ja) 2000-03-30 2005-04-27 日本電気株式会社 プログラム変換装置及び方法並びに記録媒体
US6748518B1 (en) * 2000-06-06 2004-06-08 International Business Machines Corporation Multi-level multiprocessor speculation mechanism
JP4915038B2 (ja) 2001-08-08 2012-04-11 コニカミノルタホールディングス株式会社 インクジェット記録方法
US7328314B2 (en) * 2002-06-19 2008-02-05 Alcatel-Lucent Canada Inc. Multiprocessor computing device having shared program memory
JP2006185232A (ja) 2004-12-28 2006-07-13 Hitachi Ltd 複数のプログラムの実行方法、プログラム変換方法及びこれを用いたコンパイラプログラム
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
JP4148528B2 (ja) 2006-10-31 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 排他制御を効率化する技術
US20080109604A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc Systems and methods for remote direct memory access to processor caches for RDMA reads and writes
US20080307422A1 (en) * 2007-06-08 2008-12-11 Kurland Aaron S Shared memory for multi-core processors
US8131951B2 (en) * 2008-05-30 2012-03-06 Freescale Semiconductor, Inc. Utilization of a store buffer for error recovery on a store allocation cache miss
JP5270268B2 (ja) 2008-09-05 2013-08-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体
US8412889B2 (en) * 2008-10-16 2013-04-02 Microsoft Corporation Low-level conditional synchronization support
JP5088754B2 (ja) 2009-12-18 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション システム、方法、プログラムおよびコード生成装置
US9069545B2 (en) 2011-07-18 2015-06-30 International Business Machines Corporation Relaxation of synchronization for iterative convergent computations
US8607247B2 (en) 2011-11-03 2013-12-10 Advanced Micro Devices, Inc. Method and system for workitem synchronization
US20140281429A1 (en) * 2013-03-14 2014-09-18 Qualcomm Incorporated Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9304940B2 (en) 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory

Also Published As

Publication number Publication date
US9304940B2 (en) 2016-04-05
JP6006247B2 (ja) 2016-10-12
GB2548511A (en) 2017-09-20
GB2512478B (en) 2017-08-30
JP2016207232A (ja) 2016-12-08
GB201709375D0 (en) 2017-07-26
US20160216967A1 (en) 2016-07-28
US20140281196A1 (en) 2014-09-18
GB2548511B (en) 2018-01-17
US10235175B2 (en) 2019-03-19
GB201402964D0 (en) 2014-04-09
KR101594090B1 (ko) 2016-02-15
CN104050026A (zh) 2014-09-17
CN104050026B (zh) 2018-10-23
GB2512478A (en) 2014-10-01
DE102014003671A1 (de) 2014-09-18
KR20140113444A (ko) 2014-09-24
BR102014006021A2 (pt) 2015-10-20
JP2014182795A (ja) 2014-09-29

Similar Documents

Publication Publication Date Title
JP6526609B2 (ja) プロセッサ
KR102496402B1 (ko) 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어
JP6143872B2 (ja) 装置、方法、およびシステム
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
CN106293626B (zh) 持久性提交处理器、方法、装置、制品和电子设备
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
US11354128B2 (en) Optimized mode transitions through predicting target state
US10579378B2 (en) Instructions for manipulating a multi-bit predicate register for predicating instruction sequences
US10877765B2 (en) Apparatuses and methods to assign a logical thread to a physical thread
US9880839B2 (en) Instruction that performs a scatter write
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190508

R150 Certificate of patent or registration of utility model

Ref document number: 6526609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees