CN100495320C - 在双模式计算机处理环境下的指令集编码方法 - Google Patents
在双模式计算机处理环境下的指令集编码方法 Download PDFInfo
- Publication number
- CN100495320C CN100495320C CNB2007100067336A CN200710006733A CN100495320C CN 100495320 C CN100495320 C CN 100495320C CN B2007100067336 A CNB2007100067336 A CN B2007100067336A CN 200710006733 A CN200710006733 A CN 200710006733A CN 100495320 C CN100495320 C CN 100495320C
- Authority
- CN
- China
- Prior art keywords
- instructions
- instruction
- field
- group
- operand
- 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
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000003860 storage Methods 0.000 claims description 61
- 239000000203 mixture Substances 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 10
- 238000009434 installation Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 5
- 238000007620 mathematical function Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 7
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 201000008103 leukocyte adhesion deficiency 3 Diseases 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 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
- 239000012141 concentrate Substances 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005728 strengthening Methods 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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 Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种适用于双模式计算机处理环境的指令集,此指令集包括可分割为多个指令群组的指令。此指令包含特定模式字段、公共字段与特定群组字段。本发明也提供一种适用于双模式计算机处理环境下的指令集编码方法。此方法包括将指令集分割为指令群组以及定义公共字段、特定群组字段、特定模式字段与模式配置字段。
Description
技术领域
本发明是有关于一种计算机处理,且特别是有关于一种在双模式(dual-mode)计算机处理环境下的方法与指令集(instruction set)。
背景技术
众所周知,为了增加多维(multi-dimensional)计算的效率,已知技术中已发展出单指令多数据(Single-Instruction,Multiple Data,以下简称为SIMD)的架构。在传统的SIMD架构中,一个指令能够同时处理多个操作数(operand)。特别的是,SIMD架构可封包一个暂存器或存储器位置中的多个数据元素。当硬件以并列方式执行时,使用一个指令就能够执行多个运算,因而可减少程序大小与加强流程的控制,进而显著地改善效能并且大量地简化硬件。传统的SIMD架构主要执行“垂直”运算,而在垂直运算中,分散于多个操作数内的对应的元素将平行且独立地被执行。垂直运算亦可以存储器的使用方式来描述。在垂直模式的运算下,每个处理元素都有一个局部存储器储存器,操作数在每一个局部存储器储存器中的地址是相同。
虽然现今使用的多种应用可获益于垂直运算模式,然而有许多重要的应用在执行垂直运算前需要重新排列数据元素,以便提供这些应用的实现,这类型的应用包括常用的绘图与信号处理。相对于这些得益于垂直运算的应用,许多应用于水平模式运算下执行会更为有效率。水平模式的运算也能够以存储器的使用方式来描述。水平模式运算类似于传统的向量处理(vectorprocessing),也就是利用加载数据至向量暂存器(vector register),再平行处理这些数据以建立出一个向量。依此技术处理器也能够利用短向量处理,此短向量处理可实现一个向量运算,例如多个平行运算的点乘积(dotproduct),并跟随整体的加总运算。
在许多运算中,绘图管线(pipeline)的效能可利用垂直处理技术来增强,以使部分的绘图数据能够在独立且平行的通道中被处理。不过其它得益于水平处理技术的运算中,绘图数据的区块是以串行的方式被处理。若欲同时使用垂直模式与水平模式处理,也就是所谓的双模式,将会导致需提供单一指令集且其编码方式可支持两种处理模式中的需求。这样的需求在利用特定模式技术时将会更明显,例如数据拌合(data swizzling),此技术是于数据结构被置入主要存储器时,一并继承此数据结构的名称、阵列索引或参考值,以转换为地址指针。由于这些理由,适用于双模式运算环境的指令集编码方式与对应的指令集编码方法实可提升运作效能。因此,本技术领域需要提供一种解决上述缺陷和不足的方案。
发明内容
本发明提供一种适用于双模式计算机处理环境的指令集编码方法,所述计算机包括可在垂直处理模式或是水平处理模式下进行运算的处理器和模式选择暂存器,所述处理器包括:存储器和模式选择逻辑电路,该方法包括:
将指令集分割为多个指令群组;
定义多个公共字段,用以储存该等指令群组间公共的数据;
定义多个特定群组字段,用以储存该等指令群组的一或多者所包含的指令特有的数据;
定义多个特定模式字段,用以储存模式特定数据;
定义多个模式配置字段,用以在垂直处理模式中提供第一配置与在水平处理模式中提供第二配置;以及
根据所述模式选择逻辑电路读取的所述模式选择暂存器储存的值来决定所述处理器是在垂直处理模式或是水平处理模式下进行运算。
本发明还提供一种计算机装置,可利用双模式指令集,包括:
至少一处理器,可于垂直处理模式与水平处理模式下利用多个指令执行数据处理;以及
模式选择暂存器,
所述处理器包括:
存储器,存储有:多个指令群组,该等指令群组的每一者各自包括该等指令的一部分;多个公共字段,存在于该等指令的每一者;多个特定群组字段,用以储存对应于该等指令群组其中之一者的特定指令需求的内容;多个特定模式字段,依据该垂直处理模式与该水平处理模式其中何者被使用决定储存的内容型态;以及多个模式配置字段,其数据型态于该垂直处理模式与式与该水平处理模式其中何者决定;以及
模式选择逻辑电路,
所述模式选择逻辑电路读取所述模式选择暂存器储存的值以决定所述处理器是在垂直处理模式或是水平处理模式下进行运算。
本发明的一实施例提供适用于双模式计算机处理环境的指令集,包括:分割为多个指令群组的多个指令;存在于每一指令中的多个特定模式字段;存在于每一指令中的多个公共字段;以及存在于每一指令中的多个特定群组字段。
本发明的另一实施例是提供一种适用于双模式计算机处理环境的指令集编码方法,包括:将指令集分割为多个指令群组;定义多个公共字段,用以储存该等指令群组公共的数据;定义多个特定群组字段,用以储存指令集中一至数个指令群组特有的数据;定义多个特定模式字段,用以储存特定模式数据;以及定义多个模式配置字段,用以在第一计算模式中提供第一配置以及在第二计算模式中提供第二配置。
本发明的再一实施例是提供一种使用双模式指令集的计算机装置,包括:至少一处理器,可于垂直处理模式与水平处理模式下利用多个指令执行数据处理;多个指令群组,该等指令群组的每一者各自包括该等指令的一部分;多个公共字段,存在于该等指令的每一者;多个特定群组字段,用以储存对应于该等指令群组其中之一者的特定指令需求的内容;多个特定模式字段,依据垂直处理模式与水平处理模式其中何者被使用,决定储存的内容型态;以及多个模式配置字段,其数据型态于垂直处理模式与水平处理模式下为相同,其数据格式是依据所使用的模式为垂直处理模式与水平处理模式其中何者决定。
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
参考附图可更容易地理解本发明。各图中所示的部件并没有按比例绘制,其重点在于清楚地展示本发明的原理,其中在所有图中,相同的标记乃是代表相同的部件。
图1为计算机系统的方块图。
图2为本发明实施例的指令群组的方块图。
图3为本发明实施例的三来源操作数浮点运算指令的方块图。
图4为本发明实施例的二来源操作数浮点运算指令的方块图。
图5为本发明实施例的单一来源操作数浮点运算指令的方块图。
图6为本发明实施例的一或二来源操作数整数运算指令的方块图。
图7为本发明实施例的暂存器-立即整数运算指令的方块图。
图8为本发明实施例的分支指令的方块图。
图9为本发明实施例的长-立即指令的方块图。
图10为本发明实施例的零操作数指令的方块图。
图11为本发明实施例的全体指令公共字段的方块图。
图12为本发明实施例的特定群组字段的方块图。
图13为本发明实施例的特定模式字段的方块图。
图14为本发明实施例的模式配置字段的方块图。
图15A与15B分别为三来源操作数浮点运算指令于垂直处理与水平处理模式下的指令格式方块图。
图16A与16B分别为二来源操作数浮点运算指令于垂直处理与水平处理模式下的指令格式方块图。
图17A与17B分别为单一来源操作数浮点运算指令于垂直处理与水平处理模式下的指令格式方块图。
图18A与18B分别为一/二来源操作数整数运算指令并于垂直处理与水平处理模式下的指令格式方块图。
图19A与19B分别为暂存器-立即整数运算指令于垂直处理与水平处理模式下的指令格式方块图。
图20A与20B分别为分支指令于垂直处理与水平处理模式下的指令格式方块图。
图21A与21B分别为长-立即指令于垂直处理与水平处理模式下的指令格式方块图。
图22A与22B分别为零操作数指令于垂直处理与水平处理模式下的指令格式方块图。
图23为本发明实施例的指令集编码方法流程图。
具体实施方式
上述是对本发明的内容作简要说明,下面将对附图中所示的本发明进行详细说明。尽管下面将结合附图而对本发明进行详细说明,但并不会限制本发明的实施例。相反地,其目的是为了涵盖后附专利范围所定义的发明实质和范围所包括的所有变化例和修改例。
图1是绘示本发明计算机系统的方块图。请参照图1,图1中计算机系统10包括处理器12,其余元件例如存储器、电源供应器、输出装置与输入装置等未绘示。处理器12在计算机系统10中执行数据处理的任务。而处理器12包括模式选择逻辑电路20,模式选择逻辑电路20可读取计算机系统10的模式选择暂存器16。模式选择暂存器16储存的值可用以决定处理器是在垂直处理模式或是水平处理模式下进行运算。处理器12也包括指令集14,而指令集14包括编码为具有垂直模式处理指令群组22以及水平模式处理指令群组24的多个指令。处理器可依据储存于模式选择暂存器16中的值,选择使用垂直模式处理指令群组22,其包含指令集14中设定为用于垂直处理模式下的多个指令,或者使用水平模式处理指令群组24,其包含指令集14中设定为用于水平处理模式下的多个指令。
图2是绘示本发明一实施例的指令群组的方块图。请参照图2,本实施例揭露的指令集编码方式包括分割或合并指令至多重指令群组102。在图2的实施例中,指令群组102是依据操作数的配置或不同指令的需求被分割。举例来说,三来源操作数浮点运算指令群组104中的指令是利用来自三个不同的来源暂存器中的自变量(argument)与操作数。相对应地,二来源操作数浮点运算指令群组106是利用位于两个不同的来源暂存器中的两个自变量来执行运算。相似地,使用单一来源操作数的指令亦被聚集为单一来源操作数浮点运算指令群组108。
除了上述的各个浮点运算指令群组外,另一群组是汇集利用一/二来源操作数整数运算110的所有指令。虽然三来源操作数整数运算的指令未在实施例中提及,但是仍包含在本发明所揭露的范围之内。还有一个指令群组是由利用整数运算的指令所组成,如暂存器立即整数运算指令群组112,其是使用暂存器的一个操作数结合指令的立即值(immediate value)。而分支指令群组114包括使用立即标记值(immediate label value)的指令,以提供程控或交换式处理线程选路(thread routing)。程控也可使用长-立即(long-immediate)指令群组116来完成,举例来说,长-立即指令群组116可以被用在一个跳越(jump)指令中以提供程序计数器一个新的值。其它可用于程控的指令包括零-操作数(zero-operand)指令群组118中的指令。举例来说,这些指令可以提供常数(constant value)以加载至程序计数器。
图3是绘示本发明一实施例的三来源操作数浮点运算指令的方块图。举例来说,三来源操作数浮点运算指令包括浮点乘加(floating point multiplyand add,以下简称为FMAD)运算指令122。FMAD运算指令122将来源暂存器1(以下简称为SR1)的值与来源暂存器2(以下简称为SR2)的值相乘后,再将所得的乘积与来源暂存器3(以下简称为SR3)的值相加。SR1、SR2与SR3为在指令字段(instruction field)中所识别的暂存器,且SR1、SR2与SR3所对应的指令字段分别指定为来源1,来源2与来源3。而最终的结果则写入终点暂存器(destination register,以下简称为DR)中,DR是指令字段中被识别为终点的暂存器。当来源暂存器用以提供自变量(argument)或操作数两者其中之一时,此来源暂存器的值可以为指针值(pointer value)以指向包含实际操作数值的存储器位置。在其它例子中,三来源操作数浮点运算指令也可以是一个选择函数指令(select function,以下简称为SEL)124。SEL指令124利用位于SR3的值以决定要将位于SR1或位于SR2的值写入DR。就此而言,SEL指令124的操作方式相近于二对一多工器(two-to-multiplexer,2∶1MUX)。本领域技术人员应当知道,在此虽然只提出三来源操作数浮点运算指令的部分实施例,然本发明并不限定于这些实施例,其它指令仍包含在本发明所揭露的范围之内。
图4是绘示本发明实施例的二来源操作数浮点指令的方块图。使用二来源操作数的浮点指令包括,例如加/减法(add/subtract,ADD/SUB)运算指令128、乘法运算指令(multiply,MULT)130、乘/累加运算指令(multiply/accumulate,MAC)132、嵌位运算指令(CLAMP)134与最大/最小运算指令(MAX/MIN)140。以上说明这些指令的本质后,可知于图4已分别说明每一个别指令的运算方式,但其并非用以限定本发明的二来源操作数浮点运算指令仅包含所列的范例。
图5是绘示本发明实施例的单一来源操作数浮点运算指令的方块图。单一来源操作数浮点运算指令包括倒数运算指令(reciprocal,RCP)144、平方根运算指令(square root,RSQ)146、对数运算指令(logarithm,LOG)148、指数运算指令(exponential,EXP)150、浮点至整数转换指令(FP-INT)152以及整数至浮点转换指令(INT-FP)154等等。上述各指令可被归纳成同性质的单一来源操作数浮点运算指令,其对SR1的值执行某一函数后将结果储存于DR中。
图6是绘示本发明实施例的一/二来源操作数整数运算指令的方块图。举例而言,二来源操作数整数运算指令可以是整数加法运算指令(integer addinstruction,以下简称IADD)158,IADD运算指令158是将位于SR1与SR2中的整数值相加,而其总和则写入至DR。于另一范例中,单一来源操作数整数运算指令可以是前导零计数指令(count leading zero instruction,CLZ)160,其运算是计算SR1的值的前导零的个数,并储存于DR中。相似的整数指令如图7所示,其绘示本发明实施例的暂存器-立即(register-immediate)整数指令的方块图。举例来说,整数加法立即(integeradd instruction immediate,IADDI)指令164将SR1的值与储存于指令的立即字段(immediate field,#IMMEDIATE)的值相加,并将相加的结果写入DR中。而整数比较立即(integer compare immediate,ICMPI)指令166则比较SR1的值与储存于指令的立即字段(#IMMEDIATE)的值,并将比较的结果储存于DR中。如同先前所述的各指令群组,本发明适用的范围不限于在此所举例的各一/二来源操作数整数运算指令,亦可适用于其它未列出但运算本质相同的指令。
图8是绘示本发明实施例的分支指令的方块图。于一范例中,分支指令可以是一个增量分支(increment branch,以下简称IB)指令170,IB指令170是比较SR1的值与SR2的值,若比较结果为真,则依据标记字段(lable field)的值(LABEL)调整程序计数器(program counter,PC)的值。相对地,若比较结果为假,则将程序计数器(PC)加一或其它预先给定的量。在另一范例中,分支指令可以是移动指令(move instruction,以下简称MOV)172。MOV指令172是将SR1的值搬移至DR中。
图9是绘示本发明实施例的长-立即指令的方块图。长-立即指令的一范例为跳越(以下简称JUMP)指令176,JUMP指令176是依据指令中立即字段(#IMMEDIATE)的值加上任意常数值(C)调整程序计数器(PC)的值。在某些实施例中,此任意常数值(C)可储存于长-立即字段的某一部分中。
图10是绘示本发明实施例的零操作数指令的方块图。零操作数指令可以是分支标记重置(branch label reset,以下简称BLR)指令180。BLR指令180是通过回传程序计数器的值或重设程序计数器至固定值的方式,终止处理分支。
上述各指令群组的指令范例并不限定于图3~10,相反地,与本发明所揭示的内容相符的其它指令为可预见,亦同样为本质上复杂度相近的计算机环境所不可或缺者。再者,本发明所揭露的特定群组的定义方式仅为范例,其它的分类在不脱离本发明的精神和范围内,仍包含在本发明所揭露的范围之内。
图11是绘示本发明实施例中全体指令公共字段的方块图。此全体指令公共字段200包括不分指令群组或处理模式,所有的指令皆包含的字段。举例来说,于某些实施例中,所有的指令皆包括锁定字段(lock field)202,锁定字段202为一个位且是用以指示管线(pipeline)已被锁定。假如该处理管线已被锁定,当管道(pipe)被锁住时,来自给定线程(thread)的指令必须流经运算过程排定的执行单元(execution unit),否则此线程无法搬移至其它的执行单元。
此外,由于某些运算需利用累加暂存器(accumulation register),管线或处理线程可被锁定至一个给定的执行单元,例如MAC运算。累加暂存器乃间接地被使用且非明确地定义在指令中,亦可与其它的状态信息合并使用,此类状态信息例如为来自前一个运算的先前信息。由于此类额外信息受特定的处理线程约束且须与其一起移动,处理线程必须锁定至给定的执行单元中,使其可利用先前产生的状态信息。
另一全体指令公共字段为述词字段(predicate field)204。述词字段204包括述词否定位(predicate negate bit),用以示意述词暂存器的内容是否被否定,以及示意述词暂存器字段可指定一个述词暂存器于述词运算中使用。其它全体指令公共字段还包括运算码(operation code)字段206。运算码字段206是用来分辨不同的指令编码函数。运算码字段206包括指令型态,如同一个代表特定指令信息的值。此外,运算码字段206还包括主要运算码信息,其可与位于其它字段的子运算码信息合并使用。
图12是绘示本发明实施例的特定指令群组字段的方块图。于图12中,特定指令群组字段210的范例是与可包含这些字段的指令群组212互相并列。举例来说,在一些实施例中,分支指令群组216中的所有指令包含标记字段214,此标记字段214提供与目前的程序计数器相关的标记值。子运算码218包含于区块220中所列二来源操作数浮点运算指令群组、单一来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组、立即暂存器与零操作数指令群组的所有指令。相似地,第一暂存器文件选择字段222是用于区块224所列的三来源操作数浮点运算指令群组、二来源操作数浮点运算指令群组、单一来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组、立即暂存器与分支指令群组。此外,第二暂存器文件选择字段226是用于区块228所列的三来源操作数浮点运算指令群组、二来源操作数浮点运算指令群组、单一来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组与分支指令群组。第三暂存器文件选择字段230则用于区块232所列的三来源操作数浮点运算指令群组的所有指令。立即-值字段234是用于区块236的暂存器-立即指令群组。上述的所有依据先前定义的指令群组所定义的特定群组字段范例并非用以限定本发明的范围。其它的实施例在不脱离本发明的精神和范围内,亦包括使用不同的标准和符合特定选择定义的指示领域的所定义的指令群组。
图13是绘示本发明实施例的特定处理模式字段的方块图。举例来说,图13中所绘示的字段是分别利用在垂直或是水平处理模式的指令中。举例来说,此类字段包括仅适用于垂直处理模式246的信道复制(lane replicate)字段244,通道复制字段244可用于区块248所列的三来源操作数浮点运算指令群组、二来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组与分支指令群组的所有指令。第一拌合(swizzle)字段250则用在以水平处理模式252编码的指令,例如区块254所列的三来源操作数浮点运算指令群组、二来源操作数浮点运算指令群组、单一来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组、立即暂存器与分支指令群组。第二拌合字段256乃用在以水平处理模式258编码的指令,例如区块260所列的三来源操作数浮点运算指令群组、二来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组与分支指令群组的指令中。第三拌合字段262则用在水平处理模式264下的指令,例如区块266所列的三来源操作数浮点运算指令群组。写入屏蔽(write mask)字段268是用于水平处理模式270下的指令,例如区块272所列的三来源操作数浮点运算指令群组、二来源操作数浮点运算指令群组、单一来源操作数浮点运算指令群组、一/二来源操作数整数运算指令群组与分支指令群组。复制字段274是用于垂直处理模式276下的所有指令群组中。
图14是绘示本发明实施例的模式配置字段的方块图。模式配置字段280是可同时应用于垂直处理模式282与水平处理模式284的公共字段,且在这两种不同的模式下会有不同的配置。举例来说,列于区块286中的来源1、来源2与来源3的来源字段,在垂直模式下是包含8-位来源暂存器值,如区块288所示;相对在水平处理模式下则为6-位来源暂存器值加上2-位拌合值,如区块290所示。相同地,区块292中的终点字段在垂直处理模式下是配置为8-位终点暂存器值,如区块294所示,而在水平处理模式下是配置为6-位终点暂存器值,如区块296所示。
图15A与15B分别绘示三来源操作数浮点运算指令于垂直处理模式与水平处理模式下的指令格式的方块图。请参照图15A,本实施例是在垂直处理模式下三来源操作数浮点运算指令的指令格式。指令300包括上述已提及的锁定字段(LOCK)301,用以在给定的线程中将指令锁定到特定执行单元。指令300还包括复制字段(RPT)302,其包含一个值用以指出指令被修改且复制的次数。此外,指令300也可包含述词否定位(predicate negate bit,PN)303用以存放述词数据(predicate data),与一来源述词字段(SrcP)305以辨认述词暂存器。指令300还可包括一个识别为RAZ或读取为零304的字段,其用以辨认不适用于某一给定形式的字段的标记。指令300还包括上述运算码字段307。运算码字段307是定义为指令欲执行的运算。
与终点暂存器相关的数据可储存在指令的两个不同字段。第一个终点字段为终点暂存器文件字段(DS)309,用以辨认文件所属的终点暂存器。第二终点字段为终点暂存器字段(DST)306,用以辨认接收运算或指令结果的特定终点暂存器。指令300也包括第三来源操作数字段(SRC3)310,用以辨认第三来源操作数的位置。此外,指令300可包括S3S字段311,用以辨识第三来源操作数的文件选择。指令300还可包括来源操作数修改字段(source modifierfield)312,包含S3 MOD、S2 MOD与S1 MOD,用以分别指示需要修改的来源操作数,例如通过否定(negation)运算。指令300还包括对应于第二来源操作数的通道复制字段(S2 LANE REP)308。信道复制运算为垂直模式特有,其牵涉到将第二来源操作数的某一通道的内容复制至其它通道。
请参照图15B,本实施例是在水平处理模式下三来源操作数浮点运算指令群组的指令格式。于相同的指令群组之内,水平处理模式的指令320包括数个与垂直处理模式的指令300相较之下可清楚辨别的特征。举例来说,三来源操作数浮点运算指令320的每个来源操作数皆包括一个拌合值,用以于水平模式下辨认拌合暂存器。第一来源操作数的拌合值为4-位值,此4-位的拌合值能够指定最多至16个拌合暂存器的其中一者,并且此4-位值分别位于第56,55,7与6位。第二来源操作数的拌合值同样为4-位值,亦分别位在第62,61,17与16位。与对应至第一及第二来源操作数的拌合值相比,第三来源操作数的拌合值323为2-位字段,以指定最多到四个拌合暂存器的其中一者。迥异于垂直处理模式的指令,水平处理模式的指令320还包括写入屏蔽328,而写入屏蔽328为对应于W,Z,Y与X组成的4-位值。水平处理模式的指令320与垂直处理模式的指令300之间另一格式上的不同在于,来源操作数的字段长度并不相同。就每个来源操作数而论,在垂直处理模式下是使用8-位,而水平处理模式只利用6-位,并保留两个位作为拌合值。
图16A与16B是绘示二来源操作数浮点运算指令于垂直处理模式与水平处理模式下的指令格式的方块图。请参照图16A,垂直处理模式的指令330包括主运算码(MAJOR OPCODE)字段332与子运算码字段(MINOR OPCODE)334。主运算码字段332是用以辨识指令型态,例如其可示意将运算的余数(remainder)编码至子运算码字段334。子运算码字段334可用以例如对数学或逻辑函数作编码。垂直处理模式的指令330的格式亦包括一个储备字段(reserved field,RES)335,用以容纳未来指令或处理器新增的功能。
请参照图16B,其是绘示水平处理模式的指令340的格式,相较于垂直处理模式指令,水平处理模式的指令340的格式还包括拌合值字段348与写入屏蔽字段346。而其余二来源操作数浮点运算指令于水平处理模式与垂直处理模式间格式上的差异与三来源操作数浮点数运算指令一致。相似地,图17A与17B是绘示单一来源操作数浮点运算指令于垂直处理模式与水平处理模式下指令格式的方块图。如同上述,拌合字段372与写入屏蔽字段376只存在于水平处理模式的指令370中,不存在于垂直处理模式的指令360。
图18A与18B是绘示一/二来源操作数整数运算指令分别于垂直处理模式与水平处理模式下指令格式的方块图。整数运算指令的格式包括许多于浮点运算可见的特点,以及包括先前所讨论的垂直处理模式指令与水平处理模式处理指令两者格式上的基本差异。一/二来源操作数整数运算指令的格式于垂直处理模式的指令380与水平处理模式的指令390皆包括SAT字段382、US字段384与PP字段386。SAT字段382为饱和(saturation)字段,当此位被设定时,运算的结果为饱和或是与模数(modulo)不符。SAT字段382的值某种程度上需依赖US字段384与PP字段386的值。US字段384决定来源暂存器中的值为无正负号(unsigned)或带正负号(signed)的值。PP字段386表示运算是否为半精度(partial precision)的运算。上述该等字段亦存在于对应的暂存器立即整数指令于垂直处理模式与水平处理模式下的指令格式,如图19A与19B所示。此外,暂存器-立即整数指令对应的垂直处理模式下的指令400与水平处理模式下的指令410还包括立即值字段402、412。立即值字段包含一值用以做为整数运算的操作数,若有必要时,另一操作数则来自于第一来源操作数暂存器。
图20A与20B是绘示分支指令于垂直处理模式与水平处理模式下的指令格式的方块图。分支指令对应的垂直处理模式下的指令420与水平处理模式下的指令430所特有的字段为标记字段(LABEL)422、432与比较运算字段(CMPOP)424、434。标记字段(LABEL)提供跳越标记,其值与目前的程序计数器相关。虽然标记字段422与432在许多实施例当中被用来作为立即值,但是在不违反本发明的精神与范围下,标记字段422、432亦可包括暂存器辨认值,用以指出储存标记的地址或其它位置。比较运算字段424、434是通过对运算的结果执行比较以判定是否需产生分支的方式将比较运算整合至指令中。依此方式,一般运算与产生分支能够在单一指令内执行。三位的比较运算可以编码出最多支持至八种不同的比较函数,例如:大于、小于、等于、大于或等于、与小于或等于,诸如此类。在指令涉及到长整数的状况下,长-立即指令在垂直处理模式与水平模式下的指令格式分别绘示于图21A与图21B的方块图中。每个垂直处理模式的指令440与水平处理模式的指令450皆包括32-位的立即值字段442、452。至于指令中不使用任何操作数的情况,例如零操作数指令,其所对应的垂直处理模式与水平处理模式的指令格式是绘示于图22A与图22B的方块图中。零操作数指令的垂直处理模式下的指令460与水平处理模式下的指令470皆包括主运算码字段462、472与子运算码字段464、474,由于此种形态的指令不具有来源操作数或终点暂存器,因此指令中有一部分被标记成读取为零(RAZ)466、476。
图23是绘示本发明一实施例于双模式计算机处理环境下指令集编码方法的流程图。请参照图23,首先于步骤510中,将指令集中的指令分割为多个指令群组。指令群组的分割通常是依据操作数的数目及/或型态来定义。依此方式,字段需求条件相同的指令可聚集为群组。为分析各字段的条件,在步骤520中定义全体指令公共字段,在步骤530中定义特定群组字段,在步骤540中定义特定模式字段。此外,指令群组在垂直处理模式与水平处理模式下皆具备,但其配置因处理模式不同而相异的字段,则在步骤550中定义为模式配置字段。
上述所揭露的实施例皆能够实现为硬件、软件与固件或是上述各类的多种组合。在一些实施例中可以软件或固件来实现,例如储存于存储器中的软件,并以合适的指令执行系统执行。若以硬件实现,可以是下述的任一种已知技术或其相互结合来实施,例如:具有逻辑门的离散逻辑电路,以通过数据信号实现逻辑函数;具有合适的逻辑门组合的特殊应用集成电路(application specific integrated circuit,ASIC);可编程门阵列(programmable gate array(s),PGA);以及场可编程门阵列(fieldprogrammable gate array,FPGA)等等。
用以实现逻辑、控制与数学函数的执行指令可实现于任何计算机可读取存储媒体(computer-readable medium)中,以连接或供与指令执行系统、装置或设备使用,例如计算机系统,处理器系统,或能够获取指令执行系统、装置或设备的指令并执行的其它系统。在此,计算机可读取存储媒体意指该装置能够包含、储存、沟通、传播或传输可供予或连接指令执行系统、装置或设备的程序。此类计算机可读取存储媒体可以例如为电子式的、磁式的、电磁式的、光学式的、红外线式的,又或是半导体系统、装置、设备或传输媒介,但不限于上述的类别。更多特殊的计算机可读取存储媒体的范例(在此非详尽列出),可包括下列几种:具有一或多个接线的电子连接(电子式的);可携带式计算机软磁盘(computer diskette)(磁式的);随机存取存储器(random access memory,RAM)(电子式的);只读存储器(read-only memory,ROM)(电子式的);可抹除可编程只读存储器(erasable programmable readonly memory,EPROM)或闪存(flash memory)(电子式的);光纤维(opticalfiber)(光学式的);可携带式只读光盘存储器(compact disk read onlymemory,CD-ROM)(光学式的)。注意的是,计算机可读取存储媒体甚至可能为纸张或是程序可印刷在上面的其它适合媒体,而程序经由立即光学扫描该纸张或媒体可电子式取得,然后经过编译、解释及需要时经过其它合适的处理,再储存于计算机存储器中。此外,本发明所揭露范围包括通过硬件或软件配置的媒介实现的逻辑电路来具体实现本发明实施例的功能。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (12)
1.一种适用于双模式计算机处理环境的指令集编码方法,所述计算机包括可在垂直处理模式或是水平处理模式下进行运算的处理器和模式选择暂存器,所述处理器包括:存储器和模式选择逻辑电路,该方法包括:
将指令集分割为多个指令群组;
定义多个公共字段,用以储存该等指令群组间公共的数据;
定义多个特定群组字段,用以储存该等指令群组的一或多者所包含的指令特有的数据;
定义多个特定模式字段,用以储存模式特定数据;
定义多个模式配置字段,用以在垂直处理模式中提供第一配置与在水平处理模式中提供第二配置;以及
根据所述模式选择逻辑电路读取的所述模式选择暂存器储存的值来决定所述处理器是在垂直处理模式或是水平处理模式下进行运算。
2.根据权利要求1所述的方法,其中该指令集分割的步骤包括依据操作数特性将该等指令分类。
3.根据权利要求2所述的方法,其中该指令分割的步骤包括下述组成的至少一者或任意组合:
识别该等指令中需要三个操作数的该等指令;
识别该等指令中利用两操作数执行浮点运算的指令;
识别该等指令中利用单一操作数执行浮点运算的指令;
识别该等指令中利用至少一操作数执行整数运算的指令;
识别该等指令中执行暂存器立即整数运算的指令;
识别该等指令中执行长-立即运算的指令;
识别该等指令中执行分支运算的指令;以及
识别该等指令中执行零运算的该等指令。
4.根据权利要求1所述的方法,其中该定义特定群组字段的步骤包括下述组成的至少一者或任意组合:
识别该等指令群组中使用三来源操作数的群组所包含的指令皆具备的公共字段;
识别该等指令群组中使用二来源操作数浮点运算的群组所包含的指令特有的字段;
识别该等指令群组中使用单一来源操作数浮点运算的群组所包含的指令特有的字段;
识别该等指令群组中使用一/二来源操作数整数运算的群组所包含的指令特有的字段;
识别该等指令群组中使用暂存器-立即操作数整数运算的群组所包含的指令特有的字段;
识别该等指令群组中使用长-立即整数运算的群组所包含的指令特有的字段;
识别该等指令群组中使用零操作数整数运算的群组所包含的指令特有的字段;以及
识别该等指令群组中执行分支运算的群组所包含的指令特有的字段。
5.根据权利要求1所述的方法,其中该定义模式配置字段的步骤包括下述组成的至少一者或任意组合:
提供第一操作数字段;
提供第二操作数字段;
提供第三操作数字段;以及
提供终点字段。
6.根据权利要求1所述的方法,其中该定义特定模式字段的步骤包括提供通道复制字段对应至该等指令群组的一部分。
7.一种计算机装置,可利用双模式指令集,包括:
至少一处理器,可于垂直处理模式与水平处理模式下利用多个指令执行数据处理;以及
模式选择暂存器,
所述处理器包括:
存储器,存储有:多个指令群组,该等指令群组的每一者各自包括该等指令的一部分;多个公共字段,存在于该等指令的每一者;多个特定群组字段,用以储存对应于该等指令群组其中之一者的特定指令需求的内容;多个特定模式字段,依据该垂直处理模式与该水平处理模式其中何者被使用决定储存的内容型态;以及多个模式配置字段,其数据型态于该垂直处理模式与该水平处理模式下为相同,其数据格式是依据所使用的模式为该垂直处理模式与该水平处理模式其中何者决定;以及
模式选择逻辑电路,
所述模式选择逻辑电路读取所述模式选择暂存器储存的值以决定所述处理器是在垂直处理模式或是水平处理模式下进行运算。
8.根据权利要求7所述的计算机装置,其中该等指令群组包含下述组成的至少一者或任意组合:三来源操作数浮点运算指令群组;二来源操作数浮点运算指令群组;单一来源操作数浮点运算指令群组;一或二来源操作数整数运算指令群组;整数暂存器-立即操作数运算指令群组;分支指令群组;长-立即指令群组;以及零操作数指令群组。
9.根据权利要求7所述的计算机装置,其中该等公共字段包含下述组成的至少一者或任意组合:
锁定字段,用以识别特定指令以使其锁定至多个执行单元其中的特定一个;
述词字段,用以识别述词状态,该述词字段包括述词暂存器信息以及述词否定字段;
运算码字段,包含该等指令群组的第一部分的该等指令内的完整运算码数据;包含在该等指令群组的第二部分中的该等指令内的第一部分运算码数据,而该等特定群组字段其中之一包含第二部分运算码数据。
10.根据权利要求7所述的计算机装置,其中该等特定群组字段包含下述组成的至少一者或任意组合:
标记字段,用以存放跳越标记值,对应于该等指令群组其中之一分支指令群组;
子运算码字段,包含辅助运算码数据,该辅助运算码数据包括下述组合之中至少一者:数学函数以及逻辑函数;
对应至第一操作数的第一暂存器选择字段;
对应至第二操作数的第二暂存器选择字段;
对应至第三操作数的第三暂存器选择字段;以及
立即值字段,用以存放暂存器立即运算的立即值。
11.根据权利要求7所述的计算机装置,其中该等特定模式字段包含下述组成的至少一者或任意组合:
通道复制字段,用以复制操作数值至多个额外处理通道;
第一拌合字段,包含对应于第一操作数的第一拌合值;
第二拌合字段,包含对应于第二操作数的第二拌合值;
第三拌合字段,包含对应于第三操作数的第三拌合值;
写入屏蔽字段;以及
通道复制字段。
12.根据权利要求7所述的计算机装置,其中该等模式配置字段包含下述组成的至少一者或任意组合:第一操作数字段;第二操作数字段;第三操作数字段;以及终点字段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/347,922 | 2006-02-06 | ||
US11/347,922 US20070186210A1 (en) | 2006-02-06 | 2006-02-06 | Instruction set encoding in a dual-mode computer processing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101013359A CN101013359A (zh) | 2007-08-08 |
CN100495320C true CN100495320C (zh) | 2009-06-03 |
Family
ID=38335440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100067336A Active CN100495320C (zh) | 2006-02-06 | 2007-02-02 | 在双模式计算机处理环境下的指令集编码方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070186210A1 (zh) |
CN (1) | CN100495320C (zh) |
TW (1) | TW200805146A (zh) |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010945B1 (en) * | 2006-12-08 | 2011-08-30 | Nvidia Corporation | Vector data types with swizzling and write masking for C++ |
US8010944B1 (en) | 2006-12-08 | 2011-08-30 | Nvidia Corporation | Vector data types with swizzling and write masking for C++ |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US9015399B2 (en) * | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
EP2128774A1 (en) * | 2008-05-29 | 2009-12-02 | Accenture Global Services GmbH | Techniques for computing similarity measurements between segments representative of documents |
US20100115233A1 (en) * | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8205066B2 (en) * | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US10002161B2 (en) * | 2008-12-03 | 2018-06-19 | Sap Se | Multithreading and concurrency control for a rule-based transaction engine |
US8392693B2 (en) * | 2009-08-28 | 2013-03-05 | Via Technologies, Inc. | Fast REP STOS using grabline operations |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
CN104025024B (zh) * | 2011-12-22 | 2018-07-17 | 英特尔公司 | 打包数据操作掩码移位处理器、方法及系统 |
WO2013095659A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Multi-element instruction with different read and write masks |
US9507593B2 (en) | 2011-12-23 | 2016-11-29 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
WO2013095635A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for merging mask patterns |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9990202B2 (en) | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
US9996350B2 (en) | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US10203955B2 (en) * | 2014-12-31 | 2019-02-12 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality |
US10331449B2 (en) * | 2016-01-22 | 2019-06-25 | Arm Limited | Encoding instructions identifying first and second architectural register numbers |
US10275243B2 (en) | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
WO2018174936A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
US11023235B2 (en) | 2017-12-29 | 2021-06-01 | Intel Corporation | Systems and methods to zero a tile register pair |
US11093247B2 (en) | 2017-12-29 | 2021-08-17 | Intel Corporation | Systems and methods to load a tile register pair |
US11809869B2 (en) | 2017-12-29 | 2023-11-07 | Intel Corporation | Systems and methods to store a tile register pair to memory |
US11669326B2 (en) | 2017-12-29 | 2023-06-06 | Intel Corporation | Systems, methods, and apparatuses for dot product operations |
US11816483B2 (en) | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US11789729B2 (en) | 2017-12-29 | 2023-10-17 | Intel Corporation | Systems and methods for computing dot products of nibbles in two tile operands |
US10664287B2 (en) | 2018-03-30 | 2020-05-26 | Intel Corporation | Systems and methods for implementing chained tile operations |
US11093579B2 (en) | 2018-09-05 | 2021-08-17 | Intel Corporation | FP16-S7E8 mixed precision for deep learning and other algorithms |
US10970076B2 (en) | 2018-09-14 | 2021-04-06 | Intel Corporation | Systems and methods for performing instructions specifying ternary tile logic operations |
US11579883B2 (en) | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US10990396B2 (en) | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US10866786B2 (en) | 2018-09-27 | 2020-12-15 | Intel Corporation | Systems and methods for performing instructions to transpose rectangular tiles |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
US10963256B2 (en) | 2018-09-28 | 2021-03-30 | Intel Corporation | Systems and methods for performing instructions to transform matrices into row-interleaved format |
US10896043B2 (en) | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
US10929143B2 (en) | 2018-09-28 | 2021-02-23 | Intel Corporation | Method and apparatus for efficient matrix alignment in a systolic array |
US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
US10929503B2 (en) | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
US11886875B2 (en) * | 2018-12-26 | 2024-01-30 | Intel Corporation | Systems and methods for performing nibble-sized operations on matrix elements |
US11294671B2 (en) | 2018-12-26 | 2022-04-05 | Intel Corporation | Systems and methods for performing duplicate detection instructions on 2D data |
US20200210517A1 (en) | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US10942985B2 (en) | 2018-12-29 | 2021-03-09 | Intel Corporation | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions |
US10922077B2 (en) | 2018-12-29 | 2021-02-16 | Intel Corporation | Apparatuses, methods, and systems for stencil configuration and computation instructions |
US11269630B2 (en) | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
US11016731B2 (en) | 2019-03-29 | 2021-05-25 | Intel Corporation | Using Fuzzy-Jbit location of floating-point multiply-accumulate results |
US11175891B2 (en) | 2019-03-30 | 2021-11-16 | Intel Corporation | Systems and methods to perform floating-point addition with selected rounding |
US10990397B2 (en) | 2019-03-30 | 2021-04-27 | Intel Corporation | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator |
US11403097B2 (en) | 2019-06-26 | 2022-08-02 | Intel Corporation | Systems and methods to skip inconsequential matrix operations |
US11334647B2 (en) | 2019-06-29 | 2022-05-17 | Intel Corporation | Apparatuses, methods, and systems for enhanced matrix multiplier architecture |
US11263014B2 (en) * | 2019-08-05 | 2022-03-01 | Arm Limited | Sharing instruction encoding space between a coprocessor and auxiliary execution circuitry |
US11714875B2 (en) | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
US12112167B2 (en) | 2020-06-27 | 2024-10-08 | Intel Corporation | Matrix data scatter and gather between rows and irregularly spaced memory locations |
US11972230B2 (en) | 2020-06-27 | 2024-04-30 | Intel Corporation | Matrix transpose and multiply |
US11941395B2 (en) | 2020-09-26 | 2024-03-26 | Intel Corporation | Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions |
US12001385B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator |
US12001887B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0627682B1 (en) * | 1993-06-04 | 1999-05-26 | Sun Microsystems, Inc. | Floating-point processor for a high performance three dimensional graphics accelerator |
US6006318A (en) * | 1995-08-16 | 1999-12-21 | Microunity Systems Engineering, Inc. | General purpose, dynamic partitioning, programmable media processor |
US5905893A (en) * | 1996-06-10 | 1999-05-18 | Lsi Logic Corporation | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
JPH1185512A (ja) * | 1997-09-03 | 1999-03-30 | Fujitsu Ltd | 命令圧縮格納および命令復元機能を有するデータ処理装置 |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6577316B2 (en) * | 1998-07-17 | 2003-06-10 | 3Dlabs, Inc., Ltd | Wide instruction word graphics processor |
US6263429B1 (en) * | 1998-09-30 | 2001-07-17 | Conexant Systems, Inc. | Dynamic microcode for embedded processors |
US6195743B1 (en) * | 1999-01-29 | 2001-02-27 | International Business Machines Corporation | Method and system for compressing reduced instruction set computer (RISC) executable code through instruction set expansion |
US6317867B1 (en) * | 1999-01-29 | 2001-11-13 | International Business Machines Corporation | Method and system for clustering instructions within executable code for compression |
US6233674B1 (en) * | 1999-01-29 | 2001-05-15 | International Business Machines Corporation | Method and system for scope-based compression of register and literal encoding in a reduced instruction set computer (RISC) |
JP2001034471A (ja) * | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | Vliw方式プロセッサ |
US6870540B1 (en) * | 1999-12-06 | 2005-03-22 | Nvidia Corporation | System, method and computer program product for a programmable pixel processing model with instruction set |
US6844880B1 (en) * | 1999-12-06 | 2005-01-18 | Nvidia Corporation | System, method and computer program product for an improved programmable vertex processing model with instruction set |
JP3940542B2 (ja) * | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US7584234B2 (en) * | 2002-05-23 | 2009-09-01 | Qsigma, Inc. | Method and apparatus for narrow to very wide instruction generation for arithmetic circuitry |
EP1332429B1 (en) * | 2000-11-06 | 2011-02-09 | Broadcom Corporation | Reconfigurable processing system and method |
US7028286B2 (en) * | 2001-04-13 | 2006-04-11 | Pts Corporation | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture |
GB2382886B (en) * | 2001-10-31 | 2006-03-15 | Alphamosaic Ltd | Vector processing system |
US20040073773A1 (en) * | 2002-02-06 | 2004-04-15 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US7103621B2 (en) * | 2002-03-29 | 2006-09-05 | Pts Corporation | Processor efficient transformation and lighting implementation for three dimensional graphics utilizing scaled conversion instructions |
US6907598B2 (en) * | 2002-06-05 | 2005-06-14 | Microsoft Corporation | Method and system for compressing program code and interpreting compressed program code |
US6944744B2 (en) * | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
US7002595B2 (en) * | 2002-10-04 | 2006-02-21 | Broadcom Corporation | Processing of color graphics data |
US7203935B2 (en) * | 2002-12-05 | 2007-04-10 | Nec Corporation | Hardware/software platform for rapid prototyping of code compression technologies |
US20040193845A1 (en) * | 2003-03-24 | 2004-09-30 | Sun Microsystems, Inc. | Stall technique to facilitate atomicity in processor execution of helper set |
US20040193838A1 (en) * | 2003-03-31 | 2004-09-30 | Patrick Devaney | Vector instructions composed from scalar instructions |
US7219218B2 (en) * | 2003-03-31 | 2007-05-15 | Sun Microsystems, Inc. | Vector technique for addressing helper instruction groups associated with complex instructions |
US20040193837A1 (en) * | 2003-03-31 | 2004-09-30 | Patrick Devaney | CPU datapaths and local memory that executes either vector or superscalar instructions |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
-
2006
- 2006-02-06 US US11/347,922 patent/US20070186210A1/en not_active Abandoned
-
2007
- 2007-01-25 TW TW096102830A patent/TW200805146A/zh unknown
- 2007-02-02 CN CNB2007100067336A patent/CN100495320C/zh active Active
Non-Patent Citations (2)
Title |
---|
IA-64 Application Developer’s Architecture Guide. Inter,Corporation.. 1999 |
IA-64 Application Developer’s Architecture Guide. Inter,Corporation.. 1999 * |
Also Published As
Publication number | Publication date |
---|---|
US20070186210A1 (en) | 2007-08-09 |
CN101013359A (zh) | 2007-08-08 |
TW200805146A (en) | 2008-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100495320C (zh) | 在双模式计算机处理环境下的指令集编码方法 | |
CN100583027C (zh) | 用于不对称双重路径处理的设备和方法 | |
CN1327340C (zh) | 处理器和编译器 | |
CN103793203B (zh) | 响应于输入数据值降低fma单元中的功率消耗 | |
Burkard et al. | Assignment and matching problems: Solution methods with FORTRAN-programs | |
US6041399A (en) | VLIW system with predicated instruction execution for individual instruction fields | |
CN101937388B (zh) | 一种高可扩展性和可维护性的源代码缺陷检测方法及装置 | |
JP4489102B2 (ja) | プロセッサ構造および応用の最適化のためのプロファイラ | |
CN100472433C (zh) | 用于在双通道处理器中控制处理的装置和方法 | |
CN110312992A (zh) | 用于片矩阵乘法和累加的系统、方法和装置 | |
CN110321159A (zh) | 用于实现链式区块操作的系统和方法 | |
CN103988171A (zh) | 使用大和小浮点值二者来执行算术运算 | |
CN109643233A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN104350492A (zh) | 在大寄存器空间中利用累加的向量乘法 | |
US20050160402A1 (en) | Method and apparatus for adding advanced instructions in an extensible processor architecture | |
CN103853652A (zh) | 一种测试案例生成方法及装置 | |
CN104081341A (zh) | 用于多维数组中的元素偏移量计算的指令 | |
CN104081337A (zh) | 用于响应于单个指令来执行横向部分求和的系统、装置和方法 | |
CN104126167A (zh) | 用于从通用寄存器向向量寄存器进行广播的装置和方法 | |
CN104025022A (zh) | 用于具有推测支持的向量化的装置和方法 | |
CN108268244A (zh) | 用于算术递归的系统、装置和方法 | |
US8959501B2 (en) | Type and length abstraction for data types | |
CN106201870A (zh) | 一种测试gpu的方法及装置 | |
CN102591621B (zh) | 使用计算历史进行预测 | |
CN101963897B (zh) | 用于双数据路径处理的装置和方法 |
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 |