文档介绍:
实验报告
课程名称:计算机系统结构综合实验
学 院:计算机科学与工程学院
专 业:计算机科学与技术
学生姓名:Wolf Alice
学 号:16
指导教师:米源
评 分:
日 期: 2019 年 6 月 6日
电 子 科 技 大 学
实 验 报 告
学生姓名:Wolf Alice 学号:16 指导教师:米源
实验地点:主楼A2-412 实验时间: 2019.5.24
一、实验室名称:主楼A2-412
二、实验项目名称:CPU流水线结构分析
三、实验学时:4
四、实验原理:
(一)流水线处理机及其设计
流水线(pipeline)是一种能够使多条指令重叠执行的处理机的实现技术,它已成为现代处理机设计中最为关键的技术。
流水线处理机把一条指令的执行分成几个步骤,或称级(stages),每一级在一个时钟周期内完成。在每个时钟周期,处理机启动执行一条指令。如果处理机的流水线有m级,则同时可重叠执行的指令总条数将为m,每条指令处在不同的执行阶段。如果分级分得好的话,那么每一级都没有时间上的浪费,这是最理想的情况。
流水线处理机的最大特点:每一个时钟周期取出一条指令来执行。所有的指令按取出的先后次序通过数据路径。依照指令类型的不同,每种指令在执行过程中可能会用到数据路径的不同的部分。
1. 流水线寄存器的引入
在单周期处理机中,如果一条指令还没有执行完毕,PC的内容不会改变。这就使得在一条指令的整个执行过程中,IM始终输出当前指令。
流水线处理机每个时钟周期都要取出一条指令。因此,当流水线处理机已从存储器取出一条指令并把它送到ID级去译码时,下一条指令也正在从指令存储器中取出。如果先取出的指令没被保存,则它后面正在被取出的指令会对它造成影响。也就是说,必须要使用寄存器来保存从存储器取出的指令。
推而广之,我们必须要在流水线的各级之间安排一组寄存器,用以保存当前时钟周期各流水级操作的结果,以便为下个周期使用,我们称这些寄存器为流水线寄存器。
在第一级与第二级之间,我们使用了一个被称为IR(instruction register)的指令寄存器。对于字长为32位的处理机来讲,PC一般有30位,它存放的是32位指令的字地址。IR有32位,用来存放一条指令。
第二和第三级之间需要较多的寄存器:
* 从寄存器堆中读出的两个32位数据A和B必须要保存。
* 经符号扩展后的32位立即数I也要保存。图中的ISE(immediate sign-extend)代表指令中立即数的符号扩展。
* 一个d寄存器(5位),它被用来保存目的寄存器号;因为指令的操作结果要在WB级写入寄存器堆,目的寄存器号也要在那时使用,因此必须要同步跟随过去。
第三级和第四级之间除了d之外,还有Z,R和S:
Z用于存放ALU的一位ZERO标志。当ALU指令的运算结果为全0时,ZERO输出1,否则输出0。在执行条件转移指令时,Z用来决定是否真正转移。
S专为store指令而设,用来存放要被写入存储器中的数据。
R保存32位ALU运算结果。
第四级和第五级之间的寄存器如下:
D存放load指令从存储器中读出的数据;
C只是保存前一级的R,即ALU指令的结果。
这一级d寄存器的输出用于指定目的寄存器,D或C的数据要被写入由d所指定的目的寄存器中。我们可以把寄存器堆看作是最后一级流水线寄存器。
2. 流水线处理机的5部分和数据路径
我们把执行指令的过程分为5部分,使其能够按流水线方式执行指令。每一级所使用的名字及其要完成的动作如下:
(1) IF(instruction fetch)取指令;
使用PC的内容访问指令存储器,取出指令,并在该级结束时,把指令打人IR寄存器。
下一条指令的地址也在这一级计算出,并把它打人PC寄存器。
(2) ID(instruction decode)指令译码并读寄存器操作数;
指令译码级主要有两件事情要做:
从寄存器堆中读寄存器操作数和对指令中的立即数部分进行符号扩展。
此外:目的寄存器号要保存在流水线寄存器d中,以便在WB级指定把结果写入哪一个寄存器中。
(3) EXE(execution)执行;
* ALU运算类指令将在本级计算结果,并把它打人R寄存器。同时,ALU的ZERO输出也被打入Z寄存器。ALU的两个操作数,一个来自于寄存器rs1,它在前一级已被打人流水线寄存器A中了;另一个或是寄存器rs2操作数(B中内容),或是立即数(I中内容)。
(4) MEM(memory access)存储器访
内容来自淘豆网www.taodocs.com转载请标明出处.