选择显示字体大小

更快、更强 64位编程的三十二条军规


  即使目前没有为纳米电子学、空气动力学、分子静力学、细胞生命周期建模等等编写高级应用程序,说不定以下这32条规则,对你向更高级处理器移植程序会有所帮助。

  近期以来,似乎大家都在谈及64位计算,如采用amd athlon 64处理器的笔记本、采用ibm powerpc 970芯片的apple g5、又或intel itanium架构是否会被取消,对此,it界和新闻界似乎都还没有尽兴。新一轮处理器所带来的冲击,不仅表现在改善数据库执行效率、提高图形程序速度上,也为编写解决世界上最复杂科学问题的应用程序,铺平了道路。

  不管怎样,想利用64位处理器带来的好处,不只是仅仅拷贝一个程序到一台新计算机上那样简单,至少,应用程序需要用64位库重新编译,而最坏的情况就是需要重写整个程序,以便去除不可移植的指针算法等其他麻烦。即使这样,新的应用程序也不一定比在旧的32位平台上运行得更好。

  幸运的是,要弄清楚在开始之前需要做哪些工作,还是比较容易的,特别是相关处理器的性能和局限,同样地,只要遵循一定的规则,就能以最少的改动换来期望的结果。为了让大家有个好的开始,特拟出了以下32条“军规”,其中包括了开发64位应用程序所必须了解的技术和信息。

  首先,有小小不利因素

  1、64位处理器不是最近几年才发明的,差不多在十年前,dec和sun公司就推出了用于高端服务器的64位处理器,motorola公司也于不久后的1996年推出了它的powerpc 620处理器,甚至在同年,任天堂公司也推出了它的nintendo 64游戏系统。可直到近两年,随着amd athlon 64和ibm powerpc 970处理器的面世,人们才开始关注到64位计算的到来。随着这些处理器应用于桌面系统,分析家们开始预测,32位计算即将灭亡(可能稍微有点过早)。

  2、64位架构处理器就本身而言,不会在速度上两倍于32位的同等处理器。为什么呢,因为64位这个术语,只是简单地描述了处理器通用寄存器的大小,虽然这个大小决定了一次可处理的数据量,但并不代表数据处理的速度。

  3、某些应用程序在64位处理器上运行,可能实际上会较在同等的32位处理器上慢,主要是因为64位地址在缓存中占用了更多的空间,反而降低了缓存命中率。在tony bourke的一份对sun ultra 5工作站的独立调查报告中指出,不大量执行数据运算的程序,在64位平台上可能会降低20%的缓存命中率。“数据类型的扩大,如指针,意味着要占用更多的内存,此时内存成了瓶颈”,suse linux项目经理andreas jaeger也表示,“在64位平台上,因为内存开销的增加,所以程序进行指针跟踪可能会更慢”。 接下来有好消息

  4、那为什么还需要64位处理器呢?其中的一个原因是,更宽的寄存器位可以一次处理更大的数字值。在32位系统上,2的32次方再加上1会引起溢出,因为在32位寄存器上,没有更多的位可以存储这个数值。而在许多编程语言中,由于提供了特殊的64位结构,所以开发32位程序的程序员一般都靠此来解决数值溢出这个问题,实际上,这些结构体需要处理器在两个32位寄存器上执行两次操作,这对那些需要经常执行复杂数学运算的程序来说,这个方法在执行效率上并没有优势。而64位处理器不再需要两个寄存器,这样,在科学计算领域中,程序员就可以编写出在更短的时间内解决更复杂问题的程序,一个最明显的例子就是virginiatech x超级计算机,由1100个apple的双g5处理器构成,现在它是世界上排名第三的超级计算机。根据apple公司的说法,g5处理器是被设计用来运行纳米电子学、化学、生物化学、空气动力学、分子静力学、细胞生命周期建模和计算声学等等高级应用程序的。

  5、另一个64位计算的受益者是视频编辑(和渲染)。64位系统所带来的强大计算能力,对视频程序开发者来说,无疑是个好消息,以往那些需要解码大段视频的程序,如今可以更快更复杂。这对视频游戏业来说,更加如此,游戏开发者一直都在寻找新的方法来显现更加逼真的场景。

  6、某些64位处理器有一些特殊的功能,这使得它们在速度上可以完全超越32位处理器。举例来说,amd x84-64处理器有16个通用寄存器——比它的32位前辈多8个,powerpc处理器有32个通用寄存器,而安腾(itanium)有128个(虽然其中只有8个对程序员来说是可见的,另外120个由处理器按需分配)。就以上来说,应用程序可以在处理器内部保存更多的数据,以便随时取用,比起以往那种在需要数据时,再从内存里加载要好多了。

  “apple g5处理器内部包含两个64位浮点单元,在音频创建、3d渲染和科学计算等依赖于浮点运算的领域,可谓功不可没。”apple开发者关系协会发言人anuj nayar如是说,“它同样也包含了两个64位整数单元,在计算大数值整数时,可极大地提高效率。”

  7、在amd opteron和athlon 64处理器上,如果要进行字节操作,此处有一个额外的优势,可以使用16个通用寄存器的低字节位,这意味着应用程序不再需要把数据在一些特殊的寄存器中挪来挪去。

  8、另一个amd x86-64处理器架构带来的好处就是,可以允许应用程序使用指令指针,来帮助计算函数和变量在共享库中的地址。如果没有这种rip(相关指令指针),应用程序就必须使用一个额外的寄存器,这样在每个函数调用之前,都要花一些时间来设置这个寄存器。

  9、如果为apple g5 (powerpc 970)处理器编译程序时,使用了g5内建的平方根函数,那么性能将有极大的提升。就如大多数针对处理器的优化一样,在编译程序时,也必须进行正确的设置,才可以让编译器尽可能地使用这些新功能。当然,如果程序中不使用平方根函数,或者使用得很少,那对程序在速度上的表现就没太多的帮助。另外,使用这些函数可能会增大可执行文件的大小。

  10、64位系统允许应用程序一次直接寻址访问超过4gb的内存,而32位程序被限制在4gb以内,原因是32位寄存器最大只能保存数值2的32次方-1。一旦使用64位的寄存器,程序便可寻址到264,理论上可以访问18pb(18千兆兆字节)的内存,这差不多相当于32位的40亿倍(实际可寻址的内存数,取决于操作系统和相关的物理限制)。

  11、可寻址访问18pb内存,意味着可把数据库、复杂的3d环境,甚至于整个操作系统都放在内存中,这样可比它们在硬盘中不知要快上多少倍。当然,目前世界上的计算机都没有18pb的内存,但一些基于安腾(itanium)的服务器,内存就有512gb之多,就目前的发展趋势来看,在不远的将来,程序和计算机本身,都将推动对内存的需求量超过这个数字。

  12、目前来说,应用程序也极有可能推动对磁盘空间需求的增长,而64位架构刚好可以寻址更大的磁盘空间,这就使管理更大的磁盘变得简单多了。一如应用程序可寻址访问多少内存一样,磁盘也存在着一些限制,比较说磁盘上能存入多少文件,每个文件的大小有多大等等。

  13、再也不用担心y2k38等问题了。源于unix系统对时间的管理方式,很多使用time_t数据类型的32位应用程序,在2038年1月19日,都会碰到类似当年千年虫的问题,这是因为没有更多的位,可以用来继续计数自1970年1月1日以来的秒钟数(某些用于抵押和退休金管理的程序可能会更早地碰到此类问题,如果这些程序要进行许多未来事件的日期处理的话)。可幸的是,在64位系统上,公元292,000,000,000年到来之前,时钟都不会出错。在此须牢记的是,要使用64位库重新编译整个应用程序,以便避开这个小小的“故障”。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons