处理器篇 180-200
1.导入
一个计算机的性能由三个关键因素决定:指令数目、时钟周期长度和每条指令所需要的时钟周期数(CPI)
- 编译器和指令集 ----决定指令数目
- 处理器实现方式 ----决定时钟周期长度和CPI
一个基本的MIPS指令集的核心子集:
- 存储器访问指令:lw,sw
- 算数逻辑指令:add,sub,and,or,slt
- 分支指令:beq,j
2.数据通路中的逻辑单元
- 组合单元:输出只取决于输入,输入相同时输出完全相同,因为其内部没有存储单元
- 状态单元:至少两个输入和一个输出,输入为写入数据和时钟信号,该单元随时可读
时钟方法:用于确定数据相对于时钟何时稳定和有效的方法(以边沿触发时钟为例):
因为只有状态单元能存储数据值,所有组合逻辑单元都必须从状态单元集合接收输入,并将输出写入状态单元集合中
控制信号:用来决定多选器选择的信号。
因为若某状态单元不是每个周期都进行修改,就需要写控制信号,只有时钟边沿到来并且控制信号有效时,状态单元才能改变状态
3.建立数据通路
设计一个数据通路,需要清楚每种MIPS指令需要的数据通路部件,由于R指令有3个寄存器操作数,每条指令都要从寄存器堆读出两个数字,并再写入一个数据字。读写都需要输入寄存器号,写还需要输入需要写入的数据
以分支指令为例,两个寄存器用于比较是否相等,一个16位偏移量用于计算相对与分支指令所在地址的分支目标地址:
beq $t1,$t2,offset
数据通路:
关于左移两位,因为指令中的偏移量是按照字(32)寻址的,而在寄存器中是按照字节(8)寻址的,所以字节寻址是字寻址的4被,即左移两位
4.ALU控制
- 采用多级译码方法:主控制单元生成ALUOp作为ALU控制单元的输入,再有ALU控制单元生成真正控制的ALU的信号。
- 使用多级译码可以减小主控制单元的规模,多个小控制单元还可能提高控制单元的速度,控制单元性能对时钟周期非常关键
将2位LALUOp和6位funct映射为4位ALU控制信号,组合成一张有意义的真值表
5.主控单元
- 指令格式
- 一个基本的数据通路
注意:ALU的第二个输入和要存入寄存器堆的数据需要两个不同的来源
- 控制信号
这7位信号和2位ALUOp组成的9位信号,可以根据控制单元的6位输入信号,及操作码来设置