RISC-V 执行

一、概述

在执行阶段,接收指令的源操作数,对其进行对应的操作,比如加减乘除、访问存储器等。执行结果会更新处理器的状态,比如更新物理寄存器堆,此外执行结果还会作为其他指令的源操作数(即旁路)。执行模块通常被称为Function Unit(FU)。

一个处理器包含的FU的类型取决于该处理器支持的指令集,一般的RISC-V指令集支持以下操作类型,

1.算术运算,如加减乘除、逻辑运算与移位运算。

2.访问存储器,如从存储器读取数据(load)和向存储器写数据(store)。

3.控制程序流,如分支(branch)、跳转(jump)、子程序调用(call)、子程序返回(return)等。

4.特殊指令,用来实现一些特殊功能的指令,如操作TLB的指令等。

由于指令复杂度不同,所以在FU中的执行时间也不同,称为latency。FU的个数决定了每周期最大可以并行执行的指令个数,即issue width。执行完成后并不会将结果马上更新到逻辑寄存器堆(ARF),而是会先写到临时的地方,如物理寄存器堆(PRF),当一条指令顺利退休时,才会对处理器的状态进行更新。

执行阶段另一重要部分是旁路网络(bypassing network),它主要将FU的运算结果马上送到需要它的其他地方,如物理寄存器堆、所有FU的输入端、store buffer中等。

FU与物理寄存器堆的读端口有固定的对应关系。

二、FU的类型

ALU

用来实现整数的加减、逻辑、移位运算,或者简单的乘除法、数据传输指令等,具体实现什么运算类型由处理器微架构而定。

AGU

用来计算地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值