JP2015122063A - マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法 - Google Patents

マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法 Download PDF

Info

Publication number
JP2015122063A
JP2015122063A JP2014243216A JP2014243216A JP2015122063A JP 2015122063 A JP2015122063 A JP 2015122063A JP 2014243216 A JP2014243216 A JP 2014243216A JP 2014243216 A JP2014243216 A JP 2014243216A JP 2015122063 A JP2015122063 A JP 2015122063A
Authority
JP
Japan
Prior art keywords
unit
operator
thread
threads
resource collision
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
JP2014243216A
Other languages
English (en)
Other versions
JP6434791B2 (ja
Inventor
淵 坤 趙
Enkon Cho
淵 坤 趙
秀 晶 柳
Soo Jung Ryu
秀 晶 柳
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2015122063A publication Critical patent/JP2015122063A/ja
Application granted granted Critical
Publication of JP6434791B2 publication Critical patent/JP6434791B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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
    • 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/466Transaction processing

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)
  • Advance Control (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

【課題】マルチスレッディングを支援する演算ユニット、それを含むプロセッサ及びプロセッサの動作方法を提供する。【解決手段】演算ユニット100は、互いに異なるスレッドに対するオペコード及びオペランドをそれぞれ入力される複数の入力ポート110と、入力されたオペランドを用いて演算を行う複数の演算子120と、各オペコードに基づいて、受信されたオペランドのうち1つを使って特定の演算を行う演算子120を、複数の演算子120のうちから選択する演算子選択部130と、各スレッドの演算遂行結果を出力する複数の出力ポート140と、を含む。【選択図】図1

Description

本発明は、マルチスレッディングプロセッサに関する。特には、マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法に関する。
コンピュータ分野の技術の発達につれて、1つの作業だけではなく、多数の作業を同時に実行しなければならない場合が頻繁に発生する。このように同時に多くの作業を処理することを、マルチプロセッシング(multiprocessing)、マルチタスキング(multitasking)、マルチプログラミング(multiprogramming)、及び/またはマルチスレッディング(multithreading)と言う。
このようなマルチプロセッシングは、マルチタスキング、多重化(Multiplexing)などの方法で提供されるが、前者の場合、多数の作業を多数のプロセス(または、スレッド)に分けて処理することを意味し、後者の場合、1つのプロセス内で多数の作業を処理することを意味する。
例えば、マルチタスキングは、多くの作業(すなわち、タスク)を並行して処理するものであって、オペレーティングシステム(OS)は、マルチタスキングのためにプロセスを多数個使って実行させるか(マルチプロセス)、スレッドを多数個実行させる技法(マルチスレッド)を使う。
この際、マルチプロセスとマルチスレッドは、両方とも複数の流れが同時に進行するという共通点を有している。しかし、マルチプロセスにおいて、各プロセスは、独立して実行され、それぞれ別個のメモリを占めているのとは異なって、マルチスレッドでは、プロセス内のメモリを共有することができる。また、プロセス間の転換速度よりもスレッド間の転換速度が速く、スレッド間のスケジューリングも、プロセス間のスケジューリングよりも相対的に速くなされる。
本発明は、マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法を提供する。
本発明の一態様によるマルチスレッディングを支援するための演算ユニットは、互いに異なるスレッドに対するオペコード及びオペランドをそれぞれ入力される複数の入力ポートと、前記入力されたオペランドを用いて演算を行う複数の演算子と、各オペコードに基づいて、受信されたオペランドのうち1つを使って特定の演算を行う演算子を、前記複数の演算子のうちから選択する演算子選択部と、各スレッドの演算遂行結果を出力する複数の出力ポートと、を含みうる。
前記複数の出力ポートそれぞれは、互いに異なるスレッドに対する演算遂行結果を出力することができる。
前記複数の演算子は、データパス上に各スレッドに割り当てられて演算遂行結果を保存する複数のレジスタを含みうる。
前記複数の演算子それぞれは、前記複数の演算子のうち、他の演算子が行う演算とは異なる特定の演算を行うことができる。
前記複数の演算子のうち少なくとも2つの演算子は、互いに同じ演算を行うことができる。
前記少なくとも2つの演算子は、前記演算ユニット内で遂行頻度の高い演算を行うことができる。
前記少なくとも2つの演算子は、自身の現在状態を表わす信号を生成して、前記演算子選択部に伝送しうる。
本発明の他の態様によるプロセッサは、複数のスレッドを同時に処理する少なくとも1つの演算ユニットを含むプロセッシング部と、前記複数のスレッドのうち少なくとも2つのスレッドが、同じ演算ユニット内で同じ演算を行うために同時に試みているか否かを判断して、リソースの衝突を感知するリソース衝突感知部と、リソースの衝突が感知されれば、設定された基準によって、前記衝突された少なくとも2つのスレッド間の処理順序を決定するリソーススケジューラと、を含みうる。
前記リソース衝突感知部は、前記少なくとも1つの演算ユニットについての演算子情報を保存するリソース情報保存部と、前記複数のスレッドのオペコードを各演算ユニット別に比較するオペコード比較部と、前記オペコード比較部の比較の結果及び前記リソース情報保存部に保存された演算子情報に基づいてリソースの衝突有無を判断するリソース衝突有無判断部と、を含みうる。
前記演算子情報は、各演算ユニットに含まれている演算子の種類、個数及び各演算子の状態情報のうち少なくとも1つを含みうる。
前記リソーススケジューラは、前記衝突された少なくとも2つのスレッドのうち、処理順序の低いスレッドに対するストール信号を生成することができる。
プロセッサは、前記リソース衝突感知部から受信されたリソース衝突感知結果を保存するキューをさらに含みうる。
プロセッサは、前記複数のスレッドのうち、一部に含まれた制御文の実行によって、前記キューに保存されたリソース衝突感知結果が有効ではない場合、前記キューをフラッシュするフラッシュ部をさらに含みうる。
本発明のさらに他の態様による複数のスレッドを同時に処理する少なくとも1つの演算ユニットを含むプロセッサの動作方法は、少なくとも2つのスレッドが、同じ演算ユニット内で同じ演算を行うために同時に試みているか否かを判断して、リソースの衝突を感知する段階と、リソースの衝突が感知されれば、既定の基準によって、前記衝突された少なくとも2つのスレッド間の処理順序を決定する段階と、を含みうる。
前記感知する段階は、前記複数のスレッドのオペコードを各演算ユニット別に比較する段階と、比較の結果及び保存された演算子情報に基づいてリソースの衝突有無を判断する段階と、を含みうる。
前記演算子情報は、各演算ユニットに含まれている演算子の種類、個数及び各演算子の状態情報のうち少なくとも1つを含みうる。
プロセッサの動作方法は、前記衝突された少なくとも2つのスレッドのうち、処理順序の低いスレッドをストールする段階をさらに含みうる。
プロセッサの動作方法は、リソース衝突感知結果をキューに保存する段階をさらに含みうる。
プロセッサの動作方法は、前記複数のスレッドのうち、一部に含まれた制御文の実行によって、前記キューに保存されたリソース衝突感知結果が有効ではない場合、前記キューをフラッシュする段階をさらに含みうる。
本発明のさらに他の態様によるプロセッサは、第1演算を行い、第1現在状態信号を生成及び伝送する第1演算子と、第2演算を行い、第2現在状態信号を生成及び伝送する第2演算子と、前記第1現在状態信号、前記第2現在状態信号、及び第1スレッドの第1オペランドを利用する第1オペコードに基づいて、前記第1演算子及び前記第2演算子のうち1つを選択し、前記第1現在状態信号、前記第2現在状態信号、及び第2スレッドの第2オペランドを利用する第2オペコードに基づいて、前記第1演算子及び前記第2演算子のうち1つを選択する演算子選択部を含む演算ユニットと、前記第1スレッド及び前記第2スレッドに対して同じ演算子が選択されれば、リソース衝突を感知するリソース衝突感知部と、前記第1スレッド及び前記第2スレッドのうち、優先順位の低いスレッドをストールして、前記第1スレッド及び前記第2スレッドの処理順序を決定するリソーススケジューラと、を含みうる。
前記リソース衝突感知部は、演算子タイプ、演算子の数、及び各演算子の状態情報のうち少なくとも1つを含む演算ユニットについての演算子情報を保存するリソース情報保存部と、前記第1オペコード及び前記第2オペコードを比較するオペコード比較部と、オペコードの比較の結果及び前記演算子情報に基づいてリソースの衝突有無を判断するリソース衝突判断部と、を含みうる。
プロセッサは、前記リソース衝突感知部から受信されたリソース衝突感知結果を保存するキューと、前記第1スレッド及び前記第2スレッドのうち少なくとも1つに含まれた制御文の実行によって、前記キューに保存されたリソース衝突感知結果が有効ではない場合、キューをフラッシュするフラッシュ部と、をさらに含みうる。
本発明の一実施形態によるマルチスレッディングを支援するための演算ユニットの概略的な構成図である。 本発明の一実施形態によるマルチスレッディングを支援するための演算ユニットの例示図である。 本発明の一実施形態によるプロセッサの構成図である。 本発明の一実施形態による図3のリソース衝突感知部320の詳細構成図である。 本発明の他の実施形態によるプロセッサの構成図である。 本発明の一実施形態によるプロセッサ500の動作方法を示す図面である。 本発明の一実施形態による図6のリソースの衝突を感知する過程(610)の詳細フローチャートである。
以下、添付図面を参照して、本発明の一実施形態を詳細に説明する。本発明を説明するにあたり、関連した公知機能または構成についての具体的な説明が、本発明の要旨を不明にするおそれがあると判断される場合には、その詳細な説明を省略する。また、後述される用語は、本発明での機能を考慮して定義された用語であって、これは、ユーザ、運用者の意図または慣例などによって変わりうる。したがって、その定義は、本明細書の全般に亘った内容に基づいて下されなければならない。
取り立てて説明がない限り、図面及び詳細な説明の全般に亘って、同じ参照符号は、同じ構成、特徴、構造を参照するものと理解される。
一実施形態によれば、演算ユニット(functional unit)は、実行ユニット(execution unit)と呼称され、中央処理装置(central processing unit:CPU)またはプロセッサの一部になりうる。また、演算ユニットは、CPUで実行中であるか、実行準備中であるコンピュータプログラムによって要求される動作(operations)及び計算(calculations)を行うことができる。演算ユニットは、CPUメイン制御ユニットと区分され、演算子選択部と呼称されてよく、内部制御シーケンスユニット(internal control sequence unit)を含みうる。演算ユニットは、1つ以上のレジスタ及び内部装置(例えば、サブ算術論理ユニット(sub−Arithmetic Logic Unit)、浮動小数点ユニット(floation−point unit)など)を含みうる。
一実施形態によれば、CPUは、スカラーまたはスーパースカラー設計で配列される時、多数の並列機能ユニットを含みうる。そして、CPUの機能ユニットは、パイプラインになることもあり、1つの機能ユニットは、メモリインターフェースを管理するためにバスマネージャーとして使われ、残りの機能ユニットは、CPUによって実行されるコンピュータプログラムのための計算を行うように配置されることもある。
図1は、本発明の一実施形態によるマルチスレッディングを支援するための演算ユニットの構成図である。図1を参照すれば、演算ユニット(Functional Unit;FU)100は、入力ポート110a〜110c、演算子120a〜120c、演算子選択部130及び出力ポート140a〜140cを含みうる。
入力ポート110a〜110cは、オペコード及びオペランドをスレッド別に入力され得る。例えば、入力ポート#1(110a)は、スレッド1に対するオペコード及びオペランドを、入力ポート#2(110b)は、スレッド2に対するオペコード及びオペランドを、入力ポート#n(110c)は、スレッドnに対するオペコード及びオペランドを入力され得る。この際、入力ポートの個数は、同時に処理しようとするスレッドの個数と同じでもあってもよいが、これに限定されるものではない。
演算子120a〜120cは、オペランド(operand)に対する所定の演算を行うことができる。演算子120a〜120cは、加算器、乗算器、除算器、比較器などとして具現され得るが、これらに限定されるものではない。
一実施形態によれば、各演算子120a〜120cは、マルチスレッディングのために、各演算子120a〜120cのデータパス上に各スレッドに割り当てられて、演算結果を保存するレジスタ#1、レジスタ#nを含みうる。この際、レジスタ#1は、スレッド1に割り当てられ、レジスタ#nは、スレッドnに割り当てられる。
演算子選択部130は、各入力ポート110a〜110cを通じて入力されたオペコードに基づいて、各オペランドに対する演算を行う演算子を選択することができる。例えば、演算子120aは加算器、演算子120bは乗算器、演算子120cは比較器であると仮定する。この際、スレッド1のオペコードが加算命令であり、スレッド2のオペコードが乗算命令である場合、演算子選択部130は、スレッド1のオペランドを処理する演算子として演算子120aを、スレッド2のオペランドを処理する演算子として演算子120bを選択することができる。この場合、演算子120aは、スレッド1のオペランドに対して加算演算を行い、それと同時に、演算子120bは、スレッド2のオペランドに対して乗算演算を行う。
出力ポート140a〜140cは、演算遂行結果をスレッド別に出力することができる。例えば、出力ポート#1(140a)はスレッド1に対する演算遂行結果を、出力ポート#2(140b)はスレッド2に対する演算遂行結果を、出力ポート#n(140c)はスレッドnに対する演算遂行結果を出力することができる。この際、出力ポートの個数は、同時に処理しようとするスレッドの個数と同じであってもよいが、これに限定されるものではない。
上述のように、演算ユニット100は、複数のスレッドを同時に処理することが可能なので、スレッドレベル並列性(Thread Level Parallelism;TLP)を極大化させることが可能である。
一方、一実施形態によれば、演算子120a〜120cは、互いに異なる演算を行うように具現され得る。この場合、演算ユニット100は、複数のスレッドに対する互いに異なるオペコードを同時に処理することが可能である。
しかし、演算子120a〜120cが互いに異なる演算を行い、かつ、2つ以上のスレッドが同じ演算ユニット100を用いて同じ演算を行う場合は、リソース衝突(resource conflict)が発生して、優先順位の低いスレッドがストール(stall)されて、システムの性能低下を引き起こすことがある。
一実施形態によれば、このような問題を解決するために、演算子120a〜120cのうち一部は、互いに同じ演算を行うように具現され得る。特に、演算ユニット100内で遂行頻度の高い演算をリソース衝突なしに行うために、使用頻度の高い演算子を演算ユニット100に複数個配置することができる。例えば、よく行われる動作を決定するために、多様なスレッドの動作をあらかじめプロファイリングし、その結果に基づいて、よく使われる演算子を演算ユニット100に複数個配置することができる。例えば、プロファイリングの結果、加算演算をよく使うスレッドによってリソース衝突がよく発生して、システムの性能低下が発生したならば、演算ユニット100に加算器をさらに1つ追加し、各加算器は、自身の現在状態情報、すなわち、現在使用可能であるか否かを知らせる信号を生成して、演算子選択部130に伝送することによって、演算子選択部130が適切な選択を行うことを可能にする。
特に、一実施形態によれば、同じ演算を行うように具現された一部演算子それぞれは、自身の現在状態を表わす信号を生成して、演算子選択部130に出力することができる。現在状態を表わす信号は、各演算子が使用可能か否かを知らせる信号を意味する。例えば、一部演算子それぞれは、自身が現在演算を行っていて、他のスレッドに対する演算を行えない時、ビジー(busy)信号を生成して、演算子選択部130に伝送しうる。この場合、演算子選択部130は、ビジー信号を送信した演算子を除いた残りの演算子のうちから演算を行う演算子を選択する。
また、ビジー信号を演算子選択部130に送信した演算子は、ビジー信号送信当時に遂行中であった演算が完了すれば、他のスレッドが当該演算子を利用できるように、完了信号を生成して出力することができる。
図2は、本発明の一実施形態によるマルチスレッディングを支援するための演算ユニットの例示図である。図2の演算ユニット200は、2つのスレッドの同時処理を支援するための演算ユニットの例であって、2つの演算子(加算器及び比較器)を含む。図2は、説明の便宜上、2つの演算子を含むものと図示しただけのことであり、発明の用途及び性能によって多様な演算子を含むことも可能である。
図2を参照すれば、演算ユニット200は、スレッド1及びスレッド2に対するオペランド及びオペコードを入力される。演算ユニット200は、各オペコードに基づいて、各スレッドのオペランドに対する演算を行う演算子をスレッド別に選択し、スレッド別に選択した演算子を用いて、各スレッドのオペランドに対する演算を行う。例えば、スレッド1のオペコードが加算命令であり、スレッド2のオペコードが比較命令である場合、演算ユニット200は、加算器を用いてスレッド1のオペランドに対して加算演算を行い、それと同時に、比較器を用いてスレッド2のオペランドに対して比較演算を行う。
各演算子のデータパス上には、各スレッドのためのレジスタが含まれる。例えば、レジスタ#1は、スレッド1のためのレジスタであり、レジスタ#2は、スレッド2のためのレジスタである。すなわち、スレッド1のオペランドに対する演算結果は、レジスタ#1に保存され、スレッド2のオペランドに対する演算結果は、レジスタ#2に保存される。
次いで、演算ユニット200は、2つの出力端子を通じて演算遂行結果を各スレッド別に出力する。
図3は、本発明の一実施形態によるプロセッサの構成図である。図3を参照すれば、プロセッサ300は、プロセッシング部310、リソース衝突感知部320及びリソーススケジューラ330を含みうる。
プロセッシング部310は、複数のスレッドを同時に処理することができる。このために、プロセッシング部310は、複数のスレッドに対する複数の演算を同時に行うことができる1つ以上の演算ユニットFU#0〜FU#nを含みうる。この際、複数のスレッドに対する複数の演算を同時に行うことができる演算ユニットは、図1を参照して説明した演算ユニットと同一なので、その詳細な説明は省略する。
リソース衝突感知部320は、2つ以上のスレッドが同時に同じ演算ユニット内で同じ演算を行うか否かを検査して、リソースの衝突を感知することができる。例えば、スレッド1は、FU#0内で加算演算を行い、スレッド2は、FU#0内で乗算演算を行うならば、FU#0は、加算演算及び乗算演算を同時に行うことが可能なので、リソース衝突が発生しない。しかし、スレッド1及びスレッド2が、FU#1内で同じ演算である比較演算を行うならば、比較演算を行う比較器がFU#1内に1つだけ存在する場合、リソース衝突が発生する。この場合、リソース衝突感知部320は、FU#1のリソース衝突を感知することができる。
リソース衝突感知部320の詳しい説明は、図4を参照して後述する。
リソーススケジューラ330は、既定の基準によって衝突されたスレッド間に処理順序を決定することができる。例えば、リソーススケジューラ330は、各スレッドでキャッシュミス(cache miss)が発生したか否かを直接判断するか、外部からこれに関する情報を受信して、これにより、スレッド間に処理順序を決定することができる。他の例を挙げれば、リソーススケジューラ330は、ユーザまたはシステムによって設定された優先順位によって、各スレッドの処理順序を決定することもできる。しかし、前述した例に限定されるものではない。
一方、キャッシュミスが発生せず、外部情報も提供されず、衝突されたスレッド間にスレッド優先順位が存在しない場合、リソーススケジューラ330は、スレッドの特定属性に基づいて処理順序を決定することができる。例えば、特定属性は、スレッドに対する処理時間、保存時間、スレッドが要請したメモリ情報を呼び出す時間の量、演算複雑性及びサイクルのような値を含みうる。そして、このような値は、衝突されたスレッドと関連したあらゆる情報を考慮する加重決定アルゴリズム(weighted decisionalgorithm)に使われる。
リソーススケジューラ330は、決定された処理順序に基づいて処理順序の低いスレッドのデータパス(datapath)をストール(stall)させるように、ストール信号を生成することができる。また、リソーススケジューラ330は、ストールされたスレッドのリソース使用権が許可されれば、グラント(grant)信号を生成することができる。
プロセッシング部310は、ストール信号を受信すれば、処理順序の低いスレッドのデータパスをストールさせ、以後、ストールされたスレッドのリソース使用権が許可されて発生したグラント信号を受信すれば、ストールが解かれて、スレッドの処理を再開する。
図4は、本発明の一実施形態による図3のリソース衝突感知部320の詳細構成図である。図4を参照すれば、リソース衝突感知部320は、リソース情報保存部410、オペコード比較部420及びリソース衝突有無判断部430を含みうる。
リソース情報保存部410は、スレッド情報、演算ユニット情報及び演算子情報などをリソーステーブルに保存することができる。この際、スレッド情報は、同時に処理しようとするスレッドのID、現在処理中であるスレッドのIDなどを含みうる。演算ユニット情報は、プロセッシング部310に含まれている演算ユニットの個数、演算ユニットIDなどを含みうる。演算子情報は、各演算ユニットに含まれている演算子の種類、個数、演算子の状態情報などを含みうる。この際、演算子の状態情報は、各演算子が現在演算を行っているか否かに関する情報をいう。
一方、演算ユニット100に含まれた演算子120a〜120cのうち、一部が同じオペコードを処理するように具現された場合であって、ビジー信号を演算子選択部130に送信した演算子がビジー信号送信当時処理中であったオペコードの処理が完了して、完了信号を送信すれば、リソース情報保存部410は、これを受信して、当該演算ユニットの演算子の状態情報を更新することができる。この際、演算子テーブルの運用は、多様な方法によって可能である。
オペコード比較部420は、各スレッドのオペコードを演算ユニット別に比較することができる。例えば、各スレッドの命令語を解釈(decoding)すれば、各演算ユニット別に行うようとする演算の種類をオペコードを通じて分かる。この際、オペコード比較部420は、演算ユニット別に各スレッドのオペコードを相互比較することによって、各演算ユニットが同時に同じ演算を行うか否かを判断することができる。
リソース衝突有無判断部430は、リソース情報保存部410に保存された情報及びオペコード比較部420で比較した結果に基づいて、リソースの衝突有無を判断することができる。例えば、スレッド1及びスレッド2が、同時にFU#0で加算演算を行うものと仮定する。この場合、リソース情報保存部410に保存されたFU#0の演算子情報に照らして、FU#0に2つの加算器が含まれている場合、FU#0は、2つの加算器を同時に使うことができるので、リソースの衝突が発生しない。一方、FU#0に1つの加算器だけが含まれている場合は、FU#0は1つの加算器だけしか使えず、2つの加算演算を同時にできないので、スレッド1及びスレッド2のオペコードを同時に処理することができない。この場合、リソース衝突有無判断部430は、FU#0でリソース衝突が発生すると判断することができる。
一方、プロセッサ300は、パイプライン技法を適用する。一般的に、プロセッサパイプラインは、命令語の取出し(fetch)段階、命令語解釈段階、命令語実行(execute)段階、結果保存(write back)段階を含む。
一実施形態によれば、リソース衝突感知部320は、プロセッサパイプラインのうち、命令語解釈段階で各スレッドのオペコードを比較して、リソースの衝突有無を感知することができる。
図5は、本発明の他の実施形態によるプロセッサの構成図である。図5を参照すれば、プロセッサ500は、プロセッシング部310、リソース衝突感知部320及びリソーススケジューラ330に追加して、キュー510及びフラッシュ部520をさらに含みうる。
プロセッサ500で同時に処理される一部スレッドにブランチ(branch)のような制御文が含まれている場合、制御文の実行によって、リソース衝突感知部320が命令語解釈段階で感知した結果が有効ではないこともある。このために、プロセッサ500は、図3のプロセッサ300の各構成にキュー510及びフラッシュ部520をさらに含みうる。
キュー510は、リソース衝突感知部320の感知結果を保存することができる。
フラッシュ部520は、制御文の実行によってキュー510に保存されている感知結果が有効ではない場合、キュー510をフラッシュ(flush)することができる。
もし、スレッドに制御文が含まれていない場合、または制御文を実行しても、キュー510に保存されている感知結果が有効な場合は、キュー510は、感知結果をリソーススケジューラ330に伝送し、リソーススケジューラ330は、感知結果に基づいて衝突されたスレッドのデータパスをストールさせることができる。この際、如何なるスレッドをストールさせるかは、リソーススケジューラ330で既定の基準によって決定された処理順序による。
図6は、本発明の一実施形態によるプロセッサの動作方法を示す図面である。図6を参照すれば、プロセッサの動作方法は、まず、複数のスレッドが同時に同じ演算ユニット内で同じ演算を行うかを検査して、リソースの衝突有無を感知する(610)。
次いで、衝突感知結果をキュー510に保存する(620)。
次いで、複数のスレッドのうち、一部に含まれた制御文の実行によってキュー510に保存されている感知結果が有効であるか否かを判断する(630)。
段階630の判断の結果、キュー510に保存された感知結果が有効な場合、既定の基準によって衝突されたスレッド間の処理順序を決定し(640)、衝突されたスレッドのうち、処理順序の低いスレッドをストールする(650)。
段階630の判断の結果、キュー510に保存された感知結果が有効ではない場合、キューをフラッシュし(660)、段階610に戻る。
図7は、図6のリソースの衝突を感知する過程(610)の詳細なフローチャートである。図7を参照すれば、リソースの衝突を感知する過程(610)は、まず、同時に処理しようとする複数のスレッドのオペコードを各演算ユニット別に比較する(710)。例えば、各スレッドの命令語を解釈すれば、各演算ユニット別に行うようとする演算の種類がオペコードを通じて分かる。したがって、命令語パイプラインのうち、命令語解釈段階で演算ユニット別に各スレッドのオペコードを相互比較することによって、各演算ユニットが同時に同じ演算を行うか否かを判断することができる。
次いで、比較の結果及びあらかじめ保存された演算子情報に基づいてリソースの衝突有無を判断する(720)。この際、演算子情報は、各演算ユニットに含まれている演算子の種類、個数及び各演算子の状態情報などを含みうる。
本発明の一態様は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現しうる。プログラムを具現するコード及びコードセグメントは、当該分野のコンピュータプログラマーによって容易に推論され得る。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光ディスクなどを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。
以上、本発明について、その望ましい実施形態を中心に説明した。当業者ならば、本発明が、本発明の本質的な特性から外れない範囲内で変形された形態として具現可能であることを理解できるであろう。したがって、本発明の範囲は、前述した実施形態に限定されず、特許請求の範囲に記載の内容と同等な範囲内にある多様な実施形態が含まれるように解釈しなければならない。
本発明は、マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法関連の技術分野に適用可能である。
110 入力ポート
120 演算子
140 出力ポート
300 プロセッサ
310 プロセッシング部
320 リソース衝突感知部
330 リソーススケジューラ
410 リソース情報保存部
420 オペコード比較部
430 リソース衝突有無判断部
510 キュー
520 フラッシュ部

Claims (22)

  1. マルチスレッディングを支援するための演算ユニットであって、
    互いに異なるスレッドに対するオペコード及びオペランドをそれぞれ入力される複数の入力ポートと、
    前記入力されたオペランドを用いて演算を行う複数の演算子と、
    各オペコードに基づいて、受信されたオペランドのうち1つを使って特定の演算を行う演算子を、前記複数の演算子のうちから選択する演算子選択部と、
    各スレッドの演算遂行結果を出力する複数の出力ポートと、
    を含む、演算ユニット。
  2. 前記複数の出力ポートそれぞれは、互いに異なるスレッドに対する演算遂行結果を出力する、
    請求項1に記載の演算ユニット。
  3. 前記複数の演算子は、
    データパス上に各スレッドに割り当てられて演算遂行結果を保存する複数のレジスタを含む、
    請求項1または2に記載の演算ユニット。
  4. 前記複数の演算子それぞれは、前記複数の演算子のうち、他の演算子が行う演算とは異なる特定の演算を行う、
    請求項1乃至3いずれか一項に記載の演算ユニット。
  5. 前記複数の演算子のうち少なくとも2つの演算子は、互いに同じ演算を行う、
    請求項1乃至3いずれか一項に記載の演算ユニット。
  6. 前記少なくとも2つの演算子は、前記演算ユニット内で遂行頻度の高い演算を行う、
    請求項5に記載の演算ユニット。
  7. 前記少なくとも2つの演算子は、自身の現在状態を表わす信号を生成し、前記演算子選択部に伝送する、
    請求項5に記載の演算ユニット。
  8. 複数のスレッドを同時に処理する少なくとも1つの演算ユニットを含むプロセッシング部と、
    前記複数のスレッドのうち少なくとも2つのスレッドが、同じ演算ユニット内で同じ演算を行うために同時に試みているか否かを判断して、リソースの衝突を感知するリソース衝突感知部と、
    リソースの衝突が感知されれば、設定された基準によって、前記衝突された少なくとも2つのスレッド間の処理順序を決定するリソーススケジューラと、
    を含む、プロセッサ。
  9. 前記リソース衝突感知部は、
    前記少なくとも1つの演算ユニットについての演算子情報を保存するリソース情報保存部と、
    前記複数のスレッドのオペコードを各演算ユニット別に比較するオペコード比較部と、
    前記オペコード比較部の比較の結果及び前記リソース情報保存部に保存された演算子情報に基づいてリソースの衝突有無を判断するリソース衝突有無判断部と、
    を含む、
    請求項8に記載のプロセッサ。
  10. 前記演算子情報は、各演算ユニットに含まれている演算子の種類、個数及び各演算子の状態情報のうち少なくとも1つを含む、
    請求項9に記載のプロセッサ。
  11. 前記リソーススケジューラは、前記衝突された少なくとも2つのスレッドのうち、処理順序の低いスレッドに対するストール信号を生成する、
    請求項8乃至10いずれか一項に記載のプロセッサ。
  12. 前記プロセッサは、さらに、
    前記リソース衝突感知部から受信されたリソース衝突感知結果を保存するキューを含む、
    請求項8乃至11いずれか一項に記載のプロセッサ。
  13. 前記プロセッサは、さらに、
    前記複数のスレッドのうち、一部に含まれた制御文の実行によって、前記キューに保存されたリソース衝突感知結果が有効ではない場合、前記キューをフラッシュするフラッシュ部、を含む、
    請求項12に記載のプロセッサ。
  14. 複数のスレッドを同時に処理する少なくとも1つの演算ユニットを含むプロセッサの動作方法であって、
    少なくとも2つのスレッドが、同じ演算ユニット内で同じ演算を行うために同時に試みているか否かを判断して、リソースの衝突を感知する段階と、
    リソースの衝突が感知されれば、既定の基準によって、前記衝突された少なくとも2つのスレッド間の処理順序を決定する段階と、
    を含む、方法。
  15. 前記感知する段階は、
    前記複数のスレッドのオペコードを各演算ユニット別に比較する段階と、
    比較の結果及び保存された演算子情報に基づいてリソースの衝突有無を判断する段階と、
    を含む、
    請求項14に記載の方法。
  16. 前記演算子情報は、各演算ユニットに含まれている演算子の種類、個数及び各演算子の状態情報のうち少なくとも1つを含む、
    請求項15に記載の方法。
  17. 前記方法は、さらに、
    前記衝突された少なくとも2つのスレッドのうち、処理順序の低いスレッドをストールする段階を含む、
    請求項14乃至16いずれか一項に記載の方法。
  18. 前記方法は、さらに、
    リソース衝突感知結果をキューに保存する段階を含む、
    請求項14乃至17いずれか一項に記載のプロセッサの動作方法。
  19. 前記複数のスレッドのうち、一部に含まれた制御文の実行によって、前記キューに保存されたリソース衝突感知結果が有効ではない場合、前記キューをフラッシュする段階をさらに含む、
    請求項18に記載のプロセッサの動作方法。
  20. 第1演算を行い、第1現在状態信号を生成かつ伝送する第1演算子と、
    第2演算を行い、第2現在状態信号を生成かつ伝送する第2演算子と、
    前記第1現在状態信号、前記第2現在状態信号、及び、第1スレッドの第1オペランドを利用する第1オペコードに基づいて、前記第1演算子及び前記第2演算子のうち1つを選択し、かつ、前記第1現在状態信号、前記第2現在状態信号、及び、第2スレッドの第2オペランドを利用する第2オペコードに基づいて、前記第1演算子及び前記第2演算子のうち1つを選択する、演算子選択部と、
    を含む演算ユニットと、
    前記第1スレッド及び前記第2スレッドに対して同じ演算子が選択されれば、リソース衝突を感知するリソース衝突感知部と、
    前記第1スレッド及び前記第2スレッドのうち、優先順位の低いスレッドをストールして、前記第1スレッド及び前記第2スレッドの処理順序を決定するリソーススケジューラと、
    を含む、プロセッサ。
  21. 前記リソース衝突感知部は、
    演算子タイプ、演算子の数、及び、各演算子の状態情報のうち少なくとも1つを含む演算ユニットについての演算子情報を保存するリソース情報保存部と、
    前記第1オペコード及び前記第2オペコードを比較するオペコード比較部と、
    オペコードの比較の結果及び前記演算子情報に基づいてリソースの衝突有無を判断するリソース衝突判断部と、
    を含む、
    請求項20に記載のプロセッサ。
  22. 前記リソース衝突感知部から受信されたリソース衝突感知結果を保存するキューと、
    前記第1スレッド及び前記第2スレッドのうち少なくとも1つに含まれた制御文の実行によって、前記キューに保存されたリソース衝突感知結果が有効ではない場合、キューをフラッシュするフラッシュ部と、
    をさらに含む、
    請求項20または21に記載のプロセッサ。
JP2014243216A 2013-12-20 2014-12-01 マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法 Active JP6434791B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130160231A KR102177871B1 (ko) 2013-12-20 2013-12-20 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
KR10-2013-0160231 2013-12-20

Publications (2)

Publication Number Publication Date
JP2015122063A true JP2015122063A (ja) 2015-07-02
JP6434791B2 JP6434791B2 (ja) 2018-12-05

Family

ID=52102544

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014243216A Active JP6434791B2 (ja) 2013-12-20 2014-12-01 マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法

Country Status (5)

Country Link
US (1) US9858116B2 (ja)
EP (1) EP2887209B1 (ja)
JP (1) JP6434791B2 (ja)
KR (1) KR102177871B1 (ja)
CN (1) CN104731560B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102177871B1 (ko) * 2013-12-20 2020-11-12 삼성전자주식회사 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
US20170132003A1 (en) * 2015-11-10 2017-05-11 Futurewei Technologies, Inc. System and Method for Hardware Multithreading to Improve VLIW DSP Performance and Efficiency
US10565017B2 (en) 2016-09-23 2020-02-18 Samsung Electronics Co., Ltd. Multi-thread processor and controlling method thereof
KR102593320B1 (ko) * 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
CN108255587B (zh) * 2016-12-29 2021-08-24 展讯通信(上海)有限公司 一种同步多线程处理器
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US10269088B2 (en) * 2017-04-21 2019-04-23 Intel Corporation Dynamic thread execution arbitration
GB2563587B (en) 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks
GB2565338B (en) * 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
CN108874523A (zh) * 2018-06-21 2018-11-23 深圳点猫科技有限公司 一种基于AI和儿童教育的promise控制异步函数序列的编程方法
US11023273B2 (en) 2019-03-21 2021-06-01 International Business Machines Corporation Multi-threaded programming

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281896A (ja) * 1994-04-15 1995-10-27 Hitachi Ltd 情報処理装置
US5574939A (en) * 1993-05-14 1996-11-12 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JP2004326738A (ja) * 2003-04-21 2004-11-18 Internatl Business Mach Corp <Ibm> 同時マルチスレッド化プロセッサ
JP2006099336A (ja) * 2004-09-29 2006-04-13 Seiko Epson Corp 演算処理装置
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US20120089812A1 (en) * 2009-06-12 2012-04-12 Graeme Roy Smith Shared resource multi-thread processor array

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007153B1 (en) 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US7207040B2 (en) * 2002-08-15 2007-04-17 Sun Microsystems, Inc. Multi-CPUs support with thread priority control
WO2004027602A1 (en) * 2002-09-17 2004-04-01 Koninklijke Philips Electronics N.V. System and method for a fully synthesizable superpipelined vliw processor
US7954102B2 (en) * 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
US7350060B2 (en) * 2003-04-24 2008-03-25 International Business Machines Corporation Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor
CN101027635A (zh) * 2004-09-22 2007-08-29 皇家飞利浦电子股份有限公司 其中功能单元共用读取端口的数据处理电路
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline
JP4276201B2 (ja) * 2005-03-31 2009-06-10 富士通株式会社 Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム
KR101355496B1 (ko) 2005-08-29 2014-01-28 디 인벤션 사이언스 펀드 원, 엘엘씨 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘
US8495649B2 (en) 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US7725296B1 (en) * 2007-09-24 2010-05-25 United Services Automobile Association (Usaa) Estimating processor usage
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US8302098B2 (en) * 2007-12-06 2012-10-30 Oracle America, Inc. Hardware utilization-aware thread management in multithreaded computer systems
US8156495B2 (en) * 2008-01-17 2012-04-10 Oracle America, Inc. Scheduling threads on processors
CN101685408B (zh) * 2008-09-24 2013-10-09 国际商业机器公司 多个线程并行访问共享数据结构的方法及装置
US8332854B2 (en) * 2009-05-19 2012-12-11 Microsoft Corporation Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
US8539486B2 (en) * 2009-07-17 2013-09-17 International Business Machines Corporation Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode
US8631415B1 (en) * 2009-08-25 2014-01-14 Netapp, Inc. Adjustment of threads for execution based on over-utilization of a domain in a multi-processor system by sub-dividing parallizable group of threads to sub-domains
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
WO2012014313A1 (ja) * 2010-07-30 2012-02-02 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US8719828B2 (en) * 2011-10-14 2014-05-06 Intel Corporation Method, apparatus, and system for adaptive thread scheduling in transactional memory systems
US10289418B2 (en) 2012-12-27 2019-05-14 Nvidia Corporation Cooperative thread array granularity context switch during trap handling
US9582321B2 (en) * 2013-11-08 2017-02-28 Swarm64 As System and method of data processing
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
KR102177871B1 (ko) * 2013-12-20 2020-11-12 삼성전자주식회사 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574939A (en) * 1993-05-14 1996-11-12 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JPH07281896A (ja) * 1994-04-15 1995-10-27 Hitachi Ltd 情報処理装置
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JP2004326738A (ja) * 2003-04-21 2004-11-18 Internatl Business Mach Corp <Ibm> 同時マルチスレッド化プロセッサ
JP2006099336A (ja) * 2004-09-29 2006-04-13 Seiko Epson Corp 演算処理装置
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US20120089812A1 (en) * 2009-06-12 2012-04-12 Graeme Roy Smith Shared resource multi-thread processor array

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
麻生雄一、他4名: "面積制約を考慮したマルチスレッドプロセッサの合成手法", 電子情報通信学会技術研究報告, vol. 104, no. 711, JPN6018025573, 4 March 2005 (2005-03-04), pages 31 - 35, ISSN: 0003831891 *

Also Published As

Publication number Publication date
EP2887209A3 (en) 2017-02-15
JP6434791B2 (ja) 2018-12-05
US9858116B2 (en) 2018-01-02
CN104731560B (zh) 2020-02-07
KR102177871B1 (ko) 2020-11-12
KR20150072734A (ko) 2015-06-30
CN104731560A (zh) 2015-06-24
EP2887209B1 (en) 2023-03-22
EP2887209A2 (en) 2015-06-24
US20150178132A1 (en) 2015-06-25

Similar Documents

Publication Publication Date Title
JP6434791B2 (ja) マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法
US10191741B2 (en) System and method for mitigating the impact of branch misprediction when exiting spin loops
KR100880470B1 (ko) 스레드 라이브록 유닛
JP6095670B2 (ja) コンピュータ・システム内のオペランド活性情報の維持
US10318307B2 (en) Scalarization of vector processing
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
TWI614680B (zh) 用於分派電腦中多執行緒之開始虛擬執行指令
US10078518B2 (en) Intelligent context management
TWI617986B (zh) 在電腦中分派多執行緒
US20120284720A1 (en) Hardware assisted scheduling in computer system
US10545763B2 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
US20100095305A1 (en) Simultaneous multithread instruction completion controller
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
US11645081B2 (en) Handling exceptions in a multi-tile processing arrangement
US10102003B2 (en) Intelligent context management
JP4759026B2 (ja) プロセッサ
JP2019185646A (ja) 演算処理装置及び演算処理装置の制御方法
US11966726B2 (en) Operating system (OS) scheduler and compiler for code generation optimization in a (simultaneous multi-threading) SMT enabled CPU
JP6477248B2 (ja) 演算処理装置及び演算処理装置の処理方法
US20210096877A1 (en) Collapsing bubbles in a processing unit pipeline
US20170212763A1 (en) Exception handling predicate register

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170424

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181010

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181109

R150 Certificate of patent or registration of utility model

Ref document number: 6434791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250