JP2009519513A - 専用スレッド管理を用いたマルチコアの演算処理方法及び装置 - Google Patents
専用スレッド管理を用いたマルチコアの演算処理方法及び装置 Download PDFInfo
- 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
Links
- 238000003672 processing method Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000007726 management method Methods 0.000 claims description 82
- 230000004044 response Effects 0.000 claims description 6
- 238000013468 resource allocation Methods 0.000 claims description 4
- 230000003287 optical effect Effects 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 61
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003467 diminishing effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002918 waste heat Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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/3891—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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の欠点を解消することを目的とする。このアーキテクチャではスレッド管理を帯域外で行うので、短い待ち時間で高速にスレッドを切り替えるとともに、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせない。
本発明の一側面は、複数のプロセッサコアを有する機器においてマルチコアを仮想化する方法である。少なくとも一つのスケジューリング命令と少なくとも一つの実行命令とを受け取り、少なくとも一つのスケジューリング命令に応じて、少なくとも一つの実行命令を実行するプロセッサコアに割り当てる。一実施態様では、命令の割り当ては帯域外で行う。複数のプロセッサコアから実行するプロセッサコアを選択し、前記選択したプロセッサコアに少なくとも一つの実行命令を割り当てても良い。プロセッサコアは複数の同種のプロセッサコアから選んでも良い。プロセッサコアの電力状態を変化させても良い。
別の実施態様では、前記少なくとも一つの実行命令に関連するスレッドを特定し、前記特定されたスレッドに関連するプロセッサコアに少なくとも一つの実行命令を割り当てる。さらに別の実施態様では、複数のプロセッサコアから電力及び熱分布の少なくとも一方を考慮して実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てる。さらに別の実施態様では、複数のプロセッサコアからプロセッサの状態に関する記憶情報を用いて実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てる。
一実施態様では、少なくとも一つの実行命令を有する複数の実行スレッドを受け取り、前記受け取った複数の中からスレッドを選択し、前記選択されたスレッドから少なくとも一つの実行命令を受け取る。
種々の実施態様において、本発明の方法は任意の工程を含んでも良い。本発明の方法は、前記割り当てられた少なくとも一つの命令を実行した旨のメッセージを前記プロセッサコアから受け取る工程をさらに有する。前記スレッドの状態及び情報又は前記プロセッサコアの状態を記憶しても良い。プロセッサコアが第一の割当命令を実行した後にスレッド間の依存関係が検出された場合、前記実行された命令を第二の割当命令を実行した後に再割り当てすることにより、スレッド間の依存関係なしに前記第一の命令を再実行することができる。
本発明の別の側面は、複数のプロセッサコアとスレッド管理ユニットとを有する機器であって、前記スレッド管理ユニットが実行命令及びスケジューリング命令を受け取り、前記スケジューリング命令に応じて前記実行命令をプロセッサコアに割り当てる機器である。前記複数のプロセッサコアは同種であっても良く、前記スレッド管理ユニットがハードウェアにのみ実装されているか、ハードウェア及びソフトウェアに実装されていても良い。前記プロセッサコアは異なる速度で動作しても良く、ネットワーク内で相互接続しているか、ネットワークにより接続されていても良く、ネットワークは光ネットワークでも良い。本発明の装置は少なくとも一つの周辺機器を有しても良い。
前記スレッド管理ユニットは一つ以上のステートマシン、マイクロプロセッサ及び専用メモリを有しても良い。マイクロプロセッサは一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのものでも良い。スレッド管理ユニットはスレッド及び資源の情報を記憶するためのものでも良い。
本発明のさらに別の側面は、ソフトウェアプログラムをコンパイルする方法である。コンパイル可能なソースコードステートメントを受け取り、前記ソースコードステートメントに応じた機械可読なオブジェクトコードステートメントを作成する。前記オブジェクトコードステートメントをプロセッサコアに割り当てるようにスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する。
本発明の方法は、機械可読なオブジェクトコードステートメントを繰り返し作成し、前記作成された複数のステートメントを境界により分割された複数のスレッドに構成する工程をさらに有しても良い。この実施態様では、スレッド管理ユニットに通知するための機械可読なオブジェクトコードステートメントをスレッド間の境界に追加する。別の実施態様では、スレッド間の境界を示すコンパイラ可能なソースコードステートメントに応じてスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する。
本発明の特徴及び効果を明細書、図及び特許請求の範囲により以下詳述する。
本発明の特徴をより理解するために、以下の図を参照する。
全図を通して同一の参照番号は同一の部分を表す。図は本発明の原理及び概念を拡大縮小・強調するものではない。
本発明の実施態様は、相互接続した演算処理ユニット、インタフェースブロック及び機能ブロックを有するCMPに専用スレッド管理を内蔵することにより、従来のマルチコア方式の欠点を解消するものである。スレッド管理がハードウェアにのみ実装されているか、ハードウェア及びソフトウェアに実装されているので、ソフトウェアベースのスレッド管理スレッドのオーバーヘッドを生じさせることなくスレッドを切り替えることができる。
本発明のハードウェア実施態様は、SMTのようにレジスタ及びプログラムカウンタを複製する必要がないので、SMTよりも単純で安価である。また本発明の方法及び装置とSMTとを組み合わせることによりさらなる効果が得られる。管理ユニット自体を有するシステムブロックをオンチップネットワークにより接続すると、面積効率が良くなり、相互接続の拡張が可能になるので、多数の演算処理ユニット及び機能ブロックを使用できるとともに消費電力管理を柔軟に行える。スレッド管理ユニットは機能ブロックと通信して、演算処理ユニット及び資源の割り当て、スレッドのスケジューリング及びオブジェクトの同期化を行う。
本発明の実施態様は、多数の演算処理ユニットが内蔵されたオンチップネットワークアーキテクチャを帯域外で動作する(どのプロセッサユニットからも独立した)専用スレッド管理ユニットを有する一つの集積回路に組み込むことにより、低コストでスレッドレベルの並列性を向上させる。一実施態様によれば、スレッド管理ユニットはハードウェアに完全に実装されており、専用メモリを有し、他の機能ブロックと全域でアクセス可能である。別の実施態様によれば、スレッド管理ユニットはハードウェアに大部分又は一部実装されている。
演算処理ユニットのオンチップネットワーク内で専用スレッド管理ユニットを用いることにより、ソフトウェアによりスレッド管理を行う従来のSMT及びCMPに固有のオーバーヘッドを除去でき、全体の性能が改善される。本発明の実施態様は、特定の演算処理ユニットに対して局所的にスレッド管理を行うのではなく包括的にスレッド管理を行うので、従来のSMTよりも高い並列実行性が得られる。包括的にスレッド管理を行うことにより、資源の割り当てを改善でき、プロセッサ利用率が向上し、かつ包括的に電力管理を行うことができる。
アーキテクチャ
図1に示すように、本発明の典型的な実施態様は少なくとも二つの演算処理ユニット100と、スレッド管理ユニット104と、オンチップネットワークインタコネクト108と、複数の任意ユニットとを有する。任意ユニットには、例えばネットワークインタフェースユニット(図示せず)を有する外部インタフェース等の機能ブロック112及び外部メモリインタフェース116が含まれる。
図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)。
動作中にプロセッサを初期化した後、スレッド管理ユニットはメモリからプログラム命令を取り出して実行する演算処理ユニットを割り当てる。例えば図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に記載の方法において、前記少なくとも一つの実行命令の割り当てを帯域外で行うことを特徴とする方法。
- 請求項1に記載の方法において、複数のプロセッサコアから実行するプロセッサコアを選択し、前記選択したプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
- 請求項3に記載の方法において、複数の同種のプロセッサコアから実行するプロセッサコアを選択することを特徴とする方法。
- 請求項1に記載の方法において、前記少なくとも一つの実行命令に関連するスレッドを特定し、前記特定されたスレッドに関連するプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
- 請求項1に記載の方法において、プロセッサコアの電力状態を変化させる工程をさらに有することを特徴とする方法。
- 請求項1に記載の方法において、複数のプロセッサコアから電力及び熱分布の少なくとも一方を考慮して実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
- 請求項1に記載の方法において、前記割り当てられた少なくとも一つの命令を実行した旨のメッセージを前記プロセッサコアから受け取る工程をさらに有することを特徴とする方法。
- 請求項1に記載の方法において、前記プロセッサコアの状態を記憶する工程をさらに有することを特徴とする方法。
- 請求項1に記載の方法において、前記スレッドの状態及び情報を記憶する工程をさらに有することを特徴とする方法。
- 請求項9に記載の方法において、複数のプロセッサコアからプロセッサの状態に関する記憶情報を用いて実行するプロセッサコアを選択し、前記選択されたプロセッサコアに少なくとも一つの実行命令を割り当てることを特徴とする方法。
- 請求項1に記載の方法において、少なくとも一つの実行命令を有する複数の実行スレッドを受け取り、前記受け取った複数の中からスレッドを選択し、前記選択されたスレッドから少なくとも一つの実行命令を受け取ることを特徴とする方法。
- 請求項1に記載の方法において、プロセッサコアが第一の割当命令を実行した後にスレッド間の依存関係を検出し、前記実行された命令を第二の割当命令を実行した後に再割り当てする方法であって、前記第二の割当命令を実行することにより、スレッド間の依存関係なしに前記第一の命令を再実行することができることを特徴とする方法。
- 複数のプロセッサコアとスレッド管理ユニットとを有する機器であって、前記スレッド管理ユニットが実行命令及びスケジューリング命令を受け取り、前記スケジューリング命令に応じて前記実行命令をプロセッサコアに割り当てることを特徴とする機器。
- 請求項14に記載の機器において、前記複数のプロセッサコアが同種であることを特徴とする機器。
- 請求項14に記載の機器において、前記スレッド管理ユニットがハードウェアにのみ実装されていることを特徴とする機器。
- 請求項14に記載の機器において、前記スレッド管理ユニットがハードウェア及びソフトウェアに実装されていることを特徴とする機器。
- 請求項14に記載の機器において、前記プロセッサコアがネットワーク内で相互接続していることを特徴とする機器。
- 請求項14に記載の機器において、前記プロセッサコアがネットワークにより接続されていることを特徴とする機器。
- 請求項14に記載の機器において、前記プロセッサコアが光ネットワーク内で相互接続していることを特徴とする機器。
- 請求項14に記載の機器において、前記スレッド管理ユニットがステートマシンを有することを特徴とする機器。
- 請求項14に記載の機器において、前記スレッド管理ユニットが一つ以上のスケジューリング、スレッド管理及び資源割り当てを行うためのマイクロプロセッサを有することを特徴とする機器。
- 請求項14に記載の機器において、前記スレッド管理ユニットがスレッド及び資源の情報を記憶するための専用メモリを有することを特徴とする機器。
- 請求項14に記載の機器において、少なくとも一つの周辺機器を有することを特徴とする機器。
- 請求項14に記載の機器において、前記複数のプロセッサコアの少なくとも二つが異なる速度で動作することを特徴とする機器。
- ソフトウェアプログラムをコンパイルする方法であって、コンパイル可能なソースコードステートメントを受け取る工程と、前記ソースコードステートメントに応じた機械可読なオブジェクトコードステートメントを作成する工程と、前記オブジェクトコードステートメントをプロセッサコアに割り当てるようにスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加する工程とを有することを特徴とする方法。
- 請求項26に記載の方法において、機械可読なオブジェクトコードステートメントを繰り返し作成し、前記作成された複数のステートメントを境界により一対に分割された複数のスレッド内に組織する工程をさらに有することを特徴とする方法。
- 請求項27に記載の方法において、スレッド管理ユニットに通知するための機械可読なオブジェクトコードステートメントをスレッド間の境界に追加することを特徴とする方法。
- 請求項26に記載の方法において、スレッド間の境界を示すコンパイラ可能なソースコードステートメントに応じてスレッド管理ユニットに通知する機械可読なオブジェクトコードステートメントを追加することを特徴とする方法。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014500549A (ja) * | 2010-11-18 | 2014-01-09 | 日本テキサス・インスツルメンツ株式会社 | 処理クラスタのためのロード/ストア回路要素 |
Families Citing this family (37)
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)
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 |
-
2006
- 2006-12-06 EP EP06839037A patent/EP1963963A2/en not_active Withdrawn
- 2006-12-06 US US11/634,512 patent/US20070150895A1/en not_active Abandoned
- 2006-12-06 CN CNA2006800460456A patent/CN101366004A/zh active Pending
- 2006-12-06 WO PCT/US2006/046438 patent/WO2007067562A2/en active Application Filing
- 2006-12-06 JP JP2008544448A patent/JP2009519513A/ja active Pending
Cited By (1)
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 |