BogoMIPS
BogoMIPS (от англ. bogus (поддельный) и MIPS — англ. Millions of Instructions Per Second ) — в ядре Линукс ненаучный способ измерения производительности компьютера, предназначенный для калибровки внутренних циклов. Термин изобрёл Линус Торвальдс в 1993. BogoMIPS шутливо определяется как «сколько миллионов раз в секунду компьютер может абсолютно ничего не делать».
Причина возникновения такой величины в том, что для работы с некоторыми видами оборудования ядру системы требуются короткие временны́е задержки, которые реализуются в форме пустых циклов. Чтобы узнать, сколько именно раз надо повторять пустой цикл, необходимо выяснить скорость его выполнения на данной машине — именно для этого используется BogoMIPS.
При начальной загрузке ядра выдаётся сообщение примерно такого вида:
Calibrating delay loop… 2994.99 BogoMIPS
Во время работы значение BogoMIPS можно узнать, прочитав файл /proc/cpuinfo
Величина BogoMIPS обычно пропорциональна тактовой частоте процессора, но также зависит от архитектуры процессора и работы кэша.
Ссылки
- BogoMips mini-Howto
- Он же по-русски, довольно устаревшая версия.
- BogoMips рейтинг
- Ядро Linux
Wikimedia Foundation . 2010 .
- Водолазное снаряжение
- Циховский, Николай
Полезное
Смотреть что такое «BogoMIPS» в других словарях:
- BogoMips — (from bogus and MIPS) is an unscientific measurement of CPU speed made by the Linux kernel when it boots, to calibrate an internal busy loop.cite journal | first = Wim | last = Van Dorst | journal = Linux Journal | title = The Quintessential… … Wikipedia
- BogoMips — Saltar a navegación, búsqueda Los BogoMIPS es una unidad de medida de un computador inventada por Linus Torvalds para el Kernel de Linux. El sistema necesita una forma para la temporización que debe ser calibrado con la velocidad del propio… … Wikipedia Español
- BogoMIPS — Le BogoMips (de bogus et million d instructions par seconde (MIPS)) est une unité de mesure non scientifique de la vitesse du processeur calculée par le noyau Linux lorsqu il boote, pour calibrer une boucle d activité interne. Une autre version… … Wikipédia en Français
- Bogomips — Le BogoMips (de bogus et million d instructions par seconde (MIPS)) est une unité de mesure non scientifique de la vitesse du processeur calculée par le noyau Linux lorsqu il boote, pour calibrer une boucle d activité interne. Une autre version… … Wikipédia en Français
- BogoMips — ist ein im Linux Kernel verwendetes „unwissenschaftliches“ Maß für die CPU Geschwindigkeit. Der Wert wird beim Booten ermittelt, um eine interne Warteschleife zu kalibrieren. Der Name leitet sich vom englischen bogus – gefälscht,… … Deutsch Wikipedia
- Bogomips — ist ein im Linux Kernel verwendetes „unwissenschaftliches“ Maß für die CPU Geschwindigkeit. Der Wert wird beim Booten ermittelt, um eine interne Warteschleife zu kalibrieren. Der Name leitet sich vom englischen bogus – gefälscht, scheinbar – und… … Deutsch Wikipedia
- BogoMips — Le BogoMips (de bogus et million d instructions par seconde (MIPS)) est une unité de mesure non scientifique de la vitesse du processeur calculée par le noyau Linux lorsqu il boote, pour calibrer une boucle d activité interne. Une autre version… … Wikipédia en Français
- BogoMips — unter Linux Mass für Prozessorgeschwindigkeit Ian Jackson s List of Frequently asked questions, of 3/1/1994: BogoMips is a contraction of Bogus MIPS . MIPS stands for (depending who you listen to) Millions of Instructions per Second, or… … Acronyms
- BogoMips — unter Linux Mass für Prozessorgeschwindigkeit Ian Jackson s List of Frequently asked questions, of 3/1/1994: BogoMips is a contraction of Bogus MIPS . MIPS stands for (depending who you listen to) Millions of Instructions per Second, or… … Acronyms von A bis Z
- BogoMips — … Википедия
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
BogoMIPS
BogoMIPS (от англ. bogus (поддельный) и MIPS — англ. Millions of Instructions Per Second ) — в ядре Линукс способ измерения скорости исполнения инструкций на компьютере, предназначенный для калибровки внутренних циклов. Термин изобрёл Линус Торвальдс в 1993. BogoMIPS шутливо определяется как «сколько миллионов раз в секунду компьютер может абсолютно ничего не делать». Несмотря на наличие MIPS в названии величины, она ненаучна и не является метрикой общей производительности.
Причина возникновения такой величины в том, что для работы с некоторыми видами оборудования ядру системы требуются короткие временны́е задержки, которые реализуются в форме пустых циклов. Чтобы узнать, сколько именно раз надо повторять пустой цикл, необходимо выяснить скорость его выполнения на данной машине — именно для этого используется BogoMIPS.
При начальной загрузке ядра выдаётся сообщение примерно такого вида:
Calibrating delay loop… 2994.99 BogoMIPS
Во время работы значение BogoMIPS можно узнать, прочитав файл /proc/cpuinfo
Величина BogoMIPS обычно пропорциональна тактовой частоте процессора, но также зависит от архитектуры и микроархитектуры процессора и работы кэша.
Для многих современных процессоров (x86, SPARC, 68k, Alpha 21264), величина BogoMIPS близка к удвоенной частоте. [1]
Интересные факты
- Использование инструкций nop в цикле задержки без калибровки может приводить к странным последствиям, так как некоторые x86 процессоры, выпущенные в 2010-х, способны исполнять до 4 операций nop каждый такт [2] .
Напишите отзыв о статье «BogoMIPS»
Примечания
- ↑ BogoMips mini-Howto, «2.2 How to estimate what the proper BogoMips rating should be»: «. clock * 2.00»
- ↑ www.agner.org/optimize/instruction_tables.pdf
Ссылки
- [www.faqs.org/docs/Linux-mini/BogoMips.html BogoMips mini-Howto] // Wim van Dorst, v33, 2002-04-07
- [tldp.org/HOWTO/BogoMips/index.html BogoMips mini-Howto] // Wim van Dorst, 2006-03-02, version V38
- [ruslandh.narod.ru/howto_ru/mini/BogoMips/ Устаревшая версия перевода BogoMIPS Howto].
- github.com/vitalyvch/Bogo/tree/BogoMIPS_v1.3 // Sources of a classic standalone benchmark
Отрывок, характеризующий BogoMIPS
– Ты говоришь, при смерти?
Соня кивнула головой.
Графиня обняла Соню и заплакала.
«Пути господни неисповедимы!» – думала она, чувствуя, что во всем, что делалось теперь, начинала выступать скрывавшаяся прежде от взгляда людей всемогущая рука.
– Ну, мама, все готово. О чем вы. – спросила с оживленным лицом Наташа, вбегая в комнату.
– Ни о чем, – сказала графиня. – Готово, так поедем. – И графиня нагнулась к своему ридикюлю, чтобы скрыть расстроенное лицо. Соня обняла Наташу и поцеловала ее.
Наташа вопросительно взглянула на нее.
– Что ты? Что такое случилось?
– Ничего… Нет…
– Очень дурное для меня. Что такое? – спрашивала чуткая Наташа.
Соня вздохнула и ничего не ответила. Граф, Петя, m me Schoss, Мавра Кузминишна, Васильич вошли в гостиную, и, затворив двери, все сели и молча, не глядя друг на друга, посидели несколько секунд.
Граф первый встал и, громко вздохнув, стал креститься на образ. Все сделали то же. Потом граф стал обнимать Мавру Кузминишну и Васильича, которые оставались в Москве, и, в то время как они ловили его руку и целовали его в плечо, слегка трепал их по спине, приговаривая что то неясное, ласково успокоительное. Графиня ушла в образную, и Соня нашла ее там на коленях перед разрозненно по стене остававшимися образами. (Самые дорогие по семейным преданиям образа везлись с собою.)
На крыльце и на дворе уезжавшие люди с кинжалами и саблями, которыми их вооружил Петя, с заправленными панталонами в сапоги и туго перепоясанные ремнями и кушаками, прощались с теми, которые оставались.
Как и всегда при отъездах, многое было забыто и не так уложено, и довольно долго два гайдука стояли с обеих сторон отворенной дверцы и ступенек кареты, готовясь подсадить графиню, в то время как бегали девушки с подушками, узелками из дому в кареты, и коляску, и бричку, и обратно.
BogoMips
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]
| Система | Рейтинг | Индекс |
|---|---|---|
| Intel 8088 | часы × 0,004 | 0,02 |
| Intel / AMD 386SX | часы × 0,14 | 0,8 |
| Intel / AMD 386DX | часы × 0,18 | 1 (определение) |
| Motorola 68030 | часы × 0,25 | 1.4 |
| Cyrix / IBM 486 | часы × 0,34 | 1,8 |
| Intel Pentium | часы × 0,40 | 2.2 |
| Intel 486 | часы × 0,50 | 2,8 |
| AMD 5×86 | часы × 0,50 | 2,8 |
| MIPS R4000 / R4400 | часы × 0,50 | 2,8 |
| ARM9 | часы × 0,50 | 2,8 |
| Motorola 68040 | часы × 0,67 | 3,7 |
| PowerPC 603 | часы × 0,67 | 3,7 |
| Intel StrongARM | часы × 0,66 | 3,7 |
| NexGen Nx586 | часы × 0,75 | 4.2 |
| PowerPC 601 | часы × 0,84 | 4,7 |
| Альфа 21064 / 21064A | часы × 0,99 | 5.5 |
| Альфа 21066 / 21066A | часы × 0,99 | 5.5 |
| Альфа 21164 / 21164A | часы × 0,99 | 5.5 |
| Intel Pentium Pro | часы × 0,99 | 5.5 |
| Cyrix 5×86 / 6×86 | часы × 1,00 | 5,6 |
| Intel Pentium II / III | часы × 1,00 | 5,6 |
| AMD K7 / Athlon | часы × 1,00 | 5,6 |
| Intel Celeron | часы × 1,00 | 5,6 |
| Intel Itanium | часы × 1,00 | 5,6 |
| R4600 | часы × 1,00 | 5,6 |
| Hitachi SH-4 | часы × 1,00 | 5,6 |
| Raspberry Pi (модель B) | часы × 1,00 | 5,6 |
| Intel Itanium 2 | часы × 1,49 | 8,3 |
| Альфа 21264 | часы × 1,99 | 11.1 |
| ВИА Кентавр | часы × 1,99 | 11.1 |
| AMD K5 / K6 / K6-2 / K6-III | часы × 2,00 | 11.1 |
| AMD Duron / Athlon XP | часы × 2,00 | 11.1 |
| AMD Sempron | часы × 2,00 | 11.1 |
| UltraSparc II | часы × 2,00 | 11.1 |
| Intel Pentium MMX | часы × 2,00 | 11.1 |
| Intel Pentium 4 | часы × 2,00 | 11.1 |
| Intel Pentium M | часы × 2,00 | 11.1 |
| Intel Core Duo | часы × 2,00 | 11.1 |
| Intel Core 2 Duo | часы × 2,00 | 11.1 |
| Intel Atom N455 | часы × 2,00 | 11.1 |
| Кентавр C6-2 | часы × 2,00 | 11.1 |
| PowerPC 604 / 604e / 750 | часы × 2,00 | 11.1 |
| Intel Pentium III Coppermine | часы × 2,00 | 11.1 |
| Intel Pentium III Xeon | часы × 2,00 | 11.1 |
| Motorola 68060 | часы × 2,00 | 11.1 |
| Intel Xeon MP (32-бит) ( гиперпоточность ) | часы × 3,97 | 22,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 (см. Jiffy ). Объяснение из исходного кода:
/ * * Простой цикл вроде * в то время как (jiffies * start = read_current_timer (); * не пойдет. Поскольку мы действительно не знаем, является ли переключатель jiffy * произошло первым, или значение timer_value было прочитано первым. И некоторые асинхронные * событие может произойти между этими двумя событиями, что приведет к ошибкам в lpj. * * Итак, делаем * 1. pre_start * 2. проверьте переключатель jiffy * 3. start * 4. post_start * * Обратите внимание, мы ничего не знаем о порядке 2 и 3. * Теперь, глядя на разницу post_start и pre_start, мы можем * проверить, произошло ли какое-либо асинхронное событие или нет * /
loops_per_jiffy используется для реализации функций udelay (задержка в микросекундах) и ndelay (задержка в наносекундах). Эти функции необходимы некоторым драйверам для ожидания оборудования. Обратите внимание, что используется метод ожидания при занятости , поэтому ядро эффективно блокируется при выполнении ndelay / udelay functions. Для i386 архитектура delay_loop реализована в /usr/src/linux/arch/i386/lib/delay.c виде:
/ * задержка на основе простого цикла: * / static void delay_loop ( беззнаковые длинные циклы ) int d0 ; __asm__ __volatile__ ( " \ 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 ( длинные циклы ) длинные d0 = циклы ; do - d0 ; > while ( d0 > = 0 ); >
Полную и полную информацию и подробности о BogoMips, а также сотни справочных статей можно найти в (устаревшем) мини-руководстве BogoMips. [4]
Задержки по таймеру
В 2012 году ARM представила новую udelay реализацию, позволяющую использовать системный таймер, встроенный во многие процессоры ARMv7, вместо цикла «занято-ожидание». Эта реализация была выпущена в версии 3.6 ядра Linux . [8] Задержки на основе таймера более устойчивы в системах, которые используют масштабирование частоты для динамической регулировки скорости процессора во время выполнения, поскольку loops_per_jiffies значения не обязательно могут масштабироваться линейно. Кроме того, поскольку частота таймера известна заранее, калибровка во время загрузки не требуется.
Одним из побочных эффектов этого изменения является то, что значение BogoMIPS будет отражать частоту таймера, а не частоту ядра процессора. Обычно частота таймера намного ниже максимальной частоты процессора, и некоторые пользователи могут быть удивлены, увидев необычно низкое значение BogoMIPS при сравнении с системами, которые используют традиционные циклы «занято-ожидание».
Смотрите также
- Кнопка Turbo
Рекомендации
- ↑ Ван Дорст, Вим (январь 1996 г.). «Наиболее существенный тест Linux» . Linux Journal . Проверено 22 августа 2008 .
- ↑ Eric S Raymond и Geoff Mackenzie , опубликованные в Интернете в начале 1990-х годов, происхождение неизвестно.
- ^
- Раймонд, Эрик С. «Файл жаргона хакеров» .
- ^ а б
- Ван Дорст, Вим (2 марта 2006 г.). «BogoMips Mini-Howto» (изд. V38) . Проверено 22 августа 2008 .
- ^
- Вирзениус, Ларс. «Re: печать и BogoMips» .
- ^
- Бекман, Стас. «Что такое BogoMip?» .
- ^ а б
- «Мини-Howto БогоМипс» .
- ^
- Дьякон, Уилл. «ARM: 7452/1: delay: позволяет выбрать реализацию задержки на основе таймера» .
Внешние ссылки
- BogoMips Mini-Howto, V38
- Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.
- Источники классического автономного теста
Bogomips что такое
Значение BogoMIPS вычисляется ядром и выводится во время инициализации системы. Оно определяет сколько раз за секунду ЦП может выполнять короткий цикл временной задержки. В рамках ядра значение BogoMIPS используется, в основном, драйверами устройств, которые должны обеспечивать временные задержки для ожидания освобождения устройств — например, ожидание в течение нескольких микросекунд готовности информации.
Ограниченное применение числа BogoMIPS связано, прежде всего, с отсутствием документации на него. Следует отметить, что BogoMIPS реализует одну из наидревнейших, присущих человечеству потребностей — сведение до одного числа всей информации, характеризующей производительность компьютера. Часть «Bogo» в слове «BogoMIPS» произрастает из «bogus» («поддельный»), что определенно свидетельствует о желании отбить охоту его использовать; что же касаемо неаккуратности, безалаберности, непригодности, лживости, полной неспособности сравнивать производительность различных систем, то по этим «приятным» показателям значение BogoMIPS оставляет далеко позади другие системы оценки производительности. Вместе с тем, BogoMIPS не в меру обаятельно, потому-то оно здесь и рассматривается. (Часть «MIPS» в слове «BogoMIPS» означает «миллионов операций в секунду» ( M illions of I nstructions P er S econd), что является общей единицей при оценке производительности ЦП.)
calibrate_delay
19654: calibrate_delay — это функция ядра, которая вычисляет значение BogoMIPS.
19662: Как первое приближение, calibrate_delay вычисляет количество циклов __delay (строка 6866), выполняемых в течение одного тика таймера, т.е. за одну сотую долю секунды.
19664: Вычисление количества циклов, приходящихся на один тик таймера, требует начать подсчет как можно более близко к началу тика. Глобальная переменная jiffies (строка 16588) хранит количество тиков таймера с момента начала подсчета ядром (более подробно об этом рассказывается в главе 6). jiffies обновляется асинхронно в прерывании, т.е. сто раз в секунду. При этом ядро приостанавливает все активные процессы, обновляет эту переменную, после чего возобновляет свою работу с того места, где она была приостановлена. Если этого не сделать, цикл в следующей строке никогда не завершится. Поскольку jiffies объявлена как volatile и ее значение будет изменяться по причинам, невидимым для компилятора, gcc может оптимизировать цикл таким образом, что он никогда не завершится, gcc пока еще не настоль интеллектуален, однако его создатели предпринимают попытки сделать его таковым.
19669: Как раз можно начинать отработку нового тика таймера, который только что совершился. Следующий шаг заключается в организации задержки размером loops_per_sec проходов цикла таймера и выяснении, прошел ли полный тик таймера. Если это так, цикл завершается, в противном случае цикл стартует заново с удвоенным значением loops_per_sec . Именно такая форма цикла связана частично с тем, что существующие компьютеры не могут выполнять цикл задержки где-то около 2 32 раз в секунду (для 64-разрядных компьютеров — менее 2 64 раз в секунду).
19677: Теперь ядру известно, что loops_per_sec проходов цикла задержки на данном компьютере выполняется дольше одной сотой доли секунды, поэтому оценка уточняется. Производится двоичный поиск истинного значения loops_per_sec , вначале исходя из предположения, что истинное значение находится в пределах между текущей оценкой и ее половиной — истинное значение не может превышать текущую оценку, однако может быть (вероятнее всего, это так) меньше ее.
19681: Тем же способом, что и ранее, calibrate_delay просматривает, не является ли уменьшенное значение loops_per_sec все еще настоль большим, чтобы отнимать полный тик таймера. Если это так, то правильное значение лежит где-то очень близко к текущей оценке (немного меньше ее). Цикл продолжается с меньшим значением. В противном случае цикл продолжается с большим значением.
19691: Ядро имеет очень хороший механизм оценки количества проходов цикла задержки на один полный тик таймера. Это число умножается на количество тиков в секунду, в результате чего получается количество проходов цикла задержки за секунду. Поскольку оценка есть оценка, а умножение ее дополнительно загрубляет, полученное число неточно вплоть до наносекунд. Однако для целей ядра этого оказывается вполне достаточно.
19693: Ядро выводит подсчитанное число, дабы привести пользователя в трепет. Бросается в глаза явное отсутствие спецификатора формата %f — везде, где это возможно, ядро старается избегать использования операций с плавающей запятой. Выводимые магические числа базируются на 500000, что произрастает из 1 миллиона (операций в секунду), деленного на 2 (количество операций в теле цикла задержки — decl и переход).
| netlib.narod.ru | < Назад| Оглавление | Далее > |