瀏覽單個文章
RogerShih
*停權中*
 
RogerShih的大頭照
 

加入日期: Nov 2000
您的住址: Taipei,ROC
文章: 573
引用:
作者rick070
請問以上理論點解呀?
32bits 的app 要如何硬用 64bits 跑?

當跑32bits app 時一樣只會使用 IA-32 的指令集(與 Athlon XP 一樣)
當跑64bits app 時才會切換到x86-64 的指令集
對K8 來講~是"相容", 而不是"模擬"~(Intel 有此類CPU ,且32bits 效能用慘字形容)

應該沒有說32bits 的程式用 64bits指令硬去跑的道理..(那現在用K8且不是64bits OS與64Bits App的??)

且WinXP x64 不是"只能"跑64bits 的app , 只有OS 系統相關部分才需全部使用64bits(ex:driver,system files),它一樣也可以正常使用32bits 程式

時間2倍的理論基礎何來~~? (實例)

有文章來源的話更好~

望大大解答


時間不會是兩倍.

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 又比 16 Bits 的搬移快.

一個很簡單的對照, 如果位元數越多, 就越花時間, 那顯示卡何必提高到 256 bits 去?256 bits 的顯示卡快, 還是 128 Bits 的顯示卡快?

PS: 早期 Italium 是因為它核心並不是 x86 CISC, 所以才要用模擬的方式來跑 x86 程式, 這是它跑現有 x86 32 位元程式效能低落的最大原因.
舊 2005-06-30, 02:50 AM #127
回應時引用此文章
RogerShih離線中