现有的Cortex A7和Cortex A15都支持LPAE(Large Phisical Address Extensions),也就是拥有40位的寻址空间,可以访问最高1TB的物理内存。
注意32位CPU拥有超出32位的寻址空间并不奇怪,32位的x86 CPU(以及后来的x64 CPU在运行于32位模式下时)也拥有类似的PAE,可以访问超出4GB的物理内存。
虽然如此,但这种访问模式只是以一种切换映射的方式来充分利用物理内存。打个不太严谨的比方,假设有8GB内存,可能操作系统把其中的2GB内存映射到进程A的2GB到4GB这段地址空间,然后又把另外的2GB映射到进程B的同一段地址空间,以此类推。这样不同的进程加起来就可以利用完所有的物理内存,但单个进程仍然要受到线性地址空间只有4G的限制,也就是说无法在同一时刻利用4GB以上的物理内存(实际上因为种种原因,这个上限比4G还要小一些,一般是2G到3G)。这样的限制对客户端应用来讲还不是什么问题,毕竟在手机上极少会有应用真的需要这么大的内存。
结合之前的回答,Apple的动作主要还是因为未雨绸缪。如果迟早要过渡到64位,早一天比晚一天好。
以下是之前的回答内容:
作为长期Android开发者和偶尔iOS开发者,来试着说两句中立的话。
要回答这个问题,不妨先回答下面两个问题:
第二个问题,就从Windows XP(第一个有64位版的消费级Windows)的2001年算起,到2010年( Windows 7 64-bit Creeping Up on 32-bit Installs )的情况是:
而2013年的情况可以参考游戏平台Steam的实时报告: Steam Hardware & Software Survey 。在主要用户群体是追求硬件配置的游戏玩家的前提下,Steam用户中仍然(截止2013年8月)使用32位OS的百分比还在20%以上。
补充 :
那么我想要回答下面这个问题并不困难:
如果在三年内,iPhone装载的内存就很可能超过4GB,Apple应该在什么时候推出64位的CPU和操作系统,以保证各种第三方应用能够顺利过渡?
答案是越快越好。
并非是Apple搞了些华而不实的硬件让用户买单,恰恰相反,我好奇的是Android阵营以及高通三星他们到底在忙些什么啊……(关于这一段请参考本回答最上面更正的内容)
另外再补充一些64位ARM架构具体的好处( http://www.arm.com/files/downloads/ARMv8_Architecture.pdf ),不需要4G以上内存就能享受:
另外再补充一点个人看法。Apple这么急着上64位ARM(别忘了在而家呢个moment,连服务器端的ARMv8都还没人出货呢),多少和统一自家软硬件体系的想法脱不了干系。当然现在server,Mac Pro和MBP方面还是Intel的天下,但Apple没理由放着自家这么强的ARM技术力量不用,不去在桌面和server端分一杯羹,以达到最后彻底摆脱Intel的目的。
虽然如此,但这种访问模式只是以一种切换映射的方式来充分利用物理内存。打个不太严谨的比方,假设有8GB内存,可能操作系统把其中的2GB内存映射到进程A的2GB到4GB这段地址空间,然后又把另外的2GB映射到进程B的同一段地址空间,以此类推。这样不同的进程加起来就可以利用完所有的物理内存,但单个进程仍然要受到线性地址空间只有4G的限制,也就是说无法在同一时刻利用4GB以上的物理内存(实际上因为种种原因,这个上限比4G还要小一些,一般是2G到3G)。这样的限制对客户端应用来讲还不是什么问题,毕竟在手机上极少会有应用真的需要这么大的内存。
结合之前的回答,Apple的动作主要还是因为未雨绸缪。如果迟早要过渡到64位,早一天比晚一天好。
以下是之前的回答内容:
作为长期Android开发者和偶尔iOS开发者,来试着说两句中立的话。
要回答这个问题,不妨先回答下面两个问题:
- 高端手机配置的内存从512M升到2G,经过了多长时间?
- 桌面操作系统从32位过渡到64位,花了多长时间?
第二个问题,就从Windows XP(第一个有64位版的消费级Windows)的2001年算起,到2010年( Windows 7 64-bit Creeping Up on 32-bit Installs )的情况是:
而2013年的情况可以参考游戏平台Steam的实时报告: Steam Hardware & Software Survey 。在主要用户群体是追求硬件配置的游戏玩家的前提下,Steam用户中仍然(截止2013年8月)使用32位OS的百分比还在20%以上。
补充 :
- 从Steam的硬件统计数据来看,同时期装备2G及以下内存的用户仍然有27%之多,这些人使用64位OS缺乏明确的动机,所以我上面20%这个数据不完全有意义。但需要再次指出的是,Steam的用户是以追求新软/硬件的玩家为主,无法代表64位OS在所有用户中的普及率。即使假定在2013年64位桌面OS已经达到100%的占有率,同2010年的数据相比,仍然是经过了明显超出三年的时间。
- OS X要比Windows更快完成32位到64位的转换(初次支持64位的10.6是2009年8月发布)。但第三方应用的迁移是一个更加漫长的过程。基于兼容性和实际需求考虑,OS X下大量的第三方应用仍然是32位版本(Skype, Chrome, Dropbox等等)。
那么我想要回答下面这个问题并不困难:
如果在三年内,iPhone装载的内存就很可能超过4GB,Apple应该在什么时候推出64位的CPU和操作系统,以保证各种第三方应用能够顺利过渡?
答案是越快越好。
并非是Apple搞了些华而不实的硬件让用户买单,恰恰相反,我好奇的是Android阵营以及高通三星他们到底在忙些什么啊……(关于这一段请参考本回答最上面更正的内容)
另外再补充一些64位ARM架构具体的好处( http://www.arm.com/files/downloads/ARMv8_Architecture.pdf ),不需要4G以上内存就能享受:
- 31个128位宽的通用寄存器,可作为64位寄存器用。这一点Apple发布会也专门强调(2x general purpose registers, 2x floating point registers)。更多的通用寄存器意味着更大的编译优化空间和更快的运行速度。
- 大量削减了以前架构中的条件指令。ARM的观点是现在的分支预测性能已经足够好,不再需要ARM传统(也是特色)的大量条件指令,而是用普通的比较-跳转即可。这意味着更小的代码尺寸和更好的指令cache利用率。
- 指令集的AES, SHA1, SHA-256支持。这几个都是现在加解密体系的常用算法。
另外再补充一点个人看法。Apple这么急着上64位ARM(别忘了在而家呢个moment,连服务器端的ARMv8都还没人出货呢),多少和统一自家软硬件体系的想法脱不了干系。当然现在server,Mac Pro和MBP方面还是Intel的天下,但Apple没理由放着自家这么强的ARM技术力量不用,不去在桌面和server端分一杯羹,以达到最后彻底摆脱Intel的目的。