Linuxové noviny | Listopad 1997 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Co jsou to BogoMIPS? MIPS je zkratka "Millions of Instructions Per Second". Je to míra "rychlosti" procesoru (Lars Wirzenius napsal v BogoMIPS mini-HOWTO, že jde o "computation speed of program", tedy o výpočetní rychlost programu, což není pravda.) Vydělíme-li hodnotu, kterou nám test BogoMIPS poskytl, číslem 2, dostaneme číslo udávající kolik miliónů prázdných smyček dokáže náš procesor provést během jedné sekundy. Stejně jako mnoho jiných "benchmarků" jsou i BogoMIPS velmi často interpretovány špatně. Je velmi obtížné porovnávat např. procesory i386 s procesory Sparc apod. BogoMIPS jsou Linusovým nápadem. Kernel (nebo spíše jeho ovladače zařízení) potřebují ke své činnosti časovací smyčku, která je závislá na rychlosti procesoru. Proto kernel vždy na začátku své činnosti (při bootování) změří, jak "rychle" proběhne prázdná smyčka a tuto hodnotu si uloží do proměnné loops_per_sec. Tuto proměnnou potom používají některé ovladače zařízení pro své časovací smyčky a hlavně pro čekání. Např. funkce, která čeká zadaný počet milisekund je řešena v ovladači multiportové karty Digiboard v souboru drivers/char/pcxx.c takto:
static void pcxxdelay(int msec) { while(msec- > 0) __delay(loops_per_sec/1000); } Bogo pochází z americké angličtiny z výrazu "bogus", což znamená falešný, nepravý. Proto by nebylo správné interpretovat BogoMIPS jinak, než je výše uvedeno. Existují prý dva důvody, proč jsou BogoMIPS vypisovány při každém bootování Linuxu:
BogoMIPS jsou počítány jednoduchým algoritmem, který je v souboru init/main.c. Tento algoritmus používá funkci delay, která je napsána v assembleru a proto ji najdete v souboru include/asm/delay.h. Zdrojový text z výpisu BogoMIPS pro i386 Linux by po kompilaci libovolným ANSI-C kompatibilním kompilerem měl dělat totéž, co jádro Linuxu při bootování. Je v něm použito algoritmů ze zdrojových textů jádra (© Linus Torvalds, 1991 - 3). Po spuštění se vypíše např.:
Calibrating delay loop.. ok - 39.94 BogoMIPS Samozřejmě tento program nemůže dát stejné výsledky jako jádro, protože soutěží s ostatními uživatelskými procesy o čas procesoru.
Zajímavé by mohlo být porovnání výsledků na stejném počítači pod Linuxem a pod MS-DOSem, ale jak jsem již napsal, BogoMIPS primárně neslouží k porovnávání rychlosti počítačů ani operačních systémů. Viz tabulka Orientační hodnoty BogoMIPS.
Tabulka 1: Orientační hodnoty BogoMIPS |