A-A+

是32位还是64位更快?

2016年07月11日 学习随笔, 技术文章 是32位还是64位更快?已关闭评论 阅读 45 次

     其实题目的说法并不准确。如果希望详细了解,可以参考http://www.metsky.com/archives/220.html,但是我现在还不想讨论哪个更快,我只想说明 32 bits 和 64 bits之间到底是什么关系?

参考文章http://www.techsupportalert.com/content/32-bit-and-64-bit-explained.htm

32位的软件是否能跑在64位的操作系统上?

简单地提32位或64位是不准确的!下面将介绍硬件、操作系统和应用程序中32位和64位的概念。

32位系统在过去的几十年里都是主流,因此绝大多数的软件和操作系统都是基于32位的。32位系统最大拥有4G的memory,然而,随着应用程序越来越大,4G的内存已经不能满足需求了。于是,就出现了64位的处理器以及64位的操作系统。

问题就来了,现在绝大多数的软件仍然是32位的,但是现在处理器已经升级到64位了。虽然操作系统也将慢慢朝64位发展,但是目前来说,32位的应用程序,操作系统大量存在。我们必须考虑兼容性的问题。

可以想象 Processor、Operation System、Application按层次划分开,Processor处于最里层,其次是OS层,然后才是Application层。

于是就出现这样的原则:

1、为了能够运行64位的Application,那么底层则必须能支持64位,换句话说,必须相应的配置 64位的OS,64位的Processor。

2、为了运行64位的OS,那底层必须配置 64位的Processor(和第一条差不多)

3、为了运行32位的OS,底层可以配置 32位 或 64位 的Processor

一般来说,32位的Application可以跑在任何配置的OS和Processor上( 除了64位的OS是不能跑在32位的Processor上的!),这是通过OS中的仿真模块完成的,现在主流的OS都已经实现了。  【此处的仿真到底是什么??也就是32位applicaion具体是如何运行在64位OS中的?】

需要注意的是,仿真模块是基于OS层的,因此可以被上层调用(如Application层),而设备驱动是与OS层平级的。因此无法通过仿真来兼容32bits到64bits中。所以,32bits的设备驱动是不可能安装到64bits的OS中!  

常见问题

1、一个64位的cpu能否在64位的OS上运行标准的32位应用程序?  可以!64位系统向后兼容

2、一个32位的OS能否运行在64位的cpu上? 可以!

但是,需要注意的是,64位的软件中可能包含32位的代码,类似地,32位的软件中可能包含16位的代码。可是,16位的代码是不能在64位的OS中运行的!这也是为什么有些32位的软件不能在64位的OS中正常运行!

原文如下】第一次尝试翻译(其实就是按自己的理解)。还是贴上原文吧。

Very often we find ourself thinking:

Will this 32 bit software run on my 64 bit operating system?  or  Will this 64 bit software run on my computer?

Here's a short tutorial which attempts to answer these questions and helps us understand the concepts of 64 bit and 32 bit hardware, operating system and applications.

32 bit systems have been part of the mainstream computing for more than a decade since the time of the 80386. Therefore, most of the software and operating system code written during this time has been 32 bit compatible.

32 bit systems can address upto 4 GB memory in one go. Some modern applications require more memory than this to complete their tasks. This and progress in chip fabrication technology led to the development of 64 bit processors for mainstream computing.

So here comes the problem, much of the software available today is still 32 bit, but the processors have migrated to 64 bit. The operating systems are slowly catching up. Eventually even the applications will catch up. But for now, we have to cope up with all combinations of 32 and 64 bits in hardware, operating system and applications.

You can consider these three factors to be three layers with the processor as the lowest layer and the application as the highest layer as shown below:

To run a 64 bit application, you need support from all lower levels (64 bit OS and 64 bit processor).

To run a 64 bit OS, you need support from its lower level (a 64 bit processor).

A 32 bit OS will run on a 32 or 64 bit processor without any problems.

Similarly a 32 bit application will run on any combination of OS and processor (except a combination of 32 bit processor and 64 bit OS which is not possible). This is usually accomplished through emulation which is an operating system feature, part of all major operating systems.Device drivers run in parallel to the operating system. Emulation is done at the operating system level, and is available to its higher layer: the application. Therefore, it is not possible to install a 32 bit device driver on a 64 bit operating system.

Answers to common questions

Will a 64 bit CPU run a standard (32-bit) program on a 64-bit version of an OS?   Yes it will. 64 bit systems are backward compatible with the 32 bit counterparts.

Will a 64-bit OS run a standard application on a 64 bit processor?  Again, it will. This is because of backward compatibility.

Can I run W2K and WXP on an 64 bit CPU, and use old software?  Yes, a 32 bit OS (W2K and WXP) will run on a 64 bit processor. Also, you should be able to run "old software" on a 64 bit OS.

However, before I close, let me also quote that many times, a 64 bit software will contain bits of 32 bit code. Similarly 32 bit software (usually very old ones) can have some code in 16 bit. Please be aware that 16 bit code will NOT run on 64 bit OS. This is one reason behind some 32 bit programs not working on 64 bit OSes.

小结】 单纯地说32位比64位快是不对的,其实有很多因素影响的,比如硬盘和CPU的串行总线。举例,64位系统一次可读取的字节数是32位系统的两倍,但是disk I/O又是性能的瓶颈,因此可能会导致64位比32位慢。当然,64位系统也有很多优点,比如在图像方面,可以显示得更加精细,效果当然会更好!

来源:http://blog.csdn.net/whuslei/article/details/6725297

评论已关闭!

Copyright © 理处言语然自 保留所有权利.   Theme  Ality 京ICP备07032740号

用户登录

分享到: