挖掘内存子系统的潜能

王朝厨房·作者佚名  2007-01-05
宽屏版  字体: |||超大  

随着软件的规模不断增大,内存在系统中的地位也直步上升,在运行一些大型软件如win2000/xp的时候,拥有一个强劲的内存子系统往往比一块高速的CPU和一块优秀的显卡还重要。因为系统的运行是这样的,CPU会尽可能地让最近用过的指令放在手边,当需要指令的时候,CPU首先在它的一级缓存(存放最近用过的指令的地方)中查找。如果CPU在一级缓存中找不到它所需的指令,就发生通常称为缓存遗漏(cache miss)的现象。发生缓存遗漏的时候,CPU就会转到二级缓存中查找所需的指令。当二级缓存中出现缓存遗漏时,计算机就转向系统内存。如果在这些地方都找不到所需指令,计算机就只好向硬盘提出读取请求了。如果所需指令连硬盘上都找不到,就只好说明用户根本没有操作系统,也就是说系统根本不能运行了。因此要系统工作得更快,必须把CPU所需指令全都放在一、二级缓存和系统内存中。这样,当计算机向硬盘请求指令的时候,一次可以获得许多,性能大大提高,这同时也避免了反复读取硬盘,造成硬盘负荷沉重。一、二级缓存可优化的余地不多,而内存是系统读取硬盘前的最后一道防线,优化它的性能可以明显提高整体性能。

用户想提高整体性能,必须要在装机前或升级前选好硬件和操作系统。其中内存的选购对提高整体性能是一个不容忽视的重要方面。为了得到最好的内存性能,首先必须按自己的经济实力购买尽可能好的内存条。本人推荐使用DDR SDRAM(Double Data Rate SDRAM),因为DDR SDRAM 从理论上来讲,可以把RAM的速度提升一倍,它在时钟的上升沿和下降沿都可以读出数据,而且价格DDR SDRAM 与SDRAM处于同等水平。大家要注意的是不同芯片的DDR内存的性能表现有所不同。本文所用的内存是采用Micron内存颗粒的小影霸DDR266内存。我不建议选用一般DDR内存,原因是一般工业标准的DDR266内存在BIOS设为Turbo模式时,一般不能稳定工作,只有质量好的内存条可以在133MHz甚至更高(如156MHz)的频率下稳定工作。另外主板的选择对内存优化也同样重要,好的主板有许多关于内存优化的选项,能够充分发挥内存潜能。本文所用的是众口皆碑的磐英8KHA+主板(VIA KT266A芯片)。大家知道,VIA芯片组的内存性能做得比较好,而磐英8KHA+主板更能提供几乎所有用户能想得到的内存优化选项。另一方面操作系统的选择也是很重要的,不同操作系统的内存管理的效能不同,本文选用Win XP操作系统。原因是win9x系列操作系统对大容量内存的管理不够完善,就算内存容量比较大,但只要多开几个程序后不久内存资源就耗尽,整个系统速度变慢,而win2000/xp在内存管理方面做了很大的改进。选好硬件和操作系统后,如果用户还没有留意自己主板上和操作系统上的内存调节选项,那么就应该赶快去动手提高内存性能。通常内存子系统优化有两种方法:(1)优化bios,使内存运行速度提高(2)优化操作系统,指导操作系统以正确方式使用内存。

一、优化bios,提高内存性能

想提高内存性能的用户可以参考以下内存设置:开机后按Del键进入bios 菜单,选择

(1)进入"Advanced Chipset Features"下的" System BIOS Cacheable "

System BIOS Cacheable : 优化时应设为Enabled

打开这个功能可以允许系统在需要的时候将BIOS存放到L2缓存里,比BIOS存放在内存更能加快BIOS的

(2) 进入"Advanced Chipset Features"下的"DRAM Clock/Drive Control"(见图一)具体的设置如下:

图一

System Performance : 优化时应设为Turbo

系统提供Normal, Fast, Fastest, Turbo四个选项,当用户选择其中一项后,相关的项目如DRAM Active to CMD等会自动调整,方便用户调整系统性能。注意,大部分的DDR内存在Turbo这样的设定下都不能稳定工作,这种设置需要很好的内存条。如果想要得到最佳性能,那用户就要购买像三星、Micron这样的名牌内存条。

DRAM Clock : 优化时应设为 133 Mhz

系统时钟循环周期有By SPD/100MHz/133MHz三个选项,用来设置内存与CPU外频同步或异步。By SPD是让主板自动识别PC1600和PC2100的DDR内存;100MHz/133MHz就是强制内存运行在设置的频率。当然强制内存运行在133MHz是最好的啦(如果采用kt333芯片的支持,内存运行在166MHz更加没问题)。在实际使用中如果用户想系统工作的更快应该将CPU与内存同步采用133 Mhz。

DRAM Timing: 优化时应设为Manual

有Manual, SPD两个选项。 By SPD是让内存自动选择反应时间等参数。设为手动(Manual),可以调节读取数据所延迟的时间(SDRAM Cycle Length)和内存交错(Bank Interleave)。

SDRAM Cycle Length : 优化时应设为2

DDR SDRAM能够运行(CL)2或3模式,也就是说它们读取数据所延迟的时间既可以是两个时钟周期或是三个时钟周期。当然时钟周期小,系统运行的速度就快。但当CPU超频时,低的时钟周期未必能使用户的系统长时间稳定运行。

Bank Interleave : 优化时应设为4 Bank

系统有None、2 Bank和4 Bank三个选项。一般设为4 Bank,这是提升VIA芯片组内存性能的重要参数,但开启之后将影响内存的超频能力。内存交错(memory interleaving)可以让系统对内存的不同bank进行同时存取,而不是持续存取。Bank表示一个SDRAM设备内部的逻辑存储库的数量(现在通常是4个bank)。Interleave是加快内存速度的一种技术,举例来说,将存储体的奇数地址和偶数地址部分分开,这样当前字节被刷新时,可以不影响下一个字节的访问。这样,2或4路交错技术减少了等待时间,让内存更快,虽然不是2或4倍的速度,但还是快了许多。要购买VIA芯片主板的朋友,一定要认准有4 Bank interleaving调节的板子再买,没有它,内存性能上可要大打折扣的!

DRAM Burst Length : 优化时应设为8

要使用这选项必须使用在2001年10月17日以后的bios。我尝试设为8和4进行测评,最后选择高分的8。这可能是KT266A芯片与KT266芯片在处理内存爆发字节长度上不同之处,多数KT266芯片的主板BIOS上是没有这个选项。

DRAM PreChrg to Act CMD : 优化时应设为2T

DRAM Act to PreChrg CMD: 优化时应设为 6T

当设为5T时系统性能没有明显的提高。另一方面当长时间把值设为5T会导致数据丢失和硬盘错误。切记小心使用!!!!

DRAM Active to CMD : 优化时应设为2T

表示内存对命令的反应时间,当然2T比3 T要快很多。

DRAM Queue Depth : 优化时应设为4 Level

DRAM Drive Strength : 优化时应设为Auto

DRAM Command Rate : 优化时应设为1T

设为1T会得到更好的内存性能。但是,1T似乎是个极苛刻的设置,要有质量比较好的内存来支持。

DCLK I/O Timing : 优化时应设为0ns

Fast R-W Turn Around : 优化时应设为Enabled

设为Enabled能打开内存快速读写转换功能

Continuos DRAM Request: 优化时应设为Enabled

设为Enabled能打开内存连续请求功能

(3)要使系统稳定工作,还必须在 "Frequency/Voltage Control" 设置以下值:

Auto Detect DIMM/PCI Clk :设为Enabled

CPU Clock :设为133

CPU Ratio :设为最稳定的倍频

取决于CPU在破解倍频后能提供的最大而且能稳定工作的倍频。雷鸟、毒龙CPU破解倍频的方法是用铅笔把L1上的金点连接起来。

CPU VCore Voltage :设为1.75

CPU VCore Voltage表示CPU 的核心电压。在超频可以支持最高核心电压 1.85 伏。当然高核心电压有利于超频后的CPU稳定工作,但也会带来发热量的增加。

VDIMM Voltage:设为2.60

8KHA+的内存电压是默认2.60伏,比正常内存电压多0.10伏. CPU超频后为使系统稳定工作用户可以将内存电压升高0.20 至 0.30 伏。但注意有些质量不好的内存在2.80伏下会无法工作。

二、强化内存管理,优化操作系统

优化操作系统的方法是主要是修改注册表和修改性能选项。由于是使用winxp操作系统,用户必须以管理员(administrator)身份登入系统才能修改注册表。由于修改注册表是有风险的,本人强烈要求修改前先备份注册表。

1.修改注册表的内存管理选项

按照 [HKLM/System/CurrentControlSet/Control/Session Manager/Memory Management]: 顺序进入内存管理选项,可以看到以下选项(参考图二):

DisableExecutivePaging

打开这个设置后(设为1),会禁止给Win NT/ Win2k执行文件分页,并强逼它们驻留在RAM内存而不是被转移到虚拟内存。打开这个设置可以提升整个系统的性能,但由于它对用户系统内存的占用很高,所以只有当用户的内存达到128 MB或以上时我们才建议用户使用这个设置。

LargeSystemCache

Win2K处理系统高速缓存(在Win9x中叫Vcache)的方式在很大程度上随着用户所用版本的不同而不同。 打开这个设置,可以看到由于这个原因使实际的磁盘的I/O数据传输得到加快。它比用户所能想到的更有效,因为支持Win2k的程序是被专门编制的,这样它们就可以与cache直接交换数据。同样,我个人并不建议用户尝试这个优化,除非用户有不低于128 MB的内存。

IOPageLockLimit

这个设置可能优化用户的电脑,但也可能不会。如果用户的电脑有很多的IO数据传输,它就可以从根本上提升用户电脑的性能。我个人并不建议用户尝试这个优化,除非用户有不低于128 MB的内存,但不管怎么说,1、2和4MB的注册表文件还可以接受。大部分的用户(当然要有128 MB内存)会发现当设置在8和16MB之间时,他们的电脑性能有显著的提升。有更高内存的系统则可以设定更高的设置。

Pagingfiles

页面文件(Pagingfiles)的最优的大小一般是系统物理内存的1.5倍,我使用的是128兆内存,所以页面文件是192兆。

SecondLevelDataCache

二级数据缓存(SecondLevelDataCache)一般由CPU的二级缓存得大小决定的,当然大一点比较好。SecondLevelDataCache的数据显示64,使表示我采用的毒龙850 Mhz CPU的二级缓存是64K。

图二

2. 修改启动项

打开控制面板->计算机管理->系统信息(左边窗口)->软件环境->启动程序,此时右边窗口列出了所有启动的项目,"命令"对应加载的软件命令,最右边"位置"就是启动项在注册表中的位置了。除了那个删也删不掉的Synchronization Manager外,任何启动项都是可删的。为安全起见,建议在改动之前用"计算机管理"窗工具栏上的"导出列表"将所有看到的启动项存为txt文件,以便反悔时恢复(也可以备份注册表)。另外一种方法是,在开始菜单点击"运行",在命令行输入"msconfig"运行系统配置实用程序,点击"启动"(见图三)。在系统配置实用程序里要关闭某些启动项目,只要单击该启动项目前的钩,即可取消该启动项目。当然,用户也可以点击"全部禁用"来取消所有启动项目。

图三

3.关闭部分系统服务

NT和2000/XP与9x最不同的地方就是NT、2000启动时运行的东东主要是些"服务"。Windows XP有比NT 4.0多得多的默认系统服务,用户在"运行"运行msconfig命令用户可以看到有哪些系统服务正在运行(参见图四)。对于那些不了解的人来说,系统服务有点象控制网络、打印机等操作系统的功能的程序。它可以使用户按自己的用途来调设自己的电脑。关闭某些服务可以减少启动的时间,并降低用户系统的占用。但是,这样也会降低用户的电脑在这些方面的表现,所以用户得综合考虑清楚,以作出正确的取舍。

图四

在管理最初的服务方面Windows XP的表现比Windows NT 4.0好得多。打开控制面板->管理工具->服务,右边窗口显示了所有服务的名称、描述、启动类别等信息(请将窗口开至最大,以便拉宽"描述"列逐一欣赏),"状态"中标明"已启动"的,就是目前耗光用户内存的罪魁祸首,双击之,看"可执行文件的路径"就知道任务管理器里面运行的各种进程都是些什么服务了(参见图五)。

图五

从图五可以知道,每个系统服务都有3个不同的设定。自动(Automatic)设定使用户每一次启动都会打开服务,手动(Manual)设定则在当它收到另一个服务或正在运行的程序的请求时才打开,已禁用(Disable)设定会完全禁止。当我提到关闭系统服务时,我的意思是指把它设定到manual。这样设定不会造成任何浪费,而当用户需要的时候又可以打开它。当然在修改前,建议用户用工具栏上的"导出列表"将目前正常状态下的各服务开启状态先做一个备份。下面将必须开启的服务一一列出,其余通通的杀掉:

1.Event log(事件纪录),功能自己?quot;描述"(下同),不开启的话,桌面会只剩下一张桌布,恐怕想运行其它程序都不行了。

2.Network Conections(网络连接),没有这个就没有网络拨号了,不上网者可禁用此服务;

3.Plug and Play(即插即用),禁用即插即用会导致2000/xp不可用;

4.Remote Access Connection Manager,禁用将无法创建网络拨号,也无法保存已建立的网络拨号,不上网者可禁用;

5.Remote Procedure Call(RPC),太多的服务需要它(如上面的Remote Access Connection Manager),所以不可禁用,禁用后状态怪异;

6.Telephony,Remote Access Connection Manager上网需要它,不上网者可禁用;

7.Windows Management Instrumentation,可禁用,使用基本不受影响,当要用到某些系统信息时(如要显示某服务项的依存关系时)会出错。因为我想在使用2000/XP的初级阶段中多了解它一些,所以没有禁用。但注意,此项启动后不一定会显示"已启动"。

除以上七项服务外,其余的服务可将"自动"的设为"手动"、"手动"的设为"已禁用",设置方法:双击服务项,将"启动类型"更改即可(参见图六)。有个别特别顽固的设成"手动"后依然故我,可进一步将之设成"已禁用"。本人在关掉了17项服务后,开机占用内存从55M降到了42M,使用过程一切正常。因为每个人的应用范围各不相同,上面的设置可能会因为关掉了太多的服务而导致某些用户需要的功能无法正常运行;也可能开启了过多不必要的服务(如不上网者,还可关掉最占内存的Telephony等…),这时就需要用户自己的判断和调整来定制最适合用户的内存瘦身方案了。

图六

4.改变优先级别提高性能

改变程序优先级可以提高性能。这里优先级是指电脑怎样决定哪个程序应该首先得到CPU的时间,和怎样分配CPU时间给每一个程序,优先级一般分6级(在后台它更复杂分31级)。优先级由线程优先权(Thread Priority)和优先类型(Priority Class)决定。优先类型有几种基本的优先程度设定(尽管在后台它更复杂),一般有: Real time(实时)、High(高)、Normal(标准)、和Idle(空闲)等。其中Real time的程序会优先于其它任何程序占用CPU的时间,大多数情况下只有操作系统本身的程序才有这个特权。其它的设置只是操作系统用来决定程序占用CPU时间的简单排列。线程优先权分为Time Critical、 Highest 、Above Normal 、Normal 、Below Normal 、Lowest、 Idle。其中线程是CPU基本执行单位,CPU在一个瞬时只能处理一个线程,线程优先可以理解为CPU优先处理优先权高的线程(如Highest),再处理下一级优先权线程(如Normal)。当一个线程在执行中被别的线程优先占有CPU时,操作系统利用CPU的硬件设施保持它的现场;当这个线程重新得到调度时,该现场被恢复。了解优先权大致原理,我们可以从两种途径来设置优先权。

(1)按Ctrl+Alt+Del,调用任务管理器。切换到"进程",找到用户想要优先的运行的程序,点击右键,选择"设置优先级",选择用户希望的优先类型(参见图七)。

图七

(2)在程序所在目录,创建一个改变程序优先权的批处理文件。批处理文件创建方法是;

1)用记事本新建一个文件,加入以下类似的语句:

Echo off

Start /

把换成用户希望的优先类型(Real time、High、Normal、或Idle),换成用户希望的改变优先级的程序的路径和程序主文件。

例如:

Echo off

Start /high c:\windows\notepad.exe

2)最后将文件后缀.TXT改变为.BAT并保存。以后可以运行这个BAT文件启动程序,让程序按照用户设定的优先级运行。

但注意Real time的程序会优先于其它任何程序,一般只用于操作系统的运行文件。另外提高程序的优先级同时会带来稳定性的降低。

5.删除对POSIX & OS2的支持功能

目前已经几乎没有人使用POSIX 和 OS2这些系统,我们可以关闭这项功能,争取多一些我们渴求的内存。但悲哀的是Microsoft没有提供关闭这些系统的支持功能的官方方法,所以我们用删除那些控制支持功能文件的老方法。在删除前首先要关闭Windows文件保护功能,然后用户可以删除winnt/system32 目录里的以下文件:: OS2.exe, OS2SRV.exe, PSXSS.EXE, OS2SS.exe, and POSIX.exe。我建议用户只对他们改名,以防删除这些文件带来一些用户想不到的问题。当然删除这些文件后,用户就不可以使用那些需要他们的程序。本人在长时间的运行没有遇到任何问题,然而需要指出的是Win2k resource kit是需要有POSIX的支持,如果用户不能使用时,用户要知道是什么原因。

6.删除无用的Windows组件

出于某些原因,微软删去了在交互式的安装过程中选择安装Windows部件的功能。当用户来到"控制面板"->"添加/删除Windows部件",用户也不能够获得全部的应用程序的列表。现在有一个补救的办法:

首先,来到c:\windows\inf(用用户的Windows XP所在的驱动器来代替c:),然后打开sysoc.inf文件(使用win2000的用户,可以在WINNT文件夹下的inf文件夹里找到sysoc.inf)。

在这个文件里有几条HIDE命令(参见图八),删除文中的"HIDE"或"hide"这个英文单词(但注意保留逗号)并保存文件。修改后,通?quot;控制面板"里的"添加/删除程序"来增加/删除Windows组件时会出现多几个选项。

图八

7.关闭视觉效果

进入"控制面板"选择"系统"进入"性能选项"的"视觉效果"界面(见图九),我建议选择"调整为最佳性能"或关闭以下选项"动画显示菜单和工具提示"、"平滑屏幕字体边缘"、"使用大图标"、"拖动时显示窗口内容"。如果用户有使用TweakUI或windows优化大师,用户也可以找到以上类似的选项。

图九

8.关闭系统声音

关闭系统声音是另一个夺回宝贵的系统内存资源的方法。方法是在"控制面板"打开"声音属性"面板选择相应音效后在下拉菜单中选择"无"。

9.整理用户的内存

整理内存是内存管理中比较有效的方法,内存整理有两种方法:

1)打开一个文本文件,然后插入以下中的1个: Mystring = Space(16000000)或Mystring = Space(80000000)。用户只需要其中的1个,最下面的那一条是给那些有不少于128 MB内存的人的。 把文件保存为memory.vbs(这是VBScript文件)。因为在Win9x上发挥作用的VBScript也一样会在Windows 2000/XP上发挥作用,因而运行这个vbs文件可以有内存整理的作用。如果用户安装了Visual Basic 4(或更高的版本)运行文件(Windows 2000会默认安装,所以用户不用担心),那么用户可以随时双击这个程序来运行它。当然每个人都应该先试一下它,因为大多数情况下它工作得更好。不过,如果它引起错误的话,把它替换成最上面那一条(Mystring = Space(16000000)可以用于任何不少于32MB内存的电脑)。另外,建议用户在运行它之前先把其他的所有程序关闭。

2)如果用户有最新版本的windows优化大师或超级兔仔软件,用户可以运行其中内存整理程序实现重建内存。以下是超级兔仔中内存整理1.0版本的操作界面(见图十)。

图十

总结

经过以上对内存系统的优化,系统会工作的更快更稳。为了让使用者了解内存系统优化后带来的变化,我特意进行一次综合测试。

测试环境:

主板:磐英8KHA+(KT266A芯片)

主板BIOS:2002年1月8日发布的BIOS

内存:128M小影霸DDR内存

CPU: 毒龙850

显卡:速配3000(GF200,32 M显存)

硬盘:星钻三代40G

操作系统:Windows XP PRO

测试结果:

以下是对系统内存子系统在优化前后用PCMark2002测评所得的分数(中间的Memory score就是内存分数)。

(1)内存子系统优化前的得分

(2)内存子系统优化后的得分

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有