当前位置: 首页 > news >正文

【【萌新编写RISCV之前言CPU的部分介绍.3】】

萌新编写RISCV之前言CPU的部分介绍.3

CPU的数字电路结构实际十分简单,最主要的模块有PC(地址生成),ALU(运算),Register(寄存),Decode(译码),Control(控制信号生成)。CPU在工作时会与外部存储器Instr_mem(指令存储器)和Data_mem(数据存储器)交互,完成计算机生成的指令。下图为CPU的工作架构图。
在这里插入图片描述
我们先入门一下单周期CPU的基本结构和设置
我们现在先介绍简易的CPU组成逻辑与功能
在这里插入图片描述
我们应用的是32位的指令 和ARM架构的存在一点细微上的差别
对于
OP部分是运算类型指令
func3是在于OP运算符之下的加减法指令 此处设置为000 代表加减法操作
而我们在 19-15rs1 以及 24-20 rs2位所使用的是两个寄存器数组中的索引
另外的rd 相当于就是实现 Int c中 最后对C操作的一个目的寄存器 我们在完成最后的操作之后 会把C重新返回存入该地址中
最后的31-25位 是用来实现代码功能的扩展

我们用在C语言的代码就是
int c=a+b;
在这里插入图片描述
在这里插入图片描述
这是对于我们实现逻辑功能的基本实现路径
我们会通过PC生成地址 然后再由Instr_mem 输出相应的指令 ,最后再由Decode分解指令 将指令的各个部分传递给不同的部件
control 接收op 端 信号
其他的内容如rs1 rs2 传给寄存器register
其他的操作如func3直接传给ALU进行计算
最后再配合将ALU读取的数据在register中完成组合得出结论 把这个结果进行回传给register 完成 一次操作
在这里插入图片描述
因为我们现在主要想实现的是单周期的CPU 对于CPU的实现是这样子的
单周期CPU:一个时钟周期完成一条指令,如果一个程序有多条指令,则时钟周期的时间根据执行时间最长的那条指令为主。执行一条指令就需要一个时钟周期则CPI为1。
多周期CPU:一条指令被分成了若干个阶段,假设为n个,每执行一条指令需要花费n个时钟周期,所以执行一条指令就需要n个时钟周期CPI为n。
多周期CPU比单周期CPU的优势在于:因为一个程序的不同指令所需要的执行时间是不同的,所以如果按照单周期处理的话,无论什么指令我都按照最长的那条指令去处理,可能我只要占用CPU1s,但是你给了我100s,其中99sCPU都在等待,闲着没事干,这完全是在浪费CPU。多周期CPU就是程序中的每一条指令要多少时间我就给你多少时间,比如第一条指令要是2s,那我就给你2s的CPU,第二条指令要5s,我就给你5s,多周期CPU完成这2条指令一共是7s,如果是单周期总时间就需要10s,多周期的CPU的效率比单周期高吧。但是多周期CPU也有缺点,就是同一时间不能运行多条指令无法实现CPU并行工作,因为有的时候一个程序执行的不同指令可能用的是CPU中的不同部件,如果可以让CPU中的所有部件都能不闲着那效率不就更高了,所以就有了指令流水线。

上面的东西是学习了CSDN上的部分内容但是未了解完全
下面我将继续参考
《计算机组成与设计》这一经典书籍完成对CPU部分其他功能实现的探究

http://www.lryc.cn/news/165764.html

相关文章:

  • dl_model_param
  • Android相机调用-CameraX【外接摄像头】【USB摄像头】
  • 第一个Java程序
  • OpenCV之霍夫变换检测直线
  • lv3 嵌入式开发-11 Linux下GDB调试工具
  • Zabbix监控平台概念
  • 【javaSE】 枚举与枚举的使用
  • NetSuite知识会汇编-管理员篇顾问篇2023
  • 根号分治与多项式的巧妙结合:GYM-104386G
  • 通过FTP高速下载几百G数据
  • cudnn-windows-x86_64-8.6.0.163_cuda11-archive 下载
  • 多线程案例(1) - 单例模式
  • Arduino驱动TCS34725传感器(颜色传感器篇)
  • 知识库网站如何搭建?需要注意这五个要点!
  • 【UE虚幻引擎】UE源码版编译、Andorid配置、打包
  • 树和二叉树的相关概念及结构
  • MySQL安装validate_password_policy插件
  • 数据在内存中的存储——练习3
  • web-案例
  • 第一章 JAVA入门
  • 二叉树详解(求二叉树的结点个数、深度、第k层的个数、遍历等)
  • Apollo配置中心及Python连接
  • LuatOS-SOC接口文档(air780E)--audio - 多媒体音频
  • Golang gorm manytomany 多对多 更新、删除、替换
  • FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx
  • Transformers-Bert家族系列算法汇总
  • Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3
  • 【服务器】ASUS ESC4000-E11 安装系统
  • 创建java文件 自动添加作者、时间等信息 – IDEA 技巧
  • 第27章_瑞萨MCU零基础入门系列教程之freeRTOS实验