BogoMips
Encyclopedia
BogoMips is an unscientific measurement of CPU speed made by the Linux kernel
when it boots, to calibrate an internal busy-loop. An oft-quoted definition of the term is "the number of million times per second a processor can do absolutely nothing."
BogoMips is a value that can be used to verify whether the processor in question is in the proper range of similar processors, i.e. BogoMips represents a processor's clock frequency as well as the potentially present CPU cache
. It is not usable for performance comparison between different CPUs.
with the then current and applicable Linux
version. The index is the ratio of "BogoMips per clock speed" for any CPU to the same for an Intel 386DX CPU, for comparison purposes.
Source
For a complete list, refer to the BogoMips mini-Howto.
With the 2.2.14 Linux kernel, a caching
setting of the CPU state was moved from behind to before the BogoMips calculation. Although the BogoMips algorithm itself wasn't changed, from that kernel onward the BogoMips rating for then current Pentium CPUs was twice that of the rating before the change. The changed BogoMips outcome had no effect on real processor performance.
) value. Explanation from source code:
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....
when it boots, to calibrate an internal busy-loop. An oft-quoted definition of the term is "the number of million times per second a processor can do absolutely nothing."
BogoMips is a value that can be used to verify whether the processor in question is in the proper range of similar processors, i.e. BogoMips represents a processor's clock frequency as well as the potentially present CPU cache
CPU cache
A CPU cache is a cache used by the central processing unit of a computer to reduce the average time to access memory. The cache is a smaller, faster memory which stores copies of the data from the most frequently used main memory locations...
. It is not usable for performance comparison between different CPUs.
History
In 1993, Lars Wirzenius posted a mail explaining the reasons for its introduction in the Linux kernel on comp.os.linux:- [...]
- MIPS is short for Millions of Instructions Per Second. It is a measure for the computation speed of a processor. Like most such measures, it is more often abused than used properly (it is very difficult to justly compare MIPS for different kinds of computers).
- BogoMips are Linus's own invention. The linux kernel version 0.99.11 (dated 11 July 1993) needed a timing loop (the time is too short and/or needs to be too exact for a non-busy-loop method of waiting), which must be calibrated to the processor speed of the machine. Hence, the kernel measures at boot time how fast a certain kind of busy loop runs on a computer. "Bogo" comes from "bogus", i.e, something which is a fake. Hence, the BogoMips value gives some indication of the processor speed, but it is way too unscientific to be called anything but BogoMips.
- The reasons (there are two) it is printed during boot-up is that a) it is slightly useful for debugging and for checking that the computers caches and turbo button work, and b) Linus loves to chuckle when he sees confused people on the news.
- [...]
Proper BogoMips ratings
As a very approximate guide, the BogoMips can be pre-calculated by the following table. The given rating is typical for that CPUCentral processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...
with the then current and applicable Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
version. The index is the ratio of "BogoMips per clock speed" for any CPU to the same for an Intel 386DX CPU, for comparison purposes.
System | Rating | Index |
---|---|---|
Intel 8088 Intel 8088 The Intel 8088 microprocessor was a variant of the Intel 8086 and was introduced on July 1, 1979. It had an 8-bit external data bus instead of the 16-bit bus of the 8086. The 16-bit registers and the one megabyte address range were unchanged, however... |
clock × 0.004 | 0.02 |
Intel/AMD 386SX Intel 80386 The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985. The first versions had 275,000 transistors and were used as the central processing unit of many workstations and high-end personal computers of the time... |
clock × 0.14 | 0.8 |
Intel/AMD 386DX Intel 80386 The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985. The first versions had 275,000 transistors and were used as the central processing unit of many workstations and high-end personal computers of the time... |
clock × 0.18 | 1 (definition) |
Motorola 68030 Motorola 68030 The Motorola 68030 is a 32-bit microprocessor in Motorola's 68000 family. It was released in 1987. The 68030 was the successor to the Motorola 68020, and was followed by the Motorola 68040. In keeping with general Motorola naming, this CPU is often referred to as the 030 .The 68030 features on-chip... |
clock × 0.25 | 1.4 |
Cyrix Cyrix Cyrix Corporation was a microprocessor developer that was founded in 1988 in Richardson, Texas as a specialist supplier of high-performance math coprocessors for 286 and 386 microprocessors. The company was founded by former Texas Instruments staff members and had a long but troubled relationship... /IBM IBM International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas... 486 |
clock × 0.34 | 1.8 |
Intel Pentium | clock × 0.40 | 2.2 |
Intel 486 Intel 80486 The Intel 80486 microprocessor was a higher performance follow up on the Intel 80386. Introduced in 1989, it was the first tightly pipelined x86 design as well as the first x86 chip to use more than a million transistors, due to a large on-chip cache and an integrated floating point unit... |
clock × 0.50 | 2.8 |
AMD 5x86 AMD 5x86 The Am5x86 processor is an x86-compatible CPU introduced in 1995 by AMD for use in 486-class computer systems. It was one of the fastest, and most universally-compatible upgrade paths for users of 486 systems.... |
clock × 0.50 | 2.8 |
MIPS MIPS Technologies MIPS Technologies, Inc. , formerly MIPS Computer Systems, Inc., is most widely known for developing the MIPS architecture and a series of pioneering RISC chips. MIPS provides processor architectures and cores for digital home, networking and mobile applications.MIPS Computer Systems Inc. was... R4000/R4400 |
clock × 0.50 | 2.8 |
ARM9 | clock × 0.50 | 2.8 |
Motorola 8081 | clock × 0.65 | 3.6 |
Motorola 68040 Motorola 68040 The Motorola 68040 is a microprocessor from Motorola, released in 1990. It is the successor to the 68030 and is followed by the 68060. There was no 68050. In keeping with general Motorola naming, the 68040 is often referred to as simply the '040 .... |
clock × 0.67 | 3.7 |
PowerPC PowerPC PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM... 603 |
clock × 0.67 | 3.7 |
Intel StrongARM StrongARM The StrongARM is a family of microprocessors that implemented the ARM V4 instruction set architecture . It was developed by Digital Equipment Corporation and later sold to Intel, who continued to manufacture it before replacing it with the XScale.... |
clock × 0.66 | 3.7 |
NexGen NexGen NexGen was a private semiconductor company that designed x86 microprocessors until it was purchased by AMD in 1996.Like competitor Cyrix, NexGen was a fabless design house that designed its chips but relied on other companies for production... Nx586 |
clock × 0.75 | 4.2 |
PowerPC PowerPC PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM... 601 |
clock × 0.84 | 4.7 |
Alpha 21064 Alpha 21064 The Alpha 21064 is a microprocessor developed and fabricated by Digital Equipment Corporation that implemented the Alpha instruction set architecture . It was introduced as the DECchip 21064 before it was renamed in 1994. The 21064 is also known by its code name, EV4... /21064A |
clock × 0.99 | 5.5 |
Alpha 21066 Alpha 21064 The Alpha 21064 is a microprocessor developed and fabricated by Digital Equipment Corporation that implemented the Alpha instruction set architecture . It was introduced as the DECchip 21064 before it was renamed in 1994. The 21064 is also known by its code name, EV4... /21066A |
clock × 0.99 | 5.5 |
Alpha 21164 Alpha 21164 The Alpha 21164, also known by its code name, EV5, is a microprocessor developed and fabricated by Digital Equipment Corporation that implemented the Alpha instruction set architecture . It was introduced in January 1995, succeeding the Alpha 21064A as Digital's flagship microprocessor... /21164A |
clock × 0.99 | 5.5 |
Intel Pentium Pro Pentium Pro The Pentium Pro is a sixth-generation x86 microprocessor developed and manufactured by Intel introduced in November 1, 1995 . It introduced the P6 microarchitecture and was originally intended to replace the original Pentium in a full range of applications... |
clock × 0.99 | 5.5 |
Cyrix 5x86 Cyrix Cx5x86 Released in August 1995, four months before the more famous Cyrix 6x86, the Cyrix 5x86 was one of the fastest CPUs ever produced for Socket 3 computer systems... /6x86 Cyrix 6x86 The Cyrix 6x86 is a sixth-generation, 32-bit 80x86-compatible microprocessor designed by Cyrix and manufactured by IBM and SGS-Thomson. It was originally released in 1996.-Architecture:... |
clock × 1.00 | 5.6 |
Intel Pentium II Pentium II The Pentium II brand refers to Intel's sixth-generation microarchitecture and x86-compatible microprocessors introduced on May 7, 1997. Containing 7.5 million transistors, the Pentium II featured an improved version of the first P6-generation core of the Pentium Pro, which contained 5.5 million... /III Pentium III The Pentium III brand refers to Intel's 32-bit x86 desktop and mobile microprocessors based on the sixth-generation P6 microarchitecture introduced on February 26, 1999. The brand's initial processors were very similar to the earlier Pentium II-branded microprocessors... |
clock × 1.00 | 5.6 |
AMD K7/Athlon Athlon Athlon is the brand name applied to a series of x86-compatible microprocessors designed and manufactured by Advanced Micro Devices . The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel's competing processors... |
clock × 1.00 | 5.6 |
Intel Celeron Celeron Celeron is a brand name given by Intel Corp. to a number of different x86 computer microprocessor models targeted at budget personal computers.... |
clock × 1.00 | 5.6 |
Intel Itanium Itanium Itanium is a family of 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel markets the processors for enterprise servers and high-performance computing systems... |
clock × 1.00 | 5.6 |
R4600 R4600 The R4600, code-named "Orion", is a microprocessor developed by Quantum Effect Design that implemented the MIPS III instruction set architecture . As QED was a design firm that did not fabricate or sell their designs, the R4600 was first licensed to Integrated Device Technology , and later to... |
clock × 1.00 | 5.6 |
Hitachi Hitachi, Ltd. is a Japanese multinational conglomerate headquartered in Marunouchi 1-chome, Chiyoda, Tokyo, Japan. The company is the parent of the Hitachi Group as part of the larger DKB Group companies... SH-4 |
clock × 1.00 | 5.6 |
Intel Itanium 2 | clock × 1.49 | 8.3 |
Alpha 21264 Alpha 21264 The Alpha 21264 was a Digital Equipment Corporation RISC microprocessor introduced in October, 1996. The 21264 implemented the Alpha instruction set architecture .- Description :... |
clock × 1.99 | 11.1 |
VIA Centaur VIA Technologies VIA Technologies is a Taiwanese manufacturer of integrated circuits, mainly motherboard chipsets, CPUs, and memory, and is part of the Formosa Plastics Group. It is the world's largest independent manufacturer of motherboard chipsets... |
clock × 1.99 | 11.1 |
AMD K5/K6/K6-2/K6-III AMD K6 The K6 microprocessor was launched by AMD in 1997. The main advantage of this particular microprocessor is that it was designed to fit into existing desktop designs for Pentium branded CPUs. It was marketed as a product which could perform as well as its Intel Pentium II equivalent but at a... |
clock × 2.00 | 11.1 |
AMD Duron Duron The AMD Duron was an x86-compatible microprocessor manufactured by AMD. It was released on June 19, 2000 as a low-cost alternative to AMD's own Athlon processor and the Pentium III and Celeron processor lines from rival Intel... /Athlon Athlon Athlon is the brand name applied to a series of x86-compatible microprocessors designed and manufactured by Advanced Micro Devices . The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel's competing processors... XP |
clock × 2.00 | 11.1 |
AMD Sempron Sempron Sempron has been the marketing name used by AMD for several different budget desktop CPUs, using several different technologies and CPU socket formats. The Sempron replaced the AMD Duron processor and competes against Intel's Celeron series of processors... |
clock × 2.00 | 11.1 |
UltraSparc SPARC SPARC is a RISC instruction set architecture developed by Sun Microsystems and introduced in mid-1987.... II |
clock × 2.00 | 11.1 |
Intel Pentium MMX | clock × 2.00 | 11.1 |
Intel Pentium 4 Pentium 4 Pentium 4 was a line of single-core desktop and laptop central processing units , introduced by Intel on November 20, 2000 and shipped through August 8, 2008. They had a 7th-generation x86 microarchitecture, called NetBurst, which was the company's first all-new design since the introduction of the... |
clock × 2.00 | 11.1 |
Intel Pentium M Pentium M The Pentium M brand refers to a family of mobile single-core x86 microprocessors introduced in March 2003 , and forming a part of the Intel Carmel notebook platform under the then new Centrino brand... |
clock × 2.00 | 11.1 |
Intel Core Duo | clock × 2.00 | 11.1 |
Intel Core 2 Duo | clock × 2.00 | 11.1 |
Intel Atom Intel Atom Intel Atom is the brand name for a line of ultra-low-voltage x86 and x86-64 CPUs from Intel, designed in 45 nm CMOS and used mainly in netbooks, nettops, embedded application ranging from health care to advanced robotics and Mobile Internet devices... N455 |
clock × 2.00 | 11.1 |
Centaur C6-2 | clock × 2.00 | 11.1 |
PowerPC PowerPC PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM... 604/604e/750 |
clock × 2.00 | 11.1 |
Intel Pentium III Coppermine | clock × 2.00 | 11.1 |
Intel Pentium III Xeon | clock × 2.00 | 11.1 |
Motorola 68060 Motorola 68060 The Motorola 68060 is a 32-bit microprocessor from Motorola released in 1994. It is the successor to the Motorola 68040 and is the highest performing member of the 680x0 family. Two derivatives were produced, the 68LC060 and the 68EC060.... |
clock × 2.01 | 11.2 |
Intel Xeon MP (32-bit) (hyper-threading Hyper-threading Hyper-threading is Intel's term for its simultaneous multithreading implementation in its Atom, Intel Core i3/i5/i7, Itanium, Pentium 4 and Xeon CPUs.... ) |
clock × 3.97 | 22.1 |
IBM S390 | not enough data (yet) | |
ARM ARM architecture ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced... |
not enough data (yet) |
Source
For a complete list, refer to the BogoMips mini-Howto.
With the 2.2.14 Linux kernel, a caching
Cache
In computer engineering, a cache is a component that transparently stores data so that future requests for that data can be served faster. The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere...
setting of the CPU state was moved from behind to before the BogoMips calculation. Although the BogoMips algorithm itself wasn't changed, from that kernel onward the BogoMips rating for then current Pentium CPUs was twice that of the rating before the change. The changed BogoMips outcome had no effect on real processor performance.
How are BogoMIPS computed?
With current kernel (2.6.x), Bogomips are implemented in/usr/src/linux/init/calibrate.c
kernel source file. It computes the Linux kernel timing parameter loops_per_jiffy
(see Jiffy (time)Jiffy (time)
Jiffy is an informal term for any unspecified short period of time, as in "I'll be back in a jiffy". From this it has acquired a number of more precise applications for short, very short, or extremely short periods of time...
) value. Explanation from source code:
/*
* A simple loop like
* while ( jiffies < start_jiffies+1)
* start = read_current_timer;
* will not do. As we don't really know whether jiffy switch
* happened first or timer_value was read first. And some asynchronous
* event can happen between these two events introducing errors in lpj.
*
* So, we do
* 1. pre_start <- When we are sure that jiffy switch hasn't happened
* 2. check jiffy switch
* 3. start <- timer value before or after jiffy switch
* 4. post_start <- When we are sure that jiffy switch has happened
*
* Note, we don't know anything about order of 2 and 3.
* Now, by looking at post_start and pre_start difference, we can
* check whether any asynchronous event happened or not
*/
loops_per_jiffy
is used to implement udelay (delay in microseconds) and ndelay
(delay in nanoseconds) functions. These functions are needed by some drivers to wait for hardware. Note that a busy waitingBusy waitingIn software engineering, busy-waiting or spinning is a technique in which a process repeatedly checks to see if a condition is true, such as whether keyboard input is available, or if a lock is available. Spinning can also be used to generate an arbitrary time delay, a technique that was necessary...
technique is used, so the kernel is effectively blocked when executing ndelay/udelay
functions. For i386 architecture delay_loop
is implemented in /usr/src/linux/arch/i386/lib/delay.c
as:
which can be rewritten to C-pseudocode
Full and complete information and details about BogoMips, and hundreds of reference entries can be found in the (unfortunately outdated) BogoMips mini-Howto.
External links
This article includes material from the Free On-line Dictionary of ComputingFree On-line Dictionary of ComputingThe Free On-line Dictionary of Computing is an online, searchable, encyclopedic dictionary of computing subjects. It was founded in 1985 by Denis Howe and is hosted by Imperial College London...
, which is licensed under the GFDL.