android手机之-------64位操作系统 与 64位处理器

来源:互联网 发布:python开源什么意思 编辑:程序博客网 时间:2024/04/25 08:02

一、引  言

1. 在苹果iPhone 5S率先用上64位架构的A7处理器之后,64位移动芯片的大幕就彻底拉开了,Android手机用户自然希望自己心仪的产品能够跟的上苹果的步伐,采用64位架构处理器,但事实却并没有那么简单


2. 外媒fudzilla在今天刊文对Android手机用64位处理器泼了一盆冷水,他们认为尽管今年Cortex-A57/53架构在今年会正式到来(基于ARMv8指令集的64位架构),而且包括高通、三星以及NVIDIA在内的厂商都会发布自家的64位产品,但想要实际应用起来非常的困难。

       (1).64位处理器产品不成熟:而实际上高通在此前就正式发布了骁龙410系列处理器,基于公版Cortex-A53架构,规格并不算出色;NVIDIA则在此前正式发布了Tegra K1处理器,它的第二个版本将采用双核心Denver架构设计,它也是一款地地道道的64位架构处理器,三星方面有消息称它将会在不久以后发布Exynos 6系列64位处理器。

       (2).64位Android系统不成熟:即便是这些厂商的64位产品会马上到来,但Android系统却拖了后腿,目前最新的Android 4.4.2并不是64位的操作系统,即便是64位处理器能够用在Android 4.4.2当中那么它的性能也会因操作系统并不完美而被受限制,因此要想让Android手机用上64位处理器,那么Android系统至少先要支持64位架构,这应该是Android 5.0以后的事情了

          当然,如果Android手机真的用上64位处理器好处也是巨大的: 比如4GB以上内存以及反应更快的应用程序等。


二、64手机相关介绍

refer:http://www.ithome.com/html/android/104973.htm http://android.tgbus.com/shouji/news/201411/509994.shtml


//////////一、引  言:64位相关概览
1. 理论上,64 位处理器搭配64位系统运行64位软件,执行效率将成倍提升,这也将是未来的发展趋势。
但就目前来看,基于32位指令开发的应用仍是压倒性优势,所以指望64位处理器能有明显的进步还得过一段时间才行。

2. 当64位处理器运行在64位系统下时,可以发挥它100%的性能体验,在此状态下运行基于64位指令开发的软件时,效率是最高的。
即便是运行32位指令开发的软件,64位处理器也会因为有专门的32位指令集,所以并不会有不兼容的现象,但执行效率肯定没有前者高。

//////////二、64位的不同意义
64 位软件 :基于64位指令开发的应用


64 位操作系统:64位操作系统是指特别为64位架构(cpu处理器架构)计算机系统而设计的操作系统。
              如果你的电脑内存大于4G,那就要用64位的系统了,因为32位的Windows 7也好,Vista也好,最大都只支持3.25G的内存。
              而64位的windows 7最大将支持128G的内存(这也远远小于处理器能够支持的最大内存16EB,现有操作系统的局限性)。

64 位处理器:(可以处理64/32位程序)
       1. 指令集(与硬件电路匹配的指令系统): 处理器的工作就是运行指令,因此,我们还必须提到“指令集”这个概念。处理器的计算和控制都是通过各种指令完成的,每款处理器在设计时就规定了一系列与其硬件电路相配合的指令系统,这套指令的集合统称指令集——你可以把它理解为处理器与外界沟通的语言。市面上有许多不同处理器指令集,就好比有些人的母语是英语,有些人的母语则是中文。

       目前大多数64位手机处理器都使用ARM公司的ARMv8 64位指令集。

       ARMv8指令集是ARM公司专门针对手机、移动和嵌入式设备推出的64位指令集,它包含了AArch64、AArch32两种主要执行状态:AArch64专注于64位处理,AArch32则用来支持现有的32位ARM指令集。从这个角度来看ARMv8是一套不错的指令集,它既支持未来的64位程序,也向下兼容现有32位程序。有了ARMv8的支撑,以后的64位手机操作系统,如Android L 64bit都可以简单、高效地支持现有的32位App,你不用担心兼容性问题。

       2. 处理器架构:为了帮助合作伙伴们更好更快的拿出有竞争力的产品,ARM还专门制作了两个支持ARMv8指令集的处理器参考架构:Cortex-A53和Cortex-A57。如果说ARMv8指令集是一门语言,Cortex-A53和Cortex-A57就是基于这门语言的习题册,ARM这位“老师”利用ARMv8布置了一道道“题目”,厂商们只要照着做,就能生产出处理器成品了。

       3. 64位:具体到处理器内部,64位就是逻辑算数单元、寄存器和总线宽度都是64位(也就是8个字节),相比32位而言能够处理更长的指令(32位是最长指令为2的32次方,而64位可处理的最长指令的2的64次方)。

       4. 支持内存:64位处理器还能够使用64位整型数据寻址,简单来说就是可以支持更大的运行内存,理论上,最大值可达16EB(17179869184GB),我们可以理解成是内存无上限。如定位高端的Cortex A57架构,支持最多48位寻址,而面向中低端的Cortex A53则支持40位寻址。虽然没有做到彻彻底底的64位,但48位寻址可以支持最多16EB(1EB=1024TB=1048576GB)内存,40位寻址支持的内存容量也以TB为单位计算。在可以预见的未来,内存容量瓶颈在64位手机上将不复存在。


//////////三、64位处理器的优势
1. 能够处理更长的指令


2. 64位支持更大的内存
    64位处理器还能够使用64位整型数据寻址,简单来说就是可以支持更大的运行内存,理论最大值可达16EB(17179869184GB),我们可以理解成是内存无上限。

  而32位系统大家都熟悉,理论最大支持4GB内存。这样的差距就非常之明显了,即便是短期内主流手机运行内存不会突破4GB,但相信哪个厂商都不想面对这个已知的天花板。

  支持更大的内存可以算64位处理器带来的最立竿见影的提升了。处理器字长不但影响置零件的长度,还影响寻址空间。目前32位ARM处理器的寻址空间最大为4GB,算上系统占用的空间,内存最多3.5GB就是极限了。显然,对于越来越庞大复杂的系统和App而言,这是远远不够的。

  而64位ARMv8处理器彻底解决了这个问题,定位高端的Cortex A57架构支持最多48位寻址,而面向中低端的Cortex A53则支持40位寻址。虽然没有做到彻彻底底的64位,但48位寻址可以支持最多16EB(1EB=1024TB=1048576GB)内存,40位寻址支持的内存容量也以TB为单位计算。在可以预见的未来,内存容量瓶颈在64位手机上将不复存在。

3. 64位处理器本身就更先进

  就算不谈64位,市面上那些64位处理器本身的硬件架构也更先进。ARM总共有两个支持ARMv8 64位指令集的处理器参考架构:Cortex-A53和Cortex-A57,目前市面上绝大多数64位处理器都遵循这两个架构开发而来。相比上一代Cortex-A7和Cortex-A15,Cortex-A53和Cortex-A57拥有并行度更高的流水线、准确率更高的分支预测单元、命中率更高的缓存、更大的内部总线带宽。总之,就像刚刚装修过的房子一样,A53和A57在各个方面都有了进步。

4. 64位是在为未来投资

  64位处理器支持再多内存,现阶段手机内存容量也不会超过4GB,有没有更实在一些的好处?答案也是肯定的。

  首先,ARMv8 64位处理器支持更多更强的通用寄存器(GPR),GPR个数从16个增加到31个,每一个都可以随时访问,宽度也拓展位64位。同时,ARMv8的NEON SIMD浮点指令集也得到了加强,它拥有32个128bit宽度寄存器、支持双精度浮点执行、完整支持IEEE754标准。

  更多的寄存器意味着处理流程的“堵塞”现象大大减少了。过去,由于寄存器数量限制,一条指令往往要被拆成两个步骤执行,而有了足够多的寄存器,处理器就能在更少的周期内搞定指令,体现到App里,就是打开更快、等待时间更少、运行更流畅。

  其次,ARMv8指令集引入了AES、SHA-1、SHA-256硬件加密功能,这就好比把原来由手工的加密动作扔给了机械完成,效率提升极大。如果未来有人脑冻打开,开发一个手机版的bitlocker加密/解密软件,64位处理器比32位快上10倍也不是没可能。

  说到底,更多、更强大的寄存器,更好的硬件加密功能,这些都需要App本身提供支持。还好,ARMv8是下一代64位手机必然的发展方向,ARM公司早已将相关开发规范分发给了开发者,谷歌Android L系统就推出了专门的64位版本。在可以预见的未来,我们还是有不小希望能用上真正发挥64位优势的App的。换个角度而言,64位处理器能更好的适应未来。

//////////四、64处理器真的比32位处理器快一倍?
  这是一个经常被提起的问题,64位真的要比32位快一倍吗?答案当然是NO,但原因很少有人讲得清楚。

1. 指令集越长越好?
   指令集不是1+1=2这么简单,指令的长度并不直接等于性能。尽管从数字上看,64位指令的确要比32位指令更长,但很多时候我们并不需要那么复杂的指令。一个应用程序(App)拥有成千上万行代码,CPU在执行每条代码时又会把它分割成无数条指令,编译器会自动决定怎样将指令组合起来最高效,它们并非都需要64位的字长。
  一个典型的例子就是ARMv8指令集的数据模型。ARM在官方白皮书中指出,即使在纯64位模式下,ARMv8指令集数据模型中也并非每个指令都要求64位格式。另外,官方白皮书还提到,ARMv8指令集架构定义的指令长度并非64位,而是标准的32位定长。这些事实告诉我们,指令集并非越长越好。

2. 应用程序是否是64位?  
   最后,64位确实好,但程序本身的支持更重要。前面我已经提到,ARMv8 64位指令集包含AArch64、AArch32两种主要执行状态,如果不针对AArch64重新编写程序,那么程序默认就会在AArch32状态下运行——也就是说,现在的App都是32位的,跟64位一毛钱关系都没有,在64位处理器上运行32位程序,性能不会有任何提升。

3. 唯处理器论性能?
   太片面了。比如,玩大型3D游戏,GPU(图形处理器)会更加影响帧数;而拍摄高清照片/4K视频时,DSP(可编程信号处理器)则事关重大。手机的SoC是包含CPU、GPU、DSP、通讯模块等大量功能的集合体,不同的应用场景会侧重于不同部件,单独以CPU一个部件来衡量性能未免太过片面。

//////////五、结 论
     从长远考虑,64位处理器又绝对是未来的趋势,不论是从硬件层面还是软件层面考虑,64位能够给我们带来的更多的可能性,即便32位向64位过度是个痛苦的过程,但科技绝对不会停滞不前。早前8位CPU升级至16位,16位更新到32位,每一次升级都包含争议,但现在回首望去的确也是历史的必然。











0 0