JP7446893B2 - 計算システム、半導体装置、プログラムおよび方法 - Google Patents

計算システム、半導体装置、プログラムおよび方法 Download PDF

Info

Publication number
JP7446893B2
JP7446893B2 JP2020065285A JP2020065285A JP7446893B2 JP 7446893 B2 JP7446893 B2 JP 7446893B2 JP 2020065285 A JP2020065285 A JP 2020065285A JP 2020065285 A JP2020065285 A JP 2020065285A JP 7446893 B2 JP7446893 B2 JP 7446893B2
Authority
JP
Japan
Prior art keywords
control loop
node
repetitions
read
data flow
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.)
Active
Application number
JP2020065285A
Other languages
English (en)
Other versions
JP2021009684A (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 JP2021009684A publication Critical patent/JP2021009684A/ja
Application granted granted Critical
Publication of JP7446893B2 publication Critical patent/JP7446893B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/10Address translation
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/1016Performance 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/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

実施形態は概して、データフローアーキテクチャの実装に関する。より具体的には、実施形態は、データフローグラフの投機的実行制御に関する。
コンピュータコードにより実行される個別の動作間の依存性に関して、当該コードをモデル化するのに、データフローグラフが使用され得る。データフローグラフにおける依存性情報により、並行して実行可能な動作が特定しやすくなり得る。しかし、特定のコードは、そのコードが効率的に並行して実行されるのを妨げるような、データまたは制御依存性を有し得る。例えば、計算ループでは通常、制御フロー条件分岐(例えば、ループを終了する、またはループに留まる)の前に、ループ本体の終了を伴う。そのような場合に計算アーキテクチャにおいてデータフローグラフを実装すると、アーキテクチャにレイテンシが生じ得る(例えば、ループ本体が、メモリから値の取得を伴う場合)。制御依存性に対処する従来のソリューションは、複雑かつコストのかかるハードウェア動作の導入を伴い得る。
以下の明細書および添付の特許請求の範囲を読むことによって、かつ以下の図面を参照することによって、実施形態の様々な利点が当業者に明らかになる。
コンピュータコードと、コンピュータコードのループ部の、対応するデータフローグラフの例を図示する。
一実施形態に係る、コンピュータコードの制御部の例を示すデータフローグラフである。
一実施形態に係る、コンピュータコードのループ部の例を示すデータフローグラフである。
実施形態に係る、性能強化された計算システムを動作する方法の例を示すフローチャートである。 実施形態に係る、性能強化された計算システムを動作する方法の例を示すフローチャートである。
一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。 一実施形態に係るコンピュータコードの、一連の処理の例の1つを示すデータフローグラフである。
一実施形態に係る、投機的読み込み処理の例を図示する。
一実施形態に係る、投機的実行制御の各種レベルに対する、サイクルと総ループトリップとの関係の例を示すグラフである。
一実施形態に係る、データフローアーキテクチャの例を示すブロック図である。
一実施形態に係る性能強化された計算システムの例を示すブロック図である。
一実施形態に係る、半導体装置の例を図示する。
一実施形態に係る、プロセッサの例を示すブロック図である。
一実施形態に係る、マルチプロセッサ型計算システムの例を示すブロック図である。
図1Aを参照すると、不特定回数の繰り返しで制御ループが実行されるコンピュータコード20が示される。より具体的には、ループ本体(例えば、「d=a[i]」)は、「d」の値が、xの値に一致する、またはそれを超えるまで、dの値を配列「a[i]」の要素に繰り返し設定する。特に注目すべきは、ループ本体の実行が、dをxと比較することにより「制御」される点である。さらに、a[i]の要素はメモリから取得されるため、コンピュータコード20は、レイテンシの比較的長いクリティカルパスに帰結し得る。
例えば、ループ部のデータフローグラフ22は、初期値「i」(例えば、0)と、加算ノード26およびフィルタノード28により生成されたインクリメント値iとから選択を行う選択ノード24(例えば、マルチプレクサ)を備える。図示の例では、シフトノード30(例えば3ビットシフトまたは8の値を加える)が、反復ノード32および加算ノード33により提供された、a[i]のベースアドレスからのオフセットとして、配列a[i]における次の要素のアドレスを選択する。読み込みノード34は、選択されたアドレスから、値を読み込んでよく、比較ノード36は、読み込んだ値を、反復ノード38により提供されたxの値と比較する。xの値が不明であるため、コンピュータコード20は不特定回数の繰り返しで実行される。dの値がxの値に一致するまたはそれを超えると、グラフ22はdの値を、フィルタノード40を介して出力してよい。そのような場合、比較ノード36は、フィルタノード40、フィルタノード28、選択ノード24、反復ノード32、および反復ノード38に入力される「exit(終了)」信号を生成する。図示の例では、選択ノード24、フィルタノード28、シフトノード30、加算ノード33、読み込みノード34、および比較ノード36は、コンピュータコード20の実行がシリアル化および/またはパイプライン化される場合に、性能を制限し得る比較的長いクリティカルパスを表す。
より詳細に説明するように、コンピュータコード20に、不特定回数の繰り返しに加えて、固定回数の繰り返しで投機的に実行させられてよく、コンピュータコード20の実行が並行して実施される。このような手法は、クリティカルパスの長さの、性能に対する影響を大幅に低減できる。さらに、投機的実行に関連したデータフロートークンを選択的に除去することで、追加的なハードウェアを使用することなく、性能的利点を実現させることが可能となる。
例えば、ループは典型的に、0でもあり得る静的に未知数の「トリップ」に対して実行される。本明細書に記載の技術は、プログラムの実際の制御フローにより決まる繰り返し回数に加え、固定回数の繰り返し(それぞれの完全なループ実行対して動的に選択され得る「spec」と称する)をループに強制的に必ず実行させる制御構造を生成する。一実施形態において、これら繰り返しは、実際に生じないという点で、投機的と捉えることができる。しかし、各ループが「spec」の繰り返しを実行することが知られているため、この回数の繰り返しは常に、真のデータ依存性の限界まで、データフローグラフで並行して実行され得る。この結果、シリアル化された実行よりも、大幅に性能向上が図られる。
図1Bおよび図1Cは、制御部50と、制御部50の投機的実行が実現されるデータフローグラフのループ部52とを示す。当該投機を実行可能とするため、いくつか追加でデータフロー処理および制御シーケンスが定義される。第1の実装差異は、「spec」ループの繰り返しを強制的にループ部52に入れさせる制御ストリームを生成することである。この制御ストリームは、「spec」1の値を実際のループ制御(例えば、「exit」信号)の前に追加する、修正ループエントリ制御(例えば、「Enter'」信号)の生成を伴う。投機的ソリューションであることは、投機的ループが、自然終了した後に、必ず「spec」の繰り返しを実施することを示し得る。したがって、存在しない実行に起因するデータフロートークンを除去するために、なんらかのクリーンアップロジックが導入される。一実施形態において、クリーンアップロジックが一連のフィルタ処理をループ部52の最下部で行うことにより、生成された終了信号(例えば、「Exit'」信号)により決定される、ループ実行の最後の「spec」トークンが除去される。より詳細に説明するように、投機的メモリ処理が、若干異なった方法で扱われ得る。
したがって、提案された投機的ループ変形により、当該変形がなければ連続ループのスループットの向上が図られる。この向上は、特定の投機的ループのトリップ数が比較的多い場合(例えば、2より多い)、顕著になる。しかしこのような変形は、クリーンアップ段階の実行により、新たなループの実行が部分的に阻害され得るという点で、ある程度のオーバーヘッドを伴い得る。一実施形態において、失われるサイクルの回数は、ループに投入される投機的コンテキストの数に制限される。適度な投機(例えば、「spec」==8)と読み込み(例えば、60サイクルのレイテンシ)のループであれば、ループの実行が一度のみでも、実際に生じるオーバーヘッドは比較的小さい。コンピュータコード20(図1A)の場合、このオーバーヘッドは13%程度であろう。その他の場合(例えば、トリップ無しまたはトリップ>2)、性能が標準的な実装以上となり得る。一実施形態において、図1Bおよび1Cに示す、投機的読み込み(LDS)処理を実行するデータフロー処理は、マイクロアーキテクチャの変更を伴わない。
図示の例では、「last(最終)」値(例えば、edge)、繰り返し値(例えば、「iter」)、および逆最終値(例えば、「~last」、すなわち最終ではない)を出力するシーケンサノード54に対して固定回数の繰り返し(例えば、「spec+1」)が入力される。第1ストリーム選択ノード56は、制御生成を開始するため、「Enter'」信号を生成する。図示のEnter'信号は、ループ部52におけるストリーム選択ノード24、反復ノード32、反復ノード38、およびフィルタノード28に入力される。シーケンサノード54は、最終値、繰り返し値、逆最終値を介して、データフロートークンを生成してよい。コードが固定回数の繰り返しを実行すると、第2ストリーム選択ノード58は、ループ部52の一組のクリーンアップフィルタノード60(60aから60c)に入力される「Exit'」信号を介して、データフロートークンを除去してよい。
さらに、投機的読み込み(LDS)ノード64は、エラーノード62に対して、異常を通知してよい。異常の例として、トランスレーション・ルックアサイド・バッファ(TLB)ミス、入力/出力(IO)メモリアドレスへのアクセス、(例えば、保護違反を引き起こす)仮想メモリアドレスへのアクセス、および/または他のキャッシュ不能なメモリモードの異常などが挙げられる。そのような場合、既存の構造機構を使用して、ソフトウェアにメッセージが送信されてよい。一実施形態において、コンパイラがユーザプログラムにランタイムエラーをシグナリングすることにより、このメッセージを処理するように、コードを投入する。このように、複雑なハードウェアを新しく導入せずとも、投機により、妥当なプログラミングモデルが実現可能となり得る。各ループは、「spec」の繰り返しで実行されるため、この回数の繰り返しは必ず、真のデータ依存性の限界まで、データフローグラフで並行して実行され得る。この結果、シリアル化された実行よりも大幅に性能向上が図られる。
図2Aは、性能強化された計算システムを動作させる方法70を示す。方法70は、一組のロジック命令として1または複数のモジュールに実装されてよい。当該ロジック命令は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリ等といったマシン可読またはコンピュータ可読記憶媒体に、例えばプログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などの構成可能ロジックに、例えば特定用途向け集積回路(ASIC)、相補型金属酸化膜半導体(CMOS)技術もしくはトランジスタ-トランジスタロジック(TTL)技術、などの回路技術を用いる機能固定型ロジックハードウェアに、またはそれらの任意の組み合わせに記憶される。
例えば、方法70に示す処理を実行するコンピュータプログラムコードは、1または複数のプログラミング言語の任意の組み合わせで記述されてよい。当該1または複数のプログラミング言語は、Java(登録商標)、Smalltalk、またはC++といったオブジェクト指向プログラミング言語、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む。さらに、ロジック命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、状態設定データ、集積回路用構成データ、電子回路をカスタマイズする状態情報、および/またはハードウェア固有の他の構造コンポーネント(例えば、ホストプロセッサ、中央演算処理装置(CPU)、マイクロコントローラ等)を含み得る。
図示の処理ブロック72は、不特定回数の繰り返しで制御ループが実行されると決定する。ブロック74は、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させ、制御ループの固定回数の繰り返し実行は並行して実施される。さらに、ブロック76は、制御ループの固定回数の繰り返し実行に関連した、1または複数のデータフロートークンを除去してもよい。制御ループに、不特定回数の繰り返しに加えて、固定回数の繰り返しを強制的に投機的に実行させることにより、クリティカルパスの長さの、性能に対する影響を大幅に低減させることが可能になる。さらに、投機的実行に関連したデータフロートークンの選択的除去により、追加的ハードウェアを使用することなく、性能的利点を実現することが可能になる。
図2Bは、性能強化された計算システムを動作させる別の方法80を示す。方法80は、一組のロジック命令として1または複数のモジュールに実装されてよい。当該ロジック命令は、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等といったマシン可読またはコンピュータ可読記憶媒体に、例えばPLA、FPGA、CPLDなどの構成可能ロジックに、例えばASIC、CMOS、もしくはTTL技術などの回路技術を用いる機能固定型ロジックハードウェアに、またはそれらの任意の組み合わせに記憶されてよい。
図示の処理ブロック82は、メモリアドレスからの制御ループ読み込みが成功したかを示す信号を生成する。ブロック84で、読み込みが失敗したと判定されると(例えば、読み込みがIOメモリアドレスへのアクセスであること、読み込みが保護違反を引き起こす仮想メモリアドレスへのアクセスであること、および/または別のキャッシュ不能なメモリモードの異常による)、ブロック86は、1または複数の仮想ページに、変換不能であると注釈を付けてよい。読み込みが成功した場合、図示の方法80はブロック86をとばして、終了する。したがって、図示の方法80は、幅広い使用事例で、制御投機がうまく機能することを可能にする。
図3Aから図3Xは、投機的制御ループの一連の処理に対するデータフローグラフを示す。図3Aに最もよく示すように、シーケンサノード54が、固定回数の繰り返し(例えば、2つの投機的ループが投入される)に1を足した、3の値を設定するデータフロートークン88で初期化される。さらに、反復ノード32が、配列a[i]のベースアドレスを0に設定するデータフロートークン90で初期化され、データフロートークン92が変数xに対して2の値を反復ノード38に与える。一実施形態において、1の値を有するデータフロートークン94でExit'信号が初期化され、0の値を有するデータフロートークン96で選択ノード24が初期化される。
図3Bに最もよく示すように、シーケンサノード54は、データフロートークン88に応じて状態変化を受け入れ、最終値として、値0のデータフロートークン98を出力する。図示のシーケンサノード54はさらに、繰り返し値として値1のデータフロートークン100と、逆最終値として値1のデータフロートークン102とを出力する。さらに、選択ノード24は、加算ノード26およびシフトノード30の両方にデータフロートークン96を出力する。
図3Cに最もよく示すように、その後シーケンサノード54は、最終値として値0の別のデータフロートークン104と、繰り返し値として値1のデータフロートークン106と、逆最終値として値1のデータフロートークン108とを出力してよい。図示の例では、第1ストリーム選択ノード56は、ループ部52におけるストリーム選択ノード24、反復ノード32、反復ノード38、およびフィルタノード28に提供されるEnter'信号として、データフロートークン102を出力する。さらに、加算ノード26は、値1のデータフロートークン110を、フィルタノード28に出力してよい(例えば、a[i]の次の値にインクリメントするため)。一実施形態において、シフトノード30は、アドレスシフトが生じないことを示す値0のデータフロートークン112を出力する。
図3Dに最もよく示すように、その後シーケンサノード54は、繰り返し値として値1の別のデータフロートークン114と、逆最終値として値0のデータフロートークン116とを出力してよい。反復ノード38はさらに、比較ノード36にデータフロートークン92を出力してよく、図示の反復ノード32はデータフロートークン90を加算ノード33に出力する。一例では、反復ノード38は値2の別のデータフロートークン120を生成する。同様に、反復ノード32は、値0の別のデータフロートークン124を生成してよい。一実施形態において、フィルタノード28は、データフロートークン110を選択ノード24に出力する。
図3Eに最もよく示すように、図示のシーケンサノード54は、最終値として、値1の別のデータフロートークン118を出力する。反復ノード38はさらに、比較ノード36に値2の別のデータフロートークン120を出力してよい。一実施形態において、加算ノード33は、アドレス値0のデータフロートークン122を出力する。さらに、選択ノード24は、加算ノード26およびシフトノード30の両方に、データフロートークン110を出力する。
図3Fに最もよく示すように、シーケンサノード54は繰り返し値として、値0の別のデータフロートークン126を出力してよい。投機的読み込みノード64はデータフロートークン122を受け取り、データフロートークン122が示すアドレスから値を読み込んでよく、シフトノード30は、データフロートークン110(図3E)に応じて、値8(例えば、3ビットのシフトを引き起こす)のデータフロートークン128を出力する。さらに、図示の加算ノード26は、値2のデータフロートークン130をフィルタノード28に出力する(例えば、a[i]の次の値にインクリメントするため)。
図3Gに最もよく示すように、図示の投機的読み込みノード64は、読み込まれた値を値0のデータフロートークン134として第1クリーンアップフィルタノード60aに出力し、値0のデータフロートークン136を比較ノード36に出力する。投機的読み込みノード64はさらに、読み込みが成功したことを示すために、値1のデータフロートークン138を第3クリーンアップフィルタノード60cに出力してよい。さらに、加算ノード33は、値8のデータフロートークン132を、a[i]における次の要素のアドレスとして出力してよい。一実施形態において、フィルタノード28は、データフロートークン130を選択ノード24に出力する。
図3Hに最もよく示すように、第1クリーンアップフィルタノード60aは、データフロートークン134をフィルタノード40に出力してよい。さらに、比較ノード36は、(例えば、dの値がx未満であると示すために)値1のデータフロートークン142を第2クリーンアップフィルタノード60bに出力してよい。一例では、第3クリーンアップフィルタノード60cは、データフロートークン138をエラーノード62に出力する。投機的読み込みノード64は、データフロートークン132を受け取り、データフロートークン132が示すアドレスから値を読み込んでよい。
図3Iに最もよく示すように、図示の第2クリーンアップフィルタノード60bはデータフロートークン142をフィルタノード40に出力する。データフロートークン142はまた、置換ノード144、第1ストリーム選択ノード56、および第2ストリーム選択ノード58に、終了信号として提供されてよい。一実施形態において、図示の投機的読み込みノード64は、読み込んだ値を値1のデータフロートークン146として、第1クリーンアップフィルタノードに出力し、値1のデータフロートークン148を比較ノード36に出力する。投機的読み込みノード64はさらに、読み込みが成功したことを示すために、値1のデータフロートークン150を第3クリーンアップフィルタノード60cに出力してよい。さらに、図示のシフトノード30は、データフロートークン130(図3H)に応じて、(例えば、別の3ビットのシフトを引き起こす)値16のデータフロートークン151を出力する。一例では、加算ノード26は値3のデータフロートークン152をフィルタノード28に出力する。
図3Jに最もよく示すように、第1ストリーム選択ノード56および第2ストリーム選択ノード58は、それぞれEnter'信号およびExit'信号として、データフロートークン142を出力する。さらに、図示の比較ノード36は、(例えば、dの値がx未満であると示すために)値1のデータフロートークン154を第2クリーンアップフィルタノード60bに出力する。
図3Kに最もよく示すように、データフロートークン154は、置換ノード144、第1ストリーム選択ノード56、および第2ストリーム選択ノード58に、終了信号として第2クリーンアップフィルタノード60bにより提供されてよい。さらに、図示の第2クリーンアップフィルタノード60bは、データフロートークン154をフィルタノード40に出力し、第1クリーンアップフィルタノード60aは、データフロートークン146をフィルタノード40に出力する。一実施形態において、反復ノード38はさらに、値2の別のデータフロートークン158を比較ノード36に出力し、反復ノード32は値0の別のデータフロートークン160を加算ノード33に出力する。一例では、第3クリーンアップフィルタノード60cは、データフロートークン150をエラーノード62に出力し、フィルタノード28はデータフロートークン152を選択ノード24に出力する。
図3Lに最もよく示すように、加算ノード33は、値16のデータフロートークン162を、a[i]における次の要素のアドレスとして出力してよい。一実施形態において、選択ノード24は、データフロートークン152を、加算ノード26およびシフトノード30の両方に出力する。
図3Mに最もよく示すように、置換ノード144は、値1のデータフロートークン164を第1ストリーム選択ノード56に出力し、第2ストリーム選択ノード58は、値1のデータフロートークン166をExit'信号として出力する。図示の投機的読み込みノード64は、データフロートークン162を受け取り、データフロートークン162が示すアドレスから値を読み込み、シフトノード30は、データフロートークン152(図3L)に応じて、(例えば、別の3ビットのシフトを引き起こすために)値24のデータフロートークン170を出力する。一例では、加算ノード26は値4のデータフロートークン172をフィルタノード28に出力する。
図3Nに最もよく示すように、第1ストリーム選択ノード56は、反復ノード38、反復ノード32、選択ノード24、およびフィルタノード28に提供されるEnter'信号として、値1のデータフロートークン174を出力する。図示のクリーンアップフィルタノード60は、データフロートークン166をExit'信号として受信する。
図3Oに最もよく示すように、図示の投機的読み込みノード64は、読み込まれた値を値2のデータフロートークン182として、第1クリーンアップフィルタノード60aに出力し、値2のデータフロートークン180を、比較ノード36に出力する。投機的読み込みノード64はさらに、読み込みが成功したことを示すために、値1のデータフロートークン178を第3クリーンアップフィルタノード60cに出力してよい。一実施形態において、反復ノード38はさらに、値2の別のデータフロートークン184を比較ノード36に出力し、反復ノード32は値0の別のデータフロートークン186を加算ノード33に出力する。図示の例では、フィルタノード28は、データフロートークン172をストリーム選択ノード24に出力する。
図3Pに最もよく示すように、第1クリーンアップフィルタノード60aは、データフロートークン182をフィルタノード40に出力し、図示の比較ノード36は、(例えば、dの値がx未満ではないこと示すために)値0のデータフロートークン188を第2クリーンアップフィルタノード60bに出力する。一例では、第3クリーンアップフィルタノード60cは、データフロートークン178をエラーノード62に出力する。さらに、加算ノード33は、値24のデータフロートークン190を、a[i]における次の要素のアドレスとして出力してよい。一実施形態において、選択ノード24は、データフロートークン172を、加算ノード26およびシフトノード30の両方に出力する。
図3Qに最もよく示すように、データフロートークン192は、置換ノード144、第1ストリーム選択ノード56、および第2ストリーム選択ノード58に、終了信号として第2クリーンアップフィルタノード60bにより提供されてよい。さらに、図示の第2クリーンアップフィルタノード60bは、投機完了前に、実際のループ結果が戻されることを保証するように、データフロートークン192をフィルタノード40に出力する。図示の投機的読み込みノード64はデータフロートークン190を受け取り、データフロートークン190が示すアドレスから値を読み込み、シフトノード30は、データフロートークン172(図3P)に応じて、(例えば、別の3ビットのシフトを引き起こすために)値32のデータフロートークン194を出力する。一例では、加算ノード26は値5のデータフロートークン196をフィルタノード28に出力する。
図3Rに最もよく示すように、図示の置換ノード144は、データフロートークン192に応じて、値1のデータフロートークン101と、値0のデータフロートークン103とを出力する(図3Q)。さらに、クリーンアップ値が、ストリーミングを開始してよい。例えば、第2ストリーム選択ノード58は、クリーンアップフィルタノード60に提供されるExit'信号として、(例えば、最終値入力から)データフロートークン98を出力する。一実施形態において、フィルタノード40は、実際のループ結果(例えばd)として、データフロートークン182を出力する。この時点で、非投機的ループは、完了したとみなされたであろう。投機的ループの実施形態は、しばらく継続して実行され、投機的トークンが除去される。一例では、投機的読み込みノード64は、読み込まれた値を値3のデータフロートークン105として、第1クリーンアップフィルタノード60aに出力し、値3のデータフロートークン107を、比較ノード36に出力する。投機的読み込みノード64はさらに、読み込みが成功したことを示すために、値1のデータフロートークン109を第3クリーンアップフィルタノード60cに出力してよい。
図3Sに最もよく示すように、第1ストリーム選択ノード56は、反復ノード38、反復ノード32、選択ノード24、およびフィルタノード28に提供されるEnter'信号として、(例えば、終了信号入力から)データフロートークン192を出力する。さらに、第2ストリーム選択ノード58は、クリーンアップフィルタノード60に提供されるExit'信号として、(例えば、最後の信号入力から)データフロートークン104を出力してよい。一実施形態において、第2クリーンアップフィルタノード60bは、終了信号として、データフロートークン111を出力する。さらに、図示の比較ノード36は、(例えば、dの値がx未満であると示すために)値0のデータフロートークン113を、第2クリーンアップフィルタノード60bに出力してよい。
図3Tに最もよく示すように、第2ストリーム選択ノード58は、Exit'信号として、(例えば、最終信号入力)から、データフロートークン118を出力してよい。Exit'信号は、データフロートークン118を介して、次のループ実行用に初期化される(例えば、グラフのセルフクリーニング)。一実施形態において、反復ノード38はさらに、値2の別のデータフロートークン115を比較ノード36に出力し、反復ノード32は値0の別のデータフロートークン117を加算ノード33に出力する。さらに、選択ノード24による値0の初期化データフロートークン119の加算ノード26およびシフトノード30の両方への出力に応じて、次のループ実行の最初の繰り返しが実行を開始する。
図3Uに最もよく示すように、加算ノード33は、値32のデータフロートークン121を、a[i]における次の要素のアドレスとして出力し、シフトノード30はデータフロートークン119(図3T)に応じて、(例えば、3ビットのシフトを引き起こすために)値8のデータフロートークン123を出力する。さらに、図示の加算ノード26は、値1のデータフロートークン125を、フィルタノード28に出力する。
図3Vに最もよく示すように、図示の投機的読み込みノード64はデータフロートークン121を受け取る。投機的読み込みノード64はさらに、データフロートークン121が示すアドレスからの値の読み込みを試みてよい。
図3Wに最もよく示すように、投機的読み込みノード64は、値0のデータフロートークン127を、第1クリーンアップフィルタノード60aに出力し、値0のデータフロートークン129を比較ノード36に出力する。投機的読み込みノード64は、さらに読み込みが失敗したことを示すために(例えば、変換失敗)、値0のデータフロートークン131を第3クリーンアップフィルタノード60cに出力してよい。一実施形態において、投機的であるため、失敗は無視される。
図3Xに最もよく示すように、図示の比較ノード36は、(例えば、dの値がx未満であると示すために)値1のデータフロートークン133を第2クリーンアップフィルタノード60bに出力する。図示の「先読みループ」技術は、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に投機的に実行させるので、クリティカルパスの長さの性能に対する影響を大幅に低減させることが可能となり得る。さらに、投機的実行に関連したデータフロートークンの選択的除去により、追加的ハードウェアを使用することなく、性能的利点を実現することが可能になる。
[メモリの処理]
上述のように、例えば、構成可能空間アクセラレータ(CSA)構造等の構造内での投機は、データフロートークンの投入および除去により処理され得る。しかし、メモリアクセスは、全体的副作用があり得るため、処理が若干異なり得る。
読み込み処理(「loads」)が、計算におけるレイテンシの大部分を示すことが多い。したがって、読み込みの並行実施は特に有利となり得る。幸運なことに、投機的読み込みは大抵の場合、適切に行われ得る。しかし、基本的な読み込み処理を利用した当該投機が許可されない場合も若干ある。そのような場合の多くは、投機的読み込みアドレスが仮想メモリ変換における保護違反を生じる場合である。通常、このような違反はプログラム終了を生じさせる。その他より稀な状況として、投機的アクセスが違法または有害となるような副作用を伴い得る、I/O(入力/出力)空間等のメモリの特定領域への読み込み処理が挙げられる。これら状況に対応するため、新規の投機的読み込み処理が導入される。この動作は、動作が成功すると対象メモリアドレスの値を返すが、失敗すると0を返すものである。さらに、動作が成功したか失敗したかを示すために、ブーリアントークンが提供されてよい。
図4は、投機的読み込み処理135の例を示す。投機的読み込み処理135は、ハードウェアによる保護違反の実行を回避するものではあるが、それでもプログラマに非投機的ループ実行が保護違反に抵触したことを通知することは有効であり得る。上述のように、例えばエラーノード62(図1C)等のエラーハンドラが、非投機的読み込みインスタンスが、保護違反に抵触したかを判定してよい。違反に抵触すると、既存の構造機構を使用して、ソフトウェアにメッセージが送信されてよい。
ほぼ全ての使用事例で基本的処理がうまく機能し得るが、投機的ループ制御を、読み込み処理に対する引数として含めて、より稀なメモリ種類への対応を向上してよい。「適切に働く」メモリ種類(例えばキャッシュ可能)については、アドレスおよび依存性トークン(例えばインスタンスが投機的であるか)が利用可能になると、即メモリ動作が発行されることで、この制御がハードウェアにより無視されてよい。ただし、アドレス変換により、例えばI/O空間等のより複雑な種類が検出されると、投機的入力を介して、ループ制御が解消する(例えば、効果的に投機的アクセスが終了する)まで待つように、動作が待機し得る。第1の従来の種類のメモリ変換が検出されると即、動作を従来のとおりに処理するため、マイクロアーキテクチャを選択してよく、例えばカウンタに基づいて、定期的により積極的なモードに復帰してよい。
読み込みと異なり、投機的記憶動作(記憶)はアンワインド用に、ハードウェアによるサポートを伴い得る。ただし、計算のクリティカルパス上の記憶は稀である。したがって、実際のループ制御の計算がメモリに送信される(またはコミット)まで、記憶を待機許可することも可能であり得る。ただし、記憶される値およびアドレスを投機的に計算し、その後投機的ループ終了制御(例えばExit'信号)を使用して制御されたフィルタで除去してよい。したがって、記憶の待機は、全体的なループ性能に無影響であり得る。同様に、メモリ一貫性を実現するために使用される命令トークンは、投機対象としなくてよい。一実施形態において、当該トークンを使用した処理が、適宜フィルタリング処理で覆い隠される(wrapped)。
[変換性能向上]
読み込み投機に関連した、マイクロアーキテクチャの潜在的問題の1つとして、投機的アクセスが無効なページに入った場合に偽アドレス変換が時折生じ得ることが挙げられる。本明細書に記載の投機的読み込み処理を利用すると、無効なページに入っても不正確な実行につながることはないが、適用性能を低下させる、偽のページウォークを生じ得る。この問題改善のため、仮想ページが変換不能であることを示す注釈を、TLB階層(例えば、レベル2/L2TLB)で付けてよい。したがって、各投機的アクセスに対して、ページウォークを引き起こすのではなく、適用が最悪の場合にL1(レベル1)TLBミスとなるのみで、L1で非変換がキャッシュされると罰則無しとしてよい。
図5は、投機的実行制御の各種レベルに対する、サイクルと、ループトリップ全体との関係のグラフ137を示す。グラフ137は、比較的低レベルの投機に対して、サイクル数が有利な低いレベルとなることを示す(例えば性能強化)。
次に図6を参照すると、軽量処理要素(PE)配列が、回線交換コンポーネント141と、静的構成の通信経路143とを備える、データフローアーキテクチャ139(例えば、CSA)が示されている。一実施形態においてPE配列は、整数PEと、融合積和演算(FMA)PEとを備える。一例では、例えば制御部50(図1B)等のデータフローグラフ制御部と、例えば、ループ部52(図1C)等のデータフローグラフループ部とが、PEとネットワークを構成することで、アーキテクチャ139にマッピングされる。通常、PEはプロセッサ内の機能ユニットと同様の、データフロー演算子として構成される。即ち、全ての入力オペランドがPEに到達すると、なんらかの動作が生じ、パイプライン方式で結果が下流のPEに送られる。データフロー演算子は、到来するデータを、演算子単位で消費するように選択してよい。数式の無条件評価を処理するなどの単純な演算子は、多くの場合、全ての到来データを消費する。しかし、演算子が例えば蓄積状態を維持することが好ましい場合もある。
一実施形態において、PEは、回線交換通信ネットワークを静的に構成することで形成された、専門の仮想回路を使用して通信する。これら仮想回路は完全にバックプレッシャー付きでフロー制御される。したがって、ソースにデータがない、または宛先がいっぱいになっている場合、PEは待機する。実行時、マッピングされたアルゴリズムを実装するPEを通じて、データが流れる。例えば、メモリからデータが流入し、構造を通って、メモリに戻るように流出してよい。本明細書に記載のグラフ合成技術は、そのような空間アーキテクチャを対象としてよい。
次に図7を参照すると、性能強化計算システム151が示されている。システム151は概して、計算機能(例えば、携帯情報端末(PDA)、ノートブックコンピュータ、タブレットコンピュータ、コンバーチブル型タブレット、サーバ)、通信機能(例えば、スマートフォン)、撮像機能(例えば、カメラ、カムコーダ)、メディア再生機能(例えば、スマートテレビ(TV))、ウェアラブル機能(例えば、腕時計、眼鏡、帽子、靴、宝石)、車両機能(例えば、車、トラック、バイク)、ロボット機能(例えば、自律ロボット)等、またはその任意の組み合わせを有する、電子デバイス/プラットフォームの一部であってよい。図示の例では、システム151は、システムメモリ157に結合された統合メモリコントローラ(IMC)155を有するホストプロセッサ153(例えば、複数のPEおよび/またはコアを有する中央演算処理装置(CPU))を備える。
図示のシステム151はさらに、システムオンチップ(SoC)として半導体ダイ163上に、ホストプロセッサ153とともに実装される入力出力(IO)モジュール159と、グラフィックスプロセッサ161とを備える。例えば、図示のIOモジュール159は、ディスプレイ165(例えば、タッチスクリーン、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ)と、ネットワークコントローラ167(例えば、有線および/または無線NIC)と、大容量ストレージ169(例えば、ハードディスクドライブ(HDD)、光ディスク、ソリッドステートドライブ(SSD)、フラッシュメモリ)と通信する。
一実施形態において、ホストプロセッサ153、グラフィックスプロセッサ161、および/またはIOモジュール159は、上述の方法70(図2A)および/または方法80(図2B)の1または複数の態様を実行するため、システムメモリ157および/または大容量ストレージ169から取得したプログラム命令171を実行する。したがって、図示の命令171の実行により、計算システム151に、不特定回数の繰り返しで制御ループが実行されると決定することと、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、固定回数の繰り返しでの制御ループの実行は、並行して実施される、実行させることとを行わせてもよい。命令171の実行はさらに、計算システム151に、固定回数の繰り返しでの制御ループの実行に関連した、1または複数のデータフロートークンを除去させてもよい。
したがって、命令171の実行により、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを投機的に強制的に実行させることで、クリティカルパスの長さの性能への影響を大幅に低減させることが可能であるという点で、計算システム151は性能強化されているとみなされ得る。さらに、投機的実行に関連した、データデータフロートークンの選択的除去により、追加のハードウェアを使用することなく、性能的利点を実現することが可能となる。
図8は、半導体パッケージ装置173を示す。図示の装置173は、1または複数の基板175(例えば、シリコン、サファイヤ、ヒ化ガリウム)と、1または複数の基板175に結合されたロジック177(例えば、トランジスタ配列およびその他集積回路(IC)コンポーネント)とを備える。ロジック177は、少なくとも部分的に、構成可能ロジック、または機能固定型ロジックハードウェア内に実装されてよい。一例では、ロジック177は、上述の方法70(図2A)および/または方法80(図2B)の1または複数の態様を実現する。したがって、ロジック177は不特定回数の繰り返しで制御ループが実行されると決定することと、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、固定回数の繰り返しでの制御ループの実行は並行して実施される、実行させることとを自動的に行ってもよい。ロジック177はさらに、自動的に計算システム151に、固定回数の繰り返しでの制御ループの実行に関連した、1または複数のデータフロートークンを除去させてよい。
したがって、ロジック177が、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを投機的に強制的に実行させることで、クリティカルパスの長さの性能への影響を大幅に低減させることが可能であるという点で、装置173は性能強化されているとみなされ得る。さらに、投機的実行に関連した、データデータフロートークンの選択的除去により、追加のハードウェアを使用することなく、性能的利点を実現することが可能となる。
一例では、ロジック177は、1または複数の基板175内に配置された(例えば埋め込まれた)トランジスタチャネル領域を備える。したがって、ロジック177と、1または複数の基板175との間のインタフェースは、段階接合とならなくなり得る。ロジック177はさらに、1または複数の基板175の初期ウェハ上に成長するエピタキシャル層を備えるとみなされ得る。
図9は、1つの実施形態に係るプロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、内蔵プロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、またはコードを実行する他のデバイスなどの任意のタイプのプロセッサのコアであってよい。図9は、プロセッサコア200を1つのみ図示する。しかしこれに代えて処理要素は、図9に示すプロセッサコア200を2つ以上備えてよい。プロセッサコア200は、シングルスレッドコアであってよいが、少なくとも1つの実施形態については、プロセッサコア200は、コアごとに2つ以上のハードウェアスレッドコンテキスト(または、「論理プロセッサ」を含み得るという点で、マルチスレッドであってよい。
図9はまた、プロセッサコア200に結合されたメモリ270を示す。メモリ270は、当業者にとって既知か、さもなければ当業者が入手可能な(メモリ階層の様々な層を含む)多種多様なメモリのいずれかであってよい。メモリ270は、プロセッサコア200によって実行される1または複数のコード213命令を含んでよい。コード213は、既に説明した方法70(図2A)、および/または方法80(図2B)の1または複数の態様を実現してよい。プロセッサコア200は、コード213によって示される命令のプログラムシーケンスに従う。各命令は、フロントエンドポーション210に入り、1または複数のデコーダ220によって処理されてよい。デコーダ220は、予め定義されたフォーマットの固定幅マイクロオペレーションなどのマイクロオペレーションをその出力として生成してよく、または、他の命令、マイクロ命令、もしくは元のコード命令を反映する制御信号を生成してよい。図示のフロントエンドポーション210はまた、レジスタリネーミングロジック225およびスケジューリングロジック230を備え、それらは概して、リソースを割り当て、変換命令に対応する動作を実行のためにキューに入れる。
プロセッサコア200は、一組の実行ユニットのセット255-1から255-Nを有する実行ロジック250を備えるように示されている。いくつかの実施形態は、特定の機能または機能セット専用の複数の実行ユニットを含んでよい。別の実施形態は、ただ1つの実行ユニットを含み得るか、または、特定の機能を実行できる1つの実行ユニットを含み得る。図示の実行ロジック250は、コード命令によって指定される動作を実行する。
コード命令によって指定された動作の実行が完了した後、バックエンドロジック260はコード213の命令をリタイアさせる。1つの実施形態において、プロセッサコア200では、命令の実行はアウトオブオーダが可能だが、そのリタイアについてはインオーダである必要がある。リタイアメントロジック265は、当業者に既知の様々なかたちをとってよい形式であってよい(例えば、リオーダバッファ等)。このように、コード213の実行中に、プロセッサコア200では、少なくとも、デコーダが生成する出力と、レジスタリネーミングロジック225が利用するハードウェアレジスタおよびテーブルと、実行ロジック250が変更するあらゆるレジスタ(図示せず)とに関する変化がある。
図9には示されてないが、処理要素は、プロセッサコア200を含むチップ上に他の要素も含んでよい。例えば、処理要素は、プロセッサコア200と共にメモリ制御ロジックを含んでよい。処理要素は、I/O制御ロジックを含んでよく、および/または、メモリ制御ロジックと統合されたI/O制御ロジックを含んでよい。処理要素は、1または複数のキャッシュも含んでよい。
ここで図10を参照すると、一実施形態に係る計算システム1000の実施形態のブロック図が示されている。図10に示されているのはマルチプロセッサシステム1000である。マルチプロセッサシステム1000は、第1の処理要素1070および第2の処理要素1080を備える。2つの処理要素1070および1080が示されているが、システム1000に係る一実施形態は、そのような処理要素を1つだけしか含まなくてよいことを理解されたい。
システム1000は、ポイントツーポイント相互接続システムとして図示されている。第1の処理要素1070と第2の処理要素1080とは、ポイントツーポイント相互接続1050を介して結合される。図10に示す相互接続のいずれかまたは全てがポイントツーポイント相互接続ではなくマルチドロップバスとして実装され得ることを理解されたい。
図10に示すように、処理要素1070および1080の各々は、第1のプロセッサコアおよび第2のプロセッサコア(すなわち、プロセッサコア1074aおよび1074b、ならびに、プロセッサコア1084aおよび1084b)を含むマルチコアプロセッサであってよい。そのようなコア1074a、1074b、1084a、1084bは、図9に関連して上述したものと同様の態様で命令コードを実行するよう構成されてよい。
処理要素1070、1080はそれぞれ、少なくとも1つの共有キャッシュ1896a、1896bを含んでよい。共有キャッシュ1896aおよび1896bはそれぞれ、コア1074a、1074bおよび1084a、1084bなどの、プロセッサの1または複数のコンポーネントによって利用されるデータ(例えば、命令)を格納してよい。例えば、共有キャッシュ1896a、1896bは、プロセッサのコンポーネントがより高速にアクセスできるよう、メモリ1032、1034に記憶されたデータをローカルにキャッシュしてよい。1または複数の実施形態において、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)もしくは他のレベルのキャッシュなどの1または複数の中間レベルキャッシュ、ラストレベルキャッシュ(LLC)、および/または、それらの組み合わせを含んでよい。
図では2つの処理要素1070、1080のみが示されているが、実施形態の範囲はそれに限定されないことを理解されたい。他の実施形態では、所与のプロセッサにおいて1または複数の追加の処理要素が存在してよい。あるいは、処理要素1070、1080のうちのいずれかまたは両方は、プロセッサ以外の、アクセラレータまたはフィールドプログラマブルゲートアレイなどの要素であってよい。例えば、1または複数の追加の処理要素は、第1のプロセッサ1070と同じ1または複数の追加のプロセッサ、第1のプロセッサ1070とは異種または非対称のプロセッサである1または複数の追加のプロセッサ、アクセラレータ(例えば、グラフィックスアクセラレータもしくはデジタル信号処理(DSP)ユニットなど)、フィールドプログラマブルゲートアレイ、または、任意の他の処理要素を含んでよい。処理要素1070と処理要素1080との間には、アーキテクチャ特性、マイクロアーキテクチャ特性、熱的特性、および消費電力特性等を含む多種多様な価値基準に関して様々な差異があり得る。これらの差異は、処理要素1070と処理要素1080との間の非対称性および異種性として効果的に現れ得る。少なくとも1つの実施形態では、同じダイパッケージ中に様々な処理要素1070、1080が存在してよい。
第1の処理要素1070は、メモリコントローラロジック(MC)1072とポイントツーポイント(P-P)インタフェース1076および1078とをさらに備えてよい。同様に、第2の処理要素1080は、MC1082とP-Pインタフェース1086および1088とを含んでよい。図10に示すように、MC1072およびMC1082は、プロセッサをそれぞれのメモリ、すなわちメモリ1032およびメモリ1034に結合する。これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。MC1072および1082は処理要素1070および1080の中に統合されているものとして示されているが、代替の実施形態では、MCロジックは、処理要素1070、1080に統合されるのではなく、処理要素1070、1080の外部の別個のロジックであってよい。
第1の処理要素1070および第2の処理要素1080はそれぞれ、P-P相互接続1076および1086を介してI/Oサブシステム1090に結合されてよい。図10に示すように、I/Oサブシステム1090は、P-Pインタフェース1094および1098を備えてよい。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィックスエンジン1038と結合するインタフェース1092を備える。1つの実施形態において、グラフィックスエンジン1038をI/Oサブシステム1090に結合するのに、バス1049が使用されてよい。あるいは、ポイントツーポイント相互結合がこれらのコンポーネントを結合してよい。
さらにI/Oサブシステム1090は、インタフェース1096を介して第1のバス1016に結合されてよい。1つの実施形態において、第1のバス1016は、ペリフェラルコンポーネントインターコネクト(PCI)バス、または、PCIエクスプレスバスもしくは別の第3世代I/O相互接続バスなどのバスであってよいが、当該実施形態の範囲はそれに限定されない。
図10に示すように、様々なI/Oデバイス1014(例えば、生体スキャナ、スピーカ、カメラ、センサ)がバスブリッジ1018と共に第1のバス1016に結合されてよい。バスブリッジ1018は、第1のバス1016を第2のバス1020に結合してよい。1つの実施形態において、第2のバス1020は、ローピンカウント(LPC)バスであってよい。1つの実施形態において、例えば、キーボード/マウス1012、1または複数の通信デバイス1026、およびコード1030を含み得るディスクドライブまたはその他の大容量ストレージデバイスなどのデータストレージユニット1019を含む、様々なデバイスが第2のバス1020に結合されてよい。図示のコード1030は、上述の方法70(図2A)、および/または方法80(図2B)のうちの1または複数の態様を実現してよい。さらに、オーディオI/O1024が第2のバス1020に結合されてよく、バッテリ1010が計算システム1000に給電してよい。
他の実施形態も考えられることに留意されたい。例えば、図10のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、または、別のそのような通信トポロジを実装してよい。あるいは図10の要素はさらに、図10に示すよりも多くのまたは少ない集積チップを使用して、区画されてよい。
[追加の留意点および例]
例1は、ネットワークコントローラと、ネットワークコントローラに結合されたプロセッサとを含む性能強化された計算システムを含み、プロセッサは1または複数の基板に結合されたロジックを含み、ロジックは、制御ループが不特定回数の繰り返しで実行されると決定し、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させ、固定回数の繰り返しでの制御ループの実行は、並行して実施される。
例2は、1または複数の基板に結合されたロジックは、固定回数の繰り返しでの制御ループの実行に関連した、1または複数のデータフロートークンを除去する、例1のシステムを含む。
例3は、制御ループは、メモリアドレスからの読み込みを伴い、1または複数の基板に結合されたロジックは、読み込みが成功したかを示す信号を生成する、例1または2のいずれか1つのシステムを含む。
例4は、読み込みは、入力/出力(IO)メモリアドレスからである、例3のシステムを含む。
例5は、読み込みは、仮想メモリアドレスからである、例3のシステムを含む。
例6は、1または複数の基板に結合されたロジックは、キャッシュ不能なメモリモードの異常により、読み込みが失敗したことを検出し、異常に応じて、1または複数の仮想ページを変換不能と注釈を付ける、例5のシステムを含む。
例7は、1または複数の基板と、1または複数の基板に結合されたロジックとを含む半導体装置を含み、ロジックは、少なくとも部分的に構成可能ロジックまたは機能固定型ハードウェアロジックのうちの1または複数に実装され、1または複数の基板に結合されたロジックは、不特定回数の繰り返しで制御ループが実行されると決定することと、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、固定回数の繰り返しでの制御ループの実行は並行して実施される、実行させることを行う。
例8は、1または複数の基板に結合されたロジックは、固定回数の繰り返しでの制御ループの実行に関連した、1または複数のデータフロートークンを除去する、例7の半導体装置を含む。
例9は、制御ループは、メモリアドレスからの読み込みを伴い、1または複数の基板に結合されたロジックは、読み込みが成功したかを示す信号を生成する、例7または8のいずれか1つの半導体装置を含む。
例10は、読み込みは、入力/出力(IO)メモリアドレスからである、例9の半導体装置を含む。
例11は、読み込みは、仮想メモリアドレスからである、例9の半導体装置を含む。
例12は、1または複数の基板に結合されたロジックは、
キャッシュ不能なメモリモードの異常により、読み込みが失敗したことを検出し、
異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける、例11の半導体装置を含む。
例13は、一組の実行可能なプログラム命令を備える少なくとも1つのコンピュータ可読記憶媒体を含み、プログラム命令は、計算システムによって実行されると、計算システムに、不特定回数の繰り返しで制御ループが実行されると決定することと、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、固定回数の繰り返しでの制御ループの実行は、並行して実施される、実行させることとを行わせる。
例14は、プログラム命令は、実行されると、計算システムに、固定回数の繰り返しでの制御ループの実行に関連した、1または複数のデータフロートークンを除去させる、例13の少なくとも1つのコンピュータ可読記憶媒体を含む。
例15は、制御ループは、メモリアドレスからの読み込みを伴い、プログラム命令は、実行されると、計算システムに、読み込みが成功したかを示す信号を生成させる、例13または14のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含む。
例16は、読み込みは、入力/出力(IO)メモリアドレスからである、例15の少なくとも1つのコンピュータ可読記憶媒体を含む。
例17は、読み込みは、仮想メモリアドレスからである、例15の少なくとも1つのコンピュータ可読記憶媒体を含む。
例18は、プログラム命令は、実行されると、計算システムに、キャッシュ不能なメモリモードの異常により、読み込みが失敗したことを検出させ、異常に応じて、1または複数の仮想ページに変換不能と注釈を付けさせる、例17の少なくとも1つのコンピュータ可読記憶媒体を含む。
例19は、不特定回数の繰り返しで制御ループが実行されると決定する段階と、制御ループに、不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させる段階であって、固定回数の繰り返しでの制御ループの実行は、並行して実施される、実行させる段階と、を備える方法を含む。
例20は、固定回数の繰り返しでの制御ループの実行に関連した、1または複数のデータフロートークンを除去する段階をさらに備える、例19の方法を含む。
例21は、制御ループは、メモリアドレスからの読み込みを伴い、方法は、読み込みが成功したかを示す信号を生成する段階をさらに備える、例19または20のいずれか1つの方法を含む。
例22は、読み込みは、入力/出力(IO)メモリアドレスからである、例21の方法を含む。
例23は、読み込みは、仮想メモリアドレスからである、例21の方法を含む。
例24はキャッシュ不能なメモリモードの異常により、読み込みが失敗したことを検出する段階と、異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける段階と、をさらに備える、例23の方法を含む。
例25は、例19から24のいずれか1つの方法を実行する手段を含む。
したがって、本明細書に記載の技術は、多数のデータフローグラフの性能を、標準的な場合に対して整数倍向上し、それによりデータフローアーキテクチ全般の適用性を向上する。本技術は、既存のハードウェアに対し、若干の変更を要するか、変更を要さない。
実施形態は、あらゆるタイプの半導体集積回路(「IC」)チップとの使用に適用可能である。これらICチップの例としては、限定ではないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASIC等が含まれる。また、いくつかの図面においては、信号導線が線で表されている。この一部は、より多くの成分信号経路を示すために、他と異なっていてよく、複数の成分信号経路を示すために番号ラベルを有してよく、かつ/または、主要情報の流れ方向を示すべく1または複数の端部に矢印を有していてよい。しかしながら、このことは限定的に解釈されるべきではない。むしろ、かかる追加の詳細は、1または複数の例示的な実施形態に関連して使用され、回路の理解をより容易にし得るものである。追加の情報を有するか否かにかかわらず、示されたあらゆる信号線は実際には、移動方向が複数あり得る1または複数の信号を含んでよく、例えば、差動ペアで実装されるデジタル線またはアナログ線、光ファイバ線、および/または、シングルエンド線といったあらゆる好適なタイプの信号方式で実装されてよい。
例示的な大きさ/モデル/値/範囲が与えられている場合があるが、実施形態はそれに限定されるものではない。時間を経て製造技術(例えば、フォトリソグラフィ)が成熟するにつれ、より小型のデバイスが製造され得ることが予期される。また、例示および説明を簡潔にするために、および、実施形態の特定の態様を不明瞭にしないように、ICチップおよび他のコンポーネントへのよく知られた電源/グラウンド接続は、図中に示されていても、示されていなくてよい。さらに、実施形態を不明瞭にすることを回避すべく、構成は、ブロック図で示されてよく、また、かかるブロック図構成の実装に関する詳細は、実施形態が実装されるべき計算システムに大きく依存することに鑑みれば、すなわち、かかる詳細は、当業者の十分知見の範囲内である。例示的な実施形態を説明するために、具体的な詳細(例えば、回路)が記載される場合、これらの具体的な詳細なしで、またはこれらの具体的な詳細の変形例によって、実施形態が実施され得ることが、当業者には、自明である。従って、詳細な説明は、限定的ではなく、例示的なものとしてみなされるべきである。
「結合」という用語は、対象のコンポーネント間の任意のタイプの直接的または間接的関係、を指すために本明細書において使用されてよく、電気的、機械的、流体的、光学的、電磁的、電子機械的、または他の接続に適用されてよい。また、「第1」、「第2」等の用語は、説明を容易にするためだけに本明細書において使用されてよく、別途記載がない限り、何ら特定の時間的または時系列的な意味を含まない。
本願および特許請求の範囲において用いられる「のうちの1または複数」という用語によって結合される項目の列挙は、列挙された用語の任意の組み合わせを意味してよい。例えば、「A、BおよびCのうちの1または複数」という文言および「A、BまたはCのうちの1または複数」という文言はいずれも、A;B;C;AおよびB;AおよびC;BおよびC;またはA、BおよびCを意味してよい。
当業者ならば、上述の説明から、実施形態の広範な技術が、様々な形態で実装され得ることを理解するであろう。従って、実施形態はこれらの特定の例に関し説明されてきたが、実施形態の真の範囲は、このように限定されるべきではない。図面、明細書、および以下の特許請求の範囲を精査すれば、当業者には他の修正形態が自明なのである。
(項目1)
ネットワークコントローラと、
上記ネットワークコントローラに結合されたプロセッサであって、1または複数の基板に結合されたロジックを含むプロセッサと、を備える計算システムであって、
上記ロジックは、
不特定回数の繰り返しで制御ループが実行されると決定することと、
上記制御ループに、上記不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、上記固定回数の繰り返しでの上記制御ループの実行は並行して実施される、実行させることと
を行う、システム。
(項目2)
上記1または複数の基板に結合された上記ロジックは、上記固定回数の繰り返しでの上記制御ループの上記実行に関連した、1または複数のデータフロートークンを除去する、項目1に記載のシステム。
(項目3)
上記制御ループは、メモリアドレスからの読み込みを伴い、上記1または複数の基板に結合された上記ロジックは、上記読み込みが成功したかを示す信号を生成する、項目1に記載のシステム。
(項目4)
上記読み込みは、入力/出力(IO)メモリアドレスからである、項目3に記載のシステム。
(項目5)
上記読み込みは、仮想メモリアドレスからである、項目3に記載のシステム。
(項目6)
上記1または複数の基板に結合された上記ロジックは、
キャッシュ不能なメモリモードの異常により、上記読み込みが失敗したことを検出し、
上記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける、項目5に記載のシステム。
(項目7)
1または複数の基板と、
上記1または複数の基板に結合されたロジックであって、上記ロジックは、少なくとも部分的に構成可能ロジックまたは機能固定型ハードウェアロジックのうちの1または複数に実装される、ロジックを備え、
上記1または複数の基板に結合されたロジックは、
不特定回数の繰り返しで制御ループが実行されると決定することと、
上記制御ループに、上記不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、上記固定回数の繰り返しでの上記制御ループの実行は並行して実施される、実行させることと
を行う、半導体装置。
(項目8)
上記1または複数の基板に結合された上記ロジックは、上記固定回数の繰り返しでの上記制御ループの上記実行に関連した、1または複数のデータフロートークンを除去する、項目7に記載の半導体装置。
(項目9)
上記制御ループは、メモリアドレスからの読み込みを伴い、上記1または複数の基板に結合された上記ロジックは、上記読み込みが成功したかを示す信号を生成する、項目7に記載の半導体装置。
(項目10)
上記読み込みは、入力/出力(IO)メモリアドレスからである、項目9に記載の半導体装置。
(項目11)
上記読み込みは、仮想メモリアドレスからである、項目9に記載の半導体装置。
(項目12)
上記1または複数の基板に結合されたロジックは、
キャッシュ不能なメモリモードの異常により、上記読み込みが失敗したことを検出し、
上記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける、項目11に記載の半導体装置。
(項目13)
一組の実行可能なプログラム命令を備える少なくとも1つのコンピュータ可読記憶媒体であって、上記プログラム命令は、計算システムによって実行されると、実行可能プログラム命令セットを備える少なくとも1つのコンピュータ可読記憶媒体であって、上記プログラム命令は、計算システムによって実行されると、上記計算システムに、
不特定回数の繰り返しで制御ループが実行されると決定することと、
上記制御ループに、上記不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させることであって、上記固定回数の繰り返しでの上記制御ループの実行は並行して実施される、実行させることと
を行わせる、少なくとも1つのコンピュータ可読記憶媒体。
(項目14)
上記プログラム命令は、実行されると、上記計算システムに、上記固定回数の繰り返しでの上記制御ループの上記実行に関連した、1または複数のデータフロートークンを除去させる、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目15)
上記制御ループは、メモリアドレスからの読み込みを伴い、上記プログラム命令は、実行されると、上記計算システムに、上記読み込みが成功したかを示す信号を生成させる、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目16)
上記読み込みは、入力/出力(IO)メモリアドレスからである、項目15に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目17)
上記読み込みは、仮想メモリアドレスからである、項目15に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目18)
上記プログラム命令は、実行されると上記計算システムに、
キャッシュ不能なメモリモードの異常により、上記読み込みが失敗したことを検出させ、
上記異常に応じて、1または複数の仮想ページに変換不能と注釈を付けさせる、項目17に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目19)
不特定回数の繰り返しで制御ループが実行されると決定する段階と、
上記制御ループに、上記不特定回数の繰り返しに加え、固定回数の繰り返しを強制的に実行させる段階であって、上記固定回数の繰り返しでの上記制御ループの実行は並行して実施される、実行させる段階と、
を備える方法。
(項目20)
上記固定回数の繰り返しでの上記制御ループの上記実行に関連した、1または複数のデータフロートークンを除去する段階をさらに備える、項目19に記載の方法。
(項目21)
上記制御ループは、メモリアドレスからの読み込みを伴い、上記方法は、上記読み込みが成功したかを示す信号を生成する段階をさらに備える、項目19に記載の方法。
(項目22)
上記読み込みは、入力/出力(IO)メモリアドレスからである、項目21に記載の方法。
(項目23)
上記読み込みは、仮想メモリアドレスからである、項目21に記載の方法。
(項目24)
キャッシュ不能なメモリモードの異常により、上記読み込みが失敗したことを検出する段階と、
上記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける段階と、
をさらに備える、項目23に記載の方法。

Claims (31)

  1. ネットワークコントローラと、
    前記ネットワークコントローラに結合されたプロセッサであって、1または複数の基板に結合されたロジックを含むプロセッサと、を備え、
    前記ロジックは、
    不特定回数の繰り返しで制御ループが実行されると決定することと、
    前記不特定回数の繰り返しの少なくとも一部の後に、前記制御ループに固定回数の繰り返しを強制的に実行させることであって、前記固定回数の繰り返しを、前記不特定回数の繰り返しの、前記少なくとも一部とは異なる他の少なくとも一部と並行して実施する、実行させることと
    を行う、計算システム。
  2. 前記1または複数の基板に結合された前記ロジックは、前記固定回数の繰り返しでの前記制御ループの前記実行に関連した、1または複数のデータフロートークンを除去する、請求項1に記載の計算システム。
  3. 前記制御ループは、メモリアドレスからの読み込みを伴い、前記1または複数の基板に結合された前記ロジックは、前記読み込みが成功したかを示す信号を生成する、請求項1または2に記載の計算システム。
  4. 前記読み込みは、入力/出力(IO)メモリアドレスからである、請求項3に記載の計算システム。
  5. 前記読み込みは、仮想メモリアドレスからである、請求項3に記載の計算システム。
  6. 前記1または複数の基板に結合された前記ロジックは、
    キャッシュ不能なメモリモードの異常により、前記読み込みが失敗したことを検出し、
    前記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける、請求項5に記載の計算システム。
  7. 1または複数の基板と、
    前記1または複数の基板に結合されたロジックであって、前記ロジックは、少なくとも部分的に構成可能ロジックまたは機能固定型ハードウェアロジックのうちの1または複数に実装される、ロジックを備え、
    前記1または複数の基板に結合されたロジックは、
    不特定回数の繰り返しで制御ループが実行されると決定することと、
    前記不特定回数の繰り返しの少なくとも一部の後に、前記制御ループに固定回数の繰り返しを強制的に実行させることであって、前記固定回数の繰り返しを、前記不特定回数の繰り返しの、前記少なくとも一部とは異なる他の少なくとも一部と並行して実施する、実行させることと
    を行う、半導体装置。
  8. 前記1または複数の基板に結合された前記ロジックは、前記固定回数の繰り返しでの前記制御ループの前記実行に関連した、1または複数のデータフロートークンを除去する、請求項7に記載の半導体装置。
  9. 前記制御ループは、メモリアドレスからの読み込みを伴い、前記1または複数の基板に結合された前記ロジックは、前記読み込みが成功したかを示す信号を生成する、請求項7または8に記載の半導体装置。
  10. 前記読み込みは、入力/出力(IO)メモリアドレスからである、請求項9に記載の半導体装置。
  11. 前記読み込みは、仮想メモリアドレスからである、請求項9に記載の半導体装置。
  12. 前記1または複数の基板に結合されたロジックは、
    キャッシュ不能なメモリモードの異常により、前記読み込みが失敗したことを検出し、
    前記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける、請求項11に記載の半導体装置。
  13. 計算システムに、
    不特定回数の繰り返しで制御ループが実行されると決定することと、
    前記不特定回数の繰り返しの少なくとも一部の後に、前記制御ループに固定回数の繰り返しを強制的に実行させることであって、前記固定回数の繰り返しを、前記不特定回数の繰り返しの、前記少なくとも一部とは異なる他の少なくとも一部と並行して実施する、実行させることと
    を行わせる、プログラム。
  14. 前記計算システムに、前記固定回数の繰り返しでの前記制御ループの前記実行に関連した、1または複数のデータフロートークンを除去させる、請求項13に記載のプログラム。
  15. 前記制御ループは、メモリアドレスからの読み込みを伴い、前記プログラムは、前記読み込みが成功したかを示す信号を前記計算システムに生成させる、請求項13または14に記載のプログラム。
  16. 前記読み込みは、入力/出力(IO)メモリアドレスからである、請求項15に記載のプログラム。
  17. 前記読み込みは、仮想メモリアドレスからである、請求項15に記載のプログラム。
  18. 前記計算システムに、
    キャッシュ不能なメモリモードの異常により、前記読み込みが失敗したことを検出させ、
    前記異常に応じて、1または複数の仮想ページに変換不能と注釈を付けさせる、請求項17に記載のプログラム。
  19. 請求項13から18のいずれか一項に記載のプログラムを格納する、少なくとも1つのコンピュータ可読記憶媒体。
  20. 不特定回数の繰り返しで制御ループが実行されると決定する段階と、
    前記不特定回数の繰り返しの少なくとも一部の後に、前記制御ループに固定回数の繰り返しを強制的に実行させる段階であって、前記固定回数の繰り返しを、前記不特定回数の繰り返しの、前記少なくとも一部とは異なる他の少なくとも一部と並行して実施する、実行させる段階と、
    を備える方法。
  21. 前記固定回数の繰り返しでの前記制御ループの前記実行に関連した、1または複数のデータフロートークンを除去する段階をさらに備える、請求項20に記載の方法。
  22. 前記制御ループは、メモリアドレスからの読み込みを伴い、前記方法は、前記読み込みが成功したかを示す信号を生成する段階をさらに備える、請求項20または21に記載の方法。
  23. 前記読み込みは、入力/出力(IO)メモリアドレスからである、請求項22に記載の方法。
  24. 前記読み込みは、仮想メモリアドレスからである、請求項22に記載の方法。
  25. キャッシュ不能なメモリモードの異常により、前記読み込みが失敗したことを検出する段階と、
    前記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける段階と、
    をさらに備える、請求項24に記載の方法。
  26. 不特定回数の繰り返しで制御ループが実行されると決定する手段と、
    前記不特定回数の繰り返しの少なくとも一部の後に、前記制御ループに固定回数の繰り返しを強制的に実行させる手段であって、前記固定回数の繰り返しを、前記不特定回数の繰り返しの、前記少なくとも一部とは異なる他の少なくとも一部と並行して実施する、実行させる手段と、
    を備える半導体装置。
  27. 前記固定回数の繰り返しでの前記制御ループの前記実行に関連した、1または複数のデータフロートークンを除去する手段をさらに備える、請求項26に記載の半導体装置。
  28. 前記制御ループは、メモリアドレスからの読み込みを伴い、前記半導体装置は、前記読み込みが成功したかを示す信号を生成する手段をさらに備える、請求項26または27に記載の半導体装置。
  29. 前記読み込みは、入力/出力(IO)メモリアドレスからである、請求項28に記載の半導体装置。
  30. 前記読み込みは、仮想メモリアドレスからである、請求項28に記載の半導体装置。
  31. キャッシュ不能なメモリモードの異常により、前記読み込みが失敗したことを検出する手段と、
    前記異常に応じて、1または複数の仮想ページに変換不能と注釈を付ける手段と、
    をさらに備える、請求項30に記載の半導体装置。
JP2020065285A 2019-06-28 2020-03-31 計算システム、半導体装置、プログラムおよび方法 Active JP7446893B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/456,953 US10860301B2 (en) 2019-06-28 2019-06-28 Control speculation in dataflow graphs
US16/456,953 2019-06-28

Publications (2)

Publication Number Publication Date
JP2021009684A JP2021009684A (ja) 2021-01-28
JP7446893B2 true JP7446893B2 (ja) 2024-03-11

Family

ID=68161560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020065285A Active JP7446893B2 (ja) 2019-06-28 2020-03-31 計算システム、半導体装置、プログラムおよび方法

Country Status (5)

Country Link
US (2) US10860301B2 (ja)
EP (1) EP3757775A1 (ja)
JP (1) JP7446893B2 (ja)
KR (1) KR20210001918A (ja)
CN (1) CN112148633A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006511867A (ja) 2002-12-20 2006-04-06 インテル コーポレイション 制御スペキュレーションの性能を向上するメカニズム
US20090288075A1 (en) 2008-05-19 2009-11-19 Yonghong Song Parallelizing non-countable loops with hardware transactional memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260190B1 (en) * 1998-08-11 2001-07-10 Hewlett-Packard Company Unified compiler framework for control and data speculation with recovery code
US6539541B1 (en) * 1999-08-20 2003-03-25 Intel Corporation Method of constructing and unrolling speculatively counted loops
US6526572B1 (en) * 2000-02-09 2003-02-25 Hewlett-Packard Company Mechanism for software register renaming and load speculation in an optimizer
US6832370B1 (en) * 2000-05-09 2004-12-14 Hewlett-Packard Development, L.P. Data speculation within modulo scheduled loops
US6615403B1 (en) * 2000-06-30 2003-09-02 Intel Corporation Compare speculation in software-pipelined loops
US6986131B2 (en) * 2002-06-18 2006-01-10 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient code generation for modulo scheduled uncounted loops
EP1471421A1 (en) * 2003-04-24 2004-10-27 STMicroelectronics Limited Speculative load instruction control
WO2011079942A1 (en) * 2009-12-28 2011-07-07 Hyperion Core, Inc. Optimisation of loops and data flow sections
CN104969179B (zh) * 2013-03-15 2019-07-16 英特尔公司 用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统
US10515049B1 (en) * 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10565134B2 (en) * 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006511867A (ja) 2002-12-20 2006-04-06 インテル コーポレイション 制御スペキュレーションの性能を向上するメカニズム
US20090288075A1 (en) 2008-05-19 2009-11-19 Yonghong Song Parallelizing non-countable loops with hardware transactional memory

Also Published As

Publication number Publication date
US20190317744A1 (en) 2019-10-17
US20210165642A1 (en) 2021-06-03
EP3757775A1 (en) 2020-12-30
JP2021009684A (ja) 2021-01-28
US10860301B2 (en) 2020-12-08
CN112148633A (zh) 2020-12-29
KR20210001918A (ko) 2021-01-06
US11385873B2 (en) 2022-07-12

Similar Documents

Publication Publication Date Title
US9501279B2 (en) Local instruction loop buffer utilizing execution unit register file
US8291201B2 (en) Dynamic merging of pipeline stages in an execution pipeline to reduce power consumption
JP6526609B2 (ja) プロセッサ
US10521234B2 (en) Concurrent multiple instruction issued of non-pipelined instructions using non-pipelined operation resources in another processing core
US10891240B2 (en) Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US8356162B2 (en) Execution unit with data dependent conditional write instructions
US7921278B2 (en) Early exit processing of iterative refinement algorithm using register dependency disable
US7873816B2 (en) Pre-loading context states by inactive hardware thread in advance of context switch
US7913066B2 (en) Early exit processing of iterative refinement algorithm using register dependency disable and programmable early exit condition
JP2019145172A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
US7975172B2 (en) Redundant execution of instructions in multistage execution pipeline during unused execution cycles
JP2010097593A (ja) 命令ブロック・シーケンサ・ロジックを有するマルチ実行ユニットによる命令実行のための回路構成、集積回路デバイス、プログラム、及び方法
JP7446893B2 (ja) 計算システム、半導体装置、プログラムおよび方法
CN113918218A (zh) 学习和卸载存储器访问和计算的常见模式的技术
US9582286B2 (en) Register file management for operations using a single physical register for both source and result
US11907118B2 (en) Interleaved data conversion to change data formats
US20240211259A1 (en) Prefetching with saturation control
US20240220267A1 (en) Return address stack with branch mispredict recovery
Bonasu et al. Design of Efficient Dynamic Scheduling of RISC Processor Instructions
Lankamp Developing a reference implementation for a microgrid of microthreaded microprocessors
US20240241830A1 (en) Cache management using shared cache line storage
US20240192958A1 (en) Branch target buffer operation with auxiliary indirect cache
Yan et al. Design of Processors
TW202324147A (zh) 用以將操作的運算及資料儲存交疊之交錯式資料負載系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240123

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: 20240130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240228

R150 Certificate of patent or registration of utility model

Ref document number: 7446893

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150