Instructions per second

Instructions per second (IPS) is a measure of a computer's processor speed. For complex instruction set computers (CISCs), different instructions take different amounts of time, so the value measured depends on the instruction mix; even for comparing processors in the same family the IPS measurement can be problematic. Many reported IPS values have represented "peak" execution rates on artificial instruction sequences with few branches and no cache contention, whereas realistic workloads typically lead to significantly lower IPS values. Memory hierarchy also greatly affects processor performance, an issue barely considered in IPS calculations. Because of these problems, synthetic benchmarks such as Dhrystone are now generally used to estimate computer performance in commonly used applications, and raw IPS has fallen into disuse.

The term is commonly used in association with a metric prefix (k, M, G, T, P, or E) to form kilo instructions per second (kIPS), mega instructions per second (MIPS), giga instructions per second (GIPS) and so on. Formerly TIPS was used occasionally for "thousand IPS".

Computing

IPS can be calculated using this equation:

However, the instructions/cycle measurement depends on the instruction sequence, the data and external factors.

Scaling units

For the most early 8-bit and 16-bit microprocessors, performance was measured in thousand instructions per second, or kilo instructions per second (kIPS).

The term "mega instructions per second" became useful in the late 1970s. The IBM System/370 model 158–3 and the VAX-11/780 were considered roughly equivalent at 1 MIPS.

Types of instruction

The speed of a given CPU depends on many factors, such as the type of instructions being executed, the execution order and the presence of branch instructions (problematic in CPU pipelines). CPU instruction rates are different from clock frequencies, usually reported in Hz, as each instruction may require several clock cycles to complete or the processor may be capable of executing multiple independent instructions simultaneously. MIPS can be useful when comparing performance between processors made with similar architecture (e.g. PIC microcontrollers), but they are difficult to compare between differing CPU architectures, especially between RISC and CISC architectures. This led to the term "Meaningless Indicator of Processor Speed," or less commonly, "Meaningless Indices of Performance," being popular amongst technical people by the mid-1980s.

The Gibson Mix (1959)

Before standard benchmarks were available, average speed rating of computers was based on calculations for a mix of instructions with the results given in kilo instructions per second (kIPS). Among the first attempts at defining a specific collections of instructions to time was the Gibson Mix, produced by Jack Clark Gibson of IBM for scientific applications in 1959.

Gibson divided computer instructions into 12 classes, based on the IBM 704 architecture, adding a 13th class to account for indexing time. Weights were primarily based on analysis of seven scientific programs run on the 704, with a small contribution from some IBM 650 programs. The overall score was then the weighted sum of the average execution speed for instructions in each class.

The Gibson Mix is a product of its era, when computer speeds were still measured in kIPS. Other ratings, such as the ADP mix which does not include floating point operations, were produced for commercial applications. These early ratings were nowhere as systemic as the later approaches, although the idea of creating a benchmark to resemble real-world applications (later called a "synthetic benchmark") would persist.

Two flavors of VAX MIPS

The VAX-11/780 was released in 1977. It was marketed as being able to execute the equivalent of 1 million System/370 instructions per second, the first minicomputer to achieve such a speed. VAX-11/780 would quickly become a unit of reference for MIPS measurements, in two separate benchmarks:

  • The Whetstone benchmark of 1972 was modified in 1980 to combine three of its integer-operation speed measures into a "VAX MIPS". It originally included a mix of 42 statements written in ALGOL 60 (124 instructions on the KDF9 compiler), though by 1980 it had been rewritten in Fortran.
  • The integer-and-string-heavy Dhrystone benchmark of 1984 inherited the idea of using VAX as a MIPS reference. Its results were reported in "DMIPS", for Dhrystone MIPS. Each Dhrystone MIPS was defined as the ability to run the Dhrystone main loop 1757 times per second, the score VAX-11/780 received on this benchmark.

Other instruction mixes

zMIPS refers to the MIPS measure used internally by IBM to rate its mainframe servers (zSeries, IBM System z9, and IBM System z10).

Weighted million operations per second (WMOPS) is a similar measurement, used for audio codecs.

Other factors that affect instructions per second

Effective MIPS speeds are highly dependent on the programming language used: some compilers generate highly-efficient code, others do not. The Whetstone Report has a table showing MWIPS speeds of PCs via early interpreters and compilers up to modern languages. The first PC compiler was for BASIC (1982) when a 4.8 MHz 8088/87 CPU obtained 0.01 MWIPS. Results on a 2.4 GHz Intel Core 2 Duo (1 CPU 2007) vary from 9.7 MWIPS using BASIC Interpreter, 59 MWIPS via BASIC Compiler, 347 MWIPS using 1987 Fortran, 1,534 MWIPS through HTML/Java to 2,403 MWIPS using a modern C/C++ compiler.

Timeline of instructions per second

CPU results

Processor / System Dhrystone MIPS or MIPS, and frequency D instructions per clock cycle D instructions per clock cycle per core Year Source
UNIVAC I 0.002 MIPS at 2.25 MHz 0.0008 0.0008 1951

IBM 7030 ("Stretch") 1.200 MIPS at 3.30 MHz 0.364 0.364 1961
CDC 6600 10.00 MIPS at 10.00 MHz 1 1 1965
Intel 4004 0.092 MIPS at 0.740 MHz
(Not Dhrystone)
0.124 0.124 1971
IBM System/370 Model 158 0.640 MIPS at 8.696 MHz 0.0736 0.0736 1972
Intel 8080 0.290 MIPS at 2.000 MHz
(Not Dhrystone)
0.145 0.145 1974
Cray 1 160.0 MIPS at 80.00 MHz 2 2 1975
MOS Technology 6502 0.430 MIPS at 1.000 MHz 0.43 0.43 1975
MCP-1600 2.25 MIPS at 3.3 MHz, 4 ϕ 0.75 0.75 1975
Intel 8085 0.435 MIPS at 3.000 MHz
(Not Dhrystone)
0.145 0.145 1976
Zilog Z80 0.580 MIPS at 4.000 MHz
(Not Dhrystone)
0.145 0.145 1976
Signetics 8X300 4.000 MIPS at 8.000 MHz 0.5 0.5 1976
Motorola 6802 0.500 MIPS at 1.000 MHz 0.5 0.5 1977
IBM System/370 Model 158-3 0.730 MIPS at 8.696 MHz 0.0839 0.0839 1977
VAX-11/780 1.000 MIPS at 5.000 MHz 0.2 0.2 1977
Motorola 6809 0.420 MIPS at 1.000 MHz 0.42 0.42 1978
Intel 8086 0.330 MIPS at 5.000 MHz 0.066 0.066 1978
Fujitsu MB8843 2.000 MIPS at 2.000 MHz
(Not Dhrystone)
1 1 1978
Intel 8088 0.750 MIPS at 10.00 MHz 0.075 0.075 1979 [failed verification]
Motorola 68000 1.400 MIPS at 8.000 MHz 0.175 0.175 1979
Zilog Z8001/Z8002 1.5 MIPS at 6 MHz 0.25 0.25 1979
Intel 8035/8039/8048 0.400 MIPS at 6 MHz
(Not Dhrystone)
.066 .066 1980
Fujitsu MB8843/MB8844 6 MIPS at 6 MHz
(Not Dhrystone)
1 1 1980
Zilog Z80/Z80H 1.16 MIPS at 8 MHz
(Not Dhrystone)
0.145 0.145 1981
Motorola 6802 1.79 MIPS at 3.58 MHz 0.5 0.5 1981
Zilog Z8001/Z8002B 2.5 MIPS at 10 MHz 0.25 0.25 1981
MOS Technology 6502 2.522 MIPS at 5.865 MHz 0.43 0.43 1981
Intel 80286 1.28 MIPS at 12 MHz 0.107 0.107 1982
Motorola 68010 2.407 MIPS at 12.5 MHz 0.193 0.193 1982
NEC V20 4 MIPS at 8 MHz
(Not Dhrystone)
0.5 0.5 1982
Texas Instruments TMS32010 5 MIPS at 20 MHz 0.25 0.25 1983
NEC V30 5 MIPS at 10 MHz
(Not Dhrystone)
0.5 0.5 1983
Motorola 68020 4.848 MIPS at 16 MHz 0.303 0.303 1984
Hitachi HD63705 2 MIPS at 2 MHz 1 1 1985
Intel i386DX 2.15 MIPS at 16 MHz 0.134 0.134 1985
Hitachi-Motorola 68HC000 3.5 MIPS at 20 MHz 0.175 0.175 1985
Intel 8751 1 MIPS at 12 MHz 0.083 0.083 1985
WDC 65C816 / Ricoh 5A22 0.22 MIPS at 2.8 MHz 0.08 0.08 1985
ARM2 4 MIPS at 8 MHz 0.5 0.5 1986
Stanford MIPS R2000 / R2000A 8 / 9.8 MIPS at 12.5 MHz 0.64 - 0.78 0.64 - 0.78 1986 / 1988
Sun SPARC / Fujitsu MB86900 10 MIPS at 16.6 MHz 0.6 0.6 1986
Texas Instruments TMS34010 6 MIPS at 50 MHz 0.12 0.12 1986
NEC V70 6.6 MIPS at 20 MHz 0.33 0.33 1987
Motorola 68030 18 MIPS at 50 MHz 0.36 0.36 1987
Gmicro/200 10 MIPS at 20 MHz 0.5 0.5 1987
Texas Instruments TMS320C20 12.5 MIPS at 25 MHz 0.5 0.5 1987
Analog Devices ADSP-2100 12.5 MIPS at 12.5 MHz 1 1 1987
Texas Instruments TMS320C25 25 MIPS at 50 MHz 0.5 0.5 1987
Intel i486DX 8.7 MIPS at 25 MHz 0.348 0.348 1989
NEC V80 16.5 MIPS at 33 MHz 0.5 0.5 1989
Intel i860 25 MIPS at 25 MHz 1 1 1989
ARM3 12 MIPS at 25 MHz 0.5 0.5 1989
Motorola 68040 44 MIPS at 40 MHz 1.1 1.1 1990
AMD Am386 9 MIPS at 40 MHz 0.225 0.225 1991
Intel i486DX 11.1 MIPS at 33 MHz 0.336 0.336 1991
Intel i860 50 MIPS at 50 MHz 1 1 1991
Intel i486DX2 25.6 MIPS at 66 MHz 0.388 0.388 1992
Alpha 21064 (EV4) 86 MIPS at 150 MHz 0.573 0.573 1992
Alpha 21064 (EV4S/EV45) 135 MIPS at 200 MHz 0.675 0.675 1993
MIPS R4400 85 MIPS at 150 MHz 0.567 0.567 1993
Gmicro/500 132 MIPS at 66 MHz 2 2 1993
IBM-Motorola PowerPC 601 157.7 MIPS at 80 MHz 1.971 1.971 1993
ARM7 40 MIPS at 45 MHz 0.889 0.889 1994
Intel DX4 70 MIPS at 100 MHz 0.7 0.7 1994
Motorola 68060 110 MIPS at 75 MHz 1.33 1.33 1994
Intel Pentium 188 MIPS at 100 MHz 1.88 1.88 1994
Microchip PIC16F 5 MIPS at 20 MHz 0.25 0.25 1995
IBM-Motorola PowerPC 603e 188 MIPS at 133 MHz 1.414 1.414 1995
ARM 7500FE 35.9 MIPS at 40 MHz 0.9 0.9 1996
IBM-Motorola PowerPC 603ev 423 MIPS at 300 MHz 1.41 1.41 1996
Intel Pentium Pro 541 MIPS at 200 MHz 2.7 2.7 1996
Hitachi SH-4 360 MIPS at 200 MHz 1.8 1.8 1997
IBM-Motorola PowerPC 750 525 MIPS at 233 MHz 2.3 2.3 1997
Zilog eZ80 6.6 MIPS at 20 MHz 0.33 0.33 1999
Intel Pentium III 2,054 MIPS at 600 MHz 3.4 3.4 1999
Freescale MPC8272 760 MIPS at 400 MHz 1.9 1.9 2000
AMD Athlon 3,561 MIPS at 1.2 GHz 3.0 3.0 2000
Silicon Recognition ZISC 78 8,600 MIPS at 33 MHz 260.6 260.6 2000
ARM11 515 MIPS at 412 MHz 1.25 1.25 2002
AMD Athlon XP 2500+ 7,527 MIPS at 1.83 GHz 4.1 4.1 2003
Intel Pentium 4 Extreme Edition 9,726 MIPS at 3.2 GHz 3.0 3.0 2003
Microchip PIC10F 1 MIPS at 4 MHz 0.25 0.25 2004
ARM Cortex-M3 125 MIPS at 100 MHz 1.25 1.25 2004
Nios II 190 MIPS at 165 MHz 1.13 1.13 2004
MIPS32 4KEc 356 MIPS at 233 MHz 1.5 1.5 2004
VIA C7 1,799 MIPS at 1.3 GHz 1.4 1.4 2005
ARM Cortex-A8 2,000 MIPS at 1.0 GHz 2.0 2.0 2005
AMD Athlon FX-57 12,000 MIPS at 2.8 GHz 4.3 4.3 2005
AMD Athlon 64 3800+ X2 (2-core) 14,564 MIPS at 2.0 GHz 7.3 3.6 2005
PowerPC G4 MPC7448 3,910 MIPS at 1.7 GHz 2.3 2.3 2005
ARM Cortex-R4 450 MIPS at 270 MHz 1.66 1.66 2006
MIPS32 24K 604 MIPS at 400 MHz 1.51 1.51 2006
PS3 Cell BE (PPE only) 10,240 MIPS at 3.2 GHz 3.2 3.2 2006
IBM Xenon CPU (3-core) 19,200 MIPS at 3.2 GHz 6.0 2.0 2005
AMD Athlon FX-60 (2-core) 18,938 MIPS at 2.6 GHz 7.3 3.6 2006
Intel Core 2 Extreme X6800 (2-core) 27,079 MIPS at 2.93 GHz 9.2 4.6 2006
Intel Core 2 Extreme QX6700 (4-core) 49,161 MIPS at 2.66 GHz 18.4 4.6 2006
MIPS64 20Kc 1,370 MIPS at 600 MHz 2.3 2.3 2007
P.A. Semi PA6T-1682M 8,800 MIPS at 1.8 GHz 4.4 4.4 2007
Qualcomm Scorpion (Cortex-A8-like) 2,100 MIPS at 1 GHz 2.1 2.1 2008
Intel Atom N270 3,846 MIPS at 1.6 GHz 2.4 2.4 2008
Intel Core 2 Extreme QX9770 (4-core) 59,455 MIPS at 3.2 GHz 18.6 4.6 2008
Intel Core i7 920 (4-core) 82,300 MIPS at 2.93 GHz 28.089 7.022 2008
ARM Cortex-M0 45 MIPS at 50 MHz 0.9 0.9 2009
ARM Cortex-A9 (2-core) 7,500 MIPS at 1.5 GHz 5.0 2.5 2009
AMD Phenom II X4 940 Black Edition 42,820 MIPS at 3.0 GHz 14.3 3.5 2009
AMD Phenom II X6 1100T 78,440 MIPS at 3.3 GHz 23.7 3.9 2010
Intel Core i7 Extreme Edition 980X (6-core) 147,600 MIPS at 3.33 GHz 44.7 7.46 2010
ARM Cortex-A5 1,256 MIPS at 800 MHz 1.57 1.57 2011
ARM Cortex-A7 2,850 MIPS at 1.5 GHz 1.9 1.9 2011
Qualcomm Krait (Cortex-A15-like, 2-core) 9,900 MIPS at 1.5 GHz 6.6 3.3 2011
AMD E-350 (2-core) 10,000 MIPS at 1.6 GHz 6.25 3.125 2011
Nvidia Tegra 3 (Quad core Cortex-A9) 13,800 MIPS at 1.5 GHz 9.2 2.5 2011
Samsung Exynos 5250 (Cortex-A15-like 2-core) 14,000 MIPS at 2.0 GHz 7.0 3.5 2011
Intel Core i5-2500K (4-core) 83,000 MIPS at 3.3 GHz 25.152 6.288 2011
Intel Core i7 875K 92,100 MIPS at 2.93 GHz 31.4 7.85 2011
AMD FX-8150 (8-core) 90,749 MIPS at 3.6 GHz 25.2 3.15 2011
Intel Core i7 2600K (4-core) 117,160 MIPS at 3.4 GHz 34.45 8.61 2011
Intel Core i7-3960X (6-core) 176,170 MIPS at 3.3 GHz 53.38 8.89 2011
AMD FX-8350 (8-core) 97,125 MIPS at 4.2 GHz 23.1 2.9 2012
AMD FX-9590 (8-core) 115,625 MIPS at 5.0 GHz 23.1 2.9 2012
Intel Core i7 3770K (4-core) 106,924 MIPS at 3.9 GHz 27.4 6.9 2012
Intel Core i7 4770K (4-core) 133,740 MIPS at 3.9 GHz 34.29 8.57 2013
Intel Core i7 5960X (8-core) 298,190 MIPS at 3.5 GHz 85.2 10.65 2014
Intel Core i7 6950X (10-core) 320,440 MIPS at 3.5 GHz 91.55 9.16 2016
ARM Cortex-A73 (4-core) 71,120 MIPS at 2.8 GHz 25.4 6.35 2016
ARM Cortex-A75 ? ? 8.2-9.5 2017
ARM Cortex-A76 ? ? 10.7-12.4 2018
ARM Cortex-A53 2,300 MIPS at 1 GHz 2.3 2.3 2012
ARM Cortex-A35 2,100 MIPS at 1 GHz 2.1 2.1 2015
ARM Cortex-A72 15,750 to 18,375 at 2.5 GHz 6.3 to 7.35 6.3 to 7.35 2015
ARM Cortex-A57 10,250 to 11,750 at 2.5 GHz 4.1 to 4.7 4.1 to 4.7 2012
Sitara AM64x ARM Cortex-A53 (2-core) 5,992 MIPS at 1 GHz 6 3 2021
AMD Ryzen 7 1800X (8-core) 304,510 MIPS at 3.7 GHz 82.3 10.29 2017
Intel Core i7-8086K (6-core) 221,720 MIPS at 5.0 GHz 44.34 7.39 2018
Intel Core i9-9900K (8-core) 412,090 MIPS at 4.7 GHz 87.68 10.96 2018
AMD Ryzen 9 3950X (16-core) 749,070 MIPS at 4.6 GHz 162.84 10.18 2019
AMD Ryzen Threadripper 3990X (64 core) 2,356,230 MIPS at 4.35 GHz 541.66 8.46 2020
Intel Core i5-11600K (6-core) 346,350 MIPS at 4.92 GHz 57.72 11.73 2021
Processor / System Dhrystone MIPS / MIPS D instructions per clock cycle D instructions per clock cycle per core Year Source

Multi-CPU cluster results

Processor / System Dhrystone MIPS or MIPS, and frequency D instructions per clock cycle D instructions per clock cycle per core Year Source
LINKS-1 Computer Graphics System (257-processor) 642.5 MIPS at 10 MHz 2.5 0.25 1982
Sega System 16 (4-processor) 16.33 MIPS at 10 MHz 4.083 1.020 1985
Namco System 21 (10-processor) 73.927 MIPS at 25 MHz 2.957 0.296 1988
Atari Hard Drivin' (7-processor) 33.573 MIPS at 50 MHz 0.671 0.0959 1989
NEC SX-3 (4-processor) 680 MIPS at 400 MHz 1.7 0.425 1989
Namco System 21 (Galaxian³) (96-processor) 1,660.386 MIPS at 40 MHz 41.51 0.432 1990
SGI Onyx RealityEngine2 (36-processor) 2,640 MIPS at 150 MHz 17.6 0.489 1993
Namco Magic Edge Hornet Simulator (36-processor) 2,880 MIPS at 150 MHz 19.2 0.533 1993
Sega Naomi Multiboard (32-processor) 6,400 MIPS at 200 MHz 32 1 1999
Raspberry Pi 2 (quad-core ARM Cortex-A7) 4,744 MIPS at 1.0 GHz 4.744 1.186 2014
Processor / System Dhrystone MIPS / MIPS D instructions per clock cycle D instructions per clock cycle per core Year Source

See also

  • TOP500
  • Floating point operations per second (FLOPS)
  • SUPS
  • Benchmark (computing)
  • BogoMips (measurement of CPU speed made by the Linux kernel)
  • Instructions per cycle
  • Cycles per instruction
  • Dhrystone (benchmark) - DMIPS integer benchmark
  • Whetstone (benchmark) - floating-point benchmark
  • Million service units (MSU)
  • Computer performance by orders of magnitude
  • Performance per watt
  • Data-rate units

wikipedia, wiki, encyclopedia, book, library, article, read, free download, Information about Instructions per second, What is Instructions per second? What does Instructions per second mean?