CN117591184B - Risc-v向量压缩乱序执行的实现方法及装置 - Google Patents

Risc-v向量压缩乱序执行的实现方法及装置 Download PDF

Info

Publication number
CN117591184B
CN117591184B CN202311682222.1A CN202311682222A CN117591184B CN 117591184 B CN117591184 B CN 117591184B CN 202311682222 A CN202311682222 A CN 202311682222A CN 117591184 B CN117591184 B CN 117591184B
Authority
CN
China
Prior art keywords
vector
register
prefix
source
destination
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
Application number
CN202311682222.1A
Other languages
English (en)
Other versions
CN117591184A (zh
Inventor
谭卓智
蒋江
张弛
施军
蔡学武
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.)
Chaorui Technology Changsha Co ltd
Original Assignee
Chaorui Technology Changsha Co ltd
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 Chaorui Technology Changsha Co ltd filed Critical Chaorui Technology Changsha Co ltd
Priority to CN202311682222.1A priority Critical patent/CN117591184B/zh
Publication of CN117591184A publication Critical patent/CN117591184A/zh
Application granted granted Critical
Publication of CN117591184B publication Critical patent/CN117591184B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种RISC‑V向量压缩乱序执行的实现方法及装置,该方法包括:获取待执行的向量压缩指令,向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;并行计算掩码的前缀和,前缀和中的数值表示向量压缩指令执行后向量源寄存器组中有效元素的元素索引编号;通过拆分微操作根据前缀和将向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到向量压缩指令的执行结果。通过上述方式,本发明实施例能够乱序流水执行,在lmul>1时通过工整的微操作拆分方式解决了长向量执行压缩指令时有效元素跨越寄存器组移动硬件实现困难的问题,提高了执行效率,减小资源消耗。

Description

RISC-V向量压缩乱序执行的实现方法及装置
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种RISC-V向量压缩乱序执行的实现方法及装置。
背景技术
RISC-V是第五代精简指令集的缩写,是目前使用较广泛的一种精简指令集。RISC-V向量指令集提出了一种可变长的向量指令集。RISC-V向量指令集中提供了丰富的指令类型,提高了程序编写的灵活性。 RISC-V向量指令集的算术指令大部分有这样一个特性:对于二元操作,一个向量的第n个元素只会和另外一个向量的第n个元素进行运算。但是有部分指令是具有水平方向操作的特性,跨同一向量的元素间进行操作,特别在risc-v可变长向量架构中,不仅会在向量寄存器多个元素之间跨越,还会在多个向量寄存器之间跨越,不符合这一特性。向量压缩指令vcompress是二元操作,以第一个源操作数当成待压缩的数据,以sew宽度划分各个元素,第二个源操作数当成元素有效的指示,以1bit的宽度划分对应元素。即第二个源操作数的最低bit为1,表示第一个操作数的最低位置的那个元素是有效的,若为0则该元素无效。第二个源操作数的次低bit为1,表示第一个操作数的次低位置的元素是有效的,若为0则无效,以此类推,相当于按掩码方式布局。而执行该指令后得到的结果是通过第二个操作数的单bit有效指示,把第一个源操作数中有效的元素压缩往低位置压缩,就像把无效的元素当气泡一样的被挤掉了,而高位空出的无效元素被认为是tail元素。
可见,对于向量压缩指令vcompress,第0个结果元素的数据来源(数字系统中索引一般以0为起始,称呼“第0个”,实际意义上应该看成“第一个”),可以是源操作数的第0个,第1个,一直到第n个(n为除tail元素外最高元素的索引编号)。即所有的源元素,都可能被压缩到第0个结果元素的位置。同理,第1个结果元素,数据来源可以是源操作数的第1个,第2个,一直到第n个元素。即除第0个源元素外的所有其他源元素,都可能被压缩到第1个结果元素的位置。得出结论:结果元素的数据来源会来自于索引编号大于或等于它的源元素。即结果元素的数据来源变得发散,不再具有各个同位置元素间两两独立运算的特性,所有元素的位置都可能被其他元素位置影响,所以执行单元设计的会变得比较复杂。特别是当系统处在lmul>1的情况下,即由多个向量寄存器构成一个向量的执行约束下,硬件设计会变得更加复杂。这是因为执行单元不能提前知道具体压缩位置,但却需要支持跨越向量寄存器的所有元素指向结果元素的移动。例如,假设lmul=4,则待压缩的那个源向量由4个向量寄存器构成,每个向量寄存器之中又包含多个元素。结果向量也是由4个向量寄存器构成,结果向量的第0个元素一定会放在第0个向量寄存器的最低位置。但是该结果元素的数据来源可能是待压缩源向量的4个向量寄存器中的所有的源元素之一。硬件实现上需要打通全部通路。源操作数端口一次只能拿到二个源向量寄存器和一个目的向量寄存器(注意区分是向量寄存器,不是“一个向量”,在这个例子lmul=4中相当于只拿到了一个向量的1/4的元素),源寄存器里面,一个作为待压缩的源向量,一个作为有效指示。有效指示的确定性对应着结果元素排布的唯一性。每个结果元素的数据来源都指向一个唯一的源元素。某次操作的元素有效指示,有可能结果元素需要的数据来源根本不在待压缩源向量的第一个向量寄存器之中(比如第一个向量寄存器无效元素个数占比较高时)。而下一次执行同样的指令,不同的有效指示操作数时,使得结果元素数据来源又可能在第一个向量寄存器之中。
如此,要支持这一双重跨越功能的实现是比较困难的,由于压缩算法本身带有高度的优先级和顺序性,这一点在乱序执行的处理器中难度更甚。目前从公开的技术上来看,实现压缩的直观算法是使用遍历法,通过对源操作数最低位置一个一个的判断是否有效,来将源元素压缩堆放在结果向量的最低元素位置,依赖的就是压缩的顺序性。
由于每次搬移只涉及一个压缩数据,遍历法需要花费较多的处理器时钟周期,并且随着元素个数数量增加,这个周期数量也是1:1线性增加,即使通过频繁求前导跳过无效元素,这依然是一个长周期的操作。这个方法是状态机操作,是一种非流水且阻塞后续操作的方式,某一时刻只有一条vcompress指令的微操作能在计算,其他的vcompress微操作必须等待。只有当本次微操作完成时,对应的执行单元才会被释放,才能开始执行下一条同样的微操作。综合来看,这个实现方法的执行的延迟很大,效率较低。此外,遍历法只实现单个微操作之间的元素压缩,并未解决跨越lmul>1的多倍向量寄存器的元素压缩。出现跨越多个向量寄存器之间的元素移动时候,需要其他额外的方法来支持。使用遍历法已经完成了一部分压缩,在此基础上仍需要进行较复杂的对齐计算,或者依赖微操作的顺序发射,来保证内部压缩索引计数器被多个微操作累计使用,共同计算一个压缩操作。
发明内容
鉴于上述问题,本发明实施例提供了一种RISC-V向量压缩乱序执行的实现方法及装置,克服了上述问题或者至少部分地解决了上述问题。
根据本发明实施例的一个方面,提供了一种RISC-V向量压缩乱序执行的实现方法,所述方法包括:获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果。
可选的,所述计算所述掩码的前缀和,包括:针对存储在所述向量源掩码寄存器中的所述掩码的任一位置,应用一求前缀和并行计算位于所述位置之前的所有有效掩码的个数之和,得到所述位置的前缀和。
可选的,所述通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果,包括:通过拆分微操作选取所述向量目的寄存器组中的任一向量目的寄存器;根据所述前缀和将所述向量源寄存器组中编号不小于所述向量目的寄存器编号的向量源寄存器中的有效元素压缩至所述向量目的寄存器;完成所有所述向量目的寄存器的向量压缩操作,得到所述向量压缩指令的执行结果。
可选的,所述根据所述前缀和将所述向量源寄存器组中编号不小于所述向量目的寄存器编号的向量源寄存器中的有效元素压缩至所述向量目的寄存器,包括:扫描所述向量源寄存器组中编号不小于所述向量目的寄存器编号的任一向量源寄存器;根据所述掩码和所述前缀和将所述向量源寄存器中的有效元素同时填入所述向量目的寄存器;依次完成将所述向量源寄存器组中编号不小于所述向量目的寄存器的各向量源寄存器的有效元素压缩至所述向量目的寄存器。
可选的,所述根据所述掩码和所述前缀和将所述向量源寄存器中的有效元素同时填入所述向量目的寄存器,包括:根据所述掩码和所述前缀和确定所述向量源寄存器中的有效元素以及对应的所述元素索引编号;根据所述元素索引编号将所述有效元素同时填入所述向量目的寄存器的对应位置。
可选的,所述根据所述元素索引编号将所述有效元素填入所述向量目的寄存器的对应位置,还包括:确定所述目的寄存器中未命中的位置保持原值不变。
可选的,所述向量源寄存器组中向量源寄存器的个数为1、2、4、6、8中的其中一个。
基于同一发明构思,提供了一种RISC-V向量压缩乱序执行的实现装置,包括:指令获取单元,用于获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;前缀和计算单元,用于并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;向量压缩单元,用于通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果。
基于同一发明构思,本发明实施例还提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述的方法。
基于同一发明构思,本发明实施例还提出了一种计算机存储介质,存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行前述的方法。
本发明实施例通过获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果,能够乱序流水执行,在lmul>1时通过工整的微操作拆分方式解决了长向量执行压缩指令时有效元素跨越寄存器组移动硬件实现困难的问题,提高了执行效率,减小资源消耗。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的RISC-V向量压缩乱序执行的实现方法的流程示意图;
图2示出了本发明实施例的lmul=1时向量压缩指令执行示意图;
图3示出了本发明实施例的lmul=2时的向量压缩指令的操作需要示意图;
图4示出了本发明实施例的lmul=2时的向量压缩指令的目的1的计算示意图;
图5示出了本发明实施例的lmul=2时的向量压缩指令的目的0的计算示意图;
图6示出了本发明实施例提供的RISC-V向量压缩乱序执行的实现装置的结构示意图;
图7示出了本发明实施例中的电子设备示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1示出了本发明实施例提供的RISC-V向量压缩乱序执行的实现方法的流程示意图。如图1所示,该RISC-V向量压缩乱序执行的实现方法应用于服务器,包括:
步骤S11:获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器。
在本发明实施例中,获取待执行的向量压缩指令。该向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器。向量源寄存器组中向量源寄存器的个数可以根据需要进行设置,在此并不作具体限制。优选的,向量源寄存器组中向量源寄存器的个数为1、2、4、6、8中的其中一个。向量源寄存器组中向量源寄存器的个数为1,配置表示为寄存器数量lmul=1。向量源寄存器组中向量源寄存器的个数为2,配置表示为寄存器数量lmul=2,在此类推。
步骤S12:并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号。
在步骤S12中,可选的,针对存储在所述向量源掩码寄存器中的所述掩码的任一位置,应用一求前缀和并行计算位于所述位置之前的所有有效掩码的个数之和,得到所述位置的前缀和。参见图2,对于lmul=1,掩码以xxx01010101举例示意,将01010101掩码送入一个IOTA求前缀和的逻辑电路中,前缀和的含义是,每个位置的值是该位置前面所有有效掩码个数之和,会得到8个和。这8个和分别是4,3,3,2,2,1,1,0。前缀和即表示压缩的数据应该到达的目的的位置,比如源寄存器0的e6位置对应的元素g的掩码计算的前缀和是3,表示这个元素g最后要放到结果向量寄存器的e3位置。但是这里会看到e5位置f的前缀和也是3,这是一个冲突。还需要一个逻辑才能过滤这个冲突,该算法的规律上,一定会是的具有相同前缀和的元素只有一个被使能,能保证结果数据来源的唯一性。本发明实施例可以通过掩码本身有效把真正有效的前缀和使能出来,上面的g对应的3是有效,而f对应的3是无效的。
步骤S13:通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果。
在本发明实施例中,由于向量单元具有寄存器数量lmul不同配置的问题。对于lmul<=1的情况,由于只有一个源向量寄存器待压缩,以及向量目的寄存器也只有一个。只需要一个微操作即可实现,不用拆分微操作。执行的延迟属性是2周期,可流水。对于lmul=2,4,8多倍的情况,需要解决跨寄存器压缩的问题,采用拆分微操作的方式。
在步骤S13中,可选的,通过拆分微操作选取所述向量目的寄存器组中的任一向量目的寄存器;根据所述前缀和将所述向量源寄存器组中编号不小于所述向量目的寄存器编号的向量源寄存器中的有效元素压缩至所述向量目的寄存器;完成所有所述向量目的寄存器的向量压缩操作,得到所述向量压缩指令的执行结果。本发明实施例中,向量目的寄存器组中的各向量目的寄存器的向量压缩指令执行结果的获取顺序并不限制,只需要所有向量目的寄存器都执行一遍,即完成了向量压缩指令的执行,各向量目的寄存器的更新结果的组合即为向量压缩指令的执行结果。
而对于某一向量目的寄存器,首先扫描所述向量源寄存器组中编号不小于所述向量目的寄存器编号的任一向量源寄存器;然后根据所述掩码和所述前缀和将所述向量源寄存器中的有效元素同时填入所述向量目的寄存器;依次完成将所述向量源寄存器组中编号不小于所述向量目的寄存器的各向量源寄存器的有效元素压缩至所述向量目的寄存器,得到向量压缩指令执行后该向量目的寄存器的结果。该微操作过程中,向量源寄存器的扫描顺序也不受限制,例如,可以根据预设的顺序依次扫描编号不小于向量目的寄存器编号的各向量源寄存器,并将扫描的向量源寄存器的有效元素同时压缩至向量目的寄存器。在将某一向量源寄存器中的有效元素同时填入向量目的寄存器时,根据所述掩码和所述前缀和确定所述向量源寄存器中的有效元素以及对应的所述元素索引编号;根据所述元素索引编号将所述有效元素同时填入所述向量目的寄存器的对应位置。同时确定所述目的寄存器中未命中的位置保持原值不变。
对于lmul=1,以sew=32,vlen=256为例。发送一条微操作,两源分别是存储待压缩向量的向量源寄存器和相应的向量源掩码寄存器,此外还有一个额外源是旧向量目的寄存器,执行完得到的是一个压缩后的结果。lmul=1的操作可以完全的兼容lmul小于1的操作。如图2所示,向量源寄存器0表示待压缩的源向量,其中每个元素位宽为32,以a到h的英文字母代表每个元素。下标e0到e7表示元素所在的位置。旧向量目的寄存器0表示将被压缩结果写回覆盖的旧的向量寄存器,以i到p的英文字母代表每个原来目的向量寄存器的元素。向量源掩码寄存器是一个以单bit为单个元素的寄存器,有256位。由于图2中lmul=1,sew=32,vlen=256,元素个数只有8个,所以该掩码只有低8位被使用,以xxx01010101举例示意。通过1的位置可以知道,源寄存器0的e0,e2,e4,e6位置的元素a,c,e,g是有效的元素,会被压缩到最低的位置。如此在本发明实施例中,将01010101掩码送入一个IOTA求前缀和的逻辑电路中,前缀和的含义是,每个位置的值是该位置前面所有有效掩码个数之和,会得到8个和。这8个和分别是4,3,3,2,2,1,1,0。前缀和即表示压缩的数据应该到达的目的的位置,比如源寄存器0的e6位置对应的元素g的掩码计算的前缀和是3,表示这个元素g最后要放到结果向量寄存器的e3位置。但是这里会看到e5位置f的前缀和也是3,这是一个冲突。还需要一个逻辑才能过滤这个冲突,可以通过掩码本身有效把真正有效的前缀和使能出来,上面的g对应的3是有效,而f对应的3是无效的。该算法的规律上,一定会是的具有相同前缀和的元素只有一个被使能,能保证结果数据来源的唯一性。在图2中通过加粗来表示有效的前缀和。该前缀和表明的是去往目的索引,通过索引唯一命中和选择器及并行逻辑,实现每个结果位置同时汇聚(gather)功能,以此达到了所有结果元素同时向源拿数据的过程。上述的过程计算前缀和需要消耗1周期,在第二周期再进行gather功能,这一点考虑主要是由于后面为了兼容对lmul=8的支持,前缀和计算逻辑过长。过程中需要拿到旧的向量目的寄存器,主要为了支持尾元素不受干扰的操作。尾元素的布局需要统计01010101中全部有效的1的个数,反推出尾的布局,具体计算未在以上图2中体现。得到尾的布局再用压缩的结果和旧的向量寄存器进行一个合并。
前缀和的计算在完全支持lmul=8统计不同区域的前缀和需要一个更复杂的逻辑,并且需要使用到进位保存加法器(Carry Save Adder,CSA)的加法树压缩进行多个加数求和,最大需要支持256个1bit数相加。对于其中的gather逻辑,是对每个元素实现一个8选1选择器输入,命中信号通过索引比对得到。对于多sew分布,该功能会需要多种位宽的和选择器支持,所以实际工程以最小sew为颗粒实现全gather的逻辑,其他的sew在执行到该步骤的时候,简单对齐到该最小sew的命中逻辑,进行复用,可节约逻辑资源。
对于lmul=2,压缩的数据会跨越寄存器编号移动。即源寄存器1的元素,可能会被压缩到目的寄存器0中,本发明实施通过微操作拆分实现。以lmul=2,sew=32,vlen=256举例,对向量目的寄存器0,其结果元素来源可能是源0或源1(源0代指向量源寄存器0,目的0代指向量目的寄存器0),而目的1的结果元素来源只会是源1,因为压缩算法数据只会保持不动或者往下走,具体的操作需要如图3所示,源寄存器用加粗的元素表示有效的元素。可以发现,元素i、g、l从源1压缩到了目的0内的高3个元素位置。
本发明实施例将lmul=2时的 压缩指令执行拆分为2个微操作,分别如图4和图5所示,其中图4示意得到目的1的结果,图5示意得到目的0的结果。
参见图4,进行了第一个微操作,计算的是目的1。首先拿到源1和旧目的1,以及完整的向量掩码寄存器组。由于源端口是只有256bit,所以源是一次只能拿到一个向量寄存器,前缀和计算出了多行结果,但是只需要8个结果,由于本次微操作针对的是目的1寄存器,所以结果的位置是e8到e15。逻辑电路上看到的也只有e8到e15的前缀和。在前缀和计算的表格中,找到e8-e15中是否有8到15的有效数据,有的话则表示有数据要放入目的1的结果中,从图4中可以看到e14和e13分别有9和8两个在这个区间的索引,表示源1的e14元素o和e13元素n要放到目的1的e9和e8的位置,只关注目的1的话,放在的是目的1的最低两个元素位置。这个逻辑的实现也是通过索引命中和gather通路达到。当然目的1的话由于源数据只会来自源1,所以通过拿到源1进行一次微操作计算就可以得到最终的目的1的结果。该微操作可以描述成伪代码:
Uop0: dst1 = vcompress(src1, src_mask, dst1);
Uop0表示编号是0的微操作,vcompress()类比表示一个向量压缩的微操作函数,其括号内表示输入的值。src1表示向量源寄存器1,src_mask表示一个完整的vlen长度的掩码寄存器即第二个源,此处需要注意无论lmul是多少,src_mask一直都是只有一个寄存器,等式右边括号内的dst1表示旧向量目的寄存器1,等式左边的dst1表示新向量目的寄存器1。抽象成该含义使得处理器前端能根据该三源一目的的方式进行译码及拆分。
参见图5,目的0的源数据会来自源0和源1,会复杂一点。通过两次微操作得到了目的0,这两个微操作使用到的数据通路完全一致,并且与图2示例的是同一个。两次微操作,每次都只能计算出部分的结果,而最终的结果需要累计起来。图5中通过传播中间结果就是在累计结果。本发明实施例通过扫描一次拿到一个源向量寄存器,从中计算出应该放入对应的目的寄存器的位置。上面两个微操作针对的是目的0,相应的位置是e0到e7(这是对于sew=32而言,如果sew=16,那么目的0的位置其实是e0到e15)。从两个不同的源里面,源0和源1,拿出前缀和在0到7的有效数据放入目的0对应的位置,每次拿一个源,共拿两次,用扫描看到所有数据来源。这是因为压缩会使得所有编号比目的高的源,都有可能有写入的源元素。“扫描”是解决这个数据来源发散问题的关键特征。图5对应的伪代码如下:
Uop0: dst0 = vcompress(src0, src_mask, dst0);
Uop1: dst0 = vcompress(src1, src_mask, dst0);
Uop0和Uop1是有顺序性的,Uop0拿到旧的dst0得到一个dst0的中间结果,Uop1再拿到这个dst0的中间结果计算出最终的新的dst0。通过两个微操作,先后调用完全相同的数据通路,并且依赖数据真相关性,传播中间结果,最终计算得到目的0的结果。需要说明的是,将向量源寄存器0中的有效元素压缩至目的寄存器0和将向量源寄存器1中相关的有效元素压缩至目的寄存器0的两个微操作的执行顺序并不是固定的。可以先执行将向量源寄存器0中的有效元素压缩至目的寄存器0的微操作,然后执行将向量源寄存器1中相关的有效元素压缩至目的寄存器0的微操作(如图5)。也可以先执行将向量源寄存器1中相关的有效元素压缩至目的寄存器0的微操作,然后执行将向量源寄存器0中的有效元素压缩至目的寄存器0。但是不管是很执行哪一个微操作,后一个微操作是拿到前一个微操作的目的寄存器0的中间结果的基础上计算出最终的新的目的寄存器0。
根据图4和图5可知,对于lmul=2,sew=32,vlen=256的配置下,执行一个向量压缩指令vcompress需要拆成3个微操作,目的1通过一个微操作即可得到,而目的0需要两个微操作才能得到最终的结果。需要说明的是,目的0和目的1的执行顺序也是可以随机更换的,可以先执行目的0的相关微操作,然后执行目的1相关的微操作。也可以先执行目的1相关的微操作,然后执行目的0相关的微操作。
在本发明实施例中,对lmul=2的实现方法可以完全简单的拓展到lmul=4及lmul=8,故对于后面两个情况不再赘述。根据相同的原理,可直接给出lmul=4的微操作伪代码。对于lmul=4,目的0的微操作,需要4个微操作,因为有4个源。需要对每个源(源0,源1,源2,源3)进行一次“扫描”,并且传播中间结果,从而累计得到目的0的结果。
Lmul=4,目的0的微操作拆分一组伪代码如下:
Uop0: dst0 = vcompress(src0, src_mask, dst0);
Uop1: dst0 = vcompress(src1, src_mask, dst0);
Uop2: dst0 = vcompress(src2, src_mask, dst0);
Uop3: dst0 = vcompress(src3, src_mask, dst0);
对于目的1,它的源元素不会来自源0(src0),所以可以省略一次扫描,相应的目的2,目的3会逐渐减少一次扫描。
Lmul=4,目的1的微操作拆分一组伪代码如下:
Uop0: dst1 = vcompress(src1, src_mask, dst1);
Uop1: dst1 = vcompress(src2, src_mask, dst1);
Uop2: dst1 = vcompress(src3, src_mask, dst1);
Lmul=4,目的2的微操作拆分一组伪代码如下:
Uop0: dst2 = vcompress(src2, src_mask, dst2);
Uop1: dst2 = vcompress(src3, src_mask, dst2);
Lmul=4,目的3的微操作伪代码如下,只需要一个微操作。
Uop0: dst3 = vcompress(src3, src_mask, dst3);
可以知道对于目的0,1,2,3所必要的微操作拆分数量分别是4,3,2,1。这个数量的规律主要是针对本发明实施例的扫描特性,以及压缩算法本身的规律。
按照上述推理对于lmul=8的情况,目的0,1,2,3,4,5,6,7所必要的微操作拆分数量分别是8,7,6,5,4,3,2,1。规律完全一致,在此不再赘述。
所有单独的一个微操作使用的数据通路,完全一致,只是数据来源不一样。例如对于lmul=4,计算目的0拆分出来的4个微操作,都是使用的同一个数据通路,拆分工整,数据通路可以复用。
本发明实施例的RISC-V向量压缩乱序执行的实现方法使用了一种工整的微操作拆分方式解决了向量压缩指令中跨越向量寄存器元素移动的问题,不仅使得数据通路进行了完全的复用,而且传播中间结果后不需要再额外消耗逻辑进行对齐操作。数据通路是可流水的,不同的微操作之间不存在资源冲突的阻塞,仅仅只有数据依赖的阻塞。同时针对不同目的编号的微操作组之间可以乱序执行,不一定要目的0计算完毕才开始计算目的1,达到了很高的执行效率;本发明实施例的方法完全的挖掘了压缩的并行性,达到了最快的压缩速度,需要的代价是资源较多,但和RISC-V其他向量指令复用数据通路,主要体现在“前缀和计算”与viota指令数据通路完全复用,“元素命中移动”和vrgather指令数据通路完全复用,平摊了代价;使用前缀和计算和索引命中选择器通路实现压缩算法直接的去计算压缩后的位置,对比遍历法的顺序计数压缩,达到了2拍可流水的当前最快执行速度,在流水执行的情况下,相当于一拍完成一次压缩扫描操作;执行的数据通路内部不存在任何的buffer,计数器等记录中间状态的寄存器或存储部件。每一次微操作执行都认为数据通路是一个全新的计算。故不存在依赖顺序发射的问题,且无需存储中间状态带来的资源消耗。本发明实施例的方法可移植性强,可以简单复制拓展即可实现lmul=2,4,8的vcompress指令,针对编号靠后的目的寄存器计算,逐步减少微操作的数量,提高速度,不同目的寄存器的微操作组之间可以乱序执行。
综上所述,本发明实施例的RISC-V向量压缩乱序执行的实现方法通过获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果,通过挖掘硬件并行加速的实现算法,同时计算所有有效元素的压缩后的元素索引编号,并根据元素索引编号同时进行移动,将串行性转换成并行性,以及使用一种工整的微操作拆分方法适配该微操作来处理跨越多个向量寄存器间的元素移动,不但加速了单个微操作向量寄存器内的元素压缩执行效率,并解决了lmul>1时,vcompress指令在乱序执行的微架构下跨越向量寄存器的元素移动带来的复杂问题,完整的支持了可变长向量架构的vcompress指令的各种lmul实现,通过利用数据真相关,不需要依赖微操作的按顺序发射的逻辑,提高了执行效率,减小资源消耗。
上述对本发明特定实施例进行了描述。在一些情况下,在本发明实施例中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一个构思,本发明实施例还提供了一种RISC-V向量压缩乱序执行的实现装置。应用于服务器。附图6所示,RISC-V向量压缩乱序执行的实现装置包括:指令获取单元、前缀和计算单元和向量压缩单元。其中,
指令获取单元,用于获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;
前缀和计算单元,用于并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;
向量压缩单元,用于通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置应用于前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,本发明实施例还提供了一种电子设备,该电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一实施例所述的方法。
本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行如上任意一实施例中所述的方法。
图7示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器701、存储器702、输入/输出接口703、通信接口704和总线705。其中处理器701、存储器702、输入/输出接口703和通信接口704通过总线705实现彼此之间在设备内部的通信连接。
处理器701可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明方法实施例所提供的技术方案。
存储器702可以采用ROM(Read Only Memory,只读存储器)、RAM(RandomAccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器702可以存储操作系统和其他应用程序,在通过软件或者固件来实现本发明方法实施例所提供的技术方案时,相关的程序代码保存在存储器702中,并由处理器701来调用执行。
输入/输出接口703用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口704用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线705包括一通路,在设备的各个组件(例如处理器701、存储器702、输入/输出接口703和通信接口704)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器701、存储器702、输入/输出接口703、通信接口704以及总线705,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本发明实施例方案所必需的组件,而不必包含图中所示的全部组件。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
本申请旨在涵盖落入所有实施例的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (9)

1.一种RISC-V向量压缩乱序执行的实现方法,其特征在于,所述方法包括:
获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;
并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;
通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果;
其中,所述通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果,包括:通过拆分微操作选取所述向量目的寄存器组中的任一向量目的寄存器;根据所述前缀和将所述向量源寄存器组中编号不小于所述向量目的寄存器编号的向量源寄存器中的有效元素压缩至所述向量目的寄存器;完成所有所述向量目的寄存器的向量压缩操作,得到所述向量压缩指令的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述计算所述掩码的前缀和,包括:
针对存储在所述向量源掩码寄存器中的所述掩码的任一位置,应用一求前缀和并行计算位于所述位置之前的所有有效掩码的个数之和,得到所述位置的前缀和。
3.根据权利要求1所述的方法,其特征在于,所述根据所述前缀和将所述向量源寄存器组中编号不小于所述向量目的寄存器编号的向量源寄存器中的有效元素压缩至所述向量目的寄存器,包括:
扫描所述向量源寄存器组中编号不小于所述向量目的寄存器编号的任一向量源寄存器;
根据所述掩码和所述前缀和将所述向量源寄存器中的有效元素同时填入所述向量目的寄存器;
依次完成将所述向量源寄存器组中编号不小于所述向量目的寄存器的各向量源寄存器的有效元素压缩至所述向量目的寄存器。
4.根据权利要求3所述的方法,其特征在于,所述根据所述掩码和所述前缀和将所述向量源寄存器中的有效元素同时填入所述向量目的寄存器,包括:
根据所述掩码和所述前缀和确定所述向量源寄存器中的有效元素以及对应的所述元素索引编号;
根据所述元素索引编号将所述有效元素同时填入所述向量目的寄存器的对应位置。
5.根据权利要求4所述的方法,其特征在于,所述根据所述元素索引编号将所述有效元素填入所述向量目的寄存器的对应位置,还包括:
确定所述目的寄存器中未命中的位置保持原值不变。
6.根据权利要求1所述的方法,其特征在于,所述向量源寄存器组中向量源寄存器的个数为1、2、4、6、8中的其中一个。
7.一种RISC-V向量压缩乱序执行的实现装置,其特征是,所述装置包括:
指令获取单元,用于获取待执行的向量压缩指令,所述向量压缩指令包括:用于存储待压缩向量的向量源寄存器组和用于存储掩码的向量源掩码寄存器;
前缀和计算单元,用于并行计算所述掩码的前缀和,所述前缀和中的数值表示向量压缩指令执行后所述向量源寄存器组中有效元素的元素索引编号;
向量压缩单元,用于通过拆分微操作根据所述前缀和将所述向量源寄存器组中的有效元素压缩至向量目的寄存器组,得到所述向量压缩指令的执行结果;其中,通过拆分微操作选取所述向量目的寄存器组中的任一向量目的寄存器;根据所述前缀和将所述向量源寄存器组中编号不小于所述向量目的寄存器编号的向量源寄存器中的有效元素压缩至所述向量目的寄存器;完成所有所述向量目的寄存器的向量压缩操作,得到所述向量压缩指令的执行结果。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征是,所述处理器执行所述程序时实现如权利要求1-6中任意一项所述的方法。
9.一种计算机存储介质,其特征是,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-6中任一项所述的方法。
CN202311682222.1A 2023-12-08 2023-12-08 Risc-v向量压缩乱序执行的实现方法及装置 Active CN117591184B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311682222.1A CN117591184B (zh) 2023-12-08 2023-12-08 Risc-v向量压缩乱序执行的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311682222.1A CN117591184B (zh) 2023-12-08 2023-12-08 Risc-v向量压缩乱序执行的实现方法及装置

Publications (2)

Publication Number Publication Date
CN117591184A CN117591184A (zh) 2024-02-23
CN117591184B true CN117591184B (zh) 2024-05-07

Family

ID=89909862

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311682222.1A Active CN117591184B (zh) 2023-12-08 2023-12-08 Risc-v向量压缩乱序执行的实现方法及装置

Country Status (1)

Country Link
CN (1) CN117591184B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
CN103718157A (zh) * 2011-04-01 2014-04-09 英特尔公司 使用掩码寄存器跳转的系统、装置和方法
CN104025020A (zh) * 2011-12-23 2014-09-03 英特尔公司 用于执行掩码位压缩的系统、装置以及方法
CN108595348A (zh) * 2014-07-18 2018-09-28 英特尔公司 无局部性提示的向量存储器访问处理器、方法、系统和指令
WO2019066798A1 (en) * 2017-09-27 2019-04-04 Intel Corporation INSTRUCTIONS FOR NON-SIGNED MULTIPLICATION AND ACCUMULATION OF VECTORS OF NON-SIGNED DOUBLE WORDS
CN109643234A (zh) * 2016-09-22 2019-04-16 英特尔公司 用于合并数据元素并生成索引更新的处理器、方法、系统和指令
CN110968346A (zh) * 2018-09-28 2020-04-07 英特尔公司 用于执行用于快速元素解包到二维寄存器中的指令的系统
CN111767079A (zh) * 2019-03-30 2020-10-13 英特尔公司 用于矩阵操作加速器的转置指令的装置、方法和系统
CN115904649A (zh) * 2021-09-30 2023-04-04 英特尔公司 用户级处理器间中断

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719323B2 (en) * 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
CN103718157A (zh) * 2011-04-01 2014-04-09 英特尔公司 使用掩码寄存器跳转的系统、装置和方法
CN104025020A (zh) * 2011-12-23 2014-09-03 英特尔公司 用于执行掩码位压缩的系统、装置以及方法
CN108595348A (zh) * 2014-07-18 2018-09-28 英特尔公司 无局部性提示的向量存储器访问处理器、方法、系统和指令
CN109643234A (zh) * 2016-09-22 2019-04-16 英特尔公司 用于合并数据元素并生成索引更新的处理器、方法、系统和指令
WO2019066798A1 (en) * 2017-09-27 2019-04-04 Intel Corporation INSTRUCTIONS FOR NON-SIGNED MULTIPLICATION AND ACCUMULATION OF VECTORS OF NON-SIGNED DOUBLE WORDS
CN110968346A (zh) * 2018-09-28 2020-04-07 英特尔公司 用于执行用于快速元素解包到二维寄存器中的指令的系统
CN111767079A (zh) * 2019-03-30 2020-10-13 英特尔公司 用于矩阵操作加速器的转置指令的装置、方法和系统
CN115904649A (zh) * 2021-09-30 2023-04-04 英特尔公司 用户级处理器间中断

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Vector Extensions for Decision Support DBMS Acceleration;Timothy Hayes .etc;《2012 45th Annual IEEE/ACM International Symposium on Microarchitecture》;20121231;1-11 *
基于共前缀连续长度码的测试数据的压缩和解压方法;孙超超;欧阳一鸣;梁华国;;微电子学与计算机;20070320;第24卷(第02期);30-33+37 *
基于向量分解的测试向量压缩方法研究;张亮;《中国优秀硕士学位论文全文数据库》;20190131;I135-744 *

Also Published As

Publication number Publication date
CN117591184A (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
JP3547139B2 (ja) プロセッサ
US7177876B2 (en) Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation
JP6718454B2 (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
JP2008530642A (ja) 低レイテンシーの大量並列データ処理装置
CN104978284B (zh) 处理器子程序高速缓冲存储器
JP5456167B2 (ja) マイクロプロセッサおよびマイクロプロセッサ上での精度が改善された積の和計算のための方法
Talla et al. Evaluating signal processing and multimedia applications on SIMD, VLIW and superscalar architectures
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
CN112667289A (zh) 一种cnn推理加速系统、加速方法及介质
JP2001034471A (ja) Vliw方式プロセッサ
CN107870780B (zh) 数据处理装置和方法
Welch et al. A study of the use of SIMD instructions for two image processing algorithms
CN117591184B (zh) Risc-v向量压缩乱序执行的实现方法及装置
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
JP2008527559A (ja) プロセッサ及びその命令発行方法
CN112099851A (zh) 指令执行方法、装置、处理器及电子设备
CN115668142A (zh) 一种处理器、处理方法及相关设备
US20020078333A1 (en) Resource efficient hardware loops
EP4278256B1 (en) Parallel decode instruction set computer architecture with variable-length instructions
JP7048612B2 (ja) ベクトル生成命令
KR20090023418A (ko) 프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치
JP5989293B2 (ja) 多重命令語処理装置におけるフィードバック接続の実行時間選択

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
GR01 Patent grant
GR01 Patent grant