2009-08-15 81 views
7

我敢肯定,我們都聽過64bit和32bit的術語,但它們究竟意味着什麼?64位/ 32位的低級優點和缺點是什麼?

我很確定他們必須處理內存地址的大小。在64位機器上,對象的引用是64位。但我想挖得更深一點....

  1. 人們經常會聽到「64位機器」一詞。計算機的哪一部分實際上面向的是位數?處理器?操作系統?

  2. 有更大的內存地址的優點是什麼?

我可以添加更多的問題,但我認爲簡短會更好。

感謝球員:d

+1

與http:// stackoverflow相同。com/questions/132930/32-vs-64-bits-what-the-big-deal – 2009-08-15 16:13:11

+0

儘管你已經提到了你的問題中的內存「深入一點」,但每個人仍然回答「這是內存」無論如何... – chakrit 2009-08-15 16:18:23

+0

它不是記憶。 – 2009-08-15 16:18:57

回答

15

64位是指寄存器寬度,內存尋址空間等。一個好處是能夠處理大於4GB的內存。

維基百科有an article on 64-bit computing與更多的細節。

編輯:優勢更多的內存是操作系統和程序有更多的虛擬尋址空間-16億兆字節(172億GB) - 更重要的是,更多的物理內存可以添加到一個系統並進行尋址,從而減少了虛擬內存與磁盤的交換。

更廣泛的寄存器和數據總線的優點是移動相同數量的數據更容易,更快速。需要兩個或更多寄存器的操作現在可以使用一個來完成。

因此,當軟件重新編譯爲64位時,性能通常會提高。

A 缺點是更廣泛的數據可能意味着更多的空間由相同的數據。例如,存儲數字300需要9位。如果存儲在32位整數中,則會浪費23位。在64位中,該浪費變爲55位。因此,如果不進行重新編譯,對64位的簡單重新編譯可以產生更快的速度,但稍微更臃腫的軟件。

編輯:也有64位技術的網頁這裏:

2
  1. CPU寄存器和存儲器尋址。

  2. 該系統可以引用(請參閱)更多的內存。

3
  • 64位系統可以直接處理顯著更多的內存
  • 64位系統可以處理的數據塊數據兩倍32位,這有助於一些操作去更快地

對於某些節目,像辦公自動化套件一樣,32位和64位的差別不大。但是對於其他應用程序(例如數據庫,圖形/視頻處理或託管虛擬機)來說,能夠一次訪問更多的物理內存並能夠使用每條指令處理更多信息可以使性能發生巨大差異。請注意,今天,許多32位芯片都具有64位擴展功能,因爲許多FPU(數學)或SSMD(矢量)操作已經在64位模式下完成。

有關更多信息,請參閱32-bit Vs. 64-bit Systems: What's The Difference?

+0

32位機器具有可以訪問超過4GB內存的硬件;任何特定的進程將僅限於「直接」訪問少於4GB,但在32位窗口中不支持超過4GB的決定與技術上的決定一樣是市場決定。 – supercat 2014-03-09 19:23:52

5

所不同的是恰好32位;-)

需要64位硬件(處理器)運行一個64位操作系統。 您需要一個64位操作系統來運行64位軟件。 這是依賴關係。

  • 在32位系統中,您僅限於尋址4 GiByte(2^32)內存,在64位中,理論極限爲2^64字節。
  • 64位的軟件需要稍多存儲器,主要用於指針是8個字節,而不是4
  • 在x86_64
  • ,64個可執行需要更多的存儲器,因爲有許多指令的額外操作碼,並且因此可以運行速度較慢
  • 在x86_64,64位軟件可以使用更多的寄存器,並且具有運行剛到主總線的寬度更快
+1

您的意思是「...在64位中有......」在第一個項目符號中。 – Thomas 2009-08-15 17:20:18

+0

感謝您指出錯字。 – hirschhornsalz 2009-08-15 21:02:33

+0

你的答案當然是正確的,但只是一個小評論。英特爾具有物理地址擴展(PAE),它具有允許36位地址的附加地址行,通過重新排列頁表層次結構,您可以獲得64 GB的虛擬內存空間。這就是爲什麼您可以在大多數32位Intel處理器上(在Pentium Pro之後)處理超過4 GB的RAM的原因。 – alps123 2009-08-18 22:18:17

-3

完全的64位或32位的參考電位。

+3

號 廢話。 有很多情況下,這是不正確的。 68008或8088,它有一個8位總線,32或16位的拱門,或者是老式的Pentium/II/III,或者Athlon/XP,它們都是64位的主總線,同時是32位結構。 – hirschhornsalz 2009-08-15 16:35:41

+0

啊......謝謝drhirsch,你帶回了回憶。 :) – 2009-08-15 21:06:02

2

讓我們回到基礎。

這些天的99%的計算機都基於什麼被稱爲Von Neumann architecture。本質上,計算機是在恆定週期:

  1. 從RAM
  2. 擷取的指令的CPU

alt text http://upload.wikimedia.org/wikipedia/commons/1/1c/Von_Neumann_architecture.png

上執行此命令當提及六十四分之三十二位系統(或任何其他位大小),基本上你是在談論計算機的體系結構和實現:

  • 內存空間大小(RAM)
  • CPU寄存器的大小
  • 總線大小(即,在CPU,RAM,I/O等之間......)

如果你有一個64位系統,你的地址空間爲2^64。這就是爲什麼32位系統不能有超過4GB的RAM。你如何解決大於2^32的內存空間?

至於性能上的差異,也沒有明確的答案(就像目前還沒有明確的答案,如果CISC或RISC架構是更好)。它很大程度上取決於您使用的應用程序。

綜上所述:一個64位體系結構是簡單地建立一個計算機的不同方式。這並不意味着它會更好,或者更糟糕,或者以不同的方式做事(在低級別上,每臺計算機都在執行抓取執行)。這只是實現計算機的一種不同方式。

2

我認爲最好的回答將是在86位x64彙編的比較

當您的X32位程序寄存器的變量,例如一個整數(5),該代碼相當於此:

push 5 

理解事物更好,「推X」是一個快捷方式:

sub esp,4 //substracts esp with 4(4*8=32 bits.That's the size of a pointer in x32 executables) in order to make space for our variable 
mov [esp],X //moves variable in @esp 

那些registeres是32位(4個字節長),這是一個指針的大小在任何32位編程 語言。

在64位代碼中,但是尺寸大兩倍,因此是registers.Our寄存器ESP存在於64可執行文件,但它沒有被廣泛使用,因爲它是在32倍的可執行文件。

而是所有registeres在其名字前得到一個「R」(EAX成爲RAX,ESP成爲RSP,EDX變得RDX等)。

因此,我們在64可執行代碼將不會被任何不同,除了快捷方式「推X」將是

sub esp,8 
mov [rsp],X 

RSP具有ESP的兩倍大小 - 64位,8個字節。

的底線是64位可執行使用比的X32位可執行更多的存儲器。