[問題] CISC/RISC CPU 跑 for 迴圈的差別

看板C_and_CPP (C/C++)作者 (HOPE)時間14年前 (2012/01/10 22:04), 編輯推噓2(2013)
留言15則, 5人參與, 最新討論串1/1
TurboC++ CPU分別是ATOM(1.6GHz)和Vortex86(800MHz) 各跑for迴圈50次,迴圈內容空白不做事 結果,迴圈的整體花費時間,ATOM比Vortex86久 eg. for(int i=0;i<50;i++) {} 逐次增加迴圈次數試驗 for(int i=0;i<100;i++), for(int i=0;i<500;i++), for(int i=0;i<1000;i++) ...... 似乎在迴圈次數幾千次之後 ATOM花的時間慢慢追上了Vortex86 不太能理解為什麼時脈高的CPU,反而跑得比較慢 會是指令集的差異導致的嗎? ATOM(CISC) vs Vortex86(RISC) 請高手幫忙解答,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.26.170.220 ※ 編輯: licheer 來自: 114.26.170.220 (01/10 22:05) ※ 編輯: licheer 來自: 114.26.170.220 (01/10 22:15)

01/10 22:28, , 1F
我在想(推測),TC如果改用 long int 的話時間會快一點嗎
01/10 22:28, 1F
sorry,少打了i,已更正 ※ 編輯: licheer 來自: 114.26.170.220 (01/10 22:30)

01/10 22:29, , 2F
因tc的int只有2bytes,目前cpu處理都是4bytes會快些.
01/10 22:29, 2F

01/10 22:30, , 3F
你要不要看一下他翻出來的 machine code,找一下spec ...
01/10 22:30, 3F

01/10 22:30, , 4F
架構不一樣,你不能假設一個加法需要的cycle數一樣
01/10 22:30, 4F

01/10 22:31, , 5F
我猜都沒下最佳化參數-_-...
01/10 22:31, 5F

01/10 22:31, , 6F
而且拿了隨便兩顆CPU就來比CISC/RISC未免也太...
01/10 22:31, 6F

01/10 22:32, , 7F
btw, 精簡指令集的操作需要的 CPU cycle 都超少
01/10 22:32, 7F

01/11 00:56, , 8F
兩顆都是CISC
01/11 00:56, 8F

01/11 01:05, , 9F
推樓上 wiki上面寫這兩顆都x86 ISA的..
01/11 01:05, 9F

01/11 01:06, , 10F
反正把branch prediction, pipline length等等枝微細節
01/11 01:06, 10F

01/11 01:06, , 11F
的microarchitecture的事情考慮進去的話根本沒辦法很簡
01/11 01:06, 11F

01/11 01:07, , 12F
單的比較這兩個cpu
01/11 01:07, 12F

01/11 01:07, , 13F
還好atom還沒有out-of-order execution... XD
01/11 01:07, 13F

01/11 01:10, , 14F
我猜atom較少迴圈中比較慢是因為pipeline比較深..
01/11 01:10, 14F

01/11 09:30, , 15F
原來正解是亂序 XDD
01/11 09:30, 15F
文章代碼(AID): #1F34LzJw (C_and_CPP)
文章代碼(AID): #1F34LzJw (C_and_CPP)