BogoMips
BogoMips("bogus"=「いんちきの」+ MIPS)とは、Linuxカーネルのブート
BogoMipsは、あるプロセッサがクロック
歴史 [編集 ]
1993
MIPSは Millions of Instructions Per Second(
百 万 命令 毎秒 )の略 だ。プロセッサの速度 を求 める手段 である。そのような測定 法 の多 くと同様 、適切 に利用 されるより乱用 されることが多 い(異 機種 のコンピュータ間 でMIPS値 を正 しく比較 するのは非常 に難 しい)。
BogoMipsはリーナス自身 の発案 である。Linuxカーネル 0.99.11(1993年 7月 11日 )はタイミングループを必要 としていた(待 ち時間 が非常 に短 いのでループする以外 のウェイト手段 を採用 できなかった)。タイミングループはプロセッサの処理 速度 の違 いを較正 しなければならない。そこでカーネルでブート時 にビジーループを実際 に回 してみて、そのコンピュータがどの程度 の速度 かを測定 することにした。"Bogo" は "bogus"(いんちきの)に由来 し、それが一種 のごまかしであることを意味 している。BogoMipsの値 はプロセッサ速度 の一種 の指標 を与 えるが、あまりにも非 科学 的 なので BogoMips以外 に呼 び様 がない。
ブート時 にその値 を表示 する理由 は2つある。第 一 にそのコンピュータのキャッシュや加速 手段 が正 しく機能 しているかをチェックするのに使 える。第 二 にリーナスはこのニュースを聞 いて混乱 している人々 を見 かけたときにくすくす笑 うのが大好 きである。
BogoMipsの正 しい比較 [編集 ]
システム | インデックス | |
---|---|---|
Intel 8088 | clock × 0.004 | 0.02 |
Intel/AMD 386SX | clock × 0.14 | 0.8 |
Intel/AMD 386DX | clock × 0.18 | 1 (これを 1 とした |
Motorola 68030 | clock × 0.25 | 1.4 |
Cyrix/IBM 486 | clock × 0.34 | 1.8 |
Intel Pentium | clock × 0.40 | 2.2 |
Intel486 | clock × 0.50 | 2.8 |
AMD 5x86 | clock × 0.50 | 2.8 |
MIPS R4000/R4400 | clock × 0.50 | 2.8 |
ARM9 | clock × 0.50 | 2.8 |
Motorola 8081 | clock × 0.65 | 3.6 |
Motorola 68040 | clock × 0.67 | 3.7 |
PowerPC 603 | clock × 0.67 | 3.7 |
Intel StrongARM | clock × 0.66 | 3.7 |
NexGen Nx586 | clock × 0.75 | 4.2 |
PowerPC 601 | clock × 0.84 | 4.7 |
Alpha 21064/21064A | clock × 0.99 | 5.5 |
Alpha 21066/21066A | clock × 0.99 | 5.5 |
Alpha 21164/21164A | clock × 0.99 | 5.5 |
Intel Pentium Pro | clock × 0.99 | 5.5 |
Cyrix Cx5x86/6x86 | clock × 1.00 | 5.6 |
Intel Pentium II/III | clock × 1.00 | 5.6 |
AMD K7/Athlon | clock × 1.00 | 5.6 |
Intel Celeron | clock × 1.00 | 5.6 |
Intel Itanium | clock × 1.00 | 5.6 |
MIPS R4600 | clock × 1.00 | 5.6 |
Hitachi SH-4 | clock × 1.00 | 5.6 |
Raspberry Pi (Model B) | clock × 1.00 | 5.6 |
Intel Itanium 2 | clock × 1.49 | 8.3 |
Alpha 21264 | clock × 1.99 | 11.1 |
VIA Centaur | clock × 1.99 | 11.1 |
AMD K5/K6/K6-2/K6-III | clock × 2.00 | 11.1 |
AMD Duron/Athlon XP | clock × 2.00 | 11.1 |
AMD Sempron | clock × 2.00 | 11.1 |
UltraSparc II | clock × 2.00 | 11.1 |
Intel Pentium MMX | clock × 2.00 | 11.1 |
Intel Pentium 4 | clock × 2.00 | 11.1 |
Intel Pentium M | clock × 2.00 | 11.1 |
Intel Core Duo | clock × 2.00 | 11.1 |
Intel Core 2 Duo | clock × 2.00 | 11.1 |
Intel Atom N455 | clock × 2.00 | 11.1 |
Centaur C6-2 | clock × 2.00 | 11.1 |
PowerPC 604/604e/750 | clock × 2.00 | 11.1 |
Intel Pentium III Coppermine | clock × 2.00 | 11.1 |
Intel Pentium III Xeon | clock × 2.00 | 11.1 |
Motorola 68060 | clock × 2.01 | 11.2 |
Intel Xeon MP (32-bit)(ハイパースレッディング) | clock × 3.97 | 22.1 |
IBM S390 | データが |
|
Intel ARM | データが |
BogoMipsの
Linuxカーネル 2.2.14
BogoMIPSの計算 [編集 ]
Linuxカーネル (2.6.x) での BogoMips は /usr/src/linux/init/calibrate.c
というソースファイルでloops_per_jiffy
(Jiffy についてはジフィを
/* * A simple loop like * while ( jiffies < start_jiffies+1) * start = read_current_timer(); * will not do. As we don't really know whether jiffy switch * happened first or timer_value was read first. And some asynchronous * event can happen between these two events introducing errors in lpj. * * So, we do * 1. pre_start <- When we are sure that jiffy switch hasn't happened * 2. check jiffy switch * 3. start <- timer value before or after jiffy switch * 4. post_start <- When we are sure that jiffy switch has happened * * Note, we don't know anything about order of 2 and 3. * Now, by looking at post_start and pre_start difference, we can * check whether any asynchronous event happened or not */
loops_per_jiffy
はudelay
ndelay
/usr/src/linux/arch/i386/lib/delay.c
にて delay_loop
が
/* 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のさらなる
脚注 [編集 ]
- ^ Van Dorst, Wim (January 1996). “The Quintessential Linux Benchmark”. Linux Journal 2008
年 8月 22日 閲覧 。. - ^ エリック・レイモンドとジェフ・マッケンジーが1990
年代 初 めごろインターネットで発言 したが、起源 は追跡 不能 。 - ^ Raymond, Eric S.. “Hackers Jargon File”. 2012
年 7月 15日 閲覧 。 - ^ a b Van Dorst, Wim (2006
年 3月 2日 ). “BogoMips Mini-Howto”. 2008年 8月 22日 閲覧 。 - ^ Blidung, Thomas. “Re: How many BogoMips should I expect from my 486DX2 running Linux?”. 2012
年 7月 15日 閲覧 。 - ^ Wirzenius, Lars. “Re: printing & BogoMips”. 2012
年 7月 15日 閲覧 。 - ^ Bekman, Stas. “What is a BogoMip?”. 2012
年 7月 15日 閲覧 。
外部 リンク[編集 ]
この