JP2010020363A - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP2010020363A
JP2010020363A JP2008177520A JP2008177520A JP2010020363A JP 2010020363 A JP2010020363 A JP 2010020363A JP 2008177520 A JP2008177520 A JP 2008177520A JP 2008177520 A JP2008177520 A JP 2008177520A JP 2010020363 A JP2010020363 A JP 2010020363A
Authority
JP
Japan
Prior art keywords
instruction
execution
unit
synchronization
completion
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.)
Ceased
Application number
JP2008177520A
Other languages
English (en)
Other versions
JP2010020363A5 (ja
Inventor
Masaaki Ishii
雅明 石井
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.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2008177520A priority Critical patent/JP2010020363A/ja
Priority to US12/498,536 priority patent/US8245015B2/en
Priority to CN200910158828A priority patent/CN101625637A/zh
Publication of JP2010020363A publication Critical patent/JP2010020363A/ja
Publication of JP2010020363A5 publication Critical patent/JP2010020363A5/ja
Ceased 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/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行う。
【解決手段】命令発行ユニットからスレッド番号と実行部指定マップとを含む命令同期監視要求を受けると、実行完了検出部320における監視が開始され、命令発行ユニットは命令同期命令の属するスレッドの後続命令の発行を停止する。実行部において命令同期命令の先行命令の実行が完了すると、実行完了記録テーブル310の実行部指定マップ312における対応するビットがセットされる。命令発行ユニットからのスレッド番号に従ってセレクタ321により選択されたエントリにおける実行完了記録テーブル310の実行部指定マップ312と、命令発行ユニットから指定された実行部指定マップとが一致したことが比較器322によって検出される。これにより、論理積回路323を介して命令同期の成立が命令発行ユニットに通知される。
【選択図】図5

Description

本発明は、演算処理装置に関し、特に命令の実行完了の同期を行う命令同期命令を命令セットとして有する演算処理装置、および、その処理方法に関する。
命令を順次実行する演算処理装置において、ある時点までに演算処理装置の実行部に発行された命令の実行を完了させる必要がある場合がある。このような命令の実行完了を待つ動作を命令同期という。例えば、デバッガにおいて一命令ずつ実行していくステップ実行や、命令の実行結果が外部のメモリ等に出力されたことを確実に保証したい場合などである。この命令同期を実現するためには、命令同期を行う命令同期命令を演算処理装置の命令セットに備えておいて、命令同期が必要となったときにこの命令同期命令を演算処理装置に実行させることが考えられる。
従来、複数スレッドの並列実行が可能な演算処理装置において、あるスレッドの命令同期を行う方法として様々な技術が提案されている。その一つとして、例えば、全てのスレッドの命令発行を停止して、全ての実行部が実行中の命令を完了してアイドル状態になるのを待つことにより、命令同期を実現する技術が知られている(例えば、特許文献1参照。)。
米国特許公開第2004/023975号公報(図3)
しかしながら、上述の従来技術では、全ての実行部をアイドル状態にするために全てのスレッドの命令発行を停止するため、命令同期の対象となるスレッドだけでなく、他の命令同期の対象外のスレッドも停止することになる。そのため、演算処理装置の命令実行性能が大きく低下する。
これに対し、演算処理装置の全ての実行部において実行中の全ての命令を監視し、実行中の各命令の発行元となるスレッドを判別することができれば、命令同期の対象となるスレッドのみの実行を停止することは可能である。しかし、その場合、演算処理装置内の全ての実行部において実行中の命令の発行元スレッドと、命令同期の対象スレッドとを比較する回路が必要になり、演算処理装置の回路規模が大きく増加してしまうため、現実的ではない。
本発明はこのような状況に鑑みてなされたものであり、命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行うことを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、複数のスレッドに関する命令を同時に実行する複数の実行部と、上記複数の実行部の各々に対して命令を発行する命令発行部と、上記複数の実行部の何れかに命令同期命令が発行された場合に当該命令同期命令の属するスレッドにおける先行命令の実行完了を検出するために、上記複数の実行部のうち上記命令同期命令を発行された実行部の各々について上記命令同期命令の実行完了を監視する命令同期監視部とを具備し、上記命令発行部は、上記命令同期命令を発行した後には上記命令同期監視部によって上記命令同期命令の属するスレッドにおける先行命令の実行完了が検出されるまで上記命令同期命令の属するスレッドにおける後続命令の発行を停止する演算処理装置である。これにより、命令同期命令の属するスレッドにおける先行命令の実行完了が検出されるまで命令同期命令の属するスレッドにおける後続命令の発行を停止させるという作用をもたらす。
また、この第1の側面において、上記命令同期命令は、当該命令同期命令の属するスレッドの識別子を示すスレッド識別子フィールドと、上記複数の実行部のうち上記先行命令の実行完了を検出すべきものを指定する実行部指定フィールドとを備え、上記命令同期監視部は、上記スレッド識別子フィールドによって示されるスレッドに属する上記先行命令が、上記複数の実行部のうち上記実行部指定フィールドによって指定された実行部において実行完了したことを検出するようにしてもよい。これにより、実行部指定フィールドによって指定された実行部においてスレッド識別子フィールドによって示されるスレッドに属する先行命令が実行完了させるという作用をもたらす。
また、この場合において、上記命令同期監視部は、スレッド毎に上記複数の実行部の各々における上記先行命令の実行が完了したか否かを記録する実行完了記録部と、上記実行完了記録部における上記記録と上記実行部指定フィールドにおける上記指定とを比較することにより上記複数の実行部のうち上記実行部指定フィールドによって指定された全ての実行部において上記先行命令の実行が完了したことを検出する実行完了検出部とを備えてもよい。これにより、実行完了記録部における記録に基づいて実行完了検出部において先行命令の実行完了を検出させるという作用をもたらす。
また、この場合において、上記実行完了検出部は、上記実行完了記録部に記録される上記先行命令の実行完了の有無を上記スレッド識別子フィールドに従って選択する選択器と、上記選択された上記先行命令の実行完了の有無と上記実行部指定フィールドにおける上記実行部の指定とを比較する比較器と、上記命令発行部によって上記命令同期命令が発行された場合に上記比較の結果を上記実行完了検出部の検出結果として出力する出力部とを備えてもよい。これにより、選択された先行命令の実行完了の有無と実行部指定フィールドにおける実行部の指定との比較結果を実行完了検出部の検出結果として出力させるという作用をもたらす。
本発明によれば、命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行うことができるという優れた効果を奏し得る。
次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態における情報処理システムの全体構成の一例を示す図である。この情報処理システムは、複数のCPU11乃至14と、メモリ20と、メモリキャッシュ30と、フレームバッファ50と、バッファキャッシュ60と、演算処理装置100とを備えている。
CPU11乃至14は、互いに並列に処理を行うCPU(Central Processing Unit:中央処理装置)である。ここでは、CPU11乃至14のそれぞれが異なるスレッドを実行し、必要に応じて演算処理を演算処理装置100に指示することを想定する。
メモリ20は、CPU11乃至14の作業領域を保持する共有メモリである。メモリキャッシュ30は、メモリ20の一部の領域のコピーを保持する共有キャッシュメモリである。
フレームバッファ50は、画像処理の対象となるフレームを保持するバッファである。バッファキャッシュ60は、フレームバッファ50一部の領域のコピーを保持するキャッシュメモリである。演算処理装置100を動画コーデックエンジンとして用いる場合、このバッファキャッシュ60は、フレーム間予測の際のデコード済画像を参照するためのバッファであり、読出し専用のバッファとして機能する。
演算処理装置100は、CPU11乃至14から共有されて、CPU11乃至14からの指示に従って演算処理を行うコプロセッサである。演算処理装置100とCPU11乃至14との間は、メモリ20またはメモリキャッシュ30のレベルでデータの同期がとられるようになっている。以下では、演算処理装置100を動画コーデックエンジンとして用いる場合の例について説明する。
図2は、本発明の実施の形態における演算処理装置100の一構成例を示す図である。この演算処理装置100は、入力キュー111乃至114と、命令発行ユニット121乃至124と、アービタ130と、命令デコーダ140と、レジスタファイル150とを備えている。また、この演算処理装置100は、ロードストアユニット161と、算術論理演算器162と、乗算器163と、特殊演算器A乃至E(164乃至168)と、ライトバックユニット170と、出力キュー180と、命令同期監視ユニット190とを備えている。
入力キュー111乃至114は、CPU11乃至14から受け取った命令を保持するFIFO(First-In First-Out)キューである。この入力キュー111乃至114は、CPU11乃至14にそれぞれ対応している。この入力キュー111乃至114は、CPU11乃至14から受け取った順番により、命令発行ユニット121乃至124に命令を供給する。
命令発行ユニット121乃至124は、入力キュー111乃至114から供給された命令を発行するユニットである。この命令発行ユニット121乃至124は、入力キュー111乃至114にそれぞれ対応している。この命令発行ユニット121乃至124は、レジスタファイル150におけるデータの依存関係を制御するために、その依存関係を保持するスコアボードを備えてもよい。
また、この命令発行ユニット121乃至124は、命令同期命令を発行すると、その命令同期命令の属するスレッドにおける後続命令の発行を一旦停止する。その際、信号線129により命令同期監視ユニット190に対して命令同期を監視するよう要求する。そして、この命令発行ユニット121乃至124は、命令同期が完了した際には命令同期監視ユニット190から信号線199によりその旨を受信する。これにより、命令発行ユニット121乃至124は、後続命令の発行を再開する。
アービタ130は、命令発行ユニット121乃至124から発行された各命令を調停して命令デコーダ140に供給するものである。命令デコーダ140は、アービタ130から供給された命令をデコードして、その命令を実行する演算器等やアクセス対象となるレジスタ等を特定するものである。
なお、上述の入力キュー111乃至114、命令発行ユニット121乃至124、アービタ130および命令デコーダ140は、特許請求の範囲に記載の命令発行部の一例である。
レジスタファイル150は、演算処理装置100の内部レジスタを保持するものである。このレジスタファイル150では、命令デコーダ140によるデコード結果に従って必要なオペランドが読み出され、演算器等に供給される。
ロードストアユニット161は、メモリ20からレジスタファイル150へのロードおよびレジスタファイル150からメモリ20へのストアを行うものである。算術論理演算器162は、加算や減算などの算術演算と、論理和や論理積などの論理演算を行う演算器である。乗算器163は、乗算を行う演算器である。特殊演算器A乃至E(164乃至168)は、特殊演算を行う演算器である。ここでは、特殊演算として、動画コーデックに必要なマクロブロック演算を想定する。例えば、特殊演算器AおよびB(164および165)はIDCT(Inverse Discrete Cosine Transform)演算を行うものとする。また、特殊演算器C(166)はデブロッキングフィルタ演算を行うものとする。また、特殊演算器D(167)はフレーム内予測処理を行うものとする。また、特殊演算器E(168)はフレーム間予測処理を行うものとする。なお、この例では、動画コーデックを想定しているため、各演算器等は整数演算を扱うことを想定している。
ここで、各処理に要する時間として、ロードストアユニット161では5サイクルを要するものとする。また、算術論理演算器162では2サイクルを要するものとする。また、乗算器163では4サイクルを要するものとする。また、特殊演算器AおよびB(164および165)では4サイクルを要するものとする。また、特殊演算器CおよびD(166および167)では5サイクルを要するものとする。また、特殊演算器E(168)ではファンクションコードに応じて25サイクル以上を要するものとする。ファンクションコードとは、コーデック毎にフィルタ演算の種類を指定するコードである。なお、以下では、これらロードストアユニット161、算術論理演算器162、乗算器163、特殊演算器A乃至E(164乃至168)を実行部160と総称する。
ライトバックユニット170は、実行部160において生成された結果をレジスタファイル150に書き戻すものである。出力キュー180は、ロードストアユニット161、算術論理演算器162および特殊演算器E(168)において生成された結果をCPU11乃至14に出力するものである。
命令同期監視ユニット190は、実行部160に命令同期命令が発行された場合に、その命令同期命令の属するスレッドにおける先行命令が実行部160において実行完了となったことを検出するものである。そのために、命令同期監視ユニット190は、命令同期命令を発行された実行部160の各々について命令同期命令の実行完了を監視する。この命令同期監視ユニット190は、信号線129を介して命令発行ユニット121乃至124の何れかから命令同期監視要求を受けると、特定のスレッドにおける先行命令について実行完了の監視を開始する。信号線169を介して実行部160の各々から実行完了の報告がされると、命令同期監視ユニット190は、その報告に従って実行完了の旨を記録する。そして、命令同期監視ユニット190は、実行部160のうち所定のものにおいて実行が完了すると、信号線199を介して命令発行ユニット121乃至124のうち命令同期監視要求をしたものに同期の成立通知を行う。なお、命令同期監視ユニット190は、特許請求の範囲に記載の命令同期監視部の一例である。
図3は、本発明の実施の形態におけるレジスタファイル150の一構成例を示す図である。このレジスタファイル150は、CPU11乃至14のそれぞれに対して別々に設けられる。これにより、CPU11乃至14間におけるデータ依存関係を考慮せずに各命令の実行を行うことができる。ここでは、1つのCPUに対して32個ずつのレジスタを設けるものとする。
1個のレジスタは、4×4のマトリックス構造を有し、各要素はそれぞれ16ビットから成るものとする。すなわち、各レジスタはベクトルレジスタのように複数の要素からなり、演算などの際にも基本的にはレジスタを単位として処理が行われる。この例では、動画コーデックを想定しているため、各要素は整数を保持することを想定している。
図4は、本発明の実施の形態における命令同期命令の命令フォーマットの一例を示す図である。この命令フォーマットは、機能コード610、スレッド番号620、および、実行部指定マップ630の各フィールドを備えている。
機能コード610は、命令に割り当てられたコードを保持するフィールドである。命令同期命令は「InstSync」と表記され、例えば8ビット程度のコードが機能コード610として格納される。
スレッド番号620は、命令同期の対象となるスレッドを指定するフィールドである。すなわち、このスレッド番号620には、命令同期命令の属するスレッドの番号が格納される。なお、スレッド番号620は、特許請求の範囲に記載のスレッド識別子フィールドの一例である。
実行部指定マップ630は、命令同期の対象となる実行部を指定するフィールドである。この実行部指定マップ630は、実行部160の各々に対応して1ビットずつのビットマップを有しており、それぞれ命令同期の対象となるか否を示している。すなわち、第0番目のビットがロードストアユニット161に対応する。また、第1番目のビットが算術論理演算器162に対応する。また、第2番目のビットが乗算器163に対応する。また、第3番目のビットが特殊演算器A(164)に対応する。また、第4番目のビットが特殊演算器B(165)に対応する。また、第5番目のビットが特殊演算器C(166)に対応する。また、第6番目のビットが特殊演算器D(167)に対応する。また、第7番目のビットが特殊演算器E(168)に対応する。例えば、ロードストアユニット161を命令同期の対象とする場合には第0番目のビットが「1」にセットされ、命令同期の対象としない場合には「0」にリセットされる。
図5は、本発明の実施の形態における命令同期監視ユニット190の一構成例を示す図である。この命令同期監視ユニット190は、実行完了記録テーブル310と、実行完了検出部320とを備えている。
実行完了記録テーブル310は、スレッド毎に実行部160の各々における命令同期命令の先行命令の実行が完了したか否かを記録するテーブルであり、スレッド番号311および実行部指定マップ312の各フィールドを備える。スレッド番号311は、命令同期命令の属するスレッド番号を保持するフィールドである。実行部指定マップ312は、命令フォーマットにおける実行部指定マップ630と同様のビットマップであり、実行部160において実行完了したことを記録するものである。実行部160の各々は、命令同期命令を実行した際に、それに先行する命令の実行が完了したことを命令同期監視ユニット190に報告する。この報告には、命令同期命令のスレッド番号が含まれる。これにより、命令同期監視ユニット190は、そのスレッド番号と一致するスレッド番号311のエントリにおいて、実行部指定マップ312のビットマップのうち実行完了報告を行った実行部160に対応するビットを、例えば「1」にセットする。この例では、実行部指定マップ312のビットマップにおいて「1」は実行完了を示し、「0」は実行未了を示すものとする。なお、実行完了記録テーブル310は、特許請求の範囲に記載の実行完了記録部の一例である。
実行完了検出部320は、実行完了記録テーブル310を参照することにより、実行部指定マップ630によって指定された全ての実行部160において先行命令の実行が完了したことを検出するものである。この実行完了検出部320は、セレクタ321と、比較器322と、論理積回路323とを備える。
セレクタ321は、命令同期命令のスレッド番号620に従って、実行完了記録テーブル310の実行部指定マップ312を選択する選択器である。比較器322は、セレクタ321によって選択された実行部指定マップ312と、命令同期命令の実行部指定マップ630とを比較する比較器である。命令同期命令の実行部指定マップ630において同期対象として指定された実行部の全てにおいて先行命令の実行が完了した際に、実行部指定マップ630の内容は実行部指定マップ312と一致する。その一致を検出するのがこの比較器322である。論理積回路323は、命令発行ユニット121乃至124からの命令同期監視要求の有無と比較器322の結果との論理積を生成するものである。すなわち、命令同期監視要求がされている際に比較器322において一致が検出されると、論理積回路323は命令同期が成立した旨を命令発行ユニット121乃至124に通知する。なお、セレクタ321は特許請求の範囲に記載の選択器の一例である。また、論理積回路323は特許請求の範囲に記載の出力部の一例である。
図6は、本発明の実施の形態における命令同期命令を含む命令列の一例を示す図である。あるスレッド#X内の命令列において命令同期命令が発行されると、命令発行ユニット121乃至124は、そのスレッド#X内の命令同期命令に後続する命令#j以降の命令の発行を停止する。そして、命令発行ユニット121乃至124は、スレッド#X内の命令同期命令に先行する命令#i以前の命令の実行完了が検出されるまで、スレッド#X内の命令については同期待ち状態となる。その間も、他のスレッドに属する命令の発行は継続される。命令同期監視ユニット190において命令#i以前の先行命令の実行完了が検出されると、命令発行ユニット121乃至124は、スレッド#X内の命令#j以降の後続命令の発行を再開する。
次に本発明の実施の形態における演算処理装置100の動作について図面を参照して説明する。
図7は、本発明の実施の形態における命令発行ユニット121乃至124の処理手順例を示す図である。
CPU11乃至14から命令同期命令を受信すると(ステップS911)、命令発行ユニット121乃至124は、命令同期監視ユニット190に対して命令同期の監視を要求する(ステップS912)。また、命令発行ユニット121乃至124は、命令同期命令の実行部指定マップ630において指定された実行部160に対して命令同期命令を発行する(ステップS913)。そして、命令発行ユニット121乃至124は、命令同期命令の属するスレッド(スレッド番号620)において後続する命令の発行を停止する(ステップS914)。
その後、命令同期監視ユニット190から同期成立の通知を受信すると(ステップS915)、命令発行ユニット121乃至124は、命令同期命令の属するスレッド(スレッド番号620)において後続する命令の発行を再開する(ステップS916)。
図8は、本発明の実施の形態における実行部160の処理手順例を示す図である。
命令発行ユニット121乃至124から命令同期命令が発行されると、実行部160は他の命令と同様に命令同期命令を実行する。そして、命令同期命令の実行が完了すると(ステップS922)、実行部160は命令同期監視ユニット190に対してその実行部160において命令同期命令の先行命令が実行完了した旨の報告を行う(ステップS923)。これにより、命令同期監視ユニット190では、実行完了記録テーブル310の実行部指定マップ312がセットされる。
図9は、本発明の実施の形態における命令同期監視ユニット190の処理手順例を示す図である。なお、実行完了記録テーブル310の実行部指定マップ312は、全てのビットが予めリセットされていることを前提とする。
命令発行ユニット121乃至124から命令同期の監視要求を受信すると(ステップS931)、命令同期監視ユニット190は、そのスレッドについて命令同期の監視を開始する。この状態において、実行部160から命令同期命令の先行命令が実行完了した旨の報告を受信すると(ステップS933)、命令同期監視ユニット190は、実行部指定マップ312の対応するビットをセットする(ステップS934)。すなわち、命令同期監視ユニット190は、実行完了記録テーブル310の対応するスレッドに関する実行部指定マップ312において、実行完了を報告した実行部160に対応するビットをセットする。その結果、比較器322によって実行部指定マップ312と実行部指定マップ630との間の一致が検出されなければ(ステップS935)、一致するまでステップS933以降の処理が繰り返される。
比較器322によって実行部指定マップ312と実行部指定マップ630との間の一致が検出されると(ステップS935)、命令同期監視ユニット190は、その旨を通知する。すなわち、命令同期監視ユニット190は、命令発行ユニット121乃至124のうち命令同期命令を発行したものに対して命令同期が成立した旨を通知する(ステップS936)。そして、命令同期監視ユニット190は実行完了記録テーブル310の対応するスレッドに関する実行部指定マップ312をリセットする(ステップS937)。
図10は、本発明の実施の形態における演算処理装置100のシーケンスチャートの一例を示す図である。
CPU11乃至14から命令同期命令を受信すると(811)、命令発行ユニット121乃至124は、命令同期監視ユニット190に対して命令同期の監視を要求する(812)。また、命令発行ユニット121乃至124は、命令同期命令の実行部指定マップ630において指定された実行部160に対して命令同期命令を発行する(813)。そして、命令発行ユニット121乃至124は、命令同期命令の属するスレッド(スレッド番号620)において後続する命令の発行を停止する(814)。
命令発行ユニット121乃至124から命令同期の監視要求を受信すると(831)、命令同期監視ユニット190は、そのスレッドについて命令同期の監視を開始する。
命令発行ユニット121乃至124から命令同期命令が発行されると(821)、実行部160は他の命令と同様に命令同期命令を実行する。そして、命令同期命令の実行が完了すると(822)、実行部160は命令同期監視ユニット190に対してその実行部160において命令同期命令の先行命令が実行完了した旨の報告を行う(823)。
実行部160から命令同期命令の先行命令が実行完了した旨の報告を受信すると(833)、命令同期監視ユニット190は、実行部指定マップ312をセットする。すなわち、命令同期監視ユニット190は、実行完了記録テーブル310の対応するスレッドに関する実行部指定マップ312において、実行完了を報告した実行部160に対応するビットをセットする(834)。その結果、比較器322によって実行部指定マップ312と実行部指定マップ630との間の一致が検出されると(835)、その旨を通知する。すなわち、命令同期監視ユニット190は、命令発行ユニット121乃至124のうち命令同期命令を発行したものに対して命令同期が成立した旨を通知する(836)。そして、命令同期監視ユニット190は実行完了記録テーブル310の対応するスレッドに関する実行部指定マップ312をリセットする(837)。
命令同期監視ユニット190から同期成立の通知を受信すると(815)、命令発行ユニット121乃至124は、命令同期命令の属するスレッド(スレッド番号620)において後続する命令の発行を再開する(816)。
このように、本発明の実施の形態によれば、命令同期監視ユニット190においてスレッド毎に命令同期命令の先行命令の実行完了を検出することにより、命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行うことができる。この実施の形態によれば、実行完了記録テーブル310、セレクタ321および比較器322という小規模な回路の組合せにより命令同期が可能になる。そのため、命令同期の実行のために演算処理装置100の回路規模を大きく増加することなく、所望の命令同期を実現することができる。
なお、上述の実施の形態では、実行完了記録テーブル310の実行部指定マップ312を予めリセットしておいて、命令同期命令の実行完了の報告を受信する度に実行部指定マップ312をセットし、実行部指定マップ630との一致を検出している。これに対して、同期監視要求を受信した際に実行部指定マップ630の内容を実行部指定マップ312にセットしておいて、命令同期命令の実行完了の報告を受信する度に実行部指定マップ312をリセットしてもよい。この場合、比較器322は、実行部指定マップ312がクリアされるのを検出することになる。以下、この変形例について説明する。
図11は、本発明の実施の形態における命令同期監視ユニット190の処理手順の変形例を示す図である。
命令発行ユニット121乃至124から命令同期の監視要求を受信すると(ステップS941)、命令同期監視ユニット190は、そのスレッドについて命令同期の監視を開始する。その際、命令同期監視ユニット190は、実行完了記録テーブル310の対応するスレッドに関する実行部指定マップ312において、実行部指定マップ630の内容をセットする(ステップS942)。
この状態において、実行部160から命令同期命令の先行命令が実行完了した旨の報告を受信すると(ステップS943)、命令同期監視ユニット190は、実行部指定マップ312をリセットする(ステップS944)。すなわち、命令同期監視ユニット190は、実行完了記録テーブル310の対応するスレッドに関する実行部指定マップ312において、実行完了を報告した実行部160に対応するビットをリセットする。その結果、比較器322によって実行部指定マップ312の各ビットが全てクリアされていることが検出されなければ(ステップS945)、検出されるまでステップS943以降の処理が繰り返される。
比較器322によって実行部指定マップ312の各ビットが全てクリアされていることが検出されると(ステップS945)、命令同期監視ユニット190は、その旨を通知する。すなわち、命令同期監視ユニット190は、命令発行ユニット121乃至124のうち命令同期命令を発行したものに対して命令同期が成立した旨を通知する(ステップS946)。
なお、上述の実施の形態においては、1つの実行完了検出部320により命令同期の監視を行っていたが、以下のように実行完了検出部320を複数設けてもよい。
図12は、本発明の実施の形態における命令同期監視ユニット190の第1の変形例を示す図である。この命令同期監視ユニット190の第1の変形例では、実行完了検出部320が複数設けられている。すなわち、i個(iは整数)の実行完了検出部320−1乃至iが設けられ、これにより並列に別個のスレッドの命令同期を監視することができるようになっている。この例では、命令発行ユニット121乃至124からの要求に基づいて、実行完了検出部320−1乃至iの各々においてスレッド番号を指定するようになっているが、次のようにスレッド番号を固定してもよい。
図13は、本発明の実施の形態における命令同期監視ユニット190の第2の変形例を示す図である。この命令同期監視ユニット190の第2の変形例では、セレクタ321が設けられず、実行完了記録テーブル310の各エントリと実行完了検出部320−1乃至nの各々とが1対1に対応している。これにより、より小規模な回路構成により、並列に別個のスレッドの命令同期を監視することができるようになっている。
なお、本発明の実施の形態においては、実行部160において8個の演算器等を想定したが、本発明はこれに限定されるものではなく、任意の数の演算器等を利用することができる。また、動画コーデックのための特殊演算器を想定して説明したが、本発明はこれに限定されるものではない。
また、本発明の実施の形態においては、実行完了記録テーブル310の実行部指定マップ312の形式としてビットマップ形式を想定したが、本発明はこれに限定されるものではなく、特定の形式によりエンコードされていてもよい。
また、本発明の実施の形態においては、実行部160の各演算器等と命令同期監視ユニット190との間を信号線169により接続する例について説明したが、本発明はこれに限定されるものではなく、共通バス等により接続されていてもよい。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
本発明の実施の形態における情報処理システムの全体構成の一例を示す図である。 本発明の実施の形態における演算処理装置100の一構成例を示す図である。 本発明の実施の形態におけるレジスタファイル150の一構成例を示す図である。 本発明の実施の形態における命令同期命令の命令フォーマットの一例を示す図である。 本発明の実施の形態における命令同期監視ユニット190の一構成例を示す図である。 本発明の実施の形態における命令同期命令を含む命令列の一例を示す図である。 本発明の実施の形態における命令発行ユニット121乃至124の処理手順例を示す図である。 本発明の実施の形態における実行部160の処理手順例を示す図である。 本発明の実施の形態における命令同期監視ユニット190の処理手順例を示す図である。 本発明の実施の形態における演算処理装置100のシーケンスチャートの一例を示す図である。 本発明の実施の形態における命令同期監視ユニット190の処理手順の変形例を示す図である。 本発明の実施の形態における命令同期監視ユニット190の第1の変形例を示す図である。 本発明の実施の形態における命令同期監視ユニット190の第2の変形例を示す図である。
符号の説明
11〜14 CPU
20 メモリ
30 メモリキャッシュ
50 フレームバッファ
60 バッファキャッシュ
100 演算処理装置
111〜114 入力キュー
121〜124 命令発行ユニット
130 アービタ
140 命令デコーダ
150 レジスタファイル
160 実行部
161 ロードストアユニット
162 算術論理演算器
163 乗算器
164〜168 特殊演算器
170 ライトバックユニット
180 出力キュー
190 命令同期監視ユニット
310 実行完了記録テーブル
311 スレッド番号
312 実行部指定マップ
320 実行完了検出部
321 セレクタ
322 比較器
323 論理積回路
610 機能コード
620 スレッド番号
630 実行部指定マップ

Claims (4)

  1. 複数のスレッドに関する命令を同時に実行する複数の実行部と、
    前記複数の実行部の各々に対して命令を発行する命令発行部と、
    前記複数の実行部の何れかに命令同期命令が発行された場合に当該命令同期命令の属するスレッドにおける先行命令の実行完了を検出するために、前記複数の実行部のうち前記命令同期命令を発行された実行部の各々について前記命令同期命令の実行完了を監視する命令同期監視部とを具備し、
    前記命令発行部は、前記命令同期命令を発行した後には前記命令同期監視部によって前記命令同期命令の属するスレッドにおける先行命令の実行完了が検出されるまで前記命令同期命令の属するスレッドにおける後続命令の発行を停止する演算処理装置。
  2. 前記命令同期命令は、当該命令同期命令の属するスレッドの識別子を示すスレッド識別子フィールドと、前記複数の実行部のうち前記先行命令の実行完了を検出すべきものを指定する実行部指定フィールドとを備え、
    前記命令同期監視部は、前記スレッド識別子フィールドによって示されるスレッドに属する前記先行命令が、前記複数の実行部のうち前記実行部指定フィールドによって指定された実行部において実行完了したことを検出する
    請求項1記載の演算処理装置。
  3. 前記命令同期監視部は、
    スレッド毎に前記複数の実行部の各々における前記先行命令の実行が完了したか否かを記録する実行完了記録部と、
    前記実行完了記録部における前記記録と前記実行部指定フィールドにおける前記指定とを比較することにより前記複数の実行部のうち前記実行部指定フィールドによって指定された全ての実行部において前記先行命令の実行が完了したことを検出する実行完了検出部とを備える
    請求項2記載の演算処理装置。
  4. 前記実行完了検出部は、
    前記実行完了記録部に記録される前記先行命令の実行完了の有無を前記スレッド識別子フィールドに従って選択する選択器と、
    前記選択された前記先行命令の実行完了の有無と前記実行部指定フィールドにおける前記実行部の指定とを比較する比較器と、
    前記命令発行部によって前記命令同期命令が発行された場合に前記比較の結果を前記実行完了検出部の検出結果として出力する出力部とを備える
    請求項3記載の演算処理装置。
JP2008177520A 2008-07-08 2008-07-08 演算処理装置 Ceased JP2010020363A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008177520A JP2010020363A (ja) 2008-07-08 2008-07-08 演算処理装置
US12/498,536 US8245015B2 (en) 2008-07-08 2009-07-07 Processor monitoring execution of a synchronization instruction issued to execution sections to detect completion of execution of preceding instructions in an identified thread
CN200910158828A CN101625637A (zh) 2008-07-08 2009-07-08 处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008177520A JP2010020363A (ja) 2008-07-08 2008-07-08 演算処理装置

Publications (2)

Publication Number Publication Date
JP2010020363A true JP2010020363A (ja) 2010-01-28
JP2010020363A5 JP2010020363A5 (ja) 2011-06-16

Family

ID=41506169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008177520A Ceased JP2010020363A (ja) 2008-07-08 2008-07-08 演算処理装置

Country Status (3)

Country Link
US (1) US8245015B2 (ja)
JP (1) JP2010020363A (ja)
CN (1) CN101625637A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017539001A (ja) * 2014-11-13 2017-12-28 エイアールエム リミテッド コンテキスト依存のバリア命令の実行
KR102075689B1 (ko) * 2018-08-16 2020-02-10 주식회사 넥스트칩 태스크의 기능 안전을 보장하기 위한 방법 및 장치

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296437A1 (en) * 2010-05-28 2011-12-01 Devendra Raut Method and apparatus for lockless communication between cores in a multi-core processor
GB2573316B (en) 2018-05-02 2021-01-27 Advanced Risc Mach Ltd Data processing systems
US20210373975A1 (en) * 2020-05-29 2021-12-02 Advanced Micro Devices, Inc. Workgroup synchronization and processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200486A (ja) * 1993-12-28 1995-08-04 Nec Corp 情報処理装置
JPH07262142A (ja) * 1994-03-18 1995-10-13 Fujitsu Ltd 並列処理制御方式
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2002532811A (ja) * 1998-12-17 2002-10-02 株式会社ソニー・コンピュータエンタテインメント 楽音データ生成装置および方法、並びに該方法を提供する媒体

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881264A (en) * 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
US7493615B2 (en) 2003-05-01 2009-02-17 Sun Microsystems, Inc. Apparatus and method for synchronizing multiple threads in an out-of-order microprocessor
JP4259390B2 (ja) 2004-04-28 2009-04-30 日本電気株式会社 並列演算処理装置
US7412589B2 (en) * 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200486A (ja) * 1993-12-28 1995-08-04 Nec Corp 情報処理装置
JPH07262142A (ja) * 1994-03-18 1995-10-13 Fujitsu Ltd 並列処理制御方式
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2002532811A (ja) * 1998-12-17 2002-10-02 株式会社ソニー・コンピュータエンタテインメント 楽音データ生成装置および方法、並びに該方法を提供する媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017539001A (ja) * 2014-11-13 2017-12-28 エイアールエム リミテッド コンテキスト依存のバリア命令の実行
US10503512B2 (en) 2014-11-13 2019-12-10 Arm Limited Context sensitive barriers with an implicit access ordering constraint for a victim context
KR102075689B1 (ko) * 2018-08-16 2020-02-10 주식회사 넥스트칩 태스크의 기능 안전을 보장하기 위한 방법 및 장치

Also Published As

Publication number Publication date
US20100011195A1 (en) 2010-01-14
US8245015B2 (en) 2012-08-14
CN101625637A (zh) 2010-01-13

Similar Documents

Publication Publication Date Title
TWI514267B (zh) 用於多股亂序處理器中之指令排程的方法及裝置與系統
US9195466B2 (en) Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9477476B2 (en) Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9710276B2 (en) Execution of instruction loops using an instruction buffer
TWI835807B (zh) 用於組合載入或儲存指示的方法、裝置及非暫時性電腦可讀媒體
TWI497278B (zh) 微處理器、死結或活結狀態解除方法以及其電腦程式產品
JP2003196084A (ja) リードモディファイライトユニットを有するシステム
US20140281429A1 (en) Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
US20140075160A1 (en) System and method for synchronizing threads in a divergent region of code
JP2010020363A (ja) 演算処理装置
EP3140730B1 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
WO2024146076A1 (zh) 乱序处理器中队列的队列项选择方法及装置
US9886396B2 (en) Scalable event handling in multi-threaded processor cores
US20130191616A1 (en) Instruction control circuit, processor, and instruction control method
JP2010086497A (ja) 画像処理装置及びデータプロセッサ
WO2013011620A1 (ja) マルチプロセッサシステム
US20120144399A1 (en) Apparatus and method for synchronization of threads
JPH07244588A (ja) データ処理装置
CN114461278B (zh) 操作指令调度队列的方法、操作装置和电子装置
US11567554B2 (en) Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics
KR20170065845A (ko) 프로세서 및 제어 방법
JP5328833B2 (ja) ダイレクトメモリアクセスシステム及びその制御方法
JP2006107004A (ja) トレース制御回路、マイクロプロセッサ及びトレース制御方法
JP5062950B2 (ja) ダイレクトメモリアクセス装置及びその制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110428

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130319

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20131029