JP2013541101A - マルチレベル処理のための方法、システム、および装置 - Google Patents

マルチレベル処理のための方法、システム、および装置 Download PDF

Info

Publication number
JP2013541101A
JP2013541101A JP2013533059A JP2013533059A JP2013541101A JP 2013541101 A JP2013541101 A JP 2013541101A JP 2013533059 A JP2013533059 A JP 2013533059A JP 2013533059 A JP2013533059 A JP 2013533059A JP 2013541101 A JP2013541101 A JP 2013541101A
Authority
JP
Japan
Prior art keywords
processor
lower level
level processor
processors
instruction
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.)
Pending
Application number
JP2013533059A
Other languages
English (en)
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.)
Mosaid Technologies Inc
Original Assignee
Conversant Intellectual Property Management Inc
Mosaid Technologies Inc
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 Conversant Intellectual Property Management Inc, Mosaid Technologies Inc filed Critical Conversant Intellectual Property Management Inc
Publication of JP2013541101A publication Critical patent/JP2013541101A/ja
Pending legal-status Critical Current

Links

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
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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
    • 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/30079Pipeline control instructions, e.g. multicycle NOP
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)

Abstract

同期オーバヘッドのコストを削減するためのマルチレベルプロセッサ(200)は、上位レベルプロセッサ(201)を備える。上位レベルプロセッサ(201)は、制御をとり、共有データを使用する権利及びクリティカルなセクションに入る権利をプロセッサ速度で複数の下位レベルプロセッサ(203、204...20n)のそれぞれに直接発行する。一例では、下位レベルの並列プロセッサの命令レジスタが、上位レベルプロセッサ(201)のデータメモリにマッピングされる。別の実施形態(1300)は、3つのレベルのプロセッサを組み込む。この方法は、下位レベルプロセッサの命令を上位レベルプロセッサのメモリにマッピングすること、および下位レベルプロセッサの動作を制御することを含む。この方法の変形はSIMDおよびSI>MIMDの実行を容易にする。プロセッサは電力消費を削減するためにクロック周波数を伸張する。

Description

本発明は、コンピュータデータ処理に関し、特に、マルチプロセッサデータ処理に関する。さらにより詳細には、本発明は、マルチレベルプロセッサを同期させるための装置、方法、およびシステムに関する。
単一のマイクロプロセッサのパワーは、技術およびアーキテクチャにおける最近までの向上により、容量、速度、および複雑さの継続的増加を経験してきた。この向上は、最近になって収穫逓減に達した。メモリ/プロセッサの速度ギャップの増大と、チップ内部の導体による遅延とのせいで、単一プロセッサの性能は、その限界に達し始めた。これは、コンポーネント密度がより高くなることによって引き起こされる電力管理制限および温度管理制限のせいでクロック速度レートの上昇が減速することと組み合わさる。
単一プロセッサの性能はその限界に達しつつあるが、新しいマルチメディア応用例、ますます複雑化するディジタル信号処理、気象モデリングなどの科学的応用例、および、CADツールを使用して複雑なシステムを設計するための他の工学応用例により、コンピューティングパワーに対する必要性は高まっている。
技術はまだ向上しつつあり、1チップ当たりのトランジスタをより多くより高速に生産しているが、単一プロセッサのアーキテクチャは、これらの向上を効果的に利用し続けることができない。この結果、産業界は、単一チップ中のマルチコアに切り替えてきた。産業界は最近、単一のチップ中で2つ、4つ、および8つのコアを生産してきており、ユーザは、比例した性能利得を得ることを期待している。加えて、単一チップ上のマルチプロセッサシステムを用いれば、最近まで多くの人には手が届かなかった並列処理が、今や手頃なコストで入手可能である。
マルチプロセッサシステムの性能利得はまた、主に同期オーバヘッドおよび通信オーバヘッドに起因する根本的な問題によって制限される。同期問題を解決するための以前の試みは、限られた成功しか収めてこなかった。並列プロセッサは、アプリケーションを、データを共有して同時実行できる複数のプロセスに分割し、ネットワークおよびメモリを使用して相互間で通信しなければならない。データの共有は通常、相互排除を使用して、時間において直列化される。
並列コンピューティングでは、複数のプロセッサを使用して得られる理論的な最大高速化を予測するのに、アムダールの法則がしばしば使用される。並列コンピューティングにおける、複数のプロセッサを使用したプログラムの高速化は、プログラムの逐次的な部分に必要な時間よって制限される。例えば、プログラムが、単一のプロセッサコアを使用すると20時間を要し、1時間の特定部分は並列化できないが、見込みのある残りの19時間(95%)の部分は並列化できる場合は、何個のプロセッサをこのプログラムの並列化実行に充てるかにかかわらず、最小実行時間は、このクリティカルな1時間よりも短くはなり得ない。したがって、高速化は20倍までに制限される。
最も楽観的な結論は、当然ながら、コアが増加するのに伴って効率的に働く信頼性のある並列ソフトウェアをどのように作るかを、誰かが見つけ出すことであると言われてきた。これは、次の30年のマイクロプロセッサハードウェアを構築するための、切望される基礎を提供するであろう。1チップ当たりのトランジスタの数が1〜2年ごとに定例的に倍増するのが止まった(ムーアの法則の恐ろしい終わり)としても、革新的なパッケージングにより、複数のチップから経済的なシステムを生み出すことができて、消費者が長く享受してきた性能利得を維持することができるかもしれない。
マルチプロセッサシステムでは、特別なアトミック命令を使用して同期が実施される。このアトミック命令により、各プロセッサは、共有データアイテムを使用する権利またはクリティカルなコードセクションに入る権利を有する前に、ロックと呼ばれる特別なメモリ位置を獲得することができる。これは、ロックを獲得しようと競合するN個のプロセッサ全てについてネットワークまたはバスを使用すること、および他の全てのプロセッサについて待機することを伴う。待機中、プロセッサは、タイトなループ中でスピンし、時間および電力を浪費する。プロセッサは、ロックを獲得する度に、終了すればロックを解放しなければならない。これは、各ロックを獲得および解放するためにバスまたはネットワークを使用してロック位置を無効化することを伴う。
SGI Origin 3000システム中の32プロセッサの同期の時間コストは、232000サイクルかかる時間コストである。このサイクルの間に、32個のプロセッサは2200万FLOPSを実行できたであろうし、またこのサイクルは、従来の同期がシステム性能を損なうことの明確な表れである。スヌーピングのためにチップ外のネットワークを使用する従来のマルチプロセッサのスケーラビリティに対するロックの影響は、8個のプロセッサを使用する場合は約6までしかスケールしないが、32個のプロセッサを使用するときは、スケーラビリティは1に落ちる。チップ内に高速ネットワークを有するマルチプロセッサは、32個のプロセッサを使用するとき、約12までしかスケールしない。
従来のマルチコアプロセッサは、同期のために、load-linked命令およびそれに続くstore conditional命令という、特別なアトミック命令を使用する。LL(load-linked)命令が、データのブロックをキャッシュにロードし、次いで、後続のstore conditional(SC)命令が、同じブロックへの書込みを試みる。これは、前のLL以降にブロックが参照されていない場合にのみ成功する。LLとSCとの対の間に別のプロセッサからブロックへの参照があれば、それはSCを失敗させる。このための同期コストは、バスまたはネットワークを使用するレイテンシと、それに加えて、プロセッサが失敗する度に、プロセッサがSCの成功を待機してタイトなループ中でスピンしながら繰り返しバスを使用してキャッシュからブロックをロードしなければならず(無効化のため)、時間および電力を浪費することである。
この問題を解決する手法の1つは、RAMP(Research Accelerator for Multiple Processors)リサーチプロジェクトであった。RAMPは、大規模な並列コンピュータのための効果的なソフトウェアを開発しようとして、フィールドプログラマブルゲートアレイ(FPGA)を使用して大規模な超並列プロセッサ(MPP、Massive Parallel Processor)(1000個までのプロセッサ)を構築することを提案する。この方法に伴う問題は、大規模なマルチプロセッサシステムをエミュレートするが、その挙動を正確に表さないことである。例えば、RAMPが現実のプロセッサを使用するときは、プロセッサメモリ速度比率が非常に大きくなって、膨大な数のプロセッサの性能利得の制限を引き起こし、メモリギャップによる大きいレイテンシを隠す必要がある。FPGAエミュレーションは、現実のシステムに対して100倍未満の減速を達成する。したがって、現実の大規模な並列処理システムに使用することはできない。
並列処理性能を改善するための別の試みとして、トランザクショナルメモリ(TM)が開発された。トランザクショナルメモリは、大きいコードのトランザクションをロックなしでアトミックに実行することによって、同期オーバヘッドを低減しようとするものである。トランザクションが失敗した場合、トランザクションはコミットしないことになり、トランザクションをサポートするオーバヘッドが浪費される。トランザクショナルメモリシステムに伴う重要な課題は、原子性、一貫性、および独立性のプロパティを守らせるオーバヘッドを低減することである。ハードウェアTMの制限は、ハードウェアバッファリングがシステムをメモリ階層の下位レベルで溢れ(spill)状態に追い込むことに起因する。ソフトウェアTMは、読取りと書込みのセットを追跡するためにメタデータを操作するようにされるときに追加の制限を有し、追加の命令が実行されるとき、これらの命令がメモリシステム中のオーバヘッドおよび電力消費を増大させる。
上述のどの方法も、スケーラビリティの問題に効果的に対処しない。RAMPは、現実の高速プロセッサなら何千もの並列命令の実行を必要とするであろう大きいメモリレイテンシを隠すために、プロセッサを低速化する。TMは、大きいコードチャンクが並列で実行されるのを制限し、トランザクション間で一致を有することに依存し、したがって、細粒度並列性を妨げ、最も遅いトランザクションの性能にシステム性能が制限されるようにする。
最近、研究者らは、並列アプリケーションの直列部分の性能、またクリティカルなセクションの性能も向上させるために、非対称型チップマルチプロセッサ(ACM、Asymmetric Chip Multiprocessor)を提案した。プロセッサごとのロックを使用してクリティカルなセクション中のコードを実行するのではなく、個々のプロセッサが、クリティカルなセクションを実行するために大きいコア(特別な強力プロセッサ)に対する要求を送り、次いで、要求元プロセッサは実行を再開することができる。この方法は、各プロセッサから大きいコアプロセッサにメッセージを送受信するための、追加のオーバヘッドを必要とする。バスを使用して、クリティカルなセクション中のデータおよびコードを大きいプロセッサに転送しなければならず、余分なオーバヘッドが追加される。この方法は、直列方式で一度に1つのクリティカルなセクションのコードしか実行することができず、複数の並行プロセッサグループのクリティカルなセクション同士が異なる場合であっても、これらのグループがそのクリティカルなセクション中で動作するのを可能にすることができない。全てのプロセッサは、大きいプロセッサを使用する権利を得るために共に競合し、したがって、一度に1つのプロセッサのみが成功し、他のプロセッサは待機しなければならない。
ACMによる改善は、主に、大きいプロセッサが全てのプロセッサよりも高速であり直列コードを高速化できることからくるものである。制限の1つは、このより大きいプロセッサがより多くの電力を消費し、実装すべきシリコンの点でより多くのコストがかかることである。ACMの別の制限は、他の全てのプロセッサが大きいプロセッサを使用してそれらの直列コードを実行するとき、大きいプロセッサのキャッシュが、空間局所性のない種々のプログラム領域からのコードおよびデータを記憶し、エビクションによるキャッシュミスレートの増加を引き起こすことである。
従来のマルチプロセッサシステムは、異なるプロセッサが共有データにアクセスしようとするときまたはクリティカルなコードセクションに入ろうとするときに、ロックを使用して、異なるプロセッサ間で同期をとる。共有データアイテムまたはクリティカルなセクションはそれぞれ、ロックと呼ばれるメモリ位置を使用する。ロックは、レジスタの内容をスワップすることによって獲得しなければならない。レジスタは、ロックの内容によって1にセットされる。レジスタが0を返す場合は、ロックはフリーであり、プロセッサは、レジスタの値を使用して、ロックをアトミックに1にセットする。スワップがレジスタ中の1を返す場合は、ロックは別のプロセッサによって使用されており、プロセッサは、スワップの成功を待機してループ中でスピンしなければならない。
以下は、従来のマルチプロセッサにおける同期のためのコードである。
上のコードでは、各プロセッサが、バスまたはネットワークを使用してロックに書き込む必要がある。というのは、ロックは共有変数であり、他のプロセッサのキャッシュ中で更新または無効化されなければならないからである。プロセッサは、クリティカルなセクション中のコードの実行を終了してロックに0を書き込むとき、ネットワークを使用しなければならない。これは、プロセッサがバスまたはネットワークをもう1回使用することを必要とし、N個のプロセッサの場合、費やされるのは以下のとおりとなる。
2N+1+2(N-1)+...2+1すなわち
(2i+1)(i=0〜N)の合計 = 2N+N×Nバスサイクル
上式は、最悪の条件を与える。最良の条件は、2Nバスサイクルである。
図1は、3つのプロセッサが時間T0でバスを使用して共有変数を獲得しようとするのを示すブロック図100である。プロセッサPNが、T0でロックを獲得する第1のプロセッサであり、P1、P0は待機している。PNはT1でロックを解放し、すぐにP1がロックを獲得し、P0は待機している。時間T2で、P1はロックを解放し、P0が最後にロックを獲得する。この例は、最良の可能な条件、すなわち2Nを表す。
本明細書に述べるマルチレベル処理は、各プロセッサが同期に関与する必要なしに、上位レベルプロセッサが制御をとって、共有データを使用する権利またはクリティカルなセクションに入る権利をプロセッサ速度で各プロセッサに直接に発行するようにすることによって、同期オーバヘッドのコストを削減する。下位レベルの並列プロセッサの命令レジスタは、コピーまたは転送なしに上位レベルプロセッサのデータメモリにマッピングされ、したがって、上位レベルプロセッサは、低レベルの並列プロセッサによって関与されることも意識されることもなく、各並列プロセッサの命令を読み取ることおよび変更することができる。述べるマルチレベル処理を使用するシステムは、100サイクルのバスを使用する従来の32マルチプロセッサシステムの場合の同期待機時間を、32×32×100サイクルからわずか32×1サイクルに短縮し、3200倍の利得をもたらす。加えて、このシステムは、異なる共有データアイテムへの同時アクセスと、共有データへのアクセス権を待機する間に電力削減のために各プロセッサを停止する能力とを可能にする。述べる実施形態は、SIMDへの効果的な実装を用いてベクトル演算をサポートするための容易な方法を提供する。このシステムは、高位レベルプロセッサが逐次コードから並列コードを生成するようにすることによって、並列プログラミングをプログラマにとってより単純なものにする。これは、命令フェッチのための帯域幅要件を低減する。下位レベルプロセッサがさらに別の下位レベル並列プロセッサへの同期プロセッサとして使用されるとき、このシステムは、マルチプロセッサのための無限のスケーラビリティをもたらすことになる。
本発明の特徴および利点は、明確にするための添付の図面と共に読まれる後続の詳細な記述から、明らかになるであろう。図では、下位レベルに3つのプロセッサしか示されていないが、実際の数は3をはるかに超えるであろうことは理解される。
バスを使用して共有変数を獲得しようとする3つの従来のプロセッサのブロック図である。 本発明の一実施形態を組み込むシステムのブロック図である。 本発明の図2の実施形態を組み込むシステムの別の態様を例示するブロック図である。 バスを例示する、本発明の図2の実施形態を組み込むシステムのブロック図である。 図2の実施形態の一部の詳細な設計の概略図である。 図2の実施形態の動作を例示するキューのブロック図である。 本発明を組み込む方法のフローチャートである。 本発明の図2の実施形態の別の部分のブロック図である。 本発明の別の実施形態のブロック図である。 本発明の図9の実施形態の一部のブロック図である。 本発明の第3の実施形態のブロック図である。 本発明の第4の実施形態のブロック図である。 本発明の第5の実施形態のブロック図である。
以下の実施形態は、同期を含めた並列処理の根本的な問題に対処することに焦点を合わせたものである。現在および将来の大規模並列システムに適した解決法を有することが望ましい。実施形態は、ロックの必要性をなくし、上位レベルプロセッサを介した同期を提供する。上位レベルプロセッサは、各プロセッサが1つのロックを求めて競合する必要なしに、共有データを使用する権利またはクリティカルなセクションに入る権利をプロセッサ速度で各プロセッサに直接に発行する制御をとる。同期のオーバヘッドは、共有データを使用する権利については1クロックに低減される。ロックを用いる従来の同期はN2バスサイクルかかるが、対照的に、本発明のマルチレベル処理ではNプロセッササイクルである。100サイクルのバスを使用する従来の32マルチプロセッサシステムの場合、同期は32×32×100サイクルかかるが、対照的に、マルチレベル処理の場合は、わずか32×1サイクルであり、3200倍の利得をもたらす。
図2は、本発明の一実施形態を組み込むシステム200のブロック図である。この実施形態は、以下でSyncPまたは「同期プロセッサ」と呼ばれる、高位レベルプロセッサ201を使用する。高位レベルプロセッサ201は、下位レベルプロセッサの命令レジスタを高位レベルプロセッサのデータメモリにマッピングすることによって、レジスタを物理的に複製することもしくはレジスタをコピーすることなしに、またはこれらの命令を高位レベルプロセッサに転送することなしに、下位レベルプロセッサ中の全ての命令を見たり監視したりする能力を有する。
図2では、マルチレベルプロセッサ201(SyncP)が専用バス202を使用してどのように下位レベルプロセッサの全ての命令をそのデータメモリ211にマッピングするかを例示する。これにより、SyncP201は、下位レベルプロセッサの任意の命令レジスタがSyncP201自体のメモリであるかのように、その命令レジスタにアクセスすることができる。第1の下位レベルプロセッサ203は、その命令レジスタ213がSyncP201のデータメモリ位置210にマッピングされる。第2の下位レベルプロセッサ204のレジスタ214は、データメモリ位置215にマッピングする。同様にして、全てのプロセッサ(図示せず)は、201中のデータメモリ位置にマッピングする。最後に、最後の下位レベルプロセッサ206のレジスタ216は、データメモリ位置220にマッピングする。
下位レベルプロセッサ203、204〜206の命令を監視することで、上位レベルプロセッサ201は、下位レベルプロセッサが実行する命令とこれらの命令を実行する時点とを制御することができる。これは、同期要件に基づいて任意の時点で所望の命令を下位レベルプロセッサ203、204〜206の命令レジスタ213、214〜216に注入することによって可能である。低レベルの並列プロセッサ203、204〜206の異なる命令レジスタ213、214〜216を上位レベルのSyncP201のデータメモリ211にマッピングするための実装の詳細については、後に実装のセクションで提供する。SyncP201によって下位レベルプロセッサ203、204〜206から選択された下位レベルプロセッサは、停止命令を実行する。停止命令により、この下位レベルプロセッサは、実行を停止し、SyncP201がこの下位レベルプロセッサの命令を読み取ってから所望の命令を挿入することによって実行の制御をとるのを待機する。
SyncP201はまた、各下位レベルプロセッサ203、204〜206のクロック速度を制御することができ、それにより、SyncPバス202を使用して特定のデータコードを状態機械に送ることによって下位レベルプロセッサの命令レジスタに対して確実に読み書きできるようにすることができる。状態機械は、クロックを生成するか、または、各プロセッサのクロック制御をSyncP201のデータメモリにマッピングすることができる。SyncP201は、下位プロセッサのクロックを生成するために状態機械が使用する値を、データメモリ211に書き込む。この機能はマルチレベル処理同期では必要とされないことに留意するのは重要である。というのは、下位レベルプロセッサ203、204〜206は、停止命令を使用し、211にマッピングされた命令レジスタに対してSyncP201が読み書きするのに必要なだけの時間をSyncP201に与えるからである。このクロック生成機能は、SIMD(Single Instruction Multiple Data)およびSI>MIMDの場合のみである。SyncPが下位プロセッサ203、204〜206の命令レジスタに対して読み書きできるように下位プロセッサのクロックを同期させるためのよりずっと単純な方法も可能であり、技術および実装によって決まる。
この実施形態は、高レベルプロセッサSyncP201を使用して、命令をそのデータメモリ211にマッピングすることによって下位レベルプロセッサ203、204〜206の命令レジスタの並列処理を継続的に監視する。SyncP201についてのコードは以下のとおりである。
このコードはSyncP201中でのみ実行され、その間、N個の下位レベルプロセッサ203、204〜206は、それらのコードを実行する。
この実施形態では、同期コードは、下位レベルプロセッサ203、204〜206が関与することも意識することもなしに、バックグラウンドで実行される。SyncP201は、要求している命令に直接書き込むことができ、クリティカルなセクションに入る権利を与えることができる。一方、同じ変数Xの使用を要求している他の下位レベルプロセッサ203、204〜206は、待機する。要求命令はそれらの命令レジスタ中に留まり、この間に、プロセッサ203、204〜206のパイプラインは、それらのクロックサイクルを伸張することによって、または命令を停止に変換することによって、停止される。クロックを伸張する目的は、クロックを遅くして電力を節約することである。命令を停止することおよびプロセッサクロックを伸張することの詳細については、後に電力節約機能のセクションで説明する。
下位プロセッサ203、204〜206から選択されたプロセッサが、クリティカルなセクション中のコードの実行を完了したとき、または共有変数Xの使用を終了したとき、このプロセッサは、Xの要求の終了をSyncP201に知らせるために、停止機能を有する別の命令を使用する。SyncP201は、これを読み取ると、停止命令を除去し、下位レベルプロセッサ203、204〜206のうちの選択された1つがそのコードの残りの実行を継続できるようにする。
全てのN個の要求元プロセッサがXを使用するのに足りる時間は、およそNサイクルのみである。
図3は、共有変数の使用権を、PN306、P1 304、次いでP0 303に対して3クロックサイクルでアサートするためにSyncP301が使用する方法300を示す図である。
図3では、クリティカルなセクション中のコードを実行するのにかかる時間は無視されることに留意されたい。
この実施形態によって達成される、同期時間の利得を計算するために、以下を仮定する。
プロセッサ数=10、および、バスサイクル時間=10プロセッササイクル。
従来のマルチプロセッサ同期は、2N〜2N+N×Nかかる。
すなわち、2×10×10=200〜(200+1000)サイクル。
マルチレベル同期は、N=10サイクルしかかからない。
利得範囲は、20〜120倍である。
多数のプロセッサを考えると、かつ何百サイクルものネットワークを使用すると、利得は何千倍にもなる。この利得は、同期時間の利得であって性能全体の利得ではないことに留意するのは重要である。
高レベルプロセッサ301が下位レベルプロセッサ303、304〜306の命令に対して読み書きできることは、以下の重要な利点を有する。
1. ロックが解放されるのを待機して各プロセッサ303、304〜306がスピンする必要がないので、電力が削減される。各下位レベルプロセッサ303、304〜306は、停止命令を使用するか、またはそのクロックを伸張する。
2. SyncP301は、下位レベルプロセッサ303、304〜306中の全ての命令を監視し、したがって、複数の共有変数を同時に使用する権利を同時に発行することができる。一方、従来のマルチプロセッサは、共有バスに依拠して、他のプロセッサからの他の読取命令または書込命令によって割込みできないアトミックな操作を用いて同期をサポートする。
3. SyncP301は、全ての下位レベルプロセッサ303、304〜306に対して1つの命令を挿入することができ、したがって、単純で効果的なSIMDを実装してベクトル演算をサポートする。
4. SyncP301は、間接データを全ての低レベル命令に書き込むことができ、それにより、各プロセッサ303、304〜306は、キャッシュまたはメモリからどんな命令もフェッチする必要なしに、データの1つのフィールドを使用してマイクロコードROMに索引付けして、異なる命令を実行することになる。
処理システムの実施形態は、特別な監視バスを使用して、任意の下位レベル処理命令レジスタの内容を読み書きする。図4は、特別なバス402を使用してSyncP401がN個の下位レベルプロセッサ403、404〜406に接続されるのを示すブロック図400である。
バス402は、アドレスバス402aを含む。アドレスバス402aは、SyncP401がN個の下位レベルプロセッサ403、404〜406のどの命令レジスタにアクセスしたいかを定義する。アドレスバス402aはlogN本のワイヤを有し、N=32の場合、アドレスバス402aは、5本のアドレスラインしか有さない。プロセッサP0 403の命令レジスタ、IR0 413は、アドレス=0によってアクセスされ、プロセッサP1 404のIR1 414は、アドレス=1によってアクセスされ、以下同様であり、プロセッサPN406のIRN416は、アドレス=Nによってアクセスされる。
バス402は、データバス402dも含む。データバス402dは、アクセスされる低レベルの命令レジスタの内容を含む。64ビット命令の場合、データバス402dの幅は64ビットである。SysncP401は、アクセスされる命令レジスタからデータを読み取ったとき、その値を命令コードの値と比較することになる。値が、共有変数Xにアクセスする要求としての同期関連命令のコードと一致する場合は、SyncP401は、アクセスされる命令レジスタ中に特別な命令を書き込むことによって、この要求を許可することを決定することができる。この特別な命令は、低レベルプロセッサ403、404〜406が共有変数へのアクセス権を有することができるようにする。
バス402は、低レベルプロセッサ403、404〜406のそれぞれの命令レジスタ413、414〜416に対する読取り/書込みのための、制御ライン(402c)も含む。これは1ビットラインであり、この値=0のときは、SyncP401は読取りを実施し、この値=1のときは、SyncP401は書込みを実施する。
下位レベルプロセッサ403、404〜406の命令レジスタ413、414〜416のアドレスマッピングは、SyncP401のデータメモリマップ中のSyncP401アドレス0で開始する必要はない。より高いアドレスにマッピングする必要がある場合は、命令レジスタ413、414〜416にアクセスするときに、SyncP401のより高いアドレスラインが1にセットされる。
例えば、命令レジスタ413、414〜416にアクセスするとき、A10を無視した場合は、SyncP401のデータメモリ上でIR0にアクセスするための開始アドレスは、0と1024のいずれかとなる。
命令レジスタ413、414〜416に対するメモリ位置はプロセッサ速度でアクセスされることに留意するのは重要である。というのは、これらのメモリ位置は、下位レベルプロセッサ403、404〜406の命令レジスタの速度を有し、システムに対してどんな物理空間も電力消費もかからないからである。
下位レベルプロセッサ403、404〜406のIR413、414〜416にアクセスするのに使用される命令は、以下を含む。
LOAD R4, 1024(R0); - P0 403のIR413が位置1024にマッピングすると仮定した場合に、P0 403の命令レジスタ413を読み取る
STORE R7, 1028(R0); - P1 404のIR414が位置1028にマッピングすると仮定した場合に、P1 404の命令レジスタ414に書き込む
ロード命令は、1024+におけるメモリ位置の値と、R0の内容とを、SyncP401のレジスタR4に転送する。R0の値は、通常は0に設定され、1024は、下位レベルプロセッサ403、404〜406の命令レジスタ413、414〜416をマッピングする開始アドレスである。この例では、図5のアドレスバス402aは、1024に設定されることになり、データバス402dは、P0のIRの値を有することになり、制御バス402cは、読取りのためにREAD/WRITE=0を有することになる。
ストア命令は、SyncP401が、SyncP401のレジスタR7中で設定された値をP1 404の命令レジスタ414に書き込むことができるようにする。この値は、共有変数Xへのアクセス権を与える命令である場合がある。この例では、図5のアドレスバス402aは、1028に設定されることになり、データバス402dは、R7の値を有することになり、制御バス402cは、書込みのためにREAD/WRITE=1を有することになる。
図5は、SyncP401がどのようにいずれかの下位レベルプロセッサ403、404〜406にアクセスしてその命令レジスタに対して読取りまたは書込みを行うことができるかに関する詳細な設計を示す概略図500である。SyncPのバス402aからのアドレスがデコーダ503によってデコードされて、下位レベルプロセッサ403、404〜406のN個の命令レジスタ504から1つの命令レジスタ504a〜dが選択される。デコーダ出力の信号IRi504cがアクティブであると仮定し、下位レベルプロセッサ404がアクセスされて、その命令レジスタ414に対して読取りまたは書込みが行われる。フリップフロップ506は、下位レベルプロセッサ404の、アクセスされる命令レジスタ414の1ビットである。ロード命令のときは、SyncP-R/W信号=0であり、インバータが信号SyncP_R/W=0に接続されるので、上のANDゲート506aがイネーブルになる。ゲート506aがイネーブルのとき、命令レジスタの内容を各フリップフロップに書き戻すことによって命令レジスタ中の同じ命令が維持される。また、読取りのときは、信号IRiがアクティブであるため、下のANDゲート506bがイネーブルになり、これにより、各フリップフロップの内容がトライステートバッファの中を通ってSyncPデータバス402dに行くことができる。
ストア動作のときは、信号IRiがアクティブであり、SyncP_R/W=1であり、これにより、真ん中のAND506cゲートがイネーブルになり、上位レベルのSyncPからのデータ「DiSyncP」がフリップフロップに記憶される。これは、下位レベルプロセッサ404によって実行されるようにSyncP401によって書き込まれる、新しい命令である。
SyncP401は、下位レベルプロセッサ403、404〜406の命令を監視して、これらの命令をグループに分けることができる。各グループは、1つの共有変数を求めて競合する。図6は、SyncP401がキューを使用して種々の共有変数を記憶するのを示す図600である。図6には、バリアイベントがP3とP14との間で共有され、変数XがP1とP11との間で共有され、YがP5とP6との間で共有されるのを示す。
複数の変数の同期は、以下のステップによって達成される。
1. SyncP401は、下位レベルプロセッサ403、404〜406の全ての命令を任意の順序で読み取る。
2. 下位レベルプロセッサ403、404〜406のうちの1つからの、共有変数の使用要求をSyncP401が見つけた場合、SyncP401は、この変数用に確保されたキューに、要求元のプロセッサ番号を記憶する。例えば、変数Xには、アクセスXキューが使用される。P11が、Xを要求していると判明した第1のプロセッサである(要求の順に配列されるのではない)。
3. SyncP401は、命令レジスタの読取りを継続し、共有変数の使用を求める種々の要求をソートする。
4. キューを有する共有変数、例えばXを、別のプロセッサが要求している場合、SyncP401は、図6のP1のように、プロセッサ番号をXのキューに追加する。
5. 各キューにつき、SyncP401は、マルチレベル処理の同期のセクションで上に提供したのと同じコードを使用して、要求元プロセッサを許可する。SyncPは、スーパースケーラアーキテクチャを使用するか、または、シングルイシューでは、各グループの必要コードを組み合わせることによって逐次コードを使用する。同期は、プロセッサ速度で実行される命令をほとんど使用しないので、逐次コードの性能は許容可能である。
図7は、複数の共有変数を同時に管理するのに使用される方法を示すフローチャート700である。SyncP401が種々のキュー中の要求をソートした後、SyncP401は、各要求元プロセッサにアクセスを与えることで開始する。SyncP401は、アクセスのインタリーブを使用して、複数の下位レベルプロセッサが異なる共有変数に同時にアクセスするのを同時に可能にする。SyncP401は、単純な逐次コードを使用してこれらのアクセスを許可する。インタリーブにより、SyncPが逐次コードおよび単一のバスを使用して下位レベルプロセッサの命令にアクセスしている間に異なる共有変数に使用される同期の時間を重ねることが可能になる。
図7に示すように、第1の列P2が、初めに、Xを最初に使用する許可を得る。次いで、P5が、連続してYを使用する許可を得る。XおよびYにアクセスする同期時間は、重なり、並行して発生する。P2がXの使用を終了すると、P2は停止命令をアサートする。停止命令は、SyncP401によって読み取られ、すぐにXの使用権をP8に与え、また、P2が継続できるようにもする。この図では、P2とP8がXを共有しており、両方ともXを同時に要求しており、P2がXを使用するとき、P8は、SyncP401がXの使用許可をP8に与えるまで停止されると仮定する。同様にして、P1とP5はYを共有し、P7とP3はZを共有する。
下位レベルプロセッサ403、404〜406は、共有変数の使用を要求するときまたは使用を終了したとき、特別な停止命令を使用する。下位レベルプロセッサ403、404〜406のパイプラインのうちの1つの制御回路は、状態機械を使用する。この状態機械は、停止命令を実行してパイプラインを停止させるとき、制御回路を同じ状態に留まらせる。パイプラインは、SyncP401によって停止命令が除去されて異なる命令が書き込まれたときにのみ、その通常の命令実行を継続する。
図8は、下位レベルプロセッサ403、404〜406のうちの1つがどのように停止命令の結果としてクロックを伸張することによってその実行を停止するかに関するブロック図800である。命令レジスタ801が停止命令を含み、次いで、デコーダ出力信号がアクティブになり1に等しくなる。デコーダ802の出力に接続されたORゲートが、出力=1を生成して、フリップフロップ803の出力およびクロック信号を1に等しくすることになる。命令が停止でない場合は、フリップフロップ803の出力は、クロック信号の逆数からのフィードバックにより2倍クロックごとにトグルし、フリップフロップ803の2倍クロックの周波数の2分の1で、必要とされるクロックを生成する。
任意の回路中の電力消費は、クロックの周波数に比例する。新しいプロセッサの高速化は、チップ内部の電力管理が困難なせいで、これらのプロセッサの設計における問題を生じる。許可を待機する間にプロセッサを停止することは、電力を削減する助けとなる。従来のプロセッサはロックを使用するが、従来のプロセッサは、ロックが解放されるのを待機して、スピンし続けて電力を消費する。
パイプラインのクロックを伸張することによってパイプラインを停止させるこの機能は、どんな従来のプロセッサのための機能としても使用できることに留意するのは重要である。
現代のプロセッサは、SIMD命令セットを提供して、ベクトル演算の性能を改善する。例えば、IntelのNehalem(登録商標)およびIntelのXeon(登録商標)プロセッサは、SSE(ストリーミングSIMD拡張命令)命令セットをサポートするが、この命令セットは、4つの32ビット変数を保持することのできる128ビットレジスタを提供する。
SSE拡張命令は、追加の命令をISAに加えるので、アーキテクチャを複雑にする。SSE拡張命令は、追加のパイプラインステージを加え、追加の命令のオーバヘッドを使用してレジスタに対するデータのパックおよびアンパックをサポートする。
マルチレベル処理は、設計への追加の複雑さなしに、SIMD機能を提供する。SyncP401が下位レベルプロセッサの命令レジスタに書き込むことができることで、SyncP401は、下位プロセッサ403、404〜406の全ての命令レジスタに対する書込み信号をイネーブルにすることによって、全ての命令レジスタに1つの命令を書き込むことができる。マルチレベル処理では、SIMDは、複数の異なるデータに作用する同じ多重命令として実装され、これは、SIMD実装における異なる効果的な方法である。各下位レベルプロセッサは、命令がSIMDであることを知らない。したがって、IntelのSSE実装と比較して、これをサポートするのに複雑さを追加する必要はない。また、従来の命令によってアクセスされるのと同じレジスタをそのデータとして使用するので、レジスタに対してデータをパックまたはアンパックする必要もない。マルチレベルでは、下位レベルプロセッサ中の1つのレジスタに対して、複数のデータ要素をパックすることが可能である。128ビットレジスタを使用する8つの下位レベルプロセッサが、各レジスタ中で4つの要素をパックする場合、IntelのSSEのベクトル長がわずか4であるのと比較して、ベクトル長32を生じる。32個のプロセッサが16ビット要素のデータをパックする場合、1サイクルの動作で実行される、32×8=256要素のベクトル長を生じることになる。CRAYのような長いベクトルをサポートしたベクトルプロセッサは、構築するのに非常にコストがかかる。
図9は、SyncP901が全ての下位レベルプロセッサ902、903〜904の命令レジスタ912、913〜914に命令ADDV R1,R2,R3を書き込むことのブロック図900である。この命令は、各下位レベルプロセッサ902、903〜904によって実行されたとき、各プロセッサ902、903〜904中のR2およびR3の内容に対する追加を実施する。しかし、各プロセッサ902、903〜904中のR2およびR3は、ベクトルアレイ中の異なる要素の値を保持する。例えば、ベクトルAをベクトルBに追加する場合、最初にLOADV R2,0(R5)命令が実行され、各下位レベルプロセッサ902、903〜904中のR5は、アレイA中の異なる要素のアドレスになるように設定される。このSIMD命令を実行すると、Aの要素が、種々のプロセッサのR2レジスタに転送される。
以下のコードは、マルチレベル処理においてSIMDを使用して実施されるベクトル演算を説明する。
SyncP901は、図10に示すそのデータバス902dを使用して、そのデータバスの最上位ビットDNを1に等しくすることによって、全ての下位レベルプロセッサ902、903〜904のそれぞれの命令レジスタ912、913〜914に書き込む。SIMDでない他のどんな命令の場合も、DNビットは0にセットされる。
図10は、マルチレベル処理におけるSIMDの実装を示すブロック図1000である。命令レジスタのうちの1つを選択するのに使用される、デコーダ1001の出力1002の全ては、ORゲート1003、1004〜1005に接続され、ORゲートの他方の入力はDNである。全ての下位レベルプロセッサの全ての命令レジスタに対する全てのORゲートの出力は、DN=1の結果として、1にセットされる。図9に戻ると、前に説明したように、R/W=1のとき、SyncP901からの全ての入力データDN-1〜D0は、全ての下位レベルプロセッサ902、903〜904の命令レジスタ912、913〜914に同時に書き込まれる。次いで、各下位レベルプロセッサ902、903〜904は、それらの命令レジスタに書き込まれた同じ命令の並列実行を開始する。図には、実行された命令が、R2の内容をR3に追加し、結果をベクトルとしてR1に記憶するのを示す。
各プロセッサ902、903〜904のR2およびR3中の要素は、要素のベクトルを形成する。要素は、さらに別のLOADDV SIMD命令を用いてメモリからロードすることができる。
マルチレベル処理には、もう1つの重要な機能がある。これは、逐次命令が、複数のデータストリーム中で働く複数の命令を生成できるようにするものである。SyncP901は、そのデータをフィールドに分割し、次いで、各フィールドは、実行される準備のできたデコード済み命令のリストを記憶するROMへのアドレスとして使用される。マイクロコードROMを使用することで、IntelのPentium4(登録商標)におけるような、パイプラインを機能停止(stall)なく維持するためのデコードステージの必要がなくなる。
図11は、SI>MIMDをサポートするシステムを示すブロック図1100である。SyncP1101のデータバス1102dは、64ビットであるものとし、8つの別々のフィールドに分割され、各フィールドは、対応する下位レベルプロセッサ1103、1104〜1105のそれぞれのROM1113、1114〜1116にアクセスするためのアドレスとして使用される。この例では、P0 1103は、SyncPデータのD7...D0を使用して、256個の位置を有するそのROM1113にアドレスする。SyncP1101がより長いデータを有する場合、各ROM1113、1114〜1116は、コード化済み命令のより大きい記憶域を有することができる。10ビットアドレスが、1024個の異なるデコード済み命令にアクセスすることになる。
図11にはまた、SyncP1101のデータD7〜D0が、P0に対するADD命令を生成したP0 1103のROM1113へのアドレスとして使用されるのを示す。SyncPデータD15〜D8は、SUB命令を生成したP1 1104のROM1114へのアドレスである。図11に示すように、これらは、SyncP1101が1つの命令を実行することから得られる、並列実行される異なる命令であり、この1つの命令は、データを複数のアドレスとして使用して、いくつかのROM1113、1114〜1116からの複数の異なる命令にアクセスする。
このSI>MIMD方法には、以下を含めた複数の利点がある。
1. 単一逐次命令を使用して複数のプロセッサ1103、1104〜1106のための並列コードを生成するので、並列コードを記述するのが容易になる。
2. 単一の命令から生成されたコード部分には、同期は必要ない。
3. 下位レベルプロセッサ1103、1104〜1105は、命令をキャッシュからフェッチしたりメモリを遅くしたりする必要なしに、それらのROM1113、1114〜1116からそれぞれ直接に命令を実行する。したがって、電力および複雑さが低減する。
4. 命令は、ROM1113、1114〜1116からプロセッサ速度で実行される。これにより、プロセッサ1103、1104〜1105への命令送達の性能および帯域幅が向上する。
5. 下位レベルプロセッサ1103、1104〜1106のための、コストがかかり複雑な命令キャッシュまたは命令メモリの必要性を低減するかまたはなくすことができる。
図12は、SyncP1101がどのように下位レベルプロセッサ1103、1104〜1106への種々の命令の発行を制御するかを示す図1200である。マルチプレクサ1201を使用して、SyncP1101によって下位レベルの処理に供給されるデータのタイプに基づいて、下位レベルプロセッサ1103、1104〜1106のIRに対する種々のタイプの命令が選択される。マルチプレクサの選択ラインが、SyncP1101のデータラインのいくつかに接続され、SyncP1101が実施する特定の動作によって制御される。例えば、SIMDでは、SyncP1101のビットDNが1にセットされる。
以下のような種々のマルチプレクサ選択がある。
1. SyncP1101が命令の書込みおよび変更を行う必要がない場合は、下位レベルの処理は、命令レジスタ中で同じ命令を保持する。マルチプレクサ1201は、同じ命令レジスタの内容を入力として選択する。
2. マルチプレクサ1201は、主に同期に使用される停止命令または許可命令を書き込む必要がある場合は、SyncPD1101の第1のデータ入力を選択する。
3. SyncPがSIMDを実施する必要がある場合は、マルチプレクサ1201は、SyncPD1101の第2のデータ入力を選択する。この場合、SyncP1101のデータは、全ての下位レベルプロセッサの命令レジスタに書き込まれる。
4. SyncP1101がSI>MIMD命令を実施する必要があるときは、マルチプレクサ1201は、ROM OUT入力を選択する。
マルチレベル処理は、レベルの数を3つ以上のレベルの下位レベルプロセッサに拡張することができ、コードの実行は、さらに別の下位レベルプロセッサに対するSyncPの任務を実施する。システム中のプロセッサの数はN×N個となり、このシステムのスケーラビリティはN×Nとなる。下位レベルプロセッサの同期を管理する高位レベルプロセッサを有することで達成される、同期オーバヘッドの低減は、システムのスケーラビリティをN×Nに増大させる助けとなる。
図13は、3レベルの処理を示すブロック図1300である。第1レベルのプロセッサであるSyncP1301は、前に説明したように、第2レベルの処理1305のプロセッサ1303、1304〜1306の命令レジスタ1313、1114〜1116の全てをそのデータメモリにマッピングし、特別なバス1302を使用してこれらの命令レジスタに対して読取りまたは書込みを行うことができる。
第2レベル1305の各プロセッサ1303、1304〜1306もまた、SyncP1301と同様に、いくつかの他の下位レベルプロセッサを制御することができる。例外として、これらの第2レベルプロセッサ1303、1304〜1306は、それらの通常の処理動作も実施する。第2レベルプロセッサ1303、1304〜1306は、それらのデータメモリに、第3レベルプロセッサ1321〜1322の命令レジスタ1331〜1332を第2レベルプロセッサ1303によってマッピングし、命令レジスタ1336〜1337を第2レベルプロセッサ1306によってマッピングして、これらの同期を管理する。下位レベルプロセッサ1321〜1327をプロセッサ速度で停止または許可するのには1サイクルしか要しないので、下位レベルプロセッサ1321〜1327の管理が必要とするサポートは最小限である。
また、SIMDおよびSI>MIMDを含めた前述の機能のいくつかを、3レベルの処理について実施することも可能である。
複数の下位レベルプロセッサの命令レジスタに対して読み書きすることによって、下位レベルプロセッサの関与なしに下位レベルプロセッサを制御する高位レベルプロセッサは、同期オーバヘッドを、何千ものプロセッササイクルからわずかなサイクルに低減する。例示的な実施形態は、他にも多くの重要な利点を有することができ、これらの利点には、共有変数にアクセスするために待機する間にこれらのプロセッサを停止させることによって、電力を削減できることが含まれる。
高位レベルプロセッサは、単純な逐次命令を並列命令に変換して、並列ソフトウェアの記述をより容易にすることができる。単純なSIMD実装を用いて、長いベクトルに対してベクトル演算を効果的にサポートすることができる。また、マルチレベル処理を他のレベルに拡張することもでき、無限のスケーラビリティを可能にする。
示した実施形態は例示に過ぎず、本発明は、添付の特許請求の範囲によってのみ定義される。
200 マルチレベルプロセッサ
201 上位レベルプロセッサ、同期プロセッサ、SyncP
202 バス
203、204〜206 下位レベルプロセッサ
210 データメモリ位置
211 データメモリ
215 データメモリ位置
220 データメモリ位置
213、214〜216 命令レジスタ
301 SyncP
303、304〜306 下位レベルプロセッサ
401 SyncP
402 バス
402a アドレスバス
402b データバス
402c 制御ライン
403、404〜406 下位レベルプロセッサ
413、414〜416 命令レジスタ
504a〜d 命令レジスタ
506 フリップフロップ
801 命令レジスタ
803 フリップフロップ
901 SyncP
902、903〜904 下位レベルプロセッサ
902d データバス
912、913〜914 命令レジスタ
1101 SyncP
1102d データバス
1103、1104〜1105 下位レベルプロセッサ
1103、1104〜1106 下位レベルプロセッサ
1113、1114〜1116 ROM
1301 SyncP
1302 バス
1303、1304〜1306 第2レベルプロセッサ
1313、1314〜1316 命令レジスタ
1321〜1327 第3レベルプロセッサ
1331〜1337 命令レジスタ

Claims (38)

  1. データを処理するためのプロセッサであって、
    データを処理するための命令を記憶するレジスタを有する複数の下位レベルプロセッサと、
    前記第1レベルのプロセッサに接続された、データを処理するためのメモリを備える上位レベルプロセッサとを備え、前記上位レベルプロセッサが前記複数の第2レベルのプロセッサの動作の少なくとも一部を制御する、プロセッサ。
  2. 前記上位レベルプロセッサが、前記下位レベルプロセッサのそれぞれの命令の一部を前記上位レベルプロセッサのメモリにマッピングする、請求項1に記載のプロセッサ。
  3. 前記上位レベルプロセッサが、前記下位レベルプロセッサの命令の全てをメモリにマッピングする、請求項2に記載のプロセッサ。
  4. 前記上位レベルプロセッサと前記下位レベルプロセッサのそれぞれとの間に接続されたバスをさらに備える、請求項1に記載のプロセッサ。
  5. 前記下位レベルプロセッサのそれぞれに別々のメモリ領域が割り振られる、請求項3に記載のプロセッサ。
  6. 前記上位レベルプロセッサがイネーブルにされて、前記下位レベルプロセッサの実行する命令と、前記命令を実行する時間とを制御する、請求項1に記載のプロセッサ。
  7. 前記上位レベルプロセッサがイネーブルにされて、前記下位レベルプロセッサに命令を注入して、前記下位レベルプロセッサの実行する命令と、前記命令を実行する時間とを制御する、請求項6に記載のプロセッサ。
  8. 命令の前記注入が同期要件に基づく、請求項7に記載のプロセッサ。
  9. 注入される前記命令が停止命令である、請求項7に記載のプロセッサ。
  10. 前記上位レベルプロセッサがイネーブルにされて、前記下位レベルプロセッサのそれぞれのクロック速度を制御する、請求項1に記載のプロセッサ。
  11. 前記上位レベルプロセッサがイネーブルにされて、複数の下位レベルプロセッサに同一の変数を提供する、請求項1に記載のプロセッサ。
  12. 前記バスがさらに、前記上位レベルプロセッサが前記下位レベルプロセッサのどのレジスタにアドレスするかを定義するためのアドレスバスと、
    アクセスされる下位プロセッサレジスタの内容を含むためのデータバスと、
    前記下位レベルプロセッサに対する読取り/書込みを制御するための制御ラインとを備える、請求項2に記載のプロセッサ。
  13. 前記データバスが64ビットの幅を有し、前記制御ラインが1ビットの値を有する、請求項12に記載のプロセッサ。
  14. マルチレベルプロセッサ中で種々のプロセッサを同期させる方法であって、
    下位レベルプロセッサのレジスタの命令を上位レベルプロセッサのメモリにマッピングするステップと、
    下位レベルプロセッサを同期させるために前記上位レベルプロセッサから前記下位レベルプロセッサに命令を注入するステップとを含む方法。
  15. 上位レベルプロセッサによって各下位レベルプロセッサのクロック速度を制御するステップをさらに含む、請求項14に記載のマルチレベルプロセッサ中で種々のプロセッサを同期させる方法。
  16. 前記注入するステップが停止命令を注入する、請求項14に記載のマルチレベルプロセッサ中で種々のプロセッサを同期させる方法。
  17. 減速されることが望まれる下位レベルプロセッサのクロックサイクルを伸張することによって、前記クロック速度が制御される、請求項15に記載のマルチレベルプロセッサ中で種々のプロセッサを同期させる方法。
  18. クリティカルなコードが実行された後で前記下位レベルプロセッサに対する停止命令を除去するステップをさらに含む、請求項14に記載のマルチレベルプロセッサ中で種々のプロセッサを同期させる方法。
  19. 共有変数の実行が発生した後で前記下位レベルプロセッサに対する停止命令を除去するステップをさらに含む、請求項14に記載のマルチレベルプロセッサ中で種々のプロセッサを同期させる方法。
  20. 前記クロックサイクルを伸張することがフリップフロップの使用による、請求項17に記載のマルチレベルプロセッサ中で種々のプロセッサを同期させる方法。
  21. データを処理するためのシステムであって、
    データを処理するための命令を記憶するレジスタを有する複数の下位レベルプロセッサと、
    前記第1レベルのプロセッサに接続された、データを処理するためのメモリを備える上位レベルプロセッサであって、前記複数の第2レベルのプロセッサの動作の少なくとも一部を制御する上位レベルプロセッサと、
    データを入力するための入力、およびデータを出力するための出力とを備えるシステム。
  22. 前記上位レベルプロセッサが、前記下位レベルプロセッサのそれぞれの命令の一部を前記上位レベルプロセッサのメモリにマッピングする、請求項21に記載のシステム。
  23. 前記上位レベルプロセッサが、前記下位レベルプロセッサの命令の全てをメモリにマッピングする、請求項21に記載のシステム。
  24. 前記上位レベルプロセッサと前記下位レベルプロセッサのそれぞれとの間に接続されたバスをさらに備える、請求項21に記載のシステム。
  25. 前記下位レベルプロセッサのそれぞれに別々のメモリが割り振られる、請求項23に記載のシステム。
  26. 前記上位レベルプロセッサがイネーブルにされて、前記下位レベルプロセッサの実行する命令と、前記命令を実行する時間とを制御する、請求項21に記載のシステム。
  27. 前記上位レベルプロセッサがイネーブルにされて、前記下位レベルプロセッサに命令を注入して、前記下位レベルプロセッサの実行する命令と、前記命令を実行する時間とを制御する、請求項26に記載のシステム。
  28. 命令の前記注入が同期要件に基づく、請求項27に記載のシステム。
  29. 注入される前記命令が停止命令である、請求項27に記載のシステム。
  30. 前記上位レベルプロセッサがイネーブルにされて、前記下位レベルプロセッサのそれぞれのクロック速度を制御する、請求項21に記載のシステム。
  31. 前記上位レベルプロセッサがイネーブルにされて、複数の下位レベルプロセッサに同一の変数を提供する、請求項21に記載のシステム。
  32. 前記バスがさらに、前記上位レベルプロセッサが前記下位レベルプロセッサのどのレジスタにアドレスするかを定義するためのアドレスバスと、アクセスされる下位プロセッサレジスタの内容を含むためのデータバスと、前記下位レベルプロセッサに対する読取り/書込みを制御するための制御ラインとを備える、請求項21に記載のシステム。
  33. 前記データバスが64ビットの幅を有し、前記制御ラインが1ビットの値を有する、請求項32に記載のシステム。
  34. 命令を処理するための実行ユニットと、前記実行ユニットに接続された、命令の処理のタイミングをとるためのクロックとを備えるプロセッサであって、電力消費の削減を可能にするためにクロックサイクルを伸張する能力を有するプロセッサ。
  35. クロック周波数を半分にすることによって前記クロック周波数を伸張するための回路をさらに備える、請求項34に記載のプロセッサ。
  36. 前記回路がフリップフロップを備える、請求項34に記載のプロセッサ。
  37. 停止命令の受領時に前記クロックサイクルが伸張される、請求項34に記載のプロセッサ。
  38. ROMを有する上位レベルプロセッサと、自らのROMをそれぞれが有する複数の下位レベルプロセッサとを備えるプロセッサであって、前記上位レベルプロセッサによって発行された1つの命令から複数の異なる独立した並列命令を生成するために、前記上位レベルプロセッサの前記ROM中の単一の命令が前記下位レベルプロセッサ中の複数のROMへのインデックスに分割される、プロセッサ。
JP2013533059A 2010-10-15 2011-09-28 マルチレベル処理のための方法、システム、および装置 Pending JP2013541101A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US39353110P 2010-10-15 2010-10-15
US61/393,531 2010-10-15
US13/239,977 2011-09-22
US13/239,977 US20120096292A1 (en) 2010-10-15 2011-09-22 Method, system and apparatus for multi-level processing
PCT/CA2011/001087 WO2012048402A1 (en) 2010-10-15 2011-09-28 Method, system and apparatus for multi-level processing

Publications (1)

Publication Number Publication Date
JP2013541101A true JP2013541101A (ja) 2013-11-07

Family

ID=45935155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013533059A Pending JP2013541101A (ja) 2010-10-15 2011-09-28 マルチレベル処理のための方法、システム、および装置

Country Status (6)

Country Link
US (1) US20120096292A1 (ja)
EP (1) EP2628078A1 (ja)
JP (1) JP2013541101A (ja)
KR (1) KR20140032943A (ja)
CN (1) CN103154892A (ja)
WO (1) WO2012048402A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916189B2 (en) * 2014-09-06 2018-03-13 Advanced Micro Devices, Inc. Concurrently executing critical sections in program code in a processor
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
US9690360B2 (en) * 2015-08-13 2017-06-27 Intel Corporation Technologies for discontinuous execution by energy harvesting devices
CN106020893B (zh) * 2016-05-26 2019-03-15 北京小米移动软件有限公司 应用安装的方法及装置
CN106200868B (zh) * 2016-06-29 2020-07-24 联想(北京)有限公司 多核处理器中共享变量获取方法、装置及多核处理器
FR3091363B1 (fr) * 2018-12-27 2021-08-06 Kalray Système de synchronisation inter-processeurs configurable
KR20210003370A (ko) 2019-07-02 2021-01-12 삼성전자주식회사 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치
WO2021126217A1 (en) 2019-12-19 2021-06-24 Google Llc Resource management unit for capturing operating system configuration states and memory management
WO2021126216A1 (en) 2019-12-19 2021-06-24 Google Llc Resource management unit for capturing operating system configuration states and offloading tasks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105524A (ja) * 1996-09-26 1998-04-24 Sharp Corp マルチプロセッサシステム
JP2003296123A (ja) * 2002-01-30 2003-10-17 Matsushita Electric Ind Co Ltd 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ
JP2008276740A (ja) * 2007-01-26 2008-11-13 Nvidia Corp 並列スレッド・コンピューティングの仮想のアーキテクチャ及び命令セット

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619760B2 (ja) * 1986-04-23 1994-03-16 日本電気株式会社 情報処理装置
US5742842A (en) * 1992-01-28 1998-04-21 Fujitsu Limited Data processing apparatus for executing a vector operation under control of a master processor
IT1260848B (it) * 1993-06-11 1996-04-23 Finmeccanica Spa Sistema a multiprocessore
CA2137488C (en) * 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US6058414A (en) * 1998-01-07 2000-05-02 International Business Machines Corporation System and method for dynamic resource access in an asymmetric resource multiple processor computer system
US7076774B2 (en) * 2002-09-10 2006-07-11 Microsoft Corporation Infrastructure for generating a downloadable, secure runtime binary image for a secondary processor
US7865485B2 (en) * 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7321979B2 (en) * 2004-01-22 2008-01-22 International Business Machines Corporation Method and apparatus to change the operating frequency of system core logic to maximize system memory bandwidth
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US8122230B2 (en) * 2007-12-28 2012-02-21 Intel Corporation Using a processor identification instruction to provide multi-level processor topology information
US20110113221A1 (en) * 2008-08-18 2011-05-12 Telefonaktiebolaget L M Ericsson (Publ) Data Sharing in Chip Multi-Processor Systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105524A (ja) * 1996-09-26 1998-04-24 Sharp Corp マルチプロセッサシステム
JP2003296123A (ja) * 2002-01-30 2003-10-17 Matsushita Electric Ind Co Ltd 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ
JP2008276740A (ja) * 2007-01-26 2008-11-13 Nvidia Corp 並列スレッド・コンピューティングの仮想のアーキテクチャ及び命令セット

Also Published As

Publication number Publication date
WO2012048402A1 (en) 2012-04-19
EP2628078A1 (en) 2013-08-21
US20120096292A1 (en) 2012-04-19
CN103154892A (zh) 2013-06-12
KR20140032943A (ko) 2014-03-17

Similar Documents

Publication Publication Date Title
JP2013541101A (ja) マルチレベル処理のための方法、システム、および装置
Maass et al. Mosaic: Processing a trillion-edge graph on a single machine
CN108027804B (zh) 片上原子事务引擎
CN102375800B (zh) 用于机器视觉算法的多处理器片上系统
US8732711B2 (en) Two-level scheduler for multi-threaded processing
US8108659B1 (en) Controlling access to memory resources shared among parallel synchronizable threads
US7685601B2 (en) Methods and apparatus for segmented stack management in a processor system
US20080209156A1 (en) Methods and apparatus for managing a shared memory in a multi-processor system
US20060179277A1 (en) System and method for instruction line buffer holding a branch target buffer
US8930636B2 (en) Relaxed coherency between different caches
US20060179278A1 (en) Methods and apparatus for instruction set emulation
Peters et al. Fast in‐place, comparison‐based sorting with CUDA: a study with bitonic sort
TW201820151A (zh) 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
Xakimjon et al. Definition of synchronization processes during parallel signal processing in multicore processors
Cieslewicz et al. Parallel buffers for chip multiprocessors
Aboulenein et al. Hardware support for synchronization in the Scalable Coherent Interface (SCI)
JP2020508534A (ja) スーパースレッドプロセッサ、処理システム、および方法
Brewer A highly scalable system utilizing up to 128 PA-RISC processors
JP3789937B2 (ja) ベクトルプロセッサのためのチャンク連鎖
Al-Saber et al. SemCache++ Semantics-Aware Caching for Efficient Multi-GPU Offloading
US20190004950A1 (en) Memory node with cache for emulated shared memory computers
Singh Communication Coroutines For Parallel Program Using DW26010 Many Core Processor
KR100334298B1 (ko) 기억 소자
Brodowicz et al. A non von neumann continuum computer architecture for scalability beyond Moore's law
US20030097541A1 (en) Latency tolerant processing equipment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140922

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20141010

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150428

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160412