我正在練習一些問題,並且在理解時遇到了一些麻煩。以下問題的答案是865384.0。但我不明白他們是怎麼做到的。有誰明白,不會介意解釋?可以在4.5毫秒內處理多少個數組元素?
假設你有一個RISC機器具有2.5GHz的時鐘(即時鐘每秒滴答2.5十億倍)。這個特定的計算機使用指令緩存,數據緩存,操作數獲取單元和操作數存儲單元。該指令集包括具有以下時序的簡單指令:
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
假設下面的代碼片段用於求和數值數組的元素。如果初始化代碼已經執行(即SET指令已經執行完畢),可以在4.5ms內處理多少個數組元素?將您的答案舍入到最近的整數。回想1ms = 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
我投票關閉這個問題進行摘因爲它不是常見問題範圍內的編程問題。這似乎是一個理論問題。 –
這對我來說似乎相當具體。給定這些參數和一個已知的指令集,如何確定在給定的時間範圍內該循環可以處理多少次。 –