我正在练习一些问题并且在理解某些方面遇到一些麻烦.以下问题的答案是865384.0.但我不明白他们是怎么做到的.有谁理解并且不介意解释?
假设你有一台2.5 GHz时钟的RISC机器(即时钟每秒钟25亿次).该特定计算机使用指令高速缓存,数据高速缓存,操作数获取单元和操作数存储单元.指令集包括具有以下时序的简单指令:
set reg, immed 1.0 clock cycle
loop label 6.0 clock cycles
add reg, immed 1.0 clock cycle
add reg, reg 2.0 clock cycles
load reg, mem 4.0 clock cycles
Run Code Online (Sandbox Code Playgroud)
假设使用以下代码片段对数值数组的元素求和.如果初始化代码已经执行(即SET指令已经完成执行),可以在4.5毫秒内处理多少个数组元素?将答案四舍五入到最接近的整数.回想1 ms = 0.001秒.还假设没有物理内存限制,这意味着阵列可以根据需要大小.
set r1, 0 ;initialize sum
set r2, MAX_SIZE ;initialize loop counter
set r3, @list ;initialize array pointer
more:
load r4, \textrm{5.0} ;fetch current list element
add r1, r4 ;add current list element
add r3, 4 ;move array pointer to next element
loop more ;auto-decrement r2, jump to more if r2 != 0
Run Code Online (Sandbox Code Playgroud)
小智 5
2.5GHz处理器每秒可以进行2,500,000,000次循环
在4.5ms内,处理器可以进行2,500,000,000*0.0045次循环= 11,250,000次循环
循环的每次迭代需要13个循环才能执行.只算标签后的最后四个指令更在那里的循环来:
- load: 4 cycles
- first add (register to register): 2 cycles
- second add (immediate to register): 1 cycle
- loop: 6 cycles
Run Code Online (Sandbox Code Playgroud)
11,250,000个可用循环/每次迭代13个循环= 865,385次迭代
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |