[go: up one dir, main page]

JP2024545660A - In-line interruption of acceleration processing units - Google Patents

In-line interruption of acceleration processing units Download PDF

Info

Publication number
JP2024545660A
JP2024545660A JP2024535496A JP2024535496A JP2024545660A JP 2024545660 A JP2024545660 A JP 2024545660A JP 2024535496 A JP2024535496 A JP 2024535496A JP 2024535496 A JP2024535496 A JP 2024535496A JP 2024545660 A JP2024545660 A JP 2024545660A
Authority
JP
Japan
Prior art keywords
command
apu
received
packet
execution
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.)
Pending
Application number
JP2024535496A
Other languages
Japanese (ja)
Inventor
フアド アシュカー アレクサンダー
ピー. ニジャシャー マンゲッシュ
ゼット. クライシャ ラカン
ラストギ マヌ
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2024545660A publication Critical patent/JP2024545660A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

Figure 2024545660000001

加速処理ユニット(APU)のインライン中断のための方法及びシステムが開示される。技術は、動作モード及びAPUによって実行されるコマンドを含むパケットを受信することと、動作モードが中断開始モードである場合に、以前のパケットで受信したコマンドの実行を中断することと、APUが、受信したパケット内のコマンドを実行することと、を含む。中断されたコマンドの実行は、次に受信したパケットにおける動作モードが中断終了モードである場合に再開される。
【選択図】図3

Figure 2024545660000001

A method and system for in-line suspend of an accelerated processing unit (APU) is disclosed. The technique includes receiving a packet containing an operational mode and a command to be executed by the APU, suspending execution of the command received in the previous packet if the operational mode is a suspend start mode, and the APU executing the command in the received packet. Execution of the suspended command is resumed if the operational mode in the next received packet is a suspend end mode.
[Selected figure] Figure 3

Description

(関連出願の相互参照)
本願は、2021年12月28日に出願された米国特許出願第17/564,049号の利益を主張するものであり、その内容は、参照により本明細書に組み込まれる。
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims the benefit of U.S. Patent Application No. 17/564,049, filed December 28, 2021, the contents of which are incorporated herein by reference.

限られた時間内に大量のデータを処理することを必要とするプロセッサは、1つ以上の加速処理ユニット(accelerated processing units、APU)を利用することができる。APUを使用する場合、従来、プロセッサは、APUによって実行されるコマンドを送信すること、及び、APUからコマンド完了肯定応答(command completion acknowledgments)を受信することを含む、APUの動作を制御している。通常、APUのコンピューティングリソースは、1つ以上のプロセッサ上で実行される複数のアプリケーションによって共有される。アプリケーションが高い優先度で集中的なワークロードの実行を必要とする場合、アプリケーションがAPUの計算リソースをその独占的使用のために確保することを可能にする機能は貴重である。しかしながら、別のワークロードを優先してAPUの現在のワークロードを中断し、次いで再開することは、通常、APUとプロセッサとの間の通信を必要とするプロセッサの関与を必要とする。プロセッサとAPUとの間のそのような往復通信は、APUによるワークロード実行時間の予測可能性を損なう。 Processors that need to process large amounts of data within a limited time can utilize one or more accelerated processing units (APUs). When using an APU, traditionally the processor controls the operation of the APU, including sending commands to be executed by the APU and receiving command completion acknowledgments from the APU. Typically, the computing resources of the APU are shared by multiple applications running on one or more processors. When an application requires the execution of an intensive workload with high priority, the ability to allow the application to reserve the computing resources of the APU for its exclusive use is valuable. However, suspending the current workload of the APU in favor of another workload and then resuming it requires the involvement of the processor, which typically requires communication between the APU and the processor. Such back-and-forth communication between the processor and the APU reduces the predictability of the workload execution time by the APU.

添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。 A more detailed understanding can be had from the following description, given by way of example in conjunction with the accompanying drawings, in which:

本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。FIG. 1 is a block diagram of an example device capable of implementing one or more features of the present disclosure. 本開示の1つ以上の特徴が実装され得ることに基づく、図1Aのデバイスによって使用可能なAPUを示す例示的なシステムのブロック図である。FIG. 1B is a block diagram of an example system illustrating an APU usable by the device of FIG. 1A, according to which one or more features of the present disclosure may be implemented. 本開示の1つ以上の特徴を実装することができるAPUのインライン中断を示す例示的なシステムの機能ブロック図である。FIG. 1 is a functional block diagram of an example system illustrating in-line interruption of an APU capable of implementing one or more features of the present disclosure. 本開示の1つ以上の特徴を実装することができるAPUのインライン中断のための例示的な方法のフローチャートである。1 is a flowchart of an example method for in-line interruption of an APU that can implement one or more features of the present disclosure.

APUのインライン中断(inline suspension)のためのシステム及び方法が開示される。プロセッサによってAPUにパケットで送信されたコマンドでそれぞれの動作モードをインラインすることによって、APUによって処理されているワークロードの中断、次いで再開をトリガするための技術が開示される。このようにしてAPUを中断及び再開する能力は、プロセッサの関与なしにAPUのコンピューティングリソースを排他的に利用するための高い優先度及び集中的なワークロードを可能にし、ひいては予測可能なワークロード実行時間を可能にする。 A system and method for inline suspension of an APU is disclosed. Techniques are disclosed for triggering the suspension and then resumption of a workload being processed by an APU by inlining the respective operating modes with commands sent in packets by the processor to the APU. The ability to suspend and resume an APU in this manner allows high priority and intensive workloads to exclusively utilize the computing resources of the APU without processor involvement, thus allowing predictable workload execution times.

本願において開示される態様は、APUのインライン中断のための方法を説明する。この方法は、APUによって実行される動作モード及びコマンドを含むパケットを受信することと、動作モードが中断開始モード(suspension initiation mode)であることに応じて、前のパケット内で受信されたコマンドの実行を中断することと、APUによって、受信されたパケット内のコマンドを実行することと、を含む。方法は、動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを更に含む。 Aspects disclosed herein describe a method for in-line suspension of an APU. The method includes receiving a packet including an operational mode and a command to be executed by the APU, suspending execution of the command received in the previous packet in response to the operational mode being a suspension initiation mode, and executing, by the APU, the command in the received packet. The method further includes resuming execution of the suspended command in response to the operational mode being a suspension termination mode.

また、本願に開示される態様は、APUのインライン中断のためのシステムを説明する。システムは、少なくとも1つのプロセッサと、命令を記憶するメモリと、を備える。命令は、少なくとも1つのプロセッサによって実行されると、システムに、動作モード及びAPUによって実行されるコマンドを含むパケットを受信させ、動作モードが中断開始モードであることに応じて、前のパケット内で受信されたコマンドの実行を中断し、APUによって、受信されたパケット内のコマンドを実行させる。更に、命令は、システムに、動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開させる。 Aspects disclosed herein also describe a system for in-line interruption of an APU. The system includes at least one processor and a memory that stores instructions. The instructions, when executed by the at least one processor, cause the system to receive a packet including an operating mode and a command to be executed by the APU, and, in response to the operating mode being an interrupt start mode, interrupt execution of the command received in the previous packet, and cause the APU to execute the command in the received packet. The instructions further cause the system to resume execution of the interrupted command in response to the operating mode being an interrupt end mode.

更に、本願に開示される態様は、動作モード及びAPUによって実行されるコマンドを含むパケットを受信することと、動作モードが中断開始モードであることに応じて、前のパケット内で受信されたコマンドの実行を中断することと、APUによって、受信されたパケット内のコマンドを実行することと、が可能なAPUのインライン中断を実行するように適合されたAPUを記述するハードウェア記述言語命令を含む非一時的なコンピュータ可読記憶媒体を記載する方法は、動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを更に含む。 Additionally, aspects disclosed herein include a method for describing a non-transitory computer-readable storage medium including hardware description language instructions describing an APU adapted to perform an in-line suspend of the APU capable of receiving a packet including an operating mode and a command to be executed by the APU, suspending execution of the command received in the previous packet in response to the operating mode being a suspend start mode, and executing, by the APU, the command in the received packet, further including resuming execution of the suspended command in response to the operating mode being a suspend end mode.

図1Aは、本開示の1つ以上の特徴を実装することができる例示的なデバイス100Aのブロック図である。デバイス100Aは、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータであり得る。デバイス100Aは、プロセッサ102、APU106、メモリ104、ストレージ116、入力デバイス108、及び、出力デバイス110を含む。また、デバイス100Aは、入力ドライバ112及び出力ドライバ114を含み得る。一態様では、デバイス100Aは、図1Aに示されていない追加の構成要素を含み得る。 1A is a block diagram of an example device 100A that can implement one or more features of the present disclosure. Device 100A can be, for example, a computer, a gaming device, a handheld device, a set-top box, a television, a mobile phone, or a tablet computer. Device 100A includes a processor 102, an APU 106, a memory 104, a storage 116, an input device 108, and an output device 110. Device 100A can also include an input driver 112 and an output driver 114. In one aspect, device 100A can include additional components not shown in FIG. 1A.

プロセッサ102は、中央処理ユニット(CPU)又はCPUの1つ以上のコアを含むことができる。APU106は、高度並列処理ユニット、グラフィックス処理ユニット(GPU)、又は、それらの組み合わせを表すことができる。プロセッサ102及びAPU106は、同じダイ上又は別のダイ上に位置し得る。メモリ104は、プロセッサ102と同じダイ上に位置し得るか、又は、プロセッサ102とは別に位置し得る。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、キャッシュ、又は、これらの組み合わせ)を含むことができる。 The processor 102 may include a central processing unit (CPU) or one or more cores of a CPU. The APU 106 may represent a highly parallel processing unit, a graphics processing unit (GPU), or a combination thereof. The processor 102 and the APU 106 may be located on the same die or on separate dies. The memory 104 may be located on the same die as the processor 102 or may be located separately from the processor 102. The memory 104 may include volatile or non-volatile memory (e.g., random access memory (RAM), dynamic RAM (DRAM), cache, or a combination thereof).

ストレージ116は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含むことができる。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の受信のための無線ローカルエリアネットワークカード)等の1つ以上の入力デバイスを表すことができる。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信のための無線ローカルエリアネットワークカード)等の1つ以上の出力デバイスを表すことができる。 Storage 116 may include fixed or removable storage (e.g., hard disk drive, solid state drive, optical disk, flash drive). Input device 108 may represent one or more input devices such as a keyboard, keypad, touch screen, touch pad, detector, microphone, accelerometer, gyroscope, biometric scanner, or network connection (e.g., wireless local area network card for receiving wireless IEEE 802 signals). Output device 110 may represent one or more output devices such as a display, speaker, printer, haptic feedback device, one or more lights, antennas, or network connection (e.g., wireless local area network card for transmitting wireless IEEE 802 signals).

入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、入力デバイス108からプロセッサ102への入力の受信を容易にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102から出力デバイス110への出力の送信を容易にする。一態様では、入力ドライバ112及び出力ドライバ114は、オプションの構成要素であり、デバイス100Aは、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することができる。 The input driver 112 communicates with the processor 102 and the input device 108 and facilitates receiving input from the input device 108 to the processor 102. The output driver 114 communicates with the processor 102 and the output device 110 and facilitates sending output from the processor 102 to the output device 110. In one aspect, the input driver 112 and the output driver 114 are optional components and the device 100A can operate in the same manner in the absence of the input driver 112 and the output driver 114.

APU106は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、及び/又は、ディスプレイ(出力デバイス110)に出力を提供するように構成され得る。以下で更に詳細に説明するように、APU106は、例えば、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含むことができる。したがって、様々な機能が、本明細書では、APU106によって又はAPU106と併せて実行されるものとして説明されているが、様々な代替例では、APU106によって実行されるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によってドライブされず、例えば、グラフィカル出力をディスプレイに提供するように構成することができる同様の能力を有する他のコンピューティングデバイスによって追加的又は代替的に実行され得る。処理システムがSIMDパラダイムに従って処理タスクを実行することができるかどうかにかかわらず、処理システムは、本明細書で説明される機能を実行するように構成され得る。 The APU 106 may be configured to accept computational and graphics rendering commands from the processor 102, process those computational and graphics rendering commands, and/or provide output to a display (output device 110). As described in more detail below, the APU 106 may include one or more parallel processing units configured to perform computations, for example, according to a single instruction multiple data (SIMD) paradigm. Thus, although various functions are described herein as being performed by or in conjunction with the APU 106, in various alternative examples, the functions described as being performed by the APU 106 may additionally or alternatively be performed by other computing devices having similar capabilities that are not driven by a host processor (e.g., the processor 102) and that may be configured, for example, to provide graphical output to a display. Regardless of whether the processing system is capable of performing processing tasks according to the SIMD paradigm, the processing system may be configured to perform the functions described herein.

図1Bは、本開示の1つ以上の特徴を実装することができる図1Aのデバイスによって使用可能な加速システムを示す例示的なシステム100Bのブロック図である。図1Bは、APU106上での処理タスクの実行を更に詳細に示す。プロセッサ102は、メモリ104内で、プロセッサ102による実行のための1つ以上のモジュールを維持することができる。モジュールは、オペレーティングシステム120、ドライバ122、及び、アプリケーション126を含む。これらのモジュールは、プロセッサ102及びAPU106の動作の様々な特徴を制御することができる。例えば、オペレーティングシステム120は、システムコール、すなわち、アプリケーションプログラミングインターフェース(API)を提供することができ、これは、アプリケーション126によって採用され、ハードウェアと直接インターフェースすることができる。ドライバ122は、例えば、プロセッサ102上で実行されるアプリケーション126にAPIを提供して、APU106の様々な機能にアクセスすることによって、APU106の動作を制御することができる。 FIG. 1B is a block diagram of an exemplary system 100B illustrating an acceleration system usable by the device of FIG. 1A that can implement one or more features of the present disclosure. FIG. 1B illustrates the execution of processing tasks on the APU 106 in further detail. The processor 102 can maintain in the memory 104 one or more modules for execution by the processor 102. The modules include an operating system 120, a driver 122, and an application 126. These modules can control various aspects of the operation of the processor 102 and the APU 106. For example, the operating system 120 can provide system calls, i.e., application programming interfaces (APIs), that can be employed by the application 126 to interface directly with the hardware. The driver 122 can control the operation of the APU 106, for example, by providing the APIs to the application 126 running on the processor 102 to access various functions of the APU 106.

APU106は、並列処理又は逐次処理の何れか、及び、順序処理又は非順序処理の何れかを含む、グラフィックス動作及び非グラフィックス動作に関連するコマンドを実行することができる。APU106は、プロセッサ102から受信したコマンドに基づいて、ピクセル及び/又は幾何学計算を処理する動作(例えば、ディスプレイ(出力デバイス110)への画像のレンダリング)等のグラフィックスパイプライン動作を実行するために使用することができる。また、APU106は、プロセッサ102から受信したコマンドに基づいて、多次元データ、物理シミュレーション、計算流体力学、又は、他の計算タスクの処理に関連する動作等のように、グラフィックス動作に関連しない処理動作を実行することができる。代替的な実施形態では、APU106は、信号処理動作を実行することができ(例えば、APU106は、デジタル信号プロセッサ又はDSPにおいて具現化され得る)、ビットストリームによって構成されたフィールドプログラマブルゲートアレイ(FPGA)の使用を通じて加速動作を実行することができ、ニューラル処理ユニット(又はNPU)の使用を通じてニューラル処理動作を実行することができ、又は、プロセッサ102よりもむしろ加速処理ユニット(APU)の使用を通じてより効率的に実行され得る他の動作を実行することができる。 APU 106 can execute commands related to graphics and non-graphics operations, including either parallel or sequential processing, and either sequential or non-sequential processing. APU 106 can be used to perform graphics pipeline operations, such as operations that process pixels and/or geometry calculations (e.g., rendering an image to a display (output device 110)) based on commands received from processor 102. APU 106 can also execute processing operations not related to graphics operations, such as operations related to processing multi-dimensional data, physics simulations, computational fluid dynamics, or other computational tasks based on commands received from processor 102. In alternative embodiments, APU 106 may perform signal processing operations (e.g., APU 106 may be embodied in a digital signal processor or DSP), may perform accelerated operations through the use of a bitstream-configured field programmable gate array (FPGA), may perform neural processing operations through the use of a neural processing unit (or NPU), or may perform other operations that may be more efficiently performed through the use of an accelerated processing unit (APU) rather than the processor 102.

APU106は、ワークグループプロセッサ(WGP)132.1~132.Mを含むことができ、各WGP、例えば132.1は、SIMDパラダイムに従って並列の方式で動作を実行することができる1つ以上のSIMDユニット、例えば138.1.1~138.1.Nを有することができる。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより、同じプログラムを、異なるデータで実行することができるものである。一例では、各SIMDユニット、例えば138.1.1は、64のレーン(すなわち、スレッド)を実行することができ、各レーンは、SIMDユニット内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行する。レーンは、全てのレーンが所定の命令を実行する必要がない場合等に、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。具体的には、条件付き分岐(又は制御フローが個々のレーンによって実行される計算に基づいている他の命令)を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスの直列実行が、任意の制御フローを可能にする。一態様では、WGP132.1~132.Mの各々は、ローカルキャッシュを有することができる。別の態様では、複数のWGPがキャッシュを共有することができる。 APU 106 may include workgroup processors (WGPs) 132.1-132.M, where each WGP, e.g., 132.1, may have one or more SIMD units, e.g., 138.1.1-138.1.N, that may execute operations in a parallel fashion according to the SIMD paradigm. The SIMD paradigm is one in which multiple processing elements share a single program control flow unit and program counter, thereby allowing the same program to be executed on different data. In one example, each SIMD unit, e.g., 138.1.1, may execute 64 lanes (i.e., threads), each lane executing the same instruction simultaneously with other lanes in the SIMD unit, but executing the instruction on different data. Lanes may be switched off with prediction, such as when not all lanes need to execute a given instruction. Prediction may also be used to execute programs with branching control flow. Specifically, for programs with conditional branches (or other instructions where control flow is based on calculations performed by individual lanes), prediction of lanes corresponding to currently not executed control flow paths and serial execution of different control flow paths allows arbitrary control flow. In one aspect, each of WGPs 132.1-132.M may have a local cache. In another aspect, multiple WGPs may share a cache.

WGP、例えば132.1内の実行の基本的単位は、ワークアイテムである。通常は、各ワークアイテムは、特定のレーンにおいて並列に実行され得るプログラムの単一のインスタンシエイションを表す。ワークアイテムは、単一のSIMD、例えば138.1.1上の「ウェーブフロント(wavefront)」(又は「ウェーブ(wave)」)として同時に実行され得る。1つ以上のウェーブは、ワークグループで実行されてもよく、各ウェーブは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブの各々を実行することによって実行される。また、ウェーブは、単一のSIMDユニット上で逐次実行され得るか、又は、異なるSIMDユニット138.1.1~138.1.N上で部分的に若しくは完全に並列に実行され得る。したがって、ウェーブは、単一のSIMDユニット、例えば、138.1.1上で同時に実行することができるワークアイテムの集合と考えることができる。したがって、プロセッサ102から受信されたコマンドが、プログラムが単一のSIMDユニット上で同時に実行させることができない程度に特定のプログラムが並列化されるべきであることを示す場合、そのプログラムは、2つ以上のSIMDユニット(例えば、138.1.1~138.1.N)上に並列化されるか、同じSIMDユニット(例えば、138.1.1)上で直列化されるか、又は、必要に応じて並列化と直列化との両方がされ得るウェーブに分けることができる。スケジューラ136は、異なるWGP132.1~132.M及びそれらのそれぞれのSIMDユニット上で様々なウェーブを開始することに関連する動作を実行するように構成され得る。 The basic unit of execution within a WGP, e.g., 132.1, is the work item. Typically, each work item represents a single instantiation of a program that can be executed in parallel on a particular lane. Work items can be executed simultaneously as a "wavefront" (or "wave") on a single SIMD, e.g., 138.1.1. One or more waves may be executed in a workgroup, each wave including a collection of work items designated to execute the same program. A workgroup is executed by executing each of the waves that make up the workgroup. Also, waves can be executed sequentially on a single SIMD unit, or partially or fully in parallel on different SIMD units 138.1.1-138.1.N. Thus, a wave can be thought of as a collection of work items that can be executed simultaneously on a single SIMD unit, e.g., 138.1.1. Thus, if commands received from processor 102 indicate that a particular program should be parallelized to the extent that the program cannot be run simultaneously on a single SIMD unit, the program may be split into waves that may be parallelized on two or more SIMD units (e.g., 138.1.1-138.1.N), serialized on the same SIMD unit (e.g., 138.1.1), or both parallelized and serialized as desired. Scheduler 136 may be configured to perform operations associated with initiating various waves on different WGPs 132.1-132.M and their respective SIMD units.

WGP132.1~132.Mによって与えられる並列性は、例えば、ピクセル値に対する動作(例えば、フィルタ動作)、幾何学的データに対する動作(例えば、頂点変換)、及び、他のグラフィックス関連動作等のグラフィックス関連動作に好適である。例えば、プロセッサ102上で実行されるアプリケーション126は、APU106によって実行される計算を伴うことができる。アプリケーション126は、ドライバ122によって提供されるAPIを使用して、処理コマンドをAPU106に発行することができる。次いで、処理コマンドは、スケジューラ136に提供される。スケジューラ136は、処理コマンドを、並列実行のためにWGP132.1~132.Mに割り当てられる計算タスクに変換する。例えば、スケジューラ136は、データ(例えば、画像の1024ピクセル)に対して実行されるべき命令を含む処理コマンドを受信し得る。それに応じて、スケジューラ136は、データをグループ(例えば、各グループが64ピクセルの処理に必要なデータを含む)に分割し、1つ以上のWGPにおいてウェーブを開始することができ、各ウェーブは、データのグループ及びデータに対して実行する命令に関連付けられる。例えば、スケジューラ136は、1つ以上のWGP132のSIMD138において実行される16個のウェーブ(例えば、各々が64ピクセルの処理を担う)を開始することができる。 The parallelism provided by WGPs 132.1-132.M is well suited for graphics-related operations such as, for example, operations on pixel values (e.g., filter operations), operations on geometric data (e.g., vertex transformations), and other graphics-related operations. For example, an application 126 executing on processor 102 may involve computations performed by APU 106. Application 126 may issue processing commands to APU 106 using an API provided by driver 122. The processing commands are then provided to scheduler 136. Scheduler 136 converts the processing commands into computational tasks that are assigned to WGPs 132.1-132.M for parallel execution. For example, scheduler 136 may receive processing commands that include instructions to be performed on data (e.g., 1024 pixels of an image). In response, scheduler 136 may divide data into groups (e.g., each group containing data necessary to process 64 pixels) and initiate waves in one or more WGPs, with each wave associated with a group of data and an instruction to perform on the data. For example, scheduler 136 may initiate 16 waves (e.g., each responsible for processing 64 pixels) to be executed in SIMD 138 of one or more WGPs 132.

図2は、本開示の1つ以上の特徴を実装することができるAPUのインライン中断を示す例示的なシステム200の機能ブロック図である。システム200は、プロセッサ210(例えば、図1Aのプロセッサ102)、APU215(例えば、図1BのAPU106)、及び、メモリ220(例えば、図1Aのメモリ104)を含む。APU215は、コマンドプロセッサ250と、シェーダスケジューラ230と、WGP240.1~240.N(例えば、図1BのWGP132)を有するシェーダ240と、を含む。メモリ220は、それぞれメモリインターフェース222及び224を介して、プロセッサ210及びコマンドプロセッサ250によってアクセス可能である。プロセッサ210は、ユーザアプリケーション212及びドライバ214等のソフトウェアモジュールを実行するように構成され、それを介してアプリケーション212はコマンドプロセッサ250とインターフェースすることができる。したがって、コンピュータゲーム又はシミュレータ等のアプリケーション212は、ドライバ214によって提供されるアプリケーションプログラミングインターフェース(API)を使用して、シェーダ240によって実行されるべき計算タスクを指定するコマンドをコマンドプロセッサ250に送ることができる。そのようなコマンドは、以下で更に説明するように、パケットフォーマットに従ってパケット内で配信される。 2 is a functional block diagram of an exemplary system 200 illustrating an in-line interruption of an APU that can implement one or more features of the present disclosure. The system 200 includes a processor 210 (e.g., processor 102 of FIG. 1A), an APU 215 (e.g., APU 106 of FIG. 1B), and a memory 220 (e.g., memory 104 of FIG. 1A). The APU 215 includes a command processor 250, a shader scheduler 230, and a shader 240 having WGPs 240.1-240.N (e.g., WGP 132 of FIG. 1B). The memory 220 is accessible by the processor 210 and the command processor 250 via memory interfaces 222 and 224, respectively. The processor 210 is configured to execute software modules, such as a user application 212 and a driver 214, through which the application 212 can interface with the command processor 250. Thus, an application 212, such as a computer game or simulator, can use an application programming interface (API) provided by the driver 214 to send commands to the command processor 250 that specify computational tasks to be performed by the shaders 240. Such commands are delivered in packets according to a packet format, as described further below.

コマンドプロセッサ250は、プロセッサ210上で動作するソフトウェアモジュールと、シェーダ240等のAPU215の実行(又は処理)エンジンとの間のインターフェースを提供するように構成されている。コマンドプロセッサ250は、フェッチャ255、ドアベル260、グラフィックスコマンドプロセッサ270、計算コマンドプロセッサ280、及び、キューマネージャ290等の機能構成要素を含むことができる。上述したように、ユーザアプリケーション212は、ドライバ214を介して、コマンドプロセッサ250に配信されるコマンドのパケットを生成することができる。配信の1つの機構は、(メモリインターフェース222を介して)メモリ220内のアプリケーション関連キューにこれらのパケットを記憶し、次いで、1つ以上の新しいパケットがメモリ内のそのキュー内で利用可能であることをコマンドプロセッサのドアベル260に信号を送ることによるものであり得る。そのような信号の受信に応じて、ドアベルは、フェッチャ255による1つ以上の新しいパケットの読み取りをトリガするように構成されている。次いで、フェッチャ255は、(メモリインターフェース224を介して)メモリ220内のキューからパケットを読み取り、読み取られたパケットを先入れ先出し(FIFO)順序でパケットキュー257、258内にプッシュする。描画(グラフィックス)コマンドを含むパケットはキュー257に記憶され、ディスパッチ計算コマンドを含むパケットはキュー258に記憶される。グラフィックスコマンドプロセッサ270及び計算コマンドプロセッサ280は、パケットが到着すると、それぞれキュー257及び258からパケットをポップアウトするように構成されている。複数のアプリケーション212(例えば、ホスト210上で同時に実行される)がそれぞれのパケットを生成する場合、各アプリケーションに関連付けられたパケットは、メモリ内のそれぞれのキューに記憶されてもよく、フェッチャ255は、メモリ220内の各キューからパケットを読み出し、読み出したパケットをそれぞれのパケットキュー257、258にプッシュするように構成されている。 The command processor 250 is configured to provide an interface between software modules running on the processor 210 and the execution (or processing) engines of the APU 215, such as the shader 240. The command processor 250 may include functional components such as the fetcher 255, the doorbell 260, the graphics command processor 270, the compute command processor 280, and the queue manager 290. As described above, the user application 212, via the driver 214, may generate packets of commands that are delivered to the command processor 250. One mechanism of delivery may be by storing these packets in an application-related queue in the memory 220 (via the memory interface 222) and then signaling the command processor's doorbell 260 that one or more new packets are available in that queue in memory. In response to receiving such a signal, the doorbell is configured to trigger the reading of the one or more new packets by the fetcher 255. The fetcher 255 then reads packets from the queues in the memory 220 (via the memory interface 224) and pushes the packets into the packet queues 257, 258 in first-in, first-out (FIFO) order. Packets containing drawing (graphics) commands are stored in the queue 257, and packets containing dispatch computation commands are stored in the queue 258. The graphics command processor 270 and the computation command processor 280 are configured to pop packets out of the queues 257 and 258, respectively, as the packets arrive. When multiple applications 212 (e.g., running simultaneously on the host 210) generate respective packets, the packets associated with each application may be stored in a respective queue in the memory, and the fetcher 255 is configured to read packets from each queue in the memory 220 and push the packets into the respective packet queues 257, 258.

一態様では、パケットフォーマットは、パケットヘッダと、1つ以上のコマンドと、を含み得る。本明細書で開示するように、パケットヘッダは、パススルーモード、中断開始モード、及び、中断終了モードを含む動作モードを符号化する。パススルー動作モードでは、コマンドプロセッサ250は、通常の動作状態で動作する。すなわち、新たに到着したコマンドは、現在利用可能なコンピューティングリソースによって処理される。例えば、全てのWGP240.1~240.Nが、以前に受信されたコマンドに関連付けられたウェーブの処理に関与している場合、新たに到着したコマンドは、WGPのうち1つ以上が利用可能になるまで待たなければならない。対照的に、中断開始動作モードでは、コマンドプロセッサ250は、現在処理されているウェーブの実行を中断し、全てのWGPを、新たに到着したコマンドに関連付けられたウェーブの実行に利用可能にするように構成されている。この動作モードは、中断終了動作モードが有効になるまで保持され、有効になった時点で、中断されたウェーブの実行が再開(復元)され、コマンドプロセッサ250が通常の動作状態の下で再び動作するように戻る。これらの3つの動作モードが処理され得る方法は、以下に更に開示される。 In one aspect, the packet format may include a packet header and one or more commands. As disclosed herein, the packet header encodes an operating mode, including a pass-through mode, a pause start mode, and a pause end mode. In the pass-through operating mode, the command processor 250 operates under normal operating conditions. That is, a newly arrived command is processed by currently available computing resources. For example, if all WGPs 240.1-240.N are involved in processing a wave associated with a previously received command, the newly arrived command must wait until one or more of the WGPs are available. In contrast, in the pause start operating mode, the command processor 250 is configured to pause execution of the currently processed wave and make all WGPs available to execute the wave associated with the newly arrived command. This operating mode is maintained until a pause end operating mode is enabled, at which point execution of the paused wave is resumed (restored) and the command processor 250 returns to operating under normal operating conditions again. The manner in which these three operating modes may be handled is disclosed further below.

ヘッダ内にパススルー動作モードを符号化するパケットが受信されると、コマンドプロセッサ250はパケットのコマンドを復号する。パケット内のコマンドは、APU215の構成要素に関連付けられた状態又は制御レジスタを設定するために使用されるコマンドであってもよい。また、パケット内のコマンドは、同期動作に使用されるコマンドであってもよい。パケット内のかなりの数のコマンドは、描画(グラフィックス)コマンド及び計算ディスパッチコマンド等のような、シェーダ240に向けられた計算タスクに関係し得る。したがって、コマンドプロセッサ250は、コマンドを復号する場合、コマンドに作用し得る(例えば、コマンドに従って状態レジスタを設定する)か、又は、コマンドを宛先構成要素に送信して、それに作用し得る。描画(グラフィックス)コマンド又は計算ディスパッチコマンドは、それぞれグラフィックスコマンドプロセッサ270又は計算コマンドプロセッサ280によって処理される。これらのプロセッサ270、280は、それぞれのコマンドをシェーダコマンドに変換する。キューマネージャ290は、これらのシェーダコマンドをそれぞれのキューに記憶し、これらのキューをシェーダスケジューラ230に供給される実行パイプに接続する。シェーダスケジューラ230は、利用可能なWGP240.1~240.Nにシェーダコマンドを割り当てる。 When a packet encoding the pass-through mode of operation in its header is received, the command processor 250 decodes the command of the packet. The command in the packet may be a command used to set status or control registers associated with components of the APU 215. The command in the packet may also be a command used for synchronization operations. A significant number of the commands in the packet may relate to computational tasks directed to the shader 240, such as drawing (graphics) commands and compute dispatch commands. Thus, when the command processor 250 decodes a command, it may act on the command (e.g., set a status register according to the command) or send the command to the destination component to act on it. The drawing (graphics) command or compute dispatch command is processed by the graphics command processor 270 or compute command processor 280, respectively. These processors 270, 280 convert the respective commands into shader commands. The queue manager 290 stores these shader commands in respective queues and connects these queues to the execution pipes that feed the shader scheduler 230. The shader scheduler 230 assigns shader commands to the available WGPs 240.1 to 240.N.

したがって、パススルー動作モードでは、コマンドは、現在利用可能なコンピューティングリソースに基づいてコマンドプロセッサ250によって処理され、すなわち、これらのコマンドによって規定される計算タスクは、シェーダ240の現在利用可能なWGPにスケジュールされる(230)。しかしながら、そのヘッダ中に動作の中断開始モードを符号化するパケットが受信される場合、コマンドプロセッサ250は、パケット内のコマンドが処理される前に、シェーダ240のWGP240.1~240.N上で現在処理されているウェーブの中断動作を開始する。同様に、中断終了動作モードをそのヘッダ内に符号化するパケットが受信されると、パケット内のコマンドが処理され、次いで、コマンドプロセッサ250は、中断されたウェーブを再開(復元)してそれらの処理を継続することによって中断を終了する。中断段階(すなわち、中断開始モードを符号化するパケットで始まり、中断終了モードを符号化するパケットで終わる段階)中に受信されるコマンドは、APUの全てのコンピューティングリソースを利用可能であり、したがって、シェーダ240の全てのWGP240.1~240.N上で排他的にスケジュールすることができる。次いで、中断段階中に、APUは、パケットを生成したアプリケーション(本明細書で開示される態様によれば、中断モードを開始したアプリケーション)に関連付けられたメモリ220内のキューからフェッチされたパケット内のコマンドを排他的に処理する。APUは、中断段階が終了するまで、他のアプリケーションに関連付けられたメモリ220内のキューに記憶されたパケットを供給しない(例えば、フェッチしない)。 Thus, in the pass-through mode of operation, commands are processed by the command processor 250 based on the currently available computing resources, i.e., the computational tasks defined by these commands are scheduled (230) on the currently available WGPs of the shader 240. However, if a packet is received that encodes a suspend start mode of operation in its header, the command processor 250 initiates the suspend operation of the currently processed wave on the WGPs 240.1-240.N of the shader 240 before the commands in the packet are processed. Similarly, if a packet is received that encodes a suspend end mode of operation in its header, the commands in the packet are processed, and then the command processor 250 ends the suspend by resuming (restoring) the suspended waves to continue their processing. Commands received during the suspend phase (i.e., the phase beginning with a packet encoding a suspend start mode and ending with a packet encoding a suspend end mode) have all the computing resources of the APU available, and therefore can be exclusively scheduled on all the WGPs 240.1-240.N of the shader 240. Then, during the suspend phase, the APU exclusively processes commands in packets fetched from queues in memory 220 associated with the application that generated the packets (the application that initiated the suspend mode, according to aspects disclosed herein). The APU does not provide (e.g., does not fetch) packets stored in queues in memory 220 associated with other applications until the suspend phase ends.

したがって、上述したように、中断開始モードがパケットのヘッダから復号されると、中断動作がトリガされる。すなわち、コマンドプロセッサ250は、シェーダスケジューラ230に供給する実行パイプへの任意の新しいキューの接続を停止するようにキューマネージャ290に信号を送る。更に、キューマネージャ290は、実行パイプに現在接続されている任意のキューをオフに切り替える、休止する又は停止するように信号を送られる。一態様では、パケットのヘッダ中の情報に基づいて、中断は、現在動作しているウェーブを中断することによって、そのようなウェーブを排出させることによって、又は、それらの組合せによって実行され得る。中断動作が完了すると、全てのシェーダリソースが利用可能になり、シェーダのWGPは使用されておらず、したがって、中断段階中に受信されたコマンドによって規定される計算タスクでスケジュールされるように利用可能である。中断段階は、後続のパケットのヘッダから中断終了モードが復号されるまで継続する。このとき、上述したように、中断ウェーブが再開(復元)される。 Thus, as described above, when the pause start mode is decoded from the header of the packet, a pause operation is triggered. That is, the command processor 250 signals the queue manager 290 to stop connecting any new queues to the execution pipes that feed the shader scheduler 230. Additionally, the queue manager 290 is signaled to switch off, pause, or stop any queues currently connected to the execution pipes. In one aspect, based on the information in the packet's header, the pause can be performed by pausing the currently running wave, by draining such wave, or by a combination thereof. Once the pause operation is completed, all shader resources are available and the shader's WGP is unused and therefore available to be scheduled with the computational tasks defined by the commands received during the pause phase. The pause phase continues until a pause end mode is decoded from the header of the subsequent packet. At that time, the pause wave is resumed (restored) as described above.

現在実行中のウェーブを中断することは、計算ウェーブ保存復元(CWSR)手順と呼ばれる手順によって使用することができ、それを通してウェーブを中断し復元することができる。CWSR手順では、コマンドプロセッサ250は、ウェーブを現在実行しているシェーダ240.1~240.Nに、それらの状態をメモリに保存し、それら自体を実行から除去するように命令する。次いで、コマンドプロセッサ250は、ハードウェアマシンをトリガして、ウェーブリプレイリストをメモリ内のスタックに保存する。ウェーブを再開(復元)するために、コマンドプロセッサ250は、スタックをハードウェア実行ユニットにプッシュバックし、次いで、再生されたウェーブは、それらの状態を復元し、それらが以前に停止した場所で動作を再開する。 Aborting a currently executing wave can be used by a procedure called the Compute Wave Save and Restore (CWSR) procedure, through which a wave can be suspended and restored. In the CWSR procedure, the command processor 250 commands the shaders 240.1-240.N currently executing the wave to save their state to memory and remove themselves from execution. The command processor 250 then triggers the hardware machine to save the wave replay list to a stack in memory. To resume (restore) the wave, the command processor 250 pushes the stack back to the hardware execution unit, and the played waves then restore their state and resume operation where they previously stopped.

図3は、本開示の1つ以上の特徴が実装され得るAPU215のインライン中断のための例示的な方法300のフローチャートである。通常の動作中、プロセッサ210は、計算タスクに関連付けられたコマンドを、1つ以上のパケットを介してAPU215に送信する。したがって、方法300は、ステップ310において、パケットを受信することから始まる。ステップ320において、受信されたパケットのヘッダは、動作モードを決定するために復号される。決定された動作モードが中断開始モードでない場合、ステップ340において、受信されたパケット内のコマンドは、APU215の現在利用可能なコンピューティングリソースに基づいて実行される。したがって、受信されたパケット内のコマンドに関連付けられたウェーブは、WGP240.1~240.Nを、以前に受信されたパケットから受信されたコマンドに関連付けられた他の(現在実行中の)ウェーブと共有しなければならない場合がある。しかしながら、動作モードが中断開始モードであると決定された場合、ステップ330において、シェーダ処理は中断される。すなわち、シェーダ240の全てのコンピューティングリソースを利用可能にするために、WGP240.1~240.N内で現在実行中のウェーブが中断される。中断が完了すると、ステップ340で、受信されたパケット内のコマンドは、シェーダ240によって排他的に実行される。ステップ350において、動作モードが中断終了モードであると決定された場合、ステップ360において、中断されたウェーブが再開(復元)される。中断されたウェーブが再開(復元)されると(360)、(ステップ330とステップ360との間に続く)中断段階が終了する。すなわち、後続のパケット内のコマンドは、別の中断段階を再びトリガする中断開始動作モードを符号化するパケットが受信されるまで、再開(復元)されたウェーブとコンピューティングリソースを共有しながら実行される。 3 is a flow chart of an exemplary method 300 for in-line interruption of APU 215 in which one or more features of the present disclosure may be implemented. During normal operation, processor 210 transmits commands associated with computational tasks to APU 215 via one or more packets. Thus, method 300 begins with receiving a packet at step 310. At step 320, the header of the received packet is decoded to determine an operational mode. If the determined operational mode is not an interrupt-start mode, then at step 340, the command in the received packet is executed based on the currently available computing resources of APU 215. Thus, the wave associated with the command in the received packet may have to share WGP 240.1-240.N with other (currently executing) waves associated with commands received from previously received packets. However, if the operational mode is determined to be an interrupt-start mode, then shader processing is interrupted at step 330. That is, WGP 240.1-240.N are decoded to make all computing resources of shader 240 available. The currently executing wave in N is suspended. Once the suspension is complete, in step 340, the commands in the received packet are executed exclusively by shader 240. If in step 350, it is determined that the operating mode is a suspended-end mode, then in step 360, the suspended wave is resumed (restored). Once the suspended wave is resumed (restored) (360), the suspension phase (which continues between steps 330 and 360) ends; that is, commands in subsequent packets are executed while sharing computing resources with the resumed (restored) wave until a packet is received that encodes a suspended-enter operating mode that again triggers another suspension phase.

一態様では、動作モードは、例えば、1つ以上のパケットで受信されたコマンドの処理に関連するイベントに基づいて、APU215によって変更され得る。モードは、(通常の動作状態の間の)パススルー動作モードから中断開始動作モードに変更されて、中断段階における動作をもたらすことができる。代替的に、モードは、(中断段階での動作中の)パススルー動作モードから中断終了動作モードに変更されて、中断段階での動作を停止してもよい。例えば、グラフィックスコマンドプロセッサ270又は計算コマンドプロセッサ280によるコマンドの処理中に(又はこれらの処理されたコマンドに関連付けられたシェーダコマンドを実行するウェーブの処理中に)、これらのコマンドの全て又はサブセットの実行のために全てのコンピューティングリソースを引き継ぐことを要求するイベントが発生し得る。そのような状況では、コマンドプロセッサ250は、APUの全てのコンピューティングリソースをこのコマンドサブセットの実行専用にするために、動作モードをパススルーモードから中断開始モードに変更することを決定することができる。このコマンドサブセットの実行の終了時に、コマンドプロセッサ250は、動作モードを中断終了モードに変更し、通常の動作状態に戻ることができる。代替的に、中断段階の下でコマンドを処理している間に、中断段階を終了することを要求するイベントが発生する可能性があり、その場合、コマンドプロセッサ250は、動作モードを中断終了モードに変更することができる。 In one aspect, the operating mode may be changed by APU 215 based on an event, for example, associated with the processing of commands received in one or more packets. The mode may be changed from a pass-through operating mode (during normal operating conditions) to a suspend-enter operating mode to effect operation in the suspend phase. Alternatively, the mode may be changed from a pass-through operating mode (during operation in the suspend phase) to an suspend-end operating mode to cease operation in the suspend phase. For example, during the processing of commands by graphics command processor 270 or compute command processor 280 (or during the processing of a wave that executes shader commands associated with these processed commands), an event may occur that requires taking over all computing resources for the execution of all or a subset of these commands. In such a situation, command processor 250 may decide to change the operating mode from pass-through mode to suspend-enter mode in order to dedicate all computing resources of the APU to the execution of this subset of commands. At the end of the execution of this subset of commands, command processor 250 may change the operating mode to suspend-end mode and return to a normal operating state. Alternatively, while processing a command under the suspend phase, an event may occur that requires the suspend phase to be terminated, in which case the command processor 250 can change the operating mode to the suspend termination mode.

本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。 It should be understood that many variations are possible based on the disclosure herein. Although features and elements are described above in particular combinations, each feature or element can be used alone without other features and elements, or in various combinations with or without other features and elements.

提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連付けられた1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令等)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、次いで、このマスクワークを半導体製造プロセスにおいて使用して、実施形態の態様を実装するプロセッサを製造する。 The provided methods can be implemented in a general purpose computer, processor, or processor core. Suitable processors include, by way of example, general purpose processors, special purpose processors, conventional processors, digital signal processors (DSPs), multiple microprocessors, one or more microprocessors associated with a DSP core, controllers, microcontrollers, application specific integrated circuits (ASICs), field programmable gate array (FPGA) circuits, any other type of integrated circuit (IC), and/or state machines. Such processors can be manufactured by configuring a manufacturing process using the results of processed hardware description language (HDL) instructions and other intermediate data, including netlists (such as instructions that can be stored on a computer readable medium). The results of such processing can be a mask work, which is then used in a semiconductor manufacturing process to manufacture a processor implementing aspects of the embodiments.

本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。 The methods or flow charts provided herein may be implemented in a computer program, software, or firmware embodied in a non-transitory computer-readable storage medium for execution by a general purpose computer or processor. Examples of non-transitory computer-readable storage media include read only memory (ROM), random access memory (RAM), registers, cache memory, semiconductor memory devices, magnetic media such as internal hard disks and removable disks, magneto-optical media, and optical media such as CD-ROM disks and digital versatile disks (DVDs).

Claims (25)

加速処理ユニット(APU)のインライン中断のための方法であって、
動作モードと前記APUが実行するコマンドとを含むパケットを受信することと、
前記動作モードが中断開始モードであることに応じて、以前のパケットにおいて受信したコマンドの実行を中断することと、
前記APUが、受信したパケット内のコマンドを実行することと、を含む、
方法。
1. A method for in-line interruption of an accelerated processing unit (APU), comprising:
receiving a packet containing an operating mode and a command for the APU to execute;
suspending execution of a command received in a previous packet in response to the operational mode being a suspend-start mode;
and the APU executing a command in the received packet.
method.
前記動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを含む、
請求項1の方法。
resuming execution of the interrupted command in response to the operational mode being an interrupt-and-terminate mode.
2. The method of claim 1.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
それぞれの実行パイプからキューを切断することであって、前記キューは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを含む、ことを含む、
請求項1の方法。
Aborting execution of a command received in the previous packet comprises:
disconnecting a queue from each execution pipe, the queue including shader commands associated with commands received in the previous packet;
2. The method of claim 1.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを中断することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項1の方法。
Aborting execution of a command received in the previous packet comprises:
and suspending a wave currently being executed by the APU based on information contained in a received packet, the wave executing a shader command associated with a command received in the previous packet.
2. The method of claim 1.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
前記以前のパケットにおいて受信したコマンドに関連するウェーブを中断するために、コンピュートウェーブセーブ復元(CWSR)手順を採用することを含む、
請求項1の方法。
Aborting execution of a command received in the previous packet comprises:
employing a Compute Wave Save Restore (CWSR) procedure to abort a wave associated with the command received in the previous packet;
2. The method of claim 1.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを排出することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項1の方法。
Aborting execution of a command received in the previous packet comprises:
Draining a wave currently being executed by the APU based on information contained in a received packet, the wave executing a shader command associated with a command received in the previous packet.
2. The method of claim 1.
前記動作モードは、受信したパケット又は以前に受信したパケット内のコマンドの処理に関連するイベントに基づいて、前記APUによって変更される、
請求項1の方法。
The operational mode is changed by the APU based on an event associated with processing a command in a received packet or a previously received packet.
2. The method of claim 1.
前記APUは、グラフィックス処理ユニット、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイプロセッサ、又は、ニューラル処理ユニットのうち何れかである、
請求項1の方法。
The APU is one of a graphics processing unit, a digital signal processor, a field programmable gate array processor, or a neural processing unit.
2. The method of claim 1.
前記実行することは、前記APUの実行エンジンによって行われる、
請求項1の方法。
said executing being performed by an execution engine of said APU;
2. The method of claim 1.
前記実行エンジンはシェーダである、
請求項8の方法。
the execution engine is a shader;
9. The method of claim 8.
受信したパケットは、前記APUによってメモリ内のキューからフェッチされ、前記キューは、前記受信したパケットを生成したアプリケーションに関連付けられている、
請求項1の方法。
a received packet is fetched by the APU from a queue in memory, the queue being associated with an application that generated the received packet;
2. The method of claim 1.
APUのインライン中断のためのシステムであって、
少なくとも1つのプロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、
動作モードと前記APUが実行するコマンドとを含むパケットを受信することと、
前記動作モードが中断開始モードであることに応じて、以前のパケットにおいて受信したコマンドの実行を中断することと、
前記APUが、受信したパケット内のコマンドを実行することと、
を前記システムに行わせる、
システム。
1. A system for in-line interruption of an APU, comprising:
At least one processor;
A memory for storing instructions,
The instructions, when executed by the at least one processor,
receiving a packet containing an operating mode and a command for the APU to execute;
suspending execution of a command received in a previous packet in response to the operational mode being a suspend-start mode;
the APU executing a command in the received packet;
causing the system to
system.
前記命令は、
前記動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することを前記システムに行わせる、
請求項12のシステム。
The instruction:
in response to the operating mode being a suspend-end mode, causing the system to resume execution of the suspended command;
The system of claim 12.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
それぞれの実行パイプからキューを切断することであって、前記キューは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを含む、ことを含む、
請求項12のシステム。
Aborting execution of a command received in the previous packet comprises:
disconnecting a queue from each execution pipe, the queue including shader commands associated with commands received in the previous packet;
The system of claim 12.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを中断することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項12のシステム。
Aborting execution of a command received in the previous packet comprises:
and suspending a wave currently being executed by the APU based on information contained in a received packet, the wave executing a shader command associated with a command received in the previous packet.
The system of claim 12.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
前記以前のパケットにおいて受信したコマンドに関連するウェーブを中断するために、コンピュートウェーブセーブ復元(CWSR)手順を採用することを含む、
請求項12のシステム。
Aborting execution of a command received in the previous packet comprises:
employing a Compute Wave Save Restore (CWSR) procedure to abort a wave associated with the command received in the previous packet;
The system of claim 12.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを排出することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項12のシステム。
Aborting execution of a command received in the previous packet comprises:
Draining a wave currently being executed by the APU based on information contained in a received packet, the wave executing a shader command associated with a command received in the previous packet.
The system of claim 12.
前記動作モードは、受信したパケット又は以前に受信したパケット内のコマンドの処理に関連するイベントに基づいて、前記APUによって変更される、
請求項12のシステム。
The operational mode is changed by the APU based on an event associated with processing a command in a received packet or a previously received packet.
The system of claim 12.
加速処理ユニット(APU)のインライン中断を実行するように構成された前記APUを記述するハードウェア記述言語命令を含むコンピュータ可読記憶媒体であって、
前記APUは、
動作モードと前記APUが実行するコマンドとを含むパケットを受信することと、
前記動作モードが中断開始モードであることに応じて、以前のパケットにおいて受信したコマンドの実行を中断することと、
前記APUが、受信したパケット内のコマンドを実行することと、
を行うことが可能である、
コンピュータ可読記憶媒体。
1. A computer-readable storage medium comprising hardware description language instructions describing an accelerated processing unit (APU) configured to perform an in-line interruption of the APU, the computer-readable storage medium comprising:
The APU is
receiving a packet containing an operating mode and a command for the APU to execute;
suspending execution of a command received in a previous packet in response to the operational mode being a suspend-start mode;
the APU executing a command in the received packet;
It is possible to
A computer-readable storage medium.
前記APUは、
前記動作モードが中断終了モードであることに応じて、中断されたコマンドの実行を再開することが可能である、
請求項19のコンピュータ可読記憶媒体の命令。
The APU is
In response to the operation mode being a suspend-end mode, execution of the suspended command can be resumed.
20. The computer readable storage medium of claim 19.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
それぞれの実行パイプからキューを切断することであって、前記キューは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを含む、ことを含む、
請求項19のコンピュータ可読記憶媒体の命令。
Aborting execution of a command received in the previous packet comprises:
disconnecting a queue from each execution pipe, the queue including shader commands associated with commands received in the previous packet;
20. The computer readable storage medium of claim 19.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを中断することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項19のコンピュータ可読記憶媒体の命令。
Aborting execution of a command received in the previous packet comprises:
and suspending a wave currently being executed by the APU based on information contained in a received packet, the wave executing a shader command associated with a command received in the previous packet.
20. The computer readable storage medium of claim 19.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
前記以前のパケットにおいて受信したコマンドに関連するウェーブを中断するために、コンピュートウェーブセーブ復元(CWSR)手順を採用することを含む、
請求項19のコンピュータ可読記憶媒体の命令。
Aborting execution of a command received in the previous packet comprises:
employing a Compute Wave Save Restore (CWSR) procedure to abort a wave associated with the command received in the previous packet;
20. The computer readable storage medium of claim 19.
前記以前のパケットにおいて受信したコマンドの実行を中断することは、
受信したパケットに含まれる情報に基づいて、前記APUによって現在実行されているウェーブを排出することであって、前記ウェーブは、前記以前のパケットにおいて受信したコマンドに関連付けられたシェーダコマンドを実行する、ことを含む、
請求項19のコンピュータ可読記憶媒体の命令。
Aborting execution of a command received in the previous packet comprises:
Draining a wave currently being executed by the APU based on information contained in a received packet, the wave executing a shader command associated with a command received in the previous packet.
20. The computer readable storage medium of claim 19.
前記動作モードは、受信したパケット又は以前に受信したパケット内のコマンドの処理に関連するイベントに基づいて、前記APUによって変更される、
請求項19のコンピュータ可読記憶媒体の命令。
The operational mode is changed by the APU based on an event associated with processing a command in a received packet or a previously received packet.
20. The computer readable storage medium of claim 19.
JP2024535496A 2021-12-28 2022-11-18 In-line interruption of acceleration processing units Pending JP2024545660A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/564,049 US12056787B2 (en) 2021-12-28 2021-12-28 Inline suspension of an accelerated processing unit
US17/564,049 2021-12-28
PCT/US2022/050491 WO2023129301A1 (en) 2021-12-28 2022-11-18 Inline suspension of an accelerated processing unit

Publications (1)

Publication Number Publication Date
JP2024545660A true JP2024545660A (en) 2024-12-10

Family

ID=86896827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2024535496A Pending JP2024545660A (en) 2021-12-28 2022-11-18 In-line interruption of acceleration processing units

Country Status (6)

Country Link
US (1) US12056787B2 (en)
EP (1) EP4457616A1 (en)
JP (1) JP2024545660A (en)
KR (1) KR20240124330A (en)
CN (1) CN118475915A (en)
WO (1) WO2023129301A1 (en)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054802B2 (en) 2000-10-20 2006-05-30 Quickturn Design Systems, Inc. Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US8131921B2 (en) 2008-09-17 2012-03-06 Intel Corporation Command suspension in response, at least in part, to detected acceleration and/or orientation change
US9519943B2 (en) * 2010-12-07 2016-12-13 Advanced Micro Devices, Inc. Priority-based command execution
US9299121B2 (en) * 2010-12-15 2016-03-29 Advanced Micro Devices, Inc. Preemptive context switching
US10002021B2 (en) * 2012-07-20 2018-06-19 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
US10134103B2 (en) * 2015-10-23 2018-11-20 Qualcomm Incorporated GPU operation algorithm selection based on command stream marker
CN109254826B (en) 2017-07-12 2024-02-06 超威半导体公司 Suspension detection for virtualized acceleration processing device
US10824467B2 (en) 2018-08-07 2020-11-03 Arm Limited Data processing system with protected mode of operation for processing protected content
US10963299B2 (en) 2018-09-18 2021-03-30 Advanced Micro Devices, Inc. Hardware accelerated dynamic work creation on a graphics processing unit
US11830101B2 (en) * 2020-07-17 2023-11-28 Arm Limited Graphics processors

Also Published As

Publication number Publication date
US12056787B2 (en) 2024-08-06
KR20240124330A (en) 2024-08-16
WO2023129301A1 (en) 2023-07-06
EP4457616A1 (en) 2024-11-06
CN118475915A (en) 2024-08-09
US20230206379A1 (en) 2023-06-29

Similar Documents

Publication Publication Date Title
US20250191111A1 (en) Reconfigurable virtual graphics and compute processor pipeline
KR101786768B1 (en) Graphics compute process scheduling
US8963933B2 (en) Method for urgency-based preemption of a process
KR101788267B1 (en) Optimizing communication of system call requests
KR101961396B1 (en) Dynamic work partitioning on heterogeneous processing devices
EP3646177B1 (en) Early virtualization context switch for virtualized accelerated processing device
KR101786767B1 (en) Graphics processing dispatch from user mode
US10242420B2 (en) Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta
JP2010050970A (en) Device and method of communicating between central processing unit and graphics processing unit
JP2024511765A (en) Multi-accelerator computation dispatch
US9122522B2 (en) Software mechanisms for managing task scheduling on an accelerated processing device (APD)
US8933942B2 (en) Partitioning resources of a processor
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
JP2014503898A (en) Method and system for synchronous operation of processing equipment
US20130135327A1 (en) Saving and Restoring Non-Shader State Using a Command Processor
JP2024541294A (en) Reducing Latency in Highly Scalable HPC Applications Through Accelerator-Resident Runtime Management - Patent application
US10255104B2 (en) System call queue between visible and invisible computing devices
JP2024545660A (en) In-line interruption of acceleration processing units
US9015719B2 (en) Scheduling of tasks to be performed by a non-coherent device
JP2024501454A (en) Compressed command packets for high throughput and low overhead kernel launches
US20130155079A1 (en) Saving and Restoring Shader Context State
US20240362092A1 (en) Offloading network communication operation synchronizations to accelerator streams
US20120194528A1 (en) Method and System for Context Switching

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20251113