第一章32位单周期RISC处理器设计
要设计一款处理器,首先要选择体系结构,本题选择的是RISC体系结构,因为它适合于流水线设计。然后需要选择一个标准的指令集,本题选择的MIPS指令集并按照常规的五段流水的方式来实现流水线。流水线的实现过程将在第二章介绍。
11目标处理器指令集与指令格式
本题目标CPU以能实现部分MIPS指令为目标,具体指令如下表1:
类别算术运算
逻辑运算
数据传递
条件分支无条件跳转空操作
指令加add减sub立即数加addi立即数减subi与a
d或or或非
or立即数与a
di立即数或ori立即数或非
ori取字lw存字sw相等转移beq小于比较slt立即数小于比较slti跳转jL空操作
op
格式RRIIRRRIIIIIIRIJ
表1目标CPU指令集
12从指令具体行为反推设计方案从指令具体行为反推设计方案
CPU要执行一条指令,不外乎需要完成以下几个过程取指令,指令译码,将译码出的指令放到算术逻辑运算部件ALU上执行运算,根据ALU算得的访存地址进行访存和将访存的结果写回寄存器等。当然,不同的指令类型(R、I、J)可能经过的过程稍有不同,即它们的数据通路有所不同,以下将具体介绍:1、R格式指令数据通路:1)从指令寄存器I
strMEM中取出指令,同时PC增值(即加1等待下个CLK到来);
1
f2.)寄存器单元rs1和rs2的内容从寄存器堆RegFile中读出;3.)ALU根据功能码Opcoder确定操作方式,对从寄存器堆读出的数据进行计算;4.)ALU运算结果被写入寄存器堆,由rd确定写入的寄存器堆存储单元地址。
图1R指令数据通路2I指令(除lw、sw和分支指令)数据通路如图2:1.)从指令寄存器I
strMem中取出指令,同时PC增值(即加1等待下个CLK到来);2.)寄存器单元rs1的内容从寄存器堆RegFile中读出;3.)ALU将从寄存器堆rs1单元中读出的数据与符号扩展后的指令低16位值相加;4.)ALU的运算结果被写入寄存器堆,由rt确定写入的寄存器堆存储单元地址。
图2
I指令(除lw、sw和分支指令)数据通路
2
f3、Lw指令数据通路如图3:1.)从指令寄存器I
strMem中取出指令,同时PC增值(即加1等待下个CLK到来);2.)寄存器单元rs1的内容从寄存器堆RegFile中读出;3.)ALU将从寄存器堆rs1单元中读出的数据与符号扩展后的指令低16位值相加;4.)将ALU的运算结果作为数据存贮器的地址读出相应单元的内容;5)把从数据存储单元取出的数据写入寄存器堆,rt确定写入的寄存器存储单元地址。由
图3LW指令数据通路4、Swr