CN114579188A - 一种risc-v向量访存处理系统及处理方法 - Google Patents
一种risc-v向量访存处理系统及处理方法 Download PDFInfo
- Publication number
- CN114579188A CN114579188A CN202210261402.1A CN202210261402A CN114579188A CN 114579188 A CN114579188 A CN 114579188A CN 202210261402 A CN202210261402 A CN 202210261402A CN 114579188 A CN114579188 A CN 114579188A
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- scalar
- access
- unit
- 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
Links
- 239000013598 vector Substances 0.000 title claims abstract description 531
- 238000012545 processing Methods 0.000 title claims abstract description 31
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000012544 monitoring process Methods 0.000 claims description 80
- 230000006870 function Effects 0.000 claims description 23
- 238000000034 method Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 5
- 230000010354 integration Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 210000003934 vacuole Anatomy 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
一种RISC‑V向量访存处理系统及处理方法,处理系统包括可相互传输数据的标量‑向量派遣单元,标量‑向量指令滞外监控单元和标量‑向量访存单元,以及与标量‑向量派遣单元连接的译码单元和系统状态寄存器,所述译码单元还连接有指令存储器、向量寄存器和标量寄存器;标量‑向量访存单元连接有数据总线和向量写回仲裁单元,所述向量写回仲裁单元还与向量寄存器和标量寄存器连接。本发明在现有标量处理系统的基础上仅增加少量硬件功能单元,提升标量处理器对向量数据的访存能力,减少该处理器无效的派遣‑注销时间,大大提升了标量处理器对向量数据的处理效率。
Description
技术领域
本发明属于处理器硬件技术领域,具体涉及一种RISC-V向量访存处理系统及处理方法。
背景技术
在人工智能与大数据迅速发展的今天,嵌入式芯片内部的标量处理器通常需要对图像、音频等数字信号进行实时、自适应的处理。对大数据并行处理的效率直接决定了芯片的整体性能,此类任务通常趋向于计算密集型,而传统的通用标量处理器性能很难满足实时的向量计算需求。
目前具备商用的向量处理器起步较晚,为了提升处理器的性能,其数据总线宽度和数据接口协议均选用最前沿的标准,使得该类向量处理器在嵌入式系统集成和使用时存在接口不匹配、数据总线宽度不匹配等问题。此外,该类向量处理器通常需要配套深度定制的编译器才能发挥它的优异性能,使得该类处理器的使用成本较高,往往不适于消费类芯片的产品集成。
部分嵌入式处理器厂商在现有的标量处理器架构上进行了向量指令集扩展(例如INTEL公司的MMX、SSE架构,ARM公司SVE架构),虽然具备了一定的向量数据的处理能力,由于最初设计时需要考虑旧指令集的兼容问题,使得新开发的处理器架构越来越复杂,功能越来越冗余,受限于自身成本与集成适配难度,对向量数据的处理有限,难以满足较复杂的数据运算场景。另一类厂商则在标量处理器内部预留扩展接口,通过扩展向量加速单元实现对向量数据的处理。由于该类扩展接口由各个处理器厂商自行定义,而非统一的工业标准接口,所以不适合大规模推广应用。此外,这类处理器由于扩展接口的限制,并不能执行向量指令。
RISC-V是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。RISC-V向量指令集(RVV)架构相较其余向量指令集(如ARM公司SVE架构)的架构定义相比,RVV的不同功能向量指令设计更为独立,对任意向量长度处理更为简洁,编码及功能定义方式与RISC-V标量指令集实现方式也高度契合。由此,受益于RISC-V向量指令集设计的精简,RISC-V处理器扩展向量通路所需的访存逻辑可以实现的更加简单且高效,但目前在标量处理器中扩展对于RISC-V向量访存指令的支持没有通用的实现方案。
发明内容
为克服现有技术存在的技术缺陷,本发明公开了一种RISC-V向量访存指令处理方法及处理系统。
本发明公开了一种RISC-V向量访存处理系统,包括可相互传输数据的标量-向量派遣单元,标量-向量指令滞外监控单元和标量-向量访存单元,以及与标量-向量派遣单元连接的译码单元和系统状态寄存器,所述译码单元还连接有指令存储器、向量寄存器和标量寄存器;标量-向量访存单元连接有数据总线和向量写回仲裁单元,所述向量写回仲裁单元还与向量寄存器和标量寄存器连接;
所述标量-向量派遣单元具体功能为在无冲突的最早时间点将指令发给其他模块;
所述标量-向量指令滞外监控单元的具体功能包括向量冒险控制、将指令派遣进FIFO、向量访存FIFO写使能控制及向量访存FIFO读使能控制;
所述标量-向量访存单元的具体功能包括访存位置判断、访存请求生成及向量寄存器写回请求控制;
所述向量写回仲裁单元的功能为将从标量-向量访存单元发送来的数据发送给到向量寄存器中。
具体的,标量-向量派遣单元、标量-向量指令滞外监控单元、标量-向量访存单元、向量写回仲裁单元模块均为单独定制芯片。
本发明还公开了一种RISC-V向量访存处理方法,包括如下步骤:
S1.取得向量访存指令,向量访存指令从外部的指令存储器取得,发送给译码单元;
S2.由译码单元对向量访存指令进行译码,译码得到后续指令执行过程中所需完整指令控制信息,所述完整指令控制信息包括向量访存类型信息、向量寄存器索引、向量访存基址,发送给标量-向量派遣单元,同时从向量寄存器中获取向量存储指令执行所需的写回源数据;
S3.如果存在冒险,暂停向量算术指令的派遣,直到冒险相关向量访存指令退休;
当上述冒险不存在时,标量-向量派遣单元将译码单元发送的完整指令控制信息,以及步骤S2中的写回源数据交给标量-向量访存单元;
同时将完整指令控制信息中控制访存进行所需要的指令控制信息发送给标量-向量指令滞外监控单元,打开访存单元中的向量开关,进行步骤S4;所述指令控制信息包括向量访存类型信息、向量寄存器索引、向量访存基址,及从系统状态寄存器中获取的向量数据类型;
S4.标量-向量指令滞外监控单元接收到标量-向量派遣单元派遣而来的指令控制信息后:
不间断发送待退休指令相关控制信息,包括向量数据类型、向量访存类型信息、向量寄存器索引、向量访存基址;
标量-向量指令滞外监控单元向标量-向量访存单元指示待退休访存指令的向量数据类型、向量访存类型及向量访存基址用于进行访存信息的生成;
本步骤中,标量-向量访存单元接收到具体访存指令后,进行如下访存状态判断:
若具体访存指令是向量加载操作,则根据步骤S3中标量-向量指令滞外监控单元发送的向量访存基址与访存偏移查找表中的访存信号,计算完整的访存地址;标量-向量访存单元生成包括访存地址信息的单次访存命令给访存数据总线,
若具体访存指令是向量存储操作,则向数据总线发送与向量加载操作相同命令的同时发送步骤S2中得到的写回源数据;
判断表示当前访存位置的访存计数,若访存计数与步骤S3中标量-向量指令滞外监控单元发送的向量数据类型指示的访存次数相同,称为向量访存请求完成,进入步骤S5;否则进入步骤S6;
S5. 标量-向量指令滞外监控单元接受S4步骤中标量-向量访存单元的访存状态判断的指示,在向量访存请求完成时释放访存写回标识,告知标量-向量派遣单元可以将后续访存指令派遣进标量-向量指令滞外监控单元,并进入步骤S7;
S6.告知标量-向量派遣单元暂停访存指令的派遣,计算下一条访存所需的地址与访存命令请求,等待写回数据,并进入步骤S7;
S7.标量-向量访存单元中进行写回操作后,写回完成进入步骤S8;否则返回步骤S4;
S8.更新写回对比标识用于下条指令的正常写回指示。
优选的,所述步骤S3中的冒险状态包括:
当前向量寄存器索引信息对应的目的寄存器索引保留在滞外监控单元中;或当前访存接口正被向量指令占用时;或标量-向量指令滞外监控单元状态为满需要等待写回时;或标量-向量派遣单元判定已发出的指令尚未完成完整写回。
优选的,所述步骤S7中的写回操作具体为:
标量-向量访存单元中的寄存器索引加法器将写回有效计数器与步骤S3中标量-向量指令滞外监控单元发送的目的寄存器索引相加得到具体的向量寄存器索引;并生成写回请求控制:
若指令为向量加载指令,将此时的向量开关状态、数据总线返回数据、向量寄存器索引和数据总线返回的写回数据同时发送给写回仲裁单元;
写回仲裁单元读取写回对比标识与向量开关状态,将从访存单元发送来的数据发送给具体向量寄存器索引编号对应的向量寄存器中;
若指令不为向量加载指令,而为向量存储指令,表明此时的数据总线已完成对写回源数据的存储。
访存单元在下个周期将写回有效计数器计数加1,若写回有效计数返回值与向量数据类型中的向量数据类型指示的访存次数相同,称为向量访存写回完成,进入步骤S8,否则回到步骤S4;
采用本发明所述的向量访存指令处理方法,具备如下优越性:
本发明在现有标量处理系统的基础上仅增加少量硬件功能单元,提升标量处理器对向量数据的访存能力,减少该处理器无效的派遣-注销时间,大大提升了标量处理器对向量数据的处理效率。
本发明保留处理器原有的标量处理方式的同时,减少了多条标量指令的处理带来的指令存储器访问请求,大大降低了译码环节以及相关性检测环节带来的时间与功耗损失。
本发明保留了处理器原有的对外硬件接口和数据总线,更有利于系统集成和使用。
附图说明
图1为现有技术中典型的嵌入式标量处理器监控执行多周期标量访存指令的系统架构图;
图2为相同数据量访存时标量访存方案与本发明所述向量访存方案的流程对比图;
图3为本发明所述的RISC-V向量访存指令处理系统模块接口的一个具体实施方式示意图;
图4为本发明所述标量-向量派遣单元与标量-向量指令滞外监控单元的一个具体指令传输关系示意图;
图5为本发明所述的标量-向量访存单元与标量-向量派遣单元与标量-向量指令滞外监控单元组成的写回控制内部图;
图6为现有技术中标量多周期指令控制流程图;
图7为本发明中向量多周期指令控制的一个具体实施方式流程图;
图8为未优化的向量写回失败示意图;
图9为本发明所述向量访存FIFO读使能控制中待退休指令写回对比标识与访存标识示意图;
图10为本发明所述向量访存方法中的访存请求计数与写回有效计数在连续时钟周期下的返回值与相关控制示意图;
图11为本发明所述向量访存方法中的访存请求计数与写回有效计数在非单周期写回时的各周期返回值与相关控制示意图;
图12为向量访存实现最大数据通路利用率示意图;
图13为本发明中向量访存后接标量访存处理的一个具体实施方式流程图;
图14为现有技术中向量访存流程示意图;
图2、图8至图14中,T1、T2…T8表示连续的多个时钟周期。
具体实施方式
下面对本发明的具体实施方式作进一步的详细说明。
现有技术中,一个典型的嵌入式RISC-V标量处理器监控执行多周期访存指令的数据通路如图1所示,由于标量滞外指令监控单元的实现方式与写回相关联,被派遣进标量滞外指令监控单元的指令会在数据写回操作完成的同时注销,而标量滞外指令监控单元遵守每条标量访存指令只能写回一个数据。由于嵌入式标量处理器的内部硬件结构决定了运算数据的通路,当进行重复运算的向量数据时标量处理器内部因派遣-注销所产生的无效等待时间使得该处理器的计算效率大幅降低。如图2所示,在相同数据量的标量访存与向量访存实现时,向量访存减少了多条标量指令的处理带来的指令存储器访问请求,大大降低了译码环节以及相关性检测环节带来的时间与功耗损失。
本发明对上述标量处理器进行改进,使其能同时进行标量和向量访存处理,改进后的系统使得原有的标量处理器具备向量指令派遣、监控和向量数据访存、写回的完整数据硬件通路,在现有的数据总线和带宽的前提下,实现对任意标量和向量数据的访存支持,大大降低了因无效的等待周期所带来的运算效率影响,同时提高了处理器对数据的并行处理性能。
为了在标量处理器中获得向量访存执行功能,图3所示给出了本发明所述向量访存处理系统的一个具体实施方式,基于图1进行硬件改动,分别对标量派遣单元、标量滞外指令监控单元和标量访存单元地址生成单元进行改动,实现RISC-V向量处理系统,通过对向量访存指令的外部监控,能够实现在不更改标量处理器数据访存接口且不影响标量处理能力的前提下,扩展标量处理器对RISC-V向量访存指令的支持。
图3所示向量访存处理系统的具体实施方式中,包括可相互传输数据的标量-向量派遣单元(以下简称派遣单元),标量-向量指令滞外监控单元(以下简称滞外监控单元)和标量-向量访存单元(以下简称访存单元),以及与标量-向量派遣单元连接的译码单元和系统状态寄存器,所述译码单元还连接有指令存储器、向量寄存器和标量寄存器;标量-向量访存单元连接有数据总线和向量写回仲裁单元,所述向量写回仲裁单元还与向量寄存器和标量寄存器连接。
所述标量-向量派遣单元,标量-向量指令滞外监控单元,标量-向量访存单元,向量写回仲裁单元等模块均为单独定制芯片内核,内部功能由集成电路工艺加工形成的晶体管级别电路实现,可以单独封装,也可以多个芯片内核联合封装。
其中派遣单元、指令滞外监控单元的一个典型应用场景如图4所示;访存单元的一个具体实施方式如图5所示。
标量与向量多周期访存指令控制流程图如图6及图7所示,向量访存控制对比标量访存实现区别在于读写指针的控制与空满请求相关判断的时间。图4与图5展示了实现相同功能所需的各功能单元与连接关系。
各个模块的具体功能为:
1、派遣单元在无冲突的最早时间点将指令发给后续模块,功能包括:
(1)判断是否存在冒险,例如以下场景:如果向量寄存器索引信息对应的目的寄存器索引保留在标量-向量指令滞外监控单元中,或访存接口正被向量指令占用时,或标量-向量指令滞外监控单元状态为满需要等待写回时;
上述场景下,派遣单元判定已发出的指令尚未完成完整写回,表明存在冒险,暂停向量算术指令的派遣,直到冒险相关向量访存指令退休;若不存在冒险,在向量访存及向量多周期指令的第一个周期派遣。如图1下半部分的向量派遣流程所示,之后指令交由滞外监控单元控制。
(2)派遣的同时发送从译码单元收到的向量目的寄存器索引、向量访存类型信息、向量访存基址及从向量状态与控制寄存器中收到的向量数据类型给滞外监控单元。同时接收译码单元从向量寄存器中取回的具体向量操作数,及指令控制信息给到访存单元。
指令控制信息包括写回标识,与索引访存相关的索引向量,及步长访存所需要的单位步长。
(3)派遣单元接收访存单元中的访存位置判断,在向量访存请求完成将滞外监控单元的先入先出缓存(FIFO)写指针拉高,改变写回标识从而允许后续访存指令派遣进入滞外监控单元。
2、滞外监控单元的具体功能包括:
(1)向量冒险控制:接收派遣单元派遣而来的指令,判断是否存在访存冒险与数据冒险,若当前FIFO中待退休指令中的目的寄存器索引与当前派遣单元发送而来的源寄存器索引相同,若则判断存在读后写数据冒险,若当前FIFO中待退休指令中的目的寄存器索引与当前派遣单元发送而来的目的寄存器索引相同,则判断存在写后写数据冒险,若当待带退休指令访存请求还未完成,则判断存在访存冒险,冒险时暂停流水线判断出冒险控制返回给标量-向量派遣单元以暂停取值流水线等待前序指令完成。
(2)将指令派遣进FIFO:
滞外监控单元内部包含一个多周期指令监控信息FIFO,在第一个周期访存开始时发出指令派遣使能信号,分配FIFO存储空间位置。
FIFO存储空间用于保留向量访存指令依赖的向量数据类型、向量访存类型信息、向量寄存器索引、向量访存基址、全局向量访存控制。
不能在最后一次访存时才发出派遣有效信号,因为这会导致标量-向量指令滞外监控单元里没有向量访存的相关信息,不能控制写回。由于先入先出的FIFO逻辑,在向量指令派遣之后的向量访存过程中时FIFO的空满状态不会改变,故可保证其余指令正常退出流水。
(3)向量访存FIFO写使能控制:
指令写回时为了与派遣时的各指示匹配,指令派遣进FIFO时会被分配一个写回对比标识,向量访存过程中同样在第一次访存命令发出时将该写回对比标识保存在指令控制信息中,称为访存标识,在产生对数据总线的访存请求时,会将当前指令控制信息中的访存标识作为写回对比的判断条件同时发送给数据总线,写回时返回访存标识,防止更高优先级的其余模块通过总线访存返回的数据被处理器访存单元写回,写回时将派遣时的写回对比标识与即将退休的写回对比标识做对比,以实现多周期指令的正常写回。
向量访存在第一次访存命令发出时派遣进滞外监控单元被分配写回对比标识,但如图8所示,若第一次访存派遣时将FIFO的写指针移动,又因为读指针控制只在最后一次访存完成时改变,则在访存过程中请求标识与写回标识不匹配导致写回可能无效,则需要在第一个周期拉高的同时保证在向量指令访存的过程中不改变写指针的位置,进而避免触发空满判断,在第一个周期派遣单元发出向量指令派遣使能信号,在向量访存请求完成时将FIFO发出写使能控制信号。
图9展示了图5所示流程中若向量指令被分配的指令标识为0,标量指令被分配的指令标识为1时的待退休指令写回对比标识与访存标识示意图。
(4)向量访存FIFO读使能控制:
如图9所示在向量写回完成时发出退休使能信号,保证向量访存写回完成前的访存写回对比标识不会改变。同时该退休使能信号也表示向量指令中所有的访存全部完成,指令从滞外监控单元中退出。
(5)在了解何时该改变对标量-向量指令滞外监控单元的控制后需确保在不影响其他功能的情况下仅在向量指令访存的过程中保证空满信号使能关闭。有几个要注意的情况:
①使能作用的周期与访存的地址相关,不同地址区间的访存所需的具体周期数不同,不能仅拉高一个周期或者在各使能到达后仅作用一个周期
②在向量指令派遣给标量-向量指令滞外监控单元后会交由外部处理,不暂停流水线时若向量访存指令后紧跟标量指令,会导致FIFO写使能控制、向量指令派遣依赖的向量访存指示信号为低,导致无法正常使能,则需要在标量-向量访存单元中添加向量指令的向量开关。
向量开关避免在向量访存指令后若紧跟标量指令导致向量访存的依赖的向量访存指示信号为低,而无法正常指示写回使能。如图9中最后一次访存写回0所示,此时访存单元中为一条标量访存,但是此时需要写回到向量寄存器中。
3、访存单元用于生成向量访存相关总线请求,功能包括:
(1)进行向量访存位置判断、向量访存状态判断;
通过访存请求计数来指示当前的单个访存位于整个向量访存的位置,实现访存位置判断:
每次与总线的访存请求握手请求有效后使能访存请求计数增加1;由于是寄存器实现,初始化为0,表示当前已请求1次访存。通过向量数据类型中的寄存器组分配方案指定向量寄存器组中的寄存器个数,若向量寄存器组中的寄存器个数被指定为1/2/4/8,当计数器读数为分别为0/1/3/7时,指示已经发出全部的传输请求,将此时状态判断为向量访存请求完成。在下个时钟周期将访存请求计数清0。
通过写回有效计数来指示表示当前已完成的向量访存次数,由数据总线写回握手有效使能控制。通过数据总线访存写回握手后使能写回计数器,在下个周期将计数器值加1,将写回有效计数返回值与向量数据类型中的寄存器组分配方案指定向量寄存器组中的寄存器个数作比较,若向量寄存器组中的寄存器个数被指定为1/2/4/8,当计数器读数为分别为0/1/3/7时,指示已经完成全部的向量访存传输,将此时状态判断为向量访存写回完成,在下个周期将使能写回有效计数器清零。
同时读取访存位置判断与写回位置判断向外部同步向量访存状态,访存请求计数为0时允许向量指令派遣,同时控制向量开关状态。即在访存请求计数从0变为1的同时打开向量开关,在写回有效计数器清零的同时关闭向量开关。在向量访存请求完成时指示标量-向量派遣单元,进行FIFO写使能控制,运行向量指令退休的时间点在向量访存写回完成时,发送指令退休使能指令从标量-向量指令滞外监控单元退休。
(2)访存请求生成:
向量加载指令需要从数据存储器中的不同位置将各个数据依次取回,在向量寄存器中组合成为向量。向量存储指令则需要从向量寄存器中取出向量,依次存回数据存储器中的不同位置。由于访存的不确定性,向量访存地址加法器将单次访存的偏移量与滞外监控单元返回的向量访存基址与单次访存的偏移量相加,计算完整的访存地址,访存偏移查找表用来自标量-向量指令滞外监控单元的向量访存类型与向量数据类型作为输入,初始偏移为0,访存请求握手后访存请求计数器计数增加的同时使能访存偏移寄存器递增,在单周期内可以传输完成,即可在每次访存命令发出前完成偏移的计算,若为向量存指令,则同时将寄存器索引加法器中计算得到具体的向量寄存器索引对应的标量-向量派遣单元发送而来的写回源数据发送给数据总线,以32位向量寄存器为例,匹配总线位宽,部分返回值如下:
对齐的单位步长访存偏移为4;
对齐的跨步访存偏移为标量-向量派遣单元发送的标量步长;
对齐的索引访存偏移为向量数据类型对应偏移与标量-向量派遣单元发送的索引的乘积。
若非对齐单位步长访存则根据基址向下对齐后将对应低位元素发送给写回单元,下次访存则取回高位次数据。
访存偏移查找表与不同的嵌入式访存带宽与总线协议实现相关,访存偏移寄存器通过接收访存位置判断的返回值,计算向量访存中单次访存的偏移量。向量访存地址加法器将单次访存的偏移量与标量-向量指令滞外监控单元返回的向量访存基址与单次访存的偏移量相加,计算完整的访存地址,实现对任意向量访存类型、向量数据类型的访存支持。
(3)向量寄存器写回请求控制:
根据写回计数器返回值,读取滞外监控单元返回的目的寄存器索引,生成具体向量寄存器索引。
在向量写回时,每次需要写回数据的具体向量寄存器位置与当前访存阶段相关。向量寄存器索引计算方法为当前写回计数器返回值加上向量目的寄存器索引。
在接受到数据总线写回请求握手时将数据和具体向量寄存器索引及向量开关状态一并发送给写回仲裁单元。
4、向量写回仲裁单元的作用是读取向量写回标识及向量开关状态表明数据写回的位置是向量寄存器,将从标量-向量访存单元发送来的数据发送给具体向量寄存器索引编号对应的向量寄存器中。具体功能包括:
(1)向量访存过程中接收到具体地址上的数据后发送给向量寄存器,保证写回一致性的同时防止向量数据的读写修改标量内容,并使能向量写回操作将从访存单元发送来的数据发送给具体向量寄存器索引编号对应的向量寄存器中。
(2)由于单周期只能完成一次访存写回,读取写回标识确保接收到的数据不会被其余派遣进向量滞外监控单元的多周期指令写回。
(3)向量开关状态表明数据写回的位置是否为向量寄存器,写回数据、使能信号及寄存器索引偏移由访存单元提供,避免向量数据覆盖标量寄存器,由于单周期最多收到一次总线返回的访存数据,不会出现标量访存与向量访存数据同时到达的情形,且向量写回仅占用访存通路及向量寄存器写回接口,与标量算术指令的写回之间无逻辑冲突,故允许向量访存数据及标量算术结果的同时写回。
基于上述向量访存处理系统,本发明所述的向量访存处理方法,如图2下半部分所示,包括如下步骤:
在T1周期进行步骤S1;
S1.取得向量访存指令,向量访存指令从外部的指令存储器取得,发送给译码单元。
T2周期进行步骤S2向量译码;
S2.由译码单元对向量访存指令进行译码,译码得到后续指令执行过程中所需的向量访存类型信息、向量寄存器索引、向量访存基址,发送给标量-向量派遣单元,同时从向量寄存器中获取向量存储指令执行所需的写回源数据。
写回源数据的获取量与系统状态寄存器中获取的向量数据类型有关,向量数据类型中的寄存器组分配方案指定向量寄存器组中的寄存器个数,若向量寄存器组中的寄存器个数被指定为1/2/4/8,则此时获取从向量寄存器索引开始的1/2/4/8个写回源数据;
T3周期进行下列判断操作
S3.如果存在冒险,即当前向量寄存器索引信息对应的目的寄存器索引保留在滞外监控单元中(即数据冒险判断有效),或访存接口正被向量指令占用(即访存冒险判断有效)时,或标量-向量指令滞外监控单元状态为满需要等待写回(空满状态判断为满)时,标量-向量派遣单元判定已发出的指令尚未完成完整写回时,表明存在冒险,暂停向量算术指令的派遣,直到与冒险相关向量访存指令退休;
当冒险不存在时,派遣单元将译码单元发送的完整指令控制信息,以及步骤S1中的写回源数据交给访存单元;
同时将完整指令控制信息中控制访存进行所需要的向量访存类型信息、向量寄存器索引、向量访存基址,及从系统状态寄存器中获取的向量数据类型发送给标量-向量指令滞外监控单元,在第一个周期访存开始时拉高标量-向量指令滞外监控单元中的FIFO写使能信号,分配FIFO存储空间位置。
指令滞外监控单元中每个FIFO存储空间用于保留向量访存指令依赖的向量数据类型、向量访存类型信息、向量寄存器索引、向量访存基址、全局向量访存控制,分配一个写回标识保证一条向量访存指令的不同访存周期写回标识保持一致,同时打开访存单元中的向量开关,进行步骤S4;
向量开关用于向向量写回仲裁单元指示数据写回到向量寄存器或标量寄存器中,保证写回一致性的同时防止向量数据的读写修改标量寄存器内容。
S4.滞外监控单元接收到派遣单元派遣而来的指令控制信息后:
不间断发送待退休指令相关控制信息包括向量数据类型、向量访存类型信息、向量寄存器索引、向量访存基址、全局向量访存控制用以监控多周期指令的完整执行过程。
滞外监控单元接收派遣单元指示的向量寄存器索引,与待退休指令目的寄存器索引对比进行向量访存冒险与向量算术指令冒险判断,向标量-向量派遣单元指示冒险是否存在。
滞外监控单元向访存单元指示待退休访存指令的向量数据类型、向量访存类型及向量访存基址用于进行访存信息的生成。
标量-向量指令滞外监控单元向标量-向量访存单元指示目的寄存器索引、写回对比标识用于写回控制,向量访存流程中用于写回对比的指令控制信息与标量-向量指令滞外监控单元发送的写回标识相互确认匹配以确保从数据总线接收到的数据不会被其余派遣进标量-向量指令滞外监控单元的多周期指令写回。
标量-向量指令滞外监控单元实现了向量多周期指令的相关控制信息的寄存监控,实现时则无需将指令相关控制信息随指令进入流水,减少流水线相关寄存器的宽度,也无需担心在向量类型设置指令更新系统状态寄存器后前序指令的功能冲突。
本步骤中,访存单元接收到具体访存指令后,进行如下判断:
若具体访存指令是向量加载操作,则根据步骤S3中标量-向量指令滞外监控单元发送的向量访存基址与访存偏移查找表中的访存信号,计算完整的访存地址;
若具体访存指令是向量存储操作,则向数据总线发送向量加载操作相同请求的同时发送步骤S2中得到的写回源数据;
访存地址用于向具体地址请求数据,访存地址和具体数据一一对应,不同操作类型连续访问的地址计算方式不一致,需要将不同地址中的数据加载到向量寄存器中。
访存偏移查找表根据不同的嵌入式访存带宽与总线协议实现相关,访存偏移寄存器通过接收访存位置判断的返回值,计算向量访存中单次访存的偏移量。向量访存地址加法器将单次访存的偏移量与标量-向量指令滞外监控单元返回的向量访存基址与单次访存的偏移量相加,计算完整的访存地址,实现对任意向量访存类型、向量数据类型的访存支持。
访存请求生成:标量-向量访存单元生成包括访存地址信息的单次访存请求给访存数据总线,若具体访存指令为向量存操作,则同时将步骤S7中计算得到具体的向量寄存器索引对应的步骤S2中发送而来的写回源数据发送给数据总线;在下个周期访存计数器访存计数会加1,判断表示当前访存位置的访存计数,若访存计数与步骤S3中标量-向量指令滞外监控单元发送的向量数据类型相匹配,进入步骤S5,否则进入步骤S6。
通过访存请求计数来指示当前的单个访存位于整个向量访存的位置(访存位置判断),在最后一次访存拉高与派遣单元的握手信号,此时指令完整功能相关控制已经发出,可开启流水线请求下条指令,每次与总线的握手请求有效后使能访存请求计数增加1;由于是寄存器实现,初始化为0,指示下次请求为第一次具体访存。通过向量数据类型中的寄存器组分配方案指定向量寄存器组中的寄存器个数,若向量寄存器组中的寄存器个数被指定为1/2/4/8,当计数器读数为分别为0/1/3/7时,指示已经发出全部的传输请求,将此时状态称为向量访存请求完成。在下个时钟周期将访存请求计数清0。
图10展示了当寄存器组分配方案指定向量寄存器组中的寄存器个数为4时,访存请求计数与写回有效计数在连续时钟周期下的具体返回值与相关控制方式示意图。
访存请求计数的实现能够满足架构对任意寄存器组分配的支持,寄存器个数为1/2/4/8的寄存器组分配方案分别请求1/2/4/8次数据总线访存,写回计数器同理。由于访存请求计数受到数据总线请求握手的控制,能够适应各种总线协议及总线数据返回周期的不确定性,如图11所示,若T4周期内未收到访存写回,则暂停访存请求的发出,直到T5周期收到访存写回信号。
S5.标量-向量指令滞外监控单元接受标量-向量访存单元的访存状态判断的指示,在向量访存请求完成时释放访存写回标识,告知标量-向量派遣单元可以将后续访存指令派遣进标量-向量指令滞外监控单元,并进入步骤S7。
S4-S5 步骤实现了一种访存总线冒险判断机制,用以在向量访存进行的同时,可执行无硬件冒险的标量或向量算术指令,如图12所示,当访存冲突时则会暂停流水线,添加空泡,等待前序访存完成,如图13所示,遵循FIFO先入先出的原则,如果向量访存进行中译码出标量访存,则会暂停标量流水等待访存通路空闲,如果标量访存中后接向量访存,则在标量访存请求发出时将向量访存派遣进标量-向量指令滞外监控单元;相对如图14所示优化前的方案对比,可避免在完整向量访存写回完成后访存单元有效以减少访存空泡。
S6.告知派遣单元暂停访存指令的派遣,计算下一条访存所需的地址与访存命令请求,等待写回数据,并进入步骤S7。
本步骤中,由于滞外监控单元能够实现对向量多周期访存中的完整监控,仍然允许标量或向量算术指令的派遣,允许无冒险指令的并行执行以提高整体架构的并行度。
T4周期进行下列判断操作:
S7. 本步骤在标量-向量访存单元中生成向量寄存器写回控制。
访存单元中的寄存器索引加法器将写回有效计数器与步骤S3中滞外监控单元发送的目的寄存器索引相加得到具体的向量寄存器索引;并生成写回请求控制:
若指令为向量加载指令,将此时的向量开关状态、数据总线返回数据、向量寄存器索引和数据总线返回的写回数据同时发送给写回仲裁单元。
写回仲裁单元读取写回对比标识与向量开关状态,将从访存单元发送来的数据发送给具体向量寄存器索引编号对应的向量寄存器中。
若指令不为向量加载指令,而为向量存储指令,表明此时的数据总线已完成对写回源数据的存储。
访存单元在下个周期将写回有效计数器计数加1,注意数据写回到向量寄存器中的时间点写回有效计数还未增加。写回位置判断将写回有效计数返回值与向量数据类型中的寄存器组分配方案指定向量寄存器组中的寄存器个数作比较,若向量寄存器组中的寄存器个数被指定为1/2/4/8,当计数器读数为分别为0/1/3/7时,指示已经完成全部的向量访存传输,将此时状态称为向量访存写回完成,跳转到S8,否则跳转到S4;
S8.此时向量访存指令所需的全部数据已正确写回到向量寄存器中发送指令退休使能给标量-向量指令滞外监控单元,使能标量-向量指令滞外监控单元中的FIFO读指针以退休向量指令,更新写回对比标识用于下条指令的正常写回指示,即可在下个周期接受标量-向量指令滞外监控单元发出的新指令。在下个时钟周期将写回计数器计数清零,若下条指令并非向量指令,则在下个时钟周期通过向量访存状态关闭向量开关。
向量访存相关逻辑的硬件实现受到总线协议,访存带宽,写回控制的多方面影响,标量-向量访存单元与标量-向量指令滞外监控单元组合实现单周期最多发送一次总线请求时的完整控制逻辑链,能够在数据到达标量-向量访存单元的同时生成写回具体向量寄存器中的写回请求控制,并在最后一条向量访存请求发出时开放访存指令派遣,保证在后续指令到达的同时向量数据刚好准备就绪。在不改变标量单元中的数据总线实现方式前提下,同时自身完成整个访存位置的判断与相关控制逻辑的实现。
前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
Claims (5)
1.一种RISC-V向量访存处理系统,其特征在于,包括可相互传输数据的标量-向量派遣单元,标量-向量指令滞外监控单元和标量-向量访存单元,以及与标量-向量派遣单元连接的译码单元和系统状态寄存器,所述译码单元还连接有指令存储器、向量寄存器和标量寄存器;标量-向量访存单元连接有数据总线和向量写回仲裁单元,所述向量写回仲裁单元还与向量寄存器和标量寄存器连接;
所述标量-向量派遣单元具体功能为在无冲突的最早时间点将指令发给其他模块;
所述标量-向量指令滞外监控单元的具体功能包括向量冒险控制、将指令派遣进FIFO、向量访存FIFO写使能控制及向量访存FIFO读使能控制;
所述标量-向量访存单元的具体功能包括访存位置判断、访存请求生成及写回请求生成;
所述向量写回仲裁单元的功能为将从标量-向量访存单元发送来的数据发送给到向量寄存器中。
2.如权利要求1所述RISC-V向量访存处理系统,其特征在于,所述标量-向量派遣单元、标量-向量指令滞外监控单元、标量-向量访存单元、向量写回仲裁单元模块均为单独定制芯片。
3.一种RISC-V向量访存处理方法,其特征在于,包括如下步骤:
S1.取得向量访存指令,向量访存指令从外部的指令存储器取得,发送给译码单元;
S2.由译码单元对向量访存指令进行译码,译码得到后续指令执行过程中所需完整指令控制信息,所述完整指令控制信息包括向量访存类型信息、向量寄存器索引、向量访存基址,发送给标量-向量派遣单元,同时从向量寄存器中获取向量存储指令执行所需的写回源数据;
S3.如果存在冒险,暂停向量算术指令的派遣,直到冒险相关向量访存指令退休;
当上述冒险不存在时,标量-向量派遣单元将译码单元发送的完整指令控制信息,以及步骤S2中的写回源数据交给标量-向量访存单元;
同时将完整指令控制信息中控制访存进行所需要的指令控制信息发送给标量-向量指令滞外监控单元,打开访存单元中的向量开关,进行步骤S4;所述指令控制信息包括向量访存类型信息、向量寄存器索引、向量访存基址,及从系统状态寄存器中获取的向量数据类型;
S4.标量-向量指令滞外监控单元接收到标量-向量派遣单元派遣而来的指令控制信息后:
不间断发送待退休指令相关控制信息,包括向量数据类型、向量访存类型信息、向量寄存器索引、向量访存基址;
标量-向量指令滞外监控单元向标量-向量访存单元指示待退休访存指令的向量数据类型、向量访存类型及向量访存基址用于进行访存信息的生成;
本步骤中,标量-向量访存单元接收到具体访存指令后,进行如下访存状态判断:
若具体访存指令是向量加载操作,则根据步骤S3中标量-向量指令滞外监控单元发送的向量访存基址与访存偏移查找表中的访存信号,计算完整的访存地址;标量-向量访存单元生成包括访存地址信息的单次访存命令给访存数据总线,
若具体访存指令是向量存储操作,则向数据总线发送与向量加载操作相同命令的同时发送步骤S2中得到的写回源数据;
判断表示当前访存位置的访存计数,若访存计数与步骤S3中标量-向量指令滞外监控单元发送的向量数据类型指示的访存次数相同,称为向量访存请求完成,进入步骤S5;否则进入步骤S6;
S5. 标量-向量指令滞外监控单元接受S4步骤中标量-向量访存单元的访存状态判断的指示,在向量访存请求完成时释放访存写回标识,告知标量-向量派遣单元可以将后续访存指令派遣进标量-向量指令滞外监控单元,并进入步骤S7;
S6.告知标量-向量派遣单元暂停访存指令的派遣,计算下一条访存所需的地址与访存命令请求,等待写回数据,并进入步骤S7;
S7.标量-向量访存单元中进行写回操作后,写回完成进入步骤S8;否则返回步骤S4;
S8.更新写回对比标识用于下条指令的正常写回指示。
4.如权利要求3所述RISC-V向量访存处理方法,其特征在于,所述步骤S3中的冒险状态包括:
当前向量寄存器索引信息对应的目的寄存器索引保留在滞外监控单元中;或当前访存接口正被向量指令占用时;或标量-向量指令滞外监控单元状态为满需要等待写回时;或标量-向量派遣单元判定已发出的指令尚未完成完整写回。
5.如权利要求3所述RISC-V向量访存处理方法,其特征在于,所述步骤S7中的写回操作具体为:
标量-向量访存单元中的寄存器索引加法器将写回有效计数器与步骤S3中标量-向量指令滞外监控单元发送的目的寄存器索引相加得到具体的向量寄存器索引;并生成写回请求控制:
若指令为向量加载指令,将此时的向量开关状态、数据总线返回数据、向量寄存器索引和数据总线返回的写回数据同时发送给写回仲裁单元;
写回仲裁单元读取写回对比标识与向量开关状态,将从访存单元发送来的数据发送给具体向量寄存器索引编号对应的向量寄存器中;
若指令不为向量加载指令,而为向量存储指令,表明此时的数据总线已完成对写回源数据的存储;
访存单元在下个周期将写回有效计数器计数加1,若写回有效计数返回值与向量数据类型中的向量数据类型指示的访存次数相同,称为向量访存写回完成,进入步骤S8,否则回到步骤S4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210261402.1A CN114579188A (zh) | 2022-03-17 | 2022-03-17 | 一种risc-v向量访存处理系统及处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210261402.1A CN114579188A (zh) | 2022-03-17 | 2022-03-17 | 一种risc-v向量访存处理系统及处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579188A true CN114579188A (zh) | 2022-06-03 |
Family
ID=81775426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210261402.1A Pending CN114579188A (zh) | 2022-03-17 | 2022-03-17 | 一种risc-v向量访存处理系统及处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579188A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794671A (zh) * | 2023-02-07 | 2023-03-14 | 成都申威科技有限责任公司 | 一种兼容向量数据的访存系统及方法 |
CN116257350A (zh) * | 2022-09-06 | 2023-06-13 | 进迭时空(杭州)科技有限公司 | 一种针对risc-v矢量寄存器的重命名分组装置 |
CN117827284A (zh) * | 2024-03-04 | 2024-04-05 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令处理方法、系统、设备及存储介质 |
-
2022
- 2022-03-17 CN CN202210261402.1A patent/CN114579188A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257350A (zh) * | 2022-09-06 | 2023-06-13 | 进迭时空(杭州)科技有限公司 | 一种针对risc-v矢量寄存器的重命名分组装置 |
CN116257350B (zh) * | 2022-09-06 | 2023-12-08 | 进迭时空(杭州)科技有限公司 | 一种针对risc-v矢量寄存器的重命名分组装置 |
CN115794671A (zh) * | 2023-02-07 | 2023-03-14 | 成都申威科技有限责任公司 | 一种兼容向量数据的访存系统及方法 |
CN117827284A (zh) * | 2024-03-04 | 2024-04-05 | 芯来智融半导体科技(上海)有限公司 | 向量处理器访存指令处理方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114579188A (zh) | 一种risc-v向量访存处理系统及处理方法 | |
US4648034A (en) | Busy signal interface between master and slave processors in a computer system | |
JP4982375B2 (ja) | 複数のコアを介してのモニタリングされたキャッシュラインの共有 | |
US5251306A (en) | Apparatus for controlling execution of a program in a computing device | |
EP3320427A1 (en) | Device and processing architecture for instruction memory efficiency | |
JP4230504B2 (ja) | データプロセッサ | |
WO2015057857A1 (en) | Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines | |
JPH03282904A (ja) | プログラマブルコントローラ | |
JP2007536626A (ja) | ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法 | |
JP2002268878A (ja) | スレッド間優先度可変プロセッサ | |
US11080101B2 (en) | Dependency scheduling for control stream in parallel processor | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
EP4264416A1 (en) | Processor-guided execution of offloaded instructions using fixed function operations | |
CN112667289A (zh) | 一种cnn推理加速系统、加速方法及介质 | |
CN115688640A (zh) | 基于超标量risc-v处理器流水线的协处理器访存接口 | |
JP3304444B2 (ja) | ベクトル処理装置 | |
US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
CN114610472A (zh) | 异构计算中多进程管理方法及计算设备 | |
US9405545B2 (en) | Method and apparatus for cutting senior store latency using store prefetching | |
US5329621A (en) | Microprocessor which optimizes bus utilization based upon bus speed | |
US11755331B2 (en) | Writeback hazard elimination using a plurality of temporary result-storage elements | |
EP1685481B1 (en) | Methods of optimized memory access in a digital signal processor architecture | |
US10901747B2 (en) | Unified store buffer | |
JP2007048019A (ja) | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム | |
JP2003140910A (ja) | Vliwプロセッサにおけるバイナリトランスレーション方法 |
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 |