stringtranslate.com

БогоМипс

BogoMips (от «bogus» и 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]

В ядре 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(см. jiffy ). Объяснение из исходного кода:

 /* * Простой цикл типа * while (jiffies < start_jiffies+1) * start = read_current_timer(); * не подойдет. Поскольку мы действительно не знаем, произойдет ли мгновенное переключение * произошло первым или значение timer_value было прочитано первым. И немного асинхронности * событие может произойти между этими двумя событиями, что приведет к ошибкам в lpj. * * Итак, мы делаем * 1. pre_start <- Когда мы уверены, что мгновенного переключения не произошло. * 2. проверьте переключатель Jiffy * 3. старт <- значение таймера до или после мгновенного переключения * 4. post_start <- Когда мы уверены, что произошло мгновенное переключение * * Обратите внимание: мы ничего не знаем о порядке 2 и 3. * Теперь, глядя на разницу post_start и pre_start, мы можем * проверить, произошло ли какое-либо асинхронное событие или нет */

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

/* задержка на основе простого цикла: */ static void Delay_loop ( unsigned long Loops ) { int d0 ;       __asm__ __ Летучие__ ( " \t jmp 1f \n " ".align 16 \n " "1: \t jmp 2f \n " ".align 16 \n " "2: \t decl %0 \n\t jns 2b" : "=&a" ( d0 ) : "0" ( циклы )); }          

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

; ввод: eax = d0 ; вывод: eax = 0 jmp start .align 16 start: jmp body .align 16 body: decl eax jns body          

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

static void Delay_loop ( длинные циклы ) { long d0 = циклы ; делать { -- d0 ; } Пока ( d0 >= 0 ); }               

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

Задержки по таймеру

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

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

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

Рекомендации

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

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