Instructions per second
Instructions per second is a measure of a computer's processor speed. For
CISC computers 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 numeric value such as thousand/kilo instructions per second, million instructions per second, and billion instructions per second.
Computing
IPS can be calculated using this equation: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. The most famous was the Gibson Mix, produced by Jack Clark Gibson of IBM for scientific applications. Other ratings, such as the ADP mix which does not include floating point operations, were produced for commercial applications. The thousand instructions per second unit is rarely used today, as most current microprocessors can execute at least a million instructions per second.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. 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, but they are difficult to compare between differing CPU architectures. This led to the term "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. 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. The VAX 11/780 with FPA 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 when a 4.8 MHz 8088/87 CPU obtained 0.01 MWIPS. Results on a 2.4 GHz Intel Core 2 Duo 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.
zMIPS refers to the MIPS measure used internally by IBM to rate its mainframe servers.
Weighted million operations per second is a similar measurement, used for audio codecs.
Timeline of instructions per second
- IPC per die = Instructions per clock cycle
- IPC per core = Instructions per clock cycle per core
Processor / System | Dhrystone MIPS or MIPS, and frequency | IPC per die | IPC per core | Year | Source |
UNIVAC I | 0.002 MIPS at 2.25 MHz | 0.0008 | 0.0008 | 1951 | |
IBM 7030 | 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 | 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 | 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 | 0.145 | 0.145 | 1976 | |
Zilog Z80 | 0.580 MIPS at 4.000 MHz | 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 | 1 | 1 | 1978 | |
Intel 8088 | 0.750 MIPS at 10.00 MHz | 0.075 | 0.075 | 1979 | |
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 | 1 | 1 | 1980 | |
Fujitsu MB8843/MB8844 | 6 MIPS at 6 MHz | 1 | 1 | 1980 | |
Zilog Z80/Z80H | 1.16 MIPS at 8 MHz | 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 286 | 1.28 MIPS at 12 MHz | 0.107 | 0.107 | 1982 | |
Motorola 68000 | 2.188 MIPS at 12.5 MHz | 0.175 | 0.175 | 1982 | |
Motorola 68010 | 2.407 MIPS at 12.5 MHz | 0.193 | 0.193 | 1982 | |
NEC V20 | 4 MIPS at 8 MHz | 0.5 | 0.5 | 1982 | |
LINKS-1 Computer Graphics System | 642.5 MIPS at 10 MHz | 2.5 | 0.25 | 1982 | |
Texas Instruments TMS32010 | 5 MIPS at 20 MHz | 0.25 | 0.25 | 1983 | |
NEC V30 | 5 MIPS at 10 MHz | 0.5 | 0.5 | 1983 | |
Motorola 68010 | 3.209 MIPS at 16.67 MHz | 0.193 | 0.193 | 1984 | |
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 | |
Sega System 16 | 16.33 MIPS at 10 MHz | 4.083 | 1.020 | 1985 | |
4 MIPS at 8 MHz | 0.5 | 0.5 | 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 | |
Motorola 68020 | 10 MIPS at 33 MHz | 0.303 | 0.303 | 1988 | |
Motorola 68030 | 18 MIPS at 50 MHz | 0.36 | 0.36 | 1988 | |
Namco System 21 | 73.927 MIPS at 25 MHz | 2.957 | 0.296 | 1988 | |
Intel i386DX | 4.3 MIPS at 33 MHz | 0.13 | 0.13 | 1989 | |
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 | |
Atari Hard Drivin' | 33.573 MIPS at 50 MHz | 0.671 | 0.0959 | 1989 | |
NEC SX-3 | 680 MIPS at 400 MHz | 1.7 | 0.425 | 1989 | |
ARM3 | 12 MIPS at 25 MHz | 0.5 | 0.5 | 1989 | |
Motorola 68040 | 44 MIPS at 40 MHz | 1.1 | 1.1 | 1990 | |
Namco System 21 | 1,660.386 MIPS at 40 MHz | 41.51 | 0.432 | 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 | 86 MIPS at 150 MHz | 0.573 | 0.573 | 1992 | |
Alpha 21064 | 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 | |
SGI Onyx RealityEngine2 | 2,640 MIPS at 150 MHz | 17.6 | 0.489 | 1993 | |
Namco Magic Edge Hornet Simulator | 2,880 MIPS at 150 MHz | 19.2 | 0.533 | 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 | |
Sega Naomi Multiboard | 6,400 MIPS at 200 MHz | 32 | 1 | 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 | 14,564 MIPS at 2.0 GHz | 7.3 | 3.6 | 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 | 10,240 MIPS at 3.2 GHz | 3.2 | 3.2 | 2006 | |
IBM Xenon CPU | 19,200 MIPS at 3.2 GHz | 6.0 | 2.0 | 2005 | |
AMD Athlon FX-60 | 18,938 MIPS at 2.6 GHz | 7.3 | 3.6 | 2006 | |
Intel Core 2 Extreme X6800 | 27,079 MIPS at 2.93 GHz | 9.2 | 4.6 | 2006 | |
Intel Core 2 Extreme QX6700 | 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 | 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 | 59,455 MIPS at 3.2 GHz | 18.6 | 4.6 | 2008 | |
Intel Core i7 920 | 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 | 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 | 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 | 9,900 MIPS at 1.5 GHz | 6.6 | 3.3 | 2011 | |
AMD E-350 | 10,000 MIPS at 1.6 GHz | 6.25 | 3.125 | 2011 | |
Nvidia Tegra 3 | 13,800 MIPS at 1.5 GHz | 9.2 | 2.5 | 2011 | |
Samsung Exynos 5250 | 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 | 90,749 MIPS at 3.6 GHz | 25.2 | 3.15 | 2011 | |
Intel Core i7 2600K | 117,160 MIPS at 3.4 GHz | 34.45 | 8.61 | 2011 | |
Intel Core i7-3960X | 176,170 MIPS at 3.3 GHz | 53.38 | 8.89 | 2011 | |
AMD FX-8350 | 97,125 MIPS at 4.2 GHz | 23.1 | 2.9 | 2012 | |
AMD FX-9590 | 115,625 MIPS at 5.0 GHz | 23.1 | 2.9 | 2012 | |
Intel Core i7 3770K | 106,924 MIPS at 3.9 GHz | 27.4 | 6.9 | 2012 | |
Intel Core i7 4770K | 133,740 MIPS at 3.9 GHz | 34.29 | 8.57 | 2013 | |
Intel Core i7 5960X | 298,190 MIPS at 3.5 GHz | 85.2 | 10.65 | 2014 | |
Raspberry Pi 2 | 4,744 MIPS at 1.0 GHz | 4.744 | 1.186 | 2014 | |
Intel Core i7 6950X | 320,440 MIPS at 3.5 GHz | 91.55 | 9.16 | 2016 | |
ARM Cortex A73 | 71,120 MIPS at 2.8 GHz | 25.4 | 6.35 | 2016 | |
ARM Cortex A75 | ? | ? | ? | 2017 | |
ARM Cortex A76 | ? | ? | ? | 2018 | |
AMD Ryzen 7 1800X | 304,510 MIPS at 3.7 GHz | 82.3 | 10.29 | 2017 | |
Intel Core i7-8086K | 221,720 MIPS at 5.0 GHz | 44.34 | 7.39 | 2018 | |
Intel Core i9-9900K | 412,090 MIPS at 4.7 GHz | 87.68 | 10.96 | 2018 | |
AMD Ryzen 9 3950X | 749,070 MIPS at 4.6 GHz | 162.84 | 10.18 | 2019 | |
AMD Ryzen Threadripper 3990X | 2,356,230 MIPS at 4.35 GHz | 541.66 | 8.46 | 2020 | |
Processor / System | Dhrystone MIPS / MIPS | IPC per die | IPC per core | Year | Source |