CN104011651B - 用于执行向量计算指令的方法、装置和系统 - Google Patents
用于执行向量计算指令的方法、装置和系统 Download PDFInfo
- Publication number
- CN104011651B CN104011651B CN201180075867.8A CN201180075867A CN104011651B CN 104011651 B CN104011651 B CN 104011651B CN 201180075867 A CN201180075867 A CN 201180075867A CN 104011651 B CN104011651 B CN 104011651B
- Authority
- CN
- China
- Prior art keywords
- instruction
- vector
- look
- values
- stored
- 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 title claims description 22
- 239000013598 vector Substances 0.000 claims abstract description 247
- 230000015654 memory Effects 0.000 claims description 11
- 241000208340 Araliaceae Species 0.000 claims description 3
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 3
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 3
- 235000008434 ginseng Nutrition 0.000 claims description 3
- 238000003860 storage Methods 0.000 abstract description 20
- 238000005516 engineering process Methods 0.000 abstract description 10
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 241000196324 Embryophyta Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 244000299461 Theobroma cacao Species 0.000 description 1
- 235000009470 Theobroma cacao Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
用于通过处理器执行向量指令的技术和机构。在一实施例中,执行向量定义指令以执行与将第一向量设为参考向量相关联的操作,这些操作导致向量乘法信息被存储在查找表中。在另一实施例中,随后执行向量乘法指令以基于存储在查找表中的向量乘法信息来执行向量乘法计算。
Description
背景技术
1.发明领域
各实施例一般涉及用于在计算机系统的处理器中执行向量计算的技术。更具体地,特定实施例提供一个向量指令的执行以使得初步向量计算可供后续向量指令的执行来访问。
2.背景技术
集成电路(IC)制造的改进已经允许更小和/或更紧密的集成处理器架构。这些处理器中的电路一般倾向于对功率使用的低效日益敏感。因此,功率效率的逐步改进往往导致这些处理器中的逐渐重要的性能增益。
往往需要计算机平台中的逐渐处理器密集的执行的连续数代的较大、更复杂的计算环境(例如,在线游戏、流传输、云联网、虚拟化等)对这些增益的需求日益增加。因此,由于要求形状因子持续变小的平台支持持续变大的处理负载,因此将需要对功率使用的进一步改进。
附图简述
以解说方式且非限定地在如下附图中示出本发明的多个实施例,在附图中:
图1是示出根据实施例的用于传递向量指令的计算机系统的元件的框图。
图2是示出根据实施例的用于执行向量指令的处理器的元件的框图。
图3是示出根据实施例的用于执行向量指令的方法的元素的流程图。
图4是示出根据实施例的用于执行向量指令的处理器的元件的框图。
图5是示出根据实施例来执行的向量计算操作的时序图。
详细描述
此处所讨论的各实施例多方面地提供用于提高向量计算(例如,其中一个操作数可以跨多个向量计算保持不变)的实现中的能效的技术和/或机制。这些技术和/或机制例如可以适用于图形、数字信号处理和/或多媒体应用,但特定实施例不限于此。
在一实施例中,处理器可支持(例如作为指令集中的机器指令)此处被称为向量定义(“dot-vdef”)的第一种类型的向量指令,以供处理器将某一操作数向量设为当前参考向量。dot-vdef指令的执行例如可包括处理器计算一个或多个点积值的集合并将这一集合加载到处理器的查找表中。这种查找表信息可变得可供稍后访问-例如在处理器对某一其它向量指令的执行期间。例如,处理器可支持此处被称为向量乘法(“dot-vmul”)的第二种类型的向量指令,以供处理器返回等于当前参考向量与该dot-vmul指令的某一操作数的点积的值。
作为说明,可执行“dot-vdef X”指令以定义某一向量X将被用作当前参考向量。执行该“dot-vdef X”指令可包括预计算一个或多个点积并将其加载到查找表中-例如向量X和相应的二元向量的每一个点积。后续的“dot-vmul Y”指令可参考(例如,隐含参考)当前参考向量,其中该“dot-vmul Y”指令被解码为返回等于点积X·Y的值的指令。执行该“dot-vmul Y”指令可包括处理器计算X·Y的算术逻辑-例如基于由最近的dot-vref指令“dot-vdef X”先前存储在查找表中的预计算的点积中的一个或多个。向量Y中的信息可确定哪些预计算的点积有助于X·Y的计算。例如,向量Y可用于在执行“dot-vmul Y”指令期间寻址查找表中的一个或多个条目。
使用这种dot-vdef指令类型和/或dot-vmul指令类型的使用例如可以直接适用于定点操作数的标量乘法或点积乘法和/或间接适用于被构建在这种标量或点积乘法上的更复杂的操作。确定和存储关于参考向量的查找表信息的处理器资源成本(例如,时间、能量、硬件等)可通过对多个后续向量乘法运算重复使用这种信息来分摊。另选地或另外地,可使用尺寸可变查找表、多个查找表和/或多端口查找表来支持dot-vdef和/或dot-vmul执行。
图1示出了根据一个实施例的用于执行向量计算的说明性计算机平台100的元件。计算机平台100例如可以包括个人计算机的硬件平台,诸如台式计算机、膝上型计算机、手持式计算机(例如平板、掌上计算机、蜂窝电话、媒体播放器等)和/或其它这样的计算机系统。另选地或另外地,计算机平台100可允许作为服务器、工作站或其它这样的计算机系统来操作。或者,各实施例可以在一个或多个嵌入式应用中(例如,汽车、移动网络基站等的数据处理系统中)实现,其中例如嵌入式处理器实现数字信号处理或者涉及大量向量计算的各种其它应用中的任一个。
在一实施例中,计算机平台100包括由说明性总线101表示的用于传递信息的至少一个互连以及用于处理这些信息的处理器109(例如中央处理单元)。处理器109可包括复杂指令集计算机(CISC)型架构、精简指令集计算机(RISC)型架构和/或各种处理器架构类型中的任一种的功能。处理器109可以经由总线101与计算机平台100的一个或多个其它组件耦合。作为说明而非限制,计算机平台100可包括由耦合到总线101的说明性主存储器104表示的随机存取存储器(RAM)或其它动态存储设备,以存储将由处理器109执行的信息和/或指令。主存储器104还可用于存储处理器109执行指令期间的临时变量或其它中间信息。计算机平台100可另外地或另选地包括只读存储器(ROM)106和/或其它静态存储设备(例如其中ROM106经由总线101耦合到处理器109),以便为处理器109存储信息和/或指令。
在一实施例中,计算机平台100另外地或另选地包括例如经由总线101耦合到处理器109的数据存储设备107(例如,磁盘、光盘和/或其它机器可读介质)。数据存储设备107例如可包括将在处理器109上操作和/或以其它方式由处理器109访问的指令或其它信息。在一实施例中,处理器109可基于存储在主存储器104、ROM106、数据存储设备107或任何其它合适的数据源中的操作数信息来执行向量计算。
计算机平台100可另外地或另选地包括用于向计算机用户显示信息的显示设备121。显示设备121例如可包括帧缓冲器、专用图形渲染设备、阴极射线管(CRT)、平板显示器和/或类似物。另外地或另选地,计算机平台100可包括输入设备122-例如包括用于接收用户输入的字母数字和/或其它键。另外地或另选地,计算机平台100可包括诸如鼠标、滚动球、笔、触摸屏或光标方向键等光标控制设备123,以便向处理器109传递位置、选择或其它光标信息和/或控制例如显示设备121上的光标移动。
计算机平台100可另外地或另选地具有诸如打印机等复印设备124,以便将指令、数据或其它信息打印在诸如纸张、胶片或相似类型的介质等介质上。另外地或另选地,计算机平台100可包括诸如话筒或扬声器等声音记录/回放设备125,以便接收和/或输出音频信息。计算机平台100可另外地或另选地包括诸如静态或运动相机等数字视频设备以数字化图像。
在一实施例中,计算机平台100包括或耦合到用于将计算机平台100链接到一个或多个网络(未示出)(例如包括专用存储区域网络(SAN)、局域网(LAN)、广域网(WAN)、虚拟LAN(VLAN)、因特网等)的网络接口190。作为说明而非限制,网络接口190可包括网络接口卡(NIC)、诸如偶极天线等天线或无线收发机中的一个或多个,但本发明的范围在这方面不受限。
处理器109可支持与各种常规指令集(例如,与现有处理器所使用的x86指令集兼容的指令集)中的任一种中的那些指令相似的指令。作为说明而非限制,处理器109可支持与如由加利福尼亚圣克拉拉市的英特尔公司定义的IATM英特尔架构中所支持的部分或全部操作相对应的操作(参见可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网developer.intel.com上获得的“IA-32Intel.RTM.架构软件开发者手册卷2:指令集参考”)。结果,除了特定实施例的操作之外,处理器109可支持与例如现有的x86操作相对应的一个或多个操作。
图2示出根据一实施例的用于执行向量指令的处理器200的某些元件。处理器200可以耦合以便在计算机平台中操作,例如提供计算机平台100的功能中的部分或全部的平台。例如,处理器200可包括处理器109的部分或全部特征,但特定实施例在这方面不受限。作为说明而非限制,处理器200可包括中央处理单元(CPU)、数学协处理器、图形处理器和/或用于执行机器指令的各种另外或另选的数据处理设备中的任一种。
处理器200可包括用于接收处理器与计算机平台的另一组件交换的信息(例如,数据、地址和/或命令信息)的接口205。接口205在图2中被示为用于例如经由总线或其它通信硬件来将处理器200耦合到计算机平台的外置硬件的接口。然而,在一替换实施例中,接口205可以是将处理器200的电路逻辑耦合到其它片上电路逻辑(例如,片上系统的非核逻辑)的集成电路的内置接口。在另一实施例中,接口205可用作供处理器200的多个核彼此通信的内置接口。
接口205可以直接或间接耦合到处理器200的控制模块210。控制模块210可包括提供用于指示处理器200的各种组件的操作的控制信令的电路逻辑。例如,控制模块210可提供用于确定或以其他方式控制一个或多个向量指令的执行的控制功能。在一实施例中,控制模块210包括处理器200的解码器212或以其它方式具有对该解码器的访问权,该解码器包括检测经由接口205接收到的指令并且进一步标识与检测到的指令相关联的指令类型的电路逻辑。这种所标识的指令类型例如可以是处理器200所支持的指令集中的多种指令类型之一。至少部分地基于所标识的指令类型,解码器212可信令将要执行一个或多个操作,即用于执行检测到的指令的操作。在一实施例中,解码器212包括用于解码各种一个或多个常规机器代码指令中的任一种的逻辑。
处理器200还可包括直接或间接耦合到控制模块210的执行单元220,执行单元220包括用于执行用于指令执行的一个或多个数据操作的电路逻辑。执行单元220例如可以包括基于解码器212解码指令而多方面地执行操作的电路逻辑。
在一实施例中,解码器212包括向量指令逻辑214或以其他方式具有对该向量指令逻辑的访问权,该向量指令逻辑包括用于解码一种或多种向量指令类型的指令的电路。如此处所使用的,“向量指令”指的是对其的执行包括执行涉及至少一个向量(例如,具有多个元素的向量)的一个或多个操作的指令。执行单元220可基于来自控制模块210的一个或多个控制信号(例如,包括响应于向量指令逻辑214检测到所接收到的指令具有特定向量指令类型而交换的控制信号)来执行一个或多个操作。
在一实施例中,向量指令逻辑214包括用于实现对dot-vdef指令类型的解码的逻辑。具有dot-vdef指令类型的指令的执行可将向量设为参考向量,例如其中该参考向量变得可供向量指令类型的任何后续指令使用。在一实施例中,这种后续向量指令可以具有被向量指令逻辑214识别为隐含参考当前参考向量的指令类型。在其中dot-vdef指令将特定向量设为参考向量的实施例中,该特定向量可保持当前参考向量直到对后续dot-vdef指令的执行将另一向量设为参考向量。
在一实施例中,向量指令逻辑214包括用于实现对dot-mul指令类型的解码以指定或以其他方式指示将乘以当前参考向量的操作数向量的逻辑。例如,dot-mul指令的执行可返回等于该操作数向量与当前参考向量的点积的值。dot-mul指令可包括指定向量点积运算的命令信息。dot-mul可以另外包括指定操作数向量的元素的数据信息和/或指定操作数向量在计算机平台的存储器中的位置的地址信息。可提供供dot-mul操作指示操作数向量的各种另外或另选的技术中的任一种。
在一实施例中,执行单元220可包括(由说明性点积算术逻辑单元(ALU)225表示的)用于实现用于执行上述dot-vdef指令类型的一个或多个操作的逻辑。dot-vdef指令的执行可包括点积ALU225和/或执行单元220中的类似逻辑计算各自对应于向量集中的不同相应向量的多个值。在一实施例中,该向量集包括一个或多个布尔向量。如此处所使用的,“布尔向量”指的是其中该向量中的每一个元素都只具有两个可能的布尔值中的相应一个值(例如,逻辑‘0’和逻辑‘1’中的一个)的向量。确定多个值之一例如可包括执行单元220计算参考向量与对应的布尔或其它向量的点积。在一实施例中,对于多个值中的每一个,确定该值可包括计算参考向量与该值的对应向量的点积。
dot-vdef指令的执行可以预计算并存储比由参考向量与相应的布尔向量的点积给出的那些值更大量的值。例如,实施例可预计算并存储由参考向量与具有相同维度和字宽的各种可能向量中的任一个的点积给出的多个值。出于展示各种实施例的特征的缘故,此处在计算各自对应于相应的布尔向量的多个值方面讨论各种向量指令的执行。然而,这种讨论可以扩展为适用于计算对应于各种另外或另选类型的向量中的任一个的值。
处理器200可包括用于将多个值存储在例如查找表235中的存储器230。存储器230例如可包括高速缓存、寄存器组和/或各种另外或另选存储装置中的任一种。执行单元220可以在查找表235中存储多个值-例如作为dot-vdef指令的执行的一部分。存储在查找表235中的多个值可作为参考信息而变得可供访问以便执行一个或多个后续向量指令-例如包括dot-vmul指令。在一实施例中,即使在通过执行后续dot-vmul指令来被访问后,该多个值也可以在查找表235中作为参考信息保持可用。
在一实施例中,点积算术逻辑单元(ALU)225和/或执行单元220中的其它这样的算术电路逻辑可实现用于执行dot-vmul指令的一个或多个操作。dot-vmul指令可以隐含地(例如,仅仅隐含地)参考当前参考向量。dot-vmul指令可包括指定或以其他方式指示将乘以当前参考向量的操作数向量的一个或多个参数。执行dot-vmul可返回等于当前参考向量与由dot-vmul指令的一个或多个参数指示的操作数向量的点积的值。在一实施例中,执行单元220可包括多个ALU,各自实现与ALU225的功能类似的功能。例如,执行单元220中的多个dot-vdef使能ALU各自可同时支持用于各种dot-vmul计算的不同的相应参考向量。
图3示出根据一实施例的用于执行向量指令的方法300的某些元素。方法300可可由包括处理器200的部分或全部特征的处理器来执行,但特定实施例在这方面不受限。
在一实施例中,方法300在执行向量定义指令类型的第一指令的过程中由处理器执行。该处理器例如可实现或以其他方式包括支持包括向量定义指令类型的多种指令类型的指令集。第一指令可包括提供第一向量的指示的数据和/或地址信息-例如其中第一指令的执行是执行与将第一向量设为参考向量相关联的操作。
方法300中的第一指令的执行可包括在310计算各自对应于不同的相应布尔向量的多个值。在一实施例中,对于每一个布尔向量,计算多个值中的对应值包括计算第一(参考)向量与该布尔向量的点积。在一实施例中,向量定义指令类型支持对将在计算多个值时使用的对应布尔向量的隐含参考。例如,dot-vdef指令类型的指令可先行(forego)对各自将不同地乘以参考向量的任一或所有布尔向量的显式标识符。
方法300还可包括在320将多个值存储在处理器的查找表中。多个值中的每一个都可被存储在查找表中的不同的相应条目中-例如其中每一条目都可使用该条目的对应索引值(或其它这样的寻址信息)来访问。所存储的多个值例如在查找表中可供通过执行另一向量指令(例如dot-vmul指令)来访问。在一实施例中,所存储的多个值可供在查找表中访问直到执行向量定义指令类型的另一指令。在一实施例中,dot-vdef指令的执行可导致只有计算出的点积值最终被存储在查找表中-例如其中参考向量本身可能不被保留以供稍后访问。
在320处的存储之后可执行一个或多个其它向量指令,但特定实施例在这方面不受限。作为说明而非限制,在方法300中的指令执行之后的向量指令的执行可包括在查找表中查找一个或多个值。在一实施例中,由处理器实现的指令集支持另一向量指令类型以访问查找表中可用的所存储的多个值。这一向量指令类型可允许仅仅隐含地参考当前参考向量和/或对应于该当前参考向量的多个值。例如,该处理器还可执行指令集所支持的向量乘法指令类型的第二指令。第二指令例如可包括用于指定或以其他方式指示第二向量的数据和/或地址信息。
第二指令的执行例如可包括基于查找表中所存储的多个值来确定当前参考向量与由第二指令的一个或多个参数指示的操作数向量的点积。确定当前参考向量与操作数向量的点积可包括标识将有助于(例如作为加法或乘法操作中的操作数)最终点积值的一个或多个项。
作为说明而非限制,标识这一个或多个项可包括标识要在查找表中访问的第一条目,其中标识第一条目基于操作数向量的元素中的一个或多个(在一个实施例是每一个)。第一条目中所存储的值然后可被检索以供在确定有助于点积值的最终确定的项时使用。在一实施例中,检索到的值可用作将被乘的项,例如基于与该项相关联的权重值。另选地或另外地,检索到的值或计算出的多个检索到的值可用作将与一个或多个其它项求和以确定点积值的项。
图4根据一实施例的用于执行向量指令的处理器400的特定元件的功能表示。处理器400可提供用于执行例如方法300的部分或全部操作的功能。
为了示出不同实施例的特定特征,处理器400的操作在此针对将某一向量X设为参考向量的向量定义指令以及返回等于某一操作数向量Y与当前参考向量X的点积的值的向量乘法指令来讨论。然而,这种讨论可扩展至适用于例如用于确定各种替代向量对中任一对的点积的各种不同的向量指令中的任一个。
处理器400可包括存储与查找表235中所存储的信息类似的信息的查找表420。“dot-vdef X”指令410的执行可包括计算各自对应于不同的相应布尔向量的多个值并将其存储在查找表420中。所存储的每一个值例如可以等于被设为参考向量的向量X与对应于该值的布尔向量的点积。作为说明而非限制,X可以是包括n个元素的向量,其中n是某一正整数,即等于或大于1。
在这一实施例中,“dot-vdef X”指令410的执行可存储至少(2n-1)个值,每一个值对应于具有n个元素的不同的相应布尔向量。这些值可被存储在查找表420的相应条目中-例如其中这些条目各自根据基于对应布尔向量的相应索引值来索引。作为说明而非限制,查找表420可包括条目[1]到[2n-1],每一个条目存储等于参考向量与对应的布尔向量的点积的相应值。查找表420还被示为包括对应于只具有作为值零(0)的元素的布尔向量的条目[0]。然而,在特定实施例中处理器400可先行存储这一条目[0],因为包括这一布尔向量的点积可以是零(0),而不管向量X。在特定实施例中,dot-vdef和dot-vmul可被执行以分别定义并乘以只具有单个元素的参考向量-例如其中dot-vmul乘以具有预定义的参考标量值的给定标量值。
在一实施例中,处理器400可执行“dot-vmul Y”指令430以返回等于参考向量X和操作数向量Y440的点积的值。“dot-vmul Y”指令430的执行可包括执行一个或多个查找表操作以确定(由项t1……tm450的说明性集合表示的)将有助于确定最终点积值的项。项t1……tm450例如可被提供给处理器400的求和单元460-例如其中求和单元460包括用于基于项t1……tm450来执行一个或多个加法操作的电路逻辑。根据不同的实施例,可顺序地或并行地对项t1……tm450进行查找和/或求和。这些查找和/或求和的并行程度可以例如通过查找表读取端口的数量和/或求和单元460的端口数量来约束。然而,可使用多个版本的查找表420来减少例如由可用于从单个版本的查找表420中读取的有限数量的端口施加的并行约束。
在一实施例中,求和单元460可以在这一求和之前不同地对项t1……tm450中的部分或全部进行乘法-例如该乘法基于与项t1……tm450中的一个或多个相关联的权重值。在一替代实施例中,项t1……tm450中的部分或全部可以是这种乘法的结果-例如其中该乘法是在项t1……tm450被提供给求和单元460之前执行。基于项t1……tm450,求和单元460可计算等于操作数向量Y与参考向量X的点积的结果z470。结果z470可作为执行“dot-vmul Y”指令440的结果来返回。
以下参考涉及无符号整数的说明性计算的集合来说明处理器400的功能。然而,根据不同实施例,这种功能可扩展成适用于各种另外或另选计算中的任一种-例如用于带符号的整数计算或带符号的定点数计算。在该说明性示例中,处理器400执行包括用于指定或以其他方式指示向量A的信息的向量定义指令“dot-vdef A”,其中:
A=[321] (1)
在一实施例中,“dot-vdef A”指令的执行包括处理器400计算各自对应于不同的相应布尔向量的多个值并将其存储在查找表420中。对于多个值中的每一个,处理器400可计算第一(参考)向量和对应的布尔向量的点积。处理器400还可将这多个值存储在查找表420中。以下表1示出了这一查找表的一个示例的元素。
表1:所存储的用于参考向量A的查找条目
条目 | 所存储的值 |
[0] | 0(基于[000]·[321]) |
[1] | 1(基于[001]·[321]) |
[2] | 2(基于[010]·[321]) |
[3] | 3(基于[011]·[321]) |
[4] | 3(基于[100]·[321]) |
[5] | 4(基于[101]·[321]) |
[6] | 5(基于[110]·[321]) |
[7] | 6(基于[111]·[321]) |
表1所示的括号中的信息可以不被实际地存储在查找表420中。表1的所存储的多个值在查找表420中可供例如由执行“dot-vdef A”指令后执行另一指令的处理器400访问。
在向量A被设为参考向量后,处理器400可执行一个或多个向量乘法指令-例如每一个乘法指令都将相应的操作数向量与当前参考向量A相乘。作为说明而非限制,处理器400可接收一起至少部分地实现矩阵B的乘法的多个dot-vmul指令,其中:
该多个dot-vmul指令各自可包括矩阵B中的相应向量-例如向量B1和B2中的相应向量,其中:
且
例如,“dot-vmul B1”指令可返回表示以下计算的结果的值:
而“dot-vmul B2”指令可返回表示以下计算的结果的值:
在一实施例中,“dot-vmul B1”指令和“dot-vmul B2”指令所返回的相应值可用于确定以下计算:
C=A·B=[1046] (7)
“dot-vmul B1”指令的执行可包括确定将从中检索相应值的查找表420的一个或多个条目。
在一个实施例中,用于确定该一个或多个条目的过程可基于以下事实:给定操作数向量可等于一个或多个分向量的总和,该一个或多个分向量进而各自等于相应的二元向量乘以相应的2x值(其中x是与相应的二元向量相关联的权重值)的总和。例如,B1可由如下分量向量来表示:
这种表示向量B1(或类似地其它这样的操作数向量)的能力的后生产物是使用诸如以下示例中示出的那些技术之类的技术来标识查找表的条目的对应能力。在一实施例中,确定条目可基于例如表2所示的B1的元素的二进制表示。
表2:向量B1的元素的二进制表示
包括B1中的元素的二进制表示的位可被不同地分组和排序以确定用于访问查找表420的索引信息。例如,B1中的每一个元素都可有助于对相应组具有特定有效性(significance)(或“权重”)的位(例如,其中位x0、x1、x2是有效性逐渐增加的位),以确定用于查找对应于该有效性/权重的值的索引值。具有特定位有效性的经分组的位可根据向量B1中的元素次序来安排。从这种分组和排序中得出的索引信息的示例在以下表3中示出。
表3:用于基于向量B1的查找的索引信息
基于表3中表示的索引信息,处理器400可访问条目[5]、[3]和[0]中的部分或全部并检索其中所存储的相应值。在一实施例中,处理器400可先行执行基于关于条目[0]的索引信息的查找-例如其中处理器400改为自动将值零(0)与这种索引信息相关联。
从查找表420中检索到的值可用于生成有助于A·B1的最终点积结果的项。在一实施例中,检索到的每一个值都将基于与用于检索该值的索引信息相关联的位有效性/权重来相乘。乘以检索到的值例如可由检索到的值的寄存器移位来实现。
然后可以对所得项执行加法以生成等于操作数向量B1与当前参考向量A的点积的值。检索到的值的乘法(例如通过移位)以及所得项的加法的示例在以下表4中示出。
表4:用于确定A·B1的查找表值处理
“dot-vmul B2”指令的执行可包括与为了执行“dot-vmul B1”指令而执行的那些操作类似的操作。例如,查找表420的条目可基于B2中的元素的二进制表示(例如,如以下表5所示)来确定。
表5:向量B2的元素的二进制表示
包括B2中的元素的二进制表示的位可被不同地彼此分组和排序以确定用于访问查找表420的索引信息。所确定的关于向量B2的索引信息的示例在以下表6中示出。
表6:用于基于向量B2的查找的索引信息
基于表6中表示的索引信息,处理器400可访问条目[2]、[7]和[4]并检索其中所存储的相应值。在一实施例中,处理器400出于计算两个不同项的目的而访问条目[2]一次。
从查找表420中检索到的值可用于生成有助于A·B2的最终点积结果的项。在一实施例中,检索到的每一个值都将基于与用于检索该值的索引信息相关联的位有效性/权重来相乘。然后可以对所得项执行加法以生成等于操作数向量B2与当前参考向量A的点积的值。检索到的值的移位乘法以及所得项的加法的示例在以下表7中示出。
表7:用于确定A·B2的查找表值处理
图5示出了根据一实施例的阐释执行向量指令的操作的时序图500。时序图500例如可表示在处理器400执行各种向量指令期间交换的信号。
时序图500示出了可由处理器在时间510内执行的说明性指令集530。此外,时序图500示出了可以如何在不同时间将不同信息存储在查找表520中-例如至少部分地支持各种参考向量的实现的所存储的信息。
作为说明而非限制,指令530可包括将向量X1设为参考向量的“dot-vdef X1”指令。“dot-vdef X1”指令的执行可导致查找表520存储多个点积值以便变得可用于一个或多个后续指令执行。就存储在查找表520中的关于参考向量X1的信息保持可供在查找表520中访问直到发生特定事件而言,这种信息可被认为是“半恒定”的。例如,用于将X1实现为参考向量的信息可以保持在查找表520中可用,直到另一dot-vdef指令明确将某一其它向量设为参考向量。
查找表520中的关于当前参考向量X1的信息可通过执行一个或多个向量指令来访问。作为说明而非限制,由说明性的“dot-vmul Y1”、“dot-vmul Y2”和“dot-vmul Y3”表示的多个向量乘法指令各自可被执行-例如以便分别确定针对向量Y1、Y2和Y3的点积。例如,“dot-vmul Y1”、“dot-vmul Y2”和“dot-vmul Y3”的执行可分别返回X1·Y1、X1·Y2和X1·Y3的点积值。
另外地或另选地,指令530可包括将向量X2设为参考向量的“dot-vdef X2”指令。“dot-vdef X2”指令的执行可导致查找表520用针对新参考向量X2的另一多个点积值来替换针对先前的参考向量X1的多个点积值。如同先前的参考向量X1,就存储在查找表520中的关于当前参考向量X2的信息保持可供在查找表520中访问直到发生特定事件(例如直到另一dot-vdef指令明确将某个第三向量设为参考向量)而言,这种信息可被认为是半恒定的。
查找表520中的关于当前参考向量X2的信息可通过执行一个或多个向量指令来访问。作为说明而非限制,由说明性的“dot-vmul Y4”、“dot-vmul Y5”和“dot-vmul Y6”表示的多个向量乘法指令各自可被执行-例如以便分别确定针对向量Y4、Y5和Y6的点积。例如,“dot-vmul Y4”、“dot-vmul Y5”和“dot-vmul Y6”的执行可分别返回X2·Y4、X2·Y5和X2·Y6的点积值。
本文描述了用于执行向量计算的技术和架构。在前面的描述中,为了便于说明,阐述了很多具体细节以便提供对特定实施例的透彻理解。然而,对本领域技术人员显而易见的是,某些实施例可在无需这些具体细节的情况下实施。在其他情况下,以框图形式示出结构和设备以避免使说明变得晦涩。
在本说明书中,对“一个实施例”或“一实施例”的引述意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语在“一个实施例中”并不一定全部指代同一实施例。
以对计算机存储器内数据位的操作的算法和符号表示,来呈现本文描述的一些部分。这些算法描述和表示是计算机领域内技术人员使用的手法,它最有效地将其工作本质传达给本领域内其它技术人员。算法在本文中被一般地构思成达到所要求结果的自洽步骤序列。这些步骤需要对物理量进行物理操控。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操控的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、要素、符号、字符、项、数字等被证明是方便的。
然而,应该记住,所有这些和/或类似的术语将与适当的物理量关联,仅仅是应用于这些量的方便的标记。除非明确指明,否则如从本文描述中显而易见的,可以理解,在全文中,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论,指的是计算机系统或类似电子计算设备的动作和进程,该计算机系统或类似电子计算设备操纵在该计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成在该计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内类似地表示为物理量的其他数据。
某些实施例还涉及用于执行本文操作的装置。这些装置可专门构造来用于所需目的,或其可包括通用计算机,该通用计算机由存储在该计算机内的计算机程序有选择地激活或重新配置。这种计算机程序可以存储在计算机可读存储介质中,这些计算机可读存储介质例如但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、诸如动态RAM(DRAM)的随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适用于存储电子指令且耦合至计算机系统总线的任何类型的介质。
本文呈现的算法和显示并非固有地相关于任何特定计算机或其它装置。可以将各种通用系统与根据本文教导的程序一起使用,或可以证明构造更专门的装置来实现所要求的方法步骤是方便的。各种这些系统的所需结构将从本申请中的描述中呈现。另外,不参考任何特定编程语言来描述某些实施例。可以理解,可以使用多种编程语言来实现本文所描述的这些实施例的示教。
除了本文描述的,可对所披露的实施例及其实现作出多种修改而不脱离其范围。因此,本文中的示例和范例应当被解释成解说性的,而非限制性的。本发明的范围应当单独参照后面的权利要求书予以界定。
Claims (28)
1.一种处理器处的方法,所述方法包括:
硬件解码向量定义指令类型的单个第一指令,所述单个第一指令包括第一向量的指示,其中所述处理器的指令集包括所述向量定义指令类型;
执行经解码的单个第一指令,执行所述单个第一指令包括:
计算各自对应于不同的相应布尔向量的一个或多个值的集合,包括对于所述一个或多个值的集合中的每一个值计算所述第一向量与对应的布尔向量的点积;以及
将所述一个或多个值的集合存储在所述处理器的查找表中,其中所存储的一个或多个值的集合在所述查找表中可供通过在执行所述单个第一指令之后的指令执行来访问。
2.如权利要求1所述的方法,其特征在于,所述向量定义指令类型支持所述第一指令对用于所述一个或多个值的集合的对应布尔向量的隐含参考。
3.如权利要求1所述的方法,其特征在于,所述指令集支持用于通过隐含参考来访问所述查找表中可用的所存储的一个或多个值的集合的指令类型。
4.如权利要求1所述的方法,其特征在于,所存储的一个或多个值的集合可供在所述查找表中访问直到执行所述向量定义指令类型的另一指令。
5.如权利要求1所述的方法,其特征在于,进一步包括:
执行向量乘法指令类型的第二指令,所述第二指令包括第二向量的指示,其中所述指令集还包括所述向量乘法指令类型,所述执行所述第二指令包括:
基于所述查找表中所存储的一个或多个值的集合来确定所述第一向量与所述第二向量的点积。
6.如权利要求5所述的方法,其特征在于,所述第二向量包括多个元素,其中所述一个或多个值的集合中的每一个被存储在所述查找表的不同的相应条目中,其中确定所述第一向量与所述第二向量的点积包括:
标识要在所述查找表中访问的第一条目,所述标识所述第一条目基于所述第二向量的多个元素中的每一个;以及
基于存储在所述第一条目中的第一值来确定第一项。
7.如权利要求6所述的方法,其特征在于,确定所述第一项包括根据与所述第一项相关联的权重值来对所述第一值执行乘法。
8.一种用于执行向量计算指令的系统,包括:
总线,用于交换向量定义指令类型的单个第一指令,所述单个第一指令包括第一向量的指示;
处理器,其耦合到所述总线,所述处理器包括:
存储器,用于存储查找表;
解码器,用于解码所述单个第一指令,其中所述处理器的指令集包括所述向量定义指令类型;以及
执行单元,其耦合至所述解码器和所述存储器,并且用于执行所述单个第一指令,其中所述执行单元执行经解码的单个第一指令包括:
所述执行单元计算各自对应于不同的相应布尔向量的一个或多个值的集合,包括对于所述一个或多个值的集合中的每一个值,所述执行单元计算所述第一向量与对应的布尔向量的点积;以及
所述执行单元将所述一个或多个值的集合存储在所述查找表中,其中所存储的一个或多个值的集合在所述查找表中可供通过在执行所述单个第一指令之后的指令执行来访问;以及
网络接口,其耦合到所述处理器,所述网络接口将所述系统连接到网络。
9.如权利要求8所述的系统,其特征在于,所述向量定义指令类型支持所述第一指令对用于所述一个或多个值的集合的对应布尔向量的隐含参考。
10.如权利要求8所述的系统,其特征在于,所述指令集支持用于通过隐含参考来访问所述查找表中可用的所存储的一个或多个值的集合的指令类型。
11.如权利要求8所述的系统,其特征在于,所存储的一个或多个值的集合可供在所述查找表中访问直到执行所述向量定义指令类型的另一指令。
12.如权利要求8所述的系统,其特征在于,所述执行单元进一步用于执行向量乘法指令类型的第二指令,所述第二指令包括第二向量的指示,其中所述指令集还包括所述向量乘法指令类型,其中所述执行单元执行所述第二指令包括所述执行单元基于所述查找表中所存储的一个或多个值的集合来确定所述第一向量与所述第二指令的点积。
13.如权利要求12所述的系统,其特征在于,所述第二向量包括多个元素,其中所述一个或多个值的集合中的每一个值被存储在所述查找表的不同的相应条目中,其中所述执行单元确定所述第一向量与所述第二向量的点积包括:
所述执行单元标识要在所述查找表中访问的第一条目,所述标识所述第一条目基于所述第二向量的多个元素中的每一个;以及
所述执行单元基于存储在所述第一条目中的第一值来确定第一项。
14.如权利要求13所述的系统,其特征在于,所述执行单元确定所述第一项包括所述执行单元根据与所述第一项相关联的权重值来对所述第一值执行乘法。
15.一种处理器,包括:
存储器,用于存储查找表的存储器;
解码器,用于解码向量定义指令类型的单个第一指令,所述单个第一指令包括第一向量的指示,其中所述处理器的指令集包括所述向量定义指令类型;以及
执行单元,其耦合至所述解码器和所述存储器,并且用于执行所述单个第一指令,其中所述执行单元执行经解码的单个第一指令包括:
所述执行单元计算各自对应于不同的相应布尔向量的一个或多个值的集合,包括对于所述一个或多个值的集合中的每一个值,所述执行单元计算所述第一向量与对应的布尔向量的点积;以及
所述执行单元计算将所述一个或多个值的集合存储在所述查找表中,其中所存储的一个或多个值的集合在所述查找表中可供通过在执行所述单个第一指令之后的指令执行来访问。
16.如权利要求15所述的处理器,其特征在于,所述向量定义指令类型支持所述第一指令对用于所述一个或多个值的集合的对应布尔向量的隐含参考。
17.如权利要求15所述的处理器,其特征在于,所述指令集支持用于通过隐含参考来访问所述查找表中可用的所存储的一个或多个值的集合的指令类型。
18.如权利要求15所述的处理器,其特征在于,所存储的一个或多个值的集合可供在所述查找表中访问直到执行所述向量定义指令类型的另一指令。
19.如权利要求15所述的处理器,其特征在于,所述执行单元进一步用于执行向量乘法指令类型的第二指令,所述第二指令包括第二向量的指示,其中所述指令集还包括所述向量乘法指令类型,其中所述执行单元执行所述第二指令包括:所述执行单元基于所述查找表中所存储的一个或多个值的集合来确定所述第一向量与所述第二指令的点积。
20.如权利要求19所述的处理器,其特征在于,所述第二向量包括多个元素,其中所述一个或多个值的集合中的每一个值被存储在所述查找表的不同的相应条目中,其中所述执行单元确定所述第一向量与所述第二向量的点积包括:
所述执行单元标识要在所述查找表中访问的第一条目,所述标识所述第一条目基于所述第二向量的多个元素中的每一个;以及
所述执行单元基于存储在所述第一条目中的第一值来确定第一项。
21.如权利要求20所述的处理器,其特征在于,所述执行单元确定所述第一项包括所述执行单元根据与所述第一项相关联的权重值来对所述第一值执行乘法。
22.一种机器可读介质,包括供处理器执行的向量定义指令类型的单个第一指令,所述第一指令包括第一向量的指示,其中所述处理器的指令集包括所述向量定义指令类型,
所述第一指令,在被所述处理器硬件解码并被执行时,致使所述处理器执行以下操作:
计算各自对应于不同的相应布尔向量的一个或多个值的集合,包括对于所述一个或多个值的集合中的每一个值计算所述第一向量与对应的布尔向量的点积;以及
将所述一个或多个值的集合存储在所述处理器的查找表中,其中所存储的一个或多个值的集合在所述查找表中可供通过在执行所述第一指令之后的指令执行来访问。
23.如权利要求22所述的机器可读介质,其特征在于,所述向量定义指令类型支持所述第一指令对用于所述一个或多个值的集合的对应布尔向量的隐含参考。
24.如权利要求22所述的机器可读介质,其特征在于,所述指令集支持用于通过隐含参考来访问所述查找表中可用的所存储的一个或多个值的集合的指令类型。
25.如权利要求22所述的机器可读介质,其特征在于,所存储的一个或多个值的集合可供在所述查找表中访问直到执行所述向量定义指令类型的另一指令。
26.如权利要求22所述的机器可读介质,其特征在于,进一步包括向量乘法指令类型的第二指令,所述第二指令包括第二向量的指示,其中所述指令集还包括所述向量乘法指令类型,
所述第二指令,在被所述处理器硬件解码并被执行时,致使所述处理器执行以下操作:
基于所述查找表中所存储的一个或多个值的集合来确定所述第一向量与所述第二向量的点积。
27.如权利要求26所述的机器可读介质,其特征在于,所述第二向量包括多个元素,其中所述一个或多个值的集合中的每一个被存储在所述查找表的不同的相应条目中,其中确定所述第一向量与所述第二向量的点积包括:
标识要在所述查找表中访问的第一条目,所述标识所述第一条目基于所述第二向量的多个元素中的每一个;以及
基于存储在所述第一条目中的第一值来确定第一项。
28.如权利要求27所述的机器可读介质,其特征在于,确定所述第一项包括根据与所述第一项相关联的权重值来对所述第一值执行乘法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067005 WO2013095558A1 (en) | 2011-12-22 | 2011-12-22 | Method, apparatus and system for execution of a vector calculation instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104011651A CN104011651A (zh) | 2014-08-27 |
CN104011651B true CN104011651B (zh) | 2017-10-20 |
Family
ID=48669199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075867.8A Active CN104011651B (zh) | 2011-12-22 | 2011-12-22 | 用于执行向量计算指令的方法、装置和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140207838A1 (zh) |
CN (1) | CN104011651B (zh) |
TW (1) | TWI493456B (zh) |
WO (1) | WO2013095558A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3125109B1 (en) * | 2015-07-31 | 2019-02-20 | ARM Limited | Vector length querying instruction |
CN106547916A (zh) * | 2016-11-29 | 2017-03-29 | 中国农业银行股份有限公司 | 一种用户画像标签查询方法及装置 |
CN108958801B (zh) | 2017-10-30 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量最大值指令的方法 |
US20200073636A1 (en) * | 2018-08-31 | 2020-03-05 | Qualcomm Incorporated | Multiply-accumulate (mac) operations for convolutional neural networks |
US12094456B2 (en) | 2018-09-13 | 2024-09-17 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and system |
US20230244484A1 (en) * | 2020-07-09 | 2023-08-03 | The Regents Of The University Of California | Bit-parallel vector composability for neural acceleration |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0621543A2 (en) * | 1993-04-19 | 1994-10-26 | General Instrument Corporation Of Delaware | Inverse discrete cosine transform processor |
US6021423A (en) * | 1997-09-26 | 2000-02-01 | Xilinx, Inc. | Method for parallel-efficient configuring an FPGA for large FFTS and other vector rotation computations |
US6041340A (en) * | 1997-03-14 | 2000-03-21 | Xilinx, Inc. | Method for configuring an FPGA for large FFTs and other vector rotation computations |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3940542B2 (ja) * | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US6731294B1 (en) * | 2000-04-21 | 2004-05-04 | Ati International Srl | Vector engine with pre-accumulation buffer and method therefore |
IL145245A0 (en) * | 2001-09-03 | 2002-06-30 | Jtc 2000 Dev Delaware Inc | System and method including vector-matrix multiplication |
US7681013B1 (en) * | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
EP1512100A2 (en) * | 2002-05-24 | 2005-03-09 | Koninklijke Philips Electronics N.V. | A scalar/vector processor |
JP2006004042A (ja) * | 2004-06-16 | 2006-01-05 | Renesas Technology Corp | データ処理装置 |
TWI274508B (en) * | 2004-10-19 | 2007-02-21 | Ali Corp | Device and method for computing reference address of motion compensation in image processing |
US8307196B2 (en) * | 2006-04-05 | 2012-11-06 | Freescale Semiconductor, Inc. | Data processing system having bit exact instructions and methods therefor |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
JP2009075676A (ja) * | 2007-09-18 | 2009-04-09 | Nec Electronics Corp | マイクロプロセッサ |
US7865693B2 (en) * | 2008-10-14 | 2011-01-04 | International Business Machines Corporation | Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type |
US20100122070A1 (en) * | 2008-11-07 | 2010-05-13 | Nokia Corporation | Combined associative and distributed arithmetics for multiple inner products |
US8761609B1 (en) * | 2009-11-02 | 2014-06-24 | Clariphy Communications, Inc. | High-speed optical communications system |
-
2011
- 2011-12-22 US US13/994,034 patent/US20140207838A1/en not_active Abandoned
- 2011-12-22 CN CN201180075867.8A patent/CN104011651B/zh active Active
- 2011-12-22 WO PCT/US2011/067005 patent/WO2013095558A1/en active Application Filing
-
2012
- 2012-12-07 TW TW101146187A patent/TWI493456B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0621543A2 (en) * | 1993-04-19 | 1994-10-26 | General Instrument Corporation Of Delaware | Inverse discrete cosine transform processor |
US6041340A (en) * | 1997-03-14 | 2000-03-21 | Xilinx, Inc. | Method for configuring an FPGA for large FFTs and other vector rotation computations |
US6021423A (en) * | 1997-09-26 | 2000-02-01 | Xilinx, Inc. | Method for parallel-efficient configuring an FPGA for large FFTS and other vector rotation computations |
Also Published As
Publication number | Publication date |
---|---|
TWI493456B (zh) | 2015-07-21 |
CN104011651A (zh) | 2014-08-27 |
US20140207838A1 (en) | 2014-07-24 |
TW201346762A (zh) | 2013-11-16 |
WO2013095558A1 (en) | 2013-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104011651B (zh) | 用于执行向量计算指令的方法、装置和系统 | |
US20240111533A1 (en) | Systems, methods, and apparatus for tile configuration | |
US10275247B2 (en) | Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices | |
US11023807B2 (en) | Neural network processor | |
US20200210516A1 (en) | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions | |
CN104937542B (zh) | 向量校验和指令 | |
CN104956364B (zh) | 用于促进异常处理的方法和系统 | |
CN104956323B (zh) | 向量伽罗瓦域乘法求和与累加指令 | |
US10922077B2 (en) | Apparatuses, methods, and systems for stencil configuration and computation instructions | |
US20100070741A1 (en) | Microprocessor with fused store address/store data microinstruction | |
CN108009126B (zh) | 一种计算方法及相关产品 | |
CN104937538B (zh) | 向量生成掩码指令 | |
CN107077334A (zh) | 从多维阵列预取多维元素块的硬件装置和方法 | |
US20090313442A1 (en) | Circular buffer support in a single instruction multiple data (simd) data processsor | |
EP3623941A2 (en) | Systems and methods for performing instructions specifying ternary tile logic operations | |
CN111651205B (zh) | 一种用于执行向量内积运算的装置和方法 | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
US20190042541A1 (en) | Systems, methods, and apparatuses for dot product operations | |
CN107111489A (zh) | 莫顿坐标调整处理器、方法、系统和指令 | |
EP3623940A2 (en) | Systems and methods for performing horizontal tile operations | |
CN109992559A (zh) | 多插槽系统中的远程原子操作 | |
CN108108190B (zh) | 一种计算方法及相关产品 | |
US20190042540A1 (en) | Systems, methods, and apparatuses for matrix operations | |
US20190004997A1 (en) | Binary Multiplier for Binary Vector Factorization | |
CN107943756B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |