CN101055644B - 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 - Google Patents
绘图处理装置及其处理指令、数据和逻辑单元操作的方法 Download PDFInfo
- Publication number
- CN101055644B CN101055644B CN2007100067567A CN200710006756A CN101055644B CN 101055644 B CN101055644 B CN 101055644B CN 2007100067567 A CN2007100067567 A CN 2007100067567A CN 200710006756 A CN200710006756 A CN 200710006756A CN 101055644 B CN101055644 B CN 101055644B
- Authority
- CN
- China
- Prior art keywords
- instruction
- related data
- data
- logical block
- alus
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000010977 unit operation Methods 0.000 title description 2
- 238000013507 mapping Methods 0.000 title 1
- 230000011664 signaling Effects 0.000 title 1
- 230000008569 process Effects 0.000 claims abstract description 27
- 238000004040 coloring Methods 0.000 claims description 21
- 238000006073 displacement reaction Methods 0.000 claims description 11
- 101000911390 Homo sapiens Coagulation factor VIII Proteins 0.000 claims description 4
- 102000057593 human F8 Human genes 0.000 claims description 4
- 229940047431 recombinate Drugs 0.000 claims description 4
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims 1
- 238000012805 post-processing Methods 0.000 abstract 2
- 238000007781 pre-processing Methods 0.000 abstract 2
- 230000006870 function Effects 0.000 description 6
- 238000010276 construction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor 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
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种绘图处理装置以于多个算术逻辑单元中处理指令及数据。此装置包括:多个算术逻辑单元,以平行处理独立的指令。预处理逻辑单元,以由一暂存盘接收指令及相关数据,其中所接收的指令及相关数据指示由所述多个算术逻辑单元其中之一处理,该预处理逻辑单元选择性地格式化所接收指令及相关数据,用以传送格式化后的指令及相关数据至所述多个算术逻辑单元。此外,还有后处理逻辑单元,接收所述算术逻辑单元输出的数据,选择性地格式化所述多个算术逻辑单元输出的数据,以将格式化后的所述多个算术逻辑单元输出的数据传送及写回至该暂存盘,使其对该暂存盘而言如通过一单一算术逻辑单元输出数据。
Description
技术领域
本发明涉及一种绘图处理装置,特别是涉及多个算术逻辑单元中处理指令及数据的绘图处理装置。
背景技术
管线计算或处理结构为众所周知,而此类管线结构随深度(例如:管线阶层数量)而不同。许多管线结构包括五个基本管线阶层:(1)读取、(2)译码、(3)执行、(4)存储器存取、以及(5)写回阶层。这些阶层的一般操作为人所熟知。
请参考图1,图1示出了此一基本管线结构的部份。具体地,如图1所示的一暂存盘12及一算术逻辑单元(ALU)14。一管线结构的执行阶层包括一个或多个处理单元(例如:一算术逻辑单元),用以实现与指令相关的处理操作。图1的算术逻辑单元14以不同虚线表示多个操作周期(例如:时序周期)。
关于该暂存盘12,众所皆知,是由系统存储器撷取数据至一“暂存盘”,其为一高速存储区,被配置为缓存器。当数据于该暂存盘12中时,通常可于一单一时序周期中,被任一管线阶层(例如:读取、执行等)单元撷取。该暂存文件12亦于图1的底部附近(于虚线处)描述,以表示由该执行阶层至该暂存盘12的数据写回传送。为简化说明,其它管线阶层并未被描述。
众所皆知,为改善多维运算的效能,已开发单指令、多数据(SIMD)的结构。一典型单指令多数据(SIMD)结构使一指令能同时操作几个操作数。尤其,单指令多数据(SIMD)结构具有可将一些数据组件汇整至一缓存器或存储器位置的优点。通过硬件平行执行,可以一指令执行许多操作,通过减少程序的大小及控制,达到显著的效能改善及硬件的简化。某些单指令多数据(SIMD)结构乃运作于在不同操作数中能被平行且独立地执行的组件。
现在参考图2,类似于图1结构的方块图,示出了多个算术逻辑单元16、18、20、及22。此一高效能结构应用于许多单指令多数据(SIMD)结构中。对此一结构的高效能操作而言,数据被排序于该暂存盘12中,可使在相同时序周期的操作数(或者其它相关数据)立即地被加载(平行)至各种算术逻辑单元。
尽管通过图2结构可了解改善的效能,然而仍需针对此结构更进一步地改善。
发明内容
有鉴于此,本发明提供一种于多个算术逻辑单元中用以执行处理操作的全新方法及装置。根据一实施例所提供的一绘图处理装置,此装置包括:多个算术逻辑单元,接收指令及相关数据,被配置以平行处理相关的数据;预处理逻辑单元,被配置以由一暂存盘接收指令及相关数据,其中所接收的指令及相关数据指示由所述多个算术逻辑单元其中之一处理,该预处理逻辑单元被配置以格式化所接收的指令及相关数据,用以传送格式化后的指令及相关数据至所述多个算术逻辑单元;以及后处理逻辑单元,被配置以接收所述多个算术逻辑单元输出的数据,该后处理逻辑单元被配置以格式化所述多个算术逻辑单元输出的数据,以将格式化后的所述多个算术逻辑单元输出的数据传送及写回至该暂存盘,使其对该暂存盘而言如通过一单一算术逻辑单元输出数据。
于另一实施例中,一种绘图处理装置包括:一暂存盘、逻辑单元用以管理多个执行绪、以及多个算术逻辑单元。该实施例还进一步包括数据配置逻辑单元,于一第一处理模式中,配置与一特定执行绪有关的暂存盘的连序数据,以依序传送至所述算术逻辑单元其中之一,于一第二处理模式中,配置与一特定执行绪有关的暂存盘的连序数据,以依序传送至不同的所述多个算术逻辑单元。
又于另一实施例中,提供一种用于处理多个算术逻辑单元(ALUs)操作的方法,该方法包括:由一暂存盘撷取一指令及相关数据;决定一操作模式;当确定该模式为一水平模式时,直接将该撷取指令及相关数据传送至所述多个算术逻辑单元。该方法还进一步包括当确定该操作模式为一垂直模式时,将该撷取指令及相关数据重新格式化,因此,最初被格式化以传送至邻近所述算术逻辑单元的项目被重新格式化,接着将重新格式化的指令及相关数据传送至对应的所述多个算术逻辑单元。
于另一实施例中,提供一种用于处理指令及数据的方法。该方法由一暂存盘接收指令及相关数据,并为已接收的指令及相关数据决定两模式中何者为有效。该方法进一步于一水平模式有效时,直接将该指令及相关数据传送至多个算术逻辑单元处理,而不需重组,并且于一垂直模式有效时,重组该指令及相关数据,以及将该指令及数据传送至所述多个算术逻辑单元处理。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并结合附图详细说明如下。
附图说明
图1示出了已知技术的一管线处理器结构的部份方块图;
图2类似于图1结构的方块图,示出了已知技术的多个算术逻辑单元,用以平行处理指令和/或相关数据;
图3A及3B示出了依据本发明实施例的一结构的组件方块图;
图4示出了依据本发明实施例的一结构的组件方块图;
图5示出了依据本发明实施例的执行高阶操作流程图;
图6示出了依据本发明实施例的一结构的组件方块图;
图7A及7B示出了依据本发明另一实施例的一结构的组件方块图。
附图符号说明
112~暂存文件; 150~指示逻辑单元;
132~移位及延迟; 130~预处理逻辑单元;
140~后处理逻辑单元; 112~暂存文件(写回);
116、118、120、122~算术逻辑单元(ALUs)。
具体实施方式
现在结合附图对实施例详细说明。结合附图所说明的实施例,并非用以限制所披露的该实施例或其它实施例。反之,是用以包括所有的选择、变更、及替代。
于本发明实施例的叙述过程中,当各相关数据(例如:操作数)已于算术逻辑单元(ALUs)中同时平行处理时,往往可得到更有效地处理某些指令(SIMD或其它指令)的结果。而且部分内容还提到,当相关数据同时位于单一算术逻辑单元(ALU)处理时,整体的计算效能亦获得更进一步的改善。在单一结构或应用导向的实例里,于计算机绘图领域中,通常当相关数据在平行的算术逻辑单元(ALUs)中处理时,通过绘图硬件(例如:一几何加速器)所执行的某些运算能更有效地执行,然而其它计算可能仅需通过一单一算术逻辑单元(ALU)即能更有效地处理。更具体的说,不难发现在某些例子中,当设计成相关数据乃在平行算术逻辑单元(ALUs)中处理时,许多几何着色程序(geometry shader program)的操作可更有效率,而在某些例子中,当设计成相关数据乃在一单一算术逻辑单元(ALU)中处理时,某些像素着色程序的执行效率亦可获得提升。
本发明实施例所提供的结构及方法适合处理两种类型:其一为于多个平行的算术逻辑单元(ALUs)中以共同方式处理指令及相关数据,而另一为于一单一算术逻辑单元(ALU)中处理指令及相关数据。至于所使用的名称,通常以“水平”或“水平处理”描述,于多个算术逻辑单元(ALUs)中,处理指令及相关数据系采共同方式,而“垂直”及“垂直处理”将被用以描述,于一单一算术逻辑单元(ALU)中,处理指令及相关数据系采一连串或连续方式。应当了解到“水平”或“垂直”并未具有特殊或特别的含意,而仅用于方便描述本发明实施例的不同结构及处理模式。
进一步地说明,本发明实施例还明确地提供有关于指令及相关数据动态重新配置及动态处理的结构及方法,因此,指令及相关数据可利用相同的硬件以一水平方式或垂直方式处理。藉由提供此类实施例而减少硬件的数量(例如:额外的算术逻辑单元(ALUs)及控制逻辑单元),而藉由以不同处理模式处理不同类型的指令及算法改善速度及效能。于2006年4月19日提出的美国专利申请11/406,543中,是披露于计算机绘图硬件场合中的此一常用(例如:环境)结构,于此作为参考文件。而该申请提及,欲由一组执行单元端口进行共同操作,该单组执行单元端口必须具有进行各种着色程序的处理能力,这些着色程序包括:顶点着色程序(vertex shader program)、几何着色程序(geometry shader program)、以及像素着色程序(pixel shaderprogram)。且该申请还进一步提及,将该组执行单元端口的资源分配至各种着色程序可达到将整体管线效能最大化的效果(或者将于任一着色程序中所发生的瓶颈减至最少亦有相同作用)。如上所述,对于几何着色程序,水平处理通常效能较好,而对于像素着色程序而言,垂直处理通常效能较好。而本发明实施例的重新配置结构则尤其适合具有一组单一共享执行单元端口(而非每一着色器专用的处理执行单元)的处理结构及环境(例如:上述申请)。
请参考图3A及3B,图3A及3B示出了于一水平处理模式(图3A)以及一垂直处理模式(图3B)中处理一指令及相关数据的方块图。类似于图2的方块图,图3A及3B所示的实施例包括一暂存文件112及多个算术逻辑单元(ALUs)116、118、120及122。应当了解的是,虽然说明的实施例示出了具有四个算术逻辑单元(ALUs)116、118、120及122,但在不脱离本发明的精神和范围的前提下可于其它实施例中使用较多或较少的算术逻辑单元(ALUs)。
首先参考图3A,每一算术逻辑单元(ALU)116、118、120及122,皆具有一“深度”以说明连续的多个周期处理。于图3A中,示出了3个此类的连续指令(以“指令N-1”、“指令N”、及“指令N+1”表示的)。于该平行的算术逻辑单元(ALUs)中,亦说明每一个相关于所述指令的数据。例如:算术逻辑单元2 118示出了与指令N相关的数据(D1)。同样地,于算术逻辑单元120及122的对应位置中,分别显示与指令N相关联的数据D2及D3。因此,当将指令N记录至算术逻辑单元ALU1 116时,该指令的相关数据亦记录至平行的算术逻辑单元(ALUs)118、120、及122(假设此相关数据存在)。应当了解的是,对于任一特定指令,可能没有相关数据存在,或可能仅1至2字节(或者字符组)的相关数据存在。对于没有相关数据存在的路径,一闲置指令或数据区段的时序可记录至该相关算术逻辑单元(ALUs)。
现在参考图3B,图3B示出了相同结构组件。然而,该指令N-1、N、及N+1,及其相关数据被区分至不同的算术逻辑单元(ALUs)。例如,将指令N-1及其相关数据D1、D2、及D3记录至算术逻辑单元120中,而将指令N及其相关数据记录至算术逻辑单元118中,且将指令N-1及其相关数据记录至算术逻辑单元ALU1 116中。
以此一水平(图3A)或垂直方式(图3B),分开地且选择性地处理数据,即可根据被处理的程序或指令类型,最佳化该结构以更有效地处理指令。有鉴于此,结构设计者还了解,当于平行的算术逻辑单元(ALUs)中计算时,某些处理类型将有较佳的效能,而其它处理类型则于一单一算术逻辑单元中计算时取得较佳的效能。因此,于此略去详述这些不同的处理类型。又于一实施例中,如为先前参考文件的专利申请11/406,543所描述,某一处理结构或环境可包括一组共享执行单元端口,每一执行单元以多执行绪操作配置。于此一结构中,可能要求于所述算术逻辑单元(ALUs)中平行(水平模式处理)处理一单一执行绪的指令,然而在其它情况下,亦可能要求于一单一算术逻辑单元(ALU)中处理一单一执行绪的指令。于此,水平模式处理亦为水平指令模式处理。
如前所述,数据(例如:单指令流多数据流(SIMD)数据)是被预先组织化或格式化,并储存于暂存文件112中。依据本发明某些实施例,预先组织化或格式化该单指令流多数据流(SIMD)指令及相关数据,并将其储存于暂存盘112中,可使处于一水平模式的指令及相关数据直接被传送至所述算术逻辑单元(ALUs)处理。因此,当需要在操作模式属于垂直模式(有时亦为垂直指令模式)中处理指令及相关数据时,则该数据必须于被传送至所述算术逻辑单元(ALUs)116、118、120、及122之前重新格式化,或以其它方式处理。所以于某些实施例中,必须提供预处理逻辑单元130,以执行此数据处理,又于某些实施例中,此预处理逻辑单元130系包括移位及延迟逻辑单元132以执行多个移位(或延迟),并提供此数据处理。此逻辑单元的一组织范例,可于依据一实施例所完成的图6中,找到相关描述。
参考图3B的叙述,指令N-1被直接传送至ALU3 120,其中加载指令N-1以及相关数据D1、D2、及D3却非为完全连续地被加载算术逻辑单元ALU3 120中。然而,原先为了将与加载指令N-1相关的数据D1传送至ALU2 118,该相关数据D1即被格式化或配置于暂存盘112中,所以需由移位及延迟逻辑单元132将数据D1的传送延迟(一周期),并移动一个路径或信道后,下一周期(指令N-1之后的周期),数据D1方能被送至ALU3 120。同样地,将相关数据D2及D3(分别地)延迟两个及三个周期,并且(分别地)移动两个及三个通道,以便将其连续记录至ALU3 120。
接上所述,为了将指令N传送至ALU2 118,则需将原先于暂存文件112中,通过初始格式化以预备传送至ALU1 116的指令N移位。同样地,将指令N+1的相关数据延迟及移位以传送至ALU1 116。
再如图3B所示,在将所述算术逻辑单元(ALUs)的输出数据写回至暂存盘112(犹如通过一单一算术逻辑单元输出数据)之前,后处理逻辑单元140系被用来有效执行该反向处理或预处理逻辑单元130的格式化。最后,指示逻辑单元150提供有关于目前指令及相关数据的处理,是否依据水平模式处理或垂直模式处理的一指示。依据一实施例,该指示逻辑单元150可包括一缓存器,通过控制逻辑单元设置或重置,以指示是否以一水平模式或垂直模式执行处理。就此而言,参考于2006年2月6日提出的美国专利申请11/347,922,以及于2005年7月6日所提出的美国专利申请11/175,229。这些申请的内容于此均作为参考文件。依这些申请所述,一模式选择缓存器可用以指示目前处理模式系为一水平处理模式或一垂直处理模式。
如所属技术领域的技术人员所了解,当一开始于两种处理模式间变换时,与该预处理逻辑单元130及后处理逻辑单元140有关的移位及延迟操作,通常需额外时钟周期。然而,需进一步了解到,于一指令被循序执行的基础上,该处理模式将不会反复变换。相反地,一系列连续指令(例如:包括一几何着色器的指令、或包括一像素着色器的指令)将于一单一、特定操作模式中依序处理。因此,于模式间切换所造成的少量降低效能,可藉由操作于一特定操作模式所增加的效能来额外补偿。
于描述本发明实施例的一般结构及操作之后,请参考图4。图4示出了本发明实施例的基本组件方块图。如同图3A及3B的实施例一样,图4的实施例包括一暂存文件112及多个算术逻辑单元(ALUs)116、118、120、及122。图4的实施例进一步包括一算术逻辑单元(ALU)格式化逻辑单元230,将由该暂存盘112所接收或撷取的数据格式化,以传送至所述算术逻辑单元(ALUs)116、118、120、及122。简言之,算术逻辑单元(ALU)格式化逻辑单元230是根据目前操作模式(例如:水平或垂直),以将指令及相关数据适当地传送至算术逻辑单元(ALUs)116、118、120、及122。同样地,写回格式化逻辑单元240则将由所述算术逻辑单元(ALUs)116、118、120、及122所输出的指令及相关数据格式化以传回至该暂存盘112。依据图4所显示的实施例,类似图3A及3B的逻辑单元130及140,该算术逻辑单元(ALU)格式化逻辑单元230及写回格式化逻辑单元240,可包括用以执行移位、延迟、和/或旋转操作的电路系统或逻辑单元。或者,算术逻辑单元(ALU)格式化逻辑单元230及写回格式化逻辑单元240的基本电路系统或结构可与第3A及3B图不同。对于图4所示实施例而言,其重点为利用算术逻辑单元(ALU)格式化逻辑单元230及写回格式化逻辑单元240的基本电路系统,以提供与暂存盘112及所述算术逻辑单元(ALUs)116、118、120、及122间的相关操作及数据格式化、以及与所述算术逻辑单元(ALUs)及暂存盘间的相关操作及数据格式化。
于描述本发明某些实施例结构之后,亦将了解到,本发明所包含的实施例的方法乃为了在以具选择性及可供选择的水平及垂直模式中,完成指令及数据处理。据此,请参考图5。图5示出了本发明某些实施例的高阶操作流程图。依据图5所示的方法,先由一暂存盘112接收或撷取指令及相关数据(步骤302)。之后,依照所选择的模式为水平操作模式或垂直操作模式,处理此指令及相关数据(步骤304)。若依照一水平模式处理,则直接将该指令及相关数据由该暂存盘传送至对应的平行算术逻辑单元(ALUs)(步骤306)。所述算术逻辑单元(ALUs)处理完该指令及相关数据后,所述算术逻辑单元(ALUs)的输出将直接写回至该暂存文件(步骤308)。
相反地,若依照一垂直模式操作,则先处理或格式化从一暂存盘所撷取的数据,以传送至所述算术逻辑单元(ALUs)(步骤310)。处理完该指令及相关数据之后,直接将其传送至所对应的所述算术逻辑单元(ALUs)(步骤312)。所述算术逻辑单元(ALUs)处理完该指令及相关数据后,将所述算术逻辑单元(ALUs)的输出而后再一次处理或重新格式化(例如:重组),以传回至该暂存文件(步骤314)。接着,将该重组数据引回该暂存盘(步骤316)。最后如节点“A”所示,再重复图5所显示的处理过程。
再次强调,于此所使用的水平及垂直的名称,为用以代表不同(正交的)操作模式所使用的任意名称。而且于此所述的实施例的描述乃基于写入暂存盘的数据会被预先格式化犹如该数据将以水平模式处理的假设。依据这些实施例,当该逻辑单元(例如:图3的130及140、以及图4的230及240)不需执行任何功能时,将有效地使其禁能或失效。然而,当以一垂直模式操作时,将致能或使图3及4所示的重新格式化或处理逻辑单元有效。相反地,以一垂直模式操作时,若于该暂存盘中预先配置指令及相关数据,则该数据处理单元逻辑将于该垂直模式操作下被禁能,而于该水平模式操作下被致能。于垂直或水平模式操作下,是否预先将该指令及数据配置该暂存盘112中,可根据为特定实施例所结构设计的目标及需求且依实际执行而不同。在本申请中,更重要的是了解到本发明实施例的结构,允许数据的动态重新配置,因此,于水平或垂直模式中,能有效地使用多个算术逻辑单元(ALUs)来处理数据。
现在参考图6,图6类似于图3A及3B,但为显示一特定实施例的某些额外细节的方块图。于图6的实施例中,逻辑单元430示出了为一“左旋移位器”。于操作中,此移位器将数据向左移动一个通道,而将最左通道(相当于ALU1 116)旋转至最右的位置(至对应的ALU4 122)。反向的操作是由逻辑单元440的右旋移位器所提供。延迟组件431、432、433、434、435、及436是与该左旋移位器430相关。就像清楚说明数据路径是由该暂存盘112至不同延迟组件、以及至该左旋移位器430一样,可轻易地证实,就水平处理而言,于该暂存盘112中初始格式化的数据如何被移位及延迟,用以为一特定算术逻辑单元(ALU)来整理平行/相关数据组件。同样地,通过该右旋移位器440及相关延迟组件441、442、443、444、445、及446所显示的数据流路径及电路系统可轻易地证实反向的预处理操作。
依上述例子所示,若非向左移位,若欲将指令及相关数据向右移位,则将实现延迟组件的反向配置。就此而言,将延迟组件433、435、及436与对应的ALU1 116排成一列,而将延迟组件432及434与对应的ALU2 118排成一列,以及将延迟组件431与对应的ALU3 120排成一列。
现在简单地参考图7A及7B。图7A及7B虽类似于图3A及3B的方块图,但却说明如何利用该结构以处理不同执行绪的指令及相关数据。所以如上概述,一专利申请是描述具有可多执行绪操作的一组共享执行单元端口的结构。于此结构中,可能需要于单一ALU1 116中连续地由不同执行绪执行指令,即使相关数据是在平行的算术逻辑单元(ALUs)118、120、及122中处理。图7A示出了此一操作。同样地,对于某些操作而言,以分配至不同算术逻辑单元(ALUs)的不同执行绪,来处理指令及于一单一算术逻辑单元(ALU)中一单一指令的相关数据,可能是更好的。此一方法示出于图7B。总而言之,图7A及7B说明本发明实施例如何提供一弹性且实用的操作,以供两种操作的类型,并且于逻辑单元530及540中处理数据的重新格式化及操作(例如:数据配置逻辑单元),亦类似于图3A及3B的逻辑单元130及140。此外,一逻辑单元550亦被用以管理多执行绪(例如:一执行绪管理器)。
于一实施例中,一绘图处理装置包括一暂存盘112,一逻辑单元550以管理多个执行绪,多个算术逻辑单元(ALUs)116、118、120、及122以及两数据配置逻辑单元530及540,此两数据配置逻辑单元530及540可于一第一处理模式中,选择性地配置与一特定执行绪有关的暂存盘112的连序数据,以依序传送至所述算术逻辑单元其中之一,且可于一第二处理模式中,选择性地配置与一特定执行绪有关的暂存盘112的连序数据,以依序传送至不同的算术逻辑单元。
于一实施例中,藉由一第一着色程序的执行(未具体显示),可确认该绘图处理装置处于第一处理模式,而藉由一第二着色程序的执行(亦未显示),可确认该绘图处理装置处于第二处理模式。如所属领域的技术人员所了解,着色程序为定义着色程序执行的程序代码,如像素着色程序、顶点着色程序、及几何着色程序。
虽然现行的诸多应用已能利用此垂直操作,但仍有为数不少的重大应用须于执行垂直操作之前,进行数据组件的重新整理,以令该应用实现。在本发明示范的实施例内已包含多个经常使用于绘图及讯号处理中的上述应用。若与那些受益于垂直操作的应用相比较,当利用水平模式操作执行时,许多应用便能更有效率。在此,水平模式操作的说明亦可就存储器利用论述。该水平模式操作类似于传统向量处理,藉由将数据加载一向量缓存器而设置一向量,接着以平行方式处理。就目前处理器而言,亦可利用短向量处理,即执行一向量操作,如由一整体运算操作所产生,作为一多平行操作的一内积。
举例而言,一水平模式内积操作可以“垂直”方式处理。具体地考虑DP2/3/4的内积操作。此内积操作可藉由连续的乘法及累加(例如:MUL及MAC)运算处理,如下:;
DP2(v0·xy,v1·xy)=v0·x*v1·x+v0·y*v1·y
=MUL(v0·x,v1·x),MAC(v0·y,v1·y);
DP3(v0·xyz,v1·xyz)=v0·x*v1·x+v0·y*v1·y+v0·z*v1·z
=MUL(v0·x,v1·x),MAC(v0·y,v1·y),MAC(v0·z,v1·z);
DP4(v0·xyzw,v1·xyzw)
=v0·x*v1·x+v0·y*v1·y+v0·z*v1·z+v0·w*v1·w
=MUL(v0·x,v1·x),MAC(v0·y,v1·y),MAC(v0·z,v1·z),MAC(v0·w,v1·w)。
如所属领域的技术人员所了解,上述实施例示出了此一操作的范例。其它针对可以“垂直”方式处理的水平操作亦包括邻近像素间的梯度导数的计算。在此实施例的目的,为有关于可有效地利用于此所述的结构及方法,以实现操作于垂直及水平两种操作模式中。
于许多操作中,可通过利用垂直处理技巧提高一绘图管线的效能,其中,该绘图数据部份是于独立平行的通道中处理。然而其它操作则受益于水平处理技巧,其中,该绘图数据部份是以序列方式处理。称为双模式的两种垂直模式及水准模式处理的使用,于提供一编码的单一指令集以支持两种处理模式方面时,于是乎有其挑战性。所以,因具体模式技术的利用便增加了挑战性,这些问题如数据调配(data swizzling),即一数据结构中的名称、数组索引、或参考,于将该数据结构存入主存储器时,通常需转换至地址指针。由于这些原因,将一指令集编码以用于一双模式计算环境,以及该指令集的编码方法将导致效能的改善。
如所属领域的技术人员所了解,于此所提供实施例的说明一致,亦可于一执行单元中包括额外的组件,以实现各种任务及操作。
于此处所使用的名称“逻辑单元”意指专用的硬件(例如:电子或半导体电路系统),以及被设计以通过软件实现某些专用或定义的功能或操作的通用硬件。
于实现具体逻辑功能或步骤的过程中,所有处理的描述或流程,应被视为包括一个或多个可执行指令的程序代码的代表单元、区段、或部份,而于本发明较佳实施例所披露范围,包括了实现所显示或讨论的不规则执行功能,包括同时或逆序,取决于相关的功能,将为所属领域的技术人员所理解。
虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,任何所属领域的技术人员在不脱离本发明的精神和范围的前提下可做若干的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。
Claims (13)
1.一种绘图处理装置,包括:
多个算术逻辑单元,接收指令及相关数据,被配置以平行处理相关的数据;
预处理逻辑单元,被配置以由一暂存盘接收指令及相关数据,其中所接收的指令及相关数据指示由所述多个算术逻辑单元其中之一处理,该预处理逻辑单元被配置以格式化所接收的指令及相关数据,用以传送格式化后的指令及相关数据至所述多个算术逻辑单元;以及
后处理逻辑单元,被配置以接收所述多个算术逻辑单元输出的数据,该后处理逻辑单元被配置以格式化所述多个算术逻辑单元输出的数据,以将格式化后的所述多个算术逻辑单元输出的数据传送及写回至该暂存盘,使其对该暂存盘而言如通过一单一算术逻辑单元输出数据。
2.如权利要求1所述的绘图处理装置,其中,该预处理逻辑单元和该后处理逻辑单元皆包括一逻辑单元以执行移位及延迟操作。
3.如权利要求2所述的绘图处理装置,其中,该预处理逻辑单元对所述多个算术逻辑单元逐一地将所接收的指令及相关数据移位及延迟。
4.如权利要求2所述的绘图处理装置,其中,该后处理逻辑单元逐一地将从所述多个算术逻辑单元接收的数据移位及延迟。
5.如权利要求1所述的绘图处理装置,还包括一指示逻辑单元,以指示该预处理逻辑单元是否格式化所接收的指令及相关数据,而其中该预处理逻辑单元还依据该指示逻辑单元的一状态,将所接收的指令及相关数据格式化以传送至一单一算术逻辑单元,或传送至所述多个算术逻辑单元。
6.如权利要求5所述的绘图处理装置,其中,该预处理逻辑单元根据所述指示逻辑单元的一输出,决定是否格式化所接收的指令及相关数据,且当该指示逻辑单元指出于一水平模式中处理目前的指令及相关数据时,该预处理逻辑单元格式化所接收的指令及相关数据,当该指示逻辑单元指出于一垂直模式中处理目前的指令及相关数据时,该预处理逻辑单元不格式化所接收的指令及相关数据。
7.一种绘图处理装置,包括:
一暂存盘;
一逻辑单元用以管理多个执行绪;
多个算术逻辑单元;以及
一数据配置逻辑单元,于一第一处理模式中,配置与一特定执行绪有关的暂存盘的连序数据,以依序传送至所述多个算术逻辑单元其中之一,于一第二处理模式中,配置与一特定执行绪有关的暂存盘的连序数据,以依序传送至不同的所述多个算术逻辑单元。
8.如权利要求7所述的绘图处理装置,其中,该第一处理模式为一垂直指令模式,该第二处理模式为一水平指令模式。
9.如权利要求7所述的绘图处理装置,其中,该第一处理模式为一第一着色程序的执行,该第二处理模式为一第二着色程序的执行,该第二着色程序相异于该第一着色程序。
10.一种用于处理指令及数据的方法,其步骤包括:
由一暂存盘接收指令及相关数据;
为已接收的指令及相关数据决定水平模式或垂直模式何者为有效;
于一水平模式有效时,禁止重组该指令及相关数据以直接将该指令及相关数据传送至多个算术逻辑单元处理;以及
于一垂直模式有效时,重组该指令及相关数据,并且将该指令及相关数据传送至所述多个算术逻辑单元处理。
11.如权利要求10所述的用于处理指令及数据的方法,其中,重组该指令及相关数据时还包括移位及延迟该指令及相关数据。
12.一种用于处理多个算术逻辑单元操作的方法,其步骤包括:
由一暂存盘撷取一指令及相关数据;
决定一操作模式;
当确定该操作模式为一水平模式时,直接将该指令及相关数据传送至所述多个算术逻辑单元;以及
当确定该操作模式为一垂直模式时,将该指令及相关数据重新格式化,使得最初被格式化以传送至邻近所述多个算术逻辑单元的指令及相关数据被重新格式化,接着将重新格式化的指令及相关数据传送至对应的所述多个算术逻辑单元。
13.如权利要求12所述的用于处理多个算术逻辑单元操作的方法,其中,该方法的所有运用为共同进行以处理不同执行绪的指令及相关数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US76565406P | 2006-02-06 | 2006-02-06 | |
US60/765,654 | 2006-02-06 | ||
US11/610,169 | 2006-12-13 | ||
US11/610,169 US8049760B2 (en) | 2006-02-06 | 2006-12-13 | System and method for vector computations in arithmetic logic units (ALUs) |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101055644A CN101055644A (zh) | 2007-10-17 |
CN101055644B true CN101055644B (zh) | 2011-01-19 |
Family
ID=38333592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100067567A Active CN101055644B (zh) | 2006-02-06 | 2007-02-06 | 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8049760B2 (zh) |
CN (1) | CN101055644B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135017B2 (en) * | 2007-01-16 | 2015-09-15 | Ati Technologies Ulc | Configurable shader ALU units |
US8212825B1 (en) * | 2007-11-27 | 2012-07-03 | Nvidia Corporation | System and method for geometry shading |
US8203558B2 (en) * | 2008-01-28 | 2012-06-19 | Apple Inc. | Dynamic shader generation |
US8509569B2 (en) * | 2008-02-11 | 2013-08-13 | Apple Inc. | Optimization of image processing using multiple processing units |
US8436856B1 (en) * | 2009-11-06 | 2013-05-07 | Pixar | Systems and methods for mixing the execution order of shading language code |
CN102004625B (zh) * | 2010-11-30 | 2012-10-17 | 中国人民解放军国防科学技术大学 | 40位单指令多数据移位器 |
JP5922353B2 (ja) * | 2011-08-22 | 2016-05-24 | サイプレス セミコンダクター コーポレーション | プロセッサ |
WO2013086384A1 (en) | 2011-12-08 | 2013-06-13 | Oracle International Corporation | Techniques for maintaining column vectors of relational data within volatile memory |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US9606921B2 (en) | 2013-09-21 | 2017-03-28 | Oracle International Corporation | Granular creation and refresh of columnar data |
GB2516995B (en) | 2013-12-18 | 2015-08-19 | Imagination Tech Ltd | Task execution in a SIMD processing unit |
CN106164850B (zh) * | 2014-03-07 | 2018-11-27 | 索尼公司 | 用于阵列处理器的数据推测 |
US10025822B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Optimizing execution plans for in-memory-aware joins |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
GB2570304B (en) * | 2018-01-18 | 2022-06-01 | Imagination Tech Ltd | Topology preservation in a graphics pipeline |
US11526432B2 (en) * | 2018-05-18 | 2022-12-13 | Morumi Co., Ltd. | Parallel processing device |
WO2019221569A1 (ko) * | 2018-05-18 | 2019-11-21 | 주식회사 모르미 | 병렬 처리장치 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0463721A2 (en) * | 1990-04-30 | 1992-01-02 | Gennum Corporation | Digital signal processing device |
US5517666A (en) * | 1993-01-22 | 1996-05-14 | Matsushita Electric Industrial Co., Ltd. | Program controlled processor wherein vector distributor and vector coupler operate independently of sequencer |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876644A (en) * | 1987-10-30 | 1989-10-24 | International Business Machines Corp. | Parallel pipelined processor |
IL148137A0 (en) * | 1999-08-19 | 2002-09-12 | Massachusetts Inst Technology | Synchronous circuit synthesis using an asynchronous specification |
US7574583B2 (en) * | 2002-09-24 | 2009-08-11 | Silicon Hive B.V. | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor |
US7020769B2 (en) * | 2003-09-30 | 2006-03-28 | Starcore, Llc | Method and system for processing a loop of instructions |
US7398347B1 (en) * | 2004-07-14 | 2008-07-08 | Altera Corporation | Methods and apparatus for dynamic instruction controlled reconfigurable register file |
US9098932B2 (en) * | 2004-08-11 | 2015-08-04 | Ati Technologies Ulc | Graphics processing logic with variable arithmetic logic unit control and method therefor |
US7836284B2 (en) * | 2005-06-09 | 2010-11-16 | Qualcomm Incorporated | Microprocessor with automatic selection of processing parallelism mode based on width data of instructions |
-
2006
- 2006-12-13 US US11/610,169 patent/US8049760B2/en active Active
-
2007
- 2007-02-06 CN CN2007100067567A patent/CN101055644B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0463721A2 (en) * | 1990-04-30 | 1992-01-02 | Gennum Corporation | Digital signal processing device |
US5517666A (en) * | 1993-01-22 | 1996-05-14 | Matsushita Electric Industrial Co., Ltd. | Program controlled processor wherein vector distributor and vector coupler operate independently of sequencer |
Non-Patent Citations (1)
Title |
---|
EP 0463721 A2,全文. |
Also Published As
Publication number | Publication date |
---|---|
US20070182746A1 (en) | 2007-08-09 |
CN101055644A (zh) | 2007-10-17 |
US8049760B2 (en) | 2011-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101055644B (zh) | 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 | |
JP2021528764A (ja) | ニューラルプロセッサ | |
CN100535850C (zh) | 用于在编程引擎之间传送数据的方法和装置 | |
CN1983235B (zh) | 设置向量屏蔽的方法、设备、系统和处理器 | |
CN102567256B (zh) | 处理器系统及其多通道内存拷贝dma加速器和方法 | |
US5752068A (en) | Mesh parallel computer architecture apparatus and associated methods | |
TW202115575A (zh) | 靜止可重組態的資料處理器 | |
US7904702B2 (en) | Compound instructions in a multi-threaded processor | |
US20060265555A1 (en) | Methods and apparatus for sharing processor resources | |
CN1519704A (zh) | 包括纯量算术逻辑单元的单指令多数据处理机 | |
US20190228308A1 (en) | Deep learning accelerator system and methods thereof | |
CN101739235A (zh) | 将32位dsp与通用risc cpu无缝混链的处理器装置 | |
EP4283475A2 (en) | Moving data in a memory and command for memory control | |
US10659396B2 (en) | Joining data within a reconfigurable fabric | |
EP4031985A1 (en) | Efficient execution of operation unit graphs on reconfigurable architectures based on user specification | |
US20180212894A1 (en) | Fork transfer of data between multiple agents within a reconfigurable fabric | |
CN115983348A (zh) | 支持卷积神经网络扩展指令的risc-v加速器系统 | |
CN101313290B (zh) | 对仅m×n位外围设备执行n位写入访问的系统和方法 | |
CN101021831A (zh) | 面向科学计算的64位流处理器芯片体系结构 | |
US7840826B2 (en) | Method and apparatus for using port communications to switch processor modes | |
CN1833222A (zh) | 采用ilp和tlp的可重构处理器阵列 | |
EP4268088A1 (en) | A network on chip processing system | |
CN111078625B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN112506853A (zh) | 零缓冲流水的可重构处理单元阵列及零缓冲流水方法 | |
US11061678B1 (en) | Systems and methods for optimizing nested loop instructions in pipeline processing stages within a machine perception and dense algorithm integrated circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |