论坛风格切换切换到宽版
  • 3045阅读
  • 0回复

32位和64位CPU的区别 [复制链接]

上一主题 下一主题
离线海豚
 

发帖
15420
金钱
464413
威望
0
贡献值
1
只看楼主 倒序阅读 使用道具 0 发表于: 2011-01-30
昨天和大家一起回顾了一下近十几年来桌面CPU的发展历程,今天继续昨天的话题,介绍一下32位和64位CPU的区别,目前市面上出售的CPU,无论是INTEL或是AMD几乎都是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)的整数型数据。
一、架构影响
处理器中的暂存器通常可分为三种:整数、浮点数、其它。在所有常见的主流处理器中,只有整数暂存器(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 年,某些型号的 苹果公司 Macintosh 产生线转向 PowerPC 970 处理器(苹果公司称为“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 的存储器。
三、32位和64位CPU的区别
1、32位和64位一般是指CPU的通用寄存器位宽,所以64位的CPU位宽增加一倍。
2、可寻址范围大大扩展,32位系统支持最大内存位4G,64位系统理论支持最大内存2^64=18446,744,073,709,551,616,约1600万TB,相当于16EB。(实际还受制于操作系统和主板约束),实际的CPU尤其是这两年的CPU都是采取兼容设计的,内部总线不到64位,后期的CPU逐渐都会采用标准的64位,具体见下文。
3、32位系统和64位系统需要安装支持相应系统模式下的操作系统和驱动软件,也就是32位只能安装32位,64位安装64位的但可兼容32位运算。
4、目前约定俗成的x86就是代表32位操作系统,x64代表64位操作系统,思齐博客中出现很多操作系统标示比如(x86)——代表32位,(x64)——代表64位。
5、目前64位CPU标准有:AMD 64、EMT-64、IA-64。更多关于INTEL 64:http://zh.wikipedia.org/zh-cn/Intel_64
四、优缺点
一个常见的误解是:除非电脑安装的存储器大于 4 GB,否则 64 位架构不会比 32 位架构好。这不完全正确:
1、部分操作系统保留了一部分进程地址空间供操作系统使用,造成用户程序可用于映射存储器的地址空间减少。例如,Windows XP DLL 以及 userland OS 组件映射到每一个进程的地址空间,即使电脑装有 4 GB 的存储器,也仅留下 2 至 3.8 GB(端视其设置)的可用地址空间。这个限制在 64 位 Windows 中并不会出现。
2、文件的存储器映射对 32 位的架构而言不再合用,尤其是相对便宜的 DVD 刻录技术的引入。大于 4 GB 的文件不再罕见,且如此大的文件无法简单的映射到 32 位架构的存储器;只能映射文件的一部分范围到地址空间上,并以存储器映射访问文件,当有需要时,就必须将这些范围映射进或映射出地址空间。这是一个问题,因为充裕的存储器映射仍是从磁盘至存储器最有效率的访问方法,如果操作系统能适当实行的话。
64位CPU的使用优点有:64位的系统在视频编辑、文件搜索、科学计算、人工智能、平面设计、视频处理、3D动画和游戏、数据库以及各种网络服务器等方面具备更强大的优势,尤其是在工程制图、3D、音视频制作等领域的具有极佳的应用效果。64位系统效能发挥需要三大模块支撑:硬件、操作系统、上层软件。普通的32位软件是无法在64位操作系统上运行的。
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 位的驱动程序。
六、64 位处理器时间表
1961:IBM 发表 IBM 7030 Stretch 超级电脑。它使用 64 位数据字组,以及 32 或 64 位的指令字组。
1974:Control Data Corporation 推出 CDC Star-100 矢量超级电脑,它使用 64 位字组架构(先前的 CDC 系统是以 60 位架构为基础)。
1976:Cray Research 发表第一台 Cray-1 超级电脑。它以 64 位字组架构为基础,它成为后来的 Cray 矢量超级电脑的基础。
1983:Elxsi 推出 Elxsi 6400 平行微型超级电脑。Elxsi 架构具有 64 位数据暂存器,不过地址空间仍是 32 位。
1991:MIPS科技公司生产第一台 64 位微处理器,作为 MIPS RISC 架构 R4000 的第三次修订版本。该款 CPU 使用于以 IRIS Crimson 启动的 SGI 图形工作站。然而,IRIX 操作系统并未包含对 R4000 的 64 位支持,直到 1996 年释出 IRIX 6.2 为止。Kendall Square Research 发表他们的第一台 KSR1 超级电脑,以专有的运行于 OSF/1 的 64 位 RISC 处理器架构为基础。
1992:Digital Equipment Corporation(DEC)引入纯 64 位 Alpha 架构,其诞生自 PRISM 项目。
1993:DEC 释出 64 位 OSF/1 AXP 类Unix 操作系统(后来改名为 Tru64 UNIX)和 OpenVMS 操作系统给 Alpha 系统。
1994:Intel 宣布 64 位 IA-64 架构的进度表(与 HP 共同开发)作为其 32 位 IA-32 处理器的继承者。以 1998–1999 推出时间为目标。SGI 释出 IRIX 6.0,即支持 64 位的 R8000 CPU。
1995:Sun 推出 64 位 SPARC 处理器 UltraSPARC。富士通所有的 HAL 电脑系统推出以 64 位 CPU 为基础的工作站,HAL 独立设计的第一代 SPARC64。IBM 释出 64 位 AS/400 系统,能够转换操作系统、数据库、应用程序的升级。DEC 释出 OpenVMS Alpha 7.0,第一个全 64 位版本的 OpenVMS for Alpha。
1996:HP 释出 PA-RISC 处理器架构的 64 位 2.0 版本的实现 PA-8000。 任天堂引入 Nintendo 64 电视游戏主机,以低成本的 MIPS R4000 变体所打造。
1997:IBM 释出 RS64 全 64 位 PowerPC 处理器。
1998:IBM 释出 POWER3 全 64 位 PowerPC/POWER 处理器。Sun 释出 Solaris 7,以完整支持 64 位 UltraSPARC。
1999:Intel 释出 IA-64 架构的指令集。AMD 首次公开 64 位集以扩充给 IA-32,称为 x86-64(后来改名为 AMD64)。
2000:IBM 推出他自己的第一个兼容 ESA/390 的 64 位大型机 zSeries z900,以及新的 z/OS 操作系统。紧接着是 64 位 Linux on zSeries。
2001:Intel 终于推出他的 64 位处理器产品线,标记为 Itanium,主打顶级服务器。它无法满足人们的期待,因一再拖延 IA-64 市场而导致失败。Linux 是第一个可运行于该处理器的操作系统。
2002:Intel 引入 Itanium 2 作为 Itanium 的继承者。
2003:AMD 产出他的 AMD64 架构 Opteron 以及 Athlon 64 处理器产品线。苹果也推出了64 位“G5”PowerPC 970 CPU courtesy of IBM,并连同升级他的 Mac OS X 操作系统,其增加对 64 位模式的部分支持。若干 Linux 发行版本释出对 AMD64 的支持。微软宣布将为 AMD 芯片创建新的 Windows 操作系统。Intel 坚持 Itanium 芯片仍维持只有 64 位的处理器。
2004:Intel 承认 AMD 在市场上的成功,并着手开发 AMD64 延伸的替代品,称为 IA-32e,稍后改名为 EM64T。升级版本的 Xeon 和 Pentium 4 处理器家族支持了新推出的指令。Freescale 宣布 64 位 e700 core,以继承 PowerPC G4 系列。VIA Technologies 宣布 64位的Isaiah处理器。
2005:Sun 于1月31日释出支持AMD64 和EM64T处理器的Solaris10。3 月,Intel宣布他的第一个双核心EM64T 处理器Pentium Extreme Edition 840和新的Pentium D芯片将于2005第二季推出。4 月30日,微软公开释出提供给AMD64和EM64T处理器的Windows XP Professional x64 Edition。5 月,AMD引入他的第一个双核心AMD64 Opteron 服务器CPU,并宣布其桌面型版本,称为Athlon 64 X2。将原本的Athlon 64 X2 (Toledo) 处理器改为两个核心,并为每个核心的L2配上1 MB高速缓存,以大约2.332亿个晶体管组成。它有199 mm² 那么大。7 月,IBM 宣布他最新的双核心 64 位PowerPC 970MP (codenamed Antares),由IBM和Apple使用。微软释出Xbox 360游戏主机,其使用由IBM生产的64位、三核心Xenon PowerPC处理器。
2006:双核心 Montecito Itanium 2 处理器进入生产。Sony、IBM、Toshiba 开始生产用于 PlayStation 3、服务器、工作站以及其它应用的 64 位 Cell 处理器。苹果公司在新的 Mac Pro 和 Intel Xserve 电脑中采用 64 位 EM64T Xeon 处理器,稍后更新 iMac、MacBook、MacBook Pro 使用 EM64T Core 2 处理器。
七、128位CPU
直至 2007 年,64 位字组似乎已满足大部分的运用。不过仍应提到,IBM 的 System/370 及后继者使用 128 位浮点数,且许多现代处理器也内含 128 位浮点数暂存器。System/370 及后继者尤其显著,在这方面,他们也使用多达 16 位组的可变长度十进制数(即 128 位)。
前面说了这么多,可能涉及一些专业知识及术语,可能有些朋友看后觉得云里雾里的,不太明白,简单点来说,64位CPU比32位在处理数据等方面都有了很大的提升,虽然现在大多数CPU都是64位的,但要发挥64位CPU的性能离不开硬件、操作系统和上层软件的支持,这也是目前64位系统目前发展所需要解决的问题。
注明:本文参考引用资料出处有:参考一参考二
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
我爱潜水!
快速回复
限100 字节
 
上一个 下一个