1. Que sont les BogoMips~?

Contenu de cette section

D'après Lars Wirzenius wirzeniu@kruuna.Helsinki.fi, courrier du 9 septembre 1993, expliquant ce que sont les BogoMips, et quelques informations complémentaires de Win van Dorst~:

MIPS est l'abréviation de Millions d'Instructions Par Seconde. C'est une façon de mesurer la vitesse de traitement d'un programme par un microprocesseur. Comme la plupart des unités de ce type, on l'utilise le plus souvent abusivement, car il est très difficile de comparer avec justesse les vitesses exprimées en MIPS de différents types de microprocesseurs.

Les BogoMips sont une invention de Linus.

Le noyau (ou peut-être est-ce un pilote de périphérique~?) a besoin d'une boucle d'attente (le temps d'attente est trop court ou requiert une trop grande précision pour utiliser une autre méthode qu'une attente active) qu'il est nécessaire de calibrer en fonction de la vitesse du processeur sur lequel Linux s'exécute. Ainsi le noyau mesure lors du démarrage la vitesse d'exécution d'une boucle d'instructions déterminée.

Bogo vient de l'américain bogus, qui signifie faux, bidon. Une vitesse en BogoMips donne donc une indication de la vitesse d'un microprocesseur, mais l'unité est définie trop peu scientifiquement pour que l'on puisse l'appeler autrement qu'un BogoMips.

Les raisons (il y en a deux) pour lesquelles la mesure de cette vitesse est affichée lors du démarrage du noyau sont~:

L'algorithme C qui calcule le nombre de BogoMips se trouve dans le fichier source /usr/src/linux/init/main.c, et c'est la variable du noyau associée loops_per_sec (boucles par seconde) qui est utilisée par les différents pilotes réseaux, SCSI ou caractères (essayer find /usr/src/linux -name '*.[hcS] -print -exec fgrep loops_per_sec {} \ ;). Les fonctions d'attente à proprement parler sont en assembleur, et donc chaque plateforme a les siennes que l'on peut trouver dans include/asm/delay.h.


Chapitre suivant

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre