JP2023502574A - 演算論理回路レジスタの順序付け - Google Patents
演算論理回路レジスタの順序付け Download PDFInfo
- Publication number
- JP2023502574A JP2023502574A JP2022524020A JP2022524020A JP2023502574A JP 2023502574 A JP2023502574 A JP 2023502574A JP 2022524020 A JP2022524020 A JP 2022524020A JP 2022524020 A JP2022524020 A JP 2022524020A JP 2023502574 A JP2023502574 A JP 2023502574A
- Authority
- JP
- Japan
- Prior art keywords
- operand
- register
- registers
- operands
- during
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 16
- 238000012546 transfer Methods 0.000 claims abstract description 15
- 238000010586 diagram Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 abstract description 3
- 230000008901 benefit Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
Claims (20)
- 処理装置で実行される複数のスレッドについて、演算論理回路(ALU)で処理するための複数のオペランドを受信することと、
前記複数のオペランドを複数のレジスタに記憶することと、
複数の実行サイクルにわたって、前記ALUで処理するために、前記複数のレジスタから第1のオペランドレジスタへの前記複数のオペランドの提供を順序付けすることと、を含む、
方法。 - 前記順序付けすることは、
第1の実行サイクル中に、前記複数のオペランドのうち第1のオペランドの第1の部分を前記第1のオペランドレジスタに記憶することと、
第2の実行サイクル中に、前記複数のオペランドのうち第2のオペランドの第1の部分を、前記複数のレジスタのうち第1のレジスタから前記第1のオペランドレジスタに転送することと、を含む、
請求項1の方法。 - 前記順序付けすることは、
前記第1の実行サイクル中に、前記第1のオペランドの第2の部分を、前記複数のレジスタのうち第2のレジスタに記憶することと、
前記第2の実行サイクル中に、前記第1のオペランドの前記第2の部分を、前記ALUで処理するために第2のオペランドレジスタに転送することと、を含む、
請求項2の方法。 - 前記第2の実行サイクル中に、前記ALUの前記第1のオペランドレジスタ及び前記第2のオペランドレジスタから前記第1のオペランドを読み取ることを含む、
請求項3の方法。 - 前記第1のオペランドは倍精度オペランドであり、前記複数のレジスタの各々は、単精度オペランドを記憶するように構成されている、
請求項4の方法。 - 前記順序付けすることは、前記第2の実行サイクル中に、第3のオペランドの第1の部分を、前記複数のレジスタのうち第2のレジスタから前記複数のレジスタのうち前記第1のレジスタに転送することを含む、
請求項2の方法。 - 前記順序付けすることは、第3の実行サイクル中に、前記第3のオペランドの前記第1の部分を、前記複数のレジスタのうち前記第1のレジスタから前記第1のオペランドレジスタに転送することを含む、
請求項6の方法。 - 前記順序付けすることは、前記第2の実行サイクル中に、第4のオペランドの第1の部分を、前記複数のレジスタのうち第3のレジスタから前記複数のレジスタのうち前記第2のレジスタに転送することを含む、
請求項6の方法。 - 演算論理回路(ALU)を含む処理ユニットであって、対応する複数のスレッドを実行し、前記複数のスレッドは、前記ALUで処理される複数のオペランドを生成するように実行する、処理ユニットと、
前記複数のオペランドを記憶するように構成された複数のレジスタと、
複数の実行サイクルにわたって、前記ALUで処理するために、前記複数のレジスタから第1のオペランドレジスタへの前記複数のオペランドの提供を順序付けするように構成された順序付け制御モジュールと、を備える、
プロセッサ。 - 前記順序付けすることは、
第1の実行サイクル中に、前記複数のオペランドのうち第1のオペランドの第1の部分を前記第1のオペランドレジスタに記憶することと、
第2の実行サイクル中に、前記複数のオペランドのうち第2のオペランドの第1の部分を、前記複数のレジスタのうち第1のレジスタから前記第1のオペランドレジスタに転送することと、を含む、
請求項9のプロセッサ。 - 前記順序付けすることは、
前記第1の実行サイクル中に、前記第1のオペランドの第2の部分を、前記複数のレジスタのうち第2のレジスタに記憶することと、
前記第2の実行サイクル中に、前記第1のオペランドの前記第2の部分を、前記ALUで処理するために第2のオペランドレジスタに転送することと、を含む、
請求項10のプロセッサ。 - 前記ALUは、前記第2の実行サイクル中に、処理するために前記第1のオペランドレジスタ及び前記第2のオペランドレジスタから前記第1のオペランドを読み取るように構成されている、
請求項11のプロセッサ。 - 前記第1のオペランドは倍精度オペランドであり、前記複数のレジスタの各々は、単精度オペランドを記憶するように構成されている、
請求項12のプロセッサ。 - 前記順序付けすることは、前記第2の実行サイクル中に、第3のオペランドの第1の部分を、前記複数のレジスタのうち第2のレジスタから前記複数のレジスタのうち前記第1のレジスタに転送することを含む、
請求項10のプロセッサ。 - 前記順序付けすることは、第3の実行サイクル中に、前記第3のオペランドの前記第1の部分を、前記複数のレジスタのうち前記第1のレジスタから前記第1のオペランドレジスタに転送することを含む、
請求項14のプロセッサ。 - 前記順序付けすることは、前記第2の実行サイクル中に、第4のオペランドの第1の部分を、前記複数のレジスタのうち第3のレジスタから前記複数のレジスタのうち前記第2のレジスタに転送することを含む、
請求項14のプロセッサ。 - 対応する複数のスレッドを実行する複数のシェーダプロセッサであって、前記複数のスレッドは、複数のオペランドを生成するように実行する、複数のシェーダプロセッサと、
演算論理回路(ALU)と、
前記複数のオペランドを記憶するように構成された複数のレジスタと、
複数の実行サイクルにわたって、前記ALUで処理するために、前記複数のレジスタから第1のオペランドレジスタへの前記複数のオペランドの提供を順序付けするように構成された順序付け制御モジュールと、を備える、
グラフィックス処理ユニット(GPU)。 - 前記順序付けすることは、
第1の実行サイクル中に、前記複数のオペランドのうち第1のオペランドの第1の部分を前記第1のオペランドレジスタに記憶することと、
第2の実行サイクル中に、前記複数のオペランドのうち第2のオペランドの第1の部分を、前記複数のレジスタのうち第1のレジスタから前記第1のオペランドレジスタに転送することと、を含む、
請求項17のGPU。 - 前記順序付けすることは、
前記第1の実行サイクル中に、前記第1のオペランドの第2の部分を、前記複数のレジスタのうち第2のレジスタに記憶することと、
前記第2の実行サイクル中に、前記第1のオペランドの前記第2の部分を、前記ALUで処理するために第2のオペランドレジスタに転送することと、を含む、
請求項18のプロセッサ。 - 前記ALUは、前記第2の実行サイクル中に、処理するために前記第1のオペランドレジスタ及び前記第2のオペランドレジスタから前記第1のオペランドを読み取るように構成されている、
請求項19のプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/696,108 | 2019-11-26 | ||
US16/696,108 US11237827B2 (en) | 2019-11-26 | 2019-11-26 | Arithemetic logic unit register sequencing |
PCT/US2020/061977 WO2021108384A1 (en) | 2019-11-26 | 2020-11-24 | Arithemetic logic unit register sequencing |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2023502574A true JP2023502574A (ja) | 2023-01-25 |
JPWO2021108384A5 JPWO2021108384A5 (ja) | 2023-11-13 |
JP7490766B2 JP7490766B2 (ja) | 2024-05-27 |
Family
ID=75971278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022524020A Active JP7490766B2 (ja) | 2019-11-26 | 2020-11-24 | 演算論理回路レジスタの順序付け |
Country Status (6)
Country | Link |
---|---|
US (2) | US11237827B2 (ja) |
EP (1) | EP4066105A4 (ja) |
JP (1) | JP7490766B2 (ja) |
KR (1) | KR102644951B1 (ja) |
CN (1) | CN114868110A (ja) |
WO (1) | WO2021108384A1 (ja) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3389379A (en) * | 1965-10-05 | 1968-06-18 | Sperry Rand Corp | Floating point system: single and double precision conversions |
US5901316A (en) * | 1996-07-01 | 1999-05-04 | Sun Microsystems, Inc. | Float register spill cache method, system, and computer program product |
US5909572A (en) | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US7028170B2 (en) * | 2000-03-08 | 2006-04-11 | Sun Microsystems, Inc. | Processing architecture having a compare capability |
US8239439B2 (en) | 2007-12-13 | 2012-08-07 | International Business Machines Corporation | Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor |
WO2010044242A1 (ja) | 2008-10-14 | 2010-04-22 | 国立大学法人奈良先端科学技術大学院大学 | データ処理装置 |
US8458444B2 (en) * | 2009-04-22 | 2013-06-04 | Oracle America, Inc. | Apparatus and method for handling dependency conditions between floating-point instructions |
US8533435B2 (en) | 2009-09-24 | 2013-09-10 | Nvidia Corporation | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict |
US9823928B2 (en) | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
US9508112B2 (en) * | 2013-07-31 | 2016-11-29 | Apple Inc. | Multi-threaded GPU pipeline |
KR101893814B1 (ko) * | 2014-03-26 | 2018-10-04 | 인텔 코포레이션 | 3 소스 피연산자 부동 소수점 가산 프로세서, 방법, 시스템, 및 명령어 |
US9696992B2 (en) * | 2014-12-23 | 2017-07-04 | Intel Corporation | Apparatus and method for performing a check to optimize instruction flow |
US20160179470A1 (en) * | 2014-12-23 | 2016-06-23 | Shay Gueron | Method and apparatus for performing big-integer arithmetic operations |
US10754651B2 (en) * | 2018-06-29 | 2020-08-25 | Intel Corporation | Register bank conflict reduction for multi-threaded processor |
-
2019
- 2019-11-26 US US16/696,108 patent/US11237827B2/en active Active
-
2020
- 2020-11-24 CN CN202080079523.3A patent/CN114868110A/zh active Pending
- 2020-11-24 KR KR1020227017671A patent/KR102644951B1/ko active IP Right Grant
- 2020-11-24 WO PCT/US2020/061977 patent/WO2021108384A1/en unknown
- 2020-11-24 EP EP20893022.2A patent/EP4066105A4/en active Pending
- 2020-11-24 JP JP2022524020A patent/JP7490766B2/ja active Active
-
2022
- 2022-01-12 US US17/574,026 patent/US11789732B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2021108384A1 (en) | 2021-06-03 |
US11789732B2 (en) | 2023-10-17 |
US20220171621A1 (en) | 2022-06-02 |
EP4066105A4 (en) | 2023-11-22 |
CN114868110A (zh) | 2022-08-05 |
EP4066105A1 (en) | 2022-10-05 |
JP7490766B2 (ja) | 2024-05-27 |
KR102644951B1 (ko) | 2024-03-08 |
KR20220100891A (ko) | 2022-07-18 |
US11237827B2 (en) | 2022-02-01 |
US20210157581A1 (en) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
CN109997115B (zh) | 用于持久计算的低功率和低延迟gpu协处理器 | |
US8615646B2 (en) | Unanimous branch instructions in a parallel thread processor | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
US20080109795A1 (en) | C/c++ language extensions for general-purpose graphics processing unit | |
US20090240931A1 (en) | Indirect Function Call Instructions in a Synchronous Parallel Thread Processor | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
US9626191B2 (en) | Shaped register file reads | |
CN114610394B (zh) | 指令调度的方法、处理电路和电子设备 | |
US8151095B1 (en) | System and method for context migration across CPU threads | |
US11880683B2 (en) | Packed 16 bits instruction pipeline | |
US8413151B1 (en) | Selective thread spawning within a multi-threaded processing system | |
JP7490766B2 (ja) | 演算論理回路レジスタの順序付け | |
US20220300326A1 (en) | Techniques for balancing workloads when parallelizing multiply-accumulate computations | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
US11550584B1 (en) | Implementing specialized instructions for accelerating Smith-Waterman sequence alignments | |
US11822541B2 (en) | Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments | |
US20230101085A1 (en) | Techniques for accelerating smith-waterman sequence alignments | |
WO2022121275A1 (zh) | 处理器、多线程处理方法、电子设备以及存储介质 | |
US9542192B1 (en) | Tokenized streams for concurrent execution between asymmetric multiprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220623 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231102 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231102 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20231102 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240416 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240515 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7490766 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |