BogoMips

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.

参考
外部链接

评论 (0)

  • 还没有评论,来抢沙发吧。