计算机系统结构WINDLX实验——实验二

本文详细介绍了在WinDLX环境中进行的计算机系统结构实验,主要探讨了代码中的结构相关和数据相关问题。通过WINDLX分析了结构相关的暂停,并进行了指令调度以减少数据相关引起的暂停,同时讲解了输出相关、反相关和真相关的概念,展示了如何优化代码以实现指令并行执行。
摘要由CSDN通过智能技术生成

一、实验内容

  1. 在WinDLX环境下,运行下面代码。
  2. 提交第三部分的DLX 代码的汇编文件。
  3. 按每部分的实验内容完成各自的任务。

二、代码实现及分析

1.结构相关

在下面的代码中,如果存在结构相关,使用windlx找到由此引起的暂停,指出其指令对和结构相关的百分比。

LHI	R2,(A>>16)&0xFFFF  
ADDUI	R2,R2,A&0xFFFF  
LHI	R3,(B>>16)&0xFFFF  
ADDUI	R3,R3,B&0xFFFF  
ADDU	R4,R0,R3  
loop:  
LD	F0,0(R2)  
LD	F4,0(R3)  
ADDD	F0,F0,F4  
ADDD	F2,F0,F2
ADDI	R2,R2,#8  
ADDI	R3,R3,#8  
SUB	R5,R4,R2  
BNEZ	R5,loop  
TRAP	#0     
A:    .double 1,2,3,4,5,6,7,8,9,10  
B:    .double 1,2,3,4,5,6,7,8,9,10  

注意:这里虽然使用了数组,但实际上前四行代码中运算用到的A和B并不是数组的某一个元素,而是A数组和B数组的起始地址(通过WINDLX运行分析可知)。

一个简单的验证方法就是把A数组中的元素颠倒不改变数目即(10,9,8,7,6,5,4,3,2,1),再通过WINDLX可以发现运行得到的结果并没有发生变化!

再说结构相关的问题:
结构相关就是流水线处理机因为某些指令组合(同时使用相同的资源),而导致资源冲突使程序无法正常运行,也会因此产生暂停。
根据上述定义我们可以在流水线时空图中找到由结构相关引起的暂停:
在这里插入图片描述
使用WINDLX得到的暂停数:
在这里插入图片描述
WINDLX并没有将结构相关引起的暂停统计到“Stuctural stalls”中,但是我们依然可以通过Pipeline窗口单步执行找到引起结构相关的指令。
1.ADDD F2,F0,F2
在这里插入图片描述
2.ADDI R2,R2,#8
在这里插入图片描述
3.SUB R5,R4,R2
在这里插入图片描述
这三条指令都出现在循环体内,循环体执行了10次,总共发生了30次结构相关引起的暂停,每条指令

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值