基于RISC-V指令集的处理器设计——CPU的基本原理

概述

32位、64位和128位支持

应用领域

嵌入式系统:由于其低功耗和高效性,RISC-V 非常适合嵌入式设备,如物联网(IoT)设备。

高性能计算:RISC-V 的灵活性使其能够满足高性能计算的需求,并在超算等领域逐渐得到应用。

TCG IR(Tiny Code Generator Intermediate Representation)是 QEMU 中使用的中间表示(Intermediate Representation,IR),主要用于实现目标架构与主机架构之间的代码转换和优化。TCG IR 作为一个中间层,使得 QEMU 能够支持多种不同的处理器架构,同时提高了代码生成的灵活性和效率。

c语言-->汇编语言-->机器语言

汇编语言是由RISC-V指令集

指令存储器中存储指令(机器语言)

数据存储器中存储数据

基本名词介绍

PC地址  给一个地址出一个指令

OP Code操作码:识别指令----r type指令/i type指/UT type/load store

控制器:根据指令发出控制信号

寄存器堆:32个寄存器(存数据的)---直接与CPU交互

Data memory存储空间大,速度慢

指令集

add  Rd  Rs1  Rs2

意义:Rs1+Rs2=Rd

ALU逻辑运算器

参考RV32基本指令集表

根据OP Code判断是

r type的指令和i type指令

r type的指令

Add加法

Sub减法

SLT小于之一

SLTU无符号的小于之一

OR或

AND与

XOR异或

移位指令

SLL逻辑左移

SRL逻辑右移

SRA算术右移

i type指令

ADDI

SLTI小于之一

SLTIU无符号的小于之一

XORI

ORI

ANDI

移位指令

SLLI逻辑左移

SRLI逻辑右移

SRAI算术右移

SRLI和SRAI的区别是补位补的是算术位还是符号位

R取自寄存器堆 i取自于立即数

R type指令i type指令是从ALU中写回到寄存器堆里的  i type就是没有Rs2

访存指令

Load指令

从data memory里面写回去,从数据寄存器里取出来的数据写回到寄存器中(只有rs1和rd)

LB(8bits    但实际要扩展成32位形式,符号扩展)     

LH(16bits但实际要扩展成32位形式,符号扩展)   

 LW(32bits) 

  LBU (8bits    但实际要扩展成32位形式,无符号扩展) 

  LHU(16bits但实际要扩展成32位形式,无符号扩展)   

Store指令

从寄存器中取出的数据写回到数据寄存器中(有rs1(基地址),rs2(把rs2中的数据写回到寄存器中))

SB(从32位截取8位读)

SH(从32位截取16位读)

SW(直接读32位)

顺序指令

PC+4原理

32位机:一条指令占了四个地址 (1 btye= 8 bits 4 btye=32 bits)

一个字节占一个地址

PC+4(顺序执行)

Beq指令

跳转执行  需要把跳转信息存储在立即数中调用

PC+16/32.....(跳转执行但要是4的倍数 )----跳转指令-----

条件跳转

(Beq相等则跳转 Bne不相等则跳转  Bge大于等于则跳转 BLT小于则跳转)

和无条件跳转

(Jal(当前数加立即数) Jalr(原寄存器中的数加立即数))

信号(在Control中识别)

Branch 选择PC+4

MemRed 在load指令状态下,实际中可以一直读

MemWrite 在store指令下,不能一直写

MemtoReg多选器的信号 Load指令写回去,或者ALU的运算结果写回去

RegWirte写回寄存器堆

ALU control识别具体那种运算

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值