【【萌新编写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部分其他功能实现的探究