TX-2
La computadora TX-2 del Laboratorio Lincoln del MIT fue la sucesora de la Lincoln TX-0 y era conocida por su papel en el avance tanto de la inteligencia... (leer más)
BogoMips (de "bogus" y MIPS) es una medida cruda de la velocidad de la CPU realizada por el kernel de Linux cuando arranca para calibrar un ciclo interno ocupado. Una definición del término que se cita a menudo es "la cantidad de millones de veces por segundo que un procesador no puede hacer absolutamente nada".
BogoMips es un valor que se puede usar para verificar si el procesador en cuestión se encuentra en el rango adecuado de procesadores similares, es decir, BogoMips representa la frecuencia de reloj de un procesador, así como la memoria caché de la CPU potencialmente presente. No se puede utilizar para comparaciones de rendimiento entre diferentes CPU.
En 1993, Lars Wirzenius publicó un mensaje de Usenet explicando las razones de su introducción en el kernel de Linux en comp.os.linux:
Como guía muy aproximada, los BogoMips se pueden precalcular mediante la siguiente tabla. La calificación dada es típica para esa CPU con la versión de Linux actual y aplicable en ese momento. El índice es la proporción de "BogoMips por velocidad de reloj" para cualquier CPU al mismo para una CPU Intel 386DX, para fines de comparación.
Sistema | Valoración | Índice |
---|---|---|
Intel 8088 | reloj × 0,004 | 0,02 |
Intel/AMD 386SX | reloj × 0.14 | 0,8 |
Intel/AMD 386DX | reloj × 0.18 | 1 (definición) |
Motorola 68030 | reloj × 0.25 | 1.4 |
Cyrix/IBM 486 | reloj × 0.34 | 1.8 |
Pentium Intel | reloj × 0.40 | 2.2 |
Intel 486 | reloj × 0.50 | 2.8 |
AMD 5x86 | reloj × 0.50 | 2.8 |
MIPS R4000/R4400 | reloj × 0.50 | 2.8 |
ARM9 | reloj × 0.50 | 2.8 |
Motorola 68040 | reloj × 0,677 | 3.7 |
PowerPC 603 | reloj × 0,677 | 3.7 |
Intel StrongARM | reloj × 0.66 | 3.7 |
NexGen Nx586 | reloj × 0,755 | 4.2 |
PowerPC 601 | reloj × 0,84 | 4.7 |
Alpha 21064/21064A | reloj × 0.99 | 5,5 |
Alpha 21066/21066A | reloj × 0.99 | 5,5 |
Alpha 21164/21164A | reloj × 0.99 | 5,5 |
Intel Pentium Pro | reloj × 0.99 | 5,5 |
Cyrix 5x86/6x86 | reloj × 1.00 | 5.6 |
Intel Pentium II/III | reloj × 1.00 | 5.6 |
AMD K7/Athlon | reloj × 1.00 | 5.6 |
Intel Celeron | reloj × 1.00 | 5.6 |
Intel Itanium | reloj × 1.00 | 5.6 |
R4600 | reloj × 1.00 | 5.6 |
Hitachi SH-4 | reloj × 1.00 | 5.6 |
Raspberry Pi (Model B) | reloj × 1.00 | 5.6 |
Intel Itanium 2 | reloj × 1.49 | 8.3 |
Alpha 21264 | reloj × 1.99 | 11.1 |
VIA Centaur | reloj × 1.99 | 11.1 |
AMD K5/K6/K6-2/K6-III | reloj × 2.00 | 11.1 |
AMD Duron/Athlon XP | reloj × 2.00 | 11.1 |
AMD Sempron | reloj × 2.00 | 11.1 |
UltraSparc II | reloj × 2.00 | 11.1 |
Intel Pentium MMX | reloj × 2.00 | 11.1 |
Pentium Intel 4 | reloj × 2.00 | 11.1 |
Intel Pentium M | reloj × 2.00 | 11.1 |
Intel Core Duo | reloj × 2.00 | 11.1 |
Intel Core 2 Duo | reloj × 2.00 | 11.1 |
Intel Atom N455 | reloj × 2.00 | 11.1 |
Centaur C6-2 | reloj × 2.00 | 11.1 |
PowerPC 604/604e/750 | reloj × 2.00 | 11.1 |
Intel Pentium III Coppermine | reloj × 2.00 | 11.1 |
Intel Pentium III Xeon | reloj × 2.00 | 11.1 |
Motorola 68060 | reloj × 2.00 | 11.1 |
Intel Xeon MP (32-bit) (hiper-threading) | reloj × 3.97 | 22.1 |
IBM S390 | no suficientes datos (sí) | |
ARM | no suficientes datos (sí) |
Con el kernel de Linux 2.2.14, una configuración de almacenamiento en caché del estado de la CPU se movió desde atrás hasta antes del cálculo de BogoMips. Aunque el algoritmo de BogoMips en sí no se modificó, desde ese núcleo en adelante, la calificación de BogoMips para las CPU Pentium actuales era el doble de la calificación antes del cambio. El resultado modificado de BogoMips no tuvo efecto en el rendimiento real del procesador.
En Linux, BogoMips se puede obtener fácilmente buscando en el archivo cpuinfo:
$ grep -i bogomips /proc/cpuinfo
Con el kernel 2.6.x, BogoMIPS se implementa en el archivo fuente del kernel /usr/src/linux/init/calibrate.c
. Calcula el valor del parámetro de temporización del kernel de Linux loops_per_jiffy
(ver jiffy). La explicación del código fuente:
/* * Un simple bucle como * while (jiffies ■ start_jiffies+1) * start = read_current_timer(); * no lo hará. Como realmente no sabemos si el interruptor de jiffy * sucedió primero o timer_value fue leído primero. Y algunos asincrónicos * evento puede ocurrir entre estos dos eventos introduciendo errores en lpj. * * Así que, lo hacemos * 1. pre_start Cuando estamos seguros de que el interruptor de jiffy no ha pasado * 2. Comprueba el interruptor de jiffy * 3. iniciar - valor temporizador antes o después del interruptor de jiffy * 4. post_start Cuando estamos seguros de que el interruptor de jiffy ha pasado * * Nota, no sabemos nada sobre el orden de 2 y 3. * Ahora, mirando la diferencia post_start y pre_start, podemos * comprobar si algún evento asincrónico ocurrió o no */
loops_per_jiffy
se utiliza para implementar las funciones udelay
(retraso en microsegundos) y ndelay
(retraso en nanosegundos). Algunos controladores necesitan estas funciones para esperar el hardware. Tenga en cuenta que se usa una técnica de espera ocupada, por lo que el núcleo se bloquea de manera efectiva al ejecutar las funciones ndelay
/udelay
. Para la arquitectura i386, delay_loop
se implementa en /usr/src/linux/arch/i386/lib/delay.c
como:
/* simple retraso basado en lazo: */estática vacío delay_loop()no firmado largo bucles){} int ♪; __asm__ __volatile__() "tjmp 1fn" "Align 16n" "1:tjmp 2fn" "Align 16n" "2:tdecl %0ntJns 2b :"= ()♪) :"0" ()bucles));}
equivalente al siguiente código ensamblador
; entrada: eax = d0; salida: eax = 0 jmp Empieza. Align 16empezar: jmp cuerpo. Align 16cuerpo: decl eax jns cuerpo
que se puede reescribir en pseudocódigo C
estática vacío delay_loop()largo bucles){} largo ♪ = bucles; do {} --♪; } mientras ()♪ >= 0);}
Puede encontrar información y detalles completos y completos sobre BogoMips, y cientos de entradas de referencia en el mini-Howto (desactualizado) de BogoMips.
En 2012, ARM contribuyó con una nueva implementación de udelay
que permite usar el temporizador del sistema integrado en muchas CPU ARMv7 en lugar de un ciclo de espera ocupado. Esta implementación se lanzó en la versión 3.6 del kernel de Linux. Los retrasos basados en temporizadores son más sólidos en los sistemas que utilizan el escalado de frecuencia para ajustar dinámicamente la velocidad del procesador en tiempo de ejecución, ya que los valores de loops_per_jiffies
pueden no escalar necesariamente de forma lineal. Además, dado que la frecuencia del temporizador se conoce de antemano, no se necesita calibración en el momento del arranque.
Un efecto secundario de este cambio es que el valor de BogoMIPS reflejará la frecuencia del temporizador, no la frecuencia central de la CPU. Por lo general, la frecuencia del temporizador es mucho más baja que la frecuencia máxima del procesador, y algunos usuarios pueden sorprenderse al ver un valor BogoMIPS inusualmente bajo al compararlos con sistemas que usan bucles de espera ocupados tradicionales.
La computadora TX-2 del Laboratorio Lincoln del MIT fue la sucesora de la Lincoln TX-0 y era conocida por su papel en el avance tanto de la inteligencia... (leer más)
Amstrad era una empresa de electrónica británica, fundada en 1968 por Alan Sugar a la edad de 21 años. El nombre es una contracción de Alan Michael Sugar... (leer más)
RSA es un criptosistema de clave pública ampliamente utilizado para la transmisión segura de datos. También es uno de los más antiguos. El acrónimo... (leer más)