内存条频率怎么选最合适?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存条频率怎么选最合适?相关的知识,希望对你有一定的参考价值。

建议选择DDR4 3600的。回答贴主的疑问,DDR4就是一个接口标准和技术标准,不是品牌。内存做得比较好的大厂,比方说美商(我就用的是美商的)等等,我这里就不一一列举了。虽说频率越高,性能越好。但是,3600相对于3200的增幅其实并不大。所以根据性价比问题,有大多数人会建议就3200就行了。

我想说的是,这个观点没毛病。还有最关键的,你的CPU是否直接支持这么高的频率?或者说,你的主板是否具有xmp功能?还是,什么都没有,只能bios模式下,通过手动配置内存电压和频率,实现超频。

我这里举个例子,就拿intel 11代i7来说:

来自某东商品页面详情页

上面标注了内存支持的频率,这就表明,就算你的主板没有XMP技术,只要内存是图示这两个频率,就可以达到。但是,假设你购买了3600的内存,再不做任何多余处理的情况下,内存会降频到3200或者2933,这个要看具体那个主板了。如果,还想实现3600的频率,则主板必须支持XMP技术,或者,手动配置超频。


此外,本帖发表的时代,已经进入CPU能最高能够直接支持3600MHz了。还是那句话:“早买早享受,晚买等折扣。”如果你是烧友,这都不是事。关键还是要看,你个人对于配置这么高性能的电脑的定位。说人话,就是你准备拿这台电脑干什么用?在性能和性价比中找到权衡。没有什么绝对的,配多少多少就行了。时代是发展的。等DDR4 3600都白菜价了,或者DDR5技术下放了,肯定又是一场变革。


(看来时代是进步的!2021年11月22日我增补了这个括号内的内容,DDR5已经下放。但是,个人感觉完全没有必要现在就入,让溢价少一点再考虑。从硬件要求看,z690才能搭配DDR5,处理器也必须搭配intel12代CPU。况且,系统还需要win11才能发挥最大效用。这几对活宝凑一块,我怕好吧。还是,让它稳定一会以后,我才看好。)


【2022年9月29日增补:intel13都要出来了。时代进步太快,我们也没必要拘泥于DDR4了,可以考虑DDR5了~】

希望对你有用。任何人有不同意见,欢迎评论、留言。一起交流。

参考技术A ●普条
内存控制器集成在CPU里面,根据处理器(不超频)所支持的最高内存频率进行选择。
例如,Intel官网显示i5 12490f支持内存DDR4 3200/DDR5 4800,AMD官网显示R5 5600X支持内存DDR4 3200
●自动超频条
超频是通过主板BIOS进行的,内存频率根据主板所支持的OC频率进行选择。
例如某B550M主板,内存规格DDR4 4800(超频)/4600(超频)/4866(超频)/4466(超频)/4400(超频)/4333(超频)/4266(超频)/4200(超频)/4133(超频)/4000(超频)/3866(超频)/3733(超频)/3600(超频)/3466(超频)/3400(超频)/3333(超频)/3200/3000/2933/2800/2666/2400/2133 MHz,这时可选择支持AMD DOCP超频的内存条,频率酌情自选。
又如某B660M主板,支持内存DDR5 6200(OC)/ 6133(OC)/ 6000(OC)/ 5800(OC)/ 5600(OC)/ 5400(OC)/ 5333(OC)/ 5200(OC)/ 5066(OC)/ 5000(OC)/ 4800(JEDEC) MHz,JEDEC是普条默频内存标准,OC表示XMP标准频率,这时可选择支持Intel XMP超频的内存条,频率酌情自选。
●手工超频:有能力超到多少,就可以选多少
Intel 平台通常只有K处理器+Z主板具有手工超频功能。
AMD 平台,最入门的A主板除外,B主板X主板,CPU内存均可手工超频,超频相对容易。

如何获取 Android 设备的CPU核数,时钟频率以及内存大小

获取 CPU 核数
Linux 中的设备都是以文件的形式存在,CPU 也不例外,因此 CPU 的文件个数就等价与核数。
Android 的 CPU 设备文件位于/sys/devices/system/cpu/目录,文件名的的格式为cpu\\d+。
root@generic_x86_64:/sys/devices/system/cpu # ls cpu0 cpufreq
cpuidle
kernel_max
modalias
offline
online
possible
power
present
uevent
统计一下文件个数便可以获得 CPU 核数。
public static int getNumberOfCPUCores()
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1)
// Gingerbread doesn\'t support giving a single application access to both cores, but a
// handful of devices (Atrix 4G and Droid X2 for example) were released with a dual-core
// chipset and Gingerbread; that can let an app in the background run without impacting
// the foreground application. But for our purposes, it makes them single core.
return 1;

int cores;
try
cores = new File(“/sys/devices/system/cpu/”)。listFiles(CPU_FILTER)。length;
catch (SecurityException e)
cores = DEVICEINFO_UNKNOWN;
catch (NullPointerException e)
cores = DEVICEINFO_UNKNOWN;

return cores;

private static final FileFilter CPU_FILTER = new FileFilter()
@Override
public boolean accept(File pathname)
String path = pathname.getName();
//regex is slow, so checking char by char.
if (path.startsWith(“cpu”))
for (int i = 3; i < path.length(); i++)
if (path.charAt(i) < \'0\' path.charAt(i) > \'9‘)
return false;


return true;

return false;

;
获取时钟频率
获取时钟频率需要读取系统文件 -/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq或者/proc/cpuinfo。
Android 模拟器中并没有cpuinfo_max_freq文件,因此只能读取/proc/cpuinfo。
/proc/cpuinfo包含了很多 cpu 数据。
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
stepping : 1
cpu MHz : 0.000
cache size : 1024 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 4
wp : yes
代码如下:
public static int getCPUMaxFreqKHz()
int maxFreq = DEVICEINFO_UNKNOWN;
try
for (int i = 0; i < getNumberOfCPUCores(); i++)
String filename =
“/sys/devices/system/cpu/cpu” + i + “/cpufreq/cpuinfo_max_freq”;
File cpuInfoMaxFreqFile = new File(filename);
if (cpuInfoMaxFreqFile.exists())
byte[] buffer = new byte[128];
FileInputStream stream = new FileInputStream(cpuInfoMaxFreqFile);
try
stream.read(buffer);
int endIndex = 0;
//Trim the first number out of the byte buffer.
while (buffer[endIndex] >= \'0\' && buffer[endIndex] <= \'9\'
&& endIndex < buffer.length) endIndex++;
String str = new String(buffer, 0, endIndex);
Integer freqBound = Integer.parseInt(str);
if (freqBound > maxFreq) maxFreq = freqBound;
catch (NumberFormatException e)
//Fall through and use /proc/cpuinfo.
finally
stream.close();



if (maxFreq == DEVICEINFO_UNKNOWN)
FileInputStream stream = new FileInputStream(“/proc/cpuinfo”);
try
int freqBound = parseFileForValue(“cpu MHz”, stream);
freqBound *= 1000; //MHz -> kHz
if (freqBound > maxFreq) maxFreq = freqBound;
finally
stream.close();


catch (IOException e)
maxFreq = DEVICEINFO_UNKNOWN; //Fall through and return unknown.

return maxFreq;

获取内存大小
如果 SDK 版本大于等于JELLY_BEAN,可以通过ActivityManager来获取内从大小。
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
am.getMemoryInfo(memInfo);
如果版本低于JELLY_BEAN,则只能读取系统文件了。
FileInputStream stream = new FileInputStream(“/proc/meminfo”);
totalMem = parseFileForValue(“MemTotal”, stream);
完整代码如下:
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static long getTotalMemory(Context c)
// memInfo.totalMem not supported in pre-Jelly Bean APIs.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
am.getMemoryInfo(memInfo);
if (memInfo != null)
return memInfo.totalMem;
else
return DEVICEINFO_UNKNOWN;

else
long totalMem = DEVICEINFO_UNKNOWN;
try
FileInputStream stream = new FileInputStream(“/proc/meminfo”);
try
totalMem = parseFileForValue(“MemTotal”, stream);
totalMem *= 1024;
finally
stream.close();

catch (IOException e)

return totalMem;

参考技术A 参考这篇博文:http://www.jianshu.com/p/f7add443cd32

以上是关于内存条频率怎么选最合适?的主要内容,如果未能解决你的问题,请参考以下文章

10年经验的纤亿通网络工程师告诉你-有源波分和无源波分到底怎么选最合适!

750显卡的内存频率怎么看

如何查看电脑内存最近6小时运行情况?

怎么设置虚拟内存

虚拟内存设置多少合适?大小主要影响啥?

怎样查看cpu的工作频率