BogoMips - BogoMips

BogoMips (от «фальшивый» и MIPS ) является грубым измерением Скорость процессора сделано Ядро Linux когда он загружается для калибровки внутреннего шлейф занятости.[1] Часто цитируемое определение этого термина - это «количество миллионов раз в секунду, когда процессор абсолютно ничего не может сделать».[2][3]

BogoMips - это значение, которое можно использовать для проверки того, находится ли рассматриваемый процессор в надлежащем диапазоне аналогичных процессоров, т.е. BogoMips представляет тактовую частоту процессора, а также потенциально присутствующую Кэш процессора. Его нельзя использовать для сравнения производительности различных процессоров.[4]

История

В 1993 году Ларс Вирзениус опубликовал Usenet сообщение[5] объясняя причины его введения в ядро ​​Linux на comp.os.linux:

[...]
MIPS - это сокращение от "Миллионы инструкций в секунду". Это мера скорости вычислений процессора. Как и большинство подобных мер, им чаще злоупотребляют, чем используют должным образом (очень сложно справедливо сравнивать MIPS для разных типов компьютеров).
BogoMips - это Линус собственное изобретение. Ядро Linux версии 0.99.11 (от 11 июля 1993 г.) нуждалось в цикле синхронизации (время слишком короткое и / или должно быть слишком точным для метода ожидания без цикла занятости), который должен быть откалиброван для процессора. скорость машины. Следовательно, ядро ​​во время загрузки измеряет, насколько быстро на компьютере выполняется определенный вид цикла занятости. «Бого» происходит от «фальшивка», то есть что-то, что является подделкой. Следовательно, значение BogoMips дает некоторое представление о скорости процессора, но это слишком ненаучно, чтобы называть его иначе, как BogoMips.
Причины (их две), которые печатаются во время загрузки, заключаются в том, что а) это немного полезно для отладки и для проверки работы кешей и турбо-кнопок компьютера, и б) Линус любит посмеиваться, когда видит запутали людей в новостях.
[...]

Правильный рейтинг BogoMips

В качестве очень приблизительного ориентира BogoMips можно предварительно рассчитать по следующей таблице. Данный рейтинг типичен для этого ЦПУ с действующими на тот момент и применимыми Linux версия. Индекс представляет собой отношение «BogoMips на тактовую частоту» для любого процессора к тому же значению для процессора Intel 386DX для целей сравнения.[6][7]

СистемаРейтингПоказатель
Intel 8088часы × 0,0040.02
Intel / AMD 386SXчасы × 0,140.8
Intel / AMD 386DXчасы × 0,181 (определение)
Motorola 68030часы × 0,251.4
Cyrix /IBM 486часы × 0,341.8
Intel Pentiumчасы × 0,402.2
Intel 486часы × 0,502.8
AMD 5x86часы × 0,502.8
MIPS R4000 / R4400часы × 0,502.8
ARM9часы × 0,502.8
Motorola 68040часы × 0,673.7
PowerPC 603часы × 0,673.7
Intel Сильная рукачасы × 0,663.7
NexGen Nx586часы × 0,754.2
PowerPC 601часы × 0,844.7
Альфа 21064 / 21064Aчасы × 0,995.5
Альфа 21066 / 21066Aчасы × 0,995.5
Альфа 21164 / 21164Aчасы × 0,995.5
Intel Pentium Proчасы × 0,995.5
Cyrix 5x86 /6x86часы × 1,005.6
Intel Pentium II /IIIчасы × 1,005.6
AMD K7 / Athlonчасы × 1,005.6
Intel Celeronчасы × 1,005.6
Intel Itaniumчасы × 1,005.6
R4600часы × 1,005.6
Hitachi SH-4часы × 1,005.6
Raspberry Pi (модель B)часы × 1,005.6
Intel Itanium 2часы × 1,498.3
Альфа 21264часы × 1,9911.1
ВИА Кентаврчасы × 1,9911.1
AMD K5 / K6 / K6-2 / K6-IIIчасы × 2,0011.1
AMD Duron /Athlon XPчасы × 2,0011.1
AMD Семпрончасы × 2,0011.1
UltraSparc IIчасы × 2,0011.1
Intel Pentium MMXчасы × 2,0011.1
Intel Pentium 4часы × 2,0011.1
Intel Pentium Mчасы × 2,0011.1
Intel Core Duoчасы × 2,0011.1
Intel Core 2 Duoчасы × 2,0011.1
Intel Атом N455часы × 2,0011.1
Кентавр C6-2часы × 2,0011.1
PowerPC 604 / 604e / 750часы × 2,0011.1
Intel Pentium III Coppermineчасы × 2,0011.1
Intel Pentium III Xeonчасы × 2,0011.1
Motorola 68060часы × 2,0011.1
Intel Xeon MP (32-бит) (Hyper Threading )часы × 3,9722.1
IBM S390недостаточно данных (пока)
РУКАнедостаточно данных (пока)

В ядре Linux 2.2.14 кеширование настройка состояния процессора перенесена из-за спины в до расчета BogoMips. Хотя сам алгоритм BogoMips не был изменен, начиная с этого ядра рейтинг BogoMips для текущих процессоров Pentium был вдвое выше, чем рейтинг до изменения. Измененный результат BogoMips не повлиял на реальную производительность процессора.[нужна цитата ]

В Linux BogoMips можно легко получить, выполнив поиск в cpuinfo файл:[7]

$ grep -i bogomips / proc / cpuinfo

Расчет BogoMIPS

В ядре 2.6.x BogoMIPS реализован в /usr/src/linux/init/calibrate.c исходный файл ядра. Он вычисляет параметр времени ядра Linux loops_per_jiffy (увидеть быстро ) ценность. Объяснение из исходного кода:

  / * * Простой цикл, например * while (jiffies 

loops_per_jiffy используется для реализации udelay (задержка в микросекундах) и ndelay (задержка в наносекундах) функции. Эти функции необходимы некоторым драйверам для ожидания оборудования. Обратите внимание, что занято ожиданием используется техника, поэтому ядро ​​эффективно блокируется при выполнении ndelay/udelay функции. Для архитектуры i386 delay_loop реализуется в /usr/src/linux/arch/i386/lib/delay.c так как:

/ * задержка на основе простого цикла: * /статический пустота delay_loop(беззнаковый длинная петли){  int d0;  __как м__ __volatile__(    " тjmp 1f п"    ".align 16 п"    "1: тjmp 2f п"    ".align 16 п"    "2: тдекларировать% 0 п  тjns 2b "    :"= & а" (d0)    :"0" (петли));}

эквивалент следующего кода ассемблера

; ввод: eax = d0; вывод: eax = 0       jmp  Начните.align 16Начните: jmp  тело.align 16тело:  декларировать eax       jns  тело

который можно переписать в C-псевдокод

статический пустота delay_loop(длинная петли){  длинная d0 = петли;  делать {    --d0;  } в то время как (d0 >= 0);}

Полную и полную информацию и подробности о BogoMips, а также сотни справочных статей можно найти в (устаревшем) мини-руководстве BogoMips.[4]

Задержки на основе таймера

В 2012, РУКА внес новый udelay реализация, позволяющая использовать системный таймер, встроенный во многие процессоры ARMv7, вместо цикла «занято-ожидание». Эта реализация была выпущена в версии 3.6 Ядро Linux.[8] Задержки на основе таймера более устойчивы в системах, которые используют частотное масштабирование для динамической регулировки скорости процессора во время выполнения, как loops_per_jiffies значения не обязательно могут масштабироваться линейно. Кроме того, поскольку частота таймера известна заранее, калибровка во время загрузки не требуется.

Одним из побочных эффектов этого изменения является то, что значение BogoMIPS будет отражать частоту таймера, а не частоту ядра процессора. Обычно частота таймера намного ниже максимальной частоты процессора, и некоторые пользователи могут быть удивлены, увидев необычно низкое значение BogoMIPS при сравнении с системами, которые используют традиционные циклы «занято-ожидание».

Смотрите также

использованная литература

  1. ^ Ван Дорст, Вим (январь 1996 г.). «Типичный эталонный тест Linux». Linux журнал. Получено 2008-08-22.
  2. ^ Эрик С. Раймонд, и Джефф Маккензи, опубликовано на Интернет в начале 1990-х годов неустановленное происхождение.
  3. ^ Раймонд, Эрик С. "Файл жаргона хакеров".
  4. ^ а б Ван Дорст, Вим (2 марта 2006 г.). "BogoMips Mini-Howto" (Изд. V38). Получено 2008-08-22.
  5. ^ Вирзениус, Ларс. "Re: Printing & BogoMips".
  6. ^ Бекман, Стас. "Что такое BogoMip?".
  7. ^ а б «BogoMips mini-Howto».
  8. ^ Дьякон, Уилл. «ARM: 7452/1: задержка: позволяет выбрать реализацию задержки на основе таймера».

внешние ссылки