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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值