计算机系统结构--实验四 Tomasulo算法

一、实验目的

(1)加深对指令集并行性及开发的理解。

(2)加深对Tomasulo算法的理解。. 

(3)掌握Tomulo算法在指令流出、执行、写结果各阶段对浮点操作指令以及load和store指令进行什么处理。

(4)掌握采用了Tomasulo算法的浮点处理部件的结构。

(5)掌握保留站的结构。

(6)给定被执行代码片段,对于具体某个时钟周期,能够写出保留站、指令状态表以及浮点寄存器状态表内容的变化情况。

二、实验平台

MIPSsim (指令级和流水线操作级模拟器)

三、实验内容和步骤

(1)学会使用Tomasulo算法。假设浮点功能部件的延迟时间为加减法2个周期,乘法10个时钟周期,除法40个时钟周期,load部件2个时钟周期。

  •  对于下面的代码段,给出当指令MUL.D写结果时,保留站、load缓冲器以及寄存器状态表中的内容。

    L.D       F6, 24(R2)

    L.D       F2, 12(R3) 

    MUL.D    F0, F2,F4

    SUB.D    F8,F6,F2

    DIV.D     F10,F0,F6

ADD.D    F6,F8,F2 

指令执行状态为:

指令

流出

执行

写结果

L.D F6,24(R2)

CP 1

CP 2-3

CP 4

L.D F2,45(R3)

CP 2

CP 3-4

CP5

MUL.D F0,F2,F4

CP 3

CP 6-15

CP 16

SUB.D F8,F2,F6

CP 4

CP 6-7

CP 8

DIV.D F10,F0,F6

CP 5

ADD.D F6,F8,F2

CP 6

CP 9-10

CP 11

保留站内容为:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

No

Add2

No

Add3

No

Mult1

No

Mult2

Yes

DIV.D

D3

D1

0

0

load缓冲器内容:

名称

Busy

地址

Load1

No

Load2

No

Load3

寄存器内容:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

0

0

0

0

Mult2

D3

D2

D6

D4

②按步进方式执行上述代码,利用模拟器的“小三角按钮”的对比显示功能,观察每一个时钟周期前后各信息表中内容的变化情况。

(2)对于与上面相同的延迟时间和代码段。

①给出在第3个时钟周期时,保留站、load缓冲器以及寄存器状态表中的内容。

指令状态:

指令

流出

执行

写结果

L.D F6,24(R2)

CP 1

执行完成

L.D F2,45(R3)

CP 2

剩余1 CP

MUL.D F0,F2,F4

CP 3

SUB.D F8,F2,F6

DIV.D F10,F0,F6

ADD.D F6,F8,F2

保留站内容:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

No

Add2

No

Add3

No

Mult1

Yes

MUL.D

R[F4]

Load2

0

Mult2

No

load缓冲器内容:

名称

Busy

地址

Load1

Yes

L.D

R[R2]+24

Load2

Yes

L.D

R[R3]+12

Load3

寄存器:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

Mult1

Load2

Load1

  • 步进5个时钟周期,给出这时保留站、load缓冲器以及寄存器状态表中的内容。

指令状态:

指令

流出

执行

写结果

L.D F6,24(R2)

CP 1

CP 2-3

CP 4

L.D F2,45(R3)

CP 2

CP 3-4

CP 5

MUL.D F0,F2,F4

CP 3

剩余7 CP

SUB.D F8,F2,F6

CP 4

CP 6-7

CP 8

DIV.D F10,F0,F6

CP 5

ADD.D F6,F8,F2

CP 6

保留站内容:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

No

Add2

Yes

ADD.D

D4

D2

0

0

Add3

No

Mult1

Yes

MUL.D

D2

R[F4]

0

0

Mult2

Yes

DIV.D

D1

Mult1

0

load缓冲器内容:

名称

Busy

地址

Load1

No

Load2

No

Load3

寄存器内容:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

Mult1

0

Add2

0

Mult2

D2

D1

D4

  • 再步进10个时钟周期,给出这时保留站、load缓冲器以及寄存器状态表中的内容。

指令状态:

指令

流出

执行

写结果

L.D F6,24(R2)

CP1

CP 2-3

CP 4

L.D F2,45(R3)

CP 2

CP 3-4

CP 5

MUL.D F0,F2,F4

CP 3

CP 6-15

CP 16

SUB.D F8,F2,F6

CP 4

CP 6-7

CP 8

DIV.D F10,F0,F6

CP 5

剩余38 CP

ADD.D F6,F8,F2

CP 6

CP 9-10

CP 11

保留站:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

No

Add2

No

Add3

No

Mult1

No

Mult2

Yes

DIV.D

D3

D1

0

0

Load缓冲器:

名称

Busy

地址

Load1

No

Load2

No

Load3

No

寄存器:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

0

0

0

0

Mult2

D3

D2

D6

D4

(3)假设浮点功能部件的延迟时间为加减法3个时钟周期,乘法8个时钟周期,除法40个时钟周期。对于下面的代码重复实验一中步骤(2)的内容。编写代码如下:

L.D       F6, 28(R2)

ADD.D    F2,F4,F8

MUL.D    F0, F2,F4

SUB.D    F8,F6,F2

DIV.D     F12,F0,F6

ADD.D    F10,F8,F2

浮点功能部件的延迟时间为加减法3个周期,乘法8个时钟周期,除法40个时钟周期,load部件2个时钟周期。根据实验结果可知该程序需要56个周期执行完成。

第3个时钟周期时,保留站、load缓冲器以及寄存器状态表中的内容。

指令状态:

指令

流出

执行

写结果

L.D F6,24(R2)

CP 1

执行完成

L.D F2,45(R3)

CP2

剩余2 CP

MUL.D F0,F2,F4

CP 3

SUB.D F8,F2,F6

DIV.D F10,F0,F6

ADD.D F6,F8,F2

保留站:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

Yes

ADD.D

R[F4]

R[F8]

0

0

Add2

No

Add3

No

Mult1

Yes

MUL.D

R[F4]

Add1

0

Mult2

No

load缓冲器内容:

名称

Busy

地址

Load1

Yes

L.D

R[R2]+28

Load2

No

Load3

寄存器内容:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

Mult1

Add1

Load1

步进5个时钟周期,给出这时保留站、load缓冲器以及寄存器状态表中的内容。

指令状态:

指令

流出

执行

写结果

L.D F6,24(R2)

CP 1

CP 2-3

CP 4

L.D F2,45(R3)

CP 2

CP 3-5

CP 6

MUL.D F0,F2,F4

CP 3

剩余6 CP

SUB.D F8,F2,F6

CP 4

剩余1 CP

DIV.D F10,F0,F6

CP 5

ADD.D F6,F8,F2

CP 6

保留站内容:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

No

Add2

Yes

SUB.D

D1

D2

0

0

Add3

Yes

ADD.D

D2

Add2

0

Mult1

Yes

MUL.D

D2

R[F4]

0

0

Mult2

Yes

DIV.D

D1

Mult1

0

Load部件内容:

名称

Busy

地址

Load1

No

Load2

No

Load3

寄存器部件内容:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

Mult1

0

0

Add2

Add3

Mult2

D2

D1

再步进10个时钟周期,给出这时保留站、load缓冲器以及寄存器状态表中的内容。

指令状态:

指令

流出

执行

写结果

L.D F6,24(R2)

CP 1

CP 2-3

CP 4

L.D F2,45(R3)

CP 2

CP 3-5

CP 6

MUL.D F0,F2,F4

CP 3

CP 7-14

CP 15

SUB.D F8,F2,F6

CP 4

CP 7-9

CP 10

DIV.D F10,F0,F6

CP 5

剩余37 CP

ADD.D F6,F8,F2

CP 6

CP 11-13

CP 14

保留站内容:

Time

名称

Busy

Op

Vj

Vk

Qj

Qk

Add1

NO

Add2

NO

Add3

NO

Mult1

NO

Mult2

Yes

DIV.D

D3

D1

0

0

Load部件内容:

名称

Busy

地址

Load1

No

Load2

No

Load3

寄存器部件内容:

字段

F0

F2

F4

F6

F8

F10

F12

Qi

0

0

0

0

0

Mult2

D3

D2

D1

D4

D6

、实验总结

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枳实、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值