JP2009519513A - 専用スレッド管理を用いたマルチコアの演算処理方法及び装置 - Google Patents

専用スレッド管理を用いたマルチコアの演算処理方法及び装置 Download PDF

Info

Publication number
JP2009519513A
JP2009519513A JP2008544448A JP2008544448A JP2009519513A JP 2009519513 A JP2009519513 A JP 2009519513A JP 2008544448 A JP2008544448 A JP 2008544448A JP 2008544448 A JP2008544448 A JP 2008544448A JP 2009519513 A JP2009519513 A JP 2009519513A
Authority
JP
Japan
Prior art keywords
thread
instruction
thread management
management unit
processor core
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
JP2008544448A
Other languages
English (en)
Inventor
エス.カーランド アーロン
Original Assignee
ボストンサーキッツ インコーポレイテッド
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 ボストンサーキッツ インコーポレイテッド filed Critical ボストンサーキッツ インコーポレイテッド
Publication of JP2009519513A publication Critical patent/JP2009519513A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/3009Thread control 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

オンチップネットワークにより相互接続したプロセッサユニット、インタフェースブロック及び機能ブロックを有するCMP内で専用スレッド管理を行う方法及び装置。種々の実施態様において、スレッド管理はどの演算処理ユニットからも独立しているので、短い待ち時間で高速にスレッドを切り替えるとともに、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせない。

Description

関連出願の相互参照
本出願は、2005年12月6日に出願した同時係属中の米国仮出願第60/742,674号に基づく優先権を主張し、これらの内容は本明細書の一部を構成する。
本発明は、複数のプロセッサコアによりコンピュータ命令を実行する方法及び装置に関し、特に複数のプロセッサコアによりコンピュータ命令を実行するための専用スレッド管理の使用に関する。
マルチメディア、ネットワーキング、高性能コンピューティング等のアプリケーションに求められる演算処理能力は、複雑化及び処理データ量の増加に伴い増大してきている。同時に、消費電力及び浪費熱の増加に対する性能向上率は収穫逓減の法則の域に達しており、単にクロックスピードを上げても性能を向上させることは難しい。そのため、マイクロプロセッサの性能向上には並列処理が有望であると考えられている。
スレッドレベル並列処理(TLP)は複数のプログラムスレッドを同時に走らせ、アプリケーションの処理能力を向上させる並列処理方法である。TLPは同時マルチスレッド(SMT)とチップマルチプロセッサ(CMP)とに大別される。
SMTは一つの処理ユニット内にレジスタ及びプログラムカウンタを複製するので、一度に複数のスレッドの状態を記憶できる。これらのスレッドをSMTプロセッサ内で一つずつ部分的に実行し、プロセッサによりスレッド間で高速に切り替えることにより、仮想並列を実現させる。しかしながら、処理装置が複雑であるとともに、レジスタ及びプログラムカウンタを複製するための外部ハードウェアが必要である。さらに、この並列性はあくまでも仮想であり、スレッドを高速に切り替えても実際に実行されるスレッドは常に一つのみである。
CMPは少なくとも二つの処理ユニットを有し、各処理ユニットは自身のスレッドを実行する。CMPはSMTプロセッサと比べて本物の並列性を有するが、処理ユニットで実行されているスレッドを切り替える際の待ち時間により性能が悪い。CMPの問題点は一つ以上の処理ユニット内でスレッド管理タスクをソフトウェアにより実行している点と、スレッド管理に必要なデータを格納するために外部メモリにアクセスすることが多い点である。そのためスレッドの実行に利用できる処理ユニット数やメモリ帯域幅が制限される。またスレッド管理タスク自体も実行されるスレッドであるので、処理ユニットの割当管理、スレッド実行のスケジューリング及びリアルタイムでのオブジェクト同期の機能が制限される。
最近、SMTマルチプロセッサを一チップに集積したハイブリッド実装にSMT及びCMPを組み込むことにより、膨大な量の仮想及び現実の並列処理を行っている。しかしながら、帯域内でのスレッド管理により生じる問題については言及していない。
従って、先行技術の欠点を解消してマイクロプロセッサの性能を向上させるために、マルチコアプロセッサに専用スレッド管理ユニットを内蔵する方法及び装置が求められている。
本発明は、オンチップネットワークにより相互接続した演算処理ユニット、インタフェースブロック及び機能ブロックを有するCMPに専用スレッド管理を内蔵することにより、従来のSMTプロセッサ及びCMPの欠点を解消することを目的とする。このアーキテクチャではスレッド管理を帯域外で行うので、短い待ち時間で高速にスレッドを切り替えるとともに、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせない。
本発明の一側面は、複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法である。少なくとも一つのスケジューリング命令と少なくとも一つの実行命令とを受け取り、少なくとも一つのスケジューリング命令に応じて、少なくとも一つの実行命令を実行するプロセッサコアに割り当てる。一実施態様では、命令の割り当ては帯域外で行う。複数のプロセッサコアから実行するプロセッサコアを選択し、前記選択したプロセッサコアに少なくとも一つの実行命令を割り当てても良い。プロセッサコアは複数の同種のプロセッサコアから選んでも良い。プロセッサコアの電力状態を変化させても良い。
別の実施態様では、前記少なくとも一つの実行命令に関連するスレッドを特定し、前記特定されたスレッドに関連するプロセッサコアに少なくとも一つの実行命令を割り当てる。さらに別の実施態様では、複数のプロセッサコアから電力及び熱分布の少なくとも一方を考慮して実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てる。さらに別の実施態様では、複数のプロセッサコアからプロセッサの状態に関する記憶情報を用いて実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てる。
一実施態様では、少なくとも一つの実行命令を有する複数の実行スレッドを受け取り、前記受け取った複数の中からスレッドを選択し、前記選択されたスレッドから少なくとも一つの実行命令を受け取る。
種々の実施態様において、本発明の方法は任意の工程を含んでも良い。本発明の方法は、前記割り当てられた少なくとも一つの命令を実行した旨のメッセージを前記プロセッサコアから受け取る工程をさらに有する。前記スレッドの状態及び情報又は前記プロセッサコアの状態を記憶しても良い。プロセッサコアが第一の割当命令を実行した後にスレッド間の依存関係が検出された場合、前記実行された命令を第二の割当命令を実行した後に再割り当てすることにより、スレッド間の依存関係なしに前記第一の命令を再実行することができる。
本発明の別の側面は、複数のプロセッサコアとスレッド管理ユニットとを有する機器であって、前記スレッド管理ユニットが実行命令及びスケジューリング命令を受け取り、前記スケジューリング命令に応じて前記実行命令をプロセッサコアに割り当てる機器である。前記複数のプロセッサコアは同種であっても良く、前記スレッド管理ユニットがハードウェアにのみ実装されているか、ハードウェア及びソフトウェアに実装されていても良い。前記プロセッサコアは異なる速度で動作しても良く、ネットワーク内で相互接続しているか、ネットワークにより接続されていても良く、ネットワークは光ネットワークでも良い。本発明の装置は少なくとも一つの周辺機器を有しても良い。
前記スレッド管理ユニットは一つ以上のステートマシン、マイクロプロセッサ及び専用メモリを有しても良い。マイクロプロセッサは一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのものでも良い。スレッド管理ユニットはスレッド及び資源の情報を記憶するためのものでも良い。
本発明のさらに別の側面は、ソフトウェアプログラムをコンパイルする方法である。コンパイル可能なソースコードステートメントを受け取り、前記ソースコードステートメントに応じた機械可読なオブジェクトコードステートメントを作成する。前記オブジェクトコードステートメントをプロセッサコアに割り当てるようにスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する。
本発明の方法は、機械可読なオブジェクトコードステートメントを繰り返し作成し、前記作成された複数のステートメントを境界により分割された複数のスレッドに構成する工程をさらに有しても良い。この実施態様では、スレッド管理ユニットに通知するための機械可読なオブジェクトコードステートメントをスレッド間の境界に追加する。別の実施態様では、スレッド間の境界を示すコンパイラ可能なソースコードステートメントに応じてスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する。
本発明の特徴及び効果を明細書、図及び特許請求の範囲により以下詳述する。
本発明の特徴をより理解するために、以下の図を参照する。
図1はマルチコア環境において専用スレッド管理を有する本発明の一実施態様を示すブロック図である。 図2は本発明による複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法を示すフローチャートである。 図3はスレッド管理ユニットの一例を示すブロック図である。 図4は本発明の実施態様に用いるソフトウェアプログラムのコンパイル方法を示すフローチャートである。
全図を通して同一の参照番号は同一の部分を表す。図は本発明の原理及び概念を拡大縮小・強調するものではない。
発明の詳細な説明
本発明の実施態様は、相互接続した演算処理ユニット、インタフェースブロック及び機能ブロックを有するCMPに専用スレッド管理を内蔵することにより、従来のマルチコア方式の欠点を解消するものである。スレッド管理がハードウェアにのみ実装されているか、ハードウェア及びソフトウェアに実装されているので、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせることなくスレッドを切り替えることができる。
本発明のハードウェア実施態様は、SMTのようにレジスタ及びプログラムカウンタを複製する必要がないので、SMTよりも単純で安価である。また本発明の方法及び装置とSMTとを組み合わせることによりさらなる効果が得られる。管理ユニット自体を有するシステムブロックをオンチップネットワークにより接続すると、面積効率が良くなり、相互接続の拡張が可能になるので、多数の演算処理ユニット及び機能ブロックを使用できるとともに消費電力管理を柔軟に行える。スレッド管理ユニットは機能ブロックと通信して、演算処理ユニット及び資源の割り当て、スレッドのスケジューリング及びオブジェクトの同期化を行う。
本発明の実施態様は、多数の演算処理ユニットが内蔵されたオンチップネットワークアーキテクチャを帯域外で動作する(どのプロセッサユニットからも独立した)専用スレッド管理ユニットを有する一つの集積回路に組み込むことにより、低コストでスレッドレベルの並列性を向上させる。一実施態様によれば、スレッド管理ユニットはハードウェアに完全に実装されており、専用メモリを有し、他の機能ブロックと全域でアクセス可能である。別の実施態様によれば、スレッド管理ユニットはハードウェアに大部分又は一部実装されている。
演算処理ユニットのオンチップネットワーク内で専用スレッド管理ユニットを用いることにより、ソフトウェアによりスレッド管理を行う従来のSMT及びCMPに固有のオーバーヘッドを除去でき、全体の性能が改善される。本発明の実施態様は、特定の演算処理ユニットに対して局所的にスレッド管理を行うのではなく包括的にスレッド管理を行うので、従来のSMTよりも高い並列実行性が得られる。包括的にスレッド管理を行うことにより、資源の割り当てを改善でき、プロセッサ利用率が向上し、かつ包括的に電力管理を行うことができる。
アーキテクチャ
図1に示すように、本発明の典型的な実施態様は少なくとも二つの演算処理ユニット100と、スレッド管理ユニット104と、オンチップネットワークインタコネクト108と、複数の任意ユニットとを有する。任意ユニットには、例えばネットワークインタフェースユニット(図示せず)を有する外部インタフェース等の機能ブロック112及び外部メモリインタフェース116が含まれる。
各演算処理ユニット100は、例えばマイクロプロセッサコア、データ及び命令キャッシュ、及びネットワークインタフェースユニットである。図2に示すように、スレッド管理ユニット104は、具体例にはマイクロプロセッサコア又はステートマシン200、専用メモリ204及びネットワークインタフェースユニット208である。ネットワークインタコネクト108は、例えば少なくとも一つのルータ120及びルータ120を演算処理ユニット100又は機能ブロック112のネットワークインタフェースユニットに接続する信号ラインである。
オンチップネットワーク構造108により、プロセッサ100及び機能ブロック112等のノードは他のノードと通信することができる。このアーキテクチャによれば、多数のノードを1チップ内に構成することができ、図1に示す実施態様では演算処理ユニットが16個配置されている。各演算処理ユニット100はローカルキャッシュメモリを有するマイクロプロセッサコアとネットワークインタフェースユニットとを有する。多数の演算処理ユニットにより高水準の並列演算処理能力が得られる。オンチップネットワークアーキテクチャ108と帯域外で動作する専用スレッド管理ユニット104とを組み合わせることにより、多数の演算処理ユニットを一つの集積回路に実装することができる。
ネットワーク108によるノード間の通信は、コマンド,データ又はその両方を含むメッセージ形式のパケット通信である。
スレッド管理ユニット
動作中にプロセッサを初期化した後、スレッド管理ユニットはメモリからプログラム命令を取り出して実行する演算処理ユニットを割り当てる。例えば図3に示すように、スレッド管理ユニットは少なくとも一つのスケジューリング命令を受け取り(工程300)、少なくとも一つのプログラム命令を受け取り(工程304)、スケジューリング命令に応じて実行するプログラム命令を割り当てる(工程308)。
演算処理ユニットが割り当てられた命令を実行している際に新しいスレッドを作り出すプログラム命令を受けた場合、そのメッセージがネットワークを介してスレッド管理ユニットに送られる。スレッド管理ユニットはメッセージを受信した後(工程300')、演算処理ユニットがまだあると想定して、新しいスレッドの命令を取り出して実行するために別の演算処理ユニットを割り当てる(工程308')。この方法では、スレッド管理ユニット又は余分な演算処理ユニットにより割り当てられる係属中のスレッドがなくなるまで、複数のスレッドが複数の演算処理ユニット上で同時に実行される。割り当てるための余分な演算処理ユニットがなくなると、スレッド管理ユニットは追加のスレッドをメモリ内の待ち行列に格納する。
スレッド管理ユニット内のスケジューリングロジックが実行中のスレッドに割り込み、優先度の高いスレッドと置き換えても良い。この場合、割り込まれたスレッドは待ち行列に加えられ、演算処理ユニットが空いたときに再開される。
演算処理ユニットは割り当てられたスレッドに関連する命令を実行し終わると、スレッド管理ユニットに自分がフリーになった旨のメッセージを送り(工程300")、スレッド管理ユニットから新たなスレッドを割り当てられる(工程308")。実行されるスレッドがある限りこのプロセスを繰り返す。スレッド管理ユニットは全体の消費電力を減らすためにフリーの演算処理ユニットをアイドル状態にしても良い。電力負荷及び熱浪費を分散させるために、実行中のスレッドを一つの物理的な演算処理ユニットから別のユニットに移しても良い。
スレッド管理ユニットは、演算処理ユニットが他の演算処理ユニット又は機能ブロックが命令を実行するのを待っている停止状態を検出するために、チップ内の演算処理ユニット及び機能ブロックの状態を監視する。スレッド管理ユニットはさらに、実行中,休止中,待機中等の個々のスレッド状態も追跡する。スレッド状態の情報は管理ユニット内にあるローカルメモリに記憶され、管理ユニットが実行するスレッドをスケジューリングする際に用いられる。
既知のスレッド状態と優先度,親和性,公平性等のスケジューリング規則とを用いて、スレッド管理ユニットはメモリ内の指定場所から特定の演算処理ユニットに命令を実行するようメッセージを送る。そのため僅かな待ち時間で演算処理ユニットの動作変更ができる。スケジューリング規則は起動時等に設定できる。
図2に示すように、スレッド管理ユニット104は割り込みコントローラ208及びシステムタイマ/カウンタ212を有しても良い。この実施態様では、スレッド管理ユニット104はまず全ての割り込みを受け取り、割り込みの演算処理を行うのに適当な演算処理ユニット100又は機能ブロック112にメッセージを送る。
スレッドと機能ブロック,外部インタフェース等のシステム資源との間の親和性、及びスレッド間の親和性をスレッド管理ユニットにより設定しても良い。例えばコンパイラ又はエンドユーザにより特定の演算処理ユニット,機能ブロック等のスレッドに関連するスレッドを指定しても良い。スレッド親和性を考慮して演算処理ユニットの割り当てを最適化すると、例えば特定のスレッドを最初に実行する演算処理ユニットとそれと親和性を有する演算処理ユニット又はシステム資源との物理的距離を縮めることができる。
スレッド管理ユニットは特定の演算処理ユニットと関連せずオンチップネットワーク上で独立したノードであるので、帯域外で動作する。この方法はソフトウェアスレッド又は特定の演算処理ユニットに関連するハードウェアにより帯域内でスレッド管理を行う従来のスレッド管理方式より優れている。第一に、帯域外でスレッド管理を行うことにより、どの演算処理ユニットにおいてもオーバーヘッドが生じず、コンピュータ処理を行う演算処理ユニットをフリーの状態にすることができる。第二に、スレッド及びオンチップ資源を局所的に管理するのではなくネットワーク全体で管理するので、資源の割り当て及び利用を効率良く行うことができ、効率及び性能が向上する。第三に、オンチップネットワークと集中型のスケジューリング及び同期機構とを組み合わせることにより、数千の演算処理ユニットを有するマルチコアアーキテクチャが得られる。最後に、消費電力を削減するためにシステム資源をアイドル状態にすることもできる。
図3に示すように、スレッド管理ユニット104はスケジューリング及びスレッド管理を行うための情報を記憶する専用メモリ204を有する。専用メモリ204は実行予定のスレッドの待ち行列、プロセッサユニット及び機能ユニットの状態、実行中のスレッドの状態、ロック,相互排除又は共有するオブジェクトの所有権及びアクセス権、及びセマフォ等を記憶する。専用メモリ204はスレッド管理ユニット104内でマイクロプロセッサ又はステートマシン200と直接結合しているので、スレッド管理ユニット104は共有メモリ又はオンチップメモリにアクセスしなくて済む。この結果、スケジュール及び管理タスクの実行が速くなるとともに、スケジュール又は管理動作に必要なクロック周期数を保証する。
ソフトウェアの開発方法
演算処理ユニットのオンチップネットと専用スレッド管理ユニットとを組み合わせることにより、ソフトウェア開発者の明確な指示が無くてもスレッド管理プロセスを効率的に行うことができる。従って、ソフトウェア開発者は新規又は既存のマルチスレッドソフトウェアプリケーションを、ソースコードを変更・修正することなく、専用のコンパイラ,リンカ又はその両方を用いて実行できる。
図4に示すように、専用のコンパイラ又はリンカにより、コンパイル可能なソースコードステートメントを変換し(工程400)、オンチップネットワーク内のプロセッサユニットによりスレッドとして実行可能な一つ以上の機械可読なオブジェクトコードステートメントにする(工程404)。専用のコンパイラ又はリンカはさらに、新たなスレッドに関連する命令の実行開始を演算処理ユニットに通知する機械可読な特殊オブジェクトコードステートメントを追加する(工程408)。これらの特殊ステートメントは例えばコンパイラ又はリンカにより自動的に特定されたスレッド間の境界に配置されるか、開発者により指定されたスレッド間の境界に配置される。
開発者が並列性をさらに強化できるように、コンパイラ又はプリプロセッサによる静的コード分析を行っても良い。JAVA等の高級言語用ランタイム仮想マシンを実装することにより、並列性の強化が可能になる。
上述したように、専用スレッド管理を用いたマルチコア演算処理において優れた効果が得られる。使用された用語及び表現は説明するためのものであって限定するものではなく、描写及び記述された特徴と同等のもの又はその一部を排除する意図はない。本発明の範囲内において種々の修正が可能である。

Claims (29)

  1. 複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法であって、少なくとも一つのスケジューリング命令を受け取る工程と、少なくとも一つの実行命令を受け取る工程と、前記少なくとも一つのスケジューリング命令に応じて、少なくとも一つの実行命令を実行するプロセッサコアに割り当てる工程とを有することを特徴とする方法。
  2. 請求項1に記載の方法において、前記少なくとも一つの実行命令の割り当てを帯域外で行うことを特徴とする方法。
  3. 請求項1に記載の方法において、複数のプロセッサコアから実行するプロセッサコアを選択し、前記選択したプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
  4. 請求項3に記載の方法において、複数の同種のプロセッサコアから実行するプロセッサコアを選択することを特徴とする方法。
  5. 請求項1に記載の方法において、前記少なくとも一つの実行命令に関連するスレッドを特定し、前記特定されたスレッドに関連するプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
  6. 請求項1に記載の方法において、プロセッサコアの電力状態を変化させる工程をさらに有することを特徴とする方法。
  7. 請求項1に記載の方法において、複数のプロセッサコアから電力及び熱分布の少なくとも一方を考慮して実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
  8. 請求項1に記載の方法において、前記割り当てられた少なくとも一つの命令を実行した旨のメッセージを前記プロセッサコアから受け取る工程をさらに有することを特徴とする方法。
  9. 請求項1に記載の方法において、前記プロセッサコアの状態を記憶する工程をさらに有することを特徴とする方法。
  10. 請求項1に記載の方法において、前記スレッドの状態及び情報を記憶する工程をさらに有することを特徴とする方法。
  11. 請求項9に記載の方法において、複数のプロセッサコアからプロセッサの状態に関する記憶情報を用いて実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
  12. 請求項1に記載の方法において、少なくとも一つの実行命令を有する複数の実行スレッドを受け取り、前記受け取った複数の中からスレッドを選択し、前記選択されたスレッドから少なくとも一つの実行命令を受け取ることを特徴とする方法。
  13. 請求項1に記載の方法において、プロセッサコアが第一の割当命令を実行した後にスレッド間の依存関係を検出し、前記実行された命令を第二の割当命令を実行した後に再割り当てする方法であって、前記第二の割当命令を実行することにより、スレッド間の依存関係なしに前記第一の命令を再実行することができることを特徴とする方法。
  14. 複数のプロセッサコアとスレッド管理ユニットとを有する機器であって、前記スレッド管理ユニットが実行命令及びスケジューリング命令を受け取り、前記スケジューリング命令に応じて前記実行命令をプロセッサコアに割り当てることを特徴とする機器。
  15. 請求項14に記載の機器において、前記複数のプロセッサコアが同種であることを特徴とする機器。
  16. 請求項14に記載の機器において、前記スレッド管理ユニットがハードウェアにのみ実装されていることを特徴とする機器。
  17. 請求項14に記載の機器において、前記スレッド管理ユニットがハードウェア及びソフトウェアに実装されていることを特徴とする機器。
  18. 請求項14に記載の機器において、前記プロセッサコアがネットワーク内で相互接続していることを特徴とする機器。
  19. 請求項14に記載の機器において、前記プロセッサコアがネットワークにより接続されていることを特徴とする機器。
  20. 請求項14に記載の機器において、前記プロセッサコアが光ネットワーク内で相互接続していることを特徴とする機器。
  21. 請求項14に記載の機器において、前記スレッド管理ユニットがステートマシンを有することを特徴とする機器。
  22. 請求項14に記載の機器において、前記スレッド管理ユニットが一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのマイクロプロセッサを有することを特徴とする機器。
  23. 請求項14に記載の機器において、前記スレッド管理ユニットがスレッド及び資源の情報を記憶するための専用メモリを有することを特徴とする機器。
  24. 請求項14に記載の機器において、少なくとも一つの周辺機器を有することを特徴とする機器。
  25. 請求項14に記載の機器において、前記複数のプロセッサコアの少なくとも二つが異なる速度で動作することを特徴とする機器。
  26. ソフトウェアプログラムをコンパイルする方法であって、コンパイル可能なソースコードステートメントを受け取る工程と、前記ソースコードステートメントに応じた機械可読なオブジェクトコードステートメントを作成する工程と、前記オブジェクトコードステートメントをプロセッサコアに割り当てるようにスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する工程とを有することを特徴とする方法。
  27. 請求項26に記載の方法において、機械可読なオブジェクトコードステートメントを繰り返し作成し、前記作成された複数のステートメントを境界により一対に分割された複数のスレッド内に組織する工程をさらに有することを特徴とする方法。
  28. 請求項27に記載の方法において、スレッド管理ユニットに通知するための機械可読なオブジェクトコードステートメントをスレッド間の境界に追加することを特徴とする方法。
  29. 請求項26に記載の方法において、スレッド間の境界を示すコンパイラ可能なソースコードステートメントに応じてスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加することを特徴とする方法。
JP2008544448A 2005-12-06 2006-12-06 専用スレッド管理を用いたマルチコアの演算処理方法及び装置 Pending JP2009519513A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US74267405P 2005-12-06 2005-12-06
PCT/US2006/046438 WO2007067562A2 (en) 2005-12-06 2006-12-06 Methods and apparatus for multi-core processing with dedicated thread management

Publications (1)

Publication Number Publication Date
JP2009519513A true JP2009519513A (ja) 2009-05-14

Family

ID=37714655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008544448A Pending JP2009519513A (ja) 2005-12-06 2006-12-06 専用スレッド管理を用いたマルチコアの演算処理方法及び装置

Country Status (5)

Country Link
US (1) US20070150895A1 (ja)
EP (1) EP1963963A2 (ja)
JP (1) JP2009519513A (ja)
CN (1) CN101366004A (ja)
WO (1) WO2007067562A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014500549A (ja) * 2010-11-18 2014-01-09 日本テキサス・インスツルメンツ株式会社 処理クラスタのためのロード/ストア回路要素

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007299334A (ja) * 2006-05-02 2007-11-15 Sony Computer Entertainment Inc 情報処理システム及びコンピュータの制御方法
US8055951B2 (en) * 2007-04-10 2011-11-08 International Business Machines Corporation System, method and computer program product for evaluating a virtual machine
US20080307422A1 (en) * 2007-06-08 2008-12-11 Kurland Aaron S Shared memory for multi-core processors
US8059670B2 (en) * 2007-08-01 2011-11-15 Texas Instruments Incorporated Hardware queue management with distributed linking information
US7886172B2 (en) * 2007-08-27 2011-02-08 International Business Machines Corporation Method of virtualization and OS-level thermal management and multithreaded processor with virtualization and OS-level thermal management
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
CN101236576B (zh) * 2008-01-31 2011-12-07 复旦大学 一种适用于异质可重构处理器的互联模型
CN101227486B (zh) * 2008-02-03 2010-11-17 浙江大学 适合于多处理器片上网络的传输协议
US8223779B2 (en) * 2008-02-07 2012-07-17 Ciena Corporation Systems and methods for parallel multi-core control plane processing
GB0808576D0 (en) * 2008-05-12 2008-06-18 Xmos Ltd Compiling and linking
US8561073B2 (en) * 2008-09-19 2013-10-15 Microsoft Corporation Managing thread affinity on multi-core processors
US8140832B2 (en) * 2009-01-23 2012-03-20 International Business Machines Corporation Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
US8271809B2 (en) * 2009-04-15 2012-09-18 International Business Machines Corporation On-chip power proxy based architecture
US8650413B2 (en) * 2009-04-15 2014-02-11 International Business Machines Corporation On-chip power proxy based architecture
US9164969B1 (en) * 2009-09-29 2015-10-20 Cadence Design Systems, Inc. Method and system for implementing a stream reader for EDA tools
KR101191530B1 (ko) 2010-06-03 2012-10-15 한양대학교 산학협력단 복수의 이종 코어를 포함하는 멀티코어 프로세서 시스템 및 그 제어 방법
US8527970B1 (en) * 2010-09-09 2013-09-03 The Boeing Company Methods and systems for mapping threads to processor cores
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US20130219372A1 (en) * 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US10423216B2 (en) * 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
CN105765528B (zh) 2013-11-13 2019-09-24 微软技术许可有限责任公司 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质
CN103838631B (zh) * 2014-03-11 2017-04-19 武汉科技大学 一种面向片上网络的多线程调度实现方法
US9330433B2 (en) 2014-06-30 2016-05-03 Intel Corporation Data distribution fabric in scalable GPUs
EP3289442B1 (en) 2015-04-30 2023-04-19 Microchip Technology Incorporated Central processing unit with enhanced instruction set
US9841999B2 (en) 2015-07-31 2017-12-12 Futurewei Technologies, Inc. Apparatus and method for allocating resources to threads to perform a service
US10860374B2 (en) * 2015-09-26 2020-12-08 Intel Corporation Real-time local and global datacenter network optimizations based on platform telemetry data
US10509677B2 (en) 2015-09-30 2019-12-17 Lenova (Singapore) Pte. Ltd. Granular quality of service for computing resources
US9519583B1 (en) * 2015-12-09 2016-12-13 International Business Machines Corporation Dedicated memory structure holding data for detecting available worker thread(s) and informing available worker thread(s) of task(s) to execute
CN108462658B (zh) 2016-12-12 2022-01-11 阿里巴巴集团控股有限公司 对象分配方法及装置
US10614406B2 (en) 2018-06-18 2020-04-07 Bank Of America Corporation Core process framework for integrating disparate applications
CN109522112B (zh) * 2018-12-27 2022-06-17 上海识致信息科技有限责任公司 一种数据采集系统
CN113227917A (zh) * 2019-12-05 2021-08-06 Mzta科技中心有限公司 模块化plc自动配置系统

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US5956748A (en) * 1997-01-30 1999-09-21 Xilinx, Inc. Asynchronous, dual-port, RAM-based FIFO with bi-directional address synchronization
US6044453A (en) * 1997-09-18 2000-03-28 Lg Semicon Co., Ltd. User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure
US6275831B1 (en) * 1997-12-16 2001-08-14 Starfish Software, Inc. Data processing environment with methods providing contemporaneous synchronization of two or more clients
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6134675A (en) * 1998-01-14 2000-10-17 Motorola Inc. Method of testing multi-core processors and multi-core processor testing device
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6269425B1 (en) * 1998-08-20 2001-07-31 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6449622B1 (en) * 1999-03-08 2002-09-10 Starfish Software, Inc. System and methods for synchronizing datasets when dataset changes may be received out of order
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6247135B1 (en) * 1999-03-03 2001-06-12 Starfish Software, Inc. Synchronization process negotiation for computing devices
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6578065B1 (en) * 1999-09-23 2003-06-10 Hewlett-Packard Development Company L.P. Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory
US6629271B1 (en) * 1999-12-28 2003-09-30 Intel Corporation Technique for synchronizing faults in a processor having a replay system
US6550020B1 (en) * 2000-01-10 2003-04-15 International Business Machines Corporation Method and system for dynamically configuring a central processing unit with multiple processing cores
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6922417B2 (en) * 2000-01-28 2005-07-26 Compuware Corporation Method and system to calculate network latency, and to display the same field of the invention
US6931641B1 (en) * 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US20050055382A1 (en) * 2000-06-28 2005-03-10 Lounas Ferrat Universal synchronization
US6691216B2 (en) * 2000-11-08 2004-02-10 Texas Instruments Incorporated Shared program memory for use in multicore DSP devices
US6895479B2 (en) * 2000-11-15 2005-05-17 Texas Instruments Incorporated Multicore DSP device having shared program memory with conditional write protection
US6665755B2 (en) * 2000-12-22 2003-12-16 Nortel Networks Limited External memory engine selectable pipeline architecture
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
US8463744B2 (en) * 2001-01-03 2013-06-11 International Business Machines Corporation Method and system for synchronizing data
US6976155B2 (en) * 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US7320011B2 (en) * 2001-06-15 2008-01-15 Nokia Corporation Selecting data for synchronization and for software configuration
US20030005380A1 (en) * 2001-06-29 2003-01-02 Nguyen Hang T. Method and apparatus for testing multi-core processors
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
JP3708853B2 (ja) * 2001-09-03 2005-10-19 松下電器産業株式会社 マルチプロセッサシステムおよびプログラム制御方法
US6681274B2 (en) * 2001-10-15 2004-01-20 Advanced Micro Devices, Inc. Virtual channel buffer bypass for an I/O node of a computer system
US6901491B2 (en) * 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US20030229740A1 (en) * 2002-06-10 2003-12-11 Maly John Warren Accessing resources in a microprocessor having resources of varying scope
US20040019722A1 (en) * 2002-07-25 2004-01-29 Sedmak Michael C. Method and apparatus for multi-core on-chip semaphore
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US20040049628A1 (en) * 2002-09-10 2004-03-11 Fong-Long Lin Multi-tasking non-volatile memory subsystem
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US7089340B2 (en) * 2002-12-31 2006-08-08 Intel Corporation Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives
US7020748B2 (en) * 2003-01-21 2006-03-28 Sun Microsystems, Inc. Cache replacement policy to mitigate pollution in multicore processors
US7146514B2 (en) * 2003-07-23 2006-12-05 Intel Corporation Determining target operating frequencies for a multiprocessor system
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US20050108704A1 (en) * 2003-11-14 2005-05-19 International Business Machines Corporation Software distribution application supporting verification of external installation programs
US20050125582A1 (en) * 2003-12-08 2005-06-09 Tu Steven J. Methods and apparatus to dispatch interrupts in multi-processor systems
US7391776B2 (en) * 2003-12-16 2008-06-24 Intel Corporation Microengine to network processing engine interworking for network processors
US20050154573A1 (en) * 2004-01-08 2005-07-14 Maly John W. Systems and methods for initializing a lockstep mode test case simulation of a multi-core processor design
US8533716B2 (en) * 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
US20060095905A1 (en) * 2004-11-01 2006-05-04 International Business Machines Corporation Method and apparatus for servicing threads within a multi-processor system
US20060107262A1 (en) * 2004-11-03 2006-05-18 Intel Corporation Power consumption-based thread scheduling
US9063785B2 (en) * 2004-11-03 2015-06-23 Intel Corporation Temperature-based thread scheduling
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
JP4606142B2 (ja) * 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
JP5260962B2 (ja) * 2004-12-30 2013-08-14 インテル・コーポレーション 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014500549A (ja) * 2010-11-18 2014-01-09 日本テキサス・インスツルメンツ株式会社 処理クラスタのためのロード/ストア回路要素

Also Published As

Publication number Publication date
CN101366004A (zh) 2009-02-11
WO2007067562A3 (en) 2007-10-25
EP1963963A2 (en) 2008-09-03
US20070150895A1 (en) 2007-06-28
WO2007067562A2 (en) 2007-06-14

Similar Documents

Publication Publication Date Title
JP2009519513A (ja) 専用スレッド管理を用いたマルチコアの演算処理方法及び装置
Wu et al. Flep: Enabling flexible and efficient preemption on gpus
Tanasic et al. Enabling preemptive multiprogramming on GPUs
US10430190B2 (en) Systems and methods for selectively controlling multithreaded execution of executable code segments
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
US8205200B2 (en) Compiler-based scheduling optimization hints for user-level threads
CN112465129B (zh) 片内异构人工智能处理器
WO2013131340A1 (zh) 片上系统soc的多处理器的调度方法及装置
JP2013524386A (ja) ランスペース方法、システムおよび装置
JP5911997B2 (ja) 装置、システム及びメモリ管理の方法
US20050188177A1 (en) Method and apparatus for real-time multithreading
Giorgi et al. An introduction to DF-Threads and their execution model
Vaishnav et al. Heterogeneous resource-elastic scheduling for CPU+ FPGA architectures
Wu et al. Switchflow: preemptive multitasking for deep learning
Arnold et al. Power aware heterogeneous MPSoC with dynamic task scheduling and increased data locality for multiple applications
Memik et al. Nepal: A framework for efficiently structuring applications for network processors
Jatala et al. Improving GPU performance through resource sharing
Tarakji et al. The development of a scheduling system GPUSched for graphics processing units
Shoushtari et al. Shave-ice: Sharing distributed virtualized spms in many-core embedded systems
Zaykov et al. Reconfigurable multithreading architectures: A survey
Creech et al. Transparently space sharing a multicore among multiple processes
Durelli et al. Runtime resource management in heterogeneous system architectures: The save approach
Ukidave Architectural and Runtime Enhancements for Dynamically Controlled Multi-Level Concurrency on GPUs
Burgio et al. Real-time heterogeneous platforms
Ranganath et al. Lc-memento: A memory model for accelerated architectures