<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=BogoMips</id>
	<title>BogoMips - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=BogoMips"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=BogoMips&amp;action=history"/>
	<updated>2026-07-17T10:01:19Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=BogoMips&amp;diff=785255&amp;oldid=prev</id>
		<title>imported&gt;KrisTHL181：​修正笔误</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=BogoMips&amp;diff=785255&amp;oldid=prev"/>
		<updated>2025-12-07T17:20:22Z</updated>

		<summary type="html">&lt;p&gt;修正笔误&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt; {{noteTA|G1=IT}}&lt;br /&gt;
{{Rough translation|time=2023-06-28T09:36:23+00:00}}&lt;br /&gt;
{{Expand language|en|time=2023-06-28T09:36:23+00:00}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BogoMips&amp;#039;&amp;#039;&amp;#039; (&amp;quot;bogus&amp;quot;與[[每秒百萬指令|MIPS]]，伪MIPS) 是一种衡量CPU速度的不科学方法。当计算机内核启动时，将执行一个计数循环。&lt;br /&gt;
&lt;br /&gt;
对于特定的CPU，BogoMips可用来查看它是否个合适的值。它的时钟频率和它潜在的CPU缓存。但是它不可在不同的CPU间进行比较演示。&amp;lt;ref name=&amp;quot;howto&amp;quot;&amp;gt;{{cite web | first = Wim | last = Van Dorst | url = http://www.clifton.nl/bogomips.html | title = BogoMips Mini-Howto | edition = V38 | date = 2 March 2006 | accessdate = 2008-08-22 | archive-date = 2013-08-27 | archive-url = https://www.webcitation.org/6JAzWvwZk?url=http://www.clifton.nl/bogomips.html | dead-url = no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 合适的BogoMips比率 ==&lt;br /&gt;
作为一个参考向导，BogoMips可以用下列的表格进行预计算。给出的比率是以应用到LINUX版本的CPU作为例子。指数是指其它CPU同Intel 386DX CPU的BogoMips/clock speed比率.&lt;br /&gt;
{| class=&amp;quot;sortable wikitable&amp;quot;&lt;br /&gt;
!CPU!!比率!!指数&lt;br /&gt;
|-&lt;br /&gt;
|[[Intel 8088]] ||clock * 0.004||0.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Intel 80386|Intel/AMD 386SX]] ||clock * 0.14||0.8&lt;br /&gt;
|-&lt;br /&gt;
|[[Intel 80386|Intel/AMD 386DX]] ||clock * 0.18||1 (definition)&lt;br /&gt;
|-&lt;br /&gt;
|[[Motorola 68030]]||clock * 0.25||1.4&lt;br /&gt;
|-&lt;br /&gt;
|[[Cyrix]]/[[IBM]] 486||clock * 0.34||1.8&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Intel P5|Pentium]]||clock * 0.40||2.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Intel 80486|Intel 486]] ||clock * 0.50||2.8&lt;br /&gt;
|-&lt;br /&gt;
|[[AMD 5x86]]||clock * 0.50||2.8&lt;br /&gt;
|-&lt;br /&gt;
|[[MIPS Technologies|MIPS]] R4000/R4400||clock * 0.50||2.8&lt;br /&gt;
|-&lt;br /&gt;
|[[ARM9]]||clock * 0.50||2.8&lt;br /&gt;
|-&lt;br /&gt;
|[[Motorola 8081]]||clock * 0.65||3.6&lt;br /&gt;
|-&lt;br /&gt;
|[[Motorola 68040]]||clock * 0.67||3.7&lt;br /&gt;
|-&lt;br /&gt;
|[[PowerPC]] 603||clock * 0.67||3.7&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[StrongARM]]||clock * 0.66||3.7&lt;br /&gt;
|-&lt;br /&gt;
|[[NexGen]] Nx586||clock * 0.75||4.2&lt;br /&gt;
|-&lt;br /&gt;
|[[PowerPC]] 601||clock * 0.84||4.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Alpha 21064]]/21064A||clock * 0.99||5.5&lt;br /&gt;
|-&lt;br /&gt;
|[[Alpha 21064|Alpha 21066]]/21066A||clock * 0.99||5.5&lt;br /&gt;
|-&lt;br /&gt;
|[[Alpha 21164]]/21164A||clock * 0.99||5.5&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Pentium Pro]]||clock * 0.99||5.5&lt;br /&gt;
|-&lt;br /&gt;
|[[Cyrix Cx5x86|Cyrix 5x86]]/[[Cyrix 6x86|6x86]] ||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Pentium II]]/[[Pentium III|III]]||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|[[Athlon|AMD K7/Athlon]]||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Celeron]]||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Itanium]]||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|[[R4600]]||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|[[Hitachi, Ltd.|Hitachi]] SH-4||clock * 1.00||5.6&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Itanium 2]]||clock * 1.49||8.3&lt;br /&gt;
|-&lt;br /&gt;
|[[Alpha 21264]]||clock * 1.99||11.1&lt;br /&gt;
|-&lt;br /&gt;
|[[VIA Technologies|VIA Centaur]]||clock * 1.99||11.1&lt;br /&gt;
|-&lt;br /&gt;
|[[AMD K6|AMD K5/K6/K6-2/K6-III]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|AMD [[Duron]]/[[Athlon]] XP||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|AMD [[Sempron]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|[[SPARC|UltraSparc]] II||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Pentium MMX]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Pentium 4]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Pentium M]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Core Duo]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Core 2 Duo]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Intel Atom|Atom]] N455||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Centaur C6-2||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|[[PowerPC]] 604/604e/750||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Pentium III#Coppermine|Pentium III Coppermine]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Xeon#Pentium_III_Xeon|Pentium III Xeon]]||clock * 2.00||11.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Motorola 68060]]||clock * 2.01||11.2&lt;br /&gt;
|-&lt;br /&gt;
|Intel [[Xeon#Xeon_.28DP.29_.26_Xeon_MP_.2832-bit.29|Xeon MP (32-bit)]] ([[hyper-threading]])||clock * 3.97||22.1&lt;br /&gt;
|-&lt;br /&gt;
|[[IBM eServer zSeries|IBM S390]]||not enough data (yet)||&lt;br /&gt;
|-&lt;br /&gt;
|[[ARM architecture|ARM]]||not enough data (yet)||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== BogoMIPS 怎么计算的? ==&lt;br /&gt;
在当前内核(2.6.x),BogoMIPS实现在内核源文件&amp;lt;code&amp;gt;/usr/src/linux/init/calibrate.c&amp;lt;/code&amp;gt;。它计算了Linux内核定时参数&amp;lt;code&amp;gt;loops_per_jiffy&amp;lt;/code&amp;gt; (see {{tsl|en|Jiffy (time)||Jiffy}} ) 值。源码解释如下：&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
   * A simple loop like&lt;br /&gt;
   *  while ( jiffies &amp;lt; start_jiffies+1)&lt;br /&gt;
   *    start = read_current_timer();&lt;br /&gt;
   * will not do. As we don&amp;#039;t really know whether jiffy switch&lt;br /&gt;
   * happened first or timer_value was read first. And some asynchronous&lt;br /&gt;
   * event can happen between these two events introducing errors in lpj.&lt;br /&gt;
   *&lt;br /&gt;
   * So, we do&lt;br /&gt;
   * 1. pre_start &amp;lt;- When we are sure that jiffy switch hasn&amp;#039;t happened&lt;br /&gt;
   * 2. check jiffy switch&lt;br /&gt;
   * 3. start &amp;lt;- timer value before or after jiffy switch&lt;br /&gt;
   * 4. post_start &amp;lt;- When we are sure that jiffy switch has happened&lt;br /&gt;
   *&lt;br /&gt;
   * Note, we don&amp;#039;t know anything about order of 2 and 3.&lt;br /&gt;
   * Now, by looking at post_start and pre_start difference, we can&lt;br /&gt;
   * check whether any asynchronous event happened or not&lt;br /&gt;
   */&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;loops_per_jiffy&amp;lt;/code&amp;gt; 用于实现 &amp;lt;code&amp;gt;udelay&amp;lt;/code&amp;gt;（微秒级延时）和 &amp;lt;code&amp;gt;ndelay&amp;lt;/code&amp;gt;（纳秒级延时）函数。某些驱动程序需要这些函数来等待硬件操作完成。这里采用了[[忙等待]]（busy waiting）方法，所以在执行 &amp;lt;code&amp;gt;ndelay&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;udelay&amp;lt;/code&amp;gt; 函数期间，内核实际上处于阻塞状态。对于i386结构，&amp;lt;code&amp;gt;delay_loop&amp;lt;/code&amp;gt; 的实现在 &amp;lt;code&amp;gt;/usr/src/linux/arch/i386/lib/delay.c&amp;lt;/code&amp;gt; 中，如下所示：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* simple loop based delay: */&lt;br /&gt;
static void delay_loop(unsigned long loops)&lt;br /&gt;
{&lt;br /&gt;
  int d0;&lt;br /&gt;
&lt;br /&gt;
  __asm__ __volatile__(&lt;br /&gt;
    &amp;quot;\tjmp 1f\n&amp;quot;&lt;br /&gt;
    &amp;quot;.align 16\n&amp;quot;&lt;br /&gt;
    &amp;quot;1:\tjmp 2f\n&amp;quot;&lt;br /&gt;
    &amp;quot;.align 16\n&amp;quot;&lt;br /&gt;
    &amp;quot;2:\tdecl %0\n\tjns 2b&amp;quot;&lt;br /&gt;
    :&amp;quot;=&amp;amp;a&amp;quot; (d0)&lt;br /&gt;
    :&amp;quot;0&amp;quot; (loops));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
用C语言重写的代码如下：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
static void delay_loop(long loops)&lt;br /&gt;
{&lt;br /&gt;
  long d0 = loops;&lt;br /&gt;
  do {&lt;br /&gt;
    --d0;&lt;br /&gt;
  } while (d0 &amp;gt;= 0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
关于BogoMips更丰富更全的信息和数百篇相关文章可参见 BogoMips mini-Howto.&amp;lt;ref name=howto/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://www.clifton.nl/bogomips.html BogoMips Mini-Howto, V38]{{Wayback|url=http://www.clifton.nl/bogomips.html |date=20130530163229 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Bogomips}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux內核]]&lt;br /&gt;
[[Category:计算机性能测试]]&lt;/div&gt;</summary>
		<author><name>imported&gt;KrisTHL181</name></author>
	</entry>
</feed>