JP5283739B2 - プロセッサ内のマルチスレッド間通信 - Google Patents
プロセッサ内のマルチスレッド間通信 Download PDFInfo
- Publication number
- JP5283739B2 JP5283739B2 JP2011210843A JP2011210843A JP5283739B2 JP 5283739 B2 JP5283739 B2 JP 5283739B2 JP 2011210843 A JP2011210843 A JP 2011210843A JP 2011210843 A JP2011210843 A JP 2011210843A JP 5283739 B2 JP5283739 B2 JP 5283739B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- register
- instruction
- register file
- indicator
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Description
[実施形態1]
第1のスレッドの命令をコアで実行する間に、前記コアから第2のスレッドのレジスタファイルにアクセスし、前記第1のスレッドの前記命令のためのソースオペランドを取得する段階を備える方法。
[実施形態2]
前記ソースオペランドにより識別されたレジスタに関連する同期インジケータが、前記第2のスレッドのプロデューサ演算が終っていないことを示す第1の状態にある場合、前記第1のスレッドの前記命令を実行させない段階と、
前記レジスタに関連する前記同期インジケータが、前記第2のスレッドの前記プロデューサ演算の終了を示す第2の状態にある場合、前記第1のスレッドの前記命令を実行する段階と、
をさらに備える、実施形態1に記載の方法。
[実施形態3]
前記プロデューサ演算が終了した後、前記レジスタに対するスコアボードのエントリに前記同期インジケータをセットする段階をさらに備える、実施形態2に記載の方法。
[実施形態4]
前記プロデューサ演算が終了した後、前記第1のスレッドに関連する前記レジスタのための前記スコアボードの前記エントリに前記同期インジケータをセットし、前記第2のスレッドに関連する前記レジスタのための前記スコアボードの前記エントリに前記同期インジケータをリセットする段階をさらに備える、実施形態3に記載の方法。
[実施形態5]
前記コアにおいて、前記第2のスレッドの前記プロデューサ演算と、前記第1のスレッドの前記命令とを実行する段階をさらに備え、前記コアは、前記第1のスレッドおよび前記第2のスレッドの両方が実行される共通コアを含む、実施形態2に記載の方法。
[実施形態6]
前記第1のスレッドの前記命令をデコードする段階をさらに備え、
前記命令は、前記ソースオペランド用の位置インジケータを含み、前記位置インジケータは、前記第2のスレッドの前記レジスタファイルのレジスタにおける前記ソースオペランドの位置を示す、実施形態1に記載の方法。
[実施形態7]
前記第1のスレッドの前記命令の結果をデスティネーションレジスタに格納し、前記第1のスレッドの前記命令における対応するデスティネーションオペランド用の位置インジケータに基づき、前記デスティネーションレジスタ用の同期インジケータをアップデートする段階をさらに備える、実施形態6に記載の方法。
[実施形態8]
第1のスレッドの第1のレジスタファイルにおけるレジスタにそれぞれ対応するエントリを格納する記憶装置を備え、前記エントリのそれぞれは、第2のスレッドの第2のレジスタファイルの対応するレジスタをデスティネーションオペランドとして使用するための前記第2のスレッドのプロデューサ演算が終了しているかどうかを示す同期インジケータを含む、装置。
[実施形態9]
前記第2のスレッドが、前記第2のレジスタファイルの前記対応するレジスタを前記デスティネーションオペランドとして用いる命令を実行した後、前記対応するレジスタに対するエントリの前記第1のスレッドの前記同期インジケータをアップデートするコントローラをさらに備え、前記命令は、前記第1のスレッドによる前記対応するレジスタの使用を示す前記デスティネーションオペランド用の位置インジケータを含む、実施形態8に記載の装置。
[実施形態10]
前記記憶装置は、コアのスコアボードを有する、実施形態8に記載の装置。
[実施形態11]
前記コアは、前記第1のレジスタファイル、および、前記第2のレジスタファイルを用いて、前記第1のスレッド、および、前記第2のスレッドを同時に実行する、実施形態10に記載の装置。
[実施形態12]
前記コアは、前記第1のスレッドの実行中に、前記第2のレジスタファイルにアクセスする、実施形態11に記載の装置。
[実施形態13]
前記コアは、前記第1のスレッドの命令のソースオペランド用の位置インジケータに基づき、前記第2のレジスタファイルにアクセスする、実施形態12に記載の装置。
[実施形態14]
前記コアは、前記対応するレジスタに対するエントリの前記同期インジケータにさらに基づき、前記第2のレジスタファイルにアクセスする、実施形態13に記載の装置。
[実施形態15]
コアをさらに備え、前記コアは、前記記憶装置と、前記第1のレジスタファイルと、前記第2のレジスタファイルと、実行ユニットとを有し、前記実行ユニットは、命令のローカリティインジケータに基づき、前記第2のレジスタファイルのレジスタから、前記第1のスレッドの前記命令を実行するためのソースオペランドを取得する、実施形態8に記載の装置。
[実施形態16]
前記第2のレジスタファイルの前記レジスタに関連するエントリの前記同期インジケータが、前記2のスレッドのプロデューサ命令が終了していない状態を示す場合、前記第1のスレッドの前記命令は実行されない、実施形態15に記載の装置。
[実施形態17]
第1のスレッドのデータを格納する複数のレジスタを有する第1のレジスタファイルと、
第2のスレッドのデータを格納する複数のレジスタを有する第2のレジスタファイルと、
前記第1のレジスタファイルおよび前記第2のレジスタファイルに接続され、前記第1のスレッドおよび前記第2のスレッドの命令を実行する実行ユニットと、
前記実行ユニットに接続されたダイナミックランダムアクセスメモリ(DRAM)と、
を備え、
前記実行ユニットは、前記第1のレジスタファイルにアクセスし、前記第2のスレッドの命令を実行するためのソースオペランドを取得する、
システム。
[実施形態18]
前記実行ユニットは、前記第2のスレッドの前記命令のフラグに基づき、前記第1のレジスタファイルにアクセスし、前記フラグは、前記第1のレジスタファイルに前記ソースオペランドが存在することを示す、実施形態17に記載のシステム。
[実施形態19]
前記実行ユニットに接続された命令発行器をさらに備え、前記命令発行器は、前記ソースオペランドに関連するレジスタに付随する同期インジケータがアクティブになるまで、前記第2のスレッドの前記命令の割り当てを保留する、実施形態18に記載のシステム。
[実施形態20]
前記命令発行器は、前記第1のスレッドのプロデューサ命令が実行された後、前記レジスタに付随する前記同期インジケータを書き込む、実施形態19に記載のシステム。
[実施形態21]
前記命令発行器は、前記第1のスレッドの前記プロデューサ命令が実行された後、前記レジスタに付随するレディインジケータをさらに書き込む、実施形態20に記載のシステム。
[実施形態22]
前記命令発行器は、前記同期インジケータ、および、前記レディインジケータを前記レジスタに対応するスコアボードのエントリに書き込む、実施形態21に記載のシステム。
[実施形態23]
前記実行ユニットと、前記第1のレジスタファイルと、前記第2のレジスタファイルとを有する第1のコアをさらに備え、前記第1のコアは、前記第1のスレッドおよび前記第2のスレッドの命令を処理する、実施形態17に記載のシステム。
[実施形態24]
第2の実行ユニット、および、第3のレジスタファイルを有する第2のコアをさらに備え、前記第2のコアは、第3のスレッドの命令を処理し、前記第1のレジスタファイルおよび前記第2のレジスタファイルの少なくとも1つにアクセスして前記第3のスレッドで用いられるソースオペランドを取得する、実施形態23に記載のシステム。
[実施形態25]
前記第1のレジスタファイル、および、前記第2のレジスタファイルを含む統合レジスタファイルをさらに備える、実施形態17に記載のシステム。
[実施形態26]
命令を格納する機械可読媒体であって、前記命令は、実行されると、機械に方法を実行させ、前記方法は、
前記命令が第1のスレッドを示すレジスタソースオペランドのフラグを含む場合、第2のスレッドの命令を実行するための前記レジスタソースオペランドを取得するために前記第1のスレッドのレジスタファイルにアクセスする段階を備える、機械可読媒体。
[実施形態27]
前記方法は、前記命令が前記第2のスレッドを示す前記レジスタソースオペランドのフラグを含む場合、前記第1のスレッドの命令を実行するための前記レジスタソースオペランドを取得するために前記第2のスレッドのレジスタファイルにアクセスする段階をさらに備える、実施形態26に記載の機械可読媒体。
[実施形態28]
前記方法は、前記レジスタソースオペランドにより識別されたレジスタに関連して、前記第1のスレッドのプロデューサ演算の終了を示すインジケータがアクティブになるまで、前記第2のスレッドの前記命令を実行しないようにする段階をさらに備える実施形態26に記載の機械可読媒体。
[実施形態29]
前記方法は、前記命令が前記第1のスレッドを示すレジスタデスティネーションオペランドのフラグを含む場合、前記第2のスレッドの前記命令を実行した後、前記第2のスレッドの前記命令の前記レジスタデスティネーションオペランドにより識別されたレジスタに関連する同期インジケータをアクティブにする段階をさらに備える、実施形態26に記載の機械可読媒体。
[実施形態30]
前記方法は、前記第2のスレッドに前記第1のスレッドの状態を複写せずに、前記第1のスレッドから前記第2のスレッドを生成し、前記第2のスレッドの前記命令の実行中に、前記第1のスレッドの前記レジスタファイルに前記第2のスレッドをアクセスさせる段階をさらに備える、請求項26に記載の機械可読媒体。
Claims (22)
- 第1のスレッドの命令をコアで実行する間に、第2のスレッドのレジスタファイルのレジスタにおけるソースオペランドの位置を示す前記ソースオペランドの位置インジケータと、かつデスティネーションオペランドが前記第2のスレッドによってアクセスされるべきことを示す前記デスティネーションオペランドの位置インジケータと、を含む前記命令をデコードしたことに応じて、前記コアが前記第2のスレッドの前記レジスタファイルにアクセスして、前記第1のスレッドの前記命令のためのソースオペランドを取得する段階と、
前記命令の実行の結果を前記デスティネーションオペランドとして前記第1のスレッドのレジスタファイルに格納する段階と、
を備える方法。 - 前記ソースオペランドにより識別されたレジスタに関連する同期インジケータが、前記第2のスレッドのプロデューサ演算が終っていないことを示す第1の状態にある場合、前記第1のスレッドの前記命令を実行させない段階と、
前記レジスタに関連する前記同期インジケータが、前記第2のスレッドの前記プロデューサ演算の終了を示す第2の状態にある場合、前記第1のスレッドの前記命令を実行する段階と、
をさらに備える、請求項1に記載の方法。 - 前記プロデューサ演算が終了した後、前記レジスタに対するスコアボードのエントリに前記同期インジケータをセットする段階をさらに備える、請求項2に記載の方法。
- 前記プロデューサ演算が終了した後、前記第1のスレッドに関連する前記レジスタのための前記スコアボードの前記エントリに前記同期インジケータをセットし、前記第2のスレッドに関連する前記レジスタのための前記スコアボードの前記エントリに前記同期インジケータをリセットする段階をさらに備える、請求項3に記載の方法。
- 前記コアにおいて、前記第2のスレッドの前記プロデューサ演算と、前記第1のスレッドの前記命令とを実行する段階をさらに備える、請求項2に記載の方法。
- 前記第1のスレッドの前記命令の結果を、前記第1のスレッドの前記レジスタファイルのデスティネーションレジスタに格納し、前記第1のスレッドの前記命令におけるデスティネーションオペランドの位置インジケータに基づき、前記デスティネーションレジスタ用の同期インジケータをアップデートする段階をさらに備える、請求項1に記載の方法。
- 第1のスレッドの第1のレジスタファイルにおけるレジスタにそれぞれ対応するエントリを格納し、前記エントリのそれぞれは、
第2のスレッドの第2のレジスタファイルの対応するレジスタをデスティネーションオペランドとして使用するための前記第2のスレッドのプロデューサ演算が終了しているかどうかを示す同期インジケータおよび、
前記第1のレジスタファイルにおける前記レジスタに格納されたオペランドが、前記第1のスレッドのコンシューマ演算のみによって用いられるかどうかを示すレディインジケータを含む、記憶装置と、
前記第2のスレッドが、前記第2のレジスタファイルの前記対応するレジスタを前記デスティネーションオペランドとして用いる命令を実行した後、前記対応するレジスタに対するエントリの前記第1のスレッドの前記同期インジケータをアップデートするコントローラと、を備え、
前記命令は、前記第1のスレッドによる前記対応するレジスタの使用を示す前記デスティネーションオペランド用のローカリティインジケータを含む、
装置。 - コアは、前記第1のレジスタファイル、および、前記第2のレジスタファイルを用いて、前記第1のスレッド、および、前記第2のスレッドを同時に実行し、
前記第1のスレッドの実行中に前記第2のレジスタファイルにアクセスする、
請求項7に記載の装置。 - コアは、前記第1のスレッドの命令のソースオペランド用の位置インジケータおよび前記対応するレジスタに対するエントリの前記同期インジケータに基づき、前記第2のレジスタファイルにアクセスする、請求項7に記載の装置。
- コアをさらに備え、前記コアは、前記記憶装置と、前記第1のレジスタファイルと、前記第2のレジスタファイルと、実行ユニットとを有し、前記実行ユニットは、前記第1のスレッドの前記命令のローカリティインジケータに基づき、前記第2のレジスタファイルのレジスタから、前記第1のスレッドの前記命令を実行するためのソースオペランドを取得する、請求項7に記載の装置。
- 前記第2のレジスタファイルの前記レジスタに関連するエントリの前記同期インジケータが、前記第2のスレッドのプロデューサ命令が終了していない状態を示す場合、前記第1のスレッドの前記命令は実行されない、請求項10に記載の装置。
- 第1のスレッドのデータを格納する複数のレジスタを有する第1のレジスタファイルと、
第2のスレッドのデータを格納する複数のレジスタを有する第2のレジスタファイルと、
前記第1のレジスタファイルおよび前記第2のレジスタファイルに接続され、前記第1のスレッドおよび前記第2のスレッドの命令を実行する実行ユニットと、
前記実行ユニットに接続された命令発行器と、
前記実行ユニットに接続されたダイナミックランダムアクセスメモリ(DRAM)と、
を備え、
前記実行ユニットは、前記第1のレジスタファイルにおけるソースオペランドの存在を示す、前記第2のスレッドの前記命令の位置インジケータに基づいて、前記第1のレジスタファイルにアクセスし、前記第2のスレッドの命令を実行するための前記ソースオペランドを取得し、
前記命令発行器は、前記ソースオペランドに関連するレジスタに付随する同期インジケータがアクティブになるまで、前記第2のスレッドの前記命令の割り当てを保留し、前記第1のスレッドのプロデューサ命令が実行された後、前記レジスタに付随する前記同期インジケータを書き込み、
前記プロデューサ命令は、デスティネーションオペランドがリモートスレッドにアクセスされたことを示す、前記プロデューサ命令の前記デスティネーションオペランド用の位置インジケータを含む、
システム。 - 前記命令発行器は、前記第1のスレッドの前記プロデューサ命令が実行された後、前記レジスタに付随するレディインジケータをさらに書き込む、請求項12に記載のシステム。
- 前記命令発行器は、前記同期インジケータ、および、前記レディインジケータを前記レジスタに対応するスコアボードのエントリに書き込む、請求項13に記載のシステム。
- 前記実行ユニットと、前記第1のレジスタファイルと、前記第2のレジスタファイルとを有する第1のコアをさらに備え、前記第1のコアは、前記第1のスレッドおよび前記第2のスレッドの命令を処理する、請求項12に記載のシステム。
- 第2の実行ユニット、および、第3のレジスタファイルを有する第2のコアをさらに備え、前記第2のコアは、第3のスレッドの命令を処理し、前記第1のレジスタファイルおよび前記第2のレジスタファイルの少なくとも1つにアクセスして前記第3のスレッドで用いられるソースオペランドを取得する、請求項15に記載のシステム。
- 前記第1のレジスタファイル、および、前記第2のレジスタファイルを含む統合レジスタファイルをさらに備える、請求項12に記載のシステム。
- 第2のスレッドの命令が、第1のスレッドを示す第1のレジスタソースオペランドの位置インジケータを含む場合、
前記第1のスレッドのレジスタファイルにアクセスして、前記第2のスレッドの前記命令において識別される前記第1のレジスタソースオペランドを、コアにおける前記命令の実行のために取得する段階をコンピュータに実行させ、
前記第2のスレッドの命令は、レジスタデスティネーションオペランドが前記第1のスレッドによってアクセスされるべきことを示す前記レジスタデスティネーションオペランドの位置インジケータを含む、
プログラム。 - 前記第1のスレッドの前記命令が、前記第2のスレッドを示す第2のレジスタソースオペランドの位置インジケータを含む場合、
前記第2のスレッドのレジスタファイルにアクセスして、前記第1のスレッドの命令において識別される前記第2のレジスタソースオペランドを、前記第1のスレッドの命令を実行するために取得する段階をさらにコンピュータに実行させる、
請求項18に記載のプログラム。 - 前記第1のレジスタソースオペランドにより識別されたレジスタに関連するインジケータが、アクティブになるまで、前記第2のスレッドの前記命令を実行しないようにする段階をさらにコンピュータに実行させ、
前記第1のレジスタソースオペランドにより識別された前記レジスタに関連するインジケータは、前記第1のスレッドのプロデューサ演算の終了を示す
請求項18に記載のプログラム。 - 前記第2のスレッドの前記命令を実行した後、前記第2のスレッドの前記命令の前記レジスタデスティネーションオペランドにより識別されたレジスタに関連する同期インジケータをアクティブにする段階をさらにコンピュータに実行させる、請求項18に記載のプログラム。
- 前記第2のスレッドに前記第1のスレッドの状態を複写せずに、前記第1のスレッドから前記第2のスレッドを生成し、前記第2のスレッドの前記命令の実行中に、前記第1のスレッドの前記レジスタファイルに前記第2のスレッドをアクセスさせる段階をさらにコンピュータに実行させる、請求項18に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011210843A JP5283739B2 (ja) | 2011-09-27 | 2011-09-27 | プロセッサ内のマルチスレッド間通信 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011210843A JP5283739B2 (ja) | 2011-09-27 | 2011-09-27 | プロセッサ内のマルチスレッド間通信 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009524212A Division JP2010500679A (ja) | 2006-10-27 | 2006-10-27 | プロセッサ内のマルチスレッド間通信 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012038328A JP2012038328A (ja) | 2012-02-23 |
JP5283739B2 true JP5283739B2 (ja) | 2013-09-04 |
Family
ID=45850186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011210843A Expired - Fee Related JP5283739B2 (ja) | 2011-09-27 | 2011-09-27 | プロセッサ内のマルチスレッド間通信 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5283739B2 (ja) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2537526B2 (ja) * | 1987-12-02 | 1996-09-25 | 富士通株式会社 | マルチプロセッサシステム |
JP2834298B2 (ja) * | 1990-09-19 | 1998-12-09 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
JPH06242948A (ja) * | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | パイプライン処理計算機 |
EP1012707B1 (en) * | 1997-08-06 | 2006-07-26 | Advanced Micro Devices, Inc. | A dependency table for reducing dependency checking hardware |
US6317820B1 (en) * | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
US6292888B1 (en) * | 1999-01-27 | 2001-09-18 | Clearwater Networks, Inc. | Register transfer unit for electronic processor |
JP3727887B2 (ja) * | 2002-02-19 | 2005-12-21 | 富士通株式会社 | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 |
US6904511B2 (en) * | 2002-10-11 | 2005-06-07 | Sandbridge Technologies, Inc. | Method and apparatus for register file port reduction in a multithreaded processor |
JP2004178427A (ja) * | 2002-11-28 | 2004-06-24 | Toshiba Microelectronics Corp | 中央処理装置 |
US20040268093A1 (en) * | 2003-06-26 | 2004-12-30 | Samra Nicholas G | Cross-thread register sharing technique |
JP2005284749A (ja) * | 2004-03-30 | 2005-10-13 | Kyushu Univ | 並列処理コンピュータ |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
-
2011
- 2011-09-27 JP JP2011210843A patent/JP5283739B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012038328A (ja) | 2012-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010500679A (ja) | プロセッサ内のマルチスレッド間通信 | |
CN108027769B (zh) | 使用寄存器访问指令发起指令块执行 | |
CN107810483B (zh) | 验证处理器中的跳转目标的装置、存储设备和方法 | |
EP3350686B1 (en) | Debug support for block-based processor | |
US7877585B1 (en) | Structured programming control flow in a SIMD architecture | |
CN108027770B (zh) | 用于数据流isa的密集读取编码 | |
EP3314398B1 (en) | Reuse of decoded instruction blocks in a block based architecture | |
US8312254B2 (en) | Indirect function call instructions in a synchronous parallel thread processor | |
US11681531B2 (en) | Generation and use of memory access instruction order encodings | |
US20170083320A1 (en) | Predicated read instructions | |
US20170083318A1 (en) | Configuring modes of processor operation | |
US20160378488A1 (en) | Access to target address | |
US10198263B2 (en) | Write nullification | |
US10445097B2 (en) | Multimodal targets in a block-based processor | |
CN108027733B (zh) | 在目标字段中存储无效 | |
WO2017048606A1 (en) | Out of order commit | |
US20170083331A1 (en) | Memory synchronization in block-based processors | |
US20170083330A1 (en) | Multi-nullification | |
WO2015017129A1 (en) | Multi-threaded gpu pipeline | |
US20180329708A1 (en) | Multi-nullification | |
CN108027735B (zh) | 用于操作处理器的装置、方法和计算机可读存储介质 | |
JP5283739B2 (ja) | プロセッサ内のマルチスレッド間通信 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130115 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130410 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130430 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130528 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |