课程实验3详细说明

2012-04-16

Lab3 Y86流水线设计

说明:

对于某个Y86指令,模拟设计一个流水线流程。

 

例子:课本图 4.42

Y86指令如下:

# prog1

0x000:     irmov1  $10, %edx

0x006:      irmovl  $3,  %eax

0x00c:      nop

0x00d:      nop

0x00e:      nop

0x00f:       add   %edx,  %eax

0x011:      halt

 

对应的Y86流水线如下:

1

2

3

4

5

6

7

8

9

10

11

F

D

E

M

W

 

 

 

 

 

 

 

F

D

E

M

W

 

 

 

 

 

 

 

F

D

E

M

W

 

 

 

 

 

 

 

F

D

E

M

W

 

 

 

 

 

 

 

F

D

E

M

W

 

 

 

 

 

 

 

F

D

E

M

W

 

 

 

 

 

 

 

F

D

E

M

W

 

 

 

 

周期6

W

R[%eax]<-3

周期7

D

valA<-R[%eax] = 10

valB<-R[%eax] = 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y86流水线模拟设计要求:

1.  自行设计一个Y86指令,要求该指令中必须包含movl指令(irmovlrrmovlmrmovlrmmovl),四个整数操作指令(addlsubladdlxorl),七个跳转指令(jmpjlejljejgejg)Callpushlpoplhalt任选3个。

2.  流水线设计可以针对特定Y86指令,亦可对任意Y86指令有效(有加分)。

3.  对于每个周期,要求输出F D E M W对应的操作。比如周期6W对应的操作为R[%eax]<-3

4.  监视并输出每个周期对应的寄存器、条件码、存储器、PC的值。

5.  对于流水线流程中的冒险,应采取相应的避免数据冒险操作(有加分)。

6.  可加入任意你认为对Y86流水线设计合理的操作。

7.  本实验可用C/C++javaVB等编写,最后提交一个实验报告和本实验相关的代码和可执行程序。(实验报告包括Y86指令、流水线设计思路和流程图、代码说明和演示、实验感想等)

8.  第十五周开始做报告,每组2~3人,提交日期:20126182359

 

【关闭窗口】