CN113853582A - 向量索引寄存器 - Google Patents

向量索引寄存器 Download PDF

Info

Publication number
CN113853582A
CN113853582A CN202080037252.5A CN202080037252A CN113853582A CN 113853582 A CN113853582 A CN 113853582A CN 202080037252 A CN202080037252 A CN 202080037252A CN 113853582 A CN113853582 A CN 113853582A
Authority
CN
China
Prior art keywords
vector
vir
ovr
output
count
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080037252.5A
Other languages
English (en)
Inventor
S·J·沃勒克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113853582A publication Critical patent/CN113853582A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3555Indexed addressing using scaling, e.g. multiplication of index

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本文中公开向量处理器中的向量索引寄存器,其各自存储用于存取向量中的多个位置的多个地址。已知在向量处理器中使用标量索引寄存器来通过在向量运算中改变所述标量索引寄存器来存取向量的多个位置。通过使用用于对一或多个操作数向量的位置编索引的向量索引寄存器,可替换所述标量索引寄存器,且可至少避免所述标量索引寄存器的连续改变。

Description

向量索引寄存器
相关申请案
本申请案主张2019年5月20日提交且标题为“向量索引寄存器(VECTOR INDEXREGISTERS)”的第16/417,500号美国专利申请案的优先权,所述美国专利申请案的全部公开内容特此以引用的方式并入本文中。
技术领域
一般来说,本文中所公开的至少一些实施例涉及向量处理器。而且,本文中所公开的至少一些实施例涉及存储用于存取向量的地址的向量处理器中的寄存器。
背景技术
向量处理器可为或包含实施含有指令的指令集的中央处理单元(CPU),所述指令对通常被称为向量的数据阵列进行操作。这与标量处理器不同,其中指令对单个数据项进行操作。与标量处理器相比,向量处理器可极大地提高对某些工作负载的性能,尤其是数值模拟和类似任务。向量处理器出现在20世纪70年代初期,且其中,大部分超级计算设计历经20世纪70年代到20世纪90年代。如标量处理器设计的更常规微处理器设计的性价比迅速下降,从而导致向量处理器的研发和制造较少。
一般来说,常规CPU(例如,基于标量的CPU)一次至多能够操纵几个数据片段。举例来说,此类CPU具有基本上提供将A相加到B且将结果存储在C中的指令。通常通过按某一地址传递到持有用于A、B和C的数据的存储器位置而指向所述数据。解码这个地址且从存储器中获得数据会花费一些时间,在此期间CPU可处于空闲状态以等待所请求的数据出现。
为缩短由这些步骤消耗的时间量,更现代的CPU使用一种称为指令流水线的技术,在所述指令流水线中指令依次通过数个子单元。第一子单元读取地址并解码所述地址,下一个子单元获取那些地址处的值,且下一个子单元自身进行数学运算。利用管线化,CPU甚至在第一指令已经离开CPU之前就开始解码下一个指令,这与装配生产线类似。以此方式,地址解码器和其它所提及的部分同时且不断地处于使用中。由于管线化,任何指令都要花费相同的时间量来完成。
向量处理器通过如下操作改进了管线化:并非仅管线化指令,而是此类处理器还管线化数据本身。因此,并非向量处理器必须不断地解码指令,然后获取完成指令所需的数据,而是向量处理器从存储器读取单个指令。这允许解码时间缩短和功率消耗减少(例如,用向量处理器进行一次解码,而非多次解码)。
向量处理器以及如常用标量处理器的其它类型的处理器包含用于在运行程序或运算期间修改操作数地址的索引寄存器。通常使用索引,且索引有益于进行向量或阵列运算。索引寄存器的内容可与立即地址相加或相减以形成实际数据或操作数的有效地址。通常,指令可测试索引寄存器,且如果测试失败,那么指令可重置循环的开始。一些指令集允许使用多个索引寄存器。
一般来说,已知使用标量寄存器来进行索引。换句话说,已知使用标量索引寄存器。然而,存在与使用标量寄存器来进行索引相关联的许多限制。并且,这些限制中的一些可抑制使用索引寄存器的处理器的性能。举例来说,为了存取操作数向量的多个位置,需要递增标量索引寄存器,且每个递增都需要由处理器单独加载以用于存取操作数向量。
附图说明
根据下文提供的具体实施方式和本公开的各种实施例的附图将更加充分地理解本公开。
图1说明根据本公开的一些实施例的实例计算装置100的实例部分。
图2说明根据本公开的一些实施例的实例计算装置200的实例部分。
图3说明根据本公开的一些实施例的包含向量索引寄存器302的实例系统300。
图4说明根据本公开的一些实施例的包含向量索引寄存器402a、402b和402c的实例系统400。
图5说明根据本公开的一些实施例的包含向量索引寄存器502和向量第一寄存器503的实例系统500。
图6说明根据本公开的一些实施例的用于存取操作数向量的元素的方法600的实例操作。
图7说明根据本公开的一些实施例的用于压缩操作数向量的元素的方法700的实例操作。
图8说明根据本公开的一些实施例的包含用于压缩存储在输入OVR 804中的输入操作数向量的元素的向量索引寄存器802的实例系统800。
图9说明根据本公开的一些实施例的用于扩展操作数向量的元素(例如,经压缩操作数向量的元素)的方法900的实例操作。
图10说明根据本公开的一些实施例的关于对多个经压缩向量的操作的方法1000的实例操作。
具体实施方式
一般来说,本文中所公开的至少一些实施例涉及向量处理器。而且,本文中所公开的至少一些实施例涉及存储用于存取向量的地址的向量处理器中的寄存器。并且,本文中所公开的实施例中的至少一些为向量处理器中的向量索引寄存器,所述向量索引寄存器各自存储多个地址以用于存取向量中的多个位置。
已知在向量处理器中使用标量索引寄存器来通过在向量运算期间改变存储在标量索引寄存器中的值来参考向量的多个位置。然而,通过使用向量索引寄存器来索引一或多个操作数向量的多个位置,标量索引寄存器可以被替换,且至少可避免标量索引寄存器中的值在向量运算期间的连续改变。这仅为本文中所描述的技术问题的技术解决方案的一个实例。
标量或单条目寄存器可存储索引i,所述索引允许向量寄存器上的操作在元素i处开始,或操作可在元素零处开始。操作的后续部分存取每一增量处的元素0+1或i+1。作为旁注,使用存储索引i的单条目寄存器可用于向量第一运算和编索引,其在某一程度上也在本文中公开。
然而,存在与使用标量寄存器或单条目向量来编索引相关联的许多限制。并且,这些限制中的一些可抑制使用索引寄存器的向量处理器的性能。举例来说,为了存取操作数向量的多个位置,需要递增标量或单条目索引寄存器,且每个递增都需要由向量处理器单独加载以用于存取操作数向量。
通过使用向量索引寄存器来索引一或多个操作数向量的多个位置,标量索引寄存器可以被替换,且至少可避免标量索引寄存器在向量运算期间的连续改变。
一般来说,本文中所公开的实施例至少针对本申请的背景部分和其它部分中所提及的技术问题以及本文中未描述但所属领域的技术人员认识到的其它技术问题提供具体技术解决方案。
在一些实施例中,向量索引寄存器(VIR)可为使用选择性索引的向量运算存储地址分量。这在某种程度上类似于向量第一处理或编索引。举例来说,使用选择性索引,VIR可存储地址部分i_1、i_2、...、i_n。这允许对向量寄存器的运算移动通过输入向量的元素i_1、i_2、...、i_n,而非输入向量的i、i+1、i+2、...、i+n。举例来说,使用选择性索引,VIR可存储非依序地址部分i_1、i_3、...、i_8。这允许对向量寄存器的运算移动通过输入向量的非依序元素。
VIR的用途有很多。举例来说,VIR可用于更有效地实施向量压缩或扩展功能。举例来说,当向量比较操作产生所选元素的索引向量时,所选分量可加载于VIR中,所述VIR可用于在压缩向量的产生中进行寻址。VIR中的元素(或VMX(i)中的元素)为用于存取向量V(i)中的非连续元素的地址分量。替代经由单条目索引向量存取V(i),其中对于每一迭代,i=i+1,向量处理器可依序存取V(VMX(i)),其中对于每一迭代,i=+1。而且,以此方式,分量仅从VIR加载一次以供向量处理器使用。如果使用单条目索引向量,例如使用向量第一寄存器,那么输入向量中的元素由开始于单条目索引向量中的值的计数器寻址。为了使用单条目索引寄存器,从索引寄存器依序加载每一地址。再次,通过VIR,存储在VIR中的每个地址或地址分量仅同时加载一次。这对于使用VIR的向量处理器产生显著性能提升。
在一些实施例中,计数器(例如,计数器寄存器)可驱动VIR。而且,多路复用器(例如,N:1多路复用器(即,多输入单输出多路复用器))可用于在计数器的输出之间选择性地切换,以产生输出以对于每一向量迭代存取操作数寄存器的特定位置,或产生来自VIR的索引以对于计数器的每一迭代存取操作数寄存器的特定位置。
本文中所公开的前述特征和其它特征可用于条件性操作。举例来说,本文中所公开的电路中的一者可产生一或多个索引向量,而非产生向量掩码寄存器以用于对向量进行条件性操作。接着,使用索引向量,可分别经由对应VIR评估向量掩码寄存器的分支。VIR加速由向量处理器进行的处理,因为向量掩码不需要产生或反复地产生,且掩码的分量不需要在每次迭代中单独地加载。
此类功能性还可用于向量扩展操作和/或将向量运算的结果合并到向量寄存器中。举例来说,VIR可用于在运算B(VMX(i))=A(i)中编索引,其中“B(VMX(i)”为扩展压缩向量A。而且,VIR可用于在运算B(VMX(i))=A(i)+a中编索引,其中“B(VMX(i)”为扩展压缩向量A,且将标量值“a”相加到扩展向量A。而且,VIR可用于在运算B(VMX(i))=函数(A(VMX(i)),C(VMX(i))中编索引,其中处理器针对经由VIR选择的标记为“VMX”的元素对向量A及C执行运算。这是条件性处理的实例,且还可用于嵌套式条件性处理。
可将存储在VIR(例如,用于存取操作数向量寄存器(OVR)内的元素的[2,4,5,8])中的索引值或寻址分量转换为存储器地址(例如,基地址加上每个存储器单元的增量)。因此,可将本文中所描述的输出,例如本文中所描述的多路复用器的输出转换为存储器地址,以用于以与存取操作数向量寄存器(OVR)类似的方式直接存取主存储器中的向量。
图1说明根据本公开的一些实施例的实例计算装置100的实例部分。如图所示,装置100可以通信方式耦合到一或多个网络112。装置100包含根据本公开的一些实施例的向量处理器102。装置100还包含至少一个总线104、主存储器106、数据存储系统108以及网络接口110。总线104以通信方式耦合向量处理器102、主存储器106、数据存储系统108以及网络接口110。装置100包含计算机系统,所述计算机系统至少包含经由总线104(其可包含多个总线)彼此通信的向量处理器102、主存储器106(例如,只读存储器(ROM)、快闪存储器、如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等)以及数据存储系统108。
换句话说,图1是具有计算机系统的实例装置100的框图,在所述计算机系统中可操作本公开的实施例。在一些实施例中,计算机系统可包含指令集,用于在被执行时致使机器执行本文所论述的方法中的任何一种或多种。在此类实施例中,机器可连接(例如,经由网络接口110联网)到LAN、内联网、外联网和/或因特网(例如,网络112)中的其它机器。所述机器还可作为对等(或分布式)网络环境(例如,本文中所描述的对等网络)中的对等机器或作为云计算基础架构或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
向量处理器102表示根据本公开的一些实施例的一或多个向量处理器。向量处理器102可包含微处理器、中央处理单元或类似物。更具体地说,向量处理器102可包含复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其他指令集的处理器,或实施指令集的组合的处理器,只要所述处理器使用:向量指令、向量寄存器、向量优先和多通道配置即可。向量处理器102也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、图形处理单元(GPU)、网络处理器等。向量处理器102可经配置以执行指令以用于进行本文中所论述的运算和步骤。向量处理器102可进一步包含例如网络接口110的网络接口装置以通过一或多个通信网络(如网络112)通信。
数据存储系统108可包含机器可读存储媒体(也称为计算机可读媒体)且可体现本文中所描述的方法或功能中的一或多种的至少一些方面,所述机器可读存储媒体上存储有一或多个指令集或软件。数据存储系统108可包含非易失性存储装置。指令也可在其由计算机系统执行期间完全或至少部分地驻留在主存储器106内和/或向量处理器102内,主存储器106和向量处理器102也可构成机器可读存储媒体。虽然存储器、向量处理器以及数据存储装置部分在实例实施例中展示为各自作为单个部分,但每个部分都应被认为包含可存储指令并且进行其相应运算的单个部分或多个部分。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
图2说明根据本公开的一些实施例的实例计算装置200的实例部分。如图所示,计算装置200包含向量处理器102以及总线104和主存储器106(例如,见图1)。计算装置200还可为或包含计算装置100。
如图2中所展示,向量处理器102包含向量寄存器202、标量寄存器204、总线206、算术逻辑单元208(ALU 208)以及向量加载存储单元210。计算装置200的其它实施例可包含标量寄存器204,所述标量寄存器204位于向量处理器102外部或位于向量处理器的与向量处理器中具有向量寄存器202的单元分离的单元中。总线206以通信方式耦合向量寄存器202、标量寄存器204、算术逻辑单元(ALU)208以及向量加载存储单元210,且此类分量可经由总线206(其可包含多个总线)彼此通信。向量寄存器202包含多个向量寄存器。并且,ALU 208包含多个ALU——例如算术逻辑单元(ALU)0、ALU 1以及ALU N。
向量处理器102包含至少一个向量索引寄存器。向量处理器102可为或包含实施指令的一或多个中央处理单元(CPU),所述指令对称作向量的一维数据数组进行操作。
向量处理器102中的向量寄存器202可包含操作数向量寄存器(即,输入向量寄存器)、结果向量寄存器(即,输出向量寄存器)以及向量索引寄存器,所述向量索引寄存器存储用于存取操作数向量寄存器和/或结果向量寄存器中的元素的值。操作数向量寄存器和/或结果向量寄存器的所存取元素中的值可用作如ALU 208中的一或多个的ALU的输入。
一般来说,向量处理器102可包含索引寄存器,所述索引寄存器可包含标量索引寄存器和向量索引寄存器,如图3、4和5中所说明的向量索引寄存器。
向量处理器102的标量寄存器204可包含标量索引寄存器以及操作数标量寄存器(即,输入标量寄存器)和结果标量电阻器(即,输出标量寄存器)。标量寄存器中的至少一些可为对标量和向量的许多不同类型的运算提供索引和控制值。而且,标量寄存器还可提供由向量指令使用的数值。举例来说,由向量寄存器提供的向量可乘以由标量寄存器提供的标量。
标量寄存器204和向量寄存器202中的至少一些可连接到ALU 208的相应ALU。ALU208中的ALU可包含对整数二进制数进行算术和按位运算的组合数字电子电路。在向量处理器102中,如果输出向量寄存器正在操作中提供反馈,那么ALU 208中的ALU可连接到输入向量寄存器,且在一些情况下连接到输出向量寄存器。在此类情况下,输出向量寄存器是输入向量和输出向量两者。
而且,标量寄存器204可包含可编程标量寄存器。可使用可编程标量寄存器,使得由向量寄存器(例如,向量寄存器202中的一个)提供的向量可对由可编程标量寄存器中的一个提供且被编程为可编程标量寄存器中的一个的标量进行操作。举例来说,运算中的一个可包含向量乘以标量值(例如,向量A(i)×标量p)。
所描绘的总线206可配置成以通信方式耦合向量加载存储单元210、向量寄存器202、标量寄存器204以及算术逻辑单元208。总线206可包含2:1多路复用器、3:1多路复用器或N:1多路复用器,所述多路复用器配置成从向量索引寄存器接收输入且输出用于存取操作数向量的地址或地址分量(例如,见图3、4和5)。
向量加载存储单元210包含用于执行加载和存储指令、产生加载和存储向量运算的地址并且从存储器加载数据或将所述数据从向量处理器102的寄存器存储回存储器的电路系统。向量加载存储单元210可执行本文中所描述的许多运算,包含图6到10中的方法600、700、900以及1000的许多运算。
本文中所描述的计算装置中的每一个可为能够(依序或以其它方式)执行指定待由所述机器采取的动作的指令集的机器。另外,虽然针对图1和2的所说明计算装置中的每一者说明单个机器,但术语“机器”还应被认为包含单独地或联合地执行一(或多个)指令集以进行本文中所论述的方法或运算中的任何一或多个的机器的任何集合。并且,所说明的计算装置中的每一个可各自包含至少总线和/或主板、一或多个控制器(例如一或多个CPU)、可包含临时数据存储装置的主存储器、至少一种类型的网络接口、可包含永久性数据存储装置的存储系统,和/或其任何组合。
在论述图3、4和5中所描绘的系统300、400和500之前,重要的是理解,可使用来自向量索引寄存器(VIR)或另一类型的寄存器(例如计数器寄存器)的至少一索引来寻址向量寄存器中的元素。一般来说,当使用计数器寄存器时,计数器针对DO或FOR循环中的每一迭代或步骤将1加到其自身,从而为下一迭代或步骤产生地址。VIR不必由计数器驱动,但其可用于使VIR由计数器驱动。共同计数器既可驱动VIR,又可向接收多路复用器提供单独输入,所述接收多路复用器输出用于存取向量运算中的操作数向量的地址分量。
举例来说,VIR可存储向量VMX,其中VMX(i)且i=0、1、...、n-1。VIR的用途的简单应用实例将为压缩运算,例如B(i)=A(VMX(i))。而且,当另一向量寄存器存储向量A时,A的元素是A(i),其中i=0、1、2、...、n。在常规模式下(如当选择计数器输出以供多路复用器使用时),处理器可进行A+a,其中“a”是从计数器经由多路复用器的定标器。将结果存储在输出向量寄存器B中,其中B(i)=A(i)+a,且其中i=0、1、...、n-1。在使用VIR的模式下(例如,对多路复用器的替代选择控制),处理器可通过使用从VIR的输出产生的地址进行A(VMX)+a。因此,输出向量寄存器具有B,其中B(i)=A(VMX(i))+a,且其中i=0、1、...、n-1。而且,例如,向量处理器可配置成对两个向量进行操作,例如B(i)=函数(A(VMX(i)),C(VMX(i)),其中“函数”经由ALU实施。
图3说明根据本公开的一些实施例的包含向量索引寄存器302的实例系统300。
系统300可为向量处理器102(例如,见图1或2)或多个向量处理器的一部分。系统300包含向量索引寄存器302(VIR 302)、计数器寄存器304、2:1多路复用器306和连接到多路复用器的选择寄存器308。VIR 302可为图2中所示的向量寄存器202中的一者。计数器寄存器304和选择寄存器308可为标量寄存器204中的寄存器。2:1多路复用器306可为图2中所示的总线206或图1中所示的总线104的一部分。
系统300可为包含多个算术逻辑单元(ALU)中的算术逻辑单元(ALU)的向量处理器的部分。向量处理器还可包含多个操作数向量寄存器(OVR)中的操作数向量寄存器。OVR可经配置以存储待用作ALU的向量运算的输入的操作数向量的元素。
VIR 302可经配置以存储对应于OVR中的多个位置的多个地址分量。每一地址分量可添加到用于存取OVR中的对应位置的有效地址。OVR的每一位置可包含待由ALU操作的操作数向量的元素。
在一些实施例中,实例OVR的长度可为64位。如果操作数小于64位(例如,32位整数),那么操作数可右调齐。在此类实例中,类似地应用本文中所描述的编索引技术。举例来说,OVR可包含在其元素中填充以适应不同数据类型。
如图所示,计数器寄存器304为系统300的部分。计数器寄存器304还可为具有系统300的向量处理器的一部分。计数器寄存器304可经配置以存储计数310。计数310可添加到用于存取OVR的有效地址,或计数可由向量处理器使用以对存储于VIR 302中的多个地址分量进行迭代。
如图所示,2:1多路复用器306为系统300的部分。2:1多路复用器306还可为具有系统300的向量处理器的一部分。2:1多路复用器306可经配置以接收来自计数器寄存器304的计数310和来自VIR 302的输出312作为输入。来自VIR 302的输出312可包含VIR的多个地址分量中对应于计数310的一个地址分量。2:1多路复用器306还可经配置以接收模式值314作为选择输入。模式值314可为或包含用于选择计数310的值或用于选择来自VIR 302的输出312的值。2:1多路复用器306还可经配置以根据所接收的模式值314选择计数310或来自VIR302的输出312。2:1多路复用器306还可经配置以经由总线(例如,图1或2的总线中的一者)输出且传达选择输出316,所述选择输出为所选计数或来自VIR的所选输出中的一者。选择输出316可传达到存取用于ALU的OVR的请求器。请求器可为向量处理器的向量加载存储单元(例如,见图2中所示的向量加载存储单元210)或另一向量处理器的向量加载存储单元。
当请求器是向量加载存储单元时,其可经配置以产生向量处理器的加载和存储操作的有效地址。向量加载存储单元还可经配置以针对VIR的每一地址分量将VIR的地址分量添加到用于存取OVR中的对应位置的有效地址。
图4说明根据本公开的一些实施例的包含向量索引寄存器402a、402b和402c的实例系统400。
系统400可为向量处理器102(例如,见图1或2)或多个向量处理器的一部分。系统400包含多个向量索引寄存器,其包含向量索引寄存器402a、402b和402c(VIR 402a、402b和402c)。系统400还包含计数器寄存器404、N:1多路复用器406和连接到多路复用器的选择寄存器408。VIR 402a、402b和402c可为图2中所示的向量寄存器202中的向量寄存器。计数器寄存器404和选择寄存器408可为标量寄存器204中的寄存器。N:1多路复用器406可为图2中所示的总线206或图1中所示的总线104的一部分。N:1多路复用器406为如所展示可接收至少四个输入的多路复用器。但是,在一些实施例中,多路复用器406可接收远多于四个输入。N:1多路复用器406输出可为用于存取操作数向量寄存器(OVR)的地址分量的一个输出。
系统400可为包含ALU ALU的向量处理器的部分。向量处理器还可包含OVR中的OVR。OVR可经配置以存储待用作ALU的向量运算的输入的操作数向量的元素。
VIR 402a、402b和402c各自可经配置以存储对应于例如OVR中的多个位置或三个单独OVR的多个地址分量。在具有多个OVR的实例中,可存在用于每一OVR的单独多路复用器。而且,在具有多个OVR的实例中,对于每一OVR,可存在单独的寻址系统,例如系统300。多个VIR(例如,VIR 402a、402b和402c)的每个地址分量可添加到用于存取OVR中的对应位置或多个OVR的有效地址。OVR的每一位置可包含待由ALU操作的操作数向量的元素。
如图所示,计数器寄存器404为系统400的部分。计数器寄存器404还可为具有系统400的向量处理器的一部分。计数器寄存器404可经配置以存储计数410。计数410可添加到用于存取一或多个OVR的有效地址,或计数可由向量处理器使用以对存储于多个VIR(例如,VIR 402a、402b及402c)中的多个地址分量进行迭代。
如图所示,N:1多路复用器406为系统400的部分。N:1多路复用器406还可为具有系统400的向量处理器的一部分。N:1多路复用器406可经配置以接收来自计数器寄存器404的计数410和来自多个VIR(例如,VIR 402a、402b及402c)的输出(例如,输出412a、412b及412c)作为输入。来自VIR 402a、402b和402c的输出412a、412b和412c各自可包含相应VIR的多个地址分量中对应于计数410的一个地址分量。N:1多路复用器406还可经配置以接收模式值414作为选择输入。模式值414可为或包含用于选择计数410的值,或例如用于选择来自VIR 402a、402b和402c的输出412a、412b和412c的值。N:1多路复用器406还可经配置以根据所接收的模式值414选择计数410或来自VIR 402a、402b和402c的输出412a、412b和412c。N:1多路复用器406还可经配置以经由总线(例如,图1或2的总线中的一者)输出且传达选择输出416,所述选择输出为所选计数或来自VIR的所选输出中的一者。选择输出416可传送到存取用于ALU或多个ALU的OVR或多个OVR的请求器。请求器可为向量处理器的向量加载存储单元(例如,见图2中所示的向量加载存储单元210)或另一向量处理器的向量加载存储单元。当请求器是向量加载存储单元时,其可经配置以产生向量处理器的加载和存储操作的有效地址。向量加载存储单元还可经配置以针对VIR的每一地址分量将地址分量添加到用于存取OVR中的对应位置的有效地址。
在一些实施例中,具有多个VIR的向量处理器可包含计数器,所述计数器经配置以存储计数,且所述计数可添加到用于存取OVR的有效地址,或其中所述计数用于对存储于VIR中的每一相应多个地址分量进行迭代。在此类实例中,处理器还可包含N:1多路复用器,所述N:1多路复用器经配置以接收来自计数器的计数和来自VIR的相应输出作为输入。来自VIR中的给定VIR的每一输出可包含给定VIR的多个地址分量中对应于所述计数的一个地址分量。所述多路复用器还可经配置以接收模式值作为选择输入。所述模式值可为用于选择计数的值或用于选择来自VIR的相应输出中的一者的值。所述多路复用器还可经配置以根据所接收的模式值选择计数或来自VIR的相应输出中的一者。所述多路复用器还可经配置以将所选计数或来自VIR的相应输出中的一个所选输出传达到存取用于ALU的OVR的请求器(例如,例如向量处理器的向量加载存储单元)。
图5说明根据本公开的一些实施例的包含向量索引寄存器502的实例系统500。
系统500可为向量处理器102(例如,见图1或2)或多个向量处理器的一部分。系统500包含向量索引寄存器502(VIR 502)、计数器寄存器504、3:1多路复用器506和连接到多路复用器的选择寄存器508。系统500还包含连接到多路复用器506的向量第一寄存器503。VIR 502可为图2中所示的向量寄存器502中的一者。计数器寄存器504、选择寄存器508及向量第一寄存器503(VFR 503)可为标量寄存器204中的寄存器。3:1多路复用器506可为图2中所示的总线206或图1中所示的总线104的一部分。
系统500可为包含多个算术逻辑单元(ALU)中的算术逻辑单元(ALU)的向量处理器的部分。向量处理器还可包含多个操作数向量寄存器(OVR)中的操作数向量寄存器。OVR可经配置以存储待用作ALU的向量运算的输入的操作数向量的元素。VIR 502可经配置以存储对应于OVR中的多个位置的多个地址分量。每一地址分量可添加到用于存取OVR中的对应位置的有效地址。OVR的每一位置可包含待由ALU操作的操作数向量的元素。
VFR 503可经配置以存储单地址分量511。单地址分量511为基于单地址分量511在OVR的初始位置处引导OVR的初始存取以使得所存取的初始位置不是OVR的第一位置的地址分量。举例来说,如果VFR 503存储标量“3”,那么在OVR的向量运算期间最初存取OVR的第四位置。这替代在OVR的第一位置(例如,OVR(0))处开始存取OVR。
如图所示,计数器寄存器504为系统500的部分。计数器寄存器504还可为具有系统500的向量处理器的一部分。计数器寄存器504可经配置以存储计数510。计数510可添加到用于存取OVR的有效地址,或计数可由向量处理器使用以对存储于VIR 502中的多个地址分量进行迭代。而且,计数510可由向量处理器使用以递增VFR 503的单地址分量511,或如图所示,其可添加到单地址分量511,且计数510与单地址分量511的求和是向量第一地址分量513。
如图所示,3:1多路复用器506为系统500的部分。3:1多路复用器506还可为具有系统500的向量处理器的一部分。3:1多路复用器506可经配置以接收来自计数器寄存器504的计数510和来自VIR 502的输出512以及VFR 503与计数器504的输出的总和的向量第一地址分量513作为输入。来自VIR 502的输出512可包含VIR的多个地址分量中对应于计数510的一个地址分量。3:1多路复用器506还可经配置以接收模式值514作为选择输入。模式值514可为或包含用于选择计数510的值或用于选择来自VIR 502的输出512的值或用于选择VFR503与计数器504的输出的总和的向量第一地址分量513的值。3:1多路复用器506还可经配置以根据所接收的模式值514选择计数510或来自VIR 502的输出512或向量第一地址分量513。3:1多路复用器506还可经配置以经由总线(例如,图1或2的总线中的一者)输出和传达选择输出516,其为所选计数或来自VIR的所选输出或向量第一地址分量513中的一者。选择输出516可传达到存取用于ALU的OVR的请求器。请求器可为向量处理器的向量加载存储单元(例如,见图2中所示的向量加载存储单元210)或另一向量处理器的向量加载存储单元。当请求器是向量加载存储单元时,其可经配置以产生向量处理器的加载和存储操作的有效地址。向量加载存储单元还可经配置以针对VIR的每一地址分量将VIR的地址分量添加到用于存取OVR中的对应位置的有效地址。
在一些实施例中,具有至少一个VIR的向量处理器还可包含至少一个VFR以及连接到VIR和VFR的至少一个相应计数器。计数器可经配置以存储计数。计数可相加到用于存取OVR的有效地址。计数可用于递增向量第一地址分量,或计数用于对存储于VIR中的多个地址分量进行迭代。向量处理器还可包含3:1多路复用器,所述3:1多路复用器经配置以接收来自计数器的计数、来自VFR的输出和来自VIR的输出作为输入。来自VIR的输出可包含VIR的多个地址分量中对应于计数的一个地址分量,且向量第一地址分量也可对应于计数。所述多路复用器可经配置以接收模式值作为选择输入。模式值可为用于选择计数的值、用于选择来自VFR的输出的值或用于选择来自VIR的输出的值。多路复用器可经配置以根据所接收的模式值选择计数、来自VFR的输出或来自VIR的输出,且将所选计数、来自VFR的所选输出或来自VIR的所选输出传达到存取用于ALU的OVR的请求器(例如,例如向量处理器的向量加载存储单元)。
未在图3到5中展示,所述系统可包含用于VIR中的每一VIR的相应向量长度寄存器。每一相应向量长度寄存器可经配置以存储存储于对应VIR中的向量的长度。举例来说,系统300可包含经配置以存储存储于VIR中的向量的长度的向量长度寄存器(VLR)。VLR可用于利用VIR用于向量运算中的地址产生的一些操作中。
在一些实施例中,计数器的输出与替代地址候选项的输出的求和结果可与VIR的输出和/或计数器多路复用(例如,见图5中的向量第一地址分量513,其为计数器504的输出与存储于VFR 503中的单地址分量511的总和)。或者,替代地址候选项(例如,存储于VFR503中的地址分量)可用于设置计数器的初始值。在替代实施例中,由替代地址候选项设置的计数器是与驱动VIR的计数器分开的计数器。
在一些实施例中,具有系统300、400或500中的一者的向量处理器可进一步包含经配置以产生向量处理器的加载和存储操作的有效地址的向量加载存储单元。向量加载存储单元还可经配置以针对VIR的每一地址分量将VIR的地址分量添加到用于存取OVR中的对应位置的有效地址。VLR中的有效地址和值可由一些向量运算使用以增强操作的性能。
在一些实施例中,连接到系统300、400或500中的一者的向量加载存储单元经配置以加载存储于OVR中的操作数向量并且加载存储于标量寄存器中的标量。此向量加载存储单元还可经配置以将所加载操作数向量的元素与所加载的标量进行比较,并且根据所述比较将所加载操作数向量的元素的位置存储在VIR中。举例来说,向量加载存储单元还可经配置以存储与标量匹配的元素的位置、存储大于标量的元素的位置或存储大于或等于标量的元素的位置。而且,举例来说,向量加载存储单元可经配置以存储为偶数的元素的位置,且不存储为奇数的那些元素,或反之亦然。
连接到系统300、400或500中的一者的向量加载存储单元还可经配置以从VIR加载所加载操作数向量的元素的所存储位置。并且,向量加载存储单元可经配置以根据存储于VIR中的所加载位置在所加载操作数向量的元素上迭代向量运算。
在一些实施例中,向量运算为经配置以将所加载操作数向量的元素存储到对应于存储在VIR中的所加载位置的输出OVR中的压缩运算。
在一些实施例中,向量加载存储单元可经配置以从输出OVR加载所存储的元素,且接着根据存储于VIR中的所加载位置在来自输出OVR的所存储元素上迭代第二向量运算。第二向量运算可为经配置以根据存储于VIR中的所加载位置将来自输出OVR的元素存储到第二输出OVR的位置处的第二输出OVR中的扩展运算。扩展运算还可进一步经配置以将标量在第二输出OVR的其它位置处存储到第二输出OVR中。
在一些实施例中,向量加载存储单元可经配置以根据存储于第二VIR中的所加载位置在第二所加载操作数向量的元素上迭代第二压缩运算。在此类实施例中,向量加载存储单元可经配置以将第二所加载操作数向量的元素存储到对应于存储在第二VIR中的所加载位置的第二输出OVR中。并且,向量加载存储单元可经配置以使用来自第一输出OVR和第二输出OVR的元素执行一或多个向量运算。
在一些实施例中,向量加载存储单元可经配置以使用来自第一输出OVR和/或第二输出OVR的元素和存储于第三OVR中的第三操作数向量的元素来执行一或多个向量运算,所述第三操作数向量依序存取且不通过VIR的编索引而产生。所述运算的结果可依序存储于第四OVR中。
如所提及,系统300、400和500可为一或多个向量处理器的一部分。系统300、400和500还可为一或多个向量处理器的较大系统的子系统。
举例来说,系统300、400和500可包含于另一系统中或连接到一或多个向量处理器的另一系统。此系统也可不为向量处理器的一部分。
本文中还公开可包含多个ALU中的ALU的系统。所述系统还可包含多个操作数向量寄存器(OVR)中的OVR。OVR可经配置以存储待用作ALU的向量运算的输入的操作数向量的元素。所述系统还可包含多个向量索引寄存器(VIR)中的VIR。VIR可经配置以存储对应于OVR中的多个位置的多个地址分量。每一地址分量可添加到用于存取OVR中的对应位置的有效地址。并且,OVR的每一位置可包含待由ALU操作的操作数向量的元素。
所述系统还可包含计数器(或计数器寄存器)。计数器可经配置以存储计数。计数至少可相加到用于存取OVR的有效地址,或用于对存储于VIR中的多个地址分量进行迭代。
所述系统还可包含N:1多路复用器。换句话说,所述系统可包含具有多个输入和一个输出的多路复用器。N:1多路复用器可经配置以至少接收来自计数器的计数和来自VIR的输出作为输入。来自VIR的输出可包含VIR的多个地址分量中对应于计数的一个地址分量。N:1多路复用器还可经配置以接收模式值作为选择输入,所述模式值至少为用于选择计数的值或用于选择来自VIR的输出的值。N:1多路复用器还可经配置以至少根据所接收的模式值选择计数或来自VIR的输出。N:1多路复用器还可经配置以将选择输出且传达到存取用于ALU的OVR的向量加载存储单元。
在一些实施例中,计数还可用于递增用于存取OVR的标量索引寄存器的地址分量。在此类实例中,N:1多路复用器可进一步经配置以至少接收来自计数器的计数、来自VIR的输出和来自标量索引寄存器的输出作为输入。N:1多路复用器还可进一步经配置以接收模式值作为选择输入,所述模式值至少为用于选择计数的值、用于选择来自VIR的输出的值,或用于选择来自标量索引寄存器的输出的值。N:1多路复用器还可进一步经配置以根据所接收的模式值至少选择计数、来自VIR的输出或来自标量索引寄存器的输出。
在一些实施例中,标量索引寄存器可为向量第一寄存器(VFR)。VFR可经配置以存储向量第一地址分量。向量第一地址分量可为基于向量第一地址分量在OVR的初始位置处引导OVR的初始存取以使得所存取的初始位置不是OVR的第一位置的地址分量。VFR可用于基于存储于VFR中的值来最初在OVR的任何位置处存取OVR。
在一些实施例中,计数还可用于在存储于VIR中的第二VIR中的多个地址分量上进行迭代。在此类实例中,N:1多路复用器可进一步经配置以至少接收来自计数器的计数、来自VIR的输出和来自第二VIR的输出作为输入。而且,N:1多路复用器可进一步经配置以接收模式值作为选择输入,所述模式值至少为用于选择计数的值、用于选择来自VIR的输出的值,或用于选择来自第二VIR的输出的值。并且,N:1多路复用器可经配置以根据所接收的模式值至少选择计数、来自VIR的输出或来自第二VIR的输出。
图6到10说明根据本公开的一些实施例的实例操作。在一些实施例中,例如向量加载存储单元210的向量加载存储单元可单独地或与向量处理器的其它部分组合地执行或促进图6到10中所说明的操作中的许多或全部。在一些实施例中,本文中所描述的值的存储、加载、确定、递增和改变可由向量处理器的向量加载存储单元根据存储于向量加载存储单元中的指令执行。在一些其它实施例中,向量处理器的其它部分可执行或促进图6到10中所说明的操作以及本文中所描述的其它操作。
一般来说,本文中所描述的系统可实施许多功能,包含向量压缩和扩展功能。举例来说,在存储于VIR中的地址分量列表(例如VMX)中,给定向量A的元素可通过从向量A读出元素A(VMX(i))且存储到输出向量B(i)中来压缩为新向量。因此,通过B(i)=A(VMX(i))(对于i=0,1,…n)将向量A压缩为B。类似地,可反向进行扩张(例如,B(VMX(i))=A(i))。另外,一或多个VIR可允许向量处理器在具有或不具有压缩和/或扩展的情况下直接执行稀疏操作。举例来说,VIR可在B(i)=函数(A(VMX(i)),C(VMX(i))中实施编索引,其可为具有压缩的稀疏操作。而且,VIR可在B(VMX(i))=函数(A(VMX(i)),C(VMX(i))中实施编索引,其可为不具有压缩的稀疏操作。而且,VIR可在B(VMX(i))=函数(A(i),C(i))中实施编索引,其可为具有扩展的对经压缩向量的操作。
图6说明根据本公开的一些实施例的用于存取用于一或多个向量运算的操作数向量的元素的方法600的实例操作。
在图6中,方法600开始于步骤602,其中将待用作向量处理器中的多个算术逻辑单元(ALU)中的算术逻辑单元(ALU)的向量运算的输入的操作数向量的元素存储于向量处理器中的多个操作数向量寄存器(OVR)中的操作数向量寄存器(OVR)中。将操作数向量的元素存储在OVR中可在其用作ALU的向量运算的输入之前的任何时间发生。举例来说,步骤602可在步骤618之后发生。
方法600在步骤604处继续,其中将对应于OVR中的多个位置的多个地址分量存储在向量处理器中的多个向量索引寄存器(VIR)中的向量索引寄存器(VIR)中。
方法600在步骤606处继续,其中根据计数(例如,存储于计数器寄存器中的计数)在存储于VIR中的多个地址分量上进行迭代以提供输出。随后,向量加载存储单元将来自VIR的输出相加到用于存取OVR的有效地址。来自VIR的输出可包含VIR的多个地址分量中对应于计数的一个地址分量。每当向量加载存储单元请求来自VIR的输出以用于将VIR的输出相加到用于存取OVR的有效地址时,可发生根据计数在存储于VIR中的多个地址分量上的单次迭代。这可重复地发生,直到VIR已经迭代遍历OVR上的操作。
方法600在步骤608处继续,其中通过向量处理器的N:1多路复用器至少接收来自计数器的计数和来自VIR的输出,其中来自VIR的输出可包含VIR的多个地址分量中对应于计数的一个地址分量。
方法600在步骤610处继续,其中通过N:1多路复用器接收包含模式值的选择输入,所述模式值至少为用于选择计数的值或用于选择来自VIR的输出的值。
方法600在步骤612处继续,其中通过N:1多路复用器根据所接收的模式值至少选择计数或来自VIR的输出。
在步骤614处,将所述选择传达到存取用于ALU的OVR的向量处理器的向量加载存储单元。
方法600在步骤616处继续,其中将存储在计数器中的计数相加到用于存取OVR的有效地址。
方法600在步骤618处继续,其中将VIR的地址分量相加到用于存取OVR中的对应位置的有效地址。OVR的每一位置可包含待由ALU操作的操作数向量的元素。
方法600在步骤620处继续,其中通过向量加载存储单元根据在步骤616或618处所产生的有效地址存取用于ALU的OVR。
图7说明根据本公开的一些实施例的用于压缩操作数向量的元素的方法700的实例操作。在图7中,方法700在步骤702处开始,其中通过向量加载存储单元加载存储于输入OVR中的输入操作数向量。
方法700在步骤704处继续,其中通过向量加载存储单元加载存储于计数器寄存器中的计数。
方法700在步骤706处继续,其中通过向量加载存储单元根据计数从VIR加载所加载输入操作数向量的元素的存储位置。
方法700在步骤708处继续,其中根据来自VIR的加载位置在所加载输入操作数向量的元素上运行向量压缩运算。步骤708包含步骤710,其包含方法700以如下操作继续:将所加载输入操作数向量的元素存储到对应于来自VIR的加载位置的输出OVR中。
方法700在步骤712处继续,其中将计数与表示VIR的向量长度的值(即,VL)进行比较,使得可针对存储于VIR中的位置中的每一者在输入OVR上迭代向量压缩运算。当计数等于VIR的向量长度时,方法700结束。当计数小于VIR的向量长度时,则方法700在714处以使计数递增而继续,且接着返回到步骤704(加载存储于计数器寄存器中的计数),随后为步骤706(通过向量加载存储单元根据计数从VIR加载所加载输入操作数向量的元素的所存储位置)和708(根据来自VIR的加载位置在所加载输入操作数向量的元素上运行向量压缩运算)。这样,在针对存储于VIR中的位置中的每一者的输入OVR上迭代向量压缩运算。
图8说明根据本公开的一些实施例的包含用于压缩存储在输入OVR 804中的输入操作数向量的元素的向量索引寄存器802(VIR 802)的实例系统800。实例系统800是可至少实施方法700的系统的一个实例。
在图8中,VIR 802存储输入OVR 804的位置列表(例如,作为输入OVR的第一元素的“2”,和作为输入OVR的第二元素的“4”)。在此所说明实例中,展示向量处理器运行向量压缩运算的两个循环或迭代。在第一迭代处,计数器806输出计数“0”,其为在第一循环处存储于计数器中的值。在第一循环中,VIR 802展示为输出“2”。多路复用器808在如由处于正常模式操作中的计数器806所指定的地址分量(“0”)或如由处于VIR操作模式(或在此特定实例中,压缩运算模式)中的VIR 802所指定的地址分量(“2”)之间进行选择。当在第一循环中通过多路复用器808选择VIR(或压缩模式)时,来自VIR 802的输出“2”是用于存取输入OVR804的地址分量。结果,针对输入OVR的位置“2”处的元素“C”的输出存取输入OVR 804。通过存储于计数器806中的计数直接寻址输出OVR 810。由于计数器806的计数在第一循环中为“0”,所以输出ORV 810将“C”存储为其第一元素。在下一迭代或循环中,输出ORV 810将“E”在输出OVR的位置“1”处存储为第二元素。在展示两个循环的此实例中,将具有元素{A,B,C,D,E}的输入OVR 804压缩为具有元素{C,E}的输出OVR 810。
而且,参考图8,如果用于输入/输出向量的地址信号经反转,那么可将{C,E}扩展为具有元素{x,x,C,x,E}的第二输出OVR,其中x为压缩运算之前的现有值或选自标量寄存器的标量值(例如,见图9,其为以来自标量寄存器的标量值扩展经压缩向量的实例方法)。
另外,如果来自VFR的值相加到计数器的计数,那么可使用求和,使得输入OVR上的运算的第一迭代发生在输入OVR的另一位置而非输入OVR的第一位置处(例如,输入OVR 804的第一位置标记为“0”)。例如,见图5。或者,VFR可用于提供计数寄存器的输入,使得在向量运算开始时计数寄存器的初始值为存储于VFR中的值。此类选项允许向量初次处理。
图9说明根据本公开的一些实施例的用于扩展操作数向量的元素(例如,经压缩操作数向量的元素)的方法900的实例操作。
如图9所示,方法900可以方法700开始,其以输出存储于输出OVR中的经压缩操作数向量结束。接下来,方法900在步骤902处继续,其中通过向量加载存储单元从输出OVR加载所存储的元素。所存储的元素为经压缩向量的元素。
方法900在步骤904处继续,其中根据存储于VIR中的加载位置在来自输出OVR的所存储元素上迭代第二向量运算。第二运算为向量扩展运算。换句话说,为向量扩展运算的第二向量运算扩展存储于输出OVR中的经压缩向量。
方法900在步骤906处继续,其中根据扩展运算,将来自输出OVR的元素根据存储于VIR中的加载位置在第二输出OVR的位置处存储到第二输出OVR中。
方法900在步骤908处继续,其中根据扩展运算在第二输出OVR的其它位置处将标量存储到第二输出OVR中。扩展运算在步骤908之后的最终输出为具有来自经压缩向量的元素的经扩展向量和在经扩展向量的其它位置处的标量值的一或多个例子。来自经扩展向量中的经压缩向量的元素的定位对应于存储于VIR中的加载位置或地址分量。
图10说明根据本公开的一些实施例的关于对多个经压缩向量的操作的方法1000的实例操作。
如图10所示,方法1000可以方法700开始,其以输出存储于输出OVR中的经压缩操作数向量结束。而且,对第二操作数向量执行类似于方法700的操作。举例来说,方法1000在步骤1002处继续,其中根据存储于第二VIR中的加载位置在第二所加载操作数向量的元素上迭代第二压缩运算。
方法1000在步骤1004处继续,其中将第二所加载操作数向量的元素存储到对应于存储于第二VIR中的加载位置的第二输出OVR中。
方法1000在步骤1006处继续,其中使用来自第一输出OVR和第二输出OVR的元素执行一或多个向量运算。所述一或多个向量运算使用来自两个经压缩向量的元素,其为来自第一输出OVR和第二输出OVR的元素。
方法600、700、900和1000仅包含可由本文中所描述的向量处理器和系统实施的许多操作中的一些。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种系统可根据本文中的教示与程序一起使用,或其可证明构造更专用的设备来进行方法的是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可部分地提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以进行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

Claims (20)

1.一种向量处理器,其包括:
多个算术逻辑单元(ALU)中的算术逻辑单元;
多个操作数向量寄存器(OVR)中的操作数向量寄存器,其经配置以存储待用作用于所述ALU的向量运算的输入的操作数向量的元素;以及
向量索引寄存器(VIR),其经配置以存储对应于所述OVR中的多个位置的多个地址分量,
每一地址分量可添加到用于存取所述OVR中的对应位置的有效地址,且
所述OVR的每一位置包括待由所述ALU操作的所述操作数向量的元素。
2.根据权利要求1所述的向量处理器,其进一步包括:
计数器,其经配置以存储计数,其中所述计数可添加到用于存取所述OVR的有效地址,或其中所述计数用于对存储于所述VIR中的所述多个地址分量进行迭代;以及
2:1多路复用器,其经配置以:
接收来自所述计数器的所述计数和来自所述VIR的输出作为输入,其中来自所述VIR的所述输出包括所述VIR的对应于所述计数的所述多个地址分量中的一者;
接收模式值作为选择输入,所述模式值为用于选择所述计数的值或用于选择来自所述VIR的所述输出的值;
根据所述所接收的模式值选择所述计数或来自所述VIR的所述输出;以及
将所述所选计数或来自所述VIR的所述所选输出传达到存取用于所述ALU的所述OVR的请求器。
3.根据权利要求2所述的向量处理器,其中所述请求器为所述向量处理器的向量加载存储单元,且所述向量加载存储单元经配置以:
产生所述向量处理器的加载和存储操作的有效地址;以及
对于所述VIR的每一地址分量,将所述VIR的所述地址分量添加到用于存取所述OVR中的对应位置的有效地址。
4.根据权利要求1所述的向量处理器,其中所述VIR为多个向量索引寄存器(VIR)中的一者,且其中所述向量处理器进一步包括:
计数器,其经配置以存储计数,其中所述计数可添加到用于存取所述OVR的有效地址,或其中所述计数用于对存储于所述VIR中的每一相应多个地址分量进行迭代;以及
N:1多路复用器,其经配置以:
接收来自所述计数器的所述计数及来自所述VIR的相应输出作为输入,其中来自所述VIR中的给定VIR的每一输出包括所述给定VIR的对应于所述计数的多个地址分量中的一者;
接收模式值作为选择输入,所述模式值为用于选择所述计数的值或用于选择来自所述VIR的所述相应输出中的一者的值;
根据所述所接收的模式值选择所述计数或来自所述VIR的所述相应输出中的一者;以及
将所述所选计数或来自所述VIR的所述相应输出中的一个所选输出传达到存取用于所述ALU的所述OVR的请求器。
5.根据权利要求1所述的向量处理器,其进一步包括:
向量第一寄存器(VFR),其经配置以存储向量第一地址分量,所述向量第一地址分量为基于所述向量第一地址分量而在所述OVR的初始位置处引导所述OVR的初始存取以使得所存取的所述初始位置不是所述OVR的第一位置的地址分量;
计数器,其经配置以存储计数,其中所述计数可添加到用于存取所述OVR的有效地址,其中所述计数用于使所述向量第一地址分量递增,或其中所述计数用于对存储于所述VIR中的所述多个地址分量进行迭代;以及
3:1多路复用器,其经配置以:
接收来自所述计数器的所述计数、从所述VFR导出的输出和来自所述VIR的输出作为输入,其中来自所述VIR的所述输出包括所述VIR的对应于所述计数的所述多个地址分量中的一者,且其中所述向量第一地址分量对应于所述计数;
接收模式值作为选择输入,所述模式值为用于选择所述计数的值、用于选择从所述VFR导出的所述输出的值,或用于选择来自所述VIR的所述输出的值;
根据所述所接收的模式值选择所述计数、从所述VFR导出的所述输出或来自所述VIR的所述输出;以及
将所述所选计数、从所述VFR导出的所述所选输出或来自所述VIR的所述所选输出传达到存取用于所述ALU的所述OVR的请求器。
6.根据权利要求1所述的向量处理器,其进一步包括向量加载存储单元,所述向量加载存储单元经配置以:
产生所述向量处理器的加载和存储操作的有效地址;以及
对于所述VIR的每一地址分量,将所述VIR的所述地址分量添加到用于存取所述OVR中的对应位置的有效地址。
7.根据权利要求6所述的向量处理器,其中所述向量加载存储单元经配置以:
加载存储于所述OVR中的输入操作数向量;
从计数器寄存器加载计数;
根据所述计数从所述VIR加载所述所加载输入操作数向量的元素的存储位置;以及
作为向量运算的部分,将所述所加载输入操作数向量的所述元素存储到对应于来自所述VIR的所述加载位置的输出OVR中。
8.根据权利要求7所述的向量处理器,其中所述向量运算为经配置以将所述所加载输入操作数向量的所述元素存储到对应于存储在所述VIR中的加载位置的输出OVR中的压缩运算。
9.根据权利要求8所述的向量处理器,其中所述向量加载存储单元经配置以:
从所述输出OVR加载所述所存储元素;以及
根据存储于所述VIR中的所述加载位置对来自所述输出OVR的所述所存储元素迭代第二向量运算,其中所述第二向量运算为经配置以根据存储于所述VIR中的所述加载位置将来自所述输出OVR的所述元素在第二输出OVR的多个位置处存储到所述第二输出OVR中的扩展运算。
10.根据权利要求9所述的向量处理器,其中扩展运算进一步经配置以将标量在所述第二输出OVR的多个其它位置处存储到所述第二输出OVR中。
11.根据权利要求8所述的向量处理器,其中所述向量加载存储单元经配置以:
根据存储于第二VIR中的加载位置对第二所加载操作数向量的元素迭代第二压缩运算;
将所述第二所加载操作数向量的所述元素存储到对应于存储于所述第二VIR中的所述加载位置的第二输出OVR中;以及
使用来自所述第一输出OVR和所述第二输出OVR的所述元素执行一或多个向量运算。
12.一种方法,其包括:
将待用作用于向量处理器中的多个算术逻辑单元(ALU)中的算术逻辑单元(ALU)的向量运算的输入的操作数向量的元素存储在所述向量处理器中的多个操作数向量寄存器(OVR)中的操作数向量寄存器(OVR)中;
将对应于所述OVR中的多个位置的多个地址分量存储在所述向量处理器中的多个向量索引寄存器(VIR)中的向量索引寄存器(VIR)中;以及
对于每一地址分量,将所述地址分量添加到用于存取所述OVR中的对应位置的有效地址,其中所述OVR的每一位置包括待由所述ALU操作的所述操作数向量的元素。
13.根据权利要求12所述的方法,其进一步包括将存储于计数器中的计数添加到用于存取所述OVR的有效地址,或根据所述计数对存储于所述VIR中的所述多个地址分量进行迭代,且随后将来自所述VIR的输出添加到用于存取所述OVR的所述有效地址,其中来自所述VIR的所述输出包括所述VIR的对应于所述计数的所述多个地址分量中的一者。
14.根据权利要求13所述的方法,其进一步包括:
通过所述向量处理器的N:1多路复用器至少接收来自所述计数器的所述计数及来自所述VIR的输出,其中来自所述VIR的所述输出包括所述VIR的对应于所述计数的所述多个地址分量中的一者;
通过所述N:1多路复用器接收包括模式值的选择输入,所述模式值至少为用于选择所述计数的值或用于选择来自所述VIR的所述输出的值;
通过所述N:1多路复用器根据所述所接收的模式值至少选择所述计数或来自所述VIR的所述输出;以及
将所述选择传达到存取用于所述ALU的所述OVR的所述向量处理器的向量加载存储单元。
15.根据权利要求12所述的方法,其进一步包括:
加载存储于所述OVR中的输入操作数向量;
从计数器寄存器加载计数;
根据所述计数从所述VIR加载所述所加载输入操作数向量的元素的存储位置;以及
作为向量运算的部分,将所述所加载输入操作数向量的所述元素存储到对应于来自所述VIR的所述加载位置的输出OVR中。
16.根据权利要求15所述的方法,其中所述向量运算为压缩运算,且其中所述方法进一步包括将所述所加载输入操作数向量的所述元素存储到对应于存储在所述VIR中的所述加载位置的输出OVR中。
17.根据权利要求16所述的方法,其进一步包括:
从所述输出OVR加载所述所存储的元素;
根据存储于所述VIR中的所述加载位置对来自所述输出OVR的所述所存储元素迭代第二向量运算,其中所述第二向量运算为扩展运算;以及
根据所述扩展运算,将来自所述输出OVR的所述元素根据存储于所述VIR中的所述加载位置在第二输出OVR的多个位置处存储到所述第二输出OVR中。
18.根据权利要求17所述的方法,其进一步包括根据所述扩展运算在所述第二输出OVR的多个其它位置处将标量存储到所述第二输出OVR中。
19.根据权利要求16所述的方法,其进一步包括:
根据存储于第二VIR中的加载位置对第二所加载操作数向量的元素迭代第二压缩运算;
将所述第二所加载操作数向量的所述元素存储到对应于存储于所述第二VIR中的所述加载位置的第二输出OVR中;以及
使用来自所述第一输出OVR和所述第二输出OVR的所述元素执行一或多个向量运算。
20.一种系统,其包括:
多个算术逻辑单元(ALU)中的算术逻辑单元(ALU);
多个操作数向量寄存器(OVR)中的操作数向量寄存器(OVR),其经配置以存储待用作用于所述ALU的向量运算的输入的操作数向量的元素;
多个向量索引寄存器(VIR)中的向量索引寄存器(VIR),其经配置以存储对应于所述OVR中的多个位置的多个地址分量,
每一地址分量可添加到用于存取所述OVR中的对应位置的有效地址,且
所述OVR的每一位置包括待由所述ALU操作的所述操作数向量的元素;
计数器,其经配置以存储计数,其中所述计数至少可添加到用于存取所述OVR的有效地址,或用于对存储于所述VIR中的所述多个地址分量进行迭代;以及
N:1多路复用器,其经配置以:
至少接收来自所述计数器的所述计数和来自所述VIR的输出作为输入,其中来自所述VIR的所述输出包括所述VIR的对应于所述计数的所述多个地址分量中的一者;
接收模式值作为选择输入,所述模式值至少为用于选择所述计数的值或用于选择来自所述VIR的所述输出的值;
根据所述所接收的模式值至少选择所述计数或来自所述VIR的所述输出;以及
将所述选择传达到存取用于所述ALU的所述OVR的向量加载存储单元。
CN202080037252.5A 2019-05-20 2020-04-17 向量索引寄存器 Pending CN113853582A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/417,500 US11340904B2 (en) 2019-05-20 2019-05-20 Vector index registers
US16/417,500 2019-05-20
PCT/US2020/028798 WO2020236367A1 (en) 2019-05-20 2020-04-17 Vector index registers

Publications (1)

Publication Number Publication Date
CN113853582A true CN113853582A (zh) 2021-12-28

Family

ID=73457050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080037252.5A Pending CN113853582A (zh) 2019-05-20 2020-04-17 向量索引寄存器

Country Status (5)

Country Link
US (2) US11340904B2 (zh)
EP (1) EP3973386A4 (zh)
KR (1) KR20210156854A (zh)
CN (1) CN113853582A (zh)
WO (1) WO2020236367A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327862B2 (en) * 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
US11340904B2 (en) 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
US11507374B2 (en) 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226171A (en) * 1984-12-03 1993-07-06 Cray Research, Inc. Parallel vector processing system for individual and broadcast distribution of operands and control information
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6269435B1 (en) 1998-09-14 2001-07-31 The Board Of Trustees Of The Leland Stanford Junior University System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
ATE498158T1 (de) 2000-11-06 2011-02-15 Broadcom Corp Umkonfigurierbares verarbeitungssystem und - verfahren
US7127593B2 (en) 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
GB2382673B (en) 2001-10-31 2005-10-26 Alphamosaic Ltd A vector processing system
US20100274988A1 (en) 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US6954841B2 (en) 2002-06-26 2005-10-11 International Business Machines Corporation Viterbi decoding for SIMD vector processors with indirect vector element access
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7299338B2 (en) * 2002-12-04 2007-11-20 Agere Systems Inc. Vector indexed memory unit and method
JP3659252B2 (ja) 2003-03-28 2005-06-15 セイコーエプソン株式会社 ベクトルデータのアドレス参照方法およびベクトルプロセッサ
US7725678B2 (en) 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
US20080016320A1 (en) 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US7962718B2 (en) * 2007-10-12 2011-06-14 Freescale Semiconductor, Inc. Methods for performing extended table lookups using SIMD vector permutation instructions that support out-of-range index values
US8793472B2 (en) 2008-08-15 2014-07-29 Apple Inc. Vector index instruction for generating a result vector with incremental values based on a start value and an increment value
GB2470782B (en) 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US20130212354A1 (en) 2009-09-20 2013-08-15 Tibet MIMAR Method for efficient data array sorting in a programmable processor
US8972698B2 (en) 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US9519617B2 (en) 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution
WO2013095658A1 (en) 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction
WO2013095653A1 (en) 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register
US9696994B2 (en) 2011-12-23 2017-07-04 Arm Limited Apparatus and method for comparing a first vector of data elements and a second vector of data elements
WO2013095617A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for propagating conditionally evaluated values in simd/vector execution
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9116686B2 (en) 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9489199B2 (en) 2012-12-28 2016-11-08 Intel Corporation Vector compare instructions for sliding window encoding
US9244684B2 (en) 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US10732689B2 (en) 2013-07-09 2020-08-04 Texas Instruments Incorporated Controlling the number of powered vector lanes via a register field
US9513907B2 (en) 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9424039B2 (en) 2014-07-09 2016-08-23 Intel Corporation Instruction for implementing vector loops of iterations having an iteration dependent condition
US20160026607A1 (en) 2014-07-25 2016-01-28 Qualcomm Incorporated Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
US9715386B2 (en) 2014-09-29 2017-07-25 Apple Inc. Conditional stop instruction with accurate dependency detection
US20160092398A1 (en) 2014-09-29 2016-03-31 Apple Inc. Conditional Termination and Conditional Termination Predicate Instructions
US20160124651A1 (en) 2014-11-03 2016-05-05 Texas Instruments Incorporated Method for performing random read access to a block of data using parallel lut read instruction in vector processors
US9830151B2 (en) * 2014-12-23 2017-11-28 Intel Corporation Method and apparatus for vector index load and store
US9851970B2 (en) 2014-12-23 2017-12-26 Intel Corporation Method and apparatus for performing reduction operations on a set of vector elements
US20160179520A1 (en) 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for variably expanding between mask and vector registers
US9946541B2 (en) * 2015-12-18 2018-04-17 Intel Corporation Systems, apparatuses, and method for strided access
US20170177359A1 (en) 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Scatter Operations
US20170177363A1 (en) 2015-12-22 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Gather Operations
US10409613B2 (en) 2015-12-23 2019-09-10 Intel Corporation Processing devices to perform a key value lookup instruction
GB2553783B (en) 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US11269638B2 (en) 2017-06-28 2022-03-08 Texas Instruments Incorporated Exposing valid byte lanes as vector predicates to CPU
US10970081B2 (en) 2017-06-29 2021-04-06 Advanced Micro Devices, Inc. Stream processor with decoupled crossbar for cross lane operations
WO2019005165A1 (en) 2017-06-30 2019-01-03 Intel Corporation METHOD AND APPARATUS FOR VECTORIZING INDIRECT UPDATING BUCKLES
EP3428792B1 (en) 2017-07-10 2022-05-04 Arm Ltd Testing bit values inside vector elements
US11042375B2 (en) 2017-08-01 2021-06-22 Arm Limited Counting elements in data items in a data processing apparatus
US20190205137A1 (en) 2017-12-29 2019-07-04 Lawrence Meadows Methods and apparatus for multi-load and multi-store vector instructions
US10929145B2 (en) 2018-12-28 2021-02-23 Intel Corporation Mask generation using reduction operators and scatter use thereof
US11327862B2 (en) 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
US11507374B2 (en) 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11340904B2 (en) 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
US10963247B2 (en) 2019-05-24 2021-03-30 Texas Instruments Incorporated Vector floating-point classification
US20210216318A1 (en) 2020-08-28 2021-07-15 Martin Langhammer Vector Processor Architectures

Also Published As

Publication number Publication date
EP3973386A1 (en) 2022-03-30
US20200371802A1 (en) 2020-11-26
US20220261253A1 (en) 2022-08-18
US11340904B2 (en) 2022-05-24
KR20210156854A (ko) 2021-12-27
EP3973386A4 (en) 2023-06-28
US11941402B2 (en) 2024-03-26
WO2020236367A1 (en) 2020-11-26

Similar Documents

Publication Publication Date Title
US11941402B2 (en) Registers in vector processors to store addresses for accessing vectors
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
US11681594B2 (en) Multi-lane solutions for addressing vector elements using vector index registers
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
EP2569694B1 (en) Conditional compare instruction
US20230077404A1 (en) True/false vector index registers and methods of populating thereof
US20220318186A1 (en) Conditional operations in a vector processor having true and false vector index registers
US11907158B2 (en) Vector processor with vector first and multiple lane configuration
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
WO2020181670A1 (en) Control flow optimization in graphics processing unit
WO2016210023A1 (en) Decoding information about a group of instructions including a size of the group of instructions
JP2004021890A (ja) データ処理装置
US7620796B2 (en) System and method for acceleration of streams of dependent instructions within a microprocessor
WO2005036384A2 (en) Instruction encoding for vliw processors

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination