BogoMips ("bogus"與MIPS,伪MIPS) 是一种衡量CPU速度的不科学方法。当计算机内核启动时,将执行一个计数循环。
对于特定的CPU,BogoMips可用来查看它是否个合适的值。它的时钟频率和它潜在的CPU缓存。但是它不可在不同的CPU间进行比较演示。
合适的BogoMips比率
作为一个参考向导,BogoMips可以用下列的表格进行预计算。给出的比率是以应用到LINUX版本的CPU作为例子。指数是指其它CPU同Intel 386DX CPU的BogoMips/clock speed比率.
BogoMIPS 怎么计算的?
在当前内核(2.6.x),BogoMIPS实现在内核源文件/usr/src/linux/init/calibrate.c。它计算了Linux内核定时参数loops_per_jiffy (see ) 值。源码解释如下:
/*
- A simple loop like
- while ( jiffies
loops_per_jiffy 用于实现 udelay(微秒级延时)和 ndelay(纳秒级延时)函数。某些驱动程序需要这些函数来等待硬件操作完成。这里采用了忙等待(busy waiting)方法,所以在执行 ndelay 或 udelay 函数期间,内核实际上处于阻塞状态。对于i386结构,delay_loop 的实现在 /usr/src/linux/arch/i386/lib/delay.c 中,如下所示:
/ simple loop based delay: /
static void delay_loop(unsigned long loops)
{
int d0;
__asm__ __volatile__(
"\tjmp 1f\n"
".align 16\n"
"1:\tjmp 2f\n"
".align 16\n"
"2:\tdecl %0\n\tjns 2b"
:"=&a" (d0)
:"0" (loops));
}
用C语言重写的代码如下:
static void delay_loop(long loops)
{
long d0 = loops;
do {
--d0;
} while (d0 >= 0);
}
关于BogoMips更丰富更全的信息和数百篇相关文章可参见 BogoMips mini-Howto.
参考
外部链接
- [http://www.clifton.nl/bogomips.html BogoMips Mini-Howto, V38]
评论 (0)