# 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:
    ${\text{IPS}}={\text{sockets}}\times {\frac {\text{cores}}{\text{socket}}}\times {\text{clock}}\times {\frac {\text{Is}}{\text{cycle}}}$
However, the instructions/cycle measurement depends on the instruction sequence, the data and external factors.

## Thousand instructions per second (TIPS/kIPS)

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). The most famous was the Gibson Mix, produced by Jack Clark Gibson of IBM for scientific applications in 1959. Other ratings, such as the ADP mix which does not include floating point operations, were produced for commercial applications. The thousand instructions per second (kIPS) unit is rarely used today, as most current microprocessors can execute at least a million instructions per second.

### The Gibson Mix

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 | % |
| 1. Loads and Store | 31.2 |
| 2. Fixed Point Add and Subtract | 6.1 |
| 3. Compares | 3.8 |
| 4. Branches | 16.6 |
| 5. Floating Add and Subtract | 6.9 |
| 6. Floating Multiply | 3.8 |
| 7. Floating Divide | 1.5 |
| 8. Fixed Point Multiply | 0.6 |
| 9. Fixed Point Divide | 0.2 |
| 10. Shifting | 4.4 |
| 11. Logical, And, Or, etc. | 1.6 |
| 12. Instructions Not Using Registers | 5.3 |
| 13. Indexing | 18 |
| Total | 100 |

## Millions of instructions per second (MIPS)

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. Microchip branded microcontrollers), but they are difficult to compare between differing CPU 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.
For this reason, MIPS has become not a measure of instruction execution speed, but task performance speed compared to a reference. In the late 1970s, minicomputer performance was compared using VAX MIPS, where computers were measured on a task and their performance rated against the VAX-11/780 that was marketed as a 1 MIPS machine. (The measure was also known as the VAX Unit of Performance or VUP.) This was chosen because the 11/780 was roughly equivalent in performance to an IBM System/370 model 158–3, which was commonly accepted in the computing industry as running at 1 MIPS.
Many minicomputer performance claims were based on the Fortran version of the Whetstone benchmark, giving Millions of Whetstone Instructions Per Second (MWIPS). The VAX 11/780 with FPA (1977) runs at 1.02 MWIPS.
Effective MIPS speeds are highly dependent on the programming language used. 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.
For the most early 8-bit and 16-bit microprocessors, performance was measured in thousand instructions per second (1000 kIPS = 1 MIPS).
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.

## 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 | |
| Intel 8080A | 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 | |
| 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 | [14] [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 | 6 MIPS at 6 MHz (Not Dhrystone) | 1 | 1 | 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 | 9 MIPS at 25 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 | 80 MIPS at 50 MHz | 1.6 | 1.6 | 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 | |
| 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 RealityEngine$^2$ (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 |