(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-03-10
(54)【発明の名称】SIMT指令処理方法及び装置
(51)【国際特許分類】
G06F 9/38 20180101AFI20230303BHJP
G06F 9/30 20180101ALI20230303BHJP
G06F 9/345 20180101ALI20230303BHJP
G06F 9/355 20180101ALI20230303BHJP
【FI】
G06F9/38 370A
G06F9/30 310A
G06F9/345 A
G06F9/355 320
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022523849
(86)(22)【出願日】2021-06-18
(85)【翻訳文提出日】2022-04-21
(86)【国際出願番号】 CN2021100808
(87)【国際公開番号】W WO2022121273
(87)【国際公開日】2022-06-16
(31)【優先権主張番号】202011452846.0
(32)【優先日】2020-12-11
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】522162222
【氏名又は名称】上海陣量智能科技有限公司
(74)【代理人】
【識別番号】110002468
【氏名又は名称】弁理士法人後藤特許事務所
(72)【発明者】
【氏名】周 俊
(72)【発明者】
【氏名】王 文強
(72)【発明者】
【氏名】夏 暁旭
【テーマコード(参考)】
5B013
5B033
【Fターム(参考)】
5B013AA14
5B013DD01
5B033BA00
5B033DA01
5B033DB09
(57)【要約】
本発明の実施例は、シングルインストラクション・マルチスレッド(SIMT)指令処理方法及び装置を提供する。当該装置は、スカラー処理手段と、ベクトル処理手段とを備える。スカラー処理手段は、スカラータイプのSIMT指令に従ってスカラー演算を行い、ベクトル処理手段は、ベクトルタイプのSIMT指令に従ってベクトル演算を行う。本発明の実施例によると、処理効率を向上させることができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
シングルインストラクション・マルチスレッド(SIMT)指令処理装置であって、
スカラー処理手段と、ベクトル処理手段と、を備え、
前記スカラー処理手段は、スカラータイプのSIMT指令に従ってスカラー演算を行い、
前記ベクトル処理手段は、ベクトルタイプのSIMT指令に従ってベクトル演算を行うことを特徴とするSIMT指令処理装置。
【請求項2】
前記SIMT指令処理装置は、制御手段を更に備え、
前記制御手段は、前記スカラー処理手段と前記ベクトル処理手段とにそれぞれカップリングされ、
前記制御手段は、前記SIMT指令のタイプを特定し、前記SIMT指令の前記タイプに基づいて、前記スカラー処理手段又は前記ベクトル処理手段へ前記SIMT指令を送信し、前記タイプは、スカラー又はベクトルを含むことを特徴とする請求項1に記載のSIMT指令処理装置。
【請求項3】
前記制御手段は、前記SIMT指令に付加される指示情報に基づいて、前記SIMT指令の前記タイプを特定し、前記指示情報は、宛先アドレス、指示ビット、指示フィールド又は指示子を含むことを特徴とする請求項2に記載のSIMT指令処理装置。
【請求項4】
前記SIMT指令処理装置は、スカラースケジューリング手段と、ベクトルスケジューリング手段とを更に備え、
前記スカラースケジューリング手段は、前記スカラー処理手段にカップリングされ、スカラータイプのSIMT指令を前記スカラー処理手段へスケジューリングし、
前記ベクトルスケジューリング手段は、前記ベクトル処理手段にカップリングされ、ベクトルタイプのSIMT指令を前記ベクトル処理手段へスケジューリングすることを特徴とする請求項1~3の何れか一項に記載のSIMT指令処理装置。
【請求項5】
複数のスレッドが同一のタスクを並列実行する場合に、前記複数のスレッドは、同じベースアドレスに対応し且つ異なるオフセットアドレスに対応し、
前記スカラー処理手段は、前記ベースアドレスに対応するデータに対してスカラー演算を行い、第1演算結果を取得し、
前記ベクトル処理手段は、前記オフセットアドレスに対応するデータに対してベクトル演算を行い、第2演算結果を取得することを特徴とする請求項1~4の何れか一項に記載のSIMT指令処理装置。
【請求項6】
前記SIMT指令処理装置は、スカラーデータを記憶するためのスカラーレジスタ群と、ベクトルデータを記憶するためのベクトルレジスタ群とを更に備え、
前記スカラーレジスタ群は、前記スカラー処理手段と前記ベクトル処理手段とにそれぞれカップリングされ、
前記ベクトルレジスタ群は、前記ベクトル処理手段にカップリングされていることを特徴とする請求項1~5の何れか一項に記載のSIMT指令処理装置。
【請求項7】
前記SIMT指令処理装置は、crossbarモジュールを更に備え、前記crossbarモジュールは、複数のcrossbarを備え、
前記スカラー処理手段は、前記crossbarモジュールを介して前記スカラーレジスタ群に接続され、
前記ベクトル処理手段は、前記crossbarモジュールを介して前記スカラーレジスタ群と前記ベクトルレジスタ群とにそれぞれ接続されていることを特徴とする請求項6に記載のSIMT指令処理装置。
【請求項8】
前記スカラー処理手段は、第1SIMT指令を取得し、前記第1SIMT指令に付加されるベースアドレスに対応するデータを基に演算を行って第1演算結果を取得し、前記第1演算結果を前記スカラーレジスタ群に記憶し、
前記ベクトル処理手段は、
第2SIMT指令を取得し、前記第2SIMT指令に付加されるオフセットアドレスに対応するデータを基に演算を行って第2演算結果を取得し、前記第2演算結果を前記ベクトルレジスタ群に記憶し、且つ、
前記スカラーレジスタ群に記憶される前記第1演算結果と前記ベクトルレジスタ群に記憶される前記第2演算結果とに対して演算を行い、第3演算結果を取得することを特徴とする請求項6又は7に記載のSIMT指令処理装置。
【請求項9】
シングルインストラクション・マルチスレッド(SIMT)指令処理方法であって、
前記SIMT指令処理方法は、SIMT指令処理装置に用いられ、前記SIMT指令処理装置は、スカラー処理手段と、ベクトル処理手段とを備え、
前記SIMT指令処理方法は、
前記スカラー処理手段を介してスカラータイプのSIMT指令に従ってスカラー演算を行うステップと、
前記ベクトル処理手段を介してベクトルタイプのSIMT指令に従ってベクトル演算を行うステップと、を含むことを特徴とするSIMT指令処理方法。
【請求項10】
前記SIMT指令処理装置は、制御手段を更に備え、
前記SIMT指令処理方法は、前記制御手段を介して前記SIMT指令のタイプを特定し、前記SIMT指令の前記タイプに基づいて、前記スカラー処理手段又は前記ベクトル処理手段へ前記SIMT指令を送信するステップを更に含み、前記タイプは、スカラー又はベクトルを含むことを特徴とする請求項9に記載のSIMT指令処理方法。
【請求項11】
前記SIMT指令処理方法は、前記制御手段を介して前記SIMT指令に付加される指示情報に基づいて前記SIMT指令の前記タイプを特定するステップを更に含み、前記指示情報は、宛先アドレス、指示ビット、指示フィールド又は指示子を含むことを特徴とする請求項10に記載のSIMT指令処理方法。
【請求項12】
前記SIMT指令処理装置は、スカラースケジューリング手段と、ベクトルスケジューリング手段とを更に備え、
前記SIMT指令処理方法は、
前記スカラースケジューリング手段を介してスカラータイプのSIMT指令を前記スカラー処理手段へスケジューリングするステップと、
前記ベクトルスケジューリング手段を介してベクトルタイプのSIMT指令を前記ベクトル処理手段へスケジューリングするステップと、を更に含むことを特徴とする請求項9~11の何れか一項に記載のSIMT指令処理方法。
【請求項13】
前記SIMT指令処理装置は、スカラーレジスタ群と、ベクトルレジスタ群とを更に備え、
前記SIMT指令処理方法は、
前記スカラーレジスタ群によってスカラーデータを記憶するステップと、
前記ベクトルレジスタ群によってベクトルデータを記憶するステップと、を更に含むことを特徴とする請求項9~12の何れか一項に記載のSIMT指令処理方法。
【請求項14】
前記スカラー処理手段を介して第1SIMT指令を取得し、前記第1SIMT指令に付加されるベースアドレスに対応するデータを基に演算を行って第1演算結果を取得し、前記第1演算結果を前記スカラーレジスタ群に記憶するステップと、
前記ベクトル処理手段を介して第2SIMT指令を取得し、前記第2SIMT指令に付加されるオフセットアドレスに対応するデータを基に演算を行って第2演算結果を取得し、前記第2演算結果を前記ベクトルレジスタ群に記憶するステップと、
前記ベクトル処理手段を介して、前記スカラーレジスタ群に記憶される前記第1演算結果と前記ベクトルレジスタ群に記憶される前記第2演算結果とに対して演算を行い、第3演算結果を取得するステップと、を更に含むことを特徴とする請求項13に記載のSIMT指令処理方法。
【請求項15】
請求項1~8の何れか一項に記載のシングルインストラクション・マルチスレッド(SIMT)指令処理装置が統合されたシステムオンチップ。
【請求項16】
請求項1~8の何れか一項に記載のシングルインストラクション・マルチスレッド(SIMT)指令処理装置を備える電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ技術分野に関し、具体的にシングルインストラクション・マルチスレッド(single instruction multiple threads、SIMT)指令処理方法及び装置に関する。
【背景技術】
【0002】
並列演算において、SIMTアーキテクチャは、同期マルチスレッディング(simultaneous multithreading、SMT)アーキテクチャよりも大きな柔軟性及び高い効率を有し、大量のスレッド並列運転によって一層高いスループットに達することができるため、高性能プロセッサに広く使用されている。
【0003】
並列演算では、例えばベースアドレス等の単一スレッドのみに対して操作を行うスカラー演算が大量に存在し、如何にして指令の処理効率を向上させるかは、解決すべき問題となっている。
【発明の概要】
【0004】
本発明の実施例は、処理効率を向上させるためのSIMT指令処理方法及び装置を提供する。
【0005】
第1態様は、SIMT指令処理装置を提供する。当該SIMT指令処理装置は、スカラー処理手段と、ベクトル処理手段とを備える。
【0006】
前記スカラー処理手段は、スカラータイプのSIMT指令に従ってスカラー演算を行う。
【0007】
前記ベクトル処理手段は、ベクトルタイプのSIMT指令に従ってベクトル演算を行う。
【0008】
本発明の実施例に係るSIMT指令処理装置では、スカラー処理手段がスカラータイプのSIMT指令に対してスカラー演算を行うことができ、ベクトル処理手段がベクトルタイプのSIMT指令に対してベクトル演算を行うことができ、ベクトル演算とスカラー演算とを別々で異なる処理手段に処理させ、スカラー演算がベクトル演算へ影響を与えないため、ベクトル演算の処理効率を向上させることができる。また、ベクトル演算とスカラー演算とが互いに影響せず、同時に行われることができるため、指令の全体処理効率を向上させることができる。
【0009】
1種の可能な実施形態として、前記SIMT指令処理装置は、スカラーデータを記憶するためのスカラーレジスタ群と、ベクトルデータを記憶するためのベクトルレジスタ群とを更に備える。
【0010】
前記スカラーレジスタ群は、前記スカラー処理手段と前記ベクトル処理手段とにそれぞれカップリングされ、前記ベクトルレジスタ群は、前記ベクトル処理手段にカップリングされている。
【0011】
本発明の実施例に係るSIMT指令処理装置は、スカラーレジスタ群と、ベクトルレジスタ群とを備え、ベクトルレジスタ群におけるレジスタに記憶される情報は、対応するスレッドのみによってアクセスされ得る一方、スカラーレジスタ群に記憶される情報は、複数のスレッドに共有の情報であり、複数のスレッドによってアクセスされ得る。スカラーレジスタ群における1つのレジスタが複数のスレッドに対応可能であるため、レジスタの数を減少することができる。また、スカラーレジスタに記憶される情報が複数のスレッドによって共有され得るため、同一情報が繰り返して記憶されることは、回避可能である。したがって、レジスタに記憶される情報量を減少可能であり、記憶リソースを節約することができる。
【0012】
1種の可能な実施形態として、前記SIMT指令処理装置は、クロスバー(crossbar)モジュールを更に備え、前記crossbarモジュールは、複数のcrossbarを備える。
【0013】
前記スカラー処理手段は、前記crossbarモジュールを介して前記スカラーレジスタ群に接続されている。
【0014】
前記ベクトル処理手段は、前記crossbarモジュールを介して前記スカラーレジスタ群と前記ベクトルレジスタ群とにそれぞれ接続されている。
【0015】
本発明の実施例に係るSIMT指令処理装置では、スカラーレジスタ群とスカラー処理手段の間がcrossbarモジュールを介して接続されることにより、スカラー処理手段がスカラーレジスタ群における全てのレジスタへアクセス可能であることは、保証できる。ベクトル処理手段及びスカラーレジスタ群とベクトルレジスタ群との間がそれぞれcrossbarモジュールを介して接続されるため、ベクトル処理手段がスカラーレジスタ群及びベクトルレジスタ群における全てのレジスタへアクセス可能であることは、保証できる。
【0016】
1種の可能な実施形態として、前記SIMT指令処理装置は、制御手段を更に備える。
【0017】
前記制御手段は、前記スカラー処理手段と前記ベクトル処理手段とにそれぞれカップリングされている。
【0018】
前記制御手段は、前記SIMT指令のタイプを特定し、前記SIMT指令の前記タイプに基づいて、前記スカラー処理手段又は前記ベクトル処理手段へ前記SIMT指令を送信する。前記タイプは、スカラー又はベクトルを含む。
【0019】
本発明の実施例に係るSIMT指令処理装置では、制御手段が異なるタイプのSIMT指令を異なる処理手段へ配信して処理させることにより、ベクトル演算とスカラー演算とを別々で異なる処理手段に処理させ得るため、スカラー演算がベクトル演算へ影響を与えない。したがって、ベクトル演算の処理効率が向上する。
【0020】
1種の可能な実施形態として、前記制御手段は、前記SIMT指令に付加される指示情報に基づいて、前記SIMT指令の前記タイプを特定する。前記指示情報は、宛先アドレス、指示ビット、指示フィールド又は指示子を含む。
【0021】
本発明の実施例に係るSIMT指令処理装置において、制御手段は、SIMT指令に付加される指示情報に基づいて、SIMT指令の指令タイプを特定してもよい。これにより、前記指示情報が宛先アドレスであるときに、当該宛先アドレスは、演算結果記憶アドレスを指す作用を有するとともに、SIMT指令のタイプを特定する作用も有するため、SIMT指令にSIMT指令のタイプを示すための情報が別途付加される必要がなく、SIMT指令に付加される情報を減少可能であり、指令の伝送効率を向上させて伝送リソースを節約することができる。
【0022】
1種の可能な実施形態として、前記SIMT指令処理装置は、スカラースケジューリング手段と、ベクトルスケジューリング手段とを更に備える。
【0023】
前記スカラースケジューリング手段は、前記スカラー処理手段にカップリングされ、前記ベクトルスケジューリング手段は、前記ベクトル処理手段にカップリングされている。
【0024】
前記スカラースケジューリング手段は、スカラータイプのSIMT指令を前記スカラー処理手段へスケジューリングする。
【0025】
前記ベクトルスケジューリング手段は、ベクトルタイプのSIMT指令を前記ベクトル処理手段へスケジューリングする。
【0026】
本発明の実施例に係るSIMT指令処理装置において、スケジューリング手段は、SIMT指令が正しく実行できるように、処理手段の状況に応じて、対応するSIMT指令をスケジューリングしてもよい。
【0027】
1種の可能な実施形態として、複数のスレッドが同一のタスクを並列実行する場合に、前記複数のスレッドは、同じベースアドレスに対応し且つ異なるオフセットアドレスに対応し、前記スカラー処理手段は、前記ベースアドレスに対応するデータに対してスカラー演算を行い、第1演算結果を取得し、前記ベクトル処理手段は、前記オフセットアドレスに対応するデータに対してベクトル演算を行い、第2演算結果を取得する。
【0028】
1種の可能な実施形態として、前記スカラー処理手段は、第1SIMT指令を取得し、前記第1SIMT指令に付加されるベースアドレスに対応するデータを基に演算を行って第1演算結果を取得し、前記第1演算結果を前記スカラーレジスタ群に記憶する。
【0029】
前記ベクトル処理手段は、第2SIMT指令を取得し、前記第2SIMT指令に付加されるオフセットアドレスに対応するデータを基に演算を行って第2演算結果を取得し、前記第2演算結果を前記ベクトルレジスタ群に記憶し、且つ、前記スカラーレジスタ群に記憶される前記第1演算結果と前記ベクトルレジスタ群に記憶される前記第2演算結果とに対して演算を行い、第3演算結果を取得する。
【0030】
第2態様は、SIMT指令処理方法を提供する。当該SIMT指令処理方法は、SIMT指令処理装置に用いられ、前記SIMT指令処理装置は、スカラー処理手段と、ベクトル処理手段とを備える。当該SIMT指令処理方法は、
【0031】
前記スカラー処理手段を介してスカラータイプのSIMT指令に従ってスカラー演算を行うステップと、
【0032】
前記ベクトル処理手段を介してベクトルタイプのSIMT指令に従ってベクトル演算を行うステップと、を含む。
【0033】
1種の可能な実施形態として、前記SIMT指令処理装置は、スカラーレジスタ群と、ベクトルレジスタ群とを更に備え、前記SIMT指令処理方法は、
【0034】
前記スカラーレジスタ群によってスカラーデータを記憶するステップと、
【0035】
前記ベクトルレジスタ群によってベクトルデータを記憶するステップと、を更に含む。
【0036】
1種の可能な実施形態として、前記SIMT指令処理装置は、制御手段を更に備える。前記SIMT指令処理方法は、
【0037】
前記制御手段を介して前記SIMT指令のタイプを特定し、前記SIMT指令の前記タイプに基づいて、前記スカラー処理手段又は前記ベクトル処理手段へ前記SIMT指令を送信するステップを更に含み、前記タイプは、スカラー又はベクトルを含む。
【0038】
1種の可能な実施形態として、前記SIMT指令処理方法は、
【0039】
前記制御手段を介して前記SIMT指令に付加される指示情報に基づいて、前記SIMT指令の前記タイプを特定するステップを更に含む。前記指示情報は、宛先アドレス、指示ビット、指示フィールド又は指示子を含む。
【0040】
1種の可能な実施形態として、前記SIMT指令処理装置は、スカラースケジューリング手段と、ベクトルスケジューリング手段とを更に備え、前記SIMT指令処理方法は、
【0041】
前記スカラースケジューリング手段を介してスカラータイプのSIMT指令を前記スカラー処理手段へスケジューリングするステップと、
【0042】
前記ベクトルスケジューリング手段を介してベクトルタイプのSIMT指令を前記ベクトル処理手段へスケジューリングするステップと、を更に含む。
【0043】
1種の可能な実施形態として、前記SIMT指令処理方法は、
【0044】
前記スカラー処理手段を介して第1SIMT指令を取得し、前記第1SIMT指令に付加されるベースアドレスに対応するデータを基に演算を行って第1演算結果を取得し、前記第1演算結果を前記スカラーレジスタ群に記憶するステップと、
【0045】
前記ベクトル処理手段を介して第2SIMT指令を取得し、前記第2SIMT指令に付加されるオフセットアドレスに対応するデータを基に演算を行って第2演算結果を取得し、前記第2演算結果を前記ベクトルレジスタ群に記憶するステップと、前記ベクトル処理手段を介して前記スカラーレジスタ群に記憶される前記第1演算結果と前記ベクトルレジスタ群に記憶される前記第2演算結果とに対して演算を行い、第3演算結果を取得するステップと、を更に含む。
【0046】
第3態様は、システムオンチップを提供する。当該システムオンチップには、上記第1態様又は第1態様の何れか一種の可能な実現方式に係る装置が統合されている。当該システムオンチップは、SIMT指令処理装置によって構成されてもよく、SIMT指令処理装置と他のディスクリートデバイスとを備えてもよい。
【0047】
第4態様は、電子機器を提供する。当該電子機器は、上記第1態様又は第1態様の何れか一種の可能な実現方式に係るSIMT指令処理装置と、前記SIMT指令処理装置にカップリングされるディスクリートデバイスとを備える。
【図面の簡単な説明】
【0048】
【
図1】本発明の実施例に係るSIMT指令処理装置の構造模式図である。
【
図2】本発明の実施例に係る別のSIMT指令処理装置の構造模式図である。
【
図3】本発明の実施例に係る更に別のSIMT指令処理装置の構造模式図である。
【
図4】本発明の実施例に係るSIMT指令処理方法の模式的なフローチャートである。
【発明を実施するための形態】
【0049】
本発明の実施例は、処理効率を向上させるSIMT指令処理方法及び装置を提供する。以下では、それぞれ詳細に説明する。
【0050】
本発明の実施例に係るSIMT指令処理方法及び装置をより良好に理解するために、以下では、まず、本発明の実施例に適用する応用シーンを記述する。並列演算には、例えばベースアドレス類等の単一スレッドのみに対して操作を行うスカラー演算が大量存在する。SIMD(Single Instruction Multiple Data)アーキテクチャでは、よくスカラーコプロセッサを使用してスカラー演算を処理することで指令の処理効率を向上させる。しかし、SIMTアーキテクチャでは、指令スケジューリングが困難である。上記問題を解決するために、1つの可能な実現方式は、SIMTアーキテクチャにおいて、SIMT指令がスカラー指令であろうとベクトル指令であろうと、同一の指令ポートを介して下位階層へ送信し、ベクトルプロセッサを用いて演算を行う。例えば、SIMT指令がスカラータイプである場合に、ベクトルプロセッサにおける一部の処理手段を用いて演算を行ってもよい。しかし、ベクトルプロセッサにおける一部の処理手段がスカラータイプの指令を処理するために用いられたため、ベクトルプロセッサにおけるベクトルタイプの指令を処理する処理手段が減少し、ベクトル指令の処理効率が低減する。
【0051】
図1を参照すると、
図1は、本発明の実施例に係るSIMT指令処理装置の構造模式図である。
図1に示すように、当該SIMT指令処理装置は、スカラー処理手段11と、ベクトル処理手段12とを備えてもよい。
【0052】
スカラー処理手段11は、スカラータイプのSIMT指令に従ってスカラー演算を行う。
【0053】
ベクトル処理手段12は、ベクトルタイプのSIMT指令に従ってベクトル演算を行う。
【0054】
SIMT指令のタイプがスカラーであり、即ち、SIMT指令がスカラー指令である場合に、スカラー処理手段11は、SIMT指令に対して演算、即ち、スカラー演算を行ってもよい。SIMT指令のタイプがベクトルであり、即ち、SIMT指令がベクトル指令である場合に、ベクトル処理手段12は、SIMT指令に対して演算、即ち、ベクトル演算を行ってもよい。スカラーは、向きのない量、即ち、大きさのみ持って向きを持たない量である。スカラー演算は、乗算、加算、減算及び除算等のうちの1種又は複数種であってもよい。ベクトルとは、大きさ及び向きを持つ量を指す。ベクトル演算は、乗算、加算、減算、除算、ドット積、クロス積等のうちの1種又は複数種を含んでもよい。
【0055】
スカラー処理手段11は、1つ又は複数の第1処理手段を備えてもよい。スカラー処理手段11が複数の第1処理手段を含むとき、SIMT指令がスカラー指令である場合に、各周期において、各第1処理手段が1つのSIMT指令を処理可能であり、1つのスカラー指令が1つのスレッド群に対応するため、複数のスカラー指令の並列運転、即ち、複数のスレッドのスカラー演算に対する並列運転を実現することができる。ベクトル処理手段12は、1つ又は複数の第2処理手段を備えてもよい。ベクトル処理手段12が複数の第2処理手段を含むとき、SIMT指令がベクトル指令である場合に、各周期において、各第2処理手段が1つのSIMT指令を処理可能であるため、複数のベクトル指令の並列運転を実現することができる。また、1つのベクトル指令に対応するスレッド数と第2処理手段によって処理されたスレッド数とが同じであるため、1つの第2処理手段においてマルチスレッドの並行実行を実現することができる。スカラー処理手段11に含まれる第1処理手段の数とベクトル処理手段12に含まれる第2処理手段の数とは、同じであってもよく、異なってもよい。スカラー処理手段11に含まれる第1処理手段は、算術論理演算ユニット(arithmetic and logic unit、ALU)であってもよく、他の手段であってもよく、ここで限定されない。ベクトル処理手段12に含まれる第2処理手段は、ALU、特殊関数ユニット(special function unit、SFU)、ロードストアユニット(load store unit、LSU)又は他の手段であってもよく、ここで限定されない。
【0056】
図2を参照すると、
図2は、本発明の実施例に係る別のSIMT指令処理装置の構造模式図である。
図2に示すSIMT指令処理装置は、
図1に示すSIMT指令処理装置を最適化したものである。
【0057】
一実施例において、当該SIMT指令処理装置は、スカラーデータを記憶するためのスカラーレジスタ群13と、ベクトルデータを記憶するためのベクトルレジスタ群14とを更に備えてもよい。
【0058】
スカラーレジスタ群13は、スカラー処理手段11とベクトル処理手段12とにそれぞれカップリングされ、ベクトルレジスタ群14は、ベクトル処理手段12にカップリングされている。
【0059】
スカラーレジスタ群13とベクトルレジスタ群14とは、2つの独立するレジスタ群であってもよい。スカラーレジスタ群13とベクトルレジスタ群14は、何れも複数群のレジスタを含んでもよい。SIMT指令には、ソースアドレス及び操作タイプが付加されてもよい。スカラー処理手段11は、SIMT指令を受信した後、スカラーレジスタ群13におけるソースアドレスに対応するレジスタからオペランドを取得してから、操作タイプに基づいて、取得されたオペランドに対してスカラー演算を行ってもよい。スカラー処理手段11で受信されたSIMT指令に付加されるソースアドレスは、スカラーレジスタ群13における1つのレジスタに対応する。理解できるように、各ソースアドレスは、スカラーレジスタ群13内の1つのレジスタに対応し、スカラーレジスタ群13中のレジスタは、対応するスレッドによってアクセスされてもよい。スカラーレジスタ群13中のレジスタに対応するスレッドは、当該レジスタの所属するwarp(スレッド数)に対応するスレッドであってもよい。ソースアドレスは、1つのアドレスを含んでもよく、複数のアドレスを含んでもよい。即ち、スカラー指令のオペランドは、1つであってもよく、複数であってもよく、ここで限定されない。
【0060】
ベクトル処理手段12がSIMT指令を受信した後、当該SIMT指令のソースアドレスがスカラーレジスタ群13を指す場合に、まず、スカラーレジスタ群13中のソースアドレスに対応するレジスタからオペランドを取得し、次に、操作タイプに応じて、取得されたオペランドに対してベクトル演算を行ってもよい。当該SIMT指令のソースアドレスがベクトルレジスタ群14を指す場合に、まず、ベクトルレジスタ群14中のソースアドレスに対応するレジスタからオペランドを取得し、次に、操作タイプに応じて、取得されたオペランドに対してベクトル演算を行ってもよい。当該SIMT指令のソースアドレスがスカラーレジスタ群13とベクトルレジスタ群14との両方を指す場合に、スカラーレジスタ群13中のソースアドレスに対応するレジスタからオペランドを取得し、且つベクトルレジスタ群14中のソースアドレスに対応するレジスタからオペランドを取得し、その後、操作タイプに応じて、取得されたオペランドに対してベクトル演算を行ってもよい。ベクトル処理手段12によって受信された1つのSIMT指令のソースアドレスがベクトルレジスタ群14を指すときには、1種の場合において、1つのSIMT指令に付加されるソースアドレスが1つのベクトルレジスタ群14における複数のレジスタに対応する。理解できるように、各アドレスは、ベクトルレジスタ群14内の複数のレジスタに対応可能であり、ベクトルレジスタ群14における各レジスタは、対応するスレッドのみによってアクセスされ得る。ベクトルレジスタ群14におけるレジスタの数と、1群のベクトル処理手段に含まれる第2処理手段の数とは、同じである。別の場合において、SIMT指令のソースアドレスがスカラーレジスタ群13を指すときに、1つのSIMT指令には、複数のソースアドレスが付加されてもよく、各ソースアドレスは、スカラーレジスタ群13における1つのレジスタに対応し、複数のソースアドレスは、スカラーレジスタ群13における複数のレジスタに対応する。
【0061】
一実施例において、当該SIMT指令処理装置は、crossbarモジュール15を更に備えてもよく、crossbarモジュール15は、複数のcrossbarを備えてもよい。
【0062】
スカラー処理手段11は、crossbarモジュール15を介してスカラーレジスタ群13に接続されている。
【0063】
ベクトル処理手段12は、crossbarモジュール15を介してスカラーレジスタ群13とベクトルレジスタ群14とにそれぞれ接続されている。
【0064】
crossbarモジュール15は、スカラー処理手段11がスカラーレジスタ群13における全てのレジスタをアクセス可能であることを保証することができ、且つベクトル処理手段12がスカラーレジスタ群13及びベクトルレジスタ群14における全てのレジスタをアクセス可能であることを保証することができる。crossbarモジュール15は、複数のcrossbarを備えてもよい。例えば、crossbarモジュール15は、2つのcrossbarを備えてもよく、1つのcrossbarは、スカラー処理手段11とスカラーレジスタ群13とにそれぞれカップリングされ、もう1つのcrossbarは、ベクトル処理手段12とスカラーレジスタ群13とベクトルレジスタ群14とにそれぞれカップリングされてもよい。更に例えば、crossbarモジュール15は、3つのcrossbarを備えてもよく、第1crossbarは、スカラー処理手段11とスカラーレジスタ群13とにそれぞれカップリングされてもよく、第2crossbarは、ベクトル処理手段12とスカラーレジスタ群13とにそれぞれカップリングされてもよく、第3crossbarは、ベクトル処理手段12とベクトルレジスタ群14とにそれぞれカップリングされてもよい。crossbarモジュール15が3つのcrossbarを含むときに、スカラー処理手段11が第1crossbarを介してスカラーレジスタ群13中のソースアドレスに対応するレジスタからオペランドを取得することは、スカラー処理手段11が第1crossbarへソースアドレスが付加される読取指令を送信し、このcrossbarが当該読取指令をスカラーレジスタ群13へ転送し、スカラーレジスタ群13がソースアドレスに対応するレジスタにおけるオペランドを当該第1crossbarへ送信し、当該第1crossbarがオペランドをスカラー処理手段11へ転送するというように理解可能である。他も類似するため、ここで繰り返し説明しない。
【0065】
一実施例において、当該SIMT指令処理装置は、制御手段16を更に備えてもよい。
【0066】
制御手段16は、スカラー処理手段11とベクトル処理手段12とにそれぞれカップリングされている。
【0067】
制御手段16は、SIMT指令のタイプを特定し、SIMT指令のタイプに基づいて、スカラー処理手段11又はベクトル処理手段12へSIMT指令を送信する。当該タイプは、スカラー又はベクトルを含む。
【0068】
一実施例において、制御手段16は、SIMT指令に付加される宛先アドレスに基づいて、SIMT指令のタイプを特定する。
【0069】
制御手段16は、SIMT指令を受信した後、SIMT指令のタイプを先に特定してもよい。当該タイプがスカラーであり、即ちSIMT指令がスカラー指令である場合に、制御手段16は、SIMT指令をスカラー処理手段11へ送信してもよい。当該タイプがベクトルであり、即ちSIMT指令がベクトル指令である場合に、制御手段16は、SIMT指令をベクトル処理手段12へ送信してもよい。
【0070】
SIMT指令には、指示情報が付加されてもよい。当該指示情報は、SIMT指令のタイプを示してもよい。制御手段16は、SIMT指令を受信した後、指示情報に基づいてSIMT指令のタイプを特定してもよい。
【0071】
指示情報は、宛先アドレスであってもよい。制御手段16は、SIMT指令を受信した後、まず、宛先アドレスがスカラーレジスタ群13におけるレジスタのアドレスであるかそれともベクトルレジスタ群14におけるレジスタのアドレスであるか、即ち、宛先アドレスがスカラーレジスタ群13を指すかそれともベクトルレジスタ群14を指すかを認識してもよい。宛先アドレスがスカラーレジスタ群13におけるレジスタのアドレスであり、即ち宛先アドレスがスカラーレジスタ群13を指すときに、制御手段16は、SIMT指令をスカラー処理手段11へ送信してもよい。宛先アドレスがベクトルレジスタ群14におけるレジスタのアドレスであり、即ち宛先アドレスがベクトルレジスタ群14を指すときに、制御手段16は、SIMT指令をベクトル処理手段12へ割り当ててもよい。
【0072】
指示情報は、1つの指示ビット又はフラグビットであってもよい。当該指示ビット又はフラグビットは、第1値を有する場合に、SIMT指令がベクトル指令であることを示してもよく、当該指示ビット又はフラグビットは、第2値を有する場合に、SIMT指令がスカラー指令であることを示してもよい。
【0073】
指示情報は、1つの指示フィールドであってもよい。当該指示フィールドは、第1状態である場合に、SIMT指令がベクトル指令であることを示してもよい。当該指示フィールドは、第2状態である場合に、SIMT指令がスカラー指令であることを示してもよい。
【0074】
指示情報は、1つの指示子であってもよい。当該指示子は、第3状態である場合に、SIMT指令がベクトル指令であることを示してもよく、当該指示子は、第4状態である場合に、SIMT指令がスカラー指令であることを示してもよい。
【0075】
SIMT指令は、他の方式によってSIMT指令のタイプを示してもよい。例えば、SIMT指令は、指定のフラグフィールド又は識別子等を付加した場合に、SIMT指令がスカラー指令であってもよいことを示す。SIMT指令は、これらの情報を付加しなかった場合に、SIMT指令がベクトル指令であってもよいことを示す。逆も可能である。
【0076】
上記指示情報に対する解釈説明が単に例示であり、指示情報に対する限定を構成しないことは、理解されるべきである。
【0077】
また、SIMI指令に宛先アドレスが付加される場合に、スカラー処理手段11及びベクトル処理手段12は、演算が完了した後、演算結果を宛先アドレスに対応するレジスタに記憶してもよい。このように、後で宛先アドレスに基づいて直接呼び出してもよい。
【0078】
一実施例において、当該SIMT指令処理装置は、スカラースケジューリング手段17及びベクトルスケジューリング手段18を更に備えてもよい。
【0079】
スカラースケジューリング手段17は、スカラー処理手段11にカップリングされ、ベクトルスケジューリング手段18は、ベクトル処理手段12にカップリングされている。
【0080】
スカラースケジューリング手段17は、スカラータイプのSIMT指令をスカラー処理手段11へスケジューリングする。
【0081】
ベクトルスケジューリング手段18は、ベクトルタイプのSIMT指令をベクトル処理手段12へスケジューリングする。
【0082】
スカラー処理手段11又はベクトル処理手段12に空きの処理手段がない場合に、制御手段16は、SIMT指令をスカラー処理手段11又はベクトル処理手段12へ送信すると、スカラー処理手段11又はベクトル処理手段12は、処理できない。したがって、制御手段16は、スカラータイプのSIMT指令をスカラースケジューリング手段17へ送信することにより、スカラースケジューリング手段17がスカラー指令を統一的にスケジューリングすることができるようにし、且つ、ベクトルタイプのSIMT指令をベクトルスケジューリング手段18へ送信することにより、ベクトルスケジューリング手段18がベクトル指令を統一的にスケジューリングすることができるようにする。スケジューリング方式は、先入れ先出し原則であってもよく、優先度に応じてスケジューリングを行う原則、即ち、優先度が高いほど先に実行される原則であってもよく、リソース占有状況に応じてスケジューリングを行ってもよく、他の原則でスケジューリングを行ってもよく、ここで限定されない。
【0083】
一実施例において、複数のスレッドが同一のタスクを並列実行する場合に、当該複数のスレッドは、同じベースアドレスに対応し且つ異なるオフセットアドレスに対応し、スカラー処理手段11は、ベースアドレスのデータに対して演算を行って第1演算結果を取得し、ベクトル処理手段12は、オフセットアドレスのデータに対して演算を行って第2演算結果を取得する。
【0084】
スカラーレジスタ群13におけるレジスタには、複数のスレッドのベースアドレスに対応するデータが記憶されている。スカラー処理手段11は、複数のスレッドのベースアドレスに対応するデータに対して算出を行い、且つ、後続の呼び出しを容易にするために、取得された第1演算結果をスカラーレジスタ群13に記憶してもよい。ベクトルレジスタ群14中のレジスタには、複数のスレッドのオフセットアドレスに対応するデータが記憶されている。ベクトル処理手段12は、複数のスレッドのオフセットアドレスに対応するデータに対して算出を行い、且つ、後続の呼び出しを容易にするために、取得された第2演算結果をベクトルレジスタ群14に記憶してもよい。例えば、スカラー処理手段11は、スカラータイプのSIMT指令を取得した後、SIMT指令に従ってスカラー演算を行って第1演算結果を取得し、次に、第1演算結果をスカラーレジスタ群13に記憶してもよい。ベクトル処理手段12は、ベクトルタイプのSIMT指令を受信した後、SIMT指令に従ってベクトル演算を行って第2演算結果を取得し、次に、第2演算結果をベクトルレジスタ群14に記憶してもよい。ベクトル処理手段12は、ベクトルタイプのSIMT指令であって第1演算結果の記憶アドレスと第2演算結果の記憶アドレスとが付加されるSIMT指令を受信した後、第1演算結果の記憶アドレスから第1演算結果を取得し、第2演算結果の記憶アドレスから第2演算結果を取得し、第1演算結果と第2演算結果とに対してベクトル演算を行って第3演算結果を取得してもよい。第1演算結果がベースアドレスに対応するデータ演算結果であり、第2演算結果がオフセットアドレスに対応するデータ演算結果であるときに、第3演算結果は、ベースアドレス+オフセットアドレスに対応するデータ演算結果となる。
【0085】
一実施例において、スカラー処理手段11は、ベースアドレスが付加される第1SIMT指令を取得し、ベースアドレスに対応するデータを基に演算を行って第1演算結果を取得し、第1演算結果をスカラーレジスタ群13に記憶する。
【0086】
ベクトル処理手段12は、オフセットアドレスが付加される第2SIMT指令を取得し、オフセットアドレスに対応するデータを基に演算を行って第2演算結果を取得し、第2演算結果をベクトルレジスタ群14に記憶し、且つ、スカラーレジスタ群13に記憶される第1演算結果とベクトルレジスタ群14に記憶される第2演算結果とに対して演算を行い、第3演算結果をタスク処理結果として取得する。
【0087】
スカラー処理手段11は、スカラータイプのSIMT指令を取得した後、SIMT指令に従ってスカラー演算を行って第1演算結果を取得し、次に、第1演算結果をスカラーレジスタ群13に記憶してもよい。ベクトル処理手段12は、第1演算結果が付加される記憶アドレス及びオフセットアドレスのSIMT指令を受信すると、オフセットアドレスに対応するベクトルレジスタ群14におけるレジスタからデータを取得してベクトル演算を行って第2演算結果を取得してから、第1演算結果の記憶アドレスから第1演算結果を取得し、第1演算結果と第2演算結果とに対してベクトル演算を行って第3演算結果を取得してもよい。
【0088】
以下では、1つの実例を例としてSIMT指令処理装置の動作原理を説明する。
図3を参照すると、
図3は、本発明の実施例に係る更に別のSIMT指令処理装置の構造模式図である。
図3では、SIMT指令処理装置が最大で2048個のスレッドをサポート可能であると仮定し、32個のスレッドにつき1つのwarpというように組織すれば、合計64個のwarpがある。64個のwarpは、8個のbank(群)に分けられてもよい。スカラー処理手段が4つの第1処理手段を含み、ベクトル処理手段が4つの第2処理手段を含み、各第2処理手段が32スレッドをサポートすると仮定する。スカラーレジスタ群は、8つのbankを含んでもよく、各bankは、128個のスカラーレジスタを含んでもよい。ベクトルレジスタ群は、8つのbankを含んでもよく、各bankは、128個の32スレッドのベクトルレジスタを含んでもよい。1つのbank内の全てのレジスタは、このbank内のwarpによって共有されてもよく、1つのbank内のレジスタは、warpに応じて分けられてもよく、各warpに対応するレジスタは、このwarp内のスレッドにしか共有され得ない。
【0089】
各処理手段が少なくとも1つのオペランドを処理する必要があるため、スカラー処理手段とスカラーレジスタ群との間に1つの8x8のcrossbarがあってもよい。このように、スカラー処理手段がスカラーレジスタ群における全てのbankのスカラーレジスタへアクセス可能であることは、保証できる。ベクトル処理手段とベクトルレジスタ群との間に1つの8x8の32スレッドcrossbarがあってもよい。ベクトル処理手段とスカラーレジスタ群の間に1つの8x8のcrossbarがあってもよい。このように、ベクトル処理手段がスカラーレジスタ群とベクトルレジスタ群とにおける全てのbankのレジスタへアクセス可能であることは、保証できる。
【0090】
各クロック周期において、スカラー処理手段は、スカラースケジューリング手段からの4つのSIMT指令を受信することができ、ベクトル処理手段は、ベクトルスケジューリング手段からの4つのSIMT指令を受信することができる。同一時間において1つの処理手段しか1つのbankへアクセスできないため、複数の処理手段が同一時間において異なるbankへアクセスすることを保証するために、スカラースケジューリング手段とベクトルスケジューリング手段が前後2つのクロック周期においてスケジューリングするSIMT指令のパリティは、逆であってもよい。
【0091】
例を挙げて説明すると、時点0において、制御手段は、スカラー/ベクトルスケジューリング手段を介して各自のbank0、bank2、bank4及びbank6へアクセスするSIMT指令をスケジューリングしてもよく、第1/第2処理手段は、各自の偶数bankのオペランド0を読み取ってもよい。時点1において、制御手段は、スカラー/ベクトルスケジューリング手段を介して各自のbank1、bank3、bank5及びbank7へアクセスするSIMT指令をスケジューリングしてもよく、第1/第2処理手段は、各自の偶数bankのオペランド1及び各自の奇数bankのオペランド0を読み取ってもよい。時点2において、第1/第2処理手段は、各自の奇数bankのオペランド2を読み取ってもよい。したがって、スケジューリング上に隣接する時点のパリティインターリーブ、または同一時点内にスケジューリングされたbankが衝突しないことを保証すれば、crossbarが衝突しない場合の最大アクセス効率を保証することができる。例えば、上記時点1において、4つの第1/第2処理手段の8つのオペランド読取インターフェースは、各自のbank0-bank7へそれぞれアクセスした。
【0092】
これにより理解できるように、処理手段が連続2拍(即ち、2つの周期)において同一bank内から2つのオペランドを読み取ることができる。前後2拍の指令のwarpパリティが逆であり、即ちbankパリティが逆であるため、衝突が発生しない。これにより、同一の時点において最大で8つの処理手段読取インターフェースが8つのbankへアクセスすることは、保証できる。
【0093】
図4を参照すると、
図4は、本発明の実施例に係るSIMT指令処理方法の模式的なフローチャートである。当該SIMT指令処理方法は、
図1~
図3に示すSIMT指令処理装置に適用可能である。
図4に示すように、当該SIMT指令処理方法は、以下のステップを含んでもよい。
【0094】
401では、制御手段を介してSIMT指令のタイプを特定し、SIMT指令のタイプに基づいてスカラースケジューリング手段又はベクトルスケジューリング手段へSIMT指令を送信する。
【0095】
制御手段を介してSIMT指令に付加される宛先アドレスに基づいて、SIMT指令のタイプを特定する。
【0096】
402では、スカラースケジューリング手段を介してスカラータイプのSIMT指令をスカラー処理手段へスケジューリングし、ベクトルスケジューリング手段を介してベクトルタイプのSIMT指令をベクトル処理手段へスケジューリングする。
【0097】
403では、スカラー処理手段を介してスカラータイプのSIMT指令に従ってスカラー演算を行い、ベクトル処理手段を介してベクトルタイプのSIMT指令に従ってベクトル演算を行う。
【0098】
404では、スカラーレジスタ群によってスカラーデータを記憶し、ベクトルレジスタ群によってベクトルデータを記憶する。
【0099】
好ましくは、スカラー処理手段を介して第1SIMT指令を取得し、第1SIMT指令に付加されるベースアドレスに対応するデータを基に演算を行って第1演算結果を取得し、第1演算結果をスカラーレジスタ群に記憶し、ベクトル処理手段を介して第2SIMT指令を取得し、第2SIMT指令に付加されるオフセットアドレスに対応するデータを基に演算を行って第2演算結果を取得し、第2演算結果をベクトルレジスタ群に記憶し、且つベクトル処理手段を介してスカラーレジスタ群に記憶される第1演算結果とベクトルレジスタ群に記憶される第2演算結果とに対して演算を行い、第3演算結果をタスク処理結果として取得する。
【0100】
説明すべきことは、本発明の実施例に記述されたSIMT指令処理方法における具体的なフローの関連機能が、上記
図1~
図3における前記SIMT指令処理装置の実施例における関連記述を参照すればよく、ここで繰り返し説明しない。
【0101】
理解できるように、SIMT指令処理方法は、ステップ401-ステップ404のうちの全部又は一部のステップの組み合わせであってもよく、ここで限定されない。
【0102】
幾つかの実施例は、システムオンチップを提供する。当該システムオンチップは、上記実施例に係るSIMT指令処理装置を含んでもよい。当該システムオンチップは、SIMT指令処理装置によって構成されてもよく、SIMT指令処理装置及び他のディスクリートデバイスを含んでもよい。
【0103】
幾つかの実施例は、電子機器を提供する。当該電子機器は、上記実施例に係るSIMT指令処理装置と、SIMT指令処理装置にカップリングされるディスクリートデバイスとを備える。
【0104】
以上は、本発明の実施例について詳細に紹介した。本文では、具体例を用いて本発明の原理及び実施形態を説明した。以上の実施例の説明は、本発明の方法及びその要旨を理解するのを助けるためのものに過ぎない。それとともに、当業者にとって、本発明の思想に基づいて、具体的な実施形態及び応用範囲について変更可能である。このように、本明細書の内容は、本発明に対する制限として理解されるべきではない。
【0105】
本願は、2020年12月11日に中国専利局へ提出された、出願番号が202011452846.0である中国特許出願の優先権を要求し、当該中国特許出願の全ての内容が引用によって本願に組み込まれる。
【国際調査報告】