CN118034784A - Risc-v向量处理器和用于risc-v向量处理器的方法 - Google Patents
Risc-v向量处理器和用于risc-v向量处理器的方法 Download PDFInfo
- Publication number
- CN118034784A CN118034784A CN202410417677.9A CN202410417677A CN118034784A CN 118034784 A CN118034784 A CN 118034784A CN 202410417677 A CN202410417677 A CN 202410417677A CN 118034784 A CN118034784 A CN 118034784A
- Authority
- CN
- China
- Prior art keywords
- micro
- vector
- instruction
- processor
- vector instruction
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 207
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000005192 partition Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 7
- 238000003491 array Methods 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 22
- 238000012545 processing Methods 0.000 description 11
- 238000007667 floating Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 7
- 229910044991 metal oxide Inorganic materials 0.000 description 6
- 150000004706 metal oxides Chemical class 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 239000004606 Fillers/Extenders Substances 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013528 artificial neural network 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
- 238000000151 deposition Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种RISC‑V向量处理器和用于RISC‑V向量处理器的方法。该方法包括:从向量指令队列接收基于RISC‑V向量扩展(RVV)的待处理向量指令;确定RISC‑V向量处理器的微操作缓存单元中是否存在与待处理向量指令相对应的一个或多个微操作;并且响应于确定微操作缓存单元中存在与向量指令相对应的一个或多个微操作,针对待处理向量指令禁用用于对待处理向量指令进行解码的解码单元,并将微操作缓存单元中的与向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。
Description
技术领域
本公开涉及计算机领域,更具体地,涉及第五代精简指令集计算机(RISC-V)向量处理器和用于RISC-V向量处理器的方法。
背景技术
微操作缓存(uop或micro-op cache)被广泛应用于超标量x86处理器中,用于降低复译码器的功耗。X86指令的译码是复杂的,译码器需要将变长指令转换成定长微操作,这会带来额外的功耗和译码延迟,因此,当微操作缓存能够为下一阶段提供微操作时,微操作缓存可以通过禁用或关闭译码器来降低译码器的功率。
RISC-V向量处理器可以用于处理基于RISC-V向量扩展(RVV)的向量指令,一条向量指令可以被扩展成多个微操作。这种扩展的原因是一个RVV指令针对每个操作数可以访问多个指令集架构(ISA)寄存器,RVV指令应该被转换为其中每个微操作针对每个操作数仅访问一个寄存器的多个微操作。因此,RVV向量指令可以被看作是变长指令,这意味着更复杂的译码逻辑和更高的译码功耗。
发明内容
根据本公开的一个方面,提供了一种用于RISC-V向量处理器的方法,包括:在向量指令队列中接收基于RISC-V向量扩展的待处理向量指令;确定所述RISC-V向量处理器的微操作缓存单元中是否存在与所述待处理向量指令相对应的一个或多个微操作;并且响应于确定所述微操作缓存单元中存在与所述待处理向量指令相对应的一个或多个微操作,针对所述待处理向量指令禁用用于对所述待处理向量指令进行解码的解码单元,并将所述微操作缓存单元中的与所述待处理向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。
根据本公开的另一方面,提供了一种RISC-V向量处理器,包括:解码单元,被配置为:从向量指令队列接收基于RISC-V向量扩展的待处理向量指令;将所述待处理向量指令解码为一个或多个微操作;将解码出的一个或多个微操作发送到微操作队列和微操作缓存单元;以及所述微操作缓存单元,被配置为:存储与各个向量指令相对应的微操作;针对向量指令队列中的待处理向量确定是否存在相对应的一个或多个微操作;响应于确定存在与所述待处理向量指令相对应的一个或多个微操作,针对所述待处理向量指令禁用所述解码单元,以及将与所述待处理向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。
根据本公开的另一方面,提供了一种用于RISC-V向量处理器的装置,包括用于执行上述方法的部件。
根据本公开的再一方面,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,促使处理器执行上述方法。
根据本公开的又一方面,提供了一种计算机程序产品,包括计算机可执行指令,所述计算机可执行指令在由处理器执行时,促使处理器执行上述方法。
附图说明
从下面结合附图对本公开的具体实施方式的描述中可以更好地理解本公开,其中:
图1示出了根据本公开实施例的用于RISC-V向量处理器的方法的示意流程图。
图2示出了根据本公开实施例的具有向量微操作缓存的RISC-V向量处理器的解码工作流的示意流程图。
图3示出了根据本公开实施例的向量微操作缓存的结构示意图。
图4示出了根据本公开实施例的向量微操作缓存的数据阵列的结构示意图。
图5示出了根据本公开实施例的向量微操作缓存的分区布置的结构示意图。
图6图示了示例计算系统。
图7图示了示例处理器和/或片上系统(System on a Chip,SoC)的框图,该处理器和/或SoC可以具有一个或多个核心并具有集成存储器控制器。
图8(A)的框图图示了根据一些示例的示例有序管线和示例寄存器重命名、乱序发出/执行管线两者。
图8(B)的框图图示了根据示例,要被包括在处理器中的示例有序体系结构核心和示例寄存器重命名、乱序发出/执行体系结构核心两者。
图9示出了可以实现根据本公开一些实施例的方法的计算机系统的示意性框图。
具体实施方式
下面将详细描述本公开的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本公开的全面理解。但是,对于本领域技术人员来说很明显的是,本公开可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本公开的示例来提供对本公开的更好的理解。本公开决不限于下面所提出的任何具体配置和算法,而是在不脱离本公开的精神的前提下覆盖了元素、部件、和算法的任何修改、替换、和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本公开造成不必要的模糊。
文中重复使用短语“在实施例中”、“在一个实施例中”、和“在一些实施例中”。这些短语通常不指代相同的实施例;然而,它们也可以指代相同的实施例。除非上下文另有规定,否则术语“包含”、“具有”、和“包括”是同义词。短语“A或B”和“A/B”的意思是“(A)、(B)、或(A和B)”。
循环在RVV汇编代码中是非常普遍的,因为向量数据可能具有大量元素,并且一条向量指令最多只能处理最大向量长度(VLMAX)的元素。因此,一条向量指令可能会被多次执行以完成任务,这将导致“循环”语句。
下面是RVV 1.0规范中的RVV汇编代码的循环示例。在此示例中,如果单个向量寄存器中的位数(VLEN)=128且向量长度乘数(AVL)=1024,则循环将发生32次。
示例:加载16位值,宽度倍增至32位,将32位结果右移3,存储32位结果
#在条目中:
# a0 持有要处理的元素总数
# a1 持有源阵列的地址
# a2 持有目的地阵列的地址
loop:
vsetvli a3, a0, e16, m4, ta, ma # vtype(向量类型) = 16位整数向量;
# 还用vl(此迭代中元素的数量)更新a3
vle16.v v4, (a1) # 获得16位向量
slli t1, a3, 1 # 通过2字节/源元素计算此迭代中的字节数
add a1, a1, t1 # 碰撞指针
vwmul.vx v8, v4, x10 # 在(v8--v15)中加宽倍增至32位
vsetvli x0, x0, e32, m8, ta, ma # 在32位值上操作
vsrl.vi v8, v8, 3
vse32.v v8, (a2) # 存储具有32个元素的向量
slli t1, a3, 2 # 通过4字节/目的地元素计算此迭代中的元素数
add a2, a2, t1 # 碰撞指针
sub a0, a0, a3 # 计数递减vl
bnez a0, loop # 还有?
从上述示例中可以看出,每个向量指令都将被解码单元解码32次,这将产生不必要的功耗,因为解码单元一直在对相同的指令进行解码。
此外,对于高速向量处理单元(VPU),通常有多个解码器来处理并行指令,并行的多个解码器相比于单个解码器具有更强的解码能力,但同时也带了更多的功耗。
扩展器用于将解码器输出的宏运算扩展为微运算。对于每个操作数,每个微操作只访问一个寄存器。对于大多数向量指令,扩展长度等于LMUL(向量寄存器组中向量寄存器的数目)。但对于某些类型的指令,扩展长度不同于LMUL。例如,单位步掩码加载/存储指令的扩展长度为EMUL=(EEW/SEW)*LMUL(其中EMUL为有效LMUL,EEW为有效元素位宽,SEW为选定元素位宽),索引加载/存储指令的扩展长度为max(EMUL,LMUL),分段加载/存储指令的扩展长度为EMUL*NF(领域数量),加宽指令的扩展长度为2*LMUL。由于指令在循环中的重复执行,同一指令的扩展长度需要在循环中不断重复计算,由此为扩展器带来了额外的功耗和延迟。扩展器的另一功能是获得每个操作数的操作数地址增量。针对不同的指令类型,操作数地址增量是不同的,例如,可以是1、1/2、1/4或1/8,而针对同一指令不断重复确定其操作地址增量也将为扩展器带来额外的功耗和延迟。
鉴于上述问题,本申请提供了一种高速RISC-V向量处理器,该RISC-V向量处理器使用向量微操作缓存来降低指令解码的功耗和延迟以及提高解码效率。具体地,通过在RISC-V向量处理器中使用向量微操作缓存,可以节省循环代码的解码功耗并且降低解码单元中的解码器和扩展器的功耗和延迟。
图1示出了根据本公开实施例的用于RISC-V向量处理器的方法100的示意流程图。方法100可以包括步骤S110、S120和S130。然而,在一些实施例中,方法100可以包括更多或更少的不同的步骤,本公开对此不做限制。
在步骤S110,在向量指令队列中接收基于RISC-V向量扩展的待处理向量指令。在步骤S120中,确定RISC-V向量处理器的微操作缓存单元中是否存在与待处理向量指令相对应的一个或多个微操作。在步骤S130中,响应于确定微操作缓存单元中存在与待处理向量指令相对应的一个或多个微操作,针对待处理向量指令禁用用于对待处理向量指令进行解码的解码单元,并将微操作缓存单元中的与待处理向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。
在本公开的实施例中,所述方法还包括:响应于确定微操作缓存单元中不存在与待处理向量指令相对应的一个或多个微操作,针对向量指令启用解码单元;由解码单元对待处理向量指令进行解码以获得与待处理向量指令相对应的一个或多个微操作;将所述一个或多个微操作转发到微操作队列以供后续执行;并且将所述一个或多个微操作的副本与待处理向量指令相关联地存入微操作缓存单元。
图2示出了根据本公开实施例的具有向量微操作缓存的RISC-V向量处理器的解码工作流的示意流程图。如图2所示,RISC-V向量处理器可以包括具有解码器220和扩展器230的解码单元和向量微操作缓存单元240。在本公开的实施例中,解码单元可以被配置为:从向量指令队列210接收基于RISC-V向量扩展的待处理向量指令;将待处理向量指令解码为一个或多个微操作;将解码出的一个或多个微操作发送到微操作队列和微操作缓存单元。在本公开的实施例中,向量微操作缓存单元240可以被配置为:存储与各个向量指令相对应的微操作;针对向量指令队列210中的待处理向量确定是否存在相对应的一个或多个微操作;响应于确定存在与待处理向量指令相对应的一个或多个微操作,针对待处理向量指令禁用解码单元,以及将与待处理向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。在本公开的实施例中,向量微操作缓存单元还被配置为响应于确定不存在与待处理向量指令相对应的一个或多个微操作,启用解码单元以对待处理向量指令进行解码。
具体地,如图2所示,向量指令队列210可以从例如标量核心接收向量指令,并按顺序下发给解码单元,例如,解码器220。如果解码器220未被禁用,则解码器220将接收到的向量指令解码为宏操作(控制信号)。之后,扩展器230根据指令的类型及LMUL将每个宏操作扩展为一个或多个微操作,该一个或多个微操作然后被发送到微操作队列250以供后续执行。
在本公开的实施例中,解码单元针对向量指令解码出的微操作还被存储到向量微操作缓存240中。在一个实施例中,例如,可以经由更新缓冲器260来将解码单元解码出的微操作存入向量微操作缓存240。
在本公开的实施例中,如果向量微操作缓存240能够为向量指令队列210中的后续指令提供正确的微操作,则向量微操作缓存240将禁用(或关闭)解码器220和扩展器230,并将与该后续指令相对应的一个或多个微操作直接转发至微操作队列250。在一个示例中,例如,可以通过时钟门控的方式来禁用解码器220和扩展器230。
在本公开的实施例中,向量微操作缓存240可以在解码单元之前运行一个或多个时钟周期,以便提前禁用解码单元。为了实现这种“超前运行”方案,可以在向量指令队列中维护一个专用于向量微操作缓存240的指针。具体地,该指针可以指向在向量指令队列210中等待的未执行待处理指令,针对指针指向的指令,可以查询向量微操作缓存240中是否缓存了该指令,即判断该指令是否在向量微操作缓存240中“命中”,如果该指令在在向量微操作缓存240中“命中”,则该指令的微操作可以从微操作缓存240中读取,而无需被发送给解码单元进行解码,因此,可以针对该指令禁用解码单元。由此,可以在指令在向量指令队列210中等待的时候,提前禁用解码单元。
针对向量指令队列210中的待处理向量指令,当在向量微操作缓存240中“未命中”时,解码单元立即被启用,并且专用于解码单元(例如,解码器220)的指针被设置为指向向量指令队列中的“未命中”指令。虽然解码器的启用可能比向量微操作缓存的未命中检测晚一个时钟周期,但向量微操作缓存240之后的微操作队列250中的等待微操作可以消除这些气泡。
图3示出了根据本公开实施例的向量微操作缓存的结构示意图。如图3所示,向量微操作缓存单元包括标签阵列和数据阵列,其中,标签阵列的每个条目包括标签字段和有效字段,并且其中,数据阵列中的每个条目包括微操作有效载荷。
在本公开的实施例中,向量微操作缓存具有直接映射的标签阵列,由程序计数器(PC)的索引字段(例如,低位地址位)进行索引。将PC的标签字段(例如,高位地址位)与索引得到的标签阵列中的条目的标签进行比较,当标签匹配并且该标签的有效字段指示有效时,则表明命中,即,向量微操作缓存中存在相应指令的微操作。当标签不匹配或标签的有效字段指示无效时,则表明未命中,即,向量微操作缓存中不存在相应指令的微操作。
在本公开的实施例中,数据阵列中的每个条目存储的微操作有效载荷包括微操作内容和操作数地址增量。
在一个实施例中,数据阵列的每个条目存放一个或多个微操作,例如,由于一条指令可以扩展到最多八个微操作,每个条目可以存放1-8个微操作。在一个实施例中,数据阵列的条目具有紧凑的形式,每个条目存放一条向量指令的所有微操作。由于一条指令的微操作都是相同的,仅操作数地址不同,因此,可以通过利用存储操作数地址增量的额外字段来实现在一个条目中存放多个微操作。利用该紧凑的数据格式,可以大大提高微操作缓存的空间效率。
在本公开的实施例中,微操作缓存可以包括微操作索引计数器,该微操作索引计数器在微操作缓存中充当微操作索引生成器,用于为每个微操作生成索引。
图4示出了根据本公开实施例的向量微操作缓存的数据阵列的结构示意图。如图4所示,数据阵列中的每个条目的微操作有效载荷包括微操作字段和操作数地址增量字段。
在本公开的实施例中,微操作字段用于指示微操作的内容,一条指令的不同微操作的微操作内容是相同的。微操作字段可以包括微操作长度子字段和操作数子字段,其中,微操作长度子字段用于指示向量指令被解码出的微操作的数量,操作数子字段用于指示操作数源地址和目的地地址的操作数子字段。在本公开的实施例中,微操作字段还可以包括用于存储微操作的任何其他子字段,其他子字段可以用于指示多个控制信号,例如操作码、指令类型等。
在本公开的实施例中,操作数地址增量字段用于指示每个微操作的操作数地址增量。例如,如图4所示,在操作数地址增量字段中,每个操作数可以有例如3个比特位,这个3个比特位被映射到每个操作数的地址增量。例如,该地址增量可以是0、1、1/2、1/4或1/8,例如,如果“地址增量”为1,则当微操作的索引增加时,对应的操作数地址增加1;如果“地址增量”为1/2,则当微操作的索引增加2时,对应的操作数地址增加1,以此类推。1/4和1/8的地址增量值用于向量整数扩展指令。
在本公开的实施例中,微操作缓存单元可以并行输出与多个向量指令相对应的多个微操作。在本公开的实施例中,向量微操作缓存的数据阵列可以基于寄存器堆。可以通过基于寄存器堆的数据阵列来实现对数据阵列的多个条目的同时访问。对于高速VPU,从解码单元解码出的多个微操作被并行发送到下一级,例如,如果并行输出的数量为2,则在一个时钟周期中应输出2个微操作。对于扩展长度等于1的指令,两个输出微操作将来自两个不同的向量指令,这表明应该同时访问数据阵列的两个条目,这可以通过基于寄存器堆的数据阵列来实现。
在本公开的实施例中,向量微操作缓存的数据阵列可以基于静态随机存储器(SRAM),其中,SRAM只支持一读一写。在一个实施例中,可以通过使用分区阵列(bankedarray)来支持用于基于SRAM的数据阵列的多个读取端口,进而实现对数据阵列的多个条目的同时访问。图5示出了根据本公开实施例的向量微操作缓存的分区布置的结构示意图。在本公开的实施例中,如果微操作的并行输出的并行度为n,则应该存在数据阵列的n个分区,例如,在向量指令的扩展长度等于1的情况下。例如,如图5所示,向量指令的扩展长度等于1,微操作缓冲的输出并行度为2,其数据阵列具有2个分区,其中一个分区具有奇数索引的条目,另一分区具有偶数索引的条目。这两个分区可以使用一个PC提供来自2个连续指令的2个微操作。具体地,在标签阵列采用SRAM实现的情况下,微操作缓存将接到两个连续指令的两个PC,可以利用第一个指令的PC作为地址来读取两个分区。然后,可以利用第二个指令的正确PC来对读取的第二个微操作的PC进行检查。如果两个PC地址不匹配,则取消第二次微操作。实际上,考虑到程序模式的重复性,尤其是向量程序中存在大量的循环代码,很多情况下这两个PC地址是匹配的。
在本公开的实施例中,向量微操作缓存还包括微操作重布置和索引生成单元或块,用于对多个输出的微操作进行重布置并生成针对所输出的微操作的索引。例如。如果微操作重布置和索引生成单元的输入是来自两个分区的微操作,则输出直接为输入。如果该单的元输入来自一个分区,说明其可能是一个指令可以拆分成多个微操作的紧凑形式,则可以将其拆分成两个微操作输出,并利用操作数地址增量字段来生成针对这两个微操作的相应索引。
在本公开的实施例中,向量微操作缓存的输出宽度可以被设计为大于解码单元的输出宽度,向量微操作缓存可以潜在地提高指令吞吐量。例如,如果解码单元每周期生成最多两个微操作,而向量微操作缓存每周期生成最多四个微操作,则当微操作缓存命中时,它可以比解码单元多生成两个微操作,这将潜在地改善向量每周期的指令数IPC。
本公开实施例提供了一种用于RVV的向量微操作缓存结构,该结构可以降低向量译码和扩展器的功耗和延迟。本公开实施例还提供了一种用于向量微操作缓存的针对RVV的紧凑的微操作存储格式,该存储格式可以提高向量微操作缓存的面积和空间效率。本公开实施例还提供了一种支持高速并行向量指令译码的向量微操作并行生成方案和结构,该方案和结构可以进一步提高译码效率。本公开实施例还通过使向量微操作缓存的输出宽度大于解码单元的输出宽度提供了一种利用向量微操作缓存提高向量指令吞吐量的方案。
图6图示了示例计算系统。多处理器系统600是一种接口式系统,并包括多个处理器或核心,其中包括经由接口650(例如点到点(P-P)互连、结构(fabric)和/或总线)耦合的第一处理器670和第二处理器680。在一些示例中,第一处理器670和第二处理器680是同构的。在一些示例中,第一处理器670和第二处理器680是异构的。虽然示例系统600被示为具有两个处理器,但该系统可具有三个或更多个处理器,或者可以是单处理器系统。在一些实施例中,该计算系统是SoC。
处理器670和680被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)电路672和682。处理器670还包括接口电路676和678;类似地,第二处理器680包括接口电路686和688。处理器670、680可以利用接口电路678、688经由接口650交换信息。IMC 672和682将处理器670、680耦合到各自的存储器,即存储器632和存储器634,这些存储器可以是在本地附接到各个处理器的主存储器的一部分。
处理器670、680可以各自利用接口电路676、694、686、698,经由各个接口652、654来与网络接口(network interface,NW I/F)690交换信息。网络接口690(例如互联、总线和/或结构中的一项或多项,在某些示例中是芯片组)可以可选地经由接口电路692与协处理器638交换信息。在一些示例中,协处理器638是专用处理器,例如高吞吐量处理器、网络或通信处理器、压缩引擎、图形处理器、通用图形处理单元(general purpose graphicsprocessing unit,GPGPU)、神经网络处理单元(neural-network processing unit,NPU)、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器670、680中,或者在两个处理器之外但经由接口(例如P-P互连)与这些处理器相连接,从而使得:如果一处理器被置于低功率模式,任一个或两个处理器的本地缓存信息也可以被存储在该共享缓存中。
网络接口690可以经由接口电路696耦合到第一接口616。在一些示例中,第一接口616可以是诸如外围组件互连(Peripheral Component Interconnect,PCI)互连、PCI快速(PCI Express)互连或者另一I/O互连之类的接口。在一些示例中,第一接口616耦合到功率控制单元(power control unit,PCU)617,PCU 617可以包括电路、软件和/或固件来执行关于处理器670、680和/或协处理器638的功率管理操作。PCU 617向电压调节器(未示出)提供控制信息,以使得电压调节器生成适当的调节电压。PCU 617还提供控制信息以控制所生成的操作电压。在各种示例中,PCU 617可以包括各种功率管理逻辑单元(电路)来执行基于硬件的功率管理。这种功率管理可以是完全由处理器控制的(例如,由各种处理器硬件控制,并且可以由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功率管理可以响应于外部源而被执行(例如平台或功率管理源或系统软件)。
PCU 617被图示为作为与处理器670和/或处理器680分开的逻辑而存在。在其他情况下,PCU 617可以在处理器670或680的核心(未示出)中给定的一个或多个核心上执行。在一些情况下,PCU 617可以被实现为微控制器(专用的或通用的)或者其他控制逻辑,其被配置为执行其自己的专用功率管理代码(有时称为P代码)。在另外的其他示例中,PCU 617要执行的功率管理操作可以被实现在处理器外部,例如借由单独的功率管理集成电路(powermanagement integrated circuit,PMIC)或者在处理器外部的另一组件来实现。在另外的其他示例中,PCU 617要执行的功率管理操作可被实现在BIOS或其他系统软件内。
各种I/O设备614以及总线桥618可以耦合到第一接口616,总线桥618将第一接口616耦合到第二接口620。在一些示例中,(一个或多个)额外的处理器615被耦合到第一接口616,例如协处理器、高吞吐量集成众核(many integrated core,MIC)处理器、GPGPU、加速器(例如图形加速器或数字信号处理(digital signal processing,DSP)单元)、现场可编程门阵列(field programmable gate array,FPGA)、或者任何其他处理器。在一些示例中,第二接口620可以是低引脚数(low pin count,LPC)接口。各种设备可以耦合到第二接口620,这些设备例如包括键盘和/或鼠标622、通信设备627、以及存储电路628。存储电路628可以是下文所述的一个或多个非暂态机器可读存储介质,例如盘驱动器或者其他大容量存储设备,其在一些示例中可包括指令/代码和数据630并且可以实现存储装置`ISAB03。另外,音频I/O 624可以耦合到第二接口620。注意,除了上述的点到点体系结构以外其他体系结构也是可能的。例如,诸如多处理器系统600之类的系统可以实现多点分支(multi-drop)接口或者其他这种体系结构,而不是点到点体系结构。
示例核心体系结构、处理器和计算机体系结构。
处理器核心可以按不同的方式、为了不同的目的、在不同的处理器中实现。例如,这些核心的实现方式可以包括:1)通用有序核心,针对通用计算目的;2)高性能通用乱序核心,针对通用计算目的;3)专用核心,主要针对图形和/或科学(吞吐量)计算目的。不同处理器的实现方式可以包括:1)CPU,包括针对通用计算目的的一个或多个通用有序核心和/或针对通用计算目的的一个或多个通用乱序核心;以及2)协处理器,包括主要针对图形和/或科学(吞吐量)计算目的的一个或多个专用核心。这些不同处理器导致不同的计算机系统体系结构,这些体系结构可以包括:1)协处理器与CPU在分开的芯片上;2)协处理器与CPU在同一封装中分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统(SoC),其可以在与所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)同一管芯上包括上述的协处理器以及另外的功能。接下来描述示例核心体系结构,然后是对示例处理器和计算机体系结构的描述。
图7图示了示例处理器和/或SoC 700的框图,该处理器和/或SoC 700可以具有一个或多个核心并具有集成存储器控制器。实线框图示的处理器700具有单个核心702(A)、系统代理单元电路710和一组一个或多个接口控制器单元电路716,而可选地添加的虚线框将替代性处理器700图示为具有多个核心702(A)-(N)、系统代理单元电路710中的一组一个或多个集成存储器控制单元电路714、专用逻辑708以及一组一个或多个接口控制器单元电路716。注意,处理器700可以是图6的处理器670或680或者协处理器638或615之一。
从而,处理器700的不同实现方式可以包括:1)CPU,其中专用逻辑708是集成图形和/或科学(吞吐量)逻辑(可以包括一个或多个核心,未示出),核心702(A)-(N)是一个或多个通用核心(例如,通用有序核心、通用乱序核心、或这两者的组合);2)协处理器,其中核心702(A)-(N)是主要针对图形和/或科学(吞吐量)目的的大量专用核心;以及3)协处理器,其中核心702(A)-(N)是大量的通用有序核心。从而,处理器700可以是通用处理器、协处理器或者专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。该处理器可被实现在一个或多个芯片上。处理器700可以是一个或多个衬底的一部分和/或可以使用多种工艺技术中的任何技术来实现在一个或多个衬底上,这些工艺技术例如互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)、双极CMOS(bipolarCMOS,BiCMOS)、P型金属氧化物半导体(P-type metal oxide semiconductor,PMOS)、或者N型金属氧化物半导体(N-type metal oxide semiconductor,NMOS)。
存储器层次体系包括核心702(A)-(N)内的一级或多级缓存单元电路704(A)-(N)、一组一个或多个共享缓存单元电路706、以及耦合到该组集成存储器控制器单元电路714的外部存储器(未示出)。该组一个或多个共享缓存单元电路706可以包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存,例如最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一些示例中接口网络电路712(例如,环形互连)对专用逻辑708(例如,集成图形逻辑)、该组共享缓存单元电路706和系统代理单元电路710提供接口,但替代性示例使用任何数目的公知技术来对这些单元提供接口。在一些示例中,在共享缓存单元电路706中的一个或多个电路与核心702(A)-(N)之间维持一致性。在一些示例中,接口控制器单元电路716将这些核心702耦合到一个或多个其他设备718,例如一个或多个I/O设备、存储装置、一个或多个通信设备(例如,无线网络、有线网络等)等等。
在一些示例中,核心702(A)-(N)中的一个或多个具有多线程能力。系统代理单元电路710包括对核心702(A)-(N)进行协调和操作的那些组件。系统代理单元电路710可以包括例如功率控制单元(power control unit,PCU)电路和/或显示单元电路(未示出)。PCU可以是(或者可以包括)对核心702(A)-(N)和/或专用逻辑708(例如,集成图形逻辑)的功率状态进行调节所需的逻辑和组件。显示单元电路用于驱动一个或多个在外部连接的显示器。
核心702(A)-(N)就指令集体系结构(instruction set architecture,ISA)而言可以是同构的。或者,核心702(A)-(N)就ISA而言也可以是异构的;也就是说,核心702(A)-(N)的子集可能能够执行一ISA,而其他核心可能能够只执行该ISA的子集或者能够执行另一ISA。
图8(A)的框图图示了根据一些示例的示例有序管线和示例寄存器重命名、乱序发出/执行管线两者。图8(B)的框图图示了根据示例,要被包括在处理器中的示例有序体系结构核心和示例寄存器重命名、乱序发出/执行体系结构核心两者。图8(A)-(B)中的实线框图示了有序管线和有序核心,而可选地添加的虚线框图示了寄存器重命名、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图8(A)中,处理器管线800包括取得阶段802、可选的长度解码阶段804、解码阶段806、可选的分配(Alloc)阶段808、可选的重命名阶段810、调度(也称为调遣或发出)阶段812、可选的寄存器读取/存储器读取阶段814、执行阶段816、写回/存储器写入阶段818、可选的异常处置阶段822、以及可选的提交阶段824。在这些处理器管线阶段的每一者中可以执行一个或多个操作。例如,在取得阶段802期间,从指令存储器取得一个或多个指令,并且在解码阶段806期间,可以对取得的一个或多个指令进行解码,可以生成使用转发寄存器端口的地址(例如,加载存储单元(load store unit,LSU)地址),并且可以执行分支转发(例如,立即数偏移或者链接寄存器(link register,LR))。在一种示例中,解码阶段806和寄存器读取/存储器读取阶段814可以被组合到一个管线阶段中。在一种示例中,在执行阶段816期间,可以执行经解码的指令,可以执行到高级微控制器总线(Advanced MicrocontrollerBus,AMB)接口的LSU地址/数据管线化,可以执行乘法和加法操作,可以执行具有分支结果的算术操作,等等。
作为示例,图8(B)的示例寄存器重命名、乱序发出/执行体系结构核心可以通过以下方式实现管线800:1)指令取得电路838执行取得和长度解码阶段802和804;2)解码电路840执行解码阶段806;3)重命名/分配器单元电路852执行分配阶段808和重命名阶段810;4)(一个或多个)调度器电路856执行调度阶段812;5)(一个或多个)物理寄存器堆电路858和存储器单元电路870执行寄存器读取/存储器读取阶段814;(一个或多个)执行集群860执行执行阶段816;6)存储器单元电路870和(一个或多个)物理寄存器堆电路858执行写回/存储器写入阶段818;7)在异常处置阶段822中可能涉及各种电路;并且8)引退单元电路854和(一个或多个)物理寄存器堆电路858执行提交阶段824。
图8(B)示出了处理器核心890包括耦合到执行引擎单元电路850的前端单元电路830,并且两者都耦合到存储器单元电路870。核心890可以是精简指令集体系结构计算(reduced instruction set architecture computing,RISC)核心、复杂指令集体系结构计算(complex instruction set architecture computing,CISC)核心、超长指令字(verylong instruction word,VLIW)核心、或者混合或替代性核心类型。作为另外一个选项,核心890可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元电路830可以包括分支预测电路832,该分支预测电路耦合到指令缓存电路834,该指令缓存电路耦合到指令转译后备缓冲器(translation lookaside buffer,TLB)836,该指令TLB耦合到指令取得电路838,该指令取得电路耦合到解码电路840。在一种示例中,指令缓存电路834被包括在存储器单元电路870中,而不是前端电路830中。解码电路840(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码电路840还可以包括地址生成单元(address generation unit,AGU,未示出)电路。在一种示例中,AGU使用经转发的寄存器端口来生成LSU地址,并且可以进一步执行分支转发(例如,立即数偏移分支转发,LR寄存器分支转发,等等)。可以利用各种不同的机制来实现解码电路840。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一种示例中,核心890包括微代码ROM(未示出)或其他介质,其存储用于某些宏指令的微代码(例如,在解码电路840中或者以其他方式在前端电路830内)。在一种示例中,解码电路840包括根据本申请实施例的微操作(micro-op)或操作缓存(未示出),以保存/缓存在处理器管线800的解码或其他阶段期间生成的经解码的操作、微标记或微操作。解码电路840可以耦合到执行引擎电路850中的重命名/分配器单元电路852。
执行引擎电路850包括重命名/分配器单元电路852,其耦合到引退单元电路854和一组一个或多个调度器电路856。调度器电路856代表任意数目个不同调度器,包括预留站、中央指令窗口,等等。在一些示例中,(一个或多个)调度器电路856可以包括算术逻辑单元(arithmetic logic unit,ALU)调度器/调度电路、ALU队列、地址生成单元(addressgeneration unit,AGU)调度器/调度电路、AGU队列,等等。(一个或多个)调度器电路856耦合到(一个或多个)物理寄存器堆电路858。(一个或多个)物理寄存器堆电路858的每一者代表一个或多个物理寄存器堆,这些物理寄存器堆中的不同物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,指令指针,即要执行的下一指令的地址),等等。在一种示例中,(一个或多个)物理寄存器堆电路858包括向量寄存器单元电路、写入掩码寄存器单元电路、以及标量寄存器单元电路。这些寄存器单元可以提供体系结构式向量寄存器、向量掩码寄存器、通用寄存器,等等。(一个或多个)物理寄存器堆电路858耦合到引退单元电路854(也称为引退队列),以展示可以用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器(reorder buffer,ROB)和(一个或多个)引退寄存器堆;利用(一个或多个)未来的堆、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器堆;利用寄存器图谱和寄存器的池;等等)。引退单元电路854和(一个或多个)物理寄存器堆电路858耦合到(一个或多个)执行集群860。(一个或多个)执行集群860包括一组一个或多个执行单元电路862和一组一个或多个存储器访问电路864。(一个或多个)执行单元电路862可以对各种类型的数据(例如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种算术、逻辑、浮点或其他类型的操作(例如,移位、加法、减法、乘法)。虽然一些示例可以包括专用于特定功能或功能集合的若干个执行单元或执行单元电路,但其他示例可以只包括一个执行单元电路或者全部执行所有功能的多个执行单元/执行单元电路。(一个或多个)调度器电路856、(一个或多个)物理寄存器堆电路858以及(一个或多个)执行集群860被示为可能是多个,因为某些示例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器电路、(一个或多个)物理寄存器堆电路和/或执行集群——并且在单独的存储器访问管线的情况下,所实现的某些示例中只有该管线的执行集群具有(一个或多个)存储器访问单元电路864)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,而其余是有序的。
在一些示例中,执行引擎单元电路850可以执行到高级微控制器总线(AMB)接口(未示出)的加载存储单元(LSU)地址/数据管线化,以及地址阶段和写回、数据阶段加载、存储、以及分支。
一组存储器访问电路864耦合到存储器单元电路870,该存储器单元电路包括数据TLB电路872,该数据TLB电路耦合到数据缓存电路874,该数据缓存电路耦合到第2级(L2)缓存电路876。在一个示例中,存储器访问电路864可以包括加载单元电路、存储地址单元电路、以及存储数据单元电路,它们中的每一者耦合到存储器单元电路870中的数据TLB电路872。指令缓存电路834进一步耦合到存储器单元电路870中的第2级(L2)缓存电路876。在一种示例中,指令缓存834和数据缓存874被组合成L2缓存电路876、第3级(L3)缓存电路(未示出)和/或主存储器中的单个指令和数据缓存(未示出)。L2缓存电路876耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
核心890可以支持一个或多个指令集(例如,x86指令集体系结构(可选地带有已随着更新版本添加的一些扩展);MIPS指令集体系结构;ARM指令集体系结构(可选地带有可选的额外扩展,例如NEON)),该指令集包括本文描述的(一个或多个)指令,RISC-V指令集体系结构。在一种示例中,核心890包括支持紧缩数据指令集体系结构扩展(例如,AVX1、AVX2)的逻辑,从而允许利用紧缩数据来执行被许多多媒体应用使用的操作。在一种示例中,核心890包括支持RISC-V向量扩展的逻辑。
图9示出了可以实现根据本公开一些实施例的方法的计算机系统的示意性框图。如图9所示,计算机系统900可以包括处理设备(例如,中央处理器、图形处理器等)902,其可以根据存储在只读存储器(ROM)904中的程序或者从存储设备916加载到随机访问存储器(RAM)906中的程序而执行各种适当的动作和处理。在RAM 906中,还存储有计算机系统900操作所需的各种程序和数据。处理设备902、ROM 904、以及RAM 906通过总线908彼此相连。输入/输出(I/O)接口910也连接至总线908。
通常,以下设备可以连接至I/O接口910:包括例如触摸屏、触摸板、摄像头、加速度计、陀螺仪、传感器等的输入设备912;包括例如液晶显示器(LCD,Liquid CrystalDisplay)、扬声器、振动器、电机、电子调速器等的输出设备914;包括例如闪存(FlashCard)等的存储设备916;以及通信设备918。通信设备918可以允许计算机系统900与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种设备的计算机系统900,但是应理解的是,并不要求实施或具备所有示出的设备。可以替代地实施或具备更多或更少的设备。图9中示出的每个方框可以代表一个设备,也可以根据需要代表多个设备。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例提供了一种计算机可读介质,该计算机可读介质承载有计算机程序(即,计算机可执行指令),该计算机程序包含用于执行图1所示的方法100的程序代码。在这样的实施例中,计算机程序可以通过通信设备918从网络上被下载和安装,或者从存储设备916被安装,或者从ROM 904被安装。在计算机程序被处理设备902执行时,实现根据本公开实施例的上述过程。
需要说明的是,根据本公开实施例的计算机可读介质可以是计算机可读信号介质、计算机可读存储介质、或它们的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置、或设备,或者它们的任意组合。计算机可读存储介质的更具体的示例可以包括但不限于:具有一条或多条导线的电连接、便携式计算机磁盘、硬盘、RAM、ROM、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或者它们的任意合适组合。根据本公开实施例的计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置、或者设备使用或者与其结合使用。另外,根据本公开实施例的计算机可读信号介质可以包括在基带中或者作为载波的一部分传播的数据信号,其中承载了计算机可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号、或它们的任意合适组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播、或者传输用于由指令执行系统、装置、或者设备使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(Radio Frequency,射频)等等,或者它们的任意合适组合。
可以以一种或多种程序设计语言或其组合来编写用于执行根据本公开实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全在用户计算机上执行、部分在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如,利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图示出了根据本公开的各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能、和操作。这里,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。还要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开的实施例中描述的设备可以通过软件或硬件来实现。所描述的设备也可以设置在处理器中,例如,它可以被描述为一种ISA仿真装置。应当理解,在某些情况下,这些设备的名称并不构成对设备本身的定义。
本公开可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的算法可以被修改,而系统体系结构并不脱离本公开的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本公开的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本公开的范围之中。
Claims (19)
1.一种用于RISC-V向量处理器的方法,包括:
在向量指令队列中接收基于RISC-V向量扩展的待处理向量指令;
确定RISC-V向量处理器的微操作缓存单元中是否存在与待处理向量指令相对应的一个或多个微操作;并且
响应于确定微操作缓存单元中存在与待处理向量指令相对应的一个或多个微操作,针对待处理向量指令禁用用于对待处理向量指令进行解码的解码单元,并将微操作缓存单元中的与待处理向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。
2.根据权利要求1所述的方法,其中,所述方法还包括:
响应于确定微操作缓存单元中不存在与待处理向量指令相对应的一个或多个微操作,针对该向量指令启用解码单元;
由解码单元对向量指令进行解码以获得与向量指令相对应的一个或多个微操作;
将一个或多个微操作转发到微操作队列以供后续执行;并且
将一个或多个微操作的副本与向量指令相关联地存入微操作缓存单元。
3.根据权利要求1或2所述的方法,其中,微操作缓存单元包括标签阵列和数据阵列,其中,标签阵列的每个条目包括标签字段和有效字段,并且其中,数据阵列中的每个条目包括针对同一向量指令的所有微操作的微操作有效载荷。
4.根据权利要求3所述的方法,其中,微操作有效载荷包括微操作字段和操作数地址增量字段,其中微操作字段包括:指示向量指令解码出的微操作的数量的微操作长度子字段和指示操作数源地址和目的地地址的操作数子字段,并且其中,操作数地址增量字段包括:指示每个微操作的操作数地址增量的子字段。
5.根据权利要求4所述的方法,微操作缓存单元还包括:微操作索引计数器,用于充当每个微操作的微操作索引生成器。
6.根据权利要求4所述的方法,还包括:
从微操作缓存单元并行输出与多个向量指令相对应的多个微操作。
7.根据权利要求6所述的方法,其中,微操作缓存单元的数据阵列包括多个分区阵列。
8.根据权利要求4-7中任一项所述的方法,其中,微操作缓存单元的输出宽度大于解码单元的输出宽度。
9. 一种RISC-V向量处理器,包括:
解码单元,被配置为:从向量指令队列接收基于RISC-V向量扩展的待处理向量指令;将待处理向量指令解码为一个或多个微操作;将解码出的一个或多个微操作发送到微操作队列和微操作缓存单元;以及
所述微操作缓存单元,被配置为:存储与各个向量指令相对应的微操作;针对向量指令队列中的待处理向量确定是否存在相对应的一个或多个微操作;响应于确定存在与待处理向量指令相对应的一个或多个微操作,针对待处理向量指令禁用解码单元,以及将与待处理向量指令相对应的一个或多个微操作转发到微操作队列以供后续执行。
10.根据权利要求9所述的RISC-V向量处理器,微操作缓存单元还被配置为:响应于确定不存在与待处理向量指令相对应的一个或多个微操作,启用解码单元以对待处理向量指令进行解码。
11.根据权利要求9或10所述的RISC-V向量处理器,其中,微操作缓存单元包括标签阵列和数据阵列,其中,标签阵列的每个条目包括标签字段和有效字段,并且其中,数据阵列中的每个条目包括针对同一向量指令的所有微操作的微操作有效载荷。
12.根据权利要求11所述的RISC-V向量处理器,其中,微操作有效载荷包括微操作字段和操作数地址增量字段,其中微操作字段包括:指示向量指令解码出的微操作的数量的微操作长度子字段和指示操作数源地址和目的地地址的操作数子字段,并且其中,操作数地址增量字段包括:指示每个微操作的操作数地址增量的子字段。
13.根据权利要求12所述的RISC-V向量处理器,微操作缓存单元还包括:微操作索引计数器,用于充当每个微操作的微操作索引生成器。
14.根据权利要求12所述的RISC-V向量处理器,其中,微操作缓存单元还被配置为:并行输出与多个向量指令相对应的多个微操作。
15.根据权利要求14所述的RISC-V向量处理器,其中,微操作缓存单元的数据阵列包括多个分区阵列。
16.根据权利要求12-15中任一项所述的RISC-V向量处理器,其中,微操作缓存单元的输出宽度大于所述解码单元的输出宽度。
17.一种用于RISC-V向量处理器的装置,包括用于执行权利要求1至8中任一项所述的方法的部件。
18.一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,促使处理器执行权利要求1至8中任一项所述的方法。
19.一种计算机程序产品,包括计算机可执行指令,所述计算机可执行指令在由处理器执行时,促使处理器执行根据权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410417677.9A CN118034784B (zh) | 2024-04-08 | 2024-04-08 | Risc-v向量处理器和用于risc-v向量处理器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410417677.9A CN118034784B (zh) | 2024-04-08 | 2024-04-08 | Risc-v向量处理器和用于risc-v向量处理器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118034784A true CN118034784A (zh) | 2024-05-14 |
CN118034784B CN118034784B (zh) | 2024-08-02 |
Family
ID=90993568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410417677.9A Active CN118034784B (zh) | 2024-04-08 | 2024-04-08 | Risc-v向量处理器和用于risc-v向量处理器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118034784B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324383A (zh) * | 2020-02-28 | 2020-06-23 | 西安微电子技术研究所 | 一种基于risc-v指令扩展的安全协处理器结构 |
US20210357227A1 (en) * | 2020-05-12 | 2021-11-18 | Asa Microsystems, Inc. | Risc-v isa based micro-controller unit for low power iot and edge computing applications |
CN115454504A (zh) * | 2022-09-05 | 2022-12-09 | 山东大学 | 一种四发射risc-v处理器微架构及其工作方法 |
US20230168927A1 (en) * | 2021-12-01 | 2023-06-01 | Beijing Eswin Computing Technology Co., Ltd. | Method and apparatus for adjusting instruction pipeline, memory and storage medium |
CN117389621A (zh) * | 2022-07-12 | 2024-01-12 | 斯法夫股份有限公司 | 利用可配置向量寄存器堆支持多个向量长度 |
CN117555600A (zh) * | 2023-10-20 | 2024-02-13 | 海光信息技术(成都)有限公司 | 用于数据通路的操作方法、计算装置及存储介质 |
-
2024
- 2024-04-08 CN CN202410417677.9A patent/CN118034784B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324383A (zh) * | 2020-02-28 | 2020-06-23 | 西安微电子技术研究所 | 一种基于risc-v指令扩展的安全协处理器结构 |
US20210357227A1 (en) * | 2020-05-12 | 2021-11-18 | Asa Microsystems, Inc. | Risc-v isa based micro-controller unit for low power iot and edge computing applications |
US20230168927A1 (en) * | 2021-12-01 | 2023-06-01 | Beijing Eswin Computing Technology Co., Ltd. | Method and apparatus for adjusting instruction pipeline, memory and storage medium |
CN117389621A (zh) * | 2022-07-12 | 2024-01-12 | 斯法夫股份有限公司 | 利用可配置向量寄存器堆支持多个向量长度 |
CN115454504A (zh) * | 2022-09-05 | 2022-12-09 | 山东大学 | 一种四发射risc-v处理器微架构及其工作方法 |
CN117555600A (zh) * | 2023-10-20 | 2024-02-13 | 海光信息技术(成都)有限公司 | 用于数据通路的操作方法、计算装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN118034784B (zh) | 2024-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107408036B (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
US20190004810A1 (en) | Instructions for remote atomic operations | |
US10509726B2 (en) | Instructions and logic for load-indices-and-prefetch-scatters operations | |
CN108351781B (zh) | 用于线程同步的方法和设备 | |
US20170177349A1 (en) | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
US20170177352A1 (en) | Instructions and Logic for Lane-Based Strided Store Operations | |
US20170177359A1 (en) | Instructions and Logic for Lane-Based Strided Scatter Operations | |
KR101941874B1 (ko) | 클러스터 와이드-실행 머신에서 메모리 액세스를 위한 명령어 및 로직 | |
EP3394742A1 (en) | Instructions and logic for load-indices-and-scatter operations | |
US10031847B2 (en) | System and method for replacement in associative memories using weighted PLRU trees | |
CN107077421B (zh) | 用于页表游走改变位的指令和逻辑 | |
US20170091103A1 (en) | Instruction and Logic for Indirect Accesses | |
US20170185403A1 (en) | Hardware content-associative data structure for acceleration of set operations | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
EP3391235A1 (en) | Instructions and logic for even and odd vector get operations | |
US20160283232A1 (en) | Instruction and Logic for Speculative Request Support for Prefetching | |
US11106599B2 (en) | System and method for replacement in associative memories using weighted PLRU trees | |
US20160179552A1 (en) | Instruction and logic for a matrix scheduler | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
KR101898791B1 (ko) | 멀티 스트랜드 비순차 프로세서에서 회수를 위한 명령어들을 식별하는 명령어 및 로직 | |
CN108475242B (zh) | 冲突掩码生成 | |
US20160378480A1 (en) | Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations | |
CN111814093A (zh) | 一种乘累加指令的处理方法和处理装置 |
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 |