三、科普篇:ReadyBoost技术原理
很多人都认为ReadyBoost是直接加大内存空间,其实不然,这项技术是与Windows的另一项特性Prefetch相辅相成。简单来说Prefetch(文件预读取,Vista之后升级为“SuperPrefetch”)是微软在XP中加入的一项文件缓冲机制,能够通过分析用户使用习惯将部分文件预先调入内存。
好处是当用户真的点击这些程序时,这些预读好的数据能够直接从内存中读取,由于内存与硬盘间的巨大差速,实际使用中Prefetch的确可以让程序启动变快。
不过正是由于Prefetch(或SuperPrefetch)的这项原理,当物理内存过小而无法满足Windows需要时(Vista刚发布时普遍都是512MB内存),SuperPrefetch反而会成为系统的“绊脚石”,与系统争抢原本就不多的内存空间。
在这种情况下ReadyBoost应运而生,它的核心理念就是将系统预读文件直接转移至U盘(实际上是硬盘与U盘并存一份缓存,优先读取U盘,这样当U盘拔出或失效时,还能转回硬盘不至出现故障),一来可以减轻物理内存的空间压力,二来也好借助U盘本身随机读写快的特性(相对硬盘而言,硬盘只是连续I/O快,随机读写效率极低)来让预读文件更快地读取。
但如果物理内存已经大到足以满足系统及SuperPrefetch需要时又会怎么样呢?没错!ReadyBoost的效果就不那么明显了,这也就是为何图8中内存越大差速越小的最终原因(这里还掺杂了win8硬盘读取效率提升的因素)。
编者按:当ReadyBoost认为U盘内缓存比硬盘缓存更能满足随机读取需要时,会直接从U盘内随机读取数据。但如果系统正在有序地访问数据,便会自动转回到硬盘读取,即便数据同样存在于U盘缓存。
换言之在实际工作中,ReadyBoost的智能化程度还是相当高的,能够自动选取最适合当前任务的介质。
四、实战篇:你的U盘够劲儿么?
通过上面的介绍,相信大家已经明白,所谓ReadyBoost其实就是利用U盘随机读写快的特性,将SuperPrefetch转移到自己身上,然后再通过加快预读文件读取(相比硬盘来说)提高系统运行速度(其实是软件启动的响应时间)。
那么这里就引发了一个小问题,即你的U盘一定要足够快,否则过慢的U盘非但不能缩短程序响应时间,甚至还会成为系统的“拖累”。
事实上微软对于ReadyBoost U盘的确存在一个技术要求,即4KB随机读取传输率2.5MB/s或更高、512KB随机写入传输率1.75MB/s或更高、接口USB 2.0以上、容量256MB以上。
而且这些参数会在用户开启ReadyBoost之时自动检测,只有系统确认U盘不会给自己“拖后腿”时才会允许用户开启ReadyBoost。
Windows验证合格后才允许用户开启ReadyBoost(用户可自由指定ReadyBoost所占用的空间)
通过资源监视器我们可以更清楚地看到ReadyBoost的运作,当笔者在电脑中开启ReadyBoost之后,会发现瞬间硬盘狂转起来,如果这时打开资源监视器,会看到一个进程正在以20MB/s的速度向U盘内写入文件,而这恰恰正是这部U盘的最高写入速度。
整个过程约会持续5分钟,之后高强度写入没有了(偶尔还是有的,因为ReadyBoost要不断更新数据),取而代之的则是启动软件后的瞬间高速读取,换言之此时操作系统已经转而使用U盘读取预读文件,ReadyBoost正式生效!
总体来说,ReadyBoost仅仅是一项利用U盘存储预读文件(Prefetch)的技术,并非直接加大物理内存。只有当物理内存无法满足Windows需要,或者预读系统性能不佳的情况下,它才会显示一定的效果。
而且它所加速的其实只是Win8的SuperPrefetch模块,并非直接作用于程序本身,因此使用该功能必须要同时开启SuperFetch。
也就是说ReadyBoost更适合那些物理内存小、内存槽已满无法升级,以及内存过时不易买到的用户,如果物理内存大于或等于2GB,在目前条件下ReadyBoost产生的效果将微乎其微!
所以最后小编可以告诉大家我们在操作使用Win8系统完全可以抛弃U盘加速这项技术了!