Re: [問題] 不同指令集CPU之間的效率差別

看板CSSE (電腦科學及軟體工程)作者 (Tasuka)時間16年前 (2009/01/07 11:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
基本上要看 CPU 完成一個指令所需的 clock 而定, 同樣一個乘法,在 Intel (CISC)可能只要一個指令在100 個 clock 完成,而在 PowerPC (RISC)可能要用 10 個指令,但每個指令只要 5 個 clock, 1/2Ghz * 100 = 1/1Ghz *(5*10)=50nS 這時若 Intel CPU 是 2GHz 而 PowerPC 是 1GHz 時,完成時間可以視為相等。 以上完全不考慮其他 IO/Cacheh等因素的影響。 http://en.wikipedia.org/wiki/RISC http://en.wikipedia.org/wiki/Complex_instruction_set_computer ※ 引述《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不同, 快取機制不同, 管線處理也不同, : 所以運算時間不能如此類比. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.192.24.146
文章代碼(AID): #19P2CY9G (CSSE)
文章代碼(AID): #19P2CY9G (CSSE)