要看你用多大的整数了Enigma 写了:整数运算性能差别大约1倍
64位和32位ubuntu性能差别明显不?
- ving
- 帖子: 3741
- 注册时间: 2007-07-29 16:47
- 来自: 地精魔法学院
- ving
- 帖子: 3741
- 注册时间: 2007-07-29 16:47
- 来自: 地精魔法学院
- boydd
- 帖子: 255
- 注册时间: 2007-05-10 19:42
- 来自: 南京, Deutschland, Karlsruhe
- 联系:
转一下wiki百科上有关64bit的评价
在计算机架構中,64 位整數、内存地址或其他数据單元,是指它們最高達到 64 位(8字节)寬。此外,64 位 CPU 和算術邏輯單元架構是以寄存器、内存总线或者数据总线的大小為基準。
64 位 CPU 在 1960 年代,便已存在於超級计算机,且早在 1990 年代,就有以 RISC 為基礎的工作站和服务器。2003 年才以 x86-64 和 64 位 PowerPC 處理器架構的形式引入到(在此之前是 32 位)個人计算机領域的主流。
一個 64 位的 CPU,內部可能有外部数据总线或不同大小的地址总线,可能比較大或比較小;術語「64位」也常用於描述這些总线的大小。例如,目前有許多機器有著使用 64 位总线的 32 位處理器(如最初的 Pentium 和之後的 CPU),因此有時會被稱作「64位」。同樣的,某些 16 位處理器(如 MC68000)指的是 16/32 位處理器具有 16 位的总线,不過內部也有一些 32 位的性能。這一術語也可能指计算机指令集的指令長度,或其它的数据項(如常見的 64 位雙精度浮點數)。去掉進一步的條件,「64位」计算机架構一般具有 64 位寬的整數型寄存器,它可支持(內部和外部兩者) 64 位「區塊」(chunk)的整數型数据。
64 位 CPU 在 1960 年代,便已存在於超級计算机,且早在 1990 年代,就有以 RISC 為基礎的工作站和服务器。2003 年才以 x86-64 和 64 位 PowerPC 處理器架構的形式引入到(在此之前是 32 位)個人计算机領域的主流。
一個 64 位的 CPU,內部可能有外部数据总线或不同大小的地址总线,可能比較大或比較小;術語「64位」也常用於描述這些总线的大小。例如,目前有許多機器有著使用 64 位总线的 32 位處理器(如最初的 Pentium 和之後的 CPU),因此有時會被稱作「64位」。同樣的,某些 16 位處理器(如 MC68000)指的是 16/32 位處理器具有 16 位的总线,不過內部也有一些 32 位的性能。這一術語也可能指计算机指令集的指令長度,或其它的数据項(如常見的 64 位雙精度浮點數)。去掉進一步的條件,「64位」计算机架構一般具有 64 位寬的整數型寄存器,它可支持(內部和外部兩者) 64 位「區塊」(chunk)的整數型数据。
- boydd
- 帖子: 255
- 注册时间: 2007-05-10 19:42
- 来自: 南京, Deutschland, Karlsruhe
- 联系:
架構影響
處理器中的寄存器通常可分為三種︰整數、浮點數、其它。在所有常見的主流處理器中,只有整數寄存器(integer register)才可存放指针值(内存数据的地址)。非整數寄存器不能存放指针來讀寫内存,因此不能用來避開任何受到整數寄存器大小所影響的内存限制。
幾乎所有常見的主流處理器(大部分的 ARM 和 32 位 MIPS 實作是明顯的例外)集成了浮點數硬件,它有可能使用 64 位寄存器保存数据,以供處理。例如,x86 架構包含了 x87 浮點數指令,並使用 8 個 80 位寄存器構成堆栈結構。後來的 x86 修改版和 x86-64 架構,又加入 SSE 指令,它使用 8 個 128 位寬的寄存器(在 x86-64 中有 16 個寄存器)。與之相較,64 位 Alpha 系列處理器,除了 32 個 64 位寬整數寄存器以外,也定義了 32 個 64 位寬的浮點數寄存器。
[编辑]
内存限制
目前大部分的 CPU(截至 2005 年),其單個寄存器可存放虚拟内存中任意数据的内存地址(本機)。因此,虚拟内存(计算机在程序的工作區域中所能保留的数据總量)中可用的地址取決於寄存器的寬度。自 1960 年的 IBM System/360 起,然後 1970 年 的 DEC VAX 微型计算机,以及 1980 年 中期的 Intel 80386,在事實上一致開發合用的 32 位大小的寄存器。32 位寄存器意味著 232 的地址,或可使用 4 GB 的内存。當時在設計這些架構時,4 GB 的内存遠遠超過一般所安裝的可用量,而認為已足夠用於定址。認為 4 GB 地址為合適的大小,還有其它重要的理由︰在应用程序中,如数据库,42 億多的整數已足夠對大部分可計算的实例分配唯一的參考引用。
然而在 1990 年初,成本不斷降低的内存,使安裝的内存數量逼近 4 GB,且在處理某些类型的問題時,可以想像虚拟内存的使用空間將超過 4 GB 上限。為此,一些公司開始釋出新的 64 位架構芯片家族,最初是提供給超級计算机、頂級工作站和服务器機器。64 位運算逐漸流向個人计算机,在 2003 年,某些型號的 Apple Macintosh 產生線轉向 PowerPC 970 處理器(Apple 稱為「G5」),並在 2006 年,轉向 EM64T 處理器,且 x86-64 處理器在頂級的 PC 中遂漸普及。64 位架構的出現,有效的將内存上限提升至 264 地址,相當於 1844 多京或 16 EB 的内存。從這個角度來看,在 4 MB 主内存很普遍時,最大的内存上限 232 的地址大約是一般安裝内存的 1000 倍。如今,當 1 GB 的主内存很普遍時,264 的地址上限大約是 1 百億倍。
今天市面上大部分的消費級 PC 存在著人為的内存限制,因受限於实例上的限制,而幾乎不太可能需要完整支持 16 EB 容量。舉例來說,Apple 的 Mac Pro 最多可安裝实例内存至 16 GB,而無必要支持超過的大小。最新的 Linux 内核(版本 2.6.16)可編譯成最高支持 64 GB 的内存。
處理器中的寄存器通常可分為三種︰整數、浮點數、其它。在所有常見的主流處理器中,只有整數寄存器(integer register)才可存放指针值(内存数据的地址)。非整數寄存器不能存放指针來讀寫内存,因此不能用來避開任何受到整數寄存器大小所影響的内存限制。
幾乎所有常見的主流處理器(大部分的 ARM 和 32 位 MIPS 實作是明顯的例外)集成了浮點數硬件,它有可能使用 64 位寄存器保存数据,以供處理。例如,x86 架構包含了 x87 浮點數指令,並使用 8 個 80 位寄存器構成堆栈結構。後來的 x86 修改版和 x86-64 架構,又加入 SSE 指令,它使用 8 個 128 位寬的寄存器(在 x86-64 中有 16 個寄存器)。與之相較,64 位 Alpha 系列處理器,除了 32 個 64 位寬整數寄存器以外,也定義了 32 個 64 位寬的浮點數寄存器。
[编辑]
内存限制
目前大部分的 CPU(截至 2005 年),其單個寄存器可存放虚拟内存中任意数据的内存地址(本機)。因此,虚拟内存(计算机在程序的工作區域中所能保留的数据總量)中可用的地址取決於寄存器的寬度。自 1960 年的 IBM System/360 起,然後 1970 年 的 DEC VAX 微型计算机,以及 1980 年 中期的 Intel 80386,在事實上一致開發合用的 32 位大小的寄存器。32 位寄存器意味著 232 的地址,或可使用 4 GB 的内存。當時在設計這些架構時,4 GB 的内存遠遠超過一般所安裝的可用量,而認為已足夠用於定址。認為 4 GB 地址為合適的大小,還有其它重要的理由︰在应用程序中,如数据库,42 億多的整數已足夠對大部分可計算的实例分配唯一的參考引用。
然而在 1990 年初,成本不斷降低的内存,使安裝的内存數量逼近 4 GB,且在處理某些类型的問題時,可以想像虚拟内存的使用空間將超過 4 GB 上限。為此,一些公司開始釋出新的 64 位架構芯片家族,最初是提供給超級计算机、頂級工作站和服务器機器。64 位運算逐漸流向個人计算机,在 2003 年,某些型號的 Apple Macintosh 產生線轉向 PowerPC 970 處理器(Apple 稱為「G5」),並在 2006 年,轉向 EM64T 處理器,且 x86-64 處理器在頂級的 PC 中遂漸普及。64 位架構的出現,有效的將内存上限提升至 264 地址,相當於 1844 多京或 16 EB 的内存。從這個角度來看,在 4 MB 主内存很普遍時,最大的内存上限 232 的地址大約是一般安裝内存的 1000 倍。如今,當 1 GB 的主内存很普遍時,264 的地址上限大約是 1 百億倍。
今天市面上大部分的消費級 PC 存在著人為的内存限制,因受限於实例上的限制,而幾乎不太可能需要完整支持 16 EB 容量。舉例來說,Apple 的 Mac Pro 最多可安裝实例内存至 16 GB,而無必要支持超過的大小。最新的 Linux 内核(版本 2.6.16)可編譯成最高支持 64 GB 的内存。
- boydd
- 帖子: 255
- 注册时间: 2007-05-10 19:42
- 来自: 南京, Deutschland, Karlsruhe
- 联系:
32 與 64 位
從 32 位到 64 位架構的改變是一個根本的改變,因為大多數操作系统必須進行全面性修改,以取得新架構的優點。其它软件也必須進行移植,以使用新的性能;較舊的软件一般可藉由硬件兼容模式(新的處理器支持較舊的 32 位版本指令集)或软件模擬進行支持。或者直接在 64 位處理器裡面實作 32 位處理器内核(如同 Intel 的 Itanium 處理器,其內含有 x86 處理器内核,用來執行 32 位 x86 应用程序)。支持 64 位架構的操作系统,一般同時支持 32 位和 64 位的应用程序。
明顯的例外是 AS/400,其软件執行在虛擬的指令集架構,稱為 TIMI(技術獨立機器界面),它會在執行之前,以低階软件轉換成本地机器码。低階软件必須全部重寫,以搬移整個 OS 以及所有的软件到新的平台。例如,當 IBM 轉移較舊的 32/48 位「IMPI」指令集到 64 位 PowerPC(IMPI 完全不像 32 位 PowerPC,所以這比從 32 位版本的指令集轉移到相同指令集的 64 位版本的規模還要龐大)。
64 位架構無疑可應用在需要處理大量数据的应用程序,如数码视频、科學運算、和早期的大型数据库。在其它工作方面,其 32 位兼容模式是否會快過同等級的 32 位系統,這部分已有很多爭論。在 x86-64 架構(AMD64 和 Intel 64)中,主要的 32 位操作系统和应用程序,可平滑的執行於 64 位硬件上。
Sun 的 64 位 Java 虛擬機的啟動速度比 32 位虛擬機還慢,因為 Sun 仍假定所有的 64 位機器都是服务器,而且只有為 64 位平台實作「服务器」編譯器(C2)。[1]「客戶端」編譯器(C1)產生較慢的代碼,不過編譯較快速。所以儘管在 64 位 JVM 的 Java 程序在一段很長的週期會執行的較好(一般為長時間運作的「服务器」应用程序),它的啟動時間可能更久。對於短生命期的应用程序(如 Java 編譯器 javac) 增加啟動時間可控制執行時間,使 64 位的 JVM 整體變慢。
應當指出,在比較 32 位和 64 位處理器時,速度並不是唯一的考量因素。应用程序,如多任务、應力測試(stress testing)、叢集(clustering)(用於HPC)可能更適合 64 位架構以正確部署。為了以上原因,64 位叢集已廣泛部署於大型組織,如 IBM、Vodafone、HP、微軟。
優缺點
一個常見的誤解是︰除非计算机安裝的内存大於 4 GB,否則 64 位架構不會比 32 位架構好。這不完全正確︰
部分操作系统保留了一部分进程地址空間供操作系统使用,造成使用者程序可用於映射内存的地址空間減少。例如,Windows XP DLL 以及 userland OS 组件映射到每一個进程的地址空間,即使计算机裝有 4 GB 的内存,也僅留下 2 至 3.8 GB(端視其设置)的可用地址空間。這個限制在 64 位 Windows 中並不會出現。
文件的内存映射對 32 位的架構而言不再合用,尤其是相對便宜的 DVD 燒錄技術的引入。大於 4 GB 的文件不再罕見,且如此大的文件無法簡單的映射到 32 位架構的内存;只能映射文件的一部分範圍到地址空間上,並以内存映射存取文件,當有需要時,就必須將這些範圍映射進或映射出地址空間。這是一個問題,因為充裕的内存映射仍是從磁盘至内存最有效率的存取方法,如果操作系统能適當實行的話。
64 位架構主要的缺點是,相對於 32 位架構,佔用相同的数据會消秏更多的内存空間(由於腫漲的指针,以及其它型態和對齊補白等可能)。這會增加进程對内存的需求,且可能會影響高效能處理器高速缓存的使用。維持一部分的 32 位模型是一個處理方法,且大致合理有效。實際上,高效能導向的 z/OS 操作系统便採取這個方法,要求程序代碼存放在 32 位地址空間的任一數字,数据对象則可(選擇性)存放在 64 位區域。
目前主要的商業软件是建立在 32 位代碼,而非 64 位代碼,所以不能取得在 64 位處理器上較大的 64 位地址空間,或較寬的 64 位寄存器和数据路徑的優點。然而,免費或自由软件操作系统的使用者已經可以使用專有的 64 位運算環境。並非所有的应用程序都需要大量的地址空間或操作 64 位数据項,所以這些程序不會享受到較大的地址空間或較寬的寄存器和数据路徑的好處;主要受益於 64 位版本的应用程序,並不會享受到使用 x86 的版本,會有更多的寄存器可以使用。
软件的可用性
64 位系統有時缺乏對應的软件,那些软件是寫給 32 位架構。最嚴重的問題是不兼容的驅動程序。儘管大部分软件可執行於 32 位兼容模式(又稱作模擬模式,即微軟 WoW64 技術),其通常無法執行驅動程序(或类似软件),因為程序通常執行於操作系统和硬件之間,在此直接模擬無法使用。許多開放源始碼软件封包可簡單的從源始碼編譯為可執行於 64 位環境操作系统,如 Linux。所需的條件是供給 64 位機器的編譯器(通常是 gcc)。目前大部分 64 位版本的驅動程序還不能用,由於缺少可用的驅動程序,所以使用 64 位操作系统會有挫折。
因為设备的驅動程序通常執行於操作系统内核(kernel)的內部,有可能以 32 位进程執行内核,同時支持 64 位的使用者进程。以在内核裡的額外消耗為代價,如此可為使用者提供受益於 64 位的内存和效能,且不破壞現存 32 位驅動程序的二進制兼容性。這個機制源於 Mac OS X 啟用 64 位进程,同時支持 32 位的驅動程序。
從 32 位到 64 位架構的改變是一個根本的改變,因為大多數操作系统必須進行全面性修改,以取得新架構的優點。其它软件也必須進行移植,以使用新的性能;較舊的软件一般可藉由硬件兼容模式(新的處理器支持較舊的 32 位版本指令集)或软件模擬進行支持。或者直接在 64 位處理器裡面實作 32 位處理器内核(如同 Intel 的 Itanium 處理器,其內含有 x86 處理器内核,用來執行 32 位 x86 应用程序)。支持 64 位架構的操作系统,一般同時支持 32 位和 64 位的应用程序。
明顯的例外是 AS/400,其软件執行在虛擬的指令集架構,稱為 TIMI(技術獨立機器界面),它會在執行之前,以低階软件轉換成本地机器码。低階软件必須全部重寫,以搬移整個 OS 以及所有的软件到新的平台。例如,當 IBM 轉移較舊的 32/48 位「IMPI」指令集到 64 位 PowerPC(IMPI 完全不像 32 位 PowerPC,所以這比從 32 位版本的指令集轉移到相同指令集的 64 位版本的規模還要龐大)。
64 位架構無疑可應用在需要處理大量数据的应用程序,如数码视频、科學運算、和早期的大型数据库。在其它工作方面,其 32 位兼容模式是否會快過同等級的 32 位系統,這部分已有很多爭論。在 x86-64 架構(AMD64 和 Intel 64)中,主要的 32 位操作系统和应用程序,可平滑的執行於 64 位硬件上。
Sun 的 64 位 Java 虛擬機的啟動速度比 32 位虛擬機還慢,因為 Sun 仍假定所有的 64 位機器都是服务器,而且只有為 64 位平台實作「服务器」編譯器(C2)。[1]「客戶端」編譯器(C1)產生較慢的代碼,不過編譯較快速。所以儘管在 64 位 JVM 的 Java 程序在一段很長的週期會執行的較好(一般為長時間運作的「服务器」应用程序),它的啟動時間可能更久。對於短生命期的应用程序(如 Java 編譯器 javac) 增加啟動時間可控制執行時間,使 64 位的 JVM 整體變慢。
應當指出,在比較 32 位和 64 位處理器時,速度並不是唯一的考量因素。应用程序,如多任务、應力測試(stress testing)、叢集(clustering)(用於HPC)可能更適合 64 位架構以正確部署。為了以上原因,64 位叢集已廣泛部署於大型組織,如 IBM、Vodafone、HP、微軟。
優缺點
一個常見的誤解是︰除非计算机安裝的内存大於 4 GB,否則 64 位架構不會比 32 位架構好。這不完全正確︰
部分操作系统保留了一部分进程地址空間供操作系统使用,造成使用者程序可用於映射内存的地址空間減少。例如,Windows XP DLL 以及 userland OS 组件映射到每一個进程的地址空間,即使计算机裝有 4 GB 的内存,也僅留下 2 至 3.8 GB(端視其设置)的可用地址空間。這個限制在 64 位 Windows 中並不會出現。
文件的内存映射對 32 位的架構而言不再合用,尤其是相對便宜的 DVD 燒錄技術的引入。大於 4 GB 的文件不再罕見,且如此大的文件無法簡單的映射到 32 位架構的内存;只能映射文件的一部分範圍到地址空間上,並以内存映射存取文件,當有需要時,就必須將這些範圍映射進或映射出地址空間。這是一個問題,因為充裕的内存映射仍是從磁盘至内存最有效率的存取方法,如果操作系统能適當實行的話。
64 位架構主要的缺點是,相對於 32 位架構,佔用相同的数据會消秏更多的内存空間(由於腫漲的指针,以及其它型態和對齊補白等可能)。這會增加进程對内存的需求,且可能會影響高效能處理器高速缓存的使用。維持一部分的 32 位模型是一個處理方法,且大致合理有效。實際上,高效能導向的 z/OS 操作系统便採取這個方法,要求程序代碼存放在 32 位地址空間的任一數字,数据对象則可(選擇性)存放在 64 位區域。
目前主要的商業软件是建立在 32 位代碼,而非 64 位代碼,所以不能取得在 64 位處理器上較大的 64 位地址空間,或較寬的 64 位寄存器和数据路徑的優點。然而,免費或自由软件操作系统的使用者已經可以使用專有的 64 位運算環境。並非所有的应用程序都需要大量的地址空間或操作 64 位数据項,所以這些程序不會享受到較大的地址空間或較寬的寄存器和数据路徑的好處;主要受益於 64 位版本的应用程序,並不會享受到使用 x86 的版本,會有更多的寄存器可以使用。
软件的可用性
64 位系統有時缺乏對應的软件,那些软件是寫給 32 位架構。最嚴重的問題是不兼容的驅動程序。儘管大部分软件可執行於 32 位兼容模式(又稱作模擬模式,即微軟 WoW64 技術),其通常無法執行驅動程序(或类似软件),因為程序通常執行於操作系统和硬件之間,在此直接模擬無法使用。許多開放源始碼软件封包可簡單的從源始碼編譯為可執行於 64 位環境操作系统,如 Linux。所需的條件是供給 64 位機器的編譯器(通常是 gcc)。目前大部分 64 位版本的驅動程序還不能用,由於缺少可用的驅動程序,所以使用 64 位操作系统會有挫折。
因為设备的驅動程序通常執行於操作系统内核(kernel)的內部,有可能以 32 位进程執行内核,同時支持 64 位的使用者进程。以在内核裡的額外消耗為代價,如此可為使用者提供受益於 64 位的内存和效能,且不破壞現存 32 位驅動程序的二進制兼容性。這個機制源於 Mac OS X 啟用 64 位进程,同時支持 32 位的驅動程序。
- boydd
- 帖子: 255
- 注册时间: 2007-05-10 19:42
- 来自: 南京, Deutschland, Karlsruhe
- 联系:
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
这种文章你也看?
"最简单的一个好处是,64位硬件使得系统能够利用超过4GB的内存空间。"
一般32位PC的地址线有36根,通过PAE机制,32位系统能使用64G内存。
作者只针对了windows和MAC OS,对Linux只字不提。因此原文对Linux不适用,64位的windows缺乏易用性
倒是个问题,但是linux不同于windows和MAC OS,一般软件都是以源码形式提供的,大部分软件可以用64位
编译器编译得到64位版本,Linux的mutilib也做得很好,可以直接在64位下运行32位的软件,这已经是几年前
的技术了,但是在windows和MAC世界做得并不好。
至少显卡,USB设备,声卡,硬盘,读卡器,打印机,网卡等设备的64位驱动很多
还有多少神奇的设备找不到64位驱动?
网上一些劣质文章的危害性实在太大了
"最简单的一个好处是,64位硬件使得系统能够利用超过4GB的内存空间。"
一般32位PC的地址线有36根,通过PAE机制,32位系统能使用64G内存。
作者只针对了windows和MAC OS,对Linux只字不提。因此原文对Linux不适用,64位的windows缺乏易用性
倒是个问题,但是linux不同于windows和MAC OS,一般软件都是以源码形式提供的,大部分软件可以用64位
编译器编译得到64位版本,Linux的mutilib也做得很好,可以直接在64位下运行32位的软件,这已经是几年前
的技术了,但是在windows和MAC世界做得并不好。
至少显卡,USB设备,声卡,硬盘,读卡器,打印机,网卡等设备的64位驱动很多
还有多少神奇的设备找不到64位驱动?
网上一些劣质文章的危害性实在太大了
目前负债150多万
- boydd
- 帖子: 255
- 注册时间: 2007-05-10 19:42
- 来自: 南京, Deutschland, Karlsruhe
- 联系:
不见得吧,很多厂家不要说不提供源码,就是linux版本的都不一定提供。但是linux不同于windows和MAC OS,一般软件都是以源码形式提供的
cnetnews也算比较专业的IT资讯网站,你钩的那句也的确有问题,但是不代表这篇文章是没有价值的。
现在网上哪片文章没几个错误呢?
而且我并没有否者64位的优势和趋势,但是就目前统计以及分析来看,32位仍是个人PC的主流,64位在服务器端已有王者风范,这个就是目前的现状。而且32位还会主流3到4年。
我本人也是一个linux fans,但是比起windows,哪个OS上驱动更丰富,这个我想不用讨论。
连驱动这么丰富的windows的64位都不能流行起来,那么linux上驱动会好到哪里去呢?
的确我不否认,你可以找到你可以搞定你目前所用设备的所有64位驱动,任何开源软件都可以编译成64位版本。
但是我提供的文章还有观点表达的意思是一个整体的现象和趋势。
所以,一句话概之,我的观点是:目前还是推荐安装32位的OS,鼓励尝试64位OS。
-
- 帖子: 101
- 注册时间: 2006-06-24 20:03