恩..
簡單說..開板者犯了三個錯誤..
其一:
設定的邊界條件是程式夠小剛好可以被L2 Cache住..
問題是 I/A 兩家的 L1 Cache 大小不同(D/I Cache 64K VS 32K) ..
Cache 原理也不同 (exclusive vs inclusive) ..
set associative 也不同 (8way vs 2way)..
因此邊界條件應嚴格到確定可以被L1Cache住
才算是在比較CPU內ALU的性能等..
其二:
開板者的程式是在作業系統下跑的..
在未取得ring 0 的情況下..OS本身的排程程式碼會優先於使用者程式碼..
也就是Cache的使用情況未明..
其三:
作業系統分配記憶體空間的時候會進行分頁..
在遇上CPU的set associative Cache機制後..
benchmark程式對變數的記憶體分配機制將會有很大的影響..
因此煩請附上原始程式碼及編譯時使用的參數等..
這樣會比較容易判斷執行結果上差異的原因..
=====================
其實 I / A 兩家同時脈同樣大小Cache的 superPI 比較早就有了..
隨手找一篇
http://www.it007.com/html/A/Art_9386_3.html
自己看一下 Celeron 430 (1.8GHz 512KB) 及 A64 3000+(1.8GHz 512KB AM2) 的結果吧..