作者tasuka (Tasuka)
看板CSSE
標題Re: [問題] 不同指令集CPU之間的效率差別
時間Tue Mar 9 13:37:50 2010
※ 引述《micklin (離鄉背井的米克)》之銘言:
: ※ 引述《snobbery (egoist)》之銘言:
: : 請問我下面的想法是對的嗎?
: : 假設我們有個程式P在一個1GHz的單核CPU A執行了一秒鐘,
: : (並且此程式不考慮I/O, 只考慮CPU內的計算)
: : 假設以下三點因素都可以忽略:
: : (1)CPU A與B的廠牌不同,
: : (2)指令集不同,
: : (3)把本來run在CPU A上的程式P重新編譯到可以run在CPU B上的compiler的能力
: : 那麼將此程式P丟到一個2GHz的單核CPU B的話, 只要執行0.5秒鐘.
: 你的推論是基於這個公式嗎?
: CPU Time=IC*CPI*Clock cycle time
: 不考慮指令集的不同, 那也不需要重新編譯了啊
: 不考慮I/O, 那要考慮快取機制的影響, 如果連記憶體存取都不考慮,
: 那麼在最單純的環境下, 我認同你的想法.
: : 假設以上是對的,
: : 那如果把那三個因素都考慮進來呢?
: : 譬如說本來有個程式P是用ANSI C寫的,
: : 本來P在INTEL的單核1GHz CPU跑了一秒鐘,
: : (就假裝是執行像int a=1; a++;這樣的指令好了)
: : 那我把這樣的程式P拿去跑在譬如TI的1MHz microcontroller的話,
: : 是不是"差不多"要1000秒才能執行完畢?
: : 謝謝
: 指令數不同, CPI不同, 快取機制不同, 管線處理也不同,
: 所以運算時間不能如此類比.
若指令集不同的話,會有很大的不同,
1GHz 一個 clock 週期是 1/1G 而 1MHz 是 1/1M 算是 1000倍
而若 1GHz 的 CPU 作一個指令要100個 clock 而 1MHz 的 CPU 只要 1個 clock
但需要10指令的話,
就沒有差到1000倍,而是 1/1G x 100 : 1/1M x 10 等於100倍而已!
一般而言 CSIC 一個指令用的 clock 比較長,但可以用單一指令完成,而 RSIC 一個指令 clock 短,
可是要用較多的指令組合完成.
還有別的因素都會影響。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.146.76.146
1F:噓 micklin:很缺文章數嗎? 03/09 15:26