(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-08-10
(54)【発明の名称】GPUにおける明示的な個別マスクレジスタのマスク操作方法
(51)【国際特許分類】
G06F 17/16 20060101AFI20220803BHJP
G06F 15/80 20060101ALI20220803BHJP
G06F 9/34 20060101ALI20220803BHJP
【FI】
G06F17/16 E
G06F17/16 K
G06F15/80
G06F9/34 330
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021573736
(86)(22)【出願日】2020-06-11
(85)【翻訳文提出日】2022-01-20
(86)【国際出願番号】 CN2020095649
(87)【国際公開番号】W WO2020249052
(87)【国際公開日】2020-12-17
(31)【優先権主張番号】201910512317.6
(32)【優先日】2019-06-13
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】521541860
【氏名又は名称】フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110002572
【氏名又は名称】特許業務法人平木国際特許事務所
(72)【発明者】
【氏名】イン,チョンシン
(72)【発明者】
【氏名】ワン,レイ
【テーマコード(参考)】
5B033
5B056
【Fターム(参考)】
5B033AA14
5B033DD05
5B056AA06
5B056BB35
5B056BB42
5B056FF11
5B056HH03
(57)【要約】
本開示はグラフィックス処理ユニットの技術分野に関し、具体的にGPUにおける明示的な個別マスクレジスタのマスク操作方法に関する。マスク操作方法は、各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、該GPUにおいて明示的で個別マスクレジスタのマスク操作コマンドにより、GPUにおける各ハードウェアスレッドはそれぞれの8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS2と、ユーザが使用可能な4つのマスク操作コマンドを有し、それぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現するステップS3と、コマンドにより、条件制御における分岐マスクを生成し、同時にマスク値を求め、プログラマブルコアにおけるコマンド送信プロセスを最適化するステップS4と、を含む、これにより、無効なオペランドの読み取り及びパイプライン操作の実行を防止し、プログラマブル消費電力を低減することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
GPUにおける明示的な個別マスクレジスタのマスク操作方法であって、
各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、
前記$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、プログラムコードにおけるコマンドのマスクアドレスフィールドMSAを変更することにより、現在のコマンドの実行マスクを指定することができるステップS2と、
コマンドによりそれぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現し、対応するマスクレジスタを指定する必要があり、同時に最近の親要素のマスクレジスタを保持し、且つ二分木の方式で子要素と親要素のマスク関係を処理するステップS3と、
前記マスクレジスタの使用が8を超える場合、移動コマンドを介して、一時的に使用しないマスクオペランドを前記汎用ベクトルレジスタに記憶し、必要がある時に前記汎用ベクトルレジスタから再度取得するステップS4と、
ベクトル実行ユニットによりマスクリダクション操作を実現し、マスクリダクションの汎用及び明示的な読み取りを完了し、コマンド送信によるオーバーヘッドを防止し、ユーザはアプリケーションプログラムを解析した後、前記リダクション操作を追加するか否かを決定するステップS5と、
明示的な前記マスクレジスタは、処理条件を制御する時、後段の条件コードを前記マスクレジスタに記憶し、さらに真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、明示的なマスクにより、単一のマスクが上書きされ、上書き後にリセットされるという問題を防止し、前記ベクトル汎用レジスタと前記マスクレジスタとの間のデータ移動を減少させるステップS6と、を含むことを特徴とする、GPUにおける明示的な個別マスクレジスタのマスク操作方法。
【請求項2】
前記128ビットのマスク及びベクトル実行ユニットは、SIMD16の並列方式で割り当てられ、1つの前記マスクレジスタはベクトルユニットの実行を8回確保することができる、ことを特徴とする、請求項1に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
【請求項3】
前記ベクトルユニットのベクトルコマンドを送信する時、該コマンドのマスクレジスタが全てゼロであるか否かを判断し、全てゼロであれば該コマンドがいかなる有効な出力も発生させないことを示し、対応するコマンドの読み取り及び実行の操作をいずれも省略することができる、ことを特徴とする、請求項2に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
【請求項4】
前記SIMD16の幅をリダクションする必要があり、リダクション結果がゼロでない場合はオペランドを読み取り、コマンドを送信し、それによりSIMD16のマスク処理を完了させることができる、ことを特徴とする、請求項2に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
【請求項5】
前記マスクリダクションコマンドはユーザが解析した後に、コマンドを送信する前の効率が低いリダクション操作をさらに防止することができ、それによりリダクションは前述した性能及び消費電力の最適化効果を必ず発揮することができる、ことを特徴とする、請求項2に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はグラフィックス処理ユニットの技術分野に関し、具体的にはGPUにおける明示的な個別マスクレジスタのマスク操作方法に関する。
【0002】
<関連出願の相互参照>
本開示は、2019年6月13日に出願された、出願番号201910512317.6、発明の名称「GPUにおける明示的な個別マスクレジスタのマスク操作方法」の特許出願の優先権主張出願であり、その全部の内容が援用により本開示に組み込まれる。
【背景技術】
【0003】
高度なグラフィックスプロセッサはshaderコードを実行するための多くのプログラマブルプロセッサコア及びグラフィックス専用ハードウェアアクセラレータを含む。最初にこれらのプロセッサコアはグラフィックスアプリケーションにおけるshaderコードを実行するために用いられたが、後に非グラフィックス計算集約型のアプリケーションを良好に処理できることが発見され、汎用グラフィックスプロセッサに発展してきた。
【0004】
グラフィックアプリケーションにおいてGPUは数が膨大な頂点及びセグメントを処理しなければならず、これらのオブジェクトに対してそれぞれ単独でコードを作成することは不可能である。従ってGPUプログラミングモデルにおいて頂点を処理するためのshader及びセグメントを処理するためのshaderを定義する。ユーザはshaderにおいて頂点及びセグメントを処理するアルゴリズムを記述することができる。GPGPUアプリケーションに対して類似の方法を使用して、プログラミングモデルにおいて数が膨大な処理オブジェクトを定義しており、これらのオブジェクトはワークアイテムと呼ばれ、ユーザはkernelを指定することによりこれらのワークアイテムをどのように処理するかを記述する。
【0005】
グラフィックスプロセッサは複数の頂点又はkernelにおけるワークアイテムをスレッドに組み合わせ、シングルインストラクションマルチプルデータ(SIMD)に従って対応するshaderプログラム及びkernelプログラムを実行し、プログラム内に条件制御コードが存在する場合、SIMD実現方式においてこの問題を解決する一つの方法は実行マスクにより実行結果の出力を制御し、マスクにおける対応ビットにおける値が0x1である場合のみ、対応する目的オペランドを書き換えるものであり、GPUコマンドワードの符号化空間を節約するため、該方法は、グラフィックスプロセッサにおいては単一の隠しマスクレジスタの方式により実現することが多いが、
図1に示すように、shader又はkernelコードにおける条件制御ステートメントが多いか又はネストが発生した場合、単一の隠しマスクレジスタ($exec)により現在のコマンドのマスクレジスタを変更することができず、隠しマスクレジスタと汎用レジスタとの間のデータが頻繁に移動することになってしまい、これにより、プログラムのコマンド数が増加するだけでなく、プログラムの実行遅延が増えて、同時にレジスタ間の読み書きが追加されて、プログラマブルプロセッサコアの消費電力が上昇する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示の目的は、GPUにおける明示的な個別マスクレジスタのマスク操作方法を提供することにより、上記背景技術において提出された、グラフィックスプロセッサは複数の頂点又はkernelにおけるワークアイテムをスレッドに組み合わせ、シングルインストラクションマルチプルデータ方式に従って対応するshaderプログラム及びkernelプログラムを実行し、プログラム内に条件制御コードが存在する場合、この問題を解決するSIMD実現方式による一つの方法は実行マスクにより実行結果の出力を制御し、マスクにおける対応ビットにおける値が0x1である場合のみ、対応する目的オペランドを書き換えるものであり、GPUコマンドワードの符号化空間を節約するため、グラフィックスプロセッサにおいては単一の隠しマスクレジスタの方式により実現することが多いが、shader又はkernelコードにおける条件制御ステートメントが多いか又はネストが発生した場合、単一の隠しマスクレジスタ($exec)により現在のコマンドのマスクレジスタを変更することができず、隠しマスクレジスタと汎用レジスタとの間のデータが頻繁に移動することになってしまい、これにより、プログラムのコマンド数が増加するだけでなく、プログラムの実行遅延が増えて、同時にレジスタ間の読み書きが追加されて、プログラマブルプロセッサコアの消費電力が上昇する、という課題を解決することである。
【課題を解決するための手段】
【0007】
上記目的を実現するために、本開示は以下の技術的解決手段を提供する。GPUにおける明示的な個別マスクレジスタのマスク操作方法は、
各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、
前記$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、プログラムコードにおけるコマンドのマスクアドレスフィールドMSAを変更することにより、現在のコマンドの実行マスクを指定することができるステップS2と、
コマンドによりそれぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現し、対応するマスクレジスタを指定する必要があり、同時に最近の親要素のマスクレジスタを保持し、且つ二分木の方式で子要素と親要素のマスク関係を処理するステップS3と、
前記マスクレジスタの使用が8を超える場合、移動コマンドを介して、一時的に使用しないマスクオペランドを前記汎用ベクトルレジスタに記憶し、必要がある時に前記汎用ベクトルレジスタから再度取得するステップS4と、
ベクトル実行ユニットによりマスクリダクション操作を実現し、マスクリダクションの汎用及び明示的な読み取りを完了し、コマンド送信によるオーバーヘッドを防止し、ユーザはアプリケーションプログラムを解析した後、前記リダクション操作を追加するか否かを決定するステップS5と、
明示的な前記マスクレジスタは、処理条件を制御する時、後段の条件コードを前記マスクレジスタに記憶し、さらに真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、明示的なマスクにより、単一のマスクが上書きされ、上書き後にリセットされるという問題を防止し、前記ベクトル汎用レジスタと前記マスクレジスタとの間のデータ移動を減少させるステップS6と、を含む。
【0008】
好ましくは、前記128ビットのマスク及びベクトル実行ユニットは、SIMD16の並列方式で割り当てられ、1つの前記マスクレジスタはベクトルユニットの実行を8回確保することができることである。
【0009】
好ましくは、前記ベクトルユニットのベクトルコマンドを送信する時、該コマンドのマスクレジスタが全てゼロであるか否かを判断し、全てゼロであれば該コマンドがいかなる有効な出力も発生させないことを示し、対応するコマンドの読み取り及び実行の操作をいずれも省略することができることである。
【0010】
好ましくは、前記SIMD16の幅をリダクションする必要があり、リダクション結果がゼロでない場合はオペランドを読み取り、コマンドを送信し、それによりSIMD16のマスク処理を完了させることができることである。
【0011】
好ましくは、前記マスクリダクションコマンドはユーザが解析した後に、コマンドを送信する前の効率が低いリダクション操作をさらに防止することができ、それによりリダクションは前述した性能及び消費電力の最適化効果を必ず発揮することができることである。
【0012】
従来技術に比べて、本開示の有益な効果は、該GPUにおける明示的な独立マスクレジスタ及びマスク操作コマンドは、グラフィックスプロセッサにおいて実現される明示的な独立マスクレジスタ及び操作マスクレジスタのコマンドを提供し、GPUにおける各ハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができる。ただし、$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、コマンドのマスクアドレスフィールドMSAを変更することによって現在のコマンドの実行マスクを指定することもできる。ユーザが使用可能な4つのマスク操作コマンドを有し、それぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現することができる。コマンドにより、条件制御における分岐マスクを生成し、同時にマスク値を求め、プログラマブルコアにおけるコマンド送信プロセスを最適化することができる。これにより、無効なオペランドの読み取り及びパイプライン操作の実行を防止し、プログラマブル消費電力を低減することができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は本開示の黙示的なユニットマスクレジスタの概略図である。
【
図2】
図2は本開示の第1リダクションプログラマブルプロセッサコアの概略図である。
【
図3】
図3は本開示の第2リダクションプログラマブルプロセッサコアの概略図である。
【
図4】
図4は本開示の黙示的な送信プロセスの概略図である。
【発明を実施するための形態】
【0014】
以下に本開示の実施例における図面を参照しながら、本開示の実施例における技術的解決手段を明確、且つ完全に説明するが、明らかな点として、説明される実施例は本開示の一部の実施例に過ぎず、全ての実施例ではない。本開示の実施例に基づき、当業者が創造的な労力を要することなく取得した全ての他の実施例は、いずれも本開示の保護範囲に属する。
【0015】
本開示は以下の技術的解決手段を提供する。
図2及び
図3に示すように、GPUにおける明示的な個別マスクレジスタのマスク操作方法は、
各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、
$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、プログラムコードにおけるコマンドのマスクアドレスフィールドMSAを変更することにより、現在のコマンドの実行マスクを指定することができるステップS2と、
コマンドによりそれぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現し、対応するマスクレジスタを指定する必要があり、同時に最近の親要素のマスクレジスタを保持し、且つ二分木の方式で子要素と親要素のマスク関係を処理するステップS3と、
マスクレジスタの使用が8を超える場合、移動コマンドを介して、一時的に使用しないマスクオペランドを汎用ベクトルレジスタに記憶し、必要がある時に汎用ベクトルレジスタから再度取得するステップS4と、
ベクトル実行ユニットによりマスクリダクション操作を実現し、マスクリダクションの汎用及び明示的な読み取りを完了し、コマンド送信によるオーバーヘッドを防止し、ユーザはアプリケーションプログラムを解析した後、リダクション操作を追加するか否かを決定するステップS5と、
明示的なマスクレジスタは、処理条件を制御する時、後段の条件コードをマスクレジスタに記憶し、さらに真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、明示的なマスクにより、単一のマスクが上書きされ、上書き後にリセットされるという問題を防止し、ベクトル汎用レジスタとマスクレジスタとの間のデータ移動を減少させるステップS6と、を含む。
【0016】
ここで、128ビットのマスク及びベクトル実行ユニットは、SIMD16の並列方式で割り当てられる。1つのマスクレジスタはベクトルユニットの実行を8回確保することができる。ベクトルユニットのベクトルコマンドを送信する時、該コマンドのマスクレジスタが全てゼロであるか否かを判断し、全てゼロであれば該コマンドがいかなる有効な出力も発生させないことを示し、対応するコマンドの読み取り及び実行の操作をいずれも省略することができる。SIMD16の幅をリダクションする必要があり、リダクション結果がゼロでない場合はオペランドを読み取り、コマンドを送信し、それによりSIMD16のマスク処理を完了させることができる。マスクリダクションコマンドはユーザが解析した後に、コマンドを送信する前の効率が低いリダクション操作をさらに防止することができ、それによりリダクションは前記性能及び消費電力の最適化効果を必ず発揮することができる。
【0017】
具体的な使用においては、
図4に示すように、まず明示的なマスクレジスタは、処理条件を制御する時、後段の条件コードをマスクレジスタに記憶し、さらに論理積、クリア、論理操作に従い真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、本開示のプログラマブルプロセッサコアにおいて、個別マスクレジスタと比較し、個別マスクレジスタ及びマスクリダクションにより誘導されるコマンド送信ユニットを追加し、128ビットのマスク$m
cに対して、ベクトル実行ユニットはSIMD16の並列方式に従って割り当てられ、1つのマスクレジスタはベクトルユニットの実行を8回確保することができる。これにより、コマンドフェッチの負荷を低減させる。ベクトルコマンドを送信する時、該コマンドのマスクレジスタが全てゼロであるか否かを優先的に判断する。全てゼロである場合、該コマンドがいかなる有効な出力も発生させないことを示す。このようにしてコマンドに対応するソースオペランドの読み取り及び実行をいずれも省略することができる。データ依存の発生を防止するために、依存フラグをクリーンアップすべきである。マスクにおける一部が全てゼロである場合、リダクション操作の結果は表現できず、この場合マスクを16ビットの幅に合わせてリダクションする必要があり、現在の16ビットのリダクション結果がゼロでない場合、オペランドを読み取るとともにコマンド送信をする必要があり、そうでなければ通常なコマンド送信のフローに応じて処理し、このようにマスクがカバーする全てのSIMD16のマスク処理が完了するまで実行して、コマンド送信を終了する。
【0018】
以上、実施例を参照して本開示を説明したが、本開示の範囲を逸脱することなく、種々の改良を行い、その構成要素を等価物に置換することができる。特に、本開示で示された実施例におけるそれぞれの特徴は、構造的矛盾がない限り、いずれも任意の方法で互いに組み合わせて使用されてもよく、本明細書においてそれらを組み合わせた状況を包括的に説明していないのは、単に文章の省略及び資源の節約を考慮したに過ぎない。したがって、本開示は、本明細書に開示された特定の実施例に限定されず、特許請求の範囲に含まれる全ての技術的解決手段を含む。
【国際調査報告】