64位CPU與32位CPU效能有什麼差距?

時間 2021-05-31 17:44:42

1樓:freeman

64位系統,主要優勢是:

(1)採用64位定址方式,支援更大的定址空間。

(2)處理64位整數更快。

(3)有更多的通用暫存器,和增強指令集可用。

但其實也造成了不少浪費:

(1)多數應用32位整數足夠用了。其實只需要增加一點64位運算支援就行了,不必要全部暫存器都公升到64位。

(2)指標占用、記憶體對齊、堆疊操作,全面以8位元組為單位,在多數情況下是一種資源浪費。64bit指標的高32位基本是浪費,畢竟大於4G空間的應用極少。資料傳輸也是以64位為單位,可是應用裡大部分資料都是32位以下的,這也造成頻寬的浪費。

所以,64位系統優勢並不是特別明顯,有些時候比32位的表現更差。

要我說,完全可以在32位系統上,加幾個64位暫存器及相應的處理指令,定址方面也是32位為主,64位為輔的形式,就完全OK了,高低端兼顧,代價小很多。

2樓:弗拉基公尺爾

本人32位,64位CPU都用過,都是當年的主流CPU,感覺沒啥差距。唯一差距32位系統認不了4G以上記憶體,一定要64位系統才可以(64位系統必須要64位CPU才支援)

3樓:dione

理論上64位指令的處理能力是32位的平方倍。

32位指令如果都在乙個週期內處理完,每週期處理資料能力是4g,就是說10Hz的32位cpu就可以吃完ddr4的全部頻寬。如果32位cpu所有位均為指令並對外可見cpu有4294967296+2電源的引腳數量。

所以說,目前的32位64位只是指暫存器數量大概是個什麼量級而已。

4樓:木頭龍

ARM的了解的比較少,這裡單說x86平台的。

從理論上來說,32位CPU乙個時鐘週期只能處理32bit寬度的資料,64位CPU乙個時鐘週期可以處理64bit寬度的資料。所以,如果同樣要處理64bit寬度的資料,32位CPU起碼需要兩個時鐘週期。但考慮到還需要額外的程式指令把兩個32bit資料進行拼接,往往會需要更多的時鐘週期。

然而——凡事就怕然而:

如果資料本身就是32bit,或者說32bit足夠表示某一類資料,例如單個無符號整數,在0到4,294,967,295之間,或者帶符號的-2,147,483,648到2,147,483,647,又或者單精度浮點數。32位和64位的CPU執行起來效能上幾乎沒有區別。而這個取值範圍,基本能涵蓋大部分實際業務所需要的處理的資料。

絕大部分需要計算效能的應用所處理的資料都是浮點數,而幾乎所有的32位CPU,都內建或者可以加配浮點運算單元(FPU)。以x86為例,從8087就支援IEEE 754-1985標準(8087、80187、80287原始版本是支援IEEE 754-1985草案,從80387開始完全相容IEEE 754-1985,80287XL實際是80387SX)[1]。而符合IEEE 754-1985,意味著FPU可以進行32bit單精度、64bit雙精度、80bit擴充套件精度的浮點運算——雖然不是每個運算指令都可以在乙個時鐘週期內完成,但是32bit、64bit、80bit資料的執行效率並沒有差別。

所以,綜合下來,64位CPU只有在處理64bit寬的整數(或者定點數)的時候會比32位CPU有效能優勢——但以現在的應用來說,使用這樣的資料的概率真的很小。所以,單純從32位和64位的區別來說,64位CPU比32位CPU在實際應用中的效能優勢非常有限。

當然,今天的64位CPU會有更多的暫存器,配合64位作業系統可以使用4G以上記憶體(其實很多32位CPU也可以使用4G以上記憶體,但需要CPU和作業系統都支援PAE擴充套件),單個64位應用可以使用2G以上記憶體,都有助於提高應用效能。但這些並不是32位和64位CPU的本質差別導致,32位CPU也可以增加指令集並且使用更多的暫存器,一台計算機雖然使用64位CPU也可能只安裝了2G記憶體。

題外話:這也是當年主流配置還是1G記憶體,2G記憶體算大的時候,Intel遲遲不願推動x86-64,單獨搞了個IA-64的安騰,結果導致被AMD搶先發布x86-64並得到微軟大力支援——至今相當多場合都稱之為amd64架構的重要原因。

[1]:x87 - Wikipedia

5樓:Luv Letter

題主這個問法多半是想要了解 x86 和 amd64 之間的效能差距。事實上來說 amd64 不僅僅把通用暫存器提公升到了 64bit,還增加了r8-r15八個通用暫存器。暫存器的增加一定程度影響到了呼叫約定,這樣一來在碰到多個引數的函式的時候可以不用把多的引數塞進記憶體棧或者拿個指標指向堆裡,減少不必要的訪存。

當然64bit本身資料結構會引起資料膨脹,比如指標會更佔空間,以 64bit 為基礎的資料型別的操作相比 32bit 更慢,還有就是對齊的難度增大,但是總的來說從歷史的角度看 x86 8 個通用暫存器還是太少了,amd64 的出現緩解了這一點。

另外放一張 armv8 下 aarch32 和 aarch64 的對比圖:

6樓:望山

比較典型的乙個差別是,無失真壓縮軟體在x64上比x86上快。winrar據說能快30%。這裡涉及兩個因素,第乙個因素是壓縮軟體涉及不定長位域的處理,一種通常做法是用乙個暫存器作為buffer,把資料湊滿乙個暫存器長度,才一次性寫入記憶體,這樣64位CPU就有比較大的buffer,減少了寫入記憶體的次數。

第二個因素是無失真壓縮需要的暫存器數量剛好比x86能提供的多出一兩個,x64新增的暫存器能顯著改善暫存器飢渴狀況。如果不限於INTEL體系,那麼前乙個因素還是存在的,只是影響不會有30%那麼大。

7樓:邵暉

其實如果沒有計算機基礎知識的話,你可以從另乙個角度來想。如果64位處理器能帶來大量的效能提公升的話,我們很快就會有128位,256位...處理器了。

8樓:

一般來說,主頻相同架構相同的情況下(比如同乙個cpu的64位模式和32位模式)沒啥差距。有一些64位更快的情況,比如對64位數的計算。但是,64位的情況下,部分指令的長度也會增加(特別是使用了指標型別的命令),從而程式變得更大(一般增大15-30%),對記憶體頻寬的消耗,對快取記憶體的消耗更大。

所以加加減減,對於大部分應用來說,沒大的差別。

64位模式可以定址更多的記憶體空間,這才是主要的好處。

9樓:風111

理論上純64位的效能釋放肯定不急32位的好很多,但是現在很多應用沒有64位所以只能採用相容的方式來進行執行,也就是64位相容32位程式。

32位CPU能否換成64位CPU?

sa123 很多答主都回答過了,多半是你系統裝成32位的了,我有個07年的t60p,因為主機板晶元限制沒法使用4G以上的記憶體,就這也只是主機板限制而不是CPU 所以你那個11年的電腦就更不可能是CPU的問題了。 愛好和平的老百姓 04年後的cpu基本全是64位,你的電腦比較早,如果執行的檔案較小且...

64位作業系統 CPU 如何相容32位程式 軟體 請看詳情。?

北極 要保證64位相容性,無非就是兩點 1.硬體相容 指令層面上 2.軟體相容 作業系統 因為以上兩點都能保證,所以自然32位程式能在相容32位程式的作業系統 CPU上跑。具體的形式 1.硬體相容 現有的x86架構的CPU,作業系統進入64位的工作模式都是相容32位的,即使在long mode模式下...

32位cpu一次定址多少位元組?

已登出 arm32支援乙個位元組,兩個位元組,乙個字32位,以及多個位元組的批處理,比如批量進出堆疊,但是中間有乙個cacha 的。估計樓主不玩彙編,這個都不是個事。 唐浩然 古老的故事中 處理器對記憶體的最小定址單位是位元組,記得intel的8086晶元,是16位的,但當時intel工程師給這處理...