Instructions per second


Instructions per second is a measure of a computer's processor speed. For complex instruction set 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 metric prefix to form kilo instructions per second, mega instructions per second, giga instructions per second 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.
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. 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, 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. 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%
1. Loads and Store31.2
2. Fixed Point Add and Subtract6.1
3. Compares3.8
4. Branches16.6
5. Floating Add and Subtract6.9
6. Floating Multiply3.8
7. Floating Divide1.5
8. Fixed Point Multiply0.6
9. Fixed Point Divide0.2
10. Shifting4.4
11. Logical, And, Or, etc.1.6
12. Instructions Not Using Registers5.3
13. Indexing18
Total100

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 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, 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.
Weighted million operations per second 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 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.

Timeline of instructions per second

CPU results

Processor / SystemDhrystone MIPS or MIPS, and frequencyD instructions per clock cycleD instructions per clock cycle per coreYearSource
UNIVAC I0.002 MIPS at 2.25 MHz0.00080.00081951
IBM 7030 1.200 MIPS at 3.30 MHz0.3640.3641961
CDC 660010.00 MIPS at 10.00 MHz111965
Intel 40040.092 MIPS at 0.740 MHz
0.1240.1241971
IBM System/370 Model 1580.640 MIPS at 8.696 MHz0.07360.07361972
Intel 80800.290 MIPS at 2.000 MHz
0.1450.1451974
Cray 1160.0 MIPS at 80.00 MHz221975
MOS Technology 65020.430 MIPS at 1.000 MHz0.430.431975
MCP-16002.25 MIPS at 3.3 MHz, 4 ϕ0.750.751975
Intel 80850.435 MIPS at 3.000 MHz
0.1450.1451976
Zilog Z800.580 MIPS at 4.000 MHz
0.1450.1451976
Signetics 8X3004.000 MIPS at 8.000 MHz0.50.51976
Motorola 68020.500 MIPS at 1.000 MHz0.50.51977
IBM System/370 Model 158-30.730 MIPS at 8.696 MHz0.08390.08391977
VAX-11/7801.000 MIPS at 5.000 MHz0.20.21977
Motorola 68090.420 MIPS at 1.000 MHz0.420.421978
Intel 80860.330 MIPS at 5.000 MHz0.0660.0661978
Fujitsu MB88432.000 MIPS at 2.000 MHz
111978
Intel 80880.750 MIPS at 10.00 MHz0.0750.0751979
Motorola 680001.400 MIPS at 8.000 MHz0.1750.1751979
Zilog Z8001/Z80021.5 MIPS at 6 MHz0.250.251979
Intel 8035/8039/80480.400 MIPS at 6 MHz
.066.0661980
Fujitsu MB8843/MB88446 MIPS at 6 MHz
111980
Zilog Z80/Z80H1.16 MIPS at 8 MHz
0.1450.1451981
Motorola 68021.79 MIPS at 3.58 MHz0.50.51981
Zilog Z8001/Z8002B2.5 MIPS at 10 MHz0.250.251981
Intel 802861.28 MIPS at 12 MHz0.1070.1071982
Motorola 680102.407 MIPS at 12.5 MHz0.1930.1931982
NEC V204 MIPS at 8 MHz
0.50.51982
Texas Instruments TMS320105 MIPS at 20 MHz0.250.251983
NEC V305 MIPS at 10 MHz
0.50.51983
Motorola 680204.848 MIPS at 16 MHz0.3030.3031984
Hitachi HD637052 MIPS at 2 MHz111985
Intel i386DX2.15 MIPS at 16 MHz0.1340.1341985
Hitachi-Motorola 68HC0003.5 MIPS at 20 MHz0.1750.1751985
Intel 87511 MIPS at 12 MHz0.0830.0831985
WDC 65C816 / Ricoh 5A220.22 MIPS at 2.8 MHz0.080.081985
ARM24 MIPS at 8 MHz0.50.51986
Stanford MIPS R2000 / R2000A8 / 9.8 MIPS at 12.5 MHz0.64 - 0.780.64 - 0.781986 / 1988
Sun SPARC / Fujitsu MB8690010 MIPS at 16.6 MHz0.60.61986
Texas Instruments TMS340106 MIPS at 50 MHz0.120.121986
NEC V706.6 MIPS at 20 MHz0.330.331987
Motorola 6803018 MIPS at 50 MHz0.360.361987
Gmicro/20010 MIPS at 20 MHz0.50.51987
Texas Instruments TMS320C2012.5 MIPS at 25 MHz0.50.51987
Analog Devices ADSP-210012.5 MIPS at 12.5 MHz111987
Texas Instruments TMS320C2525 MIPS at 50 MHz0.50.51987
Intel i486DX8.7 MIPS at 25 MHz0.3480.3481989
NEC V8016.5 MIPS at 33 MHz0.50.51989
Intel i86025 MIPS at 25 MHz111989
ARM312 MIPS at 25 MHz0.50.51989
Motorola 6804044 MIPS at 40 MHz1.11.11990
AMD Am3869 MIPS at 40 MHz0.2250.2251991
Intel i486DX11.1 MIPS at 33 MHz0.3360.3361991
Intel i86050 MIPS at 50 MHz111991
Intel i486DX225.6 MIPS at 66 MHz0.3880.3881992
Alpha 21064 86 MIPS at 150 MHz0.5730.5731992
Alpha 21064 135 MIPS at 200 MHz0.6750.6751993
MIPS R440085 MIPS at 150 MHz0.5670.5671993
Gmicro/500132 MIPS at 66 MHz221993
IBM-Motorola PowerPC 601157.7 MIPS at 80 MHz1.9711.9711993
ARM740 MIPS at 45 MHz0.8890.8891994
Intel DX470 MIPS at 100 MHz0.70.71994
Motorola 68060110 MIPS at 75 MHz1.331.331994
Intel Pentium188 MIPS at 100 MHz1.881.881994
Microchip PIC16F5 MIPS at 20 MHz0.250.251995
IBM-Motorola PowerPC 603e188 MIPS at 133 MHz1.4141.4141995
ARM 7500FE35.9 MIPS at 40 MHz0.90.91996
IBM-Motorola PowerPC 603ev423 MIPS at 300 MHz1.411.411996
Intel Pentium Pro541 MIPS at 200 MHz2.72.71996
Hitachi SH-4360 MIPS at 200 MHz1.81.81997
IBM-Motorola PowerPC 750525 MIPS at 233 MHz2.32.31997
Zilog eZ806.6 MIPS at 20 MHz0.330.331999
Intel Pentium III2,054 MIPS at 600 MHz3.43.41999
Freescale MPC8272760 MIPS at 400 MHz1.91.92000
AMD Athlon3,561 MIPS at 1.2 GHz3.03.02000
Silicon Recognition ZISC 788,600 MIPS at 33 MHz260.6260.62000
ARM11515 MIPS at 412 MHz1.251.252002
AMD Athlon XP 2500+7,527 MIPS at 1.83 GHz4.14.12003
Intel Pentium 4 Extreme Edition9,726 MIPS at 3.2 GHz3.03.02003
Microchip PIC10F1 MIPS at 4 MHz0.250.252004
ARM Cortex-M3125 MIPS at 100 MHz1.251.252004
Nios II190 MIPS at 165 MHz1.131.132004
MIPS32 4KEc356 MIPS at 233 MHz1.51.52004
VIA C71,799 MIPS at 1.3 GHz1.41.42005
ARM Cortex-A82,000 MIPS at 1.0 GHz2.02.02005
AMD Athlon FX-5712,000 MIPS at 2.8 GHz4.34.32005
AMD Athlon 64 3800+ X2 14,564 MIPS at 2.0 GHz7.33.62005
PowerPC G4 MPC74483,910 MIPS at 1.7 GHz2.32.32005
ARM Cortex-R4450 MIPS at 270 MHz1.661.662006
MIPS32 24K604 MIPS at 400 MHz1.511.512006
PS3 Cell BE 10,240 MIPS at 3.2 GHz3.23.22006
IBM Xenon CPU 19,200 MIPS at 3.2 GHz6.02.02005
AMD Athlon FX-60 18,938 MIPS at 2.6 GHz7.33.62006
Intel Core 2 Extreme X6800 27,079 MIPS at 2.93 GHz9.24.62006
Intel Core 2 Extreme QX6700 49,161 MIPS at 2.66 GHz18.44.62006
MIPS64 20Kc1,370 MIPS at 600 MHz2.32.32007
P.A. Semi PA6T-1682M8,800 MIPS at 1.8 GHz4.44.42007
Qualcomm Scorpion 2,100 MIPS at 1 GHz2.12.12008
Intel Atom N2703,846 MIPS at 1.6 GHz2.42.42008
Intel Core 2 Extreme QX9770 59,455 MIPS at 3.2 GHz18.64.62008
Intel Core i7 920 82,300 MIPS at 2.93 GHz28.0897.0222008
ARM Cortex-M045 MIPS at 50 MHz0.90.92009
ARM Cortex-A9 7,500 MIPS at 1.5 GHz5.02.52009
AMD Phenom II X4 940 Black Edition42,820 MIPS at 3.0 GHz14.33.52009
AMD Phenom II X6 1100T78,440 MIPS at 3.3 GHz23.73.92010
Intel Core i7 Extreme Edition 980X 147,600 MIPS at 3.33 GHz44.77.462010
ARM Cortex-A51,256 MIPS at 800 MHz1.571.572011
ARM Cortex-A72,850 MIPS at 1.5 GHz1.91.92011
Qualcomm Krait 9,900 MIPS at 1.5 GHz6.63.32011
AMD E-350 10,000 MIPS at 1.6 GHz6.253.1252011
Nvidia Tegra 3 13,800 MIPS at 1.5 GHz9.22.52011
Samsung Exynos 5250 14,000 MIPS at 2.0 GHz7.03.52011
Intel Core i5-2500K 83,000 MIPS at 3.3 GHz25.1526.2882011
Intel Core i7 875K92,100 MIPS at 2.93 GHz31.47.852011
AMD FX-8150 90,749 MIPS at 3.6 GHz25.23.152011
Intel Core i7 2600K 117,160 MIPS at 3.4 GHz34.458.612011
Intel Core i7-3960X 176,170 MIPS at 3.3 GHz53.388.892011
AMD FX-8350 97,125 MIPS at 4.2 GHz23.12.92012
AMD FX-9590 115,625 MIPS at 5.0 GHz23.12.92012
Intel Core i7 3770K 106,924 MIPS at 3.9 GHz27.46.92012
Intel Core i7 4770K 133,740 MIPS at 3.9 GHz34.298.572013
Intel Core i7 5960X 298,190 MIPS at 3.5 GHz85.210.652014
Intel Core i7 6950X 320,440 MIPS at 3.5 GHz91.559.162016
ARM Cortex-A73 71,120 MIPS at 2.8 GHz25.46.352016
ARM Cortex-A758.2-9.52017
ARM Cortex-A7610.7-12.42018
ARM Cortex-A532,300 MIPS at 1 GHz2.32.32012
ARM Cortex-A352,100 MIPS at 1 GHz2.12.12015
ARM Cortex-A7215,750 to 18,375 at 2.5 GHz6.3 to 7.356.3 to 7.352015
ARM Cortex-A5710,250 to 11,750 at 2.5 GHz4.1 to 4.74.1 to 4.72012
Sitara AM64x ARM Cortex-A53 5,992 MIPS at 1 GHz632021
AMD Ryzen 7 1800X 304,510 MIPS at 3.7 GHz82.310.292017
Intel Core i7-8086K 221,720 MIPS at 5.0 GHz44.347.392018
Intel Core i9-9900K 412,090 MIPS at 4.7 GHz87.6810.962018
AMD Ryzen 9 3950X 749,070 MIPS at 4.6 GHz162.8410.182019
AMD Ryzen Threadripper 3990X 2,356,230 MIPS at 4.35 GHz541.668.462020
Intel Core i5-11600K 346,350 MIPS at 4.92 GHz57.7211.732021
Processor / SystemDhrystone MIPS / MIPSD instructions per clock cycleD instructions per clock cycle per coreYearSource