CN113590197B - 一种支持可变长向量处理的可配置处理器及其实现方法 - Google Patents
一种支持可变长向量处理的可配置处理器及其实现方法 Download PDFInfo
- Publication number
- CN113590197B CN113590197B CN202110871503.6A CN202110871503A CN113590197B CN 113590197 B CN113590197 B CN 113590197B CN 202110871503 A CN202110871503 A CN 202110871503A CN 113590197 B CN113590197 B CN 113590197B
- Authority
- CN
- China
- Prior art keywords
- instruction
- unit
- vector
- instructions
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000013598 vector Substances 0.000 title claims abstract description 243
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000012163 sequencing technique Methods 0.000 claims description 59
- 230000004048 modification Effects 0.000 claims description 22
- 238000012986 modification Methods 0.000 claims description 22
- 230000003068 static effect Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 6
- 230000006399 behavior Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 3
- 235000010724 Wisteria floribunda Nutrition 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 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
- 230000003287 optical 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
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
本发明公开了一种支持可变长向量处理的可配置处理器及其实现方法,本发明支持可变长向量处理的可配置处理器包括指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件、高速指令与数据缓存以及用于初始或实时对是否支持可变长向量处理的选项进行配置的可配置单元,指令译码与重命名单元、指令发射与执行单元两者均包含复用的用于处理变长向量、固定长度向量处理的执行单元。本发明能够支持可变长向量处理,可复用现有通用微处理器的数据通路,最小化设计复杂度和实现代价,同时兼顾可配置和灵活性,在提供足够可配置的条件下还能够不让芯片面积显著增加。
Description
技术领域
本发明涉及微处理器的设计与实现技术,具体涉及一种支持可变长向量处理的可配置处理器及其实现方法。
背景技术
向量处理是当前微处理器进行数据处理的一种主要形式。目前主流的微处理器厂商都面向高性能计算领域提出了自己的向量处理指令和处理器。譬如:Intel公司于2016年推出了高级向量处理指令集AVX-512,目前主要用于Xeon Phi等服务器产品上;AMD公司前些年发布了基于x86架构的扩展指令集SSE5,主要用于增强其高性能计算能力;ARM公司则先后分别推出了Neon和SVE指令集,加快了进军高性能计算的步伐。
ARM的SVE是一种典型的可变长向量处理指令集,聚焦于高性能计算,其可支持的最大向量长度高达2048比特,其向量长度可为0~2048之间的128的整数倍。SVE一个显著的特点是,软件编程者无需感知硬件实现的向量长度,即可进行向量处理编程,并且编译生成的可执行代码可以在支持不同SVE向量长度的处理器上执行,极大的方便了软件开发者。SVE的寄存器包括向量寄存器和断言寄存器。假设SVE向量寄存器长度为VL,定义断言寄存器位宽为PL=VL/8,断言寄存器的每一个二进制位和向量寄存器的每个字节对应。向量寄存器包含多个向量元素,每个元素的位宽可为8比特、16比特、32比特和64比特,相应的,断言寄存器则包含多个断言元素,每个元素的位宽和向量元素对应,分别为1比特、2比特、4比特和16比特。SVE指令集采用断言寄存器对向量的每个元素进行“预测”,从而实现对不同长度向量的不同长度元素的灵活处理。
现有公开的支持可变长向量处理的处理器为富士通的A64FX,其支持的最大向量长度为512bit。2020年9月,ARM也披露了其第一款支持可扩展向量扩展(SVE)的内核Neoverse V1,并声称能为HPC和ML工作负载带来高达50%的性能提升。现有支持可变长向量处理的处理器往往为突出高性能,在可配置性和灵活性方面所有不足。为了同时兼顾高性能和通用处理,需要设计一种灵活可配置的支持可变长向量处理的处理器。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种支持可变长向量处理的可配置处理器及其实现方法,本发明能够支持可变长向量处理,可复用现有通用微处理器的数据通路,最小化设计复杂度和实现代价,同时兼顾可配置和灵活性,在提供足够可配置的条件下还能够不让芯片面积显著增加。
为了解决上述技术问题,本发明采用的技术方案为:
一种支持可变长向量处理的可配置处理器,包括指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件以及高速指令与数据缓存,所述指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件依次相连,所述高速指令与数据缓存分别与指令获取单元、指令发射与执行单元相连,所述支持可变长向量处理的可配置处理器包括用于初始或实时对是否支持可变长向量处理的选项进行配置的可配置单元;所述指令译码与重命名单元中包括可变长向量拆分模块,用于在可配置单元中支持可变长向量处理的选项被配置为支持可变长向量处理的情况下,针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用;所述指令发射与执行单元中包含用于执行向量指令的向量发射队列和向量执行单元,且向量执行单元支持固定长度向量和可变长向量部分或者全部的执行,且针对可变长向量通过一次或多次完成可变长向量的执行。
可选地,所述可配置单元中还用于初始或实时对分支预测选项进行配置,所述分支预测选项包括静态分支预测模式和动态分支预测模式两种模式;所述指令获取单元在向高速指令与数据缓存中获取指令时,若分支预测选项被配置为静态分支预测模式,则所述指令获取单元根据指令中携带的静态预测地址向高速指令与数据缓存中获取更多的待执行的指令;若分支预测选项被配置为动态分支预测模式,则所述指令获取单元根据指令中携带的动态预测地址向高速指令与数据缓存中获取更多的待执行的指令。
可选地,所述可配置单元中还用于初始或实时对取指宽度M进行配置;所述指令获取单元在向高速指令与数据缓存中获取指令时,每次从高速指令与数据缓存中获取M条指令并存入本地缓存。
可选地,所述可配置单元中还用于初始或实时对译码宽度N进行配置;所述指令译码与重命名单元在进行译码时每次从本地预译码微指令缓存中取出N条指令微指令进行译码。
可选地,所述可配置单元中还用于初始或实时对指令分派宽度P进行配置;所述指令定序与分派单元在进行指令分派的时候,每次从本地待分派缓存中获取最多P条指令进行分派。
可选地,所述可配置单元中还用于初始或实时对乱序资源大小进行配置,所述乱序资源大小包括发射队列大小、重定序缓存大小以及寄存器文件大小;所述指令发射与执行单元基于可配置单元配置的发射队列大小存储待发射的指令,所述指令定序与分派单元基于可配置单元配置的重定序缓存大小执行重定序操作。
可选地,所述指令发射与执行单元包括发射队列和执行单元两个部分,其中发射队列包括分支发射队列、单周期整数发射队列、多周期整数发射队列、向量/浮点发射队列以及访存发射队列,其中执行单元包括分支执行单元、单周期整数执行单元、多周期整数执行单元、向量/浮点执行单元以及访存执行单元,所述向量发射队列是指向量/浮点发射队列,所述向量执行单元是指向量/浮点执行单元,且每种类型的指令独立选择发射与执行。
可选地,所述寄存器文件包括整数寄存器文件、向量/浮点寄存器文件、标志位寄存器文件、断言寄存器文件以及系统寄存器文件。
此外,本发明还提供一种前述支持可变长向量处理的可配置处理器的实现方法,包括:在应用程序运行过程中实时检测应用程序中是否存在可变长向量处理需求的指令标识,如果检测到存在可变长向量处理需求的指令标识,则通过可配置单元对是否支持可变长向量处理的选项进行配置为支持可变长向量处理,并指定最大支持的向量长度,进入支持可变长向量处理模式,否则通过可配置单元对是否支持可变长向量处理的选项进行配置为不支持可变长向量处理,进入传统的固定长度向量处理模式;在支持可变长向量处理模式下,指令译码与重命名单元中的可变长向量拆分模块针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用,且所述指令译码与重命名单元中的可变长向量拆分模块针对可变长向量处理操作进行拆分具体是指根据可变长向量的长度L和预设的固定向量长度CL之间的关系在译码阶段对可变长向量处理操作按需进行拆分,将可变长向量拆分为一个或多个固定向量长度CL长度的指令;指令发射与执行单元的向量执行单元针对可变长向量通过一次或多次完成可变长向量的执行,使其实现对现有固定长度向量处理的向量执行单元的重用。
可选地,所述支持可变长向量处理模式下的指令执行步骤包括:
S1)指令获取:指令获取单元根据配置的取指宽度M,每次从高速指令缓存获取M条指令,并存入本地缓存;如果配置为支持静态预测或动态分支预测,那么指令预取器将从静态或者动态预测地址处获取更多要执行的指令;
S2)指令译码与重命名:指令译码与重命名单元首先根据微指令拆分方式每次对一条或多条指令进行预译码,实现对指令进行拆分为一个或多个微指令,对拆分得到的微指令指定全局的id,并存入本地预译码微指令缓存当中;然后根据配置的指令译码宽度N每次从本地预译码微指令缓存中取N条微指令进行译码,并对微指令中的寄存器操作数进行重命名处理;
S3)指令定序与分派:指令定序与分派单元根据配置的指令分派宽度P,每次从本地待分派缓存中获取最多P条指令基于指令的类型分派发送到指令发射与执行单元,对于所有已经分配有唯一id的微指令,都会在重定序缓存中分配一项,用于管理该微指令的生命周期状态;当对应id的微执行在执行部件执行完后,会返回一个已完成状态给指令定序与分派单元,并修改微指令状态为“待提交”;当连续的多个id的微指令全部处于“待提交”状态时,以组为单位直接将多条微指令进行提交;
S4)指令发射与执行:指令发射与执行单元针对分派的指令类型进行不同的处理:来自指令定序与分派单元的分支指令缓存在分支发射队列当中,发射后在分支执行单元进行执行,分支指令的执行结果包括指定下一条要执行的指令的PC地址,分支预测是否失效;来自指令定序与分派单元的单周期指令缓存在单周期发射队列当中,发射后在单周期整数执行单元进行执行,单周期指令的执行结果包括修改目的整数寄存器或者修改标志寄存器;来自指令定序与分派单元的多周期指令缓存在多周期发射队列当中,发射后在多周期执行单元进行执行,多周期指令的执行结果包括修改目的整数寄存器或者修改标志寄存器或者修改目的系统寄存器;来自指令定序与分派单元的向量/浮点指令缓存在向量/浮点发射队列当中,发射后在向量/浮点执行单元进行执行,向量浮点指令的执行结果包括修改目的向量/浮点寄存器或者修改标志寄存器;来自指令定序与分派单元的访存指令缓存在访存发射队列当中,发射后在访存执行单元进行执行,访存指令的执行行为分为从存储器载入数据或者写数据到存储器,执行结果分别为载入数据到目的寄存器和存储数据到存储器。
和现有技术相比,本发明具有下述优点:
1、本发明支持可变长向量处理的可配置处理器包括用于初始或实时对是否支持可变长向量处理的选项进行配置的可配置单元;所述指令译码与重命名单元中包括可变长向量拆分模块,用于在可配置单元中支持可变长向量处理的选项被配置为支持可变长向量处理的情况下,针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用;所述指令发射与执行单元中包含用于执行向量指令的向量发射队列和向量执行单元,且向量执行单元支持固定长度向量和可变长向量部分或者全部的执行,且针对可变长向量通过一次或多次完成可变长向量的执行,通过增加的可配置单元,结合指令译码与重命名单元、指令发射与执行单元的改进,能够同时支持固定长度和可变长度的向量处理,可以满足多种场景的应用需求,进一步提高了处理器的灵活性,达到了兼顾可配置和灵活性的目的。
2、本发明可实现对指令译码与重命名单元中现有固定长度向量处理的执行单元的重用,以及指令发射与执行单元中向量执行单元的重用,重用使其能够同时支持固定长度和可变长度的向量处理,这些逻辑在提供足够可配置的条件下还能够不让芯片面积显著增加,通过复用现有通用微处理器的数据通路,在兼顾可配置保证灵活性的同时,能够最小化设计复杂度和实现代价。
附图说明
图1为本发明实施例支持可变长向量处理的可配置处理器的结构示意图。
图2为本发明实施例中可配置单元的寄存器配置结构示意图。
图3为本发明实施例实现方法的基本流程图。
图4为本发明实施例中本发明实例指令获取单元的执行原理示意图。
图5为本发明实施例中本发明实例指令译码与重名单元的执行原理示意图。
图6为本发明实施例中本发明实例指令定序与分派单元的执行原理示意图。
图7为本发明实施例中本发明实例指令发射与执行单元的执行原理示意图。
具体实施方式
如图1和图2所示,本实施例支持可变长向量处理的可配置处理器包括指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件以及高速指令与数据缓存,指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件依次相连,高速指令与数据缓存分别与指令获取单元、指令发射与执行单元相连,需要说明的是,指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件以及高速指令与数据缓存均为处理器的现有部件,其功能如下:
可配置单元用于对处理器向量执行模式和架构参数进行配置;
指令获取单元用于从高速指令缓存中获取指令并存入到本地缓存,以用于指令译码与重命名单元进行下一步处理;
指令译码与重命名单元用于对指令进行译码,对寄存器类型操作数进行重命名处理,其中重命名是指对拆分后的每条微指令进行寄存器操作数重命名处理,重命名完成后的微指令发送到指令定序和分派单元;
指令定序与分派单元用于按照指令译码的顺序分派指令到指令发射与执行单元;维护乱序执行中的指令状态,确保指令按序提交;指令定序和分派单元维护乱序执行的指令的状态,保证不同指令类型的指令执行完成后,能够按序进行确认和提交;
指令发射与执行单元用于指令发射和执行。
寄存器文件用于存储指令发射与执行单元所需以及运算得到的各类数据。
高速指令与数据缓存用于缓存来自互连或者外部存储器的指令和数据。
为了实现持可变长向量处理,本实施例中在现有处理器的基础上进行了下述改进:支持可变长向量处理的可配置处理器包括用于初始或实时对是否支持可变长向量处理的选项进行配置的可配置单元;所述指令译码与重命名单元中包括可变长向量拆分模块,用于在可配置单元中支持可变长向量处理的选项被配置为支持可变长向量处理的情况下,针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用;所述指令发射与执行单元中包含用于执行向量指令的向量发射队列和向量执行单元,且向量执行单元支持固定长度向量和可变长向量部分或者全部的执行,且针对可变长向量通过一次或多次完成可变长向量的执行。在执行过程中,指令获取单元从高速指令缓存获取指令,并发送到指令译码与重命名单元进一步处理;指令译码与重命名单元对指令进行译码和寄存器重命名,并发送到指令定序与分派单元进一步处理;指令定序与分派单元用于顺序分派指令到指令发射与执行单元,并对乱序完成的指令进行定序提交处理;指令发射与执行单元用于缓存待执行指令,根据指令类型的不同,将分支、单周期整数、多周期整数、向量/浮点和访存指令分别缓存到不同的发射队列当中,每个发射队列独立选择对应类型的指令进行发射,周期性选择满足发射条件的指令发射到相关执行单元进行执行;发射队列负责维护指令是否满足发射条件,以及发射后是否需要取消执行等;正常发射执行完成的指令需要通知指令定序与分派单元,以保证最终所有指令能够按序提交。
参见图2,本实施例可配置单元中还用于初始或实时对分支预测选项进行配置,所述分支预测选项包括静态分支预测模式和动态分支预测模式两种模式;所述指令获取单元在向高速指令与数据缓存中获取指令时,若分支预测选项被配置为静态分支预测模式,则所述指令获取单元根据指令中携带的静态预测地址向高速指令与数据缓存中获取更多的待执行的指令;若分支预测选项被配置为动态分支预测模式,则所述指令获取单元根据指令中携带的动态预测地址向高速指令与数据缓存中获取更多的待执行的指令。
参见图2,本实施例可配置单元中还用于初始或实时对取指宽度M进行配置;所述指令获取单元在向高速指令与数据缓存中获取指令时,每次从高速指令与数据缓存中获取M条指令并存入本地缓存。
参见图2,本实施例可配置单元中还用于初始或实时对译码宽度N进行配置;所述指令译码与重命名单元在进行译码时每次从本地预译码微指令缓存中取出N条指令微指令进行译码。
参见图2,本实施例可配置单元中还用于初始或实时对指令分派宽度P进行配置;所述指令定序与分派单元在进行指令分派的时候,每次从本地待分派缓存中获取最多P条指令进行分派。
参见图2,本实施例可配置单元中还用于初始或实时对乱序资源大小进行配置,所述乱序资源大小包括发射队列大小、重定序缓存大小以及寄存器文件大小;所述指令发射与执行单元基于可配置单元配置的发射队列大小存储待发射的指令,所述指令定序与分派单元基于可配置单元配置的重定序缓存大小执行重定序操作。
综上可知,本实施例可配置单元可根据需要进行初始或实时完全上述各个选项(包括向量执行模式和架构参数等)的配置。向量执行模式包括静态分支预测模式和动态分支预测模式两种模式,架构参数包括处理器支持的静态和动态可配置的架构参数,例如是否支持分支静态和动态预测,取指、译码、分派宽度等,乱序资源数目如发射队列大小、重定序缓存大小、寄存器文件大小等;根据处理器支持参数配置属性,可选择静态或者动态配置。初始配置时,可根据运行需求先配置好处理器基本状态,包括向量执行模式和架构参数等,并启动处理器开始执行;如果处理器已处于执行状态,那么向量执行模式和架构参数也可根据需要动态进行修改。由于处理器初始化和处理器运行过程中,都可对处理器相关配置进行修改,以实现灵活的可配置性。现有处理器或多或少支持部分配置,但是灵活性不够。本实施例出的这些配置可以在初始化时和运行时都可进行配置和修改,比现有处理器具有更好的灵活性。
参见图1和图7,本实施例中的指令发射与执行单元包括发射队列和执行单元两个部分,其中发射队列包括分支发射队列、单周期整数发射队列、多周期整数发射队列、向量/浮点发射队列以及访存发射队列,其中执行单元包括分支执行单元、单周期整数执行单元、多周期整数执行单元、向量/浮点执行单元以及访存执行单元,所述向量发射队列是指向量/浮点发射队列,所述向量执行单元是指向量/浮点执行单元,且每种类型的指令独立选择发射与执行。指令发射与执行单元根据操作数类型和执行延迟等不同分为分支、单周期整数、多周期整数、向量/浮点、访存指令发射与执行单元;采取乱序发射乱序执行的方式,遵循“准备好的最老微指令优先发射执行”发射执行原则。
参见图1和图7,本实施例中的寄存器文件包括整数寄存器文件、向量/浮点寄存器文件、标志位寄存器文件、断言寄存器文件以及系统寄存器文件。寄存器文件根据执行操作数类型不同分为整数、向量/浮点、标志寄存器、断言寄存器、系统寄存器文件,指令发射时按需读取寄存器文件,执行完成时按需写相应的寄存器文件。
如图3所示,本实施例还提供一种前述支持可变长向量处理的可配置处理器的实现方法,包括:在应用程序运行过程中实时检测应用程序中是否存在可变长向量处理需求的指令标识,如果检测到存在可变长向量处理需求的指令标识,则通过可配置单元对是否支持可变长向量处理的选项进行配置为支持可变长向量处理,并指定最大支持的向量长度,进入支持可变长向量处理模式,否则通过可配置单元对是否支持可变长向量处理的选项进行配置为不支持可变长向量处理,进入传统的固定长度向量处理模式;在支持可变长向量处理模式下,指令译码与重命名单元中的可变长向量拆分模块针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用,且所述指令译码与重命名单元中的可变长向量拆分模块针对可变长向量处理操作进行拆分具体是指根据可变长向量的长度L和预设的固定向量长度CL之间的关系在译码阶段对可变长向量处理操作按需进行拆分,将可变长向量拆分为一个或多个固定向量长度CL长度的指令;指令发射与执行单元的向量执行单元针对可变长向量通过一次或多次完成可变长向量的执行,使其实现对现有固定长度向量处理的向量执行单元的重用。
其中,可变长向量处理需求的指令标识可通过编程时进行声明、然后在在程序编译时生成,其格式可以根据需要进行指定。应用程序中是否存在可变长向量处理需求即应用程序的运行需求,如果存在该需求,则检测到该需求以后,配置处理器为支持可变长向量处理,并指定最大支持的向量长度,从而可实现不同模式的自动选择执行。
在执行过程中,指令获取单元从高速指令缓存获取指令,并发送到指令译码与重命名单元进一步处理;指令译码与重命名单元对指令进行译码和寄存器重命名,并发送到指令定序与分派单元进一步处理;指令定序与分派单元用于顺序分派指令到指令发射与执行单元,并对乱序完成的指令进行定序提交处理;指令发射与执行单元用于缓存待执行指令,根据指令类型的不同,将分支、单周期整数、多周期整数、向量/浮点和访存指令分别缓存到不同的发射队列当中,每个发射队列独立选择对应类型的指令进行发射,周期性选择满足发射条件的指令发射到相关执行单元进行执行;发射队列负责维护指令是否满足发射条件,以及发射后是否需要取消执行等;正常发射执行完成的指令需要通知指令定序与分派单元,以保证最终所有指令能够按序提交。本实施例中,支持可变长向量处理模式下的指令执行步骤包括:
S1)指令获取:指令获取单元根据配置的取指宽度M,每次从高速指令缓存获取M条指令,并存入本地缓存,例如假设取指宽度M=4,则每次从高速指令缓存获取4条指令并存入本地缓存;如果配置为支持静态预测或动态分支预测,那么指令预取器将从静态或者动态预测地址处获取更多要执行的指令,如图4所示;需要说明的是,指令获取单元获取速度还受限于译码速度,假如译码缓存已满或者接近满,那么指令获取将需要适当减缓或者停止获取,以防止缓存溢出从而造成指令获取错误,其具体可通过指令获取单元实时检测指令译码与重命名单元的译码缓存状态来实现。
S2)指令译码与重命名:如图5所示,指令译码与重命名单元首先根据微指令拆分方式每次对一条或多条指令进行预译码,实现对指令进行拆分为一个或多个微指令,对拆分得到的微指令指定全局的id,并存入本地预译码微指令缓存当中;然后根据配置的指令译码宽度N每次从本地预译码微指令缓存中取N条微指令进行译码,并对微指令中的寄存器操作数进行重命名处理;假定指令译码宽度N为4,则根据配置的指令译码宽度N每次从本地预译码微指令缓存中取4条微指令进行译码,并对微指令中的寄存器操作数进行重命名处理;微指令译码的速度依赖于后端指令分派的速度,如果分派缓存已满或者接近于满,那么微指令译码的速度将要放缓甚至阻塞;为了支持可变长向量处理,在实现固定长度向量处理的基础上,根据目标向量长度L和固定向量长度CL之间的关系,在译码阶段对可变长向量处理操作按需进行拆分,从而实现对现有固定长度向量处理的执行单元的重用;
S3)指令定序与分派:如图6所示,指令定序与分派单元根据配置的指令分派宽度P,每次从本地待分派缓存中获取最多P条指令基于指令的类型分派发送到指令发射与执行单元,对于所有已经分配有唯一id的微指令,都会在重定序缓存中分配一项,用于管理该微指令的生命周期状态;当对应id的微执行在执行部件执行完后,会返回一个已完成状态给指令定序与分派单元,并修改微指令状态为“待提交”;当连续的多个id的微指令全部处于“待提交”状态时,以组为单位直接将多条微指令进行提交;需要说明的是,每次最多将P条微指令发送到指令发射与执行单元,其中要根据指令的类型和对应发射队列空满程度决定是否要阻塞某些类型的微指令的分派;此外分派时还要可根据需要考虑对称执行部件的负载均衡情况;
S4)指令发射与执行:如图7所示,指令发射与执行单元针对分派的指令类型进行不同的处理:来自指令定序与分派单元的分支指令缓存在分支发射队列当中,发射后在分支执行单元进行执行,分支指令的执行结果包括指定下一条要执行的指令的PC地址,分支预测是否失效;来自指令定序与分派单元的单周期指令缓存在单周期发射队列当中,发射后在单周期整数执行单元进行执行,单周期指令的执行结果包括修改目的整数寄存器或者修改标志寄存器;来自指令定序与分派单元的多周期指令缓存在多周期发射队列当中,发射后在多周期执行单元进行执行,多周期指令的执行结果包括修改目的整数寄存器或者修改标志寄存器或者修改目的系统寄存器;来自指令定序与分派单元的向量/浮点指令缓存在向量/浮点发射队列当中,发射后在向量/浮点执行单元进行执行,向量浮点指令的执行结果包括修改目的向量/浮点寄存器或者修改标志寄存器;来自指令定序与分派单元的访存指令缓存在访存发射队列当中,发射后在访存执行单元进行执行,访存指令的执行行为分为从存储器载入数据或者写数据到存储器,执行结果分别为载入数据到目的寄存器和存储数据到存储器。其中,向量/浮点执行单元支持固定长度向量处理操作,也可支持可变长向量处理的一部分或者全部。
此外,本实施例还可进一步根据需要采用断言操作数处理执行机制,复用现有单周期和多周期的整数执行数据通路,从而减少了硬件实现代价。
综上所述,本实施例提供一种支持可变长向量处理的可配置处理器,包括可配置单元,指令获取单元,指令译码与重命名单元,指令定序与分派单元,指令发射与执行单元,寄存器文件、高速指令与数据缓存等。本实施例还提供一种支持可变长向量处理的可配置处理器实现方法,包括根据运行需求先配置好处理器基本状态,包括向量执行模式和架构参数等,并启动处理器开始执行,如果处理器已处于执行状态,那么向量执行模式和架构参数也可根据需求动态进行修改;指令获取单元从指令高速缓存获取指令;指令译码与重命名单元对指令进行译码和寄存器重命名;指令定序与分派单元用于按序分派指令到指令发射与执行单元,并对乱序执行完成的指令进行定序提交;指令发射与执行单元用于缓存待执行指令,并周期性选择满足发射条件的指令发射到相应的执行单元进行执行;寄存器文件用于保存指令执行结果和指令执行需要的源寄存器类型操作数;高速指令和数据缓存则用于缓存来自互连或者外部存储的指令和数据。本发明为支持可变长向量处理设计了一种可配置处理器及其实现方法,能够同时支持固定长度和可变长度的向量处理,进一步提高了处理器的灵活性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种支持可变长向量处理的可配置处理器,包括指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件以及高速指令与数据缓存,所述指令获取单元、指令译码与重命名单元、指令定序与分派单元、指令发射与执行单元、寄存器文件依次相连,所述高速指令与数据缓存分别与指令获取单元、指令发射与执行单元相连,其特征在于,所述支持可变长向量处理的可配置处理器包括用于初始或实时对是否支持可变长向量处理的选项进行配置的可配置单元;所述指令译码与重命名单元中包括可变长向量拆分模块,用于在可配置单元中支持可变长向量处理的选项被配置为支持可变长向量处理的情况下,针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用;所述指令发射与执行单元中包含用于执行向量指令的向量发射队列和向量执行单元,且向量执行单元支持固定长度向量和可变长向量部分或者全部的执行,且针对可变长向量通过一次或多次完成可变长向量的执行。
2.根据权利要求1所述的支持可变长向量处理的可配置处理器,其特征在于,所述可配置单元中还用于初始或实时对分支预测选项进行配置,所述分支预测选项包括静态分支预测模式和动态分支预测模式两种模式;所述指令获取单元在向高速指令与数据缓存中获取指令时,若分支预测选项被配置为静态分支预测模式,则所述指令获取单元根据指令中携带的静态预测地址向高速指令与数据缓存中获取更多的待执行的指令;若分支预测选项被配置为动态分支预测模式,则所述指令获取单元根据指令中携带的动态预测地址向高速指令与数据缓存中获取更多的待执行的指令。
3.根据权利要求2所述的支持可变长向量处理的可配置处理器,其特征在于,所述可配置单元中还用于初始或实时对取指宽度M进行配置;所述指令获取单元在向高速指令与数据缓存中获取指令时,每次从高速指令与数据缓存中获取M条指令并存入本地缓存。
4.根据权利要求3所述的支持可变长向量处理的可配置处理器,其特征在于,所述可配置单元中还用于初始或实时对译码宽度N进行配置;所述指令译码与重命名单元在进行译码时每次从本地预译码微指令缓存中取出N条指令微指令进行译码。
5.根据权利要求4所述的支持可变长向量处理的可配置处理器,其特征在于,所述可配置单元中还用于初始或实时对指令分派宽度P进行配置;所述指令定序与分派单元在进行指令分派的时候,每次从本地待分派缓存中获取最多P条指令进行分派。
6.根据权利要求5所述的支持可变长向量处理的可配置处理器,其特征在于,所述可配置单元中还用于初始或实时对乱序资源大小进行配置,所述乱序资源大小包括发射队列大小、重定序缓存大小以及寄存器文件大小;所述指令发射与执行单元基于可配置单元配置的发射队列大小存储待发射的指令,所述指令定序与分派单元基于可配置单元配置的重定序缓存大小执行重定序操作。
7.根据权利要求6所述的支持可变长向量处理的可配置处理器,其特征在于,所述指令发射与执行单元包括发射队列和执行单元两个部分,其中发射队列包括分支发射队列、单周期整数发射队列、多周期整数发射队列、向量/浮点发射队列以及访存发射队列,其中执行单元包括分支执行单元、单周期整数执行单元、多周期整数执行单元、向量/浮点执行单元以及访存执行单元,所述向量发射队列是指向量/浮点发射队列,所述向量执行单元是指向量/浮点执行单元,且每种类型的指令独立选择发射与执行。
8.根据权利要求7所述的支持可变长向量处理的可配置处理器,其特征在于,所述寄存器文件包括整数寄存器文件、向量/浮点寄存器文件、标志位寄存器文件、断言寄存器文件以及系统寄存器文件。
9.一种权利要求1~8中任意一项所述的支持可变长向量处理的可配置处理器的实现方法,其特征在于,包括:在应用程序运行过程中实时检测应用程序中是否存在可变长向量处理需求的指令标识,如果检测到存在可变长向量处理需求的指令标识,则通过可配置单元对是否支持可变长向量处理的选项进行配置为支持可变长向量处理,并指定最大支持的向量长度,进入支持可变长向量处理模式,否则通过可配置单元对是否支持可变长向量处理的选项进行配置为不支持可变长向量处理,进入传统的固定长度向量处理模式;在支持可变长向量处理模式下,指令译码与重命名单元中的可变长向量拆分模块针对可变长向量处理操作进行拆分,使其实现对现有固定长度向量处理的执行单元的重用,且所述指令译码与重命名单元中的可变长向量拆分模块针对可变长向量处理操作进行拆分具体是指根据可变长向量的长度L和预设的固定向量长度CL之间的关系在译码阶段对可变长向量处理操作按需进行拆分,将可变长向量拆分为一个或多个固定向量长度CL长度的指令;指令发射与执行单元的向量执行单元针对可变长向量通过一次或多次完成可变长向量的执行,使其实现对现有固定长度向量处理的向量执行单元的重用。
10.根据权利要求9所述的支持可变长向量处理的可配置处理器的实现方法,其特征在于,所述支持可变长向量处理模式下的指令执行步骤包括:
S1)指令获取:指令获取单元根据配置的取指宽度M,每次从高速指令缓存获取M条指令,并存入本地缓存;如果配置为支持静态预测或动态分支预测,那么指令预取器将从静态或者动态预测地址处获取更多要执行的指令;
S2)指令译码与重命名:指令译码与重命名单元首先根据微指令拆分方式每次对一条或多条指令进行预译码,实现对指令进行拆分为一个或多个微指令,对拆分得到的微指令指定全局的id,并存入本地预译码微指令缓存当中;然后根据配置的指令译码宽度N每次从本地预译码微指令缓存中取N条微指令进行译码,并对微指令中的寄存器操作数进行重命名处理;
S3)指令定序与分派:指令定序与分派单元根据配置的指令分派宽度P,每次从本地待分派缓存中获取最多P条指令基于指令的类型分派发送到指令发射与执行单元,对于所有已经分配有唯一id的微指令,都会在重定序缓存中分配一项,用于管理该微指令的生命周期状态;当对应id的微执行在执行部件执行完后,会返回一个已完成状态给指令定序与分派单元,并修改微指令状态为“待提交”;当连续的多个id的微指令全部处于“待提交”状态时,以组为单位直接将多条微指令进行提交;
S4)指令发射与执行:指令发射与执行单元针对分派的指令类型进行不同的处理:来自指令定序与分派单元的分支指令缓存在分支发射队列当中,发射后在分支执行单元进行执行,分支指令的执行结果包括指定下一条要执行的指令的PC地址,分支预测是否失效;来自指令定序与分派单元的单周期指令缓存在单周期发射队列当中,发射后在单周期整数执行单元进行执行,单周期指令的执行结果包括修改目的整数寄存器或者修改标志寄存器;来自指令定序与分派单元的多周期指令缓存在多周期发射队列当中,发射后在多周期执行单元进行执行,多周期指令的执行结果包括修改目的整数寄存器或者修改标志寄存器或者修改目的系统寄存器;来自指令定序与分派单元的向量/浮点指令缓存在向量/浮点发射队列当中,发射后在向量/浮点执行单元进行执行,向量浮点指令的执行结果包括修改目的向量/浮点寄存器或者修改标志寄存器;来自指令定序与分派单元的访存指令缓存在访存发射队列当中,发射后在访存执行单元进行执行,访存指令的执行行为分为从存储器载入数据或者写数据到存储器,执行结果分别为载入数据到目的寄存器和存储数据到存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110871503.6A CN113590197B (zh) | 2021-07-30 | 2021-07-30 | 一种支持可变长向量处理的可配置处理器及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110871503.6A CN113590197B (zh) | 2021-07-30 | 2021-07-30 | 一种支持可变长向量处理的可配置处理器及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590197A CN113590197A (zh) | 2021-11-02 |
CN113590197B true CN113590197B (zh) | 2023-09-26 |
Family
ID=78252650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110871503.6A Active CN113590197B (zh) | 2021-07-30 | 2021-07-30 | 一种支持可变长向量处理的可配置处理器及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590197B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356416B (zh) * | 2021-12-31 | 2023-04-07 | 海光信息技术股份有限公司 | 处理器及其控制方法、装置、电子设备和存储介质 |
CN114780148B (zh) * | 2022-06-17 | 2022-09-23 | 飞腾信息技术有限公司 | 一种系统寄存器访问指令的执行方法、装置及电子设备 |
CN116820910A (zh) * | 2023-08-28 | 2023-09-29 | 英特尔(中国)研究中心有限公司 | 处理装置、用于处理装置的验证装置和验证方法 |
CN117093268B (zh) * | 2023-10-19 | 2024-01-30 | 超睿科技(长沙)有限公司 | 一种向量处理方法、系统、设备及存储介质 |
CN117931294B (zh) * | 2024-03-22 | 2024-07-16 | 芯来智融半导体科技(上海)有限公司 | 指令处理设备和处理系统 |
CN117931293B (zh) * | 2024-03-22 | 2024-06-28 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10105400A (ja) * | 1996-08-30 | 1998-04-24 | Internatl Business Mach Corp <Ibm> | 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法 |
CN103907089A (zh) * | 2011-04-07 | 2014-07-02 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件加载指令 |
CN107408037A (zh) * | 2015-02-02 | 2017-11-28 | 优创半导体科技有限公司 | 配置成对可变长度向量进行操作的单片向量处理器 |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
CN110908716A (zh) * | 2019-11-14 | 2020-03-24 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898291B2 (en) * | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
-
2021
- 2021-07-30 CN CN202110871503.6A patent/CN113590197B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10105400A (ja) * | 1996-08-30 | 1998-04-24 | Internatl Business Mach Corp <Ibm> | 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法 |
CN103907089A (zh) * | 2011-04-07 | 2014-07-02 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件加载指令 |
CN107408037A (zh) * | 2015-02-02 | 2017-11-28 | 优创半导体科技有限公司 | 配置成对可变长度向量进行操作的单片向量处理器 |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
CN110908716A (zh) * | 2019-11-14 | 2020-03-24 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
Non-Patent Citations (1)
Title |
---|
基于软硬件协同设计的解释器指令分派方法;傅杰;靳国杰;章隆兵;王剑;高技术通讯;第26卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113590197A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113590197B (zh) | 一种支持可变长向量处理的可配置处理器及其实现方法 | |
KR100783828B1 (ko) | 단일 스레드 프로그램의 암시적 멀티스레디드 실행을 행할수 있는 멀티스레디드 프로세서 | |
US9558000B2 (en) | Multithreading using an ordered list of hardware contexts | |
US8386754B2 (en) | Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US6393555B1 (en) | Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit | |
US8938605B2 (en) | Instruction cracking based on machine state | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
US20050125632A1 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US20060174089A1 (en) | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture | |
EP1131698B1 (en) | Improved instruction decoding using a parallel decode algorithm | |
JP5543366B2 (ja) | ロックされたオペレーションを実行するためのシステムおよび方法 | |
JP2006313422A (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
KR100483463B1 (ko) | 사전-스케쥴링 명령어 캐시를 구성하기 위한 방법 및 장치 | |
JP5335440B2 (ja) | オペランドの早期の条件付き選択 | |
CN112540792A (zh) | 指令处理方法及装置 | |
CN117270971B (zh) | 加载队列控制方法、装置及处理器 | |
JP2009524167A5 (zh) | ||
JP3345787B2 (ja) | データ処理装置 | |
US7908463B2 (en) | Immediate and displacement extraction and decode mechanism | |
US5854912A (en) | Flexible resource access in a microprocessor | |
US7107433B1 (en) | Mechanism for resource allocation in a digital signal processor based on instruction type information and functional priority and method of operation thereof | |
US11379241B2 (en) | Handling oversize store to load forwarding in a processor | |
CN115080121A (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 |