现在安卓手机的内存(RAM)越来越大了,旗舰手机运行内存已经拓展到了12GB,而这个内存的大小已经超过了主流的电脑8GB内存,手机到底需不需要这么大的内存呢?手机是由SOC(集成CPU、GPU等)、RAM、存储等主要设备组成的。CPU、内存(RAM)、存储等都有自己擅长的东西,各有各的属性。
CPUCPU最聪明,算数最快,缺点就是记不住太多东西,算完的东西不存起来就忘了,所以就需要其他设备来协助记录流程和数据。存储存储体格是最大的,记性好,但动作慢点,它的任务就是记住各种无聊的流程和数据。
但由于存储的反应慢,CPU并不想直接和硬盘打交道,步调差太远了。内存(RAM)内存比存储小很多,反应却比存储快好多倍,但是就是记的东西有点少,而且没电的时候就会把东西忘得一干二净,但是因为反应快,内存可以直接和CPU打交道。
CPU受限于架构、制作工艺、核心数量、核心频率、L1/L2/L3缓存大小、通用寄存器大小等影响,核心数量和核心频率、制作工艺相比其他要好提升。GPU受限于制作工艺、核心数量、核心频率。RAM受限于核心频率和带宽速度、带宽接口大小、存储容量等影响,其中存储容量最好提升。
内存(RAM)的作用RAM,全称Random
Access
Memory,即随机存储器。RAM是手机操作系统和其他程序运行过程中产生的临时数据进行存储的媒介,它只能临时存储与CPU高速交换的缓存数据。RAM不能长期存储数据,断电即会丢失数据。RAM大小相比CPU和GPU研发难度和量产成本都要小很多,所以RAM大小提升是最为迅速的。
RAM的大小可以理解为一个木桶可以放多少的水,而带宽速度一样相当于水流的速度是固定的,大的RAM可以放进更多的任务,小的RAM放的任务就少,在RAM够用的情况下,任务执行速度和系统运行的流畅度是相同的。
这一点Android厂商在做宣传的时候有点混淆消费者的倾向。一个APP是如何被执行的手机在所有任务执行期间都是先将任务从存储先放进RAM,所以,大的RAM优势可以放进更多的任务,可以加载更多的网页内容等。
下一步就是操作系统把任务放进L3(很多手机CPU没有L3),再逐步放进L2和L1(期间所有的操作都是用的机器可以执行的低级代码指令,这也是指令集的重要原因之一。)。L3缓存大小重要性在整个CPU缓存系统里面重要性最小,容量却是最大,因为在RAM里面需要被CPU执行的任务会最先放进L3里面,这也是为什么高通骁龙没有L3的原因,因为在移动设备里面影响并不大,还可以减少成本和制作难度。
L2和L1就显得比较重要了,其中最为重要的是L1,如果L1不大的话,你有再大的RAM,任务一样执行缓慢,就好比你人在排队买票,售票口只有一个,分成再多的排也是无用的,所以L1缓存大小要比RAM重要的多。然后就是放进处理器去执行了,处理器的架构决定工作的效率,工艺决定着处理器的能耗和密度大小,核心数量和核心频率决定执行速度,其中核心数量的作用在手机CPU里面作用是最小的,研发难度却是最低的。
处理完的代码会按照之前的顺序逆向返回到RAM里面,最后任务关闭或者需要存档的数据会被放进储存里面,所有操作完成。系统的流畅度由什么决定?系统的流畅度主要体现在界面,界面流不流畅GPU占很大的成分,不过现在的移动设备GPU都处于够用的状态,渲染出的帧数都足够达到60fps,完全满足需求,只有在大型游戏和视频才会体现好的GPU和差的GPU之间的差别。
RAM在移动操作设备扮演的角色在于移动设备的RAM和显存是合二为一的,GPU的计算数据也是在RAM里面的,所以大一点RAM还是有好处的,RAM过小肯定会影响到GPU的计算导致动画掉帧。手机RAM扩展迅速的原因
1、满足Android系统需要Android系统每年都在添加新的功能,每年都在重新编写多任务框架、APP运行模式,但是并不能给内存占用带来实质性的改变。虽然Android
One系统的设备可以号称512MB内存流畅运行,但是那是建立在原生系统下并运行那些严格按照Google应用规范规定下编写的APP。如果换个环境条件下,在国内OEM定制的UI和国内第三方APP厂商编写的APP,这种设备很难生存。
2、满足OEM厂商定制UI增加通用功能及独占功能的需求OEM定制UI的过程中习惯性通过增加通用功能及独占功能,这样相比原生Android系统较为臃肿,RAM系统占用更大,这也是为什么Android厂商的RAM要比iOS大很多的原因之一。
虽然说国内OEM厂商定制的UI运行流畅度要比很多OEM厂商要流畅很多,但是那是建立在严格管理后台进程的基础上,也就是说国内厂商定制的UI相当于给每个手机系统上装了一个360,通过严格管理后台进程权限和频繁杀掉那些系统认为不符合要求的任务进程的方式双管齐下来换取的。
3、内存有多大第三方APP都会及时的跟进用掉第三方APP觉得系统内存大,那可以增加更多的功能给用户更好的体验。看似良好的循环,实际不然。国内的APP厂商在编写APP的时候习惯性加上很多的进程及守护进程来达到消息及时推送(国内目前还没有开始实施GCM或统一的即时消息推送标准)和防止定制系统杀掉该APP进程的目的,APP内存占用过大,如果限制住权限又会达到体验不完善,看看国内主流的APP后台进程和RAM占用就会一目了然。
Android设备的RAM还是会出现迅速扩大的情况,这点和Windows桌面设备的发展如出一辙。新设备的RAM扩大则代表一个很现实的问题,那就意味着你手里的旧设备该换了。iOS设备由于App
Store被苹果严格控制,所有的开发者必须严格按照App
Store开发者应用编写规定去编写APP,所以iOS的APP的RAM占用确实要优秀一点。
Android的国外环境也和iOS差不多,但是Android的开放性决定了Android不可能像iOS一样控制着方方面面。当然iOS设备也需要增加RAM来满足功能的需求,不可能一直用同规格的RAM。
现在安卓手机,6GB
RAM够用,8GB RAM成为标配,12GB
RAM成为新的旗舰配置,但更多的还是噱头。因为手机的CPU和GPU并没有跟上RAM大小迅速扩大的脚步,一个车的发动机功率只有100P马力,你给他配再大的油箱还是跑不过200P马力的汽车,但是有可能跑的更远。
手机不同,在够用的情况下,RAM大小并不会提升流畅度,RAM带宽速度才是系统流畅度的主要因素,但是带来的影响就是能耗要更高。实际的情况是,手机RAM逐年增大,但是都会被占用、消耗掉。时间长了如果你不换手机,可能你用一个常用的软件可能都会觉得卡顿。
这就是著名的安迪-比尔定律(原文:Andy
gives,Bill takes
away.),硬件产商们每时每刻都在辛辛苦苦的把硬件性能提升,而软件公司们开发出更庞大、更消耗资源的软件,把硬件的性能给抵消了。