JP2010146550A - 実行中の命令に基づいてコア機能を構成するマルチコア・プロセッサおよび使用の方法 - Google Patents

実行中の命令に基づいてコア機能を構成するマルチコア・プロセッサおよび使用の方法 Download PDF

Info

Publication number
JP2010146550A
JP2010146550A JP2009243223A JP2009243223A JP2010146550A JP 2010146550 A JP2010146550 A JP 2010146550A JP 2009243223 A JP2009243223 A JP 2009243223A JP 2009243223 A JP2009243223 A JP 2009243223A JP 2010146550 A JP2010146550 A JP 2010146550A
Authority
JP
Japan
Prior art keywords
core
cores
processor
function
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.)
Granted
Application number
JP2009243223A
Other languages
English (en)
Other versions
JP5473530B2 (ja
Inventor
Louis Capps
ルイス・キャップス
Michael Shapiro
マイケル・シャピロ
Jr Rob Bell
ロブ・ベル・ジュニア
Thomas Cook
トーマス・クック
William E Burky
ウィリアム・イー・バーキー
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010146550A publication Critical patent/JP2010146550A/ja
Application granted granted Critical
Publication of JP5473530B2 publication Critical patent/JP5473530B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/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 OR CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

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)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)
  • Microcomputers (AREA)

Abstract

【課題】実行中のソフトウェアの特性に基づいて、最適性能のためにプロセッサを自動的、動的、かつ繰り返して再構成する。
【解決手段】プロセッサの複数のコアが、改善された効率を伴って複雑な動作を実行する、より大きいコアへと動的に組み合わされる。集積回路の複数のコアは、第1コアが作業負荷の実行を助ける副コアを管理するようにするために、機能グループのコアの間の高速通信パスによって機能グループへと選択的に組み合わされる。第1コアは、複雑な機能がコアの組合せで単一コアについて使用されるものより少数のサイクルで実行されるようにするために、単一コアとして機能するコアの組合せを作成するために副コアを占有する。複雑な作業負荷は、単純化されたプロセッサ設計を用いる効率的処理を提供するために単純なコアを用いて効率的に管理される。
【選択図】図3

Description

本発明は、現在実行中のソフトウェアの特性に基づいて、最適性能のためにプロセッサを自動的、動的、かつ繰り返して再構成する方法に関する。
サーバおよびワークステーションで見られるものなどの汎用作業負荷用のマイクロプロセッサは、サーバまたはワークステーションで期待される作業負荷を平衡化するように設計される。これは、しばしば、浮動小数点集中型動作または整数集中型動作など、あるタイプの動作を別のタイプの動作より多く使用する作業負荷を実行するためにトレードオフが行われることを意味する。このトレードオフは、通常、期待される動作を実行するために特殊化されたより多くの回路と、より低い頻度で期待される動作のために特殊化されたより少ない回路とをデザイン・インすることを伴う。キャッシュは、プロセッサの熱パラメータおよびコスト・パラメータを高めずに、ワーキング・セットとして知られる作業負荷のクリティカル・セクションを保持するように設計される。一般化された動作を実行するように設計されたプロセッサは、さまざまな作業負荷について良好に働くが、どの1つの特定のタスクについても最適ではない。
ディジタル信号プロセッサ・デバイス(DSP)などのタスク固有プロセッサは、その特殊化された作業負荷を実行するときに、汎用プロセッサの性能を何倍も上回ることができる。しかし、特定の作業負荷のためにチューニングされたDSPが、わずかに変化する特性を有するものであっても、任意の他の作業負荷に出会うときに、DSPは、不十分に動作する傾向がある。
今日の汎用プロセッサは、しばしば、設計された動作について最もありそうな作業負荷を表すと称するベンチマークを中心にして設計される。しかし、汎用プロセッサが、ある動作を別の動作より多く実行する傾向がある動作環境に置かれる場合に、動作効率は、悪くなる。同様に、特殊化されたプロセッサが、その特殊化された環境とは異なる動作環境に置かれる場合に、動作効率は、悪くなる。プロセッサ設計の現状は、プロセッサが、現在実行されているソフトウェア命令の特性に一致するようにそれ自体を再構成することによって作業負荷に動的に適応することを可能にしない。
本発明の目的は、現在実行中のソフトウェアの特性に基づいて、最適性能のためにプロセッサを自動的、動的、かつ繰り返して再構成する方法を提供することである。
本発明の実施形態によれば、プロセッサによって実行される機能は、プロセッサによって実行される機能がより高い効率を伴って実行されるようにするためにプロセッサを再構成することによって、動作環境に動的に適合される。マルチコア特性を有する命令を実行するコアは、複数のコアが共通のコアとして働くようにするために、命令について助けるように他のコアを割り当てる。この手法は、コアが処理の必要に一致するように再構成されるので、複数の作業負荷をより効率的に実行することを可能にする。マルチコア・システムの全体的な設計の複雑さは、より大きくより複雑な単一コアではなく、複雑な動作を実行するための動的割当てに使用可能な単純なコアの使用によって減らされる。
添付図面を参照することによって、本開示をよりよく理解でき、その多数の目的、特徴、および利益を、当業者に明白にすることができる。複数の図面を通じた同一の符号の使用は、類似する要素または同様の要素を示す。
本開示の選択された実施形態を実施できるマルチプロセッサ・コンピュータ・アーキテクチャを示す図である。 本開示の選択された実施形態を実施できるマルチコア・プロセッサ・アーキテクチャを示す図である。 本開示の選択された実施形態を実施できるプロセスを示す流れ図である。
本開示は、現在実行中のソフトウェアの特性に基づいて、最適性能のためにプロセッサを自動的、動的、かつ繰り返して再構成する方法および装置を説明する。プロセッサの複数のコアが、改善された効率を伴って複雑な動作を実行する、より大きいコアへと動的に組み合わされる。集積回路の複数のコアは、第1コアが作業負荷の実行を助ける副コアを管理するようにするために、機能グループのコアの間の高速通信パスによって機能グループへと選択的に組み合わされる。第1コアは、複雑な機能がコアの組合せで単一コアについて使用されるものより少数のサイクルで実行されるようにするために、単一コアとして機能するコアの組合せを作成するために副コアを占有する。複雑な作業負荷は、単純化されたプロセッサ設計を用いる効率的処理を提供するために単純なコアを用いて効率的に管理される。
ここで図1を参照すると、本開示の選択された実施形態に従って単一スレッド・プログラムの改善された実行を提供するマルチプロセッサ(MP)データ処理システム100の高水準ブロック図が示されている。データ処理システム100は、1つまたは複数のプロセッサ・グループに配置された1つまたは複数の処理ユニットを有し、図示のように、プロセッサ・グループ110内の4つの処理ユニット111、121、131、および141を含む。対称型マルチプロセッサ(SMP)実施形態では、処理ユニット111、121、131、および141のすべてが、全般的に同一である、すなわち、これらのすべてが、動作するのに命令およびプロトコルの共通のセットまたはサブセットを使用し、一般に、同一のアーキテクチャを有する。処理ユニット111と共に示されているように、各処理ユニットは、1つまたは複数のプロセッサ・コア116aおよび116bを含み、プロセッサ・コア116aおよび116bは、コンピュータを動作させるためにプログラム命令を実行する。例示的な処理ユニットは、すべてが集積回路によって形成される、さまざまな実行ユニット、レジスタ、バッファ、メモリ、および他の機能ユニットを有する単一の集積回路スーパースカラ・マイクロプロセッサを含む、International Business Machines Corporation(R)によって販売されるPOWER5(商標)プロセッサである。プロセッサ・コアは、縮小命令セット・コンピューティング(RISC)技法に従って動作することができ、スーパースカラ・アーキテクチャの性能をさらに改善するために命令のパイプライン化とアウトオブオーダーの実行との両方を使用することができる。
図1にさらに示されているように、各プロセッサ・コア116aおよび116bは、高速メモリ・デバイスから構成されるオンボード(L1)キャッシュ・メモリ119aおよび119b(通常は、別々の命令キャッシュおよびデータ・キャッシュ)を含む。キャッシュは、一般に、値をシステム・メモリ・デバイス161からロードするというより長いステップを回避することによって処理を高速化するために、プロセッサによって繰り返してアクセスされる値を一時的に格納するのに使用される。処理ユニットは、第2レベル(L2)キャッシュ112などの別のキャッシュを含むことができ、L2キャッシュ112は、キャッシュ・メモリ・コントローラ(図示せず)と一緒に、プロセッサ・コア116aおよび116bのめいめいの部分であるL1キャッシュ119aと119bとの両方をサポートする。L3キャッシュ166などの追加のキャッシュ・レベルを設けることができ、L3キャッシュ166は、ファブリック・バス150を介してアクセス可能である。最上位(L1)から最下位(L3)までの各キャッシュ・レベルは、連続的に、より多くの情報を、より長いアクセス・ペナルティで格納することができる。たとえば、プロセッサ・コア(たとえば116a)内のオンボードL1キャッシュ(たとえば、119a)は、128キロバイトのメモリというストレージ容量を有することができ、L2キャッシュ112は、4メガバイトのストレージ容量を有することができ、L3キャッシュ166は、132メガバイトのストレージ容量を有することができる。欠陥のある処理ユニット・コンポーネントの修理/交換を容易にするために、各処理ユニット111、121、131、および141を、モジュラの形で簡単に交換でき、インストールでき、またはデータ処理システム100からスワップ・アウトできる、交換可能回路基盤、プラグ可能モジュール、または類似する現場交換可能ユニット(FRU)の形で構成することができる。
処理ユニットは、システム相互接続またはファブリック・バス150を介してデータ処理システム100の他のコンポーネントと通信する。ファブリック・バス150は、1つまたは複数のサービス・プロセッサ160、システム・メモリ・デバイス161、メモリ・コントローラ162、共用またはL3キャッシュ166、またはさまざまな周辺デバイス169あるいはこれらの組合せに接続される。プロセッサ・ブリッジ170を、任意選択で、追加のプロセッサ・グループを相互接続するのに使用することができる。図示されてはいないが、データ処理システム100が、システムの基本入出力論理を格納し、コンピュータ・システムが始めて電源を入れられる(ブートされる)時に必ずオペレーティング・システムを探し、周辺機器の1つからロードする、ファームウェアをも含むことができることを理解されたい。
図1に示されているように、データ処理システム100は、複数のスレッドの間で共用される複数のシステム・リソース(たとえば、キャッシュ・メモリ、メモリ・コントローラ、相互接続、入出力コントローラなど)を含む。
システム・メモリ・デバイス161(ランダム・アクセス・メモリすなわちRAM)は、オペレーティング・システム161Aおよびアプリケーション・プログラム161Bを含む、処理ユニットによって使用されるプログラム命令およびオペランド・データを揮発性(一時的)状態で格納する。単一スレッド最適化モジュール161Cは、オペレーティング・システム・モジュール、ハイパーバイザ・コンポーネントなど、任意の所望の形でシステム・メモリ内に格納され得、プロセッサ・ユニットの複数コアにまたがる単一スレッド式プログラムの実行を最適化するのに使用される。システム・メモリ内のファシリティとして図示されているが、当業者は、単一スレッド最適化モジュール161Cを、その代わりにデータ処理システム100の別のコンポーネント内で実施できることを了解するであろう。単一スレッド最適化モジュール161Cは、プログラマブル・レジスタを含む実行可能命令、コード、または制御論理あるいはこれらの組合せとして実施され、このプログラマブル・レジスタは、下でより十分に説明するように、データ処理システム100上で動作するコードの性能モニタ情報をチェックし、所定のポリシを使用してコードに優先順位値を割り当て、優先順位値がデータ処理システム100にまたがって命令と共に分配されるようにするために各命令にそれに割り当てられた優先順位値を用いてタグ付けするように動作可能である。
ここで図2を参照すると、情報を処理するために協力する4つのコア202と共に、マルチコア・プロセッサの集積回路200が示されている。集積回路200の複数のコアは、集積回路200内に作られた高速のコア・インターフェース204を介して通信する。図2によって示される実施形態では、4つのコア202のそれぞれが、集積回路200の縁に沿った、外部デバイスと通信する64ビットの外部インターフェース206を有する。代替実施形態では、より多数のコア202を、外部インターフェースが集積回路200の下側または上側の表面に沿って確立された状態で、集積回路200に集積することができる。各コア202を、特殊化された機能を実行するように設計することができる。たとえば、コアを、整数ベクトル・ユニットであるコアなど、整数機能を実行することに、または浮動小数点機能を実行することに特殊化することができる。相対的な関係で、各コア202は、設計の複雑さを減らすために単純化された設計を有するが、コア202の組合せは、下で示すように相対的に複雑なタスクを実行するのに使用される。
マルチコア・プロセッサの集積回路200は、コアのグループが単一コアとして有効に動作する、コア・インターフェース204を介して通信する共通のユニットとして働くようにするために、コア202を組合せに選択的にグループ化することによって動作を実行する。コア202の組合せは、あるスレッドに割り当てられる複数のコアを含み、割り当てられるコアの個数は、そのスレッドを効率的な形で実行するために管理される。各コア202で動作する運営モジュール208は、他のコア202と組み合わされて実行すべき動作を識別するために、そのコア202での動作を監視する。たとえば、あるコア202でのスレッドの実行中に、そのコア202に関連する運営モジュール208は、複数のコアの間での実行のための分割に従う複雑な命令など、1つまたは複数のマルチコア特性を有する作業負荷を識別するために、スレッドの来るべき命令を先読みする。マルチコア特性が検出される場合に、運営モジュール208は、マルチコア・マネージャ210を開始して、命令の実行のために組み合わせるために1つまたは複数の他のコア202を突き止め、割り当てる。図2によって示される実施形態では、運営モジュール208およびマルチコア・マネージャ210は、各コア202に分散されるが、代替実施形態では、マルチコア組合せの運営および管理を、集積回路200の別々の部分のより集中化された論理を用いて、またはさまざまなコア202を介するさまざまな度合の論理の分散を用いて、管理することができる。図2によって示される実施形態では、マルチコア特性を識別する第1コア202内の運営モジュール208は、副コアの運営モジュール208およびマルチコア・マネージャ210との通信によって命令の実行を手伝うために副コア202を割り当て、管理する。副コア202は、アイドル状態である場合、または主コアの位置および用いられる機能のタイプに基づいて動作が優先権を有する場合に、選択される。たとえば、整数機能を実行する第1コアは、手元にある作業負荷を実行するために、コア・インターフェース204上で適当な速度を有する、整数機能に特殊化された副コアを選択する。
複数のコア202のうちの第1コアが、1つまたは複数の副コア202を命令に割り当てたならば、副コア202のマルチコア・マネージャ210は、第1コア202の現在の状態をコピーし、第1コアと副コアとの間で命令実行を同期化することを試みて第1コア202から提供されるスレッドの投機実行を開始する。コア202が同期化される時に、作業負荷は、減らされたサイクル数など、減らされた時間でタスクを達成するためにコア202の間で分担される。たとえば、第1および副コア202は、ベクトル化の対象である共通の同一の命令に達する。次に、それらの命令は、スレッド・データの対向するセクションに対して作業を実行するコアを用いてベクトル化される。各コア202がそのめいめいの機能を完了する時に、各コアからの結果が、スレッドを継続するために第1コアに戻って組み合わされる。
ここで図3を参照すると、流れ図に、より大きいベクトル化されたユニットを作成するために整数ベクトル・ユニットを一緒に動的に結び付けるための複数のコアの割当ての例が示されている。このプロセスは、ステップ212で、複数のコアのうちの第1コアを使用するスレッドの実行と共に開始される。スレッドの実行中に、命令が、ステップ214で実行されて、1つまたは複数のマルチコア特性が検出される。マルチコア特性が検出されない場合には、このプロセスは、ステップ212に戻って、単一コアを用いてスレッド命令を継続する。マルチコア特性が検出される場合に、このプロセスは、下で説明するステップ216に継続する。現在の例において、ベース・コア設計は、単一の64ビットからなるベクトル・ユニットを有するが、スレッドの命令セットおよびレジスタ・セットは、128ビット・データ・サイズを中心として設計される。この例では、単一のコア・ベクトル・ユニットが、8つの8ビット動作、4つの16ビット動作、2つの32ビット動作、または単一の64ビット動作でデータにまたがって動作することができる。したがって、単一のコア・ベクトル・ユニットが、他のベクトル・ユニットと組み合わされずにスレッドを実行する場合に、2サイクルという最小値が、128ビット・データ・サイズに対する動作を実行するのに必要になるはずである。この場合に、コアに関連する運営モジュールは、マルチコア特性を識別する。というのは、スレッドの命令セットまたはレジスタ・セットあるいはその両方が、128ビットの幅すなわちベクトル・ユニットの幅の2倍を有するからである。代替実施形態では、スレッドに割り当てられるベクトル・ユニットの個数は、ベクトル・ユニット幅と比較した命令セット幅またはレジスタ・セット幅もしくはその両方の倍数の数に基づく。代替実施形態では、他のタイプのマルチコア特性を、複数のコアをスレッドまたは命令に割り当てるための基礎として使用することができる。たとえば、コード・シーケンスに追加されるコンパイラ・ヒントまたはインジケータを使用して、コアが複数のコアの間で作業負荷を分割できるときを予測するのを助けることができる。
マルチコア特性がステップ214で検出される場合に、このプロセスは、ステップ216に継続して、第1コアによる動作を手伝うために1つまたは複数の副コアをスレッドに割り当てる。1つまたは複数の副コアは、それらが動作を自由に実行できる場合に、または動作が副コアに関連する動作より高い優先順位を有する場合に、割り当てられる。ステップ218で、第1コアの状態を副コアにコピーし、ステップ220で、コアは、第1コアおよび副コアを共通の命令で同期化するために投機実行を実行する。ステップ222で、同期化された実行が検出され、その結果、ステップ224で、コアは、ベクトル・データの対向するセクションに対して命令を実行するためにベクトル化される。上の例を使用すると、128ビット命令が2つのベクトル・ユニット・コアを用いて実行されるときには、各コアがデータのうちの64ビットを操作するので、1つのサイクルだけが必要である。順序通りの複数ベクトル動作は、データを第1コアに戻ってマージする必要が生じるまで、別々のコアで実行され続ける。ステップ226で、結果が、動作の完了時に、ベクトル化されたコアから第1コアに戻って組み合わされ、このプロセスは、ステップ212に戻る。
この開示は、現在実行中の命令の特性の分析に基づいて、最適性能のためにプロセッサを自動的、動的、かつ繰り返して再構成する方法およびシステムを提供する。単純なコアが、複雑な命令をより効率的に実行すると同時に設計の複雑さおよびプロセッサのコストを低く保つために、より大きいコアへと動的に組み合わされる。管理するコアによる他のコアの命令セットへの選択的割り当ては、プロセッサがさまざまな命令セットによりたやすく適合するようにするための命令実行の柔軟性を改善する。
その結果、本開示は、すべての面における同等物への十分な認識を与える添付の特許請求の範囲の趣旨および範囲によってのみ限定されることが意図されている。
100 データ処理システム
110 プロセッサ・グループ
111 処理ユニット
112 第2レベル(L2)キャッシュ
116a プロセッサ・コア
116b プロセッサ・コア
119a オンボード(L1)キャッシュ・メモリ
119b オンボード(L1)キャッシュ・メモリ
121 処理ユニット
131 処理ユニット
141 処理ユニット
150 ファブリック・バス
160 サービス・プロセッサ
161 システム・メモリ・デバイス
161A オペレーティング・システム
161B アプリケーション・プログラム
161C 単一スレッド最適化モジュール
162 メモリ・コントローラ
166 L3キャッシュ
169 周辺デバイス
170 プロセッサ・ブリッジ
200 集積回路
202 コア
204 コア・インターフェース
206 外部インターフェース
208 運営モジュール
210 マルチコア・マネージャ

Claims (15)

  1. 複数のコアを有するプロセッサの再構成の方法であって、
    前記複数のコアのうちの第1コアで機能を実行することと、
    前記機能の所定のマルチコア特性を検出することと、
    複数のコアに前記機能を実行させるために前記プロセッサを再構成することと
    を含む方法。
  2. 前記機能が、浮動小数点機能を含む、請求項1に記載の方法。
  3. 前記機能が、整数機能を含む、請求項1に記載の方法。
  4. 前記複数のコアが、複数の整数ベクトル・ユニットを含み、前記プロセッサを再構成することが、前記整数機能を実行するために動作可能な共通のベクトル化されたユニットを作成するために複数の整数ベクトル・ユニットを一緒に結び付けることを含む、請求項3に記載の方法。
  5. 所定のマルチコア特性を検出することが、前記コアのベクトル・ユニット・サイズより大きいデータ・サイズを有する命令セットを検出することを含む、請求項1に記載の方法。
  6. 所定のマルチコア特性を検出することが、コンパイラによって挿入されたインジケータを検出することを含む、請求項5に記載の方法。
  7. 複数のコアに前記機能を実行させるために前記プロセッサを再構成することが、
    前記機能を実行するために1つまたは複数の副コアを割り当てることと、
    前記第1コアの命令状態を前記副コアにコピーすることと、
    前記第1コアおよび前記副コアを用いて前記機能を実行することと
    をさらに含む、請求項1に記載の方法。
  8. 前記第1コアおよび前記副コアを用いて前記機能を実行することが、
    命令実行を同期化するために前記命令の投機実行を実行することと、
    ベクトル化の対象である共通命令を前記第1コアおよび前記副コア上で見つけることと、
    データの1つまたは複数のセクションを有する命令を前記第1コアおよび前記副コア上で実行することと、
    前記実行することからの結果を前記第1コア上で組み合わせることと
    をさらに含む、請求項7に記載の方法。
  9. プロセッサであって、
    互いとインターフェースされた複数のコアであって、各々が、所定の機能を実行するように動作可能である、複数のコアと、
    前記複数のコアのうちの第1コアに関連する運営モジュールであって、前記第1コア上で実行される機能のマルチコア特性を検出するように動作可能である、運営モジュールと、
    前記第1コアに関連し、前記運営モジュールとインターフェースされるマルチコア・マネージャであって、前記マルチコア特性の前記検出に応答して、前記複数のコアのうちの副コアに前記機能を実行させるために前記プロセッサを再構成するように動作可能である、マルチコア・マネージャと
    を含むプロセッサ。
  10. 前記マルチコア・マネージャが、
    前記機能を実行するために1つまたは複数の副コアを割り当てることと、
    前記第1コアの命令状態を前記副コアにコピーすることと、
    前記第1コアおよび前記副コアを用いて前記機能を実行することと
    によって前記プロセッサを再構成する、請求項9に記載のプロセッサ。
  11. 前記第1コアおよび前記副コアを用いて前記機能を実行することが、
    命令実行を同期化するために前記命令の投機実行を実行することと、
    ベクトル化の対象である共通命令を前記第1コアおよび前記副コア上で見つけることと、
    データの1つまたは複数のセクションを有する命令を前記第1コアおよび前記副コア上で実行することと、
    前記実行することからの結果を前記第1コア上で組み合わせることと
    をさらに含む、請求項10に記載のプロセッサ。
  12. 複数のコアを有するプロセッサの構成の方法であって、
    前記コアの幅より大きい動作幅を有する命令を第1コアで検出することと、
    前記検出に応答して前記命令を実行するために複数の副コアを割り当てることと、
    前記複数のコア上で前記命令を実行することと、
    前記複数のコアからの結果を前記第1コアで組み合わせることと
    を含む方法。
  13. 前記コアが、nビットの幅を有し、前記命令が、n×mビットの動作幅を有する、請求項12に記載の方法。
  14. 前記第1コアおよび前記副コアが、整数ベクトル・ユニットを含み、前記複数のコア上で前記命令を実行することが、複数のベクトル動作を実行することを含む、請求項12に記載の方法。
  15. 前記複数のコア上で前記命令を実行することが、
    前記第1コアの実行状態を1つまたは複数の副コアにコピーすることと、
    前記第1コアと前記1つまたは複数の副コアとを同期化するために投機実行を実行することと
    をさらに含む、請求項12に記載の方法。
JP2009243223A 2008-12-16 2009-10-22 実行中の命令に基づいてコア機能を構成するマルチコア・プロセッサおよび使用の方法 Expired - Fee Related JP5473530B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/335,921 US8495342B2 (en) 2008-12-16 2008-12-16 Configuring plural cores to perform an instruction having a multi-core characteristic
US12/335921 2008-12-16

Publications (2)

Publication Number Publication Date
JP2010146550A true JP2010146550A (ja) 2010-07-01
JP5473530B2 JP5473530B2 (ja) 2014-04-16

Family

ID=42241986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009243223A Expired - Fee Related JP5473530B2 (ja) 2008-12-16 2009-10-22 実行中の命令に基づいてコア機能を構成するマルチコア・プロセッサおよび使用の方法

Country Status (3)

Country Link
US (1) US8495342B2 (ja)
JP (1) JP5473530B2 (ja)
KR (1) KR101137215B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012124078A1 (ja) * 2011-03-16 2012-09-20 富士通株式会社 同期方法、マルチコアプロセッサシステム、および同期システム
JP2014509419A (ja) * 2011-01-25 2014-04-17 コグニヴュー コーポレーション ベクトルユニット共有の装置および方法
JP2017194974A (ja) * 2012-12-20 2017-10-26 インテル・コーポレーション スケーラブル計算ファブリック

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751854B2 (en) * 2009-12-21 2014-06-10 Empire Technology Development Llc Processor core clock rate selection
KR101671184B1 (ko) 2010-12-14 2016-11-01 삼성전자주식회사 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
KR101738641B1 (ko) 2010-12-17 2017-05-23 삼성전자주식회사 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
KR20120074762A (ko) * 2010-12-28 2012-07-06 삼성전자주식회사 재구성 가능한 심드 아키텍처 기반의 컴퓨팅 장치 및 방법
US20130117168A1 (en) * 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US8745626B1 (en) * 2012-12-17 2014-06-03 Throughputer, Inc. Scheduling application instances to configurable processing cores based on application requirements and resource specification
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
CN110083494B (zh) * 2011-12-30 2023-07-25 英特尔公司 在多核心环境中管理硬件错误的方法和装置
US9720766B2 (en) * 2012-04-19 2017-08-01 Industry-Academic Cooperation Foundation Chosun University Self-healing, fault-tolerant FPGA computation and architecture
US8996902B2 (en) 2012-10-23 2015-03-31 Qualcomm Incorporated Modal workload scheduling in a heterogeneous multi-processor system on a chip
CN104008013B (zh) * 2013-02-26 2018-02-09 华为技术有限公司 一种核资源分配方法、装置及众核系统
US9417879B2 (en) * 2013-06-21 2016-08-16 Intel Corporation Systems and methods for managing reconfigurable processor cores
US9703708B2 (en) * 2013-09-27 2017-07-11 Intel Corporation System and method for thread scheduling on reconfigurable processor cores
US10740167B2 (en) * 2016-12-07 2020-08-11 Electronics And Telecommunications Research Institute Multi-core processor and cache management method thereof
CN107680001A (zh) * 2017-08-01 2018-02-09 国网陕西省电力公司电力科学研究院 基于双核嵌入式处理器的信号处理系统及其双核交互方法
US10466937B2 (en) * 2017-11-28 2019-11-05 BAE Systems Information and Electronic Sustems Integration Inc. Method of implementing a high reliability flash memory recorder
US12360803B2 (en) * 2022-08-05 2025-07-15 Accenture Global Solutions Limited Dynamic scheduling platform for automated computing tasks
CN118689833B (zh) * 2024-08-26 2024-11-01 北京麟卓信息科技有限公司 一种多核向量化计算平台自适应规约计算方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029984A (ja) * 2001-07-12 2003-01-31 Nec Corp マルチスレッド実行方法及び並列プロセッサシステム
US20040172626A1 (en) * 2002-08-29 2004-09-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
JP2006018445A (ja) * 2004-06-30 2006-01-19 Nec Corp プログラム並列化装置及びその方法並びにプログラム
JP2006293768A (ja) * 2005-04-12 2006-10-26 Univ Waseda マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US20070143574A1 (en) * 2005-12-19 2007-06-21 Bonebakker Jan L Method and apparatus for supporting vector operations on a multi-threaded microprocessor
JP2012508939A (ja) * 2008-11-24 2012-04-12 インテル コーポレイション シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置
JP2012510661A (ja) * 2008-12-01 2012-05-10 ケーピーアイティ クミンズ インフォシステムズ リミテッド 逐次コンピュータプログラムコードを並列処理する方法及びシステム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720809A (en) * 1984-09-21 1988-01-19 University Of Florida Hybrid floating point/logarithmic number system arithmetic processor
US5860024A (en) 1996-04-15 1999-01-12 Advanced Micro Devices, Inc. Microprocessor with automatic name generation including performance indication
JP2001043180A (ja) 1999-08-03 2001-02-16 Mitsubishi Electric Corp マイクロプロセッサおよびそのための記憶装置
US6615366B1 (en) 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6950954B1 (en) 2000-10-26 2005-09-27 Cypress Semiconductor Corporation Method and circuit for synchronizing a write operation between an on-chip microprocessor and an on-chip programmable analog device operating at different frequencies
US7080267B2 (en) 2002-08-01 2006-07-18 Texas Instruments Incorporated Methodology for managing power consumption in an application
KR100505662B1 (ko) 2002-12-30 2005-08-03 삼성전자주식회사 칩 사이즈를 감소시키는 스캔 테스트 회로를 구비한반도체 장치, 및 그 테스트 방법
US7000233B2 (en) 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7437580B2 (en) 2004-05-05 2008-10-14 Qualcomm Incorporated Dynamic voltage scaling system
US20060136606A1 (en) 2004-11-19 2006-06-22 Guzy D J Logic device comprising reconfigurable core logic for use in conjunction with microprocessor-based computer systems
US7996644B2 (en) 2004-12-29 2011-08-09 Intel Corporation Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache
US9870267B2 (en) * 2006-03-22 2018-01-16 Intel Corporation Virtual vector processing
US7268570B1 (en) 2006-06-27 2007-09-11 International Business Machines Corporation Apparatus and method for customized burn-in of cores on a multicore microprocessor integrated circuit chip
JP2008084009A (ja) 2006-09-27 2008-04-10 Toshiba Corp マルチプロセッサシステム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029984A (ja) * 2001-07-12 2003-01-31 Nec Corp マルチスレッド実行方法及び並列プロセッサシステム
US20040172626A1 (en) * 2002-08-29 2004-09-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
JP2006018445A (ja) * 2004-06-30 2006-01-19 Nec Corp プログラム並列化装置及びその方法並びにプログラム
JP2006293768A (ja) * 2005-04-12 2006-10-26 Univ Waseda マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US20070143574A1 (en) * 2005-12-19 2007-06-21 Bonebakker Jan L Method and apparatus for supporting vector operations on a multi-threaded microprocessor
JP2012508939A (ja) * 2008-11-24 2012-04-12 インテル コーポレイション シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置
JP2012510661A (ja) * 2008-12-01 2012-05-10 ケーピーアイティ クミンズ インフォシステムズ リミテッド 逐次コンピュータプログラムコードを並列処理する方法及びシステム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
村井均,坂上仁志: "High Performance Fortran の現状", システム/制御/情報, vol. 52, no. 1, JPN6013049178, 15 January 2008 (2008-01-15), JP, pages 14 - 20, ISSN: 0002720393 *
玉造潤史,平木敬: "Runtime Restructuring による複数コントロールフロー予測", 情報処理学会研究報告, vol. Vol:2002,No:81,(2002-ARC-149), JPN6013049176, 23 August 2002 (2002-08-23), JP, pages 49 - 54, ISSN: 0002649057 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014509419A (ja) * 2011-01-25 2014-04-17 コグニヴュー コーポレーション ベクトルユニット共有の装置および方法
WO2012124078A1 (ja) * 2011-03-16 2012-09-20 富士通株式会社 同期方法、マルチコアプロセッサシステム、および同期システム
US20140019717A1 (en) * 2011-03-16 2014-01-16 Fujitsu Limited Synchronization method, multi-core processor system, and synchronization system
JP5780292B2 (ja) * 2011-03-16 2015-09-16 富士通株式会社 同期方法、マルチコアプロセッサシステム、および同期システム
US9558152B2 (en) * 2011-03-16 2017-01-31 Fujitsu Limited Synchronization method, multi-core processor system, and synchronization system
JP2017194974A (ja) * 2012-12-20 2017-10-26 インテル・コーポレーション スケーラブル計算ファブリック

Also Published As

Publication number Publication date
KR101137215B1 (ko) 2012-04-19
KR20100069551A (ko) 2010-06-24
JP5473530B2 (ja) 2014-04-16
US8495342B2 (en) 2013-07-23
US20100153700A1 (en) 2010-06-17

Similar Documents

Publication Publication Date Title
JP5473530B2 (ja) 実行中の命令に基づいてコア機能を構成するマルチコア・プロセッサおよび使用の方法
TWI439941B (zh) 多處理器系統內之自動工作量分布的方法、裝置,及多核心處理器系統
US9672035B2 (en) Data processing apparatus and method for performing vector processing
US10025590B2 (en) Multicore processor and method of use that configures core functions based on executing instructions
US10318407B2 (en) Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
CN100357884C (zh) 用于处理指令的方法、处理器以及系统
US7861065B2 (en) Preferential dispatching of computer program instructions
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management
US20130013903A1 (en) Multicore Processor and Method of Use That Adapts Core Functions Based on Workload Execution
US8285950B2 (en) SMT/ECO mode based on cache miss rate
US20110055838A1 (en) Optimized thread scheduling via hardware performance monitoring
US9009707B2 (en) Sharing reconfigurable computing devices between workloads
CN103197953A (zh) 推测执行和回滚
WO2009006607A1 (en) Dynamically composing processor cores to form logical processors
US10078518B2 (en) Intelligent context management
US7617494B2 (en) Process for running programs with selectable instruction length processors and corresponding processor system
US10102003B2 (en) Intelligent context management
US10146736B2 (en) Presenting pipelines of multicore processors as separate processor cores to a programming framework
US20170109160A1 (en) Instruction for performing an overload check
Guzma et al. Impact of software bypassing on instruction level parallelism and register file traffic
CN100538648C (zh) 基于专用处理单元的使用动态修改系统参数
Rogers Understanding Simultaneous Multithreading on z Systems
EP1378825A1 (en) A method for executing programs on selectable-instruction-length processors and corresponding processor system
Robatmili et al. Balancing Local and Global Parallelism for Single-Thread Applications in a Composable Multi-core System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131224

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140204

R150 Certificate of patent or registration of utility model

Ref document number: 5473530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees