作者RogerShih
時間不會是兩倍.
K8 是原生的 64 Bits CPU, 相反的跑 32Bits 才是相容, 當跑 32Bits 程式時, 因為暫存器等本來就是 64Bits, 要把計算結果換算成給 32Bits 用時, 會多一個步驟, 反而跑 32Bit 程式會有效能浪費的地方, 但以目前 K8 跑 32Bits 程式的表現來看, 這效能的降低並不明顯.
反過來說, 當執行真正 64Bits 程式, 才能真正發揮 K8 完全的效能.
至於兩倍時間的說法是不正確的, CPU 輸出入資料是並流結構, 所以一次 64Bits in/out, 跟 32 Bits in/out , 花費的時脈時間是一樣的. AMD 有 White Paper, 裡面有各組合語言的指令可以參考, Latency 在 16/32/64 方面是一樣的.
不一樣的地方是記憶體搬移指令, 在作搬移的時候, 64 Bits 的搬移迴圈會需要比較多的 Latency, 但是絕對比 2 個 32 Bits 的搬移來的少. 當搬移一個相同大小的記憶體區塊時, 64Bits 的搬移會比 32Bits 的搬移快, 而 32Bits ...
|