CN108009976A - 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) - Google Patents
用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) Download PDFInfo
- Publication number
- CN108009976A CN108009976A CN201610953514.8A CN201610953514A CN108009976A CN 108009976 A CN108009976 A CN 108009976A CN 201610953514 A CN201610953514 A CN 201610953514A CN 108009976 A CN108009976 A CN 108009976A
- Authority
- CN
- China
- Prior art keywords
- alu
- simd
- super
- instruction
- coupled
- 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
Links
- 239000013598 vector Substances 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 17
- OFFWOVJBSQMVPI-RMLGOCCBSA-N Kaletra Chemical compound N1([C@@H](C(C)C)C(=O)N[C@H](C[C@H](O)[C@H](CC=2C=CC=CC=2)NC(=O)COC=2C(=CC=CC=2C)C)CC=2C=CC=CC=2)CCCNC1=O.N([C@@H](C(C)C)C(=O)N[C@H](C[C@H](O)[C@H](CC=1C=CC=CC=1)NC(=O)OCC=1SC=NC=1)CC=1C=CC=CC=1)C(=O)N(C)CC1=CSC(C(C)C)=N1 OFFWOVJBSQMVPI-RMLGOCCBSA-N 0.000 claims abstract description 3
- 238000013500 data storage Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 3
- 238000009826 distribution Methods 0.000 claims description 2
- 238000007689 inspection Methods 0.000 claims description 2
- 230000004087 circulation Effects 0.000 description 21
- 238000003860 storage Methods 0.000 description 11
- 230000006399 behavior Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000000686 essence Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
- 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
-
- 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
-
- 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/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Abstract
本发明公开了一种超级单指令多数据(SIMD)计算结构以及一种在所述超级SIMD中执行指令的方法。所述超级SIMD结构能够执行来自单线程或多线程的一个以上指令,并且包括:多个向量通用寄存器(VGPR);第一算术逻辑单元(ALU),所述第一ALU耦合到所述多个VGPR;第二ALU,所述第二ALU耦合到所述多个VGPR;以及目的地缓存(Do$),其经由旁路和转发逻辑而耦合到所述第一ALU、所述第二ALU,且接收所述第一ALU和所述第二ALU的输出。所述Do$保存多个指令结果,以便扩展操作数旁路网络,从而节省读取和写入事务的电力。还公开了一种包括多个超级SIMD的计算单元(CU)和小CU。
Description
背景
目前不同尺度的图形处理单元(GPU)具有广泛范围的应用,从用于平板计算机到超级计算机集群。然而,对GPU架构(以及架构的CPU类型)的改进通常涉及以下潜在冲突的挑战:增加每硅区域单位的性能以及每瓦的性能。应用性能分析统计数据表明,虽然GPU计算单元中的大多数指令是乘法/加法(MAD)和乘法运算(MUL),但那些实质运算的硬件实施方案占用不到一半的算术逻辑单元(ALU)硅区域占用面积。
对于向量通用寄存器(VGPR)堆实施方案,具有单指令多数据(SIMD)架构的GPU计算单元可使用多个存储器块。一般来说,SIMD架构表示具有同时对多个数据点执行相同操作的多个处理元件的并行计算系统。SIMD处理器能够通过在给定时刻对单个进程(指令)执行同时(并行)计算来利用数据层级并行度。SIMD架构尤其适用于常见任务,比如调整数字图像中的对比度,或者调整数字音频的音量。
用于SIMD处理器中的存储器块可包括静态随机存取存储器块(SRAM),其可占用SIMD计算单元的多于30%的电力和区域。举例来说,在某些配置中,GPU计算单元可每四个循环发出一个SIMD指令。VGPR堆可在四个循环中提供4读-4写(4R4W),但性能分析数据还表明,当每个指令的平均读取数目是大约二时,未充分地利用VGPR带宽。由于ALU管线可深达多个循环且具有数个指令的等待时间,所以需要更充分地利用VGPR带宽。
对图式的简要描述
通过结合附图借助实例给出的以下描述,可得到更详细的理解,附图中:
图1A说明示例性SIMD结构;
图1B说明示例性超级SIMD结构;
图2说明超级SIMD块内部架构;
图3说明具有四个超级SIMD块、两个纹理单元、一个指令调度器和一个本地数据存储装置的示例性计算单元;
图4说明具有两个超级SIMD块、纹理单元、调度器和与L1缓存连接的本地数据存储装置(LDS)缓冲器的示例性计算单元;以及
图5说明在图1到4的计算单元中执行指令的方法;以及
图6是可在其中实施一个或多个公开的实施方案的示例性装置的框图。
详细描述
公开超级单指令多数据(SIMD)计算结构。所述超级SIMD结构能够执行来自单线程或多线程的一个以上指令,并且包括:多个向量通用寄存器(VGPR);第一算术逻辑单元(ALU),所述第一ALU耦合到所述多个VGPR;第二ALU,所述第二ALU耦合到所述多个VGPR;以及目的地缓存(Do$),其经由旁路和转发逻辑而耦合到所述第一ALU和所述第二ALU,且接收所述第一ALU和所述第二ALU的输出。所述第一ALU是完整ALU。所述第二ALU是核心ALU。Do$保存多个指令,以便扩展操作数旁路网络,从而节省读取和写入事务的电力。
还公开计算单元(CU)。所述CU包括多个超级单指令多数据执行单元(SIMD),每个超级SIMD包括:多个向量通用寄存器(VGPR),其被分成多组;多个第一算术逻辑单元(ALU),每个第一ALU耦合到一组所述多个VGPR;多个第二ALU,每个第二ALU耦合到一组所述多个VGPR;以及多个目的地缓存(Do$),每个Do$耦合到一个第一ALU和一个第二ALU,且接收所述一个第一ALU和所述一个第二ALU的输出。所述CU包括:多个纹理地址/纹理数据单元(TATD),其耦合到所述多个超级SIMD中的至少一者;指令调度器(SQ),其耦合到所述多个超级SIMD和所述多个TATD中的每一者;本地数据存储装置(LDS),其耦合到所述多个超级SIMD、所述多个TATD和所述SQ中的每一者;以及多个L1缓存,所述多个L1缓存中的每一者唯一地耦合到所述多个TATD中的一者。
还公开小计算单元(CU)。所述小CU包括两个超级单指令多数据(SIMD),每个超级SIMD包括:多个向量通用寄存器(VGPR),其被分成多组VGPR;多个第一算术逻辑单元(ALU),每个第一ALU耦合到一组所述多个GPR;多个第二ALU,每个第二ALU耦合到一组所述多个GPR;以及多个目的地缓存(Do$),每个Do$耦合到所述多个第一ALU中的一个第一ALU和所述多个第二ALU中的一个第二ALU,且接收所述一个第一ALU和所述一个第二ALU的输出。所述小CU包括:纹理单元(TATD),其耦合到超级SIMD;指令调度器(SQ),其耦合到所述超级SIMD和所述TATD中的每一者;本地数据存储装置(LDS),其耦合所述超级SIMD、所述TATD和所述SQ;以及L1缓存,其耦合到所述TATD。
公开一种在超级单指令多数据执行单元(SIMD)中执行指令的方法。所述方法包括:使用指令层级并行优化来产生指令;针对每个波使用PC来为超级SIMD分配波时隙;从最高优先级波选择VLIW2指令;读取超级SIMD中的多个向量操作数;检查多个目的地操作数缓存(Do$),且标记能够从Do$获取的所述操作数;调度寄存器堆且读取所述Do$以便执行VLIW2指令;以及针对选定波而更新PC。所述方法可包括为每个指令结果分配缓存线,且在所述分配需要更多缓存线的情况下停止并且快闪缓存。所述方法还可包括重复所述选择、所述读取、所述检查和所述标记、旨在执行的所述调度和所述读取以及所述更新,直到所有波都完成为止。
VLIW2包括较大指令字中的两个常规指令。波是波前,其包括被分组用于计算单元上的有效处理的64个或适当数目的工作项目的集合,其中每个波前共享单个程序计数器。
介绍一下,现代CPU设计是超标量的,且实现每个循环发出多个指令。这些设计具有复杂的故障,以及对于GPU来说不需要的寄存器重命名。举例来说,CPU SIMD通常每个循环4或8个操作,而GPU可为每个循环16、32或64个操作。一些GPU设计可具有多个寄存器缓存来高速缓冲来自多组寄存器堆的源操作数,并且包括编译器来执行寄存器分配。寄存器分配可以避免组冲突,并且提高寄存器高速缓冲性能。
在其中与即时目的地缓冲器或缓存一起添加旁路/转发网络的情形中,可节省VGPR读取。这开放了同时提供一个以上指令的输入数据的机会。在某些当前GPU架构中,每循环指令(IPC)率仅为每循环0.25个指令,且改进提供更好的整体性能。这些因素中的改进提供了以下机会:通过一起发出多个SIMD指令而增加IPC率。可将此方法界定为“超级SIMD架构”。此超级SIMD架构与GPU中的现有SIMD计算单元相比可具有电力/性能方面的显著优势。
图1A说明示例性SIMD块100。SIMD块100是提供并行执行单元的装置,所述并行执行单元遵循单个指令进行的次序。SIMD块100包括多组VGPR 110、N数目个并行ALU 120,其中N等于SIMD的宽度(图1A中示出一个SIMD的宽度)。举例来说,在作为SIMD 16的机器中,使用16个ALU 120。可使用若干多路复用器105来馈给多组VGPR 110。
SIMD块100包括多个VGPR 110。VGPR 110快速地操作数字处理单元(PU)(未示出)可用的可存取的位置。将来自较大存储器的数据加载到多个VGPR 110中,以便用于算术运算,且由机器指令操纵或测试。在一个实现方式中,多个VGPR 110包括保存由SIMD指令完成的向量处理的数据的VGPR。SIMD块100表示为示出四个VGPR 110a、b、c、d,但本领域技术人员将理解,可利用任何数目的VGPR。用于馈给VGPR 110a、b、c、d的四个多路复用器105a、b、c、d与四个VGPR 110a、b、c、d相关联。多路复用器105a、b、c、d从ALU 120且从向量IO块(未示出)接收输入。
举例来说,SIMD块100通过将一个或多个(例如,1到3个)VGPR 110读取为源操作数且将VGPR写入为目的地结果而执行ALU(VALU)操作的向量,其中向量大小是SIMD宽度。
将VGPR 110a、b、c、d的输出提供给操作数递送网络140。在一个实现方式中,操作数递送网络140包括交叉开关,且其它递送机构至少包括操作码指令的解码器。
操作数递送网络140将信号传播到算术逻辑单元(ALU)120。在一个实现方式中,ALU 120是完整ALU。ALU 220是组合数字电子电路,其对整数二进制和浮点数字执行算术和逐位操作。在一个实现方式中,将个别ALU进行组合以便形成VALU。ALU 120的输入是将被操作的数据(被称为操作数)、指示将执行的操作的代码,以及任选地,来自前一操作的状态信息。ALU 120的输出是所执行的操作的结果。
图1B说明示例性超级SIMD块200。超级SIMD 200是实现每mm2和每瓦更好的性能的经优化的SIMD。超级SIMD块200包括上文关于图1A所描述的多个VGPR 110。SIMD块200表示为示出四个VGPR 110a、b、c、d,但本领域技术人员将理解,可利用任何数目的VGPR。用于馈给VGPR 110a、b、c、d的四个多路复用器105a、b、c、d与四个VGPR 110a、b、c、d相关联。多路复用器105a、b、c、d可从目的地操作数缓存(Do$)250且从向量IO块(未示出)接收输入。
将VGPR 110a、b、c、d的输出提供给操作数递送网络240。在一个实现方式中,操作数递送网络240包括交叉开关,且其它递送机构至少包括操作码指令的解码器。操作数递送网络240操作以便提供除了图1A的操作数递送网络140所提供的信号之外的额外信号。
操作数递送网络240将信号传播到并联配置的一对ALU。所述对ALU包括第一ALU220和第二ALU 230。在一个实现方式中,第一ALU 220是完整ALU且第二ALU 230是核心ALU。在另一实施方案中,第一ALU 220和第二ALU 230表示包括完整ALU或核心ALU的同一类型的ALU。超级SIMD 200中的额外ALU(在图1B中具有两个ALU,与图1A中的一个ALU形成对比)提供执行特定操作码的能力,且使得超级SIMD 200能够从同一或不同波共同发出两个向量ALU指令(并行地执行)。“特定操作码”是由核心ALU执行的操作码,且可被称作“主要使用的操作码”或“基本操作码”为了理解且如下文进一步描述,旁侧ALU不具有乘法器,但旁侧ALU辅助实施非基本操作,比如转换指令。如下文将进一步描述,完整ALU是一起工作来执行包括复杂操作的操作的核心ALU与旁侧ALU的组合。波是波前,其包括基于SIMD的尺寸被分组用于计算单元上的有效处理的64个或适当数目的工作项目的集合,其中每个波前共享单个程序计数器。
超级SIMD 200是基于以下前提:GPU SIMD单元具有多个执行ALU单元220和230,且指令调度器能够从同一波或不同波发出多个ALU指令,从而充分利用ALU计算资源。
超级SIMD 200包括Do$250,其保存多达八个或更多ALU结果,以便向超级SIMD 200提供额外的源操作数,或者绕过多个VGPR 110以实现电力节省。ALU 220、230的结果传播到Do$250。Do$250经由操作数递送网络240而互连到ALU 220、230的输入。Do$250提供额外的操作数读取端口。Do$250保存多个指令,例如8个或16个先前的VALU指令结果,以便扩展操作数的旁路网络,从而节省读取和写入电力并且增加VGPR堆读取带宽。
软件和硬件共同工作以便发出指令(被称作共同发出)。编译器(未示出)执行指令层级并行调度,并且产生VLIW指令以供经由超级SIMD 200执行。在一个实现方式中,从硬件指令定序器(未示出)向超级SIMD 200提供指令,以便在一个波无法馈给ALU管线时从不同的波发出两个VALU指令。
如果超级SIMD 200是N宽SIMD,那么实施方案具有N数目的完整ALU,从而允许N个mul_add操作和其它操作,包括超越操作、比如移动和转换等非基本操作。通过使用图1A中所示的SIMD块100,可每个循环执行一个VALU操作。通过使用图1B的超级SIMD块200,其中一个超级SIMD中具有多种类型的ALU,每组可具有N个ALU,其中N是SIMD宽度。在某些实施方案中,N个ALU中的1/2、1/4或1/8使用具有多循环执行的超越ALU(T-ALU)来节省区域和成本。
可利用超级SIMD块200的若干常见实施方案。这些实施方案包括第一ALU 220和第二ALU 230两者都是完整ALU,第一ALU 220是完整ALU且第二ALU 230是核心ALU,或反之亦然,并且在用于第一ALU 220和第二ALU 230的第一块中利用一对核心ALU,在用于第一ALU220和第二ALU 230的下一块中利用一组旁侧ALU,且在用于第一ALU 220和第二ALU 230的最后一个块中利用一组T-ALU,而跨超级SIMD块200以交替的方式耦合多个超级SIMD块200。
举另一实例,且为了提供额外的细节,在图2中说明超级SIMD块200的一个实施方案,其中第一ALU 220是完整ALU且第二ALU 230是核心ALU。图2说明超级SIMD块架构300。超级SIMD 300包括VGPR数据写入选择器310,其从纹理单元(图2中未示出)、波初始化单元(图2中未示出)和本地数据共享(LDS)单元(图2中未示出)中的至少一者接收数据。选择器310将数据输入提供到RAM 320(在图1B中示出为110)中,所述RAM继而输出到读取交叉开关330,所述读取交叉开关输出到一组源操作数浮点运算器(flop)340。浮点运算器340输出到交叉开关350,其中数据随后前进到执行单元360和目的地缓存单元(Do$)370。交叉开关350输出到向量输入/输出块,且随后输出到纹理单元(图2中未示出)、LDS单元(图2中未示出)和色彩缓冲器导出单元(图2中未示出)。Do$370与图1B的Do$240一致。交叉开关330、源操作数浮点运算器340、多路复用器346、347、348、349和交叉开关350是操作数递送网络240(图1B中示出)中的组件。
超级SIMD块300包括VGPR存储RAM 320。RAM 320可被配置为RAM群组,其包括四组RAM320a、320b、320c、320d。每组RAM 320可包括M×N×W位数据,其中M是RAM的字线的数目,N是SIMD的线程的数目,w是ALU位宽度,VGPR保存N×W位数据,VGPR的所述四组保存4×M数目的VGPR,且典型配置可为64×4×32位,其可保存4个线程VGPR上下文直到64数目个条目,其中每个线程使用32位,VGPR在此实施方案中含有4×32位数据。
超级SIMD块300包括向量执行单元360。每个向量执行单元360包括两组核心ALU362a、362b和一组旁侧ALU 365,每一者具有等于SIMD宽度的N数目的ALU。核心ALU 362a可与旁侧ALU 365耦合,以便形成完整ALU 367。完整ALU 367是图1B的第二ALU 230。核心ALU 362b是图1B的第一ALU 220。
在一个实现方式中,核心ALU362a、362b具有Nx个多路复用器来实施所有特定单精度浮点操作,比如融合乘-加(FMA)。在一个实现方式中,旁侧ALU 365不具有乘法器,而是可以帮助实施所有非基本操作,比如转换指令。旁侧ALU 365可以与任何一个核心ALU362a、362b共同工作,以便完成比如超越指令等复杂操作。
部署Do$370来提供充足的寄存器读取端口,以便在最大速度下每个循环提供两个SIMD4(4宽SIMD)指令。
举例来说,在单指令数据流中,RAM 320的组提供寄存器堆,其中每个寄存器堆保存N线程的数据。在VGPR上下文中总共存在N*R个线程,其中R是行结点的数目,且可从1到许多,常常被称作行结点0线程[0:N-1]、行结点1线程[0:N-1]、行结点2线程[0:N-1]和行结点3线程[0:N-1]到行结点R[0:N-1]。
传入的指令如下所示:
V0=V1*V2+V3(MAD_F32指令)。
超级SIMD块300请求完成MUL_ADD的N*Rr个线程,超级SIMD块300执行以下各者:
循环0:行结点0的V0=行结点0的V1*行结点0的V2+行结点0的V3
循环1:行结点1的V0=行结点1的V1*行结点1的V2+行结点1的V3
循环2:行结点2的V0=行结点2的V1*行结点2的V2+行结点2的V3
循环3:行结点3的V0=行结点3的V1*行结点3的V2+行结点3的V3
循环R:行结点R的V0=行结点R的V1*行结点R的V2+行结点R的V3。
超级SIMD块300包括VGPR读取交叉开关330以便在4个循环内读取所有12个操作数,并且写入到一组源操作数浮点运算器340。在一个实现方式中,每个操作数是32位乘4。源操作数浮点运算器340包括行结点0源操作数浮点运算器341、行结点1源操作数浮点运算器342、行结点2源操作数浮点运算器343和行结点3源操作数浮点运算器144。在一个实现方式中,每个行结点(行结点0、行结点1、行结点2、行结点3)包括第一浮点运算器Src0、第二浮点运算器Src1、第三浮点运算器Src2和第四浮点运算器Src3。
向量执行单元360源操作数输入交叉开关355将来自源操作数浮点运算器340的所需的操作数递送到核心ALU 362a、362b,对于循环0,它将执行行结点0的N个线程输入,循环1则执行行结点1的,随后是行结点2以及行结点3直到行结点R。
在ALU管线延迟之后,执行对目的地操作数缓存(Do$)370的写入。在一个实现方式中,延迟是4个循环。在一个实现方式中,所述写入包括持续4个循环的每个循环128位。
可在第一操作之后的R个循环发出下一指令。如果下一指令是V4=MIN_F32(V0,V5),举例来说,那么指令调度器检查Do$370的标签,且如果所述指令是前一指令的输出,指令调度器可以取得Do$370上的命中。在此情形中,所述指令调度器调度来自Do$370的输出,而不是调度来自RAM 320的VGPR读取。在一个实现方式中,MIN_F32不是特定操作码,随后其将在旁侧ALU 365处执行,所述旁侧ALU共享来自核心ALU 362a、362b的输入。如果下一指令是比如RCP_F32等超越操作,那么在一个实现方式中,可在旁侧ALU 365处将其执行为V6=RCP_F32(V7)。如果V7不在Do$370中,那么从Src0浮点运算器340递送V7,且将其路由到核心ALU 362a、362b和旁侧ALU 365。
超级SIMD块300支持每个指令发出周期中的两个共同发出的向量ALU指令,或一个向量ALU和一个向量IO指令。然而,寄存器读取端口冲突,且与功能单元的冲突限制了共同发出的机会(即,每个指令发出周期中的两个共同发出的向量ALU指令,或所述周期中的一个向量ALU和一个向量IO指令)。当从同一存储器块同时读取两个指令时,发生读取端口冲突。当同一类型的两个指令试图使用单个功能单元(例如,MUL)时,发生功能单元冲突。
如果出现以下情况,那么功能单元冲突会限制两个向量指令的发出:(1)两个指令正在执行由核心ALU 362a、362b执行的特定操作码或(2)一个指令正在执行由核心ALU362a、362b执行的特定操作码,且另一指令使用旁侧ALU 365。特定操作码是由核心ALU362a、362b执行的操作码。一些操作需要两个核心ALU 362a、362b,从而允许一次发出一个向量指令。核心ALU(示出为362a)可与旁侧ALU 365组合,以便操作为图1B中所示的完整ALU367。一般来说,旁侧ALU和核心ALU具有不同的功能,且可在旁侧ALU或核心ALU中执行指令。存在可使用一起工作的旁侧ALU和核心ALU的一些指令,一起工作的旁侧ALU和核心ALU是完整ALU。
存储RAM 320和读取交叉开关330提供每个循环四个操作数(N*W位),向量源操作数交叉开关350递送与从Do$370读取的操作数组合的达6个操作数,以便支持各自具有3个操作数的两个向量操作。
计算单元可具有3个不同的向量ALU指令,三个像MAD_F32一样的操作数,两个像ADD_F32一样的操作数和一个像MOV_B32一样的操作数。指令名称MUL#、ADD#和MOV#之后的数字是以位计的操作数的大小。位的数目可包括16、32、64和类似者。MAD执行d=a*b+c且每个操作需要3个源操作数。ADD执行a+b且每个操作需要2个源操作数。MOC执行d=c且每个操作需要1个操作数。
对于在核心ALU 362a处执行的向量ALU指令,源A来自Src0Mux 346输出或Do$370,源B(如果这是3操作数或2操作数指令)来自Src0Mux 346输出、Src1Mux 347输出或Do$370,且源C(如果这是3操作数指令)来自Src0Mux 346输出、Src1Mux 347输出、Src2Mux 348输出或Do$370。
对于在核心ALU 362b处执行的向量ALU指令,源A来自Src1Mux 347输出、Src2Mux348输出、Src3Mux 349输出或Do$370,源B(如果这是3操作数或2操作数指令)来自Src2Mux348输出、Src3Mux 349输出或Do$370,且源C(如果这是3操作数指令)来自Src3Mux 349输出或Do$370。
如果发出具有较高向量寄存器堆存取优先级的向量IO(纹理获取、lds(本地数据共享)操作或像素色彩和顶点参数导出操作)指令,那么向量IO可能需要来自src2Mux 348、src3Mux 349或src0Mux 346和src1Mux 347的操作数输出结果,进而阻挡与那些VGPR递送路径冲突的向量ALU指令。
如上文所描述,图2示出超级SIMD块200的一个实施方案,其中第一ALU 220是完整ALU且第二ALU 230是核心ALU。然而,已经出于清楚起见而从图2移除了若干多路复用器(MUX),以便清楚地示出超级SIMD的操作和实施方案。可在设计中包括MUX以便累加作为输入的信号,并且选择输入信号中的一者或多者作为输出信号进行转发。
在图3中说明基于超级SIMD的计算单元400,其具有四个超级SIMD200a、b、c、d、两个TATD 430a、b、一个指令调度器410,和一个LDS 220。每个超级SIMD被描绘为图1B中所描述的超级SIMD 300,并且可具有图2的实例中所示的配置。出于完整起见,超级SIMD 200a包括ALU单元220和230以及VGPR 110a、b、c、d。超级SIMD 200a可具有Do$250来提供额外的操作数读取端口。Do$250保存多个(典型值可能是每个循环8个或16个指令)指令的目的地数据以便扩展操作数的旁路网络,从而节省主要VGPR 110读取和写入电力。超级SIMD 200a是实现每mm2和每瓦更好的性能的经优化SP(SIMD对)。超级SIMD 200b、c、d可类似于超级SIMD200a而构建。此构建可包括相同的ALU配置,或者可选地在某些实施方案中,可包括在本文被论述为可选择的其它类型的ALU配置。
结合超级SIMD 200a、b、c、d,基于超级SIMD的计算单元400可包括SQ 410、ILDS420、与两个L1缓存440a、b(还被称作TCP)互连的两个纹理单元430a、b。LDS 420可基于目标应用而利用64k或128k或适当大小的32组。L1缓存440可为16k或适当大小的缓存。
基于超级SIMD的计算单元400可将同一ALU提供给在典型计算单元中找到的纹理比率,同时实现更好的L1性能440。基于超级SIMD的计算单元400可提供类似性能水平,其中与SIMD(图1A中示出为100)两个计算单元相比,具有潜在更少的区域节省。基于超级SIMD的计算单元400还可包括128k LDS,其具有相对小的区域开销,以便实现启用更多波的改进的VGPR溢出和填充。
Do$250存储最近的ALU结果,所述结果可能被重新用作下一指令的源操作数。取决于性能和成本要求,Do$250可保存8个到16个或更多的ALU目的地。波可共享同一Do$250。可预期SQ 410保存来自最老的波的发出指令。Do$250的每个条目可具有带字段的标签。所述字段可包括:(1)用于每个小道的有效位和写入启用信号;(2)VGPR目的地地址;(3)已经写入到主要VGPR的结果;(4)年龄计数器;以及(5)参考计数器。当SQ 410调度VALU指令时,可以分配来自操作数缓存的条目来保存ALU目的地。此条目可为:(1)不保存有效数据的时隙;(2)具有有效数据且已经写入到主要VGPR的时隙;以及(3)具有同一VGPR目的地的有效时隙。年龄计数器可提供关于条目的年龄的信息。参考计数器可提供关于将此值用作源操作数的次数的信息。
不需要在每个循环将VALU目的地写入到主要VGPR,因为Do$250可提供针对写入和写入情况(例如用于累加MUL-ADD的那些中间结果)跳过写入的能力。当所有条目保存数据是有效且存在未写回的数据时,条目可写回到主要VGPR,且此条目是最老和最少参考的数据。当SQ 410不能找到用于保存下一发出的指令结果的条目时,其可发出冲洗操作来将特定条目或所有条目冲洗回到主要VGPR。非ALU操作Do$250之间的同步可以能够馈给用于LDS420存储装置、纹理存储装置以及色彩和属性导出的源。非ALU写入可直接写入到主要VGPR,可使与目的地匹配的Do$250的任何条目无效。
图4说明具有两个超级SIMD 500a、b、纹理单元530、调度器510和与L1缓存540连接的LDS 520的小计算单元500。每个超级SIMD 500a、b的组件部分可如上文关于图1B的超级SIMD以及图2中所示的特定实例和图3的超级SIMD所描述。在小计算单元500中,两个超级SIMD 500a、b取代四个单发出SIMD。在CU 500中,ALU与纹理的比率可与已知的计算单元一致。每个波的每循环指令(IPC)可得到提高,并且32KB VGPR可能会需要减少的波。CU 500还可以实现SQ 510和LDS 520的较低成本的版本。
图5说明例如在图1B到4的示例性装置中执行指令的方法600。方法600包括在步骤610处指令层级并行优化来产生指令。在步骤620处,针对每个波使用程序计数器(PC)来为SIMD分配波时隙。在步骤630处,指令调度器从最高优先级波选择一个VLIW2指令,或者基于优先级从两个波选择两个单个指令。在步骤640处在超级SIMD中读取选定指令的向量操作数。在步骤650处,编译器为每个指令分配缓存线。在步骤655处,如果装置无法分配必需的缓存线,那么任选地发生停止,且在所述停止期间,快闪额外的缓存。在步骤660处,检查目的地操作数缓存,并且标记可以从Do$获取的操作数。在步骤670处,调度寄存器堆,读取Do$且执行指令。在步骤680处,调度器针对选定波而更新PC。步骤690提供步骤630到步骤680的循环,直到所有波完成为止。
图6是可在其中实施一个或多个公开的实施方案的示例性装置700的框图。装置700可包括(例如)计算机、游戏装置、手持装置、机顶盒、电视机、移动电话或平板计算机。装置700包括处理器702、存储器704、存储装置706、一个或多个输入装置708和一个或多个输出装置710。装置700还可任选地包括输入驱动器712和输出驱动器714。应理解,装置700可包括图6中未示出的额外组件。
处理器702可包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一裸片上的CPU和GPU,或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。存储器704可位于与处理器702相同的裸片上,或者可与处理器702分开地定位。存储器704可包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM,或缓存。
存储装置706可包括固定或可移除的存储装置,例如硬盘驱动器、固态驱动器、光盘,或闪存驱动器。输入装置708可包括键盘、小键盘、触摸屏、触摸垫、检测器、麦克风、加速度计、陀螺仪、生物扫描仪,或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出装置710可包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线,或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器712与处理器702和输入装置708通信,并且准许处理器702从输入装置708接收输入。输出驱动器714与处理器702和输出装置710通信,并且准许处理器702将输出发送到输出装置710。应注意,输入驱动器712和输出驱动器714是任选的组件,且在不存在输入驱动器712和输出驱动器714的情况下,装置700将以相同的方式操作。
应理解,基于本文公开内容,许多变化是可能的。虽然特征和元件在上文以特定组合进行描述,但是每个特征或元件可以在不具有其它特征和元件的情况下单独使用,或者在具有或不具有其它特征和元件的情况下以各种组合来使用。
可以在通用计算机、处理器或处理器核心中实施所提供的方法。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心联合的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。可通过使用经处理的硬件描述语言(HDL)指令的结果以及包括网表的其它中间数据(所述指令能够存储在计算机可读媒体上)来配置制造过程而制造所述处理器。所述处理的结果可为集成电路布图设计,其随后用于半导体制造过程中来制造实施本文公开的功能的处理器。
本文提供的方法或流程图可实施于计算机程序、软件或固件中,其并入非暂时性计算机可读存储媒体中以供通用计算机或处理器执行。非暂时性计算机可读存储媒体的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储装置、磁性媒体,例如内部硬盘和可装卸盘、磁光媒体,以及光学媒体,例如CD-ROM盘和数字多功能盘(DVD)。
Claims (20)
1.一种超级单指令多数据(SIMD),所述超级SIMD结构能够执行来自单线程或多线程的一个以上指令,所述超级单指令多数据包括:
多个向量通用寄存器(VGPR);
第一算术逻辑单元(ALU),所述第一ALU耦合到所述多个VGPR;
第二ALU,所述第二ALU耦合到所述多个VGPR;以及
目的地缓存(Do$),其经由旁路和转发逻辑而耦合到所述第一ALU和所述第二ALU,且接收所述第一ALU和所述第二ALU的输出。
2.如权利要求1所述的超级SIMD,其中所述第一ALU是完整ALU。
3.如权利要求1所述的超级SIMD,其中所述第二ALU是核心ALU。
4.如权利要求3所述的超级SIMD,其中所述核心ALU能够执行特定操作码。
5.如权利要求1所述的超级SIMD,其中所述Do$保存多个指令结果,以便扩展操作数旁路网络,从而节省读取和写入事务的电力。
6.一种计算单元(CU),所述CU包括:
多个超级单指令多数据执行单元(SIMD),每个超级SIMD包括:
多个向量通用寄存器(VGPR),其被分成多组;
多个第一算术逻辑单元(ALU),每个第一ALU耦合到一组所述多个VGPR;
多个第二ALU,每个第二ALU耦合到一组所述多个VGPR;以及
多个目的地缓存(Do$),每个Do$耦合到一个第一ALU和一个第二ALU,且接收所述一个第一ALU和所述一个第二ALU的输出;
多个纹理单元(TATD),其耦合到所述多个超级SIMD中的至少一者;
指令调度器(SQ),其耦合到所述多个超级SIMD和所述多个TATD中的每一者;
本地数据存储装置(LDS),其耦合到所述多个超级SIMD、所述多个TATD和所述SQ中的每一者;以及
多个L1缓存,所述多个L1缓存中的每一者唯一地耦合到所述多个TATD中的一者。
7.如权利要求6所述的CU,其中所述多个第一ALU包括四个ALU。
8.如权利要求6所述的CU,其中所述多个第二ALU包括十六个ALU。
9.如权利要求6所述的CU,其中所述多个Do$保存十六个ALU结果。
10.如权利要求6所述的CU,其中所述多个Do$保存多个指令结果,以便扩展操作数旁路网络,从而节省读取和写入事务的电力。
11.一种小计算单元(CU),所述CU包括:
两个超级单指令多数据(SIMD),每个超级SIMD包括:
多个向量通用寄存器(VGPR),其被分成多组VGPR;
多个第一算术逻辑单元(ALU),每个第一ALU耦合到一组所述多个GPR;
多个第二ALU,每个第二ALU耦合到一组所述多个GPR;以及
多个目的地缓存(Do$),每个Do$耦合到所述多个第一ALU中的一个第一ALU和所述多个第二ALU中的一个第二ALU,且接收所述一个第一ALU和所述一个第二ALU的输出;
纹理地址/纹理数据单元(TATD),其耦合到所述超级SIMD;
指令调度器(SQ),其耦合到所述超级SIMD和所述TATD中的每一者;
本地数据存储装置(LDS),其耦合所述超级SIMD、所述TATD和所述SQ;以及
L1缓存,其耦合到所述TATD。
12.如权利要求11所述的小CU,其中所述多个第一ALU包括完整ALU。
13.如权利要求11所述的小CU,其中所述多个第二ALU包括核心ALU。
14.如权利要求13所述的小CU,其中所述核心ALU能够执行特定操作码。
15.如权利要求11所述的小CU,其中所述多个Do$保存十六个ALU结果。
16.如权利要求11所述的小CU,其中所述多个Do$保存多个指令结果,以便扩展操作数旁路网络,从而节省读取和写入电力。
17.一种在超级单指令多数据执行单元(SIMD)中执行指令的方法,所述方法包括:
使用指令层级并行优化来产生指令;
针对每个波使用PC来为所述超级SIMD分配波时隙;
从最高优先级波选择VLIW2指令;
读取所述超级SIMD中的多个向量操作数;
检查多个目的地操作数缓存(Do$)且标记能够从Do$获取的所述操作数;
调度寄存器堆且读取所述Do$以便执行所述VLIW2指令;以及
针对选定波而更新所述PC。
18.如权利要求17所述的方法,其进一步包括为每个指令结果分配缓存线。
19.如权利要求18所述的方法,其进一步包括在所述分配需要更多缓存线的情况下停止并且快闪缓存。
20.如权利要求17所述的方法,其中重复所述选择、所述读取、所述检查和所述标记、旨在执行的所述调度和所述读取以及所述更新,直到所有波都完成为止。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610953514.8A CN108009976A (zh) | 2016-10-27 | 2016-10-27 | 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) |
US15/354,560 US20180121386A1 (en) | 2016-10-27 | 2016-11-17 | Super single instruction multiple data (super-simd) for graphics processing unit (gpu) computing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610953514.8A CN108009976A (zh) | 2016-10-27 | 2016-10-27 | 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108009976A true CN108009976A (zh) | 2018-05-08 |
Family
ID=62021450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610953514.8A Pending CN108009976A (zh) | 2016-10-27 | 2016-10-27 | 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180121386A1 (zh) |
CN (1) | CN108009976A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020172988A1 (en) * | 2019-02-28 | 2020-09-03 | Huawei Technologies Co., Ltd. | Shader alu outlet control |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353708B2 (en) | 2016-09-23 | 2019-07-16 | Advanced Micro Devices, Inc. | Strided loading of non-sequential memory locations by skipping memory locations between consecutive loads |
CN109032668B (zh) * | 2017-06-09 | 2023-09-19 | 超威半导体公司 | 具有高带宽和低功率向量寄存器堆的流处理器 |
US11321604B2 (en) | 2017-06-21 | 2022-05-03 | Arm Ltd. | Systems and devices for compressing neural network parameters |
US11275996B2 (en) * | 2017-06-21 | 2022-03-15 | Arm Ltd. | Systems and devices for formatting neural network parameters |
US10346055B2 (en) * | 2017-07-28 | 2019-07-09 | Advanced Micro Devices, Inc. | Run-time memory access uniformity checking |
US10699366B1 (en) | 2018-08-07 | 2020-06-30 | Apple Inc. | Techniques for ALU sharing between threads |
US11630667B2 (en) * | 2019-11-27 | 2023-04-18 | Advanced Micro Devices, Inc. | Dedicated vector sub-processor system |
US11675568B2 (en) * | 2020-12-14 | 2023-06-13 | Advanced Micro Devices, Inc. | Dual vector arithmetic logic unit |
US11200060B1 (en) * | 2020-12-23 | 2021-12-14 | Advanced Micro Devices, Inc. | Broadcast synchronization for dynamically adaptable arrays |
US20230097279A1 (en) * | 2021-09-29 | 2023-03-30 | Advanced Micro Devices, Inc. | Convolutional neural network operations |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
WO1997024661A1 (en) * | 1995-12-28 | 1997-07-10 | Intel Corporation | Apparatus for concurrent processing of pipelined instructions having register dependencies |
WO1998006030A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems | Multifunctional execution unit |
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US6000016A (en) * | 1997-05-02 | 1999-12-07 | Intel Corporation | Multiported bypass cache in a bypass network |
US9477482B2 (en) * | 2013-09-26 | 2016-10-25 | Nvidia Corporation | System, method, and computer program product for implementing multi-cycle register file bypass |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774583B1 (en) * | 2006-09-29 | 2010-08-10 | Parag Gupta | Processing bypass register file system and method |
-
2016
- 2016-10-27 CN CN201610953514.8A patent/CN108009976A/zh active Pending
- 2016-11-17 US US15/354,560 patent/US20180121386A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
WO1997024661A1 (en) * | 1995-12-28 | 1997-07-10 | Intel Corporation | Apparatus for concurrent processing of pipelined instructions having register dependencies |
WO1998006030A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems | Multifunctional execution unit |
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US6000016A (en) * | 1997-05-02 | 1999-12-07 | Intel Corporation | Multiported bypass cache in a bypass network |
US9477482B2 (en) * | 2013-09-26 | 2016-10-25 | Nvidia Corporation | System, method, and computer program product for implementing multi-cycle register file bypass |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020172988A1 (en) * | 2019-02-28 | 2020-09-03 | Huawei Technologies Co., Ltd. | Shader alu outlet control |
Also Published As
Publication number | Publication date |
---|---|
US20180121386A1 (en) | 2018-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009976A (zh) | 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) | |
US6816961B2 (en) | Processing architecture having field swapping capability | |
JP4277042B2 (ja) | 演算処理装置 | |
US7124160B2 (en) | Processing architecture having parallel arithmetic capability | |
US7457941B2 (en) | Vector processing system | |
US9405538B2 (en) | Functional unit having tree structure to support vector sorting algorithm and other algorithms | |
US7457938B2 (en) | Staggered execution stack for vector processing | |
US9141386B2 (en) | Vector logical reduction operation implemented using swizzling on a semiconductor chip | |
CN107430507A (zh) | 配置成使用改变元素宽度的指令对可变长度向量进行操作的向量处理器 | |
CN110233721A (zh) | Sm4加速处理器、方法和系统 | |
US20140032828A1 (en) | System, method, and computer program product for copying data between memory locations | |
US20220206796A1 (en) | Multi-functional execution lane for image processor | |
US10719295B2 (en) | Circuit to perform dual input value absolute value and sum operation | |
US9678716B2 (en) | Apparatus and method for performing absolute difference operation | |
EP3326060B1 (en) | Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements | |
CN110321165A (zh) | 复数向量融合乘加和复数向量乘法的高效实现 | |
CN109992243A (zh) | 用于矩阵操作的系统、方法和装置 | |
US7558816B2 (en) | Methods and apparatus for performing pixel average operations | |
US20180217844A1 (en) | Method and apparatus for asynchronous scheduling | |
US20030154361A1 (en) | Instruction execution in a processor | |
US10001994B2 (en) | Data processing apparatus and method for performing scan operations omitting a further step |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180508 |