我是靠谱客的博主 优美热狗,最近开发中收集的这篇文章主要介绍linux BogoMIPS学习记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目前遇到一个问题,两颗不同主频的芯片,在android下显示的/proc/cpuinfo中的BogoMIPS竟然是一样的。

借机学习一下BogoMIPS是怎么计算的。

 

BogoMIPS

 (Bogo--Bogus--伪的,MIPS--millions of instruction per second) 按照字面的解释是“不太真实的MIPS”。之所以不太真实,那是因为其计算方法并不十分精确。

在linux启动时,会有显示下面的一句话,在是linux/init/calibrate.c中计算并显示出来。

Calibrating delay loop... 1205.86 BogoMIPS (lpj=6029312)

/proc/cpuinfo

cat 这个文件可以看到cpu相关信息。该文件是在linux/fs/proc/cpuinfo.c中创建的:

static int __init proc_cpuinfo_init(void)
{
proc_create("cpuinfo", 0, NULL, &proc_cpuinfo_operations);
return 0;
}
module_init(proc_cpuinfo_init);

在proc_cpuinfo_operations的open函数中,调用了cpuinfo_op:

static int cpuinfo_open(struct inode *inode, struct file *file)
{
return seq_open(file, &cpuinfo_op);
}

而cpuinfo_op是在arch/arm/kernel/setup.c中,其中的c_show就是cat /proc/cpuinfo所显示的。

其中打印BogoMIPS所使用的变量是在linux/init/calibrate.c中计算出来的。

void __cpuinit calibrate_delay(void)

关于这个函数,主要的思想就是计算出在一个时钟节拍内,延迟了多大一个数。

 

关于计算过程,详细的解释参考:

http://www.groad.net/bbs/read.php?tid-3057.html

http://www.linuxdiyf.com/viewarticle.php?id=67777

 

 

最后

以上就是优美热狗为你收集整理的linux BogoMIPS学习记录的全部内容,希望文章能够帮你解决linux BogoMIPS学习记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部