在编写的一个java游戏中遇到了这样一个问题。
游戏规则:
答:和程序段一一样操作,通过TXT文件另存为成S文件后,导入虚拟机,使用winDLX执行,运行完毕后,可以通过statistics查看到程序段2的周期数为124个周期。
和程序段1相比,程序段2的不同之处在于程序段2有意识的将没有数据相关的除法运算放在一起连续执行,把数据都算好了,再执行需要数据的乘法运算和浮点加法运算,最后再把用到乘法运算和浮点加法运算的除法指令执行,在保证最后结果正确一致的前提下,通过顺序的调整减少了数据相关的发生次数和暂停周期,因为都是尽可能把用到的都算好再执行的,但是这样的调整就导致有一个连续四个的除法指令和一个连续两个的除法指令,这会带来大量的结构相关和暂停。这里直接取程序段2的statistics就可以看的出来: